马上注册成为ROSABC会员,随时发帖回复。
您需要 登录 才可以下载或查看,没有账号?会员注册 
 
 
 
x
 
HTB 令牌桶介绍 
 
HTB 等级令牌桶允许创建一个等级队列结构,并确定队列之间的关系,就像“父亲与儿子”或“兄弟之间”。 一旦队列添加了一个 Child(子队列)将会变为 inner(内部队列),所有向下没有 Children(子队列)称为 Leaf 队列(叶队列),内部队列仅负责传输的分配,所有 Leaf 队列对符合的数据进行处理。 在 RouterOS 必须指定 Parent(父级)选项并指定 一个队列为子队列。 
 
双重限制 
 
每个队列在 HTB 有 2 个速率限制: 
 
-- CIR (约定信息速率 Committed Information Rate) – (在 RouterOS 中的参数为 limit-at) 最坏的情况下, 无论如何都会将得到给定的的 CIR 传输量(假设我们能发送那么多的数据量) 
 
-- MIR (最大信息速率 Maximal Information Rate) – (在 RouterOS 中的参数为 max-limit) 最好的情况下, 如果父级有剩余带宽,将获得该速率值 
 
换句话说,首先 Limit-at(CIR)都会被满足,仅当子队列尝试借调必要的数据传输从他们的父级,以达到最大的带宽max-limit (MIR). 
 
注: 无论如何 CIR 都将会被分配到符合队列的带宽 (即使父级的 max-limit 满载) ,那就是为什么,确保最佳的使用双 重限制功能,我们建议坚持这些规则: 
 
-- CIR 约定速率之和,即所有子级速率必须小于或等于可获得父级传输量。 
 
CIR(parent)* ≥ CIR(child1) +...+ CIR(childN) 
 
*如果父级与主父级可以设置为 CIR(parent)=MIR(parent) 
 
-- 任何子级的最大速率必须小于或者等于父级的最大速率 
 
MIR (parent) ≥ MIR(child1) & MIR (parent) ≥ MIR(child2) & ... & MIR (parent) ≥ MIR(childN) 
 
在 winbox 中队列的颜色变化: 
 
-- 0% - 50% 使用情况 – 绿色 
 
-- 51% - 75% 使用情况 – 黄色 
 
-- 76% - 100% 使用情况 – 红色 
 
优先级 
 
这里已经知道,所有队列的 limit-at (CIR)都有可能将会被耗尽,优先级则主要负责分配父级队列剩余的带宽给 Child(子队列)达到 max-limit。队列高的优先级最优先达到 max-limit,优先级低的则不会。8 是最低优先级,1 则最高。 注意,优先级工作环境: 
 
-- 对于 leaf 叶队列–优先级对于 inner(内部队列)没有任何意义,即 inner 内部队列与 leaf(叶队列)的优先级 不可比较 
 
-- 如果 max-limit 被设定(非 0) 
 
下面这部分我们将分析 HTB 的操作,将演示一个 HTB 结构并将涵盖可能出现的所有情况和功能,我们的 HTB 结构由下面 5 个队列构成: 
 
-- Queue01 内部队列有 2 个子级 - Queue02 和 Queue03 
 
-- Queue02 内部队列有 2 个子级 - Queue04 和 Queue05 
 
-- Queue03 叶队列 
 
-- Queue04 叶队列 
 
-- Queue05 叶队列 
 
Queue03,Queue04 和 Queue05 的需要 10Mbps,我们接口处理能力在 10Mbps 的流量 
 
事例 1: 普通事例 
 
 
 
-- Queue01 limit-at=0Mbps max-limit=10Mbps 
 
-- Queue02 limit-at=4Mbps max-limit=10Mbps 
 
-- Queue03 limit-at=6Mbps max-limit=10Mbps priority=1 
 
-- Queue04 limit-at=2Mbps max-limit=10Mbps priority=3 
 
-- Queue05 limit-at=2Mbps max-limit=10Mbps priority=5 
 
事例 1 结果: 
 
-- Queue03 得到 6Mbps 
 
-- Queue04 得到 2Mbps 
 
-- Queue05 得到 2Mbps 
 
-- 结论:HTB 建立在一种方式上,通过满足所有的 limit-at,主队列已没有带宽进行分发。 
 
事例 2:max-limit 事例 
 
 
 
 
-- Queue01 limit-at=0Mbps max-limit=10Mbps 
 
-- Queue02 limit-at=4Mbps max-limit=10Mbps 
 
-- Queue03 limit-at=2Mbps max-limit=10Mbps priority=3 
 
-- Queue04 limit-at=2Mbps max-limit=10Mbps priority=1 
 
-- Queue05 limit-at=2Mbps max-limit=10Mbps priority=5 
 
事例 2 结果 
 
-- Queue03 得到 2Mbps 
 
-- Queue04 得到 6Mbps 
 
-- Queue05 得到 2Mbps 
 
-- 结论: 在满足所有的 limit-at 后,HTB 将把剩余的带宽分配给优先级高的队列。 
 
事例 3: inner 队列 limit-at 
 
 
 
 
-- Queue01 limit-at=0Mbps max-limit=10Mbps 
 
-- Queue02 limit-at=8Mbps max-limit=10Mbps 
 
-- Queue03 limit-at=2Mbps max-limit=10Mbps priority=1 
 
-- Queue04 limit-at=2Mbps max-limit=10Mbps priority=3 
 
-- Queue05 limit-at=2Mbps max-limit=10Mbps priority=5 
 
事例 3 结果 
 
-- Queue03 得到 2Mbps 
 
-- Queue04 得到 6Mbps 
 
-- Queue05 得到 2Mbps 
 
-- 结论:在满足所有的 limit-at 后,HTB 将分配剩余带宽给优先级高的,但在这个事例中,内部对列 Queue02 指定了 Limit-at, 这样他会保留 8Mbps 的流量给 Queue04 和 Queue05,Queue04 有 更高的优先级,那就是为什么会得到更高的带宽。 
 
事例 4:leaf 队列的 Limit-at 
 
 
 
-- Queue01 limit-at=0Mbps max-limit=10Mbps 
 
-- Queue02 limit-at=4Mbps max-limit=10Mbps 
 
-- Queue03 limit-at=6Mbps max-limit=10Mbps priority=1 
 
-- Queue04 limit-at=2Mbps max-limit=10Mbps priority=3 
 
-- Queue05 limit-at=12Mbps max-limit=15Mbps priority=5 
 
事例 4 结果 
 
-- Queue03 得到 3Mbps 
 
-- Queue04 得到 1Mbps 
 
-- Queue05 得到 6Mbps 
 
-- 结论:为了满足所有的 Limit-at,HTB 被强迫分配 20Mbps,Queue03 为 6Mbps ,Queue04 为 2Mbps,Queue05 为 12Mbps,但我们的接口只能处理 10Mbps,因此接口队列通常 FIFO 带宽发分配将保持比例 6:2:12, 即 3:1:6。 
 
RouterOS 中的 HTB 
 
在 RouterOS 中有 4 个 HTB 树: 
 
-- global-in 
 
-- global-total 
 
-- global-out 
 
-- interface queue 
 
当添加一个简单队列时,将产生 3 个 HTB 类(in global-in, global-total and global-out),但在接口队列中不添加任何 类。 
 
当数据包通过路由器时,它将穿过所有 4 个 HTB 树——global-in, global-total, global-out 和 interface queue。如 果是指向路由器的它将穿过 global-in 及 global-total HTB 树,如果数据包是从路由器发出的,它们将穿过 global-total, global-out 及 interface 队列。 
 
 
 |