(57)【特許請求の範囲】
【請求項１】
予め優先クラスが設定される１または複数の可変長パケットを前記優先クラスごとに蓄積する複数のパケット蓄積手段と、
前記パケット蓄積手段それぞれに対応して、優先クラスごとに設けられたウエイトカウント値を保持し、前記パケット蓄積手段からパケットが出力されるとき、当該出力パケット長の値を減算してウエイトカウント値を更新する複数のウエイトカウント手段と、
前記ウエイトカウント値が０以上でありかつパケットが蓄積されているパケット蓄積手段に対応する優先クラスの中から回転優先の規則にしたがって１つの優先クラスを選択する出力クラス選択手段と、
前記ウエイトカウント値が０以上でありかつ前記パケット蓄積手段にパケットが蓄積されている優先クラスが存在しなくなったとき、前記複数のウエイトカウント手段に対して優先クラスごとに予め決められている所定のウエイト値を現在のウエイトカウント値に加算更新を指示する更新指示手段と、
前記出力クラス選択手段によって選択された優先クラスに対応するパケット蓄積手段から可変長パケットを読み出すパケット読出手段と
を具備することを特徴とするパケットスケジューリング装置。
【請求項２】
予め優先クラスが設定される１または複数の可変長パケットを前記優先クラスごとに蓄積する複数のパケット蓄積手段と、
前記パケット蓄積手段それぞれに対応して、優先クラスごとに設けられたウエイトカウント値を保持し、前記パケット蓄積手段からパケットが出力されるとき、当該出力パケット長の値を減算してウエイトカウント値を更新する複数のウエイトカウント手段と、
前記ウエイトカウント値が０以上でありかつパケットが蓄積されているパケット蓄積手段に対応する優先クラスの中から回転優先の規則にしたがって１つの優先クラスを選択する出力クラス選択手段と、
パケット蓄積手段に対応するウエイトカウント値が０未満であること、またはパケット蓄積手段にパケットが蓄積されていないことを判定する選択処理の繰返し回数を監視する選択処理回数監視手段と、
前記選択処理回数監視手段が監視する回数が所定の回数になり、かつ、全ての優先クラスを検索しても選択可能な優先クラスがなかったとき、前記複数のウエイトカウント手段に対して優先クラスごとに予め決められている所定のウエイト値を現在のウエイトカウント値に加算更新を指示するとともに、当該更新してもウエイトカウント値が“０”未満となる前記ウエイトカウント手段に対しては前記選択処理で選択可能な“０”以上の値にウエイトカウント値を更新指示する更新指示手段と、
前記出力クラス選択手段によって選択された優先クラスに対応するパケット蓄積手段から可変長パケットを読み出すパケット読出手段と
を具備することを特徴とするパケットスケジューリング装置。
【請求項３】
前記可変長パケットに予め付加された優先クラス情報に基づいて優先クラスを識別して対応する前記パケット蓄積手段に格納する優先クラス識別手段を備え、
前記複数のウエイトカウント手段は、それぞれ対応するパケット蓄積手段に蓄積された可変長パケットに付加されたパケット長情報から認識される前記可変長パケットの長さを減算してウエイトカウント値を更新する
ことを特徴とする請求項１乃至２記載のパケットスケジューリング装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケットデータのスケジューリングを行うパケットスケジューリング装置に係わり、詳細には複数の優先クラスを有する可変長パケットデータのスケジューリングを効率的に行うパケットスケジューリング装置に関する。
【０００２】
【従来の技術】
従来から、パケットデータ網では、トラヒックの種類に応じて種々のサービスクラスを規定することにより、網内のリソースの有効利用とデータ転送の効率化が図られている。例えば、インターネットプロトコル（Internet Protocol：以下、ＩＰと略す。）によるインターネットサービスでは、ネットワーク遅延などの通信品質（Qualtiy Of Service：以下、ＱＯＳと略す。）を保証する必要性が乏しく、一般の通話サービスではリアルタイム性を保証する必要がある。そこで、このようなトラヒックの種類に応じた最適なサービクラスのデータ転送サービスを提供することで、網内のリソースの最適分配を行う。
【０００３】
サービスクラスは、例えば固定伝送速度（Constant Bit Rate：以下、ＣＢＲと略す。）、実時間可変伝送速度（realtime-Valiable Bit Rate：以下、ｒｔ−ＶＢＲと略す。）あるいは利用可能伝送速度（Available Bit Rate：以下、ＡＢＲと略す。）等の優先クラスとして規定される。ＣＢＲは、常に一定の帯域を保証することによってリアルタイム性が要求されるトラヒックに最適なサービスである。ｒｔ−ＶＢＲは、ＣＢＲと同様にリアルタイム性を有し、かつデータ転送量が変動するようなトラヒックに適したサービスである。ＡＢＲは、リアルタイム性は要求しないが、網内でのデータ損失を許容しないコンピュータデータ通信のためのサービスである。
【０００４】
ユーザは、予めデータフローごとに優先クラスを設定する。各パケットデータは、パケットデータ網内において、それぞれ設定された優先クラスに応じて規定されているデータ廃棄率や網内遅延に関するＱＯＳ等の要求値に基づくデータ転送が行われる。
【０００５】
このような種々の優先クラスのトラヒックに対応するため、パケットスケジューリング装置は、パケットスイッチの後段あるいは回線中に配置される。このパケットスケジューリング装置は、優先クラスごとにバッファを設け、各優先クラスのパケットデータを、予め設定した最低保証帯域に基づいて送出する。これら優先クラスごとに設けられたバッファから出力するパケットデータを選択するパケットスケジューリングは、一般的に重み付き回転優先（Weighted Round Robin：以下、ＷＲＲと略す。）スケジューリングにより行われる。
【０００６】
近年、インターネットの普及によるインターネットトラヒックが増大し、インターネットで利用されるトランスミッションコントロールプロトコル（Transmission Control Protocol：以下、ＴＣＰと略す。）／ＩＰのパケットに対してパケットスケジューリングによる優先制御を行うことが要求されている。このような優先制御を行うパケットスケジューリング装置について、種々提案されている。
【０００７】
図５は、従来提案されたパケットスケジューリング装置の構成の概要を表わしたものである。このパケットスケジューリング装置は、非同期転送モード（Asynchronous Transfer Mode：以下、ＡＴＭと略す。）セル転送サービスにおける各優先クラスの帯域を保証するものである。パケットスケジューリング装置に入力された入力ＡＴＭセル１０は、キュー選択部１１に入力される。入力ＡＴＭセル１０は、そのヘッダ部に予め優先クラスを示す識別子が付加されている。キュー選択部１１は、このヘッダ部を参照して、複数の優先クラス別に設けられ複数のＡＴＭセルをバッファリングする第１〜第Ｍのキュー１２1〜１２Mのうちいずれか１つを選択し、入力ＡＴＭセル１０を蓄積させる。
【０００８】
第１〜第Ｍのキュー１２1〜１２MそれぞれからＡＴＭセルの蓄積数を示すキュー長通知信号１３が、出力セル選択部１４およびリセット制御部１５に入力されている。また、第１〜第Ｍのキュー１２1〜１２Mそれぞれに対応して第１〜第Ｍのウェイトカウンタ１６1〜１６Mを有しており、それぞれに予め対応する優先クラスに要求される帯域に相当するウェイト値が設定されている。第１〜第Ｍのウェイトカウンタ１６1〜１６Mからもそのカウント結果であるウェイトカウント値１７が出力セル選択部１４およびリセット制御部１５に入力されている。
【０００９】
出力セル選択部１４は、各キューから通知されるキュー長通知信号１３および各ウェイトカウンタから通知されるウェイトカウント値１７を監視し、各キューごとに割り当てられた優先クラスを参照して、ＷＲＲスケジューリングにより出力すべきキューを選択する。出力セル選択部１４は、選択されたキューに対して、出力許可信号１８を送出する。リセット制御部１５は、各キューから通知されるキュー長通知信号１３および各ウェイトカウンタから通知されるウェイトカウント値１７を監視し、優先クラスｉのキュー長Ｑｉとウェイトカウント値Ｗｉとの積が、全優先クラスで“０”となったとき、各ウェイトカウンタ１６1〜１６Mに対してリセット指示信号１９を送出する。
【００１０】
出力セル選択部１４によって送出された出力許可信号１８を受信したキューは、キュー内に蓄積されたＡＴＭセルのうち最先の蓄積セルを読み出し、セル出力部２０に送出する。セル出力部２０は、図示しない後段の装置に対してこのセルを出力する。
【００１１】
図６は、このようなパケットスケジューリング装置で行われるＷＲＲスケジューリング処理の内容の概要を表わしたものである。まず、各キューごとに設けられた第１〜第Ｍのウェイトカウンタ１６1〜１６Mのウェイトカウント値をリセットするとともに、ウェイトカウンタごとに予め決められたウェイトカウント値を設定する（ステップＳ３０）。次に、各キューのキュー長Ｑｉとウェイトカウント値Ｗｉの積をｆ（ｉ）とすると、全てのキューについてｆ（ｉ）が“０”か否かを判別する（ステップＳ３１）。全キューについて、ｆ（ｉ）が“０”のとき（ステップＳ３１：Ｎ）、すなわち各キューに蓄積されたセルが存在するかを示すキュー長Ｑｉが“０”のとき、ステップＳ３０に戻る。
【００１２】
一方、各キューのいずれかにセルが存在し、ウェイトカウント値Ｗｉが“０”でないとき（ステップＳ３１：Ｙ）、ｆ（ｉ）が“０”でない優先クラスの中から、優先度が高優先クラスにクラス分けされているキューが存在するか否かを判別する（ステップＳ３２）。ｆ（ｉ）が“０”でない優先クラスの中に、優先度が高優先クラスにクラス分けされているキューが存在すると判別されたとき（ステップＳ３２：Ｙ）、この判別された優先クラスから回転優先制御により出力するクラスを選択し（ステップＳ３３）、このキューに対応するウェイトカウンタのウェイトカウント値Ｗｉを“１”だけ減算し（ステップＳ３４）、ステップＳ３１に戻る。
【００１３】
ステップＳ３２で、ｆ（ｉ）が“０”でない優先クラスの中に、優先度が高優先クラスにクラス分けされているキューが存在しないと判別されたとき（ステップＳ３２：Ｙ）、この判別された低優先クラスの優先クラスから回転優先制御により出力するクラスを選択し（ステップＳ３５）、このキューに対応するウェイトカウンタのウェイトカウント値Ｗｉを“１”だけ減算し（ステップＳ３４）、ステップＳ３１に戻る。
【００１４】
その後、ステップＳ３１からステップＳ３４まで、同様の選択処理を行い、ステップＳ３１で全キューについてｆ（ｉ）が“０”となると、ウェイトカウント値をリセットし、予め決められたウェイト値に初期化する。
【００１５】
このようなパケットスケジューリング装置に関する技術は、例えば特開平１１−６８７７０号公報「ＡＴＭスイッチにおけるスケジューリング方式」に開示されている。この技術の適用により、優先クラスごとに設定されたウェイトカウント値にしたがって、優先クラスごとに保証された帯域でＡＴＭセルを送出することができるとともに、他の優先度が低い優先クラスのＡＴＭセルの送出を待つことなく、優先度の高い優先クラスのＡＴＭセルを優先して出力させることができ、リアルタイム性の要求される優先クラスのトラヒックの遅延劣化を回避する。
【００１６】
また特開平１０−８４３８３号公報「パケットスケジューリング装置およびパケット転送方法」には、スケジューリングすべきフロー対象を示すスケジューリング情報を保持するスケジューリングキューとして、送信可能なパケットキューに対するものと、送信不可能なパケットキューに対するものとを別個に設けることで、送信可能なパケットキューから送信を行うパケットスケジューリング装置に関する技術が開示されている。これにより、各キューに対応するカウンタがデクリメントできなくなるか、パケットキューが空になるまで同じフローのパケットが選択され続けることを回避するようにしている。
【００１７】
【発明が解決しようとする課題】
しかしながら、特開平１１−６８７７０号公報に開示された技術では、パケット長を考慮しないため、パケット長の分布が優先クラスごとに異なる場合、最低保証帯域に相当する値として設定する各ウェイトカウンタのウェイトカウント値と、各優先クラスの出力帯域との整合性がとれなくなるという問題が生じる。特に可変長パケットデータのパケットスケジューリングを行う場合は、予め設定する各ウェイトカウント値の選定は困難であり、ウェイトカウント値が大きすぎると転送遅延の問題が発生する。一方、ウェイトカウント値が小さすぎると出力候補となる優先クラスがないにも関わらず、ウェイトカウント値が負であるため、次のパケットデータを出力することができないという問題が生じる。このように、可変長パケットデータを最低保証帯域にしたがって効率的に選択出力させることができない。
【００１８】
また特開平１０−８４３８３号公報に開示された技術では、可変長パケットデータについて各キューに対して公平に選択出力することができるが、優先クラスに対応した優先制御により、可変長パケットデータを効率的に出力する技術については何ら開示も示唆もされていない。
【００１９】
そこで本発明の目的は、複数の優先クラスを有する可変長パケットデータを、予め設定された最低保証帯域にしたがって効率的に選択出力するパケットスケジューリング装置を提供することにある。
【００２０】
【課題を解決するための手段】
請求項１記載の発明では、（イ）予め優先クラスが設定される１または複数の可変長パケットを前記優先クラスごとに蓄積する複数のパケット蓄積手段と、(ロ)前記パケット蓄積手段それぞれに対応して、優先クラスごとに設けられたウエイトカウント値を保持し、前記パケット蓄積手段からパケットが出力されるとき、当該出力パケット長の値を減算してウエイトカウント値を更新する複数のウエイトカウント手段と、（ハ）前記ウエイトカウント値が０以上でありかつパケットが蓄積されているパケット蓄積手段に対応する優先クラスの中から回転優先の規則にしたがって１つの優先クラスを選択する出力クラス選択手段と、（ニ）前記ウエイトカウント値が０以上でありかつ前記パケット蓄積手段にパケットが蓄積されている優先クラスが存在しなくなったとき、前記複数のウエイトカウント手段に対して優先クラスごとに予め決められている所定のウエイト値を現在のウエイトカウント値に加算更新を指示する更新指示手段と、（ホ）前記出力クラス選択手段によって選択された優先クラスに対応するパケット蓄積手段から可変長パケットを読み出すパケット読出手段とをパケットスケジューリング装置に具備させる。
【００２１】
すなわち請求項１記載の発明では、予め優先クラスが設定されている複数の可変長パケットを優先クラスごとに設けられた複数のパケット蓄積手段に対して、優先クラスの選択情報として所定の選択処理単位ごとに更新されるウェイトカウント値を管理する複数のウェイトカウント値を備える。優先クラスは、所定の選択処理単位ごとに、優先クラスの選択情報としてのウェイトカウント値が“０”以上の優先クラスの中から各優先クラスを順に均等に選択する回転優先により公平に１つの優先クラスを選択する。しかし、ウェイトカウント値が“０”未満のときは選択対象から外れてしまうため、選択処理単位が所定の回数になったときに、ウェイトカウント値が“０”以上になるように全ての優先クラスのウェイトカウント値を更新するようにしている。このようにして優先クラスが選択されると、パケット読出手段により対応する優先クラスのパケット蓄積手段から可変長パケットが読み出される。
【００２２】
請求項２記載の発明では、（イ）予め優先クラスが設定される１または複数の可変長パケットを前記優先クラスごとに蓄積する複数のパケット蓄積手段と、（ロ）前記パケット蓄積手段それぞれに対応して、優先クラスごとに設けられたウエイトカウント値を保持し、前記パケット蓄積手段からパケットが出力されるとき、当該出力パケット長の値を減算してウエイトカウント値を更新する複数のウエイトカウント手段と、（ハ）前記ウエイトカウント値が０以上でありかつパケットが蓄積されているパケット蓄積手段に対応する優先クラスの中から回転優先の規則にしたがって１つの優先クラスを選択する出力クラス選択手段と、（ニ）パケット蓄積手段に対応するウエイトカウント値が０未満であること、またはパケット蓄積手段にパケットが蓄積されていないことを判定する選択処理の繰返し回数を監視する選択処理回数監視手段と、（ホ）前記選択処理回数監視手段が監視する回数が所定の回数になり、かつ、全ての優先クラスを検索しても選択可能な優先クラスがなかったとき、前記複数のウエイトカウント手段に対して優先クラスごとに予め決められている所定のウエイト値を現在のウエイトカウント値に加算更新を指示するとともに、当該更新してもウエイトカウント値が“０”未満となる前記ウエイトカウント手段に対しては前記選択処理で選択可能な“０”以上の値にウエイトカウント値を更新指示する更新指示手段と、（ヘ）前記出力クラス選択手段によって選択された優先クラスに対応するパケット蓄積手段から可変長パケットを読み出すパケット読出手段とをパケットスケジューリング装置に具備させる。

【００２３】
すなわち請求項２記載の発明では、請求項１記載の発明に対して、ウェイトカウント値は、選択処理の回数が所定の回数になったとき、更新するウェイトカウント値が“０”未満のとき、ウェイトカウント値を選択処理で選択可能な“０”以上の値に更新するようにしている。
【００２６】
請求項３記載の発明では、請求項１乃至２記載のパケットスケジューリング装置で、可変長パケットに予め付加された優先クラス情報に基づいて優先クラスを識別して対応するパケット蓄積手段に格納する優先クラス識別手段を備え、複数のウェイトカウント手段は、それぞれ対応するパケット蓄積手段に蓄積された可変長パケットに付加されたパケット長情報から認識される可変長パケットの長さを減算してウェイトカウント値を更新することを特徴としている。
【００２７】
すなわち請求項３記載の発明では、パケットごとに異なる可変長パケットの優先クラスおよびパケット長情報を、パケットの付加情報から直接認識するようにしたので、ハードウェア化による処理の高速化を図ることができる。
【００３０】
【発明の実施の形態】
【００３１】
【実施例】
以下実施例につき本発明を詳細に説明する。
【００３２】
図１は、本発明の一実施例におけるパケットスケジューリング装置の構成の概要を表わしたものである。本実施例におけるパケットスケジューリング装置は、可変長パケットデータ転送サービスにおける各優先クラスの帯域を保証するものである。このパケットスケジューリング装置は、入力された可変長パケットデータ４０の優先クラスを識別する優先クラス識別部４１と、優先クラスごとに１または複数の可変長パケットデータを蓄積する第１〜第Ｎのキュー４２1〜４２Nと、これら各キューに対応してキューごとに管理されるウェイトカウント値をカウントする第１〜第Ｎのウェイトカウンタ４３1〜４３Nとを備えている。
【００３３】
さらに、このパケットスケジューリング装置は、各キューに蓄積されたパケット蓄積量とウェイトカウント値を監視して優先クラスを選択する出力クラス選択部４４と、この出力クラス選択部４４による優先クラス選択処理の繰返し回数を監視する選択処理回数監視部４５と、出力クラス選択部４４によって選択された優先クラスのキューからパケットデータを読み出して図示しない外部装置に対して出力するパケット出力部４６とを有している。
【００３４】
優先クラス識別部４１は、入力される可変長パケットデータ４０を監視して、優先クラスを識別する。
【００３５】
図２は、このような優先クラス識別部４１に入力される可変長パケットデータの構成の一例を表わしたものである。同図（ａ）は、可変長パケットデータのフォーマット構成の一例を示す。同図（ｂ）は、可変長パケットデータのヘッダフィールドのフォーマット構成の一例を示す。可変長パケットデータ４０は、同図（ａ）に示すように、パケットデータ網内の転送制御のための制御情報が配置されるヘッダフィールド４７と、転送データが配置されるデータフィールド４８とから構成されている。ヘッダフィールド４７は、同図（ｂ）に示すように、それぞれ所定位置に優先クラスを識別する優先クラス情報４９と、可変長パケットデータ４０のパケット長を示すパケット長情報５０とを有している。
【００３６】
優先クラス識別部４１は、このような可変長パケットデータの所定位置に配置された識別子を参照することにより、パケットデータの優先クラスを識別することができる。識別されたパケットデータは、優先クラスごとに予め割り当てられている第１〜第Ｎのキュー４２1〜４２Nに対して送出される。
【００３７】
第１〜第Ｎのキュー４２1〜４２Nは、それぞれ優先クラスごとに１または複数の可変長パケットデータを一時的に蓄積する先入れ先出し（First In First Out：以下、ＦＩＦＯと略す。）メモリと、ＦＩＦＯメモリに蓄積されるパケットの量を管理するためのパケットカウンタとから構成されている。各パケットカウンタは、優先クラス識別部４１によって割り当てられたパケットがＦＩＦＯメモリに蓄積されるたびに、図２に示したようにパケット長を示す識別子を参照して入力されるパケットの長さを識別し、ＦＩＦＯメモリに蓄積しているパケットの量を認識することができるようになっている。第１〜第Ｎのキュー４２1〜４２Nは、出力クラス選択部４４に対して、この認識した蓄積パケットの量を通知するパケット量通知信号５１として送出する。また、第１〜第Ｎのキュー４２1〜４２Nは、出力クラス選択部４４から出力指示信号５２が各キューごとに入力されており、これを受信したキューは、ＦＩＦＯメモリから可変長パケットデータを読み出して、パケット出力部４６に対して送出する。
【００３８】
第１〜第Ｎのウェイトカウンタ４３1〜４３Nは、それぞれ予め優先クラスごとの最低保証帯域に相当するウェイト値を管理し、出力クラス選択部４４からの各種指示にしたがって、どの優先クラスからパケットデータを読み出すかを決定するための情報となるウェイトカウント値の更新を行う。
【００３９】
第１〜第Ｎのウェイトカウンタ４３1〜４３Nは、出力クラス選択部４４からパケット出力部４６に対して出力させる優先クラスとして選択されたことを示す選択指示信号５３を受信したときには、現在保持しているウェイトカウント値から読み出すパケットの長さを減算して、新しいウェイトカウント値として更新する。また、出力クラス選択部４４から加算指示信号５４を受信したときには、現在保持しているウェイトカウント値に各優先クラスごとに予め決められているウェイト値を加算して、新しいウェイトカウント値として更新する。さらに、出力クラス選択部４４からセット指示信号５５を受信したときには、現在保持しているウェイトカウント値にウェイト値を加算して、新しいウェイトカウント値として更新するとともに、新しいウェイトカウント値が“０”未満の場合、ウェイト値の半分の値を新しいウェイトカウント値とし、さらに、新しいウェイトカウント値が予め決められた上限値より大きい場合、この上限値を新しいウェイトカウント値とする。ここで、新しいウェイトカウント値が“０”未満の場合、ウェイトカウント値をウェイト値の半分としたのは、選択処理を繰返し回数の制限を設けない場合、ウェイトカウント値が負の値から正の値へ更新される時の値は”０”からウェイト値の間の値で、平均値はウェイト値の半分となるからである。これら各ウェイトカウンタによって更新されるウェイトカウント値５６は、出力クラス選択部４４に通知される。
【００４０】
出力クラス選択部４４は、第１〜第Ｎのキュー４２1〜４２Nそれぞれのパケットの蓄積量を示すパケット量通知信号５１および第１〜第Ｎのウェイトカウンタ４３1〜４３Nそれぞれのウェイトカウント値５６をもとに、各優先クラスのキューの中からパケットを出力する優先クラスを選択する。
【００４１】
すなわち、出力クラス選択部４４は、パケット量通知信号５１によって通知される各キューに蓄積されるキュー長が“０”ではなく、かつ対応するウェイトカウンタのウェイトカウント値が“０”以上である優先クラスの中から各優先クラスを順に均等に選択する回転優先（Round Robin：ラウンドロビン）の規則にしたがって優先クラスを選択する。キュー長が“０”ではない優先クラスにウェイトカウント値が“０”未満のクラスだけが存在するときには、選択処理回数監視部４５によって監視されている優先クラスの選択処理の繰返し回数に応じて、上述した各ウェイトカウンタによるウェイトカウント値の更新を行わせる。
【００４２】
選択処理回数監視部４５は、予め優先クラスの選択処理繰返し回数の最大値が設定されるようになっている。そして、出力クラス選択部４４によって行われる優先クラスの選択処理繰返し回数５７を監視し、この繰返し回数が“（優先クラス選択処理の繰返し回数の最大値）−１”となったとき、選択処理回数監視部４５は、出力クラス選択部４４に対して回数検出信号５８を出力する。
【００４３】
出力クラス選択部４４は、選択処理回数監視部４５から回数検出信号５８が通知されるまでは、全優先クラスのウェイトカウント値にそれぞれ優先クラスごとに決められてウェイト値の加算を指示する加算指示信号５４を出力するとともに、優先クラス選択処理を繰り返す。しかし、出力クラス選択部４４は、選択処理回数監視部４５から回数検出信号５８が通知されたときは、全優先クラスのウェイトカウント値に各優先クラスに対応するウェイト値を加算するか、あるいはウェイト値の半分の値でウェイトカウント値を更新するかいずれかの方法により、優先クラスのウェイトカウント値が“０”以上になるようにする。このように各ウェイトカウンタのウェイトカウント値を“０”以上になるように制御することによって、回転優先の規則にしたがって優先クラスの選択を行うパケットスケジューリングを可能とする。
【００４４】
出力クラス選択部４４によって優先クラスの選択が行われた結果は、出力指示信号５２として該当する優先クラスのキューに対して、選択指示信号５３として該当する優先クラスのウェイトカウンタに対して、それぞれ出力される。出力指示信号５２を受信したキューから読み出されたパケットは、パケット出力部４６により図示しない外部装置に対して出力される。
【００４５】
上述したような優先クラスの選択処理を制御する出力クラス選択部４４および選択処理回数監視部４５は、図示しない中央処理装置（Central Processing Unit：ＣＰＵ）によって制御されており、呼び出し専用メモリ（Read Only Memory：ＲＯＭ）などの所定の記憶装置に格納された制御プログラムに基づいて上述した優先クラスの選択処理を実行することができるようになっている。
【００４６】
図３および図４は、このような所定の記憶装置に格納された優先クラスの選択処理を制御するプログラム内容の概要を表わしたものである。まず、優先クラスごとに設けられた全ての第１〜第Ｎのウェイトカウンタ４３1〜４３N、出力クラス選択部４４で保持する選択クラス変数Ｃｌａｓｓおよび優先クラス選択処理の繰返し回数の最大値Ｃｍａｘを初期化する（ステップＳ６０）。すなわち、出力クラス選択部４４は、第１〜第Ｎのウェイトカウンタ４３1〜４３Nに対して、各優先クラスごとに予め決められた最低保証帯域に相当するウェイト値の設定を指示する。また、出力クラス選択部４４は、内部変数である選択クラス変数Ｃｌａｓｓに、予め決められた初期値を代入する。さらに、選択処理回数監視部４５に、所定の優先クラス選択処理の繰返し回数の最大値Ｃｍａｘの代入を行わせる。
【００４７】
ウェイト値および最大値Ｃｍａｘは、それぞれ例えば所定の記憶装置に本プログラムとは別エリアに記憶され、この記憶されているウェイト値を変更することで、任意の値に設定することができるようになっている。
【００４８】
以下では説明の便宜上、優先クラスｉ（ｉ＝０〜Ｎ）におけるウェイト値をＷｉ、優先クラスｉに対応する第ｉのキュー４２iに蓄積しているパケットの量をＱｉ、優先クラスｉに対応する第ｉのウェイトカウンタ４３iのウェイトカウント値をＷＣｉ、優先クラスｉのウェイト値の上限値をＷｈｉとする。
【００４９】
ステップＳ６０に続いて、各キューからのパケット量通知信号を参照して各優先クラスのキューにパケットが蓄積されているか否かを判定する（ステップＳ６１）。各優先クラスのキューにパケットが蓄積されていないと判定されたとき（ステップＳ６１：Ｎ）には、パケットデータの送出を行うことができないため、各優先クラスのキューのいずれかにパケットが蓄積されるまでステップＳ６１を繰り返す。
【００５０】
一方、ステップＳ６１で一つ以上の優先クラスのキューにパケットが蓄積されていると判定されたとき（ステップＳ６１：Ｙ）、パケットデータの送出を行うことができると判断し、出力クラス選択部４４で優先クラスの選択候補を示す内部変数ｉに選択クラス変数Ｃｌａｓｓの値を代入するとともに、出力クラス選択部４４で優先クラス選択処理の繰返し回数を示す内部変数ｃｙｃｌｅに“０”を代入して初期化する（ステップＳ６２）。
【００５１】
次に、選択処理の繰返し回数ｃｙｃｌｅをインクリメントし（ステップＳ６３）、優先クラスの選択候補ｉの第ｉのキュー４２iにパケットが蓄積しているか否かを判定する（ステップＳ６４）。
【００５２】
ステップＳ６４で優先クラスの選択候補ｉの第ｉのキュー４２iにパケットが蓄積されていると判定されたとき（ステップＳ６４：Ｙ）、優先クラスの選択候補ｉの第ｉのウェイトカウンタ４３iのウェイトカウント値ＷＣｉが“０”以上であるか否かを判定する（ステップＳ６５）。
【００５３】
優先クラスの選択候補ｉのウェイトカウント値ＷＣｉが“０”以上であると判定されたとき（ステップＳ６５：Ｙ）、選択候補ｉの選択を確定させる（ステップＳ６６）。すなわち、出力クラス選択部４４から優先クラスｉの第ｉのキュー４２iに対して出力指示信号５２を、優先クラスｉの第ｉのウェイトカウンタ４３iに対して選択指示信号５３を、それぞれ出力する。この出力指示信号５２により、第ｉのキュー４２iから１パケットだけを読み出させ、パケット出力部４６から図示しない外部装置に対して出力する。また、選択指示信号５３により、第ｉのウェイトカウンタ４３iに、現在のウェイトカウント値ＷＣｉから、第ｉのキュー４２iより通知されたパケットの長さＬｅｎｇｔｈを減算させて、新しいウェイトカウント値として更新する（ステップＳ６７）。
【００５４】
続いて、回転優先の規則にしたがって、優先クラスを示す選択クラス変数Ｃｌａｓｓを更新し、ステップＳ６１に戻って、再び更新した優先クラスを選択候補として優先クラス選択処理を繰り返す（ステップＳ６８）。
【００５５】
ステップＳ６４で優先クラスの選択候補ｉの第ｉのキュー４２iにパケットが蓄積されていないと判定されたとき（ステップＳ６４：Ｎ）、あるいはステップＳ６５で優先クラスの選択候補ｉのウェイトカウント値ＷＣｉが“０”未満であると判定されたとき（ステップＳ６５：Ｎ）、全ての優先クラスを検索済みか否かを判定する（ステップＳ６９）。
【００５６】
全ての優先クラスを検索したと判定されたとき（ステップＳ６９：Ｙ）、現在の優先クラス選択処理の繰返し回数ｃｙｃｌｅと、“優先クラス選択処理の繰返し回数の最大値Ｃｍａｘ−１”との比較を行う（ステップＳ７０）。
【００５７】
ここで、選択処理の繰返し回数ｃｙｃｌｅが“優先クラス選択処理の繰返し回数の最大値Ｃｍａｘ−１”より小さいとき（ステップＳ７０：Ｙ）には、出力クラス選択部４４から全ての優先クラスのウェイトカウンタに対して、加算指示信号５４を出力する。この加算指示信号５４を受信した第１〜第Ｎのウェイトカウンタ４３1〜４３Nは、それぞれ現在のウェイトカウンタ値ＷＣｉに予め決められたウェイト値Ｗｉを加算する。ここで、さらにこの加算結果とそれぞれ予め決められたウェイト値の上限値Ｗｈｉのうち小さい方を新しいウェイトカウント値として更新する（ステップＳ７１）。すなわち、加算結果がそれぞれ予め決められたウェイト値の上限値Ｗｈｉより大きい場合はこの上限値Ｗｈｉを新しいウェイトカウント値とし、加算結果が上限値Ｗｈｉ以下の場合は加算結果を新しいウェイトカウント値とする。そして、再びステップＳ６３に戻って、選択処理回数ｃｙｃｌｅをインクリメントして新たに優先クラスの選択処理を実行する。
【００５８】
ステップＳ７０で、選択処理の繰返し回数ｃｙｃｌｅが“優先クラス選択処理の繰返し回数の最大値Ｃｍａｘ−１”以上のとき（ステップＳ７０：Ｎ）、出力クラス選択部４４から全ての優先クラスのウェイトカウンタに対して、セット指示信号５５を出力する。このセット指示信号５５を受信した第１〜第Ｎのウェイトカウンタ４３1〜４３Nは、それぞれ現在のウェイトカウンタ値ＷＣｉに予め決められたウェイト値Ｗｉを加算する。ここで、さらにこの加算結果が“０”以上のときは、それぞれ予め決められたウェイト値の上限値Ｗｈｉのうち小さい方を新しいウェイトカウント値として更新する。すなわち、加算結果がそれぞれ予め決められたウェイト値の上限値Ｗｈｉより大きい場合はこの上限値Ｗｈｉを新しいウェイトカウント値とし、加算結果が上限値Ｗｈｉ以下の場合は加算結果を新しいウェイトカウント値とする。また加算結果が“０”未満のときは、ウェイト値Ｗｉの半分の値を新しいウェイトカウント値とする（ステップＳ７２）。そして、再びステップＳ６３に戻って、選択処理回数ｃｙｃｌｅをインクリメントして新たに優先クラスの選択処理を実行する。ステップＳ７２で加算結果が”０”未満のときに更新するウェイトカウント値はウェイト値の半分でなくてもよい。例えば、優先クラス毎に値を設定する、全優先クラス共通の値を設定する、全優先クラス共通のウェイト値に対する割合を設定する、等がある。
【００５９】
ステップＳ６９で、全ての優先クラスを検索していないと判定されたとき（ステップＳ６９：Ｎ）、優先クラスの選択候補ｉを回転優先にしたがって更新し、再びステップＳ６４に戻って、優先クラスの選択処理を実行する。
【００６０】
このように本実施例におけるパケットスケジューリング装置は、優先クラスごとに設けられた第１〜第Ｎのキュー４２1〜４２Nそれぞれに対応して第１〜第Ｎのウェイトカウンタ４３1〜４３Nを設け、出力クラス選択部４４にそれぞれ優先クラスごとの最低保証帯域に相当するウェイト値から算出したウェイトカウント値と、各キューの蓄積パケットの量とに基づいて、優先クラスの選択出力を行わせるようにしている。出力クラス選択部４４は、パケットが蓄積されているキューのウェイトカウント値が“０”以上のときは、現在のウェイトカウント値から出力する可変長パケットデータのパケットの長さを減算することでウェイトカウント値を更新して、その優先クラスの優先順位を低下させる一方、順次優先クラスの選択処理を繰り返す。一方、パケットが蓄積されているキューのウェイトカウント値が“０”未満のとき、優先クラスの選択処理の繰返し回数が所定の“Ｃｍａｘ−１”回までは、全優先クラスの第１〜第Ｎのウェイトカウンタ４３1〜４３Nのウェイトカウント値に各優先クラスのウェイト値を加算してセットし、“Ｃｍａｘ−１”回になると全優先クラスのウェイトカウント値にウェイト値を加算するか、ウェイト値の半分の値を代入するかによって、ウェイトカウント値を“０”以上になるようにして、これらを対象に回転優先の規則で優先クラスを選択するようにしている。これにより、全優先クラスに十分なパケットデータが入力されている場合には、各優先クラスごとに決められた最低保証帯域に相当するウェイト値の割り合いにしたがってパケットを出力することができるようになる。さらに、ウェイト値よりも非常に長いパケットが出力された優先クラスにおいても、次の選択候補となる優先クラスがないときに限りパケットデータを出力することができ、可変長パケットデータを最低保証帯域にしたがって効率的に選択出力させることが可能となる。さらにまた、所定の優先クラス選択処理の最大繰返し回数で、優先クラスの選択を完了させることができる。
【００６１】
【発明の効果】
以上説明したように請求項１または請求項２記載の発明によれば、例えば全優先クラスに十分なパケットデータが入力されている場合には、各優先クラスごとに決められた最低保証帯域に相当するウェイト値の割合にしたがってパケットを出力することができるようになり、予め設定された最低保証帯域にしたがって効率的に選択出力を行うパケットスケジューリング装置を提供することができるようになる。さらに、ウェイト値よりも非常に長いパケットが出力された優先クラスにおいても、次の選択候補となる優先クラスがないときに限りパケットデータを出力することができ、可変長パケットデータを最低保証帯域にしたがって効率的に選択出力させることが可能となる。また、これらの発明によれば、非常に簡素な構成でウェイトカウント値の再設定を行うことで、再度優先クラスの選択を行うことができるようになり、効率的な最低保証帯域にしたがった選択処理を行うことができるばかりでなく、処理の高速化をも図ることができる。
【００６３】
さらにまた請求項３記載の発明によれば、パケットごとに異なる可変長パケットの優先クラスおよびパケット長情報を、パケットの付加情報から直接認識するようにしたので、ハードウェア化による処理の高速化を図ることができる。
【図面の簡単な説明】
【図１】本実施例におけるパケットスケジューリング装置の構成の概要を示す構成図である。
【図２】本実施例における可変長パケットデータのフォーマット構成の一例を示す説明図である。
【図３】本実施例における優先クラスの選択処理内容の前半部を示す流れ図である。
【図４】本実施例における優先クラスの選択処理内容の後半部を示す流れ図である。
【図５】従来提案されたパケットスケジューリング装置の構成の概要を示す構成図である。
【図６】従来のパケットスケジューリング装置におけるスケジューリング処理内容の概要を示す流れ図である。
【符号の説明】
４０  入力可変長パケットデータ
４１  優先クラス識別部
４２1〜４２N  第１〜第Ｎのキュー
４３1〜４３N  第１〜第Ｎのウェイトカウンタ
４４  出力クラス選択部
４５  選択処理回数監視部
４６  パケット出力部
５１  パケット量通知信号
５２  出力指示信号
５３  選択指示信号
５４  加算指示信号
５５  セット指示信号
５６  ウェイトカウント値
５７  優先クラス選択処理繰返し回数
５８  回数検出信号
【図１】
0003683133.tif 000002
【図２】
0003683133.tif 000003
【図３】
0003683133.tif 000004
【図４】
0003683133.tif 000005
【図５】
0003683133.tif 000006
【図６】
0003683133.tif 000007