You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:10:28