国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于Netfilter的P2P流量控制系統(tǒng)的實(shí)現(xiàn)

2015-09-28 06:11:05楊軒
現(xiàn)代計(jì)算機(jī) 2015年8期
關(guān)鍵詞:鉤子數(shù)據(jù)包端口

楊軒

(四川大學(xué)計(jì)算機(jī)學(xué)院,四川 610095)

一種基于Netfilter的P2P流量控制系統(tǒng)的實(shí)現(xiàn)

楊軒

(四川大學(xué)計(jì)算機(jī)學(xué)院,四川610095)

0 引言

近年,伴隨著P2P技術(shù)和應(yīng)用的快速發(fā)展,在整體互聯(lián)網(wǎng)的流量中,P2P流量已經(jīng)占據(jù)了其中的很大一部分[1],這不僅對(duì)互聯(lián)網(wǎng)資源帶來負(fù)擔(dān),同時(shí)也對(duì)其他資源如通信資源帶來了不便。因此,如何對(duì)P2P的流量進(jìn)行控制成為了日益受到關(guān)注的問題?,F(xiàn)有的流量控制技術(shù)核心是流量識(shí)別,最初的識(shí)別方式是以細(xì)分的形態(tài)識(shí)別出每條流,然后針對(duì)性地進(jìn)行控制,但是由于通信方式越來越復(fù)雜,以及應(yīng)用通信的端口不確定性增加,因此這樣的識(shí)別方法已經(jīng)無法滿足當(dāng)前的需要。近年來,學(xué)者提出了基于應(yīng)用層特征的識(shí)別方法和基于流的行為特征的識(shí)別方法,這兩種方式各有優(yōu)點(diǎn),前者的細(xì)分程度較高后者的效率較高,但也各有缺點(diǎn),前者對(duì)加密協(xié)議無法識(shí)別,而后者資源消耗較大。

從2003年開始,學(xué)者J.Early等提出了通過統(tǒng)計(jì)TCP流每個(gè)包到達(dá)時(shí)間、包平均值等特征來識(shí)別一些主流協(xié)議,2004年,Subhabrata Sen等提出基于應(yīng)用簽名的P2P流量檢測方法,是深層數(shù)據(jù)包檢測方法的一種。2005年,Thomas Karagiannis等首次提出了基于傳輸層的協(xié)議識(shí)別思路,從2007年開始,有學(xué)者提出基于Netfilter框架進(jìn)行P2P流量識(shí)別的觀點(diǎn),此后不斷有學(xué)者進(jìn)行基于Netfilter框架的研究,2012年,有學(xué)者研究了基于Netfilter的防火墻和連接跟蹤機(jī)制。

針對(duì)上面的問題,本文設(shè)計(jì)并實(shí)現(xiàn)了一種保留傳統(tǒng)識(shí)別方法的基礎(chǔ)上,結(jié)合對(duì)流量特征的分析,基于Linux內(nèi)核的Netfilter模塊,利用其可擴(kuò)展的特性,設(shè)計(jì)一種P2P流量進(jìn)行混合識(shí)別的系統(tǒng),并利用TC控制實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)流量控制,從而達(dá)到對(duì)網(wǎng)絡(luò)資源合理利用的目的。

1 體系結(jié)構(gòu)

1.1Netfilter框架

