[dpdk-dev] [RFC v2 0/5] rte_flow extension for vSwitch acceleration

Qi Zhang qi.z.zhang at intel.com
Thu Dec 21 03:35:14 CET 2017

This patch extend rte_flow API.
The purpose is to provide comfortable programming interface for virtual switch
software (such as OVS) to take advantage of incoming device's vSwitch acceleration
capability when using DPDK as data plane.

Below is summary of changes:

1. Support to specify flow's destination as an ethdev interface.

Add action RTE_FLOW_ACTION_TYPE_ETHDEV_PORT, use port_id as the identification
of the destitation. A typical use case is, with a smart NIC used for vSwitch
acceleration, flow is defined to redirect packet between switch port that is
managed by a Port Representor.
See patch for Port Representor: http://dpdk.org/dev/patchwork/patch/31458/

2. Enhanced flow statistics query.
Enhanced action RTE_FLOW_ACTION_COUNT by adding last hit timestamp tracking which is
the requirement from OVS.

3. Add flow timeout support as the requirement from OVS
Application is able to
a) Setup the time duration of a flow, the flow is expected to be deleted automatically
when timeout.
b) Ping a flow to check if it is active or not.
c) Register a callback function when a flow is deleted due to timeout.

4. Add protocol headers which will be supported by incoming device.

New protocal headers include IPV4 ARP, IPV6 ICMP , IPV6 extent header.

5. Add packet modification actions which will be supported by incoming device.

Add new actions that be used to modify packet content with generic semantic:

RTE_FLOW_ACTION_TYPE_FIELD_UPDATE: update specific field of packet
RTE_FLWO_ACTION_TYPE_FIELD_INCREMENT: increament specific field of packet
RTE_FLWO_ACTION_TYPE_FIELD_DECREMENT: decreament specific field of packet
RTE_FLWO_ACTION_TYPE_FIELD_COPY: copy data from one field to another in packet.

All action use struct rte_flow_item parameter to match the pattern that going
to be modified, if no pattern match, the action just be skipped.
These action are non-terminating action. they will not impact the fate of the
packets, since pattern match is expected to be performed before packet be modified.

The RFC patch is based on v17.11.
Testpmd command line support is not included.

- v1 is incompelete due to some misoperation.

Qi Zhang (5):
  ether: add flow action to redirect packet in a switch domain
  ether: add flow last hit query support
  ether: Add flow timeout support
  ether: add more protocol support in rte_flow
  ether: add packet modification aciton in rte_flow

 doc/guides/prog_guide/rte_flow.rst | 148 ++++++++++++++++++
 lib/librte_ether/rte_flow.c        |  38 +++++
 lib/librte_ether/rte_flow.h        | 305 ++++++++++++++++++++++++++++++++++++-
 lib/librte_ether/rte_flow_driver.h |  12 ++
 4 files changed, 502 insertions(+), 1 deletion(-)


More information about the dev mailing list