linux網(wǎng)卡綁定配置_第1頁
linux網(wǎng)卡綁定配置_第2頁
linux網(wǎng)卡綁定配置_第3頁
linux網(wǎng)卡綁定配置_第4頁
linux網(wǎng)卡綁定配置_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、配置:roott20b003 # cat /etc/sysconfig/network -scripts/ifcfg -eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=noneMASTER=bond0SLAVE=yesUSERCTL=no roott20b003 # cat /etc/sysconfig/network -scripts/ifcfg -eth2DEVICE=eth2ONBOOT=yesBOOTPROTO=noneMASTER=bond0SLAVE=yesUSERCTL=noroott20b003 # cat /etc/sysconfig/network -

2、scripts/ifcfg -eth3DEVICE=eth3ONBOOT=yesBOOTPROTO=noneMASTER=bond0SLAVE=yesUSERCTL=no-scripts/ifcfg -bond0roott20b003 # cat /etc/sysconfig/networkDEVICE=bond0ONBOOT=yesBOOTPROTO=noneUSERCTL=noIPADDR=116.55.251.4NETMASK=255.255.255.224BONDING_OPTS=mode=6 miimon=100roott20b003 # cat /etc/modprobe.d/bo

3、nding.confalias netdev -bond0 bonding#BONDING_OPTS=mode=6 miimon=100 可以放 ifcfg-bond0 上面roott20b003 # cat /proc/net/bonding/bond0Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)Bonding Mode: adaptive load balancingPrimary Slave: NoneCurrently Active Slave: eth1MII Status: upMII Polling In

4、terval (ms): 100Up Delay (ms): 0Down Delay (ms): 0Slave Interface: eth1MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 1Permanent HW addr: f8:bc:12:44:0b:c9Slave queue ID: 0Slave Interface: eth2MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 1Permanent HW addr: f8:bc:12:4

5、4:0b:caSlave queue ID: 0Slave Interface: eth3MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 1Permanent HW addr: f8:bc:12:44:0b:cbSlave queue ID: 0Bonding 的模式一共有 7 種:#defineBOND_MODE_ROUNDROBIN0 ( balance-rr 模式)網(wǎng)卡的負載均衡模式#defineBOND_MODE_ACTIVEBACKUP 1 模式,只有一塊網(wǎng)卡是 active, 另外一塊是備的active-b

6、ackup 模式)網(wǎng)卡的容錯模式,主備standby,這時如果交換機配的是捆綁,將不能正常工作,因為交換機往兩塊網(wǎng)卡發(fā)包,有一半包是丟棄的。#defineBOND_MODE_XORbroadcast 模式)2 ( balance-xor 模式)需要交換機支持#defineBOND_MODE_BROADCAST#defineBOND_MODE_8023AD4( IEEE 802.3ad 動態(tài)鏈路聚合模式)需要交換機支持#defineBOND_MODE_TLB5自適應(yīng)傳輸負載均衡模式#defineBOND_MODE_ALB6網(wǎng)卡虛擬化方式bonding 模塊的所有工作模式可以分為兩類:多主型工作模

7、式和主備型工作模式, balance-rr 和 broadcast 屬于多主型工作模式而 active -backup 屬于主備型工作模式。 ( balance-xor、自適 應(yīng)傳輸負載均衡模式( balance-tlb )和自適應(yīng)負載均衡模式( balance-alb)也屬于多主型工 作模式, IEEE 802.3ad動態(tài)鏈路聚合模式( 802.3ad)屬于主備型工作模式一、網(wǎng)卡的負載均衡模式( mode = BOND_MODE_ROUNDROBIN)1) 建立 bond 虛設(shè)備建立一個 ifcfg-bond0 的設(shè)備,然后配置如下信息即可。DEVICE=bond0BOOTPROTO=sta

8、ticIPADDR=172.16.64.208NETMASK=255.255.224.0ONBOOT=yesTYPE=Ethernet2) 配置接口文件由于使用一個虛擬的 ip 地址,所以,其他接口設(shè)備都不配置 ip 信息。3) 配置 bonding 工作方式打開 /etc/modprobe.conf 文件,將 bonding 的工作模式配置為如下模式。alias bond0bonding optionsbond0 mode=0 arp_interval=500arp_ip_target=172.16.64.864) 啟動 bonding 需要添加路由來制定發(fā)送規(guī)則,這個可以自定義添加。配置完

9、后重啟設(shè)備即可。ifenslave bond0eth0 eth1route add -net0/0 gw 172.16.64.254bond0 Link encap:Ethernet HWaddr 00:14:10:70:00:25inet addr:172.16.64.208 Bcast:172.16.95.255 Mask:255.255.224.0inet6 addr: fe80:200:ff:fe00:0/64Scope:LinkUP BROADCAST RUNNING MASTERMULTICASTM TU:1500 Metric:1RX packets:39335 errors:0

