殷 波 张云勇 王志军 房秉毅 冯伟斌
中国联通研究院 北京 100032
随着云计算技术的大规模应用,传统数据中心网络不能很好地满足现有网络的需求。新应用的发展对传统网络提出更高效集中的网络管理需求、高效灵活的组网需求,虚拟机的部署和迁移也需要网络更加灵活,并且网络要能支撑虚拟机多租户业务。简言之,数据中心网络SDN(Software defined network,软件定义网络)化的需求主要表现在海量的虚拟租户、多路径转发、VM(虚拟机)的智能部署和迁移、网络集中自动化管理、绿色节能、数据中心能力开放等几个方面[1]。
数据中心之间互联的网络具有流量大、突发性强、周期性强等特点,需要网络具备多路径转发与负载均衡、网络带宽按需提供、绿色节能、集中管理和控制的能力。数据中心间的网络流量倾向按照固定路径经多跳进行传输,任何流量阻塞或是设备故障都会产生瀑布效应影响到通过同一台设备的其他网络流量;因此,由于数据中心中无时无刻不存在着虚拟服务器的扩展和移动(例如虚拟机的生成和移动),这将使网络性能表现地更加不确定。在传统数据中心网络中一般可以通过配置网络QoS,以及进行有限的多路径选择,有时甚至可能需要手工更改配置来解决交通拥堵的问题。若将SDN引入数据中心网络中,就可以对网络进行端到端虚拟路径的可编程操作,中央控制器可以将多台核心设备聚合在一起进行高速背板转发。在未来,SDN网络将能够基于实时分析和数据统计得到的网络利用率对数据中心网络流量的转发过程进行智能决策。
引入SDN技术[2]后,SDN控制逻辑集中的特点可充分满足网络集中自动化管理、多路径转发、绿色节能等方面的要求;SDN网络能力开放化和虚拟化可充分满足数据中心能力开放、VM的智能部署和迁移、海量虚拟租户的需求。数据中心的建设和维护一般统一由数据中心运营商或ICP/ISP维护,具有相对的封闭性,可统一规划、部署和升级改造,SDN在其中部署的可行性高。引入SDN的网络可通过部署统一的控制器来收集各数据中心之间的流量需求,从而进行统一的计算和调度、实施带宽的灵活按需分配、最大程度优化网络、提升资源利用率。目前Google已经在其数据中心之间应用了SDN技术,将数据中心之间的链路利用率提升至接近100%,成效显著。数据中心网络是SDN目前最为明确的应用场景之一,也是最有前景的应用场景之一。
SDN是一种新型的基于软件可编程思想的网络架构[3],它有一个集中式的控制平面和分布式的转发平面,两个平面相互分离,可以实现控制平面对数据平面的集中化控制,并提供开放的编程接口,为网络提供灵活的可编程能力,具备以上特点的网络架构都可以被认为是一种广义的SDN。
SDN可支持网络层中的不同功能,并创建新功能以将网络作为一组抽象服务进行管理。这些抽象服务的部分功能包括以下几点。
1) 将虚拟机从网络中分离。SDN支持通过将虚拟机与其物理网络身份相分离来对超大规模数据中心进行扩建和管理。在虚拟机迁移到数据中心内的不同LAN甚至跨WAN上的数据中心迁移时,SDN可确保它们之间的互相通信。
2) 基于SDN的安全应用。基于SDN的网络能够以多种方式提升安全性,包括支持创建虚拟化的安全性设备,这种方式具有动态可扩展的优点;以及能够将LAN和WLAN安全策略和控制集成到集中控制平台上进行统一管理的方式。
3) 基于软件的负载均衡。在基础层级,SDN和负载均衡是较为相似的流量优化方法。目前,厂商正努力将负载均衡建立为一种网络基元。借助支持SDN的负载均衡,应用服务器可分布到多个数据中心上,从而提升最终用户的服务等级。
4) 视频流量优化。服务提供商可通过使用网络运营中心的SDN控制器动态地向服务器(接近消耗点)路由及分配高容量的视频传输流量来管理流量。
5) 虚拟插线面板。借助虚拟插线面板,可以通过SDN控制器向交换机流量表中写入静态流表项,以这种可编程的方式可以使位于不同交换机上的端口进行级联。SDN固有的可编程性可确保插线面板的动态性以及流表的快速修改。该虚拟插线面板方法适用于广泛的场景,包括网络监控和安全应用。
ONF(Open Network Foundation,开放式网络基金会)定义的SDN架构共由四个平面组成(如图1所示),即数据平面(Data Plane)、控制平面(Control Plane)、应用平面(Application Plane)以及右侧的控制管理平面(Management&Admin)。
图1 ONF定义的SDN架构
1) 数据平面。由若干网元(Network Elements)构成,每个网元可以包含一个或多个SDN Datapath。每个SDN Datapath是一个逻辑上的网络设备,它没有控制能力,只是单纯用来转发和处理数据,它在逻辑上代表全部或部分的物理资源。如图1所示,一个SDN Datapath包含控制数据平面接口代理(Control-Data-Plane Interface Agent,CDPI Agent)、转发引擎表(Forwarding Engine)和处理功能(Processing Function)三部分。
2)控制平面。即图1所示的SDN控制器(SDN Controller),它是一个逻辑上集中的实体,主要负责两个任务。一是将SDN应用层请求转换到SDN Datapath,二是为SDN应用提供底层网络的抽象模型(可以是状态、事件)。一个SDN控制器包含北向接口代理(Northbound Interfaces Agent,NBI Agent)、SDN控制逻辑(Control Logic)以及控制数据平面接口驱动(CDPI Driver)三部分。SDN控制器只要求逻辑上完整,因此,它可以由多个控制器实例协同组成,也可以是层级式的控制器集群;从地理位置上来讲既可以是所有控制器实例在同一位置,也可以是多个实例分散在不同的位置。
3) 应用平面。由若干SDN应用(SDN Application)构成,SDN应用是用户关注的应用程序,它可以通过北向接口与SDN控制器进行交互,即这些应用能够通过可编程方式把需要请求的网络行为提交给控制器。一个SDN应用可以包含多个北向接口驱动(使用多种不同的北向API),同时,SDN应用也可以对本身的功能进行抽象、封装来对外提供北向代理接口,封装后的接口就形成了更为高级的北向接口。
4) 控制管理平面。该平面着重负责一系列静态的工作,这些工作比较适合在应用、控制、数据平面外实现,比如对网元进行配置、指定SDN Datapath的控制器,同时,负责定义SDN控制器以及SDN应用能控制的范围。
在数据中心中引入SDN架构,带来了网络设备标准化,特别是转发设备,将能在通用的硬件设备基础上实现,同时,网络设备标准化和网络能力开放为网络设备替换和第三方网络应用开发扫清了障碍,网络的建设成本将大大降低;并且,数据中心引入SDN,可使封闭的数据中心网络走向开放,借助开放接口API,可开发出各种网络应用,对攻克数据中心网络运维难题提供了很好的解决方案。
图2 控制器层次化体系架构
控制平面的设备,是连接底层交换设备与上层应用的桥梁。一方面,控制器通过南向接口协议对底层网络交换设备进行集中管理、状态监测、转发决策以处理调度数据平面的流量;另一方面,控制器通过北向接口向上层应用开放多个层次的可编程能力,允许其根据特定的应用场景灵活地制定各种网络策略。将具有基本模块的控制器称为通用控制器[4],通用控制器的层次化体系架构如图2所示,控制器功能被分为基本功能层与网络基础服务层两个层面。
基本功能层主要提供控制器所需要的最基本功能。首先,为便于SDN网络动态灵活地部署,通用控制器应具有协议适配功能,能够方便地添加接口协议。需要包含的接口协议主要分为两类。一是用来与底层交换设备进行信息交互的南向接口协议,二是用于控制平面分布式部署的东西向接口协议。其次,控制器需要提供用于支撑上层应用开发的功能。这些功能主要包括以下4方面内容。1)模块管理:重点完成对控制器中各模块的管理,允许在不停止控制器运行的情况下加载新的应用模块,实现上层业务变化前后底层网络环境的无缝切换;2)事件机制:该模块定义了事件处理相关的操作,包括创建时间、触发事件、事件处理等操作;3)任务日志:该模块提供基本的日志功能,开发者可以用它来快速地调试自己的应用程序,网络管理人员可以用它来高效、便捷地维护SDN网络;4)资源数据库:这个数据库包含底层各种网络资源的实时信息,主要包括交换机资源、主机资源、链路资源等,以方便开发人员查询使用。
对于一个完善的控制器体系架构来说,仅仅实现基本功能层还远远不够。为使开发者能够专注于上层的业务逻辑,提高开发效率,需要在控制器中加入网络基础服务层以提供基础的网络功能。网络基础服务层中的模块作为控制器实现的一部分,可以通过调用基本功能层的接口来实现设备管理、状态监测等一系列功能。这一层涵盖的模块可以有很多,取决于控制器具体的实现,下面介绍5个主要的功能模块。1)交换机管理:控制器从资源数据库中得到底层交换机信息,并将这些信息以更加直观的方式提供给用户以及上层应用服务的开发者;2)主机管理:与交换机管理模块的功能类似,重点负责提取网络中主机的信息;3)拓扑管理:控制器从资源数据库中得到链路、交换机和主机的信息后,就会形成整个网络的拓扑结构图;4)路由、转发策略:提供数据包的转发策略,最简单的策略有根据二层MAC地址转发、根据IP转发数据包,用户也可以在此基础上继续开发来实现自己的转发策略;5)虚网划分:虚网划分可有效利用网络资源,实现网络资源价值的最大化,但出于安全性的考虑,SDN控制器必须能够通过集中控制和自动配置的方式实现对虚拟网络的安全隔离。
OpenFlow协议[5]是基于网络中“流”的概念设计的一种SDN南向接口协议,OpenFlow交换机利用基于安全连接的OpenFlow协议与控制器互相通信。OpenFlow交换机的SDN转发平面的基础设备,是指拥有OpenFlow接口的局域网交换机。
传统网络转发设备的功能架构主要由控制平面和数据平面组成,它们在物理上是紧密耦合的。控制平面通过网络操作系统和底层软件生成、维护交换设备内部的转发表,并实现对网络的配置管理。数据平面通过硬件转发芯片对数据包进行高速转发,基本功能主要有转发决策、背板转发以及输出链路调度等。
不同于传统网络转发设备(如图3所示),应用于SDN中的转发设备将数据平面与控制平面完全解耦,所有数据包的控制策略由远端的控制器通过南向接口协议下发,网络的配置管理同样也由控制器完成,这大大提高了网络管控的效率。交换设备只保留数据平面,专注于数据包的高速转发,降低了交换设备的复杂度[6]。
图3 传统转发设备架构
1) 转发决策。应用最广泛的南向接口协议OpenFlow协议用流表代替了传统网络设备二层和三层转发表,该流表中的每个表项都代表了一种流解析以及相应的处理动作。数据包进入SDN交换机后,先与流表进行匹配查找,若与其中一个表项匹配成功则执行相应处理动作,若无匹配项则上交控制器,由其决定处理决策。这些流程依旧是依赖网络设备内的交换芯片来实现的。
2) 背板转发。目前,SDN应用最广泛的场景是数据中心,其对交换机数据交换速率的要求还是较高的。不过就目前的网络设备来说,设备的速率瓶颈点在交换芯片上,提供满足要求的交换速率并不是问题。
3) 输出链路调度。正常情况下,数据包发往交换机某一端口或准备从交换机某一端口发出时,均需在端口队列中等待处理。而支持QoS的交换机则可能要对报文根据某些字段进行分类以进入有优先级的队列,对各个队列进行队列调度,以及修改报文中的QoS字段以形成整个链路的有机处理流程等。支持OpenFlow协议的SDN交换机对QoS的支持主要有基于流表项设置报文入队列、根据Meter进行限速、基于Counter进行计费、基于Group的Select进行队列调度等。
基于SDN的数据中心网络实现了逻辑和控制的分离,控制逻辑集中的特点解决了当前数据中心网络集中自动化管理、多路径转发、绿色节能的问题;SDN网络能力开放化和虚拟化有效实现了数据中心能力开放、VM的智能部署和迁移、海量虚拟租户的需求。引入SDN的网络可通过部署统一的控制器来收集各数据中心之间的流量需求,进而进行统一的计算和调度、实施带宽的灵活按需分配、最大程度优化网络、提升资源利用率。目前SDN技术尚未成熟,多控制器的控制机制是下一步的研究方向。
参考文献
[1]ONF.Software-Defined Networking:The New Norm for Networks[EB/OL].(2012-03-13)[2014-12-31].https://www.opennetworking.org/images/stories/downloads/white-papers/wp-sdnnewnorm.pdf
[2]Yeganeh S,Tootoonchian A,Ganjali Y.On Scalability of Software-Defined Networking[J].IEEE Commun.Mag.2013,51(2):136-141
[3]Porras P,Shin S,Yegneswaran V,et al.A security enforcement kernel for OpenFlow networks[C]//The 1st Workshop on Hot Topics in Software Defined Networks.New York:ACM Press,2012:121-126
[4]ETSI Industry Spec.Group.Network Function Virtualisation[EB/OL].[2014-12-29].http://portal.etsi.org/portal/server.pt/community/NFV/367
[5]ITU.T Rec.Y.1731.OAM Functions and Mechanisms for Ethernet Based Networks[EB/OL].[2014-12-31].http://www.itu.int/itudoc/itu-t.
[6]IRTF Working Group[EB/OL].[2014-12-31].Interface to the Routing System,available: https://datatracker.ietf.org/wg/irs/charter/.