JP2010541042A - 食い違い取り消しプロトコル - Google Patents

食い違い取り消しプロトコル Download PDF

Info

Publication number
JP2010541042A
JP2010541042A JP2010525864A JP2010525864A JP2010541042A JP 2010541042 A JP2010541042 A JP 2010541042A JP 2010525864 A JP2010525864 A JP 2010525864A JP 2010525864 A JP2010525864 A JP 2010525864A JP 2010541042 A JP2010541042 A JP 2010541042A
Authority
JP
Japan
Prior art keywords
message
node
remote
counter
nonce
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
JP2010525864A
Other languages
English (en)
Other versions
JP5129860B2 (ja
JP2010541042A5 (ja
Inventor
アディヤ,アトゥル
ウォルマン,アラステアー
ドゥナガン,ジョン・ディー
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 JP2010541042A publication Critical patent/JP2010541042A/ja
Publication of JP2010541042A5 publication Critical patent/JP2010541042A5/ja
Application granted granted Critical
Publication of JP5129860B2 publication Critical patent/JP5129860B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

通信しているノード間のメッセージ競争又は食い違いを回避する、順序付けられたメッセージ配信のための技術、システム及び方法。例えば、ノードAがノードBに対してメッセージ3を送出し、そのすぐ後にノードBがノードAに対してメッセージXを送出するならば、ノードAは、メッセージXがメッセージ3受信後のノードBの状態を反映しているかどうかを知りたいと思う。ノードBがメッセージXの送出前にメッセージ3を受信したならば、適切な状態がノード間に維持される。しかし、メッセージ3とメッセージXとに食い違いが生じると、又は、ノードBがメッセージ3を適切には受信しなかった場合、ノード間の状態は不正になる。こうした不正を回避するための技術、システム及び方法が提供される。

Description

ネットワーク・コンピューターのような分散システムは、通信期間にそれぞれの他の状態を知る必要がある。典型的には、これは2つのシステムが同時にではなく順次に通信することを求める。両方のシステムが同時に(又は、非順次に)メッセージを送出して、食い違ったメッセージを生じると、競争(race)条件が展開され、間違いが多く且つ相違する状態情報が導き出される。
以下は、読者に対して基本的な理解を提供するために、開示の簡単化された概要を提示するものである。この概要は、開示の包括的概観ではなく、また、発明の重要な又は決定的な要素を識別するものでも、発明の範囲を示すものでもない。概要の本来の目的は、後述される一層詳細な説明に対する前置きとして、簡単な形で、ここに開示される概念を提供することである。
本発明の例は、通信ノード間でのメッセージ競争又は食い違いを回避する、順序付けられたメッセージ配信のための技術を提供する。例えば、ノードAがノードBに対してメッセージ3を送出し、その直後にノードBがノードAへメッセージXを送出するならば、ノードAは、メッセージXがメッセージ3を受信した後のノードBの状態を反映しているかどうかを知りたいと考える。
ノードBが、メッセージXを送出する前にメッセージ3を受信したならば、これらのノード間に正常な状態が維持される。しかし、メッセージ3とメッセージXとが食い違ったならば、又は、ノードBがメッセージ3を正常に受信してはいなかったならば、これらのノード間の状態は不正になる。こうした不正状態を回避する技術、システム及び方法が提供される。
付随する特徴の多くは一層容易に理解されよう。添付の図面に関連して以下の詳細な説明を参照することにより、一層良好な理解が得られるからである。本発明の記述は、添付の図面に関連して以下の詳細な説明を参照することにより、一層良好な理解が得られるであろう。添付の図面において、同じ部品を指すのに同じ参照番号が用いられている。
図1は、通信可能に結合され、食い違い取り消しプロトコルを使用可能な2つの例示のノードを示すブロック図である。 図2は、例示のC3Pヘッダーを含む、例示の食い違い取り消しプロトコル・メッセージを示すブロック図である。 図3は、例示の食い違い取り消しプロトコル状態図を示すブロック図である。 図4は、食い違い取り消しプロトコルを初期化するための、及びメッセージを送出するための例示の方法を示すブロック図である。 図5は、食い違い取り消しプロトコルを処理するための、及びメッセージの食い違いを検出するための例示の方法を示すブロック図である。 図6は、2つの例示のノード間での順序付けられたメッセージ伝送の例を示すタイミング図である。 図7は、競争処理状態にあるときの食い違い取り消しプロトコル・メッセージを処理する例示の方法を示すブロック図である。 図8は、メッセージの食い違いとその後の回復との例を示す、図6のタイミング図の拡張であるタイミング図を示す。 図9は、明細書で記述する技術が実装される例示のコンピューティング環境を示すブロック図である。
発明の実施形態
添付の図面に関連して以下に提供される詳細な説明は、本発明の例を記述することを意図しており、本発明の例が構成されて利用される唯一の形態を提示することを意図するものではない。詳細な説明は、例の機能と、例を構成して動作させるステップのシーケンスとの少なくとも一部を述べている。しかし、同一の又は均等の機能及びシーケンスを、別の例によって達成することができる。
本発明の例はコンピューティング環境又はネットワーク環境で実装されるものとして記述され図示されているが、記述される環境は例として提供されており、限定ではない。当業者は理解するように、本発明の例は種々の異なるコンピューティング環境及びネットワーク環境における応用に適している。
図1は、通信可能に結合され、食い違い取り消しプロトコルを使用可能な2つの例示のノードを示すブロック図である。ノードAとノードBとは、線190によって示されるように結合されている。線190は、任意の形式の結合、接続、通信のためのリンクやネットワーク等である。それぞれのノードは、食い違い取り消しプロトコルから恩恵を受ける任意のプログラム、システム、デバイス、ソフトウェア、デバイス・ドライバー、ファームウェア等であるアプリケーション110a、110bのような例示のアプリケーションを備えている。アプリケーション110a、110bは同じであっても、違っていてもよい。典型的には、アプリケーション110a、110bは食い違い取り消しプロトコル(C3P)層、例えばC3P 120a、120bを介してメッセージを送受信する。食い違い取り消しプロトコルは変数121a〜124aのような状態変数によって適切な状態情報を維持する。典型的には、食い違い取り消しプロトコルは、或る形式の通信リンク上でC3Pメッセージを送受信するために、トランスポート130a、130bのようなトランスポートを利用する。
典型的には、状態フィールド又は変数がC3Pの状態を維持する。それぞれのC3Pモジュール又はC3Pのインスタンスは、カウンター状態変数121a、121bのようなカウンター、ナンス(nonce)状態変数122a、122bのようなナンス、リモート・カウンター状態変数123a、123bのようなリモート・カウンター、及び、リモート・ナンス状態変数124a、124bのようなリモート・ナンスを含む。1つの例において、これらの状態変数のそれぞれは64ビット数である。
典型的には、ナンス状態変数(すなわち122a)は現在のC3Pセッションを識別する。典型的には、C3Pセッションは、C3P層が初期化されたときに確立される。典型的には、C3P層の新たなインスタンスは、C3Pを使用可能なノードが、C3Pを使用可能な新たなノード(例えば、以前に通信したことのないノード)と通信する必要があるたび毎に確立される。一般に、C3P層が初期化されるたびに、新たなナンスが生成される。
典型的には、リモート・ナンス状態変数(すなわち124a)は、リモート・ノードから受信された最後の有効なC3Pメッセージのヘッダーによって示される、リモート・ノードのナンス(すなわち、リモート・ノードのC3P層)を記録するために使用される。
ここで使用される用語「ナンス」は、再使用される可能性のない無作為の暗号化ナンス、カウンター或いは乱数又は疑似乱数である。一般に、こうしたナンスは、それぞれのセッションを他のセッションと一義的に識別するためにC3Pによって用いられる。つまり、ノードの衝突等々が起こったとき、C3Pは次回に初期化され、新しい一義的なC3Pセッションを示す新しい一義的なノードが確立される。
典型的には、カウンター状態変数(すなわち121a)は、各メッセージの送信毎に1だけ増分される単調増加変数であり、又は最後のメッセージの送出を識別する値である。1つの例において、カウンターはメッセージの送信毎に増分される。
典型的には、リモート・カウンター状態変数(すなわち123a)は、リモート・ノードから受信される最後の有効なC3Pメッセージのヘッダーによって示される、リモート・ノードのカウンター(すなわち、リモート・ノードのC3P層)を記録するのに用いられる。
一般に、アプリケーションは、送出されるべきメッセージを他のノードへ、更にC3P層へ渡す。典型的には、C3P層は(図1に関連して説明した)C3Pヘッダーを追加し、メッセージを送出バッファーに一時記憶し、メッセージをトランスポートへ渡すと、トランスポートはメッセージをネットワークを介して目標ノードへ送出する。典型的には、それぞれのC3P層は送出バッファーに単一の出力メッセージを一時記憶する。
有効なC3Pメッセージを受信すると、そのメッセージは、目標ノードのトランスポートがC3PメッセージをC3P層へ渡した後に、C3P受信・バッファーに記憶される。1つの例において、受信バッファーは1つ又は複数の入力メッセージを記憶する。C3P層はメッセージが有効であることを確かめ、C3Pヘッダーを除去し、対応のアプリケーションにメッセージを渡す。1つの例において、アプリケーションは、受信メッセージの処理を完了すると、このメッセージを受信バッファーから消去するようにC3P層に命令する。この例において、C3P層は受信バッファーが空になるまでメッセージを送出しない。メッセージの送出はメッセージの食い違いと均等であるからであり、アプリケーションは、以前に受信したメッセージを処理することなく新たなメッセージを送出する。
2つの通信するC3P層は、順序付けられたメッセージ配信をアプリケーションに提供するために、及び、メッセージ競争又はメッセージの食い違いを回避するために相互運用する。ここで使用される用語「メッセージ競争」、「メッセージの食い違い」又は「食い違い」は、第1のノードが第2のノードへメッセージを送出したとき、第2のノードが第1のノードからのメッセージを受信する前に、第2のノードが第1のノードへメッセージを送出する状況を意味する。
こうした状況は、メッセージの食い違い状態又はメッセージ競争状態を生じる。この状況については、図8に関連して一層詳細に記述される。
ここで使用される用語「ノード」は、ネットワーク等を介して一義的にアドレス指定可能であり又は一義的に識別可能であり、ネットワークを介して他のノードと通信するよう動作可能な任意のコンピューター・システム、デバイス又はプロセスを意味する。例えば、ノードは、パーソナル・コンピューター、サーバー・コンピューター、携帯型又はラップトップ型デバイス、タブレット・デバイス、マルチプロセッサー・システム、マイクロプロセッサーをベースとするシステム、セットトップ・ボックス、家庭用電化製品、ネットワークPC、ミニコンピューター、マインフレーム・コンピューター、一義的に識別可能なソフトウェア・アプリケーション等々であるが、これらに限定されない。コンピューター・システム900の形の、ノードA及びノードBのようなノードの一例は、図9と関して後述する。
図2は、例示のC3Pヘッダー210を含む例示の食い違い取り消しプロトコル(C3P)メッセージ200を示すブロック図である。典型的には、C3Pメッセージ200は、メッセージ・フィールド220及びC3Pヘッダー210におけるアプリケーション・メッセージ(アプリケーションによって提供されるメッセージ、パケット、データ等)からなる。1つの例において、C3Pヘッダー210は4つのフィールド、すなわち、ナンス211,リモート・ナンス212,カウンター213及びリモート・カウンター214に状態情報を含む。この例において、状態値は64ビット数である。ナンス211とカウンター213との値は、典型的には、メッセージの送出毎に、送出するC3Pの対応する状態変数から取り出される。典型的には、リモート・ナンス212とリモート・カウンター214との値は、送出するC3Pのリモート・ナンス状態変数とリモート・カウンター状態変数とから取り出され、これらの状態変数の値は、典型的には、リモート・ノードから受信された最後の有効なC3Pメッセージのヘッダーから取得される。C3Pピング・メッセージは、アプリケーション・メッセージ220を含まないC3Pメッセージのバージョンである。
図3は、例示の食い違い取り消しプロトコル状態図300を示すブロック図である。一般に、特定のC3Pインスタンスは2つの状態、すなわち、C3P正常状態310とC3P競争処理状態320との間で遷移する。C3Pインスタンスは、成功裏に初期化されると、典型的にはC3P正常状態310に入る。正常な(非C3Pピング)C3Pメッセージが送出されると、C3Pは、矢印330で示すように、C3P正常状態へ遷移する。C3Pは、C3Pメッセージの食い違いが検出されるまで、C3P正常状態330にとどまる。図5と関連して説明するように、C3Pメッセージの食い違いが検出されると、C3Pは矢印340で示すようにC3P競争処理状態320へ遷移する。C3Pは、メッセージの食い違いではないC3Pメッセージが受信されるまで、C3P競争処理状態320にとどまる。別のメッセージと食い違ったC3Pメッセージが受信されるたびに、C3Pは、矢印350で示すように、C3P競争処理状態320へ遷移する。順序付けられたC3Pメッセージ(C3Pピング、又はアプリケーション・メッセージを含まないC3Pメッセージ)が受信され、又は、他の適宜の状態(図7に関連して説明する)が合致すると、C3Pは、矢印360で示すように、C3P正常状態310へ遷移する。
図4は、食い違い取り消しプロトコル・インスタンスを初期化するための、及びメッセージを送出するための例示の方法400を示すブロック図である。C3P初期化はブロック410及び420で示すステップを含む。ホスト側のノードがC3Pインスタンスを開始するたびに、初期化のステップが実行される。一般に、これは、ノードが新たなC3Pインスタンスを開始して特定の新たなリモート・ノードと通信する各時点、及び、ノードがC3Pセッション期間に再始動(例えば、リブート又は衝突再始動)する各時点を含む。
ブロック410は、図1に関連して説明された、C3Pのナンス状態変数を初期化することを示す。典型的には、これは、新たなナンス値を生成することによって行われる。1つの例において、ナンスは、典型的には以前のナンスと相違する乱数として生成される。ナンス状態変数が初期化されると、典型的には方法400はブロック420へ続く。
ブロック420は、図1に関連して説明された、C3Pのカウンター状態変数を初期化することを示している。典型的には、これは、新たなカウンター値を生成することによって行われる。1つの例において、カウンターはゼロへ初期化される。カウンター状態変数が初期化されると、典型的には、C3P初期化は完了して方法400は図ロック430へ続く。
典型的には、ブロック430は、送出すべきアプリケーション・メッセージを待機することを示している。C3Pは、初期化されると、送出されるべきメッセージを待機する。典型的には、メッセージはアプリケーション等によって提供される。送出されるべきメッセージが利用可能になると、典型的には方法400はブロック440へ続く。
典型的には、ブロック440は、図1に関連して説明された、カウンター状態変数値を増分することを示す。カウンター状態変数は、1だけ又は2以上だけ増分され得る。カウンター状態変数が増分されると、典型的には方法400はブロック450へ続く。
典型的には、ブロック450は、C3Pメッセージをフォーマットして送出することを示す。典型的には、フォーマット処理は、アプリケーション(ステップ430についての説明を参照)によって提供されるメッセージにC3Pヘッダーを追加することによって実行される。典型的には、C3Pヘッダーとメッセージとは、図2と関連して説明したように構成される。1つの例において、C3Pメッセージは、図1に関連して説明されたトランスポートへC3Pメッセージを渡すことによって送出される。メッセージが送出されると、典型的には方法400はブロック430へ続く。
図5は、食い違い取り消しプロトコル・メッセージを処理してメッセージの食い違いを検出する例示の方法500を示すブロック図である。典型的には、方法500は、図3と関連して説明されたC3P正常状態の期間にC3Pメッセージを受信するC3Pインスタンスによって実行される。一般に、方法500は、入力メッセージのヘッダーにおける状態情報を、図1に関連して説明された、メッセージを受信するC3Pインスタンスに記憶されている状態情報と比較する。
典型的には、ブロック510はC3Pメッセージを受信することを示している。典型的には、こうしたメッセージは、図2に関連して説明された状態情報を含むC3Pヘッダーを含んでいる。メッセージが受信されると、典型的には方法500はブロック520へ進む。
典型的には、ブロック520は、入力メッセージのヘッダーのナンス値が正しいかどうかを決定する。1つの例において、入力メッセージのヘッダーのナンス・フィールド(図2の項目211)が、受信側のC3Pインスタンスの状態情報のリモート・ナンス・フィールド図1の項目124a)に記憶された値と比較される。これらの2つの値が一致しない(例えば、等しくない)ならば、受信側のC3Pメッセージは、最後のメッセージが受信されないので送出側のC3Pインスタンスは衝突を起こしたと仮定する。2つの値が一致しない場合、典型的には、方法500はブロック530へ進む。一致するならば、典型的には方法500はブロック550へ進む。
典型的には、ブロック530は受信側のC3Pインスタンスの状態情報を無効にすることを示している。1つの例において、これは、それぞれのリモート状態値(すなわち、図1の項目123a〜124a)をゼロにセットすることによって行われる。状態情報が無効にされると、典型的には、アプリケーションは、リモートC3Pインスタンスが衝突を経験したことを感知し、典型的には方法500はブロック540へ進む。
典型的には、ブロック540は、受信側のC3Pインスタンスのリモート・ナンス(すなわち、図1の項目124a)を、入力メッセージのナンス・フィールド(図2の項目211)における値にセットすることを示している。リモート・ナンスの状態値がセットされると、方法500はブロック550へ進む。
典型的には、ブロック550は、入力メッセージのヘッダーのカウンター値が正しいかどうかを決定することを示している。1つの例において、入力メッセージのヘッダーのカウンター・フィールド(図2の項目213)における値は、受信側のC3Pインスタンスの状態情報のリモート・カウンター・フィールド(図1の項目123a)に記憶された値よりも完全に大きい。入力カウンターの方が大きくないならば、受信側のC3Pインスタンスは、入力メッセージ又は後のメッセージを既に受信したと仮定する。入力カウンターの方が大きくない場合、典型的には方法500はブロック552へ進む。その他の場合には、典型的には方法500はブロック560へ進む。
典型的には、ブロック552は、入力メッセージを削除することを示している。これは、入力メッセージが既に受信されているから、又は後のメッセージが既に受信されているからである(ブロック550参照)。入力メッセージが削除されると、典型的には方法500はブロック510へ進む。
典型的には、ブロック560は、受信側のC3Pインスタンスのリモート・カウンター・フィールド(図1の項目123a)を、入力メッセージのカウンター・フィールド(図2の項目213)における値にセットすることを示している。リモート・カウンターの状態値がセットされると、方法500はブロック570へ進む。
典型的には、ブロック570は、入力メッセージのヘッダーのリモート・カウンター値とリモート・ナンス値とが正しいかどうかを決定することを示している。1つの例において、入力メッセージのヘッダーのリモート・カウンター・フィールド(図2の項目214)における値は、受信側のC3Pインスタンスの状態情報のカウンター・フィールド(図1の項目121a)に記憶された値と一致し(例えば、等しく)、入力メッセージのヘッダーのリモート・ナンス・フィールド(図2の項目212)における値は、ゼロであるか、又は、受信側のC3Pインスタンスの状態情報のナンス・フィールド(図1の項目122a)に記憶された値と一致する。入力リモート・カウンターが一致しない場合、又は、入力リモート・ナンスがゼロではないし一致もしない場合、受信側のC3Pインスタンスは、1つ又は複数のメッセージが食い違ったと仮定する。入力リモート・カウンターが一致しない場合、又は、入力リモート・ナンスがゼロではないし一致もしない場合、典型的には方法500はブロック572へ進む。その他の場合、典型的には方法500はブロック580へ進む。
典型的には、ブロック572は、受信側のC3PインスタンスがC3P競争処理状態(図3に関連して説明された)に入ることを示している。典型的には、C3P競争処理状態に入ることは、入力メッセージを削除することを含む。C3P競争処理状態での処理は、図7に関連して説明される。
典型的には、ブロック580は入力メッセージを受信アプリケーションへ渡すことを示している。この時点で、入力メッセージは有効であると決定される。1つの例において、C3Pヘッダーは、渡される前にメッセージから取り去られる。メッセージが渡されると、典型的には方法500はブロック510へ進む。
図6は、2つの例示のノード間での順序付けられたメッセージ伝送を示すタイミング図600である。矢印610はノードAのための同時線であり、矢印611はノードBのための対応する同時線である。状態ブロック612は同時線の開始時でのノードAの例示の初期状態を示しており、状態ブロック613は同時線の開始時でのノードBの例示の初期状態を示している。状態ブロック612、613等及びそれらに含まれるフィールドは、図1に関連して説明されたものに対応する。特に、フィールド612aは図1のフィールド121aに対応し、フィールド612bは図1のフィールド123aに対応し、フィールド612cは図1のフィールド122aに対応し、フィールド612dは図1のフィールド124aに対応する。種々の状態フィールドの値は単なる例であり、実際には適宜の値であってよい。典型的には、それぞれのノードは、図3に関連して説明されたとおり、C3P正常状態へ初期化され、典型的には、図5に関連して説明された方法500に従って動作する。1つの例において、同じフィールドは64ビット値をサポートし、以下の表A及びBに示すように初期化される。
Figure 2010541042
Figure 2010541042
ノードA及びノードBの初期状態の例である表A及び表Bに示すように、それぞれのノードはそれ自身のナンスを知っているが、リモート・ナンス・フィールドに16進法の(0x0)で示す初期値ゼロによって示されるように、他方のノードのナンスは知らない。また、それらの初期状態において、それぞれのノードはそれ自身のカウンター(図示のように、ゼロへ初期化される)を知っているが、リモート・カウンター・フィールドに初期値ゼロ(0)によって示されるように、他方のノードのカウンターは知らない。ナンス・フィールドはランダムな値によって初期化される。他の例においては、ゼロ以外の初期値が用いられ得、及び/又は、他方のノードの初期値は既知であり得る。
タイミング図600は、矢印及びメッセージ・ヘッダー620によって示されるように、ノードBがノードAに対して最初のメッセージを送出することを示している。メッセージ・ヘッダーは、ノードBのナンス値(N=98)と、ノードAのナンス(RN=0。現時点ではノードBには知られていない)と、ノードBの増分されたカウンター値(C=11。メッセージ620の送出前の状態613のC=10から増分された)と、ノードAのカウンター値(RC=0。現時点ではノードBには知られていない)とを含む。状態ブロック615はメッセージ620の送出後のノードBの状態を示している。
メッセージ620を受信すると、ノードAは、状態ブロック614で示すように、メッセージ620のヘッダーからの情報によりノードAの状態を更新する。この時点で、ノードAはノードBのナンス(RN=98)とノードBのメッセージ・カウンター(RC=11)を知り、状態614はこれを示すように更新される。ノードAはメッセージ620がノードBからの最初のメッセージであることを知る。これは、メッセージ620の受信時に、ノードBに対するノードAの状態情報(リモート・ナンスとリモート・カウンター)が初期状態(ゼロ)にセットされたからである。
タイミング図600において、矢印及びメッセージ・ヘッダー630で示されるように、ノードAはノードBに対してメッセージを送出する。メッセージ・ヘッダーは、ノードAのナンス値(N=12)と、ノードAの増分されたカウンター値(C=1。メッセージ630の送出前の状態612のC=0から増分された)と、ノードBのナンス値(RN=98。メッセージ620によりノードAには既知である)と、ノードBのカウンター値(R=11。メッセージ620によりノードAには既知である)とを含む。状態ブロック616はメッセージ630の送出後のノードAの状態を示している。
メッセージ630を受信すると、ノードBは、状態ブロック617によって示されるように、メッセージ630のヘッダーからの情報でノードBの状態を更新する。この時点で、ノードBはノードAのナンス(RN=12)とノードAのメッセージ・カウンター(RC=1)とを知り、状態617はこれを示すように更新される。ノードBはメッセージ630がノードAからの最初のメッセージであることを知る。これは、メッセージ630の受信時にノードAに対するノードBの状態情報(リモート・ナンスとリモート・カウンター)が初期値(ゼロ)にセットされたからである。
タイミング図600において、ノードBは、矢印及びメッセージ・ヘッダー640で示されるように、ノードAに対して次のメッセージを送出する。メッセージ・ヘッダーは、ノードBのナンス値(N=98)と、ノードBの増分されたカウンター値(C=12。メッセージ640の送出前の状態617のC=11から増分された)と、ノードAのナンス値(RN=12。メッセージ630によりノードBには既知である)と、ノードAのカウンター値(RC=1。メッセージ630によりノードBには既知である)とを含む。状態ブロック619はメッセージ640送出後のノードBの状態を示している。
メッセージ640を受信すると、ノードAは、ノードBに対するノードAの状態値(リモート・ナンスとリモート・カウンター)が初期値にセットされないことを決定する。したがって、ノードAは、ノードBからのメッセージ・ヘッダー640におけるナンス値8N=98)がノードBに対する状態616のナンス値(RN=98)と一致することを確認する。一致が存在すると、ノードAは、ノードBのC3Pセッションがリセットされなかったことを知る。ノードBから最後のメッセージが受信されたからである。また、ノードAは、ノードBからのメッセージ・ヘッダー640におけるカウンター値(C=12)の方がノードBに対する状態616のカウンター値(RC=11)よりも大きいことを確認する。入力メッセージのカウンターの方がノードBに対するノードAの状態のカウンターよりも大きいならば、ノードAはメッセージ640すなわち後のメッセージがまだ受信されてはいないことを知る。また、ノードAは、ノードBからのメッセージ・ヘッダー640におけるリモート・カウンター値(C=1)がノードAのカウンターに対する状態616のカウンター値(C=1)と一致することを確認する。一致が存在すると、ノードAは、ノードBがノードAからのメッセージ630の受信前にメッセージ640を送信しなかったこと、すなわち、メッセージの食い違いがなかったことを知る。メッセージ640のナンスとカウンターが有効であり、メッセージの食い違いがないならば、ノードAは、状態ブロック618により示されるように、メッセージ640のヘッダーからの情報でノードAの状態を更新する。同様にして、他の順序付けられたメッセージがノードAとノードBとの間で送出される。
図7は、競争処理状態において食い違い取り消しプロトコル・メッセージを処理するための例示の方法700を示すブロック図である。典型的には、方法700は、図3に関連して説明されたC3P競争処理状態においてC3PインスタンスがC3Pメッセージを受信することによって実行される。一般に、方法700は、入力メッセージのヘッダーにおける状態情報を、図1に関連して説明された、メッセージを受信するC3Pインスタンスに記憶された状態情報と比較する。
典型的には、ブロック710は、C3Pインスタンスが入力C3Pメッセージを受信することを示している。こうした入力メッセージは、図2に関連して説明されたC3Pメッセージであっても、図2及び図8に関連して説明されるC3Pピング・メッセージであってもよい。典型的には、こうしたメッセージは、到来すると、単一のメッセージ受信バッファーに一時記憶される。メッセージが到来すると、典型的には方法700はブロック740へ進む。メッセージが到来するまで、典型的には方法700はブロック720へ進む。
典型的には、ブロック720は、C3Pピング・メッセージを送出する時間であるかどうかを決定することを示している。1つの例において、ピング・メッセージは、C3P競争処理状態において、バックオフ(back−off)アルゴリズムに基づいて或る区間(例えば、50ミリ秒の区間で開始して、C3P正常状態へ戻る結果とならない各ピングにより区間を2倍にする)で送出される。ピング・メッセージを送出する時間になると、典型的には方法700はブロック730へ進む。その他の場合、典型的には方法700はブロック710へ続き、入力メッセージを待つ。
典型的には、ブロック730は、C3Pピング・メッセージを送出することを示している。典型的には、これは、図2に関連して説明されたように、現在の状態情報に基づいてメッセージ・ヘッダーを構成することを含む。ピング・メッセージが送出されると、典型的には方法700はブロック710へ進む。
典型的には、ブロック740は入力メッセージを検証することを示している。1つの例において、これは、図5のブロック520〜570に関連して説明された、C3Pインスタンスの状態変数に対してメッセージ・ヘッダー値をチェックすることによって実行される。入力メッセージのヘッダー値の中に正しくないものがあれば、典型的には方法700はブロック742へ進む。その他の場合には、典型的には方法700はブロック744へ進む。
典型的には、ブロック742は、入力メッセージを削除することを示している。入力メッセージが削除されると、典型的には方法700はブロック710へ進む。
典型的には、ブロック744は、入力メッセージのヘッダー値に基づいてC3Pインスタンスの状態変数を更新することを示している。1つの例において、これは、図5のブロック520〜570に関連して説明された、C3Pインスタンスの状態変数に対してメッセージ・ヘッダー値をチェックすることによって実行される。状態変数が更新されると、典型的には方法700はブロック750へ進む。
典型的には、ブロック750は、一時記憶されたメッセージが送出バッファーに存在するかどうか、及び、入力メッセージがピング・メッセージであるかどうかを決定することを示している。一時記憶されたメッセージが送出バッファーに存在し、入力メッセージがピング・メッセージであるならば、典型的には方法700はブロック760へ進む。その他の場合、典型的には方法700はブロック770へ進む。
典型的には、ブロック760は、送出バッファーにおけるメッセージを送出することを示している。一般に、このメッセージは、以前に送出された非ピング・メッセージであるが競争処理状態にあり、ピング・メッセージの受信は一時記憶されたメッセージを再送する結果を生じる。一時記憶されたメッセージが送出されると、典型的には方法700はブロック770へ進む。
典型的には、ブロック770は、C3PインスタンスがC3P競争処理状態からC3P正常状態へ遷移することを示している。C3P正常状態においては、典型的には、図5に関連して説明されたように処理が継続される。
図8は、図6のタイミング図600の延長であって、メッセージの食い違いとその後の回復との例を示すタイミング図600bである。矢印610bはノードAに対する同時線610の継続部分であり、矢印611bはノードBに対する同時線611の継続部分である。状態ブロック812は、同時線610、610b上での、図6の状態ブロック618と同じ時点を表している。状態ブロック813は、同時線611、611b上での、図6の状態ブロック619と同じ時点を表している。メッセージの食い違いの例はメッセージ820と830との間に示されている。
タイミング図600bにおいて、ノードAは、矢印及びメッセージ・ヘッダー820で示すように、ノードBに対してメッセージを送出するが、ノードBは、ノードAからメッセージ820を受信する前に、矢印及びメッセージ・ヘッダー830で示すように、ノードAに対してメッセージを送出する。この結果、順序付けられたメッセージ伝送ではない、メッセージの食い違いが生じる。
メッセージ820を受信すると、ノードBは、ノードAからのメッセージ・ヘッダー820におけるリモート・カウンター値(RC=12)が、ノードBのカウンターに対する状態情報815のカウンター値(C=13)と一致しないことを検出する。この例において、これはメッセージ820と830との食い違いによる。すなわち、ノードAとノードBとは、それぞれ相手からのメッセージを受信する前に相手に対してメッセージを送出したため、それぞれのノードの状態情報が相手の状態情報と非同期状態になったのである。同様に、メッセージ830を受信すると、ノードAは、ノードBからのメッセージ・ヘッダー830におけるリモート・カウンター値(RC=1)が、ノードAのカウンターに対する状態情報814のカウンター値(C=2)と一致しないこと、すなわち、メッセージの食い違いを検出する。この例において、食い違ったメッセージ820、830は、典型的には、受信側のノードによって削除され、それぞれのノードは、図3に関連して説明されたC3P競争処理状態に入る。
そこで、タイミング図600bにおいて、ノードAは、点線の矢印及びメッセージ・ヘッダー840で示すように、ノードBにピング・メッセージを送出する。典型的には、C3Pピング・メッセージは図2のC3Pメッセージのようなメッセージであるが、アプリケーション・メッセージ220の部分が含まれない。こうしたピング・メッセージは図2のC3Pヘッダー210のようなメッセージ・ヘッダーを含むが、アプリケーション・メッセージを含まない。代わりに又は更に、ノードBは、同様にC3P競争処理状態にあるノードAに対してピング・メッセージを送出することができる。一般に、ピング・メッセージは現在のナンスとカウンターとのデータを含むので、受信側のノードに送出側のノードの最新の状態情報を提供することができる。こうした各ピング・メッセージは、受信側のノードに対して「受信側のノードが送出する番である」ことを通信する。
ピング・メッセージ840を受信すると、ノードBは入力メッセージのヘッダー情報をノードBの状態情報817と比較し、入力メッセージのナンス・フィールド(N=12)がノードBのリモート・ナンスの状態値(RN=12)と一致すること、入力メッセージのカウンター(C=3)の方がノードBのリモート・カウンターの状態値(RC=2)よりも大きいこと、及び、入力メッセージのリモート・カウンター値(RC=13)がそのカウンターの状態値(C=13)と一致することを確認する。こうして、ノードBは、ピング・メッセージが有効であることを確認し、入力ピング・メッセージに基づいて状態情報819を更新し、C3P競争処理状態からC3P正常状態へ遷移する。また、ノードBは、矢印及びメッセージ・ヘッダー850によって示されるように、その送出バッファー内のメッセージ830を再送する。
メッセージ850を受信すると、ノードAは、入力メッセージのヘッダー情報をノードAの状態情報818と比較し、そのメッセージが有効であることを確認する。入力メッセージ850は有効であるから、ノードAはC3P競争処理状態からC3P正常状態へ遷移する。メッセージ850は有効だから、また、メッセージ850はC3Pピング・メッセージではないので、ノードAはアプリケーション・メッセージ820を送出バッファーから削除しなければならないことを認識する。食い違いを生じる唯一のメッセージが配信されるが、この例においてはノードAに一時記憶されたメッセージが、配信されてはならないメッセージである。
この時点で、ノードAとノードBはC3P競争処理状態からC3P正常状態へ成功裏に遷移しており、順序付けられたメッセージ通信が継続される。
競争処理状態から出る代替の方法を採用することもできる。例えば、C3P競争処理状態にあるノードは、特定の数のピング・メッセージを送出した後に競争処理状態から出ることができる。こうした変更は、順序付けられたメッセージ通信の再開を遅らせるという否定的な結果を有するが、ネットワーク・リソースを保存するという肯定的な結果を有する。別の例として、食い違いが検出されたときに1度だけピング・メッセージを送出する代わりに、それぞれのノードは、更新されないカウンター値を持つ正常なメッセージを送出する。こうした変更は、メッセージの更なる食い違いが生じたならば、相当多量のネットワーク・リソースを使用するという否定的な結果を生じる(これは、アプリケーション・メッセージの方がC3Pピング・メッセージよりもずっと大きいからである)が、メッセージの更なる食い違いが生じないならば、余分なメッセージ遅延を回避するという肯定的な結果を有する。第3の例として、通信中のノードAとノードBとの間のナンスは、伝送制御プロトコル(TCP)におけるSYN/SYNハンドシェークに類似したハンドシェークを使用することにより、単一のナンスに変わる。これは、C3P層とC3Pヘッダーとに関連する状態を低減するという肯定的な結果を有するが、2つのノードがC3Pを介して初めて通信するときに追加のメッセージを必要とするという否定的な結果を有することになる。
図9は、本明細書で記述する技術が実装される例示のコンピューティング環境900を示すブロック図である。適切なコンピューティング環境は多くの汎用の又は特殊目的のシステムにより実装される。周知のシステムの例は、携帯電話、携帯情報端末(PDA)、パーソナル・コンピューター(PC)、手持ちの又はラップトップ型のデバイス、マイクロプロセッサーをベースとするシステム、マイクロプロセッサー・システム、サーバー、ワークステーション、家庭用電化製品、セットトップ・ボックス等を含むが、これに限定されない。
典型的には、コンピューティング環境900は、周辺のデバイス902、903、904等の種々のコンポーネントに結合されたコンピューティング装置901の形態の汎用コンピューティング・システムを備える。コンピューター・システム900は、1つ又は複数の入力/出力(I/O)インターフェース912を介して、入力装置903(音声認識装置、タッチ・パッド、キーボード、及び/又は、マウスやトラックボールのようなポインティング装置を含む)等の種々の他のコンポーネントと結合する。コンピューティング装置901のコンポーネントは、1つ又は複数のプロセッサー(中央処理装置(CPU)、グラフィックス処理装置(GPU)、マイクロプロセッサー(μP)等を含む)907と、システム・メモリー909と、典型的には種々のコンポーネントを結合するシステム・バス908とを含む。典型的には、プロセッサー907は、コンピューティング装置901を制御するために、及び、ネットワーク接続914等の種々の通信接続を介して他の電子的な及び/又はコンピューターによる装置、システム又は環境(図示せず)と通信するために、種々のコンピューター実行可能命令を処理し、実行する。システム・バス908は任意の数の複数のタイプのバス構造を表しており、メモリー・バス又はメモリー・コントローラー、ペリフェラル・バス、シリアル・バス、アクセラレーテッド・グラフィックス・ポート、及び、種々のバス・アーキテクチャーのうちの任意のものを使用するプロセッサー・バス又はローカル・バス等々を含む。
システム・メモリー909は、ランダム・アクセス・メモリー(RAM)のような揮発性メモリーや、リード・オンリー・メモリー(ROM)又はフラッシュ・メモリー(FLASH)のような不揮発性メモリーの形態のコンピューター読み取り可能媒体を含むことができる。基本入力/出力システム(BIOS)は不揮発性メモリー等に記憶される。典型的には、システム・メモリー909は、1つ又は複数のプロセッサー907に対してアクセス可能であってプロセッサー907上で操作されるデータ、コンピューター実行可能命令及び/又はプログラム・モジュールを記憶する。
大容量記憶装置904、910は、システム・バスと結合することにより、コンピューティング装置901と結合され、又はコンピューティング装置901に組み込まれる。こうした大容量記憶装置904、910は、不揮発性のRAM、例えばフロッピー(登録商標)・ディスクのような取り外し可能で不揮発性の磁気ディスク905との間で読み書きを行う磁気ディスク・ドライブ、及び/又は、CD ROM、DVD、DVD ROMのような光ディスク906との間で読み書きを行う光ディスク・ドライブを備えている。代わりに、ハード・ディスク910のような大容量記憶装置が、取り外し不可能な記憶媒体を備えていてもよい。他の大容量記憶装置には、メモリー・カード、メモリー・スティック、テープ記憶装置等が含まれる。
大容量記憶装置910、他の記憶装置904、905、906及びシステム・メモリー909に、任意の数のコンピューター・プログラム、ファイル、データ構造等が記憶される。システム・メモリー909は、例えば、オペレーティング・システム、アプリケーション・プログラム、データ・ファイル、ディレクトリー構造、コンピューター実行可能命令等を含むが、これに限定されない。
表示装置902のような出力コンポーネント又は装置が、典型的にはインターフェース(ディスプレイ・アダプター911等)を介してコンピューティング装置901と結合される。出力装置902は液晶表示装置(LCD)であり得る。他の例の出力装置は、プリンター、オーディオ出力、音声出力、陰極線管(CRT)表示装置、触知装置又は他の感知出力機構等を含むことができる。出力装置は、コンピューティング装置901がオペレーターや他のマシン、システム、コンピューティング環境等と対話することを可能にする。ユーザーは、タッチ・パッド、ボタン、キーボード、マウス、ジョイスティック、ゲーム・パッド、データ・ポート等のような任意の数の異なるI/O装置903を介してコンピューティング環境900と連動する。これらの及び他のI/O装置は、システム・バス908と結合されるI/Oインターフェース912を介してプロセッサー907と結合され、及び/又は、パラレル・ポート、ゲーム・ポート、ユニバーサル・シリアル・バス(USB)、ファイヤ・ライン、赤外線(IR)ポート等のような他のインターフェース及びバスによって結合される。
コンピューティング装置901は、1つ又は複数のセルラー・ネットワーク、無線ネットワーク、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、ストレージ・エリア・ネットワーク(SAN)、インターネット無線リンク、光リンク等を介した、1つ又は複数の遠隔コンピューティング装置との通信接続により、ネットワーク環境において動作する。コンピューティング装置901は、ネットワーク・アダプター913等を介して、又はモデム、デジタル加入者線(DSL)リンク、デジタル総合サービス網(ISDN)リンク、インターネット・リンク・無線リンク等を介してネットワークと結合される。
典型的には、ネットワーク接続のような通信接続914は、ネットワークのような通信媒体との結合を提供する。典型的には、通信媒体は、搬送波その他のトランスポート機構のような被変調データ信号を用いて、コンピューター読み取り可能命令、コンピューター実行可能命令、データ構造、ファイル、プログラム・モジュール及び他のデータを提供する。典型的には、用語「被変調データ信号」は、1つ又は複数の特徴セットを有する信号、又は、該信号に情報を符号化するように変更された信号を意味する。例えば、通信媒体は、有線ネットワークや直結有線接続のような有線接続と、音響、無線周波数、赤外線又は他の無線通信機構のような無線媒体とを含むが、これに限定されない。
典型的には、電池や電源装置のような電源990はコンピューティング環境900の全部の部分に電力を提供する。コンピューティング環境900がモバイル装置又は携帯装置等である場合、電源990は電池である。代わりに、コンピューティング環境900がデスクトップ・コンピューターやサーバー等である場合、電源990は壁コンセントのような交流(AC)電源と接続するように設計された電源装置であってよい。
モバイル装置の中には、図9に関連して説明されたコンポーネントのうちの多くを備えないものがある。例えば、電子バッジは巻き線と単純な処理装置907とからなり、巻き線はカード・リーダー装置等の近くにあるときに電源990として動作するよう構成されている。こうした巻き線は処理装置907等と結合されるアンテナとしても動作し、この巻き線のアンテナは電子バッジとカード・リーダー装置との間の通信の形を提供することができる。こうした通信はネットワークを含まないが、代わりに、テレメトリー、ポイント・ツー・ポイント、RF、IR又は他の手段を介する汎用の又は特殊目的の通信であり得る。電子カードはディスプレイ902、I/O装置903、又は図9に関連して説明されたコンポーネントのうちの多くを備えない。例えば、図9に関連して説明されたコンポーネントのうちの多くを備えない他のモバイル装置には、電子ブレスレット、電子タグ、埋め込み可能な装置等が含まれるが、これらに限定されない。
当業者は認識するように、コンピューター実行可能命令、コンピューター読み取り可能命令及びデータを提供するのに利用される記憶装置はネットワーク上に分散していてもよい。例えば、リモート・コンピューター又は記憶装置が、ソフトウェア/アプリケーションやデータの形でコンピューター実行可能命令やコンピューター読み取り可能命令を記憶することができる。ローカル・コンピューターはネットワークを介してリモート・コンピューターにアクセスしてソフトウェア/アプリケーションやデータの全部又は一部をダウンロードし、コンピューター実行可能命令を実行する。代わりに、ローカル・コンピューターは必要なソフトウェア又はデータをダウンロードし、又は、命令の一部をローカル・コンピューターで実行し、他の一部をリモート・コンピューター及び/又はリモート装置で実行することによって、ソフトウェアを分散的に処理する。
また、当業者であれば理解するように、慣用の技術を利用することにより、ソフトウェアのコンピューター実行可能命令の全部又は一部を、デジタル信号プロセッサー(DSP)、プログラマブル論理アレイ(PLA)、ディスクリート回路等のような専用電子回路により実行することができる。用語「電子装置」は、ソフトウェア又はファームウェア等を備えたコンピューティング装置や家庭電化製品、又は、ソフトウェアやファームウェア等を備えない電子装置又は回路を含み得る。
典型的には、用語「ファームウェア」は、ROMのような電子デバイスに維持された、実行可能命令、符号、データ、アプリケーション、プログラム等を意味する。一般に、用語「ソフトウェア」は、任意の形式のコンピューター読み取り可能媒体に維持された、実行可能命令、符号、データ、アプリケーション、プログラム等を意味する。典型的には、用語「コンピューター読み取り可能媒体」は、システム・メモリー、記憶装置及びそれらに関連した媒体等を意味する。
本発明の原理及び前記の例が適用される多くの可能な実施の形態を考慮すると、理解されるとおり、ここに記述された例は単なる例であり、本発明の範囲を限定するものと考えてはならない。したがって、本明細書に記載された発明は、請求項及びその均等物の範囲内に入る全部の実施の形態を想定している。

Claims (20)

  1. 食い違い取り消しシステムであって、
    トランスポートに結合され、該トランスポートを介してメッセージを送受信すると共に、アプリケーションと結合され、該アプリケーションとメッセージを交換する食い違い取り消しプロトコル・モジュールと、
    前記食い違い取り消しプロトコル・モジュールによって維持され、送出されるメッセージを形成し、受信されるメッセージを確認する際に使用される1組の状態変数と、
    を備える、食い違い取り消しシステム。
  2. 別の食い違い取り消しシステムと通信可能に結合され、食い違ったメッセージが検出されて削除される、請求項1に記載のシステム。
  3. 前記1組の状態変数が、システムのセッションを識別するナンス変数を含み、該ナンス変数がそれぞれの送出メッセージのヘッダーに含まれる、請求項1に記載のシステム。
  4. 前記1組の状態変数が、それぞれの送出メッセージを一義的に識別するカウンター変数を含み、該カウンター変数がそれぞれの送出メッセージのヘッダーに含まれる、請求項1に記載のシステム。
  5. 前記1組の状態変数が、前記別の食い違い取り消しシステムのセッションを識別するリモート・ナンス変数を含み、該リモート・ナンス変数が受信メッセージのヘッダーから取り出される、請求項2に記載のシステム。
  6. 前記1組の状態変数が、前記別の食い違い取り消しシステムからの受信メッセージを一義的に識別するリモート・カウンター変数を含み、該リモート・カウンター変数が前記受信メッセージのヘッダーから取り出される、請求項2に記載のシステム。
  7. 前記食い違い取り消しプロトコル・モジュールが、メッセージの食い違いを検出したときに競争処理状態に入る、請求項2に記載のシステム。
  8. 前記食い違い取り消しプロトコル・モジュールが、前記競争処理状態にあるときにピング・メッセージを送出し、該ピング・メッセージが、ナンス・フィールド、カウンター・フィールド、リモート・ナンス・フィールド及びリモート・カウンター・フィールドを含むヘッダーを備える、請求項7に記載のシステム。
  9. 前記食い違い取り消しプロトコル・モジュールが、正常状態にあるときにメッセージを送出し、該メッセージが、ナンス・フィールド、カウンター・フィールド、リモート・ナンス・フィールド、リモート・カウンター・フィールド及びアプリケーション・メッセージ・フィールドを含むヘッダーを備える、請求項1に記載のシステム。
  10. 食い違い取り消しシステムにおいて入力メッセージを処理する方法であって、前記入力メッセージがヘッダーを含み、該ヘッダーがナンス値とリモート・ナンス値とカウンター値とリモート・カウンター値とを含む方法において、
    前記メッセージを受信するステップと、
    前記入力メッセージの前記ヘッダーの前記ナンス値を状態変数のリモート・ナンス状態変数と比較するステップと、
    前記入力メッセージの前記ヘッダーの前記カウンター値を前記状態変数のリモート・カウンター状態変数と比較するステップと、
    前記入力メッセージの前記ヘッダーの前記リモート・カウンター値を前記状態変数のカウンター状態変数と比較するステップと、
    を備える方法。
  11. 前記入力メッセージの前記ヘッダーの前記ナンス値を状態変数のリモート・ナンス状態変数と比較する前記ステップが不一致を示すならば、前記状態変数を無効にして前記リモート・ナンス状態変数を前記ナンス値にセットするステップを更に備える、請求項10に記載の方法。
  12. 前記入力メッセージの前記ヘッダーの前記カウンター値を前記状態変数のリモート・カウンター状態変数と比較する前記ステップが、前記カウンター値が前記リモート・カウンター状態変数よりも大きくないことを示すならば、前記入力メッセージを削除するステップを更に備える、請求項10に記載の方法。
  13. 前記入力メッセージの前記ヘッダーの前記リモート・カウンター値を前記状態変数のカウンター状態変数と比較する前記ステップが不一致を示すならば、前記入力メッセージを削除し、競争処理状態へ遷移するステップを更に備える、請求項10に記載の方法。
  14. 前記入力メッセージの前記ヘッダーの前記ナンス値を状態変数のリモート・ナンス状態変数と比較する前記ステップが一致を示し、前記入力メッセージの前記ヘッダーの前記カウンター値を前記状態変数のリモート・カウンター状態変数と比較する前記ステップが、前記カウンター値の方が前記リモート・カウンター状態変数よりも大きいことを示し、前記入力メッセージの前記ヘッダーの前記リモート・ナンス値を状態変数のナンス状態変数と比較する前記ステップが一致を示し、前記入力メッセージの前記ヘッダーの前記リモート・カウンター値を状態変数のカウンター状態変数と比較する前記ステップが一致を示すならば、前記入力メッセージの少なくとも一部をアプリケーションへ渡すステップを更に備える、請求項10に記載の方法。
  15. 1つ又は複数のコンピューター読み取り可能媒体上に記憶されたコンピューター実行可能命令として実現された、請求項10に記載の方法。
  16. 食い違い取り消しシステムを別の食い違い取り消しシステムと再同期させる方法であって、
    出力ピング・メッセージを送出する次の区間を決定するステップと、
    前記出力ピング・メッセージを前記次の区間に前記別の食い違い取り消しシステムへ送出するステップと、
    前記別の食い違い取り消しシステムからの入力メッセージを検出するステップと、
    前記入力メッセージを受信した際に、前記入力メッセージがピング・メッセージであるならば、一時記憶されたメッセージを前記別の食い違い取り消しシステムへ送出し、前記食い違い取り消しシステムを正常状態へ遷移させるステップと、
    を備える方法。
  17. バックオフ・アルゴリズムに基づいて、次の区間を決定するステップを更に備える、請求項16に記載の方法。
  18. 前記入力メッセージが有効であるかどうかを決定し、前記入力メッセージが有効でないならば前記入力メッセージを削除するステップを更に備える、請求項16に記載の方法。
  19. 前記入力メッセージが有効であるならば、前記食い違い取り消しシステムの状態変数を更新するステップを更に備える、請求項18に記載の方法。
  20. 1つ又は複数のコンピューター読み取り可能媒体上に記憶されるコンピューター実行可能命令として実現される、請求項16に記載の方法。
