目录

  • ​​背景​​
  • ​​检查​​
  • ​​基本信息查看​​
  • ​​处理​​
  • ​​dpdk-devbind​​
  • ​​性能报告​​
  • ​​博通网卡在DPDK中的性能测试报告​​
  • ​​问题​​
  • ​​rte_flow_validate 失败​​
  • ​​rte_flow_crete 时没有区分tcp/udp​​
  • ​​总结​​
  • ​​参考​​

背景

使用 DPDK 20.11 编译出的 DPVS,查看是否支持 博通100G网卡。

检查

基本信息查看

(1) 博通网卡驱动

DPVS适配博通100G网卡_tcp/udp

(2) 网卡的pci

DPVS适配博通100G网卡_ci_02

(3) 网卡的设备id,厂商id

DPVS适配博通100G网卡_性能测试_03


(4)网卡类型查看

lspci -s 4b:00.0 -vvv

DPVS适配博通100G网卡_性能测试_04


如上,型号为 BCM957508-P2100G。单卡双口100G。

(5)博通官网信息查看

DPVS适配博通100G网卡_DPVS_05

参见:​​博通官网​

​BCM957508-P2100G Data Sheet​

(6) 查看DPDK 20.11,是否支持该网卡,以及对应的PDM驱动

DPVS适配博通100G网卡_DPVS_06

注:也可以通过查看DPDK 20.11 的官方文档,查看是否支持博通 100G网卡。

处理

dpdk-devbind

绑定igb_uio驱动。绑定之前,确保接口down掉。

支持的 PMD如下:

DPVS适配博通100G网卡_性能测试_07


参见:​​dpdk22.03 BNXT Poll Mode Driver​

dpdk-devbind -u xxx
dpdk-debbind -b igb-uio xxx

性能报告

博通网卡在DPDK中的性能测试报告

DPVS适配博通100G网卡_DPVS_08


DPVS适配博通100G网卡_tcp/udp_09

DPVS适配博通100G网卡_性能测试_10

参见:​​各个网卡在 DPDK各个版本的 PERFORMANCE REPORTS​

问题

rte_flow_validate 失败

rte_flow_validate 时,不允许action为 queue 且 queue_id 为的0的rte_flow 。

原因:

DPVS适配博通100G网卡_tcp/udp_11

感觉像是说:
之前RSS和FDIR不可以共同配置到一个网卡上。之前如果RSS disable,那么非0号rx_queue用来fdir/flow bifurcation, 0号队列接收剩余的所有包(相对于0号rx_queue给RSS使用)。后来RSS可以和FDIR共存,那么还是0号队列依然是给RSS使用,其他的非0 rx_queue可以用来设置RSS以及FDIR规则。这样改的目的是,代码改动简单。

DPVS适配博通100G网卡_DPVS_12


上面的rx_queue是否为0,从DPDK19.11至今(2022.3)是一直存在的。

上面作者临时给了一个未经过验证的草稿的 Patch。

参考:​​dpdk commit​

rte_flow_crete 时没有区分tcp/udp

两条rte_flow,一个是tcp的,一个是udp,先后执行 rte_flow_crate 插入,则插入第二条时,会报existed 的错误。

总结

DPVS适配博通100G网卡需要改动挺大。主要是rx_queue 0 不允许设置 FDIR(rte_flow) .

参考