什么是MTU(Maximum Transmission Unit)?

最大传输单元MTU(Maximum Transmission Unit,MTU),是指网络能够传输的最大数据包大小,以字节为单位。
MTU的大小决定了发送端一次能够发送报文的最大字节数
如果MTU超过了接收端所能够承受的最大值或者是超过了发送路径上途经的某台设备所能够承受的最大值,就会造成报文分片甚至丢弃,加重网络传输的负担。
如果太小,那实际传送的数据量就会过小,影响传输效率。

为什么需要MTU?

网络中通常以数据包为单位进行信息传递,那么,一次传送多大的包合适、多大的包最高效就成为一个核心问题之一
如果包大小设置的很大,意味着报文中的有效数据也更多,通信效率更高,但传送一个数据包的延迟也越大,数据包中bit位发生错误的概率也越大。并且如果这个报文丢掉了,重传的代价也很大。
如果包大小设置的过小,则意味传输相同的数据量,设备需要处理更多的报文,这样会极大的考验设备的线速转发能力。通过设置MTU来调节网络上数据包的大小,让不同的网络找到最适宜的MTU从而提高转发效率,这就是MTU的作用。

MTU是数据链路层的概念,指数据链路层对数据帧长度的限制。不同链路介质类型的网络有不同的默认MTU值,以下是一些常见网络的默认值:

网络默认MTU值

为什么以太网MTU通常被设置为1500?

RFC标准定义以太网的默认MTU值为1500。那么这1500的取值是怎么来的呢?

早期的以太网使用共享链路的工作方式,为了保证CSMA/CD(载波多路复用/冲突检测)机制,所以规定了以太帧长度最小为64字节,最大为1518字节。最小64字节是为了保证最极端的冲突能被检测到,64字节是能被检测到的最小值;最大不超过1518字节是为了防止过长的帧传输时间过长而占用共享链路太长时间导致其他业务阻塞。所以规定以太网帧大小为64~1518字节,虽然技术不断发展,但协议一直没有更改。

以太网最大的数据帧是1518字节,这样刨去帧头14字节和帧尾CRC校验部分4字节,那么剩下承载上层IP报文的地方最大就只有1500字节,这个值就是以太网的默认MTU值。这个MTU就是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片,如果单个IP报文长度大于MTU,则会在发送出接口前被分片,被切割为小于或等于MTU长度的IP包。

MTU示意图

实际上,不同的厂商,甚至同一厂商的不同产品型号对MTU的定义也不尽相同,通常分为以下几种:

MTU用以指示整个IP报文的最大长度(IP头+三层Payload),MTU是一个三层的定义,即MTU = IP MTU。例如在Huawei NetEngine系列路由、CloudEngine系列交换机上,MTU是三层的定义,指IP MTU。

MTU的值等于IP报文与以太帧头的总和,即MTU = IP MTU + 14字节。例如在Cisco部分设备上,MTU是指IP MTU + 以太帧头。

MTU的值等于IP报文与以太帧头、CRC部分的总和,即MTU = IP MTU + 18字节。例如在Juniper部分设备上,MTU是指IP MTU + 以太帧头 + CRC部分。
在实际设置MTU值时,需要特别关注各厂商、产品对于MTU的定义。

超过MTU的报文如何进行分片?

以太网缺省MTU=1500字节,这是以太网接口对IP层的约束,如果IP层有<=1500字节需要发送,只需要一个IP包就可以完成发送任务;如果IP层有>1500字节数据需要发送,需要分片才能完成发送。

以主机发送一个数据载荷长度为2000字节的报文为例说明其分片的过程(假设出接口的MTU值为1500)。在网络层会对报文进行封装,其结构组成:IP头部20字节+数据载荷长度2000字节,报文封装后,整个报文长度为2020字节。在出接口进行转发的时候,发现IP报文的长度超过了MTU的值1500,因此要进行分片处理,详情见下图。

IP分片示意图

第一片报文,IP报文头固定20字节,数据载荷可以封装1480字节(MTU值1500字节-IP报文头20字节,数据载荷长度须是8的倍数);

第二片报文,复制第一片的IP头,IP报文头固定20字节,数据载荷为剩余的520字节(总数据载荷长度2000字节减去第一片中已封装的1480字节)。如果最后一片报文的长度不足46字节,会自动填充至46字节。

所有分片报文在发送至目的主机后,在目的主机进行分片重组,恢复为原报文。在进行重组时,通过IP标志位中的MF用来分辨这是不是最后一个分片,片偏移用来分辨这个分片相对原数据报的位置。通过这几个字段,可以准确的完成数据报的重组操作。

Jumbo帧与MTU

以太网经过几十年的发展,速度已经从最初的10M被提升到了上百G,速度提高了上万倍。在这样高速度的传输数据中,如果还是延续经典以太网的最大帧长不超过1518 字节的限制,那么在每秒中传输的数据包的个数将很大。由于每个数据包都需要网络设备来进行处理,由此带来的额外开销也将很大,而且这个开销随着网络速度的提高而愈加明显。

