現在很多服務器都自帶雙千兆網口,利用網卡綁定既能增加網絡帶寬,同時又能做相應的冗余,目前應用於很多的場景。linux操作系統下自帶的網卡綁定模式,Linux bonding驅動提供了一個把多個網絡接口設備捆綁為單個網絡接口設置來使用,用於網絡負載均衡及網絡冗余。當然現在網卡產商也會出一些針對windows操作系統網卡管理軟件來做網卡綁定(windows操作系統沒有網卡綁定功能 需要第三方支持)。
一、 Bonding的應用
1、 網絡負載均衡
對於bonding的網絡負載均衡是我們在文件服務器中常用到的,比如把三塊網卡,當做一塊來用,解決一個IP地址,流量過大,服務器網絡壓力過大的問題。如果在內網中,文件服務器為了管理和應用上的方便,大多是用同一個IP地址。對於一個百M的本地網絡來說,文件服務器在多個用戶同時使用的情況下,網絡壓力是極大的,為了解決同一個IP地址,突破流量的限制,畢竟網線和網卡對數據的吞吐量是有限制的。如果在有限的資源的情況下,實現網絡負載均衡,最好的辦法就是bonding 。
2、 網絡冗余
對於服務器來說,網絡設備的穩定也是比較重要的,特別是網卡。大多通過硬件設備的冗余來提供服務器的可靠性和安全性,比如電源。bonding 也能為網卡提供冗余的支持。把網個網卡綁定到一個IP地址,當一塊網卡發生物理性損壞的情況下,另一塊網卡也能提供正常的服務。
二、 Bonding的原理
什么是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬件地址(MAC Address)是自身Mac的以太網幀,對於別的數據幀都濾掉,以減輕驅動程序的負擔。但是網卡也支持另外一種被稱為混雜promisc的模式,可以接 收網絡上所有的幀,比如說tcpdump,就是運行在這個模式下。bonding也運行在這個模式下,而且修改了驅動程序中的mac地址,將兩塊網卡的 Mac地址改成相同,可以接收特定mac的數據幀。然后把相應的數據幀傳送給bond驅動程序處理。
三、 Bonding的模式
linux有七種網卡綁定模式:
模式代號 |
模式名稱 |
模式方式 |
說明 |
0 |
(balance-rr) Round-robin policy |
輪詢策略 |
該策略是按照設備順序依次傳輸數據包,直到最后一個設備。這種模式提供負載均衡和容錯能力。 |
1 |
(active-backup) Active-backup policy |
主備策略 |
該策略只有一個設備處於活動狀態。 一個宕掉另一個馬上由備份轉換為主設備。mac地址是外部可見的。 此模式提供了容錯能力。 |
2 |
(balance-xor) XOR policy |
異或策略 |
該策略是根據MAC地址異或運算的結果來選擇傳輸設備,提供負載均衡和容錯能力。 |
3 |
Broadcast policy |
廣播策略 |
該策略將所有數據包傳輸給所有接口通過全部設備來傳輸所有數據,提供容錯能力。 |
4 |
(802.3ad) IEEE 802.3ad Dynamic link aggregation |
動態鏈接聚合 |
該策略通過創建聚合組來共享相同的傳輸速度,需要交換機也支持 802.3ad 模式,提供容錯能力。 |
5 |
(balance-tlb) Adaptive transmit load balancing |
適配器傳輸負載均衡 |
該策略是根據當前的負載把發出的數據分給每一個設備,由當前使用的設備處理收到的數據。本策略的通道聯合不需要專用的交換機支持,提供負載均衡和容錯能力。
|
6 |
(balance-alb) Adaptive load balancing |
適配器負載均衡 |
該策略在IPV4情況下包含適配器傳輸負載均衡策略,由ARP協商完成接收的負載,通道聯合驅動程序截獲ARP在本地系統發送出的請求,用其中一個設備的硬件地址覆蓋從屬設備的原地址。 |
常用的是模式0和模式1,通常使用模式0。