無縫銜接的內(nèi)核數(shù)據(jù)包捕獲技術(shù)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無縫銜接的內(nèi)核數(shù)據(jù)包捕獲,屬于計算機應(yīng)用技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]隨著計算機網(wǎng)絡(luò)技術(shù)的飛速發(fā)展和擴大,特別是近年來Internet的迅猛發(fā)展,社會進(jìn)入一個信息爆炸的時代,世界也由于網(wǎng)絡(luò)而變小,人們通過各種技術(shù)和工具使交流突破了空間的限制。全球范圍內(nèi)的網(wǎng)絡(luò)互聯(lián)給人們的生活和工作帶來了方便,人們正在享受網(wǎng)絡(luò)技術(shù)帶給我們美好生活。但同時某些不法分子利用網(wǎng)絡(luò)的漏洞非法入侵他人的主機系統(tǒng),有的利用網(wǎng)絡(luò)盜取他人個人信息,如網(wǎng)上銀行賬號密碼等,對他人財產(chǎn)安全造成了重大威脅。
[0003]目前我國正在進(jìn)行大規(guī)模的現(xiàn)代化經(jīng)濟建設(shè),需要使用自己的網(wǎng)絡(luò)信息和信息安全系統(tǒng)來保護自己的網(wǎng)絡(luò)和信息系統(tǒng),尤其是對于全國性大型計算機網(wǎng)絡(luò)而言,必須將網(wǎng)絡(luò)安全和信息安全放在非常重要的地位上,而從長遠(yuǎn)角度看,這只能依靠我們自己解決。面對這種形勢,研宄并開發(fā)出一種能方便有效的實時監(jiān)控和捕獲網(wǎng)絡(luò)數(shù)據(jù)迫在眉睫。
[0004]盡管如此,在實現(xiàn)本發(fā)明的過程中,我們還是發(fā)現(xiàn)目前現(xiàn)有的技術(shù)中存在著不足之處:
[0005]在實時捕獲大流量數(shù)據(jù)時常常發(fā)送丟包現(xiàn)象,而產(chǎn)生丟包的原因是數(shù)據(jù)包到來時緩沖區(qū)已經(jīng)滿了,那么該數(shù)據(jù)包將被丟棄。至此,為了完整的抓取網(wǎng)絡(luò)數(shù)據(jù)包,我們發(fā)明了“無縫銜接的內(nèi)核數(shù)據(jù)包捕獲技術(shù)”。
【發(fā)明內(nèi)容】
[0006]為了能夠支持千兆乃至萬兆網(wǎng)絡(luò)流量環(huán)境下實時的完整的捕獲網(wǎng)絡(luò)數(shù)據(jù)包而不產(chǎn)生丟包現(xiàn)象,本發(fā)明實施例提供了無縫銜接的內(nèi)核數(shù)據(jù)包捕獲技術(shù);以此大力提高超大網(wǎng)絡(luò)流量下數(shù)據(jù)包捕獲的可靠性和完整性,所述技術(shù)方案如下:
[0007]1.無縫銜接的內(nèi)核數(shù)據(jù)包捕獲技術(shù),其特征主要表現(xiàn)在內(nèi)核無縫銜接的數(shù)據(jù)包捕獲核心實現(xiàn)過程:(I)向內(nèi)核注冊網(wǎng)絡(luò)中間層驅(qū)動;(2)在網(wǎng)絡(luò)中間層驅(qū)動發(fā)送與接收數(shù)據(jù)處理接口函數(shù)中,分塊緩存數(shù)據(jù)包,并且把分塊數(shù)據(jù)存儲在隊列當(dāng)中,每一塊數(shù)據(jù)緩存設(shè)定為2M大小;(3)當(dāng)數(shù)據(jù)流量峰值超過數(shù)據(jù)包寫入磁盤速度時,數(shù)據(jù)存儲隊列將會自動的從系統(tǒng)申請內(nèi)存已滿足存儲需要,當(dāng)數(shù)據(jù)流量峰值恢復(fù)后,長時間未被使用的數(shù)據(jù)緩存塊將會被釋放,減少系統(tǒng)資源占用,數(shù)據(jù)存儲隊列將根據(jù)數(shù)據(jù)流量的大小進(jìn)行自動調(diào)整,無縫銜接,保證數(shù)據(jù)包順利存儲,規(guī)避因為內(nèi)存池被占用而發(fā)生丟包的現(xiàn)象;(4)在內(nèi)核中開啟一個線程從緩存隊列中讀取分塊數(shù)據(jù),當(dāng)超過指定數(shù)據(jù)包個數(shù)時將這些分塊的數(shù)據(jù)緩存按順序?qū)懭氪疟P文件,寫入完成后將分塊緩存區(qū)置為可用狀態(tài),以便之后新的數(shù)據(jù)到來時可以重復(fù)使用這些緩存區(qū),減少內(nèi)存分配與釋放的資源消耗,提高數(shù)據(jù)的存儲效率;(5)將分塊數(shù)據(jù)按PCAP文件格式寫入磁盤,至此,從網(wǎng)絡(luò)接口到數(shù)據(jù)緩存再到磁盤文件的數(shù)據(jù)包捕獲過程達(dá)到了無縫銜接;其具體操作步驟如下:
[0008](I)向內(nèi)核注冊網(wǎng)絡(luò)中間層驅(qū)動
[0009]①創(chuàng)建好帶有數(shù)據(jù)包捕獲功能的網(wǎng)絡(luò)中間層驅(qū)動;
[0010]②在網(wǎng)卡驅(qū)動程序與協(xié)議驅(qū)動程序之間注冊并安裝數(shù)據(jù)包捕獲功能的中間層驅(qū)動程序;
[0011](2)數(shù)據(jù)包緩存
[0012]①沒有新的緩存:在網(wǎng)絡(luò)中間層驅(qū)動回調(diào)函數(shù)中獲取到網(wǎng)絡(luò)數(shù)據(jù)包,接著在分塊緩存隊列中查找是否有可用的緩存供當(dāng)前數(shù)據(jù)包存儲,如果沒有,申請一塊新的2M大小的內(nèi)存,將當(dāng)前數(shù)據(jù)包存儲在這塊緩存當(dāng)中,并且將新申請的分塊內(nèi)存加入到分塊緩存隊列當(dāng)中;
[0013]②存在新的緩存:在分塊緩存隊列中查找是否有可用的緩存供當(dāng)前數(shù)據(jù)包存儲,如果存在,就將當(dāng)前數(shù)據(jù)包寫入到這塊緩存中;
[0014]⑶無縫銜接
[0015]①數(shù)據(jù)流量峰值超過存儲速度:當(dāng)網(wǎng)絡(luò)流量峰值超過數(shù)據(jù)包寫入磁盤速度時,緩存隊列將會向系統(tǒng)以當(dāng)前緩存隊列倍數(shù)大小申請新的內(nèi)存以供數(shù)據(jù)存儲,不因為流量過大而出現(xiàn)數(shù)據(jù)包被丟棄;
[0016]②數(shù)據(jù)流量恢復(fù)正常:當(dāng)流量大小恢復(fù)正常速度時,系統(tǒng)會將之前流量峰值時新增的緩存塊寫入磁盤文件,同時檢測長時間未被使用的緩存塊并進(jìn)行資源釋放,當(dāng)流量緩存不夠時又重新申請,達(dá)到數(shù)據(jù)包緩存與網(wǎng)絡(luò)接口無縫銜接,使數(shù)據(jù)存儲保存良性循環(huán);
[0017](3)數(shù)據(jù)包存儲
[0018]①數(shù)據(jù)包寫入文件:當(dāng)數(shù)據(jù)包接收個數(shù)超過指定的閾值時,將所有的分塊數(shù)據(jù)寫入到磁盤文件當(dāng)中,然后重置這些分塊緩存為可用狀態(tài),減少內(nèi)存分配帶來的系統(tǒng)開銷,提高數(shù)據(jù)存儲效率;數(shù)據(jù)包寫入磁盤文件按照PCAP文件格式存儲,每一個PCAP文件都有一個全局頭,然后跟著是N(N >= O)個數(shù)據(jù)包組成的。每個數(shù)據(jù)包又分為包頭和包數(shù)據(jù)部分,其中數(shù)據(jù)包頭中包含有該數(shù)據(jù)包被捕獲的時間.數(shù)據(jù)包被捕獲時間的微秒數(shù),數(shù)據(jù)包實際抓獲并保存在文件中的長度以及數(shù)據(jù)包在網(wǎng)絡(luò)中出現(xiàn)的長度;
[0019](4)將分塊數(shù)據(jù)按PCAP文件格式寫入磁盤
[0020]①生成全局PCAP文件頭:全局頭包含4字節(jié)標(biāo)識位,2字節(jié)主版本號,2字節(jié)次版本號,4字節(jié)區(qū)域時間,4字節(jié)精確時間戳,4字節(jié)最大數(shù)據(jù)包長度,4字節(jié)鏈路層類型,總計24字節(jié)寫入PCAP文件頭;
[0021]②生成每一個數(shù)據(jù)包包頭:包頭包含4字節(jié)時間戳、4字節(jié)當(dāng)前分組長度、4字節(jié)數(shù)據(jù)包長度,接著是抓取到的數(shù)據(jù)包內(nèi)容;
[0022]以下是對本發(fā)明的技術(shù)作進(jìn)一步的說明:
[0023]所述的內(nèi)核驅(qū)動,是指NDIS協(xié)議驅(qū)動,NDIS(Network Driver InterfaceSpecificat1n)是Windows環(huán)境下的一個定義網(wǎng)絡(luò)適配器(或者說成是管理網(wǎng)絡(luò)適配器的驅(qū)動程序)與協(xié)議驅(qū)動(例如TCP/IP的實現(xiàn))之間通信的規(guī)范,而我們本發(fā)明技術(shù)所使用是協(xié)議驅(qū)動,協(xié)議驅(qū)動實現(xiàn)了網(wǎng)絡(luò)協(xié)議棧,例如IPX/SPX或TCP/IP,在一個或多個網(wǎng)絡(luò)接口卡上提供它的服務(wù)。在協(xié)議驅(qū)動的上面,它為應(yīng)用層客戶程序服務(wù);在它的下面,它與一個或多個NIC驅(qū)動或中間層NDIS驅(qū)動連接,它是完成本發(fā)明技術(shù)的核心基礎(chǔ),它處理網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包,并對經(jīng)過指定網(wǎng)卡的數(shù)據(jù)包進(jìn)行捕獲。
[0024]所述的無縫銜接,是指網(wǎng)絡(luò)接口、數(shù)據(jù)緩存、緩存寫入磁盤文件這三者之間的處理速度無縫銜接,達(dá)到供需平衡,是系統(tǒng)具有兼容所有網(wǎng)絡(luò)流量的數(shù)據(jù)包捕獲能力;
[0025]所述的數(shù)據(jù)包緩存,是指用來臨時存儲網(wǎng)絡(luò)數(shù)據(jù)包而開辟的內(nèi)存緩存區(qū)。緩存區(qū)以隊列插入的方式來保存分塊的內(nèi)存,數(shù)據(jù)包存儲在分塊內(nèi)存中,當(dāng)系統(tǒng)沒有可用的分塊內(nèi)存時會申請新的2M分塊內(nèi)存,當(dāng)數(shù)據(jù)包個數(shù)達(dá)到指定寫入磁盤要求時,數(shù)據(jù)包寫入磁盤文件線程將會把要寫入的數(shù)據(jù)包按照PCAP文件格式寫入磁盤,并且把這些分塊緩存重置為可用狀態(tài),待下次新的數(shù)據(jù)包到來時不用重新分配內(nèi)存,提高數(shù)據(jù)的存儲效率。
[0026]所述的數(shù)據(jù)統(tǒng)計,為了讓用戶直觀的看到當(dāng)前數(shù)據(jù)包流量以及數(shù)據(jù)捕獲信息,在協(xié)議驅(qū)動中加入了對抓包