Skip to content
[menu][close]

FOUNDRYNETNo. 001SEPTEMBER 2026SWITCHING

Original page: foundrynet.com/services/documentation/sribcg/Trunking.html (ServerIron basic configuration guide, Trunking chapter, around 2002)

Link Aggregation and LACP: Bundling Ethernet Links

Link aggregation combines several physical Ethernet links into one logical link for more capacity and for survival when a member fails. LACP negotiates the bundle; hashing decides which member each flow uses.

On this page

01 Why bundle links

Two problems push engineers to aggregation. The first is capacity: when a single 1 Gbit/s uplink saturates and 10 Gbit/s ports are unavailable or unaffordable, four parallel 1 Gbit/s links are the next step. The second is redundancy: a bundle with one failed member keeps forwarding at reduced capacity with no topology change, where a lone link would drop everything.

Parallel links between two switches would normally form a loop, and spanning tree would block all but one. Aggregation presents the members as one logical port, so spanning tree sees one link and every member stays active. The logical port carries VLAN tags, so a bundle is usually also a trunk in the 802.1Q sense.

02 Static bundles versus LACP

A static bundle is configured identically on both ends and starts forwarding immediately. Nothing checks that the far end agrees. If one cable is patched to the wrong port, or the far switch loses its configuration, frames are hashed onto a member that leads nowhere and a fraction of traffic silently disappears.

LACP (Link Aggregation Control Protocol) fixes that by exchanging LACPDUs on every member. A port joins the bundle only after both ends confirm the same partner system and key. If a member stops receiving LACPDUs it is removed after three missed intervals: 90 seconds at the slow rate, 3 seconds at the fast rate. An active port sends LACPDUs unprompted; a passive port only answers. At least one side must be active.

Prefer LACP whenever both ends support it.
PropertyStaticLACP
ConfigurationBoth ends manually, must matchBoth ends, then negotiated
MisconfigurationSilent loss of a fraction of trafficMember left out of the bundle
One-way faultUndetected without extra protocolsDetected by missing LACPDUs
InteroperabilityWorks with anythingRequires LACP on both ends
Typical useServers with simple NIC teaming, legacy gearSwitch to switch, switch to hypervisor

03 Hashing: why one flow cannot use two links

The bundle does not stripe packets across members. Reordering would wreck TCP performance, so every implementation hashes fields from each frame (source and destination MAC, IP addresses, sometimes Layer 4 ports) to pick a member. All packets of one flow share a hash and therefore a member. A single large file transfer between two hosts runs at the speed of one link no matter how many links are bundled. Aggregate throughput rises only with many concurrent flows.

Four 1 Gbit/s members: usable capacity by flow countFOUR 1 GBIT/S MEMBERS: USABLE CAPACITY BY FLOW COUNT1 flow1 Gbit/s4 flows2.6 Gbit/s32 flows3.7 Gbit/s512 flows4 Gbit/sFour 1 Gbit/s members: usable capacity by flow countFOUR 1 GBIT/S MEMBERS: USABLE CAPACITYBY FLOW COUNT1 flow1 Gbit/s4 flows2.6 Gbit/s32 flows3.7 Gbit/s512 flows4 Gbit/s
Illustrative. Few flows leave members idle; balance approaches the member count only with many flows.
RULE OF THUMB

Include Layer 3 and Layer 4 fields in the hash when the platform allows. Hashing on MAC alone puts all traffic through one router onto one member, because every frame carries the same router MAC.

04 LACP parameters and a worked bundle

LACP identifies each end by a system ID (a 16-bit system priority followed by the switch MAC) and each member by a port priority, a port number and an aggregation key. LACPDUs go to the slow-protocols address 01-80-C2-00-00-02 with EtherType 0x8809, which no bridge forwards, so a switch in the middle of a link silently breaks aggregation across it.

Values from IEEE 802.1AX. Give the lower system priority to the switch that should choose the active set.
ParameterDefaultWhat it does
System priority32768Lower wins; that system chooses the active members
Periodic rateSlow, every 30 sFast rate sends every 1 s
TimeoutThree missed LACPDUs90 s slow, 3 s fast, then the member leaves

Consider four 10 Gbit/s links from a distribution switch to a core with LACP active and fast rate. Aggregate capacity is 40 Gbit/s; one flow still caps at 10. If two members fail the bundle carries 20 Gbit/s and stays up, unless a minimum-links threshold of 3 is set, in which case the bundle goes down on purpose and routing moves traffic to the other distribution switch. A half bundle quietly congesting is harder to see than a failed one.

