作者:郭春梅,启明星辰资深研究员,研究方向为云计算、虚拟化、SDN技术及安全
1. SDN概述
SDN(Software Defined Networking)即软件定义网络,它引发了网络技术的一场革命,必将对网络世界的未来产生深远的影响。那么SDN到底是什么,为什么会出现这项技术,SDN网络架构的扩展性、安全性存在哪些问题,值得深入分析和思考。
1.1 SDN是什么
SDN 是一种新型网络架构,其核心思想是通过管控软件化、集中化,使网络变得更加开放、灵活、高效。具体表现为将网络的控制平面与转发平面(即数据平面)相分离:在控制平面为用户提供标准的编程接口,便于集中部署网络管控应用;转发平面仍保留在硬件中,通过标准协议接口(如OpenFlow)接收并执行转发策略。
如果将网络中所有的网络设备视为被管理的资源,那么参考操作系统的原理,可以抽象出一个网络操作系统的概念,这个网络操作系统(即控制层)一方面抽象了底层网络设备(即数据层)的具体细节,同时还为上层应用(应用层)提供了统一的管理视图和编程接口,如图1所示。这样,基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。
图1 SDN三层架构
1.2 SDN的由来
SDN的前身最早可追朔到“可编程网络”的概念,此后陆续有学者提出相应的可编程网络思想和方法。2004年,4D Project项目提出了一种Clean-Slate的网络设计方案,该方案重点突出了网元之间的交互协议与路由决策逻辑的分离。
2006 年,斯坦福的Martin Casado 领导了一个关于网络安全与管理的项目Ethane,该项目试图通过一个集中式的控制器,让网络管理员方便地定义基于网络流的安全控制策略,并将这些安全策略应用到各种网络设备中,从而实现对整个网络通讯的安全控制。受此项目启发,Martin 及Nick McKeown 提出将传统网络设备的数据转发(Data Plane)和路由控制(Control Plane)两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置,这将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展,于是OpenFlow 的概念应运而生。
2008年第一篇详细介绍OpenFlow概念的论文“OpenFlow: EnablingInnovation in Campus Networks”发表于ACM SIGCOMM ,标志着SDN时代的开启,图2给出了SDN/OpenFlow的发展历程。
图2 SDN/OpenFlow的发展历程
关于SDN的概念及实现方式,目前业界存在较大争议,比较主流的还是以OpenFlow为基础的SDN实现方式,我们通常说的SDN一般是指基于OpenFlow的SDN。
1.3 SDN的现状
2011年,McKeown 等研究者组织成立了开放式网络基金会(Open Networking Foundation,简称ONF),专门负责相关标准的制定和推广,包括OpenFlow 标准、OpenFlow 配置协议和SDN 白皮书,这大大推进了OpenFlow 和SDN 的标准化工作,也使其成为了全球开放网络架构和网络虚拟化领域的研究热点。
在学术界,美国GENI、Internet2、欧洲OFELIA和日本的JGN2plus先后展开对SDN 的研究和部署。国内由清华大学牵头,中科院计算所、北邮、东南大学、北京大学等单位参与开展了类SDN思想的”未来网络体系结构和创新环境”863项目研究。
在产业界,以Nicira (已于2012年7月被VMware 收购)和Big Switch为代表的SDN 创业公司不断涌现。为了在新技术上抢占先机与自身市场推广考虑,Juniper、NEC、HP、IBM 、Cisco等厂商先后发布了支持OpenFlow 的SDN 硬件产品;NEC、BigSwitch、IBM、Cisco或自主或联合开发SDN控制器;VMware、Juniper、Cisco等厂商发布了基于SDN的虚拟网络解决方案;上述产品目前有些已在SDN 研究领域进行了相关部署。国内的华为、中兴、盛科等设备厂商,移动、联通、电信等运营商,也在SDN产品和解决方案研发上进展迅速。
在标准化方面,除了ONF的标准化工作,IETF(互联网工程任务组)、IRTF(互联网研究任务组)、ITU-T(国际电信联盟电信标准化部门)、ETSI(欧洲电信标准化协会)等也已成立相应的工作组,围绕各自领域的SDN应用和架构展开标准研究和制定工作。
从2011年开始,在新兴技术的市场上,SDN逐渐成为业界最热门的焦点之一。在InfoWorld于2011年11月公布的影响未来10年的10项新技术中, SDN排名第二。经过4年的积累和沉淀,可以看出SDN已经走出了最初的概念炒作阶段,随着不断完善发展,SDN在运营商网络、数据中心首先商用化的趋势日益明显。根据IDC预测,2018年,SDN在企业和云服务提供商的市场规模将从2014年的9.6亿美元增长到80亿美元,年复合增长率将达89.4%。
表1 2014年SDN的国内外发展现状总结
序号 | 主要内容 |
1 | 国内SDN技术紧跟国际发展,已从实验阶段过渡到试点应用阶段。 l 清华大学开展SDN研究,实现基于SDN的Livesec网络安全系统 l 华为、中兴、盛科等设备厂商,中国移动、中国电信等运营商,腾讯、百度、阿里巴巴等网络厂商加入ONF,积极参与SDN技术研究、标准制定、产品和解决方案开发 l uCloud联合盛科实现在IaaS中应用SDN交换机 l 华为基于SDN技术,分别与世纪互联、四川联通、北京电信等运营商发布了相关领域商用网络部署 l 华为、中兴、烽火、中国移动、中国电信等全球17家运营商、设备厂商以及科研机构,顺利开展了基于SDN的光传送网OTN原型和互操作性演示 |
2 | 国外SDN快速发展,较早进入了商用部署阶段。 l 截至2014年底,ONF已有包含来自各国的设备厂商、芯片厂商、供应商、软件厂商等在内的172家成员,SDN产品覆盖SDN交换机、网络OS、网络虚拟化应用、安全应用、芯片等 l 谷歌全部数据中心骨干连接采用了OpenFlow技术,通过10G网络链接了分布全球的12个数据中心,从而将链路使用率从平均的30%—40%提升至接近100% l 美国的Internet2宣布建设美国首个开放SDN网络,这一基础设施架构来自博科和瞻博的100G以太网OpenFlow路由器,约在35到45个站点上进行了部署 l NTT在其欧洲、美国和日本的数据中心进行了虚拟数据中心部署,应用了SDN技术 l Facebook发布Altoona数据中心网络解决方案,应用了SDN技术 |
2. SDN的关键特性
SDN的核心思想主要体现在三个方面:1)控制平面与转发平面分离;2)控制平面集中;3)通过在控制平面编程实现对数据平面的行为管理。因此,SDN主要呈现出以下几个特性:
— 集中的精细管控
— 与传统网络相比,SDN控制器可以实现更加集中的网络管控,定义的管控策略和行为更为细粒度。
— 开放的统一接口
— SDN打破了传统网络设备的封闭性,使得支持统一标准的设备均可完成网络转发功能,上层应用也可更加开放、多样。
— 灵活的动态扩展
— 由于行为和策略可以在应用层进行自定义,因此用户可以根据使用需求进行动态调整和灵活的扩展。
3. 基于OpenFlow协议的SDN关键技术
SDN网络的基本元素包括SDN交换机(OpenFlow交换机)和SDN控制器(OpenFlow控制器),它们分别构成了SDN网络的数据平面和控制平面。
3.1 OpenFlow交换机
OpenFlow交换机主要实现数据层的转发,由流表、安全通道和OpenFlow协议三部分组成,如图3所示。安全通道是连接OpenFlow交换机到控制器的接口。控制器通过这个接口控制和管理交换机,同时接收来自交换机的事件以及向交换机发送数据包。OpenFlow交换机接收到数据包后,首先在本地的流表上查找转发目标端口,如果没有匹配,则把数据包转发给OpenFlow控制器,由控制器决定转发端口或丢弃。交换机和控制器间的所有通信信息必须按照OpenFlow协议规定的格式来执行。
OpenFlow交换机可以分为两类:专用的OpenFlow交换机和支持OpenFlow的交换机。专用的OpenFlow交换机是专门为支持OpenFlow而设计的,不支持现有的商用交换机上的正常处理流程,所有经过该交换机的数据都按照OpenFlow的模式进行转发;另外专用的OpenFlow交换机不再具有控制逻辑,因此它只是用来在端口间转发数据包的一个简单的路径部件。
支持OpenFlow的交换机是在普通商业交换机的基础上添加流表、安全通道和OpenFlow协议而获得了OpenFlow特性的交换机,既具有常用的商业交换机的转发模块,又具有OpenFlow的转发逻辑,因此支持OpenFlow的交换机可以采用两种不同的方式处理接收到的数据包。目前主流的OpenFlow交换机都是同时OpenFlow Enabled型的,即同时支持传统的路由转发和OpenFlow协议。目前业内比较有名的OpenFlow交换机国外厂商有NEC、BigSwitch、Pica、Juniper、Dell、Arista等公司,国内比较有名的包括盛科网络和华为公司。
图3 专用OpenFlow交换机的构成
3.2 OpenFlow控制器
OpenFlow控制器主要具有管理整个网络的OpenFlow交换机、流表的下发、向用户提供应用编程接口等功能。OpenFlow控制器是整个OpenFlow网络的大脑,用户开发的各种网络应用程序均运行在控制器上,通过安全通道能够动态添加、删除和更新各交换机上的流表以达到对网络行为和功能的动态控制,这打破了传统网络架构固定僵化的局限,为网络业务的创新和网络对新型业务的适应能力提供了基础。
控制器是SDN的核心,目前各大厂商一般都有自己的商业控制器,如NEC的PFC控制器、BigSwitch的Floodlight商业版本、HP的私有控制器等,除此之外还有以下几个比较著名的开源SDN控制器,如在AT&T、NTT等SP支持下由非营利性组织ON.lab推出的ONOS,思科、IBM等巨头联合开发SDN项目OpenDaylight,Nicira的NOX和POX、BigSwitch的Floodlight、NEC的Trema、Stanford的Beacon、Nicira的SNAC、思科、IBM、微软等公司联合开发的开源控制器OpenDaylight等,表2对几个主流控制器做了对比分析。
表2 OpenFlow控制器对比
控制器 | 开发语言 | 平台 | 开发团队 | 主要技术特点 |
ONOS | Java | Mac/linux | Open Networking Lab | 面向服务提供商和企业骨干网的首款开源SDN网络操作系统;分布式保障高可用、北向接口抽象层提高可编程性、南向接口抽象层保障高扩展性 |
OpenDaylight | Java | Win/Linux | Cisco、IBM等约40个公司 | 覆盖接口和协议最广的控制器,可与OpenStack云平台接口; |
NOX | Python/C++ | Linux | Nicira | 最早实现的控制器,单线程操作; 版本在不断更新; |
Beacon | Java | Win/Mac/Linux | Stanford | 跨平台,易于开发和部署; 模块化实现了基于事件和多线程操作的处理平台,易于扩展的界面框架; |
Floodlight | Java | Win/Mac/Linux | Big Switch | 跨平台,基于Beacon开发;由开源社区进行维护,遵循Apache开源规范,适合推广; |
SNAC | Python/C++ | Linux | Nicira | 基于NOX平台开发;集成了可扩展的策略定义语言;通过策略管理器来管理网络,用户界面友好; |
Trema | Ruby/C | Linux | NEC | 为开发者提供了丰富的API;可添加自定义功能模块,测试和调试工具丰富; |
Onix | Python/C++/Java | Linux | Nicira | 利用分布式系统实现中央控制平面; 面向较大规模真实网络的部署方案; |
3.3 OpenFlow协议及自身问题
OpenFlow协议是描述控制器和交换机之间交互所用信息的标准,协议的核心部分是用于OpenFlow协议信息结构的集合。
表3列出了OpenFlow协议版本的变化,可以看出OpenFlow协议除了拥有灵活、开放的特点外,其自身也面临着一些问题。主要包括两个问题,一个是OpenFlow交换机的流表问题,流表大小的问题可以通过两个思路解决,一是使用multi-table(OF 1.1 支持),通过pipeline 的流表查找来解决指数及增长的流表项数;二是使用Proactive+Reactive的双重流表建立方法,通过分布查找+动态加载减少流表项数(DIFANE)。虽然这两种方案在一定程度上减轻了流表大小,但还未最终解决该问题。此外,OpenFlow 能否支持大规模网络,还需要进一步研究。
另一个问题是控制器的扩展性问题,OpenFlow集中式的控制平面很容易成为整个网络的瓶颈,OpenFlow 1.2版的协议中提出了对多控制器的支持,但控制器之间缺乏相关同步。2013年发布的OpenFlow1.4版本仍然是基于1.3版本的特征改进版本,数据转发层面没有太大变化,主要是增加了一种流表同步机制,多个流表可以共享相同的匹配字段,而且可以定义不同的动作,为控制器一致性扩展问题提出了一些思路。目前主流的思路是用分布式的控制器集群来分担单控制的瓶颈压力,提供网络的性能和可靠性(如ONIX等)。
表3 OpenFlow协议版本的演进
协议版本 | 发布时间 | 主要内容 |
OF 0.8.9 | 2008年12月 | 第一个发布的OpenFlow协议版本,初始支持十元组; |
OF 0.9.0 | 2009年6月 | 增加紧急流表缓存、故障回滚、VLAN优先级匹配等; |
OF 1.0.0 | 2009年12月 | 第一个正式商用OpenFlow协议版本,增加网络分片、IP服务类型等; |
OF 1.1.0 | 2011年2月 | 增加多表、多路径、标签/隧道支持、MPLS等; |
OF 1.2.0 | 2011年12月 | 支持IPv6、扩展匹配等; |
OF 1.3.0 | 2012年4月 | 增加每流计数器、流失配、PBB等; |
OF 1.3.1 | 2012年8月 | 增强版本协商等; |
OF 1.4 | 2013年10月 | 流表同步机制、Bundling消息; |
OF 1.5 | 2014年12月 | 增加出口表、数据包类型认知流水线等; |
OF-Config 1.0 | 2012年1月 | 第一个OpenFlow管理和配置协议,队列、端口、控制器分配等; |
OF-Config 1.1 | 2012年4月 | 更新UML和XML范式; |
OF-Config 1.2 | 2014年6月 | 针对OF 1.3进行了扩展; |
4. SDN的应用场景和发展方向
4.1 应用场景
SDN技术目前在校园网和数据中心互联等应用中已经取得了一些进展。
— 校园网
在校园中部署 OpenFlow 网络,是OpenFlow 设计之初应用较多的场所,它为学校的科研人员构建了一个可以部署网络新协议和新算法的创新平台,并实现了基本的网络管理和安全控制功能。目前已经有包括斯坦福大学、清华大学在内的多所高校部署了OpenFlow 网络,并搭建了一些应用环境。
图4 清华大学基于OpenFlow的LiveSec网络安全系统
— 数据中心互联
大型企业的数据中心往往不止一个,为了容灾备份或其它一些需求,这些分布在异地的数据中心通常会租用运营商的VPN专线进行互联。由于数据中心之间的业务流量具有不确定性,为了保证数据中心间传输的性能,企业通常按照峰值带宽来租用WAN链路,然而由于大部分时间这些WAN链路都处于低利用率状态,因此造成资源的极大浪费。Google创造性地利用OpenFlow技术有效的解决了这个问题。
Google的广域网由两张骨干网平面组成,即外网和内网。外网用于承载用户流量,称为I-scale网络,而内网则用于承载数据中心之间的流量,称为G-scale网络,这两张网络的需求差别性很大,流量特性也存在着很大的差别。如今Google已经在G-scale网络中大规模的部署了SDN解决方案, Google基于OpenFlow的全球数据中心互联如图5所示。
根据G-scale网络的需求和流量特性,Google利用Openflow协议,自己开发了网络交换机,并基于OpenFlow开发了开放的路由协议栈。每个数据中心站点部署了多台交换机设备,保证可扩展性(高达T比特的带宽)和高容错率,站点之间通过多个OpenFlow控制器实现网络调度。在这个广域网矩阵中,Google建立了一个集中的流量工程模型,可以实时计算和选择最佳路径。到2012年初,Google数据中心全部骨干连接已经都采用这种架构,WAN链路利用率提升到95%。
图5 Google基于OpenFlow的全球数据中心互联
4.2 发展方向
由于SDN的灵活性、开放性和可编程性,其未来的发展前景将更加广阔,目前可以看到的潜在应用领域还包括云数据中心内部网络互联、基于SDN的无线通信运营商网络、未来互联网架构等。
— 云数据中心网络
随着云计算模式和数据中心的发展,数据中心的数据流量骤增,交换机层次的管理结构复杂,服务器和虚拟机需要快速配置和数据迁移。如果不能在庞大的服务器机群中进行高效的寻址和数据传输,很容易造成网络拥塞和性能瓶颈。
SDN 控制转发分离的技术特点满足了数据中心密集型服务器需要集中管控的需求,增加了数据中心实际配置和操作的灵活性。将OpenFlow交换机部署到数据中心网络,可以实现高效寻址、优化传输路径、负载均衡等功能,从而进一步提高数据交换的效率,增加数据中心的可控性。Google 在其数据中心全面采用基于OpenFlow 的SDN 技术,大幅度提高其数据中心之间链路利用率,起到了很好的示范作用。同时,针对数据中心动态路由、负载均衡和能量管理等方面的研究也有相关实例部署,将成为基于OpenFlow 的SDN 技术近年的研究热点。
— 运营商网络
运营商架构的传统电信网络,有着过度复杂和封闭的特性,沉淀了大量不必要的功能和性能。这些网络由大量单一功能的网络节点和昂贵的硬件设备构成,造成网络成本高居不下,业务收入增长无力的被动局面。
而SDN的提出很好的解决了上述问题,与此同时,SDN将对运营商的网络建设、组网架构和运维模式带来一定挑战,特别是对于已经构建了大量基于硬件控制网络的电信运营商而言,SDN既是一个新挑战,也是一个新机遇,但从封闭的黑盒网络走向开放的可编程软网络是整个网络发展的必然趋势。
目前,美国运营商AT&T和Verizon等均将SDN应用于云计算数据中心组网。德国电信、法国电信、意大利电信等运营商也开始开发和部署SDN技术。我国的电信运营商也纷纷投入大量的资源建设大型数据中心,与设备厂商开展合作,对SDN和相关技术进行实验研究,后续还将根据技术和设备成熟情况开展测试和部署工作。据了解,中国移动在南方基地建造了众多数据中心,计划今年底就实际引入SDN进行现网部署。中国电信也以国家项目为基础,在数据中心、城域网控制面进行设备和组网方案验证。
— 未来互联网
当前,传统互联网的网络设备使用着封闭、专有的内部接口,运行着大量的分布式协议。在这种复杂的网络环境中,封闭的网络设备使网络面临着诸多问题与挑战,如安全性、健壮性、可管理性及移动性等,而且由于网络管理需要大量的人工配置、设备兼容等问题,网络维护成本一直居高不下。
由于传统IP网络基础设施的大量部署,未来互联网不可能一夜之间废弃传统基于IPv4的互联网,而SDN的虚拟化功能则正好满足这一点。利用SDN的虚拟化技术,实现了传统业务流量与实验流量的隔离;同时,SDN提供的编程能力为研究人员提供了极大的便利,研究人员能够基于开放接口,研究和开发新型的互联网架构和相关关键技术。
目前,美国的GENI计划已经基于OpenFlow技术构建了一套针对未来互联网创新和研究的实验网络。国内中科院计算机网络信息中心目前也已经开展了相关的工作,拟在中科院系统内部搭建一套基于OpenFlow的实验网,为中科院系统的科学研究工作提供支撑。
5. SDN及安全思考
在网络领域,SDN思想和OpenFlow技术解决了下述一些问题:
— 灵活的网络基础架构虚拟化
L2和L3的 VPN 不再需要完全取决于 MAC 和 IP 地址,而是可以基于任何包头字段进行VPN的划分,具有极大的灵活性。
— 动态灵活的网络负载均衡
OpenFlow 维护统计数据作为其实施的组成部分,这允许动态、快速地平衡网络流量,OpenFlow 交换机可以动态地监视流量并根据需要平衡和引导负载。
— 二三层环路问题
由于避免了分布式的动态路由协议和MAC学习,可以根本上解决二三层环路问题,而且能够利用冗余链路提供路径备份和带宽扩展。
— 路径最优化
由于控制平面具有全网的全局视图,因此能够提供最优化的路径决策。
— 带宽动态分配
允许针对特殊、短期的网络活动安排带宽,然后自动重新分配或回收。
安全问题是网络技术研究的一个永恒课题,SDN网络的安全也不例外。我们将SDN与安全之间的关系概括为三个层次,如图6所示:
— SDN自身的安全性问题,即Security of SDN
Security of SDN是指SDN交换机的安全性、SDN控制器的安全性以及SDN控制器上运行的各种网络应用模块的安全性等。
— 用SDN技术来实现安全服务,即Security to SDN
Security to SDN是指用SDN技术来实现安全服务功能的推送。利用SDN灵活的流量控制与路由选择机制,实现安全业务的动态和灵活推送,通过在控制器平台上实现安全应用,来为用户提供相应的安全服务。
— 用SDN技术来解决现网中的安全问题,即Security by SDN
Security by SDN是指利用SDN的一些技术特点来解决或简化现网中传统安全解决方案的实现。一个典型的例子是在网络入口利用SDN进行简单的流分类,由于SDN是基于硬件的流转发,因此可以达到线速流分类,相比之下,性能优于传统的DPI设备。另外,还可以在网络中的一些骨干节点上部署SDN,实现业务流量的重定向,能够提供安全服务设备的灵活部署。
图6 SDN与安全三层关系图示
由于SDN网络尚未大面积部署,SDN安全的方向现阶段主要集中在用SDN技术来解决现网中的安全问题和用SDN技术来实现安全服务,对于SDN网络自身的安全问题研究也会随着SDN网络的普及和应用而深入展开。