DPU网络开发SDK——DPDK(一)

news2024/11/26 12:28:06

随着软件定义网络SDN的不断发展,网络数据转发面的需求越来越多样化,这体现在更快的数据包处理速率,更高的网络吞吐带宽,更灵活的自定义网络协议。传统的硬件设备无法满足网络协议的自定义,而基于Linux内核网络协议栈的网络数据转发则存在处理流程繁琐,效率低下等问题。在此背景下,Intel公司提供了一款高性能网络数据平面开发套件DPDK(data plane development kit),它提供了一个简单方便的,完整的,快速的数据包处理解决方案。

目前,DPDK被广泛应用在网络转发组件的开发当中,如负载均衡网关,NAT网关,虚拟机交换机OVS也同样包含了对DPDK的支持。由于DPDK能够向网络转发面组件提供快速高效的对原生数据包进行处理的能力,其在DPU的研发上也扮演着重要的角色。

DPDK主要包含以下几大特性,借助这些特性网络转发面组件得以实现快速高效的数据包处理:

  • 用户态数据包处理

传统情况下,当网卡收到数据包时,需要经过内核网络协议栈的处理,协议栈将头部一层层进行剥离之后,才能将最终数据交付给用户态进程;过程中会存在内核空间向用户空间进行内存拷贝的情况,这会消耗大量的计算资源。

Linux内核源码中提供了uio驱动模块,网卡硬件设备在绑定该模块之后,会将设备暴露在用户空间;DPDK通过读取该uio文件,能够直接收取原始的二层数据包并直接写入用户态进程的内存空间当中;用户态进程可直接对数据包的各层数据进行分析并根据需要进行修改、转发或选择丢弃;发送数据包时,则通过写入该uio文件进行发送。

在收取-处理-发送的过程中,数据包绕开了内核网络协议栈的处理逻辑,且处理过程中未发生过内存的拷贝,这就节省了大量的开销;且用户态进程拿到的数据包是原始的二层数据包,开发者可根据需要自主决定对该数据包的处理方式,更便于自定义网络协议的实现。

无DPDK与有DPDK的对比

DPDK工作原理

  • PMD轮询模式收包

传统Linux系统中,当网卡收到数据包时,会借助DMA技术将数据包发送到预先分配好的内存缓冲区里面,之后产生中断通知内核有数据包过来。Linux内核会对中断进行响应,将接收到的数据帧交给内核中的网络协议栈进行处理,最后数据被复制到了用户空间或者直接在内核协议栈中处理完毕。

通过中断通知内核有数据包到来的方法在低带宽低吞吐等环境下能够满足需求,但在云平台这样要求高带宽高吞吐的情况下,中断方式会引发中断风暴,内核需不间断的处理中断请求,不利于内核对数据包和其他内核运算的处理。

DPDK提供了PMD(Poll mode driving)轮询模式实现对数据包的收取,不需要网卡通过中断通知内核收取到数据包,而是由用户态进程不间断去查询网卡是否收取到数据包,有则处理之,无则进行下一轮查询。在高吞吐情况下,一次轮询可批量处理多个数据包,减少了中断引发的系统开销。

  • 大页内存

Linux内核中默认页面的大小是4KB,在64位系统中页表被划分为5级,用户态进程在寻址时需要经过4次页表查找才能将虚拟地址转换为物理地址。页表查找过程是高性能处理进程的一项瓶颈,而使用大页内存可有效减少页表查询的次数,减轻TLB的查询压力和查询miss的概率。在64位系统中支持2MB和1GB两种类型的大页内存,分别需要4级和3级页表的支持,DPDK一般使用1G大页内存,仅需2次页表查询即可实现虚拟地址到物理地址的转换。

  • CPU独占及亲和性

运行基于DPDK的网络转发面处理组件的主机会提前将部分CPU的Processor隔离出来专门提供给DPDK使用,DPDK进程在初始化阶段会根据配置初始化线程数量,并将线程和Processor进行绑定。绑定之后Processor不会再处理绑定线程以外的其他线程,被绑定线程也不会调度到其他Processor上进行处理,此举有效减少了因线程调度产生的上下文切换的开销,并减少了Cache Miss发生的概率。

  • 有助于转发处理逻辑的数据结构

