Kingsfordweg 151, 1043GR Amsterdam, The Netherlands ● 24/7 support — support@novogara.com
Knowledge base

Bonding, LACP and multiple ports

Bonding joins several physical links into one logical interface. It is excellent for redundancy and frequently disappointing for speed, and it helps to know which you are buying.

What bonding gives you

  • Redundancy. A cable, a port or an optic fails and traffic continues on the remaining link. This part always works and is usually the real reason to bond.
  • Aggregate throughput — but only across many flows. This is the part that disappoints people.

Why one transfer does not get faster

To keep packets in order, a bond hashes each flow — usually source and destination address, often with ports — and pins that flow to one link. A single TCP connection therefore lives entirely on one physical port. Two 10 Gbit links give you 20 Gbit of capacity and a 10 Gbit ceiling per connection.

If you need a single stream faster than 10 Gbit, you need a faster port, not more of them. We offer 25 and 100 Gbit for exactly this reason.

LACP

802.3ad, the standard way to negotiate a bundle with the switch. Both sides agree on which links are in the bundle and notice when one stops working. It needs configuration on the switch as well as on your server, so it has to be agreed with us first — an LACP bond against a switch that is not expecting one results in a link that flaps or a loop, neither of which is a good day.

Tell support which machine, which ports and what you want before you configure anything.

Modes worth knowing

active-backup (mode 1)
One link carries everything, the other waits. No switch configuration needed, pure redundancy, no aggregate gain. The safe default when in doubt.
802.3ad (mode 4)
LACP. Redundancy plus aggregate throughput across flows. Needs the switch side configured.
balance-alb (mode 6)
Balances without switch support by playing games with ARP. Works, but it is a trick; prefer LACP where the switch can do it properly.

With LACP, set the hash policy to layer3+4 so ports are included in the hash. With the default layer2, all traffic between two hosts lands on one link no matter how many connections there are.

Configuring it

On Debian and Ubuntu with netplan, the relevant part looks like this:

bonds: { bond0: { interfaces: [enp1s0f0, enp1s0f1], parameters: { mode: 802.3ad, lacp-rate: fast, transmit-hash-policy: layer3+4 } } }

On RHEL-based systems, use nmcli to create a bond connection and add both interfaces as slaves. Either way, check it afterwards:

cat /proc/net/bonding/bond0

That file tells you which links are up, which is active, and whether LACP has actually negotiated — look for both ports reporting an aggregator ID in common. If they have different aggregator IDs, the switch side is not configured and you are running on one link.

Test the failure, not just the bond

A bond that has never been tested is a theory. Ask us to shut one port while you watch a running transfer. Several seconds of loss is normal; a dead connection is not, and better discovered in a test than at three in the morning.


Still stuck? Mail support@novogara.com — an engineer answers, at any hour. Back to the knowledge base