步骤:
1.全局启用mls qos 2.进入接口模式
3.通过COS将数据报分配到不同的队列中去。
wrr-queue cos-map QUEUE-ID THROSHOLD COS1... COSn 它用于配置cos值到出站队列的映射关系。
对队列进行编号时,从低优先级开始,到严格优先级结束。 配置严格优先级队列:wrr-queue priority-queue 4.配置WRR队列的权重
wrr-queue bandwidth WEIGHT1 WEIGHT2 WEIGHT3 WEIGHT4 计算每个队列的方法是:
example:wrr-queue bandwith 1 2 3 4 则带宽: 队列1:权重1/总权重=1/10
5.定义传输队列长度的比例,取值为1-100%
wrr-queue queue-limit LOW-PRIORITY-QUEUE-WEIGHT
MEDIUM-PRIORITY-QUEUE-WEIGHTS HIGH-PRIORITY-QUEUE-WEIGHTS
高优先级队列因为延时小,数据量小,所以不需要太大的缓存区。往往将大部分缓冲区用于低优先级队列。
拥塞避免 1.尾丢弃
对所有通信流平等对待,将导致TCP全局同步
wrr-queue threshold QUEUE-ID THR1% 100% THR1%是开始丢弃通信流时输出队列的填满程度,后面一个是100%是尾丢弃 2.WRED
WRED与RED的区别在于前者引入IP优先权DSCP值来区别丢弃策略,可以为不同IP优先级DSCP设定不同的队列长度、队列阈值、丢弃概率。并且RED只对TCP流量有用
通过对队列数据流传输速度的平均值计算来决定是否丢弃,防止了对突发流量的不公平待遇。 WRED和LLQ矛盾
WRED往往和WRR一起使用。
WRED可以在接口上进行配置,也可以在policy上进行配置,可以针对于
precedence进行RED,也可以针对于DSCP值进行RED,当然,两者之间只能选择一个。 (1)基于DSCP
random-detect dscp-based
random-detect dscp {DSCP} {min max mark} (2)基于ip precedence random-detect
random-detect precedence {PRECEDENCE} {min max mark} WRED与WRR连用: wrr-queue random-detect min-throshold QUEUE-ID THR1% [THR2% [THR3% ...]] wrr-queue random-detect max-throshold QUEUE-ID THR1% [THR2% [THR3% ...]]
min-throshold表示开始丢弃某些数据包时的最大填满程度 max-throshold表示丢弃所有数据包时的最大填满程度 example: int G1/1
wrr-queue bandwidth 50 75 wrr-queue queue-limit 100 50
wrr-queue random-detect min-throshold 1 50 70 wrr-queue random-detect max-throshold 1 75 100 wrr-queue cos-map 1 1 0 2 wrr-queue cos-map 1 2 3 wrr-queue cos-map 2 1 4 wrr-queue cos-map 2 2 6
priority-queue cos-map 1 1 5 7 rcv-queue cos-map 1 1 0 switchport
解释:共有两个队列。当队列1的填满程度达到50%和70%时,交换机分别对映射到闸值1和闸值2的数据包进行WRED(即开始丢弃),当队列1的填满程度达到75%和100%时,交换机分别对映射到闸值1和闸值2的数据包全部丢弃。注意:队列2没有采取WRED。
基于流的WRED(WRED和WFQ结合起来使用)
小的流丢弃的概率小,大的流丢弃的概率大,保护小的流。 命令:
1.启用基于流的WRED。 random-detect flow
2.设置平均深度因素(average depth factor)的值,值必须为2的幂,默认值为4.可选:
random-detect flow average-depth-factor {scaling-factor} 这个参数是改变一个乘法的比例因数.从而改变队列的大小,其实就是改变队列的长度。 3.设置基于流的WRED 的数据流数目,默认值为256 random-detect flow count {number}
流量策略
qos的流程:1.基于流或基于类的分类;2.结合令牌桶进行policing或shaping(CAR或GTS);3.拥塞避免(尾丢弃或WRED);4.拥塞管理(各种队列机制);5.出队。
标记在什么地方进行??(标记可以在进行CAR的时候进行,CAR也可以进行重新标记)
CAR(Committed Access Rate)
CAR通过使用令牌桶TC来进行流量控制。分类后,不需要流控的流量直接继续发送,而需要进行流控的流量就要经过令牌桶。只有当令牌桶中有令牌时,相应的流量才能通过。若没有足够的令牌,要么流量被直接丢弃(policing),要么缓存起来(shaping),等有了足够的令牌后再发送出去。
CAR还可以用来做mark或remark(即可以用来设置ip优先级或重新设置ip优先级)
CAR可以为不同类别的报文设置不同的流量特性和标记特性,即可以对每个类进行CAR。CAR的策略还可以串联处理,比如先对总的流量进行一次限速,然后再对各个类进行小范围的限速。
CAR一般用在网络边界路由器上。可以在一个接口上设置多个CAR策略,数据包依次和多个CAR策略匹配,若没有匹配的,则默认操作时转发数据包。 CAR的使用有以下限制:1.只能对IP流量限速;2.不支持fast EtherChannel;3.不支持隧道接口;4.不支持ISDN PRI接口。 命令:
rate-limit {output|input} {CIR BC BE} conform-action {action} exceed-action {action}
注意:CIR单位是bit/s;而BC和BE的单位是byte/s。
conform-action的条件是指当要发的数据小于正常突发(bc)的时候。
exceed-action是指要发的数据大于普通突发,小于最大突发(be)的时候。 action的选项共有如下这些:
continue 继续执行下一条CAR语句 drop 丢弃数据包 tranmsit 转发数据包
set-prec-continue {precedence} 设置IP优先级并继续执行下一条CAR语句
set-prec-transmit {precedence} 设置IP优先级并转发数据包 set-dscp-continue {dscp} 设置dscp值并继续执行下一条CAR语句 set-dscp-transmit {dscp} 设置dscp值并转发数据包 上面都是只能基于整个接口的流量进行CAR,下面的可以分别针对某个流量或ip precedence或dscp值或MAC地址进行CAR 扩展的配置
1.针对dscp值进行CAR rate-limit {output|input} [dscp DSCP] {CAR BC BE} conform-action {action} exceed-action {action} 2.针对ACL进行CAR
rate-limit {output|input} access-group {ACL NUM} {CAR BC BE} conform-action {action} exceed-action {action} 3.针对限速ACL进行CAR
rate-limit {output|input} access-group rate-limit {ACL NUM} {CAR BC BE} conform-action {action} exceed-action {action}
限速ACL只是一种调用关系:access-list rate-limit {ACL NUM}
{precedence|mac-address} 可以匹配优先级,也可以匹配MAC地址 察看命令:
1.查看限速ACL:show access-lists rate-limit [ACL]
2.查看接口的限速信息:show interfaces [interface] rate-limit policy map中CAR操作
police {CIR BC BE} conform-action {action} exceed-action {acion} violated-action {acion} action的选项同上。
流量整形(shaping)
通常通过缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下再均匀地发送这些被缓冲的报文。 采用的技术为GTS(通用流量整形)。
GTS与CAR的主要区别在于:利用CAR进行报文流量控制时对不符合流量特性的报文进行丢弃,而GTS对于不符合流量特性的报文则是进行缓冲,减少了报文的丢弃,同时满足报文的流量特性。
若报文不需要进行GTS,则不经过令牌桶的处理直接发送。
当因为缺乏足够的令牌而采用GTS后,GTS按一定的周期从队列中取出报文进行发送。每次发送都会与令牌桶中的令牌数作比较。直到令牌桶中的令牌数减少到队列中的报文不能再发送或是队列中的报文全部发送完毕为止。 一般在路由器的出口进行shaping,入口进行policing。 命令:
1.基本的GTS:traffic-shape rate {CIR BC BE}
2.基于ACL的GTS: traffic-shape group {ACL} {CIR BC BE} 察看:
1.查看GTS 的配置信息:show traffic-shape [interface]
2.查看GTS 的统计信息:show traffic-shape statistics [interface] GTS在Frame Relay上的实现 1.在接口上启用GTS:
traffic-shape rate {CIR [Bc [Be]]}
2.当接口收到向后显性拥塞通知(BECN)时,估算流量速率的最低值: traffic-shape adaptive {CIR}
3.以向前显性拥塞通知(FECN)做为BECN 的响应.可选: traffic-shape fecn-adapt GTS在policy map上的实现
GTS还可以定义平均值和峰值的流量整形,并且可以在配置GTS 的时候采用CBWFQ。
配置基于分类的流量整形的步骤如下: 1.定义平均值和峰值的CIR,Bc 和Be:
(config-pmap-c)#shape {average|peak} {CIR [Bc] [Be]} average指的是平均值,peak说得是峰值
2.定义缓冲区上限,默认值为1000.可选:
(config-pmap-c)#shape max-buffers {number-of-buffers} 3.在策略上应用CBWFQ。可选:
(config-if)#service-policy output {policy-name}