企业内部网络有足够的带宽可以使用。但是,一般在企业接入Internet的部分都是一个有限的流量。为了提高网络的使用质量,保证用户按照网络中业务设计的要求来使用整个网络的带宽,可以从流量控制服务器的角度分析、优化Linux系统,给企业服务带来便利和高效。现在对流量控制(TC)的具体使用做个介绍。首先是TC的总用法。
TC命令,内核支持需设置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中队列、分类和过滤器的用法。 1.TC中队列(qdisc)的用法 队列的使用中,内核支持需设置QoS support、QoS and/or fair queueing = y。用法为:
#tcqdisc[add|del|replace|change|get]devSTRING [handleQHANDLE][root|ingress|parentCLASSID] [estimatorINTERVALTIME_CONSTANT] [[QDISC_KIND][help|OPTIONS]] #tcqdiscshow[devSTRING][ingress]
其中
QDISC_KIND:={[p|b]fifo|tbf|prio|cbq|red|etc.} OPTIONS:=...trytcqdiscadd<desiredQDISC_KIND>help CBQ队列(qdisccbq)的使用中,内核支持需设置QoSsupport、QoSand/orfairqueueing、CBQpacketscheduler、Rateestimator=y,用法为: ...cbqbandwidthBPSavpktBYTES[mpuBYTES] [cellBYTES][ewmaLOG]
2.TC中分类(class)的用法 分类的使用中,内核支持需设置QoS support、QoS and/or fair queueing、Packet classifier API = y。用法为:
#tcclass[add|del|change|get]devSTRING [classidCLASSID][root|parentCLASSID] [[QDISC_KIND][help|OPTIONS]] #tcclassshow[devSTRING][root|parentCLASSID]
其中
QDISC_KIND:={prio|cbq|etc.} OPTIONS:=...trytcclassadd<desiredQDISC_KIND>help TCCBQ分类(classcbq)的用法为: <ccid_nobr> <tablewidth="400"border="1"cellspacing="0"cellpadding="2" bordercolorlight="black"bordercolordark="#FFFFFF"align="center"> <tr> <tdbgcolor="e6e6e6"class="code"style="font-size:9pt"> <pre><ccid_code>...cbqbandwidthBPSrateBPSmaxburstPKTS[avpktBYTES] [minburstPKTS][bounded][isolated] [allotBYTES][mpuBYTES][weightRATE] [prioNUMBER][cellBYTES][ewmaLOG] [estimatorINTERVALTIME_CONSTANT] [splitCLASSID][defmapMASK/CHANGE]
3.TC中过滤器(filter)的用法 过滤器的使用中,内核支持需设置QoS support、QoS and/or fair queueing、Packet classifier API = y。用法为:
#tcfilter[add|del|change|get]devSTRING [prefPRIO][protocolPROTO] [estimatorINTERVALTIME_CONSTANT] [root|classidCLASSID][handleFILTERID] [[FILTER_TYPE][help|OPTIONS]] #tcfiltershow[devSTRING][root|parentCLASSID]
其中
FILTER_TYPE:={rsvp|u32|fw|route|etc.} FILTERID:=...formatdependsonclassifier,seethere OPTIONS:=...trytcfilteradd<desiredFILTER_KIND>help
TC U32过滤器(filter u32)的用法:
...u32[matchSELECTOR...][linkHTID][classidCLASSID] [policePOLICE_SPEC][offsetOFFSET_SPEC] [htHTID][hashkeyHASHKEY_SPEC] [sampleSAMPLE] 或u32divisorDIVISOR
其中
SELECTOR:=SAMPLESAMPLE... SAMPLE:={ip|ip6|udp|tcp|icmp|u{32|16|8}}SAMPLE_ARGS FILTERID:=X:Y:Z
TC FW过滤器(filter fw)的用法: … fw [ classid CLASSID ] [ police POLICE_SPEC ]
其中 POLICE_SPEC := … look at TBF CLASSID := X:Y