FD.io VPP
v17.04.2-2-ga8f93f8
Vector Packet Processing
|
pcap tx trace [on|off] [max <nn>] [intfc <interface>|any] [file <name>] [status].
This command is used to start or stop a packet capture, or show the status of packet capture.
This command has the following optional parameters:
vpp# pcap tx trace status
max is 100, for any interface to file /tmp/vpe.pcap
pcap tx capture is off...
Example of how to start a tx packet capture: vpp# pcap tx trace on max 35 intfc GigabitEthernet0/8/0 file vppTest.pcap
pcap tx capture on...
Example of how to display the status of a tx packet capture in progress: vpp# pcap tx trace status
max is 35, for interface GigabitEthernet0/8/0 to file /tmp/vppTest.pcap
pcap tx capture is on: 20 of 35 pkts...
Example of how to stop a tx packet capture: vpp# vppctl pcap tx trace off
captured 21 pkts...
saved to /tmp/vppTest.pcap...
Declaration: pcap_trace_command (src/plugins/dpdk/device/cli.c line 332)
Implementation: pcap_trace_command_fn.
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 559)
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 1001)
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 classifiying 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 1475)
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 915)
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 1139)
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 1256)
Implementation: set_dpdk_if_hqos_tctbl.
set dpdk interface placement <interface> [queue <n>] thread <n>.
This command is used to assign a given interface, and optionally a given 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. If the 'queue' is not provided, it defaults to 0.
vpp# show dpdk interface placement
Thread 1 (vpp_wk_0 at lcore 1):
GigabitEthernet0/8/0 queue 0
GigabitEthernet0/9/0 queue 0
Thread 2 (vpp_wk_1 at lcore 2):
GigabitEthernet0/8/0 queue 1
GigabitEthernet0/9/0 queue 1
Example of how to assign a DPDK interface and queue to a thread: vpp# set dpdk interface placement GigabitEthernet0/8/0 queue 1 thread 1
Declaration: cmd_set_dpdk_if_placement (src/plugins/dpdk/device/cli.c line 758)
Implementation: set_dpdk_if_placement.
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_bufferr (src/plugins/dpdk/device/cli.c line 379)
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 2027)
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 1871)
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 810)
Implementation: show_dpdk_if_hqos_placement.
show dpdk interface placement.
This command is used to display the thread and core each DPDK interface and queue is assigned too.
vpp# show dpdk interface placement
Thread 1 (vpp_wk_0 at lcore 1):
GigabitEthernet0/8/0 queue 0
GigabitEthernet0/9/0 queue 0
Thread 2 (vpp_wk_1 at lcore 2):
GigabitEthernet0/8/0 queue 1
GigabitEthernet0/9/0 queue 1
Declaration: cmd_show_dpdk_if_placement (src/plugins/dpdk/device/cli.c line 614)
Implementation: show_dpdk_if_placement.
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 2058)
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 allcoated:
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 467)
Implementation: test_dpdk_buffer.