Configuring EtherChannel with LACP on Cisco Catalyst Switches

J
EtherChannel LACP uplink between Cisco switches using multiple Ethernet cables

LACP bundles multiple physical links into one logical pipe—doubling or quadrupling bandwidth while keeping STP happy and providing automatic failover.

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-channel interface.
  • 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 is active.
  • 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-ip to distribute traffic across flows.
  • Access Layer: src-mac is 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 active mode on both sides or active on one side and passive on the other; never passive on 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 summary and show lacp neighbor to confirm bundle health and negotiation state.


Great! Next, complete checkout for full access to Ping Labz
Welcome back! You've successfully signed in
You've successfully subscribed to Ping Labz
Success! Your account is fully activated, you now have access to all content
Success! Your billing info has been updated
Your billing was not updated
© 2025 Ping Labz. All rights reserved.