rte_flow 介绍
理解:
1》一个 flow rule 可以有多个action;
2》flow rule可以配置不同的优先级。但是不同硬件是否支持超过一个优先级是无法保证的。
3》为了保证硬件透明/硬件无关,默认创建的 flow rule都是相同的优先级(即没有优先级)。这样如果多个flow rule存在重叠,那么一条traffic 匹配到了多个flow rule,则结果是无法预料的,不知道选择哪个rule的action执行。
「这个和flow rule的添加的先后没有关系,因为不知道底层的flow rule的组织方式,是通过 list,还是 hash 还是 tree」
4》同一优先级,PMD禁止创建存在重叠的flow rule。
5》多个flow rule可以在一个组内,指定这个组的优先级,匹配到某个组后,这个组内的 rule 都会被执行「组内的rule 执行顺序?」。
默认的 group 0会被执行,其他的group 是通过 jump 跳转过去的。
queue group
queue group 的作用之一:
使用一个 rte_flow (FDIR)的action为 queue group; 然后 在这个queue group 中再进行RSS。这样可以达到负载均衡的作用。
flow rule 组成
attribute 属性
group
理解:
1》硬件是否支持超过一个组是无法保证的;
2》group 0 一定可以匹配到,其他组是通过JUMP过去的。
3》相似的规则被放入到同一个组;这样可以充分利用硬件的能力以及绕过限制。
注:
我的理解一般情况下,就是一个group,就是group0. 在group0中添加多个 flow rule.
priority
理解:
1》硬件支持多个flow rule 的优先级是不可以保证的。不同硬件应该是不一样。
2》优先级的值,值越小优先级越高。值为0的优先级最高。
3》一条流匹配到同一个组内的多个flow rule,选择优先级高的 flow rule。
4》一条流匹配到同一个组内相同优先级的多个flow rule,结果未知。
traffic direction
理解:
1》inbound:接口收包;
2》outbound:接口发包;
pattern
pattern item
理解:
1》Pattern items 分为2类:
一类是:协议头以及数据包内容,通常有固定的格式。这种要和协议分层(从低到高:ethther 层,vlan层,ipv4/ipv6层、tcp/udp层)一样的顺序组织。
一类是:元数据,没有固定的格式。
2》pattern item 分为多层: ether item、vlan item、ipv4/ipv6 item、tcp/udp item。
每层 的 item 又有多个 filed 字段;比如 ether item 有 srcmac, dstmac, type 等三个 filed。ipv4 item 有 sip, dip, proto 等 field。
3》描述每个 filed 有三个 结构:
spec:字段的值;
last:「不常用」
mask: