[英]How to load balance by way of round-robin in DPDK using RTE_FLOW?
在我的問題中,RSS 在 CPU 內核之間沒有很好的負載平衡情況下,rx 數據包已被 mac 和 ip 之間的插入標記修改,因此 dpdk 無法識別它。假設我想通過循環法進行負載平衡,多個rx 隊列已設置。 在這個問題的答案中:How to disable RSS but still using multiple RX queues in DPDK? 它說可以通過使用 RTE_FLOW 以循環方式進行負載平衡。 語法上正確的方法是什么? 我想知道 API 或用於設置循環法的結構這里是我的運行時環境信息:1)dpdk 版本:19.11.9 2)nic PMD:ixgbe 3)fireware:825999 和 XXV710 4)操作系統版本: ubuntu 16.04 kernel:4.4.0-186
根據問題
RSS 在 CPU 內核之間沒有很好的負載平衡,如果rx 數據包已被 mac 和 ip 之間的插入標簽修改
有幾個項目需要澄清。 所以讓我解釋一下
RAW Pattern
。 此功能的目的是支持默認情況下 NIC 不理解的特殊協議,如(VXLAN、GENEVE、RTP 和其他協議)。因此,根據 NIC、供應商、對 L2 的 RSS 支持和固件,在端口初始化或 RTE_FLOW 特定配置中計算字段之間的 RSS 的能力各不相同。 例如 RSS ETH 支持
I40E_INSET_DMAC | I40E_INSET_SMAC
I40E_INSET_DMAC | I40E_INSET_SMAC
NH_FLD_ETH_TYPE and.NET_PROT_ETH
RSS_DMAC_INDEX
FLOW_KEY_TYPE_VLAN and FLOW_KEY_TYPE_CH_LEN_90B
因此,對於 NIC ixgbe and XXV710
,ethe.net 和 IP 之間的custom header
沒有現成的支持。
備擇方案:
RAW
header 定義12.2.6.2 。 一旦供應商添加了支持,您就可以創建一個簡單的traffic spread tool
,該工具將確保以循環方式在所需的 RX 隊列中分配流量。注意:我不建議使用基於 HW 的 static Round Robin,因為它會產生 2 倍問題
對於選項 4(軟件模型):
rte_distributor
庫根據自定義分配流量。rte_eventdev
與 atomic model 一起使用,將工作負載分散到多個 worker 上。[來自評論的澄清]:
[ANSWER]由於您使用的是自定義 header 而不是通用 VLAN|IP|Port 此建議是不正確的。 正如您在問題和評論中所澄清的那樣,您希望像 RSS 一樣分發自定義 header。
[ANSWER]如上所述,並非所有 nic 都支持 RSS 和 RAW。 由於您當前的 NIC 是ixgbe and i40e
,因此不太可能為自定義 header 解析和執行 RSS function。 您可以為 i40e 嘗試選項 2(與英特爾一起創建新的 ddp)以實現相同的效果或按照選項 4 中的建議在 SW 中實現。
[ANSWER]通常使用用於重現錯誤的代碼片段或步驟進行更新。 但目前的問題更像是澄清。 請參考上文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.