陳源寶,吳禮華,黃 雙,謝 剛,陳夏爽
(1.武漢第二船舶設計研究所,湖北 武漢 430000;2.武漢大學 電子信息學院,湖北 武漢 430000)
隨著網絡用戶數量的不斷增多以及網絡規模的不斷擴大,各種新型網絡應用不斷涌現,對如今網絡運營商的服務能力提出了越來越高的要求,傳統的網絡形態無法及時滿足這些新業務和新需求,并逐漸暴露出一系列問題。因此需要研究既能快速滿足需求,又能全面解決傳統網絡遺留問題的新技術和新手段。
在一個可編程的虛擬網絡中,每個虛擬網絡切片都是由一些互相獨立的、服務于特定應用的網絡功能單元構成,并且每個租戶都擁有自己的控制器。多個切片之間存在嚴格的邏輯隔離,租戶之間的應用流量和操作行為相互不會造成影響,即使在共享部分底層物理資源時也是如此。這種模式對于未來網絡運營商而言是非常有吸引力的,它可以極大降低網絡建設成本,提高運營收益。
在多租戶虛擬網絡環境中,用戶對于網絡服務的多樣性以及性能的穩定性需求并不會隨著網絡架構和運營模式的升級而削弱;反而,用戶需求之間的差異性和動態性對于不同切片間資源的分配和調度效率提出了新的挑戰。例如,在多租戶場景下,運營商需要為每個租戶提供有保障的差異化服務。在5G、窄帶物聯網[1]和機器對機器通信[2]等復雜應用場景中,需要能夠為租戶同時提供多種QoS等級的混合服務。同時,由于租戶的需求是動態變化的,與很多因素有關,比如能耗、應用類型以及使用習慣等,更進一步增加了虛擬資源的管理難度。
針對這個問題,目前業界對于虛擬資源的動態分配與優化問題的主流解決方案存在以下幾點不足:① 缺乏足夠高效的網絡狀態感知方法,現有的方法要么精確度不足,支持的特征參數比較少,要么測量成本(計算和存儲)很高;② 缺乏能夠自動獲取特征,在線解決虛擬網絡嵌入問題的方法,現有方法要么只適用于求解小規模問題,要么只適合離線場景,無法滿足用戶需求的動態性;③ 對租戶虛擬網絡中的局部資源優化問題時,沒有將其與虛擬網絡請求聯系起來當做一個聯合優化問題看待,對虛擬網絡的動態性考慮不足。
本文針對多租戶虛擬網絡的特殊環境,將用戶流量調度與網絡虛擬資源分配看做一個聯合優化問題,提出了面向多租戶的流量調度算法以及用于共享鏈路的動態帶寬分配算法,該算法能夠釋放更多的物理網絡資源,明顯降低了租戶網絡的延時和擁塞。對所提算法進行了實驗仿真,并對結果進行分析。
基于虛擬化的網絡環境給租戶QoS的保障工作帶來了新的挑戰。如何在基于SDN的虛擬網絡中達到與專用硬件所保證的服務質量相當的水平是一個必須解決的重要問題。
目前對于這個問題,Al-Jawad等人[3]提出了一種基于強化學習(Reinforcement Learning,RL)的框架,其利用基于策略網絡管理的Q-learning算法來優化基于多媒體應用的SDN網絡中的QoS問題。通過定義業務矩陣的方式來表示網絡狀態,針對RL-Agent設計了4種不同的動作:① 不做任何操作;② 降低數據速率;③ 增加數據速率;④ 重新路由。而獎勵信號是基于用戶服務等級協議(Service Level Agreement,SLA)的要求。雖然由該方法引入了更多的網絡開銷,但實驗結果表明,與基于多媒體業務的傳統方法相比,QoS保障的能力顯著提高。
文獻[4]提出了一種可用于SDN網絡的認知路由引擎(Cognitive Routing Engine,CRE),主要由3個模塊組成。第一個模塊是認知路由算法模塊(Cognitive Routing Algorithm Module,CRAM),該模塊采用隨機神經網絡并結合強化學習來尋找可使目標函數最大化的流量路徑,以滿足應用的QoS需求。該方法中流量的轉發端口可以在兩種不同的模式下進行:① 探索模式;② 開發模式。在探索模式中,隨機選擇輸出端口,而當處于開發模式時,選擇概率最大的神經元節點作為輸出。因此,當選擇的新路徑獲得的獎勵值高于閾值時,則認為該路徑是正確的,同時更新相應的權重參數;反之,則表示Agent做出了錯誤的選擇,會更新權重以允許重新選擇其他路徑。第二個模塊是網絡監控模塊,它獲取網絡狀態信息并通知CRAM。最后一個模塊是路徑轉換模塊,它將CRIM找到的路徑轉換成Openflow流規則。基于Mininet[5]和Géant網絡拓撲的實驗表明,CRE達到接近最優路徑所需要的數據比傳統SDN方式快9.5倍。
文獻[6]給出了一種可為遠程手術提供QoS保障的方法。該方法周期性收集網絡狀態的統計數據,并使用蟻群算法來計算外科醫生和患者之間的最佳路徑。這種方法改進了平均端到端延遲、平均丟包率和峰值信噪比。類似的研究還有文獻[7]中的一種結合QoS需求和能量感知的SDN路由策略,采用了基于進化算法的多目標進化算法來處理兩個目標函數。
在網絡中,同時存在多個不同QoS需求的流量會對用戶的體驗帶來以下影響:實時性業務會占用那些非實時業務的資源,而那些QoS冗余度高的業務可能在出現擁塞時被迫給冗余度低的業務讓路,因為在未加干預時,實時業務流量無法公平有效地分享網絡資源[8]。當多業務共存時必然意味著各種類型SLA的存在,這就進一步增加了全局路由決策的難度[9]。現有的關于SDN中流量工程的研究工作在面對不同租戶應用的流量調度時,并沒有深入考慮過多租戶虛擬化場景下提供QoS一致性保障的解決方案。且傳統的網絡配置并未考慮帶寬會有動態變化的需求,即所謂帶寬配置是剛性的,但是在多租戶虛擬網絡中,如果不及時進行調整就會出現資源利用率降低的情況。
本文的目標是設計一種可以將切片資源申請與業務流量調度聯合進行優化的方案,以確保在虛擬資源完全隔離的情況下,可運行在多租戶應用程序之間的最佳流量調度方案。
虛擬化切片和流量調度的聯合模型可用如下歸納的公式來描述。

目標函數minGn;?n∈N ∑1≤n
根據建立的目標函數,提出一種QoS保障的動態流量分配算法QVR,如算法1所示,它可以在保障端到端QoS的情況下調度數據流,然后,讓該流量調度算法與網絡hypervisor的反饋控制算法一起工作,實現一種自適應控制,可為多個租戶提供一個最大化最小流到達速率的動態解決方案。

算法1:QVR輸入:G1,G2,...,GN;鏈路容量{ci,j},QoS約束{Dmaxn,f,Jn,f,pmaxn,f},輸出:總傳輸速率λ*,流量的調度方法{Xnf,i,j}1:for 每個切片GNdo2: for 每條流f∈Fndo3: 查找{snf,dnf}之間的所有路徑4: for 每條路徑k do5: 初始化λnf,k=吠6: While 評價QoS約束Eq.(7)-(10),λnf,kdo7: λnf,k←λnf,k-18: 對于路徑k查找所有滿足Eq.(4)-(6)的{Xnf,i,j}9: end10: end11: λnf=maxkλnf,k12: end13: λn=minλnff∈Fn14: end15: 最終得到 λ*=∑n∈Nλn
首先,對于子網中每個應用的流量而言,找出流量的“源-目的”對之間所有可用路徑,然后對于這些路徑依據上文中的約束條件進行評估,輸出相應的最大流量抵達速率。用算法1中步驟6中的QoS約束進行評估,如果QoS無法滿足此輪中給定的到達率,則該評估結果輸出真值。在這種情況下,算法會主動降低到達速率,并通過步驟8對路徑k進行相應的流量調度路徑查找,經過多輪迭代后算法找到最優解后退出循環。
最終算法可在所有路徑中選擇流量的最大速率作為到達速率和每個切片中的最小流速率,同時也可以相應地獲得多個租戶的總速率。
如算法2所示,在虛擬網絡請求和流動態調度算法1之間提供了一個自適應的反饋控制,為虛擬化切片策略和路由決策的聯合控制提供支持。在執行過程中,網絡hypervisor在接收到分配策略后,首先為多租戶將SDN基礎網絡切分為多個虛擬切片,一旦切片完成后,動態流量調度算法1將會輸出網絡吞吐量和響應時間的最優調度策略。正常情況下該算法可以解決QoS需求隨時間變化的動態問題,然而,如果網絡資源的分配不能提供可行的方案(比如λ*=0),此時算法2對網絡hypervisor提供反饋控制,請求更好的網絡切片來及時生成可執行的切片策略。有了這種自適應的反饋方案就能及時解決在保障QoS的同時,為虛擬資源的分配和流量調度的問題尋找聯合優化方案。

