O que é MTU?
Na área das redes, a unidade máxima de transmissão (MTU) é uma medida que representa o maior pacote de dados que um dispositivo conectado à rede aceitará. É semelhante a um limite de altura para passagens inferiores ou túneis em autoestradas: veículos que excedem esse limite não podem passar, tal como pacotes que excedem o MTU de uma rede não podem atravessá-la.
Contudo, ao contrário dos veículos, pacotes de dados que excedem o MTU são divididos em partes menores para que possam passar. Este processo chama-se fragmentação. Os pacotes fragmentados são reagrupados quando chegam ao destino.
O MTU é medido em bytes — um “byte” equivale a 8 bits de informação, ou seja, 8 uns e zeros. O tamanho máximo do MTU é 1.500 bytes.
O que é um pacote?
Todos os dados enviados pela Internet são divididos em partes menores chamadas pacotes. Por exemplo, quando uma página web é enviada de um servidor web para o computador portátil de um utilizador, os dados da página viajam pela Internet como uma série de pacotes. Os pacotes são depois reagrupados na página original e completa pelo computador portátil.
Os pacotes de dados têm duas partes principais: o cabeçalho e a carga útil. O cabeçalho contém informações sobre os endereços de origem e destino do pacote, enquanto a carga útil é o conteúdo real do pacote. Pense no cabeçalho como uma etiqueta de envio anexada a um pacote, e na carga útil como o conteúdo do pacote. (Ao contrário dos pacotes, os pacotes na Internet têm múltiplos cabeçalhos anexados por diferentes protocolos de rede.)
O MTU é geralmente utilizado em referência a pacotes de camada 3*, ou pacotes que utilizam o Protocolo de Internet (IP). O MTU mede o pacote como um todo, incluindo todos os cabeçalhos e a carga útil. Isto inclui o cabeçalho IP e o cabeçalho TCP (Protocolo de Controlo de Transmissão), que geralmente somam 40 bytes de comprimento.
*O modelo OSI divide as funções que tornam a Internet possível em 7 camadas; a camada 3 é a camada de rede, onde ocorre o encaminhamento (routing).
Quando os pacotes se fragmentam?
Quando dois dispositivos de computação estabelecem uma ligação e começam a trocar pacotes, esses pacotes são encaminhados por várias redes. É necessário considerar não apenas o MTU dos dois dispositivos nas extremidades de cada comunicação, mas também todos os routers, switches e servidores no caminho. Pacotes que excedem o MTU em qualquer ponto da rede são fragmentados.
Suponha que o Servidor A e o Computador A estão ligados, mas os pacotes de dados que enviam um ao outro têm que passar pelo Router B e pelo Router C no percurso. O Servidor A, o Computador A e o Router B têm um MTU de 1.500 bytes. No entanto, o Router C tem um MTU de 1.400 bytes. Se o Servidor A e o Computador A não tiverem conhecimento do MTU do Router C e enviarem pacotes de 1.500 bytes, todos os seus pacotes de dados serão fragmentados pelo Router B em trânsito.
A fragmentação adiciona um pequeno grau de latência e ineficiência às comunicações de rede, por isso deve ser evitada, se possível. (Equipamentos de rede desactualizados podem ser vulneráveis a ataques de negação de serviço que exploram a fragmentação, como o ataque “ping da morte”.)
Como funciona a fragmentação?
Todos os routers de rede verificam o tamanho de cada pacote IP que recebem em relação ao MTU do próximo router que receberá o pacote. Se o pacote exceder o MTU do próximo router, o primeiro router divide a carga útil em dois ou mais pacotes, cada um com os seus próprios cabeçalhos.
Cada novo pacote tem um cabeçalho copiado do pacote original (para que todos os pacotes tenham os endereços IP de origem e destino originais, etc.) com algumas alterações importantes. O router edita certos campos no cabeçalho IP para indicar que os pacotes são fragmentados e requerem remontagem, quantos pacotes existem e em que ordem estão a ser enviados.
Imagine que uma empresa de entregas está a lidar com um pacote que excede os limites de peso de uma das suas instalações. Em vez de se recusar a entregar o pacote, a empresa divide o conteúdo do pacote em três pacotes menores. A empresa também duplica a etiqueta de envio para cada pacote e adiciona uma nota indicando que cada pacote é uma parte de uma série que deve chegar junto — o primeiro pacote é 1 de 3, o segundo é 2 de 3, etc. (Tal abordagem por uma empresa de entregas seria uma violação de privacidade, por isso não deveria ocorrer no mundo real.)
Quando a fragmentação não é possível?
Em certos casos, pacotes não podem ser fragmentados e, portanto, não serão entregues se excederem o MTU de qualquer router ou dispositivo ao longo do caminho da rede:
- A fragmentação não é permitida no IPv6. O IPv6 é a versão mais recente do Protocolo de Internet, embora o IPv4 ainda seja amplamente utilizado. Routers que suportam IPv6 irão descartar quaisquer pacotes IPv6 que excedam o MTU, porque não podem ser fragmentados.
- A fragmentação também não é possível quando a flag “Não Fragmentar” está activado no cabeçalho IP de um pacote.
O que é a flag “Não Fragmentar” num cabeçalho IP?
Pense no cabeçalho IP como sendo semelhante a um formulário que os consumidores preenchem ao enviar um pacote para alguém. O formulário indica o endereço de origem, o endereço de destino, a urgência da entrega e outras instruções especiais para os trabalhadores de entrega.
A flag “Não Fragmentar” é uma instrução especial para routers, uma opção que pode ser seleccionada no “formulário” de um cabeçalho IP. Quando a flag é definido, o pacote anexado não pode ser fragmentado.
Qualquer router que receba o pacote analisará o cabeçalho e verificará a flag Não Fragmentar. Se a flag estiver activado e o pacote exceder o MTU, o router então descarta o pacote em vez de o fragmentar.
Além de descartar o pacote, o router envia de volta uma mensagem ICMP para a origem do pacote. Uma mensagem ICMP é um pacote de dados muito pequeno que envia uma atualização de estado. Neste caso, basicamente diz: “Este router ou dispositivo não conseguiu entregar estes pacotes porque eram demasiado grandes e não podiam ser fragmentados.”
O que é a descoberta de MTU de caminho?
A descoberta de MTU de caminho, ou PMTUD, é o processo de descobrir o MTU de todos os dispositivos, routers e switches num caminho de rede. Se o Computador A e o Servidor A do exemplo acima utilizassem PMTUD, identificariam os requisitos de MTU do Router B e ajustariam o tamanho dos seus pacotes de acordo para evitar a fragmentação.
O PMTU funciona de maneira ligeiramente diferente dependendo se os dispositivos ligados estão a usar IPv4 ou IPv6:
- IPv4: O IPv4 permite fragmentação e, portanto, inclui a flag Não Fragmentar no cabeçalho IP. O PMTUD no IPv4 funciona enviando pacotes de teste ao longo do caminho da rede com a flag Não Fragmentar activado. Se algum router ou dispositivo ao longo do caminho descartar o pacote, ele envia de volta uma mensagem ICMP com o seu MTU. O dispositivo de origem reduz o seu MTU e envia outro pacote de teste. Este processo é repetido até que os pacotes de teste sejam pequenos o suficiente para atravessar todo o caminho da rede sem serem descartados.
- IPv6: Para o IPv6, que não permite fragmentação, o PMTUD funciona de maneira muito semelhante. A principal diferença é que os cabeçalhos IPv6 não têm a opção Não Fragmentar e, portanto, a flag não é definido. Routers que suportam IPv6 não fragmentam pacotes IPv6, então, se os pacotes de teste excederem o MTU, os routers descartam os pacotes e enviam de volta mensagens ICMP correspondentes sem verificar a flag Não Fragmentar. O PMTUD no IPv6 envia pacotes de teste cada vez menores até que os pacotes possam atravessar todo o caminho da rede, tal como no IPv4.
O que é MSS?
MSS significa tamanho máximo de segmento. O MSS é usado pelo TCP na camada 4 da Internet, a camada de transporte, em vez da camada 3. O MSS está apenas preocupado com o tamanho da carga útil dentro de cada pacote. Ele é calculado subtraindo o comprimento dos cabeçalhos TCP e IP do MTU.
Enquanto pacotes que excedem o MTU de um router são fragmentados ou descartados, pacotes que excedem o MSS são sempre descartados.