(57)【要約】  オペレーティング・システムにおいて障害検出する方法であって、方法は、ルータを通して、クライアントからサーバに要求を送信するステップと、ルータにおいてトークンを記憶するステップと、サーバにおいて要求を遂行するステップと、ルータを通して、サーバからクライアントに応答を返すステップとを含み、方法は、あるいはサーバにおける障害に応答して、トークンに基づいて、ルータにおいてエラー応答を生成するステップ、および、ルータからクライアントにエラー応答を返すステップを含む。【特許請求の範囲】
【請求項１】
サーバ・プロセスの障害の検出をクライアント・プロセスに通知する方法であって、前記検出が、個々のコンピュータのオペレーティング・システムにおいて遂行され、前記方法が、
ルータを通して、前記クライアント・プロセスから前記サーバ・プロセスに要求を送信するステップであって、前記クライアント・プロセス、前記サーバ・プロセス、および前記ルータが、前記コンピュータ内部にある、送信するステップと、
前記ルータにおいてトークンを記憶するステップとを含み、
前記サーバ・プロセスにおける障害がない場合に、前記サーバ・プロセスにおいて前記要求を遂行するステップ、および、前記ルータを通して、前記サーバ・プロセスから前記クライアント・プロセスに応答を返すステップ、または
前記サーバ・プロセスにおける障害に応答して、前記トークンに基づいて、前記ルータにおいてエラー応答を生成するステップ、および、前記ルータから前記クライアント・プロセスに前記エラー応答を返すステップ
を含む、方法。
【請求項２】
前記応答が前記ルータを通るときに、前記トークンを取り除くステップを含む請求項１に記載の方法。
【請求項３】
前記オペレーティング・システムによる、前記サーバ・プロセスにおける前記障害を前記ルータに通知するステップを含む請求項１または２に記載の方法。
【請求項４】
前記オペレーティング・システムがネットワーク・インターフェースを含み、前記方法が、
前記ネットワーク・インターフェースに関連付けられたインターフェース・ルータにおいて、第２の要求を受信するステップと、
前記インターフェース・ルータにおいて、前記第２の要求のための第２のトークンを記憶するステップと
を含む、請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記インターフェース・ルータにおいて前記第２の要求の再送信に対応するステップを含む請求項４に記載の方法。
【請求項６】
前記オペレーティング・システムがネットワーク・インターフェースを含み、前記方法が、
前記コンピュータ内部で第２の要求を生成するステップと、
前記ネットワーク・インターフェースに関連付けられたインターフェース・ルータによって、前記第２の要求をルーティングするステップと、
前記インターフェース・ルータにおいて、前記第２の要求のための第２のトークンを記憶するステップと
を含む、請求項１乃至３のいずれか１項に記載の方法。
【請求項７】
前記インターフェース・ルータにおいて再送信タイマーを設定するステップを含む請求項６に記載の方法。
【請求項８】
前記第２の要求をキャッシュするステップを含む請求項６または７に記載の方法。
【請求項９】
前記ルータが、複数のリンクを通して接続するように構成され、前記ルータが、前記複数のリンクのうちの第１のリンクによって前記クライアント・プロセスに接続され、前記ルータが、前記複数のリンクのうちの第２のリンクによって前記サーバ・プロセスに接続される、請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
前記ルータにおいて前記複数のリンクのリンクごとにトークンのテーブルを維持するステップであって、それぞれのトークンが複数の要求のうちの少なくとも１つの要求に関連付けられる、維持するステップを含む請求項９に記載の方法。
【請求項１１】
前記テーブルの中のそれぞれのエントリがインデックスに関連付けられ、前記要求および前記応答が前記インデックスを保持する、請求項１０に記載の方法。
【請求項１２】
前記サーバ・プロセスにおける前記障害が、前記サーバ・プロセスのクラッシュの形を取る、請求項１乃至１１のいずれか１項に記載の方法。
【請求項１３】
請求項１乃至１２のいずれか１項に記載の方法を実施するために、マシンによって実行可能な命令のプログラムを有形に具体化する、前記マシンによって可読なプログラム記憶デバイス。
【請求項１４】
プログラムがコンピュータ上で動作するときに、請求項１乃至１２のいずれか１項に記載の方法を実施するためのコンピュータ実行可能命令を含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティング・システムにおいて障害検出する方法に関する。
【背景技術】
【０００２】
本項では、本発明のよりよい理解を促す助けとなり得る態様を紹介する。したがって、本項の記述は、この観点から読まれるべきであり、先行技術に何が含まれ、または先行技術に何が含まれないかに関する承認として理解されるべきではない。
【０００３】
多くのシステムは、プロセス同士（スレッド、タスク、オペレーティング・システム・コア、アプリケーション、サーバ）の間で通信するための、要求／応答を使用する。クライアントと呼ばれる１つのエンティティが、サーバと呼ばれる別のエンティティに要求を送信し、サーバは、要求を遂行し（処理する、実行する）、クライアントに応答を返す。要求を送信／受信することに続いて応答を送信／受信するプロセスは、時にメッセージ・トランザクションと呼ばれる。メッセージ・トランザクションの使用は、オペレーティング・システム、コンピュータ・ネットワーク、および分散システムにおける広範囲に及んでいる。
【０００４】
メッセージ・トランザクションが、データパケットが失われることがあるネットワーク上での通信を伴う、または、その信頼性が保証されていないリモート・サーバをアドレス指定するとき、メッセージ・トランザクションをより信頼できるものにするメカニズムを使用する必要がある。特に懸念されるのは、クライアントが要求を送信し、パケットロスまたはサーバ・クラッシュのせいで決して到着しない応答を待つことである。
【０００５】
本発明が取り組むのは、サーバ・クラッシュまたはパケットロスをクライアントに確実に通知するというこの問題である。本発明は、個々のコンピュータ、そのコンピュータ上で動作するオペレーティング・システム、およびそのオペレーティング・システムによってサポートされるアプリケーションの、特定のコンテキストにおいてそれを行う。このコンテキストにおいて、高速の、コンピュータ内通信の設定で効果的であるためには、一般的なソリューション（以下の節で提示される、タイムアウトおよび再送信）は、複雑すぎる傾向がある。
【０００６】
パケットロスおよびサーバ・クラッシュによって引き起こされる問題を取り扱うために、クライアントおよびサーバは、概して、タイムアウトおよび再送信のメカニズムを使用する。クライアントが要求を送信するとき、それはタイマーを開始する。クライアントが応答を受信するとき、それはタイマーをキャンセルする。タイマーが切れると、クライアントは、要求を再送信する。サーバが再送信された要求を受信するとき、３つの可能性が存在する。
１．サーバは、最初の要求を取得しなかった
２．サーバは、最初の要求をまだ処理している
３．サーバは、既に最初の要求に対する応答を送信した
【０００７】
１の場合、サーバは、再送信された要求の遂行を開始することができる。１および２の場合、サーバは、「要求に取り掛っています」の意味を含む肯定応答を、クライアントに返送することができる。３の場合、サーバは、応答を再送信すべきである。
【０００８】
４つ目の可能性が存在し、それは、サーバがクラッシュしていることである。この場合、クライアントは、システムから送付失敗通知を受信することがある、またはクライアントは、何回かのうまく行かない再送信の後に断念する。
【０００９】
普及した開発は、コンテンツ・ルーティングを使用することであり、コンテンツ・ルーティングは、クライアントが、探しているオブジェクト（これは、ムービー、ウェブページ、サービス、デバイスであってよい）の名前を指定し、その要求の送付先である適切なサーバを見つけることを、システムに委ねる技法である。しばしば、そのようなサーバを見つけることは、段階的な細分化のプロセスであり、たとえば、要求は、最初にコンテンツを所有する組織に送付され、次いでその組織に属するデータセンタに、次いでデータセンタの中の特定のホストに、さらに次いで、そのホスト上で動作するサーバ・プロセスに送付される。要求は、最終的にその宛先に着くまで、複数の場所においてルーティングされる。
【００１０】
コンテンツ・ルーティングのためのある特定の方策が、ＰＡＲＣのＶａｎ  Ｊａｃｏｂｓｏｎらによって開発された発想である、Ｃｏｎｔｅｎｔ−Ｃｅｎｔｒｉｃ  Ｎｅｔｗｏｒｋｉｎｇ、すなわちＣＣＮによって与えられる。ＣＣＮでは、要求がインタレストと呼ばれ、応答がコンテンツ・メッセージと呼ばれる。インタレストは、階層的なパス名、たとえば、ｃｏｍ／ｐａｒｃ／ｐａｐｅｒｓ／ｃｃｎ．ｐｄｆを有し、このパス名がその宛先へと（たとえば、最初にｐａｒｃ．ｃｏｍへ、さらに次いで文書を管理するサーバへと）ルーティングされる。これらのインタレストは、インタレストの宛先までのルート上で、ルータのそれぞれにおいて記憶され、宛先では、ルータが、合致するコンテンツ・メッセージの戻りを待ち受ける。インタレスト同士は、組み合わせることができ、コンテンツ・メッセージは、キャッシュされることが可能だが、ＣＣＮのこの特定の態様は、ここでは重要ではない。
【００１１】
個々のコンピュータ内部で、通信は、一般的に、要求および応答が無くならないやり方で実装される。しかしながら、クライアントまたはサーバとして構成されたアプリケーションが、クラッシュする可能性がある。そのような場合、クライアントは、タイムアウトを使用することによってクラッシュについて突き止めなければならない、または、システムによって通知される必要がある。サーバ・クラッシュは、稀な事象ではあるものの起こるものであり、タイムアウトは、メッセージ・トランザクションごとに起動される必要があり、しかし潜在的なクライアント・デッドロックから回復するように要請されるのは非常に稀な、高価なツールである。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明の一実施形態において、改善された有効性および効率を見込むことができる、オペレーティング・システムにおける障害検出へのアプローチが開示される。
【課題を解決するための手段】
【００１３】
本実施形態による、オペレーティング・システムにおいて障害検出する方法は、ルータを通して、クライアントからサーバに要求を送信するステップと、ルータにおいてトークンを記憶するステップと、サーバにおいて要求を遂行するステップと、ルータを通して、サーバからクライアントに応答を返すステップとを含み、あるいはサーバにおける障害に応答して、トークンに基づいて、ルータにおいてエラー応答を生成するステップ、および、ルータからクライアントにエラー応答を返すステップを含む。
【００１４】
本発明の別の実施形態において、メッセージ・トランザクションの間に、クライアント／サーバの関係を追跡するための効率的なメカニズムが開示され、それにより、クライアントは、サーバ・クラッシュについて通知され得る。
【００１５】
本発明のさらに別の実施形態において、オペレーティング・システム上で動作し、ネットワーク・インターフェースに近接した、またはネットワーク・インターフェースでの、単に一箇所でネットワークを使用する、すべてのアプリケーションについて、タイムアウトおよび再送信の対応を可能にするメカニズムが開示される。
【００１６】
基本的な発想は、クライアントからサーバへと要求がルーティングされるときに、パスにおける各ルーティング・ポイントにおいて、小さなトークンが記憶されることである。サーバが応答を送信するとき、これらのトークンを使用して、クライアントへと戻る道を指し示すことができる。トークンはまた、応答がルーティング・ポイントを通るときに取り除かれる。サーバがクラッシュした場合、そのサーバに要求を供給するルータに通知される手配がなされる。ルータは、そのサーバへの未解決の要求を識別するトークンを使用して、専用のエラー応答を生成し、これらの応答をクライアントへと返す。
【００１７】
ネットワーク・インターフェースにおいて、専用のインターフェース・ルータが、ネットワークから入って来る要求を受信する。要求ごとに、インターフェース・ルータは、コンピュータ内部で、サーバに要求を転送する前に、トークンを生成する。コンピュータ内部で生成された要求は、インターフェース・ルータを介してルーティングされることになり、このルータはまた、要求をネットワークの中に転送する前に、そのような要求のためのトークンを記憶することになる。
【００１８】
インターフェース・ルータは、入って来る再送信を取り扱うことができ、出て行く要求のために再送信タイマーを設定する。実際には、インターフェース・ルータは、コンピュータ内部で、サーバおよびクライアントに代わって、従来のタイムアウトおよび再送信の方法を使用する。このことは、タイマーおよび再送信が対応される一箇所のみが必要であることから、オペレーティング・システムにおけるサーバ・プロセスおよびクライアント・プロセスの管理を極めて簡略化する。インターフェース・ルータはまた、再送信要求を自律的に満たすために、出て行く要求および応答をキャッシュすることができる。
【００１９】
本発明のさらなる実施形態は、以下の本明細書における出願の全体から集約することできる。
【発明を実施するための形態】
【００２０】
本発明のメカニズムは、ＣＣＮ、およびＡＴＭネットワークにおける仮想回線識別子によって促されたが、信頼できる通信を生み出すことという、全く異なる目的を果たす。
【００２１】
主要な実施形態は、各ルータが、多くてもＮ個の他のエンティティであるルータ、またはプロセス（クライアントもしくはサーバ）と通信すること、および各ルータが、これらのエンティティにおけるクラッシュを知ることになることを想定する。ここでは、エンティティ（ルータ、クライアント、サーバ）間の直接接続を、リンクと呼ぶことにする。したがって、ルータは、多くてもＮ個のリンクを有する。ここでは、各リンク上で、ルータが多くてもＭ個の未解決な要求を有することができることを想定する。
【００２２】
このことは、リンクごとに、ルータが、多くてもＭ個のトークンのテーブルを保有することができることを含意する。このテーブルへのエントリは、Ｍよりも少ない非負数によってインデックス付けされてよい。ここでは、そのようなインデックスをタグと呼ぶ。タグは、０とＭ−１との間の数字である。
【００２３】
要求および応答は、タグを保持する。特定のリンク上で、応答のタグは、関連付けられた要求におけるタグと合致する。
【００２４】
ルータは、以下のアルゴリズムを実行する。
・タグｍを付けた要求がリンクｎ上に到着するとき、ｍおよびｎを含むトークンｔが作成される。ここでは、これを、ｔ＝（ｎ，ｍ）によって示すことにする。ルータは次いで、その要求を出て行くリンクｎ’上で転送するために、ルーティング決定を行う（これがどのように行われるかは、本発明の一部ではない）。ルータは、リンクｎ’に関連付けられたトークンテーブルにおいて、未使用のエントリｍ’を見つけ、ｔをそのエントリの中に入れ、要求におけるｍをｍ’に置き換えて、リンクｎ’上で要求を転送する。クラッシュがない場合、応答は、タグｍ’を付けてリンクｎ’上に到着することになる。
・タグｍ’を付けた応答がリンクｎ’上に到着するとき、ルータは、リンクｎ’用のトークンテーブルの中でｍ’番目のトークンｔ＝（ｎ，ｍ）を見つけ、それを使用して、応答におけるｍ’をトークンｍに置き換えて、変更した応答をリンクｎ上で転送する。ルータは次いで、リンクｎ’用のトークンテーブルの中のｍ’番目のトークンを、未使用としてマークする。
・リンクｎ’のもう一方の端のエンティティがクラッシュしたとき、ルータに通知される。リンクｎ’用のトークンテーブルの中のトークンｔ＝（ｎ，ｍ）ごとに、ルータは、クラッシュ通知応答を生成し、それをｍでタグ付けして、リンクｎ上に送出する。
・クラッシュしたリンク、またはもはや存在しないリンクに、転送されるべく要求が到着するとき、入って来る要求のタグを付けた宛先不明応答が生成されて、入って来る要求のリンク上で返される。
【００２５】
タグ置換技法は、ＡＴＭネットワークにおいて、（そこでは仮想回線識別子と呼ばれる）それらのタグによって識別される仮想回線で、非常に小さなメッセージを転送するために使用されたものである。
【００２６】
要求がその宛先までのその道のりでトークンの形跡を後に残す、という発想は、ルータにおいてコンテンツのキャッシングおよびマルチキャスティングを可能にするメカニズムとして、ＣＣＮネットワークにおいて使用されるものである。
【００２７】
それらは、全く異なる目的のために、類似したメカニズムを形成する。
【００２８】
当業者であれば、さまざまな上で説明した方法のステップが、プログラムされたコンピュータによって実施され得ることを容易に認めるであろう。本明細書において、いくつかの実施形態はまた、マシン可読またはコンピュータ可読であって、かつマシン実行可能なまたはコンピュータ実行可能な命令のプログラムを符号化する、プログラム記憶デバイス、たとえば、デジタルデータ記憶媒体を対象として含むよう意図されており、ここで、前記命令は、前記上で説明した方法のステップのうちのいくつか、またはすべてを実施する。プログラム記憶デバイスは、たとえば、デジタルメモリ、磁気ディスクおよび磁気テープなどの磁気記憶媒体、ハードドライブ、または光学的に可読なデジタルデータ記憶媒体であってよい。本実施形態はまた、上で説明した方法の前記ステップを実施するようにプログラムされたコンピュータを対象として含むよう意図される。
【００２９】
本説明は、本発明の原理を例証するにすぎない。したがって、本明細書で明示的に説明されない、または示されなくても、本発明の原理を具体化し、その趣旨および範囲内に含まれるさまざまな構成を、当業者が考案することができることが認識されるだろう。さらに、本明細書で挙げられるすべての例は、主に、本発明の原理、および当技術分野の促進に対して本発明者によって貢献される概念を、読者が理解するのを支援するための教育的な目的のみであることが明白に意図されており、そのような具体的に挙げられた例および条件に限定されないものとして解釈されるべきである。さらに、本明細書において、本発明の原理、態様、および実施形態、ならびにその特定の例を挙げるすべての記述は、本発明の均等形態を包含するよう意図されている。
【国際調査報告】
2014534495.tif 000002
2014534495.tif 000003
2014534495.tif 000004