目录
- 一.虚拟机配置
- 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
环境配置成功!!!