專注網絡運維,只發實用干貨
您的關注是我更新的原動力
公眾號與博主同人,感謝支持。
在數據中心內,當服務器流量太大或業務很重要,通常會采取多網卡綁定提高帶寬和增強冗余性,而交換機上也需要做相應配置,保證服務器多線路接入能正常通信,常用的就是鏈路聚合技術。但是網絡工程師經常會遇到配置好了交換機的鏈路聚合,而服務器還是不能正常通信的情況。服務器工程師往往不會關注網絡問題,也不能給你有用的排錯信息,這時候就需要網絡工程師根據服務器網卡綁定模式來決定交換機的鏈路聚合該如何配置。雖然網工不必懂Linux,但誰讓網絡總是最后的背鍋俠呢,so,只能讓我們的鍋底更厚一點。
bonding是linux內核自帶的模塊,它能將Linux系統的多個網卡綁定為一個邏輯端口,同時對外提供一個統一的IP地址,目前bonding模塊的工作模式共有七種mode(0~6)。
linux七種bond模式說明:
mode=0 ,(balance-rr) 輪詢均衡模式
特點:傳輸數據包順序是多個網卡輪詢傳輸,可能會出現亂序數據包需要重傳。服務器對外只有一個MAC地址,其物理網卡是沒有MAC地址的,因此需要交換機做鏈路聚合,否則不知道要將數據包發送給哪個網卡。
mode=1, (active-backup)主備模式
特點:只有主網卡處於活動狀態,當主網卡down備份網卡才會轉為活動網卡。服務器對外只有一個活動網卡,從交換機上看來,只能看到其活動的網卡一個MAC地址,因此不需要交換機特別配置,配置access端口就可以了。
mode=2,(balance-xor)(根據hash的均衡模式)
特點:基於指定的傳輸HASH策略傳輸數據包。默認hash算法是: [(source MAC address XOR'd with destination MAC address) modulo slave count]。(XOR:異或),算法可以更改。
mode=3,broadcast(廣播策略)
特點:在每個網卡上傳輸每個數據包,廣播包太多,一般不使用此模式。
mode=4,(802.3ad)IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 動態鏈接聚合)
特點:創建一個聚合組,它們共享同樣的速率和雙工設定。根據802.3ad規范將多個網卡工作在同一個激活的聚合體下。基於傳輸hash策略實現負載均衡,默認XOR hash算法。並且支持802.1Q trunk模式,同時傳輸多個VLAN。
tips:
-
服務器網卡支持同樣的雙工和速率;
-
交換機網卡需要配置802.3ad,也就是LACP協議;
-
交換機不一定支持XOR hash算法,在實際使用時存在兼容性問題;
mode=5,(balance-tlb)Adaptive transmit load balancing(適配器發送負載均衡)
特點:不需要任何特別的switch(交換機)支持的通道bonding。在每個網卡上根據當前的負載(根據速度計算)分配外出流量。如果正在接受數據的網卡出故障了,另一個網卡接管失敗的網卡的MAC地址。交換機上可見多個網卡的MAC,因此不需要交換機做鏈路聚合配置。
mode=6,(balance-alb)Adaptive load balancing(適配器適應性負載均衡)
特點:該模式包含了balance-tlb模式,同時加上針對IPV4流量的接收負載均衡(receiveload balance, rlb),而且不需要任何switch(交換機)的支持。交換機上也是可見多個網卡的MAC,不需要做鏈路聚合配置。
以下部分是mode=6實現原理,了解一下:
-
bond接收負載均衡是通過ARP協議實現的。bonding驅動截獲本機發送的ARP應答,並把源MAC地址改寫為bond中某個網卡的MAC地址,從而使得交換機上學習到的ARP是服務器想要分配流量的MAC地址,向服務器發送的流量則會發送到相對應的MAC地址。
-
bond發送負載均衡也是通過ARP協議實現的。當服務器發起ARP請求時,bonding驅動把對端的IP信息從ARP包中復制並保存下來。當ARP應答從對端到達時,bonding驅動把它的MAC地址提取出來,並偽造一個ARP應答給bond中的某個網卡,以此實現從指定的網卡發出數據包。
-
當有網卡出現故障或ARP過期時,bond都會重新計算,將流量重新分配到各個網卡;
LACP的模式分為靜態和動態,動態又分為主動和被動。
LACP鏈路聚合模式:
1,靜態:
mode on,手動強制模式:
不發送也不接收LACP協商報文,交換機物理端口被強制捆綁到etherchannel,數據包根據聚合口負載均衡模式在多個物理口上傳輸。一般默認的為基於包的負載均衡,即在多個網口之間輪詢發送數據包。使用這種聚合模式時,對端也必須是mode on,強制形成etherchannel。
2,動態:
active,主動協商模式:
交換機聚合口主動發出LACPDU報文,與對端符合802.3ad規范的動態聚合口主動協商。
一般推薦使用主動模式。
passive,被動協商模式:
交換機聚合口只接收LACPDU報文,被動與對端符合802.3ad規范的動態聚合口進行協商。
一張表總結:
tips:
-
服務器常用的為mode0,1,6三種bond模式;
-
在某些情況下需要動態協商,可以使用mode4,使用LACP協商。
-
如果服務器和交換機配置都沒有問題,建議檢查一下兩端的網口雙工和速率是否一致,如果不能自動協商成功,則改成強制全雙工。