軟件定義網絡架構下基于流調度代價的數據中心論文
針對傳統數據中心網絡極易發(fā)生擁塞的問題,提出了在軟件定義網絡(SDN)的架構下設計基于流調度代價的擁塞控制路由算法加以解決。首先,進行擁塞鏈路上的大小流區(qū)分,并對所有大流的各條等價路徑進行路徑開銷權重的計算,選擇權重最小的路徑作為可用調度路徑;然后,使用調度后路徑開銷變化量和流占用帶寬比例來共同定義流調度代價;最終選擇調度代價最小的流進行調度。仿真結果表明,所提算法能在網絡發(fā)生擁塞時降低了擁塞鏈路上的負荷,并且與僅進行流路徑選擇的擁塞控制算法相比,提高了鏈路利用率,減少了流傳輸時間,使得計算機網絡鏈路資源得到更好的利用。
0引言
傳統的數據中心網絡屬于訪問式網絡,其業(yè)務流量大部分都是客戶端與數據中心內部的被請求服務器之間的“南北流量”[1]。然而,隨著Map Reduce應用、虛擬機遷移以及其他帶寬密集型應用等的發(fā)展,數據中心服務器內部通信增多,一對多、多對一、多對多等集群通信模式[2]帶來了服務器間橫向流量的顯著增長。隨之而來的問題是,數據中心網絡內部原有帶寬已不能滿足橫向流量的傳輸需求,相應鏈路面臨極高的擁塞風險。加之傳統網絡結構復雜,路由算法大多采用分布式部署,造成擁塞控制算法的設計極為困難。不過,隨著軟件定義網絡(Software Defined Network, SDN)技術的出現和發(fā)展,數據中心網絡的擁塞控制出現轉機。SDN架構將數據層和控制層抽象分離[3],利用控制層的控制器對網絡進行集中管理,保存全網網絡狀態(tài)視圖,為算法設計提供了巨大便利。同時,SDN中數據轉發(fā)顆粒度為流,可以通過路由對流進行調度,從而解決網絡擁塞問題,因此,越來越多的研究關注SDN中通過路由算法的設計來進行擁塞控制[4]。
在使用路由應對SDN數據中心網絡擁塞問題的方法中,基本思路是在網絡擁塞發(fā)生時通過對流重新選路來將流從擁塞鏈路調度到輕負載鏈路以緩解網絡擁塞,即擁塞控制路由[5-7]。而擁塞控制路由主要有主備路徑路由和動態(tài)重路由兩種機制。主備路徑路由機制是指流進入網絡后為其安裝兩條路徑,在鏈路擁塞時能夠使流從主路徑快速切換到備用路徑,但是備用路徑不僅會消耗流表的存儲資源,而且也不具備時效性,在網絡發(fā)生擁塞時很可能已不滿足當前控制需要。而動態(tài)重路由機制能更好地利用SDN控制器具有全網網絡狀態(tài)信息視圖的優(yōu)勢,對擁塞進行實時控制,因此,國內外擁塞控制路由方案的設計主要集中在基于動態(tài)重路由的流調度。
基于動態(tài)重路由的流調度包括兩方面內容:一是對哪一條流進行重路由;二是如何對流進行重路由。在對哪條流進行重路由的問題上,考慮到數據中心網絡中混合了不同業(yè)務流量,表現出明顯的大象流和老鼠流[8]的大小流特征,而小流量因為持續(xù)時間相對較短,改變其路徑極有可能會增加時延和開銷,所以在鏈路擁塞時主要通過遷移大流量來實施調度。文獻[9]和文獻[10]都是在數據中心網絡流量達到調度條件時選擇大流量進行調度,提高了重路由的有效性。文獻[9]是在鏈路達到擁塞門限值后進行的調度,文獻[10]則是針對全網設置了全局負載均衡參數,當參數達到門限值后進行調度,但是它們都沒有對所調度的大流量的選擇作進一步研究,這難以保證所選流量是最優(yōu)調度對象。因為相同路徑上的多條流在重路由時,調度到相同的鏈路概率非常大,仍然容易產生新的擁塞問題。而在對流的重路由路徑選擇問題上,文獻[11]和[12]都采用了鏈路剩余容量作為權重來選擇路徑,但未考慮鏈路的實際路由開銷會降低調度效率這一因素。
針對上述動態(tài)重路由算法的一些不足,本文提出了一種基于流調度代價最小的擁塞控制路由算法,用于解決采用軟件定義網絡架構的新型數據中心網絡擁塞問題。
1基于流調度代價的擁塞控制路由算法
1.1路由算法機制
基于流調度代價最小的擁塞控制路由算法在設計時重點考慮了適合進行調度的大流的二次選擇,以及調度后路徑開銷和鏈路帶寬情況,其主要思想如下:
1)在對擁塞鏈路上的流進行大小流區(qū)分之后,對所有大流的各條等價調度路徑進行路徑開銷的計算,最終選擇開銷最小的路徑作為可用調度路徑,以保障調度路徑上每條鏈路具有充足的帶寬,實現最優(yōu)調度路徑的選擇。
2)引入調度代價來權衡網絡穩(wěn)定性和網絡鏈路利用率,使用調度后路徑開銷變化量和流占用可用帶寬比例來共同定義流調度代價,最終選擇調度代價最小的流進行調度。
具體擁塞控制路由機制如圖1所示。
考慮到該擁塞控制路由算法是基于現有路由器的控制功能來完成的,為了與其兼容,并在不發(fā)生網絡鏈路擁塞的情況下使原有路由功能仍然可以發(fā)揮較好作用,所以在路由機制中保留了路由初始化這一環(huán)節(jié)。而且,鏈路擁塞判斷也需要有一個初始化的路由表來統計鏈路上的相應信息并作后續(xù)處理。所以,圖1中,當控制器收到Packagein消息后,仍然會進行路由初始計算,一般以最短路徑為初始路由,并向相關交換機下發(fā)流表項。然后,控制器通過周期性發(fā)送StateRequest消息問詢交換機及其端口的狀態(tài)來對所有鏈路進行流量監(jiān)控;同時進行擁塞判斷。當發(fā)現鏈路負載大于擁塞門限值時,啟動動態(tài)重路由。
動態(tài)重路由首先對擁塞鏈路上所有流進行大小流分類?紤]到小數據流占用帶寬小、持續(xù)時間短和對時延敏感的特性,不宜對其進行調度,因此,選擇大數據流進行重路由計算,選擇路徑開銷最小的路徑。
在多條大數據流中,還要對等待調度的流進行再次選擇,即選出目標流,使得擁塞鏈路的負載減輕的同時,提高網絡的鏈路利用率。本文中使用調度代價對擁塞鏈路上的大數據流進行判斷,選擇最小的調度代價的數據進行調度。
最后刪除交換機中的原流表項,同時下發(fā)新的流表項。
1.2路由算法實現
1.2.1算法模型
網絡描述:給定數據中心網絡G=(V,E),其中:V為非空節(jié)點集,代表網絡節(jié)點集合;而E為邊集,代表網絡所有節(jié)點的鏈路集合,而每一鏈路e∈E有一固定開銷w。另外,定義P為源節(jié)點s∈V到目的節(jié)點d∈V的路徑集,其中第i條路徑用pi=ei1 → ei2 → … → eiK,而eijj=1,2,…,K表示第i條路徑pi的第j條鏈路。
鏈路利用率鏈路eij∈E的實時帶寬利用率ηij定義為鏈路已占用帶寬與該鏈路的總容量之比,如式(1)所示:
ηij=loadij/Bij×100%(1)
其中:Bij表示鏈路帶寬容量,即最大傳輸速率;而loadij則表示鏈路上的負載大小,即已被占用的帶寬。
1.2.2算法流程
于是基于流調度代價最小的擁塞控制路由算法可表示如下。
2算法性能仿真分析
2.1仿真環(huán)境搭建
實驗采用Mininet+Ryu的仿真平臺。Mininet是一款基于Linux Container架構開發(fā)的功能強大的輕量級軟件定義網絡仿真及測試平臺,利用它可以模擬出包括主機、鏈路和交換機在內的完整數據中心網絡[13]。而Ryu則是SDN中常用的開源控制器模塊[14]。此外,網絡中的交換機選用OpenvSwitch交換機。本文利用Python自定義編寫了如圖2所示的數據中心網絡中廣泛使用的FatTree拓撲,拓撲包括兩臺核心層交換機(交換機1和交換機2),8臺的聚合層交換機和邊緣層交換機(交換機3,交換機4,…,交換機10),而每4個聚合層交換機或邊緣層交換機組成一個Pod。
為實現控制器的路由及擁塞控制動態(tài)路由,在Ryu中添加了拓撲發(fā)現模塊、流量監(jiān)測模塊、路由模塊、擁塞控制重路由模塊及流表項管理模塊來完成算法功能,所需模塊結構如圖3所示。其中,拓撲發(fā)現模塊獲取算法中路由及流量監(jiān)控所需的網絡拓撲結構和鏈路連接接口信息。監(jiān)控模塊主要是對控制器控制下的`交換機進行流量監(jiān)控,統計并存儲;同時對鏈路狀態(tài)進行判斷,當發(fā)生鏈路擁塞時,觸發(fā)擁塞控制重路由機制,并將網絡信息傳給重路由模塊(Rerouting Engine)進行路徑計算和選流判斷。路由模塊在流剛進入網絡時用于初始路徑的計算,動態(tài)路由模塊周期性地檢測所用鏈路的擁塞情況,當任何一條鏈路的負載超過擁塞門限值時,將會對該鏈路上的一條或多條鏈路進行重路由。
實驗環(huán)境搭建中,流量的設置模擬了數據中心高動態(tài)流量特性下發(fā)生擁塞后的情況,設置為Pod1和Pod2之間互相發(fā)送流,數據包數量、大小、發(fā)包間隔相同,流的目的端隨機。實驗搭建平臺為筆記本一臺(Inter Core i7 4710、8GB),受條件限制,網絡運行規(guī)模較小,但兩個Pod之間的通信鏈路數量與具有4個核心交換機的情況下是一致的,仍然具有4條可用鏈路,擁塞發(fā)生時依舊可利用其多路徑的特性實施算法。同時由于數據包的發(fā)包速率受限,本文未按一般數據中心鏈路容量進行鏈路設置,而保持交換機端口速率為160Kb/s。所以在算法仿真驗證中,取20Kb/s作為大小流區(qū)分的閾值。另外,為了在流調度時優(yōu)先考慮鏈路的使用效率,取α=0.5, β=1。
2.2仿真結果及分析
首先,為了驗證算法實施后緩解鏈路擁塞的有效性,本文對兩條鏈路的鏈路使用情況進行了考察:一條是比較繁忙的鏈路1(即圖2中交換機1到交換機3的鏈路);另一條是負載相對較輕的鏈路2(即圖2中交換機1到交換機4的鏈路)。如圖4所示,鏈路1在網絡運行剛開始時鏈路利用率不斷上漲,到達峰值97%,超過90%的門限值,處于擁塞的狀態(tài),之后算法開始作用。鏈路2在30s左右才逐漸有負載,但鏈路1的擁塞并沒有得到立刻緩解,原因是擁塞鏈路上轉移的流的數目和大小沒有能使鏈路1上的負載降低到門限值以下。隨著鏈路1上的流不斷轉移到包括鏈路2在內的其他鏈路上,鏈路1到了60s以后擁塞情況得到緩解,一直低于門限值,處于平穩(wěn)狀態(tài)。
為觀察算法在數據中心網絡高動態(tài)流量模式下緩解鏈路擁塞的同時提高網絡鏈路利用率的性能,將本文提出的擁塞控制路由算法和僅對流的路徑進行選擇的非擁塞控制路由算法在網絡鏈路利用率和流量傳輸時間上進行了對比,鏈路利用率對比如圖5所示,傳輸時間如圖6所示。
由于流的數量較少,在實驗中整個網絡的鏈路利用率并不高,最大只有45%左右。由圖5可以看出,在各個主機開始發(fā)送數據包時,鏈路利用率逐漸上升,而且剛開始時利用率增長速度非?,在30s左右增速放緩,網絡發(fā)生擁塞。到70s左右,擁塞解決后鏈路利用率達到最高,之后本文提出的算法鏈路利用率一直保持在40%到46%,而僅對流的路徑進行選擇的非擁塞控制路由算法鏈路利用率在37%到43%。圖6是每個主機傳送整個數據流所用的時間對比此外,將主機1至主機8各自要進行傳輸的數據流定義為流1至流8,然后在圖6中得到了每個主機傳輸各自數據流所用的時間對比,由圖6可看出,本文算法中所有流的平均傳輸時間低于沒有進行流選擇的算法10%左右。
綜上所述,本文算法在網絡鏈路達到門限值后,能對擁塞鏈路上的流進行調度,以減緩擁塞,使得鏈路負載低于門限值,同時通過對流的路徑的選擇及對所需調度的流的選擇,使得網絡鏈路資源得到更好的利用。
3結語
本文針對現有SDN數據中心網絡擁塞控制路由算法在區(qū)分大小流之后沒有對所要調度的大流進行更加合理的選擇而導致新的擁塞問題的缺陷,提出了一種基流調度代價最小化的擁塞控制算法,并對其進行仿真驗證。仿真結果表明,本文算法能實現對流最優(yōu)調度路徑的選擇,并且在調度流的選擇過程中,考慮了網絡穩(wěn)定性和網絡鏈路利用率,有效地對擁塞鏈路進行調度以緩解擁塞情況,并且在鏈路利用率和傳輸效率方面有所提升,使得網絡鏈路資源得到更好的利用。然而,重路由的方法較多,本文采取的是全路徑路由,并沒有考慮到局部路由的情況。同時,在鏈路過于擁擠時,理論上一次性調度多條流可以提高擁塞緩解效率,而本文沒有考慮此種情況。最后,任何動態(tài)的擁塞控制路由算法都會隨著所處網絡規(guī)模的擴大而增加算法的復雜度,會給控制器和網絡鏈路傳輸造成額外負擔,這都需要一個量化的分析來體現算法的應用有效性,因此,接下來會針對上述問題作進一步研究。
【軟件定義網絡架構下基于流調度代價的數據中心論文】相關文章:
基于數據中心下共享服務體系的論文12-08
基于約束理論的混流生產調度研究07-03
淺談基于CAN網絡的機車調試軟件開發(fā)的論文10-28
電網調度實時數據庫的架構論文12-08