rte_flow流规则的创建流程

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

rte_flow的创建流程

DPDK通过rte_flow提供的流控制功能,通过dpdk example中的flow_filtering实例,可以看到rte_flow的简单应用。实例实现的功能为:针对指定目的IP的报文,进入指定的网卡rx队列。实现步骤如下:

  1. 创建struct rte_flow_attr,指定匹配报文的方向。
  2. 创建struct rte_flow_action,指定动作类型为报文通过特定rx队列接收。
  3. 创建struct rte_flow_item,指定匹配报文的IP地址。
  4. 调用rte_flow_validate校验创建flow的参数是否合理。
  5. 调用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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值