説明

単一接続上のグループ対グループ通信とエラー許容対称型マルチコンピューティングシステム

原子的な多点搬送並びに多点転送を伴う2つのノードセット間で、信頼性がありかつ秩序化されたデータ通信が可能なシステムで、例えば、拡張TCD/IPがここでは記述される。複数ノードがデータと一緒に搬送される場合、搬送は原子的に実行される。1グループのノードを利用するエラー許容型かつ対称型のマルチコンピューティングが可能なシステムもここで説明される。信頼性のある秩序化されかつ原子的なグループ対グループTCP通信システムを利用するネットワーク化されたノードに関する対称なグループが、エラー許容性と単一システムイメージをクライアントアプリケーションに提供するのに利用される。クライアントとグループ間の通信は、任意標準のTCP/IP端点がグループと間断なく通信可能であるので標準準拠ベースである。処理負荷はアプリケーションセグメントへのトランスぺアレントなタスク分配により1グループのノード同士で分担される。本システムは1ヶ所のノードがエラーになる場合があっても、残りのレプリカがサービスや接続の中断なくサービスを続けるという点でエラー許容型である。


【発明の詳細な説明】
【技術分野】
【0001】
本発明はnが任意の整数値である場合のあるひとつのネットワークにおけるn対n点間のネットワーク通信に関する。
【関連技術の簡単な説明】
【0002】
最適なリソース利用、柔軟性ならびに管理コストの削減に関しては、産業界では、変化するニーズを満足させるために処理能力と記憶能力が必要に応じて付加可能であり、リソースが動的に準備される「ユーティリティコンピューティング」モデルに基づく解決策が求められている。従来のメインフレームによる解決策は高コストのため平均的な企業の手には届かない。数多くの高性能のものがあるが、低コストの「ブレードサーバ」と市場で入手できるネットワーク技術がある。しかしながら、これらのリソースを効率的かつ柔軟に集めるとともにユーティリティコンピューティングのニーズを満足させるアプリケーションを広範囲に実行させることの可能な解決策は、今日、存在しない。
【0003】
クライアントサーバパラダイムはクライアントがリクエストを出してサーバが応答するその容易さのため産業界で評判がよい。このパラダイムを可能にするためには、通信ネットワークのクライアントとサーバの間で利用される人気のある通信プロトコルは、転送制御プロトコル/インターネットプロトコルあるいは単純に、「TCP/IP」である。通信ネットワークでは、クライアント(あるいはクライアントシステムまたはマシン)はサーバ(あるいはクライアントシステムまたはマシン)を単独のロジカルホストまたはエンティティとして見る。単独のフィジカルサーバは数多くのクライアントに効率的にサービス不可能であることが度々ある。さらに、エラーを起こしたサーバによりクライアントはオペレーション不能となる。
【0004】
単独フィジカルサーバの欠点に取り組むため、クライアントにサービスする平行あるいはグリッド状に稼動する多くのサーバをかかえるクラスター構成が、負荷均衡装置を利用して開発された。これらの構成によりメインフレームに匹敵するエラー許容性、低コスト性、効率性ならびに柔軟性のような可能性のある恩恵が提供される。しかしながら、これらやその他の恩恵の大半はこれらに固有の限界ならびに多くのアプリケーションが構築可能な標準プラットフォームの不足により実現されないままである。
【0005】
フィジカルクラスタリングだけでなく従来のソフトウェアシステムもまたアプリケーションレベルやオペレーティングシステムレベルでもクラスタリングを導入する努力がなされてきた。しかしながら、このようなソフトウェア構成の欠点には、クラスタリングがこれらのアプリケーションが限定された利用法でアプリケーション成果に埋め込まれる場合のインスタンスが含まれる。同様に、オペレーションシステムレベルのクラスタリングは魅力的だが、これらの分野の従来の努力はバーチャル化されなくてはならない数多くの抽象化作業によりこれまで成功してこなかった。
【0006】
フィジカルサーバとソフトウェアアプリケーション、そしてオペレーティングシステムクラスタリングに比べて、ネットワークレベルクラスタリングではいかなる問題も被らないだけでなく、ある種魅力的な恩恵が提供される。例えば、単独のバーチャルエンティティとしてサーバノードのクラスターにアドレスする能力はクライアントサーバプログラミングに有益な要件である。さらに、ノードのプールでバーチャルクラスターを容易に創造する能力がより良い利便性とメインフレームクラスの柔軟性に付加される。
【0007】
従来のネットワークのレベルクラスタリングプラットフォームは、汎用的で広範なアプリケーションによる利用が可能でなくてはならない。これらのアプリケーションはウェブサーバ、記憶サーバ、データベースサーバ、科学的かつアプリケーショングリッドなコンピューティングにわたる。これらの従来型ネットワークレベルクラスターは計算能力とノード能力の結合が可能でなくてはならないので、アプリケーションは継ぎ目無しに徐々に規模が拡大する。既存のアプリケーションは最小の数あるいは変更で実行可能でなくてはならない。しかしながら、従来型ネットワークレベルクラスターは限られた成功しか収めてこなかった。
【0008】
「対称型マルチプロセッサ」(SMP)のアーキテクチャがある程度成功したのは、アプリケーションにとって処理と記憶の場所をトランスペアレントにしたバスの単純さのためである。クラスタリングに関してもまた、サーバノードを接続するバーチャルバスの簡明性によりノード位置のトランスペアレント性とノードIDのトランスペアレント性がもたらされる。しかしながら、このような従来型システムは、効率性のためにバスがクライアントアプリケーションによって直接、接続可能となる能力に欠ける。同様に、「ユーザーデータグラムプロトコル」(「UDP」)パケット放送ならびに多重放送をベースにしたバス類はデータ搬送の保証性に欠けアプリケーションレベルのクラスタリングが生じる。
【0009】
産業界で最も多く利用されている搬送保証のある唯一のプロトコルはTCP/IPである。搬送の保証性と遍在性が秩序化されたTCPデータ搬送の保証性により、これが特にバーチャル化に望ましいものとなる。しかしながら、接続当たりたった2つの端点のためのTCPのサポートによりその可能性が制限された。クラスターに対するインカミングリクエストを分配するような事前に割当されたタスク類のあるエレメント/ノード処理の非対称な構成により、生来的に柔軟性がないだけでなく、負荷の管理やバランスをとることが困難である。非対称型のノードはエラーやボトルネックとなる単一点であることが度々ある。MC(マルチコンピューティング)が成功するためには、非対称型ノード構成に対向して対称型の構成が必要である。
【0010】
クライアントサーバ環境の非対称性に伴うもうひとつの問題は待ち時間である。スイッチとルーターによりデータ通過の待ち時間を減らす専用のハードウェアが採用される。データがノードのUDP/TCP/IPスタックを通過しなくてはならない場合、レプリカと処理により相当な待ち時間が加わる。それ故、最適な性能を発揮させるためには、システムは非対称構成をもつ調整ノードを通るデータの通過を避けなくてはならない。しかしながら、サーバのノードのCPUが大量のネットワークトラフィックを取り扱わなくてはならない場合にはアプリケーションの処理量とその処理に苦しめられる。従って、従来型システムは専用のアダプターカードあるいは端点での待ち時間を減らすとともに、アプリケーション性能を改善する「集積回路」チップのようなハードウェアアクセラレーターを利用しなくてはならない。これによりシステムのコストと複雑性が増す。
【0011】
低コストのエラー許容性は多くの企業アプリケーションによって大いに望まれる。固定化された数の余分のハードウェア部品が利用される解決策により柔軟性不足、容易な修復能力の不足、そして複雑性によるより高いコストに苦しめられる。今日の解決策により、エラー発生後の待機サーバへのサービスの迅速な切替えによって高度な使い勝手がもたらされる。待機システムは受動的であるので、そのリソースは高コストを招くので利用されないだけである。レプリカによる最も単純でしかも強力なエラー許容性の形態では、1接続にわたるサービスはノードのエラーによる中断が無く続けられる。
【0012】
従来のクラスター上では、アクティブノードがタスクを実行するとともに受動ノードがその後の変更を更新する。多くのインスタンスにおいて、更新回数はクエリーのような他のタスクと比較してより少ない。マシンは、更新内容がレプリカに反映される間、負荷がすべてのレプリカと共有される場合に最大に利用される。レプリカの更新は同時に行われなくてはならないと同時に、一貫性のために同じ順番でなされなくてはならない。原子的搬送に関して、データはクライアントがデータの受取りを指示するTCP ACKで送られるまでにすべてのターゲット端点への搬送が保証される。レプリカのエラーの際には、残りのレプリカはエラー許容性に影響を与える接続の中断を回避しながらサービスの継続が可能である。非原子的レプリカは使い勝手に欠ける。具体的には、クライアントのリクエストがサービスのレプリカによって受け付けられる場合、それぞれによりある応答が生じる。クライアントがサーバを単独のエンティティとして見るので、応答の1インスタンスだけがクライアントに送り返されることが確保されなくてはならない。同様に、マルチクライアントレプリカが同一リクエストを送信しようとする場合、1インスタンスだけがサーバに送り出されることが確保されなくてはならない。従来のシステムでは原子性の提供に度々失敗するので、使い勝手と接続の中断を避けるエラー許容性に欠ける。
【0013】
従来のクラスタリングに伴うもうひとつの問題は負荷バランス調整である。任意のシステムに関して、ノード内に均等に負荷をバランスさせる能力は、最適なアプリケーション性能に必要である。しかしながら、従来のクラスタリングシステムでは、例えば、ラウンドロビン、内容再分割、優先順位重みづけといった負荷バランスの標準スキームのため、限られたサポートだけが提供される。さらに、多くの従来型クラスタリングシステムでは特定の負荷バランススキームのアプリケーションの実行サポートが不可能である。
【0014】
多くのサービスは時間に依存するクラスター中で非常に変化幅の大きい負荷レベルをもつ。ランニングプロセスがアクティブサーバを退避させるために移動の必要があることがある。従来型クラスターシステムは容易に実行されかつサービスの中断がないようにクラスターにノード/レプリカの追加あるいは移動するためのサポートに欠けることが度々である。
【0015】
ネットワークレベルのバーチャル化に取り組む数多くの試みがなされてきた。しかしながら、各試みにより未だに重大な欠点がいくつか生じている。例えば、ある従来型解決策は産業界で人気のある「ウェブサーバ」のクラスターにおける負荷均衡用装置である。米国特許番号6,006, 264号 および6,449, 647号に公開もされているこの負荷均衡装置は、インカミングクライアントTCP接続をサーバのプールにある、あるサーバに切替える。この処理用の従来型サーバはクライアントパケットをスイッチあるいはルーターによってすべてのノードに放送あるいは多重放送する「マイクロソフトのネットワーク負荷均衡ソフトウェアである。しかしながら、接続が一旦、マップされるとすぐ、同じサーバが1対1の従来型の関係のTCP接続の寿命のあいだ中、すべてのクライアントリクエストを取り扱う。
【0016】
上述のような従来型システムに伴う問題は、サービスに複数のノード上で実行する異なる複数のタスクが含まれる場合に、1接続の間にクライアントが要求するすべてのサービスを実行できないマップされたサーバが一つでも存在すればサービスエラーとなるので、完全な解決が提供できない点にある。この点により、ページを提供する1タスクだけが多くのノードに複製されるウェブページ提供サービスに対しては、このようなシステムの利用は制限される。さらに、1サーバに対して実行される外部装置の任意のマッピングがボトルネックとなるとともに、単一点がエラーとなる。おまけに、1接続が2ヶ所の端点だけをもつので複製がサポートされない。従って、このような単一端点のTCPに関しては、更新はレプリカ上に反映されないため、使い勝手について相当の制限がある。
【0017】
上記従来型システムの欠点のいくつかに取り組むため、別の従来型システムにより、1接続にわたるクライアントリクエストを異なるタスクを提供するノードに分散することが試みられた。ラヴィ・コック他はこの種の1システムをその論文「ハーフパイプアンカリング」で公開した。ハーフパイプアンカリングはバックエンドフォワーディングをベースとしている。このスキームにおいて、クライアントリクエストがサーバのクラスターに届く場合に、ある指定されたサーバがリクエストを受け付けるとともに、データの審査後、最適なサーバに転送する。最適サーバは、接続状態情報が与えられた後には、アドレスを最初のターゲットアドレスに合わせて変更してクライアントに直接、応答する。ここでは、単一のTCP端点がリクエストを分散するようノードに動的にマップされる。このスキームは仲介ノードがデータを妨害するとともにデータ内容に基づいてこれを分散するので「非対称的」方法の一例である。
【0018】
非対称的構成を行うことを試みるもうひとつの従来型システムは、EMICネットワーク社によって書かれた二冊の白書の中で公開されている。この従来型システムでは、指定されたノードはインカミングデータを妨害するだけでなく捕捉し、さらにその後、プロプライエタリープロトコルを利用してこれを多ノードに信頼できる形で搬送するためには1ノードだけがデータの転送を許されるとともに、データはその後これをクライアントに再転送するよう指定されたサーバに、まず転送されなくてはならない。ここでも、また、単一端点が動的にマップされるとともに、TCP接続は複製が始められる仲介ノードで終わる。このスキームにより、仲介ノードがデータを妨害すると同時に複製されるので「非対称的」方法のもうひとつの例である。
【0019】
上述の両方のスキームでは、端点は様々なノードにマップされることができるが、2端点というTCPの定義は維持される。これらの従来型スキームにおける複製はプロプライエタリープロトコルを利用してアプリケーションレベルで行われる。さらに、これらの従来型スキームでは選択ノード類がリクエストを分散するアプリケーションレベルルーターとして作動する非対称的ノード構成が採用される。しかしながら、このような非対称性により、アーロン他による「ネットワークサーバに基づくクラスター中のスケーラブルな内容意識リクエスト分布」で注記されるスケーラビリティ限界が生まれる。これらの限界には単一点エラー、データ総量ボトルネック、より長い待ち時間による準最適性能ならびに場所のトランスペアレント性不足が含まれる。
【0020】
従って、対称性システムとm対n接続(m、nは同じでも異なるものでもあって良い任意の整数)を提供するTCPの2端点の現状定義を利用するための方法の必要性がある。
【発明の開示】
【0021】
上記に言及された要件ならびにその他の要件はホスト対ホスト通信のTCPの現状範囲をグループ対グループ通信に拡張することによって、さらに詳しくは2接続端点の現状定義を対称に構成されるノードにかかる2グループの端点に拡張することによって満足される。このような各端点はTCPの秩序化された転送を維持する間に、独立にかつ平行して受信するとともに転送する資格がある。データは全グループあるいは構成に依存するサブセットに搬送される。必要なターゲット端点だけがTCPのACKがピアグループに送られるまでにデータを受取ることが必要とされる。
【0022】
ある実施例では、本発明により、1以上のIPアドレスを伴う単一のバーチャルエンティティとしてひとつのクラスターのノード群にアドレスすることが可能となる。クライアントグループとサーバグループ間の通信は、任意標準のTCP/IP端点が継ぎ目なしにグループとの通信が可能であるので標準に厳密に準拠されている。データはグループの対称に構成されたノードで終わる端点に原子的に搬送される。
【0023】
接続端点にインストールされたフィルターがアプリケーションセグメントに関係のない到来データをフィルターにかけて取り除く。アプリケーションセグメントのデータ搬送は適切に構成されるとともにインストールされるフィルターによって動的に制御される。さらに、フィルターはオプションとしてコピーを仲介させずにインカミングデータの投入をターゲットアプリケーションに直接実行する。
【0024】
1接続にわたる入出力はノードがお互いに独立して平行して受信できるとともに転送できるので結合が解かれる。すべての転送はTCP仕様毎にシーケンシャルであるとともに、ノード間の転送制御はグループノード同士のラウンドロビンあるいは転送リクエスト要因同士のラウンドロビンあるいはアプリケーション特有のスキームに準拠して秩序化される。ノードは平行して再転送可能であるとともにこれらの間で再転送するためのシンクロナイゼーションの追加は不要である。
【0025】
スケーラビリティならびに負荷分担については、アプリケーション機能はグループノードの中で分散される。これを行うためには、アプリケーションはロジカルにセグメント化されて、サブセットのアプリケーションがそれぞれ実行される。TCP接続に到着するインカミングリクエストはその後、効率的に負荷を分配するグループにあるセグメントまで搬送される。アプリケーションのインスタンスに対するリクエストの一定のセットのみを搬送することにより、ロジカルセグメンテーションがアプリケーションコードの変更無しでも実行可能となる。アプリケーションセグメントはノードからノードへと接続の中断無しに動的に移動されることもある。
【0026】
さらに、1ノードは該グループによって示されるバーチャルエンティティに対して1接続を創り出すことによってグループの他のノードと通信可能であることが注目される。この点によりグループノード間の通信に向けたすべての上記特徴が提供される。
【0027】
本システムはアプリケーションを実行するノードがエラーとなる場合、グループ内の残りのアプリケーションレプリカのあるセットが接続とサービス提供の中断をせずにサービス提供を続けるので、エラー許容性がある。ノードは、アプリケーションに対してトランスペアレントな方法で、サービスの一定品質を維持するために追加可能であるか、あるいはグループから動的に退避可能である。ノード間の負荷均衡をはかるか、あるいはノードを退避させる目的のためには、システムはトランスペアレントにアクティブサービスを移動させるとともにグループ内部でタスクの再分配を行う。
【0028】
ひとつのグループのノード群上で実行されるアプリケーション類は、クライアント/サーバアプリケーションプログラミング、ならびに、リソース管理を単純化する単一のバーチャルエンティティとして該グループの残りを見るとともに実行させることが可能である。本発明のある実施例によると、コード変更の必要が無いアプリケーションに対してトランスペアレントな方法で度々、グループノード上で独立して実行されるアプリケーションが1以上のセグメントに分割可能となる。
【0029】
該システムは様々なアプリケーションセグメントに1接続にわたるインカミングタスクを動的かつ分かりやすく分配することによって、1グループのノード同士で処理の負荷を分担する。1接続上に到着する単一リクエストは、結束して作動する複数のセグメントによってサービスされることがあり、ノード間の計算あるいは処理のよりきめの細かい分配を可能にする。該システムにより1セグメントのマルチインスタンスの並列実行が可能となる。リクエスト類は類推性に基づくラウンドロビン、負荷最小化ノード、類推準拠、コンテンツハッシングのようなスキームに基づいて選択されたインスタンスに搬送される。
【0030】
1接続上のインカミングリクエストはエラー許容性を求めて、複数のセグメントインスタンスまで原子的に搬送される。結果はオプションとして比較されるとともに、単一インスタンスが出力される。セグメント/ノードのエラーがあっても、残りのセグメントインスタンスが接続を中断することなくサービスを続ける。
【0031】
該システムにより接続端点でフィルターを制御しかつ構成する細かいグラニュラリティの方法でタスクを分散させることによって該システムの柔軟かつ外部的な管理が可能となる。退避される場合、ノードの負荷責任範囲はラウンドロビンあるいは負荷最小化あるいはアプリケーション専用のスキームを利用して別のノードに移動される。システムはリソースを変化するニーズを満たすプールからグループに自動的かつ動的に追加する。同様に、ノードは動的かつ自動的に退避されかつ準備される。システムは自動的かつ動的にリソースを付加するかあるいは退避させるサービスの個々の品質を維持する。
【0032】
本仕様書に説明される特徴と利点は必ずしもすべてを包括してはおらず、特に、図面、仕様書、そして請求項を見れば技術に普通に熟練した人にとって多くの追加の特徴なり利点なりが明らかとなろう。さらに、仕様書に利用される言語は主として読み易さと直感上の目的で選択されたものであって、発明のテーマ事項を描写したりあるいは制限するために選択されたわけではないことが注目されるはずである。
【0033】
本仕様書に説明される特徴と利点は必ずしもすべてを包括してはおらず、特に、図面、仕様書、そして請求項を見れば技術に普通に熟練した人にとって多くの追加の特徴なり利点なりが明らかとなろう。さらに、仕様書に利用される言語は主として読み易さと指示上の目的で選択されたものであって、発明のテーマ事項を描写あるいは制限するために選択されたわけではないことが注目されるはずである。
【本発明の詳細な説明】
【0034】
本発明には、例えばTCP/IPを拡張する原子的多点搬送ならびに多点転送を伴う2つのノードセット間で信頼性がありかつ秩序化されたデータ通信用に利用可能となったシステムが含まれる。本発明はグループ間のデータトラフィックに関するTCP仕様を維持する対称型のグループ対グループ通信が含まれる信頼性のあるホスト対ホスト通信のTCPの概念を拡張するものである。さらに、本発明は、現在、単一の接続にわたり通信中に少なくとも2つの端点グループが含まれるTCP接続の2端点の定義を拡張するものである。
【0035】
本発明では、接続の端点はグループノードで終わる。複数のノードがデータと一緒に搬送されなくてはならない場合には、搬送は原子的に実行される。複数のノードから発生するデータに関するオプションとしては、単一データインスタンスが転送される。さらに下記で説明されるように、各端点は独立して作動するreceiveHeadとsendHeadから構成される。
【0036】
はじめに
本発明のある実施例では、1ノードには、1ネットワークにつき1接続例えば、汎用目的の計算機、あるいは通信に関連したネットワーク向けのデータ処理装置と機能するよう構成されたマイクロプロセッサあるいはソフトウェアがあるその他の装置のようなデータ処理装置が含まれる。1グループは対称的に構成される1以上のノードの集まりを参照する。1アプリケーションセグメントは、アプリケーションあるいは様々なグループのノード上で実行される他のアプリケーションセグメントと関連してサービスされて良いアプリケーションのセグメントを参照する。1アプリケーションは、1以上のアプリケーションセグメントから構成されるとともに、1アプリケーションセグメントは1以上のプロセスから構成される。
【0037】
sendHeadはデータ転送を制御するとともにノードにおける転送状態を維持するTCP接続の転送端を参照する。receiveHeadは接続上のデータの受付を制御するとともにノードにおける受信状態を維持するTCP接続の受信端部を参照する。アクティブsendHeadは、例えば、データのシーケンスナンバーや最新応答のシーケンスナンバーといった最新の転送状態情報を持つよう意図されるsendHeadを参照する。
【0038】
バスコントローラは接続の確立ならびに終了プロセスをピアグループと調整するノードを制御する、および/または、参照する。1信号は1つのロジカルバスにわたるノードグループ内部で交換されるメッセージを参照する。信号のソースとターゲットが同じノード内にある場合、内部的にこれを受信する結果になることもあるが、信号は発信されない。1接続の端点は予め一致された1組のシーケンスナンバーに基づく順番にピアグループとデータを交換するTCPのようなスタックを参照する。1接続の端点は少なくとも1つの出力データストリームの始点ならびに入力データストリームの終点を持っている。1リクエストは、インカミングデータストリームの1選択セグメント、例えば、サービスのためのクライアントリクエストを参照する。
【0039】
システム概要
次に、図1aを参照すると本発明のある実施例による通信システムが図示されている。本通信システムには第1グループ120と第2グループ160間を結合するTCP接続130が含まれる。例を通じて、第1グループ120には第1、第2そして第3のメンバーノード、100a、100b。100cがあるとともに、第2グループ160には第1および第2のメンバーノード、150x、150yがある。どちらのグループのメンバーノードにも各ノードには1TCP接続に対して等しいアクセスがあるとともに、独立してかつ平行して実行されるので対称に構成される。第1データストリーム110および第2データストリーム111は、通信システムの第1グループ120と第2グループ160間を流れることが可能である。
【0040】
第1アプリケーションセグメント135および第2アプリケーションセグメント136により120上のサーバアプリケーションが構成される。第1アプリケーションセグメント135にはレプリカ135x、135yの1セットがあるとともに、第2アプリケーションセグメント136にもまた、レプリカ136y、136xの1セットがある。アプリケーションセグメントレプリカ135x、135yはそれぞれノード100aおよび100b上で実行される一方、アプリケーションセグメントレプリカ136x、136yはそれぞれノード100bおよび100c上で実行される..。グループ160におけるクライアントアプリケーションはレプリカ151aおよび151bを伴うアプリケーションセグメント151から構成される。
【0041】
第1グループ120のアプリケーションセグメント135および136は第2グループ160のセグメント151と接続130上で通信する。該接続130の2つのデータストリーム110および111はTCPプロトコルに従う。接続130には第1グループ120において3ヶ所の異なる接続端点130a、130b、130cが、また同一接続上のグループ160においては2ヶ所の異なる接続端点130x、130yがあって良い。
【0042】
各グループ120、160はインターネットプロトコル(「IP」)アドレス121、161のそれぞれのグループに割り当てられる。グループはノードが構成される間、互いを単一エンティティとみなす。2つのグループ120、160間の通信はお互いにグループIPアドレス121、161を通じて相互にアドレスされる。例えば、セグメント151からのリクエストが第1グループ120に届く場合に、これはグループIPアドレス161から来るデータとして見られる。同様に、第2グループ160はグループアドレス121までターゲットされるデータを送信する。
【0043】
第1グループ120における端点130a、130b、130cは、1以上のアプリケーションセグメントレプリカ135a、135b、136a、136bがインカミングリクエストと共に搬送されるように、設定されることができる。データが異なる方針によってアプリケーションセグメントに搬送される例は、すべてのレプリカ、1レプリカ、すべてのアプリケーションセグメントおよび選択アプリケーションセグメントであり、リクエスト内容に基づかれたり、ラウンドロビンリクエスト分配に基づかれたり、個別ノードに対するマップリクエストをマップするハッシングスキームや優先順位の重み付け等に基づかれて決定されルーターゲットである。このスキーム修正(「書き込み」)では、リクエストはアプリケーションセグメントのすべてのレプリカに搬送される一方で、「読み込み」リクエストはひとつだけの選定レプリカにのみ搬送される。
【0044】
第2グループ160における130xあるいは130yのいずれかの端点はサーバグループ120にリクエストを送信できる。第1グループ120の端点130a、130b、130cにおける1以上のsendHeadは、設定に依存するデータを受信する。1グループ120の端点130a、130b、130cは、第2グループ160の端点130x、130yにおいて受信される返信データを送信できる。インカミングデータの一部あるいはすべてを受信することを望むアプリケーションプロセスは、データの受領についてクライアントの応答前にこれを受信したことが保証される。データ転送のTCPのシーケンシャルオーダーを維持するために、TCPシーケンスナンバーはデータ転送が始まるまでにシーケンシャルオーダーで割り当てられる。
【0045】
オプションとして、第2グループ160のレプリカ151aおよび151bによって出力された写しのデータは、通信システムによって第1グループ120に転送されるために単一のインスタンスに縮小される。同様にして、第1グループ120のアプリケーションセグメント135、136のレプリカの出力もまた、同じものに縮小可能である。多くの場合、リクエストは設定に応じて1つのレプリカのみ搬送されるので、135a、135b、136a、136bのレプリカが出力を必ず生じなくてはならないという必要は必ずしもない。
【0046】
本発明による通信システムはクライアント/サーバリクエストならびに原子的である有益な応答を提供する。つまり、これらは、2グループにわたる複数処理を可能にすることにより単一接続上でデータを送受信して、バイトのひとつの連続したシーケンスとして送信あるいは受信されるものである。
【0047】
グループ120と160との間のプロトコルはTCPであるとともに、データは従来のTCP毎として送信されたシーケンシャルオーダーで搬送されるよう保証される。複数端点にターゲットされた場合、データはクライアントがデータの受領を指示するTCP ACKセグメントで送信されるまでにすべてのターゲット端点に搬送されることが保証される。オプションとして、レプリカ出力が単一コピー出力の転送に縮小されなくてはならない場合、すべてのノードが同じデータを出力してもデータは転送されるので出力は原子的であることが保証される。しかしながら、結果が一致しない場合には、アプリケーションは多数決一致あるいは正解あるいは正常な結果等に基づいて転送する出力をオプションとして選択して良い。
【0048】
アプリケーションセグメンテーションに関して、アプリケーション処理は、通常、処理用にはインカミングデータストリームの選択部分だけを伴って搬送される。例えば、第2データストリーム111上に届くリクエストはアプリケーションセグメントを選択するために搬送可能である。アプリケーション処理までのデータの搬送順序はこれがRFC793によって指定された通りに送信された順序であるよう保証されなくてはならない。すなわち、一定のデータがあるアプリケーションセグメントに搬送されるまでに、ストリームに到着したすべての先行データがそのターゲット端点まで正常に搬送されなくてはならない。
【0049】
図1bを参照すると、第1グループ120は第1、第2および第3ノード100a、100b、100cから構成される。第1グループ120と第2グループ160との間の接続130にはアウトゴーイングおよびインカミングデータストリーム110、111がある。各ノード100aから100cまでにはグループ対グループ通信スタック130a、から130cまでがそれぞれある。ノードのすべてに対するデータの搬送はノード100aから100cまでとそれぞれ結合されるスイッチ141a、から141cまでを通る。イーサネット(登録商標)のような普及しているハードウェア技術は信頼性がないので、ベースとなるハードウェアによるスイッチ141a、から141cまでに対する搬送保証に関してはいかなる想定もなされない。100a、から100cまでの各ノードあるいはそのサブセットのいずれかまでのデータの搬送は選択的であって良いか、あるいはベースとなるハードウェア装置によっては、搬送は全く不可能である。
【0050】
インカミングデータは、IPアドレス、および/または、ポートに準拠して、スイッチ141a、から141cまでによって正規のTCP/IPスタック140a、から140cまで、あるいはグループ対グループ通信スタック130a、から130cまでのいずれかに切替えられる。ノード100のアプリケーション処理142は標準のTCPスタック140を利用して通信する。アプリケーションセグメント135x、y、136x、yはグループ通信スタック130a、から130cまでとそれぞれ通信する。搬送制御信号105がグループ131の操作を調整するとともに制御する。コントロールバス105上で送信される信号の範囲は第1グループ120に限定される。バーチャルバス143は第1および第2データストリーム110、111およびグループ120をスパンキングする制御信号105から構成される。このバスはピアグループによってTCP接続130に直接、接続される。
【0051】
バーチャルバス143の代替えはノード間の点対点通信であるとともに、これにはバンド幅のより好都合な利用法がある。しかしながら、これにより、他のノードならびにこれらのアドレスや役割を見失わないため通信システムに各ノードが必要となる。ある実施例では、ロジカルバスモデルは場所とIDのトランスペアレント性のため制御メッセージを出すことよりも好まれる。
【0052】
図1cを参照すると、本発明のある実施例による接続端点130aが図示されている。一般的に、スイッチ141は標準TCPスタックあるいはグループ対グループ通信スタックか「インターネットプロトコル」(「IP」)のどちらかに入力171データを向ける。フラグメント化されたIPパケットについては、170が171に移される前に再アセンブリーを実行する。入力パケットがフラグメント化されない場合には、いくつか基本的な一貫性チェックの後に入力内容フィルター171に直接渡されることができる。入力内容フィルター171は、これにアプリケーションセグメント(例えば、135x、135yあるいは136x)に渡されるデータが含まれるかどうか決定するために入力内容、および/または、パケットヘッダーを調べる。
【0053】
通信システムがパケットをもうどこにも渡さないよう決定する場合は、何の措置もなく廃棄されると同時に、いずれのメモリも解放される。そうでない場合は、入力内容フィルター171はアプリケーションに渡されるパケットのセグメントにマークを付ける。パケットはその後、チェックサム計算やその他の一貫性チェックが含まれる完全な認証のためにIP入力処理レイヤー172に渡される。無効なパケットはいずれもそれ以上の処理はされずに廃棄される。発生するパケットはその後、グループ対グループTCPレイヤー173に渡される。グループ対グループTCPレイヤー173は、グループノード(例えば、120,160)と調整するとともに、ピアグループに対する応答のようなTCP仕様要件を満足させるためデータの受領を制御する。グループ対グループTCPレイヤー173は接続の入力TCP状態を維持するとともに、データ経路137を通じてデータをソケットに渡す。データ経路138はソケットインターフェイスからスタックに転送データ経路を指示する。
【0054】
ユーザーソケットは出力内容フィルター174を起動させるデータを送信する。ある実施例では出力内容フィルター174はインストールされないので、操作は実行されない。エラー許容性に関するフィルターは同時にデータを他のレプリカセグメント出力と突き合わせるとともに単一の出力インスタンスを転送する。ピアグループに転送される出力インスタンスの選択は対等出力、多数決一致、正解、あるいは正常操作出力および同様のようなフィルターに設定される方針に依存する。セグメントインスタンスの転送にエラーがあると、レプリカが引継ぐとともに、接続を中断することなく転送を継続する。ピアグループにおける正常な出力インスタンスの受付において、レプリカはデータを廃棄するとともに、メモリを解放する。出力内容フィルター174はデータを転送のためグループTCP出力レイヤー175に渡す。グループTCP出力レイヤー175はデータ転送を制御するとともに、グループノードに関連する転送状態を維持する。グループTCP出力レイヤー175はTCPによって規定される通りのシーケンシャルオーダーでデータをピアグループに転送するそのグループノードとともに作動する。グループTCP出力レイヤー175は転送データとともにIP出力レイヤー176を通る。IP出力レイヤー176はデータに関する標準IP機能を実行するとともに、データ転送のためデバイスドライバー177に引き渡す。
【0055】
出力内容フィルター174による出力突き合わせ結果がノードによって異なって生じる結果を示す場合、サブセットのレプリカがエラーと見なされるとともに、残る端点では接続の中断なしにサービスが続けられる一方で、以降、接続上のサービスから除外される。端点の除外のある、ある実施例では、このような除外は過半数の端点が他を除外する結果と一致するスキームに準拠している。代案としては、端点の除外はオペレーションにエラーがあった場合には生じても良い。端点の除外はまた、フィルターとともにプログラム可能である任意のアプリケーションの特定スキームからのものであることもあり得る。データの転送中に端点のエラーがあると、レプリカの端点が接続の中断なく転送を終わらせることがある。
【0056】
図1dを参照すると、本発明のある実施例に応じて、コンテンツプロセッサが入出力データを調べる場合のグループ対グループ通信スタックの接続端点130が図示されている。コンテンツフィルトレーションはコンテンツプロセッサの関数である。コンテンツプロセッサはアプリケーションメモリ中でデータが置かれなければならない場所、全部のリクエストが受信されるようにアプリケーションに知らせるためのデータの順序ならびに時間を決定する。ネットワークインターフェースデバイスドライバー177と連動して作動し、データはダイレクトメモリアクセスコントローラ196によって、ネットワークインターフェース193とアプリケーションメモリ190との間でコピーされる。
【0057】
新たなインカミングリクウェストデータを調べて、コンテンツプロセッサはアプリケーションスペースにおいてメモリ192を割り当てる。割当てサイズはアプリケーション毎に個別であり、通常は、ピアからの完全なリクエストデータのサイズである。リクエストデータが残ることにより、完全なリクエスト用のメモリが割り当てられたとしても割当ては必要とならない。出力データ193はアプリケーション自身によって割り当てられる。さらに、リクウェスト/レスポンスデータ194、195のセグメントのコピーがあっても良い。このスキームに関して、アプリケーションデータは、関連するメモリのコピーを介することなく、ネットワークインターフェースの入力/出力バッファーとアプリケーションメモリ間で直接コピーされる。
【0058】
図2を参照すると、第1グループ120はノード100(100a,b,c)が含まれるサーバのセットであって良い。第2グループ160はクライアントノード150(150x,y)のセットが含まれて良い。各グループ120、160内のノード100、150は接続デバイス180を経由して相互に接続される。接続デバイス180には通常放送/多重放送デバイス、例えば、イーサネット(登録商標)バスあるいはレイヤースイッチ2/3が含まれて良い。ネットワーク189は任意の従来型ネットワーク、例えば、2つのノードグループが接続されるローカルエアリアネットワーク(「LAN」)あるいはイーサネット(登録商標)であって良い。両方のピアグループが接続デバイス180を経由して直接接続される場合にはネットワーク189は不要である。
【0059】
ある実施例では、サーバノード100a,b,cにおいて1以上のネットワークインターフェースポート185a,b,cが含まれる通信システムが図2に図示されている。通信リンク187a,b,cおよび188a,b,cはデバイス180をノード100と接続する。接続端点130を経由して到着する入力データは、多重放送あるいは通常放送の能力、そのレイヤー2あるいはレイヤー3を利用して接続デバイス180によって188a,b,cに複製される。到着データはポート185a、185b,185cに搬送される。180あるいは関連するハードウェアポートあるいはリンクによるデータ搬送の保証はない。187a、187b,187cを経由して第1グループ120によって転送されるデータは、相互に独立しているので、並列に動作する。187a、187b,187cを経由してピアグループに転送されるデータは、120には必ずしも見えない。接続130上のインカミングデータに関してはロジカルバス105上で送信される信号がデバイス180によってリンク188a、188b、188cに複製される。図1bのロジカルバス105に送信されるデータはサーバノード100a、100b、100cには見えない。
【0060】
信号
本発明のある実施例では、信号にはグループ共通の接続ID情報があって良い。さらに、信号にはまたソースならびにターゲットのID情報があっても良い。ターゲットID情報は1以上のノードであって良く、あるいはグループ全体であっても良い。
【0061】
本発明のある実施例では、通信システム内の信号には、グループを代表するピアからの応答入力データ、入力応答信号であるIACK信号が含まれて良い。IACKにはピアグループから期待されるバイトデータを残して、応答されたシーケンスナンバー、ウインドー更新シーケンスナンバー、最新かつ最大のタイムスタンプおよび受信するアクティブsendHeadがピアグループTCP ACKに送信しなければならない場合に指示するPUSHフラグが含まれることができる。REQSH信号には、1リクエストが含まれるとともに、これはアクティブsendHeadをターゲットにした最新のsendHead割当てを要請できる。ターゲットアドレスはグループ全体であって良い。
【0062】
GRANTSH信号にはアクティブsendHead状態情報、バス時間、そのGRANTSHが応答されたノードリスト、ならびに最も直近に知られたIACK情報のあるメッセージが含まれる。この信号のターゲットは状態情報の更新後にアクティブsendHeadを引き受ける。IACKSEG信号にはセグメントを代表して送信される入力データ応答情報が含まれる。これにはIACK信号と同じか類似の情報があって良い。REQJOIN信号は接続を越えたサービスにつなげるリクエストをするアプリケーションセグメントに送信される。LEAVE信号は接続上のアプリケーションセグメントのサービスを離れる許可をリクエストして送信される。
【0063】
ACKLEAVE信号は接続上のサービスを離れるアプリケーションに許可を与える。RESET信号は接続をリセットするリクエストをするために送信される。CLOSE信号はアプリケーションセグメントによって接続の出力ストリームを閉じるリクエストをするために送信される。ACKCLOSE信号はCLOSEリクエストの受領を応答する。
【0064】
接続の確立と終了
従来型のTCP状態図が知られている。「図示されたTCP/IP第1巻および第2巻」と題するリチャード・スチーブンスによる本にこの状態図を説明するストリーム図が示されかつ説明されているが、その内容がここで参照して組込まれている。さらに、TCP/IPプロトコルならびにオプションはRFC'793、および RFC 1323にも検討されており、その関連する部分がここに参照して組込まれている。
【0065】
接続の確立と終了中に、あるノードは処理を調整かつ制御するとともにグループを代表してピアグループと通信するバスコントローラとして作動するよう選ばれる。デフォルトで、静的バスコントローラが選ばれるが、アプリケーションプログラムは必要に応じてオプションとしてバスコントローラを選択する。バスの制御によりグループメンバーのノードに負荷を分散するためには、バスコントローラの機能はラウンドロビンのようにノードに割り当てられることができるか、あるいはまた、バスコントローラがインカミングシーケンスナンバーの刻み値あるいはソースのIPアドレス/ポートのアドレス組合せに基づいて動的に選択されても良い。最低限のIDを伴うセグメントがバスコントローラの役割を引き受ける場合のスキームでは、セグメントのレプリカが入手可能な時にバスコントローラ責任がレプリカ同士でラウンドロビン様に割り当てられる。
【0066】
一般的に、TCPでは接続操作に4つのタイプがある。各タイプは状態変化に関して様々な設定に従う。グループがピアグループと接続を始める場合に、接続処理がピアグループによって開始される一方で、アクティブ起動として参照され、パッシブ開始として参照される。同様に、接続の終了がグループによって開始される場合は、アクティブ終了として参照されるとともに、終了がピアグループによって開始される場合にはパッシブ終了として参照される。
【0067】
パッシブ接続の確立
パッシブ開始については、ピアグループからシンクロナイゼーション(「SYN」)リクエストの到来があると、バスコントローラはアプリケーションセグメントに接続サービスにつなぐようリクエストするREQJOIN信号を送信する。バスコントローラは、その後、これが受信されると、SYN向けACK(応答)とともにSYNリクエストでピアグループに応答する。ピアグループがグループを代表して送信されたSYNリクエストに応答する時、アプリケーションセグメントが実行されるグループノードがIACKSEGと応答する。すべての必要とされるグループノードが接続サービスにIACKSEG信号でつながった時に、接続が確立されたと見なされるとともにデータの移送が開始可能となる。
【0068】
アクティブ接続の確立
アクティブ開始においては、あるグループから開始された接続のために、バスコントローラはREQJOIN信号をグループノード群に向けて送信する。その後、これがグループを代表してYSNリクエストを送信してピアグループと接続処理を開始する。グループノード群は、バスコントローラSYN用のACKでピアグループからあるYSNリクエストを受領すると、ピアグループから有効なACKの受領を指示するIACKSEGを送信する。必要とされるノードからIACKSEGを受領すると、バスコントローラはピアグループからSYNリクエスト用のACKを送信すると同時に、接続が確立されたと見なされる。
【0069】
パッシブ接続の終了
パッシブの終了については、ピアグループからFINセグメントを受領すると、ノードはFINの受領を指示するIACKSEG信号を送信する。リクエストされたすべてのセグメントからIACKSEGが受信される場合、バスコントローラは受信されたFIN(完了した)用のACKでピアグループに応答する。ノードはデータの送信を完了した時、接続を離れる希望を指示するLEAVE信号を送信する。FINの受領後、すべてのグループノードからLEAVEリクエスト信号が受信された時、バスコントローラはピアグループにFINリクエストを送信する。バスコントローラはACKLEAVE信号を送信するとともに、その受領とともに、信号ノードのターゲットはCLOSED状態に入る。送信されたFINリクエスト用ACKが到着すると、バスコントローラはCLOSED状態に入る。
【0070】
アクティブ接続の終了
アクティブ終了において、アプリケーションセグメントは、データの送信を完了させると同時に接続を切断したい時には、CLOSE信号を送信する。すべてのグループノードからCLOSEリクエストを受領すると、バスコントローラはFINリクエストをピアグループに送信する。ピアグループからFINリクエストを受領すると、ノードはLEAVEリクエストを送信する。グループノードからLEAVE信号ならびに送信されたFIN用ACKが受信される時、バスコントローラはTIME_WAIT状態に入る。
【0071】
接続上のデータ入力
図3aを参照すると、データパケットは、ノードに到着する時、パケットがグループアドレスに宛てられているかどうかチェックされる(311)。もし、そうであってかつパケットがTCPのフラグメントであれば、TCPセグメントの最後のフラグメントが到着すると完全なTCPセグメントを生じるフラグメントの再組立操作(314)が実行される。多くの場合、TCPセグメントはフラグメント化されないので、この操作は起きない。
【0072】
TCPセグメントがあるグループに宛てられない時は、その後、標準TCP/IPスタックは以降の処理のためにTCPセグメントとともに引き継がれる(312)。
【0073】
図3bを参照すると、グループのreceiveHeadは、データを受領するとフィルター(315)を起動させると同時にノード上のアプリケーションに宛てられたデータがあるかどうかを検証する(316)とともにアプリケーションに関係のないデータは廃棄する。フィルターをかけた後に生ずるデータパケットはタイムスタンプの有効性、チェックサムの有効性、ならびにその他TCP/IPパラメーター(317)の有効性の有無がチェックされる。すべての無効なパケットは直ちに廃棄される。receiveHeadは調べたすべての有効なパケットを反映させるため状態を更新する。チェックサムおよびその他の詳細パケットを実行することによって、フィルターをかけた後の検証が廃棄されたパケットの余分な計算負荷を回避する。
【0074】
受信されたデータに先行するデータのすべてが適切なアプリケーションセグメントに搬送された(320)と保証されるかどうか、この直後に続く任意のデータがアプリケーションセグメントに引き渡されるかどうかが検証される(318)のはそれからである。TCP ACKセグメントは仕様毎に必要ならばピアのグループに送信される。しかしながら、データの応答を保留する先行データがある場合にはデータは応答待ちのキューとなる(319)。
【0075】
セグメントインスタンスがデータの受領中にエラーとなる場合には、いずれの残りのインスタンスも受付と応答制御を続ける。これにより、アプリケーションは、ノードのエラーで中断することなくサービスを続けることが可能となる。
【0076】
データのフィルトレーション
図3cを参照すると、receiveHeadは入力データの状態をあたかもリクエストが無視され、アプリケーションに引き渡されているかのように維持し、新たなリクエストの始まりにはターゲット等を決定するために続くデータが必要となる。1パケットには1以上のリクエストあるいは部分的リクエストデータが含まれても良いので、パケットに処理されるべき残りのデータがあるかどうか検証(330)される。残されたデータが無ければフィルター処理は完了する。
【0077】
フィルターにかけられるべきデータがパケットに残っている場合、現状状態が検証される(331)。現状状態がリクエストデータは廃棄されることを指示する場合には、パケットのリクエストデータの最大値まで廃棄されるとともに、さらに任意の残りのデータ(330)の有無を検証するよう予定される(332)。同様にして、リクエストデータが受取られかつアプリケーションセグメントまで搬送されなくてはならない場合には、パケットのリクエストデータの残り部分は搬送が予定される。すべての搬送されたデータはチェックサム計算、タイムスタンプおよびパケットヘッダーの検証(333)が1回だけなされなくてはならないと同時に、無効パケットは直ちに廃棄される(336)。
【0078】
現在の状態が新たなリクエストの始まりを示す時、個別のアプリケーションフィルターがデータのターゲットと検証結果を反映させるため更新される現状状態を決めるために起動(334)される。フィルトレーションコードが十分なデータの不足のためリクエストターゲットを決定出来ない場合には、無秩序に到着したデータを保持する再組立のキューからすぐ次の任意のデータと組合せられる。それでも尚、十分なデータがない場合には、残りのデータは再組立のキューの中に入り、十分なデータが到着するまでチェックが繰り返される。その代わり、十分なデータが見つかった場合には段階330がデータにフィルターをかけるため繰り返される。
【0079】
データ入力の応答
複数端点への原子的データ搬送が必要とされる場合、受信データ用の応答がすべての端点がデータを積極的に受信した場合にだけ送信されるターゲット端点はデータを受領すると、TCP順でデータの受領を示すバス上にIACK信号を送信する。アクティブsendHeadは、すべての必要とされるノードが個別のデータを受信したかどうかを検証した後に、TCP仕様毎に適切な場合にはTCP ACKセグメントをピアグループに送信する。
【0080】
接続上のデータ出力
あるグループの複数端点はTCP順でデータを転送できる。従って、連続したシーケンスナンバーは転送されるべきデータのセグメントに割り当てられる必要がある。端点からのリクエスト/レスポンスの区別の混乱を避けるためには転送されるデータの一貫性の維持も必要である。この目的のため、完全な各リクエスト/レスポンスデータは転送ノードによって1レコードとして取り扱われる。
【0081】
図4を参照すると、アプリケーション処理がデータ(385)を書き込む場合、新たな転送レコードが作られる(386)。ピアに送信されるその他の仲介データがないまま1以上の書き込みリクエストデータが送信されなくてはならない場合には、MORETOCOMEフラグが最後の書き込みに達するまで設定される。転送ノードがすでにアクティブsendHead(387)でない場合には、それ以前までのリクエストが応答されるかあるいは保留されない限り、アクティブsendHead向けのリクエストがREQSH信号で送信される。アクティブsendHead状態がノード(389)に宛てられたGRANTSH信号とともに到着すると、GRNTSHからの最新情報で更新した後にアクティブsendHeadが引受けられるとともに、アクティブsendHead(387)が繰り返されるかどうかがチェックされる(388)。
【0082】
アクティブsendHeadになった後、送信すべきデータがあるノードはシーケンシャルオーダーのレコードに新規の転送シーケンスナンバーを割り当てるとともに、転送が開始される(390)。転送される(391)書き込み操作の延長上にこれ以上のデータが予想されないとともに、転送シーケンスナンバー(392)で割り当てられるのを待つレコードがこれ以上ないか、あるいは転送の最大値が制限を越える(393)場合には、任意(394)の待ちがある場合、アクティブsendHeadが隣のリクエストしているノードにグラントされる。
【0083】
次のsendHeadをグラントするノードはREQSHリクエスター、最高優先度のREQSHリクエスター、ラウンドロビン、あるいは任意のアプリケーション個別のスキームのリストから数字的に時計廻りで最も近いノードIDでノードを選別して決定される。しかしながら、さらに多くの転送レコードがシーケンスナンバーの割当てを待っている場合には、ステップ387が残りデータの送信とともに繰り返される。
【0084】
アクティブsendHead割当て
図5aを参照すると、アクティブsendHead割当て向けのスキームがここでは説明される。
ノード(100a)はアクティブsendHeadの役割をリクエストするREQSH(105r)信号を送信するとともに、アクティブsendHead(100c)はリクエスターに必要な状態情報付きでGRANTSH(105t)信号とともに該役割をグラントする。REQSH信号はノード100a、によって送信され、ノード100bはアクティブsendHeadでないREQSHを無視する。リクエストの時点でアクティブsendHeadであるノード100cは、sendHeadがグラントされるのは自由であるので100aリクエストにGRANTSH信号で応答する。
【0085】
GRANTSH信号を受領すると、リクエストしているノード100aはアクティブsendHeadを引き受ける。GRANTSH信号にはグループによって維持されるだけの保留中のリクエスターのリストが含まれる。ノード100bはGRANTSH信号105tを検証すると、アクティブsendHeadに関するそれ自身のリクエストがひょっとして応答されたかどうかを信号の保留中のリクエスターリストを検証することによってチェックする。応答されている場合はREQSH信号の再転送が止められる。
【0086】
ノードがアクティブsendHeadを他方にグラントする場合、これに転送されるべきアウトスタンディングデータがあれば、追加リクエスト信号を避けるためにそれ自体がリクエスターのリストに加えられる。すべてのノードにREQSHのような信号を送信することに対する代案は、これらをアクティブsendHeadノードのようなターゲットに直接送信することである。この方法の利点は効果的なバンド幅の利用法であるが、位置のトランスペアレント性に欠ける。
【0087】
図5bを参照すると、REQSH信号がアクティブsendHeadノード(551)上に到着する場合でかつ、もしsendHeadがグラントされる(553)ようにならない場合には、リクエスターIDはリクエスター(554)のリストに入れられる。しかしながら、sendHeadがグラントされる場合にはGRANTSH信号はあるリクエスターに宛てて送信される(555)。GRANTSHは、アウトスタンディングリクエスターの入ったリストに関するすべてのアウトスタンディングREQSH向けの応答信号として機能する。他にグラントせずにREQSHの受領を応答するためには、sendHeadが自身にグラントする。GRANTSHがターゲットノードに到着する場合、リクエスターのリストはリクエスターのローカルリストに追加される。GRANT信号は、再転送を除くsendHeadグラントの各インスタンス向けに単調にシーケンスIDナンバーを1だけ増やして割当てることによってシーケンスがとられる。
【0088】
グループ内TCPタイムスタンプとラウンドトリップタイム(RTT)計算
大半のTCP実行はRFC 1323に従う。これにはタイムスタンプを利用するラウンドトリップタイムを測定する方法が規定されている。ラウンドトリップタイムは通常、リアルタイムのホストから応答されたデータサーバのタイムスタンプを引き算して測定される。ラップアラウンドシーケンスナンバーにより無効なパケットを特定するためには、仕様としては単調に増加するタイムスタンプが必要である。
【0089】
様々なハードウェアタイマーの様々なタイプの数多くのノードに関する仕様を満足させることは興味をそそるものである。理想的な解決策は完全に時間がシンクロナイゼーションされたノードであるが、これはベストを尽くしても困難である。ある実施例では、タイムスタンプを単調に増やす仕様要件は、データが送信されるノード上での時間とデータが最後に送信されたノードの時間とのシンクロナイゼーションがなされることによって満たされる。このシンクロナイゼーションにより、データが前回のTCPデータセグメントのタイムスタンプと等しいかあるいはより高いタイムスタンプ値で常に送信されることが保証される。
【0090】
スキームの実行例がここで与えられる。ノードは固定間隔でその数値を増加させるハードウェアクロックで実行されるリアルタイム、すなわち、通常は「ローカル時間」を維持する。グループ域内リアルタイムクロック、すなわち、「バスタイム」はノードによる各TCF接続に対して実行されなくてはならない。任意のノード上の「バスタイム」は[バスタイム]=[ローカルタイム]−[ベースタイム]として計算される。
【0091】
ベースタイムはバスコントローラによって最初に選択されるとともに、そこで計算される任意の数値にできる。ノードがアクティブsendHeadでグラントされる時はいつでも、グランターのバスタイムがGRANTSH信号とともに送信される。アクティブsendHeadでグラントされたノードは、GRANTSH信号の受領時に、下記に発表されるようにそのバスタイムが調整される。
【0092】
バスタイムが、アクティブsendHeadで受信されたグランターのバスタイムより小さい場合は[バスタイム]=[グランターバスタイム(すなわち、GRANTSH信号からのバスタイム)]となる。
【0093】
ノードに関するバスタイムはGRANTSH転送遅れのため上記の公式で完全にシンクロナイゼーションを取ることができなくても、タイムスタンプ値を単調に増やす要件を満足させる。送信されたタイムスタンプのグラニュラリティより高いバスタイムのグラニュラリティを選択することによって、ノードによる同時平行の再転送中に競合するタイムスタンプによるエラーが減少する。タイムスタンプが10ミリセコンドのグラニュラリティがあるとともに、バスタイムが1マイクロセコンドのグラニュラリティをもつ場合の1例として、エラー要因は1から1万分の1に減少する。精確なラウンドトリップの計算のために、転送時のベースタイムがsendHeadによって転送レコードの中に記入される。信号待ち時間を最小にする要因とするため、一定の時間値がGRANTSHターゲットノードにおけるグランターのバスタイムに追加される。バスタイムをタイムスタンプとして利用して、パケットのラウンドトリップタイムは[ラウンドトリップタイム]=[バスタイム]−[タイムスタンプ]として計算される。
【0094】
グループのTCPウインドー更新
ウインドーはある端点がメモリにデータを受け付けることの可能なデータ量である。2端点のみを持つ従来のTCPでは、最適な性能を発揮するときのその数値に関して両端点で容易に合意が得られる。複数の端点が関与する場合には、異なるメモリサイズおよび予測不可能なデータターゲットを持つ各端点が最適な利用と性能を果たすことが決定的に重要である。
【0095】
ここで説明されるのはグループ域内の単一バーチャルウインドーサイズがグループ内の有効なウインドー管理用に利用されている場合のスキームである。sendHeadはグループを代表するウインドー情報についてピアグループの更新に責任をもつ。グループノードは当初はバーチャルウインドーサイズで割り当てられる。ノードは搬送されたばかりのアプリケーションによって読み込まれるデータの入力シーケンスナンバーを送信することによって、アクティブsendHeadに対してウインドーを更新する。アクティブsendHeadはグループ域内バーチャルウインドーサイズからアプリケーションに渡されるアウトスタンディングデータ量を差し引いて得られるウインドーに関するピアグループを更新する。
【0096】
ウインドー更新はウインドー更新信号の数を減少させるようIACK信号でピッギーバック輸送される。ウインドー更新信号とTCPセグメントの数をさらに減少させるには、バーチャルウインドーだけでなく保留されたウインドーサイズは維持される。いつでも、これらのウインドーの合計に達するデータはグループによって応答されるためにアウトスタンディングであることが可能である。あるノードが保留されたウインドー以下のサイズのデータのIACK応答受領を送信するとともに、すべての先行するデータがアプリケーションによって読み込まれた場合、IACKシーケンスに匹敵する更新データがあたかもこれだけのデータ量がアプリケーションによって読み込まれたかのように利用される。ウインドー更新はIACKによってなされるので、そうでない場合に必要とされる追加のウインドー更新信号はこれにより避けられる。この技術やオプションで設定されるかあるいは設定し直しがなされる。
【0097】
図6を参照すると、応答されなかった入力シーケンスは610で指示されるとともに、620はピアグループ619にパブリシティされるよう期待される最大データのシーケンスナンバーを指示する。619は1回のウインドー更新が送信される可能性のある最大保留ウインドーシーケンス値までを示す。611、612,613、614はノード100a、100c、100b、100cによってそれぞれ受信されたデータのウインドーシーケンスを示す。615は、ピアグループによって送信の可能性がある総量データである。617と618はこれらが611と612に関して送信するIACKとともに、ノード100aと100cによって送信されるウインドー更新を示す。最大告知ウインドーは621によって示されるとともに、最大保留ウインドーは622によって示される。
【0098】
グループTCPでラップアラウンドされたシーケンスに対する保護
10ギガビットのイーサネット(登録商標)のような高速ネットワークでは、TCPの現状32ビットシーケンスナンバーは短時間の間ラップアラウンドする。シーケンスナンバーがラップアラウンドすることによって、IACKのような遅れた信号は、シーケンスナンバーがデータ入力を応答するために利用される場合には間違って有効と見なされることもある。我々は32ビットTCPシーケンスナンバーが、接続の開始以降、歪んだ32ビットシーケンスナンバーを多数回考慮する64ビットTCP値にマップされる場合のスキームを利用する。グループ内で利用される64ビットシーケンス値はピアと一緒に利用される場合の32ビットまで戻ってマップされる。
【0099】
32ビットシーケンスをマップするために、我々は64ビットシーケンスを最小シグニフィカント32ビットがピアと一緒にアクティブに利用されるTCPシーケンスを表す2つの32ビット値に分割した。高次32ビットは接続が開始された以降、多数回ラップアラウンドされたシーケンスを数える。64ビット値を32ビットシーケンスナンバーにマップするためには、最小シグ二フィカント32ビットが利用される。ある代替え実施例ではオーバーヘッドが同じかもしれないが、IACKがシーケンスされる。
【0100】
アプリケーションセグメントインスタンスとレプリカ
セグメントの複数のインスタンスはノード間の負荷の分散をさらに可能にする。
レプリカセグメント内の負荷はフィルターに関連してラウンドロビン、負荷最小化、ハッシング化、類似性ベース等といったスキームを利用するセグメントにリクエストを搬送することによって共有されることが可能である。
【0101】
セグメントのレプリカはエラー許容性を可能にする。万一、入力中にレプリカが失敗した場合、残りのレプリカがあれば中断なくサービスを続ける。これは入力の一貫したビューを維持するレプリカによって実行される。セグメントコントローラは原子的入力搬送を伴うレプリカ同士の一貫性を可能にする。新たなセグメントコントローラはエラー発生後に選抜されて良い。
【0102】
レプリカがデータの転送中にエラーとなる場合には、残りのレプリカが接続を中断することなくサービスを続けることが可能である。各レプリカは出力インスタンスと一致するとともに、sendHead状態は転送が始まるまでは共有される。各レプリカはメモリならびにピアグループによって応答されるデータを解放する。
【0103】
各アプリケーションセグメントは維持するレプリカの数を選択するのは自由である。セグメントコントローラとして動的に選抜されるノードは、セグメントIACKを形成するレプリカIACKを調整する。セグメントコントローラの選抜はラウンドロビン、負荷最小化、ハッシング化、あるいは静的ノードで、でもベースにすることが可能である。接続の確立、終了、ウインドー管理などすべては、前述で説明された対応するスキームに関連してここで説明された通りに作動する。セグメントレプリカがある入力セグメントの受領と一致する場合のすべてのケースでコントローラはレプリカを代表して応答する。負荷がコピーと対抗されるセグメントインスタンス同士で均衡する場合には、コントローラの関与は不要にして良い。
【0104】
レプリカがデータを受信する場合。入力データの受領を指示するIACKを送信する。レプリカからのIACKを監視するセグメントコントローラが送信順で入力が受信されるすべてのレプリカを決定する場合、セグメントを代表してIACKを送信するとともに、クライアントACKを起動させる。このIACKはデータをアプリケーションソケットに渡すかあるいは原子的に必要な何らかの措置を取るレプリカに対する応答として作動する。セグメントコントローラの選抜は、リクエスト毎のラウンドロビンあるいは最小レプリカIDを伴うものと同様に選定レプリカに対して静的である。
【0105】
グループ対グループ通信に基づかれたノード
図7aを参照すると、これは汎用計算機の部分図であり、本発明の要素を実施するために適する要素である。ここではグループ対グループ通信スタックは該システムのプロセッサによって実行される。
【0106】
主CPUをオフロードするグループ対グループ通信
図7bを参照すると、ある計算機の区分図であり、ある要素の処理から主プロセッサをオフロードする間、本発明の要素を実施するために適する要素である。グループ対グループ通信スタックはそのプロセッサ自身にあるアダプターカードに対してオフロードされる。
【0107】
集積回路上のグループ対グループ通信
図7cを参照すると、これはある計算機の区分図で、主プロセッサが本発明の専用のハードウェア/アクセラレータ 集積チップに対するある要素の処理からオフロードする間の本発明の要素の実施に適する要素である。そうでない場合に主CPUによって必要とされる大半のオフロードは、グループ対グループ通信スタックを全体的あるいは部分的に実行させることによる。
【0108】
図8を参照すると、本発明向けの代替え実施例が図示されている。この実施例では、ハードウェア装置が単一TCP接続端点を複数端点にレプリカする。ノードグループは802によって示される。接続(801)には入力ストリーム826ならびに出力ストリーム825がそれぞれある。装置(820)は、ここでは、ノード800a,b,cに対し外部にある。各サーバノードには同じ接続801の接合端点801a,b,cがある。装置820は単一接続801をノード800上の3つの端点(801a,b,c)にレプリカする。装置820にはポート819がピアサービスの接続に連結されている一方で4ヶ所のポート816、817、818、819がある。この装置はエラーの可能性のある単一点であると同時にエキストラネットワークホップを追加する。
【0109】
図9を参照すると、2つのデータセグメント910と911が2ヶ所のノード902と904に搬送されなくてはならないクライアントグループとサーバグループとの間の原子的データの搬送と応答スキームが示されている。901はクライアントグループを表すとともに、902,903、904,905および906はサーバグループノードを表す。910と911はクライアントグループ901によって送信されるTCPデータセグメントを表す。910と911はすべてのサーバグループノードで潜在的に利用可能であるが、プログラムされる可能性のあるこのインスタンスの入力フィルターリングシステムによって決定される通りにノード902と904に搬送されるだけに過ぎない。参照コード912はサーバグループのsendHead903からクライアントグループに送信されるTCP ACKセグメントを表す。データセグメント910が到着すると、TCP ACKセグメントは全く送信されないが、第2データセグメントが到着するとACKセグメントは、代替えのパケットが応答されなくてはならない場合に、TCP仕様によるサーバグループによってクライアントに送信される。プレックスコントローラ902は必要とされるプレックス/レプリカ904における同一データセグメントの応答を指示する913PIACK(プレックスIACK)信号を受領する場合のみ原子的搬送を指示するIACK信号914を送信する。902は、前記データの原子的搬送を指示するIACKを送信する責任をもつコントローラであるのでPIAKを送信しない。sendHeadのある903はIACK信号914を受信するとTCP ACKセグメント912をクライアントグループに送信する。代替えTCPセグメントの到着時にクライアントACKセグメントを送信するだけでなく、ACKセグメントはオプションとしてすべての完全なリクエスト入力の最後に送信されても良い。また、クライアントACKセグメントはセグメントの到着の乱れ、セグメント待ち時間切れ等のような例外条件を検知すると送信されるので、クライアントとサーバグループはそのシンクロナイゼーションが取られるとともに、TCPセグメントが行方不明になると早急に再転送される。万一、サーバノードがPIACKを送信したIACKの受信に失敗すると、PIACKならびにアクティブsendHeadはノードに入るのを許可した入力データの最新のシーケンスを指示する別のIACKと応答する。
【0110】
図10を参照すると、入力データは1本のバスの中でのように共有されるけれども、出力データが切替えられる場合の実施例のロジカルビューが図示されている。1000はピアグループからの入力データストリームである。1010はイーサネット(登録商標)のような多重放送されるかあるいは共有される情報媒体の入力データのみが共有される場合のロジカルハーフバスである。1020、1021および1022はそれぞれノード1030、1031および1032に対するバス入力端点を表す。1040、1041、および1042はデバイス1050を切替えるレイヤー2あるいはレイヤー3 IPに供給される出力端点である。1060は入力1000向けの作られるノード1030、1031および1032によって生み出される集合出力を表す。1000および1060はそれぞれ単一接続の入力および出力を形成する。
【0111】
負荷の共有化と負荷の均衡化
次に、図11を参照すると、本発明の実施例による対称型マルチコンピューティングシステムが図示されている。サーバグループ(1112)は数多くのノード1100a,b,c,d,e,fから構成される。TCP接続(1109)の入力ストリーム(1110)にはグループノードにまたがる複数端点1110a,b,c,d,e,fがある。同様に、同一接続の出力ストリーム(1111)は端点1111a,b,c,d,e,fからなる。
【0112】
アプリケーションは全体グループにわたって各アプリケーションセグメント1113a,b、1114a,b、1115a,bに関して2つのインスタンスで実行する3つのセグメント(1113、1114、1115)からなる。通信システムをプログラミングすることによって、セグメント類はこれらの実行するオペレーション、これらが管理するデータのように基準に基づいた個々のタスクとともに搬送される。サービス用のリクエスト類の個別のサブセットが個々のアプリケーションのインスタンスに搬送されるようにデータ搬送を構成することによって、多くの場合、既存アプリケーションのコード変更をしないでもアプリケーションのセグメンテーションが実行される。アプリケーションは数多くの方法でセグメンテーション可能であり、その例類には、1セグメントが取扱い可能であるリクエストのタイプや種類、データ内容に基づくハッシングアルゴリズムあるいはシーケンス番号等のような接続情報に基づくセグメンテーションも含まれる。アプリケーションがセグメント類のプログラミングによって違うセグメントに分割されるといったこともささやかながら可能である。
【0113】
グループノードはレプリカ1100a,b、1100c,d、1100e,fとして、ペアにされるので、各ペアがそれぞれアプリケーションセグメント1113、1114、1115の2つのインスタンスを実行させる。あるセグメント、例えば、1100aがエラーとなると、ペア1100bが中断なくサービスを続ける。転送中に、あるインスタンス、例えば1100aにエラーが発生すると、他のインスタンス1100bが残りの応答をサービスの中断を避けてピアに送信する。同様に、エラーに直面してサービスを続けるために利用可能である付加されたインスタンスに当然のエラー許容性が増すよう新たなアプリケーションセグメントインスタンスがグループに加えられても良い。これは、例えば、アプリケーションセグメントインスタンスを実行させるとともに、その後、グループにこれが付加される新たなプロセスを創ることによって、その結果、リクエストがこれに配分されて行われることができる。
【0114】
オペレーションのあるモードでは、グループの非エンプティサブセットがラウンドロビンのような特定の順番でリクエストとともに搬送されるとともに、リクエストはノード上の負荷を均衡させるよう前記非エンプティサブセット間に本質的に配分される優先順位の重み付けがされる。
【0115】
オペレーションのあるモードでは、1以上のレプリカが1タスクとともに搬送され、タスクの完了後、インスタンスからの結果が他のレプリカを考慮することなしに接続を通じて送信される。レプリカのオペレーションの別のモードでは、1以上のレプリカが同一タスクとともに搬送されて良い。関連するレプリカは、その後、平行にオペレーションを実行するとともに、結果を出す。グループ対グループ通信システムの出力ストリーム時にインストールされた出力フィルターが結果を比較するとともに、結果の単一のインスタンスがピアグループに送信され、これによって、該グループはピアグループに対し単一のエンティティとして見える。ピアグループに転送される出力インスタンスの選定は対等出力、多数決一致、正解あるいは正常オペレーション出力等のようなフィルターに設定される方針次第である。方針の選定はアプリケーション次第である。セグメントインスタンスの転送エラーがあると、レプリカが中断することなく転送を引継ぐとともに継続する。
【0116】
出力比較がノードによって生ずる様々な出力が指示される出力内容フィルターによって生ずる場合、レプリカのサブセットはエラーがあると見なされるとともに、残りの端点が接続の中断なしにサービスを続ける間は、接続にわたる以降のサービスから除外される。1端点の除外のある、ある実施例では、この除外は端点の大半が他を除外する結果と一致する場合のスキームに基づかれている。そうでない場合は、端点の除外はオペレーションにエラーがあった場合に起きることがある。端点の除外はフィルターでプログラム可能な特定スキームの任意のアプリケーションからであってもよい。
【0117】
オペレーションのさらに別のモードでは、レプリカはメモリあるいはストレージの変更データのような状態変更を生ずるオペレーションで搬送される。このように、レプリカ類は一貫した状態を維持する。読み込みオペレーションのようなレプリカ間の一貫性に影響しないオペレーションの場合、タスクは該レプリカの1インスタンスのみに搬送される。これにより、レプリカ間の負荷を均衡させることが可能となる。
【0118】
ノードの付加および退避
TCPグループ対グループ通信システムの接続端点におけるフィルターにより、データのアプリケーションセグメントへの搬送のきめの細かい制御が可能となる。動的にフィルターを構成することによって、一定のタスクが一定ノードに搬送され、ノードに対するタスクリクエストの搬送の外部制御が可能となる。その結果、アプリケーションセグメントへのリクエストストリームはノード間での細かいタスク分配のためのスイッチのように制御される。
【0119】
グループはいつでもノードとともに付加されて良い。新たに付加されたノードは既存の接続からの負荷を共有して良い。既存の接続に関しては、ノードがサービスに加わるとともに、そこに到着するタスクの受付を開始する。必要な場合には、ノード間の負荷はタスクの移動によって均衡が取られる。
【0120】
ノードの退避に関しては、ノードの負荷責任は、最低負荷化のようなスキームを利用して選択される別のラウンドロビンあるいはアプリケーション特有のスキームに移される。退避の間に、新たなタスクを受け付けない間、より小規模なタスクが完了するのを待ちながら、ノードは完全に解放される。処理時間の長いタスクが関係する場合には、システムレベルの処理移動のようなタスクの移動が利用される。スタックのようなアプリケーション処理の全体の前後関係のある処理の移動とともに、データオープンファイルが別のノードに明確に移動される。ノードはグループによって代表されるバーチャルエンティティのアドレスへの接続を創るグループの別のノードと通信する。これにより、グループノード間の通信向けの上述のすべての特徴が提供される。
【0121】
自動準備
システムにより変化するニーズを満足させるためにプールから自動的かつ動的にグループに対しリソースが付加される。同様に、ノードが退避されるとともに、動的かつ自動的に準備される。システムはクライアントに搬送されるサービスの品質を監視するとともに、リソースを付加したり退避させたりするサービスの具体的品質を維持する。オペレーションはシステム外部で実行可能であるとともに、ピアグループに対し潜在的にトランスペアレントである。この公開を読むと、技術に熟練した人々によう、本発明の公開された原理により単一接続上のグループ対グループ通信向けのさらに追加の代案の構造や機能の設計案が認められよう。従って、本発明の特定の実施例やアプリケーションが図示されかつ説明されてきた一方で、本発明はここで公開された精確な構造と構成要素に限定されないととともに、技術に熟練した人々にとって明らかであろう様々な修正案や変更案あるいは変型類が、付録の請求項に定められる本発明の精神と範囲を逸脱することなく、ここで公開された本発明の配置、オペレーションならび方法と装置の詳細においてなされて良いことが理解されるべきである。
【図面の簡単な説明】
【0122】
付随する図面と関連づけられる場合、本発明にはその他にも本発明の以下の詳細説明ならびに付録の請求項からさらに容易く明らかになる利点と特徴がある。
すなわち、
【図1a】本発明のある実施例に応じて構成された通信システムの全般図である。
【図1b】本発明のある実施例による通信システムを図示する1区分図である。
【図1c】本発明のある実施例による1通信システムの実行用のよりレベルの高い構成要素の構成の1区分図を示す。
【図1d】本発明のある実施例による1通信システムの最適性能向けのよりレベルの低い構成要素の実行の1区分図を示す。
【図2】本発明のある実施例による1通信システムの実行用のよりレベルの高い構成要素のハードウェア構成の1区分図を示す。
【図3a】本発明のある実施例による1接続上の入力データ処理経路用の1ストリーム図を示す。
【図3b】図3aの残り部分で、本発明のある実施例による1接続上の入力データ処理経路向けの1ストリーム図を示す。
【図3c】本発明のある実施例による1接続上のインカミングデータにフィルターをかけるための1ストリーム図を示す。
【図4】本発明のある実施例によるノード内の公平性のため1回当たりの最大転送サイズを制限する間の1接続にわたる転送データ用の1ストリーム図を示す。
【図5a】本発明のある実施例によるアクティブsendHead割当て用の リクエスト/グラントスキームの1区分図を示す。
【図5b】本発明のある実施例によるsendHead用の 1リクエスト処理のための1ストリーム図を示す。
【図6】本発明のある実施例によるピアグループウインドーパブリシティ用のバーチャルウインドースキームを説明する1区分図を示す。
【図7a】は本発明のある実施例による通信システム用のコンピューティングシステムの1区分図を示す。
【図7b】は本発明のある実施例によるメインプロセッサの負荷軽減が準備される通信システム用のコンピューティングシステムの1区分図を示す。
【図7c】本発明のある実施例による専用ハードウェア/アクセラレーターチップにメインプロセッサの負荷軽減が準備される通信システム用のコンピューティングシステムの1区分図を示す。
【図8】本発明のある実施例による通信システムの代案である一般化図式を示す。
【図9】本発明のある実施例によるクライアントグループとサーバグループの間のデータ搬送と応答スキームを図示する。
【図10】本発明のある実施例による実行のロジカルビューを図示する。
【図11】本発明のある実施例によるエラー許容性、負荷配分、負荷分担ならびに単一システムイメージのある対称型マルチコンピューティングシステムの一般化図式である。

