APP下载

超短波自组织网络协议仿真

2015-12-23陈媛媛

计算机工程与设计 2015年8期
关键词:链路层数据包标志

陈媛媛,黄 炜,李 强

(1.电子科技大学 通信与信息工程学院,四川 成都611731;2.中国电子科技集团第五十四所研究所通信网信息传输和分发技术重点实验室,河北 石家庄050000)

0 引 言

对超短波无线网络进行网络监测、协议识别和入侵检测分析都须建立在获取超短波自组织网数据流的基础上。传统的直接截获超短波电台通信信号获取数据流的方法的弊端在于电台传输的信息一般进行加密处理,内部的通信协议和编码方式也未知,很难解调出原始的数据流。本文提出直接搭建承载自组织网络协议的仿真平台,设计了其具体实现方法,并设计网络中的中心节点截获全部通信节点的数据,为监测网络提供完整的数据。

1 MIL-STD-188-220D协议分析

MIL-STD-188-220D协议的定义请参见文献 [1]。

1.1 数据链路层

无线自组织网数据链路层协议在相邻的两个节点设备间运行,主要目的是实现数据在不可靠的无线环境中无差错传输。主要功能包括[2,3]:帧同步、差错控制、数据成帧、流量控制和链路管理。220D 协议定义3种类型的帧和3种链路帧结构[3]分别为:信息帧、无编号帧、监控帧、单字节寻址、4字节寻址和6字节寻址。本文主要讨论单字节寻址的无编号帧帧格式,其它格式分析方法类似,图1为单字节寻址的数据链路帧结构。

图1 单字节寻址的数据链路帧结构

其中,传输头在每一个数据链路帧之前传送,用于链路控制,由起止标志、传输信域、帧校验序列组成。传输信息域内容有信道编码信息 (FEC、TDC、加扰)、版本信息、网络访问延长控制信息等。在进行纠错编码时,整个传输头将进行格雷 (24,12)编码 (FEC)和7×24 的交织编码 (TDC)。

起止标志域是数据链路层的帧同步标志,是一个8比特的序列。本文使用的每一帧中的开始和结束标志为“01111110”。

地址域的作用是用来存放目的节点、源节点的链路层地址,本文主要讨论8位地址协议。地址域包含一个源地址和多个目的地址组成,总的地址数量不超过16个。无编号信息帧的控制域为00010011。

信息域的最大长度不超过3345并且其长度必须是字节的倍数,不足的数可以加1-7个0来补足。它的作用是封装来自网络层的信息,目的是传输信息。

帧校验序列是一个32比特的序列,用于差错检测。本文使用的帧校验的产生多项式为:P(x)=x32+x26+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1。

1.2 网络层

220D 协议的网络层是Intranet层,也叫3a层,用于在同一广播域中实现数据包从一个源地址到多个目的地址的路由。它也支持拓扑信息和网络连接信息的交换,以实现中继路由的发现。

Intranet Header是Intranet层的重点。其中,版本号(version number)代表当前使用的Intranet协议的版本,0代表220A、220B、220C,1 代表的是220D。Intranet Header的格式如图2所示。

消息类型 (message type)指出Intranet包中数据域里的数据类型,共有0至15个值,其中有效值有9个,分别是1代表Intranet确认,2代表拓扑更新,3代表拓扑更新请求,4代表IPv4,5代表ARP,6代表等等。

Intranet头长度 (intranet header length),用于指示Intranet头的字节数,其值是3、5 或者大于等于9 的数。RFC 791IP TOS 域的值决定服务类型 (type of service)的值。

信息识别编号是一个0~255之间的值,在分段重组或者有中继的情况下使用,每个传输的消息由其值和源地址一起唯一标识。其值由发送方指定。

图2 Intranet Header格式

最大跳数 (maximum hop count)指定了Intranet数据包在无线网络中可以被中继的最大次数。它由源主机指定,每中继一次减1,为值0则不转发,进行本地处理。

1.3 数据链路层协议解析[4]

数据链路层的解析要完成基带信号的处理和数据链路帧的字段分析。基带处理包括解交织 (TDC 译码)、纠错(FEC译码)、去扰等信道译码操作,根据标志序列完成数据链路帧的同步。完成帧同步后,进行0比特插入算法的逆操作——0比特删除,复出原始数据链路帧的比特序列。按照220D 协议的数据链路帧结构,分析源目地址、控制域、帧校验的字段信息是否符合规范。然后,检测帧校验序列是否正确,将帧校验序列错误的帧丢弃,正确解析出数据链路帧后则进行网络层的协议解析。数据链路层的协议解析流程,如图3所示。

1.4 网络层协议解析

网络层协议解析要先后完成Intranet层解析和IP 层解析。其中,IP层解析与传统网络的IP层解析一样,目的是通过检测消息类型字段,确定IP数据包承载的上层协议是UDP还是TCP。

