Bonded or teamed interfaces will not come up, or run at one link's speed
The bond exists on the server but the switch does not agree, so either it does not come up or only one link carries traffic.
What you see
bond0 shows one active slave, or the interface has an address and no connectivity. Throughput matches a single link no matter how many are in the bond.
What is actually wrong
LACP configured on one end only, a mismatched hash policy, or the expectation that a bond multiplies the speed of a single connection — which it does not.
Codes and articles
Fixes (2)
Get both ends agreeing
The bond is down or only one link is active.
Read the bond's own status file, which states exactly what the switch is or is not saying.
cat /proc/net/bonding/bond0The partner MAC and partner key fields are the answer. All zeros means the switch is not speaking LACP on those ports at all, which is a switch configuration job, not a Linux one.
Check the mode. Mode 4 (802.3ad) requires the switch to be configured with a matching port-channel; modes 1 (active-backup) and 6 (balance-alb) do not.
If the switch cannot be configured, use active-backup, which needs nothing from the switch and gives redundancy without extra throughput.
sudo nmcli connection add type bond con-name bond0 ifname bond0 bond.options 'mode=active-backup,miimon=100'For LACP, configure the switch ports into a channel group first, then bring the bond up — bringing up an unconfigured bond against a switch can create a loop.
Add the slaves.
sudo nmcli connection add type ethernet slave-type bond con-name bond0-p1 ifname enp1s0 master bond0sudo nmcli connection add type ethernet slave-type bond con-name bond0-p2 ifname enp2s0 master bond0sudo nmcli connection up bond0
cat /proc/net/bonding/bond0 | grep -E 'Slave Interface|MII Status|Partner Mac'Set the hash policy, and correct the expectation
The bond is up and throughput is unchanged.
Understand the limit first: a single TCP connection always uses one physical link. A two-link bond does not make one file copy twice as fast — it lets two copies run at full speed at the same time.
This is the expectation that causes most bonding complaints, and no configuration change will alter it. Aggregation distributes flows, it does not split them.
Check the current hash policy.
cat /proc/net/bonding/bond0 | grep -i 'hash policy'Set layer3+4 hashing, which distributes by port as well as address and spreads multiple connections between the same two machines.
sudo nmcli connection modify bond0 bond.options 'mode=802.3ad,miimon=100,lacp_rate=fast,xmit_hash_policy=layer3+4'sudo nmcli connection up bond0
Set the matching hash on the switch. A mismatch is legal and simply distributes badly in one direction.
Test with several parallel streams rather than one.
iperf3 -c 10.0.0.20 -P 8 -t 30
cat /proc/net/bonding/bond0 | grep -A3 'Slave Interface'Related faults
Where this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.