FD.io VPP
v19.04.4-rc0-5-ge88582fac
Vector Packet Processing
|
set dpdk interface descriptors <interface> [rx <nn>] [tx <nn>].
This command sets the number of DPDK 'rx' and 'tx' descriptors for the given physical interface. Use the command 'show hardware-interface' to display the current descriptor allocation.
vpp# set dpdk interface descriptors GigabitEthernet0/8/0 rx 512 tx 512
Declaration: cmd_set_dpdk_if_desc (src/plugins/dpdk/device/cli.c line 404)
Implementation: set_dpdk_if_desc.
set dpdk interface hqos pipe <interface> subport <subport_id> pipe <pipe_id> profile <profile_id>.
This command is used to change the profile associate with a HQoS pipe. The '<profile_id>' is zero based. Use the command 'show dpdk interface hqos' to display the content of each profile. See QoS Hierarchical Scheduler for more details.
vpp# set dpdk interface hqos pipe GigabitEthernet0/8/0 subport 0 pipe 2 profile 1
Declaration: cmd_set_dpdk_if_hqos_pipe (src/plugins/dpdk/device/cli.c line 667)
Implementation: set_dpdk_if_hqos_pipe.
set dpdk interface hqos pktfield <interface> id subport|pipe|tc offset <n> mask <hex-mask>.
This command is used to set the packet fields required for classifying the incoming packet. As a result of classification process, packet field information will be mapped to 5 tuples (subport, pipe, traffic class, pipe, color) and stored in packet mbuf.
This command has the following parameters:
The default values for the 'pktfield' assumes Ethernet/IPv4/UDP packets with no VLAN. Adjust based on expected packet format and desired classification field.
vpp# set dpdk interface hqos pktfield GigabitEthernet0/8/0 id pipe offset 8 mask 0000000000000FFF
Declaration: cmd_set_dpdk_if_hqos_pktfield (src/plugins/dpdk/device/cli.c line 1145)
Implementation: set_dpdk_if_hqos_pktfield.
set dpdk interface hqos placement <interface> thread <n>.
This command is used to assign a given DPDK output interface and HQoS queue to a different thread. This will not create a thread, so the thread must already exist. Use '/etc/vpp/startup.conf' for the initial thread creation. See QoS Hierarchical Scheduler for more details.
vpp# show dpdk interface hqos placement
Thread 1 (vpp_hqos-threads_0 at lcore 3):
GigabitEthernet0/8/0 queue 0
Thread 2 (vpp_hqos-threads_1 at lcore 4):
GigabitEthernet0/9/0 queue 0
Example of how to assign a DPDK output interface and HQoS queue to a thread: vpp# set dpdk interface hqos placement GigabitEthernet0/8/0 thread 2
Declaration: cmd_set_dpdk_if_hqos_placement (src/plugins/dpdk/device/cli.c line 581)
Implementation: set_dpdk_if_hqos_placement.
set dpdk interface hqos subport <interface> subport <subport_id> [rate <n>] [bktsize <n>] [tc0 <n>] [tc1 <n>] [tc2 <n>] [tc3 <n>] [period <n>].
This command is used to set the subport level parameters such as token bucket rate (bytes per seconds), token bucket size (bytes), traffic class rates (bytes per seconds) and token update period (Milliseconds).
By default, the 'rate' is set to 1250000000 bytes/second (10GbE rate) and each of the four traffic classes is set to 100% of the port rate. If the 'rate' is updated by this command, all four traffic classes are assigned the same value. Each of the four traffic classes can be updated individually.
vpp# set dpdk interface hqos subport GigabitEthernet0/8/0 subport 0 rate 125000000
Declaration: cmd_set_dpdk_if_hqos_subport (src/plugins/dpdk/device/cli.c line 805)
Implementation: set_dpdk_if_hqos_subport.
set dpdk interface hqos tctbl <interface> entry <map_val> tc <tc_id> queue <queue_id>.
This command is used to set the traffic class translation table. The traffic class translation table is used to map 64 values (0-63) to one of four traffic class and one of four HQoS input queue. Use the 'show dpdk interface hqos' command to display the traffic class translation table. See QoS Hierarchical Scheduler for more details.
This command has the following parameters:
vpp# set dpdk interface hqos tctbl GigabitEthernet0/8/0 entry 16 tc 2 queue 2
Declaration: cmd_set_dpdk_if_hqos_tctbl (src/plugins/dpdk/device/cli.c line 922)
Implementation: set_dpdk_if_hqos_tctbl.
show dpdk buffer.
This command displays statistics of each DPDK mempool.
vpp# show dpdk buffer
name="mbuf_pool_socket0" available = 15104 allocated = 1280 total = 16384
Declaration: cmd_show_dpdk_buffer (src/plugins/dpdk/device/cli.c line 136)
Implementation: show_dpdk_buffer.
show dpdk hqos queue <interface> subport <subport_id> pipe <pipe_id> tc <tc_id> tc_q <queue_id>.
This command is used to display statistics associated with a HQoS traffic class queue.
vpp# show dpdk hqos queue GigabitEthernet0/9/0 subport 0 pipe 3181 tc 0 tc_q 0
Stats Parameter Value
Packets 140
Packets dropped 0
Bytes 8400
Bytes dropped 0
Declaration: cmd_show_dpdk_hqos_queue_stats (src/plugins/dpdk/device/cli.c line 1701)
Implementation: show_dpdk_hqos_queue_stats.
show dpdk interface hqos <interface>.
This command is used to display details of an output interface's HQoS settings.
vpp# show dpdk interface hqos GigabitEthernet0/8/0
Thread:
Input SWQ size = 4096 packets
Enqueue burst size = 256 packets
Dequeue burst size = 220 packets
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
Frame overhead = 24 bytes
Number of subports = 1
Number of pipes per subport = 4096
Packet queue size: TC0 = 64, TC1 = 64, TC2 = 64, TC3 = 64 packets
Number of pipe profiles = 2
Subport 0:
Rate = 1250000000 bytes/second
Token bucket size = 1000000 bytes
Traffic class rate: TC0 = 1250000000, TC1 = 1250000000, TC2 = 1250000000, TC3 = 1250000000 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
TC period = 40 milliseconds
TC0 WRR weights: Q0 = 1, Q1 = 1, Q2 = 1, Q3 = 1
TC1 WRR weights: Q0 = 1, Q1 = 1, Q2 = 1, Q3 = 1
TC2 WRR weights: Q0 = 1, Q1 = 1, Q2 = 1, Q3 = 1
TC3 WRR weights: Q0 = 1, Q1 = 1, Q2 = 1, Q3 = 1
Declaration: cmd_show_dpdk_if_hqos (src/plugins/dpdk/device/cli.c line 1545)
Implementation: show_dpdk_if_hqos.
show dpdk interface hqos placement.
This command is used to display the thread and core each DPDK output interface and HQoS queue is assigned too.
vpp# show dpdk interface hqos placement
Thread 1 (vpp_hqos-threads_0 at lcore 3):
GigabitEthernet0/8/0 queue 0
Thread 2 (vpp_hqos-threads_1 at lcore 4):
GigabitEthernet0/9/0 queue 0
Declaration: cmd_show_dpdk_if_hqos_placement (src/plugins/dpdk/device/cli.c line 476)
Implementation: show_dpdk_if_hqos_placement.
show dpdk physmem.
This command displays DPDK physmem layout
vpp# show dpdk physmem
Declaration: cmd_show_dpdk_physmem (src/plugins/dpdk/device/cli.c line 221)
Implementation: show_dpdk_physmem.
show dpdk version.
This command is used to display the current DPDK version and the list of arguments passed to DPDK when started.
vpp# show dpdk version
DPDK Version: DPDK 16.11.0
DPDK EAL init args: -c 1 -n 4 --huge-dir /run/vpp/hugepages --file-prefix vpp -w 0000:00:08.0 -w 0000:00:09.0 --master-lcore 0 --socket-mem 256
Declaration: show_vpe_version_command (src/plugins/dpdk/device/cli.c line 1733)
Implementation: show_dpdk_version_command_fn.
test dpdk buffer [allocate <nn>] [free <nn>].
This command tests the allocation and freeing of DPDK buffers. If both 'allocate' and 'free' are entered on the same command, the 'free' is executed first. If no parameters are provided, this command display how many DPDK buffers the test command has allocated.
Example of how to display how many DPDK buffer test command has allocated:
vpp# test dpdk buffer
Currently 0 buffers allocated
Example of how to allocate DPDK buffers using the test command:
vpp# test dpdk buffer allocate 10
Currently 10 buffers allocated
Example of how to free DPDK buffers allocated by the test command:
vpp# test dpdk buffer free 10
Currently 0 buffers allocated
Declaration: cmd_test_dpdk_buffer (src/plugins/dpdk/device/cli.c line 309)
Implementation: test_dpdk_buffer.