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

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




目前版本的MUX支持2种网络驱动程序接口模式:增强型网络驱动程序接口( END)和网络协议工具包(NPT)驱动程序接口。现以END型网卡驱动为例介绍如何在VxWorks5.4下的NE2000兼容网卡驱动程序中实现双网卡冗余设计。正常情况下,协议驱动程序通过MUX层提供的NIC的句柄来提交请求,这个句柄是调用EndLoaD()获得的;然后MUX层调用网卡驱动程序中的接口函数,实现高层协议驱动程序的请求。

在应用层实现双冗余网卡技术的分析

在系统中对网卡进行双冗余备份,即1块网卡在正常工作时使用,另1块网卡作为备份。备份用的网卡处于激活状态。在正常通信的网卡出现故障或系统需要时,备份用的网卡能实时地、自动地切换到继续工作。显然,这就要求2块网卡只能使用同1个物理地址和同1个IP地址。从应用程序的角度看,只会看见1块网卡在工作,不关心是哪块网卡在工作及如何切换。

理论上讲,冗余网卡技术可以在OSI各层中实现,而且越在底层实现,检测和切换的速度越快,效果应该越好。其他利用应用层实现双冗余网卡的主要方法是在程序中发起任务,以查询的方式不断对当前工作网卡的工作状态进行判断,当判断出当前使用的网卡处于非正常状态的时候,将删除当前网卡的路由,在主机列表中删除当前主机名,并解除网卡与协议的绑定;然后进行备份网卡的配置:为备份网卡绑定协议,设置子网掩码和IP地址。用此种方法实际测试,测试中使装有双网卡的主机不断向外发送广播报文,同时用网络分析软件接收。测得2个网口的切换时间平均为120ms,在切换期间有很多广播报文丢失。可见在应用层实现双网卡冗余备份技术,网卡切换速度慢,不利于网络的可靠性和实时性。

在驱动程序中的实现

在 VxWorks系统中,相同类型的网卡使用同一个驱动程序,网卡之间由驱动程序提供的句柄来区别。MUX调用NIC驱动程序的接口函数时,都会把网卡的句柄传入函数中。这就为在驱动程序中实现双网卡冗余备份提供了基础。因此要实现网卡的双冗余备份,最理想的办法是在NIC驱动程序中实现。

数据结构

网卡驱动程序中最关键的数据结构是有关网卡特性的数据结构。每种网卡都有它自己的特性,包括它的单元号、中断向量、I/O基址、物理地址等。

系统启动时,在网卡驱动的装载函数中ne2000EndLoad( )中,会为设备初始化1个数据结构,并分配一个指针指向这个结构。这时定义2个全局指针:

NE2000END-DEVICE * pDrvCtrl-0;
NE2000END-DEVICE * pDrvCtrl-1;

在网卡初始化时把这2个指针分别指向2块网卡的数据结构,通过这2个指针的定义,在MUX调用NIC驱动程序的接口函数时,可以根据网卡的好坏或系统的需要来选择pDrvCtrl-0或pDrvCtrl-1,以调整工作网卡。

1 2 3

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

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

或用微信扫描左侧二维码

相关文章

查看电脑版