(57)【要約】【課題】  ホスト間通信のためのシステム及び方法を提供すること。【解決手段】  本発明では、ホスト間通信のためのシステム及び方法が提供される。システムは、少なくとも１つのコンシューマ・アプリケーションの第１ホストを含むことができ、ホストは、コンシューマが第２ホストに連結された第２コンシューマと通信できるようにするために配置することができる。システムは、第１ホストと第２ホストを接続するために配置されたネットワークと、第１ホストと第２ホストの間の通信プロトコルを制御して第１コンシューマ及び第２コンシューマが互いに通信できるようにするために配置されたホスト間デバイス・コントローラとを更に含むことができる。【選択図】      図１
2007193812.tif 000002
【特許請求の範囲】
【請求項１】
ホスト間通信のためのシステムであって、
第１コンシューマ・アプリケーションが第２ホストに連結された第２コンシューマ・アプリケーションと通信できるようにするために配置された、前記第１コンシューマ・アプリケーションの第１ホストと、
前記第１ホストと第２ホストを接続するために配置されたネットワークと、
前記第１ホストと前記第２ホストの間の通信プロトコルを制御して、前記第１コンシューマ・アプリケーションと前記第２コンシューマ・アプリケーションが互いに通信できるようにするために配置されたホスト間デバイス・コントローラと、
を含むシステム。
【請求項２】
前記第１コンシューマ・アプリケーションが、前記第２コンシューマ・アプリケーションと通信するために、前記第２コンシューマ・アプリケーションからメッセージを受信するように配置された仮想デバイスを前記ホスト間デバイス・コントローラ内に作成し、更に前記第１コンシューマ・アプリケーションと連結されたメモリにダイレクト・アクセスするように配置された、請求項１に記載のシステム。
【請求項３】
前記第１コンシューマ・アプリケーションが、前記第２コンシューマ・アプリケーションからメッセージを受信するための接続リソースと、前記第１コンシューマ・アプリケーションと連結されたメモリへの第２コンシューマ・アプリケーションのダイレクト・アクセスを可能にするためのメモリ・リソースとを作成するように配置された、請求項２に記載のシステム。
【請求項４】
前記ホスト間デバイス・コントローラが、前記第１コンシューマ・アプリケーションから複数のコンシューマ・アプリケーションへメッセージを送信するように配置されたマルチキャスト仮想デバイスを更に含む、請求項１に記載のシステム。
【請求項５】
前記ホスト間デバイス・コントローラが、前記第１コンシューマ・アプリケーションと前記第２コンシューマ・アプリケーションとの間の、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）読取り及び書込み動作を可能にするように更に配置された、請求項２に記載のシステム。
【請求項６】
前記仮想デバイスが、前記第１コンシューマ・アプリケーション又は前記第２コンシューマ・アプリケーションから受信される、ＩＯ要求、一連のＩＯ要求、ＩＯプログラム又は一組のＩＯプログラムのいずれかを実行するように更に配置された、請求項２に記載のシステム。
【請求項７】
第１ホスト上に設置された第１コンシューマ・アプリケーションと第２ホスト上に設置された第２コンシューマ・アプリケーションとの間の通信を確立するための、コンピュータで実行される方法であって、前記方法が、
前記第１コンシューマ・アプリケーションの仮想デバイス上に、前記第１コンシューマ・アプリケーションのために匿名の接続リソース割り当てを作成するステップと、
前記仮想デバイス上での動作の実行を可能にする第１のタイプからのリソース資格証明を前記第１コンシューマ・アプリケーションに付与するステップと、
前記第２コンシューマ・アプリケーションから接続要求を受信したとき、前記第１コンシューマ・アプリケーションのポリシーに基づいて命令を前記第２コンシューマ・アプリケーションに送信するステップと、
を含む方法。
【請求項８】
命令を送信する前記ステップが、前記第１コンシューマ・アプリケーションの前記ポリシーに基づいて、前記第２コンシューマ・アプリケーションに自動的に受諾命令を送信するステップを更に含む、請求項７に記載の方法。
【請求項９】
命令を送信する前記ステップが、
前記第１コンシューマ・アプリケーションに、前記第１コンシューマ・アプリケーションの前記ポリシーに基づいて、前記第２コンシューマ・アプリケーションからの前記接続要求が受信されたことを通知するステップと、
前記第１コンシューマ・アプリケーションから受信された受諾命令又は拒否命令を送信するステップと、
を更に含む、請求項７に記載の方法。
【請求項１０】
前記第１のタイプからの前記リソース資格証明が接続リソース資格証明である、請求項７に記載の方法。
【請求項１１】
第２コンシューマ・アプリケーションに送信される前記命令が、前記コンシューマ・アプリケーション間の接続を受諾するものである場合に、前記方法が、
第２のタイプからの接続リソース資格証明を生成するステップと、
前記第２コンシューマ・アプリケーションが前記仮想デバイスを介して前記第１コンシューマ・アプリケーションに対し今後通信することを可能にするために、前記第２のタイプからの前記接続リソース資格証明を送信するステップと、
を含み、前記生成及び送信するステップが、前記第１のタイプのコンシューマによって実行される、請求項１０に記載の方法。
【請求項１２】
前記第１コンシューマ・アプリケーションが前記第２コンシューマ・アプリケーションからメッセージを受信できるようにするステップと、前記第２コンシューマ・アプリケーションが前記第１コンシューマ・アプリケーションにメッセージを送信できるようにするステップとを更に含む、請求項１１に記載の方法。
【請求項１３】
前記第１のタイプからの前記リソース資格証明が、共有リソース資格証明である、請求項７に記載の方法。
【請求項１４】
前記第１コンシューマ・アプリケーションが、多数のコンシューマ・アプリケーションからメッセージを受信できるようにするステップを更に含む、請求項１３に記載の方法。
【請求項１５】
前記第２コンシューマ・アプリケーションが、複数のコンシューマ・アプリケーションに、マルチキャスト仮想デバイスを介してメッセージを送信できるようにするステップを更に含み、前記メッセージはマルチキャスト接続リソース資格証明を含む、請求項７に記載の方法。
【請求項１６】
第２ホスト上に設置された第２コンシューマ・アプリケーションから第１ホスト上に設置された第１コンシューマ・アプリケーションの第１メモリ領域への読取り及び書込みリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）動作のために前記第１メモリ領域を公示する方法であって、
前記第１メモリ領域を公示するために、第１のタイプからのＩＯ要求をホスト間デバイス・コントローラへ送信するステップと、
前記第１メモリ領域のメモリ・ウィンドウ資格証明（ＣＡＰＷ）を生成するステップと、
前記ＩＯ要求及び前記ＣＡＰＷを、前記ホスト間デバイス・コントローラ上に設置された前記第１コンシューマ・アプリケーションの仮想デバイスに送信するステップと、
前記ＣＡＰＷと連結された前記第１仮想デバイス上に、メモリ領域リソースを作成するステップと、
前記第１メモリ領域リソースにアクセスできるようにする装置資格証明を生成するステップと、
前記装置資格証明を前記第２コンシューマ・アプリケーションに送信するステップと、
を含む方法。
【請求項１７】
請求項１−１６のいずれか１項に記載の方法の各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、コンピュータ及びプロセッサのアーキテクチャの分野に関する。具体的には、本発明はホスト間通信のためのシステム及び方法に関する。
【背景技術】
【０００２】
コンピュータ科学における多くの分野のなかでも、高性能コンピューティング（ＨＰＣ）アプリケーション及びデータベースの分野において、メッセージの受け渡し及びリモート・ダイレクト・メモリ・アクセスのための高速で効果的かつ安全な機構が必要である。ＨＰＣは、スーパーコンピュータ及びスーパーコンピュータで稼働するソフトウェアの開発に集中して取り組むコンピュータ科学の一部門である。この部門の主な分野は、例えば、プログラムを細かいコードに分割して、各々のコードを別個の処理ノードによって同時に実行できるようにする並列処理アルゴリズム及び並列処理ソフトウェアの開発である。
【０００３】
例えば、インテル社（カリフォルニア州サンタ・クララ所在）とカーネギーメロン大学の合同で開発されたｉＷＡＲＰマルチプロセッシング・スーパーコンピュータ等の幾つかの技術は、こうした必要性に対する解決策の提供を試みる。しかしながら、現行の解決策は、一般的には、とりわけこうしたシステム及び技術のホスト又はコンシューマの安全性及びメモリ保護に関連する欠点に悩ませられる。
【０００４】
例えば、ホストのメモリ領域及びメッセージ・キューを保護するために提案される解決策は、メモリ・タグを利用することによるものである。しかしながら、メモリ・タグは、種々の攻撃において、容易に偽造され再利用され、結果としてホスト・メモリに危害を与える可能性がある。こうした問題は、多数のオペレーティング・システムが同じメモリを共有する仮想化システムにおいては、なおさら重大である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、ホスト間通信のためのシステム及び方法を提供することができる。
【課題を解決するための手段】
【０００６】
本発明の第１の態様によれば、ホスト間通信のためのシステムが提供される。システムは、少なくとも１つのコンシューマ・アプリケーションの第１ホストを含むことができ、ホストは、コンシューマが第２ホストに連結された第２コンシューマと通信できるようにするために配置することができる。システムは、第１ホストと第２ホストを接続するために配置されたネットワークと、第１ホストと第２ホストの間の通信プロトコルを制御して第１コンシューマ及び第２コンシューマが互いに通信できるようにするために配置されたホスト間デバイス・コントローラとを更に含むことができる。
【０００７】
本発明の第２の態様によれば、第１ホスト上に設置された第１コンシューマ・アプリケーションと第２ホスト上に設置された第２コンシューマ・アプリケーションとの間の通信を確立するための、コンピュータで実行される方法が提供される。この方法は、第１コンシューマ・アプリケーションの仮想デバイス上に、第１コンシューマ・アプリケーションのために匿名の接続リソース割り当てを作成するステップと、仮想デバイス上での動作の実行を可能にする第１のタイプからのリソース資格証明を第１コンシューマ・アプリケーションに付与するステップと、第２コンシューマ・アプリケーションから接続要求を受信したとき、第１コンシューマ・アプリケーションのポリシーに基づいて命令を第２コンシューマ・アプリケーションに送信するステップを含むことができる。
【０００８】
本発明の第３の態様によれば、第２ホスト上に設置された第２コンシューマ・アプリケーションから前述の第１メモリ領域への読取り及び書込みリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）動作のために、第１ホスト上に設置された第１コンシューマ・アプリケーションの第１メモリ領域を公示する方法が提供される。
【０００９】
この方法は、第１メモリ領域を公示するために第１のタイプからのＩＯ要求をホスト間デバイス・コントローラへ送信するステップと、第１メモリ領域のメモリ・ウィンドウ資格証明（ＣＡＰｗ）を生成するステップと、ＩＯ要求及びＣＡＰｗをホスト間デバイス・コントローラ上に設置された第１コンシューマ・アプリケーションの仮想デバイスに送信するステップとを含むことができる。この方法は、前述のＣＡＰｗと連結された第１仮想デバイス上にメモリ領域リソースを作成するステップと、第１メモリ領域リソースにアクセスできるようにする装置資格証明を生成するステップと、装置資格証明を第２コンシューマ・アプリケーションに送信するステップとを更に含むことができる。
【発明を実施するための最良の形態】
【００１０】
本発明の実施形態を、例示としてのみ、添付の図面を参照してここで説明する。
【００１１】
概説
ここで、本発明の実施形態による、ホスト間通信のためのシステム１００の論理構造の概略ブロック図である図１を参照する。下記の詳細な説明において、「コンシューマ」という用語は、ＩＯ装置又は別のコンシューマにアクセスすることを許可されるオペレーティング・システム／パーティション、処理ノード、アプリケーション等を説明するために用いられる。
【００１２】
システム１００は、例えばホストＡ１０、ホストＢ２０及びホストＣ３０等のホストを含むことができ、それらは、ネットワーク４０を通じて、互いに、及び外部システムと接続することができ、かつ、ホスト間デバイス・コントローラ５０にも接続することができる。特定のアプリケーションに応じて、ネットワーク４０は、例えば、インフィニバンド高速直列コンピュータ・バス、ギガビット・イーサネット、Ｍｙｒｉｃｏｍ  Ｉｎｃ（カリフォルニア州アルカディア所在）が開発したＭｙｒｉｎｅｔ（登録商標）ネットワークのような高速ローカル・エリア・ネットワーク・システム、又は何か他の種類の高速相互接続ネットワーク等とすることができる。
【００１３】
コンシューマＡ１２、Ｂ２２、及びＣ３２は、それぞれホストＡ、Ｂ及びＣの一部とすることができる。図１に示されるように、ホストは、ホストの一部であるコンシューマと連結されるホスト・ゲートウェイ（ＨＧ）によって定められる。例えば、ホストＡ１０は、ＨＧ  Ａ１４と連結することができるコンシューマ１２（Ａ乃至Ｚ）を含むことができる。ＨＧ  Ａ、Ｂ及びＣは、暗号形式で署名し、例えば、ＨＧ  Ａ１４と連結可能なメモリ・ユニット１６等のＨＧと連結されるメモリ・ユニットへの伝達を意図されたデータの機能資格証明を検証することができるということに注目するべきである。
【００１４】
メモリ・ユニット１６、２６及び３６は、各々のＨＧと論理的に連結される。各々のメモリ・ユニットは、コンシューマ・アプリケーションと連結される、より小さいメモリ・セクション（図示せず）を含むことができる。
【００１５】
ホスト間デバイス・コントローラ５０は、システム１００の種々のホスト間の通信プロトコルを制御することができる。装置５０をホスト１０、２０及び３０で共用して、コンシューマ・アプリケーションを互いに通信可能にすることができる。図１に示されるように、システム１００において、装置５０を独立したコンポーネントとして実装することができるが、しかし、装置５０を、各々のＨＧの一部として、又は各々のホスト内の別個のコンポーネントとして実装することもできるということに注目するべきである。もう一つの方法として、装置５０を、図１には示されていないが各々のホストの一部である他のコンポーネントと連結してもよい。
【００１６】
本発明の実施形態によれば、他のコンシューマ・アプリケーションからメッセージを自発的に受信し、他のコンシューマによるダイレクト・メモリ・アクセスのためにそのメモリを自発的に公示する各々のコンシューマ・アプリケーションは、ホスト間デバイス・コントローラ５０上に仮想デバイス（ＶＤ）を作成することができる。システム１００の特定の実装に応じて、管理エンティティを集中させることができるか、又は分散させることができるということに注目するべきである。
【００１７】
装置資格証明は、他のコンシューマ・アプリケーションからメッセージを自発的に受信するとともに、又は他のコンシューマによるダイレクト・メモリ・アクセスのためにそのメモリを自発的に公示するコンシューマを、仮想デバイスの所有者（以下、「所有者」と定義する）として識別することができ、ＶＤの所有者に特別許可された、仮想デバイス上のＩＯ要求、一連のＩＯ要求、ＩＯプログラム又は一組のＩＯプログラムの実行権を該コンシューマに付与することができる。
【００１８】
所有者は、自身のＶＤ上に２種類のリソースを作成することが可能である。
例えば、１つは、ＶＤ  Ａ６０、ＶＤ  Ｂ７０及びＶＤ  Ｃ８０内の、それぞれ「ＣｏｎＲｅｓｏｕｒｃｅ  Ｂ」６２、「ＣｏｎＲｅｓｏｕｒｃｅ  Ａ」７２及び「ＣｏｎＲｅｓｏｕｒｃｅ  Ｙ」等の、メッセージを受信するための接続リソースである。接続リソースは「受信キュー」と関連付けることができる。従って、接続リソースの所有者は、こうしたキューに対してホスト・バッファを予め掲示することが可能であり、「所有者」コンシューマにメッセージを自発的に送信することができるコンシューマ（以下「ユーザ」と定義する）は、メッセージをＦＩＦＯ原則においてこうしたバッファ内に置かれるように送信することが可能である。
例えば、もう１つは、ＶＤ  Ｂ７０内の「ＭｅｍＲｅｓｏｕｒｃｅ  Ｘ」７４等の、ダイレクト・メモリ・アクセスを可能にするためのメモリ・リソースである。メモリ・リソースは、公示されたメモリ領域と関連付けることができる。
【００１９】
本発明の実施形態によれば、「ユーザ」に該ユーザとの通信経路を構築するように要求することができる。通信経路を構築した結果、所有者の仮想デバイス上に接続リソースを作成することができる。ユーザがリソースにアクセスして、例えば「メッセージ送信」等の、こうしたリソースに対してユーザに許可されるＩＯ要求、一連のＩＯ要求、ＩＯプログラム又は一組のＩＯプログラムを実行できるようにする資格証明を、ユーザに付与することができる。「所有者」コンシューマに属する遠隔メモリに自発的にアクセスすることができる「ユーザ」は、下記の詳説で説明されるように、対応するメモリ・リソースに対する、ユーザ・メモリ・ウィンドウの資格証明を得なければならない可能性があるということに注目するべきである。
【００２０】
図１に示される例においては、異なるホストにそれぞれ属するコンシューマＡ１２、コンシューマＢ２２及びコンシューマＣ３２は、ホスト間デバイス・コントローラ５０上に、各自の仮想デバイスＶＤ  Ａ６０、ＶＤ  Ｂ７０及びＶＤ  Ｃ８０を個々に作成する。自発的に互いに通信することができるコンシューマＡ及びＢは、自身の装置上に、個々の通信リソースを作成する。従って、コンシューマＡは、接続リソースＢの「ＣｏｎＲｅｓｏｕｒｃｅ  Ｂ」６２をＶＤ  Ａ６０上に作成することができ、コンシューマＢにこうしたリソースへのアクセスを許可することができ、一方で、コンシューマＢは、接続リソースＡの「ＣｏｎＲｅｓｏｕｒｃｅ  Ａ」７２をＶＤ  Ｂ７０上に作成することができ、コンシューマＡがアクセスできるようにする。図１に示されるように、コンシューマＢはまた、コンシューマＸのためのメモリ・リソース「ＭｅｍＲｅｓｏｕｒｃｅ  Ｘ」７４を作成することができ、コンシューマＸがコンシューマＢのメモリにダイレクト・アクセスできるようにする。コンシューマＣは、接続リソースの「ＣｏｎＲｅｓｏｕｒｃｅ  Ｙ」８２をコンシューマＹの使用のために作成することができる。
【００２１】
本発明の実施形態によれば、所有者及びユーザ・コンシューマは、例えば、一連のＩＯ要求又は一組のＩＯプログラム等のＩＯ要求、ＩＯプログラムを仮想デバイス上で実行することができる。所有者コンシューマは、自身の仮想デバイスのリソースでそれらを用いたり実行することができ、一方で、ユーザ・コンシューマは、他のコンシューマの仮想デバイスのリソースで、それらを用いたり実行することができる。ＩＯプログラムのＩＯ要求側の実行が完了すると、ＩＯ要求又はＩＯプログラムを開始したコンシューマに出力を送信することができる。更なる詳細を下記に詳述する。
【００２２】
コンシューマ間の接続の確立、及びコンシューマ間の種々の通信動作を、下記の詳説において説明する。
【００２３】
接続の確立
ここで、本発明の実施形態による、２つのコンシューマ・アプリケーション間の接続を確立するための方法のフロー・チャート図である図２を参照する。同一のコンシューマ間に多数の接続を確立することができ、以下の通りに、各々の接続を確立することができるということに注目するべきである。
【００２４】
他のコンシューマからメッセージを自発的に受信することができる所有者コンシューマＡは、例えば、対応するユーザ・コンシューマがない接続リソース等の匿名の接続リソース割り当てを自身の仮想デバイス上に作成することができる（ステップ２００）。所有者コンシューマに付与された資格証明及びパラメータとしてのポートを含むことができる「接続リソース割り当て」ＩＯ要求を受信すると、接続リソース割り当てを所有者の仮想デバイス内に作成することができる。
接続リソース割り当て＝〔所有者資格証明、ポート〕
【００２５】
所有者コンシューマであるコンシューマＡの仮想デバイス内に設置されたＩＯプログラムは、接続リソース割り当て要求を処理することができ、接続リソースを作成することができる。次に、接続リソースは、コンシューマＡに「所有者接続リソース資格証明」を付与することができる（ステップ２０２）。
【００２６】
コンシューマＡにメッセージを自発的に送信できるユーザ・コンシューマＢは、接続ＩＯ要求をコンシューマＡの仮想デバイスＡに送信できる。結果として、仮想デバイスＡは、「ユーザ」装置資格証明及びパラメータとしてのポートを含むことができるコンシューマＢから、接続ＩＯ要求を受信できる（ステップ２０４）。
接続＝〔ユーザ資格証明、ポート〕
【００２７】
コンシューマＡによって設定されたポリシーに応じて、接続リソースに、送られてくる接続要求を自動的に受諾するように命令する（ステップ２０６）か、又は、接続要求が届いた時にコンシューマＡに明示的に通知するように命令する（ステップ２０６Ａ）かのどちらかが可能である。後者の場合は、コンシューマＡは、「受諾」又は「拒否」命令に応答することを要求される。
【００２８】
いずれにしても、接続要求が受諾される時に、匿名接続リソースは接続リソースＢになることができる。それに応じて、ホスト間デバイス・コントローラ５０は、ユーザ接続リソース資格証明を生成することができ（ステップ２０８）、接続リソースＢを通じたコンシューマＡとの今後の通信のために、資格証明をコンシューマＢに送信することができる（ステップ２１０）。
【００２９】
接続確立後の動作
上記の例において、所有者コンシューマと例えばコンシューマＡ及びＢ等のユーザ・コンシューマ間の接続が個々に確立された後に、コンシューマＡは、「受信後バッファ」ＩＯメッセージを送信して、コンシューマＢからメッセージを受信するために仮想デバイスＡ内に要求されたスペースがあることを検証することができる。コンシューマＡは、「受信後バッファ」ＩＯメッセージ内に、仮想デバイスの所有者としての権利を証明するための所有者装置資格証明と、パラメータとしてのバッファ長を含むことができる。
受信後バッファ＝〔所有者資格証明、バッファ〕
【００３０】
各々の「受信後バッファ」ＩＯメッセージを、例えばコンシューマＡ等の所有者コンシューマから、例えばＨＧ  Ａ等の個々のホスト・ゲートウェイを通して、ホスト間デバイス・コントローラへ送信できる。ホスト・ゲートウェイは、後の無認可アクセスからメモリを保護することができる、ウィンドウ資格証明等の資格証明を生成することができる。ウィンドウ資格証明は、接続リソースと関連付けられ、ホスト間デバイス・コントローラ５０上のそのコンテキスト内に格納することができる。
【００３１】
例えばコンシューマＢ等のユーザ・コンシューマが、例えばコンシューマＡ等の所有者コンシューマにメッセージを自発的に送信する時に、以下の動作を実行することができる。
【００３２】
コンシューマＢは、ＨＧ  Ｂに「送信」ＩＯ要求を提示することができる。ＩＯ要求のパラメータは、コンシューマＢの、仮想デバイスＡの接続リソースにアクセスする「ユーザ」権を証明する装置リソース資格証明を含むことができ、また、ローカル・メモリ領域機能（例えば、各々の要素がアドレス、長さ及びアクセス許可を含むことができる、スキャッタ・ギャザー・リスト）を含むことができる。
送信＝〔ユーザ資格証明、メモリ領域機能〕
【００３３】
ＨＧ  Ｂは、ウィンドウ資格証明を生成して、それをホスト間デバイス・コントローラ上の仮想デバイスＡへ「送信」ＩＯ要求と共に送信することができる。選択的に、ＨＧ  Ｂは、ここでは即値データとして参照される所定量のデータ・ペイロードを付加することできる。この場合、即値データのサイズがメッセージ全体に及ぶ場合は、ウィンドウ資格証明は送信されない。
【００３４】
仮想デバイスＡはＩＯ要求を処理することができる。仮想デバイスＡ上の接続リソースにアクセスすることができ、受信されたメッセージを適合させるために利用できる受信バッファがあるかどうかを検証することができる。予め掲示されたバッファがない場合には、仮想デバイスＡは、受信された要求を中断し、対応するステータスをＨＧ  Ｂに送り返し、ＨＧ  ＢがそれをコンシューマＢに転送することがある。
【００３５】
受信バッファが利用できる時には、装置接続リソース内に格納された受信バッファのメモリ・ウィンドウ資格証明を用いて、即値データ（存在する場合には）を、ダイレクト・メモリ・アクセス（ＤＭＡ）動作においてＨＧ  Ａを介して受信バッファに送信することができる。次に、残存するデータ・ペイロードを持ってくるために（必要な場合には）、「読取り」要求をＨＧ  Ｂへ送信することができる。読取り要求をＨＧ  Ｂによって処理することができ、読取りデータを仮想デバイスＡへ送り返すことができる。後者は、データを予め掲示されたバッファへ供給することができ、バッファが属するコンシューマＡに「完了」要求を生成することができる（求められた場合に）。
【００３６】
所有者コンシューマは、多数のコンシューマからメッセージを自発的に受信することができる。この場合、所有者コンシューマは、自身の仮想デバイス上に、受信キューと関連付けられた共有接続リソースを作成できる。共有接続リソースに自発的にアクセスするコンシューマは、「ユーザ」装置資格証明、及びパラメータとしてのポートを提供して、ＩＯ要求の「接続共有リソース」を発することができる。所有者装置の仮想デバイスは、コンシューマに、共有接続リソースに対してメッセージを送信する権利をコンシューマに付与する、「ユーザ」共有リソース資格証明を送り返すことができる。
【００３７】
マルチキャスティング
ここで、本発明の実施形態による、ホスト間マルチキャスト通信のためのシステムの概略ブロック図である図３を参照する。以前に説明された要素は、説明を平易に保つために繰り返して説明しない。
【００３８】
ホスト間デバイス・コントローラは、全てのマルチキャスト活動を制御するためにマルチキャスト仮想デバイス９０を含むことができる。例えばマルチキャスト群Ｍ等のマルチキャスト群は、マルチキャスト仮想デバイス９０上のリソースとして表わすことができる。マルチキャスト群を結合するために、ユーザ・コンシューマは、特別なＩＯ要求をマルチキャスト仮想デバイス９０に送信することができる。コンシューマがマルチキャスト群を結合することが可能である場合は、それに応じて、対応する「ユーザ・リソース資格証明」をコンシューマに付与することができる。こうした資格証明は、マルチキャスト群に送信される各々のメッセージ内で提供することが要求される。マルチキャスト群の１つを対象とするメッセージを受信すると、ホスト間デバイス・コントローラは、マルチキャスト群の構成要素によって所有される仮想デバイスの共有接続リソースにメッセージを複製することができる。
【００３９】
リモート・ダイレクト・メモリ・アクセス手順
本発明の実施形態によれば、ホスト間通信のためのシステムは、異なるホスト上に設置されたコンシューマ間での、リモート・ダイレクト・メモリ・アクセス（ＤＭＡ）の読取り及び書込み動作を可能にする。
【００４０】
こうしたＲＤＭＡ動作を可能にするために、アドレス指定されたメモリ領域を、開始コンシューマに最初に公示するべきである。公示プロシージャは、メモリ・アクセス動作を開始するコンシューマに装置資格証明を与えることができる。
【００４１】
ここで、本発明の例示的な実施形態による、メモリ公示のための方法の概略フロー・チャート図である図４を参照する。この例においては、コンシューマＢは、ホストＢのメモリ領域をコンシューマＡに公示することができる。
【００４２】
コンシューマＢは、「コンシューマへのメモリ公示」ＩＯメッセージを、ホスト間デバイス・コントローラ内の仮想デバイスＢへ送信する（ステップ４００）ことによってプロシージャを開始することができる。ＩＯメッセージのパラメータは、仮想デバイスＢの所有者としてコンシューマＢを識別する所有者装置資格証明と、資格証明が送信されるべき相手であるコンシューマを識別するコンシューマＩＤと、例えばアドレス、長さ、アクセス許可等のメモリＢ領域機能とを含むことができる。
「コンシューマへのメモリ公示」＝〔所有者資格証明、コンシューマＩＤ、メモリ領域機能〕
【００４３】
ＩＯメッセージをＨＧ  Ｂによって処理する時に、ＨＧ  Ｂは、メモリＢ領域のメモリ・ウィンドウ資格証明ＣＡＰＷを生成することができ（ステップ４０２）、それをＩＯメッセージと共に、ホスト間デバイス・コントローラへ送信することができる（ステップ４０４）。仮想デバイスＢは、ＩＯメッセージを受信することができ、ホスト間デバイス・コントローラのサービスを用いて、仮想デバイスＢ上に「メモリ領域」リソースを作成することができる（ステップ４０６）。リソースは、メモリ・ウィンドウ資格証明ＣＡＰＷを含むことができる。次に、ホスト間デバイス・コントローラは、作成された「メモリ領域」リソースへのアクセスを許可する装置資格証明を生成することができ（ステップ４０８）、それを、上記で説明されたホスト接続送信プロシージャを用いてコンシューマＡへ送信することができる（ステップ４１０）。
【００４４】
別の選択肢は、ホスト間デバイス・コントローラがリソース資格証明を生成し、それを、公示するコンシューマＢへ戻すことである。コンシューマＢは、それをコンシューマＡに送信するべきである。
【００４５】
ここで、本発明の例示的な実施形態による、リモート・ダイレクト・メモリ・アクセス書込み動作のための方法のフロー・チャート図である図５を参照する。この例においては、コンシューマＡは、ホストＢのメモリ領域への書込みトランザクションを実行することができる。アドレス指定されたホストＢのメモリ領域は、上記で説明されたようにコンシューマＡへ公示されており、対応する「メモリ領域」リソースは、仮想デバイスＢ上に作成されている。
【００４６】
従って、コンシューマＡは、「書込み」ＩＯ要求を仮想デバイスＢへ送信することができる（ステップ５００）。ＩＯ要求と共に、コンシューマＡは、ホストＢのメモリ領域機能（装置資格証明、アドレス及び長さ）と、ホストＡのメモリ領域であるローカル・メモリ領域機能（アドレス、長さ、アクセス許可）とを供給できる。ＨＧ  Ａは、ホストＡのメモリ領域のウィンドウ機能ＣＡＰＷを生成でき、それをＩＯ要求と共に仮想デバイスＢへ送信できる（ステップ５０２）。性能を高めるために、ＨＧ  Ａは、ＩＯ要求に、ここでは即値データとして参照される所定量のデータ・ペイロードを添付することができる。即値データの最大サイズは、例えば接続が確立される時などの初期段階で、ＨＧ  Ａとホスト間デバイスの間で取り決めることができる。データ・ペイロード全体が許可された即値データのサイズと適合する場合は、ウィンドウ資格証明はＨＧ  Ａによって送信されない。
【００４７】
選択的に、データ・ペイロードのサイズが、ＩＯ要求と共に供給された即値データのサイズを上回る場合は、「書込み」ＩＯ要求を受信する時に、仮想デバイスＢは、ホストＡのメモリ領域に対する「読取り」トランザクションを実行することができる。その領域のウィンドウ資格証明が供給される。トランザクションをＨＧ  Ａによって処理することができ、データを仮想デバイスＢに返すことができる。
【００４８】
次に、ホスト間デバイス・コントローラは、装置資格証明から読出されたメモリ・ウィンドウ資格証明を用いて、仮想デバイスＢの「メモリ領域」リソースにアクセスすることができ（ステップ５０４）、ホストＢのメモリ領域にＨＧ  Ｂを介してデータを書込むことができる（ステップ５０６）。
【００４９】
ここで、本発明の例示的な実施形態による、リモート・ダイレクト・メモリ・アクセスの読取り動作のための方法のフロー・チャート図である図６を参照する。この例においては、コンシューマＡは、ホストＢのメモリ領域からの読取りトランザクションを実行することができる。アドレス指定されたホストＢのメモリ領域は、上述の通り、コンシューマＡに公示され、対応する「メモリ領域」リソースが仮想デバイスＢ上に作成されている。
【００５０】
従って、コンシューマＡは、「読取り」ＩＯ要求を仮想デバイスＢへ送信することができる（ステップ６００）。ＩＯ要求と共に、コンシューマＡは、ホストＢのメモリ領域特性（装置資格証明、アドレス及び長さ）と、ホストＡのメモリ領域であるローカル・メモリ領域機能（アドレス、長さ、アクセス許可）とを供給することができる。ＨＧ  Ａは、ホストＡのメモリ領域のウィンドウ資格証明を生成することができ、それをＩＯ要求と共に、仮想デバイスＢに送信することができる（ステップ６０２）。
【００５１】
「読取り」ＩＯ要求を受信すると、仮想デバイスＢは、装置資格証明から読出されたメモリ・ウィンドウ資格証明を用いて、仮想デバイスＢの「メモリ領域」リソースにアクセスすることができる（ステップ６０４）。次に、仮想デバイスＢは、ホストＢのメモリ領域に対する「読取り」トランザクションを実行することができる（ステップ６０６）。トランザクションは、トランザクションの正当性を検証することができるＨＧ  Ｂを通過することができると、読取りデータを読出すためにＤＭＡ動作を開始することができる。
【００５２】
次に、仮想デバイスＢは、ホストＡのメモリ領域のウィンドウ資格証明を用いて、データをＨＧ  Ａに戻すように送信することができる（ステップ６０８）。ＨＧ  Ａは、データのアクセスを検証することができると、個々のメモリ領域に対するＤＭＡ動作を完了することができる。
【００５３】
上記で簡潔に述べたように、本発明の実施形態によれば、所有者及びユーザ・コンシューマは、例えば、仮想デバイス上の一連のＩＯ要求又は一組のＩＯプログラム等のＩＯ要求、ＩＯプログラムを実行することが可能である。所有者コンシューマは、自身の仮想デバイスのリソース上でそれらを用いて実行することができる。例えば、所有者コンシューマは、多数の接続リソースを生成するために、（及びこうした接続リソースに要求を予め掲示するために）、またメモリ領域を公示するようにメモリ・リソースを生成するために、１つのＩＯプログラムを自身の仮想デバイスに送信することができる。
【００５４】
ユーザ・コンシューマは、例えば、他のコンシューマの仮想デバイスのリソース上の一連のＩＯ要求又は一組のＩＯプログラム等のＩＯ要求、ＩＯプログラムを用いて実行することができる。例えば、ユーザ・コンシューマは、接続リソースを用いて他のコンシューマにメッセージを送信し、１つのＩＯプログラムにカプセル化された全ての動作を行う、所有者コンシューマのメモリ・リソースへの一連のＲＤＭＡ書込み動作を実行することができる。
【００５５】
ＩＯ要求又はＩＯプログラムの実行が完了すると、出力を、ＩＯ要求又はＩＯプログラムを開始したコンシューマ、即ち第１例の所有者コンシューマ及び第２例のユーザ・コンシューマに送信することができる。
【００５６】
上記の説明において、本発明を徹底的に理解してもらうために、幾多の具体的な詳細が示された。しかしながら、本発明はこうした具体的な詳細がなくとも実施することができるということは、当業者にとっては明白であろう。他の場合において、従来のアルゴリズム及び処理のための周知の回路、制御論理及びコンピュータ・プログラム命令の詳細は、本発明を不必要に曖昧にしないために詳しくは示さない。
【００５７】
本発明の態様を具体化するソフトウェア・プログラミング・コードは、典型的には、コンピュータ可読媒体等の常設格納装置に保持される。クライアント・サーバ環境において、こうしたソフトウェア・プログラミング・コードをクライアント上又はサーバ上に格納することができる。ソフトウェア・プログラミング・コードを、データ処理システムで用いるためにどのような種類の既知媒体上でも具体化できる。これは、限定されないが、ディスク・ドライブ、磁気テープ、コンパクト・ディスク（ＣＤ）、デジタル・ビデオ・ディスク（ＤＶＤ）等の磁気記憶装置及び光記憶装置、及び、信号が変調される搬送波があってもなくても伝達媒体内で具体化されるコンピュータ命令信号を含む。例えば、伝達媒体は、インターネット等の通信ネットワークを含むことができる。更に、本発明をコンピュータ・ソフトウェア内で具体化できる一方、本発明を実装するのに必要な機能を、アプリケーション特有の集積回路又は他のハードウェア、又はハードウェア・コンポーネントとソフトウェアの幾つかの組み合わせ等のハードウェア・コンポーネントを用いて、一部分において或いは全体において代替的に具体化することができる。例えば、ホスト間デバイス・コントローラ５０を、コンピュータ・ソフトウェアにおいて、又は代替的には、一部分において又は全体においてハードウェア・コンポーネントを用いて具体化できる。
【００５８】
本発明は、典型的には、コンピュータ又は同様の装置を制御するために一組のプログラム命令を含むコンピュータ・プログラムとして実装される。こうした命令を、システムに予め読み込むか、或いはＣＤ−ＲＯＭ等の記憶媒体に記録するか、或いは、インターネット又は携帯電話ネットワーク等のネットワーク上でダウンロードするために利用できるようにして与えることができる。
【００５９】
本発明の範囲から逸脱することなく、前述のものに対して改良及び変更を行うことができる。
【００６０】
本発明が、上文に具体的に示され、説明されたものに限定されないということは、当業者に認められるであろう。むしろ、本発明の範囲は、従来技術にはないものの変形及び変更と同様に、上文で説明された種々の特徴の組み合わせ及び副次的な組み合わせの両方を含み、前述の説明を読んだ時に、当業者ならば思いつくことであろう。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施形態による、ホスト間通信のためのシステムの論理構造の概略ブロック図である。
【図２】本発明の実施形態による、２つのコンシューマ・アプリケーション間の接続を確立するための方法のフロー・チャート図である。
【図３】本発明の実施形態による、ホスト間マルチキャスト通信のためのシステムの概略ブロック図である。
【図４】本発明の例示的な実施形態による、メモリ公示のための方法の概略フロー・チャート図である。
【図５】本発明の例示的な実施形態による、リモート・ダイレクト・メモリ・アクセスの書込み動作のための方法のフロー・チャート図である。
【図６】本発明の例示的な実施形態による、リモート・ダイレクト・メモリ・アクセスの読取り動作のための方法のフロー・チャート図である。
【符号の説明】
【００６２】
１０、２０、３０：ホスト
１２、２２、３２：コンシューマ・アプリケーション
１４、２４、３４：ホスト・ゲートウェイ
１６、２６、３６：メモリ
４０：ネットワーク
５０：ホスト間デバイス・コントローラ
６０、７０、８０：仮想デバイス
６２、７２、８２：コンリソース
７４：Ｍｅｍリソース
６６、７６、８６：接続共有リソース
９０：マルチキャスト仮想デバイス
９２、９４：群のリソース
１００：システム
【図１】
2007193812.tif 000003
【図２】
2007193812.tif 000004
【図３】
2007193812.tif 000005
【図４】
2007193812.tif 000006
【図５】
2007193812.tif 000007
【図６】
2007193812.tif 000008