JP2019041289A - 情報処理装置、情報処理方法、及び、情報処理プログラム - Google Patents

情報処理装置、情報処理方法、及び、情報処理プログラム Download PDF

Info

Publication number
JP2019041289A
JP2019041289A JP2017162753A JP2017162753A JP2019041289A JP 2019041289 A JP2019041289 A JP 2019041289A JP 2017162753 A JP2017162753 A JP 2017162753A JP 2017162753 A JP2017162753 A JP 2017162753A JP 2019041289 A JP2019041289 A JP 2019041289A
Authority
JP
Japan
Prior art keywords
buffer
input rate
amount
flow
token
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017162753A
Other languages
English (en)
Inventor
野口 勉
Tsutomu Noguchi
勉 野口
敏広 野口
Toshihiro Noguchi
敏広 野口
喜田 敏実
Toshizane Kida
敏実 喜田
福田 直樹
Naoki Fukuda
直樹 福田
直樹 河崎
Naoki Kawasaki
直樹 河崎
昭和 前原
Akikazu Maehara
昭和 前原
正道 笠
Masamichi Ryu
正道 笠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017162753A priority Critical patent/JP2019041289A/ja
Priority to US16/100,946 priority patent/US20190065425A1/en
Publication of JP2019041289A publication Critical patent/JP2019041289A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

【課題】バッファにおけるデータの廃棄を抑制する。【解決手段】情報処理装置は、複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファと、単位時間当たりにバッファへ流入する複数のフローのデータ量の総和である入力レートを監視し、入力レートの監視結果に応じて、複数のフローのうち少なくとも1つのフローについてバッファへのデータブロックの流入を抑制する制御を行う監視部と、を備える。【選択図】図2

Description

本発明は、情報処理装置、情報処理方法、及び、情報処理プログラムに関する。
スイッチ、ルータ等のネットワーク装置では、例えば、装置に入力されたフレームは、一旦バッファに格納され、バッファに格納された順で読み出される。これは、例えば、ネットワーク装置の処理能力に上限があったり、ネットワークの帯域に制限があったりするためである。例えば、バッファのサイズはネットワーク装置の処理能力や帯域に応じて予め決められている。バッファに格納可能なデータ量を超えて入力されるフレームは、例えば、ネットワーク装置の処理能力を超えているため、廃棄される。
特開2006−173726号公報 特開2004−104192号公報 特開2010−068052号公報
突発的に大量のデータが流れることは、例えば、バースト、と称される。バーストが発生した場合には、流入する大量のフレームによって、バッファが満杯になり、フレームの廃棄が発生する可能性が高い。また、バーストが発生しているフローによって、バッファを共有する他のフローのフレームが廃棄される可能性もあり、他のフローに影響が及ぼされることもある。フローとは、例えば、共通のフロー識別情報を有する複数のフレームの流れのことである。
1つの側面では、本発明は、例えばバーストによる、バッファにおけるデータの廃棄を抑制可能な情報処理装置、情報処理方法、及び、情報処理プログラムを提供することを目的とする。
本発明の態様の一つは、複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファと、監視部とを備える情報処理装置である。監視部は、単位時間当たりにバッファへ流入する複数のフローのデータ量の総和である入力レートを監視し、入力レートの監視結果に応じて、複数のフローのうち少なくとも1つのフローについてバッファへのデータブロックの流入を抑制する制御を行う。
本発明の他の態様の一つは、複数のポリサと、複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファと、複数のポリサそれぞれについて備えられる制御部とを備える情報処理装置である。各ポリサは、蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う。各制御部は、単位時間当たりにバッファへ流入するデータ量である入力レートとバーストの発生状況とに応じて、トークンバケットの蓄積可能なトークンの最大値を制御する。
ネットワーク装置のバッファにおけるデータの廃棄を抑制することができる。
図1Aは、バッファへの入力レートと、バッファ内のフレームの蓄積量と、の関係の一例を示す図である。 図1Bは、図1Aに示されるバッファへ入力されるフローのうちの1つのフローのポリサへの入力レートと、当該フローのトークンバケット内のトークン蓄積量と、バッファ内のフレームの蓄積量と、の関係の一例を示す図である。 図2は、第1実施形態に係るスイッチの機能構成の一例を示す図である。 図3は、ポリサのトークンバケット内のトークン蓄積量の変化の一例を示す図である。 図4は、それぞれ、バーストサイズの制御対象となるフローのトラフィックの一例を示す図である。 図5は、それぞれ、バーストサイズの制御対象となるフローのトラフィックの一例を示す図である。 図6は、それぞれ、バーストサイズの制御対象となるフローのトラフィックの一例を示す図である。 図7は、第1実施形態に係る入力レート監視部の入力レートの監視の一例を示す図である。 図8は、第1実施形態に係る入力レート増減監視部の入力レートの傾きの監視の一例を示す図である。 図9は、第1実施形態に係るバッファ監視部のバーストサイズの制御内容の一例を示す表である。 図10は、トークン監視部のフレーム受信時の処理のフローチャートの一例である。 図11は、トークン監視部の制御対象フローの判定処理のフローチャートの一例である。 図12は、入力レート増減監視部の処理のフローチャートの一例である。 図13Aは、バッファ監視部の処理のフローチャートの一例である。 図13Bは、バッファ監視部の処理のフローチャートの一例である。 図13Cは、バッファ監視部の処理のフローチャートの一例である。 図13Dは、バッファ監視部の処理のフローチャートの一例である。 図14は、具体例におけるフローA、フローB、フローCのそれぞれのレートと、合計のレートとのグラフの一例である。 図15は、バッファに対して方法1による制御が行われた場合の、フローA、フローB、フローCのそれぞれの入力レートと、合計の入力レートとのグラフの一例である。 図16は、バッファに対して第1実施形態に係るバーストサイズの制御が行われた場合の、フローA、フローB、フローCのそれぞれの入力レートと、合計の入力レートとのグラフの一例である。 図17は、第1実施形態によるバーストサイズの制御と方法1によるバーストサイズの制御とのバッファの使用量のグラフの一例である。
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<第1実施形態>
図1Aは、バッファへの入力レートと、バッファ内のフレームの蓄積量と、の関係の一例を示す図である。図1Aの上部には、バッファのフレームの蓄積量の変遷の一例を示す図が示されている。図1Aの下部には、バッファへの入力レートの変化の一例を示すグラフが示されている。
バッファでは、例えば、先入れ先出し法でフレームが出し入れされる。図1Aに示されるバッファには、複数のフローのフレームが入力されることとする。したがって、バッファへの入力レートは、複数のフローのフレームを合計した入力レートである。また、単位時間当たりにバッファへ入力されるトラフィック量は、内部バスの処理帯域を上限とする。フレームは、「データブロック」の一例である。「データブロック」の他の例には、パケット、データグラム等がある。
なお、第1実施形態において、単位時間当たりのトラフィック量は、単位としてbps(bits per second)で表される物理量であることとする。ただし、単位時間当たりのト
ラフィック量は、これに限定されない。また、単位時間当たりにバッファへ入力されるトラフィック量は、単に、入力レートとも称される。また、バッファからフレームが読み出される帯域は、バッファの読出し帯域、又は、バッファの処理能力、とも称される。
図1Aの(A)に示される、バッファへの入力レートがバッファの読出し帯域を下回っている間は、バッファに入力されたフレームはすぐにバッファから出力されるので、バッファに蓄積されるフレームの量は0である。図1Aの(B)の時点で、トラフィックが増え、バッファへの入力レートがバッファの読出し帯域を超え、バッファ内にフレームが蓄積され始める。図1Aの(B)の時点以降、バッファへの入力レートがバッファの読出し帯域を超える状態が続き、バッファに蓄積されるフレームが増えて、図1Aの(D)の時点でバッファが満杯となる。バッファが満杯になると、以降、バッファに到着するフレームは廃棄される。バッファが満杯になり、到着フレームが廃棄されることを、バッファ溢れ、とも称する。
バッファにおけるフレームの廃棄を抑制する方法の一つとして、例えば、バッファに蓄積されているフレーム量が閾値に達すると、トラフィック量の多いフローのポリサのバーストサイズを低減させる方法がある。当該方法を、以下、方法1と称する。
ポリサは、例えば、バッファの前段で行われる、トラフィックの流入量を制御するポリシングを行う機能である。ポリサのバーストサイズとは、ポリサが許容可能なトラフィックの最大量のことである。
ポリシングでは、例えば、トークンバケット方式で、トークンバケットに蓄積されているトークンの分だけフレームを出力することができる。ポリシングにおいて、トークンバケットにトークンが蓄積されていない場合には、例えば、フレームは廃棄される。
トークンバケットには、所定の周期で所定量のトークンが追加される。トークンバケットには、蓄積可能なトークン量の上限値が設定されており、上限値を超えてトークンを保持することはできない。以下、トークンバケットに蓄積可能なトークン量の上限値を、トークンの上限値、と称する。
トークンバケットが満杯の場合には、ポリサはトークンの上限値の分だけトラフィックを出力することができる。したがって、ポリサのバーストサイズは、トークンの上限値と同義である。ポリサのバーストサイズ、トークンの上限値は、それぞれ、「蓄積可能なトークンの最大値」の一例である。
例えば、図1Aに示される例において、方法1が実施される場合、例えば、図1Aの(C)の時点で、バッファのフレームの蓄積量が閾値に達し、トラフィック量の多いフローのポリサのバーストサイズが低減される。トラフィック量の多いフローのポリサのバーストサイズが低減されることによって、ポリサを通過するトラフィック量が小さくなり、バ
ッファに流入するトラフィック量を低減させることができる。その結果、図1Aに示されるようにバッファへの入力レートも低下していく。
図1Bは、図1Aに示されるバッファへ入力されるフローのうちの1つのフローのポリサへの入力レートと、当該フローのトークンバケット内のトークン蓄積量と、バッファ内のフレームの蓄積量と、の関係の一例を示す図である。図1Bの上部には、図1Aと同一のバッファのフレームの蓄積量の変遷の一例を示す図が示されている。したがって、図1B中の(A)〜(D)の時点は、それぞれ、図1Aに示される(A)〜(D)の時点と同一である。
図1Bの中央部には、バッファへ入力されるフローであって、バーストトラフィックを含むフローのポリサへの入力レートの変化の一例を示すグラフが示されている。バーストトラフィックを含むフローを、以下、バーストフローと称する。図1Bの下部には、バーストフローのポリサのトークン蓄積量の変化の一例を示すグラフが示されている。
バーストフローの入力レートがポリサの設定帯域以下である間は、ポリサのトークン蓄積量はトークンの上限値付近を推移する。図1Bの(B)の時点で、バーストトラフィックが発生し、バーストフローの入力レートがポリサの設定帯域を超え、ポリサのトークンが消費されはじめ、ポリサのトークン蓄積量が減少する。一方、バッファでは、フレームの蓄積が始まり、フレームの蓄積量が増加する。図1Bの(C)の時点では、バーストフローのポリサのトークン蓄積量は0である。
また、ポリサのトークン蓄積量が0になった以降に、ポリサの設定帯域を超えて入力されるバーストトラフィックは、設定帯域の超過分がポリサにて廃棄される。
例えば、図1Bに示される例において、方法1が実施される場合には、例えば、図1Bの(C)の時点で、バッファ内のフレームの蓄積量が閾値に達し、バーストフローのポリサのバーストサイズが低減される。しかしながら、図1Bの(C)の時点では、バーストトラフィックによってバーストフローのポリサのトークン蓄積量は0で推移している。そのため、図1Bの(C)の時点でバーストフローのバーストサイズ(トークンの上限値)が低減されたとしても、バーストを抑制する効果が薄くなる可能性が高い。
また、図1Bの(C)よりも前に、ポリサを通過しているバーストフローのバーストトラフィックが存在しており、当該ポリサを通過したバーストトラフィックがバッファが満杯になることの一因にもなっている。
したがって、方法1のように、バッファ内のフレームの蓄積量が閾値に達することを検出してから、ポリサのバーストサイズを低減させるのでは手遅れであり、バッファ溢れが発生する可能性が高い。
第1実施形態では、ポリサのバーストサイズの制御タイミングを方法1よりも早め、例えば、バッファ内のフレームの蓄積が開始されるよりも前にポリサのバーストサイズが制御されるようにする。なお、第1実施形態において、蓄積とは、バッファの処理能力を超えてバッファにトラフィックが入力する状態が所定時間継続し、バッファ内にデータが存在する状態が継続することを示す。
例えば、図1Aに示される例では、(B)の時点ではバッファの蓄積が開始されている。したがって、第1実施形態では、例えば、図1A中の(B)より前の入力レートの変化の特徴を検出することで、バッファの蓄積の開始を予測する。例えば、図1A中の(B)のバッファの蓄積が開始される前の入力レートの変化の特徴として、(特徴1)バッファ
の読出し帯域に対する入力レートの割合が高いこと、(特徴2)入力レートが増加傾向であること、の2点があげられる。
したがって、第1実施形態では、バッファの入力レートを監視し、入力レートが上記特徴1及び特徴2を満たすことを検出したことを契機として、バーストトラフィック量の多いフローのポリサのバーストサイズを低減させる。
これによって、バッファ内のフレームの蓄積が始まる前に、バーストトラフィック量の多いフローのポリサのバーストサイズを低減させることができる。これによって、より早い段階でバッファの入力レートの上昇を抑えることができ、バッファ溢れを抑制することができる。ポリサのバーストサイズを低減させることは、「バッファへのデータブロックの流入を抑制する制御」の一例である。
フローは、例えば、共通のフロー識別情報を有する複数のフレームの流れである。フロー識別情報として、例えば、送信元IP(Internet Protocol)アドレス、宛先IPアド
レス、宛先ポート番号、送信元ポート番号のうちのいずれか又は組合せが用いられる。第1実施形態では、フロー識別情報に用いられる情報は、特定のものに限定されない。
図2は、第1実施形態に係るスイッチ1の機能構成の一例を示す図である。スイッチ1は、例えば、レイヤ2スイッチである。スイッチ1は、シャーシ型のスイッチであっても、ピザボックス型のスイッチであってもよい。
スイッチ1がシャーシ型である場合には、スイッチ1は、例えば、複数のポートを備える複数のインタフェースカードと、複数のインタフェースカード間を中継するスイッチカードと、制御を行う制御カードとを備える(図示略)。スイッチ1がピザボックス型である場合には、スイッチ1は、複数のポートと、ポート間を中継するスイッチ部と、制御を行う制御部とを備える(図示略)。
スイッチ1は、「情報処理装置」の一例である。ただし、「情報処理装置」は、レイヤ2スイッチに限られず、レイヤ3スイッチ、ルータ等であってもよい。
スイッチ1は、機能構成要素として、入力QoS(Quality of Service)部2、出力QoS部3を備える。入力QoS部2は、スイッチ1の入力側のQoSの処理を行う。出力QoS部3は、スイッチ1の出力側のQoSの処理を行う。
入力QoS部2、出力QoS部3は、それぞれ、例えば、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)である。または、入力QoS部2、出力QoS部3は、それぞ
れ、例えば、ネットワークプロセッサが所定のプログラムを実行することによって達成される機能であってもよい。
例えば、スイッチ1がシャーシ型のスイッチである場合には、1つのインタフェースカードにつき1組の入力QoS部2と出力QoS部3とが搭載される。例えば、スイッチ1がピザボックス型のスイッチである場合には、入力QoS部2はポートの入力側に、出力QoS部3はポートの出力側に備えられる。
入力QoS部2は、インタフェースカード又はスイッチ1に流入するフローと同じ数のポリサ20を含む。ただし、便宜上、図2では、ポリサ20は1つのみ示されている。ポリサ20は、対象のフローについて、ポリシングを行う。ポリサ20から出力されたフレームは、スイッチ1内部のスイッチングカード又はスイッチング部によって、フレームの
出力ポート側に備えられるシェーパ30に入力される。
ポリサ20におけるポリシングでは、例えば、以下の処理が行われる。例えば、トークンバケット(図示せず)にトークンがある場合には到着したフレームは出力される。例えば、トークンバケットにトークンが無い場合には到着フレームは廃棄する処理が行われる。また、ポリシングでは、出力したフレームに相当する分のトークンがトークンバケットから除かれる。また、ポリシングでは、所定の周期でトークンバケットに所定量のトークンが追加される。
ポリサ20は、バーストサイズ設定部21、PIR(Peak Information Rate)設定部
22、トークン監視部23を含む。バーストサイズ設定部21は、後述のバッファ監視部31からの指示に従って、ポリサ20のバーストサイズ、すなわち、トークンの上限値を設定する。PIR設定部22は、対象のフローの最大情報速度を設定する。バーストサイズ設定部21は、「制御部」の一例である。
トークン監視部23は、トークンバケット内のトークン蓄積量を監視し、対象のフローがバーストサイズの制御対象のフローであるか否かを判定する。なお、バーストサイズの制御対象のフローとは、第1実施形態では、優先的にバーストサイズの低減が行われるフローを示す。バーストサイズの制御対象のフローは、「バーストトラフィックと判定される第1の条件を満たすフロー」の一例である。
トークン監視部23は、対象のフローがバーストサイズの制御対象であると判定した場合には、後述の各シェーパ30のバッファ監視部31に対象のフローの情報を通知する。トークン監視部23の、対象のフローがバーストサイズの制御対象となるフローであるか否かを判定する処理の詳細については後述される。バーストサイズの制御対象であるか否かは、「バーストの発生状況」の一例である。
出力QoS部3は、当該出力QoS部3が搭載されるインタフェースカードから又はスイッチ1から流出するフローと同じ数のシェーパ30を含む。ただし、便宜上、図2では、シェーパ30は1つのみ示されている。シェーパ30は、対象のフローについて、シェーピングを行う。
シェーピングでは、例えば、以下の処理が行われる。例えば、シェーパ30はトークンバケット方式でフレームを出力する。具体的には、トークンバケットにトークンがある場合には到着したフレームは出力される。また、フレームの出力の際に、出力されるフレームに相当する量のトークンがトークンバケットから削除される。例えば、シェーピングでは、トークンバケットにトークンが無い場合には到着フレームはトークンが追加されるまで待機させられる。シェーピングにおけるトークンの追加、削除等はポリサと同様である。
シェーパ30は、バッファ監視部31、バッファ32、出力制御部33を含む。バッファ32は、複数のポリサ20から出力された複数のフローのフレームを一時的に蓄積する。出力制御部33は、シェーパ30用のトークンバケットを用いて、バッファの読出し帯域でバッファ32からフレームを読み出して出力する。バッファ32は、「複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファ」、「複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファ」の一例である。
バッファ32はバッファ蓄積予測部34を備える。バッファ蓄積予測部34は、バッファ32内のフレームの蓄積の開始の予測に用いられる情報を収集する。バッファ蓄積予測
部34は、入力レート監視部35と入力レート増減監視部36とを含む。入力レート監視部35は、単位時間当たりのバッファ32へ流入するトラフィック量、すなわち、バッファ32の入力レートを監視する。入力レート監視部35の処理の詳細は、後述される。
入力レート増減監視部36は、単位時間当たりのバッファ32へ流入するトラフィック量の増減傾向、すなわち、バッファ32の入力レートの傾きを監視する。入力レート増減監視部36の処理の詳細は後述される。バッファ32の入力レートの傾きは、「入力レートの増減傾向」の一例である。
バッファ蓄積予測部34は、所定の周期で、入力レート監視部35からバッファ32の入力レートの監視結果と、入力レート増減監視部36からバッファ32の入力レートの傾きの監視結果と、を取得し、バッファ監視部31に通知する。バッファ蓄積予測部34がバッファ監視部31にバッファ32の入力レートの監視結果と入力レートの傾きの監視結果とを通知する周期は、例えば、1マイクロ秒単位で設定される。
また、バッファ蓄積予測部34は、バッファ32内のフレームの蓄積量を監視する。バッファ32内のフレームの蓄積量を、以下、バッファ32の使用量、又は、バッファ使用量、と称する。バッファ蓄積予測部34は、例えば、レジスタ等に、バーストサイズが低減されたフローのポリサ20のバーストサイズを初期値に戻すことを判定するための、バーストサイズ回復閾値を保持する。バッファ蓄積予測部34は、所定の周期で、バッファ32の使用量とバーストサイズ回復閾値との比較結果をバッファ監視部31に通知する。バーストサイズ回復閾値は、「第3の閾値」の一例である。
バッファ32の使用量とバーストサイズ回復閾値との比較結果の通知周期は、例えば、1マイクロ秒単位で設定される。バッファ32の使用量とバーストサイズ回復閾値との比較結果の通知は、例えば、バッファ32の入力レートの情報と入力レートの傾きとの通知とともに行われてもよいし、異なるタイミングで行われてもよい。
バッファ監視部31は、所定の周期で、バッファ蓄積予測部34からバッファ32の入力レートの監視結果とバッファ32の入力レートの傾きの監視結果との通知を受ける。バッファ監視部31は、バッファ32の入力レートの監視結果と入力レートの傾きの監視結果とから、バッファ32内のフレームの蓄積の開始を予測する。
また、バッファ監視部31は、各ポリサ20のトークン監視部23から、バーストサイズの制御対象となるフローの情報の通知を受ける。バッファ監視部31は、バッファ32のフレームの蓄積の開始を予測した場合には、バッファ32に流入するフローのうち、各ポリサ20のトークン監視部23から通知されたバーストサイズの制御対象となるフローのバーストサイズを低減させる。
また、バッファ監視部31は、所定の周期で、バッファ蓄積予測部34から、バッファ32の使用量の通知を受ける。バッファ監視部31は、バーストサイズを低減させているフローのバーストサイズを、バッファ32の入力レートと入力レートの傾きとバッファ使用量とに基づいて、所定値まで戻す制御を行う。バッファ監視部31の処理の詳細は後述される。バッファ監視部31は、「監視部」の一例である。
<トークン監視部の処理の詳細>
図3は、ポリサ20のトークンバケット内のトークン蓄積量の変化の一例を示す図である。トークンバケットには所定の周期で所定量のトークンが追加される。トークンバケットにトークンが追加される周期を、以下、トークン追加周期と称する。トークン追加周期は、例えば、1ミリ秒の単位で設定されている。
図3中の(1)のように、トークンバケット内のトークン蓄積量がトークンの上限値に達している場合には、トークン追加周期でトークンバケットに加算されるトークンは廃棄される。以下、トークン加算時にトークンの上限値を超えてトークンバケットに加算されるトークン量を、(1)トークン超過量と称する。
トークンバケット内のトークンは、ポリサ20からフレームが出力されると出力されたフレームの分だけトークンバケットから削除される。図3中の(2)のように、トークンバケット内のトークン蓄積量が0である場合には、ポリサ20に流入するフレームは廃棄される。以下、トークンバケット内のトークン不足によって廃棄されるフレームのデータ量を、(2)データ廃棄量と称する。(2)データ廃棄量は、例えば、バイト単位とする。ただし、これに限られず、(2)データ廃棄量は、例えば、ビット単位であってもよい。
トークン監視部23は、上述のようなトークンバケット内のトークン蓄積量の変化を監視し、トークン監視部23を備えるポリサ20に流入する対象フローがバーストサイズの制御対象となるか否かの判定を行う。具体的には、例えば、以下の通りである。
(制御対象フローの判定方法1)
トークン監視部23は、トークン追加周期毎に(2)データ廃棄量−(1)トークン超過量を求め、直近の過去n回分(n:>0の整数)の計算結果の移動平均を算出する。バーストが発生している場合には、(2)データ廃棄量は大きくなり、(1)トークン超過量は限りなく0に近い値になる。計算結果の移動平均の値が閾値を超えている場合に、トークン監視部23は、対象のフローがバーストサイズの制御対象となることを判定する。
(制御対象のフローの判定方法2)
トークン監視部23は、トークン追加周期毎に(2)データ廃棄量の移動平均を求め、直近の過去n回分(n:>0の整数)の計算結果の移動平均を算出する。バーストが発生している場合には、(2)データ廃棄量は大きくなる。(2)データ廃棄量の移動平均の値が閾値を超えている場合に、トークン監視部23は、対象のフローがバーストサイズの制御対象となることを判定する。
(制御対象のフローの判定方法3)
トークン監視部23は、トークン追加周期におけるフレーム廃棄の発生回数を数え、フレーム廃棄の発生回数を、例えば、1秒ごとに加算し、直近の過去n秒分の移動平均を算出する。フレーム廃棄の発生回数は、例えば、トークン追加周期において、(2)データ廃棄量が0より大きい場合に1回と計数される。バーストが発生している場合には、例えば、1秒間におけるフレーム廃棄の発生回数は多くなる。フレーム廃棄の発生回数の移動平均が閾値を超えている場合に、トークン監視部23は、対象のフローがバーストサイズの制御対象となることを判定する。
なお、トークン追加周期におけるフレーム廃棄の発生回数を利用して、所定時間内におけるバースト期間を算出することもできる。例えば、1秒間におけるフレーム廃棄の発生回数にトークン追加周期を乗じることで、1秒間におけるバースト期間が得られる。所定時間におけるバースト期間が閾値を超えている場合に、トークン監視部23は、対象のフローがバーストサイズの制御対象となることを判定するようにしてもよい。
(制御対象のフローの判定方法4)
トークン監視部23は、トークンの上限値に対するトークン蓄積量の割合をバースト消費率として算出し、直近の過去所定期間分のバースト消費率の移動平均が閾値より低い場
合に、対象のフローをバーストサイズの制御対象として判定する。バーストが発生している場合には、トークンが消費され、バースト消費率は0に近づく。
なお、対象フローがバーストサイズの制御対象のフローであるか否かの判定には、上記制御対象のフローの判定方法1〜4のいずれか1つを用いてもよく、又は、複数を組み合わせて用いてもよい。また、対象フローがバーストサイズの制御対象のフローであるか否かの判定の方法は、上記制御対象のフローの判定方法1〜4に限定されない。上記制御対象のフローの判定方法1〜4それぞれにおける制御対象フローと判定される条件は、「バーストトラフィックと判定される第1の条件」の一例である。
なお、上記制御対象のフローの判定方法1〜3のそれぞれにおける移動平均は、例えば、単純移動平均、加重移動平均等のいずれかに限定されず、いずれの移動平均であってもよい。
図4、図5、及び、図6は、それぞれ、バーストサイズの制御対象となるフローのトラフィックの一例を示す図である。図4〜図6の上段のグラフは、バーストサイズの制御対象となるフローの入力レートの変化の一例を示す。図4〜図6の下段のグラフは、上段のグラフのトラフィックがポリサ20に入力された場合のトークンバケット内のトークン蓄積量の変化の一例を示す。
図4では、入力レートが常にポリサ20の設定帯域を超過しているフローのトラフィックの例が示されている。ポリサ20の設定帯域を超過して入力されるトラフィックは廃棄される。ポリサ20の設定帯域は、例えば、CIR(Committed information rate)である。
常にポリサ20の設定帯域を超過するトラフィックがポリサ20に流入する場合には、図4の下段のグラフのように、ポリサ20のトークンバケットのトークン蓄積量は0の付近で推移する。すなわち、トークン追加周期においてトークンバケットにトークンが追加されてもすぐに消費され、トークンが不足し、データ廃棄が発生する。
そのため、図4で示されるような入力レートが常にポリサ20の設定帯域を超過しているフローがポリサ20に流入する場合には、例えば、制御対象のフローの判定方法3によって、対象フローがバーストサイズの制御対象であるか否かの判定が可能となる。制御対象のフローの判定方法3は、トークン追加周期におけるフレームの廃棄の発生回数を用いる方法である。
例えば、制御対象のフローの判定方法3において、トークン追加周期におけるフレームの廃棄の発生回数を1秒ごとに加算し、直近の過去1分の移動平均が求められる場合には、フレームの廃棄の発生回数の移動平均は、以下の数式1で示される。また、この場合の対象フローが制御対象であるか否かを判定するためのフレームの廃棄の発生回数の移動平均の閾値は、例えば、1秒間におけるトークンの追加の回数(=1秒/トークン追加周期)×α(0<α≦1)である。
Figure 2019041289
図5では、低頻度で入力レートがポリサ20の設定帯域を下回るフローのトラフィックの例が示されている。低頻度でポリサ20の設定帯域を下回る入力レートでトラフィックがポリサ20に流入する場合には、図5の下段のグラフに示されるように、当該フローの入力レートが設定帯域を下回っている間はポリサ20のトークンバケットにはトークンが蓄積されるものの、トークンバケットのトークン蓄積量が0の付近で推移する割合が高くなる。
そのため、図5で示されるような低頻度で入力レートがポリサ20の設定帯域を下回るフローがポリサ20に流入する場合には、例えば、制御対象のフローの判定方法4によって、対象フローがバーストサイズの制御対象であるか否かの判定が可能となる。制御対象のフローの判定方法4は、トークンの上限値に対するトークン蓄積量の割合であるバースト消費率を用いる方法である。
例えば、制御対象のフローの判定方法4において、バースト消費率の移動平均は、以下の数式2で示される。また、この場合の対象フローが制御対象であるか否かを判定するためのバースト消費率の移動平均の閾値は、0≦バースト消費率≦1であるので、例えば、0.1以下等の0に近い値に設定される。
Figure 2019041289
図6では、入力レートがポリサ20の設定帯域を下回る場合とポリサ20の設定帯域を超過する場合とが交互に発生するフローのトラフィックの例が示されている。入力レートがポリサ20の設定帯域を下回る場合とポリサ20の設定帯域を超過する場合とが交互に発生するフローは、例えば、TCP(Transmission Control Protocol)のフローに多い
。設定帯域を下回る場合との設定帯域を超過する場合とが交互に発生するトラフィックがポリサ20に流入する場合には、図6の下段のグラフに示されるように、トークン蓄積量も交互に0と上限値とになる。
そのため、図6で示されるような入力レートが設定帯域を下回る場合との設定帯域を超過する場合とが交互に発生するトラフィックがポリサ20に流入する場合には、例えば、
制御対象のフローの判定方法4によって、対象フローがバーストサイズの制御対象であるか否かの判定が可能となる。制御対象のフローの判定方法4は、トークンの上限値に対するトークン蓄積量の割合であるバースト消費率を用いる方法である。この場合の対象フローが制御対象であるか否かを判定するためのバースト消費率の移動平均の閾値は、0≦バースト消費率≦1であるので、例えば、0.3〜0.8等の範囲で設定される。
なお、図4〜図6の説明において、制御対象のフローの判定方法3又は4が採用されることが説明されたが、採用される制御対象のフローの判定方法は制御対象のフローの判定方法3又は4に限定されない。例えば、図4〜図6のそれぞれのようなトラフィックがポリサ20に流入する場合には、制御対象のフローの判定方法1、2のいずれかが用いられてもよい。
<入力レート監視部の処理の詳細>
図7は、第1実施形態に係る入力レート監視部35の入力レートの監視方法の一例を示す図である。バッファ32には複数のポリサ20から複数のフローのフレームが入力される。入力レート監視部35は、バッファ32に入力される全てのフローの合計の入力レートを監視する。
入力レート監視部35の入力レートの監視方法は、例えば、以下の通りである。入力レート監視部35は、バッファ32に流入する全てのフローの合計トラフィックの入力レートを監視するために、例えば、バッファ32の前段に計測対象の複数レート分のトークンバケットを備える。例えば、バッファ32の入力レートが、バッファ32の読出し帯域に対して、50%、80%、100%それぞれに達したことを検出したい場合には、入力レート監視部35は、50%、80%、100%それぞれのレートの検出用の3つのトークンバケットを備える。これらのトークンバケットには、それぞれ検出したいレートに応じて、トークン追加周期及びトークンの追加量が設定される。
入力レート監視部35は、各レートの検出用のトークンバケットが空になるか否かによって、バッファ32への入力レートを監視する。例えば、50%、80%、100%のいずれのレートの検出用のトークンバケットも空でない場合には、入力レート監視部35は、バッファ32の入力レートがバッファ32の読出し帯域に対して50%以下であることを検出する。例えば、50%のレートの検出用のトークンバケットが空であり、その他のトークンバケットは空でない場合には、入力レート監視部35は、バッファ32の入力レートがバッファ32の読出し帯域に対して50%より大きく且つ80%以下であることを検出する。
例えば、50%と80%とのレートの検出用のトークンバケットが空であり、100%のレートの検出用のトークンバケットは空でない場合には、入力レート監視部35は、バッファ32の入力レートがバッファ32の読出し帯域に対して80%より大きく且つ100%以下であることを検出する。例えば、50%、80%、100%のいずれのレートの検出用のトークンバケットも空の場合には、入力レート監視部35は、バッファ32の入力レートがバッファ32の読出し帯域に対して100%より大きいことを検出する。
すなわち、例えば、50%、80%、100%それぞれのレートの検出用のトークンバケットが備えられる場合には、バッファ32の入力レートが読出し帯域に対して、50%以下であること、50%より大きく且つ80%以下であること、80%より大きく且つ100%以下であること、100%より大きいこと、のいずれかがバッファ32の入力レートの監視結果となる。
なお、入力レート監視部35が備えるトークンバケットは、バッファ32への入力レー
トを監視するためのものであって、入力レート監視部35が備えるトークンバケット内のトークン蓄積量が0である場合でも、フレームの廃棄は発生しない。なお、入力レート監視部35が備えるトークンバケットは、バッファ32の読出し帯域に対するバッファ32の入力レートの割合が50%、80%、100%の3つに限定されない。
入力レート監視部35がトークンバケットをいくつ備えるか、各トークンバケットの検出するレート又はバッファ32の読出し帯域に対するバッファ32の入力レートの割合はどれだけであるかは、例えば、スイッチ1の管理者によって任意に設定可能である。また、入力レート監視部35が備えるトークンバケットが検出するレートは、バッファ32の読出し帯域に対するバッファ32の入力レートの割合で指定されることに限定されず、直接レートが設定されてもよい。また、入力レート監視部35が備えるトークンバケットが検出するレートとして、バッファ32の読出し帯域以上、すなわち、入力レートの割合が100%以上のレートも設定可能である。
なお、バッファ32の入力レートの監視方法は、図7に示される例に限定されない。例えば、所定周期でバッファ32内に流入するトラフィック量をメモリに記録し、直近の単位時間当たりのトラフィック量を求めて、バッファ32の入力レートを直接算出してもよい。
<入力レート増減監視部の処理の詳細>
図8は、第1実施形態に係る入力レート増減監視部36の入力レートの傾きの監視方法の一例を示す図である。図8は、入力レートの監視が図7において説明された方法で行われる場合の、入力レートの傾きの監視方法の一例を示す。
入力レートの監視が図7において説明された方法で行われる場合には、入力レートの値が直接導き出されないため、入力レートの増減を直接取得することができない。一方、例えば、図3に示されるように、入力レートの増減とバッファの使用量の増減との間には相関関係がある。入力レートの増減とバッファの使用量の増減との間の相関関係は、例えば、入力レートが上昇すると所定のタイムラグの後にバッファの使用量が増加し、入力レートが低下すると所定のタイムラグの後にバッファの使用量が減少する、というものである。
したがって、バッファの使用量を監視すると、入力レートの増減を推測することができる。入力レートの監視が図7において説明された方法で行われる場合には、入力レート増減監視部36は、バッファの使用量の増減を監視することによって、入力レートの増減を推測する。
具体的には、入力レート増減監視部36は、入力レート監視部35の100%のレートの検出用のトークンバケットのトークン追加周期毎に、バッファ32のデータ流入量とトークンの追加量との差分を取得する。入力レート監視部35の100%のレートの検出用のトークンバケットは、バッファ32の読出し帯域に応じて、トークンの上限値とトークン追加周期とが設定されているためである。
バッファ32のデータ流入量とトークンの追加量との差分は、100%のレートの検出用のトークンバケットのトークン追加周期において、バッファ32の使用量の増加分又は減少分になる。図8に示される例では、1回のトークン追加周期におけるトークン追加量が10である場合が示される。
例えば、バッファ32のデータ流入量が0である場合には、データ流入量とトークンの追加量との差分は−10であり、バッファ32の使用量が減少することが示される。バッ
ファ32の使用量が減少することが示される場合には、バッファ32の入力レートも低下していることが示される。
例えば、バッファ32のデータ流入量が20である場合には、データ流入量とトークンの追加量との差分は+10であり、バッファ32の使用量が増加することが示される。バッファ32の使用量が増加することが示される場合には、バッファ32の入力レートも上昇していることが示される。
例えば、バッファ32のデータ流入量が10である場合には、データ流入量とトークンの追加量との差分は0であり、バッファ32の使用量が変化しないことが示される。バッファ32の使用量が変化しないことが示される場合には、バッファ32の入力レートも変化していない、すなわち、維持されていることが示される。
入力レート増減監視部36は、例えば、バッファ32のデータ流入量とトークンの追加量との差分がプラスである場合には、入力レートの傾きの監視結果をプラスとする。入力レート増減監視部36は、例えば、バッファ32のデータ流入量とトークンの追加量との差分がマイナスである場合には、入力レートの傾きの監視結果をマイナスとする。入力レート増減監視部36は、例えば、バッファ32のデータ流入量とトークンの追加量との差分が0である場合には、入力レートの傾きの監視結果を0とする。
入力レートの傾きの監視結果がプラスであることは、「入力レートが増加傾向」であることの一例である。入力レートの傾きの監視結果がマイナスであることは、「入力レートが減少傾向」であることの一例である。入力レートの傾きの監視結果が0であることは、「入力レートが維持傾向」であることの一例である。
バッファ蓄積予測部34は、例えば、入力レート監視部35の100%のレートの検出用のトークンバケットのトークン追加周期ごとに、入力レート監視部35から入力レートの監視結果と、入力レート増減監視部36から入力レートの傾きの監視結果とを取得し、バッファ監視部31に通知する。なお、入力レート監視部35の100%のレートの検出用のトークンバケットの代わりに、バッファ32の読出し帯域で動作する出力制御部33のバッファ32からデータを読み出す周期及び読み出されるデータ量が用いられてもよい。
なお、入力レートの増減の監視方法は、図8において説明される方法に限定されない。例えば、入力レートが直接算出される場合には、入力レートの算出結果をメモリ等に記録しておき、入力レートの増減を監視してもよい。
<バッファ監視部の処理の詳細>
図9は、第1実施形態に係るバッファ監視部31のバーストサイズの制御内容の一例を示す表である。バッファ監視部31は、バッファ蓄積予測部34から、バッファ32の入力レートの監視結果と、バッファ32の入力レートの傾きの監視結果と、バッファ32の使用量とバーストサイズ回復閾値との比較結果との通知を受ける。また、バッファ監視部31は、各ポリサ20のトークン監視部23から、バーストサイズの制御対象となるフローの情報の通知を受ける。
図9に示される表には、バッファ32の入力レートの監視結果、バッファ32の入力レートの傾きの監視結果、バッファ32の使用量とバーストサイズ回復閾値との比較結果の内容に応じたバッファ監視部31の処理内容の一例が示される。図9の表中の「d.c.」は「don’t care」の略であり、当該項目の値はどのような値であってもよいことが示される。なお、図9に示される表におけるフローは、バッファ32に流入するフ
ローを示している。
図9に示される例では、バッファ監視部31の処理内容は、動作指示1−1〜1−5、動作指示2〜5で定義されている。動作指示1−1〜1−5は、バーストサイズが低減されているフローのバーストサイズを増やす又は初期値に戻す処理である。フローのバーストサイズを増やす又は初期値に戻す処理は、「バッファへのデータブロックの流入を促進する制御」の一例である。
動作指示1−1の内容は、バッファ32に流入するいずれのフローのバーストサイズも変更しないことである。動作指示1−2の内容は、バーストサイズが“0”のフローはバーストサイズを初期値の半分にし、バーストサイズが初期値の半分であるフローはバーストサイズを初期値に戻すことである。バーストサイズが“0”であることは、該当するフローのバッファ32への流入を停止することを示す。すなわち、バーストサイズが“0”であるフローのフレームは、対応するポリサ20においてすべて廃棄されることが示される。
バーストサイズが“0”のフローのバーストサイズを初期値の半分にすること、バーストサイズが初期値の半分であるフローのバーストサイズを初期値に戻すことは、「バッファへのデータブロックの流入が抑制されている前記少なくとも1つのフローについて、前記バッファへのデータブロックの流入を促進する制御を行う」ことの一例である。また、バーストサイズが“0”のフローのバーストサイズを初期値の半分にすることは、「バッファへのデータブロックの流入が停止されているフローについて、前記バッファへのデータブロックの流入の停止を解除して前記バッファへのデータブロックの流入を促進する制御を行う」ことの一例である。
動作指示1−3の内容は、バーストサイズが“0”のフローのバーストサイズを初期値の半分にすることである。動作指示1−4の内容は、制御対象でないフローのバーストサイズを初期値に戻すことである。動作指示1−5の内容は、バッファ32に流入する全てのフローのバーストサイズを初期値に戻すことである。
動作指示2〜5は、バーストサイズを低減させる処理である。動作指示2の内容は、制御対象のフローのバーストサイズを初期値の半分にすることである。動作指示3の内容は、バッファ32に流入する全てのフローのバーストサイズを初期値の半分にすることである。
動作指示4の内容は、制御対象のフローのバーストサイズを0に、制御対象でないフローのバーストサイズを初期値の半分にすることである。動作指示5の内容は、バッファ32に流入する全てのフローのバーストサイズを0にすることである。
なお、動作指示5の内容は、バッファ32に流入する全てのフローのバーストサイズを“0”とすることであるが、これに限定されない。例えば、動作指示5の内容は、制御対象のフローのバーストサイズを“0”にし、制御対象以外のフローのバーストサイズは、1回のトークン追加周期におけるトークン追加量と同じサイズとすることであってもよい。これによって、制御対象以外のフローは、ポリサの設定帯域までのトラフィックはポリサを通過できるものの、バーストトラフィックは許容されないこととなる。
バーストサイズを初期値の半分にすること、及び、バーストサイズを“0”にすることは、それぞれ、「バッファへのデータブロックの流入を抑制」することの一例である。バーストサイズを“0”にすることは、「バッファへのデータブロックの流入を停止」することの一例である。
バーストサイズの変更がある場合には、バッファ監視部31は、バーストサイズの変更の対象となるフローに対応するポリサ20のバーストサイズ設定部21にバーストサイズの変更指示を通知する。
例えば、図9に示される例では、バッファ32の入力レートが50%以下、且つ、バッファ32の使用量がバーストサイズ回復閾値以上である場合には、バッファ監視部31は動作指示1−1の処理を行うことが定義されている。すなわち、いずれのフローもバーストサイズが変更されない。これは、バッファの入力レートが比較的小さいにもかかわらず、バッファ32の使用量が大きく、例えば、いずれかのフローのバーストサイズを戻したり、いずれかのフローでバーストが発生したりすると、バッファ溢れが発生する可能性が高いためである。
例えば、図9に示される例では、バッファ32の入力レートが50%以下、且つ、バッファ32の使用量が0より大きく且つバーストサイズ回復閾値未満である場合には、バッファ監視部31は動作指示1−2の処理を行うことが定義されている。すなわち、バーストサイズが“0”のフローのバーストサイズが初期値の半分に変更され、バーストサイズが初期値の半分であるフローはバーストサイズが初期値に戻される。これは、バッファの入力レートが比較的小さく、且つ、バッファ32の空きに余裕があるためである。全てのフローのバーストサイズを初期値に戻さないのは、例えば、制御対象のフローでバーストが発生する可能性があるためである。
例えば、図9に示される例では、バッファ32の入力レートが50%以下、且つ、バッファ32の使用量が0である場合には、バッファ監視部31は動作指示1−5の処理を行うことが定義されている。すなわち、全てのフローのバーストサイズが初期値に戻される。これは、バッファの入力レートが比較的小さく、且つ、バッファ32が空であり、例えば、いずれかのフローでバーストが発生してもバッファ溢れが発生する可能性が低い為である。
例えば、図9に示される例では、バッファの入力レートが50%〜80%、且つ、入力レートの傾きがマイナス又は0、且つ、バッファ32の使用量がバーストサイズ回復閾値以上である場合には、バッファ監視部31は動作指示1−1の処理を行うことが定義されている。すなわち、いずれのフローもバーストサイズが変更されない。これは、バッファの入力レートが減少傾向にあるものの、バッファ32の使用量が大きく、例えば、いずれかのフローのバーストサイズを戻したり、いずれかのフローでバーストが発生したりすると、バッファ溢れが発生する可能性が高いためである。
例えば、図9に示される例では、バッファの入力レートが50%〜80%、且つ、入力レートの傾きがマイナス、且つ、バッファ32の使用量が0より大きく且つバーストサイズ回復閾値未満である場合には、バッファ監視部31は動作指示1−2の処理を行うことが定義されている。すなわち、バーストサイズが“0”のフローのバーストサイズが初期値の半分に変更され、バーストサイズが初期値の半分であるフローはバーストサイズが初期値に戻される。これは、バッファの入力レートは比較的高いものの、バッファ32の空きに余裕があり、且つ、入力レートが減少傾向にあることから、この先バッファ32の使用量が減っていく可能性が高いためである。全てのフローのバーストサイズを初期値に戻さないのは、例えば、制御対象のフローでバーストが発生する可能性があるためである。
例えば、図9に示される例では、バッファの入力レートが50%〜80%、且つ、入力レートの傾きがマイナス、且つ、バッファ32の使用量が0である場合には、バッファ監視部31は動作指示1−5の処理を行うことが定義されている。すなわち、全てのフロー
のバーストサイズが初期値に戻される。これは、バッファの入力レートが比較的高いものの、入力レートが減少傾向にあり、且つ、バッファ32が空であるため、例えば、いずれかのフローでバーストが発生してもバッファ溢れが発生する可能性が低い為である。
例えば、図9に示される例では、バッファの入力レートが50%〜80%、且つ、入力レートの傾きが0、且つ、バッファ32の使用量が0より大きく且つバーストサイズ回復閾値未満である場合には、バッファ監視部31は動作指示1−3の処理を行うことが定義されている。すなわち、バーストサイズが“0”のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが比較的高く維持傾向にあるものの、バッファ32の空きに余裕があるため、バーストサイズが“0”でポリサ20において全てのフレームが廃棄されているフローの転送を行うためである。
例えば、図9に示される例では、バッファの入力レートが50%〜80%、且つ、入力レートの傾きがマイナス、且つ、バッファ32の使用量が0である場合には、バッファ監視部31は動作指示1−4の処理を行うことが定義されている。すなわち、制御対象のフロー以外のフローのバーストサイズが初期値に戻される。これは、バッファの入力レートは比較的高いものの、バッファ32が空であり、且つ、入力レートが減少傾向にあることから、この先バッファ32の使用量が減っていく可能性が高いためである。制御対象のフローのバーストサイズを初期値に戻さないのは、例えば、バーストが発生する可能性があるためである。
例えば、図9に示される例では、バッファの入力レートが50%〜80%、且つ、入力レートの傾きがプラスである場合には、バッファ監視部31は動作指示2の処理を行うことが定義されている。すなわち、制御対象のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートは比較的高く且つ増加傾向にあるため、この先バッファ32の使用量が増加する可能性が高いためである。制御対象のフローのバーストサイズが初期値の半分に変更されるのは、例えば、バーストが発生する可能性があるためである。また、制御対象のフロー以外のフローのバーストサイズが変更されないのは、例えば、バーストが発生する可能性が低いためである。
例えば、図9に示される例では、バッファの入力レートが80%〜100%、且つ、入力レートの傾きがマイナス、且つ、バッファ32の使用量がバーストサイズ回復閾値以上である場合には、バッファ監視部31は動作指示1−1の処理を行うことが定義されている。すなわち、いずれのフローもバーストサイズが変更されない。これは、バッファの入力レートが減少傾向にあるものの、バッファ32の使用量が大きく、バッファ溢れが発生する可能性が高いためである。
例えば、図9に示される例では、バッファの入力レートが80%〜100%、且つ、入力レートの傾きがマイナス、且つ、バッファ32の使用量が0より大きく且つバーストサイズ回復閾値未満である場合には、バッファ監視部31は動作指示1−3の処理を行うことが定義されている。すなわち、バーストサイズが“0”のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが高いものの、入力レートが減少傾向にあり、且つ、バッファ32が空であるため、バッファ32にバーストを受け入れる余裕があるためである。これによって、バーストサイズが“0”でポリサ20において全てのフレームが廃棄されているフローの転送が行われる。
例えば、図9に示される例では、バッファの入力レートが80%〜100%、且つ、入力レートの傾きがマイナス、且つ、バッファ32の使用量が0である場合には、バッファ監視部31は動作指示1−4の処理を行うことが定義されている。すなわち、制御対象のフロー以外のフローのバーストサイズが初期値に戻される。これは、バッファの入力レー
トは高いものの、バッファ32が空であり、且つ、入力レートが減少傾向にあることから、この先バッファ32の使用量が減っていく可能性が高いためである。
例えば、図9に示される例では、バッファの入力レートが80%〜100%、且つ、入力レートの傾きが0である場合には、バッファ監視部31は動作指示2の処理を行うことが定義されている。すなわち、制御対象のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートは高く且つ維持傾向にあるため、この先バッファ32の使用量が増加しバッファ溢れが発生する可能性が高いためである。
例えば、図9に示される例では、バッファの入力レートが80%〜100%、且つ、入力レートの傾きがプラスである場合には、バッファ監視部31は動作指示3の処理を行うことが定義されている。すなわち、バッファ32に流入する全てのフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが高く且つ増加傾向にあるため、この先バッファ32においてバッファ溢れが発生する可能性がより高いためである。
例えば、図9に示される例では、バッファの入力レートが100%より大きく、且つ、入力レートの傾きがマイナスである場合には、バッファ監視部31は動作指示3の処理を行うことが定義されている。すなわち、バッファ32に流入する全てのフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが減少傾向にあるものの、バッファの入力レートが読出し帯域より高く、すでにバッファ32へのフレームの蓄積が始まっており、且つ、バッファの入力レートが読出し帯域より低くなるまでフレームの蓄積が続くためである。
例えば、図9に示される例では、バッファの入力レートが100%より大きく、且つ、入力レートの傾きが0である場合には、バッファ監視部31は動作指示4の処理を行うことが定義されている。すなわち、制御対象のフローのバーストサイズが“0”に、制御対象以外のフローのバーストサイズが初期値の半分に変更される。これは、バッファの入力レートが読出し帯域より高く、すでにバッファ32へのフレームの蓄積が始まっており、且つ、バッファ32の入力レートが維持傾向にあり、バッファ32へフレームが蓄積される速度が維持され、バッファ溢れの発生の可能性が高いためである。
例えば、図9に示される例では、バッファの入力レートが100%より大きく、且つ、入力レートの傾きがプラスである場合には、バッファ監視部31は動作指示5の処理を行うことが定義されている。すなわち、バッファ32に流入する全てのフローのバーストサイズが“0”に変更される。これは、バッファの入力レートが読出し帯域より高く、すでにバッファ32へのフレームの蓄積が始まっており、且つ、入力レートが増加傾向にあり、バッファ32へフレームが蓄積される速度が速まっており、バッファ溢れの発生の可能性が非常に高いためである。全てのフローのバーストサイズが“0”に変更されることによって、バッファ32へのフレームの流入が停止し、読出し帯域でバッファ32からフレームが読み出されることによって、バッファ32の使用量が低下する。
図9に示されるバッファ監視部31の処理内容によれば、バーストサイズを低減させる処理は、バッファ32の入力レート及び/又はバッファ32の入力レートの傾きに応じて、段階的に行われる。なお、バッファ監視部31によるバーストサイズの制御は、図9に示される例に限定されない。また、バーストサイズを低減させる場合の変更後のバーストサイズは、初期値の半分に限定されない。
また、バッファ監視部31によるバーストサイズを低減させる制御は、バッファ32の入力レートとバッファ32の入力レートの傾きとに基づくことに限定されない。バッファ
監視部31によるバーストサイズを低減させる制御は、バッファ32の入力レートとバッファ32の入力レートの傾きとのいずれか一方に基づいて行われてもよい。
また、バッファ監視部31によるバーストサイズを増加させる制御は、バッファ32の入力レート、バッファ32の入力レートの傾き、バッファ32の使用量とに基づくことに限定されない。バッファ監視部31によるバーストサイズを増加させる制御は、バッファ32の入力レート、バッファ32の入力レートの傾き、バッファ32の使用量とのいずれか1つ又は2つに基づいて行われてもよい。
図9における読出し帯域に対して50%のレートは、「第1の閾値」の一例である。ただし、「第1の閾値」は、読出し帯域に対して50%のレートに限定されず、読出し帯域に対して80%のレート、読出し帯域に対して100%のレートすなわち読出し帯域のレートであってもよい。図9における読出し帯域に対して80%のレートは、「第2の閾値」の一例である。ただし、「第2の閾値」は、読出し帯域に対して80%のレートに限定されない。
<処理の流れ>
図10は、トークン監視部23のフレーム受信時の処理のフローチャートの一例である。図10に示される処理は、トークン監視部23を備えるポリサ20にフレームが到着すると開始される。
OP1では、トークン監視部23は、ポリサ20によって当該フレームが廃棄されたか否かを判定する。OP1の判定は、例えば、ポリサ20用のトークンバケットが空であるか否かの判定結果に基づいて行われる。例えば、ポリサ20用のトークンバケットが空である場合にはポリサ20によって当該フレームが廃棄されることが示される。
ポリサ20によって当該フレームが廃棄された場合には(OP1:YES)、処理がOP2に進む。ポリサ20によって当該フレームが廃棄されていない場合には(OP1:NO)、図10に示される処理が終了する。
OP2では、トークン監視部23は、違反バイトカウンタに廃棄されたフレームのバイト数を加算する。違反バイトカウンタは、ポリサ20によって廃棄されたフレームのデータ量のカウンタである。その後、図10に示される処理が終了する。
図11は、トークン監視部23の制御対象フローの判定処理のフローチャートの一例である。図11に示される例は、トークン監視部23が、制御対象のフローの判定方法2を用いてバーストサイズの制御対象のフローを判定する場合のフローチャートである。制御対象のフローの判定方法2は、データ廃棄量の移動平均を用いる方法である。図11に示される例は、ポリサ20用のトークンバケットのトークン追加周期毎に実行される。
OP11では、トークン監視部23は、データ廃棄量の移動平均を求める。データ廃棄量の移動平均は、例えば、以下の数式3で求められる。
Figure 2019041289
OP12では、トークン監視部23は、OP11で求めたデータ廃棄量の移動平均が閾値より大きいか否かを判定する。データ廃棄量の移動平均が閾値より大きい場合には(OP12:YES)、処理がOP13に進む。データ廃棄量の移動平均が閾値以下である場合には(OP12:NO)、処理がOP14に進む。
OP13では、トークン監視部23は、ポリサ20の対象フローはバーストサイズの制御対象のフローであることを判定する。OP14では、トークン監視部23は、該当シェーパ30のバッファ監視部31に、ポリサ20の対象フローの情報を通知する。バッファ監視部31に通知される情報は、例えば、ポリサ20の識別情報である。また、通知先のシェーパ30は、例えば、スイッチ1の制御部(図示せず)によって、ポリサ20の対象フローの宛先アドレスから決定されている。
OP15では、トークン監視部23は、ポリサ20の対象フローはバーストサイズの制御対象のフローでないことを判定する。OP16では、トークン監視部23は、違反バイトカウンタの値を0にしてクリアする。その後、図11に示される処理が終了する。
図12は、入力レート増減監視部36の処理のフローチャートの一例である。図12に示される処理は、例えば、入力レート監視部35の100%のレートの検出用のトークンバケットのトークン追加周期毎に実行される。
OP21では、入力レート増減監視部36は、受信フレームカウンタの値からトークン追加量を差し引いて差分を求める。例えば、1トークン当たりに1フレームが出力されるので、受信フレームカウンタはバッファ32に入力されるフレームの数をカウントする。
OP22では、入力レート増減監視部36は、受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値であるか否かを判定する。受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値である場合には(OP22:YES)、処理がOP23に進む。受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値でない場合には(OP22:NO)、処理がOP25に進む。
OP23及びOP24の処理は、受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値である場合に実行される処理である。OP23では、入力レート増減監視部36は、受信フレームカウンタの値からトークン追加量を差し引いた差分が、トークン追加量の10%の値よりも大きいか否かを判定する。
受信フレームカウンタの値からトークン追加量を差し引いた差分が、トークン追加量の10%の値よりも大きい場合には(OP23:YES)、処理がOP24に進む。OP24では、トークン監視部23は、バッファ32の入力レートの傾きを“プラス”と判定する。
受信フレームカウンタの値からトークン追加量を差し引いた差分が、トークン追加量の10%の値以下である場合には(OP23:NO)、処理がOP27に進む。OP27では、トークン監視部23は、バッファ32の入力レートの傾きを“0”と判定する。
OP25及びOP26の処理は、受信フレームカウンタの値からトークン追加量を差し引いた差分がプラスの値でない場合に実行される処理である。OP25では、トークン監視部23は、トークン追加量から受信フレームカウンタの値を差し引いた差分を求める。
OP26では、入力レート増減監視部36は、トークン追加量から受信フレームカウンタの値を差し引いた差分が、トークン追加量の10%の値よりも大きいか否かを判定する。トークン追加量から受信フレームカウンタの値を差し引いた差分が、トークン追加量の10%の値よりも大きい場合には(OP26:YES)、処理がOP27に進む。OP27では、トークン監視部23は、バッファ32の入力レートの傾きを“0”と判定する。
トークン追加量から受信フレームカウンタの値を差し引いた差分が、トークン追加量の10%の値以下である場合には(OP26:NO)、処理がOP28に進む。OP28では、トークン監視部23は、バッファ32の入力レートの傾きを“マイナス”と判定する。
OP29では、入力レート増減監視部36は、受信フレームカウンタを0にクリアする。その後、図12に示される処理が終了する。
図12に示される例では、受信フレームカウンタの値とトークン追加量との差分が小さい場合には、バッファ32の入力レートの傾きは、0、すなわち、バッファ32の入力レートがほぼバッファ32の読出し帯域と同じであるとみなされる。これは、受信フレームカウンタの値とトークン追加量との差分が小さい場合には、バッファ32の使用量の変動が小さく、ポリサ20のバーストサイズの制御が頻発することを抑制するためである。なお、バッファ32の入力レートの傾きを0とみなすための受信フレームカウンタの値とトークン追加量との差分に対する閾値は、トークン追加量の10%に限定されない。
図13A、図13B、図13C、及び、図13Dは、バッファ監視部31の処理のフローチャートの一例である。図13A〜図13Dに示される処理は、バッファ監視部31の処理が図9に示される処理内容で定義されている場合の処理である。図13Aに示される処理は、例えば、バッファ32にフレームが到着すると開始される。
OP31では、バッファ監視部31は、バッファ32の入力レートの監視結果がバッファ32の読出し帯域に対して50%以下であるか否かを判定する。バッファ32の入力レートの監視結果がバッファ32の読出し帯域に対して50%以下である場合には(OP32:YES)、処理がOP32に進む。バッファ32の入力レートの監視結果がバッファ32の読出し帯域に対して50%より大きい場合には(OP32:NO)、処理がOP33に進む。
OP32では、バッファ32の使用量による判定処理1が実行される。バッファ32の使用量による判定処理1の詳細は後述される。バッファ32の使用量による判定処理1が終了すると、図13Aに示される処理が終了する。
OP33では、バッファ監視部31は、バッファ32の入力レートの監視結果がバッファ32の読出し帯域に対して50%より大きく且つ80%以下であるか否かを判定する。バッファ32の入力レートの監視結果がバッファ32の読出し帯域に対して50%より大きく且つ80%以下である場合には(OP33:YES)、処理がOP34に進む。バッ
ファ32の入力レートの監視結果が80%より大きい場合には(OP33:NO)、処理が図13BのOP41に進む。
OP34では、バッファ監視部31は、バッファ32の入力レートの傾きの監視結果が“プラス”であるか否かを判定する。バッファ32の入力レートの傾きの監視結果が“プラス”である場合には(OP34:YES)、処理がOP35に進む。バッファ32の入力レートの傾きの監視結果が“プラス”でない場合には(OP34:NO)、処理がOP36に進む。
OP35では、バッファ監視部31は、動作指示2を行う。すなわち、バッファ32の入力レートが50%より大きく、さらに上昇傾向にあるため、バッファ監視部31は、制御対象のフローに対応するポリサ20のバーストサイズ設定部21に、バーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Aに示される処理が終了する。
OP36では、バッファ監視部31は、バッファ32の入力レートの傾きの監視結果が“マイナス”であるか否かを判定する。バッファ32の入力レートの傾きの監視結果が“マイナス”である場合には(OP36:YES)、処理がOP32に進む。バッファ32の入力レートの傾きの監視結果が“0”である場合には(OP36:NO)、処理がOP37に進む。
OP37では、バッファ32の使用量による判定処理2が実行される。バッファ32の使用量による判定処理2の詳細は後述される。バッファ32の使用量による判定処理2が終了すると、図13Aに示される処理が終了する。
図13BのOP41では、バッファ監視部31は、バッファ32の入力レートの監視結果がバッファ32の読出し帯域に対して80%より大きく且つ100%以下であるか否かを判定する。バッファ32の入力レートの監視結果がバッファ32の読出し帯域に対して80%より大きく且つ100%以下である場合には(OP41:YES)、処理がOP42に進む。バッファ32の入力レートの監視結果が100%より大きい場合には(OP41:NO)、処理がOP47に進む。
OP42では、バッファ監視部31は、バッファ32の入力レートの傾きの監視結果が“プラス”であるか否かを判定する。バッファ32の入力レートの傾きの監視結果が“プラス”である場合には(OP42:YES)、処理がOP43に進む。バッファ32の入力レートの傾きの監視結果が“プラス”でない場合には(OP43:NO)、処理がOP44に進む。
OP43では、バッファ監視部31は、動作指示3を行う。すなわち、バッファ32の入力レートが80%より大きく、さらに上昇傾向にあるため、バッファ監視部31は、バッファ32に流入する全てのフローに対応するポリサ20のバーストサイズ設定部21に、バーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Bに示される処理が終了する。
OP44では、バッファ監視部31は、バッファ32の入力レートの傾きの監視結果が“マイナス”であるか否かを判定する。バッファ32の入力レートの傾きの監視結果が“マイナス”である場合には(OP44:YES)、処理がOP45に進む。バッファ32の入力レートの傾きの監視結果が“0”である場合には(OP44:NO)、処理がOP46に進む。
OP45では、バッファ32の使用量による判定処理2が実行される。バッファ32の使用量による判定処理2が終了すると、図13Bに示される処理が終了する。
OP46では、バッファ監視部31は、動作指示2を行う。すなわち、バッファ32の入力レートが80%より大きく、さらに入力レートの値が維持される傾向にあるため、バッファ監視部31は、制御対象のフローに対応するポリサ20のバーストサイズ設定部21に、バーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Bに示される処理が終了する。
OP47では、バッファ監視部31は、バッファ32の入力レートの傾きの監視結果が“プラス”であるか否かを判定する。バッファ32の入力レートの傾きの監視結果が“プラス”である場合には(OP47:YES)、処理がOP48に進む。バッファ32の入力レートの傾きの監視結果が“プラス”でない場合には(OP47:NO)、処理がOP49に進む。
OP48では、バッファ監視部31は、動作指示5を行う。すなわち、バッファ32の入力レートが100%より大きく、さらに上昇傾向にあるため、バッファ監視部31は、バッファ32に流入する全てのフローに対応するポリサ20のバーストサイズ設定部21に、バーストサイズを0に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Bに示される処理が終了する。
OP49では、バッファ監視部31は、バッファ32の入力レートの傾きの監視結果が“マイナス”であるか否かを判定する。バッファ32の入力レートの傾きの監視結果が“マイナス”である場合には(OP49:YES)、処理がOP43に進む。バッファ32の入力レートの傾きの監視結果が“0”である場合には(OP49:NO)、処理がOP50に進む。
OP50では、バッファ監視部31は、動作指示4を行う。すなわち、バッファ32の入力レートが100%より大きく、さらに現在の入力レートが維持傾向にあることが示される。したがって、バッファ監視部31は、制御対象のフローに対応するポリサ20のバーストサイズ設定部21にバーストサイズを0に変更するように指示するバーストサイズ変更指示を送信する。また、バッファ監視部31は、制御対象以外のフローに対応するポリサ20のバーストサイズ設定部21にバーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Bに示される処理が終了する。
図13Cは、バッファ32の使用量による判定処理1のフローチャートの一例である。図13Cに示される処理は、図13AのOP32において実行される処理である。
OP51では、バッファ監視部31は、バッファ32の使用量が0であるか否かを判定する。バッファ32の使用量が0である場合には(OP51:YES)、処理がOP52に進む。バッファ32の使用量が0でない場合には(OP51:NO)、処理がOP53に進む。
OP52では、バッファ監視部31は、動作指示1−5を行う。すなわち、バッファ32の入力レートが50%以下であり、さらにバッファ32の使用量が0であるため、バッファ監視部31は、バッファ32に流入する全てのフローに対応するポリサ20のバーストサイズ設定部21にバーストサイズを初期値に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Cに示される処理が終了し、これとともに、図13Aに示される処理も終了する。
OP53では、バッファ監視部31は、バッファ32の使用量が0より大きく且つバーストサイズ回復閾値未満であるか否かを判定する。バッファ32の使用量が0より大きく且つバーストサイズ回復閾値未満である場合には(OP53:YES)、処理がOP54に進む。バッファ32の使用量がバーストサイズ回復閾値以上である場合には(OP53:NO)、処理がOP55に進む。
OP54では、バッファ監視部31は、動作指示1−2を行う。すなわち、バッファ32の入力レートが50%以下であり、さらにバッファ32の使用量がバーストサイズ回復閾値未満まで下がっていることが示される。この場合には、バッファ監視部31は、バーストサイズが0であるフローに対応するポリサ20のバーストサイズ設定部21にバーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。また、バッファ監視部31は、バーストサイズが初期値の半分であるフローに対応するポリサ20のバーストサイズ設定部21にバーストサイズを初期値に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Cに示される処理が終了し、これとともに、図13Aに示される処理も終了する。
OP55では、バッファ監視部31は、動作指示1−1を行う。すなわち、バッファ32の入力レートが50%以下であり、さらにバッファ32の使用量がバーストサイズ回復閾値以上であるので、バッファ監視部31は、いずれのフローのバーストサイズも変更しない。その後、図13Cに示される処理が終了し、これとともに、図13Aに示される処理も終了する。
図13Dは、バッファ32の使用量による判定処理2のフローチャートの一例である。図13Dに示される処理は、図13AのOP37、図13BのOP45において実行される処理である。
OP61では、バッファ監視部31は、バッファ32の使用量が0であるか否かを判定する。バッファ32の使用量が0である場合には(OP61:YES)、処理がOP62に進む。バッファ32の使用量が0でない場合には(OP61:NO)、処理がOP63に進む。
OP62では、バッファ監視部31は、動作指示1−4を行う。すなわち、バッファ監視部31は、制御対象以外のフローに対応するポリサ20のバーストサイズ設定部21にバーストサイズを初期値に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Dに示される処理が終了し、これとともに、図13A又は図13Bに示される処理も終了する。
OP63では、バッファ監視部31は、バッファ32の使用量が0より大きく且つバーストサイズ回復閾値未満であるか否かを判定する。バッファ32の使用量が0より大きく且つバーストサイズ回復閾値未満である場合には(OP63:YES)、処理がOP64に進む。バッファ32の使用量がバーストサイズ回復閾値以上である場合には(OP63:NO)、処理がOP65に進む。
OP64では、バッファ監視部31は、動作指示1−3を行う。すなわち、バッファ監視部31は、バーストサイズが0であるフローに対応するポリサ20のバーストサイズ設定部21にバーストサイズを初期値の半分に変更するように指示するバーストサイズ変更指示を送信する。その後、図13Dに示される処理が終了し、これとともに、図13A又は図13Bに示される処理も終了する。
OP65では、バッファ監視部31は、動作指示1−1を行う。すなわち、バッファ32の使用量がバーストサイズ回復閾値以上であるので、バッファ監視部31は、いずれのフローのバーストサイズも変更しない。その後、図13Dに示される処理が終了し、これとともに、図13A又は図13Bに示される処理も終了する。
なお、図10〜図13Dに示されるフローチャートの処理は一例であって、トークン監視部23、入力レート増減監視部36、バッファ監視部31の処理は、図10〜図13Dに示される処理に限定されない。
<第1実施形態の作用効果>
図14は、具体例におけるフローA、フローB、フローCのそれぞれのレートと、合計のレートとのグラフの一例である。具体例では、バッファ32にフローA、フローB、フローCの3つのフローのフレームが流入することを想定する。また、バッファ32の読出し帯域は30Mbpsであることを想定する。
図14では、フローA、フローB、フローCの合計レートが、15Mbpsから30MBps以上へとバーストを伴いながらバッファ32に流入する例が示されている。
図15は、バッファ32に対して方法1による制御が行われた場合の、フローA、フローB、フローCのそれぞれの入力レートと、合計の入力レートとのグラフの一例である。図15では、図14に示されるフローA、フローB、フローCのトラフィックがスイッチ1に入力された場合の、バッファ32への入力レートが示されている。
また、図15に示される例では、方法1のバーストサイズの制御として、バッファ32の使用量が閾値に達した場合に、バッファ32に流入する全フローのバーストサイズを初期値の半分に低減させる制御が行われている。
図15に示される例において、点線の矩形で囲まれた部分が、バッファ32の使用量が閾値を超えている期間である。バッファ32の使用量が閾値を超えて、フローA、フローB、フローCそれぞれのバーストサイズが半減されたときには既に、各フローのポリサのトークンは消費されており、各フローのポリサのトークン蓄積量は初期値の半分以下になっている可能性が高い。
各フローのポリサのトークン蓄積量が初期値の半分以下になっている場合には、バーストサイズが半減されてもトークン蓄積量に変化はなく、各フローのトラフィックはそのままバッファ32に流入することとなる。
したがって、図15に示される方法1によるバーストサイズの制御が行われた場合のフローA、フローB、フローCのそれぞれの入力レートと、合計の入力レートとのグラフは、図14に示されるグラフと同じグラフとなっている。
図16は、バッファ32に対して第1実施形態に係るバーストサイズの制御が行われた場合の、フローA、フローB、フローCのそれぞれの入力レートと、合計の入力レートとのグラフの一例である。図16では、図14に示されるフローA、フローB、フローCのトラフィックがスイッチ1に入力された場合の、バッファ32への入力レートが示されている。
また、図16に示される例では、バッファ32の入力レートがバッファ32の読出し帯域に対して100%を超え、且つ、入力レートの傾きが“0”である場合に、バッファ32に流入する全フローのバーストサイズを初期値の半分に低減させる制御が行われている
。なお、図16に示される例では、入力レートの傾きを“0”と判定する際の閾値を、バッファ32の読出し帯域の3%としている(図12、OP23、OP26参照)。
図16に示される例では、フローA、フローB、フローCの合計の入力レートが読出し帯域(30Mbps)を超え、且つ、入力レートが上昇傾向であることが検出されるポイントAの時点で各フローのバーストサイズが半減される。ポイントAの時点では、各フローのトークン蓄積量は、バーストサイズの半分以上である可能性が高く、バーストサイズが半減されることによって、トークン蓄積量が減少する。これ以降、各フローからバッファ32に流入される入力レートの最大値も低下する。
したがって、図16に示されるグラフでは、図15に示されるグラフに比べて、以下の点が異なっていることが分かる。まず、図16に示されるグラフでは、図15に示されるグラフに比べて、バーストサイズの低減の実行されるタイミングがより速い。次に、図16に示されるグラフでは、図15に示されるグラフに比べて、全フローの合計の入力レートがバッファ32の読出し帯域を超過する期間がより短い。また、図16に示されるグラフでは、図15に示されるグラフに比べて、全フローの合計の入力レートがバッファ32の読出し帯域を超過している際の超過分がより小さい。
図17は、第1実施形態によるバーストサイズの制御と方法1によるバーストサイズの制御とのバッファの使用量のグラフの一例である。図17に示される第1実施形態によるバーストサイズの制御が行われた場合のバッファ32の使用量のグラフは、各フローのバッファ32への入力レートが図16に示されるように変化した場合のグラフである。図17に示される方法1によるバーストサイズの制御が行われた場合のバッファ32の使用量のグラフは、各フローのバッファ32への入力レートが図15に示されるように変化した場合のグラフである。
方法1では、バッファ32の使用量がバッファ32の物理容量を超過しており、バッファ32においてフレームの廃棄が発生していることが示される。一方、第1実施形態に係るバーストサイズの制御では、バッファ32の使用量がバッファ32の物理容量を超過することがなく、バッファ32におけるフレームの廃棄が発生していないことが示される。
したがって、第1実施形態によれば、バッファ32への入力レートを監視し、入力レートの監視結果に応じてバーストサイズの制御のタイミングを決定することで、より早いタイミングでバーストサイズを低減させることができる。これによって、バッファ32に流入するフローにおいてバーストが発生した場合でもバッファ32に流入されるデータ量を抑えることができ、バッファ溢れを抑制することができる。
また、第1実施形態によれば、バッファ32の入力レートとバッファ32の読出し帯域とに応じてバーストサイズの制御を行うことでバッファ32のフレームの蓄積の開始を予測することができる。バッファ32のフレームの蓄積の開始を予測できることによって、バッファ32内に蓄積されているフレームが少ない段階でバーストサイズを低減することができ、バッファ溢れを抑制することができる。
また、第1実施形態によれば、バッファ32の入力レートと、バッファ32の入力レートの増減傾向との組み合わせに応じて、バーストサイズの制御のタイミングを決定することで、バーストサイズの変更が頻発することを抑制することができる。
また、第1実施形態によれば、バッファ32の入力レートが読出し帯域以下の閾値より大きく、且つ、バッファ32の入力レートが増加傾向である場合に、バーストサイズの制御を行うことで、バッファ32のフレームの蓄積の開始前にバーストサイズを低減するこ
とができる。また、第1実施形態によれば、バッファの入力レートに複数の閾値を設けることで、バーストサイズを低減させるフローを段階的に選択できる。
また、第1実施形態によれば、バッファ32の入力レートと、バッファ32の入力レートの増減傾向と、バッファ32の使用量とに基づいて、低減されたバーストサイズを増加させる制御が行われる。これによって、バーストが収まった際に、各フローのバーストサイズを通常の状態に戻すことができる。
また、第1実施形態によれば、バーストサイズの制御対象には、バーストトラフィックの可能性の高いフローから順に選択される。これによって、バーストサイズの制御によってバーストトラフィックを含む可能性の低い善良なユーザのフローに与えられる影響を抑制することができる。
また、第1実施形態によれば、バッファ32の入力レートは、複数のレートのトークンバケットを用いて監視される。バッファ32には、複数のポリサ20から複数のフローが流入し、バッファ32に流入するフローは流動的である。そのため、例えば、各ポリサ20から出力されるフローの入力レートを合計する等、直接バッファ32の入力レートを取得することは難しい。トークンバケットを用いることで、より簡便な構成で、バッファ32の入力レートを監視することができる。
また、第1実施形態によれば、バッファ32の入力レートの増減傾向は、バッファ32の読出し帯域と同じ周期で、バッファ32に流入するデータ量とバッファ32の読み出し帯域と同じ周期でバッファ32から読み出されるデータ量との差分に基づいて推測される。上述のように、バッファの入力レートを直接取得することが難しいことから、バッファ32の入力レートの増減傾向を直接入力レートから取得することも難しい。第1実施形態によれば、より簡便な構成で、バッファ32の入力レートの増減傾向を監視することができる。
また、第1実施形態によれば、ポリサ20に、トークンバケット内のトークン蓄積量を監視して、ポリサ20の対象のフローがバーストトラフィックのフローであるか否かの判定を行うトークン監視部23が備えられる。これによって、より簡便な構成で、バーストトラフィックのフローを特定することができる。
また、第1実施形態によれば、例えば、入力レートの監視結果が、バッファ32の読出し帯域に対して80%〜100%である場合には全フローのバーストサイズが半減させられる。また、第1実施形態によれば、例えば、入力レートの監視結果が、バッファ32の読出し帯域に対して100%以上である場合には全フローのバーストサイズが0まで低減させられる。したがって、第1実施形態によれば、バッファ32の読出し帯域に対する入力レートの割合に応じた低減幅の分だけバーストサイズが低減される。これによって、バーストサイズの低減によるポリサ20におけるフレームの廃棄等のフローへの影響を、バッファ32の入力レートに応じて、調整することができる。
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等
から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
<プロセッサ>
上記いずれかの機能を実現させるプログラムをCPU(Central Processing Unit)に
実行させることができる。CPUは、MPU(Microprocessor)、プロセッサとも呼ばれる。CPUは、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のCPUがマルチコア構成を有していても良い。上記各部の少なくとも一部の処理は、CPU以外のプロセッサ、例えば、DSP、NPU(Network Processing Unit)等の専用プロセッサで行われても良い。
<その他>
上述の実施形態は、以下の付記を開示する。
(付記1)
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファと、
単位時間当たりに前記バッファへ流入する前記複数のフローのデータ量の総和である入力レートを監視し、前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う監視部と、
を備える情報処理装置。
(付記2)
前記監視部は、前記単位時間当たりに前記バッファから読み出し可能なデータ量である読出し帯域と前記入力レートと前記入力レートの増減傾向とに応じて、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記1に記載の情報処理装置。
(付記3)
前記監視部は、前記入力レートが、前記読出し帯域以下の第1の閾値より大きく、且つ、前記入力レートが増加傾向である場合に、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記2に記載の情報処理装置。
(付記4)
前記監視部は、前記入力レートが、前記第1の閾値よりも大きく且つ前記読出し帯域以下である第2の閾値以上であり、且つ、前記入力レートが増加傾向である場合に、前記複数のフローすべてについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記3に記載の情報処理装置。
(付記5)
前記監視部は、前記入力レートが前記第2の閾値以上であり、且つ、前記入力レートが維持傾向である場合に、前記複数のフローのうちバーストトラフィックと判定される第1の条件を満たすフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記4に記載の情報処理装置。
(付記6)
前記監視部は、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが増加傾向である場合に、前記複数のフローすべてについて前記バッファへのデータブロックの流入を停止する制御を行う、
付記2から5のいずれか一つに記載の情報処理装置。
(付記7)
前記監視部は、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが維持傾向である場合に、前記複数のフローのうちバーストトラフィックと判定される第1の条件を満たすフローについて前記バッファへのデータブロックの流入を停止し、前記複数のフローのうち前記第1の条件を満たしていないフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
付記2から6のいずれか一つに記載の情報処理装置。
(付記8)
前記監視部は、前記バッファ内に存在するデータ量を監視し、前記読出し帯域と前記入力レートと前記バッファ内に存在するデータ量とに応じて、前記バッファへのデータブロックの流入が抑制されている前記少なくとも1つのフローについて、前記バッファへのデータブロックの流入を促進する制御を行う、
付記2から7のいずれか一つに記載の情報処理装置。
(付記9)
前記監視部は、前記読出し帯域と、前記入力レートと、前記入力レートの増減傾向と、前記バッファ内に存在するデータ量と、の組み合わせに応じて、前記バッファへのデータブロックの流入が抑制されている前記少なくとも1つのフローについて、前記バッファへのデータブロックの流入を促進する制御を行う、
付記8に記載の情報処理装置。
(付記10)
前記監視部は、前記入力レートが前記読出し帯域以下の第1の閾値より大きく且つ前記読出し帯域以下であり、且つ、前記入力レートが維持傾向であり、且つ、前記バッファ内にデータブロックが存在しない場合に、前記バッファへのデータブロックの流入が抑制されているフローのうち一部のフローについて、前記バッファへのデータブロックの流入の抑制を解除する制御を行う、
付記9に記載の情報処理装置。
(付記11)
前記監視部は、前記入力レートが前記読出し帯域以下であり、且つ、前記入力レートが増加傾向でなく、且つ、前記バッファ内のデータ量が0より大きく且つ第3の閾値未満である場合に、前記バッファへのデータブロックの流入が抑制されているフローのうち前記バッファへのデータブロックの流入が停止されているフローについて、前記バッファへのデータブロックの流入の停止を解除して前記バッファへのデータブロックの流入を促進する制御を行う、
付記9又は10に記載の情報処理装置。
(付記12)
前記監視部は、前記入力レートが前記読出し帯域以下の第1の閾値以下であり、且つ、前記バッファ内のデータ量が0より大きく且つ第3の閾値未満である場合に、前記バッファへのデータブロックの流入が抑制されているフローのうち、前記バッファへのデータブロックの流入が停止されているフローについて、前記バッファへのデータブロックの流入の停止を解除して前記バッファへのデータブロックの流入を促進する制御を行い、それ以外のフローについて、前記バッファへのデータブロックの流入の抑制を解除する制御を行う、
付記10から12のいずれか一つに記載の情報処理装置。
(付記13)
前記監視部は、前記入力レートが前記読出し帯域以下の第1の閾値より大きく、且つ、前記バッファ内にデータブロックが存在しない場合に、前記バッファへのデータブロック
の流入が抑制されているフローのすべてについて、前記バッファへのデータブロックの流入の抑制を解除する制御を行う、
付記9から12のいずれか一つに記載の情報処理装置。
(付記14)
前記監視部は、前記入力レートが前記第1の閾値よりも大きく且つ前記読出し帯域以下である第2の閾値以上であり、且つ、前記入力レートが減少傾向であり、且つ、前記バッファ内にデータブロックが存在しない場合に、前記バッファへのデータブロックの流入が抑制されているフローのすべてについて、前記バッファへのデータブロックの流入の抑制を解除する制御を行う、
付記13に記載の情報処理装置。
(付記15)
前記第1の条件は、第1の時間内のトークンバケットに蓄積可能なトークン量の上限値を超過したトークン量、第2の時間内に設定帯域を超過して廃棄されたデータ量、第3の時間内にバーストが発生した回数、及び、トークンバケットの前記上限値に対する蓄積されているトークンの量、の少なくとも1つに基づく、
付記5又は7に記載の情報処理装置。
(付記16)
前記読出し帯域に基づいて決定される入力レートの閾値に応じた周期で前記入力レートの閾値に応じた量のトークンが追加されるトークンバケットを少なくとも1つ用いて前記入力レートが前記入力レートの閾値に達しているか否かを監視する入力レート監視部と、
前記読出し帯域に応じた周期で前記バッファに流入したデータ量と前記読出し帯域に応じた周期で前記バッファから読み出されるデータ量との差分に基づいて、前記入力レートの増減傾向を推測する入力レート増減監視部と、
をさらに備える付記2から15のいずれか一つに記載の情報処理装置。
(付記17)
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファを備える情報処理装置が、
単位時間当たりに前記バッファへ流入する前記複数のフローのデータ量の総和である入力レートを監視し、
前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
情報処理方法。
(付記18)
コンピュータに、
複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファへ単位時間当たりに流入する前記複数のフローのデータ量の総和である入力レートを監視させ、
前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行わせる、
ための情報処理プログラム。
(付記19)
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサと、
前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファと、
単位時間当たりに前記バッファへ流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、前記複数のポリサのそれぞれについて備えられる複数の制御部と、
を備える情報処理装置。
(付記20)
前記複数の制御部のそれぞれは、前記入力レートと、前記入力レートの増減傾向と、前記単位時間当たりに前記バッファから読み出し可能なデータ量である読出し帯域と、前記バーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、
付記19に記載の情報処理装置。
(付記21)
前記複数の制御部のそれぞれは、前記入力レートが、前記読出し帯域以下の第1の閾値より大きい場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
付記20に記載の情報処理装置。
(付記22)
前記複数の制御部のそれぞれは、前記入力レートが、前記第1の閾値よりも大きく且つ前記読出し帯域以下である第2の閾値以上であり、且つ、前記入力レートが増加傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
付記21に記載の情報処理装置。
(付記23)
前記複数の制御部のそれぞれは、前記入力レートが前記第2の閾値以上であり、且つ、前記入力レートが維持傾向であり、且つ、バーストが発生していると判定される場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
付記22に記載の情報処理装置。
(付記24)
前記複数の制御部のそれぞれは、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが増加傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を0に低減させる、
付記19から23のいずれか一つに記載の情報処理装置。
(付記25)
前記複数の制御部のそれぞれは、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが維持傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
付記20から24のいずれか一つに記載の情報処理装置。
(付記26)
前記複数の制御部のそれぞれは、前記読出し帯域と前記入力レートと前記バッファ内に存在するデータ量とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで増加させる、
付記20から25のいずれか一つに記載の情報処理装置。
(付記27)
前記複数の制御部のそれぞれは、前記トークンバケット内に蓄積されているトークン量を監視し、前記トークンバケットに蓄積されているトークン量に基づいて、バーストが発生していることを判定する、
付記19から26のいずれか一つに記載の情報処理装置。
(付記28)
前記複数の制御部のそれぞれは、所定時間内における、前記トークンバケットに所定の周期で追加されるトークン量のうち前記トークンバケットの前記蓄積可能なトークンの最大値を超過したトークン量、前記所定時間内における、前記トークンバケットにトークンが蓄積されていないことによって廃棄されたデータ量又はデータが廃棄された回数、及び、前記トークンバケットの前記蓄積可能なトークンの最大値に対する蓄積されているトークン量の割合、のうち少なくとも1つに基づいて、バーストが発生していることを判定する、
付記27に記載の情報処理装置。
(付記29)
前記複数の制御部のそれぞれは、前記入力レートと前記バーストの発生状況とに応じた低減幅の分だけ前記トークンバケットの前記蓄積可能なトークンの最大値を低減させる、付記19から28のいずれか一つに記載の情報処理装置。
(付記30)
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサのそれぞれについて、前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファへ単位時間当たりに流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、
情報処理方法。
(付記31)
コンピュータに、
蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサのそれぞれについて、前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファへ単位時間当たりに流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御させる、
ための情報処理プログラム。
1 スイッチ
2 入力QoS部
3 出力QoS部
20 ポリサ
21 バーストサイズ設定部
22 PIR設定部
23 トークン監視部
30 シェーパ
31 バッファ監視部
32 バッファ
33 出力制御部
34 バッファ蓄積予測部
35 入力レート監視部
36 入力レート増減監視部

Claims (20)

  1. 複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファと、
    単位時間当たりに前記バッファへ流入する前記複数のフローのデータ量の総和である入力レートを監視し、前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う監視部と、
    を備える情報処理装置。
  2. 前記監視部は、前記単位時間当たりに前記バッファから読み出し可能なデータ量である読出し帯域と前記入力レートと前記入力レートの増減傾向とに応じて、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
    請求項1に記載の情報処理装置。
  3. 前記監視部は、前記入力レートが、前記読出し帯域以下の第1の閾値より大きく、且つ、前記入力レートが増加傾向である場合に、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
    請求項2に記載の情報処理装置。
  4. 前記監視部は、前記入力レートが、前記第1の閾値よりも大きく且つ前記読出し帯域以下である第2の閾値以上であり、且つ、前記入力レートが増加傾向である場合に、前記複数のフローすべてについて前記バッファへのデータブロックの流入を抑制する制御を行う、
    請求項3に記載の情報処理装置。
  5. 前記監視部は、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが維持傾向である場合に、前記複数のフローのうちバーストトラフィックと判定される第1の条件を満たすフローについて前記バッファへのデータブロックの流入を停止し、前記複数のフローのうち前記第1の条件を満たしていないフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
    請求項2から4のいずれか一項に記載の情報処理装置。
  6. 前記監視部は、前記バッファ内に存在するデータ量を監視し、前記読出し帯域と、前記入力レートと、前記バッファ内に存在するデータ量と、前記入力レートの増減傾向と、に応じて、前記バッファへのデータブロックの流入が抑制されている前記少なくとも1つのフローについて、前記バッファへのデータブロックの流入を促進する制御を行う、
    請求項2から5のいずれか一項に記載の情報処理装置。
  7. 前記第1の条件は、第1の時間内のトークンバケットに蓄積可能なトークン量の上限値を超過したトークン量、第2の時間内に設定帯域を超過して廃棄されたデータ量、第3の時間内にバーストが発生した回数、及び、トークンバケットの前記上限値に対する蓄積されているトークンの量、の少なくとも1つに基づく、
    請求項5に記載の情報処理装置。
  8. 前記読出し帯域に基づいて決定される入力レートの閾値に応じた周期で前記入力レートの閾値に応じた量のトークンが追加されるトークンバケットを少なくとも1つ用いて前記入力レートが前記入力レートの閾値に達しているか否かを監視する入力レート監視部と、
    前記読出し帯域に応じた周期で前記バッファに流入したデータ量と前記読出し帯域に応
    じた周期で前記バッファから読み出されるデータ量との差分に基づいて、前記入力レートの増減傾向を推測する入力レート増減監視部と、
    をさらに備える請求項2から7のいずれか一項に記載の情報処理装置。
  9. 複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファを備える情報処理装置が、
    単位時間当たりに前記バッファへ流入する前記複数のフローのデータ量の総和である入力レートを監視し、
    前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行う、
    情報処理方法。
  10. コンピュータに、
    複数のフローそれぞれのデータブロックが格納され、順次データブロックが読み出されるバッファへ単位時間当たりに流入する前記複数のフローのデータ量の総和である入力レートを監視させ、
    前記入力レートの監視結果に応じて、前記複数のフローのうち少なくとも1つのフローについて前記バッファへのデータブロックの流入を抑制する制御を行わせる、
    ための情報処理プログラム。
  11. 蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサと、
    前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファと、
    単位時間当たりに前記バッファへ流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、前記複数のポリサのそれぞれについて備えられる複数の制御部と、
    を備える情報処理装置。
  12. 前記複数の制御部のそれぞれは、前記入力レートと、前記入力レートの増減傾向と、前記単位時間当たりに前記バッファから読み出し可能なデータ量である読出し帯域と、前記バーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、
    請求項11に記載の情報処理装置。
  13. 前記複数の制御部のそれぞれは、前記入力レートが、前記読出し帯域以下の第1の閾値より大きい場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
    請求項12に記載の情報処理装置。
  14. 前記複数の制御部のそれぞれは、前記入力レートが、前記第1の閾値よりも大きく且つ前記読出し帯域以下である第2の閾値以上であり、且つ、前記入力レートが増加傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
    請求項13に記載の情報処理装置。
  15. 前記複数の制御部のそれぞれは、前記入力レートが前記読出し帯域より大きく、且つ、前記入力レートが維持傾向である場合に、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで低減させる、
    請求項12から14のいずれか一項に記載の情報処理装置。
  16. 前記複数の制御部のそれぞれは、前記読出し帯域と、前記入力レートと、前記バッファ内に存在するデータ量と、前記入力レートの増減傾向と、に応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を所定値まで増加させる、
    請求項12から15のいずれか一項に記載の情報処理装置。
  17. 前記複数の制御部のそれぞれは、前記トークンバケット内に蓄積されているトークン量を監視し、前記トークンバケットに蓄積されているトークン量に基づいて、バーストが発生していることを判定する、
    請求項11から16のいずれか一項に記載の情報処理装置。
  18. 前記複数の制御部のそれぞれは、所定時間内における、前記トークンバケットに所定の周期で追加されるトークン量のうち前記トークンバケットの前記蓄積可能なトークンの最大値を超過したトークン量、前記所定時間内における、前記トークンバケットにトークンが蓄積されていないことによって廃棄されたデータ量又はデータが廃棄された回数、及び、前記トークンバケットの前記蓄積可能なトークンの最大値に対する蓄積されているトークン量の割合、のうち少なくとも1つに基づいて、バーストが発生していることを判定する、
    請求項17に記載の情報処理装置。
  19. 蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサのそれぞれについて、前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファへ単位時間当たりに流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御する、
    情報処理方法。
  20. コンピュータに、
    蓄積可能なトークンの最大値を有するトークンバケットを用いて流入するデータブロックの出力制御を行う複数のポリサのそれぞれについて、前記複数のポリサそれぞれから出力されたデータブロックを集約して出力するバッファへ単位時間当たりに流入するデータ量である入力レートとバーストの発生状況とに応じて、前記トークンバケットの前記蓄積可能なトークンの最大値を制御させる、
    ための情報処理プログラム。
JP2017162753A 2017-08-25 2017-08-25 情報処理装置、情報処理方法、及び、情報処理プログラム Pending JP2019041289A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017162753A JP2019041289A (ja) 2017-08-25 2017-08-25 情報処理装置、情報処理方法、及び、情報処理プログラム
US16/100,946 US20190065425A1 (en) 2017-08-25 2018-08-10 Information processing device, information processing method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017162753A JP2019041289A (ja) 2017-08-25 2017-08-25 情報処理装置、情報処理方法、及び、情報処理プログラム

Publications (1)

Publication Number Publication Date
JP2019041289A true JP2019041289A (ja) 2019-03-14

Family

ID=65435164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017162753A Pending JP2019041289A (ja) 2017-08-25 2017-08-25 情報処理装置、情報処理方法、及び、情報処理プログラム

Country Status (2)

Country Link
US (1) US20190065425A1 (ja)
JP (1) JP2019041289A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022162712A1 (ja) * 2021-01-26 2022-08-04 三菱電機株式会社 データ転送装置及びデータ転送方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11159455B1 (en) 2018-12-28 2021-10-26 Innovium, Inc. Reducing power consumption in an electronic device
CN111726300A (zh) * 2020-06-15 2020-09-29 哈工大机器人(合肥)国际创新研究院 一种数据发送方法及装置
US11539628B2 (en) * 2020-06-23 2022-12-27 Arista Networks, Inc. Automated configuration of policer parameters

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5994579B2 (ja) * 2012-11-01 2016-09-21 富士通株式会社 フレーム変換装置及びフレーム変換方法及び伝送装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022162712A1 (ja) * 2021-01-26 2022-08-04 三菱電機株式会社 データ転送装置及びデータ転送方法

