亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種網(wǎng)絡(luò)流量數(shù)據(jù)索引方法及系統(tǒng)的制作方法

文檔序號(hào):6524323閱讀:275來(lái)源:國(guó)知局
一種網(wǎng)絡(luò)流量數(shù)據(jù)索引方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種網(wǎng)絡(luò)流量數(shù)據(jù)索引方法及系統(tǒng),方法包括:實(shí)時(shí)捕獲網(wǎng)絡(luò)流量數(shù)據(jù);在內(nèi)存中通過(guò)對(duì)所述網(wǎng)絡(luò)流量數(shù)據(jù)的每個(gè)索引字段維護(hù)一棵位圖-字典樹來(lái)建立并存儲(chǔ)所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu),進(jìn)而更新所述索引字段的索引結(jié)構(gòu);根據(jù)用戶的查詢請(qǐng)求來(lái)查詢所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu)從而獲得網(wǎng)絡(luò)流量數(shù)據(jù)的存儲(chǔ)位置信息,將該存儲(chǔ)位置信息返回給用戶,用戶根據(jù)該存儲(chǔ)位置信息獲取響應(yīng)的數(shù)據(jù)。由此,提供一種能有效地支持實(shí)時(shí)高速流量記錄的索引建立工作的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法及系統(tǒng),即使在較小索引磁盤空間消耗的情況下,也能支持快速的索引查詢操作。
【專利說(shuō)明】—種網(wǎng)絡(luò)流量數(shù)據(jù)索弓I方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)流量存儲(chǔ),特別涉及一種網(wǎng)絡(luò)流量數(shù)據(jù)索引方法及系統(tǒng)?!颈尘凹夹g(shù)】
[0002]隨著網(wǎng)絡(luò)應(yīng)用和用戶的增加,網(wǎng)絡(luò)流數(shù)據(jù)的規(guī)模越來(lái)越大,普通小型網(wǎng)絡(luò)或者校園規(guī)模的網(wǎng)絡(luò)流量帶寬都已經(jīng)到達(dá)1-1OGbps的速度,如此高速的網(wǎng)絡(luò)鏈路帶給網(wǎng)絡(luò)流量存儲(chǔ)與檢索系統(tǒng)巨大的挑戰(zhàn)。為了滿足網(wǎng)絡(luò)管理及網(wǎng)絡(luò)取證等需求,系統(tǒng)應(yīng)保證既能夠?qū)崟r(shí)存儲(chǔ)網(wǎng)絡(luò)數(shù)據(jù)流量,又可以在大規(guī)模網(wǎng)絡(luò)數(shù)據(jù)集上進(jìn)行高效的檢索操作。例如,在網(wǎng)絡(luò)取證操作中,運(yùn)營(yíng)商需要使用能方便有效地掃描存儲(chǔ)的數(shù)據(jù)集的工具來(lái)檢測(cè)入侵活動(dòng)。當(dāng)前,網(wǎng)絡(luò)歷史流量大多采用以下兩種存儲(chǔ)方法:第一種是存儲(chǔ)流記錄,常見(jiàn)的流記錄采集、存儲(chǔ)方法有sFl0W、NetFl0W和IPFIX等,這些方法僅僅保存了粗略的網(wǎng)絡(luò)統(tǒng)計(jì)信息;另一種是存儲(chǔ)網(wǎng)絡(luò)的所有數(shù)據(jù)包,這些數(shù)據(jù)包不僅包含了頭部信息,而且也包含了部分甚至全部的載荷內(nèi)容。無(wú)論是存儲(chǔ)流記錄還是存儲(chǔ)數(shù)據(jù)包,如何快速的檢索這些流量數(shù)據(jù)是非常關(guān)鍵的。通常我們會(huì)對(duì)存儲(chǔ)的流量數(shù)據(jù)建立索引以滿足之后的查詢工作。在面對(duì)高速鏈路、大規(guī)模網(wǎng)絡(luò)和復(fù)雜多樣應(yīng)用時(shí),仍舊存在著大量的挑戰(zhàn)。網(wǎng)絡(luò)流量的索引方法必須支持高速的實(shí)時(shí)插入速度、快速的查詢響應(yīng)以及較小的存儲(chǔ)空間。
[0003]在流量索引方法的研究方面,目前主要有三種索引方法:哈希索引,多路搜索樹索引以及位圖索引方法:
[0004](I)哈希索引方法:網(wǎng)絡(luò)流量存儲(chǔ)系統(tǒng)Time-Machine就是采用這種索引方法。此方法在開始階段,每次記錄的插入只會(huì)消耗較小的CPU時(shí)間。但是隨著記錄數(shù)目的增加,由于哈希鏈沖突的不斷增加,之后的插入操作將會(huì)花費(fèi)大量的時(shí)間去查找哈希表中的對(duì)應(yīng)存儲(chǔ)位置。此外,由于哈希索引方法只支持單域的相等性查找,很難支持區(qū)間查找和多域組合查找。
[0005](2)多路搜索樹索引方法:許多傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)都是采用多路搜索樹索引方法。但是由于多路搜索樹在插入和檢索過(guò)程中都需要采用二分查找操作去找到插入和檢索記錄的位置,而且如果采用傳統(tǒng)的方法索引的更新會(huì)帶來(lái)很多磁盤隨機(jī)讀寫操作。所以多路搜索樹并不能支持非??斓乃饕迦牒筒樵兯俣取?br> [0006](3)位圖索引方法:位圖索引方法已經(jīng)在許多數(shù)據(jù)存儲(chǔ)領(lǐng)域廣泛使用。此方法被證實(shí)非常適用于海量只讀數(shù)據(jù)的索引和查詢工作。至今為止已經(jīng)存在使用位圖索引方法非常優(yōu)秀的數(shù)據(jù)庫(kù),比如FastBit。但是由于位圖索引方法產(chǎn)生的索引文件非常巨大,盡管存在一些優(yōu)秀的索引壓縮編碼方法,但是對(duì)于磁盤存儲(chǔ)空間的消耗以及每次查詢從磁盤讀入索引文件的時(shí)間開銷都是一個(gè)不可避免的缺點(diǎn)。
[0007]由于上述方法在網(wǎng)絡(luò)流量的快速索引以及查詢方面存在著不同程度的缺點(diǎn),從而使得這些方法不能夠真正應(yīng)用于IOGbps及以上的高速鏈路環(huán)境中。上述情況迫切要求我們既能夠?qū)崟r(shí)地對(duì)高速鏈路環(huán)境下的網(wǎng)絡(luò)數(shù)據(jù)流量進(jìn)行存儲(chǔ),又能夠?qū)v史數(shù)據(jù)流量進(jìn)行快速查詢檢索。[0008]在現(xiàn)有技術(shù)中,如發(fā)明名稱為“一種海量歷史數(shù)據(jù)的存儲(chǔ)及索引方法”,該發(fā)明公開了一種海量歷史數(shù)據(jù)的存儲(chǔ)及索引方法,屬于實(shí)時(shí)歷史數(shù)據(jù)庫(kù)領(lǐng)域。該方法根據(jù)分布式文件系統(tǒng)將大文件進(jìn)行分塊存儲(chǔ)的特點(diǎn),給出了一種簡(jiǎn)單高效的海量歷史數(shù)據(jù)文件的存儲(chǔ)方法和一種高效的分布式索引機(jī)制。該存儲(chǔ)方法可以保證滿足當(dāng)前海量歷史數(shù)據(jù)文件的存儲(chǔ)要求,更保證具有在線擴(kuò)展的特性;索引機(jī)制可以實(shí)現(xiàn)對(duì)海量歷史數(shù)據(jù)的快速訪問(wèn),同時(shí)在系統(tǒng)進(jìn)行資源擴(kuò)展以后,即底層物理存儲(chǔ)發(fā)生變化時(shí),該索引在無(wú)需修改的情況下依舊可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的查找功能。但是該發(fā)明的方法更側(cè)重分布式的存儲(chǔ)和索引方法,用大文件分塊存儲(chǔ)來(lái)保證效率。而不是專注于索引算法本身的優(yōu)化,沒(méi)有針對(duì)海量網(wǎng)絡(luò)流量數(shù)據(jù)特征進(jìn)行優(yōu)化。

【發(fā)明內(nèi)容】

[0009]為了解決上述問(wèn)題,本發(fā)明的目的在于,提供一種能有效地支持實(shí)時(shí)高速流量記錄的索引建立工作的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法及系統(tǒng),即使在較小索引磁盤空間消耗的情況下,也能支持快速的索引查詢操作。
[0010]為實(shí)現(xiàn)上述目的,本發(fā)明提出一種網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,包括下列步驟:
[0011]步驟1,實(shí)時(shí)捕獲網(wǎng)絡(luò)流量數(shù)據(jù);
[0012]步驟2,所述網(wǎng)絡(luò)流量數(shù)據(jù)具有多個(gè)索引字段,在內(nèi)存中通過(guò)對(duì)所述索引字段維護(hù)位圖-字典樹來(lái)建立并存儲(chǔ)所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu),對(duì)于所述索引字段按字節(jié)來(lái)劃分鍵值,通過(guò)使所述鍵值在所述位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn)、葉子節(jié)點(diǎn)的指針指向存儲(chǔ)位置鏈表來(lái)更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu);
[0013]步驟3,根據(jù)用戶的查詢請(qǐng)求查詢所述索引結(jié)構(gòu)從而獲得網(wǎng)絡(luò)流量數(shù)據(jù)的存儲(chǔ)位置信息,將該存儲(chǔ)位置信息返回給用戶,用戶根據(jù)該存儲(chǔ)位置信息獲取響應(yīng)的數(shù)據(jù)。
[0014]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,在所述步驟2中,所述位圖-字典樹的高度等于所述索引字段的字節(jié)大小,對(duì)于所述索引字段按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu)的方法具體為:
[0015]依次獲取所述索引字段對(duì)應(yīng)的鍵值,通過(guò)檢測(cè)所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為1,來(lái)判斷所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),若不具有孩子節(jié)點(diǎn),則分配一個(gè)新節(jié)點(diǎn),并使所述鍵值對(duì)應(yīng)的指針指向該新節(jié)點(diǎn),同時(shí)將該比特值置為1,以使所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),到達(dá)所述位圖-字典樹的葉子節(jié)點(diǎn)時(shí),使所述葉子節(jié)點(diǎn)對(duì)應(yīng)指針指向存儲(chǔ)位置鏈表,在該存儲(chǔ)位置鏈表中新增所述索引字段的存儲(chǔ)位置信息。
[0016]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,當(dāng)內(nèi)存中的所述索引結(jié)構(gòu)大于內(nèi)存閾值時(shí),將所述索引結(jié)構(gòu)存入磁盤,并在所述索引結(jié)構(gòu)中增加一條記錄并指向磁盤存儲(chǔ)的位置,同時(shí)在內(nèi)存中建立一個(gè)新的索引結(jié)構(gòu),用于處理后續(xù)的網(wǎng)絡(luò)流量數(shù)據(jù)。
[0017]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,將所述索引結(jié)構(gòu)存入磁盤的具體方式為,在磁盤中按照所述位圖-字典樹的層來(lái)存儲(chǔ)所述索引結(jié)構(gòu),且各層采用連續(xù)存儲(chǔ)方式。
[0018]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,將所述索引結(jié)構(gòu)存入磁盤的方法具體為,
[0019]對(duì)于所述位圖-字典樹的每個(gè)節(jié)點(diǎn),先存儲(chǔ)位圖結(jié)構(gòu),然后存儲(chǔ)一個(gè)文件偏移位置的數(shù)組,該數(shù)組示出所述位圖-字典樹的每個(gè)節(jié)點(diǎn)的各孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,而對(duì)于所述位圖-字典樹的每個(gè)葉子節(jié)點(diǎn),該數(shù)組示出每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)鏈表的存儲(chǔ)位置。
[0020]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,所述步驟3的查詢所述索引結(jié)構(gòu)的查詢過(guò)程為,
[0021]將查詢條件按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,其中最后一個(gè)鍵值為未知鍵值,依此獲取所述查詢條件的鍵值,通過(guò)讀取所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為I來(lái)獲取該根節(jié)點(diǎn)對(duì)應(yīng)孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,并讀取該位置上的位圖-字典樹節(jié)點(diǎn),否則返回查詢結(jié)果為空,到達(dá)最后一個(gè)鍵值的前一個(gè)鍵值時(shí),獲取其在位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的所有比特值為I的位,然后獲取該所有比特值為I的位的偏移位置,最后讀取這些偏移位置的葉子節(jié)點(diǎn)和其對(duì)應(yīng)的鏈表元素,并將鏈表元素進(jìn)行合并返回。
[0022]本發(fā)明還涉及一種網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,包括下列模塊:
[0023]網(wǎng)絡(luò)流量數(shù)據(jù)獲取模塊,用于通過(guò)網(wǎng)卡或板卡來(lái)實(shí)時(shí)捕獲網(wǎng)絡(luò)流量數(shù)據(jù);
[0024]索引結(jié)構(gòu)維護(hù)模塊,所述網(wǎng)絡(luò)流量數(shù)據(jù)具有多個(gè)索引字段,該模塊用于在內(nèi)存中通過(guò)使所述索引字段維護(hù)位圖-字典樹來(lái)建立并存儲(chǔ)所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu),對(duì)于所述索引字段按字節(jié)來(lái)劃分鍵值,通過(guò)使所述鍵值在所述位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn)、葉子節(jié)點(diǎn)的指針指向存儲(chǔ)位置鏈表來(lái)更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu);
[0025]查詢響應(yīng)模塊,用于根據(jù)用戶的查詢請(qǐng)求查詢所述索引結(jié)構(gòu)從而獲得網(wǎng)絡(luò)流量數(shù)據(jù)的存儲(chǔ)位置信息,將該存儲(chǔ)位置信息返回給用戶,用戶根據(jù)該存儲(chǔ)位置信息獲取響應(yīng)的數(shù)據(jù)。
[0026]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,在所述索引結(jié)構(gòu)維護(hù)模塊中,所述位圖-字典樹的高度等于所述索引字段的字節(jié)大小,對(duì)于所述索引字段按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu)的方法具體為:
[0027]依次獲取所述索引字段對(duì)應(yīng)的鍵值,通過(guò)檢測(cè)所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為1,來(lái)判斷所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),若不具有孩子節(jié)點(diǎn),則分配一個(gè)新節(jié)點(diǎn),并使所述鍵值對(duì)應(yīng)的指針指向該新節(jié)點(diǎn),同時(shí)將該比特值置為1,以使所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),到達(dá)所述位圖-字典樹的葉子節(jié)點(diǎn)時(shí),使所述葉子節(jié)點(diǎn)對(duì)應(yīng)指針指向存儲(chǔ)位置鏈表,在該存儲(chǔ)位置鏈表中新增所述索引字段的存儲(chǔ)位置信息。
[0028]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,當(dāng)內(nèi)存中的所述索引結(jié)構(gòu)大于內(nèi)存閾值時(shí),將所述索引結(jié)構(gòu)存入磁盤,并在所述索引結(jié)構(gòu)中增加一條記錄并指向磁盤存儲(chǔ)的位置,同時(shí)在內(nèi)存中建立一個(gè)新的索引結(jié)構(gòu),用于處理后續(xù)的網(wǎng)絡(luò)流量數(shù)據(jù)。
[0029]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,將所述索引結(jié)構(gòu)存入磁盤的具體方式為,在磁盤中按照所述位圖-字典樹的層來(lái)存儲(chǔ)所述索引結(jié)構(gòu),且各層采用連續(xù)存儲(chǔ)方式。[0030]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,將所述索引結(jié)構(gòu)存入磁盤的方法具體為,
[0031]對(duì)于所述位圖-字典樹的每個(gè)節(jié)點(diǎn),先存儲(chǔ)位圖結(jié)構(gòu),然后存儲(chǔ)一個(gè)文件偏移位置的數(shù)組,該數(shù)組示出所述位圖-字典樹的每個(gè)節(jié)點(diǎn)的各孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,而對(duì)于所述位圖-字典樹的每個(gè)葉子節(jié)點(diǎn),該數(shù)組示出每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)鏈表的存儲(chǔ)位置。
[0032]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,所述查詢響應(yīng)模塊的對(duì)存入磁盤的索引結(jié)構(gòu)進(jìn)行查詢的查詢過(guò)程為,
[0033]將查詢條件按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,其中最后一個(gè)鍵值為未知鍵值,依此獲取所述查詢條件的鍵值,通過(guò)讀取所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為I來(lái)獲取該根節(jié)點(diǎn)對(duì)應(yīng)孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,并讀取該位置上的位圖-字典樹節(jié)點(diǎn),否則返回查詢結(jié)果為空,到達(dá)最后一個(gè)鍵值的前一個(gè)鍵值時(shí),獲取其在位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的所有比特值為I的位,然后獲取該所有比特值為I的位的偏移位置,最后讀取這些偏移位置的葉子節(jié)點(diǎn)和其對(duì)應(yīng)的鏈表元素,并將鏈表元素進(jìn)行合并返回。
[0034]本發(fā)明的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法具有以下主要優(yōu)勢(shì):
[0035](I)實(shí)時(shí)索引記錄插入速度快:利用網(wǎng)絡(luò)流量索引字段的特征,本發(fā)明的索引方法對(duì)于每次索引結(jié)構(gòu)的更新操作最多花費(fèi)4次樹節(jié)點(diǎn)的訪問(wèn)。
[0036](2)索引文件磁盤消耗小:索引文件大小和索引記錄數(shù)目成線性關(guān)系,并且比快速比特索引文件大小小一半左右。
[0037](3)查詢響應(yīng)快:由于查詢的索引可能存儲(chǔ)在內(nèi)存或磁盤上,對(duì)于內(nèi)存中的索引結(jié)構(gòu),查詢和插入操作一樣只需花費(fèi)4次對(duì)索引樹節(jié)點(diǎn)的訪問(wèn),對(duì)于磁盤上的索引結(jié)構(gòu),只需最多4次磁盤查找操作以及相關(guān)數(shù)據(jù)的讀取操作便能獲取索引信息,最后定為查詢結(jié)果數(shù)據(jù)的存儲(chǔ)位置。
[0038]總之本發(fā)明中提出的方法可以有效地支持實(shí)時(shí)高速流量記錄的索引建立工作,并在較小索引磁盤空間消耗的情況下,支持快速的索引查詢操作。
【專利附圖】

