劉春林,李韋鵬,秦 進
(1.凱里學院大數據工程學院,貴州 凱里 556011;2.貴州大學計算機科學與技術學院,貴州 貴陽 550025)
SDN作為新型網絡架構,它以控制器為核心,并對域內的交換機進行調度完成網絡數據和資源的傳遞,因其具有良好的擴展性和開放性而引起人們的重視[1]。隨著海量數據的聚合劃分,以及云計算和移動互聯對網絡即時性的需求,傳統IP網絡已經難以勝任[2-3]。由于SDN打破了傳統網絡的靜態特性,能夠把控制層和數據傳輸采取分離處理,從而更靈活的完成資源調度,更好的支持互聯網新技術。但是作為新型架構,SDN目前也存在一些技術難點。主要是控制器和流表等部署調度問題[4-5],調度策略的失誤將會導致網絡時延增加,負載失衡,擴展性降低等,進而影響網絡性能。為此,一些學者與研究人員正在努力解決。文獻[6]采取路徑與支配集作為目標,并考慮了生存性限定,對SDN控制器進行調度優化。該方法較C-MPC獲得了更好的網絡生存能力,也降低了網絡中控制器的使用數量,但是該方法缺乏對通信時間代價的考慮,使得它的低時延效果不好。文獻[7]在生存性的基礎上,還加入了時延與控制鏈路的限定。該方法能夠確保控制器的利用率和生存能力,同時也在一定程度上改善了網絡時延,但是動態管理效果不好。文獻[8]設計了包含時延、故障、以及節點的多目標模型,并通過SPEA-Ⅱ增強控制器調度性能。該方法能夠控制SDN的時延與路徑故障,但是沒有考慮數據量增加時的網絡負載問題。
基于以上研究的優缺點,本文從時延與負載出發,在目標約束的限定下,充分考慮SDN控制器、交換機,以及流表調度,設計了動態遷移優化策略改善網絡調度性能。并通過與經典k-median方法比較,驗證本文方法對SDN網絡性能的有效提升。

(1)

(2)
網絡累計通信代價來自于控制器與數據流兩方面,利用輸入參數可以表示為
(3)

(4)

在SDN網絡進行數據傳送時,控制器與交換機映射情況的變化,會對數據時延產生不同的影響。如果兩個交換機li與lj在網絡架構中互為鄰域,則由li向lj傳遞數據之后,lj將根據緩沖對數據流表采取驗證。經過驗證后,lj通知控制器收到一個輸入包。控制器針對輸入包與網絡情況采取相應的轉發策略,同時把數據封裝于流表。圖1具體描述了數據的傳輸流程,其中li位于lj的鄰域內。當數據從li出發送出,會先經過控制器cm封裝成數據流表,并對轉發策略采取規劃。如果直接轉發至鄰域lj的代價較大,則會選擇轉發至域內其它交換機lm,當lm驗證通過,才會將數據轉發至lj。此時lj對數據進行驗證,并向其對應的控制器cn發送通知,確定成功后再由cn對數據進行封裝。

圖1 數據傳輸流程
根據數據傳輸流程,網絡中li的路徑請求量可以描述如下
qim=∑L(i,j)+∑L(,j)
(5)
L(i,j)是由li向lj傳遞數據時對應的路徑請求量;∑L(i,j)項是計算cm相關的交換機請求量;∑L(,j)是計算非cm相關的交換機請求量。利用請求量qim,能夠確定cm負載情況,從而進一步確定cm平均處理時間
(6)
Rm是cm的容量;N是網絡節點數量。從tm公式可以看出,網絡時延與控制器的處理速度和節點數量有關。為降低網絡時延,同時增強網絡均衡,這里計算li對cm資源利用率rim=qim/Rm。推廣至整個網絡架構,可以得到網絡全部控制器的累計效用為
(7)
Ztotal值與控制器負載為正相關,據此,利用動態遷移便可以調節網絡的累計效用。動態遷移過程即是對控制器與交換機的重構。
數據流表下發過程中,需要考慮信道負載的具體情況[9]。對于信道h,負載飽和度公式描述為
(8)

(9)
同時定義網絡節點的聚集度為
(10)

(11)

(12)

至此,便可以計算出fc與fd的比值,利用該比值判斷負載情況,通過動態遷移實現流表的實時調整。按照傳統思想,要想完成多域場合下的數據傳遞,必須先經過域內多次傳遞,利用邊緣交換機完成鄰域間傳遞。這種操作過程需要的流表請求過于復雜,由此導致時延增加。為此,本文基于負載均衡的情況下,由控制器直接將流表傳遞至其它域的控制器上,形成高速鏈路。隨后再由各域控制器向本域內的交換機進行傳遞。如圖2中虛線所示,數據先從交換機li發送至該域的cm,cm對數據封裝后,一方面發送至該域的其它交換機,另一方面發送至非同域的cn。這種方式有效降低了流表下發和控制器的操作次數,有利于SDN網絡時延的降低。

圖2 動態遷移流表調度
仿真環境與算法分別基于networkx與Python來實現,并構建CORONET Global topology網絡拓撲,關于拓撲及環境的參數配置如表1所示。實驗過程中,為了充分模擬真實場景下的信道狀態,網絡中隨機生成傳遞數據,生成的packge數量在[100,1000]之間。同時,源和目標地址也隨機生成。SDN網絡采用三層控制,關于每層的具體配置如表2所示。

表1 拓撲及環境參數

表2 SDN網絡結構配置
由于網絡通信代價來自于控制器與數據流的操作轉發,時延調整系數λ可以平衡兩種主要時間代價的關系。于是,實驗首先對時延調整系數λ與通信代價之間的影響進行分析。改變調整系數λ,得到相應的累計通信代價,結果如圖3所示。從結果曲線可知,在0.54之前,通信代價隨著λ增大而減小;在0.54之后,通信代價隨著λ增大而增大;在λ等于0.54時通信代價最小。除了λ以外,交換機、控制器都是影響通信代價的因素。而對于它們,本文采用了動態遷移調度策略,實時改變它們的位置來調整域分配。

圖3 通信代價與時延調整系數λ之間的關系
調度策略的差異會導致網絡中控制器的差異,進而影響系統時延。為此,這里針對控制器變化對時延的影響進行仿真分析。控制器個數從3增加至8,對應的時延結果如圖4所示。實驗中引入了k-median方法進行對比。根據結果曲線可知,控制器增多的過程中,k-median方法的時延有明顯下降趨勢,尤其在控制器較少的情況下,下降速度較快,到了后期下降速度放緩。本文方法在控制器增多的過程中,時延曲線表現較為平穩,而且明顯優于k-median方法。這是因為本文方法以通信的時延代價作為調度目標,且引入了動態遷移策略,尤其在多域場景中,能夠根據負載情況將數據流表直接由控制器在域間進行發送,避免了域內多次傳遞后通過邊緣節點發送至域間,由此節省了大量數據處理和傳遞時間,同時也使得控制器個數對SDN網絡時延無顯著影響。雖然k-median也可以靠增加控制器的方式降低時延,但是在增加到一定程度后,性能改善不大,同時增加部署的控制器將提高網絡運行成本,并導致網絡復雜度升高。

圖4 平均時延與控制器個數之間的關系
改變SDN網絡的信道負載,從而驗證數據量對系統時延的影響。實驗過程中得到packge數量在[100,1000]之間變化時平均時延的變化情況,結果如圖5所示。根據結果曲線,數據量增加時,信道負載隨之增加,從而導致兩種方法的時延均隨之上升。但是本文方法的時延和增速顯然更小,這是因為本文方法的負載均衡較好,而且流表采用的是控制器發送,避免了對數據信道的大量依賴。

圖5 平均時延與數據量之間的關系
為了驗證光傳送網SDN調度方法的負載均衡情況,采用負載差異度作為衡量指標。其計算公式為
(13)

在注入packge數量為1000的情況下,仿真得到方法的負載差異度結果,如表3所示。由于本文方法的動態遷移不是針對路徑,而是針對數據傳遞過程中的控制器與交換機,所以遷移后的負載差異度更好。

表3 負載差異度結果
為了改善光傳送網SDN調度的動態性能,降低網絡時延,本文提出了以通信代價為目標的動態遷移策略。基于networkx與Python分別實現網絡拓撲與算法,仿真確定了λ取0.54時獲得最小通信代價。在最優調整系數情況下,分別通過仿真得到控制器個數變化、注入數據量變化對系統時延的影響,以及動態遷移對負載差異度的影響,結果證明了所提方法能夠避免域內多次傳遞和大量數據信道傳遞,從而有效降低SDN調度時延,同時,動態遷移策略有效提高了網絡的負載均衡度,有利于SDN網絡擴展。