勇红亮
摘要:为了解决目前IP网数据监视面临的各种问题,该文实现了一种基于SharpPcap的IP网网络监视系统。首先介绍了SharpPcap框架,然后说明了数据交换协议解析和链路时延计算功能的实现方法,详细分析了系统监控界面UI设计的注意事项。最后通过实际验证,表明该系统达到了预期效果,为IP网的稳定运行提供了可靠保障。
关键词:SharpPcap;协议解析;监控界面设计
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2020)26-0043-03
1 背景
IP网承担航天测控关键数据的传输工作,相关岗位人员在航天测控任务中需要实时掌握网络状态,目前岗位人员使用wireshark软件以及编写的Lua插件对网络中的关键性数据进行监视。随着航天测控任务种类的逐渐增多,目前现有监控手段存在以下问题:
1)现有网络数据的捕获、统计信息显示、试验数据记录均依靠wireshark软件,wireshark本身是针对所有网络数据嗅探和分析的软件,没有针对航天测控任务数据类型进行优化,因此成为提升监视能力的瓶颈;
2)目前运行在wireshark下的Lua插件,虽可以完成相关统计和报警功能,但是统计结果以文字进行显示,且异常信息提示不明显,信息统计显示不清晰,给岗位人员监视带来不便;
3)在任务高码率箭遥原码传输条件下,数据速率发生过快,Lua插件易发生卡顿现象;在任务多目标测控条件下,测控目标增多,导致发送数据种类增多,Lua插件目前因无法实现数据分页显示功能,导致数据无法及时显示更新,以上均给网络监视带来不利影响;
4)专业组在统计事后数据分析时,需要二次进行相关统计计算,缺乏一键生成报告的功能。
因此,急需开发一套监视系统解决上述问题。本文实现了一种基于SharpPcap框架的IP网网络监视系统,该系统具有清晰的监控界面、准确的协议解析、详细的信息展示和及时的告警提示等功能,有效解决了IP网网络监控中存在的上述问题。
2 关键技术及系统架构
2.1 SharpPcap框架
能够捕获到经过交换设备的数据包是进行网络监控的首要条件,如果从底层代码开始编写捕获程序将面临许多困难,为减少相关工作带来的困难,本监视系统直接利用了SharpPcap數据包捕获框架。它不仅能够支持大流量数据捕获,也可以使用队列对数据进行缓冲与相关统计。
SharpPcap包括两个动态链接库:SharpPcap.dll和PacketDotNet.dll,前者主要处理网络部分,后者主要对捕获的数据包进行解析处理。
2.2 数据交换协议解析功能的实现
由于SharpPcap中没有封装数据交换协议对应的数据包类,因此我们首先需要创造一个数据交换协议类,然后依靠数据交换协议底层协议(UDP)中载荷属性保存的上层数据对协议进行解析。在SharpPcap中,UDP类的载荷属性为PayloadData,该属性会返回一个byte数组,该数据保存了上层协议的全部信息,然后根据数据交换协议格式对byte数组进行分割、解析即可获得数据交换协议数据各个字段的详细值。
此外,在数据解析功能模块中,我们还需要根据数据交换协议数据的接收方向、发送方向、数据标志等信息区分不同的数据交换协议信息流,从而实现不同信息流的收包、丢包、乱序和重复情况的统计。因此需要设计一个数据交换协议信息流的类,它主要由数据交换协议streamID、数据交换协议streamIdentification、数据交换协议LostNum等多个属性构成,其中数据交换协议streamID记录数据交换协议信息流的编号,数据交换协议streamIdentification代表了某个信息流的唯一标识号,该标识号通过接收方向、发送方向、数据标志等属性组合而成。在进行统计时,只需找到标识号即可获取某一信息流的收包、丢包和乱序等统计情况。
2.3 链路时延的计算
在IP网中,一般情况下链路的时延检测主要依靠Ping程序来实现。Ping程序通过ICMP echo Request请求包和echo Reply回应包来进行网络时延计算,ICMP报文本身并没有记录网络时延信息。
由于本系统是对网络数据的捕获,并不发送或接收ICMP报文,无法直接通过捕获到的ICMP报文信息得到网络时延信息。因此需要设计一个ICMP报文流类ICMPstream,该类由图 1所示的10种属性组成,我们用对某一方向上的ICMP Request报文到达系统捕获网卡时间作为时间基准,统计计算出有关时延的所有信息。当系统捕获到一个ICMP报文后,首先区分报文类型,如果是Request包,则根据ICMPstreamIdentification属性判断是否是一个新的ICMP报文流,如果是,则加入ICMP报文流列表中;如果不是,则更新找到ICMP报文流中的到达时间;如果是reply包,首先根据ICMPstreamIdentification属性判断是否为存在的ICMP报文流,如果是,则计算出网络时延,并根据条件更新最小、最大、平均时延、时延抖动和时延方差等信息,时延抖动大于设定值时,将发出告警信息。
2.4 读取XML文件
由于不同任务中,发射场区、指控中心以及数据交换协议协议中BID代表的含义均会发生变化,如果直接在系统编码中实现对这些数据的解析与翻译,会导致针对不同任务都需重新编译软件的问题,降低系统的灵活性和可操作性。为解决这个问题,系统使用了XML语言来记录经常需要变化的值。
XML是一种可扩展标记语言,可以兼容跨平台的数据交互,它主要用途是用来说明数据是什么,以及携带的数据信息。在本系统中,岗位人员将可能会变化的数据提前保存至XML文件中,然后通过实时读取的方式,获取这部分的数值;当任务需求发生改变时,直接对XML配置文件修改即可。这样不仅提高了系统的灵活性和可操作性,而且配合例如Notepad++等文本编辑器可大大简化配置信息的录入过程。
2.5 系统架构
综上,系统应该具备如图2所示的六大功能模块,其中数据捕获模块主要负责网卡工作模式和参数的配置和选择,对网络的数据包进行实时捕获;数据解析模块负责对捕获的网络数据包进行协议解析,重点对PDXP协议和ICMP协议进行相关处理;数据统计模块利用数据解析模块生成的原始数据结合从XML读取的相关配置进行统计计算,生成相关统计结果,并对结果进行分类;告警信息模块主要根据异常阈值的设置和告警信息模块的统计结果进行实时告警,告警方式分为声音告警和文字告警;报告导出模块主要负责数据复现,存储输出为Excel报告;数据显示模块主要实现系统信息的内部形式与岗位人员可以直接接受形式之间的转换,以表格、实时曲线、文字等多种表达形式,准确、迅速、直观地反映监控网络状态,为岗位人员决策提供有力支持。
3 系统界面设计与实现
3.1 监控界面UI设计
由于系统监控的网络捕获数据量大、数据种类多、刷新频率快,而且系统的屏幕显示内容是岗位人员与系统沟通的唯一途径,是获取网络状态的唯一方式,因此监控界面的UI设计必须便于岗位人员直观、快速、准确地获取系统实时状态,并能够及时发现系统异常情况。在软件交互设计中,用户界面是交互设计结果的自然体现,它是一个复杂的由不同学科参与的工程。根据软件易于控制、减少记忆负担以及界面一致性三个原则,结合系统实际运行工作环境和岗位人员需求,对系统界面UI设计提出如下要求:
1)界面设计整体视觉效果清楚明了,风格配色统一和谐,没有模糊表达数据;
2)根据历年来岗位人员操作经验和监视习惯,采用功能分区显示的方式,对监控信息进行分类集中显示,并实时刷新最新数据以及统计数据结果;
3)对于连续变化的值采取曲线图方式展现,并可根据时间变化自动发生改变;
4)对于异常信息应分类发出明显提示。
最终,经综合考虑,本系统的最终界面设计效果如图 3所示,該界面设计的方式,能够很大程度上便于岗位人员的操作使用。
3.2 系统实现
本软件在Visual Studio 2015下使用C#语言开发,SQLite作为数据库,系统最终部署位置及监控网络简要拓扑图如图 4所示。
系统界面中间区域主要负责显示分发数据发送接收情况及告警信息显示,岗位人员可根据表头信息对任意类型的数据进行实时排序显示,极大提高了软件使用的灵活性;针对不同的报警情况,系统还可根据异常等级的不同,使用不同颜色进行区分显示,并及时发出声音告警,以提高软件的实时性。
系统界面右侧区域主要为辅助显示区域,通过曲线图,岗位人员可及时了解到一段时间内的各方向数据发送速率和时延变化情况,以便进一步掌握网络状态趋势;通过捕获T0数据,系统可得知任务发射的具体时间,并显示相关时间点对应的测控事件,岗位人员还可以使用计时功能,准确记录链路沟通时长。
界面顶部区域为系统功能设置区,岗位人员可设定相关参数,并以Excel形式一键导出本次任务相关数据报告。
4 结束语
本文完成了对IP网网络监视系统的设计实现,该系统采用SharpPcap框架作为数据包捕获接口,能够对IP网中的各类数据包进行实时抓取并及时解析,通过良好的界面设计,准确、高效地为岗位人员提供被监控网络中的各类数据流状态,并对异常信息做出及时告警,为IP网的稳定运行提供了可靠保障。经过实验验证,本系统实现了最初设计目的,具有较高的推广使用价值。
参考文献:
[1] 康小军, 何方白. 基于WinPcap的网络吞吐量测试的设计与实现[J]. 电子科技, 2007, 20(11): 39-42.
[2] 刘业, 田琨玮, 刘林峰. 基于SharpPcap的网络流量监控系统[J]. 计算机工程与设计, 2013, 34(7): 2328-2332.
[3] 邢敏, 黄岚. 基于TCP/IP协议模拟仿真系统的研究[J]. 吉林农业大学学报, 2008, 30(3): 368-371.
[4] 胡崧. 网页色彩与版式设计创意实战[M]. 北京: 中国青年出版社, 2006.
[5] Stevens W R.TCP/IP 详解卷 1:协议[M]. 北京: 机械工业版社, 2009.
[6] 刘江, 宋晖. 计算机网络技术与应用[M]. 北京: 电子工业出版社, 2019.
[7] 兰顺碧, 阙向红, 万奕. Visual Basic.NET程序设计教程[M]. 北京: 人民邮电出版社, 2012.
[8] 刘明城. 节点间轻量级通信协议栈的设计与研究[D]. 成都: 电子科技大学, 2015.
[9] 付品林. 基于隔离网卡的并行测试系统的设计与实现[D]. 南京: 东南大学, 2015.
【通联编辑:谢媛媛】