爲了保證系統網絡的可靠性,實現冗餘設備熱切換是一種常見的方法。SylixOS支持的多路網卡冗餘管理模塊是一款網卡故障保護管理模塊。它提供一種故障保護機制,對網絡設備進行冗餘備份,當其中一個設備因爲某種緣由不能正常工做時,另外一個設備立刻就能夠代替這個設備完成相同的功能,有效的防止了網絡堵塞、網線斷開、網絡接口鏈接器鬆動、設備硬件故障等致使的網絡通訊故障。shell
其主要功能有:網絡
輪詢機制,經過不間判定時檢測的方式,檢測網絡設備狀態;框架
中斷機制,經過狀態變化中斷的方式,啓動中斷處理任務,通知檢測網絡設備狀態;函數
心跳機制,經過檢測上一次報文接收時間和當前時間差值,判斷網絡設備狀態;性能
經過shell命令添加和刪除網卡冗餘。spa
多路網卡冗餘管理模塊支持中斷方式檢測,能夠迅速響應物理鏈路鏈接斷開致使的網絡通訊故障並當即切換網絡設備,切換時間能夠達到1ms左右。線程
多路網卡冗餘管理模塊支持添加多組網卡冗餘,分別檢測各組網卡冗餘並及時進行網絡設備切換。設計
網絡通訊故障除了網線斷開、網絡接口鏈接器鬆動等硬件故障外,網絡堵塞一樣會致使網絡沒法正常通訊,下降系統網絡可靠性。多路網卡冗餘管理模塊針對網絡堵塞這類問題,添加了"心跳機制"檢測,當一段時間內沒有發生網絡通訊時,認爲發生網絡堵塞,自動切換到另外一網卡設備,保證網絡正常通訊。超時時間由用戶設置。指針
多路網卡冗餘管理模塊經過shell命令開啓和關閉指定網卡冗餘,還能夠經過shell命令設置心跳機制超時時間、設置輪詢機制輪詢檢測時間等。接口
多路網卡冗餘管理方案設計思路爲:建立一個虛擬網絡接口,經過虛擬網絡接口中對私有成員和網絡驅動函數的替換,實現控制不一樣的物理網卡進行數據發送和接收,如圖 4.1所示:
圖 4.1 虛擬網絡接口
多路網卡冗餘管理功能實現後,網絡通訊框圖改變爲如圖 4.2所示:
圖 4.2 網絡通訊框圖
輪詢機制的實現方法是在模塊初始化後,啓動一個監測線程。該線程的功能是對綁定的網絡設備進行不間判定時檢測,當發現網絡設備物理鏈路鏈接斷開時,就切換到另外一個網絡設備上。系統檢測網絡設備的時間間隔,能夠根據系統須要進行調整,在不影響性能的前提下儘可能減小故障恢復時間。
中斷機制是軟硬結合的一種方法,須要硬件支持。其具體實現方法是,首先硬件支持鏈接狀態變化中斷,當鏈接狀態變化時,啓動中斷處理任務,通知檢測網絡設備狀態,當發現網絡設備物理鏈路鏈接斷開時,就切換到另外一個網絡設備上。
心跳機制的實現方法是在模塊初始化後,記錄綁定網卡每一次報文接收時的時間,並啓動一個監測線程。該線程的功能是比較上一次報文接收時間和當前時間的差值。當差值大於用戶指定的超時時間後,認爲當前工做的網絡設備因爲某種緣由不能正常工做,當即切換到另外一個網絡設備上。
當檢測模塊檢測到當前工做的網絡設備沒法正常工做時,就會調用物理網卡切換模塊進行網絡設備切換。其具體實現方法是,將虛擬網絡接口的私有數據指針和發送回調函數替換爲另外一個網絡設備的私有數據指針和發送回調函數,並將該網絡設備的接收回調函數替換爲網卡冗餘模塊中的接收回調input函數,最後將數據經過虛擬網絡接口上傳至協議棧。