Selezione dei nodi più vicini nella rete

Selezione dei nodi più vicini nella rete

La latenza della rete ha un impatto significativo sulle prestazioni delle applicazioni o dei servizi che interagiscono con la rete. Minore è la latenza, maggiori saranno le prestazioni. Questo vale per qualsiasi servizio di rete, da un normale sito web a un database o a un archivio di rete.

Un buon esempio è il Domain Name System (DNS). Il DNS è per natura un sistema distribuito, con nodi radice sparsi in tutto il pianeta. Per accedere semplicemente a qualsiasi sito Web, devi prima ottenere il suo indirizzo IP.

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

Allora, dove prendi l'indirizzo del risolutore DNS?

  1. L'ISP fornisce l'indirizzo del suo risolutore DNS.
  2. Trova l'indirizzo di un risolutore pubblico su Internet.
  3. Prendi il tuo o usa quello integrato nel router di casa.

Ognuna di queste opzioni ti consentirà di goderti una navigazione spensierata sul World Wide Web, ma se hai bisogno di convertire un gran numero di domini in IP, dovresti avvicinarti con più attenzione alla scelta di un risolutore.

Come ho già scritto, oltre al risolutore dell'ISP, ci sono molti indirizzi pubblici, ad esempio puoi consultare questo elenco. Alcuni di essi potrebbero essere molto più preferibili perché hanno una migliore connettività di rete rispetto al risolutore predefinito.

Quando l'elenco è piccolo, puoi facilmente "pingarlo" manualmente e confrontare i tempi di ritardo, ma se prendi anche l'elenco sopra menzionato, questo compito diventa spiacevole.

Pertanto, per facilitare questo compito, io, pieno di sindrome dell'impostore, ho abbozzato una prova di concetto della mia idea su Go chiamata avvicinarsi.

Ad esempio, non controllerò l'intero elenco dei risolutori, ma mi limiterò solo a quelli più popolari.

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

Un tempo, quando sceglievo un risolutore per me stesso, mi limitavo a controllare solo gli indirizzi principali (1.1.1.1, 8.8.8.8, 9.9.9.9) - dopotutto, sono così belli e cosa puoi aspettarti da brutti indirizzi di backup.

Ma poiché esiste un modo automatizzato per confrontare i ritardi, perché non espandere l'elenco...

Come ha dimostrato il test, l'indirizzo di "backup" di Cloudflare è più adatto a me, poiché è collegato a spb-ix, che è molto più vicino a me rispetto a msk-ix, a cui è collegato il bellissimo 1.1.1.1

La differenza, come puoi vedere, è significativa, perché anche il raggio di luce più veloce non può arrivare da San Pietroburgo a Mosca in meno di 10 ms.

Oltre al semplice ping, PoC ha la possibilità di confrontare anche i ritardi per altri protocolli, come http e tcp, nonché i tempi di conversione dei domini in IP tramite uno specifico risolutore.

Ci sono piani per confrontare il numero di nodi tra host utilizzando traceroute per facilitare la ricerca di host che hanno un percorso più breve per raggiungerli.

Il codice è rozzo, manca un sacco di controlli, ma funziona abbastanza bene su dati puliti. Apprezzerei qualsiasi feedback, stelle attive githabee se a qualcuno è piaciuta l'idea del progetto, benvenuto a diventare un collaboratore.

Fonte: habr.com

Aggiungi un commento