网站首页 > 教程文章 正文
专注分享Linux后台服务器开发,包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等等,相关视频文档资料私信【1】进群获取。
DPDK环境搭建工具准备: vmware + Ubuntu 16.04 Server 版本
1.vmware 添加两块网卡
桥接网卡作为 DPDK 运行的网卡
NAT 网卡作为 ssh 连接的网卡
2.修改网卡配置信息
将 ethernet0.virtualDev 由 e1000 修改 vmxnet3,因为 vmware 的 vmxnet3 支持多队列网卡
3.修改 ubuntu 系统的启动参数
物理机:
default_hugepages=1G hugepagesz=1G hugepages=20 isolcpus=0-7
虚拟机:
default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2
4.查看系统是否支持多队列网卡
执行:cat /proc/interrupts
5.编译 DPDK
下载 dpdk : 地址
随便挑选版本,不同版本直接子系统接口会有差异,建议选择 dpdk 19.08.2
可以通过 usertools/dpdk-setup.sh
64 位系统选择 39.
编译完会多出 x86_64-native-linux-gcc 的文件夹
6.设置 DPDK 的环境变量
# export RTE_SDK=/home/dpdk
# export RTE_TARGET=x86_64-native-linux-gcc
7.执行 testpmd
执行
# /usertools/dpdk-setup.sh
选择 43 插入 IGB_UIO 模块, 选择网卡为 vmxnet3 会加载此模块
选择 44 插入 VFIO 模块,选择网卡为 e1000 会加载此模块
选择 49 绑定 igb_uio 模块, 也可以退出,通过命令来执行。
# ifconfig eth0 down
# /usertools/dpdk-devbind.py --bind=igb_uio eth0
选择 53 运行 testpmd
> show port info 0
8.编译 DPDK 程序
进入 example/helloworld ,
可以直接 make,
也可以通过 gcc 命令编译
# gcc -o helloword main.c -I /usr/local/include/dpdk/ -ldpdk -lpthread -
lnuma -ldl
9. 运行 DPDK 案例
Kni 运行:
./build/kni -l 4-7 -n 4 -- -P -p 0x3 -m --config="(0, 4, 6),(1, 5, 7)"
L3fwd 运行
# ./build/l3fwd -l 4-7 -n 4 -- -p 0x3 --config="(0, 0, 4),(1, 0, 5)" --
parse-ptype
常见错误
错误 1:
没有设置环境变量,请查看本篇《设置 dpdk 的环境变量》
bitmask 请选择 7, bit:111
分享一个宝藏免费公开课,订阅即可直接学习,每晚8-10点都有LinuxC/C++服务器高级架构的技术提升课程对标大厂岗位技术栈:C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂
猜你喜欢
- 2025-10-02 Gatekeeper:首个开源的DDoS防护系统
- 2025-10-02 dpdk——数据平面开发套件_dpdk开发例程
- 2025-10-02 高性能库DPDK精简理解_高性能设置在哪里
- 2025-10-02 什么是DPDK?DPDK的原理及学习学习路线总结
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)
