一種應(yīng)用于軟件定義網(wǎng)絡(luò)的流量工程方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種應(yīng)用于軟件定義網(wǎng)絡(luò)的流量工程方 法。
【背景技術(shù)】
[0002] 傳統(tǒng)網(wǎng)絡(luò)架構(gòu)中的控制邏輯和數(shù)據(jù)轉(zhuǎn)發(fā)功能是結(jié)合在一起的,即控制平面與數(shù)據(jù) 平面是耦合的。隨著用戶需求的持續(xù)增長,網(wǎng)絡(luò)需承載的業(yè)務(wù)類型越來越多,大量復(fù)雜的網(wǎng) 絡(luò)功能需要加入到移動網(wǎng)絡(luò)中。這種情況下,運(yùn)營商需要對每一臺網(wǎng)絡(luò)設(shè)備單獨(dú)地進(jìn)行配 置、管理和功能更新,帶來了極大的操作困難和開銷。一種新的網(wǎng)絡(luò)架構(gòu)一一軟件定義網(wǎng)絡(luò) (SDN)提出將網(wǎng)絡(luò)的控制平面和數(shù)據(jù)平面分離,并將各種網(wǎng)絡(luò)節(jié)點(diǎn)的控制和管理功能邏輯 上集中至一個站點(diǎn),從而簡化了網(wǎng)絡(luò)的控制和管理。同時,SDN以業(yè)務(wù)流為控制粒度,利用 全局的網(wǎng)絡(luò)和業(yè)務(wù)信息,可以精確的控制業(yè)務(wù)行為和分配網(wǎng)絡(luò)資源,使網(wǎng)絡(luò)能夠更加高效 地運(yùn)行。
[0003] 流量工程將業(yè)務(wù)需求映射到網(wǎng)絡(luò)拓?fù)渖?,包括為業(yè)務(wù)尋找可行的傳輸路徑和為其 分配網(wǎng)絡(luò)帶寬資源,以避免網(wǎng)絡(luò)出現(xiàn)擁塞和保證用戶獲得一定的服務(wù)質(zhì)量。在傳統(tǒng)網(wǎng)絡(luò)架 構(gòu)中,網(wǎng)絡(luò)資源管理主要基于路由協(xié)議實(shí)現(xiàn)。Internet的路由協(xié)議如RIP,0SPF,基于分布 式的最短路徑算法為業(yè)務(wù)流尋找路徑,并沒有面向業(yè)務(wù)流的網(wǎng)絡(luò)資源分配機(jī)制。各個業(yè)務(wù) 流互相競爭網(wǎng)絡(luò)資源,容易使網(wǎng)絡(luò)出現(xiàn)負(fù)載不均衡,造成網(wǎng)絡(luò)擁塞并浪費(fèi)網(wǎng)絡(luò)資源。將流 量工程與傳統(tǒng)有線網(wǎng)絡(luò)路由協(xié)議結(jié)合,如0SPF-TE通過調(diào)整網(wǎng)絡(luò)中鏈路的權(quán)重來改變路由 路徑,等代價(jià)多路徑(ECMP)同時使用多條等價(jià)路徑來分散業(yè)務(wù)負(fù)載,減少了網(wǎng)絡(luò)擁塞的發(fā) 生,提高網(wǎng)絡(luò)性能。在SDN網(wǎng)絡(luò)架構(gòu)下,流量工程能夠發(fā)揮更大作用,更加靈活地位業(yè)務(wù)分 配資源。由于SDN的具有全局的網(wǎng)絡(luò)和業(yè)務(wù)信息,因此流量工程機(jī)制可以利用這些信息進(jìn) 行全局優(yōu)化,得到多路徑路由機(jī)制,從而優(yōu)化網(wǎng)絡(luò)資源利用率。雖然基于多路徑路由的流量 工程機(jī)制為了網(wǎng)絡(luò)資源分配帶來了極大的靈活性,但是,其對應(yīng)的數(shù)學(xué)問題(線性規(guī)劃)在 中等或大規(guī)模網(wǎng)絡(luò)下難以有效地實(shí)時求解,造成基于多路徑路由的流量工程機(jī)制不能有效 地應(yīng)用到已有網(wǎng)絡(luò)中。如果不追求準(zhǔn)確解,采取近似解法,則通常要求較高的近似精度才能 滿足實(shí)際應(yīng)用需求,而較高的近似精度反之又提高了近似解法的計(jì)算復(fù)雜度,使之難以實(shí) 際應(yīng)用。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種應(yīng)用于軟件定義網(wǎng)絡(luò)的流量工 程方法,在獲得近似最優(yōu)網(wǎng)絡(luò)資源分配方案的同時保證計(jì)算時間在可接受的范圍內(nèi)。
[0005] 本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的:一種應(yīng)用于軟件定義網(wǎng)絡(luò)的流量工 程方法,包括以下步驟:
[0006] S1.獲取網(wǎng)絡(luò)拓?fù)湫畔ⅲW(wǎng)絡(luò)拓?fù)湫畔ǎ壕W(wǎng)絡(luò)拓?fù)?7(ΛΛ£),其中Y代表節(jié)點(diǎn) 集合,節(jié)點(diǎn)數(shù)量為n,£代表鏈路集合,鏈路總數(shù)為m;鏈路e的鏈路容量<6;),7££/:;業(yè)務(wù) 流集合K,其中業(yè)務(wù)流k的帶寬需求為d(k);近似參數(shù)w;
[0007]S2.定義鏈路e的鏈路長度為1(e),將鏈路長度1(e)初始化為δ/c(e),其中
,式中,ε為中間參數(shù);
[0008] 為鏈路e關(guān)聯(lián)第一流變量fk (e)和第二流變量/A. (e),:并將第一流變量fk (e)和第 二流變量/; (e)初始化為〇 ;
[0009]S3.根據(jù)源節(jié)點(diǎn)對業(yè)務(wù)流進(jìn)行分類,將源節(jié)點(diǎn)相同的業(yè)務(wù)流分為一類,得到S類業(yè) 務(wù)流,S彡1,業(yè)務(wù)流k待分配的帶寬需求初始化為dk=d(k);
[0010] S4.對于第j類業(yè)務(wù)流,1 <j<S,為第j類業(yè)務(wù)流中的業(yè)務(wù)流找到其最短路徑, 第j類業(yè)務(wù)流中的所有的業(yè)務(wù)流的最短路徑構(gòu)成最短路徑樹t;
[0011] S5.為第j類業(yè)務(wù)流中每條業(yè)務(wù)流對應(yīng)的最短路徑分配帶寬資源,直到最短路徑 樹t上的一條鏈路的帶寬耗盡或第j類業(yè)務(wù)流中所有業(yè)務(wù)流的帶寬需求都得到滿足;
[0012] 記錄業(yè)務(wù)流k分配到的帶寬fk、最短路徑樹t上鏈路e通過的業(yè)務(wù)量f(e);然后, 更新鏈路e關(guān)聯(lián)的第一流變量fk (e);更新業(yè)務(wù)流k剩余所需分配的帶寬d'k,更新鏈路e的 鏈路長度1 (e),從第j類業(yè)務(wù)流中移除帶寬需求得到滿足的業(yè)務(wù)流;
[0013]S6.判斷迭代條件D(l) < 1是否滿足:
[0014] 若D(l) < 1且當(dāng)前類業(yè)務(wù)流仍有帶寬需求時,則跳轉(zhuǎn)步驟S4;
[0015] 若D(l)<1且當(dāng)前類業(yè)務(wù)流沒有帶寬需求時,則進(jìn)行下一類業(yè)務(wù)流的帶寬分配, 跳轉(zhuǎn)步驟S4;
[0016] 若D(1)彡1時,則跳轉(zhuǎn)步驟S7;
[0017]S7.當(dāng)S類業(yè)務(wù)流均完成帶寬分配時,若D(l) < 1,則記錄下中間結(jié)果,即令 (c,卜/,;⑷,跳轉(zhuǎn)步驟S3 ;若D(1)》1,則跳轉(zhuǎn)步驟S8 ;
[0018]S8.判斷最后一輪迭代中所有類業(yè)務(wù)流的帶寬需求是否完全得到滿足:
[0019] 當(dāng)所有類業(yè)務(wù)流的帶寬需求沒有完全得到滿足時, g為對所有鏈路求得的鏈路容量與鏈路上通過的流量之比的最小值,將/"e)放大
,放大后的0即作為最終的帶寬分配方案輸出;
[0020] 當(dāng)所有類業(yè)務(wù)流的帶寬需求完全得到滿足時, g為對所有鏈路求得的鏈路容量與鏈路上通過的流量之比的最小值,將fk(e)放大
,放大后的fk(e)即作為最終的帶寬分配方案輸出。
[0021] 步驟S4中,為第j類業(yè)務(wù)流中的業(yè)務(wù)流找到其最短路徑采用Dijkstra算法。
[0022] 步驟S5中更新各鏈路的鏈路長度的方式為:
[0024] 其中,1'(e)為鏈路e更新后的鏈路長度,1 (e)為鏈路e更新前的鏈路長度,#為 業(yè)務(wù)流k的最短路徑,c(e)為鏈路e的鏈路容量,產(chǎn)為業(yè)務(wù)流k分配到的帶寬。
[0025] 步驟S5中更新每條業(yè)務(wù)流剩余所需分配的帶寬的方式為:
[0026] d'k=dk_fk
[0027] 其中,(^為業(yè)務(wù)流k更新后的待分配的帶寬,d呔業(yè)務(wù)流k更新前的待分配的帶 寬,產(chǎn)為業(yè)務(wù)流k分配到的帶寬。
[0028] 本發(fā)明的有益效果是:本發(fā)明雖然基于近似算法FPTAS(后續(xù)描述以FPTAS表示近 似算法),但得到的近似解非常接近利用線性規(guī)劃所求得的最優(yōu)解。同時,本發(fā)明提出的近 似算法對近似率參數(shù)并不敏感,與FPTAS相比,即使采用較大近似參數(shù)w(后續(xù)描述以w表 示近似參數(shù))求得的目標(biāo)函數(shù)值與采用較小的w求得的目標(biāo)函數(shù)值非常接近。由于本文提 出的算法與FPTAS在計(jì)算復(fù)雜度上一樣,近似地與w2成正比,因此,選擇較大的w可顯著地 提升算法的計(jì)算效率,而這對大規(guī)模網(wǎng)絡(luò)的流量工程是非常有意義的。
【附圖說明】
[0029] 圖1為本發(fā)明一種應(yīng)用于軟件定義網(wǎng)絡(luò)的流量工程方法的流程示意圖;
[0030] 圖2為NSFNET網(wǎng)絡(luò)拓?fù)涫疽鈭D;
[0031] 圖3為CERNET網(wǎng)絡(luò)拓?fù)涫疽鈭D;
[0032] 圖4為采用胖樹交換網(wǎng)絡(luò)的數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)涫疽鈭D;
[0033] 圖5為用于評估的隨機(jī)核心網(wǎng)拓?fù)涞囊粋€實(shí)施例的示意圖;
[0034] 圖6為FPTAS和i-FPTAS在不同近似參數(shù)下的RMLU值變化圖;
[0035] 圖7為線性規(guī)劃和不同近似參數(shù)的i-FPTAS的運(yùn)行時間圖;
[0036] 圖8為NSFNET網(wǎng)絡(luò)拓?fù)渲蠪PTAS和i-FPTAS在不同業(yè)務(wù)矩陣下的RMLU值變化 圖;
[0037] 圖9為CERNET網(wǎng)絡(luò)拓?fù)渲蠪PTAS和i-FPTAS在不同業(yè)務(wù)矩陣下的RMLU值變化 圖;
[0038] 圖10為采用胖樹交換網(wǎng)絡(luò)的數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)渲蠪PTAS和i-FPTAS在不同業(yè) 務(wù)矩陣下的RMLU值變化圖;
[0039] 圖11為隨機(jī)核心網(wǎng)拓?fù)渚W(wǎng)絡(luò)拓?fù)渲蠪PTAS和i-FPTAS在不同業(yè)務(wù)矩陣下的RMLU 值變化圖。
【具體實(shí)施方式】
[0040] 下面結(jié)合附圖進(jìn)一步詳細(xì)描述本發(fā)明的技術(shù)方案,但本發(fā)明的保護(hù)范圍不局限于 以下所述。
[0041] 如圖1所示,一種應(yīng)用于軟件定義網(wǎng)絡(luò)的流量工程方法,包括以下步驟:
[0042] S1.獲取網(wǎng)絡(luò)拓?fù)湫畔?,網(wǎng)絡(luò)拓?fù)湫畔ǎ壕W(wǎng)絡(luò)拓?fù)銰(ΛΛ£) 7其中#代表節(jié)點(diǎn) 集合,節(jié)點(diǎn)數(shù)量為n,£.代表鏈路集合,鏈路總數(shù)為m;鏈路e的鏈路容量業(yè)務(wù) 流集合尤,其中業(yè)務(wù)流k的帶寬需求為d(k);近似參數(shù)w。
[0043]S2.定義鏈路e的鏈路長度為1 (e),將鏈路長度1 (e)初始化為δ/c(e),其中
[0044] 為鏈路e關(guān)聯(lián)第一流變量fk (e)和第二流變量/A.(e),并將第一流變量fk (e)和第 二流變量/Je)初始化為0。第一流變量fk(e)和第二流變量表示業(yè)務(wù)流在鏈路e 上通過的流量,相對于第一流變量fk(e)來說,第二流變量&(£〇是中間結(jié)果。
[0045]S3.根據(jù)源節(jié)點(diǎn)對業(yè)務(wù)流進(jìn)行分類,將源節(jié)點(diǎn)相同的業(yè)務(wù)流分為一類,得到S類業(yè) 務(wù)流,S彡1,業(yè)務(wù)流k待分配的帶寬需求初始化為dk=d(k)。
[0046]S4.對于第j類業(yè)務(wù)流,1 <j<S,為第j類業(yè)務(wù)流中的業(yè)務(wù)流找到其最短路徑, 第j類業(yè)務(wù)流中的所有的業(yè)務(wù)流的最短路徑構(gòu)成最短路徑樹t。
[0047] 步驟S4中,為第j類業(yè)務(wù)流中的業(yè)務(wù)流找到其最短路徑采用Dijkstra算法。
[0048]S5.為第j類業(yè)務(wù)流中每條業(yè)務(wù)流對應(yīng)的最短路徑分配帶寬資源,直到最短路徑 樹t上的一條鏈路的帶寬耗盡或第j類業(yè)務(wù)流中所有業(yè)務(wù)流的帶寬需求都得到滿足;
[0049] 記錄業(yè)務(wù)流k分配到的帶寬fk、最短路徑樹t上鏈路e通過的業(yè)務(wù)量f(e);然后, 更新鏈路e關(guān)聯(lián)的第一流變量fk (e);更新業(yè)務(wù)流k剩余所需分配的帶寬d'k,更新鏈路e的 鏈路長度1 (e),從第j類業(yè)務(wù)流中移除帶寬需求得到滿足的業(yè)務(wù)流。
[0050] 步驟S5中更新各鏈路的鏈路長度的方式為:
[0052] 其中,1'(e)為鏈路e更新后的鏈路長度,1 (e)為鏈路e更新前的鏈路長度,#為 業(yè)務(wù)流k的最短路徑,c(e)為鏈路e的鏈路容量,產(chǎn)為業(yè)務(wù)流k分配到的帶寬。
[0053] 步驟S5中更新每條業(yè)務(wù)流剩余所需分配的帶寬的方式為:
[0054]d'k=dk_fk
[0055] 其中,(^為業(yè)務(wù)流k更新后的待分配的帶寬,d呔業(yè)務(wù)流k更新前的待分配的帶 寬,產(chǎn)為業(yè)務(wù)流k分配到的帶寬。
[0056] S6.判斷迭代條件D(l)<1是否滿足:
[0057] 若D(l) < 1且當(dāng)前類業(yè)務(wù)流仍有帶寬需求時,則跳轉(zhuǎn)步驟S4;
[0058] 若D(l)<1且當(dāng)前類業(yè)務(wù)流沒有帶寬需求時,則進(jìn)行下一類業(yè)務(wù)流的帶寬分配, 跳轉(zhuǎn)步驟S4;