图3 数据链路层协议解析

根据MIL-STD-188-220D的定义,Intranet的头部的第一个字节的高4位指示了消息类型。在进行Intranet层解析时,首先检查Intranet头部的长度,确定其是否使用分段重组和中继,再进一步解析上层承载的协议类型。Intranet层解析的第二步是通过消息类型字段的值来判断上层协议类型。比如,消息类型字段的值为 ‘4’,则说明上层协议是IPv4协议,下一步将进入Intranet层协议解析。Intranet层的协议解析如图1~图4所示。

2 220D实验平台设计

2.1 实验平台的硬件组成

由于无法获得军用通信电台搭建实验平台,又考虑到国家无线电规定,我们选用ISM 频段的无线通信模块搭建仿真平台。该模块主要由STM32 微处理器和SI4432 射频模块组成,工作在470 MHz频段。在实时性和传输功率方面较其它无线模块具有优势。其通信模块接口连接图和内部连接如图5,图6所示。

2.2 实验平台的软件设计

2.2.1 数据帧格式设计

220D 实验平台用于模拟220D 协议数据帧的端到端传输过程。220D 实验平台中使用的协议是简化的220D 协议,使用单字节寻址方式,报文格式为固定的格式。实验平台中传输的消息是用户数据经过IP 层、Intranet层和数据链路层逐层封装形成的[4],如图7所示。

按照Internet协议 (IP)在DARPA RFC791 中定义,IP报文格式较为复杂。在220D实验平台中,我们将IP报文的格式简化为源IP地址,目的IP地址,用户数据3个部分。

图4 Intranet层解析

图5 220D 实验平台节点的接口

图6 通信模块内部连接

图7 220D 实验平台的数据封装过程

根据Internet头部的结构的定义,Intranet头部最短为3个字节。在实验平台中消息类型的值是 “4”,表示承载IPv4协议;版本号的值是 “0”,表示220D;Intranet头部长度为 “3”;服务类型为 “0”。

根据MIL-STD-188-220D 协议规定,链路层的数据链路帧结构定义如图1所示。在220D 实验平台中,不进行帧校验,帧校验字段省略。这里使用的是单字节寻址。单字节源地址,消息指示为命令,命令响应比特的值为 “0”;单字节目的地址,无后续目的地址,扩展比特的值为 “1”。起止标识是 “01111110”;控制域是 “01110011”。

2.2.2 通信参数的设置

220D 协议标准的物理层定义了FSK、DPSK、CDP、ASK 和NRZ调制方式,速率是75bps~32kbps。SI4432射频芯片支持GFSK、FSK 和ASK 这3种调制方式,支持的速率是1kbps~128kbps。因此,220D 实验平台选择使用其中的FSK 调制方式,传输速率设置为75bps~32kbps范围内的9.6kbps。

SI4432[4]可以从FIFO 模式和直接模式获得调制数据。FIFO模式下STM32使用SI4432芯片的FIFO 来接收和发送数据。直接模式是将数据直接送到芯片的一个引脚,进行实时处理的。受通信模块内部硬件连接的限制,不支持直接模式。因此,在程序设计中,我们只考虑SI4432以FIFO 模式来进行数据的收发。发送端模块在上电后,首先对射频芯片初始化,通过SPI接口复位射频芯片的各寄存器,STM32微处理器通过SPI接口对SI4432的寄存器进行配置,进而控制通信频率、工作模式、频率偏差、调制方式等通信参数。STM32通过SPI读操作,读取SI4432寄存器的值,读操作的参数包括起始寄存器地址、读的字节数。其代码实现是:

STM32通过SPI写操作,配置SI4432寄存器参数,写入操作包括起始寄存器地址、写入的字节数和待写入的数据。其代码实现是:

220D 实验平台的通信参数设置如下:中心频率470 MHz、调制方式FSK、传输速率9600bps、载波频率间隔45kHz、发射功率20dBm,相应的寄存器设置见表1。

表1 通信参数相关的寄存器参数设置

2.2.3 发送端程序设计

在发送数据时,用户数据通过计算机的串口调制助手进行输入。来自计算机的用户数据是以UART 中断服务的方式发送给STM32。STM32通过UART 中断服务程序的将来自计算机UART 数据接收下来,写入到待发送的用户数据Usr_data 中。中断服务程序的流程如当检测到UART 中断时,进入UART 接收模式,清除中断标志。等待数据接收完成后,将接收到的数据写入到待发送的用户数据Usr_data 中。如果有UART 数据发送,则进入UART 发送模式将数据从UART 发送出去。

发送端对用户数据进行封装,生成链路帧后,按照SI4432设置的包长度将其逐个发送出去。用户数据的发送处理过程如图8所示。发送端的主程序不断地检测UART中断信号,当检测到UART 中断信号时说明有用户数据要发送。延迟200 ms (9600bps的UART 速率,在200 ms可以传输240 字节的用户数据[5]),等待用户数据传输完成,确认没有后续数据,再进入数据发送阶段。首先,用户数据按照2.2.1定义的报文格式进行封装,生成最终发送的数据链路帧。将生成的数据链路帧按照SI4432初始化时设定的发送包长度进行分割,每个包依次写入到SI4432的发送FIFO 中,逐个发送出去。SI4432 将一个包发送完一个包后,会产生nIRQ 中断,向STM32指示该数据包已经发送完成。STM32检测到nIRQ 中断后,停止SI4432的发送状态,清除发送FIFO,向发送FIFO 写入下一个待发送的数据包,再重新进入发送状态。不断重复这个过程,直到将所有的用户数据发送毕。

图8 发送端主程序流程

2.2.4 接收端程序设计

接收端的程序流程如图9所示。接收端在上电后,同样要完成STM32 和SI44432 芯片的初始化,设置通信参数,将帧起始标志指示变量sta_flag置零 (0表示没有检测到起始标志,1表示检测到起始标志)[6]。然后,关闭去了除了接收中断以外的其它所有中断,进入接收状态,等待接收中断 (中断发生时nIRQ 引脚电平会拉低)。读取中断的状态,将nIRQ的电平拉高。读取SI4432的数据包长度寄存器4Bh,获取到数据包的长度。从接收FIFO 中,读取接收到的数据,关闭接收模式,进行帧起始标志“01111110”的检测。当检测到 “01111110”时,判断sta_flag是否为1。当sta_flag不是1时,说明该 “01111110”是帧起始的标志,重新进行下一个包的检测。当sta_flag是1时,说明此时的 “01111110”是帧结束标志,进行帧的解析,提取出用户数据、源地址和目的地址信息,通过UART 传输给计算机的串口调试助手进行显示,并将sta_flag置零。

3 性能测试和分析

开发环境使用IAR System 公司的IAR Embedded Workbench IDE嵌入式集成开发环境。该开发环境支持众多的ARM 微处理器,也包括本文中使用的基于ARM Cortex-M3内核的STM32 处理器[6]。程序烧写成功并设置完成后即可进行通信测试。

3.1 数据包解析测试

对实验平台的数据包传输和解析测试时,进行了两组测试。第一组测试时使用的用户数据是 “Packet test”,第二组测试使用的用户数据是 “240 MHz~930 MHz”。两组测试的结果分别如图10所示。

由图10 (a)的测试结果可以看出,接收端能够对数据报文进行正确地解析,显示出用户数据、220D 链路层源地址和源IP地址,发送程序中设置的源地址一致。由图10(b)看出,这组测试中出现了数据帧解析错误,只显示了部分信息内容。经分析,原因是字符 ‘~’的ASCII值为0x7E与我们程序设计时的帧起止标识 “01111110”相同。用户数据中包含这个 ‘~’字符时,就会认为是数据帧的起止标志,造成成帧失败。数据解析时,从起始标志“01111110”开始到 ‘~’字符位置范围内的数据,按照定义的帧格式解析,只能解析出部分的数据包信息。而后面的那部分内容,由于不符合定义的字段规范,会被丢弃。如果用户数据中包涵多个 ‘~’字符,由于两个 ‘~’字符所界定范围内的信息不符合定义的数据帧格式,这部分内容也会被丢弃。原因是220D 协议中使用 “01111110”序列作为起止标志,其原因是其使用了差错控制和0比特插入算法,有效地避免了数据帧中出现 “01111110”序列。目前,220D 实验平台的设计没有使用差错控制和0比特插入算法,不能直接使用 “01111110”作为标志。

图9 接收端程序流程

图10 数据包解析测试结果

因此,需要对我们的收发端程序的起止标志进行修改,起止标志设计为3 个 “01111110”序列。在接收端监测到连续3个0×7E时,才认为检测到帧起止标识,界定出数据链路帧的范围,解析出用户数据和地址信息。

3.2 丢包率测试

在进行220D 实验平台的丢包率测试时,设计好程序烧写到无线模块中,通过计算机串口调试助手来控制数据的发送,不便于统计接收和发送的数据帧数量。丢包率统计时,将发送端的程序修改为直接发送已经写入STM32内部的用户数据 “packet loss test”,每次系统上电后发送6000次。接收端在检测到一个数据包后,将接收数据包数量变量加1,并通过UART 端口输出到计算机的串口调试助手进行接收到的数据包数量显示。

对于 “packet loss test”用户数据,经过封装后的链路帧长度是36个字节,按照SI4432设置的9600bps无线发送速率,6000个36字节的数据大约需要180s。在进行一组测试时,先启动接收端,再启动发送端。发送端模块上电启动5 分钟后 (5 分钟足够将6000 个测试数据发送完成),从接收端的串口调试助手读取数据包数量值,将其作为接收到的数据包数量。

在空旷环境下对220D 实验平台的传输性能进行测试。改变通信距离,统计发送的数据帧和接收到的数据帧数量。按照以上描述的方法进行5组测试,通信距离分别是5m、20m、50m、100m。统计结果见表2。

表2 丢包率测试结果

可以看出,系统的丢包率随着距离的增加而增大。当传输距离在20m 以内时,系统的丢包率为0。传输距离大于100m 时,系统的丢包率高于2.2%,与REXDP2 模块标称的2000m 可靠传输距离有较大差距。系统在传输距离增大到100m 后,丢包率增加的原因是通信距离[7]增大后系统信噪比降低,误码率增高,而软件设计中没有使用纠错编码,当误码造成起止标志发生差错,或则误码使数据中出现起止标志相同的序列均会出现成帧失败,而造成丢包。另外,平台中各模块之间导线连接的不稳定性,也会增加系统误码率,进而造成系统性能下降。

4 结束语

笔者所提出的利用无线模块搭建超短波自组织网络并在该网络上承载典型自组织网络协议帧格式进行通信的方法,虽然我们只提取协议中典型的字段进行了仿真研究,对于文献 [8]中所提到的协议识别典型特征值比对已经能够满足要求,该方法相对于传统的利用超短波电台进行通信[9]的方法来进行协议识别或者入侵检测[10]研究来说,具有简单可行,成本低的优点。该方案降低了获取超短波自组织网络数据流的难度,整个实验平台能够很好满足自组织网络的特点并且完成了通过编码仿真使之承载典型自组织网络协议帧格式进行通信。

[1]WANG Juan.MIL_STD_188_220Cprotocol standard analysis and improvement[J].Radio Engineering,2007 (5):1-3(in Chinese).[王娟.MIL_STD_188_220C 协议标准分析及改进 [J].无线电工程,2007 (5):1-3.]

[2]YU Quan.Tactical communication theory and technology [M].Beijing:Electronic Industry Press,2009 (in Chinese).[于全.战术通信理论与技术[M].北京:电子工业出版社,2009.]

[3]Anon.Adaptive joint C4ISR node[J].Forcast International,2011,11 (9):1-5.

[4]WANG Ruizhi.Tactical data link layer protocol communication network simulation platform for research and implementation[D].Zhengzhou:PLA Information Engineering University,2011 (in Chinese).[王瑞芝.战术通信网数据链路层协议仿真平台研究与实现 [D].郑州:解放军信息工程大学,2011.]

[5]CAO Xin. Wireless sensor network node localization in STM32Wrealization [D].Xi’an:Xi’an University of Technology,2013 (in Chinese).[曹鑫.无线传感器网络节点定位在STM32W 上的实现 [D].西安:西安工业大学,2013.]

[6]SUN Shuying,CHEN Zhijia,KOU Chao.Developmentand application of a new generation of embedded microprocessor STM32F103 [J]. Microcomputer Applications,2010,31(12):59-63 (in Chinese).[孙书鹰,陈志佳,寇超.新一代嵌入式微处理器STM32F103开发与应用 [J].微计算机应用,2010,31 (12):59-63.]

[7]YU Yao.Research progress of U.S.military forces battlefield airborne communication node [J].Telecommunication Engineering,2014,54 (6):845-850 (in Chinese). [于耀.美军战场空中通信节点研究进展 [J].电讯技术,2014,54 (6):845-850.]

[8]XU Li,ZHAO Xi,ZHAO Qunfei,et al.Network application protocol identification based on statistical methods [J].Xi’an Jiaotong University,2009,43 (2):43-47 (in Chinese).[徐莉,赵曦,赵群飞,等.利用统计特征的网络应用协议识别方法 [J].西安交通大学学报,2009,43 (2):43-47.]

[9]CHENG Kai.Study of FM radio integrated business network transmission technology [D].Xi’an:Xi’an University of Electronic Science and Technology,2013 (in Chinese). [程凯.超短波电台综合业务网络传输技术研究 [D].西安:西安电子科技大学,2013.]

[10]Cheng Yuheng.Managing network security policies inTactical MANETs using DRAMA [C]//Proceedings of IEEE MILCOM.Orlando:IEEE,2010:960-964.

猜你喜欢

链路层数据包标志
多功能标志杆的使用
基于多空间内存共享的数据链路层网络包捕获方法
认标志
首都的标志是只熊
SmartSniff
基于FPGA全功能MVB网络从设备链路层IP核设计
医改进入新阶段的重要标志
数据链路层的选择重传协议的优化改进
IEEE 1394事务层接口的设计与实现
视觉注意的数据包优先级排序策略研究