首页>参考读物>计算机科学与技术>计算机网络

深入理解OpenStack Neutron
作者 : 李宗标 著
出版日期 : 2017-12-19
ISBN : 978-7-111-58448-3
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 362
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

基础知识:讲解 Neutron基础知识,Linux网络编程与OVS,隧道与虚拟专用网等实践所需基础知识。
软件架构:讲解 Neutron安装部署、架构、网络模型,讲述 Neutron 的代码结构,插件框架, 运行框架,以及 HA/Cluster 等等。
架构设计与编程实践:结合SDN/NFV 案例与场景,深入剖析 Neutron 的网路架构设计与对接控制器的编写。
通过阅读本书,读者不仅能深入理解 Neutron 的代码实现,还能掌握当今 SDN/NFV 的业界思想。

图书特色

华为资深网络工程师撰写,云计算专家联袂推荐,行文风趣流畅、循序渐进
抽丝剥茧,深入分析Neutron网络、资源、架构与服务、插件、消息机制和经典API函数处理的核心技术原理与实现

封底
本书既有对Neutron虚拟网络背后的网络原理方面的阐述,也有后面对Neutron的数据模型、启动过程、消息处理机制和经典API函数处理的源码分析。语言风趣而又流畅;知识通俗化,深刻又易懂。相信此书能帮助读者进一步掌握Neutron虚拟网络,为以后的实践打下扎实的基础。
—— 龚永生,九州云CTO
喜闻标哥要出新书了!关注“标哥说天下”的订阅号已经很长时间了,每篇技术文章必读,为了不错过好文章,我置顶了标哥的订阅号。标哥既是技术专家,也是诗人,如果过段时间标哥出了诗集,请不要惊讶。标哥的文章,不光带你感受技术的乐趣,有时候,在字里行间也能感受到诗歌节奏和韵律,读起来是一种双重享受。本书从基本原理讲起,对Neutron网络模型、资源模型、架构、服务、插件进行了深入分析。本书不光是对订阅号文章的系统整理,还加入了更多深度的内容,是OpenStack运维和开发工程师必读的一本书!
—— 肖力,云技术社区创始人


华为资深网络工程师撰写,云计算专家联袂推荐,行文风趣流畅、循序渐进。
抽丝剥茧,深入分析Neutron网络、资源、架构与服务、插件、消息机制和经典API函数处理的核心技术原理与实现。注意,本书假设你对基本的TCP/IP协议、VXLAN、OVS、Python等有一定了解。
本书共8章,各章内容要点如下。
第1~2章介绍Neutron特点与Linux的虚拟网络知识。
第3~4章分别讲述了Neutron的实现模型与资源模型。
第5章讲述了Neutron的基本架构,以及架构中所涉及的Web机制、通信机制、并发机制等。
第6~8章详细讲述了Neutron代码的主干流程、实现机制以及关键函数的具体实现。
第6章主要讲述Neutron的服务机制,例如启动Web Server、调用合适的WSGI Application、寻址Plugin等。
第7章主要讲述插件服务,例如如何处理Neutron的RESTful请求,进行逻辑资源分配,调用Agent等。
第8章主要讲述Agent如何配置(虚拟)网元,以构建Neutron网络。


李宗标 华为资深研发工程师,业界首个SDN+NFV Orchestrator开源项目的架构师,对SDN/NFV颇有研究,并且有丰富的市场项目经验。

图书前言

为什么写作本书
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)。
感谢你的支持、帮助和鼓励,我才能坚持到今天!

上架指导

计算机\网络

封底文字

本书既有对Neutron虚拟网络背后的网络原理方面的阐述,也有后面对Neutron的数据模型、启动过程、消息处理机制和经典API函数处理的源码分析。语言风趣而又流畅;知识通俗化,深刻又易懂。相信此书能帮助读者进一步掌握Neutron虚拟网络,为以后的实践打下扎实的基础。

——龚永生,九州云CTO

喜闻标哥要出新书了!关注“标哥说天下”的订阅号已经很长时间了,每篇技术文章必读,为了不错过好文章,我置顶了标哥的订阅号。标哥既是技术专家,也是诗人,如果过段时间标哥出了诗集,请不要惊讶。标哥的文章,不光带你感受技术的乐趣,有时候,在字里行间也能感受到诗歌节奏和韵律,读起来是一种双重享受。本书从基本原理讲起,对Neutron网络模型、资源模型、架构、服务、插件进行了深入分析。本书不光是对订阅号文章的系统整理,还加入了更多深度的内容,是OpenStack运维和开发工程师必读的一本书!

——肖力,云技术社区创始人

图书目录


前 言
第1章 Neutron概述 1
1.1 Neutron的由来 1
1.2 Neutron的特性与应用 3
1.2.1 基于OpenStack的应用 4
1.2.2 基于SDN的应用 6
1.3 Neutron的扩展能力 8
1.4 本章小结 9
第2章 Linux虚拟网络基础 11
2.1 tap 11
2.2 namespace 13
2.3 veth pair 16
2.4 Bridge 17
2.5 Router 19
2.6 tun 21
2.7 iptables 24
2.7.1 NAT 27
2.7.2 Firewall 30
2.7.3 mangle 32
2.8 本章小结 32
第3章 Neutron的网络实现模型 34
3.1 Neutron的三类节点 34
3.2 计算节点的实现模型 35
3.2.1 VLAN实现模型 37
3.2.2 VXLAN实现模型 41
3.2.3 GRE实现模型 44
3.2.4 计算节点的实现模型小结 45
3.3 网络节点的实现模型 46
3.4 控制节点的实现模型 49
3.5 本章小结 49
第4章 Neutron的资源模型 51
4.1 Neutron资源的租户隔离 51
4.1.1 Neutron语境下租户隔离的
   含义 52
4.1.2 Neutron在租户隔离中的无限
   责任和有限责任 53
4.1.3 Neutron的租户隔离实现方案 54
4.1.4 租户隔离小结 56
4.2 Network 57
4.2.1 运营商网络和租户网络 58
4.2.2 物理网络 61
4.2.3 Network小结 64
4.3 Trunk Networking 65
4.3.1 Bridge的VLAN接口模式 65
4.3.2 VLAN aware VM与Trunk
   Networking 69
4.3.3 Trunk Networking小结 78
4.4 Subnet 79
4.4.1 IP核心网络服务 80
4.4.2 Subnet资源池 81
4.5 Port 83
4.6 Router 86
4.6.1 Router的外部网关 88
4.6.2 增加Router接口 89
4.6.3 Router的路由表 91
4.6.4 Floating IP 92
4.6.5 Router小结 94
4.7 Multi-Segments 95
4.7.1 Multi-Segments的困惑 96
4.7.2 Multi-Segments的几个应用
   场景 98
4.8 BGP VPN 102
4.8.1 BGP VPN的使用场景 103
4.8.2 BGP VPN的实现模型 104
4.8.3 BGP VPN的资源模型 105
4.9 本章小结 109
第5章 Neutron架构分析 112
5.1 Neutron的Web框架与规范 115
5.2 Neutron的消息通信机制 117
5.2.1 AMQP基本概念 118
5.2.2 AMQP的消息转发 118
5.3 Neutron的并发机制 122
5.3.1 协程概述 122
5.3.2 Neutron中的协程 124
5.4 通用库Oslo 131
5.5 本章小结 131
第6章 Neutron的服务 132
6.1 Neutron启动一个Web Server 133
6.1.1 Web Server的启动过程 133
6.1.2 Web Server启动过程中的
   关键参数 135
6.1.3 Web Server的进程与协程 138
6.1.4 小结 142
6.2 加载WSGI Application 142
6.2.1 api-paste.ini对应的WSGI
   Application 144
6.2.2 neutronapi_v2_0 section 146
6.3 Core Service API(RESTful)的
  处理流程 148
6.3.1 Core Service的WSGI
   Application 149
6.3.2 Core Service处理HTPP Request的基本流程 149
6.3.3 Core Service处理HTTP Request的函数映射 153
6.3.4 小结 162
6.4 Extension Service API(RESTful)的处理流程 164
6.4.1 Extension Service的类图与加载 164
6.4.2 Extension Service的WSGI Application 167
6.4.3 Extension Service处理HTTP Request的基本流程 169
6.4.4 Extension Service处理HTTP Request的函数映射 171
6.4.5 小结 176
6.5 Plugin的加载 178
6.5.1 Core Service Plugin的加载 179
6.5.2 Extension Services Plugin的加载 180
6.6 RPC Consumer的创建 181
6.6.1 Neutron Plugin创建RPC Consumer的接口 182
6.6.2 Neutron Server启动RPC Consumer 183
6.7 本章小结 187
第7章 Neutron的插件 190
7.1 核心插件 191
7.1.1 ML2插件简介 193
7.1.2 类型驱动 193
7.1.3 机制驱动 202
7.1.4 ML2插件create_network函数剖析 224
7.1.5 ML2插件create_subnet函数剖析 229
7.1.6 ML2插件create_port函数剖析 240
7.2 业务插件 249
7.2.1 Router Plugin的create_router函数分析 250
7.2.2 Router Plugin的add_router_interface代码分析 257
7.3 Neutron Plugin的消息发布和订阅 260
7.3.1 Neutron Plugin中的Callbacks Module机制 261
7.3.2 Neutron Plugin中的RPC机制 265
7.4 本章小结 266
第8章 Neutron的代理 268
8.1 OVS Agent 270
8.1.1 三类关键的Bridge 270
8.1.2 内外VID的转换 288
8.1.3 OVS Agent代码分析 295
8.1.4 OVS Agent小结 309
8.2 L3 Agent 311
8.2.1 class OVSInterfaceDriver分析 312
8.2.2 class RouterInfo分析 317
8.2.3 L3 Agent代码分析 326
8.2.4 L3 Agent小结 351
8.3 本章小结 352

教学资源推荐
作者: 吴功宜 胡晓英 张仁 何云 王宁
作者: (美)Emad Aboelela 著
作者: 刘镇 金志权
作者: 王志文,陈妍,夏秦
参考读物推荐
作者: 王叶 武新华 编著
作者: (美)Jeffrey Wheat等
作者: 曾凡太 刘美丽 陶翠霞 编著