Seleccionar los nodos más cercanos en la red

Seleccionar los nodos más cercanos en la red

La latencia de la red tiene un impacto significativo en el rendimiento de las aplicaciones o servicios que interactúan con la red. Cuanto menor sea la latencia, mayor será el rendimiento. Esto es válido para cualquier servicio de red, desde un sitio web normal hasta una base de datos o un almacenamiento en red.

Un buen ejemplo es el Sistema de Nombres de Dominio (DNS). DNS es por naturaleza un sistema distribuido, con nodos raíz repartidos por todo el planeta. Para acceder simplemente a cualquier sitio web, primero debe obtener su dirección IP.

No describiré todo el proceso de recorrer recursivamente el "árbol" de 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. a nosotros.

Entonces, ¿de dónde se obtiene la dirección de resolución de DNS?

  1. El ISP proporciona la dirección de su solucionador de DNS.
  2. Encuentre la dirección de un solucionador público en Internet.
  3. Elija el suyo propio o utilice el integrado en el enrutador de 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, entonces debe abordar la elección de un solucionador con más cuidado.

Como ya escribí, además del solucionador de ISP, hay muchas direcciones públicas, por ejemplo, puedes consultar esta lista. Algunos de ellos pueden ser mucho más preferibles porque tienen mejor conectividad de red que el solucionador predeterminado.

Cuando la lista es pequeña, puede hacer "ping" fácilmente manualmente y comparar los tiempos de retraso, pero si toma la lista mencionada anteriormente, esta tarea se vuelve desagradable.

Por lo tanto, para facilitar esta tarea, yo, lleno del síndrome del impostor, esbocé una prueba de concepto de mi idea en Go llamada acercarse.

Como ejemplo, no comprobaré la lista completa de solucionadores, 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 solo las direcciones principales (1.1.1.1, 8.8.8.8, 9.9.9.9); después de todo, son tan hermosas y ¿qué se puede esperar de direcciones de respaldo feas.

Pero dado que existe una forma automatizada de comparar retrasos, ¿por qué no ampliar la lista...?

Como mostró la prueba, la dirección "de respaldo" de Cloudflare es más adecuada para mí, ya que está conectada a spb-ix, que está mucho más cerca de mí que msk-ix, que tiene conectado el hermoso 1.1.1.1.

La diferencia, como puede ver, es significativa, porque ni siquiera el rayo de luz más rápido puede llegar de San Petersburgo a Moscú en menos de 10 ms.

Además del ping simple, PoC también tiene la oportunidad de comparar retrasos para otros protocolos, como http y tcp, así como el tiempo para convertir dominios a IP a través de un solucionador específico.

Hay planes para comparar la cantidad de nodos entre hosts usando traceroute para que sea más fácil encontrar hosts que tengan una ruta más corta hacia ellos.

El código es tosco, le faltan muchas comprobaciones, pero funciona bastante bien con datos limpios. Agradecería cualquier comentario, estrellas en githabe, y si a alguien le gustó la idea del proyecto, bienvenido a convertirse en colaborador.

Fuente: habr.com

Añadir un comentario