据我了解,绑定带来的好处之一是能够提高 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
适合这种测试吗?如果是的话,我有什么遗漏吗?
绑定接口不会向单个网络流授予额外带宽。因此,如果您只运行一个 iperf 副本,那么您一次只能使用一个网络接口。如果您有两个 NIC 处于滞后状态,那么您需要在计算机上运行至少两个完全独立的 iperf 副本才能查看任何同时使用情况。这也适用于实际负载 - 例如,Samba 客户端仍然只能看到 1Gb 吞吐量,但如果您的 lagg 有两个 NIC,则两个客户端每个都可以看到 1Gb。这一切都假设您将延迟配置为使用两个 NIC(802.3ad 选项将执行此操作)。
联系 Netgear 支持后,似乎:
资料来源:Netgear 支持工单响应
相同的工单响应链接到 Netgear 的公共论坛帖子,我们可以在其中看到:
对于那些不想阅读整个论坛讨论的人,以下是要点:
应该至少有两个客户端连接到服务器才能从 LACP 中受益。单个客户端将仅使用一个链接,这会将其速度限制为 1 Gbps。
两个客户端应该使用不同的链接才能从 LACP 中受益。
服务器上只有两个网络适配器,有 50% 的机会从两个客户端获得相同的链接,这将导致总速度上限为 1 Gbps。三个网络适配器将几率降低到 33%,四个到 25%。
总而言之,Netgear GS728TS 无法在两台机器之间获得 1.4 到 1.8 Gbps 的速度。
此问答对我了解与 LACP 的绑定非常有帮助,但没有具体示例如何验证约 1.8Gb/s 的吞吐量。对我来说,验证这一点很重要,所以我将分享我是如何测试它的。
正如@ChrisS在他的回答中指出的那样,运行完全独立的 iperf 副本很重要。为了实现这一点,我使用两个客户端连接到 lacp-server。在 lacp-server 上,我使用screen在两个屏幕窗口/会话中运行 iperf 的独立实例。我还通过为每个连接使用不同的端口来确保拥有独立的数据流。我的将 LACP 绑定到服务器的交换机是 TP-LINK T1600G-52TS。所有设备都使用Debian 10 (Buster)。两个测试客户端连接到交换机的一个端口。首先,我在 lacp-server 的服务器模式下在屏幕内启动 iperf 两次,然后同时在客户端上执行(使用 ssh):
以下是第一个连接在 lacp-server 上的结果:
对于第二个连接:
这就是 855Mb/s + 906Mb/s = 1.761Mb/s 的带宽。
@ArseniMourzenko在他的回答中指出:
我已经重复了 10 多次测试来验证这一点,但总是得到大约 1.8Gb/s 的带宽,所以我无法确认这一点。
接口的统计显示其使用是均衡的:
使用三个测试客户端,我得到以下结果:
参考:
链接聚合和 LACP 基础
LACP 绑定和 Linux 配置
Linux 以太网绑定驱动程序 HOWTO
RedHat - 使用通道绑定