QOS的拥塞管理

最大的作用就是限速

如何在局域网针对于流量进行限速

前文中提到过,关于令牌桶的问题

默认情况下,如果数据从我这里经过 ,我有设计令牌桶在这里,但是你过去的数据没有拿令牌,是会被丢弃的(默认情况下),当然也会有另外一种情况 ,不丢弃,但是要停留一段时间,直到我的桶里有足够的令牌时,你再拿令牌再出去,但你不会被第一时间转发出去的。

 

1 令牌桶的区分

单速双色,单速三色,双速三色

2 Policing 流量监管

CB-policing/CAR

3 shaping 流量整形

GTS/CB-shaping

 

在路由器本地做一个令牌桶,数据从我这里经过时,拿令牌

 

令牌桶定义

在没有启用QOS机制的默认情况 下,令牌桶机制是没有启动的,需要启用后才有限速能力,启用令牌机制后,所有的着色流量需要拿 到令牌桶中的令牌,(必须要分类,标记)才能正常接受或者发送1bit数据(有时是1Bety数据)1字节=8bit

当接口通过 1bit数据后,同时也要从桶中移除一个令牌,当桶里没有令牌的时候,任何数据默认都不能转发, 所以就可以通过修改向桶里加入令牌的速度的方法来控制实际数据转发的速度 (我可以控制向桶里放令牌的速度),设置这个用户传输数据的速率 被称之为承诺速率CIR,通常以S为单位

 

令牌桶的三种模式

单速双色

一个桶一个速度 ,(速度是向桶中加令牌的速度 )

一个桶的大小是BC,

向桶内加令牌的速度是CIR

T=BC(桶大小)/CIR(加令牌速度) 算出来加满桶需要多长时间,正常情况下T单位时间就是1S 来讨论,那么如果是T=1时,BC=CIR  1除以1 等于1 

 

双色

如果每S实际数据>CIR,这叫做exceed流量 (这时意味着有数据拿不到令牌)

如果每S实际数据<CIR,这叫做conform流量  (这时所有数据都能拿到令牌)

所以令牌桶只能识别出数据有没有超出CIR,超了就叫exceed,没超就叫conform

超出的数据要怎么样?

不是令牌桶说了算,而是需要人为干预,是drop / transmit  

行为是管理员说了算,

流量的确认是令牌桶说了算。

 

QOS防止拥塞实验 qos拥塞管理_QOS防止拥塞实验

 


 如图所示,

现在CIR=700,而实际的数据 500,那么这500个数据 就都可以拿 到令牌,也就意味着他们都 是conform流量,可以被正常的transmit

再假设,现在实际数据为800,那么只有700个字节可以拿到令牌,其它的都100字节将被视为exceed流量,超出的,默认将不会被转发,当然这要看怎么设置

 

单速三色

两个桶,第一个叫BC,第二个叫BE

一个速度,速度还是CIR

BE

并没有向BE这个桶里加令牌的速度 ,

专门用来存放上一秒BC没有用完的令牌的数量。(不会累计存放)

由于每一S都会清空,

所以BE永远没有BC大,最大最大的情况下(BC上一秒没用,全部放到BE中),也是BE=BC

有了两个桶之后,单位时间内可用的令牌数量有何变化?

BC+BE

QOS防止拥塞实验 qos拥塞管理_数据_02

 


三色

每S用户数据≤CIR 为conform 流量 (此时根本就用不到BE)

每S用户数据>CIR+BE为violate流量 (两个桶都装不下了)

CIR<每S用户数据≤CIR+BE为exceed流量 (借于两者之间)

 

两者有什么区别呢?

如果是使用第一种,只配置CIR就OK 了,(所以如果配置中只看到了CIR,那就证明是单速双色,单桶,)

如果是使用第二种,单速三色,配置CIR还要配置BC,(意味着T改变了,)然后再配置BE

只要看到了BC,BE,CIR,(两个桶,三个速度)那肯定是单速三色,(好处在于容忍承诺流量突发,当然只是一瞬间的,不可能永远的实发)

单速三色要比单速双色,更灵活

 

双速三色

两个桶,都有向桶里加令牌的速度

BC   BE

两个速度

PIR CIR

三种情况

QOS防止拥塞实验 qos拥塞管理_数据_03

 


PIR 最高承诺速度(这种情况用PIR来转发) ,用户数据先根据 PIR的大小转发,假设用户数据为B>BE,为violate流量 BE和BC都不减少令牌

BE≥B≥BC 为exceed流量,BE减少B个令牌, 等于是先从后面的桶拿

BC>B 为confrom流量,BE和BC同时减少B个流量

 

对比单速三色有何区别?

