APP下载

国产化操作系统Reworks的嵌入式网关软件设计

2017-03-31王帅杜刚陈琪

单片机与嵌入式系统应用 2017年3期
关键词:网关以太网报文

王帅,杜刚,陈琪

(中国电子科技集团公司 第十研究所 通信事业部,成都 610036)

国产化操作系统Reworks的嵌入式网关软件设计

王帅,杜刚,陈琪

(中国电子科技集团公司 第十研究所 通信事业部,成都 610036)

随着航空平台信息化程度的提高,机载任务系统需要采用TCP/IP协议与地面系统进行无线组网,本文基于国产化操作系统Reworks设计了一套可复用嵌入式网关软件框架,在不增加硬件成本条件下,对现有机载通信设备进行软件升级实现IP支持能力,将机载任务以太网与通信设备高速互联,通过无线网络接入地面系统,实现了空地一体化IP组网通信。此技术已经在某型通信系统中得到了成功的应用。

嵌入式网关;Reworks;空地IP网络通信

引 言

随着航空平台信息化程度的不断提高,机载任务系统往往需要采用TCP/IP协议与地面系统各个节点实现空地网络互联。传统的机载通信设备没有无线IP支持能力,需要进行适应性改造,在已装备的设备模块中嵌入网关软件,完成以太网数据的封装,通过机载无线通信网络与地面系统构成IP组网连接。

网关是将两个使用不同协议的网络连接在一起的设备,不仅具有路由的功能,还能在两个不同的协议集之间进行转换,从而使不同的网络能够互联通信。嵌入式网关采用嵌入式处理器作为硬件平台,嵌入式操作系统作为软件平台,具有体积小、开销小、功耗低、可靠性好等特点[1]。近年来,机载通信设备逐步采用模块综合化、通用化设计,外部总线种类繁多,有以太网、1553、RapidIO、FC等,研发一套通用的嵌入式网关软件框架,通过软件升级实现设备的IP无线通信支持,适应各类外部总线连接,有利于产品复用,节省研发成本。

目前的机载通信设备IP化改造方案[3-4]采用嵌入式网关软件实现,当某一节点的IP应用需要向其他节点的应用发送数据时,发送端会使用本机的TCP/IP协议栈进行IP路由,配置接收端IP地址与发送端IP地址不在同一网段,发送端会直接将需要发送出去的数据包发送给网关,网关软件将此数据包的IP数据取出,按照无线链路协议传输的要求发送到地面,地面接收端网关再把该数据进行还原处理后送给地面网络,实现原理如图1所示。

图1 已有机载通信系统嵌入式网关实现架构

从图1中可以看出,目前已有的嵌入式网关工作在TCP/IP协议的网络层,利用不同网段的网关路由功能实现IP报文转发,由嵌入式网关软件(如DTE模块[3])对IP报文进行无线链路格式封装,来处理数据链路层的ARP及RARP报文,因此需要发送和接收端计算机的IP地址必须处于不同网段内,对实际应用有一定的限制。

Reworks操作系统[2]是华东计算技术研究所自主研发的一个嵌入式实时操作系统,在机载通信设备中已逐步推广应用,本文在分析Reworks网络驱动的工作机制及TCP/IP协议基础上,成功设计实现一种基于Reworks的嵌入式网关软件架构,与现有系统相比,可以支持以太网物理层上的各层协议,不再限制机载、地面IP地址必须配置在不同网段,为改造已有通信设备及综合化通信设备增加IP能力的应用奠定了基础。

1 关键技术

1.1 技术原理

机载嵌入式网关将任务以太网的原始网络数据包封装在机载RapidIO高速通信总线的数据帧中,发送给通信设备模块,将来自通信设备模块上报的地面数据包提取出以太网数据帧信息,发送到机载任务以太网,从而实现原始以太网数据包在空地VHFKaKu等无线网络传输的目的。要做到这一点,首先要对以太网的数据帧结构有一定的理解,并且需要分析如何基于Reworks操作系统收发以太网原始报文技术。

1.2 以太网数据结构

图2 以太网数据帧结构示意图