DPDK提供了一些有助于编写网络转发平面处理逻辑的数据结构,如Timer,Mbuf,Ring等。Timer实现了计时器的功能;Mbuf提供了基本的内存缓存片段,用于缓存数据包,并支持片段向前后进行扩展;Ring实现了FIFO队列,且该队列是无锁的。

  • QoS和ACL

DPDK提供了相应的数据结构,基于此数据结构及关联的API,可以在用户态进程中实现限速和访问控制这两项网络转发平面必须的功能。

  • 适配多种类型的实体或虚拟网络设备

DPDK是由Intel开发并维护的,最初仅支持对Intel系列网卡的支持,后DPDK陆续支持了对Mellanox,Virtio等设备的支持,使得DPDK的使用范围进一步扩大。

以上是DPDK的在加速网络数据面处理上减少的开销和提供的便利,底层实现上仍然是基于Linux内核提供的功能,在接下来的几期文章中将对DPDK深入分析,以理清其内部实现机制。

原文链接:https://zhuanlan.zhihu.com/p/551726020 

(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加qun免费
领取,关注我持续更新哦! ! 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

故障电弧探测器的必要性及组网方案 安科瑞 时丽花

摘要】:电气设备是建筑中不可缺少的一部分,具有较为重要的作用和意义,在应用过程中不仅能够提升建筑本身实用性能,而且可为消费者提供更加优良的生活环境。但设备一旦在运行过程中出现故障,不仅会影响居民正常生活&…

艾美捷细胞失巢凋亡检测试剂盒测定原理化验方案

对细胞外基质(ECM)的粘附对于许多粘附细胞的生存和繁殖至关重要细胞。细胞与ECM的粘附丧失或不当粘附导致的细胞凋亡定义为“anoikis”。Anoikis,来自希腊语无家可归的意思,与生理学有关组织更新和细胞稳态的过程。 癌症发展和生长…

做测试8年,33岁前只想追求大厂高薪,今年只求稳定收入

疫情3年,每一个行业的危机,每一个企业的倒下,背后都是无数人的降薪、降职和失业。这也暴露了人生的残酷真相:人活一辈子,总有“丰年”和“荒年” 优秀的测试既过得了丰年,也受得住荒年 一个测试宝妈&…

冒烟测试的7个好处,你是否经常用到它?

以下为作者观点: 冒烟测试(smoke testing)是在开发的早期阶段评估基本的软件组件,以检查它们是否 “着火”(有问题),本文旨在介绍冒烟测试及其在程序开发过程中的作用。 什么是冒烟测试? 冒烟测试是在开…

Linux文件权限

Linux文件权限 文件权限介绍 Linux文件权限有三种: 权限对应字符可读(read)r可写(write)w可执行(execute)x 文件权限身份也有三种: 权限身份对应字符文件所有者(user)u文件所有者所在组(group)g其他(other),即除了文件所有者和其所在组的…

简明误差卡尔曼滤波器(ESKF)及其推导过程

文章目录1. 简明ESKF简介ESKF基本过程及优点ESKF参数含义连续时间上的 ESKF状态方程误差状态方程推导误差状态的旋转项误差状态的速度项完整误差变量的运动学方程离散时间上的ESKF运动学方程ESKF的运动过程ESKF的更新过程ESKF的误差状态后续处理小结1. 简明ESKF 简介 本文主要…

电商新趋势:Starday拿下黑色星期五的制胜法宝是物流速度

国内电商“双十一”购物狂欢季活动已经闭幕,“双十二”又将袭来,但更多人却将眼光放在蓬勃发展的跨境电商行业中。当下跨境电商卖家们正在各大跨境电商服务平台的带领下全力备战,在“黑色星期五”期间推出各类大促活动,奋力冲刺20…

灌区量测水监测系统解决方案 灌区量测水系统解决方案 农业水价综合改革解决方案

平升电子灌区量测水监测系统解决方案/灌区量测水系统解决方案/农业水价综合改革解决方案,对灌区的渠道水位、流量、水雨情、土壤墒情、气象等信息进行监测,同时对泵站、闸门进行远程控制,对重点区域进行视频监控,实现了信息的采集…

网络面试知识

客户端与服务端的网络通信 bind函数 把一个本地协议地址和套接口绑定,比如把本机的2222端口绑定到套接口。注意:为什么在上图中客户端不需要调用bind函数?这是因为如果没有调用bind函数绑定一个端口的话,当调用connect函数时&…

Kotlin高仿微信-第18篇-单聊-删除单条信息

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

FRED应用:激光二极管的模拟

简介 当提及模拟激光二极管时,FRED软件具有极大的灵活性。在这篇应用笔记中,将会描述简单到详细的激光光源模型。最基本的模型是高斯TEM0,0模。更高级的模型包括在束腰上偏移和发散中的像散光束。激光也可以使用其M2因子表示。最后,可以创…

【TeamViewer丨远程控制软件】上海道宁助您远程访问和即时远程支持,提高远程工作团队的生产力

TeamViewer是 全面的远程访问、远程控制 及远程支持解决方案 几乎适用于所有桌面和移动平台 包括Windows、macOS、Android及iOS 开发商介绍 TeamViewer诞生于2005年,办公地点遍布全球12个国家或地区,以基于云的技术为核心,致力于在全球…

Jina AI正式将DocArray捐赠给Linux基金会

DocArray 是一个用于处理、传输和存储多模态数据的 Python 工具包。DocArray 提供便捷的多模态数据处理功能,具备基于 Protobuf 提供高性能的网络传输性能,同时也为多种向量存储方案提供统一的 API 接口。现在 Jina AI 正式将 DocArray 项目捐赠给 Linux…

JAVA助农电商商城平台毕业设计,JAVA助农销售网站系统设计与实现,毕设作品参考

功能清单 【后台管理功能模块】 系统设置:设置关于我们、联系我们、加入我们、法律声明的信息。 广告管理:设置网站首页轮播图和链接地址。 留言管理:显示用户通过前台留言的列表,支持删除。 会员中心:显示所有注册用户…

鲲鹏devkit性能分析工具介绍(四)

鲲鹏devkit性能分析工具介绍(四) 前面我们已经介绍了鲲鹏devkit性能分析工具的全景分析、热点函数分析、进程/线程分析、微架构分析、和访存分析,由此可见进行性能调优绝对不能够仅仅去进行一方面的考察而是需要全方面的数据分析进行一定的舍…

外汇天眼:经济衰退无阻加息,欧美货币政策齐收紧

美联储和欧洲央行官员在近两日发表讲话,先后释放进一步加息信号,美股、欧股事后均收跌,市场预计美元、欧元近期将下跌。 通胀仍高于目标,两大央行将进一步加息 除了非农报告等关键通胀数据,本周央行动态同样备受市场关…

软件测试 -- 进阶 5 软件测试用例

及之而后知,履之而后艰,乌有不行而能知者乎?。-- 魏源 释译:实际接触之后才知道真相,新自做了之后才知道困难,哪有不实践就能够知道的呢? 需求 -> 分析 -> 设计 -> 策略&#xff0…

大数据中Hadoop、Hive、Spark的关系

文章总括图 数据存储 单机数据库时代 所有数据在单机都能存的下,数据处理的任务都是IO密集型,更谈不上分布式系统 一个典型的2U服务器可以插6块硬盘,每块硬盘4T,共24T原始容量,再加上一些数据包的可用冗余&#xf…

A Self-Attentive model for Knowledge Tracing论文笔记和代码解析

原文链接和代码链接A Self-Attentive model for Knowledge Tracing | Papers With Code motivation:传统方法面临着处理稀疏数据时不能很好地泛化的问题。 本文提出了一种基于自注意力机制的知识追踪模型 Self Attentive Knowledge Tracing (SAKT)。其本质是用 Tra…

【博学谷学习记录】超强总结,用心分享|架构师-Spring核心组件介绍

文章目录一、Bean组件二、Context组件一、Bean组件 Bean组件定义在Spring的org.springframework.beans包下,解决了以下几个问题: 这个包下的所有类主要解决了三件事: Bean的定义 Bean的创建 Bean的解析 Spring Bean的创建是典型的工厂模式…