JP2005124171A - 保証された分散型の障害通知を提供する方法 - Google Patents

保証された分散型の障害通知を提供する方法 Download PDF

Info

Publication number
JP2005124171A
JP2005124171A JP2004272462A JP2004272462A JP2005124171A JP 2005124171 A JP2005124171 A JP 2005124171A JP 2004272462 A JP2004272462 A JP 2004272462A JP 2004272462 A JP2004272462 A JP 2004272462A JP 2005124171 A JP2005124171 A JP 2005124171A
Authority
JP
Japan
Prior art keywords
node
failure
group
failure notification
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004272462A
Other languages
English (en)
Other versions
JP4633426B2 (ja
Inventor
Alastair Wolman
ウォルマン アレステア
Dejan Kostic
コスティック デジャン
John Dunagan
ダナガン ジョン
Marvin M Theimer
エム.タイマー マービン
Michael B Jones
ビー.ジョーンズ マイケル
Nicholas J A Harvey
ジェイ.エー.ハーベイ ニコラス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005124171A publication Critical patent/JP2005124171A/ja
Application granted granted Critical
Publication of JP4633426B2 publication Critical patent/JP4633426B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1895Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)
  • Small-Scale Networks (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 保証された分散型の障害通知方法を提供すること。
【解決手段】 障害通知(FN)機能により、アプリケーションがこの機能を使用してFNグループを作成することができ、アプリケーションはFNグループにアプリケーション状態を関連付ける。アプリケーションは、FNグループ中のノード上のFN機能に障害ハンドラを登録し、各障害ハンドラは、特定のFNグループに関連する。所与のノード上で、FN機能がFNグループ中の障害を知った場合、この機能は、そのノード上の関連する障害ハンドラを実行する。アプリケーションによって検出されたシステム障害は、この機能を使用している他のFNグループメンバに伝えられる。この機能は、この機能が実施されているオーバーレイネットワーク中で発生したシステム障害を検出し、他のFNグループメンバに障害通知を伝える。
【選択図】 図2

Description

本発明は一般に、分散システムにおける障害通知に関し、より詳細には、分散システム中のノードがそのシステムのどの部分の障害の通知をも受け取ることを保証する方法に関する。
分散システムを構築する際の難題の1つは、システムの一部分が、システム中の他のどこかで発生している重要な障害状態について何も知らないままでいる状況を回避することである。システム中のノード上で稼動するアプリケーションは、データ、リソース、変数、動作条件などのアプリケーション状態について相互に依拠する。したがって、システム中の障害を知らないことは、不正確な挙動と孤立状態の両方を生じる可能性がある。例えば、分散システム中のノードA、B、Cを考えてみる。ノードBおよびC上で稼動するアプリケーションは、現在温度Tなど、特定のアプリケーション状態についてノードAに依拠する。ノードAに障害が発生した場合、あるいはノードAB間またはAC間の通信リンクに障害が発生した場合は、アプリケーション状態はもはや有効ではない。ノードAに障害が発生したことをノードBおよびCが知らない場合、ノードBおよびCは、Tの現在値が有効であると見なす。しかし、実際のTが変化したとき、無効なTを使用するノードBおよびC上のアプリケーションは、誤った結果を生むことになる。したがって、システム中の障害をノードに通知するための障害検出通知サービスが必要とされる。
分散コンピュータシステムにおける障害検出は難しい。分散システムに関する基礎研究によれば、クラッシュしたリモートコンピュータと、非常にゆっくりと稼動しているリモートコンピュータと、ダウンしているネットワークと、その他いくつかの障害シナリオとの間を見分けることは一般に不可能である。このため、障害検出サービスは、すべての障害を完全に報告することはできず、いくつかの状況下での障害を報告するだけである。
以前の障害検出サービスは、複数のコンピュータ上で同じプログラムを並行して実行することによって信頼性および可用性を達成しようとする分散コンピューティング環境で使用されてきた。これらのシステムでは、あらゆる入力がすべてのコンピュータに送られる。この「ロックステップ複製」(lock−step replication)または「仮想同期性」(virtual synchrony)と呼ばれることもあるコンテキストでは、複数のコンピュータのそれぞれがすべての入力を受け取り、何らかの計算をし、(通常は)何らかの出力をユーザに返信する。次いでユーザは、(もし応答が同一でない場合は)おそらくは最も頻繁に現れた応答を決定的なものと考えることによって、応答を集約する。したがって、複数のコンピュータのそれぞれが、グループ中の他のすべてのコンピュータの識別に関して合意する必要がしばしばある。この場合、障害検出サービスの役割は、障害が発生したコンピュータを検出して、この情報をグループのすべてのメンバに伝搬することである。障害検出サービスは一般に、グループメンバシップサービスと密接に統合される。グループメンバシップサービスは、どのコンピュータが分散コンピューティング環境に参加することができるか(場合により、新しいコンピュータの中に加わることから、障害が発生したと思われるコンピュータに取って代わることまで)という問題に対して権限を有する、各コンピュータが実行するローカルサービスである。これらの障害検出サービスは一般に、多数のマシンを同時に扱うのには適さず、また一般に、信頼できるメッセージング基盤が継続的に機能することを条件として、信頼できる障害通知を提供する。
別の障害検出サービスは、いくつかの障害に直面した際に他のどのコンピュータが機能しているかに関してほとんどのコンピュータが合意することを確実にしようとするものだが、すべての障害時にではない。例えば、この障害通知サービスは、完全に到達不可能(unreachable)になったコンピュータだけを検出し、コンピュータのいくつかの対だけが通信できなくなるような通信障害は検出しない。さらに、この障害通知サービスは、複数の小グループを確立することをサポートせず、障害検出サービスに参加しているすべてのコンピュータが、同様に参加している他のすべてのコンピュータを意識していることが必要である。
D. Karger, P. Klein, and R. Tarjan. "A Randomized Linear-Time Algorithm to Find Minimum Spanning Trees." Journal of the Association for Computing Machinery, 42(2), 1995 M. Castro and P. Druschel and A. Kermarrec and A. Rowstron, "Scribe: A Large-Scale and Decentralized Application-Level Multicast Infrastructure," IEEE Journal on Selected Areas in Communications (JSAC) (Special issue on Network Support for Multicast Communications), 20(8), Oct. 2002
したがって、障害通知グループの形成を可能にし、障害通知グループに影響するシステム障害がグループ中のあらゆるコンピュータに確実に通知されることを保証する、軽量かつ分散型の障害通知サービスが、当技術分野で必要とされている。
本発明は一般に、ネットワーク中のコンピュータのグループ上で動作する分散システム中で障害通知を保証する方法を対象とする。本発明によれば、分散システム中のコンピュータのグループによって障害通知(FN)グループが形成される。FNグループは、システム中のすべてのコンピュータ間で形成することもでき、システム中のコンピュータの任意のサブセット間で形成することもできる。さらに、システム中の同じコンピュータセット上で、重複する複数のFNグループが使用されてもよい。このFNグループのメンバには、FNグループ中のメンバに影響する分散システム中のどんな障害も確実に通知され、それによりグループメンバは、障害に応答して適切な措置を講じることができる。あるノード上にFNグループが(前に作成されたために)存在する場合、このノード上のアプリケーションは、FNグループについての障害ハンドラを登録することによって、このグループに状態を関連付けることができる。本発明は、障害状況がFNグループに影響するときは常に障害ハンドラが呼び出されることを保証し、次いで障害ハンドラは、状態に対して適切に作用することができる。障害ハンドラを所望のグループに正しく関連付けることができるように、FNグループを作成する動作では、このFNグループが知られるための一意識別子も作成する。
FNグループ中のコンピュータが障害の発生を確認したとき、このコンピュータは、このFNグループのための障害通知を、到達可能なすべてのFNグループメンバに伝える。障害通知を受け取ったFNグループメンバであって、(一意識別子で示される)このFNグループについての障害ハンドラを保持するメンバは、障害ハンドラを呼び出すべきであると認識する。次いで、このFNグループに関連する障害ハンドラがグループメンバによって実行され、適切なアプリケーションレベルの動作(例えばガーベージコレクション(garbage collection)がアプリケーション状態に対して実施される。FNグループメンバが到達不可能だがクラッシュはしていない場合、このメンバもやはり障害を知ることになる。すなわち、特定のFNグループの継続的な存在を確認するピーン(ping)を他のFNグループメンバから受け取ることができないことは、このFNグループが死んでいることの明示的な通知を受け取るのと同じ効果を有する。
ノードは、それらが属するあらゆるFNグループについての障害ハンドラを登録している必要はない。例えば、特定のノードAは、別のノードBが到達可能かどうかを監視するために、それ自体とノードBとを含むFNグループを作成すことができるが、この時点では、2つのノード間でアプリケーションレベルの協調動作を開始する必要はない。この例では、ノードBには、この障害通知グループについての障害ハンドラを登録する理由はない。
障害が発生したかどうかを確認するために、本発明は3つの方法を提供する。ある方法では、各FNグループメンバが、他のあらゆるFNグループメンバに直接にピーンする。ピーンされたFNグループメンバがピーンに応答できない場合、ピーンを送ったFNグループメンバは、FNグループに障害通知を伝える。第2の方法では、ツリートポロジを使用してピーン義務を分散させる。各FNグループメンバはツリー中のノードとして確立され、各ノードは、ツリー中の隣接ノードだけにピーンする義務を負う。この場合もやはり、ピーンされたFNグループメンバがピーンに応答できない場合、ピーンを送ったFNグループメンバは、FNグループに障害通知を伝える。
障害が発生したかどうかを確認するための第3の方法では、本発明は既存のオーバーレイネットワークの最上部で実施される。オーバーレイネットワークは、ネットワーク中のコンピュータへのアプリケーションレベルのルーティングを提供し、基礎をなすネットワークレベルのルーティングプロトコル(例えばインターネットプロトコル(IP)ルーティング)に依拠してアプリケーションレベルのルーティングを実施する。オーバーレイネットワークを維持するために、各コンピュータは、オーバーレイネットワーク中のコンピュータのサブセットのリストを保持し、これらのコンピュータに定期的にピーンして、これらのコンピュータが生きているかどうか確認する。本発明はこのオーバーレイ維持を利用して、オーバーレイネットワーク中のノードが有するリスト中のコンピュータが死んでいる場合、すなわち予想どおりにピーンに応答しなかった場合には、ノードが本発明に通知することを必要とする。次いで本発明は、報告されたオーバーレイ障害がFNグループの2つのメンバ間の通信パスに沿ったものかどうかを決定する。オーバーレイ障害が2つのFNグループメンバ間のパスを切断する場合は、障害通知がすべてのFNグループメンバに伝えられる。
本発明の他の特徴および利点は、添付の図を参照しながら進める、例示的な実施形態に関する以下の詳細な記述から明らかになるであろう。
本発明の特徴については添付の特許請求の範囲に詳細に述べるが、本発明は、その目的および利点と合わせて、添付の図面と共に以下の詳細な記述を読めば最もよく理解することができる。
図面に目を向けると、適したコンピューティング環境で実施されているものとして本発明が示されており、これらの図面では、同じ参照番号は同じ要素を示す。必須ではないが本発明は、プログラムモジュールなど、パーソナルコンピュータによって実行されるコンピュータ実行可能命令の一般的なコンテキストで述べる。一般にプログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含めて、その他のコンピュータシステム構成でも実施できることは、当業者なら理解するであろう。本発明は分散コンピューティング環境で実施することもでき、その場合、タスクは通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶デバイスに位置することができる。
図1に、本発明を実施するのに適したコンピューティングシステム環境の例100を示す。コンピューティングシステム環境100は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についてどんな制限も意味しない。またコンピューティング環境100は、この例示的な動作環境100に示すコンポーネントのいずれか1つまたは組合せに関してどんな依存や要件を有するものとも解釈すべきではない。
本発明は、その他多くの汎用または専用コンピューティングシステム環境または構成でも機能する。本発明で使用するのに適すると思われる周知のコンピューティングシステム、環境、および/または構成の例には、限定しないがパーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータや、これらのシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
本発明は、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般にプログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は分散コンピューティング環境で実施することもでき、その場合、タスクは通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体に位置することができる。
図1を参照すると、本発明を実施するための例示的なシステムは、コンピュータシステム110の形の汎用コンピューティングデバイスを含む。コンピュータ110のコンポーネントには、限定しないが処理ユニット120と、システムメモリ130と、システムメモリを含めた様々なシステムコンポーネントを処理ユニット120に結合するシステムバス121とを含めることができる。システムバス121は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスを含めて、いくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Associate)ローカルバス、およびPCI(Peripheral Component Interconnect)バス(メザニンバスとも呼ばれる)が含まれる。
コンピュータ110は通常、様々なコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ110からアクセスできる任意の利用可能な媒体とすることができ、揮発性と不揮発性の媒体、取外し可能と固定型の媒体の両方が含まれる。限定ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性と不揮発性、取外し可能と固定型の両方の媒体が含まれる。コンピュータ記憶媒体には、限定しないがRAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD‐ROM、ディジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイスが含まれ、あるいは、所望の情報を記憶するのに使用できコンピュータ110からアクセスできるその他の任意の媒体が含まれる。通信媒体は通常、搬送波や他のトランスポート機構などの変調されたデータ信号中に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを組み入れたものであり、任意の情報送達媒体が含まれる。「変調されたデータ信号」という語は、情報が信号中に符号化される形で1つまたは複数の特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数、赤外線、その他の無線媒体などの無線媒体とが含まれる。以上の任意の組合せもコンピュータ可読媒体の範囲に含めるべきである。
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。ROM131には通常、起動中などにコンピュータ110内の要素間で情報を転送するのを助ける基本ルーチンを含むBIOS(basic input/output system)133が記憶されている。RAM132は通常、処理ユニット120がすぐにアクセス可能な、かつ/または処理ユニット120が現在作用している、データおよび/またはプログラムモジュールを含む。限定ではなく例として、図1には、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、プログラムデータ137を示す。
コンピュータ110は、その他の取外し可能/固定型、揮発性/不揮発性コンピュータ記憶媒体を備えることもできる。例にすぎないが図1には、固定型な不揮発性の磁気媒体に対して読み書きするハードディスクドライブ141と、取外し可能な不揮発性の磁気ディスク152に対して読み書きする磁気ディスクドライブ151と、CD ROMや他の光媒体など取外し可能な不揮発性の光ディスク156に対して読み書きする光ディスクドライブ155を示す。この例示的な動作環境で使用できる他の取外し可能/固定型、揮発性/不揮発性コンピュータ記憶媒体には、限定しないが磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、固体RAM、固体ROMなどが含まれる。ハードディスクドライブ141は通常、インタフェース140などの固定型メモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は通常、インタフェース150などの取外し可能メモリインタフェースでシステムバス121に接続される。
以上に論じ図1に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータの記憶域をコンピュータ110に提供する。例えば図1には、ハードディスクドライブ141がオペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、プログラムデータ147を記憶しているのが示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、プログラムデータ137と同じものとすることもでき、異なるものとすることもできることに留意されたい。ここでは、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、プログラムデータ147が少なくとも異なるコピーであることを示すために、異なる番号を付けてある。ユーザは、キーボード162、マウスやトラックボールやタッチパッドと一般に呼ばれるポインティングデバイス161などの入力デバイスを介して、コンピュータ110にコマンドおよび情報を入力することができる。その他の入力デバイス(図示せず)には、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどを含めることができる。これらおよび他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース160を介して処理ユニット120に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(「USB」)など、その他のインタフェースおよびバス構造で接続されてもよい。モニタ191または他のタイプの表示デバイスも、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータは、スピーカ197やプリンタ196など他の周辺出力デバイスも備えることができ、これらは出力周辺インタフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ180は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の一般的なネットワークノードとすることができ、図1にはメモリ記憶デバイス181しか示していないが、通常はパーソナルコンピュータ110に関して上述した要素の多くまたはすべてを備える。図1に示す論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、その他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、インターネットでよくみられる。
LANネットワーキング環境で使用されるときは、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用されるときは、コンピュータ110は通常、インターネットなどのWAN173を介した通信を確立するためのモデム172または他の手段を備える。モデム172は内蔵でも外付けでもよく、ユーザ入力インタフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関して示したプログラムモジュールまたはその一部をリモートのメモリ記憶デバイスに記憶することができる。限定ではなく例として、図1には、リモートアプリケーションプログラム185がメモリデバイス181上にあるものとして示す。図示のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するための他の手段を使用してもよいことは理解されるであろう。
次に、図1Bを参照して、本発明を使用することのできるネットワーク化された環境の例について述べる。この例示的なネットワークは、雲で表すネットワーク111を介して相互に通信する複数のコンピュータ110を含む。ネットワーク111は、ルータ、ゲートウェイ、ハブなど、周知のコンポーネントを含むものとすることができ、コンピュータ110が有線媒体および/または無線媒体を介して通信できるようにする。1つまたは複数のコンピュータは、ネットワーク111を介して相互に対話するとき、他のコンピュータに対するクライアント、サーバ、またはピアとして働くことができる。したがって、本明細書に含まれる特定の例ではこれらすべてのタイプのコンピュータには言及しないが、本発明の様々な実施形態は、クライアント、サーバ、ピア上で、またはこれらの組合せで実施することができる。
以下の記述では、特に指示がない限り、1つまたは複数のコンピュータによって実施される動作および象徴的な操作表現に関して本発明を述べる。したがって、このような動作および操作は、コンピュータによって実行されるものとして述べる場合があるが、データを構造化形式で表す電気信号をコンピュータの処理ユニットによって処理することを含むことは、理解されるであろう。この処理は、コンピュータのメモリシステム中の各位置でデータを変形または維持し、これにより、コンピュータの動作は、当業者によく理解される方式で再構成されるかさもなければ改変される。データが維持される場所であるデータ構造は、データのフォーマットで定められる特定のプロパティを有する、メモリの物理位置である。ただし、本発明を前述のコンテキストで述べるが、これは限定を意味するのではなく、以下に述べる様々な動作および操作はハードウェア中で実施することもできることを当業者なら理解するであろう。
本発明によれば、障害通知(FN)機能は、ネットワーク111中のコンピュータ110の分散グループのメンバのいずれかが障害通知をグループの他のあらゆる生きているメンバに通信できることを保証する。FN機能は、ネットワーク111中のコンピュータ110上で実行されるアプリケーション、サービス、オペレーティングシステム、またはその他の任意のソフトウェア中で実施される。FN機能は、ネットワーク111中のコンピュータ110上で稼動する他のアプリケーションへのアプリケーションプログラムインタフェース(API)を提供する。本明細書で使用される「アプリケーション」という語は、本発明のFN機能を使用するソフトウェアを指し、限定しないが分散システム、分散アプリケーション、ミドルウェアが含まれる。
コンピュータ110は、ネットワーク111中の「ノード」と呼ばれる。「障害通知(FN)グループ」は、FN機能を提供すると共に分散システムとして働く協働ノードのグループを指し、FNグループのすべてのメンバは、システム中の障害を確実に知る。図2に本発明を階層的に抽象化したものを示すが、これは、FN機能200が、アプリケーション201と、通信リンク203で相互に接続されたノード202との間の媒介として働くのを示している。ノードのグループ上で稼動する分散アプリケーションは、FN機能を使用してFNグループを作成し、それにより、分散アプリケーションを実行しているすべてのノードがシステム障害を知るようにする。
本発明の一実施形態の例示的な適用例を通して、本発明は、障害通知の受信を保証するものとして概念的に理解されるであろう。あらゆるグループメンバが、「OKか?」というメッセージを使用して、他のあらゆるグループメンバに定期的にピーンするというFNグループを考えてみる。ノード障害、ネットワーク切断、ネットワーク分割、一時的な過負荷など、いずれかの理由でOKでないグループメンバは、何らかのピーンに応答できなくなる。この応答失敗を、本明細書では一般に通信障害と呼ぶ。果たされなかったピーンを開始したグループメンバ、したがって通信障害を検出したグループメンバは、このFNグループについてのすべてのピーンにそれ自体で応答するのを止めることによって、また任意選択で障害通知メッセージを他の到達可能なFNグループメンバに渡すことによって、グループの残りに障害通知が伝搬することを保障する。したがって、本発明は、通信障害の個別の観察がグループ通知に変換されることを保障する。この方式は、どんなパターンの切断、分割、または障害も、クラッシュしていないあらゆる参加者が確実に受け取れる障害通知に変える。
引き続き本発明のこの例示的な適用例を考えながら、障害発見時に明示的な障害通知メッセージが送られるという本発明の別の実施形態について述べる。明示的な障害通知メッセージの効果は、グループ内のいくらかの参加者がグループの他のメンバとまだ通信することができるかどうかにかかわらず、クラッシュしていないあらゆる参加者によって、定期的なピーン期間の2倍以内で経験されることが保証される。というのは、本発明が実施する明示的な通知は、明示的な通知メッセージを送るノードが、明示的な通知メッセージを実際に送ることに加えて、グループの継続的な存在を確認するピーンに応答するのを止めることによって、実施されるからである。この文書の残りの部分において「グループが通知を受ける」という語は、さらに詳述されない場合、すべてのグループメンバへの何らかの障害通知送信を意味し、任意選択で障害通知メッセージの明示的な送達の試みも含むものと理解されたい。
本発明の第1の実施形態によれば、分散システム中で障害通知を保証する方法が提供される。この方法では、ネットワーク中の複数のノードを含むFNグループが作成される。障害通知グループは、障害通知グループのいくつかまたはすべてのノード上で稼動する分散アプリケーションの障害処理メソッドに関連付けられる。障害通知グループ中のノード間の通信障害(前述のように、通信リンク障害、ノード障害、またはその他の何らかの原因を反映したものである場合がある)が、障害通知グループ中のノードによって検出される。通信障害が検出されると、障害通知が伝えられる。障害通知グループのノードが障害通知を受け取ると、障害通知グループに関連する障害処理メソッドがこのノード上に存在すればそれが実行される。
FNグループの作成は、作成主ノード上で稼動するアプリケーションが、FNグループに含めるノードのセットと共にCreateGroup(グループ作成)インタフェースを呼び出すことによって開始する。この呼出しは、FNグループについての、大域的に一意の障害通知識別子(FNID)を生成する。セット中の各ノードが何らかの順序で(場合によっては同時に)接触を受け、ノードの存在が検証される。セット中のすべてのノードにうまく接触できる場合、すなわち、作成主ノードと他のFNグループメンバとの間に生きた通信リンクがある場合は、FNグループはすべてのメンバ上でうまく確立され、「成功」が作成主アプリケーションに返される。
FNグループを作成するアプリケーションは、障害ハンドラを作成主ノードにインストールすることによって、アプリケーション状態をこのグループに関連付ける。さらに、作成主ノード上のアプリケーションは、FNグループメンバのいくつかまたはすべてに対して、アプリケーション特有の方式で、FNグループのFNIDと共にアプリケーション状態を招待メッセージ中で明示的に送る。招待メッセージを受け取った各FNグループメンバは、次いで、招待メッセージに含まれるアプリケーション状態およびFNIDに関連するこのFNグループについての障害ハンドラを確立する。障害ハンドラは、招待メッセージを受け取ったノード上で稼動するアプリケーションおよび関連するアプリケーション状態に特有である。例えば、障害ハンドラは、FNグループに関連するアプリケーション状態のガーベージコレクションを実施するものとすることもでき、あるいは新しいFNグループを使用してアプリケーション状態の再確立を試みるものとすることもでき、あるいは単に任意のコードを実行するものとすることもできる。
FNグループについての障害通知が受け取られた場合、このFNグループに関連するインストール済みのアプリケーション状態があれば、アプリケーションによってガーベージコレクションされるか、そうでない場合は更新される。アプリケーションが、存在しないFNグループにハンドラを関連付けようとした場合は、障害ハンドラはすぐに呼び出される。この挙動は、それまでFNグループを意識していたFNグループメンバに障害通知が届かないことがないように、まず第一に保証することの一部である。FNグループを作成する試みは、常に2つの可能な結果のうちの一方をもたらす。すなわち、(1)FNグループの作成が成功し、作成主アプリケーションにFNグループIDが通知されたか、(2)FNグループの作成が失敗し、作成主アプリケーションに失敗が通知されたかである。FNグループ作成の成功に続いて、作成主アプリケーションはその後、グループID、およびグループに関連付けられる任意のアプリケーション状態をグループメンバに通信し、それにより、障害通知時にこの状態に対して作用する障害ハンドラをグループメンバが確立できるようにする。
図3aに、アプリケーションがFN機能を利用してFNグループを作成するときにFN機能によって実行される方法を示す。ステップ300で、FN機能は、FNグループについてのノードのセットを受け取る。ステップ310で、FN機能は、セット中のあらゆるノードと接触し、潜在的なFNグループノードとうまく通信することができるかどうか判定する。ステップ320で、FN機能がすべての潜在的FNグループノードとうまく通信できると判定した場合は、ステップ330に進む。そうでない場合はステップ340に進み、FN機能はFNグループの作成が失敗したことを通知する。ステップ330で、FN機能はFNIDを生成し、このFNIDをアプリケーションに返して、FNグループがうまく作成されたことを示す。
図3bに、FN機能からFNIDを受け取った後にアプリケーションによって実行される方法を示す。ステップ350で、アプリケーションは、FN機能からFNIDを受け取る。ステップ360で、アプリケーションは、FNグループノード上のアプリケーションにメッセージを送り、FNグループのFNID、およびFNIDに関連するアプリケーション状態を示す。FNグループノード上のアプリケーションは、FNIDとアプリケーション状態とを含むメッセージを受け取り、次いで、そのノード上のFN機能を使用して、アプリケーション障害処理メソッドをFNIDに登録する。この登録は、後で説明するFN機能のRegisterFailureHandler(障害ハンドラ登録)関数を呼び出すことによって実施する。作成主ノード上のアプリケーションもまた、同様にして障害処理メソッドを登録する。
この手法の利点は、FNグループノード上のアプリケーションが、確立することのできないグループについて知ることがない点である。これは、アプリケーション状態および関連する障害ハンドラを確立したのに、結局その後すぐに障害ハンドラが呼び出されてアプリケーション状態をガーベージコレクションしなければならないだけに終わる場合が、より少ないことを意味する。第2の利点は、FNグループおよびそれに関連する任意の状態に関する情報をグループメンバに通信するかどうか、またいつどのように通信するかについて、アプリケーションがより多くのフレキシビリティを有する点である。
FNグループに参加する各ノード上のアプリケーションは、RegisterFailureHandler関数を使用して、そのFNグループ中での障害通知のための障害ハンドラを登録する。この関数は、障害処理メソッドおよびFNIDをそのパラメータとし、FNIDを障害処理メソッドに登録する。障害処理メソッドは、障害が検出されたために、またはFNグループメンバの1つのメンバ上でアプリケーションが障害イベントを明示的に伝えたためにそのFNIDを有するFNグループが通知を受けたときは、常に呼び出される。RegisterFailureHandlerが、障害が発生したものとすでに伝えられたFNIDパラメータ、または存在しないFNIDパラメータと共に呼び出された場合は、障害処理メソッドがすぐに呼び出される。
RegisterFailureHandler関数がアプリケーションによって呼び出されると、FN機能は、障害処理メソッドをFNIDに関連付ける。したがって、このFNIDを示す障害通知が受け取られたときは、FN機能は、FNIDがこれらのアプリケーション障害処理メソッドに関連するものと認識し、これらの障害処理メソッドを実行する。
FNグループが作成された後、FNグループノード上のアプリケーションは、FNグループメンバ間に障害がなかったときでも、SignalFailure(障害信号)関数を呼び出すことによって障害通知を明示的に伝えることができる。SignalFailure関数は、障害通知が伝えられることになるFNグループのFNIDをそのパラメータとする。アプリケーションがこの関数を呼び出すことがあるのには、多くの理由がある。このようなシナリオの一例は、アプリケーションが、そのアプリケーション特有の目的には通信リンクが不十分であると(FN機能はおそらくこのリンクを介してどうにか通信しているにもかかわらず)決定したときである。前述の本発明の実施形態では、SignalFailureが呼び出されると、FN機能は、FNグループについてのピーンメッセージに応答するのを止めることによって、障害をFNグループメンバに通知する。しかしFN機能は、このFNグループに関係のないメッセージ、例えば別のFNグループについてのピーンメッセージにはまだ応答することになる。追加の実装形態では、到達可能なFNグループメンバに明示的な障害通知メッセージも送ることができる。
図4aに、CreateGroup、RegisterFailureHandler、SignalFailure関数を含む、本発明のこの実施形態のAPIを示す。図4bには、後述する本発明の別の実施形態のAPIを示す。
FNグループ中の各ノードは、FNグループの継続的な存在を定期的に検証するために、FNグループ中の1つまたは複数の他のノードへの接続性を維持しなければならない。この接続性を維持するのに使用される方法は、スケーラビリティ、信頼性、ユーザのセキュリティ要件によって決まる。FNグループ中の接続性を維持する方法の1つでは、作成主ノードが、すべてのFNグループメンバに、FNグループ中の他のメンバを通知する。次いで、FNグループ中の各ノードは、FNグループ中の他のあらゆるノードに定期的にピーンする(このピーンは、ユーザデータグラムプロトコル(UDP)ピーンとして、またはTCPソケットを開いて、またはよく知られた任意の数の生死チェック方法のうちの1つとして実施することができる)。通信障害が検出された場合、例えばピーンされたノードが応答できなかった場合は、障害通知がFNグループの残りに伝えられる。定期的なピーン送信によってO(n)のメッセージの複雑さが必要とされるので、この手法は、中程度のサイズのFNグループに対してもあまりスケール(scale)しない。さらに、ネットワークピーントラフィックの総計は、システム中に存在するFNグループの数において加法的な傾向がある。しかし、どんなインフラストラクチャサポートも必要ないという利点がある。
FNグループ通知は不必要に生成されることがあり、このような通知を偽陽性と呼ぶ。例えば、偽陽性の原因の1つは、一時的なリンク障害である。本発明は、偽陽性の数を最小限に抑えることを試みる。この方法の偽陽性率は、追加の障害にそれ自体が寄与することになるかもしれないどんな第三者「媒介」ノードも生死監視および接続性監視に関与しないことによって助けられている。しかし、すべてのO(n)潜在的通信パスが監視されるので、またほとんどのアプリケーションは実際にはこれらのパスの小さいサブセットしか使用しないので、実際に使用されているパスだけが監視されたなら見えたであろう一時的通信障害よりもずっと多くの一時的通信障害を観察する可能性がある。
この手法によって受ける通知待ち時間は短く、最悪の場合の待ち時間は2タイムアウト期間であり、平均的な場合の待ち時間は1タイムアウト期間未満である。最も重要なのは、この手法がセキュリティ攻撃を非常に受けにくいことである。システム中のどんな悪意あるノードも、悪意あるノード自体以外のノードによって引き起こされた障害通知をFNグループのメンバが受け取るのを妨げることはできない。また、少なくともFNグループメンバが障害通知の送信元を認証するための何らかの手段を有する場合は、悪意あるノードは、それが属するFNグループに対してしかサービス拒否(DoS)攻撃を開始することができない。
したがって、分散システム中で障害通知を保証する方法が提供される。障害通知が失敗しないことを確実にすることにより、本発明は、協働して処理したい状態を有するノード間での障害処理を大幅に単純化する。本発明は、FNグループのすべてのメンバに、グループに影響するどんな障害状況も効率的かつ確実に通知する。本発明を使用するアプリケーションは、障害メッセージが届かなかったり、システム中に孤立状態が残ったりすることを心配する必要はない。
本発明の別の実施形態では、障害通知グループを作成するための代替方法が提供される。前の実施形態と同様、FNグループの作成は、作成主ノードにおけるアプリケーションが、FNグループに含めるノードのセットと共にCreateGroupインタフェースを呼び出すことによって開始する。前の実施形態とは異なり、この関数は、ノードセットパラメータに加えてアプリケーション状態もパラメータとする。図4bに、修正されたAPIを示す。
本発明のこの実施形態は、FNグループについての、大域的に一意の障害通知識別子(FNID)を生成する。セット中の各ノードが何らかの順序で(場合によっては同時に)接触を受け、確立されつつある新しいFNグループに加わるよう要求される。この招待メッセージには、確立されつつあるFNグループのFNID、ならびにFNグループに関連付けられるアプリケーション状態が含まれる。FNグループ中のすべての招待されたノードがうまくFNグループに加わった場合は、成功が作成主アプリケーションに返される。前の実施形態と同様、FNグループ中の各ノードにあるアプリケーションは、FNIDに関連するアプリケーション状態についての障害ハンドラを確立する。
いずれかのFNグループメンバに到達不可能な場合は、FNグループの確立は失敗し、「失敗」が作成主ノードのアプリケーションに返され、すでに招待メッセージを受け取ったすべてのノードに通知される。FNグループのことを知ったが、その後で到達不可能になったグループメンバも同様に、他のFNグループメンバと通信できないことによって障害を検出する。この検出された障害により、障害が発生したグループに関連するすべてのアプリケーション状態に対して、アプリケーション特有の障害処理(例えばガーベージコレクション)が行われる。
図5に、アプリケーションがFN機能を利用してFNグループを作成するときにFN機能によって実行される方法を示す。ステップ500で、FN機能は、FNグループについてのノードのセットと、FNグループに関連付けるアプリケーション状態を受け取る。ステップ510で、FN機能はFNIDを生成する。ステップ520で、FN機能は、FNIDとアプリケーション状態とを含む招待メッセージを、ノードセット中の各ノードに送る。ステップ530で、すべてのノードがうまく招待メッセージを受け取った場合は、ステップ540に進み、FN機能は、FNグループがうまく作成されたことをアプリケーションに通知し、FNIDを返す。すべてのノードがうまく招待メッセージを受け取らなかった場合は、ステップ550に進み、FN機能は、すでに招待メッセージを受け入れることによってFNグループに加わったFNグループノードに、障害通知メッセージを発行する。ステップ560で、FN機能は、FNグループがうまく作成されなかったことをアプリケーションに通知する。アプリケーションは、前の実施形態と同様に障害ハンドラを登録する。
したがって、FNグループを作成する試みは、常に2つの可能な結果のうちの一方をもたらす。すなわち、(1)FNグループの作成が成功し、FNグループメンバはグループに関連付けるアプリケーション状態を受け取り、FNグループメンバは障害通知時のグループについての(例えばその状態をガーベージコレクションするための)障害ハンドラを確立したか、(2)FNグループの作成が失敗し、FNグループに関連付けるアプリケーション状態を通知されたFNグループメンバは、その障害ハンドラが呼び出された(おそらく障害ハンドラにその状態をガーベージコレクションさせた)かである。したがって、FNグループ作成中(または作成後)に失敗すると、FNグループに関連するすべての状態は回収される。
本発明の別の実施形態では、接続性を維持するための別の方法が提供される。接続性および生死を監視するために、FNグループのノード間でスパニングツリーを構築する。スパニングツリーを構築するには、FNグループ中の各ノードをグラフ中の頂点と考え、グラフ中のあらゆるノードがグラフ中で循環せずに接続されるようにノード間の接続を生み出す。これらの接続は、スパニングツリーに似たルーティングトポロジを実現する。ノード間の接続は、第1ノードが第2ノードへのポインタを子ノードとして記録し、第2ノードも同様に第1ノードへのポインタを親ノードとして記録したときに形成される。
例えば、図6に例示的なスパニングツリーを示すが、作成主ノードであるノード1がツリーのルートノードであり、ノード1はノード2および3へのポインタを記録しており、ノード2および3はノード1の子ノードである。ノード2と3は両方とも、ノード1へのポインタをその親ノードとして記録している。ノード2はまた、その子ノードであるノード4へのポインタも記録している。ノード4は、ノード2へのポインタをその親ノードとして記録しており、ノード5および6へのポインタをその子ノードとして記録している。ノード3、5、6は、ポイントする子ノードを持たず、したがってスパニングツリーのリーフである。
この接続性維持方法では、ツリー中の各ノードは、それに隣接するノードだけにピーンする。ツリー中で、ノードが親子関係の一部である場合に、それらのノードは隣接している。例えば図6で、ノード4はノード2、5、6に隣接するが、ノード3はノード1に隣接するだけである。各ノードはその親ノードおよび子ノードにピーンするだけなので、ピーントラフィックの量が削減される。障害が検出されたとき、検出したノードは、FNグループについてのピーンに応答するのを止める。さらに、スパニングツリーを使用して、障害通知をその親ノードおよび子ノードに送ることによって障害通知メッセージを広めることもできる。障害通知を受け取ったノードは、障害通知をその親および子ノードに転送する。この結果、スパニングツリー中のあらゆるノード、すなわちFNグループ中のあらゆるノードは、最終的に、果たされなかったピーンを通して通信障害を検出することによって、または明示的な障害通知メッセージを受け取ることによって障害を知る。
この方法は大規模なグループをサポートするが、システムが多量のFNグループを含む場合は、やはりかなりの量のプロービング(probing)トラフィックを生成する。ピーントラフィックはFNグループのメンバノード間だけで生じるが、FNグループ内のすべての可能な通信パスを監視することはないという点で、この方法の偽陽性率は、直接ピーン方法の偽陽性率とほぼ同様のはずであり、おそらくそれよりもやや低い。スパニングツリーを介した通知メッセージの同報通信を素早く行うことができると仮定すると、平均的な場合の通知待ち時間もほぼ同様のはずである。最悪の場合の通知待ち時間は、使用されるツリー構築アルゴリズムの詳細によって決まる。当技術分野で周知の例示的なスパニングツリーアルゴリズムが記載されており(例えば、非特許文献1参照。)、この文献の全体を参照により本明細書に組み込む。この論文の方法は、各パスに課されるコストを入力とする。当技術分野で周知のパスコスト割当て方法の1つは、往復パス待ち時間をコストとして使用するものであり、待ち時間は3つの別々の試行の中央値をとることによって推定される。
この方法のセキュリティ攻撃の受けやすさは、悪意あるグループメンバノードに関してのものである。グループに属さないノードは、障害通知メッセージがグループメンバに送達されないようにすることはできず、偽の障害通知メッセージを注入してDoS攻撃を開始することもできない。しかし、悪意あるグループメンバは、他のメンバに本物の障害通知が聞こえないようにすることができ、またDos攻撃を開始することができる。この方法のスパニングツリー手法は、直接ピーン方法よりもよくスケールするが、システムが多くのグループを含むときは、やはり余分なプロービングトラフィックを生じる。
本発明の別の実施形態によれば、接続性を維持するための別の方法が提供される。この方法は、既存のオーバーレイネットワークを使用して接続性および生死を監視する。オーバーレイネットワークは、基礎をなすルーティングトポロジ(すなわちIPルーティング)の最上部に存在して機能する、オーバーレイノード間のアプリケーションレベルのルーティングトポロジである。適したオーバーレイネットワーク実装形態の1つとしてSkipNetが、本願の譲受人に譲渡され、全体を参照により本明細書に組み込む米国特許出願第10/356961号明細書に記載されている。任意のオーバーレイネットワークを使用することができるが、この接続性維持方法は、オーバーレイネットワークがオーバーレイネットワーク中のノード間で能動的にピーンを実施してネットワーク中の生死および接続性を維持するときに、最も有利である。本発明のこの実施形態は、基礎をなすルーティング技術によって提供されるFNグループメンバ間の直接的な接続性を、オーバーレイネットワークによって提供される接続性で置き換えることによって、スケーラブルなオーバーレイルーティング技術を利用してFNグループ中の接続性を監視する。
図7に、例示的なオーバーレイネットワークトポロジを示す。オーバーレイネットワークは、オーバーレイネットワーク中のノード1〜12の間でアプリケーションレベルのルーティングを提供する。オーバーレイネットワーク中の各ノードは、通信リンクを共に確立したノードのルーティングテーブルを維持する。例えば図7では、ノード2は、そのルーティングテーブル中でノード1および3へのポインタを維持し、ノード3は、そのルーティングテーブル中でノード2、4、7へのポインタを維持する。したがって、ノード4がノード1にメッセージを送る場合、このメッセージは、ノード4と1の間のオーバーレイルーティングパス中でノード3および2を横断しなければならない。ネットワーク中の生死および接続性を維持するために、各ノードは、そのルーティングテーブル中のノードに定期的にピーンする。あるノードがピーンに応答できない場合、ピーンの送信元は、そのルーティングテーブルを更新して、応答しないノードを削除する。あるノードが、そのルーティングテーブル中にないノードからピーンを受け取った場合、その新しいノードへのポインタでそのルーティングテーブルを更新することができる。
FN機能を既存のオーバーレイネットワークの最上部で実施するために、オーバーレイネットワークは、次のことを提供にしなければならない。すなわち、1)オーバーレイネットワークの中をメッセージがルーティングされる結果として、あらゆる中間ノード上でアプリケーションレベルのアップコール(upcall)が行われること(オーバーレイネットワークから見ればFN機能はアプリケーションとして扱われる)、および、2)ノードのルーティングテーブルが変更される結果として、その変更を詳述するアプリケーションレベルのアップコールが行われることであり、変更は、オーバーレイ通信障害と、オーバーレイネットワーク中に新しい近隣ノードが出現したことで生じた変更とのどちらかである場合がある。すなわち、各オーバーレイノードは、ノードを横断するすべてのメッセージと、すべてのルーティングテーブル変更を、FN機能に通知しなければならない。
FNグループ中の接続性を監視するためのこの方法では、障害通知を広めるためのマルチキャストツリーが構築される。マルチキャストツリーは、基本的には前述のようなFNグループノードのスパニングツリーだが、FNグループの作成主ノードと、FNグループの他のすべてのノードとの間のオーバーレイルーティングパス中の、あらゆるノードも含む。構築できるマルチキャストツリーのタイプの1つは、スクライブ(Scribe)ツリーであり(例えば、非特許文献2参照。)、この文献の全体を参照により本明細書に組み込む。本発明は、FN機能が、マルチキャストツリーに加わることになるあらゆるノード上で稼動していると仮定する。
マルチキャストツリーは、FNグループが作成主ノードによって作成されるときに構築される。アプリケーションが、FNID(および場合によっては前述のようにアプリケーション状態)を含むセットアップメッセージを各FNグループノードに送ると、セットアップメッセージは、FNグループIDとルーティングパス近隣ノードとを記憶する内部状態を設定する。この内部状態は、作成主ノードとFNグループノードとの間のオーバーレイルーティングパス中でセットアップメッセージが横断する各ノードで使用される。この内部状態は、このノードが、このノードで受け取るすべてのメッセージ、ならびにすべてのルーティングテーブル変更情報を、このノード上で稼動するFN機能に送達すべきであることを指示する。セットアップメッセージが作成主ノードとFNグループノードとの間のオーバーレイルーティングパス中のノードを横断するのに伴って、パス中の各ノードは、メッセージを送ってきたノードへのFNグループポインタを記録する。FNグループノードからの確認メッセージが、記録されたポインタを使用して同じパス中のオーバーレイノードを横断するのに伴って、各ノードは再び、確認メッセージを送ってきたノードへのFNグループポインタを記録する。この結果、作成主ノードと、FNグループに特に関連するFNグループノードとの間のオーバーレイルーティングパス中に、双方向通信リンクが生み出される。
本発明の別の実施形態では、マルチキャストツリーを生み出すのに必要なのは、セットアップメッセージだけである。セットアップメッセージが作成主ノードとFNグループノードとの間のオーバーレイルーティングパス中のノードを横断するのに伴って、パス中の各ノードは、メッセージを送ってきたノードへのFNグループポインタを記録する。この実施形態では、パス中の各ノードは、オーバーレイルーティングパス中の次のノードへのFNグループポインタも記録し、このノードにセットアップメッセージを転送する。これは、オーバーレイネットワークが「NextHop」呼出しをサポートするときに達成され、この呼出しは、メッセージが引き続きルーティングされたとき次にどのオーバーレイノードに遭遇することになるかを、オーバーレイノード上で稼動するFN機能に通知することができる。この結果、作成主ノードと、FNグループに特に関連するFNグループノードとの間のオーバーレイルーティングパス中に、双方向通信リンクが生み出される。
本発明の別の実施形態では、セットアップメッセージは2つのメッセージに分割され、一方は、グループ作成主と、接触を受けている特定のメンバとの間を直接に移動し、他方は、オーバーレイによって提供されたルーティングパスを使用してルーティングされる。直接のメッセージは、グループを確立するのに十分なものであり、このメッセージによってFN機能は、作成主ノードにおけるグループをアプリケーションに知らせる。ルーティングされるメッセージもまた、FNグループに関する障害通知を回避するために、その後すぐに完了しなければならない。セットアップ後、オーバーレイパスに沿って接続性が維持される。
図8aに、オーバーレイネットワーク中で作成主ノードからセットアップメッセージを受け取った各ノードで、FN機能によって実行される方法を示す。ステップ800で、ノード上のFN機能は、セットアップメッセージをノードから受け取る。ステップ810で、FN機能は、ノード中で内部状態をセットアップする。ステップ820で、FN機能は、メッセージを送ってきたノードへのポインタを記録する。ステップ830で、FN機能は、オーバーレイルーティングパス中の次のノードにセットアップメッセージを転送する。図8bに、オーバーレイネットワーク中でFNグループノードから確認メッセージを受け取った各ノードで、FN機能によって実行される方法を示す。ステップ840で、ノード上のFN機能は、確認メッセージをノードから受け取る。ステップ850で、FN機能は、メッセージを送ってきたノードへのポインタを記録する。ステップ860で、FN機能は、ステップ820で記録したポインタが指すノードにメッセージを転送する。
図7のオーバーレイネットワークで、ノード1、4、5、8がFNグループ中のノードであると考えてみる。作成主ノードであるノード4は、FNグループの確立中または確立後に、セットアップメッセージをノード1、5、8に送る(すなわち、あらゆるノードの到達可能性が判定される)。メッセージはノード3によって受け取られ、内部状態がノード3中で設定される。FNグループに関連するノード4へのポインタが、ノード3で記録される。次いでメッセージは、ノード2(ノード1へのオーバーレイルーティングパス中の次のノード)と、ノード7(ノード5および8へのオーバーレイルーティングパス中の次のノード)に転送される。ノード2および7は、このプロセスを繰り返し、内部状態を設定し、FNグループに関連する3へのポインタを記録する。ノード2は、メッセージをノード1に転送し、ノード7は、メッセージをノード6(ノード5へのオーバーレイルーティングパス中の次のノード)およびノード8に転送する。ノード6は、このプロセスを繰り返し、内部状態を設定し、FNグループに関連するノード7へのポインタを記録し、メッセージをノード5に転送する。
メッセージがノード1、5、8で受け取られると、これらのノードは、メッセージを送ってきたノードへのポインタを記録する。これらのノードはまた、メッセージヘッダから、それらがセットアップメッセージの意図された受信側であると決定する。メッセージを転送し続ける代わりに、ノード1、5、8は、確認メッセージを作成主ノード4に返信する。確認メッセージは、セットアップメッセージによって生み出されたポインタパスを使用して、オーバーレイルーティングパスを横断して作成主ノードに戻る。したがって、確認メッセージは、セットアップメッセージと同じオーバーレイルーティングパスを横断する。オーバーレイルーティングパス中で確認メッセージを受け取った各ノードは、メッセージを送ってきたノードへのポインタを記録する。
例えば、ノード5は確認メッセージをノード6に転送し、ノード6はノード5へのポインタを記録する。ノード6は確認メッセージをノード7に転送し、ノード7はノード6へのポインタを記録する。ノード7は確認メッセージをノード3に転送し、ノード3はノード7へのポインタを記録する。ノード3は確認メッセージをノード4に転送し、ノード4はノード3へのポインタを記録する。ノード1および8も同様に、確認メッセージをノード4に送る。ノード4がFNグループ中のすべてのノードから確認メッセージを受け取ったとき、作成主ノードであるノード4は、FNグループがうまく作成されたと決定する。マルチキャストツリーもうまく作成されており、図9にこのトポロジを示す。このマルチキャストツリーは、FNグループの各ノード(ノード1、4、5、8)を含み、また、FNグループノードと作成者ノードであるノード4との間の各ルーティングパス中のあらゆるノードを含む。したがって、このマルチキャストツリーは以下の表現で表される。
パスP1,4=ノード1、2、3、4
パスP5,4=ノード5、6、7、3、4
パスP8,4=ノード8、7、3、4
上の表現で、Pn,cは、FNグループノードnからFNグループ作成主ノードcへのオーバーレイノードのパスである。したがって以下のとおりである。
マルチキャストツリーT=P1,4∪P5,4∪P8,4
したがって、マルチキャストツリーTは、オーバーレイネットワークのノード1〜8を含む。図10に、オーバーレイネットワークの上に重ねられたマルチキャストツリーTを点線で示す。
セットアップメッセージがFNIDおよびアプリケーション状態を含んでいた場合は、FNグループ中の各ノードは、セットアップメッセージを受け取ると、アプリケーション状態とFNIDとに関連する障害処理メソッドを確立する。FNグループがうまく作成されない(すなわちFNグループの少なくとも1つのノードに到達できない)場合、作成主ノードは、このFNグループについてのピーンに応答するのを止め、すでにセットアップメッセージを受け取ったノードに障害通知を送る。次いで、セットアップメッセージを受け取って障害処理メソッドを確立したノードは、障害通知を受け取ると、障害処理メソッドを実行する(それによりアプリケーション状態をガーベージコレクションする)。セットアップメッセージがFNIDおよびアプリケーション状態を含んでいなかった場合は、作成主ノードは、FNグループがうまく作成された後で、FNIDおよびアプリケーション状態をFNグループノードに送る。
オーバーレイネットワーク中の各ノードは、隣接ノードに定期的にピーンして、そのルーティングテーブル中のノードの生死および接続性を監視する。マルチキャストツリーはオーバーレイネットワークの最上部で確立されるので、マルチキャストツリー中の隣接ノードは、必然的にオーバーレイネットワーク中の隣接ノードである。マルチキャストツリー中のノードがそのルーティングテーブルに変更を加えたときは、そのノードは、そのノード上で稼動するFN機能に通知する。ルーティングテーブルの変更が単に新しいノードの追加である場合は、その変更は無視される。しかし、あるノードが隣接ノードにピーンしたのに、ピーンされたノードが応答しない場合は、ピーンしたノードはそのルーティングテーブルを改変して、応答のないノードを削除する。ノードは、一杯になって異なるノードで置き換えられたときにもルーティングテーブルから削除される。FN機能は、この変更の通知を受け、オーバーレイルーティングテーブルの変更がFNグループに影響するかどうか判定する。例えば、図10のノード6が、それ自体とノード10との間のオーバーレイ通信障害を検出した場合、ノード10はFNグループに関連するマルチキャストツリー中にはないので、ノード6上のFN機能は、この結果生じるルーティングテーブル変更は無視することになる。しかし、ノード6におけるルーティングテーブル変更が、ノード5へのオーバーレイパス中の通信障害を示した場合は、FN機能は、このオーバーレイネットワーク通信障害がFNグループ中のノード間の通信障害でもあると判定することになる。
図11に、ルーティングテーブル変更報告を受け取ったときにFN機能によって実行される方法を示す。ステップ1100で、FN機能は、ルーティングテーブル変更報告から、マルチキャストツリー中の隣接ノードでもあるオーバーレイノードとのオーバーレイ通信に障害が発生しているかどうかを判定する。そうでない場合は、ステップ1101で、FN機能はルーティングテーブル変更を無視する。しかし、障害が発生したオーバーレイノードがマルチキャストツリー中の隣接ノードであった場合は、ステップ1102で、FN機能は、マルチキャストツリー中のすべての到達可能な隣接ノードに障害通知メッセージを送る。ステップ1103で、FN機能は、障害が検出されたマルチキャストツリーに関連するFNIDについての障害ハンドラが確立されているかどうか判定する。確立されている場合は、ステップ1104で、FN機能は、このFNIDについて確立された障害処理メソッドを呼び出す。確立されていない場合は、FN機能はステップ1105に直接進む。ステップ1105で、FN機能は、障害ハンドラをFNIDから分離する。ステップ1102〜1105はまた、障害通知メッセージを受け取ったあらゆるノード上のFN機能によっても実施される。
この障害通知プロセスを例示するために、図10のノード6に障害が発生し、もはや隣接するオーバーレイノードからのピーンに応答していないと仮定する。ノード7は、ノード6がピーンに応答できないとき、オーバーレイネットワーク通信障害を検出する。ノード7は、そのルーティングテーブルを変更してノード6を削除し、ノード7上で稼動するFN機能にこの変更を通知する。ノード7上のFN機能は、ノード6がマルチキャストツリー中のノードなので、ノード6とノード7の間のオーバーレイネットワーク通信障害がFNグループ中の少なくとも2つのノード間の通信障害を意味することを決定する。これに応答して、ノード7は、マルチキャストツリー中でまだ到達可能な隣接ノード、すなわちノード3および8に障害通知メッセージを送る。ノード3が障害通知メッセージを受け取ると、メッセージはノード3上で稼動するFN機能に渡される。障害通知メッセージは、障害が検出されたFNIDを示す。次いで、ノード3上のFN機能は、このFNIDに関連する1つまたは複数のマルチキャストツリー中の隣接ノードに障害通知メッセージを転送する。
この場合、障害通知メッセージはノード2および4に転送される。ノード2上のFN機能は、ノード3で実施されたプロセスを繰り返し、その隣接ノードであるノード1に障害通知メッセージを転送する。障害通知メッセージがノード1、4、8で受け取られると、メッセージはFN機能に渡される。FN機能は、メッセージ中のFNIDがそのノード上に登録済み障害ハンドラを有することを認識する。したがって、FN機能は、このFNIDについて確立された障害処理メソッドを呼び出す。次いで、FNグループはもはや存在しないので、障害ハンドラはFNIDから分離される。
ノード6で障害が発生したので、ノード5は障害通知メッセージを受け取ることができない。しかし、ノード5がノード6からのピーン応答を受け取ることができないとき、ノード5は、そのルーティングテーブルからノード6を削除し、ノード5上のFN機能にこの変更を通知する。FN機能は、ノード6がマルチキャストツリー中の隣接ノードなので、ノード5と6の間のオーバーレイネットワーク通信障害がマルチキャストツリーに関連するFNグループ中の少なくとも2つのノード間の通信障害を意味することを決定する。FN機能は、通信障害が検出されたFNグループのFNIDがノード5上の障害ハンドラに関連することを認識する。したがって、FN機能は、このFNIDについて確立された障害処理メソッドを呼び出し、障害ハンドラはこのFNIDから登録解除される。マルチキャストツリー中で到達可能なノードは他にないので、ノード5は障害通知メッセージを転送しない。
別法として、オーバーレイネットワーク通信障害が報告されなくても、ノード上のアプリケーションは障害通知メッセージを伝える。アプリケーションがFNグループ中の別のノードにメッセージを送ったのに応答を受け取れない場合、アプリケーションは、FN機能を使用して、他のFNグループノードからのFNグループメッセージに応答するのを止めて、これらの他のノードがFNグループ中の障害を検出するようにすることにより、FNグループ中の障害を知らせることができる。さらに、この実装形態では、マルチキャストツリー中のすべての到達可能なノードに障害通知メッセージを送ることもできる。
FN機能によって使用されるオーバーレイルーティングリンクは両側からピーンされるので(オーバーレイによってピーンされない場合はFN機能によって)、ピーンが失敗すると、2つの結果的な動作のうちの一方が行われる。すなわち、(1)リンクの他方の側からの対応するピーンもまた失敗し、その結果、第1の通知メッセージによって到達不可能なマルチキャストの部分をカバーする第2の通知メッセージがもたらされるか、(2)リンクの他方の側からの対応するピーンが成功し、その場合に、ピーンされたマルチキャストツリーノードが、グループに関する障害通知を伝えたことの指示と共にピーンに応答するかである。次いで、やはりこの結果、第1の通知メッセージによってカバーされなかった生死連鎖の部分をカバーする第2の通知メッセージがもたらされる。いずれの場合も、結果として、マルチキャストツリーのあらゆるクラッシュしていないノードは、最終的には障害通知メッセージを受け取ることになる。これは、さらにノード障害またはリンク障害が発生した場合でも同じである。というのは、追加の障害報告および対応する通知メッセージが生じるだけだからである。
述べたこの手法は、中間ノードに障害が発生したとき、またはオーバーレイルーティングテーブルが変化したときは常に偽陽性を生じる可能性があり、それにより、もはやマルチキャストツリーリンクとルーティングテーブルリンクとの間には直接的な対応がなくなる。本発明は、FN機能内で自動修復機能を実施することによって、これらの偽陽性の多くをマスクする。FNグループノードが通信障害を検出したとき、FNグループノードは、アプリケーションの障害ハンドラをすぐに呼び出すのではなく、FNグループについての新しいマルチキャストツリーを確立しようとする。新しいFNグループをタイムアウト期間中にうまく確立することができない場合は、各グループメンバノードは、保留中障害通知をアプリケーションに送達する。
本発明は、重複するマルチキャストツリーを有する複数のFNグループがあるとき、共用による節約を得ることができる。各オーバーレイネットワークピーンメッセージは、対応するオーバーレイルーティングリンクを含むマルチキャストツリーのFNグループすべてを効果的に監視している。さらに、2つのオーバーレイノード間で、このリンクを介して通知メッセージが送られるべきすべてのFNグループについてのFNIDをエンコードした単一の障害通知メッセージを送ることができる。また、アプリケーションは、複数の同時FNグループを確立することもできる。
クラッシュ回復および遅いクロックに対処するために、各ノードは、監視しているFNグループのセットを交換および比較することができなければならない。潜在的に多くのグループがあるので、単純にFNIDのリストを交換することは高くつく可能性がある。そうではなく本発明は、一方向ハッシュ関数を使用して、ノードが監視しているFNIDのセットに対する「チェックサム」を生成する。このチェックサムは、2つのノードが最後にそれらのFNIDリストを相互に比較したときから何も変化がないことを確認するために、2つのノード間で安価に交換することができる。この結果、完全なFNIDリストは、ノードによって監視されているグループのセットが変化したときにだけ交換すればよい。チェックサムの交換は、関連するチェックサムを生死ピーンメッセージに含め、場合によっては応答メッセージにも含めることによって、あらゆるオーバーレイネットワーク生死ピーンと共に行われる。
この方法のスケーラビリティは、提示された他の方法よりもずっとよい。この方法は、ネットワークプローブトラフィックの負担が、維持されているFNグループの数から独立している唯一の方法である。自動修復により、本発明は低い偽陽性率を実現する。自動修復を実施するコストは、FNグループのいずれか所与の2つのメンバ間のオーバーレイルーティングパス上にあるオーバーレイノードの平均数、ならびにオーバーレイメンバのチャーンレート(churn rate)に依存する。中間ノードの数は、オーバーレイに属するノードの数と、オーバーレイが呈するいずれかの「ローカル性」(locality)プロパティとの両方に依存する。例えば、SkipNetがオーバーレイネットワークとして使用される場合、メンバが相互にローカルであるグループは、オーバーレイネットワークを介して任意の2つのグループメンバを接続するのに必要な中間ルーティングホップ(intermediate routing hops)の数が減少するので、より低い自動修復率を受ける。
この方法の通知待ち時間は、内輪でグループ単位のスパニングツリー方法の通知待ち時間と同様だが、例外として、通知メッセージがとる通信ホップの数は、通常はO(log n)(nはオーバーレイネットワーク中のノード数)になり、O(log m)(mは単一のグループ中のノード数)にはならない。残念ながら、この設計のセキュリティ攻撃の受けやすさは、他のどの設計よりもかなり高い。各FNグループは、FNグループのメンバでないノードが正しく挙動するものと信用しなければならない。実際、任意のオーバーレイメンバは正しく生死を監視して障害通知を転送するものと信用されなければならないので、信用できない第三者をオーバーレイに含めると、第三者DoS攻撃を防ぐのが困難になる。したがって、この方法によって提供されるセキュリティのレベルが許容できない場合は、前に論じた他の2つの方法のうちの一方を代わりに使用すべきである。
クラッシュから回復すると、FN機能を稼動させているノードは、障害が発生したこと、およびいずれかのFNグループに関連する古いアプリケーション状態をクリーンアップすべきであることを知る。アプリケーション状態が揮発性記憶装置に記憶される場合は、クラッシュがノードのためのこのクリーンアップを実施してしまっている場合がある。また、回復したノードは、障害通知が他のグループメンバに伝搬されたかどうかわからない場合がある。したがって本発明では、ノードが、生死をチェックするメッセージの一部として、それらの生きているFNグループのリストを能動的に比較する必要がある。不一致があれば、すでに障害が発生したといくらかのグループメンバによって考えられているいずれかのグループに関する通知をトリガすることによって解決される。
本発明の一実施形態では、ノードが切断による障害通知を生成するのは、2つのノードがタイムアウト期間中に何らかのトラフィックを交換することができなかった場合だけである。したがって、タイムアウト期間よりも長く続かない一時的なノードクラッシュおよび通信障害は、それによってアプリケーションが明示的に障害通知をトリガしない限り、マスクされる。
本発明の別の実施形態では、安定記憶装置を使用して、短期間のノードクラッシュをマスクすることを試みる。クラッシュから回復したノードは、それが参加しているすべてのFNグループがまだ生きていると見なす。このノードを外界と確実に調和させるには、FNIDの能動的な比較で十分である。さらに、互換性の問題もない。すなわち、安定記憶装置を利用するノードが、安定記憶装置を利用しないノードと共存することができる。クラッシュから回復したノード上の通信障害はやはり、それが参加しているすべてのFNグループに障害を引き起こすことになる。
本発明は、FNグループの何らかのサブセットのメンバ間におけるすべての通信が不可能な場合、FN機能が最終的に通知することを保証する。しかし、あるFNグループメンバがなお、メッセージを確実に別のグループメンバに送ろうと試み、意図された受信側に何らかの不具合が気付かれないまま、この試みを失敗に終わらせることがあるかもしれない。例えば無線ネットワーク中では、リンク条件により、生死ピーンメッセージなどの小さいメッセージだけは届くが、より大きいメッセージは届かない場合がある。ノードが明示的に通信できることを保証するために、または通信できないことにノードが気付くことを保証するために、本発明では、ノード上で稼動するアプリケーションが通信を試みて失敗した(したがって通知をトリガしたいと思っている)場合、アプリケーションはノード上のFN機能に通知する必要がある。したがって、送信が失敗したとき、通知に値する障害が発生する。
本発明はまた、非推移的なまたは非対称の接続性障害にも対処する。2つのノードが、直接通信することはできないが、第三者からくるメッセージには両方とも応答していた場合、これらのノードは、確実なメッセージを交換しようとするときだけしか障害を経験しないかもしれない。本発明はそれでもなお、どちらかの側がこの時点で送信障害のために通知をトリガするなら、生きているすべてのFNグループメンバに通知が聞こえることを保証する。
本発明はさらに、FNグループメンバが、肯定応答されるトラフィックと肯定応答されないトラフィックの混合トラフィックを生成する場合にも対処する。例えば、あるノードが、伝送制御プロトコル(TCP)を介した制御ストリームと共に、ユーザデータグラムプロトコル(UDP)を介したストリーミングビデオを送信する場合がある。アプリケーションは、どの送達障害が通知のトリガに値するかを決定する。本発明はアプリケーションのトラフィックを監視せず、したがって、肯定応答を期待したのではないトラフィックだけを送信したアプリケーションは、通知をトリガすべきか否かわからないかもしれない。信頼性のないリンクが障害通知に値すると決定する義務は、アプリケーションに委ねられている。
本発明の原理を適用することのできる多くの可能な実施形態に鑑みて、図面を参照して本明細書に述べた実施形態は、例示的なものに過ぎず、本発明の範囲を限定するものと考えるべきではないことを理解されたい。例えば、本発明の趣旨を逸脱することなく、ソフトウェアで示した例示の実施形態の要素をハードウェアで実現することやその逆を行うこともでき、あるいは例示の実施形態の構成および詳細を修正することもできることは、当業者なら理解するであろう。したがって、本明細書に述べた本発明は、添付の特許請求の範囲およびその均等物の範囲内に含めることのできるすべての実施形態を企図する。
本発明が存在する例示的なコンピュータシステムを一般に示すブロック図である。 本発明が機能する例示的なネットワーク環境を一般に示すブロック図である。 本発明におけるアプリケーション、障害通知機能、ネットワークノードの間の対話を示すブロック図である。 本発明による障害通知グループの作成を示す流れ図である。 本発明を使用して障害通知グループを作成する際にアプリケーションによって実施されるステップを示す流れ図である。 本発明のアプリケーションプログラムインタフェースを表す擬似コードの図である。 本発明の別のアプリケーションプログラムインタフェースを表す擬似コードの図である。 本発明の別の実施形態による障害通知グループの作成を示す流れ図である。 本発明の例示的なスパニングツリー障害通知トポロジを示す図である。 例示的なオーバーレイネットワーク中のノードの通信トポロジを示す図である。 本発明におけるマルチキャスト障害通知ツリーの作成中にセットアップメッセージを受け取ったノードによって実施されるステップを示す流れ図である。 本発明におけるマルチキャスト障害通知ツリーの作成中に確認を受け取ったノードによって実施されるステップを示す流れ図である。 本発明の例示的なマルチキャスト障害通知ツリーの通信トポロジを示す図である。 図7のオーバーレイネットワーク通信トポロジの上に重ねられた、本発明の例示的なマルチキャスト障害通知ツリーの通信トポロジを示す図である。 通信障害が検出されたときに本発明のマルチキャスト障害通知ツリー中のノードによって実施されるステップを示す流れ図である。
符号の説明
120 処理ユニット
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 固定型な不揮発性メモリインタフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 取外し可能な不揮発性メモリインタフェース
160 ユーザ入力インタフェース
161 マウス
162 キーボード
170 ネットワークインタフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインタフェース
195 出力周辺インタフェース
196 プリンタ
197 スピーカ
110 コンピュータ
111 ネットワーク
200 FN機能
201 アプリケーション
202 ノード

Claims (52)

  1. ネットワーク中の複数のノード上で動作する分散システム中で障害通知を保証する方法であって、
    前記複数のノードを含み一意識別子を有する障害通知グループを作成するステップと、
    アプリケーションの障害処理メソッドを前記障害通知グループの前記一意識別子に関連付けるステップと、
    障害を確認するステップと、
    前記障害が確認されたときに、前記障害通知グループ中の各ノードに障害通知を伝え、前記障害処理メソッドを実行するステップと
    を含むことを特徴とする方法。
  2. 前記障害が確認されて前記障害処理メソッドが実行された後で、前記障害処理メソッドを前記一意識別子から分離するステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. 障害通知グループを作成するステップは、
    前記障害通知グループ中の各ノードが存在することを検証するステップと、
    前記障害通知グループ中の各ノードにうまく接触できる場合に、前記障害通知グループについての前記一意識別子を生成するステップと
    を含むことを特徴とする請求項1に記載の方法。
  4. 障害通知グループを作成するステップは、前記障害通知グループ中の各ノードにうまく接触できない場合に前記障害処理メソッドを実行するステップを含むことを特徴とする請求項3に記載の方法。
  5. 障害通知グループを作成するステップは、
    前記障害通知グループについての前記一意識別子を生成するステップと、
    アプリケーション状態と前記一意識別子とを含む招待メッセージを前記障害通知グループの各ノードに送るステップと、
    前記障害通知グループの各メンバが前記招待メッセージを受け取ったことを検証するステップと
    を含むことを特徴とする請求項1に記載の方法。
  6. 前記ノードグループ中のいずれかのノードが前記招待を受け取れなかった場合に、
    前記招待メッセージをすでに受け取ったノードに障害通知を伝えるステップと、
    前記障害処理メソッドを実行するステップと
    をさらに含むことを特徴とする請求項5に記載の方法。
  7. 障害通知を伝えるステップは、前記障害通知グループ中のノードに障害通知メッセージを送るステップを含むことを特徴とする請求項1に記載の方法。
  8. 障害通知を伝えるステップは、前記障害通知グループ中のノードからの通信要求に対して応答失敗するステップを含むことを特徴とする請求項1に記載の方法。
  9. 障害通知を伝えるステップは、障害が確認された障害通知グループに関係する通信要求だけに対して応答失敗するステップを含むことを特徴とする請求項1に記載の方法。
  10. 障害を確認するステップは、前記障害通知グループ中の他の少なくとも1つのノードへの通信リンクにおける障害を確認するステップを含むことを特徴とする請求項1に記載の方法。
  11. 障害を確認するステップは、前記障害通知を伝える命令を前記アプリケーションから受け取るステップを含むことを特徴とする請求項1に記載の方法。
  12. 障害を確認するステップは、前記障害通知グループの修復に1回または複数回にわたって失敗したステップを含むことを特徴とする請求項1に記載の方法。
  13. 障害を確認するステップは、共に前記障害通知グループ中にある2つのノード間の通信障害と、共に前記障害通知グループ中にない2つのノード間の通信障害とを区別するステップを含むことを特徴とする請求項1に記載の方法。
  14. アプリケーションが前記障害通知グループ中の各ノードにピーンして、ピーンへの応答が受け取られなかったときに前記障害を決定することから、前記障害が確認されることを特徴とする請求項1に記載の方法。
  15. 前記障害通知グループ中の前記ノードはスパニングツリートポロジを有し、アプリケーションが前記スパニングツリー中の隣接ノードにピーンして、ピーンへの応答が受け取られなかったときに前記障害を決定することから、前記障害が確認されることを特徴とする請求項1に記載の方法。
  16. 前記障害通知グループ中の前記ノードはオーバーレイネットワーク中のノードのサブセットであり、障害通知グループを作成するステップは、前記障害通知グループ中の各ノードに構築メッセージを送ることによってマルチキャストツリーを作成するステップを含むことを特徴とする請求項1に記載の方法。
  17. 前記構築メッセージは、オーバーレイルーティングパスを介して前記障害通知グループ中の各ノードにルーティングされ、前記オーバーレイルーティングパス中のノードは、前記オーバーレイルーティングパス中の隣接ノードへのポインタを記録することを特徴とする請求項16に記載の方法。
  18. 確認メッセージを受け取るステップをさらに含み、前記構築メッセージはオーバーレイルーティングパスを介して前記障害通知グループ中の各ノードにルーティングされ、前記オーバーレイルーティングパス中の各ノードは前記確認メッセージ受信時に前のノードへのポインタを記録し、前記確認メッセージは前記オーバーレイルーティングパスの中を逆向きにルーティングされ、前記逆向きのオーバーレイルーティングパス中の各ノードは前記確認メッセージ受信時に前のノードへのポインタを記録することを特徴とする請求項16に記載の方法。
  19. 前記障害を確認するステップは、前記オーバーレイネットワーク中のノードへの通信リンクに障害が発生したことを確認し、前記ノードが前記マルチキャストツリーのメンバであったかどうかを判定するステップを含むことを特徴とする請求項16に記載の方法。
  20. 前記ノードが前記マルチキャストツリーのメンバであった場合は、前記マルチキャストツリー中の隣接ノードに障害通知を伝えることを特徴とする請求項19に記載の方法。
  21. 前記ノードが前記マルチキャストツリーのメンバであった場合は、前記マルチキャストツリー中の隣接ノードからのメッセージに応答しないことによって前記隣接ノードに障害通知を伝えることを特徴とする請求項19に記載の方法。
  22. 前記ノードが前記マルチキャストツリーのメンバであった場合は、前記障害処理メソッドを実行することを特徴とする請求項19に記載の方法。
  23. ネットワーク中の複数のノード上で動作する分散システム中で障害通知を保証する方法であって、
    複数のノードを含む障害通知グループについての一意識別子を受け取るステップと、
    アプリケーションの障害処理メソッドを前記障害通知グループの前記一意識別子に関連付けるステップと、
    障害を確認するステップと、
    前記障害が確認されたときに、前記障害通知グループ中の各ノードに障害通知を伝え、前記障害処理メソッドを実行するステップと
    を含むことを特徴とする方法。
  24. 前記障害が確認されて前記障害処理メソッドが実行された後で、ガーベージコレクションを実施して、前記障害処理メソッドをアプリケーション状態から分離するステップをさらに含むことを特徴とする請求項23に記載の方法。
  25. 障害通知を伝えるステップは、前記障害通知グループ中のノードに障害通知メッセージを送るステップを含むことを特徴とする請求項23に記載の方法。
  26. 障害通知を伝えるステップは、前記障害通知グループ中のノードからの通信要求に対して応答失敗するステップを含むことを特徴とする請求項23に記載の方法。
  27. 障害通知を伝えるステップは、障害が確認された障害通知グループに関係する通信要求だけに対して応答失敗するステップを含むことを特徴とする請求項23に記載の方法。
  28. 障害を確認するステップは、前記障害通知グループ中の他の少なくとも1つのノードへの通信リンクにおける障害を確認するステップを含むことを特徴とする請求項23に記載の方法。
  29. 障害を確認するステップは、前記障害通知を伝える命令を前記アプリケーションから受け取るステップを含むことを特徴とする請求項23に記載の方法。
  30. 障害を確認するステップは、前記障害通知グループの修復に1回または複数回にわたって失敗したステップを含むことを特徴とする請求項23に記載の方法。
  31. アプリケーションが前記障害通知グループ中の各ノードにピーンして、ピーンへの応答が受け取られなかったときに前記障害を決定することから、前記障害が確認されることを特徴とする請求項23に記載の方法。
  32. 前記障害通知グループ中の前記ノードはスパニングツリートポロジを有し、アプリケーションが前記スパニングツリー中の隣接ノードにピーンして、ピーンへの応答が受け取られなかったときに前記障害を決定することから、前記障害が確認されることを特徴とする請求項23に記載の方法。
  33. 前記障害通知グループ中の前記ノードはオーバーレイネットワーク中のノードのサブセットであり、障害通知ツリーに加わるステップをさらに含み、前記ステップは、
    オーバーレイルーティングパスを介して作成主ノードから構築メッセージを受け取るステップと、
    前記オーバーレイルーティングパス中の隣接ノードへのポインタを記録するステップを含むことを特徴とする請求項23に記載の方法。
  34. 前記作成主ノードに確認メッセージを送るステップをさらに含み、前記構築メッセージはオーバーレイルーティングパスを介して前記障害通知グループ中の各ノードにルーティングされ、前記オーバーレイルーティングパス中の各ノードは前記確認メッセージ受信時に前のノードへのポインタを記録し、前記確認メッセージは前記オーバーレイルーティングパスの中を逆向きにルーティングされ、前記逆向きのオーバーレイルーティングパス中の各ノードは前記確認メッセージ受信時に前のノードへのポインタを記録することを特徴とする請求項33に記載の方法。
  35. 障害を確認するステップは、共に前記障害通知グループ中にある2つのノード間の通信障害と、共に前記障害通知グループ中にない2つのノード間の通信障害とを区別するステップを含むことを特徴とする請求項33に記載の方法。
  36. 障害を確認するステップは、前記オーバーレイネットワーク中のノードへの通信リンクに障害が発生したことを確認し、前記ノードが前記マルチキャストツリーのメンバであったかどうかを判定するステップを含むことを特徴とする請求項33に記載の方法。
  37. 前記ノードが前記マルチキャストツリーのメンバであった場合は、前記マルチキャストツリー中の隣接ノードに障害通知を伝えることを特徴とする請求項36に記載の方法。
  38. 前記ノードが前記マルチキャストツリーのメンバであった場合は、前記マルチキャストツリー中の隣接ノードからのメッセージに応答しないことによって前記隣接ノードに障害通知を伝えることを特徴とする請求項36に記載の方法。
  39. 前記ノードが前記マルチキャストツリーのメンバであった場合は、前記障害処理メソッドを実行することを特徴とする請求項36に記載の方法。
  40. ネットワーク中の複数のノード上で動作する分散システム中で障害通知を保証する方法であって、前記複数のノードはオーバーレイネットワーク中のノードのサブセットであり、
    障害通知ツリーに加わるステップと、
    前記ツリー中の隣接ノードへの通信リンクにおける障害を確認するステップと、
    前記障害が確認されたときに障害通知を伝えるステップと
    を含むことを特徴とする方法。
  41. 前記障害通知ツリーに加わるステップは、
    オーバーレイルーティングパスを介して作成主ノードから第1のメッセージを受け取るステップと、
    前記第1のメッセージを送ってきたオーバーレイノードへのポインタを記録するステップと、
    前記オーバーレイルーティングパス中の次のノードを介して、障害通信グループ中のノードに前記第1のメッセージを転送するステップと
    を含むことを特徴とする請求項40に記載の方法。
  42. 前記次のノードへのポインタを記録するステップをさらに含むことを特徴とする請求項41に記載の方法。
  43. 前記障害通知ツリーに加わるステップはさらに、
    前記オーバーレイルーティングパスを介して前記障害通知グループ中のノードから第2のメッセージを受け取るステップと、
    前記第2のメッセージを送ってきたオーバーレイノードへのポインタを記録するステップと、
    前記第1のメッセージを送ってきたオーバーレイノードを介して、前記作成主ノードに前記第2のメッセージを転送するステップと
    を含むことを特徴とする請求項41に記載の方法。
  44. 障害を確認するステップは、共に前記障害通知グループ中にある2つのノード間の通信障害と、共に前記障害通知グループ中にない2つのノード間の通信障害とを区別するステップを含むことを特徴とする請求項40に記載の方法。
  45. 障害を確認するステップは、前記障害通知グループの修復に1回または複数回にわたって失敗したステップを含むことを特徴とする請求項40に記載の方法。
  46. 障害を確認するステップは、前記オーバーレイネットワーク中のノードへの通信リンクに障害が発生したことを確認し、前記ノードが前記マルチキャストツリーのメンバであったかどうかを判定するステップを含むことを特徴とする請求項40に記載の方法。
  47. 前記ノードが前記マルチキャストツリーのメンバであった場合は、前記マルチキャストツリー中の隣接ノードからのメッセージに応答しないことによって前記隣接ノードに障害通知を伝えることを特徴とする請求項46に記載の方法。
  48. コンピュータ可読媒体に組み入れられたアプリケーションプログラムインタフェースであって、
    障害通知グループを作成して前記障害通知グループに一意識別子を割り当てるための第1の関数と、
    アプリケーションの障害処理メソッドを前記一意識別子に関連付けるための第2の関数と、
    前記障害通知グループに障害通知を伝えるための第3の関数とを備えることを特徴とするアプリケーションプログラムインタフェース。
  49. 前記第1の関数は、ノードのセットを表す第1のパラメータと、前記第1の関数の結果である前記一意識別子を返す第2のパラメータとを備えることを特徴とする請求項48に記載のアプリケーションプログラムインタフェース。
  50. 前記第1の関数は、ノードのセットを表す第1のパラメータと、アプリケーション状態を表す第2のパラメータと、前記第1の関数の結果である前記一意識別子を返す第3のパラメータとを備えることを特徴とする請求項48に記載のアプリケーションプログラムインタフェース。
  51. 前記第2の関数は、前記障害処理メソッドを表す第1のパラメータと、前記一意識別子を表す第2のパラメータとを備えることを特徴とする請求項48に記載のアプリケーションプログラムインタフェース。
  52. 前記第3の関数は、前記一意識別子を表す第1のパラメータを備えることを特徴とする請求項48に記載のアプリケーションプログラムインタフェース。
