(57)【要約】【課題】  トークンパス方式に従って通信を行うノード二重化システムにおいて、トークンの巡回の乱れを防ぐ待機系のノード装置を提供する。【解決手段】  正当トークン判定部２ｂ１は、稼動系ノード２ａ宛のトークンを受信してからトークン多重検知時間が経過した時に、受信バッファに蓄積されているトークンに基づいて正当であるトークンを判定し、破棄部２ｂ２は、正当でないと判定されたトークンを破棄する。【選択図】  図３
2005094598.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に複数のトークンが巡回している場合に、正当なトークンを判定するルールに従って正当と判定されたトークンのみを巡回させることにより通信を行う、稼動状態にある複数の稼動系ノード装置の少なくとも一つに対応付けて設けられ、
該対応付けられた稼動系ノード装置宛のトークンを受信した後に、該対応付けられた稼動系ノード装置よりトークンを受信したことを検知した場合には待機状態を保つ一方、該対応付けられた稼動系ノード装置よりトークンを受信しなかったことを検知した場合には新たに稼動状態となるように制御する切替処理を行う待機系のノード装置において、
複数のトークンを受信した場合に、該複数のトークンの中から正当であるトークンを判定する正当トークン判定手段を備え、
前記正当トークン判定手段により判定された判定結果に基づいて、前記切替処理を行うことを特徴とするノード装置。
【請求項２】
前記正当トークン判定手段は、
前記稼動系ノード装置宛のトークンを受信してから一定時間が経過した時に、自装置が備える受信バッファに蓄積されているトークンに基づいて、正当であるトークンを判定することを特徴とする請求項１に記載のノード装置。
【請求項３】
前記正当トークン判定手段は、
前記対応する稼動系ノード装置から送信されたトークンを常に正当であると判定することを特徴とする請求項１又は２に記載のノード装置。
【請求項４】
前記正当トークン判定手段により判定されたトークンが、正当でないと判定された場合には、該トークンを破棄する破棄手段をさらに備えることを特徴とする請求項１から３のいずれか１項に記載のノード装置。
【発明の詳細な説明】
【技術分野】
【０００１】
トークンパス（Token Passing）方式に従って通信を行うノード装置に関する。
【背景技術】
【０００２】
産業用制御分野において利用される通信ネットワークには、リアルタイム通信が求められている。このような通信ネットワークにおいてパケット同士が衝突すると、パケットが消滅する場合や、パケットを再送しなければならない場合が発生し、リアルタイム通信を行うことができなくなる。このため、パケット同士の衝突はクリティカルな問題である。この問題を回避するための通信方式として、トークンパス方式が提案されている。この方式では、トークンという送信権を表すフレームを予め決められた順番で各ノード間を巡回させ、ネットワークに参加している各ノードがトークン(送信権)を保持しているとき以外は自ノードからデータを送信してはいけないというものである。各ノードにはノード番号が割り振られており、このノード番号によってトークンが巡回する順番が決められている。
【０００３】
しかし、何らかの理由でトークンがノード間を巡回する順番が乱れた場合には、通信ネットワーク上に複数のトークンが同時に存在し、且つ、複数のノードからデータが同時に送信されることになる。これを防ぐための対策として、トークンパス方式では、複数のトークン間における優先順位付のルールが設けられている。例えば、この優先順位付のルールには、トークンに含まれる送信先ノード番号が一番小さいものが有効（正当）で、その他は無効（不正）であると言うルールがある（以下、このルールを「ルールＡ」と呼ぶ）。各ノードは、自ノード宛のトークンを受信してトークンを保持した際にデータの送信権を得るが、自ノードからデータを送信する前に、このルールＡに従ってトークン優先順位制御を行っている。
【０００４】
また、近年においては、稼動状態にあるノードが故障したときの対策として、二重化ノードの仕組みが提案されている。図１には、二重化ノードを備えた通信ネットワークの概略を示している。当該通信ネットワークを構成するノードのうち、一つのノードに対して他のノードと重複しないノード番号が割り振られているノードを、シングルノードという。また、二つのノードに同じ番号が割り振られており、一方が、定常状態では稼動状態にある稼動系ノードとして動作し、もう片方は、待機状態にある待機系ノードとして動作するものを二重化ノードという。このような二重化ノードを含んでいる通信ネットワークをノード二重化システムという。このようなノード二重化システムにおいては、トークンが二重化ノードのうちの稼動系ノードとシングルノードとの間を巡回している。
【０００５】
待機系ノードは、巡回しているトークンを常に監視している。具体的には、待機系ノードは、稼動状態にあるノードが送信権を次の順番のノード（以下、「次ノード」という）に渡す際にブロードキャストによって送信されるトークンを受信する。待機系ノードは、当該受信したトークンに含まれる情報に基づいて、現在トークンを保持しているノードを把握したり、トークンを保持しているノードが次ノードにトークンを送信するまでの時間を監視したりする。
【０００６】
ある時、待機系ノードが、稼動系ノード宛のトークンを受信したが、何らかの理由で、稼動系ノードが次ノード宛のトークンを送信しなかったものとする。待機系ノードは、稼動系ノードが次ノード宛のトークンを送信しなかったことを検知すると、自ノードで管理している「自ノード状態」を“稼動準備状態”に変更して、稼動状態に遷移する準備をする。その後、トークンがネットワーク上を１周巡回して、再び、待機系ノードが、対応付けられた稼動系ノード宛のトークンを受信したとする。待機系ノードは、このときに再び、稼動系ノードがトークンを送信しなかったことを検知した場合には、「自ノード状態」を“稼動準備状態”から“稼動状態”に変更して稼動状態に遷移し、自らトークンを送信する（例えば、特許文献１参照）。
【０００７】
上述したように、従来においては、トークンを保持したノードは、トークン巡回の乱れを防ぐために、自ノードからデータを送信する前にルールＡに従ってトークン優先順位制御を行っていた。しかしながら、ノード二重化システムにおいては、二重化ノードのうちの待機系ノードは、データを送信しないことから、トークン優先順位制御を行っていなかった。このために、待機系ノードは、誤って稼動系ノードがトークンを送信していないことを検知してしまい、稼動状態に遷移してしまうことがあった。
【０００８】
図５を参照しながら、二重化ノードが稼動系ノード宛のトークンを受信したときの従来における処理手順を、具体的に説明する。まず、稼動系ノードと待機系ノードとは、自ノード宛のトークンを受信すると（プロセスＰ１０）、受信処理を行う（プロセスＰ２０）。ここで、受信処理とは、自ノード宛のトークンを受信したことに伴い、自ノードが保持している送信権獲得に関わる各種パラメータを設定する等の処理をいう。
【０００９】
次に、稼動系ノードと待機系ノードとは、トークン多重検知時間が経過するのを待つ（プロセスＰ３０）。ここで、トークン多重検知時間とは、複数のトークンがネットワーク上を巡回しているのを検知するために設けられた監視時間である。当該トークン多重検知時間の間に、他のノードからトークンを受信した場合には、複数のトークンがネットワーク上を巡回していることを検知することができる。
【００１０】
稼動系ノードは、トークン多重検知時間が経過した時に、自ノードが備える受信バッファをチェックする。そして、稼動系ノードは、受信バッファにトークンが蓄積されているのを検知した場合には、従来の優先順位付けルールＡに従って正当なトークンを判定し、正当でないトークンを破棄する等の優先順位制御を行う（プロセスＰ４０ａ）。優先順位制御を行った後に、稼動系ノードは、自ノードからデータを送信するための送信フェーズに移行する（プロセスＰ４０）。稼動系ノードは、自ノードよりデータを送信した後に、送信権を次ノードに渡すために、次ノード宛のトークンを送信する。
【００１１】
一方、待機系ノードも、トークン多重検知時間が経過した時に、稼動系ノードと同様に、自ノードが備える受信バッファをチェックした後に受信フェーズに移行する（プロセスＰ５０）。しかしながら、待機系ノードは、稼動系ノードのように優先順位制御を行わず、受信バッファより読み出したトークンを全て正当なトークンとして処理する。このため、例えば、待機系ノードの受信バッファに、稼動系ノードから送信されたトークンと他のノードから送信されたトークンとが蓄積されていたとしても、待機系ノードが他のノードから送信されたトークンを先に読み出した場合には、当該読出したトークンを正しいトークンとして認識する。このために、待機系ノードは、稼動系ノードがトークンを送信していないと誤認識してしまう。そして、待機系ノードは、自ノードが保持している「自ノード状態」が“待機状態”であった場合には“稼動準備状態”に変更する。また、待機系ノードは、「自ノード状態」が“稼動準備状態”であった場合には“稼動状態”に変更し、稼動状態に遷移して自ノードよりトークンを送信する。
【特許文献１】特開２００２−２９０４０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
このように、待機系ノードは、受信バッファにトークンが蓄積されていた場合に、稼動系ノードのように優先順位制御を行わずに、受信バッファより読み込んだトークンを正しいトークンとして扱ってしまう。このため、待機系ノードは、不正に送信されたトークンを正しいトークンとして扱い、稼動系ノードが正常に動作しているときでも、稼動状態に遷移してしまうことがあった。
【００１３】
このために、稼動系ノードと待機系ノードとの両方からトークンが送信されてしまうこととなり、トークン巡回の乱れをさらに悪化させていた。
本発明は上記問題点に鑑みてなされたものであり、その目的は、トークンパス方式に従って通信を行うノード二重化システムにおいて、トークンの巡回の乱れを防ぐ待機系のノード装置を提供することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、請求項１に記載の発明は、ネットワーク上に複数のトークンが巡回している場合に、正当なトークンを判定するルールに従って正当と判定されたトークンのみを巡回させることにより通信を行う、稼動状態にある複数の稼動系ノード装置の少なくとも一つに対応付けて設けられ、該対応付けられた稼動系ノード装置宛のトークンを受信した後に、該対応付けられた稼動系ノード装置よりトークンを受信したことを検知した場合には待機状態を保つ一方、該対応付けられた稼動系ノード装置よりトークンを受信しなかったことを検知した場合には新たに稼動状態となるように制御する切替処理を行う待機系ノード装置において、複数のトークンを受信した場合に、該複数のトークンの中から正当であるトークンを判定する正当トークン判定手段を備え、前記正当トークン判定手段により判定された判定結果に基づいて、前記切替処理を行うことを特徴とする待機系ノード装置を提供する。
【００１５】
請求項１に記載の発明によれば、待機系ノード装置は、正当トークン判定手段により判定された判定結果に基づいて切替処理を行うため、不正なトークンに基づいて切替処理を行うことがなくなる。これにより、対応付けられた稼動系ノード装置が稼動しているにも関わらず、待機系ノード装置が稼動系に遷移することはなくなる。このために、ノード二重化システム全体のトークン巡回の乱れを防ぐことができ、通信状態を安定化させることが可能となる。また、待機系ノード装置と稼動系ノード装置とが正当であると認識するトークンを一致させることができる。
【００１６】
請求項２に記載の発明は、請求項１に記載の待機系ノード装置において、前記正当トークン判定手段は、前記稼動系ノード装置宛のトークンを受信してから一定時間が経過した時に、自装置が備える受信バッファに蓄積されているトークンに基づいて、正当であるトークンを判定することを特徴とする。
請求項２に記載の発明によれば、稼動系ノード装置宛のトークンを受信してから一定時間が経過した時に、自装置が備える受信バッファに蓄積されているトークンに基づいて、正当であるトークンを判定するために、一定時間の間に不正なトークンを受信して受信バッファに蓄積された場合にも、受信バッファに蓄積されているトークンをそのまま正当なトークンと誤認識してしまうことがない。
【００１７】
請求項３に記載の発明は、請求項１又は２に記載の待機系ノード装置において、前記正当トークン判定手段は、前記対応する稼動系ノード装置から送信されたトークンを常に正当であると判定することを特徴とする。
請求項３に記載の発明によれば、前記対応する稼動系ノード装置から送信されたトークンを常に正当であると判定することによって、待機系ノード装置が、稼動系ノード装置が稼動しているにも関わらず、稼動系に遷移することがなくなる。このために、ノード二重化システムにおけるトークン巡回の乱れを防ぐことができ、通信状態を安定化させることができる。
【００１８】
請求項４に記載の発明は、請求項１から３のいずれか１項に記載の待機系ノード装置において、前記正当トークン判定手段により判定されたトークンが、正当でないと判定された場合には、該トークンを破棄する破棄手段をさらに備えることを特徴とする。
請求項４に記載の発明によれば、待機系ノード装置は、正当でないと判断されたトークンを破棄するため、正当なトークンのみに基づいて処理を行うことができる。また、待機系ノード装置の受信バッファに蓄積されているデータは、稼動系ノード装置の受信バッファに蓄積されているデータとほぼ等しくなるため、待機系ノード装置と稼動系ノード装置との認識を合わせることができる。
【発明の効果】
【００１９】
本発明によれば、待機系ノード装置は、正当トークン判定手段による判定結果に基づいて切替処理を行うため、不正なトークンを正当であると誤認識して切替処理を行うことがなくなる。これにより、対応付けられた稼動系ノード装置が稼動しているにも関わらず、待機系ノード装置が稼動系に遷移することはなくなるため、ノード二重化システム全体のトークン巡回の乱れを防ぎ、通信状態を安定化させることが可能となる。
【発明を実施するための最良の形態】
【００２０】
［１．１．構成］
図１は、本発明の一実施形態に係るノード二重化システム全体の構成を示すブロック図である。同図に示すように、ノード二重化システムは、汎用コンピュータ、パーソナルコンピュータ、ＦＡ（Factory Automation）用コントローラ、及び、入出力機器等の装置を表すノード１、稼動系ノード２ａ、待機系ノード２ｂ、ノード３、ノード４と、これらの各ノードを接続する通信ケーブルとを備えている。
この二重化ノードシステムは、トークン・バッシング方式に従ってデータ転送を行う。ノード１，ノード３，ノード４は、他のノードと重複しないノード番号が割り振られているシングルノードである。ノード１，ノード３，ノード４は、電源が投入されている定常状態では稼動状態にあり、トークンやデータを送受信している。
【００２１】
また、稼動系ノード２ａと待機系ノード２ｂとは、同一のノード番号が割り振られている二重化ノードである。稼動系ノード２ａは、ノード１，ノード３，ノード４と同様の機能と構成を備えており、定常状態では稼動状態にある。待機系ノード２ｂは、定常状態においては待機状態にある。待機状態とは、トークンやデータを送信せずに受信のみ行う状態である。待機系ノード２ｂは、受信したトークンに含まれる情報によって稼動系ノード２ａの稼動状態を監視しており、稼動系ノード２ａがトークンを送信していないことを検知した場合に、稼動状態に遷移する。
なお、同図に示すノード二重化システムには、３つのシングルノードと、１対の二重化ノードとが備えられているが、当該ノード二重化システムには、少なくとも１つのシングルノードと、少なくとも１対の二重化ノードとが備えられていればよい。
【００２２】
［１．２．待機系ノード］
次に、待機系ノード２ｂの構成について説明する。待機系ノード２ｂのハードウェア構成は、稼動状態にあるノードと同様の構成を備えており、一般的なコンピュータのハードウェア構成を備えている。すなわち、待機系ノード２ｂは、待機系ノード２ｂ全体を制御するＣＰＵ（Central Processing Unit）と、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、及び、ハードディスク装置を含む記憶部と、通信ケーブルを介して他のノードとデータの授受を制御する通信制御部とを備えている。
【００２３】
待機系ノード２ｂの記憶部には、稼動状態にあるノードと同様に、受信したデータを蓄積しておくための受信バッファが設けられている。
また、待機系ノード２ｂの記憶部には、稼動状態にあるノードと同様に、従来のトークン・パッシング方式に従って通信を行うためのプログラムが記憶されている。また、待機系ノード２ｂの記憶部には、本発明に特徴的な、受信したトークンの正当性を判定するためのプログラムが記憶されている。これらのプログラムを待機系ノード２ｂのＣＰＵが実行することにより、図２に示す、正当トークン判定部２ｂ１、及び、破棄部２ｂ２が、待機系ノード２ｂに実現される。
【００２４】
正当トークン判定部２ｂ１は、稼動系ノード２ａ宛のトークンを受信してから一定時間が経過した時に、自装置２ｂが備える受信バッファに蓄積されているトークンに基づいて、正当であるトークンを判定する。具体的には、正当トークン判定部２ｂ１は、稼動系ノード２ａ宛のトークンの受信処理が終わってからトークン多重検知時間が経過した時に、自ノード２ｂ１の受信バッファを検索する。受信バッファを検索した結果、トークンが蓄積されていた場合には、正当トークン判定部２ｂ１は、当該トークンの正当性を判定する。正当性の判定方法としては、正当トークン判定部２ｂ１は、稼動系ノード２ａが正当なトークンを判定する際に用いているルールＡに加えて、稼動系ノード２ａから送信されたトークンは常に正当であるというルールＢに従って、トークンの正当性を判定する。
また、破棄部２ｂ２は、正当トークン判定部２ｂ１により正当でないと判定されたトークンが存在した場合には、当該トークンを破棄する。
【００２５】
［１．３．二重化ノードの稼動系ノード宛のトークンを受信したときの処理手順］
次に、図３を参照しながら、二重化ノードが稼動系ノード２ａ宛のトークンを受信したときの処理手順を説明する。
稼動系ノード２ａは、従来と同様の手順で処理を行う。すなわち、稼働系ノード２ａは、自ノード２ａ宛のトークンを受信すると（プロセスＰ１０）、受信処理を行い（プロセスＰ２０）、トークン多重検知時間が経過した後に（プロセスＰ３０）優先順位制御を行い（プロセスＰ４０ａ）、送信フェーズに移行する（プロセスＰ４０）。
一方、待機系ノード２ｂは、稼動系ノード２ａ宛のトークンを受信したときに（プロセスＰ１０）、従来の手順Ｐ２０、Ｐ３０、Ｐ５０に加えて、トークン多重検知時間が経過した後（プロセスＰ３０）、かつ、受信フェーズに入る前に（プロセスＰ５０）、正当トークン判定処理を行う（プロセスＰ５０ａ）。
【００２６】
［１．４．正当トークン判定処理］
次に、図４を参照しながら、待機系ノード２ｂが、稼動系ノード２ａ宛のトークンを受信したときに、図３のプロセスＰ５０ａにおいて行う、正当トークン判定処理について説明する。
まず、待機系ノード２ｂは、トークン多重検知時間が過ぎると、待機系ノード２ｂの受信バッファにデータが蓄積されているか否かを判定する（ステップＳ１）。データが蓄積されていないと判定された場合には（ステップＳ１；Ｎ）、優先順位制御を行う必要がないため、待機系ノード２ｂは、正当トークン判定処理を終了し、受信フェーズに移行する。
【００２７】
一方、受信バッファにデータが蓄積されていると判定された場合には（ステップＳ１；Ｙ）、待機系ノード２ｂは、受信バッファに蓄積されているデータを１件読み出す。待機系ノード２ｂは、当該読み出したデータに含まれる情報を調べて、当該データがトークンであるか否かを判定する（ステップＳ２）。読み出したデータがトークンでないと判定された場合には（ステップＳ２；Ｎ）、待機系ノード２ｂの破棄部２ｂ２はトークンでないと判定されたデータを破棄する（ステップＳ４）。具体的には、破棄部２ｂ２は、トークンでないと判定されたデータを受信バッファから削除する。次に、待機系ノード２ｂは、受信バッファに他のデータが蓄積されているか否かを判定し（ステップＳ５）、蓄積されていた場合には（ステップＳ５；Ｙ）、ステップＳ２からステップＳ４の処理を繰り返す。
【００２８】
一方、読み出したデータがトークンであると判定された場合には（ステップＳ２；Ｙ）、正当トークン判定部２ｂ１は、当該読み出したトークンが正当であるか否かを判定する（ステップＳ３）。具体的には、正当トークン判定部２ｂ１は、読み出したトークンに含まれる送信元ノード番号を調べることにより、当該トークンの送信元が稼動系ノード２ａであると認識した場合には、当該トークンは必ず正当であると判定する。また、正当トークン判定部２ｂ１は、読み出したトークンの送信元が稼動系ノード２ａでなかった場合には、当該トークンが、稼動系ノード２ａが保持している保持トークンより優先順位が高いか否かを、上述したルールＡに従って判定する。正当トークン判定部２ｂ１は、優先順位が高い方のトークンを正当なトークンと判定する。
【００２９】
以上の結果、読み出したトークンが正当であると判定された場合には（ステップＳ３；Ｙ）、正当トークン判定処理を終了して、受信フェーズに移行する。一方、読み出したトークンが正当でないと判定された場合には（ステップＳ３；Ｎ）、破棄部２ｂ２は読み出したデータを破棄する（ステップＳ４）。待機系ノード２ｂは、受信バッファに他のデータが蓄積されているか否かを判定し（ステップＳ５）、蓄積されていた場合には（ステップＳ５；Ｙ）、ステップＳ２からステップＳ４の処理を繰り返す。
このように、待機系ノード２ｂは、受信バッファに不正データが蓄積されているのを発見した場合には、当該不正データを破棄し、また、受信バッファにデータが蓄積されていない場合や受信バッファに蓄積されているデータが正当であると判定した場合には、すぐに受信フェーズに移行する。
【００３０】
［２．動作］
次に、図１、図３、及び、図４を参照しながら、上記構成における動作について説明する。
前提として、図１に示すように、ノード二重化システムは、ノード１と、二重化ノードである稼働系ノード２ａ及び待機系ノード２ｂと、ノード３と、ノード４とを備えている。ノード１、稼働系ノード２ａ、待機系ノード２ｂ、ノード３、及び、ノード４には、各々ノード番号“１”、“２”、“２”、“３”、及び“４”が割り振られている。
ここでは、二重化ノードが、トークン多重検知時間が経過するのを待っている間に、二重化ノードの受信バッファに、ノード３からノード４宛のトークン（送信元ノード番号“３”と、送信先ノード番号“４”とを含むトークン）が蓄積されたものとする。
【００３１】
まず、稼働系ノード２ａは、自ノード２ａ宛のトークンを受信する（図３のプロセスＰ１０）と、従来と同様の手順で処理を行う。すなわち、稼働系ノード２ａは、受信処理を行い、データの送信権を得る（プロセスＰ２０）。稼働系ノード２ａは、トークン多重検知時間が経過するのを待ってから（プロセスＰ３０）、自ノード２ａからのデータを送信する前に受信バッファをチェックする（プロセス４０ａ）。ここでは、稼働系ノード２ａは、受信バッファに、ノード３からノード４宛のトークンが蓄積されているのを見つける。ここで、自ノード保持トークンの送信先ノード番号が“２”であり、受信バッファで見つけたトークンの送信先ノード番号が“４”であるため、稼働系ノード２ａは、ルールＡに従い、自ノード保持トークンを正当なトークンとして判断する。また、稼動系ノード２ａは、受信バッファで見つけたトークンを不正トークンと判断して破棄する。そして、稼動系ノード２ａは、送信フェーズに移行し（プロセスＰ４０）、自ノード２ａのデータを送信した後、次ノード３宛のトークンをブロードキャストにより送信する。当該トークンは、ノード１、待機系ノード２ｂ、ノード３、及び、ノード４の受信バッファに蓄積される。
【００３２】
一方、稼動系ノード２ａと同じタイミングで、待機系ノード２ｂが、稼動系ノード２ａ宛のトークンを受信する（プロセスＰ１０）。待機系ノード２ｂは、トークンの受信処理を行う（プロセスＰ２０）。待機系ノード２ｂは、トークン多重検知時間が経過すると（プロセスＰ３０）、図４に示す正当トークン判定処理を行う（プロセスＰ５０ａ）。
ここでは、トークン多重検知時間が経過したときに、待機系ノード２ｂの受信バッファには、稼動系ノード２ａと同様に、ノード３からノード４宛のトークンＴ１が蓄積されている。さらに、待機系ノード２ｂの受信バッファには、稼動系ノード２ａからノード３宛のトークンＴ２が蓄積されている。
【００３３】
まず、待機系ノード２ｂは、自ノード２ｂの受信バッファにデータが蓄積されているか否かをチェックする（図４のステップＳ１）。ここでは、受信バッファにデータが蓄積されているため（ステップＳ１；Ｙ）、待機系ノード２ｂは、受信バッファに蓄積されているデータを１件読み出す。ここでは、ノード３からノード４宛のトークンＴ１を読み出すものとする。待機系ノード２ｂは、読み出したトークンＴ１に含まれるデータから、トークンであることを認識する（ステップＳ２；Ｙ）。次に、正当トークン判定部２ｂ１は、トークンＴ１が正当なトークンであるか否かを判定する（ステップＳ３）。具体的には、正当トークン判定部２ｂ１は、まず、ルールＢに従って、トークンＴ１が、稼動系ノード２ａから送信されたトークンであるか否かを判定する。ここでは、トークンＴ１に含まれる送信元ノード番号が“３”であるため、正当トークン判定部２ｂ１は、トークンＴ１が稼動系ノード２ａから送信されたトークンでないと判定する。
【００３４】
つぎに、正当トークン判定部２ｂ１は、ルールＡに従って、トークンＴ１が、稼動系ノード２ａが保持している保持トークンより優先順位が高いトークンか否かを判定する。ここでは、トークンＴ１の送信先ノード番号は“４”であり、保持トークンの送信先ノード番号は“２”であるため、正当トークン判定部２ｂ１は、トークンＴ１の方が優先順位が低いと判定する。
【００３５】
以上により、正当トークン判定部２ｂ１は、トークンＴ１を正当でないと判定し（ステップＳ３；Ｎ）、破棄部２ｂ２はトークンＴ１を破棄する（ステップＳ４）。次に、待機系ノード２ｂは、受信バッファに他のデータが蓄積されているかチェックする。ここでは、トークンＴ２が蓄積されているため（ステップＳ５；Ｙ）、待機系ノード２ｂはトークンＴ２を読み出す。トークンＴ２はトークンであるため（ステップＳ２；Ｙ）、待機系ノード２ｂの正当トークン判定部２ｂ１は、読み出したトークンＴ２が正当であるか否かを判定する（ステップＳ３）。具体的には、正当トークン判定部２ｂ１は、まず、ルールＢに従って、トークンＴ２が稼動系ノード２ａから送信されたトークンであるか否かを判定する。ここでは、トークンＴ２の送信元ノード番号は“２”であるため、トークンＴ２は、稼動系ノード２ａから送信されたトークンである。このため、正当トークン判定部２ｂ１は、トークンＴ２が正当なトークンであると判定する（ステップＳ３；Ｙ）。待機系ノード２ｂは、正当トークン判定処理を終了し、受信フェーズに移行する（図３のプロセスＰ５０）。
【００３６】
以上のように、待機系ノード２ｂは、稼動系ノード２ａ宛のトークンを受信したときに、正当トークン判定処理を行うために、不正トークンを正当なトークンとして処理することがなくなる。このため、稼動系ノード２ａが稼動しているにも関わらず、稼動状態に遷移することがなくなる。また、待機系ノード２ｂは、正当であると認識するトークンを、稼動系ノード２ａの認識と一致させることができる。
【００３７】
なお、図４に示す正当トークン判定処理のアルゴリズムは一例であり、稼動系ノード２ａから送信されたトークンを常に正当であると判定するアルゴリズムであれば、どのようなアルゴリズムでもよい。また、図４に示すアルゴリズムでは、受信バッファに正当なトークンと不正なトークンとが蓄積されている場合に、正当なトークンがあると判定した時点で、正当トークン判定処理を終了するようにしているが、これに限定されず、例えば、受信バッファに蓄積されている不正データを全て破棄してから受信フェーズに移行するようにしてもよい。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施の形態に係るノード二重化システムの構成を示すブロック図である。
【図２】同実施の形態に係る待機系ノードの機能構成を示すブロック図である。
【図３】同実施の形態に係る二重化ノードが稼動系ノード宛のトークンを受信したときの処理手順を示すタイミングチャートである。
【図４】同実施の形態に係る正当トークン判定処理を示すフローチャートである。
【図５】従来の二重化ノードが稼動系ノード宛のトークンを受信したときの処理手順を示すタイミングチャートである。
【符号の説明】
【００３９】
１，３，４  ノード
２ａ   稼動系ノード
２ｂ   待機系ノード
２ｂ１ 正当トークン判定部
２ｂ２ 破棄部
【図１】
2005094598.tif 000003
【図２】
2005094598.tif 000004
【図３】
2005094598.tif 000005
【図４】
2005094598.tif 000006
【図５】
2005094598.tif 000007