轉:Centos or Ubuntu 雙網卡綁定

雙網卡綁定這個技術已經很老了,google一搜也一大堆,今天自己也小記一下 

Linux雙網卡綁定實現就是使用兩塊網卡虛擬成爲一塊網卡,這個聚合起來的設備看起來是一個單獨的以太網接口設備,通俗點講就是兩塊網卡具有相同的IP 地址而並行鏈接聚合成一個邏輯鏈路工作。其實這項 技術在Sun和Cisco中早已存在,被稱爲Trunking和Etherchannel技術,在Linux的2.4.x的內核中也採用這這種技術,被稱 爲bonding。bonding技術的最早應用是在集羣——beowulf上,爲了提高集羣節點間的數據傳輸而設計的。

 

下面我們討論一下bonding 的原理,什麼是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬件地址(MAC Address)是自身Mac的以太網幀,對於別的數據幀都濾掉,以減輕驅動程序的負擔。但是網卡也支持另外一種被稱爲混雜promisc的模式,可以接 收網絡上所有的幀,比如說tcpdump,就是運行在這個模式下。bonding也運行在這個模式下,而且修改了驅動程序中的mac地址,將兩塊網卡的 Mac地址改成相同,可以接收特定mac的數據幀。然後把相應的數據幀傳送給bond驅動程序處理。

 

Centos 6.0

1、修改網卡配置

首先是bond0

  1. cd /etc/sysconfig/network-scripts 
  2. vim ifcfg-bond0 
  3.  
  4. DEVICE="bond0" 
  5. BOOTPROTO=static 
  6. BROADCAST="192.168.4.255" 
  7. DNS1="218.108.248.200" 
  8. GATEWAY="192.168.4.1" 
  9. IPADDR="192.168.4.130" 
  10. NETMASK="255.255.255.0" 
  11. ONBOOT="yes" 
  12. TYPE=Ethernet 

 接下來是eth0、eth1

  1. vim ifcfg-eth0 
  2.  
  3. DEVICE="eth0" 
  4. BOOTPROTO=none 
  5. ONBOOT="yes" 
  6. TYPE=Ethernet 
  7. MASTER=bond0 
  8. SLAVE=yes 
  9.  
  10.  
  11. vim ifcfg-eth1 
  12.  
  13. DEVICE="eth1" 
  14. BOOTPROTO=none 
  15. ONBOOT="yes" 
  16. TYPE=Ethernet 
  17. MASTER=bond0 
  18. SLAVE=yes  

2、加載模塊

  1. vim /etc/modprobe.d/dist.conf 
  2.  
  3. alias bond0 bonding 
  4. options bond0 miimon=100 mode=0 

 對於這些參數解釋,網上也是一大堆

 

 

  1. miimon是用來進行鏈路監測的。 比如:miimon=100,那麼系統每100ms監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路;mode的值表示工作模式,他共有0,1,2,3,4,5,6四種模式,常用的爲0,1兩種。 
  2. mode=0表示load balancing (round-robin)爲負載均衡方式,兩塊網卡都工作。 
  3. mode=1表示fault-tolerance (active-backup)提供冗餘功能,工作方式是主備的工作方式,也就是說默認情況下只有一塊網卡工作,另一塊做備份. 
  4. bonding只能提供鏈路監測,即從主機到交換機的鏈路是否接通。如果只是交換機對外的鏈路down掉了,而交換機本身並沒有故障,那麼bonding會認爲鏈路沒有問題而繼續使用 
  5.  
  6. 這7種工作方式如下: 
  7.  
  8. =0: (balance-rr) Round-robin policy: (平衡掄循環策略):傳輸數據包順序是依次傳輸,直到最後一個傳輸完畢, 此模式提供負載平衡和容錯能力。 
  9.  
  10. =1: (active-backup) Active-backup policy:(主-備份策略):只有一個設備處於活動狀態。 一個宕掉另一個馬上由備份轉換爲主設備。mac地址是外部可見得。 此模式提供了容錯能力。 
  11.  
  12. =2:(balance-xor) XOR policy:(廣播策略):將所有數據包傳輸給所有接口。 此模式提供了容錯能力。 
  13.  
  14. =3:(balance-xor) XOR policy:(平衡策略): 傳輸根據原地址布爾值選擇傳輸設備。 此模式提供負載平衡和容錯能力。 
  15.  
  16. =4:(802.3ad) IEEE 802.3ad Dynamic link aggregation.IEEE 802.3ad 動態鏈接聚合:創建共享相同的速度和雙工設置的聚合組。 
  17.  
  18. =5:(balance-tlb) Adaptive transmit load balancing(適配器傳輸負載均衡):沒有特殊策略,第一個設備傳不通就用另一個設備接管第一個設備正在處理的mac地址,幫助上一個傳。 
  19.  
  20. =6:(balance-alb) Adaptive load balancing:(適配器傳輸負載均衡):大致意思是包括mode5,bonding驅動程序截獲 ARP 在本地系統發送出的請求,用其中之一的硬件地址覆蓋從屬設備的原地址。就像是在服務器上不同的人使用不同的硬件地址一樣。 

 

3、重啓網卡

寫道
/etc/init.d/network restart

 

重啓的時候,可以看到網卡是否成功啓動,啓動成功之後就是雙網卡綁定狀態了

 

至於網上大部分說的ifenslave bond0 eth0 eth1,這只是一條啓用命令而已,像上述配置好了的話,這條命令根本不用執行了,也不用去開機執行,因爲開機就會加載網卡配置文件了

 

若要查看綁定的網卡狀態

寫道
cat /proc/net/bonding/bond0


Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:10:5c:ef:b1:fc

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:10:5c:ef:b1:fd

 

ifenslave是centos默認就安裝了,它的一些使用方法可以man看看

 

經過測試,雙網卡綁定之後,帶寬果然有增加至少50%

 

 

Ubuntu 10.04 server

 

沒安裝的話,執行

 

寫道

apt-get install ifenslave-2.6

 

1、修改網卡配置

 

Ubuntu的稍微簡單一些

 

 

 寫道
vim /etc/network/interfaces

auto lo
iface lo inet loopback

auto bond0
iface bond0 inet static
address 192.168.4.132
netmask 255.255.255.0
gateway 192.168.4.1
post-up ifenslave bond0 eth0 eth1
pre-down ifenslave -d bond0 eth0 eth1

 

 

2、加載模塊

 

首先執行

 

 寫道
modprobe bonding

 

 這樣就不用重啓設備了

當然,配置文件也同樣需要添加

 

 寫道
vim /etc/modules

bonding mode=0 miimon=100

 

 

3、重啓網卡

 

執行

 

 寫道
/etc/init.d/networking restart

 

 

完成以後,同樣可以查看一下bonding的狀態

 

 寫道

root@132:/etc/network# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 100 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:10:5c:ef:b2:a2
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:10:5c:ef:b2:a3
Slave queue ID: 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章