关建峰,牛晓彤,高先明,延志伟
1.北京邮电大学计算机学院(国家示范性软件学院),北京 100876 2.军事科学院系统工程研究院,北京 100142 3.中国互联网络信息中心,北京 100190
区块链技术作为“十三五”国家信息化规划中明确需要加强的前沿技术以及“新基建”信息基础设施的代表技术[1],对于我国抢占新一代信息技术的主导权具有重要的战略意义和广阔的应用前景。从本质上讲,区块链是一种分布式共享数据库,其使用散列以链式结构将区块组合起来,使得其数据存储具有去中心化、去信任化、不可篡改、可追溯、公开透明、集体维护等特征[2]。当前区块链作为一种应用层技术也在逐渐向网络基础设施方向发展[3],在域间路由、域名系统、公钥基础设施等领域崭露头角[4]。伴随着网络技术逐渐向软件化、虚拟化、可编程化等方向发展,网络安全也面临着新挑战,而区块链技术为解决这些安全问题提供了新方向。从技术层面而言,区块链是由多个参与方之间基于密码学、点对点通信、共识算法、智能合约、跨链通信等进行数据存储处理的技术组合。其中,共识算法是区块链乃至整个分布式系统领域的关键技术,决定了区块链系统(分布式系统)中各节点对需要进行处理的数据以何种机制达成一致,是近年来分布式系统领域研究的热点[5-6]。
作为当前网络技术发展的一个重要方向,软件定义网络SDN (Software Defined Network)解耦了控制平面和数据平面,提出集中网络管控模式,将传统网络架构分拆为应用、控制、转发分离的架构,强调通过软件方式来定义网络行为,提升网络控制调度能力,其不但适用于专用网络提升网络部署维护的灵活性,还为广域网网络优化改进提供了新思路和新手段,其架构具有普适性。然而,当前SDN部署经验表明,将控制平面物理集中在可编程软件组件中,存在可扩展性、可用性、可靠性等限制[7],容易导致单点失效问题,给网络安全带来极大挑战[8], 尤其是当控制器被劫持而恶意操纵网络或交换机被劫持而发送错误状态信息时,网络的安全运行将会受到严重威胁[9]。为此,出现一系列控制器集群方案通过状态或功能复制来解决这些问题[10]。这些方案往往利用共识算法,将相关数据复制给参与逻辑控制器集群的其它成员以达成一致。当某个控制器出现故障时,集群中另一个副本能够接管并继续为未来应用程序请求提供服务。然而,引入控制器集群实现逻辑集中的网络视图则面临着如何在多控制器间实现共识的问题。
共识算法可分为经典分布式共识机制和区块链共识机制两大类:经典分布式共识机制面向整个分布式领域的共识问题,其在区块链应用场景中可适用于联盟链和私有链;而区块链共识机制主要为应用于公有链系统而设计。
近年来,已有众多针对共识机制的综述类论文,文献[11]围绕拜占庭容错技术,对实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)[12]以及其改进协议进行分类介绍。文献[13]侧重于研究经典分布式共识算法,并介绍了基于经典分布式共识算法实现的区块链应用。文献[14]针对区块链的可扩展性,分析了多种共识机制的交易处理能力以及可扩展性。文献[15]对Bitcoin、Ouroboros、ByzCoin 和Omniledger 等这四种典型区块链共识机制进行了分析。文献[5]给出了区块链共识机制的主流模型,并根据选主策略对共识机制进行分类,按时间顺序梳理和讨论了区块链共识机制的发展过程。文献[16]侧重于研究区块链共识机制,对共识机制进行了分类并介绍了各类经典共识机制的流程。文献[17]研究了区块链共识机制的分类问题,对网络模型、敌手模型等协议假设进行了介绍。本文则主要针对SDN 网络的分布式控制器集群中的共识机制进行研究,本节对共识算法研究现状进行介绍,为后续多控制器共识机制研究进展奠定基础。
经典分布式共识算法可以根据故障模型、网络模型、部署方式等进行分类。根据假设条件中的故障模型的不同,可以分为崩溃容错(Crush Fault Tolerance,CFT)类共识算法和拜占庭容错类(Byzantine Fault Tolerance,BFT)共识算法;根据网络模型的不同,可以分为同步网络共识算法、异步网络共识算法、部分同步网络共识算法;根据敌手模型的不同,可以分为敌手模型为n=2f+1、n=3f+1、n=5f+1 等的共识算法;根据算法一致性的强弱,可以分为强一致性共识、弱(最终)一致性共识。
对经典分布式共识算法的研究可追溯到1975年Akkoyunlu 等提出了计算机领域的两军问题[18]。1982年,Lamport 等提出了拜占庭将军问题[19],开启了对拜占庭容错技术的研究。1998年,Lamport提出了Paxos 算法[20],该算法作为CFT 类共识算法,对宕机节点具有容错能力,在不超过1/2 的节点发生崩溃的情况下,保证诚实节点能够对数据达成共识。Raft 算法[21]基于Paxos 算法进行了改进,通过将共识问题分解为领导者选举、日志复制和安全三个子问题,提供了与Paxos 算法相同的功能和性能,但更容易理解和应用。1999年,Castro 和Liskov 提出了PBFT 协议,首次将拜占庭协议的复杂度从指数级降低到多项式级别,使拜占庭协议在分布式系统中被应用成为可能。同时,针对PBFT 算法的主节点正常共识流程的通信复杂度高、计算开销大等问题,涌现了一系列PBFT 改进优化算法,主要包括Query/Update[22]、Hybrid/Quorum[23]、Zyzzava[24]、Zeno[25]、Zzyzx[26]等。针对PBFT 算法在主节点发生拜占庭故障情况下,系统性能降低甚至丧失活性(活性是指在有限的时间内,分布式系统会对请求做出回复)的问题,出现了Aardvark[27]、Spinning[28]、Prime[29]、RBFT(Redundant Byzantine Fault Tolerance)[30]等共 识算法,对拜占庭错误场景进行优化,减轻拜占庭主节点对系统的安全性和活性的影响。2018年,Abraham、Gueta 和Malkhi 提出了Hot-Stuff算法[31],利用门限签名、并行流水线处理和线性视图转换等技术改进PBFT,极大提高了分布式共识算法的效率。此外,Golan-Gueta 等提出的可扩展拜占庭容错协议(Scalable Byzantine Fault Tolerance,SBFT)[32]主要解决拜占庭容错协议在应用到区块链中的去中心化和扩容问题,SBFT 也使用门限签名技术降低通信复杂度以及其它节点验证消息时的计算开销。
上述经典分布式算法均假设网络模型为同步或者部分同步网络,2016年MILLER 等提出了HoneyBadger BFT[33],该算法是首个实用的异步BFT类非确定性共识算法,可以在没有任何时间假设的前提下保证系统活性,能够在分布于广域网的上百个节点中每秒对上万笔交易达成共识。2018年,Abraham等提出了验证的异步拜占庭一致算法(Validated Asynchronous Byzantine Agreement,VABA)[34],VABA 基于随机预言模型,在每次共识过程中采用多个并行的领导者提议,并从中随机选取一个作为最终结果,从而有效抵御适应性敌手的攻击。
随着区块链技术的兴起,共识机制也进入了区块链时代,已有的经典分布式共识算法被应用于区块链中,针对区块链系统对共识算法的需求,一系列用于区块链的共识算法陆续出现。
区块链共识算法主要包括证明类共识算法POX和POX+BFT 混合共识。其中,证明类共识算法即POX 类共识算法,利用自身具有的某种资源对区块链记账权进行竞争。例如,在基于工作量证明机制(Proof of Work,PoW)的共识算法中,节点利用自身算力资源竞争记账权,典型算法包括经典算法包括比特币[35]、以太坊[36]、Bitcoin-NG[37]等。这类算法存在算力浪费、交易吞吐量低、交易延迟高等缺陷,并可能面临双花攻击和自私挖矿等安全问题;而在基于股权证明机制(Proof of Stake,PoS)的共识算法中,节点利用自身股权(代币)竞争记账权,主要运行于匿名的点对点(P2P)网络中,一般具有加密货币的激励机制且去中心化程度较高,典型算法包括Peercoin[38]、DPOS[39]、Nextcoin[40]、Casper TFG[41]、Ouroboros[42]等。
POX+BFT 混合类共识将PoX 与经典BFT 类算法组合起来取长补短,吸取前者高扩展性、低消息复杂度的优点以及后者低交易时延、高交易吞吐量的优点,从而提高区块链性能。经典方案包括Tendermint[43]、peerCensus[44]、ByzCoin[45]、Algorand[46]、Casper FFG[47]、Thunderella[48]。
共识算法种类繁多、性能各异,在应用于SDN多控制器共识中如何选择、如何部署是亟待研究的一个问题。
表 1 对共识算法进行了汇总,对各种共识算法的容错能力、去中心化程度等特性进行了展示,在选择共识算法时应根据应用场景需求,结合共识算法的多项特性进行权衡。例如,在为SDN 网络的分布式控制器集群选择共识算法时,应该考虑到SDN网络对于安全、性能、可扩展性等的要求,选择或重新设计出最适应需求的共识算法。
软件定义网络SDN 是由美国斯坦福大学CLean State 课题研究组提出的一种新型网络创新架构,是网络虚拟化(Network Functions Virtualization,NFV)的一种实现方式。SDN 概念是由两种互相补充的方案来驱动:一是IETF 提出转发和控制元素分离(ForCES)[49],其侧重于用灵活的硬件组件构建转发模块;二是McKeown 等提出的OpenFlow[50],侧重于在现有网络上构建用于试验新协议的网络基础平台。这两者在数据路径构造、协议灵活性以及协议粒度等方面存在差异,但是其核心都是将控制平面与数据平分离,将控制功能移至逻辑集中的控制平面,从而数据平面设备只需要简单的可编程网元。SDN 将传统网络中的控制和转发功能分离,其控制平面通常由多个控制器组成,每个控制器控制不同的可编程网元。不同控制器之间,利用分布式系统的共识算法实现网络状态信息复制,从而保证各控制器中存储的网络状态信息的一致性,抵御潜在的控制器崩溃故障或拜占庭故障。
表1 共识算法汇总表Table 1 Summary of consensus mechanisms
现有SDN 多控制器共识设计多采用控制器崩溃故障容错类共识算法,可分为强一致性算法或最终一致性算法。其中,强一致性共识算法可以获得最新的网络状态信息,但同步延迟高,而最终一致性共识算法虽然具有较低的同步延迟,但可能难以得到最新更新的网络状态信息。当前以ODL (OpenDayLight)[51]、ONOS(Open Network Operating System)[52]为代表的控制器集群架构主要是基于Paxos 变形算法(如Raft 等),通过选取Leader 节点和Follower 节点,由Leader 节点向Follower 节点通告信息而达到全网状态的一致,属于强一致。
强一致性协议使控制器虽然同步延迟大,但相比于最终一致性协议,更有利于获取最新的网络状态信息。例如Onix[53]和GRACE[54]利用Paxos 实现多个控制器之间的网络状态复制,ODL Clustering 多控制器架构和ONOS 利用Raft 共识协议实现多控制器之间的网络状态复制,而Ravana 则采用更强的一致性保证[55]。最终一致性协议使控制器具有较低的同步延迟,但相对于强一致性而言,可能无法获取最新的网络状态信息。DISCO[56]基于面向消息的通信总线,为广域网和受限网络提供了分布式控制平面。控制器管理自己的网域,并基于AMQP(Advanced Message Queuing Protocol)与其它控制器进行通信。HyperFlow[57]利用发布-订阅消息传递实现多个控制器之间的网络状态复制。另外,LegoSDN[58]侧重于解决由于软件错误导致的控制器宕机故障。Akella等人[59]解决了带内网络的可用性问题并集合了泛洪、全局快照等分布式系统概念。Muqaddas 等[60]对运行Raft 共识协议的多个控制器之间的流量进行了量化,并总结出控制器间的流量规模随着网络规模的增长而增长的关系。
图1 SDN 多控制器CFT 类共识机制研究进展Fig.1 Research progress of CFT consensus mechanism in SDN multi-controller layer
Yang Zhang[61]等针对多控制器间的Raft 共识协议,提出控制器之间的共识执行依赖于数据平面进行通讯,而数据平面又依赖控制平面建立规则来实现可编程网元之间的数据包转发,这样的循环依赖将无法保证控制器之间的全连接,并提出了由此产生的两种错误场景,即主节点频繁更换、无法选出主节点以及相应的解决办法。Ermin Sakic[62]等则对集群的性能(响应时间和可用性)进行了研究,提出集群规模越大,则集群的最坏响应时间越低、系统可用性越高。此外,其还提出了一种watchdog机制,用于控制器集群发生软件故障时的快速恢复。
Venâncio 等[63]针对单一集中控制器在可用性和可扩展性方面存在的问题,以及多控制器维护一致性易增加网络负载的问题,提出了一种基于虚拟网络功能VNF(Virtual Network Function)的共识机制,该机制在控制器间利用Paxos 实现强一致性。图 1 展示了近年来SDN 多控制器CFT 类共识机制的研究进展,早期较为知名的控制层面设计主要采用CFT 类共识,后续的众多研究针对控制层面共识问题的安全以及性能问题进行探讨。
多控制器之间的不一致性严重影响着SDN 应用的性能,一致性越差则应用性能越差[64],并且还会导致严重问题如转发环路、黑洞(black holes)、网络孤立与不可达等问题[65],因此分布式控制平面的共识机制是关乎SDN 网络安全性以及性能的关键技术,已经受到了越来越多的关注。前面所分析的多控制器共识算法仅能抵御CFT 类故障,而无法应对控制器或交换机的恶意行为即BFT 类故障,并且当攻击者劫持Leader 后很容易操纵网络[66]。为此,近年来研究重点转移到在SDN 控制平面中引入BFT类共识机制[68-77],这类机制多是在多控制器间引入BFT 类共识算法,但直接应用BFT 共识会加重控制器间流量负载、扩展交换机功能、增加SDN 控制平面压力等。为此,当前研究逐渐向自适应一致性机制(Adaptive Consistency)转变[67]。
2014年,Li 等[68]针对集中控制面存在的安全挑战,提出了一种基于BFT 的安全SDN 架构,其每个交换设备由多个基于云的控制器实例进行管理,并基于该架构设计了一种有效的控制器分配算法。2016年,ElDefrawy 等[69]开发了一个能够抵御控制平面和数据平面发生拜占庭故障的弹性SDN 控制器层原型,其在开源SDN 模拟软件上的实验结果表明:BFT 机制降低了控制器处理流表的性能,在有4 个控制器节点的情况下可以容忍1 个节点发生BFT 类故障。2017年,Mohan 等[70]针对直接采用BFT 类机制容易导致交换机过载的问题(每个交换机需要映射到3f+1 个控制器来抵御f个控制器故障),提出了一种主备控制器映射方案,在该方案中每个交换机只需要映射到f+1 个主控制器和f个备份控制器即可抵御f个控制器的拜占庭攻击。2018年,Sridharan等[71]针对过载问题则提出了一种基于博弈论的高效恶意控制器检测方法,该方法随机选择交换机来检查转发规则的一致性,并将其建模为Stackelberg 博弈问题,通过解决对应优化问题来获取有效的随机策略。此外,Yuan 等[72]针对恶意交换机通过给控制器发送错误信息而误导控制器的问题,设计并实现了一个可以支持BFT 共识机制的控制原型系统,该系统可以容忍交换机故障,确保控制器输入的正确性。2018年,Sakic 等[73]提出了一种能够容忍不可用性和拜占庭式故障的自适应SDN 控制平面框架MORPH,通过将分布式SDN 控制平面的控制器实例建模为一组复制状态机(Replicated State Machine,RSM)来处理拜占庭式故障,能够区分和定位故障控制器实例,并在检测到故障后适当地重新配置控制平面来重构控制器与交换机之间的连接。此外,Sakic 等[74]认为基于RSM 的BFT 机制易引入额外开销,导致其可扩展性较差,为此提出了一种“基于组的一致执行”方法来提升BFT 类分布式SDN 控制面的全局吞吐量。同时,Sakic 等[75]针对BFT 类共识中控制器间信息传输及消息识别匹配消耗过多CPU 负载、引发额外延迟、增加重配置时间等问题,提出了一种基于P4 的P4BFT 机制,引入处理节点执行匹配功能,并通过优化处理节点的选择来减少控制平面负载和重配置时间。
Zhi 等[76]提出了BQSV(Byzantine Quorum System with Verification function)方法,结合SDN 控制层集群和Byzantine Quorum 系统,确保集群在存在恶意控制器的情况下也能提供正确的网络拓扑视图。最近,Moazzeni 等[77]提出了一种可靠容错的分布式SDN 方法即BIRDSDN(Byzantine-Resilient Improved Reliable Distributed Software-Defined Networks),该方法在控制器集群直接采用组通信方式来检测CFT 和BFT 类故障,并引入快速修复机制选择新的控制器来接管受影响的交换机。图 2 展示了近年来SDN 多控制器BFT 类共识机制的研究进展,研究者们将BFT 类共识机制引入控制层面,并针对采用BFT 类共识的控制层的安全或者性能问题进行讨论,并提出了众多具有自适应性的解决方案,2.3 节对该类自适应性多控制器共识机制进行了更加深入的介绍。
图2 SDN 多控制器BFT 类共识机制研究进展Fig.2 Research progress of BFT consensus mechanism in SDN multi-controller layer
表2 自适应SDN 多控制器BFT 类共识机制对比Table 2 Comparison of adaptive BFT consensus mechanisms in multi-controller layer
当前多控制器的共识机制在实际部署中仍以RAFT 为代表的CFT 类共识机制为主,无法应对控制器与交换机的BFT 类故障。改进型的BFT 类共识机制则存在可扩展性问题,增加了控制平台的负载和控制器的处理时延,严重影响了上层应用的性能(依据文献[60]的研究,相关性能约降低2 倍)。自适应性多控制器共识机制旨在基于SDN 网络具体需求,结合实时状态适应性地对相关网络配置进行调整,从而改善控制层引入BFT 类共识机制后存在的系统可扩展性差以及吞吐量低等问题。
表 2 对具有自适应性的SDN 控制器层BFT 类共识机制设计方案进行了汇总,针对分析了其研究动机和主要思想。
控制器之间需要对控制器本地网络事件、控制器向数据平面下发的流表、网络拓扑等数据进行共享,使得各控制器能够了解全网视图,并基于此完成正常的网络控制功能。
在当前的众多控制器集群设计中,由控制器运行共识协议对网络状态数据达成共识,使得各节点按照相同顺序接收(执行)其所接收到的消息中包含的网络状态更改动作,即保证各控制器了解到的全网视图的相同性,并对参与共识的部分宕机节点或拜占庭节点实现具有容错性,从而实现具有高安全性和活性的数据共享(同步)。共识机制种类众多、特性各异,但并不存在一个适用于任何场景的最佳共识机制,因此在为控制器层的数据共享选择共识机制时,应根据待共享数据的需求,在安全性、可扩展性、吞吐量、时延等性能指标之间进行 权衡。
然而,若要沿用当前的“控制器节点即共识节点”的设计,不论采用何种共识协议,都存在着如下问题:
(1)共识网络的部署灵活性受限:共识机制能够保障在各节点的数据共享过程,系统对参与共识的部分节点具有宕机容错或者拜占庭容错能力,共识节点数量的增加有利于增强共识的安全性,能够容忍更多数量的节点发生拜占庭故障,但也会导致系统性能的降低,因此可以考虑为安全性要求更高的共享数据部署更多的共识节点。然而,由于控制器层控制节点的数量固定且数量较少,如果由控制节点运行共识协议,难以灵活控制共识网络的节点数量。
(2)控制器运行共识机制的额外开销:控制器作为SDN 网络的枢纽,需要承担路由决策、网络管理等众多任务,当采用安全性较高但占用计算资源较大的多阶段共识机制来完成控制器之间的数据共享时,将会大大增加控制器负载,甚至影响控制器的路由决策等固有功能的顺利执行。
针对3.1 节中提到的问题,可考虑利用第三方系统来完成待共享网络数据的收集和同步工作,从而为SDN 网络控制层提供数据同步服务。该服务作为保障SDN 网络控制层正常运行的关键服务,要求第三方系统能够保证其所提供的数据共享服务的安全、可信性,即不仅能够保障单点故障、部分节点故障下服务的正常提供,保障各控制器能够及时掌握正确且相同的网络视图,还能为服务建立去中心化的信任基础。
区块链技术的出现为解决SDN 网络控制层数据共享的安全可信问题提供了一种新的思路,由于区块链具有去中心化、去信任化、不可篡改、可追溯、公开透明、集体维护等特性,因此其能够作为第三方完成待共享网络数据的收集、共识(包括序号分配、交互、序号确认等阶段)、响应工作,解决上述控制层数据共享存在的问题。
SDN 控制器利用区块链系统作为第三方提供数据共享服务的流程图如图3 所示,各控制器将网络数据打包成数据共享请求,并发送至区块链系统中,由区块链主节点将一定数量的请求打包成区块,再依据所采用的共识机制的交互流程,在各区块链节点之间达成对区块的共识,最终由区块链节点将达成共识的区块发送至各个控制器,各控制器学习区块中包含的网络信息,了解其余控制器的网络事件以及下发的流表命令等信息。
上述区块链系统能够为SDN 网络控制层提供安全、可信、部署灵活的数据共享服务,该设计的具体优势表现在如下几点:
(1)安全可靠:对于运行区块链共识算法的区块链系统,安全性主要体现在可以抵御短距离攻击、长距离攻击、币龄累积、女巫攻击等安全攻击;对于运行经典分布式共识算法的区块链系统,安全性主要体现在系统对节点故障的容错能力,即当部分节点自身发生故障或受到外界恶意劫持时,区块链系统仍然能够作为可靠的第三方向SDN 控制器层提供可靠的数据共享服务。
(2)可信:在区块链系统中,多个参与方共同构建与维护区块链账本,区块是否能达成共识由参与共识的节点共同决定,而不是集中在少数几个节点上。区块链作为数据共享服务的第三方,能够保障自身系统的(部分)去中心化、(部分)去信任化。
(3)部署灵活性、高可伸缩性:控制器层中不同类型的待共享数据对于数据共享服务提供者的安全性、可扩展性、吞吐量、时延等性能指标的要求可能不同。利用当今区块链的多链技术,可方便地部署节点数量不同、运行共识机制不同的子链,从而为需求不同的网络数据提供定制化的数据共享服务。区块链作为数据共享服务的第三方,能够保障自身系统部署和运维的灵活性、高可伸缩性。
图3 SDN 控制器数据共享流程图Fig.3 Flow chart of SDN controller data sharing
(4)便于监督控制器异常行为:区块链的分布式存储和独特的链式数据存储结构也能够保障所存储数据的不可篡改性、可追溯性,当控制器在数据共享过程中表现出恶意行为时,便于通过区块链账本进行可信的责任追究。另外,利用当前的智能合约技术,也方便对账本数据进行实时监控,针对可能威胁SDN 网络安全的控制器数据共享行为,触发一系列的安全防御和及时恢复操作。
SDN 网络作为一种重要的网络架构,其应用层、控制层、数据层均受到众多安全挑战[78],对控制器、交换机、网络管理员等实体的行为也缺乏监管机制,即当网络实体出现异常行为时难以做到及时检测和恢复,SDN 网络架构难以对其所提供的网络服务的安全可信提供保障。区块链技术的出现不仅为控制器层的数据共享提供了解决方案,也为解决整个SDN 网络架构中的安全可信问题提供了一种新的思路。
利用区块链的去中心化、去信任化、不可篡改、可追溯、公开透明、集体维护等特性,可以用其为分布式控制器层构建起信任基础。如图4 所示,可将区块链作为SDN 网络的可信基础设施,为SDN网络提供各种可信任的安全服务,4.3 节对可信区块链基础设施适合采取的部署结构进行了介绍。
第一层是区块链设施层,包括共识机制、区块链数据结构、P2P 通信、智能合约、激励机制、密码学、区块索引存储等,由不同节点共同维护区块链账本。
图4 可信SDN 网络架构Fig.4 Architecture of trusted SDN network
第二层是区块链服务层,将不同区块链服务进行打包,向上层提供简单易用的接口,包括的服务有数据共享服务、身份认证服务、网络管理员行为记录和追溯服务、控制器行为记录和追溯服务、BaaS 等,可根据SDN 网络可信需求的发展提供更多的服务。3.2 节对这些可信安全服务进行了更加详细的介绍。
第三层是SDN 网络层,控制器在加入网络时,通过区块链进行身份认证与注册,不同控制器之间通过区块链对网络拓扑等数据进行共享。通过区块链的控制器行为记录和追溯服务,对于控制器集群中部分节点的恶意行为能够快速找到错误源,并进行矫正。通过网络管理员行为记录和追溯服务,方便进行网络管理员行为监管以及责任追究。
最上层是SDN 应用层,由于是建立在安全可信SDN 网络上的,用户、应用服务提供商,以及控制器和交换机等网络实体的身份都能够被验证,从而保障服务的安全可信任性。
利用区块链技术可为SDN 网络构建信任基础设施,4.1 节对该信任设施的架构进行了总体介绍,该节对架构中区块链服务层能够为SDN 网络提供的可信安全服务进行更加详细的描述,并对各类服务的相关研究进行了介绍,3.2 节中已对数据共享服务进行了详细介绍,这里不再赘述。
(1)身份认证服务
当SDN 网络管理员需要对区块链系统或者控制器层进行相关操作,如对区块链系统进行数据访问以及合约部署,对控制器层进行状态查询或系统参数配置等,该类操作涉及数据保密性以及系统安全,因此需要对管理员身份进行认证,从而实现数据保护和行为审计。另外,控制器以及交换机作为SDN网络中的重要设施,其安全接入关乎SDN 网络的正常运行和安全问题,因此需要对其身份进行认证,从而实现对SDN 网络的安全保护。
传统的PKI 能够为身份认证提供服务,但近年来,针对PKI 的攻击频繁发生,例如被劫持的CA颁发恶意证书,吊销的证书仍然受到用户信任。区块链系统能够为身份认证提供去中心化的PKI 服务,从而杜绝众多针对传统PKI 的网络攻击,利用区块链的公开透明性也能够保障公开证书的可验证性。
(2)BaaS
智能合约为用户提供编程接口,使用户能够将实现各类复杂业务的逻辑以智能合约代码的形式方便地部署在区块链系统上,而无需重新修改区块链系统底层代码,从而提供即时的区块链服务,即BaaS(Blockchain as a Service)。
SDN 控制器层的网络管理员可以根据新的业务需求编写智能合约并部署,由合约对区块链中记录的数据进行监控,并触发一系列针对区块链或SDN控制器层的操作和服务。已有研究已经讨论过如何将即时区块链服务用于应对针对SDN 网络的安全攻击问题,例如,ZA El Houda[79]等提出了一个名为Cochain-SC 的基于区块链的架构,该架构针对典型DDoS 攻击,设计了两层DDoS 攻击抵御方案(域内和域间DDoS 抵御),利用以太坊的智能合约,促进SDN 不同域的控制器之间进行协作,减少跨域转发数据包的成本,避免放大攻击流量,实现就近阻止攻击。
(3)行为记录和追溯服务
在SDN 网络中,控制器、交换机以及网络管理员等实体的行为影响着SDN 网络的整体运行和安全问题,利用区块链技术能够为SDN 网络提供对这些实体的行为记录和追溯服务,网络管理员行为记录和追溯能够提供对网络管理员的行为监督和责任追查服务;控制器行为记录和追溯服务能够保证控制器发布的流表规则的有效性、可追溯性、不可篡改性,从而保障SDN 网络的安全可信。已有研究[80]针对分布式SDN 中的流表验证问题,提出了一种基于区块链技术的新架构DistBlockNet,该架构利用区块链技术更新流表,从而可对流规则表的版本进行安全验证,以增强物联网的安全性、灵活性和可扩展性。
另外,未来投入使用的SDN 架构应由各运营商共同维护,因此涉及运营商之间的相互信任和费用审计问题,基于区块链提供的行为记录和追溯服务,能够方便快捷地解决SDN 网络在多运营商参与不可信环境下的信任问题和审计问题。已有的一些研究已经讨论过将区块链技术用于解决该问题,研究[81]讨论了SDN 体系结构中存在的安全挑战,并建议在SDN 中部署区块链用于构建多运营商之间的相互信任,并提高数据标准化和抗故障能力;研究[82]在区块链机制的基础上,通过在数据平面(交换机层)添加监控元,并采用ECDSA 签名算法和分布式密钥生成协议,设计了一个基于区块链的SDN 控制器分布式审计系统,为多运营商参与的控制器集群提供无第三方参与的费用记录。
在上述分析中提到的研究都致力于将区块链技术应用于SDN 网络中的不同部分,但都并没有考虑到将区块链系统作为基础设施,为SDN 网络提供全方位的安全可信服务。综上分析,可以看到利用区块链作为安全可信基础设施,能够有效提升SDN 应对各种网络问题的抵御能力,提升控制器在节点管理、状态监控、设备配置、用户管理、网络业务等方面的安全能力,从而为上层应用提供一个安全可信的环境。
区块链能够作为基础设施为SDN 网络提供全方位的服务,但在实际部署中,需要考虑区块链的性能瓶颈和可扩展性问题,另外,不同服务对于安全性、可扩展性、交易处理能力等的要求也不同。为此,如图5 所示,可选择多链结构作为安全可信区块链基础设施的部署结构,每条子链负责一种服务,不同子链之间的交易处理、数据存储、区块共识相互隔离,由主链负责子链之间的跨链通信,从而实现服务之间的互相隔离且可交互。不同的子链可以部署在完全互不相交的节点集合上,也可以部署在相交的节点集合上,即同一节点可以负责维护不同的子链,第二种部署方式实际为金链盟开源工作组协作打造的联盟链平台FISCO BCOS[83]的多群组设计思想,在保障不同子链之间隔离性的同时,降低了系统的运维复杂度。可为负责不同服务的子链选择不同的共识机制,并根据需求设计不同的机制以提高区块链性能;当SDN 网络的安全需求增加时,只需扩展新的子链即可提供新的服务,使该架构具有高可扩展性。
图5 区块链部署结构——多链Fig.5 Deployment architecture of blockchain system—MultiChain
本文对SDN 网络中的用于实现控制器之间数据共享的共识机制设计进行了综述,本文提出的基于SDN 可信基础设施能够为SDN 网络提供控制器间数据共享等多种安全可信服务,但将该设施进行落地应用时,仍然存在一些挑战。例如,由于当前的共识算法种类众多、特性各异,且并不存在一个适用于任何场景的共识算法,因此需要针对SDN 网络对于不同服务的需求,在安全性、可扩展性、吞吐量、时延等指标之间进行权衡,对区块链节点间运行的共识算法、区块链节点数量等系统部署细节进行实验分析和具体决策。另外,由于当前的用于SDN 网络控制器之间沟通联系的东西向协议并没有定义统一标准,因此在上链数据的数据结构设计、区块链相关操作设计等方面需要考虑适用性。
利益冲突声明所有作者声明不存在利益冲突关系。