APP下载

基于镜像口抓包的数据采集记录系统设计与实现

2021-07-27张绍泽李苑青

现代导航 2021年3期
关键词:存储空间监听镜像

程 翔,任 磊,张绍泽,李苑青

基于镜像口抓包的数据采集记录系统设计与实现

程 翔1,任 磊1,张绍泽1,李苑青2

(1 中国电子科技集团公司第二十研究所,西安 710068;2 西北工业大学航天学院,西安 710072)

在系统研制试验过程中对数据进行采集记录,不仅可以为系统功能性能评估提供数据源,也可以为重现战场试验态势提供手段。本文针对此问题及工程中的实际需求设计了一种基于分布式时间机制、网络监听、数据抓包和多缓存记录等关键技术的数据采集记录系统,该系统设计包括系统组成与架构和关键技术的设计与实现。最后根据设计内容进行了仿真应用,针对系统研制试验过程中的性能指标进行了测试和分析,结果表明该数据采集记录系统不仅运行高效,且能够很好地满足系统研制试验阶段的要求。

镜像口;抓包;数据采集;数据记录

0 引言

军用分布式作战系统是当下研究的热点,鉴于其系统运行复杂和功能性能指标众多的特点,在研制和试验全过程中需要实时采集并记录系统各个节点产生、交互和处理的所有数据,并在后期可将存储的数据进行解析和集中处理,为事后的试验数据分析和系统功能性能评估提供数据源,为试验过程的事后重现回顾提供手段。

由于分布式作战系统具有多个作战平台,每个平台又由多型设备共同构成,在系统工作时,不仅各节点产生和处理的数据量非常巨大,而且数据交互的过程也错综复杂;同时,作战系统的研制成本很高,组织大型试验需要多家单位协调,试验数据极为珍贵。因此要求数据采集记录系统必须具有高记录带宽、高可靠性和实时监控等功能性能指标。

本文提出的数据采集记录系统利用分布式时间机制、网络监听、数据抓包和多缓存记录等技术,可以满足当前系统研制试验阶段对数据采集记录的功能性能需求,可服务用于系统研制和试验过程中的战场态势回放以及分析性能指标、数据合理性和误差精度等工作。

1 系统组成及架构设计

1.1 软件环境

系统开发选用VS2015C#语言,它是微软公司发布的一种面向对象的、运行于.NET Framework上的高级程序设计语言。C#简单、高效,将数学运算、字符和数据库等多种复杂操作集合为面向对象的类,大大减少了编成人员的工作量;不使用指针,并提供了一种内存分配、垃圾回收、版本控制和类型安全机制,保证了程序的正确性和稳定性[1]。

1.2 硬件环境

1.2.1 计算机

选用计算机配置建议:处理器主频2.26 GHz×4以上,内存8 GB以上,硬盘512 GB以上,独立显卡显存2 GB以上,操作系统为Windows7×64位。

1.2.2 时码卡

计算机搭载时码卡用来保证分布式系统内各试验平台的时间保持一致。本文选用的时码卡采用标准的PCI总线接口为计算机提供高精度的时间数据,可以读取的时间精度为0.1 ms,可产生1PPS/20PPS/50PPS/100PPS中断信号,并可选择使用GPS信号或B码信号。

1.2.3 交换机

具有可配置镜像口和划分虚拟局域网(Virtual Local Area Network,VLAN)等功能。

1.3 系统组成

数据采集记录系统软件设计采用模块化和层次化编程思想。系统下按功能又划分为数据通信、文件建立、数据捕获、网络协议解析、网络数据存储、文件记录和界面显示等模块,各功能模块又分解为子功能模块。模块之间相互独立,按程序设定的通讯机制进行交互。主程序控制信息调用,与被调用模块共同实现系统功能。具体的软件功能组成如图1所示。

图1 系统功能模块结构图

2 设计与实现

2.1 分布式时间机制

为保证各分布式平台对时间记录的一致性,各平台数据采集记录软件所搭载的计算机需统一安装时码卡设备,在数据记录的时刻使用时码卡时间在记录报文内打上时戳。但由于每次获取时码卡时间都需要有一定的操作时间,虽然时间很短,但对于大数据量的记录,便会极大地影响记录效率,造成软件卡顿,甚至造成记录时刻有时延以及记录丢包等现象。

在本文中,软件直接获取时码卡的秒中断,在获取时刻对计算机板卡时间和时码卡时间进行比对,获得两者的时差,这样,在每次记录数据时,只需在数据获取时刻的计算机时间上补上时差,便可得到准确的时码卡时间,从而在高效的记录条件下保证了各分布式平台对时间记录的一致性。

2.2 镜像口网络监听

