DPDK 22.07安装-ubuntu 22.04

DPDK 安装指导

CentOS篇

Content

Version History

Content

1. 概述

1.1 介绍

1.2 简介

2. TOP环境

3. DPDK安装

2.1 软件版本

2.2 依赖工具

2.3 编译DPDK

2.4 安装网卡驱动

2.5 配置大内存页面

2.6 编译安装l3-fwd

4. DPDK 22.07-l2fwd

5. 设备下电以后配置

6. FAQ

1.概述

此文档介绍DPDK在ubuntu22.04上的安装步骤和FAQ

1.1 介绍

待补充

1.2 简介

待补充

2.TOP环境

3.DPDK安装

2.1 软件版本

DPDK:dpdk-22.07

ubuntu版本:20.04.6

linux内核:5.15.0-88-generic

2.2 依赖工具

a、安装net-tools工具

apt install net-tools

b、安装ssh-server

apt install openssh-server

service ssh start

c、设置清华源

sed -i "s@http://.archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

sed -i "s@http://.security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

d、设置系统依赖

apt install build-essential

apt install python3.8

apt install python3-pip

pip3 install meson ninja --user(pip3安装meson默认安装在/home/tp/.local/bin下,需要将其添加到环境变量中,之后才可使用:export PATH=PATH : PATH:PATH:HOME/.local/bin)

apt install python3-pyelftools

apt install libnuma-dev

apt install ninja-build

apt install meson

2.3 编译DPDK 

解压DPDK压缩包

cd dpdk-22.07

meson build

cd build

ninja

ninja install

更新配置文件

#ldconfig

2.4 安装网卡驱动

git clone http://dpdk.org/git/dpdk-kmods

cd dpdk-kmods/linux/igb_uio

make

modprobe uio

insmod igb_uio.ko intr_mode=legacy

#lsmod | grep uio
#rmmod igb_uio

绑定网卡之前需要关闭linux下的网卡

ifconfig enp1s0 down

进入目录usertools,0000:01:00.0为网卡bus号

./dpdk-devbind.py –b=igb_uio 0000:01:00.0 0000:02:00.0 0000:03:00.0 0000:04:00.0

./dpdk-devbind.py –s

减绑用-u

./dpdk-devbind.py –u 0000:02:05.0

将网卡绑定为原始驱动

./dpdk-devbind.py –b igb 0000:02:05.0

2.5 配置大内存页面

配置Huge Pages:DPDK需要使用Huge Pages来提供更高的内存性能

usertools/dpdk-hugepages.py --setup 1G

2.6 编译安装l3-fwd

进入dpdk-22.07/examples/l3fwd/

编译

make

进入build目录,运行

l3fwd -l 1-2 -n 4 -- -P -p 0x3 --config="(0,0,1),(1,0,2)"

如果需要指定客户端服务器的mac地址,使用如下的参数,否则客户端和服务器必须配置成02:00:00:00:00:00和02:00:00:00:00:01

l3fwd -l 1,2 -n 4 -- -p 0x3 --config="(0,0,1),(1,0,2)" --parse-ptype --eth-dest=0,30:fd:65:32:f0:6f --eth-dest=1,30:fd:65:32:f0:72

DPDK的EAL(Environment Abstraction Layer)参数配置用于控制和优化DPDK的运行环境。

===============================================================================

常用的EAL参数配置:

-c  <coremask>:指定DPDK应用程序将在哪些CPU核心上运行。<coremask>是一个十六进制的位掩码,每一位对应一个CPU核心。例如,使用-c 0x3参数将使DPDK应用程序在CPU核心0和1上运行。

-n  <numa>:指定DPDK应用程序将在哪个NUMA节点上运行。<numa>是一个整数,表示NUMA节点的索引。例如,使用-n 0参数将使DPDK应用程序在NUMA节点0上运行。

-l  <lcorelist>:指定DPDK应用程序将使用哪些逻辑核心(线程)。<lcorelist>是一个以逗号分隔的逻辑核心列表。例如,使用-l 0,2,4参数将使DPDK应用程序使用逻辑核心0、2和4。

