(57)【要約】【課題】  低遅延要求パケットの遅延時間を最小化できるシェーピング装置を提供する。【解決手段】  同一回線上に多重化される複数ユーザの受信パケットに、各ユーザの契約帯域を保証するように送信予定時刻を割当て、受信パケットの遅延クラス別に、予め送信予定時刻の最も早いユーザを暫定送信ユーザとして選択しておくことによって、パケット送信制御部が、優先クラスの暫定送信ユーザのパケットを非優先クラスの暫定送信ユーザのパケットよりも優先的に送信するようにしたシェーピング装置。【選択図】  図１
2005244290.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが遅延クラスと帯域識別情報を示す内部ヘッダを備えた複数の受信パケットを一時的に蓄積し、帯域識別情報に応じて各パケットの送信タイミングを制御するシェーピング装置であって、
パケット送信制御部と、
メモリ内に複数のキューを形成し、各受信パケットをその内部ヘッダが示す遅延クラスと帯域識別情報とによって決まる何れかのキューに蓄積しておき、上記パケット送信制御部からの送信指令で特定されるキューから１つの蓄積パケットを出力するパケットバッファリング部と、
それぞれが優先度の異なる特定の遅延クラスと対応付けられ、各受信パケットの内部ヘッダに帯域識別情報として含まれる契約帯域識別子別にパケット送信制御情報を記憶した複数の契約帯域制御情報部とからなり、
上記各契約帯域制御情報部が、上記パケット送信制御情報に基づいて、それぞれが上記パケットバッファリング部に送信待ちパケットをもつ複数の契約帯域のうち、最も早くパケット送信すべき契約帯域を選択して、該契約帯域を遅延クラス代表契約帯域として記憶するクラス代表選択部を有し、
上記パケット送信制御部が、上記各契約帯域制御情報部が示す遅延クラス代表契約帯域のパケット送信制御情報に基づいて、パケット送信すべき契約帯域を選択し、該契約帯域のパケット送信制御情報が示す送信タイミングで、上記パケットバッファリング部にパケットの送信指令を発行することを特徴とするシェーピング装置。
【請求項２】
各受信パケットの内部ヘッダが、帯域識別情報として契約帯域識別子とフロー識別子とからなる階層化帯域識別子を含み、シェーピング装置が、
それぞれが優先度の異なる特定の遅延クラスと対応付けられ、各受信パケットの内部ヘッダに帯域識別情報として含まれる契約帯域識別子毎に、フロー識別子別のパケット送信制御情報を記憶した複数のフロー制御情報部を有し、
前記パケット送信制御部が、前記選択された契約帯域のパケット送信制御情報が示す送信タイミングで、該契約帯域と対応するフロー制御情報部が示すパケット送信制御情報に従って、前記パケットバッファリング部にパケットの送信指令を発行することを特徴とする請求項１に記載のシェーピング装置。
【請求項３】
各受信パケットの内部ヘッダが、帯域識別情報として契約帯域識別子とフロー集合識別子とからなる階層化帯域識別子を含み、シェーピング装置が、
それぞれが優先度の異なる特定の遅延クラスと対応付けられ、各受信パケットの内部ヘッダに帯域識別情報として含まれる契約帯域識別子毎に、フロー集合識別子別のパケット送信制御情報を記憶した複数のフロー集合制御情報部を有し、
前記パケット送信制御部が、前記選択された契約帯域のパケット送信制御情報が示す送信タイミングで、該契約帯域と対応するフロー集合制御情報部が示すパケット送信制御情報に従って、前記パケットバッファリング部にパケットの送信指令を発行することを特徴とする請求項１に記載のシェーピング装置。
【請求項４】
前記各フロー帯域制御情報部が、前記パケット送信制御情報に基づいて、それぞれが上記パケットバッファリング部に送信待ちパケットをもつ複数のフローのうち、最も早くパケット送信すべきフローを選択して、該フローを遅延クラス代表フローとして記憶するクラス代表フロー選択部を有し、
前記パケット送信制御部が、前記選択された契約帯域のパケット送信制御情報が示す送信タイミングで、該契約帯域と対応するフロー制御情報部が示す遅延クラス代表フローのパケット送信制御情報に従って、前記パケットバッファリング部にパケットの送信指令を発行することを特徴とする請求項２に記載のシェーピング装置。
【請求項５】
前記各フロー集合制御情報部が、前記パケット送信制御情報に基づいて、それぞれが上記パケットバッファリング部に送信待ちパケットをもつ複数のフロー集合のうち、最も早くパケット送信すべきフロー集合を選択して、該フロー集合を遅延クラス代表フロー集合として記憶するクラス代表フロー集合選択部を有し、
前記パケット送信制御部が、前記選択された契約帯域のパケット送信制御情報が示す送信タイミングで、該契約帯域と対応するフロー集合制御情報部が示す遅延クラス代表フロー集合のパケット送信制御情報に従って、前記パケットバッファリング部にパケットの送信指令を発行することを特徴とする請求項３に記載のシェーピング装置。
【請求項６】
各受信パケットの内部ヘッダが、帯域識別情報として、契約帯域識別子とフロー識別子との間に少なくとも１つの中間帯域識別子をもつ階層化帯域識別子を含み、シェーピング装置が、
それぞれが優先度の異なる特定の遅延クラスと対応付けられ、各受信パケットの内部ヘッダに帯域識別情報として含まれる契約帯域識別子毎に、中間識別子別のパケット送信制御情報を記憶した複数の中間帯域制御情報部と、
それぞれが優先度の異なる特定の遅延クラスと対応付けられ、各受信パケットの内部ヘッダに帯域識別情報として含まれる中間帯域識別子毎に、フロー識別子別のパケット送信制御情報を記憶した複数のフロー制御情報部を有し、
前記各中間帯域制御情報部が、パケット送信制御情報に基づいて、それぞれが上記パケットバッファリング部に送信待ちパケットをもつ複数の中間帯域のうち、最も早くパケット送信すべき中間帯域を選択して、該中間帯域を遅延クラス代表中間帯域として記憶するクラス代表中間帯域選択部を有し、
前記各フロー制御情報部が、前記パケット送信制御情報に基づいて、それぞれが上記パケットバッファリング部に送信待ちパケットをもつ複数のフローのうち、最も早くパケット送信すべきフローを選択して、該フローを遅延クラス代表フローとして記憶するクラス代表フロー選択部を有し、
前記パケット送信制御部が、前記選択された契約帯域のパケット送信制御情報が示す送信タイミングで、該契約帯域と対応する遅延クラス代表中間帯域に基づいて遅延クラス代表フローを特定し、該遅延クラス代表フローのフロー制御情報部が示すパケット送信制御情報に従って、前記パケットバッファリング部にパケットの送信指令を発行することを特徴とする請求項１に記載のシェーピング装置。
【請求項７】
前記パケットバッファリング部によるパケットの送信時に、該送信パケットの属するフローにおけるパケット送信予定時刻を計算し、上記パケットバッファリング部によるパケットの受信時に、該受信パケットの属するフローにおける送信待ちパケットの有無と既存のパケット送信予定時刻とが所定の条件を満たした時、パケット送信予定時刻を計算する送信予定時刻計算回路を有し、
前記フロー制御情報部が、上記送信予定時刻計算回路で計算されたパケット送信予定時刻を上記送受信パケットのフロー識別子と対応するパケット送信制御情報として記憶し、前記クラス代表フロー選択部が、送信待ちパケットを持つ複数のフローのうち、上記パケット送信予定時刻が最も早いフローを前記遅延クラス代表フローとして選択することを特徴とする請求項４に記載のシェーピング装置。
【請求項８】
前記パケットバッファリング部によるパケットの送信時に、該送信パケットの属するフロー集合におけるパケット送信予定時刻を計算し、上記パケットバッファリング部によるパケットの受信時に、該受信パケットの属するフロー集合における送信待ちパケットの有無と既存のパケット送信予定時刻とが所定の条件を満たした時、パケット送信予定時刻を計算する送信予定時刻計算回路を有し、
前記フロー制御情報部が、上記送信予定時刻計算回路で計算されたパケット送信予定時刻を上記送受信パケットのフロー集合識別子と対応するパケット送信制御情報として記憶し、前記クラス代表フロー選択部が、送信待ちパケットを持つ複数のフロー集合のうち、上記パケット送信予定時刻が最も早いフロー集合を前記遅延クラス代表フロー集合として選択することを特徴とする請求項５に記載のシェーピング装置。
【請求項９】
前記パケットバッファリング部によるパケットの送信時に、該送信パケットの属する契約帯域におけるパケット送信予定時刻を計算し、上記パケットバッファリング部によるパケットの受信時に、該受信パケットの属する契約帯域における既存のパケット送信予定時刻とが所定の条件を満たした時、パケット送信予定時刻を計算する送信予定時刻計算回路を有し、
前記契約帯域制御情報部が、上記送信予定時刻計算回路で計算されたパケット送信予定時刻を上記送受信パケットの契約帯域識別子と対応するパケット送信制御情報として記憶し、前記クラス代表選択部が、送信待ちパケットを持つ複数の契約帯域のうち、上記パケット送信予定時刻が最も早い契約帯域を前記遅延クラス代表契約帯域として選択することを特徴とする請求項１〜８の何れかに記載のシェーピング装置。
【請求項１０】
前記契約帯域制御情報部に記憶されるパケット送信制御情報が、契約帯域識別子と対応して送信待ちパケットの有無を示す有効性フラグを含み、
前記クラス代表選択部が、前記契約帯域識別子別に記憶されたパケット送信制御情報を有効性フラグの状態とパケット送信予定時刻に応じてソーティングすることによって、前記遅延クラス代表契約帯域を選択することを特徴とする請求項９に記載のシェーピング装置。
【請求項１１】
前記クラス代表選択部が、前記パケット送信制御情報のソーティング結果を二分木構造で記憶するソーティング情報メモリを有し、該ソーティング情報メモリの根エントリに前記遅延クラス代表契約帯域のパケット送信制御情報を保持することを特徴とする請求項１０に記載のシェーピング装置。
【請求項１２】
前記送信時刻計算回路で計算された各契約帯域におけるパケット送信予定時刻を該契約帯域識よりも下位の帯域用のパケット送信制御情報として計算されたパケット送信予定時刻と整合させるための時刻修正手段を備えたことを特徴とする請求項９〜請求項１１の何れかに記載のシェーピング装置。
【請求項１３】
制御モードを指定するためのモードメモリを有し、
前記パケット送信制御部が、上記モードメモリが指定する制御モードに従って、前記複数の遅延クラス代表契約帯域の中からパケット送信すべき契約帯域を選択することを特徴とする請求項１〜１１の何れかに記載のシェーピング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット転送装置に関し、特に、ネットワークに出力されるパケットの送信順序や帯域を制御するシェーピング装置に関する。
【背景技術】
【０００２】
インターネットで用いられているパケット型通信システムでは、多数のユーザが同一の回線を共用してデータ通信できるため、帯域あたりの通信コストを低く抑えることができる。この低コスト性のために、従来、専用のネットワークで実現されていた各企業の電話網や業務用ネットワークをインターネット上で実現する動きが出てきている。
【０００３】
インターネット上に多重化して構築されるこれらのネットワークでは、音声データやミッションクリティカルデータの通信遅延を小さく抑えるために、従来の業務用ネットワークと同様、それを利用する企業またはユーザ(以下、ユーザと言う)毎に、契約された通信帯域を保証する必要がある。以下の説明では、音声パケットやミッションクリティカルデータ用のパケットのように、通信遅延をできるだけ抑制する必要のあるパケットを優先パケット（または低遅延要求パケット）と呼び、それ以外のパケットを非優先パケット（または通常パケット）と呼ぶことにする。
【０００４】
帯域を保証するための従来技術として、例えば、特開平６−３１５０３４号公報（従来技術１）に記載されたシェーピング装置では、固定長パケットであるＡＴＭセルをバーチャルコネクションＶＣ（Virtual Connection）毎に蓄積するための複数のキューを有し、これらのキューから、ＶＣ毎に予め指定された帯域となる頻度でＡＴＭセルを読み出し、出力回線に送信している。各ユーザの契約帯域を上記ＶＣと対応させ、トラヒックが集中する出力回線へのパケット転送を上記シェーピング装置と同様の手法で制御することにより、ユーザ毎の帯域確保が可能となる。
【０００５】
最近では、通信コストの更なる低減を実現するため、例えば、インターネット上のＥ−ｍａｉｌサーバやｗｅｂサーバをアクセスするためのインターネットアクセス網と上述した業務用ネットワークとの統合ニーズがある。この場合、シェーピング装置には、Ｅ−ｍａｉｌやｗｅｂアクセスで発生する大量のデータによって、ユーザ契約帯域の大部分が消費され、結果的に低遅延要求パケット用の帯域が不足するという事態を回避する機能が必要となる。低遅延要求パケット用の優先フローに対する実質的な割当て帯域が不足すると、キュー内での低遅延要求パケットが停滞し、大きな転送遅延が発生する。最悪の場合には、新たに到着した低遅延要求パケットを蓄積するためのバッファ領域が枯渇し、低遅延要求パケットの１部が廃棄される事態となる。
【０００６】
上記問題に着目した従来技術として、例えば、特開２０００−３４９７６３号公報（従来技術２）には、バーチャルパスＶＰ（Virtual Path）毎の帯域と、各ＶＰ上に多重化されるＶＣ毎の帯域とを同時に制御する多階層シェーピング装置が記載されている。
従来技術２で提案されたシェーピング装置は、出力セルを一時的に蓄積するセルバッファ部と、ＶＰ毎の設定帯域に基づいてＶＰ別のセル送信予定時刻（ＶＰ送信予定時刻）を計算するＶＰ送信予定時刻計算部と、ＶＰ送信予定時刻が最も早いＶＰを暫定送信ＶＰとして選択するＶＰソーティング部と、ＶＣ毎の設定帯域に基づいてＶＣ別にセル送信予定時刻（ＶＣ送信予定時刻）を計算するＶＣフロー送信予定時刻計算部と、サービスクラス毎にＶＣ送信予定時刻が最も早いＶＣを暫定送信ＶＣとして選択するＶＣソーティング部とからなる。
【０００７】
ここで、サービスクラスとは、例えば、最大帯域保証、平均帯域保証の如く、ＶＣ毎に保証すべき帯域の特性区分を意味しており、全てのＶＣは何れかのサービスクラスに属する。上記サービスクラスとして、The ATM Forum Specification version 4.0（従来技術３）では、例えば、最大帯域を保証するＣＢＲ（Constant Bit Rate）、最大帯域と平均帯域を保証するＶＢＲ（Variable Bit Rate）、保証帯域のないＵＢＲ（Unspecified Bit Rate）等を規定している。
【０００８】
上記従来技術２では、シェーピング装置の送信制御部が、暫定送信ＶＰに属するセルの送信時に、該暫定送信ＶＰに属したサービスクラス別の暫定送信ＶＣ群の中から、ＶＣ毎に予め定義された帯域が保証されるように１つのＶＣを選択し、セルバッファ部から該選択ＶＣに属する最先着のセルを読み出して、出力回線に送信している。例えば、暫定送信ＶＰに属するサービスクラスとして、ＣＢＲとＵＢＲとが存在した場合、送信制御部は、ＣＢＲ所属ＶＣをＵＢＲ所属ＶＣよりも優先的に選択することによって、サービスクラスＣＢＲのＶＣに保証された最大帯域を確保する。
【０００９】
従来技術２には、ＡＴＭセルのシェーピング以外に、可変長パケットのシェーピング方法についても開示している。固定長のセルをシェーピングする場合、ＶＰ送信予定時刻計算部とＶＣフロー送信予定時刻計算部は、セル送信の都度、次セルとの送信間隔が保証帯域で決まる所定の間隔となるように、次セルの送信予定時刻を計算している。可変長パケットをシェーピング対象とした場合、送信パケットの長さによって帯域の消費量が変化するため、ＶＰ送信予定時刻計算部とＶＣフロー送信予定時刻計算部は、次パケットとの送信間隔が保証帯域と送信済みパケット長とによって異なる可変長送信間隔となるように、次パケットの送信予定時刻を計算する。
【００１０】
従来技術２のシェーピング方法によれば、例えば、ユーザ毎の契約帯域を上記ＶＰに対応させ、低遅延要求パケット用の優先フローをＣＢＲ所属ＶＣに対応させることによって、ＩＰパケットのような可変長パケットの通信網において、ユーザ別契約帯域と、該契約帯域内で割当てられる優先フロー帯域との両方を保証したシェーピングが可能となる。
【００１１】
【特許文献１】特開平６−３１５０３４号公報
【００１２】
【特許文献２】特許公開２０００−３４９７６３号公報
【非特許文献１】The ATM Forum Specification version 4.0
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述したように、従来技術１が示すシェーピング方法では、低遅延要求パケットに十分な帯域を確保できないため、優先フローのパケットに大きな通信遅延が発生する可能性が高い。これに対して、従来技術２が示すシェーピング方法は、低遅延要求パケットに優先的に帯域を割り当てることによって、優先フローのパケット通信遅延を従来技術１よりも小さくできる。
【００１４】
しかしながら、従来技術２のパケット送信ＶＰの決定アルゴリズムでは、送信予定時刻のみに着目し、送信予定時刻の早いパケットが暫定送信ＶＰとして選択されるようになっている。このため、サービスクラス別のＶＣ群において暫定送信ＶＣとなった低遅延要求パケットが送信予定時刻に達していても、帯域制御の基本となるＶＰの決定アルゴリズムにおいて、上記低遅延要求パケットよりも送信予定時刻の早い通常パケットの所属ＶＰが暫定送信ＶＰとして選択されていれば、通常パケットが優先的に送信され、結果的に、低遅延要求パケットに大きな通信遅延が発生する場合がある。
【００１５】
暫定送信ＶＰパケットとして、例えば、図１３に示すように、ユーザ１〜ユーザ３の通常パケット（ＤＡＴＡ）Ｐ１〜Ｐ３とユーザ４の低遅延要求パケットが存在し、ＶＰ帯域制御のための送信予定時刻の割当ての結果、低遅延要求パケットＰ４の送信予定時刻ｔ４が、通常パケットＰ１〜Ｐ３の送信予定時刻ｔ１、ｔ２、ｔ３よりも少し遅れていた場合を想定する。
このように、複数の暫定送信ＶＰパケットが略同時刻の送信予定時刻をもった場合、送信制御部が、送信予定時刻の早いパケットから順に出力回線に送信すると、図１４に示すように、低遅延要求パケットＰ４の実際の送信時刻ｔ１２が、送信予定時刻ｔ４から大きく遅延し、通信品質が劣化するという問題がある
同一の出力回線に複数ユーザの契約帯域が多重化された状態で、暫定送信ＶＰパケットとなった或るユーザの低遅延要求パケットＰに着目すると、他のユーザ数をｎ、ユーザｉ（ｉ＝１〜ｎ）の送信パケット長をＬｉ、上記出力回線上での全ユーザの契約帯域（保証帯域）の総和をＢとした場合、上記低遅延要求パケットＰには、最悪のケースで（Ｌ１＋Ｌ２＋…Ｌｎ）／Ｂの遅延が発生する。
ここで、Ｌｉの値を、例えば、イーサネット（登録商標）の最大パケット長である１５３８バイト（フレーム間ギャップ、Frame Check Sequence：ＦＣＳ、プリアンブル、イーサネットヘッダを含む）とし、総帯域Ｂを１００Ｍｂｐｓ、他のユーザ数ｎを１０００とすると、上記低遅延要求パケットＰの遅延時間は１２３ｍｓ（＝1538×8×999/100Ｍ）となる。
【００１６】
本発明の目的は、低遅延要求パケットの遅延時間を最小化できるシェーピング装置を提供することにある。
本発明の他の目的は、低遅延要求パケットの遅延時間を最小化できる可変長パケットの帯域制御に適したシェーピング装置を提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明によるシェーピング装置は、同一回線上に多重化される複数ユーザの受信パケットに、各ユーザの契約帯域を保証するように送信予定時刻を割当て、受信パケットの遅延クラス別に、予め送信予定時刻の最も早いユーザを暫定送信ユーザとして選択しておくことによって、パケット送信制御部が、優先クラスの暫定送信ユーザのパケットを非優先クラスの暫定送信ユーザのパケットよりも優先的に送信できるようにしたことを特徴とする。
【００１８】
具体的に言うと、本発明は、それぞれが遅延クラスと帯域識別情報を示す内部ヘッダを備えた複数の受信パケットを一時的に蓄積し、帯域識別情報に応じて各パケットの送信タイミングを制御するシェーピング装置において、パケット送信制御部と、メモリ内に複数のキューを形成し、各受信パケットをその内部ヘッダが示す遅延クラスと帯域識別情報とによって決まる何れかのキューに蓄積しておき、上記パケット送信制御部からの送信指令で特定されるキューから１つの蓄積パケットを出力するパケットバッファリング部と、それぞれが優先度の異なる特定の遅延クラスと対応付けられ、各受信パケットの内部ヘッダに帯域識別情報として含まれる契約帯域識別子別にパケット送信制御情報を記憶した複数の契約帯域制御情報部とからなり、
上記各契約帯域制御情報部が、上記パケット送信制御情報に基づいて、それぞれが上記パケットバッファリング部に送信待ちパケットをもつ複数の契約帯域のうち、最も早くパケット送信すべき契約帯域を選択して、該契約帯域を遅延クラス代表契約帯域として記憶するクラス代表選択部を有し、上記パケット送信制御部が、上記各契約帯域制御情報部が示す遅延クラス代表契約帯域のパケット送信制御情報に基づいて、パケット送信すべき契約帯域を選択し、該契約帯域のパケット送信制御情報が示す送信タイミングで、上記パケットバッファリング部にパケットの送信指令を発行することを特徴とする。
【００１９】
本発明の１実施例では、各受信パケットの内部ヘッダが、帯域識別情報として契約帯域識別子とフロー識別子とからなる階層化帯域識別子を含み、シェーピング装置が、更に、それぞれが優先度の異なる特定の遅延クラスと対応付けられ、各受信パケットの内部ヘッダに帯域識別情報として含まれる契約帯域識別子毎に、フロー識別子別のパケット送信制御情報を記憶した複数のフロー制御情報部を有し、上記パケット送信制御部が、選択された契約帯域のパケット送信制御情報が示す送信タイミングで、該契約帯域と対応するフロー制御情報部が示すパケット送信制御情報に従って、前記パケットバッファリング部にパケットの送信指令を発行することを特徴とする。
【００２０】
本発明の好ましい実施例では、各フロー帯域制御情報部が、パケット送信制御情報に基づいて、それぞれが上記パケットバッファリング部に送信待ちパケットをもつ複数のフローのうち、最も早くパケット送信すべきフローを選択して、該フローを遅延クラス代表フローとして記憶するクラス代表フロー選択部を有し、上記パケット送信制御部が、選択された契約帯域と対応するフロー制御情報部が示す遅延クラス代表フローのパケット送信制御情報に従って、パケットの送信指令を発行することを特徴とする。
【００２１】
尚、複数のフローを１つのフロー集合として帯域制御する場合は、上記フロー制御情報部に代えて、契約帯域識子毎に、フロー集合識別子別のパケット送信制御情報を記憶したフロー集合制御情報部を設け、上記パケット送信制御部が、選択した契約帯域と対応するフロー集合制御情報部が示すパケット送信制御情報に従って、パケットの送信指令を発行するようにすればよい。
【００２２】
更に詳述すると、本発明のシェーピング装置は、パケットバッファリング部によるパケットの送信時に、該送信パケットの属する契約帯域におけるパケット送信予定時刻を計算し、上記パケットバッファリング部によるパケットの受信時に、該受信パケットの属する契約帯域における既存のパケット送信予定時刻とが所定の条件を満たした時、パケット送信予定時刻を計算する送信予定時刻計算回路を有し、上記契約帯域制御情報部が、上記送信予定時刻計算回路で計算されたパケット送信予定時刻を上記送受信パケットの契約帯域識別子と対応するパケット送信制御情報として記憶し、上記クラス代表選択部が、送信待ちパケットを持つ複数の契約帯域のうち、上記パケット送信予定時刻が最も早い契約帯域を前記遅延クラス代表契約帯域として選択することを特徴とする。
【００２３】
本発明のシェーピング装置の更に他の特徴は、シェーピング制御モードを指定するためのモードメモリを有し、上記パケット送信制御部が、上記モードメモリが指定する制御モードに従って、複数の遅延クラス代表契約帯域のなかからパケット送信すべき契約帯域を選択するようにしたことにある。
【発明の効果】
【００２４】
本発明のシェーピング装置によれば、遅延クラス（優先度）別に暫定送信ユーザ（クラス代表契約帯域）を選択しておくことによって、優先度の低いクラスの送信予定時刻の早い通常パケットよりも、優先度の高いクラスの送信予定時刻の遅い低遅延要求パケットを優先的に送信することが可能となり、優先クラスのパケットの通信遅延を小さくできる。また、従来のように、優先度に関係なく送信予定時刻順のパケット送信モードでシェーピングを実現したい場合は、遅延クラス（優先度）別に選択された複数の暫定送信ユーザ（クラス代表契約帯域）のなかから、送信予定時刻の最も早い暫定送信ユーザを選択し、このユーザに所属したパケットの中で送信予定時刻の最も早いパケットを送信すればよい。
【発明を実施するための最良の形態】
【００２５】
以下、本発明のシェーピング部と、これを応用したルータについて、図面を参照して説明する。
ルータは、１つの出力回線上に多重化される複数ユーザのトラフィックに対して、各ユーザが予め契約した帯域を保証する。各ユーザは、契約帯域の範囲内で同一の出力回線に複数のフローを多重化できる。各フローには、予め定義された複数の遅延クラスのうちの１つが割当てられる。ここで、「フロー」とは、パケットヘッダ内の特定のヘッダ情報の組み合せによって同定される同一グループに所属する一連のパケットからなる一方向のトラフィックを指す。以下の説明では、簡単化のために、上記遅延クラスとして、できるだけ低い通信遅延を保証する「優先クラス」と、優先クラスよりも通信遅延が大きい「非優先クラス」の２クラスを前提とする。
【００２６】
図２は、本発明のシェーピング部が適用されるルータ２００のブロック構成の１例を示す。
ルータ２００は、パケットが流入するＮ本の入力回線２０１（２０１−１〜２０１−Ｎ）と、パケットが送出されるＮ本の出力回線２０２（２０１−１〜２０２−Ｎ）と、それぞれ１対の入出力回線２０１−ｉ、２０２−ｉに接続されるＮ個のインターフェース部２１０−ｉ（ｉ＝１−Ｎ）と、これらのインターフェース部２１０−ｉの間でパケットをスイッチングするパケット中継部２５０、各インターフェース部２１０−ｉとパケット中継部２５０に接続された制御部２９０とからなる。上記制御部２９０は、ルータの外部に位置した管理端末１と接続されている。
【００２７】
インターフェース部２１０−ｉ（ｉ＝１−Ｎ）は、入力回線２０１−ｉとパケット中継部２５０との間に接続されたパケット受信回路２３０と、該パケット受信回路２３０に付随するヘッダ処理部２４０と、パケット中継部２５０から受信した出力パケットを一時的に蓄積し、遅延クラスに従ってユーザ毎、フロー毎の帯域制御を行うシェーピング部１００と、該シェーピング部１００からの出力パケットを出力回線２０２−ｉに送信するパケット送信回路２７０から構成される。
【００２８】
ヘッダ処理部２４０は、パケット受信回路２３０が信号線２１に出力する入力パケットのヘッダ情報および入力回線番号に基づいて、図示しないフロー定義テーブルから各入力パケットと対応するユーザ番号、フロー番号、遅延クラスを検索し、検索結果をフロー検出情報として信号線２２に出力するフロー検出部２４１と、上記信号線２１に出力されたヘッダ情報に基づいて、図示しないルーティングテーブルから入力パケットの転送先となる出力回線の番号を検索し、これを信号線２３に出力するルーティング処理部２４２とを含んでいる。
【００２９】
図３は、パケット受信回路２３０が入力回線２０１−ｉから受信する入力パケット３００のフォーマットの１例を示す。
入力パケットは、ヘッダ部３１０とデータ（ペイロード）部３２０とから構成される。本実施例では、入力パケットとして、ヘッダ部３１０にＩＰヘッダとＴＣＰ／ＵＤＰヘッダとを含むＩＰパケットを想定する。この場合、ヘッダ部３１０には、フロー検出に関係するヘッダ情報として、パケットの送信元端末を示す送信元ＩＰアドレス（Source IP Address：ＳＩＰ）３１１と、パケットの宛先端末を示す宛先ＩＰアドレス（Destination IP Address：ＤＩＰ）３１２と、プロトコル（上位アプリケーション）を表す送信元ポート番号（Source Port：ＳＰＯＲＴ）３１３および宛先ポート番号（Destination Port：ＤＰＯＲＴ）３１４と、ネットワーク内でのパケットの転送優先度を表すＤＳＣＰ３１５を含む。データ部３２０には、ユーザデータ３２１が含まれる。
【００３０】
図４は、パケット中継部２５０が取り扱うルータ内部パケット３５０のフォーマットの１例を示す。
内部パケット３５０は、入力パケット３００の先頭に内部ヘッダ部３３０を付加した構成となっている。内部ヘッダ部３３０は、入力パケットのバイト長を表すパケット長３３１と、該パケットが受信された入力回線を示す入力回線番号３３２と、該パケットの出力回線を示す出力回線番号３３３と、該パケットと対応するユーザ番号（契約帯域識別子）３３４、フロー番号（フロー識別子）３３５、遅延クラス３３６を含む。
【００３１】
パケット受信回路２３０は、入力回線２０１からパケットを受信すると、内部ヘッダ３３０を付加し、入力パケットを一時的にバッファリングする。内部ヘッダ３３０には、パケット受信中に検出された入力パケットのバイト長（パケット長）３３１と、パケットの入力回線２０１−ｉを示す入力回線番号３３２とが書き込まれる。この時、パケット受信回路２３０は、入力回線番号３３２と、ヘッダ部３１０から抽出した情報要素３１１〜３１５をパケットヘッダ情報として信号線２１に送出する。
【００３２】
ヘッダ処理部２４０では、上記パケットヘッダ情報に応答して、フロー検出部２４１が、ユーザ番号、フロー番号、遅延クラスを含むフロー検出情報を信号線２２に出力し、ルーティング処理部２４２が、パケットヘッダ情報中のＤＩＰ３１２に対応する出力回線番号を信号線２３に出力する。尚、入力パケットのヘッダ部３１０には、情報要素３１１〜３１５以外に、例えば、ＩＰ層の上位プロトコルや、イーサネット（データリンクレイヤ）のＭＡＣアドレス等、フロー検出に利用可能な他の情報要素も含まれているため、フロー検出部２４１は、これらの情報要素も利用した形で、上述したユーザ番号、フロー番号、遅延クラスを判定するようにしても良い。
【００３３】
パケット受信回路２３０は、ヘッダ処理部２４０から出力回線番号とフロー検出情報を受信すると、出力回線番号を内部ヘッダの出力回線番号３３３に書込み、フロー検出情報を内部ヘッダのユーザ番号３３４〜遅延クラス３３６に書き込んだ後、内部パケット３５０をパケット中継部２５０に送信する。パケット中継部２５０は、各パケット受信回路２３０から受信した内部パケット３５０を出力回線番号３３３で特定される何れかのインターフェース部２１０−ｊに転送する。
【００３４】
シェーピング部１００は、ユーザ番号毎に、フロー番号と対応した複数のキューを備えている。インターフェース部２１０−ｊのシェーピング部１００は、パケット中継部２５０から受信した内部パケットを内部ヘッダのユーザ番号３３４とフロー番号３３５によって特定される何れかのキューに一時的に蓄積しておき、パケット送信回路２７０がパケット送信完了の都度発行するパケット送信起動信号２４に応答して、後述するシェーピングアルゴリズムによって決定された特定ユーザの特定フローに属したパケットをキューから読み出し、パケット送信回路２７０に送信する。
【００３５】
パケット送信回路２７０は、シェーピング部１００から内部パケットを受信すると、受信パケットから内部ヘッダ部３３０を除去し、ＩＰパケットとして出力回線２０２に送信する。パケット送信回路２７０は、ＩＰパケットの送信を完了すると、シェーピング部１００にパケット送信起動信号２４を発行する。
【００３６】
図１は、本発明のシェーピングアルゴリズムを実現するシェーピング部１００の１実施例を示す。
シェーピング部１００は、複数のキューが形成されるバッファメモリを有し、パケット中継部２５０から受信した内部パケットをユーザ番号とフロー番号との組み合せに応じてキューイングするパケットバッファリング部１１０と、帯域管理テーブル１８０が示すフロー毎の設定帯域に基づいて、フロー別のパケット送信予定時刻を計算するフロー送信予定時刻計算部１３０と、帯域管理テーブル１８０が示すユーザ毎の契約帯域に適合し、且つ、フロー別の送信予定時刻にも適合するように、ユーザ別のパケット送信予定時刻を計算するユーザ送信予定時刻計算部１４０と、フロー送信予定時刻計算部１３０とユーザ送信予定時刻計算部１４０に結合された優先フローソーティング部１７０Ａおよび非優先フローソーティング部１７０Ｂと、ユーザ送信予定時刻計算部１４０に結合された優先クラスユーザソーティング部１５０Ａおよび非優先クラスユーザソーティング部１５０Ｂと、これらのソーティング部１５０Ａ〜１７０Ｂに結合されたパケット送信制御部１２０と、パケット送信制御部１２０に接続された制御モードメモリ１９０とからなっている。
【００３７】
制御モードメモリ１９０には、パケット送信制御部１２０で実行すべきシェーピング制御モードが記憶される。本実施例では、制御モードとして、遅延クラスを考慮して送信パケットを決定する優先パケット先行モードと、遅延クラスに無関係に送信予定時刻順に送信パケットを決定する通常モードとがある。制御モードは、オペレータが管理端末１で指定し、制御部２９０を介して制御モードメモリ１９０に記憶される。制御モードの指定は、ユーザ番号（契約帯域）毎に個別の制御モードとして指定してもよいし、各インタフェース部で扱う全てのユーザパケットに一律に適用する共通の制御モードとして指定してもよい。
【００３８】
フロー送信予定時刻計算部１３０は、パケットバッファリング部１１０におけるパケットの送受信の都度、帯域管理テーブル１８０を参照し、送信パケットまたは受信パケットの所属フローにおけるパケット送信予定時刻を計算するフロー予定時刻計算回路１３１からなる。
【００３９】
優先フローソーティング部１７０Ａは、二分木ソート回路１７１Ａとフロー制御情報メモリ１７２Ａからなる。二分木ソート回路１７１Ａは、フロー制御情報メモリ１７２Ａが示す優先クラスに属した複数のフローを送信予定時刻順にソーティングし、これらのフローの中から最先にパケット送信すべきフローを優先クラスの代表フロー（暫定送信フロー）として選択する。同様に、非優先フローソーティング部１７０Ｂも、二分木ソート回路１７１Ｂとフロー制御情報メモリ１７２Ｂとからなり、二分木ソート回路１７１Ｂは、フロー制御情報メモリ１７２Ｂが示す非優先クラスに属した複数のフローを送信予定時刻順にソーティングし、最先にパケット送信すべきフローを非優先クラスの代表フロー（暫定送信フロー）として選択する。
【００４０】
ユーザ送信予定時刻計算部１４０は、パケットバッファリング部１１０におけるパケットの送受信の都度、帯域管理テーブル１８０を参照し、送信パケットまたは受信パケットが所属するユーザのパケット送信予定時刻を計算するユーザ予定時刻計算回路１４１と、優先クラスユーザ予定時刻修正回路１４２と、非優先クラスユーザ予定時刻修正回路１４３とから構成される。
【００４１】
優先クラスユーザ予定時刻修正回路１４２は、優先フローソーティング部１７０Ａによる優先クラスのフロー選択結果を利用して、ユーザ予定時刻計算回路１４１で算出されたパケット送信予定時刻を修正する。同様に、非優先クラスユーザ予定時刻修正回路１４３は、非優先フローソーティング部１７０Ｂによる非優先クラスのフロー選択結果を利用して、ユーザ予定時刻計算回路１４１で算出されたパケット送信予定時刻を修正する。これらの送信予定時刻の修正については、後で詳述する。
【００４２】
優先クラスユーザソーティング部１５０Ａは、二分木ソート回路１５１Ａとユーザ制御情報メモリ１５２Ａとからなり、それぞれが優先クラスフローに属した送信パケットをもつ複数のユーザの中から、送信予定時刻に従って、最先に送信すべきパケットをもつユーザを優先クラスの代表ユーザ（暫定送信ユーザ）として選び出すためのソーティング動作を行う。
【００４３】
非優先クラスユーザソーティング部１５０Ｂは、二分木ソート回路１５１Ｂとユーザ制御情報メモリ１５２Ｂとからなり、それぞれが非優先クラスのフローに属した送信パケットをもつ複数のユーザの中から、送信予定時刻に従って、最先に送信すべきパケットをもつユーザを非優先クラスの代表ユーザ（暫定送信ユーザ）として選び出すためのソーティング動作を行う。
【００４４】
パケット送信制御部１２０は、制御モードメモリ１９０で指定された制御モードと、上記フローソーティング部１７０Ａ、１７０Ｂおよびユーザソーティング部１５０Ａ、１５０Ｂにおける選択結果に基づいて、今回送信すべきパケットを特定し、信号線１１を介して、パケットバッファ部１１０に上記送信パケットの読み出しを指令する。
【００４５】
図５は、帯域管理テーブル１８０の１例を示す。
ここに示した帯域管理テーブル１８０は、ユーザ番号（契約帯域識別子）１８１と対応して、保証すべき契約帯域１８２と、契約帯域の範囲内で多重化される複数のフロー番号（フロー識別子）１８３と、フロー毎の設定帯域（フロー帯域）１８４と、パケット送信予定時刻計算に適用すべき計算ルール１８５を示している。
【００４６】
本実施例では、契約帯域１８２を送信データの１バイト当たりの帯域消費時間（時間間隔）ΔＴに換算した値で指定し、データ長Ｌのパケットが出力回線に送信された時、次のパケットの送信予定時刻ｔを
ｔ＝現在の送信予定時刻＋Ｌ・ΔＴ        …（１）
として算出するようにしている。
【００４７】
ユーザ番号１の契約帯域をΔＴ１、ユーザ番号２の契約帯域をΔＴ２で表した時、もし、ΔＴ１＝２×ΔＴ２の関係にあれば、ユーザ番号１の契約帯域は、ユーザ番号２の契約帯域の１／２となっていることを意味している。従って、送信パケット長が同一の場合、現在のパケット送信時刻を基準にして、ユーザ番号１に割当てられる次パケットの送信予定時刻ｔ１の値は、ユーザ番号２の次パケット送信予定時刻ｔ２の２倍の値となる。
こでは、ユーザ番号ｕに所属する第ｊフローをフロー番号（ｕ，ｊ）で示し、各フローの帯域１８４も、契約帯域１８２と同様、送信データの１バイト当たりの帯域消費時間ΔＴｕｊに換算した値で指定している。
【００４８】
適用計算ルール１８５は、パケット送信の都度、フロー予定時刻計算回路１３１とユーザ予定時刻計算回路１４１に適用すべき次パケット送信予定時刻計算のための計算式を示している。例えば、最大帯域を保証するＣＢＲフローに対しては、式（１）を適用し、ＵＢＲフローに対しては、次のパケットを直ちに送信できるように、次式（２）を適用する場合、適用計算ルール１８５によって、式（１）と式（２）の識別情報を与えればよい。
【００４９】
ｔ＝現在の送信予定時刻（または現在時刻）＋１    …（２）
尚、ＵＢＲフローに割当てるΔＴｕｊを最小値とすることによって、式（１）で計算してもＵＢＲフローの送信予定時刻が他のフローよりも早くなる場合は、全てのフローに同一計算式を適用できるため、適用計算ルール１８５の指定は不要となる。また、本実施例では、フロー送信予定時刻計算回路１３１とユーザ送信予定時刻計算回路１４１が、帯域管理テーブル１８０を共用しているが、フロー送信予定時刻計算回路用の帯域管理テーブルと、ユーザ送信予定時刻計算回路用の帯域管理テーブルに分けてもよい。
【００５０】
優先フローソーティング部１７０Ａのフロー制御情報メモリ１７２Ａは、ユーザ番号毎に、例えば、図６に示すように、優先クラスに属する各フローのフロー番号７００と、送信予定時刻７０１と、送信待ちパケットの有無を示すフラグ（ＶＬＤ）７０２とを示す複数のフロー制御情報エントリが記憶されている。上記フロー制御情報メモリ１７２Ａは、優先クラスのフロー制御情報エントリをフロー番号順に示したフロー情報エリア１７２２と、該フロー情報エリアの登録エントリを送信予定時刻７０１の早い順にソートした結果を示すソーティング情報エリア１７２１とからなる。
【００５１】
図６は、或るユーザ（契約帯域）に属する優先クラスのフロー数が８個の場合を示し、アドレス1000から1111がフロー情報エリア１７２２、アドレス0000から0111がソーティング情報エリア１７２１となっている。フロー情報エントリのソーティング動作とソーティング情報エリア１７２１におけるエントリの配列については後述する。上記フロー制御情報メモリ１７２Ａと同様、非優先フローソーティング部１７０Ｂのフロー制御情報メモリ１７２Ｂも、非優先クラスに属する複数のフロー制御情報エントリを記憶するフロー情報エリア１７２２と、該フロー情報エリアの登録エントリを送信予定時刻７０１の早い順にソートした結果を示すソーティング情報エリア１７２１とからなっている。
【００５２】
優先クラスユーザソーティング部１５０Ａのユーザ制御情報メモリ１５２Ａには、例えば、図７に示すように、ユーザ番号８００と、送信予定時刻８０１と、優先クラスに属するフローの送信待ちパケットの有無を示すフラグ（ＶＬＤ）８０２とを示す複数のユーザ帯域制御情報エントリが記憶されている。ユーザ制御情報メモリ１５２Ａは、それぞれ優先クラスのフローをもつ複数のユーザ帯域制御情報エントリをユーザ番号順に示したユーザ情報エリア１５２２と、該ユーザ情報エリアの登録エントリを送信予定時刻７０１の早い順にソートした結果を示すソーティング情報エリア１５２１とからなる。
【００５３】
同様に、非優先クラスユーザソーティング部１５０Ｂのユーザ制御情報メモリ１５２Ｂも、非優先クラスのフローをもつ複数のユーザ制御情報エントリをユーザ情報エリア１５２２とソーティング情報エリア１５２１に記憶している。
【００５４】
次に、シェーピング部１００の動作について、図１と、図８〜図１２を参照して詳細に説明する。
【００５５】
１．パケット受信処理５００
図８は、パケット中継部２５０からの内部パケットの受信処理を示すフローチャートを示す。ここでは、受信した内部パケットのユーザ、フロー、遅延クラスをそれぞれユーザ（ｒ）、フロー（ｒ，ｓ）、遅延クラス（ｒ，ｓ）と表記する。
【００５６】
パケット中継部２５０からシェーピング部１００に転送された内部パケットは、パケットバッファリング部１１０に入力される。パケットバッファリング部１１０は、上記内部パケットを受信すると、受信パケットをフロー別のキューに一時的に蓄積すると共に、受信パケットの内部ヘッダから抽出したユーザ番号、フロー番号、遅延クラスを信号線１３に受信パケット情報として出力する（ステップ５０１）。上記受信パケット情報に応答して、フロー予定時刻計算回路１３１がフロー別の送信時刻計算（５１０）を実行し、ユーザ予定時刻計算回路１４１がユーザ別の送信時刻計算（５２０）を実行する。
【００５７】
（１）フロー別の送信時刻計算（ステップ５１０）
フロー予定時刻計算回路１３１は、信号線１３を介して受信パケット情報を受信すると、図９に示すように、受信パケット情報が示す遅延クラス（優先または非優先）と対応する二分木ソート回路１７１Ａまたは１７１Ｂを介して、フロー制御情報メモリ１７２Ａまたは１７２Ｂのフロー情報エリア１７２２から、フロー（ｒ，ｓ）のフロー帯域制御情報を読み出し（５１１）、該フロー帯域制御情報に含まれるＶＬＤの値を判定する（５１２）。
【００５８】
ＶＬＤが“１”の場合は、送信待ちパケットに対する送信予定時刻が既に割当て済みとなっており、今回、送信予定時刻を更新すると、フロー（ｒ，ｓ）の設定帯域を守れなくなる。従って、フロー予定時刻計算回路１３１は、送信予定時刻を更新することなく、遅延クラス（ｒ，ｓ）に対応する二分木ソート回路１７１Ａまたは１７１Ｂに、上記フロー帯域制御情報に基づくフローソーティングを指令する（５１６）。
【００５９】
一方、ＶＬＤが“０”の場合は、フロー予定時刻計算回路１３１は、フロー帯域制御情報に含まれる送信予定時刻と現在時刻とを比較する（５１３）。もし、送信予定時刻＞現在時刻の場合、今回、送信予定時刻を更新すると、フロー（ｒ，ｓ）の設定帯域を守れなくなるため、フロー予定時刻計算回路１３１は、送信予定時刻を更新することなく、フロー帯域制御情報のＶＬＤの値のみを“１”に変更し（５１５）、遅延クラス（ｒ，ｓ）に対応する二分木ソート回路１７１Ａまたは１７１Ｂに、上記フロー帯域制御情報に基づくフローソーティングを指令する（５１６）。
【００６０】
ＶＬＤが“０”で、送信予定時刻＞現在時刻でなかった場合、すなわち、前回計算された送信予定時刻に到達または経過していた場合は、受信パケットを直ちに送信可能な状態となっており、送信予定時刻を適当な時刻に更新してもかまわない。そのため、フロー予定時刻計算回路１３１は、受信パケットに最も早く送信させるために、上記フロー帯域制御情報の送信予定時刻を式（２）に従って更新し（５１４）、ＶＬＤを“１”に変更して（５１５）、遅延クラス（ｒ，ｓ）に対応する二分木ソート回路に、上記更新されたフロー帯域制御情報に基づくフローソーティングを指令する（５１６）。
【００６１】
（２）ユーザ別の送信時刻計算（ステップ５２０）
一方、信号線１３を介して受信パケット情報を受信したユーザ予定時刻計算回路１４１も、受信パケット情報が示す遅延クラスと対応する二分木ソート回路１５１Ａまたは１５１Ｂを介して、ユーザ制御情報メモリ１５２Ａまたは１５２Ｂのユーザ情報エリア１５２２から、ユーザ（ｒ）のユーザ帯域制御情報を読み出す。この後、フロー予定時刻計算回路１３１と同様、ＶＬＤが“０”で送信予定時刻に到達または経過していた場合にのみ、ユーザ帯域制御情報の送信予定時刻を式（２）に従って更新する。
【００６２】
ユーザ予定時刻計算回路１４１で計算された送信予定時刻をそのまま適用してユーザ情報エリア１５２２の登録エントリをソーティングすると、送信制御部１２０がパケット送信すべきフローを判定した時、ユーザソーティング部が選択した暫定送信ユーザが送信予定時刻に達しても、フローソーティング部１７０Ａまたは１７０Ｂが選択した暫定送信フローでは、未だ送信予定時刻に達していないケースが生じる。この場合、暫定送信フロー側でパケットが送信可能になるまで、パケットの送信が見送られるため、出力回線の帯域に無駄が生じる。そこで、本実施例では、ユーザ予定時刻計算回路１４１が、上記ユーザ帯域制御情報を、受信パケット情報が示す遅延クラス（ｒ，ｓ）と対応する優先クラスユーザ時刻修正回路１４２または非優先クラスユーザ時刻修正回路１４３に出力し、必要に応じて上記ユーザ帯域制御情報に含まれる送信予定時刻を修正する。ユーザ時刻修正回路１４２と１４３の動作については、後で詳述する。
【００６３】
受信パケットのフロー（ｒ，ｓ）において送信予定時刻が更新されると、フロー（ｒ，ｓ）が属する遅延クラスの中で暫定送信フローが入れ替わる可能性がある。そこで、優先フローソーティング部１７０Ａの二分木ソート回路１７１Ａまたは非優先フローソーティング部１７０Ｂの二分木ソート回路１７１Ｂは、フロー予定時刻計算回路１３１からフローソーティング指令を受信すると、暫定送信フローを判定し直すためのフローソーティング（５３１）を実行する。
【００６４】
（３）フローソーティング（ステップ５３１）
以下の説明では、受信パケットの遅延クラス（ｒ，ｓ）が優先クラスであって、ユーザ（ｒ）の優先クラスのフロー（ｒ，ｎ）として、例えば、図１０に示すように、フロー（０）〜フロー（７）の８フローが存在した場合を仮定する。ここでは、簡単化のために、、フロー（ｒ，ｎ）を単にフロー（ｎ）と記載している（ｎ＝０〜７）。
【００６５】
図１０は、ソーティング処理によって形成される二分木構造を示している。二分木の頂点（「根」）、分岐点、先端（「葉」）には、それぞれフロー帯域制御情報エントリ９００〜９３７が位置している。二分木の根に位置するエントリ９００を「根エントリ」、葉に位置するエントリ９３０〜９３７を「葉エントリ」、任意のエントリからみて根側にあるエントリを「親エントリ」、葉側にある二つのエントリを「子エントリ」と呼ぶ。各エントリを示すブロック内で、１行目はフロー番号、２行目の数字は現在時刻を０とした場合の送信予定時刻、３行目の数字はＶＬＤの値を示している。図６に示したフロー制御情報メモリ１７２のフロー情報エリア１７２２には、上記葉エントリ９３０〜９３７に相当するフロー帯域制御情報が、フロー番号順に配列されている。
【００６６】
上記二分木構造の根と各分岐点には、葉エントリを最下層の子エントリとして、以下に述べる選択規則に従って、隣り合う１対の子エントリの一方を親エントリとして選択し、選択されたエントリを次層の子エントリとして更に上位層の親エントリを次々と選択することによって、最終的に根エントリが暫定送信フローの帯域制御情報を示すようにソーティングされる。
【００６７】
（規則１）  子エントリの双方がＶＬＤ＝“１”となっていた場合は、送信予定時刻が早い（送信予定時刻を過ぎている場合を含む）方の子エントリを親エントリとして選択する。この規則によって、例えば、エントリ９２０として、子エントリ９３１の情報が記憶される。送信予定時刻が同一の場合は、どちらが選択されても良い。
（規則２）  子エントリの一方がＶＬＤ＝“１”、他方がＶＬＤ＝“０”となっていた場合、ＶＬＤ＝“１”の子エントリを親エントリとして選択する。この規則によって、例えば、エントリ９２２として、エントリ９３５の情報が記憶される。
（規則３）  子エントリの双方がＶＬＤ＝“０”となっていた場合、送信予定時刻が早い方の子エントリを親エントリとして選択する。この規則によって、例えば、エントリ９２１には、エントリ９３２の情報が記憶される。送信予定時刻が同一の場合は、どちらが選択されても良い。
【００６８】
次に、図６と図１０を参照して、上述した二分木構造とフロー制御情報メモリ１７２Ａ（１７２Ｂ）のソーティング情報エリア１７２１に記憶されるエントリとの関係について説明する。
（Ａ）二分木構造の根エントリは、アドレス「000…001」番地に記憶される。
（Ｂ）アドレス「xyy…yyz」番地に位置したエントリに着目すると、その親エントリは、現在アドレス「xyy…yyz」を１ビット右シフトした「0xy…yyy」番地に位置している。また、二つの子エントリは、現在アドレス「xyy…yyz」を１ビット左シフトした「yyy…yz0」番地と「yyy…yz1」番地に位置している。
【００６９】
以上の規則でソーティング情報エリア１７２１内のエントリ記憶アドレスを管理すると、フロー予定時刻計算回路１３１からフロー帯域制御情報を与えられた時、ソーティング時のメモリアクセスのためのアドレスの生成回路の構成を簡単化できる。
即ち、フロー帯域制御情報が示すフロー番号ｓをもつ葉エントリが、フロー情報エリア１７２２のアドレス「xyy…yyz」番地に位置していた場合、比較対象となる子エントリは、現在アドレスの最下位ビットＬＳＢの値ｚを反転して得られる「xyy…yy(z)」番地に記憶されている。また、比較結果の書込み先アドレスは、現在アドレスを１ビット右シフトして得られる「0xy…yyy」番地となる。
【００７０】
次に、受信パケットの遅延クラス（ｒ，ｓ）が優先クラスの場合に、二分木ソート回路１７１Ａが実行するソーティング動作（図８のステップ５３１）について説明する。非優先クラスのパケットを受信した場合、二分木ソート回路１７１Ｂが実行するソーティング動作もこれと同様である。
【００７１】
二分木ソート回路１７１Ａは、フロー制御情報メモリ１７２Ａにおいて、フロー予定時刻計算回路１３１から受信したフロー帯域制御情報に従って、フロー番号（ｒ，ｓ）と対応する葉エントリの内容を更新する。ここでは、ＶＬＤ７０２の値が必ず“１”になる。また、送信予定時刻７０１は、フロー予定時刻計算回路１３１で新たな送信予定時刻を算出（ステップ５１４）した場合は、新たな時刻に更新される。
【００７２】
例えば、図１０の二分木構造において、上記フロー番号（ｒ，ｓ）と対応する葉エントリがエントリ９３４であり、その送信予定時刻が「１」に変更されたと仮定する。この場合、二分木ソート回路１７１Ａは、上記エントリ９３４を基点として子エントリを特定し、前述の規則１〜規則３に従って親エントリとなるべき子エントリを選択し、上記エントリ９３４から根エントリ９００に向かう経路上に位置したエントリ９２２、９１１、９００の内容（フロー番号、送信予定時刻、ＶＬＤ）を順次に書き換える。
【００７３】
この例では、図１０に示した二分木は、結果的に図１１に示すように、エントリ９２２、９１１、９００の位置に上記エントリ９３４の内容を記憶した構造に変化する。この場合、図６に示したソーティング情報エリア１７２１は、フロー情報エリア１７２２におけるエントリ９３４の現在アドレス「1100」を順次に右シフトして得られるアドレス「0110」、「0011」、「0000」に、エントリ９３４の新たな内容を複写した状態に変化する。
【００７４】
二分木ソート回路１７１Ａは、フローソーティング（フローソーティング情報エリア１７２１の更新）が完了すると、優先クラスのユーザ予定時刻修正回路１４２に、根エントリ９００の内容（暫定送信フローのフロー帯域制御情報）を送信して、根エントリ９００と対応するユーザ予定時刻の修正を指示する。二分木ソート回路１７１Ｂでフローソーティングを実行した場合は、非優先クラスのユーザ予定時刻修正回路１４３に対して、ユーザ予定時刻の修正が指示される。これによって、図８に示したユーザ送信予定時刻の修正（５３２）が実行される。
【００７５】
（４）ユーザ別の送信予定時刻修正（ステップ５３２）
優先クラスのユーザ時刻修正回路１４２は、二分木ソート回路１７１Ａから暫定送信フローのフロー帯域制御情報を受信すると、フロー帯域制御情報が示すＶＬＤの値に応じて送信予定時刻を選択的に修正する。パケット受信時には、受信パケットの遅延クラスと対応するフロー制御情報メモリ１７２Ａまたは１７２Ｂにおいて、暫定送信フローのＶＬＤは必ず“１”となっている。この場合、ユーザ時刻修正回路１４２は、フロー帯域制御情報が示す送信予定時刻と、ユーザ予定時刻計算回路１４１から与えられたユーザ帯域制御情報が示すユーザ（ｒ）の送信予定時刻とを比較して、遅い方（より未来）の時刻を選択し、二分木ソート回路１５１Ａに対して、上記選択された時刻をユーザ（ｒ）の送信予定時刻として含むユーザ帯域制御情報を送信して、ユーザソーティング（５３３）を指令する。
【００７６】
非優先クラスのユーザ予定時刻修正回路１４３も、優先クラスのユーザ時刻修正回路１４２と同様の規則で送信予定時刻を修正し、二分木ソート回路１５１Ｂにユーザソーティングを指令する。
【００７７】
（５）ユーザソーティング（ステップ５３３）
ユーザソーティング部１５０Ａ、１５０Ｂでは、ユーザ情報エリア１５２２の登録エントリを送信予定時刻順にソーティングして、パケットバッファ部１１０に送信パケットをもつユーザのうち、最も早くパケット送信すべきユーザをそれぞれの遅延クラスの代表ユーザ（暫定送信ユーザ）として決定する。フローソーティングと同様の理由で、ユーザ（ｒ）のパケット受信によってユーザ別の送信予定時刻が更新されると、受信パケットの遅延クラスにおける暫定送信ユーザが入れ替わる可能性がある。
【００７８】
そこで、受信パケットが優先クラスの場合は、優先クラスの二分木ソート回路１５１Ａが、優先クラスユーザ予定時刻修正回路１４２から受信したユーザ帯域制御情報に基づいて、ユーザ制御情報メモリ１５２Ａのユーザ情報エリア１５２２における該当エントリの内容を書き換え、該エントリを基点として、二分木ソート回路１７１Ａと同様のソーティング処理を実行する。受信パケットが非優先クラスの場合は、二分木ソート回路１５１Ｂが、非優先クラスユーザ予定時刻修正回路１４３から受信したユーザ帯域制御情報に基づいて、ユーザ制御情報メモリ１５２Ｂで上記二分木ソート回路１５１Ａと同様の処理を実行する。
以上の動作によって、パケット中継部２５０からのパケット受信処理が終了する。
【００７９】
２．パケット送信処理６００
次に、図１と図１２を参照して、パケット送信制御部１２０が主体となって実行されるパケット送信処理について説明する。
ここでは、二分木ソート回路１５１Ａと１５１Ｂが選択している優先クラス、非優先クラスの暫定送信ユーザをそれぞれユーザ（ｉ）、ユーザ（ｊ）とし、二分木ソート回路１７１Ａが暫定送信フローとして選択しているユーザ（ｉ）の優先クラスのフローと、二分木ソート回路１７１Ｂが暫定送信フローとして選択しているユーザ（ｊ）の非優先クラスのフローをそれぞれフロー（ｉ，ｋ）、フロー（ｊ，ｌ）とする。また、以下の説明では、送信予定時刻が現在時刻に一致または経過していた場合に、暫定送信ユーザまたは暫定送信フローが送信可能状態にあるものとする。
【００８０】
（１）送信パケットの選択（ステップ６０１〜６０７）
パケット送信制御部１２０は、パケット送信回路２７０が発行するパケット送信起動信号２４を受信すると、ユーザ制御情報メモリ１５２Ａの根エントリから、優先クラスの暫定送信ユーザ（ｉ）のＶＬＤと送信予定時刻を読み出し、ユーザ（ｉ）が送信可能状態になったか否かを判定する（６０１）。ユーザ（ｉ）が送信可能状態になければ、ユーザ制御情報メモリ１５２Ｂの根エントリから、非優先クラスの暫定送信ユーザ（ｊ）のＶＬＤと送信予定時刻を読み出し、ユーザ（ｊ）が送信可能状態になったか否かを判定する（６０３）。
【００８１】
ユーザ（ｉ）、ユーザ（ｊ）の双方が送信不可状態にある間は、パケット送信制御部１２０は、ユーザ制御情報メモリ１５２Ａ、１５２Ｂの根エントリの監視を繰り返し、時間の経過に伴って、ユーザ（ｉ）またはユーザ（ｊ）が送信可能状態になるのを待つ。前述したようにユーザ送信予定時刻を修正（５３２）した結果、ユーザ（ｉ）が送信可能状態になった時には、必然的に優先フロー（ｉ，ｋ）も送信可能状態となっている。同様に、ユーザ（ｊ）が送信可能状態になった時は、フロー（ｊ，ｌ）も送信可能状態となっている。
【００８２】
パケット送信制御部１２０は、優先クラスの暫定送信ユーザ（ｉ）が送信不可状態で、非優先クラスの暫定送信ユーザ（ｉ）が送信可能状態の場合、ユーザ制御情報メモリ１７２Ｂの根エントリから、非優先クラス暫定フローのフロー番号（ｊ，ｌ）を特定し（６０４）、信号線１１を介して、パケットバッファ部１１０に上記フロー番号（ｊ，ｌ）のパケット送信を指示する（６０８）。
【００８３】
パケット送信制御部１２０は、優先クラスの暫定送信ユーザ（ｉ）が送信可能状態となった場合は、フロー制御情報メモリ１７２Ａの根エントリから、優先クラスの暫定送信フローのフロー番号（ｉ，ｋ）を特定する（６０２）。本実施例では、パケット送信制御部１２０は、制御モードメモリ１９０が示す制御モードを判定する（６０５）。制御モードが個別指定となっていた場合、パケット送信制御部１２０は、制御モードメモリ１９０からユーザ番号ｉに対応する制御モードを読み出す。もし優先パケット先行モードとなっていた場合は、信号線１１を介して、パケットバッファ部１１０に上記優先クラス暫定送信フローのフロー番号（ｉ，ｋ）のパケット送信を指示する（６０８）。
【００８４】
制御モードが通常モードとなっていた場合、パケット送信制御部１２０は、非優先クラスの暫定送信ユーザ（ｊ）のＶＬＤと送信予定時刻を読み出し、ユーザ（ｊ）が送信可能状態になったか否かを判定する（６０６）。ユーザ（ｊ）が送信不可状態であれば、パケットバッファ部１１０に優先クラス暫定送信フローのフロー番号（ｉ，ｋ）のパケット送信を指示する（６０８）。非優先クラスの暫定送信ユーザ（ｊ）も送信可能状態となっていた場合、ユーザ（ｉ）とユーザ（ｊ）のうち、送信予定時刻の早い方のフロー番号を選択し（６０７）、パケットバッファ部１１０に該フロー番号のパケット送信を指示する（６０８）。
【００８５】
本実施例によれば、制御モードを優先パケット先行モードに設定しておくことによって、優先クラスユーザ（ｉ）と非優先クラスユーザ（ｊ）の双方が送信可能状態となった場合でも、優先クラスの暫定送信フロー（ｉ，ｋ）からパケットを送信できるため、非優先クラスのパケット転送による優先クラスパケットの大幅な通信遅延を防止することができる。また、制御モードを通常モードに設定しておけば、優先クラスパケットと非優先クラスパケットを送信予定時刻順に送信することができる。
【００８６】
パケットバッファリング部１１０は、パケット送信制御部１２０からのパケット送信指示（６０８）に応答して、指示されたフロー番号（ｉ，ｋ）または（ｊ，ｌ）のキューから１つの蓄積パケットを読み出し、これをパケット送信回路２７０に送信すると共に、上記送信パケットの内部ヘッダが示すパケット長、ユーザ番号、フロー番号および遅延クラスと、該ユーザ番号およびフロー番号と対応するキューにおける蓄積パケットの有無を示すフラグ情報とを含む送信パケット情報を信号線１２に出力する。
【００８７】
フロー予定時刻計算回路１３１とユーザ予定時刻計算回路１４１は、上記送信パケット情報の受信に応答して、それぞれフロー別の送信予定時刻計算（６１０）とユーザ別の送信予定時刻計算（６２０）を実行する。以下の説明では、送信パケットと対応するユーザ、フロー、遅延クラスをそれぞれユーザ（ｔ）、フロー（ｔ，ｕ）、遅延クラス（ｔ，ｕ）とする。
【００８８】
（２）フロー別の送信予定時刻計算（ステップ６１０）
送信パケット情報を受信すると、フロー予定時刻計算回路１３１は、送信パケットの長さＬと、帯域管理テーブル１８０が示すフロー（ｔ，ｕ）の設定帯域に従って、フロー（ｔ，ｕ）における次パケットの送信予定時刻を計算する。次パケットの送信予定時刻の計算は、式（１）に従って算出できる。但し、フロー別の帯域が、従来技術３の４．４．２章に記載されているContinuous-State Leaky Bucket Algorithmの遵守／違反判定において、遵守と判定されるように次パケットの送信予定時刻を計算しても良い。
【００８９】
次パケットの送信予定時刻計算は、フロー（ｔ，ｕ）のキューにおける送信待ちパケットの有無にかかわらず、パケット送信の都度、実行される。送信待ちパケットが無い場合でも、次パケットの送信予定時刻を計算しておくことによって、フロー（ｔ，ｕ）の新たな受信パケットに対して、設定帯域を遵守したパケット送信を行うことが可能となる。尚、送信パケット長に応じた帯域制御を施すことなく、受信パケットを速やかに送信すべきフロー（ｔ，ｕ）については、式（２）に従って次パケットの送信予定時刻を指定すれば良い。
【００９０】
フロー予定時刻計算回路１３１は、次パケットの送信予定時刻の計算を完了すると、パケットバッファリング部１１０から受信した上記送信パケット情報の送信予定時刻を更新し、これをフロー帯域制御情報として、送信パケット情報が示す遅延クラス（ｔ，ｕ）に対応する二分木ソート回路１７１Ａまたは１７１Ｂにフローソーティングを指令する。
【００９１】
（３）ユーザ別の送信予定時刻計算（ステップ６２０）
ユーザ予定時刻計算回路１４１も、パケットバッファリング部１１０から送信パケット情報を受信すると、送信パケットの長さＬと、帯域管理テーブル１８０が示すユーザ（ｔ）の契約帯域に従って、ユーザ（ｔ）における次パケットのユーザ送信予定時刻を計算する。次パケットの送信予定時刻の計算は、式（１）に従って算出できる。ユーザ予定時刻計算回路１４１は、次パケットの送信予定時刻の計算を完了すると、パケットバッファリング部１１０から受信した上記送信パケット情報の送信予定時刻を更新し、これをユーザ帯域制御情報として、送信パケット情報が示す遅延クラス（ｔ，ｕ）に対応する優先クラスユーザ予定時刻修正回路１４２または非優先クラスユーザ予定時刻修正回路１４３に与える。
【００９２】
（４）フローソーティング（ステップ６３１）
二分木ソート回路１７１Ａまたは１７１Ｂは、パケット受信時と同様、フロー予定時刻計算回路１３１から受信したフロー帯域制御情報に基づいて、フローソーティングを実行する。これによって、優先クラスのフロー制御情報メモリ１７２Ａまたは非優先クラスのフロー制御情報メモリ１７２Ｂの内容が更新され、遅延クラス（ｔ，ｕ）の根エントリに新たな暫定送信フローのフロー帯域制御情報が書込まれる。フローソーティングが終了すると、二分木ソート回路１７１Ａまたは１７１Ｂは、パケット受信時と同様に、遅延クラス（ｔ，ｕ）に対応するユーザ予定時刻修正回路１４２または１４３に、新たな暫定送信フローのフロー帯域制御情報に従ったユーザ送信予定時刻の修正を指示する。
【００９３】
（５）ユーザ送信予定時刻修正（ステップ６３２）
ユーザ予定時刻修正回路１４２または１４３は、二分木ソート回路１７１Ａまたは１７１Ｂから受信したフロー帯域制御情報に応じて、ユーザ帯域制御情報が示す送信予定時刻を修正する。ＶＬＤ＝“１”の場合は、パケット受信時と同様の規則で送信予定時刻が修正される。
【００９４】
今回のパケット送信によって、ユーザ（ｔ）の遅延クラス（ｔ，ｕ）において送信待ち状態のパケットが皆無となった時、規則（３）に従ってフローソーティングすると、暫定送信フローのＶＬＤが“０”となる可能性がある。ＶＬＤ＝“０”の場合も、パケット受信時と同様、ユーザ帯域制御情報が示す送信予定時刻とフロー帯域制御情報が示す送信予定時刻のうち、遅い方をユーザ（ｔ）の送信予定時刻として選択することによって、次に受信された遅延クラス（ｔ，ｕ）のパケットに対して、ユーザ契約帯域とフロー別の設定帯域の双方を遵守したパケット送信が可能となる。
【００９５】
尚、ＶＬＤ＝“０”の場合、現在のフロー送信予定時刻を経過した後は、ユーザ帯域制御情報が示す送信予定時刻が、式（２）に従って現在時刻＋１となるため、遅延クラス（ｔ，ｕ）の次の受信パケットは、新たな暫定送信フローの所属パケットとして、直ちに送信することが可能となる。この場合、式（２）に代えて、ユーザ送信予定時刻に現在時刻そのものを設定してもよい。
送信予定時刻の修正が完了すると、パケット受信時と同様の手順で、ユーザソーティング（６３３）が実行される。
【００９６】
本実施例のシェーピング部１００によれば、図１３に示したように、非優先クラスのパケットＰ１、Ｐ２、Ｐ３と、優先クラスのパケットＰ４が、それぞれ送信予定時刻ｔ１、ｔ２、ｔ３、ｔ４を割当てられ、時刻ｔ１でパケットＰ１の送信が開始された場合でも、パケットＰ１の送信が完了した時点ｔ５で、パケットＰ４の所属ユーザ４と所属フローをそれぞれ優先クラスの暫定送信ユーザ、暫定送信フローとして選択できる。従って、パケット送信制御部１２０で、優先パケット先行モードの暫定送信ユーザ選択を実行することによって、図１５に示すように、送信予定時刻の早い非優先クラスの先着パケットＰ２、Ｐ３が存在するにも関わらず、パケットＰ１の次にパケットＰ４を優先的に送信し、転送遅延を最小限に抑えることが可能となる。
【００９７】
尚、図１３において、パケットＰ１が短く、その送信が時刻ｔ３で完了したと仮定すると、時刻ｔ３では、優先パケットＰ４は送信可能状態となっていないため、非優先クラスのパケットＰ２、Ｐ３のうち、送信予定時刻の早いパケットＰ２が選択され、送信パケットとなる。この場合、優先パケットＰ４の送信開始は、パケットＰ２の送信が完了する時刻ｔ７まで遅れるが、優先パケットＰ４の送信遅延時間は、送信予定時刻ｔ４に送信中の１パケットで必要とする送信時間を超えることはない。
【００９８】
以上の実施例では、ユーザ毎の契約帯域と、各ユーザが契約帯域の範囲内で多重化したフロー別の設定帯域との二階層の帯域制御で転送パケットをシェーピングする例について説明したが、シェーピングにおける帯域の階層数は３以上であっても良い。３帯域層のシェーピングは、例えば、ユーザが企業の場合、キャリアが企業に保証した契約帯域（上位層帯域）を複数のサブ帯域（中間層帯域）に分割し、これらのサブ階層を企業内の複数の部門に割当て、各部門が割当てサブ帯域内で複数のフロー（下位層帯域）を多重化する形式の階層別帯域制御を行う場合に必要となる。
【００９９】
一般に、ｎ帯域層のシェーピング（ｎ：自然数）を行う場合には、送信予定時刻計算部とソーティング部（優先クラス用と非優先クラス用）を各帯域層に対応させてｎ組用意し、実施例で示した２帯域層のシェーピングと同様の動作を行えば良い。即ち、第ｉ帯域層の送信予定時刻計算部では、パケットの送受信の都度、第ｉ階層の保証帯域に基づいた独自の送信予定時刻を計算する。第ｉ帯域層のソーティング部は、第ｉ帯域層のソーティング情報エリアにおいて、送受信パケットと対応する１つの帯域制御情報エントリの送信予定時刻を変更した後、ソーティングを実行し、その帯域層で最先に送信すべきパケットが所属する帯域識別子を決定する。必要があれば、予定時刻修正回路によって、各帯域層の送信予定時刻をそれより下位の帯域層で計算した送信予定時刻に応じて修正する。
【０１００】
また、パケット送信制御部では、最上位帯域層のソーティング部で選択した優先クラス、非優先クラスの制御情報に従って、遅延クラス毎に送信すべきパケットの有無と送信予定時刻をチェックし、パケットが送信可能状態か否かを判定する。優先クラスに送信可能状態なパケットがあれば、最下位帯域層のソーティング部で選択した優先クラスの帯域識別子に従って、送信パケットを特定する。
【０１０１】
優先クラスに送信可能なパケットがなかった場合は、非優先クラスでパケットが送信可能状態か否かを判定し、送信可能状態であれば、最下位帯域層のソーティング部で選択した非優先クラスの帯域識別子に従って、送信パケットを特定する。優先クラス、非優先クラスの双方で、パケットが送信不可状態になっていた場合は、新たなパケットの受信による送信予定時刻と帯域識別子の変更、または時間の経過に伴って、優先クラス、非優先クラスの何れかでパケットが送信可能状態になるのを待つ。
【０１０２】
実施例では、遅延クラスが優先クラスと非優先クラスからなっているが、遅延クラスが３クラス以上になっていてもよい。この場合は、各帯域層に、遅延クラス数に応じた複数のソーティング部を用意し、最下位の帯域層以外の送信予定時刻計算部に、遅延クラス数に応じた複数の予定時刻修正回路を用意する。また、パケット送信制御部では、優先度の高い順に、パケットが送信可能状態か否かを判定するようにすればよい。
【０１０３】
実施例では、各インタフェース部２１０のフロー検出部２４１が、パケット受信回路２３０から受信した入力パケットのヘッダ情報と入力回線番号に基づいて、各パケットと対応するユーザ番号（契約帯域識別子）と、フロー番号（フロー識別子）と、遅延クラスを特定した。しかしながら、フロー検出部２４１が参照するフロー定義テーブルにおいて、複数のフローを予めグループ化し、各グループにフロー集合識別子を付与しておき、フロー検出部２４１が、フロー番号の代わりに、フロー集合識別子を信号線２２に出力するようにしてもよい。この場合、各ユーザの契約帯域内には、それぞれが少なくとも１つのフローを含む複数のフロー集合が多重化され、帯域管理テーブル１８０には、フロー集合識別子と対応してシェーピングすべき帯域が設定される。
【０１０４】
図１に示したシェーピング部１００において、フロー別の帯域設定を省略し、契約帯域だけの一階層の帯域制御で送信パケットをシェーピングする場合は、パケットバッファリング部１１０におけるフロー別のキューイングと、フロー送信予定時刻計算およびフローソーティングが不要となる。このように、シェーピング機能を一階層の帯域制御に縮退した場合、図１６に示すように、図１に示した構成からフロー送信予定時刻計算部１３０を除去できる。また、フロー検出部２４１が参照するフロー定義テーブルには、フロー識別子またはフロー集合識別子を定義しておく必要はなく、フロー検出部２４１は、入力パケットのヘッダ情報と入力回線番号に基づいて、各パケットと対応するユーザ番号と遅延クラスを特定できればよい。
【０１０５】
図１６に示すシェーピング部１００では、パケットバッファリング部１１０は、パケット中継部２５０からの受信パケットを内部ヘッダが示す遅延クラス毎に、ユーザ番号別にキューイングしておき、パケット送信時には、パケット送信制御部１２０から指定されたユーザ番号と遅延クラスに従って、該当キューから到着順に１つの蓄積パケットを読み出せばよい。
【０１０６】
フロー送信予定時刻計算部１３０が除去された結果、図１に示した優先フローソーティング部１７０Ａの二分木ソート回路１７１Ａと、非優先フローソーティング部１７０Ｂの二分木ソート回路１７１Ｂは、それぞれフロー制御情報メモリ１７７Ａ、１７７Ｂを読み書きするためのメモリ制御回路１７６Ａ、１７６Ｂに置き換えられる。また、フロー制御情報メモリ１７７Ａ、１７７Ｂには、ソーティング情報エリアは不要であり、それぞれのフロー情報エリアで、ユーザ毎に優先クラスまたは非優先クラスの蓄積パケットの有無（ＶＬＤ）を示す構成となる。メモリ制御回路１７６Ａ、１７６Ｂは、パケット送受信の都度、信号線１２、１３を介して、パケットバッファリング部１１０から送受信パケットのユーザ番号と遅延クラス、必要に応じて蓄積パケットの有無情報を受信し、フロー制御情報メモリ１７７Ａまたは１７７Ｂにおける上記ユーザ番号に該当するＶＬＤの値を更新する。
【０１０７】
パケット受信時には、図８に示したフローチャートから、フロー別の送信時刻計算（５１０）、フローソーティング（５３１）、ユーザ送信予定時刻修正（５３２）が省略される。パケットバッファリング部１１０が、信号線１３に、受信パケットのユーザ番号と遅延クラスを送出すると、遅延クラスが優先クラスの場合は、メモリ制御回路１７６Ａが、フロー制御情報メモリ１７７Ａの上記ユーザ番号と対応するエントリのＶＬＤを“１”にし、遅延クラスが非優先クラスの場合は、メモリ制御回路１７６Ｂが、フロー制御情報メモリ１７７Ｂに対して、これと同様の動作を実行する。ユーザ送信予定時刻計算回路１４０は、信号線１３からのユーザ番号と遅延クラスの受信に応答して、図１の実施例と同様の動作を実行する。
【０１０８】
パケット送信時には、パケット受信時と同様、図１２に示したフローチャートから、フロー別の送信時刻計算（６１０）、フローソーティング（６３１）、ユーザ送信予定時刻修正（６３２）が省略される。メモリ制御回路１７６Ａ、１７６Ｂは、パケットバッファリング部１１０が信号線１２に出力する送信パケットのユーザ番号、遅延クラス、蓄積パケットの有無情報に基づいて、フロー制御情報メモリ１７７Ａ、１７７Ｂの該当エントリのＶＬＤを更新する。
【図面の簡単な説明】
【０１０９】
【図１】本発明を適用したシェーピング部１００の１実施例を示す構成図。
【図２】本発明のシェーピング部１００が適用されるルータ２００の１例を示す構成図。
【図３】ルータ２００の入力パケットのフォーマットを示す図。
【図４】ルータの内部パケットのフォーマットを示す図。
【図５】シェーピング部１００が備える帯域管理テーブルの構成図。
【図６】フロー制御情報メモリ１７２Ａの内容とフローソーティング用の二分木との関係を示す図。
【図７】ユーザ制御情報メモリ１５２Ａの内容とユーザソーティング用の二分木との関係を示す図。
【図８】シェーピング部１００のパケット受信時の動作を示すフローチャート。
【図９】図８におけるフロー別の送信予定時刻計算５１０の詳細を示す示すフローチャート。
【図１０】フローソーティング用の二分木の構造を示す図。
【図１１】送信予定時刻更新に伴うフローソーティング後の二分木の構造を示す図。
【図１２】シェーピング部１００のパケット送信時の動作を示すフローチャート。
【図１３】発明の解決課題を説明するための通常パケットＰ１〜Ｐ３と低遅延要求パケットＰ４の送信予定時刻の関係を示す図。
【図１４】従来のシェーピング装置におけるパケットＰ１〜Ｐ４の送信時刻を示す図。
【図１５】本発明のシェーピング装置によるパケットＰ１〜Ｐ４送信時刻を示す図。
【図１６】本発明によるシェーピング部１００の他の実施例を示す構成図。
【符号の説明】
【０１１０】
１００：シェーピング部、１１０：パケットバッファリング部、
１２０：パケット送信制御部、１３０：フロー送信予定時刻計算部、
１４０：ユーザ送信予定時刻計算部、１５０Ａ：優先クラスユーザソーティング部、
１５０Ｂ：非優先クラスユーザソーティング部、１７０Ａ：優先フローソーティング部、１７０Ｂ：非優先フローソーティング部、１９０：制御モードメモリ、
２１０：インタフェース部、２３０：パケット受信回路、２４０：ヘッダ処理部、
２７０：パケット送信回路、２９０：制御部。
【図１】
2005244290.tif 000003
【図２】
2005244290.tif 000004
【図３】
2005244290.tif 000005
【図４】
2005244290.tif 000006
【図５】
2005244290.tif 000007
【図６】
2005244290.tif 000008
【図７】
2005244290.tif 000009
【図８】
2005244290.tif 000010
【図９】
2005244290.tif 000011
【図１０】
2005244290.tif 000012
【図１１】
2005244290.tif 000013
【図１２】
2005244290.tif 000014
【図１３】
2005244290.tif 000015
【図１４】
2005244290.tif 000016
【図１５】
2005244290.tif 000017
【図１６】
2005244290.tif 000018