池亞平 程崢華 張亮亮
1. 北京電子科技學院,北京市 100070
2. 中國科學技術大學,合肥市 230027
3. 西安電子科技大學,西安市 710071
量子保密通信技術是一種利用量子力學原理實現量子密鑰分發(fā)(Quantum Key Distribution,QKD)[1]的通信技術。 近年來,隨著QKD 技術的不斷發(fā)展,量子保密通信從理論研究逐步走向應用,量子通信也已經從點到點的小型專用通信系統(tǒng)發(fā)展到面向實際應用的量子保密通信網絡[2][3]。 在構建更大規(guī)模QKD 網絡中,路由算法與路由策略控制成為量子保密通信網絡研究領域的研究熱點之一。
目前國內外對QKD 網絡的路由方案研究較少,并且現有QKD 網絡路由方案普遍采用經典網絡路由算法——開放式最短路徑優(yōu)先(Open Shortest Path First,OSPF)。 其網絡狀態(tài)參數基本包含剩余密鑰量、密鑰生成速率和跳數等,對于量子密鑰資源的負載均衡大多采用動態(tài)路由設計思想,如文獻[4]針對分布式可信中繼QKD網絡中的路由問題,提出一種動態(tài)路由方案,但分布式網絡環(huán)境下每個節(jié)點只能獲取鄰接節(jié)點的信息,實現的是局部最優(yōu),可能導致所選的中繼路徑非全局相對最優(yōu)相對最短,并不能滿足QKD 網絡中有效利用量子密鑰資源的需求。
軟件定義網絡(Software Defined Networking,SDN)[5]是新一代網絡架構,核心在于實現控制平面與數據平面分離,控制器平面可以中心化地管控網絡資源,包括綜合感知量子保密通信網絡密鑰資源狀態(tài),統(tǒng)籌調度全網的量子密鑰資源,實現密鑰資源的平衡和有效利用。 如文獻[6]設計了一種基于SDN 的量子保密通信網絡架構模型,提出了一種以跳數和鏈路密鑰為權重度量的、基于SDN 的動態(tài)路由算法,實現了密鑰資源的有效利用和負載均衡。
但是,在這種基于SDN 架構的集中式QKD網絡中,SDN 控制器與中繼路徑上的每一節(jié)點交互。 隨著共享密鑰服務請求的增加,控制器負載逐步增大,同時節(jié)點交換機的流表開銷也會隨之加重,造成流表下發(fā)和流表更新不及時等問題,共享密鑰服務仍按照之前中繼路徑進行轉發(fā),無法及時有效地調度,甚至可能導致某一鏈路密鑰資源的消耗殆盡,進而中繼傳輸中止,共享密鑰服務失敗,量子密鑰資源被嚴重浪費。
分段路由(Segment Routing,SR)[7][8][9]技術可有效解決上述問題。 這一技術基于源路由機制,可借助SDN 集中控制的特點,通過改進型路由算法實現流量負載均衡、降低流表資源開銷[10]。 文獻[11]采用分段路由轉發(fā)技術,結合SDN 結構,提出了一種基于受限K 最短路徑(Constrained K-Shortest Pathes,CKSP)算法。 該算法采用分段路由技術進行負載均衡,在K 條最短路徑中計算一條同時滿足預期網路最大流和最小化鏈路利用率方差的最優(yōu)路徑,增大了網絡吞吐量,平滑了流量分布,并降低了網絡總丟包率。 文獻[12]針對當前SDN 網絡在應對大量數據流時造成的流表利用率低,轉發(fā)響應較慢以及當前網絡調度算法容易造成網絡局部擁塞和負載不均衡等問題,提出了一種基于分段路由的多路徑調度算法SRMF,該文獻通過實驗驗證了分段路由轉發(fā)技術在多種網絡拓撲下較一般轉發(fā)技術在流表項開銷方面有明顯優(yōu)勢。
本文在研究SDN 和分段路由技術相關研究成果的基礎上,針對可信中繼QKD 網絡的路由優(yōu)化問題,綜合應用SDN 的全局控制優(yōu)勢和分段路由源路由特點,提出一種可應用于QKD 網絡的路由選擇方案,實現量子密鑰資源的均衡利用問題。
目前將點對點QKD 網絡擴展為多用戶QKD 網絡的組網方式有三種:光交換/分束器方案、量子中繼方案和可信中繼方案[13]。 光交換/分束器方案利用光路交換機或光分束器,實現多用戶QKD 鏈路切換,從而實現多用戶間的密鑰分發(fā),但由于量子信號衰減帶來的傳輸距離限制,該方式無法進行遠距離傳輸,所以不適用于大規(guī)模的組網。 量子中繼方案利用量子糾纏原理實現量子態(tài)的存儲和轉發(fā),理論上可以實現遠距離的密鑰分發(fā),但目前該方案需要的量子存儲器或量子糾錯技術仍不成熟,暫未達到實用的程度。 可信中繼方案通過將多個點對點的QKD 鏈路連接起來以實現端到端的密鑰分發(fā),從而實現遠距離的密鑰分發(fā),是目前全球QKD 網絡中廣泛采用的使用解決方案。
本文面向可信中繼QKD 網絡研究路由方案,基于可信中繼的QKD 網絡基本思想是利用一次一密算法(One-Time Pad,OTP)[14][15]實現非相鄰節(jié)點間密鑰的傳遞,并將得到的共享密鑰分發(fā)給用戶,這個過程稱為“逐跳”加密機制,圖1 顯示了使用這一機制在兩個用戶之間交換密鑰的基本原理。
圖1 密鑰中繼原理圖
如圖1 所示,假設兩個鄰近節(jié)點QKD 系統(tǒng)生成的共享密鑰為Ki,此時Alice 想將生成的量子密鑰傳遞給Bob,實現遠距離密鑰共享,其密鑰中繼路徑為Alice—>node(1)—>node(2)—>…—>node(i) —>…—>Bob,中繼步驟如下:
(1)Alice 與node(1)基于BB84 等量子密鑰分發(fā)協議生成共享量子密鑰KA;
(2)node(1)使用OTP 算法將K1作為KA的保護密鑰,加密傳遞給node(2);
(3)node(2)用共享密鑰K1對收到的KA⊕K1進行異或解密,得到KA;
(4)然后重復步驟(2)(3),將KA加密并傳遞給下一個節(jié)點進行解密,直到Bob 得到KA后,整個過程結束。 至此Alice 和Bob 都獲得了量子密鑰KA。
基于可信中繼的QKD 網絡由量子密鑰生產層不斷為相鄰節(jié)點生成量子密鑰,再以密鑰中繼的方式,為任意網絡節(jié)點提供共享密鑰,因此在選擇密鑰中繼路徑時,應選擇路徑長度短的中繼路徑避免無意義密鑰消耗。
分段路由技術由源節(jié)點為網絡中的數據包指定路徑,并通過特定算法將業(yè)務路徑編碼成一個有序的段(Segment)列表封裝到數據包首部來顯式標識路徑,中間節(jié)點只負責快速的數據轉發(fā)。 分段路由與SDN 結合,使用MPLS 標簽棧來存儲分段路由中一條數據轉發(fā)路徑的段列表,其工作機制如下:
在源交換機將路徑Segment 列表以MPLS標簽棧壓入到數據包首部,根據各節(jié)點標簽轉發(fā)流表項匹配棧頂標簽和標簽出棧,最終將數據包送至目的交換機。 中間節(jié)點不必為所有可能經過它們的流維持狀態(tài)信息,所有的狀態(tài)信息以標簽棧的形式存在于數據包中。
(1) 網絡初始化階段,SDN 控制器通過LLDP(Link Layer Discovery Protocol,鏈路發(fā)現協議)協議進行鏈路發(fā)現,根據這一協議搜集的信息確定和管理網絡拓撲結構,為各節(jié)點分配全局分段路由標簽Node SID。 將這一網絡拓撲結構抽象為有向圖鄰接關系,確定各網絡節(jié)點的標簽轉發(fā)表。
(2)當一數據流到達時,由于沒有流表匹配,觸發(fā)PACKET_IN 進入控制器,控制器為數據流計算出一條路徑,進而將這條路徑轉換成由全局路由標簽SID 組成的標簽棧,下發(fā)至源交換機,數據流匹配該流表項并被打上對應標簽,后續(xù)傳輸通過匹配標簽轉發(fā)表轉發(fā),直到恢復為IP 數據包到達目的交換機。
如圖2 所示,網絡初始化時,SDN 控制器會給每一個交換節(jié)點分配全局路由標簽SID。 h1到h2 的數據包PKT 由SDN 控制器計算得到轉發(fā)路徑為P(S1—>S2—>S3—>S5—>S6),然后源節(jié)點S1 將P 這條路徑通過段列表的形式封裝到數據包PKT 頭部,即標簽106、105、103、102入棧。 在節(jié)點S1 處,開始依次匹配交換機節(jié)點的標簽轉發(fā)表進行轉發(fā),如PKT 在S1 處根據棧頂標簽102 查詢到其對應標簽轉發(fā)表為(102 pop, out 2),將其PKT 的102 標簽彈出轉發(fā)至S2,數據包PKT 到達S2,再根據棧頂標簽103 查詢其對應標簽轉發(fā)表項為(103 pop, out 2),同樣將其PKT 的103 標簽彈出再進行轉發(fā)至S3,后續(xù)交換節(jié)點的匹配轉發(fā)操作同樣按此過程進行,直至PKT 到達目的節(jié)點S6,數據包的轉發(fā)過程結束。
圖2 分段路由轉發(fā)過程
本文所提出的網絡架構運用于量子密鑰分發(fā)網絡,該網絡的SDN 架構由數據層、控制層及應用層構成,將SDN 這種技術應用于量子密鑰分發(fā)網絡,其中的量子密鑰中繼層和量子密鑰交換層對應于SDN 架構的數據層,實現任意節(jié)點間的密鑰中繼以提供端到端的共享密鑰,在這里基于可信中繼的QKD 網絡的量子密鑰交換層不再具有路由選路功能,而是將制定路由策略的功能上交到SDN 架構的控制層。
本文提出的軟件定義的QKD 網絡架構如圖3 所示。 該網絡架構包括產生量子密鑰的量子密鑰生成節(jié)點和具有密鑰中繼功能的量子密鑰中繼節(jié)點以及SDN+SR 控制器三部分。 其中,控制器屬于控制層,量子密鑰中繼節(jié)點屬于數據層,量子密鑰生成節(jié)點屬于量子層。
圖3 SDN-SR 的QKD 網絡架構圖
控制層是該架構的核心部分,主要功能是通過OpenFlow 協議(一種網絡通信協議),主動收集數據層中各密鑰節(jié)點中儲存的密鑰池資源信息,為數據層任意網絡節(jié)點間密鑰的安全共享提供密鑰資源充足的密鑰中繼路徑。 本文的控制平面包括以下幾個模塊:
(1)標簽轉發(fā)表構建模塊:根據SDN 控制器初始化階段確定的網絡拓撲信息,通過一級流表構建分段路由的標簽轉發(fā)表流表項,供密鑰中繼使用。
(2)密鑰信息采集模塊:根據OFP_PORT_STATS_REQUEST 和OFP_PORT_STATS_REPLY消息獲取QKD 數據層存儲的量子層密鑰資源信息,將其獲取到的全網量子密鑰剩余量加權作為鏈路權重供路徑計算模塊使用。
(3)中繼路徑計算模塊:主要計算從源節(jié)點到目的節(jié)點的中繼路徑,并將計算得到的中繼路徑轉化為Node SID 構成的分段路由段列表,然后將段列表以標簽壓棧流表項下發(fā)至源中繼節(jié)點或中間中繼節(jié)點。
數據層由實際的數據通信節(jié)點與經典數據信道組成,當有密鑰交換業(yè)務時,數據層將使用量子層的點到點量子密鑰來完成共享密鑰的安全端到端中繼傳輸。
量子層主要是由量子系統(tǒng)的設備,量子鏈路與量子密鑰池構成,相鄰節(jié)點間基于BB84、B92等量子密鑰分發(fā)協議,產生QKD 網絡密鑰資源,并將其存儲在量子密鑰池,用于實現數據層多用戶間密鑰的安全傳遞與共享。
SDN 控制層通過南向接口協議獲取數據層網絡信息,根據收集到的量子網絡的密鑰資源信息計算出最佳密鑰中繼路徑,再將密鑰數據包信息和轉發(fā)規(guī)則流表下發(fā)至該條密鑰中繼路徑的源節(jié)點。 在量子密鑰分發(fā)網絡的運用分段路由技術,控制器無需與路徑中每一節(jié)點進行交互,而只需與該路徑的源節(jié)點進行交互,對路徑進行編碼后向源節(jié)點一次下發(fā)包含所有分段標簽信息的標簽棧流表,再利用標簽操作進行這條路徑上的數據轉發(fā)工作,這樣不僅減輕了控制器的負擔,降低流表項開銷,同時分段路由可根據網絡每條鏈路的量子密鑰信息的約束條件進行流量調度優(yōu)化計算,若某一節(jié)點失效,可利用分段路由技術對流進行重路由,保證共享密鑰服務的成功交換,從而減少量子密鑰的多余消耗。
對于目前的QKD 技術來說,量子鏈路的密鑰生成速率仍然有限且相對較低,因此量子密鑰資源非常珍貴。 然而,根據第一節(jié)中密鑰中繼的工作原理可知,當用戶間交換一定數量的共享密鑰時,中繼路徑上對應的每條量子鏈路必須消耗等量的量子密鑰。 因此本文的工作是尋找一種實現任意用戶間密鑰交換的路由方案,包括尋找從請求節(jié)點到目的節(jié)點的最佳密鑰中繼路徑,再將該路徑下發(fā)至分段標簽壓棧流表項至路徑源節(jié)點。
圖論作為一種描述事物之間特定關系的數學方法,被廣泛應用于網絡化對象的研究過程中[16]。 QKD 網絡主要由節(jié)點之間的密鑰共享關系構成,共享密鑰的產生有兩種方式:一是由量子信道直接生成共享密鑰,二是由密鑰中繼方式間接生成共享密鑰。 在本文中我們重點討論第二種方式生成的共享密鑰。
本文將QKD 網絡用一個二元組G ={V,E} 來表示,其中V ={v1,v2,…,vn} 表示密鑰節(jié)點集,相應的vi表示任意密鑰節(jié)點,E ={eij} 表示密鑰鏈路集,eij表示從密鑰節(jié)點vi到密鑰節(jié)點vj之間的一條密鑰鏈路。
定義1 根據2.3 節(jié)中設計的QKD 網絡架構,我們將密鑰節(jié)點從量子層和數據層分為兩類:量子密鑰生成節(jié)點qnode、密鑰中繼節(jié)點tnode,可以表示為:
本文以Yen 算法為基礎,根據量子網絡的鏈路費用度量為多用戶間密鑰交換選擇一條密鑰量充足并保證網絡密鑰量均衡的密鑰中繼路徑。 Yen 算法是Jin Y.Yen 在1971 年發(fā)表的以其名字命名的算法,算法采用的是偏離路徑的思想,其利用經典的最短路徑算法求出源-目的節(jié)點之間的最短路徑,然后依次偏離出各條最短路徑,直到第K 條為止。 這里采用經典且廣泛應用的最短路徑——Dijkstra 算法作為Yen 算法的基礎,來搜索出最短路徑。
量子網絡的鏈路費用度量考慮鏈路密鑰池剩余密鑰量和路由跳數,具體說明如下:
(1)鏈路密鑰池剩余密鑰量。 QKD 網絡中由于密鑰生成速率有限且普遍較低,鏈路密鑰資源的分布也不一致,現有的QKD 網絡研究如SECOQC 網絡將經典網絡中的一些成熟技術直接移植到QKD 網絡中,網絡層選擇路由時沒有考慮引入本地密鑰量作為鏈路代價,導致一旦中繼路徑中某條鏈路密鑰量不足或者出現故障,從而造成路徑上其他鏈路密鑰逐漸消耗殆盡進而出現密鑰“塌陷式”級聯不足[16]。 所以本文考慮鏈路密鑰池剩余密鑰量作為路由選擇的重要指標,同時為了更好地平衡網絡中的鏈路密鑰資源,考慮為每個鏈路池設置一個閾值。 在選路時只能選擇密鑰池密鑰資源充足的鏈路,忽視鏈路密鑰池剩余密鑰量低于閾值的鏈路,以滿足中繼傳輸的需求,提高用戶密鑰交換服務成功率。
(2)路由跳數。 由QKD 網絡的密鑰中繼方式可以看出,網絡中任意密鑰節(jié)點間需要交換密鑰時,每經過一個密鑰中繼節(jié)點都要消耗一定的密鑰資源,當選擇的一條路徑的長度越長,即路由跳數越多,它就會消耗更加多余的密鑰資源,使得資源的利用率進一步降低。 因此,在保證所選鏈路的密鑰資源充足等前提下,應盡量選擇鏈路數量較少的路徑作為用戶密鑰傳輸的中繼路徑,這樣可以減少密鑰資源的無意義消耗,進而節(jié)省QKD 網絡的密鑰資源。
本文中的路由選擇算法為先選出K 條最優(yōu)路徑,可以表示為:
最后,中繼路徑Pbest,可以表示為:
綜上所述,路由選擇問題的數學模型可以表示為上文中的(5)(6)(7)(8)(9)(10),式(5)(6)保證了中繼鏈路密鑰量充足并均衡分布,式(7)(8)(9)保證了選取的K 條路徑的每一條路徑的鏈路剩余密鑰總量最多且鏈路密鑰量也最多,式(10)則為目標函數,即中繼路徑的權重最優(yōu)長度最短。
本文中利用動態(tài)的路由選擇實現量子保密通信網絡中密鑰資源的負載均衡,其過程如下:
第一步:控制器周期性收集量子層每條鏈路密鑰池中的密鑰剩余量,剔除QKD 鏈路中剩余密鑰量低于閾值的鏈路;
第二步:根據權重表達式(2)設置鏈路權重,以Yen 算法為基礎選出K 條最優(yōu)路徑;
第三步:比較這K 條路徑的路徑長度大小,選擇路由跳數最小的路徑作為最終的密鑰中繼路徑。
本文的路由選擇算法是在量子密鑰分發(fā)網絡下,用戶密鑰交換服務請求觸發(fā)PACKET_IN時,計算出一條密鑰中繼路徑完成用戶密鑰交換算法。 對于密鑰中繼路徑的選擇,僅考慮路由跳數最短無法滿足多目標優(yōu)化需求,因此本文以鏈路密鑰池剩余密鑰量為度量設置鏈路權重,保證選擇的鏈路的密鑰池剩余量最多,以Yen 算法為基礎計算K 條密鑰中繼路徑,保證當其中一條密鑰中繼失敗時,有備選路徑可供選擇,提高用戶密鑰交換服務成功率,接著從這K 條路徑中選擇路由跳數最少的作為密鑰中繼路徑,避免鏈路密鑰的無意義消耗。 同時,本文動態(tài)進行路由選擇,與靜態(tài)路由選擇相比,保證鏈路密鑰不被消耗殆盡,同時均衡網絡的鏈路密鑰池密鑰資源。
路徑編碼算法是區(qū)別分段路由技術與其他路由技術的關鍵,體現了分段路由技術的源路由轉發(fā)的特點。 目前分段路由支持MPLS 和IPv6兩種數據平面,基于MPLS 數據平面的分段路由被稱為SR-MPLS,其Segment 為MPLS 標簽;基于IPv6 轉發(fā)平面的分段路由被稱為SRv6,其Segment 為IPv6 地址。 本文所提分段路由技術則使用SR-MPLS,在采用上一節(jié)中的路由選擇算法選出最優(yōu)中繼路徑Pbest后,設計一種部署在MPLS 設備以MPLS 標簽為基礎(MPLS 設備通常只支持有限數量的棧標簽,稱為段列表深度)的路徑編碼算法對該條路徑進行編碼,得到該路徑最終所需的分段路由段列表。 使用的路徑編碼算法的偽代碼如下所示:
算法1 路徑編碼算法
輸入:中繼路徑節(jié)點集合Nodes, 源節(jié)點src,目的節(jié)點dst,最大棧深度MSD
輸出:段列表SL
算法首先從中繼路徑Pbest中獲得從源節(jié)點到目的節(jié)點的所有節(jié)點集,以及最大受標簽棧深度限制的MSD(Maximum Stack Depth,最大棧深度)。
步驟1 到4:從中繼節(jié)點集Nodes的第二個節(jié)點遍歷到最后一個節(jié)點,將代表每一中繼節(jié)點的標簽加入到segmentList集合;
步驟5 到10:當得到的segmentList集合大小最大棧深度MSD 時,將以MSD 為單位對segmentList進行多段劃分,以實現中繼路徑的中間節(jié)點標簽壓棧操作;
步驟11 到12:否則,不對segmentList進行多段劃分;
步驟13:得到最終的段列表SL。
經過上述的路徑編碼算法,可得到最終的段列表。 如圖4 所示,路徑P(S1—>S2—>S3—>S5—>S6)得到的段列表SL 為{102,103,105,106},受數據平面中繼節(jié)點標簽棧深度的限制(這里假設最大棧深度為2),還需要將得到的SL 進行分割得到最終SL 為{{102,103},{105,106}},接著將{102,103}段列表以標簽壓棧流表項形式下發(fā)給源交換機S1,{105,106}段列表以標簽壓棧流表項形式下發(fā)給中繼節(jié)點S3,經過這條路徑的數據包在經過S1 時匹配流表項被打上103,102 標簽,經過S3 的操作也是如此。
圖4 分段路由標簽壓棧流表下發(fā)示例
完成路由選擇和路徑編碼之后,就需要使用OpenFlow 協議與交換機交互,將密鑰中繼轉發(fā)路徑的分段路由段列表,即一級標簽壓棧流表項,即匹配域為(入端口,源IP 地址,目的IP 地址,協議類型),指令集為壓入指定標簽棧,下發(fā)至數據層源節(jié)點和中間節(jié)點,源節(jié)點和中間節(jié)點將其保存在交換機流表中,如圖4 所示。 當有用戶密鑰交換服務請求時,將該服務需要的密鑰資源在源節(jié)點進行標簽壓棧,再根據各個節(jié)點初始化時構建的標簽轉發(fā)表流表項進行標簽匹配轉發(fā),實現SDN 控制、分段路由技術轉發(fā)的量子密鑰分發(fā)網絡。
本文實驗的SDN 控制器選擇基于Java 的開源Floodlight 控制器,實驗平臺是Ubuntu 16.04操作系統(tǒng),Open vSwitch 2.5.7 虛擬交換機,OpenFlow 1.3 南向接口協議。
借鑒美國國家科學基金網(National Science Foundation Network,NSFNET)網絡,在輕量級仿真平臺mininet 對上述所提方案進行實驗仿真環(huán)境搭建,該網絡拓撲結構如圖5 所示。 由于本文不深入研究量子密鑰分發(fā)網絡中通過量子信道生成密鑰資源的過程,因此通過修改OVS 交換機源碼為密鑰中繼節(jié)點的每條鄰接鏈路設置一個整型變量來模擬鏈路密鑰池中的剩余密鑰量,并通過變量值的增減來模擬密鑰資源的生成及消耗過程。
圖5 NSFNET 網絡拓撲圖
實驗參數設置如下:每條鏈路的密鑰生成速率為15KBps 到30KBps 之間的隨機整數值,每條鏈路的密鑰池總容量為10000KB,每條鏈路的密鑰池閾值為2000KB,每條鏈路的密鑰池初始量為5000KB,控制器以10s 為周期收集每條鏈路的密鑰池剩余密鑰量。 由于實際網絡中,每個源節(jié)點的密鑰交換需求服從泊松分布,因此需要修改mininet 源碼模擬真實網絡環(huán)境下的用戶密鑰交換服務需求。 假設密鑰交換長度為固定的20KB,密鑰交換請求業(yè)務發(fā)送速率為50KB/s,密鑰交換需求持續(xù)時間為10s,每個終端用戶節(jié)點可以將用戶密鑰需求隨機發(fā)送給其他任何一個終端用戶。
本文在搭建好仿真環(huán)境后,我們的實驗將從以下四個性能指標進行相應的仿真環(huán)境設置:
(1)路由可行性驗證:首先對本文設計的路由選擇算法結合分段路由轉發(fā)技術的可行性進行驗證。 終端用戶h1 向h2 發(fā)送用戶密鑰業(yè)務請求時,SDN 控制器會從K 條最優(yōu)密鑰中繼路徑中選擇跳數最少的路徑作為最終密鑰中繼路徑。 最終密鑰中繼路徑確定后,利用分段路由技術將該路徑進行編碼,并將其編碼結果下發(fā)至源節(jié)點(以及中間節(jié)點)。 經過這兩步后,用戶密鑰UK 由中繼路徑轉發(fā),并消耗鏈路密鑰LK。
(2)鏈路密鑰池密鑰資源:全網各鏈路密鑰池的密鑰剩余量情況反映密鑰資源分布的均衡情況。 在對鏈路密鑰池密鑰資源性能對比仿真實驗中,我們將與OSPF 算法(總選擇路由跳數最少的一條路徑)進行對比,各終端節(jié)點h1、h2、h3、h4、h5 間隨機選擇一個終端節(jié)點發(fā)送用戶密鑰請求服務,所有鏈路生成密鑰,只有密鑰中繼路徑上的鏈路才需要消耗密鑰,每隔10s 輸出網絡中各條鏈路密鑰池中剩余密鑰量的日志情況。
(3)用戶密鑰交換服務成功率:用戶密鑰交換失敗的主要原因是密鑰中繼路徑中的一些QKD 鏈路缺少鏈路密鑰LK,因此該值越高說明其路由方案越好。 在本文實驗中,同樣與OSPF算法進行用戶密鑰交換服務成功率的性能情況對比,設置每條鏈路密鑰池的初始密鑰量為5000KB,保證密鑰池中足夠的密鑰量可供消耗,接著讓h1 向h2 發(fā)送用戶密鑰交換服務請求,并從300 的服務請求數量逐漸增加到1200。
(4)流表項開銷:用戶密鑰交換服務的中繼轉發(fā)決定于密鑰中繼節(jié)點的流表,其節(jié)點的流表開銷越大,說明所消耗流表資源越大。 在流表項開銷的性能對比實驗中,我們將采用分段路由轉發(fā)技術與SDN 默認轉發(fā)技術分別進行實驗,通過不斷增加通信終端對的數量,以增加用戶密鑰交換服務請求,如首先讓h1 向h2 發(fā)送密鑰交換請求服務,模擬一對終端的密鑰交換業(yè)務,再讓h1 向h2、h1 向h3 發(fā)送密鑰交換請求服務,模擬兩對終端的密鑰請求業(yè)務,依次類推,得到采用分段路由轉發(fā)技術和SDN 默認轉發(fā)技術下全網所有密鑰中繼節(jié)點的流表項開銷情況。
4.2.1 路由可行性驗證
圖6 展示的是終端節(jié)點h1 和h2 用戶密鑰請求的路由選擇情況,可以看到,選出的3 條最優(yōu)密鑰中繼路徑為: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 發(fā)起用戶密鑰請求時,控制器下發(fā)至h1 直連交換機S2 的標簽壓棧流表項,h1 發(fā)送的用戶密鑰UK 經過S2 會依次被打上14、11 的標簽,如(c)所示,并從端口4 轉發(fā)出去,(b)與(c)情況類似。
圖7 分段路由技術源節(jié)點流表及MPLS 標簽棧
從圖8 可以看到,h1 到h2 的業(yè)務請求首先選擇的是h1 →S2 →S3 →S6 →S13 →S14 →h2,但隨著時間的推移,鏈路密鑰不斷被消耗,第二次日志輸出時,密鑰中繼路徑切換為h1 →S2 →S4 →S11 →S14 →h2。
圖8 動態(tài)路由選擇情況
從上述對中繼路徑的選擇、分段路由技術的源節(jié)點流表和數據包的MPLS 棧,以及本文路由算法的動態(tài)選擇等情況的結果分析,可以看到本文所提結合分段路由技術路由算法的可行性,為量子密鑰分發(fā)網絡的路由方案提供一種新的思路。
4.2.2 鏈路密鑰池密鑰資源
圖9 表示使用本文所提方案與使用OSPF算法情況下各條鏈路密鑰池中剩余密鑰量的三次日志輸出情況。 從圖9 的(a)可以看出,本文所提方案和OSPF 鏈路密鑰資源變化趨勢幾乎完全相同,但到(b)(c)圖可以看到,兩種算法的密鑰資源情況開始出現一些偏差,說明本文所提方案的動態(tài)調整路徑起到了作用。 總的來說,采用本文所提方案和OSPF 算法各鏈路密鑰池的資源分布情況相差較大,本文所提方案下的鏈路密鑰池密鑰量相比OSPF 算法更加均勻,資源的利用也更加均衡。 從圖中也可以看到,有幾條鏈路的密鑰資源使用得較多,應該考慮對這些關鍵鏈路密鑰資源的合理利用。
4.2.3 用戶密鑰交換服務成功率
如圖10 所示為實驗得到兩種方案的用戶密鑰交換服務成功率。 從圖中可以看出,本文所提方案和OSPF 路由算法的服務成功率都隨著用戶密鑰交換服務數量的增加而降低,但由于本文所提方案可以根據鏈路密鑰池密鑰資源的情況動態(tài)選擇剩余密鑰量較多的鏈路作為中繼鏈路轉發(fā),而OSPF 路由方案始終選擇路由跳數最少的路徑中繼轉發(fā),導致最短中繼路徑上的鏈路密鑰不斷被消耗,所以用戶密鑰交換服務的成功率要高于OSPF 路由算法。
圖10 h1 請求h2 的用戶密鑰交換服務成功率
4.2.4 流表項開銷
圖11 為采用分段路由轉發(fā)技術和默認轉發(fā)技術下,不同數量終端對的密鑰交換服務所需要下發(fā)的流表項開銷。
圖11 最大流表項開銷
由于分段路由技術需要在初始化時安裝默認表項,所以在請求密鑰交換服務的終端對較少的情況下,流表項開銷要大于默認轉發(fā)技術。 但從圖中可以看出,隨著終端對數量的增大,分段路由轉發(fā)技術的優(yōu)勢越來越大,這是因為分段路由技術只需要新增源節(jié)點流表和中間節(jié)點流表,不需要向其他節(jié)點下發(fā)流表。 而在現實網絡中,發(fā)送密鑰交換請求服務的終端用戶對將比本文實驗要更多且情況更復雜,所以采用分段路由轉發(fā)技術在減少流表項開銷上具有很大優(yōu)勢。
本文面向量子密鑰分發(fā)網絡環(huán)境下的路由選擇問題,為減少控制器與中繼節(jié)點的通信以及數據層中繼節(jié)點的流表項開銷,結合分段路由技術設計了一種路由選擇算法。 針對QKD 網絡密鑰生成率低密鑰消耗不均勻等問題,利用K 最短路徑算法選出密鑰量充足且避免密鑰資源無意義消耗的密鑰中繼路徑,并根據網絡中鏈路密鑰量情況動態(tài)調整中繼路徑。 通過模擬量子保密通信網絡環(huán)境,實驗驗證了該路由選擇算法結合分段路由技術的可行性,并與目前QKD 網絡普遍使用的OSPF 路由算法進行對比,驗證該方案對于量子密鑰網絡中各鏈路密鑰池密鑰資源負載均衡以及用戶密鑰交換服務成功率的優(yōu)勢。 同時,實驗得出分段路由轉發(fā)技術相比于默認轉發(fā)技術運用到真實的基于SDN 的量子保密通信網絡中可減少流表項開銷,對于量子保密通信網絡的密鑰中繼節(jié)點的流表項開銷具有一定的參考價值。