(57)【要約】  【課題】  マルチホーム接続されたユーザネットワークへのパケットトラフィックを、複数のリンクを有効に利用して転送する。  【解決手段】  インターネット内に設けられたディストリビューションルータ（ＤＲ）は、ユーザネットワークを宛先とする（Ｐ（Ｘ）を宛先に含む）パケットを受信すると、冗長パケットを作成し、例えば、受信したパケットをあるプロバイダネットワーク（ＩＳＰ−Ａ）がユーザネットワークに提供する接続（リンクＡ）を通ってユーザネットワークの境界ルータ（ＵＲ）に到達する経路へ、作成した冗長パケットを別のプロバイダネットワーク（ＩＳＰ−Ｂ）がユーザネットワークに提供する接続（リンクＢ）を通ってＵＲに到達する経路へ、転送するため、いずれかの経路でパケットロスが起きても、ユーザネットワークでは、紛失したパケットを別の経路で受信もしくは復元することができる。  【選択図】  図２
2008301517.tif 000002
【特許請求の範囲】
【請求項１】
インターネットを構成するルータにおいて、パケットの転送を制御する方法であって、
インターネットとの接続を複数提供されるユーザネットワークを宛先とするパケットを受信し、
受信した前記パケットの冗長パケットを作成し、
前記ユーザネットワークのアドレスを含む前記パケットに基づいて、前記ユーザネットワークに提供される複数の接続のうちの少なくとも二つを特定し、
受信した前記パケット及び作成した前記冗長パケットのうちの一部を、前記特定した接続のうちの一つに対応するアドレスに従ってパケットが前記ルータから前記ユーザネットワークへ転送される経路へ、転送し、
受信した前記パケット及び作成した前記冗長パケットのうちの他の一部を、前記特定した接続のうちの他の一つに対応するアドレスに従ってパケットが前記ルータから前記ユーザネットワークへ転送される経路へ、転送することを特徴とするパケット転送制御方法。
【請求項２】
受信した前記パケットの宛先アドレスフィールドには前記ユーザネットワークのアドレスが、前記パケットの送信元フィールドには送信元のネットワークのアドレスが、それぞれ書き込まれており、
前記接続に対応するアドレスに従ったパケットの転送は、前記接続を提供するプロバイダが前記接続に対応して割り当てたアドレスを宛先として、前記ルータのアドレスを送信元として、それぞれ用いて前記パケットをカプセル化することにより、行われるものであることを特徴とする請求項１記載のパケット転送制御方法。
【請求項３】
前記ルータを出発点とし前記複数の接続のうちの一つを利用することにより前記ユーザネットワークへ至る経路に沿って、ネットワーク層より下位層の情報であるラベルに基づいてパケットが転送されるラベルスイッチングパスが設定されており、
前記接続に対応するアドレスに従ったパケットの転送は、前記接続に対応するラベルスイッチングパスのラベルを前記パケットに付与することにより、行われるものであることを特徴とする請求項１記載のパケット転送制御方法。
【請求項４】
受信した前記パケットの宛先アドレスフィールドには前記ユーザネットワークのアドレスが、前記パケットの送信元フィールドには送信元のネットワークのアドレスが、それぞれ書き込まれており、
前記接続に対応するアドレスに従ったパケットの転送は、前記接続を提供するプロバイダが前記接続に対応して割り当てたアドレスに基づいて、前記宛先アドレスフィールドを書き換えることにより、行うことを特徴とする請求項１記載のパケット転送制御方法。
【請求項５】
前記冗長パケットの作成は、受信した前記パケットを複製し、重複パケットを作成することにより、行い、
受信した前記パケット及び作成した前記冗長パケットの転送は、受信した前記パケットと作成した前記重複パケットとが異なる経路で転送されるように、行うことを特徴とする請求項１記載のパケット転送制御方法。
【請求項６】
前記ユーザネットワークにおいて複数の接続から重複するパケットを受信した場合に一方を廃棄できるように、受信した前記パケット及び作成した前記重複パケットに同一のパケット識別子を付与することを特徴とする請求項５記載のパケット転送制御方法。
【請求項７】
前記冗長パケットの作成は、受信した前記パケットに含まれるデータを誤り訂正符号化し、誤り訂正パケットを作成することにより、行うことを特徴とする請求項１記載のパケット転送制御方法。
【請求項８】
前記特定は、前記少なくとも二つの接続のうち、一つを本来の経路として、他の少なくとも一つをバックアップの経路として、特定するものであり、
受信した前記パケット及び作成した前記冗長パケットの転送は、受信した前記パケットが前記本来の経路で転送され、作成した前記誤り訂正パケットが前記バックアップの経路で転送されるように、行うことを特徴とする請求項７記載のパケット転送制御方法。
【請求項９】
前記各接続を利用して前記ユーザネットワークに提供される通信環境に基づいて、受信した前記パケット及び作成した前記冗長パケットのうちのどの一部を、前記特定した接続のうちのどの一つに対応するアドレスに従ってパケットが前記ルータから前記ユーザネットワークへ転送される経路へ、転送すべきかを選択することを特徴とする請求項１記載のパケット転送制御方法。
【請求項１０】
前記ルータを出発点とし前記複数の接続のうちのある一つを利用することにより前記ユーザネットワークへ至る経路におけるパケット転送の通信品質と、前記ルータを出発点とし前記複数の接続のうちの他の一つを利用することにより前記ユーザネットワークへ至る経路におけるパケット転送の通信品質とを計測し、
前記選択は、計測した各通信品質を、前記各接続を利用して前記ユーザネットワークに提供される通信環境として用いることにより、行うことを特徴とする請求項９記載のパケット転送制御方法。
【請求項１１】
前記ユーザネットワークが観測した、前記複数の接続のうちのある一つによるインターネットと前記ユーザネットワークとの間のパケットトラフィック及び前記複数の接続のうちの他の一つによるインターネットと前記ユーザネットワークとの間のパケットトラフィックに関する情報を、受信し、
前記選択は、受信した各トラフィックに関する情報を、前記各接続を利用して前記ユーザネットワークに提供される通信環境として用いることにより、行うことを特徴とする請求項９記載のパケット転送制御方法。
【請求項１２】
前記ユーザネットワークに提供される各接続について、その接続を利用して前記ルータから前記ユーザネットワークへの転送が行われる経路が、正常に動作しているか否かを確認し、
前記特定は、前記特定した接続のうちの少なくとも一つが、正常に動作していることを確認した経路であるように、行うことを特徴とする請求項１記載のパケット転送制御方法。
【請求項１３】
前記確認は、前記ルータから前記各接続へ向けて所定間隔毎に確認メッセージを送信することにより、行い、
前記確認メッセージを送信する間隔を、前記各接続を利用して転送が行われる経路の通信品質に基づいて、変更することを特徴とする請求項１２記載のパケット転送制御方法。
【請求項１４】
前記ユーザネットワークのアドレスと各接続を提供するプロバイダが前記各接続に対応して割り当てたアドレスとの対応を表わす情報を記憶し、
前記特定は、記憶した前記情報に基づいて、行うものであり、
記憶した前記情報、もしくは、前記ユーザネットワークのアドレスと前記ルータのアドレスとの対応を表わす情報を、他のルータへ送信することを特徴とする請求項１記載のパケット転送制御方法。
【請求項１５】
前記ユーザネットワークから、前記ユーザネットワークの識別情報と各接続を提供するプロバイダが前記各接続に対応して割り当てたアドレスに関する情報とを受信し、
受信した前記識別情報から前記ユーザネットワークのアドレスを求め、
前記ユーザネットワークのアドレスと各接続を提供するプロバイダが前記各接続に対応して割り当てたアドレスとの対応を表わす情報を記憶し、
前記特定は、記憶した前記情報に基づいて、行うことを特徴とする請求項１記載のパケット転送制御方法。
【請求項１６】
インターネットとの接続を複数提供されるユーザネットワークの、インターネットとの接続点に設けられたユーザルータにおいて、パケットの転送を制御する方法であって、
インターネット内に設けられたルータであって前記ユーザネットワークに提供される複数の接続のうち少なくとも二つの接続を利用して冗長性を有するパケット群を転送する機能を備えるルータに対し、前記ユーザネットワークの識別情報と前記複数の接続のそれぞれに対応して割り当てられたアドレスのうち前記ユーザルータに割り当てられたアドレスに関する情報とを送信し、
前記複数の接続のうち前記ユーザルータに提供される接続に対応するアドレスに従った経路で転送された前記ユーザネットワーク宛のパケットを受信することを特徴とするパケット転送制御方法。
【請求項１７】
送信される前記ユーザネットワークの識別情報は、前記ユーザネットワークのアドレス情報、もしくは、前記機能を備えるルータにより前記ユーザネットワークのアドレスに変換可能な情報であることを特徴とする請求項１６記載のパケット転送制御方法。
【請求項１８】
前記複数の接続のうち前記ユーザルータに提供される接続を介して前記ユーザネットワークに提供される通信環境を観測し、観測により得られた情報を、前記機能を備えるルータへ送信することを特徴とする請求項１６記載のパケット転送制御方法。
【請求項１９】
前記少なくとも二つの接続から前記ユーザネットワーク宛のパケットが重複して受信された場合、複数の同一パケットのうちいずれか一つのパケットを残して他のパケットを廃棄することを特徴とする請求項１６記載のパケット転送制御方法。
【請求項２０】
前記少なくとも二つの接続から前記ユーザネットワーク宛のパケット及び誤り訂正パケットが受信され、受信されるべき前記ユーザネットワーク宛の別のパケットの紛失が検出された場合、前記誤り訂正パケットを用いて紛失したパケットを復元することを特徴とする請求項１６記載のパケット転送制御方法。
【請求項２１】
受信した前記パケットの宛先アドレスフィールドには前記選択された接続に対応するアドレスが書き込まれており、
前記宛先アドレスフィールドを、前記ユーザネットワークのアドレスに基づいて書き換えて、受信した前記パケットを前記ユーザネットワーク内のノードへ転送することを特徴とする請求項１６記載のパケット転送制御方法。
【請求項２２】
前記送信は、前記ユーザネットワークの識別情報及び各接続に対応して割り当てられたアドレスに関する情報を、前記複数の接続のうちの一つを利用して送信するものであり、
前記複数の接続のうちの他の少なくとも一つが切断された場合には、該他の少なくとも一つの接続に対応して割り当てられたアドレスに関する情報の送信を停止することを特徴とする請求項１６記載のパケット転送制御方法。
【請求項２３】
前記ユーザネットワークの識別情報及び前記ユーザルータに割り当てられたアドレスに関する情報の送信は、前記複数の接続のうち前記ユーザルータに割り当てられたアドレスが対応する接続を利用して行うことを特徴とする請求項１６記載のパケット転送制御方法。
【請求項２４】
インターネットを構成するルータとして機能するコンピュータにおいて実行される、パケットの転送を制御するためのプログラムであって、
前記ルータが、インターネットとの接続を複数提供されるユーザネットワークのアドレスを宛先に含むパケットを受信すると、前記パケットに基づいて、前記ユーザネットワークに提供される複数の接続のうちの少なくとも二つを特定し、
前記パケットの冗長パケットを作成し、
前記ルータに、前記特定した接続のうちの一つに対応するアドレスに従ってパケットが前記ユーザネットワークへ転送される経路へ、受信した前記パケット及び作成した前記冗長パケットのうちの一部を転送させるとともに、記特定した接続のうちの他の一つに対応するアドレスに従ってパケットが前記ユーザネットワークへ転送される経路へ、受信した前記パケット及び作成した前記冗長パケットのうちの他の一部を転送させることを特徴とするパケット転送制御プログラム。
【請求項２５】
インターネットとの接続を複数提供されるユーザネットワークの、インターネットとの接続点に設けられたユーザルータとして機能するコンピュータにおいて実行される、パケットの転送を制御するためのプログラムであって、
前記ユーザルータに、インターネット内に設けられたルータであって前記ユーザネットワークに提供される複数の接続のうち少なくとも二つの接続を利用して冗長性を有するパケット群を転送する機能を備えるルータに対し、前記ユーザネットワークの識別情報と前記複数の接続のそれぞれに対応して割り当てられたアドレスのうち前記ユーザルータに割り当てられたアドレスに関する情報とを送信させ、
前記ユーザルータに、前記複数の接続のうち前記ユーザルータに提供される接続に対応するアドレスに従った経路で転送された前記ユーザネットワーク宛のパケットを受信させることを特徴とするパケット転送制御プログラム。
【請求項２６】
インターネットとの接続が複数提供されるユーザネットワークを宛先とするパケットを受信する受信手段と、
前記ユーザネットワークのアドレスに対応して、前記複数の接続のそれぞれに対応するアドレスを記憶する記憶手段と、
前記受信手段により受信されたパケットの冗長パケットを作成する作成手段と、
前記受信手段により受信されたパケットに基づいて、前記記憶手段に記憶された複数のアドレスのうちいずれのアドレスに従った経路で前記パケット及び前記冗長パケットのそれぞれが転送されるべきかを決定する制御手段と、
前記制御手段により決定された前記ユーザネットワークへ至る経路のそれぞれに、前記パケット及び前記冗長パケットのそれぞれを転送する転送手段とを具備したことを特徴とするルータ装置。
【請求項２７】
インターネットとの接続が複数提供されるユーザネットワークに属する自装置に、前記複数の接続のうち少なくとも一つに対応して割り当てられた、少なくとも一つのアドレスを記憶する記憶手段と、
インターネット内に設けられたルータであって前記複数の接続のうち少なくとも二つの接続を利用して冗長性を有するパケット群を転送する機能を備えるルータに対し、前記ユーザネットワークの識別情報と前記自装置に割り当てられたアドレスに関する情報とを送信する送信手段と、
前記複数の接続のうち自装置に提供される接続に対応するアドレスに従った経路で転送された前記ユーザネットワーク宛のパケットを受信する受信手段と、
前記受信手段が受信したパケットから前記冗長性を除いて前記ユーザネットワーク内のノードに転送する転送手段とを具備したことを特徴とするユーザルータ装置。
【請求項２８】
前記冗長性を有するパケット群のうち一部が前記受信手段により受信され、他の一部が前記複数の接続のうち他のユーザルータ装置に提供される接続を利用して転送される場合に、前記他のユーザルータ装置により受信された各パケットについての識別情報を受信する手段を更に備え、
前記転送手段は、受信した前記識別情報を用いて前記冗長性を除くものであることを特徴とする請求項２７記載のユーザルータ装置。
【請求項２９】
インターネットとの接続を複数提供されるユーザネットワークの、インターネットとの接続点に設けられたユーザルータにおいて、パケットの転送を制御する方法であって、
前記ユーザネットワーク内のノードからインターネットへのパケットを受信し、
受信した前記パケットの冗長パケットを作成し、
受信した前記パケット及び作成した前記冗長パケットのうちの一部を、前記複数の接続のうちの一つを通って、インターネット内に設けられたルータであって冗長性を有するパケット群を受信すると該冗長性を除く機能を備えるルータのアドレスへ向けてパケットが転送される経路へ、転送し、
受信した前記パケット及び作成した前記冗長パケットのうちの他の一部を、前記複数の接続のうちの他の一つを通って、前記ルータのアドレスへ向けてパケットが転送される経路へ、転送することを特徴とするパケット転送制御方法。
【請求項３０】
自装置の属するユーザネットワークに複数提供されるインターネットとの接続のうちの少なくとも一つに接続する接続手段と、
前記ユーザネットワーク内のノードからインターネットへのパケットを受信する受信手段と、
前記受信手段により受信したパケットの冗長パケットを作成する作成手段と、
前記パケット及び前記冗長パケットのうちの一部を、前記接続手段が接続する接続を通って、インターネット内に設けられたルータであって冗長性を有するパケット群を受信すると該冗長性を除く機能を備えるルータのアドレスへ向けてパケットが転送される経路へ、転送する転送手段と、
前記パケット及び前記冗長パケットのうちの他の一部は、前記複数の接続のうちの他の一つを通って、前記ルータのアドレスへ向けてパケットが転送される経路へ転送されるように、制御する制御手段とを具備したことを特徴とするユーザルータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロバイダ・ネットワークと接続する（いわゆる「マルチホーム接続」を行う）ユーザネットワークに対して提供するサービスに関し、特に、インターネットとユーザネットワークとの間のパケット転送の信頼性を高める機構に関する。なお、本明細書において、「複数の」プロバイダという場合には、ユーザネットワークに「複数の」リンク（インターネット接続）を提供するものを意味し、単一のインターネット・サービス・プロバイダ（ＩＳＰ）が「複数の」プロバイダとして機能することも可能である。同様に、各プロバイダのネットワークが、物理的に分離したものである必要はなく、単一のネットワークを「複数の」プロバイダネットワークとして機能させることも可能である。
【背景技術】
【０００２】
ユーザネットワーク（例えば企業ネットワークやＳＯＨＯ(Small Office Home Office)ネットワーク）がより確実なインターネット接続性を獲得するために、「マルチホーム接続」と呼ばれる技術が使用されている。これは、ユーザネットワークが、二つ以上のＩＳＰのそれぞれからＩＰ（Internet Protocol）アドレスの割り当てを受けることにより、
一つのＩＳＰとの間のリンクがダウンしても、他のＩＳＰとの間のリンクによりインターネット接続性を確保することができるものである。
【０００３】
このような技術として、図１（ａ）（ｂ）に示す二つの方式が提案されている（例えば、非特許文献１参照）。ユーザネットワークは、ＩＳＰ−ＡからアドレスとしてプレフィックスＡを割り当てられ、ＩＳＰ−ＢからアドレスとしてプレフィックスＢを割り当てられているものとする。プレフィックスとは、ＩＰアドレスの上位所定ビットを指し、これによりネットワークが特定される。ＩＰアドレスの残りのビットは、そのネットワーク内の複数のホストに、各ホストを特定するための情報として割り当てることができる。
【０００４】
ユーザネットワークには、ＩＳＰ−Ａとの間の接続点に設けられたユーザ境界ルータ−Ａと、ＩＳＰ−Ｂとの間の接続点に設けられたユーザ境界ルータ−Ｂとがある。これらのユーザ境界ルータは、ＩＢＧＰ（内部ＢＧＰ：ＢＧＰ(Border Gateway Protocol)は、イ
ンターネットにおいてルーティング情報を交換するためのプロトコルの一つ）により、ルーティング情報を共有している。そして、それぞれのユーザ境界ルータは、インターネットに対し、ルーティングプロトコルＢＧＰを用いて、アドレスの広告（アナウンス）を行う。
【０００５】
図１（ａ）の方式では、通常時には、ユーザ境界ルータ−ＡからＩＳＰ−Ａ経由でプレフィックスＡを広告し、ユーザ境界ルータ−ＢからＩＳＰ−Ｂ経由でプレフィックスＢを広告している。したがって、プレフィックスＡ宛のパケットはＩＳＰ−Ａ経由でユーザネットワークへ転送され、プレフィックスＢ宛のパケットはＩＳＰ−Ｂ経由でユーザネットワークへ転送されることになる。
【０００６】
そして、例えばユーザネットワークとＩＳＰ−Ｂの間の接続が失われたときには、ユーザ境界ルータＡからＩＳＰ−Ａ経由でプレフィックスＡとプレフィックスＢの両方を広告する。すると、プレフィックスＢ宛のパケットもＩＳＰ−Ａを経由することによりユーザネットワークへ転送されるので、インターネット接続性を維持することができる。
【０００７】
図１（ｂ）の方式でも、通常時には、ユーザ境界ルータ−ＡからＩＳＰ−Ａ経由でプレフィックスＡを広告し、ユーザ境界ルータ−ＢからＩＳＰ−Ｂ経由でプレフィックスＢを広告している。そして、ＩＳＰ−Ｂとの間の接続が失われたときには、ユーザ境界ルータ
−ＡからプレフィックスＢを広告するが、その広告は、ＩＳＰ−Ｂの境界ルータに対して、間接的な（ＩＳＰ−Ａの境界ルータを介する）ＢＧＰによって行われる。すると、プレフィックスＢ宛のパケットは、ＩＳＰ−Ｂを経由した後、ＩＳＰ−Ｂの境界ルータからＩＳＰ−Ａをトンネルすることにより、ＩＳＰ−Ａとの間のリンクを通ってユーザネットワークに到達することになる。
【０００８】
このようなマルチホーム接続の技術を、ＩＰｖ４ネットワークだけではなくＩＰｖ６ネットワークに適用しようとする提案も、なされている（例えば、非特許文献２参照）。
【非特許文献１】T. Bates et al., "RFC 2260: Scalable Support for Multi-homed Multi-provider Connectivity," January 1998, Internet Engineering Task Force (IETF) <URL: ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ２２６０．ｔｘｔ？ｎｕｍｂｅｒ＝２２６０>
【非特許文献２】J. Hagino et al., "RFC 3178: IPv6 Multihoming Support at Site Exit Routers," October 2001, IETF <URL: ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ３１７８．ｔｘｔ？ｎｕｍｂｅｒ＝３１７８>
【発明の開示】
【発明が解決しようとする課題】
【０００９】
図１（ａ）の方式では、あるＩＳＰ経由で別のＩＳＰが割り当てたアドレスを広告することを許すことになるため、インターネットにおいて交換されるルーティング情報の量が爆発的に増えてしまう可能性がある。
【００１０】
図１（ｂ）の方式では、ユーザネットワークとＩＳＰ−Ｂの間のリンクがダウンしたときも、プレフィックスＢはインターネットの内部においてはあくまでＩＳＰ−Ｂから広告されることになるので、ルーティング情報の増加という問題は起こらないが、現実問題として、ＩＳＰがこのような方式を採用する可能性は低い。それは、各ＩＳＰのユーザに対する課金が、各ＩＳＰが提供したインターネットとの間のトラフィック量に応じてなされることによる。すなわち、ＩＳＰ−Ｂとの間のリンクがダウンしており、ＩＳＰ−Ａがその代わりのリンクを提供しているにも拘らず、ユーザに課金できるのは、ユーザネットワークとインターネットの間のトラフィックを担っているＩＳＰ−Ｂということになり、ＩＳＰ−Ａにとってはビジネス上デメリットしかないからである。
【００１１】
さらに、マルチホーム接続をするユーザネットワークとしては、上記のように、あるＩＳＰの接続がダウンした場合のバックアップとして別のＩＳＰの接続を利用するだけでなく、両方のＩＳＰの接続が維持されている状態でこれら両方を有効に利用できることが、望ましい。特に、接続がダウンしなくとも、転送される一連のパケット群のうち、一部のパケットが紛失することがあり、このようなパケットロスに対処するために、ＩＳＰとの間の複数のリンクを活用する仕組みが、望まれる。
【００１２】
しかし、上述した従来方式では、複数のＩＳＰのリンクが使用できる通常時においては、プレフィックスＡ宛のパケットがＩＳＰ−Ａ経由でユーザネットワークに到達し、プレフィックスＢ宛のパケットがＩＳＰ−Ｂ経由でユーザネットワークに到達することが可能になっているだけであり、いずれにおいても、パケットロスが起きた場合には、ＴＣＰ等のプロトコルを使って、紛失したパケットを同じ経路で再送するしかなかった。
【００１３】
また、ユーザネットワーク内のノードが、ＩＳＰから割り当てられたアドレスではなく、独自のアドレス（例えばＰＩ(Provider Independent)アドレス）を使用する構成の場合は、両方のＩＳＰ経由で独自アドレスのプレフィックスを広告することになり、インターネットにおいて交換されるルーティング情報の量が爆発的に増えるという問題が残る。
【００１４】
本発明は、以上のような事情を考慮し、まず、インターネット内でのルーティング情報の量の爆発的増加を防ぎつつ、ＩＳＰが現実問題として採用しやすいマルチホーム接続方式を提供することを目的とする。ここで、マルチホーム接続とは、一つのユーザネットワークに対し、複数もしくは単一のＩＳＰから複数のリンク（インターネットとの接続）を提供することをいう。そして、本発明はさらに、ユーザネットワークがマルチホーム接続されていることを生かして、ユーザネットワークとインターネットとの間のパケット転送で、パケットロスが起きても、再送が必要となる確率を低くすることができる機構を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、インターネットを構成するルータとして、次のようにパケット転送を制御する新規なルータを導入する。ここで、コンテンツ配信サーバ等も、本発明に係るルータに該当する。サーバの場合は、ユーザネットワーク宛のパケットを、自装置の外から受信するのではなく、自装置内のアプリケーションから受信することになる。
【００１６】
本発明に係るルータは、インターネットとの接続を複数提供されるユーザネットワークを宛先とするパケットを受信すると、そのユーザネットワークのアドレスを含むパケットに基づいて、ユーザネットワークに提供される複数の接続のうちの少なくとも二つを特定するとともに、受信したパケットの冗長パケットを作成する。そして、特定した接続のうちの一つに対応するアドレスに従って本ルータからユーザネットワークへパケットが転送される（いわば仮想的なトンネルが設定されている）経路へ、受信したパケット及び作成した冗長パケットのうちの一部を転送するとともに、特定した接続のうちの他の一つに対応するアドレスに従って本ルータからユーザネットワークへパケットが転送される（別の仮想的なトンネルが設定されている）経路へ、受信したパケット及び作成した冗長パケットのうちの他の一部を転送する。これらの仮想的なトンネルのためには、例えば後述する３通りのパケット転送方法が利用できる。
【００１７】
本発明によれば、マルチホーム接続を実現するために、インターネットを構成する多数のルータのうちごく一部である、本発明に係るルータとして機能可能なものだけに、ユーザネットワークのアドレスと各接続に対応するアドレスとの対応を知るための情報が送れば済むため、インターネット内でのルーティング情報の量が爆発的に増えることが無くなる。さらに、本発明によれば、特定された接続に対応するアドレスに従って本発明に係るルータからユーザネットワークへパケットが転送される経路が用いられるため、ある接続（リンク）を通してユーザネットワークに到達するパケットは、そのリンクを提供するプロバイダのネットワークを経由して転送されるものであるから、各プロバイダは自身の提供したサービスに見合った課金ができることになる。
【００１８】
さらに、本発明によれば、ユーザネットワークに提供される少なくとも二つの接続を利用して、冗長性を有するパケット群（受信したパケットとそれから作成される冗長パケット）が転送されるため、いずれかの接続を利用する経路でパケットロスが起きても、他の接続を利用する経路で受信されたパケットから紛失したパケットに含まれていたデータを復元できる可能性が高くなり、パケット再送が必要になる可能性を低くすることができる。
【００１９】
上記の本発明に係るルータにおける冗長パケットとして、例えば、受信したパケットを複製することにより作成される、重複パケットを用いることができる。この場合、受信したパケットと、作成した重複パケット（受信したパケットと同一のパケット）とが、異なる経路で（異なる接続を利用して）転送されるようにするとよい。これにより、ユーザネットワークは、一方の経路においてパケットロスがあっても、他方の経路から紛失したパケットと同一のパケットを受信することができるので、再送要求をしなくて済むようにな
る。さらに、本発明に係るルータにおいて、受信したパケット及び作成した重複パケットに同一のパケット識別子を付与してから、転送してもよい。すると、ユーザネットワークが、両方の経路（複数の接続）からパケットロスなく重複するパケットを受信した場合には、各パケットに付与されているパケット識別子を用いて、複数の同一のパケットのうちの一つを残して他を廃棄することができる。
【００２０】
上記の本発明に係るルータにおける冗長パケットとして、例えば、受信したパケットに含まれるデータを誤り訂正符号化して作成される、誤り訂正パケットを用いることができる。この場合、特定された二つの接続を利用する経路に、本来の経路とバックアップの経路が存在するならば、受信したパケットが本来の経路で転送され、作成した誤り訂正パケットがバックアップの経路で転送されるようにしてもよい。あるいは、受信したパケットと作成した誤り訂正パケットとを区別せずに、これらから成るパケット群の一部がある経路に、他の一部が他の経路に、転送されるようにしてもよい。いずれの転送方法でも、ユーザネットワークは、ある経路においてパケットロスが起きて、受信されるべきパケットが受信されなくても、その経路及び他の経路から受信された誤り訂正パケットを含むパケット群を用いて、紛失したパケットを復元することができる。ユーザネットワークが、パケットロスなく受信されるべきパケットを全て受信した場合には、誤り訂正パケットを使用せずに廃棄してもよい。
【００２１】
上記の少なくとも二つの経路の特定（本来の経路とバックアップの経路を区別する場合にはそれも含めた特定）は、受信したパケットに基づいて行われるが、そのために、受信したパケット内の情報である宛先アドレス、ポート番号、送信元アドレス、ポート番号、プロトコルＩＤ等を参照することができる。さらに、ネットワーク層より上位層の情報を参照すれば、より細かな制御が可能となる。
【００２２】
上記の少なくとも二つの経路の特定（本来の経路とバックアップの経路を区別する場合には、本来の経路の選択を含む）を、各接続を利用してユーザネットワークに提供される通信環境に基づいて行うことも可能である。さらに、受信したパケットと作成した誤り訂正パケットとから成るパケット群の一部をある経路に、他の一部を他の経路に、転送する場合、パケット群のどの一部をどの経路に転送するかの選択を、上記の通信環境に基づいて行うこともできる。
【００２３】
上記の通信環境の一例として、各プロバイダネットワークとユーザネットワークとの間のトラフィック量を用いることができる。これは、各リンクのインターネット−ユーザネットワーク間のトラフィック量であるが、入出力トラフィックの双方を合わせた量でも良いし、ユーザネットワークへの入力トラフィックの量を検出するのでも良い。これらのトラフィック量は、ユーザネットワークにおいて観測することができる。これにより、本発明に係るルータは、例えばあるリンクのトラフィック量が多ければ、そのリンクを通る経路を選択していたパケット群のうちの一部について、他のリンクを通る経路を選択するように切り替えることが可能となる。
【００２４】
上記通信環境の他の例として、本発明に係るルータから各接続（リンク）を通ってユーザネットワークに至るそれぞれの経路の遅延、パケット損失率、ジッタ、帯域等の通信品質パラメータを用いることもできる。これらの通信品質パラメータは、各経路に対して計測されるものであり、ユーザネットワークにおいて観測しても良いし、本発明に係るルータがユーザネットワークとの間でメッセージ交換することにより獲得しても良い。これにより、本発明に係るルータは、例えばあるリンクを通る経路の遅延が大きければ、遅延に敏感なデータ（例えば音声通話や映像ストリーミング等）を運ぶパケット群について、他のリンクを通る経路を選択するように切り替えることが可能となる。また、例えば、受信したパケットと作成した誤り訂正パケットとから成るパケット群のうち、帯域の大きな方
の経路に多くのパケットを、帯域の小さな方の経路に残りのパケットを、転送することが可能になる。
【００２５】
ここでは、動的に変化するトラフィック量や通信品質パラメータを、通信環境の例として取り上げたが、静的な値すなわち予め本発明に係るルータに記憶された値を、通信環境として用いることもできる。例えば、あるプロバイダがユーザネットワークに提供するリンクの帯域が、別のプロバイダが提供するリンクの帯域よりも大きいことが予め分かっている場合、本発明に係るルータは、これらの帯域を通信環境として参照し、ユーザネットワーク宛のパケット群を、各経路に対応する帯域に応じて、ある経路には多く、別の経路には少なく振り分けることが可能となる。また、あるプロバイダ経由の経路が別のプロバイダ経由の経路よりも遅延が大きいことが予め分かっている場合も、本発明に係るルータは、これらの帯域を通信環境として参照し、ユーザネットワーク宛のパケット群のうち遅延に敏感なデータを運ぶものについては、遅延の小さい経路を選択することが可能になる。
【００２６】
また、ユーザネットワークに提供される各接続（リンク）について、その接続を利用するパケット転送経路が正常に動作しているか（リンクが切断されたりプロバイダネットワーク内の故障によりリンクまでの到達性が失われたりしていないか）に基づいて、パケット転送経路の特定や選択を行うことも可能である。このためには、例えば、本発明に係るルータが、各接続（リンク）に対応するアドレスに向けて確認メッセージを送信し、これに対する返答メッセージの有無またはその内容により、各リンクを利用する本ルータからユーザネットワークへの経路が、正常に動作しているか否かを確認すれば良い。
【００２７】
上記の確認メッセージを所定間隔毎に送信することにより、現在の各経路の状況を調べることができるが、この送信間隔を、各経路の通信品質に基づいて変更するようにしても良い。例えば、ある経路の帯域が大きいときには、送信間隔を短くして頻繁に確認メッセージを送信し、帯域が小さいときには、送信間隔を長くして送信頻度を抑えれば、確認メッセージのような試験トラフィックのために実トラフィックが使用できる帯域を過度に圧迫してしまうことを、適切に回避することが可能となる。
【００２８】
選択した経路（選択した接続に対応するアドレスに従った経路）でパケットを転送する方法としては、例えば次の３通りがあり得る。なお、この例では、受信したパケットの宛先アドレスフィールドにはユーザネットワークのアドレスが、送信元フィールドには送信元のネットワークのアドレスが、それぞれ書き込まれているものとする。ここで、ユーザネットワークのアドレスとしては、いずれか一つのプロバイダから割り当てられたアドレスを用いても良いし、ＰＩアドレスのようなユーザ独自のアドレスを用いても良い。
【００２９】
一つ目は、ＩＰパケットのカプセル化を利用するものであり、本発明に係るルータは、選択した接続を提供するプロバイダがその接続に対応して割り当てたアドレス（好ましくは、ユーザネットワークの境界ルータ（ユーザルータ）に割り当てたアドレス）を宛先とし、自装置のアドレスを送信元とする新しいパケットで、受信したパケットを包んで転送する。このカプセル化されたパケットを受信したユーザルータでは、カプセルを解いて元のパケットの宛先アドレスを参照し、宛先ホストへパケットを転送する。
【００３０】
二つ目は、ＭＰＬＳ（Multi-Protocol Label Switching）と呼ばれる技術を利用するものであり、本発明に係るルータを出発点とし各接続（リンク）を通ってユーザネットワークへ至る各経路に沿って、ネットワーク層より下位層の情報であるラベルに基づいてパケットが転送されるラベルスイッチングパスが設定されているとする。本発明に係るルータは、選択した経路に対応するラベルスイッチングパスのラベルを、受信したパケットに付与して転送する。このラベルスイッチングパスからパケットを受信したユーザルータでは
、ラベルを取り除き、パケットの宛先アドレスをネットワーク層で参照することにより、宛先ホストへパケットを転送する。なお、ラベルスイッチングパスは、各接続を提供するプロバイダがユーザルータに割り当てたアドレスに従って設定され、ユーザルータは、ラベルスイッチングパスの設定のときに、そのラベルスイッチングパスの出発点となるルータ（本発明に係るルータ）のアドレスを通知されているため、受信したパケットに付与されているラベルを参照すれば、本発明に係るルータのアドレスを獲得できる。
【００３１】
三つ目は、ユーザネットワーク内のホストはユーザルータを介さない限りインターネットと通信できないことに着目し、本発明に係るルータにおいてパケットの宛先アドレスを変換してしまうものである。すなわち、本発明に係るルータが、選択した接続を提供するプロバイダがその接続に対応して（好ましくはその接続が提供されるユーザルータに）割り当てたアドレスに基づいて、パケットの宛先アドレスフィールドを書き換えて転送する。ここで元のパケットに記入されていた情報は失われてしまうが、必ず通過することになるユーザルータにおいて、アドレスの逆変換が行われて情報が復活する。すなわち、ユーザルータは、受信したパケットの宛先アドレスフィールドを、ユーザネットワークのアドレスに基づいて書き換えて、宛先ホストへ転送する。
【００３２】
一つ目と二つ目の方法では、ユーザネットワークの境界ルータにおいて、受信したパケットの経路選択が行われたルータ（本発明に係るルータ）のアドレスを知ることができるというメリットがある。三つ目の方法は、ＩＰパケットのパケットサイズ（ＭＴＵ：Max Transfer Unit）が変化しないというメリットがある。
【００３３】
本発明に係るルータにおいて特定の対象となる各経路の情報として、例えば、ユーザネットワークのアドレスと各接続を提供するプロバイダが各接続に対応して（好ましくは各接続が提供される各ユーザルータに）割り当てたアドレスとの対応を表わす情報（この情報をルータ登録情報と呼ぶ）が、本発明に係るルータに記憶される。
【００３４】
この情報を、インターネットを構成する他のルータであって本発明に係るルータとして機能可能なものに対して送信すると、その送信を受けた他のルータも、本発明に係るルータと同様に、ユーザネットワークに至る少なくとも二つの接続を特定し、冗長性を有するパケット群を転送する動作を行うようになる。
【００３５】
一方、本発明に係るルータが、インターネットを構成する他のルータに対して、ユーザネットワークのアドレスと自装置のアドレスとの対応を表わす情報を送信すると、その送信を受けた他のルータは、ユーザネットワークのアドレスを宛先とするパケットを本発明に係るルータへ転送するようになるので、本発明に係るルータが、その転送されてきたパケットについても、ユーザネットワークに至る少なくとも二つの接続を特定し、冗長性を有するパケット群を転送する動作を行う。
【００３６】
本発明は、インターネットを構成するルータとして、以上のように新規なルータを導入する一方で、ユーザルータとして、次のようにパケット転送を制御する新規なルータを導入する。ユーザルータとは、インターネットとの接続を複数提供されているユーザネットワークの、インターネットとの接続点に設けられたルータである。本発明に係るユーザルータは、複数の接続の全てに対応するように複数のネットワークインタフェースを備える装置として構成しても良いし、複数の接続のうちの一部に対応するネットワークインタフェースを備える装置として構成しても良い。後者の場合、各接続に対応する各ユーザルータ装置が、例えばＩＢＧＰやＯＳＰＦでルーティング情報を共有し、集合体としてインターネットとマルチホーム接続する境界ルータの機能を果たすように構成しても良い。
【００３７】
本発明に係るユーザルータは、自装置が属するユーザネットワークの識別情報と各接続
に対応して割り当てられたアドレスのうち自装置に割り当てられたアドレス（自装置が提供されている接続に対応するアドレス）に関する情報とを送信し、ユーザネットワークを宛先とするパケットを、複数の接続のうち自装置に提供されている接続に対応するアドレスに従った経路で受信する。この受信に用いられる経路は、インターネットを構成する、上述した本発明に係るルータにより特定された少なくとも二つの接続のうちの少なくとも一つであり、受信されるパケットは、上述した本発明に係るルータにより転送された冗長性を有するパケット群のうちの少なくとも一部である。本発明に係るユーザルータが、上記の情報を送信することにより、本発明に係るルータは、特定の対象となる各経路の情報を得ることができる。
【００３８】
上記の本発明に係るユーザルータにおいて、冗長性を有するパケット群が受信された場合に、この冗長性を削除することも可能である。例えば、同一のパケットを複数含むパケット群が受信された場合には、重複するパケットを廃棄する。誤り訂正パケットを含むパケット群が受信された場合には、パケットロスがあれば誤り訂正をして紛失したパケットを復元し、不要な誤り訂正パケットは廃棄する。このような冗長性の削除は、一つのユーザルータに上記の少なくとも二つの接続が提供されている場合には、当該ユーザルータ内で行うことができ、複数のユーザルータにそれぞれ接続が提供されている場合には、例えば、次の三通りの方式が可能である。
【００３９】
一つ目は、複数のユーザルータ間で、受信されたパケットに関して情報交換し、協調して冗長性の削除を行う方式である。例えば、従たるユーザルータは、情報交換により主たるユーザルータで同一のパケットが受信されていることを知ると、自身が受信したパケットを廃棄する。従たるユーザルータが、情報交換により主たるユーザルータでは受信されなかったパケットを自身が受信していることを知ると、そのパケットを主たるユーザルータもしくは宛先ノードへ転送する。別の例では、主たるユーザルータは、情報交換により受信されるべきパケットがいずれのユーザルータでも受信されなかったことを知ると、従たるユーザルータが受信したパケット群を自身へ転送させ、自身が受信したパケット群と合わせて誤り訂正を行い、受信されなかったパケットを復元する。なお、情報交換により不要であることが分かった誤り訂正パケットは、各ユーザルータにて廃棄する。上記のいずれの例においても、主たるユーザルータと従たるユーザルータは、それぞれ専用のユーザルータを設けるのでもよいし、両方の機能を持つユーザルータが、あるパケットフロー（例えば宛先ノードや送信元ノード等により規定される）については主たるユーザルータとして機能し、別のパケットフローについては従たるユーザとして機能するようにしてもよい。
【００４０】
二つ目は、各ユーザルータが受信したパケットを、ユーザネットワーク内の一つの決まったルータに転送するようにし、そのルータが冗長性の削除を行う方式である。この場合は、その決まったルータが、複数の接続を介してユーザネットワークに受信された冗長性を有するパケット群を全て受信することになるので、そのルータ内で、冗長性の削除を行うことができる。この冗長性の削除を行うルータは、ユーザネットワーク内に一つだけ設けてもよいし、例えば宛先ノードのグループ毎に、複数設けてもよい。二つ目の方法でも、一つ目の方法と同様に、宛先ノードには、冗長性が削除された、送信元ノードが送信した通りのパケット群が、受信されることになる。
【００４１】
三つ目は、各ユーザルータが受信したパケットを、そのままユーザネットワーク内の宛先ノードに転送し、宛先ホストにおいて冗長性の削除を行う方式である。この場合、ユーザネットワーク内の各宛先ノード（各ホスト）に冗長性を削除する機能を備えさせることになるが、一つ目の方法におけるユーザルータ間の情報交換や、二つ目の方法のように特定のルータを経由させる仕組みは、不要である。
【００４２】
本発明に係るユーザルータは、自装置に提供されたリンクを介して（自装置が対応するプロバイダネットワークにより）ユーザネットワークに提供される通信環境を観測し、観測により得られた情報を送信することもでき、その場合、本発明に係るルータは、この情報を上記の通信環境として用いて、経路の特定もしくは選択を行うことができる。
【００４３】
別の方法として、本発明に係るユーザルータが、各リンクを介してユーザネットワークに提供される通信環境を観測して得られた情報に基づいて、ユーザネットワークを宛先とするパケット群のうちどの一部をどのリンクに対応するアドレスに従った経路で転送すべきか（具体的な選択基準）を指示する情報を生成し、この指示情報を送信することにしても良い。この場合、本発明に係るルータは、この指示情報に従うことにより、経路の特定もしくは選択を行うことができる。
【００４４】
さらに別の方法として、本発明に係るユーザルータが、ユーザネットワークを宛先とするパケット群のうちどの一部がどのような通信環境をユーザネットワークに提供するリンクを介してユーザネットワークへ転送されるべきか（抽象的なポリシー）を指示する情報を生成し、この指示情報を送信することにしても良い。この場合、本発明に係るルータは、この指示情報と、それとは別に得た各リンクを介してユーザネットワークに提供される通信環境に関する情報とを照合して、複数のリンクのうち少なくとも二つを本来の経路とバックアップの経路を区別しながら特定したり、冗長性を有するパケット群について少なくとも二つの経路を使い分けるために経路を選択したりすることができる。
【００４５】
なお、本発明に係るルータにおいて、上述した３通りのパケット転送方法のうち一つ目もしくは二つ目が採用された場合には、本発明に係るユーザルータにおいて、受信したパケットの経路選択が行われたルータ（本発明に係るルータ）のアドレスを知ることができ、このアドレスにより特定のルータを指定して、ユーザネットワークに提供される通信環境の観測情報や、その通信環境に基づく指示情報等を送信することができる。すなわち、これらの情報を必要とするルータを特定して、通知することができる。
【００４６】
本発明に係るユーザルータが、ユーザネットワークの識別情報と自装置が提供されている接続に対応して割り当てられたアドレスに関する情報と（これらの情報をユーザ登録情報と呼ぶ）を、インターネットへ送信する方法としては、例えば次の２通りがあり得る。なお、本発明に係るルータが、経路の特定を行うために用いるルータ登録情報は、ここで送信されるユーザ登録情報に基づいて得られるものである。
【００４７】
一つは、複数の接続についての上記のユーザ登録情報を、一つの接続を介して送信する方法である。この場合、他の接続がダウンしたときには、ダウンした接続に対応してユーザルータに割り当てられたアドレスに関する情報が、上記のユーザ登録情報に含まれていればこれを削除して、送信されないようにする。これにより、インターネットを構成するルータは、ダウンしている接続を利用する経路を、選択対象として認識しなくなるため、ユーザネットワークのインターネットとの接続性を確保することができる。
【００４８】
もう一つは、複数の接続のそれぞれについての上記のユーザ登録情報を、それぞれ対応する接続を介して送信する方法である。この場合、ある接続がダウンしたときには、その接続についての上記のユーザ登録情報だけが自動的に届かなくなる。したがって、インターネットを構成するルータは、ダウンしている接続を利用する経路を、選択対象として認識しなくなり、ユーザネットワークのインターネットとの接続性を確保することができる。
【００４９】
上記のユーザ登録情報に含まれるユーザネットワークの識別情報として、ユーザネットワークのアドレス情報を用いても良いし、ユーザネットワークのアドレスとは別の識別子
を用いても良い。前者の場合は、本発明に係るルータは、ルータ登録情報を直接的に得ることができるが、インターネット内に誤ったルーティング情報が混入することがないように、ユーザルータから申告されたユーザネットワークのアドレスに誤りがないかを確認することが望ましい。後者の場合は、本発明に係るルータは、ユーザルータから送信された識別子に基づいて、ユーザネットワークのアドレスを求めることにより、ルータ登録情報を得る。
【００５０】
上記のように、転送するパケットに冗長性を付加し、冗長性を有するパケット群をマルチホーム接続に係る少なくとも二つの接続を利用して複数の経路に分散して転送することにより、パケット転送の信頼性を高める機構は、インターネットからユーザネットワークへの下流方向の仮想的なトンネルだけではなく、ユーザネットワークからインターネットへの上流方向の仮想的なトンネルについても、適用することが可能である。上流方向に適用する場合の、本発明の別の発明に係るユーザルータは、次のようなものになる。
【００５１】
すなわち、ユーザルータがユーザネットワーク内のノードからインターネットへのパケットを受信すると、受信したパケットの冗長パケットを作成し、受信したパケット及び作成した冗長パケット（冗長性を有するパケット群）のうちの一部を、複数の接続のうちの一つを通ってインターネット内に設けられたルータに達する仮想的なトンネル（そのルータのアドレスへ向けてパケットが転送される経路）へ転送する。冗長性を有するパケット群のうちの他の一部は、複数の接続のうちの他の一つを通って上記のルータに達する別の仮想的なトンネルへ転送する。ユーザルータが複数ある場合には、冗長性を有するパケット群のうちの一部は、あるユーザルータ（冗長パケットを作成したユーザルータ）に提供されている接続を通って転送され、他の一部は、そのユーザルータから他のユーザルータ経由で、他のユーザルータに提供されている接続を通って転送される。上記のインターネット内のルータは、複数の経路から冗長性を有するパケット群を受信すると、その冗長性を除く機能を備えている。
【００５２】
上述した本発明はいずれも、パケット転送制御方法やルータ装置、ユーザルータ装置としてだけではなく、インターネットを構成するルータとして機能するコンピュータ、もしくは、インターネットとの接続を複数提供されているユーザネットワークの境界に位置しユーザルータとして機能するコンピュータに、インストールされ、実行されるプログラムとしても、そのようなプログラムを記憶する記憶媒体としても、実施可能なものである。
【発明の効果】
【００５３】
本発明によれば、複数のプロバイダ（複数のＩＳＰであっても良いし単一のＩＳＰが複数のリンクを提供するのでも良い）からインターネットとの接続を提供されているユーザネットワークを宛先とするパケットを転送する際に、パケットに冗長性を持たせ、且つ、接続が複数あることを生かして、送信元からのパケットを確実に宛先のユーザネットワークに受信させることが可能となる。
【発明を実施するための最良の形態】
【００５４】
以下、本発明の実施の形態について、図面を用いて説明する。
【００５５】
図２は、本発明の一実施形態におけるパケット転送の様子を例示したものである。ＩＳＰ−Ａ〜ＩＳＰ−Ｅは、プロバイダのネットワークを表わし、各ネットワーク内には多数のルータ（図示せず）が存在して、ＩＰによる通信を提供している。このようなＩＳＰ−Ａ〜ＩＳＰ−Ｅと、これらプロバイダネットワークの間を接続する多数のルータ（図示せず）とから、インターネットが構成されている。このインターネット内に、本発明により新たに導入されるルータ（ディストリビューションルータ）ＤＲ１〜ＤＲ４が設けられる。
【００５６】
ユーザネットワークは、ＩＳＰ−ＡからリンクＡを介してインターネットとの接続を提供され、ＩＳＰ−ＢからリンクＢを介してインターネットとの接続を提供されている。このようにマルチホーム接続されたユーザネットワークの境界には、ユーザルータＵＲが設けられ、ＵＲは、リンクＡに対応する第１のインタフェースと、リンクＢに対応する第２のインタフェースを有している。以下の説明は、一つのＵＲが二つのインタフェースを持つ例で進めるが、ユーザネットワークの境界にリンクＡに対応する第１のＵＲとリンクＢに対応する第２のＵＲとを設けて二つのＵＲに必要な情報を共有させる例でも、同様のことが実現できることを最後に示す。
【００５７】
ユーザネットワークには、多数のホスト（図示せず）が存在し、それぞれのホストが、Ｐ（Ｘ）をプレフィックス（上位所定ビット）とするＩＰアドレスＸを持っている。このＰ（Ｘ）は、ＩＳＰ−Ａから割り当てられたアドレスプレフィックスＡとしても良いし、ＩＳＰ−Ｂから割り当てられたアドレスプレフィックスＢとしても良いし、ユーザネットワーク独自のＰＩアドレスプレフィックスとしても良い。
【００５８】
本実施形態をＩＰｖ４ネットワークに適用する場合、各ホストが使用するアドレスは、上述のように、ＩＳＰ−Ａから割り当てられたものとしても、ＩＳＰ−Ｂから割り当てられたものとしても、ＰＩアドレスとしても良い。ＩＰｖ６ネットワークの場合は、経路集約型のルーティング広告が行われることから、ＰＩアドレスの使用が困難なことがあるが、その場合でも、いずれかのＩＳＰから割り当てられたアドレスを使えば、本実施形態を適用することができる。勿論、ＩＰｖ６ネットワークにおいてＰＩアドレスを使って、本実施形態を適用しても構わない。
【００５９】
ＵＲの第１のインタフェースは、ＩＳＰ−Ａから割り当てられたアドレスＵＲａを有し、ＵＲの第２のインタフェースはＩＳＰ−Ｂから割り当てられたアドレスＵＲｂを有する。ＵＲａの上位所定ビットはＡであり、ＵＲｂの上位所定ビットはＢである。
【００６０】
本実施形態においては、ユーザネットワークのホスト宛にパケットを送信したい送信元ホストＳ１は、そのパケットの宛先にＰ（Ｘ）をプレフィックスとするアドレスＸを書き込んで、インターネットに送出する。ＤＲ１〜ＤＲ４はいずれも、自身のアドレスとは別に、Ｐ（Ｘ）をインターネット内に広告している。したがって、Ｓ１を発した宛先Ｐ（Ｘ）のパケットは、最初に到達したＤＲ（Ｓ１から最も近いＤＲであり、この図の例ではＤＲ１）に吸い込まれる。このＳ１からＤＲ１へのパケット配送は、ａｎｙｃａｓｔと呼ばれる技術を利用したものである。
【００６１】
ＤＲ１内には、図３に例示するような検索テーブルが記憶されており、上記のようにＰ（Ｘ）を宛先とするパケットを受信すると、そのパケット内の情報（宛先アドレス／ポート、送信元アドレス／ポート、プロトコルＩＤ等の少なくとも一部）を検索キーとして、検索テーブルを参照する（詳細後述）。すると、ＤＲ１は、受信したＰ（Ｘ）宛のパケットを転送できる経路として、ＤＲ１からＩＳＰ−ＡとリンクＡを通ってＵＲに至る経路（図２中、実線矢印）と、ＤＲ１からＩＳＰ−ＢとリンクＢを通ってＵＲに至る経路（図２中、点線矢印）とが存在することが、特定できる。このように、二つ以上の経路が検索テーブルに記憶されている場合、ＤＲ１は、受信したＰ（Ｘ）宛のパケットの冗長パケット（複製パケットもしくは誤り訂正パケット）を作成する。そして、複製パケットが作成される場合、ＵＲは、リンクＡを通る経路とリンクＢを通る経路のいずれにおいてもパケットロスがなければ、両方の経路から同一のパケットを二つ受信するので、そのうち一つを廃棄する。一方の経路でパケットロスがあれば、他方の経路からパケットを一つ受信する。
【００６２】
誤り訂正パケットの作成は、例えばリードソロモン符号のように、前方誤り訂正（Forward Error Correction）ができる符号化を利用して行なわれる。リードソロモン符号では、送信側でｎ個のパケット（これを元パケットと呼ぶ）のデータに基づいてｋ個の誤り訂正パケットを作成し、合計ｎ＋ｋ個のパケットを転送する。そして、ｎ個の元パケットのうちｍ個が途中で紛失し、受信側に届かなかったとしても、受信側にｍ個の誤り訂正パケットが届いていれば、受信したｎ−ｍ個の元パケットとｍ個の誤り訂正パケットに基づいて、紛失したｍ個の元パケットが復元できる（但しｍ≦ｋ）。本実施形態においては、ＤＲ１からは、ｎ＋ｋ個のパケット（元パケットと誤り訂正パケット）が、リンクＡを通る経路とリンクＢを通る経路に分散して転送され、ＵＲにおいて、リンクＡから受信したパケットとリンクＢから受信したパケット（元パケットでも誤り訂正パケットでも良い）が合わせてｎ個以上あれば、紛失したパケットは復元できるので、ｎ個の元パケットが受信できたことになる。このように、前方誤り訂正をかけて、複数の経路を利用することで、バースト誤りに強いパケット転送が可能になる。
【００６３】
送信元ホストＳ２が、ユーザネットワークのホスト宛にパケットを送信したい場合も、同様に、Ｐ（Ｘ）を宛先とするパケットをインターネットに送出すれば、Ｓ２に最も近いＤＲ２がこのパケットを受信する。そして、ＤＲ２も、Ｐ（Ｘ）宛のパケットに関して、ＤＲ１と同様な検索テーブルを記憶しているので、このテーブルをパケット内の情報を検索キーとして参照した結果に従い、ＤＲ２からＩＳＰ−ＡとリンクＡを通ってＵＲに至る経路（図２中、点線矢印）と、ＤＲ２からＩＳＰ−ＢとリンクＢを通ってＵＲに至る経路（図２中、実線矢印）とを特定し、冗長パケットを作成し、元パケットと冗長パケット（複製パケットもしくは誤り訂正パケット）とを、二つの経路に分散して転送する。
【００６４】
送信元ホストＳ３が、ユーザネットワークのホスト宛にパケットを送信したい場合も、ＤＲ３が、ＤＲ１やＤＲ２と同様な検索テーブルを記憶していて、同様の手順で経路の特定と、元パケット及び冗長パケットの分散転送とが行われる。上述した経路の特定と分散転送は、いずれもパケット単位で行われる。
【００６５】
なお、上記の各ＤＲで行われる経路の特定とは、実際には、パケットがＤＲからＵＲまで仮想的なトンネルにより転送されると想定した場合の、トンネルの出口（リンクＡとリンクＢのうちどちらを通ってＵＲに到達するか）を決定することである。この仮想的なトンネルは、入口（ＤＲ）と出口（ＵＲの第１もしくは第２のインタフェース）が規定されれば足りるものであり、その間に経由すべき複数のルータ（図示しないもの）までを入口（ＤＲ）で指定する必要はない。このような仮想的なトンネルは、例えば図４（ａ）〜（ｃ）に示す３通りの方法により形成することができる。
【００６６】
図４（ａ）は、ＩＰパケットのカプセル化を利用するものであり、例えばＤＲ１で受信したパケット（Ｘが宛先で、Ｓ１が送信元）に、次のように新たなＩＰヘッダを追加する。ＤＲ１で検索テーブルを参照した結果、トンネルの宛先（パケットの転送先）としてＵＲａが得られれば、追加するＩＰヘッダの宛先をＵＲａ、送信元をＤＲ１とする。すると、インターネット内のルータは宛先ＵＲａに基づいてこのパケットを転送するので、このパケットはリンクＡを通ってＵＲに到着する。ＵＲでは、ＤＲで新たに追加されたＩＰヘッダを取り除き、元のパケットの宛先Ｘを参照して、ユーザネットワーク内の宛先ホストへこのパケットを転送する。
【００６７】
図４（ｂ）は、ＭＰＬＳの技術を利用するものであり、トンネルの入口から出口まで、ネットワーク層より下位層の情報（ラベル）を参照するだけで（ＩＰアドレスを参照せずに）パケットが転送できるように、ラベルスイッチングパスが設定される。ラベルスイッチングパス（ＬＳＰ）は、ＤＲからＵＲａ（ＵＲの第１のインタフェース）へのパスと、ＤＲからＵＲｂ（ＵＲの第２のインタフェース）へのパスの２本だけが、常時設定してあ
るのでも良いが、さらに細かい粒度のパケットフローに対応させて、様々なＬＳＰを必要に応じて設定するのでも良い。
【００６８】
前者の場合、ＤＲの検索テーブルにトンネルの宛先（パケットの転送先）として記憶されるラベルの値は２種類であり、ラベルＡを選択することがリンクＡを通る経路を選択することを意味し、ラベルＢを選択することがリンクＢを通る経路を選択することを意味する。
【００６９】
後者の場合、同じＵＲａ（リンクＡ）を経由するパケットフローであっても、特定の宛先ホストに対するパケットフロー専用のＬＳＰを、その他の宛先ホストに対するパケットフローを収容するＬＳＰとは別に設定したり、音声通話のデータを運ぶ（特定のプロトコルＩＤの）パケットフロー専用のＬＳＰを、その他のデータを運ぶパケットフローを収容するＬＳＰとは別に設定したり、宛先／送信元、アドレス／ポート、プロトコルＩＤの任意の組合せに対する専用のＬＳＰを設定することができる。この場合は、ＤＲの検索テーブルには、検索キーとして細かい粒度のパケットフローを規定する情報が記憶され、これら各パケットフローに対応してそれぞれのＬＳＰのラベルが記憶されることになる。
【００７０】
そして、例えばＤＲ１で、Ｘが宛先であるパケットを受信すると、パケットを下位層（例えばデータリンク層）のフレームに分解し、各フレームに、検索テーブルを参照して得られるラベル（例えばリンクＡを通るＬＳＰのものとする）を付加する。すると、インターネット内のルータはそのラベルに基づいてこれらのフレームをネットワーク層より下位層で転送し、各フレームはリンクＡを通ってＵＲに到着する。ＵＲでは、ラベルを取り除き、フレームを元のパケットに組み立て、元のパケットの宛先Ｘを参照して、ユーザネットワーク内の宛先ホストへこのパケットを転送する。
【００７１】
図４（ｃ）は、トンネルの入口でアドレス変換を、出口でその逆変換を行うものであり、例えばＤＲ１で受信したパケット（Ｘが宛先で、Ｓ１が送信元）の宛先アドレスを、次のように変換する。ＤＲ１で検索テーブルを参照した結果、トンネルの宛先（パケットの転送先）としてＡ（ユーザネットワークがＩＳＰ−Ａから割り当てられたアドレスプレフィックス）が得られたとすると、宛先アドレスＸのうちの上位所定ビットをＰ（Ｘ）からＡに置き換える。すると、インターネット内のルータは宛先アドレスプレフィックスＡに基づいてこのパケットを転送するので、このパケットはリンクＡを通ってＵＲに到着する。
【００７２】
アドレス変換方式を採用する場合のＵＲでは、プレフィックスＡを宛先アドレスに含むＩＰパケットを受信すると、受信したパケットの宛先アドレスのうちの上位所定ビットをＡからＰ（Ｘ）に置き換える。すると、元のパケットの宛先アドレスが復活するので、この宛先Ｘを参照して、ユーザネットワーク内の宛先ホストへこのパケットを転送する。ＵＲは、プレフィックスＢを宛先アドレスに含むＩＰパケットを受信した場合も、宛先アドレスの上位所定ビットをＢからＰ（Ｘ）に置き換える。図４（ｃ）の場合、トンネルを通っている間のパケットからはＰ（Ｘ）の情報は失われているので、トンネルの出口のＵＲが、失われた情報を復活するために、ＡやＢをＰ（Ｘ）に変換するためのアドレス変換表を、予め記憶している。
【００７３】
アドレス変換方式においては、Ｐ（Ｘ）をＡもしくはＢに変換するＤＲと、ＡもしくはＢをＰ（Ｘ）に変換するＵＲで、変換先のアドレスの数が足りないためにマッピングが取れないと動作が困難になるので、Ｐ（Ｘ）、Ａ、Ｂのそれぞれのプレフィックスに含まれるアドレスの数が同じに（もしくはＡ，Ｂの方が多く）なるように、ＩＳＰ−Ａ及びＢからのアドレス割り当てを受けることになる。アドレス変換方式の利点は、ＩＰパケットカプセル化のようにヘッダを追加するわけではないため、一つのパケットに入るデータの量
がトンネルに入る前後で変化することがなく、追加ヘッダの分入らなくなったデータを多数のパケットに分割して送らなければならなくなることもないことである。
【００７４】
なお、図３の検索テーブルを参照する際、各ＤＲは、受信したパケットのヘッダの内容を検索キーとして、最も良く一致するエントリを探す（この方法を「ベストマッチ」と呼ぶ）。二つの経路に元パケット及び冗長パケットを分散したい場合には、最も良く一致するエントリが二つあれば、それらを出力し、一つしかなければ、次に良く一致するエントリを探して、合計二つを出力する。三つ以上の経路に分散したい場合は、同様に、最も良く一致するエントリから順に、必要な数だけエントリを探す。図３の例では、Ｐ（Ｘ）＝10.1.1.x宛のパケットを受信して、そのパケットの宛先アドレスが10.1.1.2であれば、トンネルの宛先としてＵＲａとＵＲｂの二つが出力される。そして、両方の経路のそれぞれにおいて、図４（ａ）の方式でパケットが転送される。
【００７５】
また、ＤＲからＵＲｂへのＬＳＰであって、Ｗｅｂ通信のパケットフロー用に設定されたもののラベルの値が１００であるとすると、図３を参照することにより、受信したパケットのポート番号やプロトコルＩＤがＷｅｂ通信を表わすものであれば、トンネルの宛先としてベストマッチしたラベル１００が出力される。加えて、Ｐ（Ｘ）＝10.1.1.x宛のパケットであれば何でも入れることのできるＤＲからＵＲａへのＬＳＰのラベルの値が２００であるとすると、セカンドベストマッチであるラベル２００も出力される。そして、両方の経路のそれぞれにおいて、図４（ｂ）の方式でパケットが転送される。
【００７６】
さらに、図３の例では、受信したパケットの送信元ネットワークが2.2.2.xであれば、
トンネルの宛先としてベストマッチしたプレフィックスＢが出力され、セカンドベストマッチであるプレフィックスＡも出力される。そして、両方の経路のそれぞれにおいて、図４（ｃ）の方式でパケットが転送される。
【００７７】
図３には、各ＤＲが複数種類のトンネルを扱えるものである場合の検索テーブルの例を示したが、各ＤＲが扱えるトンネルの種類が単一であっても良く、例えばＩＰカプセル化のみに対応するＤＲであれば、検索テーブルからはＵＲａとＵＲｂが出力されることになる。また、上記には、検索キー全体に対するベストマッチでテーブルのエントリを選択する例を説明したが、検索キーのうち宛先アドレスの部分のみベストマッチで、残りの部分（ポートや送信元など）はテーブルの上から順に参照して行って最初に一致したエントリと次に一致したエントリを選択するようにしても良い。あるいは、検索キー全体に対して、テーブルの最初の方でマッチしたエントリから順に（ベストマッチかどうかに拘らず）選択するようにしても構わない。
【００７８】
上記のベストマッチした経路を本来の経路として、上記のセカンドベストマッチの経路をバックアップの経路として、使用することも可能である。ベストマッチした経路が複数ある場合には、任意の一つを本来の経路とし、他をバックアップの経路とすればよい。例えば、通常の状況下では、本来の経路一つだけを用いて（冗長パケットを作成せずに）パケット転送しており、特殊な状況が生じたとき（例えば、特にパケット再送を避けたいアプリケーションのパケットフローを転送するときや、パケットロスが多くユーザネットワークから多重転送をリクエストされたときなど）に、本来の経路に加えてバックアップの経路を用いて、多重にパケット（元パケットと冗長パケット）転送をするように、切り替えることが可能である。また、常に多重転送を行う例においては、冗長パケットとして複製パケットを転送する場合は、元パケットと同一のパケットであるため、どちらをどの経路で転送するか区別する必要はないが、冗長パケットとして誤り訂正パケットを転送する場合には、元パケットを本来の経路で、誤り訂正パケットをバックアップの経路でという使い分けをすることがあり得る。
【００７９】
図２で説明した例では、全てのＤＲが、冗長パケットを作成し、ユーザネットワークに対する二つの経路（リンクＡ，Ｂ）を使用する機能を有する。すなわち、全てのＤＲが、図３のようなＰ（Ｘ）宛のパケットについての検索テーブルを有する。この方式の場合、ユーザネットワークは実際には複数あるため、図５（ａ）に示すように、全てのＤＲがそれぞれ全てのユーザネットワークについて、複数経路の情報（図３の検索テーブル）を持つことになり、各ＤＲの検索テーブルの情報量や後述するＤＲ間のメッセージ交換の量が多くなる。
【００８０】
これに対し、図５（ｂ）に示すように、一つのユーザネットワークに対する複数経路を、全てのＤＲが有するのではなく、特定のＤＲが有するようにすれば、各ＤＲの検索テーブルを小さくすることができる。すなわち、あるユーザネットワーク宛のパケットを特定のＤＲ以外が受信した場合、そのパケットを特定のＤＲに向けて転送する。そして、パケットが特定のＤＲに到達すると、その特定のＤＲが、冗長パケットを作成し、宛先のユーザネットワークへの複数の経路を使用する。この方式では、各ＤＲは、自身が担当するユーザネットワークについては、複数経路の情報（図３の検索テーブル）を持つが、それ以外のユーザネットワークについては他のＤＲへパケットを転送するだけで済む。
【００８１】
図５（ｂ）の場合のパケット転送の例を、図６に示す。ユーザネットワークのホスト宛にパケットを送信したい送信元ホストＳ１，Ｓ２，Ｓ３が、そのパケットの宛先にＰ（Ｘ）をプレフィックスとするアドレスＸを書き込んで、インターネットに送出すると、最も送信元に近いＤＲ（Ｓ１からの場合ＤＲ１、Ｓ２からの場合ＤＲ２、Ｓ３からの場合ＤＲ３）に配送されるのは、図２の場合と同様である。
【００８２】
ＤＲ１は、ユーザネットワークＰ（Ｘ）を担当するＤＲであるので、Ｓ１から受信したパケットを基に、図３の検索テーブルを参照して、ＤＲ１からＩＳＰ−ＡとリンクＡを通ってＵＲに至る経路（図６中、実線矢印）と、ＤＲ１からＩＳＰ−ＢとリンクＢを通ってＵＲに至る経路（図６中、点線矢印）を特定し、冗長パケットを作成して、元パケットと冗長パケットを両方の経路を分散して転送する。なお、上述したように、通常の状況下では、二つの経路のうちいずれか一方を選択してパケットを転送しており、特殊な状況が生じたときに、他方の経路をバックアップとして追加して、冗長パケットの作成と分散転送をするようにしてもよい。
【００８３】
ＤＲ２も、ユーザネットワークＰ（Ｘ）を担当するＤＲであるので、Ｓ２から受信したパケットを基に、図３の検索テーブルを参照して、ＤＲ２からＩＳＰ−ＡとリンクＡを通ってＵＲに至る経路（図６中、点線矢印）と、ＤＲ２からＩＳＰ−ＢとリンクＢを通ってＵＲに至る経路（図６中、実線矢印）を特定し、冗長パケットを作成して、元パケットと冗長パケットを両方の経路を分散して転送する。
【００８４】
ＤＲ３は、ユーザネットワークＰ（Ｘ）を担当するＤＲではないので、Ｓ３からＰ（Ｘ）宛のパケットを受信すると、ルーティングテーブルを検索し、ＤＲ２のアドレスを得る。ＤＲ２は、予め、自身がＰ（Ｘ）宛のパケットについて複数経路の選択を行うことを、他のＤＲに通知しているので、ＤＲ３のルーティングテーブルは、Ｐ（Ｘ）をキーとして検索するとＤＲ２のアドレスが出力されるように、設定されているのである。よって、Ｓ３からのＰ（Ｘ）宛のパケットは、ＤＲ３からＤＲ２へ転送され、ＤＲ２で、上述したようにパケットと経路の多重化が行われる。
【００８５】
ＤＲ４も、ユーザネットワークＰ（Ｘ）を担当するＤＲではないので、近くの送信元ホストからＰ（Ｘ）宛のパケットを受信すると、ルーティングテーブルを検索し、ＤＲ２のアドレスを得る。ＤＲ４のルーティングテーブルにも、ＤＲ２がＰ（Ｘ）宛のパケットについて複数経路の選択を行うことを他のＤＲに予め通知することにより、Ｐ（Ｘ）とＤＲ
２の対応が設定されている。なお、ここでは、ＤＲ４から直接ＤＲ２へ、Ｐ（Ｘ）宛のパケットが転送される例を挙げたが、ＤＲ４からＤＲ３へパケットが転送され、さらにＤＲ３からＤＲ２へパケットが転送されるようにしても良い。そのためには、ＤＲ２がＰ（Ｘ）とＤＲ２の対応を他の全てのＤＲに通知するのではなく、近くのＤＲ（例えばＤＲ３）に通知し、これを受けたＤＲ３がさらに近くのＤＲ（例えばＤＲ４）に、Ｐ（Ｘ）と自身（ＤＲ３）の対応を通知すれば良い。
【００８６】
以上には、図２や図６において、ユーザネットワークに流入するパケットを転送する方法について説明したが、同図において、ユーザネットワークからインターネットへ流出するパケットの転送は、次のようにすれば良い。例えばユーザネットワーク内のホストが、Ｓ２へ向けてパケットを送出したい場合、宛先をＳ２とし、送信元をＸとするパケットを、ＵＲが第1のインタフェースからＩＳＰ−Ａ経由で、もしくは第2のインタフェースからＩＳＰ−Ｂ経由で、インターネットへ送出すれば良い。
【００８７】
但し、ＩＳＰが入力フィルタを行い、自ＩＳＰが割り当てたＩＰアドレスを送信元とするパケット以外は自ＩＳＰを経由させないように設定している場合であって、アドレスＸが経由させたいＩＳＰから割り当てられたアドレスでない場合は、ＵＲが、ＤＲへ上流方向の（図中の矢印とは逆の）トンネルを設定して、そこにパケットを転送する。上流方向へのトンネルが設定されるのは、例えば、Ｐ（Ｘ）としてＩＳＰ−ＡのプレフィックスＡを使用している場合にＩＳＰ−Ｂ経由で送出したいときや、Ｐ（Ｘ）としてＰＩアドレスプレフィックスを使用している場合である。上流方向へのトンネルは、図４（ａ）〜（ｃ）の３通りの方法で実現でき、ＵＲが図中のＤＲと同様な動作によりパケットを転送し、ＤＲが図中のＵＲと同様な動作によりパケットを転送することになる。なお、ここでは上流方向へのトンネルの設定が必要となる場合を説明したが、不要な場合であっても、上流方向へのトンネルを設定して勿論構わない。
【００８８】
ＵＲの第１のインタフェースからＩＳＰ−Ａを経由してＤＲ１に至るトンネルと、ＵＲの第２のインタフェースからＩＳＰ−Ｂを経由して同じＤＲ１に至るトンネルとが設定されている場合、ＵＲは、ユーザネットワーク内の送信元ノードから受信したパケットの冗長パケットを作成し、元パケットと冗長パケットを二つのトンネルに分散させて転送することが可能である。この場合、ＤＲ１で、重複パケットの廃棄もしくは誤り訂正パケットを用いた紛失パケットの復元を行う。
【００８９】
図７には、図２や図６のようなパケット転送を実現するためにＵＲやＤＲが行う、メッセージ交換の様子を例示する。なお、メッセージ交換は、インターネットにおいて別の目的で規定されたプロトコルを流用して行なっても良いし、本実施形態のＵＲ及びＤＲ用に新たなプロトコルを規定しても良い。また、それぞれのＵＲやＤＲにおいて、上述したパケット転送を行うネットワーク層処理のためのモジュールと、後述するメッセージ交換をトランスポート層以上の層で動くプロトコルを使用して行うモジュールとを、別個に設けても良い。
【００９０】
まず、ＵＲが、自身のＰ（Ｘ）とＵＲａ及びＵＲｂとの対応を登録するためのメッセージを、ＤＲへ送信する。この登録メッセージは、ａｎｙｃａｓｔを用いて送信される。すなわち、ＵＲが発する登録メッセージは、ＵＲに最も近いＤＲに受信されそこで処理される。ＵＲは、ａｎｙｃａｓｔではなくユニキャストで、登録メッセージを送信しても良い。ユニキャストを用いる場合は、ＵＲに予め登録されている一つまたは複数のＤＲのアドレスを宛先として、送信する。
【００９１】
この登録メッセージの送り方には、次の二通りがあり得る。一つは、ＵＲが、リンクＡ（第1のインタフェース）からは、第１のインタフェースのアドレスＵＲａとＰ（Ｘ）の
対応を、リンクＢ（第２のインタフェース）からは、第２のインタフェースのアドレスＵＲｂとＰ（Ｘ）の対応を送信するやり方である。もう一つは、ＵＲが、いずれか一つのリンク（例えばリンクＡ）を選択し、選択したリンクから複数のアドレス（ＵＲａとＵＲｂ）とＰ（Ｘ）の対応を送信するやり方である。
【００９２】
いずれの送り方の場合も、ＵＲａとＵＲｂを同時に登録しなくても良く、前者の場合、リンクＡからの登録メッセージとリンクＢからのそれとを別々のタイミングで送信できるし、後者の場合、リンクＡから二つのメッセージ、すなわちＰ（Ｘ）とＵＲａの対応を登録するメッセージとＰ（Ｘ）とＵＲｂの対応を登録するメッセージとを、別々に送信するのでも構わない。
【００９３】
両方のリンクを用いる送り方の場合、ＵＲを発した登録メッセージＡ（Ｐ（Ｘ）とＵＲａの対応）は、ＩＳＰ−Ａ経由で最も近いＤＲ１に吸い込まれ、登録メッセージＢ（Ｐ（Ｘ）とＵＲｂの対応）は、ＩＳＰ−Ｂ経由で最も近いＤＲ２に吸い込まれる。ＤＲ１とＤＲ２は、後述するように登録情報の共有を行うので、ＤＲ１にもＤＲ２にも、Ｐ（Ｘ）とＵＲａ及びＵＲｂの対応が登録されることになる。各ＤＲは、この登録情報を用いて、図３のような検索テーブルを生成することができる。後述する通信環境に関する情報やＵＲからの指示情報を用いて、図３の検索テーブルを更新することも可能である。
【００９４】
片方のリンク（例えばリンクＡ）を用いる送り方の場合、ＵＲを発した登録メッセージ（Ｐ（Ｘ）とＵＲａ及びＵＲｂの対応）は、ＩＳＰ−Ａ経由で最も近いＤＲ１に吸い込まれる。すると、ＤＲ１には、Ｐ（Ｘ）とＵＲａ及びＵＲｂの対応が登録され、ＤＲ１とＤＲ２は、後述するように登録情報の共有を行うので、ＤＲ２にも、同じ対応が登録されることになる。各ＤＲが、この登録情報に基づいて、図３のような検索テーブルを生成することができるのは、上記と同様である。
【００９５】
各ＤＲにおいて、上述したように一旦登録した対応情報を、維持もしくは削除する一つの方法は、ＵＲから定期的に同一内容の登録メッセージを送信することである（この方法をソフトステートと呼ぶことがある）。すると、ＤＲは、その登録メッセージが受信されている限り、登録内容を維持し、受信されなくなったら（最後に登録メッセージを受信してから所定の期間が経過したら）、登録内容を削除する。例えば、Ｐ（Ｘ）とＵＲｂの対応を示す登録メッセージが受信されなくなったら、この対応を削除する（Ｐ（Ｘ）とＵＲａの対応のみが登録情報として残る）。そして、図３の検索テーブルから、リンクＢを通る経路に相当するトンネルの宛先を削除し、残っているリンクＡに対するトンネルが選択されるように、検索テーブルを書き換える。この結果、残っているトンネルが二つ以上存在するうちは、上述した冗長パケットの作成と分散転送が可能であるが、残っているトンネルが一つになってしまった場合には、冗長パケットの作成を止め、受信したパケットを一つの経路にそのまま転送する。なお、冗長パケットが誤り訂正パケットである場合には、冗長パケットの作成を継続し、元パケットと誤り訂正パケットの両方を一つの経路に転送するようにしてもよい。
【００９６】
ソフトステートを採用する場合、上記の両方のリンクを用いる登録メッセージの送り方で、片方のリンク（例えばリンクＢ）がダウンすると、登録メッセージＢはインターネットに到達しなくなる。よって、Ｐ（Ｘ）とＵＲｂの対応情報は、各ＤＲから削除され、各ＤＲの検索テーブルは、残っているリンクＡの経路を指し示すようになり、ユーザネットワーク宛のパケットはＩＳＰ−Ａ経由で転送されるので、インターネットとの接続性が保持される。
【００９７】
ソフトステートで、上記の片方のリンクを用いる登録メッセージの送り方を採用する場合、片方のリンク（例えばリンクＢ）がダウンしたことをＵＲが検出すると、ＵＲは、Ｐ
（Ｘ）とＵＲａ及びＵＲｂの対応を登録メッセージとして送出するのを止め、Ｐ（Ｘ）とＵＲａの対応だけを登録メッセージとして送出する。すると、Ｐ（Ｘ）とＵＲｂの対応情報は、各ＤＲから削除され、各ＤＲの検索テーブルは、残っているリンクＡの経路を指し示すようになる。
【００９８】
登録情報の維持もしくは削除のための別の方法として、ＵＲから明示的に削除を依頼するメッセージを送信することとしても良い（この方法をハードステートと呼ぶことがある）。すると、ＤＲは、その削除メッセージが受信されるまでは登録内容を維持し、受信されたら登録内容を削除する。この方法の場合、両方のリンクともダウンしたりＵＲ自体がダウンしたりして通信不能になっている場合も、ＵＲからの削除メッセージが受信されないため、そのような場合にまで登録内容を維持することのないように、ＤＲが定期的にＵＲの生存確認を行う。この確認は、本実施形態のメッセージ交換とは別に動作しているプロトコルによる生存確認を、共用しても良い。
【００９９】
ハードステートを採用する場合、上記の両方のリンクを用いる登録メッセージの送り方で、片方のリンク（例えばリンクＢ）がダウンすると、ＤＲが定期的にＵＲｂに対して送信している生存確認に応答が返ってこなくなる。これにより、Ｐ（Ｘ）とＵＲｂの対応情報をＤＲから削除することができ、各ＤＲの検索テーブルが指し示す経路を残っているリンクＡに変更することができる。
【０１００】
ハードステートで、上記の片方のリンクを用いる登録メッセージの送り方を採用する場合、片方のリンク（例えばリンクＢ）がダウンしたことをＵＲが検出すると、ＵＲは、Ｐ（Ｘ）とＵＲｂの対応を削除するよう指示する削除メッセージをＤＲに送出する。
【０１０１】
以上では、ＵＲからＤＲへ送信する登録メッセージに、ユーザネットワークのプレフィックスＰ（Ｘ）とＵＲａまたはＵＲｂとの組を含ませる例を説明したが、登録メッセージには、ユーザネットワークの識別子ＩｘとＵＲａまたはＵＲｂとの組を含ませることとし、これを受信したＤＲにおいて、ＩｘからプレフィックスＰ（Ｘ）を求めることにより、Ｐ（Ｘ）とＵＲａまたはＵＲｂとの対応を登録するようにしても良い。このようにＵＲからの登録メッセージに含ませる情報としてプレフィックスＰ（Ｘ）を用いないことは、次のような利点がある。
【０１０２】
Ｐ（Ｘ）は、インターネット内の他の多数のルータに広告されるルーティング情報となるので、Ｐ（Ｘ）に誤りがあると、広範囲に誤動作を引き起こし、ネットワークが機能しなくなる可能性が高い。このようなリスクを低減するため、インターネットの外のユーザであるＵＲから申告される情報をそのままルーティング情報として使用することは、避けることが望ましい。上記のように、ＤＲは、自身が担当するユーザネットワークｘを識別子Ｉｘにより識別することとし、ＵＲからは、Ｐ（Ｘ）ではなくＩｘを申告させ、ＤＲにおいて、ＩｘをＰ（Ｘ）に変換することにより、誤ったＰ（Ｘ）が使用されるリスクを減らすことができる。なお、Ｉｘとしては、例えばＵＲのユーザネットワークにおけるアドレス（Ｐ（Ｘ）を上位所定ビットに持つＵＲのアドレス）を用いることができる。この場合、ＤＲは、自身が担当するユーザネットワークのＰ（Ｘ）のビット数を予め知っており、受信したＩｘからそのビット数分だけ上位ビットを抽出することにより、Ｐ（Ｘ）を得る。また、この登録メッセージ送信用のプロトコルとしては、例えばＩＥＴＦで標準化されているＭｏｂｉｌｅ  ＩＰを応用することができ、ＵＲをモバイルノード、ＤＲをホームエージェントと見立て、登録メッセージ中のＩｘをＵＲのホームアドレス、ＵＲａまたはＵＲｂをＵＲのケア・オブ・アドレスとして扱うことで、ＤＲがＰ（Ｘ）宛てのパケットをＵＲａまたはＵＲｂに転送するための登録処理が実現できる。
【０１０３】
また、ＵＲから、Ｐ（Ｘ）を申告させる場合であっても、その登録メッセージを受信し
たＤＲにおいて、自身が担当するユーザネットワークの正しいプレフィックスＰ（Ｘ）を予め記憶しておき、登録メッセージに含まれるＰ（Ｘ）と自身が記憶しているＰ（Ｘ）とが一致しているかどうかを検査することが望ましい。検査の結果、一致していれば、Ｐ（Ｘ）とＵＲａまたはＵＲｂとの対応の登録処理を開始するが、不一致であれば、登録メッセージの送信元のＵＲへ、エラーメッセージを返す。
【０１０４】
以上のように、ＵＲの発した登録メッセージにより、少なくとも一つのＤＲに、Ｐ（Ｘ）とＵＲのアドレスの対応が登録されるため、次には、ＤＲ間でこの登録情報を伝達する。図７に示した例では、ＢＧＰのルート・リフレクタのような役割をする登録情報サーバを導入し、登録情報サーバが、登録情報を交換するためのＤＲ間のコネクションを集中管理している。これにより、登録情報を全てのＤＲにフルメッシュ伝達する場合でも、各ＤＲにかかる負荷を低減し、ネットワークの管理を容易にすることができる。別の例として、ＯＳＰＦ（Open Shortest Path First）というルーティングプロトコルのように、登録情報をＤＲ間で伝播させることもできる。
【０１０５】
ここで、図５を用いて説明したように、全てのＤＲがＵＲに対する経路選択を行う（ａ）の場合は、上記のＤＲ間で伝達される情報は全て、Ｐ（Ｘ）とＵＲの複数のアドレスの対応となる。一方、特定のＤＲがＵＲに対する経路選択を行う（ｂ）の場合、上記のＤＲ間で伝達される情報は、特定のＤＲに対しては、Ｐ（Ｘ）とＵＲの複数のアドレスの対応となり、その他のＤＲに対しては、Ｐ（Ｘ）と特定のＤＲのアドレスの対応となる。
【０１０６】
以上に説明したメッセージ交換により、各ＤＲが図３のような検索テーブルを作成する基礎となる登録情報（Ｐ（Ｘ）とＵＲａ及びＵＲｂとの対応）が、各ＤＲに記憶される。以下には、ＤＲに対して、複数の転送経路のうちいずれを本来の経路として選択するかを決定する方法について述べる。なお、ここで決定された選択すべき経路が、ベストマッチの経路として検索テーブルに書き込まれるので、パケット転送の際にこの検索テーブルを参照することにより、経路の選択が行われる。この検索テーブルが書き換えられると、選択経路が変更されることになる。また、誤り訂正パケットと元パケットを複数の経路に分散させて転送する場合は、どのパケットをどの経路で転送するかを選択することになるが、この場合には、検索テーブルに各トンネルの通信品質等を記入する欄を追加しておくとよい。そして、検索テーブルを参照してベストマッチの経路とセカンドベストマッチの経路を特定し、特定した各経路の通信品質等を検索テーブルから読み出し、例えば帯域の大きいトンネルの方へパケットを多く振り分けるように、各パケットについて二つの経路からの選択を行う。この場合にも、検索テーブルの通信品質等を記入する欄が書き換えられると、一部のパケットについては二つの経路のうちいずれを選択するかが変更されることになる。
【０１０７】
選択すべき経路を決定するため、図８に示すような、各リンクのトラフィックや、各経路の通信品質（例えば、遅延、ジッター、帯域、パケットロス等）等を検出すると、効果的な負荷分散や最適な経路選択ができる。各リンクのトラフィックは、ＵＲの第１及び第２のインタフェースで観測することができ、全てのＤＲからの全てのパケットフローのトラフィックの合計だけを観測するのでも良いし、特定のパケットフロー毎にトラフィックを観測しても良いし、ＩＰパケットカプセル化やＭＰＬＳによるトンネルの場合にはＵＲが知ることのできるトンネルの入口のＤＲ毎にトラフィックを観測しても良い。ＵＲが、ＤＲ毎にトラフィックを観測する場合には、トラフィックが多いＤＲに対して選択的に、経路変更の通知を行うこともできる。
【０１０８】
トラフィックの合計だけを観測するのでも、例えばリンクＡのトラフィックがリンクＢよりも多ければ、適当に（例えばランダムに）決定したパケットフロー（例えば特定の宛先アドレスと送信元アドレスの組等）について、経路（トンネルの出口）をリンクＡから
リンクＢに変更するように、指示することができる。この指示は、例えば、トラフィックを観測したＵＲで、経路を変更するパケットフローの特定まで行なって、この特定されたパケットフローを規定する情報を含む指示メッセージをＵＲからＤＲへ送出することで、実現できる。他の例として、観測されたトラフィックの値を含む通信環境通知メッセージをＵＲがＤＲへ送出し、このメッセージの情報を基に、ＤＲが経路を変更するパケットフローの特定を行なうこともできる。
【０１０９】
さらに、ＵＲにて、特定のパケットフロー毎にトラフィックを観測すれば、例えばリンクＡのトラフィックがリンクＢよりも多いときに、どのパケットフローについて経路変更をすれば、リンクＡとリンクＢのトラフィックが最適に分散するかまで決定することができる。この場合、経路変更するパケットフローの特定をＤＲ側で行う通信環境通知メッセージ方式でも良いが、パケットフロー毎の観測結果であるのでメッセージの情報量が多くなる。したがって、経路変更するパケットフローの特定をＵＲ側で行なう指示メッセージ方式がより適している可能性がある。
【０１１０】
ＵＲが発する上記の指示メッセージや通信環境通知メッセージは、図７で登録メッセージについて説明したのと同様に、ａｎｙｃａｓｔを利用して最も近いＤＲに配送し、ＤＲ間でこれを伝達させることもできるし、ＵＲが個々のＤＲのアドレスを知ることができるトンネル方式の場合には、ＵＲが上記のメッセージを特定のＤＲ宛に送信し、ＤＲ間での伝達はしないとすることもできる。
【０１１１】
ａｎｙｃａｓｔを利用して指示メッセージを送る場合、全てのＤＲもしくはそのＵＲを担当するＤＲの全てが、同じように選択すべき経路を変更しても良いし、指示メッセージ中に変更すべきＤＲのアドレスリストを含めることで、特定のＤＲのみの経路を変更することも可能である。ａｎｙｃａｓｔを利用して通信環境通知メッセージを送る場合は、このメッセージに含まれる観測結果に基づいて、各ＤＲが個別の判断を行うので、各ＤＲで異なる変更内容になる可能性がある。
【０１１２】
特定のＤＲに指示メッセージを送りＤＲ間での伝達はしないならば、全てのＤＲがＵＲに対する経路選択をする構成（図５（ａ））の場合は、同じパケットフローであっても、経由するＤＲによって選択される経路が異なることが生じ、それによる負荷分散も可能になる。特定のＤＲがＵＲに対する経路選択をする構成（図５（ｂ））の場合は、特定のＤＲ以外のＤＲへは選択経路変更のためのメッセージを送る必要がないが、ＵＲがトンネルの入口のアドレスを検出することにより特定のＤＲ（経路選択をするＤＲ）に指示メッセージや通信環境通知メッセージを送ることとすれば、ＤＲ間の伝達をなくすだけで必要のないメッセージ交換を省略することができる。
【０１１３】
ＵＲにおけるトラフィック観測で、トラフィックがどのＤＲから送られてきているかを区別すれば、どのＤＲに上記の指示メッセージや通信環境通知メッセージを送信すれば良いかを、特定することができる。さらに、同じパケットフローが複数のＤＲ経由で送られてきている場合、一部のＤＲのみに上記の指示メッセージや通信環境通知メッセージを送信することにより、一部のＤＲのみに経路変更を要求することでも、リンクＡとリンクＢのトラフィックを適切に分散することができる。
【０１１４】
図８に示す各経路の通信品質の例としては、ここでは遅延を取り上げて説明するが、ジッター、帯域、パケットロス等についても、同様に本実施形態を適用することができる。一つの方法は、ＵＲが個々のＤＲのアドレスを知ることができるトンネル方式の場合に、ＵＲが、特定のＤＲからのパケットが有する遅延を観測し、これを上記のトラフィックについての指示メッセージもしくは通信環境通知メッセージと同様に、その特定のＤＲへフィードバックするものである。
【０１１５】
別の方法は、どのトンネル方式でも適用可能なもので、ＤＲが、図２や図６で説明したパケット転送を行うのとは別に、ＵＲへの複数の経路に対し、遅延を測定するためのメッセージを流し、これに応答してＵＲから返送されてくるメッセージに含まれる遅延の情報を得るものである。
【０１１６】
ＤＲは、ＵＲから指示メッセージを受信すれば、そのメッセージにて特定されるパケットフローの経路を指定された通り変更し、ＵＲから遅延情報を含むメッセージを受信すれば、ＤＲ自身で経路を変更するパケットフローを特定する。
【０１１７】
さらに別の方法として、ユーザネットワークの管理者（オペレータ）が、ＵＲにおいて、経路の選択ポリシー、例えば音声通話（ＶｏＩＰ：Voice over IP）のパケットは遅延
最小のトンネルで送る等を設定し、これを指示メッセージとしてＤＲに送信する方法もあり得る。これは、例えば、ＤＲもしくは図７の登録情報サーバがＷｅｂサーバとしての機能を有し、ＵＲがＷｅｂクライアントとしての機能を備えていれば、Ｗｅｂページにオペレータがポリシーを入力することによっても、実現できる。ＤＲがＷｅｂサーバとして機能する場合には、そのＤＲがＵＲからの指示メッセージを受け、その内容を他のＤＲへ転送する。図７の登録情報サーバがＷｅｂサーバとして機能する場合には、図７の登録情報サーバが、ＵＲからの指示メッセージの内容を他のＤＲへ配送する。
【０１１８】
そして、ＤＲでは、この指示されたポリシーと、上述したように計測した各経路の遅延の情報とに基づいて、ユーザの要望に沿った経路を選択することができる。具体的には、例えば、図３の検索テーブルに、音声通話のパケットフローを示す検索キーに対応して、遅延最小のトンネルの宛先を記憶させる。
【０１１９】
図９及び図１０は、それぞれ本実施形態に係るＤＲ装置１００及びＵＲ装置２００の内部構成例を示す機能ブロック図である。ここでは、上述した経路の選択のいずれの方法も扱える例を説明する（図９のブロック１１４〜１２０、図１０のブロック２１４〜２２０）が、実際には、ここで特定されたブロックのうちの一部を必要に応じて選択して実装しても良いし、ここで特定されたブロックは全く備えなくても、ＤＲやＵＲとしての基本的な機能は果たされる。なお、図中の二重線矢印は、パケットの流れを示し、その他の矢印は、制御情報の流れを示す。
【０１２０】
ＤＲ装置１００においては、パケット受信部１０２が、送信元ホストを発したパケット、もしくは図５（ｂ）の場合は他のＤＲから転送されてきたパケットを受信し、経路選択部１０４が、受信したパケット内の情報をキーにして検索テーブル記憶部１２４を参照し、この検索結果に基づいて宛先ユーザネットワークへの複数の経路のうち二つ以上を選択した場合は、冗長パケット作成部１４０が、冗長パケット（複製パケットもしくは誤り訂正パケット）を作成し、パケット送信部１０６が、図４（ａ）〜（ｃ）のいずれかの方法で、選択された経路（トンネルの出口となるＵＲのインタフェース）へパケットを転送する。図４（ｃ）の方法の場合は、アドレス変換部１２８を用いる。なお、図５（ｂ）の場合、検索テーブル記憶部１２４が、転送先として他のＤＲを示すことがあり、その場合、パケット送信部１０６は、そのＤＲへパケットを転送する。冗長パケット作成部１４０が、複製パケットを作成する場合には、元パケットと複製パケットに同一のパケット識別子を付与することとすれば、ＵＲにおいて受信した各パケットのパケット識別子を調べることにより、パケットを重複して受信したことを検出できる。
【０１２１】
ＵＲ装置２００においては、リンクＡからパケットが転送されてくればＩＳＰ−Ａ用パケット受信部２０２がこれを受信し、リンクＢからパケットが転送されてくればＩＳＰ−Ｂ用パケット受信部２０４がこれを受信し、図４（ａ）〜（ｃ）のいずれかのＵＲ側の処
理を行う。図４（ｃ）の場合は、アドレス変換部２０６が、登録情報記憶部２１０に記憶されているＰ（Ｘ）とＡ及びＢの対応を参照して、アドレス変換する。そして、受信したパケットから生成された元のパケットに基づいて、冗長パケット削除部２３０が、冗長パケットを削除する処理を行ない、その後パケット送信部２０８が宛先ホストへ転送する。冗長パケットの削除は、冗長パケットが複製パケットである場合は、各パケットに付与されたパケット識別子を参照して、重複パケットを廃棄することにより行う。冗長パケットが誤り訂正パケットである場合は、冗長パケット削除部２３０は、各パケットのシーケンス番号を調べて、受信されるべき元パケットが受信されていないことを確認すると、受信されなかった元パケットの数だけ誤り訂正パケットを用いて、誤り訂正を行い、受信された元パケットと復元された元パケットを、パケット送信部２０８に渡す。このとき、不要となった誤り訂正パケットは廃棄する。
【０１２２】
ＵＲ２００の登録情報送信部２１２は、登録情報記憶部２１０に記憶されているＰ（Ｘ）とＵＲａ及びＵＲｂの対応を、図７で説明したように登録メッセージとしてＤＲ１００へ送信し、ＵＲ登録受信部１０８がこれを受信する。登録情報送信部２１２は、通信環境観測部２１４にていずれかのリンクがダウンしていることを検出すると、上述したように送信する登録メッセージの内容を変更する（削除メッセージを送信する例を含む）。ＤＲ１００が受信した登録メッセージの内容は登録情報記憶部１１２に記憶され、上記のように変更があると、登録情報更新部１１０がその記憶内容を書き換える。
【０１２３】
登録メッセージとして、Ｐ（Ｘ）とＵＲａ及びＵＲｂの対応ではなく、ネットワーク識別子ＩｘとＵＲａ及びＵＲｂの対応を送る構成を採用する場合は、ＵＲ２００の登録情報送信部２１２は、登録情報記憶部２１０に記憶されているＰ（Ｘ）ではなく、Ｉｘを用いて登録メッセージを作成する。そして、ＤＲ１００の登録情報更新部１１０は、受信した登録メッセージのＩｘに基づいてプレフィックス記憶部１３０を参照することにより、Ｐ（Ｘ）を得て、登録情報記憶部１１２にＰ（Ｘ）とＵＲａ及びＵＲｂの対応を記憶する。なお、登録メッセージとして、Ｐ（Ｘ）とＵＲａ及びＵＲｂの対応が送信される場合、ＤＲ１００の登録情報更新部１１０が、受信した登録メッセージのＰ（Ｘ）に基づいてプレフィックス記憶部１３０を参照し、受信したＰ（Ｘ）が正しければ登録情報を記憶し、誤っていれば登録せずにＵＲへエラーメッセージを返すようにすることができる。
【０１２４】
ＵＲ２００の通信環境観測部２１４は、パケット受信部２０２及び２０４を監視して、トラフィック量や通信品質等の情報を得る。そして、この観測された情報を観測情報送信部２１６が通信環境通知メッセージとしてＤＲへ送信し、ＵＲ観測受信部１１４がこれを受信する。あるいは、通信環境観測部２１４で観測された情報を基に、指示情報生成部２１８がどのパケットフローの経路をどこに変更すべきかを判断し、この判断結果を含む情報を指示情報送信部２２０が指示メッセージとしてＤＲへ送信し、ＵＲ指示受信部１１８がこれを受信する。
【０１２５】
指示情報生成部２１８は、オペレータの入力するポリシーと観測された通信環境とに基づいて、経路を変更すべきパケットフローを決定し、この具体的な決定結果を指示情報としても良いし、通信環境に基づく判断は行わずにオペレータの入力するポリシー自体を指示情報としても良い。前者の場合は、ＵＲ指示受信部１１８で受信した指示メッセージの内容に従って、検索テーブル更新部１２２が検索テーブル記憶部１２４の内容を書き換える。後者の場合は、ＵＲ指示受信部１１８で受信した指示メッセージの内容はポリシー記憶部１２０に記憶され、このポリシーと通信環境検出部１１６の出力とに基づいて、検索テーブル更新部１１２が、経路を変更すべきパケットフローを決定する。ＵＲ指示受信部１１８は、ＤＲが上述したＷｅｂサーバとして機能する場合は、Ｗｅｂサーバの機能を持つ。
【０１２６】
ＵＲ指示受信部１１８が指示メッセージを受信しない場合も、ＵＲ観測受信部１１４から出力される通信環境の情報を通信環境検出部１１６が検出し、検索テーブル更新部１１２が通信環境検出部１１６の出力に基づいて、経路を変更すべきパケットフローを決定して検索テーブルを書き換えることができる。あるいは、検索テーブルに各経路の通信環境をも記憶しておく例においては、検索テーブル更新部１１２は、通信環境検出部１１６の出力に従って、検索テーブル記憶部１２４の通信環境を記入する欄を書き換え、経路選択部１０４が、検索テーブルの各経路の情報として通信環境の情報をも参照して、経路を決定する。通信環境検出部１１６は、ＵＲで観測された通信環境の情報だけでなく、ＤＲがＵＲとメッセージ交換することにより獲得した通信環境の情報を用いることができる。
【０１２７】
このように書き換えられた検索テーブル記憶部１２４を参照することで、経路選択部１０４で選択される経路（トンネルの出口となるＵＲのインタフェース）が変更され、トラフィックの分散や最適経路の選択が可能となる。また、ＤＲ装置１００は、ＤＲ制御情報送受信部１２６を備え、他のＤＲとの間で、上述した指示メッセージの内容や、通信環境の情報、登録情報等の制御情報を交換することができる。すなわち、ＤＲ制御情報送受信部１２６は、検索テーブル更新部１２２に接続されており、ＤＲ装置１００がＵＲから受信部１０８、１１４、１１８を介して受信した情報を、他のＤＲへ、必要であれば加工した上で転送する。また、ＤＲ制御情報送受信部１２６は、他のＤＲもしくは図７の登録情報サーバから上記の制御情報を受信し、検索テーブル更新部１２２は、受信した他のＤＲ等からの制御情報に基づいて、検索テーブル記憶部１２４の内容を書き換えることもできる。
【０１２８】
図１１には、ＤＲが、ＵＲへの複数の経路のそれぞれが正常に動作しているか否かを確認し、Ｐ（Ｘ）宛のパケットを転送する経路として、正常に動作している経路を選択するための機構を示す。図中のＤＲは、図９に示したＤＲ１００と同様の機能を有し、登録情報記憶部１１２には、ユーザネットワークＰ（Ｘ）に対して、ＩＳＰ−ＡによるリンクＡを利用する経路Ａと、ＩＳＰ−ＢによるリンクＢを利用する経路Ｂとが登録されているものとする。この登録情報は、ＤＲの検索テーブルに反映され、経路選択部１０４は、この検索テーブルを参照してユーザネットワークへの経路を選択する。本例におけるＤＲは、これらの他に、確認パケット送信部１３２、返答パケット受信部１３４、間隔制御部１３６を備える。
【０１２９】
確認パケット送信部１３２は、登録情報記憶部１１２を参照し、経路Ａ（ＵＲａを出口とする仮想的なトンネル）と経路Ｂ（ＵＲｂを出口とする仮想的なトンネル）のそれぞれに対し、定期的に、キープアライブパケットと呼ばれるパケット（実トラフィックとは別の試験トラフィック）を送信する。返答パケット受信部１３４は、送信されたそれぞれのキープアライブパケットに対して返信されるパケットを検査して、ＤＲ１からＵＲａへのトンネルとＤＲ１からＵＲｂへのトンネルのそれぞれが、有効に機能しているかを確認する。そして、有効に機能していないことが判明した経路は、本来の経路として選択しないように、経路選択部１０４に指示する。経路選択部１０４は、例えば経路Ａを使用しないように指示されれば、検索テーブルを参照して経路Ａ以外の経路（例えば経路Ｂ）を選択し、Ｐ（Ｘ）宛のパケットを転送する。
【０１３０】
間隔制御部１３６は、確認パケット送信部１３２が各経路にキープアライブパケットを送信する間隔を、各経路の通信品質（例えば帯域）に応じて変更することができる。送信間隔が短ければ、各経路の状況をよりリアルタイムに把握することが可能になる反面、帯域が狭い場合にキープアライブのような試験パケットを頻繁に送信するのは、実トラフィックのパケットを送信できる帯域をますます狭めてしまう結果となるため、帯域が狭くなるほどキープアライブの送信間隔を長くするように、制御する。例えば、経路Ａの帯域が、経路Ｂの帯域より大きければ、経路Ａへキープアライブを送信する間隔は、経路Ｂへキ
ープアライブを送信する間隔よりも短くなる。
【０１３１】
上記の各経路の通信品質は、ｐａｔｈｃｈａｒとして知られている仕組みを応用すると、上記のキープアライブパケットに対する返信内容から推定することができる。この仕組みによれば、ＤＲ１がトンネルの出口を指定してｔｒａｃｅｒｏｕｔｅを実行した場合と同様に、キープアライブパケットに対する返答として、ＤＲ１からトンネルの出口（ＵＲａまたはＵＲｂ）への経路上のルータのアドレスが、ＤＲ１に近い方から順番に得られ、さらに経路上の各ルータまでの所要時間も測定することができる。この測定を、送信するキープアライブパケットのサイズを変えて、何度も繰り返す。そして、サイズの異なる測定パケットのそれぞれに対するＲＴＴ(Round Trip Time)を計測し、回帰曲線を求めるこ
とにより、トンネルの帯域が推測できる。回帰曲線の傾きから、帯域が推定でき、回帰曲線が示すパケットサイズが０のときのＲＴＴから、伝播遅延が推定できる。
【０１３２】
上記では、ＤＲからＵＲへの（下流方向の）トンネルに対する動作確認を行ない、ＤＲが正常に動作している経路を選択してユーザネットワークへのパケットを転送する例を説明したが、上記の機構は、ユーザネットワークからインターネットへ流入させるパケットのために、ＵＲからＤＲへの（上流方向の）トンネルを利用する場合にも、適用可能である。すなわち、ＵＲは、ＵＲａのインタフェースからＤＲへの経路（図１１では経路Ａの横に点線で示す）と、ＵＲｂのインタフェースからＤＲへの経路（図１１では経路Ｂの横に点線で示す）のそれぞれに対し、キープアライブパケットを送信し、その返答を調べ、正常に動作しているトンネルを、本来の経路として選択して、ユーザネットワークから出て行くパケットを転送する。キープアライブの送信間隔を、経路の通信品質に応じて変更可能なことも、同様である。
【０１３３】
図１２には、リンクＡに対応する境界ルータとしてＵＲ−Ａが、リンクＢに対応する境界ルータとしてＵＲ−Ｂが設けられている場合に、冗長パケットを削除するための三通りの方式を示す。例えばＤＲ１を出発点として、リンクＡを介して元のパケットフローが、リンクＢを介して複製されたパケットフローが、転送されてくるものとする。
【０１３４】
図１２（ａ）の方式では、例えば、ＵＲ−Ａが、自身が受信したパケットのパケット識別子の情報をＵＲ−Ｂに伝え、ＵＲ−Ｂは、同一のパケットがＵＲ−Ａでも受信されていれば自身が受信したパケットを廃棄し、同一のパケットがＵＲ−Ａでは受信されていなければ自身が受信したパケットをＵＲ−Ａに渡す。ＵＲ−Ａは、ＵＲ−Ｂから渡されたパケットと自身が受信したパケットとを、宛先ノード（ホスト）へ転送する。この変形として、ＵＲ−Ｂが、ＵＲ−Ａでは受信されていないパケットを受信している場合には、これをＵＲ−Ａ経由でなく直接ホストへ転送する方法もあり得る。
【０１３５】
また、リンクＡを介して元のパケットフローが、リンクＢを介して誤り訂正のパケットフローが、転送されてくる場合は、例えば、ＵＲ−Ａが、自身が受信したパケットフローに含まれるシーケンス番号から受信されていないパケットがあると判断した場合は、ＵＲ−Ｂが受信した誤り訂正パケットをＵＲ−Ａへ転送させ、ＵＲ−Ａで紛失したパケットを復元する。そして、受信された元のパケットと復元されたパケットが、ＵＲ−Ａからホストへ転送される。一方、リンクＡを介して元のパケットフローと誤り訂正のパケットフローを合わせたパケットフローの任意の一部が、リンクＢを介してその残りの部分が、転送されてくる場合には、例えば、ＵＲ―Ｂが、自身が受信したパケットのシーケンス番号の情報をＵＲ−Ａに伝え、ＵＲ−Ａは、自身が受信したパケットのシーケンス番号と通知されたシーケンス番号を合わせても受信されていないと判断されるパケットが存在する場合には、自身が受信した誤り訂正パケットを用いて、それで足りなければＵＲ−Ｂが受信した誤り訂正パケット又は元パケットの転送を受けて、紛失したパケットを復元する。そして、ＵＲ−Ａは、受信した元のパケットと復元したパケットとをホストへ転送する。元の
パケットの一部は、それを受信したＵＲ−Ｂからホストへ転送されても構わない。
【０１３６】
図１２（ｂ）の方式では、ＵＲ−ＡとＵＲ−Ｂは共に、自身が受信したパケットフローに対し、トンネルの出口に相当する処理を行うだけで、そのパケットフローをユーザネットワーク内の特定のルータＲへ転送し、特定のルータＲが、図１０の冗長パケット削除部２３０と同様な処理を行う。このとき、同じパケットフローに属するパケットは全て、ＵＲ−Ａに受信されたかＵＲ−Ｂに受信されたかを問わず、同じ特定のルータへ転送されるように、ＵＲ−ＡとＵＲ−Ｂのルーティングテーブルを設定しておく。図１２（ｃ）の方式では、ＵＲ−ＡとＵＲ−Ｂは共に、自身が受信したパケットフローに対し、トンネルの出口に相当する処理を行うだけで、そのパケットフローを普通にユーザネットワーク内の宛先ノードへ転送し、宛先ノードが、図１０の冗長パケット削除部２３０と同様な処理を行う。
【０１３７】
なお、図１の従来方式では、企業ネットワーク等では通常は扱っていないＢＧＰ（インターネット用のプロトコル）をネットワーク管理者が運用して、インターネットへのアドレス広告をする必要があるが、本実施形態によれば、そのようなＢＧＰを導入しなくても、企業ネットワーク等に上述した登録メッセージ送信等の機能を有するＵＲを設置すれば、マルチホーム接続を実現することができる。
【０１３８】
以上、本発明の実施形態について説明したが、上述の実施形態を本発明の範囲内で当業者が種々に変形、応用して実施できることは勿論である。例えば、上記では、一つのユーザネットワークが二つのＩＳＰのそれぞれからリンクを提供されている場合を説明したが、一つのユーザネットワークが三つ以上のＩＳＰのそれぞれからリンクを提供されている場合にも、同様のマルチホーム接続やトラフィック分散等が可能である。また、上記では、一つのＩＳＰが一つのリンクをユーザネットワークに提供する（二つのリンクは二つのＩＳＰにより提供される）場合を説明したが、二つ以上のリンクを一つのＩＳＰがユーザネットワークに提供する（例えば図２のＩＳＰ−ＡとＩＳＰ−Ｂのネットワークが一つのＩＳＰにより運営され、その一つのＩＳＰネットワークから二つのリンクＡ，ＢがＵＲに提供される）場合にも、同様のマルチホーム接続を生かしたパケット転送の多重化やトラフィック分散等が可能である。
【産業上の利用可能性】
【０１３９】
以上説明したように、本発明に係るルータとユーザルータを使用すれば、例えば、データをリアルタイムで確実に宛先に届けたいが、宛先のユーザネットワークとインターネットとの間の接続が不安定であるような場合に応用して、接続を二重化（多重化）するとともに転送されるパケットも二重化（多重化）することにより、途中の経路でパケットロスがあっても、別の接続を利用する経路から届くパケットで紛失したパケットを代替もしくは復元することが可能となり、インターネットとユーザネットワーク間のパケット転送の高信頼化に有用である。
【図面の簡単な説明】
【０１４０】
【図１】従来のマルチホーム接続の方式を説明するための図。
【図２】本発明の一実施形態におけるパケット転送の例を説明するための図。
【図３】本実施形態におけるパケット転送に用いられる検索テーブルの例を示す図。
【図４】本実施形態においてパケットが転送される経路が（ａ）ＩＰパケットのカプセル化により構成される場合と、（ｂ）ラベルスイッチングパスにより構成される場合と、（ｃ）ＩＰパケットの宛先アドレス変換により構成される場合とを説明するための図。
【図５】インターネットに複数存在する本実施形態に係るルータ装置ＤＲのうち（ａ）全てのＤＲがユーザネットワークへの転送を行う場合と、（ｂ）一部のＤＲがユーザネットワークへの転送を担当する場合とを説明するための図。
【図６】本実施形態におけるパケット転送の別の例を説明するための図。
【図７】本実施形態に係るルータ装置ＤＲに制御に必要な情報を登録するためのメッセージが交換される様子を例示する図。
【図８】本実施形態において検出される通信環境の例を説明するための図。
【図９】本実施形態に係るルータ装置ＤＲの内部構成例を示す図。
【図１０】本実施形態に係るユーザルータ装置ＵＲの内部構成例を示す図。
【図１１】本実施形態においてパケットが転送される経路（仮想的なトンネル）が、正常に動作しているか否かを確認する機能を持つルータ装置の構成例と、その機能を説明するための図。
【図１２】本実施形態においてユーザネットワークにて受信されたパケット群から冗長性を除くための３通りの方式を例示する図。
【符号の説明】
【０１４１】
１００  本実施形態に係るルータ装置ＤＲ
１０２  パケット受信部
１０４  経路選択部
１０６  パケット送信部
１０８  ＵＲ登録受信部
１１０  登録情報更新部
１１２  登録情報記憶部
１１４  ＵＲ観測受信部
１１６  通信環境検出部
１１８  ＵＲ指示受信部
１２０  ポリシー記憶部
１２２  検索テーブル更新部
１２４  検索テーブル記憶部
１２６  ＤＲ制御情報送受信部
１３０  プレフィックス記憶部
１３２  確認パケット送信部
１３４  返答パケット受信部
１３６  送信間隔制御部
１４０  冗長パケット作成部
２００  本実施形態に係るユーザルータ装置ＵＲ
２０２  ＩＳＰ−Ａからのパケット受信部
２０４  ＩＳＰ−Ｂからのパケット受信部
１２８、２０６  アドレス変換部（オプショナル）
２０８  パケット送信部
２１０  登録情報記憶部
２１２  登録情報送信部
２１４  通信環境観測部
２１６  観測情報送信部
２１８  指示情報生成部
２２０  指示情報送信部
２３０  冗長パケット削除部
【図１】
2008301517.tif 000003
【図２】
2008301517.tif 000004
【図３】
2008301517.tif 000005
【図４】
2008301517.tif 000006
【図５】
2008301517.tif 000007
【図６】
2008301517.tif 000008
【図７】
2008301517.tif 000009
【図８】
2008301517.tif 000010
【図９】
2008301517.tif 000011
【図１０】
2008301517.tif 000012
【図１１】
2008301517.tif 000013
【図１２】
2008301517.tif 000014
【手続補正書】
【提出日】平成20年9月5日(2008.9.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
インターネットを構成するルータにおいて、パケットの転送を制御する方法であって、
インターネットとの接続を複数提供されるユーザネットワークを宛先とするパケットを受信し、
受信した前記パケットの冗長パケットを作成し、
前記ユーザネットワークのアドレスを含む前記パケットに基づいて、前記ユーザネットワークに提供される複数の接続のうちの少なくとも二つを特定し、
受信した前記パケット及び作成した前記冗長パケットのうちの一部を、前記特定した接続のうちの一つに対応するアドレスに従ってパケットが前記ルータから前記ユーザネットワークへ転送される経路へ、転送し、
受信した前記パケット及び作成した前記冗長パケットのうちの他の一部を、前記特定した接続のうちの他の一つに対応するアドレスに従ってパケットが前記ルータから前記ユーザネットワークへ転送される経路へ、転送することを特徴とするパケット転送制御方法。
【請求項２】
インターネットを構成するルータとして機能するコンピュータにおいて実行される、パケットの転送を制御するためのプログラムであって、
前記ルータが、インターネットとの接続を複数提供されるユーザネットワークのアドレスを宛先に含むパケットを受信すると、前記パケットに基づいて、前記ユーザネットワークに提供される複数の接続のうちの少なくとも二つを特定し、
前記パケットの冗長パケットを作成し、
前記ルータに、前記特定した接続のうちの一つに対応するアドレスに従ってパケットが前記ユーザネットワークへ転送される経路へ、受信した前記パケット及び作成した前記冗長パケットのうちの一部を転送させるとともに、記特定した接続のうちの他の一つに対応するアドレスに従ってパケットが前記ユーザネットワークへ転送される経路へ、受信した前記パケット及び作成した前記冗長パケットのうちの他の一部を転送させることを特徴とするパケット転送制御プログラム。
【請求項３】
インターネットとの接続が複数提供されるユーザネットワークを宛先とするパケットを受信する受信手段と、
前記ユーザネットワークのアドレスに対応して、前記複数の接続のそれぞれに対応するアドレスを記憶する記憶手段と、
前記受信手段により受信されたパケットの冗長パケットを作成する作成手段と、
前記受信手段により受信されたパケットに基づいて、前記記憶手段に記憶された複数のアドレスのうちいずれのアドレスに従った経路で前記パケット及び前記冗長パケットのそれぞれが転送されるべきかを決定する制御手段と、
前記制御手段により決定された前記ユーザネットワークへ至る経路のそれぞれに、前記パケット及び前記冗長パケットのそれぞれを転送する転送手段とを具備したことを特徴とするルータ装置。