aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/devices/dpdk/qos_doc.md
diff options
context:
space:
mode:
authorBilly McFall <bmcfall@redhat.com>2017-02-22 14:13:42 -0500
committerDamjan Marion <dmarion.lists@gmail.com>2017-02-24 09:21:31 +0000
commit04197eea69c77a0145dc54d56fc767a03897c90e (patch)
treef45004fe682e7029d7d0009c242b71750b31f206 /src/vnet/devices/dpdk/qos_doc.md
parent4a3f69c17f26e9790db26d0910befe36b5e9f85f (diff)
VPP-279: Document changes for vnet/vnet/devices
Add doxygen documentation for dpdk CLI commands. Outside of adding documentation to the CLI Commands, modified the CLI code as follows: * The "set dpdk interface placement" command allows the user to move interface/queues to a different thread. But there is only a subset of threads that are valid. Updated the "show dpdk interface placement" command to display all valid threads, even if all interface/queues have been moved off. Updated the "show dpdk interface hqos placement" the same way. * There is a command to modify the Subport attributes, but no way to display the changes. Added a "Subport" section to the "show dpdk interface hqos" command. * Reworked the "set dpdk interface hqos subport" command. - The current implementation had a local rte_sched_subport_params structure and initialized it to default values, then overwrote with what was input. The side effect of this is that if all the current data is non-default, and a new command is entered with just one attribute, all the remaining attrbutes are getting set back to default under the cover. Very confusing for the user. Updated the code to read the current value and overwrite what has changed. - DPDK does not have a read subport data, so no way query the current applied values. The set command was not updating the local copy that is created at init. Modified the code to store the updated values if the DPDK apply function was successful. - Several functions repeated the same code to get a pointer to the local HQoS data. Added a utility function.get_hqos(..), to perform this action. Did not port other code to use new function. * The "set dpdk interface hqos pktfield" allows the user to set the packet fields required for classifiying the incoming packet. The classification is across three fields (subport, pipe, tc). The command was using 0,1,2 to represent these three fields, but had no explanation regarding these magic numbers. Updated the command to take the three tokens (subport, pipe, tc) for more clarity. For legacy sake, still allow 0,1,2 to be entered. Also updated the "show dpdk interface hqos" command to show these tokens. * The "set dpdk interface hqos tctbl" maps an interface and value 0-63 to a traffic class and queue. The "show dpdk interface hqos" command showed the internal DPDK magic number for traffic class and queue. Updated the show command to display what was input instead of the magic number. * The "show dpdk hqos queue" command always returns zeros by default because RTE_SCHED_COLLECT_STATS is not defined in DPDK. Took me a while to figure out why I wasn't getting values returned. So returned an error message if RTE_SCHED_COLLECT_STATS is not defined instead of zeros. Change-Id: I22b640d668245839ee977ef3602175c61d91d24c Signed-off-by: Billy McFall <bmcfall@redhat.com>
Diffstat (limited to 'src/vnet/devices/dpdk/qos_doc.md')
-rw-r--r--src/vnet/devices/dpdk/qos_doc.md39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/vnet/devices/dpdk/qos_doc.md b/src/vnet/devices/dpdk/qos_doc.md
index 9bd0659d616..7c064246e60 100644
--- a/src/vnet/devices/dpdk/qos_doc.md
+++ b/src/vnet/devices/dpdk/qos_doc.md
@@ -195,21 +195,22 @@ token bucket rate (bytes per seconds), token bucket size (bytes), traffic
class rates (bytes per seconds) and token update period (Milliseconds).
```
-set dpdk interface hqos subport <if-name> subport <n> [rate <n>]
+set dpdk interface hqos subport <interface> subport <subport_id> [rate <n>]
[bktsize <n>] [tc0 <n>] [tc1 <n>] [tc2 <n>] [tc3 <n>] [period <n>]
```
For setting the pipe profile, following command can be used.
```
-set dpdk interface hqos pipe <if-name> subport <n> pipe <n> profile <n>
+set dpdk interface hqos pipe <interface> subport <subport_id> pipe <pipe_id>
+ profile <profile_id>
```
To assign QoS scheduler instance to the specific thread, following command can
be used.
```
-set dpdk interface hqos placement <if-name> thread <n>
+set dpdk interface hqos placement <interface> thread <n>
```
The command below is used to set the packet fields required for classifiying
@@ -218,13 +219,14 @@ information will be mapped to 5 tuples (subport, pipe, traffic class, pipe,
color) and stored in packet mbuf.
```
-set dpdk interface hqos pktfield <if-name> id <n> offset <n> mask <n>
+set dpdk interface hqos pktfield <interface> id subport|pipe|tc offset <n>
+ mask <hex-mask>
```
The DSCP table entries used for idenfiying the traffic class and queue can be set using the command below;
```
-set dpdk interface hqos tctbl <if-name> entry <n> tc <n> queue <n>
+set dpdk interface hqos tctbl <interface> entry <map_val> tc <tc_id> queue <queue_id>
```
@@ -238,14 +240,14 @@ The QoS Scheduler configuration can displayed using the command below.
Input SWQ size = 4096 packets
Enqueue burst size = 256 packets
Dequeue burst size = 220 packets
- Packet field 0: slab position = 0, slab bitmask = 0x0000000000000000
- Packet field 1: slab position = 40, slab bitmask = 0x0000000fff000000
- Packet field 2: slab position = 8, slab bitmask = 0x00000000000000fc
- Packet field 2 translation table:
- [ 0 .. 15]: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- [16 .. 31]: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- [32 .. 47]: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- [48 .. 63]: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ Packet field 0: slab position = 0, slab bitmask = 0x0000000000000000 (subport)
+ Packet field 1: slab position = 40, slab bitmask = 0x0000000fff000000 (pipe)
+ Packet field 2: slab position = 8, slab bitmask = 0x00000000000000fc (tc)
+ Packet field 2 tc translation table: ([Mapped Value Range]: tc/queue tc/queue ...)
+ [ 0 .. 15]: 0/0 0/1 0/2 0/3 1/0 1/1 1/2 1/3 2/0 2/1 2/2 2/3 3/0 3/1 3/2 3/3
+ [16 .. 31]: 0/0 0/1 0/2 0/3 1/0 1/1 1/2 1/3 2/0 2/1 2/2 2/3 3/0 3/1 3/2 3/3
+ [32 .. 47]: 0/0 0/1 0/2 0/3 1/0 1/1 1/2 1/3 2/0 2/1 2/2 2/3 3/0 3/1 3/2 3/3
+ [48 .. 63]: 0/0 0/1 0/2 0/3 1/0 1/1 1/2 1/3 2/0 2/1 2/2 2/3 3/0 3/1 3/2 3/3
Port:
Rate = 1250000000 bytes/second
MTU = 1514 bytes
@@ -254,7 +256,12 @@ The QoS Scheduler configuration can displayed using the command below.
Number of pipes per subport = 4096
Packet queue size: TC0 = 64, TC1 = 64, TC2 = 64, TC3 = 64 packets
Number of pipe profiles = 1
- Pipe profile 0:
+ Subport 0:
+ Rate = 120000000 bytes/second
+ Token bucket size = 1000000 bytes
+ Traffic class rate: TC0 = 120000000, TC1 = 120000000, TC2 = 120000000, TC3 = 120000000 bytes/second
+ TC period = 10 milliseconds
+ Pipe profile 0:
Rate = 305175 bytes/second
Token bucket size = 1000000 bytes
Traffic class rate: TC0 = 305175, TC1 = 305175, TC2 = 305175, TC3 = 305175 bytes/second
@@ -270,9 +277,9 @@ below command.
```
vpp# show dpdk interface hqos placement
- Thread 5 (vpp_hqos-threads_0 at lcore 5):
+ Thread 5 (vpp_hqos-threads_0 at lcore 5):
TenGigabitEthernet2/0/0 queue 0
- Thread 6 (vpp_hqos-threads_1 at lcore 6):
+ Thread 6 (vpp_hqos-threads_1 at lcore 6):
TenGigabitEthernet4/0/1 queue 0
```