
Las latencias de red tienen un impacto significativo en el rendimiento de las aplicaciones o servicios que interactúan con la red. Cuanto menos latencia, mayor es el rendimiento. Esto es cierto para cualquier servicio de red, comenzando desde un sitio normal y terminando con una base de datos o almacenamiento de red.
Un buen ejemplo es el sistema de nombres de dominio (DNS). DNS es inherentemente un sistema distribuido, cuyos nodos raíz están dispersos por todo el planeta. Para ir a cualquier sitio, primero debe obtener su dirección IP.
No describiré todo el proceso de paso recursivo a través del "árbol" de las zonas de dominio, pero me limitaré al hecho de que para convertir un dominio en una dirección IP, necesitamos un solucionador de DNS que haga todo este trabajo por nosotros.
Entonces, ¿dónde obtener la dirección DNS de resolución?
- El ISP proporciona la dirección de su solucionador de DNS.
- Encuentre la dirección de un resolutor público en Internet.
- Levante la suya o use el enrutador incorporado en su hogar.
Cualquiera de estas opciones le permitirá disfrutar de una navegación sin preocupaciones en la World Wide Web, pero si necesita convertir una gran cantidad de dominios a IP, la elección del solucionador debe abordarse con más cuidado.
Como ya escribí, además del solucionador del proveedor de Internet, hay muchas direcciones públicas, por ejemplo, puede encontrar esta lista aquí. Algunos de ellos pueden ser mucho más preferibles porque tienen una mejor conectividad de red que el solucionador predeterminado.
Cuando la lista es pequeña, puede "hacer ping" fácilmente con sus manos y comparar el tiempo de retraso, pero incluso si toma la lista mencionada anteriormente, esta lección ya se vuelve desagradable.
Por lo tanto, para facilitar esta tarea, yo, lleno de síndrome de impostor, bosquejé una prueba de concepto de mi idea en el Go llamada
acercamiento .
Como ejemplo, no comprobaré la lista completa de resolvers, sino que me limitaré a los más populares.
$ 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 momento, cuando elegí un solucionador para mí, me limité a verificar las direcciones principales (1.1.1.1, 8.8.8.8, 9.9.9.9), porque son muy hermosas y qué esperar de las direcciones feas de reserva.
Pero como había una forma automatizada de comparar demoras, ¿por qué no expandir la lista ...
Como mostró la prueba, la dirección de "copia de seguridad" de Cloudflare es más adecuada para mí, ya que está atascada en spb-ix, que está mucho más cerca de mí que msk-ix, en la que está atascada la hermosa 1.1.1.1
La diferencia, como puede ver, es significativa, porque incluso el rayo de luz más rápido no logra correr de San Petersburgo a Moscú en menos de 10 ms.
Además del simple ping, PoC también tiene la capacidad de comparar demoras utilizando otros protocolos, como http y tcp, así como el tiempo que lleva convertir dominios a IP a través de un resolutor específico.
Los planes tienen la tarea de comparar el número de nodos entre hosts usando traceroute, de modo que sea más fácil encontrar hosts para los que haya una ruta más corta.
El código es sin formato, no hay suficientes montones de comprobaciones, pero funciona razonablemente bien en datos limpios. Estaría agradecido por cualquier comentario, estrellas en el
github , y si a alguien le gustó la idea del proyecto, bienvenido a los contribuyentes.