(57)【特許請求の範囲】
【請求項１】
ＭＰＬＳパケット転送方法において、設定に基づいて宛先毎に決められた最大ラベル階層数のラベルスタックエントリーを、パケット転送網への入り口エッジノードで付加し、複数階層のラベルスタックエントリーの先頭ラベル位置を、ポインタビットを使用して指示し、また、このポインタビット値を増減させることでスタックの追加／削除と等価な処理を行うことを特徴とするＭＰＬＳパケット転送方法。
【請求項２】
入力パケットを一時格納する入力バッファと、
前記入力パケットのヘッダ部から宛先アドレスを取り出すアドレス取得部と、
宛先アドレスと出力先ポート、付加するラベルスタックエントリーの階数層、付加する新ラベルを含む出力情報の対応が記述されている検索テーブルと、
前記アドレス取得部で取得された宛先アドレスを用いて前記検索テーブルを検索し、前記出力情報を得る検索回路と、
前記検索で得られた出力情報で指示されるラベルスタックエントリーをパケットの先頭に付加するラベル挿入回路と、
所望の出力先ポートへ出力情報を振り分けるためのスイッチ部を有する、ＭＰＬＳ転送方式におけるパケット交換機。
【請求項３】
入力パケットを一時格納する入力バッファと、
入力パケットのラベルスタックエントリーを取り出すラベルスタック取得部と、
取り出したラベルスタックエントリーを使用して処理判定を行う第１のスタック処理回路と、
出力先ポート、ラベルに対する処理、新ラベルが記述されている検索テーブルと、
入力ラベルを用いて前記検索テーブルを検索する検索回路と、
前記検索結果を用いてスタック操作を行う第２のスタック処理回路と、
所望の出力先ポートへ出力情報を振り分けるためのスイッチ部を有する、ＭＬＰＳ転送方式におけるパケット交換機。
【請求項４】
前記第１のスタック処理回路は、入力されたパケットの先頭ラベルスタックエントリー中のポインタビット値を参照し、Sビットよりラベルの階層数を取得し、前記ポインタビット値が指し示す位置のラベルを取り出し、該ラベルをキーとして前記検索回路により前記検索テーブルを検索し、処理内容を判定し、
前記第２のスタック処理回路は、処理内容がＮ階層のラベルスタックエントリー追加、すなわちN階層のプッシュ処理の場合、前記ポインタ値がNよりも大きければ新たなラベルスタックエントリーを追加し、ポインタ値をNだけ減少させ、新規スタック位置を参照し、該新規スタック位置に新ラベルを付加し、出力パケットを形成し、処理内容がＮ階層のラベルスタックエントリー削除、すなわちN階層のポップ処理の場合、前記ポインタ値をNだけ増加させ、参照すべきスタック位置を変更し、前記スタック値が全階層数Mより大きいとき、ペイロードに付加されているラベルスタックエントリーを全て削除し、出力パケットを形成し、処理内容がラベル交換の場合には、前記ポインタビット値により指示される位置のラベルを新規ラベルに交換し、出力パケットを形成する、請求項３記載のパケット交換機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はパケット転送方法および装置に関する。
【０００２】
【従来の技術】
近年注目されているＩＰトラヒックの転送方式としてＭＰＬＳ（マルチプロトコルラベルスイッチング）転送方式がＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｒｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）にて標準化検討されている。ＭＰＬＳではラベルスイッチングルータ間の転送方路決定をラベルと呼ぶ固定長の数値を参照することにより行う。
【０００３】
ＭＰＬＳの特徴の一つとしてラベルの階層化が挙げられる。すなわち、ラベルを階層化し、それぞれを個別に管理することにより、あるラベル付きパケットを網内でトンネリングすることができる。つまり、これまで付いていたラベル値を保持したまま、新規ラベルでカプセル化し、この先頭のラベル値を参照することで網内を転送する。このようにすることにより、網内での経路設定を階層毎に独立に設定することが可能になる。
【０００４】
このようにラベルを階層化することによる利点は大きいものの、ラベルを付加するためのカプセル化やカプセル分離する際にはパケットのヘッダに対してラベルの挿入、削除という処理が必要である。この処理のためには、待ち合わせのためのバッファが必要であり、また、挿入、削除、等の処理が入力ラベル毎に異なり、このためハードウェアでスイッチングするルータでの処理には不向きである面を持ち合わせている。
【０００５】
ＭＰＬＳ標準では入力されたラベルの先頭ラベルを参照して出力処理を決定する。出力処理にはラベル付け替え、ラベルスタックの削除（ポップ）、ラベルスタックの追加（プッシュ）がある。ラベル付け替えは入力ラベルから検索した結果の出力ラベルを入力ラベルに置き換える処理である。ラベルスタックの削除は、先頭ラベルを削除する処理であるが、その結果、得られる先頭ラベル、あるいはカプセル化されていたＩＰパケットのＩＰアドレスを使用して再度検索する必要がある。つまり、これらの検索をして最終的な出力が決定されるまで、パケットはバッファに格納しておかなければならない。また、ラベルスタックの追加は、これまでのラベル位置の先頭にさらにラベルエントリーを付加する処理である。この場合も新規ラベルを挿入する時間だけ、パケットの送信を待ち合わせる必要があり、バッファにおいて待ち合わせ処理が発生する。
【０００６】
このように、それぞれの処理は簡単であるが、ハードウェアルータ（パケット交換機）で処理を実現する場合には処理が複雑になり、また、特にラベルスタックのポップ動作において処理時間がかかる、という問題があった。
【０００７】
本発明の目的は、ハードウェア転送時における処理負荷を軽減することができるＭＰＬＳパケット転送方法およびパケット交換機を提供することにある。
【０００８】
【課題を解決するための手段】
本発明のＭＰＬＳパケット転送方法は、設定に基づいて宛先毎に決められた最大ラベル階層数のラベルスタックエントリーを、パケット転送網への入り口エッジノードで付加し、複数階層のラベルスタックエントリーの先頭ラベル位置を、ポインタビットを使用して指示し、また、このポインタビット値を増減させることでラベルスタックエントリーの追加／削除と等価な処理を行う。
【０００９】
複数ラベルをパケット交換網の入り口エッジで付加し、網内での転送はポインタビットの値が指し示すラベルを参照して決定する。ラベルスタックエントリーの削除／追加処理の場合にはポインタビット値を増減させることにより実現する。このように転送ノードのラベルスタックエントリーの削除／追加処理の際にはポインタビット値のみを変化させ、物理的なラベルスタックエントリーの削除や追加挿入を行わない。
【００１０】
本発明では予めネットワーク管理端末からの設定、あるいは交換機間のプロトコルのやり取りによって既知である宛先に対する最大階層数を網への入力ノードに設定し、カプセル化する際に最大数のラベルスタックエントリーを挿入することを特徴とする。
【００１１】
また、この際にどのスタック位置が先頭であるかを示すために、ポインタビットを使用して、参照すべきラベル位置を指定することを特徴としている。中間ノードではこのポインタビットの値を増減することによりラベルの挿入／削除と等価な処理を行う。
【００１２】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。
【００１３】
図１に本発明によるラベル付きパケットの構成を示す。ラベル付きパケットはペイロード（被カプセル化パケット）部分２００と、その先頭に付加される複数階層のラベルスタックエントリーとから構成される。図１はラベルが４階層（２０１〜２０４）である場合を示している。パケットの先頭位置のスタックエントリー中に書かれたＰ（ポインタ）値が３であるとき、有効ラベルの先頭がパケットの先頭から３段目であること、すなわちラベルエントリー２０２（ラベル＃２）であることを示す。また、最後尾ラベルスタックエントリーのＳビットは１であり、このＳビットによりラベルスタックエントリーの最後尾であること（すなわち図１ではエントリー数が４段であること）を示している。
【００１４】
図２にラベルスタックエントリーの定義を示す。図２（１）はＩＥＴＦ（ＩｎｔｅｒｎｅｔＥｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）において検討されているＭＰＬＳ  （Ｍｕｌｔｉ  Ｐｒｏｔｏｃｏｌ  ＬａｂｅｌＳｗｉｃｈｉｎｇ）で定義されているラベルスタックエントリーの図である。３２ビットのエントリーに対して、ラベルが２０ビット、実験用の予備領域（ＥＸＰ）が３ビット、スタックの最後尾を示すＳビットが１ビット、ＴＴＬ（Ｔｉｍｅ  ｔｏ  Ｌｉｎｅ）値を保持するフィールドが８ビットである。これに対して図２（２）が本発明によるラベルスタックエントリーの定義である。図２（１）との相違はＥＸＰ領域をポインタ値Ｐとして定義し使用することである。Ｐは先頭から何階層目がラベルスタックの先頭であるかを示すために使用する。
【００１５】
図３に本発明によるパケット交換機の入力エッジノードの構成を示す。パケット交換機１０は入力パケットを一時格納する入力バッファ１１と、入力パケットのヘッダ部から宛先アドレスを取り出すアドレス取得部１２と、宛先アドレスと出力先ポート、付加するラベルスタッフエントリーの階層数、付加する新ラベルを含む出力情報の対応が記述されている検索テーブル１４と、その宛先アドレスを用いて検索テーブル１４を検索し、出力情報を得る検索回路１３と、検索で得られた出力情報で指示されるラベルスタックエントリーをパケットの先頭に付加するラベル挿入回路１５と、所望の出力先ポートへ出力情報を振り分けるためのスイッチ部１６から構成される。検索テーブル１４には入力パケットの宛先アドレスから出力情報を得るためのエントリーが格納されている。出力情報としては出力先ポート、付加するスタックエントリーの階層数Ｍ、付加する新ラベル（複数のエントリー可能）が記述されている。例えば２段のラベルスタックエントリーを書き加える場合には２種類の新ラベルを使用する。
【００１６】
図４に本発明によるパケット交換機の中間ノードの構成を示す。パケット交換機２０は入力パケットを一時格納する入力バッファ２１と、入力パケットのラベルスタックエントリーを取り出すラベルスタック取得部２２と、取得したラベルスタックエントリーを使用して処理判定を行うスタック処理回路２３Ａと、入力ラベルを用いて検索テーブル２５を検索する検索回路２４と、検索結果に基づいてラベル交換等のスタック操作を行うスタック処理回路２３Ｂと、所望の出力先ポートへ出力を振り分けるためのスイッチ部２６から構成される。検索テーブル２５には入力パケットのラベル値から出力情報を得るためのエントリーが格納されている。出力情報としては出力先ポート、ラベルに対する処理（ラベル交換／ラベルプッシュ／ラベルポップ）、新ラベル等が記述されている。
【００１７】
図６に本発明によるパケット交換網でのパケット転送の概念図を示す。図６に示すパケット交換網はＩＰパケット等の被転送パケットの入力ノードであるパケット交換機１、中間ノードであるパケット交換機２〜５、被転送パケットの出力ノードであるパケット交換機６から構成される。交換機１への入力パケット１００に対して、それぞれの交換機１〜６の出力パケットを１０１〜１０６として図示している。
【００１８】
図３に示すパケット交換機（入力エッジノード）１０の処理を説明する。入力パケットは入力バッファ１１に一時格納され、アドレス取得部１２で転送に必要な情報を取り出す。入力パケットがＩＰパケットの場合は、ＩＰヘッダの宛先ＩＰアドレスを取り出す。このとき転送に使用する情報としてさらに細かな情報（送信元ＩＰアドレス、ＴＣＰ／ＵＤＰのポート番号等）を使用することもできる。ここで取り出した宛先アドレスを使用して検索回路１３にて検索テーブル１４を検索する。検索回路１３では宛先アドレスをキーとして出力に関する情報を取り出す。出力情報は予め装置の管理情報、あるいはラベル割り当てのプロトコル等により決定され、検索テーブル２５に格納されている。ここで重要なのは、ある宛先を持つパケット群に対する最大のスタック階層数Ｍを指定しておくことである。この最大スタック数Ｍに基づいて、入力パケットの先頭部にＭ階層分のラベルスタックエントリーを図１のように挿入する。図１ではＭ＝４の場合を示している。出力パケットに付加するラベルが１種類の場合は、階層Ｍ（最も最後尾のラベル）のエントリーに新規ラベル値を書き込み、階層１（先頭のラベル）のエントリーのＰ値をＭにする。出力パケットに付加するラベルが２種類の場合は、階層Ｍと階層Ｍ−１のエントリーに新規ラベル値をそれぞれ書き込み、階層１のエントリーのＰ値をＭ−１にする。ラベル挿入回路１５にてカプセル化されたパケットはスイッチ部１６を経て所望の出力先ポートへと転送される。
【００１９】
図４に示すパケット交換機（中間ノード）２０の処理を説明する。入力パケットは入力バッファ２１に一時格納され、ラベルスタック取得部２２で転送に必要な情報を取り出す。ここではパケットの先頭に付加されているラベルスタックエントリーを取り出す。取り出したラベルスタックエントリーに対する処理はスタック処理回路２３Ａおよび２３Ｂで行われる。ここでの処理については後述する。スタック処理回路２３Ａ，  ２３Ｂで参照すべきであると判定されたラベルをキーとして検索回路２４、検索テーブル２５において検索処理を行い、出力に関する情報を取り出す。出力に関する情報はラベルに対する処理（付け替え／プッシュ／ポップ）、新規ラベル、出力ポート等がある。スタック処理回路２３Ａ，２３Ｂにてラベル操作されたパケットはスイッチ部２６を経て所望の出力ポートへと転送される。
【００２０】
スタック処理回路２３Ａ，２３Ｂの内部処理（パケット処理）について、図５に示すフローチャートを用いて説明する。パケット交換機に入力されたパケットは、はじめに先頭ラベルスタックエントリー中のＰ値を参照する（ステップ２０１）。また、Ｓビットが１となっているラベルスタックを判定し、ラベルの階層数Ｍを取得する（ステップ２０２）。次いで、Ｐの値が指し示す位置のラベルを取り出し、このラベルを使用して検索を行う（ステップ２０３）。ラベル検索の結果、ラベルスタックエントリーの追加（Ｎ階層のプッシュ）処理、ラベルスタックエントリー削除（Ｎ階層のポップ）処理、ラベル交換処理のいずれかの結果が得られる。
【００２１】
ラベルスタックエントリー追加（階層の尾プッシュ）処理の場合をステップ２０４〜２０８に示す。この場合、ラベル検索の結果として、Ｎ階層のプッシュ動作であること、出力時の新ラベル、出力先のインタフェース等の情報が得られる。まず、Ｐ値がＮよりも大きいことを確認する。本発明のパケット転送方法において最大階層数を宛先毎に予約しておくので、この条件になることは通常あり得ないが、もしもＰ値がＮよりも小さい場合は、新たにラベルスタックエントリーを追加する（ステップ２０８）。ステップ２０５のチェックの後に、Ｐ値をＮだけ減少させ、新規スタック位置を参照する（ステップ２０６）。ここで得られた新規のＰ値が指し示す位置のスタックに新ラベルを付加し（ステップ２０７）、出力パケットを形成する。
【００２２】
スタック削除（Ｎ階層のポップ）処理の場合をステップ２０１〜２１２に示す。この場合、ラベル検索の結果として、Ｎ階層のポップ動作であること、出力先のインタフェース等の情報が得られる。ラベルスタックエントリーを削除するために、Ｐ値をＮだけ増加させ、参照すべきスタック位置を変更する（ステップ２１０）。これによりＰ値が新スタック位置を指し示すようになるが、Ｐが全階層数Ｍよりも大きくなるとき（ステップ２１１）には、ラベルスタックエントリーが不要になるので、ペイロードに付加しているラベルスタックエントリーを全て削除する（ステップ２１２）。
【００２３】
ラベル交換の場合にはＰ値により指し示される位置のラベルを新規ラベルに交換し、出力パケットを形成する（ステップ２１３、２１４）。
【００２４】
図６に示すパケット交換網の概念図を用いて、本発明によるラベル付け替えを網上での転送例を挙げて説明する。パケット交換機１において、入力パケット（例えばＩＰパケット）はその宛先アドレス検索結果によって指定されるカプセル化処理を行う。図６においては入力パケット１００に対して２階層のラベルスタックエントリーを付加し、最後尾位置である階層１に新ラベルを割り当て、Ｐ＝２として階層１が先頭ラベルであることを示す。パケット交換機２においてはＰ値が示すラベル値（Ｐ＝２；階層１）を使用して検索し、宛先がパケット交換機３であること、ラベルの階層を１段追加（１段プッシュ）することを得る。ここでＰ値を１だけ減算し、階層２（先頭位置）に新ラベルを割り当てるとともにＰ＝１とする。パケット交換機３、４では階層２のラベルを参照してラベル検索を行い、それぞれ新ラベル値への付け替え処理を行う。パケット交換機５では同様に階層２のラベル検索を行い、その結果、ラベルの階層を１段削除（１段ポップ）することを得る。そこで、Ｐ値を１だけ増加させ、Ｐ＝２とする。これにより、次段の交換機６において階層１のラベルを参照する。この交換機における処理がラベル階層を１段削除（１段ポップ）である場合には、ラベルによるカプセル化削除を意味するので、２階層のラベルスタック領域を削除し、パケット転送網から出力する（パケット１０６）。
【００２５】
図７を用いて、パケット交換機１（入力エッジノード）において、入力ＩＰパケットに対する出力先によって付加するスタック階層数が異なる場合を説明する。パケット交換機の回線として入力回線１−１と、出力回線１−２、１−３、１−４を考える。入力回線１−１からの入力パケット１００をカプセル化する際に、宛先ＩＰネットワークアドレスが１．２．０．０で、ネットマスクが２５５．０．０の場合、すなわち１．２．０．０／１６で示されるＩＰネットワークアドレスであるなら、出力回線を１−２とし、付加するスタック数Ｍ＝２とする。宛先が１．３．０．０／１６で示されるＩＰネットワークアドレスであるなら、出力回線１−３で付加するスタック数Ｍ＝４、宛先が１．４．０．０／１６で示されるＩＰネットワークアドレスであるなら、出力回線は１−４で付加するスタック数Ｍ＝３である、というように変化させる。このように、予め管理系端末からの設定や、あるいは交換機間の制御プロトコル等に基づいて、宛先に応じた最大階層数Ｍを可変とすることができる。これにより、回線の帯域の浪費を抑えることが可能になる。
【００２６】
本発明によるパケット転送方法では、各パケット交換機においてポインタビットの解釈が必要である。そのため従来のＭＰＬＳ転送ノードとの境界ノード（パケット交換機）においては、未使用のスタックを取り払う処理を行う。すなわちポインタビットＰがＮのとき、先頭からＮ−１までのラベルスタックエントリーは未使用なのでこれらのエントリーフィールドを削除することにより、ＭＰＬＳ標準の転送ノードを使用して転送することが可能である。
【００２７】
また、ＭＰＬＳ転送ノードから、本方式によるパケット転送網へ入力する場合には、先頭のラベルスタックエントリーのＥＸＰビットをＰと読み替え、Ｐ＝１を代入する。このとき、予めＭ値がわかっていれば、空きのラベル階層化エントリーを付加する、すなわち網への入力エッジノード（図３におけるパケット交換機１０）と同様に処理することが可能である。
【００２８】
【発明の効果】
以上説明したように本発明によれば、宛先に応じて予め指定される階層数のラベルをエッジノードに付加し、パケット交換網内での転送時にはエントリーに割り当てら領域は常に一定で、ラベルエントリー領域の追加、削除を行わないため、ハードウェア転送時において処理負荷を軽減することができる。
【図面の簡単な説明】
【図１】本発明によるラベル付きパケットの構成を示す図である。
【図２】ラベルスタックエントリーの構成図である。
【図３】パケット交換機（入力エッジノード）の構成図である。
【図４】パケット交換機（中間ノード）の構成図である。
【図５】スタック処理回路の処理のフローチャートである。
【図６】パケット転送の概念図である。
【図７】階層数Ｍを変更する例を示す図である。
【符号の説明】
２００    ペイロード部分
２０１〜２０４    ラベルスタックエントリー
１１、２１    入力バッファ
１２    アドレス取得部
１３、２４    検索回路
１４、２５    検索テーブル
１５    ラベル挿入回路
１６、２６    スイッチ部
２２    ラベルスタック取得部
２３Ａ、２３Ｂ        スタック処理回路
２０１〜２１４    ステップ
１〜６    パケット交換機
１００〜１０６    パケット
１−１    入力回線
１−２、１−３、１−４    出力回線
１１０、１２０、１３０    カプセル化パケット
【図１】
0003543952.tif 000002
【図２】
0003543952.tif 000003
【図３】
0003543952.tif 000004
【図４】
0003543952.tif 000005
【図５】
0003543952.tif 000006
【図６】
0003543952.tif 000007
【図７】
0003543952.tif 000008