Trace rota
Traceroute é a ferramenta de diagnóstico que expõe a geografia oculta da Internet. Digite um comando e receba uma lista de todos os roteadores que seus pacotes atravessam no caminho para um destino. Ele funciona por causa de um recurso obscuro do protocolo IP – o campo Time To Live – e vem encontrando problemas de rede há trinta anos.
O corpo completo do artigo é fornecido em inglês abaixo.
Traceroute revela a sequência de saltos entre você e um destino. Cada linha na saída é um roteador; o tempo de ida e volta informa a latência desse roteador. Quando algo na Internet está lento ou quebrado, o traceroute geralmente é a primeira ferramenta pronta para uso.
Como funciona: o truque TTL
Cada pacote IP tem um campo Time To Live (TTL), originalmente destinado a evitar que os pacotes circulem para sempre em loops de roteamento. Cada roteador diminui o TTL em um. Quando o TTL chega a zero, o roteador descarta o pacote e envia de volta uma mensagem ICMP "Time Exceeded" para a origem.
Traceroute transforma isso em arma:
- Envie um pacote para o destino com TTL=1. O primeiro roteador diminui para 0, descarta-o e responde com "Time Exceeded" - revelando-se como salto 1.
- Send TTL=2. O primeiro roteador diminui para 1 e encaminha; o segundo roteador diminui para 0, cai, responde - revelando o salto 2.
- Continue incrementando até chegar ao destino, que responde com outra coisa (uma porta inacessível ou uma resposta real do aplicativo).
A resposta do destino é como o traceroute sabe como parar. Três testes por salto é o padrão, e é por isso que você vê três medições RTT por linha.
Os três tipos de testes
Diferentes implementações de traceroute enviam diferentes tipos de testes:
- UDP traceroute (Unix clássico): envia pacotes UDP para números de porta altos. O destino responde com “porta inacessível”. Padrão no Linux/macOS.
- ICMP traceroute (tracert do Windows): envia pacotes de solicitação de eco ICMP. O destino responde com Echo Reply. Melhor comportamento através de alguns firewalls.
- TCP traceroute: envia TCP SYN para uma porta específica (geralmente 80 ou 443). Útil quando um destino descarta UDP e ICMP, mas aceita TCP em uma porta conhecida.
A ferramenta certa depende de qual caminho os firewalls descartam. tcptraceroute geralmente tem sucesso onde traceroute falha.
Lendo a saída
Uma linha típica:
5 ae1.cr1.fra4.de.example.net (172.16.50.1) 18,234 ms 18,012 ms 17,998 msO número do salto, o nome e IP do roteador e, em seguida, três medições RTT. Os asteriscos * * * significam que o roteador não respondeu — ou ele descartou a sonda, respondeu ICMP com taxa limitada ou foi configurado para não se identificar. Os asteriscos são normais e não significam necessariamente um problema; muitos roteadores de backbone deliberadamente não respondem ao traceroute.
O que os saltos dizem a você
Os nomes DNS dos roteadores são carregados de significado. ae1.cr1.fra4.de informa: pacote Ethernet de agregação 1, roteador principal 1, site 4 de Frankfurt, Alemanha. Os engenheiros de rede podem ler esses nomes como placas de veículos e informar qual operadora possui o caminho, em qual cidade o pacote está e até mesmo qual fornecedor de equipamento (Cisco vs Juniper vs Arista) a operadora usa.
Um desvio geográfico inesperado – pacotes para um destino de Frankfurt passando por Cingapura – geralmente significa uma decisão política de BGP em vez de um corte físico de fibra. O roteamento abaixo do ideal acontece constantemente e não é necessariamente um problema.
O problema do caminho assimétrico
Traceroute mostra apenas o caminho de saída. O caminho de retorno pode ser — e muitas vezes é — completamente diferente, porque cada AS escolhe seu próprio roteamento de saída. Um RTT alto em um salto pode significar um link lento ou pode significar que o link lento está no caminho de retorno daquele salto. Sem traceroute do destino de volta para você, você não pode dizer.
É por isso que "traceroute parece bom, mas minha latência é terrível" é uma situação comum. A sonda está explorando o caminho em uma direção por vez.
Alternativas modernas: ferramentas MTR e estilo mtr
MTR (My Traceroute) é um traceroute contínuo - ele executa ping em cada salto em um loop e mostra estatísticas de execução: RTT médio, porcentagem de perda, jitter. Muito mais útil para diagnosticar problemas intermitentes do que um traceroute único. WinMTR no Windows, mtr no Unix, PathPing como alternativa integrada ao Windows.
Para diagnosticar um caminho que você não possui, o RIPE Atlas e os servidores de espelho operados pelas principais redes permitem executar o traceroute a partir de um ponto de vista remoto - inestimável para a compreensão de rotas assimétricas.
Limitações e peculiaridadesRoteadores compatíveis com
MPLS podem ocultar saltos ao não diminuir o TTL em uma nuvem MPLS. Redes com balanceamento de carga podem mostrar caminhos diferentes em testes consecutivos, fazendo com que a saída pareça caótica. A limitação da taxa ICMP em roteadores ocupados pode produzir leituras falsas de "salto lento" que não refletem o desempenho real do plano de dados. O RTT dos roteadores intermediários mede o tempo para o plano de controle daquele roteador , que geralmente é mais lento que o plano de dados através do mesmo roteador. Use traceroute como uma dica, não uma métrica.
Perguntas frequentes
- Por que meu traceroute atinge '* * *' em alguns saltos?
- O roteador existe, mas não respondeu à investigação. Motivos comuns: limitação de taxa ICMP, política de firewall que elimina respostas com TTL excedido ou decisão do operador de tornar o roteador invisível. Os pacotes ainda estão passando; você simplesmente não consegue ver esses saltos.
- O traceroute funciona através de uma VPN?
- Sim, mas o rastreamento começa na saída da VPN, não na sua localização real. Os primeiros saltos que você normalmente veria (seu roteador doméstico, seu ISP) são substituídos pelo salto único no túnel VPN. O rastreamento se torna uma visualização da rede do provedor VPN e de seu caminho subsequente.
- Por que o traceroute mostra caminhos diferentes cada vez que o executo?
- Muitas redes grandes fazem balanceamento de carga do tráfego em vários caminhos de custo igual, e a chave de balanceamento de carga inclui campos de pacote. Testes diferentes fazem hash para caminhos diferentes e você vê a união. Ferramentas como o Paris-traceroute mantêm a chave de balanceamento de carga constante para produzir uma saída estável.
- O que significa um aumento repentino na latência em um salto?
- Pode ser um link congestionado, um plano de controle lento nesse roteador específico (provavelmente) ou um caminho de retorno assimétrico. Observe os saltos subsequentes – se o RTT for semelhante, o pico é um congestionamento real; se o RTT cair, o pico foi o plano de controle do roteador demorando para responder.
- Existe uma ferramenta que combina traceroute e ping contínuo?
- MTR (mtr no Unix, WinMTR no Windows). Ele faz ping em cada salto em um loop e mostra estatísticas de execução – RTT médio, porcentagem de perda de pacotes, desvio padrão. Muito mais útil que o traceroute vanilla para problemas intermitentes.