
软件定义网络(SDN)是一种新型网络架构,旨在帮助网络适应快速变化的业务需求。本书全面介绍了SDN的基本概念、原理和商业应用。全书共15 章,从多个方面阐释了SDN,从SDN 的由来和历史沿革,到SDN技术的最新发展情况和未来走向,全面分析了SDN 和OpenFlow 的技术原理,分析了SDN 的开源代码及相关资源,并探讨了SDN 的应用场景、商业发展及其局限性,是一本视野广阔的SDN 参考手册。第二版新增了网络功能虚拟化(NFV)以及新兴的协议、控制器和应用模型两章,并更新了部分技术知识。
译 者 序 我们非常高兴有机会向广大读者推荐本书。 软件定义网络是近年来网络发展的一个重点方向,它与大数据、云计算一起吸引了众多科技工作者、管理者和广大用户的注意力。铺天盖地的宣传与产品已经在市场上涌现,但对于大多数读者来说,存在“到底什么是软件定义网络?”“软件定义网络到底好在哪里?”“软件定义网络是否适合我?”的疑问。本书以通俗易懂的语言、涵盖广泛的图表,全面、深入、准确地解答了上述问题。 今天,在互联网上充斥着各种有关软件定义网络的信息,包括各种形式的博客、播客、微博,等等。然而,正如读者将在本书里看到的那样,软件定义网络这个名词下面实际上囊括了多种完全不同的技术、体制以及具体的实现系统,大部分针对软件定义网络的介绍都只是讨论了这些技术的一部分,并且由于观察角度和观察对象的不同,难免以偏概全,这也是很多专业人士对软件定义网络的观点大相径庭的原因。市面上关于软件定义网络的书也有不少,但从整体看,有的书侧重描述协议细节,对于技术的整体缺乏阐述,只见树木不见森林;有的又过于宏观,缺乏细节。本书作者Paul G?ransson博士和Chuck Black先生凭借他们多年浸淫在软件定义网络里的工程和实践经验,站在相对公正的,或者说更贴近SDN起源意图的立场上,采用先整体、后局部,先宏观、后微观的阐述方式,深度揭示了软件定义网络的宏大家族及相关技术的嬗变史,从历史、发展、应用、未来、生态链、周边产业等多个角度剖析了软件定义网络。清晰准确地告诉你软件定义网络是什么,不是什么,它能帮你跳入软件定义网络这一浩瀚的海洋,同时又能避开迷思的漩涡。 本书宏观与微观兼具,树木与森林并览,读此书,你会惊讶于作者从如此多的视角来观察一项技术,给读者提供了充足的实例来认识一项技术的全貌。如果你是软件定义网络相关领域的用户或工程师,读此书也许可以解答困扰了你很长时间的疑惑,而针对这个疑惑你曾经从不同专家那里得到的却是完全相反的答案。读此书你会明白,这些答案只不过是从不同角度看问题的结果。 任何对网络和软件定义网络感兴趣的读者,都能无障碍地理解本书的内容,包括本科生和研究生、网络专业人员和IT经理、已有的和潜在的软件定义网络用户。本书内容包容性很强,不需要广泛的网络知识就能让读者充分了解其价值。本书通过对网络发展史的简介及其技术的描述,再加上对引发OpenFlow和软件定义网络行业全景的描绘,为读者提供了丰富的背景知识。如果你是一位网络架构师或IT经理,你经常会在市面上发现多种解决方案,它们的名字都是软件定义网络,但是其细节却大相径庭,阅读本书可以为你理解和评估市场上各种相互竞争的软件定义网络技术手段提供坚实的基础。 本书内容涵盖之广,超出你的想象,甚至包括软件定义网络对未来IT职业的影响!作为一个IT从业者,你的职业会受到软件定义网络的影响吗?你应该如何改变自己以适应这个发展大潮?建议你阅读本书。 限于水平,翻译不妥和错误之处在所难免。敬请广大读者批评指正。来信请发至hai_wang@189.cn。 译 者 序 言 什么是软件定义网络?为什么它会成为网络界炙手可热的技术?对于一个诞生在五年前的术语来说,这个问题貌似简单,然而与“云计算”等其他一些术语一样,在一些营销团队为了达到自己的目的而对这些术语进行多年的重塑之后,已经变得越来越让人难以琢磨了。更加令人困扰的是新术语的出现,例如开放网络(open networking)、可编程网络(programmable network)和软件驱动网络(software-driven network)。由此引发很多人的好奇心,他们想知道SDN到底是什么?在其背后是否真的存在炒作? 对于像我们这样一直以来都在深度关注SDN发展的人来说,要想区分炒作与真相并不困难,我们也能够透过表象看到问题的本质及其来龙去脉。但是,从日常的授课情况来看,很多想要了解SDN的人正在被围绕这个话题产生的来自各个方面和各个角度的言论所困扰,这使得他们很难弄清楚真正发生的事情的核心所在。 2010年7月,当我第一次公开谈论SDN的核心协议OpenFlow时,几乎还没有人听说过OpenFlow或软件定义网络。此后,我不断向数以千计的学生、网络工程师和以首席二字打头的高管们解释什么是SDN。有些人在倾听了数分钟的解释之后立刻就“懂了”,此时往往我还没来得及放映第三张幻灯片,而另一些人则要花费整个全天课程的时间才能“明白”。比较普遍的现象是,能够最快理解SDN对行业所具有的潜在影响的人,正是那些网络界的元老,是那些能回忆起因特网前时代的人,那些实际上构建了这些网络产品的人,以及能够理解这些网络商业价值的人。 这就是为什么Paul和Chuck完全能够担当得起解释SDN所具有的价值的原因。他们都拥有非常丰富的网络从业经验,甚至可以追溯到比他们自己愿意承认的更为久远的时光。他们使用一代又一代的技术建立起各种网络解决方案。Paul有两家成功的初创公司,他非常熟悉网络行业的各项业务工作。对于解释SDN、定位SDN过去30年来在计算机网络界中的地位以及预测它在未来几年对网络具有的潜在影响来说,如此深厚宽广的从业经验绝对是无价之宝。 今天的因特网上并不缺乏有关SDN的信息,包括各种形式的博客、白皮书、播客和视频。然而,对于那些在过去几年里没有跟SDN打过交道而又想要加速赶上的人来说,我还没有发现有哪一本书能够像作者在本书中所做到的那样,从一个不偏不倚的角度来全面详尽地介绍SDN。 任何读者只要对网络和SDN感兴趣,都可以轻松理解本书的内容,包括本科生和研究生、网络专业人员和IT经理。本书内容包容性很强,读者不需要丰富的网络知识就能充分认识到SDN的价值。它通过对网络发展史及其相关技术的简单介绍,以及对引发OpenFlow和SDN的行业全景的描绘,为读者提供了丰富的背景知识。如果你是一位网络架构师或IT经理,并且正 在试图比较多个都声称是基于SDN解决方案但又似乎是完全不同的技术时,本书可以帮助你理解和评估市场上互相竞争的各种SDN方案。 事实上,网络行业正在发生巨大的转变,而驱动这场变革的原因很简单,你可以从云计算及移动通信的兴起到SDN(也可称之为开放网络或可编程网络,随便你怎么称呼)的发展之间直接画一条直线。如果你想绕过市场营销和炒作来对SDN做深入全面的了解,并弄清楚它是如何帮助重塑网络行业的,我绝对建议你阅读本书。 Matt Davy Tallac Networks 公司 2016年4月26日 Matt Davy是软件定义网络技术的世界知名专家。在印第安纳大学,他曾担任InCNTRE、SDN Interoperability Lab、Network Research以及Internships and Training的执行主任。Davy是拥有超过十二万用户、十万以太网端口和五千个无线接入点的企业网络的首席架构师,并且在大型网络运营商及企业网的设计和运行方面拥有19年的丰富经验。 前 言 当初,在我们着手构思本书时,部分动机是出于能够全面介绍软件定义网络(SDN)的读物少之又少。虽然作为作者,我们的专业就是与SDN打交道,但即便如此我们也不得不承认无法从某个单一的来源获得SDN的全面知识。我们意识到有相当数量的专业人员并没有直接接触SDN,但他们很需要对其有所了解,这真是一个大问题。因此,简单地讲,本书的目的就是介绍产生SDN的环境,勾勒SDN区别于其他竞争技术的特点,并解释这种新兴技术已经展现出的众多重要的商业影响。为这样一种快速发展的技术撰写著作所面临的挑战正是这种技术不断发生的变化。 上面这段文字是为本书三年前出版的第一版所撰写的,不过今天看来仍然适用。很多没有在第一版中得到重视的技术现如今已被普遍承认是SDN的一部分。我们选择使用了“深度剖析”作为本书标题的一部分。有许多相互竞争的思想目前都在实际应用当中,而它们的开发者也都希望能够加入SDN的大潮。事实上,SDN技术所涉及的范围也似乎在不断扩展。不论我们的读者需要应对哪些方面或哪种类型的SDN技术,至少我们希望通过阅读本书,读者能够在一个更加广泛的SDN环境之中对自己的需求加以考虑。为此,我们尝试讨论SDN的各种不同定义。本书在使用SDN定义时没有教条可寻,希望读者能够理解。 有兴趣了解软件定义网络或者对下面任何主题感兴趣的读者都会通过阅读本书有所收获: ? 组网 ? 交换 ? 软件定义网络 ? OpenFlow ? OpenStack ? OpenDaylight ? 网络虚拟化 ? 网络功能虚拟化 软件定义网络是一个正在迅速扩张的领域。虽然我们试图尽力考虑得全面且详尽,但感兴趣的读者或许还需要使用本书提供的参考资料对某些技术主题做更深入的探索。我们假设读者除对计算机的概念有基本了解外,并不具备专业知识。计算机编程和计算机组网的某些经验将会有助于理解本书的内容。本书包含了大量的数据和图表来解释和说明那些被定义或讨论的网络概念。这些图表帮助读者在不需要使用其他参考资料的前提下也能通读全书。 本书的第一版非常受欢迎。出版三年来,我们收到了许多以本书内容作为课程基础的大学教师的询问。第二版出版的动机包括以下两个方面:首先,本书在内容上需要紧跟SDN的发展而变化;其次,为了更加适用于SDN的研究生课程,我们做了一些针对性的调整。为此,我们在每一章都增添了一些文本框,其中包含的是与上文内容相关的讨论题。这些题目可以用来作为课堂讨论,也可以作为测验基础。此外,在链接https://textbooks.elsevier.com/web/product_ details.aspx?isbn=9780128045558中可以注册下载与课程相关的辅导资料,如讲义和实验练习等。 建议和纠错 虽然我们已经尽可能细心,但本书仍然会有一些错误,并且某些读者感到尤为关心的主题也有可能被忽略了。我们期待在未来的版本中能够纠正所有的错误,并包容尽可能多的建议。如果有什么建议,请通过以下电子邮件发送给我们:chuck.a.black@gmail.com。 作者简介 Paul G?ransson是一位有多次创业经历的企业家,他的两家初创公司都已被业界巨头收购:惠普收购了Qosnetics(1999年);思科收购了Meetinghouse(2006年)。G?ransson曾在安捷伦科技(Agilent Technology)公司的先进网络部门和思科(Cisco)公司的无线网络业务部担任高管,现任Elbrys Networks公司的创始人和主席。G?ransson在1975年获得美国布兰迪斯大学心理学学士学位,并分别于1981年和1995年获得美国波士顿大学计算机工程硕士学位和美国新罕布什尔大学计算机科学博士学位。G?ransson是一名狂热的马拉松运动员、登山家、铁人三项选手,并且一直是活跃的潜水和户外运动爱好者。他参加过上百次马拉松比赛、数次铁人三项运动赛以及多次超级马拉松比赛,包括Leadville Trail 100,同时他还是一名PADI潜水教练。2015年,G?ransson依靠他新装的人造右脚踝完成了长达2189英里的阿帕拉契小径(Appalachian Trail)的徒步旅行。G?ransson曾在法国、阿尔及利亚、委内瑞拉、墨西哥和瑞典居住、学习和工作了很长时间。G?ransson与人合著了Roaming Securely in 802.11 Networks,即《802.11网络安全》,并在计算机网络相关的多家期刊发表多篇文章。他也经常应邀在技术会议上发表演说。在业余时间里,G?ransson拥有并管理着美国缅因州南部的一个220英亩的无角海福特牛(Polled Hereford)与牧草农场。 Chuck Black在计算机网络领域拥有超过35年的工作经验,其中大部分时间都在惠普公司的研究与开发实验室工作,之后成为Tallac Networks公司的联合创始人之一。Tallac Networks公司是一家以软件定义网络为产品的初创公司。Black最近在SDN Essentials公司对其主要网络供应商旗下的工程师和客户进行SDN应用程序开发领域方面的培训。Black是惠普公司网络接入控制和安全领域多种网络产品的创新者和开发者,并且在这些领域拥有11项专利。而在此之前,他曾为惠普软件部门开发过一些网络管理方面的产品。在局域网发展的初期,他是业界最早出现的网络拓扑发现协议的开发者之一。Black拥有美国加利福尼亚理工大学计算机科学学士学位和硕士学位。 Timothy Culver在信息工程、信息技术、业务拓展和市场销售等各个方面都拥有大量工作经验,是一位经验丰富的技术主管和大学教师。他对新兴技术充满热情,并且是一位成功的实践者。他在组建全球技术团队方面拥有良好的业绩。Culver曾经经历了3个初创企业的创建工作,并建立了跨14个国家的业务。Culver作为美国得克萨斯大学达拉斯分校计算机科学与软件工程研究生课程的教授,率先推出了有关软件定义网络的课程及项目。在20世纪90年代任教于美国得克萨斯大学达拉斯分校之前,Culver曾在达拉斯社区学院教授计算机语言和计算机科学入门课程。Culver因积极参与社区志愿者活动而获得2011年至2014年的美国总统志愿者服务奖,这些活动包括针对初中和高中学生的STEM(Science Technology Engineering and Math)教学。他积极帮助学生们迈入相关领域的职业生涯,并且还为WeTeachScience.org的导师咨询委员会提供服务。在个人生活方面,超过三十年的婚姻生活使他成为四个孩子的父亲。作为孩子们的教练,Culver在踢了25年足球后取得美国足球联合会国家教练和美国青年足球国家教练执照。Culver还在美国和欧洲参加过多场足球比赛。目前Culver居住在得克萨斯州桑尼维尔的一个农场里,在那里他饲养着一群安格斯牛。Culver在VoIP、互联网电话会议和LDAP领域拥有4项专利。他是美国贝勒大学的荣誉毕业生,并于此获得MIS学位。之后,Culver在美国南卫理公会大学获得工程硕士和工商管理硕士学位。他在美国贝勒大学和美国瓦尔登大学进行云计算专业的研究生学习。Culver还是开放网络基金会的研究助理。 致 谢 非常感谢这些年来我们的家庭给予我们的大力支持,特别是在撰写本书期间给予我们的支持。 如果没有Bill Johnson、Matt Davy和Paul Congdon博士坚持不懈的支持,就不可能有本书的问世,他们都是Tallac Networks公司的联合创始人。他们对SDN技术的深度理解以及克服各种困难对本书手稿所做的审阅工作,还有对本书的其他许多直接贡献都是不可估量的。 我们要感谢来自荷兰Sicse的互联网通信与服务工程师Niels Sluijs博士,他对本书的手稿给出了许多令人耳目一新并且非常中肯的观点和评论。 我们还要感谢远在泰国清迈大学的Nopadon Juneam,他帮助我们为书中多幅图片的最终版本定型。 我们还要感谢Tallac Networks公司的Ali Ezzet,他仔细阅读了手稿的各个章节,并运用自己的技术专长为我们检查出不少错误,大大提高了稿件的质量。我们同样感谢Anthony Delli Colli在商业和市场营销方面为本书提供的许多重要信息和建议。对本书来说这些都是不可或缺的贡献。 特别感谢Helen G?ransson为本书手稿所做的多次精心审阅。她的努力显然使得本书更具可读性。 除以上各位对本书第一版所做的宝贵贡献外,我们还要感谢对本书第二版进行仔细审阅的两位专家,他们使得第二版有了相当大的改进。为此,衷心感谢思科公司的Giles Heron以及来自Rio Grande do Sul联邦大学(UFRGS)的Alberto Schaeffer-Filho博士。 最后,特别感谢Elsevier的Brian Romer和Amy Invernizzi对这个项目的鼓励和支持。 我们也非常感谢Tallac Networks公司为全书使用插图的选定所做出的贡献。 Paul G?ransson Chuck Black Timothy Culver
目 录 第1 章 引言············································ 1 1.1 分组交换的基本术语························ 2 1.2 历史背景······································· 4 1.3 现代数据中心································· 5 1.4 传统交换机体系结构························ 7 1.5 自治的和动态的转发表····················11 1.6 能提高分组转发的智商吗·················16 1.7 开源和技术转变·····························17 1.8 本书的组织结构·····························18 参考文献·············································19 第2 章 为什么需要SDN························20 2.1 交换机及控制平面的发展历程···········20 2.2 成本············································24 2.3 SDN 意味着不断的探索和革新··········26 2.4 数据中心的创新·····························28 2.5 数据中心的需求·····························30 2.6 结论············································32 参考文献·············································32 第3 章 SDN 的起源·······························33 3.1 网络技术的发展历程·······················33 3.2 SDN 的前身··································36 3.3 传统机器向SDN 的演化···················44 3.4 软件定义网络的诞生·······················45 3.5 维护SDN 的互操作性······················47 3.6 开源软件的积极作用·······················48 3.7 网络虚拟化···································49 3.8 我可以把自己的网络称为SDN 吗·······50 3.9 结论············································51 参考文献·············································51 第4 章 SDN 的工作原理························53 4.1 SDN 的基本特点····························53 4.2 SDN 的工作原理····························56 4.3 SDN 网络设备·······························58 4.4 SDN 控制器··································62 4.5 SDN 应用程序······························· 66 4.6 替代的SDN 方法··························· 68 4.7 结论············································ 76 参考文献············································ 76 第5 章 OpenFlow 规范·························· 78 5.1 本章使用的术语····························· 78 5.2 OpenFlow 概述······························ 79 5.3 OpenFlow V.1.0 和OpenFlow 基本概念· · 83 5.4 OpenFlow V.1.1 的新增功能·············· 94 5.5 OpenFlow V.1.2 的新增功能·············101 5.6 OpenFlow V.1.3 的新增功能·············104 5.7 OpenFlow V.1.4 的新增功能·············110 5.8 OpenFlow V.1.5 的新增功能·············113 5.9 OpenFlow 互操作性的改进··············115 5.10 光传输协议扩展··························117 5.11 OpenFlow 的局限性······················119 5.12 结论·········································120 参考文献···········································121 第6 章 SDN 的替代定义·······················122 6.1 开放SDN 潜在的缺点····················122 6.2 SDN-via-API ································133 6.3 SDN-via-Overlay ···························139 6.4 利用开放设备的SDN ·····················143 6.5 网络功能虚拟化····························145 6.6 各种替代方法之间的重叠与评比·······146 6.7 结论···········································147 参考文献···········································147 第7 章 新兴的协议、控制器和应用模型 ···149 7.1 扩展的SDN 定义··························149 7.2 更多SDN 协议模型·······················151 7.3 更多的SDN 控制器模型·················158 7.4 更多的应用程序模型······················164 ·10· 7.5 保护SDN 安全性的新方式·············· 166 7.6 P4 编程语言································ 168 7.7 结论·········································· 168 参考文献··········································· 169 第8 章 数据中心的SDN······················ 170 8.1 数据中心的定义··························· 170 8.2 数据中心的需求··························· 172 8.3 数据中心的隧道技术····················· 177 8.4 数据中心的路径技术····················· 180 8.5 数据中心的以太网矩阵·················· 183 8.6 数据中心的SDN 应用场景·············· 184 8.7 开放SDN、SDN-via-Overlay 和SDN-via-API 的比较 189 8.8 现实世界的数据中心实现··············· 191 8.9 结论·········································· 191 参考文献··········································· 192 第9 章 其他环境下的SDN··················· 193 9.1 广域网······································· 195 9.2 服务提供商和电信运营商网络········· 198 9.3 园区网······································· 202 9.4 酒店网络···································· 207 9.5 移动网络···································· 207 9.6 光网络······································· 209 9.7 SDN 与P2P/覆盖网络之比较··········· 212 9.8 结论·········································· 212 参考文献··········································· 213 第10 章 网络功能虚拟化····················· 214 10.1 NFV 的定义······························· 214 10.2 我们能虚拟化些什么···················· 216 10.3 标准········································· 218 10.4 OPNFV····································· 218 10.5 领先的NFV 供应商····················· 219 10.6 比较SDN 与NFV ······················· 219 10.7 在线网络功能····························· 221 10.8 结论········································· 223 参考文献··········································· 224 第11 章 SDN 生态圈参与者················· 225 11.1 学术研究机构····························· 226 11.2 产业研究实验室·························· 228 11.3 网络设备制造商·························· 228 11.4 软件供应商································231 11.5 白盒交换机································232 11.6 商用芯片生产商··························233 11.7 原始设备制造商··························234 11.8 云服务和服务提供商····················235 11.9 标准机构和产业联盟····················235 11.10 结论········································239 参考文献···········································240 第12 章 SDN 应用程序························242 12.1 术语·········································242 12.2 前期工作···································243 12.3 应用程序类型·····························244 12.4 SDN 控制器简史·························251 12.5 用于培训的Floodlight ···················251 12.6 一个简单的Java 被动应用程序········252 12.7 关于控制器的考虑·······················261 12.8 关于网络设备的考虑····················262 12.9 创建网络虚拟隧道·······················264 12.10 数据中心的流卸载······················266 12.11 用于园区网的接入控制················267 12.12 服务提供商的流量工程················268 12.13 结论········································269 参考文献···········································270 第13 章 SDN 开放源码························271 13.1 SDN 开源概况····························271 13.2 OpenFlow 的开源环境···················271 13.3 本章特定术语·····························273 13.4 开源许可证相关事宜····················273 13.5 SDN 开源用户的特征···················275 13.6 OpenFlow 的源代码······················276 13.7 交换机实现································277 13.8 控制器实现································279 13.9 SDN 应用程序····························283 13.10 编排和网络虚拟化······················285 13.11 仿真、测试和工具······················285 13.12 开源云计算软件·························286 13.13 举例:SDN 开源代码的应用·········288 13.14 结论········································290 参考文献···········································291 ·11· 第14 章 商业影响································ 292 14.1 一切皆服务································ 293 14.2 市场规模··································· 293 14.3 SDN 供应商分类························· 294 14.4 对传统网络设备制造商的影响········ 295 14.5 对企业客户的影响······················· 297 14.6 网络行业中引发的风暴················· 298 14.7 风险投资··································· 300 14.8 重要的SDN 收购案····················· 301 14.9 SDN 初创公司···························· 305 14.10 职业影响··································312 14.11 结论········································313 参考文献···········································313 第15 章 SDN 的未来····························316 15.1 现状·········································316 15.2 SD-WAN ···································318 15.3 开放SDN 潜在的创新应用·············323 15.4 结论·········································332 参考文献···········································333 附录 缩略语表······································336