O que é MTU – Maximum Transmission Unit

MTU – Maximum Transmission Unit

Existe um limite no tamanho dos dados transmitidos em uma rede que limita a quantidade de bytes que podem ser transmitidos em um único quadro. Para quadros padrão Ethernet esse limite é de 1500 bytes e para quadros 802.3 é de 1492 bytes. Esse limite, que é uma característica da camada de enlace, é conhecido como MTU, “Maximum Transmission Unit“, ou “Unidade de Transmissão Máxima”, e existe em diversos tipos de redes, não apenas redes locais Ethernet.

Quando um datagrama a ser enviado em uma rede for maior do que o MTU da camada de enlace, o protocolo IP realizará a fragmentação dos dados, quebrando o datagrama em pedaços menores, chamados de fragmentos, cada um com tamanho menor do que o MTU.

Veja na tabela a seguir os valores típicos de MTU (consultados no RFC 1191, Path MTU Discovery e outras fontes) usados em vários tipos de redes comuns:

Rede MTU (em bytes)
Hyperchannel 65535
WLAN 802.11 7981
Quadros Jumbo Ethernet 1501 – 9198
Tonken Ring 802.5 4464
FDDI 4352
Ethernet 1500
IEEE 802.3 / 802.2 1492
PPPoE 1492
X.25 576

Podemos descobrir o MTU usado nas interfaces de rede de um computador que rode o Windows executando o comando netsh no prompt, como segue:

netsh interface ipv4 show subinterfaces

Comando netsh mostrando o MTU das interfaces no Windows

Já no Linux basta usar o comando ifconfig:

ifconfig

Comando ifconfig no Linux mostrando o MTU

 

Path MTU

Quando dois hosts estão se comunicando entre si através de múltiplas redes, cada trecho de rede pode ter um MTU diferente devido ás diversas tecnologias envolvidas em uma transmissão de dados de longa distância. Desta forma, o MTU das redes onde os hosts estão conectados não é tão importante quanto o menor MTU de qualquer trecho por onde os pacotes trafeguem entre esses dois hosts. Damos a esse MTU o nome de Path MTU (Caminho MTU). O caminho MTU é, portanto, o menor valor de MTU do caminho desde o endereço de origem até o endereço de destino. Assim, o caminho MTU é o maior valor que pode trafegar nessa rede sem que os pacotes sofram fragmentação.

O valor do caminho MTU entre dois hosts não é necessariamente constante. Ele depende da rota que está sendo usada no momento. Além disso, o roteamento não precisa ser simétrico, de modo que o Path MTU não precisa ser o mesmo em ambas as direções – do host A para o host B e vice-versa.

Path MTU Discovery

A descoberta de caminho MTU é uma técnica que permite determinar o caminho MTU ideal entre dois hosts IP para evitar a fragmentação adicional dos datagramas IP. Essa técnica consiste em ligar o bit DF (Don´t Fragment) do cabeçalho IP dos datagramas transmitidos.

Quando um dispositivo no caminho desse datagrama tiver um MTU menor do que o datagrama, esse pacote será descartado e será enviada a mensagem ICMP “Destino Inalcançável (Pacote muito grande)” de volta ao transmissor, contendo o MTU desse dispositivo. Essa informação permite que o host transmissor reduza o MTU da transmissão de forma apropriada. O processo se repete até que seja descoberto o menor MTU que permite a transmissão de dados pelo caminho todo sem que haja fragmentação.

Testando o MTU do caminho

Podemos testar o MTU do caminho entre dois hosts usando o comando ping. Para isso trabalharemos co duas opções do ping (válidas para sistemas Windows):

-l tamanho-pacote Permite ajustar o tamanho (payload) do pacote enviado pelo ping para o valor tamanho-pacote

-f  Habilita o bit DF no pacote transmitido (impedindo a fragmentação do pacote).

Vamos a um exemplo. Primeiramente, vamos usar o ping para testar a conectividade com o site www.bosontreinamentos.com.br, porém enviando um pacote com 1500 bytes de tamanho:

ping -l 1500 bosontreinamentos.com.br

Ping na bóson com payload de 1500 bytes

Os pacotes foram enviados e recebemos a resposta como esperado. Porém, vamos agora desativar a fragmentação do pacote com a opção -f e tentar novamente enviar o payload de 1500 bytes:

ping -l 1500 -f bosontreinamentos.com.br

Ping na bóson com bit DF desativado e payload de 1500 bytes

Note que agora recebemos uma mensagem de erro dizendo que o pacote precisa ser fragmentado, mas a desfragmentação está ativa. Portanto, os 1500 bytes do payload do pacote fizeram com que o MTU do quadro fosse ultrapassado.

Caso queira realizar o teste em uma máquina Linux, use as opções como segue:

-M do  Não fragmentar o pacote

s tamanho-pacote justar o tamanho (payload) do pacote enviado pelo ping para o valor tamanho-pacote

Veja o resultado em um computador com Kali Linux:

Ping na Bóson com payload de 1500 e bit DF desativado no Linux

O tamanho máximo de payload que consegui transmitir na rede com a fragmentação desativada foi de 1472 bytes – lembrando que o MTU da rede é de 1500 bytes:

Payload mínimo transmitido em uma rede Windows MTU

É isso aí! Aprendemos nessa lição o que é um MTU e sua importância para a transmissão de dados em uma rede. Até a próxima lição!

Sobre Fábio dos Reis (1420 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

1 Trackbacks & Pingbacks

  1. Curso de Redes - Mensagens ICMP do tipo Destino Inalcançável

Escreva um comentário

Seu e-mail não será divulgado


*