![绑定 SWITCH XS(传入数据包)](https://linux22.com/image/723003/%E7%BB%91%E5%AE%9A%20SWITCH%20XS%EF%BC%88%E4%BC%A0%E5%85%A5%E6%95%B0%E6%8D%AE%E5%8C%85%EF%BC%89.png)
我想将 Linux 服务器的 2x10Gb/s 绑定到接收/入站虚拟接口上由唯一客户端发送的速率超过 10Gb/s。客户端可能发送的速率超过 10Gb/s(也可能绑定)。
Bond 模式循环在这种情况下(高利率)似乎是唯一的解决方案或至少是最佳候选者。我不需要故障转移。
尽管如此,我的 SWITCH PROSAFE XS716T 仅提供给我静态选择作为LAG 类型。我不明白 SWITCH将决定传入的数据包应该被处理采用循环方式,在服务器的所有从属接口之间平衡发送。
谢谢
答案1
Linux LAG 组可以使用各种负载分配方案,而交换机通常只提供一种方案。这通常是源地址/目的地址 SA/DA- 根据交换机功能,通过对 MAC 地址、IP 地址或 IP 和 TCP/UDP 端口组合的源/目标组合进行哈希选择出口端口。
因此,MAC SA/DA 只会在 LAG 接口之间分配来自不同终端节点的流量。IP SA/DA 稍好一些,因为您可以使用多个 IP 地址来帮助分配。IP/端口 SA/DA 是最好的,因为它会尝试单独分配每个套接字的流量。
在 Linux 方面,您通常对出站流量有更多的控制权,但如果瓶颈是入口方向,那么交换机就会决定您的选择。
没有分配方案会通过不同的接口发送属于单个流的帧。这可以防止流中的无序接收,这通常会严重影响性能。因此,基本上,您需要首先拥有多个流/套接字连接。通常,没有 LAG 方案会为您提供真正的聚合带宽。
为了您的目的,我发现避免 LAG 中继并使用具有不同连接的基于 IP/MAC 的分布可以产生更可预测的结果。
使用虚拟 MAC 终端节点,您可以根据工作负载将这些 MAC 分配给物理 NIC。带宽需求较大的节点只需获得多个 vNIC。负载平衡可以通过简单的循环 DNS(解析为旋转 IP 的 A 记录)或由 DNS 或应用程序级别控制的更复杂的方案来实现。
您还可以使用虚拟 IP 地址,并通过对 ARP 的严格控制将它们映射到物理或虚拟接口 MAC 地址。这很容易中断延长的会话,因此它更适合小内容交付等。