书籍内容
本书共8章。第1章讲解Neutron概况。第2章介绍了Linux的虚拟网络知识。第3章讲述了Neutron的实现模型。第4章讲述的Neutron的资源模型。第5章讲述了Neutron的基本架构,以及架构中所涉及的Web机制、通信机制、并发机制等。第6章深入介绍Neutron启动服务的流程、通信机制与实现等。第7章深入分析了Neutron插件的驱动、消息处理机制。第8章详细讲解了Neutron代理(OVS与L3)的实现。
前言/序言
Preface?前 言为什么写作本书2016年1月16号,我在微信公众号(标哥说天下)发表了Neutron系列的第壹篇文章,当时计划是半年写完,没想到写了一年半。也许是由于冲动吧,那天我决定写一系列有关Neutron的文章。
手里拎个锤子,认为满世界都是钉子,这是一种要命的思维逻辑。写Neutron系列,最初的原因,不是因为需要用它做什么,而是想要说明它不能做什么。这对于从事云计算的人来说,可能根本就不是问题,因为Neutron的适用范围也恰好在他们的工作范围之内,没有逾越半步。
对于那些从事非云计算行业,却又与Neutron有着千丝万缕的联系的人来说,这可能也不是问题。但是如果领导与“专家”太多,这可能就是问题了。
然而在写作的过程中,我逐步放弃了想说明“Neutron能做什么,不能做什么”的想法,慢慢改变为现在的思路:努力描述Neutron原本是什么!
本书首先从Linux虚拟网络知识讲起,步步推进,最后深入到Neutron的代码。当剥开Neutron代码的面纱以后,Linux虚拟网络既是构建Neutron网络的基础,也是构建Neutron代码的基础。Neutron的代码写到最后,不过是调用Linux的命令行而已(也包括调用OVS的命令行)。
这么说,当然对Neutron不公平,调用命令行只是Neutron代码的最后一步,在这之前,Neutron还需知道调用什么命令行。这不是是否熟练掌握各种命令行的问题,而是能否正确分配逻辑资源的问题。举个最简单的例子,为一个端口配置一个IP地址,在调用命令行之前,Neutron需要通过各种机制和算法为这个端口分配一个正确的IP地址。
Neutron不仅需要具备分配逻辑资源的机制,还需要创建相应的虚拟网元(物理资源),并将这些虚拟网元正确地连接和配置,构建成正确的网络。Neutron所能支持的二、三层网络特性,不仅体现在它的代码中,也体现在它的资源模型中,并且以RESTful接口的形式对外提供服务。
如何阅读本书总体来说,Neutron并不神秘,也不深奥,却比较庞大。如果你对Neutron的代码细节比较感兴趣,本书会有大量的篇幅进行代码剖析。如果你仅仅想了解Neutron的基本原理,本书的前几章也正是这个目的,希望能对你有些帮助。
Neutron是一个关于网络的系统,本书第1章介绍了一些背景知识。在阅读本书之前,读者首先得具备一定的网络知识,也正是出于这样的目的,第2章介绍了Linux的虚拟网络知识。限于主题和篇幅的原因,本书没法再过多介绍其他内容。本书假设你对基本的TCP/IP协议、VXLAN、OVS等有一定的了解。当然,如果要阅读代码剖析那些章节,那么还需要对Python有一定的了解,因为Python的编程语言就是Python。第3章讲述了Neutron的实现模型。第4章讲述的是Neutron的资源模型。第5章讲述了Neutron的基本架构,以及架构中所涉及的Web机制、通信机制、并发机制等,这些都是Neutron的基本原理。第6章主要讲述Neutron如何启动Web Server,并通过WSGI Pipeline机制调用合适的 WSGI Application,以及WSGI Application如何巧妙地寻址到正确的Plugin。第7章主要讲述Plugin 如何如何处理Neutron的RESTful请求,如何进行逻辑资源分配,如何调用Agent。第8章主要讲述Agent如何配置(虚拟)网元,以构建Neutron网络。
但是无论多么细节的代码剖析,也没法做到将Neutron的每一行代码都讲述到。所以本书在每一个代码剖析的章节,尽可能地给出相关的类图和顺序图。如果你对Neutron代码还不是很熟悉,笔者强烈建议,你一边看着代码,一边看着本书,两相对照阅读,并且自己尝试着画出这些类图和顺序图,这将起到事半功倍的作用。
Neutron代码下载的网址是:https://releases.openstack.org/,截至笔者定稿时的最新版本是Ocata。笔者还建议你阅读这个网址的内容:https://developer.openstack.org/api-ref/networking/v2/index.html,它讲述了Neutron的RESTful API,是非常重要的参考资料。
致谢在写作的过程中,遇到了很多难题,幸亏得到陈苍老师许多热情而又无私的帮助,我才能越过一道道坎。陈苍老师是我的同事,安静、幽默、智慧。
风河的杨斌先生同样给予了我很多无私的帮助,他纠正了我原稿中的很多错误。
黄朝义、胡玉刚两位先生也很耐心地解答了我很多问题。我还向Oslo项目的PTL郭先生请教了有关Oslo的问题。
OpenStack资深专家(人称大师兄)、九州云CTO龚永生先生牺牲宝贵的国庆中秋双节假期,为本书审稿并作序,深感荣幸和不安。
感谢机械工业出版社华章公司的高婧雅的指导与帮助,我才能将这一系列文章集结付梓。
这一路走来,我自己受益良多,学习了很多知识,认识了很多朋友!微信里,大家给我留言,跟我交流,给我信心。欢迎大家与我交流或者指正我的错误,可以关注我的微信公众号“标哥说天下”(bgstx001)。
感谢你的支持、帮助和鼓励,我才能坚持到今天!
作者简介
李宗标,华为研发工程师,业界第壹个 SDN+NFV Orchestrator 开源架构师(OPEN-O),对SDN/NFV 颇有研究,并且有丰富的市场项目经验。