国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

高速網(wǎng)絡(luò)環(huán)境下的流量采集系統(tǒng)設(shè)計

2017-05-12 09:22:56江天宇胡洋瑞
現(xiàn)代計算機(jī) 2017年9期
關(guān)鍵詞:網(wǎng)絡(luò)流量會話緩沖區(qū)

江天宇,胡洋瑞

(四川大學(xué)計算機(jī)學(xué)院,成都 610065)

高速網(wǎng)絡(luò)環(huán)境下的流量采集系統(tǒng)設(shè)計

江天宇,胡洋瑞

(四川大學(xué)計算機(jī)學(xué)院,成都 610065)

為了使網(wǎng)絡(luò)異常檢測系統(tǒng)能夠在高速網(wǎng)絡(luò)環(huán)境中正常工作,實現(xiàn)一種高效的流量采集系統(tǒng)。它利用雙緩沖機(jī)制減少多線程鎖的開銷,使用多線程技術(shù)提高系統(tǒng)處理效率,并且該系統(tǒng)具有很好擴(kuò)展性,可以遷移到其他平臺,最終將該系統(tǒng)應(yīng)用在高速網(wǎng)絡(luò)環(huán)境下的網(wǎng)絡(luò)數(shù)據(jù)包在線捕獲處理。

網(wǎng)絡(luò)流量;異常檢測;網(wǎng)絡(luò)安全

0 引言

隨著互聯(lián)網(wǎng)變得越來越龐大,網(wǎng)絡(luò)也越來越復(fù)雜,網(wǎng)絡(luò)中的各種惡意軟件、病毒、木馬也越來越多。網(wǎng)絡(luò)異常檢測系統(tǒng)架設(shè)在系統(tǒng)邊界,對邊界流量進(jìn)行審計、檢測,隨著網(wǎng)絡(luò)流量的增大,采集系統(tǒng)壓力也越來越大。因此,研究高速網(wǎng)絡(luò)流量采集系統(tǒng)對提升網(wǎng)絡(luò)異常檢測系統(tǒng)的性能非常關(guān)鍵。

在目前的網(wǎng)絡(luò)異常檢測檢測領(lǐng)域,網(wǎng)絡(luò)流量數(shù)據(jù)通常有兩種格式,一種是基于會話流數(shù)據(jù),一種是基于數(shù)據(jù)包數(shù)據(jù)。根據(jù)C.Barakat等人[1]給出的定義,會話流是一個由源IP地址和端口、目標(biāo)IP地址和端口以及應(yīng)用協(xié)議組成的五元組(源IP地址、源端口、目標(biāo)IP地址、目標(biāo)端口、應(yīng)用協(xié)議);后者是使用原始數(shù)據(jù)包來進(jìn)行網(wǎng)絡(luò)流量分析[2]?;跁捔鞯漠惓z測是目前的主流,目前流行的NetFlow、NetStream等協(xié)議都提取了會話流信息,因為它最大限度地保留了網(wǎng)絡(luò)流量的摘要信息,同時又不涉及隱私問題。

1 Winpcap工作原理

在Windows平臺上,捕獲數(shù)據(jù)包的途徑有很多種,例如,Raw Socket、Winpcap等。通過Raw Socket方式捕獲的數(shù)據(jù)包是完整的網(wǎng)絡(luò)層數(shù)據(jù)包,不包含鏈路層信息,它不能接收到與IP層相同層次的網(wǎng)絡(luò)層數(shù)據(jù)包。而通過使用Winpcap則可以捕獲到數(shù)據(jù)鏈路層的數(shù)據(jù)包,并且還能實現(xiàn)過濾。

Winpcap是用于網(wǎng)絡(luò)封包抓取的一套工具[3],可適用于32/64位的Windows操作系統(tǒng)上捕獲網(wǎng)絡(luò)數(shù)據(jù)包,包含了內(nèi)核層的數(shù)據(jù)包過濾,一個底層動態(tài)鏈接庫,和一個高層系統(tǒng)函數(shù)庫。大多數(shù)網(wǎng)絡(luò)應(yīng)用程序訪問網(wǎng)絡(luò)是通過操作系統(tǒng)提供的Socket(套接字)方式。利用這種方式實現(xiàn)網(wǎng)絡(luò)通信比較容易,因為操作系統(tǒng)負(fù)責(zé)底層的細(xì)節(jié)以及向上層提供了類似于文件讀寫的調(diào)用接口,程序員只需要調(diào)用Socket進(jìn)行編程就可以實現(xiàn)網(wǎng)絡(luò)通信,而網(wǎng)絡(luò)中復(fù)雜的協(xié)議實現(xiàn)被完全屏蔽。

