天天看點

【網絡】虛拟網絡技術:Bond技術

簡略

什麼是bond:網卡bond(綁定),也稱作網卡捆綁。就是将兩個或者更多的實體網卡綁定成一個虛拟網卡。

Bond的作用: 1.提高網卡的吞吐量。2.增強網絡的高可用(某個實體網卡不工作了,其他頂上),同時也能實作負載均衡。

【網絡】虛拟網絡技術:Bond技術

詳細

一、Bond簡介

Bond技術即bonding,它是Linux Kernel的一個子產品,能将多塊實體網卡綁定到一塊虛拟網卡上,并通過修改網口驅動讓多塊網卡看起來是一個單獨的以太網接口裝置,外界看到的隻有一個IP,一般用于解決網卡的單點故障或網卡負載較高的場景。

多網卡綁定實際上需要提供一個額外的軟體的bond驅動程式實作。通過驅動程式可以将多塊網卡屏蔽。對TCP/IP協定層隻存在一個Bond網卡,在Bond程式中實作網絡流量的負載均衡,即将一個網絡請求重定位到不同的網卡上,來提高總體網絡的可用性。

二、Bond技術原理

Bond技術需要實體網卡開啟混雜模式才能正常工作。在混雜模式下,網卡不是僅接收 “目的MAC位址=自身MAC位址”的以太網幀,而是接收網絡上所有的資料幀。

為了實作多塊網卡的協同工作,Bond将自己的MAC位址複制到各個實體網卡上,讓所有的網卡共享同一個MAC位址。這個方式就要求所有的網卡都要支援BIOS,這樣才能夠讓作業系統将MAC位址寫到網卡上。

單實體網卡的Bond網卡,Bond網卡的MAC位址和實體網卡的實體位址是一緻的。

多實體網卡的Bond網卡,其中一塊實體網卡會被設定為 Master,其他的網卡則都是Slave,Bond網卡的MAC位址=Master實體網卡的MAC位址,然後再将這個MAC位址複制到其他實體網卡上。

是以在安裝網卡時,我們需要指定Bond網卡,以及Bond網卡所對應的标志為Master的實體網卡。

三、網卡Bond模式

網卡Bond模式總共有7種,最常用的是負載模式(模式0)和主備模式(模式1),在網絡流量較大的場景下推薦使用負載模式(Bond0),而在可靠性要求較高的場景下則推薦使用主備模式(Bond1)。接下來将對這7種模式進行簡單的介紹以及優缺點對比。

1)模式0

此模式使用輪詢政策,即順序的在每一個被bond的網卡上發送資料包,這種模式提供負載均衡和容錯能力。Bond0可以保證bond虛拟網卡和被bond的兩張或多張實體網卡擁有相同的MAC位址,其中bond虛拟網卡的MAC位址是其中一張實體網卡的MAC位址,而bond虛拟網卡的MAC位址是根據bond自己實作的一個算法來選擇的。

在bond0模式下,如果一個連接配接或者會話的資料包從不同的網口發出,途中再經過不同的鍊路,則在用戶端很有可能會出現資料包無序到達的現象,而無序到達的資料包一般需要重新發送,這樣網絡的吞吐量就會下降。另外,如果做bond0的兩張或多張網卡接到了同一交換機上,還需對交換機配置聚合模式。

2)模式1

此模式使用主備政策,在所有做bond1的實體網卡中,同一時刻隻有一張網卡被激活,當且僅當活動網卡失效時才會激活其他的網卡。這種模式下做bond的兩張或多張網卡的MAC位址和Bond虛拟網卡的MAC位址相同,而Bond的MAC位址是Bond建立啟動後活動網卡的MAC位址。

這種模式要求主被網卡能快速的切換,即當主網卡出現故障後能迅速地切換至備用網卡。切換過程中,上層的應用幾乎不受影響,因為Bond的驅動程式會臨時接管上層應用的資料包,存放至資料緩沖區,等待備用網卡啟動後再發送出去。但是如果切換時間過長,則會引起緩沖區的溢出,導緻丢包。

3)模式2

此模式的預設選擇政策是:選擇網卡的序号=(源MAC位址 XOR 目标MAC位址) % Slave網卡(從網卡)的數量。其他的傳輸政策可以通過xmit_hash_policy配置項指定。

4)模式3

模式3使用廣播政策,資料包會被廣播至所有Slave網卡進行傳送。

5)模式4

模式4使用動态連結聚合政策,啟動時會建立一個聚合組,所有Slave網卡共享同樣的速率和雙工設定,需要交換機支援IEEE 802.3ad動态鍊路聚合模式。支援使用ethtool工具擷取每個slave網卡的速率和雙工設定。

6)模式5

模式5基于每個slave網卡的速率選擇傳輸網卡,支援使用ethtool工具擷取每個slave網卡的速率。

7)模式6

模式6包含了bond5模式,同時還支援對IPV4流量接收時的負載均衡政策,而且不需要任何交換機的支援,支援隻是用ethtool擷取每個Slave的速率,要求底層驅動支援設定某個網卡裝置的硬體位址。

介紹完這7種模式之後,我們簡單對這7種模式的優缺點進行簡單的對比,具體的内容請參考以下圖1所示。

繼續閱讀