Escolhendo os nós mais próximos na rede

Escolhendo os nós mais próximos na rede

As latências de rede têm um impacto significativo no desempenho de aplicações ou serviços que interagem com a rede. Quanto menores as latências, maior o desempenho. Isso é válido para qualquer serviço de rede, desde um site comum até um banco de dados ou armazenamento em rede.

Um bom exemplo é o sistema de nomes de domínio (DNS). O DNS é, por natureza, um sistema distribuído, cujos nós raiz estão espalhados por todo o planeta. Para acessar qualquer site, primeiro é necessário obter seu endereço IP.

Não vou descrever todo o processo de pesquisa recursiva nas zonas de domínio, mas para converter um domínio em um endereço IP, precisamos de um resolvedor DNS que faça todo esse trabalho por nós.

Então, onde encontrar o endereço do resolvedor DNS?

  1. O provedor de internet fornece o endereço do seu resolvedor DNS.
  2. Encontrar na internet o endereço de um resolvedor público.
  3. Levantar o seu próprio ou usar o embutido no seu roteador caseiro.

Qualquer uma dessas opções permitirá que você aproveite a navegação despreocupada pela rede, mas se você precisar converter um grande número de domínios em IP, é aconselhável abordar a escolha do resolvedor com mais cuidado.

Como já mencionei, além do resolvedor do provedor de internet, existem muitos endereços públicos, por exemplo, você pode conferir esta lista. Alguns deles podem ser muito mais preferíveis, pois possuem melhor conectividade de rede do que o resolvedor 'padrão'.

Quando a lista é pequena, é fácil "pingar" manualmente e comparar os tempos de latência, mas se, pelo menos, pegarmos a lista mencionada acima, essa tarefa já se torna desagradável.

Portanto, para facilitar essa tarefa, eu, sufocado pela síndrome do impostor, rascunhei em Go um proof-of-concept da minha ideia chamada get-closer.

Como exemplo, não vou verificar toda a lista de resolvedores, mas vou me restringir aos mais populares.

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Hosts mais próximos:
	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]

Na época em que escolhi um resolvedor para mim, eu me limitava apenas a verificar os endereços principais (1.1.1.1, 8.8.8.8, 9.9.9.9), pois eles são tão bonitos e o que esperar dos endereços de reserva que não são bonitos.

Mas já que surgiu uma maneira automatizada de comparar latências, por que não ampliar a lista...

Como mostrou o teste, o endereço ‘backup’ do Cloudflare é mais adequado para mim, pois está conectado ao spb-ix, que está muito mais próximo de mim do que o msk-ix, onde está o belo 1.1.1.1.

A diferença, como você pode ver, é significativa, porque até mesmo o raio de luz mais rápido não consegue chegar de São Petersburgo a Moscovo em menos de 10 ms.

Além do simples ping, a PoC também oferece a possibilidade de comparar latências em outros protocolos, como http e tcp, assim como o tempo de conversão de domínios em IP através de um resolvedor específico.

Nos planos, há uma tarefa para comparar o número de nós entre os hosts usando traceroute, para facilitar a localização de hosts com caminhos mais curtos.

O código é bruto, faltam várias verificações, mas funciona razoavelmente bem com dados limpos. Agradeceria qualquer feedback, estrelas no github, e se alguém gostou da ideia do projeto, fique à vontade para se tornar contribuinte.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster