回顾网络创新的发展历史,在20世纪90年代中期认为“推动网络的创新,需要在一个简单的硬件
数据通路
上编程”,即
动态网络
。它的问题在于
隔离性
、性能、
复杂度
。20世纪90年代后期认为,“为了推动网络创新,我们需要底层的
数据通道
是可编程的”,也即
网络处理器
。它的问题在于加剧了数据通道底层的复杂度。事实上在网络领域,我们一直以来没有分清一个简单通用的硬件底层与一个开放的上层
编程环境
之间的界限。之前的尝试往往犯以下错误:
利用分层的思想,SDN将数据与控制
相分离
。在控制层,包括具有逻辑中心化和可编程的控制器,可掌握全局
网络信息
,方便运营商和科研
人员管理
配置网络和部署新协议等。在
数据层
,包括哑的交换机(与传统的
二层交换机
不同,专指用于转发数据的设备),仅提供简单的
数据转发
功能,可以快速处理匹配的
数据包
,适应流量日益增长的需求。两层之间采用开放的统一接口(如OpenFlow等)进行交互。控制器通过
标准接口
向交换机下发统一标准规则,交换机仅需按照这些规则执行相应的动作即可
。
SDN的整体架构由下到上(由南到北)分为数据平面、
控制平面
和应用平面,具体如图1-1所示。其中,数据平面由交换机等网络通用硬件组成,各个网络设备之间通过不同规则形成的SDN
数据通路
连接;控制平面包含了逻辑上为中心的
SDN控制器
,它掌握着全局网络信息,负责各种转发规则的控制;应用平面包含着各种基于SDN的
网络应用
,用户无需关心底层细节就可以编程、部署新应用。
控制平面与数据平面之间通过SDN控制数据平面接口(control-data-plane interface,简称CDPI)进行通信,它具有统一的通信标准,主要负责将控制器中的转发规则下发至转发设备,最主要应用的是OpenFlow协议。控制平面与应用平面之间通过SDN北向接口(northbound interface,简称NBI)进行通信,而NBI并非统一标准,它允许用户根据自身需求定制开发各种网络管理应用。
在SDN中,数据转发与规则控制相分离,交换机将转发规则的
控制权
交由控制器负责,而它仅根据控制器下发的规则对数据包进行转发。为了避免交换机与控制器频繁交互,双方约定的规则是基于流而并非基于每个数据包的。SDN数据平面
相关技术
主要体二十一世纪二十年代的交换机和转发规则上。
SDN交换机的数据
转发方式
大体分为硬件和软件两种。硬件方式相比软件方式具有更快的速度,但灵活性会有所降低。为了使硬件能够更加灵活地进行数据转发操作,Bosshart等人提出了RMT模型,该模型实现了一个可重新配置的匹配表,它允许在流水线阶段支持任意宽度和深度的流表。从结构上看,理想的RMT模型是由
解析器
、多个逻辑匹配部件以及可配置
输出队列
组成。具体的
可配置性
表现为:通过修改解析器来增加域定义,修改逻辑匹配部件的匹配表来完成新域的匹配,修改逻辑匹配部件的动作集来实现新的动作,修改队列规则来产生新的队列。所有更新操作都通过解析器完成,无需修改硬件,只需在芯片设计时留出可配置接口即可,实现了硬件对数据的灵活处理。
另一种硬件灵活处理技术Flow
Adapter
采用交换机分层的方式来实现多表流水线业务。FlowAdapter交换机分为三层,顶层是软件数据平面,它可以通过更新来支持任何新的协议;底层是硬件数据平面,它相对固定但转发效率较高;中层是FlowAdapter平面,它负责软件数据平面和硬件数据平面间的通信。当控制器下发规则时,软件数据平面将其存储并形成M段流表,由于这些规则相对灵活,不能全部由交换机直接转化成相应转发动作,因此可利用FlowAdapter将规则进行转换,即将相对灵活的M段流表转换成能够被硬件所识别的N段流表。这就解决了传统交换机与控制器之间多表
流水线技术
不兼容的问题。
与硬件方式不同,软件的
处理速度
低于硬件,但软件方式可以提升转发规则处理的灵活性。利用交换机
CPU
或
NP
处理转发规则可以避免硬件灵活性差的问题。由于NP专门用来处理网络任务,因此在网络处理方面,NP略强于CPU。
在传统网络中,转发规则的更新可能会出现不一致现象,SDN也如此。针对这种问题的一种解决方案是将配置细节抽象至较高层次以便统一更新。一般采用两段提交的方式来更新规则。首先,当规则需要更新时,控制器询问每个交换机是否处理完对应旧规则的流,确认后对处理完毕的所有交换机进行规则更新;之后当所有交换机都更新完毕时才真正完成更新,否则撤销之前所有的更新操作。然而,这种方式需要等待旧规则的流全部处理完毕后才能进行规则更新,会造成规则空间被占用的情况。增量式一致性
更新算法
可以解决上述问题,该算法将规则更新分多轮进行,每一轮都采用二段提交方式更新一个子集,这样可以节省规则空间,达到
更新时间
与规则空间的折中。
控制平面关键技术
控制器是控制平面的核心部件,也是整个SDN
体系结构
中的逻辑中心。随着SDN
网络规模
的扩展,单一控制器结构的SDN网络处理能力受限,遇到了
性能瓶颈
,因此需要对控制器进行扩展。当前存在两种控制器的扩展方式:一种是提高自身控制器处理能力,另一种是采用多控制器方式。
但在多数情况下,大规模网络仅仅依靠单控制器并行处理的方式来解决性能问题是远远不够的,更多的是采用多控制器扩展的方式来优化SDN网络。控制器一般可采用两种方式进行扩展:一种是扁平控制方式,另一种是层次控制方式。(如图2所示)
在扁平控制方式中,各控制器放置于不同的区域,分管不同的网络设备,各控制器地位平等,逻辑上都掌握着全网信息,依靠东西向接口进行通信,当
网络拓扑
发生变化时,所有控制器将同步更新,而交换机仅需调整与控制器间的
地址映射
即可,因此扁平控制方式对数据平面的影响很小。在层次控制方式中,控制器分为局部控制器和全局控制器,局部控制器管理各自区域的网络设备,仅掌握本区域的
网络状态
,而全局控制器管理各局部控制器,掌握着全网状态,局部控制器间的交互也通过全局控制器来完成。
SDN是当前网络领域最热门和最具发展前途的技术之一。鉴于SDN巨大的
发展潜力
,学术界深入研究了
数据层
及控制层的
关键技术
,并将SDN成功地应用到
企业网
和数据中心等各个领域
。
SDN所做的事是将网络设备上的
控制权
分离出来,由集中的控制器管理,无须依赖底层网络设备,屏蔽了底层网络设备的差异。而控制权是完全开放的,用户可以自定义任何想实现的
网络路由
和传输规则策略,从而更加灵活和智能。进行SDN改造后,无需对网络中每个节点的路由器反复进行配置,网络中的设备本身就是自动化连通的,只需要在使用时定义好简单的网络规则即可。因此,如果路由器自身内置的协议不符合用户的需求,可以通过编程的方式对其进行修改,以实现更好的
数据交换
性能。这样,网络设备用户便可以像升级、安装软件一样对网络架构进行修改,满足用户对整个网络架构进行调整、扩容或升级的需求,而底层的交换机、路由器等硬件设备则无需替换,节省大量成本的同时,网络架构的迭代周期也将大大缩短。
总之,SDN具有传统网络无法比拟的优势:首先,
数据控制
解
耦合
使得应用升级与设备更新换代
相互独立
,加快了新应用的快速部署;其次,网络抽象简化了
网络模型
,将运营商从繁杂的
网络管理
中解放出来,能够更加灵活地控制网络;最后,控制的逻辑中心化使用户和运营商等可以通过控制器获取全局
网络信息
,从而优化网络,提升网络性能
。
SDN 是当前最热门的
网络技术
之一,它解放了
手工操作
,减少了配置错误,易于统一快速部署。它被
MIT
列为“改变世界的十大创新技术之一”。SDN相关
技术研究
在全世界范围内也迅速开展,成为近年来的研究热点。2013年,SIGCOMM会议收录了多篇相关文章,甚至将SDN列为专题来研讨,带动了SDN
相关研究
的蓬勃发展