(57)【要約】  原子的な多点搬送並びに多点転送を伴う２つのノードセット間で、信頼性がありかつ秩序化されたデータ通信が可能なシステムで、例えば、拡張ＴＣＤ／ＩＰがここでは記述される。複数ノードがデータと一緒に搬送される場合、搬送は原子的に実行される。１グループのノードを利用するエラー許容型かつ対称型のマルチコンピューティングが可能なシステムもここで説明される。信頼性のある秩序化されかつ原子的なグループ対グループＴＣＰ通信システムを利用するネットワーク化されたノードに関する対称なグループが、エラー許容性と単一システムイメージをクライアントアプリケーションに提供するのに利用される。クライアントとグループ間の通信は、任意標準のＴＣＰ／ＩＰ端点がグループと間断なく通信可能であるので標準準拠ベースである。処理負荷はアプリケーションセグメントへのトランスぺアレントなタスク分配により１グループのノード同士で分担される。本システムは１ヶ所のノードがエラーになる場合があっても、残りのレプリカがサービスや接続の中断なくサービスを続けるという点でエラー許容型である。
2007520093.tif 000002
【特許請求の範囲】
【請求項１】
データを転送するノードの決定、データの単一インスタンスの転送、ならびにデータを送信する転送制御の連続化が含まれる原子的搬送用のノード間の通信方法。
【請求項２】
a.各グループに少なくとも1以上のノードが含まれる複数の端点が含まれる第1単独アドレスグループならびに第2単独アドレスグループ、b.各グループ間の通信用に可能な単一ロジカル接続をもつ通信プロトコル、c.各グループの非エンプティサブセット間通信を達成する第1単独アドレスグループのノードへのデータの応答を可能にするとともに、第2単独アドレスグループへのデータの転送を可能にする複数の端点が含まれるネットワークにおけるグループ間の通信用装置。
【請求項３】
各グループ間のデータ通信がどちらかのグループの仲介ノードを通過しない請求項２の装置
【請求項４】
端点にプロトコルスタックが含まれる請求項２の装置
【請求項５】
ノードに１処理あるいは１デバイスからなるグループからのものが含まれる請求項２の装置
【請求項６】
各グループが単独アドレスによる別のグループにアドレス可能である請求項２の装置
【請求項７】
通信プロトコルに「転送制御プロトコル」（TCP）が含まれる請求項２の装置
【請求項８】
a各グループに少なくとも1ヶ所のノードが含まれる複数の端点が含まれる.第1単独アドレスグループならびに第2単独アドレスグループ、b.各グループ間の通信用に可能な単一ロジカル接続を持つ通信プロトコル、c.データの第1単独アドレスグループにおけるノードへの応答が可能であるとともに、各グループの非エンプティサブセット間の通信を達成するためデータを第2単独アドレスグループまで転送可能な複数の端点が含まれるネットワークにおけるグループ間の通信用装置
【請求項９】
各グループ間のデータ通信がいずれかのグループの仲介ノードを通過しない請求項８の装置
【請求項１０】
１端点に１プロトコルスタックが含まれる請求項８の装置
【請求項１１】
前記プロトコルが前記グループによって送信された順番にデータの搬送を保証する請求項８による装置
【請求項１２】
前記端点がノードにある場合の請求項８による装置
【請求項１３】
前記端点が前記ノードの外部にある場合の請求項８による装置
【請求項１４】
前記2グループのメンバー権が前記接続の寿命中に変動する場合の請求項８による装置
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はｎが任意の整数値である場合のあるひとつのネットワークにおけるｎ対ｎ点間のネットワーク通信に関する。
【関連技術の簡単な説明】
【０００２】
最適なリソース利用、柔軟性ならびに管理コストの削減に関しては、産業界では、変化するニーズを満足させるために処理能力と記憶能力が必要に応じて付加可能であり、リソースが動的に準備される「ユーティリティコンピューティング」モデルに基づく解決策が求められている。従来のメインフレームによる解決策は高コストのため平均的な企業の手には届かない。数多くの高性能のものがあるが、低コストの「ブレードサーバ」と市場で入手できるネットワーク技術がある。しかしながら、これらのリソースを効率的かつ柔軟に集めるとともにユーティリティコンピューティングのニーズを満足させるアプリケーションを広範囲に実行させることの可能な解決策は、今日、存在しない。
【０００３】
クライアントサーバパラダイムはクライアントがリクエストを出してサーバが応答するその容易さのため産業界で評判がよい。このパラダイムを可能にするためには、通信ネットワークのクライアントとサーバの間で利用される人気のある通信プロトコルは、転送制御プロトコル／インターネットプロトコルあるいは単純に、「ＴＣＰ／ＩＰ」である。通信ネットワークでは、クライアント（あるいはクライアントシステムまたはマシン）はサーバ（あるいはクライアントシステムまたはマシン）を単独のロジカルホストまたはエンティティとして見る。単独のフィジカルサーバは数多くのクライアントに効率的にサービス不可能であることが度々ある。さらに、エラーを起こしたサーバによりクライアントはオペレーション不能となる。
【０００４】
単独フィジカルサーバの欠点に取り組むため、クライアントにサービスする平行あるいはグリッド状に稼動する多くのサーバをかかえるクラスター構成が、負荷均衡装置を利用して開発された。これらの構成によりメインフレームに匹敵するエラー許容性、低コスト性、効率性ならびに柔軟性のような可能性のある恩恵が提供される。しかしながら、これらやその他の恩恵の大半はこれらに固有の限界ならびに多くのアプリケーションが構築可能な標準プラットフォームの不足により実現されないままである。
【０００５】
フィジカルクラスタリングだけでなく従来のソフトウェアシステムもまたアプリケーションレベルやオペレーティングシステムレベルでもクラスタリングを導入する努力がなされてきた。しかしながら、このようなソフトウェア構成の欠点には、クラスタリングがこれらのアプリケーションが限定された利用法でアプリケーション成果に埋め込まれる場合のインスタンスが含まれる。同様に、オペレーションシステムレベルのクラスタリングは魅力的だが、これらの分野の従来の努力はバーチャル化されなくてはならない数多くの抽象化作業によりこれまで成功してこなかった。
【０００６】
フィジカルサーバとソフトウェアアプリケーション、そしてオペレーティングシステムクラスタリングに比べて、ネットワークレベルクラスタリングではいかなる問題も被らないだけでなく、ある種魅力的な恩恵が提供される。例えば、単独のバーチャルエンティティとしてサーバノードのクラスターにアドレスする能力はクライアントサーバプログラミングに有益な要件である。さらに、ノードのプールでバーチャルクラスターを容易に創造する能力がより良い利便性とメインフレームクラスの柔軟性に付加される。
【０００７】
従来のネットワークのレベルクラスタリングプラットフォームは、汎用的で広範なアプリケーションによる利用が可能でなくてはならない。これらのアプリケーションはウェブサーバ、記憶サーバ、データベースサーバ、科学的かつアプリケーショングリッドなコンピューティングにわたる。これらの従来型ネットワークレベルクラスターは計算能力とノード能力の結合が可能でなくてはならないので、アプリケーションは継ぎ目無しに徐々に規模が拡大する。既存のアプリケーションは最小の数あるいは変更で実行可能でなくてはならない。しかしながら、従来型ネットワークレベルクラスターは限られた成功しか収めてこなかった。
【０００８】
「対称型マルチプロセッサ」（ＳＭＰ）のアーキテクチャがある程度成功したのは、アプリケーションにとって処理と記憶の場所をトランスペアレントにしたバスの単純さのためである。クラスタリングに関してもまた、サーバノードを接続するバーチャルバスの簡明性によりノード位置のトランスペアレント性とノードIDのトランスペアレント性がもたらされる。しかしながら、このような従来型システムは、効率性のためにバスがクライアントアプリケーションによって直接、接続可能となる能力に欠ける。同様に、「ユーザーデータグラムプロトコル」（「ＵＤＰ」）パケット放送ならびに多重放送をベースにしたバス類はデータ搬送の保証性に欠けアプリケーションレベルのクラスタリングが生じる。
【０００９】
産業界で最も多く利用されている搬送保証のある唯一のプロトコルはＴＣＰ／ＩＰである。搬送の保証性と遍在性が秩序化されたＴＣＰデータ搬送の保証性により、これが特にバーチャル化に望ましいものとなる。しかしながら、接続当たりたった２つの端点のためのＴＣＰのサポートによりその可能性が制限された。クラスターに対するインカミングリクエストを分配するような事前に割当されたタスク類のあるエレメント／ノード処理の非対称な構成により、生来的に柔軟性がないだけでなく、負荷の管理やバランスをとることが困難である。非対称型のノードはエラーやボトルネックとなる単一点であることが度々ある。ＭＣ（マルチコンピューティング）が成功するためには、非対称型ノード構成に対向して対称型の構成が必要である。
【００１０】
クライアントサーバ環境の非対称性に伴うもうひとつの問題は待ち時間である。スイッチとルーターによりデータ通過の待ち時間を減らす専用のハードウェアが採用される。データがノードのＵＤＰ／ＴＣＰ／ＩＰスタックを通過しなくてはならない場合、レプリカと処理により相当な待ち時間が加わる。それ故、最適な性能を発揮させるためには、システムは非対称構成をもつ調整ノードを通るデータの通過を避けなくてはならない。しかしながら、サーバのノードのＣＰＵが大量のネットワークトラフィックを取り扱わなくてはならない場合にはアプリケーションの処理量とその処理に苦しめられる。従って、従来型システムは専用のアダプターカードあるいは端点での待ち時間を減らすとともに、アプリケーション性能を改善する「集積回路」チップのようなハードウェアアクセラレーターを利用しなくてはならない。これによりシステムのコストと複雑性が増す。
【００１１】
低コストのエラー許容性は多くの企業アプリケーションによって大いに望まれる。固定化された数の余分のハードウェア部品が利用される解決策により柔軟性不足、容易な修復能力の不足、そして複雑性によるより高いコストに苦しめられる。今日の解決策により、エラー発生後の待機サーバへのサービスの迅速な切替えによって高度な使い勝手がもたらされる。待機システムは受動的であるので、そのリソースは高コストを招くので利用されないだけである。レプリカによる最も単純でしかも強力なエラー許容性の形態では、１接続にわたるサービスはノードのエラーによる中断が無く続けられる。
【００１２】
従来のクラスター上では、アクティブノードがタスクを実行するとともに受動ノードがその後の変更を更新する。多くのインスタンスにおいて、更新回数はクエリーのような他のタスクと比較してより少ない。マシンは、更新内容がレプリカに反映される間、負荷がすべてのレプリカと共有される場合に最大に利用される。レプリカの更新は同時に行われなくてはならないと同時に、一貫性のために同じ順番でなされなくてはならない。原子的搬送に関して、データはクライアントがデータの受取りを指示するＴＣＰ  ＡＣＫで送られるまでにすべてのターゲット端点への搬送が保証される。レプリカのエラーの際には、残りのレプリカはエラー許容性に影響を与える接続の中断を回避しながらサービスの継続が可能である。非原子的レプリカは使い勝手に欠ける。具体的には、クライアントのリクエストがサービスのレプリカによって受け付けられる場合、それぞれによりある応答が生じる。クライアントがサーバを単独のエンティティとして見るので、応答の１インスタンスだけがクライアントに送り返されることが確保されなくてはならない。同様に、マルチクライアントレプリカが同一リクエストを送信しようとする場合、１インスタンスだけがサーバに送り出されることが確保されなくてはならない。従来のシステムでは原子性の提供に度々失敗するので、使い勝手と接続の中断を避けるエラー許容性に欠ける。
【００１３】
従来のクラスタリングに伴うもうひとつの問題は負荷バランス調整である。任意のシステムに関して、ノード内に均等に負荷をバランスさせる能力は、最適なアプリケーション性能に必要である。しかしながら、従来のクラスタリングシステムでは、例えば、ラウンドロビン、内容再分割、優先順位重みづけといった負荷バランスの標準スキームのため、限られたサポートだけが提供される。さらに、多くの従来型クラスタリングシステムでは特定の負荷バランススキームのアプリケーションの実行サポートが不可能である。
【００１４】
多くのサービスは時間に依存するクラスター中で非常に変化幅の大きい負荷レベルをもつ。ランニングプロセスがアクティブサーバを退避させるために移動の必要があることがある。従来型クラスターシステムは容易に実行されかつサービスの中断がないようにクラスターにノード／レプリカの追加あるいは移動するためのサポートに欠けることが度々である。
【００１５】
ネットワークレベルのバーチャル化に取り組む数多くの試みがなされてきた。しかしながら、各試みにより未だに重大な欠点がいくつか生じている。例えば、ある従来型解決策は産業界で人気のある「ウェブサーバ」のクラスターにおける負荷均衡用装置である。米国特許番号6,006, 264号 および6,449, 647号に公開もされているこの負荷均衡装置は、インカミングクライアントＴＣＰ接続をサーバのプールにある、あるサーバに切替える。この処理用の従来型サーバはクライアントパケットをスイッチあるいはルーターによってすべてのノードに放送あるいは多重放送する「マイクロソフトのネットワーク負荷均衡ソフトウェアである。しかしながら、接続が一旦、マップされるとすぐ、同じサーバが１対１の従来型の関係のＴＣＰ接続の寿命のあいだ中、すべてのクライアントリクエストを取り扱う。
【００１６】
上述のような従来型システムに伴う問題は、サービスに複数のノード上で実行する異なる複数のタスクが含まれる場合に、１接続の間にクライアントが要求するすべてのサービスを実行できないマップされたサーバが一つでも存在すればサービスエラーとなるので、完全な解決が提供できない点にある。この点により、ページを提供する１タスクだけが多くのノードに複製されるウェブページ提供サービスに対しては、このようなシステムの利用は制限される。さらに、１サーバに対して実行される外部装置の任意のマッピングがボトルネックとなるとともに、単一点がエラーとなる。おまけに、１接続が２ヶ所の端点だけをもつので複製がサポートされない。従って、このような単一端点のＴＣＰに関しては、更新はレプリカ上に反映されないため、使い勝手について相当の制限がある。
【００１７】
上記従来型システムの欠点のいくつかに取り組むため、別の従来型システムにより、１接続にわたるクライアントリクエストを異なるタスクを提供するノードに分散することが試みられた。ラヴィ・コック他はこの種の１システムをその論文「ハーフパイプアンカリング」で公開した。ハーフパイプアンカリングはバックエンドフォワーディングをベースとしている。このスキームにおいて、クライアントリクエストがサーバのクラスターに届く場合に、ある指定されたサーバがリクエストを受け付けるとともに、データの審査後、最適なサーバに転送する。最適サーバは、接続状態情報が与えられた後には、アドレスを最初のターゲットアドレスに合わせて変更してクライアントに直接、応答する。ここでは、単一のＴＣＰ端点がリクエストを分散するようノードに動的にマップされる。このスキームは仲介ノードがデータを妨害するとともにデータ内容に基づいてこれを分散するので「非対称的」方法の一例である。
【００１８】
非対称的構成を行うことを試みるもうひとつの従来型システムは、ＥＭIＣネットワーク社によって書かれた二冊の白書の中で公開されている。この従来型システムでは、指定されたノードはインカミングデータを妨害するだけでなく捕捉し、さらにその後、プロプライエタリープロトコルを利用してこれを多ノードに信頼できる形で搬送するためには１ノードだけがデータの転送を許されるとともに、データはその後これをクライアントに再転送するよう指定されたサーバに、まず転送されなくてはならない。ここでも、また、単一端点が動的にマップされるとともに、ＴＣＰ接続は複製が始められる仲介ノードで終わる。このスキームにより、仲介ノードがデータを妨害すると同時に複製されるので「非対称的」方法のもうひとつの例である。
【００１９】
上述の両方のスキームでは、端点は様々なノードにマップされることができるが、2端点というＴＣＰの定義は維持される。これらの従来型スキームにおける複製はプロプライエタリープロトコルを利用してアプリケーションレベルで行われる。さらに、これらの従来型スキームでは選択ノード類がリクエストを分散するアプリケーションレベルルーターとして作動する非対称的ノード構成が採用される。しかしながら、このような非対称性により、アーロン他による「ネットワークサーバに基づくクラスター中のスケーラブルな内容意識リクエスト分布」で注記されるスケーラビリティ限界が生まれる。これらの限界には単一点エラー、データ総量ボトルネック、より長い待ち時間による準最適性能ならびに場所のトランスペアレント性不足が含まれる。
【００２０】
従って、対称性システムとｍ対ｎ接続（ｍ、ｎは同じでも異なるものでもあって良い任意の整数）を提供するＴＣＰの２端点の現状定義を利用するための方法の必要性がある。
【発明の開示】
【００２１】
上記に言及された要件ならびにその他の要件はホスト対ホスト通信のＴＣＰの現状範囲をグループ対グループ通信に拡張することによって、さらに詳しくは２接続端点の現状定義を対称に構成されるノードにかかる２グループの端点に拡張することによって満足される。このような各端点はＴＣＰの秩序化された転送を維持する間に、独立にかつ平行して受信するとともに転送する資格がある。データは全グループあるいは構成に依存するサブセットに搬送される。必要なターゲット端点だけがＴＣＰのＡＣＫがピアグループに送られるまでにデータを受取ることが必要とされる。
【００２２】
ある実施例では、本発明により、１以上のＩＰアドレスを伴う単一のバーチャルエンティティとしてひとつのクラスターのノード群にアドレスすることが可能となる。クライアントグループとサーバグループ間の通信は、任意標準のＴＣＰ／ＩＰ端点が継ぎ目なしにグループとの通信が可能であるので標準に厳密に準拠されている。データはグループの対称に構成されたノードで終わる端点に原子的に搬送される。
【００２３】
接続端点にインストールされたフィルターがアプリケーションセグメントに関係のない到来データをフィルターにかけて取り除く。アプリケーションセグメントのデータ搬送は適切に構成されるとともにインストールされるフィルターによって動的に制御される。さらに、フィルターはオプションとしてコピーを仲介させずにインカミングデータの投入をターゲットアプリケーションに直接実行する。
【００２４】
１接続にわたる入出力はノードがお互いに独立して平行して受信できるとともに転送できるので結合が解かれる。すべての転送はＴＣＰ仕様毎にシーケンシャルであるとともに、ノード間の転送制御はグループノード同士のラウンドロビンあるいは転送リクエスト要因同士のラウンドロビンあるいはアプリケーション特有のスキームに準拠して秩序化される。ノードは平行して再転送可能であるとともにこれらの間で再転送するためのシンクロナイゼーションの追加は不要である。
【００２５】
スケーラビリティならびに負荷分担については、アプリケーション機能はグループノードの中で分散される。これを行うためには、アプリケーションはロジカルにセグメント化されて、サブセットのアプリケーションがそれぞれ実行される。ＴＣＰ接続に到着するインカミングリクエストはその後、効率的に負荷を分配するグループにあるセグメントまで搬送される。アプリケーションのインスタンスに対するリクエストの一定のセットのみを搬送することにより、ロジカルセグメンテーションがアプリケーションコードの変更無しでも実行可能となる。アプリケーションセグメントはノードからノードへと接続の中断無しに動的に移動されることもある。
【００２６】
さらに、１ノードは該グループによって示されるバーチャルエンティティに対して１接続を創り出すことによってグループの他のノードと通信可能であることが注目される。この点によりグループノード間の通信に向けたすべての上記特徴が提供される。
【００２７】
本システムはアプリケーションを実行するノードがエラーとなる場合、グループ内の残りのアプリケーションレプリカのあるセットが接続とサービス提供の中断をせずにサービス提供を続けるので、エラー許容性がある。ノードは、アプリケーションに対してトランスペアレントな方法で、サービスの一定品質を維持するために追加可能であるか、あるいはグループから動的に退避可能である。ノード間の負荷均衡をはかるか、あるいはノードを退避させる目的のためには、システムはトランスペアレントにアクティブサービスを移動させるとともにグループ内部でタスクの再分配を行う。
【００２８】
ひとつのグループのノード群上で実行されるアプリケーション類は、クライアント／サーバアプリケーションプログラミング、ならびに、リソース管理を単純化する単一のバーチャルエンティティとして該グループの残りを見るとともに実行させることが可能である。本発明のある実施例によると、コード変更の必要が無いアプリケーションに対してトランスペアレントな方法で度々、グループノード上で独立して実行されるアプリケーションが１以上のセグメントに分割可能となる。
【００２９】
該システムは様々なアプリケーションセグメントに１接続にわたるインカミングタスクを動的かつ分かりやすく分配することによって、１グループのノード同士で処理の負荷を分担する。１接続上に到着する単一リクエストは、結束して作動する複数のセグメントによってサービスされることがあり、ノード間の計算あるいは処理のよりきめの細かい分配を可能にする。該システムにより１セグメントのマルチインスタンスの並列実行が可能となる。リクエスト類は類推性に基づくラウンドロビン、負荷最小化ノード、類推準拠、コンテンツハッシングのようなスキームに基づいて選択されたインスタンスに搬送される。
【００３０】
１接続上のインカミングリクエストはエラー許容性を求めて、複数のセグメントインスタンスまで原子的に搬送される。結果はオプションとして比較されるとともに、単一インスタンスが出力される。セグメント／ノードのエラーがあっても、残りのセグメントインスタンスが接続を中断することなくサービスを続ける。
【００３１】
該システムにより接続端点でフィルターを制御しかつ構成する細かいグラニュラリティの方法でタスクを分散させることによって該システムの柔軟かつ外部的な管理が可能となる。退避される場合、ノードの負荷責任範囲はラウンドロビンあるいは負荷最小化あるいはアプリケーション専用のスキームを利用して別のノードに移動される。システムはリソースを変化するニーズを満たすプールからグループに自動的かつ動的に追加する。同様に、ノードは動的かつ自動的に退避されかつ準備される。システムは自動的かつ動的にリソースを付加するかあるいは退避させるサービスの個々の品質を維持する。
【００３２】
本仕様書に説明される特徴と利点は必ずしもすべてを包括してはおらず、特に、図面、仕様書、そして請求項を見れば技術に普通に熟練した人にとって多くの追加の特徴なり利点なりが明らかとなろう。さらに、仕様書に利用される言語は主として読み易さと直感上の目的で選択されたものであって、発明のテーマ事項を描写したりあるいは制限するために選択されたわけではないことが注目されるはずである。
【００３３】
本仕様書に説明される特徴と利点は必ずしもすべてを包括してはおらず、特に、図面、仕様書、そして請求項を見れば技術に普通に熟練した人にとって多くの追加の特徴なり利点なりが明らかとなろう。さらに、仕様書に利用される言語は主として読み易さと指示上の目的で選択されたものであって、発明のテーマ事項を描写あるいは制限するために選択されたわけではないことが注目されるはずである。
【本発明の詳細な説明】
【００３４】
本発明には、例えばＴＣＰ／ＩＰを拡張する原子的多点搬送ならびに多点転送を伴う２つのノードセット間で信頼性がありかつ秩序化されたデータ通信用に利用可能となったシステムが含まれる。本発明はグループ間のデータトラフィックに関するＴＣＰ仕様を維持する対称型のグループ対グループ通信が含まれる信頼性のあるホスト対ホスト通信のＴＣＰの概念を拡張するものである。さらに、本発明は、現在、単一の接続にわたり通信中に少なくとも２つの端点グループが含まれるＴＣＰ接続の２端点の定義を拡張するものである。
【００３５】
本発明では、接続の端点はグループノードで終わる。複数のノードがデータと一緒に搬送されなくてはならない場合には、搬送は原子的に実行される。複数のノードから発生するデータに関するオプションとしては、単一データインスタンスが転送される。さらに下記で説明されるように、各端点は独立して作動するreceiveHeadとsendHeadから構成される。
【００３６】
はじめに
本発明のある実施例では、１ノードには、１ネットワークにつき１接続例えば、汎用目的の計算機、あるいは通信に関連したネットワーク向けのデータ処理装置と機能するよう構成されたマイクロプロセッサあるいはソフトウェアがあるその他の装置のようなデータ処理装置が含まれる。１グループは対称的に構成される１以上のノードの集まりを参照する。１アプリケーションセグメントは、アプリケーションあるいは様々なグループのノード上で実行される他のアプリケーションセグメントと関連してサービスされて良いアプリケーションのセグメントを参照する。１アプリケーションは、１以上のアプリケーションセグメントから構成されるとともに、１アプリケーションセグメントは１以上のプロセスから構成される。
【００３７】
sendHeadはデータ転送を制御するとともにノードにおける転送状態を維持するＴＣＰ接続の転送端を参照する。receiveHeadは接続上のデータの受付を制御するとともにノードにおける受信状態を維持するＴＣＰ接続の受信端部を参照する。アクティブsendHeadは、例えば、データのシーケンスナンバーや最新応答のシーケンスナンバーといった最新の転送状態情報を持つよう意図されるsendHeadを参照する。
【００３８】
バスコントローラは接続の確立ならびに終了プロセスをピアグループと調整するノードを制御する、および／または、参照する。１信号は１つのロジカルバスにわたるノードグループ内部で交換されるメッセージを参照する。信号のソースとターゲットが同じノード内にある場合、内部的にこれを受信する結果になることもあるが、信号は発信されない。１接続の端点は予め一致された１組のシーケンスナンバーに基づく順番にピアグループとデータを交換するＴＣＰのようなスタックを参照する。１接続の端点は少なくとも１つの出力データストリームの始点ならびに入力データストリームの終点を持っている。１リクエストは、インカミングデータストリームの１選択セグメント、例えば、サービスのためのクライアントリクエストを参照する。
【００３９】
システム概要
次に、図１aを参照すると本発明のある実施例による通信システムが図示されている。本通信システムには第１グループ１２０と第２グループ１６０間を結合するＴＣＰ接続１３０が含まれる。例を通じて、第１グループ１２０には第１、第２そして第３のメンバーノード、１００a、１００b。１００cがあるとともに、第２グループ１６０には第１および第２のメンバーノード、１５０ｘ、１５０ｙがある。どちらのグループのメンバーノードにも各ノードには１ＴＣＰ接続に対して等しいアクセスがあるとともに、独立してかつ平行して実行されるので対称に構成される。第１データストリーム１１０および第２データストリーム１１１は、通信システムの第１グループ１２０と第２グループ１６０間を流れることが可能である。
【００４０】
第１アプリケーションセグメント１３５および第２アプリケーションセグメント１３６により１２０上のサーバアプリケーションが構成される。第１アプリケーションセグメント１３５にはレプリカ１３５ｘ、１３５ｙの１セットがあるとともに、第２アプリケーションセグメント１３６にもまた、レプリカ１３６y、１３６xの１セットがある。アプリケーションセグメントレプリカ１３５ｘ、１３５ｙはそれぞれノード１００aおよび１００b上で実行される一方、アプリケーションセグメントレプリカ１３６ｘ、１３６ｙはそれぞれノード１００bおよび１００c上で実行される..。グループ１６０におけるクライアントアプリケーションはレプリカ１５１aおよび１５１bを伴うアプリケーションセグメント１５１から構成される。
【００４１】
第１グループ１２０のアプリケーションセグメント１３５および１３６は第２グループ１６０のセグメント１５１と接続１３０上で通信する。該接続１３０の２つのデータストリーム１１０および１１１はＴＣＰプロトコルに従う。接続１３０には第１グループ１２０において３ヶ所の異なる接続端点１３０a、１３０b、１３０cが、また同一接続上のグループ１６０においては２ヶ所の異なる接続端点１３０x、１３０yがあって良い。
【００４２】
各グループ１２０、１６０はインターネットプロトコル（「ＩＰ」）アドレス１２１、１６１のそれぞれのグループに割り当てられる。グループはノードが構成される間、互いを単一エンティティとみなす。２つのグループ１２０、１６０間の通信はお互いにグループＩＰアドレス１２１、１６１を通じて相互にアドレスされる。例えば、セグメント１５１からのリクエストが第１グループ１２０に届く場合に、これはグループＩＰアドレス１６１から来るデータとして見られる。同様に、第２グループ１６０はグループアドレス１２１までターゲットされるデータを送信する。
【００４３】
第１グループ１２０における端点１３０a、１３０b、１３０cは、１以上のアプリケーションセグメントレプリカ１３５a、１３５b、１３６a、１３６bがインカミングリクエストと共に搬送されるように、設定されることができる。データが異なる方針によってアプリケーションセグメントに搬送される例は、すべてのレプリカ、１レプリカ、すべてのアプリケーションセグメントおよび選択アプリケーションセグメントであり、リクエスト内容に基づかれたり、ラウンドロビンリクエスト分配に基づかれたり、個別ノードに対するマップリクエストをマップするハッシングスキームや優先順位の重み付け等に基づかれて決定されルーターゲットである。このスキーム修正（「書き込み」）では、リクエストはアプリケーションセグメントのすべてのレプリカに搬送される一方で、「読み込み」リクエストはひとつだけの選定レプリカにのみ搬送される。
【００４４】
第２グループ１６０における１３０ｘあるいは１３０ｙのいずれかの端点はサーバグループ１２０にリクエストを送信できる。第１グループ１２０の端点１３０a、１３０b、１３０cにおける１以上のsendHeadは、設定に依存するデータを受信する。１グループ１２０の端点１３０a、１３０b、１３０cは、第２グループ１６０の端点１３０ｘ、１３０ｙにおいて受信される返信データを送信できる。インカミングデータの一部あるいはすべてを受信することを望むアプリケーションプロセスは、データの受領についてクライアントの応答前にこれを受信したことが保証される。データ転送のＴＣＰのシーケンシャルオーダーを維持するために、ＴＣＰシーケンスナンバーはデータ転送が始まるまでにシーケンシャルオーダーで割り当てられる。
【００４５】
オプションとして、第２グループ１６０のレプリカ１５１aおよび１５１bによって出力された写しのデータは、通信システムによって第１グループ１２０に転送されるために単一のインスタンスに縮小される。同様にして、第１グループ１２０のアプリケーションセグメント１３５、１３６のレプリカの出力もまた、同じものに縮小可能である。多くの場合、リクエストは設定に応じて１つのレプリカのみ搬送されるので、１３５a、１３５b、１３６a、１３６bのレプリカが出力を必ず生じなくてはならないという必要は必ずしもない。
【００４６】
本発明による通信システムはクライアント／サーバリクエストならびに原子的である有益な応答を提供する。つまり、これらは、２グループにわたる複数処理を可能にすることにより単一接続上でデータを送受信して、バイトのひとつの連続したシーケンスとして送信あるいは受信されるものである。
【００４７】
グループ１２０と１６０との間のプロトコルはＴＣＰであるとともに、データは従来のＴＣＰ毎として送信されたシーケンシャルオーダーで搬送されるよう保証される。複数端点にターゲットされた場合、データはクライアントがデータの受領を指示するＴＣＰ  ＡＣＫセグメントで送信されるまでにすべてのターゲット端点に搬送されることが保証される。オプションとして、レプリカ出力が単一コピー出力の転送に縮小されなくてはならない場合、すべてのノードが同じデータを出力してもデータは転送されるので出力は原子的であることが保証される。しかしながら、結果が一致しない場合には、アプリケーションは多数決一致あるいは正解あるいは正常な結果等に基づいて転送する出力をオプションとして選択して良い。
【００４８】
アプリケーションセグメンテーションに関して、アプリケーション処理は、通常、処理用にはインカミングデータストリームの選択部分だけを伴って搬送される。例えば、第２データストリーム１１１上に届くリクエストはアプリケーションセグメントを選択するために搬送可能である。アプリケーション処理までのデータの搬送順序はこれがＲＦＣ７９３によって指定された通りに送信された順序であるよう保証されなくてはならない。すなわち、一定のデータがあるアプリケーションセグメントに搬送されるまでに、ストリームに到着したすべての先行データがそのターゲット端点まで正常に搬送されなくてはならない。
【００４９】
図１bを参照すると、第１グループ１２０は第１、第２および第３ノード１００a、１００b、１００cから構成される。第１グループ１２０と第２グループ１６０との間の接続１３０にはアウトゴーイングおよびインカミングデータストリーム１１０、１１１がある。各ノード１００aから１００cまでにはグループ対グループ通信スタック１３０a、から１３０cまでがそれぞれある。ノードのすべてに対するデータの搬送はノード１００aから１００cまでとそれぞれ結合されるスイッチ１４１a、から１４１cまでを通る。イーサネット（登録商標）のような普及しているハードウェア技術は信頼性がないので、ベースとなるハードウェアによるスイッチ１４１a、から１４１cまでに対する搬送保証に関してはいかなる想定もなされない。１００a、から１００cまでの各ノードあるいはそのサブセットのいずれかまでのデータの搬送は選択的であって良いか、あるいはベースとなるハードウェア装置によっては、搬送は全く不可能である。
【００５０】
インカミングデータは、ＩＰアドレス、および／または、ポートに準拠して、スイッチ１４１a、から１４１cまでによって正規のＴＣＰ／ＩＰスタック１４０a、から１４０cまで、あるいはグループ対グループ通信スタック１３０a、から１３０cまでのいずれかに切替えられる。ノード１００のアプリケーション処理１４２は標準のＴＣＰスタック１４０を利用して通信する。アプリケーションセグメント１３５ｘ、ｙ、１３６ｘ、ｙはグループ通信スタック１３０a、から１３０cまでとそれぞれ通信する。搬送制御信号１０５がグループ１３１の操作を調整するとともに制御する。コントロールバス１０５上で送信される信号の範囲は第１グループ１２０に限定される。バーチャルバス１４３は第１および第２データストリーム１１０、１１１およびグループ１２０をスパンキングする制御信号１０５から構成される。このバスはピアグループによってTCP接続１３０に直接、接続される。
【００５１】
バーチャルバス１４３の代替えはノード間の点対点通信であるとともに、これにはバンド幅のより好都合な利用法がある。しかしながら、これにより、他のノードならびにこれらのアドレスや役割を見失わないため通信システムに各ノードが必要となる。ある実施例では、ロジカルバスモデルは場所とIDのトランスペアレント性のため制御メッセージを出すことよりも好まれる。
【００５２】
図１cを参照すると、本発明のある実施例による接続端点１３０aが図示されている。一般的に、スイッチ１４１は標準ＴＣＰスタックあるいはグループ対グループ通信スタックか「インターネットプロトコル」（「ＩＰ」）のどちらかに入力１７１データを向ける。フラグメント化されたＩＰパケットについては、１７０が１７１に移される前に再アセンブリーを実行する。入力パケットがフラグメント化されない場合には、いくつか基本的な一貫性チェックの後に入力内容フィルター１７１に直接渡されることができる。入力内容フィルター１７１は、これにアプリケーションセグメント（例えば、１３５x、１３５yあるいは１３６x）に渡されるデータが含まれるかどうか決定するために入力内容、および／または、パケットヘッダーを調べる。
【００５３】
通信システムがパケットをもうどこにも渡さないよう決定する場合は、何の措置もなく廃棄されると同時に、いずれのメモリも解放される。そうでない場合は、入力内容フィルター１７１はアプリケーションに渡されるパケットのセグメントにマークを付ける。パケットはその後、チェックサム計算やその他の一貫性チェックが含まれる完全な認証のためにＩＰ入力処理レイヤー１７２に渡される。無効なパケットはいずれもそれ以上の処理はされずに廃棄される。発生するパケットはその後、グループ対グループＴＣＰレイヤー１７３に渡される。グループ対グループＴＣＰレイヤー１７３は、グループノード（例えば、１２０，１６０）と調整するとともに、ピアグループに対する応答のようなＴＣＰ仕様要件を満足させるためデータの受領を制御する。グループ対グループＴＣＰレイヤー１７３は接続の入力ＴＣＰ状態を維持するとともに、データ経路１３７を通じてデータをソケットに渡す。データ経路１３８はソケットインターフェイスからスタックに転送データ経路を指示する。
【００５４】
ユーザーソケットは出力内容フィルター１７４を起動させるデータを送信する。ある実施例では出力内容フィルター１７４はインストールされないので、操作は実行されない。エラー許容性に関するフィルターは同時にデータを他のレプリカセグメント出力と突き合わせるとともに単一の出力インスタンスを転送する。ピアグループに転送される出力インスタンスの選択は対等出力、多数決一致、正解、あるいは正常操作出力および同様のようなフィルターに設定される方針に依存する。セグメントインスタンスの転送にエラーがあると、レプリカが引継ぐとともに、接続を中断することなく転送を継続する。ピアグループにおける正常な出力インスタンスの受付において、レプリカはデータを廃棄するとともに、メモリを解放する。出力内容フィルター１７４はデータを転送のためグループＴＣＰ出力レイヤー１７５に渡す。グループＴＣＰ出力レイヤー１７５はデータ転送を制御するとともに、グループノードに関連する転送状態を維持する。グループＴＣＰ出力レイヤー１７５はＴＣＰによって規定される通りのシーケンシャルオーダーでデータをピアグループに転送するそのグループノードとともに作動する。グループＴＣＰ出力レイヤー１７５は転送データとともにＩＰ出力レイヤー１７６を通る。IP出力レイヤー１７６はデータに関する標準ＩＰ機能を実行するとともに、データ転送のためデバイスドライバー１７７に引き渡す。
【００５５】
出力内容フィルター１７４による出力突き合わせ結果がノードによって異なって生じる結果を示す場合、サブセットのレプリカがエラーと見なされるとともに、残る端点では接続の中断なしにサービスが続けられる一方で、以降、接続上のサービスから除外される。端点の除外のある、ある実施例では、このような除外は過半数の端点が他を除外する結果と一致するスキームに準拠している。代案としては、端点の除外はオペレーションにエラーがあった場合には生じても良い。端点の除外はまた、フィルターとともにプログラム可能である任意のアプリケーションの特定スキームからのものであることもあり得る。データの転送中に端点のエラーがあると、レプリカの端点が接続の中断なく転送を終わらせることがある。
【００５６】
図１dを参照すると、本発明のある実施例に応じて、コンテンツプロセッサが入出力データを調べる場合のグループ対グループ通信スタックの接続端点１３０が図示されている。コンテンツフィルトレーションはコンテンツプロセッサの関数である。コンテンツプロセッサはアプリケーションメモリ中でデータが置かれなければならない場所、全部のリクエストが受信されるようにアプリケーションに知らせるためのデータの順序ならびに時間を決定する。ネットワークインターフェースデバイスドライバー１７７と連動して作動し、データはダイレクトメモリアクセスコントローラ１９６によって、ネットワークインターフェース１９３とアプリケーションメモリ１９０との間でコピーされる。
【００５７】
新たなインカミングリクウェストデータを調べて、コンテンツプロセッサはアプリケーションスペースにおいてメモリ１９２を割り当てる。割当てサイズはアプリケーション毎に個別であり、通常は、ピアからの完全なリクエストデータのサイズである。リクエストデータが残ることにより、完全なリクエスト用のメモリが割り当てられたとしても割当ては必要とならない。出力データ１９３はアプリケーション自身によって割り当てられる。さらに、リクウェスト／レスポンスデータ１９４、１９５のセグメントのコピーがあっても良い。このスキームに関して、アプリケーションデータは、関連するメモリのコピーを介することなく、ネットワークインターフェースの入力／出力バッファーとアプリケーションメモリ間で直接コピーされる。
【００５８】
図２を参照すると、第１グループ１２０はノード１００（１００a,b,c）が含まれるサーバのセットであって良い。第２グループ１６０はクライアントノード１５０（１５０x,y）のセットが含まれて良い。各グループ１２０、１６０内のノード１００、１５０は接続デバイス１８０を経由して相互に接続される。接続デバイス１８０には通常放送／多重放送デバイス、例えば、イーサネット（登録商標）バスあるいはレイヤースイッチ２／３が含まれて良い。ネットワーク１８９は任意の従来型ネットワーク、例えば、２つのノードグループが接続されるローカルエアリアネットワーク（「ＬＡＮ」）あるいはイーサネット（登録商標）であって良い。両方のピアグループが接続デバイス１８０を経由して直接接続される場合にはネットワーク１８９は不要である。
【００５９】
ある実施例では、サーバノード１００a,b,cにおいて１以上のネットワークインターフェースポート１８５a,b,cが含まれる通信システムが図２に図示されている。通信リンク１８７a,b,cおよび１８８a,b,cはデバイス１８０をノード１００と接続する。接続端点１３０を経由して到着する入力データは、多重放送あるいは通常放送の能力、そのレイヤー２あるいはレイヤー３を利用して接続デバイス１８０によって１８８a,b,cに複製される。到着データはポート１８５a、１８５b，１８５cに搬送される。１８０あるいは関連するハードウェアポートあるいはリンクによるデータ搬送の保証はない。１８７a、１８７b，１８７cを経由して第１グループ１２０によって転送されるデータは、相互に独立しているので、並列に動作する。１８７a、１８７b，１８７cを経由してピアグループに転送されるデータは、１２０には必ずしも見えない。接続１３０上のインカミングデータに関してはロジカルバス１０５上で送信される信号がデバイス１８０によってリンク１８８a、１８８b、１８８cに複製される。図１bのロジカルバス１０５に送信されるデータはサーバノード１００a、１００b、１００cには見えない。
【００６０】
信号
本発明のある実施例では、信号にはグループ共通の接続ID情報があって良い。さらに、信号にはまたソースならびにターゲットのID情報があっても良い。ターゲットID情報は１以上のノードであって良く、あるいはグループ全体であっても良い。
【００６１】
本発明のある実施例では、通信システム内の信号には、グループを代表するピアからの応答入力データ、入力応答信号であるＩＡＣＫ信号が含まれて良い。ＩＡＣＫにはピアグループから期待されるバイトデータを残して、応答されたシーケンスナンバー、ウインドー更新シーケンスナンバー、最新かつ最大のタイムスタンプおよび受信するアクティブsendHeadがピアグループＴＣＰ  ＡＣＫに送信しなければならない場合に指示するＰＵＳＨフラグが含まれることができる。REQSH信号には、１リクエストが含まれるとともに、これはアクティブsendHeadをターゲットにした最新のsendHead割当てを要請できる。ターゲットアドレスはグループ全体であって良い。
【００６２】
GRANTSH信号にはアクティブsendHead状態情報、バス時間、そのGRANTSHが応答されたノードリスト、ならびに最も直近に知られたＩＡＣＫ情報のあるメッセージが含まれる。この信号のターゲットは状態情報の更新後にアクティブsendHeadを引き受ける。IACKSEG信号にはセグメントを代表して送信される入力データ応答情報が含まれる。これにはＩＡＣＫ信号と同じか類似の情報があって良い。REQJOIN信号は接続を越えたサービスにつなげるリクエストをするアプリケーションセグメントに送信される。LEAVE信号は接続上のアプリケーションセグメントのサービスを離れる許可をリクエストして送信される。
【００６３】
ACKLEAVE信号は接続上のサービスを離れるアプリケーションに許可を与える。RESET信号は接続をリセットするリクエストをするために送信される。CLOSE信号はアプリケーションセグメントによって接続の出力ストリームを閉じるリクエストをするために送信される。ACKCLOSE信号はCLOSEリクエストの受領を応答する。
【００６４】
接続の確立と終了
従来型のＴＣＰ状態図が知られている。「図示されたＴＣＰ／ＩＰ第１巻および第2巻」と題するリチャード・スチーブンスによる本にこの状態図を説明するストリーム図が示されかつ説明されているが、その内容がここで参照して組込まれている。さらに、ＴＣＰ／ＩＰプロトコルならびにオプションはRFC'793、および RFC 1323にも検討されており、その関連する部分がここに参照して組込まれている。
【００６５】
接続の確立と終了中に、あるノードは処理を調整かつ制御するとともにグループを代表してピアグループと通信するバスコントローラとして作動するよう選ばれる。デフォルトで、静的バスコントローラが選ばれるが、アプリケーションプログラムは必要に応じてオプションとしてバスコントローラを選択する。バスの制御によりグループメンバーのノードに負荷を分散するためには、バスコントローラの機能はラウンドロビンのようにノードに割り当てられることができるか、あるいはまた、バスコントローラがインカミングシーケンスナンバーの刻み値あるいはソースのＩＰアドレス／ポートのアドレス組合せに基づいて動的に選択されても良い。最低限のＩＤを伴うセグメントがバスコントローラの役割を引き受ける場合のスキームでは、セグメントのレプリカが入手可能な時にバスコントローラ責任がレプリカ同士でラウンドロビン様に割り当てられる。
【００６６】
一般的に、ＴＣＰでは接続操作に４つのタイプがある。各タイプは状態変化に関して様々な設定に従う。グループがピアグループと接続を始める場合に、接続処理がピアグループによって開始される一方で、アクティブ起動として参照され、パッシブ開始として参照される。同様に、接続の終了がグループによって開始される場合は、アクティブ終了として参照されるとともに、終了がピアグループによって開始される場合にはパッシブ終了として参照される。
【００６７】
パッシブ接続の確立
パッシブ開始については、ピアグループからシンクロナイゼーション（「ＳＹＮ」）リクエストの到来があると、バスコントローラはアプリケーションセグメントに接続サービスにつなぐようリクエストするＲＥＱＪＯＩＮ信号を送信する。バスコントローラは、その後、これが受信されると、ＳＹＮ向けＡＣＫ（応答）とともにＳＹＮリクエストでピアグループに応答する。ピアグループがグループを代表して送信されたＳＹＮリクエストに応答する時、アプリケーションセグメントが実行されるグループノードがＩＡＣＫＳＥＧと応答する。すべての必要とされるグループノードが接続サービスにＩＡＣＫＳＥＧ信号でつながった時に、接続が確立されたと見なされるとともにデータの移送が開始可能となる。
【００６８】
アクティブ接続の確立
アクティブ開始においては、あるグループから開始された接続のために、バスコントローラはＲＥＱＪＯＩＮ信号をグループノード群に向けて送信する。その後、これがグループを代表してＹＳＮリクエストを送信してピアグループと接続処理を開始する。グループノード群は、バスコントローラＳＹＮ用のＡＣＫでピアグループからあるＹＳＮリクエストを受領すると、ピアグループから有効なＡＣＫの受領を指示するＩＡＣＫＳＥＧを送信する。必要とされるノードからＩＡＣＫＳＥＧを受領すると、バスコントローラはピアグループからＳＹＮリクエスト用のＡＣＫを送信すると同時に、接続が確立されたと見なされる。
【００６９】
パッシブ接続の終了
パッシブの終了については、ピアグループからＦＩＮセグメントを受領すると、ノードはＦＩＮの受領を指示するＩＡＣＫＳＥＧ信号を送信する。リクエストされたすべてのセグメントからＩＡＣＫＳＥＧが受信される場合、バスコントローラは受信されたＦＩＮ（完了した）用のＡＣＫでピアグループに応答する。ノードはデータの送信を完了した時、接続を離れる希望を指示するＬＥＡＶＥ信号を送信する。ＦＩＮの受領後、すべてのグループノードからＬＥＡＶＥリクエスト信号が受信された時、バスコントローラはピアグループにＦＩＮリクエストを送信する。バスコントローラはＡＣＫＬＥＡＶＥ信号を送信するとともに、その受領とともに、信号ノードのターゲットはＣＬＯＳＥＤ状態に入る。送信されたＦＩＮリクエスト用ＡＣＫが到着すると、バスコントローラはＣＬＯＳＥＤ状態に入る。
【００７０】
アクティブ接続の終了
アクティブ終了において、アプリケーションセグメントは、データの送信を完了させると同時に接続を切断したい時には、ＣＬＯＳＥ信号を送信する。すべてのグループノードからＣＬＯＳＥリクエストを受領すると、バスコントローラはＦＩＮリクエストをピアグループに送信する。ピアグループからＦＩＮリクエストを受領すると、ノードはＬＥＡＶＥリクエストを送信する。グループノードからＬＥＡＶＥ信号ならびに送信されたＦＩＮ用ＡＣＫが受信される時、バスコントローラはＴＩＭＥ＿ＷＡＩＴ状態に入る。
【００７１】
接続上のデータ入力
図３aを参照すると、データパケットは、ノードに到着する時、パケットがグループアドレスに宛てられているかどうかチェックされる（３１１）。もし、そうであってかつパケットがＴＣＰのフラグメントであれば、ＴＣＰセグメントの最後のフラグメントが到着すると完全なＴＣＰセグメントを生じるフラグメントの再組立操作（３１４）が実行される。多くの場合、ＴＣＰセグメントはフラグメント化されないので、この操作は起きない。
【００７２】
ＴＣＰセグメントがあるグループに宛てられない時は、その後、標準ＴＣＰ／ＩＰスタックは以降の処理のためにＴＣＰセグメントとともに引き継がれる（３１２）。
【００７３】
図３bを参照すると、グループのreceiveHeadは、データを受領するとフィルター（３１５）を起動させると同時にノード上のアプリケーションに宛てられたデータがあるかどうかを検証する（３１６）とともにアプリケーションに関係のないデータは廃棄する。フィルターをかけた後に生ずるデータパケットはタイムスタンプの有効性、チェックサムの有効性、ならびにその他ＴＣＰ／ＩＰパラメーター（３１７）の有効性の有無がチェックされる。すべての無効なパケットは直ちに廃棄される。receiveHeadは調べたすべての有効なパケットを反映させるため状態を更新する。チェックサムおよびその他の詳細パケットを実行することによって、フィルターをかけた後の検証が廃棄されたパケットの余分な計算負荷を回避する。
【００７４】
受信されたデータに先行するデータのすべてが適切なアプリケーションセグメントに搬送された（３２０）と保証されるかどうか、この直後に続く任意のデータがアプリケーションセグメントに引き渡されるかどうかが検証される（３１８）のはそれからである。ＴＣＰ  ＡＣＫセグメントは仕様毎に必要ならばピアのグループに送信される。しかしながら、データの応答を保留する先行データがある場合にはデータは応答待ちのキューとなる（３１９）。
【００７５】
セグメントインスタンスがデータの受領中にエラーとなる場合には、いずれの残りのインスタンスも受付と応答制御を続ける。これにより、アプリケーションは、ノードのエラーで中断することなくサービスを続けることが可能となる。
【００７６】
データのフィルトレーション
図３cを参照すると、receiveHeadは入力データの状態をあたかもリクエストが無視され、アプリケーションに引き渡されているかのように維持し、新たなリクエストの始まりにはターゲット等を決定するために続くデータが必要となる。1パケットには1以上のリクエストあるいは部分的リクエストデータが含まれても良いので、パケットに処理されるべき残りのデータがあるかどうか検証（３３０）される。残されたデータが無ければフィルター処理は完了する。
【００７７】
フィルターにかけられるべきデータがパケットに残っている場合、現状状態が検証される（３３１）。現状状態がリクエストデータは廃棄されることを指示する場合には、パケットのリクエストデータの最大値まで廃棄されるとともに、さらに任意の残りのデータ（３３０）の有無を検証するよう予定される（３３２）。同様にして、リクエストデータが受取られかつアプリケーションセグメントまで搬送されなくてはならない場合には、パケットのリクエストデータの残り部分は搬送が予定される。すべての搬送されたデータはチェックサム計算、タイムスタンプおよびパケットヘッダーの検証（３３３）が1回だけなされなくてはならないと同時に、無効パケットは直ちに廃棄される（３３６）。
【００７８】
現在の状態が新たなリクエストの始まりを示す時、個別のアプリケーションフィルターがデータのターゲットと検証結果を反映させるため更新される現状状態を決めるために起動（３３４）される。フィルトレーションコードが十分なデータの不足のためリクエストターゲットを決定出来ない場合には、無秩序に到着したデータを保持する再組立のキューからすぐ次の任意のデータと組合せられる。それでも尚、十分なデータがない場合には、残りのデータは再組立のキューの中に入り、十分なデータが到着するまでチェックが繰り返される。その代わり、十分なデータが見つかった場合には段階３３０がデータにフィルターをかけるため繰り返される。
【００７９】
データ入力の応答
複数端点への原子的データ搬送が必要とされる場合、受信データ用の応答がすべての端点がデータを積極的に受信した場合にだけ送信されるターゲット端点はデータを受領すると、ＴＣＰ順でデータの受領を示すバス上にＩＡＣＫ信号を送信する。アクティブsendHeadは、すべての必要とされるノードが個別のデータを受信したかどうかを検証した後に、ＴＣＰ仕様毎に適切な場合にはＴＣＰ  ＡＣＫセグメントをピアグループに送信する。
【００８０】
接続上のデータ出力
あるグループの複数端点はＴＣＰ順でデータを転送できる。従って、連続したシーケンスナンバーは転送されるべきデータのセグメントに割り当てられる必要がある。端点からのリクエスト／レスポンスの区別の混乱を避けるためには転送されるデータの一貫性の維持も必要である。この目的のため、完全な各リクエスト／レスポンスデータは転送ノードによって１レコードとして取り扱われる。
【００８１】
図４を参照すると、アプリケーション処理がデータ（３８５）を書き込む場合、新たな転送レコードが作られる（３８６）。ピアに送信されるその他の仲介データがないまま1以上の書き込みリクエストデータが送信されなくてはならない場合には、ＭＯＲＥＴＯＣＯＭＥフラグが最後の書き込みに達するまで設定される。転送ノードがすでにアクティブsendHead（３８７）でない場合には、それ以前までのリクエストが応答されるかあるいは保留されない限り、アクティブsendHead向けのリクエストがＲＥＱＳＨ信号で送信される。アクティブsendHead状態がノード（３８９）に宛てられたＧＲＡＮＴＳＨ信号とともに到着すると、ＧＲＮＴＳＨからの最新情報で更新した後にアクティブsendHeadが引受けられるとともに、アクティブsendHead（３８７）が繰り返されるかどうかがチェックされる（３８８）。
【００８２】
アクティブsendHeadになった後、送信すべきデータがあるノードはシーケンシャルオーダーのレコードに新規の転送シーケンスナンバーを割り当てるとともに、転送が開始される（３９０）。転送される（３９１）書き込み操作の延長上にこれ以上のデータが予想されないとともに、転送シーケンスナンバー（３９２）で割り当てられるのを待つレコードがこれ以上ないか、あるいは転送の最大値が制限を越える（３９３）場合には、任意（３９４）の待ちがある場合、アクティブsendHeadが隣のリクエストしているノードにグラントされる。
【００８３】
次のsendHeadをグラントするノードはＲＥＱＳＨリクエスター、最高優先度のＲＥＱＳＨリクエスター、ラウンドロビン、あるいは任意のアプリケーション個別のスキームのリストから数字的に時計廻りで最も近いノードIDでノードを選別して決定される。しかしながら、さらに多くの転送レコードがシーケンスナンバーの割当てを待っている場合には、ステップ３８７が残りデータの送信とともに繰り返される。
【００８４】
アクティブsendHead割当て
図５aを参照すると、アクティブsendHead割当て向けのスキームがここでは説明される。
ノード（１００a）はアクティブsendHeadの役割をリクエストするＲＥＱＳＨ（１０５r）信号を送信するとともに、アクティブsendHead（１００c）はリクエスターに必要な状態情報付きでＧＲＡＮＴＳＨ（１０５t）信号とともに該役割をグラントする。ＲＥＱＳＨ信号はノード１００a、によって送信され、ノード１００bはアクティブsendHeadでないＲＥＱＳＨを無視する。リクエストの時点でアクティブsendHeadであるノード１００cは、sendHeadがグラントされるのは自由であるので１００aリクエストにＧＲＡＮＴＳＨ信号で応答する。
【００８５】
ＧＲＡＮＴＳＨ信号を受領すると、リクエストしているノード１００aはアクティブsendHeadを引き受ける。ＧＲＡＮＴＳＨ信号にはグループによって維持されるだけの保留中のリクエスターのリストが含まれる。ノード１００bはＧＲＡＮＴＳＨ信号１０５tを検証すると、アクティブsendHeadに関するそれ自身のリクエストがひょっとして応答されたかどうかを信号の保留中のリクエスターリストを検証することによってチェックする。応答されている場合はＲＥＱＳＨ信号の再転送が止められる。
【００８６】
ノードがアクティブsendHeadを他方にグラントする場合、これに転送されるべきアウトスタンディングデータがあれば、追加リクエスト信号を避けるためにそれ自体がリクエスターのリストに加えられる。すべてのノードにＲＥＱＳＨのような信号を送信することに対する代案は、これらをアクティブsendHeadノードのようなターゲットに直接送信することである。この方法の利点は効果的なバンド幅の利用法であるが、位置のトランスペアレント性に欠ける。
【００８７】
図５bを参照すると、ＲＥＱＳＨ信号がアクティブsendHeadノード（５５１）上に到着する場合でかつ、もしsendHeadがグラントされる（５５３）ようにならない場合には、リクエスターIDはリクエスター（５５４）のリストに入れられる。しかしながら、sendHeadがグラントされる場合にはＧＲＡＮＴＳＨ信号はあるリクエスターに宛てて送信される（５５５）。ＧＲＡＮＴＳＨは、アウトスタンディングリクエスターの入ったリストに関するすべてのアウトスタンディングＲＥＱＳＨ向けの応答信号として機能する。他にグラントせずにＲＥＱＳＨの受領を応答するためには、sendHeadが自身にグラントする。ＧＲＡＮＴＳＨがターゲットノードに到着する場合、リクエスターのリストはリクエスターのローカルリストに追加される。ＧＲＡＮＴ信号は、再転送を除くsendHeadグラントの各インスタンス向けに単調にシーケンスIDナンバーを１だけ増やして割当てることによってシーケンスがとられる。
【００８８】
グループ内ＴＣＰタイムスタンプとラウンドトリップタイム（ＲＴＴ）計算
大半のＴＣＰ実行はＲＦＣ  １３２３に従う。これにはタイムスタンプを利用するラウンドトリップタイムを測定する方法が規定されている。ラウンドトリップタイムは通常、リアルタイムのホストから応答されたデータサーバのタイムスタンプを引き算して測定される。ラップアラウンドシーケンスナンバーにより無効なパケットを特定するためには、仕様としては単調に増加するタイムスタンプが必要である。
【００８９】
様々なハードウェアタイマーの様々なタイプの数多くのノードに関する仕様を満足させることは興味をそそるものである。理想的な解決策は完全に時間がシンクロナイゼーションされたノードであるが、これはベストを尽くしても困難である。ある実施例では、タイムスタンプを単調に増やす仕様要件は、データが送信されるノード上での時間とデータが最後に送信されたノードの時間とのシンクロナイゼーションがなされることによって満たされる。このシンクロナイゼーションにより、データが前回のTCPデータセグメントのタイムスタンプと等しいかあるいはより高いタイムスタンプ値で常に送信されることが保証される。
【００９０】
スキームの実行例がここで与えられる。ノードは固定間隔でその数値を増加させるハードウェアクロックで実行されるリアルタイム、すなわち、通常は「ローカル時間」を維持する。グループ域内リアルタイムクロック、すなわち、「バスタイム」はノードによる各TCF接続に対して実行されなくてはならない。任意のノード上の「バスタイム」は［バスタイム］＝［ローカルタイム］−［ベースタイム］として計算される。
【００９１】
ベースタイムはバスコントローラによって最初に選択されるとともに、そこで計算される任意の数値にできる。ノードがアクティブsendHeadでグラントされる時はいつでも、グランターのバスタイムがGRANTSH信号とともに送信される。アクティブsendHeadでグラントされたノードは、GRANTSH信号の受領時に、下記に発表されるようにそのバスタイムが調整される。
【００９２】
バスタイムが、アクティブsendHeadで受信されたグランターのバスタイムより小さい場合は［バスタイム］＝［グランターバスタイム（すなわち、GRANTSH信号からのバスタイム）］となる。
【００９３】
ノードに関するバスタイムはGRANTSH転送遅れのため上記の公式で完全にシンクロナイゼーションを取ることができなくても、タイムスタンプ値を単調に増やす要件を満足させる。送信されたタイムスタンプのグラニュラリティより高いバスタイムのグラニュラリティを選択することによって、ノードによる同時平行の再転送中に競合するタイムスタンプによるエラーが減少する。タイムスタンプが１０ミリセコンドのグラニュラリティがあるとともに、バスタイムが1マイクロセコンドのグラニュラリティをもつ場合の1例として、エラー要因は１から1万分の１に減少する。精確なラウンドトリップの計算のために、転送時のベースタイムがsendHeadによって転送レコードの中に記入される。信号待ち時間を最小にする要因とするため、一定の時間値がGRANTSHターゲットノードにおけるグランターのバスタイムに追加される。バスタイムをタイムスタンプとして利用して、パケットのラウンドトリップタイムは［ラウンドトリップタイム］＝［バスタイム］−［タイムスタンプ］として計算される。
【００９４】
グループのTCPウインドー更新
ウインドーはある端点がメモリにデータを受け付けることの可能なデータ量である。2端点のみを持つ従来のTCPでは、最適な性能を発揮するときのその数値に関して両端点で容易に合意が得られる。複数の端点が関与する場合には、異なるメモリサイズおよび予測不可能なデータターゲットを持つ各端点が最適な利用と性能を果たすことが決定的に重要である。
【００９５】
ここで説明されるのはグループ域内の単一バーチャルウインドーサイズがグループ内の有効なウインドー管理用に利用されている場合のスキームである。sendHeadはグループを代表するウインドー情報についてピアグループの更新に責任をもつ。グループノードは当初はバーチャルウインドーサイズで割り当てられる。ノードは搬送されたばかりのアプリケーションによって読み込まれるデータの入力シーケンスナンバーを送信することによって、アクティブsendHeadに対してウインドーを更新する。アクティブsendHeadはグループ域内バーチャルウインドーサイズからアプリケーションに渡されるアウトスタンディングデータ量を差し引いて得られるウインドーに関するピアグループを更新する。
【００９６】
ウインドー更新はウインドー更新信号の数を減少させるようIACK信号でピッギーバック輸送される。ウインドー更新信号とTCPセグメントの数をさらに減少させるには、バーチャルウインドーだけでなく保留されたウインドーサイズは維持される。いつでも、これらのウインドーの合計に達するデータはグループによって応答されるためにアウトスタンディングであることが可能である。あるノードが保留されたウインドー以下のサイズのデータのIACK応答受領を送信するとともに、すべての先行するデータがアプリケーションによって読み込まれた場合、IACKシーケンスに匹敵する更新データがあたかもこれだけのデータ量がアプリケーションによって読み込まれたかのように利用される。ウインドー更新はIACKによってなされるので、そうでない場合に必要とされる追加のウインドー更新信号はこれにより避けられる。この技術やオプションで設定されるかあるいは設定し直しがなされる。
【００９７】
図６を参照すると、応答されなかった入力シーケンスは６１０で指示されるとともに、６２０はピアグループ６１９にパブリシティされるよう期待される最大データのシーケンスナンバーを指示する。６１９は1回のウインドー更新が送信される可能性のある最大保留ウインドーシーケンス値までを示す。６１１、６１２，６１３、６１４はノード１００a、１００ｃ、１００b、１００cによってそれぞれ受信されたデータのウインドーシーケンスを示す。６１５は、ピアグループによって送信の可能性がある総量データである。６１７と６１８はこれらが６１１と６１２に関して送信するIACKとともに、ノード１００aと１００cによって送信されるウインドー更新を示す。最大告知ウインドーは６２１によって示されるとともに、最大保留ウインドーは６２２によって示される。
【００９８】
グループTCPでラップアラウンドされたシーケンスに対する保護
１０ギガビットのイーサネット（登録商標）のような高速ネットワークでは、TCPの現状３２ビットシーケンスナンバーは短時間の間ラップアラウンドする。シーケンスナンバーがラップアラウンドすることによって、IACKのような遅れた信号は、シーケンスナンバーがデータ入力を応答するために利用される場合には間違って有効と見なされることもある。我々は32ビットTCPシーケンスナンバーが、接続の開始以降、歪んだ32ビットシーケンスナンバーを多数回考慮する６４ビットTCP値にマップされる場合のスキームを利用する。グループ内で利用される６４ビットシーケンス値はピアと一緒に利用される場合の３２ビットまで戻ってマップされる。
【００９９】
32ビットシーケンスをマップするために、我々は６４ビットシーケンスを最小シグニフィカント32ビットがピアと一緒にアクティブに利用されるTCPシーケンスを表す２つの３２ビット値に分割した。高次32ビットは接続が開始された以降、多数回ラップアラウンドされたシーケンスを数える。６４ビット値を32ビットシーケンスナンバーにマップするためには、最小シグ二フィカント32ビットが利用される。ある代替え実施例ではオーバーヘッドが同じかもしれないが、IACKがシーケンスされる。
【０１００】
アプリケーションセグメントインスタンスとレプリカ
セグメントの複数のインスタンスはノード間の負荷の分散をさらに可能にする。
レプリカセグメント内の負荷はフィルターに関連してラウンドロビン、負荷最小化、ハッシング化、類似性ベース等といったスキームを利用するセグメントにリクエストを搬送することによって共有されることが可能である。
【０１０１】
セグメントのレプリカはエラー許容性を可能にする。万一、入力中にレプリカが失敗した場合、残りのレプリカがあれば中断なくサービスを続ける。これは入力の一貫したビューを維持するレプリカによって実行される。セグメントコントローラは原子的入力搬送を伴うレプリカ同士の一貫性を可能にする。新たなセグメントコントローラはエラー発生後に選抜されて良い。
【０１０２】
レプリカがデータの転送中にエラーとなる場合には、残りのレプリカが接続を中断することなくサービスを続けることが可能である。各レプリカは出力インスタンスと一致するとともに、sendHead状態は転送が始まるまでは共有される。各レプリカはメモリならびにピアグループによって応答されるデータを解放する。
【０１０３】
各アプリケーションセグメントは維持するレプリカの数を選択するのは自由である。セグメントコントローラとして動的に選抜されるノードは、セグメントIACKを形成するレプリカIACKを調整する。セグメントコントローラの選抜はラウンドロビン、負荷最小化、ハッシング化、あるいは静的ノードで、でもベースにすることが可能である。接続の確立、終了、ウインドー管理などすべては、前述で説明された対応するスキームに関連してここで説明された通りに作動する。セグメントレプリカがある入力セグメントの受領と一致する場合のすべてのケースでコントローラはレプリカを代表して応答する。負荷がコピーと対抗されるセグメントインスタンス同士で均衡する場合には、コントローラの関与は不要にして良い。
【０１０４】
レプリカがデータを受信する場合。入力データの受領を指示するIACKを送信する。レプリカからのIACKを監視するセグメントコントローラが送信順で入力が受信されるすべてのレプリカを決定する場合、セグメントを代表してIACKを送信するとともに、クライアントACKを起動させる。このIACKはデータをアプリケーションソケットに渡すかあるいは原子的に必要な何らかの措置を取るレプリカに対する応答として作動する。セグメントコントローラの選抜は、リクエスト毎のラウンドロビンあるいは最小レプリカIDを伴うものと同様に選定レプリカに対して静的である。
【０１０５】
グループ対グループ通信に基づかれたノード
図７aを参照すると、これは汎用計算機の部分図であり、本発明の要素を実施するために適する要素である。ここではグループ対グループ通信スタックは該システムのプロセッサによって実行される。
【０１０６】
主CPUをオフロードするグループ対グループ通信
図７bを参照すると、ある計算機の区分図であり、ある要素の処理から主プロセッサをオフロードする間、本発明の要素を実施するために適する要素である。グループ対グループ通信スタックはそのプロセッサ自身にあるアダプターカードに対してオフロードされる。
【０１０７】
集積回路上のグループ対グループ通信
図７cを参照すると、これはある計算機の区分図で、主プロセッサが本発明の専用のハードウェア／アクセラレータ  集積チップに対するある要素の処理からオフロードする間の本発明の要素の実施に適する要素である。そうでない場合に主CPUによって必要とされる大半のオフロードは、グループ対グループ通信スタックを全体的あるいは部分的に実行させることによる。
【０１０８】
図８を参照すると、本発明向けの代替え実施例が図示されている。この実施例では、ハードウェア装置が単一TCP接続端点を複数端点にレプリカする。ノードグループは８０２によって示される。接続（８０１）には入力ストリーム８２６ならびに出力ストリーム８２５がそれぞれある。装置（８２０）は、ここでは、ノード８００a,b,cに対し外部にある。各サーバノードには同じ接続８０１の接合端点８０１a,b,cがある。装置８２０は単一接続８０１をノード８００上の３つの端点（８０１a,b,c）にレプリカする。装置８２０にはポート８１９がピアサービスの接続に連結されている一方で4ヶ所のポート８１６、８１７、８１８、８１９がある。この装置はエラーの可能性のある単一点であると同時にエキストラネットワークホップを追加する。
【０１０９】
図９を参照すると、２つのデータセグメント９１０と９１１が2ヶ所のノード９０２と９０４に搬送されなくてはならないクライアントグループとサーバグループとの間の原子的データの搬送と応答スキームが示されている。９０１はクライアントグループを表すとともに、９０２，９０３、９０４，９０５および９０６はサーバグループノードを表す。９１０と９１１はクライアントグループ９０１によって送信されるTCPデータセグメントを表す。９１０と９１１はすべてのサーバグループノードで潜在的に利用可能であるが、プログラムされる可能性のあるこのインスタンスの入力フィルターリングシステムによって決定される通りにノード９０２と９０４に搬送されるだけに過ぎない。参照コード９１２はサーバグループのsendHead９０３からクライアントグループに送信されるTCP  ACKセグメントを表す。データセグメント９１０が到着すると、TCP  ACKセグメントは全く送信されないが、第2データセグメントが到着するとACKセグメントは、代替えのパケットが応答されなくてはならない場合に、TCP仕様によるサーバグループによってクライアントに送信される。プレックスコントローラ９０２は必要とされるプレックス／レプリカ９０４における同一データセグメントの応答を指示する９１３PIACK（プレックスIACK）信号を受領する場合のみ原子的搬送を指示するIACK信号９１４を送信する。９０２は、前記データの原子的搬送を指示するIACKを送信する責任をもつコントローラであるのでPIAKを送信しない。sendHeadのある９０３はIACK信号９１４を受信するとTCP  ACKセグメント９１２をクライアントグループに送信する。代替えTCPセグメントの到着時にクライアントACKセグメントを送信するだけでなく、ACKセグメントはオプションとしてすべての完全なリクエスト入力の最後に送信されても良い。また、クライアントACKセグメントはセグメントの到着の乱れ、セグメント待ち時間切れ等のような例外条件を検知すると送信されるので、クライアントとサーバグループはそのシンクロナイゼーションが取られるとともに、TCPセグメントが行方不明になると早急に再転送される。万一、サーバノードがPIACKを送信したIACKの受信に失敗すると、PIACKならびにアクティブsendHeadはノードに入るのを許可した入力データの最新のシーケンスを指示する別のIACKと応答する。
【０１１０】
図１０を参照すると、入力データは１本のバスの中でのように共有されるけれども、出力データが切替えられる場合の実施例のロジカルビューが図示されている。１０００はピアグループからの入力データストリームである。１０１０はイーサネット（登録商標）のような多重放送されるかあるいは共有される情報媒体の入力データのみが共有される場合のロジカルハーフバスである。１０２０、１０２１および１０２２はそれぞれノード１０３０、１０３１および１０３２に対するバス入力端点を表す。１０４０、１０４１、および１０４２はデバイス１０５０を切替えるレイヤー２あるいはレイヤー３  IPに供給される出力端点である。１０６０は入力１０００向けの作られるノード１０３０、１０３１および１０３２によって生み出される集合出力を表す。１０００および１０６０はそれぞれ単一接続の入力および出力を形成する。
【０１１１】
負荷の共有化と負荷の均衡化
次に、図１１を参照すると、本発明の実施例による対称型マルチコンピューティングシステムが図示されている。サーバグループ（１１１２）は数多くのノード１１００a,b,c,d,e,fから構成される。TCP接続（１１０９）の入力ストリーム（１１１０）にはグループノードにまたがる複数端点１１１０a,b,c,d,e,fがある。同様に、同一接続の出力ストリーム（１１１１）は端点１１１１a,b,c,d,e,fからなる。
【０１１２】
アプリケーションは全体グループにわたって各アプリケーションセグメント１１１３a,b、１１１４a,b、１１１５a,bに関して２つのインスタンスで実行する３つのセグメント（１１１３、１１１４、１１１５）からなる。通信システムをプログラミングすることによって、セグメント類はこれらの実行するオペレーション、これらが管理するデータのように基準に基づいた個々のタスクとともに搬送される。サービス用のリクエスト類の個別のサブセットが個々のアプリケーションのインスタンスに搬送されるようにデータ搬送を構成することによって、多くの場合、既存アプリケーションのコード変更をしないでもアプリケーションのセグメンテーションが実行される。アプリケーションは数多くの方法でセグメンテーション可能であり、その例類には、１セグメントが取扱い可能であるリクエストのタイプや種類、データ内容に基づくハッシングアルゴリズムあるいはシーケンス番号等のような接続情報に基づくセグメンテーションも含まれる。アプリケーションがセグメント類のプログラミングによって違うセグメントに分割されるといったこともささやかながら可能である。
【０１１３】
グループノードはレプリカ１１００a,b、１１００c,d、１１００e,fとして、ペアにされるので、各ペアがそれぞれアプリケーションセグメント１１１３、１１１４、１１１５の２つのインスタンスを実行させる。あるセグメント、例えば、１１００aがエラーとなると、ペア１１００bが中断なくサービスを続ける。転送中に、あるインスタンス、例えば１１００aにエラーが発生すると、他のインスタンス１１００bが残りの応答をサービスの中断を避けてピアに送信する。同様に、エラーに直面してサービスを続けるために利用可能である付加されたインスタンスに当然のエラー許容性が増すよう新たなアプリケーションセグメントインスタンスがグループに加えられても良い。これは、例えば、アプリケーションセグメントインスタンスを実行させるとともに、その後、グループにこれが付加される新たなプロセスを創ることによって、その結果、リクエストがこれに配分されて行われることができる。
【０１１４】
オペレーションのあるモードでは、グループの非エンプティサブセットがラウンドロビンのような特定の順番でリクエストとともに搬送されるとともに、リクエストはノード上の負荷を均衡させるよう前記非エンプティサブセット間に本質的に配分される優先順位の重み付けがされる。
【０１１５】
オペレーションのあるモードでは、1以上のレプリカが１タスクとともに搬送され、タスクの完了後、インスタンスからの結果が他のレプリカを考慮することなしに接続を通じて送信される。レプリカのオペレーションの別のモードでは、1以上のレプリカが同一タスクとともに搬送されて良い。関連するレプリカは、その後、平行にオペレーションを実行するとともに、結果を出す。グループ対グループ通信システムの出力ストリーム時にインストールされた出力フィルターが結果を比較するとともに、結果の単一のインスタンスがピアグループに送信され、これによって、該グループはピアグループに対し単一のエンティティとして見える。ピアグループに転送される出力インスタンスの選定は対等出力、多数決一致、正解あるいは正常オペレーション出力等のようなフィルターに設定される方針次第である。方針の選定はアプリケーション次第である。セグメントインスタンスの転送エラーがあると、レプリカが中断することなく転送を引継ぐとともに継続する。
【０１１６】
出力比較がノードによって生ずる様々な出力が指示される出力内容フィルターによって生ずる場合、レプリカのサブセットはエラーがあると見なされるとともに、残りの端点が接続の中断なしにサービスを続ける間は、接続にわたる以降のサービスから除外される。1端点の除外のある、ある実施例では、この除外は端点の大半が他を除外する結果と一致する場合のスキームに基づかれている。そうでない場合は、端点の除外はオペレーションにエラーがあった場合に起きることがある。端点の除外はフィルターでプログラム可能な特定スキームの任意のアプリケーションからであってもよい。
【０１１７】
オペレーションのさらに別のモードでは、レプリカはメモリあるいはストレージの変更データのような状態変更を生ずるオペレーションで搬送される。このように、レプリカ類は一貫した状態を維持する。読み込みオペレーションのようなレプリカ間の一貫性に影響しないオペレーションの場合、タスクは該レプリカの１インスタンスのみに搬送される。これにより、レプリカ間の負荷を均衡させることが可能となる。
【０１１８】
ノードの付加および退避
TCPグループ対グループ通信システムの接続端点におけるフィルターにより、データのアプリケーションセグメントへの搬送のきめの細かい制御が可能となる。動的にフィルターを構成することによって、一定のタスクが一定ノードに搬送され、ノードに対するタスクリクエストの搬送の外部制御が可能となる。その結果、アプリケーションセグメントへのリクエストストリームはノード間での細かいタスク分配のためのスイッチのように制御される。
【０１１９】
グループはいつでもノードとともに付加されて良い。新たに付加されたノードは既存の接続からの負荷を共有して良い。既存の接続に関しては、ノードがサービスに加わるとともに、そこに到着するタスクの受付を開始する。必要な場合には、ノード間の負荷はタスクの移動によって均衡が取られる。
【０１２０】
ノードの退避に関しては、ノードの負荷責任は、最低負荷化のようなスキームを利用して選択される別のラウンドロビンあるいはアプリケーション特有のスキームに移される。退避の間に、新たなタスクを受け付けない間、より小規模なタスクが完了するのを待ちながら、ノードは完全に解放される。処理時間の長いタスクが関係する場合には、システムレベルの処理移動のようなタスクの移動が利用される。スタックのようなアプリケーション処理の全体の前後関係のある処理の移動とともに、データオープンファイルが別のノードに明確に移動される。ノードはグループによって代表されるバーチャルエンティティのアドレスへの接続を創るグループの別のノードと通信する。これにより、グループノード間の通信向けの上述のすべての特徴が提供される。
【０１２１】
自動準備
システムにより変化するニーズを満足させるためにプールから自動的かつ動的にグループに対しリソースが付加される。同様に、ノードが退避されるとともに、動的かつ自動的に準備される。システムはクライアントに搬送されるサービスの品質を監視するとともに、リソースを付加したり退避させたりするサービスの具体的品質を維持する。オペレーションはシステム外部で実行可能であるとともに、ピアグループに対し潜在的にトランスペアレントである。この公開を読むと、技術に熟練した人々によう、本発明の公開された原理により単一接続上のグループ対グループ通信向けのさらに追加の代案の構造や機能の設計案が認められよう。従って、本発明の特定の実施例やアプリケーションが図示されかつ説明されてきた一方で、本発明はここで公開された精確な構造と構成要素に限定されないととともに、技術に熟練した人々にとって明らかであろう様々な修正案や変更案あるいは変型類が、付録の請求項に定められる本発明の精神と範囲を逸脱することなく、ここで公開された本発明の配置、オペレーションならび方法と装置の詳細においてなされて良いことが理解されるべきである。
【図面の簡単な説明】
【０１２２】
付随する図面と関連づけられる場合、本発明にはその他にも本発明の以下の詳細説明ならびに付録の請求項からさらに容易く明らかになる利点と特徴がある。
すなわち、
【図１ａ】本発明のある実施例に応じて構成された通信システムの全般図である。
【図１ｂ】本発明のある実施例による通信システムを図示する１区分図である。
【図１ｃ】本発明のある実施例による１通信システムの実行用のよりレベルの高い構成要素の構成の１区分図を示す。
【図１ｄ】本発明のある実施例による１通信システムの最適性能向けのよりレベルの低い構成要素の実行の１区分図を示す。
【図２】本発明のある実施例による１通信システムの実行用のよりレベルの高い構成要素のハードウェア構成の１区分図を示す。
【図３ａ】本発明のある実施例による１接続上の入力データ処理経路用の１ストリーム図を示す。
【図３ｂ】図３aの残り部分で、本発明のある実施例による１接続上の入力データ処理経路向けの１ストリーム図を示す。
【図３ｃ】本発明のある実施例による１接続上のインカミングデータにフィルターをかけるための１ストリーム図を示す。
【図４】本発明のある実施例によるノード内の公平性のため１回当たりの最大転送サイズを制限する間の１接続にわたる転送データ用の１ストリーム図を示す。
【図５ａ】本発明のある実施例によるアクティブsendHead割当て用の  リクエスト／グラントスキームの１区分図を示す。
【図５ｂ】本発明のある実施例によるsendHead用の  １リクエスト処理のための１ストリーム図を示す。
【図６】本発明のある実施例によるピアグループウインドーパブリシティ用のバーチャルウインドースキームを説明する１区分図を示す。
【図７ａ】は本発明のある実施例による通信システム用のコンピューティングシステムの１区分図を示す。
【図７ｂ】は本発明のある実施例によるメインプロセッサの負荷軽減が準備される通信システム用のコンピューティングシステムの１区分図を示す。
【図７ｃ】本発明のある実施例による専用ハードウェア／アクセラレーターチップにメインプロセッサの負荷軽減が準備される通信システム用のコンピューティングシステムの１区分図を示す。
【図８】本発明のある実施例による通信システムの代案である一般化図式を示す。
【図９】本発明のある実施例によるクライアントグループとサーバグループの間のデータ搬送と応答スキームを図示する。
【図１０】本発明のある実施例による実行のロジカルビューを図示する。
【図１１】本発明のある実施例によるエラー許容性、負荷配分、負荷分担ならびに単一システムイメージのある対称型マルチコンピューティングシステムの一般化図式である。
【図１ａ】
2007520093.tif 000003
【図１ｂ】
2007520093.tif 000004
【図１ｃ】
2007520093.tif 000005
【図１ｄ】
2007520093.tif 000006
【図２】
2007520093.tif 000007
【図３ａ】
2007520093.tif 000008
【図３ｂ】
2007520093.tif 000009
【図３ｃ】
2007520093.tif 000010
【図４】
2007520093.tif 000011
【図５ａ】
2007520093.tif 000012
【図５ｂ】
2007520093.tif 000013
【図６】
2007520093.tif 000014
【図７ａ】
2007520093.tif 000015
【図７ｂ】
2007520093.tif 000016
【図７ｃ】
2007520093.tif 000017
【図８】
2007520093.tif 000018
【図９】
2007520093.tif 000019
【図１０】
2007520093.tif 000020
【図１１】
2007520093.tif 000021
【国際調査報告】
2007520093.tif 000022
2007520093.tif 000023