一種網(wǎng)絡(luò)流數(shù)據(jù)重排序方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及計算機網(wǎng)絡(luò)
技術(shù)領(lǐng)域:
,具體地說,本發(fā)明涉及一種網(wǎng)絡(luò)流數(shù)據(jù)重排序方法?!?br>背景技術(shù):
】[0002]隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)中每天都會有很多數(shù)據(jù)產(chǎn)生,由于現(xiàn)代網(wǎng)絡(luò)不斷高速化、復(fù)雜化,網(wǎng)絡(luò)運營商越來越重視當(dāng)前網(wǎng)絡(luò)狀況變化。為了處理好網(wǎng)絡(luò)安全問題,需要進行網(wǎng)絡(luò)數(shù)據(jù)分析、行為模式模擬預(yù)測等等,而這些都需要有海量數(shù)據(jù)支持,需要有長時間持續(xù)的流數(shù)據(jù)作為統(tǒng)計分析源頭,所以流數(shù)據(jù)分析是發(fā)現(xiàn)安全問題,查找問題源,追溯事件發(fā)生原因的重要手段之一。[0003]與其他普通數(shù)據(jù)不同,在網(wǎng)絡(luò)流中,流數(shù)據(jù)總是具有時間局部性和空間局部性的?,F(xiàn)有的網(wǎng)絡(luò)流存儲系統(tǒng)的主要流程為:重排序、分列、分塊壓縮、存儲。其中,重排序正是利用了網(wǎng)絡(luò)流量的特性,在內(nèi)存中緩存一段時間內(nèi)的數(shù)據(jù),利用時間局部性和空間局部性將相似流數(shù)據(jù)整合到一起,以減小數(shù)據(jù)熵,提高壓縮比。例如,oLSH算法是現(xiàn)有技術(shù)中一種典型的流數(shù)據(jù)重排序技術(shù),它能夠顯著地提升流數(shù)據(jù)的壓縮效果,同時減短流數(shù)據(jù)查詢的時間。[0004]oLSH算法中,利用p-stable算法將流數(shù)據(jù)的五元組看作一個個數(shù)值,從而把五元組從高維空間映射到一維空間中,然后再依據(jù)一維空間中的長度值在Hash表中對流數(shù)據(jù)進行排序。這種方案計算復(fù)雜度很低,能夠適用于高速實時存儲系統(tǒng),然而,實踐中發(fā)現(xiàn)其數(shù)據(jù)熵仍然相對較高,不利于提高壓縮比。例如,依據(jù)oLSH算法,以下兩個流數(shù)據(jù)(10.2.1.2,10.2.1.3)與(10.2.1.2,11.2.I.1)具有相似性,可能會被放在相鄰位置。但實際上這兩個數(shù)據(jù)根本不在同一網(wǎng)段,毫無關(guān)聯(lián)性可言。也就是說,oLSH算法不能保證重排序后存儲位置相鄰的流數(shù)據(jù)都具備較高的相似性,因此基于oLSH算法的流數(shù)據(jù)存儲方案數(shù)據(jù)熵仍然相對較高,其流數(shù)據(jù)的壓縮效果還有待提高?!?br/>發(fā)明內(nèi)容】[0005]本發(fā)明的目的是提供一種計算復(fù)雜度低,數(shù)據(jù)熵小的流數(shù)據(jù)重排序方法。[0006]為實現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種網(wǎng)絡(luò)流數(shù)據(jù)重排序方法,包括下列步驟:[0007]1)接收流數(shù)據(jù),對于每個流數(shù)據(jù),根據(jù)其源IP地址所屬網(wǎng)段和目的IP地址所屬網(wǎng)段計算索引值,并根據(jù)所計算的索引值找到Hash表中對應(yīng)的Hash桶,其中Hash表是預(yù)先建立的用于緩存流數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu);[0008]2)在Hash桶內(nèi),根據(jù)流數(shù)據(jù)五元組之間的差量對桶內(nèi)的流數(shù)據(jù)進行分組,同組的流數(shù)據(jù)被排列到一起。[0009]其中,所述網(wǎng)絡(luò)流數(shù)據(jù)為基于IPv4的流數(shù)據(jù),所述步驟1)中,對于任意一個流數(shù)據(jù),根據(jù)該流數(shù)據(jù)源IP地址和目的IP地址所屬的網(wǎng)段來計算所述索引值。[0010]其中,所述步驟1)中,所述索引值為源IP地址與目的IP地址前16位之和對所述Hash表的Hash桶數(shù)目取余的值。[0011]其中,所述步驟1)還包括,對于每個流數(shù)據(jù),在根據(jù)所計算的索引值找到對應(yīng)的Hash桶后,將源IP地址,目的IP地址前16位完全相同的流數(shù)據(jù)組成該Hash桶的一條沖突鏈。[0012]其中,所述步驟2)中,五元組之間的差量包括:IP地址差量,端口差量和協(xié)議號差量。[0013]其中,所述步驟2)中,所述IP地址差量是:將IP地址看做32位int型整數(shù)直接相減并取絕對值。[0014]其中,所述步驟2)中,當(dāng)兩個流數(shù)據(jù)的端口號一致時,端口差量為零,當(dāng)兩個流數(shù)據(jù)的端口號不一致時,端口差量取為端口差量預(yù)設(shè)的固定值;當(dāng)兩個流數(shù)據(jù)的協(xié)議版本號一致時,協(xié)議號差量為零,當(dāng)兩個流數(shù)據(jù)的協(xié)議版本號不一致時,協(xié)議號差量取為協(xié)議號差量預(yù)設(shè)的固定值。[0015]其中,所述步驟1)中,對于每個數(shù)據(jù)流,執(zhí)行下列子步驟:[0016]11)根據(jù)當(dāng)前流數(shù)據(jù)的源IP地址和目的IP地址的前16位計算該流數(shù)據(jù)的Hash索引值;[0017]12)根據(jù)Hash索引值找到對應(yīng)的Hash桶,根據(jù)當(dāng)前流數(shù)據(jù)的源IP地址和目的IP地址查找Hash桶內(nèi)是否有匹配的沖突鏈,如果沒有則新建一條沖突鏈,并把當(dāng)前流數(shù)據(jù)作為該新建沖突鏈的首個數(shù)據(jù),如果有,則直接將當(dāng)前流數(shù)據(jù)插入到匹配的沖突鏈中。[0018]其中,所述步驟2)中,對于每個沖突鏈,執(zhí)行下列子步驟:[0019]21)對于沖突鏈中第一個流數(shù)據(jù),將其作為第一組的head;[0020]22)對于后續(xù)每一個流數(shù)據(jù),找到當(dāng)前每組的head,與head數(shù)據(jù)計算所述五元組之間的數(shù)值差量,如果差量小于差量閾值T,則把這條流數(shù)據(jù)加到該head數(shù)據(jù)所在組的末尾;否則,重新添加一組,并把當(dāng)前流數(shù)據(jù)作為該新建組的head。[0021]其中,所述的網(wǎng)絡(luò)流數(shù)據(jù)重排序方法還包括步驟:[0022]3)將Hash表中的流數(shù)據(jù)導(dǎo)出;[0023]所述步驟3)包括下列子步驟:[0024]31)當(dāng)Hash表中數(shù)據(jù)個數(shù)達(dá)到FJ寸,開始執(zhí)行步驟42;[0025]32)取出數(shù)據(jù)最多的Hash桶;[0026]33)從Hash桶中找出最長的沖突鏈,將該沖突鏈的流數(shù)據(jù)導(dǎo)出,并存儲至存儲設(shè)備;[0027]34)判斷當(dāng)前Hash表中流數(shù)據(jù)個數(shù)是否少于Fmin,如果是,則停止本次導(dǎo)出;否則,重新執(zhí)行步驟32)。[0028]與現(xiàn)有技術(shù)相比,本發(fā)明具有下列技術(shù)效果:[0029]1、本發(fā)明計算復(fù)雜度低,數(shù)據(jù)插入速度快,能在滿足IOG鏈路流數(shù)據(jù)實時存儲的需求。[0030]2、本發(fā)明能夠減小數(shù)據(jù)熵,提高壓縮比,減小流數(shù)據(jù)存儲所需空間。[0031]3、本發(fā)明有助于加快流數(shù)據(jù)查詢速度。【附圖說明】[0032]圖1是本發(fā)明的一個實施例中流數(shù)據(jù)存儲方法的流程圖;[0033]圖2是本發(fā)明的一個實施例中流數(shù)據(jù)存入Hash表的示意圖;[0034]圖3是基于不同重排序方法所存儲的數(shù)據(jù)在被查詢時需讀入數(shù)據(jù)塊的對比圖;[0035]圖4是基于不同重排序方法所存儲的數(shù)據(jù)的壓縮索引文件的對比圖;[0036]圖5是基于不同重排序方法所存儲的數(shù)據(jù)在被查詢時所需時間對比圖?!揪唧w實施方式】[0037]根據(jù)本發(fā)明的一個實施例,提供了一種網(wǎng)絡(luò)流數(shù)據(jù)存儲方法,概括說來,在內(nèi)存中創(chuàng)建一個Hash表,然后根據(jù)一定規(guī)則,通過低復(fù)雜度的數(shù)據(jù)處理將所接收到的網(wǎng)絡(luò)流數(shù)據(jù)快速存儲到該Hash表的相應(yīng)位置,實現(xiàn)對網(wǎng)絡(luò)流數(shù)據(jù)的重排序,使得相似流數(shù)據(jù)被整合到一起存儲。[0038]圖1是本發(fā)明的一個實施例中流數(shù)據(jù)存儲方法的流程圖,所述網(wǎng)絡(luò)流數(shù)據(jù)存儲方法包括下列步驟1至4。[0039]步驟1:創(chuàng)建Hash表。Hash表的長度可以根據(jù)需要設(shè)定,為便于描述,下文中Hash表的長度取為65535。Hash表中每一個索引值均對應(yīng)于一個Hash桶,長度為65535的Hash表就有65535個Hash桶,并且每個Hash桶中可以建立任意數(shù)量的沖突鏈。[0040]步驟2:接收網(wǎng)絡(luò)流數(shù)據(jù),所接收的流數(shù)據(jù)中帶有五元組信息,在本發(fā)明中五元組信息是指網(wǎng)絡(luò)流數(shù)據(jù)的源IP地址、目的IP地址、源端口號、目的端口號以及傳輸協(xié)議類型(傳輸協(xié)議類型可以以版本號表示)。對于每組流數(shù)據(jù),根據(jù)其五元組中提取的源IP地址所屬網(wǎng)段和目的IP地址所屬網(wǎng)段計算索引值,并根據(jù)所計算的索引值找到對應(yīng)的Hash桶。[0041]本實施例中,網(wǎng)絡(luò)流數(shù)據(jù)為基于IPv4的流數(shù)據(jù)。IPv4地址可以看做一個int型數(shù)(它是二進制數(shù),下文中不再贅述),用IP地址前16位表示該IP地址所屬的網(wǎng)段,來計算hash索引值。在一個例子中,Hash索引值為源IP地址與目的IP地址前16位之和對Hash桶數(shù)目取余的值。根據(jù)所計算的索引值即可找到當(dāng)前流數(shù)據(jù)所對應(yīng)的Hash桶。進一步地,本實施例中,在同一Hash桶內(nèi),將源IP地址,目的IP地址前16位完全相同的流數(shù)據(jù)組成一條沖突鏈。[0042]圖2示出了一個Hash表的示例。該Hash表中示出了4個流數(shù)據(jù):流數(shù)據(jù)11、流數(shù)據(jù)12、流數(shù)據(jù)13、流數(shù)據(jù)14。其中,[0043]流數(shù)據(jù)11的源IP=10.0·11.1、目的IP=159.226.1.2;[0044]流數(shù)據(jù)12的源IP=10.0·27.8、目的IP=159.226.81.2;[0045]流數(shù)據(jù)13的源IP=10.0·141.10,目的IP=159.226.9.88;[0046]流數(shù)據(jù)14的源IP=10.21.11.1、目的IP=159.205.L2。[0047]基于前文所述的計算流數(shù)據(jù)索引值的方法:采用流數(shù)據(jù)的源IP地址與目的IP地址的前16位之和對Hash桶的數(shù)量取余。流數(shù)據(jù)11、12、13的索引值均是:(10*256+0+159*256+226)%65535=43490,流數(shù)據(jù)14的索引值為:(10*256+21+159*256+205)%65535,其結(jié)果也是43490。因此流數(shù)據(jù)11、12、13均被分配到索引值為43490的Hash桶中。進一步地,流數(shù)據(jù)11、12、13的源IP地址與目的IP地址的前16位均相同,因此,流數(shù)據(jù)11、12、13組成一條沖突鏈,而流數(shù)據(jù)14的源IP地址與目的IP地址的前16位與流數(shù)據(jù)11、12、13不同,因此被分配到另一條沖突鏈中。[0048]步驟3:對于屬于同一條沖突鏈內(nèi)的多個流數(shù)據(jù),根據(jù)它們五元組之間的數(shù)值差量大小進行分組,并將同組的流數(shù)據(jù)排列到一起。[0049]在執(zhí)行完步驟2后,對于每條沖突鏈,可以保證源IP地址和目的IP地址的前16位完全相同,但是這些數(shù)據(jù)的相似性并不是完全一致的。差量重排是一種以較小的計算復(fù)雜度代價,將沖突鏈中相似度高的數(shù)據(jù)分類到一起的方案。本實施例中,差量計算是基于五元組對兩個數(shù)據(jù)流的總差量的計算,包括對IP地址差量的計算,對當(dāng)前第1頁1 2