10、 dropped:0overruns:0 frame:0TX packets:3178 errors:0 dropped:0overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:3020656 (2.8 MiB) TX bytes:269722 (263.4 KiB)eth0 Link encap:Ethernet HWaddr 00:14:10:70:00:25UP BROADCAST RUNNING SLAVEMULTICASMT TU:1500 Metric:1RX packets:18208 errors:0 dropped:0ov

11、erruns:0 frame:0TX packets:5 errors:0 dropped:0overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:1371589 (1.3 MiB) TX bytes:378 (378.0 b)eth1 Link encap:Ethernet HWaddr 00:14:10:70:00:25UP BROADCAST RUNNING SLAVE MULTICASMT TU:1500 Metric:1RX packets:21128 errors:0 dropped:0overruns:0 frame:0

12、TX packets:3174 errors:0 dropped:0overruns:0 carrier:0collisions:0 txqueuelen:100RX bytes:1649127 (1.5 MiB) TX bytes:269498 (263.1 KiB)如上圖所示,這種模式下 bonding 模塊會將虛接口和所有的 slave 接口的 MAC 地址 設(shè)置為一致。通過定時器,每個 slave 接口不斷發(fā)送 ARP 包來不斷更換交換機端口與 MAC 的對應(yīng)關(guān)系。這樣使得每個網(wǎng)卡都在進行工作。這個ARP的發(fā)送規(guī)則是:每 arp_interval ( MS)間隔向 arp_ip_tar

13、get 發(fā)送 arp 請求。也可以向多個 arp_ip_target 發(fā)送 arp 請求。觀察交換機端口上所學(xué)習(xí)到的 MAC 地址,發(fā)現(xiàn) MAC 會在兩個端口上反復(fù)切換。在 BOND_MODE_ROUNDROBIN模式下, bonding 對于發(fā)送和接收數(shù)據(jù)的處理邏輯是 不一致的, 對于數(shù)據(jù)的接收, bonding 基本不做任何處理, 純粹依靠交換機端口與 MAC 的變 化來實現(xiàn)交替接收數(shù)據(jù)。 發(fā)送的話, 交換機會根據(jù)數(shù)據(jù)的源 MAC 來學(xué)習(xí)端口和 MAC 之間的 關(guān)系,所以 bonding 做到的就是選擇不一樣的網(wǎng)卡發(fā)送。對于數(shù)據(jù)的發(fā)送,static inline voidbond_set_

