两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

報文捕獲方法及內(nèi)核模塊的制作方法

文檔序號:7598067閱讀:177來源:國知局
專利名稱:報文捕獲方法及內(nèi)核模塊的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種報文捕獲方法及內(nèi)核模塊,屬于網(wǎng)絡(luò)技術(shù)領(lǐng)域。
背景技術(shù)
報文捕獲(Packet Capture),也稱數(shù)據(jù)包捕獲(Datagram Capture)是指捕獲數(shù)據(jù) 包穿越網(wǎng)絡(luò)的行為。深度數(shù)據(jù)包捕獲的是完整的網(wǎng)絡(luò)數(shù)據(jù)包,包括報文頭和有效載荷;而部 分?jǐn)?shù)據(jù)包捕獲可以僅記錄數(shù)據(jù)報頭的部分信息。報文捕獲技術(shù)在網(wǎng)絡(luò)流量管理和網(wǎng)絡(luò)安全 等方面中起著重要作用。報文捕獲是報文分析的基礎(chǔ),作為網(wǎng)絡(luò)監(jiān)測的關(guān)鍵技術(shù),被廣泛地 應(yīng)用于分布式實時控制系統(tǒng)、網(wǎng)絡(luò)故障分析、入侵檢測系統(tǒng)、網(wǎng)絡(luò)監(jiān)控系統(tǒng)、計算機(jī)取證系 統(tǒng)等領(lǐng)域中。以太網(wǎng)具有共享介質(zhì)的特征,信息是以明文的形式在網(wǎng)絡(luò)上傳輸,當(dāng)網(wǎng)絡(luò)適配器 設(shè)置為監(jiān)聽模式時,由于采用以太網(wǎng)廣播信道爭用的方式,使得監(jiān)聽系統(tǒng)與正常通信的網(wǎng) 絡(luò)能夠并聯(lián)連接,并可以捕獲任何一個在同一沖突域上傳輸?shù)臄?shù)據(jù)包。現(xiàn)有技術(shù)中,采用軟件報文分流并行處理技術(shù)實現(xiàn)并行報文捕獲。如圖1所示,該技術(shù)基于單物理網(wǎng)卡,通過應(yīng)用層分流并使用單獨線程(或進(jìn)程) 進(jìn)行報文捕獲,使用多個線程(或進(jìn)程)執(zhí)行報文分析處理等工作。這樣,捕包線程可以不 受報文后續(xù)處理的影響,盡可能地全速執(zhí)行報文捕獲工作。然而,在現(xiàn)有技術(shù)中,報文捕獲 在單個線程/進(jìn)程中執(zhí)行,不能充分發(fā)揮多核CPU的計算能力,采用多進(jìn)程方式,需要在進(jìn) 程間傳遞大量數(shù)據(jù),進(jìn)程間通訊開銷過大,性能較低。

發(fā)明內(nèi)容
本發(fā)明提供一種報文捕獲方法及內(nèi)核模塊,用以實現(xiàn)了真正的單網(wǎng)卡/多網(wǎng)卡流 量并行報文捕獲。本發(fā)明實施例的目的是通過以下技術(shù)方案實現(xiàn)的一種報文捕獲方法,包括網(wǎng)絡(luò)硬件接收報文;根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬的捕獲通 道;將所述報文經(jīng)相應(yīng)的捕獲通道從內(nèi)核態(tài)發(fā)送到用戶態(tài),由該用戶態(tài)中與所述捕獲 通道對應(yīng)的報文捕獲程序?qū)λ鰣笪倪M(jìn)行報文捕獲。一種內(nèi)核模塊,包括確定單元,用于根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中 所屬的捕獲通道;發(fā)送單元,用于將所述報文經(jīng)確定單元所確定的相應(yīng)的捕獲通道從內(nèi)核態(tài)發(fā)送到 用戶態(tài),由該用戶態(tài)中與所述捕獲通道對應(yīng)的報文捕獲程序?qū)λ鰣笪倪M(jìn)行報文捕獲。通過本發(fā)明實施例所提供的報文捕獲方法及內(nèi)核模塊,通過網(wǎng)絡(luò)硬件接收報文,根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬的捕獲通道,將所述 報文經(jīng)相應(yīng)的捕獲通道從內(nèi)核態(tài)發(fā)送到用戶態(tài),由該用戶態(tài)中與所述捕獲通道對應(yīng)的報文 捕獲程序?qū)λ鰣笪倪M(jìn)行報文捕獲,實現(xiàn)了捕獲報文的內(nèi)核態(tài)分流,使得無重復(fù)報文拷貝 無需要外部分流設(shè)備支持,并支持大通道數(shù)的并行捕獲,多進(jìn)程及多線程編程模型,完美的 兼容了現(xiàn)有各種基于報文捕獲的應(yīng)用。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。圖1為現(xiàn)有技術(shù)的應(yīng)用程序技術(shù)原理圖;圖2為本發(fā)明所述報文捕獲方法實施例的流程圖;圖3為圖2所示步驟120的具體流程圖;圖4為本發(fā)明所述報文捕獲方法實施例的應(yīng)用程序技術(shù)原理圖;圖5為本發(fā)明所述內(nèi)核模塊實施例的結(jié)構(gòu)示意圖;圖6為圖5所示內(nèi)核模塊中的確定單元11的可選結(jié)構(gòu)示意圖;圖7為圖6所示內(nèi)核模塊中的運算單元1101的可選結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。介紹本發(fā)明技術(shù)方案之前,先介紹一下各類操作系統(tǒng)的數(shù)據(jù)鏈路層報文訪問接口 和開發(fā)庫,如下各種網(wǎng)絡(luò)操作系統(tǒng)均提供了報文捕獲機(jī)制,技術(shù)原理基本相同,均為在內(nèi)核態(tài)從 網(wǎng)卡上獲取數(shù)據(jù)報文然后傳送到用戶態(tài)應(yīng)用程序,訪問接口根據(jù)具體實現(xiàn)技術(shù)的不同而略 有差別,例如類Unix系統(tǒng)中主要提供了三種常見的數(shù)據(jù)鏈路層報文訪問接口,分別是BSD 中的 BPF (Berkeley Packet Filter),SVR4 中的 DLPI (Data Link Provider Interface)禾口 Linux中的S0CKET_PACKET。在Windows中數(shù)據(jù)鏈路層報文訪問接口需要編寫VxD程序或 網(wǎng)卡設(shè)備驅(qū)動程序?qū)崿F(xiàn)。在不同操作系統(tǒng)提供的這些不同接口之上,有一套Libpcap開發(fā) 庫(其windows版本為winpcap),為報文捕獲應(yīng)用程序提供了一套平臺無關(guān)的統(tǒng)一編程接圖2為本發(fā)明所述報文捕獲方法實施例的流程圖,如圖所示,該方法包括如下步 驟步驟110,網(wǎng)絡(luò)硬件接收報文。具體地,在所述網(wǎng)絡(luò)硬件接收報文之前,可以根據(jù)用戶態(tài)中的報文捕獲程序的數(shù) 量,在內(nèi)核態(tài)中設(shè)置相應(yīng)數(shù)量的捕獲通道。其中,所述報文捕獲程序是用戶態(tài)中用于對接收到的報文執(zhí)行報文捕獲的程序。為了提高報文捕獲的效率,在用戶態(tài)中同時設(shè)置有多個可 并行執(zhí)行的報文捕獲程序。相應(yīng)地,在內(nèi)核態(tài)中設(shè)置相應(yīng)數(shù)量的捕獲通道,每個捕獲通道具 有唯一的通道編號。其中,網(wǎng)絡(luò)硬件可以為物理網(wǎng)卡。步驟120,根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬 的捕獲通道。具體地,可以根據(jù)所述報文的源IP地址和目的IP地址進(jìn)行哈希運算得到通道編 號,將內(nèi)核態(tài)中具有相應(yīng)通道編號的捕獲通道選定為該報文所屬的捕獲通道。具體的運算 過程將在后續(xù)內(nèi)容進(jìn)行說明。步驟130,將所述報文經(jīng)相應(yīng)的捕獲通道從內(nèi)核態(tài)發(fā)送到用戶態(tài),由該用戶態(tài)中與 所述捕獲通道對應(yīng)的報文捕獲程序?qū)λ鰣笪倪M(jìn)行報文捕獲。以下具體說明上述步驟120中所述的哈希運算的具體過程,如圖3所示,包括步驟121,將所述源IP地址與所述目的IP地址進(jìn)行異或運算得到異或結(jié)果值。 步驟122,將所述異或結(jié)果值與所述內(nèi)核態(tài)中設(shè)置的捕獲通道的數(shù)量進(jìn)行取模運 算得到余數(shù)值,作為所述通道編號。通過使用源IP地址和目的IP哈希取模的分流算法,可以確保每條會話的全部報 文都能正確分流到同一個捕獲通道上,其實,只要是能夠保證數(shù)據(jù)流能夠均衡分流到各個 捕獲通道的算法都是可行的,例如采用五元組、IP優(yōu)先級、T0S、DSCP、IP協(xié)議類型等信息, 實現(xiàn)分流,這里只是以源IP地址和目的IP進(jìn)行哈希計算實現(xiàn)分流為例。如圖4所示,本實施例所述方法采用內(nèi)核分流方式實現(xiàn)了與網(wǎng)卡數(shù)量無關(guān)的并行 報文捕獲,圖中的內(nèi)核模塊根據(jù)系統(tǒng)平臺的不同而不同,例如BSD系統(tǒng)中為BPF(Berkeley Packet Filter),SVR4 系統(tǒng)中為 DLPI (Data LinkProvider Interface),Linux 系統(tǒng)中 為S0CKET_PACKET,Windows系統(tǒng)中為訪問數(shù)據(jù)鏈路層信息的VxD程序(虛擬設(shè)備驅(qū)動程 序)或網(wǎng)卡設(shè)備驅(qū)動程序。另外,對于Windows系統(tǒng),圖中的數(shù)據(jù)包捕獲函數(shù)庫需要替換為
Winpcap0通過本實施例的技術(shù)方案,既不需要外部分流設(shè)備支持,也不需要在進(jìn)程間傳遞 大量數(shù)據(jù),而且能很好地兼容現(xiàn)有的各種并行捕獲模型。具體地,可以達(dá)到如下技術(shù)效果1、根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬的捕獲 通道,實現(xiàn)了捕獲報文的內(nèi)核態(tài)分流,無重復(fù)報文拷貝;只有符合分流策略的報文才會進(jìn)入指定捕獲通道,從內(nèi)核態(tài)到用戶態(tài)之間無重復(fù) 報文拷貝;由于每個捕獲進(jìn)程均可獲得會話的完整報文,無需做進(jìn)程間報文拷貝;2、由于整個分流是在內(nèi)核態(tài)下完成的,所以無需要外部分流設(shè)備支持;物理網(wǎng)卡等網(wǎng)絡(luò)適配器獲得的流量在系統(tǒng)內(nèi)的內(nèi)核態(tài)進(jìn)行分流處理,因此無需在 前端另行架設(shè)分流設(shè)備;3、由于內(nèi)核模塊完成分流,因此捕獲通道不受網(wǎng)卡數(shù)的限制,可支持大通道數(shù)的 并行捕獲;對于每個物理網(wǎng)卡上獲取的流量,可以分成多份進(jìn)行并行拷貝,可充分發(fā)揮多核 處理優(yōu)勢;其中具體的份數(shù)可以等于每個物理網(wǎng)卡所允許的最大邏輯網(wǎng)卡數(shù)量;4、支持多進(jìn)程及多線程編程模型,完美兼容現(xiàn)有各種基于報文捕獲的應(yīng)用;報文捕獲程序可以為多進(jìn)程也可以為多線程。由于用戶態(tài)中對應(yīng)用層數(shù)據(jù)處理的復(fù)雜性,現(xiàn)有技術(shù)中與應(yīng)用相關(guān)代碼并不支持多線程調(diào)用,而本實施例所述方法對多進(jìn)程并行捕獲的支持可以滿足這種應(yīng)用場景的需求,從而可以極大地提高遺留代碼的重用率;圖5為本發(fā)明所述內(nèi)核模塊實施例的結(jié)構(gòu)示意圖,如圖所示,該內(nèi)核模塊10至少 包括確定單元11和發(fā)送單元12,其工作原理如下網(wǎng)絡(luò)硬件接收到報文后,該內(nèi)核模塊10中的確定單元11根據(jù)從網(wǎng)絡(luò)硬件接收到 的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬的捕獲通道。具體地,如圖5所示,該內(nèi)核模 塊10中還可以進(jìn)一步包括設(shè)置單元13,用于根據(jù)用戶態(tài)中的報文捕獲程序的數(shù)量,在內(nèi)核 態(tài)中設(shè)置相應(yīng)數(shù)量的捕獲通道,然后由確定單元11根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址 信息確定該報文在設(shè)置單元13在內(nèi)核態(tài)中設(shè)置的捕獲通道中所屬的捕獲通道。其中,所述 報文捕獲程序是用戶態(tài)中用于對接收到的報文執(zhí)行報文捕獲的程序。此后,由發(fā)送單元12將所述報文經(jīng)確定單元11所確定的相應(yīng)的捕獲通道從內(nèi)核 態(tài)發(fā)送到用戶態(tài),由該用戶態(tài)中與所述捕獲通道對應(yīng)的報文捕獲程序?qū)λ鰣笪倪M(jìn)行報文 捕獲。具體地,如圖6所示,上述確定單元11可以包括運算單元1101和選定單元1102, 當(dāng)確定單元11根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬的捕 獲通道時,可以先由運算單元1101根據(jù)所述報文的源I P地址和目的IP地址進(jìn)行哈希運算 得到通道編號,具體地,如圖7所示,可以由異或運算單元1 IOlA將所述報文的源IP地址與 所述目的IP地址進(jìn)行異或運算得到異或結(jié)果值,并由取模運算單元1 IOlB將異或運算單元 得到的所述異或結(jié)果值與所述內(nèi)核態(tài)中設(shè)置的捕獲通道的數(shù)量進(jìn)行取模運算得到余數(shù)值, 作為所述通道編號。然后,由選定單元1102將內(nèi)核態(tài)中具有相應(yīng)通道編號的捕獲通道選定為該報文 所屬的捕獲通道。通過使用源IP地址和目的IP哈希取模的分流算法,可以確保每條會話 的全部報文都能正確分流到同一個捕獲通道上。本實施例所述內(nèi)核模塊10采用內(nèi)核分流方式實現(xiàn)了與網(wǎng)卡數(shù)量無關(guān)的并行報文 捕獲,既不需要外部分流設(shè)備支持,也不需要在進(jìn)程間傳遞大量數(shù)據(jù),而且能很好地兼容現(xiàn) 有的各種并行捕獲模型。具體的技術(shù)效果描述可參見上述方法實施例的相關(guān)內(nèi)容。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序 在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者 光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡 管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然 可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精 神和范圍。
權(quán)利要求
1.一種報文捕獲方法,其特征在于,包括 網(wǎng)絡(luò)硬件接收報文;根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬的捕獲通道; 將所述報文經(jīng)相應(yīng)的捕獲通道從內(nèi)核態(tài)發(fā)送到用戶態(tài),由該用戶態(tài)中與所述捕獲通道 對應(yīng)的報文捕獲程序?qū)λ鰣笪倪M(jìn)行報文捕獲。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述網(wǎng)絡(luò)硬件接收報文之前還包括根據(jù) 用戶態(tài)中的報文捕獲程序的數(shù)量,在內(nèi)核態(tài)中設(shè)置相應(yīng)數(shù)量的捕獲通道。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述報文捕獲程序為多線程的報文捕獲 程序或多進(jìn)程的報文捕獲程序。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地 址信息,確定該報文在內(nèi)核態(tài)中所屬的捕獲通道包括根據(jù)所述報文的源IP地址和目的IP 地址進(jìn)行哈希運算得到通道編號,將內(nèi)核態(tài)中具有相應(yīng)通道編號的捕獲通道選定為該報文 所屬的捕獲通道。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述報文的源IP地址和目的IP 地址進(jìn)行哈希運算得到通道編號包括將所述源IP地址與所述目的IP地址進(jìn)行異或運算得到異或結(jié)果值; 將所述異或結(jié)果值與所述內(nèi)核態(tài)中設(shè)置的捕獲通道的數(shù)量進(jìn)行取模運算得到余數(shù)值, 作為所述通道編號。
6.一種內(nèi)核模塊,其特征在于,包括確定單元,用于根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬 的捕獲通道;發(fā)送單元,用于將所述報文經(jīng)確定單元所確定的相應(yīng)的捕獲通道從內(nèi)核態(tài)發(fā)送到用戶 態(tài),由該用戶態(tài)中與所述捕獲通道對應(yīng)的報文捕獲程序?qū)λ鰣笪倪M(jìn)行報文捕獲。
7.根據(jù)權(quán)利要求6所述的內(nèi)核模塊,其特征在于,還包括設(shè)置單元,用于根據(jù)用戶態(tài) 中的報文捕獲程序的數(shù)量,在內(nèi)核態(tài)中設(shè)置相應(yīng)數(shù)量的捕獲通道;所述確定單元用于根據(jù) 從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在設(shè)置單元在內(nèi)核態(tài)中設(shè)置的捕獲通道 中所屬的捕獲通道。
8.根據(jù)權(quán)利要求6所述的內(nèi)核模塊,其特征在于,所述確定單元包括運算單元,用于根據(jù)所述報文的源IP地址和目的IP地址進(jìn)行哈希運算得到通道編號;以及選定單元,用于將內(nèi)核態(tài)中具有相應(yīng)通道編號的捕獲通道選定為該報文所屬的捕獲通道。
9.根據(jù)權(quán)利要求8所述的內(nèi)核模塊,其特征在于,所述運算單元包括異或運算單元,用于將所述報文的源IP地址與所述目的IP地址進(jìn)行異或運算得到異 或結(jié)果值;取模運算單元,用于將異或運算單元得到的所述異或結(jié)果值與所述內(nèi)核態(tài)中設(shè)置的捕 獲通道的數(shù)量進(jìn)行取模運算得到余數(shù)值,作為所述通道編號。
全文摘要
本發(fā)明提供一種報文捕獲方法及內(nèi)核模塊,其中方法包括網(wǎng)絡(luò)硬件接收報文;根據(jù)從網(wǎng)絡(luò)硬件接收到的報文的地址信息確定該報文在內(nèi)核態(tài)中所屬的捕獲通道;將所述報文經(jīng)相應(yīng)的捕獲通道從內(nèi)核態(tài)發(fā)送到用戶態(tài),由該用戶態(tài)中與所述捕獲通道對應(yīng)的報文捕獲程序?qū)λ鰣笪倪M(jìn)行報文捕獲。本發(fā)明實現(xiàn)了捕獲報文的內(nèi)核態(tài)分流,使得無重復(fù)報文拷貝無需要外部分流設(shè)備支持,并支持大通道數(shù)的并行捕獲,多進(jìn)程及多線程編程模型,完美的兼容了現(xiàn)有各種基于報文捕獲的應(yīng)用。
文檔編號H04L12/56GK102098227SQ20111005100
公開日2011年6月15日 申請日期2011年3月3日 優(yōu)先權(quán)日2011年3月3日
發(fā)明者鐘登峰 申請人:成都市華為賽門鐵克科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
墨竹工卡县| 阿合奇县| 新巴尔虎左旗| 大关县| 大邑县| 平顶山市| 深州市| 永川市| 西充县| 资兴市| 蓬安县| 辽中县| 抚松县| 信宜市| 白山市| 鹿邑县| 陇南市| 威海市| 宾川县| 蓬安县| 宁陵县| 阿拉尔市| 黄梅县| 合水县| 大名县| 桓仁| 焦作市| 正安县| 义马市| 甘谷县| 锡林郭勒盟| 山丹县| 鄱阳县| 乌兰浩特市| 贺州市| 隆化县| 阳东县| 永宁县| 竹溪县| 托克逊县| 大港区|