隨著互聯網和寬帶技術的發展,P2P的應用日益廣泛,它給我們的生活帶來了很大的方便,是資源可以充分的共享,但是也帶來了諸如知識產權等各個方面的問題。P2P軟件對于網絡帶寬的占用和消耗以及VOIP對于傳統的電話運營商的業務的擠占,P2P的帶寬資源占用問題(例如:BT下載),P2P的業務監管問題也日益嚴重(例如:Skype電話)。特別是Skype使用加密協議并且所有資料對外界完全保密,對它的監管問題已經成為全球性的難題。尤其像是公司,員工上網習慣很可能直接關系到公司信息的安全以及在工作時間有效的管理員工的上網行為。

圖1 P2P網絡結構圖
1)服務供應商使用DPI來分離網絡流量
2)大型企業可以使用DPI來管理網絡性能擁有大型網絡覆蓋很多地理區域的企業在他們的內部網絡間可能運行著完全不同的通信類型。
3)提高企業網絡的安全性其可以定位有害流量,并從網絡中去除,企業可以使用DPI設備以防止非法的文件共享,從而有效的保護公司的內部文件等。
隨著P2P技術(如圖1所示)的不斷發展成熟以及P2P應用的不斷增多,人們對P2P越來越熟悉并且也越來越依賴。由于應用需求不同,相關的研究側重點還是有所不同的。從應用角度來看,目前P2P技術研究主要涉及到以下幾個領域:
1)提供文件和其它內容共享的P2P網絡;
2)P2P對等計算和存儲共享;
3)基于P2P方式的協同處理與服務共享平臺。
基于以上的事實P2P軟件已經深入到我們網絡生活的各個角落,但與此同時其也面臨著很大問題:
1)對帶寬的霸占。
2)上下行流量基本對稱性,與一般的互聯網應用不同,P2P應用產生的上下行流量基本相等,甚至上行流量大于下行流量,而現在的網絡大部分用戶都是選擇ADSL接入的方式,其上下行帶寬是不對稱的,所以P2P軟件對于此類網絡也會有很大影響。
DPI由協議識別引擎程序DPI-CBB和知識庫(DPI-DPL)兩部分組成。協議識別引擎程序以靜態鏈接庫的形式發布給用戶,支持C語言程序開發接口,可以快速集成到各種需要對網絡數據進行協議和應用程序精確識別的產品中。知識庫是一個二進制數據文件,保存了各種應用層協議和應用程序多持有的識別特征,在進行數據識別時候,識別協議引擎會對輸入的數據進行特征分析,并與知識庫中各種識別特征進行比較,根據比較數據得出識別結果。基于DPI技術的帶寬管理解決方案與我們熟知的防病毒軟件系統在某些方面比較類似,即其能識別的應用類型必須為系統已知的,基于DPI技術的帶寬管理系統要維護一個應用特征數據庫,當流量經過時,通過將解包后的應用信息與后臺特征數據庫進行比較來確定應用類型;而當有新的應用出現時,后臺的應用特征數據庫也要更新才能具有對新型應用的識別和控制能力。于此同時,不同的軟件之間能提取準確的特征字段,以避免不必要的不同軟件之間的誤識別。還要及時的更新特征數據庫,以應對網絡中不斷出現的軟件更新以及特征字段的變化導致數據流量無法識別和阻斷。

圖2 實驗室網絡結構圖
首先,在一個局域網內有多臺主機,通過一個交換機相連,交換機相連一個雙網卡的linux服務器,在服務器上運行DPI檢測程序,由此連接網絡的網關,因為在實際測試中是模擬的一個真實的網絡環境所以不能在一個局域網內測試對于特定網絡流量阻斷情況的檢測,因為這樣可能會有局域網檢測的局限性,不能很好的模擬真實的網絡的下的阻斷效果。于此同時在交換機上連接無線設備可以檢測無線設備軟件的阻斷測試。
而我們在其中一個PC上操作一個軟件與外部互聯網通信時會產生流量,其實我們用wireshark軟件抓取特定軟件的數據流,與此同時要避免其他網絡流量對于正常的網絡流量的干擾,在抓取一定數量的數據包后,分析軟件在那種場景下產生哪些數據流量,針對于此數據流量其特征關鍵字是什么,在對于多個數據包比對后可以確定其是相對不變,就可以提取作為軟件流量的特征。而其中的DPI程序主要來自OpenDPI engine在linux操作系統下進行安裝,并進行其特征數據庫的書寫。
例如一個HTTP的連接在三次握手后建立連接,在第一個數據包到達時其應用層信息肯定是由GET開頭,會有Referer和host等信息,所以用GET和Referer信息足可以判斷是HTTP服務,然后再基于Referer中的信息可以判斷其流量是屬于哪個網站,并且其中還有諸如jpg、image、png等信息可以判斷出其是圖片的信息。
眾所周知的是Linux操作系統提供了IPtables的防火墻可以供用戶針對特定服務去限制和阻斷特定的協議的流量,其有FORWARD、PREROUTING、POSTROUTING等幾個表來決定防火墻對于數據流量的處理,但是IPtables有其很大的局限性,其只能識別TCP層的協議,無法對于應用層數據檢測,所以面對數據量是隨機的P2P的流量的時候IPtables就顯得束手無策,此時只能使用DPI技術來對P2P軟件進行管理和監控。
由于P2P協議的特殊性,其往往是通過建立多個連接后實現對網絡資源的極大消耗,而起建立連接和實際大的數據流往往是分開的,如果我們專注于網絡中大量的數據流,我們會抓到一些隨機特征的數據包這些數據包很難提取我們所需要的特征。通過分析特定P2P軟件,我們發現很多P2P軟件選擇數據流和控制流分行的辦法,所以可以先對于特定P2P軟件建立控制流的過程進行識別和控制,從而達到控制其主要數據流的目的。而其控制流中肯定包含了應用層軟件的特定的信息。
本文介紹了基于DPI技術的P2P識別和控制系統。系統運行于Linux系統之上,可以對特定P2P軟件進行流量控制,而針對P2P軟件的特殊性,選擇了控制檢測其控制流,當有新的P2P業務出現時,需將針對該業務的識別和控制策略添加到系統中,系統就可以實現對該業務的識別和控制。目前,P2P技術的應用越來越廣泛,使用的技術也越來越復雜,尤其是針對于加密過后的P2P流量的識別上還有待提高,這對P2P識別控制系統又提出了新的需求。因此,本系統還需要進一步提高和完善。
[1]銳捷網絡.DPI技術白皮書[EB/OL].http://www.ruijie.com.cn.
[2]李蕓.P2P流量識別技術與管控技術應用研究[J].信息與通信技術,2008.06:18-24.
[3]李君,王攀,孫雁飛,王浩云.P2P業務流量識別、分析和控制研究[J].計算機工程,2006年6月.
[4]陳海軍,李仁發,楊磊.基于Linux內核擴展模塊的P2P流量控制[J].計算機工程,2007年1月.
[5]中華人民共和國通信行業標準—DPI設備測試方法[S].
[6]米淑云.IP網絡流量監控系統的研究與實現[D].北京:北京郵電大學,2009.
[7]華為技術有限公司.Quidway SIG業務監控網管[S].2008:1-6