摘 要:以BitTorrent為代表的對等網(wǎng)絡(luò)(P2P)應(yīng)用已經(jīng)成為最流行的網(wǎng)絡(luò)信息共享工具,測量與分析對等網(wǎng)絡(luò)的流量特性對于認(rèn)識(shí)和提升該網(wǎng)絡(luò)的性能具有重要的意義,如何準(zhǔn)確地在Internet流量中識(shí)別出BT流量成為此研究的關(guān)鍵問題。在對BitTorrent的流量識(shí)別分析過程中,就基于應(yīng)用層特征的流量識(shí)別方法進(jìn)行了研究,并采用VC++工具在WinPcap網(wǎng)絡(luò)工具包的基礎(chǔ)上,實(shí)現(xiàn)了BT流量的測量系統(tǒng),并根據(jù)實(shí)驗(yàn)結(jié)果驗(yàn)證了此系統(tǒng)的有效性。
關(guān)鍵詞:BitTorrent;P2P; VC++;WinPcap; 測量系統(tǒng)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):1004373X(2008)1912303
Realization of BitTorrent Flow Measurement System
Based on Characteristic of Application Layer
LI Bo1,2,CHEN Qianbin1
(1.College of Communication Information Engineering,Chongqing University of Posts and Telecommunications,Chongqing,400065,China;
2.Network Information Management Center,Chongqing University of Posts and Telecommunications,Chongqing,400065,China)
Abstract:BitTorrent has become the most popular network information sharing tool,which is as a representative of the P2P applications.Measuring and analysing the traffic characterictics of P2P network has great significance in realizing and improving performance of the network.It becomes a key problem that how to indentify BT flow from Internet traffic.During in the course of studying in identify BT flow,the recognition methods based on the application layer characteristic is researched.BT flow measurement system based on VC++and WinPcap is implemented.At last,this paper shows the effectiveness of this system based on some experimental results.
Keywords:BitTorrent;P2P;VC++;WinPcap;measurement system
1 引 言
隨著Internet的發(fā)展,各種應(yīng)用服務(wù)的出現(xiàn),網(wǎng)絡(luò)流量呈現(xiàn)出與以往不同的流量特性。通過對網(wǎng)絡(luò)流量過程關(guān)鍵特性的準(zhǔn)確描述和研究對網(wǎng)絡(luò)性能管理、擁塞管理和設(shè)計(jì)高性能網(wǎng)絡(luò)協(xié)議都有重要意義。而近來以BitTorrent為代表的對等網(wǎng)絡(luò)(Peer-to-Peer Network,P2P)應(yīng)用已經(jīng)成為最流行的網(wǎng)絡(luò)信息共享工具,測量與分析該網(wǎng)絡(luò)的流量特性對于認(rèn)識(shí)和提升對等網(wǎng)絡(luò)的性能將是非常有意義的。本文對BitTorrent協(xié)議進(jìn)行了分析,提出了一種基于應(yīng)用層特征流量測量系統(tǒng)。
2 BitTorrent協(xié)議分析
一個(gè)完整的BitTorrent系統(tǒng)包括如下3個(gè)部分:
tracker服務(wù)器 用于和peers保持通信的服務(wù)器,搜集各個(gè)BitTorrent節(jié)點(diǎn)的信息,并為每個(gè)節(jié)點(diǎn)返回相應(yīng)的節(jié)點(diǎn)信息列表,幫助節(jié)點(diǎn)互相發(fā)現(xiàn)對方。
peers 包括seeds和leechers,seeds指已經(jīng)下載完文件的節(jié)點(diǎn),只上傳,不再下載;leechers指只下載了部分文件的節(jié)點(diǎn),邊下載邊上傳。
web服務(wù)器 用于信息的發(fā)布。
BitTorrent系統(tǒng)中存在如下兩種通信協(xié)議:
(1) BitTorrent節(jié)點(diǎn)與tracker服務(wù)器通信協(xié)議
一個(gè)BitTorrent節(jié)點(diǎn)在下載過程中,會(huì)不斷地與Tracker服務(wù)器進(jìn)行通信,上傳自己的信息,并獲取其他BitTorrent節(jié)點(diǎn)的信息,這種通信是通過HTTP協(xié)議進(jìn)行的。節(jié)點(diǎn)把狀態(tài)信息放在HTTP協(xié)議的GET命令的參數(shù)中傳遞給tracker,收到節(jié)點(diǎn)請求后,tracker返回相應(yīng)的節(jié)點(diǎn)信息列表。
(2) 節(jié)點(diǎn)之間的對等協(xié)議
對等協(xié)議控制BitTorrent節(jié)點(diǎn)之間的文件傳輸,它是基于TCP協(xié)議的。對等傳輸包含兩個(gè)階段:握手階段和數(shù)據(jù)傳送階段。
在TCP連接建立后,發(fā)起連接節(jié)點(diǎn)A首先向B發(fā)送一個(gè)握手信息。握手信息格式及各字段含義如圖1所示。
pstrlen:1字節(jié),指Pstr的長度,即19。
pstr:19字節(jié),字符串“BitTorrent protocol”。
reserved:8字節(jié),留給擴(kuò)展協(xié)議使用,一般都是0。
info hash:20字節(jié),元信息文件中的info值。
peer id:20字節(jié),發(fā)送方的peer id。
節(jié)點(diǎn)B收到握手信息后,回應(yīng)自己的peer id,BitTorrent的會(huì)話即建立。經(jīng)過握手后,兩個(gè)節(jié)點(diǎn)之間就開始互相發(fā)送消息,進(jìn)入數(shù)據(jù)傳輸階段。
3 流量測量系統(tǒng)的實(shí)現(xiàn)
BitTorrent網(wǎng)絡(luò)中主要的流量是節(jié)點(diǎn)與節(jié)點(diǎn)之間傳送數(shù)據(jù)產(chǎn)生的流量,節(jié)點(diǎn)與tracker服務(wù)器之間的通信相對來講可以忽略不計(jì)。因此本文主要針對peer與peer之間的流量進(jìn)行測量研究。
3.1 流量測量系統(tǒng)的總體流程圖
圖2描述了流量測量系統(tǒng)的基礎(chǔ)結(jié)構(gòu),它主要由以下幾個(gè)部分組成:
數(shù)據(jù)采集模塊 基于WinPcap技術(shù)捕獲網(wǎng)絡(luò)數(shù)據(jù)包。
協(xié)議識(shí)別模塊 利用BT協(xié)議的特征,過濾出相應(yīng)的BT流量。
統(tǒng)計(jì)分析模塊 按照已設(shè)定的時(shí)間尺度,如間隔1 s,統(tǒng)計(jì)出每秒到達(dá)的BT流量的packet數(shù)和byte數(shù)。
3.2 數(shù)據(jù)采集模塊
本系統(tǒng)采用WinPcap技術(shù)捕獲網(wǎng)絡(luò)數(shù)據(jù)包。WinPcap是由伯克利分組捕獲庫派生而來的分組捕獲庫,它是在Windows操作平臺(tái)上來實(shí)現(xiàn)對底層包的截取過濾。WinPcap為用戶級(jí)的數(shù)據(jù)包提供了Windows下的一個(gè)平臺(tái)。WinPcap是BPF(Berkeley Packet Filter)模型和Libpcap函數(shù)庫在 Windows平臺(tái)下網(wǎng)絡(luò)數(shù)據(jù)包捕獲和網(wǎng)絡(luò)狀態(tài)分析的一種體系結(jié)構(gòu),這個(gè)體系結(jié)構(gòu)是由一個(gè)內(nèi)核級(jí)的數(shù)據(jù)包過濾器,一個(gè)底層動(dòng)態(tài)鏈接庫(Packet.dll)和一個(gè)高層,依賴于系統(tǒng)的庫(Wpcap.dll)組成。Packet.dll是對這個(gè)BPF驅(qū)動(dòng)程序進(jìn)行訪問的API接口,同時(shí)它有一套符合Libpcap接口(UNIX下的捕獲函數(shù)庫)的函數(shù)庫。
WinPcap的結(jié)構(gòu)圖如圖3所示。
底層的包捕獲驅(qū)動(dòng)程序?qū)嶋H為一個(gè)協(xié)議網(wǎng)絡(luò)驅(qū)動(dòng)程序,稱為NPF(Netgroup Packet Filter),這部分內(nèi)容非常依賴于系統(tǒng),運(yùn)行在操作系統(tǒng)內(nèi)核中,能直接訪問網(wǎng)絡(luò)接口驅(qū)動(dòng),通過對 NDIS 中函數(shù)的調(diào)用為Windows系統(tǒng)提供一種類似于UNIX系統(tǒng)下Berkeley Packet Filter的捕獲和發(fā)送原始數(shù)據(jù)包的能力。
Packet.dll為win32平臺(tái)提供了一個(gè)公共的接口。不同版本的Windows系統(tǒng)都有自己的內(nèi)核模塊和用戶層模塊。Packet.dll用于解決這些不同。調(diào)用Packet.dll的程序可以運(yùn)行在不同版本的Windows平臺(tái)上,而無需重新編譯。
第三個(gè)模塊 Wpcap.dll是不依賴于操作系統(tǒng)的,它提供了更加高層、抽象的函數(shù)。
Packet.dll和Wpcap.dll:Packet.dll直接映射了內(nèi)核的調(diào)用。Wpcap.dll提供了更加友好、功能更加強(qiáng)大的函數(shù)調(diào)用。WinPcap的優(yōu)勢提供了一套標(biāo)準(zhǔn)的抓包接口,與Libpcap兼容,可使得原來許多UNIX平臺(tái)下的網(wǎng)絡(luò)分析工具快速移植過來便于開發(fā)各種網(wǎng)絡(luò)分析工具,充分考慮了各種性能和效率的優(yōu)化,包括對于NPF內(nèi)核層次上的過濾器支持,支持內(nèi)核態(tài)的統(tǒng)計(jì)模式,提供了發(fā)送數(shù)據(jù)包的能力。
3.3 協(xié)議識(shí)別模塊
通過BitTorrent對等協(xié)議的分析可以看出:BitTorrent節(jié)點(diǎn)之間的連接始終是以一個(gè)固定長度的握手消息開始的,因此提取如下特征值識(shí)別BitTorrent協(xié)議:
(1) TCP載荷的第一個(gè)字節(jié)是19(0x13)。
(2) 緊接著19個(gè)字節(jié)為字符串“BitTorrent protocol”
識(shí)別成功后,說明這個(gè)TCP連接上的流量是BitTorrent,記錄能惟一認(rèn)定這個(gè)連接的四元組信息到一個(gè)數(shù)據(jù)結(jié)構(gòu)中:源IP、源端口、目的IP和目的端口。之后,再碰到這個(gè)四元組的報(bào)文將無需進(jìn)行特征信息的識(shí)別,而直接可認(rèn)定為BitTorrent流量。直到捕獲到這個(gè)連接結(jié)束的標(biāo)志。
在本系統(tǒng)中,采用紅黑樹算法識(shí)別BitTorrent數(shù)據(jù)流量,定義如圖4所示結(jié)構(gòu)體用于保存通過識(shí)別BitTorrent握手消息獲得的源IP、源端口、目的IP及目的端口信息,并將該信息插入到紅黑樹上,后面收到TCP消息后根據(jù)源IP、源端口、目的IP及目的端口信息查找紅黑樹,如果找到,則證明該條消息是BitTorrent數(shù)據(jù)流量,識(shí)別過程如圖5所示。
3.4 統(tǒng)計(jì)分析模塊
該模塊主要基于協(xié)議識(shí)別模塊的基礎(chǔ)上,實(shí)現(xiàn)對所識(shí)別BT流量的統(tǒng)計(jì)分析功能并通過表格或圖形的方式顯示統(tǒng)計(jì)結(jié)果。例如:
(1) 總體統(tǒng)計(jì):統(tǒng)計(jì)采集時(shí)間段內(nèi)的總流量、BT流量、總包數(shù)、BT包數(shù)量;
(2) BT包長度的統(tǒng)計(jì):統(tǒng)計(jì)不同長度的BT包在采集時(shí)間段內(nèi)的分布情況;
(3) 按照用戶自定義的統(tǒng)計(jì)時(shí)間粒度統(tǒng)計(jì)不同時(shí)間段內(nèi)的各項(xiàng)統(tǒng)計(jì)指標(biāo),例如總流量、BT流量、總包數(shù)、BT包數(shù)。
在實(shí)現(xiàn)基礎(chǔ)的統(tǒng)計(jì)功能后,可根據(jù)基礎(chǔ)統(tǒng)計(jì)結(jié)果進(jìn)行二次統(tǒng)計(jì)以獲得所需要的各項(xiàng)指標(biāo)。統(tǒng)計(jì)算法如圖6所示。
4 試驗(yàn)分析
為了驗(yàn)證測量方法的準(zhǔn)確性,使用了端口映射法與本方法進(jìn)行對比。端口映射法的測量過程如下:
(1) 采用目前比較流行的抓包工具Wiresharke捕獲TCP 10447端口的數(shù)據(jù)包(10447為一BT Peer的默認(rèn)監(jiān)聽端口)。
(2) 利用Wiresharke自帶的功能對捕獲的數(shù)據(jù)包進(jìn)行統(tǒng)計(jì)。
測量方法:從校內(nèi)某Tracker服務(wù)器上下載4個(gè)大小不同的文件,用兩種方法測量兩個(gè)BT節(jié)點(diǎn)下載完每個(gè)文件后的數(shù)據(jù)總量。
從表1可以看出,在局域網(wǎng)這個(gè)特定的環(huán)境中,兩種方法的測量結(jié)果基本是一致的,這表明提取的BitTorrent特征值是準(zhǔn)確的,可以惟一標(biāo)識(shí)BitTorrent流量。
5 結(jié) 語
由于現(xiàn)在的BitTorrent都采用了動(dòng)態(tài)端口技術(shù),所以在實(shí)際的網(wǎng)絡(luò)中采用端口映射法進(jìn)行測量是不準(zhǔn)確的。本文基于BitTorrent協(xié)議的特征提出了一種BT流量的測量系統(tǒng),本系統(tǒng)的功能主要定位在BT流量的采集,為進(jìn)一步分析BT的流量特征以及提出相應(yīng)的網(wǎng)絡(luò)流量模型起到了關(guān)鍵性作用。
參考文獻(xiàn)
[1]劉剛,方濱興,胡銘曾,等.BitTorrent 流量的捕獲方法及自相似性的評價(jià)[J].計(jì)算機(jī)應(yīng)用研究,2006,23(5):205-206,209.
[2]David,Erman Dragos.Ilie BitTorrent Session Characteristics and Models.
[3]程磊,陳鳴,周駿.對BitTorrent通信協(xié)議的分析與檢測[J].電信科學(xué),2006,22(12):46-50.
[4]柳斌,李之棠,李戰(zhàn)春,等.一種基于Netfilter的BitTorrent流量測量方法[J].計(jì)算機(jī)科學(xué),2007,34(4):38-41.
[5]周文莉,雷振明.BitTorrent文件共享系統(tǒng)的流量模型與文件評估方法[J].計(jì)算機(jī)應(yīng)用,2008,28(2):367-370.
[6]Saroiu S,Gummadi PK,Gribble SD.A Measurement Study of Peer to Peer File Sharing Systems.In:Proc.of the Multimedia Computing and Networking 2002 (MMCN 2002).2002.156.170.http://www.cs.washington.edu/homes/gribble/papers/mmcn.pdf.
[7]Wang S J.Analyzing Peer to Peer Traffic across Large Networks.In:Proc.of the 2nd ACM SIGCOMM Workshop on Internet Measurement Workshop.2002.
[8]S Spatscheck O Wang DM.Accurate,Scalable in-network Identification of P2P Traffic Using Application Signatures.In: Proc of the 13th Int′l WWW Conf.,2004.
[9]Karagiannis T,Broido A,F(xiàn)aloutsos M,et al.Transport Layer Identification of P2P Traffic.In: Proc.of the 4th ACM SIGCOMM Conf.on Internet Measurement,2004:121-134.
[10]李江濤,姜永鈴.P2P流量識(shí)別與管理技術(shù)[J].電信科學(xué),2005,49(3):17-20.
作者簡介
李 波 女,1978年出生,河北唐山人,工程師,2006級(jí)研究生。主要從事P2P網(wǎng)絡(luò)研究。
陳前斌 男,1967年出生,教授,博士。