Generic shapes: a switch bundle and a Linux 802.3ad bond
switch# interface port-channel 1
switch# lacp mode active
switch# lacp rate fast
switch# port-channel min-links 3
$ ip link add bond0 type bond mode 802.3ad lacp_rate fast xmit_hash_policy layer3+4 min_links 3
$ cat /proc/net/bonding/bond0

05 Member port requirements

  • Same speed and duplex on every member; a mixed 100 Mbit/s and 1 Gbit/s bundle is rejected or hashes traffic onto the slow link.
  • Same VLAN membership, tagging and QoS settings; most platforms copy configuration from a designated primary port.
  • Physically between the same two devices, unless the far end is a chassis, a stack or an MLAG pair that presents one system ID.
  • Member counts of 2, 4 or 8; some ASICs hash unevenly over 3 or 6 members.

06 MLAG, stacking and chassis

LACP requires one partner system on each end, so two independent switches cannot terminate one bundle unless they cooperate. Chassis systems solve this trivially: all line cards share one control plane. Stacking joins fixed switches into one logical switch over a stack link. MLAG (multi-chassis link aggregation) lets two separate switches present a shared LACP system ID over a peer link so a downstream device sees one partner. MLAG implementations are vendor specific and do not interoperate.

07 Foundry heritage: trunk groups and lag

IronWare called link aggregation trunking, a term that collides with the 802.1Q meaning of trunk and confused a generation of engineers moving between vendors. On BigIron, FastIron and ServerIron platforms the original command created a trunk group from consecutive ports, with the lowest-numbered port as the primary that carried the configuration. The Trunking chapter of the ServerIron basic configuration guide was among the most linked Foundry documents. Later releases replaced the syntax with lag configuration that supported LACP.

Illustrative IronWare shapes: legacy trunk group and later lag
! legacy trunk group (older IronWare)
trunk ethernet 1/1 to 1/2
trunk deploy
show trunk
!
! later lag syntax with LACP
lag "uplink-core" dynamic id 1
 ports ethernet 1/1 to 1/4
 primary-port 1/1
 deploy
show lag
show lag "uplink-core"

08 Verification

Confirm three things on both ends: every intended member is active in the bundle, LACP partner system IDs match, and traffic is spreading. Watch per-member counters under load; a member near zero indicates a hash that ignores the fields that vary in your traffic. sFlow or SNMP interface counters from the IF-MIB make the imbalance visible over time. Spanning tree treats a working bundle as one logical port, which is why the loop prevention and trunking pages in the switching reference apply to the bundle as a whole rather than to each member link.

  • Fallback to individual ports. A member that hears no LACPDUs may forward as an ordinary link; two such members form a loop that spanning tree then has to catch. Disable the fallback except on ports that boot servers by PXE.
  • Hash polarisation. The same hash at two tiers sends every flow that chose member 1 upstream onto member 1 downstream. Use different hash fields per tier.

Graph every member, not the logical interface; mirroring one member port shows which flows landed there. Apply VLAN tags on the logical interface to the logical interface only so members never drift apart. When sizing core uplink capacity, count the bundle at one member fewer than configured; that is what you will have during the failure you built it for.

10 Questions

Does link aggregation double bandwidth?

For aggregate traffic across many flows, approximately yes. For a single flow, no. Each flow is hashed to one member and runs at that member speed. A two-member 1 Gbit/s bundle gives one host-to-host transfer 1 Gbit/s, not 2.

Should I use static or LACP?

LACP whenever both ends support it. It detects miswiring and one-way faults and removes bad members automatically. Use static only for devices that cannot speak LACP, and then monitor the members closely.

What does trunking mean on Foundry switches?

On IronWare, trunk meant a link aggregation group, created with the trunk ethernet command. The 802.1Q concept other vendors call a trunk is a tagged port in Foundry terminology. Later IronWare releases adopted lag for aggregation.

Can members have different speeds?

No. Every member must run at the same speed and duplex. A mismatched port is excluded from the bundle by LACP or, on static bundles, causes uneven and unpredictable distribution.

Is LACP the same as EtherChannel?

EtherChannel is one vendor name for its aggregation feature, which can run static, with a proprietary negotiation protocol, or with LACP. LACP is the IEEE standard negotiation protocol and is what you use between different vendors.

What does min-links do on a bundle?

It sets how many members must be active before the logical interface reports up. Below that count the bundle goes down deliberately so routing fails over to another path, instead of a reduced bundle carrying full load and congesting. Pick the value from the capacity you actually need.