專利名稱::G比特流率下多粒度的網(wǎng)絡(luò)自動(dòng)聚類方法
技術(shù)領(lǐng)域:
:G比特流率下多粒度的網(wǎng)絡(luò)自動(dòng)聚類方法屬于計(jì)算機(jī)網(wǎng)絡(luò)測量
技術(shù)領(lǐng)域:
。
背景技術(shù):
:互聯(lián)網(wǎng)絡(luò)已經(jīng)成為當(dāng)代信息社會(huì)的重要基礎(chǔ)設(shè)施。隨著互聯(lián)網(wǎng)絡(luò)技術(shù)的不斷進(jìn)步和網(wǎng)絡(luò)融合趨勢的不斷增強(qiáng),IP網(wǎng)絡(luò)上開始承載越來越多的傳統(tǒng)電信網(wǎng)和電視網(wǎng)上的業(yè)務(wù);與此同時(shí),互聯(lián)網(wǎng)本身也不斷涌現(xiàn)更多的新業(yè)務(wù),尤其是對等網(wǎng)絡(luò)P2P(peer-to-peer)的出現(xiàn),改變了整個(gè)互聯(lián)網(wǎng)絡(luò)的發(fā)展方向?;ヂ?lián)網(wǎng)絡(luò)正在朝著超高速、移動(dòng)、大容量、多業(yè)務(wù)的方向變化,如何對基于高速互連網(wǎng)絡(luò)的應(yīng)用進(jìn)行精確的測量、監(jiān)控成為當(dāng)前急需解決的課題。網(wǎng)絡(luò)流量的聚類分析是實(shí)現(xiàn)有效網(wǎng)絡(luò)測量的關(guān)鍵和基礎(chǔ)技術(shù)。傳統(tǒng)的網(wǎng)絡(luò)測量系統(tǒng)一般是對IP包頭的某些特定字段進(jìn)行歸類。而聚類集合算法也因管理功能的不同需求而各不相同,如應(yīng)用于網(wǎng)絡(luò)安全的聚類算法根據(jù)對目的地址的聚合進(jìn)行拒絕服務(wù)攻擊的檢測。這類聚類分析方法存在的缺點(diǎn)是每一個(gè)測量系統(tǒng)側(cè)重于流量聚類分析的一個(gè)方面,且不能滿足現(xiàn)代網(wǎng)絡(luò)管理全面掌握網(wǎng)絡(luò)運(yùn)行狀態(tài)的需要。通過將IP包頭的不同字段看作是網(wǎng)絡(luò)數(shù)據(jù)的不同維度,研究并提出針對多維空間中的數(shù)據(jù)點(diǎn)進(jìn)行自動(dòng)聚類分析的自適應(yīng)算法,則可克服傳統(tǒng)網(wǎng)絡(luò)測量技術(shù)存在的上述不足。區(qū)別于傳統(tǒng)的基于特定網(wǎng)絡(luò)字段匹配規(guī)則的網(wǎng)絡(luò)聚類方法,這種方法可以通過預(yù)先設(shè)定的網(wǎng)絡(luò)狀態(tài)閾值進(jìn)行動(dòng)態(tài)的聚類。所謂多粒度,有如下兩個(gè)含義1)測量目標(biāo)包括多種網(wǎng)絡(luò)特征(源,目的IP地址和端口號(hào)。2)測量結(jié)果的網(wǎng)絡(luò)地址層次有可能不同,比如說可能精確到某一個(gè)單一IP,也有可能精確到某一個(gè)子網(wǎng),只要它們都滿足預(yù)先設(shè)定的網(wǎng)絡(luò)狀態(tài),比如說發(fā)送或者接收的流量都超過了某一個(gè)閾值。這種測量結(jié)果符合網(wǎng)絡(luò)流量分布不均衡的鼠象分布特性,為網(wǎng)絡(luò)管理員對于網(wǎng)絡(luò)狀態(tài)的診斷提供了有效的手段。與已有的類似離線系統(tǒng)研究工作相比,(Estan,C.,Savage,S.,andVarghese,G.AutomaticallyInferringPatternsofResourceConsumptioninNetworkTraffic.InProceedingsofACMSIGCOMM,Karlsruhe,Germany,,2003,137-148.-該方法在下文的實(shí)驗(yàn)中簡稱為CP),本方法基于網(wǎng)絡(luò)測量的周期性采樣機(jī)制,采用了基于流量預(yù)測的啟發(fā)式算法,減少了已有算法所需要的時(shí)間和空間開銷,實(shí)驗(yàn)表明,能夠?qū)崟r(shí)運(yùn)行在1G比特/秒的高速互聯(lián)網(wǎng)之上,達(dá)到了預(yù)期發(fā)明目標(biāo)。
發(fā)明內(nèi)容本發(fā)明的目的在于提供多粒度的網(wǎng)絡(luò)流量高速自動(dòng)聚類方法。本發(fā)明的實(shí)際部署圖見圖3,本測量方法屬于網(wǎng)絡(luò)測量領(lǐng)域的被動(dòng)測量范疇,通過路由器或者高端交換機(jī)的端口鏡像功能將網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)到服務(wù)器上。我們的系統(tǒng)實(shí)際測試環(huán)境為清華大學(xué)校園網(wǎng),它是一個(gè)典型的擁有近四萬個(gè)IP地址的園區(qū)網(wǎng)絡(luò)。本系統(tǒng)系統(tǒng)部署在一個(gè)校園網(wǎng)絡(luò)的骨干出口處。在實(shí)際運(yùn)用中,可以用此方法進(jìn)行單向接口的測量,也可以進(jìn)行雙向接口的測量。說明方法中用到的相關(guān)數(shù)據(jù)結(jié)構(gòu)如下所示IP地址樹模型如果把32比特的IP地址從高位到低位進(jìn)行層次化劃分,節(jié)點(diǎn)的深度W即為IP前綴的深度,比如說節(jié)點(diǎn)*.*.*.*代表最頂層的節(jié)點(diǎn),(也就是說任何其他地址內(nèi)容都包含在該根節(jié)點(diǎn)中,符號(hào)*表示為地址通配符,也就是說地址*.*.*.*可以包括任何節(jié)點(diǎn)),圖1表示了節(jié)點(diǎn)1.2.3.4和節(jié)點(diǎn)1.2.3.5的地址樹模型。樹的根節(jié)點(diǎn),即IP地址“*.*.*.*”,其節(jié)點(diǎn)深度為0。每一個(gè)樹節(jié)點(diǎn)的孩子節(jié)點(diǎn)即為擁有相同前綴的下一個(gè)深度的IP地址,比如說地址樹中的節(jié)點(diǎn)1.2.3.*所對應(yīng)的孩子節(jié)點(diǎn)為”1.2.3.4,1.2.3.5”等等。考慮到網(wǎng)管實(shí)際需要,將節(jié)點(diǎn)的最大層次設(shè)置為4,也就是說對于任何一個(gè)地址,可以位于單一地址,子網(wǎng)地址,和子網(wǎng)所屬的小區(qū),以及頂點(diǎn)地址(*.*.*.*)四個(gè)層次。顯然,對于任意一層的樹節(jié)點(diǎn)可以用IP地址的前綴來唯一表示。前綴的長度決定節(jié)點(diǎn)的深度。在節(jié)點(diǎn)層次按照IP地址長度均勻分成4層的情況下,節(jié)點(diǎn)的二進(jìn)制IP地址樹節(jié)點(diǎn)的前綴長度N和IP所處的深度W的關(guān)系為W=N/8。一維樹節(jié)點(diǎn)在IP地址樹模型中的每一個(gè)節(jié)點(diǎn)內(nèi)的數(shù)據(jù)結(jié)構(gòu)如下二維叉乘表格如圖4所示。叉乘表格H的兩個(gè)維度分別是源地址與目的地址的深度。而每一個(gè)節(jié)點(diǎn)位置存貯在該深度下的源地址與目的地址的索引表格。在編程實(shí)現(xiàn)中,使用二維矩陣進(jìn)行存貯,矩陣中的每一個(gè)元素為一個(gè)哈希表格,哈希表格的索引為源地址和目的地址在當(dāng)前深度下的節(jié)點(diǎn)標(biāo)識(shí),其存貯內(nèi)容為所對應(yīng)于該地址深度的當(dāng)前測量數(shù)值和前次測量數(shù)值,為初始設(shè)置的報(bào)文大小或報(bào)文個(gè)數(shù)。比如說H[2][3]中存貯源地址深度為2,目的地址深度為3的所有節(jié)點(diǎn)集合。其中可能包括IP字段<1.2.*.*,3.4.5.*>,其表示的內(nèi)容為數(shù)據(jù)報(bào)文的源地址和目的地址分別為1.2.*.*,3.4.5.*在本測量周期和前次測量周期內(nèi)得到的報(bào)文大小或者報(bào)文個(gè)數(shù)。端口哈希表格端口哈希表格P存貯著有關(guān)端口的數(shù)據(jù)信息,其索引IP地址其存貯的內(nèi)容為相應(yīng)的端口-容量對。比如說表格P<1,2,3,4>中存貯的內(nèi)容為{(80,125),(135,45)},在默認(rèn)情況下表示在網(wǎng)絡(luò)報(bào)文的IP地址1.2.3.4的端口80傳輸?shù)臄?shù)據(jù)報(bào)文大小為125字節(jié),端口135傳輸?shù)臄?shù)據(jù)報(bào)文大小為45字節(jié)。關(guān)于節(jié)點(diǎn)壓縮的說明為了節(jié)省系統(tǒng)空間資源,系統(tǒng)在壓縮和輸出的時(shí)候,僅僅輸出補(bǔ)償之后的節(jié)點(diǎn),所謂補(bǔ)償就是指,如果某一個(gè)節(jié)點(diǎn)的孩子節(jié)點(diǎn)被標(biāo)記為聚類節(jié)點(diǎn)(指節(jié)點(diǎn)當(dāng)前容量和孩子容量之和大于某一個(gè)閾值的節(jié)點(diǎn)),那么該節(jié)點(diǎn)的輸出標(biāo)記為該節(jié)點(diǎn)的容量減去所有標(biāo)記為聚類節(jié)點(diǎn)的孩子節(jié)點(diǎn)的容量。顯然,如果不進(jìn)行補(bǔ)償,那么對于任何一個(gè)孩子節(jié)點(diǎn)未聚類的父親節(jié)點(diǎn)來說,其當(dāng)前容量必然包括孩子節(jié)點(diǎn)容量,這些數(shù)據(jù)對于網(wǎng)絡(luò)管理者來說是無意義的。本發(fā)明的特征在于,所提出的方法依次含有以下步驟(其中的總體流程框圖如圖2所示)總體步驟本程序在啟動(dòng)之后,即在網(wǎng)絡(luò)中以如下方式進(jìn)行工作,步驟(1).設(shè)置如下參數(shù)在時(shí)間間隔T內(nèi)對網(wǎng)絡(luò)報(bào)文進(jìn)行測量的測量周期,T=1分鐘;測量目標(biāo)值,為報(bào)文大??;聚類程度Phi=1%,Phi反映聚類結(jié)果的網(wǎng)絡(luò)測量目標(biāo)值占當(dāng)前總網(wǎng)絡(luò)的測量目標(biāo)值的比值,用以反映單個(gè)網(wǎng)絡(luò)聚類的測量值占總測量目標(biāo)值1%以上的各個(gè)網(wǎng)絡(luò)聚類;測量誤差允許值ε,ε=1%·Phi;當(dāng)前測量周期T內(nèi)的總測量目標(biāo)值Vcur,前次測量周期測量值Tlast和下輪測量周期預(yù)測值V為0;啟發(fā)式算法預(yù)測深度閾值Tg,默認(rèn)為0.8phi=0.008,(ε<<Tg≤phi),Tg為啟發(fā)式算法的性能參數(shù);滑動(dòng)因子α,α=0.5;分裂閾值Tsplit,初始值為0;節(jié)點(diǎn)最大深度Wmax,即IP前綴的最大深度,Wmax=4,IP地址樹模型中根節(jié)點(diǎn)的深度為W=0;步驟(2)啟動(dòng)測量程序,設(shè)定當(dāng)前測量總目標(biāo)值Vcur=0;步驟(3)在一個(gè)測量周期T內(nèi),對于每一個(gè)到達(dá)的報(bào)文E依次執(zhí)行以下步驟步驟(3.1)設(shè)定一維樹狀存貯結(jié)構(gòu)內(nèi),每一個(gè)樹節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)為孩子指針,是指向樹節(jié)點(diǎn)的孩子節(jié)點(diǎn)指針,指向孩子節(jié)點(diǎn)所在內(nèi)存空間,用一個(gè)指針數(shù)組表示多個(gè)孩子指針,初始值為空;預(yù)測深度,是在下一個(gè)測量周期內(nèi)所述節(jié)點(diǎn)所處的深度,初始值為0;實(shí)際深度,是當(dāng)前節(jié)點(diǎn)深度;葉子屬性,為真表示所述節(jié)點(diǎn)為是葉子節(jié)點(diǎn),為假則否,初始值為否;當(dāng)前容量,樹節(jié)點(diǎn)在當(dāng)前測量周期內(nèi)所包含的初始報(bào)文大小,用字節(jié)表示;孩子節(jié)點(diǎn)容量,樹節(jié)點(diǎn)的孩子節(jié)點(diǎn)所包含的初始報(bào)文大小,初始值為0;前次容量,樹節(jié)點(diǎn)在上一測量周期內(nèi)所包含的全部報(bào)文的大小,等于上一測量周期內(nèi)得到的節(jié)電當(dāng)前容量和孩子節(jié)點(diǎn)容量之和,初始值為0;步驟(3.2)按以下步驟更新一維樹狀存貯結(jié)構(gòu),輸入報(bào)文的源地址和E的測量目標(biāo)值,返回源地址深度W1;步驟(3.2.1)設(shè)置標(biāo)識(shí)為*.*.*.*的IP地址樹根節(jié)點(diǎn)為IP地址的當(dāng)前節(jié)點(diǎn);步驟(3.2.2)滿足下列三個(gè)條件中的任何一條,則所述步驟(3.2)的當(dāng)前節(jié)點(diǎn)退出出現(xiàn)葉子節(jié)點(diǎn),且其當(dāng)前容量加上測量目標(biāo)值小于分裂閾值Tsplit,則更新當(dāng)前節(jié)點(diǎn)容量值為當(dāng)前測量值加上當(dāng)前節(jié)點(diǎn)容量,返回當(dāng)前節(jié)點(diǎn)的預(yù)測深度;出現(xiàn)葉子節(jié)點(diǎn),且其當(dāng)前容量加上測量目標(biāo)值不小于分裂域值Tsplit,但其當(dāng)前深度已達(dá)到最大深度Wmax,則更新當(dāng)前節(jié)點(diǎn)為孩子節(jié)點(diǎn),容量為測量目標(biāo)值,返回當(dāng)前節(jié)點(diǎn)的預(yù)測深度;否則,設(shè)置葉子節(jié)點(diǎn)屬性為假;出現(xiàn)非葉子節(jié)點(diǎn),其當(dāng)前容量加上測量目標(biāo)值不小于分裂域值Tsplit,但其當(dāng)前深度等于最大深度Wmax,則返回當(dāng)前節(jié)點(diǎn)的預(yù)測深度;如果不滿足以上三條退出條件,則無論節(jié)點(diǎn)是否為葉子節(jié)點(diǎn)均更新所述當(dāng)前節(jié)點(diǎn)的孩子節(jié)點(diǎn)容量為當(dāng)前節(jié)點(diǎn)的孩子節(jié)點(diǎn)容量再加上測量目標(biāo)值;在以上條件中,若節(jié)點(diǎn)容量的增長超過分裂域值Tsplit,但當(dāng)前深度小于最大深度時(shí),該節(jié)點(diǎn)根據(jù)輸入IP地址和當(dāng)前的深度分裂新的孩子節(jié)點(diǎn)并同時(shí)取代原有的節(jié)點(diǎn)成為當(dāng)前節(jié)點(diǎn)繼續(xù)執(zhí)行步驟(3.2.2),直到節(jié)點(diǎn)處于最大深度Wmax;步驟(3.3)按照步驟(3.2)所述方法更新一維樹狀存貯結(jié)構(gòu),輸入的參數(shù)為報(bào)文的目的地址和E的測量目標(biāo)值,返回目的地址的深度W2;步驟(3.4)根據(jù)步驟(3.2)和步驟(3.3)返回的源地址和目的地址的深度,分別執(zhí)行以下步驟步驟(3.4.1)若返回的源地址深度或者目的地址深度有一個(gè)大于0,則根據(jù)源地址和目的地址得到在相應(yīng)深度下的IP前綴標(biāo)識(shí),設(shè)為prefix1和prefix2,如果不存在二維叉乘表格H[W1][W2]中的哈希索引表格中,則開辟空間,初始化測量值為0;否則,更新測量值為原有測量值再加上報(bào)文E的測量目標(biāo)值,所述二維叉乘表格的兩個(gè)維度分別為源地址的深度[W1]和目的地址的深度[W2],而每一個(gè)節(jié)點(diǎn)的位置存貯在該深度下的源地址與目的地址的索引表格中,該索引表格使用二維矩陣存貯,矩陣中每一個(gè)元素為一個(gè)哈希表格,哈西表格中的索引為源地址和目的地址在當(dāng)前深度下的節(jié)點(diǎn)標(biāo)識(shí);其存貯內(nèi)容為該地址深度的當(dāng)前測量目標(biāo)值和上一個(gè)測量周期的測量目標(biāo)值;步驟(3.4.2)如果返回的源地址或目的地址的深度為最大值Wmax,則更新端口哈希表P當(dāng)該地址索引在P中不存在時(shí),則開辟相關(guān)的空間,初始化測量值為0;否則,更新源地址或目的地址索對應(yīng)的端口測量值為原有測量值加上E的測量目標(biāo)值;步驟(3.5)把報(bào)文的測量目標(biāo)值增加到當(dāng)前測量總目標(biāo)值Vcur,對下一個(gè)報(bào)文重復(fù)步驟(3.2)-(3.4);步驟(4)按照以下步驟分別設(shè)置所述當(dāng)前節(jié)點(diǎn)為源地址樹和目的地址樹的根節(jié)點(diǎn),其節(jié)點(diǎn)標(biāo)識(shí)均為*.*.*.*,分別對這兩個(gè)節(jié)點(diǎn)樹按照步驟(4.1)進(jìn)行壓縮;步驟(4.1).如果當(dāng)前節(jié)點(diǎn)的當(dāng)前容量加上當(dāng)前節(jié)點(diǎn)的孩子節(jié)點(diǎn)容量小于V·Phi,那么設(shè)置當(dāng)前節(jié)點(diǎn)的葉子屬性為真,其中預(yù)測容量V根據(jù)步驟7計(jì)算得到;步驟(4.1.1)如果當(dāng)前節(jié)點(diǎn)當(dāng)前容量和孩子節(jié)點(diǎn)容量之和大于預(yù)測深度容量Tg·V,則更新當(dāng)前節(jié)點(diǎn)的預(yù)測深度為當(dāng)前節(jié)點(diǎn)的當(dāng)前深度;步驟(4.1.2)如果當(dāng)前節(jié)點(diǎn)當(dāng)前容量和孩子節(jié)點(diǎn)容量之和小于Tg·V,則更新當(dāng)前深度為節(jié)點(diǎn)深度減1,清空其所有孩子節(jié)點(diǎn)空間,釋放相關(guān)資源;步驟(4.2)如果當(dāng)前節(jié)點(diǎn)的當(dāng)前容量和孩子節(jié)點(diǎn)容量之和超過V·Phi,則設(shè)置當(dāng)前節(jié)點(diǎn)的預(yù)測深度為當(dāng)前節(jié)點(diǎn)的當(dāng)前深度;對于當(dāng)前節(jié)點(diǎn)的每一個(gè)孩子節(jié)點(diǎn),將其設(shè)置為當(dāng)前節(jié)點(diǎn)按照步驟(4.1),依次進(jìn)行壓縮;步驟(5)對源地址和目的地址分別執(zhí)行如下子步驟,輸出一維源地址和目的地址的聚類結(jié)果,其示意圖如圖8所示;步驟(5.1)設(shè)置當(dāng)前節(jié)點(diǎn)V為地址樹的根節(jié)點(diǎn)*.*.*.*,初始化節(jié)點(diǎn)隊(duì)列Q空;對于節(jié)點(diǎn)V的孩子指針指向的每一個(gè)不為空的孩子節(jié)點(diǎn),將其進(jìn)入隊(duì)列Q;步驟(5.2)取出隊(duì)列Q的第一個(gè)節(jié)點(diǎn)V1,將V1從隊(duì)列Q中移除,將其設(shè)置為當(dāng)前節(jié)點(diǎn),將其補(bǔ)償數(shù)值T設(shè)定為0;步驟(5.3)對于當(dāng)前節(jié)點(diǎn)V1的每一個(gè)孩子來說,分別執(zhí)行以下步驟,以下以V11舉例說明;步驟(5.3.1)如果孩子節(jié)點(diǎn)V11的當(dāng)前容量和孩子節(jié)點(diǎn)V11的孩子節(jié)點(diǎn)容量大于V·Phi,則增加補(bǔ)償值T為T的原有容量再加上V11的當(dāng)前容量和V11的孩子節(jié)點(diǎn)容量,并將該孩子節(jié)點(diǎn)V11放入隊(duì)列Q中;步驟(5.4)如果當(dāng)前節(jié)點(diǎn)V1的容量加上當(dāng)前節(jié)點(diǎn)V1的孩子節(jié)點(diǎn)容量減去補(bǔ)償值T大于閾值V*Phi,輸出當(dāng)前節(jié)點(diǎn)V1為靜態(tài)聚類節(jié)點(diǎn);步驟(5.5)如果當(dāng)前節(jié)點(diǎn)V1的當(dāng)前容量加V11的孩子節(jié)點(diǎn)容量減去其前次容量大于閾值V*Phi的話,輸出當(dāng)前節(jié)點(diǎn)V1為動(dòng)態(tài)節(jié)點(diǎn);步驟(5.6)設(shè)定當(dāng)前節(jié)點(diǎn)V1的前次容量為V11的當(dāng)前容量加孩子節(jié)點(diǎn)容量,設(shè)定其當(dāng)前容量為0;設(shè)定V1的孩子節(jié)點(diǎn)容量為0;步驟(5.7)若隊(duì)列Q不為空,返回步驟(5.2)繼續(xù),否則退出步驟(5);步驟(6)壓縮并且輸出叉乘表格中的源目的地址對,即對于叉乘表中的每一個(gè)維度以及維度里面的每一個(gè)哈希索引所對應(yīng)的數(shù)據(jù)項(xiàng)e,依次執(zhí)行以下步驟步驟(6.1)如果e的當(dāng)前容量減去上次容量的絕對值大于閾值Vcur·Phi時(shí),輸出e為動(dòng)態(tài)聚類節(jié)點(diǎn);步驟(6.2)如果e的當(dāng)前容量大于Vcur·Phi,則輸出節(jié)點(diǎn)e為靜態(tài)聚類節(jié)點(diǎn);步驟(6.3)如果e的當(dāng)前容量為0則刪除該節(jié)點(diǎn),繼續(xù)執(zhí)行步驟(6);步驟(6.4)設(shè)定節(jié)點(diǎn)的前次容量為當(dāng)前容量,設(shè)定節(jié)點(diǎn)的當(dāng)前容量為0,繼續(xù)執(zhí)行步驟(6);步驟(7)流量預(yù)測,采用簡單的加權(quán)指數(shù)平均模型,按照如下公式進(jìn)行預(yù)測下一次的流量V;V=αVcur+(1-α)Vlast,--------------------------(1)步驟(8).計(jì)算步驟3中所用的分裂閾值Tsplit;Tsplit=ε·(phi)·V/W,--------------------------(2)步驟(9).返回步驟(3),進(jìn)入下一個(gè)測量周期。圖1.地址樹模型示意圖;圖2.多粒度的網(wǎng)絡(luò)流量高速自動(dòng)聚類方法框架圖;圖3.多粒度的網(wǎng)絡(luò)流量高速自動(dòng)聚類方法部署圖;圖4.叉乘表格H(Cross-producttable)示意圖X-源地址深度,取值為0到W的整數(shù)Y-目的地址深度,取值為0到W的整數(shù)<prefix1,prefix2>-表示在特定深度下的源地址和目的地址前綴集合。圖5.實(shí)驗(yàn)測量本發(fā)明和已有方法正確率比較;-□-傳統(tǒng)的CP算法,具體內(nèi)容請參見
背景技術(shù):
-○-發(fā)明(HCP)算法在Tg=Phi條件下-*-發(fā)明(HCP)算法在Tg=0.6*Phi條件下圖6.實(shí)驗(yàn)測量本發(fā)明和已有方法時(shí)間比較;-○-發(fā)明(HCP)算法在Tg=Phi條件下--發(fā)明(HCP)算法在Tg=0.6*Phi條件下圖7.數(shù)據(jù)壓縮和未壓縮方法比較情況圖8.輸出一維地址樹聚類結(jié)果示意圖具體實(shí)施方式本算法是在2.4GHz的CPU,內(nèi)存512M的Linux工作環(huán)境中實(shí)現(xiàn),全部代碼利用C語言編寫。下面從不同的側(cè)面對本試驗(yàn)進(jìn)行進(jìn)一步的說明。需要說明的是,由于算法采用啟發(fā)式算法,在網(wǎng)絡(luò)報(bào)文的第一個(gè)測量周期內(nèi)Tg=0因此無法正確標(biāo)記網(wǎng)絡(luò)聚類,所以實(shí)驗(yàn)的結(jié)果需要從第2次測量周期開始統(tǒng)計(jì)。實(shí)際誤差分析本試驗(yàn)的正確率分析如圖5所示,可以看到,當(dāng)通常情況下取Phi=1%時(shí),其錯(cuò)誤率制在2%以下,對于不同的phi值,可以通過調(diào)整門限參數(shù)Tg進(jìn)行準(zhǔn)確性與系統(tǒng)資源之間的平衡。時(shí)間性能分析本試驗(yàn)環(huán)境下的所用時(shí)間分析如圖6所示,當(dāng)設(shè)置測量時(shí)間間隔T為1分鐘時(shí),測量所需要時(shí)間可以控制在1分鐘之內(nèi),能夠達(dá)到線速處理要求??臻g性能分析本實(shí)驗(yàn)中,壓縮與不壓縮數(shù)據(jù)的空間比較如圖7所示。理論誤差分析對于一維情況來說,每一個(gè)聚類的節(jié)點(diǎn)最大為ε·phi·V/W,所以對于底層節(jié)點(diǎn)的最大流量的誤差為ε·phi·V,則其相對最大誤差為ε·phi·V/(phi·V)=ε。本試驗(yàn)的錯(cuò)誤率1).如果預(yù)測的深度>實(shí)際的深度,也就是說聚類過細(xì),這種情況可以在結(jié)尾的數(shù)據(jù)壓縮中進(jìn)行處理,因此不會(huì)增加誤差。2).如果預(yù)測的深度<實(shí)際的深度,那么會(huì)出現(xiàn)聚類精度不夠的情況,會(huì)產(chǎn)塵誤正率(FalsePositive)。在實(shí)際中,由于網(wǎng)絡(luò)流量在短期內(nèi)具有較大的相關(guān)性,因此不會(huì)對測量方法的正確率產(chǎn)生較大影響。(具體的實(shí)驗(yàn)數(shù)據(jù)請參見圖5)由此可見,本發(fā)明達(dá)到了預(yù)期目的。權(quán)利要求1.G比特流率下的多粒度網(wǎng)絡(luò)自動(dòng)聚類方法,其特征在于所述方法是在一個(gè)通過路由器或者高端交換機(jī)的端口鏡像功能接受報(bào)文的流量檢測服務(wù)器中實(shí)現(xiàn)的,其步驟依次如下步驟(1).設(shè)置如下參數(shù)在時(shí)間間隔T內(nèi)對網(wǎng)絡(luò)報(bào)文進(jìn)行測量的測量周期,T=1分鐘;測量目標(biāo)值,為報(bào)文大小;聚類程度Phi=1%,Phi反映聚類結(jié)果的網(wǎng)絡(luò)測量目標(biāo)值占當(dāng)前總網(wǎng)絡(luò)的測量目標(biāo)值的比值,用以反映單個(gè)網(wǎng)絡(luò)聚類的測量值占總測量目標(biāo)值1%以上的各個(gè)網(wǎng)絡(luò)聚類;測量誤差允許值ε,ε=1%·Phi;當(dāng)前測量周期T內(nèi)的總測量目標(biāo)值Vcur,前次測量周期測量值Vlast和下輪測量周期預(yù)測值V為0;啟發(fā)式算法預(yù)測深度閾值Tg,默認(rèn)為0.8phi=0.008,(ε<<Tg≤phi),Tg為啟發(fā)式算法的性能參數(shù);滑動(dòng)因子α,α=0.5;分裂閾值Tsplit,初始值為0;節(jié)點(diǎn)最大深度Wmax,即IP前綴的最大深度,Wmax=4,IP地址樹模型中根節(jié)點(diǎn)的深度為W=0;步驟(2)啟動(dòng)測量程序,設(shè)定當(dāng)前測量總目標(biāo)值Vcur=0;步驟(3)在一個(gè)測量周期T內(nèi),對于每一個(gè)到達(dá)的報(bào)文E依次執(zhí)行以下步驟步驟(3.1)設(shè)定一維樹狀存貯結(jié)構(gòu)內(nèi),每一個(gè)樹節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)為孩子指針,是指向樹節(jié)點(diǎn)的孩子節(jié)點(diǎn)指針,指向孩子節(jié)點(diǎn)所在內(nèi)存空間,用一個(gè)指針數(shù)組表示多個(gè)孩子指針,初始值為空;預(yù)測深度,是在下一個(gè)測量周期內(nèi)所述節(jié)點(diǎn)所處的深度,初始值為0;實(shí)際深度,是當(dāng)前節(jié)點(diǎn)深度;葉子屬性,為真表示所述節(jié)點(diǎn)為是葉子節(jié)點(diǎn),為假則否,初始值為否;當(dāng)前容量,樹節(jié)點(diǎn)在當(dāng)前測量周期內(nèi)所包含的初始報(bào)文大小,用字節(jié)表示;孩子節(jié)點(diǎn)容量,樹節(jié)點(diǎn)的孩子節(jié)點(diǎn)所包含的初始報(bào)文大小,初始值為0;前次容量,樹節(jié)點(diǎn)在上一測量周期內(nèi)所包含的全部報(bào)文的大小,等于上一測量周期內(nèi)得到的節(jié)電當(dāng)前容量和孩子節(jié)點(diǎn)容量之和,初始值為0;步驟(3.2)按以下步驟更新一維樹狀存貯結(jié)構(gòu),輸入報(bào)文的源地址和E的測量目標(biāo)值,返回源地址深度W1;步驟(3.2.1)設(shè)置標(biāo)識(shí)為*.*.*.*的IP地址樹根節(jié)點(diǎn)為IP地址的當(dāng)前節(jié)點(diǎn);步驟(3.2.2)滿足下列三個(gè)條件中的任何一條,則所述步驟(3.2)的當(dāng)前節(jié)點(diǎn)退出出現(xiàn)葉子節(jié)點(diǎn),且其當(dāng)前容量加上測量目標(biāo)值小于分裂閾值Tsplit,則更新當(dāng)前節(jié)點(diǎn)容量值為當(dāng)前測量值加上當(dāng)前節(jié)點(diǎn)容量,返回當(dāng)前節(jié)點(diǎn)的預(yù)測深度;出現(xiàn)葉子節(jié)點(diǎn),且其當(dāng)前容量加上測量目標(biāo)值不小于分裂域值Tsplit,但其當(dāng)前深度已達(dá)到最大深度Wmax,則更新當(dāng)前節(jié)點(diǎn)為孩子節(jié)點(diǎn),容量為測量目標(biāo)值,返回當(dāng)前節(jié)點(diǎn)的預(yù)測深度;否則,設(shè)置葉子節(jié)點(diǎn)屬性為假;出現(xiàn)非葉子節(jié)點(diǎn),其當(dāng)前容量加上測量目標(biāo)值不小于分裂域值Tsplit,但其當(dāng)前深度等于最大深度Wmax,則返回當(dāng)前節(jié)點(diǎn)的預(yù)測深度;如果不滿足以上三條退出條件,則無論節(jié)點(diǎn)是否為葉子節(jié)點(diǎn)均更新所述當(dāng)前節(jié)點(diǎn)的孩子節(jié)點(diǎn)容量為當(dāng)前節(jié)點(diǎn)的孩子節(jié)點(diǎn)容量再加上測量目標(biāo)值;在以上條件中,若節(jié)點(diǎn)容量的增長超過分裂域值Tsplit,但當(dāng)前深度小于最大深度時(shí),該節(jié)點(diǎn)根據(jù)輸入IP地址和當(dāng)前的深度分裂新的孩子節(jié)點(diǎn)并同時(shí)取代原有的節(jié)點(diǎn)成為當(dāng)前節(jié)點(diǎn)繼續(xù)執(zhí)行步驟(3.2.2),直到節(jié)點(diǎn)處于最大深度Wmax;步驟(3.3)按照步驟(3.2)所述方法更新一維樹狀存貯結(jié)構(gòu),輸入的參數(shù)為報(bào)文的目的地址和E的測量目標(biāo)值,返回目的地址的深度W2;步驟(3.4)根據(jù)步驟(3.2)和步驟(3.3)返回的源地址和目的地址的深度,分別執(zhí)行以下步驟步驟(3.4.1)若返回的源地址深度或者目的地址深度有一個(gè)大于0,則根據(jù)源地址和目的地址得到在相應(yīng)深度下的IP前綴標(biāo)識(shí),設(shè)為prefix1和prefix2,如果不存在二維叉乘表格H[W1][W2]中的哈希索引表格中,則開辟空間,初始化測量值為0;否則,更新測量值為原有測量值再加上報(bào)文E的測量目標(biāo)值,所述二維叉乘表格的兩個(gè)維度分別為源地址的深度[W1]和目的地址的深度[W2],而每一個(gè)節(jié)點(diǎn)的位置存貯在該深度下的源地址與目的地址的索引表格中,該索引表格使用二維矩陣存貯,矩陣中每一個(gè)元素為一個(gè)哈希表格,哈西表格中的索引為源地址和目的地址在當(dāng)前深度下的節(jié)點(diǎn)標(biāo)識(shí);其存貯內(nèi)容為該地址深度的當(dāng)前測量目標(biāo)值和上一個(gè)測量周期的測量目標(biāo)值;步驟(3.4.2)如果返回的源地址或目的地址的深度為最大值Wmax,則更新端口哈希表P當(dāng)該地址索引在P中不存在時(shí),則開辟相關(guān)的空間,初始化測量值為0;否則,更新源地址或目的地址索對應(yīng)的端口測量值為原有測量值加上E的測量目標(biāo)值;步驟(3.5)把報(bào)文的測量目標(biāo)值增加到當(dāng)前測量總目標(biāo)值Vcur,對下一個(gè)報(bào)文重復(fù)步驟(3.2)-(3.4);步驟(4)按照以下步驟分別設(shè)置所述當(dāng)前節(jié)點(diǎn)為源地址樹和目的地址樹的根節(jié)點(diǎn),其節(jié)點(diǎn)標(biāo)識(shí)均為*.*.*.*,分別對這兩個(gè)節(jié)點(diǎn)樹按照步驟(4.1)進(jìn)行壓縮;步驟(4.1).如果當(dāng)前節(jié)點(diǎn)的當(dāng)前容量加上當(dāng)前節(jié)點(diǎn)的孩子節(jié)點(diǎn)容量小于V·Phi,那么設(shè)置當(dāng)前節(jié)點(diǎn)的葉子屬性為真,其中預(yù)測容量V根據(jù)步驟7計(jì)算得到;步驟(4.1.1)如果當(dāng)前節(jié)點(diǎn)當(dāng)前容量和孩子節(jié)點(diǎn)容量之和大于預(yù)測深度容量Tg·V,則更新當(dāng)前節(jié)點(diǎn)的預(yù)測深度為當(dāng)前節(jié)點(diǎn)的當(dāng)前深度;步驟(4.1.2)如果當(dāng)前節(jié)點(diǎn)當(dāng)前容量和孩子節(jié)點(diǎn)容量之和小于Tg·V,則更新當(dāng)前深度為節(jié)點(diǎn)深度減1,清空其所有孩子節(jié)點(diǎn)空間,釋放相關(guān)資源;步驟(4.2)如果當(dāng)前節(jié)點(diǎn)的當(dāng)前容量和孩子節(jié)點(diǎn)容量之和超過V·Phi,則設(shè)置當(dāng)前節(jié)點(diǎn)的預(yù)測深度為當(dāng)前節(jié)點(diǎn)的當(dāng)前深度,對于當(dāng)前節(jié)點(diǎn)的每一個(gè)孩子節(jié)點(diǎn),將其設(shè)置為當(dāng)前節(jié)點(diǎn)按照步驟(4.1),依次進(jìn)行壓縮;步驟(5)對源地址和目的地址分別執(zhí)行如下子步驟,輸出一維源地址和目的地址的聚類結(jié)果,其示意圖如圖8所示;步驟(5.1)設(shè)置當(dāng)前節(jié)點(diǎn)V為地址樹的根節(jié)點(diǎn)*.*.*.*,初始化節(jié)點(diǎn)隊(duì)列Q空,對于節(jié)點(diǎn)V的孩子指針指向的每一個(gè)不為空的孩子節(jié)點(diǎn),將其進(jìn)入隊(duì)列Q;步驟(5.2)取出隊(duì)列Q的第一個(gè)節(jié)點(diǎn)V1,將V1從隊(duì)列Q中移除,將其設(shè)置為當(dāng)前節(jié)點(diǎn),將其補(bǔ)償數(shù)值T設(shè)定為0;步驟(5.3)對于當(dāng)前節(jié)點(diǎn)V1的每一個(gè)孩子來說,分別執(zhí)行以下步驟,以下以V11舉例說明;步驟(5.3.1)如果孩子節(jié)點(diǎn)V11的當(dāng)前容量和孩子節(jié)點(diǎn)V11的孩子節(jié)點(diǎn)容量大于V·Phi,則增加補(bǔ)償值T為T的原有容量再加上V11的當(dāng)前容量和V11的孩子節(jié)點(diǎn)容量,并將該孩子節(jié)點(diǎn)V11放入隊(duì)列Q中;步驟(5.4)如果當(dāng)前節(jié)點(diǎn)V1的容量加上當(dāng)前節(jié)點(diǎn)V1的孩子節(jié)點(diǎn)容量減去補(bǔ)償值T大于閾值V*Phi,輸出當(dāng)前節(jié)點(diǎn)V1為靜態(tài)聚類節(jié)點(diǎn);步驟(5.5)如果當(dāng)前節(jié)點(diǎn)V1的當(dāng)前容量加V11的孩子節(jié)點(diǎn)容量減去其前次容量大于閾值V*Phi的話,輸出當(dāng)前節(jié)點(diǎn)V1為動(dòng)態(tài)節(jié)點(diǎn);步驟(5.6)設(shè)定當(dāng)前節(jié)點(diǎn)V1的前次容量為V11的當(dāng)前容量加孩子節(jié)點(diǎn)容量,設(shè)定其當(dāng)前容量為0;設(shè)定V1的孩子節(jié)點(diǎn)容量為0;步驟(5.7)若隊(duì)列Q不為空,返回步驟(5.2)繼續(xù),否則退出步驟(5);步驟(6)壓縮并且輸出叉乘表格中的源目的地址對,即對于叉乘表中的每一個(gè)維度以及維度里面的每一個(gè)哈希索引所對應(yīng)的數(shù)據(jù)項(xiàng)e,依次執(zhí)行以下步驟步驟(6.1)如果e的當(dāng)前容量減去上次容量的絕對值大于閾值Vcur·Phi時(shí),輸出e為動(dòng)態(tài)聚類節(jié)點(diǎn);步驟(6.2)如果e的當(dāng)前容量大于Vcur·Phi,則輸出節(jié)點(diǎn)e為靜態(tài)聚類節(jié)點(diǎn);步驟(6.3)如果e的當(dāng)前容量為0則刪除該節(jié)點(diǎn),繼續(xù)執(zhí)行步驟(6);步驟(6.4)設(shè)定節(jié)點(diǎn)的前次容量為當(dāng)前容量,設(shè)定節(jié)點(diǎn)的當(dāng)前容量為0,繼續(xù)執(zhí)行步驟(6);步驟(7)流量預(yù)測,采用簡單的加權(quán)指數(shù)平均模型,按照如下公式進(jìn)行預(yù)測下一次的流量V;V=αVcur+(1-α)Vlast,------------------------(1)步驟(8).計(jì)算步驟3中所用的分裂閾值Tsplit;Tsplit=ε·(phi)·V/W,--------------------(2)步驟(9).返回步驟(3),進(jìn)入下一個(gè)測量周期。全文摘要G比特流率下多粒度的網(wǎng)絡(luò)自動(dòng)聚類方法屬于計(jì)算機(jī)網(wǎng)絡(luò)測量
技術(shù)領(lǐng)域:
。其特征在于基于網(wǎng)絡(luò)測量的周期性采樣機(jī)制,采用了基于流量預(yù)測的啟發(fā)式算法,同時(shí)通過將IP包頭的不同字段看成是網(wǎng)絡(luò)特征空間中的不同維度,提出了針對多維空間的數(shù)據(jù)進(jìn)行自動(dòng)分類的自適應(yīng)算法。其主要步驟在于1.設(shè)置相關(guān)參數(shù);2.啟動(dòng)測量程序;3在一個(gè)測量周期內(nèi),對于每一個(gè)到達(dá)的報(bào)文依次執(zhí)行一維源地址和目的地址的聚類,源/目的地址隊(duì)聚類和端口聚類;4.數(shù)據(jù)的壓縮與輸出;5.流量預(yù)測。實(shí)驗(yàn)表明,本方法能夠?qū)崟r(shí)運(yùn)行在G比特速率的互聯(lián)網(wǎng)之上,達(dá)到了預(yù)期發(fā)明目標(biāo)。文檔編號(hào)H04L12/24GK101022370SQ200710064678公開日2007年8月22日申請日期2007年3月23日優(yōu)先權(quán)日2007年3月23日發(fā)明者楊家海,李云琪,張輝,安常青申請人:清華大學(xué)