Skip to content

Commit

Permalink
Merge branch 'main' into healthz_cisco
Browse files Browse the repository at this point in the history
  • Loading branch information
dplore authored Oct 16, 2024
2 parents a13c557 + 2d9b0b5 commit a92702e
Show file tree
Hide file tree
Showing 2 changed files with 149 additions and 0 deletions.
145 changes: 145 additions & 0 deletions feature/gribi/otg_tests/mpls_in_udp_scale/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# TE-18.3 MPLS in UDP Encapsulation with QoS Scheduler Scale Test

Building on TE-18.1 and TE-18.2, add scaling parameters

## Topology

* 32 ports as the 'input port set'
* 4 ports as "uplink facing"
* VLAN configurations
* input vlans are distributed evenly across the 'input port set'

## 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 = "5555"
outer_dscp = "26"
outer_ip-ttl = "64"

## Procedure

### TE-18.3.1 Scale

#### Scale targets

* Flow scale
* 20,000 IPv4/IPv6 destinations
* 1,000 vlans
* Inner IP address space should be reused for each network-instance.
* gRIBI client update rate `flow_r` = 1 update per second
* Each gRIBI update include ip entries in batches of `flow_q` = 200
* DUT packet forwarding updated within 1 second after adding entries

* Scheduler (policer) scale
* 1,000 policer rates
* 20,000 policer-policies / token buckets instantiations
* Update policer-policies at 1 per `sched_r` = 60 seconds
* Update policer-policies in a batch of `sched_q` = 1,000
* Policer-policies changes should take effect within `sched_r` / 2 time

#### Scale profile A - many vlans

* 20 ip destinations * 1,000 vlans = 20,000 'flows'
* Each ingress vlan has 20 policer-policies = 10,000 'token buckets'
* The 20 ip destinations are split evenly between the 20 policers
* Each policer is assigned rate limits matching one of 800 different possible limits between 1Gbps to 400Gbps in 0.5Gbps increments

#### Scale profile B - many destinations, few vlans

* 200 ip destinations * 100 vlans = 20,000 'flows'
* Each ingress vlan has 4 policer-policies = 4,000 'token buckets'
* The 200 ip destinations are split evenly between the 4 policers
* Each policer is assigned rate limits matching one of 800 different possible limits between 1Gbps to 400Gbps in 0.5Gbps increments

#### Procedure - Flow Scale

* For each scale profile, create the following subsets TE-18.1.5.n
* Configure ATE flows to send 100 pps per flow and wait for ARP
* Send traffic for q flows (destination IP prefixes) for 2 seconds
* At traffic start time, gRIBI client to send `flow_q` aft entries and their
related NHG and NH at rate `flow_r`
* Validate RIB_AND_FIB_ACK with FIB_PROGRAMMED is received from DUT within
1 second
* Measure packet loss. Target packet loss <= 50%.
* Repeat adding 200 flows until 20,000 flows have been added
* Once reaching 20,000 flows, perform 1 iteration of modifying the first
`flow_q` flows to use different NH,NHG

#### Procedure - Policer + Flow Scale

* For each scale profile, create the following subsets TE-18.1.6.n
* Program all 20,000 flows
* Every `sched_r` interval use gnmi.Set to replace `sched_q` scheduler policies
* Verify packet loss changes for all flows within `sched_r` / 2 time

#### OpenConfig Path and RPC Coverage

```yaml
paths:
# qos scheduler config
/qos/scheduler-policies/scheduler-policy/config/name:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/type:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/cir:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/bc:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/queuing-behavior:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/exceed-action/config/drop:

# qos classifier config
/qos/classifiers/classifier/config/name:
/qos/classifiers/classifier/terms/term/config/id:
#/qos/classifiers/classifier/terms/term/conditions/next-hop-group/config/name: # TODO: new OC leaf to be added

# qos input-policies config - TODO: a new OC subtree (/qos/input-policies)
# /qos/input-policies/input-policy/config/name:
# /qos/input-policies/input-policy/config/classifier:
# /qos/input-policies/input-policy/config/scheduler-policy:

# qos interface config
#/qos/interfaces/interface/subinterface/input/config/policies: # TODO: new OC leaf-list (/qos/interfaces/interface/input/config/policies)

# qos interface scheduler counters
/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/conforming-pkts:
/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/conforming-octets:
/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/exceeding-pkts:
/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/exceeding-octets:

# afts next-hop counters
/network-instances/network-instance/afts/next-hops/next-hop/state/counters/packets-forwarded:
/network-instances/network-instance/afts/next-hops/next-hop/state/counters/octets-forwarded:

# afts state paths set via gRIBI
# TODO: https://github.com/openconfig/public/pull/1153
#/network-instances/network-instance/afts/next-hops/next-hop/mpls-in-udp/state/src-ip:
#/network-instances/network-instance/afts/next-hops/next-hop/mpls-in-udp/state/dst-ip:
#/network-instances/network-instance/afts/next-hops/next-hop/mpls-in-udp/state/ip-ttl:
#/network-instances/network-instance/afts/next-hops/next-hop/mpls-in-udp/state/dst-udp-port:
#/network-instances/network-instance/afts/next-hops/next-hop/mpls-in-udp/state/dscp:

rpcs:
gnmi:
gNMI.Set:
union_replace: true
replace: true
gNMI.Subscribe:
on_change: true
gribi:
gRIBI.Modify:
gRIBI.Flush:
```
## Required DUT platform
* FFF
4 changes: 4 additions & 0 deletions testregistry.textproto
Original file line number Diff line number Diff line change
Expand Up @@ -1035,6 +1035,10 @@ test {
description: "MPLS in UDP Encapsulation with QoS scheduler"
readme: ""
}
test: {
id: "TE-18.3"
readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/gribi/otg_tests/mpls_in_udp_scale/README.md"
}
test: {
id: "TE-2.1"
description: "gRIBI IPv4 Entry"
Expand Down

0 comments on commit a92702e

Please sign in to comment.