双速三色,在单位时间内用的最多的令牌就是BE,而单速三色是BC+BE

并且可以承诺最高带宽能够达到多少,最小是CIR,

设置PIR,设置CIR,

可以承诺最高,和最低(某些应用场景)

只要是存在PIR, 那肯定就是双速三色

 

令牌桶总结

QOS拥塞管理的流量整形和流量监管都 是用令牌桶机制来实现需求,不管用哪种令牌桶机制,都 是在对用户数据的流量进行规范和控制 ,可以对exceed,conform,voilate流量进行规范和控制,可以对exceed,conform,voilate,流量进行transmit drop remark(重定义)等进一步的QOS行为

完全可以做到任何动作,即便是没有拿到令牌的流量,也给你forward,等等,

也可以让你拿到令牌的drop,

要很清楚一点,

令牌的意义就在于区分流量,为的就是后面的这个动作 (transmit , dorp , remark )

 

QOS的流量监管 Policing 

Policing,一刀切,只要超了,就给你丢了   ,会丢包,慢

Policing

1 cb-policing

Cb-policing 来做限速 ,流量被令牌桶区分出来以后,可以用Policing定义为transmit drop remark 重定义

可以用MQC来做

QOS防止拥塞实验 qos拥塞管理_hapi_04

Police 8000000 (bits)  1000 (Byte) 1000  (Byte)

       CIR         BC            BE   //显然这是单速三色 

而如果我只用了一个

Police 80000 ,那么这条命令代表了什么呢? //我配了一个单速双色

QOS防止拥塞实验 qos拥塞管理_ci_05

 


看到PIR了吧

 

QOS防止拥塞实验 qos拥塞管理_hapi_06

 


以上是一个单速双色的实例,匹配去往server 的流量,限制速度为512000,不超动作是传输,超了为drop 

QOS防止拥塞实验 qos拥塞管理_ci_07

 


 

QOS防止拥塞实验 qos拥塞管理_数据_08

 

 

2 car

Car 就是一句话,最简单的限速方法, 也更加的直观,当然,两者不可以同时存在,

CAR不支持channel tunnel 以及不支持CEF的接口

在一个接口下可以配置100个CAR,会消耗CPU资源

专门用做CAR 的ACL  access-list rate-limit x

接口下

Rate-limit output 10000000(CIR) 5000(BC字节)5000(BC+BE)

就一句话

R1(config-if)#rate-limit output ?   //接口下命令
  <8000-2000000000>  Bits per second  直接设置CIR
  access-group       Match access list   //可以调用普通的ACL
  dscp               Match dscp value  //也可以调用DSCP
  qos-group          Match qos-group ID  //qos-group
 
R1(config-if)#rate-limit output 
R1(config-if)#rate-limit output access-group ?
  <1-2699>    Access list index       //可以调用普通 的ACL
  rate-limit  Match rate-limit access list  //也可以调用CAR自己的ACL
rate-limit output access-group 1 8000000 500000 500000 conform-action transmit exceed-action drop

在接口下,启用CAR方式的限速,匹配ACL 1 的流量,CIR为1M BC (BC+BE) 限制内动作转发,超出动作为丢弃

在接口下可以配置很多个(100个)rate-limit

CAR,是在出接口路由器上最简单,最直接的配置方式,不需要其它的,直接干就完了

 

QOS的流量整形  Shaping

Shaping 中存在buffer ,会将超过限制的流量放到buffer中缓存,然后在网络还可以的情况下,再拿缓存的流量拿出来发送            不会丢包,也慢

只不过和policing之后配置方法的关键字区别

CB- Shaping

无BE shaping 配置

Policy-map xx
Class xx
Shape average 100000 12000  //当然也可以只配置CIR不配置BC
                 CIR    BC
T 值 将会自动 计算 12000/1000000=120ms    //只有BC,这是什么?单桶双色
还记得之前我们提到的吗?之前是按T=1来讨论的,完全是为了方便理解 ,而在实际中T真的不等于1 ,如果是1的话,就太慢了,

有BE shaping 配置

Policy-map bb
 Class aa
  Shape average 1000000  12000 6000
                  CIR     BC  BE   //出现了BE这是什么?单桶三色~

对于shaping 的单桶单速率无BE,桶的大小为BC,也就是CIR

如果一个数据包来,令牌 够用,转发,同时减少令牌的相应数量,

如果一个数据包来,令牌不够用,等下一个TC的注入令牌,从宏观效果来看,总体速率保持在CIR

对于shaping的单桶单速率有BE,桶的大小为BE+BC,该类型的shaping 增加了对突发流量的容忍能力,但是从宏观效果来看,总体速率还是保持在CIR 

 

-------------------------------

CCIE成长之路  --- 梅利