Cisco路由器上的CAR的机制和实现方法


前言
许多单位因为工作需要,都建立了单位的内部网络,大型的企业和单位可能还建立了广域网(WAN) 。网络上的应用类型种类繁多,为了保障主要应用的良好运作,必然要在网络上进行流量控制 。一种方法是购买一些流量控制的产品如PacketShaper,但是这类产品价格比较昂贵,使得用户不能大面积的在全网范围内部署;第二种方法就是在企业网广泛使用的CISCO路由器上使用CAR流量控制策略 。
一、什么是CAR
CAR是Committed Access Rate的简写,意思是:承诺访问速率 。
1.CAR的作用
CAR主要有两个作用:对一个端口或子端口(subinterface)的进出流量速率按某个标准上限进行限制;对流量进行分类,划分出不同的QoS优先级 。
2.CAR的适用范围
CAR只能对IP包起作用,对非IP流量不能进行限制,另外CAR只能在支持CEF交换(Cisco Express Forward)的路由器或交换机上使用 。所以只有Cisco 2600系列以上的型号才可以使用CAR 。以下这些interface上也不能使用CAR:
Fast EtherChannel interface
Tunnel Interface
PRI interface
3.CAR的运作机制
CAR可以看成是数据包分类识别(packet classification)和流量控制(access rate limiting)的结合 。其工作流程可以从下图指出:
第一步的Traffic Matching是首先从数据流中识别出感爱好的流量 。所谓感爱好的流量,是指用户希望对其进行流量控制的数据包类型 。用户可以选择以下几种不同的方式来进行流量识别:
(1)全部的IP流量,这样可以把所有的IP流量采用统一的流量控制策略 。
(2)基于IP前缀,此种方式是通过rate-limit access list来定义的 。
(3)QoS 分组
(4)MAC地址,此种方式通过rate-limitaccess list来定义 。
(5)IP access list,可通过standard或extended access list来定义 。
在第一步采用上述方法识别到了感爱好的流量后,进行第二步的流量衡量(traffic measurement) 。CAR采用一种名为token bucket的机制来进行流量衡量 。见下图:
图中的token可以看成是第一步的traffic matching所识别到的感爱好流量,该种流量的数据包进入一个bUCket(桶)内,该bucket的深度则由用户定义,在进入该token bucket后,以用户希望控制的流量速率(此流量速率并非该类流量的实际速率,而是用户希望该类流量的速率上限)离开该bucket,执行下一部操作(conform action) 。在这里,对于实际流量速率的不同,可以看到会有两种情况发生:
(1)实际流量小于或等于用户希望速率,这样,明显地,token离开bucket的实际速率将和其来到的速率一样,bucket内可以看作是空的 。流量不会超过用户的希望值 。
(2)实际流量大于用户希望速率 。这样,token进入bucket的速率比其离开bucket的速率快,这样在一段时间内,token将填满该bucket,继续到来的token将溢出(excess)bucket,则CAR采取相应的动作(一般是丢弃或将其IP前缀改变以改变该token的优先级) 。这样就保证了数据流量速率保证在用户定义的希望值内 。
二、如何配置CAR
一般来说,CAR比较适合部署在网络的边缘部分,我们的一般做法也是在分关路由器上部署CAR 。配置CAR主要包括以下几部分:
1.确定“感爱好”的流量类型,主要通过下列方式确定:
(1)所有的IP流量
(2)基于IP前缀
(3)基于QoS分组
(4)基于MAC地址
(5)基于standard或extended的IP Access list
一般最常用的是第五种方式 。用户可以使用standard ip access list来确定哪些进行访问(被访问)的IP的流量需要进行rate-limit,也可以用extended ip access list来确定哪些访问(被访问)的IP的协议类型流量(如HTTP,FTP)需要进行rate-limit 。例如我们想限制用户到内部网站上浏览网页的速度,则可以采用如下的access list来定义流量:

推荐阅读