(57)【要約】【課題】バッファにおけるデータの廃棄を抑制する。【解決手段】情報処理装置は、複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファと、単位時間当たりにバッファへ流入する複数のフローのデータ量の総和である入力レートを監視し、入力レートの監視結果に応じて、複数のフローのうち少なくとも１つのフローについてバッファへのデータブロックの流入を抑制する制御を行う監視部と、を備える。【選択図】図２
2019041289.tif 000002
【特許請求の範囲】
【請求項１】
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファと、
単位時間当たりに前記バッファへ流入する前記複数のフローのデータ量の総和である入力レートを監視し、前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う監視部と、
を備える情報処理装置。
【請求項２】
前記監視部は、前記単位時間当たりに前記バッファから読み出し可能なデータ量である読出し帯域と前記入力レートと前記入力レートの増減傾向とに応じて、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
請求項１に記載の情報処理装置。
【請求項３】
前記監視部は、前記入力レートが、前記読出し帯域以下の第１の閾値より大きく、且つ、前記入力レートが増加傾向である場合に、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
請求項２に記載の情報処理装置。
【請求項４】
前記監視部は、前記入力レートが、前記第１の閾値よりも大きく且つ前記読出し帯域以下である第２の閾値以上であり、且つ、前記入力レートが増加傾向である場合に、前記複数のフローすべてについて前記バッファへのデータブロックの流入を抑制する制御を行う、
請求項３に記載の情報処理装置。
【請求項５】
前記監視部は、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが維持傾向である場合に、前記複数のフローのうちバーストトラフィックと判定される第１の条件を満たすフローについて前記バッファへのデータブロックの流入を停止し、前記複数のフローのうち前記第１の条件を満たしていないフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
請求項２から４のいずれか一項に記載の情報処理装置。
【請求項６】
前記監視部は、前記バッファ内に存在するデータ量を監視し、前記読出し帯域と、前記入力レートと、前記バッファ内に存在するデータ量と、前記入力レートの増減傾向と、に応じて、前記バッファへのデータブロックの流入が抑制されている前記少なくとも１つのフローについて、前記バッファへのデータブロックの流入を促進する制御を行う、
請求項２から５のいずれか一項に記載の情報処理装置。
【請求項７】
前記第１の条件は、第１の時間内のトークンバケットに蓄積可能なトークン量の上限値を超過したトークン量、第２の時間内に設定帯域を超過して廃棄されたデータ量、第３の時間内にバーストが発生した回数、及び、トークンバケットの前記上限値に対する蓄積されているトークンの量、の少なくとも１つに基づく、
請求項５に記載の情報処理装置。
【請求項８】
前記読出し帯域に基づいて決定される入力レートの閾値に応じた周期で前記入力レートの閾値に応じた量のトークンが追加されるトークンバケットを少なくとも１つ用いて前記入力レートが前記入力レートの閾値に達しているか否かを監視する入力レート監視部と、
前記読出し帯域に応じた周期で前記バッファに流入したデータ量と前記読出し帯域に応
じた周期で前記バッファから読み出されるデータ量との差分に基づいて、前記入力レートの増減傾向を推測する入力レート増減監視部と、
をさらに備える請求項２から７のいずれか一項に記載の情報処理装置。
【請求項９】
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファを備える情報処理装置が、
単位時間当たりに前記バッファへ流入する前記複数のフローのデータ量の総和である入力レートを監視し、
前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
情報処理方法。
【請求項１０】
コンピュータに、
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファへ単位時間当たりに流入する前記複数のフローのデータ量の総和である入力レートを監視させ、
前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行わせる、
ための情報処理プログラム。
【請求項１１】
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサと、
前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファと、
単位時間当たりに前記バッファへ流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、前記複数のポリサのそれぞれについて備えられる複数の制御部と、
を備える情報処理装置。
【請求項１２】
前記複数の制御部のそれぞれは、前記入力レートと、前記入力レートの増減傾向と、前記単位時間当たりに前記バッファから読み出し可能なデータ量である読出し帯域と、前記バーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、
請求項１１に記載の情報処理装置。
【請求項１３】
前記複数の制御部のそれぞれは、前記入力レートが、前記読出し帯域以下の第１の閾値より大きい場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
請求項１２に記載の情報処理装置。
【請求項１４】
前記複数の制御部のそれぞれは、前記入力レートが、前記第１の閾値よりも大きく且つ前記読出し帯域以下である第２の閾値以上であり、且つ、前記入力レートが増加傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
請求項１３に記載の情報処理装置。
【請求項１５】
前記複数の制御部のそれぞれは、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが維持傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
請求項１２から１４のいずれか一項に記載の情報処理装置。
【請求項１６】
前記複数の制御部のそれぞれは、前記読出し帯域と、前記入力レートと、前記バッファ内に存在するデータ量と、前記入力レートの増減傾向と、に応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで増加させる、
請求項１２から１５のいずれか一項に記載の情報処理装置。
【請求項１７】
前記複数の制御部のそれぞれは、前記トークンバケット内に蓄積されているトークン量を監視し、前記トークンバケットに蓄積されているトークン量に基づいて、バーストが発生していることを判定する、
請求項１１から１６のいずれか一項に記載の情報処理装置。
【請求項１８】
前記複数の制御部のそれぞれは、所定時間内における、前記トークンバケットに所定の周期で追加されるトークン量のうち前記トークンバケットの前記蓄積可能なトークンの最大値を超過したトークン量、前記所定時間内における、前記トークンバケットにトークンが蓄積されていないことによって廃棄されたデータ量又はデータが廃棄された回数、及び、前記トークンバケットの前記蓄積可能なトークンの最大値に対する蓄積されているトークン量の割合、のうち少なくとも１つに基づいて、バーストが発生していることを判定する、
請求項１７に記載の情報処理装置。
【請求項１９】
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサのそれぞれについて、前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファへ単位時間当たりに流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、
情報処理方法。
【請求項２０】
コンピュータに、
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサのそれぞれについて、前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファへ単位時間当たりに流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御させる、
ための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び、情報処理プログラムに関する。
【背景技術】
【０００２】
スイッチ、ルータ等のネットワーク装置では、例えば、装置に入力されたフレームは、一旦バッファに格納され、バッファに格納された順で読み出される。これは、例えば、ネットワーク装置の処理能力に上限があったり、ネットワークの帯域に制限があったりするためである。例えば、バッファのサイズはネットワーク装置の処理能力や帯域に応じて予め決められている。バッファに格納可能なデータ量を超えて入力されるフレームは、例えば、ネットワーク装置の処理能力を超えているため、廃棄される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１７３７２６号公報
【特許文献２】特開２００４−１０４１９２号公報
【特許文献３】特開２０１０−０６８０５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
突発的に大量のデータが流れることは、例えば、バースト、と称される。バーストが発生した場合には、流入する大量のフレームによって、バッファが満杯になり、フレームの廃棄が発生する可能性が高い。また、バーストが発生しているフローによって、バッファを共有する他のフローのフレームが廃棄される可能性もあり、他のフローに影響が及ぼされることもある。フローとは、例えば、共通のフロー識別情報を有する複数のフレームの流れのことである。
【０００５】
１つの側面では、本発明は、例えばバーストによる、バッファにおけるデータの廃棄を抑制可能な情報処理装置、情報処理方法、及び、情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の態様の一つは、複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファと、監視部とを備える情報処理装置である。監視部は、単位時間当たりにバッファへ流入する複数のフローのデータ量の総和である入力レートを監視し、入力レートの監視結果に応じて、複数のフローのうち少なくとも１つのフローについてバッファへのデータブロックの流入を抑制する制御を行う。
【０００７】
本発明の他の態様の一つは、複数のポリサと、複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファと、複数のポリサそれぞれについて備えられる制御部とを備える情報処理装置である。各ポリサは、蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う。各制御部は、単位時間当たりにバッファへ流入するデータ量である入力レートとバーストの発生状況とに応じて、トークンバケットの蓄積可能なトークンの最大値を制御する。
【発明の効果】
【０００８】
ネットワーク装置のバッファにおけるデータの廃棄を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１Ａ】図１Ａは、バッファへの入力レートと、バッファ内のフレームの蓄積量と、の関係の一例を示す図である。
【図１Ｂ】図１Ｂは、図１Ａに示されるバッファへ入力されるフローのうちの１つのフローのポリサへの入力レートと、当該フローのトークンバケット内のトークン蓄積量と、バッファ内のフレームの蓄積量と、の関係の一例を示す図である。
【図２】図２は、第１実施形態に係るスイッチの機能構成の一例を示す図である。
【図３】図３は、ポリサのトークンバケット内のトークン蓄積量の変化の一例を示す図である。
【図４】図４は、それぞれ、バーストサイズの制御対象となるフローのトラフィックの一例を示す図である。
【図５】図５は、それぞれ、バーストサイズの制御対象となるフローのトラフィックの一例を示す図である。
【図６】図６は、それぞれ、バーストサイズの制御対象となるフローのトラフィックの一例を示す図である。
【図７】図７は、第１実施形態に係る入力レート監視部の入力レートの監視の一例を示す図である。
【図８】図８は、第１実施形態に係る入力レート増減監視部の入力レートの傾きの監視の一例を示す図である。
【図９】図９は、第１実施形態に係るバッファ監視部のバーストサイズの制御内容の一例を示す表である。
【図１０】図１０は、トークン監視部のフレーム受信時の処理のフローチャートの一例である。
【図１１】図１１は、トークン監視部の制御対象フローの判定処理のフローチャートの一例である。
【図１２】図１２は、入力レート増減監視部の処理のフローチャートの一例である。
【図１３Ａ】図１３Ａは、バッファ監視部の処理のフローチャートの一例である。
【図１３Ｂ】図１３Ｂは、バッファ監視部の処理のフローチャートの一例である。
【図１３Ｃ】図１３Ｃは、バッファ監視部の処理のフローチャートの一例である。
【図１３Ｄ】図１３Ｄは、バッファ監視部の処理のフローチャートの一例である。
【図１４】図１４は、具体例におけるフローＡ、フローＢ、フローＣのそれぞれのレートと、合計のレートとのグラフの一例である。
【図１５】図１５は、バッファに対して方法１による制御が行われた場合の、フローＡ、フローＢ、フローＣのそれぞれの入力レートと、合計の入力レートとのグラフの一例である。
【図１６】図１６は、バッファに対して第１実施形態に係るバーストサイズの制御が行われた場合の、フローＡ、フローＢ、フローＣのそれぞれの入力レートと、合計の入力レートとのグラフの一例である。
【図１７】図１７は、第１実施形態によるバーストサイズの制御と方法１によるバーストサイズの制御とのバッファの使用量のグラフの一例である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１１】
＜第１実施形態＞
図１Ａは、バッファへの入力レートと、バッファ内のフレームの蓄積量と、の関係の一例を示す図である。図１Ａの上部には、バッファのフレームの蓄積量の変遷の一例を示す図が示されている。図１Ａの下部には、バッファへの入力レートの変化の一例を示すグラフが示されている。
【００１２】
バッファでは、例えば、先入れ先出し法でフレームが出し入れされる。図１Ａに示されるバッファには、複数のフローのフレームが入力されることとする。したがって、バッファへの入力レートは、複数のフローのフレームを合計した入力レートである。また、単位時間当たりにバッファへ入力されるトラフィック量は、内部バスの処理帯域を上限とする。フレームは、「データブロック」の一例である。「データブロック」の他の例には、パケット、データグラム等がある。
【００１３】
なお、第１実施形態において、単位時間当たりのトラフィック量は、単位としてｂｐｓ（bits per second）で表される物理量であることとする。ただし、単位時間当たりのト
ラフィック量は、これに限定されない。また、単位時間当たりにバッファへ入力されるトラフィック量は、単に、入力レートとも称される。また、バッファからフレームが読み出される帯域は、バッファの読出し帯域、又は、バッファの処理能力、とも称される。
【００１４】
図１Ａの（Ａ）に示される、バッファへの入力レートがバッファの読出し帯域を下回っている間は、バッファに入力されたフレームはすぐにバッファから出力されるので、バッファに蓄積されるフレームの量は０である。図１Ａの（Ｂ）の時点で、トラフィックが増え、バッファへの入力レートがバッファの読出し帯域を超え、バッファ内にフレームが蓄積され始める。図１Ａの（Ｂ）の時点以降、バッファへの入力レートがバッファの読出し帯域を超える状態が続き、バッファに蓄積されるフレームが増えて、図１Ａの（Ｄ）の時点でバッファが満杯となる。バッファが満杯になると、以降、バッファに到着するフレームは廃棄される。バッファが満杯になり、到着フレームが廃棄されることを、バッファ溢れ、とも称する。
【００１５】
バッファにおけるフレームの廃棄を抑制する方法の一つとして、例えば、バッファに蓄積されているフレーム量が閾値に達すると、トラフィック量の多いフローのポリサのバーストサイズを低減させる方法がある。当該方法を、以下、方法１と称する。
【００１６】
ポリサは、例えば、バッファの前段で行われる、トラフィックの流入量を制御するポリシングを行う機能である。ポリサのバーストサイズとは、ポリサが許容可能なトラフィックの最大量のことである。
【００１７】
ポリシングでは、例えば、トークンバケット方式で、トークンバケットに蓄積されているトークンの分だけフレームを出力することができる。ポリシングにおいて、トークンバケットにトークンが蓄積されていない場合には、例えば、フレームは廃棄される。
【００１８】
トークンバケットには、所定の周期で所定量のトークンが追加される。トークンバケットには、蓄積可能なトークン量の上限値が設定されており、上限値を超えてトークンを保持することはできない。以下、トークンバケットに蓄積可能なトークン量の上限値を、トークンの上限値、と称する。
【００１９】
トークンバケットが満杯の場合には、ポリサはトークンの上限値の分だけトラフィックを出力することができる。したがって、ポリサのバーストサイズは、トークンの上限値と同義である。ポリサのバーストサイズ、トークンの上限値は、それぞれ、「蓄積可能なトークンの最大値」の一例である。
【００２０】
例えば、図１Ａに示される例において、方法１が実施される場合、例えば、図１Ａの（Ｃ）の時点で、バッファのフレームの蓄積量が閾値に達し、トラフィック量の多いフローのポリサのバーストサイズが低減される。トラフィック量の多いフローのポリサのバーストサイズが低減されることによって、ポリサを通過するトラフィック量が小さくなり、バ
ッファに流入するトラフィック量を低減させることができる。その結果、図１Ａに示されるようにバッファへの入力レートも低下していく。
【００２１】
図１Ｂは、図１Ａに示されるバッファへ入力されるフローのうちの１つのフローのポリサへの入力レートと、当該フローのトークンバケット内のトークン蓄積量と、バッファ内のフレームの蓄積量と、の関係の一例を示す図である。図１Ｂの上部には、図１Ａと同一のバッファのフレームの蓄積量の変遷の一例を示す図が示されている。したがって、図１Ｂ中の（Ａ）〜（Ｄ）の時点は、それぞれ、図１Ａに示される（Ａ）〜（Ｄ）の時点と同一である。
【００２２】
図１Ｂの中央部には、バッファへ入力されるフローであって、バーストトラフィックを含むフローのポリサへの入力レートの変化の一例を示すグラフが示されている。バーストトラフィックを含むフローを、以下、バーストフローと称する。図１Ｂの下部には、バーストフローのポリサのトークン蓄積量の変化の一例を示すグラフが示されている。
【００２３】
バーストフローの入力レートがポリサの設定帯域以下である間は、ポリサのトークン蓄積量はトークンの上限値付近を推移する。図１Ｂの（Ｂ）の時点で、バーストトラフィックが発生し、バーストフローの入力レートがポリサの設定帯域を超え、ポリサのトークンが消費されはじめ、ポリサのトークン蓄積量が減少する。一方、バッファでは、フレームの蓄積が始まり、フレームの蓄積量が増加する。図１Ｂの（Ｃ）の時点では、バーストフローのポリサのトークン蓄積量は０である。
【００２４】
また、ポリサのトークン蓄積量が０になった以降に、ポリサの設定帯域を超えて入力されるバーストトラフィックは、設定帯域の超過分がポリサにて廃棄される。
【００２５】
例えば、図１Ｂに示される例において、方法１が実施される場合には、例えば、図１Ｂの（Ｃ）の時点で、バッファ内のフレームの蓄積量が閾値に達し、バーストフローのポリサのバーストサイズが低減される。しかしながら、図１Ｂの（Ｃ）の時点では、バーストトラフィックによってバーストフローのポリサのトークン蓄積量は０で推移している。そのため、図１Ｂの（Ｃ）の時点でバーストフローのバーストサイズ（トークンの上限値）が低減されたとしても、バーストを抑制する効果が薄くなる可能性が高い。
【００２６】
また、図１Ｂの（Ｃ）よりも前に、ポリサを通過しているバーストフローのバーストトラフィックが存在しており、当該ポリサを通過したバーストトラフィックがバッファが満杯になることの一因にもなっている。
【００２７】
したがって、方法１のように、バッファ内のフレームの蓄積量が閾値に達することを検出してから、ポリサのバーストサイズを低減させるのでは手遅れであり、バッファ溢れが発生する可能性が高い。
【００２８】
第１実施形態では、ポリサのバーストサイズの制御タイミングを方法１よりも早め、例えば、バッファ内のフレームの蓄積が開始されるよりも前にポリサのバーストサイズが制御されるようにする。なお、第１実施形態において、蓄積とは、バッファの処理能力を超えてバッファにトラフィックが入力する状態が所定時間継続し、バッファ内にデータが存在する状態が継続することを示す。
【００２９】
例えば、図１Ａに示される例では、（Ｂ）の時点ではバッファの蓄積が開始されている。したがって、第１実施形態では、例えば、図１Ａ中の（Ｂ）より前の入力レートの変化の特徴を検出することで、バッファの蓄積の開始を予測する。例えば、図１Ａ中の（Ｂ）のバッファの蓄積が開始される前の入力レートの変化の特徴として、（特徴１）バッファ
の読出し帯域に対する入力レートの割合が高いこと、（特徴２）入力レートが増加傾向であること、の２点があげられる。
【００３０】
したがって、第１実施形態では、バッファの入力レートを監視し、入力レートが上記特徴１及び特徴２を満たすことを検出したことを契機として、バーストトラフィック量の多いフローのポリサのバーストサイズを低減させる。
【００３１】
これによって、バッファ内のフレームの蓄積が始まる前に、バーストトラフィック量の多いフローのポリサのバーストサイズを低減させることができる。これによって、より早い段階でバッファの入力レートの上昇を抑えることができ、バッファ溢れを抑制することができる。ポリサのバーストサイズを低減させることは、「バッファへのデータブロックの流入を抑制する制御」の一例である。
【００３２】
フローは、例えば、共通のフロー識別情報を有する複数のフレームの流れである。フロー識別情報として、例えば、送信元ＩＰ（Internet Protocol）アドレス、宛先ＩＰアド
レス、宛先ポート番号、送信元ポート番号のうちのいずれか又は組合せが用いられる。第１実施形態では、フロー識別情報に用いられる情報は、特定のものに限定されない。
【００３３】
図２は、第１実施形態に係るスイッチ１の機能構成の一例を示す図である。スイッチ１は、例えば、レイヤ２スイッチである。スイッチ１は、シャーシ型のスイッチであっても、ピザボックス型のスイッチであってもよい。
【００３４】
スイッチ１がシャーシ型である場合には、スイッチ１は、例えば、複数のポートを備える複数のインタフェースカードと、複数のインタフェースカード間を中継するスイッチカードと、制御を行う制御カードとを備える（図示略）。スイッチ１がピザボックス型である場合には、スイッチ１は、複数のポートと、ポート間を中継するスイッチ部と、制御を行う制御部とを備える（図示略）。
【００３５】
スイッチ１は、「情報処理装置」の一例である。ただし、「情報処理装置」は、レイヤ２スイッチに限られず、レイヤ３スイッチ、ルータ等であってもよい。
【００３６】
スイッチ１は、機能構成要素として、入力ＱｏＳ（Quality of Service）部２、出力ＱｏＳ部３を備える。入力ＱｏＳ部２は、スイッチ１の入力側のＱｏＳの処理を行う。出力ＱｏＳ部３は、スイッチ１の出力側のＱｏＳの処理を行う。
【００３７】
入力ＱｏＳ部２、出力ＱｏＳ部３は、それぞれ、例えば、ＦＰＧＡ（Field-Programmable Gate Array）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ(Programmable Logic Device)である。または、入力ＱｏＳ部２、出力ＱｏＳ部３は、それぞ
れ、例えば、ネットワークプロセッサが所定のプログラムを実行することによって達成される機能であってもよい。
【００３８】
例えば、スイッチ１がシャーシ型のスイッチである場合には、１つのインタフェースカードにつき１組の入力ＱｏＳ部２と出力ＱｏＳ部３とが搭載される。例えば、スイッチ１がピザボックス型のスイッチである場合には、入力ＱｏＳ部２はポートの入力側に、出力ＱｏＳ部３はポートの出力側に備えられる。
【００３９】
入力ＱｏＳ部２は、インタフェースカード又はスイッチ１に流入するフローと同じ数のポリサ２０を含む。ただし、便宜上、図２では、ポリサ２０は１つのみ示されている。ポリサ２０は、対象のフローについて、ポリシングを行う。ポリサ２０から出力されたフレームは、スイッチ１内部のスイッチングカード又はスイッチング部によって、フレームの
出力ポート側に備えられるシェーパ３０に入力される。
【００４０】
ポリサ２０におけるポリシングでは、例えば、以下の処理が行われる。例えば、トークンバケット（図示せず）にトークンがある場合には到着したフレームは出力される。例えば、トークンバケットにトークンが無い場合には到着フレームは廃棄する処理が行われる。また、ポリシングでは、出力したフレームに相当する分のトークンがトークンバケットから除かれる。また、ポリシングでは、所定の周期でトークンバケットに所定量のトークンが追加される。
【００４１】
ポリサ２０は、バーストサイズ設定部２１、ＰＩＲ（Peak Information Rate）設定部
２２、トークン監視部２３を含む。バーストサイズ設定部２１は、後述のバッファ監視部３１からの指示に従って、ポリサ２０のバーストサイズ、すなわち、トークンの上限値を設定する。ＰＩＲ設定部２２は、対象のフローの最大情報速度を設定する。バーストサイズ設定部２１は、「制御部」の一例である。
【００４２】
トークン監視部２３は、トークンバケット内のトークン蓄積量を監視し、対象のフローがバーストサイズの制御対象のフローであるか否かを判定する。なお、バーストサイズの制御対象のフローとは、第１実施形態では、優先的にバーストサイズの低減が行われるフローを示す。バーストサイズの制御対象のフローは、「バーストトラフィックと判定される第１の条件を満たすフロー」の一例である。
【００４３】
トークン監視部２３は、対象のフローがバーストサイズの制御対象であると判定した場合には、後述の各シェーパ３０のバッファ監視部３１に対象のフローの情報を通知する。トークン監視部２３の、対象のフローがバーストサイズの制御対象となるフローであるか否かを判定する処理の詳細については後述される。バーストサイズの制御対象であるか否かは、「バーストの発生状況」の一例である。
【００４４】
出力ＱｏＳ部３は、当該出力ＱｏＳ部３が搭載されるインタフェースカードから又はスイッチ１から流出するフローと同じ数のシェーパ３０を含む。ただし、便宜上、図２では、シェーパ３０は１つのみ示されている。シェーパ３０は、対象のフローについて、シェーピングを行う。
【００４５】
シェーピングでは、例えば、以下の処理が行われる。例えば、シェーパ３０はトークンバケット方式でフレームを出力する。具体的には、トークンバケットにトークンがある場合には到着したフレームは出力される。また、フレームの出力の際に、出力されるフレームに相当する量のトークンがトークンバケットから削除される。例えば、シェーピングでは、トークンバケットにトークンが無い場合には到着フレームはトークンが追加されるまで待機させられる。シェーピングにおけるトークンの追加、削除等はポリサと同様である。
【００４６】
シェーパ３０は、バッファ監視部３１、バッファ３２、出力制御部３３を含む。バッファ３２は、複数のポリサ２０から出力された複数のフローのフレームを一時的に蓄積する。出力制御部３３は、シェーパ３０用のトークンバケットを用いて、バッファの読出し帯域でバッファ３２からフレームを読み出して出力する。バッファ３２は、「複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファ」、「複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファ」の一例である。
【００４７】
バッファ３２はバッファ蓄積予測部３４を備える。バッファ蓄積予測部３４は、バッファ３２内のフレームの蓄積の開始の予測に用いられる情報を収集する。バッファ蓄積予測
部３４は、入力レート監視部３５と入力レート増減監視部３６とを含む。入力レート監視部３５は、単位時間当たりのバッファ３２へ流入するトラフィック量、すなわち、バッファ３２の入力レートを監視する。入力レート監視部３５の処理の詳細は、後述される。
【００４８】
入力レート増減監視部３６は、単位時間当たりのバッファ３２へ流入するトラフィック量の増減傾向、すなわち、バッファ３２の入力レートの傾きを監視する。入力レート増減監視部３６の処理の詳細は後述される。バッファ３２の入力レートの傾きは、「入力レートの増減傾向」の一例である。
【００４９】
バッファ蓄積予測部３４は、所定の周期で、入力レート監視部３５からバッファ３２の入力レートの監視結果と、入力レート増減監視部３６からバッファ３２の入力レートの傾きの監視結果と、を取得し、バッファ監視部３１に通知する。バッファ蓄積予測部３４がバッファ監視部３１にバッファ３２の入力レートの監視結果と入力レートの傾きの監視結果とを通知する周期は、例えば、１マイクロ秒単位で設定される。
【００５０】
また、バッファ蓄積予測部３４は、バッファ３２内のフレームの蓄積量を監視する。バッファ３２内のフレームの蓄積量を、以下、バッファ３２の使用量、又は、バッファ使用量、と称する。バッファ蓄積予測部３４は、例えば、レジスタ等に、バーストサイズが低減されたフローのポリサ２０のバーストサイズを初期値に戻すことを判定するための、バーストサイズ回復閾値を保持する。バッファ蓄積予測部３４は、所定の周期で、バッファ３２の使用量とバーストサイズ回復閾値との比較結果をバッファ監視部３１に通知する。バーストサイズ回復閾値は、「第３の閾値」の一例である。
【００５１】
バッファ３２の使用量とバーストサイズ回復閾値との比較結果の通知周期は、例えば、１マイクロ秒単位で設定される。バッファ３２の使用量とバーストサイズ回復閾値との比較結果の通知は、例えば、バッファ３２の入力レートの情報と入力レートの傾きとの通知とともに行われてもよいし、異なるタイミングで行われてもよい。
【００５２】
バッファ監視部３１は、所定の周期で、バッファ蓄積予測部３４からバッファ３２の入力レートの監視結果とバッファ３２の入力レートの傾きの監視結果との通知を受ける。バッファ監視部３１は、バッファ３２の入力レートの監視結果と入力レートの傾きの監視結果とから、バッファ３２内のフレームの蓄積の開始を予測する。
【００５３】
また、バッファ監視部３１は、各ポリサ２０のトークン監視部２３から、バーストサイズの制御対象となるフローの情報の通知を受ける。バッファ監視部３１は、バッファ３２のフレームの蓄積の開始を予測した場合には、バッファ３２に流入するフローのうち、各ポリサ２０のトークン監視部２３から通知されたバーストサイズの制御対象となるフローのバーストサイズを低減させる。
【００５４】
また、バッファ監視部３１は、所定の周期で、バッファ蓄積予測部３４から、バッファ３２の使用量の通知を受ける。バッファ監視部３１は、バーストサイズを低減させているフローのバーストサイズを、バッファ３２の入力レートと入力レートの傾きとバッファ使用量とに基づいて、所定値まで戻す制御を行う。バッファ監視部３１の処理の詳細は後述される。バッファ監視部３１は、「監視部」の一例である。
【００５５】
＜トークン監視部の処理の詳細＞
図３は、ポリサ２０のトークンバケット内のトークン蓄積量の変化の一例を示す図である。トークンバケットには所定の周期で所定量のトークンが追加される。トークンバケットにトークンが追加される周期を、以下、トークン追加周期と称する。トークン追加周期は、例えば、１ミリ秒の単位で設定されている。
【００５６】
図３中の（１）のように、トークンバケット内のトークン蓄積量がトークンの上限値に達している場合には、トークン追加周期でトークンバケットに加算されるトークンは廃棄される。以下、トークン加算時にトークンの上限値を超えてトークンバケットに加算されるトークン量を、（１）トークン超過量と称する。
【００５７】
トークンバケット内のトークンは、ポリサ２０からフレームが出力されると出力されたフレームの分だけトークンバケットから削除される。図３中の（２）のように、トークンバケット内のトークン蓄積量が０である場合には、ポリサ２０に流入するフレームは廃棄される。以下、トークンバケット内のトークン不足によって廃棄されるフレームのデータ量を、（２）データ廃棄量と称する。（２）データ廃棄量は、例えば、バイト単位とする。ただし、これに限られず、（２）データ廃棄量は、例えば、ビット単位であってもよい。
【００５８】
トークン監視部２３は、上述のようなトークンバケット内のトークン蓄積量の変化を監視し、トークン監視部２３を備えるポリサ２０に流入する対象フローがバーストサイズの制御対象となるか否かの判定を行う。具体的には、例えば、以下の通りである。
【００５９】
（制御対象フローの判定方法１）
トークン監視部２３は、トークン追加周期毎に（２）データ廃棄量−（１）トークン超過量を求め、直近の過去ｎ回分（ｎ：＞０の整数）の計算結果の移動平均を算出する。バーストが発生している場合には、（２）データ廃棄量は大きくなり、（１）トークン超過量は限りなく０に近い値になる。計算結果の移動平均の値が閾値を超えている場合に、トークン監視部２３は、対象のフローがバーストサイズの制御対象となることを判定する。
【００６０】
（制御対象のフローの判定方法２）
トークン監視部２３は、トークン追加周期毎に（２）データ廃棄量の移動平均を求め、直近の過去ｎ回分（ｎ：＞０の整数）の計算結果の移動平均を算出する。バーストが発生している場合には、（２）データ廃棄量は大きくなる。（２）データ廃棄量の移動平均の値が閾値を超えている場合に、トークン監視部２３は、対象のフローがバーストサイズの制御対象となることを判定する。
【００６１】
（制御対象のフローの判定方法３）
トークン監視部２３は、トークン追加周期におけるフレーム廃棄の発生回数を数え、フレーム廃棄の発生回数を、例えば、１秒ごとに加算し、直近の過去ｎ秒分の移動平均を算出する。フレーム廃棄の発生回数は、例えば、トークン追加周期において、（２）データ廃棄量が０より大きい場合に１回と計数される。バーストが発生している場合には、例えば、１秒間におけるフレーム廃棄の発生回数は多くなる。フレーム廃棄の発生回数の移動平均が閾値を超えている場合に、トークン監視部２３は、対象のフローがバーストサイズの制御対象となることを判定する。
【００６２】
なお、トークン追加周期におけるフレーム廃棄の発生回数を利用して、所定時間内におけるバースト期間を算出することもできる。例えば、１秒間におけるフレーム廃棄の発生回数にトークン追加周期を乗じることで、１秒間におけるバースト期間が得られる。所定時間におけるバースト期間が閾値を超えている場合に、トークン監視部２３は、対象のフローがバーストサイズの制御対象となることを判定するようにしてもよい。
【００６３】
（制御対象のフローの判定方法４）
トークン監視部２３は、トークンの上限値に対するトークン蓄積量の割合をバースト消費率として算出し、直近の過去所定期間分のバースト消費率の移動平均が閾値より低い場
合に、対象のフローをバーストサイズの制御対象として判定する。バーストが発生している場合には、トークンが消費され、バースト消費率は０に近づく。
【００６４】
なお、対象フローがバーストサイズの制御対象のフローであるか否かの判定には、上記制御対象のフローの判定方法１〜４のいずれか１つを用いてもよく、又は、複数を組み合わせて用いてもよい。また、対象フローがバーストサイズの制御対象のフローであるか否かの判定の方法は、上記制御対象のフローの判定方法１〜４に限定されない。上記制御対象のフローの判定方法１〜４それぞれにおける制御対象フローと判定される条件は、「バーストトラフィックと判定される第１の条件」の一例である。
【００６５】
なお、上記制御対象のフローの判定方法１〜３のそれぞれにおける移動平均は、例えば、単純移動平均、加重移動平均等のいずれかに限定されず、いずれの移動平均であってもよい。
【００６６】
図４、図５、及び、図６は、それぞれ、バーストサイズの制御対象となるフローのトラフィックの一例を示す図である。図４〜図６の上段のグラフは、バーストサイズの制御対象となるフローの入力レートの変化の一例を示す。図４〜図６の下段のグラフは、上段のグラフのトラフィックがポリサ２０に入力された場合のトークンバケット内のトークン蓄積量の変化の一例を示す。
【００６７】
図４では、入力レートが常にポリサ２０の設定帯域を超過しているフローのトラフィックの例が示されている。ポリサ２０の設定帯域を超過して入力されるトラフィックは廃棄される。ポリサ２０の設定帯域は、例えば、ＣＩＲ（Committed information rate）である。
【００６８】
常にポリサ２０の設定帯域を超過するトラフィックがポリサ２０に流入する場合には、図４の下段のグラフのように、ポリサ２０のトークンバケットのトークン蓄積量は０の付近で推移する。すなわち、トークン追加周期においてトークンバケットにトークンが追加されてもすぐに消費され、トークンが不足し、データ廃棄が発生する。
【００６９】
そのため、図４で示されるような入力レートが常にポリサ２０の設定帯域を超過しているフローがポリサ２０に流入する場合には、例えば、制御対象のフローの判定方法３によって、対象フローがバーストサイズの制御対象であるか否かの判定が可能となる。制御対象のフローの判定方法３は、トークン追加周期におけるフレームの廃棄の発生回数を用いる方法である。
【００７０】
例えば、制御対象のフローの判定方法３において、トークン追加周期におけるフレームの廃棄の発生回数を１秒ごとに加算し、直近の過去１分の移動平均が求められる場合には、フレームの廃棄の発生回数の移動平均は、以下の数式１で示される。また、この場合の対象フローが制御対象であるか否かを判定するためのフレームの廃棄の発生回数の移動平均の閾値は、例えば、１秒間におけるトークンの追加の回数（＝１秒／トークン追加周期）×α（0＜α≦１）である。
【数１】
2019041289.tif 000003
【００７１】
図５では、低頻度で入力レートがポリサ２０の設定帯域を下回るフローのトラフィックの例が示されている。低頻度でポリサ２０の設定帯域を下回る入力レートでトラフィックがポリサ２０に流入する場合には、図５の下段のグラフに示されるように、当該フローの入力レートが設定帯域を下回っている間はポリサ２０のトークンバケットにはトークンが蓄積されるものの、トークンバケットのトークン蓄積量が０の付近で推移する割合が高くなる。
【００７２】
そのため、図５で示されるような低頻度で入力レートがポリサ２０の設定帯域を下回るフローがポリサ２０に流入する場合には、例えば、制御対象のフローの判定方法４によって、対象フローがバーストサイズの制御対象であるか否かの判定が可能となる。制御対象のフローの判定方法４は、トークンの上限値に対するトークン蓄積量の割合であるバースト消費率を用いる方法である。
【００７３】
例えば、制御対象のフローの判定方法４において、バースト消費率の移動平均は、以下の数式２で示される。また、この場合の対象フローが制御対象であるか否かを判定するためのバースト消費率の移動平均の閾値は、０≦バースト消費率≦１であるので、例えば、０．１以下等の０に近い値に設定される。
【数２】
2019041289.tif 000004
【００７４】
図６では、入力レートがポリサ２０の設定帯域を下回る場合とポリサ２０の設定帯域を超過する場合とが交互に発生するフローのトラフィックの例が示されている。入力レートがポリサ２０の設定帯域を下回る場合とポリサ２０の設定帯域を超過する場合とが交互に発生するフローは、例えば、ＴＣＰ（Transmission Control Protocol）のフローに多い
。設定帯域を下回る場合との設定帯域を超過する場合とが交互に発生するトラフィックがポリサ２０に流入する場合には、図６の下段のグラフに示されるように、トークン蓄積量も交互に０と上限値とになる。
【００７５】
そのため、図６で示されるような入力レートが設定帯域を下回る場合との設定帯域を超過する場合とが交互に発生するトラフィックがポリサ２０に流入する場合には、例えば、
制御対象のフローの判定方法４によって、対象フローがバーストサイズの制御対象であるか否かの判定が可能となる。制御対象のフローの判定方法４は、トークンの上限値に対するトークン蓄積量の割合であるバースト消費率を用いる方法である。この場合の対象フローが制御対象であるか否かを判定するためのバースト消費率の移動平均の閾値は、０≦バースト消費率≦１であるので、例えば、０．３〜０．８等の範囲で設定される。
【００７６】
なお、図４〜図６の説明において、制御対象のフローの判定方法３又は４が採用されることが説明されたが、採用される制御対象のフローの判定方法は制御対象のフローの判定方法３又は４に限定されない。例えば、図４〜図６のそれぞれのようなトラフィックがポリサ２０に流入する場合には、制御対象のフローの判定方法１、２のいずれかが用いられてもよい。
【００７７】
＜入力レート監視部の処理の詳細＞
図７は、第１実施形態に係る入力レート監視部３５の入力レートの監視方法の一例を示す図である。バッファ３２には複数のポリサ２０から複数のフローのフレームが入力される。入力レート監視部３５は、バッファ３２に入力される全てのフローの合計の入力レートを監視する。
【００７８】
入力レート監視部３５の入力レートの監視方法は、例えば、以下の通りである。入力レート監視部３５は、バッファ３２に流入する全てのフローの合計トラフィックの入力レートを監視するために、例えば、バッファ３２の前段に計測対象の複数レート分のトークンバケットを備える。例えば、バッファ３２の入力レートが、バッファ３２の読出し帯域に対して、５０％、８０％、１００％それぞれに達したことを検出したい場合には、入力レート監視部３５は、５０％、８０％、１００％それぞれのレートの検出用の３つのトークンバケットを備える。これらのトークンバケットには、それぞれ検出したいレートに応じて、トークン追加周期及びトークンの追加量が設定される。
【００７９】
入力レート監視部３５は、各レートの検出用のトークンバケットが空になるか否かによって、バッファ３２への入力レートを監視する。例えば、５０％、８０％、１００％のいずれのレートの検出用のトークンバケットも空でない場合には、入力レート監視部３５は、バッファ３２の入力レートがバッファ３２の読出し帯域に対して５０％以下であることを検出する。例えば、５０％のレートの検出用のトークンバケットが空であり、その他のトークンバケットは空でない場合には、入力レート監視部３５は、バッファ３２の入力レートがバッファ３２の読出し帯域に対して５０％より大きく且つ８０％以下であることを検出する。
【００８０】
例えば、５０％と８０％とのレートの検出用のトークンバケットが空であり、１００％のレートの検出用のトークンバケットは空でない場合には、入力レート監視部３５は、バッファ３２の入力レートがバッファ３２の読出し帯域に対して８０％より大きく且つ１００％以下であることを検出する。例えば、５０％、８０％、１００％のいずれのレートの検出用のトークンバケットも空の場合には、入力レート監視部３５は、バッファ３２の入力レートがバッファ３２の読出し帯域に対して１００％より大きいことを検出する。
【００８１】
すなわち、例えば、５０％、８０％、１００％それぞれのレートの検出用のトークンバケットが備えられる場合には、バッファ３２の入力レートが読出し帯域に対して、５０％以下であること、５０％より大きく且つ８０％以下であること、８０％より大きく且つ１００％以下であること、１００％より大きいこと、のいずれかがバッファ３２の入力レートの監視結果となる。
【００８２】
なお、入力レート監視部３５が備えるトークンバケットは、バッファ３２への入力レー
トを監視するためのものであって、入力レート監視部３５が備えるトークンバケット内のトークン蓄積量が０である場合でも、フレームの廃棄は発生しない。なお、入力レート監視部３５が備えるトークンバケットは、バッファ３２の読出し帯域に対するバッファ３２の入力レートの割合が５０％、８０％、１００％の３つに限定されない。
【００８３】
入力レート監視部３５がトークンバケットをいくつ備えるか、各トークンバケットの検出するレート又はバッファ３２の読出し帯域に対するバッファ３２の入力レートの割合はどれだけであるかは、例えば、スイッチ１の管理者によって任意に設定可能である。また、入力レート監視部３５が備えるトークンバケットが検出するレートは、バッファ３２の読出し帯域に対するバッファ３２の入力レートの割合で指定されることに限定されず、直接レートが設定されてもよい。また、入力レート監視部３５が備えるトークンバケットが検出するレートとして、バッファ３２の読出し帯域以上、すなわち、入力レートの割合が１００％以上のレートも設定可能である。
【００８４】
なお、バッファ３２の入力レートの監視方法は、図７に示される例に限定されない。例えば、所定周期でバッファ３２内に流入するトラフィック量をメモリに記録し、直近の単位時間当たりのトラフィック量を求めて、バッファ３２の入力レートを直接算出してもよい。
【００８５】
＜入力レート増減監視部の処理の詳細＞
図８は、第１実施形態に係る入力レート増減監視部３６の入力レートの傾きの監視方法の一例を示す図である。図８は、入力レートの監視が図７において説明された方法で行われる場合の、入力レートの傾きの監視方法の一例を示す。
【００８６】
入力レートの監視が図７において説明された方法で行われる場合には、入力レートの値が直接導き出されないため、入力レートの増減を直接取得することができない。一方、例えば、図３に示されるように、入力レートの増減とバッファの使用量の増減との間には相関関係がある。入力レートの増減とバッファの使用量の増減との間の相関関係は、例えば、入力レートが上昇すると所定のタイムラグの後にバッファの使用量が増加し、入力レートが低下すると所定のタイムラグの後にバッファの使用量が減少する、というものである。
【００８７】
したがって、バッファの使用量を監視すると、入力レートの増減を推測することができる。入力レートの監視が図７において説明された方法で行われる場合には、入力レート増減監視部３６は、バッファの使用量の増減を監視することによって、入力レートの増減を推測する。
【００８８】
具体的には、入力レート増減監視部３６は、入力レート監視部３５の１００％のレートの検出用のトークンバケットのトークン追加周期毎に、バッファ３２のデータ流入量とトークンの追加量との差分を取得する。入力レート監視部３５の１００％のレートの検出用のトークンバケットは、バッファ３２の読出し帯域に応じて、トークンの上限値とトークン追加周期とが設定されているためである。
【００８９】
バッファ３２のデータ流入量とトークンの追加量との差分は、１００％のレートの検出用のトークンバケットのトークン追加周期において、バッファ３２の使用量の増加分又は減少分になる。図８に示される例では、１回のトークン追加周期におけるトークン追加量が１０である場合が示される。
【００９０】
例えば、バッファ３２のデータ流入量が０である場合には、データ流入量とトークンの追加量との差分は−１０であり、バッファ３２の使用量が減少することが示される。バッ
ファ３２の使用量が減少することが示される場合には、バッファ３２の入力レートも低下していることが示される。
【００９１】
例えば、バッファ３２のデータ流入量が２０である場合には、データ流入量とトークンの追加量との差分は＋１０であり、バッファ３２の使用量が増加することが示される。バッファ３２の使用量が増加することが示される場合には、バッファ３２の入力レートも上昇していることが示される。
【００９２】
例えば、バッファ３２のデータ流入量が１０である場合には、データ流入量とトークンの追加量との差分は０であり、バッファ３２の使用量が変化しないことが示される。バッファ３２の使用量が変化しないことが示される場合には、バッファ３２の入力レートも変化していない、すなわち、維持されていることが示される。
【００９３】
入力レート増減監視部３６は、例えば、バッファ３２のデータ流入量とトークンの追加量との差分がプラスである場合には、入力レートの傾きの監視結果をプラスとする。入力レート増減監視部３６は、例えば、バッファ３２のデータ流入量とトークンの追加量との差分がマイナスである場合には、入力レートの傾きの監視結果をマイナスとする。入力レート増減監視部３６は、例えば、バッファ３２のデータ流入量とトークンの追加量との差分が０である場合には、入力レートの傾きの監視結果を０とする。
【００９４】
入力レートの傾きの監視結果がプラスであることは、「入力レートが増加傾向」であることの一例である。入力レートの傾きの監視結果がマイナスであることは、「入力レートが減少傾向」であることの一例である。入力レートの傾きの監視結果が０であることは、「入力レートが維持傾向」であることの一例である。
【００９５】
バッファ蓄積予測部３４は、例えば、入力レート監視部３５の１００％のレートの検出用のトークンバケットのトークン追加周期ごとに、入力レート監視部３５から入力レートの監視結果と、入力レート増減監視部３６から入力レートの傾きの監視結果とを取得し、バッファ監視部３１に通知する。なお、入力レート監視部３５の１００％のレートの検出用のトークンバケットの代わりに、バッファ３２の読出し帯域で動作する出力制御部３３のバッファ３２からデータを読み出す周期及び読み出されるデータ量が用いられてもよい。
【００９６】
なお、入力レートの増減の監視方法は、図８において説明される方法に限定されない。例えば、入力レートが直接算出される場合には、入力レートの算出結果をメモリ等に記録しておき、入力レートの増減を監視してもよい。
【００９７】
＜バッファ監視部の処理の詳細＞
図９は、第１実施形態に係るバッファ監視部３１のバーストサイズの制御内容の一例を示す表である。バッファ監視部３１は、バッファ蓄積予測部３４から、バッファ３２の入力レートの監視結果と、バッファ３２の入力レートの傾きの監視結果と、バッファ３２の使用量とバーストサイズ回復閾値との比較結果との通知を受ける。また、バッファ監視部３１は、各ポリサ２０のトークン監視部２３から、バーストサイズの制御対象となるフローの情報の通知を受ける。
【００９８】
図９に示される表には、バッファ３２の入力レートの監視結果、バッファ３２の入力レートの傾きの監視結果、バッファ３２の使用量とバーストサイズ回復閾値との比較結果の内容に応じたバッファ監視部３１の処理内容の一例が示される。図９の表中の「ｄ．ｃ．」は「ｄｏｎ’ｔ  ｃａｒｅ」の略であり、当該項目の値はどのような値であってもよいことが示される。なお、図９に示される表におけるフローは、バッファ３２に流入するフ
ローを示している。
【００９９】
図９に示される例では、バッファ監視部３１の処理内容は、動作指示１−１〜１−５、動作指示２〜５で定義されている。動作指示１−１〜１−５は、バーストサイズが低減されているフローのバーストサイズを増やす又は初期値に戻す処理である。フローのバーストサイズを増やす又は初期値に戻す処理は、「バッファへのデータブロックの流入を促進する制御」の一例である。
【０１００】
動作指示１−１の内容は、バッファ３２に流入するいずれのフローのバーストサイズも変更しないことである。動作指示１−２の内容は、バーストサイズが“０”のフローはバーストサイズを初期値の半分にし、バーストサイズが初期値の半分であるフローはバーストサイズを初期値に戻すことである。バーストサイズが“０”であることは、該当するフローのバッファ３２への流入を停止することを示す。すなわち、バーストサイズが“０”であるフローのフレームは、対応するポリサ２０においてすべて廃棄されることが示される。
【０１０１】
バーストサイズが“０”のフローのバーストサイズを初期値の半分にすること、バーストサイズが初期値の半分であるフローのバーストサイズを初期値に戻すことは、「バッファへのデータブロックの流入が抑制されている前記少なくとも１つのフローについて、前記バッファへのデータブロックの流入を促進する制御を行う」ことの一例である。また、バーストサイズが“０”のフローのバーストサイズを初期値の半分にすることは、「バッファへのデータブロックの流入が停止されているフローについて、前記バッファへのデータブロックの流入の停止を解除して前記バッファへのデータブロックの流入を促進する制御を行う」ことの一例である。
【０１０２】
動作指示１−３の内容は、バーストサイズが“０”のフローのバーストサイズを初期値の半分にすることである。動作指示１−４の内容は、制御対象でないフローのバーストサイズを初期値に戻すことである。動作指示１−５の内容は、バッファ３２に流入する全てのフローのバーストサイズを初期値に戻すことである。
【０１０３】
動作指示２〜５は、バーストサイズを低減させる処理である。動作指示２の内容は、制御対象のフローのバーストサイズを初期値の半分にすることである。動作指示３の内容は、バッファ３２に流入する全てのフローのバーストサイズを初期値の半分にすることである。
【０１０４】
動作指示４の内容は、制御対象のフローのバーストサイズを０に、制御対象でないフローのバーストサイズを初期値の半分にすることである。動作指示５の内容は、バッファ３２に流入する全てのフローのバーストサイズを０にすることである。
【０１０５】
なお、動作指示５の内容は、バッファ３２に流入する全てのフローのバーストサイズを“０”とすることであるが、これに限定されない。例えば、動作指示５の内容は、制御対象のフローのバーストサイズを“０”にし、制御対象以外のフローのバーストサイズは、１回のトークン追加周期におけるトークン追加量と同じサイズとすることであってもよい。これによって、制御対象以外のフローは、ポリサの設定帯域までのトラフィックはポリサを通過できるものの、バーストトラフィックは許容されないこととなる。
【０１０６】
バーストサイズを初期値の半分にすること、及び、バーストサイズを“０”にすることは、それぞれ、「バッファへのデータブロックの流入を抑制」することの一例である。バーストサイズを“０”にすることは、「バッファへのデータブロックの流入を停止」することの一例である。
【０１０７】
バーストサイズの変更がある場合には、バッファ監視部３１は、バーストサイズの変更の対象となるフローに対応するポリサ２０のバーストサイズ設定部２１にバーストサイズの変更指示を通知する。
【０１０８】
例えば、図９に示される例では、バッファ３２の入力レートが５０％以下、且つ、バッファ３２の使用量がバーストサイズ回復閾値以上である場合には、バッファ監視部３１は動作指示１−１の処理を行うことが定義されている。すなわち、いずれのフローもバーストサイズが変更されない。これは、バッファの入力レートが比較的小さいにもかかわらず、バッファ３２の使用量が大きく、例えば、いずれかのフローのバーストサイズを戻したり、いずれかのフローでバーストが発生したりすると、バッファ溢れが発生する可能性が高いためである。
【０１０９】
例えば、図９に示される例では、バッファ３２の入力レートが５０％以下、且つ、バッファ３２の使用量が０より大きく且つバーストサイズ回復閾値未満である場合には、バッファ監視部３１は動作指示１−２の処理を行うことが定義されている。すなわち、バーストサイズが“０”のフローのバーストサイズが初期値の半分に変更され、バーストサイズが初期値の半分であるフローはバーストサイズが初期値に戻される。これは、バッファの入力レートが比較的小さく、且つ、バッファ３２の空きに余裕があるためである。全てのフローのバーストサイズを初期値に戻さないのは、例えば、制御対象のフローでバーストが発生する可能性があるためである。
【０１１０】
例えば、図９に示される例では、バッファ３２の入力レートが５０％以下、且つ、バッファ３２の使用量が０である場合には、バッファ監視部３１は動作指示１−５の処理を行うことが定義されている。すなわち、全てのフローのバーストサイズが初期値に戻される。これは、バッファの入力レートが比較的小さく、且つ、バッファ３２が空であり、例えば、いずれかのフローでバーストが発生してもバッファ溢れが発生する可能性が低い為である。
【０１１１】
例えば、図９に示される例では、バッファの入力レートが５０％〜８０％、且つ、入力レートの傾きがマイナス又は０、且つ、バッファ３２の使用量がバーストサイズ回復閾値以上である場合には、バッファ監視部３１は動作指示１−１の処理を行うことが定義されている。すなわち、いずれのフローもバーストサイズが変更されない。これは、バッファの入力レートが減少傾向にあるものの、バッファ３２の使用量が大きく、例えば、いずれかのフローのバーストサイズを戻したり、いずれかのフローでバーストが発生したりすると、バッファ溢れが発生する可能性が高いためである。
【０１１２】
例えば、図９に示される例では、バッファの入力レートが５０％〜８０％、且つ、入力レートの傾きがマイナス、且つ、バッファ３２の使用量が０より大きく且つバーストサイズ回復閾値未満である場合には、バッファ監視部３１は動作指示１−２の処理を行うことが定義されている。すなわち、バーストサイズが“０”のフローのバーストサイズが初期値の半分に変更され、バーストサイズが初期値の半分であるフローはバーストサイズが初期値に戻される。これは、バッファの入力レートは比較的高いものの、バッファ３２の空きに余裕があり、且つ、入力レートが減少傾向にあることから、この先バッファ３２の使用量が減っていく可能性が高いためである。全てのフローのバーストサイズを初期値に戻さないのは、例えば、制御対象のフローでバーストが発生する可能性があるためである。
【０１１３】
例えば、図９に示される例では、バッファの入力レートが５０％〜８０％、且つ、入力レートの傾きがマイナス、且つ、バッファ３２の使用量が０である場合には、バッファ監視部３１は動作指示１−５の処理を行うことが定義されている。すなわち、全てのフロー
のバーストサイズが初期値に戻される。これは、バッファの入力レートが比較的高いものの、入力レートが減少傾向にあり、且つ、バッファ３２が空であるため、例えば、いずれかのフローでバーストが発生してもバッファ溢れが発生する可能性が低い為である。
【０１１４】
例えば、図９に示される例では、バッファの入力レートが５０％〜８０％、且つ、入力レートの傾きが０、且つ、バッファ３２の使用量が０より大きく且つバーストサイズ回復閾値未満である場合には、バッファ監視部３１は動作指示１−３の処理を行うことが定義されている。すなわち、バーストサイズが“０”のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが比較的高く維持傾向にあるものの、バッファ３２の空きに余裕があるため、バーストサイズが“０”でポリサ２０において全てのフレームが廃棄されているフローの転送を行うためである。
【０１１５】
例えば、図９に示される例では、バッファの入力レートが５０％〜８０％、且つ、入力レートの傾きがマイナス、且つ、バッファ３２の使用量が０である場合には、バッファ監視部３１は動作指示１−４の処理を行うことが定義されている。すなわち、制御対象のフロー以外のフローのバーストサイズが初期値に戻される。これは、バッファの入力レートは比較的高いものの、バッファ３２が空であり、且つ、入力レートが減少傾向にあることから、この先バッファ３２の使用量が減っていく可能性が高いためである。制御対象のフローのバーストサイズを初期値に戻さないのは、例えば、バーストが発生する可能性があるためである。
【０１１６】
例えば、図９に示される例では、バッファの入力レートが５０％〜８０％、且つ、入力レートの傾きがプラスである場合には、バッファ監視部３１は動作指示２の処理を行うことが定義されている。すなわち、制御対象のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートは比較的高く且つ増加傾向にあるため、この先バッファ３２の使用量が増加する可能性が高いためである。制御対象のフローのバーストサイズが初期値の半分に変更されるのは、例えば、バーストが発生する可能性があるためである。また、制御対象のフロー以外のフローのバーストサイズが変更されないのは、例えば、バーストが発生する可能性が低いためである。
【０１１７】
例えば、図９に示される例では、バッファの入力レートが８０％〜１００％、且つ、入力レートの傾きがマイナス、且つ、バッファ３２の使用量がバーストサイズ回復閾値以上である場合には、バッファ監視部３１は動作指示１−１の処理を行うことが定義されている。すなわち、いずれのフローもバーストサイズが変更されない。これは、バッファの入力レートが減少傾向にあるものの、バッファ３２の使用量が大きく、バッファ溢れが発生する可能性が高いためである。
【０１１８】
例えば、図９に示される例では、バッファの入力レートが８０％〜１００％、且つ、入力レートの傾きがマイナス、且つ、バッファ３２の使用量が０より大きく且つバーストサイズ回復閾値未満である場合には、バッファ監視部３１は動作指示１−３の処理を行うことが定義されている。すなわち、バーストサイズが“０”のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが高いものの、入力レートが減少傾向にあり、且つ、バッファ３２が空であるため、バッファ３２にバーストを受け入れる余裕があるためである。これによって、バーストサイズが“０”でポリサ２０において全てのフレームが廃棄されているフローの転送が行われる。
【０１１９】
例えば、図９に示される例では、バッファの入力レートが８０％〜１００％、且つ、入力レートの傾きがマイナス、且つ、バッファ３２の使用量が０である場合には、バッファ監視部３１は動作指示１−４の処理を行うことが定義されている。すなわち、制御対象のフロー以外のフローのバーストサイズが初期値に戻される。これは、バッファの入力レー
トは高いものの、バッファ３２が空であり、且つ、入力レートが減少傾向にあることから、この先バッファ３２の使用量が減っていく可能性が高いためである。
【０１２０】
例えば、図９に示される例では、バッファの入力レートが８０％〜１００％、且つ、入力レートの傾きが０である場合には、バッファ監視部３１は動作指示２の処理を行うことが定義されている。すなわち、制御対象のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートは高く且つ維持傾向にあるため、この先バッファ３２の使用量が増加しバッファ溢れが発生する可能性が高いためである。
【０１２１】
例えば、図９に示される例では、バッファの入力レートが８０％〜１００％、且つ、入力レートの傾きがプラスである場合には、バッファ監視部３１は動作指示３の処理を行うことが定義されている。すなわち、バッファ３２に流入する全てのフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが高く且つ増加傾向にあるため、この先バッファ３２においてバッファ溢れが発生する可能性がより高いためである。
【０１２２】
例えば、図９に示される例では、バッファの入力レートが１００％より大きく、且つ、入力レートの傾きがマイナスである場合には、バッファ監視部３１は動作指示３の処理を行うことが定義されている。すなわち、バッファ３２に流入する全てのフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが減少傾向にあるものの、バッファの入力レートが読出し帯域より高く、すでにバッファ３２へのフレームの蓄積が始まっており、且つ、バッファの入力レートが読出し帯域より低くなるまでフレームの蓄積が続くためである。
【０１２３】
例えば、図９に示される例では、バッファの入力レートが１００％より大きく、且つ、入力レートの傾きが０である場合には、バッファ監視部３１は動作指示４の処理を行うことが定義されている。すなわち、制御対象のフローのバーストサイズが“０”に、制御対象以外のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが読出し帯域より高く、すでにバッファ３２へのフレームの蓄積が始まっており、且つ、バッファ３２の入力レートが維持傾向にあり、バッファ３２へフレームが蓄積される速度が維持され、バッファ溢れの発生の可能性が高いためである。
【０１２４】
例えば、図９に示される例では、バッファの入力レートが１００％より大きく、且つ、入力レートの傾きがプラスである場合には、バッファ監視部３１は動作指示５の処理を行うことが定義されている。すなわち、バッファ３２に流入する全てのフローのバーストサイズが“０”に変更される。これは、バッファの入力レートが読出し帯域より高く、すでにバッファ３２へのフレームの蓄積が始まっており、且つ、入力レートが増加傾向にあり、バッファ３２へフレームが蓄積される速度が速まっており、バッファ溢れの発生の可能性が非常に高いためである。全てのフローのバーストサイズが“０”に変更されることによって、バッファ３２へのフレームの流入が停止し、読出し帯域でバッファ３２からフレームが読み出されることによって、バッファ３２の使用量が低下する。
【０１２５】
図９に示されるバッファ監視部３１の処理内容によれば、バーストサイズを低減させる処理は、バッファ３２の入力レート及び／又はバッファ３２の入力レートの傾きに応じて、段階的に行われる。なお、バッファ監視部３１によるバーストサイズの制御は、図９に示される例に限定されない。また、バーストサイズを低減させる場合の変更後のバーストサイズは、初期値の半分に限定されない。
【０１２６】
また、バッファ監視部３１によるバーストサイズを低減させる制御は、バッファ３２の入力レートとバッファ３２の入力レートの傾きとに基づくことに限定されない。バッファ
監視部３１によるバーストサイズを低減させる制御は、バッファ３２の入力レートとバッファ３２の入力レートの傾きとのいずれか一方に基づいて行われてもよい。
【０１２７】
また、バッファ監視部３１によるバーストサイズを増加させる制御は、バッファ３２の入力レート、バッファ３２の入力レートの傾き、バッファ３２の使用量とに基づくことに限定されない。バッファ監視部３１によるバーストサイズを増加させる制御は、バッファ３２の入力レート、バッファ３２の入力レートの傾き、バッファ３２の使用量とのいずれか１つ又は２つに基づいて行われてもよい。
【０１２８】
図９における読出し帯域に対して５０％のレートは、「第１の閾値」の一例である。ただし、「第１の閾値」は、読出し帯域に対して５０％のレートに限定されず、読出し帯域に対して８０％のレート、読出し帯域に対して１００％のレートすなわち読出し帯域のレートであってもよい。図９における読出し帯域に対して８０％のレートは、「第２の閾値」の一例である。ただし、「第２の閾値」は、読出し帯域に対して８０％のレートに限定されない。
【０１２９】
＜処理の流れ＞
図１０は、トークン監視部２３のフレーム受信時の処理のフローチャートの一例である。図１０に示される処理は、トークン監視部２３を備えるポリサ２０にフレームが到着すると開始される。
【０１３０】
ＯＰ１では、トークン監視部２３は、ポリサ２０によって当該フレームが廃棄されたか否かを判定する。ＯＰ１の判定は、例えば、ポリサ２０用のトークンバケットが空であるか否かの判定結果に基づいて行われる。例えば、ポリサ２０用のトークンバケットが空である場合にはポリサ２０によって当該フレームが廃棄されることが示される。
【０１３１】
ポリサ２０によって当該フレームが廃棄された場合には（ＯＰ１：ＹＥＳ）、処理がＯＰ２に進む。ポリサ２０によって当該フレームが廃棄されていない場合には（ＯＰ１：ＮＯ）、図１０に示される処理が終了する。
【０１３２】
ＯＰ２では、トークン監視部２３は、違反バイトカウンタに廃棄されたフレームのバイト数を加算する。違反バイトカウンタは、ポリサ２０によって廃棄されたフレームのデータ量のカウンタである。その後、図１０に示される処理が終了する。
【０１３３】
図１１は、トークン監視部２３の制御対象フローの判定処理のフローチャートの一例である。図１１に示される例は、トークン監視部２３が、制御対象のフローの判定方法２を用いてバーストサイズの制御対象のフローを判定する場合のフローチャートである。制御対象のフローの判定方法２は、データ廃棄量の移動平均を用いる方法である。図１１に示される例は、ポリサ２０用のトークンバケットのトークン追加周期毎に実行される。
【０１３４】
ＯＰ１１では、トークン監視部２３は、データ廃棄量の移動平均を求める。データ廃棄量の移動平均は、例えば、以下の数式３で求められる。
【数３】
2019041289.tif 000005
【０１３５】
ＯＰ１２では、トークン監視部２３は、ＯＰ１１で求めたデータ廃棄量の移動平均が閾値より大きいか否かを判定する。データ廃棄量の移動平均が閾値より大きい場合には（ＯＰ１２：ＹＥＳ）、処理がＯＰ１３に進む。データ廃棄量の移動平均が閾値以下である場合には（ＯＰ１２：ＮＯ）、処理がＯＰ１４に進む。
【０１３６】
ＯＰ１３では、トークン監視部２３は、ポリサ２０の対象フローはバーストサイズの制御対象のフローであることを判定する。ＯＰ１４では、トークン監視部２３は、該当シェーパ３０のバッファ監視部３１に、ポリサ２０の対象フローの情報を通知する。バッファ監視部３１に通知される情報は、例えば、ポリサ２０の識別情報である。また、通知先のシェーパ３０は、例えば、スイッチ１の制御部（図示せず）によって、ポリサ２０の対象フローの宛先アドレスから決定されている。
【０１３７】
ＯＰ１５では、トークン監視部２３は、ポリサ２０の対象フローはバーストサイズの制御対象のフローでないことを判定する。ＯＰ１６では、トークン監視部２３は、違反バイトカウンタの値を０にしてクリアする。その後、図１１に示される処理が終了する。
【０１３８】
図１２は、入力レート増減監視部３６の処理のフローチャートの一例である。図１２に示される処理は、例えば、入力レート監視部３５の１００％のレートの検出用のトークンバケットのトークン追加周期毎に実行される。
【０１３９】
ＯＰ２１では、入力レート増減監視部３６は、受信フレームカウンタの値からトークン追加量を差し引いて差分を求める。例えば、１トークン当たりに１フレームが出力されるので、受信フレームカウンタはバッファ３２に入力されるフレームの数をカウントする。
【０１４０】
ＯＰ２２では、入力レート増減監視部３６は、受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値であるか否かを判定する。受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値である場合には（ＯＰ２２：ＹＥＳ）、処理がＯＰ２３に進む。受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値でない場合には（ＯＰ２２：ＮＯ）、処理がＯＰ２５に進む。
【０１４１】
ＯＰ２３及びＯＰ２４の処理は、受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値である場合に実行される処理である。ＯＰ２３では、入力レート増減監視部３６は、受信フレームカウンタの値からトークン追加量を差し引いた差分が、トークン追加量の１０％の値よりも大きいか否かを判定する。
【０１４２】
受信フレームカウンタの値からトークン追加量を差し引いた差分が、トークン追加量の１０％の値よりも大きい場合には（ＯＰ２３：ＹＥＳ）、処理がＯＰ２４に進む。ＯＰ２４では、トークン監視部２３は、バッファ３２の入力レートの傾きを“プラス”と判定する。
【０１４３】
受信フレームカウンタの値からトークン追加量を差し引いた差分が、トークン追加量の１０％の値以下である場合には（ＯＰ２３：ＮＯ）、処理がＯＰ２７に進む。ＯＰ２７では、トークン監視部２３は、バッファ３２の入力レートの傾きを“０”と判定する。
【０１４４】
ＯＰ２５及びＯＰ２６の処理は、受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値でない場合に実行される処理である。ＯＰ２５では、トークン監視部２３は、トークン追加量から受信フレームカウンタの値を差し引いた差分を求める。
【０１４５】
ＯＰ２６では、入力レート増減監視部３６は、トークン追加量から受信フレームカウンタの値を差し引いた差分が、トークン追加量の１０％の値よりも大きいか否かを判定する。トークン追加量から受信フレームカウンタの値を差し引いた差分が、トークン追加量の１０％の値よりも大きい場合には（ＯＰ２６：ＹＥＳ）、処理がＯＰ２７に進む。ＯＰ２７では、トークン監視部２３は、バッファ３２の入力レートの傾きを“０”と判定する。
【０１４６】
トークン追加量から受信フレームカウンタの値を差し引いた差分が、トークン追加量の１０％の値以下である場合には（ＯＰ２６：ＮＯ）、処理がＯＰ２８に進む。ＯＰ２８では、トークン監視部２３は、バッファ３２の入力レートの傾きを“マイナス”と判定する。
【０１４７】
ＯＰ２９では、入力レート増減監視部３６は、受信フレームカウンタを０にクリアする。その後、図１２に示される処理が終了する。
【０１４８】
図１２に示される例では、受信フレームカウンタの値とトークン追加量との差分が小さい場合には、バッファ３２の入力レートの傾きは、０、すなわち、バッファ３２の入力レートがほぼバッファ３２の読出し帯域と同じであるとみなされる。これは、受信フレームカウンタの値とトークン追加量との差分が小さい場合には、バッファ３２の使用量の変動が小さく、ポリサ２０のバーストサイズの制御が頻発することを抑制するためである。なお、バッファ３２の入力レートの傾きを０とみなすための受信フレームカウンタの値とトークン追加量との差分に対する閾値は、トークン追加量の１０％に限定されない。
【０１４９】
図１３Ａ、図１３Ｂ、図１３Ｃ、及び、図１３Ｄは、バッファ監視部３１の処理のフローチャートの一例である。図１３Ａ〜図１３Ｄに示される処理は、バッファ監視部３１の処理が図９に示される処理内容で定義されている場合の処理である。図１３Ａに示される処理は、例えば、バッファ３２にフレームが到着すると開始される。
【０１５０】
ＯＰ３１では、バッファ監視部３１は、バッファ３２の入力レートの監視結果がバッファ３２の読出し帯域に対して５０％以下であるか否かを判定する。バッファ３２の入力レートの監視結果がバッファ３２の読出し帯域に対して５０％以下である場合には（ＯＰ３２：ＹＥＳ）、処理がＯＰ３２に進む。バッファ３２の入力レートの監視結果がバッファ３２の読出し帯域に対して５０％より大きい場合には（ＯＰ３２：ＮＯ）、処理がＯＰ３３に進む。
【０１５１】
ＯＰ３２では、バッファ３２の使用量による判定処理１が実行される。バッファ３２の使用量による判定処理１の詳細は後述される。バッファ３２の使用量による判定処理１が終了すると、図１３Ａに示される処理が終了する。
【０１５２】
ＯＰ３３では、バッファ監視部３１は、バッファ３２の入力レートの監視結果がバッファ３２の読出し帯域に対して５０％より大きく且つ８０％以下であるか否かを判定する。バッファ３２の入力レートの監視結果がバッファ３２の読出し帯域に対して５０％より大きく且つ８０％以下である場合には（ＯＰ３３：ＹＥＳ）、処理がＯＰ３４に進む。バッ
ファ３２の入力レートの監視結果が８０％より大きい場合には（ＯＰ３３：ＮＯ）、処理が図１３ＢのＯＰ４１に進む。
【０１５３】
ＯＰ３４では、バッファ監視部３１は、バッファ３２の入力レートの傾きの監視結果が“プラス”であるか否かを判定する。バッファ３２の入力レートの傾きの監視結果が“プラス”である場合には（ＯＰ３４：ＹＥＳ）、処理がＯＰ３５に進む。バッファ３２の入力レートの傾きの監視結果が“プラス”でない場合には（ＯＰ３４：ＮＯ）、処理がＯＰ３６に進む。
【０１５４】
ＯＰ３５では、バッファ監視部３１は、動作指示２を行う。すなわち、バッファ３２の入力レートが５０％より大きく、さらに上昇傾向にあるため、バッファ監視部３１は、制御対象のフローに対応するポリサ２０のバーストサイズ設定部２１に、バーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ａに示される処理が終了する。
【０１５５】
ＯＰ３６では、バッファ監視部３１は、バッファ３２の入力レートの傾きの監視結果が“マイナス”であるか否かを判定する。バッファ３２の入力レートの傾きの監視結果が“マイナス”である場合には（ＯＰ３６：ＹＥＳ）、処理がＯＰ３２に進む。バッファ３２の入力レートの傾きの監視結果が“０”である場合には（ＯＰ３６：ＮＯ）、処理がＯＰ３７に進む。
【０１５６】
ＯＰ３７では、バッファ３２の使用量による判定処理２が実行される。バッファ３２の使用量による判定処理２の詳細は後述される。バッファ３２の使用量による判定処理２が終了すると、図１３Ａに示される処理が終了する。
【０１５７】
図１３ＢのＯＰ４１では、バッファ監視部３１は、バッファ３２の入力レートの監視結果がバッファ３２の読出し帯域に対して８０％より大きく且つ１００％以下であるか否かを判定する。バッファ３２の入力レートの監視結果がバッファ３２の読出し帯域に対して８０％より大きく且つ１００％以下である場合には（ＯＰ４１：ＹＥＳ）、処理がＯＰ４２に進む。バッファ３２の入力レートの監視結果が１００％より大きい場合には（ＯＰ４１：ＮＯ）、処理がＯＰ４７に進む。
【０１５８】
ＯＰ４２では、バッファ監視部３１は、バッファ３２の入力レートの傾きの監視結果が“プラス”であるか否かを判定する。バッファ３２の入力レートの傾きの監視結果が“プラス”である場合には（ＯＰ４２：ＹＥＳ）、処理がＯＰ４３に進む。バッファ３２の入力レートの傾きの監視結果が“プラス”でない場合には（ＯＰ４３：ＮＯ）、処理がＯＰ４４に進む。
【０１５９】
ＯＰ４３では、バッファ監視部３１は、動作指示３を行う。すなわち、バッファ３２の入力レートが８０％より大きく、さらに上昇傾向にあるため、バッファ監視部３１は、バッファ３２に流入する全てのフローに対応するポリサ２０のバーストサイズ設定部２１に、バーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ｂに示される処理が終了する。
【０１６０】
ＯＰ４４では、バッファ監視部３１は、バッファ３２の入力レートの傾きの監視結果が“マイナス”であるか否かを判定する。バッファ３２の入力レートの傾きの監視結果が“マイナス”である場合には（ＯＰ４４：ＹＥＳ）、処理がＯＰ４５に進む。バッファ３２の入力レートの傾きの監視結果が“０”である場合には（ＯＰ４４：ＮＯ）、処理がＯＰ４６に進む。
【０１６１】
ＯＰ４５では、バッファ３２の使用量による判定処理２が実行される。バッファ３２の使用量による判定処理２が終了すると、図１３Ｂに示される処理が終了する。
【０１６２】
ＯＰ４６では、バッファ監視部３１は、動作指示２を行う。すなわち、バッファ３２の入力レートが８０％より大きく、さらに入力レートの値が維持される傾向にあるため、バッファ監視部３１は、制御対象のフローに対応するポリサ２０のバーストサイズ設定部２１に、バーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ｂに示される処理が終了する。
【０１６３】
ＯＰ４７では、バッファ監視部３１は、バッファ３２の入力レートの傾きの監視結果が“プラス”であるか否かを判定する。バッファ３２の入力レートの傾きの監視結果が“プラス”である場合には（ＯＰ４７：ＹＥＳ）、処理がＯＰ４８に進む。バッファ３２の入力レートの傾きの監視結果が“プラス”でない場合には（ＯＰ４７：ＮＯ）、処理がＯＰ４９に進む。
【０１６４】
ＯＰ４８では、バッファ監視部３１は、動作指示５を行う。すなわち、バッファ３２の入力レートが１００％より大きく、さらに上昇傾向にあるため、バッファ監視部３１は、バッファ３２に流入する全てのフローに対応するポリサ２０のバーストサイズ設定部２１に、バーストサイズを０に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ｂに示される処理が終了する。
【０１６５】
ＯＰ４９では、バッファ監視部３１は、バッファ３２の入力レートの傾きの監視結果が“マイナス”であるか否かを判定する。バッファ３２の入力レートの傾きの監視結果が“マイナス”である場合には（ＯＰ４９：ＹＥＳ）、処理がＯＰ４３に進む。バッファ３２の入力レートの傾きの監視結果が“０”である場合には（ＯＰ４９：ＮＯ）、処理がＯＰ５０に進む。
【０１６６】
ＯＰ５０では、バッファ監視部３１は、動作指示４を行う。すなわち、バッファ３２の入力レートが１００％より大きく、さらに現在の入力レートが維持傾向にあることが示される。したがって、バッファ監視部３１は、制御対象のフローに対応するポリサ２０のバーストサイズ設定部２１にバーストサイズを０に変更するように指示するバーストサイズ変更指示を送信する。また、バッファ監視部３１は、制御対象以外のフローに対応するポリサ２０のバーストサイズ設定部２１にバーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ｂに示される処理が終了する。
【０１６７】
図１３Ｃは、バッファ３２の使用量による判定処理１のフローチャートの一例である。図１３Ｃに示される処理は、図１３ＡのＯＰ３２において実行される処理である。
【０１６８】
ＯＰ５１では、バッファ監視部３１は、バッファ３２の使用量が０であるか否かを判定する。バッファ３２の使用量が０である場合には（ＯＰ５１：ＹＥＳ）、処理がＯＰ５２に進む。バッファ３２の使用量が０でない場合には（ＯＰ５１：ＮＯ）、処理がＯＰ５３に進む。
【０１６９】
ＯＰ５２では、バッファ監視部３１は、動作指示１−５を行う。すなわち、バッファ３２の入力レートが５０％以下であり、さらにバッファ３２の使用量が０であるため、バッファ監視部３１は、バッファ３２に流入する全てのフローに対応するポリサ２０のバーストサイズ設定部２１にバーストサイズを初期値に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ｃに示される処理が終了し、これとともに、図１３Ａに示される処理も終了する。
【０１７０】
ＯＰ５３では、バッファ監視部３１は、バッファ３２の使用量が０より大きく且つバーストサイズ回復閾値未満であるか否かを判定する。バッファ３２の使用量が０より大きく且つバーストサイズ回復閾値未満である場合には（ＯＰ５３：ＹＥＳ）、処理がＯＰ５４に進む。バッファ３２の使用量がバーストサイズ回復閾値以上である場合には（ＯＰ５３：ＮＯ）、処理がＯＰ５５に進む。
【０１７１】
ＯＰ５４では、バッファ監視部３１は、動作指示１−２を行う。すなわち、バッファ３２の入力レートが５０％以下であり、さらにバッファ３２の使用量がバーストサイズ回復閾値未満まで下がっていることが示される。この場合には、バッファ監視部３１は、バーストサイズが０であるフローに対応するポリサ２０のバーストサイズ設定部２１にバーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。また、バッファ監視部３１は、バーストサイズが初期値の半分であるフローに対応するポリサ２０のバーストサイズ設定部２１にバーストサイズを初期値に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ｃに示される処理が終了し、これとともに、図１３Ａに示される処理も終了する。
【０１７２】
ＯＰ５５では、バッファ監視部３１は、動作指示１−１を行う。すなわち、バッファ３２の入力レートが５０％以下であり、さらにバッファ３２の使用量がバーストサイズ回復閾値以上であるので、バッファ監視部３１は、いずれのフローのバーストサイズも変更しない。その後、図１３Ｃに示される処理が終了し、これとともに、図１３Ａに示される処理も終了する。
【０１７３】
図１３Ｄは、バッファ３２の使用量による判定処理２のフローチャートの一例である。図１３Ｄに示される処理は、図１３ＡのＯＰ３７、図１３ＢのＯＰ４５において実行される処理である。
【０１７４】
ＯＰ６１では、バッファ監視部３１は、バッファ３２の使用量が０であるか否かを判定する。バッファ３２の使用量が０である場合には（ＯＰ６１：ＹＥＳ）、処理がＯＰ６２に進む。バッファ３２の使用量が０でない場合には（ＯＰ６１：ＮＯ）、処理がＯＰ６３に進む。
【０１７５】
ＯＰ６２では、バッファ監視部３１は、動作指示１−４を行う。すなわち、バッファ監視部３１は、制御対象以外のフローに対応するポリサ２０のバーストサイズ設定部２１にバーストサイズを初期値に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ｄに示される処理が終了し、これとともに、図１３Ａ又は図１３Ｂに示される処理も終了する。
【０１７６】
ＯＰ６３では、バッファ監視部３１は、バッファ３２の使用量が０より大きく且つバーストサイズ回復閾値未満であるか否かを判定する。バッファ３２の使用量が０より大きく且つバーストサイズ回復閾値未満である場合には（ＯＰ６３：ＹＥＳ）、処理がＯＰ６４に進む。バッファ３２の使用量がバーストサイズ回復閾値以上である場合には（ＯＰ６３：ＮＯ）、処理がＯＰ６５に進む。
【０１７７】
ＯＰ６４では、バッファ監視部３１は、動作指示１−３を行う。すなわち、バッファ監視部３１は、バーストサイズが０であるフローに対応するポリサ２０のバーストサイズ設定部２１にバーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図１３Ｄに示される処理が終了し、これとともに、図１３Ａ又は図１３Ｂに示される処理も終了する。
【０１７８】
ＯＰ６５では、バッファ監視部３１は、動作指示１−１を行う。すなわち、バッファ３２の使用量がバーストサイズ回復閾値以上であるので、バッファ監視部３１は、いずれのフローのバーストサイズも変更しない。その後、図１３Ｄに示される処理が終了し、これとともに、図１３Ａ又は図１３Ｂに示される処理も終了する。
【０１７９】
なお、図１０〜図１３Ｄに示されるフローチャートの処理は一例であって、トークン監視部２３、入力レート増減監視部３６、バッファ監視部３１の処理は、図１０〜図１３Ｄに示される処理に限定されない。
【０１８０】
＜第１実施形態の作用効果＞
図１４は、具体例におけるフローＡ、フローＢ、フローＣのそれぞれのレートと、合計のレートとのグラフの一例である。具体例では、バッファ３２にフローＡ、フローＢ、フローＣの３つのフローのフレームが流入することを想定する。また、バッファ３２の読出し帯域は３０Ｍｂｐｓであることを想定する。
【０１８１】
図１４では、フローＡ、フローＢ、フローＣの合計レートが、１５Ｍｂｐｓから３０ＭＢｐｓ以上へとバーストを伴いながらバッファ３２に流入する例が示されている。
【０１８２】
図１５は、バッファ３２に対して方法１による制御が行われた場合の、フローＡ、フローＢ、フローＣのそれぞれの入力レートと、合計の入力レートとのグラフの一例である。図１５では、図１４に示されるフローＡ、フローＢ、フローＣのトラフィックがスイッチ１に入力された場合の、バッファ３２への入力レートが示されている。
【０１８３】
また、図１５に示される例では、方法１のバーストサイズの制御として、バッファ３２の使用量が閾値に達した場合に、バッファ３２に流入する全フローのバーストサイズを初期値の半分に低減させる制御が行われている。
【０１８４】
図１５に示される例において、点線の矩形で囲まれた部分が、バッファ３２の使用量が閾値を超えている期間である。バッファ３２の使用量が閾値を超えて、フローＡ、フローＢ、フローＣそれぞれのバーストサイズが半減されたときには既に、各フローのポリサのトークンは消費されており、各フローのポリサのトークン蓄積量は初期値の半分以下になっている可能性が高い。
【０１８５】
各フローのポリサのトークン蓄積量が初期値の半分以下になっている場合には、バーストサイズが半減されてもトークン蓄積量に変化はなく、各フローのトラフィックはそのままバッファ３２に流入することとなる。
【０１８６】
したがって、図１５に示される方法１によるバーストサイズの制御が行われた場合のフローＡ、フローＢ、フローＣのそれぞれの入力レートと、合計の入力レートとのグラフは、図１４に示されるグラフと同じグラフとなっている。
【０１８７】
図１６は、バッファ３２に対して第１実施形態に係るバーストサイズの制御が行われた場合の、フローＡ、フローＢ、フローＣのそれぞれの入力レートと、合計の入力レートとのグラフの一例である。図１６では、図１４に示されるフローＡ、フローＢ、フローＣのトラフィックがスイッチ１に入力された場合の、バッファ３２への入力レートが示されている。
【０１８８】
また、図１６に示される例では、バッファ３２の入力レートがバッファ３２の読出し帯域に対して１００％を超え、且つ、入力レートの傾きが“０”である場合に、バッファ３２に流入する全フローのバーストサイズを初期値の半分に低減させる制御が行われている
。なお、図１６に示される例では、入力レートの傾きを“０”と判定する際の閾値を、バッファ３２の読出し帯域の３％としている（図１２、ＯＰ２３、ＯＰ２６参照）。
【０１８９】
図１６に示される例では、フローＡ、フローＢ、フローＣの合計の入力レートが読出し帯域（３０Ｍｂｐｓ）を超え、且つ、入力レートが上昇傾向であることが検出されるポイントＡの時点で各フローのバーストサイズが半減される。ポイントＡの時点では、各フローのトークン蓄積量は、バーストサイズの半分以上である可能性が高く、バーストサイズが半減されることによって、トークン蓄積量が減少する。これ以降、各フローからバッファ３２に流入される入力レートの最大値も低下する。
【０１９０】
したがって、図１６に示されるグラフでは、図１５に示されるグラフに比べて、以下の点が異なっていることが分かる。まず、図１６に示されるグラフでは、図１５に示されるグラフに比べて、バーストサイズの低減の実行されるタイミングがより速い。次に、図１６に示されるグラフでは、図１５に示されるグラフに比べて、全フローの合計の入力レートがバッファ３２の読出し帯域を超過する期間がより短い。また、図１６に示されるグラフでは、図１５に示されるグラフに比べて、全フローの合計の入力レートがバッファ３２の読出し帯域を超過している際の超過分がより小さい。
【０１９１】
図１７は、第１実施形態によるバーストサイズの制御と方法１によるバーストサイズの制御とのバッファの使用量のグラフの一例である。図１７に示される第１実施形態によるバーストサイズの制御が行われた場合のバッファ３２の使用量のグラフは、各フローのバッファ３２への入力レートが図１６に示されるように変化した場合のグラフである。図１７に示される方法１によるバーストサイズの制御が行われた場合のバッファ３２の使用量のグラフは、各フローのバッファ３２への入力レートが図１５に示されるように変化した場合のグラフである。
【０１９２】
方法１では、バッファ３２の使用量がバッファ３２の物理容量を超過しており、バッファ３２においてフレームの廃棄が発生していることが示される。一方、第１実施形態に係るバーストサイズの制御では、バッファ３２の使用量がバッファ３２の物理容量を超過することがなく、バッファ３２におけるフレームの廃棄が発生していないことが示される。
【０１９３】
したがって、第１実施形態によれば、バッファ３２への入力レートを監視し、入力レートの監視結果に応じてバーストサイズの制御のタイミングを決定することで、より早いタイミングでバーストサイズを低減させることができる。これによって、バッファ３２に流入するフローにおいてバーストが発生した場合でもバッファ３２に流入されるデータ量を抑えることができ、バッファ溢れを抑制することができる。
【０１９４】
また、第１実施形態によれば、バッファ３２の入力レートとバッファ３２の読出し帯域とに応じてバーストサイズの制御を行うことでバッファ３２のフレームの蓄積の開始を予測することができる。バッファ３２のフレームの蓄積の開始を予測できることによって、バッファ３２内に蓄積されているフレームが少ない段階でバーストサイズを低減することができ、バッファ溢れを抑制することができる。
【０１９５】
また、第１実施形態によれば、バッファ３２の入力レートと、バッファ３２の入力レートの増減傾向との組み合わせに応じて、バーストサイズの制御のタイミングを決定することで、バーストサイズの変更が頻発することを抑制することができる。
【０１９６】
また、第１実施形態によれば、バッファ３２の入力レートが読出し帯域以下の閾値より大きく、且つ、バッファ３２の入力レートが増加傾向である場合に、バーストサイズの制御を行うことで、バッファ３２のフレームの蓄積の開始前にバーストサイズを低減するこ
とができる。また、第１実施形態によれば、バッファの入力レートに複数の閾値を設けることで、バーストサイズを低減させるフローを段階的に選択できる。
【０１９７】
また、第１実施形態によれば、バッファ３２の入力レートと、バッファ３２の入力レートの増減傾向と、バッファ３２の使用量とに基づいて、低減されたバーストサイズを増加させる制御が行われる。これによって、バーストが収まった際に、各フローのバーストサイズを通常の状態に戻すことができる。
【０１９８】
また、第１実施形態によれば、バーストサイズの制御対象には、バーストトラフィックの可能性の高いフローから順に選択される。これによって、バーストサイズの制御によってバーストトラフィックを含む可能性の低い善良なユーザのフローに与えられる影響を抑制することができる。
【０１９９】
また、第１実施形態によれば、バッファ３２の入力レートは、複数のレートのトークンバケットを用いて監視される。バッファ３２には、複数のポリサ２０から複数のフローが流入し、バッファ３２に流入するフローは流動的である。そのため、例えば、各ポリサ２０から出力されるフローの入力レートを合計する等、直接バッファ３２の入力レートを取得することは難しい。トークンバケットを用いることで、より簡便な構成で、バッファ３２の入力レートを監視することができる。
【０２００】
また、第１実施形態によれば、バッファ３２の入力レートの増減傾向は、バッファ３２の読出し帯域と同じ周期で、バッファ３２に流入するデータ量とバッファ３２の読み出し帯域と同じ周期でバッファ３２から読み出されるデータ量との差分に基づいて推測される。上述のように、バッファの入力レートを直接取得することが難しいことから、バッファ３２の入力レートの増減傾向を直接入力レートから取得することも難しい。第１実施形態によれば、より簡便な構成で、バッファ３２の入力レートの増減傾向を監視することができる。
【０２０１】
また、第１実施形態によれば、ポリサ２０に、トークンバケット内のトークン蓄積量を監視して、ポリサ２０の対象のフローがバーストトラフィックのフローであるか否かの判定を行うトークン監視部２３が備えられる。これによって、より簡便な構成で、バーストトラフィックのフローを特定することができる。
【０２０２】
また、第１実施形態によれば、例えば、入力レートの監視結果が、バッファ３２の読出し帯域に対して８０％〜１００％である場合には全フローのバーストサイズが半減させられる。また、第１実施形態によれば、例えば、入力レートの監視結果が、バッファ３２の読出し帯域に対して１００％以上である場合には全フローのバーストサイズが０まで低減させられる。したがって、第１実施形態によれば、バッファ３２の読出し帯域に対する入力レートの割合に応じた低減幅の分だけバーストサイズが低減される。これによって、バーストサイズの低減によるポリサ２０におけるフレームの廃棄等のフローへの影響を、バッファ３２の入力レートに応じて、調整することができる。
【０２０３】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０２０４】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等
から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
【０２０５】
＜プロセッサ＞
上記いずれかの機能を実現させるプログラムをＣＰＵ（Central Processing Unit）に
実行させることができる。ＣＰＵは、ＭＰＵ（Microprocessor）、プロセッサとも呼ばれる。ＣＰＵは、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のＣＰＵがマルチコア構成を有していても良い。上記各部の少なくとも一部の処理は、ＣＰＵ以外のプロセッサ、例えば、ＤＳＰ、ＮＰＵ（Network Processing Unit）等の専用プロセッサで行われても良い。
【０２０６】
＜その他＞
上述の実施形態は、以下の付記を開示する。
（付記１）
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファと、
単位時間当たりに前記バッファへ流入する前記複数のフローのデータ量の総和である入力レートを監視し、前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う監視部と、
を備える情報処理装置。
（付記２）
前記監視部は、前記単位時間当たりに前記バッファから読み出し可能なデータ量である読出し帯域と前記入力レートと前記入力レートの増減傾向とに応じて、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記１に記載の情報処理装置。
（付記３）
前記監視部は、前記入力レートが、前記読出し帯域以下の第１の閾値より大きく、且つ、前記入力レートが増加傾向である場合に、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記２に記載の情報処理装置。
（付記４）
前記監視部は、前記入力レートが、前記第１の閾値よりも大きく且つ前記読出し帯域以下である第２の閾値以上であり、且つ、前記入力レートが増加傾向である場合に、前記複数のフローすべてについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記３に記載の情報処理装置。
（付記５）
前記監視部は、前記入力レートが前記第２の閾値以上であり、且つ、前記入力レートが維持傾向である場合に、前記複数のフローのうちバーストトラフィックと判定される第１の条件を満たすフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記４に記載の情報処理装置。
（付記６）
前記監視部は、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが増加傾向である場合に、前記複数のフローすべてについて前記バッファへのデータブロックの流入を停止する制御を行う、
付記２から５のいずれか一つに記載の情報処理装置。
（付記７）
前記監視部は、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが維持傾向である場合に、前記複数のフローのうちバーストトラフィックと判定される第１の条件を満たすフローについて前記バッファへのデータブロックの流入を停止し、前記複数のフローのうち前記第１の条件を満たしていないフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記２から６のいずれか一つに記載の情報処理装置。
（付記８）
前記監視部は、前記バッファ内に存在するデータ量を監視し、前記読出し帯域と前記入力レートと前記バッファ内に存在するデータ量とに応じて、前記バッファへのデータブロックの流入が抑制されている前記少なくとも１つのフローについて、前記バッファへのデータブロックの流入を促進する制御を行う、
付記２から７のいずれか一つに記載の情報処理装置。
（付記９）
前記監視部は、前記読出し帯域と、前記入力レートと、前記入力レートの増減傾向と、前記バッファ内に存在するデータ量と、の組み合わせに応じて、前記バッファへのデータブロックの流入が抑制されている前記少なくとも１つのフローについて、前記バッファへのデータブロックの流入を促進する制御を行う、
付記８に記載の情報処理装置。
（付記１０）
前記監視部は、前記入力レートが前記読出し帯域以下の第１の閾値より大きく且つ前記読出し帯域以下であり、且つ、前記入力レートが維持傾向であり、且つ、前記バッファ内にデータブロックが存在しない場合に、前記バッファへのデータブロックの流入が抑制されているフローのうち一部のフローについて、前記バッファへのデータブロックの流入の抑制を解除する制御を行う、
付記９に記載の情報処理装置。
（付記１１）
前記監視部は、前記入力レートが前記読出し帯域以下であり、且つ、前記入力レートが増加傾向でなく、且つ、前記バッファ内のデータ量が０より大きく且つ第３の閾値未満である場合に、前記バッファへのデータブロックの流入が抑制されているフローのうち前記バッファへのデータブロックの流入が停止されているフローについて、前記バッファへのデータブロックの流入の停止を解除して前記バッファへのデータブロックの流入を促進する制御を行う、
付記９又は１０に記載の情報処理装置。
（付記１２）
前記監視部は、前記入力レートが前記読出し帯域以下の第１の閾値以下であり、且つ、前記バッファ内のデータ量が０より大きく且つ第３の閾値未満である場合に、前記バッファへのデータブロックの流入が抑制されているフローのうち、前記バッファへのデータブロックの流入が停止されているフローについて、前記バッファへのデータブロックの流入の停止を解除して前記バッファへのデータブロックの流入を促進する制御を行い、それ以外のフローについて、前記バッファへのデータブロックの流入の抑制を解除する制御を行う、
付記１０から１２のいずれか一つに記載の情報処理装置。
（付記１３）
前記監視部は、前記入力レートが前記読出し帯域以下の第１の閾値より大きく、且つ、前記バッファ内にデータブロックが存在しない場合に、前記バッファへのデータブロック
の流入が抑制されているフローのすべてについて、前記バッファへのデータブロックの流入の抑制を解除する制御を行う、
付記９から１２のいずれか一つに記載の情報処理装置。
（付記１４）
前記監視部は、前記入力レートが前記第１の閾値よりも大きく且つ前記読出し帯域以下である第２の閾値以上であり、且つ、前記入力レートが減少傾向であり、且つ、前記バッファ内にデータブロックが存在しない場合に、前記バッファへのデータブロックの流入が抑制されているフローのすべてについて、前記バッファへのデータブロックの流入の抑制を解除する制御を行う、
付記１３に記載の情報処理装置。
（付記１５）
前記第１の条件は、第１の時間内のトークンバケットに蓄積可能なトークン量の上限値を超過したトークン量、第２の時間内に設定帯域を超過して廃棄されたデータ量、第３の時間内にバーストが発生した回数、及び、トークンバケットの前記上限値に対する蓄積されているトークンの量、の少なくとも１つに基づく、
付記５又は７に記載の情報処理装置。
（付記１６）
前記読出し帯域に基づいて決定される入力レートの閾値に応じた周期で前記入力レートの閾値に応じた量のトークンが追加されるトークンバケットを少なくとも１つ用いて前記入力レートが前記入力レートの閾値に達しているか否かを監視する入力レート監視部と、
前記読出し帯域に応じた周期で前記バッファに流入したデータ量と前記読出し帯域に応じた周期で前記バッファから読み出されるデータ量との差分に基づいて、前記入力レートの増減傾向を推測する入力レート増減監視部と、
をさらに備える付記２から１５のいずれか一つに記載の情報処理装置。
（付記１７）
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファを備える情報処理装置が、
単位時間当たりに前記バッファへ流入する前記複数のフローのデータ量の総和である入力レートを監視し、
前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
情報処理方法。
（付記１８）
コンピュータに、
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファへ単位時間当たりに流入する前記複数のフローのデータ量の総和である入力レートを監視させ、
前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも１つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行わせる、
ための情報処理プログラム。
（付記１９）
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサと、
前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファと、
単位時間当たりに前記バッファへ流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、前記複数のポリサのそれぞれについて備えられる複数の制御部と、
を備える情報処理装置。
（付記２０）
前記複数の制御部のそれぞれは、前記入力レートと、前記入力レートの増減傾向と、前記単位時間当たりに前記バッファから読み出し可能なデータ量である読出し帯域と、前記バーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、
付記１９に記載の情報処理装置。
（付記２１）
前記複数の制御部のそれぞれは、前記入力レートが、前記読出し帯域以下の第１の閾値より大きい場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
付記２０に記載の情報処理装置。
（付記２２）
前記複数の制御部のそれぞれは、前記入力レートが、前記第１の閾値よりも大きく且つ前記読出し帯域以下である第２の閾値以上であり、且つ、前記入力レートが増加傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
付記２１に記載の情報処理装置。
（付記２３）
前記複数の制御部のそれぞれは、前記入力レートが前記第２の閾値以上であり、且つ、前記入力レートが維持傾向であり、且つ、バーストが発生していると判定される場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
付記２２に記載の情報処理装置。
（付記２４）
前記複数の制御部のそれぞれは、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが増加傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を０に低減させる、
付記１９から２３のいずれか一つに記載の情報処理装置。
（付記２５）
前記複数の制御部のそれぞれは、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが維持傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
付記２０から２４のいずれか一つに記載の情報処理装置。
（付記２６）
前記複数の制御部のそれぞれは、前記読出し帯域と前記入力レートと前記バッファ内に存在するデータ量とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで増加させる、
付記２０から２５のいずれか一つに記載の情報処理装置。
（付記２７）
前記複数の制御部のそれぞれは、前記トークンバケット内に蓄積されているトークン量を監視し、前記トークンバケットに蓄積されているトークン量に基づいて、バーストが発生していることを判定する、
付記１９から２６のいずれか一つに記載の情報処理装置。
（付記２８）
前記複数の制御部のそれぞれは、所定時間内における、前記トークンバケットに所定の周期で追加されるトークン量のうち前記トークンバケットの前記蓄積可能なトークンの最大値を超過したトークン量、前記所定時間内における、前記トークンバケットにトークンが蓄積されていないことによって廃棄されたデータ量又はデータが廃棄された回数、及び、前記トークンバケットの前記蓄積可能なトークンの最大値に対する蓄積されているトークン量の割合、のうち少なくとも１つに基づいて、バーストが発生していることを判定する、
付記２７に記載の情報処理装置。
（付記２９）
前記複数の制御部のそれぞれは、前記入力レートと前記バーストの発生状況とに応じた低減幅の分だけ前記トークンバケットの前記蓄積可能なトークンの最大値を低減させる、付記１９から２８のいずれか一つに記載の情報処理装置。
（付記３０）
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサのそれぞれについて、前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファへ単位時間当たりに流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、
情報処理方法。
（付記３１）
コンピュータに、
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサのそれぞれについて、前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファへ単位時間当たりに流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御させる、
ための情報処理プログラム。
【符号の説明】
【０２０７】
１        スイッチ
２        入力ＱｏＳ部
３        出力ＱｏＳ部
２０      ポリサ
２１      バーストサイズ設定部
２２      ＰＩＲ設定部
２３      トークン監視部
３０      シェーパ
３１      バッファ監視部
３２      バッファ
３３      出力制御部
３４      バッファ蓄積予測部
３５      入力レート監視部
３６      入力レート増減監視部
【図１Ａ】
2019041289.tif 000006
【図１Ｂ】
2019041289.tif 000007
【図２】
2019041289.tif 000008
【図３】
2019041289.tif 000009
【図４】
2019041289.tif 000010
【図５】
2019041289.tif 000011
【図６】
2019041289.tif 000012
【図７】
2019041289.tif 000013
【図８】
2019041289.tif 000014
【図９】
2019041289.tif 000015
【図１０】
2019041289.tif 000016
【図１１】
2019041289.tif 000017
【図１２】
2019041289.tif 000018
【図１３Ａ】
2019041289.tif 000019
【図１３Ｂ】
2019041289.tif 000020
【図１３Ｃ】
2019041289.tif 000021
【図１３Ｄ】
2019041289.tif 000022
【図１４】
2019041289.tif 000023
【図１５】
2019041289.tif 000024
【図１６】
2019041289.tif 000025
【図１７】
2019041289.tif 000026