基于VxWorks的网络双冗余设计与应用
2018-07-10张腾
张腾
(中国电子科技集团公司第二十研究所,西安 710068)
0 引言
随着卫星导航技术和通信技术的快速发展,海用卫星导航用户终端对网络通信的可靠性要求也越来越高。目前主流的网络冗余设计采用不同的IP地址和MAC地址实现,当主网络出现故障时,从网络不能及时的切换为主网络与用户进行通信,已不能满足对可靠性要求较高的海用卫星导航终端的使用。本文提出了一种新型的网络双冗余技术,在驱动层利用网络通信故障识别任务,采用相同的IP地址和MAC地址,可实现网络智能切换,有效保证了网络通信的可靠性。
1 VxWorks网络协议简介
VxWorks操作系统是美国 Wind River System公司于 1983年设计开发的一种嵌入式实时操作系统。其遵照BSD4.4网络协议栈标准执行,可分为物理层、数据链路层、MUX层、网络层、传输层和应用层[1],结构示意如图1所示。其中MUX层是VxWorks在TCP/IP协议上新增加的一层,可以在网络接口硬件上方便地实现多种协议,不提供任何协议处理功能,只负责管理网络层与底层硬件之间的交互,可以有效降低上层协议与物理硬件间的耦合。
2 双冗余原理
在VxWorks操作系统启动时,首先要查询配置文件中两个网卡设备表,设备表中包含了每一网卡的地址和中断等配置信息;然后依据网卡的配置信息创建相应的控制结构并对其进行初始化,向每个网卡设备分配一块内存空间;接着将指向主网卡的控制结构指针提交给MUX层,供应用层调用。最后开启网络故障识别任务。网络故障识别任务是通过信号量来实现的,通过定时读取信号量来判断主通道网卡设备的连接状态(正常状态/故障状态),当网络端口处于正常状态时,不做任何处理,任务循环将等待下一次信号量;当网络端口处于故障状态时,网络故障识别任务将主网卡与备用网卡的控制结构信息进行交换,备用网卡将代替主网卡进行通信。其原理框图如图2所示。
图1 VxWorks结构示意图
图2 双冗余原理框图
3 网络故障识别
实现双网络智能切换的必要条件是快速准确的识别出当前网卡的连接状态。任何一种网络芯片均可自动识别其连接状态,通过读取网卡芯片中相应寄存器的状态来识别网卡连接状态,通常情况下,寄存器状态0表示网卡连接正常,1表示网卡连接故障[2]。其检测依据为从本机网络端口到网线另一端的网络端口(用户端网络端口)的整个通信链路连接是否正常,能够有效的检测出网卡故障、网线断开等故障。
本文使用的7JCPS516双冗余网络模块采用了intel82546以太网控制器,该芯片的寄存器利用 4个页面进行分页存储,分别映射到16个I/O地址空间上。其中第2页的proConfig寄存器的bit-3位为自动识别网卡连接状态位,当bit-3为1时表示连接故障,为0时标识连接正常。
4 智能切换原理及测试
双冗余网络通信中,对上层应用层来讲,其呈现出的是单网卡的特性[3]。当识别出主网卡连接状态为故障状态时,立即解除主网卡的IP地址的绑定,并删除主机表中的标识名、IP地址等相关信息,然后将备用网卡的进行绑定,并进行主机表的添加,对上层应用层来讲,其调用MUX层固定的接口,网卡的控制结构本身内容未发生变化,从而实现了网络智能切换。利用VxWorks系统提供的特定函数函数即可实现切换这一功能。
通过插拔网线进行功能测试,测试方法如下:
(1)连接网线1和网线2使两块网卡均处于正常连接状态:网卡 1作为主网卡进行网络通信,网卡2作为备份网卡,处于激活状态;如表1所示。
(2)在步骤1的基础上,断开网线1使网卡1处于故障状态,网络自动切换到网卡 2进行通信,如表2所示。
(3)在步骤2的基础上,连接网线1使网卡1处于正常连接状态,断开网线2使网卡2处于故障状态,网络自动切换到网卡1进行通信,如表3所示。注:圆形表示网络连接正常,三角表示网络连接故障,图形下方横线表示进行网络通信。
表1 网络通信状态指示表
表2 网络通信状态指示表
表3 网络通信状态指示表
5 结论
本文对基于 VxWorks的网络双冗余在驱动层的设计及智能切换技术进行了详细的阐述。并通过自测试和型号平台的验证,证明其可以有效保证网络通信的可靠性,具有较高的工程应用价值。