本發(fā)明涉及分布式網(wǎng)絡(luò)領(lǐng)域,特別是一種在分布式網(wǎng)絡(luò)中支持集中控制的高效算法。
背景技術(shù):
:在傳統(tǒng)網(wǎng)絡(luò)中,每個(gè)轉(zhuǎn)發(fā)設(shè)備(如交換機(jī)、路由器)通過分布式路由協(xié)議(如RIP、OSPF、ISIS)相互之間交換網(wǎng)絡(luò)狀態(tài)信息并計(jì)算數(shù)據(jù)的轉(zhuǎn)發(fā)路徑,然后根據(jù)得出的轉(zhuǎn)發(fā)路徑并配置自己的轉(zhuǎn)發(fā)表,當(dāng)網(wǎng)絡(luò)請求到來時(shí)按照轉(zhuǎn)發(fā)表進(jìn)行轉(zhuǎn)發(fā);在軟件定義網(wǎng)絡(luò)(SDN)中,由SDN控制器根據(jù)整個(gè)網(wǎng)絡(luò)的狀態(tài)計(jì)算數(shù)據(jù)的轉(zhuǎn)發(fā)路徑,然后控制器一一為每個(gè)轉(zhuǎn)發(fā)設(shè)備配置轉(zhuǎn)發(fā)表,當(dāng)網(wǎng)絡(luò)請求到來時(shí),轉(zhuǎn)發(fā)設(shè)備按照轉(zhuǎn)發(fā)表進(jìn)行轉(zhuǎn)發(fā)。我們可以結(jié)合傳統(tǒng)網(wǎng)絡(luò)和SDN的特點(diǎn),由中心控制器根據(jù)整個(gè)網(wǎng)絡(luò)的狀態(tài)計(jì)算數(shù)據(jù)的轉(zhuǎn)發(fā)路徑,然后控制器根據(jù)計(jì)算出的轉(zhuǎn)發(fā)路徑,計(jì)算出一個(gè)增廣的網(wǎng)絡(luò)(在原本的網(wǎng)絡(luò)中添加一些虛假結(jié)點(diǎn)和虛假鏈路),然后控制器根據(jù)計(jì)算出的增廣拓?fù)湓诰W(wǎng)絡(luò)中添加虛假結(jié)點(diǎn)和虛假鏈路,然后轉(zhuǎn)發(fā)設(shè)備通過分布式路由協(xié)議計(jì)算出數(shù)據(jù)在增廣后的網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑,因?yàn)橛刑摷俳Y(jié)點(diǎn)和虛假鏈路的存在,所以轉(zhuǎn)發(fā)設(shè)備通過分布式路由協(xié)議計(jì)算出的轉(zhuǎn)發(fā)路徑會達(dá)到和之前中心控制器計(jì)算出的轉(zhuǎn)發(fā)路徑相同的效果,之后各個(gè)轉(zhuǎn)發(fā)設(shè)備按照自己計(jì)算出的轉(zhuǎn)發(fā)路徑配置自己的轉(zhuǎn)發(fā)表,當(dāng)網(wǎng)絡(luò)請求到來時(shí),轉(zhuǎn)發(fā)設(shè)備按照轉(zhuǎn)發(fā)表進(jìn)行轉(zhuǎn)發(fā)。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明的目的是提出一種在分布式網(wǎng)絡(luò)中支持集中控制的高效算法,能從質(zhì)上減少虛假結(jié)點(diǎn)與鏈路這兩方面的總開銷。本發(fā)明采用以下方案實(shí)現(xiàn):一種在分布式網(wǎng)絡(luò)中支持集中控制的高效算法,中心控制器計(jì)算數(shù)據(jù)轉(zhuǎn)發(fā)路徑的時(shí)候,不僅考慮鏈路方面的開銷,同時(shí)也將虛假結(jié)點(diǎn)相關(guān)的開銷考慮進(jìn)去,具體包括以下步驟:步驟S1:當(dāng)一個(gè)中心控制的分布式網(wǎng)絡(luò)接收到一個(gè)網(wǎng)絡(luò)請求時(shí),依次以網(wǎng)絡(luò)中每一個(gè)結(jié)點(diǎn)作為源點(diǎn),用線性規(guī)劃求最小費(fèi)用流的方法求出每個(gè)源點(diǎn)到匯點(diǎn)的鏈路開銷最小的路徑并記錄下來;其中這一步不考慮鏈路上的帶寬限制;步驟S2:將網(wǎng)絡(luò)中每段鏈路上通過的數(shù)據(jù)流量設(shè)為未知數(shù),對于每個(gè)出度大于或等于2的結(jié)點(diǎn),根據(jù)從該點(diǎn)流出的流是否流向從該點(diǎn)該點(diǎn)到匯點(diǎn)的鏈路開銷最小的路徑上的下一跳,用未知數(shù)表示出在該點(diǎn)處添加的虛假結(jié)點(diǎn)個(gè)數(shù);步驟S3:用線性規(guī)劃求最小費(fèi)用流的方法結(jié)合步驟S2中用未知數(shù)表示出的虛假結(jié)點(diǎn)個(gè)數(shù),求出一數(shù)據(jù)傳輸路徑,使得鏈路相關(guān)的開銷和虛假結(jié)點(diǎn)相關(guān)開銷的總和達(dá)到最小。進(jìn)一步地,步驟S1中,用一個(gè)無向圖G=(V,E)來表示網(wǎng)絡(luò),其中V為網(wǎng)絡(luò)中的結(jié)點(diǎn)的集合,E為網(wǎng)絡(luò)中的鏈路的集合,即邊的集合;用CS表示單位流量從每條邊通過所需的開銷的集合,用BS表示每條邊上剩余帶寬的集合;用W1表示V中的結(jié)點(diǎn)數(shù),用W2表示E中的邊數(shù),用W3和W4分別表示CS和BS中元素的個(gè)數(shù);則V={v1,v2,...,vW1},E={e1,e2,...,eW2};如果l為G中的一條邊,C(l)是單位流量從l通過所需的開銷,B(l)是l上剩余的帶寬,并且C(l)∈CS,B(l)∈BS;對于每一個(gè)e∈E,e=<vi,vj>,vi,vj∈V,1≤i,j≤W1;網(wǎng)絡(luò)請求包括源點(diǎn)、匯點(diǎn)、需求的帶寬,用R=(S,D,BR)表示,其中,S表示源點(diǎn),D表示匯點(diǎn),BR表示需求的寬帶;目標(biāo)為最小化虛假結(jié)點(diǎn)方面和鏈路方面的總開銷用TC表示:TC=Σl∈E(C(l)*f(l))+αF;]]>其中,f(l)表示邊l上的流量,F(xiàn)表示網(wǎng)絡(luò)中需要添加的虛假結(jié)點(diǎn)個(gè)數(shù)總和,α為一個(gè)可變參數(shù),用來根據(jù)具體情況調(diào)整虛假結(jié)點(diǎn)方面和鏈路方面開銷的所占的權(quán)重。進(jìn)一步地,步驟S1中所述用線性規(guī)劃求最小費(fèi)用流的方法求出每個(gè)源點(diǎn)到匯點(diǎn)的鏈路開銷最小的路徑并記錄下來中,用線性規(guī)劃求最小費(fèi)用流時(shí)約束條件為:(1)對于任一結(jié)點(diǎn)v∈V,且V不為源點(diǎn)或匯點(diǎn),有:Σvi∈V,vi≠v,<vi,v>∈Ef(<vi,v>)=Σvi∈V,vi≠v,<v,vi>∈Ef(<v,vi>);]]>(2)(3)對所有邊<vi,s>,如果vi∈V,且vi≠s,且<vi,s>∈E,則f(<vi,s>)=0;(4)(5)對所有邊<t,vi>,如果vi∈V,且vi≠t,且<t,vi>∈E,則f(<t,vi>)=0;線性規(guī)劃的目標(biāo)為:使最小。進(jìn)一步地,所述步驟S2中用未知數(shù)表示出在該點(diǎn)處添加的虛假結(jié)點(diǎn)個(gè)數(shù)具體包括以下步驟:步驟S21:設(shè)從A向A到匯點(diǎn)的最短路徑上下一跳的流量為x,判斷x是否等于從A點(diǎn)流出的總流量,若是,則在結(jié)點(diǎn)A處添加0個(gè)虛假結(jié)點(diǎn);否則,進(jìn)入步驟S22;步驟S22:判斷x是否等于0,若是,則進(jìn)入步驟S23;否則進(jìn)入步驟S24;步驟S23:判斷網(wǎng)絡(luò)中是否存在一條邊以A為弧尾,且該邊上的流量等于從A流出的總流量;若是,則在結(jié)點(diǎn)A處添加1個(gè)虛假結(jié)點(diǎn);否則在結(jié)點(diǎn)A處添加20個(gè)虛假結(jié)點(diǎn);步驟S24:判斷x是否等于從A點(diǎn)流出的總流量的一半,若否,則在結(jié)點(diǎn)A處添加20個(gè)虛假結(jié)點(diǎn);若是,則進(jìn)入步驟S25;步驟S25:判斷網(wǎng)絡(luò)中是否存在一條邊以A為弧尾,且這條邊不在A到匯點(diǎn)的最短路徑上,且該邊上的流量等于x,若是,則在結(jié)點(diǎn)A處添加1個(gè)虛假結(jié)點(diǎn);否則,在結(jié)點(diǎn)A處添加20個(gè)虛假加點(diǎn)。進(jìn)一步地,所述步驟S3的線性規(guī)劃的約束條件為:(1)對于任一結(jié)點(diǎn)v∈V,且V不為源點(diǎn)或者匯點(diǎn),有:Σvi∈V,vi≠v,<vi,v>∈Ef(<vi,v>)=Σvi∈V,vi≠v,<v,vi>∈Ef(<v,vi>);]]>(2)(3)對所有邊<vi,s>,如果vi∈V,且vi≠s,且vi≠s,且<vi,s>∈E,則f(<vi,s>)=0;(4)(5)對所有邊<t,vi>,如果vi∈V,且vi≠t,且<t,vi>∈E,則f(<t,vi>)=0;(6)對每一條邊l∈E,則f(l)≤B(l);線性規(guī)劃的目標(biāo)為:使得最小。與現(xiàn)有技術(shù)相比,本發(fā)明有以下有益效果:本發(fā)明中心控制器計(jì)算數(shù)據(jù)轉(zhuǎn)發(fā)路徑的時(shí)候,不僅考慮鏈路方面的開銷,同時(shí)也將虛假結(jié)點(diǎn)相關(guān)的開銷考慮進(jìn)去。本發(fā)明從質(zhì)上減少了將中心控制運(yùn)用在分布式網(wǎng)絡(luò)中的總開銷。附圖說明圖1為本發(fā)明的原理流程示意圖。圖2為本發(fā)明實(shí)施例的分布式網(wǎng)絡(luò)中支持集中控制的高效方法示意圖。圖3為本發(fā)明實(shí)施例單個(gè)結(jié)點(diǎn)處所添加的虛假結(jié)點(diǎn)個(gè)數(shù)的算法的流程圖。具體實(shí)施方式下面結(jié)合附圖及實(shí)施例對本發(fā)明做進(jìn)一步說明。如圖1所示,本實(shí)施例提供了一種在分布式網(wǎng)絡(luò)中支持集中控制的高效算法,中心控制器計(jì)算數(shù)據(jù)轉(zhuǎn)發(fā)路徑的時(shí)候,不僅考慮鏈路方面的開銷,同時(shí)也將虛假結(jié)點(diǎn)相關(guān)的開銷考慮進(jìn)去,具體包括以下步驟:步驟S1:當(dāng)一個(gè)中心控制的分布式網(wǎng)絡(luò)接收到一個(gè)網(wǎng)絡(luò)請求時(shí),依次以網(wǎng)絡(luò)中每一個(gè)結(jié)點(diǎn)作為源點(diǎn),用線性規(guī)劃求最小費(fèi)用流的方法求出每個(gè)源點(diǎn)到匯點(diǎn)的鏈路開銷最小的路徑并記錄下來;其中這一步不考慮鏈路上的帶寬限制;步驟S2:將網(wǎng)絡(luò)中每段鏈路上通過的數(shù)據(jù)流量設(shè)為未知數(shù),對于每個(gè)出度大于或等于2的結(jié)點(diǎn),根據(jù)從該點(diǎn)流出的流是否流向從該點(diǎn)該點(diǎn)到匯點(diǎn)的鏈路開銷最小的路徑上的下一跳,用未知數(shù)表示出在該點(diǎn)處添加的虛假結(jié)點(diǎn)個(gè)數(shù);步驟S3:用線性規(guī)劃求最小費(fèi)用流的方法結(jié)合步驟S2中用未知數(shù)表示出的虛假結(jié)點(diǎn)個(gè)數(shù),求出一數(shù)據(jù)傳輸路徑,使得鏈路相關(guān)的開銷和虛假結(jié)點(diǎn)相關(guān)開銷的總和達(dá)到最小。在本實(shí)施例中,步驟S1中,用一個(gè)無向圖G=(V,E)來表示網(wǎng)絡(luò),其中V為網(wǎng)絡(luò)中的結(jié)點(diǎn)的集合,E為網(wǎng)絡(luò)中的鏈路的集合,即邊的集合;用CS表示單位流量從每條邊通過所需的開銷的集合,用BS表示每條邊上剩余帶寬的集合;用W1表示V中的結(jié)點(diǎn)數(shù),用W2表示E中的邊數(shù),用W3和W4分別表示CS和BS中元素的個(gè)數(shù);則V={v1,v2,...,vW1},E={e1,e2,...,eW2};如果l為G中的一條邊,C(l)是單位流量從l通過所需的開銷,B(l)是l上剩余的帶寬,并且C(l)∈CS,B(l)∈BS;對于每一個(gè)e∈E,e=<vi,vj>,vi,vj∈V,1≤i,j≤W1;網(wǎng)絡(luò)請求包括源點(diǎn)、匯點(diǎn)、需求的帶寬,用R=(S,D,BR)表示,其中,S表示源點(diǎn),D表示匯點(diǎn),BR表示需求的寬帶;目標(biāo)為最小化虛假結(jié)點(diǎn)方面和鏈路方面的總開銷用TC表示:TC=Σl∈E(C(l)*f(l))+αF;]]>其中,f(l)表示邊l上的流量,F(xiàn)表示網(wǎng)絡(luò)中需要添加的虛假結(jié)點(diǎn)個(gè)數(shù)總和,α為一個(gè)可變參數(shù),用來根據(jù)具體情況調(diào)整虛假結(jié)點(diǎn)方面和鏈路方面開銷的所占的權(quán)重。如圖2所示,圖2為一個(gè)擁有4個(gè)點(diǎn)和4條邊的網(wǎng)絡(luò)圖,V={v1,v2,v3,v4},E={e1,e2,e3,e4}。圖中每條邊上方框里的數(shù)表示該邊的剩余帶寬;每條邊旁邊的數(shù)表示單位數(shù)據(jù)從這條邊通過所需的開銷,比如C(e1)=10,B(e1)=20。在本實(shí)施例中,步驟S1中所述用線性規(guī)劃求最小費(fèi)用流的方法求出每個(gè)源點(diǎn)到匯點(diǎn)的鏈路開銷最小的路徑并記錄下來中,用線性規(guī)劃求最小費(fèi)用流時(shí)約束條件為:(1)對于任一結(jié)點(diǎn)v∈V,且V不為源點(diǎn)或匯點(diǎn),有:Σvi∈V,vi≠v,<vi,v>∈Ef(<vi,v>)=Σvi∈V,vi≠v,<v,vi>∈Ef(<v,vi>);]]>(2)(3)對所有邊<vi,s>,如果vi∈V,且vi≠s,且<vi,s>∈E,則f(<vi,s>)=0;(4)(5)對所有邊<t,vi>,如果vi∈V,且vi≠t,且<t,vi>∈E,則f(<t,vi>)=0;線性規(guī)劃的目標(biāo)為:使最小。例如,圖2中,若BR=10,求v1到v4的鏈路開銷最小的路徑的約束條件為(將f(ei)設(shè)為未知數(shù)xi,1≤xi≤W2);x1=x2x3=x4x1+x3=10x2+x4=10]]>目標(biāo)為使x1×20+x2×20+x3×16+x4×16最小。該線性規(guī)劃需進(jìn)行W1-1次以求出每個(gè)點(diǎn)到匯點(diǎn)的鏈路開銷最小的路徑并記錄下來。如圖3所示,在本實(shí)施例中,所述步驟S2中用未知數(shù)表示出在該點(diǎn)處添加的虛假結(jié)點(diǎn)個(gè)數(shù)具體包括以下步驟:步驟S21:設(shè)從A向A到匯點(diǎn)的最短路徑上下一跳的流量為x,判斷x是否等于從A點(diǎn)流出的總流量,若是,則在結(jié)點(diǎn)A處添加0個(gè)虛假結(jié)點(diǎn);否則,進(jìn)入步驟S22;步驟S22:判斷x是否等于0,若是,則進(jìn)入步驟S23;否則進(jìn)入步驟S24;步驟S23:判斷網(wǎng)絡(luò)中是否存在一條邊以A為弧尾,且該邊上的流量等于從A流出的總流量;若是,則在結(jié)點(diǎn)A處添加1個(gè)虛假結(jié)點(diǎn);否則在結(jié)點(diǎn)A處添加20個(gè)虛假結(jié)點(diǎn);步驟S24:判斷x是否等于從A點(diǎn)流出的總流量的一半,若否,則在結(jié)點(diǎn)A處添加20個(gè)虛假結(jié)點(diǎn);若是,則進(jìn)入步驟S25;步驟S25:判斷網(wǎng)絡(luò)中是否存在一條邊以A為弧尾,且這條邊不在A到匯點(diǎn)的最短路徑上,且該邊上的流量等于x,若是,則在結(jié)點(diǎn)A處添加1個(gè)虛假結(jié)點(diǎn);否則,在結(jié)點(diǎn)A處添加20個(gè)虛假加點(diǎn)。在本實(shí)施例中,所述步驟S3的線性規(guī)劃的約束條件為:(1)對于任一結(jié)點(diǎn)v∈V,且V不為源點(diǎn)或者匯點(diǎn),有:Σvi∈V,vi≠v,<vi,v>∈Ef(<vi,v>)=Σvi∈V,vi≠v,<v,vi>∈Ef(<v,vi>);]]>(2)(3)對所有邊<vi,s>,如果vi∈V,且vi≠s,且vi≠s,且<vi,s>∈E,則f(<vi,s>)=0;(4)(5)對所有邊<t,vi>,如果vi∈V,且vi≠t,且<t,vi>∈E,則f(<t,vi>)=0;(6)對每一條邊l∈E,則f(l)≤B(l);線性規(guī)劃的目標(biāo)為:使得最小。以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。當(dāng)前第1頁1 2 3