DPDK使用linux drivers(二十九)

2021-10-08 18:03:19 字數 2808 閱讀 6282

不同的pmd可能需要不同的核心驅動程式才能正常工作。根據所用的pmd,應載入相應的核心驅動程式並將其繫結到網路埠。

乙個小的核心模組,用於設定裝置,將裝置記憶體對映到使用者空間並註冊中斷。在許多情況下,linux核心中包含的標準uio_pci_generic模組可以提供uio功能。可以使用以下命令載入該模組:

sudo modprobe uio_pci_generic
注意:

uio_pci_generic模組不支援虛函式的建立。

作為uio_pci_generic的替代,dpdk還包括igb_uio模組,該模組可在上述kmod子目錄中找到。可以如下所示載入它:

sudo modprobe uio

sudo insmod kmod/igb_uio.ko

注意

從dpdk v20.02開始預設禁用igb_uio模組。要構建它,應啟用配置選項config_rte_eal_igb_uio。計畫將igb_uio模組移動到其他git儲存庫。

注意

對於某些不支援傳統中斷的裝置,例如如果使用虛擬功能(vf)裝置,則可能需要使用igb_uio模組代替uio_pci_generic。

注意

如果啟用了uefi安全啟動,則linux核心可能會禁止在系統上使用uio。因此,用於dpdk的裝置應繫結到vfio-pci核心模組,而不是igb_uio或uio_pci_generic。有關更多詳細資訊,請參見下面的將網路埠繫結到核心模組和從核心模組解除繫結。

注意

如果用於dpdk的裝置繫結到uio_pci_generic核心模組,請確保iommu已禁用或直通。可以在x86_64系統上的grub命令列中在inommu = pt上新增intel_iommu = off或amd_iommu = off或intel_iommu = on或intel_iommu = on,或者在aarch64系統上新增iommu.passthrough = 1。

由於dpdk 1.7及更高版本提供vfio支援,因此對於支援使用vfio的平台,可以選擇使用uio。

與uio相比,依靠iommu保護,驅動程式更強大,更安全。要使用vfio,必須載入vfio-pci模組:

sudo modprobe vfio-pci
請注意,為了使用vfio,您的核心必須支援它。從3.6.0版開始,linux核心中已包含vfio核心模組,通常預設情況下會提供vfio核心模組,但是請查閱您的發行版文件以確保確實如此。

從linux 5.7版開始的vfio-pci模組支援虛擬功能的建立。將pf繫結到vfio-pci模組後,使用者可以通過sysfs介面建立vf,並將這些vf自動繫結到vfio-pci模組。

當pf繫結到vfio-pci時,它具有由隨機生成的初始vf令牌。出於安全原因,此令牌是只寫的,使用者無法直接從核心讀取它。要訪問vf,使用者需要使用令牌引數啟動pf,以uuid格式設定vf令牌,然後可以使用此新令牌訪問vf。

由於vfio-pci模組使用vf令牌作為內部資料來提供sr-iov pf和vf之間的協作,因此dpdk可以對繫結到乙個應用程式的所有pf裝置使用相同的vf令牌。可以通過eal引數–vfio-vf-token指定此vf令牌。

1. generate the vf token by uuid command

14d63f20-

8445

-11ea-

8900-1f

9ce7d5650d

2. sudo modprobe vfio-pci enable_sriov=12.

./usertools/dpdk-devbind.py -b vfio-pci 0000:86

:00.0

3. echo 2

>

/sys/bus/pci/devices/

0000:86

:00.0

/sriov_numvfs

4. start the pf:.-

25-n 4

-w 86

:00.0 \

--vfio-vf-token=

14d63f20-

8445

-11ea-

8900-1f

9ce7d5650d --file-prefix=pf --

-i5. start the vf:.-

29-n 4

-w 86

:02.0 \

--vfio-vf-token=

14d63f20-

8445

-11ea-

8900-1f

9ce7d5650d --file-prefix=vf0 --

-i

另外,要使用vfio,核心和bios都必須支援並配置為使用io虛擬化(例如intel®vt-d)。

注意

vfio-pci模組不支援在linux 5.7之前的版本中建立虛擬功能。

為了在以非特權使用者身份執行dpdk應用程式時正確執行vfio,還應設定正確的許可權。這可以通過使用dpdk安裝指令碼(位於dpdk-setup.sh,位於usertools目錄中)來完成。

注意

可以在沒有iommu的情況下使用vfio。儘管這與使用uio一樣不安全,但在iommu不可用的情況下,它的確使使用者可以保持vfio擁有的裝置訪問和程式設計的程度。

DPDK中文 DPDK工具 pdump

翻譯自 注意 pdump只能是主dpdk程式準備ok了 pdump依賴基於pmd的libpcap。這個選項預設在編譯的配置檔案是disable的 由於libpcap必須實現被安裝在板子上,並且開發檔案libpcap dev這種也要安裝 同時把build的配置檔案。config修改 config rt...

dpdk無鎖環形佇列的使用

入口使用dpdk,資料報解包分析後續處理執行緒效能太低,cpu很大一部分浪費在多執行緒鎖開銷上,於是想用dpdk無鎖佇列,看是否有改善。使用前不知道dpdk的ring是否能在收發包之外使用,也沒找到實際使用跟收發包無關的例子 也不需要使用mbuf,需要儲存乙個指標的佇列,直接拿過來用看看可不可以。前...

dpdk相關pktgen 的安裝以及使用

pktgen安裝 1.需要先正確安裝dpdk 一般情況選取最新版本,對應dpdk的最新版本 3.使用meson編譯pktgen 在編譯過程成會發現需要libdpdk庫,原因是使用meson,需要使用pkg config進行編譯,但pkg config預設庫目錄沒有libdpdk的目錄,dpdk預設安...