本系統(tǒng)實(shí)現(xiàn)的流量識(shí)別和控制功能基于Linux的Netfilter框架,因此簡單介紹一下Netfilter框架。Linux系統(tǒng)從內(nèi)核2.4版本開始新增Netfilter結(jié)構(gòu)[2],它是一種獨(dú)立的防火墻底層模塊,對(duì)不同類型的網(wǎng)絡(luò)定義了鉤子節(jié)點(diǎn),由一系列基于協(xié)議棧的鉤子所組成,內(nèi)核模塊可以對(duì)一個(gè)或者多個(gè)鉤子點(diǎn)注冊掛載鉤子函數(shù)。例如對(duì)IP協(xié)議,定義5個(gè)鉤子函數(shù)[3]:當(dāng)數(shù)據(jù)進(jìn)入系統(tǒng)后,先通過第一個(gè)掛載點(diǎn)NF_IP_PRE_ROUTING注冊的鉤子函數(shù)進(jìn)行處理。如果該數(shù)據(jù)包是發(fā)送給本機(jī),則通過NF_IP_LOCAL_IN的函數(shù)處理進(jìn)入本地用戶空間的數(shù)據(jù)包,然后傳遞到上層協(xié)議,如果該數(shù)據(jù)包需要轉(zhuǎn)發(fā),則通過NF_IP_FORWARD的函數(shù)處理。對(duì)于需要發(fā)送到網(wǎng)絡(luò)層的數(shù)據(jù)包,要經(jīng)過NF_IP_POST_ROUTING的函數(shù)處理以后,才可以發(fā)送到網(wǎng)絡(luò)層。對(duì)于網(wǎng)絡(luò)層以上的數(shù)據(jù)包需通過NF_IP_LOCAL_OUT的函數(shù)處理后,再進(jìn)行路由選擇,然后由NF_IP_POST_ROUTING函數(shù)處理。

1.2系統(tǒng)框架

本系統(tǒng)的設(shè)計(jì)是基于Linux 2.6內(nèi)核版本的設(shè)計(jì),在Netfilter的框架下,識(shí)別出P2P流量,根據(jù)對(duì)流量限制的具體需求,對(duì)P2P流量進(jìn)行控制,系統(tǒng)架構(gòu)如圖1所示。

圖1 系統(tǒng)架構(gòu)

1.3系統(tǒng)模塊

系統(tǒng)包含Web頁面配置模塊,流量識(shí)別模塊和流量控制模塊共三個(gè)模塊。其中配置模塊功能是讓用戶指定限制P2P應(yīng)用的最大帶寬,流量識(shí)別模塊利用現(xiàn)有的幾種流量識(shí)別方法混合式識(shí)別,流量控制模塊則根據(jù)用戶的配置限制P2P應(yīng)用的帶寬,如未指定則根據(jù)系統(tǒng)默認(rèn)值進(jìn)行限制。

2 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2.1流量識(shí)別模塊

系統(tǒng)的流量識(shí)別模塊主要采用混合式識(shí)別方式,主要包括端口識(shí)別、基于P2P流連接特性的識(shí)別和協(xié)議特征串的匹配識(shí)別。本系統(tǒng)的設(shè)計(jì)原則為保證對(duì)P2P流量識(shí)別正確識(shí)別的同時(shí),降低系統(tǒng)對(duì)正常網(wǎng)絡(luò)流量的誤判,避免造成對(duì)正常服務(wù)網(wǎng)絡(luò)的影響。當(dāng)流入流量進(jìn)入系統(tǒng)后,通過端口識(shí)別過濾之后的流量再進(jìn)行P2P應(yīng)用特性連接識(shí)別,在這部分,本系統(tǒng)設(shè)置了一個(gè)比較高的判斷閾值,以此降低系統(tǒng)對(duì)非P2P流量的誤判。剩余的流量再進(jìn)入下一個(gè)判斷過程,特征協(xié)議串的識(shí)別。流量通過整個(gè)系統(tǒng)的識(shí)別之后,最后的識(shí)別結(jié)果中仍然可能會(huì)有少量的未識(shí)別的P2P流量,但這少量的未識(shí)別的流量對(duì)正常的網(wǎng)絡(luò)服務(wù)不會(huì)造成太大的影響。因此這樣的設(shè)計(jì)確保了系統(tǒng)的識(shí)別效率較高,且不影響正常的網(wǎng)絡(luò)服務(wù)流量。其流程如下圖2所示。

圖2 流量識(shí)別流程圖

