初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
一実施形態に係る帯域制御装置100は、少なくとも1以上のパケット処理部101を備える。パケット処理部101は、パケットを記憶する、少なくとも1以上のパケット記憶部102と、パケット記憶部102に対応し、トークンを蓄積するトークン蓄積部103と、パケットを送信する処理を含む、パケット処理を実行するパケット処理実行部104と、スケジューリング部105と、滞留パケット管理部106と、を含む。スケジューリング部105は、トークン蓄積部103のトークンを消費しつつパケット記憶部102に記憶されたパケットを取り出し、取り出したパケットをパケット処理実行部104に出力し、取り出したパケットがパケット処理実行部104により送信された送信時刻が所定時刻以降であることを契機として、滞留パケット制御依頼通知を送信する。滞留パケット管理部106は、滞留パケット制御依頼通知を受信した場合に、トークン蓄積部103が蓄積しているトークンの量に基づいて、パケット記憶部102が記憶するパケットの少なくとも一部を、処理が滞留している滞留パケットであると判定し、判定された滞留パケットに対応するトークンの量をトークン蓄積部103から取り除く。
ここで、詳細については後述するが、CPUによるパケット処理能力不足に起因して、パケットが到着しているにも関わらず、トークンが破棄される事態が生じうる。このような事態が生じると、後にパケット処理性能が十分高くなったとしても、パケットが帯域制御装置に留まり続け、通信品質が劣化するという問題が起きる。
このような問題に対し、一実施形態に係る帯域制御装置100では、例えば、トークン蓄積部103が蓄積するトークンの量よりもパケット記憶部102に記憶されたパケットのサイズが小さい場合には、パケット記憶部102のパケットを送信することができる状況にも関わらずパケットがパケット記憶部102に留まっていると判断し、当該パケットを滞留パケットと判定する。滞留パケットの存在を確認した帯域制御装置は、当該滞留パケットに対応するトークンをトークン蓄積部103から取り除く。その結果、パケットが帯域制御装置100に到着しているにも関わらず、トークンが破棄されるという問題が解決され、CPUによるパケット処理性能が不足した際にも通信品質が維持される。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、第1の実施形態に係る帯域制御装置10の内部構成の一例を示す図である。図2を参照すると、ネットワークの帯域制御を行う帯域制御装置10は、複数の通信インターフェイス11−1、11−2と、複数のパケット識別部12−1、12−2と、複数のパケット処理部13−1、13−2と、を備える。
なお、通信インターフェイス11−1、11−2を区別する特段の理由が無い場合には、単に「通信インターフェイス11」と表記する。パケット識別部12−1、12−2やパケット処理部13−1、13−2についても同様の表記を行う。
通信インターフェイス11は、パケット識別部12とパケット処理部13と接続される。また、パケット識別部12は、パケット処理部13と接続される。
通信インターフェイス11は、図示しない他の通信装置と通信する手段である。例えば、通信インターフェイス11は、Ethernet(登録商標)インターフェイス等である。
パケット識別部12は、パケットのヘッダ等を解析することで、パケットが属するクラスを識別する手段である。なお、パケットが属するクラスとは、帯域制御を行う通信の単位を意味する。単一のクラスには、単一又は複数のサービスのパケットが属することになる。
パケット識別部12は、上記識別結果に基づき、パケットが属するクラスのクラスIDを各パケットに付加すると共に、識別結果に基づき当該パケットを引き渡すパケット処理部13を選択する。パケット識別部12は、当該選択したパケット処理部13に対し、クラスIDが付加されたパケットを出力する。あるいは、パケット識別部12は、上記パケットに対して実行するべき処理内容を付加してもよい。
パケット処理部13は、各クラスの必要帯域を満たすようにスケジューリングすると共に、パケットに対する各種処理を実行する手段である。パケット処理部13が行うパケット処理としては、通信インターフェイス11へのパケットの転送、パケットヘッダの書き換え、パケットのカプセル化、パケットのカプセル化解除(デカプセル化)等がある。
なお、通信インターフェイス11−1からパケットが入力され、通信インターフェイス11−2からパケットが出力される場合、通信インターフェイス11−1、パケット識別部12−1、パケット処理部13−2、通信インターフェイス11−2の順でパケットが移動する。即ち、パケットを受信した通信インターフェイス11と対応するパケット識別部12と、パケットを送信する通信インターフェイス11と対応するパケット処理部13と、をパケットは通過する。
図3は、パケット処理部13の内部構成の一例を示す図である。図3を参照すると、パケット処理部13は、パケット分配部131と、パケット記憶部132−1〜132−n(nは正の整数、以下同じ)と、トークン蓄積部133と、スケジューリング部134と、パケット処理実行部135と、滞留パケット管理部136と、を備えている。なお、パケット記憶部132−1〜132−nを区別する特段の理由が無い場合には、単に「パケット記憶部132」と表記する。
パケット分配部131は、パケットに付加されたクラスIDを参照し、当該クラスIDに対応するパケット記憶部132に格納する手段である。
パケット記憶部132は、クラスごとにパケットを記憶する手段である。パケット記憶部132は、例えば、メモリ等により実現され、FIFO(First In First Out)キュー等の構造を有する。パケット処理部13は、少なくとも1以上のパケット記憶部132を備える。
トークン蓄積部133は、クラスごとにトークンを蓄積する手段である。つまり、トークン蓄積部133は、パケット記憶部132に対応し、トークンを蓄積する手段である。例えば、トークン蓄積部133は非特許文献1に開示されたトークンバケツ(トークンバケット)として実現できる。トークン蓄積部133には、一定時間ごとに所定の量のトークンが追加される。なお、各クラスについて蓄積可能なトークンには上限があり、上限を超えてトークンを蓄積することはできない。
スケジューリング部134は、トークン蓄積部133のトークンを消費しつつパケット記憶部132に記憶されたパケットを取り出し、当該取り出したパケットをパケット処理実行部135に出力し、取り出したパケットがパケット処理実行部135により送信された送信時刻が所定時刻以降であることを契機として、他のモジュール(滞留パケット管理部136)に通知を行う手段である。より具体的には、スケジューリング部134は、優先度に応じてクラスを選択し、当該選択したクラスIDに対応するパケット記憶部132を選択し、当該選択したパケット記憶部132の先頭に記憶されているパケットを参照する。なお、優先度に応じたクラスの選択には、例えば、非特許文献1が開示する「プライオリティスケジューリング」を用いることができる。
スケジューリング部134は、参照したパケットに後述する滞留フラグが付加されているか否かを確認する。スケジューリング部134は、パケットに滞留フラグが付加されている場合には、トークン蓄積部133が蓄積するトークンを消費せず、当該パケットをパケット記憶部132から取り出す。
その後、スケジューリング部134は、取り出したパケットをパケット処理実行部135に引き渡し、パケット処理実行部135によるパケット処理が完了したことを契機として、現在時刻を確認する。スケジューリング部134は、確認した現在時刻が所定時刻以降の場合に、滞留パケット管理部136に対し、「滞留パケット制御依頼通知」を行う。また、スケジューリング部134は、滞留パケット管理部136から「滞留パケット制御完了通知」を受信したことを契機として、トークン蓄積部133に所定量のトークンを追加する。なお、滞留パケット制御依頼通知や滞留パケット制御完了通知が発行される条件等については後述する。
パケット処理実行部135は、パケットを外部モジュール(例えば、通信インターフェイス11)に送信する処理を含む、パケット処理を実行する手段である。より具体的には、パケット処理実行部135は、スケジューリング部134からパケットを取得し、パケットに付加されたパケット処理内容が存在すれば、当該処理内容を実行した後、通信インターフェイス11へパケットを出力する。
滞留パケット管理部136は、滞留パケット制御依頼通知を受信した場合に、トークン蓄積部133が蓄積しているトークンの量に基づいて、パケット記憶部132が記憶するパケットの少なくとも一部を、処理が滞留している滞留パケットであると判定し、判定された滞留パケットに対応するトークンの量をトークン蓄積部133から取り除く手段である。より具体的には、滞留パケット管理部136は、パケットが滞留しているか否かに応じて、パケット記憶部132に記憶されたパケットに滞留フラグを付加したり、トークン蓄積部133のトークン量を制御、管理したりする手段である。即ち、滞留パケット管理部136は、滞留パケットに関連した制御を行い、当該滞留パケットの管理を行う。
図3に示すように、滞留パケット管理部136は、パケット記憶部132と、スケジューリング部134と、トークン蓄積部133と、に接続されている。
滞留パケット管理部136は、スケジューリング部134から上記「滞留パケット制御依頼通知」を受信したことを契機として、パケット記憶部132とトークン蓄積部133を参照する。その際、滞留パケット管理部136は、パケット記憶部132に記憶され、滞留フラグが付加されていないパケットに関し、当該パケットのサイズがトークン蓄積部133の当該パケットのクラスに対応するトークンの蓄積量以下であれば、当該パケット(1つ以上の滞留フラグが付加されていないパケット)のトークンを消費し、そのパケットに滞留フラグを付加する。その後、滞留パケット管理部136は、滞留フラグに関する制御が終了したことを示す「滞留パケット制御完了通知」をスケジューリング部134に送信する。
[動作の説明]
次に、図4を参照しつつ、滞留パケット管理部136の動作を説明する。
滞留パケット管理部136は、スケジューリング部134から滞留パケット制御依頼通知を受信する(ステップS101)。
次に、滞留パケット管理部136は、クラスを選択する(ステップS102)。
ステップS103において、滞留パケット管理部136は、選択すべきクラスの有無を確認する。滞留パケット管理部136は、選択すべきクラスが存在しない場合(例えば、全てのクラスの選択が終了した場合)、ステップS108の処理を実行する(ステップS103、Yes分岐)。選択すべきクラスが存在する場合(ステップS103、No分岐)、滞留パケット管理部136は、ステップS104以降の処理を実行する。
ステップS104において、滞留パケット管理部136は、上記選択されたクラスに対応するパケット記憶部132に記憶され、且つ、滞留フラグが付加されていないパケットと、トークン蓄積部133における上記選択されたクラスに対応するトークンの蓄積量と、を参照する。
ステップS105において、滞留パケット管理部136は、参照したパケットのサイズが参照したトークンの蓄積量よりも大きいか否か(条件1)、又は、ステップS103にて選択したクラスに対応するパケット記憶部132のパケットには全て滞留フラグが付加されているか否か(条件2)、を確認する。
滞留パケット管理部136は、上記2つの条件のうちいずれかを満たす場合(ステップS105、Yes分岐)、ステップS102に遷移し、新たなクラスを選択する。滞留パケット管理部136は、上記2つの条件のいずれも満たさない場合(ステップS105、No分岐)、ステップS106以降の処理を実行する。
ステップS106において、滞留パケット管理部136は、ステップS104にて参照したパケットは、パケット処理が滞留したパケットであると判定する。つまり、滞留パケット管理部136は、パケット記憶部132に記憶されているパケットのサイズが、トークン蓄積部133が蓄積するトークンの蓄積量以下である場合に、当該パケットを、処理が滞留している滞留パケットと判定する。
ステップS107において、滞留パケット管理部136は、ステップS104にて参照したパケットに滞留フラグを付加すると共に、予め定めた量のトークンを消費する(トークン蓄積部133の保持するトークン量を減らす)。ステップS107の処理が終了すると、滞留パケット管理部136は、ステップS104に戻り処理を継続する。
ステップS108において、滞留パケット管理部136は、スケジューリング部134に対し、滞留パケット制御完了通知を行う。
このように、滞留パケット管理部136は、パケット記憶部132に記憶されたパケットが滞留パケットであると判定された場合に、トークン蓄積部133が蓄積しているトークンを消費すると共に、滞留パケットであると判定されたパケットに対し、滞留フラグを付加することで滞留パケットと他のパケットと区別して管理する。
次に、図5を参照しつつ、スケジューリング部134の動作を説明する。
スケジューリング部134は、クラスの優先度に応じ、クラスを選択する(ステップS201)。
次に、スケジューリング部134は、選択したクラスのパケット記憶部132を選択し、先頭パケットを参照する(ステップS202)。
ステップS203において、スケジューリング部134は、参照した先頭パケットに滞留フラグが付加されているか否かを確認する。先頭パケットに滞留フラグが付加されていれば(ステップS203、Yes分岐)、スケジューリング部134は、ステップS207以降の処理を実行する。先頭パケットに滞留フラグが付加されていなければ(ステップS203、No分岐)、ステップS204以降の処理を実行する。
ステップS204において、スケジューリング部134は、トークン蓄積部133における上記選択したクラスに対応するトークンの蓄積量を参照する。
ステップS205において、スケジューリング部134は、ステップS202にて参照したパケット(滞留フラグが付加されていないパケット)のパケットサイズが、ステップS204にて参照したトークンの蓄積量よりも大きいか否かを判定する。パケットサイズがトークンの蓄積量よりも大きい場合(ステップS205、Yes分岐)には、スケジューリング部134は、ステップS209以降の処理を実行する。パケットサイズがトークンの蓄積量以下の場合(ステップS205、No分岐)には、スケジューリング部134は、ステップS206以降の処理を実行する。
ステップS206において、スケジューリング部134は、上記参照したパケットのパケットサイズに相当する量のトークンを消費する(トークン蓄積部133の保持するトークン量を減らす)。
次に、スケジューリング部134は、上記参照したパケットをパケット記憶部132から取り出す(ステップS207)。
その後、スケジューリング部134は、パケット処理実行部135に対し当該取り出したパケットを送信し、パケット処理実行部135によるパケット処理完了を待機する(ステップS208)。
その後、スケジューリング部134は、現在時刻を参照し、現在時刻が所定時刻以降か否かを判定する(ステップS209)。
現在時刻が所定時刻であれば、スケジューリング部134は、ステップS210に遷移する(ステップS209、Yes分岐)。現在時刻が所定時刻以降でなければ、スケジューリング部134は、ステップS201に遷移する(ステップS209、No分岐)。
ステップS210において、スケジューリング部134は、滞留パケット管理部136に対し、滞留パケット制御依頼通知を行い、滞留パケット管理部136からの滞留パケット制御完了通知を待機する。
ステップS211において、スケジューリング部134は、トークン蓄積部133において、ステップS202にて選択したクラスのトークンに対し、所定の量のトークンを追加すると共に、所定時刻を更新する。なお、スケジューリング部134が更新する所定時刻は、例えば、現在時間から所定の時間経過した後の時刻である。
このように、スケジューリング部134は、滞留フラグが付加されたパケットをパケット記憶部から取り出す際に、トークン蓄積部133が蓄積するトークンを消費しない(ステップS203にてYes分岐の際にはステップS206が実行されない)。
ここで、パケット処理性能が不足することによる通信品質の不足に対し、パケット処理をスケジューリングすることで解決する手法について検討する。一時的にパケット処理性能が不足した場合には、優先度が高いパケットを優先して処理し、優先度が低いパケットは遅延させ、パケット処理性能が十分なときに処理するという手法が考えられる。
帯域制御装置に搭載されたCPUによるパケット処理性能が不足した場合、低い優先度のクラスに属するパケットの処理は遅延する。その一方で、トークン蓄積部133には一定時間ごとに所定の量のトークンが追加される。そのため、パケットの処理は遅延しているにも関わらず、トークンの蓄積量がその上限に達し、上限を超えたトークンが破棄される事態が生じうる。つまり、パケットが到着しているにも関わらず、トークンが破棄されることとなり、後にパケット処理性能が十分高くなったとしても、パケットがパケット記憶部132に留まり続けることになる(パケットが滞留する)。即ち、帯域制御装置のパケット処理性能の一時的な不足により、パケットが到着しているにも関わらず、トークンが破棄されることでパケットがキュー(パケット記憶部132)に残り続けるという問題が生じる可能性がある。換言するならば、各クラスの入力スループットが規定の帯域に収まっているにも関わらず、遅延の増大やパケットの欠落が生じるという問題が発生する可能性がある。
対して、第1の実施形態に係る帯域制御装置10は、滞留パケット管理部136によるトークン制御機構を備える。具体的には、滞留パケット管理部136は、パケット記憶部132に記憶され、滞留フラグが付加されていないパケットのなかから、トークン蓄積部133が蓄積しているトークンの量が当該パケットのサイズよりも大きいことを判別することで、パケット処理性能が不足したことに起因する滞留パケットを識別する。つまり、滞留パケット管理部136は、トークン蓄積部133のトークンが十分蓄積され、パケット記憶部132に格納されたパケットが送出される状況にも関わらず、当該パケットがパケット記憶部132に留まっている状態をパケットの滞留が起きていると判定する。
さらに、滞留パケット管理部136は、当該滞留パケットに関し、トークン蓄積部133が蓄積しているトークンを消費し、当該パケットに滞留フラグを付加する。その結果、パケットが帯域制御装置10に到着しているにも関わらず、トークンが破棄されるという問題が解決される。さらに、スケジューリング部134は、滞留フラグが付加されたパケットをパケット記憶部132から取り出す際に、トークン蓄積部133が蓄積するトークンを消費しないので、トークンが二重に消費されることもない。
[第2の実施形態]
続いて、第2の実施形態について図面を参照して詳細に説明する。
第2の実施形態に係る帯域制御装置10の構成は、図2を参照して説明した第1の実施形態に係る帯域制御装置10の構成と同様であるため、その説明を省略する。
図6は、第2の実施形態に係る帯域制御装置10のパケット処理部13aの内部構成の一例を示す図である。第1の実施形態に係るパケット処理部13と第2の実施形態に係るパケット処理部13aの相違点は、滞留パケット記憶部137−1〜137−n(適宜、滞留パケット記憶部137と表記する)が追加されている点である。
滞留パケット記憶部137は、スケジューリング部134と滞留パケット管理部136とそれぞれ接続されている。第2の実施形態に係る滞留パケット記憶部137は、パケット記憶部132と同様に、クラスごとにパケットを記憶する構成を有する。
第2の実施形態に係る滞留パケット管理部136は、スケジューリング部134からの通知(滞留パケット制御依頼通知)を受信したことを契機として、パケット記憶部132とトークン蓄積部133を参照する。その後、滞留パケット管理部136は、パケット記憶部132に記憶されているパケットに対し、トークン蓄積部133の上記参照されたパケットのクラスに対応するトークンを消費して、当該パケットをトークン蓄積部133から取り出す。その後、滞留パケット管理部136は、取り出したパケットを滞留パケット記憶部137に記憶させ、スケジューリング部134に通知(滞留パケット制御完了通知)を行う。
第2の実施形態に係るスケジューリング部134は、優先度に応じてクラスを選択し、選択したクラスIDの滞留パケット記憶部137を選択する。その際、パケットが記憶されていれば、スケジューリング部134は、当該選択した滞留パケット記憶部137からパケットを取り出し、トークン蓄積部133が蓄積しているトークンを消費することなく当該パケットを滞留パケット記憶部137から取り出す。
その後、スケジューリング部134は、パケット処理実行部135へ取り出したパケットを送信し、パケット処理実行部135によるパケットの処理が完了したことを契機として、現在時刻を確認する。スケジューリング部134は、確認した現在時刻が、所定の時刻以降であれば、滞留パケット管理部136へ通知(滞留パケット制御依頼通知)を行い、滞留パケット管理部136からの通知(滞留パケット制御完了通知)があったことを契機として、トークン蓄積部133へ所定の量のトークンを追加する。
[動作の説明]
次に、図7を参照しつつ、第2の実施形態に係る滞留パケット管理部136の動作を説明する。
図7に示すステップS301〜S303は、図4に示すステップS101〜S103と同様であるため説明を省略する。
ステップS304において、滞留パケット管理部136は、ステップS302にて選択したクラスのパケット記憶部132に記憶されているパケットと、トークン蓄積部133における上記選択したクラスのトークンの蓄積量と、を参照する。
次に、滞留パケット管理部136は、参照したパケットサイズが、参照したトークンの蓄積量よりも大きいか否かを判定する(ステップS305)。パケットサイズがトークンの蓄積量よりも大きければ(ステップS305、Yes分岐)、滞留パケット管理部136は、ステップS302に戻り処理を継続する。パケットサイズがトークンの蓄積量以下であれば(ステップS305、No分岐)、滞留パケット管理部136は、ステップS306以降の処理を実行する。
ステップS306において、滞留パケット管理部136は、上記参照したパケットを処理が滞留しているパケットと判定する。
ステップS307において、滞留パケット管理部136は、当該滞留パケットをパケット記憶部132から滞留パケット記憶部137に移動させ、対応するトークンを消費する。その後、滞留パケット管理部136は、ステップS304以降の処理を継続する。
ステップS308において、滞留パケット管理部136は、スケジューリング部134に対し、滞留パケット制御完了通知を送信する。
次に、図8を参照しつつ、第2の実施形態に係るスケジューリング部134の動作を説明する。
ステップS401において、スケジューリング部134は、クラスの優先度に応じてクラスを選択する。
ステップS402において、スケジューリング部134は、選択したクラスの滞留パケット記憶部137を選択する。
ステップS403において、スケジューリング部134は、選択した滞留パケット記憶部137にパケットが存在するか否かを判定する。滞留パケット記憶部137にパケットが存在すれば(ステップS403、Yes分岐)、スケジューリング部134は、ステップS404以降の処理を実行する。滞留パケット記憶部137にパケットが存在しなければ(ステップS403、No分岐)、スケジューリング部134は、ステップS409以降の処理を実行する。
ステップS404において、スケジューリング部134は、滞留パケット記憶部137からパケットを取り出す。
ステップS405において、スケジューリング部134は、パケット処理実行部135へ取り出したパケットを送信し、パケット処理実行部135によるパケットの処理完了を待機する。その後、スケジューリング部134は、現在時刻を参照し、その時刻が所定時刻以降であれば、ステップS407以降の処理を実行する(ステップS406、Yes分岐)。スケジューリング部134は、現在時刻が所定時刻以降でなければ、ステップS401に戻り処理を継続する(ステップS406、No分岐)。
スケジューリング部134は、滞留パケット管理部136に対し、滞留パケット制御依頼通知を行い、滞留パケット管理部136からの滞留パケット制御完了通知の受信を待機する(ステップS407)。その後、スケジューリング部134は、トークン蓄積部133に所定の量のトークンを追加すると共に、上記所定時刻を更新する(ステップS408)。なお、更新する所定時刻は、例えば、現在時刻から所定の時間経過後の時刻である。
ステップS408の処理が終了すると、スケジューリング部134は、ステップS401に戻り処理を継続する。
ステップS409において、スケジューリング部134は、選択したクラスのパケット記憶部132を選択し、先頭パケットを参照する。
ステップS410において、スケジューリング部134は、トークン蓄積部133における、上記選択したクラスに対応するトークンの蓄積量を参照する。
ステップS411において、スケジューリング部134は、参照したパケットのサイズが、参照したトークンの蓄積量より大きいか否かを判定する。パケットサイズがトークンの蓄積量よりも大きければ(ステップS411、Yes分岐)、スケジューリング部134は、ステップS406以降の処理を実行する。パケットサイズがトークンの蓄積量以下であれば(ステップS411、No分岐)、スケジューリング部134は、ステップS412以降の処理を実行する。
ステップS412において、スケジューリング部134は、パケットサイズに相当する量のトークンを消費する。
その後、スケジューリング部134は、当該パケットをパケット記憶部132から取り出す(ステップS413)。ステップS413の処理が終了すると、スケジューリング部134は、ステップS405以降の処理を実行する。
以上のように、第2の実施形態では、滞留パケット管理部136は、パケット記憶部132に記憶されたパケットの中から、トークン蓄積部133が蓄積しているトークンの量が当該パケットのサイズより大きいことを判別することで、パケット処理性能が不足したことにより滞留したパケットを識別し、トークン蓄積部133が蓄積しているトークンを消費すると共に、当該パケットを滞留パケット記憶部137へ移動する。その結果、パケットが到着しているのに関わらずトークンが破棄される問題が解決される。また、スケジューリング部134が、パケットを滞留パケット記憶部137から取り出す際に、トークン蓄積部133が蓄積しているトークンを消費しないことで、トークンが二重に消費されることはない。
さらに加えて、第2の実施形態では、パケットを記憶する機能を持つ手段として、パケット記憶部132に加えて滞留パケット記憶部137を備える。パケット記憶部132の使用量上限を定め、使用量上限を超える場合にパケットを捨てることで入力トラフィックのレートが制限されるような場合、滞留パケット記憶部137に処理が滞留したパケットを移動させることによって、処理が滞留したことによってパケット記憶部132にパケットが溜まり、当該パケット記憶部132の使用量上限をパケットの記憶量が超えることを防ぐことができる。
[第3の実施形態]
続いて、第3の実施形態について図面を参照して詳細に説明する。
第3の実施形態に係る帯域制御装置10の構成は、図2を参照して説明した第1の実施形態に係る帯域制御装置10の構成と同様であるため、その説明を省略する。
図9は、第3の実施形態に係る帯域制御装置10のパケット処理部13bの内部構成の一例を示す図である。
第1の実施形態に係るパケット処理部13と第3の実施形態に係るパケット処理部13bの相違点は、滞留トークン蓄積部138が追加されている点である。滞留トークン蓄積部138は、スケジューリング部134と滞留パケット管理部とそれぞれ接続されている。
滞留トークン蓄積部138は、トークン蓄積部133と同様に、クラスごとにトークンを蓄積する。以降の説明では、滞留トークン蓄積部138に蓄積されるトークンを、滞留トークンと表記する。
第3の実施形態に係る滞留パケット管理部136は、スケジューリング部134から通知(滞留パケット制御依頼通知)を受信したことを契機として、パケット記憶部132、トークン蓄積部133及び滞留トークン蓄積部138を参照する。その上で、滞留パケット管理部136は、パケット記憶部132に記憶されているパケットの先頭から滞留トークン蓄積部138に蓄積されている滞留トークンの量に相当するパケットを除いた後の先頭パケットのサイズについて、当該先頭パケットのサイズがトークン蓄積部133の当該パケットに対応するクラスのトークンの蓄積量以下であれば、当該先頭パケットのパケットサイズに相当するトークンを、トークン蓄積部133から滞留トークン蓄積部138へ移動させる。その後、滞留パケット管理部136は、滞留パケット制御完了通知をスケジューリング部134に通知する。
例えば、パケット記憶部132に5個のパケットが記憶され、対応する滞留トークン蓄積部138には2個のパケットに相当するトークンが蓄積されていれば、滞留パケット管理部136は、パケット記憶部132に記憶された先頭から3個目のパケットのサイズと、トークン蓄積部133のトークン蓄積量と、を比較する。比較の結果、当該パケットのサイズが、トークン蓄積部133のトークン蓄積量以下であれば、当該パケット(先頭から3個目のパケット)のサイズに相当するトークンを、トークン蓄積部133から滞留トークン蓄積部138に移動する。
第3の実施形態に係るスケジューリング部134は、優先度に応じてクラスを選択し、当該クラスに対応する滞留トークンが滞留トークン蓄積部138に蓄積されていれば、当該滞留トークンを消費して当該クラスに対応するパケット記憶部132からパケットを取り出す。さらに、スケジューリング部134は、パケット処理実行部135へ取り出したパケットを送信し、パケット処理実行部135によるパケット処理が完了したことを契機として、現在時刻を確認する。現在時刻が所定時刻以降であれば、スケジューリング部134は、滞留パケット管理部136へ通知(滞留パケット制御依頼通知)を行い、滞留パケット管理部136からの通知(滞留パケット制御完了通知)を受信したことを契機として、トークン蓄積部133へ所定の量のトークンを追加する。なお、滞留トークンの量がパケットのサイズより小さいときには、スケジューリング部134は、当該クラスに対応するトークン蓄積部133が蓄積しているトークンも消費する。
[動作の説明]
次に、図10を参照しつつ、第3の実施形態に係る滞留パケット管理部136の動作を説明する。
図10に示すステップS501〜S503は、図4に示すステップS101〜S103と同様であるため説明を省略する。
ステップS504において、滞留パケット管理部136は、選択したクラスのパケット記憶部132に記憶されているパケットの先頭から滞留トークン蓄積部138に蓄積されている滞留トークンの量に相当するパケットを除いた後の先頭パケットと、トークン蓄積部133における選択したクラスのトークンの蓄積量を参照する。
ステップS505において、滞留パケット管理部136は、参照したパケットのサイズが参照したトークンの蓄積量よりも大きいか否かを判定する。参照したパケットのサイズがトークンの蓄積量よりも大きければ(ステップS505、Yes分岐)、滞留パケット管理部136は、ステップS502に戻り処理を継続する。参照したパケットのサイズがトークンの蓄積量以下であれば(ステップS505、No分岐)、滞留パケット管理部136は、ステップS506以降の処理を実行する。
ステップS506において、滞留パケット管理部136は、ステップS504にて参照したパケットを、処理が滞留したパケットと判定する。
ステップS507において、滞留パケット管理部136は、ステップS504にて参照したパケットのサイズに相当する量のトークンを、トークン蓄積部133から滞留トークン蓄積部138に移動させる。滞留パケット管理部136は、ステップS507の処理が終了すると、ステップS504に戻り処理を継続する。
ステップS508において、滞留パケット管理部136は、滞留パケット制御完了通知をスケジューリング部134に対して行う。
次に、図11を参照しつつ、第2の実施形態に係るスケジューリング部134の動作を説明する。
ステップS601において、スケジューリング部134は、クラスの優先度に応じてクラスを選択する。
ステップS602において、スケジューリング部134は、選択したクラスのパケット記憶部132を選択し、先頭パケットを参照する。
ステップS603において、スケジューリング部134は、滞留トークン蓄積部138における上記選択したクラスに対応する滞留トークンの蓄積量を参照する。
ステップS604において、スケジューリング部134は、参照したパケットのサイズが、参照した滞留トークンの蓄積量よりも大きいか否かを判定する。パケットサイズが滞留トークンの蓄積量よりも大きい場合には(ステップS604、Yes分岐)、スケジューリング部134は、ステップS611以降の処理を実行する。パケットサイズが滞留トークンの蓄積量以下の場合には(ステップS604、No分岐)、スケジューリング部134は、ステップS605以降の処理を実行する。
ステップS605において、スケジューリング部134は、参照したパケットのパケットサイズに相当する量の滞留トークンを消費する。
ステップS606において、スケジューリング部134は、参照したパケットをパケット記憶部132から取り出す。
ステップS607において、スケジューリング部134は、パケット処理実行部135へ取り出したパケットを送信し、パケット処理実行部135によるパケット処理の完了を待機する。
その後、スケジューリング部134は、現在時刻を参照し、現在時刻が所定時刻以降であれば、ステップS609以降の処理を実行する(ステップS608、Yes分岐)。スケジューリング部134は、現在時刻が所定時刻以降でなければステップS601に戻り処理を継続する(ステップS608、No分岐)。
ステップS609において、スケジューリング部134は、滞留パケット管理部136に対し、滞留パケット制御依頼通知を行い、滞留パケット管理部136からの通知(滞留パケット制御完了通知)の受信を待機する。
ステップS610において、スケジューリング部134は、トークン蓄積部133へ所定の量のトークンを追加し、所定時刻を更新する。なお、更新する所定時刻は、例えば現在時間の所定の時間後である。ステップS610の処理が終了すると、スケジューリング部134は、ステップS601に戻り処理を継続する。
ステップS611において、スケジューリング部134は、トークン蓄積部133における選択されたクラスに対応するトークンの蓄積量を参照する。参照したパケットのサイズが、参照したトークンの蓄積量よりも大きい場合には、スケジューリング部134は、ステップS601に戻り処理を継続する(ステップS612、Yes分岐)。参照したパケットのサイズが、参照したトークンの蓄積量以下の場合には、スケジューリング部134は、ステップS613の処理を実行する。
ステップS613において、スケジューリング部134は、参照したパケットのサイズに相当する量のトークンを消費する。ステップS613の処理が終了すると、スケジューリング部134は、ステップS606以降の処理を実行する。
以上のように、第3の実施形態に係る滞留パケット管理部136は、パケット記憶部132に記憶されたパケットから、パケット処理性能が不足したことによって滞留したパケットを識別し、当該パケットに相当する量のトークンをトークン蓄積部133から滞留トークン蓄積部138に移動させる。その結果、パケットが到着しているにも関わらずトークンが破棄される問題が解決される。
また、スケジューリング部134が、パケットをパケット記憶部132から取り出す際、当該パケットのクラスに対応する滞留トークンが滞留トークン蓄積部138に蓄積されていれば、その滞留トークンを優先して消費することで、処理が滞留したパケットを移動させたトークンによりパケットを処理することができる。
なお、第1〜第3の実施形態にて説明した帯域制御装置、パケット処理部等は例示であって、その構成を限定する趣旨ではない。例えば、パケット処理部13の機能の一部が、パケット識別部12等の他のモジュールに組み込まれていてもよい。
また、帯域制御装置10のパケット処理部13等の各部が行う処理は、帯域制御装置10に搭載されたコンピュータに、そのハードウェアを用いて、上述した各処理を実行させるコンピュータプログラムにより実現できる。つまり、パケット処理部13等が行う機能を何らかのハードウェア、及び/又は、ソフトウェアで実行する手段があればよい。
さらに、コンピュータの記憶部に、上述したコンピュータプログラムをインストールすることにより、コンピュータを帯域制御装置として機能させることができる。さらにまた、上述したコンピュータプログラムをコンピュータに実行させることにより、コンピュータにより帯域制御方法を実行することができる。また、そのプログラムは、ネットワークを介してダウンロードするか、或いは、プログラムを記憶した記憶媒体を用いて、更新することができる。
また、上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、ネットワークにおいてサービスの使用帯域を制御する帯域制御装置や、帯域制御装置をコンピュータに実現するためのプログラム等に好適に適用可能である。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
上述の第1の視点に係る帯域制御装置のとおりである。
[付記2]
前記滞留パケット管理部は、
前記パケット記憶部に記憶されているパケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下である場合に、前記パケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下であるパケットを前記滞留パケットと判定する、付記1の帯域制御装置。
[付記3]
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットが前記滞留パケットであると判定された場合に、前記トークン蓄積部が蓄積しているトークンを消費すると共に、
前記滞留パケットであると判定されたパケットに対し、滞留フラグを付加することで前記滞留パケットと他のパケットと区別し、
前記スケジューリング部は、
前記滞留フラグが付加されたパケットを前記パケット記憶部から取り出す際に、前記トークン蓄積部が蓄積するトークンを消費しない、付記2の帯域制御装置。
[付記4]
前記パケット処理部は、
前記滞留パケットを記憶する、少なくとも1以上の滞留パケット記憶部をさらに含み、
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットが前記滞留パケットであると判定された場合に、前記トークン蓄積部が蓄積しているトークンを消費すると共に、
前記滞留パケットと判定されたパケットを、前記パケット記憶部から前記滞留パケット記憶部へ移動させることで、前記滞留パケットを他のパケットと区別し、
前記スケジューリング部は、
前記滞留パケット記憶部からパケットを取り出す際に、前記トークン蓄積部が蓄積するトークンを消費しない、付記2の帯域制御装置。
[付記5]
前記パケット処理部は、
トークンを蓄積する、滞留トークン蓄積部をさらに含み、
前記滞留パケット管理部は、
前記パケット記憶部に記憶されたパケットであって、前記滞留トークン蓄積部に蓄積されたトークンの蓄積量に相当する量のパケットを除いた後の前記パケット記憶部に記憶された先頭パケットのサイズが、前記トークン蓄積部が蓄積するトークンの蓄積量以下である場合に、前記先頭パケットを前記滞留パケットと判定し、前記先頭パケットのサイズに相当する量のトークンを前記トークン蓄積部から前記滞留トークン蓄積部へ移動させ、
前記スケジューリング部は、
前記パケット記憶部からパケットを取り出す際に、前記滞留トークン蓄積部が蓄積しているトークンを消費する、付記1の帯域制御装置。
[付記6]
前記滞留パケット管理部は、
前記滞留パケット制御依頼通知を受信したことを契機として、前記滞留パケットに対する制御を行い、前記滞留パケットに対する制御が完了した後に、滞留パケット制御完了通知を前記スケジューリング部に送信する、付記1乃至5のいずれか一に記載の帯域制御装置。
[付記7]
前記スケジューリング部は、
前記滞留パケット制御完了通知を受信したことを契機として、前記トークン蓄積部に所定の量のトークンを追加する、付記6の帯域制御装置。
[付記8]
上述の第2の視点に係る帯域制御方法のとおりである。
[付記9]
上述の第3の視点に係る帯域制御方法のとおりである。
[付記10]
上述の第4の視点に係るプログラムのとおりである。
なお、付記8〜10の形態は、付記1の形態と同様に、付記2の形態〜付記7の形態に展開することが可能である。
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。