适读人群 :相关专业技术人员,具备计算机网络背景知识的学生 SDN突破了传统的协议栈观点,提出了一种新的软件栈观点。本书正是围绕软件栈展开讨论的,强调将基于SDN的网络看作一个运行在商业硬件上的、可扩展的分布式系统。五位作者均为业界引领者,主导了包括开放网络基金会(ONF)的CORD和Aether项目在内的多项技术创新。他们将实战经验融入书中,对SDN的架构、软硬件组成和可编程性等进行了全面介绍,为读者研究和实践SDN技术奠定了良好的基础。
本书特色
采用作者Larry Peterson和Bruce Davie提出的“系统方法”,从系统视角帮助读者理解SDN的设计与实现,关注底层概念、抽象和设计原理,并通过实例叶-脊结构进行具体说明。
深入讨论固定功能和可编程交换芯片、用于编程和控制交换的基于P4的工具链,以及一系列SDN用例,包括来自企业、数据中心和接入网络的实例。
英文版全书开源(sdn.systemsapproach.org),书中的代码示例和编程练习全部开源(github.com/SystemsApproach/SDN),鼓励读者参与学习及分享。
序 言
Software-Defined Networks: A Systems Approach
1993年,当我看到最初的Mosaic浏览器时,感到非常惊奇。很明显,有大事要发生了,但当时的我并不知道这件事的影响将会有多么巨大。Internet(因特网)的规模迅速扩大,成千上万家新的ISP(Internet Service Provider,因特网服务供应商)在各地涌现,根植于一片片新的网络中。这些新的ISP需要做的只是将现有的商用交换机、路由器、基站和传统网络设备供应商销售的接入点连接在一起,而无须获得中央控制机构的许可。早期的路由器简单而精练,它们只需要支持Internet协议。这样的分散控制促使Internet迅速发展。
路由器制造商面临一个困境:很难通过销售简单而精练的设备来维持繁荣的盈利业务。再者,如果由简单设备组成的大型网络容易远程管理,那么所有的智能(和价值)都会由网络运营商而非路由器制造商提供。因此,路由器的外部API被控制在了最低限度(“网络管理”被认为是一个笑话)。另外,为了使路由器具有各种用途,路由器里“挤满”了新的功能。到了21世纪00年代中期,ISP所使用的路由器就非常复杂了,能支持数百种协议,运行的源代码超过了一亿行—具有讽刺意味的是,这比有史以来最庞大的电话交换机复杂十倍以上。Internet为这种复杂度付出了巨大的代价:路由器臃肿、耗电、不可靠、难以保证安全,而且价格贵得离谱。最糟糕的是,它们很难改进(ISP需要请求设备供应商添加新的功能),ISP无法自己添加新的功能。网络所有者抱怨路由器供应商的“垄断”行为,研究界则警告说Internet已经“僵化”了。
这本书讲述接下来发生的事情,这也是一个令人兴奋的故事。Larry、Carmelo、Brian、Thomas和Bruce通过具体的示例和开源代码清楚地记录下这段故事:那些拥有并运营大型网络的组织开始编写自己的代码,构建自己的交换机和路由器。一些组织选择用更简单、更易于维护的国产设备取代路由器,另一些组织选择将软件从路由器中转移到远程的集中控制平面上。无论选择哪条道路,开源技术都成为越来越重要的一部分。一旦开源技术在Linux、Apache、Mozilla和Kubernetes上证明了自己,它就可以被信任,也能用来运行我们的网络。
这本书解释了SDN(Software-Defined Networking,软件定义网络)运动发生的原因。它本质上是关于控制的改变:大型网络的所有者和运营商控制了网络的工作方式,从设备供应商那里夺得了创新的主动权。SDN始于各种数据中心公司,因为这些公司无法使用现有的网络设备构建足够大的、可向外扩展的网络。于是它们购买了交换芯片,自己编写了软件。这的确帮它们省了钱(通常能够把成本降低到1/5,或降低更多),但它们更期望的是对网络的控制。这些公司雇了大量的软件工程师,试图激起一次网络新思想的“寒武纪”大爆发,使其网络更加可靠,拥有更快的修复速度,并且能够更好地控制网络业务。2021年的今天,所有的大型数据中心公司都构建了自己的网络设备:这些公司下载并修改开源的控制软件,由自己或委托他人编写新的软件来控制其网络。这些公司已经控制了自己的网络,接下来登场的将是ISP和5G运营商。可以预见,在十年内,企业和校园网络也将运行在开源的控制软件上,并且通过云进行管理。
这是一个很好的变化,因为只有那些大规模网络的拥有者和运营商才知道如何做到最好。
网络构建的革命将朝着网络运营商开发和维护国产软件的方向发展,这种变化就是软件定义网络。本书作者从一开始就参与了这场革命,他们知道这场革命如何发生以及为什么发生。
他们还帮助我们了解未来的网络将是什么样子。网络系统将不再是一堆运行标准化互操作协议的箱子,而是一个可以自己编程的平台。网络所有者将通过对其所期望的行为编程来决定网络的工作方式。网络专业的学生将学习如何规划一个分布式系统,而不是去学习各种遗留协议中那些晦涩难懂的细节。
对于任何对编程感兴趣的人来说,网络又变得有趣了。这本书将会是一个很好的起点。
Nick McKeown
加利福尼亚州,斯坦福
前 言
Software-Defined Networks: A Systems Approach
Internet正在经历一场变革,即远离捆绑式的专有设备,取而代之的是,将网络硬件(之后将成为商品)从控制它的软件(在云中进行扩展)中分离出来。这种变革通常被称为SDN(Software-Defined Networking,软件定义网络),但由于它正在颠覆市场,因此很难将业务定位与技术基础、短期工程决策分开。本书提供了一种分解方式,我们希望读者从本书中学到的最重要的东西是,将基于SDN的网络看作一个运行在商业硬件上的、可扩展的分布式系统。
任何学习过网络入门课程的人都认为协议栈是描述网络的规范框架。不管这个协议栈有七层还是只有三层,它塑造并限制了我们思考计算机网络的方式。教科书也是据此进行组织和编写的。SDN提出了另一种世界观—一种由新的软件栈产生的世界观。本书就是围绕这个新的软件栈进行组织和编写的,目的是呈现从上到下的SDN之旅,不留下任何可能会被读者怀疑而只能用魔术或专有代码来填补的明显空白。本书末尾处,我们邀请你亲自做一些编程练习,从而向自己证明这个软件栈既是真实的,又是完整的。
实现这个目标的一个重要方面是使用开源代码。我们在很大程度上是通过利用两个先进的社区组织来做到这一点的。第一个社区组织是OCP(Open Compute Project,开放计算项目),它正在积极指定和认证运行SDN软件栈的商业硬件(例如裸机交换机)。第二个社区组织是ONF(Open Networking Foundation,开放网络基金会),它正在积极实施一套可以被集成到端到端解决方案中的软件组件。在这个领域内还有许多其他的参与者,从现有的供应商到网络运营商、初创公司、标准机构和其他开源项目,它们每一个都对SDN是什么、不是什么提供了不同的解释。我们讨论这些不同的观点,并解释它们将如何融入更大的计划中,但是不会让这些观点阻碍我们描述SDN的全面性。只有时间会告诉我们,SDN之旅将带我们去向何方,但我们相信,理解“机会的范围”是十分重要的。
本书假定读者对Internet仅有大致了解,当然,对交换机和路由器在转发以太网帧和IP(Internet Protocol,网际协议)数据包的过程中所起的作用有更深入的理解,将会有助于读者阅读本书。本书还包括指向相关背景信息的链接,以帮助读者弥补知识空白。本书还有待完善,我们渴望得到你的反馈和建议。
致谢
本书中介绍的软件源于ONF工程团队以及与该团队一起工作的开源社区的辛勤工作。我们感谢团队和社区成员的贡献,并特别感谢Yi Tseng、Max Pudelko和Charles Chan,感谢他们对本书所包含的实践练习教程所做的贡献。我们也要感谢Charles Chan、Jennifer Rexford和Nick McKeown对初稿的反馈。
Larry Peterson、Carmelo Cascone、Brian O扖onnor、Thomas Vachuska和 Bruce Davie
2020年12月
拉里·彼得森(Larry Peterson)
普林斯顿大学荣休教授,2003~2009年任普林斯顿大学计算机科学系主任。他的研究方向是因特网规模的分布式系统的设计、实现和操作,包括广泛使用的PlanetLab和MeasurementLab平台。他目前在开放网络基金会(ONF)担任CTO,领导CORD和Aether接入边缘云项目。他是美国国家工程院院士,ACM和IEEE会士,2010年IEEE Kobayashi计算机与通信奖得主,2013年ACM SIGCOMM奖得主。
卡梅隆·卡斯克尼(Carmelo Cascone)
ONF的技术人员,目前领导采用可编程交换机、P4和P4Runtime的相关项目。他拥有米兰理工学院博士学位。
布莱恩·欧康纳(Brian O'Connor)
ONF的技术人员,目前领导采用交换机操作系统的相关项目。他拥有斯坦福大学计算机科学硕士学位。
托马斯·瓦丘斯卡(Thomas Vachuska)
ONF的首席架构师,目前领导ONOS项目。在加入ONF之前,他曾在惠普担任软件架构师。他拥有加州州立大学萨克拉门托分校数学学士学位。
布鲁斯·戴维(Bruce Davie)
知名计算机科学家,在网络领域贡献卓著。他曾任贝尔通信研究所首席科学家,思科系统公司研究员,Nicira公司首席架构师,VMware公司亚太区副总裁兼CTO,并曾在麻省理工学院担任客座讲师。他是ACM会士,2009~2013年任ACM SIGCOMM主席。他主持设计了MPLS协议,并参与开发了多项重要的因特网技术。他著有多本书籍,拥有40多项美国专利。他拥有爱丁堡大学计算机科学博士学位。