- testpmd> ethertype_filter 0 del mac_ignr 00:11:22:33:44:55 \
- ethertype 0x0806 fwd queue 3
-
-2tuple_filter
-~~~~~~~~~~~~~~~~~
-
-Add or delete a 2-tuple filter,
-which identifies packets by specific protocol and destination TCP/UDP port
-and forwards packets into one of the receive queues::
-
- 2tuple_filter (port_id) (add|del) dst_port (dst_port_value) \
- protocol (protocol_value) mask (mask_value) \
- tcp_flags (tcp_flags_value) priority (prio_value) \
- queue (queue_id)
-
-The available information parameters are:
-
-* ``port_id``: The port which the 2-tuple filter assigned on.
-
-* ``dst_port_value``: Destination port in L4.
-
-* ``protocol_value``: IP L4 protocol.
-
-* ``mask_value``: Participates in the match or not by bit for field above, 1b means participate.
-
-* ``tcp_flags_value``: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP).
-
-* ``prio_value``: Priority of this filter.
-
-* ``queue_id``: The receive queue associated with this 2-tuple filter.
-
-Example, to add/remove an 2tuple filter rule::
-
- testpmd> 2tuple_filter 0 add dst_port 32 protocol 0x06 mask 0x03 \
- tcp_flags 0x02 priority 3 queue 3
-
- testpmd> 2tuple_filter 0 del dst_port 32 protocol 0x06 mask 0x03 \
- tcp_flags 0x02 priority 3 queue 3
-
-5tuple_filter
-~~~~~~~~~~~~~~~~~
-
-Add or delete a 5-tuple filter,
-which consists of a 5-tuple (protocol, source and destination IP addresses, source and destination TCP/UDP/SCTP port)
-and routes packets into one of the receive queues::
-
- 5tuple_filter (port_id) (add|del) dst_ip (dst_address) src_ip \
- (src_address) dst_port (dst_port_value) \
- src_port (src_port_value) protocol (protocol_value) \
- mask (mask_value) tcp_flags (tcp_flags_value) \
- priority (prio_value) queue (queue_id)
-
-The available information parameters are:
-
-* ``port_id``: The port which the 5-tuple filter assigned on.
-
-* ``dst_address``: Destination IP address.
-
-* ``src_address``: Source IP address.
-
-* ``dst_port_value``: TCP/UDP destination port.
-
-* ``src_port_value``: TCP/UDP source port.
-
-* ``protocol_value``: L4 protocol.
-
-* ``mask_value``: Participates in the match or not by bit for field above, 1b means participate
-
-* ``tcp_flags_value``: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP).
-
-* ``prio_value``: The priority of this filter.
-
-* ``queue_id``: The receive queue associated with this 5-tuple filter.
-
-Example, to add/remove an 5tuple filter rule::
-
- testpmd> 5tuple_filter 0 add dst_ip 2.2.2.5 src_ip 2.2.2.4 \
- dst_port 64 src_port 32 protocol 0x06 mask 0x1F \
- flags 0x0 priority 3 queue 3
-
- testpmd> 5tuple_filter 0 del dst_ip 2.2.2.5 src_ip 2.2.2.4 \
- dst_port 64 src_port 32 protocol 0x06 mask 0x1F \
- flags 0x0 priority 3 queue 3
-
-syn_filter
-~~~~~~~~~~
-
-Using the SYN filter, TCP packets whose *SYN* flag is set can be forwarded to a separate queue::
-
- syn_filter (port_id) (add|del) priority (high|low) queue (queue_id)
-
-The available information parameters are:
-
-* ``port_id``: The port which the SYN filter assigned on.
-
-* ``high``: This SYN filter has higher priority than other filters.
-
-* ``low``: This SYN filter has lower priority than other filters.
-
-* ``queue_id``: The receive queue associated with this SYN filter
-
-Example::
-
- testpmd> syn_filter 0 add priority high queue 3
-
-flex_filter
-~~~~~~~~~~~
-
-With flex filter, packets can be recognized by any arbitrary pattern within the first 128 bytes of the packet
-and routed into one of the receive queues::
-
- flex_filter (port_id) (add|del) len (len_value) bytes (bytes_value) \
- mask (mask_value) priority (prio_value) queue (queue_id)
-
-The available information parameters are:
-
-* ``port_id``: The port which the Flex filter is assigned on.
-
-* ``len_value``: Filter length in bytes, no greater than 128.
-
-* ``bytes_value``: A string in hexadecimal, means the value the flex filter needs to match.
-
-* ``mask_value``: A string in hexadecimal, bit 1 means corresponding byte participates in the match.
-
-* ``prio_value``: The priority of this filter.
-
-* ``queue_id``: The receive queue associated with this Flex filter.
-
-Example::
-
- testpmd> flex_filter 0 add len 16 bytes 0x00000000000000000000000008060000 \
- mask 000C priority 3 queue 3
-
- testpmd> flex_filter 0 del len 16 bytes 0x00000000000000000000000008060000 \
- mask 000C priority 3 queue 3
-
-
-.. _testpmd_flow_director:
-
-flow_director_filter
-~~~~~~~~~~~~~~~~~~~~
-
-The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues.
-
-Four types of filtering are supported which are referred to as Perfect Match, Signature, Perfect-mac-vlan and
-Perfect-tunnel filters, the match mode is set by the ``--pkt-filter-mode`` command-line parameter:
-
-* Perfect match filters.
- The hardware checks a match between the masked fields of the received packets and the programmed filters.
- The masked fields are for IP flow.
-
-* Signature filters.
- The hardware checks a match between a hash-based signature of the masked fields of the received packet.
-
-* Perfect-mac-vlan match filters.
- The hardware checks a match between the masked fields of the received packets and the programmed filters.
- The masked fields are for MAC VLAN flow.
-
-* Perfect-tunnel match filters.
- The hardware checks a match between the masked fields of the received packets and the programmed filters.
- The masked fields are for tunnel flow.
-
-* Perfect-raw-flow-type match filters.
- The hardware checks a match between the masked fields of the received packets and pre-loaded raw (template) packet.
- The masked fields are specified by input sets.
-
-The Flow Director filters can match the different fields for different type of packet: flow type, specific input set
-per flow type and the flexible payload.
-
-The Flow Director can also mask out parts of all of these fields so that filters
-are only applied to certain fields or parts of the fields.
-
-Note that for raw flow type mode the source and destination fields in the
-raw packet buffer need to be presented in a reversed order with respect
-to the expected received packets.
-For example: IP source and destination addresses or TCP/UDP/SCTP
-source and destination ports
-
-Different NICs may have different capabilities, command show port fdir (port_id) can be used to acquire the information.
-
-# 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) \
- 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_director_filter (port_id) mode IP (add|del|update) \
- 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) \
- 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)
-
- flow_director_filter (port_id) mode IP (add|del|update) flow l2_payload \
- ether (ethertype) flexbytes (flexbytes_value) \
- (drop|fwd) pf|vf(vf_id) queue (queue_id)
- fd_id (fd_id_value)
-
- flow_director_filter (port_id) mode MAC-VLAN (add|del|update) \
- mac (mac_address) vlan (vlan_value) \
- flexbytes (flexbytes_value) (drop|fwd) \
- queue (queue_id) fd_id (fd_id_value)
-
- flow_director_filter (port_id) mode Tunnel (add|del|update) \
- mac (mac_address) vlan (vlan_value) \
- tunnel (NVGRE|VxLAN) tunnel-id (tunnel_id_value) \
- flexbytes (flexbytes_value) (drop|fwd) \
- queue (queue_id) fd_id (fd_id_value)
-
- flow_director_filter (port_id) mode raw (add|del|update) flow (flow_id) \
- (drop|fwd) queue (queue_id) fd_id (fd_id_value) \
- packet (packet file name)
-
-For example, to add an ipv4-udp flow type filter::
-
- 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 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
-~~~~~~~~~~~~~~~~~~~
-
-Flush all flow director filters on a device::
-
- testpmd> flush_flow_director (port_id)
-
-Example, to flush all flow director filter on port 0::
-
- testpmd> flush_flow_director 0
-
-flow_director_mask
-~~~~~~~~~~~~~~~~~~
-
-Set flow director's input masks::
-
- flow_director_mask (port_id) mode IP vlan (vlan_value) \
- src_mask (ipv4_src) (ipv6_src) (src_port) \
- dst_mask (ipv4_dst) (ipv6_dst) (dst_port)
-
- flow_director_mask (port_id) mode MAC-VLAN vlan (vlan_value)
-
- flow_director_mask (port_id) mode Tunnel vlan (vlan_value) \
- mac (mac_value) tunnel-type (tunnel_type_value) \
- tunnel-id (tunnel_id_value)
-
-Example, to set flow director mask on port 0::
-
- 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 \
- FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 0xFFFF
-
-flow_director_flex_mask
-~~~~~~~~~~~~~~~~~~~~~~~
-
-set masks of flow director's flexible payload based on certain flow type::
-
- testpmd> flow_director_flex_mask (port_id) \
- flow (none|ipv4-other|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
- ipv6-other|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp| \
- l2_payload|all) (mask)
-
-Example, to set flow director's flex mask for all flow type on port 0::
-
- testpmd> flow_director_flex_mask 0 flow all \
- (0xff,0xff,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
-
-
-flow_director_flex_payload
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Configure flexible payload selection::
-
- flow_director_flex_payload (port_id) (raw|l2|l3|l4) (config)
-
-For example, to select the first 16 bytes from the offset 4 (bytes) of packet's payload as flexible payload::