EtherChannel is a term used to describe bundling or aggregating 2-8 parallel links. EtherChannel provides a level of link redundancy. If one link in the bundle fails, traffic sent through that link is automatically moved to an adjacent link in the bundle.
Normally multiple links between switches creates the potential for bridging loops, but because an EtherChannel bundle is treated as a single logical link by both switches, it avoids the problem.
Spanning Tree sees the bundle as a single link so individual ports will not be placed in a blocked STP state, allowing greater bandwidth utilization. If there are two redundant EtherChannel bundles, one entire EtherChannel will be blocked by STP to prevent a loop.
Any changes made to an interface after the EtherChannel has been created will be automatically make the same change to all other ports in that bundle. Also – bundles cannot form if any of the assigned ports are SPAN ports.
EtherChannel links can be either access or trunk links, but if they are trunked (usually the case), they require the following the be the same on all connected interfaces:
- VLANs
- Trunking Mode
- Native VLAN
- Speed
- Duplex
EtherChannel link negotiation protocols
PAgP (Port Aggregation Protocol)
- Cisco proprietary
- Forms EtherChannel only if ports are configured for identical static VLANs or trunking
- Will automatically modify interface parameters on all ports of the bundle if the EtherChannel interface is changed.
- STP sends packets over only one physical link in a PAgP bundle. Because STP’s algorithm uses the lowest port priority (priority + port ID), if defaults are set, STP will always use the lowest number port for BPDUs.
LACP (Link Aggregation Control Protocol)
- An open standard to PAgP
- IEEE 802.3ad
- Uses priority system for end switches
- Switch with the lowest system priority (2 byte value followed by MAC – lowest wins) determines which ports are active in the EtherChannel at any given time.
- Uses port priority to determine which ports to place in standby mode if hardware limitations do not allow all ports to participate in the EtherChannel.
- Most implementations leave the system and port priority to defaults
EtherChannel Negotiation Protocols Summary

Configuration
PAgP
PAgP EtherChannel Interface Configuration
Switch(config)# interface fa 1/1/2
Switch(config-if)# channel-protocol pagp
Switch(config-if)# channel-group number mode {on | {{auto | desirable} | [non-silent]}}
By default, PAgP operates in silent submode – allowing ports to be added to the EtherChannel, even if it does not hear anything from the far end. This allows a switch to form an EtherChannel with a non-PAgP devices such as a network analyzer or server. It is best practice to aways use non-silent mode when connecting two switches together.
LACP
LACP EtherChannel Interface Configuration
Switch(config)# lacp system-priority number (optional)
Switch(config)# interface fa 1/1/3
Switch(config-if)# channel-protocol lacp
Switch(config-if)# channel-group number mode {on | passive | active}
Switch(config-if)#lacp port-priority number (optional)
It’s important to note that EtherChannel can operate at layer 2 and 3. The configuration is a bit different between the two, so recognize what type you need before you begin your configurations. Layer 2 EtherChannel links are simply a bundled switch link that acts as one logical link. This is most commonly used for trunked links between switches.
Layer 3 EtherChannel bundles allow you to create a virtual portchannel link that can be configured with an IP address. An example where this would be useful would be if you are connecting an EtherChannel bundle to a router. The router will require that its bundle has an IP address, so the virtual portchannel interface that you create can be assigned an IP address. Another example would be between multilayer switches at the distribution and core layers. Cisco recommends running layer 3 connectivity between the two and EtherChannels would assist with providing increased bandwidth and redundancy.
Switch(config)# interface portchannel number Switch(config-if)# ip address x.x.x.x x.x.x.x (for layer 3 only) Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk vlan allowed vlan 2,56,70 Switch(config-if)# switchport trunk native vlan 99
Note that in the configuration example above how the interface mode (trunk) and VLANs are all configured on the portchannel directly and not on the physical interfaces that make up the bundle. While it will pass traffic either way, it is much simpler to manage VLAN consistency and configuration on the bundled link.
A LACP system priority can be assigned to define the decision-making switch (lower priority wins – default is 32,768). If no priority is assigned, the switch with the lowest MAC address will be assigned.
Layer 3 EtherChannel Configuration
1. Create a virtual layer 2 interface
Switch(config)# interface port-channel 1
2. Change the port to layer 3
Switch(config-if)# no switchport
3. Assign an IP address to the port-channel
Switch(config-if)# ip address ip_address subnet_mask
4. Select the physical interfaces that are part of the bundle
Switch(config)# interface range interface_id portnumber_range
5. Set physical interfaces to layer 3
** If all of the physical interfaces are not acting in the same layer (ex. port-channel set to no switchport and interfaces set to default – switchport), the EtherChannel will not form.
Switch(config-if-range)# no switchport
6. Assign all physical interfaces to the EtherChannel group.
Switch(config-if-range) # channel-group channel-group-number mode {auto [non-silent] | desirable [non-silent] | on} | {active | passive}
Etherchannel Load Balancing
The bundles use an algorithm to determine each link’s load, so they will never be able to operate at 100% capacity of the sum of the links. That means the load will not be balanced equally amongst the individual links. A hash algorithm is used to determine which individual interface each frame is forwarded through.
The algorithm can use source IP, destination IP, a combination of the two, source and destination MAC, or TCP/UDP port numbers. If only one address or port number is used for the hash, the switch uses one or more low-order bits of the hash results as an index into the bundled links. If two or more addresses and or TCP ports are hashed, the hash performs an XOR on the low-order bits of the addresses or ports as the index.
To configure the EtherChannel load balancing type globally on the switch:
Switch(config)# port-channel load-balance method
Methods:
- src-ip source IP
- dst-ip destination IP
- src-dst-ip source and destination IP (XOR) **DEFAULT METHOD**
- src-mac source MAC
- dst-mac destination MAC
- src-dst-mac source and destination MAC (XOR)
- src-port source port
- dst-port destination port
- src-dst-port source and destination port (XOR)
Troubleshooting an EtherChannel
Remember that there should be consistent configurations on both ends of the bundle.
- If using mode “on”, make sure both ends are set to it.
- If one end is set to desirable (PAgP) or active (LACP), the other side must be set to either desirable or auto.
- Auto (PAgP) passive (LACP) modes require the far end to request for participation.
- PAgP auto and desirable modes default to silent submode – which will establish an EtherChannel without hearing from the far end. If set to non-silent submode, packets must be received from the far end before a channel will form.
To verify the EtherChannel Status:
Switch# show etherchannel summary
To verify an individual port’s configuration:
Switch# sh run interface xx/xx
To check for EtherChannel errors on an interface:
Switch# sh run interface xx/xx etherchannel
To verify the EtherChannel load balancing on a switch:
Switch# sh etherchannel load-balance





