O que estou entendendo mal sobre o cálculo do MTU?

14

Ok, acabei de resolver um problema de jumbo-frames entre alguns Xserves, um Netgear GSM7224 e um Drobo B800i. Descobriu-se que os Xserves (Mac OS X 10.6.8 Server) e o Drobo B800i aceitam o MTU em bytes como normalmente esperado (1500-9000), mas o Netgear parece ter desejado isso, incluindo os vários cabeçalhos / rodapés de Ethernet (reboques ) e eu finalmente terminei com o Xserves & Drobo configurado com uma MTU de 9000 e as portas Netgear definidas como uma MTU de 9216.

Usei os seguintes comandos para testar e verificar a MTU entre os dois Xserves no Netgear (Nota: estes são os comandos do Mac OS X, os do Windows e Linux são diferentes):

ping -D -s <mtu> <ip_address>

traceroute -F <ip_address> <mtu>

O uso do modelo anterior é anotado na manpágina como "Especifique o número de bytes de dados a serem enviados. O padrão é 56, que se traduz em 64 bytes de dados ICMP quando combinado com os 8 bytes de dados do cabeçalho ICMP". Nos testes, descobri que ping -D 1472 <ip_address>era o equivalente a MTU 1500 devido aos 8 bytes de dados do cabeçalho ICMP mais aos cabeçalhos IP de 20 bytes (veja isso e isso ). Tudo isso faz sentido.

Agora, por que o comando equivalente para uma 9000 MTU ping -D -s 8164 <ip_address>? Eu verifiquei que esse é o limite antes de começar a receber erros "sendto: Message too long", mas também que o 9000 MTU está funcionando corretamente como traceroute -F <ip_address> 9000funciona e traceroute -F <ip_address> 9001não funciona . Então, por que 8164? Eu esperava 8972 (MTU - 28 bytes, assim como para 1500 MTU).

Além disso, por que 9216 MTU para o Netgear? Contei 42 bytes para os cabeçalhos MAC e Ethernet (incluindo o CRC), mais 20 para os cabeçalhos IP (que devem ser usados ​​na MTU).

Estou muito enferrujado nessa matemática e sei que estou perdendo alguma coisa.

morgante
fonte
1
9216 foi quase certamente escolhido porque é 9 x 2 ^ 10.
Chris S

Respostas:

11

Bem-vindo ao mundo estranho e misterioso dos quadros gigantes! É normal que o equipamento Ethernet de quadro jumbo tenha MTU> 1518 e <65K bytes e você precise encontrar uma configuração que seja o menor denominador comum em seu domínio L2 para permitir o tráfego jumbo adequado.

Meu palpite é que sua implementação de ping / ICMP funciona apenas para a carga útil de 8192 bytes; portanto, 8164 + 28 (20 para o cabeçalho IP e 8 para o cabeçalho ICMP) fornecem 8192 bytes.

O MTU 9216 também é um MTU de 9K padrão em muitos equipamentos da Cisco, portanto, suponho que o Netgear desejasse ser '' compatível '' com isso.

Observe também que a especificação do tamanho da MTU deve ser levada a sério, muitos fornecedores não incluem 802.1Q (vLANs) ou até mesmo cabeçalhos de quadro L2. Verifique com a documentação do fornecedor do switch o que eles realmente especificam quando estão falando sobre o tamanho da MTU.

pfo
fonte
Apenas uma observação a acrescentar: O MTU de seus hosts e roteadores precisa corresponder; o MTU dos switches pode ser definido em 12 bazilhões para tudo o que importa, desde que esteja acima das configurações dos hosts (cabeçalho +).
Hyppy