您的位置:首页 > 其它

QOS-6 管制policing和整形shaping

2016-07-08 19:28 363 查看
session 1 限速技术的两种类型

一、管制policing(限速)和整形shaping

      在限速技术中,管制和整形是两种方案。与队列技术不同,这两种技术是分开的不是相辅相成的,没有关系的两种解决方案,两种策略而已,并且根据不同的情况只能有一种策略被执行,所以这两种技术也被分开叫管制和整形,不像拥塞管理和拥塞避免都统称为队列技术。限速这个说法是在早期的cisco中的叫法,当时的限速只能基于接口来做,而不能基于类CB来做,所以叫做限速,IOS12.2以后的版本可以基于类来做了,已经不叫限速了,而是分成两个技术了,但是作用都是用来限制入站流量的速率的。

      整形:对于出站流量,来源于更好的让对方接受(来源娱乐圈整容,更好的让大众接受)将不重要的数据包进行buff缓存(突发流量),会导致数据包延迟。当数据包超过buffBuff存储入战流量,当buff满了:也一样执行丢弃操作。

使用范围:
1、管制,主要是用于isp和企业网的边界处,isp对于进入的流量进行QOS重新标记和速率限制,支持双向。
2、整形,主要是针对于企业site之间,用于星星网络结构中中心site与多分支site速率不匹配的时候进行流量整形使site之间的速率一致。只支持output方向。
管制是重在管理流量的速度和标记,而整形是重在通过放慢传输数据量达到两端传输速率一致

二、管制即流量限速技术,它使用令牌桶的概念来对于双向流量都可以起到限速作用,令牌桶的大小就是接口的buff缓存容量(可以修改),在流量管制policing中对流量所采用的动作根据令牌桶的数量不同而不同,在policing中最多可以分配出两个令牌桶,第一个令牌桶叫做BC用于承载超出定义速率的突发流量,第二个令牌桶叫BE用于承载超出BC桶的流量。

管制policing中的参数
BC:burst size 突发流量的大小
BE:exceed burst超出的流量
TC:time interval 时间间隔,1/8s,因为BC单位是bit而CIR单位是Byte,所以为了转换TC被设置1/8s
CIR:承诺速率,计算公式:BC/TC。指流量每秒的速率。BC=CIR*TC=CIR/8,cir=800,则bc应=1000

PIC: 最大速率

violate:违规的流量,be桶也容不下的流量

1、在policing中对流量有两种作用:

1.1、可以重新标记数据包的ipp或dscp值

1.2、对数据包进行丢弃处理,针对流量的速率进行限制,超出的流量进行丢弃PHB的动作

三、policing和shaping都是用到了接口的buff(令牌桶大小)来存储超出速率的数据流量,当buff被填满后根据指定的策略和令牌桶的数量进行动作,处理动作分为单令牌桶和双令牌桶,具体和配置有关:

1、对流量限制只配置了单令牌桶:数据量超过了令牌桶的大小。数据太大而不能进入buff的数据包会被drop

2、对流量限制只配置了双令牌通,数据量超过了第一个bc桶的大小时可以执行两种动作:

      1)和单令牌桶一样drop

      2)或者将超出第一个bc桶的流量放入第二个be桶,期间也可以修改数据包的ipp和dscp以及执行PHB,超出be桶的流量将被drop(对违规的流量只有drop选项并且不能修改)

      管制中令牌桶的色是指对于超出设定速率的数据的动作,分别是符合条件的数据包conform、超出限额的数据包exceed、违反最大限额的数据包violate。

session 2 管制policing的配置

单令牌桶的双色配置:

R1(config)#class-map match-all http

R1(config-cmap)#match protocol http

R1(config-cmap)#exit

R1(config)#policy-map policing 
R1(config-pmap)#class http

R1(config-pmap-c)#police cir 16000 bc 3000 conform-action transmit exceed-action transmit

使用管制设置入站http流量的速录为16000bit(2KB),用于突发流量的bc桶体积3KB,动作为没有超出bc桶大小的流量transmit(转发),超出bc桶大小的流量也transmit传输

R1(config-pmap-c)#exit

R1(config-pmap)#class class-default
R1(config-pmap-c)#police cir 8000 bc 1500 conform-action transmit exceed-action drop
使用管制设置入站其余流量的速录为8000bit(1KB),用于突发流量的bc桶体积1.5KB,动作为没有超出bc桶大小的流量transmit(转发),超出bc桶大小的流量drop丢弃
R1(config-pmap-c)#exit

