譚紅春,楊松濤,闞紅星
(安徽中醫(yī)藥大學醫(yī)藥信息工程學院,安徽合肥230012)
目前我們廣泛使用的P2P(Peer-to-Peer)技術即對等網絡,打破了以服務器為中心的C/S(Client/Server)傳統(tǒng)模式[1],充分利用了網絡帶寬和廣泛分布的網絡資源,改變了信息的傳輸方式,減輕了服務器的負擔,比傳統(tǒng)的C/S模型有更好的健壯性、穩(wěn)定性、可擴展性以及更高的性價比[2,3].這使得P2P應用日益廣泛,流量迅速增長.據統(tǒng)計,我國的P2P流量占整個網絡流量的比例大約為40%到70%[4,5].校園網主要用戶為行政人員、教研人員及學生,這些用戶可以通過網絡獲取教學信息、最新研究成果和各類數據庫資源.
我們在一段時間內對校園網中的流量進行了統(tǒng)計,在這期間,總共統(tǒng)計出13種服務類型,位于前3位的服務分別是P2P服務、流媒體服務[6]、傳統(tǒng)服務,其中P2P服務約占52.11%,而其他服務只占到很少比例.這說明P2P流量嚴重吞噬了校園網的帶寬,損害了正常業(yè)務的通信,影響了廣大師生的利益.

圖1 服務大類流量分布情況及對應餅圖
P2P流量的有效識別是進行網絡控制的基礎,P2P識別的過程其實就是一個具體的分類過程,下面是分類過程的定義:
定義:給定一個數據集F={x1,x2,…xi}和一組類E={E1,E2,…Ej},分類就要將每個元組xm對應到每一個類中,即確定一個映射f:F→E.其中所有的元組都屬于每一個類En,即 En={xm∣ f(xm)=En,1 < =m < =i且 xm∈F}.
在本文設計的P2P流量檢測方法中,我們預處理數據庫F={x1,x2,…xi},并抽取其中第m條網絡流,形成元組xm.根據類E的不同,映射f:F→E得到的結果也各異,所以本文總結出P2P流量識別主要包括兩個方面:
首先從P2P應用的自身特點來分類,在這個方面來說,一般類E的大小j>2,其中最具代表性的就是根據著名端口號和應用層特征簽名進行識別.
其次,從P2P流量跟非P2P流量的行為特征加以識別,在這個方面來說,一般類E的大小j=2,其中最具代表性的就是其為流量特征.
我們所講的端口即TCP或UDP端口.互聯網數字分配機構將端口分為3種:知名端口、用戶端口和動態(tài)端口.通過對端口的識別,可以區(qū)分出應用層的各種應用,其中包括使用固定端口的 P2P應用,比如 BT使用6881-6889[7],EDonkey 使用 4661 和 4662[8]端口.
DPI即深層數據包檢測技術,它是基于應用層的“特征字”的檢測方法,通過對IP包頭的解析,讀取相應的荷載內容.此種方式需要維護一個payload特征庫,此特征庫可以建立在前人的基礎上,也可以以人工的方式自動提取.根據解析出來的特征碼,再加上適當的模式匹配算法,符合的流量就可判斷為 P2P 流量[9-11].
為了彌補深度數據包檢測技術的缺陷,深度流檢測技術對加密的、未知的以及復雜的難以提取特征碼的流量,進行行為檢測.檢測標準是根據不同的數據流具有不同的行為特征,即數據流或會話鏈接上會呈現的不同的行為方式.本文選取兩種典型的行為特征作為檢測標準:
(1)地址識別法.當節(jié)點S與對等網絡的其他節(jié)點進行通信時,該節(jié)點會將自己IP地址和監(jiān)聽端口告訴超級節(jié)點或索引服務器,超級節(jié)點或索引服務器再將S的加入信息及IP地址、監(jiān)聽端口號告訴網絡中的其他主機.在后續(xù)的查詢和下載過程中,其他主機在連接S的監(jiān)聽端口時將隨機選擇一個源端口,由于不同主機選擇到一樣源端口的概率相當低,所以與S的監(jiān)聽端口相連的源端口號基本不會重復.在具體實現上,要連續(xù)記錄此S節(jié)點所鏈接到的每個源地址、源端口號,我們分別記為S_IP和S_PORT,如果這兩個數量相差小于等于10,則我們認為是P2P流量.

圖2 IP_PORT通信圖
(2)參與P2P網絡進行通信的節(jié)點既充當服務器的角色又充當客戶機的角色,在通信端口的流量具有如下性質:
既有大量流入的連接(被其它節(jié)點連接其監(jiān)聽端口),又有大量流出的連接(連接其它節(jié)點的監(jiān)聽端口).上行流量和下行流量基本相同.一般的網絡協議,如HTTP、FTP等,大致都是客戶機向服務器提出申請,這個流量非常小,有幾十到幾百字節(jié)大小,然后服務器傳輸給客戶機所需要的數據(幾十兆或上G),上行流量與下行流量遠遠不等.當此節(jié)點不參與P2P時,要么只做服務器,要么只做客戶機,其出入連接必定不平衡.通過上述性質,我們做如下工作:
對可能參加P2P通信的節(jié)點S的端口在一定時間T的統(tǒng)計,當某個端口的入流量和出流量的比值在一個區(qū)間時,就認為這個端口是P2P端口,其端口上的所有連接都是P2P連接.

本文的P2P流量檢測系統(tǒng)中,為了達到高效率的識別結果,進而對流量進行有效控制,針對上述分析的幾種檢測方法,我們將DPI和DFI技術相互結合,提出了一種綜合的、多重的檢測手段,模型包括端口檢測、深度數據包檢測和深度數據流檢測3個基本模塊.其示流程圖如圖3所示.識別的過程:首先對使用固定端口的P2P流量進行檢測;其次對未能檢測出來的數據流再比對特征值來加以判別;最后,對于加密的未知的P2P流,再根據節(jié)點在傳輸層表現出來的特征來判斷.

圖3 綜合流量檢測流程圖
本系統(tǒng)P2P流量檢測算法如下:
(1)報文被送到檢測引擎后,首先進行端口檢測,如果使用的是知名端口,如http服務的80端口,ftp服務的21端口等,則直接轉到第5步,如果使用的是已知的P2P端口,則直接轉到第4步.如果都識別失敗,則轉入下一步.
(2)采用端口檢測如果不能識別,則轉到此步深度數據包檢測,對識別出來的P2P流量進行分類,并根據相關數據格式存儲在數據庫中,為以后的統(tǒng)計分析做好準備,如果識別不出來,則轉入下一步.
(3)深度數據包檢測沒有識別出來,則根據傳輸層兩個流量特征進行識別,采用我們提出的檢測算法對流量進行識別,如果識別出來,則轉入第4步.否則轉入第5步.
(4)流量被識別出來以后,則根據相應的控制策略采取措施.
(5)對常規(guī)業(yè)務和未檢測出來的流量進行放行操作.
針對本文提出的算法,系統(tǒng)采用PHP開發(fā)語言,數據庫采用MYSQL,整體架構在微軟平臺上.系統(tǒng)具體流程為數據包的采集、端口檢測、DPI檢測和DFI檢測.常見端口的設置,輸入一些公認端口,比如http服務的80端口,ftp服務的21端口等;特征比特串的設置,盡可能的輸入所有目前發(fā)現的特征值,比如迅雷的特征值:“POST/HTTP/1.1”,BT的特征值:“0x13B itTorrent”等;流量特征的檢測,采用本文提出的兩種行為特征.本系統(tǒng)經過一段時間的運行,效果明顯,圖4就是本系統(tǒng)的運行結果截圖.

圖4 流量檢測實時結果
在理論結合試驗的基礎上,作者感覺到此模型還有一些不足之處,有以下幾個方面需要進一步的探討和改進:
(1)對檢測出來的P2P流量沒有進行進一步的分析,其有效性和正確性還有待驗證.
(2)本文提出的多重檢測方案,還可以結合其他如機器學習、人工神經網絡等識別手段則更高效準確.
(3)本模型測試的環(huán)境是百兆的校園網,如果采集數據的環(huán)境變成千兆或更大時,本模型要能靈活應對,從而滿足各種環(huán)境的檢測.
[1]閆佳,應凌云.結構化對等網測量方法研究[J].軟件學報,2014,(6):1302-1305.
[2]韓淑芳.基于P2P技術的網絡應用及分析探討[J].電子技術與軟件工程,2013,(15):13.
[3]林維鏘.中小型校園網流量的控制方法[J].武漢工程大學學報,2011,(4):97-98.
[4]唐紅,黃鼎.通用Bittorrent模擬器研究[J].計算機工程與應用,2011,(15):130-133.
[5]李致遠,王汝傳.一種基于機器學習的P2P網絡流量識別方法[J].計算機研究與發(fā)展,2011,(12):2253-2255.
[6]鄭藝芳.基于HTTP的P2P流媒體直播系統(tǒng)構建[J].長沙大學學報,2012,(2):43-46.
[7]Yuan R,Li Z,Guan X,et al.An SVM-based machine learning method for accurate internet traffic classification[J].Information Systems Frontiers,2010,(2):149-156.
[8]M Soysal,E G Schmidt.Machine learning algorithms for accurate flow-based network traffic classification:Evaluation and comparison[J].Performance Evaluation,2010,(6):451-467.
[9]李彬彬.基于流量特征的P2P應用分析與控制[J].北京交通大學學報,2010,(8):32-36.
[10]劉劍剛,秦拯.基于多重特性的P2P流量識別方法[J].微計算機信息,2010,(33):69.
[11]熊殿華.一種結構化P2P網絡中的動態(tài)協作緩存策略[J].計算機與數字工程,2010,(1):58.