網絡冗余是工業網絡的一項保障策略,目的是減輕意外中斷的風險,當網絡中一條通路(物理鏈路)發生故障斷掉了,還可以通過其他通路(物理鏈路)傳遞信息。實現網絡冗余可以使用Bonding技術,也叫Truncking和Etherchannel技術,把多個網絡接口綁定在一起,形成一個邏輯上網絡接口,在用戶看來就是一個單獨的網絡接口。Bonding驅動有7種不同工作模式,根據不同的工作模式,可以提供不同的網絡負載均衡服務和網絡冗余服務。其7種工作模式如下,常用模式為0,1,6,其中1模式是這里用到的主備模式。
表1 Bonding的7種工作模式:
模式代號 | 模式名稱 | 模式方式 | 說明 |
0 | balance-rr |
Round-robin policy (循環策略) |
按照設備順序依次傳輸數據包,第1個包走eth0,下一個包就走eth1….一直循環下去,直到最后一個傳輸完畢。這種模式提供負載均衡和容錯能力 |
1 | active-backup |
Active-backup policy (主備策略) |
只有一個設備處于活動狀態。一個宕掉另一個馬上由備份轉換為主設備。mac地址是外部可見的。此模式提供了容錯能力 |
2 | balance-xor |
XOR policy (異或策略) |
根據MAC地址異或運算的結果來選擇傳輸設備,提供負載均衡和容錯能力 |
3 | broadcast |
Broadcast policy (廣播策略) |
將所有數據包傳輸給所有接口,通過全部設備來傳輸所有數據,提供容錯能力 |
4 | 802.3ad |
IEEE 802.3ad Dynamic link aggregation (動態鏈路聚合) |
創建共享相同速率和雙工設置的聚合組,利用所有接口傳輸。需要交換機支持802.3ad模式 |
5 | balance-tlb |
Adaptive transmit load balancing (自適應傳輸負載均衡) |
可以根據當前的負載把發出的數據分給每一個設備,由當前使用的設備處理收到的數據。本策略的通道聯合不需要專用的交換機支持,提供負載均衡和容錯能力 |
6 | balance-alb |
Adaptive load balancing (自適應負載均衡) |
在5的基礎上增加接收負載均衡,由ARP協商實現。bonding驅動截獲本地發送的ARP應答,用其中一個從設備的MAC替換ARP應答中的源地址,讓不同的端具有不通的MAC地址 |
英創Linux工控主板支持Bonding技術,能夠實現雙網絡冗余方案。我們將bonding驅動編譯成了.ko文件,以EM9287 + Linux-4.1.14為例,講述雙網絡冗余方案的配置過程:
1)加載bonding.ko驅動,執行命令:insmod bonding.ko mode=1 miimon=100。
mode為表1所述的工作模式,miimon指定MII鏈路監控頻率,單位是毫秒(ms),這將決定驅動檢查每個slave鏈路狀態頻率。miimon=0表示禁止MII鏈路監控,100可以作為一個很好的初始參考值。bonding.ko還有很多參數,如downdelay、arp_interval,用戶都可以通過這種形式傳遞給驅動程序,更詳細的參數、工作模式、配置方式介紹詳見linux源碼文檔Documentation/networking/bonding.txt。
2)加載bonding驅動后,默認創建一個虛擬網卡bond0,需要對bond0進行配置:
設置ip地址:ifconfig bond0 192.168.201.31 netmask 255.255.255.0 up
添加從設備eth0、eth1:ifenslave bond0 eth0 eth1
此時,bond0已經正常工作了,可以通過命令:cat /proc/net/bonding/bond0查看其工作狀態,如圖1所示。此時,bond0工作在模式1,主備策略,激活設備為eth0。此時拔掉eth0的網線,eth1將成為激活設備,繼續保持通信。
圖1 bond0工作狀態
3)關閉bond0
執行命令ifconfig bond0 down即可關閉bond0,通信中斷。此時,eth0和eth1依然處在SLAVE狀態,并不能作為正常網絡接口通信。
4)釋放bond0中的eth0和eth1
釋放bond0中eth0和eth1后,關閉bond0時需要釋放bond0原來所占用的IP。
ifenslave -d bond0 eth0 eth1 #從bond0中刪除eth0,eth1
ifconfig bond0 0.0.0.0 down #關閉bond0,釋放ip地址
如需eth0、eth1重新作為單獨網卡工作,使用ifconfig eth0 ipaddress重新設定ip地址。
用戶可以將2)、4)操作寫成兩個腳本文件:bonding-up.sh、bonding-release.sh。將它們放在和bonding.ko相同目錄下,使用bonding時執行./bonding-up.sh;關閉bonding時執行命令ifconfig bond0 down;釋放從設備時,調用./bonding-release.sh即可。
bonding-up.sh內容如下:
ifconfig bond0 192.168.201.31 up
ifenslave bond0 eth0 eth1
bonding-release.sh內容如下:
ifenslave -d bond0 eth0 eth1#bond0 should be up state
ifconfig bond0 0.0.0.0 down
另外,如果用戶需要開機直接運行bonding驅動,可以在/mnt/nandflash/user.sh中以絕對路徑調用bonding-up.sh文件。
user.sh示例:
insmod /mnt/nandflash/bonding.ko mode=1 miimon=100
/mnt/nandflash/bonding-up.sh
-
Linux
+關注
關注
87文章
11313瀏覽量
209751 -
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35408
發布評論請先 登錄
相關推薦
評論