Ubuntu 22.04与Open vSwitch间LACP异常:Ubuntu既不发送也不响应LACP PDU
Ubuntu 22.04与Open vSwitch间LACP异常:Ubuntu既不发送也不响应LACP PDU
我现在遇到一个棘手的LACP配置问题:环境是Ubuntu 22.04运行在KVM里,有6个模拟成e1000的virtio接口,这些接口连接到Open vSwitch,并且我已经在交换机和Ubuntu上都配置了LACP。
核心问题是:当我在bond0的任意成员接口上抓包时,能看到OVS发送的LACP PDU,但完全看不到Ubuntu的响应,而且Ubuntu自己也不会主动发送LACP PDU。
我的配置详情
Netplan配置文件 /etc/netplan/00-installer-config.yaml
bonds: bond0: addresses: [192.168.201.141/24] interfaces: - enp2s0 - enp3s0 - enp4s0 - enp5s0 - enp6s0 - enp7s0 parameters: mode: 802.3ad mii-monitor-interval: 100
ip link 输出
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:bd:d6:54 brd ff:ff:ff:ff:ff:ff 3: enp2s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 32:4c:6b:d8:b0:dc brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:aa:fb:bb 4: enp3s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 32:4c:6b:d8:b0:dc brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:0d:61:fc 5: enp4s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 32:4c:6b:d8:b0:dc brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:d4:cc:88 6: enp5s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 32:4c:6b:d8:b0:dc brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:79:8e:a0 7: enp6s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 32:4c:6b:d8:b0:dc brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:24:36:a7 8: enp7s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 32:4c:6b:d8:b0:dc brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:c7:90:3c 9: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 32:4c:6b:d8:b0:dc brd ff:ff:ff:ff:ff:ff
从输出能看到所有链路都是UP状态。
/proc/net/bonding/bond0 输出
Ethernet Channel Bonding Driver: v5.15.0-86-generic Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer2 (0) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 802.3ad info LACP active: on LACP rate: slow Min links: 0 Aggregator selection policy (ad_select): stable System priority: 65535 System MAC address: 32:4c:6b:d8:b0:dc Active Aggregator Info: Aggregator ID: 1 Number of ports: 1 Actor Key: 0 Partner Key: 1 Partner Mac Address: 00:00:00:00:00:00 Slave Interface: enp7s0 MII Status: up Speed: Unknown Duplex: Unknown Link Failure Count: 0 Permanent HW addr: 52:54:00:c7:90:3c Slave queue ID: 0 Aggregator ID: 1 Actor Churn State: none Partner Churn State: churned Actor Churned Count: 0 Partner Churned Count: 1 details actor lacp pdu: system priority: 65535 system mac address: 32:4c:6b:d8:b0:dc port key: 0 port priority: 255 port number: 1 port state: 77 details partner lacp pdu: system priority: 65535 system mac address: 00:00:00:00:00:00 oper key: 1 port priority: 255 port number: 1 port state: 1 <snip>
这里能看到Actor和Partner的PDU详情,但tcpdump就是看不到Ubuntu发送的PDU。另外速度和duplex显示未知,可能是因为底层是virtio接口,会不会这就是Ubuntu不发LACP PDU的原因?
KVM中的接口定义
<interface type='bridge'> <mac address='52:54:00:d4:cc:88'/> <source bridge='ovsbr-lacp0'/> <virtualport type='openvswitch'> <parameters interfaceid='0e117751-fd45-4840-9c30-41ea8f76bdce'/> </virtualport> <model type='e1000'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </interface>
tcpdump抓包结果(OVS和Ubuntu上都能看到)
注:fe:54:00:c7:90:3c是OVS中某个成员接口的MAC,a6:a0:01:43:3a:41是OVS中bond接口的MAC
tcpdump -evni enp7s0 tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 19:41:47.129221 fe:54:00:c7:90:3c > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110 Actor Information TLV (0x01), length 20 System a6:a0:01:43:3a:41, System Priority 65534, Key 15, Port 17, Port Priority 65535 State Flags [Activity, Aggregation, Collecting, Distributing, Default] Partner Information TLV (0x02), length 20 System 00:00:00:00:00:00, System Priority 0, Key 0, Port 0, Port Priority 0 State Flags [none] Collector Information TLV (0x03), length 16 Max Delay 0 Terminator TLV (0x00), length 0
Ubuntu好像既没读取这个包,也没发响应,甚至自己都不生成LACP PDU。
dmesg日志
[ 4722.457866] bond0: Warning: No 802.3ad response from the link partner for any adapters in the bond [ 4752.513642] bond0: Warning: No 802.3ad response from the link partner for any adapters in the bond
这就很奇怪了,明明tcpdump能看到OVS发的包啊。
已排查情况
- 我已经检查过OVS端的所有配置,确认没问题
- 找到过一个类似的问题,但解决方案不适用我的场景
- 之前在Ask Ubuntu上发过这个问题,但一直没得到回复,所以过来求助更多人
现在我已经把能想到的调试方法都试了,实在没头绪,希望能得到一些解决这个问题的思路,非常感谢!
备注:内容来源于stack exchange,提问作者Xuo Guoto
相关产品推荐
相关产品推荐

