2

我试图了解 MTU 的“大局”。具体来说,许多关于 MTU 的讨论都集中在单跳(例如笔记本电脑到路由器)上,因此自然的问题是:如何确定电缆调制解调器和 ISP 之间的 MTU,或者更一般地说,对于路由的任何给定跳,如何确定 MTU。

现在,我可以很容易地看到我的笔记本电脑和它之间的 MTU: 在 Mac OS X 上使用 ifconfig 的 wi-fi 路由器:

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=2b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4>
ether 58:b0:35:f0:14:75 
media: autoselect (none)
status: inactive    
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 58:b0:35:72:64:fa 
inet6 fe80::5ab0:35ff:fe72:64fa%en1 prefixlen 64 scopeid 0x5 
inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
media: autoselect
status: active

1500 是 wi-fi 帧限制的规范值 b/c(我猜它是为匹配以太网帧而设计的;如果有错请纠正我)。

所以,问题是:如何确定我的路由中任意跳的 MTU?

答案总结:

根据以下答案,最好的选择是“tcpdump”、“traceroute --mtu”或“tracepath”

4

1 回答 1

2

您正在寻找的是Path MTU Discovery。通过观察MSS选项值,您可以在TCP 三次握手tcpdump(1)期间看到这一点(您将需要适当级别的转储详细程度,这是公平的)。-vv

原件traceroute(8)应该向您展示路径 MTU 更改,但我从来没有运气。Linuxtracepath(8)立即为您提供了 hop MTU 值。

于 2011-08-16T15:04:12.497 回答