在本文中,单平台各设备间网络通讯均采用用户数据报协议(User Datagram Protocol,UDP),故各平台的数据均需通过网络交换机进行交互,由于以太网数据不能通过第三端直接引线实现数据记录,因此采取镜像口网络监听的方式进行数据采集。

网络监听是一种简单、有效获取被测网络数据的方法。由于网络监听方式的数据采集主机只是被动接收在局域网上传输的信息,它不主动与其他主机交换信息,也不修改在网络上传输的数据,故该方式不影响网络系统的工作[2]。

要实现镜像口网络监听,需对系统交换机进行相关配置。

2.2.1 配置网口

将交换机的某一个网口设置为监听网口,另外某几个网口设置为镜像网口,其余预留一些网口不进行设置,为普通网口。其中镜像网口可配置为进/出单向数据镜像或双向数据镜像。为避免设备间数据传输导致的数据被重复记录,一般将镜像网口统一配置为进向数据镜像,即镜像从设备传入交换机的所有数据。镜像后的数据均会复制一份送到监听网口,而不会影响原有数据的传输。

2.2.2 划分VLAN

由于通过镜像口的方式,监听网口已经获取了需要记录的数据内容,但网络中的广播信息和匹配的组播信息本身就可以被监听网口获取到,这会造成数据的重复记录,不仅影响记录效率,而且还给事后的数据分析造成影响,因此需要划分VLAN,将监听网口与其他网口进行逻辑隔离,这样监听网口除了可以接收到镜像数据外,不会再接收到其他的交换数据。

2.2.3 按需求连线

配置好网口后,即可按需求进行连线,将数据记录设备连接到监听网口,需记录数据的设备连接到镜像网口,无需记录数据的设备连接到普通网口。这样不影响系统内本身的数据交换,却可以采集记录到系统内需要的数据内容。

2.3 基于SharpPcap的数据抓包

SharpPcap的全称是Sharp Packet Capture,是一种基于WinPcap驱动,用于.NET平台,具备网络流量捕获、发送和分析的开发框架。SharpPcap包括两个动态链接库:SharpPcap.dll及PacketDotNet.dll,前者主要处理网络部分,后者主要处理数据报文的解析与构造[3]。

本文基于SharpPcap的抓包步骤如图2所示。获取网卡设备列表并打开需要抓包的对应网卡;同时设置好过滤器、缓存区大小和线程优先级等其他参数;把网卡上的数据包复制到内核缓冲区中;通过上层的调用,把内核缓冲区中的数据包拷贝到用户缓冲区中。经过一定的处理,再把数据包存放到硬盘上[4]。

图2 数据抓包流程

其中,为了避免记录重复的数据包,造成存储过多的无用信息,对事后分析造成影响;或因记录过多的无用数据致使单位时间内采集的数据量过大而导致关键数据的错记或漏记,需在数据采集过程中就对数据信息进行过滤处理。由于SharpPcap自带过滤功能,因此可通过SharpPcap过滤器进行采集阶段的逻辑隔离,可以限定接收数据包的协议类型、网络IP以及端口号等,例如:CapDev.CapDevice.Filter = "udp and (dst port 2000 or dst port 3000)",表示只接受UDP协议,并且只捕获目的端口号是2000和3000的数据包,其余数据一概过滤,不进行捕获。

2.4 缓存处理机制

由于采集记录数据的过程需要中央处理器(Central Processing Unit,CPU)处理时间,当新数据包到来时,若系统底层分接器还在处理前一个数据包,新数据包就会被丢弃。另外,若内核缓冲区没有足够的空间来容纳从网卡上复制过来的新数据包,或者内核缓冲区满了,新数据包也会被丢弃。除此之外,若数据来源方式不同,就需要开多个线程来采集数据,在记录数据的时候需要保证不同线程下数据的时序问题。

综合考虑以上问题,需要设计一个缓存处理机制,保证采集到的数据即使无法立刻处理也不会被丢弃,而且可以按照采集到的顺序按序记录。

首先,定义一个队列:

ConcurrentQueueExecuteQueue=newConcurrentQueue();

然后,将需进行缓存处理的事件添加到队列中:

Action act = newAction(delegate

{

……//数据存储事件

});

ExecuteQueue.Enqueue(act);

最后,单独开辟一个线程,只要队列中有内容,便按顺序执行队列中的事件:

publicvoidThread()

{

while(true)

{

//运行执行队列

ExecuteQueue.TryDequeue(outAction action);

if (action != null)

action();

}

}

2.5 多缓存数据采集记录

数据记录模块主要是将采集到的数据内容写进文件内,形成统一的记录文件。

