以下、図面を参照しながら発明の実施の形態を説明する。
(1)図1は、ラベルスイッチを導入したネットワークであってルータ装置が次段情報を複数持ち得るようなネットワークの一例を示すものである。
ルータ装置101〜103は、各ルータ間にて、転送するデータグラムフローの情報と下位レイヤの情報について共通の認識を得ることで、IPヘッダ情報を見ることなく、下位レイヤ情報だけに基づいて高速にデータグラム転送を行うことを可能とするパス(以下、カットスルーパスと呼ぶ)を生成する機能を有する装置である。
特定のデータグラムの情報と下位レイヤ情報(以下、ラベルと呼ぶ)について共通の認識を得る手段としては、例えば、FANP(Flow Attribute Notification Protocol)、TDP(Tag Distribution Protocol)、LDP(Label Distribution Protocol)等のプロトコルが用いられる。
ルータ装置104は、ルータ装置102,103やその先のネットワーク120と接続される装置であり、ルータ装置102およびルータ装置103との間でFANP、TDP、LDP等のプロトコルが動作しており、カットスルーパスの設定やカットスルーパスの最終段としての機能を有する。
ルータ装置111〜11Nは、ルータ装置101と接続され、ルータ装置104と同様に、FANP、TDP、LDP等のプロトコルが動作しており、カットスルーパスの設定やカットスルーパスの最終段としての機能を有する。
なお、上記のように各ルータ装置101〜103/104/111〜11Nについて(以下の説明のために便宜的に)区別をしたが、全てのルータ装置がカットスルー転送機能を有するようなものであっても構わない。
図1のネットワークでは、各ルータ間において、IPデータグラムの転送先を決定するルーチングプロトコルが動作しており、動作しているプロトコルとしては、OSPF(Open Shortest Path Fast)等が考えられる。
ネットワーク上でルーチングプロトコルを動作させることにより、ルータ装置101では、ネットワーク120やルータ装置104にデータグラムを転送する場合に、ルータ装置102を経由するルートとルータ装置103を経由するルートのいずれを採用しても同一のコストで到達可能であることを認識することができる。これによって、ルータ装置101では、データグラム転送時にルータ装置102とルータ装置103のどちらに転送しても良いことになる。
このような構成において、ルータ装置111〜11Nから、ネットワーク120またはルータ装置104に対し、FANP、TDP、LDP等のプロトコルを用いた、カットスルーパス131〜13Nを生成する場合について説明する。
この場合、ルータ装置101では、ルータ装置111〜11Nからそれぞれ到着した設定メッセージを、ルータ装置104またはネットワーク120の方向に向かって転送することになるが、ルータ装置101では、データグラムを転送する場合と同様に、カットスルーを延長するためにメッセージを転送する次のルータ装置として、ルータ装置102とルータ装置103のどちらに転送しても良いことになる。
ここで、図2に、図1に例示したようなネットワーク構成内に存在するルータ装置101の一構成例を示す。なお、これと同一の構成をルータ装置102やルータ装置103が持っても良いが、図1のネットワーク構成例ではルータ装置101のみマルチパスを持つため、このルータ装置101を例としている。
IP処理部201は、IPデータグラムの宛先情報に基づいて当該データグラムが自分宛のものである否か調べ、自分宛のデータグラムについては、受信処理を行って、上位のプロトコル(例えば、TCP)に転送し、自分宛でないものについては、次の転送先を決定し、次段のルータ装置に転送するための処理を行う。
なお、ルータ装置101では、ラベルによるスイッチイング機能を有するため、後者の自分宛でないデータグラムに対する転送機能を有する必要性は必ずしもない。ただし、ルータ装置104やルータ装置111〜11Nが図1の構成を取る場合には、これらについては、カットスルーの始点および終点となり得るため、データグラムの転送機能は必要となる。
カットスルー制御部202は、隣接するルータ装置との間でデータグラムフローおよびラベル情報について共通の認識を得る(データグラムフローとラベルの情報をやり取りする)ために使用するプロトコルを実行する部分である。
ルーチングテーブル203は、宛先アドレスから次に送るべきルータ装置を求めるためのテーブルであり、次段情報は複数持つことも可能であるが、経路によってはマルチパスが存在しない場合もあるので、必ずしも複数ではない。
ネットワークインタフェース211〜21Nは、それぞれルータ装置111〜11Nと接続されるもので、物理層としては、FANP、TDP、LDP等が使用可能なものであれば、どのようなものでも良い。例えば、ATM、フレームリレー、イーサネット(登録商標)(登録商標)などが考えられる。
ネットワークインタフェース221は、ルータ装置102に接続され、動作としてはネットワークインタフェース211〜21Nと同様のものである(ここでは、ネットワークインタフェース211〜21Nと同一構成とする)。
ネットワークインタフェース222は、ルータ装置103に接続され、動作としてはネットワークインタフェース211〜21Nと同様のものである(ここでは、ネットワークインタフェース211〜21Nと同一構成とする)。
スイッチ部204は、カットスルー転送が可能な場合には、ネットワークインタフェースからネットワークインタフェースへと直接スイッチング可能となるようなスイッチ装置である。
各ネットワークインタフェースの構成について、ネットワークインタフェース211を例に取って説明する。
物理層処理部231は、ネットワークインタフェースが収容する物理層に応じて異なる処理が行われるが、ATMの場合にはセル同期等の処理、イーサネット(登録商標)の場合にはMAC処理等が、物理層処理にあたる。
ラベル処理部232は、受信したデータグラム(フレーム)のヘッダ情報よりラベルを抽出した後、ラベルテーブル233を検索することで、次のルータ装置へのラベルを決定し、IPヘッダ等を使用したデータグラム転送処理を実行せずに、スイッチ部204を通じてそのまま次のルータに転送するための処理を行うものである。
なお、ATMの場合には、ラベル処理部232およびラベルテーブル233は、ATMスイッチ等で使用するVPI/VCIによるスイッチテーブルがそのまま使用可能であり、ルータ装置101が保有するネットワークインタフェースが全てATMの場合には、ネットワークインタフェース211〜21N,221,222、ラベル処理部232、ラベルテーブル233、スイッチ部204の全ての機能がATMスイッチで実現可能となる。
以下では、ルータ装置101のカットスルーパス設定手順について説明する。
図3に、図1に例示したネットワークにおいてルータ装置111〜11Nから最終宛先をネットワーク120またはルータ装置104とするカットスルーパスの生成を行ったような場合における、ルータ装置101の処理手順の一例を示す。ここでは、マージを行わない場合の例について説明する。
なお、カットスループロトコル生成用のプロトコルによって動作は異なるが、ここでは、カットスルー生成用のメッセージ(以下、設定メッセージと呼ぶ)を契機に次段のルータにメッセージを転送する場合の一例について説明する。
ルータ装置101のネットワークインタフェース211〜21Nより受信したカットスルーパス生成用のメッセージは、ラベル処理部232にてラベルテーブル223検索後、直接他のネットワークインタフェースに転送せずに、IP等のデーグラム処理を行う旨を決定し、IP処理部201に転送する(ステップS301)。
なお、データグラム処理を行うための条件は各プロトコルによって異なるが、基本的にスイッチ部204にてIP処理部201に対し転送する処理を行う点は同様である。
設定メッセージを転送されたIP処理部201では、自身が受信すべきメッセージがどうかの判断を行い、カットスループロトコル用のメッセージの場合には、カットスルー制御部202にデータが送られる(ステップS302)。
一方、IP処理部201にて自身で受信すべきメッセージでないと判断した場合には、IP転送処理を行うことになり、IP処理部201は、ルーチングテーブル203を検索した後、次のルータ装置を決定し、次のルータ装置にデータを転送する(ステップS303)。なお、このとき、ルータ装置101にてIP転送機能を有さないような装置構成の場合には、データグラムは廃棄される。
さて、IP処理部201より設定メッセージを受信したカットスルー制御部202では、受信メッセージ中に含まれるカットスルーパスを生成するための最終宛先を獲得する(ステップS304)。
カットスルー制御部202では、獲得した最終宛先からルーチングテーブル203を検索して、次段のルータ装置を求め(ステップS305)、最終宛先が到達不能の場合には、そのメッセージの転送は停止される(ステップS306)。
なお、メッセージの転送が停止された後の動作は、カットスルー生成プロトコルによって異なり、ルータ装置101から前段のルータ装置111〜11Nに対し、応答(以下、応答メッセージを設定完了メッセージと呼ぶ)を返すものや、そのままプロトコル動作を停止しておくものが存在する。
一方、ステップS305にて最終宛先が存在する場合には、そのルーチングテーブル203のエントリより、次段のルータ装置の情報を獲得する。
図1のネットワーク例では既に述べたように、ルータ装置101において、ルータ装置104およびネットワーク120に対しては、ルータ装置102およびルータ装置103が次段情報として保持されている。
このとき、カットスルー制御部202では、同一最終宛先に対し、既に設定されているカットスルーパスの本数(カットスルー数)を確認する(ステップS307)。
設定済みカットスルー数は、次段情報を求めるための判断に使用し、例えば、図1のネットワーク構成のように、次段情報が2つ存在する場合には、設定済みカットスルー数が0および偶数のときにはルータ装置102を選択し、奇数のときには、ルータ装置103を選択するようなアルゴリズムにより、次段情報が決定される(ステップS308)。
なお、次段情報がn存在する場合には、設定済みカットスルー数をcとすると、例えば、c mod nの値に基づいて、各次段ルータ装置を順番に選択していけばよい。
また、この次段ルータ装置選択アルゴリズムは上記のものに限らず、各次段ルータ装置が同一(もしくはほぼ同一)のパス数に設定される、あるいはパスが各次段ルータ装置に均等に配分される、ようにする方法であれば、どのようなものでも良い。
このようにして次段ルータを決定したカットスルー制御部202では、次段ルータ装置がルータ装置102と決定された場合にはネットワークインタフェース221通じてルータ装置102に、また、ルータ装置103と決定された場合にはネットワークインタフェース222を通じてルータ装置103に、該設定メッセージを送出する(ステップS309)。
この後、カットスルーの終点であるルータ装置104もしくは途中のルータより、設定完了メッセージが到着した時点で(ステップS310)、受信したメッセージ中に含まれるフロー情報とラベル情報とそれに対応する送信フロー情報とラベル情報の関連付けが完了し、入力インタフェース上211〜211N上から出力インタフェース221または出力インタフェース222へのカットスルーパスの設定が可能となり、カットスルー転送への移行が可能となる(ステップS311)。
カットスルー転送への移行は、図2のような構成のルータ装置の場合には、受信インタフェース211〜21N上に存在するラベルスイッチテーブル233上に、出力ラベル情報を設定することで完了となる。
カットスルー転送への移行が完了となったときに、カットスルー制御部202では、設定完了メッセージを前段のルータ装置に転送する。
このように次段ルータを決定する手順において、既に設定されたカットスルーパスの本数を参考に同一(もしくはほぼ同一)の本数となるようにすることで、パスレベルのロードバランスを取ることが可能となる。
次に、図2に示したルータ装置101について、スイッチ部204にて複数の入力ラベルを一つの出力ラベルに送出可能なマージ機能をサポートしている場合について説明する。
図4に、ルータ装置101がマージ機能を有する(マージを行う)場合において、例えばルータ装置111〜11Nが最終宛先をネットワーク120またはルータ装置104とするような、カットスルーパスの生成時における、ルータ装置101の処理手順の一例を示す。
ルータ装置101のネットワークインタフェース211〜21Nより受信したカットスルーパス生成用のメッセージは、ラベル処理部232にてラベルテーブル223検索後、直接他のネットワークインタフェースに転送せずに、IP等のデーグラム処理を行う旨を決定し、IP処理部201に転送する(ステップS401)。
なお、データグラム処理を行うための条件は各プロトコルによって異なるが、基本的にスイッチ部204にてIP処理部201に対し転送する処理を行う点は同様である。
設定メッセージを転送されたIP処理部201では、自身が受信すべきメッセージがどうかの判断を行い、カットスループロトコル用のメッセージの場合には、カットスルー制御部202にデータが送られる(ステップS402)。
一方、IP処理部201にて自身で受信すべきメッセージでないと判断した場合には、IP等のデータグラム転送処理を行うが、このときに、IP処理部201は、ルーチングテーブル203を検索した後、次のルータ装置を決定し、次のルータ装置にデータを転送する(ステップS403)。なお、このとき、ルータ装置101にてデータグラム転送機能を有さない場合には、データを廃棄しても構わない。
さて、IP処理部201より設定メッセージを受信したカットスルー制御部202では、メッセージ中に含まれるカットスルーパスを生成するための最終宛先を獲得する(ステップS404)。
メッセージより獲得した最終宛先からルーチングテーブル203を検索して、次段のルータ装置を求める(ステップS405)。最終宛先が到達不能の場合には、そのメッセージの転送は停止される(ステップS406)。
なお、メッセージの転送が停止された後の動作は、カットスルー生成プロトコルによって異なり、ルータ装置101から前段のルータ装置111〜11Nに対し、応答を返すものや、そのままプロトコル動作を停止しておくものが存在する。
一方、ステップS405にて最終宛先が存在する場合には、そのルーチングテーブル203のエントリより次段のルータ装置の情報を獲得可能であり、図1のルータ装置101の場合には、既に述べたようにルータ装置104およびネットワーク120に対してはルータ装置102およびルータ装置103が次段情報として保持されている。
カットスルー制御部202では、次段ルータ装置を選択することになるが、このときに、同一最終宛先に対し、既に設定されているカットスルーパスの本数を確認する(ステップS407)。
設定済みカットスルー数は、次段情報を求めるための判断に使用し、図3に示した場合と同様に、例えば、設定済みカットスルー数が0および偶数の場合にはルータ装置102を選択し、奇数の場合には、ルータ装置103を選択するようなアルゴリズムにより、次段情報が決定される(ステップS408)。前述と同様に、このアルゴリズムは上記のものに限らず、各次段ルータ装置が同一パス数に設定されるなどの方法であれば、どのようなものでも良い。
次に、設定済みカットスルー数が保持される次段情報よりも少ない場合、すなわち本例では設定済みカットスルー数が0本および1本の場合には、まだカットスルーパスが最大数(本例では2本)生成されていないため、決定された次段ルータに対し、設定メッセージが送出される(ステップS409)。
この後、カットスルーの終点であるルータ装置104もしくは途中のルータからの設定完了のメッセージが到着することで(ステップS410)、受信したメッセージ中に含まれるフロー情報とラベル情報とそれに対応する送信フロー情報とラベル情報の関連付けが完了し、入力インタフェース上211〜211N上から出力インタフェース221または222へのカットスルーパスの設定が可能となり、カットスルー転送への移行が可能となる(ステップS411)。
カットスルー転送への移行は、図2のような構成のルータ装置の場合には、受信インタフェース211〜21N上に存在するラベルスイッチテーブル233上に、出力ラベル情報を設定することで完了となる。
また、設定済みカットスルー数が保持される次段情報の個数以上の場合、すなわち本例では設定済みカットスルー数が2本以上の場合には、既に送出すべきカットスルーパスはそれぞれの次段ルータとの間で設定されており、カットスルー制御部202では、決定された次段ルータ情報に対し、設定されたカットスルーパスにマージして送出するように、受信した設定メッセージの入力インタフェース上211〜211N上のラベルスイッチテーブルに設定することで完了する(ステップS411)。
この後、設定メッセージを送出してきたルータ装置に対し、設定完了メッセージを応答する。
なお、このようにマージを行う場合には、ステップS408の次段情報の決定において、全ての次段情報が1回ずつ選択されるまでは、1つの次段情報が複数回選択されないようにするのが好ましい(上記で示した例では、そのようになっている)。ただし、選択基準を緩やかにして、全ての次段情報が1回ずつ選択されるまでに、1つの次段情報が複数回選択されても構わないようすることも可能である。この場合には、上記で示した手順で、設定済みカットスルーパス数>=保持される次段情報数の条件は、マージ対象となるカットスルーパスが既に設定されている、という条件になり、設定済みカットスルーパス数<保持される次段情報数の条件は、マージ対象となるカットスルーパスが未だ設定されていない、という条件になる(なお、図4の手順においては、この条件も使用できる)。
次に、選択可能な複数の次段情報に対応する各ネットワークインタフェースのリンク速度(ネットワークの帯域)が異なることを考慮する場合について説明する。
例えば、ルータ装置101のネットワークインタフェース221とネットワークインタフェース222のリンク速度が異なる場合が考えられる。従って、リンク速度を考慮して負荷分散すると好ましい。
図5に、このような場合のカットスルーパスの生成時のルータ装置101の処理手順の一例を示す。ここでは、マージしない場合について説明する。
ここでも、ルータ装置111〜11Nから最終宛先をネットワーク120またはルータ装置104とするようなカットスルーパスの生成時を例にとるとともに、ネットワークインタフェース221とネットワークインタフェース222のリンク速度が1対2の場合(ネットワークインタフェース222が高速)を例にとる。
ルータ装置101のネットワークインタフェース211より受信したカットスルーパス生成用のメッセージは、ラベル処理部232においてラベルテーブル223検索した後、自身でIP処理を行う旨を決定し、IP処理部201に転送する(ステップS501)。
設定メッセージを転送されたIP処理部201では、自身が受信すべきメッセージがどうかの判断を行い、カットスループロトコル用のメッセージの場合には、カットスルー制御部202にデータが送られる(ステップS502)。
一方、IP処理部201にて自身で受信すべきメッセージでないと判断した場合には、IP等のデータグラム転送処理を行うが、このときに、IP処理部201は、ルーチングテーブル203を検索した後、次のルータ装置を決定し、次のルータ装置にデータを転送する(ステップS503)。なお、このとき、ルータ装置101にてIP転送機能を有さない場合には、データを廃棄しても構わない。
さて、IP処理部201より設定メッセージを受信したカットスルー制御部202では、メッセージに含まれる情報より、カットスルーパスを生成するための最終宛先を獲得する(ステップS504)。
メッセージより獲得した最終宛先からルーチングテーブル203を検索して、次段のルータ装置を求める(ステップS505)。最終宛先が到達不能の場合には、そのメッセージの転送は停止される(ステップS506)。
なお、メッセージの転送が停止された後の動作は、カットスルー生成プロトコルによって異なり、ルータ装置101から前段のルータ装置111〜11Nに対し、応答を返すものや、そのままプロトコル動作を停止しておくものが存在する。
一方、ステップS505にて最終宛先が存在する場合には、そのルーチングテーブル203のエントリより次段のルータ装置の情報を獲得可能であり、図1のルータ装置101の場合には、既に述べたようにルータ装置104およびネットワーク120に対してはルータ装置102およびルータ装置103が次段情報として保持されている。
カットスルー制御部202では、次段ルータ装置を選択することになるが、このときに、同一最終宛先に対し、既に設定されているカットスルーパスの本数を確認する(ステップS507)。
設定済みカットスルー数は、次段情報を求めるための判断に使用し、例えば、設定済みカットスルー数が3の倍数の場合にはルータ装置102を選択し、それ以外の場合には、ルータ装置103を選択するようなアルゴリズムにより、次段情報が決定される(ステップS508)。
なお、次段情報がn存在し、各次段iに対するリンク速度がr(i)である場合には、設定済みカットスルー数をcとすると、例えば、y=c mod (r(1)+…+r(n))の値に基づいて、各次段ルータ装置をリンク速度に応じた頻度で選択していけばよい(次段iを選択すべきyの値の個数(種類数)を、次段iのリンク速度r(i)に比例させる)。
例えば、次段情報が3つ存在し(次段1,次段2,次段3とする)、次段1に対するリンク速度:次段2に対するリンク速度:次段3に対するリンク速度=1:2:3である場合(リンク速度の比の要素(この場合、1,2,3)の総和=6)、y=c mod リンク速度の比の要素の総和(=6)の値が0ならば次段3を選択し、1、2、3、4、5ならば、それぞれ、次段2、次段1、次段3、次段2、次段3を選択する、というような方法を用いてもよい。
また、選択のアルゴリズムについては上記のものに制限されるものではなく、各次段ルータ装置へのパス数の比率がリンク速度の比率と一致(もしくはほぼ一致)させることができるような方法であれば、どのようなものでも良い。
このようにして次段ルータを決定したカットスルー制御部202では、次段ルータに対し設定メッセージが、次段ルータがルータ装置102の場合にはネットワークインタフェース221を通じ、ルータ装置103の場合にはネットワークインタフェース222を通じて、送出される(ステップS509)。
この後、カットスルーの終点であるルータ装置104もしくは途中のルータからの設定完了のメッセージが到着することで(ステップS510)、受信したメッセージ中に含まれるフロー情報とラベル情報とそれに対応する送信フロー情報とラベル情報の関連付けが完了し、入力インタフェース上211〜211N上から出力インタフェース221または222へのカットスルーパスの設定が可能となり、カットスルー転送への移行が可能となる(ステップS511)。
カットスルー転送への移行は、図2のような構成のルータ装置の場合には、受信インタフェース211〜21N上に存在するラベルスイッチテーブル上に、出力ラベル情報を設定することで完了となる。
このように、基本的にリンク速度が異なる場合には、次段ルータ装置の選択のアルゴリズムを変更するだけで対応可能であることがわかる。
なお、リンク速度の相違を考慮する場合で、かつ、マージされるスイッチを使用する(マージを行う)場合についても、図4の例について行った説明とほとんど同様であり、ただステップS408の選択処理を例えば図5のステップS508のようにリンク速度を考慮したものに変更すればよい。
また、本実施形態では、図3〜図5の処理にて次段情報の決定時、すなわち、ステップS308、ステップS408、ステップS508の処理アルゴリズムを変更することで、マージする場合についても、マージしない場合についても、様々な用途およびロードバランスを実施することが可能である。そのいくつかの応用例を以下に示す。
ルータ装置101では、ルータ装置104またはネットワーク120以外にも、様々なカットスルーパスが生成されることがある。例えば、ルータ装置101では、別の宛先へのカットスルーパスについて、ルータ装置102を次段ルータ装置として既に設定されたカットスルーパスの数とルータ装置103を次段ルータ装置として既に設定されたカットスルーパスの数を考慮し、どちらか一方(例えば、ルータ装置102とする)が多く設定されている場合には、他方のルータ装置(この場合、ルータ装置103)への選択確率が上がるように、重み付けする。これにより、ルータ装置102およびルータ装置103に対するトータルのカットスルーパスのバランスを取ることが可能である。
また、カットスルーパスの生成時にエッジルータ装置にて、QoS情報が含まれているような場合には、既にQoSを含んで設定されているカットスルーパス数によって、指定QoSを満足していることが容易なルータ装置を選択するように、アルゴリズムを変更すればよい。
その他にも、種々のバリエーションが考えられる。
に、図6に、本実施形態におけるIP等のヘッダ情報から次段情報を求めるために使用するルーチングテーブル203の構成例を示す。
宛先アドレス601の欄は、転送時および設定メッセージの宛先アドレス情報から次段情報を求めるためのキーとなる情報である。
次段情報602の欄は、該当する宛先情報について保持する次段情報の数を保持するために使用し、マルチパスの場合には2以上の値が設定されている。
次段情報611〜61Nは、該当する宛先情報へデータグラムを転送するための次段情報のアドレスを保持するもので、次段情報602で設定された値によって、エントリ数が変化する。ただし、このエントリには、実際の次段ルータ装置のアドレス情報が入っている必要はなく、次段ルータ装置情報が格納されている情報の位置を示すような情報でも構わない。
カットスルー設定数603の欄は、該当する宛先情報について、既に設定されているカットスルーパスの設定数を表し、図3〜図5等で示した処理について、複数存在する次段ルータ装置を決定する処理で使用する場合がある。
図7に、本実施形態における受信したデータグラム(フレーム)に付加されるラベル値から送出インタフェースや送出ラベルを求め、IP処理を介さずに転送するために使用するラベルスイッチテーブル233の構成例を示す。
受信ラベル701の欄は、受信フレームのヘッダ情報に含まれるラベルと一致するもので、本テーブルの検索のキーとなるものである。ATMの場合にはVPI/VCIが使用される。
送信インタフェース702は、送出すべきネットワークインタフェースを指定するもので、スイッチ部204にてスイッチするために使用する。
送出ラベル値欄703は、次のルータ装置に送るために付加するラベル、および物理レイヤが異なる場合にはその物理レイヤに関するヘッダ情報を格納するために使用される。
以上のように本実施形態によれば、ロードバランスを実行する場合に、エッジルータの関与なしに、実際にマルチパス情報を持つルータ装置のみにて行うことができる。
また、制御や実装の複雑化を回避し、効果的なロードバランスを実現することができる。
さて、これまでは、カットスルーパスの設定、特に負荷分散のための次段の選択について説明してきたが、以下では、実際に流れるトラヒック量に応じて行うカットスルーパスの再設定について説明する。
図8に、実際に流れるトラヒック量に応じてカットスルーパスの再設定を行う機能を持たせたルータ装置101の構成例を示す。
IP処理部801は、IPデータグラムの宛先情報に基づいて当該データグラムが自分宛のものである否か調べ、自分宛のデータグラムについては、受信処理を行って、上位のプロトコル(例えば、TCP)に転送し、自分宛でないものについては、次の転送先を決定し、次段のルータ装置に転送するための処理を行う。
なお、ルータ装置101では、ラベルによるスイッチイング機能を有するため、後者の自分宛でないデータグラムに対する転送機能を有する必要性は必ずしもない。
カットスルー制御部802は、隣接するルータ装置との間でデータグラムフローおよびラベル情報について共通の認識を得る(データグラムフローとラベルの情報をやり取りする)ために使用するプロトコルを実行する部分である。
ルーチングテーブル803は、宛先アドレスから次に送るべきルータ装置を求めるためのテーブルであり、次段情報は複数持つことも可能であるが、経路によってはマルチパスが存在しない場合もあるので、必ずしも複数ではない。
ネットワークインタフェース811〜81Nは、それぞれルータ装置111〜11Nと接続されるもので、物理層としては、FANP、TDP、LDP等が使用可能なものであれば何でも良く、例えばATM、フレームリレー、イーサネット(登録商標)などが考えられる。
ネットワークインタフェース821は、ルータ装置102に接続され、動作としてはネットワークインタフェース811〜81Nと同様のものである(ここでは、ネットワークインタフェース811〜81Nと同一構成とする)。
ネットワークインタフェース822は、ルータ装置103に接続され、動作としてはネットワークインタフェース811〜81Nと同様のものである(ここでは、ネットワークインタフェース811〜81Nと同一構成とする)。
スイッチ部804は、カットスルー転送が可能な場合には、ネットワークインタフェースからネットワークインタフェースへと直接スイッチング可能となるようなスイッチ装置である。
各ネットワークインタフェースの構成について、ネットワークインタフェース821を例に取って説明する。
物理層処理部831は、ネットワークインタフェースが収容する物理層に応じて異なる処理が行われるが、ATMの場合にはセル同期等の処理、イーサネット(登録商標)の場合にはMAC処理等が、物理層処理にあたる。
物理層カウンタ832は、ネットワークインタフェース821から送出される物理層フレーム数を保持するものである。
ラベル処理部832は、受信したデータグラム(フレーム)のヘッダ情報よりラベルを抽出した後、ラベルテーブル833を検索することで、次のルータ装置へのラベルを決定し、IP処理を実行せずに、ラベルスイッチ部804を通じてそのまま次のルータに転送するための処理を行うものである。
なお、ATMの場合には、ラベル処理部833およびラベルテーブル834は、ATMスイッチ等で使用するVPI/VCIによるスイッチテーブルがそのまま使用可能であり、ルータ装置101が全てATMの場合には、ネットワークインタフェース811〜81N,821,822、ラベル処理部832、ラベルテーブル833、スイッチ部804の全ての機能がATMスイッチで実現可能となる。
実際に流れるトラヒック量に応じたカットスルーパスの再設定手順としては、概略的には、対象となるネットワークインタフェース毎にトラフィック量の計数値を定期的に参照し、所定の基準に従ってカットスルーパスを再設定すべきか否かを判断し、再設定すべきと判断された場合に、所定の方法で選択した1または複数のカットスルーパスの再設定(マージが行われていない場合には設定/解放、マージが行われている場合にはラベルスイッチテーブルの内容変更)を逐次的にもしくは纏めて行う。
図9に、図1に示したネットワークにおいて、例えばルータ装置111〜11Nが最終宛先をネットワーク120またはルータ装置104とするカットスルーを、図3に例示した方法等で生成した後に、実際の送出トラヒックを測定し、カットスルーパスの再設定を行う処理手順の一例を示す。ここでは、ルータ装置101でマージしない場合の例について示す。
この手順は、適当なタイミングで、繰り返し実行するものとする。
ルータ装置101では、ルーチングテーブル803でマルチパスが存在する場合(本例では、ネットワーク120およびルータ装置104)に、その出力インタフェースとして、指定されたものについて、トラヒックを測定する(ステップS901)。この場合、測定されるのはネットワークインタフェース821とネットワークインタフェース822である。
トラヒックの測定は設定したカットスルーパス上のトラヒックでも可能であるが、バランスが取れているかどうかの確認のためには、ネットワークインタフェース821上に存在する物理層カウンタ832を用いた方が効率は良い。ネットワークインタフェース822についても同様である。
ネットワークインタフェース821とネットワークインタフェース822についてそれぞれの物理層カウンタ832により送出カウンタ値を取得したならば、両者の送出カウンタ値を比較あるいは評価して、それら値の関係(例えば、比率)が許容範囲であるかどうかをチェックする(ステップS902)。
ここで、許容範囲とは、ネットワークインタフェース821とネットワークインタフェース822のリンク速度や使用率によって決定されるもので、例えばネットワークインタフェース821のトラフィック量の計数値とネットワークインタフェース822のトラフィック量の計数値との比がそれらのリンク速度の比率に一致もしくは近似していることが好ましい。また、双方ともトラヒックが少ない場合にはバランスがとれていなくても許容範囲としても良い。
上記のチェック後、許容範囲内の場合には、トラヒック的にはバランスが取れているものとして終了して良い(ステップS903)。
一方、ステップS902において許容範囲を超えている場合には、送出量の多いネットワークインタフェース(例えばネットワークインタフェース821側とする)において、マルチパスで設定されたカットスルーパスの中から再設定対象とするカットスルーパスを1つ選択し(ステップS904)、該選択したカットスルーパスを流れるトラヒック量の計数値を調べる(ステップS905)。
次に、チェックしたカットスルーパスのトラヒック量xを送出量の少ないネットワークインタフェース(822)のトラヒック量Mに加算した値(M+x)と、該チェックしたカットスルーパスのトラヒック量xを送出量の多いネットワークインタフェースフェース(821)のトラヒック量Nから減算した値(N−x)とを比較もしくは評価して(ステップS906)、許容範囲、送出量の多いネットワークインタフェース(821)側に偏り過ぎ、送出量の少ないネットワークインタフェース(822)側に偏り過ぎをチェックする。
許容範囲または送出量の多いネットワークインタフェース(821)側に偏っている場合には、トラヒックを測定したカットスルーパスの次段ルータを、送出量の多いネットワークインタフェース(821)に対応するルータ装置(102)から送出量の少ないネットワークインタフェース(822)に対応するルータ装置(103)に切り替えるようにカットスルーパスの再設定を行い(ステップS907)、そして、許容範囲の場合は終了となり(ステップS908)、送出量の多いネットワークインタフェース(821)に偏っている場合には、ステップS904以降の処理を繰り返す(ステップS909)。
再設定方法は、カットスループロトコルによって異なり、カットスルーパスを解放後に設定するものと、設定後に解放処理を行うものがある。
一方、送出量の少ないネットワークインタフェース(822)側に偏っている場合には、測定したカットスルーパスの出力先を変更せずに、別のカットスルーパスを切り替えるために、ステップS904以降の処理を繰り返す(ステップS910)。
このような方法の場合には、バランスが許容範囲に達しない場合も考えられるが、その場合には、現状の状態と再設定後に想定される状態とで、許容範囲に近い方法を取ることも考えられる。
次に、図10に、図1に示したネットワークにおいて、例えばルータ装置111〜11Nが最終宛先をネットワーク120またはルータ装置104とするカットスルーを、図4に例示した方法等で生成した後に、実際の送出トラヒックを測定し、カットスルーパスの再設定を行う処理手順の一例を示す。ここでは、ルータ装置101でマージする場合の例について示す。
この手順は、適当なタイミングで、繰り返し実行するものとする。
ルータ装置101では、ルーチングテーブル803でマルチパスが存在する場合(本例では、ネットワーク120およびルータ装置104)に、その出力インタフェースとして、指定されたものについて、トラヒックを測定する(ステップS1001)。この場合、測定されるのはネットワークインタフェース821とネットワークインタフェース822である。
トラヒックの測定は設定したカットスルーパス上のトラヒックでも可能であるが、バランスが取れているかどうかの確認のためには、ネットワークインタフェース821上に存在する物理層カウンタ832を用いた方が効率は良い。ネットワークインタフェース822についても同様である。
ネットワークインタフェース821とネットワークインタフェース822についてそれぞれの物理層カウンタ832により送出カウンタを取得したならば、両者の送出カウンタを比較あるいは評価して、それら値の関係(例えば、比率)が許容範囲であるかどうかをチェックする(ステップS1002)。
ここで、許容範囲とは、ネットワークインタフェース821とネットワークインタフェース822のリンク速度や使用率によって決定されるもので、例えばネットワークインタフェース821のトラフィック量の計数値とネットワークインタフェース822のトラフィック量の計数値との比がそれらのリンク速度の比率に一致もしくは近似していることが好ましい。また、双方ともトラヒックが少ない場合にはバランスがとれていなくても許容範囲としても良い。
上記のチェック後、許容範囲内の場合には、トラヒック的にはバランスが取れているものとして終了して良い(ステップS1003)。
一方、ステップS1002において許容範囲を超えている場合には、送出量の多いネットワークインタフェース(例えばネットワークインタフェース821側とする)において、マルチパスで設定されたカットスルーパスの中から再設定対象とするカットスルーパスを1つ選択し(ステップS1004)、該選択したカットスルーパスを流れるトラヒック量の計数値を調べる(ステップS1005)。
ここで、注意すべき点は、各カットスルーパスの送出トラヒックは既にマージされた後であるため、マージする前の受信トラヒックを測定する必要がある。
次に、チェックしたカットスルーパスのトラヒック量xを送出量の少ないネットワークインタフェース(822)のトラヒック量Mに加算した値(M+x)と、該チェックしたカットスルーパスのトラヒック量xを送出量の多いネットワークインタフェースフェース(821)のトラヒック量Nから減算した値(N−x)とを比較もしくは評価して(ステップS1006)、許容範囲、ネットワークインタフェース821側に偏り過ぎ、ネットワークインタフェース822側に偏り過ぎをチェックする。
許容範囲または送出量の多いネットワークインタフェースフェース(821)側に偏っている場合には、トラヒックを測定したカットスルーパスのラベルスイッチテーブル823を、送出量の少ないネットワークインタフェース(822)に出力するラベルに書き換える(ステップS1007)。そして、設定後、ステップS1006の処理で許容範囲になっている場合は終了となり(ステップS1008)、送出量の多いネットワークインタフェースフェース(821)に偏っている場合には、ステップS1004以降の処理を繰り返す(ステップS1009)。
ここで、出力先を変更したカットスルーパスについて、プロトコル処理が必要か否かは、使用しているプロトコルに依存する。
一方、送出量の少ないネットワークインタフェース(822)側に偏っている場合には、測定したカットスルーパスの出力先を変更せずに、別のカットスルーパスを切り替えるためにステップS1004以降の処理を繰り返す(ステップS1010)。
このような方法の場合には、バランスが許容範囲に達しない場合も考えられるが、その場合には、現状の状態と再設定後に想定される状態とで、許容範囲に近い方法を取ることも考えられる。
なお、図9の手順のステップS906や図10の手順のステップS1006における比較あるいは評価の基準としては、種々のものが考えられる。
例えば、選択したカットスルーパスを再設定すると、トラヒック量の大小関係が逆転するとき、すなわちN>Mかつ(N−x)<(M+x)となるときには、選択したカットスルーパスを採用しない(再設定しない)とする場合には、(N−x)<(M+x)のとき送出量の少ないネットワークインタフェース(本例では822)側に偏り過ぎとしてステップS906/ステップS1006からステップS904/ステップS1004に戻り、それ以外で許容範囲のときステップS907/ステップS1007から終了し、それ以外のとき依然として送出量の多いネットワークインタフェース(本例では821)側に偏り過ぎとしてステップS906/ステップS1006からステップS904/ステップS1004に戻るようにしてもよい。
また、例えば、上限許容値>=(N−x)/(M+x)>=下限許容値のとき許容範囲、(N−x)/(M+x)>上限許容値のとき送出量の多いネットワークインタフェース(本例では821)側に偏り過ぎ、下限許容値>(N−x)/(M+x)のとき送出量の少ないネットワークインタフェース(本例では822)側に偏り過ぎとしてもよい。
また、図9の手順のステップS904や図10の手順のステップS1004でのカットスルーパスの選択方法としても、種々のものが考えられる。
例えば、ラベルスイッチテーブル834のエントリを1つずつ整列順に選択していってもよい。また、例えば、ラベルスイッチテーブル834のエントリをそのトラフィック量の計数値の多いものから順に選択していってもよい。
また、図9や図10の手順例では、再設定対象とする1つのカットスルーパスの選択/選択したカットスルーパスを再設定するか否かの判断/再設定すると判断された場合の再設定/繰り返し処理を続行するか否かの判断といった一連の処理を繰り返し行うものであったが、最初に再設定対象とするカットスルーパスの選択を行い、後でまとめて再設定を行うようにしてもよい。
また、各ネットワークインタフェースのトラフィック量と、マルチパスで設定された各カットスルーパスのトラフィック量とを考慮して、再設定すべき1または複数のカットスルーパスの最適な解もしくは次善の解を求めるようにしてもよい。この場合に、解が複数ある場合には、再設定すべきカットスルーパスの数が最小ものを選択するようにしてもよい。また、解が複数ある場合に、得られるバランスの程度や再設定すべきカットスルーパスの数などを総合的に勘案して解を選択するようにしてもよい。
次に、図11に、本実施形態における受信したデータグラム(フレーム)に付加されるラベル値から送出インタフェースや送出ラベルを求め、IP処理を介さずに転送するために使用するラベルスイッチテーブル834の構成例を示す。
受信ラベル1101の欄は、受信フレームのヘッダ情報に含まれるラベルと一致するもので、本テーブルの検索のキーとなるものである。ATMの場合にはVPI/VCIが使用される。
送信インタフェース1102は、送出すべきネットワークインタフェースを指定するもので、スイッチ部804にてスイッチするために使用する。
送出ラベル値欄1103は、次のルータ装置に送るために付加するラベルおよび物理レイヤが異なる場合には、その物理レイヤに関するヘッダ情報を格納するために使用される。
受信フレーム数欄1104は、このラベルテーブル情報によって転送されたフレーム数を意味し、図9や図10で示したカットスルーパス単位のトラヒック測定時に参照される。
本実施形態によれば、実際に流れるトラヒック量に応じてカットスルーパスの再設定を行うので、より効果的なロードバランスを実現することができる。
図1〜図7で説明したルータ装置や設定手順に係る発明と、図1,8〜11で説明したルータ装置や再設定手順に係る発明は、組み合わせて実施することも可能であるし、独立して実施することも可能である。
なお、以上の各機能は、ソフトウェアとしても実現可能である。
また、各発明の各実施形態は、コンピュータに所定の手順を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムを記録したコンピュータ読取り可能な記録媒体としても実施することもできる。
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
(2)さて、以下では、図12〜図20を参照しながら、他の発明の実施の形態等について説明する。
本発明は、例えば、一つ以上のVPNを収容するルータ装置(ラベルスイッチルータ装置)、その通信方法などに関するものである。
<実施形態2−1>
図12は、本発明におけるルータ装置を使用して、一つのVPNを収容するようなネットワーク構成の一例について示したものである。
ネットワーク1201は、VPN(Virtual Private Network)を収容するためのネットワークである。
ルータ装置1211〜121Mは、各ルータ間にて、転送するデータグラムフローの情報と下位レイヤの情報について共通の認識を得ることで、パケットヘッダ情報を見ることなく、下位レイヤ情報だけで、高速なデータグラム転送を可能とするラベルスイッチパス(以後、LSPとも呼ぶ)を生成する機能を有する装置であり、ラベルスイッチの中段としての役割を果たすものである。
エッジルータ装置1221〜122Nは、プライベートネットワークを収容することが可能なルータ装置であり、LSPの起点および終点となる機能を有するものである。
ネットワーク1231〜123Nは、それぞれエッジルータ装置1221〜122Nに収容されている。また、ネットワーク1201を介して、一つの仮想ネットワーク(以後、VPNと呼ぶ)1202を形成している。
ここで、VPNにおけるアドレス空間に関して説明しておく。
VPNを構成する各プライベートネットワークでは、そのVPN内でのみ有効なローカルなアドレス空間(以後、プライベートアドレス空間と呼ぶ)が共有して用いられる。一つのプライベートアドレス空間の中では、アドレスの重複が無い。一方、非プライベートネットワークでは、複数のVPN間で有効なアドレス空間(例えば、グローバル空間もしくはプロバイダ空間)が用いられる。
図12の例では、ネットワーク1201がグローバルアドレス空間を用いるものとし、一方、ネットワーク1231〜123Nがプライベートアドレス空間を用いたVPNを構成するものとして、以後の説明を行う。
エッジルータ装置1221〜122Nは、グローバルアドレス空間とプライベートアドレス空間との境界に存在しており、それぞれのアドレス空間につきそれぞれのネットワークインタフェースを備える。
図12の例では、非プライベートネットワーク1201側のネットワークインタフェース(1251〜125N)にはグローバルアドレス空間に属するアドレスが付き、一方、プライベートネットワーク側のネットワークインタフェース(1261〜126N)にはプライベートアドレス空間に属するアドレスが付く。以後、このプライベートアドレス空間には“1202”という識別子が与えられることとする。
ラベルスイッチパス1242〜124Lは、VPN1202を構成するために、エッジルータ装置1221〜122Nによって設定されたものである。
LSPを流れるデータグラムは途中のルータ装置(例えば1211〜121M)ではIP処理されない。したがって、そのパケットヘッダにプライベートアドレスがついていても、LSPで接続されるエッジルータ装置には直接届けられる。これを利用して、各プライベートネットワーク同士が、非プライベートネットワーク上のLSPを介して、プライベートパケットをやりとりすることが可能になる。
例えば、図12のVPNでは、LSP1241〜124Lの内部にはプライベートアドレス空間1202に属するパケットを流すようにする。これは、当該LSPの起点であるエッジルータ装置1221〜122Nによって制御される。
図13に、図12に示したエッジルータ装置について、エッジルータ1221を例にとり、その一構成例を示す。
図13のグローバル処理モジュール1301は、非プライベートネットワークに接続するためのものである。
IP処理部1302は、ネットワーク層の処理を行うが、ここではグローバルアドレス空間に属するパケットを処理する。
ルーチングテーブル1303は、グローバルアドレス空間に属する宛先アドレスや次段情報を管理する。
LSP制御部1304は、非プライベートネットワークを経由するラベルスイッチパスを設定するためのプロトコル(以後、LSP設定プロトコルと呼ぶ)を実行する。
ネットワークインタフェース1305は、非プライベートネットワークに接続するためのインタフェースであり、グローバルアドレス空間に属するアドレスがつき、前記LSP設定プロトコルの通信インタフェースとしても機能する。
本ネットワークインタフェース1305の下位レイヤとしては、LSPが設定可能なものであれば、どのようなものでも良い。例えばATM、フレームリレー、イーサネット(登録商標)などが考えられる。スイッチ部1306がこれを提供している。
スイッチ部1306は、データリンクにてプライベート処理モジュール1311と接続されている。
プライベート処理モジュール1311は、プライベートネットワークを収容するためのものである。
IP処理部1312は、IP処理部1302と同様の処理を行うが、ここではプライベートアドレス空間に属するパケットを処理する。
ルーチングテーブル1313は、プライベートアドレス空間に属する宛先アドレスや次段情報を管理する。
ネットワークインタフェース1314は、プライベートネットワークを収容するためのインタフェースの一例であり、プライベートアドレス空間に属するアドレスが付く。
プライベート処理モジュール1311は、一つのネットワークインタフェース1314を備えているが、もし前記プライベート空間と同一空間に属するプライベートネットワークが複数あれば、それらを収容するために、同様なネットワークインタフェースを本モジュール内に相応数備えても構わない。
前記ネットワークインタフェースの下位レイヤとしては、必ずしもLSPが設定可能なものでなくても良い。一般的にネットワーク層の下で利用されている任意の下位レイヤにて実施可能である。
プライベート処理モジュール1311とグローバル処理モジュール1301とを接続するデータリンク上には、あらかじめ複数のパスを用意しておく。パスの実現例としては、該データリンクが例えばATMならば仮想コネクションにて実現できる。
各パスの識別子は、図13の例では1321〜132M、1331〜133Mのようになる。
プライベート処理モジュール1311では、図12のようなLSPを張るためにLSP設定プロトコルを行わなくとも良いため、グローバル処理モジュール1301とは異なり、LSP制御部1304を実装しなくとも良い。
以上のように、各モジュールは、それぞれがネットワーク層の処理を行うが、一つのモジュールが複数のアドレス空間を管理しなくとも良い。
このようなネットワーク層の処理は、例えば、現在一般的なルータに使用されているソフトウェアもしくはハードウェアを組み込んで実装できる。また、そのソフトウェアもしくはハードウェアは、ネットワーク層につき一つのアドレス空間に属する処理のみを行うものでも構わない(充分である)。
図14では、各プライベートネットワークを非プライベートネットワーク上のLSPで相互接続してVPNを構築するためのエッジルータ装置の処理手順を、図12に示したエッジルータ装置1221の場合を例にとって説明する。
はじめに、エッジルータ装置1221は自分自身の初期設定を行う(ステップS1401)。
具体的には、グローバルアドレスと、プライベートアドレスならびにプライベートアドレス空間の識別子(以後、VPN識別子と呼ぶ)とをそれぞれ設定する。VPN識別子は、この例では“1202”とする。
かかる設定の際、図13の装置構成例においては、グローバル側のアドレスはグローバル処理モジュール1301のネットワークインタフェース1305に付加され、プライベート側のアドレスはプライベート処理モジュール1311のネットワークインタフェース1314に付加される。
さらに、これらのアドレスとVPN識別子とがLSP制御部1304に記憶される。
ここで設定に使った(VPN識別子、プライベートアドレス、グローバルアドレス)の三つ組を、VPNメンバーシップ情報と呼ぶことにする。
次に、図12のエッジルータ装置1221は、LSPを設定すべき相手方のシステムの存在、すなわち、自分と同じVPN識別子“1202”を有するプライベートネットワークを収容するエッジルータ装置が自分以外にも非プライベートネットワーク1201上に存在することを認識すべく、前記VPNメンバーシップ情報を追加獲得する(ステップS1402)。
非プライベートネットワーク1201上での他者の存在を認識しなければならないため、前記メンバーシップ情報の収集は、グローバル処理モジュール1301によって実行される。かかる具体的手段としては、その際にはメンバーシップ情報を第三者によって偽られたりしないように認証等の付加的機能を持った手段が適切であるが、例えばSNMP(Simple Network Management Protocol)やLDAP(Lightweight Directory Access Procotol)等の動的な配布プロトコルや、もしくは手設定などが考えられる。
グローバル処理モジュール1301は、収集したVPNメンバーシップ情報をローカルなデータベースとして保持する。
次に、LSP制御部1304は、当該エッジルータ装置へ向けてLSPを形成するために、グローバル側のインタフェース1305からLSP設定要求メッセージを送信する(ステップS1403)。この場合は、送信用LSPの発呼を意味する。
前記LSP設定要求メッセージにおいて、フローの識別情報には、(VPN識別子、LSP起点エッジルータのグローバルアドレス、LSP終点エッジルータのグローバルアドレス)の三つ組の値を含ませるようにする。この三つ組情報を含むようなフロー識別情報を、VPNフロー識別子と呼ぶことにする。
しかる後、前記LSP設定メッセージにて要求したLSPに関するLSP設定完了通知が、図13に示したLSP処理部1304に到着すると(ステップS1404)、グローバル処理モジュール1301は、スイッチ部1306を操作し、設定された前記LSPをプライベート処理モジュール1311まで延長接続する(ステップS1405)。
例えば、エッジルータ1221からエッジルータ122Nへ到達するLSPが設定されたことを確認したときは、ラベル値136Nを持つLSPおよび識別子の値132Mを持つパスの両者を、スイッチ部1306で接続する。
なお、この操作は、エッジルータ装置が内部的に行うことであり、非プライベートネットワーク上のLSP接続状態には影響を与えない。
ここで、前記ラベル値はLSP設定プロトコルにより割り当てられたものである。
また、前記パスの識別子は、先述のあらかじめ用意されていた複数のパスから選択した一つの識別子である。
以上の操作を行った後、グローバル処理モジュール1301は、図13に示したバーチャルインタフェース設定命令を発行し、VPN識別子に当該のプライベート処理モジュール1311内にバーチャルインタフェースを設定する(ステップS1406)。
この場合のバーチャルインタフェース設定命令では、プライベート処理モジュール1311が備えるルーチングテーブルに新たなエントリを追加記入し得る情報を通知する。
ここでは、バーチャルインタフェースの初期状態としてDOWN状態としておく。
なお、グローバル処理モジュールがLSPを延長し、相手方のエッジルータに対応するバーチャルインタフェースをプライベート処理モジュール内に設定するタイミングは、少なくとも自エッジルータの隣接ノードまでラベルスイッチパスが設定された後であっても良いが、これだと非プライベートネットワークの内部でLSPが終端してしまっている場合に、自エッジルータのプライベート処理モジュールから転送されたパケットが行き先不明により失われてしまう可能性がある。上記のように、このタイミングを、相手方のエッジルータまで到達するようにラベルスイッチパスが設定された後とすれば、このようなパケットロスを防ぐことができる。
しかる後、グローバル側のネットワークインタフェース1305にてLSP設定メッセージが到着する(ステップS1407)。
このとき、まず、エッジルータ1221はVPNメンバーシップ情報データベースを照合し、前記設定メッセージを受け付けるかどうかを判断する(ステップS1408)。
受け付けても良い場合としては、前記メッセージにてLSPのラベルに対応付けられているVPNフロー識別子について、VPN識別子と自らが収容しているプライベートネットワークのVPN識別子(この例では“1202”)とが一致し、LSP終点エッジルータのグローバルアドレスが自分自身のグローバルアドレスと一致し(以上は受信用LSPの着呼を意味する)、かつ、該起点エッジルータのプライベートアドレス(これは、この時点で持っているVPNメンバーシップ情報データベースから検索できる)との間でまだ受信用LSPが張られていない、という条件がすべて合致するときが挙げられる。
このような場合は設定完了通知メッセージを送出し(ステップS1409)、そうでない場合は終了する(ステップS1410)。LSP設定プロトコルの仕様にも依存するが、もしNackを返す機構が定義されていれば、単に終了とせずに、Nackを返しても良い。
設定完了通知を送出したならば、図13に示したグローバル処理モジュール1301は、スイッチ部1306を操作し、設定された前記LSPをプライベート処理モジュール1311まで延長接続する(ステップS1411)。
例えば、エッジルータ122Nからエッジルータ1221へ到達するVPN1202に関するLSPの設定を受け付けたときは、ラベル値137Nを持つLSPおよび識別子の値133Mを持つパスの両者を、スイッチ部1306で接続する。
この操作の結果、LSPの実質的な終点はプライベート処理モジュール1311内のバーチャルネットワークインタフェース1341となる。
なお、この操作は、エッジルータ装置が内部的に行うことであり、非プライベートネットワーク上のLSP接続状態には影響を与えない。
また、前記ラベル値はLSP設定プロトコルにより割り当てられたものであり、前記パスの識別子は、先述のあらかじめ用意されていた複数のパスから選択した一つの識別子である。
前記LSPの延長操作を行った後、グローバル処理モジュール1301は、図13に示したバーチャルインタフェース設定命令を発行し、当該のバーチャルインタフェースをUP状態にする(ステップS1412)。
このようにすると、二つのLSPを組にして相手方のシステムと双方向通信ができる状態になったときに、相手方のシステムに対応するバーチャルインタフェースの使用が開始されることになり、プライベート処理モジュールは本発明でのバーチャルネットワークインタフェースを通常のネットワークインタフェースと同様に扱うことが可能になる。
なお、図14には省略したが、VPNメンバーシップ配布プロトコルあるいは手設定によって、自分または相手方のエッジルータが該VPNメンバーシップから脱退するという割り込みイベントが発生した時は、いかなる状態にあっても、ただちにLSPを解放し、バーチャルインタフェースそのものを消去し、初期状態へ戻る。
以上のような状態遷移は、すべて、LSP設定プロトコルを司るグローバル部モジュールもしくはメンバーシップ情報の変化によって駆動される。したがって、図13の装置構成例においては、バーチャルインタフェースに関する制御は、すべてグローバル処理モジュール1301からの命令によって実現可能である。
また、プライベート処理モジュール1311は、それ自身がLSP設定プロトコルを実行する必要がなく、バーチャルインタフェースの制御についてはグローバル処理モジュール1301からの命令を待っているだけで良いので、該プライベート空間のパケット転送や経路制御のためだけに処理能力を集中することができる。
なお、前記バーチャルインターフェース制御命令は、任意の下位レイヤプロトコルの拡張により実施可能である。
このプロトコルは、LSP設定プロトコルの仕様には依存せず、単純に、該LSPに継ぎ足されたパスの下位レイヤ情報と、LSPにて相互接続された相手方のエッジルータのプライベートアドレスとのペアとを情報として含んでいれば良い。
これまでに述べた処理手順がすべて行われると、図12に示したようにエッジルータ同士がLSPで相互接続され、お互いがプライベートアドレス空間1202での通常の通信ができるようになる。
その後は、通常のネットワークと同様の方法で経路制御プロトコルを実行することができ、各プライベートネットワーク1231〜123Nの間で、プライベートアドレス空間1202に属するネットワーク通信ができるようになる。
また、これまで述べた手順により、例えば、エッジルータ1221では、プライベート処理モジュール1311が扱うすべてのインタフェースは、プライベートアドレス空間1201に属することが保証されている。
したがって、プライベート処理モジュール1311は、バーチャルインタフェースも含め、通常のネットワークと同様の手法で、ネットワークインタフェース間のパケット転送を行うことができる。
このようなエッジルータ装置は、非プライベート処理モジュールとプライベート処理モジュールとが分離された個別の装置としても良いが、その場合、非プライベート処理モジュールがエッジルータ装置となり、プライベート処理モジュールがCPE装置となる。
なお、ここでは、双方向ともラベルスイッチパスが設定された場合にバーチャルI/Fをプライベート処理モジュール内に生成する例を示したが、どちらか一方向のラベルスイッチパスしか設定されていない場合でも、そのことをプライベート処理モジュールが認識できるようにしつつバーチャルI/Fを生成するように変形実施することも可能である。
図15は、グローバル処理モジュールによって保持されるVPNメンバーシップ情報のデータベースの一例を示す。
例えば、図12におけるプライベートネットワーク123Nに関するVPNメンバーシップ情報を得たとすると、図15のデータベースに追加されるエントリとしては、VPN識別子の欄1501の値、プライベートアドレスの欄1502の値、グローバルアドレスの欄1503の値は、それぞれ(1202、126N、125N)となる。
図16は、LSP制御部1304によって管理される、VPNフロー識別子に関するテーブルの一形式である。
VPNフロー識別子の欄1601は、そのVPN識別子が自ら収容するプライベートネットワークのVPN識別子と一致するもののみを記入するものとする。
LSPのラベル値の欄1602には、LSP設定プロトコルによって前記VPNフロー識別子に割り当てられたラベル値を記入する。
パスの識別子の欄1603には、非プライベートネットワーク上の該LSPに接続延長されたパスの識別子を記入する。
図17に、バーチャルインタフェースの一構成例を示す。
図17のネットワーク層および下位レイヤの入出力1701〜1704は、たとえば一般的なネットワークオペレーティングシステム実装におけるソフトウェア関数として実装しても良いし、あるいはハードウェアにて実装しても良い。
送信方向のパス1705と受信方向のパス1706とが取りまとめられ、送受信可能な一つのネットワークインタフェース1707を構成している。
このように、バーチャルネットワークインタフェースは、LSP技術に依存しない通常のネットワークインタフェースに用いられる要素だけで構成して良い。
送信方向のパスが送信用のLSPと接続されることにより、LSPの実質的な起点は本バーチャルネットワークインタフェースとなる。
受信方向のパスは、受信用のLSPと接続される。
図18に、プライベート処理モジュールが管理するルーチングテーブルの形式の一例を示す。
バーチャルインタフェース設定命令が発行された際には、宛先の欄1801には相手方エッジルータのプライベートアドレスが、次段情報の欄1802にはあらかじめ用意していた複数のパスから選択された一つのパスの識別子の値が、状態の欄1803には初期状態としてDOWN状態が、インタフェース名の欄1804にはバーチャルインタフェースの名前が、それぞれ記入される。
ただし、インタフェース名1804の値は、必ずしも前記設定命令で具体的に通知しなくとも良い。
例えば、プライベート処理モジュールが、あらかじめローカルに管理するバーチャルインタフェース名と前記パスの識別子とを対応付けておくことで、前記設定命令で通知されたパスの識別子から一意に導けば良い。
<実施形態2−2>
図19は、本発明におけるルータ装置を使用して、複数(N個)のVPNを収容するようなネットワーク構成の一例について示したものである。
ネットワーク1901は、VPN(Virtual Private Network)を収容するためのネットワークである。
ルータ装置1911〜191Mは、実施形態2−1で説明したルータ装置1211〜121Mと同様の機能を有する装置である。
エッジルータ装置1920〜192Nは、実施形態2−1で説明した装置1221〜122Nと同様の機能を有するものである。
なお、エッジルータ装置1920のように、一つのエッジルータが複数(N個)のプライベートネットワーク1931〜193Nを収容することがでいる点で、実施形態2−1の場合とは異なっている。
しかも、プライベートネットワーク1931〜193Nは、互いに異なるVPN1941〜194Nを形成している。VPNが異なれば、そのプライベートアドレス空間も互いに異なる。以後、これらアドレス空間はそれぞれ“1941”,“1942”,…,“194N”という識別子で識別されるものとする。
また、プライベートネットワーク1991〜199Nは、それぞれエッジルータ装置1921〜192Nに収容されているおり、それらのアドレス空間はそれぞれ“1941”,“1942”,…,“194N”という識別子で識別されるものとする。
エッジルータ装置1920〜192Nは、グローバルアドレス空間とプライベートアドレス空間との境界に存在しており、それぞれのアドレス空間につきそれぞれのネットワークインタフェースを備える。
エッジルータ装置1920については、非プライベートネットワーク1901側のネットワークインタフェース1950にはグローバルアドレス空間に属するアドレスが付き、一方、プライベートネットワーク側のインタフェース1951〜195Nにはそれぞれプライベートアドレス空間1941〜194Nに属するアドレスが付く。
ラベルスイッチパス1961〜196Nは、それぞれVPN1941〜194Nを構成するために、エッジルータ装置1920〜192Nによって設定されたものである。
図20に、図19に示したエッジルータ装置について、エッジルータ装置1920を例にとり、その一構成例を示す。
本装置は、実施形態2−1で述べたものと同様の機能を有する(N+1)個のモジュールから構成される。
図20のグローバル処理モジュール2001は、非プライベートネットワークに接続するためのものである。
IP処理部2002は、ネットワーク層の処理を行うが、ここではグローバルアドレス空間に属するパケットを処理する。
ルーチングテーブル2003は、グローバルアドレス空間に属する宛先アドレスや次段情報を管理する。
LSP制御部2004は、非プライベートネットワークを経由するLSP設定プロトコルを実行する。
ネットワークインタフェース2005は、非プライベートネットワークに接続するためのインタフェースであり、グローバルアドレス空間に属するアドレスがつき、前記LSP設定プロトコルの通信インタフェースとしても機能する。
本ネットワークインタフェース2005の下位レイヤとしては、LSPが設定可能なものであれば、どのようなものでも良い。例えば、ATM、フレームリレー、イーサネット(登録商標)などが考えられる。スイッチ部2006がこれを提供している。
スイッチ部2006は、データリンクにてプライベート処理モジュール2011〜201Nと接続されている。
プライベート処理モジュール2011〜201Nは、プライベートネットワークを収容するためのものである。
これらプライベート処理モジュールは、実施形態2−1で述べたものと同様の機能を有するが、ここでは互いに異なるプライベートアドレス空間1941〜194Nに属するネットワーク層の処理を行う。
プライベート処理モジュールとグローバル処理モジュールとを接続するデータリンク上には、あらかじめ複数のパスを用意しておく。パスの実現例としては、前記データリンクが例えばATMならば仮想コネクションにて実現できる。
各パスの識別子は、図20の例では、2021〜202M、2031〜203Mのようになる。
プライベート処理モジュール2011〜201Nでは、図19のようなLSPを張るためにLSP設定プロトコルを行わなくとも良いため、グローバル部2001とは異なり、LSP制御部を実装しなくとも良い。
非プライベートネットワーク上のLSPを利用した複数のVPNを構築するための処理手順は、図14で示した処理手順をそのまま利用することができる。
以下では、エッジルータ装置1920の場合を例にとって説明する。
はじめに、エッジルータ装置1920は、自分自身の初期設定を行う(ステップS1401)。
具体的には、グローバルアドレスと、N個のプライベートアドレスならびにプライベートアドレス空間の識別子(以後、VPN識別子と呼ぶ)とをそれぞれ設定する。VPN識別子は、この例では“1941”,“1942”,…,“194N”とする。
かかる設定の際、図20の装置構成例においては、グローバル側のアドレスはグローバル処理モジュールのネットワークインタフェース2005に付加され、N個のプライベート側のアドレスは各々のプライベート処理モジュールのネットワークインタフェースに付加される。
さらに、これらのアドレスとVPN識別子とがLSP制御部2004に記憶される。
ここで設定に使った(VPN識別子、プライベートアドレス、グローバルアドレス)の三つ組を、VPNメンバーシップ情報と呼ぶことにする。
次に、図19のエッジルータ装置1920は、LSPを設定すべき相手方のシステムの存在、すなわち、自分と同じVPN識別子1941〜194Nのうちのどれかに一致するプライベートネットワークを収容するエッジルータ装置が自分以外にも非プライベートネットワーク1901上に存在することを認識すべく、前記VPNメンバーシップ情報を追加獲得する(ステップS1402)。
非プライベートネットワーク1901上での他者の存在を認識しなければならないため、前記メンバーシップ情報の収集はグローバル処理モジュール2001によって実行される。かかる具体的手段としては、実施形態2−1で述べたものと同様のものが考えられる。
グローバル処理モジュール2001内は、収集したVPNメンバーシップ情報を実施形態2−1の場合と同様なローカルなデータベースとして保持する。
次に、LSP制御部2004は、当該エッジルータ装置へ向けてLSPを形成するために、グローバル側のインタフェース2005からLSP設定要求メッセージを送信する(ステップS1403)。この場合は送信用LSPの発呼を意味する。
前記LSP設定要求メッセージにおいて、フローの識別情報には(VPN識別子、LSP起点エッジルータのグローバルアドレス、LSP終点エッジルータのグローバルアドレス)の三つ組の値を含ませるようにする。この三つ組情報を含むようなフロー識別情報を、VPNフロー識別子と呼ぶことにする。
VPNフロー識別子は、LSP制御部2004により、例えば図16に示すようなテーブルのエントリ形式にて管理される。この管理の方法は、実施形態2−1と同様である。
しかる後、前記LSP設定メッセージにて要求したLSPに関するLSP設定完了通知が、図20に示したLSP処理部2004に到着すると(ステップS1404)、グローバル処理モジュール2001は、スイッチ部2006を操作し、設定された前記LSPをプライベート処理モジュール2011まで延長接続する(ステップS1405)。
例えば、エッジルータ装置1920からエッジルータ装置192Nへ到達するLSPが設定されたことを確認したときは、ラベル値206Nを持つLSPおよび識別子の値202Mを持つパスの両者を、スイッチ部2006で接続する。
なお、この操作は、エッジルータ装置が内部的に行うことであり、非プライベートネットワーク上のLSP接続状態には影響を与えない。
ここで、前記ラベル値はLSP設定プロトコルにより割り当てられたものである。
また、前記パスの識別子は、先述のあらかじめ用意されていた複数のパスから選択した一つの識別子であり、これは図16におけるパスの識別子の欄1603に記入する。
以上の操作を行った後、グローバル処理モジュール2001は、図20に示したバーチャルインタフェース設定命令を発行し、VPN識別子に当該のプライベート処理モジュール2011内にバーチャルインタフェースを設定する(ステップS1406)。
バーチャルインタフェースの実装やバーチャルインタフェース設定命令については、実施形態2−1と同様にして実施できる。
しかる後、グローバル側のネットワークインタフェース2005にてLSP設定メッセージが到着する(ステップS1407)。
このとき、まず、エッジルータ装置1920は、VPNメンバーシップ情報データベースを照合し、前記設定メッセージを受け付けるかどうかを判断する(ステップS1408)。
受け付けても良い場合としては、前記メッセージにてLSPのラベルに対応付けられているVPNフロー識別子について、VPN識別子と自らが収容しているプライベートネットワークのVPN識別子(この例では、“1940”,“1941”,…,“194N”のどれか)とが一致し、LSP終点エッジルータのグローバルアドレスが自分自身のグローバルアドレスと一致し(以上は受信用LSPの着呼を意味する)、かつ、該起点エッジルータのプライベートアドレス(これは、この時点で持っているVPNメンバーシップ情報データベースから検索できる)との間でまだ受信用LSPが張られていない、という条件がすべて合致するときが挙げられる。
このような場合は設定完了通知メッセージとしてAckを送出し(ステップS1409)、そうでない場合は終了する(ステップS1410)。LSP設定プロトコルの仕様にも依存するが、もしNackを返す機構が定義されていれば、単に終了とせずに、Nackを返しても良い。
設定完了通知を送出したならば、図20に示したグローバル処理モジュール2001は、スイッチ部2006を操作し、設定された前記LSPを当該プライベート処理モジュールまで延長接続する(ステップS1411)。
例えば、エッジルータ装置192Nからエッジルータ装置1920へ到達するVPN194Nに関するLSPの設定を受け付けたときは、ラベル値207Nを持つLSPおよび識別子の値203Mを持つパスの両者を、スイッチ部2006で接続する。
この操作の結果、LSPの実質的な終点はプライベート処理モジュール201N内のバーチャルネットワークインタフェースとなる。
なお、この操作は、エッジルータ装置が内部的に行うことであり、非プライベートネットワーク上のLSP接続状態には影響を与えない。
また、前記ラベル値はLSP設定プロトコルにより割り当てられたものであり、前記パスの識別子は、先述のあらかじめ用意されていた複数のパスから選択した一つの識別子である。以上の情報は、図16における一つのエントリとして記入する。
前記LSPの延長操作を行った後、グローバル処理モジュール2001は、図20に示したバーチャルインタフェース設定命令を発行し、当該のバーチャルインタフェースをUP状態にする(ステップS1412)。
このようにすると、二つのLSPを組にして相手方のシステムと双方向通信ができる状態になったときに、相手方のシステムに対応するバーチャルインタフェースの使用が開始されることになり、プライベート処理モジュールは本発明でのバーチャルネットワークインタフェースを通常のネットワークインタフェースと同様に扱うことが可能になる。
なお、図14には省略したが、VPNメンバーシップ配布プロトコルあるいは手設定によって、自分または相手方のエッジルータが該VPNメンバーシップから脱退するという割り込みイベントが発生した時は、いかなる状態にあっても、ただちにLSPを解放し、バーチャルインタフェースそのものを消去し、初期状態へ戻る。
以上のような状態遷移は、すべて、LSP設定プロトコルをつかさどるグローバル部モジュールもしくはメンバーシップ情報の変化によって駆動される。したがって、図20の装置構成例においては、バーチャルインタフェースに関する制御は、すべてグローバル処理モジュールから2001の命令によって実現可能である。
また、プライベート処理モジュール2011〜201Nは、それ自身がLSP設定プロトコルを実行する必要がなく、バーチャルインタフェースの制御についてはグローバル処理モジュールからの命令を待っているだけで良いので、該プライベート空間のパケット転送や経路制御のためだけに処理能力を集中することができる。
なお、前記バーチャルインターフェース制御命令は、任意の下位レイヤプロトコルの拡張により実施可能である。
このプロトコルは、LSP設定プロトコルの仕様には依存せず、単純に、該LSPに継ぎ足されたパスの下位レイヤ情報と、LSPにて相互接続された相手方のエッジルータのプライベートアドレスとのペアとを情報として含んでいれば良い。
これまでに述べた処理手順がすべて行われると、図19に示したようにエッジルータ同士がLSPで相互接続され、お互いが固有のプライベートアドレス空間にて通常の通信ができるようになる。
その後は、通常のネットワークと同様の方法で経路制御プロトコルを実行することができ、プライベートネットワーク1991とプライベートネットワーク1931との間で、あるいは同様にプライベートネットワーク199Nとプライベートネットワーク193Nとの間でも、各々が固有のプライベートアドレス空間にてネットワーク通信ができるようになる。
勿論、一つのプライベートアドレス空間を共有するプライベートネットワークが複数存在する場合でも同様である。
また、これまで述べた手順により、例えばエッジルータ1920では、各プライベート処理モジュールが扱うすべてのインタフェースは、そのモジュール内で単一のプライベートアドレス空間に属することが保証されている。
したがって各プライベート処理モジュールは、バーチャルインタフェースも含め、通常のネットワークと同様の手法で、ネットワークインタフェース間のパケット転送を行うことができる。
このようなエッジルータ装置は、非プライベート処理モジュールとプライベート処理モジュールとが分離された個別の装置としても良いが、その場合、非プライベート処理モジュールがエッジルータ装置となり、プライベート処理モジュールがCPE装置となる。
なお、ここでは、双方向ともラベルスイッチパスが設定された場合にバーチャルI/Fをプライベート処理モジュール内に生成する例を示したが、どちらか一方向のラベルスイッチパスしか設定されていない場合でも、そのことをプライベート処理モジュールが認識できるようにしつつバーチャルI/Fを生成するように変形実施することも可能である。
なお、以上の各機能は、ソフトウェアとしても実現可能である。
また、各発明の各実施形態は、コンピュータに所定の手順を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムを記録したコンピュータ読取り可能な記録媒体としても実施することもできる。
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
(3)さて、以下では、図21〜図24を参照しながら、さらに他の発明の実施の形態等について説明する。
本発明は、例えば、仮想的なプライベートネットワークを構成するためのルータ装置、その通信方法などに関するものである。
図21は、ラベルスイッチネットワーク領域と非ラベルスイッチネットワーク領域との両方を含むネットワークの一例を示しており、かつ、このネットワーク上でVPNが構成されている様子を示している。
一方のネットワーク領域2101は、ラベルスイッチが利用でき、かつVPN専用のラベルスイッチパスを設定することができるような、ネットワーク1901と同様の機能を持つネットワークである。
他方のネットワーク領域2102は、前記ラベルスイッチを利用しないネットワークの一例である。
両者を併せたものが、一つの非プライベートアドレス空間(以後、グローバルアドレス空間と呼ぶ)を共有する、非プライベートネットワークであるものとする。
この非プライベートネットワークを挟んで、ネットワーク2103およびネットワーク2104が、一つのプライベートアドレス空間を共有するVPNを実現するものとする。
ルータ装置2105は、非プライベートアドレス空間のラベルスイッチネットワーク2101とプライベートアドレス空間のネットワーク2103との境界に位置し、各々の側にネットワークインタフェースを備え、ラベルスイッチパス(以下、LSPと呼ぶ)の起点および終点となる機能を有するものである。
ルータ装置2106は、非プライベートアドレス空間のラベルスイッチネットワーク2101と同アドレス空間の非ラベルスイッチネットワーク2102との境界に位置し、各々の側にネットワークインタフェースを備え、LSPの起点および終点となる機能を有し、かつ、パケットのカプセル化およびデカプセル化を行う機能を有するものである(以後、ラベルスイッチ境界ルータ装置と呼ぶ)。
ルータ装置2107は、非プライベートアドレス空間の非ラベルスイッチネットワーク2102とプライベートネットワーク2104との境界に位置し、各々の側にネットワークインタフェースを備え、パケットカプセル化およびデカプセル化を行う機能を有するものである。
LSP2108は、ルータ装置2105とルータ装置2106との間で、図14に示した処理手順と同様の処理手順にて設定された、VPNを構成するためのものである。本LSPには該VPNのプライベートアドレスが付いたパケットが流れる。
カプセル化パケット転送路2109は、同VPNを構成するためのものである。
ここでは、プライベートアドレスが付いたパケットが、非プライベートアドレスのパケットにてカプセル化されることにより、ルータ装置2106とルータ装置2107との間の非プライベートネットワーク上で、VPNのパケットが転送可能となっている。
図22に、本発明によるラベルスイッチ境界ルータ装置について、図21に示した非プライベートネットワーク上のラベルスイッチ境界ルータ装置2106を例にとり、その一構成例を示す。
IP処理部2201は、ネットワーク層の処理を行うが、ここではグローバルアドレス空間に属するパケットを処理する。
ルーチングテーブル2202は、グローバルアドレス空間に属する宛先アドレスや次段情報を管理する。
LSP制御部2203は、非プライベートネットワークを経由するLSPを設定するためのプロトコル(以後、LSP設定プロトコルと呼ぶ)を実行する。
ラベルスイッチネットワークインタフェース2204は、ラベルスイッチネットワーク2101に接続するためのネットワークインタフェースであり、グローバルアドレス空間に属するアドレスがつき、前記LSP設定プロトコルの通信インタフェースとしても機能する。
本ネットワークインタフェース2204の下位レイヤとしては、LSPが設定可能なものであれば、どのようなものでも良い。例えばATM、フレームリレー、イーサネット(登録商標)などが考えられる。
ラベルスイッチネットワークインタフェースは、必要に応じて複数備えても良い。
非ラベルスイッチネットワークインタフェース2205は、非ラベルスイッチネットワーク2102に接続するためのネットワークインタフェースであり、グローバルアドレス空間に属するアドレスがつく。
本ネットワークインタフェース2205の下位レイヤとしては、LSPが設定可能である必要はなく、一般的にネットワーク層の下で利用されている任意の下位レイヤにて実施可能である。
非ラベルスイッチネットワークインタフェースは、必要に応じて複数備えても良い。
カプセル化部2206は、特定のLSPから受信したデータグラムを、非プライベートアドレス空間のパケットヘッダでカプセル化し、非ラベルスイッチネットワークインタフェース2205に転送可能とするためのものである。
デカプセル化部2207は、非ラベルスイッチネットワークインタフェース2205にて受信した特定のデータグラムを、デカプセル化し(この場合、非プライベートアドレスが付いたパケットヘッダを除去し)、それらを特定のLSPに転送するためのものである。
図23では、ラベルスイッチネットワークと非ラベルスイッチネットワークとが混在する非プライベートネットワーク上でVPNを実現するためのラベルスイッチ境界ルータ装置の処理手順を、ラベルスイッチ境界ルータ装置2106の場合を例にとって説明する。
ラベルスイッチ境界ルータ装置2106は、VPNメンバーシップ情報を獲得する(ステップS2301)。かかる獲得の手段は、実施形態2−1と同様のVPNメンバーシップ配布手段で実現できる。これはVPNメンバーシップ情報データベースに保持する。
図21において、例えば、ルータ装置2105に関するVPNメンバーシップ情報を得た場合、ルータ装置2105のVPN識別子とグローバルアドレスとプライベートアドレスとを認識する。また、同様にルータ装置2107に関してもVPNメンバーシップ情報を得る。
そこで、ラベルスイッチ境界ルータ装置2106は、自らも前記VPNメンバーシップに参加宣言する(ステップS2302)。
この例では、自分と同じラベルスイッチネットワークの領域に属するルータ装置2105に関して、前記情報のうち、グローバルアドレスの項を自らのグローバルアドレスにて代入したものを、ルータ装置2107に通知する。通知の手段としては先述したVPNメンバーシップ配布手段を用いることができる。
しかる後、ラベルスイッチ境界ルータ装置2106には、ラベルスイッチネットワーク2102を経由して、LSP設定メッセージが到着する(ステップS2303)。
前記LSP設定メッセージの一例として、たとえばルータ装置2105によって送出されたものを考え、かつ、そのメッセージ中には、LSPのラベルに対応つけるVPNフロー識別子において、当該VPNの識別子ならびにLSP終点エッジルータのグローバルアドレスとしてルータ装置2107のグローバルアドレスが記入されている場合を考える。
このようなとき、ラベルスイッチ境界ルータ装置2106は、VPNメンバーシップ情報データベースを照合し前記設定メッセージを受け付けるかどうかを判断する(ステップS2304)。
VPNに関して前記設定メッセージを受け付けても良い場合の例としては、前記設定メッセージにてLSPのラベルに対応付けられているVPNフロー識別子について、VPN識別子とLSP終点エッジルータのグローバルアドレスとの組がVPNメンバーシップ情報データベースの中でマッチするエントリがあり、かつ、前記設定メッセージ中の起点エッジルータについてもVPNメンバーシップ情報データベースの中でマッチするエントリがある、という条件が合致するときが挙げられる。
設定メッセージを受け付けない場合は、終了する(ステップS2305)。なお、LSP設設定プロトコルの仕様にも依存するが、もしNackを返す機構が定義されていれば、単に終了とせずに、Nackを返しても良い。
前記設定メッセージを受け付けた場合、LSPの設定完了通知を送出する(ステップS2306)。
この例では、LSP2108についてルータ装置2105からルータ装置2106への方向が設定完了したことに相当する。
このLSP上を流れてくるデータグラムは、パケットの宛先アドレスがプライベート空間アドレスとなっていて良い。
ラベルスイッチ境界ルータ装置2106は、前記LSPのラベルに対応付けられているVPNフロー識別子から、このLSP上を流れてくるデータグラムをデータグラムを転送すべきノードはルータ装置2107であるということを判断することができる。
この判断に基づいて、ラベルスイッチ境界ルータ装置2106は、前記LSPから受けとったデータグラムを、非プライベートアドレスのパケットヘッダにてカプセル化し、転送を開始することができる(ステップS2307)。
この例のカプセル化では、宛先アドレスはルータ装置2107のグローバルアドレスに、送信元アドレスはラベルスイッチ境界ルータ装置2106のグローバルアドレスに、それぞれ設定される。
これは、カプセル化パケット転送路2109についてルータ装置2106からルータ装置2107への方向が確立したことに相当する。
ここまでの手順で、図21において、プライベートネットワーク2103からプライベートネットワーク2104への方向に、VPNのデータグラムを到達させることが可能になる。
次に、ラベルスイッチ境界ルータ装置2106は、ルータ装置2105へ向けて、LSP設定メッセージを送出する(ステップS2308)。
この例では、先述したLSP2108の逆方向の設定を要求する。
しかる後、設定完了通知メッセージが到着すると(ステップS2309)、ラベルスイッチ境界ルータ装置2106は、ルータ装置2107から受信したカプセル化パケットをデカプセル化し、先述したルータ装置2105へ到達する当該LSPに転送を開始することができる(ステップS2310)。
例えばルータ装置2107が一つのVPNだけを収容する場合は、ラベルスイッチ境界ルータ装置2106は、カプセル化パケットの送信元アドレスとVPNメンバーシップ情報データベースとを調べることにより、そのパケットがどのVPNに属しているかを一意に定めることができ、かつ、デカプセル化してどのLSPに転送すべきかを一意に定めることができる。
ただし、ルータ装置2107から受信するパケットは必ずしもカプセル化されたパケットではないが、そのときはデカプセル化や前記特定のLSPへの転送は行わない。
また、カプセル化されたパケットであっても、もし、ルータ装置2107が複数の異なるVPNを収容している場合には、前記パケットがどのVPNに属しているかを定められるときに限り当該のLSPに転送するようにする。
カプセル化パケットがどのVPNに属しているかを定める手段としては、例えば、パケットのカプセル時に付加的情報を挿入できる手段として、GREトンネル、IPsec,L2TPなどが適用できる。図21の例では、ルータ装置2107が前記付加的情報としてVPN識別子を挿入すれば良い。
図24では、ラベルスイッチネットワークと非ラベルスイッチネットワークとが混在する非プライベートネットワーク上でVPNを実現するための、非ラベルスイッチネットワーク上のエッジルータ装置の処理手順を、図21のルータ装置2107の場合を例にとって説明する。
カプセル化パケット転送路2109が設定されていない初期的状態において、ルータ装置2107は、先述したVPNメンバーシップ情報の収集手段を用いて、VPNメンバーシップ情報を新たに獲得する(ステップS2401)。
図21の例では、ルータ装置2105およびルータ装置2106に関する情報を認識する。
これらの情報エントリは、VPN識別子およびプライベートアドレスの項の値が同一であり、グローバルアドレスの項の値が異なっている。グローバルアドレスの項の値は、前者がルータ装置2105のグローバルアドレスであり、後者がルータ装置2106のグローバルアドレスとなっている。
そこで、ルータ装置2017は、これらルータについて比較を行い、一方のルータを選択する(ステップS2402)。かかる選択の際はさまざまな基準を用いることが可能であり、例えばルータのグローバルアドレスについてネットワーク的な距離が近い方を選択するという基準が考えられる。
ルータ装置2017は、プライベートネットワーク2104発のVPNのパケットを、非プライベートネットワーク2102を通過させるために、前記の選択したルータのグローバルアドレスにてカプセル化して、転送を開始する(ステップS2403)。
前記のルータ選択の際、ネットワークの距離的により近いルータ2106を選択したのであれば、これは、図21におけるカプセル化パケット転送路2109についてルータ装置2107からルータ装置2106への方向が確立したことに相当する。
ここまでの手順で、図21において、プライベートネットワーク2104からプライベートネットワーク2103への方向に、VPNのデータグラムを到達させることが可能になる。
以上により、プライベートネットワーク2103とプライベートネットワーク2104との間で双方向のVPNが確立する。
なお、以上の各機能は、ソフトウェアとしても実現可能である。
また、各発明の各実施形態は、コンピュータに所定の手順を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムを記録したコンピュータ読取り可能な記録媒体としても実施することもできる。
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
101〜104,111〜11N…ルータ装置、120…ネットワーク、201,801…IP処理部、202,802…カットスルー制御部、203,803…ルーチングテーブル、204,804…スイッチ部、211〜21N,221,222,811〜81N,821,822…ネットワークインタフェース、231,831…物理層処理部、232,833…ラベル処理部、233,834…ラベルテーブル、832…物理カウンタ、1221〜122N,1920〜192N…エッジルータ装置、1211〜121M,1911〜191M…ルータ装置、1201,1901…非プライベートネットワーク、1231〜123N,1931〜193N,1991〜199N…プライベートネットワーク、1251〜125N,1261〜126N,1305,1314,1950〜195N,1971〜197N,1981〜198N,2005…ネットワークインタフェース、1301,2001…グローバル処理モジュール、1302,1312,2002…IP処理部、1303,1313,2003…ルーチングテーブル、1304,2004…LSP制御部、1306,2006…スイッチ部、1311,2011〜201N…プライベート処理モジュール、1341〜134N…バーチャルインタフェース、2101…ラベルスイッチネットワーク、2102…非ラベルスイッチネットワーク、2103,2104…プライベートネットワーク、2105〜2107…ルータ装置、2201…IP処理部、2202…ルーチングテーブル、2203…LSP制御部、2204…ラベルスイッチネットワークインタフェース、2205…非ラベルスイッチネットワークインタフェース、2206…カプセル化部、2207…デカプセル化部