服務器網卡bonding配置淺讀

    最近看了下服務器網卡bonding驅動的文檔,網絡比較關心,和大家分享下,文檔參見Linux內核目錄($KERNEL_DIR/Documentation/networking/bonding.txt)

我看的是內核linux-2.6.32.60的,源碼和文檔可以去www.kernel.org下載。

網卡綁定支持7中模式,使用mode選項來配置,具體如下:

    balance-rr or 0
        這是默認配置,即服務器開啓bond,但是不配mode選項的話,默認就是mode 0,也就是輪詢,我的理解是,從網絡上看,服務器2塊網卡使用同一個MAC地址,
        
        每一個miimon內,同時只有一塊網卡在工作,也就是說從交換機上看,這個MAC一會在這個端口,一會在另一個端口,但同時只能有一個端口存在流量,所以瓶頸
    
        是1塊網卡的極限。而且該mode如果交換機不配port-channel的話,會出現嚴重的MAC地址抖動。
    
    active-backup or 1
        主備模式,也是線上用的比較多的一種,服務器端只會有一塊網卡是活動狀態,只有當activce slave網卡down掉後,另外的slave纔會切換到active狀態,也
        
        就是說交換機無需任何特殊配置即可和服務器正常通信。

    balance-xor or 2
        異或模式,傳輸路線會根據異或的結果來選擇,默認是拿源MAC和目的MAC做異或操作來決定走哪塊網卡,通過xmit_hash_policy參數來修改策略。
    
    broadcast or 3
        廣播模式,在所有網卡上接受所有的數據包,只提供冗餘,不提供負載均衡。
        
    802.3ad or 4
        LACP模式,也是線上用的最多的一種,雙網卡使用一個MAC和IP同時工作,網卡性能是所有slave之和。需要支持ethtool獲取所有slave的speed和duplex;
        
        交換機支持802.3ad;
    
    balance-tlb or 5
        不需要交換機特殊支持,bond程序會選擇一塊網卡作爲active網卡收包,而出方向則是根據slave上的traffic來的;如果bond選擇的slavedown掉了,會有另外
        
        的slave會接管之前失效的MAC地址來收發包。總之就是單進雙出。
        
    balance-alb or 6
        在balance-tlb的基礎,增加了入方向rlb,字面上看就是 receive load balance,同樣不需要交換機配LACP,但是需要服務器網卡支持ethtool獲取speed和duplex,
        
        且網卡支持設置網卡硬件地址,和mode 4一樣,需要配置updelay參數,文檔原話:“The updelay parameter (detailed below) mustbe set to a value equal or
        
        greater than the switch'sforwarding delay so that the ARP Replies sent to the peers will not be blocked by the switch.”
        
        
mode 802.3ad線上用的比較多,就對802.3ad中可以設置的一些參數做一下介紹:

1、ad_select

    該參數制定鏈路聚合策略,有以下幾種:
    
    stable or 0
        按照最大帶寬去聚合;
        在所有slave down的情況,或者active聚合組沒有slave的情況下會重新聚合;
        
    bandwidth or 1
        和stable一樣,只是重新聚合的條件不一樣;
        一個slave的加入或者刪除會重新聚合;
        任何slave的狀態改變會重新聚合;
        任何slave的802.3ad協議狀態的改變會重新聚合;
        bond狀態改變也會重新聚合;
    
    count or 2
        按照端口數量最大來聚合,個人最這個最多端口和最大帶寬理解還不是太懂,具體要看實驗的表現;
        重新聚合發生在“bandwidth”參數的設置;

2、lacp_rate

    該參數指定LACPDU報文發送速率,有以下2種:
    
    slow or 0
        30s一次,默認就是slow;
    
    fast or 1
        1s一次;

3、miimon

    該參數指定鏈路檢測頻率,驅動程序推薦是miimon=100,也就是100ms一次,default是0;
    
4、xmit_hash_policy

    layer2
        使用2層(source MAC XOR destination MAC) 來hash;
        
    layer2+3
        使用2+3層(((source IP XOR dest IP) AND 0xffff) XOR( source MAC XOR destination MAC )) 來hash;IP地址XOR完畢後,取低16 bits,再和MAC地址做一次XOR。
        
    layer3+4
        使用3+4層((source port XOR dest port) XOR((source IP XOR dest IP) AND 0xffff)來hash;

最後貼一個mode 4配置:
    cat /etc/modprobe.d/bonding.conf
    alias bond0 bonding
    options bonding miimon=100 mode=4 xmit_hash_policy=2


mode 1    主要的幾個選項:

1、primary
    設置主網卡

2、updelay
    
    該參數的配置是爲了防止交換機重啓後端口UP起來,但是還未進入forwarding狀態引起服務器出現流量上來的問題

最後貼一個mode 1配置:
cat /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding miimon=100 mode=1 primary=eth0 updelay=600000



有啥理解不對的地方還請指出,謝謝。近期會對所有mode和想了解的參數測試一遍,看看服務器和交換機的具體表現。
    

    

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