【特許請求の範囲】
【請求項1】
データを転送するノードの決定、データの単一インスタンスの転送、ならびにデータを送信する転送制御の連続化が含まれる原子的搬送用のノード間の通信方法。
【請求項2】
a.各グループに少なくとも1以上のノードが含まれる複数の端点が含まれる第1単独アドレスグループならびに第2単独アドレスグループ、b.各グループ間の通信用に可能な単一ロジカル接続をもつ通信プロトコル、c.各グループの非エンプティサブセット間通信を達成する第1単独アドレスグループのノードへのデータの応答を可能にするとともに、第2単独アドレスグループへのデータの転送を可能にする複数の端点が含まれるネットワークにおけるグループ間の通信用装置。
【請求項3】
各グループ間のデータ通信がどちらかのグループの仲介ノードを通過しない請求項2の装置
【請求項4】
端点にプロトコルスタックが含まれる請求項2の装置
【請求項5】
ノードに1処理あるいは1デバイスからなるグループからのものが含まれる請求項2の装置
【請求項6】
各グループが単独アドレスによる別のグループにアドレス可能である請求項2の装置
【請求項7】
通信プロトコルに「転送制御プロトコル」(TCP)が含まれる請求項2の装置
【請求項8】
a各グループに少なくとも1ヶ所のノードが含まれる複数の端点が含まれる.第1単独アドレスグループならびに第2単独アドレスグループ、b.各グループ間の通信用に可能な単一ロジカル接続を持つ通信プロトコル、c.データの第1単独アドレスグループにおけるノードへの応答が可能であるとともに、各グループの非エンプティサブセット間の通信を達成するためデータを第2単独アドレスグループまで転送可能な複数の端点が含まれるネットワークにおけるグループ間の通信用装置
【請求項9】
各グループ間のデータ通信がいずれかのグループの仲介ノードを通過しない請求項8の装置
【請求項10】
1端点に1プロトコルスタックが含まれる請求項8の装置
【請求項11】
前記プロトコルが前記グループによって送信された順番にデータの搬送を保証する請求項8による装置
【請求項12】
前記端点がノードにある場合の請求項8による装置
【請求項13】
前記端点が前記ノードの外部にある場合の請求項8による装置
【請求項14】
前記2グループのメンバー権が前記接続の寿命中に変動する場合の請求項8による装置



【図1a】
image rotate

【図1b】
image rotate

【図1c】
image rotate

【図1d】
image rotate

【図2】
image rotate

【図3a】
image rotate

【図3b】
image rotate

【図3c】
image rotate

【図4】
image rotate

【図5a】
image rotate

【図5b】
image rotate

【図6】
image rotate

【図7a】
image rotate

【図7b】
image rotate

【図7c】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公表番号】特表2007−520093(P2007−520093A)
【公表日】平成19年7月19日(2007.7.19)
【国際特許分類】
【出願番号】特願2006−527145(P2006−527145)
【出願日】平成16年9月21日(2004.9.21)
【国際出願番号】PCT/US2004/031020
【国際公開番号】WO2005/031588
【国際公開日】平成17年4月7日(2005.4.7)
【出願人】(506076433)トランシアム テクノロジーズ (1)
【Fターム(参考)】