04 - MTU - Maximum Transmission Unit
video: https://youtu.be/... no frontmatter da nota.MTU - Maximum Transmission Unit
1. Definição Operacional
A MTU (Maximum Transmission Unit) é o tamanho máximo, em bytes, do payload (campo de dados) que uma camada de rede pode encapsular em um único quadro para transmissão pelo meio físico. Na pilha TCP/IP, a MTU determina o maior datagrama IP que pode ser entregue sem fragmentação sobre uma tecnologia de enlace específica.
A MTU não inclui o cabeçalho do quadro de enlace (ex.: 18 bytes de cabeçalho+trailer Ethernet com 802.3 + 802.1Q + FCS). Ela inclui apenas o datagrama IP completo, desde o byte 0 do cabeçalho IP até o último byte de payload da camada superior.
2. Valores Canônicos por Tecnologia
| Tecnologia | MTU (bytes) | Observação |
|---|---|---|
| Ethernet (802.3 clássico) | 1500 | RFC 894 (1984) — valor hegemônico na internet |
| Ethernet Jumbo Frames | 9000 | Padrão de facto, não padronizado pelo IEEE, dominante em datacenters |
| IEEE 802.11 (Wi-Fi) | 2304 | Payload MAC, antes de criptografia |
| PPP (ponto-a-ponto) | 1500 | Default; negociado em LCP |
| PPPoE (ADSL residencial) | 1492 | Subtrai 8 bytes de cabeçalho PPPoE |
| IPv6 over everything | 1280 | RFC 8200 §5 — mínimo obrigatório |
| IPv4 mínimo obrigatório | 576 | RFC 791 |
| Hyperchannel (FDDI) | 4352 | Obsoleto |
| Token Ring (16 Mbps) | 17914 | Obsoleto |
| InfiniBand | 2048 (default IPoIB-CM) | Aplicações HPC |
Path MTU (PMTU)
A Path MTU é a menor MTU entre todos os enlaces no caminho origem-destino. Um pacote maior que a PMTU deve ser fragmentado em IPv4 ou descartado em IPv6 (com retorno de ICMPv6 Packet Too Big). A Path MTU Discovery (PMTUD) — RFC 1191 (IPv4) e RFC 8201 (IPv6) — descobre esta restrição sem precisar fragmentar.
3. Fragmentação de Pacotes IP
IPv4
O cabeçalho IPv4 contém três campos relevantes:
- Identification (16 bits): Identificador comum a todos os fragmentos do mesmo datagrama.
- Flags (3 bits): Bit 0 reservado; Bit 1 DF (Don't Fragment) — se 1, descarta e retorna ICMP Type 3 Code 4; Bit 2 MF (More Fragments) — se 1, há mais fragmentos.
- Fragment Offset (13 bits): Posição em unidades de 8 bytes. Máximo: $2^{13} \times 8 = 65.536$ bytes.
A restrição do offset em múltiplos de 8 bytes implica que a payload de cada fragmento intermediário deve ser múltipla de 8 bytes.
Cálculo dos Fragmentos — Exemplo
Considere um datagrama IP de 4000 bytes (20 cabeçalho + 3980 payload) que precisa atravessar enlace com MTU = 1500. Cada fragmento tem $1500 - 20 = 1480$ bytes de payload IP. Como 1480 é divisível por 8, é aceitável.
| Fragmento | Header | Payload | Offset | MF | Total |
|---|---|---|---|---|---|
| 1 | 20 | 1480 | 0 | 1 | 1500 |
| 2 | 20 | 1480 | 185 | 1 | 1500 |
| 3 | 20 | 1020 | 370 | 0 | 1040 |
Note que Offset é em unidades de 8 bytes: $1480/8 = 185$, $2960/8 = 370$.
IPv6 — Sem Fragmentação no Caminho
O IPv6 removeu os campos de fragmentação do cabeçalho base (40 bytes). A fragmentação só ocorre na origem, mediante cabeçalho de extensão Fragment Header (RFC 8200 §4.5). Roteadores intermediários não fragmentam datagramas IPv6 — se o datagrama excede a MTU de saída, é descartado e ICMPv6 Packet Too Big é enviado à origem.
Esta escolha de projeto foi motivada por:
- Performance: Roteadores não processam fragmentação no caminho (cada pacote é encaminhado a custo fixo).
- Segurança: Ataques de fragmentação overlapping são eliminados (RFC 1858).
- Simplicidade: Cabeçalho de tamanho fixo facilita hardware accelerators.
4. Por que a Fragmentação é Prejudicial
A máxima de Kent e Mogul (RFC 1191): "Fragmentação é funcionalidade; overhead de fragmentação é patologia."
- Loss Amplification: Se $N$ fragmentos são gerados, a perda de qualquer um invalida o datagrama inteiro. Para $N=10$ fragmentos e taxa de perda por pacote $p=1\%$:
A perda aparente é ~10x a perda por enlace.
-
Reassembly Overhead: Receptor aloca buffer proporcional ao datagrama original, com timeout (RFC 791: 30-60s default). Ataques de fragmento contínuo podem exaurir memória.
-
Stateful Filtering Complexity: Firewalls precisam reassemblar ou inspecionar todos os fragmentos para aplicar regras L7. Ataques clássicos (RFC 1858) exploravam overlaps maliciosos.
-
Performance de Cache: Roteadores modernos operam em flow cache (CEF, MPLS). Fragmentos não compartilham o mesmo flow key, causando cache miss e queda para slow path.
-
TCP Throughput Collapse: TCP adapta-se ao tamanho do pacote; fragmentar implicitamente reduz a taxa efetiva sem que o TCP saiba (mais ACKs por unidade de dado útil).
5. Path MTU Discovery (PMTUD)
Funcionamento (IPv4, RFC 1191)
- Origem envia pacotes com DF=1 e tamanho inicial igual à MTU da interface de saída.
- Se um roteador no caminho precisar enviar por uma interface com MTU menor, descarta o pacote e envia ICMP Type 3 Code 4 (Fragmentation Needed, DF Set), com a MTU do próximo salto no campo "Next-Hop MTU".
- Origem ajusta sua PMTU cache para a MTU informada e reenvia.
Funcionamento (IPv6, RFC 8201)
Idêntico, mas o ICMP de erro é ICMPv6 Type 2 Packet Too Big. Não há bit DF — todo pacote IPv6 é implicitamente DF.
PMTUD Black Hole Problem
Muitas redes mal configuradas bloqueiam todos os ICMP, sob pretexto de segurança. Isto quebra PMTUD:
- TCP envia segmento de 1500 bytes com DF=1.
- Roteador intermediário descarta (MTU < 1500) e gera ICMP, que é bloqueado.
- Origem nunca recebe o aviso; TCP retransmite o mesmo segmento, gerando loop.
Mecanismo moderno: PLPMTUD (Packetization Layer PMTUD, RFC 4821) não depende de ICMP — prova tamanhos menores através de confirmações em camada superior (ACK TCP) e ajusta progressivamente.
6. TCP Maximum Segment Size (MSS) e Clamping
Como TCP conhece a MTU, ele anuncia o MSS (Maximum Segment Size) na SYN:
Roteadores residenciais PPPoE realizam MSS Clamping: interceptam pacotes TCP SYN e reescrevem o MSS de 1460 para 1452, prevenindo fragmentação sem depender de PMTUD.
7. Jumbo Frames em Datacenters
Em datacenters, o uso de Jumbo Frames (MTU 9000) reduz:
- Header overhead: De 1,3% (1500 bytes) para 0,2% (9000 bytes).
- Interrupções por byte transferido: 6x menor.
- CPU de protocolo offload: Melhor aproveitamento de TSO/GSO/LRO.
Em 10 Gbps Ethernet, o ganho prático é ~10-15% de throughput para fluxos grandes. Em 100 Gbps, o ganho é maior porque a frequência de intempções domina o custo de processamento.
O impedimento é a heterogeneidade: Jumbo Frames não atravessam a internet pública (MTU 1500), o que pode causar PMTUD problems. Por isso, Jumbo Frames são restritos a:
- SAN (Storage Area Network) iSCSI — adotado massivamente.
- Intra-datacenter East-West — adotado massivamente.
- Backbone entre datacenters — ocasionalmente, com PMTUD funcional.
8. Diagnóstico Prático
# Verificar MTU da interface
ip link show dev eth0
# Testar PMTU (envia pacotes com DF=1)
ping -M do -s 1472 example.com # 1472 + 8 ICMP + 20 IP = 1500
# Em IPv6
ping -6 -M do -s 1452 example.com # 1452 + 48 ICMPv6 + 40 IPv6 = 1540
# Descobrir PMTU via traceroute
traceroute -F example.com # -F = Don't Fragment
Em ambientes com túneis, subtraia overhead do túnel: GRE 24 bytes; IPsec Transporte 50-70 bytes; IPsec Túnel 70-90 bytes.