O que são Jumbo Frames, para que servem, quando usar e quando não usar?

folder_openSem Categoria
access_time

4 min

Update 2020: ajustes para o texto ficar mais didático e para as imagens terem maior coerência.

Dizemos que usamos Jumbo Frames ao alterar o MTU (Maximum Transmission Unit) da placa de rede dos 1500 bytes padrões para 9000 bytes.

Isso significa que o tamanho dos pacotes enviados pela interface de rede passa para 9000 bytes ao invés dos 1500 originais, ou seja, os pacotes ficam 6 vezes maiores.

O padrão original de 1500 bytes tem origem nos primórdios das interfaces de rede e da Internet, mais especificamente quando determinaram o padrão 10BASE-5 (10Mbits/s), e é mantido por compatibilidade com equipamentos mais antigos. Ao mesmo tempo que apenas as placas de rede mais recentes (de 1Gbit/s para cima) suportam jumbo frames.

Essa configuração é normalmente feita no Sistema Operacional, nas configurações da interface de rede, e nos Switches e Roteadores, também para cada interface.

A vantagem de usar um tamanho de pacote maior é diminuir o overhead relativo; um pacote TCP/IP em IPv4 tem 40 bytes de cabeçalho, usado para endereçar IPs, portas e outras opções de controle da conexão, isso nos cria o seguinte overhead:

Ou seja, utilizando os pacotes comuns, 2,66% do tráfego é apenas para os cabeçalhos, enquanto que usando jumbo frames representa apenas 0,44% do tráfego.

Em um exemplo real, na transmissão de um arquivo de 1Gbyte:

Na prática, uma conexão com jumbo frames usa até 6,1 vezes menos pacotes para transmitir a mesma quantidade de dados, exemplificando:

Com menos pacotes, o primeiro ganho é para o sistema operacional, que precisa processar menos pacotes, isso é extremamente benéfico em termos de uso de CPU.

O segundo ganho é o total de bytes transmitidos, que podemos calcular considerando o overhead:

Total de 23,4 Mbytes transferidos a menos usando jumbo frames, cerca de 2% a menos de tráfego.

A terceira diferença aparece no tempo de transmissão do arquivo, numa transmissão, em uma rede de 10Mbits/s temos:

Uma redução de 19 segundos no nosso exemplo, ou 2% a menos no tempo de transmissão usando jumbo frames versus pacotes comuns.

Quando usar?

Em um ambiente controlado, você pode ligar os jumbo frames (é necessário configurar no Switch e nas portas dos servidores) e fazer a configuração correta nos hosts.

Por exemplo, em uma SAN iSCSI o uso de jumbo frames são boa prática, mas também é boa prática que essas redes sejam isoladas da LAN comum.

É comum que essa rede transmita milhares de Gigabytes por dia, com isso, a diferença de menor uso de CPU e de tempo de rede passa a ser mais significativa ainda.

Quando não usar?

O principal problema de habilitar jumbo frames acontece ao comunicar com equipamentos que não tem os jumbo frames ligados.

Quando ocorre essa comunicação, o sistema operacional precisa renegociar o tamanho máximo de pacote daquela conexão; pra isso, é usado o PMTU, um protocolo baseado em ICMP.

Nesse exemplo, a primeira conexão iniciou-e com um pacote jumbo de 9000 bytes, mas recebeu um pacote de volta e reiniciou a conexão usando pacotes de 1500 bytes.

Isso causa um pequeno atraso no início da conexão.

Ao tentar transmitir um pacote com tamanho maior que o permitido para a Internet, o roteador de borda tem duas alternativas: renegociar o tamanho máximo de pacote usando PMTU, ou fragmentar ele mesmo o pacote, consumindo mais CPU:

A primeira opção é a mais comum, mas envolve mais tráfego de rede na negociação da conexão, causando um delay inicial. A segunda opção, ilustrada na figura acima, usa mais recursos do roteador, e dependendo da capacidade de CPU do mesmo, pode acabar causando lentidão ou perda de pacotes.

Pode acontecer também do servidor ou cliente ter pacotes ICMP bloqueados e nunca renegociar o PMTU, nesse caso, a conexão é interrompida:

Isso causa um fenômeno difícil de diagnosticar, com sintomas bem estranhos:

  • um site pode carregar normal, mas um download apresenta problemas;
  • recebe e envia e-mails pequenos, mas se tiver anexo não transmite;
  • a conexão estabelece, mas não consegue transferir dados.

Vale a pena usar Jumbo Frames?

Para apenas 2% de ganho? Sim quando falamos de ambientes de altíssima performance, como redes iSCSI, clusters de servidores ou ambientes de virtualização.

Esse ganho de 2% a menos de tráfego e 6 vezes menos pacotes também se refletem no uso de CPU, que pode consumir até 1Ghz de uso apenas para processar os pacotes, essa economia pode ser o suficiente para suportar mais algumas centenas de usuários.

Já, ao se comunicar com a Internet, em algum momento vai precisar executar o processo de PMTU, causando um delay inicial nas conexões e usando mais processamento, anulando o benefício inicial e algumas vezes gerando problemas difíceis de diagnosticar, por isso, na comunicação com a Internet ainda não é recomendado o uso de jumbo frames.

Related Posts

Menu