Skip to content

Commit

Permalink
DSCP Transparency with ECN (openconfig#3707)
Browse files Browse the repository at this point in the history
"This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind."
  • Loading branch information
dipchauh authored Jan 23, 2025
1 parent 3947e68 commit 0b5b11e
Show file tree
Hide file tree
Showing 4 changed files with 941 additions and 50 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@

# DP-1.14: DSCP transperency with ECN
# DP-1.17: DSCP Transparency with ECN

## Summary

Expand Down Expand Up @@ -28,10 +27,10 @@ This test evaluates if all 64 combination of DSCP bits are transparently handled
* 7 queues and 7 corresponding forwarding group
* Scheduler policy with
* one scheduler of STRICT priority type serving NC1 queue
* one scheduler of WRR type serving 6 queues AF4, AF3, AF2, AF1, BE0, BE1 with equal weights 10:10:10:10:10:10 respectivly
* one scheduler of WRR type serving 6 queues AF4, AF3, AF2, AF1, BE0, BE1 with equal weights 10:10:10:10:10:10 respectively
* queue-management profile of WRED type with:
* min-treshold: 80KB
* max-treshold: 3MB
* min-threshold: 80KB
* max-threshold: 3MB
* max-drop-percentage: 100
* ecn: enabled
* attach queue-management profile to queues NC1, AF4, AF3, AF2, AF1, BE0, BE1;
Expand All @@ -48,8 +47,9 @@ This test evaluates if all 64 combination of DSCP bits are transparently handled
* Verify using DUTPort3 telemetry that:
* no drops are seen in any of queues on DUTPort3
* all queues reports non-zero transmit packets, octets.
* Verify on ATEPort3 that all flows are recived w/o DSCP modification -all 64 values are observed
* verify on ATEPort3 that all recived packet has ECT(0) ECN value
* Verify on ATEPort3 that all flows are received w/o DSCP modification -all 64 values are observed
* verify on ATEPort3 that all received packet has ECT(0) ECN value

### Sub Test #2 - Congestion
* Generate 64 flows of traffic form ATEPort1 and 64 flows of traffic form ATEPort2 toward ATEPort3
* each flow form ATEPort1 has distinct DSCP value
Expand All @@ -64,10 +64,11 @@ This test evaluates if all 64 combination of DSCP bits are transparently handled
* Verify using DUTPort3 telemetry that:
* Drops are seen in all queues except NC1 on DUTPort3
* all queues reports non-zero transmit packets, octets.
* Verify on ATEPort3 that all flows are recived w/o DSCP modification - all 64 values are observed
* Verify on ATEPort3 that all flows are received w/o DSCP modification - all 64 values are observed
* verify on ATEPort3 that:
* all recived packets with DSCP 48-63 has ECT(0) value
* all received packets with DSCP 48-63 has ECT(0) value
* vast majority (almost all) packets with DSCP 0-47 has CE ECN value.

### Sub Test #3 - NC1 congestion
* Generate 16 flows of traffic form ATEPort1 and 16 flows of traffic form ATEPort2 toward ATEPort3
* each flow form ATEPort1 has distinct DSCP value from 48-63 range
Expand All @@ -81,47 +82,53 @@ This test evaluates if all 64 combination of DSCP bits are transparently handled
* wait 1 minutes; stop traffic generation.
* Verify using DUTPort3 telemetry that:
* Drops are seen in NC1 queue on DUTPort3
* all queues but NC1 reports nzero transmit packets, octets.
* all queues but NC1 reports zero transmit packets, octets.
* NC1 queue reports non-zero transmit packets, octets.
* Verify on ATEPort3 that all flows are recived w/o DSCP modification - all 16 values are observed.
* Verify on ATEPort3 that all flows are received w/o DSCP modification - all 16 values are observed.
* verify on ATEPort3 that:
* all recived packets with DSCP has CE value

## Config Parameter Coverage

* qos/classifiers/classifier/terms/term/conditions/ipv4/config/dscp-set
* qos/classifiers/classifier/terms/term/conditions/ipv6/config/dscp-set
* qos/classifiers/classifier/terms/term/actions/config/target-group
* qos/queues/queue/config/name
* qos/forwarding-groups/forwarding-group/config/name
* qos/forwarding-groups/forwarding-group/config/output-queue
* qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/priority
* qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/sequence
* qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/id
* qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/input-type
* qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/queue
* qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/weight
* qos/queue-management-profiles/queue-management-profile/wred/uniform/config/enable-ecn
* qos/queue-management-profiles/queue-management-profile/wred/uniform/config/max-drop-probability-percent
* qos/queue-management-profiles/queue-management-profile/wred/uniform/config/max-threshold
* qos/queue-management-profiles/queue-management-profile/wred/uniform/config/min-threshold
* qos/interfaces/interface/output/queues/queue/config/name
* qos/interfaces/interface/output/queues/queue/config/queue-management-profile
* qos/interfaces/interface/output/scheduler-policy/config/name
* qos/interfaces/interface/input/classifiers/classifier/config/name
* qos/interfaces/interface/input/classifiers/classifier/config/type

## Telemetry Parameter Coverage

* qos/interfaces/interface/output/queues/queue/state/dropped-octets
* qos/interfaces/interface/output/queues/queue/state/dropped-pkts
* qos/interfaces/interface/output/queues/queue/state/name
* qos/interfaces/interface/output/queues/queue/state/transmit-octets
* qos/interfaces/interface/output/queues/queue/state/transmit-pkts

## Protocol/RPC Parameter Coverage

* NONE.
* all received packets with DSCP has CE value

## OpenConfig Path and RPC Coverage

The below yaml defines the OC paths intended to be covered by this test. OC paths used for test setup are not listed here.

```yaml
paths:
## Config Paths ##
/qos/classifiers/classifier/terms/term/conditions/ipv4/config/dscp-set:
/qos/classifiers/classifier/terms/term/conditions/ipv6/config/dscp-set:
/qos/classifiers/classifier/terms/term/actions/config/target-group:
/qos/queues/queue/config/name:
/qos/forwarding-groups/forwarding-group/config/name:
/qos/forwarding-groups/forwarding-group/config/output-queue:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/priority:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/sequence:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/id:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/input-type:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/queue:
/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/weight:
/qos/queue-management-profiles/queue-management-profile/wred/uniform/config/enable-ecn:
/qos/queue-management-profiles/queue-management-profile/wred/uniform/config/max-drop-probability-percent:
/qos/queue-management-profiles/queue-management-profile/wred/uniform/config/max-threshold:
/qos/queue-management-profiles/queue-management-profile/wred/uniform/config/min-threshold:
/qos/interfaces/interface/output/queues/queue/config/name:
/qos/interfaces/interface/output/queues/queue/config/queue-management-profile:
/qos/interfaces/interface/output/scheduler-policy/config/name:
/qos/interfaces/interface/input/classifiers/classifier/config/name:
/qos/interfaces/interface/input/classifiers/classifier/config/type:

## State Paths ##
/qos/interfaces/interface/output/queues/queue/state/dropped-octets:
/qos/interfaces/interface/output/queues/queue/state/dropped-pkts:
/qos/interfaces/interface/output/queues/queue/state/name:
/qos/interfaces/interface/output/queues/queue/state/transmit-octets:
/qos/interfaces/interface/output/queues/queue/state/transmit-pkts:

rpcs:
gnmi:
gNMI.Set:
gNMI.Subscribe:
```
## Required DUT platform
Expand Down
Loading

0 comments on commit 0b5b11e

Please sign in to comment.