Selezioniamo i nodi più vicini nella rete

Selezioniamo i nodi più vicini nella rete

I ritardi di rete hanno un impatto significativo sulle prestazioni delle applicazioni o dei servizi che interagiscono con la rete. Meno sono i ritardi, maggiore è la prestazione. Questo è valido per qualsiasi servizio di rete, da un semplice sito web a un database o a un archivio di rete.

Un buon esempio è il sistema dei nomi a dominio (DNS). Il DNS è per sua natura un sistema distribuito, i nodi principali di cui sono sparsi nel mondo. Per accedere a qualsiasi sito web, è prima necessario ottenere il suo indirizzo IP.

Non descriverò l'intero processo di attraversamento ‘ricorsivo’ dell'albero delle zone di dominio, ma mi limiterò a dire che per convertire un dominio in un indirizzo IP abbiamo bisogno di un risolutore DNS che faccia tutto questo per noi.

Quindi, dove trovare l'indirizzo del risolutore DNS?

  1. Il fornitore di servizi Internet fornisce l'indirizzo del proprio risolutore DNS.
  2. Cercare online l'indirizzo di un risolutore pubblico.
  3. Creare il proprio o utilizzare quello integrato nel proprio router domestico.

Qualsiasi di queste opzioni consentirà di navigare senza preoccupazioni nella rete, ma se hai bisogno di convertire un gran numero di domini in IP, è meglio approcciare la scelta del risolutore con maggiore attenzione.

Come ho già scritto, oltre al risolutore del fornitore di servizi Internet, esistono molti indirizzi pubblici; ad esempio, puoi consultare questa lista. Alcuni di essi potrebbero rivelarsi molto più preferibili, poiché hanno una connettività di rete migliore rispetto al risolutore ‘predefinito’.

Quando l'elenco è breve, è facile ‘pingarlo’ manualmente e confrontare i tempi di ritardo, ma se prendiamo anche solo l'elenco menzionato sopra, questo compito diventa già poco piacevole.

Quindi, per semplificare questo compito, ho abbozzato su Go un proof-of-concept della mia idea chiamata get-closer.

Come esempio non controllerò l'intero elenco di risolutori, ma mi limiterò ai più popolari.

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Host più vicini:
	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]

Quando mi sono scelto un resolver, mi sono limitato a controllare solo gli indirizzi principali (1.1.1.1, 8.8.8.8, 9.9.9.9) — sono così belli, e cosa aspettarsi dagli indirizzi secondari poco attraenti.

Ma dato che esiste un modo automatizzato per confrontare i ritardi, perché non ampliare l'elenco...

Come ha dimostrato il test, l'indirizzo 'secondario' di Cloudflare mi si addice di più, poiché è collegato a spb-ix, che per me è molto più vicino rispetto a msk-ix, dove è collegato il bel 1.1.1.1.

La differenza, come vedete, è significativa, perché anche il raggio di luce più veloce non riesce a percorrere la distanza da San Pietroburgo a Mosca in meno di 10 ms.

Oltre al semplice ping, nel PoC c'è anche la possibilità di confrontare i ritardi su altri protocolli, come http e tcp, così come il tempo di risoluzione dei nomi di dominio in IP tramite un determinato resolver.

C'è in programma una funzione per confrontare il numero di nodi tra gli host tramite traceroute, per semplificare la ricerca degli host a cui si ha un percorso più breve.

Il codice è grezzo, mancano molte verifiche, ma funziona piuttosto bene con dati puliti. Sarò grato per qualsiasi feedback, stelle su GitHub, e se a qualcuno piace l'idea del progetto, è il benvenuto tra i contributori.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster