[DPDK] 多佇列同時從網絡卡接收資料
阿新 • • 發佈:2022-12-02
在DPDK中,如何讓多個核/多個接收佇列同時從一個網絡卡接收資料呢?
struct rte_eth_conf port_conf_default = {
.rxmode = {
.mq_mode = ETH_MQ_RX_RSS,
},
.rx_adv_conf = {
.rss_conf = {
.rss_key = NULL,
.rss_hf = ETH_RSS_PROTO_MASK,
},
},
這裡選擇的RSS模式,是將收到的包根據hash結果分發到不同的佇列上。
內層選項的rss_hf
的作用是選擇對包的那些欄位進行hash,比如可以對TCP包頭進行hash。ETH_RSS_PROTO_MASK
的意思是對(幾乎)所有欄位進行hash。
但直接使用這個選項去配置網絡卡很大概率會報錯:
Ethdev port_id=0 invalid rss_hf: 0x3ffffc, valid value: 0x38d34
意思是你當前的網絡卡不支援ETH_PROTO_MASK
的所有選項,所以你需要進行一點修改:
local_port_conf.rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads;