软件定义网络:SDN与OpenFlow解析
上QQ阅读APP看书,第一时间看更新

前言

大多数O'Reilly图书的读者会问的第一个问题,便是作者为什么选择那个封面动物?针对这本书,读者可能会问:“为什么选鸭子?”好吧,其实作者最先选的是装饰了彩虹丝带的闪闪发光的独角兽。

这么回答肯定会引得大家发笑(相信你也笑了几声)。独角兽的形象也反应了许多经验丰富的网络专业人士对SDN(Software Defined Networks,软件定义网络)的共同感觉。虽然作者认为这种感觉在某些方面是合理的,但这只独角兽的确有血有肉,而不仅仅是个传说。

那么言归正传,对于开头的问题,作者有个更好的答案:人们在水面上见不到鸭子的全部动作。真正的答案是本书的其中一位作者十分喜欢鸭子,他在家庭农场里也饲养了一些番鸭。鸭子游动时大多数的动作都在水下完成,而这些动作是无法轻易观察到的。强健的脚掌在水面下滑动着,推动鸭子前进。这与软件定义网络在很多方面有着相似之处。

SDN的表象可能导致观察者轻率地产生如下看法。首先,定义SDN是什么或可能是什么,是很多机构为了抢救他们的商业计划或复兴他们的标准化组织而作出的疯狂尝试。其次,SDN仅仅是一种品牌的重塑,为已有的产品附上它们所没有的“魔力”。很多厂商声称他们四五年前开发的产品是SDN的源头,所以从那以后他们所做的也都是SDN。

顺着这种思路,重新给所有东西贴上SDN标签的行为,以及近三四年来大量SDN创业公司的宣传鼓噪,都进一步强化了人们的这种负面看法。

如果观察者们因为抱有网络信仰与政治的成见而对SDN不屑一顾,那么SDN看上去就只是一个飘忽不定的想法。

看懂高德纳公司的技术成熟度曲线http://www.gartner.com/technology/research/methodologies/hype-cycle.jsp,就可以理解新技术发展的远景,并且可以看到该曲线所预测的新技术发展所处的阶段。

正是当前这场SDN运动与上述成熟度曲线表现出的相同特征,促使我们为这头光环笼罩的独角兽极力游说,只为说明一点:我们看到了SDN的与众不同之处。

两年多以来,作者参与了许多相关的客户会议、论坛和行业协会以及标准化组织的会议,讨论了各种SDN相关的话题,还跟很多SDN创业公司、支持者及早期应用者一起工作。这些经历使作者相信看似平静的水面下发生着一些值得关注的事情。那就是推动SDN向设定目标前进的大量努力,而这个目标就是为网络和使用网络的应用提供最佳的运营效率和灵活性。

有确凿的证据表明,SDN最终还是引起了一场讨论,这场讨论涉及网络的可编程性、控制模型、面向网络的应用接口现代化和上述事物事实上的开放性。

有鉴于此,虽然数据中心中虚拟化所引起的可管理网络终端浪潮是现在SDN的主要推动力,但SDN并没有被限制在诸如数据中心这种单一的网络领域。SDN并没有被局限于单一的客户类型(如研究/教育),或者单一的应用(如数据中心服务编排),甚或单一的协议/架构(如OpenFlow)。SDN也没有被单一的架构模型所限制(如集中式的控制器以及一组被操控的交换机的模型)。希望读者可以从本书中看出这一点。

在撰写这本书的第一版时,Thomas Nadeau和Ken Gray(两位作者)都在瞻博(Juniper)的平台系统部首席技术专家办公室工作,他们也曾经在其他厂商(如思科)和运营商(如BT、Bell Atlantic——现在的Verizon)任过职,因此有着跨行业的丰富经历。本书尽可能将SDN领域相关的所有内容都包括在内,虽然不会是百科全书式的,但仍然会提供足够广泛的材料。在某些情况下,本书将会依赖作者写作时从为雇主(瞻博)工作的经历中得来的参考资料和示例,这仅仅是因为要么这些内容是一个大规模综述的一部分,要么相同主题下可以替换的例子尚无法获取并披露。希望读者能够理解书中任何的偏向都是无意的,而且这些偏向也不至于让读者感到迷惑。如果可以,本书会在后续的修订版中对这些偏向之处予以改正和完善。考虑到SDN还处于早期阶段,而且正经历着飞速发展,作者一致认为本书以后很可能会有多次更新。

最后,作者希望读者能够觉得本书内容的深度和广度恰到好处,有趣、丰富,且能产生共鸣。本书会给出作者自己的观点,不过本书首先会以尽可能公正的方式呈现事实并陈述其利弊。

作者衷心祝愿读者可以在本书中找到独角兽和仙尘,更希望大家能看到水面下滑动着的鸭掌。

阅读本书的条件

对于当今的网络世界来说,SDN是一种新的方案,但它仍然是网络技术。既然准备继续阅读本书,那本书就假设读者对网络知识有一定程度的了解。读者不需要是一名工程师,但是知道网络的基本工作(以及为什么不工作的)原理,会帮助读者更好地理解本书的内容。

读者应该熟悉以下术语/概念。

• OSI模型

OSI(Open System Interconnection,开放式系统互联)通信参考模型定义了7个不同的网络层次:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。这个模型使得网络工程师和网络供应商能够方便地讨论,并将技术应用于特定的OSI层。这种层次划分使得工程师可以将应用程序之间的通信这一整体问题分解成单独并且更加便于管理的部分。每一层都有特定的属性,每一层与它相邻的层都以一种非常明确的方式交互。这7层之上的知识并不是必需的,但是如果读者知道互通性并不一定总是与电子和光子有关,将会有所帮助。

• 交换机

这种设备在OSI模型的第2层工作,并且采用逻辑上的本地寻址来传输网络帧。这类设备包括了以太网和它所有的变种,VLAN、汇聚和冗余设备。

· 路由器

这些设备工作在OSI模型的第3层,彼此将多个IP子网连接起来。路由器以逐跳的方式来传输网络包。

• 以太网

这些广播域将多个主机连接到一个共用基础设施上。主机之间的通信采用第2层的MAC(Media Access Control,媒体访问控制)地址。

• IP地址和子网

主机之间使用32位的地址通过IP协议进行通信。人们经常采用点分隔的十进制数值格式来表示这些地址。这种地址标记包括了网络地址和主机地址两个部分,一般看上去是这样的:192.168.1.1/24。

• TCP和UDP

这些第4层的协议定义了主机之间通信的方法。TCP(Transmission Control Protocol,传输控制协议)提供了面向连接的通信,而UDP(User Datagram Protocol,用户数据报协议)则使用无连接的模式通信。使用TCP还有流量控制、窗口/缓存和显式确认等好处。

• ICMP

作为(某些平台上)ping和traceroute程序所使用的核心协议,网络工程师使用它对网络进行诊断和操作。另外ICMP(Internet Control Messages Protocol,网际控制报文协议)还被用于发于IP网的主机间的出错信号和其他消息。

· 数据中心

用于放置大量计算机系统和相关组件(例如电信和存储系统)的场所。数据中心通常要有冗余或备用电源、冗余的数据通信连接、环境控制(如空调和消防)设施和安全设备。大型数据中心作为一种工业级基础设施,消耗的电力可以相当于一个小城镇。

• MPLS

MPLS(Multiprotocol Label Switching,多协议标签交换)是一种在高性能网络中使用的机制,它可以根据短路径标签而非长网络地址将数据报文从一个网络节点传输到另一个节点,以避免在路由表中进行复杂的查找。这些标签标识了远端节点之间而非端点之间的虚拟链路(路径)。MPLS可以封装多种网络协议的数据包,并且支持多种接入技术。

• 北向接口(Northbound Interface)

将组件所使用的或组件中的底层细节(如数据或函数)抽象化的接口。通过它可以和采用上层组件南向接口的上层组件交互。从总体架构来看,北向接口一般画在定义它的组件的顶部,因此称为北向接口。北向接口的例子有JSON和Thrift。

• 南向接口(Southbound Interface)

