Date created: 08/10/18 15:44:26. Last modified: 08/10/18 16:11:56

LACP Max-Links Instead of STP

This example topology is a triangle, R1 > R2, R2 > R3, R3 > R1 (all CSR1000v running 3.16.7b.S). No devices are STP capable so LACP can be used to create a loop free but resilient topology:

R1-Gi1 <> R2-Gi1
R1-Gi2 <> R2-Gi2

R2-Gi3 <> R3-Gi1
R2-Gi4 <> R3-Gi2

R3-Gi3 <> R1-Gi3
R3-Gi4 <> R1-Gi4

R1 has all four interfaces configured into the same port-channel but the port-channel is configured with a maximum member count of 2 and the links to R2 have a lower (more preferred) LACP priority. This means that the links to R2 are active in the bundle and the links to R3 are suspended:

! R1
bridge-domain 10
lacp system-priority 10
!
interface GigabitEthernet1
no ip address
load-interval 30
negotiation auto
cdp enable
lacp port-priority 100
lacp rate fast
channel-group 1 mode active
exit
!
interface GigabitEthernet2
no ip address
load-interval 30
negotiation auto
cdp enable
lacp port-priority 200
lacp rate fast
channel-group 1 mode active
exit
!
interface GigabitEthernet3
no ip address
load-interval 30
negotiation auto
cdp enable
lacp port-priority 300
lacp rate fast
channel-group 1 mode active
exit
!
interface GigabitEthernet4
no ip address
load-interval 30
negotiation auto
cdp enable
lacp port-priority 400
lacp rate fast
channel-group 1 mode active
exit
!
interface Port-channel1
no ip address
load-interval 30
no negotiation auto
lacp max-bundle 2
service instance 10 ethernet
encapsulation untagged
bridge-domain 10
exit
exit
!
interface BDI10
ip address 192.168.0.1 255.255.255.248
load-interval 30
exit

R2 and R3 have a similar configuration, with two port-channels, one between each other and one to R1:

! R2
bridge-domain 10
!
interface GigabitEthernet1
no ip address
load-interval 30
negotiation auto
cdp enable
lacp rate fast
channel-group 1 mode active
exit
!
interface GigabitEthernet2
no ip address
load-interval 30
negotiation auto
cdp enable
lacp rate fast
channel-group 1 mode active
exit
!
interface GigabitEthernet3
no ip address
load-interval 30
negotiation auto
cdp enable
lacp rate fast
channel-group 2 mode active
exit
!
interface GigabitEthernet4
no ip address
load-interval 30
negotiation auto
cdp enable
lacp rate fast
channel-group 2 mode active
exit
!
interface Port-channel1
no ip address
load-interval 30
no negotiation auto
service instance 10 ethernet
encapsulation untagged
bridge-domain 10
exit
exit
!
interface Port-channel2
no ip address
load-interval 30
no negotiation auto
service instance 10 ethernet
encapsulation untagged
bridge-domain 10
exit
exit
!
interface BDI10
ip address 192.168.0.2 255.255.255.248
load-interval 30
exit

! R3
bridge-domain 10
!
interface GigabitEthernet1
no ip address
load-interval 30
negotiation auto
cdp enable
lacp rate fast
channel-group 2 mode active
exit
!
interface GigabitEthernet2
no ip address
load-interval 30
negotiation auto
cdp enable
lacp rate fast
channel-group 2 mode active
exit
!
interface GigabitEthernet3
no ip address
load-interval 30
negotiation auto
cdp enable
lacp rate fast
channel-group 1 mode active
exit
!
interface GigabitEthernet4
no ip address
load-interval 30
negotiation auto
cdp enable
lacp rate fast
channel-group 1 mode active
exit
!
interface Port-channel1
no ip address
load-interval 30
no negotiation auto
service instance 10 ethernet
encapsulation untagged
bridge-domain 10
exit
exit
!
interface Port-channel2
no ip address
load-interval 30
no negotiation auto
service instance 10 ethernet
encapsulation untagged
bridge-domain 10
exit
exit
!
interface BDI10
ip address 192.168.0.3 255.255.255.248
load-interval 30
exit

When one link between R2 and R1 goes down nothing happens, the port-channel runs on one link due to no use of "lacp min-bundle". R1 won't add one of the links to R3 into the bundle because it has a different system ID. Only after both links between R1 and R2 go down will R1 enable both links to R3.

The "lacp min-bundle" command can't be used on R1. With "lacp min-bundle 2" configured and one link between R1 and R2 down, R1 brings the bundle down, finds two active links (Gi1 and Gi3 based upon LACP priority), tries to bring the bundle up and fails because both LACP neighbours have different system IDs, then the bundle is brought down again, and the process cycles indefinitely flapping up and down until either the remaining working link between R1 and R2 is brought down or the already downed link is fixed.