backup_nhg_action_pbf - bstoll/featureprofiles GitHub Wiki
Validate gRIBI Backup NHG actions with PBF.
- Connect ATE port-1 to DUT port-1, ATE port-2 to DUT port-2, ATE port-3 to DUT port-3, and ATE port-4 to DUT port-4.
 - Create a 3 non-default VRF:
- 
VRF-Athat includes DUT port-1. - 
VRF-Bthat includes no interface. - 
VRF-Cthat includes no interface. 
 - 
 - 
OuterDstIP_1,OuterSrcIP_1,OuterDstIP_2,OuterSrcIP_2: IPinIP outer IP addresses. - 
InnerDstIP_1,InnerSrcIP_1: IPinIP inner IP addresses. - 
VIP_1,VIP_2: IP addresses used for recursive resolution. - 
ATEPort2IP: testbed assigned interface IP to ATE port 2 - 
ATEPort3IP: testbed assigned interface IP to ATE port 3 - All the NHG and NH objects injected by gRIBI are in the DEFAULT VRF.
 - Add an empty decap VRF, 
DECAP_TE_VRF. - Add 4 empty encap VRFs, 
ENCAP_TE_VRF_A,ENCAP_TE_VRF_B,ENCAP_TE_VRF_CandENCAP_TE_VRF_D. - Replace the existing VRF selection policy with 
vrf_selection_policy_was in https://github.com/openconfig/featureprofiles/pull/2217 
Different test scenarios requires different setups.
- 
Setup#1
- 
Make sure DUT port-2, port-3 and port-4 are up.
 - 
Make sure there is a static route in the default VRF for
InnerDstIP_1, pointing to ATE port-4. - 
Connect a gRIBI client to DUT with session parameters
{persistence=PRESERVE Redundancy=SINGLE_PRIMARY} - 
gRIBI Flush the DUT.
 - 
Inject the following gRIBI structure to the DTU:
VIP_1/32 {DEFAULT VRF} --> NHG#1 --> NH#1 {next-hop: ATEPort2IP} NHG#100 --> NH#100 {decap, network-instance:DEFAULT} NHG#101 --> [NH#101 {next-hop: VIP1}, backupNHG: NHG#100] OuterDstIP_1/32 {VRF-A} --> NHG#101 
 - 
 - 
Setup#2
- 
Make sure DUT port-2, port-3 and port-4 are up.
 - 
Make sure there is a static route in the default VRF for
InnerDstIP_1, pointing to ATE port-4. - 
Connect a gRIBI client to DUT with session parameters
{persistence=PRESERVE Redundancy=SINGLE_PRIMARY} - 
gRIBI Flush the DUT.
 - 
Inject the following gRIBI structure to the DTU:
VIP_1/32 {DEFAULT VRF} --> NHG#1 --> NH#1 {next-hop: ATEPort2IP} VIP_2/32 {DEFAULT VRF} --> NHG#2 --> NH#2 {next-hop: ATEPort3IP} NHG#100 --> NH#100 {network-instance:VRF-B} NHG#101 --> [NH#101 {next-hop: VIP1}, backupNHG: NHG#100] OuterDstIP_1/32 {VRF-A} --> NHG#101 NHG#103 --> NH#103 {decap, network-instance:DEFAULT} NHG#102 --> [NH#102 {decap-encap, src:`OuterSrcIP_2`, dst:`OuterDstIP_2`, network-instance: VRF-C}, backupNHG: NHG#103] OuterDstIP_1/32 {VRF-B} --> NHG#102 NHG#104 --> [NH#104 {next-hop: VIP-2}, backupNHG: NHG#103] OuterDstIP_2/32 {VRF-C} --> NHG#104 
 - 
 
- 
TEST#1 - (next-hop viability triggers decap in backup NHG):
- 
Deploy Setup#1 as above.
 - 
Send IPinIP traffic to
OuterDstIP_1with inner IP asInnerDstIP_1, and validate that ATE port-2 receives the IPinIP traffic. 
- Shutdown DUT port-2 interface, and validate that ATE port-4 receives the
decapsulated traffic with 
InnerDstIP_1. 
 - 
 - 
Test#2 - (tunnel viability triggers decap and encap in the backup NHG):
- 
Deploy Setup#2 as above.
 - 
Send IPinIP traffic to
OuterDstIP_1. Validate that ATE port-2 receives the IPinIP traffic with outer IP asOuterDstIP_1. - 
Shutdown DUT port-2 interface, and validate that ATE port-3 receives the IPinIP traffic with outer destination IP as
OuterDstIP_2, and outer source IP asOuterSrcIP_2 - 
Shutdown DUT port-3 interface, and validate that ATE port-4 receives the traffic with decapsulated traffic with destination IP as
InnerDstIP_1at ATE port-4. 
 - 
 
rpcs:
  gnmi:
    gNMI.Get:
    gNMI.Set:
    gNMI.Subscribe:
  gribi:
    gRIBI.Get:
    gRIBI.Modify:
    gRIBI.Flush:vRX if the vendor implementation supports FIB-ACK simulation, otherwise FFF.