/
Traffic Control

Traffic Control

The default, upstream DPAA kernel driver provides hardware offloading of packets prioritization. The driver’s documentation gives only a single paragraph regarding this feature:

The driver has support for multiple prioritized Tx traffic classes. Priorities range from 0 (lowest) to 3 (highest). These are mapped to HW workqueues with strict priority levels. Each traffic class contains NR_CPU TX queues. By default, only one traffic class is enabled and the lowest priority Tx queues are used. Higher priority traffic classes can be enabled with the mqprio qdisc. For example, all four traffic classes are enabled on an interface with the following command. Furthermore, skb priority levels are mapped to traffic classes as follows:

  • priorities 0 to 3 - traffic class 0 (low priority)

  • priorities 4 to 7 - traffic class 1 (medium-low priority)

  • priorities 8 to 11 - traffic class 2 (medium-high priority)

  • priorities 12 to 15 - traffic class 3 (high priority)

tc qdisc add dev <int> root handle 1: \ mqprio num_tc 4 map 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 hw 1

This section aims to elaborate on this topic by providing:

  • a detailed description of how the tc command can be used, what configuration exactly does it result in, how to control and debug it and how it relates to the DPAA architectural details,

  • practical examples of using this feature with Linux’ cgroups and iptables,

  • results of the experiments showcasing WHLE’s behavior in different traffic prioritization scenarios which should help evaluate the usefulness of this feature in specific cases.

Related content

Traffic Control with tc
Traffic Control with tc
More like this
Frame Queues
Frame Queues
More like this
Ssh Prioritization (iptables)
Ssh Prioritization (iptables)
More like this
Direct Connection (cgroups)
Direct Connection (cgroups)
More like this
DPDK
More like this
Kernel DPAA drivers
Kernel DPAA drivers
More like this