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

基于Linux下TC的網絡流量管理

2010-08-15 00:45:09郭正球
長沙航空職業技術學院學報 2010年2期
關鍵詞:控制策略分類管理

郭正球

(長沙航空職業技術學院,湖南長沙 410124)

基于Linux下TC的網絡流量管理

郭正球

(長沙航空職業技術學院,湖南長沙 410124)

介紹Linux下的流量管理器(TC),討論了TC的排隊規定、分類和過濾器三個關鍵組件的相關細節,給出運用TC工具實現網絡流量管理的具體實例。

服務質量;流量管理;隊列規定;類;過濾器

目前采用盡力而為(Best-effort)模型設計的互聯網,會盡可能地為所有用戶分配網絡帶寬,用以傳送更多的網絡流量,但對帶寬和數據傳輸延時卻沒有明確規定。[1]當下,以BT為代表的P2P服務在提升網絡傳輸效率的同時也極大地消耗了網絡帶寬,對其他網絡應用帶來沖擊。網絡長時間的高度擁塞,給網絡管理帶來困難和功能失效的危險,將直接影響網絡的正常運行和關鍵業務的開展。因此,需要對網絡流量進行分類與控制,監控網絡中的各流量狀態,并根據應用的需求實施面向用戶、帶寬、業務類型和服務質量的流量控制,從而有效地利用網絡帶寬,保障網絡的正常運行。

在網絡服務質量(QoS)領域里,流量管理被作為其重要的研究方向。目前,很多網絡硬件廠商都在防火墻、路由器等網絡關鍵上設備整合了流量管理功能,也有廠家推出了基于ASIC芯片的專業流量控制設備,這些基于硬件的流量管理設備具有高性能和高可靠性等特點,但價格不菲,并且在部署和使用過程中缺乏靈活性和可定制性。Linux作為一個優秀的網絡操作系統,在對網絡QoS的支持有著得天獨厚的優勢。通過Linux內核(Kernel)中的流量控制(TC)模塊完全可以實現網絡流量的顆粒控制,而且靈活性非常高。

1 Linux對流量管理的支持

目前,Linux內核已經發展到Kernel 2.6版本,其帶寬管理模塊(TC)通過這幾年的發展,已經變得非常成熟和穩定。TC模塊主要包括隊列規定(Queuing discip line)、過濾器(Filter)、類(Class)這三個關鍵組件。[2]

Linux的帶寬管理模塊(TC)會將流經網絡接口的數據包按某種隊列算法放入相應的隊列,并通過優先級、大小、長度等隊列規定來控制數據包發送,從而達到對流量的控制。能夠實現流量控制功能的隊列規定主要有:CLASSLESSQDISC(無類隊列規定)和CLASSFULQDIS(分類隊列規定)兩種。

1.1 無類隊列規定

無類隊列規定能夠接受數據包和重組、延遲或丟棄數據包。這可以用作對于整個網絡接口的流量進行整形,但不細分各種情況,屬于粗放型的流量管理。典型的無類隊列規定有SFQ(隨機公平隊列)、TBF(令牌桶過濾器)、pfifo-fast(先進現出)、ID(前向隨機丟包)。

1.2 分類隊列規定

在分類隊列規定的概念里擴展了Class(類)和Filter(過濾器)兩個組件,在類和過濾器的支持下, Linux可以根據數據包的類型、優先級別等來區分不同類型的流量,然后通過不同的隊列規則來控制數據包的發送方式,以實現對流量的控制。

典型的分類隊列規定主要有以下幾種:

1)CBQ(Class Based Queueing,基于類的隊列)

CBQ是一種基于類的可以包含其它隊列的超級隊列,CBQ會根據對流量特征處理數據包,并確保一定的傳輸速率,在接收數據包時根據IP協議頭、IP地址、應用程序或協議、URL或其它信息等進行分類。每類流量被分配到指定的FIFO (FirstInFirstOut)隊列。如果隊列為空閑,帶寬便可以供其它隊列使用,即帶寬借用。

2)HTB(Hierarchical Token Buchet,分層的令牌桶)

HTB實際是在TBF上發展起來的,它的分層機制使網絡在帶寬固定的情況下很容易實現對每個類別的帶寬分配,同時還允許特定的類可以突破帶寬上限,占用別的類的空閑帶寬,這對要在具有固定連接速率的鏈路上實現帶寬管理非常方便。

3)PRIO:PRIOQDisc

