如何使用绑定驱动程序在 Linux 上实现 2 GB 的总吞吐量?

5 linux gigabit-ethernet bonding

对于这个应用程序,与总吞吐量相比,我不太关心高可用性。我在服务器端有一个 IP 地址,我希望能够从服务器发送超过 1 Gb 的流量。服务器有两个 1 千兆位卡并连接到一对交换机。该应用程序涉及世界各地连接到服务器(即不是本地网络)的数千个远程客户端。

目前,使用模式 5(balance-tlb)设置绑定,但结果是每个端口的吞吐量不会超过 500Mbit/s。我怎样才能突破这个限制?请假设我无法访问交换机,因此我无法实现 802.3ad。

(我希望添加“bonding”标签,但我无法添加新标签,所以是“teaming”。)

Kev*_*hal 6

如果没有交换机级别的合作,您不太可能实现 2 Gb,即使只有一个 IP 源/目标组合也可能很难。大多数团队都设置了 IP 散列,它为每个源/目标分配单个 NIC 路径。因此,您只能获得 1 Gb。有循环方案,但您经常会发现数据包到达顺序混乱,除非主机和目的地都支持该方案,否则它是不可取的。


nik*_*nik 6

您将需要在交换机端口处进行端口聚合(接入交换机的连接到计算机上 2 个千兆位端口的两个端口需要聚合)。但是,一旦实现这一点,您应该接近 2Gbps 路径(受机器能力的限制)。

\n

通过交换机上的端口聚合与绑定驱动程序的逻辑 2Gbps 端口相匹配,您将使用多路复用冗余路径,并且机器上只有一个 IP 地址。

\n

我现在在这里查找这些内容时发现了一些有趣的注释。

\n
\n

Linux 绑定驱动程序\xe2\x80\x93 的这个奇妙功能有一个阴暗面,它仅适用于允许在接口打开时更改 MAC 地址的网络接口。Balance-alb 模式依赖于快速 ARP 欺骗,通过动态重写 MAC 地址来欺骗内核,使其认为两个物理接口是一个。因此接口的驱动程序必须支持这一点,但很多驱动程序都不支持。

\n

但这并不是绑定驱动程序所能做的全部。模式选项为您提供七种选择,您不必担心接口兼容性。但是您确实需要考虑您的交换机支持什么。Balance-rr、balance-xor 和广播模式需要将交换机端口分组在一起。它有各种不同的名称,因此请查找“中继分组”、“以太网通道”、“端口聚合”或类似的名称。802.3ad 需要交换机支持 802.3ad。

\n
\n