How does the switch forward packets sharing the same traffic class value?


In RoCEv2, NICs and switches support classifying traffics according to their DSCP value in IP header.

Then traffics can be enqueued into different hardware traffic classes(actually hardware queue).

The DSCP-to-TrafficClass mapping rule is as following:

  • DSCP values are mapped to priorities
  • Priorities are mapped to Traffic Class (tc)

So there are multiple DSCP values that are mapped into the same hardware queue.

So what will switch process these traffics enqueued into the same hardware queue? FIFO or small DSCP first?

I have looked through the official docs such as MLNX_OFED_Linux_User_Manual and MLNX_OS_Ethernet_User_Manual, but haven’t found any detailed content.

Can someone help me?


The switch by default map according to vlan priority. If traffic received with the same vlan priority it will all be mapped to single egress queue and will be handle as fifo.

If they want to map according to dscp they need to change the trust mode on the ingress ports to L3. With this mode there is default mapping of dscp to switch priority SP ,where dscp 0-7 are mapped to SP0 which is mapped to traffic class 0 , 8-15 mapped to tc1 and so forth .

You can see the mapping and trust mode with show qos interface eth command and you can also modify it with interface eth qos … commands.

Thank you very much!