JP2005039832A - サブスクライブ−通知サービスとの仮想接続 - Google Patents

サブスクライブ−通知サービスとの仮想接続 Download PDF

Info

Publication number
JP2005039832A
JP2005039832A JP2004207743A JP2004207743A JP2005039832A JP 2005039832 A JP2005039832 A JP 2005039832A JP 2004207743 A JP2004207743 A JP 2004207743A JP 2004207743 A JP2004207743 A JP 2004207743A JP 2005039832 A JP2005039832 A JP 2005039832A
Authority
JP
Japan
Prior art keywords
change event
network
peer
point change
connection point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004207743A
Other languages
English (en)
Other versions
JP4633395B2 (ja
JP2005039832A5 (ja
Inventor
Chuanxiong Guo
チャンシォン クオ
Jun Yuan
ジュン ユアン
Qian Zhang
チエン チャン
Wenwu Zhu
ウェンウ チュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005039832A publication Critical patent/JP2005039832A/ja
Publication of JP2005039832A5 publication Critical patent/JP2005039832A5/ja
Application granted granted Critical
Publication of JP4633395B2 publication Critical patent/JP4633395B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2571NAT traversal for identification, e.g. for authentication or billing 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W80/00Wireless network protocols or protocol adaptations to wireless operation
    • H04W80/04Network layer protocols, e.g. mobile IP [Internet Protocol]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/18Service support devices; Network management devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Machine Translation (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)

Abstract

【課題】 ローカルピアおよびリモートピアのネットワーク接続ポイント変更を、ネットワークサービスを使用するアプリケーションに対し透過的にする。
【解決手段】 各ピアのローカルにある仮想接続モジュールは、通信接続パラメータを見かけのパラメータから実際のパラメータに、またその逆に変換するだけでなく、ピアとの間で安全な接続更新を送受信する。モバイルIPとは異なり、ルーティングインフラストラクチャの修正は不要である。サブスクライブ通知サービスでは、直接のピアツーピア接続更新が可能でない場合、例えば、2つの通信ピアが同時に移動する場合、または移動しているピアがネットワークアドレス変換(NAT)の背後にいるピアと通信している場合に、接続更新通知を行う。仮想接続プロトコルおよび仮想接続モジュールアーキテクチャの場合と同様、これらの状態を検出する方法も開示する。
【選択図】 図18

Description

本発明は、一般に、コンピュータネットワークに関する、より詳細には、ネットワーク接続されたコンピュータがネットワーク接続ポイント(network attachment point)を変更することができるコンピュータネットワークに関する。
今日の大規模なコンピュータネットワークでは通常、ネットワークユーザ、特にモバイルネットワークユーザはネットワークに複数の地点で接続する機会がある。例えば、ネットワーク接続ポイントが異なれば提供されるサービス品質、コストも異なり、かつ/または保守する組織も異なることから、ネットワークユーザは、ネットワーク接続ポイントを変更したいと考えることがある。例えば、コストを最小に抑え、かつ/またはサービス品質を最大にするため、ネットワーク接続ポイントを自動的に変更するように構成することさえできる。
通常、コンピュータネットワークサービスを利用するアプリケーションにとっては、コンピュータネットワークサービスができる限りアプリケーションに対し透過的であること、つまり、アプリケーション側で意識する必要があるコンピュータネットワークサービスの実装の詳細、特に下位レイヤのネットワークプロトコルの変更に関する詳細を、できる限り少なくすることが望ましい。基本プロトコルに適切な機能が組み込まれていないコンピュータネットワークの場合、ネットワーク接続ポイントをアプリケーションに対し透過的にしようとすると、追加の機構を必要とする場合がある。例えば、コンピュータがインターネットへの接続ポイントを変更する場合、新しいネットワーク接続ポイントは、通常、新しいIP(Internet Protocol)アドレスに関連付けられる。基本的なIPv4(Internet Protocol version 4)またはIPv6(Internet Protocol version 6)の下では、例えば、ネットワーク接続ポイントの変更前にアクティブな接続を行うコンピュータ上のアプリケーションは、変更後にそれらの接続の再構築を行う用意をしておく必要がある場合がある。
この説明のために、ネットワーク接続ポイントの変更をアプリケーションに対して透過的にする従来の試みをインフラストラクチャソリューション(infrastructure solutions)およびエンドツーエンドソリューション(end−to−end solutions)に分類することができる。インフラストラクチャソリューションでは、通常、ネットワーク要素の追加および/またはネットワークルーティングシステム(network routing system)の変更を必要とする。例えば、Mobile IP for IPv4およびMobile IP for IPv6は、経路指定に基づくインフラストラクチャソリューションであり、ホームエージェントネットワーク要素を追加する必要がある。これとは対照的に、エンドツーエンドソリューションでは、ネットワーク接続ポイント変更を、ネットワークルーティングとは無関係に、通信エンドポイントで管理する。エンドツーエンドソリューションの例については、非特許文献1で説明されている。エンドツーエンドソリューションの利点は、既存のネットワークインフラストラクチャに修正を加えずとも、ネットワーク接続ポイントの透過的な変更を行えることにある。
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
従来のソリューションには欠点がある。例えば、Mobile IP for IPv4およびMobile IP for IPv6は、経路指定が間接的であり、その間接的な経路指定は非効率的であり、およびネットワークセキュリテモデルに違反する場合がある。一部の従来のエンドツーエンドソリューションは、通信接続の当事者である各コンピュータがネットワーク接続ポイントを同時に変更するケースの取り扱いができないか、あるいはそのようなケースの一貫した取り扱いができない。コンピュータネットワークでのネットワークアドレス変換(NAT)の使用は、従来ソリューションにより、非効率的に、かつ/または一貫性なく処理される現代のコンピュータネットワークのもう1つの側面である。
いくつかの従来のソリューションでは、ネットワークプロトコルのバージョンが異なる場合に取り扱い方法も異なるため、そのバージョンの違いが透過性を阻害することがある。レイヤ化されたプロトコルをサポートするコンピュータネットワークもあり、例えば、インターネットプロトコルは通常、TCP(Transmission Control Protocol)およびUDP(User Datagram Protocol)とともに使用される。上位プロトコルレイヤのいくつかの側面を非効率なまたは一貫性のない形でしかサポートしていない従来のソリューションもあり、例えば、IP上のTCPをサポートしているが、IP上のUDPでは正常に動作しないソリューションがある。アプリケーションがレイヤ化プロトコルの異なる側面を異なる方法で取り扱うということを認識している必要がなければ透過性は向上すると思われる。
この節では、本発明のいくつかの実施形態の簡潔な要約を提示する。この要約は、本発明の概要を広範囲にわたって述べたものではない。この要約は、本発明の鍵となる要素や決定的な要素を示すこと、または本発明の範囲を定めることを目的としていない。後で述べる詳細な説明の前置きとして、本発明のいくつかの実施形態を簡略化した形式で述べることのみを目的とする。
本発明の一実施形態では、ネットワーク接続ポイント変更イベントサブスクリプション(event subscriptions)は、ネットワーク接続ポイント変更イベントサブスクライバ(event subscribers)から受け取る。ネットワーク接続ポイント変更イベントパブリケーション(event publications)は、ネットワーク接続ポイント変更イベントパブリッシャ(event publishers)から受け取る。ネットワーク接続ポイント変更イベントがネットワーク接続ポイント変更イベントサブスクリプションと一致した場合、ネットワーク接続ポイント変更イベントサブスクリプションを送ったサブスクライバは通知を受ける。
本発明の一実施形態では、コンピュータは、サブスクライブメッセージ(subscribe message)を、リモートピアによりパブリッシュ(publish)されたネットワーク接続ポイント変更イベントにサブスクライブ(subscribe)する仮想接続(virtual connectivity)サブスクライブ−通知サービスに送信することができる。
本発明の一実施形態では、コンピュータ化されたシステムは、仮想接続サブスクライブ−通知サービス照合モジュールを備え、このモジュールは、ネットワーク接続ポイント変更イベントサブスクリプションデータベースにおいてネットワーク接続ポイント変更イベントと一致するネットワーク接続ポイント変更イベントサブスクリプションを検索するように構成される。
添付の特許請求の範囲において本発明の特徴を詳細に設定するが、本発明およびその利点は、添付図面に関する以下の詳細な説明から最もよく理解される。
本発明の様々な実施形態の説明を進める前に、本発明の様々な実施形態を実施できるコンピュータおよびネットワーキング環境についてここで説明する。必要であるというわけではないが、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能な命令の一般的状況において本発明を説明する。一般に、プログラムには、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、オブジェクト、コンポーネント、データ構造などが含まれる。本明細書で使用している「プログラム」という用語は、単一のプログラムモジュールまたは一斉に動作している複数のプログラムモジュールを意味する。本明細書で使用している「コンピュータ」および「コンピューティング装置」という用語は、パーソナルコンピュータ(PC)、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースのプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、タブレットPC、ラップトップコンピュータ、マイクロプロセッサまたはマイクロコントローラを備えた家庭用器具、ルータ、ゲートウェイ、ハブなどを含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理装置によりタスクが実行される分散コンピューティング環境で使用することもできる。分散コンピューティング環境では、プログラムは、ローカルとおよびリモートの両方のメモリストレージ装置内に配置することができる。
図1を参照して、本発明の複数の態様を組み込むのに好適なコンピュータネットワーキング環境の一例を説明する。コンピュータネットワーキング環境例は、雲の形で表されている、ネットワーク104上で互いに通信しあっている複数のコンピュータ102を含む。ネットワーク104は、ルータ、ゲートウェイ、ハブなど多くのよく知られているコンポーネントを備えることができ、これにより、コンピュータ102は有線および/または無線媒体を介して通信することができる。ネットワーク104上で互いに情報をやり取りするとき、コンピュータ102の1つまたは複数は、他方のコンピュータ102に関してクライアント、サーバ、またはピアとして動作することができる。したがって、本発明の様々な実施形態は、本明細書で説明している具体例においてこれらの種類のコンピュータすべてを取りあげられないとしても、クライアント、サーバ、ピア、またはそれらの組合せで実施することができる。
図2を参照すると、本明細書で説明している本発明の複数の態様を実装できるコンピュータ102の基本構成例が示されている。最も基本的な構成では、通常、コンピュータ102は少なくとも1つの処理装置202およびメモリ204を備える。処理装置202は、本発明の様々な実施形態によりタスクを実行する命令を処理する。そのようなタスクを
実行する際に、処理装置202は、コンピュータ102の他の部分およびコンピュータ102の外部にある装置に電子信号を送信し、何らかの結果を生じさせることができる。コンピュータ102の正確な構成と種類に応じて、メモリ204は揮発性(RAMなど)、不揮発性(ROMまたはフラッシュメモリなど)、またはこれら2つの何らかの組合せとすることができる。図2では、この最も基本的な構成は、破線206で示されている。
コンピュータ102には、さらに特徴/機能を追加することもできる。例えば、コンピュータ102は、限定ではないが、磁気ディスクまたは光ディスクまたはテープなどの追加のストレージ(取外し可能208および/または取外し不可能210)を備えることもできる。コンピュータストレージ媒体は、コンピュータ実行可能な命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取外し可能および取外し不可能な媒体を含む。コンピュータストレージ媒体は、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリ、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他の磁気ストレージ装置、または目的の情報を格納するために使用することができコンピュータ102によりアクセスできるその他の媒体がある。このような任意のコンピュータストレージ媒体をコンピュータ102の一部とすることができる。
望ましくは、コンピュータ102は、装置がリモートコンピュータ214などの他の装置と通信するために使用する通信接続212も含む。通信接続は、通信媒体の一例である。通信媒体は、通常、コンピュータ読取り可能な命令、データ構造体、プログラムモジュール、または搬送波またはその他のトランスポートメカニズムなどの変調データ信号におけるその他のデータを実現し、および情報配信媒体を含む。限定ではなく一例としては、「通信媒体」という用語は、音響、RF、赤外線などの無線媒体およびその他の無線媒体も指す。本明細書で使用している「コンピュータ読取り可能な媒体」という用語は、コンピュータストレージ媒体と通信媒体の両者を指す。
さらにコンピュータ102は、キーボード/キーパッド、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置216を備えることもできる。表示装置、スピーカー、プリンタなどの出力装置218を備えることもできる。これらの装置はすべて、当技術分野において周知のため、本明細書でさらに詳しい説明をする必要はない。
以下の説明では、特に断りのない限り、1つまたは複数のコンピューティング装置により実行される動作および象徴的な操作を参照しながら本発明を説明する。したがって、そのような動作および操作は、ときには「コンピュータ実行」と表現されることもあるが、構造化された形式においてデータを表現する電気的信号の、コンピュータの処理装置による操作を含むことは理解されるであろう。この操作により、データを変換するか、またはコンピュータのメモリシステム内の複数の位置に保持し、当業者であればよく理解している方法でコンピュータの動作を再構成するか、さもなければ他の何らかの形で変更する。データが保持されているデータ構造は、データの形式により定められた特定の特性を備えるメモリの物理的な位置である。しかし、本発明は前述の文脈において説明されているが、当業者が以下で説明する各種の動作および操作がハードウェアでも実装できることを理解されるように、説明に制限を加える意図はない。
本発明の一実施形態では、複数のプロトコルレイヤは、コンピュータネットワーク内に通信接続を確立し維持するためのプロトコルを実装することができる。それらのプロトコルレイヤは、例えば国際標準化機構(ISO)のOpen Systems Interconnect(OSI)モデルにより記述されるレイヤに対応する。OSIモデルの詳細については、非特許文献2を参照のこと。本発明の一実施形態では、仮想接続(VC)レイヤがプロトコルに追加される、または既存のプロトコルレイヤに組み込まれる。以下では、例は、インターネットプロトコル(IP)およびIPベースのプロトコルを参照して説明するが、ただし、本発明の実施形態はそれに制限されるわけではなく、それらの例は、ステートレスルーティング(stateless routing)を使用する任意のネットワーキングプロトコルに一般化することができる。
図3は、仮想接続レイヤを既存のネットワーキングレイヤに追加する方式の一例を示している。仮想接続レイヤ302は、1つまたは複数の下位ネットワーキングレイヤ304と1つまたは複数の上位ネットワーキングレイヤ306との間に置かれる。下位ネットワーキングレイヤ304の例には、物理媒体内の信号の形式設定を判別する物理レイヤ、および複数のコンピュータ(例えば、図1のコンピュータ102)による共有物理通信媒体へのアクセスを制御する媒体アクセス制御(MAC)レイヤを含む。上位ネットワーキングレイヤ306の例は、ユーザベースの認証依存ポリシーを強制するセッションレイヤ、および共通ネットワーク伝送形式から特定のアプリケーション形式にデータを変換するプレゼンテーションレイヤを含む。
アプリケーションレイヤ308は、上位ネットワークレイヤ306との情報のやり取りをすることによりネットワークサービスを利用する。上位ネットワークレイヤ306は、仮想接続レイヤ302と情報をやり取りし、および仮想接続レイヤ302は、下位ネットワーキングレイヤ304と情報をやり取りする。下位ネットワーキングレイヤ304の少なくとも1つは、物理伝送媒体とやり取りする。本発明の一実施形態では、仮想接続レイヤ302は、接続の当事者がネットワーク接続ポイントを変更したとしても、接続の元の識別情報によりアプリケーションレイヤ308から接続を参照できるよう、通信接続(例えば、図2の通信接続212)を仮想化する。
図4および図5は、本発明の一実施形態により追加の仮想接続レイヤを階層化TCP/IP実装に組み込む2つの例を示している。図4では、下位ネットワーキングレイヤは、ネットワーキングハードウェア404とのインターフェースを備えるデバイスドライバ402および上位ネットワーキングレイヤから独立しているインターネットプロトコル機能を実装するIPレイヤ406を含む。上位ネットワーキングレイヤは、TCP/IPの伝送制御面およびコンピュータネットワークサービスにアクセスするアプリケーション412により使用されるネットワークソケットアプリケーションプログラミングインターフェース(API)410を実装するTCPレイヤ408を含む。図4では、仮想接続レイヤ414は、TCPレイヤ408とIPレイヤ406との間に配置され、発信データ(つまり、送信されるデータ)がIPレイヤ406に見られる前にデータを傍受し、およびIPレイヤ406がインターネットプロトコル機能に関してデータの処理を終了した後に着信データ(つまり、受信されたデータ)も傍受する。
一部の従来のTCP/IP実装では、IPレイヤおよびTCPレイヤは、例えば、パフォーマンスを高めるために、単一データ処理モジュールとして実装される。このような場合、例えば、既存の実装への修正を最小限にするために、図5に示されている別の位置に仮想接続レイヤ502を追加すると都合がよい。既存の実装への修正を最小限に抑えることで、新しいモジュールによって持ち込まれる不具合を減らすことができ、修正後により安定したシステムとなる。図5では、仮想接続レイヤ502は、融合TCP/IPレイヤ(fused TCP/IP layer)504とデバイスドライバ402(つまり、図4のデバイスドライバ402と同じデバイスドライバ)との間に配置される。発信データは、TCP/IPレイヤ504により処理された後、仮想接続レイヤ502により傍受される。着信データは、TCP/IPレイヤ504に渡される前に、仮想接続レイヤ502により傍受される。
図6は、本発明の一実施形態による仮想接続レイヤサービスを実装するのに適している仮想接続モジュールの例を説明している。仮想接続モジュール600は、ローカル接続変換テーブル604内の情報に基づいて通信接続を変換するように構成されているローカル接続変換(LCT)コンポーネント602を備える。接続管理コンポーネント606は、ローカル接続変換テーブル604内のエントリとリモートピア(つまり、図2のリモートコンピュータ214)の対応するエントリとの同期をとるように構成されている。ピアネゴシエーションコンポーネント(peer negotiation component)608は、仮想接続プリファレンスをピアとやり取りするだけでなく、ピア側で送信した仮想接続プロトコルメッセージの認証の基準についてもネゴシエーションする。
仮想接続モジュール600は、仮想接続サブスクライブ−通知サービス(VC SNS)プロキシコンポーネント610を備えることができ、このコンポーネントは、リモートの仮想接続サブスクライブ−通知サービス(図6には示されていないが、図10に関して以下で説明する)へのローカルプロキシとしての役割を果たす。例えば、ローカルコンポーネント610により使用される特定のリモート仮想接続サブスクライブ−通知サービスは、動的ホスト構成プロトコル(DHCP)を介して構成することができる。図6に示されている例では、VC SNSプロキシ610はユーザモードで実行されるが、仮想接続モジュール600の残りのコンポーネントはカーネルモードで実行される。破線612は、実行中の仮想接続モジュール600内のカーネルモードとユーザモードとの境界を示している。コンピュータのオペレーティングシステムとの関連でカーネルモードとユーザモードを使用することは、当技術分野において周知のため、本明細書で詳しく説明する必要はない。
ローカル接続変換テーブル604は、アクティブなピア間の通信接続各々に対するエントリを含む。本発明の一実施形態では、通信接続の確立時にエントリが追加され、および通信接続の終了時にエントリが削除される。ローカル接続変換テーブル604内の各エントリは、元の接続指定を現在の接続指定に関連付ける。接続指定は、1つまたは複数の通信接続パラメータを含み、および1つの特定のネットワークプロトコルレイヤまたは一組のネットワークプロトコルレイヤに対する通信接続を一意に識別することができる。本発明の一実施形態では、元の接続指定各々と現在の接続指定との間に一対一の関係がある。
接続指定では、接続に参加している各ピアのネットワーク接続ポイント識別子(ネットワークアドレス)、例えば、IPネットワーク内のIPアドレス、TCP/IPネットワーク内のIPアドレスおよびTCPポート、またはUDP/IPネットワーク内のIPアドレスおよびUDPポートを含むことができる。本発明の一実施形態では、アクティブな通信接続に参加しているピアのいずれもネットワーク接続ポイントを変更していない場合、対応するエントリの現在の接続指定は元の接続指定と同じである。しかし、ピアの1つまたは複数が移動した(つまり、ネットワーク接続ポイント変更した)場合、現在の接続指定は更新される。本発明の一実施形態では、元の接続指定は、通信接続の存続期間中変更されることがない。
以下の表1は、TCPおよびUDPなどの上位レイヤプロトコルをサポートするIPベースのコンピュータネットワークの接続指定の一例である。
Figure 2005039832
表1は、ローカルピアのIPネットワーク接続ポイントを識別するローカルIPアドレスおよびローカルピアの上位レイヤプロトコルポートを識別するローカルポート番号を含む。ローカルピアは、複数の通信接続に参加することができる。各通信接続は、ポート番号に関連付けることができる。同様に、表1は、リモートIPアドレスおよびリモートポート番号もさらに含む。上位レイヤプロトコルタイプは、IPネットワークにより経路指定される上位レイヤプロトコルのタイプ、例えば、TCPまたはUDPを示す。本発明の一実施形態では、ローカルIPアドレスおよびリモートIPアドレス、上位レイヤプロトコルタイプ、ローカルポート番号、ならびにリモートポート番号の組合せにより、通信接続を指定する。
仮想接続モジュール600は、アウトバウンドデータストリーム内の各発信ネットワークプロトコルユニット(例えば、IPデータグラム)およびインバウンドデータストリーム内の各着信ネットワークプロトコルユニットを傍受することができる。本発明の一実施形態では、仮想接続モジュール600によって傍受される発信ネットワークプロトコルユニット毎に、ローカル接続変換コンポーネント602は、発信ネットワークプロトコルユニットに関連する接続指定を元の接続指定から現在の接続指定に変換する。さらに、仮想接続モジュール600によって傍受される着信ネットワークプロトコルユニット毎に、ローカル接続変換コンポーネント602は、着信ネットワークプロトコルユニットに関連する接続指定を現在の接続指定から元の接続指定に変換する。変換操作の一例を、IPベースのネットワークに関して図7に示している。
図7において、ローカル接続変換テーブル604は、現在の接続指定704に関連付けられる元の接続指定702を含む。元の接続指定IP:IPのうちの一方は、ローカルIPアドレスIPおよびリモートIPアドレスIPを含む、つまり、アクティブな接続が最初に確立されたときに、ローカルコンピュータはIPネットワークにアドレスIPで接続され、およびリモートコンピュータはIPネットワークにアドレスIPで接続されたということである。接続の続いている間のある時点において、リモートコンピュータは、そのIPネットワーク接続ポイントをアドレスIPに変更しており、その結果、現在の接続指定IP:IPは元の接続指定IP:IPと異なる。現在の接続指定IP:IPは、同じローカルIPアドレスIPを持つが、リモートIPアドレスIPは元のリモートIPアドレスIPから変更されている。リモートポート番号も、同様に、変更できるが、この詳細は、図7に示さない。
発信プロトコルユニット706は、仮想接続モジュール600により傍受され(図6)、変換のためローカル接続変換コンポーネント602にサブミットされる。各プロトコルユニット706、708、710、712は、IPデータグラム、TCPデータグラム、UDPデータグラムなどとすることができる。各プロトコルユニット706、708、710、712は、送信元(from)IPアドレスおよび送信先(to)IPアドレスに関連付けられる。IPアドレスは、例えば、IPデータグラムの場合には、プロトコルユニットに組み込むか、または、プロトコルユニットのコンテキストの一部、例えば、下位プロトコルレイヤから解析され、データストリーム内の前のプロトコルユニットから解析され、上位プロトコルレイヤにより明示的に指定されているコンテキストデータ、またはオペレーティングシステム環境の一部とすることができる。
ローカル接続変換コンポーネント602は、発信プロトコルユニット706の接続指定を決定する。発信プロトコルユニット706については、これは、元の接続指定IP:IPに対応する。その後、ローカル接続変換コンポーネント602は、ローカル接続変換テーブル604のルックアップを実行し(よく知られている手法を使用して)、この場合、現在の接続指定IP:IPである対応する現在の接続指定を見つける。ローカル接続変換コンポーネント602は、(適宜、プロトコルユニットまたはプロトコルユニットのコンテキストの中の)プロトコルユニット706のIPアドレスおよび他の接続指定の関連付けを現在の接続指定IP:IPからのデータで置き換え、変換された発信プロトコルユニット708を得る。
同様に、着信プロトコルユニット710は、仮想接続モジュールにより傍受され、変換のためにローカル接続変換モジュール602にサブミットされる。ローカル接続変換モジュールは、着信プロトコルユニット710が、現在の接続指定IP:IPに関連付けられていると判定し、ローカル接続変換テーブル604のルックアップを実行して対応する元の接続指定IP:IPを見つけてから、プロトコルユニット710の接続指定関連付けを置き換えて、変換された着信プロトコルユニット712を出力し、これを上位のプロトコルレイヤに渡す。本発明の一実施形態では、上位プロトコルレイヤおよび特にアプリケーションは、元の接続指定に対応する接続指定情報を見るが、下位プロトコルレイヤは、現在の接続指定に対応する接続指定情報を見る。
図6に戻ると、本発明の一実施形態では、ローカルピア(つまり、ローカル接続変換テーブル604が常駐するピア)が移動する、またはリモートピアが移動するので、現在の接続指定を更新することができる。本発明の一実施形態では、接続に参加しているそれぞれのピアは各自の仮想接続モジュール600を持ち、したがって各自のローカル接続変換(LCT)テーブル604を持つ。接続に参加しているピアの1つが移動する場合、本発明の一実施形態では、対応する現在の接続指定は、各参加するピアにおいて更新される。仮想接続モジュール600は、ネットワーク接続ポイントのローカルでの変更を検出することができるか、または他のローカルモジュール、例えば、変更を開始したローカルモジュールによりローカルの変更の知らせを受けることができる。ローカルで変更が検出されれば、まず、ローカルLCTテーブル604が更新される。以下の表2は、IPベースのネットワークに対するローカルLCTテーブルの一部の更新例を示す。
Figure 2005039832
この表に掲載されている更新例では、アクティブなTCP/IP接続は、IPアドレスIPを持つローカルピアとIPアドレスIPを持つリモートピアとの間に存在する。この例では、接続指定は、ローカルピアのIPアドレスおよびポート番号(元々はIPとポート)、リモートピアのIPアドレスおよびポート番号(つまり、IPとポート)、ならびに上位レイヤプロトコルタイプ(つまり、TCP)を含む5つ組である。ローカルピアは、そのネットワーク接続ポイントを変更し、そのIPアドレスおよびポート番号がIPおよびポートになるようにする。変更前には、元の接続指定および現在の接続指定は、同じであり、つまり、5つ組(IP、ポート、IP、ポート、TCP)である。変更後には、元の接続指定は同じであるが、現在の接続指定は、新しいIPネットワーク接続ポイントに更新され、つまり、今では、新しい5つ組(IP、ポート、IP、ポート、TCP)である。
本発明の一実施形態では、リモートピアでアクティブな接続テーブル604を更新するために、ローカル接続管理コンポーネント606にローカルネットワーク接続ポイントの変更を知らせる。ローカル接続管理コンポーネント606は、接続更新(Connection Update)(CU)、接続更新応答(Connection Update Acknowledge)(CUA)、および接続更新要求(Confection Update Request)(CUR)などの少なくとも3つの仮想接続メッセージでリモート接続管理コンポーネントと通信することができる。
CUメッセージは、通信接続に参加しているリモートピアに対して変更が生じたピアから変更された接続指定情報を伝えることができる。本発明の一実施形態では、ピアがネットワーク接続ポイントを変更したときに、ピアはCUメッセージを、通信接続がアクティブになっている各ピアに送信する。CUメッセージを受信したことに肯定応答するため、CUメッセージに応えてCUAメッセージを返信することができる。CUAメッセージは、CUメッセージと同じ情報を含むことができる。例えば、ネットワーク接続ポイントを変更したが、ピアにCUメッセージを送信していなかったという通知をピアが受けたとき、CURメッセージを、CUメッセージを要求するピアが送信することができる。
図8は、ピアの1つがIPネットワーク接続ポイントを変更するとき、IPベースの通信接続を維持するためのピアと、仮想接続メッセージを交換する仮想接続モジュールとの通信例を示している。図8では、ピアA 802は、IPネットワーク上でピアB 804とのアクティブな通信接続を有する。ピアA 802は、IPネットワークにIPアドレスIPで接続され、ピアB 804は、元々IPネットワークにIPアドレスIPで接続されている。接続の期間中、ピアB 804はIPネットワーク接続ポイントをIPアドレスIPに変更する。この変更は、ピアB 804がピアB 806に移動している(破線矢印で示されている)ときの状況について図8に概略が示されている。
移動の後、ピアB 806は上述のようにそのローカルLCTテーブルを更新し、その後、CUメッセージ808をピアA 802に送信する。移動した後、ピアA 802がCUメッセージ808を受信するまで、ピアA 802はピアB 806の新しいIPネットワーク接続ポイントを認識しないので、ピアB 806と通信することができない場合がある。CUメッセージ808は、ピアB 806の新しいネットワーク接続ポイント、例えば、新しいIPアドレスIPおよび新しいポート番号ポートを識別する情報を含む。さらに、CUメッセージ808は、元の接続を参照する情報、例えば、元のIPアドレスIPおよびポート番号ポート、元の接続指定、または元の接続に対応する接続トークンなどの元の接続識別子を含む。例えば、適当な接続トークンとして、元の接続指定、または通信ピアの1つによって維持されているような接続カウントの暗号化ハッシュとすることができる。
ピアA 802の仮想接続モジュールがCUメッセージ808を受け取った後、CUメッセージ808は接続管理コンポーネント(例えば、図6の接続管理コンポーネント606)および決定された対応する元の接続指定により解析される。例えば、CUメッセージ808は、元の接続指定を含むか、または元の接続指定をローカル(ピアA 802に対して)コンテキストと組み合わせて再構成できる十分な情報を含むか、またはCUメッセージ808に元の接続トークンが含まれる場合には、接続トークンを接続指定に関連付けるテーブル(または類似のデータ構造)のルックアップを実行することにより元の接続指定を決定することがきできる。元の接続指定を保持していれば、ローカル接続変換テーブル(例えば、図6のローカル接続変換テーブル604)の中の対応する現在の接続指定を更新することができる。以下の表は、ピアA 802の更新の様々な側面を示している。
Figure 2005039832
ピアB 804が移動する前に、元の接続指定と現在の接続指定は両方とも同じ5つ組である、つまり、ピアA 802のIPアドレスおよびポート番号(つまり、IPおよびポート)、ピアB 804のIPアドレスおよびポート番号(つまり、IPおよびポート)、および上位レイヤプロトコルタイプ、この場合にはTCPである。ピアB 804が移動した後、現在の接続指定は、ピアBの新しいネットワーク接続ポイントに関して更新され(つまり、IPおよびポートはIPおよびポートになり)、現在の接続指定5つ組は(IP、ポート、IP、ポート、TCP)となる。元を接続指定は、移動の影響を受けない。
CUメッセージ808に対する応答として、ピアA 802はCUAメッセージ810をピアB 806に送信する。CUAメッセージ810は、ピアA 802において成功したこと、またはその他の接続更新操作をピアB 806に通知することができる。CUAメッセージ810を受信した後、ピアA 802およびピアB 806はもう一度、IPベースの交信に入る。さらに、本発明の一実施形態では、仮想接続レイヤの上にあるプロトコルおよびアプリケーションレイヤは、ピアB 806のIPネットワーク接続ポイントの変更を認識しない。
図8でピアB 806がピアA 802に送信するCUメッセージ808だけでなく、ピアB 806は、CUメッセージ812を仮想接続サブスクライブ−通知サービス(VC SNS)814にも送信する。本発明の一実施形態による仮想接続サブスクライブ−通知サービスについて、図10を参照しながら以下で説明する。
図9は、図8の仮想接続メッセージの順序例を示している。図9を参照すると、ピアB 806はまず、CUメッセージ812を仮想接続サブスクライブ−通知サービス814に送信する。それと同時に(実用上)、ピアB 806はConnect Updateメッセージ808をピアA 802に送信する。その応答として、ピアA 802は、CUAメッセージ810をピアB 806に送信する。CUメッセージ808およびCUAメッセージ810は、2つのピアの間の通信接続を更新するため、仮想接続プロトコルを完成させるのに適する仮想接続メッセージペアの一例である。図8および図9に示されている例は、あまり複雑でない仮想接続メッセージプロトコルの例の1つである。ここでは、以下の例と対比して詳しく説明している。
図8に示されている例から先へ進む前に、ローカル接続変換テーブルを更新するときに生じると思われる特別なケースについての説明は有益であろう。ピアBが一方のネットワーク接続ポイント(IP、ポート)から他方の(IP、ポート)に移動した後、元のネットワーク接続ポイントをピアBにより放棄することができる。一方のピアによって放棄されたネットワーク接続ポイントは、他のピアによって請求されるか、または他のピアに再度割り当てられ、例えば、IPv4ネットワークサービスプロバイダは、プールから通信ピアにIPv4アドレスを割り当て、その後、ピアがIPv4アドレスを放棄するかまたは解放したときに再割り当てのためIPv4アドレスをプールに返すことにより、IPv4アドレスのプールを管理することができる。ピアBが移動した後にピアC(図8に示されていない)がネットワークに接続した場合、ピアCはピアBによって放棄されたネットワーク接続ポイントを占有することができる。その後、ピアAがまだピアBとのアクティブな通信接続を保っている間、ピアCがピアAと通信接続を確立した場合、ローカル接続変換テーブル内にコンフリクトが発生することがある。以下の表4は、ピアAでのローカル接続変換テーブルに関する複数の側面を示している。
Figure 2005039832
表4は、ピアAのネットワーク接続ポイント(IP、ポート)、ピアBの元のネットワーク接続ポイント(IP、ポート)、および上位レイヤプロトコルTCPを含む元の接続指定を伴う、第1のローカル接続変換テーブルエントリを示している。第1のエントリに対する現在の接続指定は、ピアBがネットワーク接続ポイントを(IP、ポート)に変更していることを示している。つまり、第1のエントリは図8に例示されているシナリオに対応している。表4は、ピアAのネットワーク接続ポイント(IP、ポート)からピアCのネットワーク接続ポイント(IP、ポート)へのTCP/IP接続として指定する元の接続を伴う、第2のローカル接続変換テーブルエントリを示している。対応する現在の接続指定は同じである。
仮にIPがIPと同じであり、ポートがポートと同じであれば、ローカル接続変換テーブル内の第1および第2のエントリは同じ元の接続指定を持ち、つまり、コンフリクトしている可能性がある。この例では、ピアCから(IP、ポート)への接続をローカルで再接続することにより、ピアAでコンフリクトを避けることができるが、ただし、接続を受け入れる前は、ポートはポートと異なる。非IPベースのコンピュータネットワークについても同様の戦略を採用することができる。元の接続指定と現在の接続指定との間の一対一の関係を確実なものとするため、現在の接続指定に関して類似のコンフリクトチェックおよびアクションが必要になることがある。
CUメッセージを生成できる悪意あるピアは、仮想接続機能を使用するピアに大混乱を引き起こせる場合がある。接続更新を防止するために、本発明の一実施形態では、それぞれの仮想接続メッセージは、信頼できるピアからとしてメッセージを認証する暗号化した署名を含むことができる。認証の基礎を確立するために、仮想接続モジュールを組み込むピアは、通信接続を確立するときに一連の仮想接続メッセージを交換することができる。例えば、ピアは、楕円曲線Diffie−Hellman公開鍵交換方式を使用して、暗号化認証の基礎を確立することができる。このような方式および他のそのような好適な方式は、当技術分野において周知のため、本明細書でさらに詳しい説明をする必要はない。暗号化認証の基礎は、必要ならばメッセージ暗号化にも使用できる。
例えば、通信接続を確立する際に送受信される一連の仮想接続メッセージ(ピアネゴシエーションメッセージ)は、図6のピアネゴシエーションコンポーネント608により処理することができる。ピアネゴシエーションメッセージと共にピアにより交換される他の情報としては、ピアが知るピアのネットワーク接続ポイント、特定のピアが移動できるかどうかを示す情報、および特定のピアの処理能力を示す情報などを含むことができる。ピアのネットワーク接続ポイントを利用し、後述のようにピアがネットワークアドレス変換(NAT)の背後にあるか判別することができる。例えば、ピアの処理能力は、通信接続を確保するピアにより選択された暗号化認証方式に影響を及ぼす場合がある。
本発明の一実施形態では、仮想接続サブスクライブ−通知サービスにより、通信ピアが、ピアネットワーク接続ポイント変更イベントへのサブスクライブと、ネットワーク接続ポイント変更イベントのパブリッシュと、サブスクライブされ、パブリッシュされたネットワーク接続ポイント変更イベントの通知の受信とを行うことができる。サブスクライブ−通知サービス(またはパブリッシュ−サブスクライブサービス)は、当技術分野において周知であり、したがって、詳細の一部のみをここで説明する。
本発明の一実施形態では、ネットワーク接続ポイント変更イベントは、ピアがそのネットワーク接続ポイントを変更したとき、例えば、図8のピアBが第1のネットワーク接続ポイント(IP、ポート)から第2のネットワーク接続ポイント(IP、ポート)に移動したときに発生する。ネットワーク接続ポイント変更イベントへのサブスクライブには、サブスクライブするピアから仮想接続サブスクライブ−通知サービスへのサブスクライブメッセージの送信を含むことができる。サブスクライブメッセージでは、例えば、サブスクライブするピアがアクティブな通信の相手であるピアに接続している特定のネットワーク接続ポイントを指定することができる。サブスクライブメッセージは、さらに、仮想接続サブスクライブ−通知サービスがサブスクリプションと一致するイベントの通知を送信することができる通知アドレスも含むことができる。ネットワーク接続ポイント変更イベントのパブリッシュには、特定のピアによる第1の(前のまたは元の)ネットワーク接続ポイントから第2の(または現在の)ネットワーク接続ポイントへのネットワーク接続ポイントの変更を特定する仮想接続サブスクライブ−通知サービスに、イベントが発生するピアからのパブリッシュメッセージの送信も含むことができる。CUメッセージは、適当なパブリッシュメッセージの一例である。
パブリッシュメッセージへの応答として、仮想接続サブスクライブ−通知サービスは、各サブスクリプションをチェックし、および通知メッセージをそのパブリッシュされたイベントと一致するサブスクリプションの通知アドレスに送信することができる。通知メッセージは、例えば、通知されるピアが移動したピアにCURメッセージを送信できるように、移動したピアの現在のネットワーク接続ポイントを含むことができる。通知メッセージは、移動したピアによってパブリッシュされたCUメッセージのコピーを含むことができる。本発明の一実施形態では、サブスクリプションは、イベントをパブリッシュしたピアの移動元のネットワーク接続ポイントをサブスクリプションで指定した場合、つまり、パブリッシュするピアの、元のネットワーク接続ポイントをサブスクリプションで指定した場合に、パブリッシュされたネットワーク接続ポイント変更イベントと一致する。これに替わる実施形態では、ネットワーク接続ポイント変更イベントとネットワーク接続ポイント変更イベントサブスクリプションとの照合には、後述の追加ステップおよび/または基準が必要になる場合がある。
図10は、本発明の一実施形態によるモジュール型仮想接続サブスクライブ−通知サービスアーキテクチャの例を示している。仮想接続サブスクライブ−通知サービス1000は、ピア(例えば、図8のピアA 802およびピアB 804)からサブスクライブメッセージ1004を受け取り、および解析し、その後、対応するサブスクリプション1006をサブスクリプションデータベース1008に格納するサブスクライブモジュール1002を含む。パブリッシュモジュール1010は、ピアからパブリッシュメッセージ1012を受け取り、および解析し、解析されたネットワーク接続ポイント変更イベント1014を照合モジュール1016にサブミットする。照合モジュール1016では、サブスクリプションデータベース1008において各ネットワーク接続ポイント変更イベント1014と一致するサブスクリプションを検索し、および一致しているサブスクリプション1018のリストを通知モジュール1020にサブミットする。通知モジュール1020は、通知メッセージ1022を生成し、およびリスト1018に記載されている、一致するサブスクリプションの通知アドレスに送信する。
1つまたは複数の仮想接続サブスクライブ−通知サービスは、仮想接続機能を組み込んだコンピュータネットワーク内のCUメッセージの単独の発信源となることが可能である。しかし、本発明の一実施形態では、移動するピアにCUメッセージを可能な限り直接、通信ピアに送信させるポリシーを実装し、および仮想接続サブスクライブ−通知サービスの役割を、CUメッセージを直接送信する(「直接接続更新」)ことが可能でない状況に予約することにより拡張性を高めることができる。直接接続更新が可能でない状況の例としては、通信接続に加わっている複数の当事者が同時に移動する場合、および移動するピアがネットワークアドレス変換(NAT)の背後にいるピアと通信している場合などがある。
図11は、図8に示されている例を拡張し、通信接続に関する複数の当事者が同時に移動するときに仮想接続サブスクライブ−通知サービス814が果たす役割を例示している。図8と同様、図11のピアA 802は、IPネットワーク上のピアB 804とのアクティブな通信接続を有する。図11には明示的に示されていないが、ピアA 802およびピアB 804は、互いのネットワーク接続ポイントの変更にサブスクライブしている。つまり、ピアA 802は、IPで接続されているピア(つまり、ピアB 804)のネットワーク接続ポイント変更にサブスクライブするサブスクライブメッセージを仮想接続サブスクライブ−通知サービス814に送信しており、また同様に、ピアB 804はIPで接続されているピア(つまり、ピアA 802)により生成されたネットワーク接続ポイント変更にサブスクライブするサブスクライブメッセージを仮想接続サブスクライブ−通知サービス814に送信している。
図8をもう一度見ると、ピアB 804は、ネットワーク接続ポイントを変更し、CUメッセージ812を仮想接続サブスクライブ−通知サービス814に送信することによりそのネットワーク接続ポイント変更イベントをパブリッシュし、ピアA 802にCUメッセージを送信することによりピアA 802との接続を直接更新しようと試みる(図11には示されていない)。しかし、図11では、ピアA 802は同時に(例えば、ピアA 802がピアB 806からCUメッセージを受信する前に)、そのIPネットワーク接続ポイントをIPアドレスIPからIPアドレスIPに変更している、つまり、ピアA 802はピアA 1102に移動している。本発明の一実施形態により、移動したピアA 1102は、CUメッセージ1104を仮想接続サブスクライブ−通知サービス814に送信することによりネットワーク接続ポイント変更イベントをパブリッシュし、その後、ピアB 802にCUメッセージを送信することによりピアB 802との接続を直接更新しようと試みる(また図11には示されていない)。
ピアは両者共に(ピアA 802、ピアB 804)移動しているため、いずれの直接接続更新も成功しない。ピアA 1102およびピアB 806は、補助なしでは通信を続行できない場合がある。本発明の一実施形態では、仮想接続サブスクライブ−通知サービス814は、両ピア(ピアA 802、ピアB 804)の同時移動を検出し、ピアの少なくとも一方に他方が移動したことを通知するという形で補助する。仮想接続サブスクライブ−通知サービス814は、例えば、構成可能な期間内に(例えば、1秒以内に)それぞれのピアがネットワーク接続ポイント変更イベントを仮想接続サブスクライブ−通知サービス814にパブリッシュした場合に2つのピアが同時に移動したと判別することができる。
図11に示されている例では、仮想接続サブスクライブ−通知サービス814は、CUメッセージ1104および時間的に近すぎて直接接続更新を実行できなかったCUメッセージ812を受け取り、ピアA 802およびピアB 804が同時に移動したと判断する。その結果、仮想接続サブスクライブ通知サービス814は、通知メッセージ1006をピアB 806に送信し、ピアA 802のネットワーク接続ポイントが変更されたことをピアB 806に通知する。通知メッセージ1106は、ピアB 806が対応する元の接続指定および現在の接続指定、例えば、ピアA 1102の元のIPアドレスIPおよび現在のIPアドレスIPを判別するために使用できる情報を含む。
通知メッセージ1106を受け取った結果として、ピアB 806はピアA 1102の現在のネットワーク接続ポイントを判別することができる。ピアB 806とピアA 1102との間の接続を更新するために、ピアB 806はCU(CU)メッセージ1108をピアA 1102に送信し、本発明の一実施形態により、Peer A 1102はCUA(CUA)メッセージ1110で応答する。AおよびBでのローカル接続変換テーブル更新が正常に完了した後、ピアA 1102とピアB 806との通信接続は更新されている。
図12は、図11の仮想接続メッセージの順序例を示している。図12を参照すると、ピアB 806はまず、CUメッセージ812を、ピアA 1102は、CUメッセージ1104を仮想接続サブスクライブ−通知サービス814に送信する。CUメッセージ812、1104は、相次いで仮想接続サブスクライブ−通知サービス814に届き、ピアA 1102およびピアB 806が同時に移動した可能性のあることを仮想接続サブスクライブ−通知サービス814に警告する。ピア1102、806が通信できなくなるのを防止するために、仮想接続サブスクライブ−通知サービス814は通知メッセージ1106をピアB 806に送信する。もちろん、CUメッセージ1104は、同じ結果となるCUメッセージ812の前に到着する場合があり、図11を参照して説明している例に関しては、通知メッセージをピアA 1102、ピアB 806、またはその両者に送信することができる。
ピアB 806が通知メッセージ1106を受信すると、ピアB 806は、CUメッセージ1108をピアA 1102に送信するよう求められる。CUメッセージ1110に対する応答として、ピアA 1102はCUAメッセージ1110をピアB 806に送信し、このシーケンスは完了する。
NATがない場合、かつ/またはピアがNATの背後にないことが知られている場合、コンピュータネットワークでは、通知メッセージ1106はCUメッセージ1108として使用することができ、また応答としてピアA 1102に送信されたCUA 1110で接続更新が完了するので、CUメッセージ1108は余分である。NATを使用するコンピュータネットワークでは、CURメッセージ(図12には示されていない)は後述のように有益な役割を果たす。
ネットワークアドレス変換(NAT)は、当技術分野において周知であり、したがって、その特徴の一部のみをここで説明する。いくつかのコンピュータネットワークでは、それぞれのネットワーク接続ポイントはネットワークアドレスに関連付けられており、例えば、IPネットワークでは、各IPネットワーク接続ポイントはIPアドレスに関連付けることができる。ネットワークアドレスは、通常、サイズが限られており、例えば、IPv4ネットワークでは、ネットワークアドレスは32ビットに制限されている。一組のネットワークアドレスをアドレス空間と考えることができる。ネットワークアドレスのサイズが制限されているネットワークでは、ネットワークアドレスが不足する可能性がある、つまり、ネットワークアドレス空間でサポートする以上の数のネットワーク接続ポイントが望まれる可能性がある。NATは、新しいアドレス空間を既存のアドレス空間に、例えば、既存のアドレス空間内の単一ネットワークアドレスで接続する一手段となっている。NATメカニズムの詳細については、非特許文献3を参照のこと。
この説明では、例えば、既存のアドレス空間をパブリックアドレス空間と呼び、図8を参照して説明されている例が示されており、NATによりパブリックアドレス空間に接続されているアドレス空間をプライベートアドレス空間と呼ぶ。プライベートアドレス空間内のピア(つまり、プライベートネットワークアドレスに関連付けられているネットワーク接続ポイントを持つピア)は、パブリックアドレス空間内のピア(つまり、パブリックネットワークアドレスに関連付けられているネットワーク接続ポイントを持つピア)に対してNATの背後にあるといわれる。
本発明の一実施形態では、NATを組み込んでいるコンピュータネットワークの特徴は、パブリックアドレス空間内のピア(パブリックピア)は、プライベートピアが最初にパブリックピアとコンタクトをとっていない限り、プライベートアドレス空間内のピア(プライベートピア)と通信することはできないという点である。さらに、新しいネットワークアドレスを持つ新しいネットワーク接続ポイントに移動するピアが、NAT機構から見て、異なるピアであるように見えるようにするため、NATメカニズムが、ネットワークアドレスによりピアを識別することは、一般的な方法である。そのような場合、移動したパブリックピアはCUメッセージを直接プライベートピアに送信することはできない。本発明の一実施形態では、仮想接続サブスクライブ−通知サービスは、接続更新を円滑にすることができる。
図13は、図8を参照して説明している例の一変種を示しており、NATを組み込んだコンピュータネットワーク内の仮想接続サブスクライブ−通知サービス814の果たす役割を例示している。図13では、IPベースのネットワーク上でピアA 1302は、ピアB 804との通信接続を持つ。ピアA 1302は、破線で示されているNAT 1304の背後にある。ピアA 1302は、それに関連付けられている少なくとも2つのIPアドレス、NAT 1304の背後にあるプライベートアドレス空間におけるIPアドレスIPと、パブリックアドレス空間におけるIPアドレスIPNATとを持つ。図13に示されている例では、ピアA 1302は、移動しない。ピアB 804は、最初に、パブリックアドレス空間内のIPアドレスIPに配置されており、その後、これもまたパブリックアドレス空間内のIPアドレスIPに移動する。
ピアA 1302は、サブスクライブメッセージ1306を仮想接続サブスクライブ通知サービス814に送信することによりピアB 804がパブリッシュしたネットワーク接続ポイント変更イベントにサブスクライブする。サブスクライブメッセージ1306を送信することにより、プライベートピアA 1302は、仮想接続サブスクライブ−通知サービス814との通信接続も確立し、仮想接続サブスクライブ−通知サービス814が、後で、メッセージ、例えば通知メッセージ1308を送信することができる。本発明の一実施形態では、ピアB 804は、ピアA 1302がプライベートネットワークアドレスに関連付けられていると判別することができる。ピアB 804が、ピアA 1302がプライベートネットワークアドレスに関連付けられていると判別した場合、本発明の一実施形態では、ピアB 804は、ピアA 1302のネットワーク接続ポイントの変更にサブスクライブしないが、それは、プライベートネットワーク接続ポイント変更イベント通知に基づいて、ピアB 804がアクションを実行できない、つまり、ピアA 1302にCUメッセージを送信できないからである。
IPアドレスIPに移動したピアB 806は、CUメッセージ812を仮想接続サブスクライブ−通知サービス814にパブリッシュする。ピアB 806がCUメッセージ(図13に示されていな)を直接ピアA 1302に送信しようとした場合、プライベートピアA 1302はまだピアB 806とその新規IPアドレスIPで接続していないので、この試行は失敗することがある。本発明の一実施形態では、ピアB 806は、ピアA 1302とさらに通信する前に、ピアA 1302からの接続を待つ。
CUメッセージ812を受信した結果、仮想接続サブスクライブ通知サービス814は、そのサブスクリプションデータベースを検索し、プライベートピアA 1302がピアB 804ネットワーク接続ポイントの変更にサブスクライブしていると判別する。図11を参照して説明している例とは対照的に、ピアA 1302がプライベートピアであると判別した場合、仮想接続サブスクライブ−通知サービス814は、できる限り早く、ピアA 1302に通知メッセージ1308を送信する。通知メッセージ1308により、ピアA 1302は、CURメッセージ1310をピアB 806のピアB 806新規IPアドレスIPに送信するよう求められる。ピアA 1302が最初にピアB 806と接続すると、ピアB 806はCUメッセージ1312でCURメッセージ1310に応えることができる。ピアA 1302がCUメッセージ1312を受け取ると、仮想接続の接続更新プロトコルが完了する。
図14は、図13を参照して説明されている仮想接続メッセージの順序例を示している。図14を参照すると、ピアA 1302がピアB 804との通信接続を確立した後すぐに、ピアA 1302は仮想接続サブスクライブ−通知サービス814に、ピアBによってパブリッシュされたネットワーク接続ポイント変更イベントにサブスクライブするサブスクライブメッセージ1306を送信する。ピアB 804はピアB 806に移動し、CUメッセージ812を仮想接続サブスクライブ−通知サービス814に送信することによりネットワーク接続ポイント変更イベントをパブリッシュする。その結果、ピアA 1302はプライベートである(つまり、プライベートピア)ため、仮想接続サブスクライブ−通知サービス814は、通知メッセージ1308を生成し、さらに遅れることなくピアA 1302に送信する。通知メッセージ1308を受け取った結果、ピアA 1302はCURメッセージ1310をピアB 806のピアB 806新規IPアドレスIPに送信する。ピアB 806はその要求に応えてCUメッセージ1312を送信する。CURメッセージ1310およびCUメッセージ1312は、2つのピアの間の通信接続を更新するための仮想接続プロトコルを完了するのに適している仮想接続メッセージペアの一例である。
図15は、図13に示されている例を拡張し、通信接続の複数の当事者が同時に移動し、当事者の少なくとも一方がNATの背後にあるときに仮想接続サブスクライブ−通知サービス814が果たす役割を説明している。図13に関して、図15のプライベートピアA 1302は、ピアB 804と通信接続を持っており、およびピアA 1302は、ピアB 804によってパブリッシュされたネットワーク接続ポイント変更イベントにサブスクライブしている。ピアB 804は、ネットワーク接続ポイントをIPアドレスIPからIPアドレスIPに変更し、移動すると、ピアB 806は、ネットワーク接続ポイント変更をCUメッセージ812で仮想接続サブスクライブ−通知サービス814にパブリッシュする。
図15では、ピアA 1302も、ネットワーク接続ポイントをプライベートIPアドレスIPからプライベートIPアドレスIPA'に変更する、つまり、NAT 1304の背後にあるピアA 1302は、NAT 1504の背後にあるピアA 1502に移動する。NAT 1304は、NAT 1504と同じでよいが、NAT1504は、異なっていてもよく、つまり、IPアドレスIPA'は、IPアドレスIPと同じプライベートアドレス空間内にあってもよく、またはIPアドレスIPA'は、異なるプライベートアドレス空間、例えば、異なる組織によって管理されているプライベートアドレス空間にあってもよい。移動すると、プライベートピアA 1502は、仮想接続サブスクライブ−通知サービス814(パブリックアドレス空間内に配置されている)からだけでなくパブリックピアBからもメッセージ(例えば、通知メッセージ)を受信できないことがある。しかし、ピアA 1502は、CUメッセージ1506を仮想接続サブスクライブ通知サービス814に送信することによりネットワーク接続ポイント変更イベントをパブリッシュし、これにより、プライベートピアA 1502(新しいIPアドレスIPA'の)と仮想接続サブスクライブ−通知サービス814との間でNAT 1504を介して通信を再確立する。
この例では、ピアB 806は、ピアA 1302がプライベートピアであると判別しており、したがってピアB 806はCUメッセージを直接ピアA 1302に送信することを試みない。移動して、ピアA 1502は、CUメッセージ(図15に示されていない)を直接ピアB 804に送信しようと試みるが、ピアB 804も移動しており、その試みは失敗する。図11を参照して説明した例に関して、仮想接続サブスクライブ通知サービス814からの通知メッセージで、仮想接続プロトコルを進行させることができる。図11を参照して説明した例とは異なり、ピアB 806への通知メッセージにより、パブリックピアB 806がプライベートピアA 1502と接続することはできないが、代わりに、仮想接続サブスクライブ−通知サービス814は、ピアB 806の新しいIPアドレスIPをピアA 1502に通知する通知メッセージ1508をピアA 1502に送信する。その後、プライベートピアA 1502は、ピアB 806に、CUメッセージ1510を送信し、ピアB 806がCUAメッセージ1512で応答できるようにし、およびピアB 806にそのように要求する。
図16は、図15の仮想接続メッセージの順序例を示している。図16を参照すると、ピアB 806は、CUメッセージ812を仮想接続サブスクライブ−通知サービス814に送信する。その後すぐに、ピアA 1502は、CUメッセージ1506を仮想接続サブスクライブ−通知サービス814に送信する。CUメッセージ812、1506を相次いで受信したことに対する応答として、仮想接続サブスクライブ−通知サービス814は通知メッセージ1508をピアA 1502に送信する。メッセージ1508に対する応答として、ピアA 1502はCUメッセージ1510をピアB 806に送信する。CUメッセージ1510の結果、応答としてピアB 806によりCUAメッセージ1512がピアA 1502に送信される。
様々なシナリオ例に関して仮想接続プロトコルの態様を説明してきたが、次に、本発明の一実施形態により仮想接続プロトコルメッセージを送信するときに仮想接続プロトコル参加者により使用される決定プロシージャの例を取りあげる。
図17は、例えば、ローカルネットワーク接続ポイント(NAP)変更イベントの結果として、接続管理コンポーネント606(図6の)により実行されるステップ例を示している。ステップ1702で、接続管理コンポーネント606は、ローカルネットワーク接続ポイント変更イベントが発生したことを検出する(または、イベントを通知する)。その結果、ステップ1704で、CUメッセージを仮想接続サブスクライブ−通知サービスに送信することによりイベントがそのサービスにパブリッシュされる。ステップ1706で、接続管理コンポーネント606は、ローカル接続変換テーブル604内の次のエントリ、またはまだ何も選択されていなければ第1のエントリを選択する。ステップ1708で、選択されたローカル接続変換テーブル604のエントリが更新され、現在の接続指定は新しいローカルネットワーク接続ポイントに合致したものとなる。
リモートピアにおいて対応するLCTテーブル604の更新を実行するために、プロシージャはステップ1710に進み、そこで、リモートピアがパブリックアドレス空間内にあるか、またはプライベートアドレス空間内にあるかが判別される。リモートピアがパブリックであると判別された場合、プロシージャはステップ1712に進む。ステップ1712で、CUメッセージは、リモートピアに送信される。リモートピアがプライベートであると判別された場合、接続管理コンポーネント606は仮想接続サブスクライブ−通知サービスに依存し、リモートピアにネットワーク接続ポイント変更イベントを通知し、プロシージャはステップ1714に進む。ステップ1714で、このプロシージャでは、ローカル接続変換テーブル604内の各エントリが選択されているかどうかをチェックする。選択されていなければ、プロシージャはステップ1706に戻り、次のエントリを選択し、選択されていれば、このプロシージャ例は終了する。
図18は、例えば、パブリッシュされたネットワーク接続ポイント変更イベントの結果として、(図10の)仮想接続サブスクライブ−通知サービス1000の照合モジュール1016により実行されるプロシージャ例を示している。ステップ1802で、照合モジュール1016は、特定のピア、この場合は、初期IPアドレスIPである上の例のピアB 804(例えば、図8を参照して説明されている例)に対するネットワーク接続ポイント変更イベントを受け取る。ステップ1804で、照合モジュール1016は、サブスクリプションデータベース1008内の次の候補サブスクリプションを選択する。この例では、候補サブスクリプションは、IPアドレスIPから移動するピア(つまり、ピアB 804)によりパブリッシュされたネットワーク接続ポイント変更イベントへのサブスクリプションである。第1の候補サブスクリプションは、候補サブスクリプションがすでに選択されていなければ選択される。候補サブスクリプションがなければ、プロシージャは終了することがある。
ステップ1806において、サブスクリプションを行ったピア(サブスクライバ)が、パブリックまたはプライベートであるかどうか判別される。以下では、ピアがパブリックであるかプライベートであるかを判別する決定プロシージャの例について、図19を参照しながら説明する。サブスクライブするピアがプライベートである場合、ネットワーク接続ポイント変更イベントをパブリッシュしたピアは、仮想接続サブスクライブ−通知サービスに依存し、プライベートピアにイベントを通知し、およびプロシージャはステップ1808に進む。ステップ1808で、サブスクライバに対し、ネットワーク接続ポイント変更イベントが通知される。それとは別に、ステップ1808で、例えば、通知モジュール1020がサブスクライバを、通知を受けるピアのリストに追加することができる。
サブスクライブするピアがパブリックであれば、例えば、サブスクライバが同時にネットワーク接続ポイントの変更も行わない限り、ネットワーク接続ポイント変更イベントをパブリッシュしたピア(パブリッシャ)は、サブスクライバにCUメッセージを直接、しかも仮想接続サブスクライブ−通知サービスの助けを借りずに送信することができる。サブスクライバがこのような同時移動を検出するために、プロシージャはステップ1810に進む。ステップ1810で、プロシージャは、サブスクライバがネットワーク接続ポイント変更イベントをパブリッシュするのも、この例においては最長で1秒間待つ。プロシージャがステップ1810に進んだときにサブスクライバがすでにネットワーク接続ポイント変更イベントをパブリッシュしている場合、プロシージャはステップ1810で待つことに時間を費やさないようにできる。
ステップ1810の後、プロシージャはステップ1812に進み、そこでは、パブリッシャがサブスクライバにCUメッセージを送信できる前にサブスクライバが移動しているかどうか、つまり、最長期間を満了する前にサブスクライバがネットワーク接続ポイント変更イベントをパブリッシュもしているかどうかを判別する。サブスクライバが「同時に」移動したと判定された場合、プロシージャは、ステップ1808に進み、サブスクライバにパブリッシャの移動を通知することができる。そうでない場合、仮想接続サブスクライブ−通知サービスは、パブリッシャが直接サブスクライバにCUメッセージを送信できたと仮定する。プロシージャは、ステップ1808を飛ばし、およびステップ1814に進む。本発明の一実施形態全体を通して、複数の実行スレッドおよび他の並列処理手法を有効に活用できるが、ステップ1810およびステップ1812は、波線1816により囲まれ、候補のサブスクライバの処理ループ遅延を最小にするために、これらのステップが並列処理または同等の手法(例えば、定期的にチェックする監視項目リスト)の候補として適することを示す。
もし候補のサブスクライバがプライベートであり、かつ通知の試みが失敗した場合、上記の図15を参照して説明した例においては、パブリッシャ同様、プライベートサブスクライバも移動している可能性がある。その場合、通知の失敗が検出されると、プロシージャはステップ1810に進み、プライベートサブスクライバによるネットワーク接続ポイント変更イベントのパブリッシュを待つ。プライベートサブスクライバに対するステップ1810の最大待ち時間の最大時間は、パブリックサブスクライバに対する最大待ち時間と異なることがある。
ステップ1814において、プロシージャは、さらに候補のサブスクライバをチェックする。候補のサブスクライバがまだ存在すれば、プロシージャは、次のサブスクライバのためステップ1804に戻る。そうでない場合、プロシージャは終了することができる。
本発明の一実施形態では、通信ピアがパブリックであるか、またはプライベートであるかにより動作を決定する。上述のように、少なくとも2つのネットワークアドレス、つまりNATサービスのパブリックネットワークアドレスおよびNATサービスにより生成されたプライベートアドレス空間内のピアのネットワークアドレスに、プライベートピアが関連付けられる場合がある。プライベートピアは、他のピアに対する仮想接続メッセージ内のプライベートステータスに明示的にフラグを立てることができる。あるいはそれに替えて、各ピアは、送信する1つまたは複数の仮想接続メッセージ内にネットワークアドレスを入れることもできる。その後、メッセージを受け取る他のピアは、含まれているネットワークアドレスをメッセージの見かけの送信元アドレスであるネットワークアドレスと比較することができる。含まれているネットワークアドレスが見かけの送信元アドレスと一致する場合、ピアは、パブリックであると判断することができる。含まれているネットワークアドレスがメッセージの見かけの送信元アドレスと一致しない場合、送信側ピアは、プライベートであると判断することができる。
図19は、サブスクリプションがパブリックピアまたはプライベートピアに関連付けられているかどうかを判別するために、仮想接続サブスクライブ通知サービス1000(図10の)が実行できるステップの例を示す。ステップ1902において、仮想接続サブスクライブ−通知サービスは、TCP/IPネットワーク上でピアからサブスクライブメッセージを受信する。ステップ1904において、サブスクライブメッセージの見かけの送信元は、メッセージ「エンベロープ」、例えば、メッセージのIPヘッダを解析することにより判別される。あるいはそれに替えて、メッセージの見かけの送信元は、送信するピアとの確立された通信接続の属性を問い合わせることにより利用可能にできる。ステップ1906において、サブスクライブメッセージの内容が解析される。本発明の一実施形態では、ネットワーク接続ポイント変更イベントのサブスクライブメッセージは、サブスクライブするピアのネットワークアドレス(この例ではIPアドレス)を含むが、そのネットワークアドレスはサブスクライブするピアに知られている。
ステップ1908で、サブスクライブメッセージの見かけの送信元を、サブスクライブメッセージに含まれるネットワークアドレスと比較する。サブスクライブメッセージの見かけの送信元が、サブスクライブするピアによりサブスクライブメッセージに含まれるネットワークアドレスと一致する場合、プロシージャはステップ1910に進む。そうでない場合、プロシージャはステップ1912に進む。ステップ1910において、サブスクリプションは、パブリックピアに関連付けられていると判別される。ステップ1912において、サブスクリプションは、プライベートピアに関連付けられていると判別される。この判別は、仮想接続サブスクライブ−通知サービス1000の異なるモジュール内で繰り返し、または例えばサブスクライブモジュール1002の中で、1回だけ実行することができ、および、サブスクリプションはサブスクリプションデータベース1008の中に、パブリックまたはプライベートのフラグが立てられて格納される。
仮想接続メッセージを、下位レイヤのネットワーキングプロトコルに組み込むことができる。例えば、インターネットプロトコルのIPオプション機能を使用してIPデータグラムに仮想接続メッセージを追加することができる。インターネットプロトコルのIPオプション機能の詳細については、非特許文献4を参照のこと。1つまたは複数のIPオプションを使用して仮想接続メッセージを下位レイヤのプロトコルデータグラムに組み込む場合、例えば、それらの追加オプションを仮想接続オプション(VCオプション)と呼ぶ。発信仮想接続メッセージを搬送する仮想接続オプションは通常、上位プロトコルレイヤによって生成された発信プロトコルユニットに組み込まれるが、仮想接続レイヤは、次の上位レイヤプロトコルユニットを待つことが有効でない、かつ/または不効率である場合に、例えば、仮想接続オプションを組み込んだ各自の「空の」IPパケットを生成することができる。
伝送制御プロトコルのTCPオプション機能を利用することにより、仮想接続オプションをTCPデータグラムに追加することができる。伝送制御プロトコルのTCPオプション機能の詳細については、非特許文献5を参照のこと。データグラムオプションを明示的にサポートしていない下位レイヤプロトコルであっても、仮想接続オプションを下位レイヤプロトコルデータグラムに付加することにより仮想接続オプションを組み込むことができる。図20は、仮想接続オプションをUDPデータグラムに付加する方式の例を示している。
図20では、1つまたは複数の仮想接続オプション2002は、IPネットワーク上で送信されるUDPデータグラムに付加されている。UDPデータグラムは、UDPヘッダ2004とUDP本文2006を含む。UDPヘッダ2004は、UDP本文2006にユーザデータを含むUDPデータグラムの長さを示す、UDPデータ長フィールド(LengthUDP)を含む。ユーザデータグラムプロトコルの詳細については、非特許文献6を参照のこと。UDPデータグラムの先頭にIPヘッダ2008が置かれ、IPネットワーク上で送信することができる。UDPデータグラムおよび仮想接続オプション2002は、この例では、IPデータグラムの本文である。IPヘッダ2008は、IPヘッダ2008内のバイト数を示すIPヘッダ長データフィールド(LengthIP Header)およびIPデータグラム(ヘッダ2008および本文2004、2006、2002)内のバイト数を示すIP合計データ長フィールド(LengthIP)を含む。仮想接続オプション2002(LengthVC Options)の長さは、次のようにして計算することができる。
LengthVC Options = LengthIP - LengthIP Header - LengthUDP
つまり、1つまたは複数の仮想接続オプション2002のバイト(オクテット)数は、IPデータグラム内の総バイト数からIPヘッダ2008内のバイト数を引き、さらにUDPデータグラム内のバイト数を引くように計算される。
同様の方式を用いて、仮想接続オプションを他の下位レイヤプロトコルデータグラムに付加することができる。しかし、このような付加されるデータは、仮想接続モジュール(例えば、図6の仮想接続モジュール600)を組み込んでいないピアにより適切に解釈されない場合がある。リモートピアが仮想接続モジュールを組み込んでいるかどうかをテストするため、1つまたは複数の仮想オプション、例えば、特定の仮想接続プローブオプションを、リモートピアに送信される第1のネットワークプロトコルデータグラムに組み込むことができる。もし応答に1つまたは複数の対応する仮想接続オプションが含まれる場合、リモートピアに、VC 拡張というフラグを立てることができる、つまり、仮想接続プロトコルに適切に参加することができる。
図21は、例えば、リモートピアが仮想接続操作をサポートするかどうかを判別するため、仮想接続モジュール600の(図6の)ピアネゴシエーションコンポーネント608により実行されるステップ例を示している。ステップ2102において、SYNフラグがセットされ、仮想接続プローブオプションを組み込む、初期TCPデータグラムはリモートピアに送信される。ステップ2104において、初期TCPデータグラム、例えば、SYNおよびACKフラグがセットされているか、またはRSTフラグがセットされているTCPデータグラムに対する応答を受信する。ステップ2106で、応答を解析し、仮想接続プローブオプションがないか調べる。ステップ2108で、応答に仮想接続プローブオプションが組み込まれているかどうかに関する判別を行う。応答に仮想接続プローブオプションが組み込まれている場合、プロシージャはステップ2110に進み、そこで、リモートピアにVC 拡張のフラグが立てられる。そうでなければ、プロシージャはステップ2112に進み、リモートピアにVC 拡張でないというフラグが立てられ、リモートピアにそれ以上、仮想接続メッセージが送信されない。上述のような仮想接続機能は、この場合には使用できない。
本明細書で引用されている出版物、特許出願、および特許を含む参照はすべて、各参考文献が参照により組み込まれるように個別的にかつ具体的に指示され、かつ本明細書の中に全体が規定されている場合と同じ程度で参照により組み込まれている。
本発明を説明する文脈において(特に請求項の文脈において)「a」および「an」(1つの)および「the」(前記、その)という用語および類似の指示語を使用することは、本明細書に特に断りのない限りまたは文脈によりそうでないことが明確でない限り、単数形と複数形の両方を対象としていると解釈すべきである。「comprising」、「having」、「including」および「containing」(含む、備える、持つ)という用語は、特に断りのない限り、幅広く解釈すべき用語とする(つまり、「including,but not limited to」(を含むが、それらには限られない)を意味する)。本明細書で値の範囲を述べているのは、本明細書で断りのない限り、範囲内に収まるそれぞれの個別の値を個々に参照する簡略化した方法として使用することを単に意図しているだけであり、各個別の値は、本明細書で個々に引用されているかのように明細書に組み込まれる。本明細書で説明しているすべての方法は、本明細書で特に断りのない限り、または文脈上そうでないことが明らかでない限り、適当な順序で実行することができる。すべてのかつ任意の例、または例を意味する言葉(例えば、「such as」(など))を本明細書で使用しているが、これは、本発明をわかりやすくすることを単に目的としているだけであり、特に断りのない限り、本発明の範囲に制限を課すものではない。明細書内のすべての言葉は、非請求要素を本発明の実施に本質的なものとして示していると解釈すべきではない。
本発明の好ましい実施形態は、本発明を実施するため発明者に知られている最良の方法を含めて本明細書で説明されている。前述の説明を読めば、それらの好ましい実施形態の変更形態は当業者にとって明白になるであろう。発明者は、当業者がそのような変更形態を適切なものとして採用することを期待しており、また発明者は、発明が本明細書で特に説明しているものと異なる方法で実施されることも意図している。したがって、本発明は、適用法により許されている本明細書の請求項で引用されている主題のすべての修正および等価物を含む。さらに、本発明では、本明細書に特に断りのない限り、または文脈上そうでないことが明らかでない限り、可能なすべての変更形態における上述の要素の任意の組合せを包含する。
ネットワークによって接続されたコンピュータを例示する概略図である。 本発明の一実施形態を実施するのに使用可能なコンピュータシステム例の概要を説明する概略図である。 本発明の一実施形態による仮想接続レイヤを組み込んだレイヤ化ネットワーキングモデルの概略図である。 本発明の一実施形態による仮想接続レイヤを組み込んだレイヤ化TCP/IP実装例の概略図である。 本発明の一実施形態による仮想接続レイヤを組み込んだ他のレイヤ化TCP/IP実装例の概略図である。 本発明の一実施形態による仮想接続レイヤサービスを実装するのに適している仮想接続モジュール例を説明する概略図である。 本発明の一実施形態によるローカル接続変換操作の例を示す概略図である。 本発明の一実施形態による仮想接続プロトコルの例を示す概略図である。 本発明の一実施形態による図8の仮想接続プロトコルメッセージの順序例を示すプロトコル図である。 本発明の一実施形態によるモジュール型仮想接続サブスクライブ−通知サービスアーキテクチャの例を示す概略図である。 本発明の一実施形態による同時移動シナリオの仮想接続プロトコルの例を示す概略図である。 本発明の一実施形態による図11の仮想接続プロトコルメッセージの順序例を示すプロトコル図である。 本発明の一実施形態によるネットワークアドレス変換を組み込んだコンピュータネットワーク内の仮想接続プロトコルの例を示す概略図である。 本発明の一実施形態による図13の仮想接続プロトコルメッセージの順序例を示すプロトコル図である。 本発明の一実施形態による同時移動およびネットワークアドレス変換を組み込んだシナリオに対する仮想接続プロトコルの例を示す概略図である。 本発明の一実施形態による図15の仮想接続プロトコルメッセージの順序例を示すプロトコル図である。 本発明の一実施形態による仮想接続モジュールによって実行されるステップの例を示す流れ図である。 本発明の一実施形態による仮想接続サブスクライブ−通知サービス照合モジュールによって実行されるステップの例を示す流れ図である。 サブスクライバがパブリックであるかプライベートであるかを判別するため仮想接続サブスクライブ−通知サービスにより発明の一実施形態に従って実行されるステップの例を示す流れ図である。 本発明の一実施形態による仮想接続オプションを組み込んだUDP/IPデータグラムの概略図である。 リモートピアが仮想接続機能をサポートしているか判別するため仮想接続モジュールにより発明の一実施形態に従って実行されるステップの例を示す流れ図である。

Claims (24)

  1. コンピュータ実行可能な命令を格納するコンピュータ読取り可能な媒体であって、
    少なくとも1つのネットワーク接続ポイント変更イベントサブスクリプションを、少なくとも1つのネットワーク接続ポイント変更イベントサブスクライバから受け取ることと、
    少なくとも1つのネットワーク接続ポイント変更イベントパブリケーションを、少なくとも1つのネットワーク接続ポイント変更イベントパブリッシャから受け取ることと、
    ネットワーク接続ポイント変更イベントサブスクリプションと一致する各ネットワーク接続ポイント変更イベントパブリケーションについて、一致するパブリッシュされたネットワーク接続ポイント変更イベントを前記ネットワーク接続ポイント変更イベントサブスクライバに通知することとを含む方法を実行することを特徴とするコンピュータ読取り可能な媒体。
  2. 各ネットワーク接続ポイント変更イベントパブリケーションは、
    元のネットワーク接続ポイントの識別と、
    前記元のネットワーク接続ポイントと異なる現在のネットワーク接続ポイントの識別とを含むことを特徴とする請求項1に記載のコンピュータ読取り可能な媒体。
  3. ネットワーク接続ポイントの各識別は、インターネットプロトコル(IP)アドレスを含むことを特徴とする請求項2に記載のコンピュータ読取り可能な媒体。
  4. 各ネットワーク接続ポイント変更イベントサブスクリプションは、ネットワーク接続ポイント変更イベントサブスクライバが少なくとも1つのアクティブな通信接続を持つ相手である通信ピアを接続しているネットワーク接続ポイントの識別を含むことを特徴とする請求項1に記載のコンピュータ読取り可能な媒体。
  5. 前記少なくとも1つのネットワーク接続ポイント変更イベントパブリケーションは、
    第1のネットワーク接続ポイント変更イベントパブリッシャからの第1のネットワーク接続ポイント変更イベントパブリケーションと、
    第2のネットワーク接続ポイント変更イベントパブリッシャからの第2のネットワーク接続ポイント変更イベントパブリケーションとを含み、および
    前記第1のネットワーク接続ポイント変更イベントを各ネットワーク接続ポイント変更イベントサブスクリプションと照合することは、
    前記ネットワーク接続ポイント変更イベントサブスクリプションが前記第2のネットワーク接続ポイント変更イベントパブリッシャによって行われたことを判別することと、
    前記第2のネットワーク接続ポイント変更イベントが前記第1のネットワーク接続ポイント変更イベントの期間内に発生したことを判別することとを含むことを特徴とする請求項1に記載のコンピュータ読取り可能な媒体。
  6. 前記ネットワーク接続ポイント変更イベントを前記ネットワーク接続ポイント変更イベントサブスクリプションと照合することは、前記ネットワーク接続ポイント変更イベントサブスクリプションがプライベートネットワークアドレスを持つサブスクライバによって行われたことを判別することを含むことを特徴とする請求項1に記載のコンピュータ読取り可能な媒体。
  7. 前記方法は、ネットワーク接続ポイント変更イベントサブスクライバ毎に、前記ネットワーク接続ポイント変更イベントサブスクライバがプライベートネットワークアドレスを持つかどうかを判別することをさらに含むことを特徴とする請求項1に記載のコンピュータ読取り可能な媒体。
  8. 各ネットワーク接続ポイント変更イベントサブスクリプションは、ネットワーク接続ポイント変更イベントサブスクライバ通知アドレスを備えることと、
    前記ネットワーク接続ポイント変更イベントサブスクライバがプライベートネットワークアドレスを持つかどうかを判別することは、前記ネットワーク接続ポイント変更イベントサブスクライバ通知アドレスが前記ネットワーク接続ポイント変更イベントサブスクリプションのパブリックソースと一致しているかどうかを判別することとを含むことを特徴とする請求項7に記載のコンピュータ読取り可能な媒体。
  9. コンピュータ実行可能な命令を格納するコンピュータ読取り可能な媒体であって、前記命令は、サブスクライブメッセージを仮想接続サブスクライブ通知サービスに送信し、リモートピアによってパブリッシュされている少なくとも1つのネットワーク接続ポイント変更イベントにサブスクライブすることを含む方法を実行することを特徴とするコンピュータ読取り可能な媒体。
  10. 前記方法は、パブリッシュメッセージを前記仮想接続サブスクライブ−通知サービスに送信し、ネットワーク接続ポイント変更イベントをパブリッシュすることをさらに含むことを特徴とする請求項9に記載のコンピュータ読取り可能な媒体。
  11. 前記パブリッシュメッセージは、
    元のネットワーク接続ポイントの識別子と、
    現在のネットワーク接続ポイントの識別子とを含むことを特徴とする請求項10に記載のコンピュータ読取り可能な媒体。
  12. 前記方法は、リモートピアによってパブリッシュされたネットワーク接続ポイント変更イベントを通知する通知メッセージを、前記仮想接続サブスクライブ−通知サービスから受け取ることをさらに含むことを特徴とする請求項9に記載のコンピュータ読取り可能な媒体。
  13. 前記通知メッセージは、
    前記リモートピアの元のネットワーク接続ポイントの識別子と、
    前記リモートピアの現在のネットワーク接続ポイントの識別子とを含むことを特徴とする請求項12に記載のコンピュータ読取り可能な媒体。
  14. 前記方法は、
    パブリッシュメッセージを前記仮想接続サブスクライブ−通知サービスに送信し、ローカルネットワーク接続ポイント変更イベントをパブリッシュすることと、
    前記ローカルネットワーク接続ポイント変更イベントをパブリッシュした結果として、リモートピアによりパブリッシュされたネットワーク接続ポイント変更イベントを通知する通知メッセージを、前記仮想接続サブスクライブ−通知サービスから受け取ることをさらに含むことを特徴とする請求項9に記載のコンピュータ読取り可能な媒体。
  15. 前記仮想接続サブスクライブ−通知サービスは、パブリックアドレス空間内に配置されることと、
    前記サブスクライブメッセージは、プライベートアドレス空間から送信されることと、
    前記サブスクライブメッセージがプライベートアドレス空間から送信された結果、リモートピアによってパブリッシュされたネットワーク接続ポイント変更イベントを通知する通知メッセージを前記仮想接続サブスクライブ−通知サービスから受け取ることとを含むことを特徴とする請求項9に記載のコンピュータ読取り可能な媒体。
  16. 前記方法は、
    リモートピアによってパブリッシュされたネットワーク接続ポイント変更イベントを通知する通知メッセージを、前記仮想接続サブスクライブ−通知サービスから受け取ることと、
    前記通知メッセージを受け取った結果、CURメッセージを前記リモートピアに送信し、前記リモートピアにCUメッセージを要求することをさらに含むことを特徴とする請求項9に記載のコンピュータ読取り可能な媒体。
  17. ネットワーク接続ポイント変更イベントサブスクリプションデータベースにおいて、少なくとも第1のネットワーク接続ポイント変更イベントと一致するネットワーク接続ポイント変更イベントサブスクリプションを検索するように構成される仮想接続サブスクライブ−通知サービス照合モジュールを備えることを特徴とするコンピュータ化されたシステム。
  18. 各ネットワーク接続ポイント変更イベントは、
    元のネットワーク接続ポイント識別子と、
    現在のネットワーク接続ポイント識別子とを含むことを特徴とする請求項17に記載のコンピュータ化されたシステム。
  19. 前記ネットワーク接続ポイント変更イベントサブスクリプションは、
    ネットワーク接続ポイント識別子と、
    通知アドレスとを含むことを特徴とする請求項18に記載のコンピュータ化されたシステム。
  20. 前記ネットワーク接続ポイント変更イベントサブスクリプションは、仮に、少なくとも、前記ネットワーク接続ポイント変更イベントサブスクリプションの前記ネットワーク接続ポイント識別子が、前記第1のネットワーク接続ポイント変更イベントの前記元のネットワーク接続ポイント識別子により識別される前記ネットワーク接続ポイントのように、前記同じネットワーク接続ポイントを識別する場合、前記第1のネットワーク接続ポイント変更イベントと一致することを特徴とする請求項19に記載のコンピュータ化されたシステム。
  21. 前記ネットワーク接続ポイント変更イベントサブスクリプションは、少なくとも、
    前記ネットワーク接続ポイント変更イベントサブスクリプションの前記ネットワーク接続ポイント識別子により、前記第1のネットワーク接続ポイント変更イベントの前記元のネットワーク接続ポイント識別子により識別される前記ネットワーク接続ポイントと同じネットワーク接続ポイントが識別される場合と、
    前記ネットワーク接続ポイント変更イベントサブスクリプションの前記通知アドレスが、プライベートアドレス空間に関連付けられている場合とであっても、前記第1のネットワーク接続ポイント変更イベントと一致することを特徴とする請求項19に記載のコンピュータ化されたシステム。
  22. 前記ネットワーク接続ポイント変更イベントサブスクリプションは、少なくとも、
    前記ネットワーク接続ポイント変更イベントサブスクリプションの前記ネットワーク接続ポイント識別子により、前記第1のネットワーク接続ポイント変更イベントの前記前のネットワーク接続ポイント識別子により識別される前記ネットワーク接続ポイントと同じネットワーク接続ポイントが識別される場合と、
    第2のネットワーク接続ポイント変更イベントの前記元のネットワーク接続ポイント識別子が、前記ネットワーク接続ポイント変更イベントサブスクリプションの前記通知アドレスに対応する場合とであっても、前記第1のネットワーク接続ポイント変更イベントと一致することを特徴とする請求項19に記載のコンピュータ化されたシステム。
  23. 前記仮想接続サブスクライブ−通知サービス照合モジュールは、少なくとも、前記第1のネットワーク接続ポイント変更イベントと一致する、各ネットワーク接続ポイント変更イベントサブスクリプションのネットワーク接続ポイント変更イベント通知を生成させるよう、さらに構成されていることを特徴とする請求項17に記載のコンピュータ化されたシステム。
  24. 少なくともネットワーク接続ポイント変更イベントパブリッシュメッセージを受け取るように構成されている、仮想接続サブスクライブ−通知サービスパブリッシュモジュールをさらに備えることを特徴とする請求項17に記載のコンピュータ化されたシステム。
JP2004207743A 2003-07-14 2004-07-14 サブスクライブ−通知サービスとの仮想接続 Expired - Fee Related JP4633395B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/619,332 US7769866B2 (en) 2003-07-14 2003-07-14 Virtual connectivity with subscribe-notify service

Publications (3)

Publication Number Publication Date
JP2005039832A true JP2005039832A (ja) 2005-02-10
JP2005039832A5 JP2005039832A5 (ja) 2007-08-30
JP4633395B2 JP4633395B2 (ja) 2011-02-16

Family

ID=33477074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004207743A Expired - Fee Related JP4633395B2 (ja) 2003-07-14 2004-07-14 サブスクライブ−通知サービスとの仮想接続

Country Status (7)

Country Link
US (1) US7769866B2 (ja)
EP (1) EP1499088B1 (ja)
JP (1) JP4633395B2 (ja)
KR (1) KR101083480B1 (ja)
CN (1) CN1595890B (ja)
AT (1) ATE447283T1 (ja)
DE (1) DE602004023793D1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006003739A1 (ja) * 2004-06-30 2006-01-12 Yoshida Kamagasako, Inc. ピアツーピア通信装置及びコンピュータ・プログラム
JP2018013899A (ja) * 2016-07-20 2018-01-25 富士通株式会社 情報処理装置、情報処理方法、情報処理システム及びプログラム

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100487616B1 (ko) * 2002-11-29 2005-05-03 엘지전자 주식회사 폴더형 이동통신 단말기의 액정표시화면 영상 반전 스위치장치
US20060271939A1 (en) * 2005-05-11 2006-11-30 Eric Joris Enterprise-to-enterprise integration
US7664784B2 (en) 2006-01-11 2010-02-16 Oracle International Corporation High-performance, scalable, adaptive and multi-dimensional event repository
US8554827B2 (en) * 2006-09-29 2013-10-08 Qurio Holdings, Inc. Virtual peer for a content sharing system
US7715386B2 (en) 2007-03-15 2010-05-11 Microsoft Corporation Reducing network traffic to teredo server
US20080225867A1 (en) * 2007-03-15 2008-09-18 Microsoft Corporation Faster NAT detection for Teredo client
US7764691B2 (en) * 2007-03-15 2010-07-27 Microsoft Corporation Allowing IPv4 clients to communicate using teredo addresses when both clients are behind a NAT
US8194683B2 (en) * 2007-03-30 2012-06-05 Microsoft Corporation Teredo connectivity between clients behind symmetric NATs
CN101836394B (zh) * 2007-06-29 2013-01-02 艾利森电话股份有限公司 处理事件通知和事件预订的方法
US20090182825A1 (en) * 2007-07-04 2009-07-16 International Business Machines Corporation Method and system for providing source information of data being published
US20120046985A1 (en) * 2007-10-02 2012-02-23 Emergency Response And Training Solutions, Inc. Method for the secure logging of correspondence and notification thereof
US8750112B2 (en) * 2009-03-16 2014-06-10 Echostar Technologies L.L.C. Method and node for employing network connections over a connectionless transport layer protocol
CN102347967B (zh) * 2010-07-30 2014-01-01 华为技术有限公司 一种推送设备间的协作方法及装置
US9357014B2 (en) * 2014-04-29 2016-05-31 Alcatel Lucent Service-based networking

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003087843A (ja) * 2001-09-17 2003-03-20 Mitsubishi Electric Corp 移動体通信システムおよびセッション収容方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870605A (en) * 1996-01-18 1999-02-09 Sun Microsystems, Inc. Middleware for enterprise information distribution
US6055237A (en) * 1997-03-03 2000-04-25 Excel Switching Corporation Telecommunications switching system with readily configurable supervisory control
US6434627B1 (en) * 1999-03-15 2002-08-13 Cisco Technology, Inc. IP network for accomodating mobile users with incompatible network addressing
JP4299911B2 (ja) * 1999-03-24 2009-07-22 株式会社東芝 情報転送システム
US7050432B1 (en) * 1999-03-30 2006-05-23 International Busines Machines Corporation Message logging for reliable multicasting across a routing network
US6484200B1 (en) * 1999-06-11 2002-11-19 Sun Microsystems, Inc. Distinguished name scoping system for event filtering
WO2002057917A2 (en) 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7197565B2 (en) 2001-01-22 2007-03-27 Sun Microsystems, Inc. System and method of using a pipe advertisement for a peer-to-peer network entity in peer-to-peer presence detection
US7117270B2 (en) * 2001-08-15 2006-10-03 Precache, Inc. Method for sending and receiving a Boolean function over a network
US7207008B1 (en) * 2001-09-12 2007-04-17 Bellsouth Intellectual Property Corp. Method, system, apparatus, and computer-readable medium for interactive notification of events
US6907501B2 (en) 2002-01-25 2005-06-14 Ntt Docomo Inc. System for management of cacheable streaming content in a packet based communication network with mobile hosts
US7080151B1 (en) * 2002-04-01 2006-07-18 Utstarcom, Inc. Method and system for mobile IP home agent redundancy by using home agent control nodes for managing multiple home agents
US7443865B1 (en) * 2002-04-04 2008-10-28 Cisco Technology, Inc. Multiple network connections from a single PPP link with network address translation
US7379970B1 (en) * 2002-04-05 2008-05-27 Ciphermax, Inc. Method and system for reduced distributed event handling in a network environment
US7051102B2 (en) 2002-04-29 2006-05-23 Microsoft Corporation Peer-to-peer name resolution protocol (PNRP) security infrastructure and method
US7484225B2 (en) 2002-08-08 2009-01-27 Sun Microsystems, Inc. System and method for describing and identifying abstract software modules in peer-to-peer network environments
US7657597B2 (en) 2002-09-26 2010-02-02 Sun Microsystems, Inc. Instant messaging using distributed indexes
US7647427B1 (en) * 2002-10-18 2010-01-12 Foundry Networks, Inc. Redundancy support for network address translation (NAT)
US7430747B2 (en) 2002-12-04 2008-09-30 Microsoft Corporation Peer-to peer graphing interfaces and methods
US7581010B2 (en) * 2003-07-14 2009-08-25 Microsoft Corporation Virtual connectivity with local connection translation
US7516174B1 (en) * 2004-11-02 2009-04-07 Cisco Systems, Inc. Wireless network security mechanism including reverse network address translation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003087843A (ja) * 2001-09-17 2003-03-20 Mitsubishi Electric Corp 移動体通信システムおよびセッション収容方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006003739A1 (ja) * 2004-06-30 2006-01-12 Yoshida Kamagasako, Inc. ピアツーピア通信装置及びコンピュータ・プログラム
JP2018013899A (ja) * 2016-07-20 2018-01-25 富士通株式会社 情報処理装置、情報処理方法、情報処理システム及びプログラム

Also Published As

Publication number Publication date
KR101083480B1 (ko) 2011-11-16
JP4633395B2 (ja) 2011-02-16
KR20050008526A (ko) 2005-01-21
EP1499088A3 (en) 2006-10-11
ATE447283T1 (de) 2009-11-15
EP1499088A2 (en) 2005-01-19
CN1595890A (zh) 2005-03-16
US20050015427A1 (en) 2005-01-20
US7769866B2 (en) 2010-08-03
DE602004023793D1 (de) 2009-12-10
CN1595890B (zh) 2010-07-07
EP1499088B1 (en) 2009-10-28

Similar Documents

Publication Publication Date Title
CN114866521B (zh) 会议服务器
CN112911027B (zh) 用于建立媒体会话的方法和装置
US7581010B2 (en) Virtual connectivity with local connection translation
USRE47566E1 (en) NAT traversal for mobile network devices
JP4633395B2 (ja) サブスクライブ−通知サービスとの仮想接続
JP4579934B2 (ja) レガシーノードとhipノード間のホストアイデンティティプロトコル(hip)接続を確立するためのアドレス指定方法及び装置
EP2702732B1 (en) System and method for secure instant messaging
KR101560601B1 (ko) Stun을 사용하여 생성된 세션의 정책 서비스 시스템 아키텍처
US7107609B2 (en) Stateful packet forwarding in a firewall cluster
EP2503804A1 (en) Apparatus and method for managing peer-to-peer connections between different service providers
WO2016210196A1 (en) Media relay server
US9048428B2 (en) Enabling communication between source and target mail transfer agents
JP2012182845A (ja) モバイル機器に対するネットワークアドレス変更のための方法及び装置
JP5169362B2 (ja) セッション情報複製方法、前記方法を実行する呼制御サーバ及び前記方法のプログラム
AU2012262053A1 (en) System and method for secure instant messaging
WO2016210202A1 (en) Media relay server
US20120166656A1 (en) Establishing Secure Communications Between Client Computing Devices Located Behind Network Security Devices
WO2011038639A1 (zh) 端到端即时通讯的实现方法、端到端即时通讯终端及系统
WO2023116165A1 (zh) 网络负载均衡方法、装置、电子设备、介质和程序产品
US20200336515A1 (en) Establishing And Managing Connections For Real Time Communications
JP2013126219A (ja) 転送サーバおよび転送プログラム
EP3965401A1 (en) Group routing policy for directing link-layer communication

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070717

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101112

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101117

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees