池亚平 程峥华 张亮亮
1. 北京电子科技学院,北京市 100070
2. 中国科学技术大学,合肥市 230027
3. 西安电子科技大学,西安市 710071
量子保密通信技术是一种利用量子力学原理实现量子密钥分发(Quantum Key Distribution,QKD)[1]的通信技术。 近年来,随着QKD 技术的不断发展,量子保密通信从理论研究逐步走向应用,量子通信也已经从点到点的小型专用通信系统发展到面向实际应用的量子保密通信网络[2][3]。 在构建更大规模QKD 网络中,路由算法与路由策略控制成为量子保密通信网络研究领域的研究热点之一。
目前国内外对QKD 网络的路由方案研究较少,并且现有QKD 网络路由方案普遍采用经典网络路由算法——开放式最短路径优先(Open Shortest Path First,OSPF)。 其网络状态参数基本包含剩余密钥量、密钥生成速率和跳数等,对于量子密钥资源的负载均衡大多采用动态路由设计思想,如文献[4]针对分布式可信中继QKD网络中的路由问题,提出一种动态路由方案,但分布式网络环境下每个节点只能获取邻接节点的信息,实现的是局部最优,可能导致所选的中继路径非全局相对最优相对最短,并不能满足QKD 网络中有效利用量子密钥资源的需求。
软件定义网络(Software Defined Networking,SDN)[5]是新一代网络架构,核心在于实现控制平面与数据平面分离,控制器平面可以中心化地管控网络资源,包括综合感知量子保密通信网络密钥资源状态,统筹调度全网的量子密钥资源,实现密钥资源的平衡和有效利用。 如文献[6]设计了一种基于SDN 的量子保密通信网络架构模型,提出了一种以跳数和链路密钥为权重度量的、基于SDN 的动态路由算法,实现了密钥资源的有效利用和负载均衡。
但是,在这种基于SDN 架构的集中式QKD网络中,SDN 控制器与中继路径上的每一节点交互。 随着共享密钥服务请求的增加,控制器负载逐步增大,同时节点交换机的流表开销也会随之加重,造成流表下发和流表更新不及时等问题,共享密钥服务仍按照之前中继路径进行转发,无法及时有效地调度,甚至可能导致某一链路密钥资源的消耗殆尽,进而中继传输中止,共享密钥服务失败,量子密钥资源被严重浪费。
分段路由(Segment Routing,SR)[7][8][9]技术可有效解决上述问题。 这一技术基于源路由机制,可借助SDN 集中控制的特点,通过改进型路由算法实现流量负载均衡、降低流表资源开销[10]。 文献[11]采用分段路由转发技术,结合SDN 结构,提出了一种基于受限K 最短路径(Constrained K-Shortest Pathes,CKSP)算法。 该算法采用分段路由技术进行负载均衡,在K 条最短路径中计算一条同时满足预期网路最大流和最小化链路利用率方差的最优路径,增大了网络吞吐量,平滑了流量分布,并降低了网络总丢包率。 文献[12]针对当前SDN 网络在应对大量数据流时造成的流表利用率低,转发响应较慢以及当前网络调度算法容易造成网络局部拥塞和负载不均衡等问题,提出了一种基于分段路由的多路径调度算法SRMF,该文献通过实验验证了分段路由转发技术在多种网络拓扑下较一般转发技术在流表项开销方面有明显优势。
本文在研究SDN 和分段路由技术相关研究成果的基础上,针对可信中继QKD 网络的路由优化问题,综合应用SDN 的全局控制优势和分段路由源路由特点,提出一种可应用于QKD 网络的路由选择方案,实现量子密钥资源的均衡利用问题。
目前将点对点QKD 网络扩展为多用户QKD 网络的组网方式有三种:光交换/分束器方案、量子中继方案和可信中继方案[13]。 光交换/分束器方案利用光路交换机或光分束器,实现多用户QKD 链路切换,从而实现多用户间的密钥分发,但由于量子信号衰减带来的传输距离限制,该方式无法进行远距离传输,所以不适用于大规模的组网。 量子中继方案利用量子纠缠原理实现量子态的存储和转发,理论上可以实现远距离的密钥分发,但目前该方案需要的量子存储器或量子纠错技术仍不成熟,暂未达到实用的程度。 可信中继方案通过将多个点对点的QKD 链路连接起来以实现端到端的密钥分发,从而实现远距离的密钥分发,是目前全球QKD 网络中广泛采用的使用解决方案。
本文面向可信中继QKD 网络研究路由方案,基于可信中继的QKD 网络基本思想是利用一次一密算法(One-Time Pad,OTP)[14][15]实现非相邻节点间密钥的传递,并将得到的共享密钥分发给用户,这个过程称为“逐跳”加密机制,图1 显示了使用这一机制在两个用户之间交换密钥的基本原理。
图1 密钥中继原理图
如图1 所示,假设两个邻近节点QKD 系统生成的共享密钥为Ki,此时Alice 想将生成的量子密钥传递给Bob,实现远距离密钥共享,其密钥中继路径为Alice—>node(1)—>node(2)—>…—>node(i) —>…—>Bob,中继步骤如下:
(1)Alice 与node(1)基于BB84 等量子密钥分发协议生成共享量子密钥KA;
(2)node(1)使用OTP 算法将K1作为KA的保护密钥,加密传递给node(2);
(3)node(2)用共享密钥K1对收到的KA⊕K1进行异或解密,得到KA;
(4)然后重复步骤(2)(3),将KA加密并传递给下一个节点进行解密,直到Bob 得到KA后,整个过程结束。 至此Alice 和Bob 都获得了量子密钥KA。
基于可信中继的QKD 网络由量子密钥生产层不断为相邻节点生成量子密钥,再以密钥中继的方式,为任意网络节点提供共享密钥,因此在选择密钥中继路径时,应选择路径长度短的中继路径避免无意义密钥消耗。
分段路由技术由源节点为网络中的数据包指定路径,并通过特定算法将业务路径编码成一个有序的段(Segment)列表封装到数据包首部来显式标识路径,中间节点只负责快速的数据转发。 分段路由与SDN 结合,使用MPLS 标签栈来存储分段路由中一条数据转发路径的段列表,其工作机制如下:
在源交换机将路径Segment 列表以MPLS标签栈压入到数据包首部,根据各节点标签转发流表项匹配栈顶标签和标签出栈,最终将数据包送至目的交换机。 中间节点不必为所有可能经过它们的流维持状态信息,所有的状态信息以标签栈的形式存在于数据包中。
(1) 网络初始化阶段,SDN 控制器通过LLDP(Link Layer Discovery Protocol,链路发现协议)协议进行链路发现,根据这一协议搜集的信息确定和管理网络拓扑结构,为各节点分配全局分段路由标签Node SID。 将这一网络拓扑结构抽象为有向图邻接关系,确定各网络节点的标签转发表。
(2)当一数据流到达时,由于没有流表匹配,触发PACKET_IN 进入控制器,控制器为数据流计算出一条路径,进而将这条路径转换成由全局路由标签SID 组成的标签栈,下发至源交换机,数据流匹配该流表项并被打上对应标签,后续传输通过匹配标签转发表转发,直到恢复为IP 数据包到达目的交换机。
如图2 所示,网络初始化时,SDN 控制器会给每一个交换节点分配全局路由标签SID。 h1到h2 的数据包PKT 由SDN 控制器计算得到转发路径为P(S1—>S2—>S3—>S5—>S6),然后源节点S1 将P 这条路径通过段列表的形式封装到数据包PKT 头部,即标签106、105、103、102入栈。 在节点S1 处,开始依次匹配交换机节点的标签转发表进行转发,如PKT 在S1 处根据栈顶标签102 查询到其对应标签转发表为(102 pop, out 2),将其PKT 的102 标签弹出转发至S2,数据包PKT 到达S2,再根据栈顶标签103 查询其对应标签转发表项为(103 pop, out 2),同样将其PKT 的103 标签弹出再进行转发至S3,后续交换节点的匹配转发操作同样按此过程进行,直至PKT 到达目的节点S6,数据包的转发过程结束。
图2 分段路由转发过程
本文所提出的网络架构运用于量子密钥分发网络,该网络的SDN 架构由数据层、控制层及应用层构成,将SDN 这种技术应用于量子密钥分发网络,其中的量子密钥中继层和量子密钥交换层对应于SDN 架构的数据层,实现任意节点间的密钥中继以提供端到端的共享密钥,在这里基于可信中继的QKD 网络的量子密钥交换层不再具有路由选路功能,而是将制定路由策略的功能上交到SDN 架构的控制层。
本文提出的软件定义的QKD 网络架构如图3 所示。 该网络架构包括产生量子密钥的量子密钥生成节点和具有密钥中继功能的量子密钥中继节点以及SDN+SR 控制器三部分。 其中,控制器属于控制层,量子密钥中继节点属于数据层,量子密钥生成节点属于量子层。
图3 SDN-SR 的QKD 网络架构图
控制层是该架构的核心部分,主要功能是通过OpenFlow 协议(一种网络通信协议),主动收集数据层中各密钥节点中储存的密钥池资源信息,为数据层任意网络节点间密钥的安全共享提供密钥资源充足的密钥中继路径。 本文的控制平面包括以下几个模块:
(1)标签转发表构建模块:根据SDN 控制器初始化阶段确定的网络拓扑信息,通过一级流表构建分段路由的标签转发表流表项,供密钥中继使用。
(2)密钥信息采集模块:根据OFP_PORT_STATS_REQUEST 和OFP_PORT_STATS_REPLY消息获取QKD 数据层存储的量子层密钥资源信息,将其获取到的全网量子密钥剩余量加权作为链路权重供路径计算模块使用。
(3)中继路径计算模块:主要计算从源节点到目的节点的中继路径,并将计算得到的中继路径转化为Node SID 构成的分段路由段列表,然后将段列表以标签压栈流表项下发至源中继节点或中间中继节点。
数据层由实际的数据通信节点与经典数据信道组成,当有密钥交换业务时,数据层将使用量子层的点到点量子密钥来完成共享密钥的安全端到端中继传输。
量子层主要是由量子系统的设备,量子链路与量子密钥池构成,相邻节点间基于BB84、B92等量子密钥分发协议,产生QKD 网络密钥资源,并将其存储在量子密钥池,用于实现数据层多用户间密钥的安全传递与共享。
SDN 控制层通过南向接口协议获取数据层网络信息,根据收集到的量子网络的密钥资源信息计算出最佳密钥中继路径,再将密钥数据包信息和转发规则流表下发至该条密钥中继路径的源节点。 在量子密钥分发网络的运用分段路由技术,控制器无需与路径中每一节点进行交互,而只需与该路径的源节点进行交互,对路径进行编码后向源节点一次下发包含所有分段标签信息的标签栈流表,再利用标签操作进行这条路径上的数据转发工作,这样不仅减轻了控制器的负担,降低流表项开销,同时分段路由可根据网络每条链路的量子密钥信息的约束条件进行流量调度优化计算,若某一节点失效,可利用分段路由技术对流进行重路由,保证共享密钥服务的成功交换,从而减少量子密钥的多余消耗。
对于目前的QKD 技术来说,量子链路的密钥生成速率仍然有限且相对较低,因此量子密钥资源非常珍贵。 然而,根据第一节中密钥中继的工作原理可知,当用户间交换一定数量的共享密钥时,中继路径上对应的每条量子链路必须消耗等量的量子密钥。 因此本文的工作是寻找一种实现任意用户间密钥交换的路由方案,包括寻找从请求节点到目的节点的最佳密钥中继路径,再将该路径下发至分段标签压栈流表项至路径源节点。
图论作为一种描述事物之间特定关系的数学方法,被广泛应用于网络化对象的研究过程中[16]。 QKD 网络主要由节点之间的密钥共享关系构成,共享密钥的产生有两种方式:一是由量子信道直接生成共享密钥,二是由密钥中继方式间接生成共享密钥。 在本文中我们重点讨论第二种方式生成的共享密钥。
本文将QKD 网络用一个二元组G ={V,E} 来表示,其中V ={v1,v2,…,vn} 表示密钥节点集,相应的vi表示任意密钥节点,E ={eij} 表示密钥链路集,eij表示从密钥节点vi到密钥节点vj之间的一条密钥链路。
定义1 根据2.3 节中设计的QKD 网络架构,我们将密钥节点从量子层和数据层分为两类:量子密钥生成节点qnode、密钥中继节点tnode,可以表示为:
本文以Yen 算法为基础,根据量子网络的链路费用度量为多用户间密钥交换选择一条密钥量充足并保证网络密钥量均衡的密钥中继路径。 Yen 算法是Jin Y.Yen 在1971 年发表的以其名字命名的算法,算法采用的是偏离路径的思想,其利用经典的最短路径算法求出源-目的节点之间的最短路径,然后依次偏离出各条最短路径,直到第K 条为止。 这里采用经典且广泛应用的最短路径——Dijkstra 算法作为Yen 算法的基础,来搜索出最短路径。
量子网络的链路费用度量考虑链路密钥池剩余密钥量和路由跳数,具体说明如下:
(1)链路密钥池剩余密钥量。 QKD 网络中由于密钥生成速率有限且普遍较低,链路密钥资源的分布也不一致,现有的QKD 网络研究如SECOQC 网络将经典网络中的一些成熟技术直接移植到QKD 网络中,网络层选择路由时没有考虑引入本地密钥量作为链路代价,导致一旦中继路径中某条链路密钥量不足或者出现故障,从而造成路径上其他链路密钥逐渐消耗殆尽进而出现密钥“塌陷式”级联不足[16]。 所以本文考虑链路密钥池剩余密钥量作为路由选择的重要指标,同时为了更好地平衡网络中的链路密钥资源,考虑为每个链路池设置一个阈值。 在选路时只能选择密钥池密钥资源充足的链路,忽视链路密钥池剩余密钥量低于阈值的链路,以满足中继传输的需求,提高用户密钥交换服务成功率。
(2)路由跳数。 由QKD 网络的密钥中继方式可以看出,网络中任意密钥节点间需要交换密钥时,每经过一个密钥中继节点都要消耗一定的密钥资源,当选择的一条路径的长度越长,即路由跳数越多,它就会消耗更加多余的密钥资源,使得资源的利用率进一步降低。 因此,在保证所选链路的密钥资源充足等前提下,应尽量选择链路数量较少的路径作为用户密钥传输的中继路径,这样可以减少密钥资源的无意义消耗,进而节省QKD 网络的密钥资源。
本文中的路由选择算法为先选出K 条最优路径,可以表示为:
最后,中继路径Pbest,可以表示为:
综上所述,路由选择问题的数学模型可以表示为上文中的(5)(6)(7)(8)(9)(10),式(5)(6)保证了中继链路密钥量充足并均衡分布,式(7)(8)(9)保证了选取的K 条路径的每一条路径的链路剩余密钥总量最多且链路密钥量也最多,式(10)则为目标函数,即中继路径的权重最优长度最短。
本文中利用动态的路由选择实现量子保密通信网络中密钥资源的负载均衡,其过程如下:
第一步:控制器周期性收集量子层每条链路密钥池中的密钥剩余量,剔除QKD 链路中剩余密钥量低于阈值的链路;
第二步:根据权重表达式(2)设置链路权重,以Yen 算法为基础选出K 条最优路径;
第三步:比较这K 条路径的路径长度大小,选择路由跳数最小的路径作为最终的密钥中继路径。
本文的路由选择算法是在量子密钥分发网络下,用户密钥交换服务请求触发PACKET_IN时,计算出一条密钥中继路径完成用户密钥交换算法。 对于密钥中继路径的选择,仅考虑路由跳数最短无法满足多目标优化需求,因此本文以链路密钥池剩余密钥量为度量设置链路权重,保证选择的链路的密钥池剩余量最多,以Yen 算法为基础计算K 条密钥中继路径,保证当其中一条密钥中继失败时,有备选路径可供选择,提高用户密钥交换服务成功率,接着从这K 条路径中选择路由跳数最少的作为密钥中继路径,避免链路密钥的无意义消耗。 同时,本文动态进行路由选择,与静态路由选择相比,保证链路密钥不被消耗殆尽,同时均衡网络的链路密钥池密钥资源。
路径编码算法是区别分段路由技术与其他路由技术的关键,体现了分段路由技术的源路由转发的特点。 目前分段路由支持MPLS 和IPv6两种数据平面,基于MPLS 数据平面的分段路由被称为SR-MPLS,其Segment 为MPLS 标签;基于IPv6 转发平面的分段路由被称为SRv6,其Segment 为IPv6 地址。 本文所提分段路由技术则使用SR-MPLS,在采用上一节中的路由选择算法选出最优中继路径Pbest后,设计一种部署在MPLS 设备以MPLS 标签为基础(MPLS 设备通常只支持有限数量的栈标签,称为段列表深度)的路径编码算法对该条路径进行编码,得到该路径最终所需的分段路由段列表。 使用的路径编码算法的伪代码如下所示:
算法1 路径编码算法
输入:中继路径节点集合Nodes, 源节点src,目的节点dst,最大栈深度MSD
输出:段列表SL
算法首先从中继路径Pbest中获得从源节点到目的节点的所有节点集,以及最大受标签栈深度限制的MSD(Maximum Stack Depth,最大栈深度)。
步骤1 到4:从中继节点集Nodes的第二个节点遍历到最后一个节点,将代表每一中继节点的标签加入到segmentList集合;
步骤5 到10:当得到的segmentList集合大小最大栈深度MSD 时,将以MSD 为单位对segmentList进行多段划分,以实现中继路径的中间节点标签压栈操作;
步骤11 到12:否则,不对segmentList进行多段划分;
步骤13:得到最终的段列表SL。
经过上述的路径编码算法,可得到最终的段列表。 如图4 所示,路径P(S1—>S2—>S3—>S5—>S6)得到的段列表SL 为{102,103,105,106},受数据平面中继节点标签栈深度的限制(这里假设最大栈深度为2),还需要将得到的SL 进行分割得到最终SL 为{{102,103},{105,106}},接着将{102,103}段列表以标签压栈流表项形式下发给源交换机S1,{105,106}段列表以标签压栈流表项形式下发给中继节点S3,经过这条路径的数据包在经过S1 时匹配流表项被打上103,102 标签,经过S3 的操作也是如此。
图4 分段路由标签压栈流表下发示例
完成路由选择和路径编码之后,就需要使用OpenFlow 协议与交换机交互,将密钥中继转发路径的分段路由段列表,即一级标签压栈流表项,即匹配域为(入端口,源IP 地址,目的IP 地址,协议类型),指令集为压入指定标签栈,下发至数据层源节点和中间节点,源节点和中间节点将其保存在交换机流表中,如图4 所示。 当有用户密钥交换服务请求时,将该服务需要的密钥资源在源节点进行标签压栈,再根据各个节点初始化时构建的标签转发表流表项进行标签匹配转发,实现SDN 控制、分段路由技术转发的量子密钥分发网络。
本文实验的SDN 控制器选择基于Java 的开源Floodlight 控制器,实验平台是Ubuntu 16.04操作系统,Open vSwitch 2.5.7 虚拟交换机,OpenFlow 1.3 南向接口协议。
借鉴美国国家科学基金网(National Science Foundation Network,NSFNET)网络,在轻量级仿真平台mininet 对上述所提方案进行实验仿真环境搭建,该网络拓扑结构如图5 所示。 由于本文不深入研究量子密钥分发网络中通过量子信道生成密钥资源的过程,因此通过修改OVS 交换机源码为密钥中继节点的每条邻接链路设置一个整型变量来模拟链路密钥池中的剩余密钥量,并通过变量值的增减来模拟密钥资源的生成及消耗过程。
图5 NSFNET 网络拓扑图
实验参数设置如下:每条链路的密钥生成速率为15KBps 到30KBps 之间的随机整数值,每条链路的密钥池总容量为10000KB,每条链路的密钥池阈值为2000KB,每条链路的密钥池初始量为5000KB,控制器以10s 为周期收集每条链路的密钥池剩余密钥量。 由于实际网络中,每个源节点的密钥交换需求服从泊松分布,因此需要修改mininet 源码模拟真实网络环境下的用户密钥交换服务需求。 假设密钥交换长度为固定的20KB,密钥交换请求业务发送速率为50KB/s,密钥交换需求持续时间为10s,每个终端用户节点可以将用户密钥需求随机发送给其他任何一个终端用户。
本文在搭建好仿真环境后,我们的实验将从以下四个性能指标进行相应的仿真环境设置:
(1)路由可行性验证:首先对本文设计的路由选择算法结合分段路由转发技术的可行性进行验证。 终端用户h1 向h2 发送用户密钥业务请求时,SDN 控制器会从K 条最优密钥中继路径中选择跳数最少的路径作为最终密钥中继路径。 最终密钥中继路径确定后,利用分段路由技术将该路径进行编码,并将其编码结果下发至源节点(以及中间节点)。 经过这两步后,用户密钥UK 由中继路径转发,并消耗链路密钥LK。
(2)链路密钥池密钥资源:全网各链路密钥池的密钥剩余量情况反映密钥资源分布的均衡情况。 在对链路密钥池密钥资源性能对比仿真实验中,我们将与OSPF 算法(总选择路由跳数最少的一条路径)进行对比,各终端节点h1、h2、h3、h4、h5 间随机选择一个终端节点发送用户密钥请求服务,所有链路生成密钥,只有密钥中继路径上的链路才需要消耗密钥,每隔10s 输出网络中各条链路密钥池中剩余密钥量的日志情况。
(3)用户密钥交换服务成功率:用户密钥交换失败的主要原因是密钥中继路径中的一些QKD 链路缺少链路密钥LK,因此该值越高说明其路由方案越好。 在本文实验中,同样与OSPF算法进行用户密钥交换服务成功率的性能情况对比,设置每条链路密钥池的初始密钥量为5000KB,保证密钥池中足够的密钥量可供消耗,接着让h1 向h2 发送用户密钥交换服务请求,并从300 的服务请求数量逐渐增加到1200。
(4)流表项开销:用户密钥交换服务的中继转发决定于密钥中继节点的流表,其节点的流表开销越大,说明所消耗流表资源越大。 在流表项开销的性能对比实验中,我们将采用分段路由转发技术与SDN 默认转发技术分别进行实验,通过不断增加通信终端对的数量,以增加用户密钥交换服务请求,如首先让h1 向h2 发送密钥交换请求服务,模拟一对终端的密钥交换业务,再让h1 向h2、h1 向h3 发送密钥交换请求服务,模拟两对终端的密钥请求业务,依次类推,得到采用分段路由转发技术和SDN 默认转发技术下全网所有密钥中继节点的流表项开销情况。
4.2.1 路由可行性验证
图6 展示的是终端节点h1 和h2 用户密钥请求的路由选择情况,可以看到,选出的3 条最优密钥中继路径为:h1 →S2 →S3 →S6 →S13 →S14 →h2,h1 →S2 →S4 →S11 →S14 →h2,h1 →S2 →S3 →S1 →S8 →S9 →S14 →h2,最终的密钥中继路径为h1 →S2 →S4 →S11 →S14 →h2。
图6 中继路径的选择
图7 中的(a)为h1 向h2 发起用户密钥请求时,控制器下发至h1 直连交换机S2 的标签压栈流表项,h1 发送的用户密钥UK 经过S2 会依次被打上14、11 的标签,如(c)所示,并从端口4 转发出去,(b)与(c)情况类似。
图7 分段路由技术源节点流表及MPLS 标签栈
从图8 可以看到,h1 到h2 的业务请求首先选择的是h1 →S2 →S3 →S6 →S13 →S14 →h2,但随着时间的推移,链路密钥不断被消耗,第二次日志输出时,密钥中继路径切换为h1 →S2 →S4 →S11 →S14 →h2。
图8 动态路由选择情况
从上述对中继路径的选择、分段路由技术的源节点流表和数据包的MPLS 栈,以及本文路由算法的动态选择等情况的结果分析,可以看到本文所提结合分段路由技术路由算法的可行性,为量子密钥分发网络的路由方案提供一种新的思路。
4.2.2 链路密钥池密钥资源
图9 表示使用本文所提方案与使用OSPF算法情况下各条链路密钥池中剩余密钥量的三次日志输出情况。 从图9 的(a)可以看出,本文所提方案和OSPF 链路密钥资源变化趋势几乎完全相同,但到(b)(c)图可以看到,两种算法的密钥资源情况开始出现一些偏差,说明本文所提方案的动态调整路径起到了作用。 总的来说,采用本文所提方案和OSPF 算法各链路密钥池的资源分布情况相差较大,本文所提方案下的链路密钥池密钥量相比OSPF 算法更加均匀,资源的利用也更加均衡。 从图中也可以看到,有几条链路的密钥资源使用得较多,应该考虑对这些关键链路密钥资源的合理利用。
4.2.3 用户密钥交换服务成功率
如图10 所示为实验得到两种方案的用户密钥交换服务成功率。 从图中可以看出,本文所提方案和OSPF 路由算法的服务成功率都随着用户密钥交换服务数量的增加而降低,但由于本文所提方案可以根据链路密钥池密钥资源的情况动态选择剩余密钥量较多的链路作为中继链路转发,而OSPF 路由方案始终选择路由跳数最少的路径中继转发,导致最短中继路径上的链路密钥不断被消耗,所以用户密钥交换服务的成功率要高于OSPF 路由算法。
图10 h1 请求h2 的用户密钥交换服务成功率
4.2.4 流表项开销
图11 为采用分段路由转发技术和默认转发技术下,不同数量终端对的密钥交换服务所需要下发的流表项开销。
图11 最大流表项开销
由于分段路由技术需要在初始化时安装默认表项,所以在请求密钥交换服务的终端对较少的情况下,流表项开销要大于默认转发技术。 但从图中可以看出,随着终端对数量的增大,分段路由转发技术的优势越来越大,这是因为分段路由技术只需要新增源节点流表和中间节点流表,不需要向其他节点下发流表。 而在现实网络中,发送密钥交换请求服务的终端用户对将比本文实验要更多且情况更复杂,所以采用分段路由转发技术在减少流表项开销上具有很大优势。
本文面向量子密钥分发网络环境下的路由选择问题,为减少控制器与中继节点的通信以及数据层中继节点的流表项开销,结合分段路由技术设计了一种路由选择算法。 针对QKD 网络密钥生成率低密钥消耗不均匀等问题,利用K 最短路径算法选出密钥量充足且避免密钥资源无意义消耗的密钥中继路径,并根据网络中链路密钥量情况动态调整中继路径。 通过模拟量子保密通信网络环境,实验验证了该路由选择算法结合分段路由技术的可行性,并与目前QKD 网络普遍使用的OSPF 路由算法进行对比,验证该方案对于量子密钥网络中各链路密钥池密钥资源负载均衡以及用户密钥交换服务成功率的优势。 同时,实验得出分段路由转发技术相比于默认转发技术运用到真实的基于SDN 的量子保密通信网络中可减少流表项开销,对于量子保密通信网络的密钥中继节点的流表项开销具有一定的参考价值。