蔡圣龙
经过50多年的发展,互联网已成为当今社会基础而重要的信息设施,并深深影响着经济、文化、军事等各个领域,远远超出当初单纯的军事、教育科研应用的目的。但是,因为当初采用的TCP/IP架构体系和尽力而为、无QoS保证的交付方式,和今天用户和业务的超大规模增长、接入的异构性以及物联网、社会网络等新应用模式的出现,使得互联网在可扩展性、安全性、服务质量、能耗等方面,越来越不能满足全球网络规模的急剧扩张。
全球网络规模的急剧扩张直接影响国际产业的变革。事实上,不管是美国的《先进制造伙伴计划》、德国的《工业4.0》,还是我国的《中国制造2050》,都是以制造业为核心,应用包括物联网在内的信息网络技术,以实现信息空间和物理空间的高度融合。所以,加快信息化发展,构建未来网络,已成为全球共识。而软件定义网络(Software-defined Network,SDN)已是未来组网技术的研究热点[1],得到了越来越多的关注。
软件定义网络是一种新型的网络结构,其设计理念是将网络的控制平面和数据平面分离,实现数据转发和控制决策的去耦,并实现可编程控制。这种分离和去耦最吸引人的地方在于,高层的路由和流量工程管理更灵活、高效,接入控制更快捷、可靠,且降低了终端成本,同时网管无需在路由器和交换设备上将底层的控制策略翻译成各种配置指令。但是,从目前普遍认同的SDN体系看,以上优势都依赖SDN控制器。一旦控制器出现故障,将导致网络崩溃,这也是软件定义网络反对者最大质疑之处[2]。为此,本文将设计一种拜占庭容差控制器,以解决SDN控制器的单点故障问题。
随着OpenFlow协议的出现[3],特别是McKeown教授在2008年Sigcomm会议上展示的OpenFlow实验网[4],SDN体系逐渐明晰。2011年,德国电信、Google、Microsoft、Facebook、Verizon等几家企业联合成立了ONF(Open Networking Foundation)组织[5],旨在通过产业联盟的方式推动以OpenFlow协议为代表的SDN技术的发展。图1为基于OpenFolw的SDN架构。
图1 基于OpenFlow的SDN架构
图1 中,每个数据转发平面都相当于一个站点,并运行OpenFlow控制器(OpenFlow Controller,NCA)和网络控制应用(Network Control Application,NCA)。全局控制平面由逻辑上集中的应用(如SDN网关、全局流量工程服务器等)组成,并通过各站点的NCA集中控制整个网络。
OpenFlow控制器上部署着流量工程代理(Traffic Engineering Agent,TEA)程序。每台OpenFlow交换机的链路状态信息通过TEA发送给SDN网关;SDN网关汇总后,再发送给流量工程服务器。而流量工程服务器把每条流映射到IP-IP隧道中,并把分配的带宽通过SDN网关发送给OpenFlow控制器,再由OpenFlow控制器安装到OpenFlow交换机的转发表中,从而实现网络流量的路径规划。
此外,根据Google提供的资料[6],采用SDN技术后,流量工程完全依靠SDN/OpenFlow实现,大幅提升了网络资源利用率,平均带宽使用率可达95%。
可见,SDN将控制平面从网络交换机和路由器中的数据平面分离出来,使SDN控制器实现网络拓扑的收集、路由的计算、流表的生成及下发、网络的管理与控制等功能,而网络层设备仅负责流量的转发及策略的执行。转发与控制分离带来了控制逻辑集中。SDN控制器拥有网络的全局静态拓扑、全网的动态转发表信息、全网络的资源利用率、故障状态等,从而也开放了网络能力。通过集中的SDN控制器实现网络资源的统一管理、整合以及虚拟化后,采用规范化的北向接口为上层应用提供按需的网络资源及服务,实现网络能力开放、按需提供。
与传统TCP/TP体系相比,SDN体系具有如下特征。第一,控制与转发分离。转发平面由受控转发的设备组成,转发方式和业务逻辑由运行在分离出去的控制面上的控制应用控制。第二,控制平面与转发平面之间具有开放接口。SDN为控制平面提供开放可编程接口。通过这种方式,控制应用只需要关注自身逻辑,而不需要关注底层更多的实现细节。第三,逻辑上的集中控制。逻辑上集中的控制平面可以控制多个转发面设备,即控制整个物理网络,因而可以获得全局的网络状态视图,并根据全局网络状态视图实现对网络的优化控制。
SDN技术性能优势都依赖控制器,一旦数据转发平面与控制平面间消息传递不可靠,将有可能导致网络崩溃。因此,需要考虑控制器对数据转发平面和控制面的容差问题,而这类问题往往可用拜占庭将军问题(Byzantine General Problems)描述[7-10]。
拜占庭将军问题,是可信计算中的容错原理。该原理以数据备份作为基础实现系统容错,使得系统在一个或多个系统部件工作异常的情况下仍然能够正常工作。对于SDN体系,当控制平面收到各个数据转发平面节点不一致指令时,一种可能性是给系统另外增加一个仲裁的节点,且该节点有最高的决定权。如果仲裁的节点失效,整个系统就失效。控制平面与数据转发平面间的信息交互式一致问题,可通过多次简单的重复拜占庭将军问题来解决,使得每个数据转发平面的值都达成一致。
按照Lamport对拜占庭将军问题求解的结果,为了容忍f个错误的复制品,复制品集合的大小n≥3f+1。一旦错误复制品的数量超过了错误容忍的门限值f,系统将不能再正常工作。
按照Lamport对拜占庭将军问题求解的结果,本文拟采用状态机复制技术[10],设计一种SDN的拜占庭容错控制器。
拜占庭容错的关键在于对复制消息的共识,而基于OpenFlow的拜占庭共识机制如图2所示。
图2 基于OpenFlow的拜占庭共识机制
图2 中,达成拜占庭共识需要包括如下步骤:
(1)REQUEST:通过多播方式,客户端向每个复制站点发出申请;
(2)PRE-PREPARE:一旦主站点收到客服端请求,便分配一个序列号给主站点,并将PREPREPARE消息传递给其他复制站点;
(3)PREPARE:一旦第i个复制站点收到RE-PREPARE消息,它便把PREPARE消息传递给其他复制站点,并将RE-PREPARE和PREPARE消息添加到日志中。一旦第i个复制站点发出了PREPARE消息,它将等到来自其他复制站点规定的2f个PREPARE消息,而这些消息将用于创建法定证书;
(4)COMMIT:一旦所有站点(包括主站点)均收到规定的PREPARE消息,便向其他站点发送COMMIT消息,确保申请阶段消息复制的一致性。复制站点一直收集COMMIT消息,直到达到规定的2f+1个COMMIT消息;
(5)REPLY:一旦申请得到一个复制站点应答,便对客户端发回响应,而客户端需要在等待f+1个一样的申请后,才能视其为正确的行为。
根据以上机制,可设计一种拜占庭容错控制器的通信流模型,如图3所示。图3中,控制器将交换机和业务代理看成实体作为客户端。
图3 拜占庭容错控制器的通信流模型
作为未来网络的主要技术,软件定义网络具有高效、灵活的特点,其采用数据转发平面与控制平面分离的机理,可以适应今后大数据业务的发展。但可以看到,控制器单点故障等问题依然是SDN技术成熟需要面对的。基于此,本文利用拜占庭容错技术,通过分析拜占庭共识机制,基于OpenFlow协议设计了一种拜占庭容错控制器,下一步将开展相关实验,以进一步验证设计的有效性。
[1] 张朝昆,崔勇,吴建平.软件定义网络(SDN)研究进展[J].软件学报,2015(01):62-81.ZHANG Chao-kun,CUI Yong,WU Jian-ping.Research Progress on Software Defined Networking(SDN)[J].Journal of Software,2015(01):62-81.
[2] Gergely P,Laszlo M,Zolt´ an Lajos ´Kis.Removing Roadblocks from SDN:Openflow Software Switch Performance on Intel DPDK[C].In Software Defined Networks(EWSDN),2013:62-67.
[3] 黄韬,刘江,刘韵洁.软件定义网络核心原理与应用实践[J].通信学报,2015(03):95.HUANG Tao,LIU Jiang,LIU Yun-jie.Software Definition Network Core Principle and Application Practice[J].Journal of Communication,2015(03):95.
[4] Mckeown N,Anderson T,Balakrishnan H,et al.OpenFlow:Enabling Innovation in Campus Networks[C].Acm Sigcomm Computer Communication Review,2008(38):69-74.
[5] 王蒙蒙,刘建伟,陈杰.软件定义网络:安全模型、机制及研究进展[J].软件学报,2016(04):969-992.WANG Meng-meng,LIU Jian-wei,CHEN Jie.Software Definition Network:Security Model,Mechanism and Research Progress[J].Journal of Software,2016(04):969-992.
[6] Jain S,Kumar A,Mandal S,et al.WAN[C].Acm Sigcomm,2013,43(04):3-14.
[7] 杨磊,黄浩,李仁发等.P2P存储系统拜占庭容错机制研究[J].计算机应用研究,2009(01):4-8.YANG Lei,HUANG Hao,LI Ren-fa,et al.Study on Byzantine Tolerance Mechanism of P2P Storage System[J].Computer Application Research,2009(01):4-8.
[8] 陈柳,周伟.面向服务计算的拜占庭容错方案及其正确性证明[J].计算机应用,2006(02):505-510.CHEN Liu,ZHOU Wei.The Byzantine Fault-tolerant Scheme for Service-oriented Computing and Its Correctness[J].Computer Application,2006(02):505-510.
[9] 肖爱斌,杨孟飞,刘波.星载计算机拜占庭容错设计与证[J].空间控制技术与应用,2008(08):17-22.XIAO Ai-bin,YANG Meng-fei,LIU Bo.Design and Verification of Byzantine Fault-tolerant Design[J].Space Control Technology and Application,2008(08):17-22.
[10] 陈柳,周伟.拜占庭容错中的视图变更算法[J].计算机与现代化,2013(10):13-15.CHEN Liu,ZHOU Wei.View Change Algorithm in Byzantine Fault Tolerance[J].Computer and Modernization,2013(10):13-15.