Requirement:
Information
Both Spanning Tree Protocol (STP) and Rapid Ring Protection Protocol (RRPP) can eliminate Layer 2 loops. STP is mature; however, it takes several seconds to converge. RRPP is an Ethernet ring-specific data link layer protocol, and converges faster than STP. Additionally, the convergence time of RRPP is independent of the number of nodes in the Ethernet ring, so RRPP can be applied to large-diameter networks.
How RRPP works:
The polling mechanism is used by the master node of an RRPP ring to check the Health state of the ring network. The master node sends Hello packets out its primary port periodically. These Hello packets travel through each transit node on the ring in turn.
If the ring is complete, the secondary port of the master node will receive Hello packets before the Fail timer expires, and the master node will keep the secondary port blocked.
If the ring is torn down, the secondary port of the master node will fail to receive Hello packets before the Fail timer expires. The master node will release the secondary port from blocking data VLANs and sending Common-Flush-FDB packets to instruct all transit nodes to update their own MAC entries and ARP/ND entries.
Solution:In the following example, switch Switch-A, Switch-B and Switch-C are configured for RRPP. A spanning-tree instance is created with three vlans (10, 20, 30). Switch Switch-A is configured as the RRPP master, and switches Switch-B and Switch-C are transit node types.
Configuration:***** Configure VLAN and VLAN-Interface *****
>> Configure Switch-A with IP address on vlan 10, 20 and 30.
<Switch-A> display current-configuration interface Vlan-interface 10
Interface Vlan-interface10
ip address 10.10.10.1 255.255.255.0
<Switch-A> display current-configuration interface Vlan-interface 20
Interface Vlan-interface20
ip address 10.10.20.1 255.255.255.0
<Switch-A> display current-configuration interface Vlan-interface 30
Interface Vlan-interface30
ip address 10.10.30.1 255.255.255.0
>> Similarly configure Switch-B and Switch-C with IP address 10.10.X.2 and 10.10.X.3 respectively. Here X is corresponding VLAN ID.
***** Configure MST instance and region-configuration *****
>> Configure the VLANS in a separate instance which will be passing between switches. In this example we will configure vlan 10, 20 and 30 in instance 2.
stp region-configuration
instance 2 vlan 10 20 30
active region-configuration
***** Interface configuration *****
>> We need to enable qos trust dot1p in order to make sure the RRPP hello packets are prioritize.
>> Configure the uplink with below configuration on each switch.
>> In this example, we will configure interface TenG1/0/51 and 1/0/52 on all switches.
port link-type trunk
port trunk permit vlan 10 20 30
undo port trunk permit vlan 1
undo stp enable
qos trust dot1q
***** Configure RRPP domain *****
>> Switch-A is configured as rrpp master node while Switch-B and Switch-C is configure as rrpp transit node.
>> Create RRPP domain 1, configure VLAN 4092 as the primary control VLAN of RRPP domain 1, and configure the VLANs mapped to MSTI 2 as the protected VLANs of RRPP domain 1.
rrpp domain 1
control-vlan 4092
protected-vlan reference-instance 2
ring 1 node-mode master primary-port Ten-GigabitEthernet1/0/51 secondary-port Ten-GigabitEthernet1/0/52 level 0
ring 1 enable
rrpp enable
>> RRPP Transit node configuration on Switch-B and Switch-C
rrpp domain 1
control-vlan 4092
protected-vlan reference-instance 2
ring 1 node-mode transit primary-port Ten-GigabitEthernet1/0/51 secondary-port Ten-GigabitEthernet1/0/52 level 0
ring 1 enable
rrpp enable
Verification***** RRPP Verification *****
>> RRPP status on each switch
[Switch-A]display rrpp verbose domain 1
Domain ID : 1
Control VLAN : Major 4092 Sub 4093
Protected VLAN: Reference Instance 2
Hello Timer : 1 sec Fail Timer : 3 sec
Ring ID : 1
Ring Level : 0
Node Mode : Master
Ring State : Complete
Enable Status : Yes Active Status: Yes
Primary port : XGE1/0/51 Port status: UP
Secondary port: XGE1/0/52 Port status: BLOCKED
<Switch-B>display rrpp verbose domain 1
Domain ID : 1
Control VLAN : Major 4092 Sub 4093
Protected VLAN: Reference Instance 2
Hello Timer : 1 sec Fail Timer : 3 sec
Ring ID : 1
Ring Level : 0
Node Mode : Transit
Ring State : -
Enable Status : Yes Active Status: Yes
Primary port : XGE1/0/51 Port status: UP
Secondary port: XGE1/0/52 Port status: UP
<Switch-C>display rrpp verbose domain 1
Domain ID : 1
Control VLAN : Major 4092 Sub 4093
Protected VLAN: Reference Instance 2
Hello Timer : 1 sec Fail Timer : 3 sec
Ring ID : 1
Ring Level : 0
Node Mode : Transit
Ring State : -
Enable Status : Yes Active Status: Yes
Primary port : XGE1/0/51 Port status: UP
Secondary port: XGE1/0/52 Port status: UP
>> RRPP statistics
<Switch-A>display rrpp statistics domain 1
Ring ID : 1
Ring Level : 0
Node Mode : Master
Active Status : Yes
Primary port : XGE1/0/51
Packet Link Common Complete Edge Major Packet
Direct Hello Down Flush FDB Flush FDB Hello Fault Total
------------------------------------------------------------------------------
Send 14331 0 0 6 0 0 14337
Rcv 0 0 0 0 0 0 0
Secondary port: XGE1/0/52
Packet Link Common Complete Edge Major Packet
Direct Hello Down Flush FDB Flush FDB Hello Fault Total
------------------------------------------------------------------------------
Send 0 0 2 0 0 0 2
Rcv 14329 2 0 6 0 0 14337
***** Simulating interface failure *****
>> Initially the interface Ten-GigabitEthernet1/0/52 on switch Switch-A is blocking. Testing is accomplished by shutting down the interface Ten-GigabitEthernet1/0/52 on switch Rack4sw2 to simulate a ring failure. The interface statuses are displayed for a second time. The blocked interface on switch Switch-A is now up.
<Switch-A>display rrpp verbose domain 1 | include status
Primary port : XGE1/0/51 Port status: UP
Secondary port: XGE1/0/52 Port status: BLOCKED
<Switch-B>display rrpp verbose domain 1 | include status
Primary port : XGE1/0/51 Port status: UP
Secondary port: XGE1/0/52 Port status: UP
<Switch-C>display rrpp verbose domain 1 | include status
Primary port : XGE1/0/51 Port status: UP
Secondary port: XGE1/0/52 Port status: UP
>> Shutting interface Ten 1/0/52 on Switch-B
[Switch-B-Ten-GigabitEthernet1/0/52] shutdown
<Switch-A>display rrpp verbose domain 1 | include status
Primary port : XGE1/0/51 Port status: UP
Secondary port: XGE1/0/52 Port status: UP
<Switch-B>display rrpp verbose domain 1 | include status
Primary port : XGE1/0/51 Port status: UP
Secondary port: XGE1/0/52 Port status: DOWN
<Switch-C>display rrpp verbose domain 1 | include status
Primary port : XGE1/0/51 Port status: DOWN
Secondary port: XGE1/0/52 Port status: UP
***** Debugging *****
<Switch-A> debugging rrpp event
#Jun 2 19:38:01:305 2020 Switch-A RRPP/1/RNGDN: Trap 1.3.6.1.4.1.25506.2.45.3.2: Domain 1 ring 1.1 failed.
%Jun 2 19:38:01:445 2020 Switch-A RRPP/3/RRPP_RING_FAIL: Ring 1 in Domain 1 failed.
*Jun 2 19:38:01:555 2020 Switch-A RRPP/7/EVT: Domain 1 ring 1 turns to fault for Link-Down packet .
#Jun 2 19:39:04:991 2020 Switch-A RRPP/1/RNGUP: Trap 1.3.6.1.4.1.25506.2.45.3.1: Domain 1 ring 1.1 restored.
%Jun 2 19:39:05:131 2020 Switch-A RRPP/5/RRPP_RING_RESTORE: Ring 1 in Domain 1 recovered.
*Jun 2 19:39:05:242 2020 Switch-A RRPP/7/EVT: Domain 1 ring 1 recovered for Health packet .
<Switch-A> debugging rrpp packet
-- Hello packet --
*Jun 2 19:40:07:314 2020 Switch-A RRPP/7/RRPPPKT: Port Ten-GigabitEthernet1/0/51 Send packet of domain 1 ring 1.(Length: 64, Type: Health)
99 0b 00 40 01 05 00 01 00 01 00 00 b8 af 67 2c
0f ca 00 01 00 03 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*Jun 2 19:40:07:745 2020 Switch-A RRPP/7/RRPPPKT: Port Ten-GigabitEthernet1/0/52 Rcvd packet of domain 1 ring 1.(Length: 64, Type: Health)
99 0b 00 40 01 05 00 01 00 01 00 00 b8 af 67 2c
0f ca 00 01 00 03 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
***** Testing IP connectivity *****
>> Pinging VLAN 10 IP from Switch-C to Switch-A and Switch-B
<Switch-C>ping -q 10.10.10.1
PING 10.10.10.1: 56 data bytes, press CTRL_C to break
--- 10.10.10.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 1/4/12 ms
<Switch-C>ping -q 10.10.10.2
PING 10.10.10.2: 56 data bytes, press CTRL_C to break
--- 10.10.10.2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 1/6/19 ms
>> Similarly from Switch-C can ping VLAN 20 and 30 on Switch-A and Switch-B