目录
DPDK下载地址
dpdk官网地址:
Home - DPDK
https://www.dpdk.org/DPDK下载地址:
DPDK
http://core.dpdk.org/download/附加:
由于版本更新,如果是第一次使用建议使用DPDK19.11版本,19.11版本及之前版本在 usertools 目录下有 dpdk-setup.sh 脚本,这个脚本可以快速简洁的配置方式,更适合新手使用<就像我这样的>
DPDK19.11 及之前版本的编译方式及编译工具为GCC Make
DPDK19.11 之后版本 编译工具为 meson ninja
#故使用这个之前需要安装对应的编译工具
#sudo apt install make
#sudo apt install gcc
# 当前下载版本为 dpdk-19.11.11 ,下载完的文件名 dpdk-19.11.11.tar.xz
解压及配置
解压命令 <万能解压 tar -xvf *>:
tar -xvf dpdk-19.11.11.tar.xz
安装:
由于19.11版本更新<18.11也不用了>,执行 dpdk-setup.sh 脚本时,也不需要提前配置环境变量,也不用加sudo #就是下面这个
{
export RTE_SDK=`pwd` #pwd替换成当前路径
export RTE_TARGET=x86_64-native-linuxapp-gcc
}
安装
官网安装配置地址
官网所有版本的配置方式地址
DPDK
http://core.dpdk.org/doc/archives/DPDK19.11官网配置地址
DPDK documentation — Data Plane Development Kit 19.11.12-rc1 documentation
可以整页翻译一下
Google浏览器 页面翻译成中文
http://t.csdn.cn/YMqy9 #<上面这个是谷歌浏览器整页翻译的设置方式 的文章>
源码目录结构
我们主要用 usertools 目录中的文件
cpu_layout.py #CPU信息
dpdk-devbind.py #DPDK的网卡信息及绑定解绑
dpdk-pmdinfo.py
dpdk-setup.sh #我们主要用这个
dpdk-telemetry-client.py
meson.build
准备阶段
需要安装的工具:
sudo apt install make
sudo apt install gcc
sudo apt install python
需要安装的库:
numa 库
sudo apt-get install libnuma-dev
执行安装脚本
./dpdk-setup.sh #编译执行主要分为5步
1. 选择要构建的DPDK环境
由于在Ubuntu虚拟机中使用
故构建方式选择 [41] x86_64-native-linuxapp-gcc
注意:第一次构建时间有点长
附加:<构建命令解析>
###
###
###
###
2. 添加对应的模块 <igb_uio、vfio、kni>
附加:
VFIO是当前最安全的转发方式,可以添加IOMMU功能
IGB_UIO模式是候补模式,都安装不上的时候的备选
KNI模式是Linux系统内核自带的方式# 咱们选IGB_UIO模式
# OK
3. 给系统设置大页内存
根据不同的系统来设置不同的大页
两个重点
1. NUMA (Non Uniform Memory Access):翻译过来就是 非统一内存访问,这是针对多核CPU设置的,可以提高CPU对内存访问,内存的分配更合理,这个需要看CPU是否支持(现在的CPU一般都是支持的,所以一般都是 [52])
2. 大页大小(Huge Page):Linux系统默认的内存页面大小是4KB,但是对于大量的数据存储,需要建立多个页,页面间的跳转 会消耗CPU的性能,设置大页,可以减少页面之间的跳转,提高访问速度,这个大小一般都是根据使用情况而定,根据当前的队列的大小,主机内存的大小,合理的分配(至少让一个队列有8,9个大页啊,这里咱们设置成256(计算方式 256 * 2M 也就是 512M的大页),毕竟是为了玩一下,不需要那么严谨,哈哈)
![]()
# OK
4. 绑定要使用或测试的网卡
【53】 是显示当前的网络配置信息,就是有几个网卡,每个网卡当前绑定的是哪个模块
# 忘了添加网卡,这个是管理网口 不能down啊,down了就不能ssh连接了
# 上面这个是VMware虚拟机添加网卡的教程链接
# OK 多了两个
如果是挂在的IGB_UIO模块,就使用【54】来绑定网卡
如果是 VFIO模块,使用【55】来绑定网卡
# 这个不需要输入前面的 0000: 也可以
绑定完结果如下
# Using DPDK-compatible driver
使用-testpmd
两种执行方式
1. 可以直接在dpdk-setup.sh 脚本中执行
输入【58】 然后设置运行核数就行了(十六进制表示的0xff 这就是8核)
# OK 可以运行
2. 使用命令执行
sudo ./testpmd -c 0xf -- -i
# 上面是最基础的运行模式 (还可以添加 --rxq --txq --nb-cores 等等,可多了)
# 可执行文件所在目录为 dpdk/dpdk-stable-19.11.11/x86_64-native-linuxapp-gcc/app
# 这个就是四核启动,这个的确保Ubuntu(当前运行的系统)里有4核的CPU
# -c 0x 就是16进制,0xf --二进制就是--> 0b1111,4个核,也可以 0x3 表示使用2个核
# -i 就是进入 交互模式 (可以输入命令那种)
# 需要 sudo 权限
# OK 可以执行
3. testpmd命令行的基本使用
testpmd> start # 这个就是开始转发
testpmd> stop # 这个是停止转发,结束时会显示转发的汇总(收、发、drop)
testpmd> quit # 这个是退出testpmd示例
testpmd> show config fwd # 这个是显示当前的配置(端口、核心、流)
testpmd> show port stats all # 这个是展示所有端口的收发包信息
附加
可以多看看官网的文档,确实挺好玩
而且讲的也挺好,不过有些东西还是需要百度一下(必应广告比较少)