好的,我刚刚解决了几个Xserve,Netgear GSM7224和Drobo B800i之间的巨型帧问题。原来Xserves(Mac OS X 10.6.8 Server)和Drobo B800i接受MTU的字节数通常是预期的(1500-9000),但是Netgear似乎希望它包含各种以太网标头/页脚(预告片) ),最后我最终为Xserves&Drobo配置了9000的MTU,并将Netgear端口设置为9216的MTU。
我已经使用以下命令在Netgear上测试和验证两个Xserve之间的MTU(注意:这是Mac OS X命令,Windows和Linux有所不同):
ping -D -s <mtu> <ip_address>
traceroute -F <ip_address> <mtu>
前者在man
页面中的用法为:“指定要发送的数据字节数。默认值为56,当与8个ICMP标头数据组合时,它转换为64个ICMP数据字节。” 在测试中,我发现,ping -D 1472 <ip_address>
是等效MTU 1500的归因于8个字节ICMP头数据的加20个字节的IP报头(参见此和本)。一切都说得通。
现在,为什么对9000 MTU使用等效命令ping -D -s 8164 <ip_address>
?我已经确认这是极限,直到我开始收到“发送到:消息太长”错误,而且9000 MTU可以正常traceroute -F <ip_address> 9000
工作,traceroute -F <ip_address> 9001
但不能正常工作。那么,为什么是8164?我期望8972(MTU-28个字节,就像1500 MTU一样)。
另外,为什么要为Netgear设置9216 MTU?我算出了42个字节的MAC和以太网标头(包括CRC),再加上20个IP标头(应该被MTU占用了)。
我对这个数学真的很生疏,知道我只是想念一些东西。