(57)【要約】【課題】  データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理する、データ処理システムにおける方法、システム、および製品を提供する。【解決手段】  第１のエンド・ノードと第２のエンド・ノードとの間でデータを伝送する前に、第１のエンド・ノードと第２のエンド・ノードとの間に論理接続を確立する。あるインスタンス番号を、この論理接続に関連付けるとともに、この接続が維持されている間に伝送する各パケットに含める。インスタンス番号はこの接続の間は一定に保たれるが、これらのエンド・ノード間に論理接続が再確立されるごとに、たとえばそれをインクリメントすることにより、変化させる。各パケットはこの論理接続という特定の事実に関連付けられている。パケットを受信すると、そのインスタンス番号を用いて当該パケットが、これらのエンド・ノード間の以前の論理接続の間に伝送された長期経過のパケットであるか否かを判断する。
2005524264.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理する方法であって、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間でデータを伝送する前に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立するステップと、
あるインスタンス番号と前記論理接続とを関連付けるステップと、
前記論理接続の確立状態を維持しながら、前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インスタンス番号を含めるステップであって、前記インスタンス番号は前記論理接続の間、一定に保たれる、ステップと
を備えた
方法。
【請求項２】
さらに、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立するステップと、
前記インスタンス番号をインクリメントするステップであって、前記インクリメントしたインスタンス番号は前記再確立した論理接続に関連付けられている、ステップと、
前記再確立した論理接続の間に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インクリメントしたインスタンス番号を含めるステップであって、前記インクリメントしたインスタンス番号は前記再確立した論理接続の間、一定に保たれる、ステップと
を備えた、
請求項１に記載の方法。
【請求項３】
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立する前記ステップが、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付けるステップ
を備えた、
請求項１に記載の方法。
【請求項４】
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付ける前記ステップが、さらに、
前記第１のエンド・ノード中にキュー対のテーブルを確立するステップと、
前記第１のエンド・ノード中の前記キュー対と前記第２のエンド・ノード中のキュー対との間の関連付けを前記テーブル内に格納するステップと
を備えた、
請求項３に記載の方法。
【請求項５】
さらに、
特定の論理接続を用いて前記第２のエンド・ノードから前記第１のエンド・ノードへパケットを送信するステップと、
前記第１のエンド・ノードを用いて前記パケットを受信するステップと、
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断するステップと
を備えた、
請求項４に記載の方法。
【請求項６】
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断する前記ステップが、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示が前記テーブルに格納されているか否かを判断するステップ
を備えた、
請求項５に記載の方法。
【請求項７】
さらに、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケット中のトランスポート・ヘッダに前記インスタンス番号を含めるステップ
を備えた、
請求項１に記載の方法。
【請求項８】
さらに、
前記論理接続が前記第１のエンド・ノードと前記第２のエンド・ノードとの間における最初の論理接続であるか否かを判断するステップと、
前記論理接続は最初の論理接続であるという判断に応答して、
あるインスタンス番号と前記論理接続とを関連付けるステップと、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インスタンス番号を含めるステップと、
前記インスタンス番号を現在のインスタンス番号として使用するステップと、
前記論理接続は最初の論理接続ではないという判断に応答して、
前記現在のインスタンス番号をインクリメントするステップと、
前記インクリメントした現在のインスタンス番号を現在のインスタンス番号として使用するステップと、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インクリメントした現在のインスタンス番号を含めるステップと
を備えた、
請求項１に記載の方法。
【請求項９】
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理するデータ処理システムであって、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間でデータを伝送する前に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立する手段と、
あるインスタンス番号と前記論理接続とを関連付ける手段と、
前記論理接続の確立状態を維持しながら、前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インスタンス番号を含める手段であって、前記インスタンス番号は前記論理接続の間、一定に保たれる、手段と
を備えた
データ処理システム。
【請求項１０】
コンピュータ・システムにロードしその上で実行したときに、請求項１〜８のうちの１項に記載の方法のすべてのステップを実行するコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータ・システムの分野に関し、特にネットワークにおけるデータ転送を管理するデータ処理システム、方法、および製品に関する。
【背景技術】
【０００２】
既存の多くのコンピュータ・システムでは、コンピュータ・システム内の様々なプロセッサやＩ／Ｏ装置の間で内部的にデータを伝送する手段として共用バス・アーキテクチャ（たとえばＰＣＩ（Peripheral Component Interconnect)）を使用している。これら既存の共用バス・アーキテクチャは通常のプロセッサの性能の増大に追随することができないでいる。その結果、コンピュータ・システム内のプロセッサやＩ／Ｏ装置の間で内部的にデータを伝送するために、通常「Infiniband」と呼ばれている新たなアーキテクチャが開発された。この新たなアーキテクチャによって、より広い帯域幅が実現するとともに拡張性が増大する。
【０００３】
新たなアーキテクチャによって、チャネルに基づいたスイッチ・ファブリック技術を含むシステム・エリア・ネットワークが実現する。このようなシステム・エリア・ネットワーク（ＳＡＮ）では、パケットから成るメッセージを介してデータを伝送する。プロセッサかＩ／Ｏ装置かを問わず、各装置はチャネル・アダプタを備えている。メッセージはある装置のチャネル・アダプタから別の装置のチャネル・アダプタへスイッチを介して伝送する。各チャネル・アダプタは「エンド・ノード」とも呼ばれる。
【０００４】
図１は従来技術による、各々が１つのキュー対を備えた２つのエンド・ノードを示す図である。エンド・ノードＡがエンド・ノードＢへデータを伝送する必要がある場合、エンド・ノードＡに含まれるキュー対とエンド・ノードＢに含まれるキュー対との間に論理接続を確立する。次いで、エンド・ノードＡ中のキュー対の送信キューからエンド・ノードＢ中のキュー対の受信キューへデータを送信する。エンド・ノードＢ中のキュー対の送信キューからエンド・ノードＡ中のキュー対の受信キューへ応答を送信する。エンド・ノードＡ１００はキュー対１０２を備えている。キュー対１０２は送信キュー１０４と受信キュー１０６を備えている。エンド・ノードＢ１０８はキュー対１１０を備えている。キュー対１１０は受信キュー１１２と送信キュー１１４を備えている。要求は送信キューから受信キューへ送付し、応答は受信キューから送信キューへ送付する。要求１１６には応答１１８が確認応答する。要求１２０には応答１２２が確認応答する。
【０００５】
メッセージ（したがってパケット）は次に示す５つの異なるトランスポート種別のうちの１つを用いて伝送する。すなわち、ＲＣ（Reliable Coneected: 高信頼接続）、ＲＤ（Reliable Datagram:  高信頼データグラム) 、ＵＣ（Unreliable Connected: 非信頼接続）、ＵＤ（Unreliable Datagram:  非信頼データグラム) 、およびＲａｗＤ（RawDatagram : 非加工データグラム）である。ＲＣトランスポート種別を用いる場合、各パケットにはシーケンス番号を含め、パケット転送を確認応答する。
【０００６】
２つのエンド・ノードの間に論理接続を確立したら、開始シーケンス番号を確立する。パケットを送信するごとに、シーケンス番号をインクリメントし当該パケットに含める。したがって、パケットのシーケンス番号を用いることにより、パケット列内における当該パケットの位置を特定することができる。
【０００７】
従来技術では、シーケンス番号を表わすために、特定のビットの組（すなわちフィールド）を各パケットに含めている。したがって、シーケンス番号とはこのビット組全体のことである。
【０００８】
要求１１６に含まれるパケット・シーケンス番号（ＰＳＮ）は応答１１８に含まれるＰＳＮと同じものである。要求１２０に含まれるＰＳＮは応答１２２に含まれるＰＳＮと同じものである。要求１１６および応答１１８に含まれるＰＳＮと要求１２０および応答１２２に含まれるＰＳＮとは、それらがすべて同じ組のキュー対を使用しているにもかかわらず、関係がない。
【０００９】
通常、要求者ノードは各要求パケットを送信するごとにＰＳＮを１だけインクリメントする。応答者ノードは受信した要求中のＰＳＮと応答者も要求パケットを受信するごとに１だけインクリメントしているそれ自身のＰＳＮ（予期ＰＳＮ）とを比較する。ＰＳＮが一致したら、応答者は確認応答すべき要求パケットに含まれていたのと同じＰＳＮを用いて要求に対する応答（確認応答）を送信する。次いで、要求者に戻り、応答中のＰＳＮと要求者の応答ＰＳＮとを比較してそれが要求者も１だけインクリメントしているそれ自身の応答ＰＳＮ（予期ＰＳＮ）と同じであるか否かを判断する。
【００１０】
要求者は応答パケットを受信しなくとも複数のパケットを送信することが許されている。応答パケットは後刻、要求者が受信するが、これら応答パケット中のＰＳＮを要求者の応答ＰＳＮカウント値と比較する。要求パケットのすべてのＰＳＮが応答者の内部ＰＳＮと一致し、応答パケットのすべてのＰＳＮが要求者の内部ＰＳＮと一致する場合、パケットはすべてあるエンド・ノードから別のエンド・ノードへ（送信キューから受信キューへ）成功裏に送付されている。
【００１１】
高信頼性動作を保証するために、応答者において検出して解決すべき異常状態が２つある。第１の状態は重複パケットであり、第２の状態は不正パケットである。
【００１２】
重複パケットは要求者が複数のパケットを送信したときに応答者において検出される。要求者が複数のパケットを送信するのはそれが当該パケットが失われたことを検出した場合である。図２は従来技術に従い重複パケットを伝送する様子を示すはしご図である。ＰＳＮ＝１を含む要求パケット２０４はエンド・ノード２００が送信し、応答者（エンド・ノード２０２）が受信する。応答（ＰＳＮ＝１を含む確認応答２０６）は失われるか遅延するかしている。この場合、要求者（エンド・ノード２００）はタイムアウト状態を検出し、同じＰＳＮ（ＰＳＮ＝１）を含む要求２０８と同じ要求を再送する。応答者（エンド・ノード２０２）はＰＳＮが重複している（すなわちそのＰＳＮはエンド・ノード２０２の内部カウント値より「若い（earlier)」）と判断する。そして、応答者は同じＰＳＮ（ＰＳＮ＝１）を有する応答を確認応答として再度送信する。
【００１３】
不正パケットは応答者がその内部カウント値よりも「ふけた（ahead)」ＰＳＮを有するパケットを受信したときに応答者において検出される。図３は従来技術に従い不正パケットを受信する様子を示すはしご図である。要求者（エンド・ノード３００）はＰＳＮ＝１を含む要求３０４、ＰＳＮ＝２を含む要求３０８、およびＰＳＮ＝３を含む要求３１０を送信する。要求３０４はＰＳＮ＝１を含む確認応答３０６によって適切に確認応答される。ＰＳＮ＝２を含む要求３０８はファブリック中で失われている。したがって、応答者（エンド・ノード３０２）はＰＳＮ＝１を有する要求３０４の次にＰＳＮ＝３を有する要求３１０を見る。それゆえ、要求３１０は不正パケットである。この場合、応答者（エンド・ノード３０２）はＰＳＮ＝１を有する要求パケットに対して確認応答３１２を再送する。そして、要求者はＰＳＮ＝２を有する要求３１４で始まるパケットをすべて再送する。
【００１４】
要求者において、応答パケットにも同様の規則が適用される。要求者が検出した重複パケットは破棄する。この場合が生じるのは要求パケットは失われず要求者がそれを再送するのに十分なほど長くファブリック中で遅延した場合のみである。重複したＰＳＮを有する第２の応答は破棄する。要求者において不正ＰＳＮが発生しうるのは複数のパケット応答中の少なくとも１つのパケットがファブリック中で失われたときである。この場合、要求者は当該要求を再送する。
【００１５】
ＰＳＮでは、各パケットに含まれるトランスポート・ヘッダにおいて固定かつ有限のビットを使用している。したがって、カウンタがＰＳＮをその最大値から０に巻き戻して生成するから、ＰＳＮは継続的に再使用されている。未処理のパケット数よりもはるかに大きなＰＳＮを使用することにより、要求者と応答者は重複範囲と不正範囲中にある範囲のパケット・シーケンス番号を確立する。
【００１６】
２つのエンド・ノード間の論理接続を終了（切断）したのちパケットが伝送中に再確立すると、問題が生じる。この場合、古く長期経過の接続に由来するパケットが応答者に到着する可能性がある。それが実際に古い接続に由来する長期経過のパケットである場合、応答者は当該パケットを有効なパケットであると解釈してしまう。
【００１７】
従来技術で述べられている解決策の１つは２つの特定のキュー対組の間に確立された論理接続の切断とこれら２つの同じキュー対組の間における論理接続の再確立との間に待ち受け状態を付加することである。したがって、エンド・ノードは古い接続に由来する潜在的に長期経過のパケットがすべて期限切れになるのに十分なほど長く待ち受けることになる。この解決策はたしかに問題を解決するが、特に接続の切断と再確立を頻繁に行なう場合、エンド・ノードの性能に顕著に影響する可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
したがって、ネットワークにおけるデータ転送を効率的に管理する方法、システム、および製品が求められている。
【課題を解決するための手段】
【００１９】
第１の側面において、本発明は次に示す方法を提供する。
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理する方法であって、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間でデータを伝送する前に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立するステップと、
あるインスタンス番号と前記論理接続とを関連付けるステップと、
前記論理接続の確立状態を維持しながら、前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インスタンス番号を含めるステップであって、前記インスタンス番号は前記論理接続の間、一定に保たれる、ステップと
を備えた
方法。
【００２０】
前記方法は、さらに、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立するステップと、
前記インスタンス番号をインクリメントするステップであって、前記インクリメントしたインスタンス番号は前記再確立した論理接続に関連付けられている、ステップと、
前記再確立した論理接続の間に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インクリメントしたインスタンス番号を含めるステップであって、前記インクリメントしたインスタンス番号は前記再確立した論理接続の間、一定に保たれる、ステップと
を備えているのが望ましい。
【００２１】
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立する前記ステップが、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付けるステップ
を備えているのが望ましい。
【００２２】
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付ける前記ステップが、さらに、
前記第１のエンド・ノード中にキュー対のテーブルを確立するステップと、
前記第１のエンド・ノード中の前記キュー対と前記第２のエンド・ノード中のキュー対との間の関連付けを前記テーブル内に格納するステップと
を備えているのが望ましい。
【００２３】
前記方法は、さらに、
特定の論理接続を用いて前記第２のエンド・ノードから前記第１のエンド・ノードへパケットを送信するステップと、
前記第１のエンド・ノードを用いて前記パケットを受信するステップと、
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断するステップと
を備えているのが望ましい。
【００２４】
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断する前記ステップが、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示が前記テーブルに格納されているか否かを判断するステップ
を備えているのが望ましい。
【００２５】
前記方法は、さらに、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケット中のトランスポート・ヘッダに前記インスタンス番号を含めるステップ
を備えているのが望ましい。
【００２６】
前記方法は、さらに、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケット中のトランスポート・ヘッダ中のシーケンス番号フィールドに前記インスタンス番号を含めるステップ
を備えているのが望ましい。
【００２７】
前記方法は、さらに、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに含まれる各シーケンス番号に前記インスタンス番号を含めるステップ
を備えているのが望ましい。
【００２８】
前記方法は、さらに、
前記論理接続が前記第１のエンド・ノードと前記第２のエンド・ノードとの間における最初の論理接続であるか否かを判断するステップと、
前記論理接続は最初の論理接続であるという判断に応答して、
あるインスタンス番号と前記論理接続とを関連付けるステップと、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インスタンス番号を含めるステップと、
前記インスタンス番号を現在のインスタンス番号として使用するステップと、
前記論理接続は最初の論理接続ではないという判断に応答して、
前記現在のインスタンス番号をインクリメントするステップと、
前記インクリメントした現在のインスタンス番号を現在のインスタンス番号として使用するステップと、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インクリメントした現在のインスタンス番号を含めるステップと
を備えているのが望ましい。
【００２９】
前記方法は、さらに、
前記論理接続を切断するステップと、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立するステップであって、前記論理接続の切断と前記論理接続の再確立との間に待ち受け状態を実行しない、ステップと
を備えているのが望ましい。
【００３０】
前記方法は、さらに、
前記第１のエンド・ノードから前記第２のエンド・ノードへパケットを伝送するステップと、
現在のインスタンス番号を前記パケットに含めるステップと
を備えているのか望ましい。
【００３１】
前記方法は、さらに、
前記第２のエンド・ノードがパケットを受信するステップと、
前記第２のエンド・ノードを用いて前記受信したパケットに含まれているインスタンス番号を特定するステップと、
現在のインスタンス番号を確認するステップと、
前記受信したパケットに含まれているインスタンス番号が前記現在のインスタンス番号であるか否かを判断するステップと、
前記受信したパケットに含まれているインスタンス番号は前記現在のインスタンス番号であるという判断に従って、前記第２のエンド・ノードが前記パケットを通常通りに処理するステップと、
前記受信したパケットに含まれているインスタンス番号は前記現在のインスタンス番号ではないという判断に従って、前記第２のエンド・ノードが前記パケットを破棄するステップと
を備えているのが望ましい。
【００３２】
前記方法は、さらに、
前記論理接続を確立したのち、前記第１のエンド・ノードがシーケンス番号を設定するステップと、
前記第１のエンド・ノードから前記第２のエンド・ノードへのパケットの各伝送ののちに、前記シーケンス番号をインクリメントするステップと、
前記第１のエンド・ノードから前記第２のエンド・ノードへのパケットの各伝送ののちに、前記インクリメントしたシーケンス番号と等しい現在のシーケンス番号を設定するステップと、
前記第１のエンド・ノードから前記第２のエンド・ノードへ伝送する各パケットに現在のシーケンス番号を含めるステップと
を備えているのが望ましい。
【００３３】
第２の側面において、本発明は次に示す方法を提供する。
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理する方法であって、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間でデータを伝送する前に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立するステップと、
前記第１のエンド・ノードから前記第２のエンド・ノードへ伝送する各パケットに現在のシーケンス番号を含めるステップであって、前記現在のシーケンス番号は前記第１のエンド・ノードから前記第２のエンド・ノードへパケットを伝送するごとにインクリメントする、ステップと、
あるインスタンス番号と前記論理接続とを関連付けるステップと、
各シーケンス番号に前記インスタンス番号を含めるステップと
を備えた
方法。
【００３４】
前記方法は、さらに、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立するステップと、
前記インスタンス番号をインクリメントするステップであって、前記インクリメントしたインスタンス番号は前記再確立した論理接続と関連付けられている、ステップと、
前記インクリメントしたインスタンス番号を各シーケンス番号に含めるステップであって、前記インクリメントしたインスタンス番号は前記再確立した論理接続の間、一定に保たれる、ステップと
を備えているのが望ましい。
【００３５】
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を確立する前記ステップが、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付けるステップ
を備えているのが望ましい。
【００３６】
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付ける前記ステップが、さらに、
前記第１のエンド・ノードにキュー対のテーブルを確立するステップと、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示を前記テーブル内に格納するステップと
を備えているのが望ましい。
【００３７】
前記方法は、さらに、
特定の論理接続を用いて前記第２のエンド・ノードから前記第１のエンド・ノードへパケットを伝送するステップと、
前記第１のエンド・ノードを用いて前記パケットを受信するステップと、
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断するステップと
を備えているのが望ましい。
【００３８】
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断する前記ステップが、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示が前記テーブルに格納されているか否かを判断するステップ
を備えているのが望ましい。
【００３９】
前記論理接続が前記第１のエンド・ノードと前記第２のエンド・ノードとの間における最初の論理接続であるか否かを判断するステップと、
前記論理接続は最初の論理接続であるという判断に応答して、
あるインスタンス番号と前記論理接続とを関連付けるステップと、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各シーケンス番号に前記インスタンス番号を含めるステップと、
前記インスタンス番号を現在のインスタンス番号として使用するステップと、
前記論理接続は最初の論理接続ではないという判断に応答して、
前記現在のインスタンス番号をインクリメントするステップと、
前記インクリメントした現在のインスタンス番号を現在のインスタンス番号として使用するステップと、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各シーケンス番号に前記インクリメントした現在のインスタンス番号を含めるステップと
を備えているのが望ましい。
【００４０】
前記方法は、さらに、
前記論理接続を切断するステップと、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立するステップであって、前記論理接続の切断と前記論理接続の再確立との間に待ち受け状態を実行しない、ステップと
を備えているのが望ましい。
【００４１】
前記方法は、さらに、
前記第２のエンド・ノードがパケットを受信するステップと、
前記第２のエンド・ノードを用いて前記受信したパケットに含まれているインスタンス番号を特定するステップと、
現在のインスタンス番号を確認するステップと、
前記受信したパケットに含まれているインスタンス番号が前記現在のインスタンス番号であるか否かを判断するステップと、
前記受信したパケットに含まれているインスタンス番号は前記現在のインスタンス番号であるという判断に従って、前記第２のエンド・ノードが前記パケットを通常通りに処理するステップと、
前記受信したパケットに含まれているインスタンス番号は前記現在のインスタンス番号ではないという判断に従って、前記第２のエンド・ノードが前記パケットを破棄するステップと
を備えているのが望ましい。
【００４２】
第３の側面において、本発明は次に示すデータ処理システムを提供する。
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理するデータ処理システムであって、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間でデータを伝送する前に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立する手段と、
あるインスタンス番号と前記論理接続とを関連付ける手段と、
前記論理接続の確立状態を維持しながら、前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インスタンス番号を含める手段であって、前記インスタンス番号は前記論理接続の間、一定に保たれる、手段と
を備えた
データ処理システム。
【００４３】
前記システムは、さらに、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立する手段と、
前記インスタンス番号をインクリメントする手段であって、前記インクリメントしたインスタンス番号は前記再確立した論理接続に関連付けられている、手段と、
前記再確立した論理接続の間に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インクリメントしたインスタンス番号を含める手段であって、前記インクリメントしたインスタンス番号は前記再確立した論理接続の間、一定に保たれる、手段と
を備えているのが望ましい。
【００４４】
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立する前記手段が、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付ける手段
を備えているのが望ましい。
【００４５】
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付ける前記手段が、さらに、
前記第１のエンド・ノード中にキュー対のテーブルを確立する手段と、
前記第１のエンド・ノード中の前記キュー対と前記第２のエンド・ノード中のキュー対との間の関連付けを前記テーブル内に格納する手段と
を備えているのが望ましい。
【００４６】
前記システムは、さらに、
特定の論理接続を用いて前記第２のエンド・ノードから前記第１のエンド・ノードへパケットを送信する手段と、
前記第１のエンド・ノードを用いて前記パケットを受信する手段と、
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断する手段と
を備えているのが望ましい。
【００４７】
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断する前記手段が、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示が前記テーブルに格納されているか否かを判断する手段
を備えているのが望ましい。
【００４８】
前記システムは、さらに、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケット中のトランスポート・ヘッダに前記インスタンス番号を含める手段
を備えているのが望ましい。
【００４９】
前記システムは、さらに、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケット中のトランスポート・ヘッダ中のシーケンス番号フィールドに前記インスタンス番号を含める手段
を備えているのが望ましい。
【００５０】
前記システムは、さらに、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに含まれる各シーケンス番号に前記インスタンス番号を含める手段
を備えているのが望ましい。
【００５１】
前記システムは、さらに、
前記論理接続が前記第１のエンド・ノードと前記第２のエンド・ノードとの間における最初の論理接続であるか否かを判断する手段と、
前記論理接続は最初の論理接続であるという判断に応答して、
あるインスタンス番号と前記論理接続とを関連付ける手段と、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インスタンス番号を含める手段と、
前記インスタンス番号を現在のインスタンス番号として使用する手段と、
前記論理接続は最初の論理接続ではないという判断に応答して、
前記現在のインスタンス番号をインクリメントする手段と、
前記インクリメントした現在のインスタンス番号を現在のインスタンス番号として使用する手段と、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インクリメントした現在のインスタンス番号を含める手段と
を備えているのが望ましい。
【００５２】
前記システムは、さらに、
前記論理接続を切断する手段と、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立する手段であって、前記論理接続の切断と前記論理接続の再確立との間に待ち受け状態を実行しない、手段と
を備えているのが望ましい。
【００５３】
前記システムは、さらに、
前記第１のエンド・ノードから前記第２のエンド・ノードへパケットを伝送する手段と、
現在のインスタンス番号を前記パケットに含める手段と
を備えているのか望ましい。
【００５４】
前記システムは、さらに、
前記第２のエンド・ノードがパケットを受信する手段と、
前記第２のエンド・ノードを用いて前記受信したパケットに含まれているインスタンス番号を特定する手段と、
現在のインスタンス番号を確認する手段と、
前記受信したパケットに含まれているインスタンス番号が前記現在のインスタンス番号であるか否かを判断する手段と、
前記受信したパケットに含まれているインスタンス番号は前記現在のインスタンス番号であるという判断に従って、前記第２のエンド・ノードが前記パケットを通常通りに処理する手段と、
前記受信したパケットに含まれているインスタンス番号は前記現在のインスタンス番号ではないという判断に従って、前記第２のエンド・ノードが前記パケットを破棄する手段と
を備えているのが望ましい。
【００５５】
前記システムは、さらに、
前記論理接続を確立したのち、前記第１のエンド・ノードがシーケンス番号を設定する手段と、
前記第１のエンド・ノードから前記第２のエンド・ノードへのパケットの各伝送ののちに、前記シーケンス番号をインクリメントする手段と、
前記第１のエンド・ノードから前記第２のエンド・ノードへのパケットの各伝送ののちに、前記インクリメントしたシーケンス番号と等しい現在のシーケンス番号を設定する手段と、
前記第１のエンド・ノードから前記第２のエンド・ノードへ伝送する各パケットに現在のシーケンス番号を含める手段と
を備えているのが望ましい。
【００５６】
第４の側面において、本発明は次に示すシステムを提供する。
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理するシステムであって、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間でデータを伝送する前に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立する手段と、
前記第１のエンド・ノードから前記第２のエンド・ノードへ伝送する各パケットに現在のシーケンス番号を含める手段であって、前記現在のシーケンス番号は前記第１のエンド・ノードから前記第２のエンド・ノードへパケットを伝送するごとにインクリメントする、手段と、
あるインスタンス番号と前記論理接続とを関連付ける手段と、
各シーケンス番号に前記インスタンス番号を含める手段と
を備えた
システム。
【００５７】
前記システムは、さらに、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立する手段と、
前記インスタンス番号をインクリメントする手段であって、前記インクリメントしたインスタンス番号は前記再確立した論理接続と関連付けられている、手段と、
前記インクリメントしたインスタンス番号を各シーケンス番号に含める手段であって、前記インクリメントしたインスタンス番号は前記再確立した論理接続の間、一定に保たれる、手段と
を備えているのが望ましい。
【００５８】
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を確立する前記手段が、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付ける手段
を備えているのが望ましい。
【００５９】
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付ける前記手段が、さらに、
前記第１のエンド・ノードにキュー対のテーブルを確立する手段と、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示を前記テーブル内に格納する手段と
を備えているのが望ましい。
【００６０】
前記システムは、さらに、
特定の論理接続を用いて前記第２のエンド・ノードから前記第１のエンド・ノードへパケットを伝送する手段と、
前記第１のエンド・ノードを用いて前記パケットを受信する手段と、
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断する手段と
を備えているのが望ましい。
【００６１】
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断する前記手段が、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示が前記テーブルに格納されているか否かを判断する手段
を備えているのが望ましい。
【００６２】
前記論理接続が前記第１のエンド・ノードと前記第２のエンド・ノードとの間における最初の論理接続であるか否かを判断する手段と、
前記論理接続は最初の論理接続であるという判断に応答して、
あるインスタンス番号と前記論理接続とを関連付ける手段と、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各シーケンス番号に前記インスタンス番号を含める手段と、
前記インスタンス番号を現在のインスタンス番号として使用する手段と、
前記論理接続は最初の論理接続ではないという判断に応答して、
前記現在のインスタンス番号をインクリメントする手段と、
前記インクリメントした現在のインスタンス番号を現在のインスタンス番号として使用する手段と、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各シーケンス番号に前記インクリメントした現在のインスタンス番号を含める手段と
を備えているのが望ましい。
【００６３】
前記システムは、さらに、
前記論理接続を切断する手段と、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に前記論理接続を再確立する手段であって、前記論理接続の切断と前記論理接続の再確立との間に待ち受け状態を実行しない、手段と
を備えているのが望ましい。
【００６４】
前記システムは、さらに、
前記第２のエンド・ノードがパケットを受信する手段と、
前記第２のエンド・ノードを用いて前記受信したパケットに含まれているインスタンス番号を特定する手段と、
現在のインスタンス番号を確認する手段と、
前記受信したパケットに含まれているインスタンス番号が前記現在のインスタンス番号であるか否かを判断する手段と、
前記受信したパケットに含まれているインスタンス番号は前記現在のインスタンス番号であるという判断に従って、前記第２のエンド・ノードが前記パケットを通常通りに処理する手段と、
前記受信したパケットに含まれているインスタンス番号は前記現在のインスタンス番号ではないという判断に従って、前記第２のエンド・ノードが前記パケットを破棄する手段と
を備えているのが望ましい。
【００６５】
第５の側面において、本発明は次に示すコンピュータ・プログラムを提供する。
コンピュータ・システムにロードしその上で実行したときに、第１の側面および第２の側面の方法のうちの任意のもののステップを実行するコンピュータ・プログラム。
前記コンピュータ・プログラムの好適な特徴は第１の側面および第２の側面の方法の好適なステップ群に対応している。
【００６６】
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理する、データ処理システムにおける方法、システム、および製品を開示する。第１のエンド・ノードと第２のエンド・ノードとの間でデータを伝送する前に、第１のエンド・ノードと第２のエンド・ノードとの間に論理接続を確立する。あるインスタンス番号をこの論理接続に関連付ける。このインスタンス番号はこの接続が維持されている間に前記エンド・ノード間で伝送する各パケットに含める。このインスタンス番号はこの接続の間は一定に保たれる。このインスタンス番号はこれらのエンド・ノード間に論理接続が再確立されるごとに、たとえばそれをインクリメントすることにより、変化させる。したがって、各パケットはこの論理接続という特定の事実に関連付けられている。パケットを受信すると、当該パケットに含まれているインスタンス番号を用いて、当該パケットが、これらのエンド・ノード間の以前の論理接続の間に伝送された長期経過のパケットであるか否かを判断する。
【００６７】
好適な実例においては、インスタンス番号はシーケンス番号の一部として含まれている。本発明によれば、各パケット内にシーケンス番号として指定されているビット群をシーケンス番号およびインスタンス番号に分割する。インスタンス番号は特定の論理接続の間にすべてのパケットについて一定に保たれるが、インスタンス番号ビットを用いて表わされる。シーケンス番号は各伝送パケットについてインクリメントされるが、シーケンス番号ビットを用いて表わされる。
【００６８】
上述した本発明の目的、特徴、および利点、ならびに本発明のさらなる目的、特徴、および利点は次に示す詳細な説明中で明らかになる。
【発明を実施するための最良の形態】
【００６９】
本発明の好適かつ典型的な実施形態は第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理する、データ処理システムにおける方法、システム、および製品を提供するものである。第１のエンド・ノードと第２のエンド・ノードとの間でデータを伝送する前に両エンド・ノード間に論理接続を確立する。この論理接続は第１のエンド・ノードに含まれる特定のキュー対と第２のエンド・ノードに含まれる特定のキュー対との間に確立する。
【００７０】
これら２つの特定のキュー対組の間に確立する論理接続にインスタンス番号を関連付ける。このインスタンス番号はこの論理接続が確立されている間にエンド・ノード間で伝送される各パケットに含める。これら２つのキュー対組の間で論理接続を再確立するごとに、このインスタンス番号をインクリメントする。パケットはパケットを伝送するごとにインクリメントするパケット・シーケンス番号も含んでいる。
【００７１】
本発明の好適かつ典型的な実施形態では、既存のシーケンス番号の一部としてインスタンス番号を実現している。従来技術のシーケンス番号用に予約されているビット組をシーケンス番号ビット組とインスタンス番号ビット組に分割する。本発明のインスタンス番号はインスタンス番号ビット組によって表わす。本発明のシーケンス番号はシーケンス番号ビット組によって表わす。したがって、本発明によると、既存の従来技術のシーケンス番号を用いてインスタンス番号およびシーケンス番号の双方を表わすことができる。インスタンス番号ビット組は同じ論理接続を通じて一定に保たれる。シーケンス番号ビット組は、従来技術について上述したように、パケットを送信するごとにインクリメントする。
【００７２】
シーケンス番号ビット組は最大シーケンス番号をインクリメントするとき、従来技術において知られた方法で０に巻き戻す。インスタンス番号はシーケンス番号をインクリメントすることまたは０に巻き戻すことによって影響されない。インスタンス番号は論理接続が再確立されないかぎり一定に保たれる。したがって、既存のシーケンス番号ビットの一部がインスタンス番号用に予約されているから、最大シーケンス番号はシーケンス番号ビットをすべて使って表わすことのできた従来の番号よりも小さくなる。
【００７３】
本発明の好適かつ典型的な実施形態はエンド・ノード、スイッチ、ルータ、およびこれらのコンポーネントを相互接続するリンクを備えた分散コンピューティング・システムを提供するものである。各エンド・ノードはメッセージを送受信するために送信キューと受信キューの対を使用している。エンド・ノードはメッセージをパケット群に分割し、それらのパケット群をリンク上に送信する。スイッチとルータはエンド・ノードを相互接続し、パケットを適切なエンド・ノードに送付する。送信先のエンド・ノードはパケット群をメッセージに再組立する。
【００７４】
本発明の好適な実施形態では、インスタンス番号と特定のキュー対組間の論理接続とをキュー対を用いて関連付ける。まず第１のエンド・ノードと第２のエンド・ノードとの間で論理接続を確立したら、通常、キュー対テーブルを用いて第１のエンド・ノード中のキュー対と第２のエンド・ノード中のキュー対とを関連付ける。したがって、２つのキュー対組間で論理接続を確立するごとに、これら２つのキュー対組がすでに関連付けられているか否かをキュー対テーブルを用いて判断する。これら２つのキュー対組がすでに関連付けられている場合、これら２つのキュー対組の間の論理接続は再確立中であるから、インスタンス番号をインクリメントする。
【００７５】
図４は本発明に従いデータを伝送する、チャネルに基づいたスイッチ・ファブリック・アーキテクチャを実現するデータ処理システムを示す図である。本発明を実現するコンピュータ・システムは１つのプロセッサと数個の入出力（Ｉ／Ｏ）アダプタを備えた小型サーバから数百または数千のプロセッサと数千のＩ／Ｏアダプタを備えた大型並列スーパコンピュータまで多岐にわたりうる。また、本発明はインターネットまたはイントラネットで接続された遠隔コンピュータ・システムのインフラストラクチャにおいて実現することができる。
【００７６】
データ処理システム４０２はストレージ・エリア・ネットワーク４２４を備えている。ストレージ・エリア・ネットワークは「サブネット」とも呼ばれる。サブネットは一群のエンド・ノードと単一のユニットとして管理されるカスケード接続されたスイッチとから成る。通常、サブネットは単一の地理的領域または機能領域を占める。たとえば、１つの室内に置かれた単一のコンピュータ・システムはサブネットであると定義することができる。
【００７７】
データ処理システム４０２は分散コンピュータ・システム内のノード群を相互接続する広帯域かつ低遅延のネットワークを備えている。ノードとはネットワークの少なくとも１つのリンクに取り付けられ、ネットワーク内においてメッセージの送信元および／または送信先を形成している任意のコンポーネントのことである。（「Ａおよび／またはＢ」は「ＡおよびＢ、Ａ、またはＢ」を表わす。）図示した例では、データ処理システム４０２はホスト・プロセッサ・ノード４０６、ホスト・プロセッサ・ノード４０８、ＲＡＩＤ（redundant array independent disk）サブシステム・ノード４６２、およびＩ／Ｏシャーシ・ノード４１２の形態をしたノードを備えている。図４に示すノードは例示のみを目的としたものにすぎない。というのは、ＳＡＮ４２４は独立したプロセッサ・ノード、Ｉ／Ｏアダプタ・ノード、およびＩ／Ｏ装置ノードのうちの任意の種類のものを任意個数接続することができるからである。すべてのノードはエンド・ノードとして機能することができる。エンド・ノードとはここではＳＡＮ４２４においてメッセージまたはパケットを創造または最終利用する装置として定義する。
【００７８】
ＳＡＮ４２４はＩ／Ｏおよびプロセッサ間通信（ＩＰＣ）の双方をサポートする通信・管理インフラストラクチャを備えている。ＳＡＮ４２４は安全で遠隔管理された環境において多くの装置が広帯域かつ低遅延でデータを同時並行的に転送するのを可能にするスイッチ通信ファブリックを備えている。エンド・ノードはＳＡＮ４２４を通じて複数のポートと通信しうるとともに複数の経路を利用しうる。
【００７９】
ＳＡＮ４２４はホスト・チャネル・アダプタ（ＨＣＡ）４２６、４２８、４３０、４３２、目標チャネル・アダプタ（ＴＣＡ）４５８、４６０、４６８、スイッチ４１４、４１６、４５２、およびルータ４２０を備えている。スイッチとは複数のリンクを相互に接続するとともに小さなヘッダであるＤＬＩＤ（Destination Local Identifier) フィールドを用いてサブネット内においてあるリンクから別のリンクへのパケットの送付を可能にする装置のことである。一般に、スイッチはあるポートから同じスイッチ上の他の任意のポートへパケットを送付することができる。
【００８０】
ルータとは複数のサブネットを相互に接続するとともに大きなヘッダであるＤＧＵＩＤ（Destination Globally Unique Identifier）を用いて第１のサブネット中のあるリンクから第２のサブネット中の別のリンクへパケットを送付することのできる装置のことである。
【００８１】
リンクとは任意の２つのネットワーク・ファブリック構成要素（たとえばエンド・ノード、スイッチ、ルータなど）の間の全二重チャネルのことである。リンクの好適な例としては銅ケーブル、光ケーブル、およびバックプレーンや印刷回路板上の印刷回路用銅図形を挙げることができるが、これらに限定されない。
【００８２】
データ処理システム４０２中の各ノードは少なくとも１つのチャネル・アダプタ（ＣＡ）を備えている。各チャネル・アダプタはストレージ・エリア・ネットワーク（ＳＡＮ）４２４を用いて伝送される送信元パケットまたは送信先パケットに対するチャネル・アダプタ・インタフェースを十分詳細に実現するエンド・ポイントである。ＳＡＮ４２４はファブリックとも呼ばれる。プロセッサ・ノードに含まれるチャネル・アダプタはホスト・チャネル・アダプタ（ＨＣＡ）である。プロセッサ・ノード以外のノードに含まれるチャネル・アダプタは目標チャネル・アダプタ（ＴＣＡ）である。
【００８３】
ホスト・プロセッサ・ノード４０６はホスト・チャネル・アダプタ４２６およびホスト・チャネル・アダプタ４２８の形態をしたチャネル・アダプタを備えている。ホスト・プロセッサ・ノード４０８はホスト・チャネル・アダプタ４３０およびホスト・チャネル・アダプタ４３２の形態をしたチャネル・アダプタを備えている。ホスト・プロセッサ・ノード４０６は中央処理装置４３４、４３６、およびバス・システム４４２によって相互接続されたメモリ４４０も備えている。同様に、ホスト・プロセッサ・ノード４０８は中央処理装置４４４、４４６、およびバス・システム４５０によって相互接続されたメモリ４４８を備えている。
【００８４】
ホスト・チャネル・アダプタ４２６はスイッチ４１４への接続を提供している。ホスト・チャネル・アダプタ４２８はスイッチ４１４、４１６への接続を提供している。ホスト・チャネル・アダプタ４３０はスイッチ４１４、４１６への接続を提供している。そして、ホスト・チャネル・アダプタ４３２はスイッチ４１６への接続を提供している。
【００８５】
ホスト・チャネル・アダプタはハードウェアで実現するのが望ましい。この実現方法では、ホスト・チャネル・アダプタを構成するハードウェアによって、中央処理装置とＩ／Ｏアダプタの通信オーバヘッドの大部分をなくすことができる。このようにホスト・チャネル・アダプタをハードウェアで実現することにより、通信プロトコルに付随する既存のオーバヘッドに煩わされることなくスイッチト・ネットワークを通じて複数の同時平行通信を行なうことが可能になる。
【００８６】
Ｉ／Ｏシャーシ４１２はアダプタ・カードをＳＡＮ４２４に接続するＩ／Ｏスイッチ４５２をＩ／Ｏアダプタ・バックプレーン中に備えるとともに、複数のＩ／Ｏモジュール４５４、４５６を備えている。この例では、Ｉ／Ｏモジュールはアダプタ・カードの形態をしている。
【００８７】
アダプタ・カードにはＳＣＳＩアダプタ・カード、ファイバ・チャネル・ハブ装置およびＦＣ−ＡＬ（fiber channel-arbitrated loop)装置へのアダプタ・カード、イーサネット・アダプタ・カード、グラフィックス・アダプタ・カード、ビデオ・アダプタ・カードなどがある。既存の任意の種類のアダプタ・カードを実現することができる。
【００８８】
各Ｉ／Ｏモジュールは目標チャネル・アダプタを備えている。Ｉ／Ｏモジュール４５４は目標チャネル・アダプタ（ＴＣＡ）４５８を備えており、Ｉ／Ｏモジュール４５６は目標チャネル・アダプタ（ＴＣＡ）４６０を備えている。
【００８９】
データ処理システム４０２にはＲＡＩＤサブシステム・ノード４６２も含まれている。ノード４６２はプロセッサ４６４、メモリ４６６、目標チャネル・アダプタ（ＴＣＡ）４６８、および複数の冗長および／またはストライプ（stripe）されたストレージ・ディスク装置４７０を備えている。目標チャネル・アダプタ４６８には完全に動作可能なホスト・チャネル・アダプタを用いることができる。
【００９０】
ＳＡＮ４２４は分散コンピュータ・システムにおけるＩ／Ｏおよびプロセッサ間通信（ＩＰＣ）の利用者にオペレーティング・システムのカーネル・プロセスを含めることなくプロセッサで複製しない（zero processor-copy)データ転送を提供するとともに、高信頼性かつ耐障害性通信を実現するハードウェアを採用している。
【００９１】
図５は本発明によるホスト・プロセッサ・ノードの機能ブロック図である。ホスト・プロセッサ・ノード５００はホスト・プロセッサ・ノード（たとえば図４に示したホスト・プロセッサ・ノード４０６、４０８）の一例である。
【００９２】
ホスト・プロセッサ・ノード５００はホスト・プロセッサ・ノード５００上で実行されているプロセスである１組の利用者５０２、５０４、５０６、５０８を備えている。ホスト・プロセッサ・ノード５００はチャネル・アダプタ５１０、５１２も備えている。チャネル・アダプタ５１０はポート５１４、５１６を備え、チャネル・アダプタ５１２はポート５１８、５２０を備えている。各ポートはリンクに接続している。
【００９３】
利用者５０２〜５０８はバーブズ（verb: 動詞）インタフェース５２２とメッセージ・データ・サービス５２４を介してＳＡＮ（たとえばＳＡＮ４２４）にメッセージを転送する。バーブズ・インタフェースはホスト・チャネル・アダプタの機能を実質的に抽象的に記述したものである。オペレーティング・システムはバーブ機能の一部または全部をそのプログラミング・インタフェースによって公開している。このインタフェースはホストの振舞いを規定するものである。メッセージ・データ・サービス５２４はバーブ層よりも高次のインタフェースであり、チャネル・アダプタ５１０、５１２を通じて受信したメッセージとデータを処理するために使用する。メッセージ・データ・サービス５２４はメッセージおよび他のデータを処理するインタフェースを利用者５０２〜５０８に提供するものである。
【００９４】
図６は本発明による要求トランザクションと確認応答トランザクションの一例を示す分散コンピュータ・システムの一部分を示す図である。図６の分散コンピュータ・システム６００はホスト・プロセッサ・ノード６０２とホスト・プロセッサ・ノード６０４を備えている。ホスト・プロセッサ・ノード６０２はホスト・チャネル・アダプタ６０６を備えている。ホスト・プロセッサ・ノード６０４はホスト・チャネル・アダプタ６０８を備えている。図６の分散コンピュータ・システムはＳＡＮファブリック６１０を備えている。ＳＡＮファブリック６１０はスイッチ６１２とスイッチ６１４を備えている。ＳＡＮファブリックはホスト・チャネル・アダプタ６０５をスケジューラ６１２へ接続するリンク、スイッチ６１２をスイッチ６１４へ接続するリンク、およびホスト・チャネル・アダプタ６０８をスイッチ６１４へ接続するリンクを備えている。
【００９５】
このトランザクションの例では、ホスト・プロセッサ・ノード６０２はクライアント・プロセスＡを備えている。ホスト・プロセッサ・ノード６０４はクライアント・プロセスＢを備えている。クライアント・プロセスＡはキュー対６２０を通じてホスト・チャネル・アダプタ６０６と相互作用する。クライアント・プロセスＢはキュー対６２２を通じてハードウェア・チャネル・アダプタ６０８と相互作用する。
【００９６】
キュー対６２０、６２２は各々が送信キューと受信キューを備えた構造体である。キュー対は通常、チャネル・アダプタ内に制御レジスタを備えている。キュー対６２０は送信キュー６２４と受信キュー６２６を備えている。キュー対６２２は送信キュー６２８と受信キュー６３０を備えている。
【００９７】
まず、プロセスＡがキュー対６２０の送信キュー６２４にキュー要素を入れることにより、メッセージ要求を開始する。ホスト・チャネル・アダプタ６０６中のハードウェアがこのキュー要素を受信キュー６３０において受信する。次いで、プロセスＢがこのキュー要素を読み取り、そのメッセージをパケット（たとえば図８に示すパケット）に分割する。プロセスＢはキュー要素を送信キュー６２８に入れることにより、メッセージを開始する。次いで、プロセスＡがこのキュー要素を受信キュー６２６によって受信する。
【００９８】
パケットはＳＡＮファブリックを通じて送付し、高信頼の転送サービスのために、最終送信先のエンド・ノードが確認応答する。連続的に（successively）確認応答されない場合、送信元ノードが当該パケットを再送信する。パケットは送信元エンド・ノードが生成し、送信先エンド・ノードが利用する。
【００９９】
図７は本発明に従い分散プロセス間の通信を行なうために高信頼接続サービスを採用した分散コンピュータ・システム１００の一部分を示す図である。
【０１００】
あるキュー対を生成すると、当該キュー対は特定のトランスポート・サービスを提供するように設定される。本発明の好適な実施形態を実現した分散コンピュータ・システムは次に示す４種類のトランスポート・サービスをサポートしている。すなわち、ＲＣ（reliable connected: 高信頼接続）、ＵＣ（unreliable connected: 非信頼接続）、ＵＤ（unreliable datagram:非信頼データグラム）、およびＲＤ（reliable datagram:高信頼データグラム）である。
【０１０１】
高信頼接続サービスおよび非信頼接続サービスはローカル・キュー対をたった１つのリモート・キュー対に関連付ける。接続サービスはキュー対を生成するプロセスを必要とする。それは当該プロセスを用いＳＡＮファブリックを通じて別のプロセスと通信しうるようにするためである。したがって、Ｎ個のホスト・プロセッサ・ノードの各々がＰ個のプロセスを備え、各ノード上のＰ個のプロセスがすべて他のすべてのノード上のすべてのプロセスと通信する必要がある場合、各ホスト・プロセッサ・ノードはＰ2 ×（Ｎ−１）個のキュー対を必要とする。また、プロセスはあるキュー対を同じホスト・チャネル・アダプタ上の別のキュー対に接続することができる。
【０１０２】
図７の分散コンピュータ・システム７００はホスト・プロセッサ・ノード１、ホスト・プロセッサ・ノード２、およびホスト・プロセッサ・ノード３を備えている。ホスト・プロセッサ・ノード１はプロセスＡ７１０を備えている。ホスト・プロセッサ・ノード２はプロセスＣ７２０とプロセスＤ７３０を備えている。ホスト・プロセッサ・ノード３はプロセスＥ７４０を備えている。
【０１０３】
ホスト・プロセッサ・ノード１はキュー対４、６、７を備えている。各キュー対は送信キューと受信キューを備えている。ホスト・プロセッサ・ノード２はキュー対２、５を備えており、ホスト・プロセッサ・ノード３はキュー対９を備えている。分散コンピュータ・システム７００の高信頼接続（ＲＣ）サービスはローカル・キュー対をたった１つのリモート・キュー対に関連付ける。したがって、キュー対４を用いてキュー対２と通信することができ、キュー対７を用いてキュー対５と通信することができ、そしてキュー対６を用いてキュー対９と通信することができる。
【０１０４】
高信頼接続（ＲＣ）サービスが高信頼に作られているのは、ハードウェアがシーケンス番号を保守するとともにすべてのパケット転送に対して確認応答するからである。ハードウェアとＳＡＮドライバ・ソフトウェアの組み合わせによって、失敗した通信をすべて再試行する。キュー対のプロセス・クライアントはビット・エラー、受信アンダーラン、およびネットワーク輻輳（ふくそう）がある場合であっても高信頼通信を実現している。ＳＡＮファブリック中に別の経路が存在すれば、ファブリックのスイッチ、リンク、またはチャネル・アダプタ・ポートが故障した場合であっても高信頼通信を維持することができる。
【０１０５】
また、ＳＡＮファブリックをまたいで高信頼にデータを配送するために確認応答を採用している。この確認応答はプロセス・レベルの確認応答（すなわち受信したプロセスがデータを利用したことを確認する確認応答）であってもよいしそうでなくともよい。
【０１０６】
あるいは、この確認応答はデータがその送信先に到達したことを表わすだけのものであってもよい。
【０１０７】
図８は本発明によるパケットを示す図である。ここで使用するメッセージとはデータ交換のアプリケーション定義単位のことであり、協働するプロセス間における通信の基本単位である。メッセージはパケット群に分割される。パケットとはネットワーキング・プロトコルのヘッダおよび／またはトレーラによって封緘されたデータの１単位のことである。ヘッダは一般にパケットをＳＡＮ中において方向付けるための制御情報とルーティング情報を備えている。トレーラは一般にパケットが破損したコンテンツを配送していないことを保証する制御データとＣＲＣ（cyclic redundancy check)データを備えている。
【０１０８】
パケットとはＳＡＮファブリック中を転送される情報の単位のことである。パケットはエンド・ノード・ツー・エンド・ノードの構成体であるから、エンド・ノードが生成しエンド・ノードが利用する。（ホストまたは目標）チャネル・アダプタに宛てたパケットの場合、ＳＡＮファブリック中のスイッチとルータは当該パケットを生成することもないし利用することもない。そうではなく、チャネル・アダプタに宛てたパケットの場合、スイッチとルータはプロセスにおいてバリアント・リンク・ヘッダ・フィールドを変更することにより、要求パケットまたは確認応答パケットを最終送信先のより近くに移動させるだけである。パケットがサブネット境界を横切るとき、ルータはパケットのネットワーク・ヘッダの変更も行なう。サブネットを横切るとき、単一のパケットは単一のサービス・レベルに留まる。
【０１０９】
高信頼サービス種別（たとえば高信頼接続（ＲＣ）トランスポート・サービスなど）の場合、エンド・ノード（たとえばホスト・プロセッサ・エンド・ノードやＩ／Ｏアダプタ・エンド・ノードなど）は要求パケットを生成し確認応答パケットを返す。スイッチとルータはパケットを送信元から送信先へ受け渡す。ネットワーク中の各ステージで更新されるバリアントＣＲＣトレーラ・フィールドを除き、スイッチはパケットを無変更で受け渡す。ルータはパケットを転送するとき、ヘッダ中のバリアントＣＲＣトレーラ・フィールドを更新する。
【０１１０】
外出メッセージは少なくとも１つのパケットに分割する。チャネル・アダプタ・ハードウェアは各パケットにトランスポート・ヘッダとネットワーク・ヘッダを付加する。本発明によれば、トランスポート・ヘッダはシーケンス番号、インスタンス番号、および他のトランスポート情報を含む。ネットワーク・ヘッダはルーティング情報（たとえば送信先ＩＰアドレス、および他のネットワーク・ルーティング情報）を含む。リンク・ヘッダはＤＬＩＤ（Destination Local Identifier）または他のローカル・ルーティング情報を含む。パケットには適切なリンク・ヘッダを常に付加する。送信先エンド・ノードが遠隔のサブネットに存在する場合、所定のパケットに適切なグローバル・ネットワーク・ヘッダを付加する。
【０１１１】
高信頼トランスポート・サービスを採用している場合、要求パケットがその送信先エンド・ノードに到達すると、送信先エンド・ノードが確認応答パケットを用いて要求データ・パケットの送信者に当該要求データ・パケットは送信先において確認され受領されたことを知らせる。確認応答データ・パケットは少なくとも１つの確認され受領されたデータ・パケットを確認応答するものである。要求者は確認応答を受信する前に未処理の要求データ・パケットを複数個所有することができる。一実施形態では、複数の未処理のメッセージ（すなわち要求データ・パケット）の個数はキュー対を生成するときに決める。
【０１１２】
パケット８００はルーティング・ヘッダ８０２、トランスポート・ヘッダ８０４、パケット・ペイロード８０６、およびＣＲＣ８０８を備えている。ルーティング・ヘッダ８０２はパケット・ペイロード８０６用に送信元エンド・ノードおよび送信先エンド・ノード内のポートを特定するために使用する。
【０１１３】
トランスポート・ヘッダ８０４はパケット・ペイロード８０６用に送信先キュー対を特定する。シーケンス番号フィールド８１０はトランスポート・ヘッダ８０４に配置されている。従来技術では、シーケンス番号フィールド８１０に含まれるすべてのビットによってシーケンス番号を表していた。しかし、本発明によれば、シーケンス番号フィールド８１０のすべてのビットによってシーケンス番号およびインスタンス番号の双方を表わす。本発明によれば、シーケンス番号はインスタンス部８１２およびシーケンス部８１４の双方を含んでいる。したがって、本発明のシーケンス番号は各パケットごとにインクリメントするシーケンス部、および各論理接続の間、一定に保たれるインスタンス部の双方を含んでいる。トランスポート・ヘッダ８０４は操作コードなどの情報およびパケット・ペイロード８０６用の区画も提供している。ＣＲＣ８０８はエラー検査用に使用する。
【０１１４】
操作コードはパケットが最初のものであるか、最後のものであるか、中間のものであるか、あるいは１つのメッセージから成る唯一のパケットであるかを特定するものである。操作コードは当該操作が送信ＲＤＭＡライト（send RDMA write)であるか、リードであるか、あるいはアトミックであるかの特定も行なう。
【０１１５】
本発明によれば、インスタンス番号は各パケットごとにフィールド８１２に格納する。インスタンス番号は１つの論理接続という事実（instance）が継続する間、一定に保たれる。論理接続が切断され後刻再確立された場合、インスタンス番号をインクリメントする。次いで、このインクリメントしたインスタンス番号をフィールド８１２に格納する。これにより、この再確立した論理接続を用いて各パケットを伝送することが可能になる。
【０１１６】
パケットを送信するごとに、シーケンス部８１４をインクリメントする。
【０１１７】
図９は本発明に従いインスタンス番号を各パケットに含める様子を示す高次のフローチャートを示す図である。プロセスはブロック９００で示すように開始したのち、プロセッサ・ノードにおける利用者の実行の開始を示すブロック９０２へ進む。次いで、ブロック９０４が示すように、プロセッサ・エンド・ノードと第２のエンド・ノードとの間に論理接続を確立する。これらのエンド・ノード間の論理接続が確立したら、第１のエンド・ノード中の送信・受信キュー対と第２のエンド・ノード中の送信・受信キュー対とを関連付ける。この関連付けは各エンド・ノードにおいてエンド・ノードの通信マネージャが保守しているキュー対のテーブルを用いて行なう。
【０１１８】
その後、ブロック９０６が示すように、プロセッサ・エンド・ノード中の特定のキュー対と第２のエンド・ノード中の特定のキュー対との間で論理接続が確立したのはこれが初めてであるか否かをプロセッサ・エンド・ノードが判断する。エンド・ノードはキュー対のテーブルを用いて論理接続が確立したのはこれが初めてであるか否かを判断する。キュー対のテーブルはある論理接続がすでに確立しているか否かを示すことができる。論理接続が切断されると、両エンド・ノードにおけるキュー対はアイドル状態になり、もはや相互に関連付けられていない。各エンド・ノード中のキュー対テーブルはアイドル状態にあるキュー対を反映することになる。
【０１１９】
論理接続がすでに確立しており切断されたことがない場合、各エンド・ノード中のキュー対は相互に関連付けられたままである。各エンド・ノード中のキュー対テーブルは当該キュー対は相互に関連付けられたままであることを示すことになる。
【０１２０】
エンド・ノードがそのキュー対テーブルを用いて行なう、論理接続がすでに確立済みであるか否かの判断は、キュー対が第２のエンド・ノード中のキュー対と関連付けられているか否かを判断することにより行なう。このノード中のキュー対が第２のノード中のキュー対と関連付けられている場合、これらのエンド・ノード間の論理接続はすでに確立されている。このノード中のキュー対が第２のノード中のキュー対と関連付けられていない場合、これらのエンド・ノード間の論理接続はまだ確立されていない。
【０１２１】
再度、ブロック９０６を参照する。これら２つの特定のキュー対組の間で論理接続が確立されたのはこれが初めてであると判断された場合、プロセスはブロック９０８へ進む。ブロック９０８に示すように、各エンド・ノード用の論理接続マネージャは開始インスタンス番号を交換する。この開始インスタンス番号は現在のインスタンス番号になり、この論理接続の確立が維持されている間、一定に保たれる。
【０１２２】
次いで、プロセスはブロック９１０へ進む。そして、ブロック９１０に示すように、論理接続マネージャ達はそれらの開始シーケンス番号を交換する。シーケンス番号はシーケンス番号フィールドのシーケンス番号部に格納されており、一定値を維持しない。それはパケットを送信するごとにインクリメントする。また、各エンド・ノードはそれ自身のシーケンス番号を選定するが、それは他のエンド・ノードが選定するシーケンス番号とは関係がない。インスタンス番号はシーケンス番号フィールドのインスタンス番号部に格納されており、この論理接続が確立状態を維持する限り一定に保たれる。
【０１２３】
その後、ブロック９１２に示すように、エンド・ノード間でパケットを伝送するが、各パケットのシーケンス番号部に格納されているパケット・シーケンス番号をインクリメントする。次いで、ブロック９１４に示すように、現在のインスタンス番号を各パケットに含める。インスタンス番号はこの論理接続の間に伝送される各パケットごとに一定に保たれる。
【０１２４】
次いで、ブロック９１６に示すように、現在の論理接続が失われているか否かを判断する。現在の論理接続が失われていないと判断された場合、プロセスはブロック９１２へ戻る。再度ブロック９１６を参照して、現在の論理接続が失われていると判断された場合、プロセスはブロック９１８へ進む。ブロック９１８に示すように、これら２つのキュー対の間に論理接続を再確立すべきか否かを判断する。これら２つのキュー対の間に論理接続を再確立すべきでないと判断された場合、プロセスはブロック９２０へ進む。再度ブロック９１８を参照して、これら２つのキュー対の間に論理接続を再確立すべきであると判断された場合、プロセスはブロック９２２へ進む。ブロック９２２に示すように、これら２つのキュー対の間に論理接続を再確立するが、その際、待ち受け状態を実行する必要はない。プロセスはブロック９０６へ戻る。
【０１２５】
再度ブロック９０６を参照して、これら２つの特定のキュー対の間でこのサービスについて論理接続が確立されたのは初めてではなかったと判断された場合、プロセスはブロック９３４へ進む。ブロック９３４に示すように、これら２つの特定のキュー対用に最後の論理接続が確立していた間の伝送用に使用したインスタンス番号を確認する。次いで、ブロック９３６に示すように、最後のインスタンス番号を新たなインスタンス番号に変更する。以後、この新たなインスタンス番号を現在のインスタンス番号として使用する。インスタンス番号は通常、インスタンス番号をインクリメントすることにより変更するが、インスタンス番号は任意の手段によって、たとえばインスタンス番号をデクリメントすることによって変更してもよい。次いで、プロセスはブロック９１０へ進む。
【０１２６】
図１０は本発明に従い、受信したパケットが現在の論理接続の間に送信されたものであるか否かをエンド・ノードが判断する様子を示す高レベルのフローチャートを示す図である。図示するように、プロセスはブロック１０００で開始したのち、ブロック１００２へ進む。ブロック１００２に示すように、エンド・ノードが、インスタンス番号を含むパケットを受信する。次いで、ブロック１００４に示すように、エンド・ノードは現在のインスタンス番号を確認する。その後、ブロック１００６に示すように、エンド・ノードは現在のインスタンス番号と受信したパケットに含まれるインスタンス番号とを比較する。次いで、プロセスはブロック１００８へ進む。ブロック１００８に示すように、当該パケットが現在のインスタンス番号を含んでいるか否かを判断する。当該パケットが現在のインスタンス番号を含んでいると判断された場合、プロセスはブロック１０１０へ進む。ブロック１０１０に示すように、エンド・ノードは当該パケットを通常通りに処理する。次いで、プロセスはブロック１００２へ戻る。再度ブロック１００８を参照して、当該パケットが現在のインスタンス番号を含んでいないと判断された場合、プロセスはブロック１０１２へ進む。ブロック１０１２に示すように、エンド・ノードは当該パケットを破棄する。次いで、プロセスはブロック１００２へ戻る。
【０１２７】
本発明は論理接続が切断されたのちに再確立されたときは常に使用することができる。論理接続は様々な理由で切断され再確立される。多くの理由はエンド・ノードにおいて検出されるエラー状態であるが、パケットを再送するだけでは回復することができない。たとえば、誤った形式のパケットや順序付けエラーによって、キュー対がこのエラー状態になる可能性がある。
【０１２８】
接続を切断したのち再確立する別の理由としてファブリックにおける経路ＭＴＵの変更がある。あるリンク上を伝送しうる最大パケット・ペイロードのサイズは最大伝送単位（ＭＴＵ）と呼ばれている。たとえば、ファブリック内の単一のリンクを考える。リンクの一方の側のパケット・バッファが最大５１２バイトのパケット・ペイロードを処理し、リンクの他方の側のパケット・バッファが最大１０２５バイトのパケット・ペイロードを処理する場合、このリンクを通じて伝送しうる最大パケット・ペイロードはリンクの２つの側のより小さい方である５１２バイトにしかならない。説明を簡明にするために、パケット・ペイロード・サイズはパケットのサイズを記述するときにも使用する。
【０１２９】
あるノードから別のノードに至る経路にスイッチおよび／またはルータがある場合、その経路には複数のリンクが存在する。この場合、このＭＴＵは経路ＭＴＵと呼ばれ、経路中のすべてのリンクのうちで最小のＭＴＵになる。たとえば、経路中の１つリンクのＭＴＵが５１２バイトであり、他のすべてのリンクのＭＴＵが４０９６バイトである場合、当該経路を伝送しうる最大パケットはたったの５１２バイトにすぎない。
【０１３０】
フェイルオーバの結果として経路ＭＴＵが増大する場合、接続は枯渇状態にある（drained)（新たな要求パケットは生成されず、未処理のパケットはすべて確認応答済みである）か、新たなより大きな経路ＭＴＵを利用するために切断・再確立しているに違いない。この状況は長期経過のパケット待ち受け期間がもはや不必要であるから、本発明を効率的に利用することができる。論理接続は待ち受け状態を必要とすることなく、切断後直ちに再確立することができる。
【０１３１】
重要な留意点を挙げると、完全に機能するデータ処理システムの文脈で本発明を説明したが、当業者が認識しうるように、本発明のプロセスは命令群から成るコンピュータ読み取り可能な媒体の形態および様々な形態で配付することができ、また、本発明は配付を実行するのに実際に使用する信号担持媒体の特定の種別とは無関係に等しく適用することができる。コンピュータ読み取り可能な媒体の例としては記録型媒体（たとえばフロッピー・ディスク、ハード・ディスク駆動装置、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ）および伝送型媒体（ディジタル通信リンクおよびアナログ通信リンク、伝送形態〔たとえば無線周波数伝送や光波伝送〕を使用する有線通信リンクまたは無線通信リンク）を挙げることができる。コンピュータ読み取り可能な媒体は特定のデータ処理システムで実際に使用するためにデコードされるコード済みフォーマットの形態をとることができる。
【０１３２】
以上、説明と記述を目的に本発明の記述を呈示したが、ここに開示した形態の発明で尽きているということはないしそれに限定されることもない。当業者にとって、多くの変更例と変形例が明らかになる。実施形態は本発明の原理、実際的な応用を最もよく説明しうるように、そして特定の用途に好適であると考えうる様々な変更を伴った様々な実施形態について当業者が本発明を理解しうるように選定して説明した。
【図面の簡単な説明】
【０１３３】
【図１】従来技術による、各々が１つのキュー対を備えた２つのエンド・ノードを示す図である。
【図２】従来技術に従い重複パケットを伝送する様子を示すはしご図である。
【図３】従来技術に従い不正パケットを受信する様子を示すはしご図である。
【図４】本発明に従いデータを伝送する、チャネルに基づいたスイッチ・ファブリック・アーキテクチャを実現するデータ処理システムを示す図である。
【図５】本発明によるホスト・プロセッサ・ノードの機能ブロック図である。
【図６】本発明による要求トランザクションと確認応答トランザクションの一例を示す分散コンピュータ・システムの一部分を示す図である。
【図７】本発明に従い分散プロセス間の通信を行なうために高信頼接続（ＲＣ）サービスを採用した分散コンピュータ・システムの一部分を示す図である。
【図８】本発明によるパケットを示す図である。
【図９】本発明に従いインスタンス番号を各パケットに含める様子を示す高次のフローチャートを示す図である。
【図１０】本発明に従い、受信したパケットが現在の論理接続の間に送信されたものであるか否かをエンド・ノードが判断する様子を示す高レベルのフローチャートを示す図である。
【符号の説明】
【０１３４】
１００  エンド・ノードＡ
１０４  送信キュー
１０６  受信キュー
１０８  エンド・ノードＢ
１１２  受信キュー
１１４  送信キュー
１１６  要求
１１８  応答
１２０  要求
１２２  応答
２００  エンド・ノードＡ
２０２  エンド・ノードＢ
２０４  要求
２０６  確認応答
２０８  要求
２１０  確認応答
３００  エンド・ノードＡ
３０２  エンド・ノードＢ
３０４  要求
３０６  確認応答
３０８  要求
３１０  要求
４０２  データ処理システム
４０６  プロセッサ・ノード
４０８  プロセッサ・ノード
４１２  Ｉ／Ｏシャーシ
４１４  スイッチ
４１６  スイッチ
４２０  ルータ
４２６  ＨＣＡ
４２８  ＨＣＡ
４３０  ＨＣＡ
４３２  ＨＣＡ
４３４  プロセッサ
４３６  プロセッサ
４４０  メモリ
４４４  プロセッサ
４４６  プロセッサ
４４８  メモリ
４５２  スイッチ
４５４  Ｉ／Ｏモジュール
４５６  Ｉ／Ｏモジュール
４５８  ＴＣＡ
４６０  ＴＣＡ
４６２  ＲＡＩＤサブシステム
４６４  プロセッサ
４６６  メモリ
４６８  ＴＣＡ
４７０  トライブ
５００  ホスト・プロセッサ・ノード
５０２  利用者
５０４  利用者
５０６  利用者
５０８  利用者
５１０  チャネル・アダプタ（エンドノード）
５１４  ポート
５１６  ポート
５１２  チャネル・アダプタ（エンドノード）
５１８  ポート
５２０  ポート
５２２  バーブズ
５２４  メッセージ・データ・サービス
６０２  ホスト・プロセッサ・ノード
６０４  ホスト・プロセッサ・ノード
６０６  ＨＣＡ
６０８  ＨＣＡ
６１２  スイッチ
６１４  スイッチ
６２４  送信
６２６  受信
６２８  送信
６３０  受信
７１０  プロセスＡ
７２０  プロセスＣ
７３０  プロセスＤ
７４０  プロセスＥ
８００  パケット
８０２  ルーティング・ヘッダ
８０４  トランスポート・ヘッダ
８１０  シーケンス番号フィールド
８１２  インスタンス番号
８１４  シーケンス番号
８０６  パケット・ペイロード
８０８  ＣＲＣ
【図１】
2005524264.tif 000003
【図２】
2005524264.tif 000004
【図３】
2005524264.tif 000005
【図４】
2005524264.tif 000006
【図５】
2005524264.tif 000007
【図６】
2005524264.tif 000008
【図７】
2005524264.tif 000009
【図８】
2005524264.tif 000010
【図９】
2005524264.tif 000011
【図１０】
2005524264.tif 000012
【手続補正書】
【提出日】平成16年4月29日(2004.4.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理する方法であって、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間でデータを伝送する前に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立するステップと、
あるインスタンス番号と前記論理接続とを関連付けるステップであって、前記インスタンス番号は前記論理接続の間、一定に保たれる、ステップと、
前記第１のエンド・ノードから前記第２のエンド・ノードへ少なくとも１つのパケットを伝送するステップであって、その際、前記論理接続が確立されている間に前記関連付けたインスタンス番号を前記パケットに含める、ステップと、
前記第２のエンド・ノードがパケットを受信するステップと、
前記第２のエンド・ノードを用いて、前記受信したパケットに含まれているインスタンス番号を特定するステップと、
前記受信したパケットに含まれているインスタンス番号が前記関連付けたインスタンス番号であるか否かを判断するステップと、
前記受信したパケットに含まれているインスタンス番号は前記関連付けたインスタンス番号であるという判断に応答して、前記第２のエンド・ノードが、前記受信したパケットを通常通りに処理するステップと、
前記受信したパケットに含まれているインスタンス番号は前記関連付けたインスタンス番号ではないという判断に応答して、前記第２のエンド・ノードが、前記受信したパケットを破棄するステップと
を備えた
方法。
【請求項２】
さらに、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を再確立するステップと、
前記インスタンス番号をインクリメントし、前記インクリメントしたインスタンス番号と前記再確立した論理接続とを関連付けるステップと、
前記再確立した論理接続の間に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インクリメントしたインスタンス番号を含めるステップであって、前記インクリメントしたインスタンス番号は前記再確立した論理接続の間、一定に保たれる、ステップと
を備えた、
請求項１に記載の方法。
【請求項３】
前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立する前記ステップが、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付けるステップ
を備えた、
請求項１に記載の方法。
【請求項４】
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対とを関連付ける前記ステップが、さらに、
前記第１のエンド・ノード中にキュー対のテーブルを確立するステップと、
前記第１のエンド・ノード中の前記キュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示を前記テーブル内に格納するステップと
を備えた、
請求項３に記載の方法。
【請求項５】
さらに、
特定の論理接続を用いて前記第２のエンド・ノードから前記第１のエンド・ノードへパケットを送信するステップと、
前記第１のエンド・ノードを用いて前記パケットを受信するステップと、
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断するステップと
を備えた、
請求項４に記載の方法。
【請求項６】
前記テーブルを用いて前記特定の論理接続が以前に確立していたか否かを判断する前記ステップが、さらに、
前記第１のエンド・ノード中のキュー対と前記第２のエンド・ノード中のキュー対との間の関連付けの表示が前記テーブルに格納されているか否かを判断するステップ
を備えた、
請求項５に記載の方法。
【請求項７】
さらに、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケット中のトランスポート・ヘッダに前記関連付けたインスタンス番号を含めるステップ
を備えた、
請求項１に記載の方法。
【請求項８】
さらに、
前記論理接続が前記第１のエンド・ノードと前記第２のエンド・ノードとの間における最初の論理接続であるか否かを判断するステップと、
前記論理接続は最初の論理接続であるという判断に応答して、
あるインスタンス番号と前記論理接続とを関連付けるステップと、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記関連付けたインスタンス番号を含めるステップであって、前記インスタンス番号は前記論理接続の間、一定に保たれる、ステップと、
前記関連付けたインスタンス番号を現在のインスタンス番号として使用するステップと、
前記論理接続は最初の論理接続ではないという判断に応答して、
前記現在のインスタンス番号をインクリメントするステップと、
前記インクリメントした現在のインスタンス番号を現在のインスタンス番号として使用するステップと、
前記論理接続の間に前記第１のエンド・ノードと前記第２のエンド・ノードとの間で伝送する各パケットに前記インクリメントした現在のインスタンス番号を含めるステップと
を備えた、
請求項１に記載の方法。
【請求項９】
データ処理システムにおいて第１のエンド・ノードから第２のエンド・ノードへ伝送するデータを管理するデータ処理システムであって、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間でデータを伝送する前に、前記第１のエンド・ノードと前記第２のエンド・ノードとの間に論理接続を確立する手段と、
あるインスタンス番号と前記論理接続とを関連付ける手段と、
前記第１のエンド・ノードと前記第２のエンド・ノードとの間で少なくとも１つのパケットを伝送し、前記論理接続の確立状態を維持しながら、各パケットに前記関連付けたインスタンス番号を含める手段であって、前記関連付けたインスタンス番号は前記論理接続の間、一定に保たれる、手段と
パケットを受信し、前記受信したパケットに含まれているインスタンス番号を特定する手段と、
前記受信したパケットに含まれている前記インスタンス番号が前記関連付けたインスタンス番号であるか否かを判断する手段と、
前記判断に応じて、前記受信したパケットを処理または破棄する手段と
を備えた
データ処理システム。
【請求項１０】
コンピュータ・システムにロードしその上で実行したときに、請求項１〜８のうちの１項に記載の方法のすべてのステップを実行するコンピュータ・プログラム。
【国際調査報告】
2005524264.tif 000013
2005524264.tif 000014
2005524264.tif 000015