于是一些厂商提出了巨型帧(Jumbo Frame)的概念,把以太网的最大帧长扩展到了9K,相当于增强版的MTU,区别在于:

Jumbo帧是在数据链路层进行处理的。MTU涉及的分片通常是在网络层进行。
Jumbo帧长包括二层以太帧头及CRC部分。MTU一般不包括这部分,指的是三层IP报文部分的长度。在网络应用中,MTU最大值受限于Jumbo帧的最小值,MTU值至少要比Jumbo帧小18字节
加大帧长的好处在于,减少了网络中数据包的个数,减轻了网络设备处理包头的额外开销。大量减少的帧数目也带来了性能的提高。Jumbo帧是一种厂商标准的超长帧格式,目前还没有获得IEEE标准委员会的认可,但是大多数的设备厂商都已经开始支持。

TCP MSS与MTU

TCP MSS(Maximum Segment Size)是指TCP协议所允许的从对方收到的最大报文长度,即TCP数据包每次能够传输的最大数据分段,只包含TCP Payload,不包含TCP Header和TCP Option。MSS是TCP用来限制application层最大的发送字节数。为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往根据MTU值来计算(需要减去IP包头20字节和TCP包头20字节),所以通常MSS为1460=1500(MTU)- 20(IP Header) -20 (TCP Header)。


TCP MSS与MTU示意图

Path MTU与MTU

顾名思义,Path MTU就是指传输路径的MTU,无需分片就能穿过某路径的数据包最大长度。在从发送端到接收端的传输路径上,如果网元的MTU设置不一致,则决定该路径可用MTU的,其实是整条路径上的最小MTU值。以Path MTU作为IP包长发送数据,既高效又能避免分片。


Path MTU示意图
RFC 1191(IPv4)和RFC 1981(IPv6)定义了动态探测Path MTU值的技术,用于确定两个IP主机之间的Path MTU。首先源节点假设Path MTU就是其出接口的MTU,发出一个试探性的报文,并设置改报文不允许被分片。当转发路径上存在一个小于当前假设的Path MTU时,转发设备就会向源节点发送回应报文,并且携带自己的MTU值,此后源节点将Path MTU的假设值更改为新收到的MTU值继续发送报文。如此反复,直到报文到达目的地之后,源节点就能知道到达目的地的Path MTU了。

Path MTU探测
目前IPv4网络其实没有有效手段来发现PMTU 。主要原因是:

某些运营商或网站考虑网络安全或其他需要,把ICMP探测报文过滤掉了。
Path MTU需要主机和互联网上的各种网络设备(交换机、路由器、防火墙等)的配合,但有些网络设备不遵从RFC 1191协议。

如何设置MTU

在网络中,由于不同厂商,甚至同一厂商不同型号的设备,对MTU的定义和MTU分片机制不尽相同,常出现MTU引起的网络问题,例如协议对接不成功、部分网站或链接打不开、游戏卡顿等。因此对MTU进行合理的规格、部署至关重要。

其最基本的原则:对接的两个三层设备以太网接口MTU配置需要保持一致。

两端MTU保持一致
同时还需要考虑多种场景下各种封装标签对报文大小的影响,例如封装MPLS标签,每层标签会增加4字节,增加MPLS标签后,报文长度也可能超过链路层允许发送的范围,导致报文无法转发。

干网、城域网络、接入网络MTU的配置建议

为保证骨干网络、城域网络、接入网络的完美工作,MTU的数值一定要远大于以太网标准的基本要求1500字节。通常现有的大型路由器、交换机设备,都可以支持到9000以上的大数据报文,但缺省配置各厂商并不相同,很多厂商设备的缺省MTU配置仍然是1500字节。并且因为网络中很可能运行OSPF、ISIS等需要协商MTU的路由协议,所以互相对接的不同厂商的设备的MTU也要调整为相同。

因此,在满足网络和运营商规范且各个厂商都支持的情况下,尽量将MTU配置的大一些。

数据中心等局域网络MTU的配置建议

在目前大规模建设的数据中心等网络中,通常没有对MTU进行统一调整。随着新技术的应用,MTU的问题会逐步暴露出来。比如为进行大二层扩展进行的各类隧道技术的使用,VPLS、VXLAN等。这些技术无一例外的都使用了额外的封装,形成了超大报文,例如VXLAN会在原始报文基础上增加50字节。如不统一进行MTU的规划,会导致传输效率低下,或者业务中断。

因此,在数据中心等网络的建设中,也需要确定MTU的配置规范,在各个厂商都支持的情况下,尽量将MTU配置的大一些。

文章来源:什么是MTU?

860-什么是MTU?相关推荐

  1. MTU(最大传输单元)

    MTU 最大传输单元(MaximumTransmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位).最大传输单元这个参数通常与通信接口有关(网络接口卡 ...

  2. OSPF:MTU不一致导致的邻接关系问题

    1.MTU不一致 (1)何时关注MTU 从Exstart状态开始,OSPF进程关注来自邻居的DD消息中的 Interface MTU 字段 (2)何时忽略DD 如果接收到的DD消息中Interface ...

  3. mac mtu测试_一个关于MTU的现象,请兄弟们看看是不是确实是这样。 - 网络管理论坛 - 51CTO技术论坛_中国领先的IT技术社区...

    MTU和Fragment详解 1. 基础知识 我们知道, 数据在网络上传输时, 要经过一段一段的链路.当数据从某一段链路的一端传到另一端的过程中, 需要考虑的是数据链路层协议, 在这一层, 我们观察到 ...

  4. Linux上面的MTU含义

    问题场景描述: 最近在搞一个很菜的程序--FTP上传文件. 但是这个 很菜的程序搞的我脑袋疼了 半个月. 在linux上面部署了我的程序,上传文件在1KB以下顺利上传,但是1KB以上上传不上去. 程序 ...

  5. 关于网络编程中MTU、TCP、UDP、IP

    名词解释: MTU(Maxium Transmission Unit)最大传输单元 TCP (Transmission Control Protocal)传输控制协议 UDP (Usage Datag ...

  6. (转载)以太网最大帧和最小帧、MTU .

    根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步码 + ...

  7. 【BLE】TLSR8258开发记录之10--更改MTU为245

    1.说明 基于SDK3.4,将BLE MTU由默认的23byte 更改为245 byte 2.操作 A.修改FIFO大小,在app.c中修改以下代码(#if 1部分为修改或者新增部分) #if 0 # ...

  8. 数据包分片和重组 MTU与MSS

    前言 任何一台主机都有必要对IP分片进行相应的处理. 分片往往出现在网络上遇到比较大的报文无法一下子发送出去才会进行处理. 正文 比如说在前一个FDDI链路中的报文大小为4352字节,小于其MTU所以 ...

  9. 【解决方案】MTU现场能源发电机,点亮孤岛的文明之光

    如今人们的生活离不开手机 要是手机没电了 整个人都会很焦虑 想想还真是无法体验没有电的日子 开个脑洞哦 不知道没有电的古代生活会是什么样子呢? ✈ 目录 ① 穿越回古代你又能咋滴 ② 哪里要用放哪里的 ...

  10. TCP传输的单个报文最大字节(MSS和MTU)

    TCP和1448 1448字节是实际场景下,单个TCP包的实际运载能力.也就是说,实际场景下,上层调用send(1000KB),下层会把这1000KB封装成多个TCP包进行发送.单个TCP包每次打包1 ...

最新文章

  1. 大数据就业前景怎么样?需要学会哪些技术?
  2. python 基本模块 random、os、sys
  3. 如何在线程中获取spring 管理的bean
  4. C#操作XML小结_转载
  5. CommonJs模块规范
  6. HDU - 3333 Turing Tree(线段树+离线处理)
  7. C#阻塞队列BlockingCollection
  8. SSM学习系列(五) Spring MVC 几种跳转方式
  9. 双稳态电路的两个稳定状态是什么_利用SR锁存器实现SPDT开关消抖电路
  10. 关于HTML5中Video标签无法播放mp4的解决办法
  11. javascript实现图片轮播_手撸一个简易版轮播图(上)
  12. Centos中jdk安装及环境变量配置
  13. Worktile、Teambition与Tower项目管理软件对比
  14. 东芝300d硒鼓清零代码_东芝300d怎么清?
  15. 微信小程序开发上线注意事项
  16. 用户画像、用户分群、用户分层,到底有啥区别?
  17. 【解决】Yandex浏览器Bing搜索遭遇trovi.com劫持
  18. 既是消费者也是管理者:纽约州分布式能源改革
  19. 小米怎么和计算机连接网络设置密码,小米3C路由器怎么设置密码?
  20. 股票交易接口开发原理是什么?

热门文章

  1. 2021年高考成绩 二本人员查询,2021年全国高考二本分数线预测,全国多少分可以上二本...
  2. 个人作业——A001-185-2513-吴光华
  3. 南宁职业技术学院计算机专业宿舍,南宁职业技术学院星级文明宿舍评比办法(试行)...
  4. javascript操作数组的方法大全
  5. 什么是VOIP和SIP?
  6. CS5262: DP转HDMI+VGA
  7. 【文献阅读】Remote Power Attacks on the Versatile Tensor Accelerator in Multi-Tenant FPGAs
  8. 矮人DOS工具箱 4.2:把DOS/Ghost/分区专家集成至启动菜单
  9. 2.跳跃游戏(c++)
  10. 8. 监督学习的统计理论