从 40G 向 10G/1G 端口发送数据时吞吐量损失显著

从 40G 向 10G/1G 端口发送数据时吞吐量损失显著

不久前,我组建了一个 40G 网络,使用Mikrotik CRS354-48G-4S+2Q+RM交换机作为主干。使用这个交换机时,我很快就遇到了一个问题,从带宽大于目标端口的端口传输数据会导致吞吐量大幅下降。例如,我的个人 Windows 计算机配备了 10G;我通过 1G 连接了全千兆互联网。运行速度测试将得到预期的 ~900Mbps 下行速度,但只有 ~350Mbps 上行速度。将我的 10G 卡和交换机端口降到 1G - 它可以全速运行。同样,将 40G 传输到 10G 端口会导致吞吐量显著降低。

自从我组建网络以来,我的解决方案一直是使用 40G 或 10G 为每个连接的设备设置路由。在这种路由中,设备使用其板载 1G 进行互联网绑定流量,使用 40G/10G 进行本地流量。因为这是大多数情况发生的地方。然而,这种方法并不十分可靠。

我需要一个包含在交换机内的解决方案,最好如此。这个特定的交换机能够运行 RouterOS 或 SwitchOS(我在发布之前已经更新并测试了两者)。我被告知这很可能由于硬件限制而无法实现。在这种情况下,我需要一个更可靠的路由解决方案。

我一直使用net-tools“route”命令来调整路由规则。我的route -n看起来像这样;

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    1      0        0 vmbr0
0.0.0.0         192.168.0.1     0.0.0.0         UG    1000   0        0 vmbr1
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 vmbr1
192.168.0.0     0.0.0.0         255.255.255.0   U     1000   0        0 vmbr0

其中 vmbr0 = 1G,vmbr1 = 40G

这种解决方法通常一次只能对一个本地设备起作用。直到最近我安装了第二台服务器,这才成为一件大事。通过 40G 连接的两台服务器在路由方面不会出现任何问题,即使使用 1G NIC IP 也是如此。但是,当我连接 10G 客户端时,无论 IP 或服务器程序绑定到哪个接口/IP,它都会路由到 1G。如果我在其中一个 40G 服务器内重新启动网络,我暂时能够从我的客户端发送完整的 10G。遗憾的是,这并不一致,并且会随时切换回使用 1G。

如果我正确使用路由并且它仍然顽固,那么某种基于 IPv4 地址的网络限制器可能是理想的选择。

可以找到我的网络上设备的详细信息这里

任何有关此事的帮助都将不胜感激。

相关内容