Selecció dels nodes més propers a la xarxa

Selecció dels nodes més propers a la xarxa

La latència de la xarxa té un impacte significatiu en el rendiment de les aplicacions o serveis que interactuen amb la xarxa. Com més baixa sigui la latència, més gran serà el rendiment. Això és cert per a qualsevol servei de xarxa, des d'un lloc web normal fins a una base de dades o emmagatzematge en xarxa.

Un bon exemple és el sistema de noms de domini (DNS). El DNS és per naturalesa un sistema distribuït, amb nodes arrel escampats per tot el planeta. Per accedir simplement a qualsevol lloc web, primer cal obtenir la seva adreça IP.

No descriuré tot el procés de recórrer recursivament l'"arbre" de les zones de domini, sinó que em limitaré al fet que per convertir un domini en una adreça IP, necessitem un resolutor DNS que faci tot aquest treball per nosaltres.

Aleshores, d'on obteniu l'adreça de resolució de DNS?

  1. L'ISP proporciona l'adreça del seu resolutor DNS.
  2. Trobeu l'adreça d'un solucionador públic a Internet.
  3. Agafeu el vostre o utilitzeu el integrat al vostre encaminador domèstic.

Qualsevol d'aquestes opcions us permetrà gaudir de la navegació sense preocupacions a la World Wide Web, però si necessiteu convertir un gran nombre de dominis a IP, hauríeu d'abordar l'elecció d'un solucionador amb més cura.

Com ja he escrit, a més del solucionador d'ISP, hi ha moltes adreces públiques, per exemple, podeu consultar aquesta llista. Alguns d'ells poden ser molt més preferibles perquè tenen una millor connectivitat de xarxa que la solució per defecte.

Quan la llista és petita, podeu fer-hi un "ping" manualment i comparar els temps de retard, però si fins i tot agafeu la llista esmentada anteriorment, aquesta tasca es torna desagradable.

Per tant, per facilitar aquesta tasca, jo, ple de síndrome de l'impostor, vaig esbossar una prova de concepte de la meva idea a Go anomenada acostar.

Com a exemple, no comprovaré tota la llista de solucionadors, sinó que em limitaré només als més populars.

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

En un moment, quan estava escollint un solucionador per a mi mateix, em limitava a comprovar només les adreces principals (1.1.1.1, 8.8.8.8, 9.9.9.9): després de tot, són tan boniques, i què es pot esperar de adreces de seguretat lletjos.

Però com que hi ha una manera automatitzada de comparar els retards, per què no ampliar la llista...

Com va demostrar la prova, l'adreça de Cloudflare de "còpia de seguretat" és més adequada per a mi, ja que està connectada a spb-ix, que està molt més a prop que a msk-ix, que té el bonic 1.1.1.1 connectat.

La diferència, com podeu veure, és important, perquè fins i tot el raig de llum més ràpid no pot arribar de Sant Petersburg a Moscou en menys de 10 ms.

A més del simple ping, PoC també té l'oportunitat de comparar els retards d'altres protocols, com ara http i tcp, així com el temps per convertir dominis a IP mitjançant un resolutor específic.

Hi ha plans per comparar el nombre de nodes entre hosts utilitzant traceroute per facilitar la cerca d'amfitrions que tinguin un camí més curt.

El codi és cru, li falta un munt de controls, però funciona força bé amb dades netes. Agrairia qualsevol comentari, estrelles enceses github, i si a algú li va agradar la idea del projecte, aleshores benvingut a fer-se col·laborador.

Font: www.habr.com

Afegeix comentari