EtherChannel supports load balancing. However, it does not mean that the traffic is distributed equally among the links. The traffic that goes through the port-channel interface is not forwarded on a round-robin basis. Instead, EtherChannel load balancing uses a hash algorithm to forward packets.
The calculated load balancing hash determines which physical interface will be used to forward the packet. The load balancing method can be configured using the ‘port-channel load-balance <hash>’ global configuration command and have the following hash options or keywords which are based on the source and destination IP address, MAC address, and TCP/UDP ports:
- dst-ip – Destination IP address
- dst-mac – Destination MAC address
- dst-port – Destination TCP/UDP port
- dst-mixed-ip-port – Destination IP address and destination TCP/UDP port
- src-ip – Source IP address
- src-mac – Source MAC address
- src-port – Source TCP/UDP port
- src-dst-ip – Source and destination IP addresses
- src-dest-ip-only – Source and destination IP addresses only
- src-dst-mac – Source and destination MAC addresses
- src-dst-port – Source and destination TCP/UDP ports only
- src-mixed-ip-port – Source IP address and source TCP/UDP port
- src-dst-mixed-ip-port – Source and destination IP addresses and source and destination TCP/UDP ports
Moreover, the hash is a binary function. So to be consistent, the number of links should be in powers of two, 2, 4, 8, etc. Load balancing on a 3-port EtherChannel is not as effective as load balancing on a 2-port or 4-port EtherChannel.
Changing the hash may result in a different distribution ratio among the links if they are unevenly distributed. Let’s say a port channel is formed with a router, it will use a MAC address as part of the hash and it might affect traffic flow because the source or destination will always be the router’s MAC address. Using the source/destination IP address or the TCP/UDP ports would be better options.
The default EtherChannel load-balancing option is ‘src-mac’ or the source MAC address, which means that the traffic from one MAC address will be forwarded using the same physical interface.
EtherChannel Load Balancing Configuration
In our example below, you’ll see that we’ve got a router, two switches, and two PCs. Switch2 has got the default configuration of ‘src-mac’, which is fine because there are two PCs that have different MAC addresses. PC1’s traffic will be sent down Switch2’s G0/0 interface, for example, and PC2’s traffic will be sent down Switch2’s G0/1 interface. We’ve got two PCs and two physical links, therefore depending on the traffic volume, it’s close to a 1:1 EtherChannel distribution ratio.
With Switch1, this is not the same case. Since there’s a single router, which means a single MAC address, using the default algorithm of ‘src-mac’ would be unfavorable. A single link will be used, either G0/0 or G0/1, for the traffic coming from Router1.
To change the load balancing method, we use the ‘port-channel load-balance’ command. For Switch1, we will use the ‘dst-mac’ for the load balancing to use the destination MAC addresses instead.
Switch1(config)#port-channel load-balance dst-mac
In this way, the traffic from Router1 will be load balanced depending on the destination MAC address. It could be that the traffic going to PC1 will be sent down to Switch1’s G0/1 interface, and the traffic going to PC2 will be sent down to Switch1’s G0/0 interface. Now, the two physical links are utilized.
EtherChannel Load Balancing Verification
To check the EtherChannel load balancing algorithm, we can use the command ‘show etherchannel load-balance’. It will also show the traffic load balancing method based on its type, non-IP, IPv4, or IPv6.
Switch1# show etherchannel load-balance EtherChannel Load-Balancing Operational State (dst-mac): Non-IP: Destination MAC address IPv4: Destination MAC address IPv6: Destination MAC address
Switch2# show etherchannel load-balance EtherChannel Load-Balancing Operational State (src-mac): Non-IP: Source MAC address IPv4: Source MAC address IPv6: Source MAC address
To check the link usage, ‘show etherchannel port’ command is used. It is under the Load in hex values and it is used to determine the traffic distribution on the different EtherChannel interfaces.
Download our Free CCNA Study Guide PDF for complete notes on all the CCNA 200-301 exam topics in one book.
We recommend the Cisco CCNA Gold Bootcamp as your main CCNA training course. It’s the highest rated Cisco course online with an average rating of 4.8 from over 30,000 public reviews and is the gold standard in CCNA training: