(57)【特許請求の範囲】
【請求項１】
複数のクラスを提供するパケット交換網に用いられるパケットスケジューリング装置であって、入力されるパケットをクラス別に蓄積する共有バッファ部と、各クラスに対応するトークン値と基準値とを用いてクラス毎にパケットの送信が認められるか否かを判定するトークン管理部と、該トークン管理部の判定結果を受けてパケット送信の対象となるクラスを決定するスケジューラ部と、該スケジューラ部が決定したクラスのパケットを前記共有バッファ部から読み出して送信する読み出し制御部とを備えたパケットスケジューリング装置において、
前記トークン管理部は、各クラスに対応する前記トークン値を、パケット長のバイト量と各クラスに応じて設定された重みとを用いて「バイト量／重み」で管理し、
前記読み出し制御部から通知された出力クラス番号及び出力パケット長に応じて、前記出力クラス番号が示すクラスに対応するトークン値から、前記出力パケット長および前記クラスに設定された重みを用いて算出したトークン値を減算するトークン減算回路と、
前記スケジューラ部からのトークン加算要求に応じて、前記クラスに共通して用いる前記基準値を、全てのクラスからのパケット送出が認められる判定が出せる値に減算設定するトークン加算回路と
を備えることを特徴とするパケットスケジューリング装置。
【請求項２】
複数のクラスを提供するパケット交換網のパケットスケジューリング装置に用いられ、スケジューラ部からのトークン加算要求に応じて各クラスに対応するトークン値を各クラスの重みに応じて増加させ、読み出し制御部からの通知に応じて送信されたパケットが属するクラスに対応するトークン値を送信したパケットのパケット長に応じて減少させるトークン管理部において、
各クラスに対応し、パケット長のバイト量と各クラスに応じて設定された重みを用いて「バイト量／重み」で管理するトークン値を記憶するパラメータメモリと、
前記読み出し制御部から通知された出力クラス番号及び出力パケット長に応じて、前記出力クラス番号が示すクラスの前記トークン値を前記パラメータメモリから読み出し、読み出したトークン値から前記出力パケット長および前記クラスに設定された重みを用いて算出したトークン値を減算して新たなトークン値として前記パラメータメモリに書き込むとともに、前記新たなトークン値と基準値との比較結果に基づいて当該クラスに対応する第１の送信許可ビット更新要求を行うトークン減算回路と、
前記スケジューラ部からのトークン加算要求に応じて、前記クラスに共通して用いる前記基準値を、全てのクラスからのパケット送出が認められる判定が出せる値に減算設定し、全てのクラスに対応する第２の送信許可ビット更新要求を行うトークン加算回路と、
前記第１の送信許可ビット更新要求及び前記第２の送信許可ビット更新要求を受けて、各クラスのパケット送信が認められるか否かを表す送信許可ビット列を生成する送信許可ビット更新回路とを有することを特徴とするトークン管理部。
【請求項３】
請求項２のトークン管理部において、
所定の周期で前記パラメータメモリに記憶されている各クラスのトークン値を呼び出して、クラス毎に設定されている最大トークン量に基づいてタイムアウト判定をおこない、タイムアウトと判定した場合に、前記トークン値に関連付けてタイムアウトフラグを前記パラメータメモリに記憶させるタイムアウト監視回路を設け、
前記トークン減算回路は、読み出したトークン値にタイムアウトフラグが関連付けられている場合には、その値を前記最大トークン量に基づいて決まる値に変更した後、変更されたトークン値から前記出力パケット長および前記クラスに設定された重みを用いて算出したトークン値を減算して新たなトークン値とするようにしたことを特徴とするトークン管理部。
【請求項４】
請求項２のトークン管理部において、
前記スケジューラ部からのトークン加算要求があったとき、各クラスに対応する最大トークンフラグのうち前記送信許可ビット列が送信許可を示すクラスについてオンし、前記トークン減算回路からの要求に応じて要求されたクラスに対応する最大トークンフラグをオフする最大トークンフラグ更新回路を設け、
前記トークン減算回路は、全てのクラスに共通の最大トークン量を保持するとともに、前記最大トークンフラグ更新回路に保持された最大トークンフラグのうち前記読み出し制御部から通知された出力クラス番号が示すクラスに対応する最大トークンフラグを参照し、最大トークンフラグがオンの場合は読み出したトークン値を所定の値に変更し、変更されたトークン値から前記出力パケット長および前記クラスに設定された重みを用いて算出したトークン値を減算して新たなトークン値とするようにしたことを特徴とするトークン管理部。
【請求項５】
入力されるパケットをクラス別に蓄積するための共有バッファ部と、各クラスに対応するトークンを用いてクラス毎にパケットの送信が認められるか否かを判定するトークン管理部と、該トークン管理部の判定結果を受けてパケット送信を行うクラスを決定するスケジューラ部とを備えたパケットスケジューリング装置を用いたパケットスケジューリング方法において、
前記トークンの単位を「バイト量／重み」とすることによって、全クラスのトークンに各クラスの重みに応じたトークンをそれぞれ追加する処理を、同一量のトークンを追加することにより行えるようにしたことを特徴とするパケットスケジューリング方法。
【請求項６】
前記トークン管理部が、前記トークンの値が基準値以上の場合にパケットの送信を認め、前記トークンの値が基準値を下回る場合にパケットの送信を認めないと判定する請求項５のパケットスケジューリング方法において、前記基準値を所定量減少させることによって、全クラスのトークンに各クラスの重みに応じたトークンをそれぞれ追加する処理を不要にしたことを特徴とするパケットスケジューリング方法。
【請求項７】
請求項６のパケットスケジューリング方法において、前記トークン管理部が、所定の条件を満たす場合に前記基準値を前記所定量減少させ、前記パケットが送信されたとき、送信されたパケットが属するクラスに対応するトークンを当該パケットのパケット長をそのクラスの重みで除算した量だけ減少させることを特徴とするパケットスケジューリング方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケットスケジューリング装置及び方法に関し、特に、パケットをクラス別パケットキューに蓄積するパケットスケジューリング装置及び方法に関する。
【０００２】
【従来の技術】
パケット交換の分野では、網が保証する通信品質（ＱＯＳ：Quality of Service）を「クラス」（優先クラス又はサービスクラス）と呼ばれる複数の段階又は種類に分けることが行われている。パケット交換網は、優先度の高いクラスに属するパケットの転送には広い帯域を割り当て、優先度の低いクラスに属するパケットを転送には、狭い帯域を割り当てるなどして、その通信品質をクラス毎に保証する。
【０００３】
各クラスに対してそれぞれ異なる通信品質を保証するため、パケット交換網の各パケット交換機は、受け取ったパケットの転送順序を決定するパケットスケジューリング装置を有している。従来のパケットスケジューリング装置を図９に示す。
【０００４】
図９のパケットスケジューリング装置は、重み付き回転優先（ＷＲＲ：Weighted Round Robin）スケジューリング方式を採用する装置である。このＷＲＲパケットスケジューリング方式には、受け取ったパケットのソーティングが不要であり、各クラス毎に最大転送帯域を設定でき、いずれかのクラスに属するパケットの転送を連続的に行うといった問題が無い（フェアネス特性が良好である）、という特長がある。
【０００５】
以下、図９のパケットスケジューリング装置について詳細に説明する。
【０００６】
図９のパケットスケジューリング装置は、共有バッファ部１、書き込み制御部２、読み出し制御部３、キュー長管理部４、スケジューラ部５、トークン管理部６より構成される。
【０００７】
共有バッファ部１は、クラス＃１〜＃Ｎにそれぞれ対応するＮ個のパケットキューを有している。
【０００８】
書き込み制御部２は、パケットを受信すると、受信したパケットのヘッダフィールドに格納された情報に基づいて、そのパケットが属するクラスの識別を行う。そして、書き込み制御部２は、識別結果に基づき、共有バッファ部１の該当するクラスのパケットキューに対して受信したパケットの書き込みを行う。また、書き込み制御部２は、受信したパケットのクラス及びパケット長等の所定の情報をパケット書き込み情報としてキュー長管理部４に通知する。
【０００９】
読み出し制御部３は、スケジューラ部５から出力クラス番号（ＯＣ）を用いて要求されたクラスのパケットキューから先頭のパケットを読み出し、読み出したパケットを外部へ出力する。また、読み出し制御部３は、読み出したパケットのパケット長（ＰＬ）を、スケジューラ５からの出力クラス番号（ＯＣ）とともにトークン管理部６へ出力する。さらに、読み出し制御部３は、読み出したパケットのクラス番号及びパケット長等の所定の情報をパケット読み出し情報としてキュー長管理部４に通知する。
【００１０】
キュー長管理部４は、書き込み制御部２からのパケット書き込み情報と読み出し制御部３からのパケット読み出し情報を用いて、パケットキュー毎に、そこに格納されているパケット数及びパケット長を管理する。そして、キュー長管理部４は、各パケットキューに送信可能なパケットが存在するか否かを示す有効パケットビット列（ＶＳ）をスケジューラ部５に出力する。なお、有効パケットビット列（ＶＳ）は、Ｎビットのビット列信号であって、各ビットはパケットキューに１対１で対応する。即ち、有効パケットビット列は、対応するパケットキューに送信可能なパケットが存在するビットは、「１」、存在しないビットは、「０」となる。
【００１１】
スケジューラ部５は、キュー長管理部４より入力される有効パケットビット列（ＶＳ）と、トークン管理部６より入力される送信許可ビット列（ＳＳ）とに基づいて、次に送信すべきパケットが属するクラスを決定し、上述した出力クラス番号（ＯＣ）として読み出し制御部３に出力する。ここで、送信許可ビット列（ＳＳ）は、Ｎビットのビット列信号であり、各ビットはクラスに１対１に対応する。即ち、トークン管理部６が送信を許可しているクラスに対応するビットは、「１」となり、送信を禁止しているクラスに対応するビットは、「０」となっている。そして、スケジューラ部５は、有効パケットビット列（ＶＳ）及び送信許可ビット列が共に「１」であるクラスのうちから、ラウンドロビン的に１つのクラスを選択して、出力クラス番号を決定する。
【００１２】
スケジューラ部５は、また、所定の条件を満たす場合に、トークン加算要求をトークン管理部６に通知する。ここで、所定の条件とは、スケジューラ部５の動作を規定するアルゴリズムに依存するが、代表的なものとして以下の二つがある。
【００１３】
一つは、送信すべきパケットが存在しない場合である。すなわち、有効パケットビット列（ＶＳ）と送信許可ビット列の双方が「１」を示すクラスが存在しない場合である。送信すべきパケットが存在しない場合にトークン加算要求をトークン管理部６に通知するパケットスケジューリング装置では、クラス毎に設定した帯域比に従ってパケットの転送を行うことが可能である。この場合、あるクラスの入力トラフィック量が少ないとき、残余帯域は、他のクラスのパケットを転送するために他のクラスの帯域比に従って利用される。
【００１４】
もう一つは、予め設定された時間が経過した場合である。この場合、スケジューラ部５は、トークン管理部６に一定周期でトークンの加算要求を行う。一定周期毎にトークン加算要求をトークン管理部６に通知するパケットスケジューリング装置では、クラス毎に最大転送レートを設定することが可能である。これは、ラウンドロビンスケジューラで制御されるクラス（パケットキュー）以外に、ベストエフォート用のクラスのパケットを取り扱う場合に有効である。
【００１５】
トークン管理部６は、クラス毎にトークンの管理を行う。即ち、トークン管理部６は、スケジューラ部５からトークン加算要求があったとき、各クラスに対応するトークン量に、クラス毎に予め設定された重みによって重み付けされ加算トークン量をそれぞれ加える。また、トークン管理部６は、読み出し制御部３から出力クラス番号とパケット長の通知を受けると、該当するクラスのトークン量からパケット長に相当する分の減算量を減算する。そして、トークン管理部６は、各クラスのトークン量を基準値と比較し、対応するビットを、トークン量が基準値以上の場合には「１」、基準値を下回る場合には「０」とした送信許可ビット列を生成する。
【００１６】
図１０を参照して、トークン管理部６についてより詳細に説明する。
【００１７】
トークン管理部６は、各クラス毎のトークン加減算回路７−１，７−２，７−３，７−４，…，７−Ｎと、こららトークン加減算回路７−１〜７−Ｎに接続された送信許可ビット更新回路８を有している。
【００１８】
トークン加減算回路７−１〜７−Ｎの各々は、トークン量（変数）、加算トークン量、最大トークン量をパラメータとして記憶保持している。なお、加算トークン量及び最大トークン量は、クラス毎に予め設定される。
【００１９】
トークン加減算回路７−１〜７−Ｎの各々は、スケジューラ部５よりトークン加算要求が入力されると、トークン量に加算トークン量を加える。ただし、加算結果が最大トークン量を超えた場合は、トークン量を最大トークン量に設定する。
【００２０】
また、トークン加減算回路７−１〜７−Ｎの各々は、読み出し制御部３から通知された出力クラス番号が、自身が担当するクラスである場合には、同時に読み出し制御部３から通知されたパケット長に相当する分の減算量をトークン量より減算する。
【００２１】
そして、トークン加減算回路７−１〜７−Ｎの各々は、加算の結果又は減算の結果、トークン量が“０”以上になると、該当クラスの送信許可ビットが「１」になるように送信許可フラグ更新回路８に対して要求し、トークン量が“０”未満になると、該当クラスの送信許可ビットが「０」になるように送信許可フラグ更新回路８に対して要求する。
【００２２】
送信許可フラグ更新回路８は、各クラスに対応する送信許可フラグを有し、トークン加減算回路７−１〜７−Ｎからの要求に応じて、その値を「１」又は「０」に変更する。送信許可フラグ更新回路８におけるフラグの内容は、送信許可ビット列としてスケジューラ５へ出力される。
【００２３】
以上のようにして、従来のパケットスケジューリング装置は、クラス分けされたパケットを、各クラスにそれぞれ対応する通信品質を保証するように転送することができる。
【００２４】
【発明が解決しようとする課題】
従来のパケットスケジューリング装置では、トークン量を格納するためのトークンレジスタと、トークン加減算処理を実行するための加減算回路をクラス毎に設ける必要があるため、クラス数を増やそうとすると回路規模が増大する。このため、従来のパケットスケジューリング装置は、実際に実現可能な最大クラス数が１０クラス程度に制限されるという問題点がある。
【００２５】
そこで、本発明は、ＷＲＲスケジューリング方式の特長を生かしながら、回路規模を大きく増大させることなく、数１００クラスを実現することができるパケットスケジューリング装置及び方法を提供することを目的とする。
【００２６】
なお、ＷＲＲスケジューリング方式を採用するパケットスケジューリング装置としては、特開平１０−２００５３２号公報や特開平２００１−５３８０７号公報に記載されたものもある。しかしながら、これらのパケットスケジューリング装置も、上述した従来のパケットスケジューリング装置と同様に、クラスを増やそうとすると回路規模が大きくなるという問題点を有している。
【００２７】
【課題を解決するための手段】
本発明によれば、複数のクラスを提供するパケット交換網に用いられるパケットスケジューリング装置であって、入力されるパケットをクラス別に蓄積する共有バッファ部と、各クラスに対応するトークン値と基準値とを用いてクラス毎にパケットの送信が認められるか否かを判定するトークン管理部と、該トークン管理部の判定結果を受けてパケット送信の対象となるクラスを決定するスケジューラ部と、該スケジューラ部が決定したクラスのパケットを前記共有バッファ部から読み出して送信する読み出し制御部とを備えたパケットスケジューリング装置において、前記トークン管理部は、各クラスに対応する前記トークン値を、パケット長のバイト量と各クラスに応じて設定された重みとを用いて「バイト量／重み」で管理し、前記読み出し制御部から通知された出力クラス番号及び出力パケット長に応じて、前記出力クラス番号が示すクラスに対応するトークン値から、前記出力パケット長および前記クラスに設定された重みを用いて算出したトークン値を減算するトークン減算回路と、前記スケジューラ部からのトークン加算要求に応じて、前記クラスに共通して用いる前記基準値を、全てのクラスからのパケット送出が認められる判定が出せる値に減算設定するトークン加算回路とを備えることを特徴とするパケットスケジューリング装置が得られる。
【００３０】
また、本発明によれば、複数のクラスを提供するパケット交換網のパケットスケジューリング装置に用いられ、スケジューラ部からのトークン加算要求に応じて各クラスに対応するトークン値を各クラスの重みに応じて増加させ、読み出し制御部からの通知に応じて送信されたパケットが属するクラスに対応するトークン値を送信したパケットのパケット長に応じて減少させるトークン管理部において、各クラスに対応し、パケット長のバイト量と各クラスに応じて設定された重みを用いて「バイト量／重み」で管理するトークン値を記憶するパラメータメモリと、前記読み出し制御部から通知された出力クラス番号及び出力パケット長に応じて、前記出力クラス番号が示すクラスの前記トークン値を前記パラメータメモリから読み出し、読み出したトークン値から前記出力パケット長および前記クラスに設定された重みを用いて算出したトークン値を減算して新たなトークン値として前記パラメータメモリに書き込むとともに、前記新たなトークン値と基準値との比較結果に基づいて当該クラスに対応する第１の送信許可ビット更新要求を行うトークン減算回路と、前記スケジューラ部からのトークン加算要求に応じて、前記クラスに共通して用いる前記基準値を、全てのクラスからのパケット送出が認められる判定が出せる値に減算設定し、全てのクラスに対応する第２の送信許可ビット更新要求を行うトークン加算回路と、前記第１の送信許可ビット更新要求及び前記第２の送信許可ビット更新要求を受けて、各クラスのパケット送信が認められるか否かを表す送信許可ビット列を生成する送信許可ビット更新回路とを有することを特徴とするトークン管理部が得られる。
【００３１】
また、本発明によれば、第１のトークン管理部において、所定の周期で前記パラメータメモリに記憶されている各クラスのトークン値を呼び出して、クラス毎に設定されている最大トークン量に基づいてタイムアウト判定をおこない、タイムアウトと判定した場合に、前記トークン値に関連付けてタイムアウトフラグを前記パラメータメモリに記憶させるタイムアウト監視回路を設け、前記トークン減算回路は、読み出したトークン値にタイムアウトフラグが関連付けられている場合には、その値を前記最大トークン量に基づいて決まる値に変更した後、変更されたトークン値から前記出力パケット長および前記クラスに設定された重みを用いて算出したトークン値を減算して新たなトークン値とするようにしたことを特徴とする第２のトークン管理部が得られる。
【００３２】
さらに、本発明によれば、第１のトークン管理部において、前記スケジューラ部からのトークン加算要求があったとき、各クラスに対応する最大トークンフラグのうち前記送信許可ビット列が送信許可を示すクラスについてオンし、前記トークン減算回路からの要求に応じて要求されたクラスに対応する最大トークンフラグをオフする最大トークンフラグ更新回路を設け、前記トークン減算回路は、全てのクラスに共通の最大トークン量を保持するとともに、前記最大トークンフラグ更新回路に保持された最大トークンフラグのうち前記読み出し制御部から通知された出力クラス番号が示すクラスに対応する最大トークンフラグを参照し、最大トークンフラグがオンの場合は読み出したトークン値を所定の値に変更し、変更されたトークン値から前記出力パケット長および前記クラスに設定された重みを用いて算出したトークン値を減算して新たなトークン値とするようにしたことを特徴とする第３のトークン管理部が得られる。
【００３３】
さらにまた、本発明によれば、入力されるパケットをクラス別に蓄積するための共有バッファ部と、各クラスに対応するトークンを用いてクラス毎にパケットの送信が認められるか否かを判定するトークン管理部と、該トークン管理部の判定結果を受けてパケット送信を行うクラスを決定するスケジューラ部とを備えたパケットスケジューリング装置を用いたパケットスケジューリング方法において、前記トークンの単位を「バイト量／重み」とすることによって、全クラスのトークンに各クラスの重みに応じたトークンをそれぞれ追加する処理を、同一量のトークンを追加することにより行えるようにしたことを特徴とする第１のパケットスケジューリング方法が得られる。
【００３４】
また、本発明によれば、前記トークン管理部が、前記トークンの値が基準値以上の場合にパケットの送信を認め、前記トークンの値が基準値を下回る場合にパケットの送信を認めないと判定する第１のパケットスケジューリング方法において、前記基準値を所定量減少させることによって、全クラスのトークンに各クラスの重みに応じたトークンをそれぞれ追加する処理を不要にしたことを特徴とする第２のパケットスケジューリング方法が得られる。
【００３５】
さらに、本発明によれば、第２のパケットスケジューリング方法において、前記トークン管理部が、所定の条件を満たす場合に前記基準値を前記所定量減少させ、前記パケットが送信されたとき、送信されたパケットが属するクラスに対応するトークンを当該パケットのパケット長をそのクラスの重みで除算した量だけ減少させることを特徴とする第３のパケットスケジューリング方法が得られる。
【００３６】
【作用】
従来のパケットスケジューリング装置では、トークン量の単位をパケットのサイズと同じ「バイト量」としていたが、本発明では、トークン量の単位をパケットのサイズを各クラスの重みで除した「バイト量／重み」とする。また、“トークン量＝トークン値−基準値”となる、トークン値及び基準値を規定する。ここで、トークン値は各クラス毎に定まる値、基準値は全クラスに共通の値である。
【００３７】
トークン加算要求があった場合は、各クラス毎にトークン値を変更するのではなく、基準値を所定量だけ減少させる。トークン量の単位が、「バイト量／重み」であるので、このように基準値を変更するだけで、各クラスの重みに応じたトークン加算処理を行うことができる。即ち、1つの減算回路で、クラス毎に設けていた複数の加算回路の代わりとすることができる。
【００３８】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００３９】
本発明の第１の実施の形態に係るパケットスケジュール装置は、トークン管理部を除いて従来のパケットスケジュール装置と同じである。従って、以下では、本実施の形態のパケットスケジュール装置に用いられるトークン管理部についてのみ説明する。
【００４０】
図１に、本発明の第１の実施の形態に係るパケットスケジュール装置に用いられるトークン管理部のブロック図を示す。
【００４１】
図１のトークン管理部は、パラメータメモリ１０、パラメータメモリアクセス回路１１、トークン減算回路１２、タイムアウト監視回路１３、トークン加算回路１４及び送信許可ビット更新回路１５より構成される。
【００４２】
パラメータメモリ１０は、クラス毎に、トークン値、重み、最大トークン量及びタイムアウトフラグの４つのパラメータを格納する。パラメータメモリ１０の格納内容（パラメータテーブル）の一例を図２に示す。
【００４３】
図２の例では、４つのクラスが規定されており、各クラスにはそれぞれ異なる重み及び最大トークン量が設定されている。トークン値及びタイムアウトフラグは、その時までのパケットスケジュール装置の動作結果として得られる変数又はフラグである。なお、本実施の形態におけるトークン値は、従来のトークン量とは異なるものである。即ち、従来のトークン量は、その単位を「バイト量」としていたが、本実施の形態におけるトークン値（及びトークン量）は、その単位を「バイト量／重み」としている。
【００４４】
図１に戻ると、パラメータメモリアクセス回路１１は、トークン減算回路１２及びタイムアウト監視回路１３の各々からの要求に従い、パラメータの書き込み及び読み出しを行う。
【００４５】
トークン減算回路１２は、読み出し制御部３（図９参照）から出力クラス番号とパケット長とを知らせる通知を受けると、通知されたクラスに対応するパラメータをパラメータメモリ１０から読み出すように、パラメータメモリアクセス回路１１に要求する。そして、パラメータメモリアクセス回路１１から読み出したパラメータを受け取ると、トークン減算回路１２は、そのパラメータに含まれるトークン値から、読み出し制御部３から通知されたパケット長分のトークンを減算する。ここで、パケット長分のトークンは、“パケット長／重み”に等しい。さらに、トークン減算回路１２は、パケット長分の減算トークン値を減算して得た更新されたトークン値をパラメータメモリ１０に書き込むよう、パラメータメモリアクセス回路１１に要求する。
【００４６】
また、トークン減算回路１２は、更新されたトークン値とトークン加算回路１４に記憶されている基準値とを比較する。更新されたトークン値が基準値より小さくなると、送信許可ビット更新回路１５に対して、送信許可ビットを「０」にするように要求する。換言すると、“トークン値−基準値＝トークン量”とした場合に、トークン量が負の値になると、送信許可ビット更新回路１５に対して、送信許可ビットを「０」にするように要求する。
【００４７】
トークン加算回路１４は、上述のように基準値を記憶している。そして、トークン加算回路１４は、スケジューラ５（図９参照）からの加算要求を受け取ると、基準値の値を所定量（加算基準量という）だけ減じる。ここで、加算基準量は、各クラスのトークン値がどの様な値であっても、減算後の新たな基準値を用いて判断すると全てのクラスについてパケット送信が許可されるように定められている。具体的には、加算基準量は、“パケットの最大長／重みの最小値”よりも大きい値に定められる。トークン加算回路１４は、基準値から加算基準量を減算したならば、全てのクラスについてパケット送信が許可になったとして、送信許可ビット更新回路１５に対して全クラスの送信許可ビットを「１」にするよう要求する。
【００４８】
タイムアウト監視回路１３は、パラメータメモリアクセス回路１１に対して、所定の周期で、順番に各クラスのパラメータを読み出すよう要求する。そして、タイムアウト監視回路１３は、パラメータメモリアクセル回路１１によって読み出されたパラメータに基づいて、各クラス毎にトークン値と“最大トークン量＋基準値”とを比較する。比較の結果、トークン値が“最大トークン量＋基準値”以下の場合、タイムアウト監視回路１３は、タイムアウトは発生していないと判断して、タイムアウトフラグを「０」（又はオフ）にする。一方、トークン値が“最大トークン量＋基準値”よりも大きい場合は、タイムアウト監視回路１３は、タイムアウトが発生していると判断して、タイムアウトフラグを「１」（又はオン）にする。
【００４９】
送信許可ビット更新回路１５は、トークン減算回路１２及びトークン加算回路１４からの要求に従って送信許可ビットを更新し、スケジューラ部５（図９参照）に出力する。
【００５０】
次に、図１のトークン管理部の動作について、図３乃至図５をも参照して説明する。
【００５１】
図１のトークン管理部は、大きく分けて３つの処理を実行する。１つは、スケジューラ部５よりトークン加算要求を受けた場合にトークンの加算処理を行うことである。もう１つは、読み出し制御部３より出力クラス番号及びパケット長の通知（トークン減算要求）を受けた場合に、該当するクラスのトークンの減算処理を行うことである。残りの１つは、パラメータメモリ１０に記憶されている各クラスのパラメータに順番にアクセスして、タイムアウト判定処理を行うことである。以下、トークン加算処理については図３を参照して、トークン減算処理については図４を参照して、タイムアウト判定処理については図５を参照して、説明する。
【００５２】
トークン加算処理は、トークン加算回路１４において、図３に示すように行われる。即ち、トークン加算回路１４は、トークン加算要求を受け取ると、まず、現在の基準値から加算基準量を減算して新たな基準値とする（ステップＳ３０１）。次に、トークン加算回路１４は、全クラスの送信許可ビットを「１」にするよう送信許可ビット更新回路１５に要求する。
【００５３】
トークン減算処理は、トークン減算回路１２において、図４に示すように行われる。即ち、トークン減算回路１２は、出力クラス番号及びパケット長の通知を受け取る（ステップＳ４０１）と、パラメータメモリアクセス回路１１を介して、通知されたクラスに対応するパラメータを読み出す（ステップＳ４０２）。そして、トークン減算回路１２は、タイムアウトフラグが「１」か否かチェックする（ステップＳ４０３）。タイムアウトフラグが「０」の場合、トークン減算回路１２は、トークン値と“最大トークン量＋基準値”とを比較する（ステップＳ４０４）。ステップＳ４０３においてタイムアウトフラグが「１」と判定された場合及びステップＳ４０４においてトークン値が“最大トークン量＋基準値”より大きい判断された場合は、トークン減算回路１２は、トークン値を“最大トークン量＋基準値”（＝最大トークン値）に変更する（ステップＳ４０５）。続いて、トークン減算回路１２は、トークン値から“通知されたパケット長／重み”を減算し（ステップＳ４０６）、タイムアウトフラグを「０」に設定し（ステップＳ４０７）、パラメータメモリアクセス回路１１を介して、更新したトークン値とタイムアウトフラグをパラメータメモリ１０に格納する（ステップＳ４０８）。最後に、トークン減算回路１２は、トークン値と基準値との比較を行い（ステップＳ４０９）、トークン値が基準値以上であれば、送信許可ビットを「１」に設定し、トークン値が基準値より小さければ送信許可ビットを「０」に設定するよう送信許可ビット更新回路１５に要求する（ステップＳ４１０及びＳ４１１）。
【００５４】
タイムアウト判定処理は、タイムアウト監視回路１３において、図５に示すように行われる。即ち、タイムアウト監視回路１３は、パラメータメモリアクセス回路１１を介して、タイムアウト判定対象クラスのパラメータの読み出しを行う（ステップＳ５０１）。ここで、タイムアウト判定対象クラスとなるのは、全てのクラスであるが、一時に呼び出されるのは、１つのクラスのパラメータである。即ち、１つのクラスについてタイムアウト監視処理を終了すると、次のクラスのタイムアウト監視処理を行うというように、所定の時間間隔で順次１クラスずつ処理が行われる。次に、タイムアウト監視回路１３は、タイムアウトフラグを見て（ステップＳ５０２）、タイムアウトフラグが「０」のときは、トークン値と“最大トークン量＋基準値”とを比較する（ステップＳ５０３）。トークン値が“最大トークン量＋基準値”よりも大きい場合は、タイムアウトと判定して、タイムアウトフラグを「１」にする（ステップＳ５０４）。ステップＳ５０２においてタイムアウトフラグが「１」であった場合、及びステップＳ５０４においてタイムアウトフラグが「１」に変更された場合、タイムアウト監視回路１３は、パラメータメモリアクセス回路１１を介してタイムアウト判定対象クラスのタイムアウトフラグを「１」にする（ステップＳ５０５）。また、ステップＳ５０３においてトークン値が“最大トークン量＋基準値”以下の場合、タイムアウト監視回路１３は、パラメータメモリアクセス回路１１を介してタイムアウト判定対象クラスのパラメータメモリ１０に格納されたタイムアウトフラグを「０」にする（ステップＳ５０５）。最後に、タイムアウト監視回路１３は、タイムアウト判定対象クラスを１つインクリメント（次のクラスに変更）し（ステップＳ５０６）、１つのタイムアウト判定対象クラスについてのタイムアウト判定処理を終了する。このあと、タイムアウト監視回路１３は、所定時間が経過する毎に図５に示す処理を繰り返す。
【００５５】
以上のようにして、本実施の形態のトークン管理部は、トークン加算処理、トークン減算処理及びタイムアウト判定処理を実行する。
【００５６】
次に、上記３つの動作を行った場合の、パラメータメモリ１０に格納されているパラメータの変化について図６を参照して説明する。ここでは、初期状態として、パラメータメモリ１０に格納されているパラメータが、図６（ａ）に示される状態にあるとする。
【００５７】
図６（ａ）に示すように、このトークン管理部は、クラス番号１，２，３及び４の４つのクラスに対応している。クラス番号１乃至４の各クラスには、重みとして３，２，５及び４がそれぞれ設定され、最大トークン量として３０，２０，４０及び２０がそれぞれ設定されている。また、各クラスのトークン値は、クラス番号１から４の順番に、３０，２３，２３及び８１となっている。さらに、クラス番号１乃至３の各クラスについては、タイムアウトフラグは「０」であるが、クラス番号４のクラスのタイムアウトフラグは「１」になっている。
【００５８】
また、上記状態において、送信許可ビット更新回路１５は、クラス番号１及び４について「１」、クラス番号２及び４について「０」の送信許可ビット列を出力しているものとする。
【００５９】
さらに、トークン加算回路１４には、基準値として「２５」が、加算基準量として「２０」が設定されているものとする。
【００６０】
以上の状態において、各クラスのトークン量（＝トークン値−基準値）は、それぞれ、５，−２，−２及び２０となる。ここで、クラス番号４のクラスのトークン量が２０となっているのは、タイムアウトフラグが「１」であるため、トークン量を最大トークン量としたためである。なお、トークン量は、説明の便宜のために用いられるパラメータであって、パラメータメモリ１０には格納されていない。また、トークン量が「０」以上のとき送信許可ビットは「１」となり、トークン量が負のとき送信許可ビットは「０」となる。
【００６１】
上記初期状態において、クラス番号１のクラスに属するパケット長２４のパケットが送信されたとする。この場合、トークン減算回路１２は、読み出し制御部３からの出力クラス番号及びパケット長の通知を受けて、トークン減算処理を行う。即ち、トークン減算回路１２は、トークン値「３０」から“パケット長／重み”である「２４／３＝８」を減算して、新たなトークン値「２２」を得る。新たなトークン値「２２」は、基準値「２５」より小さいので、トークン減算回路１２は、送信許可ビット更新回路１５に対して、送信許可ビットを「０」にするよう要求する。以上の結果得られたパラメータを図６（ｂ）に示す。
【００６２】
次に、パラメータが図６（ｂ）の状態のとき、クラス番号４のパケット長３２のパケットの送信が行われたとする。この場合、トークン減算回路１２は、クラス番号４のタイムアウトフラグが「１」であることを認識し、トークン値を“最大トークン量＋基準値”（２０＋２５＝４５）に設定する。次に、トークン減算回路１２は、設定されたトークン値から“パケット長／重み”（３２／４＝８）を減算する。その結果、新たなトークン値「４５−８＝３７」が得られる。この新たなトークン値「３７」は、基準値「２５」よりも大きいので、トークン減算回路１２は、送信許可ビット更新回路１５に対して、送信許可ビットを「１」にするよう要求する。これにより、クラス番号４の送信許可ビットは「１」のままとなる。また、トークン減算回路１２は、タイムアウトフラグを「０」に変更する。以上の結果を図６（ｃ）に示す。
【００６３】
次に、パラメータが図６（ｃ）の状態のとき、スケジューラ部５よりトークン加算要求があったとする。この場合、トークン加算回路１４は、基準値「２５」から基準加算量「２０」を減算し、新たな基準値「５」を得る。ここでは、基準値が２０減算されているだけであるが、各クラスのトークンの単位を「バイト量／重み」と定義しているため、トークン値に重みに比例した加算トークン量を追加したことと同義である。この結果、全クラスのトークン値が基準値よりも大きくなるので、トークン加算回路１４は、全てのクラスの送信許可ビットを「１」にするよう送信許可ビット更新回路１５に要求する。以上の結果を図６（ｄ）に示す。
【００６４】
なお、図６（ｄ）では、クラス番号４のタイムアウトフラグが「１」になっている。これは、図６（ｃ）の状態から図６（ｄ）の状態に更新されるまでの間に、タイムアウト監視回路１３がタイムアウト判断処理の実行があれば、このようになるということを示すものである。
【００６５】
以上のように、本実施の形態によるパケットスケジューリング装置では、トークン加算処理を基準値の減算処理に置き換えたことにより、各クラス毎の加減算回路が不要となり、全クラスに対して１つの加算回路と１つの減算回路があればよいので、回路規模を増大させることなく、対応可能なクラス数を増加させることができる。これにより、本実施の形態によるパケットスケジューリング装置では、従来と同程度の回路規模で、数１００クラスに対応すること可能である。
【００６６】
次に、図７及び図８を参照して、本発明の第２の実施の形態に係るパケットスケジューリング装置に用いられるトークン管理回路について詳細に説明する。なお、本実施の形態に係るパケットスケジューリング装置も、第１の実施の形態の場合と同様、トークン管理回路を除いて従来のパケットスケジューリング装置と同じ構成である。
【００６７】
図７を参照すると、本実施の形態に係るトークン管理回路は、パラメータメモリ１０ｂ、パラメータメモリアクセス回路１１、トークン減算回路１２ｂ、トークン加算回路１３、最大トークンフラグ更新回路１６、送信許可ビット更新回路１５より構成される。
【００６８】
パラメータメモリ１０ｂは、クラス毎のパラメータ、即ちパラメータテーブルを格納する。このパラメータテーブルには、トークン値及び重みの項目はあるが、最大トークン量及びタイムアウトビットの項目は存在しない。
【００６９】
トークン減算回路１２ｂは、全クラス共通の最大トークン量を保持している。この最大トークン量は、トークン加算処理において用いられる加算基準量と同じ量である。そして、トークン減算回路１２ｂは、トークン減算処理を行う際に、最大トークンフラグ更新回路１６からの最大トークンフラグを確認し、対応するクラスの最大トークンフラグが「１」の場合には、トークン値を最大トークン値（＝最大トークン量＋基準値）に設定して、トークン減算処理を行う。そして、トークン減算回路は、トークン減算処理行った後、対応するクラスの最大トークンフラグを「０」にするよう最大トークンフラグ更新回路１６に要求する。
【００７０】
最大トークンフラグ更新回路１６は、各クラスにそれぞれ対応する最大トーンフラグを有している。各フラグは初期状態「１」であって、「１」の時は、対応するクラスのトークン量が最大トークン量であることを意味する。最大トークンフラグ更新回路１６は、トークン減算回路１２ｂからの要求に応じて、対応するクラスの最大トークンフラグを「０」に設定する。また、スケジューラ部５よりトークン加算要求があった場合には、最大トークンフラグの値を送信許可ビット更新回路１５から出力される送信許可ビット列と同一の値に更新する。
【００７１】
ここで、最大トークンフラグ更新回路１６が、トークン加算要求があった場合に、最大トークンフラグの値を送信許可ビット列と同一の値に更新する理由について説明する。
【００７２】
トークン加算要求があると、トークン加算回路１４は、“基準値−加算基準量”を計算して新たな基準値とする。一方、トークン量は、“トークン値−基準値”であるので、基準値が加算基準量だけ減少すると、トークン量は加算基準量だけ増加する。本実施の形態では、加算基準量と最大トークン量とが等しいので、トークン量が加算基準量だけ増加するということは、トークン量に最大トークン量を加算することを意味する。そして、その加算結果は、トークン量が「０」以上（トークン値が基準値以上）の場合、最大トークン量よりも大きくなる。従って、この場合のトークン量は、最大トークン量に設定されなければならない。その一方で、トークン量が「０」以上（トークン値が基準値以上）の場合には、送信許可ビット更新回路から出力される送信許可ビットは、「１」である。つまり、トークン加算要求があった場合に、最大トークンフラグを「１」にしなければならないクラスは、送信許可ビット更新回路１５から出力される送信許可ビット列が「１」となっているクラスである。
【００７３】
次に、トークン減算回路１２ｂの動作を図９のフローチャートを参照して説明する。
【００７４】
トークン減算回路１２ｂは、まず、読み出し制御部３から出力クラス番号とパケット長の通知を受信すると（ステップＳ８０１）、パラメータメモリアクセス回路１１を介して、パラメータメモリ１０ｂから、出力クラス番号に対応するクラスのパラメータの読み出しを行う（ステップＳ８０２）。次に、トークン減算回路１２ｂは、最大トークンフラグ更新回路１６からの最大トークンフラグをチェックする（ステップＳ５０３）。対応するクラスの最大トークンフラグが「１」の場合は、トークン値を最大トークン値（＝最大トークン量（＝加算基準量）＋基準値）に設定（ステップＳ８０４）する。次に、トークン減算回路１２ｂは、トークン値からパケット長／重みだけのトークンを減算する（ステップＳ８０５）。次に、トークン減算回路１２ｂは、最大トークンフラグ更新回路１６に対して、最大トークンフラグを「０」に設定するように要求する（ステップＳ８０６）。次に、トークン減算回路１２ｂは、パラメータメモリアクセス回路１１を介して、パラメータメモリ１０ｂに格納されたパラメータ、具体的には、対応するクラスのトークン値を更新する（ステップＳ８０７）。最後に、トークン減算回路１２ｂは、トークン値と基準値との比較を行い（ステップＳ８０８）、トークン値が基準値以上であれば、送信許可ビットを「１」に設定し（ステップＳ８０９）、トークン値が基準値より小さければ送信許可ビットを「０」に設定する（ステップＳ８１０）ように送信許可ビット更新回路に要求する。
【００７５】
本実施の形態では、タイムアウトフラグの監視が必要でない分、回路規模を縮小可能である。また、タイムアウト判定制御のために、パラメータメモリにアクセスする必要が無いため、１サイクルの動作速度を高速化させることが可能である。
【００７６】
【発明の効果】
本発明によれば、トークンの単位を「バイト量／重み」とし、各クラスに重みに応じたトークンを加算する代わりに、全クラスに共通の基準値を所定量だけ減算するようにしたことで、クラス数に拘わらず１つの減算回路と１つの加算回路とを用いて全クラスのトークンを管理することができる。これにより、従来よりも回路規模が小さくて、数１００クラスに対応可能なパケットスケジューリング装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るパケットスケジューリング装置に用いられるトークン管理部のブロック図である。
【図２】図１のパラメータメモリに格納されるパラメータテーブルの一例を示す図である。
【図３】図１のトークン管理部が実行するトークン加算処理を説明するためのフローチャートである。
【図４】図１のトークン管理部が実行するトークン減算処理を説明するためのフローチャートである。
【図５】図１のトークン管理部が実行するタイムアウト判定処理を説明するためのフローチャートである。
【図６】（ａ），（ｂ），（ｃ）及び（ｄ）は、図２のパラメータテーブルの変化の一例を説明するための図である。
【図７】本発明の第２の実施の形態に係るパケットスケジューリング装置に用いられるトークン管理部のブロック図である。
【図８】図７のトークン管理部が実行するトークン減算処理を説明するためのフローチャートである。
【図９】本発明が適用されるパケットスケジューリング装置のブロック図である。
【図１０】従来のトークン管理部のブロック図である。
【符号の説明】
１      共有バッファ部
２      書き込み制御部
３      読み出し制御部
４      キュー長管理部
５      スケジューラ部
６      トークン管理部
７−１〜７−Ｎ      トークン加減算回路
８      送信許可フラグ更新回路
１０      パラメータメモリ
１１      パラメータメモリアクセス回路
１２      トークン減算回路
１３      タイムアウト監視回路
１４      トークン加算回路
１５      送信許可ビット更新回路
【図１】
0003705353.tif 000002
【図２】
0003705353.tif 000003
【図３】
0003705353.tif 000004
【図４】
0003705353.tif 000005
【図５】
0003705353.tif 000006
【図６】
0003705353.tif 000007
【図７】
0003705353.tif 000008
【図８】
0003705353.tif 000009
【図９】
0003705353.tif 000010
【図１０】
0003705353.tif 000011