测来测去13:DPDK i40e X710 FDIR Flexbytes

Flex Bytes

700系列网卡除了提取包头的字段作为散列的依据之外,还可以截取Payload的特定片段作为散列的依据。

Flexible payload是可以识别出的L2/L3/L4 Header之后的字节,最多可以截取来自于3个不同偏移(OFFSET)的16字节内容。所有的内容需要来自该报文前480字节内。

如果是TCP的报文,因为网卡可以识别出L4 Header,则只能针对TCP的Payload进行匹配处理,而不能将TCP Header当作L3或L2的Payload处理。

Testpmd CMD

测试方法可以参考DPDK的官方文档:

https://doc.dpdk.org/dts/test_plans/generic_flow_api_test_plan.html#test-case-fortville-fdir-for-flexbytes

提示一下需要注意的点:

  • 每次设定偏移时,是从前一个偏移结束之后开始计算relative的值,如果前面没有偏移,则从Payload的第一个字节开始计算。

  • relative的位置加偏移的长度,是需要匹配的模式(pattern)的具体内容的起始位置

  • 在此节最后:

check pkt1 to pkt5 are received by queue 1 to queue 5, pkt6 to queue 0, pkt7 to queue6. pkt8 to queue7, pkt8 and pkt9 to queue 0.

这里面似乎最后应该改为pkt9 and pkt10 to queue0

Mask

还有一个问题没有解决,就是Flexbytes如何加Mask。实际上在i40e驱动的i40e_flow.c中提供了设定Mask的接口i40e_flow_store_flex_mask。但直接用该命令会导致报错。具体原因还需要后续挖掘。

© 2020 DecodeZ All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero