image image image image image

On This Page

Flow steering is a model which steers network flows based on flow specifications to specific QPs. Those flows can be either unicast or multicast network flows. In order to maintain flexibility, domains and priorities are used. Flow steering uses a methodology of flow attribute, which is a combination of L@-L4 flow specifications, a destination QP and a priority. Flow steering rules may be inserted either by using ethtool or by using InfiniBand verbs. The verbs abstraction uses a different terminology from the flow attribute (ibv_flow_attr), defined by a combination of specifications (struct ibv_flow_spec_*).

Flow Steering Experimental vs. RDMA-Core Verbs and Capabilities

Experimental VerbsRDMA-Core
Verbs
ibv_exp_create_flowibv_create_flow

















IBV_EXP_FLOW_ATTR_*

















IBV_FLOW_ATTR

IBV_EXP_FLOW_ATTR_FLAGS_ALLOW_LOOP_BACK

IBV_FLOW_ATTR_FLAGS_ALLOW_LOOP_BACK

IBV_EXP_FLOW_SPEC_ETH

IBV_FLOW_SPEC_ETH

IBV_EXP_FLOW_SPEC_IB

Not supported by RDMA-CORE

IBV_EXP_FLOW_SPEC_IPV4

IBV_FLOW_SPEC_IPV4

IBV_EXP_FLOW_SPEC_IPV6

IBV_FLOW_SPEC_IPV6

IBV_EXP_FLOW_SPEC_IPV4_EXT

IBV_FLOW_SPEC_IPV4_EXT

IBV_EXP_FLOW_SPEC_IPV6_EXT

IBV_FLOW_SPEC_IPV6

IBV_EXP_FLOW_SPEC_TCP

IBV_EXP_FLOW_SPEC_TCP

IBV_EXP_FLOW_SPEC_UDP

IBV_FLOW_SPEC_UDP

IBV_EXP_FLOW_SPEC_VXLAN_TUNNEL

IBV_FLOW_SPEC_VXLAN_TUNNEL

IBV_EXP_FLOW_SPEC_INNER

IBV_FLOW_SPEC_INNER

IBV_EXP_FLOW_SPEC_ACTION_TAG

IBV_FLOW_SPEC_ACTION_TAG

IBV_EXP_FLOW_SPEC_ACTION_DROP

IBV_FLOW_SPEC_ACTION_DROP

Ibv_exp_flow_spec_*

Ibv_flow_spec_*

Ibv_exp_destroy_flow

Ibv_destroy_flow

Capabilities 

IBV_EXP_DEVICE_MANAGED_FLOW_STEERING

IBV_DEVICE_MANAGED_FLOW_STEERING

Relevant Man Pages

ibv_create_flow: https://github.com/linux-rdma/rdma-core/blob/master/libibverbs/man/ibv_create_flow.3

Example

https://github.com/linux-rdma/rdma-core/blob/master/libibverbs/man/ibv_create_flow.3