PRIO不能限制帶寬,因為屬于不同類別的數據報是順序離隊。使用PRIO Qdisc可以很容易對流量進行優先級管理,只有屬于高優先級類別的數據報全部發送完畢,才會發送屬于低優先級類別的數據報。為方便管理,需要使用iptables或者ipchain處理數據包的服務類型(Type Of Service, TOS)。

1.3 過濾器和類

在分類隊列中使用過濾器區別不同類型的數據包,過濾器根據源IP地址、端口、目地IP、端口、協議類型、TOS字節、網絡接口等參數或準則將進入隊列的數據包分為不同的類。類由隊列規定來管理,它和隊列規定緊密聯系在一起。不同的類對應著不同的隊列規定,類本身不儲存數據包,而是利用隊列規定來管理其所擁有的數據。它們之間的關系如圖1所示。

Linux下常用的過濾器有fwmark、u32、route等,通過這些過濾器可以區別不同類型的網絡流量。fwmark過濾器是根據防火墻對數據包所做的特定標記進行判斷;u32過濾器基于哈希表實現,能夠對當前通過的數據包進行匹配的特征定義; route過濾器是根據數據如何被路由進行判斷。

在過濾器里有protocol、parent、prio、hand le、fw、u32這些參數需要進行設置。protocol是必要參數,指的是過濾器所接受的協議。parent也是必要參數,用來明確過濾器附帶在哪個句柄上,句柄必須是一個已經存在的類。prio是用來說明分類器的優先權值,優先權值低的優先級越高。handle是過濾器句柄的描述,對于不同過濾器,它的意義不同。

1.4 實現TC的三個關鍵組件

TC的實現涉及到隊列(Queue),分類器(Class)和過濾器(Filter)三個關鍵組件。

隊列用來實現控制網絡的收發速度。通過隊列,Linux可以將網絡數據包緩存起來,然后根據用戶的設置,在盡量不中斷連接(如TCP)的前提下來平滑網絡流量。需要注意的是,基于IP/TCP平行協議族的特點,TC對流量控制的實現一般都在發送隊列上來實現,即“控發不控收”。對于Linux防火墻來說,控制下行速率需要在對內接口上實施,而控制上行速率則需要在對外接口上實施。[3]

Class用來表示控制策略。很多時候可能要對不同的IP實施不同的流量控制策略,此時可用不同的Class來表示不同的控制策略。

Filter用來將流量劃入到具體的控制策略中(即不同的Class中)。比如,要對A、B兩個IP產生的流量實行不同的控制策略(C、D),這時,可以用Filter將A流量劃入到控制策略C,將B流量劃入到控制策略D,Filter劃分的標志位可用u32打標功能或iptables的set-mark功能來實現。

2 流量控制的具體實例

Linux流量控制模塊提供一個用戶狀態下的TC命令,可以通過TC命令來實現對流量的管理。

2.1 實例環境

先假設一個簡單的網絡環境,如圖2所示。

流量控制器(TC)上有兩個網絡接口,連接ISP的對外接口為eth0,分配公網IP地址:a.b.c.d,最大帶寬為50Mbps。連接內部網絡的為eth1,分配私有IP地址:192.168.1.1。另有三臺內網主機1、主機2和主機3,各主機的IP地址分配見圖2。

現在需要對內網主機實施以下的流量管理:

1)控制內網主機1、主機2和主機3的下行(下載)速率分別為為8Mbps、15Mbps和20Mbps;

2)控制內網主機1、主機2和主機3的上行(上載)速率分別為為5Mbps、8Mbps和10Mbps;

2.2 下行控制

對下行速率的控制,需要在TC的內接口上實施,基本步驟如下:

1)在流量控制器(TC)內接口上(eth1)綁定一個HTB隊列用以控制下行速率,指定缺省分類為2:40,沒有被過濾的流量將進行這個缺省分類。

tc qdisc add dev eth1 root handle 2:0 htb default40

2)建立主干分類,并指定最大帶寬為50Mbit,允許突發流量15Kbit。

tc class add dev eth1 parent 2:0 classid 2:1 htb rate 50Mbit burst15kbit

3)在內接口上隊列(HTB)上為三臺內網主機分別建立相應速率的子分類;最后一條命令創建默認分類。

tc class add dev eth1 parent 2:1 classid 2:10 htb rate 8Mbit burst 15kbit

tc class add dev eth1 parent 2:1 classid 2:20 htb rate 10Mbit burst 15kbit

tc class add dev eth1 parent 2:1 classid 2:30 htb rate 15Mbit burst 15k

tc class add dev eth1 parent 2:1 classid 2:40 htb rate 7Mbit burst 15k

4)在每個類下面再附加上另一個隨機公平隊列(SFQ),以保證帶寬的平均公平使用。

tc qdisc add dev eth1 parent 2:10 hand le 10: sfq perturb 10

tc qdisc add dev eth1 parent 2:20 hand le 20: sfq perturb 10

tc qdisc add dev eth1 parent 2:30 hand le 30: sfq perturb 10

tc qdisc add dev eth1 parent 2:40 hand le 30: sfq perturb 10

5)根據下行流量控制要求建立相應的u32過濾器;最后一條命令創建默認流量的過濾器,可以省略。

tc filter add dev eth0 protocol ip parent2:0 prio 2 u32match ip dst 192.168.1.2/32 flowid 2:10

tc filter add dev eth0 protocol ip parent2:0 prio 2 u32match ip dst 192.168.1.3/32 flowid 2:20

tc filter add dev eth0 protocol ip parent2:0 prio 2 u32match ip dst 192.168.1.4/32 flowid 2:30

tc filter add dev eth0 protocol ip parent2:0 prio 3 u32 match ip dst 192.168.1.0/24 flowid 2:40

2.3 上行控制

對上行速率的控制,需要在TC的對外接口上實施,但需要以下兩個方面的問題:

1)因為內部網絡使用的是私有地址,內部IP產生的上行流量在經過外網卡(eth0)時會進行NAT轉換,所以不能用源地址進行u32過濾,需要使用fw過濾器進行流量標識;

2)在使用fw過濾器分類的時候優先級一定不能相同,否則將失效。

基本步驟如下:

1)使用iptables在TC的內接口處為三臺內網主機的上行流量分別打上不同的mark,以此來標識不同的數據流,為fw過濾分類時所使用;

iptables-A PREROUTING-tmangle-ieth1 -s 192.168.1.2/32-j MARK--set-mark 1

iptables-A PREROUTING-tmangle-ieth1 -s 192.168.1.3/32-j MARK--set-mark 2

iptables-A PREROUTING-tmangle-ieth1 -s 192.168.1.4/32-j MARK--set-mark 3

2)如同控制下行流量一般,在eth0上建立HTB隊列、主干、子分類及默認分類;

tc qdisc add dev eth0 roothand le 1:0 htb default 40

tc classadd dev eth0 parent 1:0 classid 2:1 htb rate 50Mbit burst 15kbit

tc class add dev eth0 parent 1:1 classid 2:10 htb rate 5Mbitburst 15kbit

tc class add dev eth0 parent 1:1 classid 2:20 htb rate 8Mbitburst 15kbit

tc class add dev eth0 parent 1:1 classid 2:30 htb rate 10Mbit burst 15k

tc class add dev eth0 parent 1:1 classid 2:40 htb rate 27Mbit burst 15k

3)附加一個隨機公平隊列(SFQ),以保證帶寬的平均公平使用。

tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10

tc qdisc add dev eth0 parent 2:20 handle 20: sfq perturb 10

tc qdisc add dev eth0 parent 2:30 handle 30: sfq perturb 10

tc qdisc add dev eth0 parent 2:40 handle 30: sfq perturb 10

4)創建相應的fw過濾器,注意使用不同的優先級(prio)。

tc filter add dev eth0 parent1:0 protocol ip prio 1 handle 1 fw classid 1:10

tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 1 fw classid 1:20

tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 1 fw classid 1:30

tc filter add dev eth0 parent 1:0 p rotocol ip prio 4 handle 1 fw classid 1:40

通過以上命令,便可以實現對內網主機的上/下行流量的管理。

Linux作為一個開源的操作系統,可以通過其強大的腳本程序來靈活地控制內部網絡的上/下行流量,包括對不同類型流量(如HTTP、DNS、SYN等)進行優先級的調整,以保證關鍵服務的質量。同樣,也可以對TC進行二次開發,設計出適用性強的可視化流量管理系統,如今已有一些網絡設備廠家在X86硬件平臺下設計出基于Linux內核的流量控制設備。相比采用ASIC芯片設計的高端流量控制設備,通過Linux的TC在X86平臺搭建的流量管理平臺具有更高的性價比,而且Linux對硬件配置要求不高,在一臺普通的PC機就可以通過Linux輕松地實現流量管理,對于大流量的園區網絡則可以通過Linux集群技術將多臺普通PC組合部署,構建更高性能的流量管理集群系統,以滿足流量管理的需要。