首先,为更好地区分不同的记录文件,文件名以“SSS_YYYYMMDDhhmmss_AA.n5r”的形式统一进行命名。其中“SSS”表示数据类型,例如当其为“System”时表示记录的是系统网的数据,“Story”时表示记录的是剧情网的数据;“YYYYMMDDhhmmss”表示记录时刻的年月日时分秒;“AA”表示记录数据的站点号;“*.n5r”为本文自定义储存二进制数据的文件类型。文件记录采取多数据块缓存模式进行文件的记录工作,记录流程如图3所示。其次开辟出多个数据存储空间,并分配好每个存储空间的最大存储容量(暂设定为5个数据存储空间,每个存储空间的容量为10 M,可根据实际性能进行变动)。在文件记录开始后,选择一个存储空间进行数据的记录,文件记录的格式如表1所示。当某一个存储空间在记录某一条报文后刚好超出了最大存储容量,则立刻选择一个空的存储空间,将这条报文移至空间的起始位置开始新的存储空间的存储,而之前存储空间的剩余部分用“0”填满,进行写文件的操作,在文件写好后再将此存储空间清空,进行存储的备用。

图3 数据记录多缓存储存机制

表1 信息数据文件记录格式

而下一个存储空间存满后,采取同样的操作——新选择一个空的存储空间进行存储,同时将这个存储空间的剩余部分用“0”填满,然后将此空间的内容续写在之前的文件后面。在数据记录结束时,不管一个存储空间是否存满,都直接将已记录的内容进行写文件的操作,最终形成一个完整的记录文件。文件的组成如图4所示。

图4 记录文件组成示意图

3 性能测试及分析

性能测试连接方式如图5所示,一台主机通过镜像口给另一台主机发送测试数据包,数据采集记录设备在监听口进行数据捕获。

图5 性能测试连接示意图

为了验证系统的数据采集记录性能,在不同数据速率、不同数据发送长度和不同数据发送频率下对其数据丢包率进行了测试,测试结果如表2所示。

表2 数据采集记录性能测试

通过测试记录可以看出,通过本文捕获监听的方式进行数据采集记录,其丢包率非常低,在不同数据包长度和不同发送频率下,均表现良好,只有数据包发送频率过快时,丢包率才逐渐上升,而且通过本文捕获数据包的方式也明显优于通过UDP协议接收数据包方式的效率。

因此可以认为本文的数据采集记录系统在较大带宽的情况下依旧具有良好的可靠性,满足设计要求。

4 结束语

本文提出了一种基于镜像口抓包的数据采集记录系统,该系统通过网络监听的方式,实时抓取网络系统内的有用数据,而对本身的网络系统不产生任何影响,并且可通过交换机编程及软件配置灵活过滤数据内容,通过动态内存池及多线程技术提高了网络数据记录速度。经过仿真验证及性能测试,证明此系统具有较高的记录带宽和可靠性,且能够实时监控记录全过程,可有效应用于各类分布式或集中式系统的网络数据采集记录。

[1] 李斌,任磊,王枭雄,等. 一种远程分布式雷达组网数据回灌方法的设计与实现[J]. 现代导航,2019(4):304-307.

[2] 魏凯强,赵光磊. 机载以太网数据记录系统设计与实现[J]. 电脑与信息技术,2018,26(3):64-67.

[3] 刘业,田琨玮,刘林峰. 基于SharpPcap的网络流量监控系统[J]. 计算机工程与设计,2013,34(7):2328-2332.

[4] 肖丹. 基于WinPcap的网络封包数据实时采集技术[J]. 科技资讯,2011(6):20-21.

Design and Implementation of Data Acquisition and Recording System Based on Capturing Packet Through Port-Mirroring

CHENG Xiang, REN Lei, ZHANG Shaoze, LI Yuanqing

Collecting and recording data during system development and testing can not only provide data sources for the performance evaluation of system function, but also provide a means for reproducing the battlefield experimental situation. In the paper, based on distributed time mechanism, network monitoring, data capture, and multi-cache recording, a data acquisition and recording system are designed for the actual needs in projects. The system design includes the system composition and architecture, and the design and implementation of key technologies. Simulation application was carried out according to the design content, and the performance indicators during the system development test were tested and analyzed. Experimental results show that this data acquisition and recording system not only runs efficiently, but also satisfies the requirements during the system development test stage.

Port-Mirroring; Capturing Packet; Data Acquisition; Data Recording

TP393.11

A

1674-7976-(2021)-03-205-05

2021-01-13。程翔(1989.09-),陕西西安人,硕士,工程师,主要研究方向为系统仿真与建模、火力与指挥控制。

猜你喜欢

存储空间监听镜像
基于多种群协同进化算法的数据并行聚类算法
英国风真无线监听耳机新贵 Cambridge Audio(剑桥)Melomania Touch
苹果订阅捆绑服务Apple One正式上线
镜像
千元监听风格Hi-Fi箱新选择 Summer audio A-401
用好Windows 10保留的存储空间
镜像
网络监听的防范措施
应召反潜时无人机监听航路的规划
镜像