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