绑定从属接口在 LACP 上没有获得相同的聚合器 ID

Bap*_*ias 6 networking high-availability lacp rhel6 rhel7

我在某些 LACP ( 802.3ad) 不工作的服务器上有一个错误。我在所有服务器上都有一个bond0带有两个eth从属设备的绑定设备,每个接口都插入不同的交换机,并且两个交换机都配置了 LACP。

似乎一切正常,但网络工程师检测到某些 MLAG(Arista LACP 实施)在物理设备启动时无法正常工作。

当我查看/proc/net/bonding/bond0受影响的服务器时,我发现每个界面都有不同的Aggregator ID. 在名义服务器上Aggregator ID是一样的。

该问题可以通过关闭和打开交换机上的端口来重现,然后我们可以观察到尽管物理链路已启动,MLAG 已关闭。该错误存在于 RHEL 6 和 7 上(但并非所有服务器都受到影响)。

配置

#/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
MACADDR=14:02:ec:44:e9:80
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer3+4"
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no

# /etc/sysconfig/network-scripts/ifcfg-eno49 (same for other interface)
HWADDR=14:02:ec:44:e9:80
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no
Run Code Online (Sandbox Code Playgroud)

我们现在有一个解决方法 -eth在服务器上设置和打开界面 - 但这并不理想。

要检查 LACP 协议,我做了

tcpdump -i eno49 -tt -vv -nnn ether host 01:80:c2:00:00:02
Run Code Online (Sandbox Code Playgroud)

我可以在一个接口上每 30 秒看到一个数据包,但在另一个接口上我每 1 秒看到一个数据包,因为它试图建立 LACP 会话。

你有办法解决和解决这个问题吗?

(对不起,如果我没有使用正确的网络术语,我对 LACP 不是很熟练)

谢谢

Bap*_*ias 3

在深入研究一些文档和一些测试后,我发现当服务器使用绑定时,您需要使用模块miimon中的参数强制监视网络链接bonding

在查看时,/proc/net/bonding/bond0我应该看到其中一个设备具有 MII 状态down,实际上它处于链路级别。

https://access.redhat.com/articles/172483#Link_Monitoring_Modes指出:

指定链路监控模式、miimonarp_interval和参数至关重要。arp_ip_target在没有链路监视模式的情况下配置绑定不是绑定驱动程序的有效使用

因此,要在文件中报告,ifcfg-bond0您可以在BONDING_OPTS选项中传递该信息

#/etc/sysconfig/network-scripts/ifcfg-bond0
...
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer2+2 miimon=100"
...
Run Code Online (Sandbox Code Playgroud)

所以它强制每 100 毫秒轮询一次链接。

重新启动网络服务以应用更改。