MTU设置不当闹故障

2017-03-08 15:52
网络安全和信息化 2017年10期
关键词:分片网络设备字节

MTU(Maximum Transimission Unit)称为最大传输单元,也就是网络层能通过的最大数据包大小,最大传输单元这个参数与数据交换过程中各网络设备的通信端口有关。目前,很多路由器和交换机允许通过的最大的数据包都超过了9K字节以上。在大多数网络环境中,很多网络设备都会采用默认的MTU设置,在高速网络环境中,一般需修改网络设备所支持的MTU值,以便更高速的进行数据交换,但是当数据传输两端的物理端口的MTU设置不一致时,就可能导致数据传输故障。

故障现象

单位使用华为AR1220S路由器对外多个方向进行连接,其中多个方向连接了其他厂商的路由器,按要求在路由器上配置运行了OSPF协议。配置完成后,进行测试,各方向数据收发均正常。在运行了不到一周后,有同事反映至某个方向的网络出现了中断,笔者随即在网络中的一台计算机上安装了掉线报警系统,对其他几个方向和该方向的网间网地址及对端的网关进行检测,发现到该方向的所有网络都不通。因为该方向仅有一条对外网络就是到本单位,没有到其他单位的冗余网络,所以如果不通,就会造成该方向的网络对外全部中断。

故障定位

1.登录到本端路由器上,Ping对端网间网地址,发现可以Ping通。使用display ip routing-table查看路由表,发现到这个方向的路由不存在,而物理端口运行状态正常,只是OSPF协议中断,看来是路由出现了问题,但是本端没有修改路由配置,路由前期运行正常。既然可以Ping通,那很可能是对端进行了不当设置或出现了故障。

2.电话联系对端网络管理人员进行询问,对端网络管理人员告诉笔者,他们并未修改路由器的相关配置,但是因网络架沟时间要求紧,新购买的路由器尚未到货,目前使用的路由器为日常做实验和学习所使用的路由器,而且在出现网络故障前,该单位对其网络机房的供电电路进行了整修,路由器不得已进行了重新启动。

既然对端网络管理员说未做任何修改,前期可以正常运行,那么和OSPF协议相关的版本、区域号、计时器、认证方式等相关参数的设置应该是正常且可以相互匹配的。

3.使用display ospf peer brief命令,查看路由器的邻居建立情况,发现邻居状态并没有处于正常的full状态而是处于exstatrt状态,看来是邻接关系没有建立成功。打开了路由器的Debug调试开关查看交互报文的相关信息,从收到信息可以看到,本端路由器可以正常接收到对端的hello报文,但是路由器在发送了DD报文后,对端路由器一直没有返回回应的DD报文。

4.电话联系对端网络管理员人员让其提供路由器的Debug相关调试信息,从对端网络管理员人员提供的信息可以看到,对端路由器在收到本端路由器的DD报文后,也发送了相应的DD报文进行回应,但是本端路由器确实没有收到DD报文。

故障分析

根据故障定位分析,问题是因本端路由器未收到对端的DD报文所致。DD报文不能成功接收,最常见的原因是网络链路质量很差,延迟过大导致,而完全无法接收,还是很少遇到。经过查阅相关资料,笔者分析出导致本端路由器完全没有接收到对端发出的DD报文或者说是完全拒绝对端路由器发出的DD报文,应该可能是以下两个原因:一是DD报文太大,当DD报文太大,而对端路由器没有进行分片处理或者分片的长度超过了本端路由器接收的报文长度,本端路由器就会拒绝接收。二是对端路由器构造的DD报文错误导致,当DD报文错误时,本端路由器也会拒绝接收。

故障排除

1.通过查看本端路由器的Debug调试信息,发现本端并没有接收到对端发送的错误DD报文。排除了因对端路由器构造的DD报文错误导致网络故障的可能性。

2.通过查看对端路由器的Debug调试信息,发现其构造的DD报文长度为2000多字节,而本端路由器端口所能接收的最大DD报文长度为路由器端口默认支持的1500字节。