R1(config)#interface f0/0

R1(config-if)#service-policy input policing    本次用在入站方向

双令牌桶的三色配置:

R1(config-pmap-c)#police cir 8000 bc 1500 be 1500 conform-action transmit exceed-action transmit violate-action drop

      使用管制设置入站http流量的速录为8000bit(1KB)/s,用于突发流量的bc桶体积1.5KB,最大允许突发速率为16000bit/s,用于承载溢出bc桶流量的be桶的大小为1500Byte,动作为允许bc桶中的流量转发,超出bc桶大小的流量进入be桶允许transmit传输,超出be桶的违规流量将被drop

双令牌桶的三色配置+最大速率限制:

R1(config-pmap-c)#police cir 8000 bc 1500 pir 16000 be 1500 conform-action set-prec-transmit 3 exceed-action transmit violate-action drop

       使用管制设置入站http流量的速录为8000bit(1KB)/s,用于突发流量的bc桶体积1.5KB,最大允许突发速率为16000bit/s,用于承载溢出bc桶流量的be桶的大小为1500Byte,动作为bc桶中的流量(也就是合法的能被转发出去的流量)将被重新标记其ipp为3并且转发,超出bc桶大小的流量进入be桶也transmit传输,超出be桶的违规流量将被drop

单令牌桶的数据包数量限制:

R1(config-pmap-c)#police rate 50 pps burst 30 packets  conform-action transmit exceed-action drop

      使用rate限制数据包数量,转发速率限制为50个包/s,允许突发流量bc为30个包,动作没有超出bc桶的流量转发,超出bc的流量被drop

双令牌桶的数据包数量限制:

R2(config-pmap-c)#police rate 10 pps burst 5 packets peak-rate 15 pps peak-burst 5 packets conform-action set-prec-transmit 3 exceed-action transmit violate-action drop

       使用rate限制数据包数量,转发速率限制为10个包/s,允许突发流量bc为5个包,最大允许突发速率15个包/s,允许be桶的数据包为5个,动作没有超出bc桶的流量进入be桶转发,超出be桶的流量被drop

session 3 整形 shaping

       整形与管制一样都是将超出速率的数据包放入buff内,但是整形相比管制要宽松许多,尽量的不丢包而是延迟转发,主要用于两端速率不匹配,又不能丢弃数据包时使用,将流量缓存至buff中,等待单位时间内链路空闲然后在转发buff内的数据包,从而降低丢包的几率,但是这样也会增加延迟,只适合做一些文件传输、下载等 ,而不适合语音和视频等对延迟敏感的流量。

 

shape整形的配置:

R1(config)#class-map match-all http

R1(config-cmap)#match protocol icmp
R1(config-cmap)#exit

 

R1(config)#policy-map shpe

R1(config-pmap-c)#bandwidth 256             给http流量分配256k带宽

R1(config-pmap-c)#shape average 40000   限制流量(整形为)平均速率CIR为40000bit/s=5KB/s

R1(config-pmap-c)#exit

 
R1(config)#interface f0/0

R1(config-if)#service-policy output shape   使用在接口出站ouput方向

补充参数:

R1(config-pmap-c)#shape peak 80000     限制流量(整形为)最大速率CIR为80000bit/s=10KB/s

 

R1(config-pmap-c)#shape average 40000 8000 8000

限制流量(整形为)平均速率CIR为40000bit/s=5KB/s,bc桶大小为8000bit,be桶大小为8000bit,官方建议bc和be使用默认值8000不建议修改!在ios中打?可以看到提示。

 

实验:使用policing管制来控制icmp流量,拓扑为R1连接R2,都是f0/0接口,在R1的f0/0接口out方向做policing,来管制R1去往R2的icmp流量,配置如下:

