关键字:数据链 以太网 监视 捕包 解码
1 引言
战术数据链是一种按规定的消息格式和通信协议利用各种先进的调制解调技术、纠错编码技术、组网通信技术和信息融合技术以面向位的方式实时传输格式化数字信息的数据通信系统。美军数据链系统的发展一直走在世界前列,对其进行综合研究,设计建立以太网监视系统,对于发展新型数据链具有十分重要的现实意义。
2 美军战术数据链
美军数据链研究从20世纪50年代开始。半个多世纪以来,美国和西方各国已连续发展各类数据链几十种,目前仍在服役的还有十余种。主要数据链如下表所示。
表1 美军主要数据链
通过对美军数据链的研究,不难发现其具有消息格式多样、应用平台广泛、支持业务种类多、链路容量大、传输速率高等特点。
3 数据链以太网监视系统设计
3.1 系统功能需求
现代战争所需要的数据链系统,是一个能联系分布在海陆空天电的各类平台和传感器、数据处理和指挥控制单元,以及各作战部队的数据网络,这个网络把各指挥系统和作战部队有机地组织起来,形成信息优势和作战优势。从这种意义上说,建立一个通过计算机实时采集、监视、记录、分析链路传输的数据,并以数据格式显示,以保障数据链消息可靠、高效、无冲突传输的监视系统十分必要。
因而设计以太网监视系统应当具有以下功能:
1、数据采集:具备以太网上多路接口报文捕获功能;
2、解码、显示:解码并根据用户需要采用各种图、表显示数据和分析结果;
3、数据处理:对收到的数据包,根据类型、大小、内容等属性分类、统计、分析、存储、回放;
4、数据过滤:在采集、显示、统计时,根据需要设置一定的过滤条件。
3.2 系统方案设计
数据链终端设备主要由数据处理器、联合信息分配系统终端、天线等部分组成,根据需要可配置在各军兵种不同级别的指挥平台上,其组成如图1(数据链终端部分)所示 :
图1 数据链终端及以太网监视系统结构框图
数据处理器是数据链终端设备的核心,相当于一个翻译器, 所有流经数据链的数据包都必经它的处理,因而将数据处理器所连接的交换机端口镜像到网络监视系统所连接的端口,采集所有数据处理器进出的信息,就可以达到监视数据链链路的目的。根据上述思想设计监视系统如图1所示。
系统的基本工作流程描述如下:
(1)捕包子系统截获镜像端口上传输的数据包,存储到数据库中,并送解码分析子系统处理;
(2)解码分析子系统实时读取截获的数据包,解析数据包的源地址、目的地址、端口信息、协议信息等信息元素和数据包中携带的指挥信息、态势信息等作战元素,并根据数据包类型、大小、内容等属性进行分类、统计、分析;
(3)显示子系统实时显示解码分析子系统解码得到的各类信息元素和作战元素;
(4)当用户通过显示子系统的交互界面回放历史数据时,显示子系统从数据库中取出所调数据包,送解码分析子系统解码后显示。
4 数据链以太网监视系统实现
数据链以太网监视系统分为捕包、解码分析、显示三个子系统实现,本文在Windows2000平台下基于Visual C++ 6.0设计开发。对于显示子系统,目前实现技术已较成熟,本文将重点讨论捕包和解码分析子系统。
4.1 网络捕包
基于NDIS的核心态包过滤技术具有较高的结构性和可扩展性,其中间层驱动程序处于Miniport驱动程序(数据链路层)和Protocol驱动程序(网络层)之间,所有发送到网络和从网络接收的数据包都要由此通过,因此中间层驱动程序可以对所有网络数据包进行过滤和处理 。故NDIS中间层驱动程序是实现以太网监视的理想选择。
本文使用微软的驱动程序开发包DDK进行NDIS中间层驱动程序编程。具体流程为:
(1)NDIS驱动程序在主入口函数DirverEntry中调 用 NdisMinitializeWrapper函数注册输出函数集入口,得到设备句柄;
(2)输入(1)得到的句柄调用NdisIMRegisterLayeredMiniport,为NDIS中间层驱动程序注册一套Miniport回调函数,这样上层Protocol协议就认为中间层驱动程序是网卡,并通过NDIS库调用这些回调函数;
(3)调用NdisRegisterProtocol,为NDIS中间层驱动程序注册一套Protocol回调函数,这样下层网卡就认为中间层驱动程序是一个协议,并通过NDIS库调用这些函数;
(4)当操作系统发现NIC时,NDIS调用中间层驱动程序注册的ProtocolAdapterBind函数,该函数内部需要调用NdisOpenAdapt打开适配器,保证了网卡和中间层的绑定关系;
(5)调用PtReceivePacket接收网卡收到的数据包;
(6)数据包与所设置过滤规则进行比较,不满足规则时调用函数返回NDIS_STATUS_NOT_ACCEPTED,该宏在ndis.h中定义,这样就结束了本接收函数的调用。
针对战术数据链特殊的应用需求,保证监视系统稳定、高效运行十分重要。然而,传统的NDIS中间层驱动捕包算法在入口点对应的函数直接对数据包进行处理,当数据量很大时,会耗尽NIC驱动程序的接收缓冲区空间,造成输入输出阻塞,降低下层NIC从网络中接收数据包的能力,严重影响系统性能 。为了提高系统的处理效率,在对网络适配器进行操作时,应确保系统在网络适配器的接口系统中拥有足够的缓冲区,中间层驱动程序不在入口点对应的函数里对数据包直接进行处理,而是调用PtReceivePacket接收后直接送入预留的内存缓冲区,等候上层程序处理,并尽快返回函数。采用这种处理方案,不仅防止了阻塞产生,同时使得数据包捕获和上层程序处理并行工作,提高了网络捕包的效率。
根据上述思想,中间层驱动程序初始化时首先建立接收数据包的内存缓冲区队列、发送数据包的内存缓冲区队列各一个,建立一个内核线程;当发送数据包队列中有数据需要处理时通知内核线程,将下层输入的数据包缓存在接收数据包的内存缓冲区;当上层程序空闲时,通知内核线程读取内存缓冲区中的数据包,释放被占用的接收缓冲区空间。算法描述流程如图2:
图2 网络捕包算法流程图
4.2 解码分析
通过网络捕包,得到了数据链链路上所有用户关心的数据包,面对这些数据包,必须解码分析,才能将有用信息传递给用户。然而数据链系统体制各异,协议格式多样,单一解码机制不适用,需要一个对各种协议格式通用的解码模型。另一方面,数据链监视系统特殊的应用需求不仅要求解码分析子系统将数据包的源地址、目的地址、端口信息、协议信息等信息元素解码显示,更主要的还要将数据包携带的指挥信息、态势信息等作战信息解码显示。
首先对所捕获数据包的信息元素解码。解码分析子系统从捕包子系统读取的数据包是以太网帧,要对其解码分析,必须了解以太网帧的帧结构(如图3所示)。数据在网络上传输时被从应用程序传送到一个协议栈上,当数据在栈上一层一层地向下传送时,每一层的相应协议把上一层传送下来的数据封装为自己的格式,详细请参考《TCP/IP详解》 。数据包解码就是通过这些格式来获取地址信息、端口信息、包类型信息等信息元素。
图3 以太网帧结构
通过上述解码得到应用数据段。采用面向比特型报文是美军战术数据链报文最突出的特点之一。数据链以太网中应用程序(主要是各种数据链协议)将作战信息和报头封装为应用数据。每个报文含有一条或多条消息,每条消息又含有一个或多个消息字,战术信息按消息格式封装在消息字中 。消息格式因采用的数据链不同而异。
本文建立基于数据链消息标准描述数据库的XML数据描述文件,以函数调用接口的方式提供用户使用。消息字中的作战信息在逻辑意义上分为各个元素,解码时以元素为最小解码单元。开始解码时,解码模型提取消息系列标识和消息标识,即所解码数据链的消息格式和当前解码消息的标号,与XML数据描述文件中的消息数据库相比对,进行消息解码。采用XML文件,便于消息标准的修订,当标准修订后,只需修改XML文件,不需修改解码源程序就可适应实际需求,大大简化了系统的实现和维护。具体算法流程如图4:
图4 作战信息解码算法流程图
5 结论
本文作者创新点:通过对美军数据链技术标准的分析研究,结合军事需求,设计提出了基于以太网的数据链监视系统,从具体实现的角度,应用功能强大、发展前景很好的NDIS中间层驱动程序实现捕包,并在性能上做了优化;采用基于数据链消息标准描述数据库的XML数据描述模型实现各种战术消息的解码。本文所提出系统对数据链的进一步开发有很好的参考价值和现实意义:
1、可提高数据链整体规划设计的效率,为联调中系统测试和性能测试提供可靠有力的技术支撑;
2、部队实现数传指挥后,通过监视系统的实时显示和数据回放功能,可分析研究各作战单元与指挥控制单元间的协同配合,有利于及时发现问题,提高日常训练效果,保障战时链路可靠;
3、以可视化的图形窗口、灵活的交互界面显示用户关心的数据包信息及链路信息,便于网络管理者、操作者的交互操作。
基于以太网的数据链监视系统开发是一项非常复杂的工作,特别还要考虑数据链协同互联问题和系统可靠性问题,今后将在协同互联和可靠性上做进一步研究。
参考文献
1 黄烈炎,魏蛟龙.美军数据链建设及启示.舰船电子工程,Vol.25,No.2,2005:29-32
2 刘红军,徐永胜.美军战术数据链报文格式及其特点.中国电子科学研究院学报,Vol.1,No.3,2006:291-295
3 Stevens W R.TCP/IP详解.北京:机械工业出版社,2000
4 Microsoft DDK For Windows 2000文档,2000(8)
5 Microsoft Co.Windows 2000 驱动程序开发大全:第一卷 设计指南[M].冯博琴译.北京:机械工业出版社,2001
6 侯功华,赵远东.基于NDIS中间层的包过滤的研究与设计.微计算机信息,2006,12-3:141-143