JP2004272462A 2003-10-17 2004-09-17 保証された分散型の障害通知を提供する方法 Expired - Fee Related JP4633426B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/686,658 US7551552B2 (en) 2003-10-17 2003-10-17 Method for providing guaranteed distributed failure notification

Publications (2)

Publication Number Publication Date
JP2005124171A true JP2005124171A (ja) 2005-05-12
JP4633426B2 JP4633426B2 (ja) 2011-02-16

Family

ID=34377645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004272462A Expired - Fee Related JP4633426B2 (ja) 2003-10-17 2004-09-17 保証された分散型の障害通知を提供する方法

Country Status (5)

Country Link
US (1) US7551552B2 (ja)
EP (1) EP1524600B1 (ja)
JP (1) JP4633426B2 (ja)
KR (1) KR101046028B1 (ja)
CN (1) CN100490386C (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008005076A (ja) * 2006-06-21 2008-01-10 Nec Infrontia Corp ネットワークシステム、ネットワーク端末及びそれらに用いるネットワーク機器切替え方法
WO2009004701A1 (ja) * 2007-06-29 2009-01-08 Fujitsu Limited ネットワーク障害検知システム、計測エージェント、監視サーバ、ネットワーク障害検知方法およびネットワーク障害検知プログラム
WO2012153528A1 (ja) * 2011-05-11 2012-11-15 日本電気株式会社 障害通知システム、伝送装置及び障害通知方法
JP2015511099A (ja) * 2012-03-20 2015-04-13 シマンテック コーポレーションSymantec Corporation 相互接続障害のクラスタ全体の一貫した検出

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060005007A1 (en) * 2004-06-14 2006-01-05 Nokia Corporation System, method and computer program product for authenticating a data source in multicast communications
US7697440B2 (en) * 2005-06-17 2010-04-13 Alcatel Lucent Scalable selective alarm suppression for data communication network
US20070061445A1 (en) * 2005-09-13 2007-03-15 Deganaro Louis R Cooperative routing between traffic control device and multi-server application
WO2007066963A1 (en) * 2005-12-08 2007-06-14 Electronics And Telecommunications Research Institute Method for transferring data frame end-to-end using virtual synchronization on local area network and network devices applying the same
US7529976B2 (en) * 2006-05-20 2009-05-05 International Business Machines Corporation Multiple subsystem error reporting
US8737261B2 (en) * 2006-11-27 2014-05-27 Telefonaktiebolaget L M Ericsson (Publ) Node registering method
US7962595B1 (en) * 2007-03-20 2011-06-14 Emc Corporation Method and apparatus for diagnosing host to storage data path loss due to FibreChannel switch fabric splits
DE102007021647A1 (de) * 2007-05-09 2008-11-13 Deutsche Thomson Ohg Verfahren zum Verwalten von Netzwerkkomponenten und Netzwerkkomponente
CN101453385A (zh) * 2007-11-30 2009-06-10 华为技术有限公司 一种故障通告的方法及设备
EP2378428A1 (en) * 2009-01-09 2011-10-19 Panasonic Corporation Communication terminal and communication status modification method
KR101136375B1 (ko) * 2010-07-12 2012-04-18 아주대학교산학협력단 멀티-홉 네트워크에서의 라우팅 경로 설정 방법 및 이를 위한 장치
EP2439910A1 (en) * 2010-10-08 2012-04-11 Thomson Licensing Method and system for maintaining connectivity between data storage devices in a distributed data storage system and corresponding device
TWI447574B (zh) 2010-12-27 2014-08-01 Ibm 記錄崩潰與預防崩潰的方法、電腦可讀媒體、資訊設備、與系統
US9201685B2 (en) 2011-01-28 2015-12-01 Oracle International Corporation Transactional cache versioning and storage in a distributed data grid
US9063852B2 (en) 2011-01-28 2015-06-23 Oracle International Corporation System and method for use with a data grid cluster to support death detection
US9081839B2 (en) 2011-01-28 2015-07-14 Oracle International Corporation Push replication for use with a distributed data grid
US9063787B2 (en) 2011-01-28 2015-06-23 Oracle International Corporation System and method for using cluster level quorum to prevent split brain scenario in a data grid cluster
US9164806B2 (en) 2011-01-28 2015-10-20 Oracle International Corporation Processing pattern framework for dispatching and executing tasks in a distributed computing grid
US20120239810A1 (en) 2011-03-18 2012-09-20 International Business Machines Corporation System, method and computer program product for clustered computer environment partition resolution
US9058205B2 (en) * 2011-10-24 2015-06-16 Symantec Corporation Automatically performing operations on applications based on dependencies on other applications
US20150169598A1 (en) 2012-01-17 2015-06-18 Oracle International Corporation System and method for providing a persistent snapshot of a running system in a distributed data grid
US9417939B2 (en) 2012-06-20 2016-08-16 Microsoft Technology Licensing, Llc Dynamic escalation of service conditions
US9774527B2 (en) 2012-08-31 2017-09-26 Nasdaq Technology Ab Resilient peer-to-peer application message routing
US9515899B2 (en) 2012-12-19 2016-12-06 Veritas Technologies Llc Providing optimized quality of service to prioritized virtual machines and applications based on quality of shared resources
EP2951706B1 (en) * 2013-01-30 2017-06-21 Hewlett-Packard Enterprise Development LP Controlling error propagation due to fault in computing node of a distributed computing system
US9183069B2 (en) * 2013-03-14 2015-11-10 Red Hat, Inc. Managing failure of applications in a distributed environment
JP5790723B2 (ja) * 2013-09-12 2015-10-07 日本電気株式会社 クラスタシステム、情報処理装置、クラスタシステムの制御方法及びプログラム
FR3014623B1 (fr) * 2013-12-06 2016-01-22 Airbus Operations Sas Systeme de communication dans un aeronef comportant un reseau redondant
KR101505624B1 (ko) 2014-01-03 2015-03-24 아주대학교산학협력단 상대적 접근 특성 기반의 이동성 예측 방법 및 그 장치
US9772921B2 (en) * 2014-03-17 2017-09-26 Silver Spring Networks, Inc. Techniques for collecting and analyzing notifications received from neighboring nodes across multiple channels
JP6323243B2 (ja) * 2014-08-07 2018-05-16 富士通株式会社 システム及び異常検知方法
US10664495B2 (en) 2014-09-25 2020-05-26 Oracle International Corporation System and method for supporting data grid snapshot and federation
US10860378B2 (en) 2015-07-01 2020-12-08 Oracle International Corporation System and method for association aware executor service in a distributed computing environment
US10585599B2 (en) 2015-07-01 2020-03-10 Oracle International Corporation System and method for distributed persistent store archival and retrieval in a distributed computing environment
US10798146B2 (en) 2015-07-01 2020-10-06 Oracle International Corporation System and method for universal timeout in a distributed computing environment
US11163498B2 (en) 2015-07-01 2021-11-02 Oracle International Corporation System and method for rare copy-on-write in a distributed computing environment
US10185617B2 (en) * 2016-01-26 2019-01-22 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Adjusting failure response criteria based on external failure data
CN106060464A (zh) * 2016-06-16 2016-10-26 深圳辉锐天眼科技有限公司 视频报警器
US10133617B2 (en) * 2016-07-01 2018-11-20 Hewlett Packard Enterprise Development Lp Failure notifications in multi-node clusters
US10511484B1 (en) * 2017-03-24 2019-12-17 Amazon Technologies, Inc. Membership self-discovery in distributed computing environments
US11550820B2 (en) 2017-04-28 2023-01-10 Oracle International Corporation System and method for partition-scoped snapshot creation in a distributed data computing environment
US11386274B2 (en) * 2017-05-10 2022-07-12 Oracle International Corporation Using communicative discourse trees to detect distributed incompetence
US11373632B2 (en) 2017-05-10 2022-06-28 Oracle International Corporation Using communicative discourse trees to create a virtual persuasive dialogue
JP7086993B2 (ja) 2017-05-10 2022-06-20 オラクル・インターナショナル・コーポレイション コミュニケーション用談話ツリーの使用による修辞学的分析の可能化
US11586827B2 (en) * 2017-05-10 2023-02-21 Oracle International Corporation Generating desired discourse structure from an arbitrary text
US11615145B2 (en) 2017-05-10 2023-03-28 Oracle International Corporation Converting a document into a chatbot-accessible form via the use of communicative discourse trees
US10817670B2 (en) 2017-05-10 2020-10-27 Oracle International Corporation Enabling chatbots by validating argumentation
US10839154B2 (en) 2017-05-10 2020-11-17 Oracle International Corporation Enabling chatbots by detecting and supporting affective argumentation
US11960844B2 (en) 2017-05-10 2024-04-16 Oracle International Corporation Discourse parsing using semantic and syntactic relations
US10769019B2 (en) 2017-07-19 2020-09-08 Oracle International Corporation System and method for data recovery in a distributed data computing environment implementing active persistence
US10721095B2 (en) 2017-09-26 2020-07-21 Oracle International Corporation Virtual interface system and method for multi-tenant cloud networking
US10853574B2 (en) 2017-09-28 2020-12-01 Oracle International Corporation Navigating electronic documents using domain discourse trees
US10862965B2 (en) 2017-10-01 2020-12-08 Oracle International Corporation System and method for topics implementation in a distributed data computing environment
US10817361B2 (en) * 2018-05-07 2020-10-27 Hewlett Packard Enterprise Development Lp Controlling error propagation due to fault in computing node of a distributed computing system
CN112106056A (zh) 2018-05-09 2020-12-18 甲骨文国际公司 构造虚构的话语树来提高回答聚敛性问题的能力
US11455494B2 (en) 2018-05-30 2022-09-27 Oracle International Corporation Automated building of expanded datasets for training of autonomous agents

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05304528A (ja) * 1992-04-24 1993-11-16 Omron Corp 多重化通信ノード
JPH06276202A (ja) * 1993-03-18 1994-09-30 Fuji Xerox Co Ltd 無応答障害監視装置
JP2000078153A (ja) * 1998-09-01 2000-03-14 Nec Corp 仮想パス切替装置
JP2001045009A (ja) * 1999-07-27 2001-02-16 Nec Commun Syst Ltd Atm通信ネットワークシステム
JP2003030165A (ja) * 2001-05-08 2003-01-31 Internatl Business Mach Corp <Ibm> 複数の連結したデータ処理ノードからなるネットワークでのノード状態を決定するための方法及び/又はノード活性を決定する方法
JP2003520525A (ja) * 2000-01-07 2003-07-02 アルカテル 通信ネットワークの分散復旧方法とシステム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI98772C (fi) * 1994-02-28 1997-08-11 Nokia Telecommunications Oy Menetelmä pakettimuotoisen datayhteyden reitin vaihtamiseksi
US5991821A (en) * 1996-04-30 1999-11-23 International Business Machines Corporation Method for serializing actions of independent process groups
US6111858A (en) * 1997-02-18 2000-08-29 Virata Limited Proxy-controlled ATM subnetwork
US6856627B2 (en) * 1999-01-15 2005-02-15 Cisco Technology, Inc. Method for routing information over a network
US6801496B1 (en) * 1999-01-15 2004-10-05 Cisco Technology, Inc. Network addressing scheme for reducing protocol overhead in an optical network
US6865149B1 (en) * 2000-03-03 2005-03-08 Luminous Networks, Inc. Dynamically allocated ring protection and restoration technique
US6778833B1 (en) * 2000-11-13 2004-08-17 Sprint Spectrum L.P. Method for allocating identifiers in a cellular wireless network
US7092356B2 (en) * 2001-10-05 2006-08-15 Nortel Networks Limited Resource management in heterogenous QoS-based packet Networks
JP3972664B2 (ja) * 2002-01-23 2007-09-05 日本電気株式会社 パス障害回復方式及び障害復旧後の切戻方式並びにそれらを用いるノード
WO2003071813A2 (en) * 2002-02-19 2003-08-28 Zyray Wireless, Inc. Method and apparatus optimizing a radio link
JP4313978B2 (ja) 2002-03-19 2009-08-12 日本電気株式会社 計算機監視方式、計算機監視方法および計算機監視用プログラム
JP2003289325A (ja) * 2002-03-28 2003-10-10 Fujitsu Ltd 通信ネットワークの迂回経路設計方法
US7180866B1 (en) * 2002-07-11 2007-02-20 Nortel Networks Limited Rerouting in connection-oriented communication networks and communication systems
US20050015511A1 (en) * 2003-07-02 2005-01-20 Nec Laboratories America, Inc. Accelerated large data distribution in overlay networks
US7355968B2 (en) * 2003-09-30 2008-04-08 International Business Machines Corporation Method of stateless group communication and repair of data packets transmission to nodes in a distribution tree

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05304528A (ja) * 1992-04-24 1993-11-16 Omron Corp 多重化通信ノード
JPH06276202A (ja) * 1993-03-18 1994-09-30 Fuji Xerox Co Ltd 無応答障害監視装置
JP2000078153A (ja) * 1998-09-01 2000-03-14 Nec Corp 仮想パス切替装置
JP2001045009A (ja) * 1999-07-27 2001-02-16 Nec Commun Syst Ltd Atm通信ネットワークシステム
JP2003520525A (ja) * 2000-01-07 2003-07-02 アルカテル 通信ネットワークの分散復旧方法とシステム
JP2003030165A (ja) * 2001-05-08 2003-01-31 Internatl Business Mach Corp <Ibm> 複数の連結したデータ処理ノードからなるネットワークでのノード状態を決定するための方法及び/又はノード活性を決定する方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008005076A (ja) * 2006-06-21 2008-01-10 Nec Infrontia Corp ネットワークシステム、ネットワーク端末及びそれらに用いるネットワーク機器切替え方法
WO2009004701A1 (ja) * 2007-06-29 2009-01-08 Fujitsu Limited ネットワーク障害検知システム、計測エージェント、監視サーバ、ネットワーク障害検知方法およびネットワーク障害検知プログラム
US8615682B2 (en) 2007-06-29 2013-12-24 Fujitsu Limited Network failure detecting system, measurement agent, surveillance server, and network failure detecting method
WO2012153528A1 (ja) * 2011-05-11 2012-11-15 日本電気株式会社 障害通知システム、伝送装置及び障害通知方法
JP2015511099A (ja) * 2012-03-20 2015-04-13 シマンテック コーポレーションSymantec Corporation 相互接続障害のクラスタ全体の一貫した検出

Also Published As

Publication number Publication date
US20050083834A1 (en) 2005-04-21
US7551552B2 (en) 2009-06-23
EP1524600B1 (en) 2019-07-03
EP1524600A3 (en) 2007-08-08
EP1524600A2 (en) 2005-04-20
JP4633426B2 (ja) 2011-02-16
CN100490386C (zh) 2009-05-20
CN1610312A (zh) 2005-04-27
KR101046028B1 (ko) 2011-07-01
KR20050037341A (ko) 2005-04-21

Similar Documents

Publication Publication Date Title
JP4633426B2 (ja) 保証された分散型の障害通知を提供する方法
JP3903437B2 (ja) クラスタにおける信頼性の高い障害解決
US8943354B2 (en) Method and device for predicting faults in an IT system
JP2006294009A (ja) ピアツーピアメッセージングアプリケーションを構築するためのapi
US7876698B2 (en) Distributed presence management in peer-to-peer networks
US9049241B2 (en) Peer discovery and secure communication in failover schemes
CN102647312B (zh) 一种整网组播拓扑的探测方法及装置
Dunagan et al. Fuse: Lightweight guaranteed distributed failure notification
JP4544415B2 (ja) 中継ネットワークシステム、ノード装置、および障害通知方法
Wang et al. Myrmic: Secure and robust dht routing
Kim et al. DYSWIS: Crowdsourcing a home network diagnosis
WO2021249165A1 (zh) 一种以太网存储系统及其信息通告方法和相关装置
US7869350B1 (en) Method and apparatus for determining a data communication network repair strategy
Liu et al. A fully distributed method to detect and reduce cut vertices in large-scale overlay networks
Xiao et al. Peerreview re–evaluation for accountability in distributed systems or networks
CN115604160A (zh) 网络检测处理方法及装置、电子设备、存储介质
US20040199579A1 (en) Collaboration bus apparatus and method
EP2820826B1 (en) Peer, application and method for detecting faulty peer in peer-to-peer network
Brinkmeier et al. Methods for improving resilience in communication networks and P2P overlays
Tarkoma et al. On the cost and safety of handoffs in content-based routing systems
JP2008005076A (ja) ネットワークシステム、ネットワーク端末及びそれらに用いるネットワーク機器切替え方法
CN115529265B (zh) 一种pimsm路由器上游路径的优化选择方法
JP2013026898A (ja) Ipネットワークの経路障害監視システム及び経路障害監視方法並びに経路障害監視ホスト及びそのプログラム
Teklemariam et al. Transparent Recovery of Dynamic States on Constrained Nodes through Deep Packet Inspection
Yu A system architecture and implementation for meshed multicast in MANET using SIP

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100826

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101112

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101117

R150 Certificate of patent or registration of utility model

Ref document number: 4633426

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees