我购买了 Netgear GS110EMX 交换机,并尝试配置 Intel 千兆四端口接口卡的所有 4 个端口以进行链路聚合。我下载并安装了适用于 Windows 的 Intel 网络适配器驱动程序。我通过选择相应的 4 个端口(LACP 类型的 LAG)在 GS110EMX 上配置了 LAG。然后,我使用团队类型 IEEE 802.3ad 动态链路聚合在计算机上使用 Intel 驱动程序创建了一个适配器团队。GS110EMX 上的 LAG 状态变为 UP,所以我认为我做对了。
问题是我的速度似乎没有任何提高。在设置 LAG 之前使用 LAN 速度测试,我在所有 4 个端口上获得了大约 733 Mbps 的写入速度和 854 Mbps 的读取速度。之后我在单个 LAG 端口上获得了 758 Mbps 的写入速度和 637 Mbps 的读取速度。因此,写入速度略有增加,但读取速度却显着下降。我敢肯定这不应该是它的工作原理。那么我做错了什么?
可能有帮助的其他信息是,我正在测试通过 10gbe 链路连接到交换机的 NAS 的速度。因此,连接的另一端不会造成瓶颈。实际速度因我在 LAN 速度测试中选择的数据包大小而异,但结果始终相同 - 写入速度稍快,读取速度慢得多。
答案1
L2 链路聚合 (LACP) 不会为您提供“真正的” 4 Gbps 链路;尽管它确实充当 MAC 层(L2 的上半部分)的单个接口,但在其下仍然是四个独立的 1 Gbps 链路,端点可以自由自动选择。
不同之处在于,出于某些原因(例如,为了确保属于给定流的数据包不会被重新排序),LACP 聚合始终尝试将流映射到单身的仅限物理链路。要充分利用 4x 聚合端口,您需要 4 个单独的数据包流。
每个 LACP 端点的“散列策略”配置了它如何选择通过哪个物理链路发送数据包。例如,“L3”策略完全基于 IP 地址进行选择,因此全部从主机 X 到 Y 的数据包被视为单个流。因此,如果您仅针对单个主机进行测试,并且发送方的策略设置为 L3,那么您将始终只使用单个链接作为“相同 (src_ip, dst_ip) ⇒ 相同端口”。
同时,“L3+L4”策略(有点不标准!)也考虑了TCP端口,所以如果你做了多连接测试(例如 iperf3 --parallel 4
),那么总数实际上可能是 4 Gbps。(但如果发送方没有 L3+L4 选项,则通过 IPv6 进行测试可能无论如何它都可以工作,因为它具有“流标签”作为 L3 标头的一部分,而无需进行更深入的 L4 检查。)
(请注意,SMBv3 特别具有“多通道”功能,如果它识别出服务器有多个 NIC 连接到同一网络,它会自行执行链路聚合。它还可以识别 Windows 内置的“NIC 组合”LACP 功能,并在这种情况下通过 LAG 创建多个连接,但是,它可能无法识别 NIC 驱动程序提供的 LACP 功能。)