Välja de närmaste noderna i nätverket

Välja de närmaste noderna i nätverket

Nätverkslatens har en betydande inverkan på prestandan för applikationer eller tjänster som interagerar med nätverket. Ju lägre latens, desto högre prestanda. Detta gäller för alla nätverkstjänster, från en vanlig webbplats till en databas eller nätverkslagring.

Ett bra exempel är Domain Name System (DNS). DNS är till sin natur ett distribuerat system, med rotnoder utspridda över hela planeten. För att enkelt komma åt vilken webbplats som helst måste du först få dess IP-adress.

Jag kommer inte att beskriva hela processen att rekursivt gå igenom "trädet" av domänzoner, utan kommer att begränsa mig till det faktum att för att konvertera en domän till en IP-adress behöver vi en DNS-resolver som kommer att göra allt detta arbete för oss.

Så var får du adressen till DNS-upplösaren?

  1. Internetleverantören tillhandahåller adressen till sin DNS-resolver.
  2. Hitta adressen till en offentlig resolver på Internet.
  3. Plocka upp din egen eller använd den som är inbyggd i din hemrouter.

Alla dessa alternativ gör att du kan njuta av bekymmersfri surf på World Wide Web, men om du har ett behov av att konvertera ett stort antal domäner till IP, bör du närma dig valet av en resolver mer noggrant.

Som jag redan skrivit, förutom ISP-resolvern finns det många allmänna adresser, till exempel kan du kolla in den här listan. Vissa av dem kan vara mycket mer att föredra eftersom de har bättre nätverksanslutning än standardresolvern.

När listan är liten kan du enkelt "pinga" den manuellt och jämföra fördröjningstider, men om du ens tar listan som nämns ovan, blir den här uppgiften obehaglig.

Därför, för att göra den här uppgiften enklare, skissade jag, fylld av bedragares syndrom, ett proof-of-concept av min idé på Go som heter kom närmare.

Som ett exempel kommer jag inte att kontrollera hela listan med lösare, utan kommer att begränsa mig till endast de mest populära.

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

En gång, när jag valde en resolver för mig själv, begränsade jag mig till att bara kontrollera huvudadresserna (1.1.1.1, 8.8.8.8, 9.9.9.9) - trots allt är de så vackra, och vad kan du förvänta dig av fula backup-adresser.

Men eftersom det finns ett automatiserat sätt att jämföra förseningar, varför inte utöka listan...

Som testet visade är "backup" Cloudflare-adressen mer lämplig för mig, eftersom den är ansluten till spb-ix, som är mycket närmare mig än msk-ix, som har den vackra 1.1.1.1 inkopplad i sig

Skillnaden, som du kan se, är betydande, eftersom inte ens den snabbaste ljusstrålen kan nå från St. Petersburg till Moskva på mindre än 10 ms.

Förutom enkel ping har PoC även möjlighet att jämföra fördröjningar för andra protokoll, såsom http och tcp, samt tiden för att konvertera domäner till IP genom en specifik resolver.

Det finns planer på att jämföra antalet noder mellan värdar som använder traceroute för att göra det lättare att hitta värdar som har en kortare väg till dem.

Koden är grov, den saknar en massa kontroller, men den fungerar ganska bra på ren data. Jag skulle uppskatta all feedback, stjärnor på github, och om någon gillade idén med projektet, välkommen att bli en bidragsgivare.

Källa: will.com

Lägg en kommentar