摘要: 當前網絡環境中,P2P下載軟件流量占用了寬帶接入的大量帶寬,這造成了網絡帶寬的巨大消耗,因此,對P2P 流量的檢測和控制是十分必要的。提出了一種基于多協議多階段的深度數據包檢測的P2P流量識別的方法,該方法較已有方法具有識別準確度高、執行效率高、擴展性強的特點。基于這種方法,實現了一個多協議可擴展的P2P流量識別系統,系統以分層化可擴展插件的形式設計,可以對各種不同協議的P2P流量業務,進行高效、準確的識別。實驗表明,系統能夠以99.90%以上的準確度完成對P2P流量業務的識別。
關鍵詞:
中圖分類號: TP393 文獻標識碼:A 文章編號:2095-2163(2011)01-0043-04
0引言
P2P (Peer to Peer)是近年來出現的一種新的網絡應用,其出現啟動了網絡邊緣未獲使用的資源。在當前Internet中流行的C/S配置模式中,用戶的PC機僅僅是被作為一個顯示網頁的工具;而P2P體系結構則可以使用這些PC機分擔網絡中心的任務。
P2P技術出現后,網絡計算模式從集中式向分布式轉移,網絡應用的核心也從中央服務器向網絡邊緣設備擴散。當前網絡環境中,P2P下載軟件流量占用了寬帶接入的大量帶寬,文獻[1]的研究表明,P2P應用與Web應用上、下行流量間的比例分別為1:1.25和1:7,兩者比較,差別接近6倍。這造成了網絡帶寬的巨大消耗,甚至會引起網絡擁塞,大大降低了網絡性能,劣化了網絡服務質量,妨礙了正常的網絡業務的開展和關鍵應用的普及,嚴重影響了用戶使用正常的Web、E-mail以及視頻點播等業務,簡單的擴容已無法滿足容量增長的需要,因此實現P2P流量的分類、標識和控制是解決目前網絡狀態的根本途徑。
1相關工作
目前,針對各類不同P2P流量,國內外對此已有廣泛的關注,并提出過一些基本的識別模型或展望了P2P流量統計趨勢。
文獻[2]的研究表明,盡管受版權等問題的困擾,當前P2P應用仍呈現快速增長的趨勢,并且變得越來越隱蔽。目前,國內外對P2P文件共享系統的研究大多集中在資源查找[3]、下載協作[4]、流量測量、關鍵算法等方面。
於建華、廖祥等人在文獻[5]介紹了P2P流量識別方法,分析了相應的優缺點,然后提出一種基于流傳輸特性的P2P流量識別模型,對流量識別模型進行了分析。刁娜在文獻[6]中結合P2P網絡中出現的問題,分析了P2P對網絡流量的影響,提出了P2P流量識別的幾項關鍵技術并對其優缺點做出評價。在文獻[7]中,劉剛等人研究了BitTorrent流量的捕獲方法,并設計和實現了具體的流量捕獲方案,得出了可以用于建模的自相似性參數的量化結果。
在文獻[8]中,YANG X和G. de Veciana系統地分析了P2P網絡的服務能力 (Service Capacity)。該文將P2P網絡中的文件分布劃分為兩個階段,即瞬時階段和穩定階段。對瞬時階段,該文進行了深刻的理論分析,并建立了一個分支過程模型;還提出了對穩定階段建模的方法。在文獻[9]中,CYRIL Soldani分析了基于TCP流特性的P2P性能檢測,介紹P2P網絡通用的以及一些流行的文件共享系統,討論不同的方法來衡量P2P流量,得出一個描述的P2P行為,基于這些結果,制定了基于Linux下的eDonkey探測器。在文獻[10]中,KARAGIANNIS Thomas、BROIDO Andre等人制定了系統的方法來確定P2P流量在傳輸層的特性,通過大量的統計研究表明P2P流量不斷增加。
在上述文獻中,提出的方法主要存在以下問題:不能夠具體地考慮到每種P2P流量的特征,導致識別的正確率偏低,誤報率較高;識別的結果數據不方便作為其他系統或應用的輸入,這種情況是因為無法對識別出的流量作進一步的分類。
2基于多協議多階段的深度數據包檢測的P2P
流量識別方法
雖然不同的P2P協議采用的思想一致,但是不同協議在實現過程中存在著巨大差異,比如BitTorrent協議和eMule協議。BitTorrent協議中有種子的概念,種子中包含了下載過程中需要用到的所有信息;而eMule協議則不然,需要通過一系列的交互過程完成資源的下載和校驗。因此不同協議,在識別過程中應該采用更有針對性的方法,本文就此提出一種基于多協議與多階段相互結合的深度數據包檢測的P2P流量識別方法。
該方法中,對于不同協議,采用不同的特征進行識別,而不同協議之間又是處于同一層次的,因此可以采用相同的底層分析方法,只是上層以插件的形式加以區分,這樣既提高了準確度,也可以共用底層同樣的協議還原方法。對于同一協議,通過對P2P類協議的分析和研究,發現資源的搜索、下載與共享是分成不同階段的,每個階段負責的功能不同,所以同一協議應當采用分階段的識別方法,使得對于該種協議的識別廣度增強,漏報率減少,而且更有針對性;同時識別數據還可作為其他系統的輸入數據,實用意義更強。
2.1BitTorrent流量識別方法
2.1.1BitTorrent的分階段識別
經過對BT客戶端工作流程以及BitTorrent協議的分析,在BitTorrent協議的第二階段,客戶端連接tracker服務器時,會發送GET請求包,這時會有特征字符串“GET /announce?info_hash=”出現,再根據該數據包的特征,提取出該下載的文件的info_hash值、已下載數據量和未下載數據量大小。在BitTorrent協議的第三階段,客戶端握手時,會有特征字符串“0x13BitTorrent protocol”出現[11],再根據該包的特征,提取出該下載的文件的info_hash值。
2.1.2編碼轉換算法
在BitTorrent協議連接服務器階段,發送GET請求包采用的是服務器HTTP/HTTPS協議,因此在這個階段,初步提取出的info_hash值是以URL編碼的數據,要將其轉換為ASCII編碼。算法流程如圖1所示。
按照如圖1算法編寫編碼轉換函數,函數是以URL編碼的字符串,作為輸入,字符串必須以‘\0’結尾;以ASCII編碼的字符串,作為輸出,字符串末尾會自動添加‘\0’。
2.2eMule流量識別方法
2.2.1eMul流量的信息識別
eMule報文的格式如下:
每個數據包以協議代碼開始,后面跟著的是包的長度(32-bit unsigned的整數)。現在的協議代碼有下面三個:
PR_ED2K= 0xe3,
PR_EMULE = 0xc5,
PR_ZLIB= 0xd4
包數據通常以8-bit的代碼開始,用于指示包的內容。如果以PR_ZLIB協議發送包,包的數據則是經過壓縮的。
根據如上對eMule協議特點的分析,可以在如下幾個階段識別出eMule流量的信息。客戶端與服務器端的TCP通信時,是建立連接階段[12];客戶端與服務器端的UDP通信時,為搜索階段;客戶端與客戶端的TCP通信時,則是初次握手階段。
2.2.2eMul流量的識別流程
eMule流量識別的流程見圖2。首先,對源數據流做協議還原,得到TCP流和UDP流。
對于TCP流,匹配應用層數據,匹配第一字節是否為0xe3,匹配第二字節是否為0x01,若是,則提取出16字節的hash值。注意:提取時,應按照Little-Endian的格式提取,因為在eMule協議中用到的所有報文都以Little-Endian形式而非Big-Endian形式出現。
對于UDP流,匹配應用層數據,匹配第一字節是否為0xe3,匹配第二字節是否為0x16,若是,提取hash值,再提取文件名。因為在客戶端與服務器端的UDP通信的搜索階段,文件名以明文傳輸。若未匹配成功,則表明該流量不是eMule數據流。
2.2.3數據的提取與轉換算法
由于eMule協議中,所有消息都是用Little-Endian 編碼,而不是Big-Endian編碼,故提取eMule流量詳細信息時,需要注意提取hash位的順序,比如,某個捕獲的流量數據包,其報文內容中,hash字段是AA 40 4D 8F 88 4F 18 70 D9 2D 1B 2C FB 73 39 C2,而正確的hash值應該是8F 4D 40 AA 70 18 4F 88 2C 1B 2D D9 C2 39 73 FB。
提取文件大小時,最初提取的結果都是字符串形式的數字,要將其轉換成真正的數值。由于不同類型表示的數字均存在范圍限制,而本系統中數字的范圍很大,C語言庫提供的函數不能滿足要求,故重新編寫了串轉換函數,算法流程如圖3所示。
3基于多協議多階段的P2P流量識別系統設計
3.1系統總體設計流程
如圖4所示,整個系統由多臺前端機和一臺數據服務器組成。前端機主要由流量捕獲模塊、BT流量識別模塊、eMule流量識別模塊、進程間通信模塊、并發調度模塊以及信息發送模塊組成。主要功能是捕獲、識別P2P流量以及將識別的信息傳輸到數據服務器。數據服務器由并發管理模塊、數據整合模塊和中心數據庫組成。主要功能是存儲P2P流量的詳細信息,從而為其他系統,比如流量調度系統或流量限速系統,用作數據輸入。
系統的整體框架可描述為:將路由器截獲的大規模網絡流量,下發到多臺服務器進行處理和分析。每臺服務器上都運行本系統,系統對流量進行第一次分析,識別其是否為BT流量:若是,則將該流量提出,發往專門處理P2P流量的
機組;若不是,則流量進入下個插件,識別其是否為eMule流量。若是,同樣發往專門處理P2P流量的機組;若不是,則進入下個插件,依次循環下去,直到最后。無插件認領的流量,進入others機組處理。
注意:這里插件的順序是可調換的,這也是本系統的特點之一。可根據不同的應用背景,動態地改變插件的順序,以此適應不同的應用環境。這樣既提高了系統整體的效率,節約了系統開銷,又極大地增加了代碼的可重復利用率。
3.2結果演示
在前端機上,運行BT流量識別進程、eMule流量識別進程、進程間通信進程、多機間通信進程,其中,進程間通信進程負責接收BT流量識別進程發來的信息,并通知多機間通信進程發送給中央數據服務器。在數據服務器上運行多機間通信進程,負責P2P流量信息的接收和入庫。
根據對截獲的離線數據包的分析識別,得到如表1所示的數據信息。其中,proto為1表示該數據是BT數據包,為2表示該數據是eMule數據包;phase為1表示在BT協議的請求資源階段的數據報文,為2表示在BT協議的下載資源階段的數據報文,為3表示在eMule協議中客戶端與服務器建立連接階段的數據報文,為4表示eMule協議中請求對等方資源階段的數據報文。表1中只是列出少部分識別結果。
3.3結果分析
為了便于分析和檢驗識別的效果,測試的結果都是基于離線的。經過對入庫數據的抽樣檢驗和分析,如表2所示,樣本1中的eMule識別比率達到99.96%,BT識別比率達到99.84%,系統總體識別比率達到99.90%。
表3顯示的是對捕獲的離線數據以及數據庫中識別的數據多次抽樣的結果,該表是根據表2的方法得到的。通過對表2和表3的進一步研究,可知系統識別的正確率可以達到99.90%以上。由于表3中只是列出部分結果,本文總共做了50次抽樣檢驗,在對這50次檢驗中發現,BT識別的正確率一般低于eMule識別的正確率,對系統實現進一步分析后,可知由于某些仿BT協議的特征與BT協議十分類似,所以導致正確率偏低于eMule識別的正確率。
4 結束語
本文提出了一個簡單高效的解決P2P流量識別方法,該方法識別準確度高,執行效率也很高。基于這種方法,本文構建了一個P2P流量識別平臺,該平臺最大的特點就是可擴展性,平臺通過功能插件的形式,對采用各種不同協議的P2P流量業務,進行高效、準確的識別。經過抽樣檢驗和分析,計算出識別正確率達到99.90%以上。
參考文獻:
[1] ALLOT. Modeling peer-to-peer network topologies through sm- allworld models and power laws[C]// IX Telecommun-ications F- orum,2001:15-24.
[2] KARAGIANNIS T. Analysis of resource transfers in peer-to- peer file sharing applications using fluid models. PerformanceEvaluation,2006:149-174.
[3] LIU L,RYU D K,LEE K W. Keyword fusion to support effi- cient keyword-based search in peer-to-peer file sharing[C]// I- EEE International Symposium on Cluster Co mputing and Grid. Chicago,2004:269-276.
[4] SHERWOOD R,BRAUD R,BHANACHAJEE B,et al. A coop- erative bulk data transfer protocol[C]// Proceedings of IEEE I- NFOCOM, 2004:86-95.
[5] 於建華,廖祥,孫莉. P2P流量識別方法的研究及實現. 計算機 工程,2006,13:15-17.
[6] 刁娜,李建濤,張志勤. P2P流量識別技術研究. 計算機工程與 設計,2008,11:2772-2775.
[7] 劉剛,方濱興,胡銘曾,等. BitTorrent 流量的捕獲方法及自相 似性的評價. 計算機應用研究,2006,5:205-206,209.
[8] YANG X,de Veciana G. Service Capacity of Peer-to-Peer N- etworks. IEEE, 2004:786-791.
[9] SOLDANI C. Peer-to-Peer Behaviour Detection by TCP Flows Analysis[C]// Proc,2003:12-15.
[10] KARAGIANNIS T,BROIDO A,FALOUTSOS m,et al. Trans-port layer identification of p2p traffic. In IMC'04: Proceedingsof the 4th ACM SIGCOMM conference on Internet measure-ment,2004:121-134.
[11] SEN S,SPATSCHECK O,WANG D. Accurate.scalable in net-work identification of P2P traffic using application signatures[C]//IX Telecommunications Forum,2004:68-70.
[12] KARARGIANNIS T,BROIDO A,FALOUTSOS M. Transport l-ayer identification of P2P traffic[C]// Proceedings of ACM SI-GCOMM,2004:80-86.
[13] SEN S,SPATSCHECK O,WANG D. Accurate scalable in n-etwork identification of p2p traffic using application signatures[C]//www 04 Proceedings of the 13th international conferen-ce on World Wide Web. 2004:512-521.
[14] HAN S H,JAMES W K H. The architecture of NGMON:A passive network monitoring system for high speed IP networks.Lecture Notes In Computer Science,2002:2506-2507.