rte_flow的创建流程
DPDK通过rte_flow提供的流控制功能,通过dpdk example中的flow_filtering实例,可以看到rte_flow的简单应用。实例实现的功能为:针对指定目的IP的报文,进入指定的网卡rx队列。实现步骤如下:
- 创建
struct rte_flow_attr,指定匹配报文的方向。 - 创建
struct rte_flow_action,指定动作类型为报文通过特定rx队列接收。 - 创建
struct rte_flow_item,指定匹配报文的IP地址。 - 调用
rte_flow_validate校验创建flow的参数是否合理。 - 调用
rte_flow_create创建flow,并下发配置到网卡。
源码如下:
struct rte_flow *
generate_ipv4_flow(uint16_t port_id, uint16_t rx_q,
uint32_t src_ip, uint32_t src_mask,
uint32_t dest_ip, uint32_t dest_mask,
struct rte_flow_error *error)
{
struct rte_flow_attr attr;
struct rte_flow_item pattern[MAX_PATTERN_NUM];
struct rte_flow_action action[MAX_ACTION_NUM];
struct rte_flow *flow = NULL;
struct rte_flow_action_queue queue = {
.index = rx_q };
struct rte_flow_item_ipv4 ip_spec;
struct rte_flow_item_ipv4 ip_mask;
int res;
memset(pattern, 0, sizeof(pattern));
memset(action, 0, sizeof(ac

本文详细介绍了如何使用DPDK的rte_flow功能,通过实例展示了如何针对特定目的IP创建规则,使报文进入指定网卡的rx队列。涉及关键步骤包括设置流规则属性、创建匹配模式和动作,以及校验和创建flow。
最低0.47元/天 解锁文章
5274

被折叠的 条评论
为什么被折叠?



