三层交换机之令牌桶和漏桶
令牌桶算法和漏桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的两种算法。
令牌桶(Token Bucket)工作原理
令牌桶的工作原理是,系统以一定的速率(CIR)往令牌桶中放入令牌,当桶中的令牌数达到令牌桶容量(CBS)时,则后续放入的令牌被丢弃。当系统持续收到报文分组时,每个报文分组需要向令牌桶请求一个或者多个(根据报文长度决定)令牌,只有获取到足够的令牌(如果该分组报文需要3个令牌,而令牌桶中只剩余2个令牌,则条件不满足,获取令牌失败),该报文才能进入QoS队列转发,此时,令牌桶中的令牌总数会随之减少。
令牌桶区别于漏桶的地方在于,它在限制平均传输速率的同时,还允许一定程度的突发流量,而漏桶则强行限制传输速率。
令牌桶分为单速率三色桶(srTCM)和双速率三色桶(trTCM)两种,目前的主流是trTCM。
令牌桶在色盲模式和色敏模式下的表现有细微的差异。
令牌桶本身只存储令牌,不存储报文分组,它只是为报文分组染色,不直接执行报文丢弃动作,QoS根据染色的结果来进行报文转发或者丢弃。
漏桶(Leaky Bucket)工作原理
漏桶的工作原理是,当系统持续收到分组报文时,报文首先都被放入漏桶中,漏桶以固定的速率输出报文,如果系统收到的流量存在突发,超过漏桶深度,则直接溢出。
需要注意的是,在某些情况下,漏桶算法不能够有效地使用网络资源,因为漏桶的漏出速率是固定的,所以即使网络中没有发生拥塞,漏桶算法也不能使某一个单独的数据流达到端口速率。因此,漏桶算法对于存在突发特性的流量来说缺乏效率。而令牌桶算法则能够满足这些具有突发特性的流量。通常,漏桶算法与令牌桶算法结合起来为网络流量提供更高效的控制。
应用场景
令牌桶:
- Storm Control 风暴控制(又称为包抑制)
- Traffic Policing 流量监管,进行入端口流量限速
漏桶: