Selectarea celor mai apropiate noduri din rețea

Selectarea celor mai apropiate noduri din rețea

Latența rețelei are un impact semnificativ asupra performanței aplicațiilor sau serviciilor care interacționează cu rețeaua. Cu cât latența este mai mică, cu atât performanța este mai mare. Acest lucru este valabil pentru orice serviciu de rețea, de la un site web obișnuit la o bază de date sau stocare în rețea.

Un bun exemplu este sistemul de nume de domeniu (DNS). DNS este prin natură un sistem distribuit, cu noduri rădăcină împrăștiate pe întreaga planetă. Pentru a accesa pur și simplu orice site web, trebuie mai întâi să obțineți adresa IP a acestuia.

Nu voi descrie întregul proces de a parcurge recursiv „arborele” zonelor de domeniu, ci mă voi limita la faptul că, pentru a converti un domeniu într-o adresă IP, avem nevoie de un rezolutor DNS care să facă toată această muncă pt. S.U.A.

Deci, de unde obțineți adresa rezolutorului DNS?

  1. ISP-ul furnizează adresa soluției sale DNS.
  2. Găsiți adresa unui resolver public pe Internet.
  3. Ia-l pe al tău sau folosește-l pe cel încorporat în routerul tău de acasă.

Oricare dintre aceste opțiuni vă va permite să vă bucurați de navigarea fără griji pe World Wide Web, dar dacă aveți nevoie să convertiți un număr mare de domenii în IP, atunci ar trebui să abordați cu mai multă atenție alegerea unui resolver.

După cum am scris deja, pe lângă soluția ISP, există multe adrese publice, de exemplu, puteți consulta această listă. Unele dintre ele pot fi mult mai preferabile, deoarece au conectivitate la rețea mai bună decât soluția implicită.

Când lista este mică, puteți să o „ping” cu ușurință manual și să comparați timpii de întârziere, dar dacă luați chiar lista menționată mai sus, atunci această sarcină devine neplăcută.

Prin urmare, pentru a face această sarcină mai ușoară, eu, plin de sindromul impostorului, am schițat o dovadă de concept a ideii mele pe Go numită Vino mai aproape.

De exemplu, nu voi verifica întreaga listă de rezolutori, ci mă voi limita doar la cele mai populare.

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

La un moment dat, când îmi alegeam un resolver, m-am limitat la a verifica doar adresele principale (1.1.1.1, 8.8.8.8, 9.9.9.9) - la urma urmei, sunt atât de frumoase și la ce te poți aștepta de la adrese de rezervă urâte.

Dar, deoarece există o modalitate automată de a compara întârzierile, de ce să nu extindeți lista...

După cum a arătat testul, adresa Cloudflare „de rezervă” este mai potrivită pentru mine, deoarece este conectată la spb-ix, care este mult mai aproape de mine decât msk-ix, care are frumosul 1.1.1.1 conectat.

Diferența, după cum puteți vedea, este semnificativă, deoarece nici cea mai rapidă rază de lumină nu poate ajunge de la Sankt Petersburg la Moscova în mai puțin de 10 ms.

Pe lângă simplul ping, PoC are și posibilitatea de a compara întârzierile pentru alte protocoale, cum ar fi http și tcp, precum și timpul de conversie a domeniilor în IP printr-un solutor specific.

Există planuri de a compara numărul de noduri dintre gazde folosind traceroute pentru a facilita găsirea gazdelor care au o cale mai scurtă către ele.

Codul este brut, îi lipsesc o grămadă de verificări, dar funcționează destul de bine pe date curate. Aș aprecia orice feedback, stele pe githubși dacă cuiva i-a plăcut ideea proiectului, atunci bine ați venit să deveniți colaborator.

Sursa: www.habr.com

Adauga un comentariu