JP2010525864A 2007-09-20 2008-08-07 食い違い取り消しプロトコル Expired - Fee Related JP5129860B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/858,140 US7774490B2 (en) 2007-09-20 2007-09-20 Crisscross cancellation protocol
US11/858,140 2007-09-20
PCT/US2008/072467 WO2009038896A1 (en) 2007-09-20 2008-08-07 Crisscross cancellation protocol

Publications (3)

Publication Number Publication Date
JP2010541042A true JP2010541042A (ja) 2010-12-24
JP2010541042A5 JP2010541042A5 (ja) 2011-09-22
JP5129860B2 JP5129860B2 (ja) 2013-01-30

Family

ID=40468256

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010525864A Expired - Fee Related JP5129860B2 (ja) 2007-09-20 2008-08-07 食い違い取り消しプロトコル

Country Status (5)

Country Link
US (6) US7774490B2 (ja)
EP (1) EP2191626A1 (ja)
JP (1) JP5129860B2 (ja)
CN (1) CN101803339B (ja)
WO (1) WO2009038896A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774490B2 (en) 2007-09-20 2010-08-10 Microsoft Corporation Crisscross cancellation protocol
US9031210B2 (en) * 2013-07-31 2015-05-12 C21 Patents, Llc Device for non-intrusive screening of telephone calls and method thereof
US11917086B2 (en) * 2021-12-16 2024-02-27 Gm Cruise Holdings Llc Short-lived symmetric keys for autonomous vehicles

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346448A (ja) * 2004-06-03 2005-12-15 Sharp Corp 通信システム、そのシステムに含まれる通信装置、およびコンピュータを通信装置として機能させるためのプログラム
JP2006042156A (ja) * 2004-07-29 2006-02-09 Ntt Docomo Inc サーバ装置、その制御方法およびコネクション確立方法

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US738340A (en) * 1902-11-18 1903-09-08 Oscar W Mapes Heating system.
US4823122A (en) * 1984-06-01 1989-04-18 Digital Equipment Corporation Local area network for digital data processing system
US5258908A (en) * 1990-11-02 1993-11-02 Foreign Exchange Transaction Services, Inc. Detection and prevention of duplicate trading transactions over a communications network
US5260933A (en) 1992-05-15 1993-11-09 International Business Machines Corporation Acknowledgement protocol for serial data network with out-of-order delivery
JP2637918B2 (ja) * 1993-10-15 1997-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション カスケード・スイッチの競合解消方法及びその装置
US5754764A (en) * 1994-02-22 1998-05-19 National Semiconductor Corp. Combination of input output circuitry and local area network systems
US6188675B1 (en) * 1996-08-23 2001-02-13 International Business Machines Corporation System and method for self-identifying and configuring the nodes of a network
US5901291A (en) 1996-10-21 1999-05-04 International Business Machines Corporation Method and apparatus for maintaining message order in multi-user FIFO stacks
US5999286A (en) 1997-01-09 1999-12-07 Alcatel Method and system for restoring a distributed telecommunications network
US5951706A (en) 1997-06-30 1999-09-14 International Business Machines Corporation Method of independent simultaneous queueing of message descriptors
US6078970A (en) * 1997-10-15 2000-06-20 International Business Machines Corporation System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
US6412006B2 (en) * 1998-02-10 2002-06-25 3Com Corporation Method and apparatus for sending delay sensitive information assisted by packet switched networks
US6405326B1 (en) * 1999-06-08 2002-06-11 International Business Machines Corporation Limited Timing related bug detector method for detecting data races
GB2350984B (en) * 1999-06-11 2003-10-15 Mitel Corp Synchronisation method and system
AU5728500A (en) * 1999-06-11 2001-01-02 Microsoft Corporation Data driven remote device control model with general programming interface-to-network messaging adapter
US6768720B1 (en) 1999-09-30 2004-07-27 Conexant Systems, Inc. Verification of link integrity of a home local area network
CA2401126C (en) 2000-02-23 2010-11-09 George Rodney Nelson Jr. Access probe acknowledgement with collision detection
US6536019B1 (en) * 2000-09-28 2003-03-18 Verisity Design, Inc. Race condition detection and expression
US6725343B2 (en) * 2000-10-05 2004-04-20 Hewlett-Packard Development Company, L.P. System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
US7171475B2 (en) * 2000-12-01 2007-01-30 Microsoft Corporation Peer networking host framework and hosting API
US7747764B2 (en) * 2001-04-20 2010-06-29 Rockwell Automation Technologies, Inc. Web access for non-TCP/IP control devices of an industrial control system
US7418515B2 (en) * 2001-04-27 2008-08-26 International Business Machines Corporation Data communication method, data communication system and program
US7287070B2 (en) * 2001-05-25 2007-10-23 Interdigital Technology Corporation Determining control of an internet communication between a sender and receiver
US7856660B2 (en) 2001-08-21 2010-12-21 Telecommunication Systems, Inc. System for efficiently handling cryptographic messages containing nonce values
US6735645B1 (en) * 2001-09-04 2004-05-11 Lsi Logic Corporation System and method to eliminate race conditions in input/output operations for high bandwidth architectures
GB0129672D0 (en) * 2001-12-12 2002-01-30 Ibm Method and system for preserving message order when parallel processing messages
US6851075B2 (en) * 2002-01-04 2005-02-01 International Business Machines Corporation Race detection for parallel software
US7065549B2 (en) 2002-03-29 2006-06-20 Illinois Institute Of Technology Communication and process migration protocols for distributed heterogeneous computing
US7039851B2 (en) * 2002-06-08 2006-05-02 Axiowave Networks, Inc. Method of and apparatus for correcting errors in data packet flow streams as in closed ring sequential address generators and the like without data flow stream interruption
US6895476B2 (en) * 2002-10-03 2005-05-17 Hewlett-Packard Development Company, L.P. Retry-based late race resolution mechanism for a computer system
US6892290B2 (en) 2002-10-03 2005-05-10 Hewlett-Packard Development Company, L.P. Linked-list early race resolution mechanism
US7350077B2 (en) * 2002-11-26 2008-03-25 Cisco Technology, Inc. 802.11 using a compressed reassociation exchange to facilitate fast handoff
US7254687B1 (en) * 2002-12-16 2007-08-07 Cisco Technology, Inc. Memory controller that tracks queue operations to detect race conditions
US7509378B2 (en) * 2003-03-11 2009-03-24 Bea Systems, Inc. System and method for message ordering in a message oriented network
US7383440B1 (en) * 2003-05-01 2008-06-03 Lockheed Martin Corporation Private user control of a shared remote process
US20050038806A1 (en) * 2003-08-12 2005-02-17 Zhiqiang Ma Methods and apparatus for detecting data race conditions in message-based multi-threaded programs
US7761878B2 (en) * 2003-11-19 2010-07-20 Nexaweb Technologies, Inc System and method for stateful web-based computing
KR101005265B1 (ko) * 2004-01-28 2011-01-04 삼성전자주식회사 레이스 컨디션 문제를 묵인하는 디지털 회로
US20050229250A1 (en) * 2004-02-26 2005-10-13 Ring Sandra E Methodology, system, computer readable medium, and product providing a security software suite for handling operating system exploitations
US7571181B2 (en) * 2004-04-05 2009-08-04 Hewlett-Packard Development Company, L.P. Network usage analysis system and method for detecting network congestion
US7870200B2 (en) * 2004-05-29 2011-01-11 Ironport Systems, Inc. Monitoring the flow of messages received at a server
US7366956B2 (en) * 2004-06-16 2008-04-29 Hewlett-Packard Development Company, L.P. Detecting data races in multithreaded computer programs
US7813263B2 (en) * 2004-06-30 2010-10-12 Conexant Systems, Inc. Method and apparatus providing rapid end-to-end failover in a packet switched communications network
US7343454B2 (en) * 2004-11-16 2008-03-11 International Business Machines Corporation Methods to maintain triangle ordering of coherence messages
US8392668B2 (en) * 2005-04-04 2013-03-05 Hewlett-Packard Development Company, L.P. Distributed-state-information-based distributed computing systems and methods and protocols for managing distributed state information
WO2006111182A1 (en) * 2005-04-18 2006-10-26 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for solving race conditions in a communications network
US7085614B1 (en) 2005-07-06 2006-08-01 International Business Machines Corporation Method, system, and computer program product for optimizing throughput of lots
GB0524021D0 (en) * 2005-11-25 2006-01-04 Ibm A system for preserving message order
US8364840B2 (en) * 2005-12-02 2013-01-29 Sap Ag Dynamic message routing
US7526634B1 (en) * 2005-12-19 2009-04-28 Nvidia Corporation Counter-based delay of dependent thread group execution
US7543440B2 (en) 2005-12-19 2009-06-09 Caterpillar Inc. Multiple turbine system with a single recuperator
US7844862B1 (en) * 2006-03-23 2010-11-30 Azul Systems, Inc. Detecting software race conditions
US7752605B2 (en) * 2006-04-12 2010-07-06 Microsoft Corporation Precise data-race detection using locksets
US7673181B1 (en) * 2006-06-07 2010-03-02 Replay Solutions, Inc. Detecting race conditions in computer programs
US7992146B2 (en) * 2006-11-22 2011-08-02 International Business Machines Corporation Method for detecting race conditions involving heap memory access
US8429405B2 (en) * 2007-02-14 2013-04-23 Fuji Xerox Co., Ltd. System and method for human assisted secure information exchange
US7823013B1 (en) * 2007-03-13 2010-10-26 Oracle America, Inc. Hardware data race detection in HPCS codes
US7861118B2 (en) * 2007-03-30 2010-12-28 Microsoft Corporation Machine instruction level race condition detection
US7774490B2 (en) 2007-09-20 2010-08-10 Microsoft Corporation Crisscross cancellation protocol

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346448A (ja) * 2004-06-03 2005-12-15 Sharp Corp 通信システム、そのシステムに含まれる通信装置、およびコンピュータを通信装置として機能させるためのプログラム
JP2006042156A (ja) * 2004-07-29 2006-02-09 Ntt Docomo Inc サーバ装置、その制御方法およびコネクション確立方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND199800056003; 山居正幸: 'イーサネットとTCP/IP 第2章 TCP/IPコア・プロトコル' OPEN DESIGN No.3, 第7版, 19970501, p.18-54, CQ出版株式会社 *
JPN6010051819; 山居正幸: 'イーサネットとTCP/IP 第2章 TCP/IPコア・プロトコル' OPEN DESIGN No.3, 第7版, 19970501, p.18-54, CQ出版株式会社 *

Also Published As

Publication number Publication date
US8346973B2 (en) 2013-01-01
US9686320B2 (en) 2017-06-20
US9015349B2 (en) 2015-04-21
US20100287299A1 (en) 2010-11-11
US7774490B2 (en) 2010-08-10
US20090083407A1 (en) 2009-03-26
US20150222518A1 (en) 2015-08-06
US20160105464A1 (en) 2016-04-14
CN101803339B (zh) 2013-05-08
JP5129860B2 (ja) 2013-01-30
EP2191626A1 (en) 2010-06-02
US20100287300A1 (en) 2010-11-11
US8327030B2 (en) 2012-12-04
US9219673B2 (en) 2015-12-22
WO2009038896A1 (en) 2009-03-26
US20130080632A1 (en) 2013-03-28
CN101803339A (zh) 2010-08-11

Similar Documents

Publication Publication Date Title
TWI737977B (zh) 基於區塊鏈的交易處理方法及裝置、電子設備
TWI706278B (zh) 基於區塊鏈的交易處理方法及裝置、電子設備
US7788475B2 (en) Booting utilizing electronic mail
WO2020082892A1 (zh) 基于区块链的交易处理方法及装置、电子设备
JP5269949B2 (ja) アクセサリを認証するための方法及びシステム
US8706839B2 (en) Virtual serial port and protocol for use in serial-over-LAN communication
WO2020082898A1 (zh) 基于区块链的交易处理方法及装置、电子设备
JP5129860B2 (ja) 食い違い取り消しプロトコル
CN111459524A (zh) 软件的升级方法、装置、系统
WO2001055841A1 (fr) Procede et systeme relatifs a la distribution de programmes, serveur et client d'execution de programmes, dispositif d'obtention de programmes, et support d'enregistrement
US11715092B2 (en) Transferring ownership of physical objects and digital counterparts using a distributed ledger and digital tokens on physical objects
US20150323956A1 (en) Generating a timeout signal based on a clock counter associated with a data request
US20050228979A1 (en) Stored-program device
CN116132052A (zh) 跨链交易方法、装置、电子设备及存储介质
CN111124445B (zh) 一种家庭网关的升级方法及家庭网关
US8620991B2 (en) Technologies for detecting erroneous resumptions in a continuation based runtime
JP6639754B2 (ja) 通信装置、動作手順管理方法及び動作手順管理プログラム
JP2020046802A (ja) 電子機器システム及びシステム起動方法
CN112789612A (zh) 基于链接的自动消息验证
CN111007753A (zh) 一种双控制器的主备仲裁方法与装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110802

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110802

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120723

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: 20121005

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: 20121102

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151109

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees