(57)【要約】【課題】バッファの利用効率を高め、制御の単純化、高速化を図ること。【解決手段】複数のユーザに対応するパケットデータを蓄積するとともに送出するＦＩＦＯバッファ１０１と、ＦＩＦＯバッファ１０１から計測周期に送出されたパケットデータの送出量をユーザ毎に計測する送出量計測部１０７と、ＦＩＦＯバッファ１０１に蓄積されているパケットデータのキュー長を計測するキュー長計測部１０４と、キュー長に基づいて、最低帯域を保証するパケットデータの送出許容量をユーザ毎に計算する送出許容量計算部１０５と、送出量および送出許容量に基づいて、つぎの計測周期にＦＩＦＯバッファ１０１にパケットデータを書き込むことができる書込許容量を計算する書込許容量計算部１０８と、書込許容量に基づいて、ＦＩＦＯバッファ１０１へのパケットデータの書き込み、パケットデータの読み出しを制御する書込／読出制御部１０２とを備えている。【選択図】      図１
2005026893.tif 000002
【特許請求の範囲】
【請求項１】
複数のユーザに対応するデータをファストインファストアウト方式により蓄積するとともに送出する蓄積手段と、
前記蓄積手段から所定期間に送出されたデータの送出量をユーザ毎に計測する送出量計測手段と、
前記蓄積手段に蓄積されているデータの蓄積量を計測する蓄積量計測手段と、前記蓄積量に基づいて、最低帯域を保証するデータの送出許容量をユーザ毎に計算する送出許容量計算手段と、
前記送出量および前記送出許容量に基づいて、つぎの所定期間に前記蓄積手段にデータを書き込むことができる書込許容量を計算する書込許容量計算手段と、前記書込許容量に基づいて、前記蓄積手段へのデータの書き込み、データの読み出しを制御する制御手段と、
を備えたことを特徴とする帯域制御装置。
【請求項２】
前記送出許容量計算手段は、前記蓄積量に反比例する関数に基づいて、前記送出許容量を計算することを特徴とする請求項１に記載の帯域制御装置。
【請求項３】
前記関数は、ユーザ毎に設定されており、前記送出許容量計算手段は、各ユーザに対応する関数に基づいて、前記送出許容量を計算することを特徴とする請求項２に記載の帯域制御装置。
【請求項４】
前記蓄積量計測手段は、前記蓄積手段に蓄積されているデータの蓄積量をユーザ毎に計測することを特徴とする請求項１〜３のいずれか一つに記載の帯域制御装置。
【請求項５】
前記蓄積手段に実際に蓄積されているデータに対応するユーザの数を実効ユーザ数として計測する実効ユーザ数計測手段を備え、前記送出許容量計算手段は、実効ユーザ数に応じて設定された複数の関数のうち、前記実効ユーザ数計測手段で計測された実効ユーザ数に対応する関数に基づいて、前記送出許容量を計算することを特徴とする請求項２に記載の帯域制御装置。
【請求項６】
前記蓄積手段に実際に蓄積されているデータに対応するユーザに重み付けを行う重み付け手段を備え、前記送出許容量計算手段は、ユーザの重みに応じて設定された複数の関数のうち、前記重み付け手段における重み対応する関数に基づいて、前記送出許容量を計算することを特徴とする請求項２に記載の帯域制御装置。
【請求項７】
前記制御手段は、前記蓄積量が、予め設定された閾値を超えている場合、前記蓄積手段へのデータの書込量に制限をかけることを特徴とする請求項１〜６のいずれか一つに記載の帯域制御装置。
【請求項８】
前記制御手段は、前記蓄積量が、予め設定された閾値を超えている場合、優先度が高いデータを破棄することを特徴とする請求項１〜６のいずれか一つに記載の帯域制御装置。
【請求項９】
前記蓄積手段は、サービス毎に複数設けられていることを特徴とする請求項１〜８のいずれか一つに記載の帯域制御装置。
【請求項１０】
前記書込許容量計算手段は、ユーザ毎に書込許容量を計算することを特徴とする請求項１〜９のいずれか一つに記載の帯域制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信網に収容されるコネクションの最低帯域の保証を行い、余剰帯域の最低帯域比例配分を行うための帯域制御装置に関するものであり、特に、蓄積手段（バッファ等）の利用効率を高めることができ、制御の単純化、高速化を図ることができる帯域制御装置に関するものである。
【０００２】
【従来の技術】
近年、情報機器の発達に伴い、これらの間で様々な情報が通信網を介してやり取りされている。従来の通信網においては、電話に代表されるように、音声中心であり、情報の伝送速度もそれほど大きなものが要求されていなかった。
【０００３】
しかしながら、情報機器を使って、音声、画像、データ等のマルチメディア情報のやり取りを行う場合には、それぞれの情報の特質により、通信網に要求される伝送能力が異なる。
【０００４】
また、高速に、音声、画像、データ等をやり取りしようとする場合には、通信網の伝送速度を非常に高いものにする必要がある。このような要求のもと、音声、画像、データ等の各種メディア情報を統合的に収容する通信システムとして、広帯域ＩＳＤＮ（Ｂ−ＩＳＤＮ：Ｂｒｏａｄｂａｎｄ  ＩＳＤＮ  ）が有望視されている。
【０００５】
特に、その中でも、広帯域ＩＳＤＮの中核となる伝送技術としてＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）があり通信機器メーカ各社においては、この技術を実装するＡＴＭ交換機等のＡＴＭ通信機器の研究開発が盛んになされている。
【０００６】
現在、ＩＴＵ−Ｔ、ＡＴＭ−Ｆｏｒｕｍなどにおいて、バースト性の高い通信を効率よくＡＴＭ網に収容する新しいサービスクラスとしてＧＦＲ（ＧｕａｒａｎｔｅｅｄＦｒａｍｅ  Ｒａｔｅ  ）の標準化が進められている。
【０００７】
ＧＦＲは、どんなに通信網が輻輳していても、ユーザに対し、ユーザが申告した最低帯域のスループットを保証するというものである。この最低帯域を保証するための手段として、従来では、帯域制御装置が用いられている。
【０００８】
図２５は、従来の帯域制御装置が適用された伝送装置１０の構成を示すブロック図である。伝送装置１０は、ルータ等であり、通信網８０と通信網７０との間でパケットデータを伝送交換する。
【０００９】
伝送装置１０は、スイッチ２０、帯域制御装置３０、帯域制御装置４０、帯域制御装置５０および帯域制御装置６０から構成されている。スイッチ２０は、帯域制御装置３０や帯域制御装置５０より入力されるパケットデータを宛先に応じて帯域制御装置４０や帯域制御装置６０へ送出するというスイッチ動作を行う。
【００１０】
帯域制御装置３０、４０、５０および６０は、ユーザ毎に設けられたバッファにパケットデータをキューとして格納し、所定のアルゴリズムに従って、キューを読み出し、送出することにより、予め設定されたコネクション（送出回線）の使用率を１００％にするという制御を行う装置である。
【００１１】
図２６は、図２５に示した帯域制御装置６０の構成を示すブロック図である。帯域制御装置６０において、ユーザ／フロー識別部６１は、スイッチ２０（図２５参照）でスイッチングされ、複数のフレームから構成されたパケットデータ９０について、各フレームに含まれるユーザ識別情報（ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス等）を参照して、各フレームに対応するユーザ（ユーザ＃１〜＃Ｎのうちいずれかのユーザ）を識別する機能を備えている。
【００１２】
また、ユーザ／フロー識別部６１は、ユーザ識別結果に基づいて、当該フレームをユーザ＃１、ユーザ＃２、・・・、ユーザ＃Ｎに対応するユーザ＃１用バッファ６２１、ユーザ＃２用バッファ６２２、・・・、ユーザ＃Ｎ用バッファ６２Ｎのうちいずれかのバッファにキューとして格納する。
【００１３】
ユーザ＃１用バッファ６２１には、キュー９１１が格納される。ユーザ＃２用バッファ６２２には、キュー９１２が格納される。同様にして、ユーザ＃Ｎ用バッファ６２Ｎには、キュー９１Ｎが格納される。
【００１４】
送出部６３は、スケジューラ６４の制御により、ユーザ＃１用バッファ６２１、ユーザ＃２用バッファ６２２、・・・、ユーザ＃Ｎ用バッファ６２Ｎから、所定のアルゴリズムに従って、各キューからフレームを読み出し、コネクション６０ａを介して通信網７０へ送出する機能を備えている。
【００１５】
ここで、アルゴリズムとしては、コネクション６０ａ（送出回線）の帯域が最低帯域以上となるようにフレームを読み出すためのラウンドロビンや重み付きラウンドロビンが挙げられる。
【００１６】
ラウンドロビンは、ユーザ＃１用バッファ６２１、ユーザ＃２用バッファ６２２、・・・、ユーザ＃Ｎ用バッファ６２Ｎの各キュー（キュー９１１、９１２、・・・、９１Ｎ）から順番に所定データ量のフレームを所定タイミングで読み出し、送出するという動作を繰り返すアルゴリズムである。
【００１７】
ここで、帯域制御装置６０においては、コネクション６０ａにおける使用率を１００％にするために、送出に空きを生じさせることなく、所定タイミング毎に連続的にフレームを読み出し、送出し続ける必要がある。
【００１８】
従って、ラウンドロビンにおいては、ユーザ＃１用バッファ６２１〜ユーザ＃Ｎ用バッファ６２Ｎにおける各キューの有無を常時検索し、キューが無いバッファが存在している場合、当該バッファをスキップし、つぎのバッファのキューからフレームを読み出し、送出することにより、上記最低帯域が保証される。
【００１９】
また、重み付きラウンドロビンは、ユーザ＃１用バッファ６２１〜ユーザ＃Ｎ用バッファ６２Ｎの各キューに重み付けを行い、各キューから順番に重み付けに応じた量のフレームを読み出すというアルゴリズムである。
【００２０】
【特許文献１】
特開平９−８３５４７号公報
【特許文献２】
特開２０００−３１９９７号公報
【特許文献３】
特開２００２−３４４５００号公報
【００２１】
【発明が解決しようとする課題】
ところで、前述したように、従来の帯域制御装置においては、パケットデータのトラヒック量の変動が激しいというバースト性が強い通信網に適用された場合、入力されるパケットデータの変動を吸収するために、ユーザ＃１用バッファ６２１〜ユーザ＃Ｎ用バッファ６２Ｎとして、大きいバッファサイズのものを用意する必要がある。
【００２２】
しかしながら、パケットデータのトラヒック量が極端に少ない時間帯では、大きいバッファサイズが不要であるため、バッファの使用効率が非常に悪くなるという問題が生じる。
【００２３】
また、従来の帯域制御装置においては、ユーザ＃１用バッファ６２１〜ユーザ＃Ｎ用バッファ６２Ｎにおける各キューの有無を常時検索しているが、検索により制御が複雑となるとともに、検索速度の限界により制御の高速化を図ることが難しいという問題もあった。
【００２４】
本発明は、上記に鑑みてなされたもので、蓄積手段（バッファ等）の利用効率を高めることができ、制御の単純化、高速化を図ることができる帯域制御装置を提供することを目的とする。
【００２５】
【課題を解決するための手段】
上記目的を達成するために、本発明は、複数のユーザに対応するデータをファストインファストアウト方式により蓄積するとともに送出する蓄積手段と、前記蓄積手段から所定期間に送出されたデータの送出量をユーザ毎に計測する送出量計測手段と、前記蓄積手段に蓄積されているデータの蓄積量を計測する蓄積量計測手段と、前記蓄積量に基づいて、最低帯域を保証するデータの送出許容量をユーザ毎に計算する送出許容量計算手段と、前記送出量および前記送出許容量に基づいて、つぎの所定期間に前記蓄積手段にデータを書き込むことができる書込許容量を計算する書込許容量計算手段と、前記書込許容量に基づいて、前記蓄積手段へのデータの書き込み、データの読み出しを制御する制御手段と、を備えたことを特徴とする。
【００２６】
この発明によれば、複数のユーザに共通の蓄積手段にデータを蓄積し、データの送出量、蓄積量、最低帯域を保証するデータの送出許容量をユーザ毎に計算した後、書込許容量に基づいて、蓄積手段へのデータの書き込み、データの読み出しを制御することとしたので、高速動作が要求される読み出し時の検索処理が不要とされ、蓄積手段の利用効率を高めることができ、制御の単純化、高速化を図ることができる。
【００２７】
【発明の実施の形態】
以下、図面を参照して本発明にかかる帯域制御装置の実施の形態１〜７について詳細に説明する。
【００２８】
（実施の形態１）
図１は、本発明にかかる実施の形態１の構成を示すブロック図である。同図において、図２５の各部に対応する部分には同一の符号を付け、その説明を省略する。図１においては、図２５に示した帯域制御装置６０に代えて、帯域制御装置１００が設けられている。
【００２９】
帯域制御装置１００は、後述するアルゴリズムに従って、スイッチ２０より入力されるパケットデータ２００をキュー３００としてＦＩＦＯ（Ｆａｓｔ  Ｉｎ  Ｆａｓｔ  Ｏｕｔ）バッファ１０１に格納した後、キュー３００を読み出し、パケットデータ４００としてコネクション１００ａ（送出回線）へ送出することにより、予め設定されたコネクション１００ａ（送出回線）の最低帯域をユーザ毎に保証するという制御を行う装置である。
【００３０】
帯域制御装置１００において、ＦＩＦＯバッファ１０１は、各ユーザに対応する複数のフレームから構成されたパケットデータ２００のうち、書込／読出制御部１０２により書き込みが許可されたフレームをキュー３００として蓄積する機能を備えている。
【００３１】
また、ＦＩＦＯバッファ１０１は、書込／読出制御部１０２の制御により、キュー３００から順次読み出されたフレームを、パケットデータ４００として、コネクション１００ａへ送出する機能を備えている。
【００３２】
ここで、帯域制御装置１００においては、例えば、ユーザ＃１〜ユーザ＃４という４ユーザのそれぞれにコネクション１００ａの最低帯域を保証するものとする。
【００３３】
図２は、ユーザ毎に設定された上記最低帯域の一覧を表す最低帯域テーブル１０６を示す図である。この最低帯域テーブル１０６において、ユーザ＃１には、コネクション１００ａの最低帯域として１０Ｍｂｐｓが設定されている。ユーザ＃２には、最低帯域として５Ｍｂｐｓが設定されている。ユーザ＃３には、最低帯域として２０Ｍｂｐｓが設定されている。ユーザ＃４には、最低帯域として４Ｍｂｐｓが設定されている。
【００３４】
図１に戻り、パケットデータ２００には、上記ユーザ＃１〜ユーザ＃４にそれぞれ対応するフレームが含まれている。また、各フレームには、ユーザ＃１〜ユーザ＃４をそれぞれ識別するためのユーザ識別情報が含まれている。
【００３５】
ここで、ユーザ識別情報としては、ＶＬＡＮ−ＩＤ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ−ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）、送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、送信元ＩＰアドレス、宛先ＩＰアドレス、ＶＰＩ（Ｖｉｒｔｕａｌ  Ｐａｔｈ  Ｉｄｅｎｔｉｆｉｅｒ）、ＶＣＩ（Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ  Ｉｄｅｎｔｉｆｉｅｒ）等が挙げられる。
【００３６】
ここで、図３を参照して実施の形態１の動作原理について説明する。以下に説明する処理は、図４に示したユーザ＃１〜＃４のそれぞれについて、計算タイミングで実行される。
【００３７】
ユーザ＃１の場合、計算タイミングは、時刻ｔ１、時刻ｔ５、時刻ｔ９、時刻ｔ１３、・・・である。ユーザ＃２の場合、計算タイミングは、時刻ｔ２、時刻ｔ６、時刻ｔ１０、時刻ｔ１４、・・・である。ユーザ＃３の場合、計算タイミングは、時刻ｔ３、時刻ｔ７、時刻ｔ１１、・・・である。ユーザ＃４の場合、計算タイミングは、時刻ｔ４、時刻ｔ８、時刻ｔ１２、・・・である。
【００３８】
上記のように、計算タイミングは、パイプライン方式により、ユーザ＃１〜＃４でＴ（計測周期）／４ずづずらされて発生する。また、計測周期Ｔは、計算対象ユーザについて、ＦＩＦＯバッファ１０１からのパケットデータの送出量を計測する期間に対応している。また、ユーザ＃１〜＃４のそれぞれについて、計測周期毎に後述する書込許可量が計算される。
【００３９】
例えば、時刻ｔ５でユーザ＃１の計算タイミングになると、図３に示したステップＳＡ１では、ＦＩＦＯバッファ１０１から読み出され、コネクション１００ａ（図１参照）に送出されたパケットデータ４００のうち、計算対象ユーザ（この場合、ユーザ＃１）のパケットデータの送出量（この場合、４フレーム）が計測される。
【００４０】
ステップＳＡ２では、ＦＩＦＯバッファ１０１に蓄積されているキュー３００の長さを表す、キュー長が計測される。ステップＳＡ３では、送出許容量が計算される。送出許容量は、計測周期Ｔに、ユーザ＃１に対応するパケットデータを送出可能な送出量を表す。
【００４１】
具体的には、ステップＳＡ２で計測されたキュー長が図５に示した最低帯域比関数Ｆに適用され、最低帯域比が導出される。この最低帯域比関数Ｆは、キュー長（横軸）と最低帯域比（縦軸）との対応関係を表す関数である。ＴＨは、キュー長のしきい値を表す。ＢＳは、ＦＩＦＯバッファ１０１のバッファサイズ（最大値）を表す。最低帯域比Ｚは、最低帯域（図２参照）に対する倍数を表す。Ｚｍａｘは、最低帯域比の最大値を表す。
【００４２】
同図に示したように、キュー長が増大するに従って最低帯域比Ｚ（送出許容量）を小さくすることで、急激なレート制限を行うことなく、漸増、漸減させながら入力レートに制限を加えることが可能となる。また、最低帯域比Ｚの最低値を１とすることにより、最低帯域が保証される。
【００４３】
例えば、時刻ｔ５（図４参照）でのキュー長がＱである場合、最低帯域比は、Ｚ（ｑ）として導出される。つぎに、ユーザ＃１に対応する最低帯域ＭＦＲ１（＝１０Ｍｂｐｓ：図２参照）、最低帯域比Ｚ（ｑ）および計測周期Ｔ（図４参照）が乗算され、ユーザ＃１に対応する送出許容量（例えば、３フレーム）が計算される。この送出許容量は、計測周期Ｔ（時刻ｔ５〜時刻ｔ９）にユーザ＃１に対応するパケットデータを送出する際の送出量の許容値である。
【００４４】
ステップＳＡ４では、ユーザ＃１に対応する書込量差分が計算される。具体的には、前回の計測周期Ｔ（図４に示した時刻ｔ１〜時刻ｔ５）における書込許容量から、同計測周期Ｔで実際にＦＩＦＯバッファ１０１に書き込まれたパケットデータ（ユーザ＃１に対応）の実書込量が減算され、書込量差分（例えば、０フレーム）が計算される。
【００４５】
ステップＳＡ５では、送出量差分が計算される。具体的には、前回の計測周期Ｔ（図４に示した時刻ｔ１〜時刻ｔ５）における送出許容量（ユーザ＃１に対応）から、同計測周期ＴにＦＩＦＯバッファ１０１から送出されたパケットデータ（ユーザ＃１に対応）の送出量を減算し、送出量差分（例えば、−１フレーム）を計算する。
【００４６】
ステップＳＡ６では、ステップＳＡ３で計算された送出許容量（３フレーム）と、ステップＳＡ４で計算された書込量差分（０フレーム）と、ステップＳＡ５で計算された送出量差分（−１フレーム）とが加算され、書込許容量（２フレーム）が計算される。
【００４７】
これにより、ステップＳＡ７では、計測周期Ｔ（図４に示した時刻ｔ５〜時刻ｔ９）に、ユーザ＃１のパケットデータについて書込許容量の範囲内で、ＦＩＦＯバッファ１０１への書き込み制御が行われる。
【００４８】
図１に戻り、書込／読出制御部１０２は、上述したユーザ毎に設定される書込許容量に従って、ＦＩＦＯバッファ１０１への書込制御を行うとともに、ユーザ毎に設定される送出許容量に従って、ＦＩＦＯバッファ１０１への読出制御を行う。
【００４９】
計算タイミング発生部１０３は、図４に示したユーザ＃１〜＃４のそれぞれの計算タイミング（時刻ｔ１、時刻ｔ２、・・・）をタイマにより発生させ、書込／読出制御部１０２、送出許容量計算部１０５および送出量計測部１０７へ通知する。
【００５０】
キュー長計測部１０４は、ＦＩＦＯバッファ１０１に蓄積されているキューの長さを時々刻々計測する。送出許容量計算部１０５は、ユーザ毎に上述した送出許容量を計算する。最低帯域テーブル１０６は、図２に示したようにユーザ毎に予め設定された最低帯域を表すテーブルである。送出量計測部１０７は、ＦＩＦＯバッファ１０１から送出されるパケットデータをユーザ毎に計測する。書込許容量計算部１０８は、上述した書込許容量をユーザ毎に計算する。
【００５１】
つぎに、実施の形態１の動作について、図６および図７を参照しつつ説明する。図６は、実施の形態１における書込処理を説明するフローチャートである。この書込処理は、ＦＩＦＯバッファ１０１にパケットデータ２００の各フレームを書き込むための処理である。
【００５２】
また、図７は、実施の形態１における計算処理を説明するフローチャートである。計算処理は、ＦＩＦＯバッファ１０１へのフレームの書込許容量を計算するための処理である。以下では、図４に示したユーザ＃１に関する処理を中心として説明する。
【００５３】
図６に示したステップＳＢ１では、書込／読出制御部１０２は、ＦＩＦＯバッファ１０１にパケットデータが入力されたか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【００５４】
また、図７に示したステップＳＣ１では、送出許容量計算部１０５は、ユーザ＃ｉ（この場合、ｉ＝１とする）の計算タイミングであるか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【００５５】
そして、図４に示した時刻ｔ１（ユーザ＃１の計算タイミング）になると、後述する計算処理によりユーザ＃１に対応する書込許容量ＷＡｉ（この場合、ユーザ＃１に対応するＷＡ１）が計算され、書込／読出制御部１０２に設定される。
【００５６】
ここで、パケットデータ（フレーム）がＦＩＦＯバッファ１０１に入力されると、書込／読出制御部１０２は、ステップＳＢ１の判断結果を「Ｙｅｓ」とする。ステップＳＢ２では、書込／読出制御部１０２は、パケットデータのフレームに含まれるユーザ識別情報によりユーザ（この場合、ユーザ＃１とする）を識別する。
【００５７】
ステップＳＢ３では、書込／読出制御部１０２は、キュー長計測部１０４で計測されたキュー長がバッファサイズ未満であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ４では、書込／読出制御部１０２は、ユーザ＃１に対応する当該パケットデータのパケットデータ量が、時刻ｔ１で計算された書込許容量ＷＡ１以下であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【００５８】
ステップＳＢ５では、書込／読出制御部１０２は、ユーザ＃１に対応するパケットデータをＦＩＦＯバッファ１０１に書き込む。ステップＳＢ６では、書込／読出制御部１０２は、書込許容量ＷＡ１から、ステップＳＢ５で書き込まれたパケットデータ（ユーザ＃１に対応）の実書込量を減算し、書込許容量ＷＡ１を更新する。
【００５９】
また、パケットデータ（ユーザ＃１に対応）がＦＩＦＯバッファ１０１に書き込まれると、キューが増え、ステップＳＢ７では、キュー長計測部１０４は、キュー長にパケットデータのキュー長を加え、キュー長を更新する。以後、ステップＳＢ１の判断が行われる。
【００６０】
一方、ステップＳＢ３の判断結果が「Ｎｏ」である場合、ステップＳＢ８では、書込／読出制御部１０２は、ＦＩＦＯバッファ１０１のオーバフローを防止すべく、ユーザ＃１に対応するパケットデータを破棄する。
【００６１】
一方、ステップＳＢ４の判断結果が「Ｎｏ」である場合にも、ステップＳＢ９では、書込／読出制御部１０２は、ユーザ＃１に対応するパケットを破棄し、最低帯域比（図５参照）を調整する。
【００６２】
また、時刻ｔ１以降では、書込／読出制御部１０２は、ＦＩＦＯバッファ１０１に蓄積された順に各ユーザのフレームを読み出し、パケットデータ４００として、コネクション１００ａに送出する。
【００６３】
ここで、送出する際には、最低帯域テーブル１０６（図２参照）が参照され、当該ユーザの最低帯域以上のレートとなるように、フレームが送出される。パケットデータが送出された場合、キュー長計測部１０４は、キュー長から当該パケットデータのキュー長を減算し、キュー長を更新する。
【００６４】
また、時刻ｔ１以降では、送出量計測部１０７は、ユーザ＃１に対応するフレームの送出量（実際の帯域×送出時間）を計測する。
【００６５】
そして、図４に示した時刻ｔ５で、ユーザ＃１の計算タイミングになると、送出許容量計算部１０５は、図７に示したステップＳＣ１の判断結果を「Ｙｅｓ」とする。ステップＳＣ２では、送出許容量計算部１０５は、キュー長計測部１０４より、ＦＩＦＯバッファ１０１のキュー長Ｑを取得する。
【００６６】
ステップＳＣ３では、送出許容量計算部１０５は、図５に示した最低帯域比関数Ｆより、キュー長Ｑをキーとして、最低帯域比Ｚ（ｑ）を導出する。ステップＳＣ４では、送出許容量計算部１０５は、最低帯域テーブル１０６（図２参照）から、ユーザ＃ｉ（この場合、ユーザ＃１）の最低帯域ＭＦＲｉ（この場合、ユーザ＃１に対応する最低帯域ＭＦＲ１＝１０Ｍｂｐｓ）を取得する。
【００６７】
ステップＳＣ５では、送出許容量計算部１０５は、ステップＳＣ４で取得した最低帯域ＭＦＲ１（＝１０Ｍｂｐｓ）、ステップＳＣ３で導出した最低帯域比Ｚ（ｑ）および計測周期Ｔ（図４参照）を乗算し、送出許容量ＴＸＡｉ（この場合、ユーザ＃１に対応する送出許容量ＴＸＡ１）を計算し、これを書込許容量計算部１０８へ通知する。
【００６８】
ステップＳＣ６では、書込許容量計算部１０８は、書込量差分ＷＳｉ（この場合、ユーザ＃１に対応する書込量差分ＷＳ１）を計算する。具体的には、書込許容量計算部１０８は、書込／読出制御部１０２から前回の計測周期Ｔ（図４に示した時刻ｔ１〜時刻ｔ５）に、実際にＦＩＦＯバッファ１０１に書き込まれたパケットデータ（ユーザ＃１に対応）の実書込量を書込／読出制御部１０２から取得する。
【００６９】
つぎに、書込許容量計算部１０８は、前回の計測周期Ｔ（図４に示した時刻ｔ１〜時刻ｔ５）における書込許容量ＷＡ１から実書込量を減算し、書込量差分ＷＳ１を計算する。
【００７０】
ステップＳＣ７では、書込許容量計算部１０８は、送出量差分ＴＳｉ（この場合、ユーザ＃１に対応）を計算する。具体的には、書込許容量計算部１０８は、前回の計測周期Ｔ（図４に示した時刻ｔ１〜時刻ｔ５）でＦＩＦＯバッファ１０１から送出されたパケットデータ（ユーザ＃１に対応）の送出量を送出量計測部１０７から取得する。
【００７１】
つぎに、書込許容量計算部１０８は、ステップＳＣ５で計算された送出許容量ＴＸＡ１から、前回の計測周期Ｔにおける送出量（ユーザ＃１に対応）を減算し、送出量差分ＴＳｉ（この場合、送出量差分ＴＳ１）を計算する。
【００７２】
ステップＳＣ８では、書込許容量計算部１０８は、送出許容量ＴＸＡ１（ステップＳＣ５参照）と、書込量差分ＷＳ１（ステップＳＣ６参照）と、送出量差分ＴＳ１（ステップＳＣ７）とを加算し、書込許容量ＷＡｉ（この場合、ユーザ＃１に対応する書込許容量ＷＡ１）を計算する。
【００７３】
この書込許容量ＷＡ１は、書込／読出制御部１０２の制御により、図４に示した計測周期Ｔ（時刻ｔ５〜時刻ｔ９）でＦＩＦＯバッファ１０１に書き込まれるパケットデータ（ユーザ＃１に対応）の許容量である。
【００７４】
ステップＳＣ９では、書込許容量計算部１０８は、書込許容量ＷＡ１が、予め設定された最大値を超えているか否かを判断し、この場合、判断結果を「Ｎｏ」とする。なお、ステップＳＣ９の判断結果が「Ｙｅｓ」である場合、ステップＳＣ１０では、書込許容量計算部１０８は、書込許容量ＷＡ１を最大値に設定する。
【００７５】
ステップＳＣ１１では、書込許容量計算部１０８は、書込許容量ＷＡ１を書込／読出制御部１０２に設定する。以後、ステップＳＣ１の判断が行われる。
【００７６】
そして、図４に示した計測周期Ｔ（時刻ｔ５〜時刻ｔ９）でユーザ＃１に対応するパケットデータ（フレーム）がＦＩＦＯバッファ１０１に入力されると、書込／読出制御部１０２は、図６に示したステップＳＢ１の判断結果を「Ｙｅｓ」とする。ステップＳＢ２では、書込／読出制御部１０２は、パケットデータのフレームに含まれるユーザ識別情報によりユーザ（この場合、ユーザ＃１とする）を識別する。
【００７７】
ステップＳＢ３では、書込／読出制御部１０２は、キュー長計測部１０４で計測されたキュー長がバッファサイズ未満であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ４では、ユーザ＃１に対応する当該パケットデータのパケットデータ量が、時刻ｔ５で計算された書込許容量ＷＡ１（図７に示したステップＳＣ１１で設定）以下であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【００７８】
ステップＳＢ５では、書込／読出制御部１０２は、ユーザ＃１に対応するパケットデータをＦＩＦＯバッファ１０１に書き込む。ステップＳＢ６では、書込／読出制御部１０２は、書込許容量ＷＡ１から、ステップＳＢ５で書き込まれたパケットデータ（ユーザ＃１に対応）の実書込量を減算し、書込許容量ＷＡ１を更新する。
【００７９】
これにより、ＦＩＦＯバッファ１０１のキューが増え、ステップＳＢ７では、キュー長計測部１０４は、キュー長にパケットデータのキュー長を加え、キュー長を更新する。以後、ステップＳＢ１の判断が行われる。
【００８０】
また、他のユーザ＃２〜＃４に関しても、図４に示した計算タイミングでパイプライン方式による書込許容量ＷＡｉ（ユーザ＃２〜＃４に対応）の計算、書き込みが実行される。
【００８１】
なお、実施の形態１においては、図５に示した一つの最低帯域比関数Ｆを複数のユーザで共用する例について説明したが、ユーザ毎またはグループ（特定の複数のユーザから構成）毎に、最大値Ｚｍａｘが異なる最低帯域比関数を個別的に適用してもよい。この場合、ユーザに対応させてきめ細かな制御を行うことができる。
【００８２】
例えば、ユーザ＃１には、最大値Ｚｍａｘが１０００に設定された最低帯域比関数Ａが設定されているものとする。また、ユーザ＃２には、最大値Ｚｍａｘが１００の最低帯域比関数Ｂが設定されているものとする。また、ユーザ＃１およびユーザ＃２には、最低帯域として１００ｋｂｐｓが共に設定されているものとする。
【００８３】
この場合、ユーザ＃１については、パケットデータの送出に際して、帯域の最大値（ピーク送出速度）が１００Ｍｂｐｓ（１００ｋｂｐｓ×１０００）とされる。これに対して、ユーザ＃２については、パケットデータの送出に際して、帯域の最大値（ピーク送出速度）が１０Ｍｂｐｓとなる。
【００８４】
以上説明したように、実施の形態１によれば、複数のユーザに共通のＦＩＦＯバッファ１０１にパケットデータを蓄積し、パケットデータの送出量、キュー長（蓄積量）、最低帯域を保証するパケットデータの送出許容量をユーザ毎に計算した後、書込許容量に基づいて、ＦＩＦＯバッファ１０１へのパケットデータの書き込み、パケットデータの読み出しを制御することとしたので、高速動作が要求される読み出し時の検索処理が不要とされ、ＦＩＦＯバッファ１０１の利用効率を高めることができ、制御の単純化、高速化を図ることができる。
【００８５】
また、実施の形態１によれば、キュー長（蓄積量）に反比例する最低帯域比関数Ｆ（図２参照）に基づいて、送出許容量を計算することとしたので、送出側の帯域の急激な変化を防止することができる。
【００８６】
また、実施の形態１によれば、ユーザ毎に書込許容量を計算することとしたので、ユーザ毎にきめ細かい制御を行うことができる。
【００８７】
（実施の形態２）
さて、前述した実施の形態１においては、図６に示したステップＳＢ３でキュー長がバッファサイズ以上である場合にステップＳＢ８で、あるユーザのパケットデータを破棄する構成例について説明したが、ユーザ毎にキュー長を計測し、このキュー長がユーザ毎に設定されたバッファサイズ以上である場合にも、当該ユーザのパケットデータを破棄する構成例としてもよい。以下では、この構成例を実施の形態２として説明する。
【００８８】
図８は、本発明にかかる実施の形態２の構成を示すブロック図である。この図において、図１の各部に対応する部分には同一の符号を付ける。図８においては、図１に示した帯域制御装置１００に代えて、帯域制御装置５００が設けられている。
【００８９】
帯域制御装置５００においては、ユーザ毎キュー長計測部５０１が新たに設けられているとともに、図１に示した書込／読出制御部１０２に代えて、書込／読出制御部５０２が設けられている。
【００９０】
ユーザ毎キュー長計測部５０１は、ＦＩＦＯバッファ１０１に蓄積されている全キューのうち、ユーザ毎のキューの長さ（ユーザ毎キュー長）を時々刻々計測する。書込／読出制御部５０２は、書込／読出制御部１０２と同様の機能に加えて、上記ユーザ毎キュー長に基づいて、パケットデータの書き込み制御も行う。
【００９１】
つぎに、実施の形態２における書込処理について、図９に示したフローチャートを参照しつつ説明する。図９においては、ステップＳＤ１〜ステップＳＤ３、ステップＳＤ５〜ステップＳＤ９およびステップＳＤ１１が、図６に示したステップＳＢ１〜ステップＳＢ９に対応している。ステップＳＤ４およびステップＳＤ１０が新たな処理である。
【００９２】
図９に示したステップＳＤ１では、書込／読出制御部５０２は、ＦＩＦＯバッファ１０１にパケットデータが入力されたか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【００９３】
ここで、パケットデータ（フレーム）がＦＩＦＯバッファ１０１に入力されると、書込／読出制御部５０２は、ステップＳＤ１の判断結果を「Ｙｅｓ」とする。ステップＳＤ２では、書込／読出制御部５０２は、パケットデータのフレームに含まれるユーザ識別情報によりユーザ（この場合、ユーザ＃１とする）を識別する。
【００９４】
ステップＳＤ３では、書込／読出制御部５０２は、キュー長計測部１０４で計測されたキュー長がバッファサイズ未満であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【００９５】
ステップＳＤ４では、書込／読出制御部５０２は、ユーザ毎キュー長計測部５０１で計測されたユーザ＃１に対応するユーザ毎キュー長が、予め設定されたユーザ毎バッファサイズ（ユーザ＃１に対応）未満であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【００９６】
なお、ステップＳＤ４の判断結果が「Ｎｏ」である場合、書込／読出制御部５０２は、ユーザ＃１に対応するパケットデータを破棄し、ユーザ毎オーバフローとする。以後、ステップＳＤ５以降では、図６に示したステップＳＢ４以降と同様の処理が実行される。また、実施の形態２における計算処理は、実施の形態１における計算処理（図７参照）と同様である。
【００９７】
以上説明したように、実施の形態２によれば、ＦＩＦＯバッファ１０１に蓄積されているパケットデータのキュー長（蓄積量）をユーザ毎に計測することとしたので、ユーザに対応させてきめ細かな制御を行うことができる。
【００９８】
（実施の形態３）
さて、前述した実施の形態１においては、図５に示した最低帯域比関数Ｆを一律に用いて、最低帯域比を導出した後、送出許容量を計算する構成例について説明したが、ＦＩＦＯバッファ１０１に実際に蓄積されているキューに対応するユーザの数を実効ユーザ数とし、複数のパターンの最低帯域比関数から、実効ユーザ数に応じた最低帯域比関数を用いて、最低帯域比を導出する構成例としてもよい。以下では、この構成例を実施の形態３として説明する。
【００９９】
図１０は、本発明にかかる実施の形態３の構成を示すブロック図である。この図において、図１の各部に対応する部分には同一の符号を付ける。図１０においては、図１に示した帯域制御装置１００に代えて、帯域制御装置６００が設けられている。
【０１００】
帯域制御装置６００においては、実効ユーザ数計測部６０１および関数選択テーブル６０３が新たに設けられているとともに、図１に示した送出許容量計算部１０５に代えて、送出許容量計算部６０２が設けられている。
【０１０１】
実効ユーザ数計測部６０１は、ＦＩＦＯバッファ１０１に実際に蓄積されているキュー（フレーム）に対応するユーザの数を実効ユーザ数として計測する。
【０１０２】
送出許容量計算部６０２は、図１１に示した最低帯域比関数Ｆ１〜Ｆｍという複数の最低帯域比関数から、上記実効ユーザ数に対応する最低帯域比関数を用いて、送出許容量計算部１０５（図１参照）と同様にして、キュー長に対応する最低帯域比を導出する機能を備えている。
【０１０３】
最低帯域比関数Ｆ１〜Ｆｍは、傾きが異なる。すなわち、最低帯域比関数Ｆ１〜Ｆｍにおいては、キュー長さのしきい値がＴＨ１＞ＴＨ２＞・・・＞ＴＨｍとされており、最低帯域比の最大値がＺｍａｘ１＜Ｚｍａｘ２＜・・・＜Ｚｍａｘｍとされている。最低帯域比関数Ｆ１は、実効ユーザ数が多い場合に用いられる。一方、最低帯域比関数Ｆｍは、実効ユーザ数が少ない場合に用いられる。
【０１０４】
図１０に戻り、送出許容量計算部６０２は、実効ユーザ数計測部６０１で計測された実効ユーザ数をキーとして、図１２に示した関数選択テーブル６０３から最低帯域比関数を選択する。例えば、実効ユーザ数が０以上ｎ１以上である場合、送出許容量計算部６０２は、最低帯域比関数Ｆ１〜Ｆｍから最低帯域比関数Ｆ１を選択する。
【０１０５】
つぎに、実施の形態３における計算処理について、図７に示したフローチャートを参照しつつ説明する。
【０１０６】
図４に示した時刻ｔ５で、ユーザ＃１の計算タイミングになると、図７に示したステップＳＣ２では、送出許容量計算部６０２は、キュー長計測部１０４より、ＦＩＦＯバッファ１０１のキュー長Ｑを取得する。
【０１０７】
ステップＳＣ３では、送出許容量計算部６０２は、キュー長Ｑをキーとして、最低帯域比Ｚ（ｑ）を導出する。具体的には、送出許容量計算部６０２は、実効ユーザ数計測部６０１から実効ユーザ数を取得した後、実効ユーザ数をキーとして、関数選択テーブル６０３（図１２参照）から、例えば、最低帯域比関数Ｆ１を選択する。
【０１０８】
つぎに、送出許容量計算部６０２は、キュー長Ｑをキーとして、図１１に示した最低帯域比関数Ｆ１から最低帯域比Ｚ（ｑ）を導出する。以後、実施の形態１と同様にして、ステップＳＣ４以降の処理が実行される。
【０１０９】
以上説明したように、実施の形態３によれば、ＦＩＦＯバッファ１０１に実際に蓄積されているパケットデータに対応するユーザの数を実効ユーザ数として計測し、実効ユーザ数に応じて設定された複数の関数のうち、実効ユーザ数計測部６０１で計測された実効ユーザ数に対応する関数（最低帯域比関数Ｆ１〜Ｆｍのうちいずれかの関数）に基づいて、送出許容量を計算することとしたので、実効ユーザ数に対応させてきめ細かな制御を行うことができる。
【０１１０】
（実施の形態４）
さて、前述した実施の形態３においては、複数のパターンの最低帯域比関数から、実効ユーザ数に応じた最低帯域比関数を用いて、最低帯域比を導出する構成例について説明したが、ＦＩＦＯバッファ１０１に実際に蓄積されているキューに対応するユーザに重み付けを行い、重みの総数を計算し、複数のパターンの最低帯域比関数から、重みの総数に応じた最低帯域比関数を用いて、最低帯域比を導出する構成例としてもよい。以下では、この構成例を実施の形態４として説明する。
【０１１１】
図１３は、本発明にかかる実施の形態４の構成を示すブロック図である。この図において、図１０の各部に対応する部分には同一の符号を付ける。図１３においては、図１０に示した帯域制御装置６００に代えて、帯域制御装置７００が設けられている。
【０１１２】
帯域制御装置７００においては、図１０に示した実効ユーザ数計測部６０１、送出許容量計算部６０２および関数選択テーブル６０３に代えて、実効ユーザチェック部７０１、重み付け部７０２、重みテーブル７０３、送出許容量計算部７０４および関数選択テーブル７０５が設けられている。
【０１１３】
実効ユーザチェック部７０１は、ＦＩＦＯバッファ１０１に実際に蓄積されているキュー（フレーム）に対応する実効ユーザをチェックする。重み付け部７０２は、図１４に示した重みテーブル７０３を参照して、実効ユーザチェック部７０１でチェックされた各実効ユーザに重み付けを行い、重みの総和を計算する。重みテーブル７０３は、重要度に応じて実効ユーザ毎に設定された重みを表すテーブルである。
【０１１４】
送出許容量計算部７０４は、図１１に示した最低帯域比関数Ｆ１〜Ｆｍという複数の最低帯域比関数から、上記重みの総和に対応する最低帯域比関数を用いて、送出許容量計算部１０５（図１参照）と同様にして、キュー長に対応する最低帯域比を導出する機能を備えている。
【０１１５】
実施の形態４において、最低帯域比関数Ｆ１は、実効ユーザに関する重みの総和が多い場合に用いられる。一方、最低帯域比関数Ｆｍは、実効ユーザに関する重みの総和が少ない場合に用いられる。
【０１１６】
送出許容量計算部７０４は、重み付け部７０２で計算された実効ユーザに関する重みの総和をキーとして、図１５に示した関数選択テーブル７０５から最低帯域比関数を選択する。例えば、重みの総和が０以上ｗ１以下である場合、送出許容量計算部７０４は、最低帯域比関数Ｆ１〜Ｆｍから最低帯域比関数Ｆ１を選択する。
【０１１７】
つぎに、実施の形態４における計算処理について、図７に示したフローチャートを参照しつつ説明する。
【０１１８】
図４に示した時刻ｔ５で、ユーザ＃１の計算タイミングになると、図７に示したステップＳＣ２では、送出許容量計算部７０４は、キュー長計測部１０４より、ＦＩＦＯバッファ１０１のキュー長Ｑを取得する。
【０１１９】
ステップＳＣ３では、送出許容量計算部７０４は、キュー長Ｑをキーとして、最低帯域比Ｚ（ｑ）を導出する。具体的には、実効ユーザチェック部７０１で実効ユーザがチェックされると、重み付け部７０２は、重みテーブル７０３（図１４参照）を参照して、各実効ユーザの重みを総和し、送出許容量計算部７０４へ通知する。
【０１２０】
これにより、送出許容量計算部７０４は、実効ユーザに関する重みの総和をキーとして、関数選択テーブル７０５（図１５参照）から、例えば、最低帯域比関数Ｆ１を選択する。
【０１２１】
つぎに、送出許容量計算部７０４は、キュー長Ｑをキーとして、図１１に示した最低帯域比関数Ｆ１から最低帯域比Ｚ（ｑ）を導出する。以後、実施の形態１と同様にして、ステップＳＣ４以降の処理が実行される。
【０１２２】
以上説明したように、実施の形態４によれば、ＦＩＦＯバッファ１０１に実際に蓄積されているパケットデータに対応するユーザに重み付けを行い、ユーザの重みに応じて設定された複数の関数のうち、ユーザの重み付けの総和に対応する関数に基づいて、送出許容量を計算することとしたので、ユーザの重みに対応させてきめ細かな制御を行うことができる。
【０１２３】
（実施の形態５）
さて、前述した実施の形態１においては、図６に示したステップＳＢ３でキュー長がＦＩＦＯバッファ１０１のバッファサイズ（最大値）以上である場合にステップＳＢ８で、あるユーザのパケットデータを破棄する構成例について説明したが、オーバフローを防止すべく、バッファサイズよりも小さい閾値を設定し、キュー長が閾値を超えた場合、ＦＩＦＯバッファ１０１への書込許容量を、最低帯域データ量以下に制限する構成としてもよい。
【０１２４】
ここで、最低帯域データ量は、ユーザ毎に設定された最低帯域（図２参照）に計測周期Ｔ（図４参照）を乗算した値である。以下では、かかる構成例を実施の形態５として説明する。
【０１２５】
図１６は、本発明にかかる実施の形態５の構成を示すブロック図である。この図において、図１の各部に対応する部分には同一の符号を付ける。図１６においては、図１に示した帯域制御装置１００に代えて、帯域制御装置８００が設けられている。
【０１２６】
帯域制御装置８００においては、図１に示した書込／読出制御部１０２に代えて、書込／読出制御部８０１が設けられている。書込／読出制御部８０１は、書込／読出制御部１０２の機能に加えて、ＦＩＦＯバッファ１０１のキュー長が閾値を超えた場合、書込許容量に代えて超過時書込許容量（最低帯域データ量以下）を適用して、パケットデータを書き込む。
【０１２７】
つぎに、実施の形態５の動作について、図１７および図１８を参照しつつ説明する。図１７は、実施の形態５における書込処理を説明するフローチャートである。この書込処理は、書込許容量や超過時書込許容量に従って、ＦＩＦＯバッファ１０１にパケットデータ２００の各フレームを書き込むための処理である。
【０１２８】
図１７においては、ステップＳＥ１〜ステップＳＥ３、ステップＳＥ５〜ステップＳＥ９、ステップＳＥ１３は、図６に示したステップＳＢ１〜ステップＳＢ９に対応している。
【０１２９】
また、図１８は、実施の形態５における計算処理を説明するフローチャートである。計算処理は、ＦＩＦＯバッファ１０１へのフレームの書込許容量を計算するための処理や上述した超過時書込許容量を設定するための処理である。以下では、図４に示したユーザ＃１に関する処理を中心として説明する。
【０１３０】
図１７に示したステップＳＥ１では、書込／読出制御部８０１は、ＦＩＦＯバッファ１０１にパケットデータが入力されたか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【０１３１】
また、図１８に示したステップＳＦ１では、書込／読出制御部８０１および送出許容量計算部１０５は、ユーザ＃ｉ（この場合、ｉ＝１とする）の計算タイミングであるか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【０１３２】
そして、図４に示した時刻ｔ１（ユーザ＃１の計算タイミング）になると、後述する計算処理で、書込／読出制御部８０１は、最低帯域テーブル１０６（図２参照）からユーザ＃１の最低帯域を取得し、この最低帯域に計測周期Ｔ（図４参照）を乗算し、ユーザ＃１に対応する超過時書込許容量を設定する。
【０１３３】
また、時刻ｔ１になると、後述する計算処理により、ユーザ＃１に対応する書込許容量ＷＡｉ（この場合、ユーザ＃１に対応するＷＡ１）が計算され、書込／読出制御部８０１に設定される。
【０１３４】
ここで、パケットデータ（フレーム）がＦＩＦＯバッファ１０１に入力されると、書込／読出制御部８０１は、ステップＳＥ１の判断結果を「Ｙｅｓ」とする。ステップＳＥ２では、書込／読出制御部８０１は、パケットデータのフレームに含まれるユーザ識別情報によりユーザ（この場合、ユーザ＃１とする）を識別する。
【０１３５】
ステップＳＥ３では、書込／読出制御部８０１は、キュー長計測部１０４で計測されたキュー長がバッファサイズ未満であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【０１３６】
ステップＳＥ４では、書込／読出制御部８０１は、キュー長が閾値（＜バッファサイズ）未満であるか否かを判断する。ステップＳＥ４の判断結果が「Ｎｏ」である場合、すなわち、キュー長さが閾値を超過した場合、ステップＳＥ１０では、書込／読出制御部８０１は、上記で設定されたユーザ＃１に対応する超過時書込許容量が０を超えたか否かを判断する。
【０１３７】
ステップＳＥ１０の判断結果が「Ｙｅｓ」である場合、ステップＳＥ１１では、書込／読出制御部８０１は、ユーザ＃１に対応するパケットデータをＦＩＦＯバッファ１０１に書き込む。この場合、パケットデータは、超過時書込許容量以下となるように書き込まれる。なお、ステップＳＥ１０の判断結果が「Ｎｏ」である場合、ステップＳＥ１３では、書込／読出制御部８０１は、パケットデータを破棄する。
【０１３８】
ステップＳＥ１２では、書込／読出制御部８０１は、超過時書込許容量から、ユーザ＃１に対応するパケットデータの実書込量を減算し、超過時書込許容量を更新する。
【０１３９】
ステップＳＥ７では、書込／読出制御部８０１は、書込許容量ＷＡ１から、ステップＳＥ１１で書き込まれたパケットデータ（ユーザ＃１に対応）の実書込量を減算し、書込許容量ＷＡ１を更新する。
【０１４０】
また、パケットデータ（ユーザ＃１に対応）がＦＩＦＯバッファ１０１に書き込まれると、キューが増え、ステップＳＥ８では、キュー長計測部１０４は、キュー長にパケットデータのキュー長を加え、キュー長を更新する。以後、ステップＳＥ１の判断が行われる。
【０１４１】
一方、ステップＳＥ４の判断結果が「Ｙｅｓ」である場合、ステップＳＥ５では、書込／読出制御部８０１は、ユーザ＃１に対応する当該パケットデータのパケットデータ量が、時刻ｔ１で計算された書込許容量ＷＡ１以下であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【０１４２】
ステップＳＥ６では、書込／読出制御部８０１は、ユーザ＃１に対応するパケットデータをＦＩＦＯバッファ１０１に書き込む。
【０１４３】
一方、ステップＳＥ５の判断結果が「Ｎｏ」である場合、ステップＳＥ１３では、書込／読出制御部８０１は、ＦＩＦＯバッファ１０１のオーバフローを防止すべく、ユーザ＃１に対応するパケットデータを破棄する。
【０１４４】
また、時刻ｔ１以降では、書込／読出制御部８０１は、ＦＩＦＯバッファ１０１に蓄積された順に各ユーザのフレームを読み出し、パケットデータ４００として、コネクション１００ａに送出する。
【０１４５】
ここで、送出する際には、最低帯域テーブル１０６（図２参照）が参照され、当該ユーザの最低帯域以上のレートとなるように、フレームが送出される。パケットデータが送出された場合、キュー長計測部１０４は、キュー長から当該パケットデータのキュー長を減算し、キュー長を更新する。
【０１４６】
また、時刻ｔ１以降では、送出量計測部１０７は、ユーザ＃１に対応するフレームの送出量（実際の帯域×送出時間）を計測する。
【０１４７】
そして、図４に示した時刻ｔ５で、ユーザ＃１の計算タイミングになると、書込／読出制御部８０１および送出許容量計算部１０５は、図１８に示したステップＳＦ１の判断結果を「Ｙｅｓ」とする。
【０１４８】
ステップＳＦ２では、書込／読出制御部８０１は、ユーザ＃１に対応する最低帯域を最低帯域テーブル１０６（図２参照）から取得した後、最低帯域に計測周期Ｔ（図４参照）を乗算し、ユーザ＃１に対応する最低帯域データ量を計算する。つぎに、書込／読出制御部８０１は、ユーザ＃１に対応する超過時書込許容量の初期値として、上記最低帯域データ量を設定する。
【０１４９】
ステップＳＦ３では、書込／読出制御部８０１は、超過時書込許容量が最大値以下であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＦ３の判断結果が「Ｎｏ」である場合、ステップＳＦ４では、書込／読出制御部８０１は、超過時書込許容量に最大値を設定する。
【０１５０】
ステップＳＦ５では、送出許容量計算部１０５は、キュー長計測部１０４より、ＦＩＦＯバッファ１０１のキュー長Ｑを取得する。以後、ステップＳＣ３〜ステップＳＣ１１（図７参照）と同様にして、ステップＳＦ６〜ステップＳＦ１４が実行される。
【０１５１】
以上説明したように、実施の形態５によれば、キュー長（蓄積量）が、予め設定された閾値を超えている場合、ＦＩＦＯバッファ１０１へのパケットデータの書込量に制限をかけることとしたので、ＦＩＦＯバッファ１０１におけるオーバフローを防止することができる。
【０１５２】
（実施の形態６）
さて、前述した実施の形態１においては、図６に示したステップＳＢ３でキュー長がＦＩＦＯバッファ１０１のバッファサイズ（最大値）以上である場合にステップＳＢ８で、あるユーザのパケットデータを破棄する構成例について説明したが、ＦＩＦＯバッファ１０１にバッファサイズよりも小さい第１閾値および第２閾値（＜第１閾値）を設定し、キュー長と第１閾値、第２閾値との比較結果に基づいて、ＦＩＦＯバッファ１０１への書込を制御する構成としてもよい。以下では、この構成例を実施の形態６として説明する。
【０１５３】
図１９は、本発明にかかる実施の形態６の構成を示すブロック図である。この図において、図１の各部に対応する部分には同一の符号を付ける。図１９においては、図１に示した帯域制御装置１００に代えて、帯域制御装置９００が設けられている。
【０１５４】
帯域制御装置９００においては、図１に示した書込／読出制御部１０２に代えて、書込／読出制御部９０１が設けられている。また、ＦＩＦＯバッファ１０１には、第１閾値ＢＴ１および第２閾値ＢＴ２が設定される。第１閾値ＢＴ１（＜バッファサイズ）は、破棄の優先度が低く（または高く）設定されたフレーム（パケットデータ）の書込量を制限するための閾値である。また、第２閾値ＢＴ２（＜第１閾値ＢＴ１）は、破棄の優先度が高く設定されたフレーム（パケットデータ）の書込量を制限するための閾値である。
【０１５５】
書込／読出制御部９０１は、ＦＩＦＯバッファ１０１へのパケットデータの書き込み、読み出しを制御する機能を備えている。この書込／読出制御部９０１の動作の詳細については後述する。
【０１５６】
つぎに、実施の形態６の動作について、図２０、図２１および図２２を参照しつつ説明する。図２０および図２１は、実施の形態６における書込処理を説明するフローチャートである。この書込処理は、書込許容量等に従って、ＦＩＦＯバッファ１０１にパケットデータ２００の各フレームを書き込んだり、破棄したりする処理である。
【０１５７】
図２０においては、ステップＳＧ１、ステップＳＧ３、ステップＳＧ６〜ステップＳＧ１１は、図６に示したステップＳＢ１〜ステップＳＢ９に対応している。
【０１５８】
また、図２２は、実施の形態６における計算処理を説明するフローチャートである。計算処理は、ＦＩＦＯバッファ１０１へのフレームの書込許容量を計算するための処理や、後述する高優先度書込許容量や低優先度書込許容量を設定するための処理である。以下では、図４に示したユーザ＃１に関する処理を中心として説明する。
【０１５９】
図２０に示したステップＳＧ１では、書込／読出制御部９０１は、ＦＩＦＯバッファ１０１にパケットデータが入力されたか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【０１６０】
また、図２２に示したステップＳＨ１では、書込／読出制御部９０１および送出許容量計算部１０５は、ユーザ＃ｉ（この場合、ｉ＝１とする）の計算タイミングであるか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【０１６１】
そして、図４に示した時刻ｔ１（ユーザ＃１の計算タイミング）になると、後述する計算処理で、書込／読出制御部９０１は、最低帯域テーブル１０６（図２参照）からユーザ＃１の最低帯域を取得し、この最低帯域に計測周期Ｔ（図４参照）を乗算し、ユーザ＃１に対応する高優先度書込許容量および低優先度書込許容量を設定する。
【０１６２】
また、時刻ｔ１になると、後述する計算処理により、ユーザ＃１に対応する書込許容量ＷＡｉ（この場合、ユーザ＃１に対応するＷＡ１）が計算され、書込／読出制御部９０１に設定される。
【０１６３】
ここで、パケットデータ（フレーム）がＦＩＦＯバッファ１０１に入力されると、書込／読出制御部９０１は、ステップＳＧ１の判断結果を「Ｙｅｓ」とする。ステップＳＧ２では、書込／読出制御部９０１は、パケットデータのフレームに含まれるユーザ識別情報によりユーザ（この場合、ユーザ＃１とする）を識別する。
【０１６４】
ステップＳＧ３では、書込／読出制御部９０１は、キュー長計測部１０４で計測されたキュー長がバッファサイズ未満であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＧ３の判断結果が「Ｎｏ」である場合、ステップＳＧ１０では、書込／読出制御部９０１は、パケットデータを破棄する。
【０１６５】
ステップＳＧ４では、書込／読出制御部９０１は、キュー長が第１閾値ＢＴ１（＞バッファサイズ）以上であるか否かを判断する。ステップＳＧ４の判断結果が「Ｙｅｓ」である場合、すなわち、キュー長さが第１閾値ＢＴ１以上である場合、図２１に示したステップＳＧ１２では、書込／読出制御部９０１は、当該パケットデータのフレームが低優先度フレーム（破棄優先度が低いフレーム）であるか否かを判断する。
【０１６６】
ステップＳＧ１２の判断結果が「Ｙｅｓ」である場合、ステップＳＧ１３では、書込／読出制御部９０１は、上記で設定されたユーザ＃１に対応する低優先度書込許容量が０を超えているか否かを判断する。
【０１６７】
ステップＳＧ１３の判断結果が「Ｙｅｓ」である場合、ステップＳＧ１４では、書込／読出制御部９０１は、ユーザ＃１に対応するパケットデータをＦＩＦＯバッファ１０１に書き込む。この場合、パケットデータは、低優先度書込許容量以下となるように書き込まれる。なお、ステップＳＧ１３の判断結果が「Ｎｏ」である場合、ステップＳＧ１７では、書込／読出制御部９０１は、パケットデータを破棄する。
【０１６８】
ステップＳＧ１５では、書込／読出制御部９０１は、低優先度書込許容量から、ユーザ＃１に対応するパケットデータの実書込量（ステップＳＧ１４）を減算し、低優先度書込許容量を更新する。ステップＳＧ１６では、書込／読出制御部９０１は、高優先度書込許容量から、ユーザ＃１に対応するパケットデータの実書込量（ステップＳＧ１４）を減算し、高優先度書込許容量を更新する。
【０１６９】
図２０に示したステップＳＧ８では、書込／読出制御部９０１は、書込許容量ＷＡ１から、ステップＳＧ１４（図２１参照）で書き込まれたパケットデータ（ユーザ＃１に対応）の実書込量を減算し、書込許容量ＷＡ１を更新する。
【０１７０】
また、パケットデータ（ユーザ＃１に対応）がＦＩＦＯバッファ１０１に書き込まれると、キューが増え、ステップＳＧ９では、キュー長計測部１０４は、キュー長にパケットデータのキュー長を加え、キュー長を更新する。以後、ステップＳＧ１の判断が行われる。
【０１７１】
一方、図２１に示したステップＳＧ１２の判断結果が「Ｎｏ」である場合、ステップＳＧ１８では、書込／読出制御部９０１は、上記で設定されたユーザ＃１に対応する高優先度書込許容量が０を超えているか否かを判断する。
【０１７２】
ステップＳＧ１８の判断結果が「Ｙｅｓ」である場合、ステップＳＧ１９では、書込／読出制御部９０１は、ユーザ＃１に対応するパケットデータをＦＩＦＯバッファ１０１に書き込む。この場合、パケットデータは、高優先度書込許容量以下となるように書き込まれる。なお、ステップＳＧ１８の判断結果が「Ｎｏ」である場合、ステップＳＧ１７では、書込／読出制御部９０１は、パケットデータを破棄する。
【０１７３】
ステップＳＧ２０では、書込／読出制御部９０１は、高優先度書込許容量から、ユーザ＃１に対応するパケットデータの実書込量（ステップＳＧ１９）を減算し、高優先度書込許容量を更新した後、ステップＳＧ８およびステップＳＧ９（図２０参照）の処理を実行する。
【０１７４】
一方、図２０に示したステップＳＧ４の判断結果が「Ｎｏ」である場合、ステップＳＧ５では、書込／読出制御部９０１は、キュー長が第２閾値ＢＴ２（＜第１閾値ＢＴ１）以上であるか否かを判断する。ステップＳＧ４の判断結果が「Ｎｏ」である場合、書込／読出制御部９０１は、前述したステップＳＧ１８（図２１参照）の判断を行う。
【０１７５】
一方、ステップＳＧ５の判断結果が「Ｎｏ」である場合、ステップＳＧ６では、書込／読出制御部９０１は、ユーザ＃１に対応する当該パケットデータのパケットデータ量が、時刻ｔ１で計算された書込許容量ＷＡ１以下であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【０１７６】
ステップＳＧ７では、書込／読出制御部９０１は、ユーザ＃１に対応するパケットデータをＦＩＦＯバッファ１０１に書き込む。
【０１７７】
一方、ステップＳＧ６の判断結果が「Ｎｏ」である場合、ステップＳＧ１１では、書込／読出制御部９０１は、ユーザ＃１に対応するパケットデータを破棄する。
【０１７８】
また、時刻ｔ１以降では、書込／読出制御部９０１は、ＦＩＦＯバッファ１０１に蓄積された順に各ユーザのフレームを読み出し、パケットデータ４００として、コネクション１００ａに送出する。
【０１７９】
ここで、送出する際には、最低帯域テーブル１０６（図２参照）が参照され、当該ユーザの最低帯域以上のレートとなるように、フレームが送出される。パケットデータが送出された場合、キュー長計測部１０４は、キュー長から当該パケットデータのキュー長を減算し、キュー長を更新する。
【０１８０】
また、時刻ｔ１以降では、送出量計測部１０７は、ユーザ＃１に対応するフレームの送出量（実際の帯域×送出時間）を計測する。
【０１８１】
そして、図４に示した時刻ｔ５で、ユーザ＃１の計算タイミングになると、書込／読出制御部９０１および送出許容量計算部１０５は、図２２に示したステップＳＨ１の判断結果を「Ｙｅｓ」とする。
【０１８２】
ステップＳＨ２では、書込／読出制御部９０１は、ユーザ＃１に対応する最低帯域を最低帯域テーブル１０６（図２参照）から取得した後、最低帯域に計測周期Ｔ（図４参照）を乗算し、ユーザ＃１に対応する最低帯域データ量を計算する。つぎに、書込／読出制御部９０１は、ユーザ＃１に対応する高優先度書込許容量および低優先度書込許容量の初期値として、上記最低帯域データ量をそれぞれに設定する。
【０１８３】
ステップＳＨ３では、書込／読出制御部９０１は、高優先度書込許容量（低優先度書込許容量）が最大値以下であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＨ３の判断結果が「Ｎｏ」である場合、ステップＳＨ４では、書込／読出制御部９０１は、高優先度書込許容量（低優先度書込許容量）に最大値を設定する。
【０１８４】
ステップＳＨ５では、送出許容量計算部１０５は、キュー長計測部１０４より、ＦＩＦＯバッファ１０１のキュー長Ｑを取得する。以後、ステップＳＣ３〜ステップＳＣ１１（図７参照）と同様にして、ステップＳＨ６〜ステップＳＨ１４が実行される。
【０１８５】
以上説明したように、実施の形態６によれば、キュー長（蓄積量）が、予め設定された閾値（例えば、第２閾値ＢＴ２）を超えている場合、優先度が高いパケットデータを破棄することとしたので、ＦＩＦＯバッファ１０１におけるオーバフローを防止することができる。
【０１８６】
（実施の形態７）
さて、前述した実施の形態１においては、最低帯域保証というサービスへの適用例について説明したが、その他のサービス（帯域保証・低遅延、ベストエフォート等）も提供する構成例としてもよい。以下では、この構成例を実施の形態７として説明する。
【０１８７】
図２３は、本発明にかかる実施の形態７の構成を示すブロック図である。この図において、図１の各部に対応する部分に同一の符号を付ける。図２３においては、図１に示した帯域制御装置１００に代えて、帯域制御装置１０００が設けられている。
【０１８８】
帯域制御装置１０００においては、ＦＩＦＯバッファ１００１、ＦＩＦＯバッファ１００２、サービス識別部１００３、振分部１００４および送出部１００５が新たに設けられている。
【０１８９】
ＦＩＦＯバッファ１００１は、その他のサービスとしての帯域保証・低遅延に用いられるパケットデータを蓄積するバッファである。ＦＩＦＯバッファ１００２は、その他のサービスとしてのベストエフォートに用いられるパケットデータを蓄積するバッファである。
【０１９０】
すなわち、帯域制御装置１０００においては、ＦＩＦＯバッファ１００１、ＦＩＦＯバッファ１００２およびＦＩＦＯバッファ１０１により、帯域保証・低遅延、ベストエフォート、最低帯域保証という三種類のサービスが提供される。
【０１９１】
サービス識別部１００３は、スイッチ２０からのパケットデータ（フレーム）に含まれるサービス識別子（ＩＥＥＥ８０２．１ｐのプライオリティビット等）によりサービスを識別し、振分部１００４を制御する。振分部１００４は、サービス識別部１００３の制御により、ＦＩＦＯバッファ１００１、ＦＩＦＯバッファ１００２およびＦＩＦＯバッファ１０１のうち、入力されたパケットデータ（フレーム）をサービスに対応するＦＩＦＯバッファに振り分ける。
【０１９２】
送出部１００５は、書込／読出制御部１０２の制御により、ＦＩＦＯバッファ１００１、ＦＩＦＯバッファ１００２およびＦＩＦＯバッファ１０１から読み出されたパケットデータ（フレーム）をコネクション１００ａへ送出する。
【０１９３】
書込／読出制御部１０２は、ＦＩＦＯバッファ１００１、ＦＩＦＯバッファ１００２およびＦＩＦＯバッファ１０１の書き込みや読み出し制御を行う。また、実施の形態７においては、ＦＩＦＯバッファ１００１、ＦＩＦＯバッファ１００２およびＦＩＦＯバッファ１０１を見かけ上１つのＦＩＦＯバッファと見なし、例えば、ＦＩＦＯバッファ１００１で使用されなかった帯域をＦＩＦＯバッファ１０１に割り当てることも可能である。
【０１９４】
以上説明したように、実施の形態７によれば、ＦＩＦＯバッファをサービス毎に複数（ＦＩＦＯバッファ１００１、ＦＩＦＯバッファ１００２、ＦＩＦＯバッファ１０１）設けることとしたので、複数のサービスを提供するシステムでも、制御の単純化、高速化を図ることができる。
【０１９５】
以上本発明にかかる実施の形態１〜７について図面を参照して詳述してきたが、具体的な構成例はこれら実施の形態１〜７に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【０１９６】
例えば、前述した実施の形態１〜７においては、帯域制御の機能を実現するためのプログラムを図２４に示したコンピュータ読み取り可能な記録媒体１２００に記録して、この記録媒体１２００に記録されたプログラムを同図に示したコンピュータ１１００に読み込ませ、実行することにより各機能を実現してもよい。
【０１９７】
同図に示したコンピュータ１１００は、上記プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１１０と、キーボード、マウス等の入力装置１１２０と、各種データを記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１３０と、演算パラメータ等を記憶するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１４０と、記録媒体１２００からプログラムを読み取る読取装置１１５０と、ディスプレイ、プリンタ等の出力装置１１６０とから構成されている。
【０１９８】
ＣＰＵ１１１０は、読取装置１１５０を経由して記録媒体１２００に記録されているプログラムを読み込んだ後、プログラムを実行することにより、前述した機能を実現する。なお、記録媒体１２００としては、光ディスク、フレキシブルディスク、ハードディスク等が挙げられる。なお、実施の形態１〜７の組み合わせについても本発明に含まれる。
【０１９９】
（付記１）複数のユーザに対応するデータをファストインファストアウト方式により蓄積するとともに送出する蓄積手段と、
前記蓄積手段から所定期間に送出されたデータの送出量をユーザ毎に計測する送出量計測手段と、
前記蓄積手段に蓄積されているデータの蓄積量を計測する蓄積量計測手段と、前記蓄積量に基づいて、最低帯域を保証するデータの送出許容量をユーザ毎に計算する送出許容量計算手段と、
前記送出量および前記送出許容量に基づいて、つぎの所定期間に前記蓄積手段にデータを書き込むことができる書込許容量を計算する書込許容量計算手段と、前記書込許容量に基づいて、前記蓄積手段へのデータの書き込み、データの読み出しを制御する制御手段と、
を備えたことを特徴とする帯域制御装置。
【０２００】
（付記２）前記送出許容量計算手段は、前記蓄積量に反比例する関数に基づいて、前記送出許容量を計算することを特徴とする付記１に記載の帯域制御装置。
【０２０１】
（付記３）前記関数は、ユーザ毎に設定されており、前記送出許容量計算手段は、各ユーザに対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記２に記載の帯域制御装置。
【０２０２】
（付記４）前記蓄積量計測手段は、前記蓄積手段に蓄積されているデータの蓄積量をユーザ毎に計測することを特徴とする付記１〜３のいずれか一つに記載の帯域制御装置。
【０２０３】
（付記５）前記蓄積手段に実際に蓄積されているデータに対応するユーザの数を実効ユーザ数として計測する実効ユーザ数計測手段を備え、前記送出許容量計算手段は、実効ユーザ数に応じて設定された複数の関数のうち、前記実効ユーザ数計測手段で計測された実効ユーザ数に対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記２に記載の帯域制御装置。
【０２０４】
（付記６）前記蓄積手段に実際に蓄積されているデータに対応するユーザに重み付けを行う重み付け手段を備え、前記送出許容量計算手段は、ユーザの重みに応じて設定された複数の関数のうち、前記重み付け手段における重み対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記２に記載の帯域制御装置。
【０２０５】
（付記７）前記制御手段は、前記蓄積量が、予め設定された閾値を超えている場合、前記蓄積手段へのデータの書込量に制限をかけることを特徴とする付記１〜６のいずれか一つに記載の帯域制御装置。
【０２０６】
（付記８）前記制御手段は、前記蓄積量が、予め設定された閾値を超えている場合、優先度が高いデータを破棄することを特徴とする付記１〜６のいずれか一つに記載の帯域制御装置。
【０２０７】
（付記９）前記蓄積手段は、サービス毎に複数設けられていることを特徴とする付記１〜８のいずれか一つに記載の帯域制御装置。
【０２０８】
（付記１０）前記書込許容量計算手段は、ユーザ毎に書込許容量を計算することを特徴とする付記１〜９のいずれか一つに記載の帯域制御装置。
【０２０９】
（付記１１）複数のユーザに対応するデータをファストインファストアウト方式により蓄積するとともに送出する蓄積手段から所定期間に送出されたデータの送出量をユーザ毎に計測する送出量計測工程と、
前記蓄積手段に蓄積されているデータの蓄積量を計測する蓄積量計測工程と、前記蓄積量に基づいて、最低帯域を保証するデータの送出許容量をユーザ毎に計算する送出許容量計算工程と、
前記送出量および前記送出許容量に基づいて、つぎの所定期間に前記蓄積手段にデータを書き込むことができる書込許容量を計算する書込許容量計算工程と、前記書込許容量に基づいて、前記蓄積手段へのデータの書き込み、データの読み出しを制御する制御工程と、
を含むことを特徴とする帯域制御方法。
【０２１０】
（付記１２）前記送出許容量計算工程では、前記蓄積量に反比例する関数に基づいて、前記送出許容量を計算することを特徴とする付記１１に記載の帯域制御方法。
【０２１１】
（付記１３）前記関数は、ユーザ毎に設定されており、前記送出許容量計算工程では、各ユーザに対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記１２に記載の帯域制御方法。
【０２１２】
（付記１４）前記蓄積量計測工程では、前記蓄積手段に蓄積されているデータの蓄積量をユーザ毎に計測することを特徴とする付記１１〜１３のいずれか一つに記載の帯域制御方法。
【０２１３】
（付記１５）前記蓄積手段に実際に蓄積されているデータに対応するユーザの数を実効ユーザ数として計測する実効ユーザ数計測工程を含み、前記送出許容量計算工程では、実効ユーザ数に応じて設定された複数の関数のうち、前記実効ユーザ数計測工程で計測された実効ユーザ数に対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記１２に記載の帯域制御方法。
【０２１４】
（付記１６）前記蓄積手段に実際に蓄積されているデータに対応するユーザに重み付けを行う重み付け工程を含み、前記送出許容量計算工程では、ユーザの重みに応じて設定された複数の関数のうち、前記重み付け工程における重み対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記１２に記載の帯域制御方法。
【０２１５】
（付記１７）前記制御工程では、前記蓄積量が、予め設定された閾値を超えている場合、前記蓄積手段へのデータの書込量に制限をかけることを特徴とする付記１１〜１６のいずれか一つに記載の帯域制御方法。
【０２１６】
（付記１８）前記制御工程では、前記蓄積量が、予め設定された閾値を超えている場合、優先度が高いデータを破棄することを特徴とする付記１１〜１６のいずれか一つに記載の帯域制御方法。
【０２１７】
（付記１９）前記蓄積手段は、サービス毎に複数設けられていることを特徴とする付記１１〜１８のいずれか一つに記載の帯域制御方法。
【０２１８】
（付記２０）前記書込許容量計算工程では、ユーザ毎に書込許容量を計算することを特徴とする付記１１〜１９のいずれか一つに記載の帯域制御方法。
【０２１９】
（付記２１）コンピュータを、
複数のユーザに対応するデータをファストインファストアウト方式により蓄積するとともに送出する蓄積手段、
前記蓄積手段から所定期間に送出されたデータの送出量をユーザ毎に計測する送出量計測手段、
前記蓄積手段に蓄積されているデータの蓄積量を計測する蓄積量計測手段、
前記蓄積量に基づいて、最低帯域を保証するデータの送出許容量をユーザ毎に計算する送出許容量計算手段、
前記送出量および前記送出許容量に基づいて、つぎの所定期間に前記蓄積手段にデータを書き込むことができる書込許容量を計算する書込許容量計算手段、
前記書込許容量に基づいて、前記蓄積手段へのデータの書き込み、データの読み出しを制御する制御手段、
として機能させるための帯域制御プログラム。
【０２２０】
（付記２２）前記送出許容量計算手段は、前記蓄積量に反比例する関数に基づいて、前記送出許容量を計算することを特徴とする付記２１に記載の帯域制御プログラム。
【０２２１】
（付記２３）前記関数は、ユーザ毎に設定されており、前記送出許容量計算手段は、各ユーザに対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記２２に記載の帯域制御プログラム。
【０２２２】
（付記２４）前記蓄積量計測手段は、前記蓄積手段に蓄積されているデータの蓄積量をユーザ毎に計測することを特徴とする付記２１〜２３のいずれか一つに記載の帯域制御プログラム。
【０２２３】
（付記２５）前記コンピュータを、前記蓄積手段に実際に蓄積されているデータに対応するユーザの数を実効ユーザ数として計測する実効ユーザ数計測手段として機能させ、前記送出許容量計算手段は、実効ユーザ数に応じて設定された複数の関数のうち、前記実効ユーザ数計測手段で計測された実効ユーザ数に対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記２２に記載の帯域制御プログラム。
【０２２４】
（付記２６）前記コンピュータを、前記蓄積手段に実際に蓄積されているデータに対応するユーザに重み付けを行う重み付け手段として機能させ、前記送出許容量計算手段は、ユーザの重みに応じて設定された複数の関数のうち、前記重み付け手段における重み対応する関数に基づいて、前記送出許容量を計算することを特徴とする付記２２に記載の帯域制御プログラム。
【０２２５】
（付記２７）前記制御手段は、前記蓄積量が、予め設定された閾値を超えている場合、前記蓄積手段へのデータの書込量に制限をかけることを特徴とする付記２１〜２６のいずれか一つに記載の帯域制御プログラム。
【０２２６】
（付記２８）前記制御手段は、前記蓄積量が、予め設定された閾値を超えている場合、優先度が高いデータを破棄することを特徴とする付記２１〜２６のいずれか一つに記載の帯域制御プログラム。
【０２２７】
（付記２９）前記蓄積手段は、サービス毎に複数設けられていることを特徴とする付記２１〜２８のいずれか一つに記載の帯域制御プログラム。
【０２２８】
（付記３０）前記書込許容量計算手段は、ユーザ毎に書込許容量を計算することを特徴とする付記２１〜２９のいずれか一つに記載の帯域制御プログラム。
【０２２９】
【発明の効果】
以上説明したように、本発明によれば、複数のユーザに共通の蓄積手段にデータを蓄積し、データの送出量、蓄積量、最低帯域を保証するデータの送出許容量をユーザ毎に計算した後、書込許容量に基づいて、蓄積手段へのデータの書き込み、データの読み出しを制御することとしたので、高速動作が要求される読み出し時の検索処理が不要とされ、蓄積手段の利用効率を高めることができ、制御の単純化、高速化を図ることができるという効果を奏する。
【０２３０】
また、本発明によれば、蓄積量に反比例する関数に基づいて、送出許容量を計算することとしたので、送出側の帯域の急激な変化を防止することができるという効果を奏する。
【０２３１】
また、本発明によれば、関数をユーザ毎に設定し、各ユーザに対応する関数に基づいて、送出許容量を計算することとしたので、ユーザに対応させてきめ細かな制御を行うことができるという効果を奏する。
【０２３２】
また、本発明によれば、蓄積手段に蓄積されているデータの蓄積量をユーザ毎に計測することとしたので、ユーザに対応させてきめ細かな制御を行うことができるという効果を奏する。
【０２３３】
また、本発明によれば、蓄積手段に実際に蓄積されているデータに対応するユーザの数を実効ユーザ数として計測し、実効ユーザ数に応じて設定された複数の関数のうち、計測された実効ユーザ数に対応する関数に基づいて、送出許容量を計算することとしたので、実効ユーザ数に対応させてきめ細かな制御を行うことができるという効果を奏する。
【０２３４】
また、本発明によれば、蓄積手段に実際に蓄積されているデータに対応するユーザに重み付けを行い、ユーザの重みに応じて設定された複数の関数のうち、ユーザの重み付けに対応する関数に基づいて、送出許容量を計算することとしたので、ユーザの重みに対応させてきめ細かな制御を行うことができるという効果を奏する。
【０２３５】
また、本発明によれば、蓄積量が、予め設定された閾値を超えている場合、蓄積手段へのデータの書込量に制限をかけることとしたので、蓄積手段におけるオーバフローを防止することができるという効果を奏する。
【０２３６】
また、本発明によれば、蓄積量が、予め設定された閾値を超えている場合、優先度が高いデータを破棄することとしたので、蓄積手段におけるオーバフローを防止することができるという効果を奏する。
【０２３７】
また、本発明によれば、蓄積手段をサービス毎に複数設けることとしたので、複数のサービスを提供するシステムでも、制御の単純化、高速化を図ることができるという効果を奏する。
【０２３８】
また、本発明によれば、ユーザ毎に書込許容量を計算することとしたので、ユーザ毎にきめ細かい制御を行うことができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明にかかる実施の形態１の構成を示すブロック図である。
【図２】図１に示した最低帯域テーブル１０６を示す図である。
【図３】同実施の形態１の動作原理を説明する図である。
【図４】同実施の形態１におけるパイプライン方式のタイミングを説明する図である。
【図５】最低帯域比関数Ｆを示す図である。
【図６】同実施の形態１における書込処理を説明するフローチャートである。
【図７】同実施の形態１における計算処理を説明するフローチャートである。
【図８】本発明にかかる実施の形態２の構成を示すブロック図である。
【図９】同実施の形態２における書込処理を説明するフローチャートである。
【図１０】本発明にかかる実施の形態３の構成を示すブロック図である。
【図１１】最低帯域比関数Ｆ１〜Ｆｍを示す図である。
【図１２】図１０に示した関数選択テーブル６０３を示す図である。
【図１３】本発明にかかる実施の形態４の構成を示すブロック図である。
【図１４】図１３に示した重みテーブル７０３を示す図である。
【図１５】図１３に示した関数選択テーブル７０５を示す図である。
【図１６】本発明にかかる実施の形態５の構成を示すブロック図である。
【図１７】同実施の形態５における書込処理を説明するフローチャートである。
【図１８】同実施の形態５における計算処理を説明するフローチャートである。
【図１９】本発明にかかる実施の形態６の構成を示すブロック図である。
【図２０】同実施の形態６における書込処理を説明するフローチャートである。
【図２１】同実施の形態６における書込処理を説明するフローチャートである。
【図２２】同実施の形態６における計算処理を説明するフローチャートである。
【図２３】本発明にかかる実施の形態７の構成を示すブロック図である。
【図２４】本発明にかかる実施の形態１〜７の変形例の構成を示すブロック図である。
【図２５】従来の帯域制御装置が適用された伝送装置１０の構成を示すブロック図である。
【図２６】図２５に示した帯域制御装置６０の構成を示すブロック図である。
【符号の説明】
１００  帯域制御装置
１０１  ＦＩＦＯバッファ
１０２  書込／読出制御部
１０３  計算タイミング発生部
１０４  キュー長計測部
１０５  送出許容量計算部
１０６  最低帯域テーブル
１０７  送出量計測部
１０８  書込許容量計算部
５００  帯域制御装置
５０１  ユーザ毎キュー長計測部
５０２  書込／読出制御部
６００  帯域制御装置
６０１  実効ユーザ数計測部
６０２  送出許容量計算部
６０３  関数選択テーブル
７００  帯域制御装置
７０１  実効ユーザチェック部
７０２  重み付け部
７０４  送出許容量計算部
８００  帯域制御装置
８０１  書込／読出制御部
９００  帯域制御装置
９０１  書込／読出制御部
１０００  帯域制御装置
１００１  ＦＩＦＯバッファ
１００２  ＦＩＦＯバッファ
１００３  サービス識別部
１００４  振分部
１００５  送出部
【図１】
2005026893.tif 000003
【図２】
2005026893.tif 000004
【図３】
2005026893.tif 000005
【図４】
2005026893.tif 000006
【図５】
2005026893.tif 000007
【図６】
2005026893.tif 000008
【図７】
2005026893.tif 000009
【図８】
2005026893.tif 000010
【図９】
2005026893.tif 000011
【図１０】
2005026893.tif 000012
【図１１】
2005026893.tif 000013
【図１２】
2005026893.tif 000014
【図１３】
2005026893.tif 000015
【図１４】
2005026893.tif 000016
【図１５】
2005026893.tif 000017
【図１６】
2005026893.tif 000018
【図１７】
2005026893.tif 000019
【図１８】
2005026893.tif 000020
【図１９】
2005026893.tif 000021
【図２０】
2005026893.tif 000022
【図２１】
2005026893.tif 000023
【図２２】
2005026893.tif 000024
【図２３】
2005026893.tif 000025
【図２４】
2005026893.tif 000026
【図２５】
2005026893.tif 000027
【図２６】
2005026893.tif 000028