(57)【特許請求の範囲】
【請求項１】
データを保持するデータバッファと、
トークン出力頻度を決定するレート決定手段と、
レート決定手段が決定するトークン出力頻度でトークンを出力するトークン生成手段と、
トークン生成手段が出力したトークンを保持するトークンバッファと、
トークンバッファに保持されているトークンを消費するたびに、データバッファから所定量のデータを読み出す読出手段と、
トークンバッファに保持されているトークンを監視するトークンバッファ監視手段と、
読出手段の出力側又はデータバッファの入力側でデータのスループットを監視するスループット監視手段と、
を備え、
レート決定手段は、トークンバッファに保持されたトークンが減少しているトークン減少状態におけるデータのスループットから、トークン出力頻度の更新後の値を決定すること、
を特徴とするトラヒック制御装置。
【請求項２】
レート決定手段は、トークン減少状態からトークンバッファのトークンが枯渇しているトークン枯渇状態に遷移したときに、トークン出力頻度を、前記更新後の値に更新すること、
を特徴とする請求項１に記載のトラヒック制御装置。
【請求項３】
レート決定手段は、トークン枯渇状態遷移時に、遷移前のトークン減少状態におけるデータのスループットの最大又は最後の値と、所定の係数からトークン出力頻度の更新後の値を決定すること、
を特徴とする請求項２に記載のトラヒック制御装置。
【請求項４】
トークン調整手段を備え、
レート決定手段は、トークン枯渇状態が第１の所定時間以上継続した場合、トークンバッファに追加するトークンの数を決定し、
トークン調整手段は、前記決定した数のトークンをトークンバッファに追加すること、
を特徴とする請求項２又は３に記載のトラヒック制御装置。
【請求項５】
レート決定手段は、トークンバッファに保持されたトークンの増加が第２の所定時間以上継続した場合、トークン出力頻度を減少させること、
を特徴とする請求項１から４のいずれか１項に記載のトラヒック制御装置。
【請求項６】
通信装置における、トークンバケットによるトラヒック制御方法であって、
トークンバッファに保持されているトークンと、データバッファの入力側又は出力側でデータのスループットを監視する第１のステップと、
第１のステップでの監視結果からトークン出力頻度の更新後の値を決定する第２のステップと、
を有し、
前記更新後の値は、トークンバッファに保持されたトークンが減少している間の、データのスループットから決定すること、
を特徴とするトラヒック制御方法。
【請求項７】
コンピュータを、請求項１から５のいずれか１項に記載のトラヒック制御装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トークンバケットを用いたトラヒック制御技術に関する。
【背景技術】
【０００２】
通信装置におけるトラヒック制御方式の１つとして、トークンバケットと呼ばれる方式が提案され、使用されている（例えば、非特許文献１参照。）。図４は、トークンバケットによるトラヒック制御のブロック図であり、通信装置の送信側及び／又は受信側に設けられる。
【０００３】
図４によると、トークンバケットによるトラヒック制御は、トークン生成部１１と、トークンバッファ１２と、読出部１３と、データバッファ１４とを備えている。
【０００４】
トークン生成部１１は、トークン１０をある周期（以後、トークン出力頻度という）で生成してトークンバッファ１２に出力し、トークンバッファ１２は、トークン生成部１１が生成するトークン１０を保持する。一方、データバッファ１４は、データ２０を保持するバッファである。尚、通信装置の送信側におけるトラヒック制御の場合、データ２０は、ネットワークに送信されるデータ又はパケットであり、通信装置の受信側におけるトラヒック制御の場合、ネットワークから受信するデータ又はパケットであり、通信装置内の他の機能ブロックや、共通バス等に出力される。
【０００５】
トークン１０とは読出し権利のことであり、読出部１３はトークンバッファ１２に保持されているトークン１０を１つ消費するごとに、所定量のデータ２０をデータバッファ１４から読み出して出力する。ここで、１つのトークン１０を消費する度にデータバッファ１４から読み出すことができるデータ量（ビット）と、トークン生成部１１によるトークン出力頻度（トークン／秒）との積を、以後トークンレートと呼ぶ。つまり、トークンレートは、データ２０の量が十分にあるとしたきの読出部１３によるデータ２０の読出し速度の平均値に等しい値である。
【０００６】
トークンバケットによるトラヒック制御では、出力すべきデータ２０が少ない場合、使用しないトークン１０をトークンバッファ１２に蓄えておくため、読出部１３は、一時的に、トークンレートを超える速度でデータ２０を読み出すことが可能であるという特徴がある。
【０００７】
【非特許文献１】Ａ．Ｐａｒｅｋｈ、Ｒ．Ｇａｌｌｅｒｇｅｒ、“Ａ  ｇｅｎｅｒａｌｉｚｅｄ  ｐｒｏｃｅｓｓｏｒ  ｓｈａｒｉｎｇ  ａｐｐｒｏａｃｈ  ｔｏ  ｆｌｏｗ  ｃｏｎｔｒｏｌ  ｉｎ  ｉｎｔｅｇｒａｔｅｄ  ｓｅｒｖｉｃｅｓ  ｎｅｔｗｏｒｋ：  ｔｈｅ  ｓｉｎｇｌｅ  ｎｏｄｅ  ｃａｓｅ”、ＩＥＥＥ／ＡＣＭ  ｔｒａｎｓａｃｔｉｏｎ  ｏｎ  Ｎｅｔｗｏｒｋｉｎｇ  Ｖｏｌ．１、  ｎｏ．３、  １９９３年１月
【発明の開示】
【発明が解決しようとする課題】
【０００８】
トークンバケットによるトラヒック制御を通信装置の送信側に適用する場合を考える。このとき、ネットワーク内部で輻輳が発生した場合でも、読出部１３は、トークンバッファ１２に保持されているトークン１０を消費して、データ２０をネットワークに送信しようとする状態が発生する。これらデータ２０は、ネットワーク内部にて廃棄される可能性が高く、トークン１０が無駄に消費されてしまうことになる。
【０００９】
特に、複数の異なる優先度の通信を並行して行っている場合、優先度の高低に係らずデータ２０の廃棄が生じ得るが、各通信に対するトークン１０の生成頻度を、つまり、トークンレートを、ネットワークの状態等及び各通信の優先度に応じて変更することで、データ廃棄を回避して、優先度に応じた帯域を割り当てることが可能となる。
【００１０】
したがって、本発明は、ネットワークの状態を推定して、推定したネットワークの状態をトークンバケットの制御に使用するトラヒック制御装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明によるトラヒック制御装置によれば、
データを保持するデータバッファと、トークン出力頻度を決定するレート決定手段と、レート決定手段が決定するトークン出力頻度でトークンを出力するトークン生成手段と、トークン生成手段が出力したトークンを保持するトークンバッファと、トークンバッファに保持されているトークンを消費するたびに、データバッファから所定量のデータを読み出す読出手段と、トークンバッファに保持されているトークンを監視するトークンバッファ監視手段と、読出手段の出力側又はデータバッファの入力側でデータのスループットを監視するスループット監視手段とを備え、レート決定手段は、トークンバッファに保持されたトークンが減少しているトークン減少状態におけるデータのスループットから、トークン出力頻度の更新後の値を決定することを特徴とする。
【００１２】
本発明のトラヒック制御装置における他の実施形態によれば、
レート決定手段は、トークン減少状態からトークンバッファのトークンが枯渇しているトークン枯渇状態に遷移したときに、トークン出力頻度を、前記更新後の値に更新することも好ましい。
【００１３】
また、本発明のトラヒック制御装置における他の実施形態によれば、
レート決定手段は、トークン枯渇状態遷移時に、遷移前のトークン減少状態におけるデータのスループットの最大又は最後の値と、所定の係数からトークン出力頻度の更新後の値を決定することも好ましい。
【００１４】
更に、本発明のトラヒック制御装置における他の実施形態によれば、
トークン調整手段を備え、レート決定手段は、トークン枯渇状態が第１の所定時間以上継続した場合、トークンバッファに追加するトークンの数を決定し、トークン調整手段は、前記決定した数のトークンをトークンバッファに追加することも好ましい。
【００１５】
更に、本発明のトラヒック制御装置における他の実施形態によれば、
レート決定手段は、トークンバッファに保持されたトークンの増加が第２の所定時間以上継続した場合、トークン出力頻度を減少させることも好ましい。
【００１６】
本発明によるトラヒック制御方法によれば、
通信装置における、トークンバケットによるトラヒック制御方法であって、トークンバッファに保持されているトークンと、データバッファの入力側又は出力側でデータのスループットを監視する第１のステップと、第１のステップでの監視結果からトークン出力頻度の更新後の値を決定する第２のステップとを有し、前記更新後の値は、トークンバッファに保持されたトークンが減少している間の、データのスループットから決定することを特徴とする。
【００１７】
本発明によるプログラムによれば、コンピュータを上記トラヒック制御装置として機能させることを特徴とする。
【発明の効果】
【００１８】
レート決定手段が決定するトークンレートに、平均的なデータの出力スループットを制限するトラヒック制御装置において、トークンバッファのトークンが減少又は増加している状態とは、トークンによるスループットの制限が行われていない状態である。このうち、トークンが減少している状態のスループットを使用してトークンレートを増加させるように更新し、トークンが増加している状態のスループットを使用してトークンレートを減少させるように更新する。これにより、ネットワークの状態に応じ自律的にトークンレートを更新することが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下では、本発明を実施するための最良の形態について、図面を用いて詳細に説明する。
【００２０】
図１は、本発明によるトラヒック制御装置のブロック図である。図１によると、トラヒック制御装置は、トークン生成部１と、トークンバッファ２と、読出部３と、データバッファ４と、スループット監視部５と、トークンバッファ監視部６と、トークン調整部７と、レート決定部８とを備えている。
【００２１】
トークン生成部１は、レート決定部８が決定するトークン出力頻度でトークン１０を生成してトークンバッファ２に出力し、トークンバッファ２は、トークン生成部１が生成するトークン１０を保持する。一方、データバッファ４は、ネットワークに送信されるデータ２０を保持するバッファである。
【００２２】
読出部３はトークンバッファ２に保持されているトークン１０を１つ消費するごとに、所定量のデータ２０をデータバッファ４から読み出して出力する。
【００２３】
スループット監視部５は、読出部３の出力から、ネットワークへ送信されるデータ２０のスループットを測定してレート決定部８に出力し、トークンバッファ監視部６は、トークンバッファ２に保持されているトークン１０が減少しているか、増加しているか、枯渇しているかを監視して、監視結果をレート決定部８に出力する。
【００２４】
レート決定部８は、トークンバッファ監視部６の監視結果に基づき、トークン減少状態と、トークン増加状態と、トークン枯渇状態の３つの状態を管理してトークンレートを決定し、決定したトークンレートとなるトークン出力頻度をトークン生成部１に通知する。ここで、トークン出力頻度（トークン／秒）は、決定したトークンレート（ビット／ｓ）を、読出部３がトークン１０を１つ消費するごとにデータバッファ４から読出すデータ量（ビット）で除することにより求められる。更に、レート決定部８は、必要に応じてトークン調整部７を制御して、トークンバッファ２に強制的にトークン１０を追加させる。
【００２５】
具体的には、トークン減少状態の間にスループット監視部５が監視するスループットに基づき、トークン枯渇状態への遷移時に更新して使用するトークンレートを決定する。また、トークン増加状態が一定時間以上継続したときには、トークンレートを減少させるように更新する。更に、トークン枯渇状態が一定時間以上継続したときには、トークン調整部７を制御してトークンバッファ２にトークン１０を追加し、トークン減少状態に強制的に遷移させる。以下、その詳細について説明する。
【００２６】
図２は、レート決定部８が管理する、トークンバッファ監視部６の監視結果に基づく状態遷移図である。図２において、トークン減少状態とは、読出部３の出力のスループットがトークンレートを上回っている状態、つまり、トークンバッファ２に入力されるトークン１０以上に、読出部３がトークン１０を消費している状態である。本状態は、トークン１０によるトラフィックの制限が行われていない状態であり、本状態の間にスループット監視部５が測定するスループットは、ネットワークのスループットを表している。したがって、本状態時にスループット監視部５が測定するスループットから、トークン枯渇状態への遷移時に更新して使用するトークンレートを後述する方法にて決定する。
【００２７】
トークン増加状態とは、読出部３の出力のスループットがトークンレートを下回っている状態、つまり、読出部３が消費するトークン１０以上に、トークンバッファ２にトークン１０が入力されている状態である。本状態は、トークン１０によるトラフィック制限が緩すぎる状態であるため、本状態が一定時間以上継続した場合、レート決定部８はトークンレートを後述する方法にて減少させる。
【００２８】
トークン枯渇状態とは、トークンバッファ２に入力されるトークン１０が入力と同時に消費されている状態であり、読出部３の出力のスループットとトークンレートが一致している。本状態に遷移したことは規制が過剰であることを意味し、したがって、トークン減少状態時にスループット監視部５が測定するスループットから計算しておいた、新たなトークンレートに更新を行う。また、本状態が一定時間以上継続した場合、レート決定部８は、トークン調整部７を制御して、トークン１０をトークンバッファ２に追加してトークン減少状態へ強制的に遷移させる。
【００２９】
続いて、図２の状態遷移の発生原因について説明する。トークン増加状態からトークン減少状態への遷移は、読出部３の出力のスループットが増加して、トークンレートを上回ったことにより、又は、レート決定部８がトークンレートをスループット以下に更新したことにより生じる。また、トークン減少状態からトークン増加状態への遷移は、読出部３の出力のスループットが減少して、トークンレートを下回ったことにより発生する。
【００３０】
トークン枯渇状態からトークン増加状態への遷移は、読出部３の出力のスループットが減少して、トークンレートを下回ったことにより、または、トークン枯渇状態への遷移時におけるトークンレートの更新に伴い、スループットがトークンレートを下回ったことにより生じる。
【００３１】
トークン枯渇状態からトークン減少状態への遷移は、レート決定部８の制御により、トークン調整部７が強制的にトークンバッファ２にトークン１０を挿入したことにより生じる。また、トークン減少状態からトークン枯渇状態への遷移は、トークン１０が減少してトークンバッファ２が保持するトークン１０が枯渇したときに生じる。
【００３２】
図３は、上記各状態と、トークンレート及び読出部３の出力スループットの関係を示す図である。符号９０から符号９２で示す区間においては、トークンレートはスループットより大きく、トークン量は時間と共に増大していく。トークン増加状態が一定時間以上継続したため、符号９１に示す時点で、トークンレートを減少させているが、スループットよりは大きいためトークン増加状態が継続している。
【００３３】
符号９２に示す時点において、データバッファ４に入力されるデータ２０が増加し、スループットがトークンレートより大きくなったため、トークン減少状態に遷移する。その後、符号９３に示す時点において、トークンバッファ２に保持されているトークン１０が枯渇し、トークン枯渇状態に遷移する。このときレート決定部８は、使用するトークンレートを、符号９２から符号９３に示す区間におけるスループットから求めた値に更新する。図３においては、トークンレートを若干上昇させている。しかしながら、データバッファ４に入力されるデータ２０の量が依然多いことから、トークン枯渇状態が継続している。
【００３４】
トークン枯渇状態が一定時間以上継続したことにより、符合９４に示す時点において、レート決定部８は、トークン調整部７を制御し、トークン調整部７は、レート決定部８により指示された数のトークン１０を、トークンバッファ２に追加する。これにより、トークンバッファ２に保持されているトークン１０が一時的に増加して、トークン減少状態に遷移する。また、後述するようにレート決定部８は、トークン調整部７が追加したトークン１０によるトークンレートの増加を補償するため、トークンレートを一時的に減少させる。図３においては、符号９４から符号９５に示す期間、トークンレートを減少させている。
【００３５】
符号９６に示す時点において、再びトークン枯渇状態に遷移するが、このとき、レート決定部８は、トークンレートを符号９４から符号９６に示す区間におけるスループットから求めた値に更新する。図３においては、符号９６に示す時点においてトークンレートを上昇させているが、データバッファ４に入力されるデータ２０の量が依然多いことから、トークン枯渇状態が継続している。
【００３６】
その後、符号９７に示す時点にて、データバッファ４に入力されるデータ２０が減少し、トークン増加状態に遷移している。
【００３７】
続いて、トークン減少状態におけるスループットの値から、トークン枯渇状態へ遷移したときに更新して使用するトークンレートを算出する方法について説明する。まず、スループットに対するトークンレートの許容する割合を、許容係数と呼び、あらかじめトラフィック制御装置に設定されているものとする。トークンレートを算出する簡易な方法としては、トークン減少状態終了時点でのスループット又はトークン減少状態中の最大スループットに許容係数を乗じた値を、更新後のトークンレートとして使用する。
【００３８】
また、トークン減少状態中に定期的にサンプリングしたスループットに対して、指数平滑化平均処理を行い、指数平滑化平均処理後の最大値、又は、最後の値に許容係数を乗じた値を使用してもよい。以下に指数平滑化平均処理の具体例を説明する。
【００３９】
スループットのｎ番目のサンプル値Ｘｎが時刻ｔｎで得られたとすると、指数平滑化平均処理後の値Ａｎは、
Ａｎ＝（１−Ｃ）Ａｎ−１＋ＣＸｎ
Ｃ＝１−ｅｘｐ（−１／Ｔ）Δｔ
として求める。ここで、Δｔ＝ｔｎ−ｔｎ−１であり、Ｔは、任意の定数である。
【００４０】
更に、あらかじめ、最大トークンレート及び／又は最小トークンレートを決めておき、上記計算で求めたスループットが、最大トークンレートを超える場合には最大トークンレートに等しい値を、最小トークンレートを下回る場合には最小トークンレートに等しい値を、更新後に使用するトークンレートとすることも可能である。
【００４１】
トークン増加状態が一定時間以上継続したときに、トークンレートを減少させる方法も上述した方法と基本的に同一である。つまり、トークン増加状態開始時から、一定時間経過時のスループット又はその間の最大スループットに許容係数を乗じた値や、その間のスループットのサンプル値に指数平滑化平均処理を行い、指数平滑化平均処理後の最大値や最後の値に許容係数を乗じた値を使用する。
【００４２】
続いて、トークン枯渇状態が一定時間以上継続したときに行う、トークン１０のトークンバッファ２への追加について説明する。トークン枯渇状態は、トークン１０によるトラフィック制限が行われている状態であり、本状態におけるスループットはネットワークのスループットを表したものではない。したがって、トークン調整部７がトークン１０をトークンバッファ２に追加して、トークン減少状態に強制的に遷移させた上で、新しいスループットの計算を行う。そのため、まずレート決定部８は、トークン調整部７に対して追加するトークン１０の数を通知する。トークンバッファ２に追加するトークン１０の数は、あらかじめ固定的に決めておくことも、所定の時間をあらかじめ決めおき、現在のトークンレートに所定の時間を乗じて得られるデータ量に相当するトークン１０の数とすることも可能である。
【００４３】
また、トークン調整部７がトークン１０を追加することは、その瞬間におけるトークンレートが増加したこと等価であり、この増加分を補償するため、レート決定部８は、トークン１０追加後の一定期間トークンレートを減少させる。トークンレートの減少については、あらかじめ期間を定めておき、その期間から減少後のトークンレートを決定する方法と、トークンレートの減少割合をあらかじめ定めておき、減少割合から算出される減少後のトークンレートに基づき、減少させる期間を決定する方法とがある。
【００４４】
図１に示す実施形態においては、スループット監視部５が、読出部３の出力側でデータのスループットを監視する形態で説明を行ったが、データバッファ４の入力側でスループットを測定しても良い。その理由を以下に説明する。まず、スループット監視部５がデータバッファ４の入力側でスループを測定する場合、トークン枯渇状態における測定スループットは、図３に示す読出部３の出力側で測定したトークンレートと一致するスループットより大きな値を示すことになるが、トークン増加状態及びトークン減少状態におけるスループットは、図３に示す読出部３の出力側で測定したスループットと同じ値になる。本発明によるトラヒック制御では、トークン増加状態及びトークン減少状態のスループットに基づき、更新して使用する新たなトークンレートを決定するため、スループット監視部５によるデータのスループット監視位置がデータバッファ４の入力側であっても、読出部３の出力側であっても、決定されるトークンレートは同じ値となるからである。
【図面の簡単な説明】
【００４５】
【図１】本発明によるトラヒック制御装置のブロック図である。
【図２】レート決定部が管理する状態遷移図である。
【図３】各状態と、トークンレート及びスループットの関係を示す図である。
【図４】トークンバケットによるトラヒック制御のブロック図である。
【符号の説明】
【００４６】
１０  トークン
２０  データ
１、１１  トークン生成部
２、１２  トークンバッファ
３、１３  読出部
４、１４  データバッファ
５  スループット監視部
６  トークンバッファ監視部
７  トークン調整部
８  レート決定部
９０〜９７  位置
【図１】
0004577230.tif 000002
【図２】
0004577230.tif 000003
【図３】
0004577230.tif 000004
【図４】
0004577230.tif 000005