14、mode_ops(struct net_device *bond_dev, int mode)switch(mode) case BOND_MODE_ROUNDROBIN:bond_dev -hard_start_xmit =bond_xmit_roundrobin;break;bond 的發(fā)送函數(shù)被注冊為 bond_xmit_roundrobin 。通過 bond_xmit_roundrobin 的實 現(xiàn)可以發(fā)現(xiàn)static int bond_xmit_roundrobin(structsk_buff *skb, struct net_device *bond_dev)read_lock(&

15、bond -curr_slave_lock);slave = start_at = bond -curr_active_slave; read_unlock(&bond -curr_slave_lock);bond_for_each_slave_from(bond, slave, i,start_at) if(IS_UP(slave-dev) &(slave-link = BOND_LINK_UP) &(slave-state =BOND_STATE_ACTIVE) res =bond_dev_queue_xmit(bond, skb, slave -dev); write_lock(&bon

16、d -curr_slave_lock);bond -curr_active_slave= slave-next; write_unlock(&bond -curr_slave_lock); break;bond_xmit_roundrobin 會通過 curr_active_slave 指針所指向的設(shè)備來進行發(fā)送, 當然 curr_active_slave 會在調(diào)用 bond_dev_queue_xmit 完成實際的發(fā)送之后指向下一個 slave 設(shè)備。 bond_dev_queue_xmit 實際是調(diào)用通用的發(fā)送函數(shù) dev_queue_xmit 來進行的,它傳遞給 dev_queue_xm

17、it 的是一個 skb,在傳遞之前 skb-dev 就被指定為了當前的 slave 設(shè)備,這樣 內(nèi)核就會找到對應(yīng)的真實網(wǎng)卡設(shè)備來進行發(fā)送,最后 curr_active_slave 指針的輪詢切換,實 現(xiàn)了 bonding 的負載均衡工作模式。從這種模式可以看到, bonding 實現(xiàn)了一個類似網(wǎng)卡驅(qū)動的模塊,對應(yīng)的 bond0 設(shè) 備是一個純粹的虛設(shè)備, 數(shù)據(jù)發(fā)送雖然說經(jīng)過了它, 但通過一系列調(diào)用, 轉(zhuǎn)了一圈之后才回 到真正的網(wǎng)卡設(shè)備那里進行發(fā)送,無疑會消耗一定的系統(tǒng)性能。簡單用 100Mbps 速率的 UDP 數(shù)據(jù)包測試了一下 BOND_MODE_ROUNDROBIN模式。測試過程中發(fā)現(xiàn)接收

18、端會有較多的亂序包,觀察交換機端口情況,端口之間的切換 頻率不規(guī)則,這個和交換機的配置或者性能應(yīng)該有很大聯(lián)系,有必要的話需要進一步研究。 數(shù)據(jù)的正確性和時序性能否保證需要進一步仔細測試。2、網(wǎng)卡的容錯模式( mode =BOND_MODE_ACTIVEBACKU)P 容錯模式的配置方法和負載均衡模式基本差不多,只不過修改一/etc/modprobe.conf 即可。alias bond0 bondingoptions bond0 mode=1 miimon=100這里使用的是 mii 鏈路檢測方式,與之前 arp 檢測方式不同。當然這兩種鏈路檢測 方式在各種 mode 下都是可以使用的,但要注

19、意不能同時使用。介紹一下 bonding 的 mii 檢測實現(xiàn)。首先和 arp-monitor 一樣, mii 也是定時器觸發(fā) if(bond -params.miimon) /* link checkinterval, in milliseconds. */ init_timer(mii_timer);mii_timer -expires = jiffies + 1;mii_timer -data= (unsigned long)bond_dev;mii_timer -function = (void*)&bond_mii_monitor;add_timer(mii_timer);bond_

20、mii_monitor 函數(shù)其本質(zhì)的原理就是檢測網(wǎng)卡的鏈路狀態(tài), bonding 定義網(wǎng)卡有4 個鏈路狀態(tài):BOND_LINK_UP:BOND_LINK_FAIL:正常狀態(tài) (處于該狀態(tài)的網(wǎng)卡是是潛在的發(fā)送數(shù)據(jù)包的候 選者)網(wǎng)卡出現(xiàn)故障,向狀態(tài) BOND_LINK_DOWN 切換中BOND_LINK_BACK:網(wǎng)卡恢復(fù),向狀態(tài) BOND_LINK_UP切換中BOND_LINK_DOWN:失效狀態(tài)從上到下,表示了網(wǎng)卡鏈路從正常到失效再到恢復(fù)狀態(tài)。 bond_mii_monitor 函數(shù)就 是依次檢查網(wǎng)卡的鏈路狀態(tài)是否處于這些狀態(tài),然后通過標記 do_failover 變量來說明當前 是否需要切換

21、 slave 網(wǎng)卡。代碼篇幅較大,但邏輯還是很清晰的,故此處不羅列了。在 BOND_MODE_ACTIVEBACKUP模式下,兩塊網(wǎng)卡其實有一塊是不工作的,被設(shè)置 為 IFF_NOARP的狀態(tài)。同時, bond 虛設(shè)備,還有 slave 設(shè)備的 MAC 地址均一致,所以這張 網(wǎng)卡不會被外界察覺存在。交換機也不存在想該端口發(fā)包的情況。當 bond 的 mii 檢測發(fā)現(xiàn) 當前的 active 設(shè)備失效了之后,會切換到這個備份設(shè)備上。在 bond_change_active_slave 函數(shù)中if (bond -params.mode =BOND_MODE_ACTIVEBACKUP) if (old

22、_active) bond_set_slave_inactive_flags(old_active);if (new_active) bond_set_slave_active_flags(new_active);這個就是在 BOND_MODE_ACTIVEBACKUP模式下的切換邏輯,很簡單,需要注意的是,在 bond_set_slave_inactive_flags(old_active) 中,需要將接口的狀態(tài)設(shè)置為IFF_NOARP,不然交換機就可能會把數(shù)據(jù)包發(fā)送到一個錯誤的端口上。BOND_MODE_ACTIVEBACKUP 模 式 下 的 數(shù) 據(jù) 發(fā) 送 非 常 簡 單 , 可 想 而 知 curr_active_slave 指針始終都指向當前可用的設(shè)備,所以直接發(fā)送就可以,沒有之前 BOND_MODE_ROUNDROBIN模式下 slave 設(shè)備切換的過程。3、網(wǎng)卡虛擬化方式( mode = BOND_MODE_ALB)經(jīng)過考察,許多磁盤陣列設(shè)備采用了網(wǎng)卡虛擬化方式進行多網(wǎng)卡應(yīng)用。實際就是 Linux 的 bonding 技術(shù)。它采用了 mod

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論