Het selecteren van de dichtstbijzijnde knooppunten in het netwerk

Het selecteren van de dichtstbijzijnde knooppunten in het netwerk

Netwerklatentie heeft een aanzienlijke invloed op de prestaties van applicaties of services die met het netwerk communiceren. Hoe lager de latentie, hoe hoger de prestaties. Dit geldt voor elke netwerkdienst, van een gewone website tot een database of netwerkopslag.

Een goed voorbeeld is het Domain Name System (DNS). DNS is van nature een gedistribueerd systeem, met rootknooppunten verspreid over de hele planeet. Om eenvoudig toegang te krijgen tot een website, moet u eerst het IP-adres ervan verkrijgen.

Ik zal niet het hele proces beschrijven van het recursief doorlopen van de β€œboom” van domeinzones, maar zal mij beperken tot het feit dat we, om een ​​domein naar een IP-adres om te zetten, een DNS-resolver nodig hebben die al dit werk voor ons doet. ons.

Dus, waar haal je het DNS-resolveradres vandaan?

  1. De ISP verstrekt het adres van zijn DNS-resolver.
  2. Zoek het adres van een openbare oplosser op internet.
  3. Koop er zelf een of gebruik degene die in uw thuisrouter is ingebouwd.

Met elk van deze opties kunt u zorgeloos op het World Wide Web surfen, maar als u een groot aantal domeinen naar IP moet converteren, moet u de keuze van een solver zorgvuldiger benaderen.

Zoals ik al schreef, zijn er naast de ISP-resolver veel openbare adressen, je kunt bijvoorbeeld deze lijst bekijken. Sommigen van hen verdienen misschien veel meer de voorkeur omdat ze een betere netwerkconnectiviteit hebben dan de standaardresolver.

Als de lijst klein is, kunt u deze eenvoudig handmatig 'pingen' en de vertragingstijden vergelijken, maar als u zelfs maar de hierboven genoemde lijst gebruikt, wordt deze taak onaangenaam.

Om deze taak gemakkelijker te maken, schetste ik, vervuld van het bedriegersyndroom, een proof-of-concept van mijn idee op Go, genaamd kom dichterbij.

Ik zal bijvoorbeeld niet de hele lijst met solvers doornemen, maar mij beperken tot alleen de meest populaire.

$ 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]

Toen ik ooit een solver voor mezelf aan het kiezen was, beperkte ik mezelf tot het controleren van alleen de hoofdadressen (1.1.1.1, 8.8.8.8, 9.9.9.9) - ze zijn tenslotte zo mooi, en wat kun je van lelijke back-upadressen.

Maar aangezien er een geautomatiseerde manier is om vertragingen te vergelijken, waarom zou u de lijst dan niet uitbreiden...

Zoals uit de test bleek, is het β€œback-up” Cloudflare-adres geschikter voor mij, omdat het is aangesloten op spb-ix, wat veel dichter bij mij staat dan msk-ix, waar het prachtige 1.1.1.1 op is aangesloten

Het verschil is, zoals u kunt zien, aanzienlijk, omdat zelfs de snelste lichtstraal niet in minder dan 10 ms van Sint-Petersburg naar Moskou kan reiken.

Naast eenvoudige ping heeft PoC ook de mogelijkheid om vertragingen voor andere protocollen, zoals http en tcp, te vergelijken, evenals de tijd voor het converteren van domeinen naar IP via een specifieke solver.

Er zijn plannen om het aantal knooppunten tussen hosts te vergelijken met behulp van traceroute om het gemakkelijker te maken hosts te vinden die een korter pad ernaartoe hebben.

De code is grof, er ontbreken een aantal controles, maar hij werkt redelijk goed op schone gegevens. Ik zou elke feedback op prijs stellen, sterren aan githabe, en als iemand het idee van het project leuk vond, welkom om een ​​bijdrager te worden.

Bron: www.habr.com

Voeg een reactie