Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DSCP Transparency with ECN #3707

Merged
merged 1 commit into from
Jan 23, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading