论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
SqlServer
›
Linux网络编程之dpdk的环境设置详解
Linux网络编程之dpdk的环境设置详解
立聪堂德州十三局店
金牌会员
|
2024-8-7 07:38:06
|
显示全部楼层
|
阅读模式
楼主
主题
809
|
帖子
809
|
积分
2427
一、dpdk是什么?
DPDK(Data Plane Development Kit)是一个高性能的数据平面开发工具包,它为快速数据包处理提供库和驱动程序。DPDK主要用于网络应用中,如网络假造化、网络安全、负载均衡、防火墙和其他网络功能,它旨在提供快速、可扩展的网络数据包处理能力。
DPDK的主要特点包括:
用户空间数据处理
:DPDK将网络数据包处理从内核空间转移到用户空间,避免了传统内核空间处理中的上下文切换和系统调用开销,从而提高了处理速度。
高性能
:DPDK通过使用优化的数据包处理算法和零拷贝技术,淘汰了数据在内存中的复制次数,提高了数据处理的效率。
可扩展性
:DPDK支持多核处理,可以在多个CPU核心上并行处理数据包,提高了系统的可扩展性。
丰富的网络协议支持
:DPDK支持多种网络协议,包括TCP、UDP、IP、VLAN、MPLS等。
兼容性
:DPDK可以在多种Linux发行版上运行,并且可以与现有的网络应用和框架集成,如Open vSwitch、OpenStack等。
DPDK通常用于以了局景:
网络假造化
:在假造化环境中,DPDK可以提高假造交换机和假造路由器的性能。
高性能网络应用
:如高速缓存、负载均衡器、防火墙等,DPDK可以提供所需的高性能网络处理能力。
SDN(软件界说网络)
:在SDN架构中,DPDK可以用于实现快速的数据平面处理,支持网络流量的快速转发和控制。
DPDK是一个开源项目,由Intel发起,并得到了社区的支持和贡献。由于其高性能和机动性,DPDK在需要高速网络处理的场景中得到了广泛的应用。
二、dpdk的环境设置
多队列网卡是什么?
多队列网卡(Multi-Queue NIC)是一种网络接口卡(NIC),它支持将网络流量分发到多个处理队列中,以提高系统的网络处理性能和吞吐量。传统上,单队列网卡只有一个硬件队列用于处理所有的输入和输出流量,这可能会成为瓶颈。通过使用多队列网卡,可以将输入和输出流量分发到差别的硬件队列中,并在多核系统上进行并行处理。这样可以减轻单个队列的负载压力,并充分使用系统资源来提高网络处理效率。
多队列网卡通常需要操作系统和驱动程序的支持才能实现,因为操作系统需要将流量公道地分发到各个队列,并确保数据包按照顺序精确地发送和接收。同时,应用程序也需要针对多队列进行优化,以充分发挥多队列网卡的性能优势。
多队列网卡的关键特性包括:
并行处理
:通过多个队列,可以在多个CPU核心上并行处理网络流量,提高网络吞吐量和降低延迟。
负载均衡
:操作系统可以根据当前的网络负载和CPU使用情况,动态地调解流量分配,实现负载均衡。
提高可靠性
:如果一个队列出现故障或过载,其他队列可以接管其工作,从而提高系统的整体可靠性。
硬件加速
:多队列网卡通常配备有硬件加速功能,如TCP卸载(TOE)和假造化支持,进一步优化网络性能。
支持高级网络功能
:多队列网卡支持高级网络功能,如假造局域网(VLAN)、网络假造化(NVGRE、VXLAN)和流量监控等。
多队列网卡在数据中央、云计算和高性能计算环境中尤为紧张,它们可以显著提高网络性能,满意这些环境对高网络吞吐量和低延迟的需求。
怎么判定是否为多队列网卡?
cat /proc/interrupts | grep <网卡名>
如果结果只有一行,则不是多队列网卡
怎么修改成多队列网卡?
处理:关闭假造机,找到你假造机的文件夹路径,然后找到
假造机名.vmx
文件,该文件记载了假造机的统统设置信息,包括网卡信息。其中,我的网卡信息如下:
修改成如下:
重新打开假造机结果如下:
注意:该设置后,网卡从ens35变成了ens160,这里的原因不明,但是不影响使用。
修改内存设置,使其支持hugepage(巨页)
一般内存的每一页是4k的,修改成成巨页后,可以选择2M大概1G,这里假造机建议选择2M。
修改:
打开这个文件:vim /etc/default/grub
修改如下:
GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US default_hugepagesz=1G hugepagesz=2M hugepages=1024"
复制代码
注:在GRUB_CMDLINE_LINUX反面加 “default_hugepagesz=1G hugepagesz=2M hugepages=1024”这个三个键值对即可。
然后输入:sudo update-grub
再重启假造机即可。
下载dpdk
下载链接:https://core.dpdk.org/download/
我选择的是19.08.2的版本
注:每个版本的差别挺大的,深入发掘一个版本即可。
编译dpdk
首先设置环境变量:
export RTE_SDK=/home/user/dpdk/dpdk-stable-19.08.2/ (注意,该路径取决于你的dpdk路径)
export RTE_TARGET=x86_64-native-linux-gcc
这个只是一次性的,为了永久生效,可以vim ~/.bashrc 反面加上前面的两句,这样每次开启终端都会设置export
解压好dpdk源码后,进入到usertools文件夹,执行dpdk设置的交互脚本文件:./dpdk-set
------------------------------------------------------------------------------
RTE_SDK exported as /home/user/dpdk/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
复制代码
内里给了很多用户可以选择的选项,在这里,步调一我选择的是[39] x86_64-native-linux-gcc
在Option中输入39即可。
遇到以下错误:
mkdir: cannot create directory ‘/home/user/dpdk/dpdk-stable-19.08.2/x86_64-native-linux-gcc’:
Permission denied make[3]: *** [/home/user/dpdk/dpdk-stable-19.08.2/mk/rte.sdkconfig.mk:68:
/home/user/dpdk/dpdk-stable-19.08.2/x86_64-native-linux-gcc] Error 1 make[2]: ***
[/home/user/dpdk/dpdk-stable-19.08.2/mk/rte.sdkroot.mk:65: config] Error 2 make[1]: ***
[/home/user/dpdk/dpdk-stable-19.08.2/mk/rte.sdkinstall.mk:60: pre_install] Error 2 make: ***
[/home/user/dpdk/dpdk-stable-19.08.2/mk/rte.sdkroot.mk:77: install] Error 2
复制代码
这说明是该操作该文件夹的权限不够,直接使用sudo chmod 777 /home/user/dpdk/dpdk-stable-19.08.2/ 即可
反面在执行一次39,然后进去代码编译,第一次很比较久,需要耐心等待。
如果编译中,出现下面的题目:
说明你的内核版本不匹配。我使用的时ubuntu23,这个dpdk是19的,以是内核版本过高,导致编译失败。
以是我不得不去下载一个低版本的ubuntu系统。
后来我换成了ubuntu16版本的,内核是4.4.420,这才编译成功。
言归正传,编译成功后,再执行43,插入igb_uio模块,具体请看:https://zhuanlan.zhihu.com/p/483868843
输入45,插入KNI模块
46和47是内存的设置。有关解析请看:http://t.csdnimg.cn/ZAvko
这里46和47我都设置成了512
然后输入49,查看网卡信息:
接着让你选择PIC地点,我选择eth1,理由是eth0是用来通过ssh协议连接到xshell的,而且已经处于active状态,我们选择的网卡必须是没有工作的,否则要实现down下来:ifconfig eth0 down
然后60退出。
以上就是dpdk19版本的全部环境设置。
都看到这了,还不给个免费的赞支持一下?
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
立聪堂德州十三局店
金牌会员
这个人很懒什么都没写!
楼主热帖
零信任介绍
哈夫曼应用
WPF开发随笔收录-获取软件当前目录的坑 ...
【iOS逆向与安全】frida-trace入门 ...
K8S 1.20 弃用 Docker 评估之 Docker C ...
django使用多个数据库实现
Go语言上手(三) | 青训营笔记 ...
计算机等级考试二级C语言上机题集(第1 ...
《数据库》第1章 数据库系统概论 ...
《微信小程序-基础篇》什么是组件化以 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表