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

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

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

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

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

  名字

  tc - 顯示/維護(hù)流量控制配置

  摘要

  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

  簡(jiǎn)介

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

  SHAPING(限制)

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

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

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

  POLICING(策略)

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

  DROPPING(丟棄)

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

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

  QDISC(排隊(duì)規(guī)則)

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

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

  CLASS(類)

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

  FILTER(過(guò)濾器)

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

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

  CLASSLESS QDisc(不可分類QDisc)

  無(wú)類別QDISC包括:

  [p|b]fifo

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

  pfifo_fast

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

  red

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

  sfq

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

  tbf

  tbf是Token Bucket Filter的簡(jiǎn)寫,適合于把流速降低到某個(gè)值。

  不可分類QDisc的配置

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

  tc qdisc add dev DEV root QDISC QDISC-PARAMETERS

  要?jiǎng)h除一個(gè)不可分類QDisc,需要使用如下命令:

  tc qdisc del dev DEV root

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

  CLASSFUL QDISC(分類QDisc)

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

  可分類的QDisc包括:

  CBQ

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

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

  HTB

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

  PRIO

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

  操作原理

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

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

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

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

  tc過(guò)濾器(tc filter)

  假如過(guò)濾器附屬于一個(gè)類,相關(guān)的指令就會(huì)對(duì)他們進(jìn)行查詢。過(guò)濾器能夠匹配數(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選項(xiàng)在skb->priority域配置一個(gè)類的ID。

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

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

  命名規(guī)則

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

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

  QDISC

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

  www_bitscn_com

  類(CLASS)

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

  過(guò)濾器(FILTER)

  過(guò)濾器的ID有三部分,只有在對(duì)過(guò)濾器進(jìn)行散列組織才會(huì)用到。詳情請(qǐng)參考tc-filters手冊(cè)頁(yè)。

  單位

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

  帶寬或流速單位:

  kbps

  千字節(jié)/秒

  mbps

  兆字節(jié)/秒

  kbit

  KBits/秒

  mbit

  MBits/秒

  bps或一個(gè)無(wú)單位數(shù)字

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

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

  kb或k

  千字節(jié)

  mb或m

  兆字節(jié)

  mbit

  兆bit

  kbit

  千bit

  b或一個(gè)無(wú)單位數(shù)字

  字節(jié)數(shù)

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

  時(shí)間的計(jì)量單位:

  s、sec或secs

  秒

  ms、msec或msecs

  分鐘

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

  微秒

  TC命令

  tc能夠使用以下命令對(duì)QDisc、類和過(guò)濾器進(jìn)行操作:

  add

  bitsCN_com

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

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

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 安裝紅帽子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、硬盤序列號(hào)與MAC地址 dmidecode命令查看內(nèi)存型號(hào) linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載