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