Redian新闻
>
关于DPDK技术原理及架构

关于DPDK技术原理及架构

公众号新闻

本文参考“《中国电信DPDK技术白皮书v1.0》”、DPDK基础—认识DPDK技术DPDK编程指南(中文版),DPDK 技术框架可以划分为 DPDK 基本技术与 DPDK 优化技术两部分,前者指标准的 DPDK数据平面开发包和 I/O 转发实现技术,后者是在 DPDK 应用过程中,为进一步提高各类用户应用程序的转发性能。

DPDK架构高清版
关注本公众号,回复“DPDK高清”关键字获取

技术原理与架构

由于采用软件转发和软件交换技术,单服务器内部的转发能力是 NFV 系统的主要性能瓶颈。在各类高速转发的 NFV 应用中,数据报文从网卡中接收,再传送到虚拟化的用户态应用程序(VNF)处理,整个过程要经历 CPU 中断处理、虚拟化 I/O 与地址映射转换、虚拟交换层、网络协议栈、内核上下文切换、内存拷贝等多个费时的 CPU 操作和 I/O 处理环节。

业内通常采用消除海量中断、旁路内核协议栈、减少内存拷贝、CPU 多核任务分担、Intel VT 等技术来综合提升服务器数据平面的报文处理性能,普通用户较难掌握。业界迫切需要一种综合的性能优化方案,同时提供良好的用户开发和商业集成环境,DPDK 加速技术方案成为其中的典型代表。

DPDK 是一个开源的数据平面开发工具集,提供了一个用户空间下的高效数据包处理库
函数,它通过环境抽象层旁路内核协议栈、轮询模式的报文无中断收发、优化内存/缓冲区/队列管理、基于网卡多队列和流识别的负载均衡等多项技术,实现了在 x86 处理器架构下的高性能报文转发能力,用户可以在 Linux 用户态空间开发各类高速转发应用,也适合与各类商业化的数据平面加速解决方案进行集成。

英特尔在 2010 年启动了对 DPDK 技术的开源化进程,于当年 9 月通过 BSD 开源许可协议正式发布源代码软件包,并于 2014 年 4 月在 www.dpdk.org 上正式成立了独立的开源社区平台,为开发者提供支持。开源社区的参与者们大幅推进了 DPDK 的技术创新和快速演进,而今它已发展成为 SDN 和 NFV 的一项关键技术。

软件架构

DPDK 的组成架构如图所示,相关技术原理概述如下:


在最底部的内核态(Linux Kernel)DPDK 有两个模块:KNI 与 IGB_UIO。其中,KNI 提供给用户一个使用 Linux 内核态的协议栈,以及传统的 Linux 网络工具(如ethtool, ifconfig)。IGB_UIO(igb_uio.ko 和 kni.ko. IGB_UIO)则借助了 UIO 技术,在初始化过程中将网卡硬件寄存器映射到用户态。

如图,DPDK 的上层用户态由很多库组成,主要包括核心部件库(Core Libraries)、平台相关模块(Platform)、网卡轮询模式驱动模块(PMD-Natives&Virtual)、QoS 库、报文转发分类算法(Classify)等几大类,用户应用程序可以使用这些库进行二次开发,下面分别简要介绍。

核心部件库:该模块构成的运行环境是建立在 Linux 上,通过环境抽象层(EAL)的运行环境进行初始化,包括:HugePage 内存分配、内存/缓冲区/队列分配与无锁操作、CPU 亲和性绑定等;其次,EAL 实现了对操作系统内核与底层网卡 I/O 操作的屏蔽(I/O 旁路了内核及其协议栈),为 DPDK 应用程序提供了一组调用接口,通过 UIO 或 VFIO 技术将 PCI 设备地址映射到用户空间,方便了应用程序调用,避免了网络协议栈和内核切换造成的处理延迟。

另外,核心部件还包括创建适合报文处理的内存池、缓冲区分配管理、内存拷贝、以及定时器、环形缓冲区管理等。

平台相关模块:其内部模块主要包括 KNI、能耗管理以及 IVSHMEM 接口。其中,KNI 模块主要通过 kni.ko 模块将数据报文从用户态传递给内核态协议栈处理,以便用户进程使用传统的 socket 接口对相关报文进行处理;能耗管理则提供了一些 API,应用程序可以根据收包速率动态调整处理器频率或进入处理器的不同休眠状态;另外,IVSHMEM 模块提供了虚拟机与虚拟机之间,或者虚拟机与主机之间的零拷贝共享内存机制,当 DPDK 程序运行时,IVSHMEM 模块会调用核心部件库 API,把几个 HugePage 映射为一个 IVSHMEM 设备池,并通过参数传递给 QEMU,这样,就实现了虚拟机之间的零拷贝内存共享。

轮询模式驱动模块:PMD 相关 API 实现了在轮询方式下进行网卡报文收发,避免了常规报文处理方法中因采用中断方式造成的响应延迟,极大提升了网卡收发性能。此外,该模块还同时支持物理和虚拟化两种网络接口,从仅仅支持 Intel 网卡,发展到支持 Cisco、Broadcom、Mellanox、Chelsio 等整个行业生态系统,以及基于 KVM、VMWARE、 XEN 等虚拟化网络接口的支持。

DPDK 还定义了大量 API 来抽象数据平面的转发应用,如 ACL、QoS、流分类和负载均衡等。并且,除以太网接口外,DPDK 还在定义用于加解密的软硬件加速接口(Extensions)。

大页技术

处理器的内存管理包含两个概念:物理内存和虚拟内存。Linux 操作系统里面整个物理
内存按帧(frames)来进行管理,虚拟内存按照页(page)来进行管理。内存管理单元(MMU)完成从虚拟内存地址到物理内存地址的转换。内存管理单元进行地址转换需要的信息保存在一个叫页表(page table)的数据结构里面,页表查找是一种极其耗时的操作。

