Cisco switches support two different protocols that allow the switches to negotiate whether a particular link becomes part of an EtherChannel or not. After configuring the channel-group, the switch can use the dynamic EtherChannel protocol to verify that all settings for the dynamic EtherChannel protocol pass. If a physical link passes, the link is added to the EtherChannel and used. If a link does not pass the physical checks, it is placed in a down state and wont be functional until the issues are resolved.

Cisco switches support the Cisco-proprietary Port Aggregation Protocol (PAgP) and the IEEE standard Link Aggregation Control Protocol (LACP), based on IEEE standard 802.3ad. There are differences between both protocols but they accomplish the same task of negotiating links for dynamic EtherChannels.

Although differences exist between the two, to the depth discussed here, they both accomplish the same task: negotiate so that only links that pass the configuration checks are actually used in an EtherChannel.

When we use EtherChannels, we can utilize multiple redundant connections between network switches to load balance network traffic. Configuring switches like this doesn’t necessarily mean bandwidth is multiplied, but that these network switches can use logic (most likely source mac and destination mac address) to distribute frames across redundant links to enhance network efficiency and offer redundancy in case a link goes down.

The starting point for an EtherChannel would be to use the channel-group command on a set of particular links for each switch. The links you configure to be a part of a channel group will be bundled together and will try to negotiate a dynamic EtherChannel link with the other side of the connection.

The auto and desirable keywords enable PAgP
The active and passive keywords enable LACP
With both options, at least one side must begin the negotiations- In PAgp one must side must use desirable and with LACP, at least one side must use active.

Configuration Checks Before Adding Interfaces to EtherChannels

You can use the channel-group commands correctly and still see problems with an EtherChannel. A local switch will check each new physical interface when trying to join that particular interface to an EtherChannel- the new physical link you are adding must have settings that match the existing links’ settings; otherwise, the switch will not add the new link to the list of approved and working interfaces in the EtherChannel. The link will still be configured as part of the PortChannel in this instance, but it will be placed in a nonworking state.

Here are some things to check when adding links to an EtherChannel:

  • Speed Duplex
  • Operational access or trunking state (all must be access, or all must be trunks)
  • If an access port, the access VLAN
  • If a trunk port, the allowed VLAN list (per the switchport trunk allowed command)
  • If a trunk port, the native VLAN
  • STP interface settings

Configuring LACP Example

LACP is based on an IEEE standard, therefore multiple manufacturers can implement the protocol. I tend to stick with IEEE standards over Cisco proprietary protocols to have the flexibility with network device manufacturers. Take the topology below which contains a simple router and two Cisco 2960 network switches.

There are redundant connections between the two network switches (FA0/1-2). You can see FA0/2 is being blocked on Switch0 because STP is doing it’s job in blocking redundant connections to prevent network loops.

1. Shut down switch ports on one switch. For this example, I’ll shut down FA0/1 and FA0/2 on switch 1.

Switch1(config)#int range fa0/1-2
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
%LINK-5-CHANGED: Interface FastEthernet0/2, changed state to administratively down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2, changed state to down

2. Lets go in to range interface config mode for both FA0/1-2 on both switches and enable channel-group 1 mode active which will enable LACP unconditionally. Remember, the steps are the same for PAgP, in which case you will just use desirable instead of active.

Switch1(config-if-range)#channel-group 1 mode ?
  active     Enable LACP unconditionally
  auto       Enable PAgP only if a PAgP device is detected
  desirable  Enable PAgP unconditionally
  on         Enable Etherchannel only
  passive    Enable LACP only if a LACP device is detected
Switch1(config-if-range)#channel-group 1 mode active 
Creating a port-channel interface Port-channel 1

3. Re-enable both interfaces on the switch you ran the shutdown command earlier in step 1 to start the EtherChannel initiation.

4. Verify the EtherChannel. Some helpful commands are show etherchannel summary and show etherchannel port-channel. The first example below shows the Port-Channel summary, SU means that it’s functional and in use.

Switch0#sh etherchannel summary 
Flags:  D - down        P - in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      f - failed to allocate aggregator
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port

Number of channel-groups in use: 1
Number of aggregators:           1
Group  Port-channel  Protocol    Ports
1      Po1(SU)           LACP   Fa0/1(P) Fa0/2(P)

The show ethernet port-channel command will give a detailed view on the

Switch1#sh etherchannel port-channel 
                Channel-group listing:
Group: 1
                Port-channels in the group:

Port-channel: Po1    (Primary Aggregator)
Age of the Port-channel   = 00d:00h:03m:48s
Logical slot/port   = 2/1       Number of ports = 2
GC                  = 0x00000000      HotStandBy port = null
Port state          = Port-channel 
Protocol            =   LACP
Port Security       = Disabled

Ports in the Port-channel:

Index   Load   Port     EC state        No of bits
  0     00     Fa0/2    Active             0
  0     00     Fa0/1    Active             0
Time since last port bundled:    00d:00h:01m:17s    Fa0/1

Rule to remember: Always shut down the physical interfaces and the PortChannel when adding new physical links to an EtherChannel!