Wählen Sie die nächstgelegenen Knoten im Netzwerk aus

Wählen Sie die nächstgelegenen Knoten im Netzwerk aus

Netzwerklatenzen haben einen erheblichen Einfluss auf die Leistung von Anwendungen oder Diensten, die mit dem Netzwerk interagieren. Je geringer die Latenzen, desto höher die Leistung. Dies gilt für jeden Netzwerkdienst, von einer gewöhnlichen Website bis hin zu Datenbanken oder Netzwerkspeichern.

Ein gutes Beispiel dafür ist das Domain Name System (DNS). DNS ist von Natur aus ein verteiltes System, dessen Wurzelknoten über den gesamten Planeten verteilt sind. Um einfach auf eine Website zuzugreifen, muss zunächst die IP-Adresse ermittelt werden.

Ich werde den gesamten Prozess des rekursiven Durchlaufens des "Baums" der Domainzonen nicht beschreiben, sondern mich darauf beschränken, dass wir einen DNS-Resolver benötigen, um die Umwandlung einer Domain in eine IP-Adresse durchzuführen.

Woher bekommt man also die Adresse eines DNS-Resolvers?

  1. Der Internetanbieter stellt die Adresse seines DNS-Resolvers zur Verfügung.
  2. Finden Sie im Internet die Adresse eines öffentlichen Resolvers.
  3. Richten Sie Ihren eigenen ein oder verwenden Sie den, der in Ihrem Heimrouter integriert ist.

Einer dieser Optionen ermöglicht Ihnen unbeschwertes Surfen im World Wide Web, aber wenn Sie eine große Anzahl von Domains in IPs umwandeln möchten, sollten Sie die Auswahl des Resolvers sorgfältiger angehen.

Wie bereits erwähnt, gibt es neben dem Resolver des Internetanbieters viele öffentliche Adressen, zum Beispiel können Sie sich diese Liste ansehen. Einige von ihnen könnten viel vorteilhafter sein, da sie eine bessere Netzwerkverbindung haben als der "Standard"-Resolver.

Wenn die Liste klein ist, kann man sie leicht manuell "pingen" und die Latenzzeiten vergleichen, aber wenn man mindestens die oben erwähnte Liste nimmt, wird diese Aufgabe bereits unangenehm.

Um diese Aufgabe zu erleichtern, habe ich, erfüllt vom Impostor-Syndrom, ein Proof-of-Concept meiner Idee in Go mit dem Namen skizziert get-closer.

Als Beispiel werde ich nicht die gesamte Liste von Resolvers überprüfen, sondern mich nur auf die populärsten beschränken.

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Nächstgelegene 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 damals meinen Resolver auswählte, beschränkte ich mich nur auf die Überprüfung der grundlegenden Adressen (1.1.1.1, 8.8.8.8, 9.9.9.9), denn sie sind so schön, und was kann man von den unschönen Sicherungsadressen erwarten?

Aber da es eine automatisierte Möglichkeit gibt, Latenzen zu vergleichen, warum nicht die Liste erweitern…

Wie der Test gezeigt hat, passt mir die "Reservadresse" von Cloudflare besser, da sie mit spb-ix verbunden ist, der für mich viel näher ist als msk-ix, in den die schöne 1.1.1.1 eingesteckt ist.

Der Unterschied ist, wie Sie sehen, erheblich, denn selbst das schnellste Licht kann nicht in weniger als 10 ms von St. Petersburg nach Moskau gelangen.

Neben dem einfachen Ping bietet das PoC auch die Möglichkeit, Latenzen über andere Protokolle zu vergleichen, wie http und tcp, sowie die Zeit zur Umwandlung von Domains in IPs über einen bestimmten Resolver.

In Zukunft gibt es die Aufgabe, die Anzahl der Knoten zwischen Hosts mithilfe von Traceroute zu vergleichen, um Hosts leichter zu finden, zu denen ein kürzerer Weg besteht.

Der Code ist roh und es fehlen viele Überprüfungen, funktioniert aber ganz gut mit sauberen Daten. Ich wäre dankbar für jedes Feedback, Sterne auf GitHub, und wenn jemand die Idee des Projekts mochte, ist er herzlich eingeladen, Mitwirkender zu werden.

Quelle: habr.com

60GB SSD 8Gb DDR4