APP下载

Intel 82580双冗余网卡切换技术

2018-10-30韩晓赵昶宇

科技与创新 2018年20期
关键词:网卡IP地址报文

韩晓,赵昶宇



Intel 82580双冗余网卡切换技术

韩晓1,赵昶宇2

(1.海军驻天津八三五七所军事代表室,天津 300308;2.天津津航计算技术研究所,天津 300308)

对VxWorks系统下Intel 82580双冗余网卡的通讯和切换技术进行了研究,给出了Intel 82580双冗余网卡在VxWorks系统下实现双网切换的方法。该方法在VxWorks系统底层驱动中设计并实现冗余通道,设计完成后满足了系统要求的误码率和切换时间,并把双冗余网卡的切换时间提高到60 ms,达到了系统的设计指标。

VxWorks;双冗余网卡;以太网;舰艇控制系统

随着网络技术的飞速发展和舰艇现代化程度的不断提高,传统的10 M/100 M以太网已远远不能满足作战系统高速大宽带的通信网络需求。在舰艇的特殊环境下,不但要求网络信息传输速度快、抗干扰能力强,还要求在网络局部故障时,作战系统不出现瘫痪和失效状态。本文结合某舰艇控制系统网络通信的实际应用,考虑到舰艇控制系统对实时性的要求,对VxWorks系统下高可靠性网络通讯技术进行了深入研究,实现了VxWorks下Intel 82580千兆双冗余网卡的配置以及双网卡切换。

1 VxWorks下的双网卡配置

本文以2块Intel 82580网络适配芯片为例说明在VxWorks实时操作系统下,如何配置多网卡进行通信。

首先在WorkBench的安装目录WindRivervxworks-6.8 argetconfigpcPentium4config.h文件中增加以下定义:

#define INCLUDE_GEI825XX_VXB_END

#define INCLUDE_END

#define INCLUDE_GEI8254X_END

如果希望通过Intel 82580千兆双冗余网卡来引导VxWorks系统,则需要将DEFAULT_BOOT_LINE宏定义修改为:

#define DEFAULT_BOOT_LINE

"ata=0,0(0,0) host:/ata1a/vxWorks.fk1 h=191.8.200.69 e=191.8.200.11 u=target pw=target o=gei"

通过上述配置方法,双通道冗余网卡的驱动就订制在BSP中,然后重新编译生成Bootrom和VxWorks镜像,加载到系统中运行调试。为了确保网卡自动切换精确到毫秒级,将SYS_CLK_RATE设置为100.

2 双网切换的实现

在作战系统中,为了保证网络通信的实时可靠性,对上网的设备和系统提出了双网卡冗余备份、故障时自动切换的要求。采用两个网络适配器互为备份,当其中一个出现故障时,系统检测到错误,并迅速切换到另一块网络适配器上。系统连接图如图1所示。

图1 双网卡系统连接图

为了使2块Intel 82580千兆网卡实现高效双冗余备份,必须保证这2块网卡具有相同的物理地址和IP地址。这样对于上层应用系统而言,系统中呈现“单网卡”的特征;反之,当系统中一块网卡切换到另一块网卡工作时,如果IP地址发生变化,则系统无法正常接收和发送数据。如果IP地址不改变,而物理地址改变,则会引起协议栈中ARP绑定表的变化,而重新对应ARP绑定表中IP地址与网卡物理地址的关系会延长两个网卡之间的切换时间。

然而,每块网卡的物理地址在全世界范围内是唯一的,它保存在网卡的PROM中。为了使2块Intel 82580千兆网卡具有相同的物理地址,在网卡初始化时,从PROM中读出其中一块网卡的物理地址,将该物理地址的内容写入另一块网卡物理地址寄存器和数据结构变量中,在此情况下,这2块Intel 82580千兆网卡就具有完全相同的物理地址了。

从理论上看,以太网络的冗余可以在OSI的各层中实现,越是在底层实现,检测和切换的时间就越短,冗余的效果越好。因此,VxWorks系统下的双网切换工作是在网卡驱动层实现的。在END型网络驱动中实现网卡设备的装载、网络芯片的初始化、网络报文的接收和发送、网络的切换等功能。在系统启动后,VxWorks系统通过网卡加载函数,调用END型网络驱动,在加载过程中完成网络芯片的初始化、内存池的分配、网卡设备控制结构的配置等,最后将网卡设备控制结构提交给MUX层,供上层系统操作网卡时使用。双冗余网卡驱动的实现原理如图2所示。

图2 双冗余网卡驱动的实现原理图

图2中的网络通道通讯监控任务是对当前使用的网络适配器进行不间断的定时查询,当发现该网络适配器连接状态异常时,就切换到另一个网络适配器上。如果切换成功,该网络适配器就成为当前使用的网络适配器,该监控任务继续对当前的网络适配器进行监控。

监控任务主要完成以下工作:当监控任务检测到Intel 82580千兆网卡的状态寄存器的Link位为0,表明该网络适配器工作正常,不进行网卡切换;当监控任务检测到Intel 82580千兆网卡的状态寄存器的Link位为1,表明该网络适配器连接异常,需要进行网卡切换。

如果当前使用的网卡为Gei0,则需要切换到Gei1上,反之亦然。Gei0切换到Gei1的代码为:

ipDetach(0,“gei”);

ipAttach(1,“gei”);

ifconfig(“gei1 192.168.0.100 up”);

3 系统测试验证

为了验证上述网卡切换方法,搭建硬件环境,将2块Intel 82580千兆网卡所在的加固机作为Client端,开发平台的主机PC作为Server端,使用2根网线将网卡的双端口同时连接到交换机上,主机端网络也通过网线连接到交换机上。

在Client端编写测试程序,向Server端发送数据报文,并统计发送的报文计数,Server端收到网络报文数据后,统计接收的报文计数,并将收到的报文内容发送给Client端;在Server端编写测试程序,向Client端发送数据报文,并统计发送的报文计数,Client端收到网络报文数据后,统计接收的报文计数,并将收到的报文内容发送给Server端。同时,Server端使用ping命令检测和Client端的网络是否连接成功。在整个过程中,通过交错切断双通道冗余网卡中的任意一个端口连接的方法检测切换功能,发现ping命令始终未中断,收发数据稳定、可靠,满足要求。

为了测试切换时间是否满足要求,设置数据的发送速率为350帧/秒,相当于每3 ms左右完成1帧数据的发送。当发生1次切换,平均增加丢帧数为20,最大不超过30帧。通过计算可以得知切换导致的网络中断时间平均为60 ms,满足系统对切换时间不超过90 ms的指标要求。

通过以上功能和性能测试验证表明,本文设计的双冗余网卡切换技术的实现方法有效,所开发的代码稳定、可靠,能够满足作战系统的需求。

4 结束语

本文对Intel 82580千兆双冗余以太网在VxWorks下的驱动开发及切换技术进行了深入研究,并提出了双冗余网卡切换的切实、可行的解决方案。通过试验验证,本设计很好地解决了在某作战控制系统上实现双冗余网络实时、可靠、高速进行信息传递这一技术难题,双冗余网卡的切换时间、误码率都在指标范围内,经过各项严格测试,Intel 82580双冗余网卡系统满足功能和性能要求,已经成功交付使用。

[1]孔详营,柏桂枝.嵌入式实时操作系统VxWorks及其开发系统Tornado[M].北京:中国电力出版社,2002.

[2]刘利强,戴运桃.基于VxWorks的双端口网卡智能双冗余驱动[J].电子技术应用,2006,32(07):64-66.

[3]田炜,刘利强.VxWorks环境下双网卡冗余备份技术的实现[J].自动化技术与应用,2003,20(07):32-34.

2095-6835(2018)20-0081-02

TP393.05

A

10.15913/j.cnki.kjycx.2018.20.081

韩晓(1987—),男,硕士,工程师,从事装备质量监督和质量管理体系方面的研究。赵昶宇(1982—),男,陕西汉中人,工学硕士,高级工程师,主要从事嵌入式系统软件测试方面的研究。

〔编辑:张思楠〕

猜你喜欢

网卡IP地址报文
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
基于报文类型的限速值动态调整
联网全靠它 认识笔记本的无线网卡
浅析反驳类报文要点
公安网络中IP地址智能管理的研究与思考
挑战Killer网卡Realtek网游专用Dragon网卡
《IP地址及其管理》教学设计
计算机的网络身份IP地址
USB故障又一原因