APP下载

基于WinPcap的民航通信网络数据监测与应用分析

2020-12-14刘飞

软件导刊 2020年9期

刘飞

摘  要: 本文利用数据捕获开源库WinPcap,致力于从网络底层提供一种民航通信网络的数据帧嗅探、网络监视和应用分析的解决方案。方案架构是具有高并发的生产者消费者模式,多线程的完成四个功能架构模块的处理,同时从五个方面来完成数据应用分析,实时掌握网络利用情况,提供高效的数据查询、信息统计和网络监测服务,并对数据库提出几点优化改进意见。最后根据统计信息可以进一步优化网络结构,提供更加安全、可靠和高效的通信服务。

关键词: 民航通信;帧嗅探;网络监测

中图分类号: TP393.09    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.09.049

【Abstract】: This paper uses WinPcap, an open source data acquisition library, to provide a solution for data       frame sniffing, network monitoring and application analysis of civil aviation communication network from the bottom of the network. The scheme architecture is a producer-consumer mode with high concurrency. It completes the processing of four functional architecture modules by multithreading. At the same time, it completes data application analysis from five aspects, grasps the network utilization in real time, provides efficient data query, information statistics and network monitoring services, and puts forward some suggestions for database optimization and improvement. Finally, according to the statistical information, the network structure can be further optimized to provide more secure, reliable and efficient communication services.

【Key words】: Civil aviation communication; Frame sniffing; Network monitoring

0  引言

隨着民航的快速发展,民航通信网络规模越来越大,网络结构也越来越复杂。民航通信网络大体分为局域通信网络和异地传输网络。传输网络按照中国民航航空系统组块升级(ASBU)发展与实施策略,未来将采用IP作为地面网络的核心技术[1]。因此有必要从网络底层提供一种民航通信局域网络和传输终端网络的数据帧嗅探、网络监视和应用分析的解决方案。WinPcap提供抓包和网络分析的功能,可通过网络适配器监听共享通信网络上的数据帧,完成网络监视、故障诊断、统计分析等功能。

1  网络数据封装

TCP/IP模型参考了OSI理论体系结构,具有分层结构,分别为应用层、传输层、网络层和网络接口层,见图1。最上层的应用层通过各种协议向应用进程提供各种业务应用,数据在从上层向下层传送的过程中完成数据封装,并以比特流的形式传给底层通信设备。网络接口层使用两种标准帧格式,Ethernet_II和IEEE802.3。不同的Length/Type字段值用来区别这两种帧的类型,当字段值小于等于1 500(0x05DC)时,帧使用的是

IEEE802.3格式;当字段值大于等于1 536(0x0600)时,帧使用的是EthernetII格式,网络中大部分使用EthernetII格式[2]。

本文例举EthernetII格式,D.MAC代表目的物理地址,S.MAC代表源物理地址,TYPE标识协议类型,DATA为网络层的数据包,FCS是校验字段。数据封装过程中,协议数据单元在传输层添加协议报头生成数据段,网络层添加IP报头生成数据包,网络接口层添加帧头(D.MAC、S.MAC、TYPE)和帧尾(FCS)生成数据帧。解封装是封装的逆过程,从接口层到应用层逐渐拆解协议包,处理包头中的信息,取出数据信息。本文根据解封装过程,按照顺序提取出帧中的type、timestamp、protocol、sourceIP、destinationIP、protocoldata等信息,为数据分析和统计做准备。

2  WinPcap技术

WinPcap(windows packet capture)是为应用程序捕获网络底层数据的开源库,可以嗅探到网络接口层的以太网帧,适用于数据监控、协议分析、网络安全等方面。WinPcap分为三个部分:核心的NPF(netgroup packet filter),运行在操作系统内核中的驱动程序,直接与网络驱动程序交互,获取网络上的原始数据[3];底层动态链接库packet.dll,提供访问驱动的函数;高级系统无关库wpcap.dll,更强大的与libpcap一致的高层抓包函数库。数据捕获是将网络适配器设置为混杂监听模式(promiscuous),在总线型以太网上,适配器可以接收一切可接收的数据[4]。

3  协议解析算法

数据帧嗅探是直接调用wpcap.dll动态链接库中的API函数来完成,但是捕获到的以太网帧是一串需要按特定协议格式解析的字符串,API函数没有此种函数。这就需要设计一种算法,便捷高效地完成以太网帧的解码,其优劣也制约着数据交换处理能力。本算法基于函数unflatten from string,即按照簇规定的格式从字符串中智能化匹配出需要的信息,见图2。第一次是从以太网帧中还原出以太网帧头部和帧内容,第二次是从帧内容中还原出具体协议的头部和协议内容,输出的数据也是具有规定格式的簇变量,方便二次开发和数据传递。

4  功能应用分析

协议数据按不同字段存入MySQL中,应用分析从五个方面来统计分析库中大量数据,实时掌握网络利用情况。例如,针对信息安全等级为三级的监视数据处理服务器网络,服务器通过1803端口本地广播监视融合数据,服务器和终端通过1801端口本地广播心跳信息,AeroTrac服务器会将单雷达数据绕转到网络中,莱斯监视服务器有专门的雷达子网。按照本文的解决方案,实时监测网络中服务器不同端口UDP协议数量和网络中单雷达数据,对于发现进程阻塞、心跳异常、信道故障等方面有积极作用。

4.1  协议数据

协议数据包括协议头部和协议内容两部分。协议头部按照上文解析算法从簇变量中解绑得到Protocol、Identification、IP Address等信息,协议内容是应用层的应用进程协议数据单元PDU。同时太网帧中的Type字段,表示数据应该发送到上层哪个协议处理,也需要存入数据库。协议数据按type、timestamp、protocol、sourceIP、destinationIP、protocoldata六列存入关系型数据库MySQL,以便快速靈活完成数据查询和统计分析功能。

4.2  协议分布

根据协议数据的时间戳timestamp查询数据库中单位时间各种协议数量,用ECharts饼图展示各种协  议分布情况。数据库字段type和protocol值可确定协议类型,比如UDP协议type值为0x0800,protocol值为17。

4.3  某IP活动

根据协议数据的时间戳timestamp查询数据库中单位时间IP数据包量和对应协议量,并以ECharts柱状图展示统计信息。数据库字段sourceIP、destinationIP可确定源IP地址和目的IP地址,再根据字段type和protocol值可确定IP对于的协议类型数量。

4.4  故障诊断

根据时间戳timestamp和IP地址查找协议数据,针对故障现象从底层查找特定时间段、IP地址、端口、协议类型的数据包,分析故障原因。

4.5  安全监视

根据统计分析的结果,综合评判网络状态、进程运行、信息传输状况,发现网络中的可疑网络行为并提供告警服务。

5  架构与模块

本文基于虚拟仪器技术,采用两个队列三个循环多线程完成数据采集、协议分析、存储与应用分析,即生产者消费者模式。生产者与消费者之间通过队列来作为数据缓冲区,平衡了生产者和消费者的处理能力,保证数据采集、处理和存储的高并发。

5.2  协议分析模块

该模块负责将采集到的数据帧匹配出协议数据,库PROT按照上文协议解析算法从以太网帧队列取出数据帧来识别协议类型和完成协议分析,最后将得到的协议数据加入到协议数据队列中。

PROT.Identify Protocol根据Length/Type字段识别帧类型和协议头部Protocol值判断协议类型;PROT.Parse Packet按照上文协议解析算法分析出协议头部和协议内容。

5.3  存储与应用分析模块

该模块取出协议数据队列的数据,存储于MySQL关系型数据库中,同时完成协议分布、某IP活动、故障诊断、安全监视等方面的应用统计分析。此模块涉及到数据库插入和查询功能,INSERT 函数将协议数据到存入MySQL数据库,SELECT函数按照条件查询来统计结果。

5.4  WEB服务模块

Wampserver是一款Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包,免去繁琐的配置环境过程,可以轻松搭建需要的WEB服务。ECharts是 JavaScript 实现的开源可视化库,提供了丰富的可视化统计图表。此模块在Wampserver和ECharts基础上,提供一个交互网页,可以条件查询MySQL中的协

议数据和调用ECharts图表库可视化显示不同应用的统计分析信息。

6  数据库优化

以太网帧在通信网络中数据量较为巨大,对于帧速率为50pps的网络来说,每天帧数量可达到400万级。因此数据库需要优化性能,提高数据库访问的灵活性和效率,减轻服务器负担。本文在实践的基础上,提出几点优化改进意见。

(1)选择合适的存储引擎。建立数据表时要根据应用特点确定存储引擎,本文应用是插入和读取操作为主,且对事务的ACID特性没有要求,选择MyISAM存储引擎比较合适[5]。

(2)前期统计。在帧采集和分析时可利用移位寄存器来统计数据量,网页端只需要调用统计量显示即可,避免后期在大量数据中查询统计。

(3)数据分表。每日生成一个数据表,协议数据按日期存入对应的数据表中,可以限制表的数据量,减少数据表负担。同时采用MySQL事件调度器Event Scheduler,根据实际应用需求,周期性触发数据表删除操作,抛弃过期无用数据表;

(4)批量插入。数据存入表时选择批量插入,在协议数据出队列时再次增加缓冲手段,等待数据量到达一定量时才批量存入数据表;

(5)数据库查询优化。规范SQL语句,添加索引,使用where、limit、字段等来限制查询结果,避免全表扫描和无用数据查询。

7  结束语

本文从网络底层完成民航通信网络的多方面应用分析,可更彻底了解通信网络运行状态。整个方案架构是具有高并发的生产者消费者模式,利用缓冲特性的队列多线程完成数据采集、协议分析、存储与应用分析,最终通过Wampserver服务器提供高效的数据查询、信息统计和网络监测服务。在此基础上,可以根据统计信息进一步优化网络结构,提供更加安全、可靠和高效的通信服务。

参考文献

[1]IB-TM-2015-002, 中国民航航空系统组块升级(ASBU)发展与实施策略[S]. 中国: 中国民用航空局空管行业管理办公室, 2015.

[2]以太网帧结构详解[EB/OL]. https://www.cnblogs.com, 2019-6-6.

[3]吴玉, 李岚. 基于WinPcap的网络数据获取系统的研究[J]. 微型电脑应用, (6): 10-12.

[4]沈辉, 张龙. 基于WinPcap的网络数据监测及分析[J]. 计算机科学, 2012: 20-23+34.

[5]韦美雁, 段华斌, 周新林. 大数据环境下的MySQL优化技术探讨[J]. 现代计算机(专业版), 2018, 630(30): 70-74.