在整个计算机网络通信中,TCP/IP是一个层次协议集,包括应用层、传输层、网络层、链路层。在TCP/IP协议的分组中,网络层是IP协议实现的基础,包含IP、ICMP、IGMP等协议,数据链路层提供了ARP和RARP协议,实现逻辑地址(即IP地址)与物理地址的相互转换,整个TCP/IP协议的原始报文结构如图2所示。

以太网数据帧头部2字节的帧类型指定了数据正文承载的具体协议,常见的有IP报文(0x0800)、ARP协议和RARP协议(0x0806)。ARP全称为地址解析协议,完成IP地址到MAC地址的映射转换。在以太网中,当一台主机需要向另外一台主机发送消息时,会首先在自己本地的ARP缓存表中根据目的主机IP地址查找其对应MAC地址,如果找到了则直接向其发送消息。如果未找到,则会在全网发送一个ARP广播查询,该消息会被以太网中所有主机接收到,被查询的目的主机会对这个消息进行响应,然后将自己的MAC地址通告给发送者。

为实现同一网段及不同网段的网络互联互通,需要将完整的以太网帧报文,即包括ARP、RARP协议的报文封装到无线链路报文中进行传输。基于不同的操作系统平台,可以有不同的技术路径选择,如基于Linux平台可以采用链路层原始套接字或libnet、libcap等开源网络开发库,由于Reworks对原始套接字支持不够,因此在研究Reworks的网络驱动MUX接口工作机制[2]的基础上,采取了改造网络驱动,通过挂接回调钩子方法实现对原始网络报文的操作。

1.3 MUX网络接口

Reworks使用了可裁减增强网络协议栈SENS(Scalable Enhanced Network Stack),SENS协议栈层次如图3所示。SENS和传统的TCP/IP网络协议栈相似,在数据链路层和网络协议层之间多了一个网络驱动接口层 MUX(Multiplexer),主要目的是把网络接口驱动和协议层实现隔离分开,使得网络接口驱动和协议层彼此基本保持独立。例如在收到一个包后,网络驱动程序并不直接访问协议层数据结构,而是调用MUX提供的函数将数据传送给协议层。

MUX提供了一系列API接口函数:muxBind;muxUnbind;muxDevLoad;muxDevUnload;muxReceive;muxError;muxSend;muxTxRestartRtn;muxMcastAddrDel;muxMcastAddrGet;PollSend;muxMcastAddrAdd;muxPollReceive;muxIoctrl。

1.3.1 截获以太网数据帧

图3 SENS网 络协议栈

当网络驱动通过中断接收到以太网数据时,会调用muxReceive函数通知协议层处理,为抓取原始报文,采用挂接钩子函数方法,编写了一个钩子模块嵌入网络驱动代码中,完成抓取以太网报文的功能。软件运行后,由该模块向网络驱动注册监听以太网接口数据的回调函数,用该回调函数对接收到的数据包进行处理。注册接收处理以太网数据函数原型如下:

STATUS etherInputHookAdd(FUNCPTR inputHook, char* pName, int unit)

被注册的接收处理以太网数据包回调函数原型如下:

BOOL inputHook(struct ifnet *pIf, char *buffer, int length);

在网络驱动接收数据处增加调用钩子函数的代码模板:

xxxRecv (){

if ((etherInputHookRtn != NULL) && (* etherInputHookRtn) (&ls->ls_if, (char *)eh, len))

return;

}

1.3.2 发送以太网数据帧

当协议层需要将数据发送到网络驱动时,会调用muxSend函数通知网络驱动进行处理,因此直接调用muxSend函数可以将报文发送到以太网,函数原型为:

STATUS muxSend(void* pCookie, M_BLK_ID pNBuff);

其中第二个参数是网络缓冲区池管理数据结构,使用MUX层收发数据时,原始数据都需要放到该数据结构管理的缓冲区中,收发时传递该缓冲区的mBlk指针。

Reworks使用mBlk和clBlk结构来管理网络协议和驱动之间交互数据的缓冲区,用户通过mBlk结构来访问和传递由netPoolInit()函数建立的内存池中存放的数据,通过mBlk的管理,网络层不需要拷贝数据就可以进行数据交换,mBlk结构具有链接性,可以传递任意大小的数据,如图4所示。使用的API函数包括:

netClusterGet,申请一块簇缓冲区;

netClBlkGet,申请一块clBlk结构;

netMblkGet,申请一个mBlk 结构;

netClBlcJoin,把簇缓冲区添加到clBlk结构中;

netMblkClJoin,把clBlk结构添加到mBlk结构中。

图4 mBlk管理的网络缓冲区

在嵌入式网关软件中,将构造mBlk和调用muxSend函数发送原始数据的功能封装为独立的模块,从无线链路上收到以太网数据后,通过该模块将数据发送到任务以太网,屏蔽了MUX函数的复杂使用细节。

2 软件设计

2.1 功能要求

① 能够适应各类通信总线环境,将机载通信设备升级完善为无线IP网关;

② 通过内部总线(如RapidIO或者SPI等接口)与通信模块互联,接收和发送无线网络上的数据,与机载任务以太网实现互联;

③ 空中节点能通过IP网络与地面互相Ping通;

④ 空地之间可以通过FTP文件传输工具传输文件。

2.2 系统组成

在实验室搭建了一套嵌入式网关的验证系统,如图5所示,其中任务计算机为普通商用计算机,机载通信设备采用某型机载通信模块(上下行速率为512 kbps),嵌入式网关软件部署在接口模块,与机载通信模块采用RapidIO总线互联,硬件配置采用P4080为处理核心,并配置有1 GB DDR、256 MB FLASH、两个千兆光纤网口,操作系统为Reworks。

图5 嵌入式网关验证系统组成

2.3 工作原理

当机载任务以太网上某节点的任务计算机上的IP应用需要向地面的任务计算机发送数据时,会先发送ARP报文询问地面任务计算机的MAC地址,接口模块网关软件截获到ARP报文后,将此数据包取出,增加RapidIO总线的链路层头信息,使用RapidIO网络将数据转发到机载通信模块,通过射频无线通信网络传输到地面通信模块,地面接口模块网关软件收到报文后,对数据进行还原处理,去掉RapidIO链路层头数据,解析提取出以太网数据,发送到地面任务计算机,地面任务计算机使用自身的MAC地址应答ARP,并经链路发送至机载任务计算机,ARP建立了连接后,机载和地面节点就能够采用IP协议进行正确的网络路由通信,通信中的以太网数据都由网关软件进行格式化封装及解析,与通信模块之间经RapidIO总线进行收发。

2.4 软件设计

对现有某型机载通信设备的接口模块上部署嵌入式网关软件,运行环境为 Reworks操作系统,完成机载通信设备升级改造支持无线网关的功能。

2.4.1 软件架构

嵌入式网关软件主要由网关基础框架模块、网关应用模块组成,分别包含的类如图6所示,软件架构类图如图7所示,其中网关基础框架模块基于通用化设计,可以应用于包括卫星通信、高速电台等其他机载通信设备应用场景。

图6 网关软件框架模块图

图7 网关软件架构类图

(1) 网关基础框架模块

软件运行后,首先由该模块向网络驱动中注册接收以太网帧数据的监听函数,由该函数监听接收到的数据包,交给CEthPackPeekMgr放入接收以太网帧数据处理模块的消息队列中,分发给CEthPackPeek类,通知CNetGateBase派生的网关类进行处理,由用户实现的过滤规则类对数据包进行过滤,判断是否需要发送,如需要则将数据组成无线链路格式报文发送给机载通信模块。

该模块包含的类及主要功能如表1所列。

表1 网关基础框架模块主要类说明

(2) 网关应用模块

网关应用模块是使用嵌入式网关基础框架模块的一个特定应用实现,主要完成对以太网截获数据包的过滤、封装发送到通信模块,并接收读取从通信模块送来的链路层数据,将RapidIO链路层头信息去掉,将数据从网卡发送出去,本验证系统中主要由负责RapidIO数据收发的CRapidIOChannel类以及网关应用CSatIPNetGate类组成。

2.4.2 处理流程

嵌入式网关软件主要的两个流程分别完成以太网接收数据的处理和无线链路接收数据的处理,以太网接收数据处理流程如图8所示,无线链路接收数据处理流程如图9所示。

图8 以太网接收数据处理流程

