
NÀtverksfördröjningar har en betydande inverkan pÄ prestanda för applikationer eller tjÀnster som interagerar med nÀtverket. Ju lÀgre fördröjningar, desto högre prestanda. Detta gÀller för alla typer av nÀtverkstjÀnster, allt frÄn en vanlig webbplats till en databas eller ett nÀtverkslager.
Ett bra exempel Àr domÀnnamnssystemet (DNS). DNS Àr i sin natur ett distribuerat system, dÀr rot-noderna sprider sig över hela planeten. För att bara komma Ät en webbplats behöver vi först fÄ dess IP-adress.
Jag kommer inte att beskriva hela processen för rekursiv genomgÄng av domÀnzonernas "trÀd", utan begrÀnsar mig till att sÀga att för att omvandla ett domÀnnamn till en IP-adress behöver vi en DNS-resolver som utför hela arbetet för oss.
SÄ var fÄr man tag pÄ adressen till en DNS-resolver?
- Internetleverantören tillhandahÄller adressen till sin DNS-resolver.
- Hitta adressen till en offentlig resolver pÄ internet.
- SÀtta upp en egen eller anvÀnda den som finns inbyggd i din hemrouter.
NÄgon av dessa alternativ lÄter dig surfa bekymmersfritt pÄ webben, men om du behöver konvertera ett stort antal domÀner till IP-adresser, bör du vÀlja resolver mer noggrant.
Som jag redan har nÀmnt finns det mÄnga offentliga adresser utöver internetleverantörens resolver, till exempel kan du kolla denna lista. Vissa av dem kan visa sig vara mycket mer fördelaktiga, eftersom de har bÀttre nÀtverkskoppling Àn den "standard" resolvern.
NÀr listan Àr liten Àr det lÀtt att "pinga" den manuellt och jÀmföra fördröjningstiderna, men om man tar en lista som den nÀmnda ovan, blir detta arbete mindre trevligt.
DÀrför, för att förenkla denna uppgift, har jag, fylld av impostor-syndrom, skissat pÄ Go proof-of-concept för min idé kallad .
Som exempel kommer jag inte att kontrollera hela listan över resolvrar utan begrÀnsa mig till de mest populÀra.
$ get-closer ping -f dnsresolver.txt -b=0 --count=10
NÀrmaste vÀrdar:
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]
NÀr jag valde min resolver för lÀnge sedan begrÀnsade jag mig bara till att kontrollera de grundlÀggande adresserna (1.1.1.1, 8.8.8.8, 9.9.9.9) - de ser sÄ vackra ut, och vad kan man förvÀnta sig av de fula reservadresserna.
Men om det finns ett automatiserat sĂ€tt att jĂ€mföra fördröjningar, varför inte utöka listan âŠ
Som testet visade, passar det bÀttre för mig att anvÀnda den "reserv"-adressen frÄn Cloudflare, eftersom den Àr kopplad till spb-ix, som Àr mycket nÀrmare mig Àn msk-ix, dÀr den snygga 1.1.1.1 Àr kopplad.
Skillnaden Àr, som du ser, betydande, eftersom Àven den snabbaste ljusstrÄlen inte kan nÄ Moskva frÄn Sankt Petersburg pÄ mindre Àn 10 ms.
Utöver enkel ping, finns det möjlighet i PoC att jÀmföra fördröjningar över andra protokoll, sÄsom http och tcp, samt tiden för att omvandla domÀner till IP via en specifik resolver.
Det finns planer pÄ att jÀmföra antalet noder mellan vÀrdar med traceroute, för att enklare hitta vÀrdar som har en kortare vÀg.
Koden Àr rÄ, det saknas mÄnga kontroller, men den fungerar ganska bra pÄ rena data. Jag skulle vara tacksam för all feedback, stjÀrnor pÄ , och om nÄgon gillar projektets idé, Àr ni vÀlkomna att bli bidragsgivare.
KĂ€lla: habr.com
