【KPDK】概述

DPDK的主要目标是为数据平面应用程序中的快速数据包处理提供一个简单、完整的框架。用户可以使用代码来理解所采用的一些技术,构建原型或添加自己的协议栈。可提供使用DPDK的替代生态系统选项。
DPDK框架通过创建环境抽象层(EAL)为特定环境创建一组库,EAL可能特定于英特尔体系结构(32位或64位)模式、Linux*用户空间编译器或特定平台。这些环境是通过使用介子文件和配置文件创建的。一旦创建了EAL库,用户就可以链接到该库来创建自己的应用程序。还提供了EAL之外的其他库,包括哈希、最长前缀匹配(LPM)和环库。提供的示例应用程序有助于向用户展示如何使用DPDK的各种功能。
DPDK为数据包处理实现了一个从运行到完成的模型,其中所有资源必须在调用数据平面应用程序之前分配,这些应用程序作为逻辑处理核心上的执行单元运行。该模型不支持调度程序,所有设备都通过轮询访问。不使用中断的主要原因是中断处理带来的性能开销。
除了运行到完成模型之外,还可以通过经由环在核心之间传递分组或消息来使用流水线模型。这允许分阶段执行工作,并且可以允许更有效地使用内核上的代码。

1.开发环境

DPDK项目安装需要Linux和相关的工具链,如一个或多个编译器、汇编程序、meson实用程序、编辑器和各种库来创建DPDK组件和库。
一旦为特定环境和体系结构创建了这些库,它们就可以用于创建用户的数据平面应用程序。
在为Linux用户空间创建应用程序时,将使用glibc库。
有关设置开发环境的信息,请参阅DPDK入门指南。

2.环境抽象层

环境抽象层(EAL)提供了一个通用接口,它对应用程序和库隐藏环境细节。EAL提供的服务包括:
DPDK装载和发射
支持多进程和多线程执行类型
核心亲和力/分配程序
系统内存分配/取消分配
原子/锁定操作
时间参考
PCI总线访问
跟踪和调试功能
CPU特征识别
中断处理
报警操作
内存管理(malloc)
EAL在环境抽象层中有充分的描述。

3.核心组件

核心组件是一组库,提供高性能数据包处理应用程序所需的所有元素。
核心组件体系结构

3.1环形管理器(librte_Ring)

环形结构在有限大小的表中提供了一个无锁的多生产者、多消费者FIFO API。与无锁定队列相比,它具有一些优势;更易于实现,适用于批量操作且速度更快。环由内存池管理器(librte_mempool)使用,并且可以用作逻辑核上连接在一起的核和/或执行块之间的通用通信机制。
这个环形缓冲区及其用法在环形库中有详细描述。

3.2内存池管理器(librte_mempool)

内存池管理器负责分配内存中的对象池。池由名称标识,并使用环来存储空闲对象。它提供了一些其他可选服务,如每个核心对象缓存和对齐帮助程序,以确保对象被填充,从而在所有RAM通道上均匀分布。
这个内存池分配器在Mempool Library中有描述。

3.3网络数据包缓冲区管理(librte_mbuf)

mbuf库提供了创建和销毁缓冲区的功能,DPDK应用程序可以使用这些缓冲区来存储消息缓冲区。消息缓冲区在启动时创建,并使用DPDK内存池库存储在内存池中。
这个库提供了一个API来分配/释放mbufs,操作用于承载网络数据包的数据包缓冲区。
网络数据包缓冲区管理在Mbuf库中进行了描述。

3.4计时器管理器(librte_Timer)

此库为DPDK执行单元提供计时器服务,提供异步执行函数的能力。它可以是周期性的函数调用,也可以只是一次调用。它使用环境抽象层(EAL)提供的定时器接口来获得精确的时间参考,并且可以根据需要在每个核心的基础上启动。
Timer library中提供了库文档。

3.5以太网轮询模式驱动程序体系结构

DPDK包括用于1GbE、10GbE和40GbE的轮询模式驱动程序(PMD),以及半虚拟化的virtio以太网控制器,这些控制器设计为在没有异步、基于中断的信令机制的情况下工作。
请参阅轮询模式驱动程序。

3.6支持数据包转发算法

DPDK包括散列(librte_Hash)和最长前缀匹配(LPM,librte_LPM)库,以支持相应的数据包转发算法。
有关详细信息,请参阅哈希库和LPM库。

3.7librte_net

librte_net库是IP协议定义和方便宏的集合。它基于FreeBSD*IP堆栈中的代码,包含协议号(用于IP标头)、与IP相关的宏、IPv4/IPv6标头结构以及TCP、UDP和SCTP标头结构。

4.源码组织

4.1库

库位于dpdk/lib的子目录中。按照惯例,库是指为应用程序提供API的任何代码。通常,它会生成一个归档文件(.a),但内核模块也会位于同一目录中。

4.2驱动程序

驱动程序是为设备(硬件设备或伪/虚拟设备)提供轮询模式驱动程序实现的特殊库。它们包含在drivers子目录中,按类型进行分类,并各自编译为librte_X_Y.a格式的库,其中X是设备类名,Y是驱动程序名。
注意
几个driver/net目录包含一个子目录。基本目录通常包含不应由用户直接修改的代码。任何增强都应该通过该目录中的X_osdep.c和/或X_osdep.h文件来完成。请参阅基本目录中的本地自述文件

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

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

相关文章

大文件分片上传、分片进度以及整体进度、断点续传(一)

大文件分片上传 效果展示 前端 思路 前端的思路&#xff1a;将大文件切分成多个小文件&#xff0c;然后并发给后端。 页面构建 先在页面上写几个组件用来获取文件。 <body><input type"file" id"file" /><button id"uploadButton…

PyLMKit(3):基于角色扮演的应用案例

角色扮演应用案例RolePlay 0.项目信息 日期&#xff1a; 2023-12-2作者&#xff1a;小知课题: 通过设置角色模板并结合在线搜索、记忆和知识库功能&#xff0c;实现典型的对话应用功能。这个功能是大模型应用的基础功能&#xff0c;在后续其它RAG等功能中都会用到这个功能。功…

前端项目打包和自动化部署(jenkins+gitee+nginx)

项目打包和自动化部署 一. 项目部署和DevOps 1. 传统的开发模式 在传统的开发模式中&#xff0c;开发的整个过程是按部就班就行&#xff1a; 但是这种模式存在很大的弊端&#xff1a; 工作的不协调&#xff1a;开发人员在开发阶段&#xff0c;测试和运维人员其实是处于等待…

【MOJO】Modular语言安装和测试

目录 一、Mojo介绍 Linux​ Mac 二、安装Mojo SDK 三、mojo代码测试 3.1、在 REPL 中运行代码​ 3.2、构建并运行 Mojo 源文件​ 运行mojo文件​ 构建可执行二进制文件​ 四、VSCode安装 一、Mojo介绍 在学习Rust语言的过程中无意发现了Modular语言&#xff0c;语言…

WIN10 WIN11 关闭更新的绝佳办法(极简单无副作用)

WIN10 WIN11 关闭更新的绝佳办法&#xff08;极简单无副作用&#xff09; 极其简单用实用可以关闭更新20年 winr&#xff0c;输入regedit 打开注册表打开注册表的这个路径&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键空白的地方…

智慧用电安全动态监控系统

智慧用电安全动态监控系统是一种先进的电力监控技术系统&#xff0c;它运用物联网、大数据、云计算等先进技术&#xff0c;对电力系统的运行状况进行实时监控和预警。 该系统依托电易云-智慧电力物联网&#xff0c;通过智能传感终端采集电气线路的实时运行数据&#xff0c;客户…

也可Adobe Animate

Animate CC 由原Adobe Flash Professional CC 更名得来&#xff0c;2015年12月2日&#xff1a;Adobe 宣布Flash Professional更名为Animate CC&#xff0c;在支持Flash SWF文件的基础上&#xff0c;加入了对HTML5的支持。并在2016年1月份发布新版本的时候&#xff0c;正式更名为…

数学字体 Mathematical fonts

Mathematical fonts 数学字体&#xff1a; ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ \\ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathbb{ABC…

分类详情 API 返回值说明

为了进行此平台API的调用&#xff0c;首先我们需要做下面几件事情。 1、 获取一个KEY&#xff0c;点击获取测试key和secret 2、 参考API文档里的接入方式和示例。 3、查看测试工具是否有需要的接口&#xff0c;响应实例的返回字段是否符合参数要求。 4、利用平台的文档中心…

Go读取yaml文件,struct返回,json输出

程序模块中&#xff0c;缺少不了一些配置定义&#xff0c;这时定义yaml是个很好的选择 先定义yaml文件内容&#xff0c;文件名为&#xff1a;task_status_config.yaml confs:#阅读类任务&#xff0c;即提醒任务read:name: readawait: #待开始任务status_id: 0ing: #进行中任务…

GANVAEDiffusion

数学基础 KL散度 描绘一个分布p和另一个分布q之间的偏离程度 当 p ( x ) q ( x ) p(x)q(x) p(x)q(x)时散度取得最小值 JS散度 另一种衡量两个概率分布相似性的方法 GAN 需要训练两个网络&#xff1b;损失来回波动&#xff0c;不好分辨&#xff0c;不容易收敛&#xff…

〖大前端 - 基础入门三大核心之JS篇㊸〗- DOM事件对象的方法

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

个人成长|实现财务自由的秘诀,在这8句话里

哈喽啊&#xff0c;我是雷工&#xff01; 有人说&#xff0c;当今社会阶层跃迁的通道已经被堵死了&#xff0c;要想从普通人跨越阶级发家致富根本不可能。 也有人认为&#xff0c;只要踩住时代的风口&#xff0c;吃到时代的红利&#xff0c;成为百万富翁的速度会非常快。 我觉…

【源码篇】基于SpringBoot+Vue实现的在线考试系统

文章目录 系统说明技术选型成果展示账号地址及其他说明 系统说明 基于SpringBootVue实现的在线考试系统是为高校打造的一款在线考试平台。 系统功能说明 1、系统共有管理员、老师、学生三个角色&#xff0c;管理员拥有系统最高权限。 2、老师拥有考试管理、题库管理、成绩管…

java+springboot物资连锁仓库经营商业管理系统+jsp

主要任务&#xff1a;通过网络搜集与本课题相关的素材资料&#xff0c;认真分析连锁经营商业管理系统的可行性和要实现的功能&#xff0c;做好需求分析&#xff0c;确定该系统的主要功能模块&#xff0c;依据数据库设计的原则对数据库进行设计。最后通过编码实现本系统功能并测…

linux如何杀死进程_kill

使用信号控制进程&#xff1a;kill kill 可将指定的信息送至程序。 一般地&#xff0c;kill 命令用于删除执行中的程序或工作。在系统运行期间&#xff0c;若发生了如下情况&#xff0c;就需要将这些进程杀死。 进程展会用了过多的CPU时间 进程锁住了一个终端&#xff0c;是其…

每天五分钟计算机视觉:AlexNet网络的结构特点

本文重点 在前面的一篇文章中&#xff0c;我们对AlexNet网络模型的参数进行了详细的介绍&#xff0c;本文对其网络模型的特点进行总结。 特点 1、AlexNet的网络结构比LeNet5更深&#xff0c;模型包括5个卷积层和3个全连接层。参数总量大概为249MB。 2、Alex使用了ReLu激活函…

Java(十)(网络编程,UDP,TCP)

目录 网络编程 两种软件架构 网络通信的三要素 IP IPv4的地址分类 特殊IP 端口号 协议 用UDP协议发送数据 用UDP接收数据 TCP接收和发送数据 TCP通信--支持与多个客户端同时通信 网络编程 可以让设备中的程序与网络上其他设备的程序进行数据交互(实现网络通信) 两…

2023年12月4日支付宝蚂蚁庄园小课堂小鸡宝宝考考你今日正确答案是什么?

问题&#xff1a;你知道电杆上安装的“小风车”有什么用途吗&#xff1f; 答案&#xff1a;防止鸟类筑巢 解析&#xff1a;小风车一般做成橙色&#xff0c;因为橙色是一种可令野鸟产生恐慌感的颜色&#xff1b;小风车在转动时&#xff0c;会发出令野鸟害怕的噪声&#xff1b;…

深入理解Servlet(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 在这一篇文章里&#x…