從圖1可以看出,Winpcap由一個核心態(tài)的包過濾器和兩個動態(tài)鏈接庫組成,NPF(Netgroup Packet Filter)網(wǎng)絡(luò)組包過濾器首先負(fù)責(zé)從網(wǎng)絡(luò)中采集數(shù)據(jù)包,完成數(shù)據(jù)的過濾,拷貝到內(nèi)核層緩沖區(qū),然后調(diào)用應(yīng)用層動態(tài)鏈接庫文件將數(shù)據(jù)傳遞到應(yīng)用層緩沖區(qū),最后交由應(yīng)用程序處理。具體工作原理如下所示:

①當(dāng)數(shù)據(jù)包到達(dá)時,網(wǎng)卡接收數(shù)據(jù)到達(dá)的信號,然后產(chǎn)生硬件中斷,通知CPU調(diào)度處理,中斷服務(wù)程序判斷數(shù)據(jù)包的有效性,若有效則分配一個緩沖。

②BPF模塊根據(jù)用戶的規(guī)則過濾數(shù)據(jù)包,并把數(shù)據(jù)包插入到內(nèi)核的網(wǎng)卡驅(qū)動緩沖隊列中。Winpcap和通常的TCP/IP協(xié)議驅(qū)動處于同一等級。這里Winpcap采用環(huán)狀緩沖區(qū),可以有效提高效率,減少讀寫次數(shù)。在BPF工作的模塊中,數(shù)據(jù)包先經(jīng)過過濾器過濾然后才決定是否寫入緩沖區(qū),這個大大提高了效率。

③用戶程序通過系統(tǒng)調(diào)用來讀取內(nèi)核緩沖區(qū)的數(shù)據(jù)包,完成數(shù)據(jù)采集。

圖1 Winpcap的原理圖

2 高速網(wǎng)絡(luò)環(huán)境下的流量采集

流量采集不僅僅只是捕獲到網(wǎng)絡(luò)中的所有分組,還必須能夠還原出用戶的網(wǎng)絡(luò)行為,為后期用戶行為分析提供依據(jù)。如果前期數(shù)據(jù)采集的過程中丟失了太多關(guān)于網(wǎng)絡(luò)流量的信息,將會導(dǎo)致后期分析出現(xiàn)特征不足的問題,但是如果完全保留原始網(wǎng)絡(luò)信息對存儲是巨大壓力,而且也是一種浪費存儲空間的表現(xiàn),因為并不是所有的原始數(shù)據(jù)信息都需要保存并對后期分析有用的[4]。本文采集的網(wǎng)絡(luò)流量元數(shù)據(jù)主要是TCP/UDP會話流,定義如下:

定義1 TCP會話流 假設(shè)所有五元組〈源IP,源端口,目的IP,目的端口,TCP協(xié)議〉相同或者反轉(zhuǎn)相同的數(shù)據(jù)包的集合為C,并且C中的數(shù)據(jù)包以發(fā)送第一個SYN數(shù)據(jù)包開始,到服務(wù)端接收最后一個FIN或者RST數(shù)據(jù)包結(jié)束,并且滿足數(shù)據(jù)包的時間間隔不超過時間T,本文設(shè)置T為2分鐘,則集合C所有的數(shù)據(jù)包構(gòu)成一條TCP會話流。

定義2 UDP會話流 假設(shè)所有五元組〈源IP,源端口,目的IP,目的端口,UDP協(xié)議〉相同或者反轉(zhuǎn)相同的數(shù)據(jù)包集合為C,并且,滿足所有數(shù)據(jù)包時間間隔不超過時間T,本文設(shè)置T為2分鐘,則集合C中所有的數(shù)據(jù)包構(gòu)成一條UDP會話流。

在高速的網(wǎng)絡(luò)環(huán)境中,需要對采集程序進(jìn)行優(yōu)化。本文采取的優(yōu)化措施主要包括以下4點:

①使用雙緩沖機(jī)制技術(shù)減少采集程序線程鎖的開銷。

②使用多線程技術(shù)。

