第一部分 SDN核心原理
第1章 SDN概述
软件定义网络(Software Defined Networking, SDN)是近几年来受到广泛关注的一个技术理念。本章通过回顾整个互联网的发展历程来分析SDN诞生的背景以及它之所以受到学术界和产业界如此强烈关注的原因,使读者对SDN技术有一个感性上的认识;然后在第2章中再来看SDN的具体定义,从而使读者能够对SDN有更深入的理解。
谈到互联网的历史,可以从任何一本关于计算机网络的课本中找到,下面仅对互联网发展历程中具有代表性的一些重要事件做简要介绍。在20世纪50年代,随着计算机技术和通信技术的发展,研究者们认识到通过组建连通性的网络,可以实现不同计算机用户之间的远距离通信,这促进了学术界开始对数据分组交换、分布式网络、排队论等一系列技术展开探索和研究。1962年,Leonard Kleinrock在麻省理工学院的博士论文中提出分组交换概念,该技术后来成为互联网的标准通信方式。在20世纪60年代的特定历史背景下,美国国防部于1969年开始启动计算机网络开发计划“ARPANET”,这一网络最初连接了加利福尼亚大学洛杉矶分校、斯坦福大学、加州大学圣塔芭芭拉分校以及犹他州大学的几台大型计算机,虽然开始的时候规模很小,但是ARPANET的成功运行使计算机网络的概念发生了根本变化,同时标志着现代互联网的诞生。1974年,国际标准化组织(International Organization for Standardization, ISO)发布了著名的ISO/IEC 7498标准,它首次提出定义了网络分层模型设计思想,也就是我们所熟知的OSI(Open System Interconnection,开放式系统互连)7层参考模型,同年12月,斯坦福大学的Vint Cerf和Robert E.Kahn提出了著名的TCP/IP(Transmission Control Protocol/Internet Protocol),实现计算机网络互连的思想,以互连具有不同协议的网络。1983年,ARPANET宣布将过去的通信协议——NCP(Network Control Protocol)向TCP/IP过渡。1984年,欧洲粒子物理研究实验室(CERN)的Tim Berners Lee为解决由于CERN主机不兼容而无法共享文件的问题,提出了开发一个分布式系统的设想,1991年夏,Tim利用HTML(HyperText Markup Language,超文本标记语言)、HTTP(HyperText Transfer Protocol,超文本传输协议)成功编制了第一个局部存取浏览器Enguire,从那时开始,Web应用开始起飞,随后通过不断演进最终形成了著名的万维网(World Wide Web, WWW)技术。1996年,随着万维网的大规模应用,Internet(互联网)一词广泛流传,之后10年,互联网成功容纳了各种不同的底层网络技术和丰富的上层应用,迅速风靡全世界。
可以看到,互联网最初设计的目的是要把分散的计算机连接起来以达到资源共享。在互联网发展的初期,一所大学、一个研究机构或者公司都能够把自己的计算机资源通过网络组织起来形成私有的网络,这个网络只是为了自己的小规模研究或者给员工提供辅助性服务。例如,在一些中小企业内部往往构建一个小规模专用机房,机房为员工提供邮件、数据库以及其他一些功能型服务,这些服务的主要服务对象是公司的内部人员,服务的规模通常很小,因此各种设备只需要少数的运维管理人员就可以很好地进行管理。但是随着企业规模的扩大,企业开始对外部人员提供服务,原来专用的小型机房不能满足需求了,这就需要企业对其进行扩建,这使得机房的运维管理成本急剧上升。为了应对这一问题,数据中心应运而生,业界开始考虑把各种业务托管到数据中心进行统一管理,进而有效降低企业的IT运维成本。
随着业务的增长和数据中心的不断扩大,服务器的计算能力与最初的计算机相比提高了成百上千倍,一台服务器如果只处理少量任务,或者有大量空闲时间没有操作系统的任务执行,显然是对计算资源的一种浪费,于是,有研究者提出了一种新的技术设想——虚拟化。虚拟化技术的核心思想是希望能够实现在一台真实的物理机器上创建多个虚拟的逻辑主机,每个逻辑主机有自己虚拟的网卡、主板等虚拟设备,这些虚拟设备能够高效地复用真实物理设备,从而极大地提高物理基础设施资源的利用率。同时,为便于用户使用各逻辑资源,还特别强调灵活性和隔离性,即各台逻辑主机可以支持不同的操作系统,能够并行运行且互不干扰。正是由于以上这些技术特点,在随后几年中,虚拟化技术凭借以上种种优势逐步成为了IT领域持续关注的热点之一。
事实上,虚拟化技术在充分利用物理资源的同时带来了许多其他好处。例如,管理部门可以暂停虚拟机,通过复制文件把任意应用轻松地从一台物理主机上移动到另一台主机上,并可以通过克隆一套虚拟机的文件来快速建立一台新的虚拟机。正是这种灵活性,可以使网络管理人员能够方便地根据用户访问需求、流量负载情况以及电力制冷等因素将虚拟机合理分配到不同的数据中心中,可以通过虚拟化把所有活跃的主机集中起来,关掉或者睡眠一些不使用的设备来降低数据中心能耗。简单地说,网络管理员可以通过动态分配计算、存储、网络等IT基础设施资源来满足更灵活高效的需求。
虚拟化技术提供的这种灵活性,进而引发了一种新的商业模式。数据中心的管理者意识到,为了满足用户对计算、存储资源不断增加的需求,考虑到峰值业务需求和服务体验保障,需要采购大量冗余的设备,这些冗余设备无论使用与否都会消耗大量的电能、占用大量的空间。亚马逊就陷入了这种困境,当时亚马逊的业务不断增长,迫使它增加更多的设备来满足业务需求,但是很多设备在业务高峰期之外的时间里通常是闲置的,造成了IT资源的巨大浪费。为了应对这种困境,亚马逊开发了Amazon Web Services(AWS),通过AWS将闲置的资源出租,从而提高了业务闲时的资源利用率。当亚马逊内部业务繁忙需要更多的资源时,AWS就可以减少零售给用户的资源来保证内部对资源的需求;当内部不需要这些资源时,就可以接着把资源分配给零售用户,这种成功的商业模式直接推动了云计算产业的诞生。
事实上从20世纪70年代开始到现在,随着业务和应用的不断丰富与发展,用户对互联网提出的要求也在不断变化。网络最初设计的目标只是实现单纯的端到端数据传送,IP数据分组主要包含源主机和目的主机的网络地址,Internet中几乎所有的流量都是建立在TCP/IP架构之上的,那时TCP/IP能很好地满足这种需求,从20世纪50年代至今,尽管设备性能上有了飞跃性的提高,传输的流量越来越大,但网络本身的架构却没有什么突破性的变化,现有网络还是主要依靠端到端的路由转发架构,很难满足更复杂的网络需求。正如上面提到的亚马逊多租户数据中心应用场景,其对网络提出了更高的需求,它要求不同租户网络间的高度隔离性,以保证各租户的服务质量(QoS),显然如果只依靠端到端的网络是难以满足这种需求的。为了解决租户之间的隔离性问题和更复杂的网络需求,在这些年中,各种新技术层出不穷。例如,VLAN(Virtual LAN,虚拟局域网)技术就是为了解决二层局域网内的隔离性问题而提出的,它主要采用VLAN标签的方法隔离网络中的不同用户,但是由于标签数量有限,因此在大规模的网络中,VLAN就不能起到很好的作用,于是又出现了VxLAN(Virtual eXtensible LAN)等网络虚拟化技术,但事实上VxLAN使用基于IP的多播技术又面临着多播开销过大而导致的性能问题。
从上述技术的发展思路可以看出,这些网络技术的创新往往都是被动地在进行修补,通常情况下是在用户发现现有网络中的问题或者有新的业务需求后,由研究者在TCP/IP的基础之上进行设计改进,并在网络设备中集成新的功能,而不是系统性的解决方案。因此尽管有很多新的协议帮助解决新的问题,但通过这种修补的方式,会使得原本简单的网络设备变得越来越复杂、臃肿,无疑是饮鸩止渴,何况面临全新的应用场景,这种“打补丁”的解决办法是远远不够的。例如,在多租户的数据中心中,每个虚拟机都需要一个自己的三层地址来与外网相连,虚拟机迁移后,可以重新为虚拟机分配新的物理地址和三层地址。当虚拟机个数很少时,可以手动进行配置,这不会引起任何问题,然而当虚拟机规模很大时,就很难手动配置各种策略了(如QoS、ACL策略等)。针对这些新的需求,人们希望通过设计新的协议来完成新的功能。
但是,由于厂商设备的封闭性,人们想要添加新的协议的行为在很大程度上受到了束缚,不够灵活。这是因为网络管理人员必须使用商用路由器和交换机提供的管理接口才能配置设备,虽然这些设备都提供了一些接口来方便管理者对其进行配置,但是它们都对管理者隐藏了底层的细节,管理者的操作都要通过设备本身封闭的操作系统来完成,这极大地限制了网络管理的灵活性。当人们希望实现并加入一些新的协议时,通常需要设备厂商的研发来增加设备的相应功能,这往往需要很长的研发周期和高昂的研发成本,从而使得网络升级和新业务的部署变得非常困难。除了交换设备相对封闭不能使网络管理员快速开发协议外,事实上传统网络交换设备架构本身也限制了协议的创新,很多时候网络设备的更替往往只是单纯地提高转发速率性能和增加新的协议而很少从架构上进行修改,这主要是由于传统的网络设备中负责智能决策的控制平面和负责高速转发的数据平面集中在一起,由硬件商家进行控制,设备的可编程能力非常弱,研究人员和管理人员事实上根本无法添加并实现自己新的协议,由此激发了业界ForCES(Forwarding and Control Element Separation,转发控制单元分离)和RCP(Routing Control Platform,路由控制平台)两种新技术的产生,通过尝试分离网络设备的控制和转发逻辑,以提高灵活性(这两种技术将在第2章详细介绍)。但是出于商业考虑,设备厂商很少采用像ForCES那样的标准数据平面API,因为开放的API会引入新的厂商与他们竞争;而且新协议的设计实现和推动完成是一个漫长的过程,可能需要花费几年的时间,因此,最终这两种协议并没有得到广泛的使用。
近些年来,为了加快推动网络技术的发展,研究者们建设了一系列大规模网络实验基础平台,如美国PlanetLab和Emulab,希望在此之上运行新的协议进行网络创新。出于这些动机,美国国家自然科学基金会(National Science Foundation, NSF)资助启动了全球网络创新实验环境GENI(Global Environment Networking Innovations)计划。与此同时,为了更好地实现控制与转发分离并加快网络创新,由斯坦福大学主导,联合美国NSF以及工业界共同启动了Clean-Slate Design for the Internet(以下简称Clean-Slate)项目,该项目旨在重塑互联网,摒弃传统的渐进叠加和向前兼容的原则,Clean-Slate最初选择了5个关键研究方向,包括网络体系结构、异构应用、异构物理层技术、安全、经济与政策。从2006年开始,斯坦福大学研究生Martin Casado参与了Clean-Slate项目,并着手领导了一个叫做Ethane的项目,该项目最初就是为了提出一个新型的企业网络架构,希望通过集中控制来简化管理模型,并提供更高的安全性。Ethane允许网络管理员定义一个全网的安全策略,这些策略自动下发给各个交换机,以指导其处理网络流量,Ethane项目最早部署了一台控制器和19台交换机,管理了300个有线用户和一些无线用户的流量。在2007年的SIGCOMM会议上,Martin Casado发表了一篇名为“Ethane:Taking Control of the Enterprise”的论文,引起了学术界的广泛关注,在Ethane的系统架构中,控制与转发完全解耦,控制器通过Pol-Ethane语言向交换机分发策略,可以说Ethane包含了SDN早期的思想,它实际上成为了SDN技术的雏形。
2007年,Martin Casado联合Nick McKeown、Scott Shenker等人共同创建了一个致力于网络虚拟化技术创新的公司——Nicira,并最早提出了SDN的概念。紧接着在2008年,Nick McKeown在SIGCOMM会议上发表文章“OpenFlow:Enabling Innovation in Campus Networks”,首次提出了将OpenFlow协议用于校园网络的试验创新。OpenFlow开始正式进入人们的视野,SDN呼之欲出。OpenFlow协议是为了简化Ethane项目中的交换机设计而被提出的。OpenFlow是一个控制平面和数据平面之间的交互协议,它使得控制和转发完全分离,从而控制器专注于决策控制,而交换机完全专注于转发工作。OpenFlow协议使得网络具有高度的灵活性以及强大的可编程能力,它蝉联了2008年和2009年的SIGCOMM最佳演示奖,被麻省理工学院和多家咨询机构评选为未来十大技术之一,为SDN早期的发展注入了强劲动力,并一举成为了后续SDN领域备受关注的核心技术。
2011年初,在Google、Facebook、Yahoo等业界重量级企业的推动下,共同成立了ONF(Open Networking Foundation,开放网络基金会),并正式提出了软件定义网络的概念。ONF致力于推动SDN架构、技术的规范和发展工作。同年4月,印第安纳大学、斯坦福Clean-Slate计划工作组与Internet2联合发起了NDDI(Network Development and Deployment Initiative,网络开发与部署行动计划),旨在创建一个基于SDN的网络创新试验平台,以支持全球科学研究,NDDI将提供一项名为“开放科学、学问与服务交流(Open Science, Scholarshipand Services Exchange, OS3E)”的Internet2服务,并通过与加拿大的CANARIE、欧洲的GÉANT、日本的JGN-X以及巴西的RNP等国际合作伙伴的试验平台协作,实现了与北美、欧洲、亚洲以及南美洲的互联。
随着SDN大潮迅猛来袭,迫使传统网络设备商重新思考其未来的发展战略。2013年4月,由Cisco、Juniper、Broadcom、IBM等传统网络设备、芯片、平台巨头主导的开源平台项目——OpenDaylight引发了IT界一次巨大的轰动,OpenDaylight旨在促进SDN技术交流和产业化开源架构,提供开源代码和架构以加快标准化、健壮性SDN平台的发展演进。OpenDaylight项目的成立对于SDN技术的发展具有里程碑式意义,它代表了传统网络芯片、设备巨头对于SDN这种颠覆性技术的认可。
同年8月的SIGCOMM会议上,谷歌首次将其如何利用SDN技术解决数据中心之间流量问题的方案通过论文公之于众——“B4:Experience with a Globally-Deployed Software Defined WAN”,鉴于本文在SDN实际应用场景分析上的重要贡献,最终这篇论文获得了SIGCOMM 2013的最佳论文奖。谷歌的B4网络作为SDN实际部署的一个成功的商业案例,引起了全球业界的广泛关注与思考,同时也使SDN技术名声大震。它向人们证明了面对传统网络架构所面临一系列问题,SDN具有解决这些问题的能力,同时也增强了业界对于SDN技术可行性的信心。
通过回顾整个互联网的发展历史,可以看到网络从最初的端到端模型已经发展到今天诸如多租户数据中心等复杂的应用场景;用户需求从最初的单纯可达性到现在对服务质量、流量工程等多方面的需求;网络协议从最初的OSI 7层模型和简单的TCP/IP发展到了现在TCP/IP协议簇和上千种补丁协议。整个网络越来越复杂,但设备架构还是一如既往的封闭,缺少灵活性,难以跟上日益变化的应用需求。同时,由于设备门槛很高,核心技术掌握在少数大公司手中,这就制约了新技术和新协议的部署与实施。于是,SDN技术应运而生,其使命就是加快网络创新,打破设备的封闭性,使整个网络更加开放,以适应不断更新的网络需求。可以说SDN技术是网络发展到这一阶段的必然产物,它的迅速发展自然也在情理之中。
介绍了这么多软件定义网络技术出现的背景,本章最后简要地总结一下它的核心思想。SDN系统架构分为一个集中式的控制平面(通常是控制器)和分布式的数据平面,控制器位于上层应用与物理设备之间,控制器首先负责把网络中的各种功能进行抽象,建立具体的操作模型,并向上层提供编程接口,上层应用着重根据业务需求通过控制器与物理设备进行交互,网络中的设备将需要通过控制器向应用平面传递信息。可以看到,SDN的两个突出属性是数控分离和可编程性,下一章将对此进行详细分析和介绍。
SDN技术目前仍处于发展初期,在协议和处理机制上仍有诸多需要改进和完善的地方,当前其概念和架构也还没有一个统一、明确的定义,下一章中将重点介绍ONF组织对SDN的定义与架构,并通过分析其几个基本属性,以便使读者对SDN基本原理有一些初步的理解和认识。