Výber najbližších uzlov v sieti

Výber najbližších uzlov v sieti

Latencia siete má významný vplyv na výkon aplikácií alebo služieb, ktoré interagujú so sieťou. Čím nižšia latencia, tým vyšší výkon. To platí pre akúkoľvek sieťovú službu, od bežnej webovej stránky až po databázu alebo sieťové úložisko.

Dobrým príkladom je Domain Name System (DNS). DNS je svojou povahou distribuovaný systém s koreňovými uzlami roztrúsenými po celej planéte. Ak chcete jednoducho pristupovať na akúkoľvek webovú stránku, musíte najprv získať jej IP adresu.

Nebudem popisovať celý proces rekurzívneho prechádzania „stromom“ doménových zón, ale obmedzím sa na to, že na konverziu domény na IP adresu potrebujeme DNS resolver, ktorý všetku túto prácu urobí za nás.

Takže, kde získate adresu DNS resolvera?

  1. ISP poskytuje adresu svojho DNS resolvera.
  2. Nájdite si na internete adresu verejného riešiteľa.
  3. Vyberte si svoj vlastný alebo použite ten, ktorý je zabudovaný do vášho domáceho smerovača.

Ktorákoľvek z týchto možností vám umožní vychutnať si bezstarostné surfovanie na World Wide Web, ale ak potrebujete previesť veľké množstvo domén na IP, mali by ste pristupovať k výberu resolvera opatrnejšie.

Ako som už písal, okrem ISP resolvera existuje veľa verejných adries, napríklad si môžete pozrieť tento zoznam. Niektoré z nich môžu byť oveľa vhodnejšie, pretože majú lepšiu sieťovú konektivitu ako predvolený prekladač.

Keď je zoznam malý, môžete ho ľahko „pingnúť“ manuálne a porovnať časy oneskorenia, ale ak si dokonca vezmete zoznam uvedený vyššie, táto úloha sa stane nepríjemnou.

Preto, aby som si túto úlohu uľahčil, načrtol som, naplnený syndrómom podvodníka, dôkaz o koncepte môjho nápadu na Go tzv. priblížiť sa.

Ako príklad nebudem kontrolovať celý zoznam riešiteľov, ale obmedzím sa len na tie najpopulárnejšie.

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

Kedysi, keď som si pre seba vyberal resolver, som sa obmedzil iba na kontrolu hlavných adries (1.1.1.1, 8.8.8.8, 9.9.9.9) - sú predsa také krásne a čo sa dá čakať od škaredé záložné adresy.

Ale keďže existuje automatizovaný spôsob porovnávania oneskorení, prečo nerozšíriť zoznam...

Ako ukázal test, „záložná“ adresa Cloudflare je pre mňa vhodnejšia, keďže je zasunutá do spb-ix, čo je mi oveľa bližšie ako msk-ix, ktorý má v sebe zapojenú krásnu 1.1.1.1

Rozdiel, ako vidíte, je značný, pretože ani ten najrýchlejší lúč svetla nedosiahne z Petrohradu do Moskvy za menej ako 10 ms.

Okrem jednoduchého pingu má PoC aj možnosť porovnať oneskorenia pre iné protokoly, ako napríklad http a tcp, ako aj čas na konverziu domén na IP cez špecifický resolver.

Existujú plány na porovnanie počtu uzlov medzi hostiteľmi pomocou traceroute, aby sa uľahčilo nájdenie hostiteľov, ktorí majú k nim kratšiu cestu.

Kód je hrubý, chýba mu veľa kontrol, ale na čistých dátach funguje celkom dobre. Ocenil by som akúkoľvek spätnú väzbu, hviezdičky githuba ak sa niekomu páčila myšlienka projektu, vitajte a staňte sa prispievateľom.

Zdroj: hab.com

Pridať komentár