• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2010-08-15 00:45:09郭正球
      關鍵詞:網絡流量隊列過濾器

      郭正球

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

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

      郭正球

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

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

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

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

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

      1 Linux對流量管理的支持

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

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

      1.1 無類隊列規(guī)定

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

      1.2 分類隊列規(guī)定

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

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

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

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

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

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

      3)PRIO:PRIOQDisc

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

      1.3 過濾器和類

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

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

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

      1.4 實現TC的三個關鍵組件

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

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

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

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

      2 流量控制的具體實例

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

      2.1 實例環(huán)境

      先假設一個簡單的網絡環(huán)境,如圖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,允許突發(fā)流量15Kbit。

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

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

      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過濾器;最后一條命令創(chuàng)建默認流量的過濾器,可以省略。

      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過濾器分類的時候優(yōu)先級一定不能相同,否則將失效。

      基本步驟如下:

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

      3 結束語

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

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

      [2]祝琳.Linux網絡系統(tǒng)對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-),男,湖南沅江人,助理工程師,研究方向為軟件工程、網絡安全與管理。

      猜你喜歡
      網絡流量隊列過濾器
      基于多元高斯分布的網絡流量異常識別方法
      基于神經網絡的P2P流量識別方法
      隊列里的小秘密
      基于多隊列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      在隊列里
      支持過濾器的REST模型研究與實現
      電子測試(2018年9期)2018-06-26 06:45:56
      聲音過濾器
      趣味(語文)(2018年2期)2018-05-26 09:17:55
      AVB網絡流量整形幀模型端到端延遲計算
      豐田加速駛入自動駕駛隊列
      基于LOGO!的空氣過濾器自潔控制系統(tǒng)
      自動化博覽(2014年6期)2014-02-28 22:32:20
      喀什市| 沐川县| 栾城县| 威远县| 那曲县| 格尔木市| 刚察县| 和田县| 静宁县| 增城市| 德保县| 崇信县| 阜平县| 旌德县| 新野县| 中西区| 五台县| 宿州市| 岳阳市| 英德市| 永川市| 宾阳县| 云龙县| 荔波县| 丘北县| 清流县| 井冈山市| 论坛| 休宁县| 满城县| 新化县| 永定县| 隆安县| 饶平县| 聊城市| 平邑县| 和政县| 团风县| 印江| 应城市| 辛集市|