The VPP network stack comes equipped with a set of commands that are useful for debugging.
The easiest way to access the CLI (with proper permissions) is to use the vppctl command:
1 sudo vppctl <cli-command>
The CLI parser matches static keyword strings, eventually invoking an action function. Unambiguous partial keyword matching always occurs. The action functions consume input until satisfied or until they fail. This model makes for easy coding, but does not guarantee useful "help" output. It's up to the CLI command writer to add useful help strings.
You can find the source code of CLI commands by searching for instances of the VLIB_CLI_COMMAND
macro in the code source files.
Please help maintain and improve this document to make and keep these commands clear and useful!
- Todo:
- Document where to modify this CLI intro text.
Debug and Telnet CLI
The debug CLI is enabled with the unix interactive parameter or startup configuration option. This causes VPP to start without daemonizing and presents a command line interface on the terminal where it is run.
The Telnet CLI is enabled with the cli-listen localhost:5002
option which will cause VPP to listen for TCP connections on the localhost address port 5002
. A Telnet client can then connect to this port (for example, telnet localhost 5002
) and will receive a command line prompt.
This configuration will enable both mechanisms:
3 cli-listen localhost:5002
The debug CLI can operate in line mode, which may be useful when running inside an IDE like Emacs. This is enabled with the option unix cli-line-mode
. Several other options exist that alter how this CLI works, see the Startup Configuration section for details.
The CLI starts with a banner graphic (which can be disabled) and a prompt. The prompt will typically read vpp
for a release version of VPP and DBGvpp#
for a development version with debugging enabled, for example:
_______ _ _ _____ ___
__/ __/ _ \ (_)__ | | / / _ \/ _ \
_/ _// // / / / _ \ | |/ / ___/ ___/
/_/ /____(_)_/\___/ |___/_/ /_/
vpp#
versus:
_______ _ _ _____ ___
__/ __/ _ \ (_)__ | | / / _ \/ _ \
_/ _// // / / / _ \ | |/ / ___/ ___/
/_/ /____(_)_/\___/ |___/_/ /_/
DBGvpp#
This prompt can be configured with the unix cli-prompt
setting and the banner is disabled with unix cli-no-banner
.
CLI features
The CLI has several editing features that make it easy to use.
- Cursor keys left/right will move the cursor within a command line; typing will insert at the cursor; erase will erase at the cursor.
- Ctrl-left/right will search for the start of the next word to the left or right.
- Home/end will jump the cursor to the start and end of the line.
- Cursor keys up/down and ^P/^N iterate through the command history buffer. Lines from the history buffer may be edited. New commands are added to the end of the buffer when executed; though duplicates of the previous command are not added.
- ^U erases the line contents from the left of the cursor to the start.
- ^K erases the contents from the cursor to the end.
- ^S/^R will search the command history forwards or in reverse for a command; start typing for matches to auto complete.
- ^L will clear the screen (if supported by the terminal) and repaint the prompt and any current line. The cursor position is also retained.
- The CLI can be closed with the quit command. Alternatively, ^D on an empty input line will also close the session. Closing the debug session will also shutdown VPP.
Output that exceeds the length of a terminal page will be buffered, up to a limit.
- Space or page-down displays the next page.
- Enter or down-arrow displays the next line.
- Page-up goes back a page.
- Up-arrow goes up a line.
- Home/end jump to the start/end of the buffered output.
- The key q quits the pager. Space and enter will also quit the pager if the end of the buffer has been reached.
Index of CLI commands
ARP and Loopback CLI
Circular Journal
Command line session
DPDK Crypto
DPDK and pcap tx
Host Interface
Image Version Information
Interface
Layer 2 CLI
Layer 3 IP CLI
Unix Interface
VLIB application library
VXLAN CLI
netmap
src/plugins/abf
src/plugins/acl
src/plugins/avf
src/plugins/cdp
src/plugins/flowprobe
src/plugins/gbp
src/plugins/gtpu
src/plugins/igmp
src/plugins/ila
src/plugins/ioam/analyse/ip6
src/plugins/ioam/encap
src/plugins/ioam/export
src/plugins/ioam/export-vxlan-gpe
src/plugins/ioam/ip6
src/plugins/ioam/lib-pot
src/plugins/ioam/lib-trace
src/plugins/ioam/lib-vxlan-gpe
src/plugins/ioam/udp-ping
src/plugins/l2e
src/plugins/lacp
src/plugins/lb
src/plugins/mactime
src/plugins/map
src/plugins/marvell/pp2
src/plugins/memif
src/plugins/nat
src/plugins/pppoe
src/plugins/stn
src/plugins/tlsopenssl
src/vlib/linux
src/vlib/pci
src/vlibapi
src/vlibmemory
src/vnet/adj
src/vnet/bfd
src/vnet/bier
src/vnet/bonding
src/vnet/classify
src/vnet/cop
src/vnet/devices/pipe
src/vnet/devices/tap
src/vnet/dhcp
src/vnet/dns
src/vnet/dpo
src/vnet/feature
src/vnet/fib
src/vnet/flow
src/vnet/geneve
src/vnet/gre
src/vnet/ipfix-export
src/vnet/ipip
src/vnet/ipsec
src/vnet/ipsec-gre
src/vnet/l2tp
src/vnet/lawful-intercept
src/vnet/lisp-cp
src/vnet/lisp-gpe
src/vnet/lldp
src/vnet/mfib
src/vnet/mpls
src/vnet/pg
src/vnet/policer
src/vnet/qos
src/vnet/session
src/vnet/session-apps
src/vnet/span
src/vnet/srmpls
src/vnet/srv6
src/vnet/tcp
src/vnet/udp
src/vnet/unix
src/vnet/vxlan-gpe
src/vpp/api
src/vpp/app
src/vpp/oam
src/vpp/stats
src/vpp/vnet
vHost User