Selecionando os nós mais próximos na rede

Selecionando os nós mais próximos na rede

A latência da rede tem um impacto significativo no desempenho de aplicações ou serviços que interagem com a rede. Quanto menor a latência, maior o desempenho. Isso vale para qualquer serviço de rede, desde um site normal até um banco de dados ou armazenamento de rede.

Um bom exemplo é o Sistema de Nomes de Domínio (DNS). O DNS é por natureza um sistema distribuído, com nós raiz espalhados por todo o planeta. Para simplesmente acessar qualquer site, primeiro você precisa obter seu endereço IP.

Não descreverei todo o processo de passagem recursiva pela “árvore” de zonas de domínio, mas me limitarei ao fato de que, para converter um domínio em um endereço IP, precisamos de um resolvedor DNS que fará todo esse trabalho para nós.

Então, onde você consegue o endereço do resolvedor DNS?

  1. O ISP fornece o endereço do seu resolvedor DNS.
  2. Encontre o endereço de um resolvedor público na Internet.
  3. Escolha o seu próprio ou use aquele integrado ao seu roteador doméstico.

Qualquer uma dessas opções permitirá que você desfrute de uma navegação despreocupada na World Wide Web, mas se você precisar converter um grande número de domínios em IP, deverá abordar a escolha de um resolvedor com mais cuidado.

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

Quando a lista é pequena, você pode facilmente fazer “ping” manualmente e comparar os tempos de atraso, mas se você pegar a lista mencionada acima, essa tarefa se torna desagradável.

Portanto, para facilitar essa tarefa, eu, cheio da síndrome do impostor, esbocei uma prova de conceito da minha ideia no Go chamada chegar mais perto.

Por exemplo, não verificarei a lista completa de resolvedores, mas me limitarei apenas aos mais 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]

Certa vez, quando estava escolhendo um resolvedor para mim, limitei-me a verificar apenas os endereços principais (1.1.1.1, 8.8.8.8, 9.9.9.9) - afinal, eles são tão bonitos, e o que você pode esperar deles endereços de backup feios.

Mas como existe uma forma automatizada de comparar atrasos, por que não expandir a lista...

Como o teste mostrou, o endereço Cloudflare de “backup” é mais adequado para mim, pois está conectado ao spb-ix, que é muito mais próximo de mim do que o msk-ix, que tem o lindo 1.1.1.1 conectado a ele

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

Além do ping simples, o PoC também tem a oportunidade de comparar atrasos de outros protocolos, como http e tcp, bem como o tempo de conversão de domínios para IP através de um resolvedor específico.

Existem planos para comparar o número de nós entre hosts usando traceroute para facilitar a localização de hosts que possuem um caminho mais curto para eles.

O código é rudimentar, faltam várias verificações, mas funciona muito bem com dados limpos. Eu apreciaria qualquer feedback, estrelas em githabe, e se alguém gostou da ideia do projeto, seja bem-vindo para se tornar um colaborador.

Fonte: habr.com

Adicionar um comentário