Laten we de dichtstbijzijnde knooppunten in het netwerk kiezen

Laten we de dichtstbijzijnde knooppunten in het netwerk kiezen

Netwerkvertragingen hebben een aanzienlijke invloed op de prestaties van applicaties of diensten die met het netwerk communiceren. Hoe minder vertraging, hoe hoger de prestaties. Dit geldt voor elke netwerksdienst, van een gewone website tot een database of netwerkopslag.

Een goed voorbeeld hiervan is het domain name system (DNS). DNS is van nature een gedistribueerd systeem, waarvan de wortelknopen over de hele wereld zijn verspreid. Om eenvoudig een website te bezoeken, moet je eerst het IP-adres ervan verkrijgen.

Ik zal het hele proces van de recursieve doorlooptijd door de ‘boom’ van domeinzones niet beschrijven, maar ik beperk me tot het feit dat we een DNS-resolver nodig hebben om een domein naar een IP-adres te converteren, die al dit werk voor ons uitvoert.

Dus, waar kunnen we het adres van een DNS-resolver vinden?

  1. De internetprovider biedt het adres van zijn DNS-resolver aan.
  2. Zoek het adres van een openbare resolver op het internet.
  3. Verhoog je eigen resolver of gebruik de ingebouwde in je thuisrouter.

Elk van deze opties stelt je in staat om zorgeloos over het wereldwijde web te surfen, maar als je een groot aantal domeinen naar IP moet converteren, moet je de keuze van de resolver zorgvuldiger benaderen.

Zoals ik al eerder zei, naast de resolver van de internetprovider, zijn er tal van openbare adressen beschikbaar, bijvoorbeeld je kunt deze lijst bekijken. Sommige van deze kunnen veel beter zijn omdat ze een betere netwerkkonnektiviteit hebben dan de standaardresolver.

Wanneer de lijst klein is, kun je deze gemakkelijk ‘pingen’ en de vertragingen vergelijken, maar als je ten minste de eerder genoemde lijst neemt, wordt deze taak al minder aangenaam.

Om deze taak te verlichten, heb ik vol zelfvertrouwen een proof-of-concept van mijn idee geschreven in Go, dat ik get-closer.

Als voorbeeld zal ik niet de hele lijst van resolvers controleren, maar me beperken tot de meest populaire.

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Dichtstbijzijnde 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 op zoek was naar een resolver, beperkte ik me tot het controleren van de belangrijkste adressen (1.1.1.1, 8.8.8.8, 9.9.9.9) – ze zijn zo mooi, en wat kun je verwachten van de reserve-adressen die niet mooi zijn.

Maar aangezien er een geautomatiseerde manier is om vertragingen te vergelijken, waarom niet de lijst uitbreiden…

Zoals de test aantoonde, is het 'back-up' adres van Cloudflare geschikter voor mij, omdat het is verbonden met spb-ix, dat veel dichterbij is dan msk-ix, waar het mooie 1.1.1.1 is aangesloten.

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

Naast eenvoudige pings biedt de PoC ook de mogelijkheid om vertragingen te vergelijken met andere protocollen, zoals http en tcp, evenals de tijd voor domeinconversie naar IP via een specifieke resolver.

In de plannen staat een taak om het aantal knooppunten tussen hosts te vergelijken met behulp van traceroute, zodat het gemakkelijker wordt om hosts te vinden waarvoor er een kortere route is.

De code is ruw, er ontbreken veel controles, maar het werkt redelijk goed met schone data. Ik zou dankbaar zijn voor feedback, sterren op GitHub, en als iemand het idee van het project leuk vindt, dan is hij van harte welkom als bijdrager.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster