Flow Acceleration
Orion Electric Age

DPDK 17.02’s rte_flow, the framework of hardware acceleration.

  • flowtable-hwaccel-flowchart
    flowtable-hwaccel-flowchart

napatech’s illustration:

DPDK’s flow acceleration framework

  • flow attribute, item and action, see rte_flow.h

    • Pattern items fall in two categories:
      • Matching protocol headers and packet data, usually associated with a specification structure. These must be stacked in the same order as the protocol layers to match inside packets, starting from the lowest.
      • Matching meta-data or affecting pattern processing, often without a specification structure. Since they do not match packet contents, their position in the list is usually not relevant.
    • Supported actions, they fall in three categories:
      • Actions that modify the fate of matching traffic, for instance by dropping or assigning it a specific destination.
      • Actions that modify matching traffic contents or its properties. This includes adding/removing encapsulation, encryption, compression and marks.
      • Actions related to the flow rule itself, such as updating counters or making it non-terminating.
    • eth_filter_ctrl_t, e.g. ixgbe_dev_filter_ctrl, i40e_dev_filter_ctrl
  • example of flow aaceleartion, generate_ipv4_flow

    1
    2
    3
    4
    5
    6
    initialize of struct rte_flow_attr
    --> struct rte_flow_item
    --> struct rte_flow_action
    --> rte_flow_create()
    --> eth_filter_ctrl_t, e.g. ixgbe_dev_filter_ctrl
    --> struct rte_flow_ops's create, e.g. ixgbe_flow_create