MTU 是出接口方向的MTU值,跟入接口方向无关。 MTU 是双方向的,也就是说两个方向的数据流可以有不同的MTU值。
 
在实施中遇到这么个问题:
用户在BigIP的VLAN设置中修改了MTU值,并保存。但系统重启后,这个值又恢复为原来的默认值了。
有兄弟遇到过么?望指点一二。


[ 本帖最后由 j_tam 于 2009-1-9 12:02 编辑 ]


MTU.GIF

solory
2009-1-15 14:34:22
没看到过!默认就是1500的!一般局域网中不改这个数值!
zhangml
2009-1-16 13:38:17
MTU的范围是576-1500,如果你写的值为1500以上,比如1510,会提示:01070379:3: The MTU 1510 specified for VLAN Py??E?? is outside the valid range of [576-1500],说明你没有更改成功,这样重启肯定会恢复成1500。如果你改成1492,应该没有问题,我试过。关键是你更改的MTU值是多少。

一、MTU的定义及相关概念:

Mtu即最大传输单元,全称为Maximum Transmission Unit,是指通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。由于定义的模糊性,在此也介绍几个相关的名词,MRU、PMTU、MSS和JUMBO FRAME,供大家甄别。

MRU即最大接收单元,全称为Maximum Receive Unit,与MTU相对,称为最大接收单元,目前也没有权威的标准定义,但许多文章中有这个名词。一台主机或路由器的MTU与MRU可以不一致。

PMTU,全称为 path maximum transmission unit,即路径MTU,把一条IP路径上MTU的最小值称为PMTU,PMTU是个理想化的概念,但目前业界没有有效的手段来实现PMTU的发现和更新。`

MSS是OSI参考模型中四层的一个概念,即最大分段长度,全称为TCP Maximum Segment Size,指TCP每次能够传输的最大数据分段长度(以字节为单位),MSS一般比MTU小40字节。

Jumbo Frame(有些称Giant Frame),网络上会遇到jumbo frame的概念,cisco路由器的接口中也有这个参数,超过以太网标准长度1518字节的帧称为jumbo frame。

二、MTU涉及主要原理:

1、常见网络的MTU值:

IP网络以包为单位进行信息传递,那么,一次传送多大的包合适、多大的包最高效就成为一个核心问题之一。MTU就是决定在什么样的物理网络传送多大数据包大的事实标准,不同类型网络由于物理特性、发展阶段不同,其MTU的默认值也不尽相同,以下是摘录的各类网络及其默认MTU值:

 

对于windows操作系统来讲,其以太网网卡MTU默认为1500,但可以通过修改工具或修改注册表进行修改,但只能改小,不能改大,即只能修改为小于或等于1500字节。

2、PMTU 发现过程:

对于一个基于网络的应用来讲,如果应用穿过网络的MTU与PMTU相等,那么应用穿过网络的效率最高,或者说,应用通过主机网卡发出的最大数据包与PMTU越接近(指小于等于PMTU),应用穿过网络的效率越高,原因是有效的避免了分片和重组。

为了达到这个目的,一些操作系统支持自动发现路径MTU的功能,具体过程为:

路由器接口上收到一个报文长度大于本接口MTU值的报文,如果该报文被打上不分片的标记,将丢弃本报文,并且返回一个ICMP差错报文,通知报文发起者丢弃原因。报文发起者将发送比较小的报文。通过多次上述报文协商,将得到对于某一个固定路径上的最小Mtu值,这个过程叫做“Mtu Discovery”[详见RFC1191]。

了解了MTU发现的原理,举一个实例验证PMTU变化过程:

 

在上图所示实验网络中,由三层设备模拟PPPOE拨号,实现接入宽带IP网。三层设备上行以太网口默认MTU为1482字节。抓包结果显示如下:

 

将三层设备上行以太网口默认MTU改为1000字节。抓包结果显示如下:

 

MTUMaximum Transmission Unit),是指能在网络传输的最大数据包大小,常见的默认MTU如下:

PPP:296;IEEE 802.3:1492;以太网:1500;FDDI:4352;超通道:65535;

这里引用的PPP的MTU是指传统在Modem到电话局之间链路上使用PPP的场景,不是目前流行的PPPoE(PPP over Ethernet),同时296并不是实际PPP最大的包大小,而是一个建议值,因为考虑了线路使用者的感受,即在960B/S线路中,使用这个建议值,可以有较好的感受,也就是等待时间可以在忍受范围内(注:以上PPP部分根据后面几位热心兄弟的建议进行了修改)

人一般可以忍受的等待时长在0.1秒到0.2秒以下。
对于960字节/秒的PPP网络,传送一个字节需要 1 / 960 = 0.01秒,传送1024字节需要 1024 / 960 = 1.067秒,如果一个数据包的大小就是1024字节的话,则平均等待时长为(1.067 + 0.1)/ 2 = 0.538秒,约为传送所有数据时间的一般。根据相同公式,要使PPP满足平均等待时长在0.1秒到0.2秒之间,则每包长度应在960 * 0.1 * 2到960 * 0.2 * 2之间,即192字节到384字节之间,同时考虑吞吐量(有效数据/数据包长度),296则是一个比较合适的MTU.

对于其他网络,个人理解就是数据帧格式中定义的最大数据长度,如以太网帧(Ethernet II):




目的地址


 

源地址


 

类型


 

数据


 

CRC


 

6字节


 

6字节


 

2字节


 

46字节~1500字节


 

4字节


 


对于超通道,其实就是IP帧格式中数据长度字段(16字节)计算而来:2的16次方 – 1 = 65535字节。实际应用中,还是会被链路层协议分片。如由以太网承载IP,就会被分片成小于1500字节的包。

当数据包在网络中传输时,如果经过某段网络的MTU比数据包的长度小,数据包则会从该段网络起被分片传送。但数据发送端总是期望发送的数据包越大越好,同时又期望每个数据包在传送过程中尽量不被分片(分片会降低数据包传送的可靠性),因而发送端使用网络中最小MTU发送数据是最为合适的。

UDP数据包一般采用512Bytes的大小发送数据,而TCP则根据两端协商的最小的MTU进行数据传输。这种方式,可以使绝大多数的UDP和TCP传输不进行分片。

但在个别情况下,还是有可能存在网络路径的某段MTU比发送报文长度还小,这时就得依赖网络路径MTU的发现机制了。有一种简单的实现方法,就是在发送端发送数据包时置上报文不可分片的标记。当报文经过MTU小于报文长度的路由器时,报文会被丢失,同时路由器返回ICMP差错报文,发送端收到差错报文后,进行发送报文的大小的调整,使发送报文最终达到网络中最小的MTU。