IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁操作系統(tǒng)LINUX → linux tc實現(xiàn)ip流量限制

linux tc實現(xiàn)ip流量限制

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  tc是個配置Linux內(nèi)核流量控制的工具

  名字

  tc - 顯示/維護流量控制配置

  摘要

  tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]

  tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]

  tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id

  tc [-s | -d ] qdisc show [ dev DEV ]

  tc [-s | -d ] class show dev DEV tc filter show dev DEV

  簡介

  Tc用于Linux內(nèi)核的流量控制。流量控制包括以下幾種方式:

  SHAPING(限制)

  當(dāng)流量被限制,他的傳輸速率就被控制在某個值以下。限制值能夠大大小于有效帶寬,這樣能夠平滑突發(fā)數(shù)據(jù)流量,使網(wǎng)絡(luò)更為穩(wěn)定。shaping(限制)只適用于向外的流量。

  SCHEDULING(調(diào)度) bitsCN.Com

  通過調(diào)度數(shù)據(jù)包的傳輸,能夠在帶寬范圍內(nèi),按照優(yōu)先級分配帶寬。SCHEDULING(調(diào)度)也只適于向外的流量。

  POLICING(策略)

  SHAPING用于處理向外的流量,而POLICIING(策略)用于處理接收到的數(shù)據(jù)。

  DROPPING(丟棄)

  假如流量超過某個設(shè)定的帶寬,就丟棄數(shù)據(jù)包,不管是向內(nèi)還是向外。

  流量的處理由三種對象控制,他們是:qdisc(排隊規(guī)則)、class(類別)和filter(過濾器)。

  QDISC(排隊規(guī)則)

  QDisc(排隊規(guī)則)是queueing discipline的簡寫,他是理解流量控制(traffic control)的基礎(chǔ)。無論何時,內(nèi)核假如需要通過某個網(wǎng)絡(luò)接口發(fā)送數(shù)據(jù)包,他都需要按照為這個接口配置的qdisc(排隊規(guī)則)把數(shù)據(jù)包加入隊列。然后,內(nèi)核會盡可能多地從qdisc里面取出數(shù)據(jù)包,把他們交給網(wǎng)絡(luò)適配器驅(qū)動模塊。

  最簡單的QDisc是pfifo他不對進入的數(shù)據(jù)包做任何的處理,數(shù)據(jù)包采用先入先出的方式通過隊列。但是,他會保存網(wǎng)絡(luò)接口一時無法處理的數(shù)據(jù)包。

  CLASS(類)

  某些QDisc(排隊規(guī)則)能夠包含一些類別,不同的類別中能夠包含更深入的QDisc(排隊規(guī)則),通過這些細(xì)分的QDisc還能夠為進入的隊列的數(shù)據(jù)包排隊。通過配置各種類別數(shù)據(jù)包的離隊次序,QDisc能夠為配置網(wǎng)絡(luò)數(shù)據(jù)流量的優(yōu)先級。 中國網(wǎng)管論壇

  FILTER(過濾器)

  filter(過濾器)用于為數(shù)據(jù)包分類,決定他們按照何種QDisc進入隊列。無論何時數(shù)據(jù)包進入一個劃分子類的類別中,都需要進行分類。分類的方法能夠有多種,使用fileter(過濾器)就是其中之一。使用filter(過濾器)分類時,內(nèi)核會調(diào)用附屬于這個類(class)的任何過濾器,直到返回一個判決。假如沒有判決返回,就作進一步的處理,而處理方式和QDISC有關(guān)。

  需要注意的是,filter(過濾器)是在QDisc內(nèi)部,他們不能作為主體。

  CLASSLESS QDisc(不可分類QDisc)

  無類別QDISC包括:

  [p|b]fifo

  使用最簡單的qdisc,純粹的先進先出。只有一個參數(shù):limit,用來配置隊列的長度,pfifo是以數(shù)據(jù)包的個數(shù)為單位;bfifo是以字節(jié)數(shù)為單位。

  pfifo_fast

  在編譯內(nèi)核時,假如打開了高級路由器(Advanced Router)編譯選項,pfifo_fast就是系統(tǒng)的標(biāo)準(zhǔn)QDISC。他的隊列包括三個波段(band)。在每個波段里面,使用先進先出規(guī)則。而三個波段(band)的優(yōu)先級也不相同,band 0的優(yōu)先級最高,band 2的最低。假如band里面有數(shù)據(jù)包,系統(tǒng)就不會處理band 1里面的數(shù)據(jù)包,band 1和band 2之間也是相同。數(shù)據(jù)包是按照服務(wù)類型(Type of Service,TOS)被分配多三個波段(band)里面的。 [url]www.bitsCN.com[/url]

  red

  red是Random Early Detection(隨機早期探測)的簡寫。假如使用這種QDISC,當(dāng)帶寬的占用接近于規(guī)定的帶寬時,系統(tǒng)會隨機地丟棄一些數(shù)據(jù)包。他很適合高帶寬應(yīng)用。

  sfq

  sfq是Stochastic Fairness Queueing的簡寫。他按照會話(session--對應(yīng)于每個TCP連接或UDP流)為流量進行排序,然后循環(huán)發(fā)送每個會話的數(shù)據(jù)包。

  tbf

  tbf是Token Bucket Filter的簡寫,適合于把流速降低到某個值。

  不可分類QDisc的配置

  假如沒有可分類QDisc,不可分類QDisc只能附屬于設(shè)備的根。他們的用法如下:

  tc qdisc add dev DEV root QDISC QDISC-PARAMETERS

  要刪除一個不可分類QDisc,需要使用如下命令:

  tc qdisc del dev DEV root

  一個網(wǎng)絡(luò)接口上假如沒有配置QDisc,pfifo_fast就作為缺省的QDisc。

  CLASSFUL QDISC(分類QDisc)

