本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種基于sdn的路由選擇方法。
背景技術(shù):
傳統(tǒng)網(wǎng)絡(luò)中都是單個(gè)設(shè)備地管理,而且管理員對(duì)網(wǎng)絡(luò)中發(fā)生的很多事情不可見(jiàn),網(wǎng)絡(luò)里面有很多各種各樣不同廠家的設(shè)備,很難有一個(gè)統(tǒng)一的管理平臺(tái),有時(shí)候出現(xiàn)了新的業(yè)務(wù)需求,要對(duì)網(wǎng)絡(luò)中的部分設(shè)備進(jìn)行改動(dòng),但是很多時(shí)候哪怕是改動(dòng)一個(gè)命令都不可能,因?yàn)樵O(shè)備對(duì)管理員來(lái)說(shuō)就是一個(gè)黑盒子。就網(wǎng)絡(luò)而言,轉(zhuǎn)發(fā)路徑都是通過(guò)動(dòng)態(tài)協(xié)議計(jì)算的,管理員很難去知道某個(gè)業(yè)務(wù)的報(bào)文走了哪條路徑,也很難弄清楚是哪里發(fā)生了阻塞,是不是有更優(yōu)的路徑存在,就算如果有,也很難快速把這個(gè)業(yè)務(wù)切換到更優(yōu)的路徑上去,因?yàn)槁窂讲⒉皇枪芾韱T指定的,而是協(xié)議計(jì)算出來(lái)的。網(wǎng)絡(luò)里面涉及了各種各樣復(fù)雜的協(xié)議,還有一些是廠家私有的,管理員很難去把所有的知識(shí)都弄懂,這也導(dǎo)致了網(wǎng)絡(luò)出問(wèn)題的時(shí)候管理員難以定位,基于網(wǎng)絡(luò)拓?fù)涞淖詣?dòng)化業(yè)務(wù)部署就更加無(wú)從談起。
這些問(wèn)題帶來(lái)的最直接的影響就是網(wǎng)絡(luò)中要部署新業(yè)務(wù)的時(shí)候,通常要經(jīng)過(guò)很長(zhǎng)的時(shí)間,所以傳統(tǒng)網(wǎng)絡(luò)架構(gòu)下的新形勢(shì),已經(jīng)達(dá)到了它能力的極限,變成了業(yè)務(wù)發(fā)展的瓶頸,為了解決現(xiàn)有網(wǎng)絡(luò)中的這些問(wèn)題,sdn是目前最被認(rèn)可、影響力最大的一種方式。相比傳統(tǒng)網(wǎng)絡(luò),sdn解決這些問(wèn)題的核心是改變傳統(tǒng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)流進(jìn)行控制的方式。在傳統(tǒng)網(wǎng)絡(luò)中,報(bào)文從源轉(zhuǎn)發(fā)到目的過(guò)程中,報(bào)文的轉(zhuǎn)發(fā)行為是逐條獨(dú)立控制的,獨(dú)立地進(jìn)行配置,有自己特定的處理能力和配置方式,這種控制是完全分布式的。
基于上述分析,利用sdn網(wǎng)絡(luò)架構(gòu)的優(yōu)勢(shì),采用一種優(yōu)化的路由算法是確定路由轉(zhuǎn)發(fā)路徑顯得格外重要。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種基于sdn的路由選擇方法,能夠提高整個(gè)系統(tǒng)的穩(wěn)定性和路徑選擇的最優(yōu)化,提高整體鏈路的利用率。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:提供一種基于sdn的路由選擇方法,使用sdn控制器,包括以下步驟:
(1)收集組網(wǎng)連接的信息數(shù)據(jù)文件,根據(jù)從信息數(shù)據(jù)文件中讀取的信息數(shù)據(jù)更新網(wǎng)絡(luò)節(jié)點(diǎn)和網(wǎng)絡(luò)鄰接表;
(2)根據(jù)得到的網(wǎng)絡(luò)節(jié)點(diǎn)和鄰接表采用平衡全局負(fù)載均衡算法進(jìn)行路由計(jì)算及路由選擇;
(3)將得到的最優(yōu)路徑進(jìn)行保存并寫(xiě)入文件。
所述步驟(1)中信息數(shù)據(jù)文件通過(guò)連接信息讀取階段來(lái)更新網(wǎng)絡(luò)節(jié)點(diǎn)和網(wǎng)絡(luò)鄰接表。
所述步驟(2)中平衡全局負(fù)載均衡算法為網(wǎng)絡(luò)中每一對(duì)源主機(jī)和目的主機(jī)都存儲(chǔ)了這兩臺(tái)主機(jī)之間所有可能的路徑集合,通過(guò)
所述步驟(2)中還包括平衡度監(jiān)測(cè)步驟,具體為:通過(guò)測(cè)試計(jì)算出動(dòng)態(tài)負(fù)載均衡閾值和負(fù)載均衡參數(shù),當(dāng)負(fù)載均衡參數(shù)大于動(dòng)態(tài)負(fù)載均衡閾值時(shí),則觸發(fā)并運(yùn)行動(dòng)態(tài)流調(diào)度策略,將最大流調(diào)度到負(fù)載最小的節(jié)點(diǎn),最小流調(diào)度到負(fù)載最大的節(jié)點(diǎn),以平衡節(jié)點(diǎn)負(fù)載,實(shí)現(xiàn)整體動(dòng)態(tài)平衡。
所述sdn控制器將自己的api通過(guò)restapi的形式向外暴露,restapi將程序的api封裝成為通用的httpget/put的形式,通過(guò)發(fā)送http請(qǐng)求即可完成api操作。
有益效果
由于采用了上述的技術(shù)方案,本發(fā)明與現(xiàn)有技術(shù)相比,具有以下的優(yōu)點(diǎn)和積極效果:本發(fā)明可以適用于任意控制器,本發(fā)明不只是針對(duì)單跳使用貪婪算法,b-glb算法是一種綜合考慮整條路徑上的可用帶寬,使用路徑權(quán)重進(jìn)行選路的算法,且在選路過(guò)程中監(jiān)控系統(tǒng)會(huì)進(jìn)行實(shí)時(shí)監(jiān)控,避免出現(xiàn)網(wǎng)絡(luò)局部擁塞。本發(fā)明的平衡度是根據(jù)整個(gè)網(wǎng)絡(luò)拓?fù)溆?jì)算而來(lái),是本發(fā)明的一個(gè)參考數(shù)據(jù)。本發(fā)明在提高路徑選擇速率的同時(shí),保證了整個(gè)網(wǎng)絡(luò)系統(tǒng)的穩(wěn)定性和實(shí)用性。
附圖說(shuō)明
圖1是本發(fā)明的流程圖;
圖2是b-glb路由算法具體流程圖。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例,進(jìn)一步闡述本發(fā)明。應(yīng)理解,這些實(shí)施例僅用于說(shuō)明本發(fā)明而不用于限制本發(fā)明的范圍。此外應(yīng)理解,在閱讀了本發(fā)明講授的內(nèi)容之后,本領(lǐng)域技術(shù)人員可以對(duì)本發(fā)明作各種改動(dòng)或修改,這些等價(jià)形式同樣落于本申請(qǐng)所附權(quán)利要求書(shū)所限定的范圍。
本發(fā)明的實(shí)施方式涉及一種基于sdn的路由選擇方法,使用sdn控制器,包括以下步驟:收集組網(wǎng)連接的信息數(shù)據(jù)文件,根據(jù)從信息數(shù)據(jù)文件中讀取的信息數(shù)據(jù)更新網(wǎng)絡(luò)節(jié)點(diǎn)和網(wǎng)絡(luò)鄰接表;根據(jù)得到的網(wǎng)絡(luò)節(jié)點(diǎn)和鄰接表采用平衡全局負(fù)載均衡算法進(jìn)行路由計(jì)算及路由選擇;將得到的最優(yōu)路徑進(jìn)行保存并寫(xiě)入文件。
本發(fā)明在路由計(jì)算階段采用的是b-glb(平衡全局負(fù)載均衡)算法。此算法可以當(dāng)數(shù)據(jù)流集中到同一路徑進(jìn)行轉(zhuǎn)發(fā)時(shí),會(huì)在路由轉(zhuǎn)發(fā)過(guò)程中實(shí)時(shí)進(jìn)行監(jiān)控,設(shè)置一個(gè)平衡度,一旦超過(guò)這個(gè)平衡度,會(huì)立刻改變轉(zhuǎn)發(fā)路徑,避免發(fā)生我那過(guò)來(lái)?yè)砣?/p>
本實(shí)施方式中使用的sdn控制器可以是通用控制器(包括flooddlight、opendaylight、ryu、pox/nox等等)。該控制器收集網(wǎng)元的連接信息及帶寬,根據(jù)openflow交換機(jī)信息數(shù)據(jù)更新網(wǎng)絡(luò)節(jié)點(diǎn)、網(wǎng)絡(luò)鄰接表,為每個(gè)主機(jī)節(jié)點(diǎn)計(jì)算出最優(yōu)路徑,最后根據(jù)計(jì)算出的最優(yōu)路徑下發(fā)相應(yīng)的流表。sdn控制器會(huì)將自己的api通過(guò)restapi的形式向外暴露,restapi將程序的api封裝成為通用的httpget/put的形式,這樣就無(wú)需關(guān)注程序?qū)崿F(xiàn)細(xì)節(jié),通過(guò)發(fā)送http請(qǐng)求即可完成api操作。
如圖1所示,本發(fā)明的整體流程框圖,包括連接信息讀取階段5、路由計(jì)算階段6和路由信息保留階段7。最優(yōu)路徑的計(jì)算、調(diào)度決策在應(yīng)用層實(shí)現(xiàn),利用控制器進(jìn)行設(shè)備管理、拓?fù)涔芾怼⒘鞅砉芾砗蛿?shù)據(jù)包檢測(cè)等。其中,數(shù)據(jù)信息文件1通過(guò)連接信息讀取階段5來(lái)更新網(wǎng)絡(luò)節(jié)點(diǎn)和網(wǎng)絡(luò)鄰接表2;根據(jù)得到的網(wǎng)絡(luò)節(jié)點(diǎn)和鄰接表2采用b-glb算法3進(jìn)行路由計(jì)算及路由選擇6,在b-glb算法中包含了一個(gè)對(duì)平衡度的實(shí)時(shí)監(jiān)測(cè)過(guò)程8,避免網(wǎng)絡(luò)發(fā)生局部擁塞。最后進(jìn)去路由信息保留階段7,保存所計(jì)算出的最佳路徑,并寫(xiě)入output.txt文件。
具體的b-glb路由算法如下:b-glb為網(wǎng)絡(luò)中每一對(duì)源主機(jī)和目的主機(jī)都存儲(chǔ)了這兩臺(tái)主機(jī)之間所有可能的路徑集合,計(jì)算出每一條可能路徑的路徑權(quán)重:
其中可用帶寬的平均值為:
式中,wp為路徑權(quán)重;
由上式可知,可用帶寬平均值越大,路徑權(quán)重wp也就越大,路徑上鏈路平均可用帶寬越高。σlinksbw值越小,權(quán)重wp越大,因此路徑上每條鏈路的可用帶寬之間差異越小,越不容易因某條鏈路出現(xiàn)帶寬瓶頸而引起擁塞。
但是上述步驟還無(wú)法保證系統(tǒng)長(zhǎng)時(shí)間運(yùn)行負(fù)載不會(huì)發(fā)生傾斜。因此本發(fā)明在此算法的基礎(chǔ)上設(shè)定一個(gè)平衡度,用此不斷的監(jiān)測(cè)系統(tǒng),當(dāng)監(jiān)測(cè)到系統(tǒng)發(fā)生傾斜時(shí),將最大流調(diào)度到負(fù)載最輕的節(jié)點(diǎn)上,對(duì)相關(guān)節(jié)點(diǎn)的流量進(jìn)行流調(diào)度。具體方式如下:通過(guò)測(cè)試計(jì)算出動(dòng)態(tài)負(fù)載均衡閾值ω(即最大傾斜度)和負(fù)載均衡參數(shù)φ(t),負(fù)載均衡參數(shù)越大,各節(jié)點(diǎn)的負(fù)載分布越不均勻,負(fù)載均衡參數(shù)越小,各節(jié)點(diǎn)的負(fù)載差異越小。當(dāng)φ(t)>ω時(shí),負(fù)載出現(xiàn)傾斜,將觸發(fā)并運(yùn)行動(dòng)態(tài)流調(diào)度策略對(duì)負(fù)載進(jìn)行動(dòng)態(tài)調(diào)整,即將最大流調(diào)度到負(fù)載最小的節(jié)點(diǎn),最小流調(diào)度到負(fù)載最大的節(jié)點(diǎn),以平衡節(jié)點(diǎn)負(fù)載,實(shí)現(xiàn)整體動(dòng)態(tài)平衡。