Network bonding (also called link aggregation or NIC teaming) combines two or more network interfaces into one logical interface. Done right, a cable, port or switch failure doesn’t take the server offline, and some modes also increase total throughput.
Where bonding applies: bonding needs multiple physical network ports, so it’s a dedicated server or on-premises technique. A VPS normally has a single virtual NIC; redundancy is handled by the host’s network.
Bonding modes
| Mode | Name | Needs switch config | What it does |
|---|---|---|---|
| 0 | balance-rr |
Usually | Round-robin packets across links — can reorder packets |
| 1 | active-backup |
No | One link active, the other takes over on failure |
| 2 | balance-xor |
Yes (static) | Hash-based distribution |
| 3 | broadcast |
— | Sends everything on all links (rare) |
| 4 | 802.3ad (LACP) |
Yes, LACP | Standard link aggregation; redundancy + combined throughput |
| 5 | balance-tlb |
No | Adaptive transmit load balancing |
| 6 | balance-alb |
No | Adaptive transmit and receive load balancing |
The two you’ll use most:
- active-backup (mode 1): simplest and works with any switch — pure redundancy.
- 802.3ad / LACP (mode 4): redundancy plus aggregate bandwidth across many connections; the switch ports must be configured as an LACP group.
A single TCP connection never exceeds the speed of one link in LACP; the gain comes from many parallel connections.
Before you start
- Use the server’s out-of-band console (IPMI/iDRAC/iLO, or your provider’s KVM) — a mistake can drop all network access.
- Find interface names:
ip -br link(e.g.eno1,eno2). - For LACP, ask your provider or network team to configure the switch ports.
Ubuntu: Netplan
/etc/netplan/01-bond.yaml:
network:
version: 2
ethernets:
eno1: {}
eno2: {}
bonds:
bond0:
interfaces: [eno1, eno2]
addresses: [203.0.113.20/24]
routes:
- to: default
via: 203.0.113.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
parameters:
mode: active-backup # or 802.3ad
primary: eno1
mii-monitor-interval: 100
# for 802.3ad:
# lacp-rate: fast
# transmit-hash-policy: layer3+4
netplan try # applies with automatic rollback if you lose access
netplan apply
Debian: ifupdown
apt install -y ifenslave
/etc/network/interfaces:
auto bond0
iface bond0 inet static
address 203.0.113.20/24
gateway 203.0.113.1
bond-slaves eno1 eno2
bond-mode active-backup
bond-primary eno1
bond-miimon 100
Remove any separate iface eno1/eno2 stanzas, then systemctl restart networking (from the console).
AlmaLinux / Rocky: NetworkManager
nmcli con add type bond con-name bond0 ifname bond0 \
bond.options "mode=active-backup,miimon=100,primary=eno1" \
ipv4.method manual ipv4.addresses 203.0.113.20/24 ipv4.gateway 203.0.113.1 ipv4.dns "1.1.1.1"
nmcli con add type ethernet con-name bond0-eno1 ifname eno1 master bond0
nmcli con add type ethernet con-name bond0-eno2 ifname eno2 master bond0
nmcli con up bond0
Check the bond
cat /proc/net/bonding/bond0
Look for the bonding mode, MII Status: up for each slave, and (for active-backup) the Currently Active Slave. For LACP, check that both slaves share the same aggregator ID.
Test failover
From another machine, run a continuous ping to the server. Then on the console:
ip link set eno1 down
cat /proc/net/bonding/bond0 # active slave should switch to eno2
ip link set eno1 up
The ping should lose at most a packet or two.
Troubleshooting
- LACP bond up but no traffic — switch ports not in an LACP group, or mismatched LACP rate.
- Only one link used — expected for a single flow; use
layer3+4hashing for more spread. - Duplicate packets or MAC flapping alerts — mode 0 or 2 without matching switch config; use active-backup or LACP.
If you need bonding on one of our dedicated servers, contact the sales team before ordering to check whether a second uplink is available for your configuration. For network basics, see Debian network configuration.