x86 处理器硬件在缺省配置下,页的大小是 4K,但也可以支持更大的页表尺寸,例如
2M 或 1G 的页表。使用了大页表功能后,一个 TLB 表项可以指向更大的内存区域,这样可以大幅减少 TLB miss 的发生。早期的 Linux 并没有利用 x86 硬件提供的大页表功能,仅在 Linux内核 2.6.33 以后的版本,应用软件才可以使用大页表功能,具体的介绍可以参见 Linux 的大页表文件系统(hugetlbfs)特性。

DPDK 则利用大页技术,所有的内存都是从 HugePage 里分配,实现对内存池(mempool)的管理,并预先分配好同样大小的 mbuf,供每一个数据包使用。

轮询技术

为了减少中断处理开销,DPDK 使用了轮询技术来处理网络报文。网卡收到报文后,直
接将报文保存到处理器 cache 中(有 DDIO(Direct Data I/O)技术的情况下),或者保存到内存中(没有 DDIO 技术的情况下),并设置报文到达的标志位。应用软件则周期性地轮询报文到达的标志位,检测是否有新报文需要处理。整个过程中完全没有中断处理过程,因此应用程序的网络报文处理能力得以极大提升。

CPU 亲和技术

现代操作系统都是基于分时调用方式来实现任务调度,多个进程或线程在多核处理器的
某一个核上不断地交替执行。每次切换过程,都需要将处理器的状态寄存器保存在堆栈中,并恢复当前进程的状态信息,这对系统其实是一种处理开销。将一个线程固定一个核上运行,可以消除切换带来的额外开销。另外将进程或者线程迁移到多核处理器的其它核上进行运行时,处理器缓存中的数据也需要进行清除,导致处理器缓存的利用效果降低。

CPU 亲和技术,就是将某个进程或者线程绑定到特定的一个或者多个核上执行,而不被迁移到其它核上运行,这样就保证了专用程序的性能。

DPDK 使用了 Linux pthread 库,在系统中把相应的线程和 CPU 进行亲和性绑定, 然后相应的线程尽可能使用独立的资源进行相关的数据处理。

更多内容参考“中国电信DPDK技术白皮书v1.0、DPDK基础—认识DPDK技术、DPDK架构高清版、DPDK编程指南(中文版)”。

推荐阅读:

高性能计算技术、方案和行业全解(第二版)

InfiniBand架构和技术实战总结(第二版)

RDMA原理分析、对比和技术实现解析


或者获取全店资料打包,后续免费获取全店所有新增和更新。

全店铺技术资料打包(全)



转载申明:转载本号文章请注明作者来源,本号发布文章若存在版权等问题,请留言联系处理,谢谢。


推荐阅读

更多架构相关技术知识总结请参考“架构师全店铺技术资料打包”相关电子书(37本技术资料打包汇总详情可通过“阅读原文”获取)。

全店内容持续更新,现下单“架构师技术全店资料打包汇总(全)”,后续可享全店内容更新“免费”赠阅,价格仅收198元(原总价350元)。



温馨提示:

扫描二维码关注公众号,点击小程序链接获取架构师技术联盟书店电子书资料详情


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
升级指南之JDK 11+ 新特性和AJDKJDK 20 和 JDK 21 最新动态如何将财务部从三角形架构转型为高效的菱形架构?一文看懂DPDK【33/50】那些纸做的衣裳重磅!上海GDP连续两年突破4万亿元,居民人均可支配收入增长到7.9万元!确定2023年GDP增长预期:5.5%以上【必看】 美国华裔专家揭秘绝大多数医生都不知道的新冠病毒肺炎机理及自救措施揭开涂层看千年精美壁画关于DUV光刻机的一些讨论这国副总理及部长明天机场接中国游客全体法律人免费订阅!律所管理及业务发展资讯这两国的元首大腹便便需要减肥忆仙姿:演绎竞千姿4点精要:如何从架构图开始让架构设计平滑落地 | 极客时间全体法律人免费订阅!律所管理及业务发展期刊ChatGPT发展历程、原理、技术架构详解和产业未来Nacos 架构原理:一条注册请求会经历什么?X86架构与Arm架构区别直播预约 | 胡恺健:Privacy by Design理论架构与技术实战 | DPOHUB何谈第9期阿里、招行、圆通等知名企业架构师分享:企业架构演进实践与思考 | ArchSummit同时降低妈妈和宝宝的癌症风险?首席架构师成长之路:当架构师不再需要关注QPS的时候,他还要应对哪些挑战?AIGC基础:从VAE到DDPM原理、代码详解浅析ChatGPT的原理及应用华裔专家|多数医生不知的新冠肺炎机理及自救措施!快讯!佐治亚州位于DULUTH的YHALE双语公立学校2023年申请开始啦!在面试中如何巧妙的展现架构能力?附200道面试真题+100例经典架构案例拆解 | 极客时间预测 2022 年 FIFA 世界杯冠军大概率是荷兰!自制机器学习预测模型技术原理详解【首发】亿航生物完成数千万元A+轮融资,打造国际领先的外泌体技术原创研发与临床转化平台UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?UDP 的应用场景广东19市GDP公布!湾区9城GDP总额超10.46万亿低延时直播技术优化实践,画质增强技术应用实践,云剪辑架构设计与演进,Web端音视频通话技术探索首颗国产DPU芯片点亮背后,我们对DPU又有了更清晰的认识友情转载| 【招聘】深圳湾实验室阿尔茨海默病科研团队诚聘博士后、科研助理及实习生从技术原理上看,ChatGPT会取代搜索引擎吗?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。