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 |