描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111537830
本书汇聚了资深的DPDK技术专家的精辟见解和实战体验,详细介绍了DPDK技术的发展趋势、数据包处理、硬件加速技术、虚拟化,以及DPDK技术在SDN、NFV、网络存储等领域的实际应用。作为国内本全面阐述网络数据面核心技术的书籍,本书主要面向IT、网络通信行业的从业人员,以及大专院校的学生。
目 录?Contents
序 言
引 言
作者介绍
部分 DPDK基础篇
第1章 认识DPDK 3
1.1 主流包处理硬件平台 3
1.1.1 硬件加速器 4
1.1.2 网络处理器 4
1.1.3 多核处理器 5
1.2 初识DPDK 7
1.2.1 IA不适合进行数据包处理吗 7
1.2.2 DPDK实践 9
1.2.3 DPDK框架简介 10
1.2.4 寻找性能优化的天花板
11
1.3 解读数据包处理能力 12
1.4 探索IA处理器上艰巨的任务 13
1.5 软件包处理的潜力——再识DPDK
14
1.5.1 DPDK加速网络节点 14
1.5.2 DPDK加速计算节点 15
1.5.3 DPDK加速存储节点 15
1.5.4 DPDK的方法论 16
1.6 从融合的角度看DPDK
16
1.7 实例 17
1.7.1 HelloWorld
17
1.7.2 Skeleton
19
1.7.3 L3fwd 22
1.8 小结 25
第2章 Cache和内存 26
2.1 存储系统简介 26
2.1.1 系统架构的演进 26
2.1.2 内存子系统 28
2.2 Cache系统简介 29
2.2.1 Cache的种类 29
2.2.2 TLB Cache
30
2.3 Cache地址映射和变换 31
2.3.1 全关联型Cache
32
2.3.2 直接关联型Cache
32
2.3.3 组关联型Cache
33
2.4 Cache的写策略 34
2.5 Cache预取 35
2.5.1 Cache的预取原理 35
2.5.2 NetBurst架构处理器上的预取 36
2.5.3 两个执行效率迥异的程序
37
2.5.4 软件预取 38
2.6 Cache一致性 41
2.6.1 Cache Line对齐 41
2.6.2 Cache一致性问题的由来 42
2.6.3 一致性协议 43
2.6.4 MESI协议 44
2.6.5 DPDK如何保证Cache一致性 45
2.7 TLB和大页 47
2.7.1 逻辑地址到物理地址的转换
47
2.7.2 TLB 48
2.7.3 使用大页 49
2.7.4 如何激活大页 49
2.8 DDIO 50
2.8.1 时代背景 50
2.8.2 网卡的读数据操作
51
2.8.3 网卡的写数据操作
53
2.9 NUMA系统 54
第3章 并行计算 57
3.1 多核性能和可扩展性 57
3.1.1 追求性能水平扩展
57
3.1.2 多核处理器 58
3.1.3 亲和性 61
3.1.4 DPDK的多线程 63
3.2 指令并发与数据并行 66
3.2.1 指令并发 67
3.2.2 单指令多数据 68
3.3 小结 70
第4章 同步互斥机制 71
4.1 原子操作 71
4.1.1 处理器上的原子操作
71
4.1.2 Linux内核原子操作 72
4.1.3 DPDK原子操作实现和应用 74
4.2 读写锁 76
4.2.1 Linux读写锁主要API 77
4.2.2 DPDK读写锁实现和应用 78
4.3 自旋锁 79
4.3.1 自旋锁的缺点 79
4.3.2 Linux自旋锁API 79
4.3.3 DPDK自旋锁实现和应用 80
4.4 无锁机制 81
4.4.1 Linux内核无锁环形缓冲 81
4.4.2 DPDK无锁环形缓冲 82
4.5 小结 89
第5章 报文转发 90
5.1 网络处理模块划分 90
5.2 转发框架介绍 91
5.2.1 DPDK run to completion模型 94
5.2.2 DPDK pipeline模型 95
5.3 转发算法 97
5.3.1 精确匹配算法 97
5.3.2 长前缀匹配算法
100
5.3.3 ACL算法 102
5.3.4 报文分发 103
5.4 小结 104
第6章 PCIe与包处理I/O 105
6.1 从PCIe事务的角度看包处理 105
6.1.1 PCIe概览 105
6.1.2 PCIe事务传输 105
6.1.3 PCIe带宽 107
6.2 PCIe上的数据传输能力 108
6.3 网卡DMA描述符环形队列 109
6.4 数据包收发——CPU和I/O的协奏 111
6.4.1 全景分析 111
6.4.2 优化的考虑 113
6.5 PCIe的净荷转发带宽 113
6.6 Mbuf与Mempool 114
6.6.1 Mbuf 114
6.6.2 Mempool
117
6.7 小结 117
第7章 网卡性能优化 118
7.1 DPDK的轮询模式 118
7.1.1 异步中断模式 118
7.1.2 轮询模式 119
7.1.3 混和中断轮询模式
120
7.2 网卡I/O性能优化 121
7.2.1 Burst收发包的优点 121
7.2.2 批处理和时延隐藏
124
7.2.3 利用Intel SIMD指令进一步并行化包收发 127
7.3 平台优化及其配置调优
128
7.3.1 硬件平台对包处理性能的影响
129
7.3.2 软件平台对包处理性能的影响
133
7.4 队列长度及各种阈值的设置
136
7.4.1 收包队列长度 136
7.4.2 发包队列长度 137
7.4.3 收包队列可释放描述符数量阈值(rx_free_thresh) 137
7.4.4 发包队列发送结果报告阈值(tx_rs_thresh) 137
7.4.5 发包描述符释放阈值(tx_free_thresh) 138
7.5 小结 138
第8章 流分类与多队列 139
8.1 多队列 139
8.1.1 网卡多队列的由来
139
8.1.2 Linux内核对多队列的支持 140
8.1.3 DPDK与多队列 142
8.1.4 队列分配 144
8.2 流分类 144
8.2.1 包的类型 144
8.2.2 RSS 145
8.2.3 Flow Director
146
8.2.4 服务质量 148
8.2.5 虚拟化流分类方式
150
8.2.6 流过滤 150
8.3 流分类技术的使用 151
8.3.1 DPDK结合网卡Flow Director功能 152
8.3.2 DPDK结合网卡虚拟化及Cloud Filter功能 155
8.4 可重构匹配表 156
8.5 小结 157
第9章 硬件加速与功能卸载 158
9.1 硬件卸载简介 158
9.2 网卡硬件卸载功能 159
9.3 DPDK软件接口 160
9.4 硬件与软件功能实现
161
9.5 计算及更新功能卸载
162
9.5.1 VLAN硬件卸载 162
9.5.2 IEEE1588硬件卸载功能 165
9.5.3 IP TCP/UDP/SCTP checksum硬件卸载功能 167
9.5.4 Tunnel硬件卸载功能 168
9.6 分片功能卸载 169
9.7 组包功能卸载 170
9.8 小结 172
第二部分 DPDK虚拟化技术篇
第10章 X86平台上的I/O虚拟化
175
10.1 X86平台虚拟化概述 176
10.1.1 CPU虚拟化 176
10.1.2 内存虚拟化 177
10.1.3 I/O虚拟化 178
10.2 I/O透传虚拟化 180
10.2.1 Intel? VT-d简介 180
10.2.2 PCIe SR-IOV概述 181
10.3 PCIe网卡透传下的收发包流程 183
10.4 I/O透传虚拟化配置的常见问题 184
10.5 小结 184
第11章 半虚拟化Virtio 185
11.1 Virtio使用场景 185
11.2 Virtio规范和原理 186
11.2.1 设备的配置 187
11.2.2 虚拟队列的配置
190
11.2.3 设备的使用 192
11.3 Virtio网络设备驱动设计 193
11.3.1 Virtio网络设备Linux内核驱动设计 193
11.3.2 基于DPDK用户空间的Virtio网络设备驱动设计以及性能优化 196
11.4 小结 198
第12章 加速包处理的vhost优化方案 199
12.1 vhost的演进和原理 199
12.1.1 Qemu与virtio-net 199
12.1.2 Linux内核态vhost-net 200
12.1.3 用户态vhost
201
12.2 基于DPDK的用户态vhost设计 201
12.2.1 消息机制 202
12.2.2 地址转换和映射虚拟机内存
203
12.2.3 vhost特性协商 204
12.2.4 virtio-net设备管理 205
12.2.5 vhost中的Checksum和TSO功能卸载
205
12.3 DPDK vhost编程实例 206
12.3.1 报文收发接口介绍
206
12.3.2 使用DPDK vhost lib进行编程 207
12.3.3 使用DPDK vhost PMD进行编程 209
12.4 小结 210
第三部分 DPDK应用篇
第13章 DPDK与网络功能虚拟化 213
13.1 网络功能虚拟化 213
13.1.1 起源 213
13.1.2 发展 215
13.2 OPNFV与DPDK 217
13.3 NFV的部署 219
13.4 VNF部署的形态 221
13.5 VNF自身特性的评估 222
13.5.1 性能分析方法论
223
13.5.2 性能优化思路
224
13.6 VNF的设计 225
13.6.1 VNF虚拟网络接口的选择 225
13.6.2 IVSHMEM共享内存的PCI设备 226
13.6.3 网卡轮询和混合中断轮询模式的选择
228
13.6.4 硬件加速功能的考虑
228
13.6.5 服务质量的保证
229
13.7 实例解析和商业案例
231
13.7.1 Virtual BRAS
231
13.7.2 Brocade vRouter 5600 235
13.8 小结 235
第14章 Open vSwitch(OVS)中的DPDK性能加速 236
14.1 虚拟交换机简介 236
14.2 OVS简介 237
14.3 DPDK加速的OVS 239
14.3.1 OVS的数据通路 239
14.3.2 DPDK加速的数据通路 240
14.3.3 DPDK加速的OVS性能比较 242
14.4 小结 244
第15章 基于DPDK的存储软件优化 245
15.1 基于以太网的存储系统 246
15.2 以太网存储系统的优化
247
15.3 SPDK介绍 249
15.3.1 基于DPDK的用户态TCP/IP栈 249
15.3.2 用户态存储驱动
254
15.3.3 SPDK中iSCSI target实现与性能 257
15.4 小结 261
附录A 缩略词 262
附录B 推荐阅读 265
Introduction?引 言动机2015年4月,届DPDK中国峰会在北京成功召开。来自中国移动、中国电信、阿里巴巴、IBM、Intel、华为以及中兴的专家朋友登台演讲,一起分享了以DPDK为中心的技术主题。表1列出了2015 DPDK中国峰会的主题及演讲者。
表1 2015 DPDK中国峰会主题及演讲者主 题 演讲者 公 司利用DPDK加速NFV 邓辉 中国移动利用DPDK优化云基础设施 孙成浩 阿里巴巴构建core以及高能效应用的实践 梁存铭 Intel基于英特尔ONP构建虚拟化的IP接入方案 欧亮 中国电信DPDK加速无线数据核心网络 陈东华 中兴电信业务场景下的数据面挑战 刘郡 华为运行于Power架构下的DPDK和数据转发 祝超 IBM这次会议吸引了来自各行业、科研单位与高校的200多名开发人员、专家和企业代表参会。会上问答交流非常热烈,会后我们就想,也许是时间写一本介绍DPDK、探讨NFV数据面的技术书籍。现在,很多公司在招聘网络和系统软件人才时,甚至会将DPDK作为一项技能罗列在招聘要求中。DPDK从一个初的小众技术,经过10年的孕育,慢慢走来,直至今日已经逐渐被越来越多的通信、云基础架构厂商接受。同时,互联网上也出现不少介绍DPDK基础理论的文章和博客,从不同的角度对DPDK技术进行剖析和应用,其中很多观点非常新颖。作为DPDK的中国开发团队人员,我们意识到如果能够提供一本DPDK的书籍,进行一些系统性的梳理,将核心的原理进行深入分析,可以更好地加速DPDK技术的普及,触发更多的软件创新,促进行业的新技术发展。于是,就萌发了写这本书的初衷。当然,我们心里既有创作的激动骄傲,也有些犹豫忐忑,写书不是一件简单的事情,但经过讨论和考量,我们逐渐变得坚定,这是一本集结团队智慧的尝试。我们希望能够把DPDK的技术深入浅出地解释清楚,让更多的从业人员和高校师生了解并使用DPDK,促进DPDK发展日新月异,兴起百家争鸣的局面,这是我们的愿景。
多核2005年的夏天,刚加入Intel的我们畅想着CPU多核时代的到来给软件业带来的挑战与机会。如果要充分利用多核处理器,需要软件针对并行化做大量改进,传统软件的并行化程度不高,在多核以前,软件依靠CPU频率提升自动获得更高性能。并行化改进不是一件简单的工作,许多软件需要重新设计,基本很难在短期实现,整个计算机行业都对此纠结了很久。2005年以前,整个CPU的发展历史,是不断提升芯片运算频率核心的做法,软件性能会随着处理器的频率升高,即使软件不做改动,性能也会跟着上一个台阶。但这样的逻辑进入多核时代已无法实现。首先我们来看看表2所示的Intel?多核处理器演进。
表2 Intel?多核处理器演进的历史图表Xeon处理器代码 制造工艺 核心数量
发布时间 超线程 双路服务器可使用核心数量WoodCrest 65nm ??2 2006年6月 否 ??4Nehalem-EP 45nm ??4 2009年7月 是 16Westmere-EP 32nm ??6 2010年2月 是 24SandyBridge-EP 32nm ??8 2012年3月 是 32IvyBridge-EP 22nm 12 2013年9月 是 48Haswell-EP 22nm 18 2014年9月 是 72在过去10年里,服务器平台的处理器核心数目扩展了很多。表2参考了英特尔至强系列的处理器的核心技术演进历史,这个系列的处理器主要面向双通道(双路)服务器和相应的硬件平台。与此同时,基于MIPS、Power、ARM架构的处理器也经历着类似或者更加激进的并行化计算的路线图。在处理器飞速发展的同时,服务器平台在硬件技术上提供了支撑。基于PCI Express的高速IO设备、内存访问与带宽的上升相辅相成。此外,价格和经济性优势越发突出,今天一台双路服务器的价格可能和10年前一台高端笔记本电脑的价格类似,但计算能力达到甚至超越了当年的超级计算机。强大的硬件平台为软件优化技术创新蕴蓄了温床。
以太网接口技术也经历了飞速发展。从早期主流的10Mbit/s与100Mbit/s,发展到千兆网(1Gbit/s)。到如今,万兆(10Gbit/s)网卡技术成为数据中心服务器的主流接口技术,近年来,Intel等公司还推出了40Gbit/s、100Gbit/s的超高速网络接口技术。而CPU的运行频率基本停留在10年前的水平,为了迎接超高速网络技术的挑战,软件也需要大幅度创新。
结合硬件技术的发展,DPDK(Data Plane Development Kit),一个以软件优化为主的数据面技术应时而生,它为今天NFV技术的发展提供了绝佳的平台可行性。
IXP提到硬件平台和数据面技术,网络处理器是无法绕过的话题。电信行业通常使用网络处理器或类似芯片技术作为数据面开发平台。Intel此前也曾专注此领域,2002年收购了DEC下属的研究部门,在美国马萨诸塞州哈德逊开发了这一系列芯片,诞生了行业闻名的Intel
Exchange Architecture Network Processor(IXP4xx、IXP12xx、IXP24xx、IXP28xx)产品线,曾取得行业的成绩。即使今日,相信很多通信业的朋友,还对这些处理器芯片有些熟悉或者非常了解。IXP内部拥有大量的微引擎(MicroEngine),同时结合了XSCALE作为控制面处理器,众所周知,XSCALE是以ARM芯片为核心技术的一种扩展。
2006年,AMD向Intel发起了一场大战,时至今日结局已然明了,Intel依赖麾下的以色列团队,打出了新一代Core架构,迅速在能效比上完成超车。公司高层同时确立了Tick-Tock的研发节奏,每隔两年推出新一代体系结构,每隔两年推出基于新一代制造工艺的芯片。这一战略基本保证了每年都会推出新产品。当时AMD的处理器技术一度具有领先地位,并触发了Intel在内部研发架构城门失火的状况下不得不进行重组,就在那时Intel的网络处理器业务被进行重估,由于IXP芯片系列的市场容量不够大,Intel的架构师也开始预测,通用处理器多核路线有取代IXP专用处理芯片的潜力。自此,IXP的研发体系开始调整,逐步转向使用Intel CPU多核的硬件平台,客观上讲,这一转型为DPDK的产生创造了机会。时至今日,Intel还保留并发展了基于硬件加速的QuickAssist技术,这和当日的IXP息息相关。由此看来,DPDK算是生于乱世。
DPDK的历史网络处理器能够迅速将数据报文接收入系统,比如将64字节的报文以10Gbit/s的线速也就是14.88Mp/s(百万报文每秒)收入系统,并且交由CPU处理,这在早期Linux和服务器平台上无法实现。以Venky Venkastraen、Walter Gilmore、Mike Lynch为核心的Intel团队开始了可行性研究,并希望借助软件技术来实现,很快他们取得了一定的技术突破,设计了运行在Linux用户态的网卡程序架构。传统上,网卡驱动程序运行在Linux的内核态,以中断方式来唤醒系统处理,这和历史形成有关。早期CPU运行速度远高于外设访问,所以中断处理方式十分有效,但随着芯片技术与高速网络接口技术的一日千里式发展,报文吞吐需要高达10Gbit/s的端口处理能力,市面上已经出现大量的25Gbit/s、40Gbit/s甚至100Gbit/s高速端口,主流处理器的主频仍停留在3GHz以下。高端游戏玩家可以将CPU超频到5GHz,但网络和通信节点的设计基于能效比经济性的考量,网络设备需要日以继夜地运行,运行成本(包含耗电量)在总成本中需要重点考量,系统选型时大多选取2.5GHz以下的芯片,保证合适的性价比。I/O超越CPU的运行速率,是横在行业面前的技术挑战。用轮询来处理高速端口开始成为必然,这构成了DPDK运行的基础。
在理论框架和核心技术取得一定突破后,Intel与6wind进行了合作,交由在法国的软件公司进行部分软件开发和测试,6wind向Intel交付了早期的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社区,提供源代码级别支持。另外,除了支持通用网卡之外,能否将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的支持。
延伸由于DPDK主体运行在用户态,这种设计理念给Linux或者FreeBSD这类操作系统带来很多创新思路,也在Linux社区引发一些讨论。
DPDK的出现使人们开始思考,Linux的用户态和内核态,谁更适合进行高速网络数据报文处理。从简单数据对比来看,在Intel的通用服务器上,使用单核处理小包收发,纯粹的报文收发,理想模型下能达到大约57Mp/s(每秒百万包)。尽管在真实应用中,不会只收发报文不处理,但这样的性能相对Linux的普通网卡驱动来说已经是遥不可及的高性能。OpenVSwitch是一个很好的例子,作为主流的虚拟交换开源软件,也尝试用DPDK来构建和加速虚拟交换技术,DPDK的支持在OVS2.4中被发布,开辟了在内核态数据通道之外一条新的用户态数据通道。目前,经过20多年的发展,Linux已经累积大量的开源软件,具备丰富的协议和应用支持,无所不能,而数据报文进出Linux系统,基本都是在Linux内核态来完成处理。因为Linux系统丰富强大的功能,相当多的生产系统(现有软件)运行在Linux内核态,这样的好处是大量软件可以重用,研发成本低。但也正因为内核功能强大丰富,其处理效率和性能就必然要做出一些牺牲。
使用在专业的通信网络系统中,高速数据进出速率是衡量系统性能的关键指标之一。大多通信系统是基于Linux的定制系统,在保证实时性的嵌入式开发环境中开发出用户态下的程序完成系统功能。利用DPDK的高速报文吞吐优势,对接运行在Linux用户态的程序,对成本降低和硬件通用化有很大的好处,使得以软件为主体的网络设备成为可能。对Intel? x86通用处理器而言,这是一个巨大的市场机会。
对于通信设备厂商,通用平台和软件驱动的开发方式具有易采购、易升级、稳定性、节约成本的优点。
易采购:通用服务器作为主流的基础硬件,拥有丰富的采购渠道和供应商,供货量巨大。
易升级:软件开发模式简单,工具丰富,程度上避免系统升级中对硬件的依赖和更新,实现低成本的及时升级。
稳定性:通用服务器平台已经通过大量功能的验证,产品稳定性毋庸置疑。而且,对于专用的设计平台,系统稳定需要时间累积和大量测试,尤其是当采用新一代平台设计时可能需要硬件更新,这就会带来稳定性的风险。
节约研发成本和降低复杂性:传统的网络设备因为功能复杂和高可靠性需求,系统切分为多个子系统,每个子系统需要单独设计和选型,独立开发,甚至选用单独的芯片。这样的系统需要构建复杂的开发团队、完善的系统规划、有效的项目管理和组织协调,来确保系统开发进度。而且,由于开发的范围大,各项目之间会产生路径依赖。而基于通用服务器搭建的网络设备可以很好地避免这些问题。
版权DPDK全称是Data Plane Development Kit,从字面解释上看,这是专注于数据面软件开发的套件。本质上,它由一些底层的软件库组成。目前,DPDK使用BSD license,绝大多数软件代码都运行在用户态。少量代码运行在内核态,涉及UIO、VFIO以及XenDom0,KNI这类内核模块只能以GPL发布。BSD给了DPDK的开发者和消费者很大的自由,大家可以自由地修改源代码,并且广泛应用于商业场景。这和GPL对商业应用的限制有很大区别。作为开发者,向DPDK社区提交贡献代码时,需要特别注意license的定义,开发者需要明确license并且申明来源的合法性。
社区参与DPDK社区[Ref1-1](www.dpdk.org)就需要理解它的运行机制。目前,DPDK的发布节奏大体上每年发布3次软件版本([email protected]),发布计划与具体时间会提前公布在社区里。DPDK的开发特性也会在路标中公布,一般是通过电子邮件列表讨论[email protected],任何参与者都可以自由提交新特性或者错误修正,具体规则可以参见www.dpdk.org/dev,本书不做详细解读。对于使用DPDK的技术问题,可以参与[email protected]进入讨论。
子模块的维护者名单也会发布到开源社区,便于查阅。在提交代码时,源代码以patch方式发送给[email protected]。通常情况下,代码维护者会对提交的代码进行仔细检查,包括代码规范、兼容性等,并提供反馈。这个过程全部通过电子邮件组的方式来完成,由于邮件量可能巨大,如果作者没有得到及时回复,请尝试主动联系,提醒代码维护人员关注,这是参与社区非常有效的方式。开发者也可以在次提交代码时明确抄送相关的活跃成员和专家,以得到更加及时的反馈和关注。
目前,开源社区的大量工作由很多自愿开发者共同完成,因此需要耐心等待其他开发者来及时参与问答。通过提前研究社区运行方式,可以事半功倍。这对在校学生来说更是一个很好的锻炼机会。及早参与开源社区的软件开发,会在未来选择工作时使你具有更敏锐的产业视角和技术深度。作为长期浸润在通信行业的专业人士,我们强烈推荐那些对软件有强烈兴趣的同学积极参与开源社区的软件开发。
贡献本书由目前DPDK社区中一些比较资深的开发者共同编写,很多作者是次将DPDK的核心思想付诸于书面文字。尽管大家已尽的努力,但由于水平和能力所限,难免存在一些瑕疵和不足,也由于时间和版面的要求,很多好的想法无法在本书中详细描述。但我们希望通过本书能够帮助读者理解DPDK的核心思想,引领大家进入一个丰富多彩的开源软件的世界。在本书编纂过程中我们得到很多朋友的帮助,必须感谢上海交通大学的金耀辉老师、中国科学技术大学的华蓓和张凯老师、清华大学的陈渝教授、中国电信的欧亮博士,他们给了我们很多中肯的建议;另外还要感谢李训和刘勇,他们提供了大量的资料和素材,帮助我们验证了大量的DPDK实例;还要感谢我们的同事杨涛、喻德、陈志辉、谢华伟、戴启华、常存银、刘长鹏、Jim
St Leger、MJay、Patrick Lu,他们热心地帮助勘定稿件;后还要特别感谢英特尔公司网络产品事业部的领导周晓梅和周林给整个写作团队提供的极大支持。正是这些热心朋友、同事和领导的支持,坚定了我们的信心,并帮助我们顺利完成此书。后我们衷心希望本书读者能够有所收获。
作者介绍(按姓名排序)?About
the Authers曹水:黑龙江省佳木斯人,2001年毕业于复旦大学计算机系,硕士。现为英特尔软件经理,从事嵌入式开发和软件行业超过15年,现主要负责DPDK软件测试工作。
陈静:湖北省沙市人,2006年毕业于华中科技大学,硕士。现为英特尔软件开发工程师,主要从事DPDK网卡驱动的开发和性能调优工作。
何少鹏:江西省萍乡人,毕业于上海交通大学,硕士。现为英特尔DPDK软件工程师,开发网络设备相关软件超过十年,也有数年从事互联网应用和SDN硬件设计工作。
胡雪焜:江西省南昌人,毕业于中国科学技术大学计算机系,硕士。现为英特尔网络通信平台部门应用工程师,主要研究底层虚拟化技术和基于IA架构的数据面性能优化,以及对网络演进的影响,具有丰富的SDN/NFV商业实践经验。
梁存铭:英特尔资深软件工程师,在计算机网络领域具有丰富的实践开发经验,提交过多项美国专利。作为DPDK早期贡献者之一,在PCIe高性能加速、I/O虚拟化、IA指令优化、改善闲时效率、协议栈优化等方面有较深入的研究。
刘继江:黑龙江省七台河人,毕业于青岛海洋大学自动化系,现主要从事DPDK网卡驱动程序和虚拟化研发,和overlay网络的性能优化工作。
陆文卓:安徽省淮南人,2004年毕业于南京大学计算机系,硕士。现为英特尔中国研发中心软件工程师。在无线通信、有线网络方面均有超过十年的从业经验。
欧阳长春:2006年毕业于华中科技大学计算机系,硕士。目前在阿里云任开发专家,从事网络虚拟化开发及优化,在数据报文加速、深度报文检测、网络虚拟化方面具有丰富开发经验。
仇大玉:江苏省南京人,2012年毕业于东南大学,硕士。现为英特尔亚太研发有限公司软件工程师,主要从事DPDK软件开发和测试工作。
陶喆:上海交通大学学士,上海大学硕士。先后在思科和英特尔从事网络相关的设备、协议栈和虚拟化的开发工作。曾获CCIE R&S认证。
万群:江西省南昌人,毕业于西安交通大学计算机系,硕士。现为英特尔上海研发中心研发工程师。从事测试领域的研究及实践近十年,对测试方法及项目管理有相当丰富的经验。
王志宏:四川省绵阳人,2011年毕业于华东师范大学,硕士。现为英特尔亚太研发中心高级软件工程师,主要工作方向为DPDK虚拟化中的性能分析与优化。
吴菁菁:江苏省扬州人,2007年毕业于西安交通大学电信系,硕士。现为英特尔软件工程师,主要从事DPDK软件开发工作。
许茜:浙江省杭州市人,毕业于浙江大学信电系,硕士,现为英特尔网络处理事业部软件测试人员,主要负责DPDK相关的虚拟化测试和性能测试。
杨子夜:2009年毕业于复旦大学软件学院,硕士。现为英特尔高级软件工程师,从事存储软件开发和优化工作,在虚拟化、存储、云安全等领域拥有5个相关专利以及20项申请。
张合林:湖南省湘潭人,2004年毕业于东华大学,工学硕士。现主要从事DPDK网卡驱动程序研发及性能优化工作。
张帆:湖南省长沙人,爱尔兰利莫里克大学计算机网络信息学博士。现为英特尔公司爱尔兰分部网络软件工程师,湖南省湘潭大学兼职教授。近年专著有《Comparative Performance and Energy Consumption Analysis of Different
AES Implementations on a Wireless Sensor Network Node》等。发表SCI/EI检索国际期刊及会议论文3篇。目前主要从事英特尔DPDK在SDN应用方面的扩展研究工作。
朱河清:江苏省靖江人,毕业于电子科技大学数据通信与计算机网络专业,硕士,现为英特尔DPDK与Hyperscan软件经理,在英特尔、阿尔卡特、华为、朗讯有15年通信网络设备研发与开源软件开发经验。
Venky Venkatesan:毕业于印度孟买大学,现为英特尔网络产品集团高级主任工程师(Sr PE),DPDK初始架构师,在美国Oregon负责报文处理与加速的系统架构与软件创新工作。
评论
还没有评论。