Also Published As

Publication number Publication date
US20190065425A1 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
US10148599B2 (en) Programmable broadband gateway hierarchical output queueing
JP2019041289A (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
JP5538257B2 (ja) 帯域監視装置、及びパケット中継装置
US7568045B1 (en) Method and apparatus for estimating periodic worst-case delay under actual and hypothetical conditions using a measurement based traffic profile
US7149187B1 (en) Random early detection policer using randomization of packet drops
US11032179B2 (en) Heterogeneous flow congestion control
US6674718B1 (en) Unified method and system for scheduling and discarding packets in computer networks
CN107948103B (zh) 一种基于预测的交换机pfc控制方法及控制系统
US8576850B2 (en) Band control apparatus, band control method, and storage medium
US10313244B2 (en) Congestion control within a communication network
TW201340648A (zh) 用於分封交換網路的系統及其方法、在分封交換網路中用於接收資料包的交換機中的方法
EP4175232A1 (en) Congestion control method and device
JP2002330165A (ja) 輻輳制御装置
US9350669B2 (en) Network apparatus, performance control method, and network system
EP2761826A1 (en) Attribution of congestion contributions
JP2009253481A (ja) パケット転送装置
WO2017161967A1 (zh) 包每秒流量监管方法、装置和计算机存储介质
JP4605859B2 (ja) 双方向リングネットワークにおけるノード間の通信管理方法。
JP2009188542A (ja) 帯域制御装置および帯域制御方法
JP5783632B2 (ja) ネットワークトラヒック制御装置、制御方法、およびプログラム
JP4195221B2 (ja) コンピュータ・ネットワークでパケットの伝送を制御する方法およびシステム
CN109391558B (zh) 一种队列的控制方法及控制装置
Briscoe Rapid Signalling of Queue Dynamics
US10951526B2 (en) Technologies for efficiently determining a root of congestion with a multi-stage network switch
JP2004104417A (ja) データ中継装置、および中継データ制御方法、並びにコンピュータ・プログラム