diff --git a/feature/gribi/otg_tests/mpls_in_udp/README.md b/feature/gribi/otg_tests/mpls_in_udp/README.md index b2f8fc44704..68874f772b9 100644 --- a/feature/gribi/otg_tests/mpls_in_udp/README.md +++ b/feature/gribi/otg_tests/mpls_in_udp/README.md @@ -1,12 +1,8 @@ -# TE-18.1 gRIBI MPLS in UDP Encapsulation and Decapsulation +# TE-18.1 gRIBI MPLS in UDP Encapsulation Create AFT entries using gRIBI to match on next hop group in a network-instance and encapsulate the matching packets in MPLS in UDP. -Create a policy routing configuration using gNMI to decapsulate MPLS -in UDP packets which are sent to a loopback address and apply to -the DUT. - The MPLS in UDP encapsulation is expected to follow [rfc7510](https://datatracker.ietf.org/doc/html/rfc7510#section-3), but relaxing the requirement for a well-known destination UDP port. gRIBI is @@ -186,72 +182,6 @@ encapsulate in GRE. * Generate traffic from ATE port 1 to ATE port 2 * Validate ATE port 2 receives GRE traffic with correct inner and outer IPs -### TE-18.1.3 - MPLS in GRE decapsulation set by gNMI - -Canonical OpenConfig for policy forwarding, matching IP prefix with action -decapsulate in GRE. # TODO: Move to dedicated README - -```yaml -openconfig-network-instance: - network-instances: - - network-instance: "DEFAULT" - afts: - policy-forwarding: - policies: - policy: "default decap rule" - config: - policy-id: "default decap rule" - type: PBR_POLICY - rules: - rule: 1 - config: - sequence-id: 1 - ipv6: - config: - destination-address: "decap_loopback_ipv6" - action: - decapsulate-mpls-in-gre: TRUE # TODO: add to OC model/PR in progress -``` - -* Push the gNMI the policy forwarding configuration -* Push the configuration to DUT using gnmi.Set with REPLACE option -* Configure ATE port 1 with traffic flow which matches the decap loopback IP address -* Generate traffic from ATE port 1 -* Validate ATE port 2 receives packets with correct VLAN and the inner inner_decap_ipv6 - -### TE-18.1.4 - MPLS in UDP decapsulation set by gNMI - -Canonical OpenConfig for policy forwarding, matching IP prefix with action -decapsulate MPLS in UDP. # TODO: Move to dedicated README - -```yaml -openconfig-network-instance: - network-instances: - - network-instance: "DEFAULT" - afts: - policy-forwarding: - policies: - policy: "default decap rule" - config: - policy-id: "default decap rule" - type: PBR_POLICY - rules: - rule: 1 - config: - sequence-id: 1 - ipv6: - config: - destination-address: "decap_loopback_ipv6" - action: - decapsulate-mpls-in-udp: TRUE -``` - -* Push the gNMI the policy forwarding configuration -* Push the configuration to DUT using gnmi.Set with REPLACE option -* Configure ATE port 1 with traffic flow - * Flow should have a packet encap format : outer_decap_udp_ipv6 <- MPLS label <- inner_decap_ipv6 -* Generate traffic from ATE port 1 -* Validate ATE port 2 receives the innermost IPv4 traffic with correct VLAN and inner_decap_ipv6 ## OpenConfig Path and RPC Coverage @@ -294,12 +224,6 @@ paths: #/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/encap-headers/encap-header/gre/config/ip-ttl: #/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/encap-headers/encap-header/gre/config/source-ip: - # Paths added for TE-18.1.3 - MPLS in GRE decapsulation set by gNMI - /network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/config/destination-address: - # TODO: /network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/config/decapsulate-mpls-in-gre: - - # Paths added for TE-18.1.4 - MPLS in UDP decapsulation set by gNMI - /network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/config/decapsulate-mpls-in-udp: rpcs: gnmi: @@ -317,4 +241,4 @@ rpcs: ## Required DUT platform -* FFF +* FFF \ No newline at end of file diff --git a/feature/policy_forwarding/otg_tests/mpls_gre_udp_decap_test/README.md b/feature/policy_forwarding/otg_tests/mpls_gre_udp_decap_test/README.md new file mode 100644 index 00000000000..ad8b8233fe3 --- /dev/null +++ b/feature/policy_forwarding/otg_tests/mpls_gre_udp_decap_test/README.md @@ -0,0 +1,158 @@ +# PF-1.7 Decapsulate MPLS in GRE and UDP + +Create a policy-forwarding configuration using gNMI to decapsulate MPLS +in GRE and UDP packets which are sent to a loopback address and apply to +the DUT. + +## Topology + +* [`featureprofiles/topologies/atedut_2.testbed`](https://github.com/openconfig/featureprofiles/blob/main/topologies/atedut_2.testbed) + +## Test setup + +TODO: Complete test environment setup steps + +inner_ipv6_dst_A = "2001:aa:bb::1/128" +inner_ipv6_dst_B = "2001:aa:bb::2/128" +inner_ipv6_default = "::/0" + +ipv4_inner_dst_A = "10.5.1.1/32" +ipv4_inner_dst_B = "10.5.1.2/32" +ipv4_inner_default = "0.0.0.0/0" + +outer_ipv6_src = "2001:f:a:1::0" +outer_ipv6_dst_A = "2001:f:c:e::1" +outer_ipv6_dst_B = "2001:f:c:e::2" +outer_ipv6_dst_def = "2001:1:1:1::0" +outer_dst_udp_port = "6635" +outer_dscp = "26" +outer_ip-ttl = "64" + +## Procedure + +### PF-1.7.1 - MPLS in GRE decapsulation set by gNMI + +Canonical OpenConfig for policy forwarding, matching IP prefix with action +decapsulate in GRE. + +```json +{ + "openconfig-network-instance": { + "network-instances": [ + { + "afts": { + "policy-forwarding": { + "policies": [ + { + "config": { + "policy-id": "default decap rule", + "type": "PBR_POLICY" + }, + "policy": "default decap rule", + "rules": [ + { + "config": { + "sequence-id": 1, + }, + "ipv6": { + "config": { + "destination-address": "decap_loopback_ipv6" + } + }, + "action": { + "decapsulate-mpls-in-gre": TRUE + } + } + ] + } + ] + } + } + } + ] + } +} +``` +* Push the gNMI the policy forwarding configuration +* Push the configuration to DUT using gnmi.Set with REPLACE option +* Configure ATE port 1 with traffic flow + * Flow should have a packet encap format : outer_decap_gre_ipv6 <- MPLS label <- inner_decap_ipv6 +* Generate traffic from ATE port 1 +* Validate ATE port 2 receives the innermost IPv4 traffic with correct VLAN and inner_decap_ipv6 + +### PF-1.7.2 - MPLS in UDP decapsulation set by gNMI + +Canonical OpenConfig for policy forwarding, matching IP prefix with action +decapsulate MPLS in UDP. + +```json +{ + "openconfig-network-instance": { + "network-instances": [ + { + "afts": { + "policy-forwarding": { + "policies": [ + { + "config": { + "policy-id": "default decap rule", + "type": "PBR_POLICY" + }, + "policy": "default decap rule", + "rules": [ + { + "config": { + "sequence-id": 1, + }, + "ipv6": { + "config": { + "destination-address": "decap_loopback_ipv6" + } + }, + "action": { + "decapsulate-mpls-in-udp": TRUE + } + } + ] + } + ] + } + } + } + ] + } +} +``` +* Push the gNMI the policy forwarding configuration +* Push the configuration to DUT using gnmi.Set with REPLACE option +* Configure ATE port 1 with traffic flow + * Flow should have a packet encap format : outer_decap_udp_ipv6 <- MPLS label <- inner_decap_ipv6 +* Generate traffic from ATE port 1 +* Validate ATE port 2 receives the innermost IPv4 traffic with correct VLAN and inner_decap_ipv6 + +## OpenConfig Path and RPC Coverage + +```yaml +paths: + + # Paths added for PF-1.7.1 - MPLS in GRE decapsulation set by gNMI + /network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/config/destination-address: + # TODO: /network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/config/decapsulate-mpls-in-gre: + + # Paths added for PF-1.7.2 - MPLS in UDP decapsulation set by gNMI + /network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/config/decapsulate-mpls-in-udp: + + +rpcs: + gnmi: + gNMI.Set: + union_replace: true + replace: true + gNMI.Subscribe: + on_change: true + +``` + +## Required DUT platform + +* FFF diff --git a/testregistry.textproto b/testregistry.textproto index 16eac380e5e..82945e26120 100644 --- a/testregistry.textproto +++ b/testregistry.textproto @@ -434,6 +434,12 @@ test: { readme: "" exec: " " } +test: { + id: "PF-1.7" + description: "Decapsulate MPLS in GRE and UDP" + readme: "" + exec: " " +} test: { id: "PLT-1.1" description: "Interface breakout Test" @@ -1829,4 +1835,4 @@ test: { description: "AFT Streaming" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/aft/aft_base/otg_tests/aft_prefixcounters/README.md" exec: " " -} \ No newline at end of file +}