VxWorks环境下双冗余以太网卡技术在底层驱动中的实现

时间:2012-04-06来源:网络


发送和接收处理

在上层驱动程序通过MUX调用NIC驱动程序的发送函数时,会传入网卡的句柄,指定要使用的网卡。通常情况下,驱动程序会根据该句柄向相应网卡发出指令,把报文发出去。在双网卡冗余备份驱动程序中,根据需要来指定发送数据要使用的网卡,而不一定使用MUX指定的网卡。如先读2块网卡的Link信号寄存器,判断网络连线的通断,再决定使用哪一块网卡来发送数据。

在接收报文的时候,通常是在中断中进行处理。因为以太网在物理层上的特点,2块网卡都能收到报文,不同的是只有与高层协议绑定的网卡收到的数据才能向上传递。在双网卡冗余备份驱动程序中,不是由MUX指定的网卡句柄来向上传送数据,而是根据当前网卡的工作状态向上层传送数据,即使数据是从另一块网卡上接收来的或另一块网卡没有和高层协议绑定。

单物理地址的处理

通常每块网卡有1个全世界范围内唯一的物理地址,它保存在网卡的PROM中。网卡初始化时,要从PROM中读出物理地址,把它存放在适当的寄存器和数据结构中。

要使2块网卡能相互备份,它们必须有相同的物理地址和IP地址。在双网卡冗余备份驱动程序中,可以用其中1块网卡的物理地址。方法有2种:在驱动程序初始化时只读1块网卡的PROM中的物理地址;或者在网卡驱动程序中的ne2000EnetAddrGet()函数中作修改,完全可以给网卡设定任意的物理地址 (只要避免了同一网络中的冲突)。

单IP地址处理

至于 2块网卡采用相同的IP地址,可以这样实现:在安装2块网卡时,只让1块网卡有IP地址,另1块网卡没有IP地址。因为给网卡绑定IP地址是在IP协议所在的网络层实现的,所以在网络层以下切换网卡对上层来说是完全透明的。应用程序自始自终只看见1块网卡在工作。图3是从应用程序的角度看双网卡备份的示意图。

效果分析

通过对比实验,在应用层实现双网卡冗余备份的平均网卡切换时间是120ms,在驱动层实现双网卡冗余备份的平均网卡切换时间是5ms,相对于在应用层或其他高层中实现,效率较高,大大缩短双网卡的切换时间,从而降低切换时网络通信丢包的机率。



结束语

分析了VxWorks系统的网络结构模型,提出了在系统底层驱动中实现双网卡冗余备份功能的设想,并进行了设计实现,同时对在驱动程序中实现与在应用层中实现2种方法进行了对比,证明了在驱动程序中不但能够很好地实现双网卡冗余备份功能,而且提高了以太网的实时性和可靠性,在工业以太网蓬勃发展的今天,具有一定的实用意义。

1 2 3

关键词: 冗余设计 网络接口 VxWorks

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版