一种舰载支持组播的双网切换技术研究与实现∗

2017-10-23 07:40程莉莉胡芷毅
舰船电子工程 2017年9期
关键词:网卡中断链路

程莉莉 罗 威 胡芷毅 张 毅

(1.国家知识产权局专利局专利审查协作湖北中心 武汉 430060)

(2.中国舰船研究设计中心 武汉 430064)(3.武汉大学电子信息学院 武汉 430072)

一种舰载支持组播的双网切换技术研究与实现∗

程莉莉1罗 威2胡芷毅3张 毅3

(1.国家知识产权局专利局专利审查协作湖北中心 武汉 430060)

(2.中国舰船研究设计中心 武汉 430064)(3.武汉大学电子信息学院 武汉 430072)

双网冗余是舰载信息系统中常用的技术,加强双网切换对组播的支持和缩短双网切换时间是双网切换中的两项关键技术。为了加强双网切换对组播的支持,采用了在链路切换任务执行过程中将组播地址信息重新写人切换后的网卡寄存器中的方法,即组播地址重写法。为了缩短双网切换时间,采用了链路切换任务与网卡故障中断同步的方法,即任务同步中断法。上述方法实现了双网透明、无缝切换,实验数据表明,该方法有效地解决了上述两项关键技术。

双网切换;组播;中断

ClassNum ber TP393

1 引言

通信网络是舰载信息系统的命脉,它连接着各个信息单元和控制中心[1~6]。若采用单网卡进行网络通信,一旦该网卡或其所在链路发生故障,轻则影响网络通信的性能,重则造成网络通信中断。在对通信网络可靠性要求较高的应用领域,可通过增设冗余网卡来提高网络可靠性[7~12],但需实现双网卡及其所在链路之间的切换,即双网切换。要实现双网切换,需解决两项关键技术:

1)加强对组播的支持。组播是现代舰载信息系统中信息传输的常用机制,属于协议层的协议,而双网切换对于协议层是透明的,因此,双网切换对组播的支持是一项急需解决的关键技术[13~18]。

2)严格保证较短的切换时间。双网切换时间若过长,会导致报文丢失,丧失信息完整性,因此,缩短双网切换时间成为另一项关键技术。

本文将采用组播地址重写法和任务同步中断法来解决上述技术问题,并在工程实践中进行验证。

2 双网透明、无缝切换的理论基础

2.1 双网透明切换理论

中间件(MUD)层是协议层与数据链路层的中间件,如图1所示,它定义了一组接口,用于协议层与数据链路层的信息交互。MUD层屏蔽了协议层与数据链路层之间的直接联系,增强了两层之间的相对独立性[2]。对协议层而言,对两块冗余物理网卡的所有操作都是透明的。

图1 基于中间件(MUX)的开发模型

协议层可以通过调用MUX接口函数来与数据链路层通信,这种开发模型不仅可以屏蔽硬件的差异,减少对底层的操作,还可以使设计人员将注意力集中在功能的实现上,降低了开发难度。MUD层为双网透明切换提供了基础。

2.2 双网无缝切换理论

当设备检测到某网卡或其所在链路发生故障而无法正常通信时,双网切换程序就会将其切换到备用网卡所在的链路上。在切换过程中,可能会丢失一些数据包,但若切换时间很短,应用层就会认为这是通信过程中的正常丢包,进而通过算法恢复或重传丢失信息来实现双网的无缝切换。

3 组播地址重新写入法

组播是一种一对多或多对多的通信形式,属于三种数据包传输方式(单播传输、广播传输和组播传输)之一[3]。组播是指一组IP站点进行数据传送,这一组IP站点是动态形成的,每个IP站点都可以动态地加入或退出这个组。

若不考虑底层的操作,要接收组播内的数据,协议层只需输入所要接收组播的地址,底层驱动程序将组播地址写入网卡寄存器中,即可实现组播功能。

当检测到正在使用的网卡或其所在链路出现故障时,双网切换程序会将通信切换至冗余网卡及链路,配置在切换前网卡中的组播地址就会丢失,切拉后的网络由于没有获取到组播地址而无法完成组播传输。但若在双网切换过程中将组播地址重新写入冗余网卡寄存器,则可延续切换前后的组播地址,实现双网切换对组播的支持,该方法即为组播地址重写法。

应用组播地址重写法时,需要注意的一个关键细节就是,因为事先无法确定上层协议采用何种传输方式(可能采用单播、广播、组播中的一种或多种),所以,在双网切换过程中要判断上层程序是否有加组操作,并以此来决定双网切换中是否也需要执行加组操作。组播地址重写法关键部位的示意性代码如下:

ifuser addedmulkicusk

for i=O;i<mulki}}sklVum}er;i++

AddMuIkicask(MulkicuskGroup}i);

End

else continue;

end if

4 组播地址重新写入法

