Como definir o MTU correto
Introdução ao MTU
- O que é MTU?
- Calcular o MTU
- Encontre o valor do MTU no Windows
- Alterando o MTU no Windows
- Encontre o valor do MTU no Linux
- Mudando o MTU no Linux
O que é MTU?
A Maximum Transmission Unit (MTU) (tamanho máximo da unidade de transferência) é um parâmetro que determina que o datagrama mais longo pode ser transmitido por uma interface IP sem precisar ser fragmentado em unidades menores. O MTU deve ser maior que o maior datagrama que você deseja transmitir sem ser fragmentado. Mais simplesmente, o MTU define o tamanho máximo (em bytes) do pacote que pode ser transmitido de uma só vez.- Para ethernet, esse valor deve ser de 1500 bytes.
- Para conexões PPPoE, 1492
- Para CTS (baixa velocidade), 576
Calcular o MTU
Cada quadro de transmissão é definido pelo corpo (= MMS = tamanho máximo do segmento) que define o maior segmento de informações TCP que podem ser transmitidas e o cabeçalho.- MTU = cabeçalhos MSS + TCP / IP
Considere isso:
- MSS = MTU-40 <- 40 para o cabeçalho (20 bytes IP e 20 bytes TCP)
Pacotes não são fragmentados
Nenhum pacote perdido
- Tamanho / velocidade do pacote
Ou uma transferência de informação de 1500000 bytes usando diferentes tamanhos de pacotes através de uma linha T1 (CTS) (T1 = 1544000 bits / seg) como segue:
(Cabeçalho MSS +) * 8 bits / byte---------------------------------- = Latência
1.544.000 bits / seg.
- Usando valores diferentes de MTU, pode-se calcular a latência da transmissão:
Se MTU = 1500, então: (1460 +40) * 8/1544000 = 7772 ms
Se MTU = 576, então: (536 +40) * 8/1544000 = 2924 ms
- Em 10 loops, obtemos 77, 72 ms para o MTU para 1500 e 29, 24 ms para o 576.
- Para resumir, quanto mais pacotes houver, mais tempo a transferência ;-)
Usando a mesma fórmula para a transferência de 1mb.
1MByte = 1024 KB = 1.048.576 bytes.
- Se MTU = 1500, então: (1460 +40) * 8/1544000 = 7772 ms
- 1 MByte / MSS = 1048576 bytes / 1460 = 718, 2, então 719 pacotes para transferir 1 MByte.
- Para transferir 1Mbyte: 719 ms 7772 * pacotes (sempre loop) = 5588.068 ms ou 5588 segundos.
- Se transferirmos nossos 1 MByte em 10 loops (definidos pelo cabeçalho), idealmente:
(1 loops de pacotes * 10 * 7, 772ms de atraso) + 718 * 7772 = 5658 segundos.
Se MTU = 576, então: (536 +40) * 8/1544000 = 2924 ms
1 MByte / MSS = 1048576 bytes / 536 = 1956.3, portanto, 1957 pacotes para transferir 1 MByte.
- Para transferir 1 MByte: 1957 pacotes * 2924 ms (sempre loop) = 5722.268 ms ou 5722 segundos por loop.
Se transferimos o 1 MByte em 10 loops:
(1 loops de pacote * 10 * 2, 924 ms) * 2924 + 1956 = 5748 seg.
A diferença é que a maior parte do tamanho do pacote é grande, menos a do cabeçalho é importante (relativamente ^ ^)
Então, para transferir 1Mbyte, se alguém usa um MTU para 1500, então há 719 * 40 = 28, 760 bytes para o cabeçalho, enquanto o MTU para 576, obtemos 1957 * 40 = 78, 280, mais de 49, 520 bytes de 'cabeçalho enviado Mbyte cada. Para o nosso exemplo de 10 loops, não é considerável, mas nas transferências diárias ...
A maioria dos modems usa um cabeçalho maior e não levamos em conta nem outras latências que possam estar associadas.
Encontre o valor do MTU no Windows
Para encontrar o MTU máximo, ele deve estar no prompt de comando (Iniciar> Executar> "cmd"). Uma vez no prompt de comando (página preta), é necessário testar o ping, indicando o tamanho dos pacotes a serem testados:- ping-fl (tamanho do pacote -28) (IP do seu servidor)
A opção -f permite que você faça o teste exigindo que os roteadores encontrados não fragmentem o pacote
A opção -l envia o tamanho do pacote
A remoção de 28 para o tamanho do pacote a ser testado corresponde ao cabeçalho deste pacote
Devemos fazer o teste em um IP. Para o navegador da Internet, é melhor ter um endereço da web.
- Isto dá:
ping-fl 1372 192.168.0.1- Se a resposta para a consulta for:
Resposta de 192.168.0.1: bytes = 1372 ....
Resposta de 192.168.0.1: bytes = 1372 ....
Resposta de 192.168.0.1: bytes = 1372 ....
Resposta de 192.168.0.1: bytes = 1372 ....
Aqui o tamanho do pacote permite transportar sem fragmentação, pode-se testar um valor maior. Quando você receber a mensagem: "O pacote deve ser fragmentado, mas o conjunto DF", o tamanho do pacote é muito grande.
Alterando o MTU no Windows
Depois de determinar o MTU ideal, existem duas maneiras de alterar o valor do MTU. Eu menciono aqui o mais fácil de implementar, através do software:- DrTCP
Uma vez instalado, você tem uma caixa "MTU", onde você deve inserir o valor do teste no DOS, adicionando 28 para o cabeçalho.
Encontre o valor do MTU no Linux
- Apenas execute este comando como root com nome_interface para substituir pelo nome da interface de rede em questão:
interface_name ifconfig | grep-Eo "MTU: [0-9] +"
Mudando o MTU no Linux
- Em root com o comando ifconfig que altera o MTU no Linux com a seguinte sintaxe:
interface_name ifconfig mtu value_mtu
- Exemplo: defina o MUT da interface para 1500
ifconfig eth0 mtu 1500