LACP bundles multiple physical links into one logical pipe—doubling or quadrupling bandwidth while keeping STP happy and providing automatic failover.
Why Link Aggregation Matters
A 10 Gbps uplink between DIST-SW1 and CORE-SW1 runs at capacity. Add another 10 Gbps port—you've just doubled bandwidth and eliminated a single point of failure. But the switch won't automatically load-balance across both ports. EtherChannel bundles them into a single logical link that Spanning Tree sees as one interface, meaning no blocked ports and full utilization of both paths.
LACP (Link Aggregation Control Protocol, IEEE 802.3ad) negotiates the bundle dynamically, ensuring both sides agree before traffic flows. It's the industry standard and far superior to Cisco's legacy PAgP protocol.
LACP Fundamentals
- EtherChannel: A logical aggregation of physical links, presented to the OS as a single
port-channelinterface. - LACP: The protocol (802.3ad) that dynamically negotiates bundle membership.
- LACP Modes:
active: Initiates LACP negotiation. The port actively sends LACP PDUs.passive: Responds to LACP negotiation but doesn't initiate. Use only if the far end isactive.on: Static bundling (no protocol). Both sides must have identical port lists.
Best practice: Use active on both sides or active on one side and passive on the other.
Configuration: Po1 Between DIST-SW1 and CORE-SW1
We'll bundle ports Gi1/0/1 and Gi1/0/2 between DIST-SW1 (10.0.0.2) and CORE-SW1 (10.0.0.1). Both switches run Catalyst 9000 series.
DIST-SW1 Configuration
DIST-SW1# configure terminal
DIST-SW1(config)# interface range GigabitEthernet1/0/1 - 2
DIST-SW1(config-if-range)# no shutdown
DIST-SW1(config-if-range)# speed 10000
DIST-SW1(config-if-range)# duplex full
DIST-SW1(config-if-range)# channel-group 1 mode active
DIST-SW1(config-if-range)# exit
The channel-group 1 mode active command assigns both ports to channel group 1 using LACP active mode. The switch automatically creates Port-Channel 1.
Configure the Port-Channel Interface
DIST-SW1(config)# interface Port-Channel 1
DIST-SW1(config-if)# description Link to CORE-SW1
DIST-SW1(config-if)# mtu 1500
DIST-SW1(config-if)# no shutdown
DIST-SW1(config-if)# end
The Port-Channel interface is where you apply higher-level config (trunk mode, VLAN membership, etc.).
CORE-SW1 Configuration (Mirror of DIST-SW1)
CORE-SW1# configure terminal
CORE-SW1(config)# interface range GigabitEthernet1/0/1 - 2
CORE-SW1(config-if-range)# no shutdown
CORE-SW1(config-if-range)# speed 10000
CORE-SW1(config-if-range)# duplex full
CORE-SW1(config-if-range)# channel-group 1 mode active
CORE-SW1(config-if-range)# exit
CORE-SW1(config)# interface Port-Channel 1
CORE-SW1(config-if)# description Link to DIST-SW1
CORE-SW1(config-if)# mtu 1500
CORE-SW1(config-if)# no shutdown
CORE-SW1(config-if)# end
Make Po1 a Trunk (if carrying multiple VLANs)
If Po1 carries VLANs 10, 20, 30, 40, 99, 100:
DIST-SW1(config)# interface Port-Channel 1
DIST-SW1(config-if)# switchport trunk encapsulation dot1q
DIST-SW1(config-if)# switchport mode trunk
DIST-SW1(config-if)# switchport trunk allowed vlan 10,20,30,40,99,100
DIST-SW1(config-if)# switchport trunk native vlan 99
DIST-SW1(config-if)# end
Repeat on CORE-SW1.
Load-Balancing Configuration
By default, EtherChannel uses source MAC address hashing. For better distribution, especially in core-to-core links, use source and destination MAC:
DIST-SW1# configure terminal
DIST-SW1(config)# port-channel load-balance src-dst-mac
DIST-SW1(config)# end
Other options: - src-mac: Source MAC only. - dst-mac: Destination MAC only. - src-ip: Source IP address. - dst-ip: Destination IP address. - src-dst-ip: Source and destination IP (best for most environments). - src-port: TCP/UDP source port. - dst-port: TCP/UDP destination port.
For data center and campus uplinks, src-dst-ip often provides the best balance.
Verification Commands
Show EtherChannel Summary
DIST-SW1# show etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone p - bundled in port-channel (inactive)
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use f - failed to allocate aggregator
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi1/0/1(P) Gi1/0/2(P)
Both ports show (P) indicating they are bundled. Po1(SU) means the port-channel is in use.
Show EtherChannel Port-Channel Detail
DIST-SW1# show etherchannel port-channel
Channel-group listing:
------------------------
Channel-group 1
Protocol: LACP
Partner: CORE-SW1
Aging-Time: 30 sec
Max-ports: 8
Min-thresh: 0
Ports in the group:
-------------------
Port: Gi1/0/1
----------
Age of the port in the current state: 45 seconds
Port: Gi1/0/2
----------
Age of the port in the current state: 42 seconds
Time since last bundle was loaded: 48 seconds
Last bundle was loaded by: Gi1/0/1
Time since last unbundle occurred: Never
Protocol Expiration Time: 30 seconds
Ports requiring a module number update from negotiation:
none
Both ports are active members. The "last bundle loaded" confirms LACP negotiation succeeded.
Show LACP Neighbor
DIST-SW1# show lacp neighbor
Flags: S - Device is requesting Slow LACPDUs
F - Device is requesting Fast LACPDUs
A - Device is in Active mode P - Device is in Passive mode
Channel group 1 neighbors
LACP neighbors: 1
Telnet Address IPv4: 10.0.0.1
Partner ID : 1111.1111.1111
Port Number : 1
Partner Port : 1
Port State : 32
Port Priority : 32768
Partner Port Priority: 32768
Aging Time : 30
Telnet Address IPv4: 10.0.0.1
Partner ID : 1111.1111.1111
Port Number : 2
Partner Port : 2
Port State : 32
Port Priority : 32768
Partner Port Priority: 32768
Aging Time : 30
This confirms CORE-SW1 (partner ID 1111.1111.1111) is the other end of the bundle. Port numbers match correctly.
Verify Trunk VLAN Carriage on Port-Channel
DIST-SW1# show interfaces Port-Channel 1 trunk
Port Mode Encapsulation Status Native vlan
Po1 on 802.1q trunking 99
Port Vlans allowed on trunk
Po1 10,20,30,40,99,100
Port Vlans allowed and active in management domain
Po1 10,20,30,40,99,100
Port Vlans in spanning tree forwarding state and not pruned
Po1 10,20,30,40,99,100
All VLANs are active and not pruned on the trunk.
Show Interface Status on the Port-Channel
DIST-SW1# show interfaces Port-Channel 1
Port-channel 1 is up, line protocol is up (connected)
Hardware is EtherChannel, address is 1111.1111.1111 (bia 1111.1111.1111)
Description: Link to CORE-SW1
MTU 1500 bytes, BW 20000000 Kbit/sec
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 10 Gb/s
Note the bandwidth is reported as 20 Gbps (10 Gbps × 2 links). The line protocol is "up."
Troubleshooting EtherChannel Bundle Formation
Symptom: Channel-Group Formed But Ports Show "p" (Suspended)
Example:
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SD) LACP Gi1/0/1(p) Gi1/0/2(p)
Causes: Speed mismatch, duplex mismatch, or VLAN membership conflict.
Diagnosis:
DIST-SW1# show interfaces GigabitEthernet1/0/1 | include speed|duplex
MTU 1500 bytes, BW 10000000 Kbit/sec
Full-duplex, 10 Gb/s
DIST-SW1# show interfaces GigabitEthernet1/0/2 | include speed|duplex
MTU 1500 bytes, BW 1000000 Kbit/sec
Half-duplex, 100 Mb/s
Here, Gi1/0/2 negotiated 100 Mbps half-duplex. Fix:
DIST-SW1(config)# interface GigabitEthernet1/0/2
DIST-SW1(config-if)# no shutdown
DIST-SW1(config-if)# speed 10000
DIST-SW1(config-if)# duplex full
DIST-SW1(config-if)# end
Symptom: Ports Assigned to Channel-Group But Not Bundling
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SD) LACP Gi1/0/1(D) Gi1/0/2(D)
Causes: LACP negotiation failing, typically due to: - One side is passive and the other side is also passive (no LACP negotiation). - Cable disconnect or link down. - LACP timeout (check show lacp neighbor for "Aging Time").
Diagnosis:
DIST-SW1# show lacp neighbor
! If no neighbors appear, LACP PDUs are not reaching the far end.
! Check physical link: show interfaces GigabitEthernet1/0/1
Fix: Ensure at least one side uses mode active:
DIST-SW1(config)# interface range GigabitEthernet1/0/1 - 2
DIST-SW1(config-if-range)# channel-group 1 mode active
DIST-SW1(config-if-range)# end
Symptom: Port-Channel Created But Incomplete Traffic Flow
Cause: Not all ports bundled into the channel-group. Only some ports carry traffic.
Diagnosis:
DIST-SW1# show etherchannel summary
! Shows only Gi1/0/1(P) bundled, Gi1/0/2 missing or showing (D).
Fix: Ensure all intended ports are configured with the same channel-group number:
DIST-SW1(config)# interface range GigabitEthernet1/0/1 - 4
DIST-SW1(config-if-range)# channel-group 1 mode active
Symptom: LACP Timeout After Failover
When one port fails, the other quickly takes over, but LACP reports aging issues.
Diagnosis:
DIST-SW1# show lacp neighbor
! "Aging Time" decrements. If it reaches 0, the neighbor is aged out.
Fix: Ensure both ports are up on both switches. If a port goes down, manually shut it down and bring it back up:
DIST-SW1(config)# interface GigabitEthernet1/0/1
DIST-SW1(config-if)# shutdown
DIST-SW1(config-if)# no shutdown
Comparison: LACP vs PAgP
| Feature | LACP (802.3ad) | PAgP (Cisco) |
|---|---|---|
| Standard | IEEE 802.3ad | Proprietary (Cisco) |
| Interop | Vendor-independent | Cisco only |
| Modes | active, passive, on | desirable, auto, on |
| Performance | Identical | Identical |
| Recommended | Yes | Legacy; avoid new configs |
LACP is the clear winner for any multi-vendor environment. Use PAgP only on old Catalyst 6500 or 4500 running ancient IOS.
Load-Balancing Best Practices
- Data Center / Campus Core: Use
src-dst-ipto distribute traffic across flows. - Access Layer:
src-macis usually sufficient; most flows originate from different end-users. - Monitor with
show etherchannel load-balance:
DIST-SW1# show etherchannel load-balance
EtherChannel Load-Balancing Configuration:
src-dst-ip
EtherChannel Load-Balancing Addresses used for Forwarding:
Reachable Tunnel Peer: 10.0.0.1
Key Takeaways
- LACP dynamically bundles multiple links without operator intervention if either side initiates negotiation.
- Use
activemode on both sides oractiveon one side andpassiveon the other; neverpassiveon both. - All bundled ports must have identical speed and duplex; mismatches immediately suspend the port.
- Port-Channel interface is where you configure trunk mode and VLANs; member ports inherit switchport behavior.
- Verify with
show etherchannel summaryandshow lacp neighborto confirm bundle health and negotiation state.