有人能解释一下令牌桶的概念吗?

时间:2014-03-09 18:30:05

标签: token bucket

有人可以向我解释令牌桶的概念吗?还需要帮助解决以下问题。

给定令牌桶大小,b字节;令牌速率,r字节/秒;最大输出速率M字节/秒,最大突发时间T 1是多少。

请详细说明如何解决这个问题

2 个答案:

答案 0 :(得分:6)

你读过这个吗? http://en.wikipedia.org/wiki/Token_bucket

基本上,当您想要限制某些内容的速率时,可以使用令牌桶进行限制。以这种方式思考,有人每秒将1个糖果(r)放入桶中,然后每秒只能吃1个糖果。如果你的水桶可以容纳10(b)个糖果,如果你有一段时间没吃它们,你的水桶就会满了,那么你可以一次吃掉10个糖果(M)。

我想你可以用这种方式计算关于最大突发时间T的问题的答案。重点是,当你以M率吃糖果时,它也会按照r率进行补充。

t = b/m;
while(1) {
    T = (b + (t * r)) / m
    if (T == t) return T;
    t = T;
}

因此,如果b = 10,则r = 1 / sec,M = 2 / sec 然后T = 9。

答案 1 :(得分:0)

以下是一个很好的解释:https://www.coursera.org/lecture/packet-switching-networks-algorithms/traffic-shaping-by-token-bucket-V07oV

对于您的问题,我们可以基于数据IO来建立方程:在时间T之后,数据输出应等于数据输入。那是: b + rT = MT T = b /(M-r)