(57)【要約】【課題】指定された帯域を確保しながら、フレームのバースト転送を抑制する。【解決手段】伝送装置は、第１のカウンタと、指定されたレートで第１のカウンタをインクリメントするカウンタ制御部と、受信フレームを格納するフレームバッファと、第１のカウンタの値が所定の閾値よりも大きいときに、フレームバッファからフレームを読み出して出力するバッファ制御部と、を有する。バッファ制御部によりフレームバッファから読み出された出力フレームの長さが指定された基準フレーム長よりも短いときは、カウンタ制御部は、基準フレーム長を表す値だけ第１のカウンタをデクリメントする。出力フレームの長さが基準フレーム長以上であるときは、カウンタ制御部は、出力フレームの長さを表す値だけ第１のカウンタをデクリメントする。【選択図】図４
2015177215.tif 000002
【特許請求の範囲】
【請求項１】
第１のカウンタと、
指定されたレートで前記第１のカウンタをインクリメントするカウンタ制御部と、
受信フレームを格納するフレームバッファと、
前記第１のカウンタの値が所定の閾値よりも大きいときに、前記フレームバッファからフレームを読み出して出力するバッファ制御部と、を有し、
前記バッファ制御部により前記フレームバッファから読み出された出力フレームの長さが指定された基準フレーム長よりも短いときは、前記カウンタ制御部は、前記基準フレーム長を表す値だけ前記第１のカウンタをデクリメントし、
前記出力フレームの長さが前記基準フレーム長以上であるときは、前記カウンタ制御部は、前記出力フレームの長さを表す値だけ前記第１のカウンタをデクリメントする
ことを特徴とする伝送装置。
【請求項２】
前記出力フレームの長さが前記基準フレーム長よりも短いときは、前記バッファ制御部は、前記出力フレームに対して割り当てられる区間の後に、前記出力フレームの長さと前記基準フレーム長との差分に対応する時間だけ、前記フレームバッファから次のフレームを読み出す処理を禁止する無効区間を設ける
ことを特徴とする請求項１に記載の伝送装置。
【請求項３】
前記出力フレームの長さが前記基準フレーム長よりも短いときに、前記出力フレームの長さが前記基準フレーム長になるように前記出力フレームを補正するフレーム長補正部をさらに有する
ことを特徴とする請求項１に記載の伝送装置。
【請求項４】
第２のカウンタをさらに有し、
前記出力フレームの長さが前記基準フレーム長よりも短いときは、前記カウンタ制御部は、前記出力フレームの長さと前記基準フレーム長との差分を表す値だけ前記第２のカウンタをインクリメントし、
前記第１のカウンタの値が前記閾値以下であり、且つ、前記フレームバッファの先頭に格納されている先頭フレームの長さが前記基準フレーム長以上であり、且つ、前記第２のカウンタの値が前記先頭フレームの長さを表す値以上であるときは、
前記バッファ制御部は、前記フレームバッファから前記先頭フレームを読み出して出力し、
前記カウンタ制御部は、前記先頭フレームの長さを表す値だけ前記第２のカウンタをデクリメントする
ことを特徴とする請求項１に記載の伝送装置。
【請求項５】
前記フレームバッファは、各フレームの優先度ごとに受信フレームを格納する構成であり、
前記基準フレーム長は、前記優先度に応じて指定される
ことを特徴とする請求項１〜４のいずれか１つに記載の伝送装置。
【請求項６】
カウンタと、
指定されたレートで前記カウンタをインクリメントするカウンタ制御部と、
受信フレームを格納するフレームバッファと、
前記カウンタの値が所定の閾値よりも大きいときに、前記フレームバッファからフレームを読み出して出力するバッファ制御部と、を有し、
前記カウンタ制御部は、前記バッファ制御部により前記フレームバッファから読み出された出力フレームの長さに基づいて決まる値だけ前記カウンタをデクリメントし、
前記出力フレームの長さが前記基準フレーム長よりも短いときは、前記バッファ制御部は、前記出力フレームに対して割り当てられる区間の後に、前記出力フレームの長さと前記基準フレーム長との差分に対応する時間だけ、前記フレームバッファから次のフレームを読み出す処理を禁止する無効区間を設ける
ことを特徴とする伝送装置。
【請求項７】
受信フレームを格納するフレームバッファを有する伝送装置においてフレームの送信を制御する伝送方法であって、
指定されたレートでカウンタをインクリメントし、
前記カウンタの値が所定の閾値よりも大きいときに、前記フレームバッファからフレームを読み出して出力し、
前記フレームバッファから読み出された出力フレームの長さが指定された基準フレーム長よりも短いときに、前記基準フレーム長を表す値だけ前記カウンタをデクリメントし、
前記出力フレームの長さが前記基準フレーム長以上であるときに、前記出力フレームの長さを表す値だけ前記カウンタをデクリメントする
ことを特徴とする伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フレームまたはパケットを伝送する伝送装置および伝送方法に係わる。
【背景技術】
【０００２】
インターネットおよびモバイル通信の普及などにより、通信事業者が提供するキャリアネットワークは、ＳＯＮＥＴ／ＳＤＨ（Synchronous Optical NETwork/Synchronous Digital Hierarchy）等のＴＤＭネットワークから、Ethernet（登録商標）技術およびＩＰ技術を利用するパケットネットワークへ移行しつつある。
【０００３】
キャリアネットワークにおいは、ユーザに対して提供されるサービスの１つとして帯域保証が実用化されている。帯域保証サービスにおいては、例えば、ユーザ毎に契約等によって決められた最大帯域（又は、最大伝送速度）が割り当てられる。この場合、帯域保証サービスを提供する通信機器は、各ユーザのトラヒックが対応する最大帯域を越えないように帯域制御を行う。
【０００４】
帯域制御は、例えば、データ量制御により実現される。この場合、単位時間当たりのデータ量が制御される。なお、データ量は、一般に、ビット／秒（ｂｐｓ）で表される。また、ネットワーク上でフレームを中継する伝送装置（例えば、ルータ）は、各フレームのヘッダに付与されているアドレス情報に基づいてルーティング処理を行う。よって、単位時間当たりのフレーム数が増加すると、伝送装置内の回路においてオーバフローが発生するおそれがある。そこで、伝送装置は、フレーム数制御を行うことがある。フレーム数制御においては、単位時間当たりの送信フレームの数が許容数以下に制限される。
【０００５】
上述の帯域制御は、例えば、トークンバケツを利用して実現される。トークンバケツには、一定のレートでトークンが供給される。そして、トークンバケツに蓄積されているトークンの数が所定値（例えば、ゼロ）よりも大きければ、送信制御回路は、フレームバッファからフレームを読み出して送信する。このとき、送信制御回路は、フレームバッファから読み出したフレームの長さに相当する数のトークンをトークンバケツから削減する。よって、データ量は、トークンバケツに供給されるトークンの量に応じて制御される。
【０００６】
なお、関連する技術は、例えば、特許文献１〜４に記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】ＷＯ２００４／１０９９９５
【特許文献２】特開２００９−１０４４９号公報
【特許文献３】特開２００９−１４７５６９号公報
【特許文献４】特開２０１１−２５９３２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
トークンバケツを利用する帯域制御においては、バースト転送（データ量またはフレーム数が一時的に増加する状態）が発生することがある。すなわち、トークンバケツには、上述したように、一定のレートでトークンが供給される。このため、伝送装置がフレームを受信していない期間は、トークンバケツにトークンが蓄積されてゆく。この後、伝送装置が連続してフレームを受信すると、送信制御回路は、トークンバケツに蓄積されているトークンの数が所定値以下になるまで、連続的にフレームを出力する。そうすると、これらのフレームを処理するフレーム処理回路および／または下流側のノードにおいてオーバフローが発生することがある。
【０００９】
なお、この問題は、例えば、トークンバケツの容量（トークンバケツに蓄積可能なトークンの数）を小さくすることで解決され得る。ところが、トークンバケツの容量を小さくし過ぎると、ユーザの通信速度が設定帯域に対応するレートまで上がらないことがある。
【００１０】
本発明の１つの側面に係わる目的は、指定された帯域を確保しながら、フレームのバースト転送を抑制することである。
【課題を解決するための手段】
【００１１】
本発明の１つの態様の伝送装置は、第１のカウンタと、指定されたレートで前記第１のカウンタをインクリメントするカウンタ制御部と、受信フレームを格納するフレームバッファと、前記第１のカウンタの値が所定の閾値よりも大きいときに、前記フレームバッファからフレームを読み出して出力するバッファ制御部と、を有する。前記バッファ制御部により前記フレームバッファから読み出された出力フレームの長さが指定された基準フレーム長よりも短いときは、前記カウンタ制御部は、前記基準フレーム長を表す値だけ前記第１のカウンタをデクリメントする。前記出力フレームの長さが前記基準フレーム長以上であるときは、前記カウンタ制御部は、前記出力フレームの長さを表す値だけ前記第１のカウンタをデクリメントする。
【発明の効果】
【００１２】
上述の態様によれば、指定された帯域を確保しながら、フレームのバースト転送を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態の伝送装置が使用されるネットワークの一例を示す図である。
【図２】伝送装置の構成を示す図である。
【図３】伝送装置により伝送されるフレームのフォーマットの例を示す図である。
【図４】第１の実施形態に係わる帯域制御装置の構成を示す図である。
【図５】第１の実施形態の帯域制御方法を示すフローチャートである。
【図６】第１の実施形態における帯域制御の一例を示す図である。
【図７】第２の実施形態の帯域制御方法を示すフローチャートである。
【図８】第２の実施形態における帯域制御の一例を示す図である。
【図９】第３の実施形態に係わる帯域制御装置の構成を示す図である。
【図１０】第３の実施形態の帯域制御方法を示すフローチャートである。
【図１１】第３の実施形態における帯域制御の一例を示す図である。
【図１２】第４の実施形態に係わる帯域制御装置の構成を示す図である。
【図１３】他の実施形態に係わる帯域制御装置の構成を示す図である。
【発明を実施するための形態】
【００１４】
図１は、本発明の実施形態の伝送装置が使用されるネットワークの一例を示す。このネットワークは、図１に示すように、複数の伝送装置１（１ａ〜１ｆ）によって構築されている。各伝送装置１は、例えば光ファイバにより、１または複数の他の伝送装置１と接続されている。例えば、伝送装置１ａは、伝送装置１ｂ、１ｄ、１ｅと接続されており、伝送装置１ｂは、伝送装置１ａ、１ｃ、１ｄ、１ｅ、１ｆと接続されている。また、各伝送装置１は、１または複数のユーザ端末２を収容することができる。図１に示す例では、伝送装置１ａ、１ｃ、１ｄ、１ｆが、それぞれ複数のユーザ端末２を収容している。
【００１５】
伝送装置１は、ユーザ端末２または他の伝送装置１から受信するフレームを、宛先へ向かって転送する。すなわち、伝送装置１は、受信フレームの宛先アドレスに基づいてそのフレームを転送することができる。例えば、ユーザ端末２からEthernetフレームまたはＩＰフレームが送信される場合、伝送装置１は、受信フレーム内に格納されているＭＡＣアドレスまたはＩＰアドレス等に基づいて、そのフレームの転送処理を行う。なお、この明細書では、フレームおよびパケットを互いに区別しないことにする。したがって、「フレーム」は、パケットを含むものとする。
【００１６】
図２は、伝送装置１の構成を示す。伝送装置１は、図２に示すように、複数のＩＦ（インタフェース）ユニット１１、スイッチ部１２、制御部１３を有する。また、伝送装置１には、制御端末１４が接続されている。
【００１７】
各ＩＦユニット１１は、複数のポートを有する。この実施例では、伝送装置１は、１つの対向装置（他の伝送装置１またはユーザ端末２）に対して１組の入力ポートおよび出力ポートを有する。すなわち、伝送装置１は、対向装置から送信されるフレームを入力ポートを介して受信し、出力ポートを介して対向装置へフレームを送信する。
【００１８】
ＩＦユニット１１は、ポートを介して受信するフレームを終端し、そのフレームをスイッチ部１２へ送る。また、ＩＦユニット１１は、スイッチ部１２から導かれてくるフレームを、そのパケットの宛先に対応するポートを介して出力する。なお、ＩＦユニット１１は、例えば、着脱可能なモジュール、ボード、またはカードで実現される。
【００１９】
スイッチ部１２は、複数のＩＦユニット１１に接続されている。そして、スイッチ部１２は、ＩＦユニット１１から入力されるフレームを、その宛先に対応するＩＦユニット１１へ導く。尚、スイッチ部１２は、フレーム転送を制御するためのプロセッサ、メモリ、およびハードウェア回路を含む。また、スイッチ部１２は、例えば、着脱可能なモジュール、ボード、またはカードで実現される。
【００２０】
制御部１３は、ＣＰＵおよびメモリを含み、ＩＦユニット１１およびスイッチ部１２の動作を制御する。また、制御部１３は、アラーム情報および／または統計情報を収集することもできる。なお、制御部１３は、例えば、着脱可能なモジュール、ボード、またはカードで実現される。
【００２１】
制御端末１４は、制御部１３に接続されるコンピュータであり、ユーザまたはネットワーク管理者の指示を伝送装置１に与える。なお、制御端末１４は、伝送装置１の一部であってもよい。
【００２２】
ＩＦユニット１１、スイッチ部１２、制御部１３は、個々に着脱可能である必要はなく、例えば、マザーボードによって一体化されていてもよい。また、伝送装置１は、ＩＦユニット１１、スイッチ部１２、制御部１３に加えて、他の要素を含んでいてもよい。
【００２３】
図３は、伝送装置１により伝送されるフレームのフォーマットの例を示す。ここでは、伝送装置１は、Ethernetフレームを伝送するものとする。なお、図３に示す括弧付きの数字は、ビット数を表す。
【００２４】
Ethernetフレームは、図３（ａ）に示すように、宛先ＭＡＣアドレス（MAC DA）、送信元ＭＡＣアドレス（MAC SA）、イーサネット（登録商標）タイプ（E-TYPE）、プロトコルデータユニット（PDU）、フレームチェックシーケンス（FCS）を有する。イーサネットタイプは、プロトコルデータユニットに格納されるメッセージのタイプを識別する。一例としては、0x0800は、ＩＰｖ４フレームを表す。なお、イーサネットタイプは、例えば、ＩＡＮＡにより規定される。プロトコルデータユニットは、上位レイヤのメッセージを格納する。例えば、ユーザデータは、このプロトコルデータユニットに格納される。フレームチェックシーケンスは、フレーム誤り検出のために使用され、例えば、ＣＲＣ３２符号により実現される。
【００２５】
図３（ｂ）は、ＶＬＡＮタグが付与されたEthernetフレームのフォーマットを示す。ＶＬＡＮタグは、タグプロトコル識別子（TPID）、優先度（Priority）、ＤＥＩ（Drop Eligible Indicator）、仮想ＬＡＮ識別子（VLAN ID）を含む。タグプロトコル識別子には、フレーム内に仮想ＬＡＮ識別子が格納されていることを表す値が設定される。たとえば、タグプロトコル識別子として、IEEE802.1Qで規定される0x8100が設定される。優先度は、フレーム自体の優先度を表す。図３（ｂ）に示す例では、優先度は、３ビットであり、８クラスの優先度を表示できる。ＤＥＩは、廃棄優先度を表す。ネットワークが輻輳しているときは、ＤＥＩ＝１が設定されているフレームが優先的に廃棄される。仮想ＬＡＮ識別子は、ユーザを識別することができる。なお、タグプロトコル識別子および仮想ＬＡＮ識別子の組合せがＶＬＡＮタグと呼ばれることもある。
【００２６】
次に、伝送装置１により提供される帯域制御機能（または、帯域管理機能）について記載する。
【００２７】
伝送装置１は、帯域制御装置を有する。帯域制御装置は、例えば、ユーザ毎に割り当てられている最大帯域を越えないように各ユーザのトラヒックを制御する。また、帯域制御装置は、図２においては、例えば、ＩＦユニット１１の中に設けられる。この場合、帯域制御装置は、入力ポートを介して受信するフレームを処理する。或いは、帯域装置は、スイッチ部１２から導かれてくるフレームを処理してもよい。また、帯域制御装置は、スイッチ１２の中に設けられてもよい。この場合、帯域制御装置は、ＩＦユニット１１から導かれてくるフレームを処理する。
【００２８】
＜第１の実施形態＞
図４は、第１の実施形態に係わる帯域制御装置の構成を示す。第１の実施形態の帯域制御装置１００は、図４に示すように、フレームバッファ１０１、バッファ制御部１０２、トークンバケツ１０３、トークン制御部１０４、基準フレーム長テーブル１０５、フレーム長補正部１０６を有する。なお、帯域制御装置１００は、図４に示していない他の要素を有していてもよい。
【００２９】
フレームバッファ１０１は、受信フレームを格納する。ここで、フレームバッファ１０１は、たとえば、ユーザ毎に受信フレームを格納することができる。各フレームのユーザは、例えば、図３（ｂ）に示す「仮想ＬＡＮ識別子（VLAN ID）」により識別される。なお、フレームバッファ１０１は、例えば、メモリデバイスにより実現される。
【００３０】
バッファ制御部１０２は、フレームバッファ１０１からフレームを読み出して出力することができる。ここで、バッファ入力帯域（書込み帯域）よりもバッファ出力帯域（読出し帯域）の方が小さいときは、フレームバッファ１０１においてオーバフローが発生することがある。この場合、例えば、バッファ制御部が優先制御処理の機能を有していれば、優先度の低いフレームが廃棄される。各フレームの優先度は、例えば、図３（ｂ）に示す「優先度（Priority）」により識別される。
【００３１】
バッファ制御部１０２は、後で詳しく記載するが、トークンバケツ１０３に蓄積されているトークンの個数に基づいてフレームバッファ１０１からフレームを読み出す。このとき、バッファ制御部１０２は、基準フレーム長テーブル１０５に登録されている基準フレーム長に基づいて、フレームバッファ１０１からフレームを読み出す間隔を制御してもよい。
【００３２】
トークンバケツ１０３は、トークンを蓄積する。ただし、この実施例では、トークンバケツ１０３は、トークンの個数をカウントする。よって、以下では、トークンバケツ１０３に蓄積されているトークンの個数を「トークンバケツ１０３の値」と呼ぶことがある。例えば、トークンバケツ１０３に１００個のトークンが供給されると、トークンバケツ１０３の値は１００だけインクリメントされる。したがって、トークンバケツ１０３は、この実施例では、カウンタにより実現される。なお、後で詳しく記載するが、トークンバケツ１０３の値は、負の値となることができるものとする。
【００３３】
トークン制御部１０４は、トークンバケツ１０３に蓄積されるトークンの個数を制御する。具体的には、トークン制御部１０４は、指定されたレートでトークンバケツ１０３にトークンを供給する。トークンバケツ１０３にトークンを供給するレート（以下、トークン供給レート）は、許容データレート（または、最大帯域）を規定する。例えば、許容データレートが100Mbpsであるときは、トークン制御部１０４は、１秒間に、トークンバケツ１０３に100,000,000個のトークンを供給する。この場合、トークンバケツ１０３は、100,000,000／秒でカウントアップされる。なお、トークン供給レートは、例えば、ネットワーク管理者により指定される。また、トークン制御部１０４は、バッファ制御部１０２からの指示に応じて、トークンバケツ１０３からトークンを取り出すことができる。例えば、トークン制御部１０４がトークンバケツ１０３から１００個のトークンを取り出すと、トークンバケツ１０３の値は１００だけデクリメントされる。さらに、トークン制御部１０４は、トークンバケツ１０３の状態（例えば、トークンバケツ１０３に蓄積されているトークンの個数）をバッファ制御部１０２に通知することができる。
【００３４】
基準フレーム長テーブル１０５には、基準フレーム長が登録されている。基準フレーム長は、フレームの長さを表す。フレームの長さは、この例では、ビット数で表される。また、基準フレーム長は、例えば、許容データレートおよび最大送信フレーム数に基づいて指定される。一例としては、基準フレーム長は、下式で算出される。なお、最大送信フレーム数は、単位時間当たりに送信可能なフレームの数を表す。
基準フレーム長＝許容データレート[bps]／最大送信フレーム数[fps]
この場合、許容データレートが指定されているものとすると、基準フレーム長を指定することで最大送信フレーム数が算出される。例えば、許容データレートが100Mbpsであるときに、基準データ長＝10000ビットが与えられると、最大送信フレーム数＝10,000フレーム／秒が得られる。換言すれば、許容データレートおよび最大送信フレーム数が与えられると、基準フレーム長が算出される。
【００３５】
フレーム長補正部１０６は、バッファ制御部１０２からの指示に応じて、フレームバッファ１０１から読み出されたフレームを補正する。すなわち、フレームバッファ１０１から読み出された出力フレームの長さが基準フレーム長よりも短いときは、フレーム長補正部１０６は、フレーム長が基準フレーム長になるように出力フレームを補正することができる。この場合、フレーム長補正部１０６は、例えば、出力フレームの末尾にダミーデータを付与してもよい。
【００３６】
次に、上記構成の帯域制御装置１００の動作を説明する。以下の記載では、図４に示すように、受信フレーム＃１、＃２、＃３、．．．が帯域制御装置１００に順番入力されるものとする。そして、受信フレームは、順番に、フレームバッファ１０１格納される。
【００３７】
トークン制御部１０４は、上述したように、指定されたレートでトークンバケツ１０３にトークンを供給する。したがって、トークンバケツ１０３は、トークン供給レートで継続的にインクリメントされる。
【００３８】
バッファ制御部１０２は、定期的に、トークン管理信号を利用してトークンバケツ１０３の状態を確認する。トークン管理信号は、トークン制御部１０４により受信される。そうすると、トークン制御部１０４は、トークンバケツ１０３の状態を検出し、バッファ制御部１０２に通知する。具体的には、トークンバケツ１０３に蓄積されているトークンの個数がバッファ制御部１０２に通知される。或いは、トークンバケツ１０３に蓄積されているトークンの個数が所定の閾値より多いか否かがバッファ制御部１０２に通知される。この場合、閾値は、例えば、ゼロである。
【００３９】
トークンバケツ１０３に蓄積されているトークンの個数が１以上であるときは（すなわち、トークンバケツ１０３にトークンが残っているときは）、バッファ制御部１０２は、フレームバッファ１０１の先頭に格納されているフレームを読み出す。このように、トークンバケツ１０３の値は、フレームバッファ１０１からフレームを読み出すことを許可するか否かを表す。以下、フレームバッファ１０１から読み出されたフレームを「出力フレーム」と呼ぶことがある。
【００４０】
バッファ制御部１０２は、フレームバッファ１０１から読み出したフレーム（即ち、出力フレーム）の長さをトークン管理部１０４に通知する。この場合、フレーム長は、例えば、ビット数で表される。そうすると、トークン制御部１０４は、通知されたフレーム長を表す値だけ、トークンバケツ１０３をデクリメントする。例えば、出力フレームのフレーム長が１２８バイト（即ち、１０２４ビット）であったときは、トークンバケツ１０３は「１０２４」だけデクリメントされる。なお、トークンバケツ１０３の値は、負の値となることができる。
【００４１】
このように、トークンバケツ１０３の値は、上述したトークン供給レートでインクリメントされ、各出力フレームの長さに応じてデクリメントされる。ここで、この例では、トークンバケツ１０３の値が１以上であるときに、フレームバッファ１０１からフレームを読み出す動作が許可される。したがって、出力データレートは、実質的に、トークン供給レートによって制限される。すなわち、最大出力データレートは、トークンバケツ１０３を利用して制御される。
【００４２】
バッファ制御部１０２は、フレームバッファ１０１から読み出した出力フレームの長さと基準フレーム長とを比較する。そして、出力フレームの長さが基準フレーム長よりも短いときは、バッファ制御部１０２は、時間領域において、出力フレームに対して割り当てられる区間の後に無効区間を設ける。無効区間においては、フレームバッファ１０１から次のフレームを読み出す処理が禁止される。また、無効区間の長さは、出力フレームの長さと基準フレーム長との差分に対応する。例えば、図４に示す例では、フレーム＃１の長さが基準フレーム長よりも短い。したがって、フレーム＃１の末尾に無効区間が設けられている。なお、図４では、無効区間は、斜線領域で表されている。
【００４３】
また、出力フレームの長さが基準フレーム長よりも短いときは、バッファ制御部１０２は、フレーム長補正部１０６と連携して、出力フレームの長さが基準フレーム長になるように出力フレームを補正してもよい。この場合、フレーム長補正部１０６は、例えば、出力フレームの末尾にダミーデータを付与する。ダミーデータのデータ長は、基準フレーム長と出力フレームの長さとの差分に相当する。なお、上述の無効区間は、出力フレームの末尾にダミーデータを付加することで実現してもよい。
【００４４】
一方、出力フレームの長さが基準フレーム長以上であるときは、バッファ制御部１０２は、出力フレームの末尾に無効区間を設けない。或いは、出力フレームの末尾にダミーデータは付与されない。例えば、図４に示す例では、フレーム＃２の長さが基準フレーム長よりも長い。したがって、フレーム＃２の末尾に無効区間は設けられていない。
【００４５】
フレームバッファ１０１から読み出された出力フレームは、フレーム処理部１１０に導かれる。フレーム処理部１１０は、フレームのヘッダに格納されている情報に応じてそのフレームを処理する。例えば、フレーム処理部１１０は、ヘッダ情報に応じてフレームをフィルタリングする。また、フレーム処理部１１０は、ヘッダ情報に応じてフレームの宛先を決定してもよい。さらに、フレーム処理部１１０は、ヘッダ情報に応じてフレーム内のデータを加工してもよい。
【００４６】
このように、第１の実施形態の帯域制御装置１００は、トークンバケツ１０３を利用して出力データレートを制御する。これに加えて、出力フレームの長さが基準フレーム長より短いときは、帯域制御装置１００は、出力フレームの長さと基準フレーム長との差分に相当する無効区間（または、ダミーデータ）を挿入する。したがって、フレームバッファ１０１からフレームを読み出す間隔は、基準フレーム長に対応する時間よりも短くならないように制御される。すなわち、単位時間あたりの送信フレーム数の上限が適切に制限される。この結果、フレームのバースト転送が抑制される。
【００４７】
例えば、フレーム長の短いフレーム（以下、短フレーム）が連続してフレームバッファ１０１に格納されたものとする。この場合、出力データレートを制御するだけでは、一時的に多数の短フレームが連続的に読み出される可能性がある。ところが、帯域制御装置１００においては、短フレームに対して上述の無効区間（または、ダミーデータ）を付加することにより、フレームのバースト転送が抑制される。したがって、フレーム処理部１１０またはフレームの転送先ノードの回路の単位時間当たりのフレーム処理の負荷が抑制される。
【００４８】
なお、上述の帯域制御は、複数のユーザにより帯域が共有されるときにも有用である。例えば、総帯域1Gbpsが１０ユーザにより共有され、各ユーザに対して帯域100Mbpsが割り当てられているものとする。この場合、フレームバッファ１０１は、ユーザ毎に受信フレームを独立して格納する。また、帯域制御装置１００は、ユーザ毎にトークンバケツ１０３、トークン制御部１０４、基準フレーム長テーブル１０５を有する。そして、帯域制御装置１００は、各ユーザのトラヒックがそれぞれ100Mbpsを超えないように、フレームバッファ１０１からフレームを読み出す。
【００４９】
ここで、仮に、基準フレーム長に基づく無効区間の挿入を行わないものとすると、一部のユーザの送信フレーム数が増大することがある。例えば、あるユーザが多数の短フレームを連続して送信したときは、データレートは指定された帯域内に抑制されるが、そのユーザの送信フレーム数が増大する。ここで、フレーム処理部１１０の処理能力が十分に高くないものとすると、フレーム処理部１１０のリソースがこのユーザによって消費されてしまい、他のユーザのトラヒックに影響が及ぶおそれがある。
【００５０】
これに対して第１の実施形態の帯域制御装置１００においては、各ユーザのデータレートが制御されるだけでなく、各ユーザの送信フレーム数も制御される。したがって、複数のユーザにより帯域が共有されるケースであっても、フレーム処理部１１０のリソースが一部のユーザによって過剰に消費されることはなく、すべてのユーザのトラヒックがフレーム処理部１１０によって適切に処理される。なお、複数のユーザにより帯域が共有されるときは、ユーザ毎に基準フレーム長を指定することが可能である。
【００５１】
図５は、第１の実施形態の帯域制御方法を示すフローチャートである。このフローチャートの処理は、例えば、定期的に実行される。なお、トークンバケツ１０３は、トークン制御部１０４により所定のレートでインクリメントされる。また、受信フレームは順番にフレームバッファ１０１に格納される。
【００５２】
Ｓ１において、バッファ制御部１０２は、トークンバケツ１０３に１個以上のトークンが蓄積されているか否かを判定する。トークンバケツ１０３に１個以上のトークンが蓄積されているときは（即ち、トークンバケツ１０３の値が１以上であるときは）、バッファ制御部１０２は、Ｓ２において、フレームバッファ１０１の先頭に格納されているフレームを読み出す。一方、トークンバケツ１０３にトークンが残っていないときは（即ち、トークンバケツ１０３の値がゼロ以下であるときは）、バッファ制御部１０２は、フレームバッファ１０１からフレームを読み出すことはできない。
【００５３】
Ｓ３において、バッファ制御部１０２は、フレームバッファ１０１から読み出した出力フレームの長さと基準フレーム長とを比較する。そして、出力フレームの長さが基準フレーム長よりも短いときは、バッファ制御部１０２は、Ｓ４において、出力フレームの末尾に無効区間またはダミーデータを付加して送信する。一方、出力フレームの長さが基準フレーム長以上であるときは、バッファ制御部１０２は、Ｓ５において、無効区間またはダミーデータを付加することなく出力フレームを送信する。
【００５４】
Ｓ６において、バッファ制御部１０２は、出力フレームの長さをトークン制御部１０４に通知する。そうすると、トークン制御部１０４は、この出力フレームの長さを表す値だけトークンバケツ１０３をデクリメントする。なお、以下の記載では、フレームバッファ１０１から読み出された出力フレームの長さを「実フレーム長」と呼ぶことがある。すなわち、Ｓ６では、出力フレームの実フレーム長を表す値だけトークンバケツ１０３がデクリメントされる。
【００５５】
なお、バッファ制御部１０２およびトークン制御部１０４は、例えば、図５に示すフローチャートの処理を行うハードウェア回路により実現される。或いは、バッファ制御部１０２およびトークン制御部１０４は、図５に示すフローチャートの処理を記述したプログラムをプロセッサで実行することにより実現してもよい。さらに、バッファ制御部１０２およびトークン制御部１０４は、ハードウェア回路およびソフトウェアの組合せで実現してもよい。
【００５６】
図６は、第１の実施形態における帯域制御の一例を示す。第１の実施形態では、フレームバッファ１０１からフレームが読み出されるときに、そのフレーム長を表す値だけトークンバケツ１０３がデクリメントされる。図６に示す例では、例えば、時刻Ｔ１においてフレーム長Ｌ１のフレームが読み出されている。この結果、トークンバケツ１０３は、Ｌ１に対応する値だけデクリメントされる。なお、バッファ制御部１０２は、トークンバケツ１０３にトークンが残っていないとき（即ち、トークンバケツ１０３の値が負であるとき）は、フレームバッファ１０１からフレームを読み出すことはできない。図６に示す例では、時刻Ｔ２〜Ｔ３は、バッファ制御部１０２はフレームバッファ１０１からフレームを読み出すことはできない。この後、時刻Ｔ４において、フレームバッファ１０１から次のフレームが読み出されている。
【００５７】
＜第２の実施形態＞
帯域制御装置の構成は、第１および第２の実施形態において実質的に同じである。すなわち、第２の実施形態の帯域制御は、図４に示す帯域制御装置１００により提供される。ただし、トークンバケツ１０３を制御する方法は、第１および第２の実施形態において異なる。
【００５８】
図７は、第２の実施形態の帯域制御方法を示すフローチャートである。このフローチャートの処理は、第１の実施形態と同様に、例えば、定期的に実行される。また、第１の実施形態と同様に、トークンバケツ１０３は、トークン制御部１０４により所定のレートでインクリメントされる。さらに、受信フレームは順番にフレームバッファ１０１に格納される。
【００５９】
第１の実施形態では、図５に示すように、フレームバッファ１０１から読み出された出力フレームの長さにかかわらず、実フレーム長を表す値だけトークンバケツ１０３がデクリメントされる。これに対して第２の実施形態では、図７に示すように、フレームバッファ１０１から読み出された出力フレームの長さが基準フレーム長よりも短いときは、Ｓ１１において、トークン制御部１０４は、基準フレーム長を表す値だけトークンバケツ１０３をデクリメントする。また、フレームバッファ１０１から読み出された出力フレームの長さが基準フレーム長以上であるときは、Ｓ１２において、トークン制御部１０４は、出力フレームの実フレーム長を表す値だけトークンバケツ１０３をデクリメントする。
【００６０】
図８は、第２の実施形態における帯域制御の一例を示す。なお、図６および図８において、動作条件（トークン供給レート、基準フレーム長など）は同じである。
【００６１】
時刻Ｔ４においてフレームバッファ１０１から読み出されるフレームの長さＬ２は、基準フレーム長よりも短い。この場合、第１の実施形態では、図６に示すように、トークン制御部１０４は、実フレーム長を表す値だけトークンバケツ１０３をデクリメントする。これに対して第２の実施形態では、図８に示すように、トークン制御部１０４は、基準フレーム長を表す値だけトークンバケツ１０３をデクリメントする。
【００６２】
このように、第２の実施形態では、出力フレームの長さが基準フレーム長よりも短いときは、基準フレーム長を表す値だけトークンバケツ１０３がデクリメントされる。すなわち、第２の実施形態では、あるユーザのフレームの末尾に無効区間（または、ダミーデータ）が付加されたときは、その無効区間に対応する帯域は、そのユーザによって使用されたものとして帯域制御が実行される。このため、第１の実施形態と比較して、第２の実施形態では、トークンバケツ１０３の値が小さくなりやすい。
【００６３】
例えば、第１の実施形態では、図６に示すように、時刻Ｔ４においてトークンバケツ１０３の値は負になっていない。一方、第２の実施形態では、図８に示すように、時刻Ｔ４においてトークンバケツ１０３の値が負になっている。ここで、トークンバケツ１０３の値がゼロ以下である期間は、バッファ制御部１０２はフレームバッファ１０１からフレームを読み出すことはできない。よって、第２の実施形態では、トークンバケツ１０３を利用して、単位時間あたりの送信フレーム数を抑制することが可能である。したがって、第２の実施形態では、出力フレームの長さが基準フレーム長よりも短いときに、必ずしもその出力フレームの末尾に無効区間を付加しなくてもてもよい。この場合、帯域制御装置１００は、フレーム長補正部１０６を有していなくてもよい。
【００６４】
＜第３の実施形態＞
図９は、第３の実施形態に係わる帯域制御装置の構成を示す。第３の実施形態の帯域制御装置３００は、図９に示すように、フレームバッファ１０１、トークンバケツ１０３、基準フレーム長テーブル１０５、フレーム長補正部１０６、キャッシュバケツ３０１、トークン制御部３０２、バッファ制御部３０３を有する。なお、フレームバッファ１０１、トークンバケツ１０３、基準フレーム長テーブル１０５、フレーム長補正部１０６は、第１および第３の実施形態において実質的に同じである。また、帯域制御装置３００は、図９に示していない他の要素を有していてもよい。
【００６５】
キャッシュバケツ３０１は、所定の条件の下でトークンバケツ１０３から取り出されたトークンを一時的に格納することができる。なお、この実施例では、トークンバケツ１０３と同様に、キャッシュバケツ３０１もトークンの個数をカウントする。よって、以下では、キャッシュバケツ３０１に格納されているトークンの個数を「キャッシュバケツ３０１の値」と呼ぶことがある。また、トークンバケツ１０３と同様に、キャッシュバケツ３０１もカウンタにより実現される。ただし、トークンバケツ１０３は指定されたレートでトークンが供給されるが、キャッシュバケツ３０１に対してそのようなトークンの供給は行われない。
【００６６】
トークン制御部３０２は、第１または第２の実施形態と同様の方法でトークンバケツ１０３を制御する。これに加えて、トークン制御部３０２は、キャッシュバケツ３０１も制御する。そして、バッファ制御部３０３は、トークンバケツ１０３の値だけでなく、キャッシュバケツ３０１の値も考慮して、フレームバッファ１０１からフレームを読み出して出力する。以下、フローチャートを参照しながら第３の実施形態の帯域制御装置３００の動作を説明する。
【００６７】
図１０は、第３の実施形態の帯域制御方法を示すフローチャートである。このフローチャートの処理は、第１の実施形態と同様に、例えば、定期的に実行される。また、第１の実施形態と同様に、トークンバケツ１０３は、トークン制御部３０２により所定のレートでインクリメントされる。さらに、受信フレームは順番にフレームバッファ１０１に格納される。
【００６８】
Ｓ１〜Ｓ５、Ｓ１１、Ｓ１２の処理は、第２及び第３の実施形態において同じである。すなわち、第３の実施形態においても、フレームバッファ１０１から読み出される出力フレームの長さが基準フレーム長よりも短いときは、出力フレームの末尾に無効区間（または、ダミーデータ）が付加され、基準フレーム長を表す値だけトークンバケツ１０３がデクリメントされる。また、出力フレームの長さが基準フレーム長以上であるときは、出力フレームに無効区間が付加されることはなく、実フレーム長を表す値だけトークンバケツ１０３がデクリメントされる。
【００６９】
但し、第３の実施形態では、出力フレームの長さが基準フレーム長よりも短いときは、Ｓ１１の後に、Ｓ２１において、実フレーム長と基準フレーム長との差分に対応する個数のトークンがキャッシュバケツ３０１に格納される。すなわち、実フレーム長と基準フレーム長との差分を表す値だけキャッシュバケツ３０１がインクリメントされる。
【００７０】
また、第１および第２の実施形態では、トークンバケツ１０３にトークンが残っていないとき（すなわち、トークンバケツ１０３の値がゼロ以下であるとき）は、バッファ制御部１０２はフレームバッファ１０１からフレームを読み出すことはない。これに対して第３の実施形態では、トークンバケツ１０３にトークンが残っていないときであっても、Ｓ２２〜Ｓ２３の条件が満たされるときは、バッファ制御部１０２はフレームバッファ１０１からフレームを読み出すことができる。よって、トークンバケツ１０３にトークンが残っていないときは（Ｓ１：Ｎｏ）、帯域制御装置３００の処理はＳ２２へ移動する。
【００７１】
Ｓ２２において、バッファ制御部３０３は、フレームバッファ１０１の先頭に格納されているフレームの長さ（以下、次フレーム長）が基準フレーム長であるか否か判定する。そして、次フレーム長が基準フレーム長以上であれば、バッファ制御部３０３の処理はＳ２３へ進む。一方、次フレーム長が基準フレーム長よりも短いときは、バッファ制御部３０３の処理はＳ１へ戻る。
【００７２】
Ｓ２３において、バッファ制御部３０３は、キャッシュバケツ３０１に残っているトークンの個数に対応するフレーム長（以下、キャッシュフレーム長）と次フレーム長とを比較する。そして、キャッシュフレーム長が次フレーム長以上であるときは、バッファ制御部３０３の処理はＳ２４へ進む。すなわち、フレームバッファ１０１の先頭に格納されているフレームの長さに対して、キャッシュバケツ３０１に十分な数のトークンが格納されているときは、Ｓ２４〜Ｓ２５の処理が実行される。なお、キャッシュフレーム長が次フレーム長よりも短いときは、バッファ制御部３０３の処理はＳ１へ戻る。すなわち、フレームバッファ１０１の先頭に格納されているフレームの長さに対して、キャッシュバケツ３０１に十分な数のトークンが格納されていないときは、バッファ制御部３０３はフレームバッファ１０１からフレームを読み出さない。
【００７３】
Ｓ２４において、バッファ制御部３０３は、フレームバッファ１０１の先頭に格納されているフレームを読み出して出力する。このとき、バッファ制御部３０３は、このフレームの末尾に無効区間を付加する必要はない。そして、Ｓ２５において、トークン制御部３０２は、実フレーム長（すなわち、フレームバッファ１０１から読み出されたフレームの長さ）を表す値だけキャッシュバケツ３０１をデクリメントする。なお、Ｓ２５の実フレーム長は、Ｓ２２およびＳ２３の次フレーム長と同じである。
【００７４】
このように、第３の実施形態では、出力フレームの長さが基準フレーム長よりも短いときは、基準フレーム長を表す値だけトークンバケツ１０３がデクリメントされる。すなわち、出力フレームの長さが基準フレーム長よりも短いときは、トークンバケツ１０３は、実フレーム長よりも長い基準フレーム長を表す値だけデクリメントされる。そして、この場合、トークン制御部３０２は、実フレーム長と基準フレーム長との差分を表す値だけキャッシュバケツ３０１をインクリメントする。
【００７５】
また、トークンバケツ１０３にトークンが残っていないときであっても、バッファ制御部３０３は、所定の条件の下でフレームバッファ１０１からフレームを読み出すことができる。具体的には、トークンバケツ１０３の値がゼロ以下であっても、下記の２つの条件が満たされているときは、バッファ制御部３０３はフレームバッファ１０１からフレームを読み出す。
（１）フレームバッファ１０１の先頭に格納されているフレームの長さ（即ち、次フレーム長）が基準フレーム長以上である。
（２）キャッシュバケツ３０１に残っているトークンの個数に対応するフレーム長が次フレーム長以上である。
【００７６】
ここで、第１〜第２の実施形態と第３の実施形態とを比較する。第１の実施形態では、実フレーム長が基準フレーム長より短いときであっても、トークンバケツ１０３は実フレーム長を表す値だけデクリメントされる。また、第２の実施形態では、実フレーム長が基準フレーム長よりも短いときは、トークンバケツ１０３は基準フレーム長を表す値だけデクリメントされる。すなわち、第１の実施形態と比較すると、第２の実施形態では、トークンバケツ１０３が「より大きく」デクリメントされる。
【００７７】
第３の実施形態では、第１の実施形態と第２の実施形態との間の「差分」がキャッシュバケツ３０１に格納される。すなわち、実フレーム長と基準フレーム長との差分を表す値だけキャッシュバケツ３０１がインクリメントされる。そして、キャッシュバケツ３０１に格納されたトークンは、上述の条件（１）及び（２）が満たされるときに使用される。すなわち、第３の実施形態の帯域制御は、無効区間を消費帯域として処理するか否かという観点において、第１の実施形態と第２の実施形態との中間に位置する。
【００７８】
また、第２の実施形態では、あるユーザの短フレームに対して無効区間が設けられたときに、その無効区間は、そのユーザの消費帯域としてカウントされる。このため、第２の実施形態では、短フレームが多いトラヒックに対しては、許容帯域に対して実際の送信データレートが十分に得られないおそれがある。これに対して第３の実施形態では、あるユーザの短フレームに対して無効区間が設けられたときに、その無効区間に相当するトークンがキャッシュバケツ３０１に格納される。そして、キャッシュバケツ３０１に格納されたトークンは、このユーザの他のフレームを送信するために使用される。すなわち、短フレームを送信する際に余分にカウントされた帯域が、他のフレームを送信するために利用される。したがって、第３の実施形態の帯域制御方法によれば、トークンバケツ１０３を利用して指定した送信データレートを保証することができる。
【００７９】
なお、バッファ制御部３０３およびトークン制御部３０２は、例えば、図１０に示すフローチャートの処理を行うハードウェア回路により実現される。或いは、バッファ制御部３０３およびトークン制御部３０２は、図１０に示すフローチャートの処理を記述したプログラムをプロセッサで実行することにより実現してもよい。さらに、バッファ制御部３０３およびトークン制御部３０２は、ハードウェア回路およびソフトウェアの組合せで実現してもよい。
【００８０】
図１１は、第３の実施形態における帯域制御の一例を示す。この例では、時刻Ｔ１１においてフレームバッファ１０１から読み出される出力フレームの長さＬ３は、基準フレーム長よりも短い。この場合、トークンバケツ１０３は、基準フレーム長を表す値だけデクリメントされる。このとき、トークンバケツ１０３から「余分に」取り出されたトークンがキャッシュバケツ３０１に格納される。すなわち、キャッシュバケツ３０１は、基準フレーム長と長さＬ３との差分（図１１では、ΔＬ）だけインクリメントされる。同様に、時刻Ｔ１２においても、キャッシュバケツ３０１はインクリメントされている。
【００８１】
時刻Ｔ１３においてフレームバッファ１０１から読み出される出力フレームの長さは、基準フレーム長よりも長い。この場合、トークンバケツ１０３は、実フレーム長を表す値だけデクリメントされる。一方、キャッシュバケツ３０１の値は、そのまま維持される。同様に、時刻Ｔ１４においても、トークンバケツ１０３は、実フレーム長を表す値だけデクリメントされる。
【００８２】
時刻Ｔ１５においては、トークンバケツ１０３の値は負である。ここで、時刻Ｔ１５においてフレームバッファ１０１の先頭に格納されているフレームの長さ（即ち、次フレーム長）が基準フレーム長以上であるものとする。また、キャッシュバケツ３０１に格納されているトークンの個数が基準フレーム長に対応するトークン数以上である。よって、この場合、バッファ制御部３０３は、フレームバッファ１０１の先頭に格納されているフレームを読み出して出力することができる。このとき、トークン制御部３０２は、実フレーム長（ここでは、次フレーム長）を表す値だけキャッシュバケツ３０１をデクリメントする。ただし、トークンバケツ１０３の値は、そのまま維持される。
【００８３】
＜第４の実施形態＞
第４の実施形態では、クラス毎に基準フレーム長が設定され、クラス毎に送信データレートおよび送信フレーム数の双方が制御される。
【００８４】
図１２は、第４の実施形態に係わる帯域制御装置の構成を示す。第４の実施形態の帯域制御装置４００は、図１２に示すように、フレームバッファ４０１、トークンバケツ１０３、基準フレーム長テーブル４０２−１〜４０２−ｎ、フレーム長補正部１０６、キャッシュバケツ３０１、トークン制御部３０２、バッファ制御部３０３を有する。なお、トークンバケツ１０３、フレーム長補正部１０６、キャッシュバケツ３０１、トークン制御部３０２、バッファ制御部３０３は、第３および第４の実施形態において実質的に同じである。また、帯域制御装置４００は、図１２に示していない他の要素を有していてもよい。
【００８５】
フレームバッファ４０１は、受信フレームをクラス毎に格納する。クラスは、この例では、ＶＬＡＮタグ内の優先度（Priority）ビットで識別される。即ち、フレームバッファ４０１は、各フレームの優先度ごとに受信フレームを格納することができる。また、基準フレーム長テーブル４０２−１〜４０２−ｎには、それぞれ、各クラスに対して指定された基準フレーム長が登録されている。即ち、第４の実施形態では、ＶＬＡＮタグで指定される各ユーザの優先度に対して基準フレーム長が設定される。
【００８６】
１つの実施例としては、優先度の高いＶＬＡＮユーザに対して使用される基準フレーム長は短い。そうすると、このユーザのフレームに対して無効区間が付加されにくくなる。よって、優先度の高いＶＬＡＮユーザの送信フレーム数は、抑制されにくくなる。一方、優先度の低いＶＬＡＮユーザに対して使用される基準フレーム長は長い。そうすると、このユーザのフレームに対して無効区間が付加されやすくなる。したがって、優先度の低いＶＬＡＮユーザの送信フレーム数は抑制されやすくなる。このような構成とすれば、優先度の低いフレームのバーストが抑制され、優先度の高いユーザのトラヒックがバースト性を有していても、コンピュータ資源（例えば、フレーム処理部１１０）はそのユーザのフレームを処理することができる。
【００８７】
なお、フレーム処理部１１０で実行される処理ステップの数は、ネットワークアプリケーションまたはサービスアプリケーションに依存する。したがって、クラス毎に基準フレーム長を設定するかわりに、アプリケーション毎に基準フレーム長を設定してもよい。例えば、フレーム処理部１１０で実行される処理ステップの数が多いアプリケーションに対して長い基準フレーム長が与えられる。このような設定とすれば、フレーム処理部１１０の負荷が効率的に削減され、伝送装置の処理能力が向上する。
【００８８】
このように、第４の実施形態によれば、全体として送信データレートを制御しながら、任意のグループ（優先度、アプリケーションなど）毎に送信フレーム数の制御を行うことができる。なお、図１２に示す帯域制御装置は、図９に示す構成をベースにしているが、第４の実施形態の帯域制御は、図４に示す構成をベースにして実現してもよい。
【００８９】
＜他の実施形態＞
上述した第１〜第４の実施形態の帯域制御装置は、トークンバケツ１０３を利用して送信データレートおよび送信フレーム数を制御する。これに対して図１３に示す帯域制御装置５００は、量的トークンバケツ５０１および量的トークン制御部５０２を利用して送信データレートを制御し、数的トークンバケツ５０３および数的トークン制御部５０４を利用して送信フレーム数を制御する。なお、量的トークンバケツ５０１および量的トークン制御部５０２は、例えば、第１の実施形態のトークンバケツ１０３およびトークン制御部１０４と同様に動作する。また、数的トークンバケツ５０３は、所定のレートでインクリメントされ、フレームバッファ１０１からフレームが読み出されたときに１だけデクリメントされる。
【００９０】
ただし、図１３に示す帯域制御装置５００においては、各ユーザに対して量的トークンバケツ５０１、量的トークン制御部５０２、数的トークンバケツ５０３、数的トークン制御部５０４を設ける必要がある。これに対して、図４に示す帯域制御装置１００は、送信フレーム数を制御するための回路（図１３では、数的トークンバケツ５０３および数的トークン制御部５０４）を設けることなく、送信フレーム数を制御することができる。よって、図１３に示す構成と比較して、図４に示す構成によれば、回路規模が小さくなり、伝送装置のコストを削減することができる。
【００９１】
図９に示す帯域制御装置３００は、図４に示す構成に加えて、キャッシュバケツ３０１を有する。ただし、キャッシュバケツ３０１は、トークンバケツ１０３によって余計にカウントされたトークンを一時的に格納するために設けられている。このため、図１３に示す量的トークンバケツ５０１または数的トークンバケツ５０３と比較して、キャッシュバケツ３０１の回路規模を小さくするこが可能である。これに加えて、キャッシュバケツ３０１には、所定のレートでトークンを供給する処理は行われない。よって、図１３に示す構成と比較して、図４に示す構成によっても、回路規模が小さくなり、伝送装置のコストを削減することができる。
【００９２】
以上記載した各実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
第１のカウンタと、
指定されたレートで前記第１のカウンタをインクリメントするカウンタ制御部と、
受信フレームを格納するフレームバッファと、
前記第１のカウンタの値が所定の閾値よりも大きいときに、前記フレームバッファからフレームを読み出して出力するバッファ制御部と、を有し、
前記バッファ制御部により前記フレームバッファから読み出された出力フレームの長さが指定された基準フレーム長よりも短いときは、前記カウンタ制御部は、前記基準フレーム長を表す値だけ前記第１のカウンタをデクリメントし、
前記出力フレームの長さが前記基準フレーム長以上であるときは、前記カウンタ制御部は、前記出力フレームの長さを表す値だけ前記第１のカウンタをデクリメントする
ことを特徴とする伝送装置。
（付記２）
前記出力フレームの長さが前記基準フレーム長よりも短いときは、前記バッファ制御部は、前記出力フレームに対して割り当てられる区間の後に、前記出力フレームの長さと前記基準フレーム長との差分に対応する時間だけ、前記フレームバッファから次のフレームを読み出す処理を禁止する無効区間を設ける
ことを特徴とする付記１に記載の伝送装置。
（付記３）
前記出力フレームの長さが前記基準フレーム長よりも短いときに、前記出力フレームの長さが前記基準フレーム長になるように前記出力フレームを補正するフレーム長補正部をさらに有する
ことを特徴とする付記１に記載の伝送装置。
（付記４）
第２のカウンタをさらに有し、
前記出力フレームの長さが前記基準フレーム長よりも短いときは、前記カウンタ制御部は、前記出力フレームの長さと前記基準フレーム長との差分を表す値だけ前記第２のカウンタをインクリメントし、
前記第１のカウンタの値が前記閾値以下であり、且つ、前記フレームバッファの先頭に格納されている先頭フレームの長さが前記基準フレーム長以上であり、且つ、前記第２のカウンタの値が前記先頭フレームの長さを表す値以上であるときは、
前記バッファ制御部は、前記フレームバッファから前記先頭フレームを読み出して出力し、
前記カウンタ制御部は、前記先頭フレームの長さを表す値だけ前記第２のカウンタをデクリメントする
ことを特徴とする付記１に記載の伝送装置。
（付記５）
前記フレームバッファは、送信元ユーザ毎に受信フレームを格納する構成であり、
前記基準フレーム長は、前記ユーザ毎に指定される
ことを特徴とする付記１〜４のいずれか１つに記載の伝送装置。
（付記６）
前記フレームバッファは、各フレームの優先度ごとに受信フレームを格納する構成であり、
前記基準フレーム長は、前記優先度に応じて指定される
ことを特徴とする付記１〜４のいずれか１つに記載の伝送装置。
（付記７）
前記優先度が高いほど長い基準フレーム長が指定される
ことを特徴とする付記６に記載の伝送装置。
（付記８）
前記フレームバッファは、各フレームに格納されているデータに関連するアプリケーション毎に受信フレームを格納する構成であり、
前記基準フレーム長は、前記アプリケーション毎に指定される
ことを特徴とする付記１〜４のいずれか１つに記載の伝送装置。
（付記９）
カウンタと、
指定されたレートで前記カウンタをインクリメントするカウンタ制御部と、
受信フレームを格納するフレームバッファと、
前記カウンタの値が所定の閾値よりも大きいときに、前記フレームバッファからフレームを読み出して出力するバッファ制御部と、を有し、
前記カウンタ制御部は、前記バッファ制御部により前記フレームバッファから読み出された出力フレームの長さに基づいて決まる値だけ前記カウンタをデクリメントし、
前記出力フレームの長さが前記基準フレーム長よりも短いときは、前記バッファ制御部は、前記出力フレームに対して割り当てられる区間の後に、前記出力フレームの長さと前記基準フレーム長との差分に対応する時間だけ、前記フレームバッファから次のフレームを読み出す処理を禁止する無効区間を設ける
ことを特徴とする伝送装置。
（付記１０）
受信フレームを格納するフレームバッファを有する伝送装置においてフレームの送信を制御する伝送方法であって、
指定されたレートでカウンタをインクリメントし、
前記カウンタの値が所定の閾値よりも大きいときに、前記フレームバッファからフレームを読み出して出力し、
前記フレームバッファから読み出された出力フレームの長さが指定された基準フレーム長よりも短いときに、前記基準フレーム長を表す値だけ前記カウンタをデクリメントし、
前記出力フレームの長さが前記基準フレーム長以上であるときに、前記出力フレームの長さを表す値だけ前記カウンタをデクリメントする
ことを特徴とする伝送方法。
【符号の説明】
【００９３】
１  伝送装置
１００、３００、４００  帯域制御装置
１０１、４０１  フレームバッファ
１０２、３０３  バッファ制御部
１０３  トークンバケツ
１０４、３０２  トークン制御部
１０５  基準フレーム長テーブル
１０６  フレーム長補正部
３０１  キャッシュバケツ
４０２−１〜４０２−ｎ  基準フレーム長テーブル
【図１】
2015177215.tif 000003
【図２】
2015177215.tif 000004
【図３】
2015177215.tif 000005
【図４】
2015177215.tif 000006
【図５】
2015177215.tif 000007
【図６】
2015177215.tif 000008
【図７】
2015177215.tif 000009
【図８】
2015177215.tif 000010
【図９】
2015177215.tif 000011
【図１０】
2015177215.tif 000012
【図１１】
2015177215.tif 000013
【図１２】
2015177215.tif 000014
【図１３】
2015177215.tif 000015