IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> dpdk环境搭建 -> 正文阅读

[系统运维]dpdk环境搭建

一、首先我们需要准备一个物理机或者一个虚拟机。
物理机:
需要一个高性能的网卡跑dpdk和一个普通网卡进行网络通信,机器安装Ubuntu16.04.
虚拟机:
使用vnware安装Ubuntu16.04,配置一个多队列网卡和一个普通网卡。

二、虚拟机配置
如果使用物理机,我们不需要做任何配置,只需要安装Ubuntu16.04即可。如果没有物理机,我们就需要使用vmware安装Ubuntu 16.04,并且进行下面的配置。
1.添加一个多队列网卡
在这里插入图片描述
2.修改新增的网卡类型
修改虚拟机所在的目录中的vmx文件。
修改下面的参数:

ethernet1.virtualDev = "e1000"

改为

ethernet1.virtualDev = "vmxnet3"

使得这个网卡为高性能的网卡。

3.修改虚拟机网卡名字
我们要修改ens33网卡名为eth0,需要修改/etc/default/grub文件,在GRUB_CMDLINE_LINUX参数后面添加net.ifnames=0 biosdevname=0:

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.查看网卡信息:
在这里插入图片描述
我们可以看到有两个网卡了,一个普通网卡eth1和一个多队列网卡eth0,我们可以看到多队列网卡eth0有8个接受队列。

三、dpdk配置内存巨型页
Ubuntu16.04支持内存巨型页,但是还是要我们修改启动参数,设置巨型页大小和数量,设置方法是修改linux启动参数,我们需要修改/etc/default/grub文件的GRUB_CMDLINE_LINUX参数,添加default_hugepages=1G hugepagesz=2M hugepages=1024

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

再重启就可以了。

四、dpkg源代码下载和编译。
1.下载源代码
我们dpdk官方网站上下载dpdk源代码,链接在这里,随便挑选版本,不同版本直接子系统接口会有差异,建议选择 dpdk 19.08.2。

2.解压源代码
我们把压缩包放到/home/jian/share/目录中,解压后得到/home/jian/share/dpdk-stable-19.08.2的源代码。

3.安装编译环境

sudo apt-get install libnuma-dev

4.编译工具链
dpdk的源代码中自带的脚本来编译工具链,我们在/home/jian/share/dpdk-stable-19.08.2目录中执行下面的脚本:

./usertools/dpdk-setup.sh

然后选择39,具体log看下面:

jian@ubuntu:~/share/dpdk-stable-19.08.2$ ./usertools/dpdk-setup.sh 
------------------------------------------------------------------------------
 RTE_SDK exported as /home/jian/share/dpdk-stable-19.08.2
------------------------------------------------------------------------------
----------------------------------------------------------
 Step 1: Select the DPDK environment to build
----------------------------------------------------------
[1] arm64-armada-linuxapp-gcc
[2] arm64-armada-linux-gcc
[3] arm64-armv8a-linuxapp-clang
[4] arm64-armv8a-linuxapp-gcc
[5] arm64-armv8a-linux-clang
[6] arm64-armv8a-linux-gcc
[7] arm64-bluefield-linuxapp-gcc
[8] arm64-bluefield-linux-gcc
[9] arm64-dpaa2-linuxapp-gcc
[10] arm64-dpaa2-linux-gcc
[11] arm64-dpaa-linuxapp-gcc
[12] arm64-dpaa-linux-gcc
[13] arm64-octeontx2-linuxapp-gcc
[14] arm64-octeontx2-linux-gcc
[15] arm64-stingray-linuxapp-gcc
[16] arm64-stingray-linux-gcc
[17] arm64-thunderx2-linuxapp-gcc
[18] arm64-thunderx2-linux-gcc
[19] arm64-thunderx-linuxapp-gcc
[20] arm64-thunderx-linux-gcc
[21] arm64-xgene1-linuxapp-gcc
[22] arm64-xgene1-linux-gcc
[23] arm-armv7a-linuxapp-gcc
[24] arm-armv7a-linux-gcc
[25] i686-native-linuxapp-gcc
[26] i686-native-linuxapp-icc
[27] i686-native-linux-gcc
[28] i686-native-linux-icc
[29] ppc_64-power8-linuxapp-gcc
[30] ppc_64-power8-linux-gcc
[31] x86_64-native-bsdapp-clang
[32] x86_64-native-bsdapp-gcc
[33] x86_64-native-freebsd-clang
[34] x86_64-native-freebsd-gcc
[35] x86_64-native-linuxapp-clang
[36] x86_64-native-linuxapp-gcc
[37] x86_64-native-linuxapp-icc
[38] x86_64-native-linux-clang
[39] x86_64-native-linux-gcc
[40] x86_64-native-linux-icc
[41] x86_x32-native-linuxapp-gcc
[42] x86_x32-native-linux-gcc

----------------------------------------------------------
 Step 2: Setup linux environment
----------------------------------------------------------
[43] Insert IGB UIO module
[44] Insert VFIO module
[45] Insert KNI module
[46] Setup hugepage mappings for non-NUMA systems
[47] Setup hugepage mappings for NUMA systems
[48] Display current Ethernet/Baseband/Crypto device settings
[49] Bind Ethernet/Baseband/Crypto device to IGB UIO module
[50] Bind Ethernet/Baseband/Crypto device to VFIO module
[51] Setup VFIO permissions

----------------------------------------------------------
 Step 3: Run test application for linux environment
----------------------------------------------------------
[52] Run test application ($RTE_TARGET/app/test)
[53] Run testpmd application in interactive mode ($RTE_TARGET/app/testpmd)

----------------------------------------------------------
 Step 4: Other tools
----------------------------------------------------------
[54] List hugepage info from /proc/meminfo

----------------------------------------------------------
 Step 5: Uninstall and system cleanup
----------------------------------------------------------
[55] Unbind devices from IGB UIO or VFIO driver
[56] Remove IGB UIO module
[57] Remove VFIO module
[58] Remove KNI module
[59] Remove hugepage mappings

[60] Exit Script

Option: 39

编译成功则如下图所示:
在这里插入图片描述

5.设置dpdk的环境变量
上面编译成功之后需要退出脚本,然后执行下面的命令设置环境变量:

export RTE_SDK=/home/jian/share/dpdk-stable-19.08.2
export RTE_TARGET=x86_64-native-linux-gcc

6.禁止eth0
由于我们的多队列网卡是eth0,所以接下来我么都是操作eth0.
我们先使用下面的命令把eth0禁止:

sudo ifconfig eth0 down

7.igb_uio模块
设置完dpdk环境变量和禁止eth0后,我们再次执行脚本插入igb_uio模块:

./usertools/dpdk-setup.sh

然后选择43,具体log看下面:
在这里插入图片描述
插入igb_uio模块后,我们选择49绑定igb_uio模块到eth0,我们输入我们的PCI地址:0000:03:00:0,就可以成功绑定我们的网卡到igb_uio模块了,详细log如图所示:
在这里插入图片描述

8.运行testpmd程序
为了测试我们dpdk环境是否ok,我们尝试运行一下dpdk自带的测试程序testpmd。
option我们选择53,然后bitmask设置为7,运行成功则如下图所示:
在这里插入图片描述
这时候我们可以输入指令 show port info 0 查看我们的接口信息:
在这里插入图片描述

9.运行第一个dpdk程序
dpdk的源代码有很多例子程序,都放在example目录中,其中有个最简单的程序helloworld,我们进入example/helloworld中,直接make,可以编译出helloworld程序。最后我们使用root权限执行,结果如下图所示:
在这里插入图片描述

到此为止,我们的dpdk环境已经准备好了。下次我们尝试自己编写一个dpdk程序,88!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:10:24  更:2022-07-03 11:14:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 10:08:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计