带宽是被共享的,因此当做QOS的CAR的时候如果某用户的,没有被限制带宽,则可能会由于,不限速度的用户流量过大而抢占,你所用CAR保证的用户。此时需要用队列技术。
QOS的一些基本概念。
目前QOS有2套方案
1 周期加令牌不允许欠债,该方法增加了丢包率,
2 一次性加入允许欠债,该方法大大减少丢包率。
CIR=放置令牌到桶内的速度这个是一个平均值单位是bps,即1秒内放的令牌个数。  
CBS=令牌桶的尺寸大小
业务流的速度=取令牌的速度
TC=周期性添加令牌的时间间隔cbs/cir=tc
实际中比较常见的有两种实现方式:(1)周期性的添加,添加的时间间隔就是令牌桶的容量与添加速率的比值:T c=CBS/CIR,每次添加的令牌数为CBS 个;
还有种(本次加入令牌的时间-上次加入令牌的时间)XCIR 超额的被丢弃,这种是一次加满没有TC间隔的用于欠债业务以及在本桶内的令牌不足发送业务的时候就会一次性加入多于的丢弃首先需要进行的是还债。TC会增加时延
突发=瞬间消耗桶内所有令牌
EBS=CBS+EBS请不要把EBS和CBS的值设置成一样,否则,超额突发=0最好是大于CBS的2倍,这样允许超额突发
CIR=CBS,EBS=0 则速度就是CIR所约定的,因为CIR是放令牌的速度最终要看CBS是桶大小,这个时候CBS限制了CIR能放的令牌量。
此时业务流量如果持续小于CIR,则会得到CBS的突发量。因为小于CIR是放令牌的速度,业务持续小于CIR,会使得令牌在桶内累计。此时业务如果大于CIR,会因为得不到令牌而被丢弃
CIR>CBS,EBS=0 则速度是桶子的突发尺寸CBS所定义的,此时因为CIR是放置令牌的,但是桶没有CIR所需求的大。那么业务流这个时候只能得到CBS大小的令牌,突发的频率很高,只要业务达到CIR的速度,则每次都会把桶内的令牌消耗完,当然业务流不一定每次都能达到CIR的速度。此时得到的速度其实还是CIR的,因为令牌有个新的办法叫借债,对于业务不足的时候则可以欠债,等下次的时候一次偿还就可以了,主要是为了保护业务的连续性,而且可以缩短时延,但是不能把CBS设置的太小否则借的太多没法还。华为的是一次性加入令牌配合借债来保证业务的连续性。
CIR<CBS ,EBS=0 则发送的速度是CIR所定义的,但这个时候网络允许突发,即有可能网络会发送到CBS所定义的尺寸,当然一旦突发,桶内的令牌就没有了,这个时候需要等待TC周期,(TC=(CBS+EBS)/CIR),因此可能会增大网络时延,当然这只是突发流量才会。这个时候业务速度如果比CIR小,则可能累计出大于CIR的突发流量。因为会持续向桶内添加令牌,直到超过EBS,最后令牌将被丢弃,所以业务如果不去取令牌,会导致令牌积压,之后业务将得到突发。但是如果业务很平均,则不会导致突发,因为CIR每次放入的令牌,都被用户取掉了,当然业务一般不会很平均,因此CIR注入的令牌也不一定能消耗完每次,这样就看你的令牌桶是否允许业务突发了。
-----------------------------------------------------------------------------------------
因此得出,推荐配置CBS=CIR    EBS大于CBS的2倍          最小值=8000/8=1000B,CBS最小=15000/8/1024=1.8KB,CBS最小刚好大于了MTU的1500字节,因此无论如何都可以发出一个数据包的,如果它小于了1500.EBS此时等于0则可能连一个包都发不出,因此不允许小于1.8KB。CIR的速率如果这个时候大于了CBS,则在1秒内超过CBS桶子的尺寸,将被认为是EBS的,EBS=0,因此直接丢弃了。
CIR=8000 CBS=15000 EBS=0 这样的配置,会得到的结果是速度是1000B/s 允许突发到1800B/S 1秒内超过1800B的包就被丢弃。
推荐CBS=CIR的设置,这样不允许突发虽然,但是业务流速度得到保证。
TC可以用来调节业务的时延,(它是不可以配置的,由CBS/CIR=TC得到)因为它是向CBS桶内加令牌的时间间隔。一个业务最多可以得到的就是CBS的令牌数,不过这个还需要累计,在TC时间内,只能加入CIR所设定的令牌数目,因此想达到CBS的量,可能需要积蓄几轮CIR.
降低TC时间可以增加业务突发次数,这样可以获得小时延。
而业务一般,突发,需要累计否则可能是CBS<CIR时那TC时间很小。
其实业务的速度是靠CIR来限制的,业务的时延是靠TC来调节的,但TC是不允许配置的,因此只有CBS和CIR来控制TC。CBS越大TC越大,业务的突发时延间隔越大。
结论,最好将CBS=cir。
我司实现的令牌桶算法是srTCM,但是算法上作了一定的改进,所谓的单桶双色算法。EBS可以配置,但是没有起应有的作用,而是把这个桶放到CBS中,起加深CBS桶的作用。CBS和EBS是合起来算的,也就是说实际的CBS=配置的CBS+EBS。那么当有报文来时,如果报文长度B大于实际的CBS就是红,小于实际的CBS就是绿,没有黄色报文。初始时令牌是满的
在CBQ队列中的AF类,可以提供确保的带宽,即使有拥塞的时候可以确保,EF类是加速的转发可以定义暴发值,它定义的是发送的最大速率,EF类不可以和AF,以及queue-leght同时使用CBQ系统预先定义过一些策略,CBQ的类是用动作方进去的如AF EF,BF。是先需要IF-MATCH之后才能抓到流,然后方到队列执行动作,他们都有一个保障带宽。AF是最小多少,EF是最大多少。taffic-policy是用来进行动作嵌套的,只能嵌套2层。而且要注意父子之间的动作关系,一般是子的动作优先。
CBQ可以预先定义一个给CBQ所使用的带宽,RTP,需要在接口上预留带宽给RTP。H3C只有CBS桶,加令牌的数目是 (当前系统时间-上次加令牌时间)XCIR ,多出来的丢弃
策略中使用具有lr 的行为时,只能应用到接口的出方向。LR是最好的与队列结合的限速,因为可以限制2层速率,而且还有QOS队列调度拥塞EF类其实就是LLQ队列,因此仅仅支持RED丢弃
如果多次使用本命令在同一个行为上配置,后一次的配置将覆盖前面的配置。
-------------------------------------------------------------------------------------------------------
在FR网络内,没有CBS的情况下,即不允许突发,业务报文将等于CBS。TC的大与小直接影响业务时延。
帧中继流量整形方案中为了提高效率,提出了动态Tc 的概念。Tc 参数的大小在10 到
100 毫秒之间,可根据每次发送的报文大小进行动态调节,Tc=size of packet/CIR。
即无论待发送报文大小为多少(小于1500 字节),路由器都会在当前计算出的Tc
时间内,将所需要的全部令牌分发给当前报文
如发送一个800 字节的报文,需要800×8=6400bit 的令牌。设CIR 为64000bps,
则向令牌桶中添加发送该报文令牌需要的时间为6400/64000 = 0.1s(即100ms),
即对于该报文来说Tc 为100ms。100ms 之内令牌桶中添加了6400bit 的令牌,该
报文即被送出。特殊的,此时如果CIR 为8000bps,业务等于64000bit则该报文的令牌时间为
64000/8000=800ms>100ms,但是由于Tc 参数大小被定义在10ms 到100ms 之间
滑动,此时Tc 取其下限值为100ms,而不是计算得到的800ms。同样的,如果此
时CIR 为1024000bps,则该报文的令牌时间为6400/1024000=6.25ms<10ms,但
是由于Tc 参数大小被定义在10ms 到100ms 之间滑动,所以该报文的Tc 取其上限
值10ms。
由于CBS 与EBS 的和是令牌桶的大小,同时路由器是一次性分配令牌给待发送报
文,为了使令牌桶中的令牌能够满足任何大小报文的发送,特别是大报文的发送,
比如1500byte 的报文,该报文发送需要1500×8=12Kbit 的令牌。故CBS 不得小于
15K,同时建议客户配置CBS 的大小等同CIR 的大小。
按照标准协议中规定,若Tc = 20ms,CIR 为64000bps,则每个Tc 时间内只能添
加0.02×64000 = 1280bit 的令牌。如发送长度为800 字节的报文需要5 个Tc,即
添加5 次令牌才能将该报文发送出去。与标准协议的实现方式相比,我们在一个动
态Tc 中只需添加一次令牌就可将该报文发送出,大大提高了提高工作效率