日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DPDK (1) - PMD驱动方案

發(fā)布時間:2024/8/1 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DPDK (1) - PMD驱动方案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為了支持Userspace IO,DPDK可以選擇如下三種類型的驅(qū)動:

  • uio_pci_generic
  • uio + igb_uio
  • vfio-pci

uio_pci_generic是內(nèi)核原生的一種uio驅(qū)動,該驅(qū)動提供了uio功能,直接使用如下命令加載:

sudo modprobe uio_pci_generic

這個原生驅(qū)動是不支持VF設(shè)備創(chuàng)建的,因此DPDK也提供了另外一種uio驅(qū)動igb_uio,它是可以用于宿主機上來創(chuàng)建VF設(shè)備的。適用性比內(nèi)核原生的uio_pci_generic更強一些,其中igb_uio.ko是由dpdk代碼庫編譯出來的:

sudo modprobe uio sudo insmod kmod/igb_uio.ko

從DPDK release 1.7開始,DPDK對VFIO進行了支持,因此VFIO Driver成了新的可選項:

sudo modprobe vfio-pci

當(dāng)DPDK使用vfio來實現(xiàn)網(wǎng)絡(luò)功能時可以直接加載該驅(qū)動。

特別注意:
對于使用VFIO驅(qū)動來使用DPDK的場景,必須保證:
1.硬件上支持支持VT-x、VT-d,BIOS中需要打開相關(guān)特性
2.對于物理機的內(nèi)核中需要支持IOMMU特性(在啟動參數(shù)添加 iommu=pt, intel_iommu=on)

物理機上使用DPDK

在物理機上使用DPDK,需要內(nèi)核中加載DPDK PMD Driver,那么需要使用如下命令加載DPDK的驅(qū)動:

modprobe uio insmod igb_uio usertools/dpdk-devbind.py --bind=igb_uio bb:ss.f

當(dāng)然這里我們也可以使用上面介紹過的其他類型的內(nèi)核模塊:uio_pci_generic 或者 vfio-pci 。

虛擬機中使用DPDK

對于支持SR-IOV的網(wǎng)卡來說,比如Intel的X710/XL710網(wǎng)卡,在虛擬化的環(huán)境中使用,網(wǎng)卡可以進行透傳,本文以透傳的方式來進行實踐介紹,對于支持SR-IOV的網(wǎng)卡來說,它分為PF和VF模塊,在宿主機中需要加載對應(yīng)的PF Driver和VF Driver來驅(qū)動這兩個子模塊。

宿主機

在宿主機上可以直接使用Linux kernel官方的intel PF驅(qū)動,比如i40e,也可以使用DPDK專用的 PMD PF驅(qū)動。如果使用了DPDK PMD PF 驅(qū)動,那么這個宿主機網(wǎng)絡(luò)的管理權(quán)就完全交給DPDK了。

  • 方案一:i40e驅(qū)動
rmmod i40e (To remove the i40e module) insmod i40e.ko max_vfs=2,2 (To enable two Virtual Functions per port)

通過重新加載intel提供的i40e驅(qū)動,并指定max_vfs參數(shù)來創(chuàng)建VF功能,對于該網(wǎng)卡的VF功能內(nèi)核默認使用的驅(qū)動為i40evf,因此在使用dpdk之前,還需要在Host上將VF與i40evf驅(qū)動解綁,重新綁定到vfio-pci驅(qū)動上:

modprobe vfio-pci

宿主機中需要使用vfio_pci這個內(nèi)核模塊來對需要分配給客戶機的設(shè)備進行隱藏, 從而讓宿主機和未被分配該設(shè)備的客戶機都無法使用該設(shè)備, 達到隔離和安全使用的目的。而在客戶機不需要使用該設(shè)備后, 讓宿主機使用該設(shè)備, 則需要將其恢復(fù)到使用原本的驅(qū)動。

這里也可以利用DPDK提供的腳本dpdk_bind_nic.py來設(shè)置:

usertools/dpdk-devbind.py --bind=vfio-pci bb:ss.f

此時該VF已經(jīng)由vfio驅(qū)動接管,對于上一章介紹的,如果在宿主機上使用VFIO DPDK,那么此時就已經(jīng)滿足了條件,但是我們此處是為了演示虛擬機中使用DPDK,所以此時不能啟動DPDK去使用該VF,而需要在虛擬機中透傳該設(shè)備來使用。

  • 方案二:DPDK PMD PF驅(qū)動

需要內(nèi)核啟動參數(shù)中使能iommu=pt, intel_iommu=on,然后啟動后加載DPDK驅(qū)動:

modprobe uio insmod kmod/igb_uio.ko usertools/dpdk-devbind.py --bind=igb_uio bb:ss.f echo 2 > /sys/bus/pci/devices/0000\:bb\:ss.f/max_vfs (To enable two VFs on a specific PCI device)

虛擬機

對于虛擬機來說,透傳過來的VFIO網(wǎng)卡對于虛擬機來說就相當(dāng)于是一個常規(guī)的物理網(wǎng)卡,默認就會使用該物理網(wǎng)卡對應(yīng)的驅(qū)動,比如i40e driver,那么如果要在虛擬機中使用DPDK,就需要把虛擬網(wǎng)卡重新綁定到igb_uio驅(qū)動,這樣就可以在虛擬機中使用DPDK了。實際上操作還是與宿主機中一樣:

modprobe uio insmod kmod/igb_uio.ko usertools/dpdk-devbind.py --bind=igb_uio bb:ss.f

總結(jié)

以上是生活随笔為你收集整理的DPDK (1) - PMD驱动方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。