1. token bucket令牌桶演算法的基本過程
當用戶設定的平均發送速率r為單位時,令牌桶每間隔1/r秒會增加一個令牌;
令牌桶的容量為b,若令牌滿載,多餘的將被丟棄。當接收到n位元組的數據包時,會消耗桶中的n個令牌,若令牌不足,則數據包被視為超出流量限制,可能的處理方式包括:
丟棄該數據包;
將數據包放入隊列,待桶積累足夠令牌時再發送;
繼續發送,但需標記為特殊類型,若網路過載,這些特殊標記的數據包將被優先丟棄。
重要的是,要區分令牌桶演算法與漏桶演算法,後者主要通過逐漸消耗速率來限制數據傳輸,而令牌桶演算法除了限制平均速率,還允許一定程度的突發傳輸。這使其特別適合處理具有突發流量特徵的情況,只要令牌桶中有令牌,就可以暫時快速發送直到達到用戶設定的閾值。