1.多路网卡冗余管理模块概述

为了保证系统网络的可靠性,实现冗余设备热切换是一种常见的方法。SylixOS支持的多路网卡冗余管理模块是一款网卡故障保护管理模块。它提供一种故障保护机制,对网络设备进行冗余备份,当其中一个设备由于某种原因不能正常工作时,另一个设备马上就可以代替这个设备完成相同的功能,有效的防止了网络堵塞、网线断开、网络接口连接器松动、设备硬件故障等导致的网络通信故障。

2.多路网卡冗余管理模块功能

其主要功能有:

  • 轮询机制,通过不间断定时检测的方式,检测网络设备状态;

  • 中断机制,通过状态变化中断的方式,启动中断处理任务,通知检测网络设备状态;

  • 心跳机制,通过检测上一次报文接收时间和当前时间差值,判断网络设备状态;

  • 通过shell命令添加和删除网卡冗余。

3.多路网卡冗余管理模块特点

  1. "毫秒级"切换速度

    多路网卡冗余管理模块支持中断方式检测,可以迅速响应物理链路连接断开导致的网络通信故障并立即切换网络设备,切换时间可以达到1ms左右。

  2. 支持多路网卡冗余

    多路网卡冗余管理模块支持添加多组网卡冗余,分别检测各组网卡冗余并及时进行网络设备切换。

  3. 准确的网络状况识别

    网络通信故障除了网线断开、网络接口连接器松动等硬件故障外,网络堵塞同样会导致网络无法正常通信,降低系统网络可靠性。多路网卡冗余管理模块针对网络堵塞这类问题,添加了"心跳机制"检测,当一段时间内没有发生网络通信时,认为发生网络堵塞,自动切换到另一网卡设备,保证网络正常通信。超时时间由用户设置。

  4. Shell命令控制

    多路网卡冗余管理模块通过shell命令开启和关闭指定网卡冗余,还可以通过shell命令设置心跳机制超时时间、设置轮询机制轮询检测时间等。


    4.多路网卡冗余管理模块实现机制


    4.1整体框架

    多路网卡冗余管理方案设计思路为:创建一个虚拟网络接口,通过虚拟网络接口中对私有成员和网络驱动函数的替换,实现控制不同的物理网卡进行数据发送和接收,如图 4.1所示:

    图 4.1  虚拟网络接口

    多路网卡冗余管理功能实现后,网络通信框图改变为如图 4.2所示:

    图 4.2  网络通信框图


    4.2轮询机制检测模块

    轮询机制的实现方法是在模块初始化后,启动一个监测线程。该线程的功能是对绑定的网络设备进行不间断定时检测,当发现网络设备物理链路连接断开时,就切换到另一个网络设备上。系统检测网络设备的时间间隔,可以根据系统需要进行调整,在不影响性能的前提下尽量减少故障恢复时间。


    4.3中断机制检测模块

    中断机制是软硬结合的一种方法,需要硬件支持。其具体实现方法是,首先硬件支持连接状态变化中断,当连接状态变化时,启动中断处理任务,通知检测网络设备状态,当发现网络设备物理链路连接断开时,就切换到另一个网络设备上。


    4.4心跳机制检测模块

    心跳机制的实现方法是在模块初始化后,记录绑定网卡每一次报文接收时的时间,并启动一个监测线程。该线程的功能是比较上一次报文接收时间和当前时间的差值。当差值大于用户指定的超时时间后,认为当前工作的网络设备由于某种原因不能正常工作,立即切换到另一个网络设备上。


    4.5物理网卡切换模块

    当检测模块检测到当前工作的网络设备无法正常工作时,就会调用物理网卡切换模块进行网络设备切换。其具体实现方法是,将虚拟网络接口的私有数据指针和发送回调函数替换为另一个网络设备的私有数据指针和发送回调函数,并将该网络设备的接收回调函数替换为网卡冗余模块中的接收回调input函数,最后将数据通过虚拟网络接口上传至协议栈。