999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于IP的流量控制方法研究

2012-10-17 03:07:04高建行
網絡安全技術與應用 2012年3期

高建行

桂林理工大學信息科學與工程學院 廣西 541004

0 引言

隨著網絡應用范圍的不斷擴展,對網絡帶寬資源的要求也隨著網絡應用范圍的擴大而提高,網絡帶寬資源相對應用的需求總是有限的;另外不同的網絡應用業務對網絡的帶寬、可靠性和時延的要求也不一樣。因此如何合理的根據不同業務的具體需求分配帶寬并進行精確的流量控制已經成為目前網絡管理中一個迫切需要解決的問題。在目前的網絡通信中,大多數流量是以 TCP/IP協議為基礎的,即所有的通信是交互的,當接收端收到數據包后,總要發送一個確認消息以便發送方采取下一步動作。目前由于P2P業務的大量應用造成大量的帶寬被占用,更需要對網絡進行更精確的流量控制與帶寬分配。目前Linux平臺下以Netfilter和Iptables構建的Traffic Control下提供了多種流量控制策略,但由于其粒度過大無法提供精確的流量控制。

1 Linux 的Netfilter架構

Linux內核中的防火墻 Netfilter是用于擴展各類網絡服務的結構化的底層架構,主要包含:數據報過濾模塊、連接跟蹤模塊、網絡地址轉換模塊、數據報修改模塊和其它高級功能模塊。Netfilter的這種架構設計使得其生成的任何一個結構模塊比較容易擴展,因此一些新的特性的加入只需通過構建相應的內核模塊,并不需要對內核進行重啟,有利于擴展底層網絡的特性。Netfilter主要通過HOOK機制、Iptables基礎模塊來實現。其處理流程如下:數據報進入系統后,經IP校驗以后,先由第一個HOOK函數NF_IP_PRE_ROUTING進行處理;然后路由選擇模塊決定該數據報的去向,是否需要轉發或是留在本機;發給本機的數據報,則由HOOK函數NF_IP_LOCAL_IN處理后發送給上層協議;轉發的數據報,則交由 NF_IP_FORWARD的 HOOK函數處理;最后一個HOOK函數NF_IP_POST_ROUTING處理轉發的數據報后,再將其傳輸到網絡上。HOOK函數NF_IP_LOCAL_OUT將本地所產生的數據報處理之后,經路由選擇,由HOOK函數NF_IP_POST_ROUTING處理并轉發。

Linux內核模塊中的Netfilter擴展可以在5個HOOK函數中進行,如圖1所示。控制和監聽相應的數據包。在每個HOOK函數處,可以任意對數據報進行處理,且使每個HOOK函數的處理結果都反饋給Nefilter,以便Netfilter對數據報的類型標記、轉發路徑等進行相應處理。

圖1 Linux內核數據包處理流程

2 Netfilter中以IP為分類的流控存在的問題

Netfilter的Iptables提供了limit和hashlimit的模塊,用于匹配單位時間內通過的數據包的數量。其中hashlimit相比limit模塊多了hash功能,是有limit模塊擴展而來,可以根據IP地址進行數據包發送數量的限制。netfilter提供的limit和limit-burst兩個選項可以對發送數據包的數量進行限制,但是其存在如下問題。

2.1 無法精確的計算流量

由于 netfilter架構下的 limit模塊只是實現了一個match,用于計算單位時間內通過的數據包的數目。這是一種基于數據包數量的統計方法,而不是基于單位時間內的流量進行統計的,因此很難準確的統計流量。例如,限制某個IP地址單位時間內發50個數據包,然而這50個數據包有可能是50個mtu大小的數據包,也有可能是50個單字節大小載荷的數據包或者是TCP的ACK包,因此很難實現真正的流控。另外這個模塊僅僅實現了一個netfilter的match函數,其使用方法為:

沒有任何策略隊列對超發的流量進行緩存,只能簡單的丟棄。這種簡單的直接丟棄方式會影響突發流量較多的業務開展的質量。另外,這種方式需要把所有的要需要基于IP限速的IP地址全要作為filter的匹配規則顯示標示出來,會導致策略表的快速膨脹消耗大量的內存。

2.2 算法在不同平臺上存在不一致性