与北向接口相反的接口。南向接口一般画在架构图的底部。南向接口的例子包括I2RS、NETCONF和命令行接口。

• 网络拓扑

计算机网络中各个网元设备(链路、节点、接口、主机等)的布置。本质上,它是网络的拓扑结构,并且可以有物理或逻辑上的表现形式。物理拓扑结构指网络中各组件的摆放,包括设备的位置和线缆的安装,而逻辑拓扑显示了数据在网络中如何流动,与物理设计无关。就算两个网络的节点间距离、物理互联、传输速率或信号类型不同,它们的逻辑拓扑结构也可能是相同的。

• API

软件组件之间交互的规范说明。在实践中,API(Application Programming Interface,应用编程接口)通常是一个库,其中包括变量、程序、对象类和数据结构的规范。API规范可以有多种表现形式,包括国际标准(如POSIX)、供应商文档(如JunOS SDK)或某种编程语言的库。

本书内容

• 第1章 引言

这一章介绍并且描绘本书所讨论内容的框架,包括SDN的概念、起源,以及为什么这些话题值得本书去讨论。

• 第2章 集中式和分布式的控制与数据平面

SDN经常被认为是对未来网络架构的一种抉择:究竟是分布式/基于共识的(consensus),还是集中式网络控制平面模型?本章介绍分布式和集中式控制的基础内容,数据平面在这两种模型中是怎样生成的,两种模型的历史是的,以前也有过集中式控制模型。,当前分布式/基于共识的模型所拥有的一些可以用替代品来实现的预期功能,以及这两种模型的优点。

• 第3章 OpenFlow

OpenFlow已经被市场认定为SDN的代名词(即OpenFlow就是SDN)或者SDN的一个关键组件,到底是哪一个取决于开放网络基金会(Open Networking Foundation)的营销“念头”。当然,OpenFlow确实引起了人们对于集中式控制模型的讨论。这一章会介绍OpenFlow模型的现状。

• 第4章 SDN控制器

一些人认为,对SDN技术的讨论实际上是对网络状态管理的讨论,而网络状态管理正是SDN控制器的角色。这一章将概述现有的(开源或商业)控制器,它们的结构和功能,并将它们和一个(将在第9章中讨论的)理想化模型进行对比。

• 第5章 网络的可编程性

这一章将介绍SDN的关键信条之一:网络的可编程性。首先介绍网络鸿沟问题。这个问题本质上可以归结为传统的管理接口和范式使网络应用与网络之间保持了很大距离。我们会说明为什么这是一件坏事,以及如何用现代化的编程接口来修正它。这一章的内容奠定了现实世界中网络应用和网络设备遵循SDN范式变革的基调。

• 第6章 数据中心的概念与结构

这一章将通过对数据中心历史演进的初步探讨向读者介绍现代数据中心的概念。这个演进过程始于20世纪90年代末,当时的世界以桌面为中心,而今,人们生活在分布式的世界中,应用及构成应用的组件分布于多个数据中心。这一章将介绍多租户的概念,它是数据中心中虚拟化以及其他虚拟化周边技术的关键驱动力。最后,我们将解释为什么上述技术是SDN方案的关键,以及为什么它们是推进SDN这场运动的主要力量。

• 第7章 网络功能虚拟化

这一章的内容建立在前几章所介绍的一些SDN概念的基础上,如可编程性、控制器、虚拟化、数据中心等。在这里,我们将探索SDN的一个前沿领域,该领域将SDN的关键概念和组件结合在一起,不仅给人们带来了服务虚拟化,还允许人们将这些服务以一种新颖而有趣的方式连接在一起。

• 第8章 网络拓扑与拓扑信息的抽象

这一章向读者介绍网络拓扑的概念,不仅介绍它现在的概念,还会说明这个概念是如何随时间演化的。具体将讨论为什么网络拓扑(包括它的发现、日常维护以及与应用的交互)是NFV等许多SDN概念的关键。还将探讨多种已经可以部分解决网络拓扑这个难题的方法,以及最近IEFT在I2RS上所做的努力为何可能完全解决这个难题。

• 第9章 构建SDN框架

这一章描述理想化的SDN框架,该框架可以应用于SDN的控制器、网络应用和生态系统。此概念相当重要,因为它不仅构成当今所有SDN控制器的体系结构基础,并且从中可以看到控制器正在或将要进行的演进。本章将展示这种框架的多种变体及其随时间的演化,并最终介绍目前Open Daylight联盟的方案中采用的框架。作者认为该方案是目前建立理想化框架的最好方案,它不仅技术上合理、实用,而且很接近人们在多次尝试和失败后找到的出路。

• 第10章 带宽调度、控制和时间规划的案例

这一章向读者展示带宽调度、控制和带宽时间规划领域的一些用例。本书将演示作者和其他人在各自的实验室构建的用来验证概念的用例。这些用于概念验证的方法有些已经应用于生产环境。虽然它们现在还只是示例,但确实有实际的应用价值。

• 第11章 数据中心叠加网、大数据和网络功能虚拟化案例

这一章将介绍SDN在数据中心领域的用例。我们将特别展示关于数据中心叠加网络、网络功能虚拟化的一些有趣用例,说明大数据如何推动SDN中的某些概念。

• 第12章 输入流量监测、分类及触发操作案例

这一章向读者展示输入流量/触发动作类的用例,这些用例有共同的行为模式,它们在网络边缘接收某些流量后做出相应的动作。这一动作可以通过编程实现。实现的方式可以是采用集中式控制器,或者是让一个设备在遇到某种特定的流量时向控制器询问应该采取什么动作。这里将展示两个用例以阐释这些概念。首先会说明作者如何构建概念验证,有效地用OpenFlow控制器和一些真实的路由器取代网络访问控制(NAC)协议和它的活动部件。这样就解决了大型企业中存在的现实问题,而这个问题很难用其他方法解决。其次还将展示如何用虚拟防火墙,通过和控制器的交互,来监测和触发特定的行为。

• 第13章 最后的思考与结论

这一章将带人们回到现在时,再次强调本书对于SDN当前(撰写本书时)状况的基本观点,并且对SDN这个主题提出一点总结性的见解。

排版约定

本书使用以下排版约定。

• 楷体

表示新的术语。

• 等宽字体

表示程序片段,也用于在正文中表示程序中使用的变量、函数名、命令行代码、环境变量、语句和关键词等代码文本。

• 等宽加粗

表示应该由用户逐字输入的命令或者其他文本。

• 等宽斜体

表示应该由用户输入的值或根据上下文决定的值替换的文本。

这个图标代表小窍门、建议或说明。

这个图标代表警告信息。

使用代码

补充材料(代码范例、练习等)可以在此下载:http://shop.oreilly.com/product/0636920027577.do。打开链接后,在页面右下方找到Download Example Code链接,可以下载到一个.txt文件,里面是第10章案例的完整配置。你可以在自己的试验性项目中使用该配置。

本书就是要帮读者解决实际问题的。也许你需要在自己的程序或文档中用到本书中的代码。除非大段大段地使用,否则不必与我们联系取得授权。因此,用本书中的几段代码写成一个程序不用向我们申请许可。但是销售或者分发O'Reilly图书随附的代码光盘则必须事先获得授权。引用书中的代码来回答问题也无需我们授权。将大段的示例代码整合到你自己的产品文档中则必须经过许可。

使用我们的代码时,希望你能标明它的出处。出处一般要包含书名、作者、出版商和书号,例如:“SDN: Software-Defined Networks by Thomas D. Nadeau and Ken Gray. Copyright 2013 Thomas D. Nadeau and Ken Gray, 978-1-449-34230-2.”

如果还有其他使用代码的情形需要与我们沟通,可以随时与我们联系:permissions@oreilly.com。

Safari®Books Online

Safari Books Online(http://www.safaribooksonline.com)是应需而变的数字图书馆。它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。

Safari Books Online是技术专家、软件开发人员、Web设计师、商务人士和创意人士开展调研、解决问题、学习和认证培训的第一手资料。

对于组织团体、政府机构和个人,Safari Books Online提供各种产品组合和灵活的定价策略。用户可通过一个功能完备的数据库检索系统访问O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解Safari Books Online的更多信息,我们网上见。

联系我们

请把对本书的评价和发现的问题发给出版社。

美国:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

O'Reilly的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是:

http://shop.oreilly.com/product/0636920027577.do

对于本书的评论和技术性问题,请发送电子邮件到:

bookquestions@oreilly.com

要了解更多O'Reilly图书、培训课程、会议和新闻的信息,请访问以下网站:

http://www.oreilly.com

我们在Facebook的地址如下:

http://facebook.com/oreilly

请关注我们的Twitter动态:

http://twitter.com/oreillymedia

我们的YouTube视频地址如下:

http://www.youtube.com/oreillymedia

Thomas Nadeau的致谢

我想首先感谢我出色的妻子Katie,以及我的两个儿子,Thomas Peter和Henry Clifford。我无法想象,如果离开了你们,我还能不能如此快乐。人生是一场旅途,我很荣幸能够一路有你们相伴。我还要感谢我的父母,Clement和Janina。没有你们的支持和鼓励,我永远也不可能成为一名工程师,或者至少,如果没有父亲在我年轻时候的指点,我现在就不会这么擅长锡焊。我还要对很多现在或者过去的同事说声谢谢,是你们带我进入了SDN的世界,并且让我的想象力在其中得到发挥。这些人包括但不限于David Ward、Dave Meyer、Jan Medved、Jim Guichard、Ping Pan、Alia Atlas、Michael Beesley、Benson Scliesser、Chris Liljenstolpe、Dan Backman、Nils Swart和Michael Bushong。另外,我永远也不会忘记George Swallow是如何接收我为他年轻的学徒,并且对我进行绝地训练的,否则我不可能达到今天的水平。如果没有这些,我不可能在网络行业取得现在的成就。我还要感谢很多我在思科公司、CA,以及我现在的东家瞻博公司工作时的同事,限于篇幅,就不逐一列举了。我要感谢更大的SDN社区,包括在SDN的早期就有所建树的斯坦福大学、IETF、ONF和Open Daylight项目。感谢Meghan Blanchette和O'Reilly的其他工作人员。当然,还要感谢我们的编辑Patrick Ames,他在我们误入歧途时带我们回到正轨,并且帮助我们表达出我们所能传达的最好最明了的信息。

最后,同样重要的,我想对本书的合著者Ken Gray,表达我衷心的感谢。如果不是你掌握着这条船的另一把桨,我不知道我还能否一个人划到终点。你的贡献真正提升了这本书的价值,让它超出了我的期望。

Ken Gray的致谢

我要感谢我了不起的妻子Leslie。她在我参与本书编写,以及随之而来的一切工作期间耐心地支持我,并且给我带来了足够的平衡以及理智。

对于我的孩子,Lilly和Zane,我希望自己鼓起勇气编写的这第一本书,可以激励你们去开创自己的伟大事业(无论是什么事业)。

限于篇幅,我不能列出客户、同事和朋友的名字,过去两年中和你们的交谈塑造了我对SDN这个话题的观点。

如果我列出帮助过我的同事、标准化组织以及(当然)那些帮助我们出版本书的人们,那会和我的合著者列出的名单非常相像,大家应该明白这不是巧合。我要特别地再次感谢我过去在瞻博公司的同事(他们现在可能在SDN领域的创业公司)。两年多以前,他们和我俩一起开始了SDN相关的工作,那时,“富有远见”这个词还没用来形容SDN理论家和战略家,他们帮助我塑造了我的观点。出于同样的原因,如果可以重复地感谢一个人,我希望特别地感谢一位我现在在瞻博公司的同事:Benson Scliesser。

最后,我要给予我的合著者Thomas Nadeau以极大的感谢。我们从两个不同但是互补的角度出发,在这个话题上形成了共同的观点。过去几年,我们在无数次的公开讨论中把这两个视角放在一起,并最终把它们印刷出版,这对于我来说是一段极好的经历。这段经历帮助我完善了谈论SDN的方式,希望它也造就了一部好书。