本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,具體涉及一種基于sdn的云平臺(tái)資源調(diào)度與管理系統(tǒng)及其應(yīng)用方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)和數(shù)據(jù)中心的發(fā)展,實(shí)時(shí)系統(tǒng)越來(lái)越多地應(yīng)用于各種分布式環(huán)境而形成的云計(jì)算已越來(lái)越受到科學(xué)界和商業(yè)領(lǐng)域的關(guān)注。云計(jì)算的主要思想是把互聯(lián)網(wǎng)上的各種計(jì)算資源整合在一起,但是,大規(guī)模云計(jì)算系統(tǒng)使用的資源具有高度動(dòng)態(tài)性和異構(gòu)性,資源環(huán)境具有的不可靠狀態(tài),使得云計(jì)算系統(tǒng)出現(xiàn)大規(guī)模資源調(diào)度失敗的可能性大大增加,因此有效管理云平臺(tái)資源迫在眉睫。
sdn的提出,給了我們解決問(wèn)題新方法,它將傳統(tǒng)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)平面和控制平面分離,將控制平面的功能集中放在控制器上實(shí)現(xiàn),通過(guò)集中式的控制器,以標(biāo)準(zhǔn)化的接口對(duì)各種網(wǎng)絡(luò)設(shè)備進(jìn)行管理和配置。目前,如floodlight等均提供了用于數(shù)據(jù)幀轉(zhuǎn)發(fā)的模塊,采用dijkstra最短路算法。但是此算法容易導(dǎo)致數(shù)據(jù)流集中到同一條路徑進(jìn)行轉(zhuǎn)發(fā),造成網(wǎng)絡(luò)擁塞。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:本發(fā)明的目的在于解決現(xiàn)有技術(shù)中存在的不足,提供一種基于sdn的云平臺(tái)資源調(diào)度與管理系統(tǒng)及其應(yīng)用方法,在sdn的平臺(tái)上利用改進(jìn)的蟻群算法進(jìn)行路由,為云平臺(tái)資源調(diào)度提供新思路。
技術(shù)方案:本發(fā)明的一種基于sdn的云平臺(tái)資源調(diào)度與管理系統(tǒng),包括網(wǎng)絡(luò)拓?fù)鋵W(xué)習(xí)模塊、鏈路狀態(tài)評(píng)估模塊和算法路由模塊,其中,網(wǎng)絡(luò)拓?fù)鋵W(xué)習(xí)模塊學(xué)習(xí)記錄全局的網(wǎng)絡(luò)拓?fù)?,鏈路狀態(tài)評(píng)估模塊對(duì)當(dāng)前鏈路狀態(tài)進(jìn)行評(píng)估得到狀態(tài)參數(shù),路由模塊在資源調(diào)度進(jìn)行路由選擇,用戶(hù)基于sdn網(wǎng)絡(luò)分別通過(guò)這三個(gè)模塊完成拓?fù)鋵W(xué)習(xí)、鏈路狀態(tài)評(píng)估以及算法路由的選擇。
本發(fā)明還公開(kāi)了一種基于sdn的云平臺(tái)資源調(diào)度與管理系統(tǒng)的應(yīng)用方法,包括以下步驟:
(1)用戶(hù)首先通過(guò)網(wǎng)絡(luò)拓?fù)鋵W(xué)習(xí)模塊完成拓?fù)鋵W(xué)習(xí),此過(guò)程使用監(jiān)聽(tīng)機(jī)制來(lái)實(shí)現(xiàn),當(dāng)控制器捕獲到監(jiān)聽(tīng)事件發(fā)生時(shí),調(diào)用與上述時(shí)間對(duì)應(yīng)的do()函數(shù)進(jìn)行處理,記錄拓?fù)湫畔ⅲ峁┤志W(wǎng)絡(luò)拓?fù)洌?/p>
(2)通過(guò)鏈路狀態(tài)評(píng)估模塊對(duì)當(dāng)前鏈路進(jìn)行狀態(tài)評(píng)估,了解當(dāng)前鏈路的情況,評(píng)估參數(shù)包括剩余帶寬,丟包率和跳數(shù),然后通過(guò)查詢(xún)當(dāng)前交換機(jī)端口參數(shù)的方法來(lái)獲取剩余帶寬和丟包率,接著對(duì)參數(shù)進(jìn)行處理得到帶寬使用量和丟包率,并存儲(chǔ)以備使用;
(3)通過(guò)路由模塊對(duì)步驟(2)所得結(jié)果相乘得到當(dāng)前鏈路的指數(shù),調(diào)用路由算法得出到達(dá)目標(biāo)資源的路徑,在多條路徑的情況下隨機(jī)選取一條作為合適路徑,對(duì)該路徑上的交換機(jī)下發(fā)流表。
進(jìn)一步的,所述步驟(1)的具體過(guò)程為:
(1.1)首先設(shè)置linkevent(鏈路事件)、connectionup(連接建立)、connectiondown(連接斷開(kāi))和hostevent(用戶(hù)事件)的監(jiān)聽(tīng);
(1.2)啟動(dòng)與上述事件對(duì)應(yīng)的discovery、conn和host_tracker模塊,其中connectionup與connectiondown均對(duì)應(yīng)conn模塊;
(1.3)判斷是否觸發(fā)上述事件,當(dāng)sdn控制器監(jiān)聽(tīng)到上述事件發(fā)生時(shí),調(diào)用與上述時(shí)間相應(yīng)的do()函數(shù)進(jìn)行處理,通過(guò)函數(shù)處理來(lái)記錄當(dāng)前網(wǎng)絡(luò)拓?fù)湫畔ⅰ?/p>
進(jìn)一步的,所述步驟(2)的具體過(guò)程為:
(2.1)采用查詢(xún)交換機(jī)端口狀態(tài)的方法獲取鏈路參數(shù),因此設(shè)置portstatsreceived事件的監(jiān)聽(tīng),并啟動(dòng)相應(yīng)的conn模塊;
(2.2)當(dāng)有新流到來(lái)時(shí),通過(guò)調(diào)用一定時(shí)間間隔(例如1s或者0.5s)的交換機(jī)端口查詢(xún)函數(shù)進(jìn)行端口的狀態(tài)查詢(xún),對(duì)所有連接到控制器的交換機(jī)的每個(gè)端口發(fā)送查詢(xún)請(qǐng)求,得到端口的剩余帶寬以及丟包率;
(2.3)利用模塊中的處理函數(shù)對(duì)查詢(xún)到的狀態(tài)變量進(jìn)行處理,記錄相應(yīng)的狀態(tài)參數(shù),計(jì)算該時(shí)間間隔內(nèi)每條鏈路的帶寬使用量及丟包率。
進(jìn)一步的,所述步驟(3)的具體過(guò)程為:
(3.1)根據(jù)鏈路狀態(tài)評(píng)估模塊所獲取的帶寬使用量及丟包率相乘得到的結(jié)果評(píng)價(jià)當(dāng)前鏈路狀態(tài),得到鏈路狀態(tài)指數(shù);
(3.2)路由算法(改進(jìn)蟻群算法)初始化參數(shù):設(shè)置最大循環(huán)次數(shù)nmax,初始化m只螞蟻,初始化信息素列表,可選路徑列表以及螞蟻禁忌表;
(3.3)循環(huán)次數(shù)n=n+1;
(3.4)螞蟻數(shù)目k=n+1;
(3.5)在蟻群算法的基礎(chǔ)上對(duì)概率公式進(jìn)行修改,添加一個(gè)穩(wěn)定因子sij,sij=nj/(nj+1),其中nj表示第j個(gè)節(jié)點(diǎn)的訪(fǎng)問(wèn)次數(shù)。開(kāi)始的穩(wěn)定因子為1,一但某節(jié)點(diǎn)被訪(fǎng)問(wèn)過(guò),穩(wěn)定因子的值為當(dāng)前的計(jì)算公式sij=nj/(nj+1)的結(jié)果,即概率公式修改如下:
然后根據(jù)概率公式選擇下一跳路徑;
公式中:t為路由時(shí)間;
(3.6)更新螞蟻軌跡及禁忌表:每選擇一條鏈路將該鏈路加入到螞蟻軌跡中,將螞蟻移動(dòng)到下一節(jié)點(diǎn),并將該節(jié)點(diǎn)加入禁忌表,若該節(jié)點(diǎn)不是目的節(jié)點(diǎn)且有下一跳可用鏈路,跳轉(zhuǎn)到(3.5)步繼續(xù)計(jì)算下一跳可用鏈路列表,若該節(jié)點(diǎn)是目的節(jié)點(diǎn),則不再計(jì)算下一跳可用鏈路列表,當(dāng)此螞蟻軌跡不在路徑列表中時(shí)將螞蟻軌跡加入鏈路列表;
(3.7)當(dāng)k≠m時(shí),跳轉(zhuǎn)到(3.4)步;
(3.8)當(dāng)循環(huán)次數(shù)n=nmax時(shí)循環(huán)結(jié)束,清空禁忌表,跳轉(zhuǎn)到(3.3)步,并更新每條鏈路上的信息素。對(duì)合法路徑上的信息素濃度更新公式也進(jìn)行修改,為達(dá)到一定的負(fù)載均衡,對(duì)于訪(fǎng)問(wèn)次數(shù)過(guò)多的節(jié)點(diǎn)降低其被選中的概率,即當(dāng)某節(jié)點(diǎn)訪(fǎng)問(wèn)次數(shù)達(dá)到一定值,路徑(i->j)可能不再被選擇,從一定程度減少了某條路徑的壓力,故在更新信息素濃度時(shí)添加一個(gè)均衡因子bij來(lái)控制其信息素的增加過(guò)程,
τij(t+1)=(1-p)·τij(t)+△τij(t)·bij
公式中:p代表信息素的揮發(fā)系數(shù);
通過(guò)對(duì)節(jié)點(diǎn)的訪(fǎng)問(wèn)次數(shù)nj記錄可以體現(xiàn)出路徑的動(dòng)態(tài)變化過(guò)程,一旦某節(jié)點(diǎn)從網(wǎng)絡(luò)中斷開(kāi),此時(shí)的nj變?yōu)?,當(dāng)然其選擇概率就變?yōu)?,而且一旦nj達(dá)到控制值qj后可能會(huì)繼續(xù)增加,但由于信息素τij(t)在一直減小,故增加到一定值后節(jié)點(diǎn)不再被訪(fǎng)問(wèn);此時(shí)未被選中的節(jié)點(diǎn)的訪(fǎng)問(wèn)次數(shù)值重新賦值為0,同時(shí)sij設(shè)為初始值1,τij恢復(fù)為初始值,一直循環(huán);
根據(jù)改進(jìn)蟻群算法得出到達(dá)目標(biāo)資源的路徑,在有多條路徑的情況下隨機(jī)選取一條合適的,并對(duì)該路徑上的交換機(jī)下發(fā)流表。
有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
(1)本發(fā)明引入sdn技術(shù),與傳統(tǒng)技術(shù)相比,sdn控制平面與數(shù)據(jù)平面分離開(kāi)來(lái),使操作變得更加靈活方便,更利于全局網(wǎng)絡(luò)拓?fù)涞膶W(xué)習(xí),尤其是在云平臺(tái)資源巨大的情況下,為了解云中虛擬機(jī)資源的情況提供了很好的方法。
(2)本發(fā)明考慮面向sdn的改進(jìn)蟻群算法路由,能夠動(dòng)態(tài)調(diào)整路由計(jì)算參數(shù),有效解決鏈路擁塞問(wèn)題,提高鏈路利用率,其中對(duì)蟻群算法中概率公式的改進(jìn),添加了一個(gè)穩(wěn)定因子,使得在進(jìn)行路徑選擇時(shí)避免一些不正確情況的發(fā)生。
(3)本發(fā)明考慮蟻群算法中信息素更新公式的改進(jìn),添加一個(gè)均衡因子,一定程度上解決了負(fù)載均衡問(wèn)題,不會(huì)產(chǎn)生某些節(jié)點(diǎn)不被訪(fǎng)問(wèn),而某些節(jié)點(diǎn)一直被訪(fǎng)問(wèn)的情況,從而使網(wǎng)絡(luò)達(dá)到相對(duì)平衡的狀態(tài)。
附圖說(shuō)明
圖1為本發(fā)明的整體結(jié)構(gòu)示意圖;
圖2為本發(fā)明中拓?fù)鋵W(xué)習(xí)的流程示意圖;
圖3為本發(fā)明中狀態(tài)評(píng)估的流程示意圖;
圖4為本發(fā)明中路由算法的流程示意圖。
具體實(shí)施方式
下面對(duì)本發(fā)明技術(shù)方案進(jìn)行詳細(xì)說(shuō)明,但是本發(fā)明的保護(hù)范圍不局限于所述實(shí)施例。
如圖1所示,本發(fā)明是一種基于sdn的云平臺(tái)資源調(diào)度與管理系統(tǒng),包括網(wǎng)絡(luò)拓?fù)鋵W(xué)習(xí)模塊、鏈路狀態(tài)評(píng)估模塊和算法路由模塊。其中,網(wǎng)絡(luò)拓?fù)鋵W(xué)習(xí)模塊學(xué)習(xí)記錄全局的網(wǎng)絡(luò)拓?fù)?,鏈路狀態(tài)評(píng)估模塊對(duì)當(dāng)前鏈路狀態(tài)進(jìn)行評(píng)估得到狀態(tài)參數(shù),路由模塊在資源調(diào)度進(jìn)行路由選擇,用戶(hù)基于sdn網(wǎng)絡(luò)分別通過(guò)這三個(gè)模塊完成拓?fù)鋵W(xué)習(xí)、鏈路狀態(tài)評(píng)估以及算法路由的選擇。
上述系統(tǒng)中使用sdn網(wǎng)絡(luò)架構(gòu),在sdn環(huán)境下實(shí)現(xiàn)云平臺(tái)資源的調(diào)度。其中sdn將網(wǎng)絡(luò)的控制平面與數(shù)據(jù)平面分離開(kāi)來(lái),使得sdn控制器在控制平面可為網(wǎng)絡(luò)提供全局拓?fù)湟晥D;利用sdn控制器,通過(guò)網(wǎng)絡(luò)拓?fù)鋵W(xué)習(xí)模塊可以完成拓?fù)鋵W(xué)習(xí),獲得云平臺(tái)的網(wǎng)絡(luò)拓?fù)?,鏈路評(píng)估模塊根據(jù)剩余帶寬和丟包率評(píng)估鏈路狀態(tài),路由模塊通過(guò)改進(jìn)的蟻群算法查找目標(biāo)資源,查找過(guò)程中若得到多條路徑,則隨機(jī)選擇一條合適的路徑進(jìn)行資源的分配,然后對(duì)所選取的路徑上的交換機(jī)下發(fā)流表完成資源調(diào)度,從而實(shí)現(xiàn)基于sdn的云平臺(tái)資源的調(diào)度與管理。
本發(fā)明還公開(kāi)了一種基于sdn的云平臺(tái)資源調(diào)度與管理系統(tǒng)的應(yīng)用方法,包括以下步驟:
(1)如圖2所示,用戶(hù)首先通過(guò)網(wǎng)絡(luò)拓?fù)鋵W(xué)習(xí)模塊完成拓?fù)鋵W(xué)習(xí),此過(guò)程中使用監(jiān)聽(tīng)機(jī)制來(lái)實(shí)現(xiàn),當(dāng)控制器捕獲到監(jiān)聽(tīng)事件發(fā)生時(shí),調(diào)用相應(yīng)函數(shù)進(jìn)行處理,記錄拓?fù)湫畔?,提供全局網(wǎng)絡(luò)拓?fù)洹?/p>
首先設(shè)置linkevent(鏈路事件)、connectionup(連接建立)、connectiondown(連接斷開(kāi))和hostevent(用戶(hù)事件)的監(jiān)聽(tīng);啟動(dòng)與上述事件對(duì)應(yīng)的discovery、conn和host_tracker模塊;判斷是否觸發(fā)上述事件,當(dāng)控制器監(jiān)聽(tīng)到上述事件發(fā)生時(shí),調(diào)用相應(yīng)的函數(shù)進(jìn)行處理,通過(guò)函數(shù)處理來(lái)記錄當(dāng)前網(wǎng)絡(luò)拓?fù)湫畔?例如各個(gè)路由器的下一跳以及相鄰路由器是哪些)。
(2)如圖3所示,對(duì)每一個(gè)交換機(jī)的端口進(jìn)行狀態(tài)查詢(xún),調(diào)用查詢(xún)函數(shù),端口查詢(xún)函數(shù)經(jīng)過(guò)一定時(shí)間間隔(本系統(tǒng)設(shè)置為1s,可以根據(jù)要求進(jìn)行一定調(diào)整)對(duì)交換機(jī)每一個(gè)端口發(fā)送一個(gè)查詢(xún)請(qǐng)求,要求返回端口的狀態(tài)變量。經(jīng)過(guò)自定義的狀態(tài)處理函數(shù)對(duì)得到的端口的狀態(tài)變量進(jìn)行處理,計(jì)算出這段時(shí)間間隔內(nèi)帶寬使用量及丟包率,并存儲(chǔ)下來(lái)給算法路由模塊使用;
(3)通過(guò)路由模塊將帶寬使用量及丟包率相乘得到當(dāng)前鏈路的指數(shù),調(diào)用路由算法得出到達(dá)目標(biāo)資源的路徑,在多條路徑的情況下隨機(jī)選取一條作為合適路徑,對(duì)該路徑上的交換機(jī)下發(fā)流表。
如圖4所示,步驟(3)的具體過(guò)程為:
(3.1)根據(jù)鏈路狀態(tài)評(píng)估模塊所獲取的參數(shù)相乘得到的結(jié)果評(píng)價(jià)當(dāng)前鏈路狀態(tài),得到鏈路狀態(tài)指數(shù);
(3.2)路由算法(改進(jìn)蟻群算法)初始化參數(shù):可以設(shè)置最大循環(huán)次數(shù)nmax=50,初始化m=1500只螞蟻,初始化循環(huán)次數(shù)及螞蟻數(shù)目為0,初始化信息素列表,可選路徑列表以及螞蟻禁忌表;
(3.3)循環(huán)次數(shù)n=n+1;
(3.4)螞蟻數(shù)目k=n+1;
(3.5)在蟻群算法的基礎(chǔ)上對(duì)概率公式進(jìn)行修改,添加一個(gè)穩(wěn)定因子sij,即sij=nj/(nj+1),其中nj表示第j個(gè)節(jié)點(diǎn)的訪(fǎng)問(wèn)次數(shù);開(kāi)始的穩(wěn)定因子為1,一但某節(jié)點(diǎn)被訪(fǎng)問(wèn)過(guò),穩(wěn)定因子的值為當(dāng)前的計(jì)算公式sij=nj/(nj+1)的結(jié)果,即概率公式修改如下:
然后根據(jù)概率公式選擇下一跳路徑;
公式中:t為路由時(shí)間;
(3.6)更新螞蟻軌跡及禁忌表:每選擇一條鏈路將該鏈路加入到螞蟻軌跡中,將螞蟻移動(dòng)到下一節(jié)點(diǎn),并將該節(jié)點(diǎn)加入禁忌表,表示已經(jīng)走過(guò);若該節(jié)點(diǎn)不是目的節(jié)點(diǎn)且有下一跳可用鏈路,跳轉(zhuǎn)到(3.4)步繼續(xù)計(jì)算下一跳可用鏈路列表,若該節(jié)點(diǎn)是目的節(jié)點(diǎn),則不再計(jì)算下一跳可用鏈路列表,當(dāng)此螞蟻軌跡不在路徑列表中時(shí)將螞蟻軌跡加入鏈路列表;
(3.7)當(dāng)k≠m時(shí),跳轉(zhuǎn)到(3.4)步;若當(dāng)前螞蟻數(shù)量k沒(méi)有達(dá)到初始化的螞蟻數(shù)目m,可繼續(xù)循環(huán)上述步驟,保證鏈路較高的利用率;
(3.8)當(dāng)循環(huán)次數(shù)n=nmax時(shí),循環(huán)結(jié)束,清空禁忌表,跳轉(zhuǎn)到(3.3)步,并更新每條鏈路上的信息素,對(duì)合法路徑上的信息素濃度更新公式也進(jìn)行修改,保證了鏈路動(dòng)態(tài)的更新;為達(dá)到一定的負(fù)載均衡,對(duì)于訪(fǎng)問(wèn)次數(shù)過(guò)多的節(jié)點(diǎn)降低其被選中的概率,即當(dāng)某節(jié)點(diǎn)訪(fǎng)問(wèn)次數(shù)達(dá)到一定值,路徑(i->j)可能不再被選擇,從一定程度減少了某條路徑的壓力,故在更新信息素濃度時(shí)添加一個(gè)均衡因子bij來(lái)控制其信息素的增加過(guò)程,
τij(t+1)=(1-p)·τij(t)+△τij(t)·bij
公式中:p代表信息素的揮發(fā)系數(shù);
通過(guò)對(duì)節(jié)點(diǎn)的訪(fǎng)問(wèn)次數(shù)nj記錄可以體現(xiàn)出路徑的動(dòng)態(tài)變化過(guò)程,一旦某節(jié)點(diǎn)從網(wǎng)絡(luò)中斷開(kāi),此時(shí)的nj變?yōu)?,當(dāng)然其選擇概率就變?yōu)?,而且一旦nj達(dá)到控制值qj后可能會(huì)繼續(xù)增加,但由于信息素τij(t)在一直減小,故增加到一定值后節(jié)點(diǎn)不再被訪(fǎng)問(wèn);此時(shí)未被選中的節(jié)點(diǎn)的訪(fǎng)問(wèn)次數(shù)值重新賦值為0,同時(shí)sij設(shè)為初始值1,τij恢復(fù)為初始值,一直循環(huán);
根據(jù)改進(jìn)蟻群算法得出到達(dá)目標(biāo)資源的路徑,在有多條路徑的情況下隨機(jī)選取一條合適的,并對(duì)該路徑上的交換機(jī)下發(fā)流表。
本發(fā)明中的均衡因子使得鏈路中不會(huì)有某些節(jié)點(diǎn)一直不被訪(fǎng)問(wèn)(即存在無(wú)用的節(jié)點(diǎn))以及某些節(jié)點(diǎn)一直被訪(fǎng)問(wèn)(發(fā)生鏈路擁塞)的情況的發(fā)生,起到了一定的負(fù)載均衡的作用。
本實(shí)施例中,設(shè)置鏈路帶寬為2m/s,路由模塊令0<t<=100s,α設(shè)為1,β設(shè)為5,p設(shè)為0.5,q設(shè)為1,最大循環(huán)次數(shù)為50,每次循環(huán)螞蟻個(gè)體數(shù)設(shè)為30;這里可以在mininet下建立網(wǎng)絡(luò)拓?fù)?,采用所述路由算法模擬資源調(diào)度進(jìn)行路由,最終發(fā)現(xiàn)其在路由時(shí)延和丟包率方面具有很強(qiáng)的優(yōu)越性。