Výběr nejbližších uzlů v síti

Výběr nejbližších uzlů v síti

Latence sítě má významný dopad na výkon aplikací nebo služeb, které interagují se sítí. Čím nižší latence, tím vyšší výkon. To platí pro jakoukoli síťovou službu, od běžné webové stránky po databázi nebo síťové úložiště.

Dobrým příkladem je Domain Name System (DNS). DNS je od přírody distribuovaný systém s kořenovými uzly rozptýlenými po celé planetě. Chcete-li jednoduše přistupovat k libovolné webové stránce, musíte nejprve získat její IP adresu.

Nebudu popisovat celý proces rekurzivního procházení „stromu“ doménových zón, ale omezím se na to, že k převodu domény na IP adresu potřebujeme DNS resolver, který veškerou tuto práci udělá za nás.

Kde tedy získáte adresu DNS resolveru?

  1. ISP poskytuje adresu svého DNS resolveru.
  2. Najděte si na internetu adresu veřejného resolveru.
  3. Vyzvedněte si vlastní nebo použijte ten zabudovaný ve vašem domácím routeru.

Kterákoli z těchto možností vám umožní bezstarostné surfování po World Wide Web, ale pokud potřebujete převést velké množství domén na IP, měli byste přistupovat k výběru resolveru opatrněji.

Jak jsem již psal, kromě ISP resolveru existuje mnoho veřejných adres, například se můžete podívat na tento seznam. Některé z nich mohou být mnohem výhodnější, protože mají lepší síťové připojení než výchozí překladač.

Když je seznam malý, můžete jej snadno „pingnout“ ručně a porovnat časy zpoždění, ale pokud si vezmete i výše uvedený seznam, pak se tento úkol stane nepříjemným.

Proto, abych si tento úkol usnadnil, jsem, naplněný syndromem podvodníka, načrtnul důkaz konceptu svého nápadu na Go tzv. přiblížit se.

Jako příklad nebudu kontrolovat celý seznam resolverů, ale omezím se pouze na ty nejoblíbenější.

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

Kdysi, když jsem si vybíral resolver pro sebe, omezil jsem se pouze na kontrolu hlavních adres (1.1.1.1, 8.8.8.8, 9.9.9.9) - vždyť jsou tak krásné a co od toho čekat ošklivé záložní adresy.

Ale protože existuje automatizovaný způsob, jak porovnat zpoždění, proč nerozšířit seznam...

Jak ukázal test, „záložní“ adresa Cloudflare je pro mě vhodnější, protože je zapojena do spb-ix, což je mi mnohem bližší než msk-ix, který má v sobě zapojenou krásnou 1.1.1.1

Rozdíl, jak vidíte, je značný, protože ani ten nejrychlejší paprsek světla nedosáhne z Petrohradu do Moskvy za méně než 10 ms.

Kromě jednoduchého pingu má PoC také možnost porovnávat zpoždění u jiných protokolů, jako je http a tcp, a také čas na převod domén na IP přes konkrétní resolver.

Existují plány na porovnání počtu uzlů mezi hostiteli pomocí traceroute, aby bylo snazší najít hostitele, kteří k nim mají kratší cestu.

Kód je hrubý, postrádá spoustu kontrol, ale na čistých datech funguje docela dobře. Budu rád za každou zpětnou vazbu, hvězdičky na githabea pokud se někomu líbila myšlenka projektu, pak vítejte, abyste se stali přispěvatelem.

Zdroj: www.habr.com

Přidat komentář