陈杰建
(江西方兴科技股份有限公司 江西 上饶 334000)
在SDN的网络结构中,北向接口协议混乱,南向接口协议较为成熟,最典型的南向接口协议是OpenFlow协议,OpenFlow交换机利用基于安全连接的OpenFlow协议与控制器通信。流表作为核心概念,是一种针对数据流的一些策略表项的集合,主要用于数据分组匹配头域,用于统计流表匹配情况的计数器,与匹配完成后的动作集合共同组成OpenFlow的流表项。在OpenFlow交换机中,N张流表构成了流表流水线,每一个数据分组都需要通过流水线进行处理。
量子保密通信网络系统架构设计如图1所示,整体分为发送方、信道和接收方三大部分,其中,信道包括量子传输信道和经典信道,不管是发送方还是接收方,最核心的是量子密钥分发单元,该单元由信号源、调制器和探测器组成,互为通信的两方需要通过量子密钥分发模块对量子态进行分发、测量、基矢对比后,得到筛后密钥[1],随后对原始密钥进行纠错以及密性放大,最终得到无条件安全的密钥后,将密钥暂时存储。通信双方进行通信时就会利用次密钥对经典信息进行一次一密的加密操作,然后通过经典信道将密文发送给接收方,接收方收到密文后利用密钥进行解密,从而完成信息的安全传输。
图1 量子保密通信网络系统架构
树形和环形网络模型中的量子密钥分配方案中,树形网络方案使用了一个可信控制中心,树形的网络结构如图2所示。网络中的任意合法用户Ci(i=1,2,……,n)都可以与可信控制中心进行密钥协商。可信控制中心会产生一个经过编码的随机量子比特序列,量子比特串生成后,可信控制中心将其发送到无源光纤网络中[2],网络任意用户Ci收到信号后记录调制结果,通过这样的过程,让可信控制中心与用户Ci之间协商分配了一个密钥qi。
图2 树形网络结构
环形网络架构同样包含了一个可信控制中心,可信控制中心会首先产生一个经过编码的量子随机比特序列,量子比特序列经环形网传输,网上任意一个接受者Ci使用调制器对接收到的信号进行调制,比特序列通过最后一个接受者后返回到控制中心。可信控制中心采用与最初发送比特串时相同的测量基进行测量,并将测量结果在公开信道上与Ci讨论,最终获得密钥qi。环形网络结构如图3所示。
图3 环形网络结构
在量子保密通信网络的分层模型架构中,比较有影响力的量子保密通信网络有DARPA量子保密通信网络、欧洲的骨干通信网络、东京的量子保密通信网络和我国的天地一体化量子保密通信网络,它们之间在设计上基本都包含了应用层、密钥管理层和量子层,如图4所示[3]。
图4 量子保密通信网络分层模型
量子层包括激光器、单光子探测器、中继器等光学设备,它在经典信道的辅助下通过量子密钥分发协商出密钥,并上传给密钥管理层,密钥管理层则需要通过可信中继选择路由,使任意两个通信节点之间可建立密钥;应用层主要负责各种通信业务的接入,如语音、视频、文件传输等,通过密钥管理层建立的密钥进行保密通信。
目前的量子保密通信网络的量子密钥分发系统由基于光纤的量子密钥分发方案、高速自由空间的量子密钥分发方案和基于量子纠缠的量子密钥分发方案组成,三种方案混合使用,每一种方案都有自身的硬件基础,不同的厂商生产的设备存在一定差异,每一种方案都有自身的调制和配置方法,这些差异并不利于量子保密通信网络的管理和拓展,SDN技术则可以解决此类问题,因为不管是哪一种方案,其目的都是在于通信双方协商密钥,因此可以使用SDN控制器来管理所有的量子密钥分发设备[4]。
在量子通信网络分层模型的基础上,结合SDN架构模型的控制平面和转发平面分离的特点,提出了基于SDN的量子保密通信网络模型,如图5所示。
控制器部分由大型服务器集群构成,它们承载着各个地域网络的拓扑、路由、密钥等信息的统计和计算,管控着各自领域的网络,它们处于整个网络的核心地位。考虑到显示量子保密通信网络可能是跨多城市的复杂矩形网络,因此在控制器部分设计时分为多个控制器集群云,它们分布在不同的城市,每一个控制器的节点模型由链路及密钥发现模块、拓扑计算模块、路由计算模块等组成。
密钥发现模块主要负责发现和维护网络中的网络链接状态,链路及密钥发现模块通过LLDP协议进行链路及密钥的发现,模块所在的控制器层会下发封装了LLDP链路发现包的packetOut包给dpid为01的中继节点[5];dpid为01的中继节点接收到这个报文后,会通过自己所有的端口将这个报文广播出去;dpid为02的中继节点收到dpid01发送的包,会将报文封装成packetIn包上传给控制器;控制器收到报文后,解析报文,就会得到dpid01~dpid02有一条直连链路,并且同时获悉了此条链路上的密钥信息;同样,控制器层也可以下发LLDP链路发现包到dpid02中继节点,最终通过dpid01中继节点上传到控制器,由此来发现dpid02~dpid01之间的直连链路。
拓扑计算模块主要负责创建或更新整个网络的拓扑形态,其主要的工作流程为:发起线程、更新拓扑、计算拓扑路径、将所有相连的链路置于同一个簇群众、遍历所有簇。
通过上述步骤,拓扑计算模块完成了拓扑形态的更新,路由计算模块将根据通信双方需要选择合适的路由完成通信。
图5 基于SDN的量子保密通信网络架构模型
中继部分的节点模型由OpenFlow代理层、密钥管理层、量子层组成。量子层主要由量子密钥分发设备组成,通过量子密钥分发协议协商产生量子密钥,然后将产生的密钥资源通过安全通道上传给密钥管理层,密钥管理层中有一密钥池,用于暂时存储密钥。密钥管理层中的计算单元负责将密钥池中存储的密钥数据信息上传给OpenFlow代理层。OpenFlow代理层是中继节点的核心组成,拓展了OpenFlow交换机,既有传统OpenFlow交换机的功能,又可以起到控制器和密钥管理层通信的功能。在现有的条件下,SDN控制器无法直接与量子密钥分发设备进行通信,也无法直接获取其产生存储在密钥管理层密钥池中的密钥信息,只可以通过OpenFlow代理层代为传达。具体的通信过程如图6所示[6]。
图6 中继节点工作流程
OpenFlow代理层获悉密钥信息后,会将密钥信息作为链路信息的一部分封装到packetIn包里上传给控制器,控制器便获悉了整个网络的密钥分布情况[7]。当终端节点第一次将报文发送到中继节点时,由于OpenFlow代理层中并没有能够匹配的流表,中继节点会将数据报文封装成packetIn包上传给控制器,控制器解析报文,根据源地址和目的地址,通过路由算法决策出最佳路由,下发流表到路由经过的每一个中继节点。
终端节点的具体形式是多样的,可以是固定终端,也可以是移动智能终端,还可以是无线热点终端,不管是哪一种类型的终端,它们的节点模型都与传统网络中的节点模型大致相同,有负责业务接入的应用层,负责建立连接的传输层、负责网络寻址的网络层,负责传输数据帧的数据链路层。为了与中继节点协商密钥,在终端节点设计量子层,主要通过量子密钥分发设备构成。
不同的地域之间网络想要进行通信,需要借助Super控制器,Super控制器节点和控制器节点的模型相同,均具有链路发现模块、拓扑计算模块和路由计算模块,不过这些模块都针对各地区网络的边缘节点工作。
仿真采用的软件是SDN控制器Floodlight、轻量级软件定义网络、测试平台Mininet,并在Linux系统下部署。Floodlight是一款基于Java语言的开源SDN控制器,支持OpenFlow协议,其稳定性和易用性受到了SDN研究人员的广泛好评;Mininet是一个可以在有限资源的普通电脑上建立大规模SDN原型网络系统的仿真工具,该系统由虚拟终端节点、OpenFlow交换机组成,可以模拟仿真任何拓扑形态,具有一定的灵活性、可移植性、可扩展性与真实性 。
首先,利用Python语言编写一个网络拓扑,设计13个终端节点、30个中继节点,设计各节点之间的链路,并为每一条链路的带宽、延时、密钥量都进行初始化设置,最后执行Mininet提供的接口命令[9]。
利用抓包工具wireshake,分析控制器和中继节点之间的通信过程,在控制器端获取全网的终端节点信息和中继节点信息,在Mininet上模拟生成的密钥信息会被控制器节点捕获,设定的链路信息及链路上剩余密钥的数量与控制器端搜集到的链路信息及链路上的密钥信息,两者一致[10]。
本文在提出了给予SDN量子保密通信网络架构模型的基础上,为网络结构设计了四种节点模型,分别为控制器节点、中继节点、终端节点和Super控制器节点,介绍了SDN的仿真软件,利用仿真软件可以实现对整个网络中的终端节点、中继节点、链路以及密钥信息的监控。通过仿真结果可以看出,基于SDN的量子保密通信网络具有一定的可行性。