Netfilter的limit模塊限定的速度最快為每秒發送10000個數據包,即發送一個數據包耗費0.1毫秒。然而由于此算法是基于平臺宏HZ的,即系統的jiffy計數器。由于不同平臺的HZ是不一樣的,Linux 2.4內核中規定為100,ARM平臺也規定為100。例如在linux 2.6版本內核上規定其為1000,也就是說jiffy計數器在此平臺上沒1ms加1。由以上可得出,jiffy計數器的頻率在一定程度上影響著發包的數量。

3 擴展設計與算法改進

根據如圖1所示的數據包在Linux防火墻Netfilter的處理流程中,數據包進來時首先經過PREROUTING而流出的數據包經過 POSTROUTING。因此對于流入的數據包的控制,在NF_IP_PRE_ROUTING處的HOOK函數處進行控制,對于流出的數據包,在NF_IP_POST_ROUTING處的HOOK函數處進行控制,這樣能降低系統控制的成本。Netfilter的limit模塊目前支持對單位時間內發送和接收數據包的數量進行限制,我們可以通過修改limit模塊的實現來限制單位時間內所發送的數據量的大小,并通過重新設計令牌桶算法結合limit模塊來控制指定Ip地址的流量。

根據 Netfilter的框架結構,將擴展分為兩大部分,在Netfilter部分實現了一個match,能控制其網絡內部的每臺計算機單位時間內通過的流量,以此為基礎可以控制單個IP地址下的單位時間內流量的大小,并重新構造了一個令牌桶實現了對流量的整形控制;在 Iptables中實現一個用戶態的Iptables擴展庫,實現了一個match的配置接口。Match函數的設計為,在源IP鏈表中尋找數據包所攜帶源IP地址,若在源IP鏈表中找到相匹配的IP地址,則取出相應的統計信息,看令牌桶中是否有足夠的令牌,若有則匹配,若源 IP地址鏈表中沒有找到,則創建一個鏈表項,并記錄下當前時間和當前數據包的大小并返回無匹配項信息;若找到,將找到的匹配項的源鏈表項取出,插入到HEAD位置,若沒有找到則將剛剛創建的鏈表項插入到鏈表的HEAD位置。

3.1 令牌桶算法的改進

Linux內核中對流量進行控制和整形的令牌桶算法是著名的網絡流限速算法,它通過令牌來控制網絡數據包發送或接收的速度,令牌既然可以代表數據包的數量,也就可以代表數據量的多少。之所以可以用此方法限速,是因為系統可以按照用戶事先約定的速度,向令牌桶中放置令牌并且令牌桶容量有限,桶滿后不能再放入令牌。當數據包到達后,首先計算當前數據包所需要的令牌數并查看令牌桶中令牌數量,若當前令牌桶中的令牌數量滿足數據包發送的要求,則放行數據包,且從令牌桶中減去與當前發送的數據包相同當量的令牌。基于上述的思路,構造了一個令牌桶原理的新算法,對單位時間內發送的字節數進行限制,并且需要顯示指定限制的單位時間內的流量、允許的突發緩沖區大小,緩沖區用于流量整形。通過下面的算法來計算令牌數量,每一個令牌所代表的可發送的字節數和每個 jiffy所產生的令牌數(一個 jiffy是計算機內部硬件計時器的一個嘀嗒聲,例如內部處理器的頻率為100hz那么就是10ms產生一個jiffy)。根據當前到達數據包的長度與當前數據包所需要的令牌數進行計算與比較,若當前到達的數據包所需要的令牌數大于當前令牌桶中所擁有的令牌數,則不允許此數據包發送,可以將此數據包放到緩沖區暫存,等有足夠令牌后發送。反之,允許此數據包的發送。

下面是令牌桶算法的計算方法,當指定好限定的流量后,令牌桶中的令牌數量按照如下數量關系來計算:

3.2 實現

根據 Netfilter提供的框架,可以擴展 Table、Match和Target等。在這里我們將用Match構件擴展來限制發包的速度,使其成為Iptables的match擴展模塊。程序包含用戶態和內核態兩部分,用戶態主要在 Iptables模塊,用來供用戶輸入流量控制參數并向內核態傳遞用戶輸入的流量控制參數,內核態部分根據用戶輸入的控制參數執行實際流量控制。

