零知识学习之DPDK与RDMA(1)—— 认识DPDK(1)

接前一篇文章:零知识学习之DPDK与RDMA(1)—— 序言与初识

本文内容参考:

《Linux高性能网络详解 从DPDK、RDMA到XDP》 刘伟著 人民邮电出版社

DPDK首页、文档和下载 - 网络数据包转发处理 - OSCHINA - 中文开源技术交流社区

五分钟看懂抓包神技:DPDK - 环信

https://www.cnblogs.com/llc-blog/p/8849376.html

特此致谢!

一、认识DPDK

1. 简介

数据平面开发工具包(data plane development kit,DPDK)是在用户态运行的一组软件库和驱动程序,可在所有主要CPU体系结构上加速对网络数据包的处理。作为Linux基金会旗下的一个开源项目,DPDK在推动CPU在高性能网络环境(比如企业数据中心、电信网络)中的使用方面发挥了很大作用。

Intel® DPDK 全称 Intel Data Plane Development Kit,是Intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于 Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。DPDK使用了 BSDLicense,极大的方便了企业在其基础上来实现自己的协议栈或者应用。 

需要强调的是,DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程Linux内核将DPDK应用程序看作是一个普通的用户态进程,其编译、链接和加载方式和普通程序没有什么两样。

2. 为什么需要DPDK

诺基亚、思科、爱立信、华为等传统的网络设备供应商提供的产品,在执行低层(low-level,指相对较低层级的网络协议)数据平面功能(data plane function),如数据包的收发和路由时,使用的都是专用集成电路(application specific integrated circuit,ASIC)芯片。在这些ASIC芯片中,某些是设备供应商自己研发的、某些是博通(Broadcom)或美满科技(Marvell)等芯片供应商提供的标准产品。以这些ASIC芯片为基础运行的专属软件,实现了防火墙、路由器、交换机、基站和其它网络设备所需的各种网络协议。虽然这种“ASIC芯片+专属软件”的产品架构提供的吞吐量能够达到高性能网络的要求,但其新产品推出的时间受到漫长的芯片开发/调试周期的限制,而且供应商之间不存在软件移植的可能。

2007年,Intel、Callvium(已被Marvell收购)、飞思卡尔(已被NXP收购)和NetLogic(已被Broadcom收购)等半导体公司开始将通用多核处理器引入数据处理领域,进行低层的数据包处理。这种方案在处理器性能和成本方面,可以基于ASIC芯片的网络产品进行竞争,但问题在于软件:以Linux内核协议栈为基础的网络方案存在许多瓶颈,无法高性能地处理数据包。

此时就需要一个解决方案来消除这些瓶颈,同时保持与原有Linux应用程序的兼容。除此之外,新方案还应该适合以库的形式打包到Linux发行版中,在用户需要时用来管理各种网络设备。这些目标最初是在2010年实现的,当时Intel基于Nehalem微架构的Xeon处理器推出了DPDK的初始版本。DPDK绕过(bypass)Linux内核,在用户态执行数据包处理,以尽可能提高网络性能。

DPDK程序运行在操作系统的用户态,利用自带的“数据平面库”进行数据包的发送、接收和处理,绕过了运行在内核态的Linux网络协议栈,提升了数据包处理效率。下图展示了DPDK在软件架构上与内核协议栈方案的差异:

DPDK的网卡驱动程序运行在用户态,其屏蔽了网卡硬件发起的大部分中断(除了断链、错误等类型),采用主动轮询模式,持续检查网卡的接收/发送队列,查看是否有新数据到达或者是否可以继续发送数据,从而实现高吞吐量和低时延。因此,DPDK的驱动程序也被称为轮询模式驱动模式(poll mode driver,PMD)。

不过,Linux内核仍然是DPDK实现的基础。比如,Linux内核中的UIO驱动框架,它为DPDK驱动程序提供了获取寄存器地址和长度、地址映射和读取中断计数器等功能(具体是否使用这些功能、如何的使用这些功能,还要看DPDK驱动程序的具体实现)。另外,内核提供的“大页”机制也是DPDK进行内存管理的重要手段。

更多内容请看下回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/745371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从理论到实践:工业工厂室外可燃气体报警器的校准方法

随着工业工厂对安全生产要求的不断提高,可燃气体报警器作为防范火灾、爆炸事故的重要设备,其准确性和可靠性显得尤为重要。 特别是在室外环境中,由于气候条件多变、设备老化等因素的影响,可燃气体报警器的性能可能会发生变化。因…

51单片机STC8H8K64U通过RA8889/RA8876如何控制彩屏(源码下载)

【硬件部份】 一、硬件连接实物: STC8H系列单片机不需要外部晶振和外部复位,在相同的工作频率下,速度比传统的8051单片机要快12倍,具有高可靠抗干扰的优秀特性,与瑞佑的RA8889/RA8876控制芯片刚好可以完美搭配用于工…

JavaScript学习笔记(四)

22、日期 JavaScript 日期输出,默认情况下,JavaScript 将使用浏览器的时区并将日期显示为全文本字符串: var data new Date();输出:Tue Jun 25 2024 14:45:44 GMT0800 (中国标准时间) 22.1 创建 Date 对象 Date 对象由新的 Da…

【护眼科普】台灯怎么选对眼睛好?五大适合学生写作业的台灯推荐

作为一位家长,我深切地领悟到保护孩子眼部健康的至关重要性。随着科技的日新月异,孩子们愈发频繁地接触和使用各类电子设备,如平板电脑、手机和电视,屏幕时间几乎占据了他们日常生活的相当一部分。然而,不容忽视的是&a…

数字图像分析(第一部分)

文章目录 第2章 图像数字化数字化采样与量化像素的邻域像素的距离图像采集网络**离散直线性**距离变换**第3章 图像变换可分离和正交图像变换2D DFT变换及其本质**哈达玛变换KL变换(PCA)第4章 形态学二值形态学膨胀和腐蚀开启和闭合击中-击不中变换二值形态学实用算法噪声滤除目…

有没有比较好用的网页3D应用程序在线编辑器?

问:three.js是当前主流的网页3d开发框架,但three.js的editor功能比较粗糙。国内有没有比较容易上手功能类似Unity3D的网页3D编辑软件,可以通过实体组件系统来完成程序扩展,简单拖拉拽完成3D场景、常用特效和用户交互的构建&#x…

【深度学习总结_03】使用弱智吧数据微调LLama3+自我认知训练

使用弱智吧数据微调LLama3自我认知训练 使用弱智吧数据微调LLama3自我认知训练下载LLama3权重准备数据集克隆alpaca-lora仓库修改finetune.py代码修改LlamaTokenizer注释代码手动安装apex 运行finetune.py运行generate.py文件导出Lora模型自我认知训练 使用弱智吧数据微调LLama…

AI智能体 | 扣子Coze 工作流中如何嵌入代码,看这一篇就够了

Coze的工作流中除了能嵌入大模型,插件,图像流,其他工作流外,还能嵌入代码。嵌入代码的好处是对一些复杂的返回结果进行二次处理。 Coze的代码支持js和python两种语言。这次用python来做演示介绍 在节点中选择代码 弹出对话框如下…

[leetcode]number-of-longest-increasing-subsequence

. - 力扣(LeetCode) class Solution:def findNumberOfLIS(self, nums: List[int]) -> int:n, max_len, ans len(nums), 0, 0dp [0] * ncnt [0] * nfor i, x in enumerate(nums):dp[i] 1cnt[i] 1for j in range(i):if x > nums[j]:if dp[j] 1…

Android 架构模式

MVC MVC是 Model-View-Controller 的简称。 M:模型层(Model) 负责与数据库和网络层通信,并获取和存储应用的数据;V:视图层(View) 负责将 Model 层的数据做可视化的处理,同时处理与用户的交互;C:控制层(Controller) 用于建立Model…

图片裁剪怎么弄?裁剪图片的四种极为简单的方法

图片裁剪怎么弄?裁剪图片是在编辑和美化图片时常见的操作,它可以帮助你去除不需要的部分,突出重点内容,或者改变图片的外观和比例。这个过程既简单又具有很大的创意空间,因此,掌握如何裁剪图片是提升你图像…

Verilog刷题笔记49——Fsm1同步复位

题目: 解题: module top_module(clk,reset,in,out);input clk;input reset;input in;output out;parameter A0,B1;reg [1:0]current_state,next_state;always(posedge clk)beginif(reset)current_stateB;elsecurrent_statenext_state;endalways(*)beg…

AI绘画Stable diffusion的SDXL模型超详细讲解,针不错!(含实操教程)

大家好,我是画画的小强 朋友们好,今天分享的是Stable diffusion的SDXL模型以及相关实操。 与之前的SD1.5大模型不同,这次的SDXL在架构上采用了“两步走”的生图方式: 以往SD1.5大模型,生成步骤为 Prompt → Base → …

Linux学习第52天:Linux网络驱动实验(三):一往(网)情深

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 许久没有更新,的确是最近有点懈怠了。没有任何借口,接受所有的批评。接下来无论如何也要坚持下去,不管处于什么境地、什么原因&am…

.NET C# 使用GDAL将mdb转换gdb数据

.NET C# 使用GDAL将mdb转换gdb数据 目录 .NET C# 使用GDAL将mdb转换gdb数据1 环境2 Nuget3 Code 1 环境 VisualStudio2022 .NET6 GDAL 3.8.5 2 Nuget 3 Code FeatureExtension.cs public static class FeatureExtension {[DllImport("gdal.dll", EntryPoint &…

前端-echarts tooltip展示多项自定义数据

效果如图,鼠标滑动到某一个柱子的时候,出现这一项数据的多个自定义数据,外加自己的模板样式渲染。 希望能展示每一列中的多个自定义数据 代码部分 主要是在data中,value就是实际展示的主数据,其他字段名为自定义的数…

Matlab进阶绘图第61期—滑珠散点图

滑珠散点图也是一种在《Nature》中常见的数据图。 其功能类似于柱状图,但更加简洁易读。 由于Matlab中没有现成的函数绘制滑珠散点图,因此需要大家自行解决。 本文利用自己制作的BubbleScatter工具,进行滑珠散点图的绘制,先来看…

等保测评初级简答题试题

基本要求,在应用安全层面的访问控制要求中,三级系统较二级系统增加的措施有哪些? 答:三级比二级增加的要求项有: 应提供对重要信息资源设置敏感标记的功能; 应按照安全策略严格控制用户对有敏感标记重要…

贝壳找房基于Flink+Paimon进行全量数据实时分组排序的实践

摘要:本文投稿自贝壳家装数仓团队,在结合家装业务场景下所探索出的一种基于 FlinkPaimon 的排序方案。这种方案可以在实时环境对全量数据进行准确的分组排序,同时减少对内存资源的消耗。在这一方案中,引入了“事件时间分段”的概念…

上涨至13.6分!当之无愧的顶级期刊,影响因子“狂飙”,门槛较低,2个月可录!

本期解析 1、2024年6月20日,科睿唯安正式公布2024年度《期刊引证报告》。 2、本次主要解析Elsevier旗下一本TOP顶刊,期刊表现优秀,在最新的影响因子更新中由12.8上涨至13.6,是一本妥妥评职高分宝刊!接下来看看它是否…