DPDK22.11环境搭建

1.工具下载

1.ubuntu

安装工具:

sudo apt-get install meson

sudo apt-get install ninja

sudo apt-get install python3-pyelftools

2.centos

yum install -y python3-pip numactl-devel libibverbs-utils libpcap-devel

//安装libpcap依赖包

wget http://mirror.centos.org/centos/9/PowerTools/x86_64/os/Packages/libpcap-devel-1.9.1-5.el8.x86_64.rpm

// libpcap-devel 无法下载使用上面安装包路径

yum install -y libpcap.x86_64

sudo rpm -ivh libpcap-devel-1.9.1-5.el8.x86_64.rpm

pip3 install -i Simple Index meson ninja

2.启动项更新

启动iommu并配置大页内存:

sudo vim /etc/default/grub

GRUB_CMDLINE_LINUX参数,添加intel_iommu=on iommu=pt default_hugepages=1G hugepagesz=2M hugepages=1024

保存退出后执行如下命令,然后重启服务器

sudo grub-mkconfig -o /boot/grub/grub.cfg

如果是ubuntu可以直接输入命令update-grub.

3.下载编译

进入dpdk官网https://www.dpdk.org/下载dpdk22.11.个人觉得github上下载dpdk更快点,同时还能切换到过去版本。但是可能有时候无法登录github环境。

进入dpdk目录

meson build
cd build
ninja
ninja install

3.1绑定PMD

uio和vfio都可以.uio或者vfio的作用是将网卡的pcie bar空间以及中断消息等暴露给dpdk。因为dpdk是应用程序,无法直接访问pcie的bar空间。

UIO

先编译dpdk-kmod.

dpdk-kmod编译
git clone git://dpdk.org/dpdk-kmods                       //已有合适的安装包
cd dpdk-kmods/linux/igb_uio/
make

安装

insmod dpdk-kmods/linux/igb_uio/igb_uio.ko

注意:加载igb_uio的时候出现一下问题,原因是该ko文件需要依赖,先加载modprobe uio

加载dn200驱动,将网卡处于down的状态

绑定网卡,且查看网卡状态.

usertools/dpdk-devbind.py --bind=igb_uio enp1s0f0
usertools/dpdk-devbind.py --status

 DPDK22.11环境搭建_第1张图片

VFIO 

modprobe vfio-pci
usertools/dpdk-devbind.py --bind=vfio-pci 01:00.0

其他基本一致.

3.2 创建大页

mkdir -p /dev/hugepages
mountpoint -q /dev/hugepages || mount -t hugetlbfs nodev /dev/hugepages
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages;

3.3 packetgen

下载packetgen

git clone https://github.com/pktgen/Pktgen-DPDK.git

切换分支到23.06

进入相应目录,make

./Builddir/app/pktgen -l 0-2 -n 4 -a 0000:01:00.0 -- -P -T -m "[1:2].0"

3.4 运行

进入build目录下。

./app/dpdk-testpmd -l 0-2 --main-lcore 2 -n 4 -a 01:00.0 -a 01:00.1 -- --record-core-cycles --record-burst-stats --coremask=3 --rxq=2 --txq=2 -i

你可能感兴趣的:(DPDK,网络,驱动开发)