编者按
随着网络技术的发展,越来越多的分布式应用和不同类型的网络技术被部署到网络上,基于传统IP的网络体系结构正面临越来越多的问题,传统的优势正逐渐成为制约网络技术发展的瓶颈。
由于篇幅较长,文章将分成四篇进行讲解,本文为第二篇,欢迎关注阅读并留言讨论。
- SDN网络性能优化技术
目前SDN网络性能优化可按照体系架构层面大致划分为控制平面的优化技术和数据平面的数据转发性能优化技术。
3.1 SDN控制平面的优化技术
控制平面是整个SDN体系结构的控制中心,负责维护全网状态信息,生成全网视图,根据全网视图制定并下发数据转发规则。控制平面的性能对整个SDN网络的性能有着决定性的影响。然而基于数据平面转发设备数量增多的发展趋势以及流控制力度细化和控制平面的管控功能复杂化的现状,控制平面的性能优化已经势在必行。
通常时延,带宽和吞吐量是评价网络性能的关键指标。对于SDN的控制平面而言,时延表示控制平面成功响应一次流请求事件所花费的时间;带宽表示控制平面与数据平面之间的控制通道的容量,直接决定了控制平面可以连接的交换机的数目,影响着整个SDN网络的可扩展性。吞吐量是指控制器每秒钟能够处理的流请求数量。下面将从上述3个方面对SDN控制平面的性能优化技术进行分析和总结。
3.1.1 单控制器多线程技术
随着SDN网络部署规模的扩大,控制平面经历了由单一控制器平面到分布式控制器平面发展的过程。在单一控制器平面的情况下,多线程技术是降低控制平面时延和提高吞吐量的有效方法。
NOX控制器采用单线程事件循环架构,每秒钟可以处理30k的流初始化事件,同时需要10ms的流安装时间。NOX-MT控制器利用传统的多线程处理技术仅在NOX控制器上做了轻微的修改,将NOX控制器的性能提升了30倍。Maestro控制器为编程人员保留了简单的单线程编程模式,却能够提供管理并行机制的服务。它将并行机制和传统的吞吐量优化技术并用,充分发挥了高性能服务器的多核并行处理能力,实现了控制器性能的大幅提升。有相关文献通过实验验证得出结论:多线程控制器在线程支持上基本可以做到吞吐量的线性增长。Trema,Ryu,NOS等控制器也都通过多线程技术实现了控制器性能的提升。
然而,单一控制器性能的提升已经不足以应对网络规模的扩大,有研究人员已经通过实验证明了随着数据平面交换机数量和终端数量的增加,控制器的吞吐量会呈现下降趋势。同样地,在有限的带宽条件下,控制平面的时延也会随之而大幅下降。另外,在分域的较大规模网络中,单一的集中式控制器与不同域的交换机之间会存在较大的时延,而且随着网络规模的扩大,这种时延也会增加,这些情况都会严重影响控制层面的性能,甚至不可容忍。
同时,基于控制器在整个SDN架构中的核心作用,控制器极易成为网络恶意***的焦点,即便在有效的安全防范措施下,控制器也会出现不可避免的自然故障问题。因此,单点失效问题对于整个SDN网络来说是一个十分严重的安全隐患。
3.1.2 分布式控制平面部署技术
分布式控制平面部署增加了控制平面中控制器的数量,通过多控制器的协同工作,可以大幅提升控制平面的带宽和吞吐量,同时降低控制平面的时延。目前,SDN网络架构中分布式控制平面一般可分为平面式和层级式两种格局。平面式格局是指所有控制器都部署在同一层次的不同域中,每一个控制器都拥有全网状态信息,并实现网络状态的同步更新。层级式格局是指将控制器分为局部控制器和全局控制器两类。全局控制器负责全网信息维护,局部控制器仅掌握区域的网络状态,负责所在区域的交换机的信息交互。
HyperFlow是逻辑集中而物理分布式的SDN控制平面,是平面式控制平面的代表,它在保留集中式控制平面的同时,实现了控制平面的可扩展性。HyperFlow是基于NOX控制器的应用程序,仅对NOX做了较少的改动,通过部署多台控制器来管理OpenFlow交换机,控制器之间需要同步全网络视图,每台控制器只需要管理特定域的交换机。HyperFlow适用于网络状态事件更新频率低于1000次/s的网络。对于网络状态事件更新频率较高的网络,HyperFlow可能出现性能瓶颈。
Kandoo是典型的层级式控制平面。Kandoo控制平面共分为两层,位于底层的控制器之间并不互联。每一个本地控制器拥有各自所在区域的网络视图,负责管理分区内的网络设备。顶层是一个逻辑集中的控制器,它将本地控制器上交的分区网络信息进行汇总,生成全网视图。Kandoo在不修改数据平面的前提条件下实现了良好的可扩展性。实验评估显示,Kandoo大幅度线性降低了控制平面的带宽消耗。
目前分布式控制平面部署过程中所面临的问题可以归纳为负载均衡问题,控制器的容量问题和位置部署问题和控制层面与数据层面的时延缩减技术等三大问题。以下进行总结。
(1)负载均衡问题
SDN分布式控制平面部署容易出现局部过载现象,影响了流请求的处理速度,降低了系统的运行效率。控制器负载均衡问题是影响分布式控制平面性能的关键问题之一。目前控制平面的负载均衡策略研究主要有以下3种方案。
1) 借鉴传统的服务器集群负载均衡策略。控制器集群动态负载均衡策略是目前解决多控制器平面负载均衡问题的一种有效方法。比如有文献[1]提出了一种基于OpenFlow的虚拟化动态负载均衡策略,控制器通过虚拟机管理机制搜集服务器载荷状态,然后根据载荷均衡调度算法计算服务器总载荷量,交换机将会给载荷最低的服务器发送客户请求,实现服务器处理时间的降低和吞吐量的提高。
2) 通过流量重定向方式实现控制平面的负载均衡。例如BalanceFlow[2]通过在交换机包含名为CONTROLLER X行为的流表项将流请求定位给载荷量小的控制器,实现流量重定向,减小过载控制器的负载。
3) 交换机动态迁移方案。控制器负载均衡问题产生的根本原因是由控制器与交换机之间的静态配置关系导致的。如何根据全网运行的实时状态需要,实现控制器与交换机之间的动态配置,是解决负载均衡的核心问题。ElastiCon[3]是一种弹性控制器分布结构,在这种结构中,控制器池会根据流量情况进行动态的增加或删减,交换机迁移协议实现流量载荷在控制器之间的动态转移。ElastiCon通过以下两种机制来实现控制器的负载均衡。首先,通过控制器载荷状态的测量和检测算法定期地进行控制器的载荷均衡,实现交换机到控制器之间的映射机制优化;其次,如果目前的载荷量超过控制器的最大处理能力,那么会通过增加控制器数量来扩大资源池,触发交换机迁移事件,实现交换机对新加入控制器的利用。同理,当实际载荷量下降时,会相应地缩减资源池。
以上3种方法是目前分布式控制平面负载均衡问题的主要解决办法。但是,控制器集群负载均衡策略通过负载均衡器把任务均衡地分配到控制平面的每一个控制器,但负载均衡器的性能极限对控制平面的扩展会有一定的限制性。流量重定向方法会占用交换机中三态内容寻址存储器(TCAM)的资源。相比之下,交换机的动态迁移策略较为合理。
(2)控制器的容量问题和位置部署问题
分布式控制平面的部署还会带来一种开放性的问题,即控制器容量问题和位置部署问题。控制器容量和位置都会给全网的平均时延带来极大的影响。控制器容量是指根据SDN应用场景对网络性能的实际需求而计算出的所需控制器数量。控制器容量是部署和管理SDN的前提和基础。目前,控制器网络容量的研究大都以网络测试为基础,比较通用的方法是排队论和网络微积分。排队论的方法主要是得到网络的平均性能,而网络微积分则强调网络的临界性能。控制器应该部署在哪个特定的位置以达到最优的网络性能目标,包括控制平面的时延,带宽,吞吐量以及SDN网络的可靠性。
目前,控制器位置部署问题的研究可以分为静态部署方案研究和动态管理方案研究两个方向。静态部署方案是在SDN网络拓扑规划时期进行的,根据网络流量和性能需求的预先估算,依据优化算法确定控制器的位置。控制器的位置一旦选定,将固定不变。
文献[4]从控制器位置出发定义了可扩展性控制平面的设计法则。研究者使用一种名为K-critica的算法计算出了控制器数量的最小值和每一个控制器的定位,实现了具有强鲁棒性的控制平面拓扑的构建。另外,还有文献[5]通过简单的SDN网络拓扑实例说明了控制器的数量和定位还会影响控制平面的可靠性。以上这两种静态的SDN网络拓扑部署方案无法适应网络状态的实时变化,很难实现控制平面的持续性能优化。
动态管理方案可通过交换机的迁移来调整各域之间的控制器和交换机的映射关系,从而实现对网络的动态管理和控制平面的持续性能优化。文献[6]提出了一种基于SDN广域网的多控制器动态部署方案,根据网络的实时状态来确定活跃和休眠的控制器数量和定位。实验评估结果显示,该方法有效缩短了控制平面的响应时间。由于控制器容量和位置部署问题通常会涉及到控制平面的可扩展性,时延等多个目标的优化,而这些优化目标之间往往又是相互牵制的,随着数据转发平面设备的增多,这些都将成为控制器位置部署问题的研究难点。
(3)东西向接口问题
目前,SDN网络的部署和应用仍然存在一定的局限性。要实现SDN在大规模网络上的实际应用,单一控制器的处理能力已经远远不能满足大规模网络中的海量数据请求,分布式的控制平面将是SDN网络发展的必然趋势。SDN东西向控制器部署问题是指对于给定一个SDN网络拓扑,接口协议的设计是增强控制平面可扩展性的核心技术,目前相关研究尚处于早期探索阶段,研究工作可以从域内多控制器协同工作和域间多控制器通信两个方面进行探讨。
MSDN[7]是一种大型的逻辑意义上的控制器框架,实现了域内的多控制器协同工作。MSDN由上至下包括负载均衡系统,控制器集群系统和分布式的数据共享系统。当数据流到达该控制器后,首先通过负载均衡系统将其分发至第二层控制器集群系统中的某一个载荷较轻的控制器;然后该控制器再调用第三层的分布式的数据共享系统,查看全网视图,计算数据流的转发路径。MSDN解决了域内控制平面的多控制器协同工作问题,实验验证控制平面的吞吐量和时延都得到了稳步的提升。
SDNi[8]是SDN控制器之间的东西向接口协议,用于实现域之间的流的创建,撤销和更新,以及数据流可达性信息的更新和交换。East-WestBridge[9]是由清华大学毕军教授于2013年首次在学术界提出的“东西向网桥”的概念,受到了研究人员的广泛关注。EastWestBridge的设计中,控制器以全网状态的拓扑形式进行组网,实现了控制器发现,网络视图信息维护和多域网络视图信息交互等功能,并且允许控制器通过标准化插件的形式进行集成,从而实现了异构控制器之间东西向的标准化通信。
东西向协议的发展状况直接关系着SDN大规模部署的进度,东西向接口协议一定会成为未来SDN发展研究的重点问题。
2.3.3 控制层面与数据层面的时延缩减技术
目前,有一些研究人员通过减少控制平面与数据平面交互来达到提高控制平面的吞吐量,降低控制平面时延的性能优化效果。DevoFlow[10]利用OpenFlow的通配符规则,减少了交换机与控制器的交互次数,同时实现了新型机制,仅对重要的QoS数据流进行检测,有效节省了价格昂贵的TCAM的硬件资源。DevoFlow将数据流进行了长短流的划分,允许交换机制定本地路由信息用于直接的短流处理,而只有长流才交付控制器进行处理。DevoFlow通过减少交换机与控制器的交互次数,实现了控制器负载的大幅降低,有效提升了控制器的可用性,但该方法在一定程度上违背了SDN数控分离的设计初衷。
DIFANE[11]提出了“权威交换机”的概念,将整个网络划分成几个区域,每个权威交换机管理一个区域范围的交换机。在权威交换机管理区域内的非权威交换机并不直接与控制器交互,其与控制器交互的工作由权威交换机来间接完成。控制器会事先将权威流规则下发到权威交换机,在每条流的第一个分组到达非权威交换机时,非权威交换机直接将分组转发到所在区域的权威交换机.权威交换机查找其流表缓存的流规则,若有匹配的流规则,权威交换机则直接将分组转发出去而不发回原交换机,并且将流规则下发到入口的非权威交换机。如此,DIFANE保证了尽量把网络的流量保存在数据平面,从而提高分组流处理效率并降低控制器的负载。
基于控制层面与数据层面的时延,一致性问题不可避免,也不容忽视。SDN网络的一致性问题可以分为单一控制器控制逻辑一致性问题和分布式控制器的状态一致性问题两方面。
单一控制器控制逻辑一致性是指控制器与交换机之间因存在传输时延而导致的控制器下发规则的先后顺序问题,这类问题可能会导致网络丢包,服务中断等现象。
DIFANE和DEVOFLOW[12]通过在SDN数据平面增加控制方法来减少控制逻辑一致性问题的产生,然而这样的做法也违背了SDN数控分离的设计宗旨。Onix[13]利用带复制的事务性数据库模式和DHT模式来解决多控制器之间交换全网信息的一致性问题。这两种模式分别适用于网络事件更新缓慢,对稳定性和一致性要求高的网络,以及更新频繁,对网络可用性要求较高的网络。但这项研究并未解决如何分区域部署多控制器的问题。在分布式控制器控制逻辑一致性问题研究方面,多域控制器之间的网络状态信息共享问题将会是一个研究的热点方向。频繁的全网信息同步更新会导致控制器负载的增加。而由于更新速度缓慢引发的控制器状态不一致又会严重影响控制器的性能。如何寻找一个最优的网络状态同步更新频率,或是根据网络状态变化的实际情况实现动态更新,都将给问题的解决带来新的思路。
3.2 SDN数据平面的优化技术
数据平面是SDN三层网络结构的最底层。OpenFlow交换机作为SDN数据平面的转发设备,依据控制平面下发的规则,采用流表结构进行数据包的转发。降低设备复杂度,提高数据转发效率,是数据平面交换设备的专注焦点。下面将分别从流表结构的优化设计,流表空间的高效利用和快速查表与转发3个方面阐述数据平面的优化技术。
3.2.1 流表结构的设计优化
在SDN网络中,网络设备的控制功能与转发功能分离,控制功能全部集中在控制器上,数据转发则由OpenFlow交换机来完成。而OpenFlow交换机进行数据转发的依据就存在于TCAM的流表。OpenFlow协议是目前业界所公认的SDN网络南向接口的事实标准协议,是SDN网络技术的理论基石。南向接口是SDN体系结构中至关重要的核心元素,是控制平面与数据平面实现解耦的关键所在。控制器通过南向接口协议实现链路发现,拓扑管理,策略制定,表项下发等控制技术,对网络中所有的交换机实行集中化的统一管理。
OpenFlow v1.0是标准化组织ONF制定的第一个商业化版本的OpenFlow规范,得到了业界的广泛关注和使用。OpenFlowv1.0的架构原理如图2所示。可以看出,OpenFlow1.0架构中的核心元素是流表,安全通道和OpenFlow协议。
点击添加图片描述(最多60个字)
编辑
图2 OpenFLow 1.0架构图
自OpenFlow v1.0发布以来,OpenFlow协议已经经历了多个版本的演进程。OpenFlow流表也随着版本的演进在不断地变化,其匹配字段也从版本v1.0的12个字段扩展到了v1.5版本的40多个。然而,网络需求日益多样化,网络控制粒度也在不断地细化,这导致了单一流表将存储越来越多的策略。臃肿的流表对于控制平面和硬件性能都是一种挑战。在协议标准版本v1.1发布之后,OpenFlow交换机实现了“流水线+组表”的协议架构。“流水线”是将单一的庞大的流表分解成为多张串联起来的流表,从而形成了“流水线”,数据分组根据匹配情况在多张流表之间进行跳转。若某流表项匹配成功,则将执行该流表项中的指令集。用流水线匹配数据分组,减少了总的流表数目,节省了硬件资源,提高了匹配效率。
同时,由于控制平面可以分步部署对数据平面的策略,实现了处理逻辑的清晰化和SDN的可操作性。OpenFlow v1.1还设计了“组表”。OpenFlow交换机中只存在一个组表,其中包含多个组表项,每个组表项包含多个动作桶。组表解决了当不同数据流对应相同指令集而导致的为每一个数据流添加相同动作而带来的资源浪费问题,提高了数据平面的转发效率。
另外,从OpenFlow v1.3.0开始,用户可以按需自定义匹配字段,增强了协议的可扩展性。OpenFlow v1.3.0中还提出了“漏表项”的概念,附在每张流表尾部用于处理该表中匹配失败的数据分组。“漏表项”的提出,减少了数据平面与控制平面的交互,同样提高了数据平面的转发效率。
数据平面从单一流表到多级流表的技术改进,有效地提升了流表资源的利用率,增加了流表处理的灵活性,但同时也增加了流表匹配时延与数据流的维护和管控的难度。随着SDN的发展,OpenFlow在不断演进,其面临的挑战也日益凸显出来。流表规模的合理化,流表结构的优化,流表过载,快速查表与高速转发等都将成为OpenFlow未来发展所要解决的问题。
3.2.2 流表空间的高效利用
基于数据平面的快速,高效的性能需求,在实际的工业设计中,交换机中流表的存储通常是用一种叫做三态内容寻址存储器(TCAM)实现的。目前市场上常见的硬件OpenFlow交换机中的TCAM最多能容纳8000条表项。TCAM存在价格昂贵,功耗大并且存储空间有限的问题,这个问题极大地限制了交换设备中流表的规模,也限制了SDN的规模。
缓存和压缩是优化管理流表空间的两种常用方法。一种名叫CacheFlow[14]的解决方案是利用缓存技术将高速的硬件交换机和具有较大流表存储空间的软件交换机相结合,实现具有任意大流表空间的简单而快速的虚拟交换机。该缓存架构将少部分的处理大量分组的流表项保存到OpenFlow交换机中,而将大部分并不常用的流表项放在缓存之中,从而解决了流表规模过大的问题,降低了交换机与控制器之间的流量。
文献[15]分析了当前流表存储结构存在的问题,提出了一种以流表项合并为基础的流表存储优化方案。首先设计一套基于待增流表项和已有流表项值的关联度算法来计算二者的关联度,将待增表项与关联度最高的现存表项合并后再写入流表,利用有限的流表物理空间管理更多的数据流,实现了节省流表空间的目标。
文献[16]将流从法则中分离出来,将流依据包域进行分类,共享代表法则。实验证明,该策略比已有的任何分类器代表法都更能够有效节省存储空间,节省的空间量多达几个数量级,同时降低了控制平面的存储和带宽的需求。
文献[17]采用流表共享策略FTS解决交换机流表溢出问题。FTS将面临Table-mis事件的数据包从重载荷交换机分配至轻载荷交换机,避免在热点交换机上频繁触发Packet-in消息,既缓解了流表项溢出问题,同时也降低了控制器与交换机的交互频率,提高了数据平面的转发效率。
AdaFlow[18]通过分析预测流的到达情况和流表的资源使用情况,相应地调整新写入流表项的默认滞留时间配置,达到控制活动流表项数量,避免表项溢出,确保数据平面可用性的目标。
面对流表膨胀,流表存储空间资源紧张的严峻挑战,提高有限的流表存储空间的利用率,实现对流表空间的动态管理,解决流表项压缩与合并,流表项溢出,流表项生存时间最优化等问题,已经成为数据平面性能优化的又一大热点方向。
3.2.3 快速查表与快速转发
CatchFlow[19]系统将硬件交换机和软件处理相结合,高速缓存了存在于TCAM的普通规则,同时依靠软件处理小数量的“缓存缺失”流量。基于对具有重叠模式的规则之间的相关性的考虑,CatchFlow系统并没有盲目地使用现存的缓存替代技术,采用较长的相关链的拼接,存储相关的规则小组,同时保留了规则的原有语义。规则拼接的方法有效利用了TCAM空间,实现了流的高速转发和流表规则的快速更新。
ESWITCH[20]实现了一个理想的交换机体系结构,使用动态模板代码生成器对OpenFlow管道消息进行快速编译并生成高效的机器代码,通过对快速路径的计算提升数据包的转发速度,降低延迟,增强控制平面的可扩展性。
上述数据转发性能优化方案中,对流到达特征的统计分析,要么增加了控制器算法的复杂度要么需要在交换机中附加了控制功能,这样又违背了SDN数控分离的设计初衷;流资源的共享复用增大了控制器负荷和流表动态维护的难度;在大规模网络中,多流表架构的实现还必须依据应用场景的实际状态选择合适技术的实现方案。总言之,以上各种技术均在提高数据平面数据转发能力方面做出了一些有益的尝试。