輔導:解析-P2P流量識別與監(jiān)測

字號:

P2P (Peer to Peer)是近年來出現(xiàn)的一種新的網(wǎng)絡(luò)應用,它的出現(xiàn)開啟了網(wǎng)絡(luò)邊緣未使用的資源。當前隨著硬件價格的不斷下降,作為客戶端的PC機已經(jīng)具有相當大的處理能力和存儲空間,然而這些資源在大部分時間都是處于閑置狀態(tài)。比如在當前Internet中流行的C/S配置模式中,用戶的PC機僅僅是被作為一個顯示網(wǎng)頁的工具。而P2P體系結(jié)構(gòu)則可以使用這些PC機分擔網(wǎng)絡(luò)中心的任務(wù)。上百萬個Internet用戶組合得到的處理能力將遠遠高于任何一個中心服務(wù)器的處理能力。除此以外,P2P體系結(jié)構(gòu)還具有開放性、可擴展性強等特點。所有這些使得P2P應用在短短幾年時間有了飛速的發(fā)展,其體系結(jié)構(gòu)也經(jīng)歷了由集中式服務(wù)器(Napster)到純分散式文件共享系統(tǒng)(Gnutella),再到部分分散式結(jié)構(gòu)(KazaA);由使用固定端口到使用動態(tài)端口進行數(shù)據(jù)傳輸;由使用獨特端口到與其他應用合用端口(如使用Web應用的80端口等);由明文傳輸?shù)竭M行數(shù)據(jù)加密傳輸?shù)茸兓^程。
    研究表明,盡管受版權(quán)等問題的困擾,當前P2P應用仍呈現(xiàn)快速增長的趨勢,并且變得越來越隱蔽[3]。P2P的飛速發(fā)展一方面豐富了網(wǎng)絡(luò)中的應用形式,但另一方面也帶來了許多負面的問題。如:P2P文件共享過程中的版權(quán)問題;P2P應用大量占用網(wǎng)絡(luò)帶寬的問題;以及P2P的流量模式對傳統(tǒng)網(wǎng)絡(luò)設(shè)計帶來的挑戰(zhàn)等,其中后者尤為網(wǎng)絡(luò)設(shè)計、管理人員所關(guān)注。我們知道,在Web應用流量占網(wǎng)絡(luò)流量主體時,由于Web流量的高度非對稱性(用戶鏈路的下行流量要遠遠高于其上行流量),大部分用戶接入方式如ADSL、Cable modem等都設(shè)計為下行帶寬遠高于上行帶寬。而在P2P應用中,由于所有主機都是對等的,因此其流量具有很大的對稱性。研究表明,P2P應用與Web應用上行流量與下行流量的比率分別為1:1.25和1:7,兩者差別將近6倍[5]。因此上述設(shè)計理念在當前P2P流量占主體的網(wǎng)絡(luò)狀況下已經(jīng)不再適應。
    由此可見,P2P應用對網(wǎng)絡(luò)性能具有很大的影響,例如對于一些ISP而言,文件共享流量約占其總流量的60%,另外企業(yè)網(wǎng)絡(luò)中大量出現(xiàn)的P2P流也會極大地影響網(wǎng)絡(luò)性能。因此無論從ISP的角度還是從企業(yè)網(wǎng)絡(luò)管理人員的角度,都希望能夠?qū)2P流量有效的識別出來,從而便于網(wǎng)絡(luò)的規(guī)劃與管理。對于一個企業(yè)而言,可以限定P2P流量不超過某個閾值,從而能夠為其他重要的應用提供一定程度上的QoS保證;或者為了網(wǎng)絡(luò)管理的需要,直接在內(nèi)部將P2P流量過濾掉。而對于ISP而言,可以在此基礎(chǔ)上對服務(wù)進行控制以及對用戶進行管理等。但是當前識別P2P的一個主要挑戰(zhàn)就是以一種可擴展的方式識別出P2P流量,同時不要求對所有的分組進行深層分組檢查(DPI, deep packet inspection)。
    1 P2P流量識別技術(shù)概述
    為了控制網(wǎng)絡(luò)P2P應用對帶寬的大量占用,必須首先對P2P流量進行有效地監(jiān)控,它涉及到下面幾個方面的問題:流量采集、流量識別以及流量控制。在其中,流量的采集與其他網(wǎng)絡(luò)監(jiān)測方式采用的技術(shù)完全一致,流量控制則取決不同的網(wǎng)絡(luò)管理策略,由網(wǎng)絡(luò)管理人員進行相應的設(shè)置,例如進行P2P流量限制或者完全過濾P2P流量等。因此,這里的關(guān)鍵部分是流量的識別操作。根據(jù)實現(xiàn)思想不同,可以將它分為多種類型,如基于分組分析、基于流分析等。其實現(xiàn)方式直接關(guān)系到整個監(jiān)控系統(tǒng)的實現(xiàn)效率以及系統(tǒng)的可用性。
    P2P應用從最初的采用固定端口發(fā)展到使用可變端口甚至使用其他應用的端口進行數(shù)據(jù)傳輸,在傳輸?shù)木唧w內(nèi)容方面也從使用明文傳輸發(fā)展到對傳輸數(shù)據(jù)進行加密處理,因此對P2P流量進行識別的技術(shù)也隨之經(jīng)歷了相應的變化過程。本文中我們主要針對四種典型的識別方法進行討論,包括端口識別法、應用層特征識別法、流量模式識別法以及連接模式識別法。對于這幾種技術(shù),我們將在第二節(jié)中進行詳細的討論。
    2 典型P2P流量識別技術(shù)
    2.1 端口識別法
    在P2P應用興起的早期,大多數(shù)應用使用的都是固定端口,例如,Gnutella使用6346-6347端口,BitTorrent使用6881-6889端口等。在這種情況下,對其流量的識別方式與識別普通應用分組的方式完全相同:在需要監(jiān)測的網(wǎng)絡(luò)中被動收集分組,然后檢查分組的運輸層首部信息,如果端口號與某些特定的端口號匹配,則說明該分組即為P2P流量分組,可以按照預設(shè)的動作對其進行處理。這種識別方法的優(yōu)點就是簡單易行,它不需要進行復雜的分組處理即可得出結(jié)論。在P2P應用出現(xiàn)的初期它顯得十分簡單有效,但是隨著P2P技術(shù)的發(fā)展,該方法逐漸變得不再適用,因此后來又出現(xiàn)了一些新的技術(shù)方案。
    2.2 應用層特征識別法
    與第一代使用固定端口進行數(shù)據(jù)傳輸?shù)腜2P應用不同,當前許多P2P應用都能夠通過使用隨機端口來掩蓋其存在,有些甚至可以使用HTTP, SMTP等一些協(xié)議使用的熟知端口,這增加了識別P2P流量的難度:簡單的通過分析分組首部的端口信息已經(jīng)無法識別出這類應用的存在。
    但是,每種應用的分組中都攜帶有特定的報文信息,例如,HTTP協(xié)議報文中會出現(xiàn)GET, PUT, POST等報文字樣。與之相類似,在各種P2P應用協(xié)議中也具有類似的信息。因此,人們提出了通過檢查分組內(nèi)部攜帶的負載信息進行分組識別的方法。文獻[2]提出了一種利用應用層特征的方式對P2P流量進行識別。在[2]中,作者首先對5種常見的P2P協(xié)議(KaZaA, Gnutella, eDonkey, DirectConnect以及BitTorrent)的特征進行了分析,提取出其特征信息,然后根據(jù)特征信息對收集到的分組進行模式匹配操作,從而判斷出該分組是否屬于某一類P2P應用分組。例如,Gnutella的連接建立報文具有下述格式
    GNUTELLA CONNECT/\n\n
    而應答報文格式如下
    GNUTELLA OK\n\n
    根據(jù)這些以及其他類似特征,即可判定相應報文是否為P2P應用報文,并由此確定某個流是否為P2P流。
    [2]中的實際測量結(jié)果表明,在大多數(shù)情況下,該方法能夠以低于5%的錯誤概率對分組進行識別。
    與第一種方法相比,上述方法能夠識別出使用可變端口的P2P流量(這正是當前P2P應用發(fā)展的一個趨勢),提高了其結(jié)果的準確性,例如在同樣情況下,用戶數(shù)據(jù)特征識別 法識別出的P2P流量是僅僅采用端口進行識別的方法得到結(jié)果的3倍[2]。但是分析不難發(fā)現(xiàn),這一方法存在下述一些問題:
    只能針對已知數(shù)據(jù)格式的P2P應用進行識別,這使得每出現(xiàn)一種新的P2P應用,就需要修改上述實現(xiàn),因而造成其擴展性不好;
    對用戶數(shù)據(jù)的檢查不符合Internet的基本原則,并且由于諸如法律、個人隱私等原因,檢查用戶數(shù)據(jù)在許多情況下幾乎是不可能的;
    由于需要對分組內(nèi)部數(shù)據(jù)進行全面的檢查分析,使得其實現(xiàn)效率不是很高;
    隨著技術(shù)的發(fā)展,一些P2P應用開始以密文方式進行數(shù)據(jù)傳輸,面對這種情況用戶數(shù)據(jù)識別方式則完全是無能為力。
    上述種種原因?qū)е掠脩魯?shù)據(jù)識別方法的通用性十分有限,而且,隨著P2P技術(shù)的發(fā)展,這種識別方法也會與通過固定端口進行識別的方法相類似,逐漸不適應實際的需要,因此有必要找到其他方法對P2P流進行較為精確的識別。
    分析端口識別法和應用層特征識別法可以發(fā)現(xiàn),盡管兩者的實現(xiàn)機理完全不同,但是其基本思想均是基于P2P應用的一些外在特征,并且這些外在特征是可以隱藏的,一旦出現(xiàn)上述情況,這些識別方法就不再適用。而且,上述兩種方法只能識別已知P2P協(xié)議的流量,一旦出現(xiàn)一種新的P2P應用,必須修改上述識別方法才能對其進行識別,這限制了它們的應用范圍。因此,為了能從根本上解決這些問題,必須分析P2P應用與其他一些諸如Web等應用的根本區(qū)別,然后利用這些本質(zhì)特征對其進行識別。下述兩種方法就分別從P2P應用的流量特征以及P2P網(wǎng)絡(luò)的連接模式特征著手對其進行了分析。