我有一台 2530 Aruba 交换机,它有 4 个端口作为 LACP 中继,连接到 QNAP,其中 4 个网卡配置为 802.3ad 动态中继。当 2 个客户端尝试将文件写入或复制到 QNAP 时,每个客户端的速度为 100 MB/s,因此聚合正在运行,我可以在 QNAP 资源监视器中看到使用了两个网卡。但是当两个客户端都尝试从 QNAP 复制时,则只使用一个网卡,并且两个客户端都以 50 MB/s 的速度复制数据。
有什么可能导致这种行为?复制到 QNAP 速度很快并且使用聚合,但从 QNAP 复制则不然?
更新 1: - 到 QNAP 的传入流量分布在多个 NIC 上(LACP 工作) - 到 QNAP 的传出流量始终仅使用一个 NIC(LACP 不起作用)
更新 2: 猫/ proc / net / bonding / bond0
绑定模式:IEEE 802.3ad 动态链路聚合 传输哈希策略:layer2+3(2) MII 状态:已启动 MII 轮询间隔(毫秒):100 启动延迟(毫秒):0 下行延迟(毫秒):0 802.3ad 信息 LACP 速率:慢 最小链接数:0 聚合器选择策略(ad_select):稳定 从属接口:eth2 MII 状态:已启动 速度:1000 Mbps 双工:全双工 链接失败次数:3 永久硬件地址:24:5e:be:27:e1:2b 从队列ID:0 聚合器 ID:4 演员流失状态:无 合作伙伴流失状态:无 演员流失数量:1 合作伙伴流失数量:1 从属接口:eth3 MII 状态:已启动 速度:1000 Mbps 双工:全双工 链接失败次数:3 永久硬件地址:24:5e:be:27:e1:2c 从队列ID:0 聚合器 ID:4 演员流失状态:无 合作伙伴流失状态:无 演员流失数量:0 合作伙伴流失数量:1
答案1
使用 LACP 的链路聚合始终尝试将每个连接“固定”到单个 NIC,以避免数据包重新排序。通过对数据包的 MAC 和/或 IP 地址(有时也是 TCP/UDP 端口)进行哈希处理来选择 NIC。这始终在“发送”端完成 - 存储文件时由 Aruba 交换机完成;检索文件时由 QNAP 完成。
端口选择是确定性的 - 它不关心当前的负载/使用情况;相同的数据包头总是选择相同的端口,并且两个客户端的数据包可能会获得相同的哈希值。
(特别是,当所有客户端都在路由器后面时,目标 MAC 地址将相同,并且始终会散列到同一端口。)确保“散列策略”设置为“第 2+3 层(MAC+IP)”,如下所示文档: