通过 Linux 防火墙 VM 的网络传输速度很慢

通过 Linux 防火墙 VM 的网络传输速度很慢

我们在 Cisco UCS 之上的 ESX 上运行了一个 RedHat 5.8 VM,它使用 iptables 充当防火墙。该盒子有多个网卡,一个网卡用作我们网络的网关,其他网卡分别连接到单独的 VLAN/网络。我看到的问题是,从主机直接向防火墙 VM 进行 iperf 测试可获得 800+ Mbps 的速度,但尝试从防火墙外的主机向防火墙内的主机进行 iperf 测试(导致流量穿过防火墙)会产生大约 30Mbps 或更低的速度。

细节:

  • 我不确定我们正在运行的是 ESX 或 UCS 的哪个版本,但我可以查明这是否重要。我们的系统管理员会保持更新,因此它们很可能在最近的几次更新中。
  • 我知道我们正在使用 VMXNET 3 驱动程序作为网络适配器。
  • 所有连接均经过验证为1Gbps。

我尝试过的:

  • 据我所知,e1000 驱动程序的效果更好,因此我们使用该驱动程序添加了几个网卡,并且 iperf 通过这些接口进行了测试,结果相同。
  • 检查测试接口上的 LRO 是否已禁用。当我运行“ethtool -K ethX lro off”时,它报告“卸载设置未更改”,我猜想这意味着它已被禁用。
  • 还禁用了测试接口上的 TSO。
  • 当我进行速度测试时,我通常会通过同一集群上的防火墙从物理设备测试到虚拟设备。我还尝试通过防火墙从虚拟设备测试到虚拟设备,并得到了相同的结果。
  • 禁用 iptables 并运行速度测试,得到相同的结果。
  • 上述任何一项都没有改变任何东西,除了可能使速度变得更慢(我的速度一度低于 10 Mbps)。

因为我可以获得 800+ Mbps 的防火墙速度,这让我认为网卡本身的配置没有问题。我觉得这是操作系统本身的转发问题,因为它似乎只在通过防火墙传递流量时才会出现。我还应该注意,在此过程中我没有观察到任何 CPU 峰值。

我肯定遗漏了一些细节,所以如果还有其他问题,请告诉我。我很感激任何帮助!

答案1

我们找到了解决方案。我们必须在 UCS 的刀片级别禁用 LRO(如此处所示 ->http://docwiki.cisco.com/wiki/Disable_LRO)。一旦我们这样做了,速度就会上升到 700+MBps,仅仅因为 CPU 和 iptables 处理而受到限制。

相关内容