我有两个通过 TAP 接口连接的交换机。每个虚拟交换机端口都连接到一个单独的 TAP 端口,并且 TAP 端口通过桥接器连接。
SW1-port1 = TAP 11 <== BR121 ==> TAP 21 = SW2-port1
SW1-port2 = TAP 12 <== BR122 ==> TAP 22 = SW2=port2
如果我将交换机端口配置为正常第 3 层,它们可以互相 ping 通,这意味着上述设置正在运行,但是 LACP 数据包被丢弃,并且我无法在两者之间建立端口通道(出于教育目的)。
如果我“tcpdump”TAP 接口,我可以看到本地连接的交换机生成的 LACP 数据包,但不知何故 LACP 数据包无法到达另一端(另一个 TAP I/F)。
可能是 Bridge 吸收了 LACP 数据包?有办法防止这种情况发生吗?
谢谢,弗朗西斯科
答案1
是的,LACP 使用组地址 01:80:C2:00:00:02,该地址属于“不中继”范围:任何符合 802.1D 标准的网桥不得转发这些框架。
虽然 Linux 桥允许配置例外情况(通过群组转发掩码),此功能适用于 LLDP 或 802.1X 等更高级别的协议,并明确拒绝为 STP/LACP 地址添加旁路。
(我认为这很有道理,因为这些协议是专门用于二位于直接链路两端的对等体,否则会以各种方式发生故障。
桥梁分类为双端口 MAC 中继例外情况是:由于它们恰好连接两个接口,因此它们对 LACP 而言是透明的。但是,据我所知,没有本机方法可以告诉 Linux 网桥充当一个网桥。
它可以可以使用用户空间程序在两个接口之间移动帧,例如socat
。
或者,你可以在每个 vswitch 之间运行 LACP和 Linux 主机(使用绑定或组合驱动程序),然后将桥接器在上面两个 LAG(结合接口)。