Flow Steering

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_*).

Experimental Verbs

RDMA-Core

Verbs

ibv_exp_create_flow

ibv_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

© Copyright 2023, NVIDIA. Last updated on Sep 8, 2023.