Valg af de nærmeste knudepunkter i netværket

Valg af de nærmeste knudepunkter i netværket

Netværksforsinkelse har en væsentlig indflydelse på ydeevnen af ​​applikationer eller tjenester, der interagerer med netværket. Jo lavere latens, jo højere ydeevne. Dette gælder for enhver netværkstjeneste, fra et almindeligt websted til en database eller netværkslagring.

Et godt eksempel er Domain Name System (DNS). DNS er af natur et distribueret system med rodknuder spredt ud over hele planeten. For blot at få adgang til ethvert websted skal du først få dets IP-adresse.

Jeg vil ikke beskrive hele processen med rekursivt at gå gennem "træet" af domænezoner, men vil begrænse mig til det faktum, at for at konvertere et domæne til en IP-adresse, har vi brug for en DNS-resolver, der vil gøre alt dette arbejde for os.

Så hvor får du DNS-resolver-adressen?

  1. Internetudbyderen angiver adressen på sin DNS-resolver.
  2. Find adressen på en offentlig resolver på internettet.
  3. Hent din egen, eller brug den, der er indbygget i din hjemmerouter.

Enhver af disse muligheder giver dig mulighed for at nyde ubekymret surfing på World Wide Web, men hvis du har et behov for at konvertere et stort antal domæner til IP, bør du gå mere omhyggeligt med valget af en resolver.

Som jeg allerede skrev, er der udover ISP-resolveren mange offentlige adresser, for eksempel kan du tjekke denne liste ud. Nogle af dem kan være meget mere at foretrække, fordi de har bedre netværksforbindelse end standardresolveren.

Når listen er lille, kan du nemt "pinge" den manuelt og sammenligne forsinkelsestider, men hvis du overhovedet tager listen nævnt ovenfor, så bliver denne opgave ubehagelig.

Derfor, for at gøre denne opgave nemmere, skitserede jeg, fyldt med bedragersyndrom, et proof-of-concept af min idé på Go kaldet Kom tættere på.

Som et eksempel vil jeg ikke tjekke hele listen over resolvere, men vil begrænse mig til kun de mest populære.

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

På et tidspunkt, da jeg valgte en resolver til mig selv, begrænsede jeg mig til kun at tjekke hovedadresserne (1.1.1.1, 8.8.8.8, 9.9.9.9) - de er trods alt så smukke, og hvad kan man forvente af grimme backup-adresser.

Men da der er en automatiseret måde at sammenligne forsinkelser på, hvorfor så ikke udvide listen...

Som testen viste, er "backup" Cloudflare-adressen mere velegnet til mig, da den er sat i spb-ix, som er meget tættere på mig end msk-ix, som har den smukke 1.1.1.1 sat ind i sig.

Forskellen er, som du kan se, betydelig, fordi selv den hurtigste lysstråle ikke kan nå fra St. Petersborg til Moskva på mindre end 10 ms.

Udover simpel ping har PoC også mulighed for at sammenligne forsinkelser for andre protokoller, såsom http og tcp, samt tiden for konvertering af domæner til IP gennem en specifik resolver.

Der er planer om at sammenligne antallet af noder mellem værter, der bruger traceroute for at gøre det nemmere at finde værter, der har en kortere vej til dem.

Koden er rå, den mangler en masse kontroller, men den fungerer ret godt på rene data. Jeg ville sætte pris på enhver feedback, stjerner på github, og hvis nogen kunne lide ideen med projektet, så velkommen til at blive bidragyder.

Kilde: www.habr.com

Tilføj en kommentar