3.在本端路由器上使用ping -s 2000 -f x.x.x.x(x.x.x.x为对端路由器网间网IP地址,-s的参数为报文大小为2000字节,-f为不进行分片处理),发现无法Ping通对端路由器的网间网地址。那么,最可能的故障原因就是本端和对端路由器的MTU不一致导致。

4.在对端路由器上,使用相关命令,查看对连本端路由器的相关端口信息,发现该端口的The Maximum Transmit Unit为4500字节。而本端路由器的The Maximum Transmit Unit大小为默认的1500字节。

5.在对端路由器使用相关命令修改其MTU大小为1500字节,OSPF恢复正常,故障排除。

网络故障的产生的原因是因为对端路由器为日常实验和学习路由器,对相关端口的MTU大小进行了修改,而在网络沟连初期,因为网络规模还不是很大,其DD报文大小未超过1500字节。而随着网络规模的不断扩大,其DD报文也会逐渐变大,当路由器重启后,在两个OSPF路由器初始化连接时要交换DD报文,以便进行数据库同步,由于网络规模不断扩大,数据库的内容就会相当长,所以一般需要多个DD报文的交互来完成双方LSDB的同步,而当两台互连路由器端口的MTU不一致时,会因为DD报文过大造成MTU小的一方拒绝接收DD报文,造成OSPF协议协商失败。

经验总结

在网络速率越来越快的情况下,正常为提高网络设备的传输速度,可以将MTU尽可能的设置为最大,以减少数据包数量,因为这样就会尽可能地减少了IP包头数量过多而消耗带宽。但也不是MTU越大越好,因为MTU越大,会造成传送数据包的延迟也越大,数据包在构造时产生错误的概率也越大,甚至会造成报文丢失,在共享网络或带宽较少的情况下,会影响其他用户网络数据交换。

此外,为确保网络传输速率,应尽量避免数据包在传输过程中被分片,如果MTU过大,那么数据包在传输过程中就会被本来只负责数据交换而不需要进行数据分片重组的交换机等网络设备进行分片重组,在传输过程中,如果需要交换机等网络设备进行分片重组,那么就会对网络性能产生极大的影响,反而造成网络速率会极度下降。

在默认情况下,MTU的大小会根据数据传输终端和中间的网络设备自动协商成允路径中所允许的最大MTU,所以,在对网络要求不高的情况下,正常不建议对网络设备的MTU数值进行重新设置。在链路速率高,且直连网络设备端口都支持修改MTU的情况下,可以将MTU设置成最大,而不是使用其默认的大小,从而可以有效地提高传输速率。笔者曾做过一个实验,在2台安装有千兆网卡的计算机终端、千兆网络链路和千兆交换机中进行数据传输,如果将交换机的MTU设置成6K字节大小,将计算机终端的巨型帧设置成6K字节大小,其传输速率比交换机采用默认的MTU(即大小为1500字节)和计算机采用普通帧(即关闭巨型帧)要快上50%以上。

所以说,在不同的网络环境中,可根据需要灵活设置MTU大小,也需要在设置过程中注意一些事项,特别是当人工修改网络设备的MTU大小后,其网络端口的自动协商功能就会失效,而当数据交互双方的MTU不一致时,就会造成网络出现中断,原因就是一方对报文进行分片后的报文大小到了另一方无法正常接收而拒绝接收,应尽量避免因设置不当造成网络故障。

猜你喜欢
分片网络设备字节
上下分片與詞的時空佈局
网络设备的安装与调试课程思政整体设计
降低跨分片交易回滚概率的多轮验证方案
No.8 字节跳动将推出独立出口电商APP
分片光滑边值问题的再生核方法
一种基于C# 的网络设备自动化登录工具的研制
No.10 “字节跳动手机”要来了?
基于模糊二分查找的帧分片算法设计与实现
基于MSP430的四旋翼飞行器的S-BUS通信协议的设计与实现
防范加固SNMP团体名漏洞