Jumbo Frames Mito Vs Realidade E Quando Usar

      21 de outubro de 2025 Elena Kovacs 13 min de leitura
      Jumbo Frames Mito Vs Realidade E Quando Usar

      São 2 da manhã de uma terça-feira. O alerta no PagerDuty toca com uma daquelas mensagens vagas que fazem qualquer sysadmin experiente suspirar: "Latência alta n...

      Compartilhar:

      Jumbo Frames Mito Vs Realidade E Quando Usar

      São 2 da manhã de uma terça-feira. O alerta no PagerDuty toca com uma daquelas mensagens vagas que fazem qualquer sysadmin experiente suspirar: "Latência alta no cluster de banco de dados" ou "Aplicação web carregando parcialmente".

      Você loga no servidor. O SSH conecta instantaneamente. O load average está baixo. A memória está livre. Você dá um ping no servidor de aplicação vizinho: resposta em sub-milissegundos. Tudo parece perfeito.

      Mas quando você tenta fazer um curl ou um wget para baixar um arquivo grande, a conexão inicia e... congela. O cursor pisca, zombando de você. O telnet na porta 80 funciona. O handshake TCP completa. Mas assim que os dados reais começam a fluir, a conexão entra em um estado de coma.

      Bem-vindo ao inferno do MTU Mismatch.

      Em algum lugar entre o seu servidor e o destino, alguém configurou Jumbo Frames (MTU 9000) em uma ponta, mas esqueceu um switch no meio do caminho com MTU 1500. Ou pior: o firewall está bloqueando pacotes ICMP "Fragmentation Needed", quebrando o mecanismo de descoberta de MTU (PMTUD).

      Historicamente, nós aceitávamos esse risco operacional em troca de performance. A promessa do MTU 9000 era sedutora: menos interrupções de CPU, maior throughput, menos overhead. Mas estamos em uma nova era de hardware. As placas de rede (NICs) de hoje são computadores completos.

      A tese deste artigo é direta, mas polêmica: Para 95% das cargas de trabalho modernas, Jumbo Frames são um débito técnico desnecessário. A tecnologia de Hardware Offloading (TSO, LSO, GRO) tornou a otimização de MTU irrelevante para a CPU, deixando você apenas com a dor de cabeça do gerenciamento de rede.

      Vamos desmontar esse mito, camada por camada.

      A Matemática da Eficiência (O Sonho Antigo)

      Para entender por que Jumbo Frames foram criados, precisamos voltar a uma época em que CPUs de 500MHz lutavam para saturar um link de 1Gbps.

      O padrão Ethernet define o MTU (Maximum Transmission Unit) em 1500 bytes. Isso significa que o maior pacote de dados que pode trafegar na rede, incluindo cabeçalhos IP e TCP, é de 1.5 KB.

      Vamos olhar para a estrutura de um pacote TCP/IP sobre Ethernet. Cada pacote carrega uma "taxa fixa" de bytes que não são seus dados:

      1. Ethernet Header + FCS: 18 bytes (14 cabeçalho + 4 checksum)
      2. IP Header: 20 bytes
      3. TCP Header: 20 bytes (mínimo)
      4. Inter-frame Gap + Preamble: 20 bytes (nível físico)

      Total de overhead por pacote: ~78 bytes (variável dependendo de opções TCP/IP e camada física, mas vamos simplificar).

      Se você envia 1500 bytes, cerca de 97% é carga útil (payload). Se você aumenta o MTU para 9000 bytes (Jumbo), o overhead permanece fixo, mas a carga útil explode. A eficiência sobe para mais de 99%.

      A teoria da eficiência: Comparação da proporção entre Payload e Overhead (cabeçalhos) em quadros padrão vs. Jumbo.

      Parece ótimo, certo? Menos pacotes para enviar a mesma quantidade de dados. Mas a verdadeira motivação nunca foi a largura de banda. O cabo de rede não se importa se 3% dele é cabeçalho.

      O gargalo real era a Interrupção de CPU.

      O Custo da Interrupção

      Cada vez que um pacote chega na placa de rede, a NIC gera uma interrupção de hardware (IRQ). A CPU precisa parar o que está fazendo, salvar o contexto, processar o pacote, copiar os dados da memória da placa para a RAM (DMA) e voltar ao trabalho.

      Em um link de 1Gbps saturado com MTU 1500:

      • ~82.000 pacotes por segundo.
      • ~82.000 interrupções por segundo.

      Isso triturava as CPUs antigas. Ao mudar para MTU 9000, você reduzia o número de pacotes por um fator de 6:

      • ~13.000 pacotes por segundo.
      • CPU feliz, sysadmin feliz.

      Esse era o modelo mental de 2005. Se você ainda pensa assim hoje, você está otimizando para um problema que o hardware já resolveu para você.

      A Revolução Silenciosa: TSO, LSO e GRO

      Enquanto debatíamos configurações de switch, os fabricantes de NICs (Intel, Mellanox, Broadcom) e os desenvolvedores do Kernel Linux implementaram uma mágica chamada Offloading.

      A ideia é simples: a CPU é cara e genérica; a NIC é barata e especializada. Por que a CPU deveria perder tempo fatiando dados em pedaços de 1500 bytes?

      O Modelo Mental do "MTU Virtual"

      Imagine que o Kernel do Linux não vê mais a rede como uma série de pacotes de 1500 bytes. Graças ao TSO (TCP Segmentation Offload), o sistema operacional mente para si mesmo. Ele acredita que pode enviar um pacote de 64KB (65.536 bytes) de uma só vez.

      O fluxo acontece assim:

      1. Aplicação (Nginx/Postgres): Escreve 64KB no socket.
      2. TCP Stack (Kernel): Não fragmenta. Ele cria um "super-pacote" de 64KB.
      3. Driver da NIC: Recebe esse bloco gigante. A CPU gastou apenas uma operação para processar 64KB.
      4. A NIC (Hardware): Aqui acontece a mágica. O chip da placa de rede pega esse bloco de 64KB e o fatia em pacotes de 1500 bytes na velocidade do fio (wire-speed), calcula os checksums e os cospe no cabo.

      Do ponto de vista da CPU, você já está usando Jumbo Frames gigantescos de 64KB. O trabalho pesado de segmentação foi terceirizado para o silício da placa de rede.

      O impacto do TSO: Como o Hardware Offloading moderno anula a vantagem de economia de CPU que o MTU 9000 oferecia historicamente.

      A Sopa de Letras do Offloading

      Para diagnosticar problemas ou tunar performance, você precisa distinguir essas siglas. Use ethtool -k <interface> para ver o estado delas.

      Sigla Nome Completo Onde Acontece? Função Impacto na CPU
      TSO TCP Segmentation Offload Envio (TX) A NIC fatia grandes buffers em pacotes MTU. Massivo. A CPU trabalha menos.
      LSO Large Send Offload Envio (TX) Termo genérico para TSO. Mesmo do TSO.
      GSO Generic Segmentation Offload Envio (TX) - Software Se a NIC não suporta TSO, o Kernel emula isso logo antes do driver. Médio. Adia a segmentação até o último momento.
      LRO Large Receive Offload Recebimento (RX) - Hardware A NIC junta pacotes recebidos em um "super-pacote" antes de dar a interrupção. Massivo. Mas quebra roteamento/bridging (não use em roteadores).
      GRO Generic Receive Offload Recebimento (RX) - Software Versão segura do LRO feita pelo Kernel. Junta pacotes logo após a interrupção. Alto. Padrão ouro para recebimento hoje.

      Por que isso mata o argumento do MTU 9000?

      Se você habilitar Jumbo Frames (MTU 9000) em um servidor moderno com TSO ativado, o que muda para a CPU?

      • Com MTU 1500 + TSO: O Kernel envia um bloco de 64KB para a NIC. A NIC divide em ~44 pacotes de 1500 bytes.
      • Com MTU 9000 + TSO: O Kernel envia um bloco de 64KB para a NIC. A NIC divide em ~7 pacotes de 9000 bytes.

      A diferença de trabalho para a CPU é zero. O Kernel entregou o mesmo bloco de 64KB em ambos os casos. A economia de interrupções no recebimento (RX) também é mitigada pelo GRO, que agrupa os pacotes de entrada antes que a stack TCP precise lidar com eles individualmente.

      O único ganho real que sobra para o MTU 9000 é a redução do overhead de cabeçalho no fio (aqueles 3% vs 0.5%). Em um link de 10Gbps, isso te dá teóricos ~250Mbps a mais. Vale a pena o risco de quebrar sua rede?

      O Campo Minado: Quando o Jumbo Falha

      A fragilidade dos Jumbo Frames reside na necessidade de consistência fim-a-fim.

      Para que uma conexão MTU 9000 funcione, cada dispositivo no caminho deve suportá-la e estar configurado corretamente:

      1. NIC do Servidor A
      2. Switch Top-of-Rack A
      3. Switch Core / Spine
      4. Roteadores intermediários
      5. Switch Top-of-Rack B
      6. NIC do Servidor B

      Se um desses dispositivos estiver com MTU 1500, o pacote é descartado. Não há negociação automática de MTU na camada Ethernet. É um valor estático.

      O Mecanismo de Falha: PMTUD e o Buraco Negro

      Teoricamente, o IP resolve isso com fragmentação ou PMTUD (Path MTU Discovery). Quando um roteador encontra um pacote de 9000 bytes que precisa passar por um link de 1500 bytes, e o bit "Don't Fragment" (DF) está setado (padrão na maioria dos tráfegos TCP modernos), o roteador descarta o pacote e envia um ICMP Type 3, Code 4 ("Fragmentation Needed") de volta ao remetente, dizendo: "Ei, diminua seu MTU para 1500".

      O problema? Firewalls paranoicos.

      Muitos administradores de segurança bloqueiam todo tráfego ICMP por "segurança". Se esse pacote ICMP for bloqueado, o servidor remetente nunca saberá que precisa diminuir o tamanho do pacote. Ele continuará reenviando o pacote de 9000 bytes, que continuará sendo dropado silenciosamente.

      O resultado é a conexão zumbi:

      1. Handshake TCP (SYN/ACK): Funciona, pois são pacotes pequenos (60 bytes).
      2. Request HTTP/SQL: Funciona, pacote pequeno.
      3. Response (Dados): Falha. O servidor tenta enviar um pacote cheio, o buraco negro o engole. A aplicação fica esperando (hang) até o timeout.

      Diagnóstico de Combate: Interpretando os Sinais

      Como saber se você é vítima de um problema de MTU ou se o Offload está funcionando? Esqueça as GUIs. Vamos para o terminal.

      1. Verificando o Offload

      Primeiro, saiba o que sua placa está fazendo.

      # Linux
      ethtool -k eth0 | grep -i segmentation
      # Saída esperada:
      # tcp-segmentation-offload: on
      #    tx-tcp-segmentation: on
      #    tx-tcp-ecn-segmentation: on
      #    tx-tcp6-segmentation: on
      

      Se estiver on, sua CPU está protegida, independente do MTU.

      2. O Teste Definitivo: Ping com DF Bit

      O comando mais importante do seu arsenal. Vamos tentar forçar um pacote através da rede com o bit "Don't Fragment" ativado.

      Cenário: Você quer testar se o caminho suporta MTU 9000. Lembre-se da matemática: MTU = Payload ICMP + 8 bytes (ICMP Header) + 20 bytes (IP Header). Então, para testar MTU 9000, o payload deve ser 8972 bytes.

      # Linux
      ping -M do -s 8972 192.168.10.5
      
      # Windows
      ping -f -l 8972 192.168.10.5
      

      Interpretação:

      • Sucesso: O caminho inteiro suporta Jumbo Frames.
      • "Message too long" (Local): Sua própria interface está configurada com MTU menor que 9000.
      • Timeout (Sem resposta): O perigo real. O pacote saiu, mas foi dropado no caminho e nenhum erro ICMP retornou. Você tem um Black Hole.
      • "Packet needs to be fragmented but DF set" (Remoto): O PMTUD está funcionando! Um roteador no caminho respondeu que não aguenta o tamanho.

      3. Detectando Falhas Silenciosas

      Se você suspeita de problemas intermitentes, olhe para as estatísticas de IP e TCP.

      # Verifique contadores de fragmentação e erros de PMTU
      nstat -az | grep -E 'IpFrag|Pmtu'
      

      Procure por incrementos em:

      • IpReasmFails: O servidor está recebendo fragmentos mas falhando em remontá-los (comum em redes de alta velocidade onde fragmentos chegam fora de ordem ou o buffer estoura).
      • TcpExtPmtuDiscoveryFailures: O kernel detectou que o PMTUD falhou (ex: detectou retransmissões massivas sem resposta ICMP).

      4. Tcpdump: Vendo o MSS

      O TCP decide o tamanho do pacote durante o handshake através da opção MSS (Maximum Segment Size). MSS = MTU - 40 (cabeçalhos IP+TCP).

      tcpdump -i eth0 -nn "tcp[tcpflags] & (tcp-syn) != 0"
      

      Se você ver um MSS de 8960 no SYN, as máquinas estão tentando falar Jumbo. Se logo depois você ver muitas retransmissões e nenhum dado fluindo, você confirmou o diagnóstico.

      O Veredito: Quando (Realmente) Usar Jumbo Frames

      Depois de toda essa crítica, existe algum lugar para o MTU 9000? Sim. Mas é um nicho, não o padrão.

      O Cenário Ideal: Storage Dedicado (SAN/NAS)

      Se você tem uma rede dedicada para iSCSI, NFS ou vMotion, isolada fisicamente ou via VLAN, onde você controla cada porta de switch e cada placa de rede, Jumbo Frames ainda brilham.

      Por que?

      1. Throughput Bruto: Em links de 40Gbps ou 100Gbps, aqueles 3% de eficiência de cabeçalho se tornam gigabits reais de dados.
      2. Latência de Armazenamento: Storage arrays se beneficiam de receber payloads maiores e contíguos com menos processamento de cabeçalho L2.
      3. Ambiente Controlado: Não há "internet" no meio, nem firewalls desconhecidos, nem roteadores de terceiros. A chance de quebra de PMTUD é mínima.

      O Cenário Obrigatório: Overlay Networks (VXLAN / Geneve)

      Este é o uso moderno mais crítico. Em ambientes de Cloud e Kubernetes, usamos redes de sobreposição (Overlay). O pacote original (MTU 1500) é encapsulado dentro de um pacote UDP (VXLAN). Isso adiciona 50 bytes de cabeçalho extra.

      Se a sua rede física (Underlay) for MTU 1500, o pacote VXLAN terá 1550 bytes e será fragmentado. Fragmentação em tunelamento mata a performance. Solução: Configure a rede física com MTU 9000 (ou pelo menos 1600) para que ela possa carregar confortavelmente os pacotes encapsulados de 1500 bytes sem fragmentar.

      Matriz de Decisão

      Cenário Veredito Justificativa
      Tráfego Web / App (LAN) MTU 1500 TSO/GRO resolvem a CPU. O risco de misconfiguration não compensa.
      Tráfego Internet (WAN) MTU 1500 A Internet é MTU 1500. Não lute contra isso.
      Storage (iSCSI/NFS) MTU 9000 Ganhos marginais de throughput e latência. Ambiente controlado.
      Backup / Data Mover MTU 9000 Transferências longas e massivas se beneficiam da redução de overhead.
      Virtualização (Underlay) MTU 9000 Necessário para evitar fragmentação de pacotes encapsulados (VXLAN).

      A Complexidade é o Inimigo

      A engenharia é a arte do trade-off. Ao habilitar Jumbo Frames, você está trocando compatibilidade e simplicidade por eficiência teórica.

      Com NICs modernas de 10/25/100GbE e processadores multicore poderosos, o gargalo raramente é o processamento de pacotes por segundo, a menos que você seja o Google ou a Netflix. O gargalo geralmente é a aplicação, o disco, ou o banco de dados.

      Antes de sair alterando o MTU da sua infraestrutura inteira, faça a si mesmo três perguntas:

      1. Meu ethtool mostra que TSO/GRO estão ativos?
      2. Eu controlo todos os switches e roteadores no caminho?
      3. Eu tenho um problema de performance comprovado que o Jumbo Frames vai resolver?

      Se a resposta para qualquer uma for "não" ou "não sei", mantenha o padrão 1500. A melhor configuração de rede é aquela que você não precisa depurar às 3 da manhã.


      Para aprofundar

      A discussão não termina aqui. Vale a pena investigar como o eBPF e o XDP (eXpress Data Path) estão mudando o jogo novamente, permitindo processamento de pacotes no kernel antes mesmo de alocar estruturas de metadados pesadas (sk_buff), tornando a discussão de MTU ainda mais irrelevante para performance de firewall e roteamento em software. Mas isso é assunto para outro incidente.

      #Storage #Server
      Elena Kovacs

      Elena Kovacs

      Arquiteta de Cloud Infrastructure

      Focada em NVMe-oF e storage definido por software. Projeta clusters de petabytes para grandes provedores de nuvem.