1、基础环境

1.1、硬件配置

1.2、操作系统要求

2、测试环境编译测试过程

2.1、升级GCC版本至GCC-7.3.0

步骤1 升级GCC依赖包设置
编译安装gmp:

cd /hometar -xvf /home/gmp-6.1.2.tar.bz2cd /home/gmp-6.1.2./configure --prefix=/usr/local/gmp-6.1.2makemake install

编译安装mpfr:

cd /hometar -zxvf mpfr-3.1.5.tar.gzcd /home/mpfr-3.1.5./configure --prefix=/usr/local/mpfr-3.1.5 --with-gmp=/usr/local/gmp-6.1.2makemake install

编译安装mpc:

cd /hometar -zxvf mpc-1.0.3.tar.gzcd /home/mpc-1.0.3./configure -prefix=/usr/local/mpc-1.0.3 -with-gmp=/usr/local/gmp-6.1.2 -with-mpfr=/usr/local/mpfr-3.1.5makemake install

安装isl:

cd /hometar -xvf /home/isl-0.18.tar.bz2cd /home/isl-0.18yum -y install gmp-devel./configure --prefix=/usr/local/isl-0.18 --with-gmp=/usr/local/gmp-6.1.2makemake install

步骤2 安装gcc 7.3.0

cd /hometar -zxvf gcc-7.3.0.tar.gzcd /home/gcc-7.3.0./configure --prefix=/usr/local/gcc-7.3.0 --enable-languages=c,c++,fortran --enable-shared --enable-linker-build-id --without-included-gettext --enable-threads=posix --disable-multilib --disable-nls --disable-libsanitizer --disable-browser-plugin --enable-checking=release --build=aarch64-linux --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-3.1.5 --with-mpc=/usr/local/mpc-1.0.3 --with-isl=/usr/local/isl-0.18export LD_LIBRARY_PATH=/usr/local/mpc-1.0.3/lib:/usr/local/gmp-6.1.2/lib:/usr/local/mpfr-3.1.5/lib:/usr/local/gcc-7.3.0/lib64:/usr/local/isl-0.18/lib:/usr/local/lib:/usr/lib:$LD_LIBRARY_PATHexport PATH=/usr/local/gcc-7.3.0/bin:$PATH./configure --prefix=/usr/local/gcc-9.3.0 --enable-languages=c,c++,fortran --enable-shared --enable-linker-build-id --without-included-gettext --enable-threads=posix --disable-multilib --disable-nls --disable-libsanitizer --disable-browser-plugin --enable-checking=release --build=aarch64-linux --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-3.1.5 --with-mpc=/usr/local/mpc-1.0.3 --with-isl=/usr/local/isl-0.18export LD_LIBRARY_PATH=/usr/local/mpc-1.0.3/lib:/usr/local/gmp-6.1.2/lib:/usr/local/mpfr-3.1.5/lib:/usr/local/gcc-9.3.0/lib64:/usr/local/isl-0.18/lib:/usr/local/lib:/usr/lib:$LD_LIBRARY_PATHexport PATH=/usr/local/gcc-9.3.0/bin:$PATHmake -j 40make -j 40 installgcc -v

步骤3 设置环境变量

在etc/profile文件添加:

vi /etc/profile

export LD_LIBRARY_PATH=/usr/local/mpc-1.0.3/lib:/usr/local/gmp-6.1.2/lib:/usr/local/mpfr-3.1.5/lib:/usr/local/gcc-7.3.0/lib64:/usr/local/isl-0.18/lib:/usr/local/lib:/usr/lib:$LD_LIBRARY_PATH

export PATH=/usr/local/gcc-7.3.0/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/mpc-1.0.3/lib:/usr/local/gmp-6.1.2/lib:/usr/local/mpfr-3.1.5/lib:/usr/local/gcc-9.3.0/lib64:/usr/local/isl-0.18/lib:/usr/local/lib:/usr/lib:$LD_LIBRARY_PATH

export PATH=/usr/local/gcc-9.3.0/bin:$PATH

步骤4 加载环境变量

生效

source /etc/profile

2.2、配置内存大页和系统启动设置

步骤1 修改sysctl.conf增加内存大页设置

vim /etc/sysctl.conf

vm.nr_hugepages = 120

步骤2 修改系统启动项增加iommu设置

vim /boot/efi/EFI/openEuler/grub.cfg

增加iommu.passthrough=1

设置完成后重启系统,执行cat /proc/cmdline确认设置是否生效

cat /proc/cmdline

2.3、编译安装DPDK版本19.08.2

步骤1 安装DPDK所需依赖包

安装numa库

yum install  numactl-devel

安装libcap第三方软件,提供pcap.h

yum install  libpcap-devel

步骤2 解压编译dpdk软件包

unzip dpdk-19.08.2.zipcd dpdk-19.08.2/

打开config/common_base文件中的 Mellanox网卡PMD驱动开关:

vi common_base


设置 CONFIG_RTE_LIBRTE_MLX5_PMD=y
设置 CONFIG_RTE_LIBRTE_MLX5_DEBUG=y

export RTE_TARGET=arm64-armv8a-linuxapp-gcc  # 以当前环境CPU架构为准export RTE_SDK=/root/dpdk-19.08.2make install T=$RTE_TARGET

如果这里报错,在执行一次步骤1

步骤3 Mellanox网卡驱动安装

(1)Mellanox官网下载对应OS的Mellanox驱动
https://www.mellanox.com/page/products_dyn?product_family=27
(2)配置环境变量,现在rpm包编译使用的cpu核最大个数,否则编译报错

echo %_smp_ncpus_max 16 > ~/.rpmmacros

(3)安装驱动:

 ./mlnx_add_kernel_support.sh -m ./ --without-mlx5_fpga_tools --kmp -v./mlnxofedinstall --dpdk --upstream-libs  --add-kernel-support/etc/init.d/opnibd restart

步骤4 添加dpdk环境变量

vi ~/.bashrc

export RTE_TARGET=arm64-armv8a-linuxapp-gcc # 以当前环境CPU架构为准
export RTE_SDK=/root/dpdk-19.08.2

将dpdk环境变量加入.bashrc文件中
source ~/.bashrc

2.4 、网卡绑定设置

DPDK会利用自己的igb_uio/vfio驱动来接管传统内核驱动,这样往往会导致一些问题,就是我们一些传统的类unix工具,诸如ifconfig、ip、ethtool等工具无法再查看被DPDK驱动接管的网卡状态。
在传统linux场景下,我向看一下网卡丢包原因、网卡寄存器状态、网卡的feature,通过一个ethtool就可以搞定,但是到了DPDK这里就行不通了,因为上述传统工具实际上都是去内核拿数据,ethtool底层就是用ioctl去读的内核数据,但是现在网卡驱动已经被DPDK驱动接管了,用ethtool再也拿不到信息了。

注意:

Mellanox网卡不需要绑定,Intel && Broadcom需要绑定,Intel && Broadcom需要使用DPDK驱动,绑定成功后在“ip a”下不可见

步骤1加载igb_uio模组

cd usertools/./dpdk-setup.sh

./dpdk-devbind.py --status

查看当前网卡状态
如果绑定的网卡状态是Active,需要执行:
ifconfig ethx down 或者 ifdown ethx

步骤2 绑定被测网口到用户态

./dpdk-devbind.py --bind=igb_uio 0000:bd:00.0 0000:bd:00.1./dpdk-devbind.py --status


绑定成功

2.5 、使用testpmd进行压力测试

该工具所在位置

cd /home/dpdk-stable-19.08.2/arm64-armv8a-linuxapp-gcc/build/app/test-pmd

备注:列出部分命令行参数意义,详细意义可以在DPDK官网获取。

参数 说明
-c 指定参与转发的CPU核掩码
-n 指定系统内存通道个数
-w 指定参与DPDK转发的网口的PCIE地址
–rxd/txd 指定转发使用的网口队列深度
–txq/rxq 指定参与转发的网卡队列数
–nb-cores 指定实际参与转发的cpu核数
-i 交互模式启动程序
开始测试
./testpmd -l 2-11 -n 4 -- -i --rxq=1 --txq=1 --rxd=4096 --txd=4096 --nb-cores=2 --burst=64 --mbuf-size=2048 --total-num-mbufs=20480 --mbcache=512


出现报错信息:testpmd: No probed ethernet devices
(1)如果你使用的是 Intel 的网卡,那么上述的步骤当然没有问题。但笔者使用了华为的网卡,所以还需要做一些适配的工作,需要安装华为方提供的网卡驱动。
(2)还有一种可能是内存不足造成的,绑定网卡后,导致大页内存分配不足,扩大内存就好了。

解决后:

testpmd> show port stats alltestpmd> set fwd txonlytestpmd> start


2.6 、网卡解绑

查看网卡状态:

./dpdk-devbind.py --status


进行解绑:

./dpdk-devbind.py  -u 0000:01:00.1./dpdk-devbind.py  -u 0000:01:00.0

再次查看网卡状态:

./dpdk-devbind.py --status


发现该网卡在Other里,无法正常使用

解绑后,需要再重新绑会原来的驱动,该卡原来的驱动是mlx5_core,执行:

./dpdk-devbind.py  -b mlx5_core 0000:01:00.0
./dpdk-devbind.py  -b mlx5_core 0000:01:00.1

查看网卡状态,恢复正常:

./dpdk-devbind.py --status

2.7 、运行例子

执行example/下的例子要先绑定网卡。

Helloworld,testpmd,skeleton的测试例子就不说了,l3fwd还不懂怎么构建拓扑,这里

详细说一下l2fwd二层转发的例子:

模型

这里用二张网卡测试,以上面的模型收发包。

运行:./build/l2fwd -c 0x50 -n 4 – -p 0x0c -q 1

参数分为两部分,以 – 分隔,前面部分是配置EAL环境的,后面是程序的参数

