start tx_first
~~~~~~~~~~~~~~
-Start packet forwarding with current configuration after sending one burst of packets::
+Start packet forwarding with current configuration after sending specified number of bursts of packets::
- testpmd> start tx_first
+ testpmd> start tx_first (""|burst_num)
+
+The default burst number is 1 when ``burst_num`` not presented.
stop
~~~~
ipv6-sctp
ipv6-other
l2_payload
+ port
+ vxlan
+ geneve
+ nvgre
show port rss reta
~~~~~~~~~~~~~~~~~~
Set the packet forwarding mode::
- testpmd> set fwd (io|mac|mac_retry|macswap|flowgen| \
- rxonly|txonly|csum|icmpecho)
+ testpmd> set fwd (io|mac|macswap|flowgen| \
+ rxonly|txonly|csum|icmpecho) (""|retry)
+
+``retry`` can be specified for forwarding engines except ``rx_only``.
The available information categories are:
* ``mac``: Changes the source and the destination Ethernet addresses of packets before forwarding them.
-* ``mac_retry``: Same as "mac" forwarding mode, but includes retries if the destination queue is full.
-
* ``macswap``: MAC swap forwarding mode.
Swaps the source and the destination Ethernet addresses of packets before forwarding them.
This is equivalent to the ``--burst command-line`` option.
-In ``mac_retry`` forwarding mode, the transmit delay time and number of retries can also be set::
+When retry is enabled, the transmit delay time and number of retries can also be set::
- testpmd> set burst tx delay (micrseconds) retry (num)
+ testpmd> set burst tx delay (microseconds) retry (num)
set txpkts
~~~~~~~~~~
Add a tunnel filter on a port::
testpmd> tunnel_filter add (port_id) (outer_mac) (inner_mac) (ip_addr) \
- (inner_vlan) (tunnel_type) (filter_type) (tenant_id) (queue_id)
+ (inner_vlan) (vxlan|nvgre|ipingre) (imac-ivlan|imac-ivlan-tenid|\
+ imac-tenid|imac|omac-imac-tenid|oip|iip) (tenant_id) (queue_id)
+
+The available information categories are:
+
+* ``vxlan``: Set tunnel type as VXLAN.
+
+* ``nvgre``: Set tunnel type as NVGRE.
+
+* ``ipingre``: Set tunnel type as IP-in-GRE.
+
+* ``imac-ivlan``: Set filter type as Inner MAC and VLAN.
+
+* ``imac-ivlan-tenid``: Set filter type as Inner MAC, VLAN and tenant ID.
+
+* ``imac-tenid``: Set filter type as Inner MAC and tenant ID.
+
+* ``imac``: Set filter type as Inner MAC.
+
+* ``omac-imac-tenid``: Set filter type as Outer MAC, Inner MAC and tenant ID.
+
+* ``oip``: Set filter type as Outer IP.
+
+* ``iip``: Set filter type as Inner IP.
+
+Example::
+
+ testpmd> tunnel_filter add 0 68:05:CA:28:09:82 00:00:00:00:00:00 \
+ 192.168.2.2 0 ipingre oip 1 1
+
+ Set an IP-in-GRE tunnel on port 0, and the filter type is Outer IP.
tunnel_filter remove
~~~~~~~~~~~~~~~~~~~~
Remove a tunnel filter on a port::
testpmd> tunnel_filter rm (port_id) (outer_mac) (inner_mac) (ip_addr) \
- (inner_vlan) (tunnel_type) (filter_type) (tenant_id) (queue_id)
+ (inner_vlan) (vxlan|nvgre|ipingre) (imac-ivlan|imac-ivlan-tenid|\
+ imac-tenid|imac|omac-imac-tenid|oip|iip) (tenant_id) (queue_id)
rx_vxlan_port add
~~~~~~~~~~~~~~~~~
testpmd> set link-down port (port id)
+E-tag set
+~~~~~~~~~
+
+Enable E-tag insertion for a VF on a port::
+
+ testpmd> E-tag set insertion on port-tag-id (value) port (port_id) vf (vf_id)
+
+Disable E-tag insertion for a VF on a port::
+
+ testpmd> E-tag set insertion off port (port_id) vf (vf_id)
+
+Enable/disable E-tag stripping on a port::
+
+ testpmd> E-tag set stripping (on|off) port (port_id)
+
+Enable/disable E-tag based forwarding on a port::
+
+ testpmd> E-tag set forwarding (on|off) port (port_id)
+
+Add an E-tag forwarding filter on a port::
+
+ testpmd> E-tag set filter add e-tag-id (value) dst-pool (pool_id) port (port_id)
+
+Delete an E-tag forwarding filter on a port::
+ testpmd> E-tag set filter del e-tag-id (value) port (port_id)
+
Port Functions
--------------
port attach
~~~~~~~~~~~
-Attach a port specified by pci address or virtual device args.
+Attach a port specified by pci address or virtual device args::
+
+ testpmd> port attach (identifier)
To attach a new pci device, the device should be recognized by kernel first.
Then it should be moved under DPDK management.
.. code-block:: console
# Check the status of the available devices.
- ./tools/dpdk_nic_bind.py --status
+ ./tools/dpdk-devbind.py --status
Network devices using DPDK-compatible driver
============================================
# Bind the device to igb_uio.
- sudo ./tools/dpdk_nic_bind.py -b igb_uio 0000:0a:00.0
+ sudo ./tools/dpdk-devbind.py -b igb_uio 0000:0a:00.0
# Recheck the status of the devices.
- ./tools/dpdk_nic_bind.py --status
+ ./tools/dpdk-devbind.py --status
Network devices using DPDK-compatible driver
============================================
0000:0a:00.0 '82599ES 10-Gigabit' drv=igb_uio unused=
To attach a port created by virtual device, above steps are not needed.
-port attach (identifier)
-
For example, to attach a port whose pci address is 0000:0a:00.0.
.. code-block:: console
port detach
~~~~~~~~~~~
-Detach a specific port.
-
-Before detaching a port, the port should be closed::
+Detach a specific port::
testpmd> port detach (port_id)
+Before detaching a port, the port should be stopped and closed.
+
For example, to detach a pci device port 0.
.. code-block:: console
+ testpmd> port stop 0
+ Stopping ports...
+ Done
testpmd> port close 0
Closing ports...
Done
.. code-block:: console
+ testpmd> port stop 0
+ Stopping ports...
+ Done
testpmd> port close 0
Closing ports...
Done
.. code-block:: console
- sudo ./tools/dpdk_nic_bind.py -b ixgbe 0000:0a:00.0
+ sudo ./tools/dpdk-devbind.py -b ixgbe 0000:0a:00.0
- ./tools/dpdk_nic_bind.py --status
+ ./tools/dpdk-devbind.py --status
Network devices using DPDK-compatible driver
============================================
Set the speed and duplex mode for all ports or a specific port::
- testpmd> port config (port_id|all) speed (10|100|1000|10000|auto) \
+ testpmd> port config (port_id|all) speed (10|100|1000|10000|40000|100000|auto) \
duplex (half|full|auto)
port config - queues/descriptors
The ``on`` option is equivalent to the ``--crc-strip`` command-line option.
+port config - scatter
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Set RX scatter mode on or off for all ports::
+
+ testpmd> port config all scatter (on|off)
+
+RX scatter mode is off by default.
+
+The ``on`` option is equivalent to the ``--enable-scatter`` command-line option.
+
+port config - TX queue flags
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Set a hexadecimal bitmap of TX queue flags for all ports::
+
+ testpmd> port config all txqflags value
+
+This command is equivalent to the ``--txqflags`` command-line option.
+
port config - RX Checksum
~~~~~~~~~~~~~~~~~~~~~~~~~
Set the RSS (Receive Side Scaling) mode on or off::
- testpmd> port config all rss (all|ip|tcp|udp|sctp|ether|none)
+ testpmd> port config all rss (all|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|none)
RSS is on by default.
These threshold options are also available from the command-line.
+port config - E-tag
+~~~~~~~~~~~~~~~~~~~
+
+Set the value of ether-type for E-tag::
+
+ testpmd> port config (port_id|all) l2-tunnel E-tag ether-type (value)
+
+Enable/disable the E-tag support::
+
+ testpmd> port config (port_id|all) l2-tunnel E-tag (enable|disable)
+
Link Bonding Functions
----------------------
# Commands to add flow director filters of different flow types::
flow_director_filter (port_id) mode IP (add|del|update) \
- flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag)
+ flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag) \
src (src_ip_address) dst (dst_ip_address) \
+ tos (tos_value) proto (proto_value) ttl (ttl_value) \
vlan (vlan_value) flexbytes (flexbytes_value) \
(drop|fwd) pf|vf(vf_id) queue (queue_id) \
fd_id (fd_id_value)
flow (ipv4-tcp|ipv4-udp|ipv6-tcp|ipv6-udp) \
src (src_ip_address) (src_port) \
dst (dst_ip_address) (dst_port) \
+ tos (tos_value) ttl (ttl_value) \
vlan (vlan_value) flexbytes (flexbytes_value) \
(drop|fwd) queue pf|vf(vf_id) (queue_id) \
fd_id (fd_id_value)
flow_director_filter (port_id) mode IP (add|del|update) \
flow (ipv4-sctp|ipv6-sctp) \
src (src_ip_address) (src_port) \
- dst (dst_ip_address) (dst_port)
+ dst (dst_ip_address) (dst_port) \
+ tos (tos_value) ttl (ttl_value) \
tag (verification_tag) vlan (vlan_value) \
flexbytes (flexbytes_value) (drop|fwd) \
pf|vf(vf_id) queue (queue_id) fd_id (fd_id_value)
For example, to add an ipv4-udp flow type filter::
- testpmd> flow_director_filter 0 add flow ipv4-udp src 2.2.2.3 32 \
- dst 2.2.2.5 33 vlan 0x1 flexbytes (0x88,0x48) fwd pf queue 1 fd_id 1
+ testpmd> flow_director_filter 0 mode IP add flow ipv4-udp src 2.2.2.3 32 \
+ dst 2.2.2.5 33 tos 2 ttl 40 vlan 0x1 flexbytes (0x88,0x48) \
+ fwd pf queue 1 fd_id 1
For example, add an ipv4-other flow type filter::
- testpmd> flow_director_filter 0 add flow ipv4-other src 2.2.2.3 \
- dst 2.2.2.5 vlan 0x1 flexbytes (0x88,0x48) fwd pf queue 1 fd_id 1
+ testpmd> flow_director_filter 0 mode IP add flow ipv4-other src 2.2.2.3 \
+ dst 2.2.2.5 tos 2 proto 20 ttl 40 vlan 0x1 \
+ flexbytes (0x88,0x48) fwd pf queue 1 fd_id 1
flush_flow_director
~~~~~~~~~~~~~~~~~~~
Example, to set flow director mask on port 0::
- testpmd> flow_director_mask 0 vlan 0xefff \
+ testpmd> flow_director_mask 0 mode IP vlan 0xefff \
src_mask 255.255.255.255 \
FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 0xFFFF \
dst_mask 255.255.255.255 \
Set the input set for hash::
- set_hash_input_set (port_id) (ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
- ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other| \
+ set_hash_input_set (port_id) (ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
+ ipv4-other|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other| \
l2_payload) (ovlan|ivlan|src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|ipv4-tos| \
ipv4-proto|ipv6-tc|ipv6-next-header|udp-src-port|udp-dst-port| \
tcp-src-port|tcp-dst-port|sctp-src-port|sctp-dst-port|sctp-veri-tag| \
udp-key|gre-key|fld-1st|fld-2nd|fld-3rd|fld-4th|fld-5th|fld-6th|fld-7th| \
fld-8th|none) (select|add)
-For example, to add source IP to hash input set for flow type of ipv4 on port 0::
+For example, to add source IP to hash input set for flow type of ipv4-udp on port 0::
- testpmd> set_hash_input_set 0 ipv4 src-ipv4 add
+ testpmd> set_hash_input_set 0 ipv4-udp src-ipv4 add
set_fdir_input_set
~~~~~~~~~~~~~~~~~~
-Set the input set for Fdir::
+The Flow Director filters can match the different fields for different type of packet, i.e. specific input set
+on per flow type and the flexible payload. This command can be used to change input set for each flow type.
- set_fdir_input_set (port_id) (ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
- ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload)
- (src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|udp-src-port|udp-dst-port| \
- tcp-src-port|tcp-dst-port|sctp-src-port|sctp-dst-port|sctp-veri-tag| \
- fld-1st|fld-2nd|fld-3rd|fld-4th|fld-5th|fld-6th|fld-7th|fld-8th|none) \
- (select|add)
+Set the input set for flow director::
+
+ set_fdir_input_set (port_id) (ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
+ ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other| \
+ l2_payload) (ivlan|ethertype|src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|ipv4-tos| \
+ ipv4-proto|ipv4-ttl|ipv6-tc|ipv6-next-header|ipv6-hop-limits| \
+ tudp-src-port|udp-dst-port|cp-src-port|tcp-dst-port|sctp-src-port| \
+ sctp-dst-port|sctp-veri-tag|none) (select|add)
-For example to add source IP to FD input set for flow type of ipv4 on port 0::
+For example to add source IP to FD input set for flow type of ipv4-udp on port 0::
- testpmd> set_fdir_input_set 0 ipv4 src-ipv4 add
+ testpmd> set_fdir_input_set 0 ipv4-udp src-ipv4 add
global_config
~~~~~~~~~~~~~