算法2:反饋控制輸入:G;{wmaxn};{ci,j};{Dmaxn,f,Jn,f,pmaxn,f}輸出:{Gn};λ*;{Xnf,i,j}1:Whileλ*==0do 請求網絡虛擬切片資源2: {Gn}←(G,{wmaxn})執行流量調度3: (λ*;{Xnf,i,j})←算法1({Gn},·)4:end

(11)
(12)
第i個資源請求者的資源的需求估計值r(i) 可由式(13)確定。對于資源請求者來說,利用率ux可以處于上下邊界γ和β之間;p(i)表示來自第i個資源提供者的供給值,對于資源提者而言,利用率ux在邊界γ和β之間。式(14)和式(15)確定了資源需求的總量rt和資源供給的總量pt,g和h分別為資源請求者和提供者的數目。
(13)
(14)
(15)
本文使用帶約束條件的損失函數來獲得最優調度策略,最優調度策略需要保證總成本最小,損失函數如式(16),其中,cm和xm分別為mth優先級中每個資源單元的成本和mth優先級中的資源數量。
(16)
為保證調整算法可行,式(17)表示優先級m的資源總量之和,其必須小于總供應量;為保證最小帶寬的使用,式(18)限制資源回收pm(i),并考慮最小帶寬限制;式(19)確定由切片提供優先級m的可用資源pm(i)的范圍;式(20)表示所需資源數量需要介于最大和最小rt之間。
(17)
pm(i)≤Ai(t)-Si,
(18)
x1,x2,…,xn≥0,
(19)
(20)
OpenVirteX(OVX)[10]是一個開源的網絡hypervisor,它可以作為交換機和SDN控制器之間的透明代理,為租戶提供端到端的虛擬化網絡。每一個虛擬網絡可稱為一個切片,每個切片都有屬于自己的網絡和計算資源,OVX使切片之間彼此隔離,隔離機制包括帶寬隔離、拓撲隔離、CPU資源隔離和流表空間隔離。
OVX允許每個租戶在各自的切片內選擇不同的SDN控制器,更重要的是其支持地址虛擬化。它可以為切片內用戶任意分配虛擬地址,例如各自的虛擬IP和虛擬MAC。除此之外,OVX還提供開放的API供開發者使用。
實驗系統的結構如圖1所示。主要包括SDN控制器、OVX虛擬化平臺、彈性帶寬分配模塊、QoS保障模塊以及軟件交換機組成的數據平面。其中,QoS保障模塊運行在SDN控制器中,動態帶寬分配模塊運行在OVX平臺上。

圖1 實驗系統結構圖Fig.1 Experimental system structure diagram
實驗分兩部分進行,設置好租戶/切片的初始狀態后,先測試QoS保障的流量調度功能模塊(算法1、算法2),然后測試動態帶寬分配模塊的性能。
參考Sprint網絡參數,使用Mininet生成一個包含25個節點、53條鏈路的底層網絡拓撲,如圖2所示,其中標注了鏈路延遲的典型值,單位為ms。

圖2 底層物理層網絡拓撲Fig.2 The underlying physical layer network topology

圖3為租戶1~3的虛擬拓撲結構,圖4為測試鏈路拓撲圖,其中虛線標注了3個租戶所共享的底層鏈路,單位均為ms。可以看到運行了OVX之后,按照要求創建了3個切片,且這3個切片擁有較少的公共鏈路,接下來將在這3個虛擬網絡切片上測試前面所提到的2個應用程序的性能。

(a) 租戶1

圖4 多租戶共享的鏈路Fig.4 Multi-tenant shared link
本測試設置了2個對:OSPF算法和隨機分配算法。每次實驗持續時間120 s,共進行30輪,結果如圖5和圖6所示。

(a) 30次實驗中共享鏈路數的平均值圖

(a) 30次實驗中擁塞鏈路的平均值
首先測試了流量調度功能,由圖6(a)可以看出,在對比的3種方法中,OSPF是通過選擇對應切片上的最短路徑來進行轉發,它的表現與隨機選擇路徑轉發流量的方法類似,共享鏈路的數量快速上升,尤其是隨機路徑方法,共享鏈路數很快就達到了最大值。然而本文方法由于與OVX存在反饋機制,可以一直維持穩定的共享鏈路數,所以各個租戶可以獲得更好更穩定的服務。圖6(b)統計的是出現了擁塞的鏈路數,本文將延時達到最大可接受閾值(100 ms)定義為該鏈路出現擁塞。可以看到,QVR方法出現的擁塞鏈路數最少,能夠在較短時間內達到穩定。原因在于對路由策略做出的優化,QVR方法選擇了最優吞吐量和延時的路徑,并拒絕了那些會引起切片資源過載的路徑,在遇到與切片資源沖突的情況,它會受到QoS保障算法的約束并及時反饋給OVX,申請更多的資源。本文統計了3個切片中租戶業務延時的情況,如圖7所示。

