关于 MTU 的总结

最近在分析网络传输速度方面的问题, 因此对MTU值进行了进一步研究, 赶紧做个总结, 防止老年痴呆提前到来:

1. MTU( maximum transmission unit )是设置在网卡上的配置值,它决定了经过网卡传输的数据包的最大尺寸。

2. 数据包在网络上传输的时候,会经过许多的路由器和网关,这些设备上都有MTU设置,如果数据包太大,经过设备的时候还会被拆分。因此PMTU(路径最大传输单元, 它等于路径上每一跳的MTU之中的最小值)值对数据传输速度影响更大。Internet网中PMTU一般为 576B 。

3. 在TCP建立的时候终端会与服务器协商MSS( maximum segment size ),它是TCP数据包每次能够传输的最大数据分段。它与MTU的关系是:MTU = MSS + 20 (TCP header length)+ 20 (IP header length)。MSS 协商结果(两端支持的MSS的最小值)才最终决定终端发出的数据包大小。

4. 在现网中,经抓包发现WAP网关返回的MSS值为1410,所以为了追求最大的性能,我们设置的MTU值应当不小于1450 (1410 + 20 +20),所以当前我们建议的经验值为 1460 B 。

5. 由于Internet网中PMTU一般为 576B, 所以终端设置的MTU应当不小于它,但是设置大了也不一定能够提升传输效率。

6. 各种应用下的最佳MTU值
设置MTU大小是一个反复试验的过程: 由最大值1500开始下降,直至问题解决。使用下列值之一或许能解决一些由MTU值引起的问题:

1500. 以太网信息包最大值,也是默认值。是没有PPPoE和VPN 的网络连接的典型设置。是各种路由器、网络适配器和交换机的默认设置
1492. PPPoE 的最佳值
1472. 使用 ping 的最大值 (大于此值的信息包会先被分解)
1468. DHCP的最佳值
1430. VPN和PPTP 的最佳值
576. 拨号连接到ISP的标准值

[windows系统下]
7. 如何查看MTU值呢?
电脑直接插网线到modem进行ADSL拨号上网,在cmd命令下输入:
netsh interface ipv4 show subinterfaces

8. 如何测试MTU值的最大值?
ping -f -l 1500 www.baidu.com
命令返回:“需要拆分数据包但是设置 DF。” 说明MTU值过大!

拆包测试
ping -f -l 1451 www.baidu.com

发表评论