Linux 流量控制TC工具各種功能的應(yīng)用
企業(yè)內(nèi)部網(wǎng)絡(luò)有足夠的帶寬可以使用。但是,一般在企業(yè)接入Internet的部分都是一個(gè)有限的流量。為了提高網(wǎng)絡(luò)的使用質(zhì)量,保證用戶(hù)按照網(wǎng)絡(luò)中業(yè)務(wù)設(shè)計(jì)的要求來(lái)使用整個(gè)網(wǎng)絡(luò)的帶寬,可以從流量控制服務(wù)器的角度分析、優(yōu)化Linux系統(tǒng),給企業(yè)服務(wù)帶來(lái)便利和高效。現(xiàn)在對(duì)流量控制(TC)的具體使用做個(gè)介紹。首先是TC的總用法。
TC命令,內(nèi)核支持需設(shè)置QoS support、QoS and/or fair queueing = y。用法為:
#tc [ OPTIONS ] OBJECT { COMMAND | help }
其中
OBJECT := { qdisc | class | filter }
OPTIONS := { -s[tatistics] | -d[etails] | -r[aw] }
下面分別介紹TC中隊(duì)列、分類(lèi)和過(guò)濾器的用法。 
1.TC中隊(duì)列(qdisc)的用法
隊(duì)列的使用中,內(nèi)核支持需設(shè)置QoS support、QoS and/or fair queueing = y。用法為: 
 
- #tc qdisc [ add | del | replace | change | get ] dev STRING
 - [ handle QHANDLE ] [ root | ingress | parent CLASSID ]
 - [ estimator INTERVAL TIME_CONSTANT ]
 - [ [ QDISC_KIND ] [ help | OPTIONS ] ]
 - #tc qdisc show [ dev STRING ] [ingress]
 
其中 
 
- QDISC_KIND := { [p|b]fifo | tbf | prio | cbq | red | etc. }
 - OPTIONS := ... try tc qdisc add <desired QDISC_KIND> help
 - CBQ隊(duì)列(qdisc cbq)的使用中,內(nèi)核支持需設(shè)置 QoS support、QoS and/or fair queueing、CBQ packet scheduler、Rate estimator = y,用法為:
 - ... cbq bandwidth BPS avpkt BYTES [ mpu BYTES ]
 - [ cell BYTES ] [ ewma LOG ]
 
2.TC中分類(lèi)(class)的用法 
分類(lèi)的使用中,內(nèi)核支持需設(shè)置QoS support、QoS and/or fair queueing、Packet classifier API = y。用法為: 
 
- #tc class [ add | del | change | get ] dev STRING
 - [ classid CLASSID ] [ root | parent CLASSID ]
 - [ [ QDISC_KIND ] [ help | OPTIONS ] ]
 - #tc class show [ dev STRING ] [ root | parent CLASSID ]
 
其中 
 
- QDISC_KIND := { prio | cbq | etc. }
 - OPTIONS := ... try tc class add <desired QDISC_KIND> help
 -     TC CBQ分類(lèi)(class cbq)的用法為:
 - <ccid_nobr>
 - <table width="400" border="1" cellspacing="0" cellpadding="2"
 - bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center">
 - <tr>
 - <td bgcolor="e6e6e6" class="code" style="font-size:9pt">
 - <pre><ccid_code> ... cbq bandwidth BPS rate BPS maxburst PKTS [ avpkt BYTES ]
 - [ minburst PKTS ] [ bounded ] [ isolated ]
 - [ allot BYTES ] [ mpu BYTES ] [ weight RATE ]
 - [ prio NUMBER ] [ cell BYTES ] [ ewma LOG ]
 - [ estimator INTERVAL TIME_CONSTANT ]
 - [ split CLASSID ] [ defmap MASK/CHANGE ]
 
3.TC中過(guò)濾器(filter)的用法 
過(guò)濾器的使用中,內(nèi)核支持需設(shè)置QoS support、QoS and/or fair queueing、Packet classifier API = y。用法為: 
 
- #tc filter [ add | del | change | get ] dev STRING
 - [ pref PRIO ] [ protocol PROTO ]
 - [ estimator INTERVAL TIME_CONSTANT ]
 - [ root | classid CLASSID ] [ handle FILTERID ]
 - [ [ FILTER_TYPE ] [ help | OPTIONS ] ]
 - #tc filter show [ dev STRING ] [ root | parent CLASSID ]
 
其中 
 
- FILTER_TYPE := { rsvp | u32 | fw | route | etc. }
 - FILTERID := ... format depends on classifier, see there
 - OPTIONS := ... try tc filter add <desired FILTER_KIND> help
 
TC U32過(guò)濾器(filter u32)的用法: 
 
- ... u32 [ match SELECTOR ... ] [ link HTID ] [ classid CLASSID ]
 - [ police POLICE_SPEC ] [ offset OFFSET_SPEC ]
 - [ ht HTID ] [ hashkey HASHKEY_SPEC ]
 - [ sample SAMPLE ]
 - 或 u32 divisor DIVISOR
 
其中 
 
- SELECTOR := SAMPLE SAMPLE ...
 - SAMPLE := { ip | ip6 | udp | tcp | icmp | u{32|16|8} } SAMPLE_ARGS
 - FILTERID := X:Y:Z
 
TC FW過(guò)濾器(filter fw)的用法:
... fw [ classid CLASSID ] [ police POLICE_SPEC ]
其中 
POLICE_SPEC := ... look at TBF
CLASSID := X:Y
【編輯推薦】















 
 
 


 
 
 
 