彭渔露,马莉,王百彦,强帆
(西昌卫星发射中心,西昌 615000)
在一个典型的以太网络中,采集设备使用UDP协议向数据处理计算机发送状态采集数据。数据处理计算机通过计算和分析采集数据,判断设备或系统工作是否正常。在数据传输过程中,时常会出现网络丢包现象,会漏掉一些重要的状态数据。为了避免此类情况出现,必须对丢包问题进行分析定位。
通过总结分析,如果在网络传输过程中出现偶发性丢包(如1~2个数据包丢失),可认为是由于提供不可靠传输,产生的概率性丢包,属于正常现象。而以下三种情况属于常见的数据丢包问题需要排查解决。
(1)网络设备引起的丢包。
(2)采集设备引起的丢包。
(3)数据处理方法引起的丢包[1-2]。
各采集设备将数据通过网络发送到数据处理计算机,由数据处理计算机处理完后,将结果再通过网络发送到上位机显示软件。处理流程如图1所示。
图1 数据处理计算机处理流程
按照图1的数据处理流程,出现丢包问题后通常采用以下的方法进行发现和定位。
1.2.1 人工观察法
对可以画成曲线的数据,由多人工对每一条曲线进行放大后逐段观察。当曲线数量较多时,很有可能出现观察遗漏,而且该方法对人员的工作压力较大、效率较低。如图2所示。
图2 显示软件丢包观察示意图
2.2.2 计算机辅助判定法
一般情况下,计算机辅助判断通常采用数据内部的一些特征来判断,例如北京时间或者包的序号等。通过判断数据的连续性,得到丢包的时刻。但该方法通常只能判断是否有网络丢包,如果要定位问题位置则需要人工进行分析定位。
定位丢包问题首先检查数据处理计算机的接收日志是否有相关接收记录,如果有则排查数据是否在处理环节丢弃;如果没有则排查网络设备。
数据处理计算机的日志文件采用北京时间记录数据到来时刻。通过人工观察法发现丢包后,到日志文件中查找对应丢包位置一般比较繁琐。在曲线横坐标上显示的并不是北京时间,而是以某个时刻为基准的相对时间。要找到日志文件记录的丢包点,需要将相对时加上时间基准后,才能得到丢包时刻的北京时间。
若检查到数据处理计算机未收到该数据,则需在交换机等网络设备中抓包分析。由于交换机的记录数据通常包含了其他类型的通信数据[3],查找分析效率低。若交换机日志中未发现该数据,则需要再向前回溯网络节点和采集设备。在实际丢包问题的排查过程中,需要占用较长时间。丢包问题分析流程如图3所示。
图3 丢包问题分析流程图
采集设备以固定频率发送采集数据[4],数据中包含了2种时间信息和1种包序列信息,在数据接收环节记录数据到来的时间,共有4种与时间或时序有关的信息。将这4种信息分别定义为数据生成时间(Data Time,简称DT),数据包头时间(Packet Time,简称PT),数据包序号(N umber,简称N),接收时间(Receive Time,简称RT)。其中DT、PT、RT时间格式为“时-分-秒-毫秒”的北京时间,N为自然数。这4种数据产生源如图4所示。
图4 4种时序相关数据产生部位示意图
设ΔT为两个相邻数据时间相减的结果,ΔT=T n-T n-1。ΔT是DT、PT、RT中任意一种时间。如果数据未出现数据丢包,则ΔT为常数,有ΔT1=ΔT2=…ΔT n。如 果 出 现 丢 包,ΔT发 生变化。
设ΔN为两个相邻数据包序号相减的结果,ΔN=N n-N n-1。如果数据未出现数据丢包,则ΔN为1。如果出现丢包,ΔN不为1。
将ΔT和ΔN数据画到同一坐标系中进行分析对比。特征对比如图5—图12所示。
图5 正常状态
图12 数据中断
图9 DT环节时间滞后 (大于固定频率)
图10 DT环节时间超前(小于固定频率)
在出现的以上特征中,图6需要结合其他记录节点的数据进一步定位问题。图7为通信设备问题,图8至图11则为设备问题,图12为采集设备或者网络引起的数据中断。
图6 DT或PT或网络传输环节丢包
图7 网络传输环节阻塞
图8 PT环节网络阻塞
图11 PT环节时间不稳
采用时序分析快速定位的方法,在出现丢包问题后能快速的定位故障点[7]。若要让该方法达到较好的效果,必须选择合理的记录方式,规划数据节点进行监控,解决存在的依赖问题。
为尽量减小对原有设备和网络的改变,数据的记录采用数据旁路方式。当采集设备与数据处理计算机使用UDP点播协议时,在交换机上做镜像端口,将流过指定端口的数据复制一份到镜像端口,再从该镜像端口上进行采集记录。当采集设备与数据处理计算机使用组播协议传输,则让同一网段的计算机加入组进行采集记录。
从理论的角度来说,数据记录节点越多越好,但考虑到实际工程应用,不建议在所有的网络节点进行部署。本方法在使用时,仅对通信节点和数据处理计算机的相关网络部署数据记录监控软件。
在时序分析法中,DT、PT、N的数据均由采集设备产生。采集设备和数据记录计算机中有均有NTP时间服务,可以较好的保证DT、PT和RT的时间精度。
为实现实时数据丢包的快速定位分析,将软件分为两个配置项实现,其中一个配置项为数据记录软件,另一个配置项为数据分析软件。该软件采用C++语言开发,采用Qt制作软件界面,使其具备跨系统平台的能力。
采集设备在进行数据传输的过程中,设备可能会有多种传感器,会发送多种不同类型的数据,且频率不同。针对同一采集设备有多种采集信息,需要对每台采集设备的不同类型的信息分别记录,以便进行丢包分析。软件界面如图13所示。
图13 数据记录软件界面
在网络数据接收时,每台采集设备使用一个独立socket接收数据,该socket收到数据后,对数据类型进行判断并分类记录,同时统计接收包数、数据包序号、长度和记录包数。记录数据采用二进制原始数据形式记录,不同类型的信息按照“日期-设备名-信息名”的命名规则单独记录成文件。流程如图14所示。
图14 数据记录软件数据流程
数据分析软件通过打开记录文件进行分析,软件运行界面如图15所示。
图15 数据查看界面
在软件界面中显示数据的二进制信息,通过对信息的分析,得到正常无丢包的图16和有丢包的图17界面截图。数据分析的具体流程如图18所示,首先打开需要分析的数据文件并读取数据,按照每行显示一个完整数据包的方式将需要分析的数据文件全部显示出来。然后根据前文所述的算法,对数据文件进行分析。通过分析上下两包数据的时间差和包序号差,统计得到最终的特征图。通过分析比对特征图,能够定位出数据丢包的具体原因。
图16 无丢包的分析界面
图17 有数据丢包的分析界面
图18 数据分析流程
本文提出将存储记录的相邻数据包各时间信息相减后进行画图,通过图形特征的对比分析,快速的定位丢包问题原因和故障点,减少了由人工发现问题、排查定位的工作量。目前该软件已经部署在各设备和用户端。从实际应用情况来看,该方法能够节约故障定位和分析时间,提高了分析判断效率。其他通信网络协议数据如果有类似的时间戳信息,也可以采用类似的方法快速定位丢包问题。