時間: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)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 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ù)載