我在两个不同的 PCIe 适配器上直接连接了两个 PowerEdge 6950 分频器(使用直线)。
我在每条线路上都有一个千兆链路(1000 MBit、全双工、双向流量控制)。
现在我正在尝试使用双方的 rr 算法将这些接口绑定到 bond0(我想为单个 IP 会话获得 2000 MBit)。
当我通过在 tcp 模式下使用 dd bs=1M 和 netcat 将 /dev/zero 传输到 /dev/null 来测试吞吐量时,我得到了 70 MB/s 的吞吐量 - 不是 - 正如预期的那样超过 150MB/s。
当我使用单线时,如果我为每条线使用不同的方向,每条线的速度大约为 98 MB/s。当我使用单条线路时,如果流量进入“相同”方向,则线路上的速度分别为 70 MB/s 和 90 MB/s。
通读bonding-readme (/usr/src/linux/Documentation/networking/bonding.txt)后,我发现以下部分很有用:(13.1.1 MT Bonding Mode Selection for Single Switch Topology)
balance-rr:此模式是唯一允许单个 TCP/IP 连接跨多个接口条带化流量的模式。因此,它是唯一一种允许单个 TCP/IP 流利用多个接口的吞吐量的模式。然而,这是有代价的:条带化通常会导致对等系统无序接收数据包,从而导致 TCP/IP 的拥塞控制系统启动,通常是通过重新传输段。
Run Code Online (Sandbox Code Playgroud)It is possible to adjust TCP/IP's congestion limits by altering the net.ipv4.tcp_reordering sysctl parameter. The usual default value is …