(a) 租戶1
由于實驗的初始設置,租戶1運行的是實時應用,且引入了很多突發流量,所以要求比租戶2和租戶3擁有更低的延時保障。結果顯示OSPF和隨機路徑方式由于延遲很大而且波動也很大,不能滿足租戶1的需求,而且在運行租戶2和3的業務時也都產生了更大的延遲。另一方面,租戶QVR算法在3個切片上都獲得了更短、更穩定的延時,尤其是在運行租戶1的業務時,能夠保障延時平均值在5 ms以內。驗證了該算法對于流量調度和QoS保障的有效性,可為多租戶在虛擬網絡中的應用提供可靠和高效的傳輸。
測試鏈路拓撲如圖4所示,圖中藍色標注的鏈路為存在租戶共享的鏈路,測試參數的初始配置如表1所示。然后對鏈路進行帶寬初始化設置,每條物理鏈路的最小帶寬容量是75 Mbit/s。切片1的優先級是1,意味著最高。切片1的初始最小帶寬保證是15 Mbit/s,最大上限是25 Mbit/s,其余切片的最低保障帶寬是20 Mbit/s,上限為30 Mbit/s。最大帶寬限制可以根據當前網絡和服務的狀態進行自動調整。

表1 實驗設置Tab.1 Experimental setup
所有切片在業務運行時的帶寬變化情況如圖8所示。隨著切片中帶寬利用率與總體帶寬利用率關系的變化(紫色虛線為物理、鏈路帶寬總利用率),各個切片的最大帶寬上限也隨之發生調整,例如在最左側的第一組窗口中,切片2的帶寬利用率一直在80%以上,而切片3此時利用率不足40%,此時切片1的利用率幾乎與總利用率相當,所以切片2與切片3構成互相供給關系,帶寬分配模塊中的分析子模塊會判定切片2此時的角色為資源請求者,切片3的角色為資源提供者,系統會將切片2的帶寬上限提高、切片3的帶寬上限降低,以將切片3鏈路中閑置的帶寬分享給切片2;等到達第二個窗口后,切片2的利用率開始下降到50%以下,此時切片1的利用率上升到了85%,又構成了供給關系,切片2由資源請求者變成了資源提供者,切片1由資源中立者變為資源提供者,可以看到它們的帶寬上限也分別作出了調整。每個切片都在不斷切換,以保證始終較高的總體帶寬利用率。

(a) 寬帶利用率
實驗證明,本文的動態帶寬分配方案保障了每個業務片的最小可用帶寬,且可以根據實際情況動態調整最大帶寬限制。與單獨的OVX平臺相比,本文的動態帶寬分配將網絡的總體利用率提高了25.7%,僅在控制器處理新消息的延遲方面做了很小的犧牲(增加了約8 ms的延時)。可見對OVX的操作增加了控制器和數據平面之間的通信開銷,盡管動態帶寬分配模塊需要利用OVX做為最終策略的執行者,OVX增加的開銷對也會其性能造成直接影響,但是共享鏈路上可用帶寬的動態分配使得在使用虛擬化切片的基礎上進一步提高了底層資源的利用率。
在多租戶虛擬網絡環境中,用戶對于網絡服務的多樣性以及性能的穩定性需求越來越高,而現有方法都存在很大缺陷。本文將租戶應用的QoS保障與虛擬網絡中的流量調度作為一個多目標聯合優化問題進行了研究,提出了QVR流量調度算法,改進了這一問題。通過將網絡虛擬化和流量調度結合起來,QVR能夠針對用戶時變的QoS需求、網絡拓撲和流量統計數據提供一種自適應的解決方案,為能滿足各租戶的業務流量計算應用QOS需求的最佳路徑。然后討論了如何在共享的鏈路上動態調整租戶切片帶寬容量上限的問題,為帶寬資源供給不足的租戶激活空余鏈路資源,達到提供底層物理鏈路帶寬利用率的目的。
性能評估結果證實了QVR算法和動態帶寬分配算法能夠保障在多租戶場景下,提供鏈路的利用率,并且降低了通信延時,減少了擁塞的發生。