How to configure a manual EtherChannel port on Cisco switches

In this post, I would like to show you how to configure a manual layer 2 EtherChannel port on Cisco switches.

An EtherChannel interface is the result of bundling multiple physical links into a logical port. It is recommended to use n links to the power of two (For example: 2, 4, 8, 16 physical ports). In other technical documents, you can find references to the same concept by the name port-channel, link aggregation group (LAG), bonding.

The idea behind this concept is to increase the fault-tolerance and speed between switches, routers and/or servers. In case of a link failure, the traffic will be redistributed among the remaining links.

Check the interface status

Before starting to configure EtherChannel, let’s check the lab network diagram and the interfaces status. I will use 4 interfaces in my lab. All of them are in connected status.

Output SW0:

SW0#show int status

Port      Name               Status       Vlan       Duplex  Speed Type 
Gi0/0                        connected    1          a-full   auto RJ45
Gi0/1                        connected    1          a-full   auto RJ45
Gi0/2                        connected    1          a-full   auto RJ45
Gi0/3                        connected    1          a-full   auto RJ45
Gi1/0                        connected    1          a-full   auto RJ45
SW0#

Output SW1:

SW1#show interface status

Port      Name               Status       Vlan       Duplex  Speed Type 
Gi0/0                        connected    1          a-full   auto RJ45
Gi0/1                        connected    1          a-full   auto RJ45
Gi0/2                        connected    1          a-full   auto RJ45
Gi0/3                        connected    1          a-full   auto RJ45
Gi1/0                        connected    1          a-full   auto RJ45
SW1#
Lab Network Diagram
Lab Network Diagram

Check spanning-tree

If you add multiple links between two switches, spanning tree will block all the links and leave only one link for traffic forwarding. With EtherChannel this is not the case. Let’s check if all the interfaces are used to forward the traffic.

Output SW0:

SW0#show spanning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     5254.0001.e79b
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     5254.0001.e79b
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0               Desg FWD 4         128.1    P2p 
Gi0/1               Desg FWD 4         128.2    P2p 
Gi0/2               Desg FWD 4         128.3    P2p 
Gi0/3               Desg FWD 4         128.4    P2p 
Gi1/0               Desg FWD 4         128.5    P2p 


SW0#

Output SW1:

SW1#show spanning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     5254.0001.e79b
             Cost        4
             Port        1 (GigabitEthernet0/0)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     5254.0016.ebf4
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0               Root FWD 4         128.1    P2p 
Gi0/1               Altn BLK 4         128.2    P2p 
Gi0/2               Altn BLK 4         128.3    P2p 
Gi0/3               Altn BLK 4         128.4    P2p 
Gi1/0               Desg FWD 4         128.5    P2p 


SW1#
show spanning-tree
show spanning-tree

As you can see on SW1, from the available 4 ports, only one is in forwarding status. The other 3 are in blocking status. I will share the same output after adding the ports to the EtherChannel bundle.

Configure EtherChannel manually

After confirming that all ports are up and running, you need to configure EtherChannel manually by running the below commands.

Output SW0:

SW0#conf term
Enter configuration commands, one per line.  End with CNTL/Z.
SW0(config)#int gi0/0
SW0(config-if)#channel-group 1 mode on
Creating a port-channel interface Port-channel 1

SW0(config-if)#int 
*Nov 17 14:08:44.043: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up
*Nov 17 14:08:45.045: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel1, changed state to upgi0/1
SW0(config-if)#channe
SW0(config-if)#channel-g
SW0(config-if)#channel-group 1 mode on
SW0(config-if)#int gi0/2              
SW0(config-if)#channel-group 1 mode on
SW0(config-if)#int gi0/3              
SW0(config-if)#channel-group 1 mode on
SW0(config-if)#

Output SW1:

SW1#conf term
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#int range gi0/0-3
SW1(config-if-range)#channel-gr
SW1(config-if-range)#channel-group 10 mode on
Creating a port-channel interface Port-channel 10

SW1(config-if-range)#
*Nov 17 14:10:16.692: %LINK-3-UPDOWN: Interface Port-channel10, changed state to up
*Nov 17 14:10:17.692: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel10, changed state to up

On the switch SW1, I used the interface range command in order to configure multiple interfaces at the same time.

Configure manually EtherChannel
Configure manually EtherChannel

Check the status of the newly created logical interface

After configuring both switches, you need to check the status of the newly created logical interface.

Run a similar command for finding details about the new interface.

Output SW0:

SW0#show int po1
Port-channel1 is down, line protocol is down (err-disabled) 
  Hardware is EtherChannel, address is 0000.0000.0000 (bia 0000.0000.0000)
  MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:04:46, output never, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     104 packets input, 6483 bytes, 0 no buffer
     Received 0 broadcasts (0 multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 input packets with dribble condition detected
     87 packets output, 7752 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out
SW0#

Output SW1:

SW1#sho
*Nov 17 14:14:55.271: %SYS-5-CONFIG_I: Configured from console by consolew int po10
Port-channel10 is up, line protocol is up (connected) 
  Hardware is EtherChannel, address is 5254.0016.ebf4 (bia 5254.0016.ebf4)
  MTU 1500 bytes, BW 4000000 Kbit/sec, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input never, output never, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     0 packets input, 0 bytes, 0 no buffer
     Received 0 broadcasts (0 multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 input packets with dribble condition detected
     278 packets output, 33430 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out
SW1#

The logical interface on SW0 is down. It is in an err-disabled state. In order to change its status to up (connected), you need to shut-it down and run the same command with no in front of it.

SW0#conf term
Enter configuration commands, one per line.  End with CNTL/Z.
SW0(config)#int po1
SW0(config-if)#shut
SW0(config-if)#no shut
SW0(config-if)#
*Nov 17 14:18:23.572: %LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to administratively down
*Nov 17 14:18:23.604: %LINK-5-CHANGED: Interface GigabitEthernet0/1, changed state to administratively down
*Nov 17 14:18:23.629: %LINK-5-CHANGED: Interface GigabitEthernet0/2, changed state to administratively down
*Nov 17 14:18:23.663: %LINK-5-CHANGED: Interface GigabitEthernet0/3, changed state to administratively down
*Nov 17 14:18:23.691: %LINK-5-CHANGED: Interface Port-channel1, changed state to administratively downend
*Nov 17 14:18:25.860: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up
*Nov 17 14:18:25.868: %LINK-3-UPDOWN: Interface GigabitEthernet0/0, changed state to up
*Nov 17 14:18:26.234: %LINK-3-UPDOWN: Interface GigabitEthernet0/1, changed state to up
*Nov 17 14:18:26.403: %LINK-3-UPDOWN: Interface GigabitEthernet0/2, changed state to up
*Nov 17 14:18:26.707: %LINK-3-UPDOWN: Interface GigabitEthernet0/3, changed state to up
*Nov 17 14:18:26.867: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel1, changed state to up
*Nov 17 14:18:26.869: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up
*Nov 17 14:18:27.392: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/1, changed state to up
*Nov 17 14:18:27.402: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/2, changed state to up
*Nov 17 14:18:27.715: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/3, changed state to up
SW0#
SW0#
SW0#
*Nov 17 14:18:29.925: %SYS-5-CONFIG_I: Configured from console by consoleshow int po1
Port-channel1 is up, line protocol is up (connected) 
  Hardware is EtherChannel, address is 5254.0001.e79b (bia 5254.0001.e79b)
  MTU 1500 bytes, BW 4000000 Kbit/sec, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:00:03, output never, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 1000 bits/sec, 1 packets/sec
     107 packets input, 7509 bytes, 0 no buffer
     Received 0 broadcasts (0 multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 input packets with dribble condition detected
     124 packets output, 19060 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out
SW0#

Now both EtherChannel interfaces are in an up (connected) status. The channel-group number does not need to match on both switches for the logical interface to change its state.

Check the status of the EtherChannel interfaces
Check the status of the EtherChannel interfaces

Check if STP is blocking the ports

After confirming that the logical interface is up and running, let’s check if STP is blocking any interface. Before configuring EtherChannel, it blocked 3 interfaces.

Output SW0:

SW0#show spanning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     5254.0001.e79b
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     5254.0001.e79b
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi1/0               Desg FWD 4         128.5    P2p 
Po1                 Desg FWD 3         128.65   P2p 


SW0#

Output SW1:

SW1#show spanning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     5254.0001.e79b
             Cost        3
             Port        65 (Port-channel10)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     5254.0016.ebf4
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi1/0               Desg FWD 4         128.5    P2p 
Po10                Root FWD 3         128.65   P2p 


SW1#

The EtherChannel interface is in forwarding status. The physical interfaces that are part of the logical interface are no longer present in the output.

The speed of the interface is increased to 4000000 Kbit/sec.

SW0#show int po1 | include line|BW
Port-channel1 is up, line protocol is up (connected) 
  MTU 1500 bytes, BW 4000000 Kbit/sec, DLY 10 usec, 
SW0#
EtherChannel interface speed
EtherChannel interface speed

Find more details about the EtherChannel port

Another two commands that you can use in order to find more information about the EtherChannel ports are:

SW0#show etherchannel 
                Channel-group listing: 
                ----------------------

Group: 1 
----------
Group state = L2 
Ports: 4   Maxports = 4
Port-channels: 1 Max Port-channels = 1
Protocol:    -
Minimum Links: 0



SW0#

In the output of the show etherchannel command, you can find the group number (1 in my case), group state (L2, it can be also configured as L3). You have the number of the ports which are part of the logical interface (4 in my lab). Under the protocol you will see – because we configured the EtherChannel manually (it can be -, PAgP, and LACP).

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
        m - not in use, port not aggregated due to minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port

        A - formed by Auto LAG


Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
10     Po10(SU)         -        Gi0/0(P)    Gi0/1(P)    Gi0/2(P)    
                                 Gi0/3(P)    
          
SW1#

In the output of the show etherchannel summary command you can find the following information: group number, port-channel name and its status (SU – Layer 2, in use), member ports and their status (P – bundled in port-channel).

Check the connectivity from PC0 to PC1

The last step is to check the connectivity between the end hosts: PC0 and PC1.

With the command hostname, I configured the name for my PCs. Both PCs are running Alpine Linux.

With the command ifconfig, I configured an IP address for the interface eth0.

With the ping command, I tested the connectivity between PC0 and PC1.

inserthostname-here:~$ hostname PC0
hostname: sethostname: Operation not permitted
inserthostname-here:~$ sudo hostname PC0
PC0:~$ sudo ifconfig eth0 10.10.10.1 netmask 255.255.255.0
PC0:~$ ping -c 4 10.10.10.2
PING 10.10.10.2 (10.10.10.2): 56 data bytes
64 bytes from 10.10.10.2: seq=0 ttl=42 time=27.341 ms
64 bytes from 10.10.10.2: seq=1 ttl=42 time=14.422 ms
64 bytes from 10.10.10.2: seq=2 ttl=42 time=13.469 ms
64 bytes from 10.10.10.2: seq=3 ttl=42 time=17.649 ms

--- 10.10.10.2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 13.469/18.220/27.341 ms
PC0:~$ 
Check the connectivity between PC0 and PC1
Check the connectivity between PC0 and PC1

That’s it! You have learned how to configure a manual layer 2 EtherChannel port on Cisco switches. If you found this blog post helpful, please like and subscribe for more Cisco networking tutorials. Thank you for reading it!

Processing…
Success! You're on the list.

Leave a Reply