Vi vælger de nærmeste noder i netværket

Vi vælger de nærmeste noder i netværket

Netværksforsinkelser har en betydelig indflydelse på ydeevnen af applikationer eller tjenester, der interagerer med netværket. Jo mindre forsinkelserne er, desto bedre ydeevne. Dette gælder for enhver netværkstjeneste, fra en almindelig hjemmeside til en database eller netværksslager.

Et godt eksempel er domænenavnesystemet (DNS). DNS er i sin natur et distribueret system, hvis rodnoder er spredt over hele planeten. For at få adgang til en hvilken som helst hjemmeside skal man først finde dens IP-adresse.

Jeg vil ikke beskrive hele processen med rekursiv gennemgang af "træet" af domænezoner, men jeg vil begrænse mig til, at vi har brug for en DNS-resolver for at konvertere domænet til en IP-adresse, som vil udføre alt dette arbejde for os.

Så hvor kan man finde adressen på en DNS-resolver?

  1. Internetudbyderen leverer adressen til sin DNS-resolver.
  2. Søg efter adressen på en offentlig resolver online.
  3. Opret din egen eller brug den, der er indbygget i din hjemme-router.

Enhver af disse muligheder vil gøre det muligt at surfe bekymringsfrit på internettet, men hvis du har behov for at konvertere mange domæner til IP'er, er det værd at overveje din valg af resolver mere nøje.

Som jeg allerede har nævnt, udover resolveren fra internetudbyderen, findes der mange offentlige adresser, for eksempel kan du se denne liste. Nogle af dem kan vise sig at være langt mere fordelagtige, da de har bedre netværksoverensstemmelse end 'standard'-resolveren.

Når listen er lille, kan man nemt "pinge" dem manuelt og sammenligne forsinkelsestiderne, men selv at tage listen nævnt ovenfor gør denne opgave mindre behagelig.

Derfor, for at lette denne opgave, har jeg - fyldt med impostor-syndrom - skitseret et proof-of-concept for min idé kaldet get-closer.

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

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Nærmeste værter:
	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]

Da jeg for et stykke tid siden valgte en resolver til mig selv, begrænsede jeg mig til at kontroldefinere de vigtigste adresser (1.1.1.1, 8.8.8.8, 9.9.9.9) - de ser så flotte ud, og hvad kunne man ellers forvente af backup-adresser, som ikke ser pæne ud.

Men nu hvor der er en automatiseret måde at sammenligne latenser på, hvorfor ikke udvide listen...

Som testen viste, passer den “backup” adresse fra Cloudflare mig bedre, da den er tilsluttet spb-ix, som er meget tættere på mig end msk-ix, hvor den flotte 1.1.1.1 er tilsluttet.

Forskellen er betydelig, for selv den hurtigste lysstråle kan ikke nå fra Sankt Petersborg til Moskva på mindre end 10 ms.

Udover almindelig ping tilbyder PoC også muligheden for at sammenligne latenser over andre protokoller som http og tcp, samt tiden til at omsætte domæner til IP gennem en bestemt resolver.

Jeg har planer om en opgave, der skal sammenligne antal noder mellem værter ved hjælp af traceroute, så det bliver nemmere at finde værter med en kortere rute.

Koden er rå, der mangler en masse checks, men den fungerer helt ok med rene data. Jeg ville sætte pris på enhver feedback, stjerner på GitHub, og hvis nogen kunne lide idéen til projektet, er de velkomne som bidragsydere.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster