魏 軍 蘇曉偉 馮 凡
(克拉瑪依職業技術學院,新疆 克拉瑪依 834000)
目前大多運營商都在陸續部署SDN網絡,未來互聯網的發展趨勢在很大程度上會基于SDN架構。一般情況下,該網絡在規劃時采用各控制器內交換機和控制器之間建立映射,不過這種映射導致部署基于靜態策略,無法對網絡中發生的流量變化給出反應,只是在具體的網絡環境下,網絡流量的改變會導致負載均衡性能降低,如何在復雜環境下實現負載均衡就成為控制器集群的一個亟待解決的關鍵問題[1]。為了解決這一問題,本文對新型互聯網的發展和算法進行實驗和驗證,對實際復雜網絡中存在的情況進行分析,提出了一種基于負載均衡的遷移算法,通過將較高負載控制器內的設備遷移到負載小的設備中,從而實現集群間的負載均衡[2]。
在SDN定義的互聯網絡中,整體SDN由多組控制器進行集群控制,每個控制器包含三個主要部分,分別是狀態感知模塊,策略引導模塊和遷移行動控制模塊[3]。其中狀態感知模塊主要是對周圍信息進行實時感知,了解不同控制器的負載情況,通過發送自身負載和接受負載信息,了解周圍狀態。將集群中的控制器群按照最大流量處理能力進行三個等級的劃分,小于最大處理能力三分之一流量的屬于欠載控制器,超過三分之二流量的屬于過載控制器,介于上述二者之間的屬于正常負載控制器。當發現集群內過載控制器超過一半的時候,會發出流量警告。當集群內某一控制器首次出現過載情況,其會判斷是否存在流量警告,若存在流量警告就不做流量遷移,若不存在流量警告則利用自己感知獲取到的狀態信息輸入策略引導模塊,策略引導模塊會根據輸入數據和已經創建好的策略完成遷移方案的選擇,給遷移模塊發送遷移方案,最后遷移模塊根據方案指令進行遷移操作,順序執行方案內既定內容,完成后更新狀態感知模塊內信息并向外傳遞最新信息[4]。

圖1 SDN互聯網控制集群負載均衡架構圖
本文SDN互聯網絡中包括節點和鏈路,其集合分別用N和L進行表示,為了便于開展實驗研究,這里假設所有節點都是由控制器和交換機組成,并且每個控制器都可以在拓撲結構中部署,控制器對結構中的交換機進行優化管理[5]。
狀態感知模塊主要是動態的獲取其他控制器的負載信息,并發送自己掌握的負載信息給其他模塊,從而使得域內狀態感知模塊都了解整體負載狀態,并且根據數據記錄下控制器過載欠載的數量和位置,以便將信息發送到策略引導模塊進行下一步分析處理。三個主要功能組件分別是信息收發組件、感知組件、存儲組件[6]。
2.1.1 信息收發組件
信息收發組件主要對控制器子域的負載情況進行信息的收發,影響負載的因素主要包括:一是控制器需要維護管理SDN的互聯網絡視圖,例如OpenFlow交換機狀態、鏈路狀態等[7];二是控制器對本組交換機發來的流量信息狀態進行分析處理,并依據決策下發流量表項[8];三是和其他控制器域進行信息的收發交流,實現控制器對全網的感知。基于不同的互聯網網絡系統,以上因素對于負載影響的區別也很大,控制器處理OpenFlow交換機的消息上傳會消耗大量的系統資源,同樣處理此類消息下發到交換機需要消耗系統計算資源,每個控制器子域收到的Packet-in消息數量為:,其中為每個控制子域中交換機發送的Packet-in消息數量。在以上公式中,m代指的是域內交換機的個數[9]。代指的是控制器與交換機的狀態信息值,其取值范圍為{0,1},分別對應控制器j不控制交換機i,或者控制器j控制交換機i。控制器和交換機通信來獲取交換機的鏈路信息,其中通信數據量用以下公式表示:
2.1.2 感知組件
感知組件的主要作用是針對當前控制器的狀態進行策略調整,為了便于進行分析,按照前面分析的情況,閾值為1/3和2/3處,當負載控制器集群中一半以上處于過載情況時,集群處于過載警告狀態,此時設置集群閾值為1/2,為了方便進行判斷,分別設置兩個閾值為。控制器集群的負載值為L,單個控制器的負載為L(Cj)那么對于單個控制器的負載和集群負載情況可以分為以下幾種情況:
2.1.3 存儲組件
存儲組件主要根據控制器的狀態確定控制器是否處于待遷移狀態,這個遷移狀態分為待遷出和待遷入。這個數據集存儲后為后期進行選擇和遷入遷出動作做準備。
單個控制器負載均衡情況由負載均衡度表示,負載均衡度由控制器當前負載與集群負載均衡的方差數值表示,再進行歸一化轉換,如下所示:

可以調整負載均衡度數值,方便對負載均衡策略進行變化,例如設置負載均衡控制參數為γ,其數值可以選擇0.5左右的數值。時,控制器集群處于低負荷狀態,這時候控制器的負載處于不足情況,可以接受交換機的遷入,將該控制器處于遷入數據集中。當時,此時表示該控制器處于集群均衡負載平均值階段,此時該控制器負載合適,既不能作為遷入也不能作為遷出數據集。當時,則表示該控制器在整體集群中處于過載狀態,此時應將其化為遷出數據集[10]。
策略引導模塊主要是對遷入遷出數據集中的控制器進行策略選擇,進行優先級處理,首先是從遷出數據集管理的控制器中選擇待遷出交換機,在該模塊中,集群中會出現多個控制器處于遷出狀態,結合整體集群過載情況,交換機采用不同的遷出策略進行集群負載的調整[11]。
當集群處于少量控制器負載過大的情況下,可以通過負載均衡進行交換機遷移,減緩控制器的負載載荷,實現集群負載均衡,原則在于遷出控制器的負載值不應大于遷入控制器的負載增加后的數值,否則遷移意義不大,這里設定的策略為,遷入后目標控制器的負載載荷應該小于遷出目標控制器的負載載荷[12]。
當控制器集群存在大量過載控制器的時候,此時需要進行快速調整完成控制器的負載壓力,這時按照控制器的負載排序,優先處理負載最重的控制器,這里采用優先處理過載控制器中數據傳輸數據最多的交換機進行調配,建立優先映射關系,可以通過和負載較低的控制器中的交換機進行互換,使得雙方達到負載均衡[13]。
對于策略引導中使用哪個控制器是需要進行選擇的。在正常負載均衡過程中,對于整體負載進行分析處理可以讓單一控制器進行處理,以減少其他控制器的額外數據分析處理導致的開銷,影響用戶的使用,所以這里可以將負載最低的控制器作為策略引導主控制器。
遷移后整體效果主要由遷移之后集群的負載方差作為量化指標,以最優遷移策略下方差值最小。即每次遷移后方差應小于遷移前方差再進行遷移操作。

已經完成遷移策略制定之后,獲取相關遷移或交換交換機的基本信息,本模塊需要組織進行高效的遷移和完成遷移動作,這里通過三元組來表示遷移對象,包括遷移策略制定主控制器、遷移交換機、目標控制器三部分。在遷移過程中,遷移互聯網絡中可能需要多臺交換機進行遷移,這里需要在遷移過程中更新遷移三元組,及時剔除遷移后已經達到中間值的目標控制器,有效實現遷移混亂,所有交換機都完成遷移之后,目標控制器完成對遷移后的互聯網絡狀態信息進行發送,各控制器均更新自身信息表。
本文采用裝有Centos7操作系統的VMware軟件作為基礎實驗平臺。SDN控制器互聯網絡使用minint仿真平臺進行構建,控制平面的控制器使用ONOS。
實驗中共部署了5個控制器,控制器分布在不同的VM中,每個控制器上鏈接多個虛擬交換機。通過Cbench軟件生成大量的Packet-in消息并上傳控制器,分別對控制器下發Pack-out和Flow-out消息的時延做測試,結果如圖所示:

圖2 控制器消息平均時延圖
整理測試數據,當發送的消息速率大于1 000 ps/s時,消息響應時間大大增加,這里將負載容量設置為1 000 ps/s,控制器閾值設為800 ps/s。
對比本文提出的面向負載均衡的遷移策略(LOBS)與其他文獻中提到的算法進行比較分析。無負載均衡策略執行狀態下,當向控制器注入更多消息時,可以看出交換機處于過載,控制器整體數據處于過載狀態。

圖3 無負載遷移狀態下控制器狀態變化

圖4 不同負載策略下的負載分布

圖5 不同遷移策略下響應時間和遷移效率比
經過試驗可以看出,本文的遷移策略具有以下優點:
(1)控制器的響應時間更少。因為對于控制器的情況進行分析,針對不同互聯網外部環境采用最優策略,使得集群達到最優負載的時間最短。
(2)負載均衡效率更突出。由于主控制器掌握全互聯網的負載分布數據,所以可以通過觀察分析給出最優解,使得整個互聯網網絡的負載方差最小,負載效率更高。
通過實驗分析,未來互聯網中基于分布式架構的遷移算法,可以很好地實現控制器集群內部的流量負載均衡,均衡各個控制器的載荷,優化算法可以有效實現交換機的遷出遷入活動,在此基礎上還需要進一步研究SDN的負載均衡算法,提出在實際工作中復雜互聯網環境下更加普適的負載均衡策略。