抖音粉丝群1
『7x24小时有问必答』

来源:网络

本公众号整理

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

1
  为什么需要MTU?

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

以下是一些常见网络的默认值:
1.png

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

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

2.png

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

如ARP协议的PDU长度为  28  Bytes
3.png
其长度小于最小MTU限制的46字节,数据链路层就会在ARP PDU的后面插入填充(pad):18个字节0x00,以满足以太网帧长不小于64 字节(6+6+2+28+18+4)。

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

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

以主机发送一个数据载荷长度为2000字节的报文为例说明其分片的过程(假设出接口的MTU值为1500)。当IP层接收到此IP数据包时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。把MTU与数据包长度进行比较,发现IP报文的长度超过了MTU的值1500,因此要进行分片处理,详情见下图。

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

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

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

4
  TCP MSS与MTU

TCP MSS(Maximum Segment Size)是指TCP协议所允许的从对方收到的最大报文长度,即TCP数据包每次能够传输的最大数据分segment),只包含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)。

5.png

5
  Path MTU与MTU

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

Path MTU示意图:
6.png

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

Path MTU探测示意图:
7.png

在网络中,由于不同厂商,甚至同一厂商不同型号的设备,对MTU的定义和MTU分片机制不尽相同,常出现MTU引起的网络问题,例如协议对接不成功、部分网站或链接打不开、卡顿等。因此对MTU进行合理的规格、部署至关重要。
其最基本的原则:对接的两个三层设备以太网接口MTU配置需要保持一致。在满足网络规范且各个设备都支持的情况下,尽量将MTU配置的大一些。

- - -  正   文 - - -  - - - 结   束 - - -

免责声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

---

如果你有与本文相关问题可以留言或后台发消息,欢迎点赞、分享、关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码