Jumbo frame与MTU
Posted gaoshaonian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jumbo frame与MTU相关的知识,希望对你有一定的参考价值。
最近有测试问我Jumbo和MTU分别限制的是什么把我问住了,网上查了一些资料,发现大部分是百科上copy下来的,都没有说到点子上,关键时刻还是同事靠谱,现在根据自己的理解整理一下。
首先了解一下二者的基本概念。
- MTU
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议在某一层上面所能通过的最大数据报大小(以字节为单位),它通常与链路层协议有密切的关系。EthernetII帧结构如下:
DMAC(6) |
SMAC(6) |
Type(2) |
Data(46-1500) |
CRC(4) |
由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes,最大不能超过1518bytes,对于小于或者大于这个限制的以太网帧,我们都可以视之为错误的数据帧。一般的以太网转发设备会丢弃这些数据帧。(注:小于64Bytes的数据帧一般是由于以太网冲突产生的 “碎片”或者线路干扰或者坏的以太网接口产生的,对于大于1518Bytes的数据帧我们一般把它叫做Giant帧,这种一般是由于线路干扰或者坏的以太网口产生)。
由于以太网EthernetII最大的数据帧是1518Bytes,除去以太网帧的帧头(DMAC目的MAC地址 48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes (这个部份有时候大家也把它叫做FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes,这个值我们就把它称之为MTU。
这个MTU就是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同 )通过这段水管最大水量就要由中间最细的水管决定。
-
Jumbo frame
先看看百科上的概念解释:
巨型帧是帧长大于1522字节的以太网帧。这是一种厂商标准的超长帧格式,专门为千兆以太网而设计。巨型帧的长度各厂商有所不同,从9000字节~64000字节不等。采用巨型帧能够令千兆以太网性能充分发挥,使数据传输效率提高50%~100%。在网络存储的应用环境中,巨型帧更具有非同寻常的意义。
(注:此处的1522应该是在1518的基础上增加了4bytes的vlan-tag)
先说一下优点:
减少帧的开销,增加系统吞吐量,减少CPU利用率。(其他待补充)
再说一下缺点:
(1)由于传输一个巨型帧需要时间比较长,占用线路时间长,造成网络延时。
(2)一旦巨型帧传输失败,则是一次更为严重的网络事件,重传则需要更多时间。
(3)所有网络中的设备都要支持Jumbo frame才能正常使用。
(4)Internet链接不支持Jumbo frame。
- 二者的关系
在实际的网络设备中,MTU的限制是软件层面的限制,而Jumbo frame是限制的硬件层面,一般应用在千兆口或以上。原则上Jumbo frame的最小值是要大于以太网最大帧长的。
举栗子:(这里不算帧头部了,也不考虑不分片的情况,知道那个意思就行)
(1)Jumbo frame小于MTU:三层物理口MTU设置为900,Jumbo frame设置为1700。
发送500的报文:直接发出去。
发送1600的报文:先分片,再900+700正常发出去。
(2)Jumbo frame大于MTU:三层物理口MTU设置为3000,Jumbo frame设置为1700。
发送500的报文:直接发出去。
发送1750的报文:在Jumbo frame处作了限制,做丢包处理。
发送4000的报文:分片3000+1000,3000的部分丢掉了,1000部分发出了,对端校验失败,丢弃(存疑)。
以上是关于Jumbo frame与MTU的主要内容,如果未能解决你的问题,请参考以下文章