(57)【特許請求の範囲】
【請求項１】
パケットを記憶する、少なくとも１以上のパケット記憶部と、
前記パケット記憶部に対応し、トークンを蓄積するトークン蓄積部と、
パケットを送信する処理を含む、パケット処理を実行するパケット処理実行部と、
前記トークン蓄積部のトークンを消費しつつ前記パケット記憶部に記憶されたパケットを取り出し、前記取り出したパケットを前記パケット処理実行部に出力し、前記取り出したパケットが前記パケット処理実行部により送信された送信時刻が所定時刻以降であることを契機として、滞留パケット制御依頼通知を送信する、スケジューリング部と、
前記滞留パケット制御依頼通知を受信した場合に、前記トークン蓄積部が蓄積しているトークンの量に基づいて、前記パケット記憶部が記憶するパケットの少なくとも一部を、処理が滞留している滞留パケットであると判定して他のパケットと区別し、前記判定された滞留パケットに対応するトークンの量を前記トークン蓄積部から取り除く、滞留パケット管理部と、
を含む、少なくとも１以上のパケット処理部を備え、
前記スケジューリング部は、前記トークン蓄積部が蓄積するトークンを消費せずに前記滞留パケットであると判定されたパケットを取り出す、帯域制御装置。
【請求項２】
前記滞留パケット管理部は、
前記パケット記憶部に記憶されているパケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下である場合に、前記パケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下であるパケットを前記滞留パケットと判定する、請求項１の帯域制御装置。
【請求項３】
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットが前記滞留パケットであると判定された場合に、前記トークン蓄積部が蓄積しているトークンを消費すると共に、
前記滞留パケットであると判定されたパケットに対し、滞留フラグを付加することで前記滞留パケットと他のパケットと区別し、
前記スケジューリング部は、
前記滞留フラグが付加されたパケットを前記パケット記憶部から取り出す際に、前記トークン蓄積部が蓄積するトークンを消費しない、請求項２の帯域制御装置。
【請求項４】
前記パケット処理部は、
前記滞留パケットを記憶する、少なくとも１以上の滞留パケット記憶部をさらに含み、
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットが前記滞留パケットであると判定された場合に、前記トークン蓄積部が蓄積しているトークンを消費すると共に、
前記滞留パケットと判定されたパケットを、前記パケット記憶部から前記滞留パケット記憶部へ移動させることで、前記滞留パケットを他のパケットと区別し、
前記スケジューリング部は、
前記滞留パケット記憶部からパケットを取り出す際に、前記トークン蓄積部が蓄積するトークンを消費しない、請求項２の帯域制御装置。
【請求項５】
前記パケット処理部は、
トークンを蓄積する、滞留トークン蓄積部をさらに含み、
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットであって、前記滞留トークン蓄積部に蓄積されたトークンの蓄積量に相当する量のパケットを除いた後の前記パケット記憶部に記憶された先頭パケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下である場合に、前記先頭パケットを前記滞留パケットと判定し、前記先頭パケットのサイズに相当する量のトークンを前記トークン蓄積部から前記滞留トークン蓄積部へ移動させ、
前記スケジューリング部は、
前記パケット記憶部からパケットを取り出す際に、前記滞留トークン蓄積部が蓄積しているトークンを消費する、請求項１の帯域制御装置。
【請求項６】
前記滞留パケット管理部は、
前記滞留パケット制御依頼通知を受信したことを契機として、前記滞留パケットに対する制御を行い、前記滞留パケットに対する制御が完了した後に、滞留パケット制御完了通知を前記スケジューリング部に送信する、請求項１乃至５のいずれか一項に記載の帯域制御装置。
【請求項７】
前記スケジューリング部は、
前記滞留パケット制御完了通知を受信したことを契機として、前記トークン蓄積部に所定の量のトークンを追加する、請求項６の帯域制御装置。
【請求項８】
それぞれに単一又は複数のサービスのパケットが属する、複数のクラスのうち、１つのクラスを選択する、ステップと、
前記選択されたクラスに対応するパケット記憶部に記憶されたパケットであって、滞留フラグが付加されていないパケットと、前記選択されたクラスに対応するトークン蓄積部に蓄積されたトークンの蓄積量と、を参照する、ステップと、
前記参照されたパケットのサイズが、前記参照されたトークンの蓄積量以下である場合に、前記参照されたパケットを処理が滞留した滞留パケットと判定して、他のパケットと区別するステップと、
前記トークン蓄積部が蓄積するトークンを消費し、前記滞留パケットに前記滞留フラグを付加するステップと、
前記滞留フラグが付加された前記滞留パケットを前記トークン蓄積部が蓄積するトークンを消費せずにパケット処理するステップと、
を含む、帯域制御方法。
【請求項９】
前記参照されるパケットが前記パケット記憶部の先頭に記憶されたパケットである、
請求項８に記載の帯域制御方法。
【請求項１０】
請求項８又は９に記載の帯域制御方法を、帯域制御装置に搭載されたコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、帯域制御装置、帯域制御方法及びプログラムに関する。特に、ネットワークの帯域を制御する帯域制御装置、帯域制御方法及びプログラムに関する。
【背景技術】
【０００２】
ネットワークが広帯域になることで、スイッチやルータ等のネットワーク機器に搭載されたＣＰＵ（Central Processing Unit）におけるパケット処理能力が不足し、サービスの品質を維持するために必要な通信品質を満たせないことがある。とりわけ、このような現象は、上記のようなネットワーク機器が汎用の計算機（コンピュータ）を用いて実現されている時に顕著に現れる。例えば、満たすべき通信品質の一例として帯域が挙げられ、この帯域を制御する制御装置や制御方法が、特許文献１、特許文献２及び非特許文献１に開示されている。
【０００３】
特許文献１は、ＣＰＵ時間を予約することで、ＣＰＵによるパケット処理性能の不足に起因する通信帯域不足を解消する帯域制御装置を開示する。
【０００４】
特許文献２及び非特許文献１は、パケットの転送に関し、帯域制御と優先制御を行う技術を開示する。
【０００５】
上記の文献が開示する各種技術は、通信品質を満たすために、パケットの出力順序及びパケットの出力数を調整するスケジューリングを行っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−８５６３２号公報
【特許文献２】特開２００７−１３４６２号公報
【非特許文献】
【０００７】
【非特許文献１】戸田巖、「詳解ネットワークＱｏＳ技術」、株式会社オーム社、平成１３年０５月２５日
【発明の概要】
【発明が解決しようとする課題】
【０００８】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【０００９】
上述のように特許文献１では、ＣＰＵ時間の予約により通信帯域不足の解決を目的としているが、近年の計算機ではリソース競合等によりパケット処理性能が一定しないことが多い。そのため、ＣＰＵ時間を予約したとしても必要な通信帯域を一時的に満たせない可能性がある。
【００１０】
また、特許文献２や非特許文献１に開示された技術では、ＣＰＵによるパケット処理性能が不足する事態について考慮がなされていない。
【００１１】
以上の状況を鑑み、本発明は、ＣＰＵによるパケット処理性能が不足した際にも通信品質を維持することに寄与する、帯域制御装置、帯域制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の視点によれば、パケットを記憶する、少なくとも１以上のパケット記憶部と、前記パケット記憶部に対応し、トークンを蓄積するトークン蓄積部と、パケットを送信する処理を含む、パケット処理を実行するパケット処理実行部と、前記トークン蓄積部のトークンを消費しつつ前記パケット記憶部に記憶されたパケットを取り出し、前記取り出したパケットを前記パケット処理実行部に出力し、前記取り出したパケットが前記パケット処理実行部により送信された送信時刻が所定時刻以降であることを契機として、滞留パケット制御依頼通知を送信する、スケジューリング部と、前記滞留パケット制御依頼通知を受信した場合に、前記トークン蓄積部が蓄積しているトークンの量に基づいて、前記パケット記憶部が記憶するパケットの少なくとも一部を、処理が滞留している滞留パケットであると判定し、前記判定された滞留パケットに対応するトークンの量を前記トークン蓄積部から取り除く、滞留パケット管理部と、を含む、少なくとも１以上のパケット処理部を備える、帯域制御装置が提供される。
【００１３】
本発明の第２の視点によれば、それぞれに単一又は複数のサービスのパケットが属する、複数のクラスのうち、１つのクラスを選択する、ステップと、前記選択されたクラスに対応するパケット記憶部に記憶されたパケットであって、滞留フラグが付加されていないパケットと、前記選択されたクラスに対応するトークン蓄積部に蓄積されたトークンの蓄積量と、を参照する、ステップと、前記参照されたパケットのサイズが、前記参照されたトークンの蓄積量以下である場合に、前記参照されたパケットを処理が滞留したパケットと判定する、ステップと、前記トークン蓄積部が蓄積するトークンを消費し、前記滞留パケットに前記滞留フラグを付加するステップと、を含む、帯域制御方法が提供される。
【００１４】
本発明の第３の視点によれば、それぞれに単一又は複数のサービスのパケットが属する、複数のクラスのうち、１つのクラスを選択する、ステップと、前記選択されたクラスに対応するパケット記憶部を選択し、前記パケット記憶部の先頭に記憶されたパケットを参照するステップと、前記参照されたパケットに滞留フラグが付加されているか否かを判定するステップと、前記参照されたパケットに前記滞留フラグが付加されていない場合に、前記参照されたパケットを、トークン蓄積部に蓄積されたトークンを消費せず、前記パケット記憶部から取り出すステップと、を含む、帯域制御方法が提供される。
【００１５】
本発明の第４の視点によれば、上記の帯域制御方法を、帯域制御装置に搭載されたコンピュータに実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（non-transient）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１６】
本発明の各視点によれば、ＣＰＵによるパケット処理性能が不足した際にも通信品質を維持することに寄与する、帯域制御装置、帯域制御方法及びプログラムが、提供される。
【図面の簡単な説明】
【００１７】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係る帯域制御装置の内部構成の一例を示す図である。
【図３】第１の実施形態に係るパケット処理部の内部構成の一例を示す図である。
【図４】第１の実施形態に係る滞留パケット管理部の動作の一例を示すフローチャートである。
【図５】第１の実施形態に係るスケジューリング部の動作の一例を示すフローチャートである。
【図６】第２の実施形態に係るパケット処理部の内部構成の一例を示す図である。
【図７】第２の実施形態に係る滞留パケット管理部の動作の一例を示すフローチャートである。
【図８】第２の実施形態に係るスケジューリング部の動作の一例を示すフローチャートである。
【図９】第３の実施形態に係るパケット処理部の内部構成の一例を示す図である。
【図１０】第３の実施形態に係る滞留パケット管理部の動作の一例を示すフローチャートである。
【図１１】第３の実施形態に係るスケジューリング部の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【００１９】
一実施形態に係る帯域制御装置１００は、少なくとも１以上のパケット処理部１０１を備える。パケット処理部１０１は、パケットを記憶する、少なくとも１以上のパケット記憶部１０２と、パケット記憶部１０２に対応し、トークンを蓄積するトークン蓄積部１０３と、パケットを送信する処理を含む、パケット処理を実行するパケット処理実行部１０４と、スケジューリング部１０５と、滞留パケット管理部１０６と、を含む。スケジューリング部１０５は、トークン蓄積部１０３のトークンを消費しつつパケット記憶部１０２に記憶されたパケットを取り出し、取り出したパケットをパケット処理実行部１０４に出力し、取り出したパケットがパケット処理実行部１０４により送信された送信時刻が所定時刻以降であることを契機として、滞留パケット制御依頼通知を送信する。滞留パケット管理部１０６は、滞留パケット制御依頼通知を受信した場合に、トークン蓄積部１０３が蓄積しているトークンの量に基づいて、パケット記憶部１０２が記憶するパケットの少なくとも一部を、処理が滞留している滞留パケットであると判定し、判定された滞留パケットに対応するトークンの量をトークン蓄積部１０３から取り除く。
【００２０】
ここで、詳細については後述するが、ＣＰＵによるパケット処理能力不足に起因して、パケットが到着しているにも関わらず、トークンが破棄される事態が生じうる。このような事態が生じると、後にパケット処理性能が十分高くなったとしても、パケットが帯域制御装置に留まり続け、通信品質が劣化するという問題が起きる。
【００２１】
このような問題に対し、一実施形態に係る帯域制御装置１００では、例えば、トークン蓄積部１０３が蓄積するトークンの量よりもパケット記憶部１０２に記憶されたパケットのサイズが小さい場合には、パケット記憶部１０２のパケットを送信することができる状況にも関わらずパケットがパケット記憶部１０２に留まっていると判断し、当該パケットを滞留パケットと判定する。滞留パケットの存在を確認した帯域制御装置は、当該滞留パケットに対応するトークンをトークン蓄積部１０３から取り除く。その結果、パケットが帯域制御装置１００に到着しているにも関わらず、トークンが破棄されるという問題が解決され、ＣＰＵによるパケット処理性能が不足した際にも通信品質が維持される。
【００２２】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
【００２３】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００２４】
図２は、第１の実施形態に係る帯域制御装置１０の内部構成の一例を示す図である。図２を参照すると、ネットワークの帯域制御を行う帯域制御装置１０は、複数の通信インターフェイス１１−１、１１−２と、複数のパケット識別部１２−１、１２−２と、複数のパケット処理部１３−１、１３−２と、を備える。
【００２５】
なお、通信インターフェイス１１−１、１１−２を区別する特段の理由が無い場合には、単に「通信インターフェイス１１」と表記する。パケット識別部１２−１、１２−２やパケット処理部１３−１、１３−２についても同様の表記を行う。
【００２６】
通信インターフェイス１１は、パケット識別部１２とパケット処理部１３と接続される。また、パケット識別部１２は、パケット処理部１３と接続される。
【００２７】
通信インターフェイス１１は、図示しない他の通信装置と通信する手段である。例えば、通信インターフェイス１１は、Ｅｔｈｅｒｎｅｔ（登録商標）インターフェイス等である。
【００２８】
パケット識別部１２は、パケットのヘッダ等を解析することで、パケットが属するクラスを識別する手段である。なお、パケットが属するクラスとは、帯域制御を行う通信の単位を意味する。単一のクラスには、単一又は複数のサービスのパケットが属することになる。
【００２９】
パケット識別部１２は、上記識別結果に基づき、パケットが属するクラスのクラスＩＤを各パケットに付加すると共に、識別結果に基づき当該パケットを引き渡すパケット処理部１３を選択する。パケット識別部１２は、当該選択したパケット処理部１３に対し、クラスＩＤが付加されたパケットを出力する。あるいは、パケット識別部１２は、上記パケットに対して実行するべき処理内容を付加してもよい。
【００３０】
パケット処理部１３は、各クラスの必要帯域を満たすようにスケジューリングすると共に、パケットに対する各種処理を実行する手段である。パケット処理部１３が行うパケット処理としては、通信インターフェイス１１へのパケットの転送、パケットヘッダの書き換え、パケットのカプセル化、パケットのカプセル化解除（デカプセル化）等がある。
【００３１】
なお、通信インターフェイス１１−１からパケットが入力され、通信インターフェイス１１−２からパケットが出力される場合、通信インターフェイス１１−１、パケット識別部１２−１、パケット処理部１３−２、通信インターフェイス１１−２の順でパケットが移動する。即ち、パケットを受信した通信インターフェイス１１と対応するパケット識別部１２と、パケットを送信する通信インターフェイス１１と対応するパケット処理部１３と、をパケットは通過する。
【００３２】
図３は、パケット処理部１３の内部構成の一例を示す図である。図３を参照すると、パケット処理部１３は、パケット分配部１３１と、パケット記憶部１３２−１〜１３２−ｎ（ｎは正の整数、以下同じ）と、トークン蓄積部１３３と、スケジューリング部１３４と、パケット処理実行部１３５と、滞留パケット管理部１３６と、を備えている。なお、パケット記憶部１３２−１〜１３２−ｎを区別する特段の理由が無い場合には、単に「パケット記憶部１３２」と表記する。
【００３３】
パケット分配部１３１は、パケットに付加されたクラスＩＤを参照し、当該クラスＩＤに対応するパケット記憶部１３２に格納する手段である。
【００３４】
パケット記憶部１３２は、クラスごとにパケットを記憶する手段である。パケット記憶部１３２は、例えば、メモリ等により実現され、ＦＩＦＯ（First In First Out）キュー等の構造を有する。パケット処理部１３は、少なくとも１以上のパケット記憶部１３２を備える。
【００３５】
トークン蓄積部１３３は、クラスごとにトークンを蓄積する手段である。つまり、トークン蓄積部１３３は、パケット記憶部１３２に対応し、トークンを蓄積する手段である。例えば、トークン蓄積部１３３は非特許文献１に開示されたトークンバケツ（トークンバケット）として実現できる。トークン蓄積部１３３には、一定時間ごとに所定の量のトークンが追加される。なお、各クラスについて蓄積可能なトークンには上限があり、上限を超えてトークンを蓄積することはできない。
【００３６】
スケジューリング部１３４は、トークン蓄積部１３３のトークンを消費しつつパケット記憶部１３２に記憶されたパケットを取り出し、当該取り出したパケットをパケット処理実行部１３５に出力し、取り出したパケットがパケット処理実行部１３５により送信された送信時刻が所定時刻以降であることを契機として、他のモジュール（滞留パケット管理部１３６）に通知を行う手段である。より具体的には、スケジューリング部１３４は、優先度に応じてクラスを選択し、当該選択したクラスＩＤに対応するパケット記憶部１３２を選択し、当該選択したパケット記憶部１３２の先頭に記憶されているパケットを参照する。なお、優先度に応じたクラスの選択には、例えば、非特許文献１が開示する「プライオリティスケジューリング」を用いることができる。
【００３７】
スケジューリング部１３４は、参照したパケットに後述する滞留フラグが付加されているか否かを確認する。スケジューリング部１３４は、パケットに滞留フラグが付加されている場合には、トークン蓄積部１３３が蓄積するトークンを消費せず、当該パケットをパケット記憶部１３２から取り出す。
【００３８】
その後、スケジューリング部１３４は、取り出したパケットをパケット処理実行部１３５に引き渡し、パケット処理実行部１３５によるパケット処理が完了したことを契機として、現在時刻を確認する。スケジューリング部１３４は、確認した現在時刻が所定時刻以降の場合に、滞留パケット管理部１３６に対し、「滞留パケット制御依頼通知」を行う。また、スケジューリング部１３４は、滞留パケット管理部１３６から「滞留パケット制御完了通知」を受信したことを契機として、トークン蓄積部１３３に所定量のトークンを追加する。なお、滞留パケット制御依頼通知や滞留パケット制御完了通知が発行される条件等については後述する。
【００３９】
パケット処理実行部１３５は、パケットを外部モジュール（例えば、通信インターフェイス１１）に送信する処理を含む、パケット処理を実行する手段である。より具体的には、パケット処理実行部１３５は、スケジューリング部１３４からパケットを取得し、パケットに付加されたパケット処理内容が存在すれば、当該処理内容を実行した後、通信インターフェイス１１へパケットを出力する。
【００４０】
滞留パケット管理部１３６は、滞留パケット制御依頼通知を受信した場合に、トークン蓄積部１３３が蓄積しているトークンの量に基づいて、パケット記憶部１３２が記憶するパケットの少なくとも一部を、処理が滞留している滞留パケットであると判定し、判定された滞留パケットに対応するトークンの量をトークン蓄積部１３３から取り除く手段である。より具体的には、滞留パケット管理部１３６は、パケットが滞留しているか否かに応じて、パケット記憶部１３２に記憶されたパケットに滞留フラグを付加したり、トークン蓄積部１３３のトークン量を制御、管理したりする手段である。即ち、滞留パケット管理部１３６は、滞留パケットに関連した制御を行い、当該滞留パケットの管理を行う。
【００４１】
図３に示すように、滞留パケット管理部１３６は、パケット記憶部１３２と、スケジューリング部１３４と、トークン蓄積部１３３と、に接続されている。
【００４２】
滞留パケット管理部１３６は、スケジューリング部１３４から上記「滞留パケット制御依頼通知」を受信したことを契機として、パケット記憶部１３２とトークン蓄積部１３３を参照する。その際、滞留パケット管理部１３６は、パケット記憶部１３２に記憶され、滞留フラグが付加されていないパケットに関し、当該パケットのサイズがトークン蓄積部１３３の当該パケットのクラスに対応するトークンの蓄積量以下であれば、当該パケット（１つ以上の滞留フラグが付加されていないパケット）のトークンを消費し、そのパケットに滞留フラグを付加する。その後、滞留パケット管理部１３６は、滞留フラグに関する制御が終了したことを示す「滞留パケット制御完了通知」をスケジューリング部１３４に送信する。
【００４３】
[動作の説明]
次に、図４を参照しつつ、滞留パケット管理部１３６の動作を説明する。
【００４４】
滞留パケット管理部１３６は、スケジューリング部１３４から滞留パケット制御依頼通知を受信する（ステップＳ１０１）。
【００４５】
次に、滞留パケット管理部１３６は、クラスを選択する（ステップＳ１０２）。
【００４６】
ステップＳ１０３において、滞留パケット管理部１３６は、選択すべきクラスの有無を確認する。滞留パケット管理部１３６は、選択すべきクラスが存在しない場合（例えば、全てのクラスの選択が終了した場合）、ステップＳ１０８の処理を実行する（ステップＳ１０３、Ｙｅｓ分岐）。選択すべきクラスが存在する場合（ステップＳ１０３、Ｎｏ分岐）、滞留パケット管理部１３６は、ステップＳ１０４以降の処理を実行する。
【００４７】
ステップＳ１０４において、滞留パケット管理部１３６は、上記選択されたクラスに対応するパケット記憶部１３２に記憶され、且つ、滞留フラグが付加されていないパケットと、トークン蓄積部１３３における上記選択されたクラスに対応するトークンの蓄積量と、を参照する。
【００４８】
ステップＳ１０５において、滞留パケット管理部１３６は、参照したパケットのサイズが参照したトークンの蓄積量よりも大きいか否か（条件１）、又は、ステップＳ１０３にて選択したクラスに対応するパケット記憶部１３２のパケットには全て滞留フラグが付加されているか否か（条件２）、を確認する。
【００４９】
滞留パケット管理部１３６は、上記２つの条件のうちいずれかを満たす場合（ステップＳ１０５、Ｙｅｓ分岐）、ステップＳ１０２に遷移し、新たなクラスを選択する。滞留パケット管理部１３６は、上記２つの条件のいずれも満たさない場合（ステップＳ１０５、Ｎｏ分岐）、ステップＳ１０６以降の処理を実行する。
【００５０】
ステップＳ１０６において、滞留パケット管理部１３６は、ステップＳ１０４にて参照したパケットは、パケット処理が滞留したパケットであると判定する。つまり、滞留パケット管理部１３６は、パケット記憶部１３２に記憶されているパケットのサイズが、トークン蓄積部１３３が蓄積するトークンの蓄積量以下である場合に、当該パケットを、処理が滞留している滞留パケットと判定する。
【００５１】
ステップＳ１０７において、滞留パケット管理部１３６は、ステップＳ１０４にて参照したパケットに滞留フラグを付加すると共に、予め定めた量のトークンを消費する（トークン蓄積部１３３の保持するトークン量を減らす）。ステップＳ１０７の処理が終了すると、滞留パケット管理部１３６は、ステップＳ１０４に戻り処理を継続する。
【００５２】
ステップＳ１０８において、滞留パケット管理部１３６は、スケジューリング部１３４に対し、滞留パケット制御完了通知を行う。
【００５３】
このように、滞留パケット管理部１３６は、パケット記憶部１３２に記憶されたパケットが滞留パケットであると判定された場合に、トークン蓄積部１３３が蓄積しているトークンを消費すると共に、滞留パケットであると判定されたパケットに対し、滞留フラグを付加することで滞留パケットと他のパケットと区別して管理する。
【００５４】
次に、図５を参照しつつ、スケジューリング部１３４の動作を説明する。
【００５５】
スケジューリング部１３４は、クラスの優先度に応じ、クラスを選択する（ステップＳ２０１）。
【００５６】
次に、スケジューリング部１３４は、選択したクラスのパケット記憶部１３２を選択し、先頭パケットを参照する（ステップＳ２０２）。
【００５７】
ステップＳ２０３において、スケジューリング部１３４は、参照した先頭パケットに滞留フラグが付加されているか否かを確認する。先頭パケットに滞留フラグが付加されていれば（ステップＳ２０３、Ｙｅｓ分岐）、スケジューリング部１３４は、ステップＳ２０７以降の処理を実行する。先頭パケットに滞留フラグが付加されていなければ（ステップＳ２０３、Ｎｏ分岐）、ステップＳ２０４以降の処理を実行する。
【００５８】
ステップＳ２０４において、スケジューリング部１３４は、トークン蓄積部１３３における上記選択したクラスに対応するトークンの蓄積量を参照する。
【００５９】
ステップＳ２０５において、スケジューリング部１３４は、ステップＳ２０２にて参照したパケット（滞留フラグが付加されていないパケット）のパケットサイズが、ステップＳ２０４にて参照したトークンの蓄積量よりも大きいか否かを判定する。パケットサイズがトークンの蓄積量よりも大きい場合（ステップＳ２０５、Ｙｅｓ分岐）には、スケジューリング部１３４は、ステップＳ２０９以降の処理を実行する。パケットサイズがトークンの蓄積量以下の場合（ステップＳ２０５、Ｎｏ分岐）には、スケジューリング部１３４は、ステップＳ２０６以降の処理を実行する。
【００６０】
ステップＳ２０６において、スケジューリング部１３４は、上記参照したパケットのパケットサイズに相当する量のトークンを消費する（トークン蓄積部１３３の保持するトークン量を減らす）。
【００６１】
次に、スケジューリング部１３４は、上記参照したパケットをパケット記憶部１３２から取り出す（ステップＳ２０７）。
【００６２】
その後、スケジューリング部１３４は、パケット処理実行部１３５に対し当該取り出したパケットを送信し、パケット処理実行部１３５によるパケット処理完了を待機する（ステップＳ２０８）。
【００６３】
その後、スケジューリング部１３４は、現在時刻を参照し、現在時刻が所定時刻以降か否かを判定する（ステップＳ２０９）。
【００６４】
現在時刻が所定時刻であれば、スケジューリング部１３４は、ステップＳ２１０に遷移する（ステップＳ２０９、Ｙｅｓ分岐）。現在時刻が所定時刻以降でなければ、スケジューリング部１３４は、ステップＳ２０１に遷移する（ステップＳ２０９、Ｎｏ分岐）。
【００６５】
ステップＳ２１０において、スケジューリング部１３４は、滞留パケット管理部１３６に対し、滞留パケット制御依頼通知を行い、滞留パケット管理部１３６からの滞留パケット制御完了通知を待機する。
【００６６】
ステップＳ２１１において、スケジューリング部１３４は、トークン蓄積部１３３において、ステップＳ２０２にて選択したクラスのトークンに対し、所定の量のトークンを追加すると共に、所定時刻を更新する。なお、スケジューリング部１３４が更新する所定時刻は、例えば、現在時間から所定の時間経過した後の時刻である。
【００６７】
このように、スケジューリング部１３４は、滞留フラグが付加されたパケットをパケット記憶部から取り出す際に、トークン蓄積部１３３が蓄積するトークンを消費しない（ステップＳ２０３にてＹｅｓ分岐の際にはステップＳ２０６が実行されない）。
【００６８】
ここで、パケット処理性能が不足することによる通信品質の不足に対し、パケット処理をスケジューリングすることで解決する手法について検討する。一時的にパケット処理性能が不足した場合には、優先度が高いパケットを優先して処理し、優先度が低いパケットは遅延させ、パケット処理性能が十分なときに処理するという手法が考えられる。
【００６９】
帯域制御装置に搭載されたＣＰＵによるパケット処理性能が不足した場合、低い優先度のクラスに属するパケットの処理は遅延する。その一方で、トークン蓄積部１３３には一定時間ごとに所定の量のトークンが追加される。そのため、パケットの処理は遅延しているにも関わらず、トークンの蓄積量がその上限に達し、上限を超えたトークンが破棄される事態が生じうる。つまり、パケットが到着しているにも関わらず、トークンが破棄されることとなり、後にパケット処理性能が十分高くなったとしても、パケットがパケット記憶部１３２に留まり続けることになる（パケットが滞留する）。即ち、帯域制御装置のパケット処理性能の一時的な不足により、パケットが到着しているにも関わらず、トークンが破棄されることでパケットがキュー（パケット記憶部１３２）に残り続けるという問題が生じる可能性がある。換言するならば、各クラスの入力スループットが規定の帯域に収まっているにも関わらず、遅延の増大やパケットの欠落が生じるという問題が発生する可能性がある。
【００７０】
対して、第１の実施形態に係る帯域制御装置１０は、滞留パケット管理部１３６によるトークン制御機構を備える。具体的には、滞留パケット管理部１３６は、パケット記憶部１３２に記憶され、滞留フラグが付加されていないパケットのなかから、トークン蓄積部１３３が蓄積しているトークンの量が当該パケットのサイズよりも大きいことを判別することで、パケット処理性能が不足したことに起因する滞留パケットを識別する。つまり、滞留パケット管理部１３６は、トークン蓄積部１３３のトークンが十分蓄積され、パケット記憶部１３２に格納されたパケットが送出される状況にも関わらず、当該パケットがパケット記憶部１３２に留まっている状態をパケットの滞留が起きていると判定する。
【００７１】
さらに、滞留パケット管理部１３６は、当該滞留パケットに関し、トークン蓄積部１３３が蓄積しているトークンを消費し、当該パケットに滞留フラグを付加する。その結果、パケットが帯域制御装置１０に到着しているにも関わらず、トークンが破棄されるという問題が解決される。さらに、スケジューリング部１３４は、滞留フラグが付加されたパケットをパケット記憶部１３２から取り出す際に、トークン蓄積部１３３が蓄積するトークンを消費しないので、トークンが二重に消費されることもない。
【００７２】
［第２の実施形態］
続いて、第２の実施形態について図面を参照して詳細に説明する。
【００７３】
第２の実施形態に係る帯域制御装置１０の構成は、図２を参照して説明した第１の実施形態に係る帯域制御装置１０の構成と同様であるため、その説明を省略する。
【００７４】
図６は、第２の実施形態に係る帯域制御装置１０のパケット処理部１３ａの内部構成の一例を示す図である。第１の実施形態に係るパケット処理部１３と第２の実施形態に係るパケット処理部１３ａの相違点は、滞留パケット記憶部１３７−１〜１３７−ｎ（適宜、滞留パケット記憶部１３７と表記する）が追加されている点である。
【００７５】
滞留パケット記憶部１３７は、スケジューリング部１３４と滞留パケット管理部１３６とそれぞれ接続されている。第２の実施形態に係る滞留パケット記憶部１３７は、パケット記憶部１３２と同様に、クラスごとにパケットを記憶する構成を有する。
【００７６】
第２の実施形態に係る滞留パケット管理部１３６は、スケジューリング部１３４からの通知（滞留パケット制御依頼通知）を受信したことを契機として、パケット記憶部１３２とトークン蓄積部１３３を参照する。その後、滞留パケット管理部１３６は、パケット記憶部１３２に記憶されているパケットに対し、トークン蓄積部１３３の上記参照されたパケットのクラスに対応するトークンを消費して、当該パケットをトークン蓄積部１３３から取り出す。その後、滞留パケット管理部１３６は、取り出したパケットを滞留パケット記憶部１３７に記憶させ、スケジューリング部１３４に通知（滞留パケット制御完了通知）を行う。
【００７７】
第２の実施形態に係るスケジューリング部１３４は、優先度に応じてクラスを選択し、選択したクラスＩＤの滞留パケット記憶部１３７を選択する。その際、パケットが記憶されていれば、スケジューリング部１３４は、当該選択した滞留パケット記憶部１３７からパケットを取り出し、トークン蓄積部１３３が蓄積しているトークンを消費することなく当該パケットを滞留パケット記憶部１３７から取り出す。
【００７８】
その後、スケジューリング部１３４は、パケット処理実行部１３５へ取り出したパケットを送信し、パケット処理実行部１３５によるパケットの処理が完了したことを契機として、現在時刻を確認する。スケジューリング部１３４は、確認した現在時刻が、所定の時刻以降であれば、滞留パケット管理部１３６へ通知（滞留パケット制御依頼通知）を行い、滞留パケット管理部１３６からの通知（滞留パケット制御完了通知）があったことを契機として、トークン蓄積部１３３へ所定の量のトークンを追加する。
【００７９】
[動作の説明]
次に、図７を参照しつつ、第２の実施形態に係る滞留パケット管理部１３６の動作を説明する。
【００８０】
図７に示すステップＳ３０１〜Ｓ３０３は、図４に示すステップＳ１０１〜Ｓ１０３と同様であるため説明を省略する。
【００８１】
ステップＳ３０４において、滞留パケット管理部１３６は、ステップＳ３０２にて選択したクラスのパケット記憶部１３２に記憶されているパケットと、トークン蓄積部１３３における上記選択したクラスのトークンの蓄積量と、を参照する。
【００８２】
次に、滞留パケット管理部１３６は、参照したパケットサイズが、参照したトークンの蓄積量よりも大きいか否かを判定する（ステップＳ３０５）。パケットサイズがトークンの蓄積量よりも大きければ（ステップＳ３０５、Ｙｅｓ分岐）、滞留パケット管理部１３６は、ステップＳ３０２に戻り処理を継続する。パケットサイズがトークンの蓄積量以下であれば（ステップＳ３０５、Ｎｏ分岐）、滞留パケット管理部１３６は、ステップＳ３０６以降の処理を実行する。
【００８３】
ステップＳ３０６において、滞留パケット管理部１３６は、上記参照したパケットを処理が滞留しているパケットと判定する。
【００８４】
ステップＳ３０７において、滞留パケット管理部１３６は、当該滞留パケットをパケット記憶部１３２から滞留パケット記憶部１３７に移動させ、対応するトークンを消費する。その後、滞留パケット管理部１３６は、ステップＳ３０４以降の処理を継続する。
【００８５】
ステップＳ３０８において、滞留パケット管理部１３６は、スケジューリング部１３４に対し、滞留パケット制御完了通知を送信する。
【００８６】
次に、図８を参照しつつ、第２の実施形態に係るスケジューリング部１３４の動作を説明する。
【００８７】
ステップＳ４０１において、スケジューリング部１３４は、クラスの優先度に応じてクラスを選択する。
【００８８】
ステップＳ４０２において、スケジューリング部１３４は、選択したクラスの滞留パケット記憶部１３７を選択する。
【００８９】
ステップＳ４０３において、スケジューリング部１３４は、選択した滞留パケット記憶部１３７にパケットが存在するか否かを判定する。滞留パケット記憶部１３７にパケットが存在すれば（ステップＳ４０３、Ｙｅｓ分岐）、スケジューリング部１３４は、ステップＳ４０４以降の処理を実行する。滞留パケット記憶部１３７にパケットが存在しなければ（ステップＳ４０３、Ｎｏ分岐）、スケジューリング部１３４は、ステップＳ４０９以降の処理を実行する。
【００９０】
ステップＳ４０４において、スケジューリング部１３４は、滞留パケット記憶部１３７からパケットを取り出す。
【００９１】
ステップＳ４０５において、スケジューリング部１３４は、パケット処理実行部１３５へ取り出したパケットを送信し、パケット処理実行部１３５によるパケットの処理完了を待機する。その後、スケジューリング部１３４は、現在時刻を参照し、その時刻が所定時刻以降であれば、ステップＳ４０７以降の処理を実行する（ステップＳ４０６、Ｙｅｓ分岐）。スケジューリング部１３４は、現在時刻が所定時刻以降でなければ、ステップＳ４０１に戻り処理を継続する（ステップＳ４０６、Ｎｏ分岐）。
【００９２】
スケジューリング部１３４は、滞留パケット管理部１３６に対し、滞留パケット制御依頼通知を行い、滞留パケット管理部１３６からの滞留パケット制御完了通知の受信を待機する（ステップＳ４０７）。その後、スケジューリング部１３４は、トークン蓄積部１３３に所定の量のトークンを追加すると共に、上記所定時刻を更新する（ステップＳ４０８）。なお、更新する所定時刻は、例えば、現在時刻から所定の時間経過後の時刻である。
【００９３】
ステップＳ４０８の処理が終了すると、スケジューリング部１３４は、ステップＳ４０１に戻り処理を継続する。
【００９４】
ステップＳ４０９において、スケジューリング部１３４は、選択したクラスのパケット記憶部１３２を選択し、先頭パケットを参照する。
【００９５】
ステップＳ４１０において、スケジューリング部１３４は、トークン蓄積部１３３における、上記選択したクラスに対応するトークンの蓄積量を参照する。
【００９６】
ステップＳ４１１において、スケジューリング部１３４は、参照したパケットのサイズが、参照したトークンの蓄積量より大きいか否かを判定する。パケットサイズがトークンの蓄積量よりも大きければ（ステップＳ４１１、Ｙｅｓ分岐）、スケジューリング部１３４は、ステップＳ４０６以降の処理を実行する。パケットサイズがトークンの蓄積量以下であれば（ステップＳ４１１、Ｎｏ分岐）、スケジューリング部１３４は、ステップＳ４１２以降の処理を実行する。
【００９７】
ステップＳ４１２において、スケジューリング部１３４は、パケットサイズに相当する量のトークンを消費する。
【００９８】
その後、スケジューリング部１３４は、当該パケットをパケット記憶部１３２から取り出す（ステップＳ４１３）。ステップＳ４１３の処理が終了すると、スケジューリング部１３４は、ステップＳ４０５以降の処理を実行する。
【００９９】
以上のように、第２の実施形態では、滞留パケット管理部１３６は、パケット記憶部１３２に記憶されたパケットの中から、トークン蓄積部１３３が蓄積しているトークンの量が当該パケットのサイズより大きいことを判別することで、パケット処理性能が不足したことにより滞留したパケットを識別し、トークン蓄積部１３３が蓄積しているトークンを消費すると共に、当該パケットを滞留パケット記憶部１３７へ移動する。その結果、パケットが到着しているのに関わらずトークンが破棄される問題が解決される。また、スケジューリング部１３４が、パケットを滞留パケット記憶部１３７から取り出す際に、トークン蓄積部１３３が蓄積しているトークンを消費しないことで、トークンが二重に消費されることはない。
【０１００】
さらに加えて、第２の実施形態では、パケットを記憶する機能を持つ手段として、パケット記憶部１３２に加えて滞留パケット記憶部１３７を備える。パケット記憶部１３２の使用量上限を定め、使用量上限を超える場合にパケットを捨てることで入力トラフィックのレートが制限されるような場合、滞留パケット記憶部１３７に処理が滞留したパケットを移動させることによって、処理が滞留したことによってパケット記憶部１３２にパケットが溜まり、当該パケット記憶部１３２の使用量上限をパケットの記憶量が超えることを防ぐことができる。
【０１０１】
［第３の実施形態］
続いて、第３の実施形態について図面を参照して詳細に説明する。
【０１０２】
第３の実施形態に係る帯域制御装置１０の構成は、図２を参照して説明した第１の実施形態に係る帯域制御装置１０の構成と同様であるため、その説明を省略する。
【０１０３】
図９は、第３の実施形態に係る帯域制御装置１０のパケット処理部１３ｂの内部構成の一例を示す図である。
【０１０４】
第１の実施形態に係るパケット処理部１３と第３の実施形態に係るパケット処理部１３ｂの相違点は、滞留トークン蓄積部１３８が追加されている点である。滞留トークン蓄積部１３８は、スケジューリング部１３４と滞留パケット管理部とそれぞれ接続されている。
【０１０５】
滞留トークン蓄積部１３８は、トークン蓄積部１３３と同様に、クラスごとにトークンを蓄積する。以降の説明では、滞留トークン蓄積部１３８に蓄積されるトークンを、滞留トークンと表記する。
【０１０６】
第３の実施形態に係る滞留パケット管理部１３６は、スケジューリング部１３４から通知（滞留パケット制御依頼通知）を受信したことを契機として、パケット記憶部１３２、トークン蓄積部１３３及び滞留トークン蓄積部１３８を参照する。その上で、滞留パケット管理部１３６は、パケット記憶部１３２に記憶されているパケットの先頭から滞留トークン蓄積部１３８に蓄積されている滞留トークンの量に相当するパケットを除いた後の先頭パケットのサイズについて、当該先頭パケットのサイズがトークン蓄積部１３３の当該パケットに対応するクラスのトークンの蓄積量以下であれば、当該先頭パケットのパケットサイズに相当するトークンを、トークン蓄積部１３３から滞留トークン蓄積部１３８へ移動させる。その後、滞留パケット管理部１３６は、滞留パケット制御完了通知をスケジューリング部１３４に通知する。
【０１０７】
例えば、パケット記憶部１３２に５個のパケットが記憶され、対応する滞留トークン蓄積部１３８には２個のパケットに相当するトークンが蓄積されていれば、滞留パケット管理部１３６は、パケット記憶部１３２に記憶された先頭から３個目のパケットのサイズと、トークン蓄積部１３３のトークン蓄積量と、を比較する。比較の結果、当該パケットのサイズが、トークン蓄積部１３３のトークン蓄積量以下であれば、当該パケット（先頭から３個目のパケット）のサイズに相当するトークンを、トークン蓄積部１３３から滞留トークン蓄積部１３８に移動する。
【０１０８】
第３の実施形態に係るスケジューリング部１３４は、優先度に応じてクラスを選択し、当該クラスに対応する滞留トークンが滞留トークン蓄積部１３８に蓄積されていれば、当該滞留トークンを消費して当該クラスに対応するパケット記憶部１３２からパケットを取り出す。さらに、スケジューリング部１３４は、パケット処理実行部１３５へ取り出したパケットを送信し、パケット処理実行部１３５によるパケット処理が完了したことを契機として、現在時刻を確認する。現在時刻が所定時刻以降であれば、スケジューリング部１３４は、滞留パケット管理部１３６へ通知（滞留パケット制御依頼通知）を行い、滞留パケット管理部１３６からの通知（滞留パケット制御完了通知）を受信したことを契機として、トークン蓄積部１３３へ所定の量のトークンを追加する。なお、滞留トークンの量がパケットのサイズより小さいときには、スケジューリング部１３４は、当該クラスに対応するトークン蓄積部１３３が蓄積しているトークンも消費する。
【０１０９】
[動作の説明]
次に、図１０を参照しつつ、第３の実施形態に係る滞留パケット管理部１３６の動作を説明する。
【０１１０】
図１０に示すステップＳ５０１〜Ｓ５０３は、図４に示すステップＳ１０１〜Ｓ１０３と同様であるため説明を省略する。
【０１１１】
ステップＳ５０４において、滞留パケット管理部１３６は、選択したクラスのパケット記憶部１３２に記憶されているパケットの先頭から滞留トークン蓄積部１３８に蓄積されている滞留トークンの量に相当するパケットを除いた後の先頭パケットと、トークン蓄積部１３３における選択したクラスのトークンの蓄積量を参照する。
【０１１２】
ステップＳ５０５において、滞留パケット管理部１３６は、参照したパケットのサイズが参照したトークンの蓄積量よりも大きいか否かを判定する。参照したパケットのサイズがトークンの蓄積量よりも大きければ（ステップＳ５０５、Ｙｅｓ分岐）、滞留パケット管理部１３６は、ステップＳ５０２に戻り処理を継続する。参照したパケットのサイズがトークンの蓄積量以下であれば（ステップＳ５０５、Ｎｏ分岐）、滞留パケット管理部１３６は、ステップＳ５０６以降の処理を実行する。
【０１１３】
ステップＳ５０６において、滞留パケット管理部１３６は、ステップＳ５０４にて参照したパケットを、処理が滞留したパケットと判定する。
【０１１４】
ステップＳ５０７において、滞留パケット管理部１３６は、ステップＳ５０４にて参照したパケットのサイズに相当する量のトークンを、トークン蓄積部１３３から滞留トークン蓄積部１３８に移動させる。滞留パケット管理部１３６は、ステップＳ５０７の処理が終了すると、ステップＳ５０４に戻り処理を継続する。
【０１１５】
ステップＳ５０８において、滞留パケット管理部１３６は、滞留パケット制御完了通知をスケジューリング部１３４に対して行う。
【０１１６】
次に、図１１を参照しつつ、第２の実施形態に係るスケジューリング部１３４の動作を説明する。
【０１１７】
ステップＳ６０１において、スケジューリング部１３４は、クラスの優先度に応じてクラスを選択する。
【０１１８】
ステップＳ６０２において、スケジューリング部１３４は、選択したクラスのパケット記憶部１３２を選択し、先頭パケットを参照する。
【０１１９】
ステップＳ６０３において、スケジューリング部１３４は、滞留トークン蓄積部１３８における上記選択したクラスに対応する滞留トークンの蓄積量を参照する。
【０１２０】
ステップＳ６０４において、スケジューリング部１３４は、参照したパケットのサイズが、参照した滞留トークンの蓄積量よりも大きいか否かを判定する。パケットサイズが滞留トークンの蓄積量よりも大きい場合には（ステップＳ６０４、Ｙｅｓ分岐）、スケジューリング部１３４は、ステップＳ６１１以降の処理を実行する。パケットサイズが滞留トークンの蓄積量以下の場合には（ステップＳ６０４、Ｎｏ分岐）、スケジューリング部１３４は、ステップＳ６０５以降の処理を実行する。
【０１２１】
ステップＳ６０５において、スケジューリング部１３４は、参照したパケットのパケットサイズに相当する量の滞留トークンを消費する。
【０１２２】
ステップＳ６０６において、スケジューリング部１３４は、参照したパケットをパケット記憶部１３２から取り出す。
【０１２３】
ステップＳ６０７において、スケジューリング部１３４は、パケット処理実行部１３５へ取り出したパケットを送信し、パケット処理実行部１３５によるパケット処理の完了を待機する。
【０１２４】
その後、スケジューリング部１３４は、現在時刻を参照し、現在時刻が所定時刻以降であれば、ステップＳ６０９以降の処理を実行する（ステップＳ６０８、Ｙｅｓ分岐）。スケジューリング部１３４は、現在時刻が所定時刻以降でなければステップＳ６０１に戻り処理を継続する（ステップＳ６０８、Ｎｏ分岐）。
【０１２５】
ステップＳ６０９において、スケジューリング部１３４は、滞留パケット管理部１３６に対し、滞留パケット制御依頼通知を行い、滞留パケット管理部１３６からの通知（滞留パケット制御完了通知）の受信を待機する。
【０１２６】
ステップＳ６１０において、スケジューリング部１３４は、トークン蓄積部１３３へ所定の量のトークンを追加し、所定時刻を更新する。なお、更新する所定時刻は、例えば現在時間の所定の時間後である。ステップＳ６１０の処理が終了すると、スケジューリング部１３４は、ステップＳ６０１に戻り処理を継続する。
【０１２７】
ステップＳ６１１において、スケジューリング部１３４は、トークン蓄積部１３３における選択されたクラスに対応するトークンの蓄積量を参照する。参照したパケットのサイズが、参照したトークンの蓄積量よりも大きい場合には、スケジューリング部１３４は、ステップＳ６０１に戻り処理を継続する（ステップＳ６１２、Ｙｅｓ分岐）。参照したパケットのサイズが、参照したトークンの蓄積量以下の場合には、スケジューリング部１３４は、ステップＳ６１３の処理を実行する。
【０１２８】
ステップＳ６１３において、スケジューリング部１３４は、参照したパケットのサイズに相当する量のトークンを消費する。ステップＳ６１３の処理が終了すると、スケジューリング部１３４は、ステップＳ６０６以降の処理を実行する。
【０１２９】
以上のように、第３の実施形態に係る滞留パケット管理部１３６は、パケット記憶部１３２に記憶されたパケットから、パケット処理性能が不足したことによって滞留したパケットを識別し、当該パケットに相当する量のトークンをトークン蓄積部１３３から滞留トークン蓄積部１３８に移動させる。その結果、パケットが到着しているにも関わらずトークンが破棄される問題が解決される。
【０１３０】
また、スケジューリング部１３４が、パケットをパケット記憶部１３２から取り出す際、当該パケットのクラスに対応する滞留トークンが滞留トークン蓄積部１３８に蓄積されていれば、その滞留トークンを優先して消費することで、処理が滞留したパケットを移動させたトークンによりパケットを処理することができる。
【０１３１】
なお、第１〜第３の実施形態にて説明した帯域制御装置、パケット処理部等は例示であって、その構成を限定する趣旨ではない。例えば、パケット処理部１３の機能の一部が、パケット識別部１２等の他のモジュールに組み込まれていてもよい。
【０１３２】
また、帯域制御装置１０のパケット処理部１３等の各部が行う処理は、帯域制御装置１０に搭載されたコンピュータに、そのハードウェアを用いて、上述した各処理を実行させるコンピュータプログラムにより実現できる。つまり、パケット処理部１３等が行う機能を何らかのハードウェア、及び／又は、ソフトウェアで実行する手段があればよい。
【０１３３】
さらに、コンピュータの記憶部に、上述したコンピュータプログラムをインストールすることにより、コンピュータを帯域制御装置として機能させることができる。さらにまた、上述したコンピュータプログラムをコンピュータに実行させることにより、コンピュータにより帯域制御方法を実行することができる。また、そのプログラムは、ネットワークを介してダウンロードするか、或いは、プログラムを記憶した記憶媒体を用いて、更新することができる。
【０１３４】
また、上述の説明で用いた複数のフローチャートでは、複数の工程（処理）が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。
【０１３５】
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、ネットワークにおいてサービスの使用帯域を制御する帯域制御装置や、帯域制御装置をコンピュータに実現するためのプログラム等に好適に適用可能である。
【０１３６】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
［付記１］
上述の第１の視点に係る帯域制御装置のとおりである。
［付記２］
前記滞留パケット管理部は、
前記パケット記憶部に記憶されているパケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下である場合に、前記パケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下であるパケットを前記滞留パケットと判定する、付記１の帯域制御装置。
［付記３］
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットが前記滞留パケットであると判定された場合に、前記トークン蓄積部が蓄積しているトークンを消費すると共に、
前記滞留パケットであると判定されたパケットに対し、滞留フラグを付加することで前記滞留パケットと他のパケットと区別し、
前記スケジューリング部は、
前記滞留フラグが付加されたパケットを前記パケット記憶部から取り出す際に、前記トークン蓄積部が蓄積するトークンを消費しない、付記２の帯域制御装置。
［付記４］
前記パケット処理部は、
前記滞留パケットを記憶する、少なくとも１以上の滞留パケット記憶部をさらに含み、
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットが前記滞留パケットであると判定された場合に、前記トークン蓄積部が蓄積しているトークンを消費すると共に、
前記滞留パケットと判定されたパケットを、前記パケット記憶部から前記滞留パケット記憶部へ移動させることで、前記滞留パケットを他のパケットと区別し、
前記スケジューリング部は、
前記滞留パケット記憶部からパケットを取り出す際に、前記トークン蓄積部が蓄積するトークンを消費しない、付記２の帯域制御装置。
［付記５］
前記パケット処理部は、
トークンを蓄積する、滞留トークン蓄積部をさらに含み、
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットであって、前記滞留トークン蓄積部に蓄積されたトークンの蓄積量に相当する量のパケットを除いた後の前記パケット記憶部に記憶された先頭パケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下である場合に、前記先頭パケットを前記滞留パケットと判定し、前記先頭パケットのサイズに相当する量のトークンを前記トークン蓄積部から前記滞留トークン蓄積部へ移動させ、
前記スケジューリング部は、
前記パケット記憶部からパケットを取り出す際に、前記滞留トークン蓄積部が蓄積しているトークンを消費する、付記１の帯域制御装置。
［付記６］
前記滞留パケット管理部は、
前記滞留パケット制御依頼通知を受信したことを契機として、前記滞留パケットに対する制御を行い、前記滞留パケットに対する制御が完了した後に、滞留パケット制御完了通知を前記スケジューリング部に送信する、付記１乃至５のいずれか一に記載の帯域制御装置。
［付記７］
前記スケジューリング部は、
前記滞留パケット制御完了通知を受信したことを契機として、前記トークン蓄積部に所定の量のトークンを追加する、付記６の帯域制御装置。
［付記８］
上述の第２の視点に係る帯域制御方法のとおりである。
［付記９］
上述の第３の視点に係る帯域制御方法のとおりである。
［付記１０］
上述の第４の視点に係るプログラムのとおりである。
なお、付記８〜１０の形態は、付記１の形態と同様に、付記２の形態〜付記７の形態に展開することが可能である。
【０１３７】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１３８】
１０、１００  帯域制御装置
１１、１１−１、１１−２  通信インターフェイス
１２、１２−１、１２−２  パケット識別部
１３、１３−１、１３−２、１３ａ、１３ｂ、１０１  パケット処理部
１０２、１３２、１３２−１〜１３２−ｎ  パケット記憶部
１０３、１３３  トークン蓄積部
１０４、１３５  パケット処理実行部
１０５、１３４  スケジューリング部
１０６、１３６  滞留パケット管理部
１３１  パケット分配部
１３７、１３７−１〜１３７−ｎ  滞留パケット記憶部
１３８  滞留トークン蓄積部
【図１】
0006589497.tif 000002
【図２】
0006589497.tif 000003
【図３】
0006589497.tif 000004
【図４】
0006589497.tif 000005
【図５】
0006589497.tif 000006
【図６】
0006589497.tif 000007
【図７】
0006589497.tif 000008
【図８】
0006589497.tif 000009
【図９】
0006589497.tif 000010
【図１０】
0006589497.tif 000011
【図１１】
0006589497.tif 000012