#p#副標(biāo)題#e#

  可分類的QDisc包括:

  CBQ

  CBQ是Class Based Queueing(基于類別排隊)的縮寫。他實現(xiàn)了一個豐富的連接共享類別結(jié)構(gòu),既有限制(shaping)帶寬的能力,也具備帶寬優(yōu)先級管理的能力。帶寬限制是通過計算連接的空閑時間完成的。空閑時間的計算標(biāo)準(zhǔn)是數(shù)據(jù)包離隊事件的頻率和下層連接(數(shù)據(jù)鏈路層)的帶寬。

  [url]www.bitsCN.com[/url]

  HTB

  HTB是Hierarchy Token Bucket的縮寫。通過在實踐基礎(chǔ)上的改進,他實現(xiàn)了一個豐富的連接共享類別體系。使用HTB能夠很容易地確保每個類別的帶寬,雖然他也允許特定的類能夠突破帶寬上限,占用別的類的帶寬。HTB能夠通過TBF(Token Bucket Filter)實現(xiàn)帶寬限制,也能夠劃分類別的優(yōu)先級。

  PRIO

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

  操作原理

  類(Class)組成一個樹,每個類都只有一個父類,而一個類能夠有多個子類。某些QDisc(例如:CBQ和HTB)允許在運行時動態(tài)添加類,而其他的QDisc(例如:PRIO)不允許動態(tài)建立類。

  允許動態(tài)添加類的QDisc能夠有零個或多個子類,由他們?yōu)閿?shù)據(jù)包排隊。

  此外,每個類都有一個葉子QDisc,默認(rèn)情況下,這個葉子QDisc使用pfifo的方式排隊,我們也能夠使用其他類型的QDisc代替這個默認(rèn)的QDisc。而且,這個葉子葉子QDisc有能夠分類,但是每個子類只能有一個葉子QDisc。 bitsCN_com

  當(dāng)一個數(shù)據(jù)包進入一個分類QDisc,他會被歸入某個子類。我們能夠使用以下三種方式為數(shù)據(jù)包歸類,但是不是任何的QDisc都能夠使用這三種方式。

  tc過濾器(tc filter)

  假如過濾器附屬于一個類,相關(guān)的指令就會對他們進行查詢。過濾器能夠匹配數(shù)據(jù)包頭任何的域,也能夠匹配由ipchains或iptables做的標(biāo)記。

  服務(wù)類型(Type of Service)

  某些QDisc有基于服務(wù)類型(Type of Service,ToS)的內(nèi)置的規(guī)則為數(shù)據(jù)包分類。

  skb->priority

  用戶空間的應(yīng)用程式能夠使用SO_PRIORITY選項在skb->priority域配置一個類的ID。

  樹的每個節(jié)點都能夠有自己的過濾器,但是高層的過濾器也能夠直接用于其子類。

  假如數(shù)據(jù)包沒有被成功歸類,就會被排到這個類的葉子QDisc的隊中。相關(guān)細(xì)節(jié)在各個QDisc的手冊頁中。

  命名規(guī)則

  任何的QDisc、類和過濾器都有ID。ID能夠手工配置,也能夠有內(nèi)核自動分配。

  ID由一個主序列號和一個從序列號組成,兩個數(shù)字用一個冒號分開。

  QDISC

  一個QDisc會被分配一個主序列號,叫做句柄(handle),然后把從序列號作為類的命名空間。句柄采用象10:相同的表達方式。習(xí)慣上,需要為有子類的QDisc顯式地分配一個句柄。

  www_bitscn_com

  類(CLASS)

  在同一個QDisc里面的類分享這個QDisc的主序列號,但是每個類都有自己的從序列號,叫做類識別符(classid)。類識別符只和父QDisc有關(guān),和父類無關(guān)。類的命名習(xí)慣和QDisc的相同。

  過濾器(FILTER)

  過濾器的ID有三部分,只有在對過濾器進行散列組織才會用到。詳情請參考tc-filters手冊頁。

  單位

  tc命令的任何參數(shù)都能夠使用浮點數(shù),可能會涉及到以下計數(shù)單位。

  帶寬或流速單位:

  kbps

  千字節(jié)/秒

  mbps

  兆字節(jié)/秒

  kbit

  KBits/秒

  mbit

  MBits/秒

  bps或一個無單位數(shù)字

  字節(jié)數(shù)/秒

  數(shù)據(jù)的數(shù)量單位:

  kb或k

  千字節(jié)

  mb或m

  兆字節(jié)

  mbit

  兆bit

  kbit

  千bit

  b或一個無單位數(shù)字

  字節(jié)數(shù)

#p#副標(biāo)題#e#

  時間的計量單位:

  s、sec或secs

  秒

  ms、msec或msecs

  分鐘

  us、usec、usecs或一個無單位數(shù)字

  微秒

  TC命令

  tc能夠使用以下命令對QDisc、類和過濾器進行操作:

  add

  bitsCN_com

  在一個節(jié)點里加入一個QDisc、類或過濾器。添加時,需要傳遞一個祖先作為參數(shù),傳遞參數(shù)時既能夠使用ID也能夠直接傳遞設(shè)備的根。假如要建立一個QDisc或過濾器,能夠使用句柄(handle)來命名;假如要

關(guān)鍵詞標(biāo)簽:linux,ip流量限制

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP Linux操作系統(tǒng)修改IP

相關(guān)下載

    人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址 dmidecode命令查看內(nèi)存型號 linux tc實現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載