【附圖說(shuō)明】
[0039]圖1是本發(fā)明的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法的索引結(jié)構(gòu)示意圖;
[0040]圖2是本發(fā)明的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法的索引文件磁盤存儲(chǔ)布局示意圖;
[0041]圖3是本發(fā)明的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法的查詢磁盤索引文件過(guò)程示意圖。
【具體實(shí)施方式】
[0042]不同于以往的索引方法,本發(fā)明通過(guò)深入挖掘網(wǎng)絡(luò)流量以及索引字段的特征,并利用這些特征提出相應(yīng)的索引方法,這樣可以有效地克服許多缺陷。通過(guò)深入挖掘的網(wǎng)絡(luò)流量以及索引字段特征如下:
[0043](I)由于網(wǎng)絡(luò)流量以及索引文件往往只用于查詢功能,也就是當(dāng)網(wǎng)絡(luò)流量數(shù)據(jù)和索引文件寫入到磁盤之后就不會(huì)再發(fā)生任何修改、更新操作。
[0044](2)網(wǎng)絡(luò)流量索引的字段一般只有六種:源IP地址,目的IP地址,源端口號(hào),目的端口號(hào),協(xié)議號(hào)以及時(shí)間戳。而以上幾種字段要么存在很強(qiáng)的局部性特征,要么其取值范圍分布在一個(gè)非常小的區(qū)間。由于IP地址和時(shí)間戳擁有共享公共前綴的特征,對(duì)于端口號(hào),協(xié)議號(hào)字段,它們的取值范圍非常小,最大只是O到65535之間。
[0045](3)網(wǎng)絡(luò)流量到達(dá)的速度非常迅速,這要求索引方法要支持非??斓膶?shí)時(shí)插入速度。
[0046]本發(fā)明的索引方法主要包括以下幾個(gè)功能模塊:
[0047](I)網(wǎng)絡(luò)流量數(shù)據(jù)獲取模塊:用于通過(guò)網(wǎng)卡或板卡實(shí)時(shí)捕獲網(wǎng)絡(luò)流量數(shù)據(jù),即數(shù)據(jù)包或數(shù)據(jù)流記錄,并將捕獲的網(wǎng)絡(luò)流量數(shù)據(jù)交給索引結(jié)構(gòu)更新模塊,該模塊用于更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu),如果需要存儲(chǔ)數(shù)據(jù)包記錄,則將數(shù)據(jù)包寫入磁盤,并在索引結(jié)構(gòu)中增加一條記錄并指向磁盤存儲(chǔ)的位置。
[0048](2)索引結(jié)構(gòu)維護(hù)模塊:該模塊用于實(shí)時(shí)維護(hù)這些網(wǎng)絡(luò)流量數(shù)據(jù)的到達(dá)以及維護(hù)它們磁盤的存儲(chǔ)信息。當(dāng)索引結(jié)構(gòu)大于內(nèi)存閾值時(shí),索引結(jié)構(gòu)就會(huì)被永久性存入磁盤,另一個(gè)新的索引結(jié)構(gòu)將處理后續(xù)到達(dá)記錄的索引插入操作。
[0049](3)查詢響應(yīng)模塊:索引的作用就是為了快速地檢索到存儲(chǔ)的歷史流量數(shù)據(jù)。該查詢響應(yīng)模塊功能主要負(fù)責(zé)接收用戶的查詢請(qǐng)求,并查詢內(nèi)存以及磁盤的索引結(jié)構(gòu),將查詢的網(wǎng)絡(luò)流量數(shù)據(jù)的磁盤存儲(chǔ)信息返回給用戶,用戶根據(jù)該存儲(chǔ)位置信息獲取響應(yīng)的數(shù)據(jù)。
[0050]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0051]本索引方法是基于字典樹與位圖結(jié)構(gòu)(簡(jiǎn)稱為位圖-字典樹)相結(jié)合來(lái)維護(hù)實(shí)時(shí)索引記錄的插入操作。其中字典樹中每個(gè)節(jié)點(diǎn)一般包括256個(gè)指針用于指向?qū)?yīng)的孩子節(jié)點(diǎn),而位圖結(jié)構(gòu)用于標(biāo)記哪些位置擁有孩子節(jié)點(diǎn),哪些位置沒(méi)有孩子節(jié)點(diǎn)。關(guān)于采用的索引結(jié)構(gòu)如附圖1所示。由于網(wǎng)絡(luò)流量數(shù)據(jù)的索引字段往往只有以下幾種:源IP地址,目的IP地址,源端口號(hào),目的端口號(hào),協(xié)議號(hào)以及時(shí)間戳。每當(dāng)新的網(wǎng)絡(luò)流量數(shù)據(jù)到達(dá),一方面將這些網(wǎng)絡(luò)流量數(shù)據(jù)信息寫入磁盤存儲(chǔ),另一方面解析這些網(wǎng)絡(luò)流量數(shù)據(jù)得到需要建立索引字段的值,從而更新這些字段的索引結(jié)構(gòu)。
[0052]在內(nèi)存中對(duì)于每個(gè)索引字段維護(hù)一顆位圖-字典樹來(lái)存儲(chǔ)這些索引信息,位圖-字典葉子節(jié)點(diǎn)會(huì)指向一些鏈表,分別表示滿足這些索引條件的所有記錄的磁盤存儲(chǔ)位置。由于位圖-字典樹中每個(gè)節(jié)點(diǎn)存儲(chǔ)256個(gè)指針,也就是一個(gè)字節(jié)的信息,那么該樹的高度等于該索引字段的字節(jié)大小。比如對(duì)于源IPv4地址來(lái)說(shuō),它的字節(jié)大小為4字節(jié),樹的高度也是4。每次從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的路徑代表了該IPv4地址的值,如附圖1所示。假設(shè)到達(dá)的網(wǎng)絡(luò)流量數(shù)據(jù)的源IPv4地址為”10.24.0.8”,那么該地址首先被分為4個(gè)鍵值,每個(gè)字節(jié)一個(gè)鍵值,即{10,24,0,8}。那么對(duì)其更新的步驟如下:
[0053](I)首先檢測(cè)根節(jié)點(diǎn)的位圖中第10個(gè)比特的值,如果該比特值為I則表示根節(jié)點(diǎn)中第10個(gè)指針擁有一個(gè)真實(shí)的孩子節(jié)點(diǎn),則進(jìn)入第2步;如果該比特值為0,則表示根節(jié)點(diǎn)中第10個(gè)指針為空,則分配一個(gè)新的節(jié)點(diǎn),并將第10個(gè)指針指向這個(gè)新的節(jié)點(diǎn),同時(shí)將根節(jié)點(diǎn)中位圖的第10個(gè)比特值置為1,進(jìn)入第二步。
[0054](2)獲取對(duì)應(yīng)的鍵值,比如第二層節(jié)點(diǎn)鍵值為24,第三層節(jié)點(diǎn)鍵值為0,并執(zhí)行第I步中類似的操作直到葉子節(jié)點(diǎn),如果是葉子節(jié)點(diǎn),則在對(duì)應(yīng)指針指向的鏈表后面新增該記錄的磁盤存儲(chǔ)位置信息。
[0055]基于上述結(jié)構(gòu),可以快速地處理內(nèi)存中網(wǎng)絡(luò)流量索引的插入操作。但是由于內(nèi)存容量有限,隨著網(wǎng)絡(luò)數(shù)據(jù)包或流記錄數(shù)目的不斷增加,無(wú)法將這些索引信息一直存放在內(nèi)存當(dāng)中。需要每隔一段時(shí)間將內(nèi)存中的索引結(jié)構(gòu)導(dǎo)入到磁盤存儲(chǔ),然后內(nèi)存中新的位圖-字典樹結(jié)構(gòu)會(huì)負(fù)責(zé)后續(xù)記錄的索引工作。附圖2表示了將內(nèi)存索引結(jié)構(gòu)導(dǎo)入到磁盤存儲(chǔ)的示意圖。
[0056]附圖2中依舊采用IP地址字段作為例子,在內(nèi)存中該索引結(jié)構(gòu)位圖-字典樹的高度為4。位圖-字典樹在磁盤中是按層來(lái)存儲(chǔ)的,也就是說(shuō)先存儲(chǔ)根節(jié)點(diǎn),然后存儲(chǔ)第二層的節(jié)點(diǎn),最后存儲(chǔ)葉子節(jié)點(diǎn)以及其指向的鏈表。對(duì)于每個(gè)位圖-字典樹節(jié)點(diǎn),會(huì)先存儲(chǔ)位圖結(jié)構(gòu),然后存儲(chǔ)一個(gè)文件偏移位置的數(shù)組,該數(shù)組表示了各個(gè)孩子節(jié)點(diǎn)在磁盤中存儲(chǔ)的位置。由于在內(nèi)存中位圖-字典樹節(jié)點(diǎn)中的部分指針是空指針,而在磁盤存儲(chǔ)過(guò)程中,只需存儲(chǔ)那些擁有孩子節(jié)點(diǎn)的指針位置,該指針位置代表了孩子節(jié)點(diǎn)存儲(chǔ)的磁盤位置。最后對(duì)于葉子節(jié)點(diǎn)來(lái)說(shuō),每個(gè)節(jié)點(diǎn)的數(shù)組元素存儲(chǔ)的是對(duì)應(yīng)鏈表的存儲(chǔ)位置。各層的連續(xù)存儲(chǔ)是為了在處理區(qū)間查詢時(shí)可以在磁盤上進(jìn)行順序讀操作,無(wú)需多余的磁盤查找操作,因?yàn)轫樞蜃x操作比查找操作要快很多。
[0057]擁有了內(nèi)存中的索引結(jié)構(gòu)和在磁盤永久存儲(chǔ)的索引文件,就可以進(jìn)行各種常用的網(wǎng)絡(luò)流量檢索查詢。本發(fā)明的索引方法支持以下幾種查詢:
[0058](I)單域查詢:可以對(duì)單個(gè)被索引的字段進(jìn)行查詢,查詢過(guò)程是直接檢索內(nèi)存中相應(yīng)字段索引結(jié)構(gòu)和磁盤中存儲(chǔ)的索引文件,然后得到滿足條件的鏈表,鏈表中元素代表查詢的記錄位置。單域查詢的例子為“source ip=10.24.0.8” ;
[0059](2)多域聯(lián)合查詢:可以對(duì)多個(gè)字段的組合進(jìn)行查詢,比如” sourceip=10.24.0.8and destination ip=220.11.8.8and source port=55555and destinationport=80”。多個(gè)域的組合查詢?cè)谔幚磉^(guò)程中被分隔成多個(gè)單域的查詢,最后對(duì)這些查詢的結(jié)果進(jìn)行求交集便得到了最后滿足條件的記錄存儲(chǔ)位置。
[0060](3)區(qū)間查詢:可以對(duì)一些字段進(jìn)行區(qū)間查詢,比如“timestamp froml00to200andsource ip=10.24.0.8”。由于在磁盤存儲(chǔ)位圖_字典結(jié)構(gòu)按每層連續(xù)存儲(chǔ),所以非常有利于區(qū)間查詢。
[0061](4)通配符查詢:由于網(wǎng)絡(luò)流量索引的一些特殊要求,支持一些字段的通配符查詢,比如“10.24.0.*”,其中代表了可以匹配任意值(在這里取值范圍:0到255)。對(duì)于通配符查詢可以等價(jià)轉(zhuǎn)化成為區(qū)間查詢,比如“ 10.24.0.* ”等價(jià)于“ 10.24.0.0 ”到“10.24.0.255”。
[0062]附圖3為從磁盤索引文件進(jìn)行查詢的過(guò)程示意圖。由于多域聯(lián)合查詢可以轉(zhuǎn)化為單域查詢?nèi)缓筮M(jìn)行處理。將以查詢所有源IP地址滿足“10.24.0.*”條件的記錄作為例子介紹查找的詳細(xì)過(guò)程。查詢條件“10.24.0.*”將依舊分成四個(gè)鍵值{10,24,0,*}。首先讀取磁盤索引文件的根節(jié)點(diǎn),并判斷其位圖中第10個(gè)比特的值,如果為1,則獲取其對(duì)應(yīng)孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,如附圖3中的偏移量208 ;如果為0,則表示沒(méi)有存在第一個(gè)字節(jié)值為10的鍵值,所以返回查詢結(jié)果為空。如果為1,找到了偏移位置208,則讀取該位置上的位圖-字典樹節(jié)點(diǎn),然后重復(fù)以上的過(guò)程。當(dāng)?shù)竭_(dá)第三層時(shí),由于第四層的鍵值為表示所有值都滿足,則讀取第三層對(duì)應(yīng)節(jié)點(diǎn)位圖結(jié)構(gòu)中所有比特值為I的位,然后獲得他們的偏移位置,最后讀取這些偏移位置的葉子節(jié)點(diǎn)和其對(duì)應(yīng)的鏈表元素,并將鏈表元素進(jìn)行合并返回。對(duì)于內(nèi)存中的索引結(jié)構(gòu),根據(jù)查詢的關(guān)鍵字在內(nèi)存中根據(jù)字典樹找到對(duì)應(yīng)的葉子節(jié)點(diǎn)并讀取滿足條件的記錄存儲(chǔ)位置返回。
[0063]對(duì)于本發(fā)明涉及的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其包括下列模塊:
[0064]網(wǎng)絡(luò)流量數(shù)據(jù)獲取模塊,用于通過(guò)網(wǎng)卡或板卡來(lái)實(shí)時(shí)捕獲網(wǎng)絡(luò)流量數(shù)據(jù);
[0065]索引結(jié)構(gòu)維護(hù)模塊,所述網(wǎng)絡(luò)流量數(shù)據(jù)具有多個(gè)索引字段,該模塊用于在內(nèi)存中通過(guò)使所述索引字段維護(hù)位圖-字典樹來(lái)建立并存儲(chǔ)所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu),對(duì)于所述索引字段按字節(jié)來(lái)劃分鍵值,通過(guò)使所述鍵值在所述位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn)、葉子節(jié)點(diǎn)的指針指向存儲(chǔ)位置鏈表來(lái)更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu);
[0066]查詢響應(yīng)模塊,用于根據(jù)用戶的查詢請(qǐng)求查詢所述索引結(jié)構(gòu)從而獲得網(wǎng)絡(luò)流量數(shù)據(jù)的存儲(chǔ)位置信息,將該存儲(chǔ)位置信息返回給用戶,用戶根據(jù)該存儲(chǔ)位置信息獲取響應(yīng)的數(shù)據(jù)。
[0067]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其中,在所述索引結(jié)構(gòu)維護(hù)模塊中,所述位圖-字典樹的高度等于所述索引字段的字節(jié)大小,對(duì)于所述索引字段按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu)的方法具體為:
[0068]依次獲取所述索引字段對(duì)應(yīng)的鍵值,通過(guò)檢測(cè)所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為1,來(lái)判斷所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),若不具有孩子節(jié)點(diǎn),則分配一個(gè)新節(jié)點(diǎn),并使所述鍵值對(duì)應(yīng)的指針指向該新節(jié)點(diǎn),同時(shí)將該比特值置為1,以使所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),到達(dá)所述位圖-字典樹的葉子節(jié)點(diǎn)時(shí),使所述葉子節(jié)點(diǎn)對(duì)應(yīng)指針指向存儲(chǔ)位置鏈表,在該存儲(chǔ)位置鏈表中新增所述索引字段的存儲(chǔ)位置信息。
[0069]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其中,當(dāng)內(nèi)存中的所述索引結(jié)構(gòu)大于內(nèi)存閾值時(shí),將所述索引結(jié)構(gòu)存入磁盤,并在所述索引結(jié)構(gòu)中增加一條記錄并指向磁盤存儲(chǔ)的位置,同時(shí)在內(nèi)存中建立一個(gè)新的索引結(jié)構(gòu),用于處理后續(xù)的網(wǎng)絡(luò)流量數(shù)據(jù)。
[0070]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其中,將所述索引結(jié)構(gòu)存入磁盤的具體方式為,在磁盤中按照所述位圖-字典樹的層來(lái)存儲(chǔ)所述索引結(jié)構(gòu),且各層采用連續(xù)存儲(chǔ)方式。
[0071]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其中,將所述索引結(jié)構(gòu)存入磁盤的方法具體為,
[0072]對(duì)于所述位圖-字典樹的每個(gè)節(jié)點(diǎn),先存儲(chǔ)位圖結(jié)構(gòu),然后存儲(chǔ)一個(gè)文件偏移位置的數(shù)組,該數(shù)組示出所述位圖-字典樹的每個(gè)節(jié)點(diǎn)的各孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,而對(duì)于所述位圖-字典樹的每個(gè)葉子節(jié)點(diǎn),該數(shù)組示出每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)鏈表的存儲(chǔ)位置。
[0073]本發(fā)明提出的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其中,所述查詢響應(yīng)模塊的對(duì)存入磁盤的索引結(jié)構(gòu)進(jìn)行查詢的查詢過(guò)程為,
[0074]將查詢條件按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,其中最后一個(gè)鍵值為未知鍵值,依此獲取所述查詢條件的鍵值,通過(guò)讀取所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為I來(lái)獲取該根節(jié)點(diǎn)對(duì)應(yīng)孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,并讀取該位置上的位圖-字典樹節(jié)點(diǎn),否則返回查詢結(jié)果為空,到達(dá)最后一個(gè)鍵值的前一個(gè)鍵值時(shí),獲取其在位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的所有比特值為I的位,然后獲取該所有比特值為I的位的偏移位置形成一個(gè)數(shù)組,最后讀取所有所述偏移位置的葉子節(jié)點(diǎn)和該葉子節(jié)點(diǎn)對(duì)應(yīng)的鏈表的元素,并將所述鏈表的元素進(jìn)行合并返回。
【權(quán)利要求】
1.一種網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,包括下列步驟: 步驟1,實(shí)時(shí)捕獲網(wǎng)絡(luò)流量數(shù)據(jù); 步驟2,所述網(wǎng)絡(luò)流量數(shù)據(jù)具有多個(gè)索引字段,在內(nèi)存中通過(guò)使所述索引字段維護(hù)位圖-字典樹來(lái)建立并存儲(chǔ)所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu),對(duì)于所述索引字段按字節(jié)來(lái)劃分鍵值,通過(guò)使所述鍵值在所述位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn)、葉子節(jié)點(diǎn)的指針指向存儲(chǔ)位置鏈表來(lái)更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu); 步驟3,根據(jù)用戶的查詢請(qǐng)求查詢所述索引結(jié)構(gòu)從而獲得網(wǎng)絡(luò)流量數(shù)據(jù)的存儲(chǔ)位置信息,將該存儲(chǔ)位置信息返回給用戶,用戶根據(jù)該存儲(chǔ)位置信息獲取響應(yīng)的數(shù)據(jù)。
2.如權(quán)利要求1所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,在所述步驟2中,所述位圖-字典樹的高度等于所述索引字段的字節(jié)大小,對(duì)于所述索引字段按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu)的方法具體為: 依次獲取所述索引字段對(duì)應(yīng)的鍵值,通過(guò)檢測(cè)所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為1,來(lái)判斷所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),若不具有孩子節(jié)點(diǎn),則分配一個(gè)新節(jié)點(diǎn),并使所述鍵值對(duì)應(yīng)的指針指向該新節(jié)點(diǎn),同時(shí)將該比特值置為1,以使所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),到達(dá)所述位圖-字典樹的葉子節(jié)點(diǎn)時(shí),使所述葉子節(jié)點(diǎn)對(duì)應(yīng)指針指向存儲(chǔ)位置鏈表,在該存儲(chǔ)位置鏈表中新增所述索引字段的存儲(chǔ)位置信息。
3.如權(quán)利要求1所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,當(dāng)內(nèi)存中的所述索引結(jié)構(gòu)大于內(nèi)存閾值時(shí),將所述索引結(jié)構(gòu)存入磁盤,并在所述索引結(jié)構(gòu)中增加一條記錄并指向磁盤存儲(chǔ)的位置,同時(shí)在內(nèi)存中建立一個(gè)新的索引結(jié)構(gòu),用于處理后續(xù)的網(wǎng)絡(luò)流量數(shù)據(jù)。
4.如權(quán)利要求3所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,將所述索引結(jié)構(gòu)存入磁盤的具體方式為,在磁盤中按照所述位圖-字典樹的層來(lái)存儲(chǔ)所述索引結(jié)構(gòu),且各層采用連續(xù)存儲(chǔ)方式。
5.如權(quán)利要求3或4所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,將所述索引結(jié)構(gòu)存入磁盤的方法具體為, 對(duì)于所述位圖-字典樹的每個(gè)節(jié)點(diǎn),先存儲(chǔ)位圖結(jié)構(gòu),然后存儲(chǔ)一個(gè)文件偏移位置的數(shù)組,該數(shù)組示出所述位圖-字典樹的每個(gè)節(jié)點(diǎn)的各孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,而對(duì)于所述位圖-字典樹的每個(gè)葉子節(jié)點(diǎn),該數(shù)組示出每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)鏈表的存儲(chǔ)位置。
6.如權(quán)利要求1或2所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引方法,其特征在于,所述步驟3的查詢所述索引結(jié)構(gòu)的查詢過(guò)程為, 將查詢條件按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,其中最后一個(gè)鍵值為未知鍵值,依此獲取所述查詢條件的鍵值,通過(guò)讀取所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為I來(lái)獲取該根節(jié)點(diǎn)對(duì)應(yīng)孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,并讀取該位置上的位圖-字典樹節(jié)點(diǎn),否則返回查詢結(jié)果為空,到達(dá)最后一個(gè)鍵值的前一個(gè)鍵值時(shí),獲取其在位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的所有比特值為I的位,然后獲取該所有比特值為I的位的偏移位置,最后讀取這些偏移位置的葉子節(jié)點(diǎn)和其對(duì)應(yīng)的鏈表元素,并將鏈表元素進(jìn)行合并返回。
7.—種網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,包括下列模塊: 網(wǎng)絡(luò)流量數(shù)據(jù)獲取模塊,用于通過(guò)網(wǎng)卡或板卡來(lái)實(shí)時(shí)捕獲網(wǎng)絡(luò)流量數(shù)據(jù);索引結(jié)構(gòu)維護(hù)模塊,所述網(wǎng)絡(luò)流量數(shù)據(jù)具有多個(gè)索引字段,該模塊用于在內(nèi)存中通過(guò)使所述索引字段維護(hù)位圖-字典樹來(lái)建立并存儲(chǔ)所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu),對(duì)于所述索引字段按字節(jié)來(lái)劃分鍵值,通過(guò)使所述鍵值在所述位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn)、葉子節(jié)點(diǎn)的指針指向存儲(chǔ)位置鏈表來(lái)更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu); 查詢響應(yīng)模塊,用于根據(jù)用戶的查詢請(qǐng)求查詢所述索引結(jié)構(gòu)從而獲得網(wǎng)絡(luò)流量數(shù)據(jù)的存儲(chǔ)位置信息,將該存儲(chǔ)位置信息返回給用戶,用戶根據(jù)該存儲(chǔ)位置信息獲取響應(yīng)的數(shù)據(jù)。
8.如權(quán)利要求7所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,在所述索引結(jié)構(gòu)維護(hù)模塊中,所述位圖-字典樹的高度等于所述索引字段的字節(jié)大小,對(duì)于所述索引字段按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,更新所述網(wǎng)絡(luò)流量數(shù)據(jù)的索引結(jié)構(gòu)的方法具體為: 依次獲取所述索引字段對(duì)應(yīng)的鍵值,通過(guò)檢測(cè)所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為1,來(lái)判斷所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),若不具有孩子節(jié)點(diǎn),則分配一個(gè)新節(jié)點(diǎn),并使所述鍵值對(duì)應(yīng)的指針指向該新節(jié)點(diǎn),同時(shí)將該比特值置為1,以使所述非葉子節(jié)點(diǎn)的指針具有孩子節(jié)點(diǎn),到達(dá)所述位圖-字典樹的葉子節(jié)點(diǎn)時(shí),使所述葉子節(jié)點(diǎn)對(duì)應(yīng)指針指向存儲(chǔ)位置鏈表,在該存儲(chǔ)位置鏈表中新增所述索引字段的存儲(chǔ)位置信息。
9.如權(quán)利要求7所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,當(dāng)內(nèi)存中的所述索引結(jié)構(gòu)大于內(nèi)存閾值時(shí),將所述索引結(jié)構(gòu)存入磁盤,并在所述索引結(jié)構(gòu)中增加一條記錄并指向磁盤存儲(chǔ)的位置,同時(shí)在內(nèi)存中建立一個(gè)新的索引結(jié)構(gòu),用于處理后續(xù)的網(wǎng)絡(luò)流量數(shù)據(jù)。
10.如權(quán)利要求9所 述的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,將所述索引結(jié)構(gòu)存入磁盤的具體方式為,在磁盤中按照所述位圖-字典樹的層來(lái)存儲(chǔ)所述索引結(jié)構(gòu),且各層采用連續(xù)存儲(chǔ)方式。
11.如權(quán)利要求9或10所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,將所述索引結(jié)構(gòu)存入磁盤的方法具體為, 對(duì)于所述位圖-字典樹的每個(gè)節(jié)點(diǎn),先存儲(chǔ)位圖結(jié)構(gòu),然后存儲(chǔ)一個(gè)文件偏移位置的數(shù)組,該數(shù)組示出所述位圖-字典樹的每個(gè)節(jié)點(diǎn)的各孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,而對(duì)于所述位圖-字典樹的每個(gè)葉子節(jié)點(diǎn),該數(shù)組示出每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)鏈表的存儲(chǔ)位置。
12.如權(quán)利要求7或8所述的網(wǎng)絡(luò)流量數(shù)據(jù)索引系統(tǒng),其特征在于,所述查詢響應(yīng)模塊的對(duì)存入磁盤的索引結(jié)構(gòu)進(jìn)行查詢的查詢過(guò)程為, 將查詢條件按照每個(gè)字節(jié)一個(gè)鍵值來(lái)劃分,其中最后一個(gè)鍵值為未知鍵值,依此獲取所述查詢條件的鍵值,通過(guò)讀取所述鍵值在所述位圖-字典樹的非葉子節(jié)點(diǎn)的位圖結(jié)構(gòu)中所對(duì)應(yīng)的比特值為I來(lái)獲取該根節(jié)點(diǎn)對(duì)應(yīng)孩子節(jié)點(diǎn)在磁盤中的存儲(chǔ)位置,并讀取該位置上的位圖-字典樹節(jié)點(diǎn),否則返回查詢結(jié)果為空,到達(dá)最后一個(gè)鍵值的前一個(gè)鍵值時(shí),獲取其在位圖-字典樹的位圖結(jié)構(gòu)中所對(duì)應(yīng)的所有比特值為I的位,然后獲取該所有比特值為I的位的偏移位置,最后讀取這些偏移位置的葉子節(jié)點(diǎn)和其對(duì)應(yīng)的鏈表元素,并將鏈表元素進(jìn)行合并返回。
【文檔編號(hào)】G06F17/30GK103714134SQ201310698101
【公開日】2014年4月9日 申請(qǐng)日期:2013年12月18日 優(yōu)先權(quán)日:2013年12月18日
【發(fā)明者】賀泰華, 張廣興, 謝高崗, 董尚文, 付喬賓 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1