[SOLVED] Can't get LACP 802.3ad bond working with Proxmox bridge

user51269

New Member
May 29, 2024
5
0
1
Hi,

Fixed: Need to have >1 interface in the LACP bond before it'll work with vmbr0. Yes I know a single interface defeats the purpose of LACP but the LACP bond works fine with a single interface UNTIL it is added to vmbr0 as a bridge port.

-----

Until today I had the standard Linux bridge vmbr0 with eth2 as the only bridge port - that worked fine.

I now have a use case where I need an LACP 802.3ad bond between my main PVE host and my switch so I configured an active 802.3ad LAG port on the switch and added one of the spare 10GbE ports to it. I then created a Linux bond called bond0 and added the only 802.3ad member port to the bond and set an IP on it (for testing). bond0 is in LACP bond mode. That works fine i.e. I can ping the bond's IP, so I assume that means LACP 802.3ad is working. (Does it?)

So then I removed the IPV4 address from bond0 and removed eth2 from vmbr0 and added bond0 as the only bridge port and restarted networking but I immediately lost my connection to the PVE host. I checked the /etc/network/interfaces configuration and can see bridge-ports is set to bond0 so the configuration did save, but it doesn't work. I reverted back to eth2 as the only bridge port and the host came back online.

I somewhat confirmed this "looks" right based on a comment from Dunuin here: https://forum.proxmox.com/threads/proxmox-bonding-used-bond-for-containers-vms.105485/

I then created a test bridge called vmbr1 and added bond0 to it. That saved OK and I still have a connection. BUT, VMs and LXCs can't get a DHCP IP so something's not right.

What am I doing wrong? The desired end case is a 20Gbps bond but I'm happy with 10Gbps until I confirm this all works.

I'm sure I'm doing something basic wrong but I can't figure out what it is. Thanks in advance for any help.

Here's my current /etc/network/interfaces:

(eth1 is connected to the physical switch port that is also the only LAG port member)

Code:
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT read its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!

auto lo
iface lo inet loopback

auto eth1
iface eth1 inet manual

iface eth2 inet manual

iface eth3 inet manual

iface eth0 inet manual

auto bond0
iface bond0 inet manual
    bond-slaves eth1
    bond-miimon 100
    bond-mode 802.3ad

auto vmbr0
iface vmbr0 inet static
    address 192.168.1.85/24
    gateway 192.168.1.1
    bridge-ports eth2
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

source /etc/network/interfaces.d/*

The only line that changed when I reconfigured vmbr0 to contain bond0 and not eth2 was this line:

Code:
    bridge-ports eth2

to this:

Code:
    bridge-ports bond0
 
Last edited:
try to remove "auto eth1"

Thanks - I was just about to update the post saying I've fixed it. I don't know if this is an LACP thing or a thing related to my switch but with a single interface in the LACP bond vmbr0 doesn't work. With >=2 interfaces in the LACP bond vmbr0 does work. This is strange to me since the LACP bond works fine on its own i.e. when I give the LACP bond an IP address. As soon as that single interface LACP bond gets added as a bridge port, it doesn't work.