Auswahl der nächstgelegenen Knoten im Netzwerk

Auswahl der nächstgelegenen Knoten im Netzwerk

Die Netzwerklatenz hat erhebliche Auswirkungen auf die Leistung von Anwendungen oder Diensten, die mit dem Netzwerk interagieren. Je geringer die Latenz, desto höher die Leistung. Dies gilt für jeden Netzwerkdienst, von einer normalen Website bis hin zu einer Datenbank oder einem Netzwerkspeicher.

Ein gutes Beispiel ist das Domain Name System (DNS). DNS ist von Natur aus ein verteiltes System mit über den gesamten Planeten verstreuten Wurzelknoten. Um einfach auf eine Website zugreifen zu können, müssen Sie zunächst deren IP-Adresse ermitteln.

Ich werde nicht den gesamten Prozess des rekursiven Durchlaufens des „Baums“ der Domänenzonen beschreiben, sondern mich auf die Tatsache beschränken, dass wir zum Konvertieren einer Domäne in eine IP-Adresse einen DNS-Resolver benötigen, der diese ganze Arbeit erledigt uns.

Woher bekommen Sie also die DNS-Resolver-Adresse?

  1. Der ISP stellt die Adresse seines DNS-Resolvers bereit.
  2. Finden Sie die Adresse eines öffentlichen Resolvers im Internet.
  3. Besorgen Sie sich Ihr eigenes oder verwenden Sie das in Ihren Heimrouter integrierte Gerät.

Mit jeder dieser Optionen können Sie unbeschwert im World Wide Web surfen. Wenn Sie jedoch eine große Anzahl von Domains in IP umwandeln müssen, sollten Sie die Wahl eines Resolvers sorgfältiger angehen.

Wie ich bereits geschrieben habe, gibt es neben dem ISP-Resolver viele öffentliche Adressen, Sie können sich zum Beispiel diese Liste ansehen. Einige von ihnen sind möglicherweise weitaus vorzuziehen, da sie über eine bessere Netzwerkkonnektivität verfügen als der Standard-Resolver.

Wenn die Liste klein ist, können Sie sie einfach manuell „pingen“ und die Verzögerungszeiten vergleichen. Wenn Sie jedoch die oben genannte Liste verwenden, wird diese Aufgabe bereits unangenehm.

Um mir diese Aufgabe zu erleichtern, habe ich, erfüllt vom Hochstapler-Syndrom, einen Proof-of-Concept meiner Idee unter dem Namen Go entworfen näher kommen.

Als Beispiel werde ich nicht die gesamte Liste der Resolver überprüfen, sondern mich auf die beliebtesten beschränken.

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Closest hosts:
	1.0.0.1 [3.4582ms]
	8.8.8.8 [6.7545ms]
	1.1.1.1 [12.6773ms]
	8.8.4.4 [16.6361ms]
	9.9.9.9 [40.0525ms]

Als ich einmal einen Resolver für mich selbst auswählte, beschränkte ich mich darauf, nur die Hauptadressen (1.1.1.1, 8.8.8.8, 9.9.9.9) zu überprüfen – schließlich sind sie so schön und was kann man davon erwarten Hässliche Backup-Adressen.

Aber da es eine automatisierte Möglichkeit gibt, Verzögerungen zu vergleichen, warum nicht die Liste erweitern ...

Wie der Test gezeigt hat, ist die „Backup“-Cloudflare-Adresse für mich besser geeignet, da sie in spb-ix eingesteckt ist, was mir viel näher liegt als msk-ix, in das die schöne 1.1.1.1 eingesteckt ist

Wie Sie sehen, ist der Unterschied erheblich, da selbst der schnellste Lichtstrahl nicht in weniger als 10 ms von St. Petersburg nach Moskau gelangen kann.

Zusätzlich zum einfachen Ping bietet PoC auch die Möglichkeit, Verzögerungen für andere Protokolle wie http und TCP sowie die Zeit für die Konvertierung von Domänen in IP durch einen bestimmten Resolver zu vergleichen.

Es gibt Pläne, die Anzahl der Knoten zwischen Hosts mithilfe von Traceroute zu vergleichen, um das Auffinden von Hosts zu erleichtern, die einen kürzeren Pfad zu ihnen haben.

Der Code ist grob, es fehlen zahlreiche Überprüfungen, aber er funktioniert recht gut mit sauberen Daten. Ich würde mich über jedes Feedback freuen, Sterne an githabe, und wenn jemandem die Idee des Projekts gefällt, dann herzlich willkommen, Mitwirkender zu werden.

Source: habr.com

Kommentar hinzufügen