河北科技大學信息與工程學院 魏春花 楊奎河
基于行為關聯的有狀態P2P識別方法
河北科技大學信息與工程學院 魏春花 楊奎河
P2P軟件的廣泛使用雖然給大家帶來了很大的方便,但同時也出現了一系列問題。如:網絡擁堵,網絡服務質量問題,帶寬分配不均衡等。所以,實現對P2P軟件的識別及控制顯得尤為重要。本文根據P2P網絡出現的問題,提出了一種新的識別方法---基于行為關聯的有狀態的識別方法。該方法根據P2P數據流的行為狀態特征來獲取本地端口,然后對該本地端口加以控制,從而實現對P2P數據流的識別與控制。該方法有兩種獲取端口的方式:DNS獲取端口方式、DPI獲取端口方式。初步實驗表明該方法對P2P應用的UDP連接是有效可行的。
P2P;行為關聯;深度包檢測技術(DPI);深度流檢測技術(DFI)
P2P即端到端網絡應用,又稱為對等連接或對等網絡,是一種新的通信模式。P2P網絡中的節點是對等的,且每個peer能同時充當服務器和客戶端。相對于傳統C/S模式,對等網絡(Peer-to-Peer,P2P)技術充分發揮以往被忽略的眾多個人計算機(Peer節點)的作用,使服務分散化,具有很大的優勢。近年來,P2P的用戶規模、應用類型和流量均呈爆發式增長。騰迅日前發布最新數據顯示,基于P2P技術的QQ聊天軟件同時在線人數日均4000萬。同樣,中國互聯網實際流量模式分析報告表明,P2P流量已占整個互聯網流量的60%。德國互聯網調研機構ipoque稱,P2P已經徹底統治了當今的互聯網,其中50%~90%的總流量都來自P2P程序。
隨著P2P技術的發展和成熟,人們在享受這項技術便利的同時,也出現了許多問題。據最新的統計顯示,累計端到端業務已占互聯網業務總量的60%以上,這無疑會引起網絡帶寬的巨大消耗,造成網絡擁塞,降低網絡性能。因此,對P2P應用實現識別及控制是亟待解決的問題。
隨著P2P技術的迅猛發展,P2P軟件的越來越多,快速高效的識別P2P流量數據包越來越困難。現在比較常用的P2P檢測方式有:端口識別方法、深度包檢測識別方法和深度流檢測識別方法。

表1 幾種常用P2P應用默認端口號

表2 幾種常用P2P協議負載特征

圖1 迅雷.pcap
端口檢測識別方法是一種很簡單的識別方法,它具有簡單、高效、易實現的優點。該方法在早期的一些P2P控制管理軟件中經常被使用,此時,網絡管理員只需要將源或目的端口與P2P應用的默認端口(如表1)進行匹配即可,如果匹配成功表明這個流是P2P應用產生的流量,否則就不是P2P應用產生的流量。這種方法的精確度和實時性都很好,但是隨著P2P技術的發展,P2P軟件經常使用動態端口或偽裝端口,有時為了躲避防火墻的封堵,還用一些常用端口,如80端口就被很多非web應用程序使用,以躲避那些不過濾80端口的防火墻。因此,不能再單純的依賴端口來識別這些協議,而要結合其他的方式一起來識別,如表1所示。

圖2 PPS.pcap
DPI(Deep Packet Inspection,深度包檢測)技術是近年來出現的一種協議識別技術,DPI技術在分析包頭的基礎上,增加了對應用層的分析,是一種基于應用層的流量檢測和控制技術,當IP數據包、TCP或UDP數據流經過基于DPI技術的網絡設備時,DPI引擎通過深入讀取IP包載荷來對OSI 7層協議中的應用層信息進行重組,從識別出IP包中的應用層協議。
不同的應用通常會采用不同的協議,而各種協議都有其特殊的指紋,這些指紋可能是特定的端口、特定的字符串或者是特定的Bit序列。基于特征字的識別技術,正是通過識別數據報文中的指紋信息來確定業務所承載的應用。根據具體檢測方式的不同,基于特征字的識別技術又可細分為固定特征位置匹配、變動特征位置匹配和狀態特征字匹配三種分支技術。通過對指紋信息的升級,基于特征字的識別技術可以方便的擴展到對新協議的檢測。
這種識別方法對大部分的常規協議都是適用的,但是對加密協議和擴展協議還有困難,需要通過其他方法來識別。表2中是幾種常見協議的舉例,用該方法識別及控制都很好,幾種常用P2P協議負載特征見表2。
與DPI進行應用層的載荷匹配不同,DFI采用的是一種基于流量行為的應用識別技術,即不同的應用類型體現在會話連接或數據流上的狀態各有不同。例如,網上IP語音流量體現在流狀態上的特征就非常明顯:RTP流的包長相對固定,一般在130~220byte,連接速率較低,為20~84kbit/s,同時會話持續時間也相對較長;而基于P2P下載應用的流量模型的特點為平均包長都在450byte以上、下載時間長、連接速率高、首選傳輸層協議為TCP協議等。DFI技術正是基于這一系列流量的行為特征,建立流量特征模型,通過分析會話連接流的包長、連接速率、傳輸字節量、包與包之間的間隔等信息來與流量模型對比,進一步識別應用類型。該方法對P2P加密協議和擴展協議類有效果,但是針對具體協議不是很準確。當使用DPI技術不能識別時,可考慮使用該方法。該方法還有待進一步的研究。
一個典型的P2P是由許多終端構成的,每個終端都是一個服務器,這個終端可以同時為其它終端提供服務。基于行為關聯的有狀態識別技術的基本思想是從終端雙方的通信過程中尋找特征數據,這些特征數據不限于某條特定的連接,如果特征匹配,那么系統將記錄該終端的行為,而不是某條連接。一旦該終端的行為被識別出來,那么后續同該終端通信的數據流量無須重新驗證,就可以被識別為相同的應用。這種方法不但提高了識別效率,同時也極大的提高了系統的性能。
在基于行為關聯的有狀態識別技術的基礎上向智能方面進一步發展,該技術可以從多條連接中自動根據某種統計規律來識別某些特征不明顯或者被加密了的通信協議(如SkyPe、百度影音、迅雷下載等),在保證性能的同時,提高了系統識別的準確性。這種技術針對P2P應用尤其有效。
使用該方法對迅雷,快車,PPstream及各類P2P下載軟件進行實踐分析,發現大部分P2P軟件都是通過UDP連接進行下載的。且P2P軟件使用UDP進行下載時,都有一種行為特征:本地端口雖然是不確定的,卻有個共同的特點,即端口一旦生成,后續所有UDP數據包均會通過該端口進行傳輸。此時就需要尋找一種行為或狀態特征來將這種行為特征具體化---找到本地下載端口,便可控制所有的UDP連接。根據P2P軟件的行為或狀態特征有以下兩種獲取端口的方式:
①DNS獲取端口方式
P2P軟件的行為特征:終端通過DNS(域名解析)請求得到服務器IP地址,終端IP地址請求域名解析得到的IP地址,建立UDP連接。根據以上行為特征,通過連接關聯性,得到終端端口,該方法即為DNS獲取端口方式。
以迅雷為例加以說明,如圖1所示。
第一步:迅雷軟件通過域名解析得到hub5pnc.sandai.net的IP地址:222.141.53.2。
第二步:本地IP地址請求服務器IP地址:222.141.53.2,其IP地址對應的目的端口為8000,通過該目的端口得到的源端口為11371,在后續的UDP數據包中均會使用11371端口。但是這個本地端口不是唯一的,還有其他域名得到的端口,需將所有端口記錄下來,但是只有一個是主要流量下載端口;
此外,迅雷還有一個特點:每隔5-10秒會向兩個服務器進行心跳,這樣可以保持端口的生命值。
第三步:對以上得到的目的地址和源端口在一定時間內進行封鎖,即可對UDP數據包進行控制。
②DPI獲取端口方式
P2P軟件的狀態特征:即P2P數據包負載的共同特征。從具有該共同特征的數據包中提取終端端口的方法即為DPI獲取端口方式。
以pps為例加以說明,如圖2所示。
第一步:找出數據包的共同特征:數據包DATA部分偏移1byte為起始位置的2byte為“00 43”,且數據包中包含字符串”pps://”。
第二步:具有該特征的數據包的源端口為1594,在后續的UDP數據包中均會使用1594端口進行請求。該源端口并不是唯一的,也還有其他的端口,需要將所有的端口都記錄下來。
第三步:將上述得到的原端口在一定時間內封鎖,即可對UDP數據包進行控制。
通過以上兩種方式即可識別控制P2P的UDP連接。剩下的TCP連接可以結合使用DPI方式或DFI的方式進行解決。如:通過迅雷數據包負載內容的8byte開始的4bits為其長度特征來識別控制其TCP連接;PPStream數據包的TCP流則有以下特征:“vodguide.pps.tv”、“stat.ppstream.com”和“pl.pps.tv”特征,可通過這些負載特征對其TCP流進行識別和控制。
通過以上分析可知,基于行為關聯的有狀態的識別方法是在方法2.1和方法2.2的基礎上加上特定的行為特征而提出的的一種高效的識別方法,對P2P應用有很高的識別效率,大部分P2P應用都可以通過該方法得到有效的控制。優點如下:
1)該方法沿用了基于端口匹配技術簡單、高效的特點;
2)具有深度包檢測技術的高可靠性、高準確度的特點;
3)由于該方法具有一定的行為特征,所有能夠識別一些加密的數據流。
綜上可知,本方案是將端口匹配方法、負載匹配方法及數據的一些行為特征融合在一起而形成的一種新的高效的識別方法,該方法既提高了整個P2P識別系統的識別率、精確度,且減小了誤報率,還能有效地識別一些擴展協議和加密數據流。所以,該方法是一種比較好的識別方法。
雖然基于行為關聯的有狀態的識別方法是一種不錯的識別方法,但它也有自身的局限性,即該方法只能用于UDP連接,對TCP連接無效。為了更好的識別控制P2P流量,下一步的工作重點是研究TCP連接。具有明顯負載特征的TCP數據流,可用深度包檢測方式來識別;而無明顯負載特征的TCP數據流主要考慮使用DFI技術來實現。所以,接下來的主要任務是研究DFI技術,通過使用該技術來識別P2P中無明顯負載特征的TCP數據流,其主要包括P2P加密協議和擴展協議。
[1]周維,劉芳好,羅宇,談子龍,趙留濤,劉東映.P2P應用特征檢測與識別[J].計算機應用,2009,29.
[2]刁娜.P2P流量識別技術研究[J].電信快報,2009(2).[3]溫超,鄭雪峰,戚翔,于真.基于流量分析的P2P協議識別方法的研究[J].微計算機應用,2007,28(7):1-2.
[4]龍坤,陳庶樵,董永吉.P2P流量識別方法比較研究[J].信息工程大學學報,2009,10(2).
[5]魯剛,張宏莉,葉麟.P2P流量識別[J].軟件學報,2011,22(6).
魏春花(1983—),女,山東單縣人,河北科技大學碩士研究生,軟件設計師,在北京天融信科技有限公司實習。