Pagpili ng pinakamalapit na node sa network

Pagpili ng pinakamalapit na node sa network

Ang latency ng network ay may malaking epekto sa pagganap ng mga application o serbisyo na nakikipag-ugnayan sa network. Kung mas mababa ang latency, mas mataas ang pagganap. Ito ay totoo para sa anumang serbisyo sa network, mula sa isang regular na website hanggang sa isang database o network storage.

Ang isang magandang halimbawa ay ang Domain Name System (DNS). Ang DNS ay likas na isang distributed system, na may mga root node na nakakalat sa buong planeta. Upang ma-access lamang ang anumang website, kailangan mo munang makuha ang IP address nito.

Hindi ko ilalarawan ang buong proseso ng paulit-ulit na pagdaan sa "puno" ng mga domain zone, ngunit lilimitahan ang aking sarili sa katotohanan na upang ma-convert ang isang domain sa isang IP address, kailangan namin ng isang DNS resolver na gagawa ng lahat ng gawaing ito para sa. tayo.

Kaya, saan mo nakukuha ang address ng DNS resolver?

  1. Ang ISP ay nagbibigay ng address ng DNS resolver nito.
  2. Hanapin ang address ng isang pampublikong solver sa Internet.
  3. Kunin ang sarili mo o gamitin ang naka-built in sa iyong home router.

Anuman sa mga pagpipiliang ito ay magbibigay-daan sa iyo upang tamasahin ang walang malasakit na pag-surf sa World Wide Web, ngunit kung kailangan mong i-convert ang isang malaking bilang ng mga domain sa IP, dapat mong lapitan ang pagpili ng isang solver nang mas maingat.

Tulad ng naisulat ko na, bilang karagdagan sa solver ng ISP, maraming mga pampublikong address, halimbawa, maaari mong tingnan ang listahang ito. Ang ilan sa mga ito ay maaaring mas kanais-nais dahil mayroon silang mas mahusay na koneksyon sa network kaysa sa default na solver.

Kapag maliit ang listahan, maaari mong madaling "i-ping" ito nang manu-mano at ihambing ang mga oras ng pagkaantala, ngunit kung kukunin mo pa ang listahang nabanggit sa itaas, kung gayon ang gawaing ito ay nagiging hindi kanais-nais.

Samakatuwid, upang gawing mas madali ang gawaing ito, ako, na puno ng impostor syndrome, ay nag-sketch ng isang patunay-ng-konsepto ng aking ideya sa Go na tinatawag na lumapit.

Bilang halimbawa, hindi ko susuriin ang buong listahan ng mga solver, ngunit lilimitahan ko lang ang aking sarili sa mga pinakasikat.

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

Sa isang pagkakataon, noong pumipili ako ng solver para sa aking sarili, nilimitahan ko ang aking sarili sa pagsuri lamang sa mga pangunahing address (1.1.1.1, 8.8.8.8, 9.9.9.9) - pagkatapos ng lahat, ang mga ito ay napakaganda, at ano ang maaari mong asahan mula sa pangit na backup na mga address.

Ngunit dahil mayroong isang awtomatikong paraan upang ihambing ang mga pagkaantala, bakit hindi palawakin ang listahan...

Tulad ng ipinakita ng pagsubok, ang "backup" na Cloudflare address ay mas angkop para sa akin, dahil ito ay nakasaksak sa spb-ix, na mas malapit sa akin kaysa sa msk-ix, na may magandang 1.1.1.1 na nakasaksak dito

Ang pagkakaiba, tulad ng nakikita mo, ay makabuluhan, dahil kahit na ang pinakamabilis na sinag ng liwanag ay hindi makakarating mula sa St. Petersburg hanggang Moscow sa mas mababa sa 10 ms.

Bilang karagdagan sa simpleng ping, may pagkakataon din ang PoC na ihambing ang mga pagkaantala para sa iba pang mga protocol, tulad ng http at tcp, pati na rin ang oras para sa pag-convert ng mga domain sa IP sa pamamagitan ng isang partikular na solver.

May mga planong paghambingin ang bilang ng mga node sa pagitan ng mga host gamit ang traceroute upang gawing mas madali ang paghahanap ng mga host na may mas maikling landas patungo sa kanila.

Ang code ay krudo, kulang ito ng isang grupo ng mga tseke, ngunit ito ay gumagana nang maayos sa malinis na data. I would appreciate any feedback, star on github, at kung may nagustuhan ang ideya ng proyekto, maligayang pagdating upang maging isang kontribyutor.

Pinagmulan: www.habr.com

Magdagdag ng komento