[dpdk] rte_flow

 

以下内容直接来自官网文档的整理。

更精准的描述请阅读文档:https://doc.dpdk.org/guides/prog_guide/rte_flow.html

一 rte_flow是干嘛的

一组用来创建自定义规则的api,该规则可以改变网络流量的命运,以及查询计数。

 

二 规则啥样

1 match + action

match包括:两类,A报文内容(按协议栈分层); B报文属性(网口,方向)。

action包括:计数,丢包,重定向queue,卸载。

2 规则被不同组包含

只有组0被执行,跟其他组的连接需要使用rule的jump action。

3 规则间有优先级

相同优先级行为未定义。小值优先级高,0最大。

4 有个接口检查规则有效性

5 ACTION

a 改变路由或丢弃

b 改包,封装解封装。

c 计数,放行,或跳转其他规则。

可以是一个;也可以是列表,按顺序执行。

 

三 模板

可以创建patten模板和action模板。在创建rule时引用。

 

四 编程模型

1 静态配置

todo

2 异步配置

异步是指包转发的过程中,向硬件中变更,增减rte flow条目。它有个无锁队列。

准备好条目后,放入队列。然后push进硬件,再用api pull出flow的加载结果。

编程模型见下图:

 

 

五 isolated mode

通常,流量先过flow规则,然后再 rss或者通过其他全局接口定义 进入不同的queue。

isolated模式使包的流量直接通过flow规则进行转发,不再被后续的全局配置进行处理。

1  该模式,可以提高性能,提高网卡硬件资源的利用率,同时会缺少部分功能。

2  另外,该模式不一定很好的支持全局变更。所以一般推荐在rte_eth_dev_configure()之前就进行设置。

大概是这个意思,该模式详细的情况需要在具体使用时进一步测试,或阅读源码。

 

posted on 2024-04-19 20:32  toong  阅读(448)  评论(0)    收藏  举报