Selektearje de tichtstbye knopen yn it netwurk

Selektearje de tichtstbye knopen yn it netwurk

Netwurklatinsje hat in wichtige ynfloed op 'e prestaasjes fan applikaasjes of tsjinsten dy't ynteraksje mei it netwurk. Hoe leger de latency, hoe heger de prestaasjes. Dit is wier foar elke netwurktsjinst, fan in gewoane webside oant in databank of netwurk opslach.

In goed foarbyld is it Domain Name System (DNS). DNS is fan natuere in ferspraat systeem, mei rootknooppunten ferspraat oer de planeet. Om gewoan tagong te krijen ta elke webside, moatte jo earst it IP-adres krije.

Ik sil it hiele proses net beskriuwe om rekursyf troch de "beam" fan domeinsônes te gean, mar sil my beheine ta it feit dat wy om in domein yn in IP-adres te konvertearjen in DNS-resolver nedich hawwe dy't al dit wurk sil dwaan foar ús.

Dus, wêr krije jo it DNS-resolveradres?

  1. De ISP jout it adres fan syn DNS-resolver.
  2. Fyn it adres fan in iepenbiere resolver op it ynternet.
  3. Nim jo eigen op of brûk de ynboude yn jo thúsrouter.

Elk fan dizze opsjes lit jo genietsje fan soargeleaze surfen op it World Wide Web, mar as jo in ferlet hawwe om in grut oantal domeinen te konvertearjen nei IP, dan moatte jo de kar fan in resolver foarsichtiger benaderje.

Lykas ik al skreau, neist de ISP-resolver binne d'r in protte iepenbiere adressen, bygelyks kinne jo dizze list kontrolearje. Guon fan harren kinne folle mear foarkar wêze, om't se bettere netwurkferbining hawwe dan de standertresolver.

As de list lyts is, kinne jo it maklik manuell "pinge" en fertragingstiden fergelykje, mar as jo sels de hjirboppe neamde list nimme, dan wurdt dizze taak onaangenaam.

Dêrom, om dizze taak makliker te meitsjen, sketste ik, fol mei impostorsyndroom, in proof-of-concept fan myn idee op Go neamd tichterby komme.

As foarbyld sil ik de folsleine list fan resolvers net kontrolearje, mar my beheine ta allinich de populêrste.

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

Op in stuit, doe't ik in resolver foar mysels keas, beheine ik mysels allinich om de haadadressen te kontrolearjen (1.1.1.1, 8.8.8.8, 9.9.9.9) - se binne ommers sa moai, en wat kinne jo ferwachtsje fan ûnsjogge reservekopy adressen.

Mar om't d'r in automatisearre manier is om fertragingen te fergelykjen, wêrom dan de list net útwreidzje ...

Lykas de test toande, is it "reservekopy" Cloudflare-adres mear geskikt foar my, om't it is ynplugd yn spb-ix, dat is folle tichter by my dan msk-ix, dat de prachtige 1.1.1.1 hat ynstutsen

It ferskil, sa't jo sjen kinne, is signifikant, om't sels de fluchste ljochtstriel net yn minder as 10 ms fan Sint-Petersburch nei Moskou kin berikke.

Neist ienfâldige ping hat PoC ek de kâns om fertragingen te fergelykjen foar oare protokollen, lykas http en tcp, lykas de tiid foar it konvertearjen fan domeinen nei IP fia in spesifike resolver.

D'r binne plannen om it oantal knooppunten te fergelykjen tusken hosts dy't traceroute brûke om it makliker te meitsjen om hosts te finen dy't in koartere paad nei har hawwe.

De koade is rûch, it mist in boskje kontrôles, mar it wurket frij goed op skjinne gegevens. Ik soe wurdearje alle feedback, stjerren op github, en as immen it idee fan it projekt leuk fûn, dan wolkom om in meiwurker te wurden.

Boarne: www.habr.com

Add a comment