(57)【特許請求の範囲】
【請求項１】
サブスクライブ−通知サービスに仮想接続性を持たせるための方法であって、
少なくとも１つのネットワーク接続ポイント変更イベントサブスクリプションを、少なくとも１つのネットワーク接続ポイント変更イベントサブスクライバから受け取るステップであって、ネットワーク接続ポイント変更イベントサブスクリプションは、元のネットワーク接続ポイント識別を有する元のネットワーク接続ポイントから現在のネットワーク接続ポイント識別を有する現在のネットワーク接続ポイントへの、ネットワーク上の装置のネットワークアドレスの変更の指示を含む、ステップと、
少なくとも１つのネットワーク接続ポイント変更イベントパブリケーションを、少なくとも１つのネットワーク接続ポイント変更イベントパブリッシャから受け取るステップであって、ネットワーク接続ポイント変更イベントパブリケーションは、元のネットワーク接続ポイントの識別と前記元のネットワーク接続ポイントとは異なる現在のネットワーク接続ポイントの識別とを含み、前記元のネットワーク接続ポイントの識別と前記現在のネットワーク接続ポイントの識別とは、リモートピア上に格納されたローカル接続変換テーブル内のエントリと同期される、ステップと、
ネットワーク接続ポイント変更イベントサブスクリプションと一致する各ネットワーク接続ポイント変更イベントパブリケーションについて、一致するパブリッシュされたネットワーク接続ポイント変更イベントを前記ネットワーク接続ポイント変更イベントサブスクライバに通知するステップと
を含む方法であって、アプリケーションレイヤーは、ネットワーク接続ポイント変更の数に関わらず、元のネットワーク接続ポイント識別を用いて前記ネットワーク上の現在の接続ポイントを連続的に参照し、下位プロトコルレイヤーは前記現在のネットワーク接続ポイントを参照する方法を実行させるためのプログラムを記録したことを特徴とするコンピュータ読取り可能な記録媒体。
【請求項２】
ネットワーク接続ポイントの各識別は、インターネットプロトコル（ＩＰ）アドレスを含むことを特徴とする請求項１に記載のコンピュータ読取り可能な記録媒体。
【請求項３】
各ネットワーク接続ポイント変更イベントサブスクリプションは、ネットワーク接続ポイント変更イベントサブスクライバが少なくとも１つのアクティブな通信接続を持つ相手である通信ピアを接続しているネットワーク接続ポイントの識別を含むことを特徴とする請求項１に記載のコンピュータ読取り可能な記録媒体。
【請求項４】
前記少なくとも１つのネットワーク接続ポイント変更イベントパブリケーションは、
第１のネットワーク接続ポイント変更イベントパブリッシャからの第１のネットワーク接続ポイント変更イベントパブリケーションと、
第２のネットワーク接続ポイント変更イベントパブリッシャからの第２のネットワーク接続ポイント変更イベントパブリケーションとを含み、および
前記第１のネットワーク接続ポイント変更イベントを各ネットワーク接続ポイント変更イベントサブスクリプションと照合するステップは、
前記ネットワーク接続ポイント変更イベントサブスクリプションが前記第２のネットワーク接続ポイント変更イベントパブリッシャによって行われたことを判別するステップと、
前記第２のネットワーク接続ポイント変更イベントが前記第１のネットワーク接続ポイント変更イベントの期間内に発生したことを判別するステップとを含むことを特徴とする請求項１に記載のコンピュータ読取り可能な記録媒体。
【請求項５】
前記ネットワーク接続ポイント変更イベントを前記ネットワーク接続ポイント変更イベントサブスクリプションと照合するステップは、前記ネットワーク接続ポイント変更イベントサブスクリプションがプライベートネットワークアドレスを持つサブスクライバによって行われたことを判別するステップを含むことを特徴とする請求項１に記載のコンピュータ読取り可能な記録媒体。
【請求項６】
前記方法は、ネットワーク接続ポイント変更イベントサブスクライバ毎に、前記ネットワーク接続ポイント変更イベントサブスクライバがプライベートネットワークアドレスを持つかどうかを判別するステップをさらに含むことを特徴とする請求項１に記載のコンピュータ読取り可能な記録媒体。
【請求項７】
前記方法は、
各ネットワーク接続ポイント変更イベントサブスクリプションは、ネットワーク接続ポイント変更イベントサブスクライバ通知アドレスを備えるステップと、
前記ネットワーク接続ポイント変更イベントサブスクライバがプライベートネットワークアドレスを持つかどうかを判別することは、前記ネットワーク接続ポイント変更イベントサブスクライバ通知アドレスが前記ネットワーク接続ポイント変更イベントサブスクリプションのパブリックソースと一致しているかどうかを判別するステップと
をさらに含むことを特徴とする請求項６に記載のコンピュータ読取り可能な記録媒体。
【請求項８】
サブスクライブメッセージを仮想接続サブスクライブ通知サービスに送信し、リモートピアによってパブリッシュされた少なくとも１つのネットワーク接続ポイント変更イベントにサブスクライブするステップであって、前記ネットワーク接続ポイント変更イベントは前記リモートピアのネットワークアドレスの変更を含む、ステップと、
リモートピアによってパブリッシュされたネットワーク接続ポイント変更イベントを通知する通知メッセージを、前記仮想接続サブスクライブ−通知サービスから受け取るステップと、
ローカル接続変換テーブルが格納された前記リモートピアの元のネットワーク接続ポイントに関連付けられた元のネットワークアドレスエントリと、前記リモートピアの現在のネットワーク接続ポイントに関連付けられた対応する現在のネットワークエントリとを同期するステップと、
を含む方法であって、アプリケーションレイヤーは、前記元のネットワーク接続ポイントを参照することにより、前記現在のネットワーク接続ポイントを連続的に参照する方法を実行させるためのプログラムを記録したことを特徴とするコンピュータ読取り可能な記録媒体。
【請求項９】
前記方法は、パブリッシュメッセージを前記仮想接続サブスクライブ−通知サービスに送信し、ネットワーク接続ポイント変更イベントをパブリッシュするステップをさらに含むことを特徴とする請求項８に記載のコンピュータ読取り可能な記録媒体。
【請求項１０】
前記パブリッシュメッセージは、
元のネットワーク接続ポイントの識別子と、
現在のネットワーク接続ポイントの識別子と
を含むことを特徴とする請求項９に記載のコンピュータ読取り可能な記録媒体。
【請求項１１】
前記通知メッセージは、
前記リモートピアの元のネットワーク接続ポイントの識別子と、
前記リモートピアの現在のネットワーク接続ポイントの識別子と
を含むことを特徴とする請求項８に記載のコンピュータ読取り可能な記録媒体。
【請求項１２】
前記方法は、パブリッシュメッセージを前記仮想接続サブスクライブ−通知サービスに送信し、ローカルネットワーク接続ポイント変更イベントをパブリッシュするステップをさらに含むことを特徴とする請求項８に記載のコンピュータ読取り可能な記録媒体。
【請求項１３】
前記方法は、
前記仮想接続サブスクライブ−通知サービスは、パブリックアドレス空間内に配置されるステップと、
前記サブスクライブメッセージは、プライベートアドレス空間から送信されるステップと、
を含むことを特徴とする請求項８に記載のコンピュータ読取り可能な記録媒体。
【請求項１４】
前記方法は、前記通知メッセージを受け取った結果、接続変更要求メッセージを前記リモートピアに送信し、前記リモートピアに接続変更メッセージを要求するステップをさらに含むことを特徴とする請求項８に記載のコンピュータ読取り可能な記録媒体。
【請求項１５】
仮想接続をサブスクライブ−通知サービスに提供するためのコンピュータ装置であって、
プロセッサと、
前記プロセッサに接続されたメモリであって、前記メモリは前記プロセッサによって実行可能なプログラムを含む、メモリと
を備え、前記プログラムは、
サブスクライブメッセージを仮想接続サブスクライブ通知サービスに送信し、リモートピアによってパブリッシュされた少なくとも１つのネットワーク接続ポイント変更イベントにサブスクライブするステップであって、前記ネットワーク接続ポイント変更イベントは前記リモートピアのネットワークアドレスの変更を含む、ステップと、
リモートピアによってパブリッシュされたネットワーク接続ポイント変更イベントを通知する通知メッセージを、前記仮想接続サブスクライブ−通知サービスから受け取るステップと、
ローカル接続変換テーブルが格納された前記リモートピアの元のネットワーク接続ポイントに関連付けられた元のネットワークアドレスエントリと、前記リモートピアの現在のネットワーク接続ポイントに関連付けられた対応する現在のネットワークエントリとを同期するステップと、
を含む方法であって、アプリケーションレイヤーは、前記元のネットワーク接続ポイントを参照することにより、前記現在のネットワーク接続ポイントを連続的に参照する方法を実行させるためのプログラムであることを特徴とするコンピュータ装置。
【請求項１６】
前記方法は、パブリッシュメッセージを前記仮想接続サブスクライブ−通知サービスに送信し、ネットワーク接続ポイント変更イベントをパブリッシュするステップをさらに含むことを特徴とする請求項１５に記載のコンピュータ装置。
【請求項１７】
前記パブリッシュメッセージは、
元のネットワーク接続ポイントの識別子と、
現在のネットワーク接続ポイントの識別子と
を含むことを特徴とする請求項１６にコンピュータ装置。
【請求項１８】
前記通知メッセージは、
前記リモートピアの元のネットワーク接続ポイントの識別子と、
前記リモートピアの現在のネットワーク接続ポイントの識別子と
を含むことを特徴とする請求項１５に記載のコンピュータ装置。
【請求項１９】
前記方法は、パブリッシュメッセージを前記仮想接続サブスクライブ−通知サービスに送信し、ローカルネットワーク接続ポイント変更イベントをパブリッシュするステップをさらに含むことを特徴とする請求項１５に記載のコンピュータ装置。
【請求項２０】
前記方法は、
前記仮想接続サブスクライブ−通知サービスは、パブリックアドレス空間内に配置されるステップと、
前記サブスクライブメッセージは、プライベートアドレス空間から送信されるステップと、
を含むことを特徴とする請求項１５に記載のコンピュータ装置。
【請求項２１】
前記方法は、前記通知メッセージを受け取った結果、接続変更要求メッセージを前記リモートピアに送信し、前記リモートピアに接続変更メッセージを要求するステップをさらに含むことを特徴とする請求項１５に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータネットワークに関する、より詳細には、ネットワーク接続されたコンピュータがネットワーク接続ポイント（ｎｅｔｗｏｒｋ  ａｔｔａｃｈｍｅｎｔ  ｐｏｉｎｔ）を変更することができるコンピュータネットワークに関する。
【背景技術】
【０００２】
今日の大規模なコンピュータネットワークでは通常、ネットワークユーザ、特にモバイルネットワークユーザはネットワークに複数の地点で接続する機会がある。例えば、ネットワーク接続ポイントが異なれば提供されるサービス品質、コストも異なり、かつ／または保守する組織も異なることから、ネットワークユーザは、ネットワーク接続ポイントを変更したいと考えることがある。例えば、コストを最小に抑え、かつ／またはサービス品質を最大にするため、ネットワーク接続ポイントを自動的に変更するように構成することさえできる。
【０００３】
通常、コンピュータネットワークサービスを利用するアプリケーションにとっては、コンピュータネットワークサービスができる限りアプリケーションに対し透過的であること、つまり、アプリケーション側で意識する必要があるコンピュータネットワークサービスの実装の詳細、特に下位レイヤのネットワークプロトコルの変更に関する詳細を、できる限り少なくすることが望ましい。基本プロトコルに適切な機能が組み込まれていないコンピュータネットワークの場合、ネットワーク接続ポイントをアプリケーションに対し透過的にしようとすると、追加の機構を必要とする場合がある。例えば、コンピュータがインターネットへの接続ポイントを変更する場合、新しいネットワーク接続ポイントは、通常、新しいＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスに関連付けられる。基本的なＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）またはＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ６）の下では、例えば、ネットワーク接続ポイントの変更前にアクティブな接続を行うコンピュータ上のアプリケーションは、変更後にそれらの接続の再構築を行う用意をしておく必要がある場合がある。
【０００４】
この説明のために、ネットワーク接続ポイントの変更をアプリケーションに対して透過的にする従来の試みをインフラストラクチャソリューション（ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ｓｏｌｕｔｉｏｎｓ）およびエンドツーエンドソリューション（ｅｎｄ−ｔｏ−ｅｎｄ  ｓｏｌｕｔｉｏｎｓ）に分類することができる。インフラストラクチャソリューションでは、通常、ネットワーク要素の追加および／またはネットワークルーティングシステム（ｎｅｔｗｏｒｋ  ｒｏｕｔｉｎｇ  ｓｙｓｔｅｍ）の変更を必要とする。例えば、Ｍｏｂｉｌｅ  ＩＰ  ｆｏｒ  ＩＰｖ４およびＭｏｂｉｌｅ  ＩＰ  ｆｏｒ  ＩＰｖ６は、経路指定に基づくインフラストラクチャソリューションであり、ホームエージェントネットワーク要素を追加する必要がある。これとは対照的に、エンドツーエンドソリューションでは、ネットワーク接続ポイント変更を、ネットワークルーティングとは無関係に、通信エンドポイントで管理する。エンドツーエンドソリューションの例については、非特許文献１で説明されている。エンドツーエンドソリューションの利点は、既存のネットワークインフラストラクチャに修正を加えずとも、ネットワーク接続ポイントの透過的な変更を行えることにある。
【０００５】
【非特許文献１】Snoeren et al., An End-to-End Approach to Host Mobility, 6th ACM/IEEE International Conference on Mobile Computing and Networking, August 2000
【非特許文献２】Zimmerman, OSI Reference Model - The ISO Model of Architecture for Open System Interconnection, IEEE Transactions on Communications, April 1980
【非特許文献３】Egevang et al., The IP Network Address Translator (NAT), RFC 1631, Internet Engineering Task Force, May 1994
【非特許文献４】Postel, J., Internet Protocol, RFC 791, Information Sciences Institute at the University of Southern California, September 1981
【非特許文献５】Postel, J., Transmission Control Protocol, RFC 793, Information Sciences Institute at the University of Southern California, September 1981
【非特許文献６】Postel, J., User Datagram Protocol, RFC 768, Information Sciences Institute at the University of Southern California, August 1980
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のソリューションには欠点がある。例えば、Ｍｏｂｉｌｅ  ＩＰ  ｆｏｒ  ＩＰｖ４およびＭｏｂｉｌｅ  ＩＰ  ｆｏｒ  ＩＰｖ６は、経路指定が間接的であり、その間接的な経路指定は非効率的であり、およびネットワークセキュリテモデルに違反する場合がある。一部の従来のエンドツーエンドソリューションは、通信接続の当事者である各コンピュータがネットワーク接続ポイントを同時に変更するケースの取り扱いができないか、あるいはそのようなケースの一貫した取り扱いができない。コンピュータネットワークでのネットワークアドレス変換（ＮＡＴ）の使用は、従来ソリューションにより、非効率的に、かつ／または一貫性なく処理される現代のコンピュータネットワークのもう１つの側面である。
【０００７】
いくつかの従来のソリューションでは、ネットワークプロトコルのバージョンが異なる場合に取り扱い方法も異なるため、そのバージョンの違いが透過性を阻害することがある。レイヤ化されたプロトコルをサポートするコンピュータネットワークもあり、例えば、インターネットプロトコルは通常、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）およびＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）とともに使用される。上位プロトコルレイヤのいくつかの側面を非効率なまたは一貫性のない形でしかサポートしていない従来のソリューションもあり、例えば、ＩＰ上のＴＣＰをサポートしているが、ＩＰ上のＵＤＰでは正常に動作しないソリューションがある。アプリケーションがレイヤ化プロトコルの異なる側面を異なる方法で取り扱うということを認識している必要がなければ透過性は向上すると思われる。
【課題を解決するための手段】
【０００８】
この節では、本発明のいくつかの実施形態の簡潔な要約を提示する。この要約は、本発明の概要を広範囲にわたって述べたものではない。この要約は、本発明の鍵となる要素や決定的な要素を示すこと、または本発明の範囲を定めることを目的としていない。後で述べる詳細な説明の前置きとして、本発明のいくつかの実施形態を簡略化した形式で述べることのみを目的とする。
【０００９】
本発明の一実施形態では、ネットワーク接続ポイント変更イベントサブスクリプション（ｅｖｅｎｔ  ｓｕｂｓｃｒｉｐｔｉｏｎｓ）は、ネットワーク接続ポイント変更イベントサブスクライバ（ｅｖｅｎｔ  ｓｕｂｓｃｒｉｂｅｒｓ）から受け取る。ネットワーク接続ポイント変更イベントパブリケーション（ｅｖｅｎｔ  ｐｕｂｌｉｃａｔｉｏｎｓ）は、ネットワーク接続ポイント変更イベントパブリッシャ（ｅｖｅｎｔ  ｐｕｂｌｉｓｈｅｒｓ）から受け取る。ネットワーク接続ポイント変更イベントがネットワーク接続ポイント変更イベントサブスクリプションと一致した場合、ネットワーク接続ポイント変更イベントサブスクリプションを送ったサブスクライバは通知を受ける。
【００１０】
本発明の一実施形態では、コンピュータは、サブスクライブメッセージ（ｓｕｂｓｃｒｉｂｅ  ｍｅｓｓａｇｅ）を、リモートピアによりパブリッシュ（ｐｕｂｌｉｓｈ）されたネットワーク接続ポイント変更イベントにサブスクライブ（ｓｕｂｓｃｒｉｂｅ）する仮想接続（ｖｉｒｔｕａｌ  ｃｏｎｎｅｃｔｉｖｉｔｙ）サブスクライブ−通知サービスに送信することができる。
【００１１】
本発明の一実施形態では、コンピュータ化されたシステムは、仮想接続サブスクライブ−通知サービス照合モジュールを備え、このモジュールは、ネットワーク接続ポイント変更イベントサブスクリプションデータベースにおいてネットワーク接続ポイント変更イベントと一致するネットワーク接続ポイント変更イベントサブスクリプションを検索するように構成される。
【００１２】
添付の特許請求の範囲において本発明の特徴を詳細に設定するが、本発明およびその利点は、添付図面に関する以下の詳細な説明から最もよく理解される。
【発明を実施するための最良の形態】
【００１３】
本発明の様々な実施形態の説明を進める前に、本発明の様々な実施形態を実施できるコンピュータおよびネットワーキング環境についてここで説明する。必要であるというわけではないが、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能な命令の一般的状況において本発明を説明する。一般に、プログラムには、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、オブジェクト、コンポーネント、データ構造などが含まれる。本明細書で使用している「プログラム」という用語は、単一のプログラムモジュールまたは一斉に動作している複数のプログラムモジュールを意味する。本明細書で使用している「コンピュータ」および「コンピューティング装置」という用語は、パーソナルコンピュータ（ＰＣ）、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースのプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、タブレットＰＣ、ラップトップコンピュータ、マイクロプロセッサまたはマイクロコントローラを備えた家庭用器具、ルータ、ゲートウェイ、ハブなどを含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理装置によりタスクが実行される分散コンピューティング環境で使用することもできる。分散コンピューティング環境では、プログラムは、ローカルとおよびリモートの両方のメモリストレージ装置内に配置することができる。
【００１４】
図１を参照して、本発明の複数の態様を組み込むのに好適なコンピュータネットワーキング環境の一例を説明する。コンピュータネットワーキング環境例は、雲の形で表されている、ネットワーク１０４上で互いに通信しあっている複数のコンピュータ１０２を含む。ネットワーク１０４は、ルータ、ゲートウェイ、ハブなど多くのよく知られているコンポーネントを備えることができ、これにより、コンピュータ１０２は有線および／または無線媒体を介して通信することができる。ネットワーク１０４上で互いに情報をやり取りするとき、コンピュータ１０２の１つまたは複数は、他方のコンピュータ１０２に関してクライアント、サーバ、またはピアとして動作することができる。したがって、本発明の様々な実施形態は、本明細書で説明している具体例においてこれらの種類のコンピュータすべてを取りあげられないとしても、クライアント、サーバ、ピア、またはそれらの組合せで実施することができる。
【００１５】
図２を参照すると、本明細書で説明している本発明の複数の態様を実装できるコンピュータ１０２の基本構成例が示されている。最も基本的な構成では、通常、コンピュータ１０２は少なくとも１つの処理装置２０２およびメモリ２０４を備える。処理装置２０２は、本発明の様々な実施形態によりタスクを実行する命令を処理する。そのようなタスクを
実行する際に、処理装置２０２は、コンピュータ１０２の他の部分およびコンピュータ１０２の外部にある装置に電子信号を送信し、何らかの結果を生じさせることができる。コンピュータ１０２の正確な構成と種類に応じて、メモリ２０４は揮発性（ＲＡＭなど）、不揮発性（ＲＯＭまたはフラッシュメモリなど）、またはこれら２つの何らかの組合せとすることができる。図２では、この最も基本的な構成は、破線２０６で示されている。
【００１６】
コンピュータ１０２には、さらに特徴／機能を追加することもできる。例えば、コンピュータ１０２は、限定ではないが、磁気ディスクまたは光ディスクまたはテープなどの追加のストレージ（取外し可能２０８および／または取外し不可能２１０）を備えることもできる。コンピュータストレージ媒体は、コンピュータ実行可能な命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取外し可能および取外し不可能な媒体を含む。コンピュータストレージ媒体は、限定ではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）またはその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他の磁気ストレージ装置、または目的の情報を格納するために使用することができコンピュータ１０２によりアクセスできるその他の媒体がある。このような任意のコンピュータストレージ媒体をコンピュータ１０２の一部とすることができる。
【００１７】
望ましくは、コンピュータ１０２は、装置がリモートコンピュータ２１４などの他の装置と通信するために使用する通信接続２１２も含む。通信接続は、通信媒体の一例である。通信媒体は、通常、コンピュータ読取り可能な命令、データ構造体、プログラムモジュール、または搬送波またはその他のトランスポートメカニズムなどの変調データ信号におけるその他のデータを実現し、および情報配信媒体を含む。限定ではなく一例としては、「通信媒体」という用語は、音響、ＲＦ、赤外線などの無線媒体およびその他の無線媒体も指す。本明細書で使用している「コンピュータ読取り可能な媒体」という用語は、コンピュータストレージ媒体と通信媒体の両者を指す。
【００１８】
さらにコンピュータ１０２は、キーボード／キーパッド、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置２１６を備えることもできる。表示装置、スピーカー、プリンタなどの出力装置２１８を備えることもできる。これらの装置はすべて、当技術分野において周知のため、本明細書でさらに詳しい説明をする必要はない。
【００１９】
以下の説明では、特に断りのない限り、１つまたは複数のコンピューティング装置により実行される動作および象徴的な操作を参照しながら本発明を説明する。したがって、そのような動作および操作は、ときには「コンピュータ実行」と表現されることもあるが、構造化された形式においてデータを表現する電気的信号の、コンピュータの処理装置による操作を含むことは理解されるであろう。この操作により、データを変換するか、またはコンピュータのメモリシステム内の複数の位置に保持し、当業者であればよく理解している方法でコンピュータの動作を再構成するか、さもなければ他の何らかの形で変更する。データが保持されているデータ構造は、データの形式により定められた特定の特性を備えるメモリの物理的な位置である。しかし、本発明は前述の文脈において説明されているが、当業者が以下で説明する各種の動作および操作がハードウェアでも実装できることを理解されるように、説明に制限を加える意図はない。
【００２０】
本発明の一実施形態では、複数のプロトコルレイヤは、コンピュータネットワーク内に通信接続を確立し維持するためのプロトコルを実装することができる。それらのプロトコルレイヤは、例えば国際標準化機構（ＩＳＯ）のＯｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＯＳＩ）モデルにより記述されるレイヤに対応する。ＯＳＩモデルの詳細については、非特許文献２を参照のこと。本発明の一実施形態では、仮想接続（ＶＣ）レイヤがプロトコルに追加される、または既存のプロトコルレイヤに組み込まれる。以下では、例は、インターネットプロトコル（ＩＰ）およびＩＰベースのプロトコルを参照して説明するが、ただし、本発明の実施形態はそれに制限されるわけではなく、それらの例は、ステートレスルーティング（ｓｔａｔｅｌｅｓｓ  ｒｏｕｔｉｎｇ）を使用する任意のネットワーキングプロトコルに一般化することができる。
【００２１】
図３は、仮想接続レイヤを既存のネットワーキングレイヤに追加する方式の一例を示している。仮想接続レイヤ３０２は、１つまたは複数の下位ネットワーキングレイヤ３０４と１つまたは複数の上位ネットワーキングレイヤ３０６との間に置かれる。下位ネットワーキングレイヤ３０４の例には、物理媒体内の信号の形式設定を判別する物理レイヤ、および複数のコンピュータ（例えば、図１のコンピュータ１０２）による共有物理通信媒体へのアクセスを制御する媒体アクセス制御（ＭＡＣ）レイヤを含む。上位ネットワーキングレイヤ３０６の例は、ユーザベースの認証依存ポリシーを強制するセッションレイヤ、および共通ネットワーク伝送形式から特定のアプリケーション形式にデータを変換するプレゼンテーションレイヤを含む。
【００２２】
アプリケーションレイヤ３０８は、上位ネットワークレイヤ３０６との情報のやり取りをすることによりネットワークサービスを利用する。上位ネットワークレイヤ３０６は、仮想接続レイヤ３０２と情報をやり取りし、および仮想接続レイヤ３０２は、下位ネットワーキングレイヤ３０４と情報をやり取りする。下位ネットワーキングレイヤ３０４の少なくとも１つは、物理伝送媒体とやり取りする。本発明の一実施形態では、仮想接続レイヤ３０２は、接続の当事者がネットワーク接続ポイントを変更したとしても、接続の元の識別情報によりアプリケーションレイヤ３０８から接続を参照できるよう、通信接続（例えば、図２の通信接続２１２）を仮想化する。
【００２３】
図４および図５は、本発明の一実施形態により追加の仮想接続レイヤを階層化ＴＣＰ／ＩＰ実装に組み込む２つの例を示している。図４では、下位ネットワーキングレイヤは、ネットワーキングハードウェア４０４とのインターフェースを備えるデバイスドライバ４０２および上位ネットワーキングレイヤから独立しているインターネットプロトコル機能を実装するＩＰレイヤ４０６を含む。上位ネットワーキングレイヤは、ＴＣＰ／ＩＰの伝送制御面およびコンピュータネットワークサービスにアクセスするアプリケーション４１２により使用されるネットワークソケットアプリケーションプログラミングインターフェース（ＡＰＩ）４１０を実装するＴＣＰレイヤ４０８を含む。図４では、仮想接続レイヤ４１４は、ＴＣＰレイヤ４０８とＩＰレイヤ４０６との間に配置され、発信データ（つまり、送信されるデータ）がＩＰレイヤ４０６に見られる前にデータを傍受し、およびＩＰレイヤ４０６がインターネットプロトコル機能に関してデータの処理を終了した後に着信データ（つまり、受信されたデータ）も傍受する。
【００２４】
一部の従来のＴＣＰ／ＩＰ実装では、ＩＰレイヤおよびＴＣＰレイヤは、例えば、パフォーマンスを高めるために、単一データ処理モジュールとして実装される。このような場合、例えば、既存の実装への修正を最小限にするために、図５に示されている別の位置に仮想接続レイヤ５０２を追加すると都合がよい。既存の実装への修正を最小限に抑えることで、新しいモジュールによって持ち込まれる不具合を減らすことができ、修正後により安定したシステムとなる。図５では、仮想接続レイヤ５０２は、融合ＴＣＰ／ＩＰレイヤ（ｆｕｓｅｄ  ＴＣＰ／ＩＰ  ｌａｙｅｒ）５０４とデバイスドライバ４０２（つまり、図４のデバイスドライバ４０２と同じデバイスドライバ）との間に配置される。発信データは、ＴＣＰ／ＩＰレイヤ５０４により処理された後、仮想接続レイヤ５０２により傍受される。着信データは、ＴＣＰ／ＩＰレイヤ５０４に渡される前に、仮想接続レイヤ５０２により傍受される。
【００２５】
図６は、本発明の一実施形態による仮想接続レイヤサービスを実装するのに適している仮想接続モジュールの例を説明している。仮想接続モジュール６００は、ローカル接続変換テーブル６０４内の情報に基づいて通信接続を変換するように構成されているローカル接続変換（ＬＣＴ）コンポーネント６０２を備える。接続管理コンポーネント６０６は、ローカル接続変換テーブル６０４内のエントリとリモートピア（つまり、図２のリモートコンピュータ２１４）の対応するエントリとの同期をとるように構成されている。ピアネゴシエーションコンポーネント（ｐｅｅｒ  ｎｅｇｏｔｉａｔｉｏｎ  ｃｏｍｐｏｎｅｎｔ）６０８は、仮想接続プリファレンスをピアとやり取りするだけでなく、ピア側で送信した仮想接続プロトコルメッセージの認証の基準についてもネゴシエーションする。
【００２６】
仮想接続モジュール６００は、仮想接続サブスクライブ−通知サービス（ＶＣ  ＳＮＳ）プロキシコンポーネント６１０を備えることができ、このコンポーネントは、リモートの仮想接続サブスクライブ−通知サービス（図６には示されていないが、図１０に関して以下で説明する）へのローカルプロキシとしての役割を果たす。例えば、ローカルコンポーネント６１０により使用される特定のリモート仮想接続サブスクライブ−通知サービスは、動的ホスト構成プロトコル（ＤＨＣＰ）を介して構成することができる。図６に示されている例では、ＶＣ  ＳＮＳプロキシ６１０はユーザモードで実行されるが、仮想接続モジュール６００の残りのコンポーネントはカーネルモードで実行される。破線６１２は、実行中の仮想接続モジュール６００内のカーネルモードとユーザモードとの境界を示している。コンピュータのオペレーティングシステムとの関連でカーネルモードとユーザモードを使用することは、当技術分野において周知のため、本明細書で詳しく説明する必要はない。
【００２７】
ローカル接続変換テーブル６０４は、アクティブなピア間の通信接続各々に対するエントリを含む。本発明の一実施形態では、通信接続の確立時にエントリが追加され、および通信接続の終了時にエントリが削除される。ローカル接続変換テーブル６０４内の各エントリは、元の接続指定を現在の接続指定に関連付ける。接続指定は、１つまたは複数の通信接続パラメータを含み、および１つの特定のネットワークプロトコルレイヤまたは一組のネットワークプロトコルレイヤに対する通信接続を一意に識別することができる。本発明の一実施形態では、元の接続指定各々と現在の接続指定との間に一対一の関係がある。
【００２８】
接続指定では、接続に参加している各ピアのネットワーク接続ポイント識別子（ネットワークアドレス）、例えば、ＩＰネットワーク内のＩＰアドレス、ＴＣＰ／ＩＰネットワーク内のＩＰアドレスおよびＴＣＰポート、またはＵＤＰ／ＩＰネットワーク内のＩＰアドレスおよびＵＤＰポートを含むことができる。本発明の一実施形態では、アクティブな通信接続に参加しているピアのいずれもネットワーク接続ポイントを変更していない場合、対応するエントリの現在の接続指定は元の接続指定と同じである。しかし、ピアの１つまたは複数が移動した（つまり、ネットワーク接続ポイント変更した）場合、現在の接続指定は更新される。本発明の一実施形態では、元の接続指定は、通信接続の存続期間中変更されることがない。
【００２９】
以下の表１は、ＴＣＰおよびＵＤＰなどの上位レイヤプロトコルをサポートするＩＰベースのコンピュータネットワークの接続指定の一例である。
【００３０】
【表１】
0004633395.tif 000002
【００３１】
表１は、ローカルピアのＩＰネットワーク接続ポイントを識別するローカルＩＰアドレスおよびローカルピアの上位レイヤプロトコルポートを識別するローカルポート番号を含む。ローカルピアは、複数の通信接続に参加することができる。各通信接続は、ポート番号に関連付けることができる。同様に、表１は、リモートＩＰアドレスおよびリモートポート番号もさらに含む。上位レイヤプロトコルタイプは、ＩＰネットワークにより経路指定される上位レイヤプロトコルのタイプ、例えば、ＴＣＰまたはＵＤＰを示す。本発明の一実施形態では、ローカルＩＰアドレスおよびリモートＩＰアドレス、上位レイヤプロトコルタイプ、ローカルポート番号、ならびにリモートポート番号の組合せにより、通信接続を指定する。
【００３２】
仮想接続モジュール６００は、アウトバウンドデータストリーム内の各発信ネットワークプロトコルユニット（例えば、ＩＰデータグラム）およびインバウンドデータストリーム内の各着信ネットワークプロトコルユニットを傍受することができる。本発明の一実施形態では、仮想接続モジュール６００によって傍受される発信ネットワークプロトコルユニット毎に、ローカル接続変換コンポーネント６０２は、発信ネットワークプロトコルユニットに関連する接続指定を元の接続指定から現在の接続指定に変換する。さらに、仮想接続モジュール６００によって傍受される着信ネットワークプロトコルユニット毎に、ローカル接続変換コンポーネント６０２は、着信ネットワークプロトコルユニットに関連する接続指定を現在の接続指定から元の接続指定に変換する。変換操作の一例を、ＩＰベースのネットワークに関して図７に示している。
【００３３】
図７において、ローカル接続変換テーブル６０４は、現在の接続指定７０４に関連付けられる元の接続指定７０２を含む。元の接続指定ＩＰ１：ＩＰ２のうちの一方は、ローカルＩＰアドレスＩＰ１およびリモートＩＰアドレスＩＰ２を含む、つまり、アクティブな接続が最初に確立されたときに、ローカルコンピュータはＩＰネットワークにアドレスＩＰ１で接続され、およびリモートコンピュータはＩＰネットワークにアドレスＩＰ２で接続されたということである。接続の続いている間のある時点において、リモートコンピュータは、そのＩＰネットワーク接続ポイントをアドレスＩＰ３に変更しており、その結果、現在の接続指定ＩＰ１：ＩＰ３は元の接続指定ＩＰ１：ＩＰ２と異なる。現在の接続指定ＩＰ１：ＩＰ３は、同じローカルＩＰアドレスＩＰ１を持つが、リモートＩＰアドレスＩＰ３は元のリモートＩＰアドレスＩＰ２から変更されている。リモートポート番号も、同様に、変更できるが、この詳細は、図７に示さない。
【００３４】
発信プロトコルユニット７０６は、仮想接続モジュール６００により傍受され（図６）、変換のためローカル接続変換コンポーネント６０２にサブミットされる。各プロトコルユニット７０６、７０８、７１０、７１２は、ＩＰデータグラム、ＴＣＰデータグラム、ＵＤＰデータグラムなどとすることができる。各プロトコルユニット７０６、７０８、７１０、７１２は、送信元（ｆｒｏｍ）ＩＰアドレスおよび送信先（ｔｏ）ＩＰアドレスに関連付けられる。ＩＰアドレスは、例えば、ＩＰデータグラムの場合には、プロトコルユニットに組み込むか、または、プロトコルユニットのコンテキストの一部、例えば、下位プロトコルレイヤから解析され、データストリーム内の前のプロトコルユニットから解析され、上位プロトコルレイヤにより明示的に指定されているコンテキストデータ、またはオペレーティングシステム環境の一部とすることができる。
【００３５】
ローカル接続変換コンポーネント６０２は、発信プロトコルユニット７０６の接続指定を決定する。発信プロトコルユニット７０６については、これは、元の接続指定ＩＰ１：ＩＰ２に対応する。その後、ローカル接続変換コンポーネント６０２は、ローカル接続変換テーブル６０４のルックアップを実行し（よく知られている手法を使用して）、この場合、現在の接続指定ＩＰ１：ＩＰ３である対応する現在の接続指定を見つける。ローカル接続変換コンポーネント６０２は、（適宜、プロトコルユニットまたはプロトコルユニットのコンテキストの中の）プロトコルユニット７０６のＩＰアドレスおよび他の接続指定の関連付けを現在の接続指定ＩＰ１：ＩＰ３からのデータで置き換え、変換された発信プロトコルユニット７０８を得る。
【００３６】
同様に、着信プロトコルユニット７１０は、仮想接続モジュールにより傍受され、変換のためにローカル接続変換モジュール６０２にサブミットされる。ローカル接続変換モジュールは、着信プロトコルユニット７１０が、現在の接続指定ＩＰ１：ＩＰ３に関連付けられていると判定し、ローカル接続変換テーブル６０４のルックアップを実行して対応する元の接続指定ＩＰ１：ＩＰ２を見つけてから、プロトコルユニット７１０の接続指定関連付けを置き換えて、変換された着信プロトコルユニット７１２を出力し、これを上位のプロトコルレイヤに渡す。本発明の一実施形態では、上位プロトコルレイヤおよび特にアプリケーションは、元の接続指定に対応する接続指定情報を見るが、下位プロトコルレイヤは、現在の接続指定に対応する接続指定情報を見る。
【００３７】
図６に戻ると、本発明の一実施形態では、ローカルピア（つまり、ローカル接続変換テーブル６０４が常駐するピア）が移動する、またはリモートピアが移動するので、現在の接続指定を更新することができる。本発明の一実施形態では、接続に参加しているそれぞれのピアは各自の仮想接続モジュール６００を持ち、したがって各自のローカル接続変換（ＬＣＴ）テーブル６０４を持つ。接続に参加しているピアの１つが移動する場合、本発明の一実施形態では、対応する現在の接続指定は、各参加するピアにおいて更新される。仮想接続モジュール６００は、ネットワーク接続ポイントのローカルでの変更を検出することができるか、または他のローカルモジュール、例えば、変更を開始したローカルモジュールによりローカルの変更の知らせを受けることができる。ローカルで変更が検出されれば、まず、ローカルＬＣＴテーブル６０４が更新される。以下の表２は、ＩＰベースのネットワークに対するローカルＬＣＴテーブルの一部の更新例を示す。
【００３８】
【表２】
0004633395.tif 000003
【００３９】
この表に掲載されている更新例では、アクティブなＴＣＰ／ＩＰ接続は、ＩＰアドレスＩＰ２を持つローカルピアとＩＰアドレスＩＰ１を持つリモートピアとの間に存在する。この例では、接続指定は、ローカルピアのＩＰアドレスおよびポート番号（元々はＩＰ２とポート２）、リモートピアのＩＰアドレスおよびポート番号（つまり、ＩＰ１とポート１）、ならびに上位レイヤプロトコルタイプ（つまり、ＴＣＰ）を含む５つ組である。ローカルピアは、そのネットワーク接続ポイントを変更し、そのＩＰアドレスおよびポート番号がＩＰ３およびポート３になるようにする。変更前には、元の接続指定および現在の接続指定は、同じであり、つまり、５つ組（ＩＰ２、ポート２、ＩＰ１、ポート１、ＴＣＰ）である。変更後には、元の接続指定は同じであるが、現在の接続指定は、新しいＩＰネットワーク接続ポイントに更新され、つまり、今では、新しい５つ組（ＩＰ３、ポート３、ＩＰ１、ポート１、ＴＣＰ）である。
【００４０】
本発明の一実施形態では、リモートピアでアクティブな接続テーブル６０４を更新するために、ローカル接続管理コンポーネント６０６にローカルネットワーク接続ポイントの変更を知らせる。ローカル接続管理コンポーネント６０６は、接続更新（Ｃｏｎｎｅｃｔｉｏｎ  Ｕｐｄａｔｅ）（ＣＵ）、接続更新応答（Ｃｏｎｎｅｃｔｉｏｎ  Ｕｐｄａｔｅ  Ａｃｋｎｏｗｌｅｄｇｅ）（ＣＵＡ）、および接続更新要求（Ｃｏｎｆｅｃｔｉｏｎ  Ｕｐｄａｔｅ  Ｒｅｑｕｅｓｔ）（ＣＵＲ）などの少なくとも３つの仮想接続メッセージでリモート接続管理コンポーネントと通信することができる。
【００４１】
ＣＵメッセージは、通信接続に参加しているリモートピアに対して変更が生じたピアから変更された接続指定情報を伝えることができる。本発明の一実施形態では、ピアがネットワーク接続ポイントを変更したときに、ピアはＣＵメッセージを、通信接続がアクティブになっている各ピアに送信する。ＣＵメッセージを受信したことに肯定応答するため、ＣＵメッセージに応えてＣＵＡメッセージを返信することができる。ＣＵＡメッセージは、ＣＵメッセージと同じ情報を含むことができる。例えば、ネットワーク接続ポイントを変更したが、ピアにＣＵメッセージを送信していなかったという通知をピアが受けたとき、ＣＵＲメッセージを、ＣＵメッセージを要求するピアが送信することができる。
【００４２】
図８は、ピアの１つがＩＰネットワーク接続ポイントを変更するとき、ＩＰベースの通信接続を維持するためのピアと、仮想接続メッセージを交換する仮想接続モジュールとの通信例を示している。図８では、ピアＡ  ８０２は、ＩＰネットワーク上でピアＢ  ８０４とのアクティブな通信接続を有する。ピアＡ  ８０２は、ＩＰネットワークにＩＰアドレスＩＰ１で接続され、ピアＢ  ８０４は、元々ＩＰネットワークにＩＰアドレスＩＰ２で接続されている。接続の期間中、ピアＢ  ８０４はＩＰネットワーク接続ポイントをＩＰアドレスＩＰ３に変更する。この変更は、ピアＢ  ８０４がピアＢ  ８０６に移動している（破線矢印で示されている）ときの状況について図８に概略が示されている。
【００４３】
移動の後、ピアＢ  ８０６は上述のようにそのローカルＬＣＴテーブルを更新し、その後、ＣＵメッセージ８０８をピアＡ  ８０２に送信する。移動した後、ピアＡ  ８０２がＣＵメッセージ８０８を受信するまで、ピアＡ  ８０２はピアＢ  ８０６の新しいＩＰネットワーク接続ポイントを認識しないので、ピアＢ  ８０６と通信することができない場合がある。ＣＵメッセージ８０８は、ピアＢ  ８０６の新しいネットワーク接続ポイント、例えば、新しいＩＰアドレスＩＰ３および新しいポート番号ポート３を識別する情報を含む。さらに、ＣＵメッセージ８０８は、元の接続を参照する情報、例えば、元のＩＰアドレスＩＰ２およびポート番号ポート２、元の接続指定、または元の接続に対応する接続トークンなどの元の接続識別子を含む。例えば、適当な接続トークンとして、元の接続指定、または通信ピアの１つによって維持されているような接続カウントの暗号化ハッシュとすることができる。
【００４４】
ピアＡ  ８０２の仮想接続モジュールがＣＵメッセージ８０８を受け取った後、ＣＵメッセージ８０８は接続管理コンポーネント（例えば、図６の接続管理コンポーネント６０６）および決定された対応する元の接続指定により解析される。例えば、ＣＵメッセージ８０８は、元の接続指定を含むか、または元の接続指定をローカル（ピアＡ  ８０２に対して）コンテキストと組み合わせて再構成できる十分な情報を含むか、またはＣＵメッセージ８０８に元の接続トークンが含まれる場合には、接続トークンを接続指定に関連付けるテーブル（または類似のデータ構造）のルックアップを実行することにより元の接続指定を決定することがきできる。元の接続指定を保持していれば、ローカル接続変換テーブル（例えば、図６のローカル接続変換テーブル６０４）の中の対応する現在の接続指定を更新することができる。以下の表は、ピアＡ  ８０２の更新の様々な側面を示している。
【００４５】
【表３】
0004633395.tif 000004
【００４６】
ピアＢ  ８０４が移動する前に、元の接続指定と現在の接続指定は両方とも同じ５つ組である、つまり、ピアＡ  ８０２のＩＰアドレスおよびポート番号（つまり、ＩＰ１およびポート１）、ピアＢ  ８０４のＩＰアドレスおよびポート番号（つまり、ＩＰ２およびポート２）、および上位レイヤプロトコルタイプ、この場合にはＴＣＰである。ピアＢ  ８０４が移動した後、現在の接続指定は、ピアＢの新しいネットワーク接続ポイントに関して更新され（つまり、ＩＰ２およびポート２はＩＰ３およびポート３になり）、現在の接続指定５つ組は（ＩＰ１、ポート１、ＩＰ３、ポート３、ＴＣＰ）となる。元を接続指定は、移動の影響を受けない。
【００４７】
ＣＵメッセージ８０８に対する応答として、ピアＡ  ８０２はＣＵＡメッセージ８１０をピアＢ  ８０６に送信する。ＣＵＡメッセージ８１０は、ピアＡ  ８０２において成功したこと、またはその他の接続更新操作をピアＢ  ８０６に通知することができる。ＣＵＡメッセージ８１０を受信した後、ピアＡ  ８０２およびピアＢ  ８０６はもう一度、ＩＰベースの交信に入る。さらに、本発明の一実施形態では、仮想接続レイヤの上にあるプロトコルおよびアプリケーションレイヤは、ピアＢ  ８０６のＩＰネットワーク接続ポイントの変更を認識しない。
【００４８】
図８でピアＢ  ８０６がピアＡ  ８０２に送信するＣＵメッセージ８０８だけでなく、ピアＢ  ８０６は、ＣＵメッセージ８１２を仮想接続サブスクライブ−通知サービス（ＶＣ  ＳＮＳ）８１４にも送信する。本発明の一実施形態による仮想接続サブスクライブ−通知サービスについて、図１０を参照しながら以下で説明する。
【００４９】
図９は、図８の仮想接続メッセージの順序例を示している。図９を参照すると、ピアＢ  ８０６はまず、ＣＵメッセージ８１２を仮想接続サブスクライブ−通知サービス８１４に送信する。それと同時に（実用上）、ピアＢ  ８０６はＣｏｎｎｅｃｔ  Ｕｐｄａｔｅメッセージ８０８をピアＡ  ８０２に送信する。その応答として、ピアＡ  ８０２は、ＣＵＡメッセージ８１０をピアＢ  ８０６に送信する。ＣＵメッセージ８０８およびＣＵＡメッセージ８１０は、２つのピアの間の通信接続を更新するため、仮想接続プロトコルを完成させるのに適する仮想接続メッセージペアの一例である。図８および図９に示されている例は、あまり複雑でない仮想接続メッセージプロトコルの例の１つである。ここでは、以下の例と対比して詳しく説明している。
【００５０】
図８に示されている例から先へ進む前に、ローカル接続変換テーブルを更新するときに生じると思われる特別なケースについての説明は有益であろう。ピアＢが一方のネットワーク接続ポイント（ＩＰ２、ポート２）から他方の（ＩＰ３、ポート３）に移動した後、元のネットワーク接続ポイントをピアＢにより放棄することができる。一方のピアによって放棄されたネットワーク接続ポイントは、他のピアによって請求されるか、または他のピアに再度割り当てられ、例えば、ＩＰｖ４ネットワークサービスプロバイダは、プールから通信ピアにＩＰｖ４アドレスを割り当て、その後、ピアがＩＰｖ４アドレスを放棄するかまたは解放したときに再割り当てのためＩＰｖ４アドレスをプールに返すことにより、ＩＰｖ４アドレスのプールを管理することができる。ピアＢが移動した後にピアＣ（図８に示されていない）がネットワークに接続した場合、ピアＣはピアＢによって放棄されたネットワーク接続ポイントを占有することができる。その後、ピアＡがまだピアＢとのアクティブな通信接続を保っている間、ピアＣがピアＡと通信接続を確立した場合、ローカル接続変換テーブル内にコンフリクトが発生することがある。以下の表４は、ピアＡでのローカル接続変換テーブルに関する複数の側面を示している。
【００５１】
【表４】
0004633395.tif 000005
【００５２】
表４は、ピアＡのネットワーク接続ポイント（ＩＰ１、ポート１）、ピアＢの元のネットワーク接続ポイント（ＩＰ２、ポート２）、および上位レイヤプロトコルＴＣＰを含む元の接続指定を伴う、第１のローカル接続変換テーブルエントリを示している。第１のエントリに対する現在の接続指定は、ピアＢがネットワーク接続ポイントを（ＩＰ３、ポート３）に変更していることを示している。つまり、第１のエントリは図８に例示されているシナリオに対応している。表４は、ピアＡのネットワーク接続ポイント（ＩＰ１、ポート１）からピアＣのネットワーク接続ポイント（ＩＰＣ、ポートＣ）へのＴＣＰ／ＩＰ接続として指定する元の接続を伴う、第２のローカル接続変換テーブルエントリを示している。対応する現在の接続指定は同じである。
【００５３】
仮にＩＰＣがＩＰ２と同じであり、ポートＣがポート２と同じであれば、ローカル接続変換テーブル内の第１および第２のエントリは同じ元の接続指定を持ち、つまり、コンフリクトしている可能性がある。この例では、ピアＣから（ＩＰ１、ポートＡ）への接続をローカルで再接続することにより、ピアＡでコンフリクトを避けることができるが、ただし、接続を受け入れる前は、ポートＡはポート１と異なる。非ＩＰベースのコンピュータネットワークについても同様の戦略を採用することができる。元の接続指定と現在の接続指定との間の一対一の関係を確実なものとするため、現在の接続指定に関して類似のコンフリクトチェックおよびアクションが必要になることがある。
【００５４】
ＣＵメッセージを生成できる悪意あるピアは、仮想接続機能を使用するピアに大混乱を引き起こせる場合がある。接続更新を防止するために、本発明の一実施形態では、それぞれの仮想接続メッセージは、信頼できるピアからとしてメッセージを認証する暗号化した署名を含むことができる。認証の基礎を確立するために、仮想接続モジュールを組み込むピアは、通信接続を確立するときに一連の仮想接続メッセージを交換することができる。例えば、ピアは、楕円曲線Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ公開鍵交換方式を使用して、暗号化認証の基礎を確立することができる。このような方式および他のそのような好適な方式は、当技術分野において周知のため、本明細書でさらに詳しい説明をする必要はない。暗号化認証の基礎は、必要ならばメッセージ暗号化にも使用できる。
【００５５】
例えば、通信接続を確立する際に送受信される一連の仮想接続メッセージ（ピアネゴシエーションメッセージ）は、図６のピアネゴシエーションコンポーネント６０８により処理することができる。ピアネゴシエーションメッセージと共にピアにより交換される他の情報としては、ピアが知るピアのネットワーク接続ポイント、特定のピアが移動できるかどうかを示す情報、および特定のピアの処理能力を示す情報などを含むことができる。ピアのネットワーク接続ポイントを利用し、後述のようにピアがネットワークアドレス変換（ＮＡＴ）の背後にあるか判別することができる。例えば、ピアの処理能力は、通信接続を確保するピアにより選択された暗号化認証方式に影響を及ぼす場合がある。
【００５６】
本発明の一実施形態では、仮想接続サブスクライブ−通知サービスにより、通信ピアが、ピアネットワーク接続ポイント変更イベントへのサブスクライブと、ネットワーク接続ポイント変更イベントのパブリッシュと、サブスクライブされ、パブリッシュされたネットワーク接続ポイント変更イベントの通知の受信とを行うことができる。サブスクライブ−通知サービス（またはパブリッシュ−サブスクライブサービス）は、当技術分野において周知であり、したがって、詳細の一部のみをここで説明する。
【００５７】
本発明の一実施形態では、ネットワーク接続ポイント変更イベントは、ピアがそのネットワーク接続ポイントを変更したとき、例えば、図８のピアＢが第１のネットワーク接続ポイント（ＩＰ２、ポート２）から第２のネットワーク接続ポイント（ＩＰ３、ポート３）に移動したときに発生する。ネットワーク接続ポイント変更イベントへのサブスクライブには、サブスクライブするピアから仮想接続サブスクライブ−通知サービスへのサブスクライブメッセージの送信を含むことができる。サブスクライブメッセージでは、例えば、サブスクライブするピアがアクティブな通信の相手であるピアに接続している特定のネットワーク接続ポイントを指定することができる。サブスクライブメッセージは、さらに、仮想接続サブスクライブ−通知サービスがサブスクリプションと一致するイベントの通知を送信することができる通知アドレスも含むことができる。ネットワーク接続ポイント変更イベントのパブリッシュには、特定のピアによる第１の（前のまたは元の）ネットワーク接続ポイントから第２の（または現在の）ネットワーク接続ポイントへのネットワーク接続ポイントの変更を特定する仮想接続サブスクライブ−通知サービスに、イベントが発生するピアからのパブリッシュメッセージの送信も含むことができる。ＣＵメッセージは、適当なパブリッシュメッセージの一例である。
【００５８】
パブリッシュメッセージへの応答として、仮想接続サブスクライブ−通知サービスは、各サブスクリプションをチェックし、および通知メッセージをそのパブリッシュされたイベントと一致するサブスクリプションの通知アドレスに送信することができる。通知メッセージは、例えば、通知されるピアが移動したピアにＣＵＲメッセージを送信できるように、移動したピアの現在のネットワーク接続ポイントを含むことができる。通知メッセージは、移動したピアによってパブリッシュされたＣＵメッセージのコピーを含むことができる。本発明の一実施形態では、サブスクリプションは、イベントをパブリッシュしたピアの移動元のネットワーク接続ポイントをサブスクリプションで指定した場合、つまり、パブリッシュするピアの、元のネットワーク接続ポイントをサブスクリプションで指定した場合に、パブリッシュされたネットワーク接続ポイント変更イベントと一致する。これに替わる実施形態では、ネットワーク接続ポイント変更イベントとネットワーク接続ポイント変更イベントサブスクリプションとの照合には、後述の追加ステップおよび／または基準が必要になる場合がある。
【００５９】
図１０は、本発明の一実施形態によるモジュール型仮想接続サブスクライブ−通知サービスアーキテクチャの例を示している。仮想接続サブスクライブ−通知サービス１０００は、ピア（例えば、図８のピアＡ  ８０２およびピアＢ  ８０４）からサブスクライブメッセージ１００４を受け取り、および解析し、その後、対応するサブスクリプション１００６をサブスクリプションデータベース１００８に格納するサブスクライブモジュール１００２を含む。パブリッシュモジュール１０１０は、ピアからパブリッシュメッセージ１０１２を受け取り、および解析し、解析されたネットワーク接続ポイント変更イベント１０１４を照合モジュール１０１６にサブミットする。照合モジュール１０１６では、サブスクリプションデータベース１００８において各ネットワーク接続ポイント変更イベント１０１４と一致するサブスクリプションを検索し、および一致しているサブスクリプション１０１８のリストを通知モジュール１０２０にサブミットする。通知モジュール１０２０は、通知メッセージ１０２２を生成し、およびリスト１０１８に記載されている、一致するサブスクリプションの通知アドレスに送信する。
【００６０】
１つまたは複数の仮想接続サブスクライブ−通知サービスは、仮想接続機能を組み込んだコンピュータネットワーク内のＣＵメッセージの単独の発信源となることが可能である。しかし、本発明の一実施形態では、移動するピアにＣＵメッセージを可能な限り直接、通信ピアに送信させるポリシーを実装し、および仮想接続サブスクライブ−通知サービスの役割を、ＣＵメッセージを直接送信する（「直接接続更新」）ことが可能でない状況に予約することにより拡張性を高めることができる。直接接続更新が可能でない状況の例としては、通信接続に加わっている複数の当事者が同時に移動する場合、および移動するピアがネットワークアドレス変換（ＮＡＴ）の背後にいるピアと通信している場合などがある。
【００６１】
図１１は、図８に示されている例を拡張し、通信接続に関する複数の当事者が同時に移動するときに仮想接続サブスクライブ−通知サービス８１４が果たす役割を例示している。図８と同様、図１１のピアＡ  ８０２は、ＩＰネットワーク上のピアＢ  ８０４とのアクティブな通信接続を有する。図１１には明示的に示されていないが、ピアＡ  ８０２およびピアＢ  ８０４は、互いのネットワーク接続ポイントの変更にサブスクライブしている。つまり、ピアＡ  ８０２は、ＩＰ２で接続されているピア（つまり、ピアＢ  ８０４）のネットワーク接続ポイント変更にサブスクライブするサブスクライブメッセージを仮想接続サブスクライブ−通知サービス８１４に送信しており、また同様に、ピアＢ  ８０４はＩＰ１で接続されているピア（つまり、ピアＡ  ８０２）により生成されたネットワーク接続ポイント変更にサブスクライブするサブスクライブメッセージを仮想接続サブスクライブ−通知サービス８１４に送信している。
【００６２】
図８をもう一度見ると、ピアＢ  ８０４は、ネットワーク接続ポイントを変更し、ＣＵメッセージ８１２を仮想接続サブスクライブ−通知サービス８１４に送信することによりそのネットワーク接続ポイント変更イベントをパブリッシュし、ピアＡ  ８０２にＣＵメッセージを送信することによりピアＡ  ８０２との接続を直接更新しようと試みる（図１１には示されていない）。しかし、図１１では、ピアＡ  ８０２は同時に（例えば、ピアＡ  ８０２がピアＢ  ８０６からＣＵメッセージを受信する前に）、そのＩＰネットワーク接続ポイントをＩＰアドレスＩＰ１からＩＰアドレスＩＰ４に変更している、つまり、ピアＡ  ８０２はピアＡ  １１０２に移動している。本発明の一実施形態により、移動したピアＡ  １１０２は、ＣＵメッセージ１１０４を仮想接続サブスクライブ−通知サービス８１４に送信することによりネットワーク接続ポイント変更イベントをパブリッシュし、その後、ピアＢ  ８０２にＣＵメッセージを送信することによりピアＢ  ８０２との接続を直接更新しようと試みる（また図１１には示されていない）。
【００６３】
ピアは両者共に（ピアＡ  ８０２、ピアＢ  ８０４）移動しているため、いずれの直接接続更新も成功しない。ピアＡ  １１０２およびピアＢ  ８０６は、補助なしでは通信を続行できない場合がある。本発明の一実施形態では、仮想接続サブスクライブ−通知サービス８１４は、両ピア（ピアＡ  ８０２、ピアＢ  ８０４）の同時移動を検出し、ピアの少なくとも一方に他方が移動したことを通知するという形で補助する。仮想接続サブスクライブ−通知サービス８１４は、例えば、構成可能な期間内に（例えば、１秒以内に）それぞれのピアがネットワーク接続ポイント変更イベントを仮想接続サブスクライブ−通知サービス８１４にパブリッシュした場合に２つのピアが同時に移動したと判別することができる。
【００６４】
図１１に示されている例では、仮想接続サブスクライブ−通知サービス８１４は、ＣＵメッセージ１１０４および時間的に近すぎて直接接続更新を実行できなかったＣＵメッセージ８１２を受け取り、ピアＡ  ８０２およびピアＢ  ８０４が同時に移動したと判断する。その結果、仮想接続サブスクライブ通知サービス８１４は、通知メッセージ１００６をピアＢ  ８０６に送信し、ピアＡ  ８０２のネットワーク接続ポイントが変更されたことをピアＢ  ８０６に通知する。通知メッセージ１１０６は、ピアＢ  ８０６が対応する元の接続指定および現在の接続指定、例えば、ピアＡ  １１０２の元のＩＰアドレスＩＰ１および現在のＩＰアドレスＩＰ４を判別するために使用できる情報を含む。
【００６５】
通知メッセージ１１０６を受け取った結果として、ピアＢ  ８０６はピアＡ  １１０２の現在のネットワーク接続ポイントを判別することができる。ピアＢ  ８０６とピアＡ  １１０２との間の接続を更新するために、ピアＢ  ８０６はＣＵ（ＣＵ）メッセージ１１０８をピアＡ  １１０２に送信し、本発明の一実施形態により、Ｐｅｅｒ  Ａ  １１０２はＣＵＡ（ＣＵＡ）メッセージ１１１０で応答する。ＡおよびＢでのローカル接続変換テーブル更新が正常に完了した後、ピアＡ  １１０２とピアＢ  ８０６との通信接続は更新されている。
【００６６】
図１２は、図１１の仮想接続メッセージの順序例を示している。図１２を参照すると、ピアＢ  ８０６はまず、ＣＵメッセージ８１２を、ピアＡ  １１０２は、ＣＵメッセージ１１０４を仮想接続サブスクライブ−通知サービス８１４に送信する。ＣＵメッセージ８１２、１１０４は、相次いで仮想接続サブスクライブ−通知サービス８１４に届き、ピアＡ  １１０２およびピアＢ  ８０６が同時に移動した可能性のあることを仮想接続サブスクライブ−通知サービス８１４に警告する。ピア１１０２、８０６が通信できなくなるのを防止するために、仮想接続サブスクライブ−通知サービス８１４は通知メッセージ１１０６をピアＢ  ８０６に送信する。もちろん、ＣＵメッセージ１１０４は、同じ結果となるＣＵメッセージ８１２の前に到着する場合があり、図１１を参照して説明している例に関しては、通知メッセージをピアＡ  １１０２、ピアＢ  ８０６、またはその両者に送信することができる。
【００６７】
ピアＢ  ８０６が通知メッセージ１１０６を受信すると、ピアＢ  ８０６は、ＣＵメッセージ１１０８をピアＡ  １１０２に送信するよう求められる。ＣＵメッセージ１１１０に対する応答として、ピアＡ  １１０２はＣＵＡメッセージ１１１０をピアＢ  ８０６に送信し、このシーケンスは完了する。
【００６８】
ＮＡＴがない場合、かつ／またはピアがＮＡＴの背後にないことが知られている場合、コンピュータネットワークでは、通知メッセージ１１０６はＣＵメッセージ１１０８として使用することができ、また応答としてピアＡ  １１０２に送信されたＣＵＡ  １１１０で接続更新が完了するので、ＣＵメッセージ１１０８は余分である。ＮＡＴを使用するコンピュータネットワークでは、ＣＵＲメッセージ（図１２には示されていない）は後述のように有益な役割を果たす。
【００６９】
ネットワークアドレス変換（ＮＡＴ）は、当技術分野において周知であり、したがって、その特徴の一部のみをここで説明する。いくつかのコンピュータネットワークでは、それぞれのネットワーク接続ポイントはネットワークアドレスに関連付けられており、例えば、ＩＰネットワークでは、各ＩＰネットワーク接続ポイントはＩＰアドレスに関連付けることができる。ネットワークアドレスは、通常、サイズが限られており、例えば、ＩＰｖ４ネットワークでは、ネットワークアドレスは３２ビットに制限されている。一組のネットワークアドレスをアドレス空間と考えることができる。ネットワークアドレスのサイズが制限されているネットワークでは、ネットワークアドレスが不足する可能性がある、つまり、ネットワークアドレス空間でサポートする以上の数のネットワーク接続ポイントが望まれる可能性がある。ＮＡＴは、新しいアドレス空間を既存のアドレス空間に、例えば、既存のアドレス空間内の単一ネットワークアドレスで接続する一手段となっている。ＮＡＴメカニズムの詳細については、非特許文献３を参照のこと。
【００７０】
この説明では、例えば、既存のアドレス空間をパブリックアドレス空間と呼び、図８を参照して説明されている例が示されており、ＮＡＴによりパブリックアドレス空間に接続されているアドレス空間をプライベートアドレス空間と呼ぶ。プライベートアドレス空間内のピア（つまり、プライベートネットワークアドレスに関連付けられているネットワーク接続ポイントを持つピア）は、パブリックアドレス空間内のピア（つまり、パブリックネットワークアドレスに関連付けられているネットワーク接続ポイントを持つピア）に対してＮＡＴの背後にあるといわれる。
【００７１】
本発明の一実施形態では、ＮＡＴを組み込んでいるコンピュータネットワークの特徴は、パブリックアドレス空間内のピア（パブリックピア）は、プライベートピアが最初にパブリックピアとコンタクトをとっていない限り、プライベートアドレス空間内のピア（プライベートピア）と通信することはできないという点である。さらに、新しいネットワークアドレスを持つ新しいネットワーク接続ポイントに移動するピアが、ＮＡＴ機構から見て、異なるピアであるように見えるようにするため、ＮＡＴメカニズムが、ネットワークアドレスによりピアを識別することは、一般的な方法である。そのような場合、移動したパブリックピアはＣＵメッセージを直接プライベートピアに送信することはできない。本発明の一実施形態では、仮想接続サブスクライブ−通知サービスは、接続更新を円滑にすることができる。
【００７２】
図１３は、図８を参照して説明している例の一変種を示しており、ＮＡＴを組み込んだコンピュータネットワーク内の仮想接続サブスクライブ−通知サービス８１４の果たす役割を例示している。図１３では、ＩＰベースのネットワーク上でピアＡ  １３０２は、ピアＢ  ８０４との通信接続を持つ。ピアＡ  １３０２は、破線で示されているＮＡＴ  １３０４の背後にある。ピアＡ  １３０２は、それに関連付けられている少なくとも２つのＩＰアドレス、ＮＡＴ  １３０４の背後にあるプライベートアドレス空間におけるＩＰアドレスＩＰＡと、パブリックアドレス空間におけるＩＰアドレスＩＰＮＡＴとを持つ。図１３に示されている例では、ピアＡ  １３０２は、移動しない。ピアＢ  ８０４は、最初に、パブリックアドレス空間内のＩＰアドレスＩＰ２に配置されており、その後、これもまたパブリックアドレス空間内のＩＰアドレスＩＰ３に移動する。
【００７３】
ピアＡ  １３０２は、サブスクライブメッセージ１３０６を仮想接続サブスクライブ通知サービス８１４に送信することによりピアＢ  ８０４がパブリッシュしたネットワーク接続ポイント変更イベントにサブスクライブする。サブスクライブメッセージ１３０６を送信することにより、プライベートピアＡ  １３０２は、仮想接続サブスクライブ−通知サービス８１４との通信接続も確立し、仮想接続サブスクライブ−通知サービス８１４が、後で、メッセージ、例えば通知メッセージ１３０８を送信することができる。本発明の一実施形態では、ピアＢ  ８０４は、ピアＡ  １３０２がプライベートネットワークアドレスに関連付けられていると判別することができる。ピアＢ  ８０４が、ピアＡ  １３０２がプライベートネットワークアドレスに関連付けられていると判別した場合、本発明の一実施形態では、ピアＢ  ８０４は、ピアＡ  １３０２のネットワーク接続ポイントの変更にサブスクライブしないが、それは、プライベートネットワーク接続ポイント変更イベント通知に基づいて、ピアＢ  ８０４がアクションを実行できない、つまり、ピアＡ  １３０２にＣＵメッセージを送信できないからである。
【００７４】
ＩＰアドレスＩＰ３に移動したピアＢ  ８０６は、ＣＵメッセージ８１２を仮想接続サブスクライブ−通知サービス８１４にパブリッシュする。ピアＢ  ８０６がＣＵメッセージ（図１３に示されていな）を直接ピアＡ  １３０２に送信しようとした場合、プライベートピアＡ  １３０２はまだピアＢ  ８０６とその新規ＩＰアドレスＩＰ３で接続していないので、この試行は失敗することがある。本発明の一実施形態では、ピアＢ  ８０６は、ピアＡ  １３０２とさらに通信する前に、ピアＡ  １３０２からの接続を待つ。
【００７５】
ＣＵメッセージ８１２を受信した結果、仮想接続サブスクライブ通知サービス８１４は、そのサブスクリプションデータベースを検索し、プライベートピアＡ  １３０２がピアＢ  ８０４ネットワーク接続ポイントの変更にサブスクライブしていると判別する。図１１を参照して説明している例とは対照的に、ピアＡ  １３０２がプライベートピアであると判別した場合、仮想接続サブスクライブ−通知サービス８１４は、できる限り早く、ピアＡ  １３０２に通知メッセージ１３０８を送信する。通知メッセージ１３０８により、ピアＡ  １３０２は、ＣＵＲメッセージ１３１０をピアＢ  ８０６のピアＢ  ８０６新規ＩＰアドレスＩＰ３に送信するよう求められる。ピアＡ  １３０２が最初にピアＢ  ８０６と接続すると、ピアＢ  ８０６はＣＵメッセージ１３１２でＣＵＲメッセージ１３１０に応えることができる。ピアＡ  １３０２がＣＵメッセージ１３１２を受け取ると、仮想接続の接続更新プロトコルが完了する。
【００７６】
図１４は、図１３を参照して説明されている仮想接続メッセージの順序例を示している。図１４を参照すると、ピアＡ  １３０２がピアＢ  ８０４との通信接続を確立した後すぐに、ピアＡ  １３０２は仮想接続サブスクライブ−通知サービス８１４に、ピアＢによってパブリッシュされたネットワーク接続ポイント変更イベントにサブスクライブするサブスクライブメッセージ１３０６を送信する。ピアＢ  ８０４はピアＢ  ８０６に移動し、ＣＵメッセージ８１２を仮想接続サブスクライブ−通知サービス８１４に送信することによりネットワーク接続ポイント変更イベントをパブリッシュする。その結果、ピアＡ  １３０２はプライベートである（つまり、プライベートピア）ため、仮想接続サブスクライブ−通知サービス８１４は、通知メッセージ１３０８を生成し、さらに遅れることなくピアＡ  １３０２に送信する。通知メッセージ１３０８を受け取った結果、ピアＡ  １３０２はＣＵＲメッセージ１３１０をピアＢ  ８０６のピアＢ  ８０６新規ＩＰアドレスＩＰ３に送信する。ピアＢ  ８０６はその要求に応えてＣＵメッセージ１３１２を送信する。ＣＵＲメッセージ１３１０およびＣＵメッセージ１３１２は、２つのピアの間の通信接続を更新するための仮想接続プロトコルを完了するのに適している仮想接続メッセージペアの一例である。
【００７７】
図１５は、図１３に示されている例を拡張し、通信接続の複数の当事者が同時に移動し、当事者の少なくとも一方がＮＡＴの背後にあるときに仮想接続サブスクライブ−通知サービス８１４が果たす役割を説明している。図１３に関して、図１５のプライベートピアＡ  １３０２は、ピアＢ  ８０４と通信接続を持っており、およびピアＡ  １３０２は、ピアＢ  ８０４によってパブリッシュされたネットワーク接続ポイント変更イベントにサブスクライブしている。ピアＢ  ８０４は、ネットワーク接続ポイントをＩＰアドレスＩＰ２からＩＰアドレスＩＰ３に変更し、移動すると、ピアＢ  ８０６は、ネットワーク接続ポイント変更をＣＵメッセージ８１２で仮想接続サブスクライブ−通知サービス８１４にパブリッシュする。
【００７８】
図１５では、ピアＡ  １３０２も、ネットワーク接続ポイントをプライベートＩＰアドレスＩＰＡからプライベートＩＰアドレスＩＰＡ'に変更する、つまり、ＮＡＴ  １３０４の背後にあるピアＡ  １３０２は、ＮＡＴ  １５０４の背後にあるピアＡ  １５０２に移動する。ＮＡＴ  １３０４は、ＮＡＴ  １５０４と同じでよいが、ＮＡＴ１５０４は、異なっていてもよく、つまり、ＩＰアドレスＩＰＡ'は、ＩＰアドレスＩＰＡと同じプライベートアドレス空間内にあってもよく、またはＩＰアドレスＩＰＡ'は、異なるプライベートアドレス空間、例えば、異なる組織によって管理されているプライベートアドレス空間にあってもよい。移動すると、プライベートピアＡ  １５０２は、仮想接続サブスクライブ−通知サービス８１４（パブリックアドレス空間内に配置されている）からだけでなくパブリックピアＢからもメッセージ（例えば、通知メッセージ）を受信できないことがある。しかし、ピアＡ  １５０２は、ＣＵメッセージ１５０６を仮想接続サブスクライブ通知サービス８１４に送信することによりネットワーク接続ポイント変更イベントをパブリッシュし、これにより、プライベートピアＡ  １５０２（新しいＩＰアドレスＩＰＡ'の）と仮想接続サブスクライブ−通知サービス８１４との間でＮＡＴ  １５０４を介して通信を再確立する。
【００７９】
この例では、ピアＢ  ８０６は、ピアＡ  １３０２がプライベートピアであると判別しており、したがってピアＢ  ８０６はＣＵメッセージを直接ピアＡ  １３０２に送信することを試みない。移動して、ピアＡ  １５０２は、ＣＵメッセージ（図１５に示されていない）を直接ピアＢ  ８０４に送信しようと試みるが、ピアＢ  ８０４も移動しており、その試みは失敗する。図１１を参照して説明した例に関して、仮想接続サブスクライブ通知サービス８１４からの通知メッセージで、仮想接続プロトコルを進行させることができる。図１１を参照して説明した例とは異なり、ピアＢ  ８０６への通知メッセージにより、パブリックピアＢ  ８０６がプライベートピアＡ  １５０２と接続することはできないが、代わりに、仮想接続サブスクライブ−通知サービス８１４は、ピアＢ  ８０６の新しいＩＰアドレスＩＰ３をピアＡ  １５０２に通知する通知メッセージ１５０８をピアＡ  １５０２に送信する。その後、プライベートピアＡ  １５０２は、ピアＢ  ８０６に、ＣＵメッセージ１５１０を送信し、ピアＢ  ８０６がＣＵＡメッセージ１５１２で応答できるようにし、およびピアＢ  ８０６にそのように要求する。
【００８０】
図１６は、図１５の仮想接続メッセージの順序例を示している。図１６を参照すると、ピアＢ  ８０６は、ＣＵメッセージ８１２を仮想接続サブスクライブ−通知サービス８１４に送信する。その後すぐに、ピアＡ  １５０２は、ＣＵメッセージ１５０６を仮想接続サブスクライブ−通知サービス８１４に送信する。ＣＵメッセージ８１２、１５０６を相次いで受信したことに対する応答として、仮想接続サブスクライブ−通知サービス８１４は通知メッセージ１５０８をピアＡ  １５０２に送信する。メッセージ１５０８に対する応答として、ピアＡ  １５０２はＣＵメッセージ１５１０をピアＢ  ８０６に送信する。ＣＵメッセージ１５１０の結果、応答としてピアＢ  ８０６によりＣＵＡメッセージ１５１２がピアＡ  １５０２に送信される。
【００８１】
様々なシナリオ例に関して仮想接続プロトコルの態様を説明してきたが、次に、本発明の一実施形態により仮想接続プロトコルメッセージを送信するときに仮想接続プロトコル参加者により使用される決定プロシージャの例を取りあげる。
【００８２】
図１７は、例えば、ローカルネットワーク接続ポイント（ＮＡＰ）変更イベントの結果として、接続管理コンポーネント６０６（図６の）により実行されるステップ例を示している。ステップ１７０２で、接続管理コンポーネント６０６は、ローカルネットワーク接続ポイント変更イベントが発生したことを検出する（または、イベントを通知する）。その結果、ステップ１７０４で、ＣＵメッセージを仮想接続サブスクライブ−通知サービスに送信することによりイベントがそのサービスにパブリッシュされる。ステップ１７０６で、接続管理コンポーネント６０６は、ローカル接続変換テーブル６０４内の次のエントリ、またはまだ何も選択されていなければ第１のエントリを選択する。ステップ１７０８で、選択されたローカル接続変換テーブル６０４のエントリが更新され、現在の接続指定は新しいローカルネットワーク接続ポイントに合致したものとなる。
【００８３】
リモートピアにおいて対応するＬＣＴテーブル６０４の更新を実行するために、プロシージャはステップ１７１０に進み、そこで、リモートピアがパブリックアドレス空間内にあるか、またはプライベートアドレス空間内にあるかが判別される。リモートピアがパブリックであると判別された場合、プロシージャはステップ１７１２に進む。ステップ１７１２で、ＣＵメッセージは、リモートピアに送信される。リモートピアがプライベートであると判別された場合、接続管理コンポーネント６０６は仮想接続サブスクライブ−通知サービスに依存し、リモートピアにネットワーク接続ポイント変更イベントを通知し、プロシージャはステップ１７１４に進む。ステップ１７１４で、このプロシージャでは、ローカル接続変換テーブル６０４内の各エントリが選択されているかどうかをチェックする。選択されていなければ、プロシージャはステップ１７０６に戻り、次のエントリを選択し、選択されていれば、このプロシージャ例は終了する。
【００８４】
図１８は、例えば、パブリッシュされたネットワーク接続ポイント変更イベントの結果として、（図１０の）仮想接続サブスクライブ−通知サービス１０００の照合モジュール１０１６により実行されるプロシージャ例を示している。ステップ１８０２で、照合モジュール１０１６は、特定のピア、この場合は、初期ＩＰアドレスＩＰ２である上の例のピアＢ  ８０４（例えば、図８を参照して説明されている例）に対するネットワーク接続ポイント変更イベントを受け取る。ステップ１８０４で、照合モジュール１０１６は、サブスクリプションデータベース１００８内の次の候補サブスクリプションを選択する。この例では、候補サブスクリプションは、ＩＰアドレスＩＰ２から移動するピア（つまり、ピアＢ  ８０４）によりパブリッシュされたネットワーク接続ポイント変更イベントへのサブスクリプションである。第１の候補サブスクリプションは、候補サブスクリプションがすでに選択されていなければ選択される。候補サブスクリプションがなければ、プロシージャは終了することがある。
【００８５】
ステップ１８０６において、サブスクリプションを行ったピア（サブスクライバ）が、パブリックまたはプライベートであるかどうか判別される。以下では、ピアがパブリックであるかプライベートであるかを判別する決定プロシージャの例について、図１９を参照しながら説明する。サブスクライブするピアがプライベートである場合、ネットワーク接続ポイント変更イベントをパブリッシュしたピアは、仮想接続サブスクライブ−通知サービスに依存し、プライベートピアにイベントを通知し、およびプロシージャはステップ１８０８に進む。ステップ１８０８で、サブスクライバに対し、ネットワーク接続ポイント変更イベントが通知される。それとは別に、ステップ１８０８で、例えば、通知モジュール１０２０がサブスクライバを、通知を受けるピアのリストに追加することができる。
【００８６】
サブスクライブするピアがパブリックであれば、例えば、サブスクライバが同時にネットワーク接続ポイントの変更も行わない限り、ネットワーク接続ポイント変更イベントをパブリッシュしたピア（パブリッシャ）は、サブスクライバにＣＵメッセージを直接、しかも仮想接続サブスクライブ−通知サービスの助けを借りずに送信することができる。サブスクライバがこのような同時移動を検出するために、プロシージャはステップ１８１０に進む。ステップ１８１０で、プロシージャは、サブスクライバがネットワーク接続ポイント変更イベントをパブリッシュするのも、この例においては最長で１秒間待つ。プロシージャがステップ１８１０に進んだときにサブスクライバがすでにネットワーク接続ポイント変更イベントをパブリッシュしている場合、プロシージャはステップ１８１０で待つことに時間を費やさないようにできる。
【００８７】
ステップ１８１０の後、プロシージャはステップ１８１２に進み、そこでは、パブリッシャがサブスクライバにＣＵメッセージを送信できる前にサブスクライバが移動しているかどうか、つまり、最長期間を満了する前にサブスクライバがネットワーク接続ポイント変更イベントをパブリッシュもしているかどうかを判別する。サブスクライバが「同時に」移動したと判定された場合、プロシージャは、ステップ１８０８に進み、サブスクライバにパブリッシャの移動を通知することができる。そうでない場合、仮想接続サブスクライブ−通知サービスは、パブリッシャが直接サブスクライバにＣＵメッセージを送信できたと仮定する。プロシージャは、ステップ１８０８を飛ばし、およびステップ１８１４に進む。本発明の一実施形態全体を通して、複数の実行スレッドおよび他の並列処理手法を有効に活用できるが、ステップ１８１０およびステップ１８１２は、波線１８１６により囲まれ、候補のサブスクライバの処理ループ遅延を最小にするために、これらのステップが並列処理または同等の手法（例えば、定期的にチェックする監視項目リスト）の候補として適することを示す。
【００８８】
もし候補のサブスクライバがプライベートであり、かつ通知の試みが失敗した場合、上記の図１５を参照して説明した例においては、パブリッシャ同様、プライベートサブスクライバも移動している可能性がある。その場合、通知の失敗が検出されると、プロシージャはステップ１８１０に進み、プライベートサブスクライバによるネットワーク接続ポイント変更イベントのパブリッシュを待つ。プライベートサブスクライバに対するステップ１８１０の最大待ち時間の最大時間は、パブリックサブスクライバに対する最大待ち時間と異なることがある。
【００８９】
ステップ１８１４において、プロシージャは、さらに候補のサブスクライバをチェックする。候補のサブスクライバがまだ存在すれば、プロシージャは、次のサブスクライバのためステップ１８０４に戻る。そうでない場合、プロシージャは終了することができる。
【００９０】
本発明の一実施形態では、通信ピアがパブリックであるか、またはプライベートであるかにより動作を決定する。上述のように、少なくとも２つのネットワークアドレス、つまりＮＡＴサービスのパブリックネットワークアドレスおよびＮＡＴサービスにより生成されたプライベートアドレス空間内のピアのネットワークアドレスに、プライベートピアが関連付けられる場合がある。プライベートピアは、他のピアに対する仮想接続メッセージ内のプライベートステータスに明示的にフラグを立てることができる。あるいはそれに替えて、各ピアは、送信する１つまたは複数の仮想接続メッセージ内にネットワークアドレスを入れることもできる。その後、メッセージを受け取る他のピアは、含まれているネットワークアドレスをメッセージの見かけの送信元アドレスであるネットワークアドレスと比較することができる。含まれているネットワークアドレスが見かけの送信元アドレスと一致する場合、ピアは、パブリックであると判断することができる。含まれているネットワークアドレスがメッセージの見かけの送信元アドレスと一致しない場合、送信側ピアは、プライベートであると判断することができる。
【００９１】
図１９は、サブスクリプションがパブリックピアまたはプライベートピアに関連付けられているかどうかを判別するために、仮想接続サブスクライブ通知サービス１０００（図１０の）が実行できるステップの例を示す。ステップ１９０２において、仮想接続サブスクライブ−通知サービスは、ＴＣＰ／ＩＰネットワーク上でピアからサブスクライブメッセージを受信する。ステップ１９０４において、サブスクライブメッセージの見かけの送信元は、メッセージ「エンベロープ」、例えば、メッセージのＩＰヘッダを解析することにより判別される。あるいはそれに替えて、メッセージの見かけの送信元は、送信するピアとの確立された通信接続の属性を問い合わせることにより利用可能にできる。ステップ１９０６において、サブスクライブメッセージの内容が解析される。本発明の一実施形態では、ネットワーク接続ポイント変更イベントのサブスクライブメッセージは、サブスクライブするピアのネットワークアドレス（この例ではＩＰアドレス）を含むが、そのネットワークアドレスはサブスクライブするピアに知られている。
【００９２】
ステップ１９０８で、サブスクライブメッセージの見かけの送信元を、サブスクライブメッセージに含まれるネットワークアドレスと比較する。サブスクライブメッセージの見かけの送信元が、サブスクライブするピアによりサブスクライブメッセージに含まれるネットワークアドレスと一致する場合、プロシージャはステップ１９１０に進む。そうでない場合、プロシージャはステップ１９１２に進む。ステップ１９１０において、サブスクリプションは、パブリックピアに関連付けられていると判別される。ステップ１９１２において、サブスクリプションは、プライベートピアに関連付けられていると判別される。この判別は、仮想接続サブスクライブ−通知サービス１０００の異なるモジュール内で繰り返し、または例えばサブスクライブモジュール１００２の中で、１回だけ実行することができ、および、サブスクリプションはサブスクリプションデータベース１００８の中に、パブリックまたはプライベートのフラグが立てられて格納される。
【００９３】
仮想接続メッセージを、下位レイヤのネットワーキングプロトコルに組み込むことができる。例えば、インターネットプロトコルのＩＰオプション機能を使用してＩＰデータグラムに仮想接続メッセージを追加することができる。インターネットプロトコルのＩＰオプション機能の詳細については、非特許文献４を参照のこと。１つまたは複数のＩＰオプションを使用して仮想接続メッセージを下位レイヤのプロトコルデータグラムに組み込む場合、例えば、それらの追加オプションを仮想接続オプション（ＶＣオプション）と呼ぶ。発信仮想接続メッセージを搬送する仮想接続オプションは通常、上位プロトコルレイヤによって生成された発信プロトコルユニットに組み込まれるが、仮想接続レイヤは、次の上位レイヤプロトコルユニットを待つことが有効でない、かつ／または不効率である場合に、例えば、仮想接続オプションを組み込んだ各自の「空の」ＩＰパケットを生成することができる。
【００９４】
伝送制御プロトコルのＴＣＰオプション機能を利用することにより、仮想接続オプションをＴＣＰデータグラムに追加することができる。伝送制御プロトコルのＴＣＰオプション機能の詳細については、非特許文献５を参照のこと。データグラムオプションを明示的にサポートしていない下位レイヤプロトコルであっても、仮想接続オプションを下位レイヤプロトコルデータグラムに付加することにより仮想接続オプションを組み込むことができる。図２０は、仮想接続オプションをＵＤＰデータグラムに付加する方式の例を示している。
【００９５】
図２０では、１つまたは複数の仮想接続オプション２００２は、ＩＰネットワーク上で送信されるＵＤＰデータグラムに付加されている。ＵＤＰデータグラムは、ＵＤＰヘッダ２００４とＵＤＰ本文２００６を含む。ＵＤＰヘッダ２００４は、ＵＤＰ本文２００６にユーザデータを含むＵＤＰデータグラムの長さを示す、ＵＤＰデータ長フィールド（ＬｅｎｇｔｈＵＤＰ）を含む。ユーザデータグラムプロトコルの詳細については、非特許文献６を参照のこと。ＵＤＰデータグラムの先頭にＩＰヘッダ２００８が置かれ、ＩＰネットワーク上で送信することができる。ＵＤＰデータグラムおよび仮想接続オプション２００２は、この例では、ＩＰデータグラムの本文である。ＩＰヘッダ２００８は、ＩＰヘッダ２００８内のバイト数を示すＩＰヘッダ長データフィールド（ＬｅｎｇｔｈＩＰ Ｈｅａｄｅｒ）およびＩＰデータグラム（ヘッダ２００８および本文２００４、２００６、２００２）内のバイト数を示すＩＰ合計データ長フィールド（ＬｅｎｇｔｈＩＰ）を含む。仮想接続オプション２００２（ＬｅｎｇｔｈＶＣ Ｏｐｔｉｏｎｓ）の長さは、次のようにして計算することができる。
LengthVC Options = LengthIP - LengthIP Header - LengthUDP
【００９６】
つまり、１つまたは複数の仮想接続オプション２００２のバイト（オクテット）数は、ＩＰデータグラム内の総バイト数からＩＰヘッダ２００８内のバイト数を引き、さらにＵＤＰデータグラム内のバイト数を引くように計算される。
【００９７】
同様の方式を用いて、仮想接続オプションを他の下位レイヤプロトコルデータグラムに付加することができる。しかし、このような付加されるデータは、仮想接続モジュール（例えば、図６の仮想接続モジュール６００）を組み込んでいないピアにより適切に解釈されない場合がある。リモートピアが仮想接続モジュールを組み込んでいるかどうかをテストするため、１つまたは複数の仮想オプション、例えば、特定の仮想接続プローブオプションを、リモートピアに送信される第１のネットワークプロトコルデータグラムに組み込むことができる。もし応答に１つまたは複数の対応する仮想接続オプションが含まれる場合、リモートピアに、ＶＣ  拡張というフラグを立てることができる、つまり、仮想接続プロトコルに適切に参加することができる。
【００９８】
図２１は、例えば、リモートピアが仮想接続操作をサポートするかどうかを判別するため、仮想接続モジュール６００の（図６の）ピアネゴシエーションコンポーネント６０８により実行されるステップ例を示している。ステップ２１０２において、ＳＹＮフラグがセットされ、仮想接続プローブオプションを組み込む、初期ＴＣＰデータグラムはリモートピアに送信される。ステップ２１０４において、初期ＴＣＰデータグラム、例えば、ＳＹＮおよびＡＣＫフラグがセットされているか、またはＲＳＴフラグがセットされているＴＣＰデータグラムに対する応答を受信する。ステップ２１０６で、応答を解析し、仮想接続プローブオプションがないか調べる。ステップ２１０８で、応答に仮想接続プローブオプションが組み込まれているかどうかに関する判別を行う。応答に仮想接続プローブオプションが組み込まれている場合、プロシージャはステップ２１１０に進み、そこで、リモートピアにＶＣ  拡張のフラグが立てられる。そうでなければ、プロシージャはステップ２１１２に進み、リモートピアにＶＣ  拡張でないというフラグが立てられ、リモートピアにそれ以上、仮想接続メッセージが送信されない。上述のような仮想接続機能は、この場合には使用できない。
【００９９】
本明細書で引用されている出版物、特許出願、および特許を含む参照はすべて、各参考文献が参照により組み込まれるように個別的にかつ具体的に指示され、かつ本明細書の中に全体が規定されている場合と同じ程度で参照により組み込まれている。
【０１００】
本発明を説明する文脈において（特に請求項の文脈において）「ａ」および「ａｎ」（１つの）および「ｔｈｅ」（前記、その）という用語および類似の指示語を使用することは、本明細書に特に断りのない限りまたは文脈によりそうでないことが明確でない限り、単数形と複数形の両方を対象としていると解釈すべきである。「ｃｏｍｐｒｉｓｉｎｇ」、「ｈａｖｉｎｇ」、「ｉｎｃｌｕｄｉｎｇ」および「ｃｏｎｔａｉｎｉｎｇ」（含む、備える、持つ）という用語は、特に断りのない限り、幅広く解釈すべき用語とする（つまり、「ｉｎｃｌｕｄｉｎｇ，ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ」（を含むが、それらには限られない）を意味する）。本明細書で値の範囲を述べているのは、本明細書で断りのない限り、範囲内に収まるそれぞれの個別の値を個々に参照する簡略化した方法として使用することを単に意図しているだけであり、各個別の値は、本明細書で個々に引用されているかのように明細書に組み込まれる。本明細書で説明しているすべての方法は、本明細書で特に断りのない限り、または文脈上そうでないことが明らかでない限り、適当な順序で実行することができる。すべてのかつ任意の例、または例を意味する言葉（例えば、「ｓｕｃｈ  ａｓ」（など））を本明細書で使用しているが、これは、本発明をわかりやすくすることを単に目的としているだけであり、特に断りのない限り、本発明の範囲に制限を課すものではない。明細書内のすべての言葉は、非請求要素を本発明の実施に本質的なものとして示していると解釈すべきではない。
【０１０１】
本発明の好ましい実施形態は、本発明を実施するため発明者に知られている最良の方法を含めて本明細書で説明されている。前述の説明を読めば、それらの好ましい実施形態の変更形態は当業者にとって明白になるであろう。発明者は、当業者がそのような変更形態を適切なものとして採用することを期待しており、また発明者は、発明が本明細書で特に説明しているものと異なる方法で実施されることも意図している。したがって、本発明は、適用法により許されている本明細書の請求項で引用されている主題のすべての修正および等価物を含む。さらに、本発明では、本明細書に特に断りのない限り、または文脈上そうでないことが明らかでない限り、可能なすべての変更形態における上述の要素の任意の組合せを包含する。
【図面の簡単な説明】
【０１０２】
【図１】ネットワークによって接続されたコンピュータを例示する概略図である。
【図２】本発明の一実施形態を実施するのに使用可能なコンピュータシステム例の概要を説明する概略図である。
【図３】本発明の一実施形態による仮想接続レイヤを組み込んだレイヤ化ネットワーキングモデルの概略図である。
【図４】本発明の一実施形態による仮想接続レイヤを組み込んだレイヤ化ＴＣＰ／ＩＰ実装例の概略図である。
【図５】本発明の一実施形態による仮想接続レイヤを組み込んだ他のレイヤ化ＴＣＰ／ＩＰ実装例の概略図である。
【図６】本発明の一実施形態による仮想接続レイヤサービスを実装するのに適している仮想接続モジュール例を説明する概略図である。
【図７】本発明の一実施形態によるローカル接続変換操作の例を示す概略図である。
【図８】本発明の一実施形態による仮想接続プロトコルの例を示す概略図である。
【図９】本発明の一実施形態による図８の仮想接続プロトコルメッセージの順序例を示すプロトコル図である。
【図１０】本発明の一実施形態によるモジュール型仮想接続サブスクライブ−通知サービスアーキテクチャの例を示す概略図である。
【図１１】本発明の一実施形態による同時移動シナリオの仮想接続プロトコルの例を示す概略図である。
【図１２】本発明の一実施形態による図１１の仮想接続プロトコルメッセージの順序例を示すプロトコル図である。
【図１３】本発明の一実施形態によるネットワークアドレス変換を組み込んだコンピュータネットワーク内の仮想接続プロトコルの例を示す概略図である。
【図１４】本発明の一実施形態による図１３の仮想接続プロトコルメッセージの順序例を示すプロトコル図である。
【図１５】本発明の一実施形態による同時移動およびネットワークアドレス変換を組み込んだシナリオに対する仮想接続プロトコルの例を示す概略図である。
【図１６】本発明の一実施形態による図１５の仮想接続プロトコルメッセージの順序例を示すプロトコル図である。
【図１７】本発明の一実施形態による仮想接続モジュールによって実行されるステップの例を示す流れ図である。
【図１８】本発明の一実施形態による仮想接続サブスクライブ−通知サービス照合モジュールによって実行されるステップの例を示す流れ図である。
【図１９】サブスクライバがパブリックであるかプライベートであるかを判別するため仮想接続サブスクライブ−通知サービスにより発明の一実施形態に従って実行されるステップの例を示す流れ図である。
【図２０】本発明の一実施形態による仮想接続オプションを組み込んだＵＤＰ／ＩＰデータグラムの概略図である。
【図２１】リモートピアが仮想接続機能をサポートしているか判別するため仮想接続モジュールにより発明の一実施形態に従って実行されるステップの例を示す流れ図である。
【図１】
0004633395.tif 000006
【図２】
0004633395.tif 000007
【図３】
0004633395.tif 000008
【図４】
0004633395.tif 000009
【図５】
0004633395.tif 000010
【図６】
0004633395.tif 000011
【図７】
0004633395.tif 000012
【図８】
0004633395.tif 000013
【図９】
0004633395.tif 000014
【図１０】
0004633395.tif 000015
【図１１】
0004633395.tif 000016
【図１２】
0004633395.tif 000017
【図１３】
0004633395.tif 000018
【図１４】
0004633395.tif 000019
【図１５】
0004633395.tif 000020
【図１６】
0004633395.tif 000021
【図１７】
0004633395.tif 000022
【図１８】
0004633395.tif 000023
【図１９】
0004633395.tif 000024
【図２０】
0004633395.tif 000025
【図２１】
0004633395.tif 000026