Skip to main content
RunBook Academy

CephXXIX · Network DesignNetwork Design

LACP in detail: modes, rate, and hashing

Advanced⏱ ~16 minipethtool

What you'll learn

  • Distinguish active and passive LACP modes
  • Choose an LACP rate and explain the trade-off
  • Select a hash policy for Ceph traffic
  • Verify LACP state from host and switch

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

LACP that is misconfigured on one end frequently appears to work — the links come up, traffic flows, and the failure only shows during a member failure or under uneven load. Verifying the three settings from both ends takes a few minutes and prevents a category of intermittent problem that is genuinely hard to diagnose later.

Active versus passive

Active — the end sends LACPDUs proactively and initiates negotiation. Passive — responds to LACPDUs but does not initiate.

Two passive ends never form an aggregation. The safe configuration is active on both ends; passive is only appropriate when one side is known to be active and there is a reason to avoid initiating.

LACP rate

RateLACPDU intervalFailure detection
slow (default)30 sup to 90 s
fast1 sabout 3 s

Ninety seconds is far longer than Ceph’s OSD-down detection, so a member failure on slow rate can cause OSDs to be marked down before the bond notices. Use fast on Ceph hosts, and set it on the switch too — the rate is negotiated and both ends should agree.

Hash policy

PolicyHashes onCeph suitability
layer2MAC addressespoor — pins host pairs to one member
layer2+3MAC + IPpoor within a subnet
layer3+4IP + portgood — spreads per-connection

Ceph OSDs open many connections to each peer, so layer3+4 distributes them well. Within a single subnet — the usual Ceph case — layer2 and layer2+3 produce the same poor result, because both ends have fixed MACs and IPs and only the ports vary.

cat /proc/net/bonding/bond0 | grep -E 'Transmit Hash|LACP rate|Aggregator'

Verifying from both ends

Host side:

cat /proc/net/bonding/bond0
# Bonding Mode: IEEE 802.3ad Dynamic link aggregation
# Transmit Hash Policy: layer3+4 (1)
# LACP rate: fast
# Aggregator ID: 1        ← both members must share this

Both members sharing an Aggregator ID is the key check. Different aggregator IDs mean the bond has split — each member formed its own aggregation, usually because the switch ports are not in the same port-channel.

Switch side: confirm the port-channel contains both ports, is in active mode, and uses a compatible hash. The exact commands vary by vendor.

Quiz

Knowledge check · 4 questions

  1. Q1. `/proc/net/bonding/bond0` shows the two members with different Aggregator IDs. What does this mean?

  2. Q2. LACP rate slow can allow OSDs to be marked down before the bond detects a member failure.

  3. Q3. Verify LACP after a switch replacement.

    Following a top-of-rack switch replacement, Ceph hosts in that rack are reachable and OSDs are up, but recovery throughput between racks is about half what it was before. No errors appear in host or Ceph logs.

  4. Q4. Why do layer2 and layer2+3 hash policies perform equally poorly for Ceph within a single subnet?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Add the Aggregator ID check, LACP rate, and hash policy to the post-change verification for any switch or host network work — all three survive as text in one file and take seconds to read. Where the switch configuration is managed separately, agree the expected values with the network team and record them so both sides can verify against the same reference.

Cross-course references

  • Kubernetes: a misconfigured node NIC bond degrades every pod on the node identically
  • Linux: LACP verification is standard host networking, and the Ceph stakes make it worth automating