为了保证系统网络的可靠性,实现冗余设备热切换是一种常见的方法。SylixOS支持的多路网卡冗余管理模块是一款网卡故障保护管理模块。它提供一种故障保护机制,对网络设备进行冗余备份,当其中一个设备因为某种缘由不能正常工做时,另外一个设备立刻就能够代替这个设备完成相同的功能,有效的防止了网络堵塞、网线断开、网络接口链接器松动、设备硬件故障等致使的网络通讯故障。shell
其主要功能有:网络
轮询机制,经过不间判定时检测的方式,检测网络设备状态;框架
中断机制,经过状态变化中断的方式,启动中断处理任务,通知检测网络设备状态;函数
心跳机制,经过检测上一次报文接收时间和当前时间差值,判断网络设备状态;性能
经过shell命令添加和删除网卡冗余。spa
多路网卡冗余管理模块支持中断方式检测,能够迅速响应物理链路链接断开致使的网络通讯故障并当即切换网络设备,切换时间能够达到1ms左右。线程
多路网卡冗余管理模块支持添加多组网卡冗余,分别检测各组网卡冗余并及时进行网络设备切换。设计
网络通讯故障除了网线断开、网络接口链接器松动等硬件故障外,网络堵塞一样会致使网络没法正常通讯,下降系统网络可靠性。多路网卡冗余管理模块针对网络堵塞这类问题,添加了"心跳机制"检测,当一段时间内没有发生网络通讯时,认为发生网络堵塞,自动切换到另外一网卡设备,保证网络正常通讯。超时时间由用户设置。指针
多路网卡冗余管理模块经过shell命令开启和关闭指定网卡冗余,还能够经过shell命令设置心跳机制超时时间、设置轮询机制轮询检测时间等。接口
多路网卡冗余管理方案设计思路为:建立一个虚拟网络接口,经过虚拟网络接口中对私有成员和网络驱动函数的替换,实现控制不一样的物理网卡进行数据发送和接收,如图 4.1所示:
图 4.1 虚拟网络接口
多路网卡冗余管理功能实现后,网络通讯框图改变为如图 4.2所示:
图 4.2 网络通讯框图
轮询机制的实现方法是在模块初始化后,启动一个监测线程。该线程的功能是对绑定的网络设备进行不间判定时检测,当发现网络设备物理链路链接断开时,就切换到另外一个网络设备上。系统检测网络设备的时间间隔,能够根据系统须要进行调整,在不影响性能的前提下尽可能减小故障恢复时间。
中断机制是软硬结合的一种方法,须要硬件支持。其具体实现方法是,首先硬件支持链接状态变化中断,当链接状态变化时,启动中断处理任务,通知检测网络设备状态,当发现网络设备物理链路链接断开时,就切换到另外一个网络设备上。
心跳机制的实现方法是在模块初始化后,记录绑定网卡每一次报文接收时的时间,并启动一个监测线程。该线程的功能是比较上一次报文接收时间和当前时间的差值。当差值大于用户指定的超时时间后,认为当前工做的网络设备因为某种缘由不能正常工做,当即切换到另外一个网络设备上。
当检测模块检测到当前工做的网络设备没法正常工做时,就会调用物理网卡切换模块进行网络设备切换。其具体实现方法是,将虚拟网络接口的私有数据指针和发送回调函数替换为另外一个网络设备的私有数据指针和发送回调函数,并将该网络设备的接收回调函数替换为网卡冗余模块中的接收回调input函数,最后将数据经过虚拟网络接口上传至协议栈。