《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 立體化網絡應用層協議識別的研究與實現
立體化網絡應用層協議識別的研究與實現
來源:電子技術應用2014年第1期
朱 宇,袁 帥
西安科技大學 計算機科學與技術學院,陜西 西安710054
摘要: 針對由于動態端口和加密通信協議的不斷使用、應用層協議識別難度增加以及對高速網絡的快速識別需求提升的問題,提出了一種立體化的應用層協議識別方法。其依據樹形分類思想,根據數據包的多元信息進行分層過濾識別。通過加入表驅動方法,協議特征庫使用動態模塊化加載方式和改進基于統計的識別算法,采用SVM的分類模型,實現了準確、快速和易于擴展的應用層協議識別。通過真實網絡環境下的測試結果得出,此系統能夠保證較小的延時和95%以上的識別率。
中圖分類號: TP393.07
文獻標識碼: A
文章編號: 0258-7998(2014)01-0060-04
Research and implementation of three-dimensional network application layer protocol identification
Zhu Yu,Yuan Shuai
School of Computer Science and Technology, Xi′an University of Science and Technology, Xi′an 710054,China
Abstract: Aimming at the problem that dynamic port and the encryption communication protocol are frequently used,identification difficulty is increasing and and quickly identification requirements for high-speed network is also rising. The paper puts forward with a three-dimensional application layer protocol identification method. The method mainly is based on tree classification thought and uses the multi-information packets for hierachical filter identifying, which joined with table-driven technique, characteristic library used the dynamic module loading, and improved recognition algorithm based on statistical,combined with SVM classification model. It realized the three-dimensional application layer protocol for the accurate,fast and extensible identification. Finally, the results show that the system able to ensure low latency and more than 95% identification rate according to the testing in the real network environment.
Key words : protocol identification;SVM;application protocol;network;feature matching

    目前,諸多網絡流量識別技術[1]是根據數據包的IP地址、端口和載荷對網絡流量進行判斷,但隨著應用層協議種類在不斷增加,網絡流量逐漸龐大,加之網絡代理、端口的動態變化策略和協議加密等技術的采用[2],使得網絡管理愈加困難。如P2P通信通常采用隨機端口[3],迅雷的數據傳輸復用在HTTP業務之上等,而且這些數據所占比重越來越大。因此,有效地保障網絡安全,保證網絡資源的合理管理就顯得尤為重要。而傳統的識別方式已不能有效地識別。從目前來看,各種應用層協議識別算法的研究已經取得了一些成果,但是還不足以解決當前所存在的問題。如將支持向量機方法應用于P2P流的識別領域[4],基于行為特征加權的P2P流識別方法研究[5],采用機器學習方法實現網絡協議識別[6]等。這些方法基本上都引入了數理統計的思想,在一定程度上解決了傳統端口和特征識別對加密協議難以識別的問題,但是效率仍然是制約其實際應用的關鍵因素。針對以上問題,在分析現有協議識別方法的基礎上,結合用戶對網絡應用識別準確性、高效性和擴展性的要求,提出了立體化的網絡應用層協議識別。
1 現有協議識別方法與存在問題
    傳統的協議識別方法主要有基于端口的識別和基于負載的識別兩種[7]。隨著Internet數據流量的不斷增大、屬性的不斷變化,基于行為分析的協議識別算法也成為學者們研究的熱點。就目前來看,不管是從最簡單的端口識別到最繁雜的負載識別,還是最新的協議行為分析,都存在各自的不足,無法滿足實際應用對協議分析的要求。
    (1)基于端口的識別。根據分析數據包的端口號來識別協議[8]。這種算法最大的優點是效率高、能夠準確識別標準協議,但是現有的很多協議使用的端口均是非知名端口、并處于動態變化中,因此基于端口的協議識別也就逐漸失去效力。
    (2)基于載荷的協議識別。通過對數據包內容進行深度分析和檢測,掃描協議特征,對數據流進行分類。典型的開源包如IPP2P和OPENDPI等,都是根據協議的載荷特征進行分類?;谳d荷的算法仍然屬于一元判別方法,從理論上講,只要有足夠的工作量,該算法即可以準確識別所有的非加密協議,但隨著協議不斷更新和加密協議的應用,這種方法工作量大,并且不能識別加密協議和大多數P2P協議。
    (3)基于行為分析的識別算法[9]。利用協議規范的不同所造成的行為特征的差異區分協議。目前這種算法還在研究當中,但是從目前來看,準確性在70%~90%之間,而且效率較低,經常出現延時和丟包等現象。
