没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
99页
DPDK 的组成架构如下图所示,在最底部的内核态(Linux Kernel)DPDK 有 两个模块:KNI 与 IGB_UIO。其中,KNI 提供给用户一个使用 Linux 内核态的协 议栈,以及传统的 Linux 网络工具(如 ethtool, ifconfig)。IGB_UIO(igb_uio.ko 和 kni.ko. IGB_UIO)则借助了 UIO 技术,在初始化过程中将网卡硬件寄存器映 射到用户态。
资源推荐
资源详情
资源评论
目录
1、DPDK 背景介绍............................................................................................................................ 4
2、DPDK 架构和关键技术 ................................................................................................................ 5
2.1 概念和术语 ........................................................................................................................ 5
2.2 DPDK 架构介绍 .................................................................................................................. 7
2.3 大页技术 ......................................................................................................................... 10
2.4 轮询技术 ......................................................................................................................... 10
2.5 CPU 亲和技术 .................................................................................................................. 10
2.6 DPDK 的应用模型 ............................................................................................................ 11
3、DPDK 技术应用优势 .................................................................................................................. 11
4、DPDK 初始化和转发流程 .......................................................................................................... 11
4.1 初始化流程 ..................................................................................................................... 12
4.2 批量转发流程 ................................................................................................................. 12
5、DPDK 技术原理简介 .................................................................................................................. 12
5.1 环境抽象层概述 ............................................................................................................. 13
5.2 核心组件分析 ................................................................................................................. 14
5.3 DPDK 环境抽象层 ............................................................................................................ 16
5.3.1 LIBC 与 EAL 的区别 ............................................................................................ 16
5.3.2 EAL 加载过程 ...................................................................................................... 17
5.3.3 内存分片介绍 ..................................................................................................... 19
6、DPDK 内存管理功能介绍 .......................................................................................................... 20
6.1 Malloc 函数库介绍 ........................................................................................................ 20
6.2 Ring 函数库介绍 ........................................................................................................... 21
6.2.1 单个生产者入队 .................................................................................................. 25
6.2.2 单个消费者出队 .................................................................................................. 27
6.2.3 多个生产者入队 .................................................................................................. 29
3.2.4 多个消费者的出队 .............................................................................................. 34
6.3 Mempool 函数库介绍 ...................................................................................................... 34
6.3.1 内存对齐的约束 .................................................................................................. 34
6.3.2 CPU 本地 Cache ................................................................................................... 36
6.4 Mbuf 函数库 .................................................................................................................... 38
6.5 DPDK 内存对象分布 ........................................................................................................ 39
7、DPDK Poll 模型驱动 ................................................................................................................ 44
8、DPDK 多进程分析...................................................................................................................... 51
8.1 进程的创建 ..................................................................................................................... 52
8.2 调度与切换 ..................................................................................................................... 53
8.3 地址空间共享 ................................................................................................................. 53
9、DPDK 技术总结.......................................................................................................................... 55
10、DPDK 和 VOS 的关系 ................................................................................................................ 58
11、SPDK 背景介绍........................................................................................................................ 62
12、SPDK 软件体系结构 ................................................................................................................ 63
12.1 SPDK 主要组件 .............................................................................................................. 65
12.1.1 SPDK 驱动层 ...................................................................................................... 65
12.1.2 块设备层 ........................................................................................................... 65
12.1.3 存储服务层 ....................................................................................................... 66
12.1.4 存储协议层 ....................................................................................................... 66
12.2 SPDK 技术总结 .............................................................................................................. 68
12.3 SPDK 存储的应用策略 .................................................................................................. 69
12.4 SPDK 存在问题 .............................................................................................................. 69
13、SPDK 特点和其他技术 ............................................................................................................ 69
13.1 SPDK 应用编程框架 ...................................................................................................... 70
13.2 SPDK 应用案例 ........................................................................................................ 70
13.3 Optane 结合 SPDK 技术 .......................................................................................... 71
13.4 SPDK 中国峰会介绍 ...................................................................................................... 71
13.5 SPDK 开源友好性 .......................................................................................................... 72
14、SPDK 和当前技术对比 ............................................................................................................ 73
14.1 基于 OS 的文件操作 ..................................................................................................... 73
14.2 基于 SPDK 架构的文件操作 ......................................................................................... 74
14.3 SPDK 测试对比分析 ...................................................................................................... 75
14.3.1 带宽测试结果对比 ........................................................................................... 75
14.3.2 IOPS 测试结果对比 .......................................................................................... 76
14.3.3 时延测试结果对比 ........................................................................................... 77
15、SPDK 存储模型 Blobstore ..................................................................................................... 77
15.1 blobstore 介绍 ............................................................................................................ 77
15.2 blobstore 中的对象 .................................................................................................... 78
15.3 blobstore 关键数据结构 ............................................................................................ 79
15.4 blobstore 元数据物理分布 ........................................................................................ 87
15.5 元数据页的分配计算 ................................................................................................... 88
16、相关技术介绍......................................................................................................................... 91
16.1 RDMA 高性能网络框架 .................................................................................................. 91
16.2 用户态 IO 技术 UIO ...................................................................................................... 91
16.3 Virtio 技术介绍 .......................................................................................................... 92
16.4 NVMf 技术介绍 .............................................................................................................. 94
16.5 Linux 文件系统架构介绍 ............................................................................................ 94
17、SPDK 关键技术分析 ................................................................................................................ 95
17.1 Message 传递与并发 .................................................................................................... 95
17.1.1 技术原理 ........................................................................................................... 95
17.1.2 消息传递基础架构 ........................................................................................... 96
17.1.3 事件架构介绍 ................................................................................................... 96
17.2 SPDK 用户态内存管理 .................................................................................................. 97
17.3 块设备层编程 ............................................................................................................... 98
17.4 编写 Blcok 设备模块 ................................................................................................... 98
17.4.1 创建一个新的组件 ........................................................................................... 99
17.4.2 创建 bdevs ........................................................................................................ 99
17.5 JSON-RPC 服务介绍 ...................................................................................................... 99
17.6 NVME 驱动介绍 .............................................................................................................. 99
17.7 NVMe 热插拔技术 ........................................................................................................ 100
1、DPDK 背景介绍
随着芯片技术与高速网络接口技术的一日千里式发展,报文吞吐需要处
理 10Gbps 端口处理能力,世面上大量的 25G、 40G 甚至 100G 高速端口已经
出现,主流处理器的主频仍停留在 3GHz 左右。
IO 超越 CPU 的运行速率,是横在行业面前的技术挑战。2009 年开始,以
Venky Venkastraen,Walter Gilmore,Mike Lynch 为核心的 Intel 团队,
开始了可行性研究,希望借助软件技术来实现,很快他们取得了一定的技术
突破,设计了运行在 Linux 用户态的网卡程序架构。随后,Intel 与 6wind
进行了更进一步的合作,共同交付了早期的 DPDK 软件开发包。2011 年开始,
6wind、Windriver、Tieto、Radisys 先后宣布了对 Intel DPDK 的商业服务
支持。Intel 起初只是将 DPDK 以源代码方式分享给少量客户,作为评估 IA
平台和硬件性能的软件服务模块,随着时间推移与行业的大幅度接受,2013
年 Intel 将 DPDK 这一软件以 BSD 开源方式,分享在 Intel 的网站上,供开
发者免费下载。
2013 年 4 月, 6wind 联合其他开发者成立了 www.dpdk.org 的开源社区,
DPDK 走上 了 开 源 的 大 道 。 DPDK 在代 码 开 源 后 , 任 何 开发 者 被 允 许通 过
www.dpdk.org 提交代码,随着开发者社区进一步扩大,Intel 持续加大了在
开源社区的投入,同时在 NFV 浪潮下,越来越多的公司和个人开发者加入了
这一社区,比如 Brocade,Cisco,RedHat, VMWARE, IBM,他们不再只是 DPDK
的消费者,角色向生产者转变,开始提供代码,对 DPDK 的代码进行优化,
整理。起初 DPDK 完全专注于 Intel 的服务器平台技术,专注于利用处理器
与芯片组高级特性,支持 Intel 的网卡产品线系列。
DPDK 2.1 版本在 2015 年 8 月发布,几乎所有行业主流的网卡设备商都
已经加入了 DPDK 社区,提供源代码级别支持。例如 Emulex 收购的 Broadcom
网卡,Mellanox,Chelsio 以及 Cisco 等等。另外除了支持通用网卡之外,
能否将 DPDK 应用在特别的加速芯片上,是一个有趣的话题,有很多工作在
进行中,Intel 最新提交了用于 Crypto 设备的接口设计接口,可以利用类似
Intel 的 QuickAssit 的硬件加速单元,实现一个针对数据包加解密与压缩
处理的软件接口。
在多架构支持方面,DPDK 社区也取得了很大的进展,IBM 中国研究院的
祝超博士,启动了将 DPDK 移植到 Power 体系架构的工作, Freescale 的中
国开发者也参与修改,Tilera 与 Ezchip 的工程师也花了不少精力将 DPDK
运行在 Tile 架构下。很快 DPDK 从单一的基于 Intel 平台为基石的软件,逐
步演变成一个相对完整的生态系统,覆盖了多个处理器,多个以太网和硬件
加速技术。
在 Linux 社区融合方面,DPDK 也开始和一些主流的 Linux 社区合作,并
得到了越来越多的响应。作为 Linux 社区最主要的贡献者之一 RedHat,尝
试了在 Fedora Linux 集成了 DPDK;接着 Redhat Enterprise Linux 在安装
库里也加入 DPDK 支持,用户可以自动下载安装 DPDK 扩展库。Redhat 工程
师还尝试了将 DPDK 与 Container 集成测试,公开发布了运行结果。传统虚
拟化的领导者 VMWARE 的工程师也加入了 DPDK 社区,负责 VMXNET3-PMD 模块
的维护。Canonical 在 Ubuntu 15 中加入了 DPDK 的支持。
2、DPDK 架构和关键技术
2.1 概念和术语
随着互联网的高速发展、云产业的快速突起,基础架构网络逐渐偏向基于通
用计算平台或模块化计算平台的架构融合,以支持多样化和大数据下的网络功能,
传统的 PC 机器在分布式计算平台上的优势更为明显。在这些针对海量数据处理
或海量用户的服务场景,高性能编程显得尤为重要。DPDK 应运而生。
DPDK 英文全称为 Data Plane Development Kit,DPDK 是一套源码编程库,
或者可以说是一个开源的数据平面开发工具集,可以为 Intel Architecture(IA)
处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于
Linux 系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。
DPDK 通过环境抽象层旁路内核协议栈、轮询模式的报文无中断收发、优化内
存/缓冲区/队列管理、基于网卡多队列和流识别的负载均衡等多项技术,实现了
在 x86 处理器架构下的高性能报文转发能力,目前已经验证可以运行在大多数
Linux 操作系统上,包括 FreeBSD 9.2、Fedora release18、Ubuntu 12.04 LTS、
RedHat Enterprise Linux 6.3 和 Suse Enterprise Linux 11 SP2 等。DPDK 使
用了 BSD License,极大的方便了企业在其基础上来实现自己的协议栈或者应用。
用户可以在 Linux 用户态空间开发各类高速转发应用,也适合与各类商业化的数
据平面加速解决方案进行集成。
英特尔在 2010 年启动了对 DPDK 技术的开源化进程,于当年 9 月通过 BSD 开
源许可协议正式发布源代码软件包,并于 2014 年 4 月在 www.dpdk.org 上正式
成立了独立的开源社区平台,为开发者提供支持。开源社区的参与者们大幅推进
了 DPDK 的技术创新和快速演进,而今它已发展成为 SDN 和 NFV 的一项关键技术。
主要术语:
DPDK:Data Plane Development Kit,DPDK 是一套源码编程库,可以为 Intel
处理器提升基础数据平面功能。
FreeBSD:FreeBSD 是一种 UNIX 操作系统,是由经过 BSD、386BSD 和 4.4BSD
发展而来的 Unix 的一个重要分支。FreeBSD 为不同架构的计算机系统提供了不
同程度的支持。它是一个自由的(英文 free 也可以说是免费的)类 UNIX 操作系统
(Unix-like),经由 BSD UNIX 由 AT&T UNIX 衍生而来,FreeBSD 由于法律原因不
能称为 UNIX,但由于直接衍生于 BSD UNIX,并且一些原来 BSD UNIX 的开发者后
来转到 FreeBSD 的开发,使得 FreeBSD 在内部结构和系统 API 上和 UNIX 有很大
的兼容性。
KNI:Kernel NIC Interface 是 DPDK 提供的一种允许用户空间应用程序访问
的 Linux 协议栈的接口,类似于 linux 的 TUN/TAP。
剩余98页未读,继续阅读
资源评论
自动驾驶小哥
- 粉丝: 14
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功