qos_basic_test - bstoll/featureprofiles GitHub Wiki

DP-1.14: QoS basic test

Summary

Verify that DUT supports QoS config and forward QoS traffic correctly.

QoS traffic test setup:

  • Topology:

    • 2 input interfaces and 1 output interface with the same port speed. The interface can be a physical interface or LACP bundle interface with the same aggregated speed.
      ATE port 1
          |
         DUT--------ATE port 3
          |
      ATE port 2
    
  • Traffic classes:

    • We will use 7 traffic classes NC1, AF4, AF3, AF2, AF1, BE0 and BE1.
  • Traffic types:

    • All the traffic tests apply to both IPv4 and IPv6 traffic.
  • Queue types:

    • NC1 will have strict priority queues
      • AF4/AF3/AF2/AF1/BE1/BE0 will use WRR queues.
    • NC1 and AF4 will have strict priority queues with NC1 having higher priority.
      • AF3, AF2, AF1, BE1 and BE0 will use WRR queues.
  • Test results should be independent of the location of interfaces. For example, 2 input interfaces and output interface could be located on

    • Same ASIC-based forwarding engine
    • Different ASIC-based forwarding engine on same line card
    • Different ASIC-based forwarding engine on different line cards
  • Test results should be the same for port speeds 100G and 400G.

Procedure

  • Connect DUT port-1 to ATE port-1, DUT port-2 to ATE port-2 and DUT port-3 to ATE port-3.

  • Configuration:

    • Configure strict priority queues for NC1.
    • Configure WRR for AF4, AF3, AF2, AF1, BE0 and BE1 with weight 48, 12, 8, 4, 1 and 1 respectively.
  • Counters should be verified for each test case:

    • /qos/interfaces/interface/output/queues/queue/state/transmit-pkts
    • /qos/interfaces/interface/output/queues/queue/state/dropped-pkts
    • transmit-pkts should be equal to the number of Rx pkts on Ixia port
    • dropped-pkts should be equal to diff between the number of Tx and the number Rx pkts on Ixia ports
  • Latency:

    • Should be < 100000ns
  • Non-oversubscription traffic test case 1 with 80% of aggregated linerate

    Traffic class Interface1(line rate %) Interface2(line rate %) Rx from interface1(%) Rx from interface2(%)
    NC1 3 3 100 100
    Af4 24 24 100 100
    AF3 6 6 100 100
    AF2 4 4 100 100
    AF1 2 2 100 100
    BE0 0.5 0.5 100 100
    BE1 0.5 0.5 100 100
  • Non-oversubscription traffic test case 2 with 98% of aggregated linerate

    Traffic class Interface1(line rate %) Interface2(line rate %) Rx from interface1(%) Rx from interface2(%)
    NC1 5 4 100 100
    Af4 30 30 100 100
    AF3 7.5 7.5 100 100
    AF2 4 4 100 100
    AF1 2 2 100 100
    BE0 0.5 0.5 100 100
    BE1 0.5 0.5 100 100
  • Verify that there is no traffic loss

DP-1.14.1

  • Initiate traffic

  • Counters should be verified using gNMI subscribe with sample mode

    • Run the test twice, once with a SAMPLE interval of 10 Seconds and once again with a SAMPLE interval of 15 seconds for the below telemetry paths

      • /qos/interfaces/interface/output/queues/queue/state/transmit-pkts
      • /qos/interfaces/interface/output/queues/queue/state/transmit-octets
      • /qos/interfaces/interface/output/queues/queue/state/dropped-pkts
      • /qos/interfaces/interface/output/queues/queue/state/dropped-octets
  • Ensure counter of all queues increment at the selected SAMPLE interval

Config parameter coverage

  • Classifiers

    • /qos/classifiers/classifier/config/name
    • /qos/classifiers/classifier/config/type
    • /qos/classifiers/classifier/terms/term/actions/config/target-group
    • /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/config/id
  • Forwarding Groups

    • /qos/forwarding-groups/forwarding-group/config/name
    • /qos/forwarding-groups/forwarding-group/config/output-queue
  • Queue

    • /qos/queues/queue/config/name
  • Interfaces

    • /qos/interfaces/interface/input/classifiers/classifier/config/name
    • /qos/interfaces/interface/output/queues/queue/config/name
    • /qos/interfaces/interface/output/scheduler-policy/config/name
  • Scheduler policy

    • /qos/scheduler-policies/scheduler-policy/config/name
    • /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/config/type
    • /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

Telemetry parameter coverage

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

Protocol/RPC Parameter Coverage

  • gNMI
    • Get
    • Subscribe

Required DUT platform

  • FFF
⚠️ **GitHub.com Fallback** ⚠️