一、 MTU MSS 概念

什么是MTU?

MTU是数据链路层的概念,限制的是数据链路层payload的大小,即上层协议大小(包括上层协议头)

例如设置主机接口mtu为1450。则在一个TCP报文中,1450 = 20字节IP头 + 20字节TCP头 + 1410TCP数据。

什么是MSS?

MSS最大报文段,是TCP中一个选项,用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(注意不包含TCP头部大小)

如何探测路径MTU值?

Linux主机中: 执行ping x.x.x.x -s 1422 -M do ,x.x.x.x是目标地址,-s指明icmp报文的数据部分大小(不包含icmp 8字节头部)。
-M do 表示不允许分片。多试几次,找到临界点。
以mtu为1450为例,1450 = 20字节IP头 + 8字节icmp头 + 1422数据,则-s指定为1422可以正常通过

Windows主机中: 执行ping x.x.x.x -l 1472 -f ,x.x.x.x是目标地址,-l指明icmp报文的数据部分大小(不包含icmp 8字节头部),-f表示不允许分片。

二、案例分析

从路径上看,丢包点大致可以有下面几个位置:

1. 数据中心外部丢包2. 数据中心内部丢包3. 主机内部丢包

对于数据中心内部丢包问题,最重要的是能 “界定问题边界”,换句话说,这是谁的锅?
拥有自己数据中心的,往往会由网络工程师负责配置网络,系统工程师管理主机/虚拟化环境。界定的边界办法可以是:


1)长ping 网关地址,如果出现丢包,十有八九是网络设备有问题。2)使用MTR看路径上丢包点。3)抓包分析

MTU丢包

1.检查接口MTU配置,ifconfig eth1/eth0,默认是1500;2.进行MTU探测,然后设置接口对应的MTU值;

解决方案:

1. 根据实际情况,设置正确MTU值;2. 设置合理的tcp mss,启用TCP MTU Probe
# cat /proc/sys/net/ipv4/tcp_mtu_probingtcp_mtu_probing - INTEGER Controls TCP Packetization-Layer Path MTU Discovery.
Takes three values:
0 - Disabled
1 - Disabled by default, enabled when an ICMP black hole detected
2 - Always enabled, use initial MSS of tcp_base_mss.

MTU带来的问题实在太多了,但凡做过运维、实施或者技术支持的工程师,或多或少都会遇到。
一个典型的MTU问题发生在类似图1的环境中,即两个子网的MTU大小不一样。

当客户端发给服务器的巨帧经过路由器时,或者被丢包,或者被分片。
这取决于该巨帧是否在网络层携带了DF(Don’t fragment)标志。
如果带了就被丢弃,如果没带就被分片。

从Wireshark上很容易看到DF标志,如图2中的方框内所示。
分片的情况往往被忽略,因为它只影响一点点性能,大多数时候甚至察觉不出。
丢包的情况就无法忽略了,因为丢包之后再重传多少遍都没用,会一直丢,整个传输就像掉进了黑洞,所以往往会导致严重的后果。

对于 TCP来说,要尽量避免分片。
因为必须所有分片都到达才能重组成一个包,其中任何一个分片丢失了,都必须重发所有分片。
分片会增大丢包和乱序的概率,同时也会增加时延。

如果在TCP报文经过的传输网络中有某个设备的MTU设置得太小, 则它会将收到的IP报文进行分片。
分片会增大丢包和乱序的概率, 同时也会增加时延。

MTU不等,大的数据包就被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。
不同设备和不同网络对接一定要注意一下MTU值,设置一定要相同,就可以减少丢包,否则会降低网络速度或打不开网页,无法上传数据甚至业务不通。

为什么说 MTU 值会影响网速呢?

在 Win 系统中,MTU 值默认是 1500。假设我们现在要传输 3000 字节的数据,只需要拆分成 2 个数据包就行了。
而如果是 ADSL 接入方式,它的 MTU 值是 1492 的话,则 3000 字节的数据需要分为 3 个数据包传送。
由于数据包的数量增多了,同时拆包组包都需要额外消耗时间,因此网速变慢也就不足为奇了。

一次MTU问题导致的RDS访问故障
https://mp.weixin.qq.com/s/b2bk1dRDJwHCWp7cN_Vy1Q

1. 在DF位没有置1情况下,IP数据包大小超过接口MTU值时,IP数据包会切片(framed)2. 在DF位没有置1情况下,已经切片的IP数据包在转发过程中不会组装注:如直连的2个接口,一个MTU为1500,另一个MTU不是1500,可能会产生丢包
(原因:MTU就是MRU;切片发生在数据包发出时,不发生在接收时)

MTU一经确定不再改变?

实际上MTU并不是确定了之后就一直不变的,每个端上查看到的MTU并非是最终的MTU大小,这个怎么理解呢?

大部情况下,网络发送端都需要经过各种中间设备才能到达目标机器,这些中间设备可能是路由器、交换机、中间代理服务器等等,这些设备的MTU大小可能有大有小,更糟糕的是,每次走的路径不一样MTU大小可能也不一样。

那么,假如我们的发送端的MTU是1500,中间某个交换机或者路由器的MTU是200字节,当数据包到达这个设备的时候IP层就会触发拆包,很明显如果出现这种情况网络传输效率会大幅降低。
那么有什么办法可以解决这个问题呢?

我们可以思考一下,要解决这个问题其实只要找到链路中最小的MTU就可以了,那么,我们如何感知中间设备的MTU呢?
有一个叫ICMP的协议可以在中间设备出现异常的时候将异常返回,从而发送端可以感知到,关于ICMP协议这里不展开,有兴趣可以自行去了解。

实际上,TCP协议已经实现了链路MTU的探测,叫做PMTU,原理就是设置IP报头DF不分片位置为不分片,这样当遇到比MSS小的MTU的设备,这个设备就会返回一个ICMP报文,里面携带了错误消息和可接受的MTU大小。

三、参考

什么是MTU值,MTU值有什么用?
https://mp.weixin.qq.com/s/gruLG48W7KEJ_BQJ8tooDQ

GaussDB网络重传/丢包问题定位总结
https://bbs.huaweicloud.com/blogs/235237

网络中一些丢包场景
https://mp.weixin.qq.com/s/FdoDfchrYC0H-Rd0wRm4gg

网络延时大,丢包,卡顿,不好用,时断时续找原因
https://mp.weixin.qq.com/s/IX8Q8yAdII962r2p8Yd8lw

云网络丢包故障定位全景指南
https://mp.weixin.qq.com/s/kkn72wtKvjIopySE5VMnbA

案例分享:MTU值导致视频丢包故障分析
https://mp.weixin.qq.com/s/VGtGwtzz2eKTIG3QtwgwkA

MTU导致的悲剧
https://mp.weixin.qq.com/s/hRhpwZge_LEmDfJINp-oyQ

解决网络丢包问题及故障判断方法
https://mp.weixin.qq.com/s/Zt2SRnbRLHwIbDzErRdxXw

一次MTU问题导致的RDS访问故障
https://mp.weixin.qq.com/s/b2bk1dRDJwHCWp7cN_Vy1Q

网速慢?改下MTU值试试
https://mp.weixin.qq.com/s/LHAuRMf72J6zm_hOffW3rA

案例分享:MTU值对传输网络对接的影响
https://mp.weixin.qq.com/s/J6-uG2mY4bGQcU5s-oU-Aw

丢包问题研究
https://mp.weixin.qq.com/s/GRmqu1xcNZ7wRNjYrrHFCQ

MTU系列实验(1)——IP MTU
https://mp.weixin.qq.com/s/66sXXTt3B0A8zt8CgB4iug

TCP问题定界六大方向分析总结
https://mp.weixin.qq.com/s/IE2dkmYd0etmlK7G_wVIHA

某局MTU问题导致手机无法上网故障排查过程
https://mp.weixin.qq.com/s/HPNPa4IfCnCaU3h4rwNtUg

为什么MSS都小于MTU?
https://mp.weixin.qq.com/s/BDsI33nRsZHCx1VhJtyzcA

设置路由器MTU与操作系统的MTU值相同,可提升网速
https://mp.weixin.qq.com/s/QRdbLdiG3jDc1H8x8sVnjA

【网络】MTU相关网络丢包问题分析处理相关推荐

  1. 网络丢包现象分析处理指导书5

    sniffer简明教程 xiong2127 51cto技术博客 sniffer是由NAI公司提供的强大的协议分析仪,完整的sniffer系统,除了我们经常使用的以太网模块外,还具有广域网模块,广域网模 ...

  2. 网络丢包现象分析处理指导书6

    铁通某网络故障分析报告 xiong2127 51cto技术博客 一.所遇问题描述 xiong2127 51cto技术博客 xiong2127 51cto技术博客 如上图所示,交换机端口1:1-1:12 ...

  3. wifi丢包率高怎么解决_大家有没有发现无线网络中多播的丢包率很高

    在linux下用vlc在若干笔记本组成的无线网络中做视频传输实验 如果用单播(unicast)的udp,效果很好,很流畅 但如过用多播(Multicast)的udp,效果就很差,接收的图像上有很多方块 ...

  4. 网络编程(wireshare抓数据包及分析、三次握手与四次挥手、数据库sqlite3及操作)笔记-day15

    前言 今天整理了网络编程的下篇,主要归纳了wireshark抓数据包及分析.TCP安全可靠原因分析(三次握手.四次挥手).数据库sqlite3及操作(shell脚本和C语言对数据库的增.删.改.查及关 ...

  5. 网络故障分析 PING大包丢包故障分析

    故障描述 1.故障环境 网络结构如下图所示: 如上图所示,两边网络通过光纤相连,中间设备只有光电转换器,到单位 B的内部网络有一台防火墙. 2.故障描述 单位B在进行网络测试时,在单位B的出口路由器处 ...

  6. linux 系统 UDP 丢包问题分析思路

    转自:http://cizixs.com/2018/01/13/linux-udp-packet-drop-debug?hmsr=toutiao.io&utm_medium=toutiao.i ...

  7. Linux系统 UDP 丢包问题分析思路和修改网卡缓存

    最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,我在排查过程中基本都是通过使用 tcpdump 在出现问题的各个环节上进行抓包.分析在那个环节出现问题.针对性去排查解决问题 ...

  8. java udp丢包_linux 系统 UDP 丢包问题分析思路

    最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考. 在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程. ●  首先网络报文通 ...

  9. Mbus总线低温丢包问题分析及解决

    I.问题现象 Mbus 板再-20摄氏度低温时,会出现丢包现象,且温度越低通讯丢包越多.经检查总线波形:30个FS-M水表零下20度波形.低电平只有4V,不能满足Mbus总线电平要求. II.问题分析 ...

最新文章

  1. mysql分库分表备份脚本[转帖]
  2. js实现shallowReactive和reactive
  3. 《剑指Offer》 跳台阶
  4. python补集运算_Python 的集合(set)运算
  5. linux文件描述符导致squid拒绝服务
  6. c++之对vector排序并获得其索引
  7. 建立账套时,没有选择客户分类档案
  8. ubntu系统克隆到其他计算机的方法
  9. web前端入门到实战:HTML图像标签img和源属性src及Alt属性、宽高、对齐
  10. 【HDU1411】四面体的体积公式
  11. cad相对坐标快捷键_47个快捷键+50个CAD技巧助你玩转CAD
  12. 1116: 删除元素 C语言
  13. 12款精品网盘资源搜索网站,只有你想不到没有它搜不到的
  14. Linux 28 岁了,我们总结了 28 个不为人知的事实
  15. MRT退休后的HEG(HDF-EOS To GeoTIFF Conversion Tool )工具安装
  16. 任务三、学生喂养三种宠物:猫、狗和鸟
  17. python下载安装教程电脑版,python下载好了怎么使用
  18. 5大巨头入场瓜分3万亿市场!加密世界vs.互联网史诗战争将打响!
  19. 萨提亚领衔主题演讲,带领高管和MVP合影,预告Julia女神的演讲中将有我的.NET Core实践
  20. JavaScript中的appendChild()方法

热门文章

  1. 2022年起重机司机(限门式起重机)考试题模拟考试题库及答案
  2. android avb2.0问题解答 汇总
  3. 一个人的垃圾就是另一个人的Linux计算机
  4. 这可是全网eNSP安装最完整,最详细的图解,没有之一(安装步骤)
  5. Excel如何快速将多列数据复制到一列中
  6. IOS-10.0~10.2越狱后使用ssh链接
  7. 尚学堂Java第四章作业编码题+个人想法
  8. Edge 按 Backspace键 实现返回上一页 过程
  9. 小孩子上机器人课好还是编程课好
  10. 软考信息系统项目管理师论文写作技巧总结