《Linux开源网络全栈详解:从DPDK到OpenFlow》基于Linux基金会划分的开源网络技术层次框架,对处于主导地位的、较为流行的开源网络项目进行阐述,包括DPDK、OpenDaylight、Tungsten Fabric、OpenStack Neutron、容器网络、ONAP、OPNFV等。本书内容主要围绕各个项目的起源与发展、实现原理与框架、要解决的网络问题等方面展开讨论,致力于帮助读者对Linux开源网络技术的实现与发展形成完整、清晰的认识。本书语言通俗易懂,能够带领读者快速走入Linux开源网络的世界并做出自己的贡献。
《Linux开源网络全栈详解:从DPDK到OpenFlow》适合参与Linux开源网络项目开发的读者阅读,也适合互联网应用的开发者、架构师和创业者参考。
Linux开源网络技术大图谱
DPDK/OpenFlow/SDN/OpenDaylight/OpenStack/容器/Kubernetes网络/ Service Mesh等,多方位深层次
郭瑞景:从事网络与存储开发工作,活跃于OpenStack、OpenDaylight、OPNFV等开源项目。
陆连浩:ONAP项目积极贡献者,此前长期从事Linux驱动、嵌入式系统开发工作。
秦凯伦:OpenStack Neutron项目的活跃贡献者。
徐琛杰:从事边缘计算项目StarlingX网络方面的开发。
应若愚:从事网络相关软件开发和优化工作,目前主要负责ONAP平台开发。
丁亮:从事云ONAP相关的开发和集成工作。
朱礼波:活跃于OPNFV、ONAP等开源项目,此前从事虚拟化技术与GPU底层的开发与维护。
黄海滨:ONAP项目积极贡献者,Multi-Cloud 和 VFC的Committer,在虚拟化和智能监控领域发表6篇专利。
任桥伟:从事Linux内核、OpenStack、Ceph等开源项目的开发,著有《Linux内核修炼之道》 《 Linux那些事儿》系列。
梁存铭:软件架构师,网络数据面专家。主要从事研究数据面优化、网络设备虚拟化及系统架构优化。
胡雪焜:专注于虚拟化技术和基于IA架构的数据面性能优化,具有丰富的SDN/NFV商业实践。
胡嘉瑜:主要从事网络I/O虚拟化方面的工作。
王潇:主要从事网络虚拟化、云网络硬件加速等技术的开发。
何少鹏:专注于网卡和I/O虚拟化,之前在云服务和网络设备行业有十多年的从业经验。
姚磊:主要从事DPDK虚拟化以及OVS的性能评估和分析工作。
倪红军:VPP Maintainer,Sweetcomb和NSH_SFC项目负责人。
吴菁菁:主要从事Intel平台上网络包处理加速工作。
陈兆彦:主要从事基于IA架构的DPDK网络系统的性能测试和分析,以及研究SDN/NFV方案,如对TungstenFabric vRouter的性能分析。
自1991年诞生起,Linux已经走过了接近三十年。Linux早已没有了问世时的稚气,正在各个领域展示自己成熟的魅力。
以Linux为基础,也衍生出了各种开源生态,例如网络和存储。而生态离不开形形色色的开源项目,在人人谈开源的今天,一个又一个知名的开源项目正在全球快速生长。面对一个又一个扑面而来且快速更迭的新项目、新名词,我们会有一定的紧迫感,想去了解它们背后的故事,也会有一定的动力去踏上Linux开源网络世界之旅。面对这样的一段旅途,我们心底浮现的最为愉悦的开场白或许应该是“说实话,我学习的热情从来都没有低落过。Just for Fun”,正如Linus在自己的自传Just for Fun中所希望的那样。
面对Linux开源网络这么一个庞大而又杂乱的世界,让人最为惴惴不安的问题或许是:我该如何更快更好地适应这个全新的世界?人工智能与机器学习领域里研究的一个很重要的问题是“为什么我们小时候有人牵一匹马告诉我们那是马,于是之后我们看到其他的马就知道那是马了?”针对这个问题的一个结论是:我们头脑里形成了一个生物关系的拓扑,我们认知的各种生物都会放进这个拓扑的结构里,而我们随着年纪不断成长的过程就是形成并完善各种各样或树形或环形等拓扑的过程,并以此来认知我们面对的各种新事物。
由此可见,或许我们认知Linux开源网络世界最快也最为自然的方式就是努力地在脑海里形成它的拓扑,并不断地进行细化。例如这个生态里包括了什么样的层次,每个层次里又有什么样的项目去实现,各个项目又实现了哪些服务以及功能,这些功能又是以什么样的方式实现的,等等。对于我们感兴趣的项目,又可以更为细致地去勾勒其中的脉络。就好像我们头脑里形成的有关一个城市的地图,它有哪些区,区里又有哪些标志建筑以及街道,对于我们熟悉的地方可以将它的周围进行放大细化,甚至是一个微不足道的角落。
本书的组织形式
本书的内容组织正是为了尽一切能力帮助读者能够形成有关Linux开源网络世界比较细致的拓扑。首先是前两章,对Linux开源网络的生态以及Linux本身对网络的支持与实现进行了阐述,希望能够帮助读者对Linux开源网络有一个全面、基本的认识和了解。
第1章主要基于Linux基金会划分的开源网络技术层次框架,对Linux开源网络生态进行整体的介绍。此外,也介绍了与网络有关的开源组织与标准架构。
第2章详尽地介绍了Linux虚拟网络的实现,包括Linux环境下一些网络设备的虚拟化形式,以及组建虚拟化网络时涉及的主要技术,为更进一步讨论Linux开源网络生态下的开源项目打下基础。
第3~7章对Linux开源网络生态各个层次中处于主导地位的、较为流行的项目进行介绍。按照认识的发展规律,通过前面两章的介绍我们已经对Linux开源网络世界有了全局的认识和了解,接下来就可以按兴趣或工作需要为导向,选择一个项目进行深入的钻研和分析。这些章节的内容也是希望能够尽量帮助读者形成对相应项目的比较细致的拓扑,并不求对所有实现细节详尽分析。
网络数据平面的性能开销复杂多样且彼此关联,第3章即对相关的优化技术与项目进行讨论,包括DPDK、OVS-DPDK、FD.IO等。
第4章讨论网络的控制面,并介绍主要开源SDN(软件定义网络)控制器,包括OpenDaylight与Tungsten Fabric等。
第5章与第6章分别讨论OpenStack与Kubernetes两种主要云平台中的网络支持。没有网络,任何虚拟机或者容器都将只是这个虚拟世界中的孤岛,不知道自己生存的价值。
第7章讨论网络世界中的大脑——编排器。内容主要涵盖两种开源的编排器,包括ONAP与OPNFV。
感谢
作为英特尔的开源技术中心,参与各个Linux开源网络项目的开发与推广是再自然不过的事情。除了为各个开源项目的完善与稳定贡献更多的思考和代码,我们也希望能通过这本书让更多的人更快捷地融入Linux开源网络世界的大家庭。
如果没有Sandra Rivera(英特尔高级副总裁兼网络平台事业部总经理)、Imad Sousou(英特尔公司副总裁兼系统软件产品部总经理)、Mark Skarpness(英特尔系统软件产品部副总裁兼数据中心系统软件总经理)、Timmy Labatte(网络平台事业部副总裁兼软件工程总经理)、练丽萍(英特尔系统软件产品部网络与存储研发总监)、冯晓焰(英特尔系统软件产品部安卓系统工程研发总监)、周林(网络平台事业部中国区软件开发总监)、梁冰(英特尔系统软件产品部市场总监)、王庆(英特尔系统软件产品部网络与存储研发经理)的支持,这本书不可能完成,谨在此感谢他们的关怀与帮助。
也要感谢本书的编辑孙学瑛老师与宋亚东老师,从选题到最后的定稿,整个过程中,都给予我们无私的帮助和指导。
然后要感谢参与各章内容编写的各位同事,他们是郭瑞景、陆连浩、秦凯伦、徐琛杰、应若愚、丁亮、朱礼波、黄海滨、任桥伟、梁存铭、胡雪焜、胡嘉瑜、王潇、何少鹏、姚磊、倪红军、吴菁菁、陈兆彦。为了本书的顺利完成,他们付出了很多努力。
最后感谢所有对Linux开源网络技术抱有兴趣或从事各个Linux开源网络项目工作的人,没有你们的源码与大量技术资料,本书便会成为无源之水。
作 者