双网切换时间由故障检测时间、故障响应时间和双网切换执行时间三部分组成。从网卡或其所在链路发生故障至网卡检测到故障的时间为故障检测时间,故障检测在物理层完成,费时最少。从网卡获取故障信息至开始执行双网切换的时间为故障响应时间,不同的算法产生的故障响应时间不同。从开始执行双网切换到冗余网卡所在链路正常工作的时间为双网切换执行时间,也称为链路切换时间。链路切换包括网卡状态判断及加组等一系列必要操作,执行时间基本固定。

从以上分析可知,缩短双网切换时间的关键在于缩短故障响应时间,目前,可通过两种方式实现双网切换:

1)中断法

将链路切换程序放在网卡故障中断的服务函数中。该方法的故障响应时间较短,但链路切换程序复杂、执行时间长,如此长时间的占用CPU资源将导致其他任务无法执行,从而降低整个系统的实时性。

2)扫描法

创建一个任务,用扫描的方式监视网卡及其所在链路的运行状态,一旦发现故障,便立刻执行链路切换程序。网卡及其所在链路出现故障的概率较小,因此,为链路切换单独创建一项任务进行故障扫描会浪费系统资源,且也无法保证故障响应时间缩短。

为了缩短故障响应时间,在本次研究中,在设计双网切换时采用了任务同步中断法。首先,创建一项链路切换任务,一旦进入链路切换代码,就立即禁止任务抢占,以防止优先级更高的就绪任务占用CPU资源,而后,该任务就一直等待获取网卡故障信号量。链路切换任务会因无法获取信号量而阻塞,随后,禁止任务抢占命令失效。当网卡或其所在链路出现异常时,触发网卡故障中断,其中断服务函数会释放网卡故障信号量,链路切换任务在获得该信号量后得以继续执行,从而完成双网切换,之后,可允许其他任务抢占资源。

此任务同步中断法有效地融合了上述两种方案,扬长避短,既缩短了故障响应时间,又避免了资源浪费。

5 双网切换实现

双网切换的实现主要由网卡初始化、链路检测和链路切换三部分组成,如图2所示。

5.1 网卡初始化

网卡初始化需要完成一系列的配置操作,包括IP地址分配、网络驱动绑定、网口中断绑定及链路切换任务创建等。

在网卡初始化过程中,以硬件竞争的形式选择最快链接正常的网卡作为活动网卡,为该网卡配置IP地址[4],在启动加载时,将IP地址作为对外的硬件地址向上层协议栈注册。

5.2 链路检测

链路检测主要完成两项功能,即网卡故障获取与释放网卡故障信号量。该流程由禁止中断、获取中断向量、清理中断标志、释放网卡故障信号量及允许中断等一系列操作组成。

5.3 链路切换任务

网卡状态的判断过程如下:

1)网卡1和网卡2状态一致;两网卡都正常或都故障,均无需切换。

2)网卡1正常、网卡2故障:删除网卡2配置并配置网卡1,加人组播。

3}网卡2正常、网卡1故障;删除网卡1配置并配置网卡2,加入组播。

5.4 核心数据结构

为实现其功能的核心数据结构如下:

1)链路切换的控制结构,保存链路切换所需的所有设置信息;

typedefstruct_NIC_SWITCH{

char*ipAddr[2];/*两个端口的IP地址*/

UINT16 setSign;/*冗余网口的配置程序是否已经运行*/

UINT16 nicNo;/*当前产生中断的网卡号*/

SEM_ID switchSync;/*同步切换任务*/

UINT32 pciUnit[2];/*保存对应的PCI端口单元号*/

UINT32 irqVec[2];/*PCI接口分配的中断号*/

UINT32 irqCar[2];/*PCI接口中断控制寄存器基地址*/

UINT16 nicStatus[2]/*保存冗余网口的上一次状态*/

SOCKETmSockets[10];/*套接字数组*/

charmultiGroupNum;/*需要加入的组播数*/

}_NIC_SWITCH;

2)定制需要加入的组播IP地址的数组,例如:

#defineMulticast_Number4

char*MulticastGroup[Multicast_Number]

={

224.2 2.202.101;

224.2 2.202.102;

224.2 2.202.103;

224.2 2.202.104;

};

6 实验验证

要验证双网切换是否支持组播,只需通过组播源发送数据,看其是否可以接收即可。

实验中,获取双网切换时间的方法分为以下四个步骤:

1)创建并执行双网切换时间测试任务,使其按照16.7ms的周期发送数据;

2)使用WiIdPacket Etherpeek NX(一种网络报文录取软件)接收其发送的报文;

3)反复交替插拔冗余网卡所连接的网线,迫使其发生双网切换(在拔出一条网线之前,须保证另外一条链路处于热备份状态);

4)分析获取的数据,得到双网切换的时间数据。

某次实验中所获取的数据如图3所示。

由于2块网卡所在链路的性能存在差异,所以双网切换所需要的时间也有所不同,但相差不大。经过反复测试,双网切换的最大时间约为32ms,小于扫描法的切换时间均值43ms。因此,此方法是可行、有效的。

7 结语