(1)端口識(shí)別。盡管現(xiàn)階段的很多新的P2P應(yīng)用涌現(xiàn),而且技術(shù)也越來越先進(jìn),但還是有部分實(shí)際的P2P應(yīng)用采取默認(rèn)端口的方式,并且端口識(shí)別的速度快,實(shí)時(shí)性也好,因此可以把默認(rèn)端口的識(shí)別方式作為一種識(shí)別手段,首先過濾出一部分P2P流量,也由于一些其他的應(yīng)用流量可以利用端口技術(shù)來過濾點(diǎn),因此本系統(tǒng)仍然保留端口識(shí)別技術(shù)。

(2)P2P應(yīng)用連接特性識(shí)別。目前的P2P網(wǎng)絡(luò)主要混合結(jié)構(gòu)和多服務(wù)器結(jié)構(gòu),這種結(jié)構(gòu)的P2P網(wǎng)絡(luò)有明顯的TCP和UDP鏈接特性。當(dāng)一個(gè)連接建立的時(shí)候,目的IP地址會(huì)向多個(gè)服務(wù)器發(fā)起建立連接的請求。另外由于P2P網(wǎng)絡(luò)節(jié)點(diǎn)的隨時(shí)可加入或者離開的特性,導(dǎo)致會(huì)有很多的TCP或者UDP包用來保證網(wǎng)絡(luò)連接的可靠性,因此可以根據(jù)TCP或者UDP的連接特性來識(shí)別P2P流量[5]。盡管還有其他的應(yīng)用也會(huì)使用TCP 和UDP傳輸協(xié)議,但不同點(diǎn)在于P2P應(yīng)用會(huì)大量并發(fā)地建立TCP或者UDP數(shù)據(jù)流,因此可以將其和其他應(yīng)用區(qū)別開[6]。定義如下幾個(gè)概念:不同目的端口數(shù)(dd_ port),不同源端口數(shù)(ds_port),不同目的地?cái)?shù)目(dd_number),與客戶端相連接的外部對(duì)等點(diǎn)數(shù)目n。TCP和UDP流量可以根據(jù)幾個(gè)變量之間的關(guān)系進(jìn)行判斷,判斷依據(jù)是針對(duì)一個(gè)時(shí)間段內(nèi)的應(yīng)用連接特性,對(duì)TCP流量:若某1分鐘源IP向7個(gè)以上的目的IP發(fā)送了SYN包,則認(rèn)為這個(gè)是P2P連接[7];對(duì)UDP流量,若10秒內(nèi)UDP的數(shù)量大于3,則認(rèn)為是P2P連接[7]。為了降低系統(tǒng)對(duì)正常網(wǎng)絡(luò)流量的誤判,避免造成對(duì)正常服務(wù)網(wǎng)絡(luò)的影響,本系統(tǒng)對(duì)判斷閾值進(jìn)行了提高,具體是將TCP流量的判斷標(biāo)準(zhǔn)提高到1分鐘源IP向目的IP發(fā)送SYN包的數(shù)量由7個(gè)提高到10個(gè)。UDP流量的判斷條件是將10秒內(nèi)的UDP數(shù)量由3個(gè)提高到5個(gè),以此保證系統(tǒng)的識(shí)別正確率。

對(duì)于TCP流量滿足如下公式:

對(duì)于UDP流量滿足如下公式:

(3)特征協(xié)議串識(shí)別。在流量傳輸一段時(shí)間后,根據(jù)該流量傳輸過程中的特性統(tǒng)計(jì)分析后判斷是否屬于P2P流量。對(duì)未能判斷出來的流量,進(jìn)行特征協(xié)議串的匹配識(shí)別,本系統(tǒng)采用BF(Brute Force)算法。BF算法是一種簡單的單模式串匹配算法,假定pattern是一長度為n的字符串,希望被確定的pattern出現(xiàn)在字符串中最左的位置為i,則BF算法是通過判斷字符串中的每個(gè)字符和由該字符開始的n個(gè)字符串是否和pattern匹配。通過一個(gè)二次循環(huán)實(shí)現(xiàn),其中內(nèi)層循環(huán)檢測當(dāng)前需要被驗(yàn)證的字符串與特征串相同長度的窗口文本是否相匹配。而外循環(huán)則移動(dòng)窗口,每次都向右移動(dòng)一個(gè)位置,然后遍歷文本字符串。BF算法的C語言描述如下:

BF算法的實(shí)現(xiàn)在Netfilter的負(fù)載函數(shù)匹配中,利用其中的函數(shù)int string_match_offset()。本算法對(duì)常見的P2P協(xié)議例如BT、Gnutella、eMule可用。

2.2流量控制模塊

對(duì)于識(shí)別出來的P2P流量,按照用戶設(shè)置或者系統(tǒng)默認(rèn)的帶寬進(jìn)行限制。用戶可設(shè)置帶寬的大小,可指定限制固定IP的流量。流量控制模塊基于Linux內(nèi)核的Netfilter模塊擴(kuò)展的,例如限制固定IP流量的功能是在Netfilter的limit模塊中實(shí)現(xiàn)。在流量控制的過程中,使用TC模塊來實(shí)現(xiàn)功能。TC處理是在數(shù)據(jù)包輸出隊(duì)列上,結(jié)合Netfilter中的處理流程如圖3所示。

圖3 Netfilter流量處理流程

TC流量控制的步驟有三個(gè),建立隊(duì)列、建立分類和建立過濾器。TC將流經(jīng)網(wǎng)絡(luò)接口的數(shù)據(jù)放入隊(duì)列中,然后通過過濾器把數(shù)據(jù)包放在不同的分類中,最后再通過控制每個(gè)分類隊(duì)列數(shù)據(jù)包發(fā)送的速率限制每個(gè)分類的帶寬。其流程如圖4所示。

圖4 TC流量控制流程

具體來講本系統(tǒng)使用的是HTB(Hierarchical Token Bucket)來控制流量,對(duì)于已經(jīng)識(shí)別出來的P2P流量,由iptable加上Mark值,作出標(biāo)記,當(dāng)這些帶上標(biāo)記值的P2P數(shù)據(jù)包經(jīng)過TC中的過濾器時(shí),過濾器進(jìn)行匹配,匹配后的數(shù)據(jù)包根據(jù)不同優(yōu)先級(jí)分別放入不同的子分類隊(duì)列中等待帶發(fā)送。最后TC根據(jù)不同的隊(duì)列策略將數(shù)據(jù)發(fā)送到網(wǎng)卡,從而達(dá)到流量控制的功能。

2.3Web配置模塊

Web配置模塊主要功能是讓用戶根據(jù)個(gè)人的需要調(diào)整流量限制的一些策略。在系統(tǒng)默認(rèn)情況下,系統(tǒng)將帶寬大小限制在2M。如果用戶想根據(jù)特定的限制要求進(jìn)行固定IP帶寬的限制,只需進(jìn)行簡單的幾個(gè)配置。用戶通過Web界面填寫配置策略或選擇默認(rèn)設(shè)置,訪問到Web服務(wù)器,通過socket接口和流量控制系統(tǒng)的Linux服務(wù)器相連。在Linux系統(tǒng)服務(wù)器上配置或采取默認(rèn)設(shè)置的流量控制模式,進(jìn)而進(jìn)行流量控制。

3 結(jié)語

本系統(tǒng)綜合了端口、P2P流連接特性和協(xié)議特征串識(shí)別等流量識(shí)別方法對(duì)P2P流量進(jìn)行識(shí)別,其中端口識(shí)別的方法主要是過濾一些非P2P流量,連接特性識(shí)別方法設(shè)置了比較高的閾值,減少識(shí)別過程中的錯(cuò)誤,最后通過協(xié)議特征識(shí)別剩下的流量,并利用Netfilter框架對(duì)識(shí)別后的流量進(jìn)行限制。流量連接特性識(shí)別的過程由于需要統(tǒng)計(jì)一定數(shù)量的數(shù)據(jù)包特征,所以識(shí)別過程會(huì)有一段時(shí)間延遲。

