
Síťové zpoždění má významný vliv na výkon aplikací nebo služeb, které komunikují se sítí. Čím menší jsou zpoždění, tím vyšší je výkon. To platí pro jakoukoli síťovou službu, od obyčejné webové stránky až po databázi nebo síťové úložiště.
Dobrou ukázkou je systém doménových jmen (DNS). DNS je z podstaty distribuovaný systém, jehož kořenové uzly jsou rozprostřeny po celé planetě. Abyste se dostali na jakoukoli webovou stránku, musíte nejprve získat její IP adresu.
Nebudu popisovat celý proces rekursivního procházení "stromem" doménových zón, omezím se jen na to, že pro převod domény na IP adresu potřebujeme DNS resolver, který vykoná celou tuto práci za nás.
Tak kde získat adresu DNS resolveru?
- Internetový poskytovatel poskytuje adresu svého DNS resolveru.
- Najít v internetu adresu veřejného resolveru.
- Převzít svůj nebo použít integrovaný ve vašem domácím routeru.
Jakákoliv z těchto možností umožní užívat si bezstarostné surfování po celosvětové síti, ale pokud budete potřebovat převést velké množství domén na IP adresy, měli byste na výběr resolveru pohlížet pečlivěji.
Jak už jsem psal, kromě resolveru poskytovatele internetu existuje řada veřejných adres, například si můžete prohlédnout tento seznam. Některé z nich se mohou ukázat jako mnohem preferovanější, protože mají lepší síťovou konektivitu než "výchozí" resolver.
Když je seznam malý, snadno ho můžete "pingnout" manuálně a porovnat doby zpoždění, ale když vezmete alespoň seznam, který byl zmíněn výše, stává se tato činnost již nepříjemnou.
Proto jsem pro usnadnění této úlohy, přemožen syndromem podvodníka, napsal v Go proof-of-concept své myšlenky s názvem .
Jako příklad nebudu kontrolovat celý seznam resolverů, ale omezím se pouze na ty nejpopulárnější.
$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Nejbližší hostitelé:
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]
Když jsem si vybíral resolver, omezil jsem se pouze na kontrolu hlavních adres (1.1.1.1, 8.8.8.8, 9.9.9.9), – vždyť vypadají tak hezky, a co čekat od záložních nehezkých adres.
Ale pokud se objevila automatizovaná metoda pro porovnání latencí, proč nesmířit seznam...
Jak ukázal test, více mi vyhovuje 'záložní' adresa Cloudflare, protože je připojena k spb-ix, který je pro mě mnohem blíž než msk-ix, do kterého je připojena krásná 1.1.1.1.
Rozdíl, jak vidíte, je podstatný, protože ani nejrychlejší paprsek světla se nedokáže dostat z Petrohradu do Moskvy za méně než 10 ms.
Kromě jednoduchého pingu má PoC také možnost porovnat latence a podle jiných protokolů, jako jsou http a tcp, a také čas na převod domén na IP prostřednictvím konkrétního resolveru.
V plánech je úkol porovnat počet uzlů mezi hostiteli pomocí traceroute, aby bylo jednodušší najít hostitele, k nimž je kratší cesta.
Kód je neupravený, chybí spousta kontrol, ale docela slušně funguje na čistých datech. Budu vděčný za jakoukoli zpětnou vazbu, hvězdy na , a pokud se někomu líbí myšlenka projektu, tak vítám mezi přispěvatele.
Zdroj: habr.com
