Wählen Sie die nächsten Knoten im Netzwerk



Netzwerklatenzen haben 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, der von einem regulären Standort ausgeht und mit einer Datenbank oder einem Netzwerkspeicher endet.

Ein gutes Beispiel ist das Domain Name System (DNS). DNS ist von Natur aus ein verteiltes System, dessen Wurzelknoten über den gesamten Planeten verstreut sind. Um einfach zu einer Site zu gelangen, müssen Sie zuerst deren IP-Adresse abrufen.

Ich werde nicht den gesamten Prozess der rekursiven Passage durch den „Baum“ der Domänenzonen beschreiben, aber ich werde mich auf die Tatsache beschränken, dass wir zum Konvertieren einer Domäne in eine IP-Adresse einen DNS-Resolver benötigen, der all diese Arbeit für uns erledigt.

Woher bekommt man die Resolver-DNS-Adresse?

  1. Der ISP gibt die Adresse seines DNS-Resolvers an.
  2. Suchen Sie die Adresse eines öffentlichen Resolvers im Internet.
  3. Erhöhen Sie Ihren eigenen oder verwenden Sie den eingebauten Router in Ihrem Haus.

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

Wie ich bereits geschrieben habe, gibt es neben dem Resolver des Internetproviders viele öffentliche Adressen. Diese Liste finden Sie beispielsweise hier. Einige von ihnen sind möglicherweise viel vorzuziehen, da sie eine bessere Netzwerkkonnektivität als der Standard-Resolver haben.

Wenn die Liste klein ist, können Sie sie leicht mit den Händen „anpingen“ und die Zeit der Verzögerungen vergleichen. Selbst wenn Sie die oben genannte Liste verwenden, wird diese Lektion bereits unangenehm.

Um diese Aufgabe zu erleichtern, skizzierte ich, voll des Betrüger-Syndroms, einen Proof-of-Concept meiner Idee für unterwegs, genannt Get-Näher .

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 mich einmal für einen Resolver entschieden habe, habe ich mich darauf beschränkt, die Hauptadressen (1.1.1.1, 8.8.8.8, 9.9.9.9) zu überprüfen, weil sie so schön sind und was man von hässlichen Reserveadressen erwartet.

Aber da es eine automatisierte Möglichkeit gab, Verzögerungen zu vergleichen, können Sie die Liste erweitern ...

Wie der Test gezeigt hat, ist die Cloudflare-Sicherungsadresse für mich besser geeignet, da sie in spb-ix steckt, das mir viel näher liegt als msk-ix, in dem das schöne 1.1.1.1 steckt

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

Zusätzlich zum einfachen Ping bietet PoC auch die Möglichkeit, Verzögerungen mithilfe anderer Protokolle wie http und tcp sowie die Zeit zu vergleichen, die zum Konvertieren von Domänen in IP über einen bestimmten Resolver erforderlich ist.

Die Pläne haben die Aufgabe, die Anzahl der Knoten zwischen Hosts mithilfe von Traceroute zu vergleichen, damit es einfacher ist, Hosts zu finden, zu denen es einen kürzeren Pfad gibt.

Der Code ist roh, es gibt nicht genügend Überprüfungen, aber bei sauberen Daten funktioniert er recht gut. Ich wäre dankbar für jedes Feedback, Sterne auf dem Github , und wenn jemand die Idee des Projekts mochte, dann willkommen bei den Mitwirkenden.

Source: https://habr.com/ru/post/de451866/


All Articles