Velge de nærmeste nodene i nettverket

Velge de nærmeste nodene i nettverket

Nettverksforsinkelse har en betydelig innvirkning på ytelsen til applikasjoner eller tjenester som samhandler med nettverket. Jo lavere latens, jo høyere ytelse. Dette gjelder for alle nettverkstjenester, fra et vanlig nettsted til en database eller nettverkslagring.

Et godt eksempel er Domain Name System (DNS). DNS er av natur et distribuert system, med rotnoder spredt over hele planeten. For å få tilgang til et hvilket som helst nettsted, må du først få IP-adressen.

Jeg vil ikke beskrive hele prosessen med å gå rekursivt gjennom "treet" av domenesoner, men vil begrense meg til det faktum at for å konvertere et domene til en IP-adresse, trenger vi en DNS-løser som vil gjøre alt dette arbeidet for oss.

Så, hvor får du DNS-løseradressen?

  1. Internett-leverandøren oppgir adressen til sin DNS-løser.
  2. Finn adressen til en offentlig resolver på Internett.
  3. Plukk opp din egen eller bruk den som er innebygd i hjemmeruteren.

Enhver av disse alternativene vil tillate deg å nyte bekymringsløs surfing på World Wide Web, men hvis du har behov for å konvertere et stort antall domener til IP, bør du nærme deg valget av en resolver mer nøye.

Som jeg allerede skrev, i tillegg til ISP-resolveren, er det mange offentlige adresser, for eksempel kan du sjekke ut denne listen. Noen av dem kan være mye mer å foretrekke fordi de har bedre nettverkstilkobling enn standardløseren.

Når listen er liten, kan du enkelt "pinge" den manuelt og sammenligne forsinkelsestider, men hvis du til og med tar listen nevnt ovenfor, blir denne oppgaven ubehagelig.

Derfor, for å gjøre denne oppgaven enklere, skisserte jeg, fylt med bedragersyndrom, et proof-of-concept av ideen min på Go kalt komme nærmere.

Som et eksempel vil jeg ikke sjekke hele listen over løsere, men vil begrense meg til bare 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 for meg selv, begrenset jeg meg til kun å sjekke hovedadressene (1.1.1.1, 8.8.8.8, 9.9.9.9) - de er tross alt så vakre, og hva kan du forvente av stygge backup-adresser.

Men siden det er en automatisert måte å sammenligne forsinkelser på, hvorfor ikke utvide listen...

Som testen viste, er "backup" Cloudflare-adressen mer egnet for meg, siden den er koblet til spb-ix, som er mye nærmere meg enn msk-ix, som har den vakre 1.1.1.1 plugget inn i seg.

Forskjellen, som du kan se, er betydelig, fordi selv den raskeste lysstrålen ikke kan nå fra St. Petersburg til Moskva på mindre enn 10 ms.

I tillegg til enkel ping, har PoC også mulighet til å sammenligne forsinkelser for andre protokoller, som http og tcp, samt tiden for konvertering av domener til IP gjennom en spesifikk resolver.

Det er planer om å sammenligne antall noder mellom verter som bruker traceroute for å gjøre det lettere å finne verter som har en kortere vei til dem.

Koden er grov, den mangler en haug med kontroller, men den fungerer ganske bra på rene data. Jeg vil sette pris på tilbakemeldinger, stjerner på githabe, og hvis noen likte ideen med prosjektet, velkommen til å bli bidragsyter.

Kilde: www.habr.com

Legg til en kommentar