內核實現如下:

(1) 定義一個 struct st_rateinfo, 用來存放限速信息;

(2) 維護一個IP地址鏈表,用于保存到達本地本機的IP數據包的IP地址;

(3) 實現一個 match函數,并在此函數中實現令牌桶控制和流量的整形處理。

3.3 使用方法

例如要對來自192.168.0.1 這個地址進行限流至200k,則添加如下兩條規則即可:

4 總結

本文研究了根據IP地址進行流量限速的方法。該方法改進了 linux內核本身令牌桶算法存在的在不同平臺上的流量不一致問題和流量統計不精確問題。在linux的netfilter框架中存在的精確控制流量的問題和不同平臺統計不一致問題都可以用改進的令牌桶算法解決。實現了單個IP地址的出入數據流的控制。

[1]楊虎,張大方,謝鯤等.Netfilter/Iptables框架下基于TCP滑動窗口的串行流量控制算法[J].計算機工程與科學.2009.

[2]李君.P2P 業務流量識別、分析和控制研究[J].計算機工程.2006.

[3]程克勤,顧棟梁,周健.Per_IP流量控制方法[J].計算機工程與設計.2010.

[4]Nicolas Bouliane.Limit TBF analysis[EB/OL].http://people.netfilter.org/acidfu/papers/limit-tbf-analysis.pdf.2007.

主站蜘蛛池模板: 五月天在线网站| 国内精自视频品线一二区| 噜噜噜综合亚洲| 思思热精品在线8| 欧洲亚洲一区| 无码啪啪精品天堂浪潮av| 凹凸国产熟女精品视频| 一区二区在线视频免费观看| 91最新精品视频发布页| 激情综合婷婷丁香五月尤物| 欧亚日韩Av| 97国产在线视频| 欧美一级高清片欧美国产欧美| 久操中文在线| 国产日韩欧美一区二区三区在线 | 亚洲天堂网2014| 特级aaaaaaaaa毛片免费视频 | 在线亚洲精品自拍| 国产91透明丝袜美腿在线| 91丝袜美腿高跟国产极品老师| 九色在线观看视频| 国产精品无码作爱| 欧美日韩一区二区三区在线视频| a亚洲天堂| 亚洲第一精品福利| 国产成人福利在线| 亚洲精品无码在线播放网站| 亚洲天堂免费在线视频| 欧美在线网| 亚洲熟妇AV日韩熟妇在线| 青青草原国产| 国产成人精品在线| 青草国产在线视频| 精品午夜国产福利观看| 亚洲av无码人妻| 欧洲亚洲一区| 色婷婷国产精品视频| 日本成人精品视频| 久久精品中文字幕免费| 无码啪啪精品天堂浪潮av| 亚洲AV免费一区二区三区| 国产欧美精品一区aⅴ影院| 亚洲综合中文字幕国产精品欧美| 青青草国产一区二区三区| 精品成人一区二区| 久久这里只有精品23| 人妻精品久久无码区| 青青青视频蜜桃一区二区| 午夜日本永久乱码免费播放片| 亚洲成年人网| 国产精品第一区在线观看| 日韩欧美中文在线| 无码久看视频| 国产爽爽视频| 无码专区在线观看| 日本黄色a视频| 国产成人凹凸视频在线| 成人福利在线免费观看| 欧美一区二区自偷自拍视频| 亚洲成a∧人片在线观看无码| 亚洲成人精品| 亚洲欧洲日本在线| 国产精品性| 亚洲国产一成久久精品国产成人综合| 亚洲人成电影在线播放| 国产成人亚洲精品蜜芽影院| 国产亚洲精品97在线观看| 久久精品亚洲专区| 四虎永久在线| 国产一国产一有一级毛片视频| 天堂网国产| 国产美女人喷水在线观看| 天堂中文在线资源| 99re免费视频| 国产精品久久久久久久伊一| 成人在线不卡| 伊人成人在线| 国产香蕉国产精品偷在线观看 | 亚洲精品高清视频| 国产福利微拍精品一区二区| 国产一级α片| 成人欧美在线观看|