Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

07 - Type 11 - Tempo Excedido (TTL=0)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

ICMP Type 11 - Tempo Excedido (TTL=0)

A mensagem ICMP Type 11 (Time Exceeded) é um sinal de erro crítico gerado por um roteador (ou o host de destino) para notificar a origem de que um datagrama IP foi descartado porque seu tempo de vida expirou.

Este mecanismo é a implementação do sistema de "autodestruição" de pacotes da internet. Ele é fundamental para manter a saúde da rede, impedindo que pacotes corrompidos ou mal roteados circulem eternamente, consumindo largura de banda e recursos de processamento. O valor no campo Code define especificamente como o tempo foi excedido, sendo o Code 0 (TTL Exceeded during Transit) o mais comum e o foco deste tópico.

1. Contexto Técnico e RFCs

Atributo Valor
RFC RFC 792 (1981)
Type ICMP 11
Codes possíveis 0 (TTL em trânsito), 1 (Reassembly timeout)
Resposta esperada Nenhuma (origem apenas descobre o erro)
Tipo Mensagem de erro (não-query)

2. O Mecanismo do TTL e o Disparo da Mensagem

Para entender o Type 11, é necessário recapitular o funcionamento do campo TTL (Time to Live) no cabeçalho IP (RFC 791):

  1. Origem: O host de origem define um valor inicial para o TTL. Valores típicos: 64 (Linux/macOS), 128 (Windows), 255 (roteadores Cisco).
  2. Trânsito: Cada vez que um datagrama passa por um roteador (um "hop"), o roteador decrementa o valor do TTL em 1.
  3. Verificação: O roteador verifica o novo valor antes de encaminhar o pacote.
    • Se TTL > 0: O roteador encaminha o pacote para o próximo salto.
    • Se TTL = 0: O roteador não pode encaminhar o pacote. Ele é obrigado a descartá-lo.

Ocorrendo o descarte por TTL = 0, o roteador gera e envia uma mensagem ICMP Type 11 de volta ao endereço IP de origem.

No IPv6: Hop Limit

No IPv6, o campo equivalente chama-se Hop Limit (8 bits) e funciona de forma idêntica. Quando atinge 0, o roteador envia um ICMPv6 Type 3, Code 0 (Hop Limit Exceeded in Transit, RFC 4443).

3. Códigos de Mensagem (Dentro do Type 11)

O campo Type define que é um erro de tempo excedido, mas o campo Code especifica a causa exata. Existem dois códigos relevantes:

Code Nome Cenário
0 Time to Live Exceeded in Transit TTL zerou em roteador intermediário (mais comum)
1 Fragment Reassembly Time Exceeded Timeout na remontagem de fragmentos no host destino
  • Code 0 - Time to Live Exceeded in Transit: Significa que o contador de saltos chegou a zero em um roteador intermediário. O pacote não chegou ao destino final; ele "morreu" no caminho.
  • Code 1 - Fragment Reassembly Time Exceeded: Ocorre no host de destino. Se um datagrama IP for fragmentado em vários pedaços, e o receptor receber o primeiro fragmento mas os outros não chegarem dentro de um tempo limite (geralmente 60 segundos, definido por IPTTL em SOs), ele descarta os fragmentos que tem e envia um ICMP Type 11, Code 1 para a origem. Este código é raro na prática moderna devido ao PMTUD e à fragmentação apenas na origem no IPv6.

4. Função Primária: Prevenção de Loops de Roteamento

A razão de existência do Type 11 Code 0 é combater Loops de Roteamento.

  • O Problema: Em redes complexas, erros de configuração ou convergência lenta de protocolos de roteamento dinâmico (OSPF, BGP, IS-IS) podem fazer com que dois roteadores apontem um para o outro como o melhor caminho para um destino. Um pacote entraria nesse ciclo infinito (Roteador A envia para Roteador B, B envia de volta para A).
  • A Solução: Como o TTL é decrementado a cada passagem, eventualmente ele chegará a zero.
  • O Resultado: O roteador detecta o loop (implícito pelo TTL zerado), mata o pacote e notifica a origem via ICMP Type 11. Isso impede que a internet fique congestionada com "pacotes zumbis" dando voltas eternamente.

Cenário de Loop Clássico

Roteador A → Roteador B → Roteador A → Roteador B → ... (loop infinito)

Sem TTL: cada pacote consumiria banda infinitamente.
Com TTL: após N hops (TTL inicial), pacote é descartado + ICMP Type 11 enviado à origem.

5. Função Secundária e Prática: O Traceroute

A mensagem ICMP Type 11 é o componente chave que permite o funcionamento da ferramenta de diagnóstico traceroute (ou tracert no Windows). O traceroute explora deliberadamente o mecanismo de TTL para mapear o caminho da rede.

Funcionamento Passo a Passo

  1. TTL = 1: A ferramenta envia um pacote (geralmente UDP porta 33434+ no Linux/macOS, ou ICMP Echo no Windows) com TTL = 1. O primeiro roteador decrementa para 0, descarta o pacote e envia um ICMP Type 11 de volta. O remetente aprende o IP do 1º salto e o RTT até ele.
  2. TTL = 2: A ferramenta envia um pacote com TTL = 2. O primeiro roteador decrementa para 1 e passa adiante. O segundo roteador decrementa para 0, descarta e envia o ICMP Type 11. O remetente aprende o IP do 2º salto.
  3. Iteração: O processo se repete incrementando o TTL até atingir o destino ou o limite máximo (geralmente 30 hops).
  4. Sucesso: Quando o pacote finalmente chega ao destino, o host não envia um "Time Exceeded", mas sim uma resposta específica:
    • Se foi enviado UDP: o host responde com ICMP Type 3, Code 3 (Destination Port Unreachable), pois a porta UDP usada não tem serviço escutando.
    • Se foi enviado ICMP Echo (Windows): o host responde com ICMP Type 0 (Echo Reply).
    • Isso sinaliza o fim da rota.

Sem o ICMP Type 11, seria impossível mapear visualmente a rota que os pacotes tomam através da internet.

Exemplo Prático

$ traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.1.1  0.451 ms  0.421 ms  0.401 ms
 2  100.64.0.1  8.123 ms  7.981 ms  8.012 ms
 3  10.0.0.1   15.234 ms 15.121 ms 15.001 ms
 4  * * *               ← Roteador silencioso (firewall dropou ICMP Type 11)
 5  8.8.8.8   22.001 ms 21.987 ms 22.012 ms

Cada linha representa um salto, e os três valores de tempo correspondem a três sondagens independentes para aquele hop.

6. Estrutura da Mensagem ICMP Type 11

Quando o roteador gera esta mensagem, ela contém informações vitais para a origem entender o erro:

Offset Campo Tamanho Conteúdo
0 Type 8 bits Valor 11
1 Code 8 bits 0 ou 1
2-3 Checksum 16 bits Soma de verificação ICMP
4-7 Unused 32 bits Zerados
8+ Internet Header + 64 bits of Original Data Variável Cabeçalho IP completo + 8 bytes de payload do pacote original

A inclusão do cabeçalho IP original + 64 bits de payload permite que o host de origem identifique exatamente qual processo ou conexão (baseado nas portas TCP/UDP dentro desses 64 bits) gerou o pacote que morreu, permitindo que o sistema operacional notifique a aplicação correta sobre o erro.

Importância dos 64 Bits de Payload

Os 64 bits (8 bytes) iniciais do payload do pacote original contêm, em TCP/UDP:
- Porta de origem (16 bits)
- Porta de destino (16 bits)
- Parte do Sequence Number (TCP) ou Length (UDP)

Isso é suficiente para o SO da origem correlacionar o pacote morto com uma conexão ativa e notificar a aplicação dona da conexão.

7. Causas Comuns de Recebimento de Type 11

Causa Sintoma Diagnóstico
Loop de roteamento TTL pequeno mesmo para destinos próximos Verificar tabelas de roteamento dos roteadores
Rota muito longa Apenas destinos distantes falham Verificar traceroute para identificar hop limite
TTL inicial muito baixo Pacotes grandes falham mas pequenos passam Aumentar TTL na origem (sysctl net.ipv4.ip_default_ttl)
Atividade de traceroute Spike periódico de Type 11 em monitoramento Normal, ignorar como erro
Ataque DoS (TTL exhaustion) Milhares de Type 11/segundo Mitigação via rate limiting ICMP

8. Segurança e Mitigações

Embora o Type 11 seja essencial para diagnóstico, ele também é explorado em ataques:

  • Network Reconnaissance: Atacantes usam variações de traceroute para mapear topologia interna de redes corporativas (descobrir IPs de roteadores internos).
  • Amplification (histórico): Em redes mal configuradas, roteadores enviavam Type 11 para endereços forjados, permitindo amplificação. Mitigado por RFC 1812 (roteadores validam origem antes de gerar ICMP).
  • Covert Channel: Type 11 pode ser usado para exfiltrar dados encapsulando informação no cabeçalho IP original retornado (técnica de tunneling ICMP).

Mitigações Comuns em Firewalls

# Linux iptables: rate limitar ICMP Type 11 (evitar DoS)
iptables -A INPUT -p icmp --icmp-type time-exceeded \
    -m limit --limit 5/s --limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j DROP

# Bloquear Type 11 externo (apenas interno diagnóstico)
iptables -A INPUT -p icmp --icmp-type time-exceeded -i eth0 -j DROP

9. Conclusão

A mensagem ICMP Type 11 (Time Exceeded) é um mecanismo de proteção essencial que impede loops infinitos na Internet, além de ser a base funcional da ferramenta traceroute, indispensável para diagnóstico de rotas. Embora a maioria dos usuários finais nunca veja essa mensagem explicitamente (é processada internamente pelo SO), ela é parte do "sistema imunológico" da Internet que mantém a rede saudável. Para engenheiros de redes, entender Type 11 e sua relação com TTL/Hop Limit é fundamental para diagnosticar desde loops de roteamento sutis até problemas de fragmentação, além de interpretar corretamente saídas de traceroute que identificam firewalls invisíveis (hops marcados com * * * indicam roteadores que silenciosamente dropam Type 11).