R1#show policy-map          

  Policy Map policing

    Class icmp
      Bandwidth 16 (kbps) Max Threshold 64 (packets)        给icmp分配了2KByte的带宽

     police cir 8000 bc 1000                      使用policing控制icmp流量速率为1Kbyte/s,允许突发流量为1000

 conform-action set-prec-transmit 6      动作:超过bc容量的icmp流量被drop没有超过cir速率(bc容量)的转发并且重标记icmp的ipp为6,    

       exceed-action drop                          超过bc容量的icmp流量被drop      

    Class class-default

      Bandwidth 8 (kbps) Max Threshold 64 (packets)

      Traffic Shaping

         Average Rate Traffic Shaping        其余是所有流量我使用了shape整形

         CIR 8000 (bps) Max. Buffers Limit 1000 (Packets)  速率限制为1Kbyte/s,缓存1000个数据包

 

       然后在接口f0/0的out方向上使用policy-map策略,然后分别用普通ping和1000byte的icmp去pingR2的环回接口2.2.2.2,在R1与R2之间抓包查看数据包是否能转发,能转发的icmp的ipp是多少

结果如下:

1、普通ping

R1#ping 2.2.2.2             

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 16/18/20 ms



可以ping通,没有超过cir速率,并且icmp数据包的ipp被标记位6

 

2、使用大byte包ping

R1#ping

Protocol [ip]:

Target IP address: 2.2.2.2

Repeat count [5]:

Datagram size [100]: 1000

Timeout in seconds [2]:

Extended commands
:

Sweep range of sizes
:

Type escape sequence to abort.

Sending 5, 1000-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

.....

Success rate is 0 percent (0/5)
可以看到ping了5个1000byte的数据包已经超过了policing的cir速率了,被丢弃了。

 

R1#show policy-map interface f0/0

 FastEthernet0/0

  Service-policy output: policing

    Class-map: icmp (match-all)

      5 packets, 5070 bytes

      5 minute offered rate 0 bps, drop rate 0 bps

      Match: protocol icmp

      Queueing

        Output Queue: Conversation 265

        Bandwidth 16 (kbps)Max Threshold 64 (packets)

        (pkts matched/bytes matched) 0/0

        (depth/total drops/no-buffer drops) 0/0/0

      police:

          cir 8000 bps, bc 1000 bytes

        conformed 0 packets, 0 bytes; actions:

          set-prec-transmit 6

        exceeded 5 packets, 5070 bytes; actions:          这里看到超出bc桶容量的5个icmp包的直接被drop了 

          drop                              在没有设置be桶的时候exceeded就对应的超出bc桶时候的执行策略drop
        conformed 0 bps, exceed 0 bps

    Class-map: class-default (match-any)

      7 packets, 714 bytes

      5 minute offered rate 0 bps, drop rate 0 bps

      Match: any

      Queueing

        Output Queue: Conversation 266

        Bandwidth 8 (kbps)Max Threshold 64 (packets)

        (pkts matched/bytes matched) 0/0

        (depth/total drops/no-buffer drops) 0/0/0

      Traffic Shaping

           Target/Average   Byte   Sustain   Excess    Interval  Increment

             Rate           Limit  bits/int  bits/int  (ms)      (bytes) 

             8000/8000      2000   8000      8000      1000      1000    

        Adapt  Queue     Packets   Bytes     Packets   Bytes     Shaping

        Active Depth                         Delayed   Delayed   Active

        -      0         7         714       0         0         no

抓包中看不到任何数据包,因为在R1的f0/0接口就被丢弃了,所以没有办法抓取到了。

 

session 4 在交换机上做QOS

在交换机上也可以做三层的QOS,前提是三层交换机(可以关闭三层功能no ip routing)

前提是要开启mls qos

xkyxbg2-3(config)#mls qos                                                            开启QOS功能

xkyxbg2-3(config-ext-nacl)#permit ip host 172.17.17.243 any

xkyxbg2-3(config-ext-nacl)#exit

xkyxbg2-3(config)#class-map match-all x

xkyxbg2-3(config-cmap)#match access-group name net243        

xkyxbg2-3(config-cmap)#exit

 

xkyxbg2-3(config)#policy-map x

xkyxbg2-3(config-pmap)#class x                                                               对匹配class为x的流量限制

xkyxbg2-3(config-pmap-c)#police 16000 16000 exceed-action drop      限制进入流量2K,突发2K,超出丢弃

xkyxbg2-3(config-pmap)#class class-default                                            其余流量不限制

xkyxbg2-3(config-pmap)#exit

 

xkyxbg2-3(config)#interface f0/2

xkyxbg2-3(config-if)#service-policy input x

xkyxbg2-3(config-if)#exit
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: