Traceroute

De Wiki BPF
Revisão de 17h52min de 28 de novembro de 2018 por Tiago.setti (discussão | contribs)
Ir para: navegação, pesquisa

O traceroute é uma das mais famosas ferramentas para pesquisa de falhas em redes IP. Praticamente todo sistema operacional já vem com ele embarcado de alguma forma e além disso existem dezenas de sites na Internet que você pode utilizar para realizar um "trace" para algum destino, inclusive de formal visual.

É uma ferramenta simples, mas, contudo, veja bem, poucas pessoas sabem realmente como usar e interpretar o resultado de um comando de traceroute. Nesse artigo tentaremos detalhar como ele funciona e esclarecer como interpretar corretamente o resultado.

Como funciona

Interpretando os nomes DNS

Entendendo a latência de cada nó

ICMP ou UDP

Roteamente assimétrico

Balanceamento de caminho

Impacto do MPLS

Como funciona

Basicamente você digita um endereço IP de destino e é mostrado uma lista de nós "hops" desde o primeiro roteador até o último no destino, e de vez em quando aparecem alguns asteriscos *

$ traceroute google.com
traceroute to google.com (74.125.236.132), 30 hops max, 60 byte packets
1 220.224.141.129 (220.224.141.129) 89.174 ms 89.094 ms 89.054 ms
2 115.255.239.65 (115.255.239.65) 109.037 ms 108.994 ms 108.963 ms
3 124.124.251.245 (124.124.251.245) 108.937 ms 121.322 ms 121.300 ms
4 * 115.255.239.45 (115.255.239.45) 113.754 ms 113.692 ms
5 72.14.212.118 (72.14.212.118) 123.585 ms 123.558 ms 123.527 ms
6 72.14.232.202 (72.14.232.202) 123.499 ms 123.475 ms 143.523 ms
7 216.239.48.179 (216.239.48.179) 143.503 ms 95.106 ms 95.026 ms
8 bom03s02-in-f4.1e100.net (74.125.236.132) 94.980 ms * 104.954 ms

Por trás desse resultado existe uma explicação técnica importante, de como a ferramenta traceroute utilizada de envio de dezenas de pacotes ICMP ou UDP para montar descobrir esse caminho do pacote.

Atenção: O comando de traceroute descobre o caminho unidirecional, ou seja, somente no sentido do host → para o → destino. 

TTL

Para entender o funcionamento do traceroute é importante antes entender o conceito de TTL (Time To Live).

"TTL é um acrónimo do inglês Time to Live, que significa o número de saltos entre máquinas que os pacotes podem demorar numa rede de computadores antes de serem descartados (máximo de 255).

Qualquer router está programado para descontar uma unidade do TTL aos pacotes que o atravessam. Esta é uma forma de evitar que os pacotes permaneçam na rede por tempo infinito, caso o routing não esteja a ser feito devidamente, como no caso de looping." [ref: https://pt.wikipedia.org/wiki/Time_to_Live]

Detalhamento o passo a passo

Basicamente o funcionamento do traceroute pode ser explicado assim:

  1. Um pacote ICMP ou UDP é enviado ao IP de destino com o cabeçalho contendo TTL = 1
  2. Todos os roteadores do caminho decrementam o TTL do pacote em 1
  3. Quando o pacote IP alcança o TTL = 0 , o pacote é descartado pelo roteador e uma mensagem de ICMP TTL Exceeded é enviada com destino a origem
  4. A origem recebendo esse pacote, está formada a primeira linha do resultado do comando traceroute mostrando o primeiro nó "hop"
  5. Repita a operação 1. com um TTL = 2 , e vai incrementando o TTL até que...
  6. O pacote alcançando o destino, é gerado um ICMP Unreachable (para traceroute com UDP) ou ICMP Echo Reply (para traceroute com ICMP) com destino a origem e o comando é concluído.

Diferenças do traceroute no Windows e no UNIX

As implementações mais comuns do comando utilizam pacotes UDP (UNIX) ou ICMP (Windows) para realizar um traceroute. Eventualmente é possível encontrar ferramentas que utilizam o TCP, mas são utilizadas para casos específicos.

UDP

Traceroute no UNIX usando UDP

ICMP

Traceroute no Windows usando ICMP