官方介绍HTB等级令牌桶
HTB (Hierarchical Token Bucket) 是一种流量分类的的队列算法,可有效提高带宽利用率和限制各种网络流量,并能根据IP 地址、协议和端口等参数对数据流进行优先级设置,然后针对不同类别的数据流进行带宽控制。指定主机或服务预留带宽、限制最高带宽,也能实现平均分配带宽,并进行优先级管理,特别适合语音视频和数据混合的网络。配置HTB 的流程如下:
HTB 等级令牌桶允许创建一个等级队列结构,并确定队列之间的关系,就像“父亲与儿子”或“兄弟之间”。
一旦队列添加了一个Child(子队列)将会变为inner(内部队列),所有向下没有Children(子队列)称为Leaf 队列(叶队列),内部队列仅负责传输的分配,所有Leaf 队列对符合的数据进行处理。 在RouterOS 必须指定Parent(父级)选项并指定一个队列为子队列。
双重限制
每条队列规则,都有2 个速率限制参数:
- CIR (约定信息速率Committed Information Rate) – (在RouterOS 中的参数为limit-at) 最坏的情况下,无论如何都会将得到给定的的CIR 传输量(假设我们能发送那么多的数据量)。
- MIR (最大信息速率Maximal Information Rate) – (在RouterOS 中的参数为max-limit) 最好的情况下,如果父级有剩余带宽,才能获得这部分剩下的带宽。
换句话说,首先Limit-at(CIR)都会被满足,仅当子队列尝试借调父级剩余带宽时,才可以达到最大的带宽max-limit (MIR).
在HTB 中,无论如何CIR 带宽都将会得到满足 (即使父级的max-limit 满载) ,MIR 和CIR 双重限制功能,建议坚持这些规则:
- CIR 约定速率之和,即所有子级速率必须小于或等于可获得父级传输量。
CIR(parent)* ≥ CIR(child1) +…+ CIR(childN)
如果父级下有子队列和叶队列,子队列可以设置为 CIR(parent)=MIR(parent)
• 任何子队列的MIR 最大速率必须小于或者等于父级的MIR 最大速率
下面是官方视频的介绍:
文章很值,打赏犒劳作者一下