本發(fā)明涉及軟件定義網(wǎng)絡(luò)中鏈路保障技術(shù)領(lǐng)域,特別是一種軟件定義網(wǎng)絡(luò)中判定關(guān)鍵鏈路提供快速故障恢復(fù)的方法及裝置。
背景技術(shù):
目前,互聯(lián)網(wǎng)時代的到來衍生了很多新型業(yè)務(wù),并且為了更好滿足用戶的需求,業(yè)務(wù)的各項(xiàng)指標(biāo)也越來越高,同時對承載這些業(yè)務(wù)的網(wǎng)絡(luò)提出了新的要求。其中,運(yùn)營商網(wǎng)絡(luò)為了保證語音通信的服務(wù)質(zhì)量,要求業(yè)務(wù)流的延遲時間在50ms之內(nèi)。同時,為了保證業(yè)務(wù)的可持續(xù)運(yùn)轉(zhuǎn),必須為鏈路提供保障使得鏈路出現(xiàn)故障時能夠快速恢復(fù)。
現(xiàn)有關(guān)于鏈路的快速恢復(fù)方案主要分為兩類:一類是恢復(fù)策略,即當(dāng)鏈路出現(xiàn)故障時,控制器只有接收到交換機(jī)的通知后才會為受影響的業(yè)務(wù)流計算新的路由并下發(fā)新路由,但是由于這個過程通常包括鏈路故障被控制器感知的時間以及控制器與交換機(jī)交互的時間,恢復(fù)時間一般較長;一類是保護(hù)策略,即預(yù)先為業(yè)務(wù)流經(jīng)過的鏈路提供備用路徑,當(dāng)鏈路發(fā)生故障時,不需要控制器介入,交換機(jī)會自動切換到備用路由從而實(shí)現(xiàn)快速切換。但是,為業(yè)務(wù)流經(jīng)過的每條鏈路提供備份路徑會導(dǎo)致網(wǎng)絡(luò)中備用路徑的流表項(xiàng)快速增長,從而導(dǎo)致流表項(xiàng)有效利用率不高。另外,交換機(jī)中用來存儲流表項(xiàng)的tcam(ternarycontent-addressablememory)的空間是有限的,而且相對昂貴,因此需要合理利用。
為了解決備用路徑引起流表項(xiàng)快速增長的問題,現(xiàn)有研究提出了不同的方案。其中一種是通過控制器實(shí)時獲取鏈路承載的帶寬和業(yè)務(wù)流數(shù),通過這兩個指標(biāo)將鏈路分級,從而為不同等級鏈路提供不同程度的保障。這種方案能夠減少網(wǎng)絡(luò)中的備用流表項(xiàng),但是需要控制器實(shí)時與交換機(jī)交互獲取相應(yīng)的帶寬和流表信息,無疑會給控制器帶來較大負(fù)擔(dān)。另外一種方案是使用流表項(xiàng)中的vlan_id匹配項(xiàng),將經(jīng)過相同節(jié)點(diǎn)的備用路由的流表項(xiàng)匯聚從而減少了備用流表項(xiàng)數(shù)目。openflow1.3協(xié)議中的vlan_id最大不超過4096,因此這種方案只能適用于小型網(wǎng)絡(luò)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種在軟件定義網(wǎng)絡(luò)中判定關(guān)鍵鏈路提供快速故障恢復(fù)的方法及裝置。在綜合考慮鏈路在網(wǎng)絡(luò)拓?fù)渲械年P(guān)鍵程度和其實(shí)際承載的業(yè)務(wù)流數(shù)目這兩方面因素后,獲得其綜合分?jǐn)?shù),根據(jù)該鏈路綜合分?jǐn)?shù)提供不同程度的鏈路保障,從而在保證網(wǎng)絡(luò)可靠性的同時減少網(wǎng)絡(luò)中的備用路徑流表項(xiàng)。
本發(fā)明實(shí)施例公開了在軟件定義網(wǎng)絡(luò)中判定關(guān)鍵鏈路提供快速故障恢復(fù)的方法,包括:根據(jù)控制器獲取網(wǎng)絡(luò)實(shí)時拓?fù)浜徒y(tǒng)計鏈路中承載的業(yè)務(wù)流數(shù);根據(jù)網(wǎng)絡(luò)拓?fù)浣㈥P(guān)鍵鏈路模型,目標(biāo)函數(shù)為網(wǎng)絡(luò)中的連接對最少,約束條件為節(jié)點(diǎn)之間的連接約束和關(guān)鍵鏈路數(shù)目約束;使用hilpr算法對關(guān)鍵鏈路模型進(jìn)行線性規(guī)劃求解,不斷迭代得到所需的關(guān)鍵鏈路;獲取實(shí)際承載業(yè)務(wù)流的關(guān)鍵鏈路,并計算其關(guān)鍵鏈路指標(biāo);獲取實(shí)際承載業(yè)務(wù)流的鏈路中承載的業(yè)務(wù)流數(shù)指標(biāo);根據(jù)鏈路的關(guān)鍵鏈路指標(biāo)和業(yè)務(wù)流數(shù)指標(biāo)計算鏈路的綜合分?jǐn)?shù);根據(jù)綜合分?jǐn)?shù)將鏈路分級;當(dāng)有新的業(yè)務(wù)流進(jìn)入到網(wǎng)絡(luò)中時,判斷其路由所經(jīng)過的鏈路所屬等級,只為一級鏈路提供備份路徑保護(hù)。
從上述本發(fā)明的實(shí)施例可以看出,本發(fā)明實(shí)施例考慮了網(wǎng)絡(luò)拓?fù)渲械年P(guān)鍵鏈路和鏈路上的業(yè)務(wù)流表數(shù)??紤]鏈路在網(wǎng)絡(luò)拓?fù)渲械年P(guān)鍵程度的原因是,通常越關(guān)鍵的鏈路其連接的連接對(連接對定義為網(wǎng)絡(luò)中任意兩個連通節(jié)點(diǎn)構(gòu)成一個連接對)越多,從而越有可能被更多的業(yè)務(wù)流經(jīng)過,通過只為等級較高的鏈路配置備用路徑既提升了網(wǎng)絡(luò)的可靠性,又可以縮小備用路由的流表項(xiàng)在交換機(jī)中的比例;關(guān)鍵鏈路的計算和鏈路上的業(yè)務(wù)流表數(shù)都不需要實(shí)時計算和更新,業(yè)務(wù)流表數(shù)的統(tǒng)計只在新的業(yè)務(wù)流進(jìn)入到網(wǎng)絡(luò)或者業(yè)務(wù)流相對應(yīng)的流表項(xiàng)過期時才會更新,因此整個信息的獲取并不需要控制器實(shí)時與交換機(jī)頻繁交互,從而不會給交換機(jī)帶來過多額外負(fù)擔(dān);另外本方案沒有占用流表匹配項(xiàng)的特殊字段(如vlan_id),因此應(yīng)用場景更加廣泛。
附圖說明
圖1為本發(fā)明實(shí)現(xiàn)sdn單條鏈路快速恢復(fù)的優(yōu)化方法實(shí)施例的流程圖;
圖2為本發(fā)明建立ilp模型并求解部分關(guān)鍵鏈路的流程圖;
圖3為本發(fā)明實(shí)現(xiàn)hilpr算法獲取網(wǎng)絡(luò)拓?fù)潢P(guān)鍵鏈路的流程圖;
圖4為本發(fā)明獲取鏈路的綜合分?jǐn)?shù)并對其分級的流程圖;
圖5為本發(fā)明根據(jù)業(yè)務(wù)流路由中鏈路等級采取不同保障機(jī)制的流程圖;
圖6為本發(fā)明裝置的實(shí)施例結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。
請參閱圖1,為本發(fā)明實(shí)現(xiàn)sdn單條鏈路快速恢復(fù)的優(yōu)化方法實(shí)施例的流程圖,包括以下步驟:
步驟101:根據(jù)lldp消息及時更新網(wǎng)絡(luò)拓?fù)湫畔ⅲ?/p>
步驟102:按需更新鏈路中的流表數(shù)信息,當(dāng)新的業(yè)務(wù)流進(jìn)入到網(wǎng)絡(luò)中時或者當(dāng)前業(yè)務(wù)流相關(guān)的流表項(xiàng)過期時需要更新鏈路中的流表數(shù)信息;
步驟103:根據(jù)當(dāng)前的網(wǎng)絡(luò)拓?fù)湫畔ζ浣lp(integrallinearprogramming)模型,并使用hilpr算法求解網(wǎng)絡(luò)拓?fù)渲械年P(guān)鍵鏈路;
步驟104:對步驟103中的關(guān)鍵鏈路根據(jù)單個鏈路減少的連接對多少賦予鏈路關(guān)鍵指標(biāo);
步驟105:考慮鏈路的關(guān)鍵指標(biāo)和通過此鏈路的業(yè)務(wù)流數(shù)計算鏈路的綜合分?jǐn)?shù);
步驟106:根據(jù)綜合分?jǐn)?shù)將鏈路分級,在下發(fā)路由時為不同等級提供不同的保障機(jī)制。
上述步驟103中,根據(jù)網(wǎng)絡(luò)拓?fù)湫畔⒔lp模型的具體實(shí)現(xiàn)方式請參閱圖2,包括以下步驟:
步驟201:選定參數(shù)λ,建立ilp模型。
本實(shí)施例將網(wǎng)絡(luò)拓?fù)洚?dāng)成一個無向連通圖g(v,e),其中v為頂點(diǎn)集合,
e為邊的集合。ilp模型的建立過程為將每對頂點(diǎn)之間的連接狀態(tài)設(shè)置為變量,然后通過調(diào)整這些變量值使得最終連接對數(shù)最小,同時又滿足處于斷開狀態(tài)的鏈路數(shù)目小于等于λ,其中鏈路對應(yīng)的變量由1變?yōu)?時表示處于該鏈路最終處于斷開狀態(tài),同時此鏈路將被判定為關(guān)鍵鏈路。以下數(shù)學(xué)模型參考自hilpr算法中的ilp建模流程。
目標(biāo)函數(shù):
約束條件:
cij∈{0,1}
其中cij表示拓?fù)渲许旤c(diǎn)i與頂點(diǎn)j是否處于連接狀態(tài),處于連接狀態(tài)則為1,否則為0。第一個約束條件是為了保證頂點(diǎn)與頂點(diǎn)之間的連接傳遞性,第二個約束是保證一次求解最多求解λ個關(guān)鍵鏈路,其中mij在實(shí)際實(shí)施時設(shè)置為1。
步驟202:從步驟201中可以得知,目標(biāo)函數(shù)每個變量的因子為1,因此目標(biāo)函數(shù)參數(shù)矩陣中對應(yīng)的每個變量的參數(shù)均為1。
步驟203:在第一個約束條件中,每三個變量之間就有兩個變量的參數(shù)為1,另外一個為-1;在第二個約束條件中,每個變量的參數(shù)均為-1。通過以上規(guī)律為不等式構(gòu)建參數(shù)矩陣。
步驟204:在初始階段,拓?fù)錇檫B通圖,所有的節(jié)點(diǎn)均連接,而在經(jīng)過第一輪迭代后,拓?fù)渚涂赡懿辉偈沁B通圖,此時有的頂點(diǎn)之間并不一定連接,對于處于連接狀態(tài)的變量將其范圍設(shè)置為0到1.0,并將這些變量命名為有效變量。而對于那些本身已經(jīng)處于斷開的變量,則將這些變量的值直接設(shè)置為0。
步驟205:對上述建立的ilp模型,使用線性規(guī)劃中simplex方法進(jìn)行求解。
步驟206:經(jīng)過步驟205,最終會得到各個變量的值,并提取出鏈路所對應(yīng)的變量值進(jìn)行由小到大排序,獲取前λ個最小變量對應(yīng)的鏈路,將這些鏈路對應(yīng)的變量rounding到0,這些鏈路即為在這一次迭代中找到的關(guān)鍵鏈路。
上述步驟103中,使用hilpr求解網(wǎng)絡(luò)拓?fù)渲械年P(guān)鍵鏈路的具體實(shí)現(xiàn)方式請參閱圖3,包括以下步驟:
步驟301:算法輸入?yún)?shù)需要設(shè)定網(wǎng)絡(luò)可靠性參數(shù)ρ,這個參數(shù)又公式如下定義:
ρ=connectedpairs(g\cl)/connectedpairs(g)
其中g(shù)表示網(wǎng)絡(luò)的初始拓?fù)洌琯\cl表示從初始網(wǎng)絡(luò)中刪除已選中的關(guān)鍵鏈路集后的拓?fù)?,connectedpairs()函數(shù)用于計算所輸入拓?fù)涞倪B接對數(shù)目。因此網(wǎng)絡(luò)可靠性ρ定義為從網(wǎng)絡(luò)中刪除一定關(guān)鍵鏈路后,網(wǎng)絡(luò)的連接對數(shù)目比上初始狀態(tài)網(wǎng)絡(luò)全部連接對數(shù)目。ρ也可看作網(wǎng)絡(luò)管理者需要保障鏈路的力度。從而在每次迭代時,判斷條件為當(dāng)前網(wǎng)絡(luò)的連接對數(shù)目與初始網(wǎng)絡(luò)連接對的比值是否接近于ρ。
另外一個參數(shù)為λ,為每次迭代發(fā)現(xiàn)的關(guān)鍵鏈路數(shù)目,這個參數(shù)用于在算法的精確性和運(yùn)行時間之間取得一個平衡。
步驟302:每次迭代前,判斷當(dāng)前拓?fù)涞倪B接對數(shù)與初始狀態(tài)相比是否已經(jīng)到達(dá)ρ,如果已經(jīng)達(dá)到則輸出關(guān)鍵鏈路,否則進(jìn)行下一步操作。
步驟303:使用圖2的算法對當(dāng)前拓?fù)淝蠼猞藗€關(guān)鍵鏈路。
步驟304:優(yōu)化關(guān)鍵鏈路,由于使用線性規(guī)劃方法求解整數(shù)線性規(guī)劃問題不一定能獲得最優(yōu)解,因此在此處加入swapping操作優(yōu)化得到的λ個關(guān)鍵鏈路,swapping操作具體指的是將關(guān)鍵鏈路和鄰居鏈路進(jìn)行比較,如果鄰居鏈路比關(guān)鍵鏈路更優(yōu),則將關(guān)鍵鏈路和鄰居鏈路進(jìn)行替換。
步驟305:將當(dāng)前獲取的關(guān)鍵鏈路從拓?fù)渲袆h除,進(jìn)行步驟302中的操作。
上述步驟104和105中,關(guān)鍵鏈路指標(biāo)獲取、鏈路綜合分?jǐn)?shù)獲取以及鏈路分級請參閱圖4,包括以下步驟:
步驟401:每條鏈路承載的業(yè)務(wù)流數(shù)在新的業(yè)務(wù)流進(jìn)入網(wǎng)絡(luò)時,控制器收到交換機(jī)的packet_in消息后會將當(dāng)前業(yè)務(wù)流數(shù)添加到其經(jīng)過的鏈路上,而當(dāng)業(yè)務(wù)流對應(yīng)的流表項(xiàng)過期時,控制器同樣通過交換機(jī)發(fā)送的消息將業(yè)務(wù)流數(shù)從其經(jīng)過的鏈路中去除。
步驟402:使用圖3中的hilpr算法獲取當(dāng)前網(wǎng)絡(luò)的關(guān)鍵鏈路集,具體請參考圖3。
步驟403:關(guān)鍵鏈路指標(biāo)的計算范圍為所有承載業(yè)務(wù)流的鏈路,對于其中不屬于步驟402計算的關(guān)鍵鏈路集的鏈路,其關(guān)鍵指標(biāo)為0,而對于屬于步驟402計算的關(guān)鍵鏈路集的鏈路,其關(guān)鍵鏈路指標(biāo)使用如下公式進(jìn)行計算:
其中的pairnum(li)為只將鏈路li從拓?fù)渲袆h除后拓?fù)錅p少的連接對數(shù),由于有些關(guān)鍵鏈路從網(wǎng)絡(luò)拓?fù)渲袆h除后并不會減少網(wǎng)絡(luò)拓?fù)涞倪B接對數(shù)目,為了將這些鏈路與普通鏈路區(qū)分,將這些鏈路的關(guān)鍵指標(biāo)的起始值設(shè)置為0.5。其中參數(shù)β用來控制曲線的形狀。
步驟404:鏈路的綜合分?jǐn)?shù)為鏈路關(guān)鍵指標(biāo)和業(yè)務(wù)流數(shù)指標(biāo),其中加權(quán)因子為a。計算公式如下:
score(li)=a*criticalindex(li)+(1-a)*flowindex(li)
其中flownum(li)為鏈路li中承載的業(yè)務(wù)流數(shù);a為加權(quán)因子,范圍在0到1之間;參數(shù)η用來控制flownum(li)與flowindex(li)之間對應(yīng)關(guān)系的曲線形狀。flowindex(li)即為當(dāng)前鏈路的業(yè)務(wù)流數(shù)指標(biāo),score(li)即為鏈路的綜合分值。
步驟405:對鏈路進(jìn)行分級,綜合分值在0.5之上的被認(rèn)定為一級鏈路,否則被認(rèn)定為二級鏈路。
上述步驟106中,根據(jù)鏈路等級,在下發(fā)路由時為不同等級提供不同的保障機(jī)制請參閱圖5,包括以下步驟:
步驟501:當(dāng)業(yè)務(wù)流初次進(jìn)入到網(wǎng)絡(luò)中時,由于交換機(jī)中沒有其相關(guān)的流表項(xiàng),交換機(jī)將會給控制器發(fā)送packet_in消息。
步驟502:控制器通過網(wǎng)絡(luò)拓?fù)湫畔?,網(wǎng)絡(luò)狀態(tài)的統(tǒng)計信息為業(yè)務(wù)流選擇合適的路由,最常見的路由為源節(jié)點(diǎn)到目的節(jié)點(diǎn)的最短路徑。
步驟503:使用步驟4計算出的鏈路的綜合分?jǐn)?shù)以及其等級,來判斷當(dāng)前業(yè)務(wù)流的路由經(jīng)過鏈路哪些是一級鏈路,哪些是二級鏈路。
步驟504:對于普通的二級鏈路,只需要為相關(guān)交換機(jī)下發(fā)往返流表項(xiàng)。
步驟505:對于一級鏈路,對相應(yīng)的交換機(jī)下發(fā)組表項(xiàng),并為當(dāng)前鏈路計算到目的節(jié)點(diǎn)的備用路徑,組表項(xiàng)在正常情況下會將流量轉(zhuǎn)發(fā)到步驟502計算的路徑中,但是當(dāng)此鏈路出現(xiàn)故障時,則會將流量轉(zhuǎn)發(fā)到備用路徑,因此還需為備用路徑下發(fā)流表項(xiàng)。
步驟506:路由下發(fā)完畢后,控制器通過packet_out消息將之前阻塞的數(shù)據(jù)發(fā)送到交換機(jī)的某一端口使其通過上述路由傳輸。
本發(fā)明實(shí)施例還提供了在軟件定義網(wǎng)絡(luò)中判定關(guān)鍵鏈路提供快速故障恢復(fù)的裝置,見圖6,其包括:
鏈路業(yè)務(wù)流數(shù)統(tǒng)計模塊1,用于統(tǒng)計并存儲鏈路中的業(yè)務(wù)流數(shù),同時計算鏈路業(yè)務(wù)流指標(biāo);
關(guān)鍵鏈路維護(hù)模塊2,用于在拓?fù)浒l(fā)生變化時,更新網(wǎng)絡(luò)中的關(guān)鍵鏈路集,并計算鏈路的關(guān)鍵指標(biāo);
鏈路綜合分?jǐn)?shù)計算模塊3,在每次新的業(yè)務(wù)流初次進(jìn)入網(wǎng)絡(luò)時,此模塊通過鏈路的業(yè)務(wù)流指標(biāo)和關(guān)鍵指標(biāo)計算鏈路的綜合分?jǐn)?shù),并確定鏈路級別;
鏈路保障模塊4,在每次為業(yè)務(wù)流下發(fā)路由流表時,判斷路由經(jīng)過鏈路的級別,如果鏈路級別為一級,將為鏈路提供基于備用路徑的保護(hù)策略,否則為鏈路提供基于控制器介入的恢復(fù)策略。
進(jìn)一步地,所述鏈路保障模塊4還包括保護(hù)策略單元401和恢復(fù)策略單元402,所述保護(hù)策略單元401使用openflow1.1+協(xié)議中的組表機(jī)制為鏈路提供基于備份路徑的快速故障恢復(fù)機(jī)制,所述恢復(fù)策略單元402在控制器接收到故障通知后使用控制器實(shí)時計算的新路徑為受影響的業(yè)務(wù)流實(shí)現(xiàn)故障恢復(fù)。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機(jī)可讀取存儲介質(zhì)中,該程序包括如下步驟:根據(jù)控制器實(shí)時探測獲取網(wǎng)絡(luò)拓?fù)洌桓鶕?jù)交換機(jī)發(fā)送的packet_in消息統(tǒng)計每條鏈路承載的業(yè)務(wù)流的數(shù)目;在當(dāng)前網(wǎng)絡(luò)拓?fù)?,運(yùn)用線性規(guī)劃算法hilpr進(jìn)行迭代求解獲取關(guān)鍵鏈路;接著,根據(jù)從網(wǎng)絡(luò)中去除單條鏈路后減少的連接對數(shù)目為鏈路賦予關(guān)鍵程度指標(biāo);再結(jié)合關(guān)鍵鏈路的關(guān)鍵指標(biāo)和其上承載的業(yè)務(wù)流數(shù)指標(biāo)兩方面的因素得出其綜合分?jǐn)?shù);然后根據(jù)鏈路所得分?jǐn)?shù)將鏈路分為不同的級別并提供不同的鏈路保障機(jī)制。所述的存儲介質(zhì),如:rom/ram、磁碟、光盤等。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)該視為本發(fā)明的保護(hù)范圍。