网络丢包通常是比较难以排查的问题,因为造成网络丢包的原因很多,排查此类问题需要很长的时间。本案例中,通过对网络通信数据进行比对分析,我们找到了引起网络丢包的问题根源。
1.1 问题描述
可编程逻辑控制器(plc),是一种采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。plc实质是一种专用于工业控制的计算机。
某集团公司plc设备近期出现异常,设备经常报告连接故障,公司网络运维人员通过ping测试发现该设备存在丢包现象(丢包率约1~2%)。为了寻找问题原因,避免再次出现类似问题,在科来网络分析专家的协助下在出问题的plc设备接入交换机处旁路部署了科来回溯分析系统进行数据包级分析。plc网络环境及分析设备部署示意图如下。
图 17‑1
通过交换机端口双向流量镜像分别采集故障plc和正常plc的通信数据进行比对分析,以下是详细分析过程及分析结论。
1.2 分析过程
1.2.1 故障plc单网卡数据分析
首先,我们镜像故障plc问题最严重网卡(ip xx.xx.8.4)的接口双向流量,在采集数据的同时公司技术人员配合从核心交换ping xx.xx.8.4。从采集到的icmp协议报文数量可以看到,测试期间共捕获124个ping请求包(echo req),但只捕获122个ping应答包(echo reply),如下图。
图 17‑2
可以看出从故障plc设备到边缘交换机接口就存在丢包现象,故障plc有1.6%的包没有传输到边缘交换机。同时,在测试期间xx.xx.8.4的tcp通信中存在明显的丢包现象,如下图所示。
图 17‑3
通过以上数据,我们可以初步判断造成丢包现象的原因出自从故障plc到接入交换机之间,可能的问题点包括:
- 接入交换机接口故障;
- 故障plc接入网线故障;
- 故障plc设备自身网卡或其他硬件故障。
1.2.2 故障plc全部网卡数据分析
第二步,我们镜像了故障plc的全部三个网卡连接的交换机接口双向流量,发现三个网卡都有丢包现象,而且丢包量基本相当,如下图所示。
图 17‑4
这说明丢包并不是xx.xx.8.4一个网卡的问题,而是故障plc三个网卡的都有的现象。从其tcp会话统计来看也都是从plc设备发送到接入交换机时出现的丢包。
由于三个网线或三个交换机接口同时存在问题的可能性很小,所以我们基本可以判断是故障plc设备自身硬件问题导致的丢包现象。
1.2.3 正常plc数据分析
第三步,我们镜像在同一边缘交换机的正常plc设备(xx.xx.9.172)接口的流量,从采集数据中我们只看到了很少量的tcp重传,并且这些重传都是与xx.xx.8.4相关的通讯导致的,如下图所示。
图 17‑5
这说明正常plc设备到接入交换机之间并没有明显的丢包迹象,进一步验证了之前的分析结论。
1.3 分析结论
通过以上数据分析,我们判断存在丢包问题的plc设备极有可能是由于该plc设备自身硬件问题导致数据包没有正常的从网卡发送到网络中所致;网线和接入交换机接口导致丢包现象的可能性非常小。
建议用户在非生产时段用pc机接入到故障设备的网线上,配置相同ip地址,通过ping测试是否还存在丢包现象,如果没有出现丢包或丢包率远小于1%即可完全排除网络原因。
1.4 价值
通过网络分析技术通过对传输的数据流进行深入分析,从多种可能原因中快速定位问题根源,使网络丢包不在困扰网络管理员。