2.1.e (i) LACP, PAgP, manual

2.1.e (i) LACP, PAgP, manual


When configuring a channel group we have the options of LACP, PAGP, or just ON (static).

Here’s an example of ports g0/1-2 in a port channel:

conf t
int range g0/1-2
channel-group 1 mode <active | auto | desirable | on | passive>

These obviously do different things:
active = Enables LACP and signals the other side as well (transmits)
passive = Passive LACP, only works if the other side is active (listens)

desirable = Enables PAGP and signals the other side as well (transmits)
auto = Enables PAGP, only works if the other side is desirable (listens)

on = Static etherchannel no negotiations (dangerous)

Note: the channel-group <num> is locally significant
Note2: You should be aware the active/passive values do not affect LACP master elections.
Note3: LACP has a max active link limitation of 8 links, but you can have up to 16 in a bundle as stand by with no special configuration needed.

What negotiations will work successfully for LACP?
active active
active passive

What negotiations will work successfully for PAGP?
desirable desirable
desirable auto

What issues can happen if you have one side as “on” while the other side is not? If we had STP running the port would show up as P2p Dispute (best case), sometimes a loop here is still possible. If you were not running STP and messed up the static etherchannel a loop is guaranteed.


How can we verify?

show etherchannel summary

show port-channel summary

LACP and Pagp specific verification:
The two following commands let us verify OUR LACP settings, and the neighbors LACP settings (active or passive, priorities, ports, everything)
show lacp internal
show lacp neighbor

img 5a557abbd9241

These commands are very similar to LACP, look at the output

show pagp neighbor
show pagp internal


img 5a557ac562a10

Show spanning-tree should also show the port-channel interface instead of the port members.
Also any mac address learned on either port-channel member is associated to the port-channel interface.

Note: any config post channel creation should be done in the port-channel UNLESS specifically told by documentation or not available in the port-channel (certain QoS)
Note2: LACP does not support half duplex links

The command below limits which protocols we are allowed to use for our etherchannel in an interface (kind of silly btw):
int g0/1
channel-protocol <lacp | pagp>
So if we set it to LACP now we can only configure the link as LACP (active or passive)

Keep alives:

Once formed, LACP has a keep alive of 30 seconds. Each side will send their keepalives no matter if their role is active or passive.
See the below screenshot for proof, each color is a different sender. The second column is the seconds.

img 5a557ad129f46

PAGP is very similar with its hello time, it goes out every 30 sec. (although it looks like it can be between 20-30)


img 5a557ad98e966

LACP is encapsulated in Ethernet II/DIX and NOT 802.3 Ethernet. Thus its ethertype is 0x8809.
The destination mac is 01:80:c2:00:00:02

PAGP is encapsulated in IEEE 802.3 Ethernet
CDP, VTP, DTP, PAGP, and UDLD all share 2 things in common:
1. They are cisco proprietary technologies
2. They all go to the same destination mac address of 01:00:0c:cc:cc:cc

LACP System ID and Priority:

These LACP values are used when we have a hardware limitation like a max of 8 links, however we have more than that in the bundle (we can have stand by links)

LACP is special in that it uses a system ID (like STP) and a port priority for electing a master.
The LACP system ID is the priority + the switch mac address, so there will never be a tie.
The default LACP system ID is 32768, and lower is better in this case.

It can be changed with:
conf t
lacp system-priority <priority>
The default Port Priority is also 32768.

It can be changed with:
conf t
lacp port-priority <priority>

Note: These values only matter matter when we are using fast switchover, or if we have more links than 8 in the bundle (max of 16, but only 8 active)

Let’s see what happens when we just put them all in one LACP etherchannel.

LACP Active Standby:

You can change the maximum active links allowed in a port channel by tuning the port-channel link via:
lacp max-bundle <max links>
note: changing this requires bouncing the port-channel up and down.

LACP 1:1 Link redundancy AKA LACP fast-switchover

Now for LACP fast-switchover / link redundancy (active stand by)


img 5a557ae6e1499

Let’s take the above topology and use it in our example to explain this.

Basically LACP fast-switchover is utilizing LACP for an active and standby link (by default it’s active active).
I believe the only time you would want to do this is if somehow the load balancing was not favoring the application correctly, or you were having issues with the traffic/flows being hashed.
This gives you the redundancy of LACP (without utilizing the redundancy of STP) in an active stand by pair. This fast-switchover commands basically let’s us recover an active/ standby link faster than just having the max-bundle 1 command, if we just had max-bundle in the config, the port-channel would flap and take longer to recover.

Now you don’t necessarily NEED to config system-priority nor port-priority if you don’t care which link is active, but most likely you do.
So in the above scenario here are the requirements, we want LACP fast-switchover for our port-channel, we want SW2 to make the decision on which link is active,
we also want G0/1 to be the active link. Then we want to change it over to G0/2 and see what happens.

Before we do that let’s configure these links, first we want to use the max-bundle command to limit the max active links to 1, then we enable lacp fast-switchover to enable active standby.
conf t

int range g0/1 – 2
channel-group 10 mode active

int po10
lacp max-bundle 1
lacp fast-switchover
no shut

So the switch that gets to make these decisions is the LACP master, so let’s set our priority on SW2 after we configure it.

conf t

int range g0/1 – 2
channel-group 10 mode active

int po10
lacp max-bundle 1
lacp fast-switchover
no shut

lacp system-priority 0
int g0/1
lacp port-priority 0

Now we configured SW2 to be the LACP master, and it will now choose which port becomes standby.
Finally we selected g0/1 as the active link so we set it’s priority to 0.
Now run “show etherchannel sum”


img 5a557af51407f

Notice above we see that G0/2 is stand by now because we select G0/1 as the lower priority? Now let’s make G0/2 the active one.

conf t
int g0/1
no lacp port-priority 0
int g0/2
lacp port-priority 0

Wait a few seconds for LACP messages to go out and renegotiate the link then run “show etherchannel sum” again.


img 5a557b00f3b4c

Notice now G0/2 is active.

Leave a comment