Linux 光纤 10Gbe 网络,如何诊断性能问题?

Linux 光纤 10Gbe 网络,如何诊断性能问题?

我有由 3 台服务器组成的小型集群。每台服务器都有两个 10Gbe SFP+ 光纤网卡。有两个独立的 10Gbe 交换机。在所有服务器上,一个 NIC 连接到交换机 1,第二个 NIC 连接到交换机 2 以提供容错能力。

物理接口使用 LACP 在服务器级别进行绑定。

所有服务器都可以互相 ping 通,但其中一台服务器有少量(4%)数据包丢失(通过绑定接口,这对我来说看起来很可疑)

当我使用 iperf3 检查两台良好服务器之间的传输速率时,它们显示两个方向的传输速率约为 9.8Gbit/s。

这两个好的服务器也可以从有问题的服务器下载,速度也是 9.8 Gbit/s

Iperf3 在有问题的服务器上作为客户端运行时显示奇怪的现象。它一开始的速度是几百兆比特。后来速度降到 0 比特/秒(同时仍在运行 ICMP ping,成功率约为 96%)。只在一个方向上。当其他服务器从此服务器下载时,它们的速度达到全速。

所有软件都运行在相同的硬件上,甚至固件版本也相同(Dell R620 服务器、Mellanox ConnextX-3-EN NIC、Opton SPF+ 模块、Mikrotik CRS309-1G-8S 交换机)。此外,操作系统也是最新的稳定 Debian,包含所有更新和精确安装的软件包。

没有防火墙,所有服务器上的所有 iptables 规则均被清除

在有问题的服务器上,我检查了接口,两个网卡都显示为“已启动”,并以 10Gbit 全双工方式运行

另外 cat /proc/net/bonding/bond0 显示两个接口均已启动、处于活动状态,没有物理链路错误

我检查/更换了 SFP+ 模块,使用了不同的光纤跳线,尝试了不同的交换机端口,但没有任何变化,但这台有问题的服务器从其他服务器获得的下载速度仍然很慢,并且丢失了少量数据包(通过绑定接口!)。

我还尝试了以下跳线组合:(两个都打开,先打开后关闭,先关闭后打开)。同样没有变化

有什么想法可以让我更好地诊断它吗?

答案1

除非交换机支持堆叠支持跨机箱的 LACP,LACP 无法以这种方式工作。事实上,静态 LAG 中继也无法工作。

一般来说,链路聚合只适用于单个对面交换机(或类似交换机的堆栈)。

使用简单的 L2 冗余,您只能以主动/被动对的形式运行具有故障转移功能的 NIC。使用具有适当负载平衡和故障转移 IP 迁移的多个 L3 链路或通过外部负载平衡器进行监控也适用于您的方案。

答案2

请在此处查看我的回答(如果它对您的情况有用,请不要忘记点赞):

为什么我只能通过两台机器之间的 10Gbe 直接连接实现 2.5Gbps?

它很可能与 LRO GRO 有关,GRO 代表 RECEIVE OFFLOAD,可以轻松禁用。关于为什么会发生这种情况,也有一个很好的解释。这里:https://lwn.net/Articles/358910/

调整 10G 网络接口是一个巨大的课题。

相关内容