软件定义网络技术剖析
软件定义网络技术剖析
CNNIC 邓光青
近段时间以来,软件定义网络(Software Defined Network,SDN )吸引了国内外企业界与学术界的广泛关注。2012年7月24日,VMware 以10.5亿美元现金收购了专注于SDN 技术的Nicira 公司;2012年10月31日,华为在“SDN & OpenFlow 世界大会”上展示了基于SDN 技术的系列原型样机,并演示了该技术在接入网、城域网、传送网以及数据中心等具体场景的应用;腾讯也表示将在未来一两年内在数据中心广域网中部署一定的SDN 设备。SDN 近期风头很劲,笔者在跟踪SDN 技术的过程中也有些自己的看法,在此一吐为快。
首先回顾一下什么是软件定义网络。SDN 是由美国斯坦福大学clean slate研究组提出的一种新型网络创新架构,其核心思想是:分离网络设备控制面与数据面,以实现对网络流量的灵活控制,为核心网络及应用的创新提供良好的平台。一个SDN 网络主要由两种设备构成:控制器和OpenFlow 交换机。其中,控制器通过收集各个OpenFlow 交换机所统计的数据为SDN 网络中的每一个流(flow )分配一条转发路径;OpenFlow 交换机根据控制器的指令将流转发到相应的端口。如果把SDN 网络比喻成一个机器人的话,那么控制器就是机器人的大脑和神经中枢,而OpenFlow 交换机则是机器人的四肢。控制器负责汇总各类传感信息并经过运算向四肢发送行动指令;而OpenFlow 交换机则负责接收来自于控制器的指令并作出相应的动作。
与传统的路由及交换协议相比,SDN 的最大特点是使用集中式的方式来转发数据。以OSPF 、BGP 等为代表的传统路由协议,致力于建立一个分布式的网络,即使有一个或多个路由设备因各种原因(如故障、战争等)不能正常工作,数据包也可以依靠其它路由设备进行转发,网络不会因少数设备的下线而发生瘫痪。分布式模式的优点主要是鲁棒性好、可扩展性强、自愈性优。SDN 网络倾向于通过集中式来解决数据流的路由问题,控制器需为进入SDN 网络的每一条流选择一条数据通道,其复杂度是非常大的。如果将SDN 网络扩展到全球,这就好比为全球每个人的出行设计一条出行路线,其难度可想而知。与集中式路由协议相比,分布式路由协议的主要缺点有:收敛速度慢、协议开销大。所谓收敛
速度慢,是指当某条路径不通时,分布式路由协议将这条路径不通的消息转发给全网每一个路由设备所花费的时间较长。由于分布式路由协议依靠路由器之间两两交换路由信息或“泛洪”的方式来更新路由信息,故其协议开销较大。而集中式路由协议虽有计算复杂度高的不足,但其收敛速度快、协议开销小,随着云计算数据中心的发展,依靠大规模服务器集群来完成路由的计算也不是没有可能。总之,分布式路由协议是以高开销和高延时(收敛速度)来换取健壮性;集中式路由协议是以大计算量来换取低开销及低延时(收敛速度)。当前,分布式路由协议较为成熟但面临着性能瓶颈,集中式路由可能是下一步的研究方向。
与传统路由协议相比,SDN 在进行路径选择时更为灵活,从而为互联网业务的部署及网络优化创造了有利条件。传统路由协议能在一定程度上实现网络流量的负载均衡,因为这类路由协议在选择网络路径时,总是会尽量选择比较空闲的链路而避开拥堵的链路。这类协议的好处是能提高链路的利用率,其缺点是不易对互联网业务进行优先级管理。而SDN 可以通过为业务流指派链路来方便地实现不同业务的优先级管理。例如,在一个数据中心内,可以为Email 等实时性要求不是特别高的业务分配一条质量较差的链路;而为VOIP (VOICE over IP,互联网语音)分配一条质量较高的链路,以保证高优先级业务能始终保持恒定的服务质量。总的来讲,SND 可以动态地为不同的互联网业务分配带宽资源,这一点是传统路由协议所不具备的。
SDN 表现出很多优点,但同时也面临着诸多难题:如安全问题、复杂度问题以及实时性问题。由于控制器存在着单点失效问题,网络的安全性较差,一旦控制器被攻击,网络将瘫痪。同时,路径计算完全依靠中心控制器,控制器的计算量极大,同时,控制器需实时监测每一条进入网络的流且需实时为其分配一条路径,实时性能否保证还不得而知。如果在公网上部署SDN 网络,就很可能会导致网络被少数实体(如运营商)所控制,因为只要控制了SDN 控制器,那么每一个流的转发行为会被完全控制,很可能会造成网络资源的分配不公,如给某些用户或业务给予更高的优先级,同时打击某些用户或业务,从而导致网络资源被人为干预的程度大大加强。
从SDN 的性质可以看出这种新技术比较适合于企业网,尤其是数据中心。因为企业网的规模不是很大,SDN 控制器的压力较小,更重要的是,企业网是由一家企业所运营,SDN 控制器的选路策略仅由一家企业决定,不易引起利益
冲突。假如将SDN 网络部署到公网,那么SDN 控制器的转发策略所涉及的将不仅仅是技术问题,更多的是商业问题,因为在SDN 网络中,数据流的路径是可控的,显然,每个商业实体都希望自己的数据流能从链路状况较好的链路通过,易引发利益之争。总的来说,SDN 网络虽然风头很盛,但其仍处于发展的早期阶段,还有很多问题没有解决。对于新事物,一方面我们要看到其发展潜力,另一方面也要看清其存在的不足,然后针对其不足开展工作,最后做到为我所用。
摘要: 通过控制平面与数据平面的分离,软件定义网络(SDN )架构将网络底层网络设施与网络应用抽象分离开来,从而实现构建可管理、可编程的、可动态改变的网络。文章认为未来网络将越来越依赖于软件,SDN 这种新颖的、动态的网络架构将提高网络的延展性、灵活性和可管理性,从而实现网络变革并带来新一波的技术创新。
关键词: 软件定义网络;OpenFlow ;未来网络
Abstract : In software-defined network (SDN ) architecture , the control and forwarding planes are decoupled, which abstracts the underlying network infrastructure from the applications. This allows for manageable, programmable , flexible networks that are adaptable to changing business needs. Future networks will rely more and more on software. New , dynamic software-defined architecture will be widely adopted and will revolutionize networks and applications.
Key words: software-defined networking; OpenFlow ; future network
当前,网络已经成为支撑现代社会发展以及技术进步的重要基础设施之一,它深深地改变了人们的生产、生活和学习方式;然而,传统网络架构越来越不能满足当今企业、运营商以及用户的需求。传统互联网由极其复杂的交换机、路由器、终端以及其他设备组成,这些网络设备使用着封闭、专有的内部接口,并运行着大量的分布式协议。在这种网络环境中,对于网络管理人员、第三方开发人员(包括研究人员),甚至设备商来说,网络创新都是十分困难的。例如,研究人员不能够验证他们的新想法;网络运营商难以针对其需求定制并优化网络,难以使得他们的收益最大化;甚至对于设备商来说,也不能及时地创新以满足用户
的需求。封闭的网络设备所带来的结果是:网络依旧面临着诸多问题与挑战,如安全性、健壮性、可管理性以及移动性等等;网络维护成本仍然居高不下,网络管理需要大量的人工配置等等。
近年来,逐渐兴起的SDN 正试图打破这种僵局,并成为了近年来学术界和工业界讨论的热点。
1 SDN的架构
1.1 SDN架构的特点
SDN 是软件定义网络的简称,其核心理念是使网络软件化并充分开放,从而使得网络能够像软件一样便捷、灵活,以此提高网络的创新能力。通常意义上来讲,SDN 是指从OpenFlow[1]发展而来的一种新型的网络架构,其前身是斯坦福的用于企业集中安全控制的Ethane 项目[2]。2008年斯坦福大学的Nick Mckeown教授将其命名为OpenFlow ,后经由斯坦福Clean State项目推广,以及在大型网络-全球网络创新环境(GENI )项目中的应用,该概念被逐渐扩展并成为了SDN [3]。
图1描述了SDN 架构的逻辑视图。SDN 的基本网络要素包括:逻辑上集中的SDN 控制器,它是基于软件的控制器,负责维护全局网络视图,并且向上层应用提供用于实现网络服务的可编程接口(通常也称为“北向接口”);控制应用程序,该程序运行在控制器之上,通过控制器提供的全局网络视图,控制应用程序可以把整个网络定义成为一个逻辑的交换机,同时,利用控制器提供的应用编程接口,网络人员能够灵活地编写多种网络应用,如路由、多播、安全、接入控制、带宽管理、流量工程、服务质量等;转发抽象,转发抽象通常称为“南向接口”,SDN 控制器通过利用SDN 提供的转发平面的网络抽象来构建全局网络视图。
由此可知SDN 的基本特征:
·控制与转发分离。转发平面由受控转发的设备组成,转发方式以及业务逻辑由运行在分离出去的控制面上的控制应用所控制。
·控制平面与转发平面之间的开放接口。SDN 为控制平面提供开放的网络操作接口,也称为可编程接口。通过这种方式,控制应用只需要关注自身逻辑,而不需要关注底层更多的实现细节。
·逻辑上的集中控制。逻辑上集中的控制平面可以控制多个转发面设备,也就是控制整个物理网络,因而可以获得全局的网络状态视图,并根据该全局网络状态视图实现对网络的优化控制。
1.2 SDN的实例——OpenFlow
提到SDN ,必然要涉及控制平面与转发平面之间的接口定义,作为SDN 架构中控制平面与转发平面之间转发抽象定义的第一个实例,OpenFlow 协议在提出的初期就受到业界的广泛关注,后经过GENI 项目的推进以及多家IT/互联网企业的参与,现已形成强大的产业
联盟。因此,业界普遍选择OpenFlow 协议作为SDN 中控制平面与转发平面之间的通信接口,并围绕其建立一系列的网络操作系统、控制应用以及相关的组件等。
OpenFlow 的成功与其简单高效的特点密不可分。OpenFlow 架构十分简洁,如图2所示,OpenFlow 交换机由内部转发流表以及用来与外部控制器进行通信的安全通道组成。为了使远端的控制应用能够对转发平面的网络设备进行编程,OpenFlow 协议指定了一系列基本操作。通过OpenFlow ,SDN 控制应用可以直接访问并操控转发平面中的网络设备,OpenFlow 交换机则使用流表流水线来进行数据包匹配与数据包转发。如图3所示,OpenFlow 交换机中的每个流表中含有多条流表项,每条流流表项由匹配域、优先级、统计域以及一系列的转发指令组成。控制器可以利用OpenFlow 协议对这些流表项进行添加、删除或者修改操作,当数据包匹配到某个流表项时,该表项对应的指令集合将被触发。OpenFlow 支持最基本的动作,包括转发、丢弃、群组操作、入队以及加/去标签等。OpenFlow 通过对网络中“流”的控制来达到对网络进行灵活控制的目的。 此外,OpenFlow 支持的多种控制方式也有利于其在多种网络环境中的部署。首先,基于OpenFlow 的SDN 完全不会受网络规模的影响,分布式控制器能够很好地提高网络的可扩展性。其次,OpenFlow 中对“流”的定义十分灵活,这也就使得能够对网络进行更灵活的控制。例如,在需要进行细粒度控制的网络场景中,可以逐流建立流表项并通过逐微流的精确匹配实现对网络的精确控制;在流量较大的网络环境中,可以使用通配流表来对汇聚流进行转发,降低流表项数目对转发节点内存空间的冲击。最后,控制平面建立流表项的方式也十分灵活。控制平面既可以被动地建立流表项,由新流来触发流表项的建立,也可以主动地建立流表,提前对转发设备的转发行为进行配置,从而提高转发效率。OpenFlow 细粒度的、基于流的转发能力,使得网络控制变得十分灵活,使其能够实时地对网络应用、用户、会话的需求做出不同的响应。
1.3 SDN网络虚拟化工具
——FlowVisor
网络虚拟化是未来网络的发展方向之一。在基于OpenFlow 的SDN 中,FlowVisor 能够有效地实现网络虚拟化。
FlowVisor 是一个特殊的OpenFlow 控制器,主要作为OpenFlow 交换机与多个OpenFlow 控制器之间的透明代理。FlowVisor 可以将物理网络分成多个逻辑网络,也称为网络分片,并为网络管理人员提供广泛定义的规则以实现对网络的管理。FlowVisor 通过抽象层来分割物理网络,它位于一组交换机和SDN 或多个网络之间,可管理带宽的使用、CPU 利用率的管理统计和流表的配置等,这十分类似于管理程序位于服务器硬件和软件之间,以支持多个虚拟操作系统的运行。正如管理程序依赖于标准x86指令来虚拟化服务器一样,FlowVisor 使用标准OpenFlow 指令集来管理OpenFlow 交换机。由于所有这些规则都是通过流量表定义的,因此,无论是从带宽还是CPU 使用率来看,网络虚拟化几乎没有增加额外的开销。
目前FlowVisor 已经被部署在美国各地的一些大型校园网中(例如斯坦福)。两个以研究为重点的大型网络GENI 和Internet 2上也在使用FlowVisor 进行网络虚拟化的管理。 2 SDN的发展与应用
2.1 SDN广受关注
当前,SDN 已逐渐成为了学术界、工业界以及标准化组织广泛关注并讨论的热点。 在学术界方面,近年来,世界各国纷纷开展了围绕着SDN 的科研项目。美国科学基金会(NSF )支持的GENI 计划[4]在OpenFlow 发展的初期就率先对OpenFlow 予以了资金支持并实施了“GENI Enterprise”计划。目前,OpenFlow 已经在美国多所高校、Internet 2以及其他的多个科研机构中得到部署。欧盟第七框架计划也于2010年开始支持SDN 的相关研究,并支持了OFELIA[5] 、SPARC[6]以及CHANGE[7]等研究项目。2012年4月,SDN 领域中又诞生了一个新的研究机构:美国斯坦福大学与伯克利大学联合12家公司成立了开放网络研究中心(ONRC )[8],其中包括了Cisco 、HP 、华为及Juniper 等网络公司。目前,SDN 的相关研究已经遍布全球的各个角落,比较有影响力的研究机构包括斯坦福大学、普林斯顿大学、康乃尔大学、多伦多大学、巴西CPqD 、爱立信研究中心、NEC 研究中心、HP 研究中心、德国电信T-Labs 研究中心等等。于此同时,SDN/OpenFlow也在多个国家得到部署,主要包括:美国、巴西、加拿大、德国、英国、意大利、西班牙、日本等。 SDN 在得到学术界的普遍认可的同时,工业界也对这种新的网络架构表达出浓厚的兴趣。从OpenFlow 推出开始,NEC 公司就对OpenFlow 的相关硬件进行了跟进性的开发,并推出了多款支持OpenFlow 协议的交换机。此外,HP 、Junifer 、pronto 等公司也相继推出了支持OpenFlow 的交换机、路由器、无线网络接入点(AP )等网络设备。2011年,开放网络基金会成立[9],专门负责OpenFlow 标准和规范的维护和发展,并召开了第一届开放网络峰会,为OpenFlow 和SDN 做了很好的介绍和推广,该基金会成员基本涵盖了所有网络及互联网领域的商业巨头。在2012年初召开的第二届开放网络峰会上,Cisco 宣布投入1亿美元于一个专门致力于SDN 产品研发的内部创业公司Insieme ;Google 宣布已经在其全球各地的数据中心骨干网络中大规模地使用OpenFlow/SDN。最近,Facebook 也宣布在其数据中心中使用了OpenFlow/SDN技术。
在标准化方面,开放网络基金会(ONF )致力于推动SDN 技术的标准化和商业化,已于2012年4月发布了OpenFlow 协议的最新v1.3版本。此外,作为互联网协议标准的主要制订者,互联网工程任务组(IETF )也在积极开展SDN 的相关工作。2011年11月IETF 第82次会议上的SDNP BoF 吸引了包括运营商以及设备商在内的300多人参加,主要讨论了SDN 的需求、架构以及典型的应用场景。在IETF 第84次会议上,SDN 更是成为IETF 技术全会的热门话题,Cisco 、Google 以及马里兰大学分别进行了SDN 相关的主题演讲。此外,负责进行互联网演进相关的相对长期性研究的互联网研究任务组(IRTF ),也于IETF 84会议上举行了SDNRG 会议,并引起的极大关注。
2.2 SDN发展迅速
经过了几年的发展,SDN 的相关技术正呈现着百花齐放的发展态势。
在控制平面方面,从第一个控制器平台NOX 开始,业界已逐渐出现一系列的基于OpenFlow 的网络控制器平台。这些控制器平台在向下封装与交换机通信的OpenFlow 协议的同时,也向上层网络控制应用提供相对更高层的开放编程接口。当前主流的控制器平台主要包括:NOX ,POX ,Onix ,Floodlight ,Beacon 以及Maestro 等。 在转发设备方面,SDN 的转发设备已不再局限于有线转发设备。支持OpenFlow 的转发设备能够部署在更广阔的网络环境中,如适用于虚拟环境的Open vSwitch以及能够工作在无线环境中的Pantou 等。于此同时,随着设备厂商的加入,支持OpenFlow 的转发设备也正逐渐从基于软件的转发设备向基于高速硬件的转发设备过渡。
在控制平面与转发平面的通信接口方面,开放网络基金会ONF 于2012年6月发布了Openflow v1.3版本。与早期版本相比,新版本的Openflow 协议更加灵活。除了保留OpenFlow v1.1版本中对多级表、群组表、标签以及虚端口等特性的支持,以及OpenFlow v1.2版本中对IPv6以及可扩展匹配的支持之外,OpenFlow v1.3版本规范了基于参数类型、长度和数值(TLV )的能力表达框架,还增加了对逐流计量以及IPv6扩展头处理等功能的支持。OpenFlow v1.4版本的标准化工作计划也将在2013年上半年完成。
随着SDN 相关技术研究的不断深入,其研究活动主要可以在以下方面展开:
(1)SDN 控制应用的研究。SDN 这种开放的网络架构能够用于多种网络环境中,不同场景中SDN 控制应用需要从不同的网络环境特点出发,因地制宜,合理有效地进行有针对性的控制应用设计。
(2)SDN 网络抽象。在SDN 架构中,控制器平台向上层控制应用提供高层抽象应用程序编程接口(API ),也称为“北向接口”。现有的控制器平台实现已经提供了一些基本的抽象,然而利用基本抽象来编写网络控制程序往往也是比较复杂并且容易出错,如何去设计更高层的网络编程抽象也是一个需要解决的问题。当前,业界比较认可的编程API 需求有提供通用的编程抽象,能够支持多种网络环境中的不同的网络控制功能;提供高层抽象,使编程人员能够更容易地控制网络;提供分布式抽象,以支持网络和应用的可扩展性,使程序的编写不受底层网络分布式结构的束缚;提供支持模块化的控制程序;提供可移植性,使控制程序能够得到最大限度的重用等等。
(3)SDN 调试及排错技术。由于SDN 的行为完全由软件决定,与所有程序一样,这些控制程序同样会存在一定的漏洞,验证网络行为与控制策略的一致性也成为了现阶段的重要问题。
当前的解决方案有:利用模型校验以及符号执行去验证控制器代码的正确性;利用断点及数据包回溯技术来对SDN 进行排错;以及通过对数据平面配置的静态分析来检查网络的联通及隔离错误等等。
(4)分布式控制平面的设计。虽然OpenFlow 支持分布式控制,但将网络智能逻辑上集中化之后所带来的可用性、可扩展性等问题仍需完善。在分布式SDN 架构中,控制器之间的信息复制决定了系统的可扩展性,在信息全复制的情况下,整个系统将很快会陷入系统瓶颈,因此需要对网络中各种信息的更新频率进行更为精确的分析,从而能够给出较为有效的解决方案。
(5)硬件优化技术。利用OpenFlow 的特性来对转发硬件进行优化,OpenFlow 协议从v1.1版本之后将转发面抽象成多级流水线,十分类似于当今交换机ASIC 以及网络处理器的结构。那么,如何在不过分增加转发硬件复杂度的前提下,尽可能地提高转发平面的可编程能力(如可定义的表/流水线结构)也是一个需要进一步研究的重要问题。
随着研究的不断深入以及技术的持续发展,SDN 关键技术将逐渐趋于完善,未来的网络将会越来越依赖于软件,因此互联网将可能会进入SDN 时代。
2.3 SDN应用广泛
SDN 能够在多种网络环境中得到应用,包括数据中心网络、企业网络、广域网以及移动网络等[10]。
首先,在数据中心网络环境中使用SDN ,可以将网络和计算资源更加紧密地联系在一起,从而实现高效的控制。在数据中心内部,利用SDN 的优势,可以有效地进行数据中心中的路径优化和负载均衡,提高数据中心中资源利用率以及降低数据中心的能量消耗。另一方面,在多个数据中心之间利用SDN 网络虚拟化技术以及逻辑上集中式的控制技术,可以轻松地实现应用到虚拟专用网(VPN )的映射以及虚拟机的迁移。
其次,使用传统技术对大型企业网络进行管理是一种十分复杂的任务。在企业网络中利用SDN 技术,能够极大地减轻网络管理的复杂度,企业网络管理人员只需要通过定义整网的管理策略就能够直接对企业网络进行控制,而不需要进行逐设备的配置,提高了企业网络的可靠性。
最后,在广域网及移动网络中使用SDN 技术也将可能具有众多好处。SDN 逻辑上集中的控制平面能够更好地实现网络融合,使统一管理成为可能。利用SDN 技术可以在固定网络和移动网络中实现无缝控制、提高VPN 管理的灵活性等。已有企业公司利用OpenFlow 技术对移动网络进行高效、灵活的网络管理,并实现了多种移动通信方式之间的实时动态切换以及移动回程网络的节能功能。在运营商网络中利用SDN 技术不但能够降低网络管理难度,还能够加快业务部署速度,提高网络服务的适应能力。
3结束语
通过控制与转发的分离,SDN 能够降低网络管控的复杂度,提高网络的可靠性及安全性,提供多种粒度的网络控制,从而提高用户体验并促进网络创新。当前SDN 已逐渐成为了学术界、工业界以及标准化组织广泛关注并讨论的热点。未来网络将越来越依赖于软件,SDN 这种新颖的、动态的网络架构将得到更广泛的应用,进而促进网络技术的不断创新。
参考文献
[1] MCKEOWN N , ANDERSON T , BALAKRISHNAN H , et al. OpenFlow : Enabling innovation in campus networks[J]. ACM SIGCOMM Computer Communication Review , 2008, 38(2): 69-74. [2] CASADO M, FREEDMAN M, PETTIT J, et al. Ethane : Taking control of the enterprise[J].ACM SIGCOMM Computer Communication Review, 2007, 37(4): 1-12.
[3] GREENE K. R10: Software-defined networking[R]. MIT Technology Review ,2009.
[4] ANDERSON T , REITER M K. GENI : Global Environment for Network Innovations[R]. GENI Facility Security, GDD-06-23.2006.
[5] OFELIA. OpenFlow in Europe: Linking infrastructure and applications[EB/OL].
[2012-10-10]. http://www.fp7-ofelia.eu/
[6] SPARC: Split Architecture Carrier Grade Networks[EB/OL].[2012-10-10]. http://www.fp7-sparc.eu/
[7] CHANGE Project[EB/OL]. [2012-10-10]. http://www.change-project.eu/
[8] ONRC : Open Networking Research Center[EB/OL]. [2012-10-10]. http ://onrc.net/
[9] ONF.Open Networking Foundation[EB/OL]. https://www.opennetworking.org/
[10] IETF 82 Proceedings: Software Driven Networks (SDN ) (BoF ) [EB/OL].
[2012-10-10]. http://www.ietf.org/proceedings/82/sdn.html
收稿日期:2012-12-12
作者简介
王文东,北京邮电大学网络与交换技术国家重点实验室教授,网络技术研究院副院长;目前的主要研究方向为新一代互联网体系架构和协议、移动互联网技术与应用、网络和业务的服务质量控制与管理。
胡延楠,北京邮电大学网络与交换技术国家重点实验室在读博士研究生;主要研究方向为软件定义网络、未来网络体系架构、网络优化等。