[1]P2P流量識(shí)別方法介紹.http://wenku.baidu.com/link?url=R-D4z5b3o01V9LWo7K199pDXnc8Xuls5HQXKvL8UP0j5_ebtTMEtd8eF-slj30IhOF3G8csoHJvQXF-fxHM6Wlv2hb8tgEZeIXhYXJZaODBxm

[2]Linux內(nèi)核官方文檔.https://www.kernel.org/

[3]楊剛,陳蜀宇.Linux中基于Netfilter/Iptables的防火墻研究.計(jì)算機(jī)工程與設(shè)計(jì)[J].北京,2007

[4]樂艷輝,李之棠,柳斌.基于Netfilter的P2P流量測量系統(tǒng).計(jì)算機(jī)應(yīng)用研究[J].成都,2008

[5]劉強(qiáng).P2P流量監(jiān)控技術(shù)研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2007

[6]P2P Communication Across Middleboxes[R].http://www.ppcn.net/n1475c38.aspx

[7]王韜.基于Linux路由器的P2P流量識(shí)別控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].蘇州,蘇州大學(xué),2010

Flow Recognition;Flow Control;Netfilter;P2P

Implementation of P2P Traffic Control System Based on Netfilter

YANG Xuan
(College of Computer Science,Sichuan University,Chengdu 610095)

1007-1423(2015)08-0077-04

10.3969/j.issn.1007-1423.2015.08.019

楊軒(1987-),男,四川達(dá)州人,碩士研究生,研究方向?yàn)榫W(wǎng)絡(luò)安全

2015-02-10

2015-03-04

針對(duì)P2P流量在互聯(lián)網(wǎng)的整個(gè)流量所占有的比例很高的情況,為了更加合理地利用互聯(lián)網(wǎng)流量資源,提出一種基于Netfilter的P2P流量控制系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。綜合端口識(shí)別,P2P應(yīng)用連接特性識(shí)別和特征協(xié)議串識(shí)別,利用Netfilter擴(kuò)展功能實(shí)現(xiàn)系統(tǒng)的識(shí)別過程,并利用TC對(duì)流量進(jìn)行限制。

流量識(shí)別;流量控制;Netfilter;P2P

In view of this situation that P2P flow has a high share of the whole Internet flow,to rational use of the Internet resources,designs and realizes a P2P flow control system.Makes an integration of port identification,P2P application connect feature identification and protocol string recognition identification,and uses Netfilter extensions to realize the recognition process,then uses TC to control the flow.

猜你喜歡
鉤子數(shù)據(jù)包端口
一種端口故障的解決方案
誰和誰好
快樂語文(2018年15期)2018-11-29 10:23:17
SmartSniff
端口阻塞與優(yōu)先級(jí)
幸福的一家
《脈望館鈔校本古今雜劇》穿關(guān)之“鉤子困帶”考
中華戲曲(2017年2期)2017-02-16 06:53:24
精鉤子
金山(2016年5期)2016-05-30 14:18:17
初識(shí)電腦端口
電腦迷(2015年6期)2015-05-30 08:52:42
生成樹協(xié)議實(shí)例探討
基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
革吉县| 津南区| 桐庐县| 鄂州市| 罗平县| 鲁山县| 柯坪县| 茂名市| 正宁县| 广宁县| 怀来县| 夏邑县| 永川市| 宽城| 平塘县| 皋兰县| 莫力| 洛浦县| 东乌| 喀喇| 搜索| 广南县| 恩施市| 清流县| 长春市| 长泰县| 汾阳市| 建水县| 鄂托克前旗| 乌什县| 绍兴市| 镇远县| 闵行区| 宝鸡市| 仙游县| 揭西县| 平遥县| 繁峙县| 东台市| 兰溪市| 浦东新区|