有没有办法从同一个 IP/MAC 获取多个 TCP 连接以使用 LACP 配置中的所有物理链路?
这是我的设置:
中央交换机 (Meraki MS42P) 有一条 10GbE 链路连接到一台服务器,还有一条 10GbE 链路连接到大楼另一侧的接入交换机 (Cisco 2960-CX)。第二台服务器在接入交换机上使用 LACP 配置中的 4 x 1GbE。
如果我从网络中任意位置的多个 1GbE 客户端分别打开一个连接,则我可以使 4 x 1GbE 聚合链路饱和(即最多 4 个客户端同时获得完整的 1Gb)。但是,如果我从第一台服务器(具有到交换机的单个 10GbE 链路)到第二台服务器同时打开 4 个 TCP 连接,它们始终共享单个 1GbE 链路。
答案1
这取决于负载平衡算法,该算法决定哪些连接应始终在同一线路上。
在这方面我对 Meraki 不太熟悉,但对于思科来说,默认设置是source-dest-mac
来自相同源 MAC 地址和目标 MAC 地址的连接将通过同一线路进行。
您会喜欢这样的情况source-dest-port
:来自不同端口或到不同端口的每个连接都会通过 LAGG 组的另一条线路。
答案2
将 LACP 替换为 Roundrobin 绑定模式 ( mode=0
)。将 Cisco 端口通道模式更改为on
。首先从此端口通道组中删除所有接口。
为什么我建议你使用 RR(循环)?当交换机之间的距离很长或连接可能损坏时,LACP 经常应用于交换机之间。Linux 可以为 LACP 使用 level3+level4 负载平衡算法,但没有交换机或路由器可以做到这一点。Level4 意味着源和目标 IP 端口将用于计算传输哈希。如果您直接在两台服务器之间使用 LACP,那么每个 IP 连接将提供 1Gbit/s。使用 RR,您将获得 4Gbit/s 的全速连接。但如果四个链接中的一个损坏,您将获得 25℅ 的数据包丢失。当服务器和交换机在一个房间时,这种情况有多频繁?在我 15 年的实践中没有出现过这种情况。