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

14

Ok, acabei de resolver um problema de quadros jumbo 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 tê-lo desejado incluindo os vários cabeçalhos / rodapés de ethernet (trailers ) e eu finalmente acabei com o Xserves & Drobo configurado com um MTU de 9000 e as portas Netgear configuradas para um MTU de 9216.

Eu usei os seguintes comandos para testar & verificando o MTU entre os dois Xserves sobre o Netgear (Nota: estes são os comandos do Mac OS X, os do Windows e Linux diferem):

ping -D -s <mtu> <ip_address>

traceroute -F <ip_address> <mtu>

O uso do antigo é no man page 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 combinados com os 8 bytes de dados de cabeçalho ICMP." Nos testes, descobri que ping -D 1472 <ip_address> era o equivalente a MTU 1500 devido aos 8 bytes de dados de cabeçalho ICMP mais 20 bytes de cabeçalhos IP (consulte isso e isso ). Isso tudo faz sentido.

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

Além disso, por que 9216 MTU para o Netgear? Eu contei 42 bytes para o MAC & cabeçalhos de ethernet (inc. CRC), mais 20 para cabeçalhos IP (que devem comer no MTU).

Estou muito enferrujado com essa matemática e sei que estou sentindo falta de algo.

    
por morgant 25.06.2012 / 19:45

1 resposta

11

Bem-vindo ao estranho e misterioso mundo dos jumbo frames! É normal que a engrenagem ethernet de quadro jumbo tenha MTU > 1518 e < 65K byte e você tem que encontrar uma configuração que é o menor denominador comum em todo o seu domínio L2 para habilitar o tráfego jumbo adequado.

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

O MTU 9216 também é um padrão de 9K MTU em muitos equipamentos da Cisco, então minha suposição é que a Netgear queria ser '' compatível '' com isso.

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

    
por 25.06.2012 / 20:27