网络通信中,MTU(最大传输单元)是一个重要的参数,它定义了数据包的最大尺寸。在以太网中,MTU的常见值是1500字节。。
在网络中,一台设备接收到数据包后,根据目的地址将其发送到下一个设备时,如果数据包的尺寸超过了下一个设备的MTU,那么这个数据包就会被分片(分割成更小的包),以便能够通过下一个设备的MTU。
那么一个超过接口MTU值得数据包是否会分片以及是否会影响应用层的业务呢?下面我们看一则案例,就知道一个超过接口MTU值得数据包是否会影响应用层的数据,以及为什么会影响应用层的数据。
故障现象某单位最近因为原有的中兴设备老化,就更换了全部替换成锐捷的设备,但是更换完成后,在业务上线的第二天,部分客户反馈他们的电话有卡顿现象,而且一个本地云平台服务器的业务在同步上传远端云服务时会出现上传数据失败。
故障分析工程师到达现场后,因为看到是服务器反馈的未响应报文(failed to respond),就坚持认为是远端服务器的问题。
并提出如下证据:
- 本地服务器ping远端服务器的地址无丢包。
- 本端服务器telnet 远端服务器的8082端口可以正常访问。
- 原中兴配置和现有锐捷交换机配置一致,且现有的故障数据反馈信息是在TCP/IP应用层,而交换机作为传输层并不会对应用层数据产生影响。
- 其他单位和业务并没有反馈有上网异常或者业务使用异常的问题,所以替换的核心交换机和路由器并存在软件和系统版本问题。
- 至于客户反馈电话卡顿的问题,因为本地打电话没有问题,所以应该是运营商传输方面的Qos参数调整的问题。
但是客户经过和远端服务器厂商沟通,除了本县区单位存在数据上传失败问题,其他单位并没有出现该问题,而且本地服务器数据上传远端失败问题是在网络设备更换后出现,本地服务器和远端服务器任何参数都为更改和调整。
对于运营商的传输线路问题,运营商更直接回复,在网络设备更换前后未对线路任何设备做过调整,坚持是锐捷设备性能问题。
业务回退测试现在问题又回归到新设备的问题了。
现场工程师为了证明新增加的锐捷设备并没有问题,于是和客户沟通,要把业务回退到老的中兴设备上测试。
好在,新设备上线后,原有中兴设备和链路并未撤掉,于是在经过上级部门同意后,他们找了一个晚上进行业务测试。
然而最终结果却大大出乎工程师的意料,当把业务回退到老的中兴设备后,客户反馈的问题竟然没有出现。
不死心的工程师把接原中兴设备的线路切换到新的设备后,故障又出现了!
这下工程师就慌了,也开始怀疑设备性能设备本身的问题。
在和厂商核实了所有设备软件版本并未Bug通告,而设备性能参数也确实高于老中兴设备很多,工程师不得不比对中兴设备和锐捷设备配置的差异化。
发现问题端倪经过现场工程师和厂商技术支持工程师反复比对,确定中兴配置和锐捷配置并无异样。
但是在比对双方业务测试时搜集到的接口数据信息时发现,同样的物理通道线路,锐捷上联PE端的接口存在输入错误和大包丢弃以及输出丢包问题。
进一步排查,发现中兴交换机上联PE接口的默认MTU值为2000,而锐捷的默认接口MTU值为1500。
确认问题现在问题已经明确了,在MPLS网络环境下,数据包通过标签进行交换,MPLS标签的头部大小通常为32字节,这比以太网和IP头部要小得多。因此,MPLS标签可以在数据路径中提供更高效的带宽利用率。
但是在以太网环境中添加了MPLS协议后,原来的以太网头部增加了32字节的标签,当以太网接口使用默认的MTU值(通常是1500字节)时,如果在这个接口上使用MPSL协议进行传输,数据包的大小可能会超过默认的MTU值,那么这个数据包就需要进行分片传输,但是数据包分片意味着每个数据包到达接口后要重新单独处理和传输,这就增加了网络延迟的几率和丢包的风险。
说明:交换机接口MTU设置为1500字节的原因,以太网帧最小字节为64字节,最大为1518字节。
所以按照以太网最大1518字节数据包,到达接口后需要减去12字节的MAC地址2字节的数据帧类型和4字节的校验,最终实际接口接收到的最大值是1518-12-2-4=1500(字节)。
至于ping不丢包是因为测试默认的一直是32字节,并没有超过接口的最大MTU值。
而其他业务包括路由没有影响,完全也是因为数据包没有超过接口接口默认的MTU值。
经过ping大包测试后分析,应该是两台服务器在建立连接时为了保证数据快速传输,更改要传输的数据包大小为1500,但是交换机加上MPLS标签后数据包超过了接口最大处理能力,所以导致的数据包在传输过程中丢失和出错。
而上述截图则是数据包多次传输失败后远端服务器对于无法接收到的数据失败的一个反馈。
总结在MPLS加以太网络环境中,一定要更改接口的MTU值,确保数据能够可靠传输和避免网络问题发生。但是调整的MTU值应该根据具体情况区实现和配置,避免MTU值过大导致缓冲区和内存的浪费,尤其是在链路拥塞的情况下。
因此,在设计网络时,应该考虑使用标准的MPLS标签头部大小,以确保最大的网络效率和兼容性。
在选择MPLS标签头部大小时,需要考虑以下几个因素:
1、网络性能:较大的MPLS标签头部大小会增加每个数据包的额外开销,从而降低网络性能。因此,需要根据网络需求和性能要求选择合适的头部大小。
2、兼容性:不同的厂商和网络可能会使用不同的MPLS标签头部大小,因此需要考虑不同设备的兼容性问题。使用标准的头部大小可以确保最大的设备兼容性。
3、网络扩展性:在设计网络时,需要考虑未来的扩展需求。使用标准的MPLS标签头部大小可以确保网络的扩展性和可维护性。