(57)【特許請求の範囲】
【請求項１】
第１及び第２のデータを、１つ以上の行先ノード上で走る第１及び第２の行先プロセスに、パケットネットワーク経由でそれぞれ送信するという、イニシエータホスト上で走る１つのイニシエータプロセスからの第１及び第２の要求を、前記イニシエータホストに接続されたネットワークインタフェース装置において受信するステップと、
前記ネットワークインタフェース装置に、前記第１及び第２の要求の両方に使用されるように、多重の異なる行先プロセスに順次接続するための動的接続された単一のイニシエータコンテキストを割り当てるステップと、
ここにおいて動的接続とは一時的な接続を意味し、
前記第１の行先プロセスとの第１の動的接続を開通するため、前記動的接続されたイニシエータコンテキストを参照しかつ前記第１の行先プロセスを行先とする第１の接続パケットを、前記ネットワークインタフェース装置から前記パケットネットワーク上で送信し、その後、前記第１のデータを前記第１の動的接続上で送信するステップと、
前記第１のデータの送信後、前記第１の動的接続を閉鎖し、そして、前記第２の行先プロセスとの第２の動的接続を開通するため、多重の異なる行先プロセスに順次接続するための動的接続された前記イニシエータコンテキストを参照しかつ前記第２の行先プロセスを行先とする第２の接続パケットを送信し、その後、前記第２のデータを前記第２の動的接続上で送信するステップと、
を有することを特徴とする通信方法。
【請求項２】
前記第１の行先プロセスが走っている前記行先ノードの１つから、前記データの送信に応答して１つの受信確認パケットを受信するステップを有する、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記ネットワークインタフェース装置が、前記行先ノードの１つからの受信確認を待つことなく、前記第１のデータを前記第１の動的接続上で送信する、ことを特徴とする請求項２に記載の方法。
【請求項４】
前記第１の動的接続を閉鎖するステップは、前記ネットワークインタフェース装置が前記受信確認パケットを受信するまで前記第１の動的接続の閉鎖をせずに待機するステップを含む、ことを特徴とする請求項２に記載の方法。
【請求項５】
前記第１の動的接続を閉鎖するステップは、切断パケットを前記第１の動的接続上で前記第１の行先プロセスに送信するステップを含む、ことを特徴とする請求項１に記載の方法。
【請求項６】
前記１つ以上の行先ノードは前記切断パケットの受信確認をせず、そして、前記第２の接続パケットは前記切断パケットの送信後すぐに送信される、ことを特徴とする請求項５に記載の方法。
【請求項７】
前記第１及び第２の要求を受信するステップは、前記ネットワークインタフェース装置による処理に対し、前記第１の行先プロセスを参照する１つ以上の第１の作業待ち行列項目（ＷＱＥ）を行列待ちし、その後、前記第２の行先プロセスを参照する１つ以上の第２の作業待ち行列項目（ＷＱＥ）を行列待ちするステップを有し、そして、
前記ネットワークインタフェース装置は、前記ネットワークインタフェース装置により処理されるべき前記第２の作業待ち行列項目（ＷＱＥ）の最初の１つに到達すると前記第１の動的接続を閉鎖する、ことを特徴とする請求項１に記載の方法。
【請求項８】
前記第１の接続パケットを１つの行先ノードで受信した時に、前記１つの行先ノードで前記第１のデータを受信するため、多重の異なるイニシエータプロセスに順次接続するための動的接続された１つの受信側コンテキストを割り当てるステップと、そして、前記第１の動的接続を閉鎖後、更なるデータを別の１つの多重の異なる行先プロセスに順次接続するための動的接続されたイニシエータから受信するため、前記１つの行先ノードにおいて多重の異なるイニシエータプロセスに順次接続するための動的接続された前記受信側コンテキストを再度割り当てるステップと、を有することを特徴とする請求項１−７のいずれかに記載の方法。
【請求項９】
多重の異なるイニシエータプロセスに順次接続するための動的接続された前記受信側コンテキストを割り当てるステップは、多重の異なるイニシエータプロセスに順次接続するための動的接続された前記受信側コンテキストを、前記第１の接続パケットにより特定された動的接続の１つの行先に属する１群の多重の異なるイニシエータプロセスに順次接続するための動的接続された受信側コンテキストから選択するステップを有する、ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記第１の接続パケットを受信するステップは、前記ネットワークインタフェース装置による再試行に応答して、多重の異なる行先プロセスに順次接続するための動的接続された前記イニシエータコンテキストからの多重の接続パケットを前記行先ノードにおいて受信しカウントするステップと、そして、全ての前記接続パケットが受信された後に、多重の異なるイニシエータプロセスに順次接続するための動的接続された前記受信側コンテキストを再度割り当てるステップと、を有することを特徴とする請求項８に記載の方法。
【請求項１１】
ネットワーク通信装置であって、
ホストインタフェースと、
前記ホストインタフェースは、第１及び第２のデータを、１つ以上の行先ノード上で走る第１と第２の行先プロセスにそれぞれパケットネットワーク経由で送信するという、イニシエータホスト上で走るイニシエータプロセスからの、第１及び第２の要求を、前記イニシエータホストから受信するように接続され、
前記パケットネットワークに接続されたネットワークインタフェースと、
処理回路と、
前記処理回路は、前記第１及び第２の要求の両方に使用されるように割り当てられた、多重の異なる行先プロセスに順次接続するための動的接続された単一のイニシエータコンテキストを使用して、前記第１の行先プロセスとの第１の動的接続を開通するため、多重の異なる行先プロセスに順次接続するための動的接続された前記イニシエータコンテキストを参照しかつ前記第１の行先プロセスを行先とする第１の接続パケットを、前記ネットワークインタフェース経由で送信し、その後、前記第１のデータを前記第１の動的接続上で送信し、そして前記第１のデータの送信後、前記第１の動的接続を閉鎖し、そして、前記第２の行先プロセスとの第２の動的接続を開通するため、多重の異なる行先プロセスに順次接続するための動的接続された前記イニシエータコンテキストを参照しかつ前記第２の行先プロセスを行先とする第２の接続パケットを前記ネットワークインタフェース経由で送信し、その後、前記第２のデータを前記第２の動的接続上で送信する、ように構成され、
ここにおいて動的接続とは一時的な接続を意味し、
を有することを特徴とする装置。
【請求項１２】
前記処理回路は、前記第１の行先プロセスが走っている前記行先ノードの１つから、前記第１の接続パケットの送信に応答して１つの受信確認パケットを受信しそして処理するように構成される、ことを特徴とする請求項１１に記載の装置。
【請求項１３】
前記処理回路は、前記行先ノードの１つからの前記受信確認を待つことなく、前記第１のデータを前記第１の動的接続上で送信するように構成される、ことを特徴とする請求項１２に記載の装置。
【請求項１４】
前記処理回路は、前記受信確認パケットを受信するまで前記第１の動的接続の閉鎖をせずに待機するように構成される、ことを特徴とする請求項１２に記載の装置。
【請求項１５】
前記処理回路は、前記第１の動的接続を閉鎖するため、１つの切断パケットを前記第１の動的接続上で前記第１の行先プロセスに送信するように構成される、ことを特徴とする請求項１１に記載の装置。
【請求項１６】
前記１つ以上の行先ノードは前記切断パケットの受信確認をせず、そして、前記第２の接続パケットは前記切断パケットの送信後すぐに送信される、ことを特徴とする請求項１５に記載の装置。
【請求項１７】
前記処理回路は、前記第１の行先プロセスを参照する１つ以上の第１の作業待ち行列項目（ＷＱＥ）と、その後の前記第２の行先プロセスを参照する１つ以上の第２の作業待ち行列項目（ＷＱＥ）と、からなる１つの待ち行列を処理し、そして、前記ネットワーク通信装置により処理されるべき前記第２の作業待ち行列項目（ＷＱＥ）の最初の１つに到達すると前記第１の動的接続を閉鎖する、ように構成されることを特徴とする請求項１１−１６のいずれかに記載の装置。
【請求項１８】
ネットワーク通信システムであって、
第１のネットワークインタフェース装置と；
前記第１のネットワークインタフェース装置は、第１及び第２のデータを１つ以上の行先ノード上で走る第１と第２の行先プロセスにパケットネットワーク経由でそれぞれ送信するという、１つのイニシエータホスト上で走る１つのイニシエータプロセスからの、第１及び第２の要求を受信するため、前記イニシエータホストに接続され、
前記第１のネットワークインタフェース装置は、前記第１及び第２の要求の両方に使用されるように割り当てられた、多重の異なる行先プロセスに順次接続するための動的接続された単一のイニシエータコンテキストを使用して、前記第１の行先プロセスとの第１の動的接続を開通するため、多重の異なる行先プロセスに順次接続するための動的接続された前記イニシエータコンテキストを参照しかつ前記第１の行先プロセスを行先とする第１の接続パケットを、前記ネットワークインタフェース経由で送信し、その後、前記第１のデータを前記第１の動的接続上で送信し、そして前記第１のデータの送信後、前記第１の動的接続を閉鎖し、そして、前記第２の行先プロセスとの第２の動的接続を開通するため、多重の異なる行先プロセスに順次接続するための動的接続された前記イニシエータコンテキストを参照しかつ前記第２の行先プロセスを行先とする第２の接続パケットを前記ネットワークインタフェース経由で送信し、その後、前記第２のデータを前記第２の動的接続上で送信する、ように構成され、
ここにおいて動的接続とは一時的な接続を意味し、
第２のネットワークインタフェース装置と；
前記第２のネットワークインタフェース装置は、１つの行先ノード上の１つの行先ホストに接続され、前記第１の接続パケットを受信すると、前記行先ノードにおいて前記第１のデータを受信するため、多重の異なるイニシエータプロセスに順次接続するための動的接続された１つの受信側コンテキストを割り当て、そして、前記第１の動的接続を閉鎖した後、更なるデータを多重の異なる行先プロセスに順次接続するための動的接続された他のイニシエータから受信するため、前記動的接続された受信側コンテキストを再度割り当てる、ように構成され、
を有することを特徴とするシステム。
【請求項１９】
前記第２のネットワークインタフェース装置は、多重の異なるイニシエータプロセスに順次接続するための動的接続された前記受信側コンテキストを、前記第１の接続パケットにより特定された動的接続の１つの行先に属する１群の多重の異なるイニシエータプロセスに順次接続するための動的接続された受信側コンテキストから選択するように構成される、ことを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記第２のネットワークインタフェース装置は、前記ネットワークインタフェース装置による再試行に応答して、前記行先ノードにおいて多重の異なる行先プロセスに順次接続するための動的接続された前記イニシエータコンテキストから受信した多重の接続パケットをカウントし、そして、全ての前記接続パケットが受信された後に、多重の異なるイニシエータプロセスに順次接続するための動的接続された前記受信側コンテキストを再度割り当てる、ように構成されることを特徴とする請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワークに関し、特にこのようなネットワーク上でのプロセス通信に関するするものである。
【背景技術】
【０００２】
インフィニバンド（ＩｎｆｉｎｉＢａｎｄ；登録商標；ＩＢ）は、高性能コンピューティングで主に使用されるスイッチトファブリック通信リンクである。これはインフィニバンド業協会により標準化されて来た。コンピュータデバイス（ホストプロセッサや周辺機器）はＩＢファブリックにネットワークインタフェースアダプタ経由で接続し、それはＩＢ語法ではチャネルアダプタと呼ばれる。ホストプロセッサ（又はホスト）は、ホストチャネルアダプタ（ＨＣＡ）を使用し、一方周辺機器は行先チャネルアダプタ（ＴＣＡ）を使用する。
【０００３】
インフィニバンドは拡張可能なスイッチベースのポイントツーポイント接続構造であり、それは層化ハードウェアプロトコル（物理層、リンク層、ネットワーク層、移送層）及びソフトウェア層の両方を定義し、それは初期化とデバイス間の通信を管理する。移送層は順次パケット配信、区画割り、チャネルマルチプレクシング、及び移送サービスを行う。移送層はまた、送信時にトランザクションデータのセグメント化を行い、受信時に再組立を行う。
【０００４】
経路の最大転送ユニット（ＭＴＵ）に基づいて、移送層はデータを適切な寸法のパケットに分割する。受信側は、パケットを行先待ち行列（キュー）ペア及びパケット連続番号を含むベース移送ヘッダー（ＢＴＨ）に基づいて再組立てする。受信側はパケットを認識し、送信側は完成待ち行列（キュー）をオペレーションの状態で更新すると共に、これらの受信確認を受け取る。
インフィニバンドは次の移送サービスを特定している：
・信頼できる接続（ＲＣ）。ＲＣは２つのエンティティ間の信頼できるデータ転送を提供する。ＲＣ移送はＲＤＭＡ操作、不可分操作（アトミック操作）、チャネルセマンティック（意味解釈）を提供する。接続指向の移送として、ＲＣは要求側（リクエスタ）及び応答側（レスポンダ）プロセスのそれぞれのペアに対し独自のキューペア（ＱＰ）を必要とする。
・信頼できない接続（ＵＣ）．ＵＣは、２つのエンティティ間の信頼できないデータ転送を促進する。ＲＣと異なり、ＵＣメッセージは失われる可能性がある。ＵＣはＲＤＭＡ能力を提供するが、順序又は信頼性を保証しない。接続されたそれぞれのプロセスペアは、独自のキューペア（ＱＰ）を必要とする。
・信頼できるデータグラム（ＲＤ）。ＲＤの使用は、１つのＱＰが、１つ以上のＱＰからのメッセージを、ＲＤチャネル（ＲＤＣ）を使用してＲＤドメイン（ＲＤＤ）間でメッセージを送受信することを可能にする。ＲＤは信頼できる接続（ＲＣ）の殆どの特徴を提供するが、それぞれのプロセスに対し独自のＱＰを必要としない。
・信頼できないデータグラム（ＵＤ）。ＵＤを使用して、１つのＱＰは、１つ以上のＱＰからのメッセージを送受信可能であるが、メッセージは失われる可能性がある。ＵＤは無接続であり、単一のＱＰが他のどの同位ＱＰとも通信することを許容する。ＵＤはメッセージ寸法が有限であり、順序又は信頼性を保証しない。
・未処理データグラム。未処理データグラムとは、翻訳されない未処理データグラムメッセージを送受信する能力を１つのＱＰに提供するデータリンク層サービスである。
【０００５】
インフィニバンドの最新の改良点は、拡張信頼接続（ＸＲＣ）移送サービスである（例えば、非特許文献１に記載され、それは参照としてここに採り入れられる）。ＸＲＣは、単一の受信側ＱＰが、所定のホスト上を走る１つ以上のプロセスを横断する多重共有受信側キュー（ＳＲＱ）により共有されることを可能にする。結果的に、それぞれのプロセスは単一の送信ＱＰを、それぞれの遠隔プロセスに対してよりは、むしろ、それぞれのホストに対し維持可能である。受信側ＱＰは、遠隔送信ＱＰごとに確立され、そのホスト上の全てのプロセスで共有可能である。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】「インフィニバンドアーキテクチャ規格の補足、第１．２．１版、分冊Ａ１４：拡張信頼接続（ＸＲＣ）移送サービス」２００９年Ｒｅｖ.１．０
【発明の概要】
【０００７】
本発明の１実施形態では、通信方法は、第１及び第２のデータを、１つ以上の行先ノード上で走る第１及び第２の行先プロセスに、パケットネットワーク経由でそれぞれ送信する、第１及び第２の要求を、イニシエータホスト上で走る１つのイニシエータプロセスから、イニシエータホストに接続するネットワークインタフェース装置で受信するステップを有する。第１及び第２の要求の両方に使用される単一の動的接続されたイニシエータコンテキストが割り当てられる。第１の行先プロセスと第１の動的接続を開通するため、動的接続されたイニシエータコンテキストを参照し第１の行先プロセス向きの第１の接続パケットがネットワークインタフェース装置からパケットネットワーク上で送信される。その後、第１のデータが第１の動的接続上で送信される。第１のデータの送信後、第１の動的接続が閉鎖され、そして、第２の行先プロセスと第２の動的接続を開通するため、動的接続されたイニシエータコンテキストを参照し第２の行先プロセス向けの第２の接続パケットが送信され、その後、第２のデータが送信される。
【０００８】
ある実施形態では、方法は、第１の行先プロセスが走っている行先ノードの１つからデータの送信に応答して受信確認パケットを受信するステップを有する。ネットワークインタフェース装置が典型的に、行先ノードのいずれからの受信確認を待つことなく、第１のデータを第１の動的接続上で送信する。
または或いは、第１の動的接続を閉鎖するステップは、ネットワークインタフェース装置が受信確認パケットを受信するまで第１の動的接続の閉鎖を待つ。  
【０００９】
開示された実施形態では、第１の動的接続を閉鎖するステップは、切断パケットを第１の動的接続上で第１の行先プロセスに送信するステップを含む。典型的に、１つ以上の行先ノードは前記切断パケットの受信確認をせず、そして、前記第２の接続パケットは前記切断パケットの送信後すぐに送信される。
【００１０】
ある実施形態では、第１及び第２の要求を受信するステップは、ネットワークインタフェース装置による実行に対し、第１の行先プロセスを参照する１つ以上の第１の作業待ち行列項目（ＷＱＥ）を行列待ちし、その後、第２の行先プロセスを参照する１つ以上の第２の作業待ち行列項目（ＷＱＥ）を行列待ちするステップを有し、ネットワークインタフェース装置は実行のための第２の作業待ち行列項目（ＷＱＥ）の最初の１つに到達すると第１の動的接続を閉鎖する。
【００１１】
方法は、第１の接続パケットを行先ノードで受信すると、記行先ノードで第１のデータを受信するための１つの動的接続された受信側コンテキストを割り当てるステップと、そして、更なるデータを別の１つの動的接続されたイニシエータから受信するため、第１の動的接続を閉鎖後、動的接続された受信側コンテキストを行先ノードにおいて再度割り当てるステップと、を含む。開示された実施形態では、動的接続された受信側コンテキストを割り当てるステップは、動的接続された受信側コンテキストを、第１の接続パケットにより特定された動的接続の１つの行先に属する１群の動的接続された受信側コンテキストから選択するステップを有する。他の実施形態では、第１の接続パケットを受信するステップは、ネットワークインタフェース装置による再試行に応答して、行先ノードにおいて動的接続されたイニシエータコンテキストからの多重の接続パケットを受信しカウントするステップと、そして、全ての接続パケットが受信された後に、動的接続された受信側コンテキストを再度割り当てるステップと、を有する。
【００１２】
本発明の１実施形態によれば、ネットワーク通信装置であって、
ホストインタフェースと、
ホストインタフェースは、パケットネットワーク経由で第１及び第２のデータを１つ以上の行先ノードで走る第１と第２の行先プロセスにそれぞれ送信するという、イニシエータホスト上で走るイニシエータプロセスからの、第１及び第２の要求を、イニシエータホストから受信するように接続され、
パケットネットワークに接続されたネットワークインタフェースと、
処理回路と、
処理回路は、第１及び第２の要求の両方に使用されるように割り当てられた単一の動的接続されたイニシエータコンテキストを使用して、第１の行先プロセスと第１の動的接続を開通するため、動的接続されたイニシエータコンテキストを参照しかつ第１の行先プロセスを行先とする第１の接続パケットを、ネットワークインタフェース経由で送信し、その後、第１のデータを第１の動的接続上で送信し、そして第１のデータの送信後、第１の動的接続を閉鎖し、そして、第２の行先プロセスと第２の動的接続を開通するため、動的接続されたイニシエータコンテキストを参照しかつ第２の行先プロセスを行先とする第２の接続パケットをネットワークインタフェース経由で送信し、その後、第２のデータを第２の動的接続上で送信する、ように構成され、
を有することを特徴とする装置、が提供される。
【００１３】
本発明の１実施形態によれば、ネットワーク通信システムであって、
第１のネットワークインタフェース装置と；
第１のネットワークインタフェース装置は、パケットネットワーク経由で第１及び第２のデータを１つ以上の行先ノード上で走る第１と第２の行先プロセスにそれぞれ送信するという、イニシエータホスト上で走るイニシエータプロセスからの、第１及び第２の要求を受信するため、イニシエータホストに接続され、
第１のネットワークインタフェース装置は、第１及び第２の要求の両方に使用されるように割り当てられた単一の動的接続されたイニシエータコンテキストを使用して、前記第１の行先プロセスと第１の動的接続を開通するため、動的接続されたイニシエータコンテキストを参照しかつ第１の行先プロセスを行先とする第１の接続パケットを、ネットワークインタフェース経由で送信し、その後、第１のデータを第１の動的接続上で送信し、そして第１のデータの送信後、第１の動的接続を閉鎖し、そして、第２の行先プロセスと第２の動的接続を開通するため、動的接続されたイニシエータコンテキストを参照しかつ第２の行先プロセスを行先とする第２の接続パケットをネットワークインタフェース経由で送信し、その後、第２のデータを第２の動的接続上で送信する、ように構成され、
第２のネットワークインタフェース装置と；
第２のネットワークインタフェース装置は、行先ノード上の行先ホストに接続され、第１の接続パケットを受信すると、行先ノードにおいて第１のデータを受信するための１つの動的接続された受信側コンテキストを割り当て、そして、第１の動的接続を閉鎖した後、更なるデータを他の動的接続されたイニシエータから受信するため、動的接続された受信側コンテキストを再度割り当てる、ように構成され、
を有することを特徴とするシステムが提供される。
【図面の簡単な説明】
【００１４】
本発明は、例示のみを目的とする実施形態により、下図を参照して説明される：
【図１】本発明の実施形態に基づく、動的接続（ＤＣ）された移送サービスを採用して作動するシステムの概略ブロック図である。
【図２】本発明の実施形態における、動的接続（ＤＣ）キュー（待ち行列）ペアを確立するホストチャネルアダプタ（ＨＣＡ）の機能要素を示すブロック図である。
【図３】本発明の実施形態に基づく、基礎的なＤＣ接続−データ−切断シークエンスを示すはしご型図表である。
【図４】本発明の実施形態に基づくＤＣ移送サービスを使用する作業要求を処理する方法を示すフロー図である。
【図５】本発明の実施形態に基づくＤＣ移送サービスで受信したパケットの処理方法を示すフロー図である。
【図６】本発明の実施形態に基づく、１つのイニシエータＨＣＡと２つの応答側ＨＣＡとの間のＤＣデータ転送を示すはしご型図表である。
【図７】本発明の実施形態に基づく、ＤＣイニシエータコンテキストの状態マシンを概略示す状態図である。
【図８】本発明の実施形態に基づく、ＤＣ応答側コンテキストの状態マシンを概略示す状態図である。
【発明を実施するための形態】
【００１５】
以下の記号が本出願を通じて使用される：
（記号）    （定義）
ＡＣＫ      受信確認
ＡＶ        アドレスベクトル
ＢＴＨ      ベース移送ヘッダー
ＤＣ        動的接続
ＤＣＴ      動的接続された行先
ＦＣＰ      ファイバーチャネルプロトコル
ＨＣＡ      ホストチャネルアダプタ
Ｉ／Ｏ      入出力
ＩＢ        インフィニバンド（登録商標）
ＬＡＮ      ラン（ローカルエリアネットワーク）
ＭＴＵ      最大転送ユニット
ＮＡＣＫ    否定確認
ＰＳＮ      パケット交換ネットワーク
ＱＰ        キューペア
ＲＣ        信頼できる接続
ＲＤ        信頼できるデータグラム
ＲＤＣ      信頼できるデータグラムチャネル
ＲＤＤ      信頼できるデータグラムドメイン
ＲＤＭＡ    リモートダイレクトメモリアクセス
ＲＱ        送信キュー
ＳＡＮ      記憶領域ネットワーク
ＳＱ        受信キュー
ＳＲＱ      共用受信キュー
ＴＣＡ      行先チャネルアダプタ
ＵＣ        信頼できない接続
ＵＤ        信頼できないデータグラム
ＷＡＮ      広域ネットワーク
ＷＱＥ      作業キュー（待ち行列）項目  
ＷＲ        作業要求
ＸＲＣ      拡張信頼接続
【００１６】
インフィニバンドネットワークのノード上で実行されるプロセスは、キュー（行列）に基づくモデルを使用して互いに通信する。送受信プロセスは、１つの送信キュー（ＳＱ）及び１つの受信キュー（ＲＱ）からなる１つのキューペア（ＱＰ）を確立する。ホストによる送受信作業要求は、インフィニバンドチャネルアダプタによる処理のため、作業待ち行列項目（ＷＱＥ）がこれらのキュー（待ち行列）にロードされるようにする。ＱＰ上のメッセージを送受信するため、受信バッファがそのＱＰに入力される。
【００１７】
ここに記載される本発明の実施形態では、動的接続（ＤＣ）された移送サービスが、信頼できる接続（ＲＣ）のセマンティックを維持しながら末端ノード当りの必要ＱＰ数を減少させるために使用される。動的接続（ＤＣ）された移送サービスは、動的接続（ＤＣ）ＱＰが多重の遠隔ノード内の多重の遠隔プロセスに到達することを許容する、データグラム様モデルを提供する。動的接続（ＤＣ）送信キュー（待ち行列）に作業依頼された各作業要求（ＷＲ）は、行先となる遠隔行先プロセスを識別する情報を含む。動的接続（ＤＣ）されたコンテキストはそれにより、ネットワークを横断して互いに動的に結び付けられ、動的（即ち、一時的）な信頼できる接続（ＲＣ）と同等の接続を生成し、それは信頼性を持って１つ以上のメッセージを送達するのに使用される。イニシエータ（即ち送信末端ノードのホストチャネルアダプタ（ＨＣＡ））が、さらに実行すべき作業待ち行列項目（ＷＱＥ）がないか、又は次の作業待ち行列項目（ＷＱＥ）が他のプロセス向けである（可能性として他のノード内の）かである、送信キュー（待ち行列）のある点に到達すると、動的接続は破断される。同一の動的接続（ＤＣ）されたコンテキストが、もう１つの行先プロセスに対して新規の動的接続を確立するのに使用される。
【００１８】
本発明の実施形態により提供された動的接続（ＤＣ）された移送サービスは、各プロセスが、それが独占的に所有する、それ自身の独自の動的接続（ＤＣ）されたコンテキストのセットを維持することを可能にする。動的接続（ＤＣ）された移送サービスは、各動的接続（ＤＣ）された移送コンテキストが多重の遠隔ノード内の多重の遠隔プロセスを行先とすることを許容する。信頼できる送達セマンティックを提供するため、動的接続（ＤＣ）されたコンテキストはネットワークを横切って動的に互いに結び付き、そして信頼を持って１つ以上のメッセージを送達するのに使用される、一時的な信頼できる接続（ＲＣ）と同等の接続を生成する。チャネルアダプタは、別個の信号手続を要求するよりはむしろ、接続それ自体を通ってパケットを送信することによりバンド内の動的接続を生成する。このバンド内接続手法は後続のデータ通信トラフィックのパイプライン化を手助けし、それにより３方向ハンドシェイクの待機時間コストを消滅させる。一度特定の行先に入力される全てのメッセージが完了すると、動的接続（ＤＣ）は破断され、そして動的接続（ＤＣ）されたコンテキストは新しい接続に対し使用可能になる。
【００１９】
動的接続（ＤＣ）された移送サービスにおいて、完全な接続性のために各ノードにより必要とされる１つのクラスタ内の動的接続（ＤＣ）されたコンテキストの数は、クラスタの寸法に影響されない。各プロセスは典型的に、プロセスが並行して駆動可能な接続の数のオーダーの多くの動的接続（ＤＣ）されたコンテキスト、及び入ってきた要求を処理するための追加の動的接続（ＤＣ）されたコンテキストを必要とする。各末端ノードに対する動的接続（ＤＣ）されたコンテキストの必要数は、従ってそれぞれの終点ノードの能力により左右される。
【００２０】
動的接続（ＤＣ）された移送サービスがデータグラム様の接続性モデルを許容するため（接続コンテキストにおいて）、動的接続（ＤＣ）を取り扱う場合、ＱＰの伝統的概念は変更されるべきである。動的接続（ＤＣ）されたイニシエータ及び応答側コンテキストは、ペアとして結び付けられず、かつそのようにも生成されない、独立のエンティティとして取り扱われるべきである。１つの動的接続（ＤＣ）されたイニシエータがある所与の遠隔ノードの１つの動的接続（ＤＣ）された応答側と結び付けられている場合、それは同時に１つの逆方向の相補的接続がなければならないことを意味しない。この動的接続（ＤＣ）の特徴により、１つのプロセスに対し、接続性要求を満足させるために必要な動的接続（ＤＣ）されたイニシエータと動的接続（ＤＣ）された応答側のコンテキストの数を独立して決定することが可能となる。それはまた、それらが厳密に一方向であるため、動的接続（ＤＣ）のセマンティックを単純化する。
【００２１】
（システムの記述）
図１は、本発明の実施形態に基づく、動的接続（ＤＣ）された移送サービスを使用して作動するシステム１０の概略ブロック図である。システム１０は、ネットワーク１８上にノード１２，１４及び１６を有する。この事例では、ノード１２はイニシエータノードであり、ノード１４と１６は応答側ノードである（典型的にではあるが、どの所定のノードも同時にイニシエータと応答側になりうる）。ネットワーク１８はインフィニバンドスイッチトファブリック通信ネットワークのようなパケットネットワークである。
【００２２】
この事例では、ホスト２４上で実行する一群のプロセス２２からの１つのイニシエータプロセスが、１つのメッセージをホスト３０上で実行する一群のプロセス２８からの１つの応答側プロセスに送る、１つの作業要求をホストチャネルアダプタ（ＨＣＡ）２６に依頼する。作業要求を受け取ると、ホストチャネルアダプタ（ＨＣＡ）２６は、下記のように、「動的接続（ＤＣ）接続」パケットを送信することにより、応答側ノードのＨＣＡ３２と動的接続を確立するように試みる。「動的接続（ＤＣ）接続」パケットを送信後、ＨＣＡ２６は、作業要求を完遂するため、１つ以上のデータパケットを動的接続上で応答側プロセスに送信する。データパケットを受信すると、ＨＣＡ３２は１つ以上の受信確認パケットを動的に接続されたＨＣＡ２６の受信キュー（待ち行列）に送信することにより応答する。この応答側プロセスに関する全てのＨＣＡ２６上の作業待ち行列項目（ＷＱＥ）が一度実行されると、ＨＣＡ２６及びＨＣＡ３２はイニシエータプロセスと応答側プロセス間の連結を破断し、そしてＨＣＡ２６上のその動的接続（ＤＣ）されたコンテキストは他のプロセスと接続に使用可能となる。
【００２３】
従って、例えば、ホスト２４上で実行する一群のプロセス２２の１つのイニシエータプロセスが、１つ以上のメッセージをホスト３０上で実行する一群のプロセス２８の第１の応答側プロセスに送信する、第１の作業要求をホストチャネルアダプタ（ＨＣＡ）２６に送信し、その後、１つ以上のメッセージをホスト３６上で実行する一群のプロセス３４の第２の応答側プロセスに送信する、第２の作業要求をＨＣＡ２６に依頼する。第１の作業要求を受信すると、ＨＣＡ２６はＨＣＡ３２と動的接続を確立し、そして上記のようにデータパケットを運ぶ。一度ＨＣＡ２６が第１の作業要求に関する全ての作業待ち行列項目（ＷＱＥ）の実行を完了し、そして異なる応答側プロセスを行先とする第２の作業待ち行列項目（ＷＱＥ）を検知すると、ＨＣＡ２６は、応答側プロセスと動的接続（ＤＣ）されたコンテキストの繋がりを破断するため、動的接続（ＤＣ）脱接続パケットをＨＣＡ３２に送信する。
【００２４】
ＨＣＡ２６はその後、動的接続（ＤＣ）接続パケットを送信することにより、第２の応答側ノードのＨＣＡ３８と動的接続（ＤＣ）を確立するように試みる。動的接続（ＤＣ）接続パケットを送信後、ＨＣＡ２６は、第２の作業要求を遂行するため、１つ以上のデータパケットを動的接続（ＤＣ）上で第２の応答側プロセスに送信する。それぞれのメッセージデータパケットを受信すると、ＨＣＡ３８は動的に接続されたＨＣＡ２６の受信キュー（待ち行列）に受信確認を送信する。第２の応答側プロセスに関する全ての作業待ち行列項目（ＷＱＥ）が実行されると、応答側プロセスと動的接続（ＤＣ）されたコンテキストの繋がりを破断するため、ＨＣＡ２６は動的接続（ＤＣ）脱接続パケットをＨＣＡ３８に送信する。
【００２５】
上記の簡単な事例はイニシエータプロセスと２つの逐次的応答側プロセスの間の単一動的接続に関しているが、単一動的接続（ＤＣ）されたコンテキストは、単一行先ノード上の、又は多重の異なる行先ノード上の、３つ以上の応答プロセスを逐次接続するのに使用可能である。さらに、１つの所与のイニシエータプロセスは、多重の動的接続（ＤＣ）されたコンテキストをこの種の多重の動的接続（ＤＣ）上で同時に使用可能である。
【００２６】
図２は、本発明の実施形態における、動的接続（ＤＣ）されたイニシエータ及び応答側キュー（待ち行列）の確立に関与する（イニシエータノード１２の）ＨＣＡ２６の機能要素を示すブロック図４０である。（応答側ノード１４のＨＣＡ３２及び応答側ノード１６のＨＣＡ３８も同様の構成である。）この事例では、ＨＣＡ２６は、ホストＣＰＵ４２からのＲＤＭＡ要求のような作業要求をホストインタフェース経由で受信する。その作用要求の実行は、ホストメモリ４６からのデータを含む１つ以上のメッセージのネットワーク１８への送信を含む。ここに図示され記述されるＨＣＡ２６の構造は、高度に単純化されており、ＨＣＡの署名処理機能が如何に実行されるかを理解するのに必要な要素しか含まない。実行は例示のためであり、他の実行も当業者には自明であり、本発明の請求の範囲に含まれる。
【００２７】
処理回路５０はホスト２４上で実行する１つのプロセスへの接続を確立するため、典型的にＤＣ移送コンテキストキャッシュ５２に保持される、１つの動的接続（ＤＣ）されたイニシエータコンテキストを使用する。接続は、ＨＣＡ２６上で使用可能な１群のＤＣキュー５４から選択される、１つの動的接続（ＤＣ）されたイニシエータキュー（待ち行列）を使用する。各プロセスは典型的に、それが独占的に所有する自身の１組の１つ以上の独自のＤＣコンテキストを維持する。ＨＣＡ２６はホストメモリ４６からのこれらＤＣコンテキストをＤＣコンテキストキャッシュ５２に必要に応じて転送する。
【００２８】
ＨＣＡ２６はメッセージデータパケットを、ネットワークインタフェース５６経由で応答側ノード１４に送信する。ＨＣＡ２６が全てのメッセージデータパケットの送信を完了すると、ＨＣＡ３２の処理回路５０はＤＣ応答側コンテキスト接続を破断し、そのＤＣ応答側コンテキストは新規の接続に対し使用可能となる。
【００２９】
受信側では、ＨＣＡ３２（又はＨＣＡ３８）がＤＣ接続パケット及びメッセージデータパケットを、ネットワーク１８よりネットワークインタフェース５６経由で受信する。パケットはＨＣＡ３２上の１つのＤＣ行先（ＤＣＴ）に向けられ、そのことは、単一ロジカルエンティティに属し、そしてそのＤＣＴ向けの接続要求に均等に使用可能な個々のＤＣ応答側コンテキストのグループ化を可能にする。受信側ＨＣＡはＤＣＴグループからの１つのＤＣ応答側コンテキストを接続に対し機能するために割り当てる。ＤＣ要求側により送信されたデータパケットと、関連する所定の接続に対し現在機能している特定のＤＣ応答側コンテキストの関連付けは、ソースキューペア番号及び要求側のネットワークアドレスに基づいて、応答側により維持される。
【００３０】
ＨＣＡ３２上の処理回路５０は、典型的に、割り当てられたＤＣ応答側コンテキストをＤＣ移送コンテキストキャッシュ５２内に維持する。ネットワークインタフェース５６経由で受信されたメッセージデータパケットは、ＨＣＡにより行列待ちされ処理され、その後データはホストインタフェース４８経由で応答側プロセスに送信される。切断パケットを受信すると、処理回路５０はＤＣ接続の応答側を破断する。
【００３１】
（動的接続されたパケット転送及び管理）
図３は、本発明の実施形態に基づく、基礎的なＤＣ接続−データ−破断シークエンスを示すはしご型図表６０である。イニシエータプロセス６２が作業要求を依頼し、それは結果的に、ネットワーク１８のノード１４上で実行する１つのプロセスに送信されるメッセージを呼び出す、ＨＣＡ２６による実行用の作業待ち行列項目（ＷＱＥ）６４，６６の行列待ちとなる。ＷＱＥ６４を受信すると、ＨＣＡ２６は自分がＤＣ行先に接続していないことを認識し、それゆえＤＣ接続パケットをＨＣＡ３２に送信する。接続パケットはＤＣ行先（ＤＣＴ）により行先プロセスを識別し、ＤＣＴは作業待ち行列項目（ＷＱＥ）より選択され、そしてＨＣＡ２６により接続パケット内のベース移送ヘッダー（ＢＴＨ）の行先キューペア（ＱＰ）フィールド内に挿入される。ＨＣＡ３２はＤＣ応答側（ＤＣＲ）コンテキストを割り当て、そして、受信確認（ＡＣＫ）データパケットをＨＣＡ２６に返信する。（しかし、典型的に受信側はＤＣ接続パケットを受信確認せず、その後のデータパケットの幾つかを受信確認する。何故ならば、それぞれのＡＣＫパケットは従前にこの接続上で送信された接続パケット及びデータパケットの全てを暗黙裡に受信確認するからである。）ＤＣ接続パケットを送信後、ＨＣＡ２６はＷＱＥ６４，６６に対応するメッセージデータパケットをＨＣＡ３２に、ＨＣＡ３２からの受信確認（ＡＣＫ）を待つことなく、送信する。
【００３２】
ＤＣ送信キュー（待ち行列）の最後のＷＱＥであるＷＱＥ６６を実行後、ＨＣＡ２６はＨＣＡ３２からメッセージデータパケットの受信確認（明示的又は暗黙的な）を受信するのを待つ。ＨＣＡ２６が予定の受信確認（ＡＣＫ）を受信できない場合、ＨＣＡ２６は、そのパケットの全て又は一部を信頼できる接続プロトコルに従って再送信する。最後の受信確認（ＡＣＫ）（即ち、全てのパケットがＨＣＡ３２に受信されたことを示す受信確認）を受信後、ＨＣＡ２６は切断パケットをＨＣＡ３２に送信する。切断パケットを受信後、ＨＣＡ３２はＤＣ行先（ＤＣＴ）コンテキストを破断するが、他の１つの受信確認（ＡＣＫ）パケットでの応答はしない。
【００３３】
図４は、本発明の実施形態に基づく動的接続（ＤＣ）された移送サービスの作業要求を処理する方法を示すフロー図である。方法は明確化のため、従前の図に示された機能ブロック及びデータ構造を参照して記載されるが、以下の記述を読んだ当業者には明らかなように、本方法は他の回路やデータ構造を使用しても実現可能である。
【００３４】
ＨＣＡ２６は第１の作業待ち行列項目（ＷＱＥ）を、ホスト１２上で実行するイニシエータプロセスからホストインタフェース４８経由で受信する（ステップ７０）。そのＷＱＥは、ホスト１４上で実行する１つのプロセスへ送信される１つのメッセージを示す。ＨＣＡ２６は１つの応答側コンテキストに接続されていないことを検知し、従って１つの接続パケットを応答側ＨＣＡ３２にネットワークインタフェース５６経由でネットワーク上で送信する（ステップ７２）。このパケットはＨＣＡ２６上のイニシエータＤＣコンテキストとＨＣＡ３２上のＤＣ行先（ＤＣＴ）の接続を確立する。ＨＣＡ２６はその後、作業要求からのメッセージデータパケットをＤＣイニシエータコンテキストを通じて、ネットワークインタフェース５６経由で送信する（ステップ７４）。
【００３５】
ＤＣイニシエータ送信キュー（待ち行列）に追加のＷＱＥが有る場合（ステップ７６）、ＨＣＡ２６は次のＷＱＥを引き出す（ステップ７８）。引き出されたＷＱＥが接続されている応答側ＤＣ行先（ＤＣＴ）を参照する場合（ステップ８０）、方法はステップ７４に戻る。そうでない場合は、ＨＣＡ２６は、ＨＣＡ２６が送信した全てのパケットに対する現在の応答側からの（明示的又は暗黙的な）受信確認の受信を待つ（ステップ８１）。期待された受信確認を受信すると、ＨＣＡ２６はＤＣ接続を破断するため、切断パケットをＨＣＡ３２に送信し（ステップ８２）、そして方法はステップ７２に戻る。ステップ７６に戻って、ＤＣイニシエータ送信キュー（待ち行列）に追加のＷＱＥが無い場合、ＨＣＡ２６は現在の応答側からの受信確認（ＡＣＫ）パケットの受信を待ち（ステップ８３）、その後切断パケットをＨＣＡ３２に送信する（ステップ８４）。
【００３６】
ＨＣＡ２６は典型的に接続要求のすぐ後にデータパケットを送信する。データパケットは、接続それ自体と同一のリンク層のパラメータを使用するお陰で、（対応する接続の後は）順番に到着することが保証されている。この保証された順序は、ＨＣＡ２６が、それぞれの接続又はメッセージデータパケットを送信した後、次のＷＱＥの処理前に、受信確認（ＡＣＫ）を待つ必要性を無くする。切断パケットを送信する前に、ＨＣＡ２６は（ステップ８１又は８３で）ＨＣＡ３２から接続パケット及び全てのメッセージデータパケットに対する受信確認（ＡＣＫ）を受信したかを確認する。対応する受信確認（ＡＣＫ）パケットを適当な時間切れ期間内に受信しなかった場合、ＨＣＡは接続パケット及び／又は１つ以上のデータパケットを再送信してもよい。しかし、ＨＣＡ２６が切断パケットを送信した後は、受信確認（ＡＣＫ）を待つ必要はない。
【００３７】
図５は、本発明の実施形態に基づく動的接続（ＤＣ）された移送サービスで受信したパケットの処理方法を示すフロー図である。ＨＣＡ３２（即ち、応答側ＨＣＡ）は接続パケットをＨＣＡ２６からネットワーク１８上でネットワークインタフェース５６を経由して受信する（ステップ９０）。ＤＣ接続パケットは、行先ノードにおいて送信側ＤＣイニシエータと１つのＤＣ応答側コンテキストの間の一時的関係を確立するのに必要な全ての情報を運搬する。１つの接続要求パケットを受信すると、行先ノードは、接続要求で行先とされたＤＣ行先（ＤＣＴ）内の応答側プールから１つのＤＣ応答側コンテキストを割り当てる。処理回路５０は適切なＤＣ応答側コンテキストをコンテキストキャッシュ５２の中に発見し、そしてＤＣキュー５４からの適切な受信キュー（待ち行列）を使用して接続を確立する（ステップ９２）。（多重の受信キューが単一のＤＣ行先（ＤＣＴ）に付随する可能性が有り、また単一の共有受信キューに付随する移送コンテキストが他のＤＣ行先（ＤＣＴ）に付随する可能性がある。）割り当てが成功すると、動的コンテキストが作動状態にされ、入力される要求パケットを処理する準備が完了する。ＨＣＡ３２は、接続パケットの受信を確認する受信確認（ＡＣＫ）データパケットをＨＣＡ２６に返信してもよいが、通常は、その後のデータパケットに応答した受信確認（ＡＣＫ）のみを送信する。違反が検知されると、又はその要求を取り扱う使用可能なコンテキストが無い場合、否定応答（ＮＡＫ）がイニシエータに返信される。
【００３８】
接続パケットに続いて、ＨＣＡ３２は第１のメッセージデータパケットをＨＣＡ２６からネットワーク１８上でネットワークインタフェース５６を経由して受信する（ステップ９６）。受信したデータパケットが切断パケットでない場合（ステップ９８）、ＨＣＡ３２は受信したメッセージデータを、ホスト３０上で実行する適切な応答側プロセスに送信する（ステップ１００）。ＨＣＡ３２はＨＣＡ２６に、メッセージデータパケット受信を確認する受信確認（ＡＣＫ）パケットを返信してもよい（ステップ１０２）。そして方法はステップ９６に戻る。しかしステップ９８において受信したデータパケットが切断パケットである場合、或いは、接続上に更なるパケットを受信することなく既定の時間が切れてしまった場合、処理回路５０は応答側プロセスとＤＣ応答側コンテキストとの間の関連付けを破断する（ステップ１０４）。その後そのコンテキストは、イニシエータプロセスからの追加の接続に対し使用可能になる。
【００３９】
典型的に、切断パケットは応答側ＨＣＡにより受信確認（ＡＣＫ）されない。このアプローチは、切断パケットが遺失されず、そして行先に必要な時間内に到達するという通常の場合に対する最適化を意味する。切断受信確認（ＡＣＫ）を待たないことにより、（次の作業待ち行列項目（ＷＱＥ）上に異なる行先を検知した時に）従前に接続していた応答側からの切断に続いて、後続の接続要求が直ちに進行可能となる。切断パケットが応答側に到達しないという稀に起こる場合は、処理サーキット５０内の応答側時間切れ機構が結果的にＤＣ応答側コンテキストをいずれにせよ解放する。
【００４０】
図６は、本発明の実施形態に基づく、１つのイニシエータＨＣＡと２つの応答側ＨＣＡとの間のＤＣデータ転送を示す、はしご型図表１１０である。１つのイニシエータプロセス１１２は一連の作業要求を送信し、それは結果的にＨＣＡ２６による実行に対する作業待ち行列項目（ＷＱＥ）１１４，１１６，１１８の行列待ちを引き起こす。作業待ち行列項目（ＷＱＥ）は、ノード１４（本図中ではノード「Ａ」）上で実行する１つのプロセスに送信される２つのメッセージと、それに続くネットワーク１８上のノード１６（本図中ではノード「Ｂ」）上で実行する他の１つのプロセスに送信される１つのメッセージを特定する。ＷＱＥ１１４の処理に当ってＨＣＡ２６は、それが特定のＤＣ行先（ＤＣＴ）に接続されていないことを認識し、そして従ってＤＣ接続パケットをＨＣＡ３２に送信する。ＤＣ接続パケットを送信後、ＨＣＡ２６はＷＱＥ１１４と１１６により特定されたメッセージデータパケットをＨＣＡ３２に送信する。ＷＱＥ１１８は異なる応答側プロセスを行先とするため、ＨＣＡ２６はＨＣＡ３２からそのメッセージデータパケットに対する期待される受信確認（ＡＣＫ）を受信するのを待ち、そしてＤＣ切断パケットをＨＣＡ３２に送信する。
【００４１】
ＷＱＥ１１８の処理に当って、ＨＣＡ２６はＤＣ接続パケットをＨＣＡ３８に送信する。ＤＣ接続パケットを送信後、ＨＣＡ２６はＷＱＥ１１８により特定されたメッセージデータパケットをＨＣＡ３２に送信する。ＷＱＥ１１８がＤＣ送信キューの中で最後のＷＱＥであるため、ＨＣＡ２６はＨＣＡ３８からそのメッセージデータパケットに対する期待される受信確認（ＡＣＫ）を受信するのを待ち、そしてＤＣ切断パケットをＨＣＡ３８に送信する。切断パケットを受信後、ＨＣＡ３８は応答側ＤＣコンテキストを破断するが、受信確認（ＡＣＫ）データパケットでの応答はしない。  
【００４２】
図７は、本発明の実施形態による動的接続（ＤＣ）されたイニシエータコンテキストの状態マシン１２０を概略示す状態図である。各ＤＣイニシエータはアイドル状態においてスタートする。ＤＣ  ＷＱＥが入力されると、ＤＣイニシエータは、そのアドレスがＷＱＥにおいて特定された遠隔ピアにＤＣ接続パケットを送信し、そしてイニシエータを不確実接続状態１２４に移動させる。この状態でＨＣＡ２６はデータパケットを送信し、応答側からの受信確認（ＡＣＫ）パケットを待つ。受信確認（ＡＣＫ）が既定の時間切れ期間内に受信されない場合、ＨＣＡ２６は応答が受信されるまでデータパケットを再送信する。或いは、本図に示すように、ＨＣＡ２６はＤＣ接続パケットを再送信してもよい。しかし他の実施形態では、ＣＤ接続パケットは所定の応答側に一度だけ送信され；そして受信確認（ＡＣＫ）が受信されない場合、ＨＣＡ２６は、単にホスト２４上の要求側ソフトウェアプロセスに対し接続の試みが失敗したと伝える。
【００４３】
応答側から受信確認（ＡＣＫ）を受け取ると、ＤＣイニシエータは接続状態１２６に移動する。この状態で、ＤＣイニシエータは全ての信頼できる接続（ＲＣ）移送および保護チェックとアクション（例えば、移送エラーの場合の再送信、受信側準備未完了（ＲｎＲ）、否定確認（ＮＡＣＫ）等）を実行する。信頼できる接続（ＲＣ）キューペア（ＱＰ）の終了を通常引き起こすエラー状態（例えば、アクセス違反、再試行、超過等）は、同様にＤＣ接続の終了に繋がる。このような場合、ＨＣＡ２６はＤＣ切断パケットを送信し、送信キューをクリアし、そして送信キューをエラー状態に置く。        
【００４４】
送信キューの最後に到達するか、又は現在の接続に適合しないアドレスベクターに到達すると、ＤＣイニシエータは受信確認（ＡＣＫ）待ち状態１２８に移動する。この状態では、ＤＣイニシエータは、全ての処理中のメッセージに対する受信確認（ＡＣＫ）を受信するまで、信頼できる接続（ＲＣ）移送および保護チェックとアクションを継続する。前と同じアドレスベクターの新規のＷＱＥを受信することなく、全ての受信確認（ＡＣＫ）が受信された場合、ＤＣイニシエータはＤＣ切断パケットを受信側に送信し、そしてアイドル状態１２２に戻る。（状態１２８におけるエラー動作は接続状態１２６におけるのと同様である。）
【００４５】
不確実接続状態１２４に戻って、例えば応答側ＤＣ行先（ＤＣＴ）が利用可能でない場合、ＤＣイニシエータがＤＣ接続パケットに対し否定応答（ＮＡＫ応答）を受信することが起こる。この場合ＤＣイニシエータはＤＣ−受信側準備未完了（ＲｎＲ）待機状態１３０に移動し、そして既定の時間が経過するまでこの状態を維持する。待ち時間は構成可能なＤＣ−受信側準備未完了（ＲｎＲ）タイマーにより制御される。時間が過ぎると、ＤＣイニシエータはＤＣ接続パケットを再送信し、そして状態１２４に戻る。
【００４６】
図８は、本発明の実施形態に基づく、動的接続（ＤＣ）された応答側コンテキストの状態マシン１４０を概略示す状態図である。この例では、ＤＣ応答側はＨＣＡ３２上で走る。各ＤＣ応答側（即ち、ＤＣ行先（ＤＣＴ）を伴う各受信キュー（待ち行列））はアイドル状態１４２から始まる。接続パケットを受信すると、ＤＣ受信側は活性状態１４４に移動する。活性状態において、ＤＣ応答側は受信確認（ＡＣＫ）パケットを、要求通りＤＣイニシエータに送信する。ＤＣ応答側は通常、切断パケットを受信するまで、又は更なるパケットをＤＣイニシエータから受信することなく制限時間が経過するまで、活性状態を維持し、その後アイドル状態１４２に戻る。
【００４７】
図７を参照して前述した通り、ある実施形態では、ＤＣイニシエータがＤＣ接続を再試行することを促すある一定の状態がありうる。通常はこのような再試行は従前のＤＣ接続パケットが遺失した場合に起こるが、１つ以上の従前のＤＣ接続パケットが意図された行先に到着せず、まだインフィニバンド（ＩＢ）ファブリック内にある（例えば、ルーティングテーブルの暫定的再構成の結果として）場合も、起り難いとしても起り得る。このような状況下では、従前のＤＣ接続パケット（ここでは「ゴースト接続」と呼ばれる）は結果的に元々の行先を見つける可能性がある。このようなゴースト接続パケットの取り扱いは、完全性のため本図に示され又以下に記載される；しかしこのような取り扱いは、上記のように、要求側ＨＣＡが、失敗を要求側ソフトウェアプロセスに報告する以前において単一のＤＣ接続パケットしか送信しない、他の実施形態では一般的に不要である。
【００４８】
応答側ＨＣＡ３２によるゴースト接続を新規の接続要求と誤認識する可能性を防止するため、活性状態１４４にあるＤＣ応答側は、それが受信するＤＣ接続パケットを追跡し、そして全てのＤＣ接続のインスタンスをまだ受信していないそれら接続に対し（切断パケットを受信した後も）ＤＣ行先（ＤＣＴ）コンテキストを存続させておいてもよい。接続コンテキストを活性に保つことにより、（それらのパケット連番が接続コンテキストに適合しているため）応答側がゴースト接続を識別し、そしてそれらを新規の接続要求として取り扱うことを回避することができる。ＤＣ応答側は、時間切れにより繰り返された要求のみをカウントして（即ち、明示的否定応答をカウントせず）、ゴースト接続の数をカウントする。
【００４９】
ＨＣＡ３２がＤＣ切断パケットを活性状態１４４で受信する場合、それはＤＣイニシエータにより示された繰り返しＤＣ接続パケットの数が、ＤＣ応答側が受信した数に適合するか否かをチェックする。適合していれば、応答側ＨＣＡ３２はＤＣ応答側コンテキストを安全に閉鎖し、アイドル状態１４２に戻る。そうでない場合は、ＤＣ応答側は、残りの全てのＤＣ接続パケットが受信されるまで、又は既定の時間切れ期間が経過するまで、「検疫」状態１４６に移動してもよい。
或いは、ゴースト接続の取り扱いが必要とされない実施形態では、状態１４６は不要であり、その場合、ＤＣ応答側は、単純にＤＣ切断パケットの受信後直ちにアイドル状態１４２に戻る。
【００５０】
請求項における関連する構造、材料、行動、及び全ての手段またはステップ及び機能要素は、各請求項において特定される他の要素と組み合わせて、機能を実行するためのいかなる構造、材料又は行動を含むことを意図されている。
本発明の記述は表示と記載の目的だけのために提出され、従って、他を除外し又は本発明の範囲を限定する目的ではない。当業者にとっては、本発明の範囲及び精神から外れることなく多くの変形や変更が自明である。実施形態は、本発明の原理及び現実的実施例を最適に説明し、種々に変更された実施形態が特定の使用に適することを他の当業者が理解するために選択された。
【００５１】
付属の特許請求の範囲は、本発明の精神と範囲に含まれる全ての特徴及び利点をカバーすることを意図している。多くの変更及び変化が当業者に容易に想起されるため、本発明はここに記載された実施形態に限定されない。従って、全ての適合する変化形、変更、及び同等品は本発明の精神と範囲に含まれることを理解されたい。
【図１】
0005635117.tif 000002
【図２】
0005635117.tif 000003
【図３】
0005635117.tif 000004
【図４】
0005635117.tif 000005
【図５】
0005635117.tif 000006
【図６】
0005635117.tif 000007
【図７】
0005635117.tif 000008
【図８】
0005635117.tif 000009