2 立體化協議識別系統設計
    為了彌補單一采用上述方法的缺陷和協議特征庫更新難的問題,在基于Linux內核的環境下,秉承模塊化的設計思想,結合上網行為管理系統,通過不斷實踐與測試,采用樹形分類結構,加入表驅動的查找方法,改進DPI的統計識別算法和借鑒Linux驅動的加載模式,力求提高協議識別的準確性、高效性和可維護性。
2.1 系統識別方案
    立體化的協議識別系統主要借鑒了樹形分類思想,從上至下,由標準簡單協議到繁雜協議逐層分類識別。其識別流程為:數據流首先進入數據包緩存,將五元組信息按照設定好的數據格式存儲并做相應的處理;然后進入到協議識別分析器進行協議匹配,最終輸出結果。
    立體化協議識別系統主要包括初級層、中級層、高級層。在初級層主要是根據數據包的五元組進行分流,統計數據包的多元信息,方便快速識別;中級層以端口和首字節[10](載荷的第一位)的協議鏈為切入,協議特征庫為依托,實現基于端口和載荷的協議識別,主要針對RFC標準協議和部分P2P協議,承擔了70%左右數據包的協議識別;高級層主要是基于SVM機器學習的協議行為分析識別,實現對加密協議和P2P協議的自主學習識別。這部分一般占流量的30%左右,是識別的最后方法。立體化的協議識別流程如圖1所示。

2.2 改進的端口和載荷識別方法
    由于單純采用端口和載荷識別有其局限性,屬于一元判別,因此這里使用了將端口和首字節作為協議鏈進行二元匹配,同時生成哈希表。根據數據包的端口和首字節將數據包分為有端口有首字節(優先級最高)、有端口無首字節(優先級次之)、無端口有首字節(優先級其后)和無端口無首字節(優先級最低)4種情況。當有新的協議鏈要注冊時,會按照優先級狀態加入到協議鏈。如QQ的443端口0x00首字節的協議鏈:
    {"tcp_qq_443_0x00",tcp_qq_443_0x00,exist_fiby,IP_TCP,  most,0x00,443}
表明這是QQ的443端口,存在首字節0x00,屬于TCP協議,優先級最高,掛載在443端口下。在協議鏈內部,結合協議特征庫通過字符串、特征比對的方式進行進一步識別。如上述協議鏈的內部特征:
    if((*(payload+1)==0xb0)||(*(payload+2)==0x2c)||
(*(payload+0)==0x2c))
{
    return PRO_QQ;
}
    當數據包通過時,首先通過表驅動對應到具體的端口首字節協議鏈,然后依據協議特征庫比對,進一步準確識別。這樣不僅解決了單純采用端口和載荷識別一元信息單一的問題,而且提高了效率和識別的準確性。與此同時,系統已經收集了100多種協議特征,工作量浩大。為了以后維護升級方便,根據每一個具體協議特征,將其獨立為C文件,組成一個協議特征庫。具體實現如下:借鑒Linux驅動模塊的加載方式,將每一種應用層協議以模塊的形式定義,當需要注冊使用時,通過包含進其頭文件,加入注冊函數,動態加載后即完成新協議的注冊。通過采用這種方式,可以方便快捷地更改或添加協議特征庫,從而實現協議庫的升級,解決了協議載荷特征維護繁雜的問題,大大提高了系統的可維護性。
2.3 高級層識別方法
    由于基于行為的識別方法具有機器學習的能力,是一個多維空間的統計判別方法,如何選擇盡可能少的屬性特征值是影響算法的重要因素[11]。目前針對P2P協議和加密協議,主要借助于支持向量機、神經網絡和統計的方法,適合于粗粒度分類。
    高級層識別方法算法的主要思想是:利用SVM的分類算法,統計在單位時間t內,相同IP通信的連接數M,高端口通信率H,發送包方差Q,流量占有率V,持續時間T這5個屬性分別作為二分類訓練,用于P2P和非P2P的分類;將雙向連接率B、等長度數據包率S作為精確P2P訓練屬性,最終實現對數據包的準確分類。
2.3.1 屬性選取
    通過包屬性來區分包類別,需要選取各個數據包中差別較大的特征。在實際網絡環境中,隨著帶寬的不同及網絡設備的差異,所提取的特征屬性之間相互關聯。因此,從易于分析、差異較大的角度考慮,選取了9種屬性特征。具體特征如表1所示。

 

 

2.3.2 SVM的機器識別實現思路
    一對多SVM分類原理簡單,容易實現,其基本思想為:k(k>2)類SVM分類,將類1視為一類,其余k-1類作為另一類,將k類分類問題轉化成二分類問題[12]。協議識別問題本質是一個分類問題,協議識別模型是建立在通過大量已知流的屬性數據得到的。一個具有良好性能的支持向量機的關鍵在于模型的建立、核函數的選擇以及一些參數的選定。SVM的協議識別模型如圖2所示,數據包特征提取模塊主要負責從數據包緩存中獲取數據,統計數據包特征值;數據包預處理模塊負責過濾掉雜包、緩存并轉換成SVM能夠執行的標準格式;SVM訓練模塊完成數據的特征訓練。SVM支持向量機庫主要采用了臺灣林智仁教授的LibSVM庫,該軟件屬于開源的包,支持多種語言。基于SVM的反饋學習主要是通過設定一個識別的預設值,當識別率低于這一值時,將其放入反饋表中??傮w而言,RBF核函數是一個普遍使用的核函數,能夠適用于所有分布樣本。在參數選擇方面使用了python語言、gunplot以及LibSVM提供的tools交叉驗證選擇最優的c和g。


3 實驗數據
3.1 實驗數據收集

    為了驗證本文方法的實驗效果,分別在不同網絡環境下收集網絡數據包。圖3所示是實驗網絡拓撲圖。為了保證采集數據包的純凈性,每次在IP地址為192.168.1.161的機子上只運行一款軟件,通過Wireshark網絡封包分析軟件抓取各協議的數據包保存。

3.2 準確性與延時分析
3.2.1 應用準確性分析

      通過上述數據收集,對常見的幾種P2P與非P2P協議包進行了測試。其中,包總數指經過Wireshark過濾后純凈包的總數據包個數;識別數指經過協議分析后,能夠返回正確識別結果包個數。表2為協議識別系統對一些協議包的分析結果統計。通過分析發現,對于標準協議識別率高于流媒體和P2P下載,這主要是因為機器學習分類方式是一種粗粒度分類方法,容易受到網絡環境的影響。

3.2.2 網絡延時分析
    實驗中,利用Linux下TC對數據包打標命令,對某一條數據包打標,同時返回其經過協議模塊一(端口載荷識別)和模塊二(機器學習識別)的標簽;然后計算其經過系統分析后所花費的時間,得出每一協議延時量的平均值并統計出分別經過模塊一和模塊二的包總個數。系統延時如表3所示,其中,包總數指的是實驗中所分析數據包的總個數,占有率指數據包分別經過模塊一和模塊二包個數占統計包總個數比值??梢钥闯觯捎跇藴蕝f議只經過初級層和中級層的分析,因此延時量相對較??;而需要進行機器學習方式識別的P2P和流媒體協議,其延時量比較大,這主要由于SVM不斷學習反饋導致。但進入高級層識別數據包相對較少,基本在容忍范圍之內。

3.2.3 對比分析
    為了驗證本文方法在識別率和效率兩方面的提高,實驗對一些常用協議分別采用端口識別法、載荷識別法、傳統統計識別法和本文方法進行測試對比。從準確性上進行比較,如圖4所示??梢钥闯?,基于端口的識別正確率接近于0,基于載荷的識別對HTTP和QQ登錄識別較高,而對采用加密的迅雷和FTP較低,而本文所采用的方法都高于它們。從效率上比較,如圖5所示,在相同的網絡環境下,端口和載荷的識別消耗時間都不會很大,統計的方法延時較高,而本文的方法介于兩者之間,因此該識別方法是行之有效的。

    應用層協議識別作為計算機網絡研究的一個熱點,但其又必須兼顧準確性、實時性和維護性的設計要求,系統在傳統的協議識別的基礎上,通過添加基于機器學習的行為特征分析提高P2P協議分析的準確性,并采用表驅動的方法盡可能地改善系統運行效率。通過借鑒Linux驅動的模塊加載方式,將端口和首字節作為整體自動掛載到協議鏈,將每一種應用層協議以協議鏈的形式完成加載,提高了特征庫的可維護性。總之,通過不斷的改進與完善,基于立體化的應用層協議識別系統已被成功應用。但就目前來看,單獨的協議分析作用是有限的,它必須配合于其他模塊才能更好地發揮作用。為了使協議分析應用范圍更廣、效率更高以及更加準確,下一步工作將會結合審計和流控,繼續改進對加密協議、非標準協議的識別。
參考文獻
[1] 陳偉,胡磊,楊龍.基于載荷特征的加密流量快速識別技術[J].計算機工程,2012,38(12):1-4.
[2] 徐莉,趙曦,趙群飛,等.利用統計特征的網絡應用協議識別方法[J].西安交通大學學報,2009,43(2):43-47.
[3] 魏永,周云峰,郭利超.OpenDPI報文識別分析[J].計算機工程,2011,37(S1):98-101.
[4] 盤善榮.基于SVM的P2P流量識別方法研究[D].湖南:長沙理工大學,2009.
[5] 崔燕,汪斌強,陳庶樵.基于行為特征加權的P2P流識別方法研究[J].計算機工程與設計,2009,30(20):4805-4807.
[6] WU Amei,Dong Huailin,Wu Qingfeng,et al.A survey of application-level protocol identification based on machine learning[C].Proceedings of the 2011 International Conference on Information Management,2011.
[7] 劉元勛,徐秋亮,云曉春.面向入侵檢測系統的通用應用層協議識別技術研究[J].山東大學學報(工學版),2007,37(1):65-69.
[8] 陳亮,龔儉,徐選.應用層協議識別算法綜述[J].計算機科學,2012,34(7):73-75.
[9] 王明麗,傅彥,高輝.基于行為特征的P2P協議識別[C]. 中國計算機網絡安全應急年會信息內容安全分會,2008.
[10] 牟喬.準確高效的應用層協議分析識別方法[J].計算機工程與科學,2010,32(8):39-45.
[11] 陳佳.應用層協議快速識別的研究與實現[D].北京:北京郵電大學,2010.
[12] 李衛星.基于SVM的機器學習識別P2P流的方法的研究與實現[D].北京:北京郵電大學,2010.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产成人久久综合二区 | 免费的三级网站 | 成年人毛片网站 | 国产精品久久免费观看 | 色一欲一性一乱一区二区三区 | a级毛片免费 | 亚洲欧美日韩国产制服另类 | 久久精品观看 | 久久久成人影院 | 99在线视频精品费观看视 | 亚洲欧美日韩久久精品第一区 | 中国女人真人一级毛片 | 日本美女高清在线观看免费 | 久久国产精品岛国搬运工 | 一区二区三区观看 | 日韩欧美亚洲每的更新在线 | 成人欧美网站免费 | 久草视频免费在线观看 | 亚洲免费人成在线视频观看 | 国产成人在线观看免费网站 | 亚洲日韩精品欧美一区二区一 | 97在线观看成人免费视频 | 精品91精品91精品国产片 | 亚洲成在人线免费视频 | 一本久久精品一区二区 | 日韩在线观看视频网站 | 日本理论片免费高清影视在线观看 | 97国产在线观看 | 成人午夜在线观看国产 | 欧美日韩视频二区三区 | 亚洲精品国产第一区二区三区 | 国产国产成人人免费影院 | 亚洲三级成人 | 另类欧美视频 | 国产三级麻豆 | 免费在线看a | 日本国产欧美色综合 | 美国一级毛片片aa成人 | 国产亚洲欧美成人久久片 | 亚洲精品国产福利一区二区三区 | 精品国产一区二区三区不卡在线 |