-c 0x50 是指用4,6两个核,-n 4指的是用4个内存通道。0x50是core的16进制掩码。

-p 0x0c 是指网卡的16进制掩码,即2,3两个口。

-q 1 是用一个无锁队列。

由于网卡是由DPDK接管的,是没有IP地址的,所以是以MAC地址通信。确定好各自的源MAC和目的MAC,类似于二层交换机的功能。

DPDK — 安装部署相关推荐

  1. DPDK — 安装部署(CentOS 7)

    目录 文章目录 目录 官方手册 环境参数 环境准备 RT Kernel 基础软件依赖 设置大页内存 安装 DPDK 获取 DPDK 代码 设置环境变量 编译安装 目标环境目录 加载内核模块 绑定网卡到 ...

  2. DPDK — 安装部署(Ubuntu 18.04)

    目录 文章目录 目录 环境参数 环境依赖准备 安装 DPDK 测试 附 1:Enable pcap 环境参数 Intel x86 Ubuntu 18.04 LTS Python 3.6 DPDK 18 ...

  3. 驱动 | 在linux下DPDK的部署及使用

    本文列出可用于在linux系统上安装.编译.初步使用DPDK的不完全参考. Last Modified: 2022/1/22 驱动 | 在linux下DPDK的部署及使用 安装 参考链接 安装 概念 ...

  4. 使用 KubeKey 安装部署 Kubernetes 与 Kube-OVN

    作者简介:林瑞超,锐捷网络开发工程师, KubeSphere 社区 contributor, 关注Kube-OVN, Cilium 等容器网络相关技术 背景 KubeKey 是 KubeSphere ...

  5. 2021年大数据Flink(三):​​​​​​​Flink安装部署 Local本地模式

    目录 Flink安装部署 Local本地模式 原理 操作 测试 Flink安装部署 Flink支持多种安装模式 - Local-本地单机模式,学习测试时使用 - Standalone-独立集群模式,F ...

  6. Mycat 读写分离 数据库分库分表 中间件 安装部署,及简单使用

    MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服 ...

  7. 【SVN】1. SVN 安装部署

    一. SVN概述 1. SVN 简介   Subversion 版本控制系统 简称 SVN.   SVN 是一个跨平台开放源代码的集中式版本控制系统,可以实现文件及目录的保存及版本回溯.   SVN ...

  8. Docker概述和安装部署

    概述 Docker产生的背景 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后 ...

  9. DSVS7050签名服务器的网站,吉大正元数字签名服务器-安装部署手册(COM版 VCTK_S接口)2.1.1.doc...

    吉大正元数字签名服务器-安装部署手册(COM版 VCTK_S接口)2.1.1 数字签名服务器v2.1.1 安装部署手册 (VSTK接口 COM版) V2.1.1 长 春 吉 大 正 元 信 息 技 术 ...

最新文章

  1. TextureView+MediaPlayer实现在线短视频播放
  2. Linux的inode的理解
  3. 继苏宁京东后 拼多多也宣布下调新款iPhone售价
  4. solr之搭建企业搜索平台,配置文件详细solrconfig.xml
  5. php mui.picker,www MUI框架里边有很多例子教你如何使用 开发手机界面 WEB(ASP,PHP,...) 251万源代码下载- www.pudn.com...
  6. springboot 对象 空指针_C++ this指针的理解和作用
  7. QT学习笔记之MySql如何计算两个时间段相隔的天数
  8. Confluence 6 目录中的数据库
  9. Unix网络编程 chart
  10. 算法 Tricks(五)—— 二进制逻辑运算
  11. 苹果Mac经典办公套件:Microsoft 365 支持辅助功能,高效工作
  12. 性能优化:要2个月才跑完的程序我是如何优化到到4小时的?
  13. javascript弹窗和基本数据类型
  14. python3中单引号,双引号,三个单引号 ,三个双引号的差别,以及反斜杠的用法
  15. OSChina 周三乱弹 ——发福利的日子到了!来领妹子!
  16. Duilib的界面设计工具DuiDesigner的使用说明
  17. <read papers>学术论文的基金项目和研究成果格式怎么标注?
  18. 眼球追踪如何预测头部追踪
  19. tensorflow 做多元线性回归时怎样对非数据型数据(分类型数据)进行处理(编码)
  20. Tornado框架简介

热门文章

  1. 【威胁通告】攻击者利用漏洞攻击Edimax WiFi桥接器
  2. JVM调优简单梳理,一分钟了解JVM调优
  3. kibana启动报错Error: Could not close browser client handle!
  4. geoip2配置及使用
  5. geoip php 获取城市,Laravel 中利用 GeoIP 获取用户地理位置信息
  6. 【细节呈现】用Python编写2048游戏(命令行版)
  7. python智能写作_闲人AI写作智能文章生成-文章伪原创-关键词生成文章工具
  8. 热门移动端H5开源前端开发框架搜集整理
  9. 认知的高度 = 人生的高度
  10. win10照片查看器_19个Win10使用小技巧,看看你知道哪些?