フレーム転送装置、および、フレーム転送方法
【課題】本発明は、複数のキューイングバッファを備えるフレーム転送装置において、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制するための技術を提供することを目的とする。
【解決手段】 フレーム転送装置は、3以上のキューイングバッファと、各キューイングバッファからフレームを読み出す優先順位を記憶する記憶部と、優先順位に応じてフレームを読み出して転送をおこなうバッファ読み出し部と、受信したフレームをフレームに含まれる情報に応じて複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、バッファ書き込み部は、いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、第1のキューイングバッファと、第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう。
【解決手段】 フレーム転送装置は、3以上のキューイングバッファと、各キューイングバッファからフレームを読み出す優先順位を記憶する記憶部と、優先順位に応じてフレームを読み出して転送をおこなうバッファ読み出し部と、受信したフレームをフレームに含まれる情報に応じて複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、バッファ書き込み部は、いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、第1のキューイングバッファと、第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、フレーム転送装置、および、フレーム転送方法に関する。
【背景技術】
【0002】
従来から、企業のデータセンター等において、サーバとユーザ端末との間や、サーバ間等におけるフレームの転送をおこなうフレーム転送装置が知られている。ここで「フレーム」とは、ネットワークにおける通信で使用されるデータフォーマットを意味している。フレーム転送装置の多くには、受信したフレームを一時的に保存するためのメモリであるキューイングバッファが複数備えられている。このキューイングバッファは、フレームの転送処理をおこなうときや、フレーム転送装置のフレーム転送処理速度が回線速度と異なるとき等に使用される。
【0003】
このキューイングバッファに関して、フレームの格納が1つのキューイングバッファに集中したときに、キューイングバッファの許容量を超えてフレームの一部が破棄される不具合があった。この不具合を回避するために複数備えられたキューイングバッファに関して、音声データや動画データ等のリアルタイム通信用のフレームを格納するキューイングバッファのフレームの蓄積量が閾値に達した場合、このキューイングバッファから優先的にフレームの読み出しをおこなう輻輳制御方法等が知られている(特許文献1、2、3)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−72569号
【特許文献2】特開平11−32050号
【特許文献3】特開2001−186181号
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、従来技術では、複数のキューイングバッファが輻輳状態となっている場合、どのキューイングバッファをより優先するかについては十分な制御をおこなうことができなかった。また、複数のキューイングバッファがそれぞれ優先度の異なるフレームを格納している場合、優先度の低いキューイングバッファで輻輳状態が発生したときに、どのキューイングバッファから優先的にフレームを読み出すかについては十分な制御をおこなうことができなかった。このように、複数のキューイングバッファを備えるフレーム転送装置において、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制する技術に関してはなお、改善の余地があった。
【0006】
本発明は、上記した課題の少なくとも一部を解決するためになされた発明であり、複数のキューイングバッファを備えるフレーム転送装置において、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制するための技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題の少なくとも一部を解決するために、本願発明は、以下の態様または適用例として実現することが可能である。
【0008】
[適用例1]
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記バッファ書き込み部は、いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう、フレーム転送装置。
【0009】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0010】
[適用例2]
適用例1に記載のフレーム転送装置において、
前記バッファ書き込み部は、前記第2のキューイングバッファが輻輳状態の場合には、前記所定の条件を満たさないものと判断して、前記優先順位の入れ替えをおこなわない、フレーム転送装置。
【0011】
この構成によれば、キューイングバッファの輻輳状態を検出したときに、そのキューイングバッファより優先順位が1つ上位のキューイングバッファが既に輻輳状態である場合には、この2つのキューイングバッファの間では優先順位の入れ替えをおこなわないため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0012】
[適用例3]
適用例1または適用例2に記載のフレーム転送装置において、
前記バッファ書き込み部は、前記第1のキューイングバッファの優先順位が、過去におこなわれた優先順位の入れ替えによって、1つ下がっている場合には、
(i)前記優先順位の入れ替えを解消するとともに、
(ii)前記第2のキューイングバッファが輻輳状態ではない場合には、前記第1のキューイングバッファと、前記第2のキューイングバッファとの優先順位の入れ替えをおこなう、フレーム転送装置。
【0013】
この構成によれば、過去の優先順位の入れ替えによって、優先順位が1つ下がっているキューイングバッファが輻輳状態になると、このキューイングバッファの優先順位を1つ上げて元に戻し、さらに、このキューイングバッファよりも優先順位が1つ上位のキューイングバッファが輻輳状態ではない場合には、優先順位が1つ上位のキューイングバッファと優先順位の入れ替えをおこなうため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0014】
[適用例4]
適用例1ないし適用例3のいずれかに記載のフレーム転送装置において、
前記バッファ読み出し部は、過去におこなわれた前記優先順位の入れ替えによって、優先順位が1つ上がっている前記第1のキューイングバッファの輻輳状態の解消を検出すると、前記優先順位の入れ替えを解消する、フレーム転送装置。
【0015】
この構成によれば、過去の優先順位の入れ替えによって、優先順位が1つ上がっているキューイングバッファの輻輳状態が解消すると、このキューイングバッファの優先順位を1つ下げて元に戻すため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0016】
[適用例5]
適用例1ないし適用例4のいずれかに記載のフレーム転送装置において、
前記記憶部には、前記各キューイングバッファの現在の優先順位を示す情報と、前記各キューイングバッファの初期の優先順位を示す情報とが記憶され、
前記バッファ書き込み部は、前記初期の優先順位において、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位を、前記現在の優先順位を示す情報において、前記第1のキューイングバッファより優先順位が1つ下位になるように前記現在の優先順位を示す情報を書き換え、
前記バッファ読み出し部は、前記現在の優先順位に応じて、前記キューイングバッファからフレームを読み出して転送をおこなう、フレーム転送装置。
【0017】
この構成によれば、記憶部には、各キューイングバッファの現在の優先順位を示す情報と、各キューイングバッファの初期の優先順位を示す情報を記憶することによって、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0018】
[適用例6]
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう工程と、を備えるフレームの転送方法。
【0019】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0020】
[適用例7]
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記記憶部は、各前記キューイングバッファのそれぞれに設定される輻輳閾値と輻輳解消閾値とを記憶し、
前記バッファ書き込み部は、
(i)フレームの蓄積量が前記輻輳閾値を超えたときに前記キューイングバッファの輻輳状態を検出し、フレームの蓄積量が前記輻輳解消閾値を下回ったときに前記キューイングバッファの輻輳状態の解消を検出し、
(ii)いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、
(iii)前記第1のキューイングバッファに設定された前記輻輳解消閾値を減少させる、フレーム転送装置。
【0021】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。また、いずれかのキューイングバッファが輻輳状態になると、輻輳状態となったキューイングバッファに設定された輻輳解消閾値を減少させるため、キューイングバッファの輻輳に伴う不具合の発生をより抑制することができる。
【0022】
[適用例8]
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記記憶部は、各前記キューイングバッファのそれぞれに設定される輻輳閾値と輻輳解消閾値とを記憶し、
前記バッファ書き込み部は、
(i)フレームの蓄積量が前記輻輳閾値を超えたときに前記キューイングバッファの輻輳状態を検出し、フレームの蓄積量が前記輻輳解消閾値を下回ったときに前記キューイングバッファの輻輳状態の解消を検出し、
(ii)いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、
(iii)所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、前記キューイングバッファに設定された前記輻輳閾値を増加させる、フレーム転送装置。
【0023】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。また、所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、そのキューイングバッファに設定された輻輳閾値を増加させるため、キューイングバッファの輻輳に伴う不具合の発生をより抑制することができる。
【0024】
[適用例9]
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
フレームの蓄積量が輻輳閾値を超えたときにキューイングバッファの輻輳状態を検出し、フレームの蓄積量が輻輳解消閾値を下回ったときにキューイングバッファの輻輳状態の解消を検出する工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、前記第1のキューイングバッファに設定されている輻輳解消閾値を減少させる工程と、を備えるフレームの転送方法。
【0025】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。また、いずれかのキューイングバッファが輻輳状態になると、輻輳状態となったキューイングバッファに設定された輻輳解消閾値を減少させるため、キューイングバッファの輻輳に伴う不具合の発生をより抑制することができる。
【0026】
[適用例10]
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
フレームの蓄積量が輻輳閾値を超えたときにキューイングバッファの輻輳状態を検出し、フレームの蓄積量が輻輳解消閾値を下回ったときにキューイングバッファの輻輳状態の解消を検出する工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう工程と、
所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、前記キューイングバッファに設定された輻輳閾値を増加させる工程と、を備えるフレームの転送方法。
【0027】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。また、所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、そのキューイングバッファに設定された輻輳閾値を増加させるため、キューイングバッファの輻輳に伴う不具合の発生をより抑制することができる。
【0028】
なお、本発明は、上記以外の種々の形態で実現することが可能であり、例えば、フレーム転送装置を含んで構成されるネットワークシステム、フレーム転送装置の制御方法、キューイングバッファの制御方法、これらの制御方法を実現するためのコンピュータープログラム、および、そのコンピュータープログラムを記録した記憶媒体等の形態で実現することができる。また、本発明に係るフレーム転送装置は、適宜、他の部材と組み合わせて適用することができる。
【図面の簡単な説明】
【0029】
【図1】第1実施例に係るフレーム転送装置を含んで構成されるネットワークシステムを例示した説明図である。
【図2】フレーム転送装置の概略構成を説明するための説明図である。
【図3】フレームが属する優先クラスの特定方法を説明するための説明図である。
【図4】バッファ状態管理テーブルの内容を説明するための説明図である。
【図5】キューイングバッファの輻輳状態の検出方法を説明するための説明図である。
【図6】キューイングバッファの輻輳状態の解消を検出する方法を説明するための説明図である。
【図7】バッファ書き込み部150の処理の流れを示したフローチャートである。
【図8】図7のステップS107における優先度変更設定解除処理の流れを示したフローチャートである。
【図9】ステップS107の優先度変更設定解除処理時のバッファ状態管理テーブルを説明するための説明図である。
【図10】図7のステップS111における優先度変更設定処理の流れを示したフローチャートである。
【図11】優先度変更設定処理時のバッファ状態管理テーブルを説明するための説明図である。
【図12】バッファ読み出し部160の処理の流れを示したフローチャートである。
【図13】図12のステップS408における優先度変更設定解除処理の流れを示したフローチャートである。
【図14】ステップS408の優先度変更設定解除処理時のバッファ状態管理テーブルを説明するための説明図である。
【図15】フレーム転送装置の動作を例示するための第1の説明図である。
【図16】図15の動作時のバッファ状態管理テーブルを説明するための説明図である。
【図17】フレーム転送装置の動作を例示するための第2の説明図である。
【図18】図17の動作時のバッファ状態管理テーブルを説明するための説明図である。
【図19】フレーム転送装置の動作を例示するための第3の説明図である。
【図20】図19の動作時のバッファ状態管理テーブルを説明するための説明図である。
【図21】第2実施例に係るフレーム転送装置の概略構成を説明するための説明図である。
【図22】バッファ閾値管理テーブルの内容を説明するための説明図である。
【図23】第2実施例におけるバッファ書き込み部150の処理の流れを示したフローチャートである。
【図24】図23のステップS120における輻輳閾値Th1変更判定処理の流れを示したフローチャートである。
【図25】ステップS120の輻輳閾値Th1変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図26】ステップS120の輻輳閾値Th1変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図27】図23のステップS140における輻輳閾値Th1変更解除処理の流れを示したフローチャートである。
【図28】ステップS140の輻輳閾値Th1変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図29】ステップS140の輻輳閾値Th1変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図30】図23のステップS150における輻輳解消閾値Th2変更判定処理の流れを示したフローチャートである。
【図31】ステップS150の輻輳解消閾値Th2変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図32】ステップS150の輻輳解消閾値Th2変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図33】図30のステップS160における下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の流れを示したフローチャートである。
【図34】ステップS160の輻輳解消閾値Th2変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図35】第2実施例におけるバッファ読み出し部160の処理の流れを示したフローチャートである。
【図36】図35のステップS420における対象優先クラスに対する輻輳解消閾値Th2変更解除処理の流れを示したフローチャートである。
【図37】ステップS420の輻輳解消閾値Th2変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図38】第2実施例のフレーム転送装置の動作を例示するための第1の説明図である。
【図39】図38の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【図40】第2実施例のフレーム転送装置の動作を例示するための第2の説明図である。
【図41】図40の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【図42】第2実施例のフレーム転送装置の動作を例示するための第3の説明図である。
【図43】図42の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【図44】第2実施例のフレーム転送装置の動作を例示するための第4の説明図である。
【図45】図44の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【図46】第2実施例のフレーム転送装置の動作を例示するための第5の説明図である。
【図47】図46の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【発明を実施するための形態】
【0030】
A.第1実施例:
図1は、第1実施例に係るフレーム転送装置を含んで構成されるネットワークシステムを例示した説明図である。ネットワークシステム10は、会社内等において構築されるシステムであって、フレーム転送装置100と、ユーザ端末200と、サーバ300と、ストレージ400と、設定監視用端末500と、を備えている。フレーム転送装置100は、ユーザ端末200と、サーバ300と、ストレージ400と、設定監視用端末500にそれぞれ接続され、各装置間のフレームのやりとりの中継をおこなう。
【0031】
フレーム転送装置100は、各装置から受信したフレームを転送の優先度に応じて複数のクラスに分類し、優先度の高いクラスに属するフレームを優先的に転送する。一方、フレーム転送装置100は、クラスごとのフレームの受信量に応じて一時的にクラスの優先度を切り替える。以後、本実施例では、上述したように転送の優先度に応じたフレームの分類を「優先クラス」または単に「クラス」と呼ぶ。フレーム転送装置100の具体的な動作については後述する。
【0032】
サーバ300は、ユーザ端末200からのアプリケーションの要求に応じて、ストレージ400に格納されている画像データや動画データ等の種々のデータを取得し、ユーザ端末200に転送する。設定監視用端末500は、フレーム転送装置100の設定や状態の管理をおこなうために使用される。
【0033】
図2は、フレーム転送装置の概略構成を説明するための説明図である。
フレーム転送装置100は、フレーム転送部110と、複数の回線インターフェース部131〜133とを備えている。フレーム転送部110は、回線インターフェース部131〜133とそれぞれ接続され、回線インターフェース部131〜133間のフレーム転送をおこなう。本実施例では、回線インターフェース部131は、ストレージ400と接続され、回線インターフェース部132は、サーバ300と接続され、回線インターフェース部133は、ユーザ端末200と接続されている。
【0034】
フレーム転送部110は、キューイングバッファ群140と、バッファ書き込み部150と、バッファ読み出し部160と、優先クラステーブル170と、バッファ状態管理テーブル180と、を備えている。キューイングバッファ群140は、フレームを格納するための複数(ここでは4つ)のキューイングバッファ141〜144により構成されている。以後、4つのキューイングバッファ141〜144をそれぞれ、第1キューイングバッファ141、第2キューイングバッファ142、第3キューイングバッファ143、第4キューイングバッファ144とも呼ぶ。優先クラステーブル170とバッファ状態管理テーブル180は、メモリなどによって構成される記憶部190に記憶されている。
【0035】
各キューイングバッファ141〜144は、互いに優先度の異なる4つの優先クラスとそれぞれ一対一に対応付けられている。すなわち、各キューイングバッファ141〜144には、バッファ書き込み部150によって、同じ優先クラスに属するフレームが格納される。また、バッファ読み出し部160によって、優先度の高い優先クラスのキューイングバッファから優先的にフレームが読み出され、転送される。
【0036】
バッファ書き込み部150は、フレーム転送装置100がフレームを受信すると、フレームに含まれる情報(以後「フレーム内情報」とも呼ぶ)に応じた優先クラスのキューイングバッファに格納する。バッファ書き込み部150は、優先クラステーブル170を参照することによってフレームが属する優先クラスを特定する。
【0037】
図3は、フレームが属する優先クラスの特定方法を説明するための説明図である。図3(a)は、フレームの概略構造を説明するための説明図である。図3(a)に示すように、フレームには、宛先、送信元、ユーザ種別、アプリケーション種別、アプリケーションデータなどのフレーム内情報が含まれている。アプリケーション種別とは、アプリケーションデータの種別を識別可能な情報であり、アプリケーションデータが、例えば、音声データ、動画データ、静止画像データ、文字データなどのいずれであるかを特定するための情報である。本実施例では、このアプリケーション種別として、TCPやUDPプロトコルのヘッダに含まれるポート番号が利用される。バッファ書き込み部150は、例えば、フレームからアプリケーション種別を読み出し、優先クラステーブル170を参照することによって、そのフレームが属する優先クラスを特定する。
【0038】
図3(b)は、優先クラステーブルの内容を説明するための説明図である。優先クラステーブル170は、アプリケーション種別F11と、優先クラスF12との2つのフィールドを備え、アプリケーション種別と優先クラスとの対応関係が示されている。ここでは、優先クラスとして、優先クラスに対応するキューイングバッファ141〜144が示されている。優先クラステーブル170では、例えば、エントリE11において、音声データとキューイングバッファ141とが対応付けられている。また、エントリE12において、動画データとキューイングバッファ142とが対応付けられている。バッファ書き込み部150は、フレーム転送装置100が受信したフレームが音声データであることを特定すると、優先クラステーブル170を参照してそのフレームをキューイングバッファ141に格納する。なお、優先クラステーブル170の内容は、設定監視用端末500によって任意に設定可能に構成されていてもよい。
【0039】
バッファ読み出し部160は、キューイングバッファ141〜144に格納されているフレームを読み出して転送する。このとき、バッファ読み出し部160は、優先度の高い優先クラスに対応するキューイングバッファから優先的にフレームを読みだし、転送をおこなう。バッファ読み出し部160は、バッファ状態管理テーブル180を参照することによって、各キューイングバッファに対応する優先クラスの優先度を特定する。
【0040】
図4は、バッファ状態管理テーブルの内容を説明するための説明図である。バッファ状態管理テーブル180は、優先クラスF21と、現在優先度F22と、初期優先度F23と、輻輳フラグF24と、優先度変更設定フラグF25の5つのフィールドを備えている。優先クラスF21は、優先クラステーブル170の優先クラスF12(図3)と同様に、キューイングバッファ141〜144を示している。
【0041】
現在優先度F22は、各優先クラスの相対的な優先順位を示している。すなわち、バッファ読み出し部160によって読み出されるキューイングバッファの優先順位が示されている。ここでは、現在優先度の値が大きいほどがより優先順位が高いことを示している。よって、図4では、第1キューイングバッファ141が最も優先順位が高く、順に優先順位が下がり、第4キューイングバッファ144が最も優先順位が低い状態が示されている。現在優先度F22は、後述するように、バッファ書き込み部150やバッファ読み出し部160によって値が適宜書き替えられる。初期優先度F23は、設定監視用端末500を介して予め設定された各優先クラスの相対的な優先順位であり、現在優先度F22の初期設定値として用いられる。
【0042】
輻輳フラグF24は、各優先クラスのキューイングバッファが輻輳状態にあるか否かを示している。ここでは、輻輳状態ではない優先クラスに「0」がセットされ、輻輳状態となったときに「1」がセットされる。輻輳フラグF24は、後述するように、バッファ書き込み部150がキューイングバッファの輻輳状態を検出すると、対応する優先クラスに「1」がセットされる。また、輻輳フラグF24は、後述するように、バッファ読み出し部160がキューイングバッファの輻輳状態の解消を検出すると、対応する優先クラスに「0」がセットされる。輻輳状態の解消とは、輻輳状態であったキューイングバッファが輻輳状態でなくなったことをいう。
【0043】
優先度変更設定フラグF25は、各優先クラスにおいて、優先度変更設定がおこなわれている否かを示している。優先度変更設定とは、隣接する優先クラスの現在優先度が一時的に入れ替えられた状態に設定されることであり、後に詳述する。図4では、優先度変更設定によって一時的に現在優先度が低下している優先クラスに「1」がセットされ、それ以外の優先クラスに「0」がセットされている。優先度変更設定フラグF25は、後述するように、バッファ書き込み部150とバッファ読み出し部160によって書き替えられる。
【0044】
図5は、キューイングバッファの輻輳状態の検出方法を説明するための説明図である。図5には、フレームの格納によって輻輳状態になる第2キューイングバッファ142が一例として示されている。第2キューイングバッファ142を含む各キューイングバッファ141〜144には、データの蓄積量が所定量を超えているか否かを判定するための輻輳閾値Th1が予め設定されている。バッファ書き込み部150は、第2キューイングバッファ142にフレームを格納した後に、第2キューイングバッファ142に蓄積されているフレームデータの蓄積量が輻輳閾値Th1を超えたか否かを判定する。
【0045】
図5の下方に示すように、フレームの蓄積量が輻輳閾値Th1を超える場合には、バッファ書き込み部150は、第2キューイングバッファ142について輻輳状態を検出する。バッファ書き込み部150は、輻輳状態を検出すると、バッファ状態管理テーブル180の第2キューイングバッファ142に対応する優先クラスの輻輳フラグF24を「1」にセットする。バッファ書き込み部150は、すべてのキューイングバッファ141〜144について輻輳状態になっているか否かの検出をおこなう。なお、輻輳閾値Th1は、設定監視用端末500によって予め任意の値に設定することができる。また、キューイングバッファ141〜144ごとに異なる値を設定するともできる。また、設定監視用端末500によって、キューイングバッファ141〜144ごとに設定されている輻輳閾値Th1と、データの蓄積量が確認できるようにしてもよい。
【0046】
図6は、キューイングバッファの輻輳状態の解消を検出する方法を説明するための説明図である。図6には、フレームの送出によって輻輳状態が解消した第2キューイングバッファ142が一例として示されている。第2キューイングバッファ142を含む各キューイングバッファ141〜144には、データの蓄積量が所定量を下回っているか否か判定するための輻輳解消閾値Th2が予め設定されている。輻輳解消閾値Th2は輻輳閾値Th1よりも小さい値になるように設定されている(Th2<Th1)。
【0047】
バッファ読み出し部160は、輻輳状態の第2キューイングバッファ142からフレームを読み出した後に、第2キューイングバッファ142に蓄積されているフレームデータの蓄積量が輻輳解消閾値Th2を下回ったか否かを判定する。図6の下方に示すように、フレームの蓄積量が輻輳解消閾値Th2を下回った場合には、バッファ読み出し部160は、第2キューイングバッファ142について輻輳状態の解消を検出する。バッファ読み出し部160は、輻輳状態の解消を検出すると、バッファ状態管理テーブル180の第2キューイングバッファ142に対応する優先クラスの輻輳フラグF24を「0」にセットする。
【0048】
バッファ読み出し部160は、すべてのキューイングバッファ141〜144について輻輳状態が解消しているか否かの検出をおこなう。なお、輻輳解消閾値Th2についても、設定監視用端末500によって予め任意の値に設定することができる。また、キューイングバッファ141〜144ごとに異なる値を設定するともできる。また、設定監視用端末500によって、キューイングバッファ141〜144ごとに設定されている輻輳解消閾値Th2が確認できるようにしてもよい。また、輻輳解消閾値Th2と輻輳閾値Th1は、同じ値であってもよい(Th2=Th1)。
【0049】
図7は、バッファ書き込み部150の処理の流れを示したフローチャートである。バッファ書き込み部150は、回線インターフェース部131〜133のいずれかがフレームを受信すると、回線インターフェース部からフレームを取り出す(ステップS101)。
【0050】
バッファ書き込み部150は、取り出したフレームからアプリケーション種別を読み出す。上述したように、ここでは、TCPやUDPプロトコルのヘッダに含まれるポート番号が読み出される。その後、バッファ書き込み部150は、優先クラステーブル170(図3)を参照して、読み出したアプリケーション種別からそのフレームが属する優先クラスを特定する(ステップS102)。以後、ステップS102において特定された優先クラスを「対象優先クラス」とも呼ぶ。
【0051】
バッファ書き込み部150は、対象優先クラスに対応するキューイングバッファにそのフレームを書き込む(ステップS103)。書き込みをおこなった後、バッファ書き込み部150は、このキューイングバッファが輻輳状態となったか否かを判定する(ステップS104)。輻輳状態か否かの判定方法は、図5を用いて説明したとおりである。
【0052】
バッファ書き込み部150は、このキューイングバッファの輻輳状態を検出しなかった場合(ステップS104:NO)、ステップS101に戻り、再度、回線インターフェース部131〜133のいずれかがフレームを受信するまで待機する。一方、輻輳状態を検出した場合(ステップS104:YES)、バッファ書き込み部150は、バッファ状態管理テーブル180(図4)を参照して、対象優先クラスの輻輳フラグF24が「1」であるか否かを判定する(ステップS105)。
【0053】
対象優先クラスの輻輳フラグF24が「0」である場合(ステップS105:NO)、この対象優先クラスの輻輳フラグF24を「1」にセットする(ステップS106)。すなわち、今回のフレームの書き込みによって、キューイングバッファが新たに輻輳状態になったため、対応する優先クラスの輻輳フラグF24が「0」から「1」に切り替えられたことになる。
【0054】
バッファ書き込み部150は、対象優先クラスの輻輳フラグF24を「1」にセットした後、対象優先クラスと、対象優先クラスより初期優先度の低い(下位の)優先クラスに対する優先度変更設定解除処理をおこなう(ステップS107)。対象優先クラスと、対象優先クラスより下位の優先クラスに対する優先度変更設定解除処理とは、対象優先クラスや対象優先クラスより初期優先度F23の低い(下位の)優先クラスにおいて優先度変更設定がおこなわれている場合に、この設定を解除するための処理である。なお、優先度変更設定がおこなわれている優先クラスか否かについては、優先度変更設定フラグF25が「1」となっているか否かで判別することができる。優先クラスである。対象優先クラス以下の優先クラスに対する優先度変更設定解除処理の詳細については、図8を用いて後述する。
【0055】
なお、バッファ状態管理テーブル180に図4の内容が設定された状態で、第2キューイングバッファ142が対象優先クラスに対応する場合、対象優先クラスよりも下位の優先クラスとは、第3キューイングバッファ143と第4キューイングバッファ144にそれぞれ対応する優先クラスが該当する。一方、第1キューイングバッファ141と対応する優先クラスは、対象優先クラスよりも上位の優先クラスに該当する。
【0056】
ステップS105において、対象優先クラスの輻輳フラグF24が既に「1」である場合、または、ステップS107の処理をおこなった後、バッファ書き込み部150は、対象優先クラスよりも初期優先度F23の高い(上位の)優先クラスが存在するか否かを判定する(ステップS108)。具体的には、バッファ書き込み部150は、バッファ状態管理テーブル180の初期優先度F23を参照して、対象優先クラスよりも上位の優先クラスが存在するか否かを判定する。上位の優先クラスが存在しない場合(ステップS108:NO)、すなわち、対象優先クラスが第1キューイングバッファ141と対応している場合、バッファ書き込み部150の処理は、ステップS101に戻る。
【0057】
対象優先クラスよりも上位の優先クラスが存在する場合(ステップS108:YES)、バッファ書き込み部150の処理は、さらに、対象優先クラスよりも一つ上位(直上)の優先クラスの輻輳フラグF24が「1」か否かを判定する(ステップS109)。直上の優先クラスの輻輳フラグF24が「1」である場合(ステップS109:YES)、バッファ書き込み部150の処理は、ステップS101に戻る。
【0058】
直上の優先クラスの輻輳フラグF24が「0」である場合(ステップS109:NO)、バッファ書き込み部150は、対象優先クラスより上位のいずれかの優先クラスにおいて優先度変更設定がおこなわれているか否かを判定する(ステップS110)。この判定は、対象優先クラスより上位のいずれかの優先クラスにおいて、優先度変更設定フラグF25が「1」となっているか否かによっておこなうことができる。
【0059】
対象優先クラスより上位の優先クラスのいずれかにおいて優先度変更設定がおこなわれている場合には(ステップS110:YES)、バッファ書き込み部150の処理は、ステップS101に戻る。一方、対象優先クラスより上位のすべての優先クラスにおいて優先度変更設定がおこなわれていない場合には(ステップS110:NO)、バッファ書き込み部150は、優先度変更設定処理をおこなう(ステップS111)。優先度変更設定処理とは、対象優先クラスと、対象優先クラスの直上の優先クラスの現在優先度を入れ替える処理である。優先度変更設定処理の詳細については、図10を用いて後述する。優先度変更設定処理を実行した後、バッファ書き込み部150の処理は、ステップS101に戻る。
【0060】
図8は、図7のステップS107における優先度変更設定解除処理の流れを示したフローチャートである。図9は、ステップS107の優先度変更設定解除処理時のバッファ状態管理テーブルを説明するための説明図である。バッファ書き込み部150は、この優先度変更設定解除処理によって、対象優先クラスと、対象優先クラスより下位の各優先クラスにおいて、現在優先度と初期優先度とが等しくなるように設定する。以下に優先度変更設定解除処理の一例を示す。ここでは、バッファ書き込み部150は、優先クラスのうちのいずれか1つを設定登録可能な優先クラス登録部を備えているものとして説明する。なお、優先クラス登録部は、バッファ書き込み部150が優先クラスのうちのいずれか1つを識別可能な構成であればよく、優先クラスの識別情報を記憶する記憶部やフラグなどで構成することができる。
【0061】
バッファ書き込み部150は、まず、優先クラス登録部に対象優先クラスを登録する(ステップS201)。この対象優先クラスは、図7のステップS105における対象優先クラスと同じものである。ここでは、図9の第2キューイングバッファ142を対象優先クラスとして説明する。
【0062】
バッファ書き込み部150は、バッファ状態管理テーブル180を参照し、優先クラス登録部に登録された優先クラス(以後「登録優先クラス」とも呼ぶ)の優先度変更設定フラグF25が「1」であるか否かを判定する(ステップS202)。初回のこのステップでは、優先クラス登録部には対象優先クラスが登録されているため、対象優先クラスの優先度変更設定フラグF25が「1」であるか否かが判定される。図9(a)では、対象優先クラス(第2キューイングバッファ142)の優先度変更設定フラグF25は「1」となっている。
【0063】
登録優先クラスの優先度変更設定フラグF25が「1」である場合(ステップS202:YES)、バッファ書き込み部150は、登録優先クラスの現在優先度F22を登録優先クラスの初期優先度F23と同じ値にセットする(ステップS203)。具体的には、バッファ書き込み部150は、バッファ状態管理テーブル180を参照して、登録優先クラスの初期優先度F23を読み込み、同じクラスの現在優先度F22に書き込む。その結果、図9(b)に示すように、登録優先クラスの現在優先度と初期優先度とが等しくなる。
【0064】
さらに、バッファ書き込み部150は、登録優先クラスの一つ下位の(直下の)優先クラスの現在優先度F22を同じクラスの初期優先度F23と同じ値にセットする(ステップS204)これにより、図9(c)に示すように、登録優先クラスの一つ下位の優先クラスにおいても現在優先度と初期優先度とが等しくなる。その後、バッファ書き込み部150は、図9(d)に示すように、登録優先クラスの優先度変更設定フラグF25を「0」にセットする(ステップS205)。
【0065】
ステップS202において、登録優先クラスの優先度変更設定フラグF25が「0」である場合、または、ステップS205の処理の後、バッファ書き込み部150は、登録優先クラスより下位の優先クラスが存在するか否かを判定する(ステップS206)。登録優先クラスより下位の優先クラスが存在しない場合(ステップS206:NO)処理を終了する。
【0066】
一方、登録優先クラスより下位の優先クラスが存在する場合(ステップS206:YES)、バッファ書き込み部150は、現在の登録優先クラスよりも一つ下位の(直下の)優先クラスを新たな登録優先クラスとして優先クラス登録部に登録する(ステップS207)。その後、ステップS202に戻り、新たな登録優先クラスに対して同様の処理をおこなう。上述した優先度変更設定解除処理により、対象優先クラスおよび対象優先クラスより下位のすべての優先クラスにおいて、優先度変更設定フラグが「0」にセットされ、現在優先度F22が初期優先度F23と等しくなる。
【0067】
図10は、図7のステップS111における優先度変更設定処理の流れを示したフローチャートである。図11は、優先度変更設定処理時のバッファ状態管理テーブルを説明するための説明図である。バッファ書き込み部150は、この優先度変更設定処理によって、対象優先クラスの現在優先度と、直上の優先クラスの現在優先度との入れ替えをおこなう。以下に優先度変更設定処理の一例を示す。ここでは、図11(a)の第3キューイングバッファ143を対象優先クラスとして説明する。
【0068】
バッファ書き込み部150は、対象優先クラスよりも一つ上位(直上)の優先クラスの現在優先度F22を対象優先クラスの初期優先度F23と同じ値にセットする(ステップS301)。具体的には、図11(b)に示すように、バッファ書き込み部150は、バッファ状態管理テーブル180を参照して、対象優先クラスの初期優先度F23を読み込み、直上の優先クラスの現在優先度F22に書き込む。
【0069】
また、バッファ書き込み部150は、対象優先クラスの現在優先度F22を直上の優先クラスの初期優先度F23と同じ値にセットする(ステップS302)。具体的には、図11(c)に示すように、バッファ書き込み部150は、バッファ状態管理テーブル180を参照して、直上の優先クラスの初期優先度F23を読み込み、対象優先クラスの現在優先度F22に書き込む。これにより、対象優先クラスの直上の優先クラスの現在優先度F22と、対象優先クラスの現在優先度F22が入れ替わる。すなわち、対象優先クラスの直上の優先クラスと、対象優先クラスの優先順位が入れ替わる。
【0070】
その後、バッファ書き込み部150は、図11(d)に示すように、対象優先クラスの直上の優先クラスの優先度変更設定フラグF25を「1」にセットする。すなわち、初期優先度が下位の優先クラスよりも高いが、現在優先度が低い状態の優先クラスの優先度変更設定フラグF25に「1」がセットされる。以上により優先度変更設定処理が終了する。
【0071】
図12は、バッファ読み出し部160の処理の流れを示したフローチャートである。バッファ読み出し部160は、各キューイングバッファ141〜144について、フレームが蓄積されているか否かを判定する(ステップS401)。蓄積されている場合には、バッファ読み出し部160は、蓄積されているキューイングバッファのうち、現在優先度F22が最も高いキューイングバッファから優先して蓄積されたフレームを読みだし、回線インターフェース部131〜133のいずれかに送出する(ステップS402)。バッファ読み出し部160は、読み出したフレームに含まれる宛先情報(図3)を参照して送出先の回線インターフェース部を決定する。ここで、「優先して読み出す」とは、現在優先度のより高いキューイングバッファにおいてフレームの蓄積がなくなるまで読み出しを継続し、フレームの蓄積がなくなると順次現在優先度の低いキューイングバッファの読み出しをおこなうことをいう。
【0072】
バッファ読み出し部160は、ステップS402においてフレームを読み出した優先クラス(以後「対象優先クラス」とも呼ぶ)の輻輳フラグF24が「1」であるか否かを判定する(ステップS403)。対象優先クラスの輻輳フラグF24が「0」である場合(ステップS403:NO)、バッファ読み出し部160の処理は、ステップS401に戻る。
【0073】
一方、対象優先クラスの輻輳フラグF24が「1」である場合(ステップS403:YES)、バッファ読み出し部160は、対象優先クラスと対応するキューイングバッファの輻輳状態が解消しているか否かを判定する(ステップS404)。対応するキューイングバッファの輻輳状態が解消していない場合(ステップS404:NO)バッファ読み出し部160の処理は、ステップS401に戻る。
【0074】
一方、対応するキューイングバッファの輻輳状態が解消している場合(ステップS404:YES)、バッファ読み出し部160は、対象優先クラスの輻輳フラグF24を「0」にセットする(ステップS405)。
【0075】
対象優先クラスの輻輳フラグF24を「0」にセットした後、バッファ読み出し部160は、対象優先クラスよりも初期優先度の高い(上位の)優先クラスが存在するか否かを判定する(ステップS406)。対象優先クラスよりも上位の優先クラスが存在する場合(ステップS406:YES)、バッファ読み出し部160は、対象優先クラスよりも一つ上位(直上)の優先クラスの優先度変更設定フラグF25が「1」か否かを判定する(ステップS407)。
【0076】
直上の優先クラスの優先度変更設定フラグF25が「1」である場合(ステップS407:YES)、バッファ読み出し部160は、直上の優先クラスに対する優先度変更設定解除処理をおこなう(ステップS408)。直上の優先クラスに対する優先度変更設定解除処理とは、対象優先クラスより初期優先度が1つ高い(直上の)優先クラスにおいて優先度変更設定がおこなわれている場合に、この設定を解除するための処理である。直上の優先クラスに対する優先度変更設定解除処理の詳細については、図13を用いて後述する。
【0077】
ステップS406において、対象優先クラスよりも上位の優先クラスが存在しない場合(ステップS406:NO)、ステップS407において、直上の優先クラスの優先度変更設定フラグF25が「0」である場合(ステップS407:NO)、および、ステップS408の処理が終了したときに、バッファ読み出し部160の処理は、ステップS401に戻る。
【0078】
図13は、図12のステップS408における優先度変更設定解除処理の流れを示したフローチャートである。図14は、ステップS408の優先度変更設定解除処理時のバッファ状態管理テーブルを説明するための説明図である。バッファ読み出し部160は、この優先度変更設定解除処理によって、対象優先クラスの現在優先度と、対象優先クラスの直上の優先クラスの現在優先度とが入れ替わっている状態を解消する。以下に優先度変更設定解除処理の一例を示す。ここでは、図14(a)の第3キューイングバッファ143を対象優先クラスとして説明する。
【0079】
バッファ読み出し部160は、対象優先クラスの現在優先度F22を対象優先クラスの初期優先度F23と同じ値にセットする(ステップS501)具体的には、図14(b)に示すように、バッファ読み出し部160は、バッファ状態管理テーブル180を参照して、対象優先クラスの初期優先度F23を読み込み、同じクラスの現在優先度F22に書き込む。これにより、対象優先クラスの現在優先度と初期優先度とが等しくなる。
【0080】
さらに、バッファ読み出し部160は、図14(c)に示すように、対象優先クラスの一つ上位の(直上の)優先クラスの現在優先度F22を同じクラスの初期優先度F23と同じ値にセットする(ステップS502)。これにより、対象優先クラスの一つ上位の優先クラスにおいても現在優先度と初期優先度とが等しくなる。すなわち、対象優先クラスの直上の優先クラスの現在優先度F22と、対象優先クラスの現在優先度F22が入れ替わっていた状態が解消する。これにより、対象優先クラスの直上の優先クラスの優先順位が、対象優先クラスの優先順位より低い状態が解消する。その後、図14(d)に示すように、バッファ読み出し部160は、対象優先クラスの直上の優先クラスの優先度変更設定フラグF25を「0」にセットする(ステップS503)。以上により優先度変更設定解除処理が終了する。
【0081】
図15は、フレーム転送装置の動作を例示するための第1の説明図である。図16は、図15の動作時のバッファ状態管理テーブルを説明するための説明図である。はじめに、バッファ状態管理テーブル180には、図4の内容が設定されているものとして説明する。
【0082】
図15(a)では、バッファ読み出し部160によって、現在優先度F22の最も高い第1キューイングバッファ141からフレームの読み出しがおこなわれている。一方、バッファ書き込み部150によって、第2キューイングバッファ142へのフレームの書き込みがおこなわれ、第2キューイングバッファ142が輻輳状態となっている。
【0083】
バッファ書き込み部150は、第2キューイングバッファ142の輻輳状態を検出すると(図7、ステップS104)、図16(a)に示すように、第2キューイングバッファ142と対応する優先クラスの輻輳フラグF24を「1」にセットする(ステップS106)。その後、ステップS111において、図16(b)に示すように、バッファ書き込み部150は、優先度変更設定処理をおこない、第1キューイングバッファ141と対応する優先クラスと、第2キューイングバッファ142と対応する優先クラスの現在優先度F22を入れ替える。また、第1キューイングバッファ141と対応する優先クラスの優先度変更設定フラグF25を「1」にセットする(図10、ステップS303)。この結果、バッファ読み出し部160は、優先順位の最も高い第2キューイングバッファ142からフレームの読み出しをおこなう。
【0084】
図15(b)では、バッファ読み出し部160によって、現在優先度F22の最も高い第2キューイングバッファ142からフレームの読み出しがおこなわれている。また、読み出しの結果、第2キューイングバッファ142の輻輳状態が解消している。バッファ読み出し部160は、第2キューイングバッファ142の輻輳状態の解消を検出すると(図12、ステップS404)、図16(c)に示すように、第2キューイングバッファ142と対応する優先クラスの輻輳フラグF24を「0」にセットする(ステップS405)。その後、ステップS408において、バッファ読み出し部160は、優先度変更設定解除処理をおこない、図16(d)に示すように、第1キューイングバッファ141と対応する優先クラスと、第2キューイングバッファ142と対応する優先クラスの現在優先度F22をそれぞれ各クラスの初期優先度F23の値に戻す。また、第1キューイングバッファ141と対応する優先クラスの優先度変更設定フラグF25を「0」にセットする(図13、ステップS503)。この結果、図15(c)に示すように、バッファ読み出し部160は、優先順位の最も高い第1キューイングバッファ141から再度、フレームの読み出しをおこなう。このとき、第2キューイングバッファ142は、一時的に読み出しが優先されたため、輻輳状態が解消している。
【0085】
このように、本実施例のフレーム転送装置100によれば、輻輳状態が検出されたキューイングバッファと対応する優先クラスと、その直上の優先クラスの優先順位を入れ替えるため、輻輳状態が検出されたキューイングバッファにおいては、バッファ読み出し部160による優先的なフレームの読み出しによって、キューイングバッファの許容量を超えたフレームが破棄される不具合の発生を抑制することができる。一方、優先度変更設定によって優先順位が1つ下がった優先クラスのキューイングバッファは、フレームの蓄積量が増加しやすい状態となり、収容可能領域を有効に活用することができる。
【0086】
図17は、フレーム転送装置の動作を例示するための第2の説明図である。図18は、図17の動作時のバッファ状態管理テーブルを説明するための説明図である。ここでも、バッファ状態管理テーブル180には、図4の内容が設定されているものとして説明する。
【0087】
図17(a)では、第3キューイングバッファ143が輻輳状態となり、1つ上位の優先クラスに対応する第2キューイングバッファ142で優先度変更設定がおこなわれている状態が示されている。このとき、図18(a)に示すように、第2キューイングバッファ142と対応する優先クラスと第3キューイングバッファ143と対応する優先クラスの優先順位が入れ替わっているため、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順にそれぞれ1、3、2、4となる。
【0088】
図17(b)では、図17(a)の状態からさらに、第4キューイングバッファ144が輻輳した状態が示されている。この場合、バッファ書き込み部150は、第4キューイングバッファ144の輻輳状態を検出して(図7、ステップS104)、図18(b)に示すように、第4キューイングバッファ144と対応する優先クラスの輻輳フラグF24を「1」にセットする(ステップS106)。しかし、直上の第3キューイングバッファ143と対応する優先クラスの輻輳フラグF24は「1」であるため(ステップS109:YES)、バッファ書き込み部150は、優先度変更設定処理をおこなわない。すなわち、第3キューイングバッファ143と対応する優先クラスの優先度変更設定をおこなわず、第3キューイングバッファ143と対応する優先クラスと第4キューイングバッファ144と対応する優先クラスとの優先順位の入れ替えをおこなわない。よって、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、図13(a)と変わらず1、3、2、4の順となる。
【0089】
図17(c)では、図17(a)の状態からさらに、第2キューイングバッファ142が輻輳した状態が示されている。この場合、バッファ書き込み部150は、図18(c)に示すように、第2キューイングバッファ142と対応する優先クラスの輻輳フラグF24を「1」にセットした後(ステップS106)、ステップS107の優先度変更設定解除処理により、第2キューイングバッファ142と対応する優先クラスの優先度変更設定を解除する。また、バッファ書き込み部150は、第1キューイングバッファ141が輻輳状態ではない場合には(ステップS109:NO)、第1キューイングバッファ141と対応する優先クラスの優先度変更設定に「1」をセットする(ステップS111)。この結果、第1キューイングバッファ141と対応する優先クラスと第2キューイングバッファ142と対応する優先クラスの優先順位が入れ替わるため、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順にそれぞれ2、1、3、4となる。
【0090】
図17(d)では、図17(a)の状態からさらに、第1キューイングバッファ141が輻輳した状態が示されている。この場合、バッファ書き込み部150は、図18(d)に示すように、第1キューイングバッファ141と対応する優先クラスの輻輳フラグF24を「1」にセットした後(ステップS106)、ステップS107の優先度変更設定解除処理により、第2キューイングバッファ142と対応する優先クラスの優先度変更設定を解除する。この結果、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順にそれぞれ1、2、3、4となる。
【0091】
図19は、フレーム転送装置の動作を例示するための第3の説明図である。図20は、図19の動作時のバッファ状態管理テーブルを説明するための説明図である。図19(a)は、図17(b)と同じ状態を示している。図19(b)では、図19(a)の状態から、第3キューイングバッファ143の輻輳が解消した状態が示されている。この場合、バッファ読み出し部160は、第3キューイングバッファ143の輻輳状態の解除を検出して(ステップS404)、図20(a)に示すように、第3キューイングバッファ143と対応する優先クラスの輻輳フラグF24を「0」にセットする(ステップS405)。
【0092】
ステップS408の優先度変更設定解除処理により、バッファ読み出し部160は、図20(b)に示すように、第2キューイングバッファ142と対応する優先クラスの優先度変更設定を解除する(ステップS408)。一方、バッファ書き込み部150は、図20(c)に示すように、第3キューイングバッファ143と対応する優先クラスの優先度変更設定に「1」をセットする(ステップS111)。この結果、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順にそれぞれ1、2、4、3となる。
【0093】
このように、本実施例のフレーム転送装置100によれば、輻輳状態が検出されたキューイングバッファと対応する優先クラスの優先順位を最上位とするのではなく、その直上の優先クラスの優先順位を入れ替えるため、基本的には、初期優先度に応じてフレームの読み出しをおこないつつ、輻輳状態が発生した一部のキューイングバッファに対しては優先順位を入れ替えることによって、フレームの破棄等の不具合の発生を抑制することができる。また、3以上の複数のキューイングバッファにおいて輻輳状態が検出された場合であっても、輻輳状態が発生したキューイングバッファの優先クラスの優先順位を上げつつ、フレーム種別に応じた本来の優先順位(初期優先度)を反映させた優先順位に応じてフレームの読み出しをおこなうことができる。そのため、例えば、リアルタイム通信用のフレームなどの読み出しを優先しつつ、輻輳状態のキューイングバッファにおける不具合の発生を抑制することができる。また、優先順位の入れ替えによって、一時的に優先順位が低下したキューイングバッファが輻輳状態となったときには、優先順位の入れ替えを解消するため、優先順位の高いフレームの破棄の発生を優先的に抑制しつつ、他のフレームの破棄の発生を抑制することができる。
【0094】
本実施例のフレーム転送装置100によれば、音声データや動画データ等のリアルタイム通信用フレームと、文字データや静止画像データなどの非リアルタイム通信用フレームの2つについての優先順位の設定に限定されず、例えば、リアルタイム通信用フレームの中でも、音声データと動画データとで優先順位を変えることができる。これにより、フレーム転送装置の送信品質をより向上させることができる。
【0095】
B.第1実施例の変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0096】
B1.変形例1:
本実施例では、各キューイングバッファ141〜144は、それぞれ1つの優先クラスに対応するものとして説明したが、フレーム転送装置100が備える複数のキューイングバッファは、1つの優先クラスに複数のキューイングバッファが対応する構成であってもよい。また、本実施例では、フレーム転送装置100は、4つのキューイングバッファ141〜144を備えるものとして説明したが、2つ以上であれば4つに限定されない。
【0097】
B2.変形例2:
本実施例では、バッファ書き込み部150は、フレームからアプリケーション種別を読み出してそのフレームが属する優先クラスを特定するものとして説明したが、バッファ書き込み部150は、フレームから送信元MACアドレスや、宛先MACアドレス、VLAN−ID、ユーザ優先度、DSCP、送信元ポート番号、宛先ポート番号のうちの1対上の情報に基づいて、優先クラスを特定する構成であってもよい。
【0098】
B3.変形例3:
本実施例では、キューイングバッファの輻輳状態は、バッファ書き込み部150が検出するものとして説明したが、設定監視用端末500が輻輳状態を検出し、対応する輻輳フラグF24に「1」をセットする構成であってもよい。また、設定監視用端末500がキューイングバッファの輻輳状態の解消を検出してもよい。
【0099】
B4.変形例4:
本実施例では、バッファ読み出し部160は、現在優先度のより高いキューイングバッファにおいてフレームの蓄積がなくなるまで読み出しを継続し、フレームの蓄積がなくなると順次現在優先度の低いキューイングバッファの読み出す通常優先制御をおこなうものとして説明したが、現在優先度が高いほど読み出し頻度を高く設定して全てのキューイングバッファから順次読み出す重み付け優先制御をおこなう構成としてもよい。あるいは、現在優先度が高いほど1回の読み出し時間を長く(読み出しデータ量を多く)設定し、全てのキューイングバッファが循環的にフレームを読み出すようにしてもよい。
【0100】
C.第2実施例:
図21は、第2実施例に係るフレーム転送装置の概略構成を説明するための説明図である。第2実施例のフレーム転送装置102は、第1実施例のフレーム転送装置100(図2)と比較すると、フレーム転送部110の記憶部190にバッファ閾値管理テーブル185が追加されている点が異なる。第2実施例のフレーム転送装置102は、各キューイングバッファ141〜144に予め設定されている輻輳閾値Th1(図5)と輻輳解消閾値Th2(図6)の設定値を、輻輳状態の頻度等に応じて変化させることができる。バッファ閾値管理テーブル185は、キューイングバッファ141〜144の各々の輻輳閾値Th1と輻輳解消閾値Th2の現在の設定値を管理するためのテーブルであり、各キューイングバッファ141〜144の輻輳状態を示すフラグや、変更後の新たな設定値を算出するための情報などが登録されている。第2実施例のバッファ書き込み部150、および、バッファ読み出し部160は、後述するように、バッファ閾値管理テーブル185を参照して、各キューイングバッファ141〜144に設定されている輻輳閾値Th1と輻輳解消閾値Th2の設定値を変更させる。
【0101】
図22は、バッファ閾値管理テーブルの内容を説明するための説明図である。バッファ閾値管理テーブル185は、優先クラスF301と、閾値種別F302と、変更状態フラグF303と、初期設定値F304と、変更方向F305と、最大変更幅F306と、変更段階数F307と、輻輳度数F308と、現在設定値F309と、継続フラグF310と、継続時間F311の11つのフィールドを備えている。バッファ閾値管理テーブル185の各エントリE31〜E38は、各キューイングバッファ141〜144の輻輳閾値Th1および輻輳解消閾値Th2とそれぞれ対応している。例えば、エントリE36は、第3キューイングバッファ143の輻輳解消閾値Th2と対応している。以後、輻輳閾値Th1と輻輳解消閾値Th2の2つをあわせて単に「閾値Th」とも呼ぶ。
【0102】
優先クラスF301は、そのエントリと対応する閾値Thが属するキューイングバッファ141〜144を示している。閾値種別F302は、そのエントリと対応する閾値Thが輻輳閾値Th1か輻輳解消閾値Th2かを示している。優先クラスF301および閾値種別F302によって、複数の閾値Thの中から、エントリと対応する1つの閾値Th(以後「対応閾値Th」とも呼ぶ)を特定することができる。
【0103】
変更状態フラグF303は、対応閾値Thが後述する設定初期値aから変更されている状態(以後「変更状態」とも呼ぶ)となっているか否かを示している。ここでは、対応閾値Thが変更されている場合には「1」がセットされ、変更されていない場合には「0」がセットされる。
【0104】
初期設定値F304は、対応閾値Thの初期設定値a(%)を示している。初期設定値aとは、対応閾値Thの初期値であり、変更状態となる前の対応閾値Thの設定値として使用される。初期設定値aは、設定監視用端末500を介して予め設定することができる。ここでは、初期設定値aは、各キューイングバッファの最大データ蓄積量に対する蓄積量割合(%)で示されている。例えば、輻輳閾値Th1の初期設定値aとして「60」が設定されているキューイングバッファは、データ蓄積量が全体の60%となったときに輻輳状態が検出される。
【0105】
変更方向F305は、対応閾値Thの変更方向bを示している。変更方向bとは、変更状態のときの対応閾値Thが初期設定値aに対して増加するのか減少するのかを示す値である。ここでは、変更状態の対応閾値Thが初期設定値aに対して増加する場合、すなわち、対応閾値Thがキューイングバッファにおけるフレーム蓄積量増加方向(図5の左方向)に移動する場合に「1」が示されている。一方、変更状態の対応閾値Thが初期設定値aに対して減少する場合、すなわち、対応閾値Thがキューイングバッファにおけるフレーム蓄積量減少方向(図5の右方向)に移動する場合に「−1」が示されている。変更方向bは、設定監視用端末500を介して予め設定することができる。ここでは、各キューイングバッファの輻輳閾値Th1に対応するエントリに「1」がセットされ、輻輳解消閾値Th2に対応するエントリに「−1」がセットされている。
【0106】
最大変更幅F306は、対応閾値Thの最大変更幅c(%)を示している。最大変更幅cとは、変更状態のときの対応閾値Thを算出する際に用いられる値であり、初期設定値aに加算または減算される蓄積量割合(%)の最大値である。例えば、変更状態時に増加する対応閾値Thは、増加後の最大値が初期設定値a+最大変更幅cとなる。一方、変更状態時に減少する対応閾値Thは、減少後の最小値が初期設定値a−最大変更幅cとなる。最大変更幅cは、設定監視用端末500を介して予め設定することができる。
【0107】
変更段階数F307は、対応閾値Thの変更段階数dを示している。変更段階数dとは、対応閾値Thが初期設定値aから、最大値または最小値(初期設定値a±最大変更幅c)になるまでの間に段階的に値が変化するときの段階数を示している。例えば、変更段階数dに「3」が設定されている対応閾値Thは、初期設定値aの後、1段階目の値α、2段階目の値βを経て、3段階目の値として初期設定値a±最大変更幅cが設定される(a<α<β<a+c、または、a>α>β>a−c)。変更段階数dは、設定監視用端末500を介して予め設定することができる。
【0108】
輻輳度数F308は、対応閾値Thの輻輳度数Xを示している。輻輳度数Xとは、キューイングバッファの輻輳状態の発生のしやすさ、または、発生のしにくさの程度を示す度数である。後述するように、キューイングバッファで輻輳状態が発生した場合、または、一定時間(例えば、1時間)以上輻輳状態が発生していない場合に、1つカウントアップされる。ここでは、輻輳閾値Th1に対応するエントリにおいて、輻輳状態の発生にしにくさを示す度数として使用され、輻輳解消閾値Th2に対応するエントリにおいて、輻輳状態の発生のしやすさを示す度数として使用される。
【0109】
現在設定値F309は、対応閾値Thの現在設定値Y(%)を示している。現在設定値Yとは、対応閾値Thの現在の値であり、初期設定値aや、以下の式(1)によって算出された値Yが設定される。
Y=a+b×c×X/d ・・・(1)
ここで、aは初期設定値であり、bは変化方向であり、cは最大変更幅であり、Xは輻輳度数であり、dは変更段階数dである。また、0<a+|b×c|≦100である。
【0110】
継続フラグF310は、キューイングバッファが輻輳状態ではない状態(非輻輳状態)が継続しているか否かを示している。キューイングバッファが非輻輳状態の時に「1」がセットされ、キューイングバッファが輻輳状態の時に「0」がセットされる。
【0111】
継続時間F311は、対応閾値Thの非輻輳状態継続時間Tc(秒)を示している。非輻輳状態継続時間Tcとは、キューイングバッファが非輻輳状態のときの継続時間であり、非輻輳状態時に1秒ずつカウントアップされ、キューイングバッファが輻輳状態になると「0」が設定される。
【0112】
図23は、第2実施例におけるバッファ書き込み部150の処理の流れを示したフローチャートである。図23は、第1実施例の図7と対応している。図23のフローチャートは、図7のフローチャートと比較すると、ステップS120、S112、S140、S150が新たに追加されている点が異なる。図23のステップS101〜S111は、図7と同様のため説明を省略する。
【0113】
フレームの書き込みの後に(ステップS103)、キューイングバッファ(対象優先クラス)が輻輳状態とならなかった場合(ステップS104:NO)、バッファ書き込み部150は、輻輳閾値Th1変更判定処理をおこなう(ステップS120)。輻輳閾値Th1変更判定処理とは、所定の時間以上輻輳状態となっていないキューイングバッファに設定されている輻輳閾値Th1をフレーム蓄積量増加方向(図5左方向)に移動させるための処理である。輻輳閾値Th1変更判定処理の詳細については、図24を用いて後述する。
【0114】
一方、フレームの書き込みの後に(ステップS103)、キューイングバッファ(対象優先クラス)が輻輳状態となった場合(ステップS104:YES)、バッファ書き込み部150は、バッファ閾値管理テーブル185(図22)を参照して、対象優先クラスの輻輳閾値Th1の変更状態フラグF303が「1」か否かを判定する(ステップS112)。変更状態フラグF303が「1」の場合(ステップS112:YES)、バッファ書き込み部150は、対象優先クラスに対する輻輳閾値Th1変更解除処理をおこなう(ステップS140)。輻輳閾値Th1変更解除処理とは、輻輳閾値Th1が変更状態となっているキューイングバッファにおいて、変更状態フラグF303を「0」にセットして、変更状態を解除するための処理である。ここでは、対象優先クラスの輻輳閾値Th1に対しておこなわれる。これにより、輻輳状態となったキューイングバッファ(対象優先クラス)の輻輳閾値Th1が初期の状態に戻される。対象優先クラスに対する輻輳閾値Th1変更解除処理の詳細については、図27を用いて後述する。
【0115】
ステップS140において、輻輳閾値Th1変更解除処理を実行した後、または、ステップS112において、変更状態フラグF303が「0」の場合(ステップS112:NO)、バッファ書き込み部150は、対象優先クラスに対する輻輳解消閾値Th2変更判定処理をおこなう(ステップS150)。輻輳解消閾値Th2変更判定処理とは、所定の時間以上輻輳状態となっているキューイングバッファに設定されている輻輳解消閾値Th2をフレーム蓄積量減少方向(図5右方向)に移動させるための処理である。ここでは、対象優先クラスの輻輳解消閾値Th2に対しておこなわれる。これにより、輻輳状態となったキューイングバッファ(対象優先クラス)の輻輳解消閾値Th2が変更される。輻輳解消閾値Th2変更判定処理の詳細については、図30を用いて後述する。輻輳解除閾値Th2変更判定処理(ステップS150)の後、バッファ書き込み部150の処理は、ステップS101に戻る。以上が第2実施例のバッファ書き込み部150の処理の流れである。
【0116】
図24は、図23のステップS120における輻輳閾値Th1変更判定処理の流れを示したフローチャートである。図25と図26は、ステップS120の輻輳閾値Th1変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。以下では、輻輳閾値Th1変更判定処理の一例として、対象優先クラスのキューイングバッファが所定時間(ここでは、設定時間Tp)以上輻輳状態ではない場合に対象優先クラスの輻輳閾値Th1を増加方向に変更させる処理について説明する。設定時間Tp(例えば、3600秒)は、設定監視用端末500を介して予め任意に設定することができる。
【0117】
まず、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の継続フラグF310が「1」であるか否かを判定する(ステップS121)。ここでは、図25の第2キューイングバッファ142を対象優先クラスとして説明する。図25(a)では、対象優先クラス(第2キューイングバッファ142)の輻輳閾値Th1(エントリE33)の継続フラグF310は「0」となっている。
【0118】
継続フラグF310が「0」の場合(ステップS121:NO)、バッファ書き込み部150は、図25(b)に示すように、対象優先クラスの輻輳閾値Th1の継続フラグF310を「1」にセットする(ステップS122)。続いて、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の継続時間F311に示されている非輻輳状態継続時間Tc(秒)のカウントアップを開始する(ステップS123)。ステップS123の後、バッファ書き込み部150は、処理を終了する。
【0119】
一方、ステップS121において、図25(c)に示すように、対象優先クラス(第2キューイングバッファ142)の輻輳閾値Th1の継続フラグF310が「1」となっている場合(ステップS121:YES)、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の継続時間F311に示されている非輻輳状態継続時間Tc(秒)が設定時間Tp(ここでは、3600秒)以上か否かを判定する(ステップS124)。すなわち、このステップS124では、対象優先クラスの輻輳フラグF24(図4)が「0」にセットされた状態で1時間以上経過しているか否かが判定される。図25(c)では、対象優先クラスの輻輳閾値Th1の非輻輳状態継続時間Tcは「3600」であり、設定時間Tp以上(ここでは、Tc=Tp)となっている。すなわち、図25(c)で示される対象優先クラス(第2キューイングバッファ142)は、輻輳フラグF24(図4)が「0」のままちょうど1時間経過した状態となっている。
【0120】
非輻輳状態継続時間Tcが設定時間Tp以上(ここでは、Tc≧3600)の場合(ステップS124:YES)、バッファ書き込み部150は、図26(d)に示すように、対象優先クラスの輻輳閾値Th1の輻輳度数Xを「+1」カウントアップする(ステップS125)。一方、図26(c)とは異なり、非輻輳状態継続時間Tcが設定時間Tpより小さい場合(ステップS124:NO)、バッファ書き込み部150は、処理を終了する。キューイングバッファの非輻輳状態が所定以上継続しておらず、輻輳閾値Th1を増加方向に変更させる必要がないためである。
【0121】
ステップS125において輻輳度数Xをカウントアップした後、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の現在設定値Yを更新する(ステップS126)。具体的には、バッファ書き込み部150は、上述した式(1)によって算出した値を用いて、現在設定値F309に設定されている現在設定値Yを更新する。図26(d)では、対象優先クラスの輻輳閾値Th1の初期設定値aは「50」、変更方向bは「1」、最大変更幅cは「20」、変更段階数dは「10」、輻輳度数Xは「1」となっている。そのため、式(1)によって算出される値は「52」(52=50+1×20×1/10)となる。よって、図26(e)に示すように、現在設定値F309に新たな現在設定値Yとして「52」がセットされる。現在設定値Yが「50」から「52」に更新されることによって、対象優先クラスの輻輳閾値Th1は、増加方向に変更される。
【0122】
続いて、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の変更状態フラグF303が「1」であるか否かを判定する(ステップS127)。図26(e)では、対象優先クラスの輻輳閾値Th1の変更状態フラグF303は「0」となっている。変更状態フラグF303が「0」の場合(ステップS127:NO)、バッファ書き込み部150は、図26(f)に示すように、対象優先クラスの輻輳閾値Th1の変更状態フラグF303を「1」にセットする(ステップS128)。その後、バッファ書き込み部150は、処理を終了する。一方、変更状態フラグF303が「1」の場合(ステップS127:YES)、バッファ書き込み部150は、そのまま処理を終了する。以上が輻輳閾値Th1変更判定処理の流れである。
【0123】
上述した輻輳閾値Th1変更判定処理によれば、対象優先クラスの輻輳フラグF24(図4)が所定の時間以上「0」となった場合に、輻輳閾値Th1を増加方向に変更させることができる。また、輻輳フラグF24の「0」が継続していれば、輻輳閾値Th1変更判定処理を繰り返すことによって、対象優先クラスの輻輳閾値Th1を順次増加方向に変更させることができる。すなわち、輻輳フラグF24の「0」の継続時間に応じて輻輳閾値Th1の増加量を変化させることができる。
【0124】
図27は、図23のステップS140における輻輳閾値Th1変更解除処理の流れを示したフローチャートである。図28と図29は、ステップS140の輻輳閾値Th1変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。ここでは、図28の第2キューイングバッファ142を対象優先クラスとして説明する。図28(a)では、対象優先クラス(第2キューイングバッファ142)の輻輳閾値Th1(エントリE33)の現在設定値Yは「52」となっている。
【0125】
まず、バッファ書き込み部150は、図28(b)に示すように、対象優先クラスの輻輳閾値Th1の現在設定値Yに初期設定値aをセットする(ステップS141)。その後、バッファ書き込み部150は、図28(c)に示すように、対象優先クラスの輻輳閾値Th1の輻輳度数Xを「0」にセットする(ステップS142)。また、バッファ書き込み部150は、図29(d)に示すように、対象優先クラスの輻輳閾値Th1の変更状態フラグを「0」にセットする(ステップS143)。また、バッファ書き込み部150は、図29(e)に示すように、対象優先クラスの輻輳閾値Th1の継続フラグを「0」にセットする(ステップS144)。バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1のTcのカウントアップを停止する(ステップS145)。また、バッファ書き込み部150は、図29(f)に示すように、対象優先クラスの輻輳閾値Th1のTcを「0」にセットする(ステップS146)。その後、バッファ書き込み部150は、処理を終了する。以上が輻輳閾値Th1変更解除処理の流れである。
【0126】
図30は、図23のステップS150における輻輳解消閾値Th2変更判定処理の流れを示したフローチャートである。図31と図32は、ステップS150の輻輳解消閾値Th2変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。以下では、輻輳解消閾値Th2変更判定処理の一例として、輻輳状態となった対象優先クラスの輻輳解消閾値Th2を減少方向に変更させ、対象優先クラスより下位の優先クラスの輻輳解消閾値Th2を初期の状態に戻す処理について説明する。ここでは、図31の第2キューイングバッファ142を対象優先クラスとして説明する。
【0127】
バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2の輻輳度数Xが変更段階数dよりも小さいか否かを判定する(ステップS151)。図31(a)の対象優先クラスの輻輳解消閾値Th2(エントリE34)の輻輳度数Xは「0」であり、変更段階数dは「10」である。よって、輻輳度数Xが変更段階数dよりも小さい状態となっている。
【0128】
輻輳度数Xが変更段階数dよりも小さい場合(ステップS151:YES)、バッファ書き込み部150は、図31(b)に示すように、対象優先クラスの輻輳解消閾値Th2の輻輳度数Xを「+1」カウントアップする(ステップS152)。一方、図31とは異なり、対象優先クラスの輻輳解消閾値Th2の輻輳度数Xが変更段階数d以上となっている場合(ステップS151:NO)、バッファ書き込み部150は、処理を終了する。
【0129】
ステップS152において輻輳度数Xを「+1」カウントアップした後、バッファ書き込み部150は、上位の優先クラスが存在するか否かを判定する(ステップS153)。図31では、第2キューイングバッファ142を対象優先クラスとしているため、上位の優先クラス(第1キューイングバッファ141)が存在している。
【0130】
上位の優先クラスが存在する場合(ステップS153:YES)、上位の優先クラスにおいて、輻輳解消閾値Th2の変更状態フラグF303に「1」が存在するか否かを判定する(ステップS154)。一方、図31とは異なり、対象優先クラスの上位の優先クラスが存在しない場合(ステップS153:NO)、バッファ書き込み部150は、ステップS154をスキップする。図31では、上位の優先クラス(第1キューイングバッファ141)の輻輳解消閾値Th2の変更状態フラグF303に「1」が存在しない。
【0131】
上位の優先クラスにおいて、輻輳解消閾値Th2の変更状態フラグF303に「1」が存在しない場合(ステップS154:NO)、バッファ書き込み部150は、下位の優先クラスにおいて、輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しいか否かを判定する(ステップS155)。一方、図31とは異なり、上位の優先クラスにおいて、輻輳解消閾値Th2の変更状態フラグF303に「1」が存在する場合(ステップS154:YES)、バッファ書き込み部150は、処理を終了する。図31では、下位の優先クラス(第3キューイングバッファ143)において、各輻輳解消閾値Th2(エントリE36)の現在設定値Y(Y=48)が初期設定値a(a=50)と異なっている。
【0132】
下位の優先クラスにおいて、輻輳解消閾値Th2の現在設定値Yが初期設定値aと異なる場合(ステップS155:NO)、バッファ書き込み部150は、下位の優先クラスに対する輻輳解消閾値Th2変更解除処理をおこなう(ステップS160)。輻輳解消閾値Th2変更解除処理とは、輻輳解消閾値Th2が変更状態となっているキューイングバッファにおいて、変更状態フラグF303を「0」にセットして、変更状態を解除するための処理である。ここでは、下位の優先クラスに対して輻輳解消閾値Th2変更解除処理がおこなわれるため、図31(c)に示すように、下位の優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)において、変更状態フラグF303が「0」にセットされ、現在設定値Yに初期設定値aである「50」がセットされる。下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の詳細については、図32を用いて後述する。一方、図31とは異なり、下位のすべての優先クラスにおいて、輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しい場合(ステップS155:YES)、バッファ書き込み部150は、ステップS160をスキップする。
【0133】
次に、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2の現在設定値Yを更新する(ステップS157)。具体的には、バッファ書き込み部150は、上述した式(1)によって算出した値を用いて、現在設定値F309に設定されている現在設定値Yを更新する。図31(c)では、対象優先クラスの輻輳解消閾値Th2の初期設定値aは「50」、変更方向bは「−1」、最大変更幅cは「20」、変更段階数dは「10」、輻輳度数Xは「1」となっている。そのため、式(1)によって算出される値は「48」(48=50+1×20×(−1)/10)となる。よって、図32(d)に示すように、現在設定値F309に新たな現在設定値Yとして「48」がセットされる。現在設定値Yが「50」から「48」に更新されることによって、対象優先クラスの輻輳解消閾値Th2は、減少方向に変更される。次に、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「1」であるか否かを判定する(ステップS158)。図32(d)では、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303は「0」となっている。
【0134】
変更状態フラグF303が「0」の場合(ステップS158:NO)、バッファ書き込み部150は、図31(e)に示すように、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303を「1」にセットする(ステップS159)。その後、バッファ書き込み部150は、処理を終了する。一方、図32と異なり、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「1」の場合(ステップS158:YES)、バッファ書き込み部150は、そのまま処理を終了する。以上が輻輳解消閾値Th2変更判定処理の流れである。
【0135】
図33は、図30のステップS160における下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の流れを示したフローチャートである。図34は、ステップS160の輻輳解消閾値Th2変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。バッファ書き込み部150は、この下位の優先クラスに対する輻輳解消閾値Th2変更解除処理によって、対象優先クラスより下位の各優先クラスにおいて、現在優先度と初期優先度とが等しくなるように設定する。以下に下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の一例を示す。ここでは、バッファ書き込み部150は、第1実施例と同様に、優先クラスのうちのいずれか1つを設定登録可能な優先クラス登録部を備えているものとして説明する。
【0136】
バッファ書き込み部150は、まず、優先クラス登録部に対象優先クラスを登録する(ステップS161)。ここでは、図34の第2キューイングバッファ142を対象優先クラスとして説明する。バッファ書き込み部150は、バッファ状態管理テーブル180を参照し、登録優先クラスより下位の優先クラスが存在するか否かを判定する(ステップS162)。図34(a)では、第2キューイングバッファ142を対象優先クラスとしているため、下位の優先クラス(第3、4キューイングバッファ143、144)が存在している。
【0137】
下位の優先クラスが存在する場合(ステップS162:YES)、バッファ書き込み部150は、優先クラス登録部に直下の優先クラスを登録する(ステップS163)。図34(a)では、第3キューイングバッファ143が登録される。一方、図34と異なり、下位の優先クラスが存在しない場合(ステップS162:NO)、バッファ書き込み部150は、処理を終了する。
【0138】
ステップS163において優先クラス登録部に直下の優先クラスを登録した後、バッファ書き込み部150は、登録優先クラスの輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しいか否かを判定する(ステップS164)。図34(a)では、登録優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)において、現在設定値Y(Y=48)と初期設定値a(a=50)aが等しくない。
【0139】
登録優先クラスの輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しくない場合(ステップS164:NO)、バッファ書き込み部150は、図34(b)に示すように、登録優先クラスの輻輳解消閾値Th2の現在設定値Yに初期設定値aをセットする(ステップS165)。また、バッファ書き込み部150は、図34(c)に示すように、登録優先クラスの輻輳解消閾値Th2の変更状態フラグF303を「0」にセットする(ステップS166)。その後、バッファ書き込み部150の処理は、ステップS162に戻る。一方、ステップS164において、登録優先クラスの輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しい場合(ステップS164:YES)、バッファ書き込み部150の処理は、ステップS162に戻る。以上が下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の流れである。
【0140】
図35は、第2実施例におけるバッファ読み出し部160の処理の流れを示したフローチャートである。図35は、第1実施例の図12と対応している。図35のフローチャートは、図12のフローチャートと比較すると、ステップS410、S420が新たに追加されている点が異なる。図35のステップS401〜S408は、図12と同様のため説明を省略する。
【0141】
フレームの読み出しによって(ステップS402)、キューイングバッファ(対象優先クラス)の輻輳状態が解消すると(ステップS404)バッファ読み出し部160は、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「1」であるか否かを判定する(ステップS410)。対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「1」である場合(ステップS410:YES)、対象優先クラスに対する輻輳解消閾値Th2変更解除処理をおこなう(ステップS420)。対象優先クラスに対する輻輳解消閾値Th2変更解除処理の詳細については、図36を用いて後述する。対象優先クラスに対する輻輳解消閾値Th2変更解除処理の後、バッファ読み出し部160は、ステップS406の処理をおこなう。ステップS410において、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「0」である場合(ステップS410:NO)、バッファ読み出し部160は、ステップS420をスキップし、ステップS406の処理をおこなう。以上が第2実施例におけるバッファ読み出し部160の処理の流れである。
【0142】
図36は、図35のステップS420における対象優先クラスに対する輻輳解消閾値Th2変更解除処理の流れを示したフローチャートである。図37は、ステップS420の輻輳解消閾値Th2変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。バッファ読み出し部160は、この対象優先クラスに対する輻輳解消閾値Th2変更解除処理によって、対象優先クラスの現在優先度と初期優先度とが等しくなるように設定する。以下に対象優先クラスに対する輻輳解消閾値Th2変更解除処理の一例を示す。ここでは、図37の第2キューイングバッファ142を対象優先クラスとして説明する。
【0143】
バッファ書き込み部150は、図37(a)に示すように、対象優先クラスの輻輳解消閾値Th2の現在設定値Yに初期設定値aをセットする(ステップS421)。その後、バッファ書き込み部150は、図37(b)に示すように、登録優先クラスの輻輳解消閾値Th2の輻輳度数Xを「0」にセットする(ステップS422)。また、バッファ書き込み部150は、図37(c)に示すように、登録優先クラスの輻輳解消閾値Th2の変更状態フラグF303を「0」にセットする(ステップS423)。以上が対象優先クラスに対する輻輳解消閾値Th2変更解除処理の流れである。
【0144】
図38は、第2実施例のフレーム転送装置の動作を例示するための第1の説明図である。ここでは、バッファ状態管理テーブル180には、図4の内容が設定されているものとして説明する。図38(a)では、すべてのキューイングバッファ141〜144が輻輳していない状態が示されている。このときの各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順に、それぞれ1、2、3、4となっている。図38(b)では、図30(a)の状態から、第3キューイングバッファ143へのフレームの書き込みによって、第3キューイングバッファ143が輻輳した状態が示されている。第3キューイングバッファ143が輻輳状態になると、1つ上位の優先クラスに対応する第2キューイングバッファ142で優先度変更設定がおこなわれる。これにより、各優先クラスの優先順位はキューイングバッファ141、142、143、144の順に、それぞれ1、3、2、4となる。また、第3キューイングバッファ143の輻輳解消閾値Th2は、フレーム蓄積量減少方向(図38の右方向)に移動する。
【0145】
図39は、図38の動作時のバッファ閾値管理テーブルを説明するための説明図である。図39(a)は、キューイングバッファ141〜144が図38(a)に示す状態のときのバッファ閾値管理テーブル185を示している。キューイングバッファ141〜144の輻輳解消閾値Th2の現在設定値Yは、すべて「50」となっている。図39(b)は、キューイングバッファ141〜144が図38(b)に示す状態のときのバッファ閾値管理テーブル185を示している。第3キューイングバッファ143が輻輳状態になると、バッファ書き込み部150は、対象優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)の輻輳度数Xを「+1」カウントアップする(図30、ステップS152)。また、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE36)の現在設定値Yを「48」(48=50+1×20×(−1)/10)に更新し(ステップS157)、変更状態フラグF303を「1」にセットする(ステップS159)。
【0146】
図40は、第2実施例のフレーム転送装置の動作を例示するための第2の説明図である。図40(a)では、上述した図38(b)と同じ状態が示されている。すなわち、第3キューイングバッファ143が輻輳状態となり、1つ上位の優先クラスに対応する第2キューイングバッファ142で優先度変更設定がおこなわれている状態が示されている。
【0147】
図40(b)では、図40(a)の状態からさらに、第4キューイングバッファ144が輻輳した状態が示されている。このとき、各優先クラスの優先順位は変化せず、また、第4キューイングバッファ144の輻輳解消閾値Th2は、移動しない。図40(c)では、図40(a)の状態からさらに、第2キューイングバッファ142が輻輳した状態が示されている。このとき、各優先クラスの優先順位はキューイングバッファ141、142、143、144の順に、それぞれ2、1、3、4となる。また、第2キューイングバッファ142の輻輳解消閾値Th2は、フレーム蓄積量減少方向(図40の右方向)に移動する。一方、第3キューイングバッファ143の輻輳解消閾値Th2は、フレーム蓄積量増加方向(図40の左方向)に移動して輻輳前の位置に戻る。図40(d)では、図40(a)の状態からさらに、第1キューイングバッファ141が輻輳した状態が示されている。このとき、各優先クラスの優先順位はキューイングバッファ141、142、143、144の順に、それぞれ1、2、3、4となる。また、第1キューイングバッファ141の輻輳解消閾値Th2は、フレーム蓄積量減少方向(図40の右方向)に移動する。一方、第3キューイングバッファ143の輻輳解消閾値Th2は、フレーム蓄積量増加方向(図40の左方向)に移動して輻輳前の位置に戻る。
【0148】
図41は、図40の動作時のバッファ閾値管理テーブルを説明するための説明図である。図41(a)は、キューイングバッファ141〜144が図40(b)に示す状態のときのバッファ閾値管理テーブル185を示している。第3キューイングバッファ143が輻輳状態のときに第4キューイングバッファ144が輻輳状態になると、バッファ書き込み部150は、対象優先クラス(第4キューイングバッファ144)の輻輳解消閾値Th2(エントリE38)の輻輳度数Xを「+1」カウントアップする(図30、ステップS152)。一方、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE38)の現在設定値Yを「50」のまま変更せず、また、変更状態フラグF303を「0」のまま変更しない(ステップS154:YES)。
【0149】
図41(b)は、キューイングバッファ141〜144が図40(c)に示す状態のときのバッファ閾値管理テーブル185を示している。第3キューイングバッファ143が輻輳状態のときに第2キューイングバッファ142が輻輳状態になると、バッファ書き込み部150は、対象優先クラス(第2キューイングバッファ142)の輻輳解消閾値Th2(エントリE34)の輻輳度数Xを「+1」カウントアップする(図30、ステップS152)。また、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE34)の現在設定値Yを「48」(48=50+1×20×(−1)/10=48)に更新し(ステップS157)、変更状態フラグF303を「1」にセットする(ステップS159)。さらに、バッファ書き込み部150は、対象優先クラスの下位の優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)の現在設定値Yに初期設定値aである「50」をセットし(図33、ステップS165)、変更状態フラグF303を「0」にセットする(ステップS166)。
【0150】
図41(c)は、キューイングバッファ141〜144が図40(d)に示す状態のときのバッファ閾値管理テーブル185を示している。第3キューイングバッファ143が輻輳状態のときに第1キューイングバッファ141が輻輳状態になると、バッファ書き込み部150は、対象優先クラス(第1キューイングバッファ141)の輻輳解消閾値Th2(エントリE32)の輻輳度数Xを「+1」カウントアップする(図30、ステップS152)。また、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE32)の現在設定値Yを「48」(48=50+1×20×(−1)/10=48)に更新し(ステップS157)、変更状態フラグF303を「1」にセットする(ステップS159)。さらに、バッファ書き込み部150は、対象優先クラスの下位の優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)の現在設定値Yに初期設定値aである「50」をセットし(図33、ステップS165)、変更状態フラグF303を「0」にセットする(ステップS166)。
【0151】
図42は、第2実施例のフレーム転送装置の動作を例示するための第3の説明図である。図42(a)では、上述した図40(b)と同じ状態が示されている。すなわち、第3キューイングバッファ143と第4キューイングバッファ144が輻輳した状態が示されている。このときの各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順に、それぞれ1、3、2、4となっている。図42(b)では、図42(a)の状態から、第3キューイングバッファ143の輻輳が解消された状態が示されている。輻輳の解消により、1つ上位の優先クラス(第2キューイングバッファ142)の優先度変更設定は解除される。これにより、各優先クラスの優先順位はキューイングバッファ141、142、143、144の順に、それぞれ1、2、4、3となる。また、第4キューイングバッファ144の輻輳解消閾値Th2は、フレーム蓄積量減少方向(図42の右方向)に移動する。一方、第3キューイングバッファ143の輻輳解消閾値Th2は、フレーム蓄積量増加方向(図42の左方向)に移動して輻輳前の位置に戻る。
【0152】
図43は、図42の動作時のバッファ閾値管理テーブルを説明するための説明図である。図43(a)は、キューイングバッファ141〜144が図42(a)に示す状態のときのバッファ閾値管理テーブル185を示している。キューイングバッファ141〜144の輻輳解消閾値Th2の現在設定値Yは、第3キューイングバッファ143のみが「48」であり、他が「50」となっている。図43(b)は、キューイングバッファ141〜144が図42(b)に示す状態のときのバッファ閾値管理テーブル185を示している。バッファ読み出し部160は、対象優先クラス(第3キューイングバッファ143)の輻輳状態の解消を検出すると、対象優先クラスの輻輳解消閾値Th2(エントリE36)の現在設定値Yに初期設定値aをセットする(図36、ステップS421)。また、バッファ読み出し部160は、対象優先クラスの輻輳解消閾値Th2(エントリE36)の輻輳度数Xと輻輳状態フラグを「0」にセットする(ステップS422、S423)。一方、バッファ書き込み部150は、下位の優先クラス(第4キューイングバッファ144)の輻輳状態を検出すると、下位の優先クラスの輻輳解消閾値Th2(エントリE38)の輻輳度数Xを「+1」カウントアップする。(図30、ステップS152)。また、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE34)の現在設定値Yを「46」(48=50+2×20×(−1)/10=46)に更新し(ステップS157)、変更状態フラグF303を「1」にセットする(ステップS159)。
【0153】
図44は、第2実施例のフレーム転送装置の動作を例示するための第4の説明図である。図44(a)では、すべてのキューイングバッファ141〜144が輻輳していない状態が示されている。図44(b)では、第3キューイングバッファ143において、図44(a)の状態から、輻輳が発生しないまま所定の時間(設定時間Tp)が経過した状態が示されている。第3キューイングバッファ143において、所定の時間輻輳が発生していないと、第3キューイングバッファ143の輻輳閾値Th1は、フレーム蓄積量増加方向(図44の左方向)に移動する。
【0154】
図45は、図44の動作時のバッファ閾値管理テーブルを説明するための説明図である。図45(a)は、キューイングバッファ141〜144が図44(a)に示す状態のときのバッファ閾値管理テーブル185を示している。キューイングバッファ141〜144の輻輳閾値Th1の現在設定値Yは、すべて「50」となっている。図45(b)は、キューイングバッファ141〜144が図44(b)に示す状態のときのバッファ閾値管理テーブル185を示している。バッファ書き込み部150は、第3キューイングバッファ143が設定時間Tp(例えば3600秒)以上輻輳状態になっていないことを検出すると(図24、ステップS124)、対象優先クラス(第3キューイングバッファ143)の輻輳閾値Th1(エントリE35)の輻輳度数Xを「+1」カウントアップする(ステップS125)。また、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の現在設定値Yを「52」(52=50+1×20×1/10)に更新し(ステップS126)、変更状態フラグF303を「1」にセットする(ステップS128)。
【0155】
図46は、第2実施例のフレーム転送装置の動作を例示するための第5の説明図である。図46(a)では、上述した図44(b)と同じ状態が示されている。すなわち、第3キューイングバッファ143が設定時間Tp以上輻輳状態にならず、輻輳閾値Th1が、フレーム蓄積量増加方向に移動した状態が示されている。図46(b)では、図46(a)の状態からさらに、第2キューイングバッファ142が設定時間Tp以上輻輳状態にならなかった状態が示されている。このとき、第2キューイングバッファ142の輻輳閾値Th1は、フレーム蓄積量増加方向(図46の左方向)に移動する。一方、第3キューイングバッファ143の輻輳閾値Th1は、移動したままの状態で変化しない。図40(c)では、図46(a)の状態からさらに、第4キューイングバッファ144が設定時間Tp以上輻輳状態にならなかった状態が示されている。このとき、第4キューイングバッファ144の輻輳閾値Th1は、フレーム蓄積量増加方向(図46の左方向)に移動する。一方、第3キューイングバッファ143の輻輳閾値Th1は、移動したままの状態で変化しない。
【0156】
図47は、図46の動作時のバッファ閾値管理テーブルを説明するための説明図である。図47(a)は、キューイングバッファ141〜144が図46(b)に示す状態のときのバッファ閾値管理テーブル185を示している。バッファ書き込み部150は、第2キューイングバッファ142が設定時間Tp以上輻輳状態になっていないことを検出すると(図24、ステップS124)、対象優先クラス(第2キューイングバッファ142)の輻輳閾値Th1(エントリE33)の輻輳度数Xを「+1」カウントアップする(ステップS125)。また、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の現在設定値Yを「52」(52=50+1×20×1/10)に更新し(ステップS126)、変更状態フラグF303を「1」にセットする(ステップS128)。図47(b)は、キューイングバッファ141〜144が図46(c)に示す状態のときのバッファ閾値管理テーブル185を示している。バッファ書き込み部150は、第4キューイングバッファ144が設定時間Tp以上輻輳状態になっていないことを検出すると(図24、ステップS124)、対象優先クラス(第4キューイングバッファ144)の輻輳閾値Th1(エントリE37)の輻輳度数Xを「+1」カウントアップする(ステップS125)。また、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の現在設定値Yを「52」(52=50+1×20×1/10)に更新し(ステップS126)、変更状態フラグF303を「1」にセットする(ステップS128)。
【0157】
以上説明した、第2実施例のフレーム転送装置102によれば、第1実施例と同様に、輻輳状態が発生したキューイングバッファの優先クラスの優先順位を上げつつ、フレーム種別に応じた本来の優先順位(初期優先度)を反映させた優先順位に応じてフレームの読み出しをおこなうことができる。また、これに加えて、キューイングバッファ(対象優先クラス)が輻輳状態になると、対象優先クラスの輻輳解消閾値Th2をフレーム蓄積量減少方向に変化させるため、対象優先クラスの優先順位が上がった状態を第1実施例よりも長く持続させることができる。これにより、フレーム破棄の発生を抑制することができる。
【0158】
また、キューイングバッファ(対象優先クラス)の輻輳状態が所定の時間発生していないとき、対象優先クラスのキューイングバッファの輻輳閾値Th1をフレーム蓄積量増加方向に変化させるため、対象優先クラスにおいて輻輳状態が発生しにくくなる。これにより、上位の優先クラスにおいて、対象優先クラスで輻輳状態が発生したときの優先度変更の影響を受けにくくすることができ、フレーム破棄などの不具合の発生を抑制することができる。
【0159】
D.第2実施例の変形例:
D1.変形例1:
本実施例では、各キューイングバッファの輻輳閾値Th1と輻輳解消閾値Th2を1つのテーブル(バッファ閾値管理テーブル185)によって管理する構成について説明したが、輻輳閾値Th1と輻輳解消閾値Th2は、それぞれ異なるテーブルによって管理される構成としてもよい。
【0160】
D2.変形例2:
本実施例では、バッファ書き込み部150およびバッファ読み出し部160が、バッファ閾値管理テーブル185を参照して、輻輳閾値Th1および輻輳解消閾値Th2の設定値の変更をおこなう構成として説明したが、フレーム転送装置102に搭載された図示しない演算処理部がおこなう構成としてもよい。
【0161】
D3.変形例3:
第1実施例で説明した変形例(第1実施例の変形例)は、本実施例のフレーム転送装置102にも当然に適用することができる。
【符号の説明】
【0162】
10…ネットワークシステム
100…フレーム転送装置
110…フレーム転送部
131、132、133…回線インターフェース部
140…キューイングバッファ群
141…第1キューイングバッファ
142…第2キューイングバッファ
143…第3キューイングバッファ
144…第4キューイングバッファ
150…バッファ書き込み部
160…バッファ読み出し部
170…優先クラステーブル
180…バッファ状態管理テーブル
190…記憶部
200…ユーザ端末
300…サーバ
400…ストレージ
500…設定監視用端末
【技術分野】
【0001】
本発明は、フレーム転送装置、および、フレーム転送方法に関する。
【背景技術】
【0002】
従来から、企業のデータセンター等において、サーバとユーザ端末との間や、サーバ間等におけるフレームの転送をおこなうフレーム転送装置が知られている。ここで「フレーム」とは、ネットワークにおける通信で使用されるデータフォーマットを意味している。フレーム転送装置の多くには、受信したフレームを一時的に保存するためのメモリであるキューイングバッファが複数備えられている。このキューイングバッファは、フレームの転送処理をおこなうときや、フレーム転送装置のフレーム転送処理速度が回線速度と異なるとき等に使用される。
【0003】
このキューイングバッファに関して、フレームの格納が1つのキューイングバッファに集中したときに、キューイングバッファの許容量を超えてフレームの一部が破棄される不具合があった。この不具合を回避するために複数備えられたキューイングバッファに関して、音声データや動画データ等のリアルタイム通信用のフレームを格納するキューイングバッファのフレームの蓄積量が閾値に達した場合、このキューイングバッファから優先的にフレームの読み出しをおこなう輻輳制御方法等が知られている(特許文献1、2、3)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−72569号
【特許文献2】特開平11−32050号
【特許文献3】特開2001−186181号
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、従来技術では、複数のキューイングバッファが輻輳状態となっている場合、どのキューイングバッファをより優先するかについては十分な制御をおこなうことができなかった。また、複数のキューイングバッファがそれぞれ優先度の異なるフレームを格納している場合、優先度の低いキューイングバッファで輻輳状態が発生したときに、どのキューイングバッファから優先的にフレームを読み出すかについては十分な制御をおこなうことができなかった。このように、複数のキューイングバッファを備えるフレーム転送装置において、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制する技術に関してはなお、改善の余地があった。
【0006】
本発明は、上記した課題の少なくとも一部を解決するためになされた発明であり、複数のキューイングバッファを備えるフレーム転送装置において、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制するための技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題の少なくとも一部を解決するために、本願発明は、以下の態様または適用例として実現することが可能である。
【0008】
[適用例1]
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記バッファ書き込み部は、いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう、フレーム転送装置。
【0009】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0010】
[適用例2]
適用例1に記載のフレーム転送装置において、
前記バッファ書き込み部は、前記第2のキューイングバッファが輻輳状態の場合には、前記所定の条件を満たさないものと判断して、前記優先順位の入れ替えをおこなわない、フレーム転送装置。
【0011】
この構成によれば、キューイングバッファの輻輳状態を検出したときに、そのキューイングバッファより優先順位が1つ上位のキューイングバッファが既に輻輳状態である場合には、この2つのキューイングバッファの間では優先順位の入れ替えをおこなわないため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0012】
[適用例3]
適用例1または適用例2に記載のフレーム転送装置において、
前記バッファ書き込み部は、前記第1のキューイングバッファの優先順位が、過去におこなわれた優先順位の入れ替えによって、1つ下がっている場合には、
(i)前記優先順位の入れ替えを解消するとともに、
(ii)前記第2のキューイングバッファが輻輳状態ではない場合には、前記第1のキューイングバッファと、前記第2のキューイングバッファとの優先順位の入れ替えをおこなう、フレーム転送装置。
【0013】
この構成によれば、過去の優先順位の入れ替えによって、優先順位が1つ下がっているキューイングバッファが輻輳状態になると、このキューイングバッファの優先順位を1つ上げて元に戻し、さらに、このキューイングバッファよりも優先順位が1つ上位のキューイングバッファが輻輳状態ではない場合には、優先順位が1つ上位のキューイングバッファと優先順位の入れ替えをおこなうため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0014】
[適用例4]
適用例1ないし適用例3のいずれかに記載のフレーム転送装置において、
前記バッファ読み出し部は、過去におこなわれた前記優先順位の入れ替えによって、優先順位が1つ上がっている前記第1のキューイングバッファの輻輳状態の解消を検出すると、前記優先順位の入れ替えを解消する、フレーム転送装置。
【0015】
この構成によれば、過去の優先順位の入れ替えによって、優先順位が1つ上がっているキューイングバッファの輻輳状態が解消すると、このキューイングバッファの優先順位を1つ下げて元に戻すため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0016】
[適用例5]
適用例1ないし適用例4のいずれかに記載のフレーム転送装置において、
前記記憶部には、前記各キューイングバッファの現在の優先順位を示す情報と、前記各キューイングバッファの初期の優先順位を示す情報とが記憶され、
前記バッファ書き込み部は、前記初期の優先順位において、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位を、前記現在の優先順位を示す情報において、前記第1のキューイングバッファより優先順位が1つ下位になるように前記現在の優先順位を示す情報を書き換え、
前記バッファ読み出し部は、前記現在の優先順位に応じて、前記キューイングバッファからフレームを読み出して転送をおこなう、フレーム転送装置。
【0017】
この構成によれば、記憶部には、各キューイングバッファの現在の優先順位を示す情報と、各キューイングバッファの初期の優先順位を示す情報を記憶することによって、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0018】
[適用例6]
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう工程と、を備えるフレームの転送方法。
【0019】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。
【0020】
[適用例7]
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記記憶部は、各前記キューイングバッファのそれぞれに設定される輻輳閾値と輻輳解消閾値とを記憶し、
前記バッファ書き込み部は、
(i)フレームの蓄積量が前記輻輳閾値を超えたときに前記キューイングバッファの輻輳状態を検出し、フレームの蓄積量が前記輻輳解消閾値を下回ったときに前記キューイングバッファの輻輳状態の解消を検出し、
(ii)いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、
(iii)前記第1のキューイングバッファに設定された前記輻輳解消閾値を減少させる、フレーム転送装置。
【0021】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。また、いずれかのキューイングバッファが輻輳状態になると、輻輳状態となったキューイングバッファに設定された輻輳解消閾値を減少させるため、キューイングバッファの輻輳に伴う不具合の発生をより抑制することができる。
【0022】
[適用例8]
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記記憶部は、各前記キューイングバッファのそれぞれに設定される輻輳閾値と輻輳解消閾値とを記憶し、
前記バッファ書き込み部は、
(i)フレームの蓄積量が前記輻輳閾値を超えたときに前記キューイングバッファの輻輳状態を検出し、フレームの蓄積量が前記輻輳解消閾値を下回ったときに前記キューイングバッファの輻輳状態の解消を検出し、
(ii)いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、
(iii)所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、前記キューイングバッファに設定された前記輻輳閾値を増加させる、フレーム転送装置。
【0023】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。また、所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、そのキューイングバッファに設定された輻輳閾値を増加させるため、キューイングバッファの輻輳に伴う不具合の発生をより抑制することができる。
【0024】
[適用例9]
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
フレームの蓄積量が輻輳閾値を超えたときにキューイングバッファの輻輳状態を検出し、フレームの蓄積量が輻輳解消閾値を下回ったときにキューイングバッファの輻輳状態の解消を検出する工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、前記第1のキューイングバッファに設定されている輻輳解消閾値を減少させる工程と、を備えるフレームの転送方法。
【0025】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。また、いずれかのキューイングバッファが輻輳状態になると、輻輳状態となったキューイングバッファに設定された輻輳解消閾値を減少させるため、キューイングバッファの輻輳に伴う不具合の発生をより抑制することができる。
【0026】
[適用例10]
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
フレームの蓄積量が輻輳閾値を超えたときにキューイングバッファの輻輳状態を検出し、フレームの蓄積量が輻輳解消閾値を下回ったときにキューイングバッファの輻輳状態の解消を検出する工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう工程と、
所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、前記キューイングバッファに設定された輻輳閾値を増加させる工程と、を備えるフレームの転送方法。
【0027】
この構成によれば、3以上のキューイングバッファを備えるフレーム転送装置において、いずれかのキューイングバッファが輻輳状態になると、輻輳状態のキューイングバッファの相対的な優先順位を1つ上げるため、キューイングバッファの輻輳に伴う不具合の発生を効率的に抑制することができる。また、所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、そのキューイングバッファに設定された輻輳閾値を増加させるため、キューイングバッファの輻輳に伴う不具合の発生をより抑制することができる。
【0028】
なお、本発明は、上記以外の種々の形態で実現することが可能であり、例えば、フレーム転送装置を含んで構成されるネットワークシステム、フレーム転送装置の制御方法、キューイングバッファの制御方法、これらの制御方法を実現するためのコンピュータープログラム、および、そのコンピュータープログラムを記録した記憶媒体等の形態で実現することができる。また、本発明に係るフレーム転送装置は、適宜、他の部材と組み合わせて適用することができる。
【図面の簡単な説明】
【0029】
【図1】第1実施例に係るフレーム転送装置を含んで構成されるネットワークシステムを例示した説明図である。
【図2】フレーム転送装置の概略構成を説明するための説明図である。
【図3】フレームが属する優先クラスの特定方法を説明するための説明図である。
【図4】バッファ状態管理テーブルの内容を説明するための説明図である。
【図5】キューイングバッファの輻輳状態の検出方法を説明するための説明図である。
【図6】キューイングバッファの輻輳状態の解消を検出する方法を説明するための説明図である。
【図7】バッファ書き込み部150の処理の流れを示したフローチャートである。
【図8】図7のステップS107における優先度変更設定解除処理の流れを示したフローチャートである。
【図9】ステップS107の優先度変更設定解除処理時のバッファ状態管理テーブルを説明するための説明図である。
【図10】図7のステップS111における優先度変更設定処理の流れを示したフローチャートである。
【図11】優先度変更設定処理時のバッファ状態管理テーブルを説明するための説明図である。
【図12】バッファ読み出し部160の処理の流れを示したフローチャートである。
【図13】図12のステップS408における優先度変更設定解除処理の流れを示したフローチャートである。
【図14】ステップS408の優先度変更設定解除処理時のバッファ状態管理テーブルを説明するための説明図である。
【図15】フレーム転送装置の動作を例示するための第1の説明図である。
【図16】図15の動作時のバッファ状態管理テーブルを説明するための説明図である。
【図17】フレーム転送装置の動作を例示するための第2の説明図である。
【図18】図17の動作時のバッファ状態管理テーブルを説明するための説明図である。
【図19】フレーム転送装置の動作を例示するための第3の説明図である。
【図20】図19の動作時のバッファ状態管理テーブルを説明するための説明図である。
【図21】第2実施例に係るフレーム転送装置の概略構成を説明するための説明図である。
【図22】バッファ閾値管理テーブルの内容を説明するための説明図である。
【図23】第2実施例におけるバッファ書き込み部150の処理の流れを示したフローチャートである。
【図24】図23のステップS120における輻輳閾値Th1変更判定処理の流れを示したフローチャートである。
【図25】ステップS120の輻輳閾値Th1変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図26】ステップS120の輻輳閾値Th1変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図27】図23のステップS140における輻輳閾値Th1変更解除処理の流れを示したフローチャートである。
【図28】ステップS140の輻輳閾値Th1変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図29】ステップS140の輻輳閾値Th1変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図30】図23のステップS150における輻輳解消閾値Th2変更判定処理の流れを示したフローチャートである。
【図31】ステップS150の輻輳解消閾値Th2変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図32】ステップS150の輻輳解消閾値Th2変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図33】図30のステップS160における下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の流れを示したフローチャートである。
【図34】ステップS160の輻輳解消閾値Th2変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図35】第2実施例におけるバッファ読み出し部160の処理の流れを示したフローチャートである。
【図36】図35のステップS420における対象優先クラスに対する輻輳解消閾値Th2変更解除処理の流れを示したフローチャートである。
【図37】ステップS420の輻輳解消閾値Th2変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。
【図38】第2実施例のフレーム転送装置の動作を例示するための第1の説明図である。
【図39】図38の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【図40】第2実施例のフレーム転送装置の動作を例示するための第2の説明図である。
【図41】図40の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【図42】第2実施例のフレーム転送装置の動作を例示するための第3の説明図である。
【図43】図42の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【図44】第2実施例のフレーム転送装置の動作を例示するための第4の説明図である。
【図45】図44の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【図46】第2実施例のフレーム転送装置の動作を例示するための第5の説明図である。
【図47】図46の動作時のバッファ閾値管理テーブルを説明するための説明図である。
【発明を実施するための形態】
【0030】
A.第1実施例:
図1は、第1実施例に係るフレーム転送装置を含んで構成されるネットワークシステムを例示した説明図である。ネットワークシステム10は、会社内等において構築されるシステムであって、フレーム転送装置100と、ユーザ端末200と、サーバ300と、ストレージ400と、設定監視用端末500と、を備えている。フレーム転送装置100は、ユーザ端末200と、サーバ300と、ストレージ400と、設定監視用端末500にそれぞれ接続され、各装置間のフレームのやりとりの中継をおこなう。
【0031】
フレーム転送装置100は、各装置から受信したフレームを転送の優先度に応じて複数のクラスに分類し、優先度の高いクラスに属するフレームを優先的に転送する。一方、フレーム転送装置100は、クラスごとのフレームの受信量に応じて一時的にクラスの優先度を切り替える。以後、本実施例では、上述したように転送の優先度に応じたフレームの分類を「優先クラス」または単に「クラス」と呼ぶ。フレーム転送装置100の具体的な動作については後述する。
【0032】
サーバ300は、ユーザ端末200からのアプリケーションの要求に応じて、ストレージ400に格納されている画像データや動画データ等の種々のデータを取得し、ユーザ端末200に転送する。設定監視用端末500は、フレーム転送装置100の設定や状態の管理をおこなうために使用される。
【0033】
図2は、フレーム転送装置の概略構成を説明するための説明図である。
フレーム転送装置100は、フレーム転送部110と、複数の回線インターフェース部131〜133とを備えている。フレーム転送部110は、回線インターフェース部131〜133とそれぞれ接続され、回線インターフェース部131〜133間のフレーム転送をおこなう。本実施例では、回線インターフェース部131は、ストレージ400と接続され、回線インターフェース部132は、サーバ300と接続され、回線インターフェース部133は、ユーザ端末200と接続されている。
【0034】
フレーム転送部110は、キューイングバッファ群140と、バッファ書き込み部150と、バッファ読み出し部160と、優先クラステーブル170と、バッファ状態管理テーブル180と、を備えている。キューイングバッファ群140は、フレームを格納するための複数(ここでは4つ)のキューイングバッファ141〜144により構成されている。以後、4つのキューイングバッファ141〜144をそれぞれ、第1キューイングバッファ141、第2キューイングバッファ142、第3キューイングバッファ143、第4キューイングバッファ144とも呼ぶ。優先クラステーブル170とバッファ状態管理テーブル180は、メモリなどによって構成される記憶部190に記憶されている。
【0035】
各キューイングバッファ141〜144は、互いに優先度の異なる4つの優先クラスとそれぞれ一対一に対応付けられている。すなわち、各キューイングバッファ141〜144には、バッファ書き込み部150によって、同じ優先クラスに属するフレームが格納される。また、バッファ読み出し部160によって、優先度の高い優先クラスのキューイングバッファから優先的にフレームが読み出され、転送される。
【0036】
バッファ書き込み部150は、フレーム転送装置100がフレームを受信すると、フレームに含まれる情報(以後「フレーム内情報」とも呼ぶ)に応じた優先クラスのキューイングバッファに格納する。バッファ書き込み部150は、優先クラステーブル170を参照することによってフレームが属する優先クラスを特定する。
【0037】
図3は、フレームが属する優先クラスの特定方法を説明するための説明図である。図3(a)は、フレームの概略構造を説明するための説明図である。図3(a)に示すように、フレームには、宛先、送信元、ユーザ種別、アプリケーション種別、アプリケーションデータなどのフレーム内情報が含まれている。アプリケーション種別とは、アプリケーションデータの種別を識別可能な情報であり、アプリケーションデータが、例えば、音声データ、動画データ、静止画像データ、文字データなどのいずれであるかを特定するための情報である。本実施例では、このアプリケーション種別として、TCPやUDPプロトコルのヘッダに含まれるポート番号が利用される。バッファ書き込み部150は、例えば、フレームからアプリケーション種別を読み出し、優先クラステーブル170を参照することによって、そのフレームが属する優先クラスを特定する。
【0038】
図3(b)は、優先クラステーブルの内容を説明するための説明図である。優先クラステーブル170は、アプリケーション種別F11と、優先クラスF12との2つのフィールドを備え、アプリケーション種別と優先クラスとの対応関係が示されている。ここでは、優先クラスとして、優先クラスに対応するキューイングバッファ141〜144が示されている。優先クラステーブル170では、例えば、エントリE11において、音声データとキューイングバッファ141とが対応付けられている。また、エントリE12において、動画データとキューイングバッファ142とが対応付けられている。バッファ書き込み部150は、フレーム転送装置100が受信したフレームが音声データであることを特定すると、優先クラステーブル170を参照してそのフレームをキューイングバッファ141に格納する。なお、優先クラステーブル170の内容は、設定監視用端末500によって任意に設定可能に構成されていてもよい。
【0039】
バッファ読み出し部160は、キューイングバッファ141〜144に格納されているフレームを読み出して転送する。このとき、バッファ読み出し部160は、優先度の高い優先クラスに対応するキューイングバッファから優先的にフレームを読みだし、転送をおこなう。バッファ読み出し部160は、バッファ状態管理テーブル180を参照することによって、各キューイングバッファに対応する優先クラスの優先度を特定する。
【0040】
図4は、バッファ状態管理テーブルの内容を説明するための説明図である。バッファ状態管理テーブル180は、優先クラスF21と、現在優先度F22と、初期優先度F23と、輻輳フラグF24と、優先度変更設定フラグF25の5つのフィールドを備えている。優先クラスF21は、優先クラステーブル170の優先クラスF12(図3)と同様に、キューイングバッファ141〜144を示している。
【0041】
現在優先度F22は、各優先クラスの相対的な優先順位を示している。すなわち、バッファ読み出し部160によって読み出されるキューイングバッファの優先順位が示されている。ここでは、現在優先度の値が大きいほどがより優先順位が高いことを示している。よって、図4では、第1キューイングバッファ141が最も優先順位が高く、順に優先順位が下がり、第4キューイングバッファ144が最も優先順位が低い状態が示されている。現在優先度F22は、後述するように、バッファ書き込み部150やバッファ読み出し部160によって値が適宜書き替えられる。初期優先度F23は、設定監視用端末500を介して予め設定された各優先クラスの相対的な優先順位であり、現在優先度F22の初期設定値として用いられる。
【0042】
輻輳フラグF24は、各優先クラスのキューイングバッファが輻輳状態にあるか否かを示している。ここでは、輻輳状態ではない優先クラスに「0」がセットされ、輻輳状態となったときに「1」がセットされる。輻輳フラグF24は、後述するように、バッファ書き込み部150がキューイングバッファの輻輳状態を検出すると、対応する優先クラスに「1」がセットされる。また、輻輳フラグF24は、後述するように、バッファ読み出し部160がキューイングバッファの輻輳状態の解消を検出すると、対応する優先クラスに「0」がセットされる。輻輳状態の解消とは、輻輳状態であったキューイングバッファが輻輳状態でなくなったことをいう。
【0043】
優先度変更設定フラグF25は、各優先クラスにおいて、優先度変更設定がおこなわれている否かを示している。優先度変更設定とは、隣接する優先クラスの現在優先度が一時的に入れ替えられた状態に設定されることであり、後に詳述する。図4では、優先度変更設定によって一時的に現在優先度が低下している優先クラスに「1」がセットされ、それ以外の優先クラスに「0」がセットされている。優先度変更設定フラグF25は、後述するように、バッファ書き込み部150とバッファ読み出し部160によって書き替えられる。
【0044】
図5は、キューイングバッファの輻輳状態の検出方法を説明するための説明図である。図5には、フレームの格納によって輻輳状態になる第2キューイングバッファ142が一例として示されている。第2キューイングバッファ142を含む各キューイングバッファ141〜144には、データの蓄積量が所定量を超えているか否かを判定するための輻輳閾値Th1が予め設定されている。バッファ書き込み部150は、第2キューイングバッファ142にフレームを格納した後に、第2キューイングバッファ142に蓄積されているフレームデータの蓄積量が輻輳閾値Th1を超えたか否かを判定する。
【0045】
図5の下方に示すように、フレームの蓄積量が輻輳閾値Th1を超える場合には、バッファ書き込み部150は、第2キューイングバッファ142について輻輳状態を検出する。バッファ書き込み部150は、輻輳状態を検出すると、バッファ状態管理テーブル180の第2キューイングバッファ142に対応する優先クラスの輻輳フラグF24を「1」にセットする。バッファ書き込み部150は、すべてのキューイングバッファ141〜144について輻輳状態になっているか否かの検出をおこなう。なお、輻輳閾値Th1は、設定監視用端末500によって予め任意の値に設定することができる。また、キューイングバッファ141〜144ごとに異なる値を設定するともできる。また、設定監視用端末500によって、キューイングバッファ141〜144ごとに設定されている輻輳閾値Th1と、データの蓄積量が確認できるようにしてもよい。
【0046】
図6は、キューイングバッファの輻輳状態の解消を検出する方法を説明するための説明図である。図6には、フレームの送出によって輻輳状態が解消した第2キューイングバッファ142が一例として示されている。第2キューイングバッファ142を含む各キューイングバッファ141〜144には、データの蓄積量が所定量を下回っているか否か判定するための輻輳解消閾値Th2が予め設定されている。輻輳解消閾値Th2は輻輳閾値Th1よりも小さい値になるように設定されている(Th2<Th1)。
【0047】
バッファ読み出し部160は、輻輳状態の第2キューイングバッファ142からフレームを読み出した後に、第2キューイングバッファ142に蓄積されているフレームデータの蓄積量が輻輳解消閾値Th2を下回ったか否かを判定する。図6の下方に示すように、フレームの蓄積量が輻輳解消閾値Th2を下回った場合には、バッファ読み出し部160は、第2キューイングバッファ142について輻輳状態の解消を検出する。バッファ読み出し部160は、輻輳状態の解消を検出すると、バッファ状態管理テーブル180の第2キューイングバッファ142に対応する優先クラスの輻輳フラグF24を「0」にセットする。
【0048】
バッファ読み出し部160は、すべてのキューイングバッファ141〜144について輻輳状態が解消しているか否かの検出をおこなう。なお、輻輳解消閾値Th2についても、設定監視用端末500によって予め任意の値に設定することができる。また、キューイングバッファ141〜144ごとに異なる値を設定するともできる。また、設定監視用端末500によって、キューイングバッファ141〜144ごとに設定されている輻輳解消閾値Th2が確認できるようにしてもよい。また、輻輳解消閾値Th2と輻輳閾値Th1は、同じ値であってもよい(Th2=Th1)。
【0049】
図7は、バッファ書き込み部150の処理の流れを示したフローチャートである。バッファ書き込み部150は、回線インターフェース部131〜133のいずれかがフレームを受信すると、回線インターフェース部からフレームを取り出す(ステップS101)。
【0050】
バッファ書き込み部150は、取り出したフレームからアプリケーション種別を読み出す。上述したように、ここでは、TCPやUDPプロトコルのヘッダに含まれるポート番号が読み出される。その後、バッファ書き込み部150は、優先クラステーブル170(図3)を参照して、読み出したアプリケーション種別からそのフレームが属する優先クラスを特定する(ステップS102)。以後、ステップS102において特定された優先クラスを「対象優先クラス」とも呼ぶ。
【0051】
バッファ書き込み部150は、対象優先クラスに対応するキューイングバッファにそのフレームを書き込む(ステップS103)。書き込みをおこなった後、バッファ書き込み部150は、このキューイングバッファが輻輳状態となったか否かを判定する(ステップS104)。輻輳状態か否かの判定方法は、図5を用いて説明したとおりである。
【0052】
バッファ書き込み部150は、このキューイングバッファの輻輳状態を検出しなかった場合(ステップS104:NO)、ステップS101に戻り、再度、回線インターフェース部131〜133のいずれかがフレームを受信するまで待機する。一方、輻輳状態を検出した場合(ステップS104:YES)、バッファ書き込み部150は、バッファ状態管理テーブル180(図4)を参照して、対象優先クラスの輻輳フラグF24が「1」であるか否かを判定する(ステップS105)。
【0053】
対象優先クラスの輻輳フラグF24が「0」である場合(ステップS105:NO)、この対象優先クラスの輻輳フラグF24を「1」にセットする(ステップS106)。すなわち、今回のフレームの書き込みによって、キューイングバッファが新たに輻輳状態になったため、対応する優先クラスの輻輳フラグF24が「0」から「1」に切り替えられたことになる。
【0054】
バッファ書き込み部150は、対象優先クラスの輻輳フラグF24を「1」にセットした後、対象優先クラスと、対象優先クラスより初期優先度の低い(下位の)優先クラスに対する優先度変更設定解除処理をおこなう(ステップS107)。対象優先クラスと、対象優先クラスより下位の優先クラスに対する優先度変更設定解除処理とは、対象優先クラスや対象優先クラスより初期優先度F23の低い(下位の)優先クラスにおいて優先度変更設定がおこなわれている場合に、この設定を解除するための処理である。なお、優先度変更設定がおこなわれている優先クラスか否かについては、優先度変更設定フラグF25が「1」となっているか否かで判別することができる。優先クラスである。対象優先クラス以下の優先クラスに対する優先度変更設定解除処理の詳細については、図8を用いて後述する。
【0055】
なお、バッファ状態管理テーブル180に図4の内容が設定された状態で、第2キューイングバッファ142が対象優先クラスに対応する場合、対象優先クラスよりも下位の優先クラスとは、第3キューイングバッファ143と第4キューイングバッファ144にそれぞれ対応する優先クラスが該当する。一方、第1キューイングバッファ141と対応する優先クラスは、対象優先クラスよりも上位の優先クラスに該当する。
【0056】
ステップS105において、対象優先クラスの輻輳フラグF24が既に「1」である場合、または、ステップS107の処理をおこなった後、バッファ書き込み部150は、対象優先クラスよりも初期優先度F23の高い(上位の)優先クラスが存在するか否かを判定する(ステップS108)。具体的には、バッファ書き込み部150は、バッファ状態管理テーブル180の初期優先度F23を参照して、対象優先クラスよりも上位の優先クラスが存在するか否かを判定する。上位の優先クラスが存在しない場合(ステップS108:NO)、すなわち、対象優先クラスが第1キューイングバッファ141と対応している場合、バッファ書き込み部150の処理は、ステップS101に戻る。
【0057】
対象優先クラスよりも上位の優先クラスが存在する場合(ステップS108:YES)、バッファ書き込み部150の処理は、さらに、対象優先クラスよりも一つ上位(直上)の優先クラスの輻輳フラグF24が「1」か否かを判定する(ステップS109)。直上の優先クラスの輻輳フラグF24が「1」である場合(ステップS109:YES)、バッファ書き込み部150の処理は、ステップS101に戻る。
【0058】
直上の優先クラスの輻輳フラグF24が「0」である場合(ステップS109:NO)、バッファ書き込み部150は、対象優先クラスより上位のいずれかの優先クラスにおいて優先度変更設定がおこなわれているか否かを判定する(ステップS110)。この判定は、対象優先クラスより上位のいずれかの優先クラスにおいて、優先度変更設定フラグF25が「1」となっているか否かによっておこなうことができる。
【0059】
対象優先クラスより上位の優先クラスのいずれかにおいて優先度変更設定がおこなわれている場合には(ステップS110:YES)、バッファ書き込み部150の処理は、ステップS101に戻る。一方、対象優先クラスより上位のすべての優先クラスにおいて優先度変更設定がおこなわれていない場合には(ステップS110:NO)、バッファ書き込み部150は、優先度変更設定処理をおこなう(ステップS111)。優先度変更設定処理とは、対象優先クラスと、対象優先クラスの直上の優先クラスの現在優先度を入れ替える処理である。優先度変更設定処理の詳細については、図10を用いて後述する。優先度変更設定処理を実行した後、バッファ書き込み部150の処理は、ステップS101に戻る。
【0060】
図8は、図7のステップS107における優先度変更設定解除処理の流れを示したフローチャートである。図9は、ステップS107の優先度変更設定解除処理時のバッファ状態管理テーブルを説明するための説明図である。バッファ書き込み部150は、この優先度変更設定解除処理によって、対象優先クラスと、対象優先クラスより下位の各優先クラスにおいて、現在優先度と初期優先度とが等しくなるように設定する。以下に優先度変更設定解除処理の一例を示す。ここでは、バッファ書き込み部150は、優先クラスのうちのいずれか1つを設定登録可能な優先クラス登録部を備えているものとして説明する。なお、優先クラス登録部は、バッファ書き込み部150が優先クラスのうちのいずれか1つを識別可能な構成であればよく、優先クラスの識別情報を記憶する記憶部やフラグなどで構成することができる。
【0061】
バッファ書き込み部150は、まず、優先クラス登録部に対象優先クラスを登録する(ステップS201)。この対象優先クラスは、図7のステップS105における対象優先クラスと同じものである。ここでは、図9の第2キューイングバッファ142を対象優先クラスとして説明する。
【0062】
バッファ書き込み部150は、バッファ状態管理テーブル180を参照し、優先クラス登録部に登録された優先クラス(以後「登録優先クラス」とも呼ぶ)の優先度変更設定フラグF25が「1」であるか否かを判定する(ステップS202)。初回のこのステップでは、優先クラス登録部には対象優先クラスが登録されているため、対象優先クラスの優先度変更設定フラグF25が「1」であるか否かが判定される。図9(a)では、対象優先クラス(第2キューイングバッファ142)の優先度変更設定フラグF25は「1」となっている。
【0063】
登録優先クラスの優先度変更設定フラグF25が「1」である場合(ステップS202:YES)、バッファ書き込み部150は、登録優先クラスの現在優先度F22を登録優先クラスの初期優先度F23と同じ値にセットする(ステップS203)。具体的には、バッファ書き込み部150は、バッファ状態管理テーブル180を参照して、登録優先クラスの初期優先度F23を読み込み、同じクラスの現在優先度F22に書き込む。その結果、図9(b)に示すように、登録優先クラスの現在優先度と初期優先度とが等しくなる。
【0064】
さらに、バッファ書き込み部150は、登録優先クラスの一つ下位の(直下の)優先クラスの現在優先度F22を同じクラスの初期優先度F23と同じ値にセットする(ステップS204)これにより、図9(c)に示すように、登録優先クラスの一つ下位の優先クラスにおいても現在優先度と初期優先度とが等しくなる。その後、バッファ書き込み部150は、図9(d)に示すように、登録優先クラスの優先度変更設定フラグF25を「0」にセットする(ステップS205)。
【0065】
ステップS202において、登録優先クラスの優先度変更設定フラグF25が「0」である場合、または、ステップS205の処理の後、バッファ書き込み部150は、登録優先クラスより下位の優先クラスが存在するか否かを判定する(ステップS206)。登録優先クラスより下位の優先クラスが存在しない場合(ステップS206:NO)処理を終了する。
【0066】
一方、登録優先クラスより下位の優先クラスが存在する場合(ステップS206:YES)、バッファ書き込み部150は、現在の登録優先クラスよりも一つ下位の(直下の)優先クラスを新たな登録優先クラスとして優先クラス登録部に登録する(ステップS207)。その後、ステップS202に戻り、新たな登録優先クラスに対して同様の処理をおこなう。上述した優先度変更設定解除処理により、対象優先クラスおよび対象優先クラスより下位のすべての優先クラスにおいて、優先度変更設定フラグが「0」にセットされ、現在優先度F22が初期優先度F23と等しくなる。
【0067】
図10は、図7のステップS111における優先度変更設定処理の流れを示したフローチャートである。図11は、優先度変更設定処理時のバッファ状態管理テーブルを説明するための説明図である。バッファ書き込み部150は、この優先度変更設定処理によって、対象優先クラスの現在優先度と、直上の優先クラスの現在優先度との入れ替えをおこなう。以下に優先度変更設定処理の一例を示す。ここでは、図11(a)の第3キューイングバッファ143を対象優先クラスとして説明する。
【0068】
バッファ書き込み部150は、対象優先クラスよりも一つ上位(直上)の優先クラスの現在優先度F22を対象優先クラスの初期優先度F23と同じ値にセットする(ステップS301)。具体的には、図11(b)に示すように、バッファ書き込み部150は、バッファ状態管理テーブル180を参照して、対象優先クラスの初期優先度F23を読み込み、直上の優先クラスの現在優先度F22に書き込む。
【0069】
また、バッファ書き込み部150は、対象優先クラスの現在優先度F22を直上の優先クラスの初期優先度F23と同じ値にセットする(ステップS302)。具体的には、図11(c)に示すように、バッファ書き込み部150は、バッファ状態管理テーブル180を参照して、直上の優先クラスの初期優先度F23を読み込み、対象優先クラスの現在優先度F22に書き込む。これにより、対象優先クラスの直上の優先クラスの現在優先度F22と、対象優先クラスの現在優先度F22が入れ替わる。すなわち、対象優先クラスの直上の優先クラスと、対象優先クラスの優先順位が入れ替わる。
【0070】
その後、バッファ書き込み部150は、図11(d)に示すように、対象優先クラスの直上の優先クラスの優先度変更設定フラグF25を「1」にセットする。すなわち、初期優先度が下位の優先クラスよりも高いが、現在優先度が低い状態の優先クラスの優先度変更設定フラグF25に「1」がセットされる。以上により優先度変更設定処理が終了する。
【0071】
図12は、バッファ読み出し部160の処理の流れを示したフローチャートである。バッファ読み出し部160は、各キューイングバッファ141〜144について、フレームが蓄積されているか否かを判定する(ステップS401)。蓄積されている場合には、バッファ読み出し部160は、蓄積されているキューイングバッファのうち、現在優先度F22が最も高いキューイングバッファから優先して蓄積されたフレームを読みだし、回線インターフェース部131〜133のいずれかに送出する(ステップS402)。バッファ読み出し部160は、読み出したフレームに含まれる宛先情報(図3)を参照して送出先の回線インターフェース部を決定する。ここで、「優先して読み出す」とは、現在優先度のより高いキューイングバッファにおいてフレームの蓄積がなくなるまで読み出しを継続し、フレームの蓄積がなくなると順次現在優先度の低いキューイングバッファの読み出しをおこなうことをいう。
【0072】
バッファ読み出し部160は、ステップS402においてフレームを読み出した優先クラス(以後「対象優先クラス」とも呼ぶ)の輻輳フラグF24が「1」であるか否かを判定する(ステップS403)。対象優先クラスの輻輳フラグF24が「0」である場合(ステップS403:NO)、バッファ読み出し部160の処理は、ステップS401に戻る。
【0073】
一方、対象優先クラスの輻輳フラグF24が「1」である場合(ステップS403:YES)、バッファ読み出し部160は、対象優先クラスと対応するキューイングバッファの輻輳状態が解消しているか否かを判定する(ステップS404)。対応するキューイングバッファの輻輳状態が解消していない場合(ステップS404:NO)バッファ読み出し部160の処理は、ステップS401に戻る。
【0074】
一方、対応するキューイングバッファの輻輳状態が解消している場合(ステップS404:YES)、バッファ読み出し部160は、対象優先クラスの輻輳フラグF24を「0」にセットする(ステップS405)。
【0075】
対象優先クラスの輻輳フラグF24を「0」にセットした後、バッファ読み出し部160は、対象優先クラスよりも初期優先度の高い(上位の)優先クラスが存在するか否かを判定する(ステップS406)。対象優先クラスよりも上位の優先クラスが存在する場合(ステップS406:YES)、バッファ読み出し部160は、対象優先クラスよりも一つ上位(直上)の優先クラスの優先度変更設定フラグF25が「1」か否かを判定する(ステップS407)。
【0076】
直上の優先クラスの優先度変更設定フラグF25が「1」である場合(ステップS407:YES)、バッファ読み出し部160は、直上の優先クラスに対する優先度変更設定解除処理をおこなう(ステップS408)。直上の優先クラスに対する優先度変更設定解除処理とは、対象優先クラスより初期優先度が1つ高い(直上の)優先クラスにおいて優先度変更設定がおこなわれている場合に、この設定を解除するための処理である。直上の優先クラスに対する優先度変更設定解除処理の詳細については、図13を用いて後述する。
【0077】
ステップS406において、対象優先クラスよりも上位の優先クラスが存在しない場合(ステップS406:NO)、ステップS407において、直上の優先クラスの優先度変更設定フラグF25が「0」である場合(ステップS407:NO)、および、ステップS408の処理が終了したときに、バッファ読み出し部160の処理は、ステップS401に戻る。
【0078】
図13は、図12のステップS408における優先度変更設定解除処理の流れを示したフローチャートである。図14は、ステップS408の優先度変更設定解除処理時のバッファ状態管理テーブルを説明するための説明図である。バッファ読み出し部160は、この優先度変更設定解除処理によって、対象優先クラスの現在優先度と、対象優先クラスの直上の優先クラスの現在優先度とが入れ替わっている状態を解消する。以下に優先度変更設定解除処理の一例を示す。ここでは、図14(a)の第3キューイングバッファ143を対象優先クラスとして説明する。
【0079】
バッファ読み出し部160は、対象優先クラスの現在優先度F22を対象優先クラスの初期優先度F23と同じ値にセットする(ステップS501)具体的には、図14(b)に示すように、バッファ読み出し部160は、バッファ状態管理テーブル180を参照して、対象優先クラスの初期優先度F23を読み込み、同じクラスの現在優先度F22に書き込む。これにより、対象優先クラスの現在優先度と初期優先度とが等しくなる。
【0080】
さらに、バッファ読み出し部160は、図14(c)に示すように、対象優先クラスの一つ上位の(直上の)優先クラスの現在優先度F22を同じクラスの初期優先度F23と同じ値にセットする(ステップS502)。これにより、対象優先クラスの一つ上位の優先クラスにおいても現在優先度と初期優先度とが等しくなる。すなわち、対象優先クラスの直上の優先クラスの現在優先度F22と、対象優先クラスの現在優先度F22が入れ替わっていた状態が解消する。これにより、対象優先クラスの直上の優先クラスの優先順位が、対象優先クラスの優先順位より低い状態が解消する。その後、図14(d)に示すように、バッファ読み出し部160は、対象優先クラスの直上の優先クラスの優先度変更設定フラグF25を「0」にセットする(ステップS503)。以上により優先度変更設定解除処理が終了する。
【0081】
図15は、フレーム転送装置の動作を例示するための第1の説明図である。図16は、図15の動作時のバッファ状態管理テーブルを説明するための説明図である。はじめに、バッファ状態管理テーブル180には、図4の内容が設定されているものとして説明する。
【0082】
図15(a)では、バッファ読み出し部160によって、現在優先度F22の最も高い第1キューイングバッファ141からフレームの読み出しがおこなわれている。一方、バッファ書き込み部150によって、第2キューイングバッファ142へのフレームの書き込みがおこなわれ、第2キューイングバッファ142が輻輳状態となっている。
【0083】
バッファ書き込み部150は、第2キューイングバッファ142の輻輳状態を検出すると(図7、ステップS104)、図16(a)に示すように、第2キューイングバッファ142と対応する優先クラスの輻輳フラグF24を「1」にセットする(ステップS106)。その後、ステップS111において、図16(b)に示すように、バッファ書き込み部150は、優先度変更設定処理をおこない、第1キューイングバッファ141と対応する優先クラスと、第2キューイングバッファ142と対応する優先クラスの現在優先度F22を入れ替える。また、第1キューイングバッファ141と対応する優先クラスの優先度変更設定フラグF25を「1」にセットする(図10、ステップS303)。この結果、バッファ読み出し部160は、優先順位の最も高い第2キューイングバッファ142からフレームの読み出しをおこなう。
【0084】
図15(b)では、バッファ読み出し部160によって、現在優先度F22の最も高い第2キューイングバッファ142からフレームの読み出しがおこなわれている。また、読み出しの結果、第2キューイングバッファ142の輻輳状態が解消している。バッファ読み出し部160は、第2キューイングバッファ142の輻輳状態の解消を検出すると(図12、ステップS404)、図16(c)に示すように、第2キューイングバッファ142と対応する優先クラスの輻輳フラグF24を「0」にセットする(ステップS405)。その後、ステップS408において、バッファ読み出し部160は、優先度変更設定解除処理をおこない、図16(d)に示すように、第1キューイングバッファ141と対応する優先クラスと、第2キューイングバッファ142と対応する優先クラスの現在優先度F22をそれぞれ各クラスの初期優先度F23の値に戻す。また、第1キューイングバッファ141と対応する優先クラスの優先度変更設定フラグF25を「0」にセットする(図13、ステップS503)。この結果、図15(c)に示すように、バッファ読み出し部160は、優先順位の最も高い第1キューイングバッファ141から再度、フレームの読み出しをおこなう。このとき、第2キューイングバッファ142は、一時的に読み出しが優先されたため、輻輳状態が解消している。
【0085】
このように、本実施例のフレーム転送装置100によれば、輻輳状態が検出されたキューイングバッファと対応する優先クラスと、その直上の優先クラスの優先順位を入れ替えるため、輻輳状態が検出されたキューイングバッファにおいては、バッファ読み出し部160による優先的なフレームの読み出しによって、キューイングバッファの許容量を超えたフレームが破棄される不具合の発生を抑制することができる。一方、優先度変更設定によって優先順位が1つ下がった優先クラスのキューイングバッファは、フレームの蓄積量が増加しやすい状態となり、収容可能領域を有効に活用することができる。
【0086】
図17は、フレーム転送装置の動作を例示するための第2の説明図である。図18は、図17の動作時のバッファ状態管理テーブルを説明するための説明図である。ここでも、バッファ状態管理テーブル180には、図4の内容が設定されているものとして説明する。
【0087】
図17(a)では、第3キューイングバッファ143が輻輳状態となり、1つ上位の優先クラスに対応する第2キューイングバッファ142で優先度変更設定がおこなわれている状態が示されている。このとき、図18(a)に示すように、第2キューイングバッファ142と対応する優先クラスと第3キューイングバッファ143と対応する優先クラスの優先順位が入れ替わっているため、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順にそれぞれ1、3、2、4となる。
【0088】
図17(b)では、図17(a)の状態からさらに、第4キューイングバッファ144が輻輳した状態が示されている。この場合、バッファ書き込み部150は、第4キューイングバッファ144の輻輳状態を検出して(図7、ステップS104)、図18(b)に示すように、第4キューイングバッファ144と対応する優先クラスの輻輳フラグF24を「1」にセットする(ステップS106)。しかし、直上の第3キューイングバッファ143と対応する優先クラスの輻輳フラグF24は「1」であるため(ステップS109:YES)、バッファ書き込み部150は、優先度変更設定処理をおこなわない。すなわち、第3キューイングバッファ143と対応する優先クラスの優先度変更設定をおこなわず、第3キューイングバッファ143と対応する優先クラスと第4キューイングバッファ144と対応する優先クラスとの優先順位の入れ替えをおこなわない。よって、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、図13(a)と変わらず1、3、2、4の順となる。
【0089】
図17(c)では、図17(a)の状態からさらに、第2キューイングバッファ142が輻輳した状態が示されている。この場合、バッファ書き込み部150は、図18(c)に示すように、第2キューイングバッファ142と対応する優先クラスの輻輳フラグF24を「1」にセットした後(ステップS106)、ステップS107の優先度変更設定解除処理により、第2キューイングバッファ142と対応する優先クラスの優先度変更設定を解除する。また、バッファ書き込み部150は、第1キューイングバッファ141が輻輳状態ではない場合には(ステップS109:NO)、第1キューイングバッファ141と対応する優先クラスの優先度変更設定に「1」をセットする(ステップS111)。この結果、第1キューイングバッファ141と対応する優先クラスと第2キューイングバッファ142と対応する優先クラスの優先順位が入れ替わるため、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順にそれぞれ2、1、3、4となる。
【0090】
図17(d)では、図17(a)の状態からさらに、第1キューイングバッファ141が輻輳した状態が示されている。この場合、バッファ書き込み部150は、図18(d)に示すように、第1キューイングバッファ141と対応する優先クラスの輻輳フラグF24を「1」にセットした後(ステップS106)、ステップS107の優先度変更設定解除処理により、第2キューイングバッファ142と対応する優先クラスの優先度変更設定を解除する。この結果、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順にそれぞれ1、2、3、4となる。
【0091】
図19は、フレーム転送装置の動作を例示するための第3の説明図である。図20は、図19の動作時のバッファ状態管理テーブルを説明するための説明図である。図19(a)は、図17(b)と同じ状態を示している。図19(b)では、図19(a)の状態から、第3キューイングバッファ143の輻輳が解消した状態が示されている。この場合、バッファ読み出し部160は、第3キューイングバッファ143の輻輳状態の解除を検出して(ステップS404)、図20(a)に示すように、第3キューイングバッファ143と対応する優先クラスの輻輳フラグF24を「0」にセットする(ステップS405)。
【0092】
ステップS408の優先度変更設定解除処理により、バッファ読み出し部160は、図20(b)に示すように、第2キューイングバッファ142と対応する優先クラスの優先度変更設定を解除する(ステップS408)。一方、バッファ書き込み部150は、図20(c)に示すように、第3キューイングバッファ143と対応する優先クラスの優先度変更設定に「1」をセットする(ステップS111)。この結果、各キューイングバッファ141〜144と対応する各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順にそれぞれ1、2、4、3となる。
【0093】
このように、本実施例のフレーム転送装置100によれば、輻輳状態が検出されたキューイングバッファと対応する優先クラスの優先順位を最上位とするのではなく、その直上の優先クラスの優先順位を入れ替えるため、基本的には、初期優先度に応じてフレームの読み出しをおこないつつ、輻輳状態が発生した一部のキューイングバッファに対しては優先順位を入れ替えることによって、フレームの破棄等の不具合の発生を抑制することができる。また、3以上の複数のキューイングバッファにおいて輻輳状態が検出された場合であっても、輻輳状態が発生したキューイングバッファの優先クラスの優先順位を上げつつ、フレーム種別に応じた本来の優先順位(初期優先度)を反映させた優先順位に応じてフレームの読み出しをおこなうことができる。そのため、例えば、リアルタイム通信用のフレームなどの読み出しを優先しつつ、輻輳状態のキューイングバッファにおける不具合の発生を抑制することができる。また、優先順位の入れ替えによって、一時的に優先順位が低下したキューイングバッファが輻輳状態となったときには、優先順位の入れ替えを解消するため、優先順位の高いフレームの破棄の発生を優先的に抑制しつつ、他のフレームの破棄の発生を抑制することができる。
【0094】
本実施例のフレーム転送装置100によれば、音声データや動画データ等のリアルタイム通信用フレームと、文字データや静止画像データなどの非リアルタイム通信用フレームの2つについての優先順位の設定に限定されず、例えば、リアルタイム通信用フレームの中でも、音声データと動画データとで優先順位を変えることができる。これにより、フレーム転送装置の送信品質をより向上させることができる。
【0095】
B.第1実施例の変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0096】
B1.変形例1:
本実施例では、各キューイングバッファ141〜144は、それぞれ1つの優先クラスに対応するものとして説明したが、フレーム転送装置100が備える複数のキューイングバッファは、1つの優先クラスに複数のキューイングバッファが対応する構成であってもよい。また、本実施例では、フレーム転送装置100は、4つのキューイングバッファ141〜144を備えるものとして説明したが、2つ以上であれば4つに限定されない。
【0097】
B2.変形例2:
本実施例では、バッファ書き込み部150は、フレームからアプリケーション種別を読み出してそのフレームが属する優先クラスを特定するものとして説明したが、バッファ書き込み部150は、フレームから送信元MACアドレスや、宛先MACアドレス、VLAN−ID、ユーザ優先度、DSCP、送信元ポート番号、宛先ポート番号のうちの1対上の情報に基づいて、優先クラスを特定する構成であってもよい。
【0098】
B3.変形例3:
本実施例では、キューイングバッファの輻輳状態は、バッファ書き込み部150が検出するものとして説明したが、設定監視用端末500が輻輳状態を検出し、対応する輻輳フラグF24に「1」をセットする構成であってもよい。また、設定監視用端末500がキューイングバッファの輻輳状態の解消を検出してもよい。
【0099】
B4.変形例4:
本実施例では、バッファ読み出し部160は、現在優先度のより高いキューイングバッファにおいてフレームの蓄積がなくなるまで読み出しを継続し、フレームの蓄積がなくなると順次現在優先度の低いキューイングバッファの読み出す通常優先制御をおこなうものとして説明したが、現在優先度が高いほど読み出し頻度を高く設定して全てのキューイングバッファから順次読み出す重み付け優先制御をおこなう構成としてもよい。あるいは、現在優先度が高いほど1回の読み出し時間を長く(読み出しデータ量を多く)設定し、全てのキューイングバッファが循環的にフレームを読み出すようにしてもよい。
【0100】
C.第2実施例:
図21は、第2実施例に係るフレーム転送装置の概略構成を説明するための説明図である。第2実施例のフレーム転送装置102は、第1実施例のフレーム転送装置100(図2)と比較すると、フレーム転送部110の記憶部190にバッファ閾値管理テーブル185が追加されている点が異なる。第2実施例のフレーム転送装置102は、各キューイングバッファ141〜144に予め設定されている輻輳閾値Th1(図5)と輻輳解消閾値Th2(図6)の設定値を、輻輳状態の頻度等に応じて変化させることができる。バッファ閾値管理テーブル185は、キューイングバッファ141〜144の各々の輻輳閾値Th1と輻輳解消閾値Th2の現在の設定値を管理するためのテーブルであり、各キューイングバッファ141〜144の輻輳状態を示すフラグや、変更後の新たな設定値を算出するための情報などが登録されている。第2実施例のバッファ書き込み部150、および、バッファ読み出し部160は、後述するように、バッファ閾値管理テーブル185を参照して、各キューイングバッファ141〜144に設定されている輻輳閾値Th1と輻輳解消閾値Th2の設定値を変更させる。
【0101】
図22は、バッファ閾値管理テーブルの内容を説明するための説明図である。バッファ閾値管理テーブル185は、優先クラスF301と、閾値種別F302と、変更状態フラグF303と、初期設定値F304と、変更方向F305と、最大変更幅F306と、変更段階数F307と、輻輳度数F308と、現在設定値F309と、継続フラグF310と、継続時間F311の11つのフィールドを備えている。バッファ閾値管理テーブル185の各エントリE31〜E38は、各キューイングバッファ141〜144の輻輳閾値Th1および輻輳解消閾値Th2とそれぞれ対応している。例えば、エントリE36は、第3キューイングバッファ143の輻輳解消閾値Th2と対応している。以後、輻輳閾値Th1と輻輳解消閾値Th2の2つをあわせて単に「閾値Th」とも呼ぶ。
【0102】
優先クラスF301は、そのエントリと対応する閾値Thが属するキューイングバッファ141〜144を示している。閾値種別F302は、そのエントリと対応する閾値Thが輻輳閾値Th1か輻輳解消閾値Th2かを示している。優先クラスF301および閾値種別F302によって、複数の閾値Thの中から、エントリと対応する1つの閾値Th(以後「対応閾値Th」とも呼ぶ)を特定することができる。
【0103】
変更状態フラグF303は、対応閾値Thが後述する設定初期値aから変更されている状態(以後「変更状態」とも呼ぶ)となっているか否かを示している。ここでは、対応閾値Thが変更されている場合には「1」がセットされ、変更されていない場合には「0」がセットされる。
【0104】
初期設定値F304は、対応閾値Thの初期設定値a(%)を示している。初期設定値aとは、対応閾値Thの初期値であり、変更状態となる前の対応閾値Thの設定値として使用される。初期設定値aは、設定監視用端末500を介して予め設定することができる。ここでは、初期設定値aは、各キューイングバッファの最大データ蓄積量に対する蓄積量割合(%)で示されている。例えば、輻輳閾値Th1の初期設定値aとして「60」が設定されているキューイングバッファは、データ蓄積量が全体の60%となったときに輻輳状態が検出される。
【0105】
変更方向F305は、対応閾値Thの変更方向bを示している。変更方向bとは、変更状態のときの対応閾値Thが初期設定値aに対して増加するのか減少するのかを示す値である。ここでは、変更状態の対応閾値Thが初期設定値aに対して増加する場合、すなわち、対応閾値Thがキューイングバッファにおけるフレーム蓄積量増加方向(図5の左方向)に移動する場合に「1」が示されている。一方、変更状態の対応閾値Thが初期設定値aに対して減少する場合、すなわち、対応閾値Thがキューイングバッファにおけるフレーム蓄積量減少方向(図5の右方向)に移動する場合に「−1」が示されている。変更方向bは、設定監視用端末500を介して予め設定することができる。ここでは、各キューイングバッファの輻輳閾値Th1に対応するエントリに「1」がセットされ、輻輳解消閾値Th2に対応するエントリに「−1」がセットされている。
【0106】
最大変更幅F306は、対応閾値Thの最大変更幅c(%)を示している。最大変更幅cとは、変更状態のときの対応閾値Thを算出する際に用いられる値であり、初期設定値aに加算または減算される蓄積量割合(%)の最大値である。例えば、変更状態時に増加する対応閾値Thは、増加後の最大値が初期設定値a+最大変更幅cとなる。一方、変更状態時に減少する対応閾値Thは、減少後の最小値が初期設定値a−最大変更幅cとなる。最大変更幅cは、設定監視用端末500を介して予め設定することができる。
【0107】
変更段階数F307は、対応閾値Thの変更段階数dを示している。変更段階数dとは、対応閾値Thが初期設定値aから、最大値または最小値(初期設定値a±最大変更幅c)になるまでの間に段階的に値が変化するときの段階数を示している。例えば、変更段階数dに「3」が設定されている対応閾値Thは、初期設定値aの後、1段階目の値α、2段階目の値βを経て、3段階目の値として初期設定値a±最大変更幅cが設定される(a<α<β<a+c、または、a>α>β>a−c)。変更段階数dは、設定監視用端末500を介して予め設定することができる。
【0108】
輻輳度数F308は、対応閾値Thの輻輳度数Xを示している。輻輳度数Xとは、キューイングバッファの輻輳状態の発生のしやすさ、または、発生のしにくさの程度を示す度数である。後述するように、キューイングバッファで輻輳状態が発生した場合、または、一定時間(例えば、1時間)以上輻輳状態が発生していない場合に、1つカウントアップされる。ここでは、輻輳閾値Th1に対応するエントリにおいて、輻輳状態の発生にしにくさを示す度数として使用され、輻輳解消閾値Th2に対応するエントリにおいて、輻輳状態の発生のしやすさを示す度数として使用される。
【0109】
現在設定値F309は、対応閾値Thの現在設定値Y(%)を示している。現在設定値Yとは、対応閾値Thの現在の値であり、初期設定値aや、以下の式(1)によって算出された値Yが設定される。
Y=a+b×c×X/d ・・・(1)
ここで、aは初期設定値であり、bは変化方向であり、cは最大変更幅であり、Xは輻輳度数であり、dは変更段階数dである。また、0<a+|b×c|≦100である。
【0110】
継続フラグF310は、キューイングバッファが輻輳状態ではない状態(非輻輳状態)が継続しているか否かを示している。キューイングバッファが非輻輳状態の時に「1」がセットされ、キューイングバッファが輻輳状態の時に「0」がセットされる。
【0111】
継続時間F311は、対応閾値Thの非輻輳状態継続時間Tc(秒)を示している。非輻輳状態継続時間Tcとは、キューイングバッファが非輻輳状態のときの継続時間であり、非輻輳状態時に1秒ずつカウントアップされ、キューイングバッファが輻輳状態になると「0」が設定される。
【0112】
図23は、第2実施例におけるバッファ書き込み部150の処理の流れを示したフローチャートである。図23は、第1実施例の図7と対応している。図23のフローチャートは、図7のフローチャートと比較すると、ステップS120、S112、S140、S150が新たに追加されている点が異なる。図23のステップS101〜S111は、図7と同様のため説明を省略する。
【0113】
フレームの書き込みの後に(ステップS103)、キューイングバッファ(対象優先クラス)が輻輳状態とならなかった場合(ステップS104:NO)、バッファ書き込み部150は、輻輳閾値Th1変更判定処理をおこなう(ステップS120)。輻輳閾値Th1変更判定処理とは、所定の時間以上輻輳状態となっていないキューイングバッファに設定されている輻輳閾値Th1をフレーム蓄積量増加方向(図5左方向)に移動させるための処理である。輻輳閾値Th1変更判定処理の詳細については、図24を用いて後述する。
【0114】
一方、フレームの書き込みの後に(ステップS103)、キューイングバッファ(対象優先クラス)が輻輳状態となった場合(ステップS104:YES)、バッファ書き込み部150は、バッファ閾値管理テーブル185(図22)を参照して、対象優先クラスの輻輳閾値Th1の変更状態フラグF303が「1」か否かを判定する(ステップS112)。変更状態フラグF303が「1」の場合(ステップS112:YES)、バッファ書き込み部150は、対象優先クラスに対する輻輳閾値Th1変更解除処理をおこなう(ステップS140)。輻輳閾値Th1変更解除処理とは、輻輳閾値Th1が変更状態となっているキューイングバッファにおいて、変更状態フラグF303を「0」にセットして、変更状態を解除するための処理である。ここでは、対象優先クラスの輻輳閾値Th1に対しておこなわれる。これにより、輻輳状態となったキューイングバッファ(対象優先クラス)の輻輳閾値Th1が初期の状態に戻される。対象優先クラスに対する輻輳閾値Th1変更解除処理の詳細については、図27を用いて後述する。
【0115】
ステップS140において、輻輳閾値Th1変更解除処理を実行した後、または、ステップS112において、変更状態フラグF303が「0」の場合(ステップS112:NO)、バッファ書き込み部150は、対象優先クラスに対する輻輳解消閾値Th2変更判定処理をおこなう(ステップS150)。輻輳解消閾値Th2変更判定処理とは、所定の時間以上輻輳状態となっているキューイングバッファに設定されている輻輳解消閾値Th2をフレーム蓄積量減少方向(図5右方向)に移動させるための処理である。ここでは、対象優先クラスの輻輳解消閾値Th2に対しておこなわれる。これにより、輻輳状態となったキューイングバッファ(対象優先クラス)の輻輳解消閾値Th2が変更される。輻輳解消閾値Th2変更判定処理の詳細については、図30を用いて後述する。輻輳解除閾値Th2変更判定処理(ステップS150)の後、バッファ書き込み部150の処理は、ステップS101に戻る。以上が第2実施例のバッファ書き込み部150の処理の流れである。
【0116】
図24は、図23のステップS120における輻輳閾値Th1変更判定処理の流れを示したフローチャートである。図25と図26は、ステップS120の輻輳閾値Th1変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。以下では、輻輳閾値Th1変更判定処理の一例として、対象優先クラスのキューイングバッファが所定時間(ここでは、設定時間Tp)以上輻輳状態ではない場合に対象優先クラスの輻輳閾値Th1を増加方向に変更させる処理について説明する。設定時間Tp(例えば、3600秒)は、設定監視用端末500を介して予め任意に設定することができる。
【0117】
まず、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の継続フラグF310が「1」であるか否かを判定する(ステップS121)。ここでは、図25の第2キューイングバッファ142を対象優先クラスとして説明する。図25(a)では、対象優先クラス(第2キューイングバッファ142)の輻輳閾値Th1(エントリE33)の継続フラグF310は「0」となっている。
【0118】
継続フラグF310が「0」の場合(ステップS121:NO)、バッファ書き込み部150は、図25(b)に示すように、対象優先クラスの輻輳閾値Th1の継続フラグF310を「1」にセットする(ステップS122)。続いて、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の継続時間F311に示されている非輻輳状態継続時間Tc(秒)のカウントアップを開始する(ステップS123)。ステップS123の後、バッファ書き込み部150は、処理を終了する。
【0119】
一方、ステップS121において、図25(c)に示すように、対象優先クラス(第2キューイングバッファ142)の輻輳閾値Th1の継続フラグF310が「1」となっている場合(ステップS121:YES)、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の継続時間F311に示されている非輻輳状態継続時間Tc(秒)が設定時間Tp(ここでは、3600秒)以上か否かを判定する(ステップS124)。すなわち、このステップS124では、対象優先クラスの輻輳フラグF24(図4)が「0」にセットされた状態で1時間以上経過しているか否かが判定される。図25(c)では、対象優先クラスの輻輳閾値Th1の非輻輳状態継続時間Tcは「3600」であり、設定時間Tp以上(ここでは、Tc=Tp)となっている。すなわち、図25(c)で示される対象優先クラス(第2キューイングバッファ142)は、輻輳フラグF24(図4)が「0」のままちょうど1時間経過した状態となっている。
【0120】
非輻輳状態継続時間Tcが設定時間Tp以上(ここでは、Tc≧3600)の場合(ステップS124:YES)、バッファ書き込み部150は、図26(d)に示すように、対象優先クラスの輻輳閾値Th1の輻輳度数Xを「+1」カウントアップする(ステップS125)。一方、図26(c)とは異なり、非輻輳状態継続時間Tcが設定時間Tpより小さい場合(ステップS124:NO)、バッファ書き込み部150は、処理を終了する。キューイングバッファの非輻輳状態が所定以上継続しておらず、輻輳閾値Th1を増加方向に変更させる必要がないためである。
【0121】
ステップS125において輻輳度数Xをカウントアップした後、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の現在設定値Yを更新する(ステップS126)。具体的には、バッファ書き込み部150は、上述した式(1)によって算出した値を用いて、現在設定値F309に設定されている現在設定値Yを更新する。図26(d)では、対象優先クラスの輻輳閾値Th1の初期設定値aは「50」、変更方向bは「1」、最大変更幅cは「20」、変更段階数dは「10」、輻輳度数Xは「1」となっている。そのため、式(1)によって算出される値は「52」(52=50+1×20×1/10)となる。よって、図26(e)に示すように、現在設定値F309に新たな現在設定値Yとして「52」がセットされる。現在設定値Yが「50」から「52」に更新されることによって、対象優先クラスの輻輳閾値Th1は、増加方向に変更される。
【0122】
続いて、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の変更状態フラグF303が「1」であるか否かを判定する(ステップS127)。図26(e)では、対象優先クラスの輻輳閾値Th1の変更状態フラグF303は「0」となっている。変更状態フラグF303が「0」の場合(ステップS127:NO)、バッファ書き込み部150は、図26(f)に示すように、対象優先クラスの輻輳閾値Th1の変更状態フラグF303を「1」にセットする(ステップS128)。その後、バッファ書き込み部150は、処理を終了する。一方、変更状態フラグF303が「1」の場合(ステップS127:YES)、バッファ書き込み部150は、そのまま処理を終了する。以上が輻輳閾値Th1変更判定処理の流れである。
【0123】
上述した輻輳閾値Th1変更判定処理によれば、対象優先クラスの輻輳フラグF24(図4)が所定の時間以上「0」となった場合に、輻輳閾値Th1を増加方向に変更させることができる。また、輻輳フラグF24の「0」が継続していれば、輻輳閾値Th1変更判定処理を繰り返すことによって、対象優先クラスの輻輳閾値Th1を順次増加方向に変更させることができる。すなわち、輻輳フラグF24の「0」の継続時間に応じて輻輳閾値Th1の増加量を変化させることができる。
【0124】
図27は、図23のステップS140における輻輳閾値Th1変更解除処理の流れを示したフローチャートである。図28と図29は、ステップS140の輻輳閾値Th1変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。ここでは、図28の第2キューイングバッファ142を対象優先クラスとして説明する。図28(a)では、対象優先クラス(第2キューイングバッファ142)の輻輳閾値Th1(エントリE33)の現在設定値Yは「52」となっている。
【0125】
まず、バッファ書き込み部150は、図28(b)に示すように、対象優先クラスの輻輳閾値Th1の現在設定値Yに初期設定値aをセットする(ステップS141)。その後、バッファ書き込み部150は、図28(c)に示すように、対象優先クラスの輻輳閾値Th1の輻輳度数Xを「0」にセットする(ステップS142)。また、バッファ書き込み部150は、図29(d)に示すように、対象優先クラスの輻輳閾値Th1の変更状態フラグを「0」にセットする(ステップS143)。また、バッファ書き込み部150は、図29(e)に示すように、対象優先クラスの輻輳閾値Th1の継続フラグを「0」にセットする(ステップS144)。バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1のTcのカウントアップを停止する(ステップS145)。また、バッファ書き込み部150は、図29(f)に示すように、対象優先クラスの輻輳閾値Th1のTcを「0」にセットする(ステップS146)。その後、バッファ書き込み部150は、処理を終了する。以上が輻輳閾値Th1変更解除処理の流れである。
【0126】
図30は、図23のステップS150における輻輳解消閾値Th2変更判定処理の流れを示したフローチャートである。図31と図32は、ステップS150の輻輳解消閾値Th2変更判定処理時のバッファ閾値管理テーブルを説明するための説明図である。以下では、輻輳解消閾値Th2変更判定処理の一例として、輻輳状態となった対象優先クラスの輻輳解消閾値Th2を減少方向に変更させ、対象優先クラスより下位の優先クラスの輻輳解消閾値Th2を初期の状態に戻す処理について説明する。ここでは、図31の第2キューイングバッファ142を対象優先クラスとして説明する。
【0127】
バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2の輻輳度数Xが変更段階数dよりも小さいか否かを判定する(ステップS151)。図31(a)の対象優先クラスの輻輳解消閾値Th2(エントリE34)の輻輳度数Xは「0」であり、変更段階数dは「10」である。よって、輻輳度数Xが変更段階数dよりも小さい状態となっている。
【0128】
輻輳度数Xが変更段階数dよりも小さい場合(ステップS151:YES)、バッファ書き込み部150は、図31(b)に示すように、対象優先クラスの輻輳解消閾値Th2の輻輳度数Xを「+1」カウントアップする(ステップS152)。一方、図31とは異なり、対象優先クラスの輻輳解消閾値Th2の輻輳度数Xが変更段階数d以上となっている場合(ステップS151:NO)、バッファ書き込み部150は、処理を終了する。
【0129】
ステップS152において輻輳度数Xを「+1」カウントアップした後、バッファ書き込み部150は、上位の優先クラスが存在するか否かを判定する(ステップS153)。図31では、第2キューイングバッファ142を対象優先クラスとしているため、上位の優先クラス(第1キューイングバッファ141)が存在している。
【0130】
上位の優先クラスが存在する場合(ステップS153:YES)、上位の優先クラスにおいて、輻輳解消閾値Th2の変更状態フラグF303に「1」が存在するか否かを判定する(ステップS154)。一方、図31とは異なり、対象優先クラスの上位の優先クラスが存在しない場合(ステップS153:NO)、バッファ書き込み部150は、ステップS154をスキップする。図31では、上位の優先クラス(第1キューイングバッファ141)の輻輳解消閾値Th2の変更状態フラグF303に「1」が存在しない。
【0131】
上位の優先クラスにおいて、輻輳解消閾値Th2の変更状態フラグF303に「1」が存在しない場合(ステップS154:NO)、バッファ書き込み部150は、下位の優先クラスにおいて、輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しいか否かを判定する(ステップS155)。一方、図31とは異なり、上位の優先クラスにおいて、輻輳解消閾値Th2の変更状態フラグF303に「1」が存在する場合(ステップS154:YES)、バッファ書き込み部150は、処理を終了する。図31では、下位の優先クラス(第3キューイングバッファ143)において、各輻輳解消閾値Th2(エントリE36)の現在設定値Y(Y=48)が初期設定値a(a=50)と異なっている。
【0132】
下位の優先クラスにおいて、輻輳解消閾値Th2の現在設定値Yが初期設定値aと異なる場合(ステップS155:NO)、バッファ書き込み部150は、下位の優先クラスに対する輻輳解消閾値Th2変更解除処理をおこなう(ステップS160)。輻輳解消閾値Th2変更解除処理とは、輻輳解消閾値Th2が変更状態となっているキューイングバッファにおいて、変更状態フラグF303を「0」にセットして、変更状態を解除するための処理である。ここでは、下位の優先クラスに対して輻輳解消閾値Th2変更解除処理がおこなわれるため、図31(c)に示すように、下位の優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)において、変更状態フラグF303が「0」にセットされ、現在設定値Yに初期設定値aである「50」がセットされる。下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の詳細については、図32を用いて後述する。一方、図31とは異なり、下位のすべての優先クラスにおいて、輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しい場合(ステップS155:YES)、バッファ書き込み部150は、ステップS160をスキップする。
【0133】
次に、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2の現在設定値Yを更新する(ステップS157)。具体的には、バッファ書き込み部150は、上述した式(1)によって算出した値を用いて、現在設定値F309に設定されている現在設定値Yを更新する。図31(c)では、対象優先クラスの輻輳解消閾値Th2の初期設定値aは「50」、変更方向bは「−1」、最大変更幅cは「20」、変更段階数dは「10」、輻輳度数Xは「1」となっている。そのため、式(1)によって算出される値は「48」(48=50+1×20×(−1)/10)となる。よって、図32(d)に示すように、現在設定値F309に新たな現在設定値Yとして「48」がセットされる。現在設定値Yが「50」から「48」に更新されることによって、対象優先クラスの輻輳解消閾値Th2は、減少方向に変更される。次に、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「1」であるか否かを判定する(ステップS158)。図32(d)では、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303は「0」となっている。
【0134】
変更状態フラグF303が「0」の場合(ステップS158:NO)、バッファ書き込み部150は、図31(e)に示すように、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303を「1」にセットする(ステップS159)。その後、バッファ書き込み部150は、処理を終了する。一方、図32と異なり、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「1」の場合(ステップS158:YES)、バッファ書き込み部150は、そのまま処理を終了する。以上が輻輳解消閾値Th2変更判定処理の流れである。
【0135】
図33は、図30のステップS160における下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の流れを示したフローチャートである。図34は、ステップS160の輻輳解消閾値Th2変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。バッファ書き込み部150は、この下位の優先クラスに対する輻輳解消閾値Th2変更解除処理によって、対象優先クラスより下位の各優先クラスにおいて、現在優先度と初期優先度とが等しくなるように設定する。以下に下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の一例を示す。ここでは、バッファ書き込み部150は、第1実施例と同様に、優先クラスのうちのいずれか1つを設定登録可能な優先クラス登録部を備えているものとして説明する。
【0136】
バッファ書き込み部150は、まず、優先クラス登録部に対象優先クラスを登録する(ステップS161)。ここでは、図34の第2キューイングバッファ142を対象優先クラスとして説明する。バッファ書き込み部150は、バッファ状態管理テーブル180を参照し、登録優先クラスより下位の優先クラスが存在するか否かを判定する(ステップS162)。図34(a)では、第2キューイングバッファ142を対象優先クラスとしているため、下位の優先クラス(第3、4キューイングバッファ143、144)が存在している。
【0137】
下位の優先クラスが存在する場合(ステップS162:YES)、バッファ書き込み部150は、優先クラス登録部に直下の優先クラスを登録する(ステップS163)。図34(a)では、第3キューイングバッファ143が登録される。一方、図34と異なり、下位の優先クラスが存在しない場合(ステップS162:NO)、バッファ書き込み部150は、処理を終了する。
【0138】
ステップS163において優先クラス登録部に直下の優先クラスを登録した後、バッファ書き込み部150は、登録優先クラスの輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しいか否かを判定する(ステップS164)。図34(a)では、登録優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)において、現在設定値Y(Y=48)と初期設定値a(a=50)aが等しくない。
【0139】
登録優先クラスの輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しくない場合(ステップS164:NO)、バッファ書き込み部150は、図34(b)に示すように、登録優先クラスの輻輳解消閾値Th2の現在設定値Yに初期設定値aをセットする(ステップS165)。また、バッファ書き込み部150は、図34(c)に示すように、登録優先クラスの輻輳解消閾値Th2の変更状態フラグF303を「0」にセットする(ステップS166)。その後、バッファ書き込み部150の処理は、ステップS162に戻る。一方、ステップS164において、登録優先クラスの輻輳解消閾値Th2の現在設定値Yが初期設定値aと等しい場合(ステップS164:YES)、バッファ書き込み部150の処理は、ステップS162に戻る。以上が下位の優先クラスに対する輻輳解消閾値Th2変更解除処理の流れである。
【0140】
図35は、第2実施例におけるバッファ読み出し部160の処理の流れを示したフローチャートである。図35は、第1実施例の図12と対応している。図35のフローチャートは、図12のフローチャートと比較すると、ステップS410、S420が新たに追加されている点が異なる。図35のステップS401〜S408は、図12と同様のため説明を省略する。
【0141】
フレームの読み出しによって(ステップS402)、キューイングバッファ(対象優先クラス)の輻輳状態が解消すると(ステップS404)バッファ読み出し部160は、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「1」であるか否かを判定する(ステップS410)。対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「1」である場合(ステップS410:YES)、対象優先クラスに対する輻輳解消閾値Th2変更解除処理をおこなう(ステップS420)。対象優先クラスに対する輻輳解消閾値Th2変更解除処理の詳細については、図36を用いて後述する。対象優先クラスに対する輻輳解消閾値Th2変更解除処理の後、バッファ読み出し部160は、ステップS406の処理をおこなう。ステップS410において、対象優先クラスの輻輳解消閾値Th2の変更状態フラグF303が「0」である場合(ステップS410:NO)、バッファ読み出し部160は、ステップS420をスキップし、ステップS406の処理をおこなう。以上が第2実施例におけるバッファ読み出し部160の処理の流れである。
【0142】
図36は、図35のステップS420における対象優先クラスに対する輻輳解消閾値Th2変更解除処理の流れを示したフローチャートである。図37は、ステップS420の輻輳解消閾値Th2変更解除処理時のバッファ閾値管理テーブルを説明するための説明図である。バッファ読み出し部160は、この対象優先クラスに対する輻輳解消閾値Th2変更解除処理によって、対象優先クラスの現在優先度と初期優先度とが等しくなるように設定する。以下に対象優先クラスに対する輻輳解消閾値Th2変更解除処理の一例を示す。ここでは、図37の第2キューイングバッファ142を対象優先クラスとして説明する。
【0143】
バッファ書き込み部150は、図37(a)に示すように、対象優先クラスの輻輳解消閾値Th2の現在設定値Yに初期設定値aをセットする(ステップS421)。その後、バッファ書き込み部150は、図37(b)に示すように、登録優先クラスの輻輳解消閾値Th2の輻輳度数Xを「0」にセットする(ステップS422)。また、バッファ書き込み部150は、図37(c)に示すように、登録優先クラスの輻輳解消閾値Th2の変更状態フラグF303を「0」にセットする(ステップS423)。以上が対象優先クラスに対する輻輳解消閾値Th2変更解除処理の流れである。
【0144】
図38は、第2実施例のフレーム転送装置の動作を例示するための第1の説明図である。ここでは、バッファ状態管理テーブル180には、図4の内容が設定されているものとして説明する。図38(a)では、すべてのキューイングバッファ141〜144が輻輳していない状態が示されている。このときの各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順に、それぞれ1、2、3、4となっている。図38(b)では、図30(a)の状態から、第3キューイングバッファ143へのフレームの書き込みによって、第3キューイングバッファ143が輻輳した状態が示されている。第3キューイングバッファ143が輻輳状態になると、1つ上位の優先クラスに対応する第2キューイングバッファ142で優先度変更設定がおこなわれる。これにより、各優先クラスの優先順位はキューイングバッファ141、142、143、144の順に、それぞれ1、3、2、4となる。また、第3キューイングバッファ143の輻輳解消閾値Th2は、フレーム蓄積量減少方向(図38の右方向)に移動する。
【0145】
図39は、図38の動作時のバッファ閾値管理テーブルを説明するための説明図である。図39(a)は、キューイングバッファ141〜144が図38(a)に示す状態のときのバッファ閾値管理テーブル185を示している。キューイングバッファ141〜144の輻輳解消閾値Th2の現在設定値Yは、すべて「50」となっている。図39(b)は、キューイングバッファ141〜144が図38(b)に示す状態のときのバッファ閾値管理テーブル185を示している。第3キューイングバッファ143が輻輳状態になると、バッファ書き込み部150は、対象優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)の輻輳度数Xを「+1」カウントアップする(図30、ステップS152)。また、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE36)の現在設定値Yを「48」(48=50+1×20×(−1)/10)に更新し(ステップS157)、変更状態フラグF303を「1」にセットする(ステップS159)。
【0146】
図40は、第2実施例のフレーム転送装置の動作を例示するための第2の説明図である。図40(a)では、上述した図38(b)と同じ状態が示されている。すなわち、第3キューイングバッファ143が輻輳状態となり、1つ上位の優先クラスに対応する第2キューイングバッファ142で優先度変更設定がおこなわれている状態が示されている。
【0147】
図40(b)では、図40(a)の状態からさらに、第4キューイングバッファ144が輻輳した状態が示されている。このとき、各優先クラスの優先順位は変化せず、また、第4キューイングバッファ144の輻輳解消閾値Th2は、移動しない。図40(c)では、図40(a)の状態からさらに、第2キューイングバッファ142が輻輳した状態が示されている。このとき、各優先クラスの優先順位はキューイングバッファ141、142、143、144の順に、それぞれ2、1、3、4となる。また、第2キューイングバッファ142の輻輳解消閾値Th2は、フレーム蓄積量減少方向(図40の右方向)に移動する。一方、第3キューイングバッファ143の輻輳解消閾値Th2は、フレーム蓄積量増加方向(図40の左方向)に移動して輻輳前の位置に戻る。図40(d)では、図40(a)の状態からさらに、第1キューイングバッファ141が輻輳した状態が示されている。このとき、各優先クラスの優先順位はキューイングバッファ141、142、143、144の順に、それぞれ1、2、3、4となる。また、第1キューイングバッファ141の輻輳解消閾値Th2は、フレーム蓄積量減少方向(図40の右方向)に移動する。一方、第3キューイングバッファ143の輻輳解消閾値Th2は、フレーム蓄積量増加方向(図40の左方向)に移動して輻輳前の位置に戻る。
【0148】
図41は、図40の動作時のバッファ閾値管理テーブルを説明するための説明図である。図41(a)は、キューイングバッファ141〜144が図40(b)に示す状態のときのバッファ閾値管理テーブル185を示している。第3キューイングバッファ143が輻輳状態のときに第4キューイングバッファ144が輻輳状態になると、バッファ書き込み部150は、対象優先クラス(第4キューイングバッファ144)の輻輳解消閾値Th2(エントリE38)の輻輳度数Xを「+1」カウントアップする(図30、ステップS152)。一方、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE38)の現在設定値Yを「50」のまま変更せず、また、変更状態フラグF303を「0」のまま変更しない(ステップS154:YES)。
【0149】
図41(b)は、キューイングバッファ141〜144が図40(c)に示す状態のときのバッファ閾値管理テーブル185を示している。第3キューイングバッファ143が輻輳状態のときに第2キューイングバッファ142が輻輳状態になると、バッファ書き込み部150は、対象優先クラス(第2キューイングバッファ142)の輻輳解消閾値Th2(エントリE34)の輻輳度数Xを「+1」カウントアップする(図30、ステップS152)。また、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE34)の現在設定値Yを「48」(48=50+1×20×(−1)/10=48)に更新し(ステップS157)、変更状態フラグF303を「1」にセットする(ステップS159)。さらに、バッファ書き込み部150は、対象優先クラスの下位の優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)の現在設定値Yに初期設定値aである「50」をセットし(図33、ステップS165)、変更状態フラグF303を「0」にセットする(ステップS166)。
【0150】
図41(c)は、キューイングバッファ141〜144が図40(d)に示す状態のときのバッファ閾値管理テーブル185を示している。第3キューイングバッファ143が輻輳状態のときに第1キューイングバッファ141が輻輳状態になると、バッファ書き込み部150は、対象優先クラス(第1キューイングバッファ141)の輻輳解消閾値Th2(エントリE32)の輻輳度数Xを「+1」カウントアップする(図30、ステップS152)。また、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE32)の現在設定値Yを「48」(48=50+1×20×(−1)/10=48)に更新し(ステップS157)、変更状態フラグF303を「1」にセットする(ステップS159)。さらに、バッファ書き込み部150は、対象優先クラスの下位の優先クラス(第3キューイングバッファ143)の輻輳解消閾値Th2(エントリE36)の現在設定値Yに初期設定値aである「50」をセットし(図33、ステップS165)、変更状態フラグF303を「0」にセットする(ステップS166)。
【0151】
図42は、第2実施例のフレーム転送装置の動作を例示するための第3の説明図である。図42(a)では、上述した図40(b)と同じ状態が示されている。すなわち、第3キューイングバッファ143と第4キューイングバッファ144が輻輳した状態が示されている。このときの各優先クラスの優先順位は、キューイングバッファ141、142、143、144の順に、それぞれ1、3、2、4となっている。図42(b)では、図42(a)の状態から、第3キューイングバッファ143の輻輳が解消された状態が示されている。輻輳の解消により、1つ上位の優先クラス(第2キューイングバッファ142)の優先度変更設定は解除される。これにより、各優先クラスの優先順位はキューイングバッファ141、142、143、144の順に、それぞれ1、2、4、3となる。また、第4キューイングバッファ144の輻輳解消閾値Th2は、フレーム蓄積量減少方向(図42の右方向)に移動する。一方、第3キューイングバッファ143の輻輳解消閾値Th2は、フレーム蓄積量増加方向(図42の左方向)に移動して輻輳前の位置に戻る。
【0152】
図43は、図42の動作時のバッファ閾値管理テーブルを説明するための説明図である。図43(a)は、キューイングバッファ141〜144が図42(a)に示す状態のときのバッファ閾値管理テーブル185を示している。キューイングバッファ141〜144の輻輳解消閾値Th2の現在設定値Yは、第3キューイングバッファ143のみが「48」であり、他が「50」となっている。図43(b)は、キューイングバッファ141〜144が図42(b)に示す状態のときのバッファ閾値管理テーブル185を示している。バッファ読み出し部160は、対象優先クラス(第3キューイングバッファ143)の輻輳状態の解消を検出すると、対象優先クラスの輻輳解消閾値Th2(エントリE36)の現在設定値Yに初期設定値aをセットする(図36、ステップS421)。また、バッファ読み出し部160は、対象優先クラスの輻輳解消閾値Th2(エントリE36)の輻輳度数Xと輻輳状態フラグを「0」にセットする(ステップS422、S423)。一方、バッファ書き込み部150は、下位の優先クラス(第4キューイングバッファ144)の輻輳状態を検出すると、下位の優先クラスの輻輳解消閾値Th2(エントリE38)の輻輳度数Xを「+1」カウントアップする。(図30、ステップS152)。また、バッファ書き込み部150は、対象優先クラスの輻輳解消閾値Th2(エントリE34)の現在設定値Yを「46」(48=50+2×20×(−1)/10=46)に更新し(ステップS157)、変更状態フラグF303を「1」にセットする(ステップS159)。
【0153】
図44は、第2実施例のフレーム転送装置の動作を例示するための第4の説明図である。図44(a)では、すべてのキューイングバッファ141〜144が輻輳していない状態が示されている。図44(b)では、第3キューイングバッファ143において、図44(a)の状態から、輻輳が発生しないまま所定の時間(設定時間Tp)が経過した状態が示されている。第3キューイングバッファ143において、所定の時間輻輳が発生していないと、第3キューイングバッファ143の輻輳閾値Th1は、フレーム蓄積量増加方向(図44の左方向)に移動する。
【0154】
図45は、図44の動作時のバッファ閾値管理テーブルを説明するための説明図である。図45(a)は、キューイングバッファ141〜144が図44(a)に示す状態のときのバッファ閾値管理テーブル185を示している。キューイングバッファ141〜144の輻輳閾値Th1の現在設定値Yは、すべて「50」となっている。図45(b)は、キューイングバッファ141〜144が図44(b)に示す状態のときのバッファ閾値管理テーブル185を示している。バッファ書き込み部150は、第3キューイングバッファ143が設定時間Tp(例えば3600秒)以上輻輳状態になっていないことを検出すると(図24、ステップS124)、対象優先クラス(第3キューイングバッファ143)の輻輳閾値Th1(エントリE35)の輻輳度数Xを「+1」カウントアップする(ステップS125)。また、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の現在設定値Yを「52」(52=50+1×20×1/10)に更新し(ステップS126)、変更状態フラグF303を「1」にセットする(ステップS128)。
【0155】
図46は、第2実施例のフレーム転送装置の動作を例示するための第5の説明図である。図46(a)では、上述した図44(b)と同じ状態が示されている。すなわち、第3キューイングバッファ143が設定時間Tp以上輻輳状態にならず、輻輳閾値Th1が、フレーム蓄積量増加方向に移動した状態が示されている。図46(b)では、図46(a)の状態からさらに、第2キューイングバッファ142が設定時間Tp以上輻輳状態にならなかった状態が示されている。このとき、第2キューイングバッファ142の輻輳閾値Th1は、フレーム蓄積量増加方向(図46の左方向)に移動する。一方、第3キューイングバッファ143の輻輳閾値Th1は、移動したままの状態で変化しない。図40(c)では、図46(a)の状態からさらに、第4キューイングバッファ144が設定時間Tp以上輻輳状態にならなかった状態が示されている。このとき、第4キューイングバッファ144の輻輳閾値Th1は、フレーム蓄積量増加方向(図46の左方向)に移動する。一方、第3キューイングバッファ143の輻輳閾値Th1は、移動したままの状態で変化しない。
【0156】
図47は、図46の動作時のバッファ閾値管理テーブルを説明するための説明図である。図47(a)は、キューイングバッファ141〜144が図46(b)に示す状態のときのバッファ閾値管理テーブル185を示している。バッファ書き込み部150は、第2キューイングバッファ142が設定時間Tp以上輻輳状態になっていないことを検出すると(図24、ステップS124)、対象優先クラス(第2キューイングバッファ142)の輻輳閾値Th1(エントリE33)の輻輳度数Xを「+1」カウントアップする(ステップS125)。また、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の現在設定値Yを「52」(52=50+1×20×1/10)に更新し(ステップS126)、変更状態フラグF303を「1」にセットする(ステップS128)。図47(b)は、キューイングバッファ141〜144が図46(c)に示す状態のときのバッファ閾値管理テーブル185を示している。バッファ書き込み部150は、第4キューイングバッファ144が設定時間Tp以上輻輳状態になっていないことを検出すると(図24、ステップS124)、対象優先クラス(第4キューイングバッファ144)の輻輳閾値Th1(エントリE37)の輻輳度数Xを「+1」カウントアップする(ステップS125)。また、バッファ書き込み部150は、対象優先クラスの輻輳閾値Th1の現在設定値Yを「52」(52=50+1×20×1/10)に更新し(ステップS126)、変更状態フラグF303を「1」にセットする(ステップS128)。
【0157】
以上説明した、第2実施例のフレーム転送装置102によれば、第1実施例と同様に、輻輳状態が発生したキューイングバッファの優先クラスの優先順位を上げつつ、フレーム種別に応じた本来の優先順位(初期優先度)を反映させた優先順位に応じてフレームの読み出しをおこなうことができる。また、これに加えて、キューイングバッファ(対象優先クラス)が輻輳状態になると、対象優先クラスの輻輳解消閾値Th2をフレーム蓄積量減少方向に変化させるため、対象優先クラスの優先順位が上がった状態を第1実施例よりも長く持続させることができる。これにより、フレーム破棄の発生を抑制することができる。
【0158】
また、キューイングバッファ(対象優先クラス)の輻輳状態が所定の時間発生していないとき、対象優先クラスのキューイングバッファの輻輳閾値Th1をフレーム蓄積量増加方向に変化させるため、対象優先クラスにおいて輻輳状態が発生しにくくなる。これにより、上位の優先クラスにおいて、対象優先クラスで輻輳状態が発生したときの優先度変更の影響を受けにくくすることができ、フレーム破棄などの不具合の発生を抑制することができる。
【0159】
D.第2実施例の変形例:
D1.変形例1:
本実施例では、各キューイングバッファの輻輳閾値Th1と輻輳解消閾値Th2を1つのテーブル(バッファ閾値管理テーブル185)によって管理する構成について説明したが、輻輳閾値Th1と輻輳解消閾値Th2は、それぞれ異なるテーブルによって管理される構成としてもよい。
【0160】
D2.変形例2:
本実施例では、バッファ書き込み部150およびバッファ読み出し部160が、バッファ閾値管理テーブル185を参照して、輻輳閾値Th1および輻輳解消閾値Th2の設定値の変更をおこなう構成として説明したが、フレーム転送装置102に搭載された図示しない演算処理部がおこなう構成としてもよい。
【0161】
D3.変形例3:
第1実施例で説明した変形例(第1実施例の変形例)は、本実施例のフレーム転送装置102にも当然に適用することができる。
【符号の説明】
【0162】
10…ネットワークシステム
100…フレーム転送装置
110…フレーム転送部
131、132、133…回線インターフェース部
140…キューイングバッファ群
141…第1キューイングバッファ
142…第2キューイングバッファ
143…第3キューイングバッファ
144…第4キューイングバッファ
150…バッファ書き込み部
160…バッファ読み出し部
170…優先クラステーブル
180…バッファ状態管理テーブル
190…記憶部
200…ユーザ端末
300…サーバ
400…ストレージ
500…設定監視用端末
【特許請求の範囲】
【請求項1】
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記バッファ書き込み部は、いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう、フレーム転送装置。
【請求項2】
請求項1に記載のフレーム転送装置において、
前記バッファ書き込み部は、前記第2のキューイングバッファが輻輳状態の場合には、前記所定の条件を満たさないものと判断して、前記優先順位の入れ替えをおこなわない、フレーム転送装置。
【請求項3】
請求項1または請求項2に記載のフレーム転送装置において、
前記バッファ書き込み部は、前記第1のキューイングバッファの優先順位が、過去におこなわれた優先順位の入れ替えによって、1つ下がっている場合には、
(i)前記優先順位の入れ替えを解消するとともに、
(ii)前記第2のキューイングバッファが輻輳状態ではない場合には、前記第1のキューイングバッファと、前記第2のキューイングバッファとの優先順位の入れ替えをおこなう、フレーム転送装置。
【請求項4】
請求項1ないし請求項3のいずれかに記載のフレーム転送装置において、
前記バッファ読み出し部は、過去におこなわれた前記優先順位の入れ替えによって、優先順位が1つ上がっている前記第1のキューイングバッファの輻輳状態の解消を検出すると、前記優先順位の入れ替えを解消する、フレーム転送装置。
【請求項5】
請求項1ないし請求項4のいずれかに記載のフレーム転送装置において、
前記記憶部には、前記各キューイングバッファの現在の優先順位を示す情報と、前記各キューイングバッファの初期の優先順位を示す情報とが記憶され、
前記バッファ書き込み部は、前記初期の優先順位において、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位を、前記現在の優先順位を示す情報において、前記第1のキューイングバッファより優先順位が1つ下位になるように前記現在の優先順位を示す情報を書き換え、
前記バッファ読み出し部は、前記現在の優先順位に応じて、前記キューイングバッファからフレームを読み出して転送をおこなう、フレーム転送装置。
【請求項6】
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう工程と、を備えるフレームの転送方法。
【請求項7】
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記記憶部は、各前記キューイングバッファのそれぞれに設定される輻輳閾値と輻輳解消閾値とを記憶し、
前記バッファ書き込み部は、
(i)フレームの蓄積量が前記輻輳閾値を超えたときに前記キューイングバッファの輻輳状態を検出し、フレームの蓄積量が前記輻輳解消閾値を下回ったときに前記キューイングバッファの輻輳状態の解消を検出し、
(ii)いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、
(iii)前記第1のキューイングバッファに設定された前記輻輳解消閾値を減少させる、フレーム転送装置。
【請求項8】
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記記憶部は、各前記キューイングバッファのそれぞれに設定される輻輳閾値と輻輳解消閾値とを記憶し、
前記バッファ書き込み部は、
(i)フレームの蓄積量が前記輻輳閾値を超えたときに前記キューイングバッファの輻輳状態を検出し、フレームの蓄積量が前記輻輳解消閾値を下回ったときに前記キューイングバッファの輻輳状態の解消を検出し、
(ii)いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、
(iii)所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、前記キューイングバッファに設定された前記輻輳閾値を増加させる、フレーム転送装置。
【請求項9】
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
フレームの蓄積量が輻輳閾値を超えたときにキューイングバッファの輻輳状態を検出し、フレームの蓄積量が輻輳解消閾値を下回ったときにキューイングバッファの輻輳状態の解消を検出する工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、前記第1のキューイングバッファに設定されている輻輳解消閾値を減少させる工程と、を備えるフレームの転送方法。
【請求項10】
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
フレームの蓄積量が輻輳閾値を超えたときにキューイングバッファの輻輳状態を検出し、フレームの蓄積量が輻輳解消閾値を下回ったときにキューイングバッファの輻輳状態の解消を検出する工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう工程と、
所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、前記キューイングバッファに設定された輻輳閾値を増加させる工程と、を備えるフレームの転送方法。
【請求項1】
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記バッファ書き込み部は、いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう、フレーム転送装置。
【請求項2】
請求項1に記載のフレーム転送装置において、
前記バッファ書き込み部は、前記第2のキューイングバッファが輻輳状態の場合には、前記所定の条件を満たさないものと判断して、前記優先順位の入れ替えをおこなわない、フレーム転送装置。
【請求項3】
請求項1または請求項2に記載のフレーム転送装置において、
前記バッファ書き込み部は、前記第1のキューイングバッファの優先順位が、過去におこなわれた優先順位の入れ替えによって、1つ下がっている場合には、
(i)前記優先順位の入れ替えを解消するとともに、
(ii)前記第2のキューイングバッファが輻輳状態ではない場合には、前記第1のキューイングバッファと、前記第2のキューイングバッファとの優先順位の入れ替えをおこなう、フレーム転送装置。
【請求項4】
請求項1ないし請求項3のいずれかに記載のフレーム転送装置において、
前記バッファ読み出し部は、過去におこなわれた前記優先順位の入れ替えによって、優先順位が1つ上がっている前記第1のキューイングバッファの輻輳状態の解消を検出すると、前記優先順位の入れ替えを解消する、フレーム転送装置。
【請求項5】
請求項1ないし請求項4のいずれかに記載のフレーム転送装置において、
前記記憶部には、前記各キューイングバッファの現在の優先順位を示す情報と、前記各キューイングバッファの初期の優先順位を示す情報とが記憶され、
前記バッファ書き込み部は、前記初期の優先順位において、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位を、前記現在の優先順位を示す情報において、前記第1のキューイングバッファより優先順位が1つ下位になるように前記現在の優先順位を示す情報を書き換え、
前記バッファ読み出し部は、前記現在の優先順位に応じて、前記キューイングバッファからフレームを読み出して転送をおこなう、フレーム転送装置。
【請求項6】
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう工程と、を備えるフレームの転送方法。
【請求項7】
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記記憶部は、各前記キューイングバッファのそれぞれに設定される輻輳閾値と輻輳解消閾値とを記憶し、
前記バッファ書き込み部は、
(i)フレームの蓄積量が前記輻輳閾値を超えたときに前記キューイングバッファの輻輳状態を検出し、フレームの蓄積量が前記輻輳解消閾値を下回ったときに前記キューイングバッファの輻輳状態の解消を検出し、
(ii)いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、
(iii)前記第1のキューイングバッファに設定された前記輻輳解消閾値を減少させる、フレーム転送装置。
【請求項8】
フレーム転送装置であって、
フレームを蓄積可能な3以上の複数のキューイングバッファと、
各前記キューイングバッファからフレームを読み出す相対的な優先順位を記憶する記憶部と、
前記優先順位に応じて前記キューイングバッファからフレームを読み出して転送をおこなうバッファ読み出し部と、
前記フレーム転送装置の外部から受信したフレームを前記フレームに含まれる情報に応じて前記複数のキューイングバッファのうちのいずれかに書き込むバッファ書き込み部と、を備え、
前記記憶部は、各前記キューイングバッファのそれぞれに設定される輻輳閾値と輻輳解消閾値とを記憶し、
前記バッファ書き込み部は、
(i)フレームの蓄積量が前記輻輳閾値を超えたときに前記キューイングバッファの輻輳状態を検出し、フレームの蓄積量が前記輻輳解消閾値を下回ったときに前記キューイングバッファの輻輳状態の解消を検出し、
(ii)いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、
(iii)所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、前記キューイングバッファに設定された前記輻輳閾値を増加させる、フレーム転送装置。
【請求項9】
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
フレームの蓄積量が輻輳閾値を超えたときにキューイングバッファの輻輳状態を検出し、フレームの蓄積量が輻輳解消閾値を下回ったときにキューイングバッファの輻輳状態の解消を検出する工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこない、前記第1のキューイングバッファに設定されている輻輳解消閾値を減少させる工程と、を備えるフレームの転送方法。
【請求項10】
フレームの転送方法であって、
記憶部に記憶されている優先順位に応じて3以上の複数のキューイングバッファからフレームを読み出して転送をおこなう工程と、
フレームに含まれる情報に応じてフレームを前記複数のキューイングバッファのうちのいずれかに書き込む工程と、
フレームの蓄積量が輻輳閾値を超えたときにキューイングバッファの輻輳状態を検出し、フレームの蓄積量が輻輳解消閾値を下回ったときにキューイングバッファの輻輳状態の解消を検出する工程と、
いずれかの第1のキューイングバッファの輻輳状態を検出すると、所定の条件を満たしたときに、前記第1のキューイングバッファと、前記第1のキューイングバッファより優先順位が1つ上位の第2のキューイングバッファの優先順位の入れ替えをおこなう工程と、
所定の時間以上輻輳状態となっていないキューイングバッファを検出すると、前記キューイングバッファに設定された輻輳閾値を増加させる工程と、を備えるフレームの転送方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【公開番号】特開2013−93834(P2013−93834A)
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願番号】特願2012−156089(P2012−156089)
【出願日】平成24年7月12日(2012.7.12)
【出願人】(504411166)アラクサラネットワークス株式会社 (315)
【Fターム(参考)】
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願日】平成24年7月12日(2012.7.12)
【出願人】(504411166)アラクサラネットワークス株式会社 (315)
【Fターム(参考)】
[ Back to top ]