巧破数据包重传故障

2016-11-26 06:42
网络安全和信息化 2016年8期
关键词:重传分片光缆

引言:笔者单位的一个下级单位报告,在单位办公网站下载一个大约3.4GB的一个软件失败,观看视频有明显卡顿和马赛克现象。经排查,发现故障是由于光缆线路使用年限过长,老化非常严重,导致数据收发异常。因业务不能中断,笔者通过调整服务器的“最大重新传输超时”(RTO)、“最大传输单元”(MTU)、“最大重传次数”三个参数和交换机的MTU参数,巧妙地解决了数据重传故障。

故障现象

笔者单位有很多下级单位,且各点位比较分散。一天,一个下级单位报告,在单位办公网站下载一个大约3.4GB的一个软件失败,然而在门户网站可以在线观看视频,但在观看电影时有明显卡顿和马赛克现象出现。

针对问题,笔者确定到下级单位的网络链路基本正常,首先怀疑可能是办公网站上的软件下载链接存在错误。找到该软件的网站链接地址,无论是使用鼠标右键“目标另存为”还是使用迅雷等软件下载该软件均正常,说明该软件的下载链接没有问题,很可能是下级单位计算机操作系统存在问题。让下级单位更换几台计算机重新下载该软件测试,当使用鼠标右键“目标另存为”的方式下载时,过不了几秒,链接还是会中断,下载均失败。

为了解决问题,笔者使用“远程桌面”登录该计算机,结果发现“远程桌面”无法正常建立,Ping了一下该计算机3389端口,丢包率为0,网络正常。笔者又使用65500字节大小的数据包Ping该计算机,丢包率高达33%,网络基本不可用。

故障排查

1.根据故障现象和测试结果,笔者认为网络中可能存在广播风暴或ARP病毒等,造成网络阻塞,数据包超时丢失。遂对下级单位的所有上网计算机进行了病毒查杀,结果并未查杀到病毒。

2.对所有的网络连接点进行了检查,发现各连接点并没有出现松脱、连接不紧密、线路短路等现象。

3.因对下连接的网络特别简单,就是“计算机终端→交接机→光纤收发器→光纤收发器→交换机→计算机终端”的模式,对各网络设备进行了硬件测试,各网络硬件工作均正常,没有物理故障。

4.对下级单位的网络流量数据包进行捕获,并对异常数据包进行分析,发现网络中并未出现病毒数据包和非合理广播数据包,惟一异常的数据包就是部分TCP发送异常,很多TCP数据包都产生了超时。对这些超时的数据包进行分析,发现错误提示为“在数据报组装期间生存时间为0”,也就是发生超时,TCP数据包重组失败。

故障原因

数据包发生超时重传的原因有很多,但是本故障中数据包发生重传的原因是TCP数据报文过大造成的。在IP数据包传输过程中,数据包首先要判断由哪个接口进行转发,并查询该接口的相关参数,以获得其MTU(Maximum Transmission Unit,最大传输单元),网络层把MTU值与要发送的IP数据包进行长度比较,如果IP数据包的长度比MTU值大(一般默认最大长度值为1500字节,MTU值不宜过大,也不宜过小,如果MTU配置过大,则可能会超过了接收端所能够承受的最大值,或者是超过了发送路径上途经的某台设备所能够承受的最大值,也会造成报文分片甚至丢弃,加重网络传输的负担,影响数据正常传输。MTU值过小的弊端在本文的最后有提及),就会对IP数据包进行分片处理,分片后的数据包长度小于或等于MTU值,当分片数据报文都到达目的端后,会对所有的分片数据报文进行重组,当有一个分片或多个分片丢失后,就会造成数据报重组超时,所以就会发送超时的错误提示,导致TCP数据包传输异常。

导致数据重传一般有以下原因:一是计算机病毒和广播风暴。当网络带宽发生阻塞时,很多TCP数据包会被延时接收,当延时超过最大重传时间时,就会要求重传。二是网络设备设置不当和物理故障。当网络中存在多种网络设备时,有人会对各类网络设备设置不同的MTU,当各类网络设备的MTU不同时,可能就会导致数据包重传。比如,对路由器的MTU设置为1200字节,而交换机的MTU设置为800字节时,就有可能会造成数据重传。三是网络线路原因。当各网络连接节点连接不紧密或网络链路出现其他异常故障时,也会造成数据包重传,而笔者单位发生这个故障就是光缆老化导致。

笔者单位到这个下级单位架设有一条超过38公里的光缆,光缆两端使用光纤收发器进行连接,来连通网络。光缆大部分采用的是埋地方式敷设,大约有9公里的光缆采用架空方式,虽然为铠装光缆,但使用时间已经超过17年,期间光缆断裂多次,光缆存在纤芯色散严重、油脂套管收缩严重、涂覆层油凝固、防水密封胶脱落、热缩套管破裂、光缆接续盒进水、外凯钢丝层和内径加强钢丝锈蚀等问题。特别是纤芯柔韧性降低明显,极易折断,使用OTDR(光时域反射仪)对光缆进行测试时,发现有多点和多段衰耗较大,光缆老化非常严重,其中架空部分光缆老化尤其严重,即使单位使用了60公里的光纤收发器,光纤收发器经常不能很好地正常识别,导致数据收发异常。

数据包重传解决方法

因办公需要,要求对下网络中断时间不得超过1小时,为确保网络能符合办公要求,而此光缆又不可能立即重新敷设,笔者采取了三种解决方法。

1.对衰耗特别严重的光缆进行了更换。在对光缆进行测试后,发现其中有1段大约长2公里和1段大约长1.5公里的光缆衰耗特别严重。在这两处敷设了新的光缆,对这两段的原有光缆进行了更换,熔接用时约25分钟。

2.在提供的服务器上,对“最大重新传输超时”(RTO,Retransmission Timeout)、“最大传输单元”(MTU)和“最大重传次数”3个参数进行了修改(服务器采用Windows 2003 Server操作系统),这里将RTO设置为5000ms,将MTU设置为800字节,将“最大重传次数”设置为5次。

(1)修改RTO这个参数可以采用两种方法。

方法一:命令修改法。在操作系统中运行“cmd”命令,然后依次运行以下命令,netsh-interfaceipv4-show interface,可以查看到服务器外接的网络接口所对应的Idx值(如图1)。

其对外服务的网卡接口名称为“本地连接”,其对应的Idx值为12。使用“set interface "12"retrasmittime=5000”命令就可以修改RTO这个参数为5000ms,修改的命令和结果如下:

确定。

方法二:修改注册表法。运行“regedit”命令打开注册表,分别打开KEY_LOCALMACHINESystemCurrentControlSetServicesTcpipParametersInterfaces适配器ID(适配器ID可以根据对外网络的网址来确定(如图2),服务器中共有硬件或软件等各类“网卡”7个,图中对外服务的为第三个,其网关为192.168.1.1,自己的IP地址为192.168.1.100),添加“TCPInitialRtt” 名称的属性项,数据类型为REG_DWORD,修改其数值为“5000”(即为 5000ms,5 秒)。

图1 网络接口所对应的Idx值

图2 注册表编辑器界面

此参数控制TCP使用对每个新连接的初始重新传输超时。它适用于连接请求(SYN,synchronous) 和每个连接发送的第一个数据段。

(2)修改MTU这个参数可以采用命令修改法。在操作系统中运行“cmd”命令,然后依次运行以下命令,netshinterface-ipv4,使 用“set interface "12" mtu=800”命令就可以修改“最大传输单元”这个参数,修改的命令和结果如下:

确定。

(3)修改“最大重传次数”这个参数可以采用2种方法。

方法一:命令修改法。在操作系统中运行“cmd”命令,然后依次运行以下命令,netsh-interface-ipv4,使 用“set interface "12"dadtransmits=5”命令就可以修改“最大传输单元”这个参数为5次,修改的命令和结果如下:

确定。

方法二:修改注册表法。运行“regedit”打开注册表,分别打开HKEY_LOCAL_MACHINESystemCurrent Control SetServicesTcpipParameters,添加“TcpMax DataRetransmissions”名称的属性项,数据类型为REG_DWORD,修改其数值为“5”(即为5次)。

3.在连接下级单位的交换机端口上,对该接口的MTU这个参数进行了修改(笔者单位使用的交换机为华为交换机,下级单位的交换机设置相同),修改相应接口MTU参数为800字节。

配置注意事项:需要在交换机端口执行命令undo portswitch,配置以太网接口从二层模式切换到三层模式。同时在配置完成后,需要重启接口以保证配置的MTU生效。可以先执行命令shutdown,关闭接口,再执行命令undo shutdown,开启接口。也可以直接在接口视图下执行命令restart,重启接口。

通过这些方法,可以很好地解决数据重传的问题,不会造成网络数据传输的中断。

但有利就有弊,这些方法的采用也存在一定的不足,主要不足体现在以下两个方面:一是采用了方法2和方法3后,会导致网络速度减慢。二是在设置了QoS的交换机上,由于QoS队列长度有限,如果MTU配置过小而报文尺寸较大,可能会造成分片过多,报文会被QoS队列丢弃,影响数据正常传输。

猜你喜欢
重传分片光缆
上下分片與詞的時空佈局
适应于WSN 的具有差错重传的轮询服务性能研究
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
铺条长长的海底光缆
无线网络中基于网络编码与Hash查找的广播重传研究
基于模糊二分查找的帧分片算法设计与实现
面向异构网络的多路径数据重传研究∗
无卤阻燃光缆及防蚁光缆
无卤阻燃光缆及防蚁光缆