Redes > O que é e como configurar Jumbo Frame

2805 Views
Tempo de leitura: 6 Minutos 
Atualizado em:

Pacotes TCP possuem por padrão 1500 byte. Ao transmitirmos arquivos entre dois pontos, usamos uma indeterminada quantidade de pacotes TCP. Cada um desses pacotes é aberto pelo sistema operacional, examinado e processado. Esse fluxo demanda recursos do sistema como CPU e memória. Quanto mais pacotes, maior consumo de recursos e maior tempo de transferência.

Mas como otimizar essa comunicação proporcionando menor consumo de recursos e, de quebra, menores tempos de transferência de arquivos? É aqui que entra o Jumbo Frame.

Neste artigo veremos o que é Jumbo Frame, o que é MTU, como consultar MTU, dicas e cuidados para evitar dores de cabeça e como testar o suporte a Jumbo Frame.

Aproveite e se inscreva na nossa newsletter e/ou feed RSS para ficar por dentro de materiais como este. Bora lá.

O que é Jumbo Frame

O Jumbo Frame é o nome dado a configuração de MTU que aumenta a quantidade de byte por pacote TCP. Ao invés de usarmos os 1.500 byte, podemos setar valores diferentes como os 3.000 e 9.000 destacados no exemplo abaixo:

O aumento da quantidade de byte por pacote diminuirá a quantidade de pacotes TCP trocados entre os sistemas, mas também diminuirá, consequentemente, a quantidade de ciclos de CPU para processamento desses pacotes resultando em menor consumo de recursos e menor tempo de transferência de arquivos.

O que é MTU

MTU, portanto, é a configuração que determina a quantidade de byte por pacote TCP e por interface de rede. Ou seja, pode-se ter diferentes valores de MTU no sistema, sendo um valor por interface de rede. A sigla MTU significa Maximum Transmission Unit ou Unidade Máxima de Transmissão.

O padrão de 1.500 byte por pacote TCP é intergalático, mas não é uma regra. Algumas placas Wireless, por exemplo, usam MTU de 1492.

Não basta apenas modificar o valor de MTU

Não basta trocar o valor de MTU e achar que tudo será melhor. O Jumbo Frame só funciona se houver suporte de ponta a ponta. Ao mudar sua configuração sem que haja suporte de ponta a ponta, pode e irá perder pacotes TCP, resultando em problemas de comunicação como lentidão e/ou indisponibilidade. Ou seja, é preciso que todos equipamentos envolvidos na comunicação possua esse suporte.

Como verificar o valor de MTU no Linux

<

p align=”justify”>Vamos verificar o valor atual da MTU. Podemos fazer isso com os comandos ip e ifconfig. Veremos como fazê-lo com cada um desses comandos.

  • Verificando a configuração de MTU usando o comando ip:
  • ip link list | grep --color mtu

    Teremos uma saída de tela similar a esta:

  • Verificando a configuração de MTU usando o comando ifconfig:
  • ifconfig | grep --color mtu

    A saída de tela será similar a esta:

    Alterando o valor de MTU no Linux. Modo volátil.

    A configuração pode ser feita de forma volátil ou persistida. Ou seja, em memória ou em disco. Veremos, primeiro, como fazer a configuração em memória usando os comandos ip e ifconfig:

    Lembrando que não é preciso usar os dois comandos; usa-se um ou outro. Aqui estamos mostrando como fazer isso por ambos, mas utilize aquele que preferir.

    Lembrando também que esta alteração refletirá somente enquanto o sistema estiver ligado. O ser reiniciado, a configuração será perdida. Para não perder, é preciso persití-la.

  • Alterando o valor de MTU usando o comando ip:
  • ip link set mtu VALOR dev INTERFACE-DE-REDE

    Substitua VALOR pelo valor desejado para a MTU e INTERFACE-DE-REDE pelo nome da interface, como neste exemplo:

    ip link set mtu 1492 dev wlan0
  • Alterando o valor de MTU usando o comando ifconfig:
  • ifconfig INTERFACE-DE-REDE mtu VALOR

    Novamente, substitua VALOR pelo valor desejado para a MTU e INTERFACE-DE-REDE pelo nome da interface, como neste exemplo:

    ifconfig wlan0 mtu 1492
    Ao rodar o comando acima, caso receba a mensagem “Error: mtu greater than device maximum“, significa que seu hardware não suporta valores altos de MTU.

    Alterando o valor de MTU no Linux. Modo persistido.

    <

    p align=”justify”>Agora vamos configurar o sistema para persistir a mudança da MTU. Tanto para Debian, Debian-like como Ubuntu, Mint e outros, quanto para Red Hat e Red Hat-Like como CentOS, Oracle Linux e outros, basta acrescentar uma linha na configuração da interface de rede, sendo:

    Debian, Ubuntu e Mint:

    mtu valor

    Exemplo: Editando arquivo /etc/network/interfaces

    iface eth0 inet static
        address 192.168.0.1
        network 192.168.0.0
        gateway 192.168.0.254
        netmask 255.255.255.0
        mtu 1492

    Redhat, Oracle Linux, CentOS e OpenSuse

    Exemplo: Editando arquivo /etc/sysconfig/network-script/ifcfg-eth0

    MTU:valor
    DEVICE=eth0
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.0.1
    NETMASK=255.255.255.0
    MTU=1492

    Para que essas alterações passem a valer imediatamente, é preciso reiniciar a rede ou ao menos descer (ifdown) e subir (ifup) a interface alterada.

    Cuidado para não reiniciar uma interface de um servidor remoto e perder acesso ao servidor. Caso não tenha opção e precise subir a configuração, recomendo que faça primeiro a mudança em memória e depois persista em disco. Isso descartaria a necessidade de reinício.

    Testando Jumbo Frame com o comando ping

    O teste consiste em pingar o destino usando pacotes com a quantidade de bytes que usamos na MTU. Nos exemplos a seguir, veremos se nosso destino possui suporte a MTU 9.000.

  • No Mac:
    1. ping -D -s 8184 192.168.10.100
  • No Linux:
    1. ping -M do -s 8972 192.168.10.100
  • No Windows:
    1. ping -f -l 9000 192.168.10.100

    Por padrão o Mac não suporta MTU 9000. O Linux não encapsula pacotes ICMP, então a conta é 9.000 – 28 byte do ICMP.

    Diagnosticando

    A saída esperada para o Ping será similar a esta:

    8192 bytes from 192.168.10.100: icmp_seq=0 ttl=128 time=0.512 ms

    Isso indica que o destino suporta Jumbo Frame.

    No entanto, caso receba mensagem diferente desta, há algum problema ocorrendo.

    Message too long

    A mensagem acima significa que sua conexão não suporta Jumbo Frame. Nesse caso, precisará revê-la.

    Request timeout for icmp_seq

    Já a mensagem acima pode significar duas coisas:

      1 – ICMP bloqueado no firewall do destinatário;
      2 – Não há suporte a Jumbo Frame.

    Na certeza de não se tratar de um firewall bloqueando ICMP, é certo que não há suporte a Jumbo Frame no destino.

    Resumo

    Jumbo Frame se usado corretamente pode te render muitas alegrias e ótimo desempenho na troca de arquivos, mas se mal configurado pode te dar umas dores de cabeças bem chatas. Todo cuidado é pouco, mas o resultado, quando positivo, é muito satisfatório. Muito usado na comunicação entre servidor e storage, gera ganhos consideráveis na disposição de nossas infras.

    Grande abraço e até a próxima.

    5 - 0

    Thank You For Your Vote!

    Sorry You have Already Voted!