MTU.GIF
一、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字节。抓包结果显示如下:
MTU(Maximum 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字节 |