可靠性是网络通信中一个至关重要的参数,尤其是在国防领域,对网络可靠性的要求更高。在目前的技术水平上,采用冗余网卡的方法是提高网络可靠性的有效手段。本文采用组播地址重新写人法和任务同步中断法实现了双网透明、无缝切换的功能,加强了双网切换对组播的支持,缩短了双网切换时间,增加了冗余网卡的功能,提高了冗余网卡的性能。上述方法已在工程实践中得到验证,满足工程需求,取得了预期的效果。

[1]相晖,毛晓梅.基于WDM的冗余设备驱动模型设计[J].计算机测量与控,2011,19(8);1995-1997.

[2]杨盛武,梁玲.一种VxWorks下网卡快速切换的实现方法[J].计算机与现代化,2006(2):54-56.

[3]罗刚,杨木清.基于应用—网络层组播相结合的体系结构研究[T].电脑知识与术,2008(17):1425-1427

[4]刘锡祥,徐晓苏,刘建娟等.VxWorks环境下基于TCP/IP协议的多网卡数据传输与双网卡冗余设计[T].工业仪表与自动化装置,2016(3):31-35

[5]何静,谢晓方.基于快速以太网的舰载作战系统网络优化[J].计算机工程与应用,2001,37(2):56-57.

[6]李明,刘扬,谢晓方.全分布式通用火控系统供电控制技术[J]. 海军航空工程学院学报,2004,19(6):630-633.

[7]刘信新,陈鲲,张方杰.基于以太网的舰载雷达视频传输系统研究[J]. 舰船电子工程,2008,28(5):130-134.

[8]李滋刚,刘凤学.面向21世纪的信息战与舰船电子工程发展趋势研究[J].舰船电子工程,1999(1):1-8.

[9]吴向军.舰船综合平台管理系统网络通信与集成技术研究[J].舰船电子工程,2005,25(5):47-51.

[10]江立军,王光荣,赵永生.船舶综合平台管理系统通信网络的可靠性技术[J].大连海事大学学报,2010,36(2):47-50.

[11]江立军.船舶综合监控系统通讯网络的可靠性设计[J].机电工程技术,2010,39(4):62-64.

[12]林建辉,陈松涛.基于工业以太网的船舶综合平台管理系统[J]. 江苏船舶,2012(2):31-35.

[13]曹中才.船舶电力推进系统监控平台的研究与设计[D].武汉:武汉理工大学,2012.

[14]谢蓓,刘毅,曹万华,等.实时系统数据分布服务DDS技术综述[J].舰船电子工程,2006(2):16-19.

[15]李孝明,曹万华.一种软件构件的分类与检索的实现技术[J].计算机与数字工程,2004,32(5):25-28.

[16]张海波,王小非,曹万华,等.新型软件体系结构研究[J].计算机与数字工程,2007,35(1):50-54.

[17]李孝明,曹万华.舰载作战指挥系统软件构件库技术研究(续三):检索和管理[J].舰船电子工程,2005,25(3):34-38.

[18]谌菲,曹万华,黄志刚.模型驱动在舰载指控系统的应用研究[J].系统仿真学报,2008,20(7):1720-1723.

Research and Im p lementation of a Network Sw itch Technology Based on Shipborne SupportMulticast

CHENG Lili1LUOWei2HU Zhiyi3ZHANG Yi3
(1.PatentExamination Cooperation HubeiCenterof The PatentOffice SIPO,Wuhan 430060)
(2.China Ship Developmentand Design Center,Wuhan 430064)
(3.Electronic Information School,Wuhan University,Wuhan 430072)

The redundant dual is a commonly used technology of shipboard information system,strengthen the network switch support formulticastand shorten the network switch time are 2 key technologies in network switch.In order to strengthen the support ofmulticast network switch,by using themethod of task execution process in the link switchingmulticast address information to write after switching card register,namelymulticast address rewriting.In order to shorten the network switch time,the link switch task and NIC fault interruptsynchronizationmethod,namely task synchronization interruptmethod.Themethod realizes the network transparentand seam lesshandoff,the experimentaldata show that thismethod can effectively solve the above 2 key technologies。

network switch,multicast,interruption

TP393

10.3969/j.issn.1672-9730.2017.09.011

2017年3月12日,

2017年4月23日

程莉莉,女,博士,助理研究员,研究方向:电子信息系统,无损检测。罗威,男,博士,高级工程师,研究方向:舰船电子信息系统。胡芷毅,男,硕士,研究方向:大数据分析。孙毅,男,硕士,研究方向:大数据分析。

猜你喜欢
网卡中断链路
一种移动感知的混合FSO/RF 下行链路方案*
天空地一体化网络多中继链路自适应调度技术
部署Linux虚拟机出现的网络故障
浅析民航VHF系统射频链路的调整
“单片机中断概述”微课教学设计
一种考虑GPS信号中断的导航滤波算法
Server 2016网卡组合模式
Linux中断线程化分析及中断延时测试
跟踪导练(二)(5)
一种IS?IS网络中的链路异常检测方法、系统、装置、芯片