(57)【特許請求の範囲】
【請求項１】
ユニキャストパケット及びマルチキャストパケットを入力する入力部と、
パケットの宛先アドレスに対応する第１ポインタ情報に対応して、該パケットの出力ポート情報と、該パケットの他の出力ポート情報を検索するための第１のネクストポインタ情報又はネクストホップアドレスとが記憶され、及び、第ｉ（ｉは１以上の整数）のネクストポインタ情報に対応して、他の出力ポート情報と、さらに他の出力ポート情報を検索するための第ｉ＋１のネクストポインタ情報とが記憶され、第１ポインタ情報及び第ｉのネクストポインタ情報に対応する出力ポート情報が順次読み込まれることで、マルチキャストパケットの複数の出力先が検索されるための宛先情報テーブルと、
前記宛先情報テーブルを検索し、ひとつ又は複数の出力ポート情報及び／又はネクストホップアドレスを取得する宛先検索部と、
前記宛先検索部により取得された出力ポート情報及び／又はネクストホップアドレスを含む宛先情報に従い、入力されたユニキャストパケットを出力し、及び、入力されたマルチキャストパケットを複製して出力するパケット転送複製部と、
前記パケット転送複製部からのユニキャストパケット及びマルチキャストパケットを、該宛先情報に従いスイッチングするスイッチと、
前記スイッチによりスイッチングされたパケットを出力する出力部と
を備え、
前記宛先検索部は、
前記入力部を介して入力されたパケットのヘッダ情報に基づき優先度情報を指定する優先度指定部と、
宛先アドレスと、第１ポインタ情報とが対応して記憶されたポインタテーブルと、
パケットの宛先アドレスに基づき前記ポインタテーブルを参照して、対応する第１ポインタ情報を取得するポインタ検索部と、
優先度が高いパケットの第１ポインタ情報が保持される高優先キューと、
優先度が低いパケットの第１ポインタ情報が保持される低優先キューと、
前記ポインタ検索部により取得された第１ポインタ情報を、前記優先度指定部により指定された優先度情報に従って、前記高優先キューと前記低優先キューに振分ける振分け部と、
第ｉのネクストポインタ情報が保持されるネクストキューと、
前記ネクストキュー、前記高優先キュー、前記低優先キューの優先順位で、各キューから第１ポインタ情報又は第ｉのネクストポインタ情報を引き抜き、出力するスケジューラと、
前記スケジューラからの第１ポインタ情報又は第ｉのネクストポインタ情報に基づき、前記宛先情報テーブルから出力ポート情報とネクストホップアドレス、又は、出力ポート情報と第１又は第ｉ＋１のネクストポインタ情報を取得し、該出力ポート情報及び／又はネクストホップアドレスを前記パケット転送複製部へ出力し、該第１又は第ｉ＋１のネクストポインタ情報を前記ネクストキューへ出力する宛先情報テーブル検索部と
を有するパケット転送装置。
【請求項２】
前記宛先情報テーブルは、第１ポインタ情報又は第ｉのネクストポインタ情報に対応して、検索すべき他の出力ポート情報の有無を示す宛先情報終了識別子がさらに記憶され、
前記スケジューラは、前記高優先キュー又は前記低優先キューから第１ポインタ情報を引き抜くと、前記高優先キュー及び前記低優先キューからの引き抜きを抑止して、前記ネクストキューから第ｉのネクストポインタ情報を引き抜くようにし、
前記宛先情報テーブル検索部は、第１ポインタ情報又は第ｉのネクストポインタ情報に基づき、前記宛先情報テーブルから対応する宛先情報終了識別子を取得し、該識別子が他の出力ポート情報がないことを示す場合に終了通知を前記スケジューラに出力し、
前記スケジューラは、該終了通知が入力されると前記抑止を解除する請求項１に記載のパケット転送装置。
【請求項３】
前記優先度指定部は、
入力されるヘッダ情報に基づき、マルチキャストパケットを優先度が低くなるように、及び、ＶｏＩＰパケットを含む音声通信パケットを優先度が高くなるように優先度情報を指定する請求項１に記載のパケット転送装置。
【請求項４】
前記スケジューラは、
前記ネクストキューに第ｉのネクストポインタ情報が保持されていれば、該ネクストキューから第ｉのネクストポインタ情報を引抜き、
前記ネクストキューに第ｉのネクストポインタ情報がなく、かつ、前記高優先キューに第１ポインタ情報が保持されていれば、該高優先キューから第１ポインタ情報を引抜き、
前記ネクストキューに第ｉのネクストポインタ情報がなく、かつ、前記高優先キューに第１ポインタ情報がなければ、前記低優先キューから第１ポインタ情報を引抜く請求項１に記載のパケット転送装置。
【請求項５】
前記高優先キュー及び前記低優先キューから引抜かれる第１ポインタ情報の数の比率が設定され、保持される記憶部と、
前記高優先キューから引抜いたポインタ情報の数又はその数に応じた値をカウントする第１のカウンタと、
前記低優先キューから引抜いたポインタ情報の数又はその数に応じた値をカウントする第２のカウンタと
をさらに備え、
前記スケジューラは、
前記ネクストキューに第ｉのネクストポインタ情報が保持されていれば、該ネクストキューから第ｉのネクストポインタ情報を引抜き、
前記ネクストキューに第ｉのネクストポインタ情報が保持されていなければ、前記第１のカウンタの値と前記第２のカウンタの値を参照し、前記高優先キュー及び前記低優先キューから引抜くポインタ情報の数が前記記憶部に設定された比率になるように、前記高優先キュー又は前記低優先キューから第１ポインタ情報を引抜く請求項１に記載のパケット転送装置。
【請求項６】
ユニキャストパケット及びマルチキャストパケットを入力する入力部と、
パケットの宛先アドレスに対応する第１ポインタ情報に対応して、該パケットの出力ポート情報と、該パケットの他の出力ポート情報を検索するための第１のネクストポインタ情報又はネクストホップアドレスとが記憶され、及び、第ｉ（ｉは１以上の整数）のネクストポインタ情報に対応して、他の出力ポート情報と、さらに他の出力ポート情報を検索するための第ｉ＋１のネクストポインタ情報とが記憶され、第１ポインタ情報及び第ｉのネクストポインタ情報に対応する出力ポート情報が順次読み込まれることで、マルチキャストパケットの複数の出力先が検索されるための宛先情報テーブルと、
前記宛先情報テーブルを検索し、ひとつ又は複数の出力ポート情報及び／又はネクストホップアドレスを取得する宛先検索部と、
前記宛先検索部により取得された出力ポート情報及び／又はネクストホップアドレスを含む宛先情報に従い、入力されたユニキャストパケットを出力し、及び、入力されたマルチキャストパケットを複製して出力するパケット転送複製部と、
前記パケット転送複製部からのユニキャストパケット及びマルチキャストパケットを、該宛先情報に従いスイッチングするスイッチと、
前記スイッチによりスイッチングされたパケットを出力する出力部と
を備え、
前記宛先検索部は、
前記入力部を介して入力されたパケットのヘッダ情報に基づき優先度情報を指定する優先度指定部と、
宛先アドレスと、第１ポインタ情報とが対応して記憶されたポインタテーブルと、
パケットの宛先アドレスに基づき前記ポインタテーブルを参照して、対応する第１ポインタ情報を取得するポインタ検索部と、
優先度が高いパケットの第１ポインタ情報及び優先度情報が保持される第１の高優先キューと、
優先度が低いパケットの第１ポインタ情報及び優先度情報が保持される第１の低優先キューと、
前記ポインタ検索部により検索された第１ポインタ情報と、前記優先度指定部により指定された優先度情報とを、該優先度情報に従って、前記第１の高優先キューと前記第１の低優先キューに振分ける第１の振分け部と、
優先度が高いパケットの第ｉのネクストポインタ情報及び優先度情報が保持される第２の高優先キューと、
優先度が低いパケットの第ｉのネクストポインタ情報及び優先度情報が保持される第２の低優先キューと、
第ｉのネクストポインタ情報と優先度情報とを、該優先度情報に従って、前記第２の高優先キューと前記第２の低優先キューに振分ける第２の振分け部と、
前記第１の高優先キュー、前記第１の低優先キュー、前記第２の高優先キュー、前記第２の低優先キューから、所定の優先順位で第１ポインタ情報又は第ｉのネクストポインタ情報と優先度情報とを引き抜き、該ポインタ情報と優先度情報とを出力するスケジューラと、
前記スケジューラから第１ポインタ情報又は第ｉのネクストポインタ情報と優先度情報とを入力し、該第１ポインタ情報又は第ｉのネクストポインタ情報に基づき、前記宛先情報テーブルから出力ポート情報とネクストホップアドレスとを取得し、又は、出力ポート情報と第１又は第ｉ＋１のネクストポインタ情報とを取得し、該出力ポート情報及び／又はネクストホップアドレスを前記パケット転送複製部へ出力し、及び、第１又は第ｉ＋１のネクストポインタ情報と優先度情報とを前記第２の振分け部へ出力する宛先情報テーブル検索部と
を有し、
前記スケジューラは、前記第２の高優先キュー、前記第１の高優先キュー、前記第２の低優先キュー、前記第１の低優先キューの優先順位で第１ポインタ情報又は第ｉのネクストポインタ情報を引き抜くパケット転送装置。
【請求項７】
前記優先度指定部は、
入力されるヘッダ情報に基づき、ＶｏＩＰパケットを含む音声パケットを優先度が高くなるように優先度情報を指定する請求項６に記載のパケット転送装置。
【請求項８】
前記優先度指定部は、
入力されるヘッダ情報に基づき、動画のマルチキャストパケットを優先度が高く、ニュースのマルチキャストパケットを優先度が低くなるように優先度情報を指定する請求項６に記載のパケット転送装置。
【請求項９】
前記宛先情報テーブルは、第１ポインタ情報又は第ｉのネクストポインタ情報に対応して、検索すべき他の出力ポート情報の有無を示す宛先情報終了識別子がさらに記憶され、
前記スケジューラは、前記第１の高優先キューから第１ポインタ情報を引き抜くと、前記第１の高優先キューからの引き抜きを抑止し、
前記スケジューラは、前記第１の低優先キューから第１ポインタ情報を引き抜くと、前記第１の低優先キューからの引き抜きを抑止し、
前記宛先情報テーブル検索部は、第１ポインタ情報又は第ｉのネクストポインタ情報に基づき、前記宛先情報テーブルから対応する宛先情報終了識別子を取得し、該識別子が他の出力ポート情報がないことを示す場合に、終了通知と入力された優先度情報とを前記スケジューラに出力し、
前記スケジューラは、該終了通知と優先度情報が入力されると、優先度情報に対応する前記第１の高優先キュー又は前記第１の低優先キューの前記抑止を解除する請求項６に記載のパケット転送装置。
【請求項１０】
入力されたユニキャストパケット又はマルチキャストパケットのヘッダ情報に基づき優先度情報を指定し、
パケットの宛先アドレスに基づき、宛先アドレスと宛先情報テーブルを参照するための第１ポインタ情報とが対応して記憶されたポインタテーブルを参照して、対応する第１ポインタ情報を取得し、
取得された第１ポインタ情報を、指定された優先度情報に従って、優先度が高いパケットの第１ポインタ情報が保持される高優先キューと、優先度が低いパケットの第１ポインタ情報が保持される低優先キューに振分け、
パケットの他の出力先を検索するための第ｉ（ｉは１以上の整数）のネクストポインタ情報が保持されるネクストキュー、前記高優先キュー、前記低優先キューの優先順位で、各キューから第１ポインタ情報又は第ｉのネクストポインタ情報を引き抜き、
パケットの宛先アドレスに対応する第１ポインタ情報に対応して、該パケットの出力ポート情報と、該パケットの他の出力ポート情報を検索するための第１のネクストポインタ情報又はネクストホップアドレスとが記憶され、及び、第ｉ（ｉは１以上の整数）のネクストポインタ情報に対応して、他の出力ポート情報と、さらに他の出力ポート情報を検索するための第ｉ＋１のネクストポインタ情報とが記憶され、第１ポインタ情報及び第ｉのネクストポインタ情報に対応する出力ポート情報が順次読み込まれることで、マルチキャストパケットの複数の出力先が検索されるための宛先情報テーブルから、第１ポインタ情報又は第ｉのネクストポインタ情報に対応した出力ポート情報とネクストホップアドレス、又は、出力ポート情報と第１又は第ｉ＋１のネクストポインタ情報を取得し、
該第１又は第ｉ＋１のネクストポインタ情報を前記ネクストキューへ出力し、
該出力ポート情報及び／又はネクストホップアドレスを含む宛先情報に従い、入力されたユニキャストパケットを出力し、又は、入力されたマルチキャストパケットを複製して出力するマルチキャスト展開方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット転送装置及びマルチキャスト展開方法に関する。
【背景技術】
【０００２】
ＩＰネットワークにおける動画配信サービスや、リアルタイム性が重視されるＶｏＩＰ電話サービス等の本格化に伴い、これらのサービスの高品質化が要求されている。ルータ／スイッチにおいては、効率的な動画配信を実現させるマルチキャスト処理とＶｏＩＰの品質を向上させる為に、遅延揺らぎを抑えるＱｏＳ制御の重要性が高まっている。例えば、コスト削減の為、ひとつのルータ／スイッチに収容可能なインタフェース数／ユーザ数を増大させることが求められている。また、動画配信サービス等の大容量データ通信に対応する為、ルータ／スイッチでより高速な回線を収容しワイヤレートで処理することが求められている。
【０００３】
一方、マルチキャスト処理における宛先情報テーブル読込みを１回のみで行い、ユニキャスト処理と同一サイクル内に納めることにより、入力帯域に制限のない効率的なマルチキャスト処理を実現するものが開示されている（例えば、特許文献１の図３等参照）。
【特許文献１】特開２０００−３１９８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ひとつの装置に収容するインタフェース数の増大により宛先情報テーブルとして必要なビット数が増加する。収容回線の高速化と読込みビット数の増大により宛先情報テーブルへのアクセスが必要処理サイクル内に収まらなくなる。以上より、マルチキャスト処理時には展開数（収容ユーザ数）に比例して宛先情報テーブルを複数回読込むことが必要な場合がある。
【０００５】
また、マルチキャスト展開処理中はユニキャスト処理を抑止することがある為、マルチキャスト展開処理が中断できない場合がある。優先させたいパケット処理があってもマルチキャスト展開処理中は待たされてしまう。例えば、展開数の大きなマルチキャストが混在した場合、リアルタイム性が重視されるＶｏＩＰパケットの遅延揺らぎが大きくなり、受信バッファを多く持てない場合には廃棄されてしまうことがある。
【０００６】
本発明は、以上の点に鑑み、マルチキャスト展開処理が混在した場合でもＶｏＩＰ等の優先パケットを優先的に処理するパケット転送装置及びマルチキャスト展開方法を提供することを目的とする。また、本発明は、高優先のパケットと、低優先のパケットをキューから引き抜く割合を設定可能とし、設定された割合でパケットを処理することを目的とする。本発明は、マルチキャスト展開処理が混在し、マルチキャスト展開の間次の宛先検索が待たされてしまう場合でも、高優先としたフローを他のフローより優先的に処理することを目的のひとつとする。
【０００７】
また、本発明は、高速回線を収容し、収容インタフェース数の増大を可能とし、受信バッファを多く持たなくとも、展開数の多いマルチキャスト処理が混在していても、リアルタイム性を重視するＶｏＩＰパケットを高優先とし、ＶｏＩＰパケットの廃棄を起こさず且つ遅延揺らぎを小さく抑えることを目的のひとつとする。また、本発明は、マルチキャストとＶｏＩＰを効率的に収容することを目的のひとつとする。
【課題を解決するための手段】
【０００８】
マルチキャスト処理時に処理ネックとなる宛先情報テーブル読込みの前にマルチキャスト用とＶｏＩＰ用として別々のキューを設置する。これによりマルチキャスト展開処理が混在した場合でもＶｏＩＰを優先的に処理することが可能となる。
【０００９】
宛先検索実施前（宛先テーブル読み込み前）にフロー検出を行ないフロー毎に優先度を指定する。宛先テーブル読込み前のＦｉｒｓｔポインタキューを優先度別にし、優先度に従った宛先テーブル読込みを行う。これによりマルチキャスト展開処理が混在しマルチキャスト展開の間、次の宛先検索が待たされてしまう場合でも高優先としたフローを他のフローより優先的に処理することが可能となる。なお、出力帯域に応じた送信制御部での優先制御は従来からあったが、本発明では宛先検索の宛先情報テーブル読込みを行う前で優先制御を行うことを特徴のひとつとする。
【００１０】
第１の実施の形態では低優先のマルチキャスト展開が始まると、その展開が終了するまで高優先パケットの処理は止まる。第２の実施の形態では、宛先テーブル読込み前のＮｅｘｔポインタキューも優先度別にする。これにより低優先のマルチキャスト展開中であっても高優先パケットの処理を優先的に行うことが可能となる。
【００１１】
本発明の第１の解決手段によると、
ユニキャストパケット及びマルチキャストパケットを入力する入力部と、
パケットの宛先アドレスに対応する第１ポインタ情報に対応して、該パケットの出力ポート情報と、該パケットの他の出力ポート情報を検索するための第１のネクストポインタ情報又はネクストホップアドレスとが記憶され、及び、第ｉ（ｉは１以上の整数）のネクストポインタ情報に対応して、他の出力ポート情報と、さらに他の出力ポート情報を検索するための第ｉ＋１のネクストポインタ情報とが記憶され、第１ポインタ情報及び第ｉのネクストポインタ情報に対応する出力ポート情報が順次読み込まれることで、マルチキャストパケットの複数の出力先が検索されるための宛先情報テーブルと、
前記宛先情報テーブルを検索し、ひとつ又は複数の出力ポート情報及び／又はネクストホップアドレスを取得する宛先検索部と、
前記宛先検索部により取得された出力ポート情報及び／又はネクストホップアドレスを含む宛先情報に従い、入力されたユニキャストパケットを出力し、及び、入力されたマルチキャストパケットを複製して出力するパケット転送複製部と、
前記パケット転送複製部からのユニキャストパケット及びマルチキャストパケットを、該宛先情報に従いスイッチングするスイッチと、
前記スイッチによりスイッチングされたパケットを出力する出力部と
を備え、
前記宛先検索部は、
前記入力部を介して入力されたパケットのヘッダ情報に基づき優先度情報を指定する優先度指定部と、
宛先アドレスと、第１ポインタ情報とが対応して記憶されたポインタテーブルと、
パケットの宛先アドレスに基づき前記ポインタテーブルを参照して、対応する第１ポインタ情報を取得するポインタ検索部と、
優先度が高いパケットの第１ポインタ情報が保持される高優先キューと、
優先度が低いパケットの第１ポインタ情報が保持される低優先キューと、
前記ポインタ検索部により取得された第１ポインタ情報を、前記優先度指定部により指定された優先度情報に従って、前記高優先キューと前記低優先キューに振分ける振分け部と、
第ｉのネクストポインタ情報が保持されるネクストキューと、
前記ネクストキュー、前記高優先キュー、前記低優先キューの優先順位で、各キューから第１ポインタ情報又は第ｉのネクストポインタ情報を引き抜き、出力するスケジューラと、
前記スケジューラからの第１ポインタ情報又は第ｉのネクストポインタ情報に基づき、前記宛先情報テーブルから出力ポート情報とネクストホップアドレス、又は、出力ポート情報と第１又は第ｉ＋１のネクストポインタ情報を取得し、該出力ポート情報及び／又はネクストホップアドレスを前記パケット転送複製部へ出力し、該第１又は第ｉ＋１のネクストポインタ情報を前記ネクストキューへ出力する宛先情報テーブル検索部と
を有するパケット転送装置が提供される。
【００１２】
本発明の第２の解決手段によると、
ユニキャストパケット及びマルチキャストパケットを入力する入力部と、
パケットの宛先アドレスに対応する第１ポインタ情報に対応して、該パケットの出力ポート情報と、該パケットの他の出力ポート情報を検索するための第１のネクストポインタ情報又はネクストホップアドレスとが記憶され、及び、第ｉ（ｉは１以上の整数）のネクストポインタ情報に対応して、他の出力ポート情報と、さらに他の出力ポート情報を検索するための第ｉ＋１のネクストポインタ情報とが記憶され、第１ポインタ情報及び第ｉのネクストポインタ情報に対応する出力ポート情報が順次読み込まれることで、マルチキャストパケットの複数の出力先が検索されるための宛先情報テーブルと、
前記宛先情報テーブルを検索し、ひとつ又は複数の出力ポート情報及び／又はネクストホップアドレスを取得する宛先検索部と、
前記宛先検索部により取得された出力ポート情報及び／又はネクストホップアドレスを含む宛先情報に従い、入力されたユニキャストパケットを出力し、及び、入力されたマルチキャストパケットを複製して出力するパケット転送複製部と、
前記パケット転送複製部からのユニキャストパケット及びマルチキャストパケットを、該宛先情報に従いスイッチングするスイッチと、
前記スイッチによりスイッチングされたパケットを出力する出力部と
を備え、
前記宛先検索部は、
前記入力部を介して入力されたパケットのヘッダ情報に基づき優先度情報を指定する優先度指定部と、
宛先アドレスと、第１ポインタ情報とが対応して記憶されたポインタテーブルと、
パケットの宛先アドレスに基づき前記ポインタテーブルを参照して、対応する第１ポインタ情報を取得するポインタ検索部と、
優先度が高いパケットの第１ポインタ情報及び優先度情報が保持される第１の高優先キューと、
優先度が低いパケットの第１ポインタ情報及び優先度情報が保持される第１の低優先キューと、
前記ポインタ検索部により検索された第１ポインタ情報と、前記優先度指定部により指定された優先度情報とを、該優先度情報に従って、前記第１の高優先キューと前記第１の低優先キューに振分ける第１の振分け部と、
優先度が高いパケットの第ｉのネクストポインタ情報及び優先度情報が保持される第２の高優先キューと、
優先度が低いパケットの第ｉのネクストポインタ情報及び優先度情報が保持される第２の低優先キューと、
第ｉのネクストポインタ情報と優先度情報とを、該優先度情報に従って、前記第２の高優先キューと前記第２の低優先キューに振分ける第２の振分け部と、
前記第１の高優先キュー、前記第１の低優先キュー、前記第２の高優先キュー、前記第２の低優先キューから、所定の優先順位で第１ポインタ情報又は第ｉのネクストポインタ情報と優先度情報とを引き抜き、該ポインタ情報と優先度情報とを出力するスケジューラと、
前記スケジューラから第１ポインタ情報又は第ｉのネクストポインタ情報と優先度情報とを入力し、該第１ポインタ情報又は第ｉのネクストポインタ情報に基づき、前記宛先情報テーブルから出力ポート情報とネクストホップアドレスとを取得し、又は、出力ポート情報と第１又は第ｉ＋１のネクストポインタ情報とを取得し、該出力ポート情報及び／又はネクストホップアドレスを前記パケット転送複製部へ出力し、及び、第１又は第ｉ＋１のネクストポインタ情報と優先度情報とを前記第２の振分け部へ出力する宛先情報テーブル検索部と
を有するパケット転送装置が提供される。
【００１３】
本発明の第３の解決手段によると、
入力されたユニキャストパケット又はマルチキャストパケットのヘッダ情報に基づき優先度情報を指定し、
パケットの宛先アドレスに基づき、宛先アドレスと宛先情報テーブルを参照するための第１ポインタ情報とが対応して記憶されたポインタテーブルを参照して、対応する第１ポインタ情報を取得し、
取得された第１ポインタ情報を、指定された優先度情報に従って、優先度が高いパケットの第１ポインタ情報が保持される高優先キューと、優先度が低いパケットの第１ポインタ情報が保持される低優先キューに振分け、
パケットの他の出力先を検索するための第ｉ（ｉは１以上の整数）のネクストポインタ情報が保持されるネクストキュー、前記高優先キュー、前記低優先キューの優先順位で、各キューから第１ポインタ情報又は第ｉのネクストポインタ情報を引き抜き、
パケットの宛先アドレスに対応する第１ポインタ情報に対応して、該パケットの出力ポート情報と、該パケットの他の出力ポート情報を検索するための第１のネクストポインタ情報又はネクストホップアドレスとが記憶され、及び、第ｉ（ｉは１以上の整数）のネクストポインタ情報に対応して、他の出力ポート情報と、さらに他の出力ポート情報を検索するための第ｉ＋１のネクストポインタ情報とが記憶され、第１ポインタ情報及び第ｉのネクストポインタ情報に対応する出力ポート情報が順次読み込まれることで、マルチキャストパケットの複数の出力先が検索されるための宛先情報テーブルから、第１ポインタ情報又は第ｉのネクストポインタ情報に対応した出力ポート情報とネクストホップアドレス、又は、出力ポート情報と第１又は第ｉ＋１のネクストポインタ情報を取得し、
該第１又は第ｉ＋１のネクストポインタ情報を前記ネクストキューへ出力し、
該出力ポート情報及び／又はネクストホップアドレスを含む宛先情報に従い、入力されたユニキャストパケットを出力し、又は、入力されたマルチキャストパケットを複製して出力するマルチキャスト展開方法が提供される。
【発明の効果】
【００１４】
本発明によると、マルチキャスト展開処理が混在した場合でもＶｏＩＰ等の優先パケットを優先的に処理するパケット転送装置及びマルチキャスト展開方法を提供することができる。また、本発明によると、高優先のパケットと、低優先のパケットをキューから引き抜く割合を設定可能とし、設定された割合でパケットを処理することができる。本発明によると、マルチキャスト展開処理が混在し、マルチキャスト展開の間次の宛先検索が待たされてしまう場合でも、高優先としたフローを他のフローより優先的に処理することができる。
【００１５】
また、本発明によると、高速回線を収容し、収容インタフェース数の増大を可能とし、受信バッファを多く持たなくとも、展開数の多いマルチキャスト処理が混在していても、リアルタイム性を重視するＶｏＩＰパケットを高優先とし、ＶｏＩＰパケットの廃棄を起こさず且つ遅延揺らぎを小さく抑えることが可能となる。また、本発明によると、マルチキャストとＶｏＩＰを効率的に収容することが可能となる。
【発明を実施するための最良の形態】
【００１６】
１．第１の実施の形態
１．１  装置構成
図１は、マルチキャスト対応のルータを用いたネットワーク構成を示す図である。
本ネットワークは、例えば、ルータ（パケット転送装置）１０１と、コンテンツ配信サーバ１０２と、ＶｏＩＰ（Ｖｏｉｃｅ  Ｏｖｅｒ  ＩＰ）電話機１０３と、クライアント端末１０４と、中継装置１０５とを備える。
【００１７】
ルータ１０１は、ＶｏＩＰパケット、マルチキャストパケット等のパケットを転送する。コンテンツ配信サーバ１０２は、例えば、マルチキャストパケットを配信する。ＶｏＩＰ電話機１０３−１は、他のＶｏＩＰ電話機１０３−２又はクライアント端末１０４と、ＶｏＩＰにより音声通信する。クライアント端末１０４は、例えば、コンテンツ配信サーバからのマルチキャストパケットを受信する。中継装置１０５は、ルータ１０１、ＶｏＩＰ電話機１０３、クライアント端末１０４間のパケットを中継する。
【００１８】
（１回読み込みの例）
まず、従来のように宛先情報テーブル読込みを１回のみで行い、マルチキャストであっても全宛先情報を１回のアクセスで取得する場合の例について、本実施の形態に即して説明する。なお、各構成は、便宜上、本実施の形態に対応して記載しているが、従来の技術を特定するものではない。
【００１９】
図２は、宛先情報テーブルから１回で纏めて読み込むルータ１０１の構成例を示す図である。
受信キュー２０１−１〜２０１−ｍは、各入力ポート＃０〜＃ｍからの受信パケットの情報が保持される待ちキューである。各受信キュー２０１は、ラウンドロビンスケジューラ２０２に対して引抜き要求を出し、ラウンドロビンスケジューラ２０２により決定された順番でパケットが引抜かれる。ラウンドロビンスケジューラ２０２は、各入力ポートに対応する受信キュー２０１からの引き抜き要求に対して、順番にキューからパケットを引抜き、各キューからの引抜きが均等になるように制御する。
【００２０】
パケット転送／複製部２０３は、宛先検索部２０４に対して宛先検索要求を出し、宛先検索部２０４からの検索結果に従って、スイッチ２０６にパケットを転送する。検索要求は例えばパケットのヘッダ情報を含み、検索結果は宛先情報を含む。また、マルチキャストの場合、パケット転送／複製部２０３は、宛先検索部２０４からの複数の宛先情報に対して、パケットの複製を行ないスイッチ２０６に転送する。
１回読み込み方式の宛先情報テーブル２０５は、宛先情報として出力ポート情報やネクストホップＩＰアドレスを格納する。また、マルチキャスト時の複数宛先情報を格納する。
【００２１】
図１５は、従来の１回読込み方式の宛先情報テーブル２０５のフォーマットの一構成例を示す図である。図１５（ａ）に示すように、宛先情報テーブル２０５は、例えば、出力ポート情報と、ネクストホップＩＰアドレスを含む。出力ポート情報は、例えば各ポートに対応した複数のフラグ情報である。図示の例では、各ポートに対して「１」は当該ポートに出力することを示し、一方「０」は当該ポートに出力しないことを示す。図１５（ｂ）は、ユニキャストパケットに対する構成例である。例えば出力ポート１のフラグが「１」であり、ネクストホップＩＰアドレスとして、「１９２．１６８．０．２」が格納されている。図１５（ｃ）は、マルチキャストパケットに対する構成例である。例えば、マルチキャストパケットの配信先として、出力ポート０、１、６に対応するフラグ情報が「１」であり、ネクストホップＩＰアドレスのフィールドは「Ｄｏｎ’ｔ  ｃａｒｅ」となる。このマルチキャストパケットは、複製されて出力ポート＃０、＃１、＃６からそれぞれ出力される。
【００２２】
図２の宛先テーブル１回読み込み宛先検索部２０４は、パケット転送／複製部２０３からの検索要求に対して、宛先情報テーブル２０５の検索を１回のみ行ない、検索結果をパケット転送／複製部２０３へ出力する。例えば、宛先検索部２０４は、検索要求に含まれるヘッダ情報に基づいて、出力ポート情報とネクストホップＩＰアドレスを一度に読み込む。例えば、図１５（ｂ）に示す宛先情報テーブル２０５の例では、各出力ポート０〜ｍに対応するフラグ「０、１、・・・０」と、ネクストホップＩＰアドレス「１９２．１６８．０．２」を一度に読み込む。図１５（ｃ）のマルチキャストの例の場合も同様である。また、読み込まれた出力ポート情報とネクストホップＩＰアドレスを検索結果として、パケット転送／複製部２０３へ出力する。
【００２３】
スイッチ２０６は、パケット転送／複製部２０３から転送されてきたパケットを、出力ポート情報に従い、出力ポートに応じた送信キュー２０７へスイッチングする。
送信キュー２０７−１〜２０７−ｍは、スイッチ２０６からの送信パケットの情報が保持される待ちキューである。また、送信キュー２０７は、送信制御部２０８に対して引抜き要求を出し、送信制御部２０８により決定されたタイミングで引抜かれる。
送信制御部２０８−１〜２０８−ｍは、出力ポートの帯域に従って、送信キュー２０７から送信パケットの引抜きを行ない、パケットを出力ポート＃０〜＃ｍから出力する。また、従来のＱｏＳ制御はここで行われる。
【００２４】
図３は、図２の装置に入力されたマルチキャストとＶｏＩＰに対するパケットの出力順を示す図である。例えば、図２に示すルータにマルチキャストパケット（以下ＭＣ）０、ＶｏＩＰパケット（以下ＶｏＩＰ）０、ＭＣ１、ＶｏＩＰ１の順で入力されたとすると、ＭＣ０とＭＣ１はそれぞれ複製されて出力されるものの、入力順と同様の順序で出力される。ここで、マルチキャストの展開数が多いと、例えばＶｏＩＰ１の遅延時間が大きくなる。
【００２５】
（複数回読み込みの構成）
図４は、マルチキャスト宛先テーブルを複数回読み込む本実施の形態におけるルータ１０１の構成例を示す図である。
ルータ１０１は、入力部４１０と、パケット転送／複製部４０３と、宛先検索部４０４と、宛先情報テーブル４０５と、スイッチ４０６と、出力部４２０とを備える。入力部４１０は、例えば、入力ポートに対応した受信キュー４０１とラウンドロビンスケジューラ４０２とを有する。出力部４２０は、例えば、出力ポートに対応した送信キュー４０７及び送信制御部４０８を有する。ルータ１０１は、スケジューリング設定部４０９をさらに備えてもよい。
【００２６】
入力部４１０は、ユニキャストパケット及びマルチキャストパケットを入力する。宛先検索部４０４は、入力部４１０を介して入力されたパケットのヘッダ情報に基づき優先度を指定し、該優先度に応じた順序で宛先情報テーブル４０５を１回又は複数回検索し、ひとつ又は複数の出力ポート情報及び／又はネクストホップアドレスを取得する。
【００２７】
パケット転送／複製部４０３は、宛先検索部４０４により取得された出力ポート情報とネクストホップアドレスを含む宛先情報に従い、入力されたユニキャストパケットを出力し、及び、宛先検索部４０４により取得された複数の出力ポート情報を含む宛先情報に従い、入力されたマルチキャストパケットを複製して出力する。スイッチ４０６は、パケット転送／複製部４０３からのユニキャストパケット及びマルチキャストパケットを、該宛先情報に従いスイッチングする。出力部４２０は、スイッチングされたパケットを出力する。
【００２８】
スケジューリング設定部４０９は、例えば、記憶部とインタフェースとカウンタとを有する。例えば、コマンドラインインタフェース（ＣＬＩ）を用いて後述する重み付き均等保証での比率が記憶部に設定される。また、高優先キューと低優先キューからの引抜きについて、後述する完全優先スケジューリング制御を実行するか、又は、ＷＦＱスケジューリング制御を実行するかを示すスケジューリングモード設定値が設定される。カウンタは、高優先カウンタと低優先カウンタを有する。高優先カウンタは、高優先キュー５０５−１からポインタ情報を引抜くと、上述の比率に応じた高優先重み設定値を累積していく。また、低優先カウンタは、低優先キュー５０５−２からポインタ情報を引抜くと、上述の比率に応じた低優先重み設定値を累積していく。なお、各カウンタの値は、初期設定で例えば０に設定される。
【００２９】
複数回読込み方式の宛先情報テーブル４０５は、宛先情報として出力ポート情報やネクストホップＩＰアドレスを格納する。また、マルチキャスト時の複数宛先情報を格納する為に、Ｎｅｘｔ宛先情報テーブルへのポインタと、宛先情報終了識別子を格納する。
【００３０】
図１６は、本実施の形態の複数回読込み方式の宛先情報テーブル４０５のフォーマットの一構成例を示す図である。
図１６（ａ）に示すように、宛先情報テーブル４０５は、例えば、ポインタ情報に対応して、宛先情報終了識別子と、出力ポート情報と、ネクストホップＩＰアドレス又はＮｅｘｔポインタ（第２のポインタ情報）とを含む。出力ポート情報は、例えば出力ポート番号を用いることができるが、番号の他、文字等適宜の識別情報を用いてもよい。また、ネクストホップＩＰアドレスはＩＰアドレス以外にも、ＭＡＣアドレス等を用いてもよいし、ＩＰアドレスとＭＡＣアドレスの双方を用いてもよい。宛先情報終了識別子は、次に検索する宛先情報の有無を示す。例えば、ユニキャストパケットに対しては出力ポートはひとつであり、宛先情報終了識別子を１にする。また、マルチキャストパケットに対しては、他の宛先情報を得るためのＮｅｘｔポインタが記憶されている場合には宛先情報終了識別子を０にし、これ以上宛先情報がなく、Ｎｅｘｔポインタがない場合に１にする。
【００３１】
図１６（ｂ）は、ユニキャストパケットに対する構成例である。ユニキャストパケットについては、宛先情報テーブル４０５は、宛先情報終了識別子として１と、出力ポート情報（例えば、ポート番号１）と、ネクストホップＩＰアドレス（例えば、１９２．１６８．０．２）とを含む。図示の例では、例えばポインタ情報がＡの場合に参照される。
【００３２】
図１６（ｃ）は、マルチキャストパケットに対する構成例である。マルチキャストパケットについては、宛先情報テーブル４０５は、宛先情報終了識別子と、マルチキャストパケットを出力する出力ポート情報のひとつと、次に参照するネクストホップポインタとを含む。図１６（ｃ）の例は、出力ポート番号０、１、６にマルチキャストパケットを出力する例である。まず、例えばポインタ情報Ｂに対応して、宛先情報終了識別子０、出力ポート番号０、Ｎｅｘｔポインタ１が記憶される（図１６（ｃ）上段）。次に、Ｎｅｘｔポインタ１に対応して、宛先情報終了識別子０、出力ポート番号１、Ｎｅｘｔポインタ２が記憶される（図１６（ｃ）中段）。さらに、Ｎｅｘｔポインタ２に対応して、宛先情報終了識別子１、出力ポート番号６が記憶される（図１６（ｃ）下段）。マルチキャストの場合、宛先情報テーブルはＦｉｒｓｔポインタ情報（第１のポインタ情報）、Ｎｅｘｔポインタ情報に従い複数回読み込まれ、宛先情報終了識別子が１であり、Ｎｅｘｔポインタがなくなると当該マルチキャストパケットの宛先情報検索が終了する。
【００３３】
図５は、本実施の形態におけるＦｉｒｓｔポインタ優先制御付の宛先検索部４０４の一構成例を示す図である。
宛先検索部４０４は、例えば、フロー検出／優先度指定部５０１と、宛先情報テーブルポインタ検索部５０２と、ポインタテーブル５０３と、Ｆｉｒｓｔ振分け部５０４と、Ｆｉｒｓｔポインタ低優先キュー５０５−１と、Ｆｉｒｓｔポインタ高優先キュー５０５−２と、Ｎｅｘｔポインタキュー５０６と、優先制御スケジューラ５０７と、宛先情報テーブル検索部５０８とを有する。
【００３４】
フロー検出／優先度指定部５０１は、パケット転送／複製部４０３からのパケットヘッダ情報の組合せによりフローを検出し、フロー毎に処理の優先度を指定する。例えば、フロー検出／優先度指定部５０１は、パケットヘッダ情報の組合せによりＶｏＩＰのフローを検出し、ＶｏＩＰのフローの優先度を高く指定する。例えば、優先度情報を「高」と設定する。また、フロー検出／優先度指定部５０１は、パケットヘッダ情報の組合せによりマルチキャストのフローを検出し、マルチキャストのフローの優先度を低く指定する。例えば、優先度情報を「低」と設定する。また、フロー検出／優先度指定部５０１は、入力されたヘッダ情報と優先度情報とを宛先情報テーブルポインタ検索部５０２に出力する。なお、フロー検出／優先度指定部５０１は、ＶｏＩＰ以外にも適宜の音声パケットの優先度情報を「高」としてもよい。これら以外にも適宜のパケットの優先度情報を「高」又は「低」と設定してもよい。また、本実施の形態では、「高」と「低」の２段階に設定しているが、複数の優先度を設定し、優先度毎の複数のキューにキューイングするようにしてもよい。
【００３５】
宛先情報テーブル読込みポインタ検索部５０２は、パケットヘッダ情報内の宛先ＩＰアドレスをキーとし、ＣＡＭ（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）や木構造データを検索し、その検索結果を用いてポインタテーブル５０３を参照し、宛先情報テーブル４０５を読込む為のＦｉｒｓｔポインタ情報を取得する。また、取得されたＦｉｒｓｔポインタ情報と、優先度情報とをＦｉｒｓｔ振分け部５０４へ出力する。
【００３６】
ポインタテーブル５０３は、宛先情報テーブル４０５を読込む為のポインタ情報を格納する。宛先ＩＰアドレスとＦｉｒｓｔポインタ情報は、例えば、１対１に対応しており、宛先ＩＰアドレスが決まれば宛先情報テーブル４０５を参照するポインタが決まる。例えば、ユニキャストの宛先ＩＰアドレスに対して、図１６（ｂ）のポインタＡを関連付けるようにポインタテーブル５０３は構成される。また、例えば、マルチキャストの宛先ＩＰアドレスに対して、図１６（ｃ）のポインタＢを関連付けるように構成される。なお、1対１に限らず、宛先ＩＰアドレスとＦｉｒｓｔポインタ情報をｎ対１に対応させて、異なる宛先ＩＰアドレスであっても同一のポインタ情報を指すようにしてもよい。
【００３７】
Ｆｉｒｓｔ振分け部５０４は、フロー検出／優先度指定部５０１により指定された優先度に従って、Ｆｉｒｓｔポインタ低優先キュー５０５−１とＦｉｒｓｔポインタ高優先キュー５０５−２のどちらかのキューに、ポインタ情報と優先度情報を振分ける。なお、優先度情報については省略してもよい。
【００３８】
Ｆｉｒｓｔポインタ低優先キュー５０５−１、Ｆｉｒｓｔポインタ高優先キュー５０５−２は、宛先情報テーブル読込みポインタ検索部５０２により取得されたＦｉｒｓｔポインタ情報とフロー検出／優先度指定部５０１により指定された優先度情報とが保持される優先度毎の待ちキューである。なお、優先度情報は省略してもよい。また、各キュー５０５−１、５０５−２は、優先制御スケジューラ５０７に対して引抜き要求を出し、優先制御スケジューラ５０７により決定された順番でＦｉｒｓｔポインタ情報が引抜かれる。
【００３９】
Ｆｉｒｓｔポインタ低優先キュー５０５−１は、フロー検出／優先度指定部５０１により指定された優先度が低いパケット（例えば、マルチキャストパケット）のＦｉｒｓｔポインタ情報が保持される。Ｆｉｒｓｔポインタ高優先キュー５０５−２は、フロー検出／優先度指定部５０１により指定された優先度が高いパケット（例えば、ＶｏＩＰパケット）のＦｉｒｓｔポインタ情報が保持される。
【００４０】
Ｎｅｘｔポインタキュー５０６は、宛先情報テーブル検索部５０８により取得されたＮｅｘｔポインタ情報が保持される待ちキューである。また、Ｎｅｘｔポインタキュー５０６は、優先制御スケジューラ５０７に対して引抜き要求を出し、優先制御スケジューラ５０７により決定された順番でＮｅｘｔポインタ情報が引抜かれる。
【００４１】
優先制御スケジューラ（優先制御付宛先情報テーブル読込みスケジューラ）５０７は、Ｆｉｒｓｔポインタ低優先キュー５０５−１、Ｆｉｒｓｔポインタ高優先キュー５０５−２及びＮｅｘｔポインタキュー５０６からの引抜き要求に対して、優先度に従った引抜きスケジューリングを行う。また、スケジューリング結果に従い各キューからポインタ情報（Ｆｉｒｓｔポインタ情報又はＮｅｘｔポインタ情報）を引抜き、宛先情報テーブル検索部５０８へポインタ情報を送る。例えば、Ｎｅｘｔポインタキュー５０６、Ｆｉｒｓｔポインタ高優先キュー５０５−２、Ｆｉｒｓｔポインタ低優先キュー５０５−１の優先順位でポインタ情報を引き抜く。また、パケットの処理順番性を守る為に、一度Ｆｉｒｓｔポインタキュー５０５−１、５０５−２から引き抜きを行うと、宛先情報テーブル検索部５０８から宛先情報出力終了通知を受信するまでは、Ｆｉｒｓｔポインタキュー５０５−１、５０５−２から次のパケットのポインタ情報の引抜きは行わず、Ｎｅｘｔポインタキュー５０６からのみ引き抜きを行うことができる。なお、この引き抜き抑止制御は優先度とは無関係に行う。
【００４２】
宛先情報テーブル検索部５０８は、優先制御スケジューラ５０７からのポインタ情報に従って宛先情報テーブル４０５を参照し、対応する宛先情報とＮｅｘｔポインタ情報と宛先情報終了識別子を取得する。また、宛先情報を検索結果としてパケット転送／複製部に４０３に出力する。ここで、宛先情報テーブル検索部５０８は、ユニキャストの場合、宛先情報として出力ポート番号とネクストホップＩＰアドレスを取得・出力し、マルチキャストの場合出力ポート番号を取得・出力する。また、宛先情報終了識別子により宛先情報出力終了を判定し、宛先情報出力終了であった場合（例えば、宛先情報終了識別子が１の場合）は、宛先情報出力終了通知を優先制御スケジューラ５０７に送る。一方、宛先情報出力終了でなかった場合（例えば、宛先情報終了識別子が０の場合）は、Ｎｅｘｔポインタ情報をＮｅｘｔポインタキュー５０６へ送る。
【００４３】
図６は、低優先マルチキャストと高優先ＶｏＩＰのＦｉｒｓｔポインタ優先制御付スケジューリングでのパケット出力順を示す図である。
例えば、ＭＣ０、ＶｏＩＰ０、ＭＣ１、ＶｏＩＰ１の順に入力されると、ＭＣ０が複製され出力された後にＶｏＩＰ０が出力される。このとき、ＭＣ１とＶｏＩＰ１がそれぞれ低優先キュー、高優先キューに保持されているとすれば、優先度に従いＶｏＩＰ１が先に出力される。したがって、ＶｏＩＰ１は、ＭＣ１が複製され出力されるまで待たずに出力されることができる。例えば、マルチキャスト展開数が多くなっても、ＶｏＩＰパケットへの影響が小さくなる。
【００４４】
１．２  フローチャート
図９は、宛先検索部４０４が実行するＦｉｒｓｔポインタ優先制御付宛先検索フローを示す図である。
宛先検索部４０４は、パケット転送／複製部４０３から、パケットヘッダ情報を含む宛先検索要求を入力すると、以下の処理を実行する。
【００４５】
フロー検出／優先度指定部５０１は、ヘッダ情報からフローを検出し優先度を指定する（処理９０１）。宛先情報テーブルポインタ検索部５０２は、ヘッダ情報（例えば、宛先ＩＰアドレス）から宛先情報テーブル情報へのポインタを検索する（処理９０２）。例えば、ポインタテーブル５０３を参照し、宛先ＩＰアドレスに対応するＦｉｒｓｔポインタ情報を取得する。Ｆｉｒｓｔ振分け部５０４は、優先度に対応するＦｉｒｓｔポインタキューへＦｉｒｓｔポインタ情報をキューイングする（処理９０３）。Ｆｉｒｓｔポインタ低優先キュー５０５−１、及び、Ｆｉｒｓｔポインタ高優先キュー５０５−２は、ポインタ情報がキューイングされると、優先制御スケジューラ５０７に対して引抜き要求を出す（処理９０４）。次に、処理９１３に移る。
【００４６】
処理９１３では、優先制御スケジューラ５０７は、引抜きスケジューリングを行う（処理９１３）。例えば、Ｎｅｘｔポインタキュー５０６、Ｆｉｒｓｔポインタ低優先キュー５０５−１、Ｆｉｒｓｔポインタ高優先キュー５０５−２のいずれかのキューからポインタ情報を引き抜くか決定する。なお、処理の詳細は後述する。優先制御スケジューラ５０７は、決定された順番でキューからポインタ情報を引抜く（処理９０５）。また、引き抜いたポインタ情報を宛先情報テーブル検索部５０８へ出力する。
【００４７】
宛先情報テーブル検索部５０８は、ポインタ情報を用いて宛先情報テーブル４０５にアクセスする（処理９０６）。宛先情報テーブル検索部５０８は、宛先情報テーブル４０５から宛先情報及び／又はＮｅｘｔポインタ情報を取得する（処理９０７）。また、宛先情報終了識別子を取得する。例えば、ユニキャストに対応するポインタ情報（例えば、図１６（ｂ）のポインタＡ）の場合、宛先情報として出力ポート番号「１」と、ネクストホップＩＰアドレス「１９２．１６８．０．２」が取得され、さらに宛先情報終了識別子１が取得される。一方、マルチキャストに対応するポインタ情報（例えば、図１６（ｃ）のポインタＢ）の場合、宛先情報として出力ポート番号「０」が取得され、Ｎｅｘｔポインタ情報として「Ｎｅｘｔポインタ１」が取得され、さらに宛先情報終了識別子０が取得される。宛先情報テーブル検索部５０８は、検索結果として宛先情報をパケット転送／複製部４０３へ出力する（処理９０８）。
【００４８】
宛先情報テーブル検索部５０８は、宛先情報終了識別子に基づき宛先情報終了か判断する（処理９０９）。例えば、宛先情報終了識別子が「１」であれば宛先情報終了と判断し、一方、宛先情報終了識別子が「０」であれば宛先情報終了でないと判断できる。なお、識別子はこれ以外にも適宜の情報であってもよい。また、これに限らず適宜の手法により宛先情報の終了を判断してもよい。宛先情報テーブル検索部５０８は、宛先情報終了と判断した場合（処理９０９：Ｙ）処理９１０に移り、一方、宛先情報終了でないと判断した場合（処理９０９：Ｎ）処理９１１に移る。
【００４９】
処理９１０では、宛先情報テーブル検索部５０８は、優先制御スケジューラ５０７に対して宛先情報出力終了通知を送る（処理９１０）。
処理９１１では、宛先情報テーブル検索部５０８は、Ｎｅｘｔポインタキュー５０６へ取得されたＮｅｘｔポインタ情報をキューイングする（処理９１１）。Ｎｅｘｔポインタキュー５０６は、優先制御スケジューラ５０７に対して引抜き要求を出す（処理９１２）。次に、処理９１３に移り、以降の処理を実行する。Ｎｅｘｔポインタキュー５０６へキューイングされたポインタ情報は優先的に引き抜かれ（例えば処理９０５）、Ｎｅｘｔポインタ情報に従い宛先情報テーブル４０５が繰り返し検索される（例えば処理９０６、９０７）。
【００５０】
図１０は、図９の処理９１３及び９０５の詳細フローを示す図である。図１０を参照して、優先制御スケジューラ５０７による上述の処理９１３及び９０５の詳細を説明する。
優先制御スケジューラ５０７は、ポインタキューからの引き抜き要求を入力すると、以下の処理を実行する。引き抜き要求は、例えば、Ｆｉｒｓｔポインタ低優先キュー５０５−１、Ｆｉｒｓｔポインタ高優先キュー５０５−２、Ｎｅｘｔポインタキュー５０６の各キューから出力される（図９の処理９０４、９１２に相当）。
【００５１】
優先制御スケジューラ５０７は、Ｎｅｘｔポインタキュー５０６からの引抜き要求があるか判断する（処理１００１）。優先制御スケジューラ５０７は、Ｎｅｘｔポインタキュー５０６からの引抜き要求があれば（処理１００１：Ｙ）、Ｎｅｘｔポインタキュー５０６からポインタ情報を引抜き、宛先情報テーブル検索部５０８へ出力する（処理１００８）。このように、Ｎｅｘｔポインタキュー５０６に、ポインタ情報がキューイングされるとＮｅｘｔポインタキュー５０６から引き抜き要求が出され、処理１００１、処理１００８が実行されて、Ｎｅｘｔポインタキュー５０６からポインタ情報が引き抜かれる。
【００５２】
一方、優先制御スケジューラ５０７は、Ｎｅｘｔポインタキュー５０６からの引抜き要求がなければ（処理１００１：Ｎ）、Ｆｉｒｓｔポインタキュー５０５−１、５０５−２からの引抜き要求抑止中か判断する（処理１００２）。例えば、引抜き抑止中か否かを示すフラグを参照し、判断することができる。このフラグは、初期状態では「抑止解除」と設定しておく。
【００５３】
優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタキュー５０５からの引抜き要求抑止中であれば（処理１００２：Ｙ）、宛先情報出力終了通知が来ているか判断する（処理１００３）。優先制御スケジューラ５０７は、宛先情報出力終了通知が来ていれば（処理１００３：Ｙ）、Ｆｉｒｓｔポインタキュー５０５からの引抜き要求抑止を解除する（処理１００４）。例えば、フラグを「抑止解除」に設定する。また、処理１００２に移る。一方、優先制御スケジューラ５０７は、宛先情報出力終了通知が来ていない場合（処理１００３：Ｎ）、処理１００２に移る。
【００５４】
また、Ｆｉｒｓｔポインタキュー５０５からの引抜き要求抑止中でなければ（処理１００２：Ｎ）、優先制御スケジューラ５０７は、スケジューリング設定部４０９からスケジューリングモード設定値を読込む（処理１００５）。また、優先制御スケジューラ５０７は、読み込まれたスケジューリングモード設定値が、例えばＷＦＱを示すか判断する（処理１００６）。優先制御スケジューラ５０７は、スケジューリングモード設定値がＷＦＱを示す場合（処理１００６：Ｙ）、ＷＦＱスケジューリング制御を実行して、Ｆｉｒｓｔポインタ低優先キュー５０５−１又はＦｉｒｓｔポインタ高優先キュー５０５−２からポインタ情報を引抜く（処理１２００）。一方、優先制御スケジューラ５０７は、スケジューリングモード設定値がＷＦＱを示さない場合（処理１００６：Ｎ）、完全優先スケジューリング制御を実行して、Ｆｉｒｓｔポインタ低優先キュー５０５−１又はＦｉｒｓｔポインタ高優先キュー５０５−２からポインタ情報を引抜く（処理１１００）。なお、完全優先スケジューリング制御、ＷＦＱスケジューリング制御の処理の詳細は後述する。
優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタキュー５０５からの引抜き要求を抑止する（処理１００９）。例えば、フラグを「抑止中」に設定する。
【００５５】
１．３  完全優先スケジューリング制御
（フローチャート）
図１７は、完全優先スケジューリング制御のフローチャートである。図１７を参照して、上述の処理１１００について説明する。
【００５６】
まず、完全優先スケジューリング制御が起動されると、優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キュー５０５−１からの引抜き要求があるか判断する（処理１７０１）。優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キュー５０５−１からの引抜き要求がなければ（処理１７０１：Ｎ）、Ｆｉｒｓｔポインタ低優先キュー５０５−２からポインタ情報を引抜き、宛先情報テーブル検索部５０８へ出力する（処理１７０２）。また、処理１００９に移る。
【００５７】
一方、優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キュー５０５−１からの引抜き要求があれば（処理１７０１：Ｙ）、Ｆｉｒｓｔポインタ高優先キュー５０５−１からポインタ情報を引抜き、宛先情報テーブル検索部５０８へ出力する（処理１７０３）。また、処理１００９へ移る。
【００５８】
（動作例）
図７は、宛先情報テーブル読込みＦｉｒｓｔポインタキューにおけるマルチキャストパケットの完全優先スケジューリングの流れを示す図である。
図７を参照して、スケジューラ５０７によるポインタの引抜きの動作例を説明する。
【００５９】
まず、図の左の欄について説明する。低優先キュー７０１（図５のキュー５０５−１に対応）にＭＣ０があるとすると（図中左１段目）、スケジューラ７０４（図５の優先制御スケジューラ５０７に対応）は、ＭＣ０を引抜く（左２段目）。ここで、低優先キュー７０１及び高優先キュー７０２からの引抜きは抑止される。ＭＣ０は、宛先検索の後、Ｎｅｘｔポインタ情報がＮｅｘｔポインタキュー７０３（図５のキュー５０６に対応）にキューイングされる（左３段目）。次に、Ｎｅｘｔポインタキュー７０３から引抜き要求が出されており、スケジューラ７０４はＮｅｘｔポインタキュー７０３のＭＣ０を優先して引抜く（左４段目）。ここで、ＭＣ０の宛先検索に従い、宛先情報テーブル検索部５０８から宛先情報出力終了通知を受信し、抑止が解除されたとする。
【００６０】
次に、図の中央の欄について説明する。左４段目のようにＭＣ０が出力されて各キューが図示の状態になると、スケジューラ７０４は、優先度に従い高優先キュー７０２からＶｏＩＰ０を引抜く（中央１段目）。また、同様にＶｏＩＰ１、ＶｏＩＰ２を順に引抜く（中央２、３段目）。また、中央３段目のようにＶｏＩＰが出力されて高優先キュー７０２にポインタ情報がなくなると、スケジューラ７０４は低優先キュー７０１からＭＣ１を引抜く（中央４段目）。
【００６１】
次に、図の右の欄について説明する。ＭＣ１は、宛先検索の後、Ｎｅｘｔポインタ情報がＮｅｘｔポインタキュー７０３にキューイングされる（右１段目）。次に、Ｎｅｘｔポインタキュー７０３から引抜き要求が出されており、スケジューラ７０４はＮｅｘｔポインタキュー７０３のＭＣ１を優先して引抜く（右２段目）。右２段目のようにＭＣ１が出力されて各キューが図示の状態になると、スケジューラ７０４は、優先度に従いＶｏＩＰ３、ＶｏＩＰ４を順に引抜く（右３、４段目）。
【００６２】
１．４  ＷＦＱ（重み付き均等保証）スケジューリング制御
（フローチャート）
図１８は、ＷＦＱスケジューリング制御のフローチャートである。図１８を参照して、上述の処理１２００について説明する。
【００６３】
まず、ＷＦＱスケジューリング制御が起動されると、優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キューからの引抜き要求があるか判断する（処理１８０１）。優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キューからの引抜き要求があれば（処理１８０１：Ｙ）、処理１８０２に移り、一方、その引抜き要求がなければ（処理１８０１：Ｎ）、処理１８０４に移る。
【００６４】
処理１８０２では、優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ低優先キューからの引抜き要求があるか判断する（処理１８０２）。優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ低優先キューからの引抜き要求があれば（処理１８０２：Ｙ）、処理１８０３に移り、一方、その引抜き要求がなければ（処理１８０２：Ｎ）、処理１８０５に移る。
【００６５】
処理１８０３では、優先制御スケジューラ５０７は、高優先カウンタの値が、低優先カウンタの値以下か判断する（処理１８０３）。優先制御スケジューラ５０７は、高優先カウンタの値が、低優先カウンタの値以下であれば（処理１８０３：Ｙ）、処理１８０５に移り、一方、それ以外は（処理１８０３：Ｎ）、処理１８０４に移る。なお、高優先カウンタと低優先カウンタの値が同じ場合は、低優先キューからポインタ情報が引抜かれるように、処理１８０４へ移るようにしてもよい。
【００６６】
処理１８０５では、優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キューからポインタ情報を引抜く（処理１８０５）。また、優先制御スケジューラ５０７は、スケジューリング設定部４０９からＷＦＱ高優先重み設定値を読込む（処理１８０７）。優先制御スケジューラ５０７は、高優先カウンタに、読み込まれたＷＦＱ高優先重み設定値を加算する（処理１８０９）。
【００６７】
一方、処理１８０４では、優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ低優先キューからポインタ情報を引抜く（処理１８０４）。本スケジューリング制御では、高優先キューからの引抜き要求があっても、処理１８０３で高優先カウンタの値が低優先カウンタの値以下であれば、低優先キューからポインタ情報が引抜かれる。例えば、高優先のパケットだけに偏らず、低優先のパケットも処理できる。例えば、高優先のパケットが多量に入力されても、低優先のパケットが処理されずに溜まっていくのを防ぐことができる。また、優先制御スケジューラ５０７は、スケジューリング設定部４０９からＷＦＱ低優先重み設定値を読込む（処理１８０６）。優先制御スケジューラ５０７は、低優先カウンタに低優先重み設定値を加算する（処理１８０８）。
【００６８】
ＷＦＱ高優先重み設定値及びＷＦＱ低優先重み設定値は、高優先／低優先のキューからポインタ情報を引抜く数の比率に対して、その逆数とすることができる。例えば、高優先キューと低優先キューから引抜くポインタ情報の比率が２：１（高優先から２つ引抜くのに対して低優先から１つ引抜く）であれば、重み設定値は、それぞれその逆数の１／２、１／１となる。比率が大きいほど重みは小さくなる。どちらのキューからポインタ情報を引き抜くかを決める判定（処理１８０３）では、カウンタの値を比較して値の小さい方のキューが選択される。また、選択されたキューに対応する高優先又は低優先のカウンタに、重み設定値が加算される。重みが小さいほど（比率が大きいほど）カウンタの増分が小さくなり、重みの小さいキューが、より選択されやすくなる。なお、カウンタは、これ以外にも、例えばキューから引抜いたポインタの数をカウントするなど、適宜の値をカウントしてもよい。カウンタは、カウントアップしてもいし、例えば設定された比率からカウントダウンするようにしてもよい。また、他の手法により、設定された比率になるようにしてもよい。
【００６９】
次に、優先制御スケジューラ５０７は、カウンタがオーバーフローするのを防ぐための更新処理を実行する（処理１８１０〜処理１８１６）。なお、これらの処理は省略してもよいし、カウンタのオーバーフローを防ぐ適宜の処理であってもよい。
【００７０】
優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キューに、ポインタ情報が残っているか判断する（処理１８１０）。優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キューに、ポインタ情報が残っていれば（処理１８１０：Ｙ）、Ｆｉｒｓｔポインタ低優先キューに、ポインタ情報が残っているか判断する（処理１８１１）。優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ低優先キューに、ポインタ情報が残っていれば（処理１８１１：Ｙ）、優先制御スケジューラ５０７は、高優先カウンタと低優先カウンタが共にカウンタの半分を越えているか判断する（処理１８１３）。優先制御スケジューラ５０７は、高優先カウンタと低優先カウンタが共にカウンタの半分を越えていれば（処理１８１３：Ｙ）、処理１８１６へ移り、一方、超えていなければ（処理１８１３：Ｎ）図１０の処理１００９に移る。
【００７１】
また、優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ低優先キューに、ポインタ情報が残っていなければ（処理１８１１：Ｎ）、高優先カウンタがカウンタの半分を越えているか判断する（処理１８１４）。優先制御スケジューラ５０７は、高優先カウンタがカウンタの半分を越えていれば（処理１８１４：Ｙ）処理１８１６へ移り、一方、超えていなければ（処理１８１４：Ｎ）図１０の処理１００９に移る。
【００７２】
優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ高優先キューに、ポインタ情報が残っていなければ（処理１８１０：Ｎ）、Ｆｉｒｓｔポインタ低優先キューに、ポインタ情報が残っているか判断する（処理１８１２）。優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ低優先キューに、ポインタ情報が残っていれば（処理１８１２：Ｙ）、低優先カウンタがカウンタの半分を越えているか判断する（処理１８１５）。優先制御スケジューラ５０７は、低優先カウンタがカウンタの半分を越えていれば（処理１８１５：Ｙ）、処理１８１６へ移り、一方、超えていなければ（処理１８１５：Ｎ）図１０の処理１００９に移る。また、優先制御スケジューラ５０７は、優先制御スケジューラ５０７は、Ｆｉｒｓｔポインタ低優先キューに、ポインタ情報が残っていなければ（処理１８１２：Ｎ）、図１０の処理１００９に移る。
処理１８１６では、優先制御スケジューラ５０７は、半分の値を越えているカウンタからカウンタの半分の値を減算する（処理１８１６）。
【００７３】
なお、上述の処理ではカウンタの半分を超えたかを判断しているが、半分に限らず適宜の値であってもよい。また、カウンタから減算する値についても、カウンタの半分の値を減算する以外にも適宜の値であってもよい。
【００７４】
（動作例）
図８は、宛先情報テーブル読込みＦｉｒｓｔポインタキューにおけるマルチキャストパケットのＷＦＱスケジューリングの流れを示す図である。図７の完全優先では優先度の高いキューから常に引抜きを行い、一方、図８のＷＦＱ（重み付き均等保証）では設定した比率に応じてキューからの引抜きを行う。
【００７５】
図８を参照して、スケジューラ５０７によるＷＦＱスケジューリング制御実行時のポインタの引抜きの動作例を説明する。なお、高優先カウンタ及び低優先カウンタは、それぞれ０に初期化されている。また、この例では、高優先と低優先の引抜きの比率は２：１とする。したがって、比率の逆数に従い、ＷＦＱ高優先重み設定値は１／２（０．５）であり、ＷＦＱ高優先重み設定値は１である。
【００７６】
まず、図の左の欄について説明する。低優先キュー８０１（図５のキュー５０５−１に対応）にＭＣ０があるとすると（図中左１段目）、スケジューラ８０４（図５の優先制御スケジューラ５０７に対応）は、ＭＣ０を引抜く（左２段目）。低優先カウンタに、低優先重み設定値１が加算され、カウンタの値は１となる。また、低優先キュー７０１及び高優先キュー７０２からの引抜きは抑止される。ＭＣ０は、宛先検索の後、Ｎｅｘｔポインタ情報がＮｅｘｔポインタキュー７０３（図５のキュー５０６に対応）にキューイングされる（左３段目）。次に、Ｎｅｘｔポインタキュー７０３から引抜き要求が出されており、スケジューラ７０４はＮｅｘｔポインタキュー７０３からＭＣ０を引抜く（左４段目）。ここで、ＭＣ０の宛先検索に従い、宛先情報テーブル検索部５０８から宛先情報出力終了通知を受信し、抑止が解除されたとする。
【００７７】
次に、図の中央の欄について説明する。左４段目のようにＭＣ０が出力されて各キューが図示の状態になると、高優先カウンタの値（０）は、低優先カウンタの値（１）より小さいので（上述の処理１８０３）、スケジューラ７０４は、高優先キュー７０２からＶｏＩＰ０を引抜く（中央１段目）。また、高優先カウンタに、高優先重み設定値０．５が加算され、カウンタの値は０．５となる。さらに、高優先カウンタの値（０．５）は、低優先カウンタの値（１）より小さいであるので、スケジューラ７０４は、高優先キュー７０２からＶｏＩＰ１を引抜く（中央２段目）。また、高優先カウンタに、高優先重み設定値０．５が加算され、カウンタの値は１となる。
【００７８】
中央３段目の状態では、高優先カウンタの値（１）は、低優先カウンタの値（１）と同じである。この例では、スケジューラ７０４は、両カウンタの値が同じ場合、低優先キュー７０１からＭＣ１を引抜く（中央３段目）。すなわち、上述の図１８の処理１８０３では、「高優先カウンタの値＜低優先カウンタの値」を判断する例である。また、低優先カウンタに、低優先重み設定値１が加算され、カウンタの値は２となる。なお、両カウンタの値が同じ場合には、高優先キューから引抜くようにしてもよい。ＭＣ１は、宛先検索の後、Ｎｅｘｔポインタ情報がＮｅｘｔポインタキュー７０３にキューイングされる（中央４段目）。
【００７９】
次に、図の右の欄について説明する。Ｎｅｘｔポインタキュー７０３から引抜き要求が出されており、スケジューラ７０４はＮｅｘｔポインタキュー７０３からＭＣ１を引抜く（右１段目）。右２段目のようにＭＣ１が出力されて各キューが図示の状態になると、高優先カウンタの値（１）は、低優先カウンタの値（２）より小さいので、スケジューラ７０４は、高優先キュー７０２からＶｏＩＰ２を引抜く（右２段目）。また、高優先カウンタに、高優先重み設定値０．５が加算され、カウンタの値は１．５となる。同様にして、スケジューラ７０４は、高優先キュー７０２からＶｏＩＰ３を引抜く（右３段目）。ここで、高優先カウンタの値は２となる。
【００８０】
右４段目の状態では、高優先カウンタの値（２）は、低優先カウンタの値（２）と同じである。この例では、スケジューラ７０４は、低優先キュー７０１からＭＣ２を引抜く(右４段目）。なお、両カウンタの値が同じ場合には、高優先キューから引抜くようにしてもよい。
【００８１】
２．第２の実施の形態
２．１  装置構成
本実施の形態におけるルータは、宛先検索部に優先度別のＮｅｘｔポインタキューを有する。なお、宛先検索部４０４１以外の各部の構成は、図４と同様とすることができる。
【００８２】
図１１は、第２の実施の形態におけるＦｉｒｓｔ・Ｎｅｘｔポインタ優先制御付の宛先検索部４０４１の一構成例を示す図である。
宛先検索部４０４１は、フロー検出／優先度指定部１１０１と、宛先情報テーブルポインタ検索部１１０２と、ポインタテーブル１１０３と、Ｆｉｒｓｔ振分け部１１０４と、Ｎｅｘｔ振分け部１１０５と、Ｆｉｒｓｔポインタ低優先キュー１１０６−１と、Ｆｉｒｓｔポインタ高優先キュー１１０６−２と、Ｎｅｘｔポインタ低優先キュー１１０７−１と、Ｎｅｘｔポインタ高優先キュー１１０７−２と、優先制御スケジューラ１１０８と、宛先情報テーブル検索部１１０９とを有する。
【００８３】
フロー検出／優先度指定部１１０１は、パケット転送／複製部４０３からのパケットヘッダ情報の組合せによりフローを検出し、フロー毎に処理の優先度を指定する。例えば、パケットヘッダ情報の組合せによりＶｏＩＰのフローを検出し、ＶｏＩＰのフローの優先度を高く指定する。例えば、優先度情報を「高」と設定する。また、パケットヘッダ情報の組合せによりマルチキャストのフローを検出すると、マルチキャストの中でも優先度を指定する。例えば、動画については優先度を高く（優先度情報を「高」）、ニュースについては優先度を低く（優先度情報を「低」）とすることができる。動画かニュースかの判断は、例えば、パケットヘッダ情報に適宜の識別子を含め、これを参照することにより判断できる。なお、動画とニュースの例を上げたが、優先度はこれに限らず適宜のルールで設定することができる。また、フロー検出／優先度指定部１１０１は、入力されたヘッダ情報と優先度情報とを宛先情報テーブルポインタ検索部１１０２に出力する。
宛先情報テーブルポインタ検索部１１０２、ポインタテーブル１１０３については、上述の第１の実施の形態と同様であるので、説明を省略する。
【００８４】
Ｆｉｒｓｔ振分け部１１０４は、フロー検出／優先度指定部５０１により指定された優先度に従って、Ｆｉｒｓｔポインタ低優先キュー５０５−１とＦｉｒｓｔポインタ高優先キュー５０５−２のどちらかのキューに、ポインタ情報と優先度情報を振分ける。
【００８５】
Ｆｉｒｓｔポインタ低優先キュー１１０６−１、Ｆｉｒｓｔポインタ高優先キュー１１０６−２は、宛先情報テーブル読込みポインタ検索部１１０２により取得されたＦｉｒｓｔポインタ情報とフロー検出／優先度指定部１１０１により指定された優先度情報とが保持される優先度毎の待ちキューである。また、各キュー１１０６−１、１１０６−２は、優先制御スケジューラ１１０８に対して引抜き要求を出し、優先制御スケジューラ１１０８により決定された順番でＦｉｒｓｔポインタ情報が引抜かれる。
【００８６】
Ｆｉｒｓｔポインタ低優先キュー１１０６−１は、フロー検出／優先度指定部５０１により指定された優先度が低いパケットのＦｉｒｓｔポインタ情報が保持される。Ｆｉｒｓｔポインタ高優先キュー１１０６−２は、フロー検出／優先度指定部５０１により指定された優先度が高いパケットのＦｉｒｓｔポインタ情報とが保持される。例えば、Ｆｉｒｓｔポインタ高優先キュー１１０６−２には、ＶｏＩＰパケットと、マルチキャストパケットのうち、動画など優先度が高く設定されたパケットが保持される。なお、Ｆｉｒｓｔポインタ高優先キュー１１０６−２にはＶｏＩＰのみをキューイングし、マルチキャストパケットは、フロー検出／優先度指定部１１０１で設定された優先度に関わらずＦｉｒｓｔポインタ低優先キュー１１０６−１にキューイングするようにしてもよい。また、もうひとつキューをさらに設け、ＶｏＩＰパケットのポインタ情報がキューイングされるキューと、高優先のマルチキャスパケットがキューイングされるキューと、低優先のマルチキャストパケットがキューイングされるキューを分けてもよい。
【００８７】
Ｎｅｘｔ振分け部１１０５は、フロー検出／優先度指定部１１０１により指定された優先度に従って、Ｎｅｘｔポインタ低優先キュー１１０７−１とＮｅｘｔポインタ高優先キュー１１０７−２のどちらかのキューに、ポインタ情報と優先度情報を振分ける。
【００８８】
Ｎｅｘｔポインタ低優先キュー１１０７−１、Ｎｅｘｔポインタ高優先キュー１１０７−２は、宛先情報テーブル検索部１１０１により取得されたＮｅｘｔポインタ情報と、フロー検出／優先度指定部１１０２により指定された優先度情報とが保持される待ちキューである。各キュー１１０７−１、１１０７−２は、優先制御スケジューラ１１０８に対して引抜き要求を出し、優先制御スケジューラ１１０８により決定された順番で引抜かれる。
【００８９】
優先制御スケジューラ１１０８（優先制御付宛先情報テーブル読込みスケジューラ）は、Ｆｉｒｓｔポインタ低優先キュー１１０６−１、Ｆｉｒｓｔポインタ高優先キュー１１０６−２、Ｎｅｘｔポインタ低優先キュー１１０７−１及びＮｅｘｔポインタ高優先キュー１１０７−２からの引抜き要求に対して、優先度に従った引抜きスケジューリングを行い、宛先情報テーブル検索部１１０９へポインタ情報と優先度情報を送る。例えば、Ｎｅｘｔポインタ高優先キュー１１０７−２、Ｆｉｒｓｔポインタ高優先キュー１１０６−２、Ｎｅｘｔポインタ低優先キュー１１０７−１、Ｆｉｒｓｔポインタ低優先キュー１１０６−１の優先順位でポインタ情報を引き抜く。また、パケットの処理順番性を守る為に、一度Ｆｉｒｓｔポインタキューから引き抜きを行うと、宛先情報テーブル検索部１１０９からの宛先情報出力終了通知が来るまでは、そのＦｉｒｓｔポインタキューから次のパケットのポインタ情報と優先度情報の引抜きは行わず、Ｎｅｘｔポインタキュー及び他の優先度のＦｉｒｓｔポインタキューからのみ引き抜きを行う。この引き抜き抑止制御は優先度毎に独立して行う。
【００９０】
宛先情報テーブル検索部１１０９は、優先制御スケジューラ１１０８からのポインタ情報に従って宛先情報テーブル４０５を参照し、宛先情報とＮｅｘｔポインタ情報と宛先情報終了識別子を取得する。また、宛先情報テーブル検索部１１０９は、宛先情報を検索結果としてパケット転送／複製部４０３に出力する。ここで、宛先情報テーブル検索部１１０９は、ユニキャストの場合、宛先情報として出力ポート番号とネクストホップＩＰアドレスを出力し、マルチキャストの場合出力ポート番号を出力する。また、Ｎｅｘｔ情報内の宛先情報終了識別子により宛先情報出力終了を判定し、宛先情報出力終了であった場合（例えば、宛先情報終了識別子が１の場合）は、宛先情報出力終了通知と優先度情報を優先制御スケジューラ１１０８に送る。宛先情報出力終了でなかった場合（例えば、宛先情報終了識別子が０の場合）は、Ｎｅｘｔポインタ情報と優先度情報をＮｅｘｔ振分け部１１０５へ送る。
【００９１】
図１２は、低優先マルチキャストと高優先ＶｏＩＰのＦｉｒｓｔ・Ｎｅｘｔポインタ優先制御付スケジューリングでのパケット出力順を示す図である。例えば、ＭＣ０、ＶｏＩＰ０、ＭＣ１、ＶｏＩＰ１の順に入力されると、低優先のＭＣ０の宛先検索がされるが、Ｎｅｘｔポインタ情報がキューから引き抜かれる前に、高優先のＶｏＩＰ０が出力される。このように、高優先のＶｏＩＰは、低優先のＭＣが複製される途中で出力されることができる。
【００９２】
２．２  フローチャート
図１３は、本実施の形態におけるＦｉｒｓｔ・Ｎｅｘｔポインタ優先制御付宛先検索フローを示す図である。
宛先検索部４０４１は、パケット転送／複製部４０３から、パケットヘッダ情報を含む宛先検索要求を入力すると、以下の処理を実行する。なお、図中、（）内で表す符号は第１の実施の形態との対応関係を示す。
【００９３】
フロー検出／優先度指定部１１０１は、ヘッダ情報からフローを検出し優先度を指定する（処理１３０１）。例えば、ＶｏＩＰパケット、及び、動画のマルチキャストパケットに対しては優先度を高、ニュースのマルチキャストパケットに対しては優先度を低と指定する。宛先情報テーブルポインタ検索部１１０２は、ヘッダ情報（例えば、宛先ＩＰアドレス）から宛先情報テーブル情報へのポインタを検索する（処理１３０２）。Ｆｉｒｓｔ振分け部１１０４は、優先度に対応するＦｉｒｓｔポインタキューへポインタ情報をキューイングする（処理１３０３）。Ｆｉｒｓｔポインタ低優先キュー１１０６−１、及び、Ｆｉｒｓｔポインタ高優先キュー１１０６−２は、ポインタ情報がキューイングされると、優先制御スケジューラ５０７に対して引抜き要求を出す（処理１３０４）。次に、処理１３１３に移る。
【００９４】
処理１３１３では、優先制御スケジューラ１１０８は、引抜きスケジューリングを行う（処理１３１３）。例えば、Ｎｅｘｔポインタ低優先キュー１１０７−１、Ｎｅｘｔポインタ高優先キュー１１０７−２、Ｆｉｒｓｔポインタ低優先キュー１１０６−１、Ｆｉｒｓｔポインタ高優先キュー１１０６−２のいずれのキューからポインタ情報を引き抜くか決定する。なお、処理の詳細は後述する。優先制御スケジューラ１１０８は、決定された順番でキューからポインタ情報と優先度情報を引抜く（処理１３０５）。また、引き抜いたポインタ情報と優先度情報を宛先情報テーブル検索部１１０９へ出力する。
【００９５】
処理１３０６〜処理１３０９は、上述の第１の実施の形態の処理９０６〜９０９と同様であるので、説明を省略する。なお、処理１３０９において、宛先情報終了と判断した場合処理１３１０に移り、一方、宛先情報終了でないと判断した場合処理１３１１に移る。
処理１３１０では、宛先情報テーブル検索部１１０９は、優先制御スケジューラ５０７に対して宛先情報出力終了通知と優先度情報を送る（処理１３１０）。
【００９６】
処理１３１１では、宛先情報テーブル検索部５０８は、処理１３０７で取得されたＮｅｘｔポインタ情報と優先度情報をＮｅｘｔ振分け部１１０５に出力し、Ｎｅｘｔ振分け部１１０５は、優先度に対応するＮｅｘｔポインタキューへポインタ情報と優先度情報をキューイングする（処理１３１１）。Ｎｅｘｔポインタ高優先キュー１１０７−２、及び、Ｎｅｘｔポインタ低優先キュー１１０７−１は、ポインタ情報がキューイングされると、優先制御スケジューラ５０７に対して引抜き要求を出す（処理１３１２）。次に、処理１３１３に移り、以降の処理を実行する。
【００９７】
図１４は、本実施の形態におけるＦｉｒｓｔ・Ｎｅｘｔポインタ優先制御付宛先情報テーブル読込み完全優先スケジューラのフローを示す図である。図１４は、図１３の処理１３１３及び１３０５の詳細フロー（完全優先スケジューリングの場合）を示す。図１４を参照して、優先制御スケジューラ１１０８による上述の処理１３１３の詳細を説明する。
【００９８】
優先制御スケジューラ１１０８は、各ポインタキューからの引き抜き要求を入力すると、以下の処理を実行する。引き抜き要求は、各キューから出力される（図１３の処理１３０４、１３１２に相当）。
優先制御スケジューラ１１０８は、Ｎｅｘｔポインタ高優先キュー１１０７−２からの引抜き要求があるか判断する（処理１４０１）。優先制御スケジューラ１１０８は、Ｎｅｘｔポインタ高優先キュー１１０７−２からの引抜き要求があれば（処理１４０１：Ｙ）、Ｎｅｘｔポインタ高優先キュー１１０７−２からポインタ情報を引抜き、宛先情報テーブル検索部１１０９へ出力する（処理１４１５）。また、図１３の処理１３０６に移る。
【００９９】
一方、優先制御スケジューラ１１０８は、Ｎｅｘｔポインタ高優先キュー１１０７−２からの引抜き要求がなければ（処理１４０１：Ｎ）、Ｆｉｒｓｔポインタ高優先キュー１１０６−２からの引抜き要求抑止中か判断する（処理１４０２）。本実施の形態では、優先度毎に、引き抜き要求を抑止する。例えば、引抜き抑止中か否かを示す優先度毎の抑止フラグを参照し、判断することができる。この抑止フラグは、初期状態では例えば「抑止解除」と設定しておく。
【０１００】
優先制御スケジューラ１１０８は、Ｆｉｒｓｔポインタ高優先キュー１１０６−２からの引抜き要求抑止中であれば（処理１４０２：Ｙ）、宛先情報テーブル検索部１１０９から高優先の優先度情報と宛先情報出力終了通知とが来ているか判断する（処理１４０３）。優先制御スケジューラ１１０８は、高優先の優先度情報と宛先情報出力終了通知とが来ていれば（処理１４０３：Ｙ）、Ｆｉｒｓｔポインタ高優先キュー１１０６−２からの引抜き要求抑止を解除する（処理１４０４）。例えば、高優先のフラグを「抑止解除」に設定する。また、処理１４０２に移る。一方、優先制御スケジューラ１１０８は、高優先の優先度情報と宛先情報出力終了通知が来ていない場合（処理１４０３：Ｎ）、処理１４０２に移る。
【０１０１】
また、Ｆｉｒｓｔポインタ高優先キュー１１０６−２からの引抜き要求抑止中でなければ（処理１４０２：Ｎ）、優先制御スケジューラ１１０８は、Ｆｉｒｓｔポインタ高優先キュー１１０６−２からの引抜き要求があるか判断する（処理１４０５）。優先制御スケジューラ１１０８は、Ｆｉｒｓｔポインタ高優先キュー１１０６−１からの引抜き要求があれば（処理１４０５：Ｙ）、Ｆｉｒｓｔポインタ高優先キュー１１０６−１からポインタ情報を引抜き、宛先情報テーブル検索部１１０９へ出力する（処理１４１３）。優先制御スケジューラ１１０８は、Ｆｉｒｓｔポインタ高優先キュー１１０６−１からの引抜き要求を抑止する（処理１４１４）。例えば、高優先の抑止フラグを「抑止中」に設定する。また、図１３の処理１３０６に移る。
【０１０２】
優先制御スケジューラ１１０８は、Ｆｉｒｓｔポインタ高優先キュー１１０６−１からの引抜き要求がなければ（処理１４０５：Ｎ）、Ｎｅｘｔポインタ低優先キュー１１０７−１からの引抜き要求があるか判断する（処理１４０６）。優先制御スケジューラ１１０８は、Ｎｅｘｔポインタ低優先キュー１１０７−１からの引抜き要求があれば（処理１４０６：Ｙ）、Ｎｅｘｔポインタ低優先キュー１１０７−１からポインタ情報を引抜き、宛先情報テーブル検索部１１０９へ出力する（処理１４１２）。また、図１３の処理１３０６に移る。
【０１０３】
一方、優先制御スケジューラ１１０８は、Ｎｅｘｔポインタ低優先キュー１１０７−１からの引抜き要求がなければ（処理１４０６：Ｎ）、Ｆｉｒｓｔポインタ低優先キュー１１０６−１からの引抜き要求抑止中か判断する（処理１４０７）。例えば、引抜き抑止中か否かを示す低優先の抑止フラグを参照し、判断することができる。
【０１０４】
優先制御スケジューラ１１０８は、Ｆｉｒｓｔポインタ低優先キュー１１０６−１からの引抜き要求抑止中であれば（処理１４０７：Ｙ）、宛先情報テーブル検索部１１０９から低優先の優先度情報と宛先情報出力終了通知とが来ているか判断する（処理１４０８）。優先制御スケジューラ１１０８は、高優先の優先度情報と宛先情報出力終了通知とが来ていれば（処理１４０８：Ｙ）、Ｆｉｒｓｔポインタ低優先キュー１１０６−１からの引抜き要求抑止を解除する（処理１４０９）。例えば、低優先の抑止フラグを「抑止解除」に設定する。また、処理１４０７に移る。一方、優先制御スケジューラ１１０８は、低優先の優先度情報と宛先情報出力終了通知が来ていない場合（処理１４０８：Ｎ）、処理１４０７に移る。
【０１０５】
また、Ｆｉｒｓｔポインタ低優先キュー１１０６−１からの引抜き要求抑止中でなければ（処理１４０７：Ｎ）、優先制御スケジューラ１１０８は、Ｆｉｒｓｔポインタ低優先キュー１１０６−１からポインタ情報を引抜き、宛先情報テーブル検索部１１０９へ出力する（処理１４１０）。優先制御スケジューラ１１０８は、Ｆｉｒｓｔポインタ低優先キュー１１０６−１からの引抜き要求を抑止する（処理１４１１）。例えば、低優先の抑止フラグを「抑止中」に設定する。また、図１３の処理１３０６に移る。
なお、本実施の形態では、完全優先スケジューラについて説明したが、第１の実施の形態のように、ＷＦＱを用いてもよい。
【産業上の利用可能性】
【０１０６】
本発明は、例えば、パケット通信を行う装置、システム、サービスに関する産業に利用可能である。また、本発明は、ＩＰネットワークにおける動画配信サービスや、リアルタイム性が重視されるＶｏＩＰ電話サービス等に利用可能である。
【図面の簡単な説明】
【０１０７】
【図１】マルチキャスト対応のルータ１０１を用いたネットワーク構成を示す図である。
【図２】マルチキャスト宛先テーブル１回で纏めて読み込みを行う従来のルータ１０１の構成例を示す図である。
【図３】入力されたマルチキャストとＶｏＩＰに対する図２で示す装置からのパケット出力順を示す図である。
【図４】マルチキャスト宛先テーブル複数回読み込みを行う本発明を適用したルータ１０１の構成例を示す図である。
【図５】本発明の実施例１におけるＦｉｒｓｔポインタ優先制御付宛先検索部の一構成例を示す図である。
【図６】低優先マルチキャストと高優先ＶｏＩＰのＦｉｒｓｔポインタ優先制御付スケジューリングでのパケット出力順を示す図である。
【図７】宛先情報テーブル読込みＦｉｒｓｔポインタキューにおけるマルチキャストパケットの完全優先スケジューリングの流れを示す図である。
【図８】宛先情報テーブル読込みＦｉｒｓｔポインタキューにおけるマルチキャストパケットのＷＦＱスケジューリングの流れを示す図である。
【図９】宛先検索部４０４が実行するＦｉｒｓｔポインタ優先制御付宛先検索フローを示す図である。
【図１０】図９のステップ９１３の詳細フロー（完全優先スケジューリングの場合）を示す図である。
【図１１】本発明の実施例２におけるＦｉｒｓｔ・Ｎｅｘｔポインタ優先制御付宛先検索部の一構成例を示す図である。
【図１２】低優先マルチキャストと高優先ＶｏＩＰのＦｉｒｓｔ・Ｎｅｘｔポインタ優先制御付スケジューリングでのパケット出力順を示す図である。
【図１３】本発明におけるＦｉｒｓｔ・Ｎｅｘｔポインタ優先制御付宛先検索フローを示す図である。
【図１４】本発明におけるＦｉｒｓｔ・Ｎｅｘｔポインタ優先制御付宛先情報テーブル読込み完全優先スケジューラのフローを示す図である。
【図１５】従来の１回読込み方式宛先情報テーブルのフォーマットの一構成例を示す図である。
【図１６】本発明の複数回読込み方式宛先情報テーブルのフォーマットの一構成例を示す図である。
【図１７】図１０の処理１００７の詳細フロー（完全優先スケジューリング）を示す図である。
【図１８】図１０の処理１００８の詳細フロー（ＷＦＱスケジューリング）を示す図である。
【符号の説明】
【０１０８】
１０１…マルチキャスト対応ルータ
１０２…コンテンツ配信サーバ
１０３−１，１０３−２…ＶｏＩＰ電話
１０４−１，１０４−２…クラインアント
１０５−１，１０５−２…ルータ
２０１−１〜２０１−ｍ…受信キュー
２０２…ラウンドロビンスケジューラ
２０３…パケット転送／複製部
２０４…宛先テーブル１回読み込み宛先検索部
２０５…１回読込み方式宛先情報テーブル
２０６…スイッチ
２０７−１〜２０７−ｍ…送信キュー
２０８…送信制御部
４０１−１〜４０１−ｍ…受信キュー
４０２…ラウンドロビンスケジューラ
４０３…パケット転送／複製部
４０４…宛先テーブル複数読み込み宛先検索部
４０５…複数回読込み方式宛先情報テーブル
４０６…スイッチ
４０７−１〜４０７−ｍ…送信キュー
４０８…送信制御部
５０１…フロー検出／優先度指定部
５０２…宛先情報テーブル読込みポインタ検索部
５０３…ポインタテーブル
５０４…Ｆｉｒｓｔ振分け部
５０５−１…Ｆｉｒｓｔポインタ低優先キュー
５０５−２…Ｆｉｒｓｔポインタ高優先キュー
５０６…Ｎｅｘｔポインタキュー
５０７…Ｆｉｒｓｔポインタ優先制御付宛先情報テーブル読込みスケジューラ
５０８…宛先情報テーブル検索部
５０９…宛先情報テーブル
７０１…Ｆｉｒｓｔポインタ低優先キュー
７０２…Ｆｉｒｓｔポインタ高優先キュー
７０３…Ｎｅｘｔポインタキュー
７０４…Ｆｉｒｓｔポインタ優先制御付宛先情報テーブル読込み完全優先スケジューラ
８０１…Ｆｉｒｓｔポインタ低優先キュー
８０２…Ｆｉｒｓｔポインタ高優先キュー
８０３…Ｎｅｘｔポインタキュー
８０４…Ｆｉｒｓｔポインタ優先制御付宛先情報テーブル読込みＷＦＱスケジューラ
１１０１…フロー検出／優先度指定部
１１０２…宛先情報テーブル読込みポインタ検索部
１１０３…ポインタテーブル
１１０４…Ｆｉｒｓｔ振分け部
１１０５…Ｎｅｘｔ振分け部
１１０６−１…Ｆｉｒｓｔポインタ低優先キュー
１１０６−２…Ｆｉｒｓｔポインタ高優先キュー
１１０７−１…Ｎｅｘｔポインタ低優先キュー
１１０７−２…Ｎｅｘｔポインタ高優先キュー
１１０８…Ｆｉｒｓｔ・Ｎｅｘｔポインタ優先制御付宛先情報テーブル読込みスケジューラ
１１０９…宛先情報テーブル検索部
１１１０…宛先情報テーブル
【図１】
0004550728.tif 000002
【図２】
0004550728.tif 000003
【図３】
0004550728.tif 000004
【図４】
0004550728.tif 000005
【図５】
0004550728.tif 000006
【図６】
0004550728.tif 000007
【図７】
0004550728.tif 000008
【図８】
0004550728.tif 000009
【図９】
0004550728.tif 000010
【図１０】
0004550728.tif 000011
【図１１】
0004550728.tif 000012
【図１２】
0004550728.tif 000013
【図１３】
0004550728.tif 000014
【図１４】
0004550728.tif 000015
【図１５】
0004550728.tif 000016
【図１６】
0004550728.tif 000017
【図１７】
0004550728.tif 000018
【図１８】
0004550728.tif 000019