Under the section: EtherChannel link negotiation protocols
sub-section titled: LACP (Link Aggregation Control Protocol)
You have defined LACP as 802.3ab. This is incorrect. LACP is defined under 802.3ad. I am sure it was a typo. Good job on the website. It is awesome and I am using it to refresh my knowledge before taking the exam to renew my certs.
Thanks for catching that! If there’s anything else you would like to see changed/added let me know.
when configuring lacp – why did you specify the native vlan to 99 – is there an advantage to change it from default of vlan 1? Thanks, bob
Bob,
Changing the native VLAN from 1 is a common practice in security-conscious networks. There are several VLAN security attacks, like VLAN hopping, that can be exploited with the native VLAN set to the default.
Here’s a good resource:
http://www.cisco.com/en/US/products/hw/switches/ps708/products_white_paper09186a008013159f.shtml#wp39211
can you make an example for etherchannel load balancing ?
thanks.
Sounds like a great blog post..
More to come.
Concise and on point – you have disected “aggregating. Switch links.” I equally appreciate the inclusion of layer 3 etherchannel configurations. I’d like to see more examples and diagrams for illustration.
Is it possible to add a switchport to an already configured etherchannel? I tried on a simulator and was unable to.
Thanks.
You can definitely add more ports to an existing EtherChannel. Try using the channel-group command under the interface you’d like to be added.
Hi Aaron,
Just a question about this statement from the PAgP section:
“PAgP will automatically modify interface parameters on all ports of the bundle if one the the interfaces is changed. Ex. if speed, VLAN, or duplex mode of a port in an establish bundle is modified, PAgP reconfigures that parameter for all other ports in the bundle”
Are you saying that applying config changes to a physical interface within a channel will apply those changes to all physical interfaces within the channel? If so, I’m a little confused, because the Cisco study guides state that applying config changes to a physical interface within a bundle will only apply the changes to that interface.
Could you clarify this for me please?
Thanks!
Dom
Dominc,
You are correct, changes made to an individual interface that is a member of an EtherChannel will only change that interface and no others. Changes made to the EtherChannel interface will automatically apply the changes to the member ports.
From Cisco:
Thanks for clarifying!
Awesome work dude…. Thanks a lot for such a nice website….