天天看點

網卡綁定

利用 Linux 中的 bonding 技術配置備援網絡

Linux 下的 bonding 技術,将多塊網卡接口通過綁定虛拟成為一塊網卡,在使用者看來這個聚合起來的裝置好像是一個單獨的以太網接口裝置,或者說就是多塊網卡具有相同的 IP 位址而并行連接配接聚合成一個邏輯鍊路工作。

Bonding 技術用于高可靠性,提供最大網絡可靠性的配置,通過在主機和其他裝置間的備援或備份裝置、鍊路或交換機,目标是提供最大的網絡連結可靠性(要求網絡一直可用)。

以每個節點上面有四個網卡接口 (eth10,eth11,eth12,eth13) 為例,它們可被虛拟成兩個綁定裝置:bond0 和 bond1。bond0 為外部網卡 , 被綁定的網卡接口(也稱為 slave 裝置)是 eth10 和 eth12;bond1 為内部網卡,被綁定的網卡接口是 eth11 和 eth13。其中 bond0 用于外部通信,bond1 用于節點之間通信。其網絡結構如圖所示:

圖 1. 網絡結構圖

網卡綁定

綁定配置

綁定裝置 bond0 和 bond1 分别對應配置資訊檔案 /proc/net/bonding/bond0 和 /proc/net/bonding/bond1。以 /proc/net/bonding/bond0 為例,其内容如下:

Ethernet Channel Bonding Driver: v3.0.1 (January 9, 2006) 
 Bonding Mode: fault-tolerance (active-backup) 
 Primary Slave: None 
 Currently Active Slave: eth10 
 MII Status: up 
 MII Polling Interval (ms): 100 
 Up Delay (ms): 200 
 Down Delay (ms): 200 
 Slave Interface: eth10 
 MII Status: up 
 Link Failure Count: 0 
 Permanent HW addr: 00:21:5e:09:61:06 
 Slave Interface: eth12 
 MII Status: up 
 Link Failure Count: 0 
 Permanent HW addr: 00:1a:64:e7:10:d6 
      

其中,包含 bonding 裝置和 slave 裝置的配置資訊。Bonding Mode 是綁定的政策或模式,可用于優化可靠性的綁定模式有 fault-tolerance( 或者稱為 active-backup) 和 broadcast 模式,fault-tolerance 通常是推薦的模式,尤其是如果交換機間存在 ISL 并能一起很好的工作。如果一個交換機被配置為備份交換機 ( 比如,有更低的處理能力,更高的費用等等 ),則可以使用 primary 選項來保證期望的鍊路在它可用時總是用它。

Primary Slave 指定哪個 slave 成為主裝置 (primary device),取值為字元串,如 eth0,eth1 等。隻要指定的裝置可用,它将一直是激活的 slave。隻有在主裝置(primary device)斷線時才會切換裝置。這在希望某個 slave 裝置優先使用的情形下很有用,比如,某個 slave 裝置有更高的吞吐率。

Currently Active Slave 為目前被激活的 slave 裝置。bond0 裝置有兩個 slave 裝置:eth10 和 eth12。目前被激活的 slave 裝置是 eth10。

MII Status 為 MII 監控狀态。MII 監控通過監控本地網絡接口的載波狀态來實作監控鍊路狀态。可以通過 3 種方法之一來實作:通過依賴裝置驅動來維護載波狀态;通過查詢裝置的 MII 寄存器;或者通過給裝置發送 ethtool 查詢。

MII Polling Interval 指定 MII 鍊路監控頻率,這将決定驅動檢查每個 slave 鍊路狀态頻率,100 為初始參考值。

Up Delay 指定當發現一個鍊路恢複時,在激活該鍊路之前的等待時間。

Down Delay 指定一個時間,用于在發現鍊路故障後,等待一段時間然後禁止一個 slave 裝置。

網絡配置

網絡配置可以通過 ifconfig 指令檢視,Bonding 裝置會被标上 MASTER 标記,slave 裝置會被标上 SLAVE 标記。ifconfig 的輸出不包含哪個 slave 裝置關聯于哪個 Bonding 裝置的關系。

# /sbin/ifconfig 
 bond0     Link encap:Ethernet  HWaddr 00:21:5E:09:61:06 
         inet addr:XXX.XXX.XXX.YYY  Bcast:XXX.XXX.XXX.255  Mask:255.255.255.0 
         inet6 addr: fe80::221:5eff:fe09:6106/64 Scope:Link 
         UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1 
         RX packets:102250 errors:0 dropped:0 overruns:0 frame:0 
         TX packets:3083 errors:0 dropped:0 overruns:0 carrier:0 
         collisions:0 txqueuelen:0 
         RX bytes:29734912 (28.3 Mb)  TX bytes:364297 (355.7 Kb) 
 bond1     Link encap:Ethernet  HWaddr 00:21:5E:09:61:04 
         inet addr:XXX.XXX.XXX.YYY  Bcast:XXX.XXX.XXX.255  Mask:255.255.248.0 
         inet6 addr: fe80::221:5eff:fe09:6104/64 Scope:Link 
         UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1 
         RX packets:438007 errors:0 dropped:0 overruns:0 frame:0 
         TX packets:193184 errors:0 dropped:0 overruns:0 carrier:0 
         collisions:0 txqueuelen:0 
         RX bytes:39536092 (37.7 Mb)  TX bytes:16723783 (15.9 Mb) 
 eth10     Link encap:Ethernet  HWaddr 00:21:5E:09:61:06 
         inet6 addr: fe80::221:5eff:fe09:6106/64 Scope:Link 
         UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1 
         RX packets:51369 errors:0 dropped:0 overruns:0 frame:0 
         TX packets:3080 errors:0 dropped:0 overruns:0 carrier:0 
         collisions:0 txqueuelen:1000 
         RX bytes:14893183 (14.2 Mb)  TX bytes:364075 (355.5 Kb) 
         Interrupt:138 Memory:98000000-98012100 
 eth11     Link encap:Ethernet  HWaddr 00:21:5E:09:61:04 
         inet6 addr: fe80::221:5eff:fe09:6104/64 Scope:Link 
         UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1 
         RX packets:340168 errors:0 dropped:0 overruns:0 frame:0 
         TX packets:193180 errors:0 dropped:0 overruns:0 carrier:0 
         collisions:0 txqueuelen:1000 
         RX bytes:33274394 (31.7 Mb)  TX bytes:16723497 (15.9 Mb) 
         Interrupt:169 Memory:96000000-96012100 
 eth12     Link encap:Ethernet  HWaddr 00:21:5E:09:61:06 
         inet6 addr: fe80::221:5eff:fe09:6106/64 Scope:Link 
         UP BROADCAST RUNNING NOARP SLAVE MULTICAST  MTU:1500  Metric:1 
         RX packets:50881 errors:0 dropped:0 overruns:0 frame:0 
         TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 
         collisions:0 txqueuelen:1000 
         RX bytes:14841729 (14.1 Mb)  TX bytes:222 (222.0 b) 
         Interrupt:146 Memory:94000000-94012100 
 eth13     Link encap:Ethernet  HWaddr 00:21:5E:09:61:04 
         inet6 addr: fe80::221:5eff:fe09:6104/64 Scope:Link 
         UP BROADCAST RUNNING NOARP SLAVE MULTICAST  MTU:1500  Metric:1 
         RX packets:97839 errors:0 dropped:0 overruns:0 frame:0 
         TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 
         collisions:0 txqueuelen:1000 
         RX bytes:6261698 (5.9 Mb)  TX bytes:286 (286.0 b) 
         Interrupt:177 Memory:92000000-92012100 
      

可以看到 bond0 接口是 master(MASTER),而 eth10 和 eth12 是 slave(SLAVE),所有 bond0 的 slave 和 bond0 有着同樣的 MAC 位址 (00:21:5E:09:61:06)。Bond1 接口是 master(MASTER),而 eth11 和 eth13 是 slave(SLAVE),所有 bond1 的 slave 和 bond1 有着同樣的 MAC 位址 (00:21:5E:09:61:04)。

上一篇: 網卡挂載
下一篇: 網卡移植

繼續閱讀