- トークンバケットの容量は 1 メガバイト (最大容量 C )
ここでは 1 バイトが 1 つのトークンと見なされます
⇒ C=1Mトークン
- 出力速度は毎秒 20 メガバイト (M=20MBps) トークンは毎秒 10 メガバイトの速度で出力を維持する速度で到着します
⇒20-R=10
⇒ 入力レート R=10MBps
すなわち。最初のトークン バケットの容量が「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秒
今、私たちは2つのケースを持っています
- 1M トークンを転送するには、t=0 で瞬時に行われますか?
- または、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 トークン バケットに関する質問