网络丢包通常是比较难以排查的问题,因为造成网络丢包的原因很多,排查此类问题需要很长的时间。本案例中,通过对网络通信数据进行比对分析,我们找到了引起网络丢包的问题根源。

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  价值

通过网络分析技术通过对传输的数据流进行深入分析,从多种可能原因中快速定位问题根源,使网络丢包不在困扰网络管理员。