Além dos aplicativos e programas que temos instalados no desktop ou notebook, existem opções mais simples visualmente, mas extremamente úteis e poderosas, via linha de comando.
Uma dessas ferramentas, pouco conhecidas pela maioria dos usuários e que pode ajudar a identificar problemas de desempenho ou mesmo de acesso à Internet, é o comando traceroute.
Entender o que é o traceroute, como ele funciona e que tipo de conclusões você pode obter, é nosso objetivo hoje.
O que é o traceroute?
O traceroute é um comando presente na maioria dos sistemas operacionais mais populares e que permite tirar conclusões sobre o tráfego de dados entre dois pontos de uma rede local ou de um destino na Internet, como um site, por exemplo, exibindo informações do caminho de roteamento entre dois dispositivos de rede ou de Internet.
O caminho de roteamento é o caminho físico da conexão de dois roteadores, pelos quais os dados trafegam até seu destino.
Ele é um programa, tal como muitos que você tem instalado, exceto que ele não é executado em uma janela própria em um ambiente gráfico, como o KDE Linux e cujos recursos são acessíveis por um clique de mouse.
A sua execução se dá pelo que se conhece por linha de comando, tal como acontecia antes dos sistemas operacionais com interface gráfica.
No caso do Windows, ele é acessível pela janela de prompt de comando e nos sistemas oriundos o Unix, como as muitas distribuições Linux, na janela de terminal.
O que faz o traceroute?
Traceroute é resultado da junção de trace (vestígio) e route (rota) e, portanto, exibe os vestígios ou indicadores da rota que os dados percorrem entre dois pontos de uma rede ou entre diferentes redes, que é o caso de um acesso a algum site da Internet.
Em termos físicos, quando você acessa um site qualquer, a requisição para o acesso a partir do seu navegador e o retorno das informações contidas nas páginas do site, percorre vários trechos intermediários até o destino.
É semelhante ao que acontece quando você faz uma viagem de carro de São Paulo à Fortaleza, por exemplo.
Não há uma estrada única que liga as duas cidades. No caminho, você muda de estradas algumas vezes, passando por outras cidades e acessando interligações entre as muitas rodovias.
Na Internet, os dados trafegam de modo semelhante. Existem cabos que conectam as diferentes redes que compõem a World Wide Web, como se fossem as rodovias que ligam as cidades. No caso das “estradas de dados”, os roteadores fazem o papel das cidades ou das interligações entre diferentes estradas.
Como o nome faz supor, de modo bem resumido, o roteador é um hardware que é responsável por direcionar ou estabelecer a rota que os dados devem seguir até seu destino. O modem fornecido pelo seu provedor de acesso, é também um roteador e graças a ele os dados do site acessado, chegam ao seu notebook ou smartphone.
Assim, quando você executa o traceroute, um pacote de dados percorre todos esses cabos, passando pelos diferentes roteadores que há no caminho, até chegar ao destino, informando os respectivos endereços IPs de cada roteador e o tempo gasto para percorrer entre cada um.
É como dizer que você foi ao Rio de Janeiro, saindo de São Paulo, mas passou por São José dos Campos, Caraguatatuba, Ubatuba, Angra dos Reis, Volta Redonda, Petrópolis e finalmente Rio de Janeiro e os tempos de percurso entre cada uma das cidades.
Se eventualmente houve um problema na estrada que liga Caraguatatuba e Ubatuba, fazendo-o gastar uma hora a mais do que normalmente seria necessário, sabe-se que essa rota tem um problema e onde ele está ocorrendo.
Ou seja, a avaliação dos tempos entre cada salto – como é denominada cada conexão entre dois roteadores – exibida na saída do traceroute, permite saber se há problemas na rota e que pode ser a explicação para a lentidão ou mesmo a inacessibilidade de um site.
Como funciona o traceroute?
Entender como funciona o traceroute, não é essencial para descobrir eventuais problemas no acesso a um determinado site, por exemplo, mas ajuda a interpretar possíveis problemas.
Consideremos uma rota simples e curta, com apenas três saltos até o destino e que já basta para compreender seu funcionamento.
Antes porém, é preciso conhecer um parâmetro usado por ele, que é o TTL (Time To Live) e que é o “tempo de vida”.
O valor do TTL consta no cabeçalho do pacote de dados e que é subtraído em uma unidade ao passar por cada roteador, de forma que ao atingir o valor zero, o pacote é descartado, evitando assim que na eventualidade de algum problema de roteamento, pacotes fiquem trafegando indefinidamente e congestionando a rede.
Ao executar o comando, um primeiro pacote é enviado ao destino passando pelo primeiro roteador e o TTL é definido como 1. O roteador quando recebe o pacote, decrementa em uma unidade o TTL, zerando-o e por essa razão, descartando o pacote.
Por meio do protocolo de Internet ICMP, o roteador envia uma mensagem para a origem de que o “tempo foi excedido” e informando também seu endereço IP.
Com o endereço IP do primeiro roteador ou do primeiro salto, um novo pacote é enviado, mas com TTL igual a 2.
Ao passar pelo primeiro roteador, é subtraído 1, resultando em um TTL com valor 1, que é recebido no segundo roteador e que também efetua o decremento de uma unidade, zerando o Time To Live e assim, descartando o pacote e respondendo ao comando traceroute que o “tempo foi excedido” e informando também seu endereço IP.
Nesse ponto já há dois saltos e, portanto, dois roteadores e seus respectivos IPs.
Esse processo repete-se para tantos saltos quantos forem necessários, até um limite de 30 saltos ou até chegar ao IP de destino, que diferente dos saltos anteriores, responde por ICMP com a mensagem de “Porta Inalcançável”.
No caso Windows, as mensagens ICMP são diferentes e são do tipo “Echo Reply”, para indicar o destino.
O comando mede o tempo em milissegundos entre o momento em que um pacote é enviado e o recebimento da resposta por parte de um roteador ou do destino e o informa junto com o número do salto e o endereço IP.
Note que aparecerão três colunas com o tempo, pois o processo todo descrito acima é feito com três pacotes para cada salto, para que se tenha um tempo médio (Round-trip time ou RTT) e para a eventualidade de alguma perda de pacotes.
Como interpretar o resultado do traceroute?
Não há um tempo padrão para cada salto, os quais podem variar em função de uma série de fatores, mas na maioria das vezes, é algo entre 15 e 30 milissegundos.
Acima de 30 milissegundos, já se começa a considerar acima da média, mas se ocorre com apenas um dos três pacotes, pode ser considerado normal. No entanto, acima disso para todos os pacotes, é indicativo de que há algum problema no salto relativo àquele roteador cujo IP consta associado.
A tendência nesses casos, é que todos os saltos seguintes também tenham tempos maiores.
Se em vez de um tempo, é exibido um asterisco, o tempo máximo padrão de 5 segundos foi excedido e, portanto, também é sinal de que há um problema naquele trecho da rota.
Usando a analogia da viagem de automóvel entre São Paulo e Rio de Janeiro, o trecho entre Caraguatatuba e Ubatuba, foi o responsável pela demora na viagem.
Da mesma forma que no exemplo, o acesso a um destino na Web pode se dar por diferentes caminhos. A impossibilidade de chegar ao Rio de Janeiro, não necessariamente significa que há um problema no destino, mas em algum ponto no caminho.
O mesmo viajante que dirige para outra cidade e que não passa pelo trecho com problema, chegará sem atrasos.
Como usar o traceroute?
Há pequenas diferenças no uso do comando para usuários Windows e de sistemas operacionais baseados em Unix (MacOS ou Linux).
No Windows abre-se uma janela de prompt de comando, pressionando-se a tecla do Windows + R e digitando CMD. A seguir digita-se “tracert -d” (sem aspas) e o IP ou domínio do destino.
No MacOS, o terminal consta como opção do Launchpad. No Linux, pode variar de acordo com a distribuição. Seja em um ou no outro, o comando é ““traceroute -d” (sem aspas) e o IP ou domínio do destino.
Tanto no Windows, como no MacOS e Linux, o atributo “-d” pode ser emitido, mas nesse caso será resolvido para um nameserver o IP correspondente a cada salto, aumentando em muito o tempo de execução do comando. Não sendo necessária essa informação, recomenda-se usá-lo.
Por fim, algumas distribuições Linux podem não ter o traceroute por padrão, mas a sua instalação é simples e também por meio de linha de comando. Por exemplo, no caso do Ubuntu, usa-se:
sudo apt-get update
sudo apt-get install traceroute
Conclusão
O comando traceroute é ferramenta importante de diagnóstico que exibe informações da rota de acesso a um ponto de uma rede ou a um destino na Internet.