(57)【特許請求の範囲】
【請求項１】
複数の送信キューを備えたパケット中継装置であって、
複数の前記送信キュー毎に、送信スケジューリングに使用する情報として計数器と前記計数器の有効性を管理するアクティブ情報とパケット有無を管理するパケットバリッド情報を管理する計数器管理部と、
複数の前記送信キュー毎の計数器の中から、送信キューにパケットが有りかつ最小値の計数器を基準時刻として管理する基準時刻管理部と、
前記計数器が前記基準時刻に対して過去の値であるか否かを確認することによって前記アクティブ情報である各計数器の有効性を定期的に監視するアクティブチェック管理部と、
パケット送信の度にパケット送信対象の送信キューの計数器を送信パケット長とキュー毎に設定された重み情報に基づいて更新する更新部と、
前記更新部によって更新された複数の前記送信キュー毎の計数器の中から送信キューにパケットが有りかつ計数器が最小値である送信キューをパケット送信対象の送信キューとして探索する送信制御部を有することを特徴とするパケット中継装置。
【請求項２】
請求項１記載のパケット中継装置であって、
前記計数器管理部は、複数の前記送信キュー毎の計数器を値が小さい計数器が勝ち残る二分木トーナメント形式で管理し、パケット送信の際に、パケット送信対象の送信キューの計数器と前記二分木トーナメントにおける対戦相手となる送信キューの計数器とを前記更新部に転送し、
前記更新部は、前記計数器管理部から転送された前記パケット送信対象の送信キューの計数器を更新し、更新された前記計数器と前記計数器管理部から転送された前記対戦相手となる送信キューの計数器とを前記送信制御部に転送し、
前記送信制御部は、前記更新部から転送された前記パケット送信対象の送信キューの更新された計数器および前記対戦相手となる送信キューの計数器に基づいて、各計数器を比較して小さい方が勝者となるように前記二分木トーナメントの前記パケット送信対象の送信キューの計数器から始まる各回戦における挑戦者および対戦相手の計数器を決定して前記更新部に転送し、
前記更新部は、前記送信制御部から転送された各回戦における挑戦者および対戦相手の計数器に基づいて、前記計数器管理部が二分木トーナメント形式で管理する前記各回戦の計数器を更新させることを特徴とするパケット中継装置。
【請求項３】
請求項２記載のパケット中継装置であって、
前記更新部は、前記計数器管理部から転送された計数器から前記基準時刻を減算することにより前記計数器を補正して補正後の計数器を前記送信制御部に転送し、前記送信制御部から転送された計数器に前記基準時刻を加算することにより前記計数器を逆補正して逆補正後の計数器に基づいて前記計数器管理部が管理する計数器を更新させることを特徴とするパケット中継装置。
【請求項４】
請求項３記載のパケット中継装置であって、
キュー全体に対する送信可能帯域を設定して超過帯域を抑制するトラフィックシェーピング部を有することを特徴とするパケット中継装置。
【請求項５】
請求項４記載のパケット中継装置であって、
キューを一個または複数個の単位でグループ化してグループ内で送信スケジューリングするスケジューリング部と、
前記グループ間で送信スケジューリングまたは完全優先制御を行う第２のスケジューリング部とを有することを特徴とするパケット中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信分野におけるパケットスケジューリング機能および装置に関するものである。膨大のマルチキューを備えた通信装置において各キューの帯域リソースを重みに基づいて均等に分配する帯域制御技術を高速回線上で高精度に実現するパケット中継装置および方法に関する。
【背景技術】
【０００２】
近年、ブロードバンドアクセスサービスとして普及するFTTH（Fiber To The Home）におけるアクセスネットワーク構成を図１に示す。図１において各エンドユーザそれぞれに構築されるLAN（Local Area Network）１０１は、ユーザ宅に設置される光信号-電気信号の変換機器であるONU（Optical Network Unit）１０２と、光信号を分岐・結合する光カプラ１０３と、局側に設置される光信号-電気信号の変換機器であるOLT（Optical Line Terminal）１０４と、エッジルータ１０５を介してインターネット１０６へのアクセスが行なわれる。一本の回線上に複数の利用者が収容される為にユーザ間の通信帯域の公平性を確保する事が求められる。このような用途に対する解決策として重み付け公平キューイングと呼ばれるスケジューリング・アルゴリズムが用いられることがある。この重み付け公平キューイングは複数のキューを持ち、パケットを送信するたびに当該キューに対して送信パケット長（length）と重みの逆数（１/Weight）の乗算した結果を毎度加算することによって帯域リソースを各キューに設定された重みに基づいて分配するアルゴリズムである。
【０００３】
次に図２を用いて、重み付け公平キューイングの原理を説明する。図２はトラフィック振り分け機能２０１と、受信パケットを格納するキューバッファーと送信計数器を管理している送信待ちキュー２０２と、パケットの送信スケジューラー２０３から構成される重み付け公平キューイングを実現するために必要な基本構成である。同図に示した各部位の機能について説明すると、トラフィック振り分け部２０１はパケットのL２/L３ヘッダ情報などを参照してパケット毎にそれぞれの送信待ちキュー２０２にパケット振り分けを行なう機能を備える。送信待ちキュー２０２は、トラフィック振り分け部２０１から受信したパケットをFIFOで格納するパケットバッファーの機能と、各キューの送信スケジューリングに使用される送信計数器を備える。図２に示す構成では、送信待ちキュー２０２（Queue#（１）・・・Queue#（n））のn個にて構成されていて、パケット送信時に当該キューの送信計数器に対して送信パケット（Length）と当該キューの重みの逆数（１/Weight）の乗算結果を当該の送信計数器に対して加算して更新する。
【０００４】
Tnew（n）=Told（n）+ Length（n）/Weight（n）  …（式１）
（）によって区切られた領域のnはキュー番号を示し、下付き文字のnewは更新後の送信予定時刻計数器、下付き文字のoldは更新前の送信予定時刻計数器の状態を示す。送信スケジューラー２０３は、送信待ちキュー２０２からの送信計数器およびキューにパケットが滞留しているかどうかの情報を受信、パケットが滞留しているキューの中から送信計数器の値が低い（もっとも早く送信して欲しい状態）キューを選出するスケジューリング処理を行なう。このような処理を実施することで重み付け公平キューイングによるスケジューリングが実現可能となる。
【０００５】
重み付け公平キューイングは処理が複雑でキュー数が多くなると計算量が増大する為、多キューの重み付け公平キューイングアルゴリズムを高速回線上で実装する事は困難であることがしばしば報告されている。これらの課題に対する解決手段として幾つの公知例が提案されている。
【０００６】
特許文献１に開示された従来のパケット転送制御装置では、アクティブキューの予約バンド幅の合計値の変動に対する該転送終了予定時刻の相対的な順位変動の依存性の低い先頭パケット同士をクラスタ化することによって、重み付け公平キューイングにおいてキュー数分の計算量のオーダO（Ｎ）が必要だったものを計算量のオーダO（Ｎ／M+M）に軽減する方式について記載がされている。
【０００７】
特許文献２に開示された従来のパケット転送制御装置では、出力によってキューが空になった場合にビットスキャンを追加して基準時刻を設ける事で重み付け公平キューイングによって生じる計算量を削減する方式について記載されている。
【０００８】
【特許文献１】特開２０００−１０１６３７号公報
【特許文献２】特開２００６−５３３８ 号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献１では、劇的に処理量が減る訳ではないのでキューが膨大（例えば、数千〜数万個）となると高速回線上においてイーサネット（登録商標）の最小パケット（ ６ ４ b y t e ）を転送する時間内に行うことは困難だというキュー数の拡張性の問題と、アクティブキューの予約バンド幅の変異による送信順序の誤差がクラスタ内に生じると言うスケジューリング精度（誤差）の問題が内在するものと考えられる。
【００１０】
また、特許文献２によるビットスキャン処理は各キューのパケット有無をチェックだけ実施するために１キュー当たりの処理は非常に軽くする事が可能であるがキュー数が膨大（例えば、数千〜数万個）になったときに、検索の最後キューのみにパケットが存在するようなケースを考慮する必要があり、結果的に全キューをスキャンする必要があるので１キューの処理が軽くてもキュー数が数万個に及ぶと全体として非常に負荷が重くなってしまうのでキュー数の拡張性に問題があり、ビットスキャン検索によって探索される基準時刻は全キューの中の最小とならない為にパケット入力タイミングによって基準時刻のバラツキが生じ、設定された重みとは無関係な誤差が帯域分配に生じるスケジューリング精度（誤差）の問題が内在するものと考えられる。
【００１１】
本発明は、上記に示した特許文献１および特許文献２におけるスケジューリング精度とキューの拡張性の問題を解決するパケットスケジューリング方法および装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明によるパケットスケジューリング手段を備えるパケット転送装置は、各キューに入力されたパケットデータを一時的に格納するキュー管理部と、各キューの計数器と各キューによって構成される二分木の計数器を管理する計数器管理部と、前記計数器管理部で記憶された計数器から有効であって計数器の値が最小となる二分木の優勝者（送信候補者）を短時間で探索する送信制御部と、前記優勝者の計数器の値を基準時刻として記憶する基準時刻管理部と、パケット受信とパケット送信時と計数器のアクティブチェック処理の際に該当キューの計数器管理部に対して処理開始のトリガーを与えるステートマシンを備えるものである。
【発明の効果】
【００１３】
本発明による第一の効果は、重み付け公平キューイングの原則に基づいて計数器へのアクセス回数および計算量の大幅な削減を図ることが可能となる点である。
【００１４】
第二の効果は全キューの中から最小であるキューを基準カウンターとして探索する手段を少ない計算量で提供、スケジューリング手段によって発生する誤差をゼロに抑えた高精度のスケジューリング処理を提供できる点である。
【発明を実施するための最良の形態】
【００１５】
本実施形態を構成するスケジューリング装置の内部ブロック図を図４に示す。本実施形態によるスケジューリング機能を有する装置は、トラフィック識別部４０１と、ステートマシン４０２と、計数器管理部４０３と、キュー管理部４０４と、補正更新処理部４０５と、送信制御部４０６と、基準時刻管理部４０７と、アクティブチェック部４０８が具備されている。次に、同図に示す各部位の機能について説明する。
【００１６】
トラフィック識別部４０１について説明を行なう。当該ブロックは、入力されたパケットのＬ２／Ｌ３ヘッダ情報などを参照してパケット毎にキュー単位に分類して、キュー番号を示すキュー番号識別子とパケットデータを受信リクエスト情報としてステートマシン４０２に転送する機能を有する。なお、振り分けに用いる識別子は一般的なパケットヘッダだけではなく、新たに独自で作成した独自ヘッダ情報を用いても良い。
【００１７】
ステートマシン４０２について説明を行なう。当該ブロックはパケット受信時とパケット送信時とアクティブチェック時の処理の際に隣接する各ブロックと調停を行なう制御機能を有する。当該ブロックの処理をフローチャート化したものを図５に示す。
【００１８】
パケット受信時の処理のトリガーはトラフィック識別部４０１から受信リクエスト情報を受信することによって始まる（ステップ５０１のｙｅｓ）。当該ブロックは受信したパケット情報を一旦メモリ内に格納する為にキュー管理部４０４に受信リクエスト情報をそのまま転送する（ステップ５０２）。受信リクエスト情報にはパケットデータの他、トラフィック識別部４０１によって付与されたキュー番号識別子が含まれており、キュー番号識別子に受信処理トリガーを付与し計数器管理部４０３に伝達する（ステップ５０３）ことでパケット受信時の当該ブロック処理が完了する。
【００１９】
パケット送信時の処理のトリガーは、送信制御部４０６から送信リクエスト情報を受信することによって始まる（ステップ５０４のｙｅｓ）。当該ブロックはキュー管理部４０４に送信リクエスト情報をそのまま転送する（ステップ５０５）。送信リクエスト情報には送信リクエストの他、送信候補者のキュー番号識別子が含まれている。キュー管理部４０４から前記送信リクエスト情報として送信したキュー番号に関するキュー番号識別子とパケット長とＶａｌｉｄ情報とＷｅｉｇｈｔを受信する（ステップ５０６）。Ｖａｌｉｄ情報はパケット送信後の当該キューのパケット有無、Ｗｅｉｇｈｔは当該キューに設定された重み情報である。これらの受信情報に送信処理トリガーを付与し計数器管理部４０３に伝達する（ステップ５０７）ことでパケット送信時の当該ブロック処理が完了する。
【００２０】
アクティブチェック処理のトリガーはアクティブチェック部４０８からアクティブチェック情報を受信することによって始まる（ステップ５０８のｙｅｓ）。アクティブチェック情報にはアクティブチェックリクエストの他、アクティブチェック候補者のキュー番号識別子が含まれている。当該ブロックは受信したキュー番号識別子にアクティブチェック処理トリガーを付与し計数器管理部４０３に伝達する（ステップ５０９）ことでアクティブチェック処理時の当該ブロック処理が完了する。
【００２１】
計数器管理部４０３について説明を行なう。当該ブロックは各キューに対する計数器および各キューによって構成される二分木の各回戦勝者の計数器の情報を記録する記憶部を内蔵する機能を有する。ここで計数器とは、各キューに格納されるパケットの送信タイミングを管理するために保持されるものであり、基準時刻を基準として値が低いほど早く送信すべきであることを示す。また、当該ブロックでは、各キューの計数器の値と、各キュー同士の計数器の値の比較結果を図６に示すトーナメント方式で管理されている。図６の例では、各キュー（＃１−＃１６）の計数器の値と、１回戦から４回戦までの各対戦における勝者（計数器の値が低かった方）の計数器の情報が管理される。ステートマシン４０２から受信／送信／アクティブチェック処理トリガーおよびキュー番号識別子を受信する事によって、当該ブロックは受信したキュー番号識別子が示すキューおよび当該キューの各回戦の対戦者の計数器情報が記憶されている記憶領域にアクセスを行なう。各回戦の対戦者の計数器情報は更新を行なうキュー番号識別子から一意に求める事ができる。また、計数器情報に含まれる情報は各キューに対する計数器だけではなく、各キューにパケットが存在しているかどうかを示すパケットバリッド（ＦＶ）と、各キューの計数が有効な値かどうかを識別するアクティブ情報（ＡＣＴ）とキュー番号識別子が存在する。
【００２２】
図６に受信したキュー番号識別子に対して各回戦の対戦者がどのように決定されるかを説明する模式図を記載する。この例ではキュー番号識別子としてＱｕｅｕｅ＃１の処理トリガー信号を受信した時にアクセスを行なう計数器の位置を示している。同図に示すとおりに一回戦の対戦者としてＱｕｅｕｅ＃２、二回戦の対戦者としてＱｕｅｕｅ＃３〜４の勝者、三回戦の対戦者としてＱｕｅｕｅ＃５〜８の勝者、四回戦の対戦者としてＱｕｅｕｅ＃９〜１６の勝者が各回戦の勝者となる。
【００２３】
なお、ステートマシン４０２からは、３種類（受信処理、送信処理、アクティブチェック処理）の処理トリガー信号を受信するが、上記処理はどの信号においても共通の処理となる。
【００２４】
上記処理により、受信したキュー番号識別子に該当するキューとその対戦者の計数器情報を特定し、特定した計数器情報と、ステートマシン４０２から受信／送信／アクティブチェック処理トリガーとともに受信した全情報を補正更新処理部４０５に転送する。ここで、受信した全情報には、受信処理トリガーを受信した場合には受信パケットのキュー番号識別子が含まれ、送信処理トリガーを受信した場合には送信したキュー番号に関するキュー番号識別子とパケット長とＶａｌｉｄ情報とＷｅｉｇｈｔ情報が含まれ、アクティブチェック処理トリガーを受信した場合にはアクティブチェック候補者のキュー番号識別子が含まれる。
【００２５】
キュー管理部４０４について説明を行なう。当該ブロックは、各キューのパケットデータをスケジューリングによる送信順番が訪れるまで一時的に格納するパケットバッファー機能と、各キューに滞留したパケット数の管理機能と、各キューに設定するＷｅｉｇｈｔを記憶する機能を有する。当該ブロックの処理のトリガーは、常にステートマシン４０２から受信する処理リクエスト信号によって開始される。ステートマシン４０２から受信処理リクエストを受信した場合、受信したキュー番号識別子を参照して該当するキュー番号のパケットバッファー情報に対してパケットデータを書き込み、当該キューの滞留パケット数を管理するパケット数情報を１増加させることにより、パケット受信時の当該ブロック処理が完了する。ステートマシン４０２から送信処理リクエスト受信した場合、受信したキュー番号識別子を参照して該当するキュー番号のパケットバッファー情報を読み出す処理を行なう。パケットデータについては、当該ブロックから直接的に外部の回線に向けて出力され、キュー番号識別子とパケット長とＶａｌｉｄ情報とＷｅｉｇｈｔについてステートマシン４０２に対して応答する。Ｖａｌｉｄ情報に関しては、例えばパケット送信時に該当キューに滞留しているパケット数が１個であったら送信処理によって当該キューに滞留するパケット数がゼロになるのでＶａｌｉｄ情報としては無効、滞留しているパケット数が２個以上であったら送信処理によって当該キューに滞留パケット数はゼロにはならないのでＶａｌｉｄ情報として有効を示す情報をステートマシン４０２に送る。当該キューの滞留パケット数を管理するパケット数情報を１減算させることにより、パケット送信時の当該ブロック処理が完了する。
【００２６】
補正更新処理部４０５について説明を行なう。当該ブロックは、計数器管理部４０３によって転送されてきた情報から基準時刻による補正処理とパケット送信などに伴って発生する計数器の更新処理とスケジューリング完了後に計数器に値を書き戻す前に基準時刻による逆補正処理を実施する。前記のとおりに、計数器管理部４０３からは、キュー番号識別子に該当するキューとその対戦者の計数器情報とステートマシン４０２から受信した全情報が当該ブロックに転送されてくる。
【００２７】
当該ブロックの処理をフローチャート化したものを図７〜９に示す。図７にはパケット受信時における更新処理フロー、図８にはパケット送信時における更新処理フロー、図９にはアクティブチェック処理における更新処理フローを記載する。
【００２８】
図７〜図９に共通する処理である補正処理（ステップ７０１、８０１、９０１）と逆補正処理（ステップ７０８、８０７、９０７）について説明する。
【００２９】
補正処理では、計数器管理部４０３から受信したキュー番号識別子に該当するキュー（以降、挑戦者という）とその対戦者の計数器情報を受信すると、受信した挑戦者および対戦者の計数器の値を後述する基準時刻に基づいて補正する。当該補正処理は、基準時刻をＡ、補正対象の計数器情報をＢ、補正後の計数器情報をＸとすると次式で計算される。
【００３０】
Ｘ＝Ｂ−Ａ…（式２）
また、図７〜図９において送信制御部４０６によるヒープ処理（ステップ７０７、８０６、９０６のスケジューリング処理）が完了した後に、送信制御部４０６から送信される挑戦者とその対戦者の計数器情報を基準時刻に基づいて逆補正処理を行なう。基準時刻をＡ、補正対象の計数器情報をＹ、補正後の計数器情報をＺとすると次式で計算される。
【００３１】
Ｚ＝Ｙ＋Ａ…（式３）
図７に示す当該ブロックにおけるパケット受信時の計数器更新処理は、計数器管理部４０３から受信処理トリガー信号を受信することによって開始される。なお、図７の計数器更新処理は、挑戦者および全ての対戦者に対してそれぞれ個別に行われる。補正処理（ステップ７０１）完了後に挑戦者か対戦者かで処理内容が異なり（ステップ７０２）、該当データが対戦者の場合には計数器情報を更新せず、当該データが挑戦者の場合には計数器情報を次のように更新する。
【００３２】
挑戦者の計数器情報に含まれるパケットバリッド（ＦＶ）＝１の場合は（ステップ７０３のｙｅｓ）、挑戦者のキューに既にパケットが存在していることを示すため、計数器情報の更新は行わない。パケットバリッド（ＦＶ）＝０、かつ、アクティブ情報（ＡＣＴ）＝１の場合は（ステップ７０４のｙｅｓ）、挑戦者のキューにパケットは存在しないが、計数器の値に有効な値が設定されていることを示すため、ＦＶ＝１に更新し、ＡＣＴおよび計数器の値は更新しない（ステップ７０５）。パケットバリッド（ＦＶ）＝０、かつ、アクティブ情報（ＡＣＴ）＝０の場合は（ステップ７０４のｎｏ）、挑戦者のキューにパケットは存在せず、計数器の値に有効な値が設定されていないことを示すため、ＦＶ＝１、ＡＣＴ＝１に更新し、計数器の値を基準時刻に更新する。
【００３３】
上記処理により更新された挑戦者およびその対戦者の計数器情報を送信制御部４０６に転送し、スケジューリング処理が完了するのを待つ（ステップ７０７）。その後、送信制御部４０６から送信される挑戦者とその対戦者の計数器情報を、基準時刻に基づいて逆補正処理を行い（ステップ７０８）、逆補正後の挑戦者およびその対戦者の計数器情報を計数器管理部４０３に転送し、図７の処理が完了する。なお、計数器管理部４０３は転送された逆補正後の計数器情報に基づいて自身が保持する計数器情報を更新する。
【００３４】
図８に示す当該ブロックにおけるパケット送信時の計数器更新処理は、計数器管理部４０３から送信処理トリガー信号を受信することによって開始される。なお、図８の計数器更新処理は、挑戦者および全ての対戦者に対してそれぞれ個別に行われる。補正処理（ステップ８０１）完了後に挑戦者か対戦者かで処理内容が異なり（ステップ８０２）、該当データが対戦者の場合には計数器情報を更新せず、当該データが挑戦者の場合には計数器情報を次のように更新する。
【００３５】
挑戦者の計数器情報に含まれるアクティブ情報（ＡＣＴ）＝１の場合は（ステップ８０３のｙｅｓ）、計数器の値に有効な値が設定されていることを示すため、ＦＶを計数器管理部４０３から受信したＶａｌｉｄ情報に基づいて更新し、ＡＣＴは更新せず（ＡＣＴ＝１のまま）、計数器の値を現在値に送信したパケットの「Ｌｅｎｇｔｈ（パケット長）／Ｗｅｉｇｈｔ（重み）」の値を加えた値に更新する（ステップ８０４）。また、アクティブ情報（ＡＣＴ）＝０の場合は（ステップ８０３のｎｏ）、計数器の値に有効な値が設定されていないことを示すため、ＦＶを計数器管理部４０３から受信したＶａｌｉｄ情報に基づいて更新し、ＡＣＴ＝１に更新し、計数器の値を基準時刻に送信したパケットの「Ｌｅｎｇｔｈ（パケット長）／Ｗｅｉｇｈｔ（重み）」の値を加えた値に更新する（ステップ８０５）。
【００３６】
上記処理により更新された挑戦者およびその対戦者の計数器情報を送信制御部４０６に転送し、スケジューリング処理が完了するのを待つ（ステップ８０６）。その後、送信制御部４０６から送信される挑戦者とその対戦者の計数器情報を、基準時刻に基づいて逆補正処理を行い（ステップ８０７）、逆補正後の挑戦者およびその対戦者の計数器情報を計数器管理部４０３に転送し、図８の処理が完了する。なお、計数器管理部４０３は転送された逆補正後の計数器情報に基づいて自身が保持する計数器情報を更新する。
【００３７】
図９に示す当該ブロックにおけるアクティブチェック時の計数器更新処理は、計数器管理部４０３からアクティブチェック処理トリガー信号を受信することによって開始される。なお、図９の計数器更新処理は、挑戦者および全ての対戦者に対してそれぞれ個別に行われる。補正処理（ステップ９０１）完了後に挑戦者か対戦者かで処理内容が異なり（ステップ９０２）、該当データが対戦者の場合には計数器情報を更新せず、当該データが挑戦者の場合には計数器情報を次のように更新する。
【００３８】
挑戦者の計数器情報に含まれるパケットバリッド（ＦＶ）＝１の場合は（ステップ９０３のｙｅｓ）、挑戦者のキューに既にパケットが存在していることを示すため、ＡＣＴの内容にかかわらず計数器情報の更新は行わない。パケットバリッド（ＦＶ）＝０、かつ、アクティブ情報（ＡＣＴ）＝０の場合は（ステップ９０４のｎｏ）、挑戦者のキューにパケットが存在しておらず、計数器の値も有効な値が設定されていないことを示すため、計数器情報の更新は行わない。パケットバリッド（ＦＶ）＝０、かつ、アクティブ情報（ＡＣＴ）＝１の場合は（ステップ７０４のｎｏ）、挑戦者のキューにパケットは存在しないが、計数器の値に有効な値が設定されていないことを示すため、計測器の値と基準時刻の値を比較する。「計数器≦基準時刻」の条件を満たす場合は計測器には有効な値が設定されていないため、ＡＣＴ＝０に更新し、「計数器≦基準時刻」の条件を満たさない場合は計測器には有効な値が設定されているため、ＡＣＴ＝１のままで更新しない。なお、いずれの場合もＦＶの更新は行わない。
【００３９】
上記処理により更新された挑戦者およびその対戦者の計数器情報を送信制御部４０６に転送し、スケジューリング処理が完了するのを待つ（ステップ９０６）。その後、送信制御部４０６から送信される挑戦者とその対戦者の計数器情報を、基準時刻に基づいて逆補正処理を行い（ステップ９０７）、逆補正後の挑戦者およびその対戦者の計数器情報を計数器管理部４０３に転送し、図９の処理が完了する。なお、計数器管理部４０３は転送された逆補正後の計数器情報に基づいて自身が保持する計数器情報を更新する。
【００４０】
送信制御部４０６について説明を行なう。当該ブロックは、図７のステップ７０７、図８のステップ８０６、図９のステップ９０６において補正更新処理部４０５から転送された挑戦者およびその対戦者の計数器情報から二分木の更新を行なうヒープ処理と、二分木の優勝者の計数器情報を基準時刻管理部４０７に展開する処理と、送信リクエスト情報をステートマシン４０２に転送する機能を有する。
【００４１】
補正更新処理部４０５から受信される計数器情報には、ＦＶ、ＡＣＴ、計数器、キュー番号識別子が含まれている。二分木のヒープトーナメントを更新するために、パラメータを｛~ＦＶ、ＡＣＴ、計数器｝の順に並べ替えた値を大小比較して小さい方が勝者となるように二分木を更新し、挑戦者および各回戦の対戦者の情報を更新するために勝者の計数器情報を補正更新処理部４０５に送信する。補正更新処理部４０５は、当該勝者の計数器情報を元にステップ７０８、８０７、９０７の逆補正処理を行う。
【００４２】
また、二分木トーナメントの優勝者の計数器情報を基準時刻管理部４０７に伝達する機能を備える。これによって各キューの中で有効（パケットが存在）であって、計数器の値が最小となるような基準時刻を改めて特別に検索するのではなくて、優勝者（送信候補者）の計数器情報を基準時刻として退避して管理する事が可能となる。
【００４３】
また、当該ブロックは送信処理のトリガーとなる送信リクエスト情報をステートマシン４０２に伝達する。送信リクエスト情報の発信条件は、二分木トーナメントの優勝者の計数器情報がＦＶ＝１であって送信抑止信号を受信していない場合である。
【００４４】
なお、本実施形態では送信抑止の為に送信抑止信号と抽象的に記載しているが送信抑止は様々な条件を適用して良い。例えば、外部装置からのポーズパケット信号に抑止もあるし、当該装置から出力される送信帯域を監視してその監視帯域を超過しているときに送信を抑止するような手段を設けてよい。
【００４５】
基準時刻管理部４０７について説明を行なう。当該ブロックは、送信制御部４０６から二分木トーナメントの優勝者の計数器情報を得て、これを基準時刻として管理を行なう。パケット送信の度に二分木トーナメントの優勝者の計数器が基準時刻として採用される様子を示す模式図を図１０に示す。同図ではパケット送信処理によって計数器の最小であるキュー番号が変わることによって、基準時刻がＱｕｅｕｅ＃１→Ｑｕｅｕｅ＃２→Ｑｕｅｕｅ＃１→Ｑｕｅｕｅ＃３の順に遷移している様子を示している。このように、基準時刻がパケットの送信とともに遷移し、その基準時刻から最も近い計数器の値を持つキューが次の基準時刻として選択され、次にパケットを送信するキューとして選択されるという動作を繰り返すことになる。このようにして得られる基準時刻は補正更新処理部４０５にて計数器情報の補正／逆補正処理として必要となったときに提供する。
【００４６】
アクティブチェック部４０８について説明を行なう。当該ブロックは本実施形態においてアクティブチェックと呼ぶ各キューの計数器情報が過去から未来に周回してしまう事を防止するアクティブチェック処理のトリガー信号を生成する。
【００４７】
計数器情報が過去から未来に周回してしまうとはどのような状態であるかと言うと、本実施形態によるスケジューリング手段では前記のとおりにパケット送受信する該当キューとその対戦者の情報のみを更新することによって計算量を節約しているので、例えば、パケット入力が行われないキューに対しては計数器情報の更新処理が一切行なわれない。フレーム送受信を行なわず、計数器情報が放置された状態が継続してしまうと、基準時刻が遷移して計数器が桁溢れによって周回した場合に放置された計数器の値が未来なのか過去なのか判別不能となる。
【００４８】
このような事を防ぐ為に、アクティブチェック処理と呼ぶ処理を用いてキューの計数器が有効な値なのかどうかをチェックする処理を実施する必要がある。具体的には、基準時刻に対して値が過去であるならば、計数器の値が無意味な状態であることを示す為にＡＣＴのフラグを落とす処理を設ける。このアクティブチェック処理は早い周期で定期的に実施できる方が好ましい。チェック周期が遅いと定期チェック前に計数器の値が一周する事を防ぐ為に、計数器のビット幅を増やす必要が出てしまい物量の増加に繋がる為である。但し、チェック周期を増やすと、単位時間当たりの計算量が増大すると言うトレードオフとなるので、実装を行なうLSIやCPUの性能や物量に合わせて最適なチェック周期を検討する必要がある。
【００４９】
本実施形態に掛かる重み付け均等キューイング制御技術を使用したとき計算量は以下のように求めることができる。補正処理更新部４０５によって行なう計数器情報の補正処理・逆補正処理と送信制御部４０６によって行なうヒープ処理の比較演算は、キュー数ｎに対して挑戦者および各回戦の対戦者のみに対して行なうので、それぞれの計算量は０（log２n）となる。例えば、図6の模式図のようにキュー数が16個だとすると、１回のヒープ処理にかかる計算量は「挑戦者と対戦相手(1回戦)」「挑戦者と対戦相手(2回戦)」「挑戦者と対戦相手(3回戦)」「挑戦者と対戦相手(4回戦)」の比較処理の４回となる。また、パケット受信/パケット送信/アクティブチェックのそれぞれの処理に対して個別に補正・逆補正・ヒープ処理が必要となるため、各処理に対する計算量は３*０（log２n）となり、パケット受信/パケット送信/アクティブチェック処理を決められたサイクル内にそれぞれ１回ずつ繰り返すと仮定すると１サイクル内の計算量は９*０（log２n）となり、これが本実施形態にかかる重み付け均等キューイング制御の計算量となる。キュー数が２のべき乗で増加しても、計算量は９回しか増えないのでキュー数の拡張に対して計算量を抑えることが可能となる。また、送信制御部４０６によって、一時的に退避したヒープ処理の優勝者（送信候補者）の計数器情報を基準時刻管理部４０７で基準時刻として管理することにより基準時刻を求める為に特別な処理を設けることなく、一連の受信/送信/アクティブチェックなど処理中に基準時刻を選び出す手段を提供し、補正処理更新部４０５において計数器情報を補正処理・逆補正処理する際の基準時刻として利用することにより、高精度(誤差が発生しない)の重み付け均等キューイング制御技術が実現可能となる。
【００５０】
本実施形態における効果について整理すると、第一の効果は、重み付け公平キューイングの原則に基づいて計数器へのアクセス回数および計算量の大幅な削減を図ることが可能となる点である。計算量のオーダの合計はnをキュー数とすると、９*０（log２n）で表すことができる。本計算量は１回の二分木探索処理で更新を行なう計数器は０（log２n）であって、受信処理・送信処理・アクティブチェック処理に対して補正処理・比較処理・逆補正処理が必要となるために０（log２n）に対して３ｘ３の９倍の計算量が必要となることから算出される。本方式においてはキュー数が倍になっても計算量が劇的に増大する事はなく計算量は９増加するだけである。本実施形態によるスケジューリング手段をLSIなどのハードウェアで並列処理する事によって膨大なキューを備える重み付け公平スケジューリング機能を備えたパケット転送制御装置及びスケジューリング方法を高速回線上で提供することが可能となる。なお、キュー数の増加に伴って発生する計算量を大幅に軽減することは、単純に回線上に重み付け公平キューイングを実現するだけではなく、非高速回線上において大きな利点となる。計算量の軽減効果によって今まで高性能部品でしか実現できなかった処理が低性能部品でも実現可能となる為、部品原価および消費電力の低減の効果が期待できる点である。
【００５１】
第二の効果は、全キューの中から最小であるキューを基準カウンターとして探索する手段を少ない計算量で提供、スケジューリング手段によって発生する誤差をゼロに抑えた高精度のスケジューリング処理を提供できる点である。特許文献２では全キューの中から最小であるキューを探索するのは困難として最小カウンターを探索していないが、当該公知例では前記のとおりにスケジューリング誤差が生じてしまう問題点がある。本実施形態では、前記特許文献２よりも少ない計算量でありながら、全キューの中で最小であるキューを探索する手段を提供する事が可能である。
【００５２】
以上、上記処理を実施する事により前記課題を解決する膨大のマルチキューを備えた重み付け均等キューイング制御技術を高速回線上で高精度に実現する装置および方法を提供することが可能となる。本実施形態にかかる重み付け均等キューイング制御は、重み付け均等キューイング制御の原則に基づいている為、従来、重み付け均等キューイングが利用されていた応用領域についても適用可能である技術である。幾つかの応用領域の例を記載すると、例えば、キュー全体に対する送信可能帯域を設定して超過帯域を抑制するトラフィックシェーピング機能と組み合わせる事によって監視帯域リソースを重みで均等分配することが可能となる。また、キューを一個または複数個の単位でグループ化してグループ内で送信スケジューリングして、そのグループ間で送信スケジューリングまたは完全優先制御を実施することで階層的なスケジューリング制御を実現する事が可能となる。また、キュー毎に最大帯域を監視する手段を有する事で帯域リソースを重み付け均等キューイング方式で均等分配しつつも、キュー毎に設定された最大帯域を超過しないようにパケット送信スケジューリングを行なう事が可能となる。
【図面の簡単な説明】
【００５３】
【図１】一般的なアクセスネットワーク構成である。
【図２】重み付け公平キューイングの原理である。
【図３】重み付け公平キューイングによる帯域分配の例である。
【図４】本実施形態にかかるスケジューリング装置のブロック図である。
【図５】本実施形態にかかるステートマシンの処理フローである。
【図６】本実施形態にかかる二分木計数器管理方式の模式図である。
【図７】本実施形態にかかるパケット受信処理時の計数器更新フローである。
【図８】本実施形態にかかるパケット送信処理時の計数器更新フローである。
【図９】本実施形態にかかるアクティブチェック処理時の計数器更新フローである。
【図１０】本実施形態にかかる基準時刻の遷移図である。
【符号の説明】
【００５４】
１０１  ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）
１０２  ＯＮＵ（Ｏｐｔｉｃａｌ  Ｎｅｔｗｏｒｋ  Ｕｎｉｔ）
１０３  光カプラ
１０４  ＯＬＴ（Ｏｐｔｉｃａｌ  Ｌｉｎｅ  Ｔｅｒｍｉｎａｌ）
１０５  エッジルータ
１０６  インターネット
２０１  トラフィック振り分け機能
２０２  キュー
２０３  送信スケジューラー
４０１  トラフィック識別部
４０２  ステートマシン
４０３  計数器管理部
４０４  キュー管理部
４０５  補正更新処理部
４０６  送信制御部
４０７  基準時刻管理部
４０８  アクティブチェック部
【図１】
0004881886.tif 000002
【図２】
0004881886.tif 000003
【図３】
0004881886.tif 000004
【図４】
0004881886.tif 000005
【図５】
0004881886.tif 000006
【図６】
0004881886.tif 000007
【図７】
0004881886.tif 000008
【図８】
0004881886.tif 000009
【図９】
0004881886.tif 000010
【図１０】
0004881886.tif 000011