③將從網(wǎng)卡捕獲的數(shù)據(jù)包根據(jù)傳輸層協(xié)議還原成會話流的形式保存。提取網(wǎng)絡(luò)流量元數(shù)據(jù),減少了對原始數(shù)據(jù)包的存儲。

④設(shè)計Hash算法,使用哈希表完成會話流的快速查找、刪除工作。

在高速的網(wǎng)絡(luò)環(huán)境中,完全存儲原始數(shù)據(jù)包將會對磁盤存儲造成巨大壓力,然而后期的實際分析中只需要原始數(shù)據(jù)包中的一部分,這就造成了大量的磁盤空間的浪費,而且還需要額外的計算資源來處理這些數(shù)據(jù)。

圖2 雙緩沖多線程技術(shù)

圖2是本文設(shè)計的系統(tǒng)雙緩沖多線程技術(shù),它采用了雙緩沖機(jī)制,減少了多線程鎖的開銷,而且使用多線程技術(shù),避免應(yīng)用層來不及處理而造成丟包。具體流程如下:

①數(shù)據(jù)包到達(dá)時,網(wǎng)卡接收數(shù)據(jù)到達(dá)信號,產(chǎn)生硬中斷,通知CPU進(jìn)行調(diào)度處理。

②中斷服務(wù)程序判斷數(shù)據(jù)包的有效性,若有效則分配一個緩沖,并把數(shù)據(jù)包插入到內(nèi)核的NIC Buffer隊列中;否則直接返回。

③程序通過系統(tǒng)調(diào)用將內(nèi)核中的數(shù)據(jù)包拷貝到用戶空間,由于數(shù)據(jù)包到達(dá)速率很快,這里使用雙緩沖機(jī)制。即當(dāng)數(shù)據(jù)包到達(dá)時,存入緩沖隊列1中。

④后臺處理線程啟動,數(shù)據(jù)包捕獲線程將捕獲到的數(shù)據(jù)存入緩沖隊列2中,后臺處理線程開始處理緩沖隊列1中的數(shù)據(jù)包,兩個線程交替進(jìn)行,減少了內(nèi)存使用上的沖突,提高了效率。后臺處理線程根據(jù)數(shù)據(jù)包的〈源IP,目的IP,源端口,目的端口,傳輸層協(xié)議〉計算出它的Hash值,并且從Conversation池中找出Hash值對應(yīng)的會話流信息,并判斷流當(dāng)前狀態(tài)。如果Conversation已經(jīng)結(jié)束,就將Conversation移入待轉(zhuǎn)移流池,反之,將數(shù)據(jù)包加入流中。

圖3 采集程序流程圖

如圖3所示,這是實際的流量采集程序工作流程圖,為了達(dá)到實時捕獲的要求,數(shù)據(jù)包捕獲速度與數(shù)據(jù)包處理速度相匹配,本文使用多線程進(jìn)行處理,程序中比較關(guān)鍵的有以下幾個線程。

①Winpcap數(shù)據(jù)包捕獲線程:調(diào)用底層Winpcap捕獲數(shù)據(jù)包,并將原始數(shù)據(jù)包存入隊列中。這里采用兩個緩沖區(qū),數(shù)據(jù)包存入隊列1時,后臺線程處理隊列2,避免了內(nèi)存的同步互斥,大大提高了效率。

②后臺線程:每隔0.2秒掃描原始包隊列,將數(shù)據(jù)包加入處理隊列,并通知數(shù)據(jù)處理線程進(jìn)行處理。

③數(shù)據(jù)處理線程:根據(jù)數(shù)據(jù)包五元組〈源IP,目的IP,源端口,目的端口,傳輸層協(xié)議〉的HASH值在Conversation池中找到對應(yīng)的Conversation,根據(jù)TCP的標(biāo)志位(SYN,F(xiàn)IN,RST)決定一條流是否結(jié)束。如果流結(jié)束,將流移出內(nèi)存,通知數(shù)據(jù)庫保存線程存入數(shù)據(jù)庫。

④內(nèi)存管理線程:一直后臺運行,掃描Conversation池,移出超時的會話流(120s內(nèi)沒有新包到達(dá))。

⑤數(shù)據(jù)庫保存線程:負(fù)責(zé)將流寫入數(shù)據(jù)庫。

3 實驗

本文采用的系統(tǒng)采用C#編程實現(xiàn),并且分別在Windows平臺和Linux平臺進(jìn)行了測試,在Windows平臺使用.NET、SharpPcap和Winpcap技術(shù),而在Linux平臺采用Mono,SharpPcap和PF_RING進(jìn)行抓包。

表1 真實網(wǎng)絡(luò)環(huán)境丟包率

如上表1所示,前兩項是使用Windows平臺的Winpcap對校園網(wǎng)絡(luò)的流量進(jìn)行抓取產(chǎn)生的丟包率,第三項是采用Linux平臺下的PF_RING抓包的效果。從表中可以看出,采用PF_RING之后,比Winpcap取得了更好的效果,這是因為PF_RING利用內(nèi)存中的環(huán)狀緩沖區(qū)減少了內(nèi)存拷貝,提高了效率。在用戶空間,分別采用單線程和多線程進(jìn)行會話流重組統(tǒng)計,在千兆以太網(wǎng)環(huán)境下,單線程丟包十分嚴(yán)重,而多線程則明顯改善了效率。

4 結(jié)語

本文首先研究了網(wǎng)絡(luò)流量采集組件Winpcap的原理,然后利用雙緩沖機(jī)制減少了多線程鎖的開銷,利用多線程技術(shù)提高了數(shù)據(jù)包處理效率。實驗證明,該系統(tǒng)可以有效地減少利用的丟包率,在千兆以太網(wǎng)環(huán)境下,利用PF_RING替換Winpcap,實現(xiàn)了零丟包。

參考文獻(xiàn):

[1]Barakat C,Thiran P,Iannaccone G,et al.A Flow-Based Model for Internet Backbone Traffic[C].Proceedings of the 2nd ACM SIGCOMM Workshop on Internet measurment.ACM,2002:35-47.

[2]Fraleigh C,Moon S,Lyles B,et al.Packet-Level Traffic Measurements from the Sprint IP Backbone[J].Network,IEEE,2003,17(6):6-16.

[3]Winpcap技術(shù)文檔[EB/OL].http://www.Winpcap.org/,2014.

[4]謝鯤,張大方,文吉剛,等.基于 Winpcap的實時網(wǎng)絡(luò)監(jiān)測系統(tǒng)[J].湖南大學(xué)學(xué)報(自然科學(xué)版),2006,33(2).

Design of Network Traffic Capture System on High Speed Network

JIAGN Tian-yu,HU Yang-rui
(College of Computer Scicece,Sichuan University,Chengdu 610065)

In order to let network anomaly detection system to work in high speed network environment,implements a network traffic collection system.Uses double buffering mechanism to reduce the overhead of thread lock and uses multithreading to improve system efficiency.The system also has good scalability,and can migrate to other platforms.Eventually the system is used to solve packets online capture problem in high speed network.

Network Traffic;Anomaly Detection;Network Security

1007-1423(2017)09-0137-04

10.3969/j.issn.1007-1423.2017.09.032

江天宇(1991-),男,江蘇無錫人,在校學(xué)生,研究方向為信息安全

胡洋瑞(1991-),男,四川成都人,在校學(xué)生,研究方向為信息安全

2017-03-06

2017-03-15

猜你喜歡
網(wǎng)絡(luò)流量會話緩沖區(qū)
嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計與實現(xiàn)
基于多元高斯分布的網(wǎng)絡(luò)流量異常識別方法
基于神經(jīng)網(wǎng)絡(luò)的P2P流量識別方法
AVB網(wǎng)絡(luò)流量整形幀模型端到端延遲計算
有意冒犯性言語的會話含義分析
漢語教材中的會話結(jié)構(gòu)特征及其語用功能呈現(xiàn)——基于85個會話片段的個案研究
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
網(wǎng)絡(luò)流量監(jiān)控對網(wǎng)絡(luò)安全治理的重要性
河南科技(2014年23期)2014-02-27 14:18:43
沖突語的會話分析研究
對外漢語課堂英語通用語的會話調(diào)整功能
祥云县| 鄂伦春自治旗| 盈江县| 合阳县| 黔江区| 边坝县| 台江县| 广德县| 铜梁县| 高邮市| 双城市| 天台县| 应城市| 垣曲县| 秭归县| 乡城县| 金阳县| 娄底市| 西安市| 陆川县| 增城市| 长沙市| 天气| 花莲县| 玉龙| 米泉市| 达孜县| 昌图县| 筠连县| 尚志市| 贵州省| 乌拉特中旗| 盈江县| 抚宁县| 渑池县| 兴海县| 固镇县| 利津县| 桐柏县| 宜丰县| 福鼎市|