Troubleshooting EtherChannel
EtherChannel (also called Link Aggregation or port-channel) bundles
multiple physical links between two switches into a single logical
interface — multiplying bandwidth, providing redundancy, and appearing
as one link to Spanning Tree Protocol. When it works, the bundle is
invisible to higher-layer protocols. When it breaks, the symptoms
are almost always the same: the port-channel interface appears
down, individual member ports are
suspended, traffic drops to zero, or the bundle
forms but with fewer members than expected — silently reducing
bandwidth without any obvious error. Unlike a simple interface
failure, EtherChannel problems are caused by mismatches between
the two sides of the bundle, and the diagnosis requires
systematically comparing the configuration on both switches
simultaneously.
This lab covers every common EtherChannel failure mode: protocol
negotiation mismatches (LACP vs PAgP vs static), speed and duplex
inconsistency, VLAN and trunk configuration divergence, port-channel
interface parameter conflicts, and Spanning Tree interaction issues.
The primary diagnostic tools are
show etherchannel summary and
show etherchannel detail — learning to read their flag
codes and inconsistency reports is the fastest path to resolving any
EtherChannel problem.
Before starting this lab, ensure you are comfortable with trunk port
configuration at
Trunk Port Configuration,
VLAN management at
VLAN Creation &
Management, Spanning Tree at
Spanning Tree & Root
Bridge Configuration, and EtherChannel fundamentals at
EtherChannel LACP Configuration.
For VLAN tagging see
VLAN Tagging 802.1Q.
For related Layer 2 troubleshooting see
Troubleshooting
Layer 2 VLANs & Trunks.
1. EtherChannel Concepts & Requirements
EtherChannel Protocols
| Protocol |
Standard |
Modes |
Negotiation |
Notes |
| LACP |
IEEE 802.3ad / 802.1AX (open standard) |
active, passive |
At least one side must be active. Both passive = no bundle |
Preferred for multi-vendor environments. Supports up to 16 member ports (8 active + 8 standby). Sends PDUs every 1s (fast) or 30s (slow) |
| PAgP |
Cisco proprietary |
desirable, auto |
At least one side must be desirable. Both auto = no bundle |
Cisco-only. Supports up to 8 member ports. Adds PAgP TLVs for learning neighbour device ID and port name |
| Static (on) |
No protocol — forced |
on |
None — both sides must be on. Static on one side + LACP/PAgP on other = no bundle (and possible STP loop risk) |
No PDU exchange. No negotiation. No standby ports. Use only when protocol negotiation is not available (some third-party switches) |
LACP and PAgP Mode Compatibility Matrix
| Switch A Mode |
Switch B Mode |
LACP Result |
PAgP Result |
active |
active |
Bundle forms ✓ |
N/A (LACP modes) |
active |
passive |
Bundle forms ✓ |
N/A |
passive |
passive |
NO bundle ✗ |
N/A |
desirable |
desirable |
N/A |
Bundle forms ✓ |
desirable |
auto |
N/A |
Bundle forms ✓ |
auto |
auto |
N/A |
NO bundle ✗ |
on |
on |
Bundle forms (no PDUs) |
Bundle forms (no PDUs) |
on |
active or passive |
NO bundle ✗ (ports err-disabled or suspended) |
N/A |
active |
desirable |
NO bundle ✗ (LACP ≠ PAgP) |
NO bundle ✗ |
Mandatory EtherChannel Parameter Match Requirements
All physical ports assigned to the same EtherChannel bundle — on
both switches — must have identical values for every
parameter in the following table. A mismatch in any single
parameter causes the affected ports to be suspended or prevents
the bundle from forming.
| Parameter |
Must Match Across |
Common Mismatch Scenario |
| Speed |
All member ports on both switches |
One port auto-negotiated to 100 Mbps while others are 1 Gbps |
| Duplex |
All member ports on both switches |
One port at half-duplex due to auto-negotiation failure with older NIC |
| Switchport mode |
All member ports (access vs trunk must be consistent) |
One port configured as access, others as trunk |
| Native VLAN |
All trunk member ports |
One switch has native VLAN 1, the other has native VLAN 10 |
| Allowed VLAN list |
All trunk member ports |
One switch allows VLANs 1–100, the other allows VLANs 1–50 — mismatch on ports 3 and 4 |
| Access VLAN |
All access member ports |
Ports assigned to different access VLANs on the same port-channel |
| Trunk encapsulation |
All trunk member ports |
One port using ISL, others using 802.1Q (rare on modern hardware) |
| STP parameters |
Port-channel interface and all member ports |
PortFast enabled on member port but not the port-channel — causes STP inconsistency |
| Port-channel number |
All member ports must reference the same port-channel number |
Two ports on SW1 in channel-group 1 connecting to ports in channel-group 2 on SW2 — both sides must use any number, but member ports must all agree on their local group number |
Important: The port-channel number does not
need to match between switches. SW1 can use channel-group 1
and SW2 can use channel-group 5 for the same bundle —
the number is locally significant only. What matters is that all
member ports on SW1 reference channel-group 1 and all
member ports on SW2 reference channel-group 5.
2. Lab Topology & Fault Scenarios
NetsTuts_SW1 NetsTuts_SW2
┌──────────────────────┐ ┌──────────────────────┐
│ Gi0/1 ──────────────┼───────┼── Gi0/1 │
│ Gi0/2 ──────────────┼───────┼── Gi0/2 │
│ Gi0/3 ──────────────┼───────┼── Gi0/3 │
│ Gi0/4 ──────────────┼───────┼── Gi0/4 │
│ │ │ │
│ Po1 (port-channel 1)│ │ Po1 (port-channel 1)│
└──────────────────────┘ └──────────────────────┘
Expected bundle: Po1 — 4 × 1 Gbps = 4 Gbps aggregate
Trunk carrying: VLANs 10, 20, 30, 40, 99 (native)
LACP: both sides active
┌────────────────────────────────────────────────────────────────┐
│ Fault Scenarios Covered in This Lab │
├───┬────────────────────────────────────────────────────────────┤
│ 1 │ LACP passive/passive — bundle never forms │
├───┼────────────────────────────────────────────────────────────┤
│ 2 │ Mixed protocol — LACP on SW1, PAgP on SW2 │
├───┼────────────────────────────────────────────────────────────┤
│ 3 │ Static "on" one side, LACP the other │
├───┼────────────────────────────────────────────────────────────┤
│ 4 │ Speed mismatch — one port at 100 Mbps, rest at 1 Gbps │
├───┼────────────────────────────────────────────────────────────┤
│ 5 │ Native VLAN mismatch across member ports │
├───┼────────────────────────────────────────────────────────────┤
│ 6 │ Allowed VLAN list inconsistency between member ports │
├───┼────────────────────────────────────────────────────────────┤
│ 7 │ Switchport mode mismatch (access vs trunk) │
├───┼────────────────────────────────────────────────────────────┤
│ 8 │ Port-channel interface parameter inconsistency │
└───┴────────────────────────────────────────────────────────────┘
3. Reading the Diagnostic Commands
show etherchannel summary — The Primary Diagnostic Tool
NetsTuts_SW1#show etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use N - not in use, no aggregation
f - failed to allocate aggregator
M - not in use, minimum links not met
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
A - formed using Device ID
g - Grp members with differing port speeds / duplex
z - Grp members lagging behind in sync / receiving
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
A healthy bundle shows: port-channel flag
(SU) — S=Layer2, U=in use — and all member ports
with flag (P) — bundled and carrying traffic. This
output confirms all four ports are active in the bundle. Every
other flag combination represents a problem state that must
be diagnosed.
EtherChannel Flag Code Reference
| Flag |
Meaning |
Where Seen |
Implication |
P |
Bundled in port-channel — actively carrying traffic |
Member port |
Healthy — port is a full member of the bundle |
D |
Down — physical link is down |
Member port or port-channel |
Physical layer issue — cable, SFP, or remote port shutdown |
s |
Suspended — port is up physically but excluded from bundle due to mismatch |
Member port |
Configuration mismatch — compare parameters against other bundle members |
I |
Stand-alone — port is not part of any bundle, operating independently |
Member port |
Protocol negotiation failed, or the port is waiting for a compatible partner |
w |
Waiting to be aggregated — LACP PDU exchange in progress |
Member port |
Transient during bundle formation — if persistent, LACP PDUs are not arriving from the remote end |
H |
Hot-standby (LACP only) — more than 8 ports assigned; this port is standby |
Member port |
Normal when more than 8 ports are in the group — port activates automatically if an active port fails |
U |
In use — port-channel is active and forwarding traffic |
Port-channel interface |
Healthy port-channel state |
N |
Not in use, no aggregation — no member ports are bundled |
Port-channel interface |
All member ports are down, suspended, or in stand-alone — the bundle has no active members |
S |
Layer 2 port-channel |
Port-channel interface |
Switching port-channel (most common for access/distribution layer bundles) |
R |
Layer 3 port-channel |
Port-channel interface |
Routed port-channel — has an IP address assigned directly |
g |
Group members with differing speed or duplex |
Member port |
Speed/duplex mismatch within the channel group — the offending port will be suspended |
u |
Unsuitable for bundling |
Member port |
Port has a parameter that disqualifies it from the bundle — check for SPAN destination, private VLAN, or conflicting port profile |
show etherchannel detail — Deep Diagnostic Output
NetsTuts_SW1#show etherchannel 1 detail
Group state = L2
Ports: 4 Maxports = 16
Port-channels: 1 Max Port-channels = 16
Protocol: LACP
Minimum Links: 0
Ports in the group:
-------------------
Port: Gi0/1
------------
Port state = Up Mstr Assoc In-Bndl
Channel group = 1 Mode = Active Gcchange = -
Port-channel = Po1 GC = - Pseudo port-channel = Po1
Port index = 0 Load = 0x55 Protocol = LACP
Flags: S - Device is sending Slow LACPDUs F - Device is sending fast LACPDUs
A - Device is in active mode. P - Device is in passive mode.
Local information:
LACP port Admin Oper Port Port
Port Flags State Priority Key Key Number State
Gi0/1 SA bndl 32768 0x1 0x1 0x102 0x3D
Partner's information:
LACP port Admin Oper Port Port
Port Flags Priority Dev ID Age key Key Number State
Gi0/1 FA 32768 aabb.cc00.0200 10s 0x0 0x1 0x102 0x3D
Age of the port in the current state: 0d:02h:15m:33s
show etherchannel [group] detail reveals the LACP
negotiation state for each member port — the local flags
(SA = Slow/Active) and the partner's flags and device
ID. The Oper Key values must match between local
and partner ports for the port to join the bundle. A mismatch
in Oper Key is a reliable indicator of a parameter inconsistency
that LACP has detected. The Partner's information
section confirms that LACP PDUs are being received from the remote
switch — if this section is absent or shows no partner, LACP PDUs
are not arriving.
4. Fault 1 — LACP Passive/Passive: Bundle Never Forms
Symptom
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SD) LACP Gi0/1(I) Gi0/2(I) Gi0/3(I) Gi0/4(I)
Port-channel shows (SD) — S=Layer2, D=Down.
All member ports show (I) — stand-alone,
meaning each port is operating independently and not part of any bundle.
This is the classic signature of a negotiation failure where neither
side is initiating the LACP conversation.
Diagnose
! ── Check the LACP mode on SW1 ───────────────────────────
NetsTuts_SW1#show etherchannel 1 detail | include Mode
Mode = Passive
! ── Check the LACP mode on SW2 ───────────────────────────
NetsTuts_SW2#show etherchannel 1 detail | include Mode
Mode = Passive
! ── Neither side is sending LACP PDUs — no partner info ──
NetsTuts_SW1#show lacp 1 neighbor
No lacp info for port channel 1
Both switches are in passive mode. LACP passive means
"respond to LACP PDUs but do not initiate them." With both sides
waiting for the other to start, no LACP PDUs are ever sent and
the bundle cannot form. show lacp [group] neighbor
confirms this — no partner information is present because no
LACP PDUs have been exchanged.
Fix
! ── Change at least one side to LACP active ──────────────
NetsTuts_SW1(config)#interface range gi0/1 - 4
NetsTuts_SW1(config-if-range)# channel-group 1 mode active
NetsTuts_SW1(config-if-range)#exit
! ── Verify the bundle forms immediately ──────────────────
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
! ── Confirm LACP neighbor information is now populated ───
NetsTuts_SW1#show lacp 1 neighbor
Flags: S - Device is sending Slow LACPDUs F - Device is sending fast LACPDUs
A - Device is in active mode. P - Device is in passive mode.
Channel group 1 neighbors
Partner's information:
LACP port Admin Oper Port Port
Port Flags Priority Dev ID Age key Key Number State
Gi0/1 SP 32768 aabb.cc00.0200 4s 0x0 0x1 0x102 0x3D
Gi0/2 SP 32768 aabb.cc00.0200 4s 0x0 0x1 0x103 0x3D
Gi0/3 SP 32768 aabb.cc00.0200 4s 0x0 0x1 0x104 0x3D
Gi0/4 SP 32768 aabb.cc00.0200 4s 0x0 0x1 0x105 0x3D
After changing SW1 to
active mode, SW1 begins sending
LACP PDUs. SW2 (still in
passive) responds, the
negotiation completes, and all four ports bundle immediately.
The partner flags now show
SP — Slow PDUs, Passive
mode — confirming SW2 is responding but not initiating. This is
a valid and fully operational configuration: one active, one passive.
For interface configuration fundamentals, see
Basic Interface
Configuration.
5. Fault 2 — Mixed Protocol: LACP on SW1, PAgP on SW2
Symptom
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SD) LACP Gi0/1(I) Gi0/2(I) Gi0/3(I) Gi0/4(I)
Diagnose
! ── Check protocol on SW1 ────────────────────────────────
NetsTuts_SW1#show etherchannel 1 summary | include Protocol
Protocol: LACP
! ── Check protocol on SW2 ────────────────────────────────
NetsTuts_SW2#show etherchannel 1 summary | include Protocol
Protocol: PAgP
! ── Confirm with running-config on both switches ─────────
NetsTuts_SW1#show run | include channel-group
channel-group 1 mode active ← LACP active
NetsTuts_SW2#show run | include channel-group
channel-group 1 mode desirable ← PAgP desirable
LACP and PAgP PDUs are completely incompatible — each protocol
uses a different EtherType and message format. A switch running
LACP on a port simply ignores PAgP PDUs (and vice versa), so
neither side sees a valid protocol response and the bundle does
not form. The ports remain in stand-alone mode, each operating
as an independent link. This mismatch is particularly common
when replacing a Cisco switch with another vendor's switch
(which may default to LACP) while the existing switch is
running PAgP.
Fix
! ── Option A: Change SW2 to LACP (recommended) ──────────
NetsTuts_SW2(config)#interface range gi0/1 - 4
NetsTuts_SW2(config-if-range)# channel-group 1 mode active
NetsTuts_SW2(config-if-range)#exit
! ── Option B: Change SW1 to PAgP ─────────────────────────
! ── (use only if SW2 is Cisco and PAgP is preferred) ─────
NetsTuts_SW1(config)#interface range gi0/1 - 4
NetsTuts_SW1(config-if-range)# channel-group 1 mode desirable
NetsTuts_SW1(config-if-range)#exit
! ── Option C: Change both to static "on" ─────────────────
! ── (use only when protocol negotiation is unavailable) ──
NetsTuts_SW1(config)#interface range gi0/1 - 4
NetsTuts_SW1(config-if-range)# channel-group 1 mode on
NetsTuts_SW1(config-if-range)#exit
NetsTuts_SW2(config)#interface range gi0/1 - 4
NetsTuts_SW2(config-if-range)# channel-group 1 mode on
NetsTuts_SW2(config-if-range)#exit
! ── Verify after fix (Option A shown) ────────────────────
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
6. Fault 3 — Static "On" vs LACP: Ports Suspended or Err-Disabled
Symptom
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) - Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
NetsTuts_SW2#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SD) LACP Gi0/1(s) Gi0/2(s) Gi0/3(s) Gi0/4(s)
SW1 shows Protocol: - (static, mode on) with all ports
bundled. SW2 shows Protocol: LACP with all ports
(s) — suspended. SW1 forwards traffic
because static mode does not require acknowledgement. SW2's LACP
ports are suspended because they receive no LACP PDU responses
from SW1 (which is not running LACP). This is the most dangerous
EtherChannel misconfiguration: SW1 is forwarding traffic on what
it believes is a bundle, while SW2 has suspended all member ports
— causing a one-way traffic black hole that is
extremely difficult to detect without examining both sides.
Diagnose
! ── Check running-config on both switches ────────────────
NetsTuts_SW1#show run | include channel-group
channel-group 1 mode on ← static
NetsTuts_SW2#show run | include channel-group
channel-group 1 mode active ← LACP
! ── Check for err-disabled ports ─────────────────────────
NetsTuts_SW2#show interfaces status | include err
Gi0/1 connected err-disabled full 1G 10/100/1000BaseTX
Fix
! ── Align both sides to LACP ─────────────────────────────
NetsTuts_SW1(config)#interface range gi0/1 - 4
NetsTuts_SW1(config-if-range)# channel-group 1 mode active
NetsTuts_SW1(config-if-range)#exit
! ── If any ports became err-disabled, clear them ─────────
NetsTuts_SW2(config)#interface range gi0/1 - 4
NetsTuts_SW2(config-if-range)# shutdown
NetsTuts_SW2(config-if-range)# no shutdown
NetsTuts_SW2(config-if-range)#exit
! ── Verify ───────────────────────────────────────────────
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
Warning: The static on mode is the
only EtherChannel mode that can create a unidirectional
forwarding condition where one switch is sending traffic into
a bundle that the other side has suspended. This can create MAC
table instability and STP anomalies. Always use LACP or PAgP in
production to ensure both sides agree on bundle membership before
forwarding traffic.
7. Fault 4 — Speed or Duplex Mismatch: One Port Suspended
Symptom
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(s) Gi0/4(P)
The bundle is up and three ports are active, but Gi0/3
shows (s) — suspended. The bundle is
operating at 3 Gbps instead of 4 Gbps, silently reducing bandwidth.
Without monitoring, this degradation may go unnoticed for weeks.
Diagnose
! ── Check speed and duplex on all member ports ───────────
NetsTuts_SW1#show interfaces gi0/1 | include duplex|speed|BW
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
Full-duplex, 1000Mb/s, media type is 10/100/1000BaseTX
NetsTuts_SW1#show interfaces gi0/3 | include duplex|speed|BW
MTU 1500 bytes, BW 100000 Kbit/sec, DLY 1000 usec,
Half-duplex, 100Mb/s, media type is 10/100/1000BaseTX
! ── Look for the 'g' flag in show etherchannel detail ─────
NetsTuts_SW1#show etherchannel 1 detail | include Gi0/3
Port: Gi0/3 (g) speed/duplex mismatch with other member ports
! ── Alternatively — show interfaces status ───────────────
NetsTuts_SW1#show interfaces status
Port Name Status Vlan Duplex Speed Type
Gi0/1 connected trunk full 1000 10/100/1000BaseTX
Gi0/2 connected trunk full 1000 10/100/1000BaseTX
Gi0/3 connected trunk half 100 10/100/1000BaseTX
Gi0/4 connected trunk full 1000 10/100/1000BaseTX
Gi0/3 has auto-negotiated to
100 Mbps
half-duplex — typically caused by a faulty cable
(damaged pairs causing negotiation failure), a bad SFP, or a
forced speed setting on the remote port that is incompatible
with auto-negotiation. The
g flag in
show etherchannel detail explicitly identifies
the speed/duplex mismatch. For interface diagnostics, see
show interfaces.
Fix
! ── Option A: Force speed and duplex (if hardware supports it)
NetsTuts_SW1(config)#interface gi0/3
NetsTuts_SW1(config-if)# speed 1000
NetsTuts_SW1(config-if)# duplex full
NetsTuts_SW1(config-if)#exit
! ── Option B: Re-enable auto-negotiation and reseat cable ─
NetsTuts_SW1(config)#interface gi0/3
NetsTuts_SW1(config-if)# no speed
NetsTuts_SW1(config-if)# no duplex
NetsTuts_SW1(config-if)# shutdown
NetsTuts_SW1(config-if)# no shutdown
NetsTuts_SW1(config-if)#exit
! ── Verify Gi0/3 re-joins the bundle ─────────────────────
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
! ── Confirm speed and duplex are now consistent ──────────
NetsTuts_SW1#show interfaces gi0/3 | include duplex|speed
Full-duplex, 1000Mb/s
8. Fault 5 — Native VLAN Mismatch: STP Errors and Traffic Loss
Symptom
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(s) Gi0/4(s)
! ── STP topology change messages in syslog ───────────────
%SPANTREE-2-RECV_PVID_ERR: Received BPDU with inconsistent
peer vlan id 99 on GigabitEthernet0/3 VLAN10.
%CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered
on GigabitEthernet0/3 (10), with NetsTuts_SW2 GigabitEthernet0/3 (99).
Two member ports are suspended. The
CDP-4-NATIVE_VLAN_MISMATCH
syslog message is the definitive indicator: CDP has detected that
the remote port's native VLAN differs from the local port's native
VLAN. The STP PVID (Port VLAN ID) error confirms STP BPDUs are
arriving tagged with a VLAN that the local port does not expect
as the native VLAN. For syslog message analysis, see
show logging.
Diagnose
! ── Check native VLAN on all member ports on SW1 ─────────
NetsTuts_SW1#show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gi0/1 on 802.1q trunking 99
Gi0/2 on 802.1q trunking 99
Gi0/3 on 802.1q trunking 10 ← mismatch
Gi0/4 on 802.1q trunking 10 ← mismatch
! ── Check native VLAN on SW2 ─────────────────────────────
NetsTuts_SW2#show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gi0/1 on 802.1q trunking 99
Gi0/2 on 802.1q trunking 99
Gi0/3 on 802.1q trunking 99
Gi0/4 on 802.1q trunking 99
! ── Check the port-channel interface native VLAN ─────────
NetsTuts_SW1#show interfaces po1 trunk
Port Mode Encapsulation Status Native vlan
Po1 on 802.1q trunking 99
Gi0/3 and
Gi0/4 on SW1 have native VLAN
10, while all other ports (on both switches) have native VLAN 99.
The EtherChannel consistency checker compares each new member port
against the existing bundle configuration — when it finds a native
VLAN mismatch, it suspends the inconsistent port rather than allowing
it to join and corrupt the bundle. For trunk configuration details,
see
Trunk Port
Configuration.
Fix
! ── Align native VLAN on the mismatched ports ────────────
NetsTuts_SW1(config)#interface range gi0/3 - 4
NetsTuts_SW1(config-if-range)# switchport trunk native vlan 99
NetsTuts_SW1(config-if-range)#exit
! ── Verify all ports now have matching native VLAN ───────
NetsTuts_SW1#show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gi0/1 on 802.1q trunking 99
Gi0/2 on 802.1q trunking 99
Gi0/3 on 802.1q trunking 99
Gi0/4 on 802.1q trunking 99
! ── Verify ports re-join the bundle ──────────────────────
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
9. Fault 6 — Allowed VLAN List Inconsistency
Symptom
! ── Bundle appears healthy — all ports show (P) ──────────
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
! ── But VLAN 30 and 40 traffic is intermittent ───────────
! ── No connectivity issues on VLANs 10 and 20 ────────────
This fault is more subtle than the previous ones — the bundle
appears fully healthy in show etherchannel summary.
All four ports show (P). Yet users on VLANs 30 and 40
experience intermittent connectivity. The issue is an allowed VLAN
list inconsistency between member ports — some ports are not
carrying certain VLANs, causing traffic hashing to send frames to
ports that will drop them.
Diagnose
! ── Check allowed VLANs on each member port individually ─
NetsTuts_SW1#show interfaces trunk
Port Mode Encap Status Native vlan
Gi0/1 on 802.1q trunking 99
Gi0/2 on 802.1q trunking 99
Gi0/3 on 802.1q trunking 99
Gi0/4 on 802.1q trunking 99
Port Vlans allowed on trunk
Gi0/1 10,20,30,40,99
Gi0/2 10,20,30,40,99
Gi0/3 10,20 ← missing VLANs 30, 40, 99
Gi0/4 10,20 ← missing VLANs 30, 40, 99
Port Vlans allowed and active in management domain
Gi0/1 10,20,30,40,99
Gi0/2 10,20,30,40,99
Gi0/3 10,20
Gi0/4 10,20
! ── Check what the port-channel interface allows ─────────
NetsTuts_SW1#show interfaces po1 trunk
Port Vlans allowed on trunk
Po1 10,20,30,40,99
Gi0/3 and
Gi0/4 only allow VLANs 10 and
20, while the port-channel interface and the other two member ports
allow VLANs 10, 20, 30, 40, and 99. EtherChannel hashes traffic
across member ports based on source/destination MAC or IP. When a
VLAN 30 frame hashes to
Gi0/3 or
Gi0/4,
it is dropped because those ports do not allow VLAN 30. Frames
hashing to
Gi0/1 or
Gi0/2 pass normally
— producing the observed intermittent behaviour. For VLAN
configuration, see
Assigning VLANs to
Switch Ports,
VLAN Tagging 802.1Q, and
show vlan.
Fix
! ── Align the allowed VLAN list on all member ports ──────
NetsTuts_SW1(config)#interface range gi0/3 - 4
NetsTuts_SW1(config-if-range)# switchport trunk allowed vlan 10,20,30,40,99
NetsTuts_SW1(config-if-range)#exit
! ── Verify all member ports now show the same VLAN list ──
NetsTuts_SW1#show interfaces trunk
Port Vlans allowed on trunk
Gi0/1 10,20,30,40,99
Gi0/2 10,20,30,40,99
Gi0/3 10,20,30,40,99
Gi0/4 10,20,30,40,99
10. Fault 7 — Switchport Mode Mismatch: Access vs Trunk
Symptom
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(s) Gi0/4(s)
Diagnose
! ── Check switchport mode on all member ports ────────────
NetsTuts_SW1#show interfaces gi0/1 switchport | include Mode
Administrative Mode: trunk
Operational Mode: trunk
NetsTuts_SW1#show interfaces gi0/3 switchport | include Mode
Administrative Mode: static access
Operational Mode: static access
! ── Quick view of all ports ───────────────────────────────
NetsTuts_SW1#show interfaces status
Port Status Vlan Duplex Speed Type
Gi0/1 connected trunk full 1000 10/100/1000BaseTX
Gi0/2 connected trunk full 1000 10/100/1000BaseTX
Gi0/3 connected 10 full 1000 10/100/1000BaseTX
Gi0/4 connected 20 full 1000 10/100/1000BaseTX
Gi0/3 is an access port on VLAN 10 and Gi0/4
is an access port on VLAN 20 — both should be trunk ports like
Gi0/1 and Gi0/2. IOS suspended them
because their switchport mode does not match the rest of the bundle.
This mismatch can occur when someone adds new ports to an existing
port-channel without fully configuring them, or when a port profile
template was applied incorrectly.
Fix
! ── Convert access ports to trunk ────────────────────────
NetsTuts_SW1(config)#interface range gi0/3 - 4
NetsTuts_SW1(config-if-range)# switchport mode trunk
NetsTuts_SW1(config-if-range)# switchport trunk native vlan 99
NetsTuts_SW1(config-if-range)# switchport trunk allowed vlan 10,20,30,40,99
NetsTuts_SW1(config-if-range)#exit
! ── Verify trunk and bundle status ───────────────────────
NetsTuts_SW1#show interfaces trunk
Port Mode Encap Status Native vlan
Gi0/1 on 802.1q trunking 99
Gi0/2 on 802.1q trunking 99
Gi0/3 on 802.1q trunking 99
Gi0/4 on 802.1q trunking 99
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
11. Fault 8 — Port-Channel Interface Parameter Inconsistency
Symptom
! ── Bundle shows (SU) but traffic is being dropped ───────
NetsTuts_SW1#show etherchannel summary
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)
! ── STP errors in syslog ─────────────────────────────────
%SPANTREE-2-RECV_PVID_ERR: Received BPDU with inconsistent
peer vlan id 99 on Port-channel1 VLAN10.
Diagnose
! ── Compare port-channel interface config vs member ports ─
NetsTuts_SW1#show interfaces po1 trunk
Port Mode Encap Status Native vlan
Po1 on 802.1q trunking 10 ← Po1 native VLAN is 10
NetsTuts_SW1#show interfaces gi0/1 trunk
Port Mode Encap Status Native vlan
Gi0/1 on 802.1q trunking 99 ← member port native VLAN is 99
! ── The port-channel interface itself has a different native VLAN
! ── than all its member physical ports ───────────────────
! ── Check running-config for the port-channel interface ──
NetsTuts_SW1#show run interface po1
Building configuration...
interface Port-channel1
switchport trunk encapsulation dot1q
switchport trunk native vlan 10
switchport trunk allowed vlan 10,20,30,40,99
switchport mode trunk
The Port-channel1 logical interface has native VLAN 10
configured directly on it, while all physical member ports have
native VLAN 99. In IOS, the port-channel interface configuration
takes precedence and is propagated down to the member ports —
but if the port-channel interface was manually configured
differently, it creates an inconsistency that generates STP errors.
Always configure trunk parameters on the port-channel
interface, not on individual member ports — the member
ports inherit the configuration from the port-channel. If both
are configured, the port-channel interface value governs.
Fix
! ── Correct the native VLAN on the port-channel interface ─
NetsTuts_SW1(config)#interface po1
NetsTuts_SW1(config-if)# switchport trunk native vlan 99
NetsTuts_SW1(config-if)# switchport trunk allowed vlan 10,20,30,40,99
NetsTuts_SW1(config-if)#exit
! ── Remove conflicting config from member ports ───────────
NetsTuts_SW1(config)#interface range gi0/1 - 4
NetsTuts_SW1(config-if-range)# no switchport trunk native vlan
NetsTuts_SW1(config-if-range)# no switchport trunk allowed vlan
NetsTuts_SW1(config-if-range)#exit
! ── Verify port-channel and member ports are consistent ──
NetsTuts_SW1#show interfaces po1 trunk
Port Mode Encap Status Native vlan
Po1 on 802.1q trunking 99
NetsTuts_SW1#show interfaces trunk
Port Mode Encap Status Native vlan
Gi0/1 on 802.1q trunking 99
Gi0/2 on 802.1q trunking 99
Gi0/3 on 802.1q trunking 99
Gi0/4 on 802.1q trunking 99
Po1 on 802.1q trunking 99
Best Practice: Always configure all trunk
parameters (native VLAN, allowed VLANs, encapsulation) on the
interface Port-channel[N] logical interface — never
directly on individual member ports. This ensures consistent
configuration and avoids the inconsistency shown in this fault
scenario. When adding a new physical port to an existing bundle,
the port inherits the port-channel interface configuration
automatically.
12. Complete EtherChannel Troubleshooting Workflow
Step-by-Step Diagnostic Checklist
! ══════════════════════════════════════════════════════════
! STEP 1: Identify the bundle state
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show etherchannel summary
! ── Look for: port-channel flag (SU vs SD vs SN)
! ── Look for: member port flags — P (good), s/I/D (problem)
! ── Note which ports are affected and which are healthy
! ══════════════════════════════════════════════════════════
! STEP 2: Check the protocol and mode
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show etherchannel 1 summary | include Protocol
NetsTuts_SW2#show etherchannel 1 summary | include Protocol
! ── Confirm same protocol on both sides
! ── Confirm compatible modes (active+passive, desirable+auto)
! ══════════════════════════════════════════════════════════
! STEP 3: Check for LACP/PAgP neighbour information
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show lacp 1 neighbor
! ── Partner info present = PDUs being received
! ── No partner info = PDUs not arriving (cable, mode, protocol mismatch)
! ══════════════════════════════════════════════════════════
! STEP 4: Check speed and duplex on all member ports
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show interfaces status
! ── All member ports must show same speed and duplex
! ── Any port at different speed/duplex → check cable, SFP, autoneg
! ══════════════════════════════════════════════════════════
! STEP 5: Check switchport mode on all member ports
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show interfaces trunk
! ── All members should appear in trunk list
! ── Any member showing as access port → switchport mode mismatch
! ══════════════════════════════════════════════════════════
! STEP 6: Check native VLAN consistency
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show interfaces trunk
! ── Native vlan column: must be identical on all member ports
! ── AND on the port-channel interface itself
! ── AND match the remote switch's member ports
! ══════════════════════════════════════════════════════════
! STEP 7: Check allowed VLAN list consistency
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show interfaces trunk
! ── "Vlans allowed on trunk" must be identical on all members
! ── Mismatch causes intermittent drops for the excluded VLANs
! ══════════════════════════════════════════════════════════
! STEP 8: Check port-channel interface vs member port config
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show run interface po1
NetsTuts_SW1#show run interface gi0/1
! ── Port-channel interface config should be the authoritative source
! ── Remove conflicting config from member ports
! ══════════════════════════════════════════════════════════
! STEP 9: Check CDP for native VLAN mismatch alerts
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show cdp neighbors gi0/1 detail | include VLAN
! ── CDP reports native VLAN on both sides — compare them
! ══════════════════════════════════════════════════════════
! STEP 10: Check syslog for EtherChannel and STP error messages
! ══════════════════════════════════════════════════════════
NetsTuts_SW1#show logging | include ETHCNL\|SPANTREE\|CDP\|LINK
! ── ETHCNL messages: IOS reports specific EtherChannel inconsistencies
! ── SPANTREE PVID errors: native VLAN mismatch
! ── CDP NATIVE_VLAN_MISMATCH: native VLAN confirmed wrong
EtherChannel Diagnostic Command Summary
| Command |
What It Shows |
Key Things to Check |
show etherchannel summary |
All port-channels: protocol, member ports, and flag codes for each |
Port-channel flag (SU=healthy, SD/SN=problem). Member flags: P=bundled, s=suspended, I=standalone, D=down |
show etherchannel [N] detail |
Per-port LACP/PAgP negotiation state, Oper Key, partner device ID and port number |
Partner info present (PDUs being received). Oper Key matches between local and partner. (g) flag = speed/duplex mismatch |
show lacp [N] neighbor |
LACP partner information: device ID, port priority, Oper Key, port state flags |
If empty: LACP PDUs not arriving from remote (cable, mode mismatch, wrong protocol). Partner flags: A=active, P=passive, F=fast, S=slow |
show pagp [N] neighbor |
PAgP partner information: device ID, group capability, port flags |
Same purpose as show lacp neighbor but for PAgP bundles. Empty output = PAgP PDUs not arriving |
show interfaces status |
Speed, duplex, and VLAN assignment for all ports in compact form |
All member ports must show same speed and duplex. Access ports in a trunk bundle show VLAN number instead of "trunk" |
show interfaces trunk |
Trunk status, native VLAN, and allowed VLAN list for all trunking interfaces including port-channel and members |
Native VLAN must match on all members and the port-channel. Allowed VLAN list must be identical on all member ports |
show interfaces [intf] switchport |
Detailed switchport configuration: administrative mode, operational mode, access VLAN, native VLAN, voice VLAN |
Administrative Mode must be consistent across all bundle members (all trunk or all access) |
show run interface po[N] |
Running configuration of the port-channel logical interface |
Compare against member port configs — port-channel interface config is authoritative |
show cdp neighbors [intf] detail |
CDP neighbour information including native VLAN on both sides |
Native VLAN field: if different from local native VLAN, a mismatch exists. Quick cross-check without accessing remote switch |
show logging | include ETHCNL |
IOS-generated EtherChannel consistency check error messages |
IOS reports the specific inconsistent parameter and which port triggered the check — the fastest path to identifying the exact mismatch type |
13. EtherChannel Troubleshooting — Quick Reference
| Problem |
Flags / Symptom |
Root Cause |
Fix |
| Bundle never forms — all ports stand-alone |
Port-channel (SD), all members (I), no LACP/PAgP neighbour info |
Both sides passive (LACP) or both sides auto (PAgP) — neither side initiating PDUs |
Change at least one side to active (LACP) or desirable (PAgP) |
| Bundle never forms — different protocols |
Port-channel (SD), all members (I) — but modes appear compatible |
LACP on one switch, PAgP on the other — PDUs ignored because they use different EtherTypes |
Align both sides to same protocol — LACP preferred (open standard) |
| SW1 bundle up, SW2 all ports suspended |
SW1: Po1 (SU), members (P). SW2: Po1 (SD), members (s) |
SW1 on static on, SW2 on LACP — static mode does not respond to LACP PDUs; SW2 suspends ports waiting for LACP response that never comes |
Align both to LACP or both to static on — never mix static with a negotiation protocol |
| One port suspended in otherwise healthy bundle |
Three ports (P), one port (s) with (g) flag |
Speed or duplex mismatch on the suspended port — auto-negotiated to lower speed due to cable fault or forced speed on remote port |
Inspect cable on the suspect port, force speed/duplex to match, or re-seat SFP. Shut/no shut the port after fix |
| Two ports suspended, STP PVID errors in log |
Two ports (s), %SPANTREE-2-RECV_PVID_ERR and %CDP-4-NATIVE_VLAN_MISMATCH in syslog |
Native VLAN on suspended ports differs from the rest of the bundle |
Set native VLAN consistently with switchport trunk native vlan [N] on all member ports and the port-channel interface |
| Bundle healthy but intermittent drops for specific VLANs |
All ports (P), but VLANs 30/40 traffic is intermittent — VLANs 10/20 work fine |
Allowed VLAN list inconsistency — some member ports do not allow the affected VLANs. Traffic hashing sends some frames to ports that drop those VLANs |
Align switchport trunk allowed vlan on all member ports to match the port-channel interface allowed VLAN list |
| Mixed access/trunk ports in bundle |
Some ports (P), others (s) — suspended ports show as access ports in show interfaces status |
Switchport mode mismatch — trunk ports and access ports cannot coexist in the same EtherChannel bundle |
Set all member ports to the same switchport mode (switchport mode trunk for inter-switch links) |
| STP errors despite healthy bundle |
All ports (P) but %SPANTREE-2-RECV_PVID_ERR continues |
Port-channel logical interface has different native VLAN than member physical ports — IOS is forwarding traffic according to the port-channel config while receiving BPDUs from the remote switch tagged for the member port VLAN |
Configure all trunk parameters on interface Port-channel[N] only. Remove conflicting config from member ports with no switchport trunk native vlan |
Key Points & Exam Tips
- show etherchannel summary is the mandatory first diagnostic command for any EtherChannel problem. The flag codes tell you exactly what state each port and port-channel is in:
P=bundled (healthy), s=suspended (config mismatch), I=stand-alone (negotiation failed), D=down (physical layer), U=in use (healthy port-channel).
- LACP requires at least one side to be
active — two passive sides produce no bundle. PAgP requires at least one side to be desirable — two auto sides produce no bundle. Static on requires both sides to be on — mixing static with LACP or PAgP causes port suspension or err-disable.
- LACP and PAgP are incompatible protocols — they use different EtherTypes and cannot negotiate with each other. A switch running LACP ignores PAgP PDUs entirely and vice versa. When replacing equipment, always confirm the protocol in use.
- The static
on mode is the only mode that can create a one-way forwarding black hole: SW1 in on mode forwards traffic because it expects no acknowledgement, while SW2 in LACP mode suspends its ports because it receives no LACP PDU responses. Traffic is black-holed in one direction with no clear error indication on SW1. Always use LACP in production.
- All member ports in an EtherChannel must have identical speed, duplex, switchport mode, native VLAN, and allowed VLAN list. A mismatch in any parameter causes the affected port to be suspended (
s flag). The g flag specifically identifies a speed/duplex inconsistency within the group.
- Configure trunk parameters (native VLAN, allowed VLANs) on the port-channel logical interface, not on individual member ports. The port-channel interface is the authoritative configuration source — member ports inherit from it. Conflicting config on both the port-channel and member ports causes the STP PVID errors seen in Fault 8.
- The port-channel number does not need to match between switches — it is locally significant. SW1 can use
channel-group 1 and SW2 can use channel-group 3 for the same physical bundle. What matters is that all member ports on each switch reference the same local group number.
- CDP is a free diagnostic tool for EtherChannel native VLAN mismatches.
show cdp neighbors [intf] detail reports the native VLAN on both sides of a link without requiring access to the remote switch — look for the %CDP-4-NATIVE_VLAN_MISMATCH syslog message as an early indicator. For syslog analysis see show logging.
- Intermittent connectivity for specific VLANs with all ports showing
(P) is the signature of an allowed VLAN list mismatch — some member ports are not carrying the affected VLANs. Because EtherChannel hashing distributes traffic across all member ports, frames for the excluded VLANs are dropped only when they hash to the misconfigured ports, producing exactly the intermittent behaviour observed.
- On the exam: know the flag codes in
show etherchannel summary, the protocol mode compatibility matrix (active+passive forms, passive+passive does not), what suspended (s) vs stand-alone (I) means, the mandatory match requirements (speed/duplex/mode/native VLAN/allowed VLANs), and the danger of mixing static on with LACP/PAgP.