[Nvidia] [DualTor] Skip dscp 2 and 6 in test case test_tunnel_decap_dscp_to_queue_mapping#10419
Conversation
For Nvidia platforms, the inner dscp 2 and 6 are considered invalid use cases, skip the test.
|
In current design, DSCP 2/6 is not used at the inner layer in dualtor setup. So the skip makes sense. But can you clarify what's the outer DSCP value for inner DSCP 2/6? And which queue is the traffic mapped to at the active side? |
|
Hi @bingwang-ms, according the mapping configuration, the test will generate outer dscp 0 for inner dscp 2 and 6, and send the encapsulated packets to the uplink port of the active tor. The queue will be checked based on the inner dscp 2 and 6: https://github.com/sonic-net/sonic-mgmt/blob/42d66da79440cfb8db0d12576921b77fdabacfb4/tests/qos/test_tunnel_qos_remap.py#L236C47-L236C89 |
|
Hi @congh-nvidia . Thanks for the clarification. Please correct me if I missed anything
So the expectation should be the traffic with Inner DSCP 2/6 being mapped to Queue 0 at the active side. Is there something wrong with the expectation? |
|
Hi @bingwang-ms , my former explanation is a little confusing, please see my reply below:
Packet with Inner DSCP 2/6 will be encapsulated with outer DSCP 0 following DSCP_TO_TC_MAP (DSCP 2/6 -> TC 1) and TC_TO_DSCP_MAP (TC 1 -> DSCP 0) [CH] On Nvidia platform, firstly this is considered as invalid use case. And if the switch receives packets with inner dscp 2/6, they will be mapped to outer dscp 2 and 6 during the encap on standby tor.
Packet with Inner DSCP 2/6 and outer DSCP 0 are being decapsulated and then mapped to TC 1 (following DSCP_TO_TC_MAP|AZRE_TUNNEL) and then mapped to Queue 0 (following TC_TO_QUEUE_MAP). [CH] In the test, the packet is crafted as 0/2 and 0/6, and it is expected to map it to TC after the decapsulation based on the inner dscp. However, on Nvidia platforms, the expected outer dscp for inner dscp 2/6 are also 2/6, and we do the dscp to TC mapping based on the outer dscp instead of inner dscp. Which means, in the test, because the inner dscps are 2 and 6, according to the logic for Nvidia platforms (added by me in PR #8317, added the tunnel_qos_map_nvidia.json for Nvidia platforms), it will use TC 2 and 6 to map the queues, not TC1. (Without PR #8317, TC1 will be used) In summary, the difference of the mapping configuration and the fact that we do the decap mapping based on outer dscp instead of inner dscp cause the unexpected results in inner dscp 2 and 6. For other dscps, PR#8317 makes sure we get the correct expectations. @stephenxs please point out if there are any mistakes in my explanation, thanks. |
|
@congh-nvidia Thanks! I see the gap here. The On Mellanox Other vendor @stephenxs Do you still remember why we mapped TC 2 to DSCP 2, and TC 6 to DSCP 6? |
|
Hi @stephenxs, could you help answer Bing's question? |
Yes. |
…nic-net#10419) For Nvidia platforms, the inner dscp 2 and 6 are considered invalid use cases, skip the test.
…nic-net#10419) For Nvidia platforms, the inner dscp 2 and 6 are considered invalid use cases, skip the test.
…nic-net#10419) For Nvidia platforms, the inner dscp 2 and 6 are considered invalid use cases, skip the test.
|
Cherry-pick PR to 202311: #11301 |
|
Cherry-pick PR to 202205: #11302 |
|
Cherry-pick PR to 202305: #11303 |
…0419) For Nvidia platforms, the inner dscp 2 and 6 are considered invalid use cases, skip the test.
…0419) For Nvidia platforms, the inner dscp 2 and 6 are considered invalid use cases, skip the test.
…0419) For Nvidia platforms, the inner dscp 2 and 6 are considered invalid use cases, skip the test.
Description of PR
Summary:
For Nvidia platforms, the inner dscp 2 and 6 are considered invalid use cases, skip the test.
The dscp 2 and 6 are reserved only for the outer dscp after the remapping and encapsulation.
We have another similar issue fixed by PR #9625.
Type of change
Back port request
Approach
What is the motivation for this PR?
Fix the test failure of test_tunnel_decap_dscp_to_queue_mapping on Nvidia platforms.
How did you do it?
Skip the test for dscp 2 and 6
How did you verify/test it?
Run the test case on 4600c dualtor testbed, passed
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation