目錄
- 一.虛擬機配置
- 1.添加一個網卡(橋接模式)
- 2.修改網卡類型
- 3.修改網卡名稱
- 4.重啟虛擬機
- 5.查看網卡信息
- 6.dpdk配置內存巨型頁
- 三 DPDK源代碼下載和編譯
- 1.下載源代碼
- 2.解壓源代碼
- 3.安裝編譯環境
- 4.編譯
- 5.設置dpdk的環境變量
- 6.禁止多隊列網卡
- 7.加載igb_uio模塊
- 8.網卡綁定
- 9.驗證測試案例
- 10.運行第一個DPDK程序
一.虛擬機配置
1.添加一個網卡(橋接模式)
2.修改網卡類型
在虛擬機本地文件存儲路徑下,打開文件名后綴為 .vmx 的文件,修改以下參數:
ethernet1.virtualDev = "e1000"
修改為:
ethernet1.virtualDev = "vmxnet3"
注意:修改時須在虛擬機關機狀態下修改
3.修改網卡名稱
通過命令sudo vim /etc/netplan/00-installer-config.yaml
可以看到如下:
將其修改為:
其次,通過命令sudo vim /etc/default/grub
將參數GRUB_CMDLINE_LINUX=""
修改為:GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US net.ifnames=0 biosdevname=0"
再執行命令sudo grub-mkconfig -o /boot/grub/grub.cfg
4.重啟虛擬機
5.查看網卡信息
ifconfig
查看是否有多隊列網卡:cat /proc/interrupts | grep eth
通過圖片展示信息可以看到此時為一個普通網卡eth1和一個多隊列網卡eth0
6.dpdk配置內存巨型頁
Ubuntu20.04支持內存巨型頁,但是還是要我們修改啟動參數,設置巨型頁大小和數量,設置方法是修改linux啟動參數,我們需要修改**/etc/default/grub文件的GRUB_CMDLINE_LINUX參數,添加default_hugepages=1G hugepagesz=2M hugepages=1024**
sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US net.ifnames=0 biosdevname=0 default_hugepages=1G hugepagesz=2M hugepages=1024"
再執行命令:sudo grub-mkconfig -o /boot/grub/grub.cfg
三 DPDK源代碼下載和編譯
1.下載源代碼
官方地址:Download
由于DPDK各版本之間差異較大,編譯過程以實際情況為準,此處演示版本為 DPDK 19.08.2 版
2.解壓源代碼
將下載的DPDK壓縮包放置到合適的目錄中,此處我的路徑為:/home/zloser/share/
通過命令:tar -xJf dpdk-19.08.2.tar.xz
解壓后得到/home/zloser/share/dpdk-stable-19.08.2的源代碼dpdk-stable-19.08.2
3.安裝編譯環境
sudo apt-get install libnuma-dev
4.編譯
注意:編譯需要在root權限下
cd dpdk-stable-19.08.2/
執行腳本命令:./usertools/dpdk-setup.sh
選擇:39 回車
Option:39
編譯成功后輸入:60 退出,在該目錄下會存在一個新的文件夾:x86_64-native-linux-gcc
5.設置dpdk的環境變量
執行命令:
export RTE_SDK=/home/zloser/share/dpdk-stable-19.08.2
(修改為自己的路徑)
export RTE_TARGET=x86_64-native-linux-gcc
6.禁止多隊列網卡
通過上述操作可以知道多隊列網卡為:eth0
通過命令使其禁止:sudo ifconfig eth0 down
7.加載igb_uio模塊
執行腳本命令:./usertools/dpdk-setup.sh
Option:43
8.網卡綁定
igb_uio模塊加載成功后,我們選擇49綁定igb_uio模塊到eth0,輸入PCI地址:0000:03:00:0,將網卡綁定到igb_uio模塊.
Option:49
綁定成功后如下圖所示,否則綁定失敗,需重新綁定.
9.驗證測試案例
Option:53
根據自己虛擬機的核心數選擇bitmask值,否則測試出錯.
bitmask:7(此處虛擬機核心數為8)
輸入指令 show port info 0
查看接口信息
輸入:quit
退出
10.運行第一個DPDK程序
dpdk的源代碼中有很多例子程序,都放在example目錄中,其中有個最簡單的程序helloworld,進入example/helloworld中,直接make,可以編譯出helloworld程序。最后我們使用root權限執行
make
sudo ./build/helloworld
環境配置成功!!!