SDN的研究进展
72JournalofSoftware软件学报V01.26,No.1,January2015层过多的参与,控制层可直接通过并发策略组合的方式来解决【681,并可利用细粒度锁(fine—grainedlocking)确保组合策略无冲突发生.HFT[691采用了层次策略方案,它将并发策略分解,组织成树的形式,树的每个节点都可独立形成转发规则.HFT首先对每个节点进行自定义冲突处理操作,这样,整个冲突处理过程就转化成利用自定义冲突处理规则逆向搜索树的过程,从而解决了并发策略一致性问题.
2.可用性
规则备份可以提升网络的可用性.RuleBrieks[。70】针对规则备份提出一种高可用性方案.在RuleBricks中,不同的规则对应不同颜色的“砖块”,“砖块”的大小由通配符的地址空间大小决定,其中,最上层的“砖块”对应的规则是目前的活跃规则.如果因为网络节点失效导致某种颜色的“砖块”消失,则下面的备份“砖块”会显现出来成为新的活跃规则.通过对“砖块”的设定、选取和操作的优化,RuleBricks可以有效限制流的重分配和规则爆炸的问题.
控制器作为SDN的核心处理节点,需要处理来自交换机的大量请求,而过重的负载会影响SDN的可用性.利用分布式控制器可以平衡负载,提升SDN的整体性能.特别地,对于层次控制器(如Kandoo[521)来说,利用局部控制器承担交换机的多数请求,全局控制器则可以更好地为用户提供服务.然而,分布式控制器架构亦存在可用性问题.由于每个控制器需要处理不同的交换机,网络流量分布不均匀,导致某些控制器可用性降低.针对该问题,ElastiCon[71】采用负载窗口的方式来动态调整各控制器间的流量.ElastiCon周期性地检查负载窗口,当负载窗口的总负荷发生改变时,将动态扩充或压缩控制器池,以适应当前实际需求.如果负载超过控制器池最大值时,则需要另外增加新的控制器.以保证网络的可用性.
减少交换机的请求次数,可以提升控制层的可用性.DIFANE[72】架构旨在解决数据平面转发规则粒度过细和对集中控制依赖的问题.在DIFNAE中,对于SDN传统的流处理都交给了数据层,如交换机不再将每流的第1个数据包传到控制器等.控制器的任务仅是划分规则,并将规则主动下发到数据层面.因此,DIFANE可适应大规模的网络拓扑结构和处理更多的转发规则.DevoFlow[’73】贝0按粒度将数据流分成长短流,并在转发器上建立一些特定规则,使数据层能够直接处理短流,仅有少量的长流才交由控制层处理.根据Zipf定律【741,长流数量远少于短流数量.因此,DevoFlow采用的策略可以最大程度地降低控制器负载,提升控制器的可用性.
3.容错性
与传统的互联网类似,SDN同样面临着网络节点或链路失效的问题.然而,SDN控制器可以通过全网信息快速恢复失效节点,具有较强的容错能力.网络节点恢复收敛过程如图7所示:①当某台交换机失效时,其他交换机察觉出变化;②交换机将变化情况通知控制器;③控制器根据所掌握的信息,计算出需要恢复的规则;④将更新发送给数据平面中受到影响的网络元素;⑤数据平面中受影响的元素分别更新流表信息.
媸机匝圈;
Fig.7冒一gConvergenceonanodeorlinkfailure图7失效节点或链路的收敛