图9 无线链路接收数据处理流程

3 系统测试

系统测试包括连通性测试、可靠性测试和性能测试,可以从功能和性能两个方面对网关进行较为全面的了解,测试环境机载、地面通信模块采用中频射频直连方式通信。

3.1 连通性测试

连通性测试的主要目的是验证通过网关是否能够使机载任务以太网与地面任务以太网正常通信。测试方法主要使用Ping命令,即在机载任务计算机上Ping地面任务计算机,所有测试均以1万包为样本,每包发送间隔为20 ms,测试结果如表 2所列。

表2 机载地面连通性测试结果

使用EtherPeek抓包软件在地面任务计算机上进行抓包,能够抓到机载任务计算机IP 192.168.8.101发送到地面任务计算机IP 192.168.8.102的ICMP报文。由实验结果可知,网关实现了机载地面的IP网络互联通信,达到了设计要求,回环时延主要产生在信道编解码和链路协议处理,包长达到1500字节时出现丢包,是因为1500字节用户速率已达到585 kbps,超过了信道最大速率512 kbps。

3.2 可靠性测试

可靠性测试主要目的是测试网关在长时间工作条件下,功能是否能够保持正常以及数据传输的正确性。测试程序是编写Tcp/Udp测试工具,在机载和地面任务计算机上运行,互相发送随机大小的数据报文(64~1000字节),经测试,本实验平台系统在长时间(24小时)不间断运行一直处于正常状态,未出现程序死机崩溃、报文大量丢失等现象,这说明网关软件在可靠性方面基本达到要求。

3.3 性能测试

性能测试主要目的是测量机载地面IP网络的数据传输速度,采用FTP文件传输工具,传输不同大小的文件进行比较,经测试,10 MB文件传输速率约为38 kbps。

结 语

本文描述了基于国产化操作系统Reworks设计通用嵌入式网关软件框架的方法,在实验室搭建了由2个节点组成的无线网络环境,在该环境上测试了机载、地面通信设备通过IP组网的连通性、可靠性、性能测试。实验结果表明:此种方式可实现无线IP空地组网,在设备中增加嵌入式网关软件,可以实现对已有通信设备的功能扩展,增强了IP通信能力,提高了通信设备的应用范围,扩充了各个组网节点间传输的业务数据。

[1] 李向明,王火智,刘明兰.基于S3C2410的嵌入式网关的设计与研究[J].可编程控制器与工厂自动化,2007(2):65.

[2] 谢彬.ReWorks/ReDe嵌入式实时操作系统及开发环境产品白皮书,中国电子科技集团公司第三十二研究所,2013.

[3] 刘宏波.基于CORBA的机载通信系统的研究与实现[D].成都:西南交通大学,2008.

[4] 杜刚,张远利.基于IP传输的空地遥控系统设计[J].电讯技术,2012,52(6):853-857.

王帅(软件系统架构设计师),主要研究方向为嵌入式软件架构、网络通信;杜刚(工程师),主要研究方向为嵌入式软件开发;陈琪(高级工程师),主要研究方向为嵌入式系统开发。

Embedded Gateway Software Design Based on Reworks

Wang Shuai,Du Gang,Chen Qi

(Communications Department,China Electronics Technology Group Corporation No.10 Research Institute,Chengdu 610036,China)

With the improvement of the information degree of the aviation platform,the airborne mission system needs to use the TCP/IP protocol and the ground system to carry on the wireless network.In this paper,a reusable embedded gateway software framework is designed based on the localization operating system Reworks.Without increasing hardware cost,the software of airborne communication equipment is upgraded to achieve IP support capability,the airborne mission Ethernet and the communication equipment are interconnected.The integrated air-ground IP network communication is realized through the wireless network access to the ground system.This technology has been successfully used in a certain type of communication system.

embedded gateway;Reworks;air ground IP network communication

TP393

A

�士然

2016-11-28)

猜你喜欢

网关以太网报文
基于J1939 协议多包报文的时序研究及应用
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
谈实时以太网EtherCAT技术在变电站自动化中的应用
ATS与列车通信报文分析
LTE Small Cell网关及虚拟网关技术研究
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
应对气候变化需要打通“网关”