--file-prefix  <prefix>:指定DPDK应用程序的文件名前缀。<prefix>是一个字符串,用于生成DPDK应用程序的日志文件和统计文件的名称。默认情况下,文件名前缀是rte。

--socket-mem  <size>:指定DPDK应用程序在每个NUMA节点上分配的内存大小。<size>是一个整数,表示以MB为单位的内存大小。例如,使用--socket-mem 1024参数将使DPDK应用程序在每个NUMA节点上分配1GB的内存。

--single-file-segments:将DPDK应用程序的内存分配在单个文件中,而不是多个文件中。这可以提高内存分配的效率。

--legacy-mem:使用传统的内存管理模式,而不是使用Huge Pages。这在某些情况下可能更容易配置和管理,但可能会导致性能下降。

常用的l3fwd参数配置:

-p  PortMask参数指定使用的网口,例如,假设当前有 4 个网口由 dpdk 进行管理,则 0x3 表示使用网口0和 网口1,0xf 表示使用网口0、网口1、网口2 和网口3。

-P参数表示将所有网口设置为混杂模式,以便收到所有数据包。

--config  (port,queue,lcore)[,(port,queue,lcore)]:参数用以配置网口、队列、核之间的对应关系,例如:--config (0,0,1) 表示网口 0 (0-N)的队列 0 由核 1 (0-N)进行处理。

===============================================================================

运行结果:

$ ./examples/l3fwd/build/l3fwd -l 1-2 -n 4 -- -P -p 0x3 --config="(0,0,1),(1,0,2)"

EAL: Detected 4 lcore(s)

EAL: Detected 1 NUMA nodes

EAL: Detected shared linkage of DPDK

EAL: Multi-process socket /var/run/dpdk/rte/mp_socket

EAL: Selected IOVA mode 'PA'

EAL: Probing VFIO support...

EAL: Probe PCI driver: net_ixgbe (8086:154d) device: 0000:03:00.0 (socket 0)

EAL: Probe PCI driver: net_ixgbe (8086:154d) device: 0000:03:00.1 (socket 0)

EAL: Probe PCI driver: net_ixgbe (8086:154d) device: 0000:04:00.0 (socket 0)

EAL: Probe PCI driver: net_ixgbe (8086:154d) device: 0000:04:00.1 (socket 0)

EAL: No legacy callbacks, legacy socket not created

LPM or EM none selected, default LPM on

Initializing port 0 ... Creating queues: nb_rxq=1 nb_txq=2... Port 0 modified RSS hash function based on hardware support,requested:0xa38c configured:0x8104

 Address:A0:36:9F:30:7A:D8, Destination:02:00:00:00:00:00, Allocated mbuf pool on socket 0

LPM: Adding route 198.18.0.0 / 24 (0)

LPM: Adding route 198.18.1.0 / 24 (1)

LPM: Adding route 2001:200:: / 64 (0)

LPM: Adding route 2001:200:0:1:: / 64 (1)

txq=1,0,0 txq=2,1,0

Initializing port 1 ... Creating queues: nb_rxq=1 nb_txq=2... Port 1 modified RSS hash function based on hardware support,requested:0xa38c configured:0x8104

 Address:A0:36:9F:30:7A:DA, Destination:02:00:00:00:00:01, txq=1,0,0 txq=2,1,0

Skipping disabled port 2

Skipping disabled port 3

Initializing rx queues on lcore 1 ... rxq=0,0,0

Initializing rx queues on lcore 2 ... rxq=1,0,0

Checking link statusdone

Port 0 Link up at 10 Gbps FDX Autoneg

Port 1 Link up at 10 Gbps FDX Autoneg

L3FWD: entering main loop on lcore 1

L3FWD:  -- lcoreid=1 portid=0 rxqueueid=0

L3FWD: entering main loop on lcore 2

L3FWD:  -- lcoreid=2 portid=1 rxqueueid=0

4.DPDK 22.07-l2fwd

进入dpdk-22.07/examples/l2fwd/

编译

make

运行

./l2fwd -l 0-3 -n 4 -- -P -q 4 -p 0x3 --no-mac-updating

如果需要指定客户端服务器的mac地址,使用如下的参数

l3fwd -l 1,2 -n 4 -- -p 0x3 --config="(0,0,1),(1,0,2)" --parse-ptype --eth-dest=0,30:fd:65:32:f0:6f --eth-dest=1,30:fd:65:32:f0:72

常用的l2fwd参数配置:

p  PORTMASK:要配置的端口的十六进制位掩码

P:可选,将所有端口设置为混杂模式,以便无论 MAC 目标地址如何都接受数据包。如果没有此选项,则仅接受 MAC 目标地址设置为端口以太网地址的数据包。

q NQ:每个 lcore 的队列数(=端口)(默认为 1)

–[no-]mac-updating:启用或禁用 MAC 地址更新(默认启用),建议关闭,测试仪或者PC都可以使用自身的mac地址进行转发

–portmap=”(port,port)[,(port,port)]”:确定转发端口映射。

5.设备下电以后配置

#部分配置无法保存,所以如果发生设备重启\下电等,需要对如下配置重新操作

cd dpdk-kmods/linux/igb_uio

make

modprobe uio

insmod igb_uio.ko intr_mode=legacy

Ifconfig enp1s0 down

进入目录usertools,绑定驱动和网卡,02:05.0为网卡号

./dpdk-devbind.py –b=igb_uio 0000:02:05.0

./dpdk-devbind.py –s

./dpdk-hugepages.py --setup 1G

#不配置此参数会报错EAL参数异常

在l3fwd/build目录下

l3fwd -l 1-2 -n 4 -- -P -p 0x3 --config="(0,0,1),(1,0,2)"

6.FAQ

1、不需要配置ubuntu系统下的网卡IP,DPDK环境下的198.18.0.0/24网段并没有绑定IP,发包设备只需要配置网关的mac地址,网关IP可以配置任何198.18.0.0/24的IP

2、pkg-config --modversion libdpdk

回显22.07.0

3、解决:ERROR: Problem encountered: missing python module: elftools

pip install pyelftools --upgrade

pip3 install pyelftools --upgrade

4、遇到报错
Makefile:14: *** "no installation of DPDK found". Stop.

在l3fwd目录下执行

export PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig/"

5、执行L3fwd的时候如果遇到找不到库librte_fib.so.22

在l3fwd/build目录下

export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/lib64/

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要安装DPDK 22.11.2,您可以按照以下步骤进行操作: 1. 确认系统要求:DPDK支持多个操作系统,包括Linux、FreeBSD和Windows。确保您的操作系统符合DPDK的要求。 2. 下载DPDK:您可以从DPDK官方网站(https://www.dpdk.org/)上下载最新版本的DPDK。找到22.11.2版本的下载链接并下载压缩包。 3. 解压缩:将下载的压缩包解压到您选择的目录中。 4. 设置环境变量:在终端中运行以下命令将DPDK环境变量配置为所需的值: ``` export RTE_SDK=/path/to/dpdk/directory export RTE_TARGET=your_target_platform ``` 将`/path/to/dpdk/directory`替换为您解压缩DPDK的目录路径,将`your_target_platform`替换为您的目标平台,例如`x86_64-native-linuxapp-gcc`。 5. 编译DPDK:在终端中导航到DPDK目录,并运行以下命令来编译DPDK: ``` make config T=your_target_platform make ``` 这将根据您的目标平台进行编译。 6. 安装驱动程序:根据您的网络设备类型,DPDK提供了不同的驱动程序。您可以在`$RTE_SDK/$RTE_TARGET/kmod`目录中找到相应的驱动程序。按照DPDK官方文档中的指示安装适合您网络设备的驱动程序。 7. 配置DPDK:根据您的需求,您可以使用DPDK提供的各种配置选项对DPDK进行进一步配置。您可以通过编辑`$RTE_SDK/config/your_target_platform`文件来进行配置。 以上是安装DPDK 22.11.2的基本步骤。请注意,具体步骤可能因您的操作系统和环境而有所不同。如果您遇到任何问题,请参考DPDK官方文档或社区支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值