令牌桶模型也被应用于TBF(一种classless qdiscs)和HTB(一种classful qdiscs)中。在tcng语言中,two- and
three-color meters也是一种令牌桶模型的应用。
2.8. 数据包和帧
一块数据被称为什么取决于它位于哪一层网络栈中。虽然这里写出了数据包和帧两个名词,但在整个文档中将不会
刻意区分这两个词在技术上的区别(这通常是错误的做法!)。
帧通常被用于描述位于第二层(数据链路层)的数据块。以太网接口、PPP接口和T1接口都把位于第二层的数据块
称为帧。在这种情况下,帧就是流量控制所要操作的对象。
在其他情况下,位于第三层(网络层)的数据块被称为数据包。虽然不太精确,但本文将会使用数据包这一名词进
行说明。
3. 流量控制中的概念
3.1. 整形
整形就是流量控制,把数据包的发送速率控制在一个固定的水平以下。
整形会控制队列中数据包的发送速率,使其保持在一个固定的值以下。这是最常用的流量控制手段。由于整形通过
延迟数据包的发送来控制数据包发送速率,故整形机制是非工作保存的。“非工作保存”可以理解为:系统必须进行
一些操作来延迟数据包的发送。
反过来说,一种非工作保存的队列是可以进行流量整形的,而工作保存的队列(参考 PRIO)不能进行流量整形,
因为工作保存队列无法延迟发送数据包。
流量整形能将网络流量限制在一个固定的速率下,通常以位/秒或字节/秒作为衡量单位。但这也有副作用,那就是
突发的数据传输也会被限制在一个较低的速率下。 [4]. 流量整形的好处之一是可以控制数据包的延迟时间。在流量
整形中,通常会使用令牌桶机制来实现整形。 查看 第 2.7 节 “令牌桶” 以了解更多有关令牌桶的信息.
3.2. 调度
一个调度器会对将要发送的数据包顺序进行排列或重排。
对队列中对数据包顺序进行排列或重排就叫做调度。最常见的调度器是FIFO(先入先出队列)。由于数据包必须按
顺序出队,因此队列实际上就是一个调度器。
对于不同的网络环境,我们可以使用不同的调度器。一个公平队列算法(参考SFQ)能防止一个客户端或一个数据
流占用过多的带宽。一个循环算法(参考WRR)可以让各个客户端或数据流都有平等的使用网络的机会。还有一些
更复杂的算法可用于防止骨干网流量过载,或者是对一些常见算法的改进。
3.3. 分类
分类器能把不同类型的网络流量划分到不同的队列中去。
把数据包按照不同类型进行划分叫做分类。通常我们只对上行流量进行分类。在路由器接收、路由并转发一个数据
包的时候,网络设备可以以几种不同的方式给数据包进行分类。其中一种方式是标记数据包。标记数据包的操作可
以在一个网络中由管理员进行设置,也有可能在数据包经过每一跳时发生。