1

質問

輻輳制御にトークン バケット アルゴリズムを使用するホスト マシンの場合、トークン バケットの容量は 1 メガバイトで、最大出力速度は 1 秒あたり 20 メガバイトです。トークンは、毎秒 10 メガバイトの速度で出力を維持する速度で到着します。トークン バケットは現在いっぱいで、マシンは 12 メガバイトのデータを送信する必要があります。データの送信に必要な最小時間は ____________ 秒です。

私のアプローチ

最初はトークン バケットがいっぱいです。空にする速度は (20-10) Mbps です。1 MB のトークン バケットを空にするのにかかる時間は 1/10、つまり 0.1 秒

しかし、答えは 1.2sec として与えられます。

4

1 に答える 1

0
  • トークンバケットの容量は 1 メガバイト (最大容量 C )

ここでは 1 バイトが 1 つのトークンと見なされます

⇒ C=1Mトークン

  • 出力速度は毎秒 20 メガバイト (M=20MBps) トークンは毎秒 10 メガバイトの速度で出力を維持する速度で到着します

⇒20-R=10

⇒ 入力レート R=10MBps

  • Leaky Bucket とは異なり、アイドル状態のホストは、後でより大きなバーストを送信するために、c ≤ C トークンをキャプチャして保存できます。s

  • 転送を開始すると、トークン buckt に存在するトークンがネットワークに一度に送信されます

すなわち。最初のトークン バケットの容量が「c」の場合、c 個のトークンが即座にネットワークに存在します。

トークン バケットを空にする時間

c: トークン バケットの初期容量 R: 1 秒ごとに R トークンを取得しています M : 1 秒ごとに M トークンが生成されます

INPUT FLOW : 次に、時間間隔 't' 中にネットワークに入る準備ができているパケットの数は c+Rt です。

OUTPUT FLOW : 次に、時間間隔 't' 中にネットワークに入る準備ができているパケットの数は Mt です。

入力フロー = 出力フロー

⇒ c+Rt = Mt

t= c/MR =1/20-10 =0.1秒

  • トークン バケットがいっぱいの場合 (c=C)

今、私たちは2つのケースを持っています

  1. 1M トークンを転送するには、t=0 で瞬時に行われますか?
  2. または、1M トークンを転送するには、10/20-10 = 0.1 秒かかりますか?

1M (初期トークン) トークンを転送するには、t=0 で瞬時に行われますか?

方程式を考えてみましょう

入力フロー = c+Rt

これは、「 c トークン (最初はトークン バケットに含まれていた) が遅延なく送信される」ことを意味します。

リーキー バケットとは異なり、トークン バケットは、送信者がアイドル状態の場合、パケットを送信する準備ができたら、トークンを予約し続けることができます。パケットはトークンを受け取り、ネットワークに送信されます。⇒ c そして、't' 時間で生成された R トークンを追加して、最終的に INPUTFLOW を取得します

⇒1MBが瞬時に送信されます。これで、送信用に 11 MB が残っています

残りの 11 MB を転送するには

t=0 で 11 MB のデータの送信を開始します。

at t=0.1sec : 1MB (1MB転送)

at t=0.2sec : 1MB (2MB転送)

.. ..

t=1.1 秒で : 1MB (11 MB 転送)

したがって、12MB を転送するには、1.1 秒 + 0 秒 = 1.1 秒かかります。

1M (初期トークン) トークンを転送すると、= 0.1 秒かかります

(1MBで0.1秒かかる場合、12MBで1.2秒かかると主張できます)

その後 0.1sec の間。01 *10MBps = 1M トークンがいっぱいです。

t=0s : 12 MB のデータの転送を開始します。

t=0.1s : 1MB

t=0.2s : 1MB (2MB転送)

t=0.3s : 1MB (3MB転送) .. ..

t=1.2s : 1MB (12MB転送)

したがって、12MB を転送するには 1.2 秒かかります


質問は、この部分について明確に言及しています。したがって、常に最良のケースに従うのが一般的です。したがって、答えは 1.1 秒になります。

詳細情報 : Gate Overflow にアクセス - Gate 2016 トークン バケットに関する質問

于 2017-01-06T04:17:30.990 に答える