Selezioniamo i nodi più vicini nella rete

Selezioniamo i nodi più vicini nella rete

Le latenze di rete hanno un impatto significativo sulle prestazioni delle applicazioni o dei servizi che interagiscono con la rete. Meno è alta la latenza, maggiori sono le prestazioni. Questo vale per qualsiasi servizio di rete, da un sito web comune fino a un database o uno storage di rete.

Un buon esempio è il sistema dei nomi a dominio (DNS). Il DNS è, per sua natura, un sistema distribuito, i cui nodi radice sono sparsi in tutto il pianeta. Per accedere a qualsiasi sito, è necessario prima 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 svolgerà tutto questo lavoro per noi.

Quindi, dove possiamo 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. Configurare il proprio risolutore o utilizzare quello integrato nel vostro router domestico.

Qualsiasi di queste opzioni ti permetterà di goderti una navigazione senza pensieri in rete, ma se hai bisogno di convertire un gran numero di domini in IP, dovresti avvicinarti con maggiore attenzione alla scelta del resolver.

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

Quando la lista è piccola, è facile ‘pingarla’ manualmente e confrontare i tempi di latenza; ma se prendi in considerazione almeno la lista menzionata sopra, questa attività diventa già poco piacevole.

Pertanto, per semplificare questa operazione, ho abbozzato un proof-of-concept della mia idea in Go chiamato get-closer.

Come esempio, non verificherò l'intero elenco di resolver, ma mi limiterò solo 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]

In passato, quando ho scelto un resolver per me stesso, mi sono limitato a controllare solo gli indirizzi principali (1.1.1.1, 8.8.8.8, 9.9.9.9), perché sono così belli, e cosa aspettarsi da indirizzi secondari brutti.

Ma poiché è emerso un modo automatizzato per confrontare latenze, perché non ampliare l'elenco...

Come ha dimostrato il test, l'indirizzo 'di riserva' di Cloudflare è più adatto a me, poiché è collegato a spb-ix, che è molto più vicino a me rispetto a msk-ix, dove è collegato il bello 1.1.1.1.

La differenza, come vedete, è notevole, perché nemmeno il raggio di luce più veloce riesce a raggiungere Mosca da San Pietroburgo in meno di 10 ms.

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

Ci sono piani per un compito di confronto del numero di nodi tra gli host tramite traceroute, per rendere più facile trovare gli host a cui si può accedere con un percorso più breve.

Il codice è grezzo, mancano molte verifiche, ma funziona abbastanza bene su dati puliti. Apprezzerei qualsiasi feedback, stelle su GitHub., se a qualcuno è piaciuta l'idea del progetto, è benvenuto tra i contributor.

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