我使用 Linux 绑定驱动程序在客户端 PC 上以模式 6 绑定了 2 个 NIC。ethtool ethX 显示速度 =1000 ethtool bond0 显示速度 =2000
但是当我使用 iperf 时,eth0 的带宽 = 934Mbps,eth1 的带宽 = 637Mbps,bond0 的带宽 = 934Mbps
bond0的带宽不是应该在2000Mbps左右吗?
答案1
简而言之:不,粘合不能以这种方式进行。
很长的故事:Linux 绑定具有各种绑定方案,可配置性很强。它有不少于 7 种不同的绑定类型,每种都有其优点和缺点。我强烈建议您阅读可以找到的文档这里。然而,要点是(除了模式round-robin
,我将在下面详细介绍)没有绑定方案能够提高单个会话的吞吐量,而是加速多种的并发会话。因此,您的iperf
输出完全正常,因为它打开了一个无法通过绑定驱动程序加速的单个会话。
此规则的唯一例外是round-robin
模式,它以循环方式传输数据包:第一个数据包从第一个接口发出,第二个数据包从第二个接口发出,依此类推。此绑定模式能通过并发发送数据包来加速单个会话。但是它有很多缺陷,包括交换机不兼容、数据包传送无序(相对重传)、2 个接口上的扩展性差等。
这只是非常简洁的总结。如果你对粘合的工作原理感兴趣,你应该真的认真看一下我上面提供的文档。
答案2
我目前正在试验循环调度 - 我注意到,当使用 iperf 绑定 2 个 NIC 时,它确实提供了 1.6-1.7 Gb/s(请记住,我用来测试速度的两台机器各有 2 个处于模式 0 的 NIC)。我今天用 3 个 NIC 进行了测试,得到了 ¬900 Mb/s - 原因是循环调度在偶数个 NIC 时效果最佳。我只会将其用作 NFS 共享的服务器备份(廉价)的主干...