【问题标题】:Numericals on Token Bucket令牌桶上的数字
【发布时间】:2017-01-06 12:22:27
【问题描述】:

问题

对于使用令牌桶算法进行拥塞控制的主机,令牌桶的容量为1兆字节,最大输出速率为每秒20兆字节。令牌以每秒 10 兆字节的速度维持输出的速度到达。令牌桶目前已满,机器需要发送 12 兆字节的数据。传输数据所需的最短时间为 _____________ 秒。

我的方法

最初令牌桶已满。它排空的速率是 (20-10) Mbps。清空 1 mb 令牌桶的时间是 1/10,即 0.1 秒

但答案是 1.2 秒。

【问题讨论】:

    标签: congestion-control


    【解决方案1】:
    • 令牌桶容量为1兆字节(最大容量C)

    这里将一个字节视为一个令牌

    ⇒ C=1 M 令牌

    • 输出速率为每秒 20 兆字节 (M=20MBps) 令牌到达的速度可以维持每秒 10 兆字节的输出速度

    ⇒20-R=10

    ⇒ 输入速率 R=10MBps

    • 与 Leaky Bucket 不同,空闲主机可以捕获并保存 c ≤ C 个令牌,以便以后发送更大的突发。 s

    • 当我们开始传输令牌桶中的令牌时,会立即将其传输到网络

    即。如果令牌桶的初始容量为“c”,则 c 个令牌将 立即出现在网络中。

    是时候清空令牌桶了

    c:是令牌桶的初始容量 R:每一秒我们都会得到 R 个令牌 M :每秒钟产生 M 个令牌

    INPUT FLOW : 那么在时间间隔't'内准备进入网络的数据包数量是c+Rt

    OUTPUT FLOW : 那么在时间间隔 't' 内准备进入网络的数据包数量是 Mt

    输入流 = 输出流

    ⇒ c+Rt = Mt

    t= c/M-R =1/20-10 =0.1sec

    • 鉴于令牌桶已满 (c=C)

    现在,我们有两个案例

    1. 要转移1M代币,t=0是否会瞬间完成
    2. 或者转移 1M 代币,我们需要 10/ 20-10 = 0.1 秒?

    转1M(初始代币)代币,t=0会瞬间完成

    考虑方程

    INPUTFLOW = c+Rt

    这意味着 " c 令牌(最初包含在令牌桶中)的传输没有任何延迟"

    与漏桶不同,如果发送方空闲,令牌桶可以继续保留令牌。一旦它准备好发送数据包。数据包将获取令牌并将传输到网络。 ⇒ c 然后我们添加在“t”时间产生的 R 令牌以最终获得 INPUTFLOW

    ⇒ 1 MB 立即传输。现在我们还剩下 11 MB 来传输

    传输剩余的 11 MB

    在 t=0 时,我们开始传输 11 MB 数据。

    在 t=0.1 秒时:1MB(传输 1 MB)

    在 t=0.2 秒时:1MB(传输 2 MB)

    .. ..

    在 t=1.1 秒时:1MB(已传输 11MB)

    因此传输 12MB 需要 1.1 秒 + 0 秒 = 1.1 秒

    转移1M(初始代币)代币,我们取=0.1sec

    (如果 1MB 需要 0.1 秒,我可以说 12MB 需要 1.2 秒)

    然后在 0.1sec 期间。 01 *10MBps = 1M 代币已满。

    t=0s : 开始传输 12 MB 数据。

    t=0.1s : 1MB

    t=0.2s : 1MB(传输 2 MB)

    t=0.3s:1MB(传输了 3MB) .. ..

    t=1.2s : 1MB(传输 12 MB)

    因此传输 12MB 需要 1.2 秒


    问题确实明确提到了这部分。因此,通常的做法是始终遵循最佳情况。 因此答案是 1.1 秒

    更多信息:访问Gate Overflow - Gate 2016 Question on Token Bucket

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多