1. token bucket令牌桶算法的基本过程
当用户设定的平均发送速率r为单位时,令牌桶每间隔1/r秒会增加一个令牌;
令牌桶的容量为b,若令牌满载,多余的将被丢弃。当接收到n字节的数据包时,会消耗桶中的n个令牌,若令牌不足,则数据包被视为超出流量限制,可能的处理方式包括:
丢弃该数据包;
将数据包放入队列,待桶积累足够令牌时再发送;
继续发送,但需标记为特殊类型,若网络过载,这些特殊标记的数据包将被优先丢弃。
重要的是,要区分令牌桶算法与漏桶算法,后者主要通过逐渐消耗速率来限制数据传输,而令牌桶算法除了限制平均速率,还允许一定程度的突发传输。这使其特别适合处理具有突发流量特征的情况,只要令牌桶中有令牌,就可以暂时快速发送直到达到用户设定的阈值。