流量控制系列手册页:tc-cbqCBQ原文最近更新时间:2001年12月16日来源http://lartc.org/ 到索引 名字CBQ - 基于类别排队(Class Based Queueing)摘要tc qdisc ... dev dev (parent classid | root) [ handle major: ] cbq [ allot bytes] avpkt bytes bandwidth rate [ cell bytes] [ ewmalog ] [ mpu bytes ]tc class ... dev dev parent major:[minor] [ classid major:minor] cbq allot bytes [ bandwidth rate ] [ rate rate] prio priority [ weight weight] [ minburst packets] [ maxburst packets ] [ ewma log] [ cell bytes] avpkt bytes[ mpu bytes] [ bounded isolated ] [ split handle& defmapdefmap ] [ estimator interval timeconstant] 简介CBQ实现了一个丰富的共享连接的类别层次,既有固定(shaping)带宽的能力,也具有带宽优先级管理的能力。带宽固定是通过计算连接的空闲时间完成的。空闲时间的计算标准是数据包离队事件发生的频率和下层连接(数据链路层)的带宽。带宽固定算法当把一条10mbit/s的连接限制为1mbit/s时,这条连接将有90%的时间是空闲的。如果不是,它就会调低带宽以满足90%空闲时间的限制。在操作过程中,空闲时间还要进行指数平滑移动平均(exponential weighted moving average,EWMA)计算,在这种计算方法中最近经过的数据包权重是前面数据包权重的指数。UNIX系统的平均负载就是使用这种算法计算的。 最后,由EWMA计算的值减去空闲时间,所得结果叫做avgidle。最好的情况是avgidle等于0,也就是数据包是严格地按照计算的时间间隔到达。 而过载连接的avgidle值是负数,如果这个负数太大,CBQ就会调低带宽,这就造成了过度限制(overlimit)的情况。 相反,一个空闲的连接会积累下一个很大的正数avgidle,这样可能造成经过一段空闲后,使带宽失控。为了防止出现这种情况的出现,可以使用maxidle参数限制avgidle的值。 如果处于过度限制(overlimit)的情况,CBQ会限制数据包通过的时间间隔严格按照计算的值。不过,由于时钟解析度的原因,这样可能不太合适。见minburst参数。 类别划分在一个CBQ实例中,可以存在很多分类。每个类有可以包括其它的QDisc,默认情况下,是pfifo。在为数据包排队时,CBQ作为根,使用不同的方法确定那个类接收数据包。 如果没有一些不常见的配置选项,这个过程非常简单。我们在每个节点上查询一个指令,接着按照指令的指示让数据包进入某个类。如果这个类是一个叶子节点,我们就把数据包排到这里;如果这个类还有子节点,我们就重复以上过程。 我们在每个节点上重复以下操作,直到数据包被发送到其它节点,或者这个过程由于其它原因中止。
这个算法可以保证数据包最终会有归宿,即使你正在建立流量控制的配置。
连接共享算法在向网络设备发送数据包时,CBQ首先要决定发出哪个类的数据包。它对所有的类采用加权轮转(Weighted Round Robin)的方式处理,使每个类的数据包都有机会被送出。WRR处理首先从优先级最高(数字最小的优先级)的类开始处理,直到处理完类中所有的数据包,再接着处理优先级次之的类。每个类可以从其兄弟类借带宽。一个类可以使用bounded声明其带宽不可外借;也可以使用isolated声明不原意外借带宽。 QDISC一个CBQ QDisc类的根有如下参数:
一个CBQ QDisc只需要知道底层连接的大小。实际的带宽限制由其子类完成。
上一篇:流量控制系列手册页:tc 下一篇:ea/acl访问控制系统介绍 更多相关文章
|
推荐文章
精彩文章
|