CAR:
承诺访问速率(CARCommited Access Rate)是一种流量策略的分类和标记的方法,
它基于IP 优先级、DSCP 值、MAC 地址或者访问控制列表来限制IP 流量的速率。标记则可以
改变IP 优先级或者DSCP
CAR 使用令牌桶的机制,检查令牌桶中是否有足够的令牌。如果一个接口有可用的令牌,令牌可以从令牌桶中挪走,数据包被转发,当这个时间间隔过去后,令牌会重新添加到令牌桶中。如果接口没有可用的令牌,那么CAR 可以定义对数据包采取的行为。CAR 使用3 种速率定义来定义流量的速率:
Normal rate(正常的速率):令牌被添加到令牌桶中的平均速率,就是数据包的平均传输速率。
Normal burst(正常的突发):正常的突发时在时间间隔内允许正常流量速率的流量。
Excess burst(过量突发):超过正常突发的流量。当配置过量突发时,会借令牌并且
将它添加到令牌桶中来允许某种程度的流量突发。当被借的令牌已经使用后在这个接口
上收到的任何超出的流量会被扔掉。流量突发只会发生在短时间内,直到令牌桶中没有
令牌存在才停止传输。
通常建议正常的流量速率配置为等于在一段时间内的平均流量速率。正常的突发速率应
当等于正常速率的1.5 倍。过量速率是正常突发速率的2 倍。
DSCP:差分服务代码点
主要是是数据包中的TOS或者COS来标记的。比如IP优先级之类的。
 
IETF Diffserv工作组 正在进行使用户可以使用IP报头中的 ToS字节中的 6bit用来标记DSCPQOS之CAR_其他
 
TOS 整个字段一共 8位,下图中是 ip precedence 的标识方法,使用前三位,也就是 P0P1P2 一共三位,共 8 bit 位,也就是 8 个优先级,分别是0-7,其中67一般保留,常用的是 0-5,图中下面部分介绍的事 IP 优先级的含义,提供这个表格的意义在于 进行更改数据包优先级等配置时,我们既可以使用数字,也可以使用名称。
QOS之CAR_休闲_02
分类是没有范围限制的,也就是说我们可以对数据进行灵活的分类,比如说把某一个源ip 到目的 ip 的流量优先级进行更改 IP 优先级或者 DSCP 的操作。也可以定义去更改某一个特定的流量(扩展控制列表)的优先级。
 
R1(config)#int s0/0/0
R1(config-if)#rate-limit output access-group 101 64000 12000 16000 conform-action
set-prec-transmit 3 exceed-action set-prec-transmit 0
//以上在接口上启用CAR,对于符合ACL 101 的流量,平均速率为64000 /秒,正常突发
量为12000 字节/秒,过量突发量为12000 字节/秒。
R1(config-if)#rate-limit output access-group 102 16000 8000 9000 conform-action
set-prec-transmit 2 exceed-action drop
R1(config-if)#rate-limit output 48000 8000 10000 conform-action set-prec-transmit
0 exceed-action drop
R1(config)#access-list 101 permit tcp any any eq www
R1(config)#access-list 102 permit tcp any any eq smtp
【技术要点】rate-limit 的命令格式为:
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 值并转发数据包
 
 
 
试验:
R1(config-if)#rate-limit output ?
  <8000-2000000000>  Bits per second
  access-group       Match access list   使用访问控制列表做对象
  dscp               Match dscp value    使用差分服务代码访问点做对象
  qos-group          Match qos-group ID
 
R1(config-if)#rate-limit output access-group 3 64000 15000 36000 ?
  conform-action  action when rate not exceeded
 
 
rate-limit output access-group 3 64000 1600 36000 conform-action transmit exceed-action drop
 
案例配置参考:
 
enable
config t
hostname R1
int s1/0
ip add 192.168.30.1 255.255.255.0
no shutdown
int fa2/0
ip add 192.168.2.1 255.255.255.0
no shut
exit
access-list 3 permit 192.168.2.0 0.0.0.255
access-list 4 permit 192.168.11.0 0.0.0.255
access-list 101 permit tcp any any eq www
access-list 102 permit udp any any eq tftp
int s1/0
rate-limit output access 3 64000 16000 36000 conform-action transmit exceed-action drop
rate-limit output access 4 35000 17000 27000 conform-action transmit exceed-action drop
rate-limit output access 101 64000 26000 46000 conform-action transmit exceed-action drop
rate-limit input access 102 64000 16000 36000 conform-action transmit exceed-action drop
end
show run
show int s1/0