DPDK 安装指导银河麒麟篇

DPDK 安装指导

银河麒麟篇

Content

Version History

Content

1. 概述

1.1 介绍

1.2 简介

2.DPDK 22.07安装

2.1 软件版本

2.2 依赖工具

2.3 编译DPDK

2.4 安装网卡驱动

2.5 配置大内存页面

2.6 编译安装l3-fwd

3.DPDK 22.07-l2fwd

4.设备下电以后配置

5.FAQ

1.概述

此文档介绍DPDK在银河麒麟上的安装步骤和FAQ

1.1 介绍

待补充

1.2 简介

待补充

2.DPDK 22.07安装

2.1 软件版本

DPDK:dpdk-22.07

麒麟版本:麒麟桌面V10

linux内核:

2.2 依赖工具

设置系统依赖

apt install python3.8

apt install python3-pip

pip3 install meson ninja --user

apt install python3-pyelftools

apt install libnuma-dev

apt install ninja-build

apt install meson

apt install pkg-config

2.3 编译DPDK 

解压DPDK压缩包

cd dpdk-22.07

meson build

报错后进入config/arm,修改meson.build文件,558行的error修改为warning

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下的网卡,绑定网卡需要知道网卡的bus号

ifconfig enp1s0 down

进入目录usertools

./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

3.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)]”:确定转发端口映射。

4.设备下电以后配置

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

cd dpdk-kmods/linux/igb_uio

make

modprobe uio

insmod igb_uio.ko intr_mode=legacy

Ifconfig enp1s0 down

进入目录usertools

./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)"

5.FAQ

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

2、报错pkg-config找不到

apt install pkg-config

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/

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值