3 結束語

網絡流量的管理是目前困擾很多網絡管理者的問題,對流量進行靈活的定制管理是當前網絡管理的需要。實踐證明通過Linux平臺下的TC可以實現網絡流量的有效控制與管理,改善網絡的服務質量。

[1]林闖.計算機網絡的服務質量QoS[M].北京:清華大學出版社,2004.

[2]祝琳.Linux網絡系統對QoS的支持[J].計算機技術, 2002,(2):100-102.

[3]Bert Hubert.Linux的高級路由和流量控制[M].北京:人民郵電出版社,2005.

[編校:劉敏]

TC's Network Traffic Management Based on the Linux

GUO Zhengqiu
(Changsha Aeronautical Vocationaland Technical College,Changsha Hunan 410124)

This paper introduces the traffic controlor(TC)based on the Linux,discusses the related detailsof TC's queuing discipline,classification and filtermodules,lists some samples ofachieving network management by way of TC.

QoS;traffic management;queuing discipline;class;filter

TP393

A

1671-9654(2010)02-050-04

2010-03-15

郭正球(1980-),男,湖南沅江人,助理工程師,研究方向為軟件工程、網絡安全與管理。

猜你喜歡
控制策略分類管理
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
分類算一算
考慮虛擬慣性的VSC-MTDC改進下垂控制策略
能源工程(2020年6期)2021-01-26 00:55:22
工程造價控制策略
山東冶金(2019年3期)2019-07-10 00:54:04
分類討論求坐標
現代企業會計的內部控制策略探討
消費導刊(2018年10期)2018-08-20 02:57:02
數據分析中的分類討論
教你一招:數的分類
容錯逆變器直接轉矩控制策略
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
主站蜘蛛池模板: 国产av无码日韩av无码网站| 好久久免费视频高清| 成人精品区| 欧美日韩精品综合在线一区| 在线人成精品免费视频| 91久久天天躁狠狠躁夜夜| 欧美天堂久久| 久久99国产乱子伦精品免| 亚洲第一页在线观看| 岛国精品一区免费视频在线观看| 中文字幕66页| 97超碰精品成人国产| 无码区日韩专区免费系列| 天天激情综合| 国产第二十一页| 99精品在线视频观看| 国产黄网站在线观看| a级毛片一区二区免费视频| 欧美一级爱操视频| 欧美午夜在线播放| 欧美中出一区二区| 国产美女在线免费观看| 999福利激情视频| 亚洲精品黄| 999福利激情视频| 91国内视频在线观看| 欧美午夜网| 夜精品a一区二区三区| 精品国产成人国产在线| 久久特级毛片| 成人在线不卡视频| 国产毛片片精品天天看视频| 久久国产亚洲偷自| 精品国产aⅴ一区二区三区 | 丁香婷婷综合激情| 欧美亚洲激情| 欧美在线伊人| 丁香五月激情图片| 大陆国产精品视频| 亚洲一欧洲中文字幕在线| 国模视频一区二区| 国产香蕉在线视频| 一本大道视频精品人妻 | 99视频全部免费| 亚洲欧美日本国产综合在线| 91免费精品国偷自产在线在线| 四虎影视库国产精品一区| 原味小视频在线www国产| 成人无码一区二区三区视频在线观看| 天堂va亚洲va欧美va国产| 国产一级精品毛片基地| 四虎永久在线精品国产免费| 国产精品成人免费综合| jizz国产在线| 毛片免费视频| 国产人成在线观看| 精品日韩亚洲欧美高清a| 亚洲综合第一页| 亚洲国产成人精品无码区性色 | 亚洲第一成年人网站| 91久久偷偷做嫩草影院| 欧美www在线观看| 精品国产免费第一区二区三区日韩| 国产va在线观看| 国产精品久久精品| 亚洲天堂精品在线| 一级毛片免费观看久| 亚洲浓毛av| 粉嫩国产白浆在线观看| 久久福利片| 亚洲网综合| 欧美日韩国产系列在线观看| 亚洲国产日韩一区| 亚洲日韩在线满18点击进入| 无码粉嫩虎白一线天在线观看| 国产福利在线免费观看| 福利在线免费视频| 99视频在线免费| 真人高潮娇喘嗯啊在线观看 | 91www在线观看| 日韩二区三区无| 国产成人精品日本亚洲|