本帖最后由 宅男女神 于 2015-7-22 16:16 编辑
QOS系列之对shaping的正确理解
案例一:N1去往N2的流量有6条,分别是IPP1,IPP2,IPP3,IPP4,AF31,EF,如果在R1的S0/0接口要实现以下需求应该如何完成? IPP1==>100K IPP2==>500K IPP3==>200K IPP4=800K AF31==>100K EF==>100K 1.体现shape average 延迟不适合voice 2.体现shape average 令牌桶算法 3.如何配置shape average 第一步、将此六类量分别用class-map匹配。 class-map match-all EF match ip dscp ef class-map match-all AF31 match ip dscp af31 class-map match-all IPP1 match ip precedence 1 class-map match-all IPP3 match ip precedence 3 class-map match-all IPP2 match ip precedence 2 class-map match-all IPP4 match ip precedence 4 第二步、将6类流量分配应有的带宽,接口带宽实际上有2000kbps,并且只能使用shape average 来分配带宽。 policy-map SHAPING class IPP1 shape average 100000 默认TC=80 class IPP2 shape average 500000 默认TC=24 class IPP3 shape average 200000 默认TC=40 class IPP4 shape average 800000 默认TC=25 class AF31 shape average 100000 默认TC=80 class EF shape average 100000 默认TC=80 此值是根据带宽来的,带宽越大默认TC相对就越小。BC越大. 第三步、将此policy-map在接口下调用 service-policy output SHAPING 第四步、查看调用后的现象 QoS-R1#sho policy-map Policy Map SHAPING Class IPP1 Traffic Shaping Average Rate Traffic Shaping CIR 100000 (bps) Max. Buffers Limit 1000 (Packets) CIR=100kbps shaping queue=1000个包通过此命令 shape max-buffers 4096 此值越大语音队列感受到的延迟越大,也就意味抖动可能会随之增加 QoS-R1#sho policy-map int s0/0 Serial0/0 Service-policy output: SHAPING Class-map: IPP1 (match-all) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps 5分钟通过的速率及丢包率 Match: ip precedence 1 Traffic Shaping Target/Average Byte Sustain Excess Interval Increment 最终速率/CIR 最大限制 维持部分 超出部分 TC 每次增量(BC) BC通过调维持部分 Rate Limit bits/int bits/int (ms) (bytes) 100Kbps 2000byte= 8000b/8 +8000b/8 80ms BC=CIR*TC/8=1000byte 100000/100000 2000 8000 8000 80 1000 CIR可控,shape average 100000 10000 10000 超出值只在shap peak 调才有意义 Adapt Queue Packets Bytes Packets Bytes Shaping Active Depth Delayed Delayed Active - 0 0 已转发 0 0等待过的 0 no 此时没有流量被整形 FR时才用 当前que深度 QoS-R1#sho queueing int s0/0 Interface Serial0/0 queueing strategy: fair Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: weighted fair Output queue: 0/1000/64/0 (size/max total/threshold/drops) Conversations 0/2/256 (active/max active/max total) Reserved Conversations 0/0 (allocated/max allocated) Available Bandwidth 1500 kilobits/sec 有效带宽是1500kbps 可以用命令max-reserved-bandwidth 100 默认75% Shaping average: CIR=BC/TC 虽然有BE的定义但是没有实际意义. 1.如果CIR不变,TC越大,那么在一个TC内速率差距就打,因为TC大,CIR不变,那么BC就肯定大,BC一大每次填充的令牌就多,那么突发就变得很大. CIR=500kbps BC=5 000 000 bite 此时的TC=10s 如果想让流量变得平稳些,就把BC调的尽量小. 结论:shaping average 不管链路带宽是否紧张,我只需要CIR以内的速度传输数据. Shaping peak: CIR(peak)=(BC+BE)/TC 此时影响流量突发的不仅仅是BC还有BE. 1.如果不拥塞情况下使用peak,设置如下: CIR=500 000 bps BC=250 000 bite BE=250 000 bite 那么TC=BC/CIR=0.5s=500ms 由于情况是不拥塞,所以CIR(peak)=(BC+BE)/TC=500 000 / 0.5=1 000 000 bps = 1M 其他条件不变的情况下将BE=150 000bite CIR(peak)=400 000 / 0.5=800 000bps = 800 kbps 结果得到证实 2.如果拥塞了情况又会怎样呢?设置如下: CIR=500 000 bps BC=250 000 bite BE=150 000 bite 那么TC=BC/CIR=0.5s=500ms (由于其他子队列有带宽保证,所以此队列保证了200kbps) 在不拥塞的情况下:CIR(peak)=800kbps 拥塞时:CIR(peak)=560kbps 也就是BE只有在有带宽空闲时用. 结论:shaping peak 当流量想在带宽紧张时 不能超过CIR的速度, 在不紧张时 不超过CIR(peak).也不至于带宽浪费.我最需要的是CIR(peak)的速度,实在不行CIR也可以.
感谢华尔思李彬文
|