為什麼在兩個 1Gbps 適配器上使用綁定時 iperf 仍報告 1Gbps 性能?
據我了解,綁定帶來的好處之一是能夠提高 LAN 中兩台機器之間的網路速度。
粘合
$$ … $$意味著將多個網路介面 (NIC) 組合到單個鏈路,提供高可用性、負載平衡、最大吞吐量或這些的組合。
來源:Ubuntu 文件,強調我的。
我在兩台伺服器上配置了綁定;兩者都有兩個 1Gbps NIC 適配器。在使用
iperf
測試這些伺服器之間的速度時,報告指出:
- 使用
balance-rr
綁定模式時為 930 至 945 Mbits/sec。- 520 到 530 Mbits/sec 從機器 A 到 B 使用時
802.3ad
,- 930 到 945 Mbits/sec 從機器 B 到 A 使用
802.3ad
.一個有趣的事情是,當使用
802.3ad
,ifconfig
表示實際上所有RX
都在eth0
(2.5 GB 與幾 KB/MB)並且都TX
在eth1
機器 A 上,而在機器 B 上則相反。當要求
iperf
使用多個連接(iperf -c 192.168.1.2 -P 10
)時,得到的總和與使用單個連接時顯示的結果非常接近。兩台機器連接到一個 Netgear GS728TS,它正確配置了 LACP(我希望),兩個 LAG 分別覆蓋兩個埠。啟用 IEEE 802.3x 模式。
iperf
適合這種測試嗎?如果是的話,我有什麼遺漏嗎?
聯繫 Netgear 支持後,似乎:
如果您使用 2 個站點(1 個客戶端/1 個伺服器),它實際上只會使用一個連結(因此為 1Gbps/940mbps),使用的連結由 LACP 雜湊算法決定。
要超過 1Gbps 限制,您需要使用 1 個以上的客戶端進行測試。
資料來源:Netgear 支持工單響應
相同的工單響應連結到 Netgear 的公共論壇文章,我們可以在其中看到:
當 LACP 散列算法將多個流量流放在不同的路徑上時,您只能獲得 2Gbps 的聚合,但並非總是如此。對於少數客戶端(在您的情況下為 2 個),它們都可能被散列到同一個連結的可能性很大。
對於那些不想閱讀整個論壇討論的人,以下是要點:
- 應該至少有兩個客戶端連接到伺服器才能從 LACP 中受益。單個客戶端將僅使用一個連結,這會將其速度限制為 1 Gbps。
- 兩個客戶端應該使用不同的連結才能從 LACP 中受益。
- 伺服器上只有兩個網路適配器,有 50% 的機會從兩個客戶端獲得相同的連結,這將導致總速度上限為 1 Gbps。三個網路適配器將機率降低到 33%,四個降低到 25%。
總而言之,Netgear GS728TS 無法在兩台機器之間獲得 1.4 到 1.8 Gbps 的速度。
綁定介面不會向單個網路流授予額外頻寬。因此,如果您只執行一個 iperf 副本,那麼您一次只能使用一個網路介面。如果您有兩個 NIC 處於滯後狀態,那麼您需要在電腦上執行至少兩個完全獨立的 iperf 副本才能查看任何同時使用情況。這也適用於實際負載 - 例如,Samba 客戶端仍然只能看到 1Gb 吞吐量,但如果您的 lagg 有兩個 NIC,則兩個客戶端每個都可以看到 1Gb。這一切都假設您將延遲配置為使用兩個 NIC(802.3ad 選項將執行此操作)。