
作者简介
赵伟
intel软件工程师
主要从事DPDK开发与测试工作。

使用TestPMD时,我们经常需要将包放入指定队列中。ixgbe网卡已经提供了此种可能,相信下面关于ixgbe filter 的一些背景知识也会有所帮助。ixgbe支持多种型号的网卡,例如82599、x540、x550和x552等等。不同型号网卡的filter类型不同,filter的类型决定了接受包的目的队列,下面将一一讲解。目前,DPDK已通过rte_flowAPI在 pf口号中使用这些filter,用户可使用TestPMD应用进行体验。该应用通过rte_flowAPI创建或删除这些ixgbe filter 。当然,API在filter 配置中还另有作用,但不属于本文的讨论范围。
▼
《TestpmdApplication User Guide》的4.12部分提供了关于TestPMD中使用rte_flow的基本信息,请参照其中的介绍。本文将重点分析在rte_flow指令和API的使用中,一些限制ixgbefilter 的关键参数。
ixgbe网卡在收包时会根据上述标准及以下的顺序将包分配至相应队列:
•L2 EtherType filter (如果匹配)
此类filter 识别的是包的L2Ethertype,识别后将它们分配到接受队列。
•L3/L4 5-tuple filter (如果匹配)
此类filter 识别的是某些或成组的L3/L4 flow。filter由5-tuple(协议、IP的源地址和目的地址、TCP、UDP和SCTP的源端口号和目的端口号)构成,识别后将包分配到一个Rx队列中。82599和x540型号的网卡中有128个此类filter ,而 X550和X552中则没有.
•SYN filter (如果匹配)
导流TCP包,同时将包的SYN标志设置成独立的队列。
•flow director filter (如果匹配)
此类filter 识别的是某些或几组flow,并将它们分配至特定队列中。X550和X552型号支持三种不同模式的flowdirector (PERFECT、MAC_VLAN和TUNNEL),但82599和x540型号只支持PERFECT模式.
PERFECT:5-tuple filter
MAC_VLAN:MAC, VLAN 过滤
TUNNEL:NVGRE或者VXLAN 过滤
•RSS (如果匹配)
RSS(接收方扩展)将包分配至不同的描述符队列中,包处理在多个处理器内核上进行。
• 分配至零队列
PART 1
Ethertype
(x540、x552、x550 和 82599可以支持)
****PATTERN****
第一个非void的item必须为ETH.
源MAC地址必须进行掩码; 目标MAC地址也必须被完全掩码. 也就是被掩码的说源MAC地址应为{0x00, 0x00, 0x00, 0x00, 0x00, 0x00};被掩码的目标MAC地址应为{0x00, 0x00, 0x00, 0x00, 0x00, 0x00} .
ETH的EtherType 字段的值不应是0x0800和0x86DD;
接下来的非void item必须是END.
****ACTIONS****
第一个非void action应为QUEUE. 如果是QUEUE, queue id < queue number.
接下来的非void action应为END.