(57)【特許請求の範囲】
【請求項１】
ヘルスチェックコマンドを周期的に発生させ、相手側の通信装置からのリプライを受信することによりヘルスチェックを行う通信装置のヘルスチェック装置であって、
コマンドを受信し、かつデコードして通常の応答通信のリプライコマンドであるか、ヘルスチェックを指示するヘルスチェックコマンドであるかを判別するコマンドデコード部と、
タイマーを有し、前記コマンドデコード部により判定したコマンドの通知を受けた時点の前記タイマーのタイマー値を折り返し判定制御部に出力するタイマー制御部と、
前記ヘルスチェックコマンドの発生周期であるヘルスチェック間隔と、最後に実行した通常応答通信により受信したリプライコマンドの通知を受けた時点の前記タイマーのタイマーカウント値と前記リプライコマンド以降に受信したヘルスチェックコマンドの通知を受けた時点の前記タイマーのタイマーカウント値との差分である時間間隔とを比較してヘルスチェックコマンドの折り返し通信を行うか否かを判定する折り返し判定制御部と、
折り返し判定制御部により、ヘルスチェックコマンドの折り返し通信を行う必要が有ると判定された場合に前記相手側の通信装置に対し、ヘルスチェックコマンドを送信するヘルスチェック通信を、ヘルスチェックコマンドをコマンド生成側に戻すヘルスチェックコマンドの折り返し通信に変換する折り返し変換制御部と、
を有することを特徴とする通信装置のヘルスチェック装置。
【請求項２】
前記折り返し判定制御部は、前記コマンドデコード部より通常応答通信のリプライコマンドを受信する毎にカウントアップするカウンタを有し、
前記カウンタは、最後に実行した通常応答通信により受信したリプライコマンドの通知を受けた時点の前記タイマーのタイマーカウント値と前記リプライコマンド以降に受信したヘルスチェックコマンドの通知を受けた時点の前記タイマーのタイマーカウント値との差分である時間間隔が前記ヘルスチェックコマンドの発生周期であるヘルスチェック間隔より小さい期間内において、カウント値が通常処理が高頻度で発生していることを示す閾値を超えた場合には、その判定結果を前記折り返し変換制御部に出力し、
前記折り返し変換制御部は、前記判定結果に基づいて前記ヘルスチェック通信をヘルスチェックコマンドの折り返し通信に変換することを特徴とする請求項１に記載の通信装置のヘルスチェック装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置間においてヘルスチェックを行う、通信装置のヘルスチェック装置に関する。
【背景技術】
【０００２】
従来の通信装置間の障害検出装置は、相互に通信を行う一の通信装置Ａが他の通信装置Ｂに対してリプライを求めるヘルスチェックの転送コマンドを一定時間毎に送信し、そのリプライを受信することで、通信装置Ｂが正常であることを確認するというヘルスチェックの手法がとられていた。
【０００３】
従来は、応答通信処理の多発等、処理状況に関係なく一定時間毎にヘルスチェックが行われていた。 
このため、処理の多発時には通信装置間の転送処理の性能を低下させてしまう状態であった。 
【０００４】
これを防ぐ為に、転送機能に影響ない間隔までヘルスチェック間隔を延ばす必要があった。
したがって、ヘルスチェックを行う間隔は一般的に通信装置間の転送性能に影響のない間隔にしている為、障害検出までのタイムラグが有るという問題が有った。
【０００５】
これに対して、入出力装置に対する通常のアクセスの使用頻度が高い場合はヘルスチェック部による入出力装置の障害検出を停止させ、使用頻度が低い場合はヘルスチェック部による入出力装置の障害検出動作を開始させることにより入出力装置の処理能率の向上を図った入出力装置のヘルスチェック装置が提案されている（例えば、特許文献１参照）。
【特許文献１】特開平５−１０８５０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に示すヘルスチェック装置にあっては、 応答通信の頻度が高い場合には、ヘルスチェックを停止させるようにしているが、この場合にヘルスチェックの効率化を目的とした機能を追加するには、ファームウェアの修正が必要になる。具体的には、アクセスカウントオーバーフロー検出部３に設定されるスレッシュホールド値を再設定するにはファームウェアの修正が必要となる。
【０００７】
本発明は、このような事情に鑑みてなされたものであり、ファームウェアの修正を行うことなく、通常の応答通信の頻度が高い場合に転送性能の低下の防止を図るとともに、短い時間間隔でヘルスチェックを行うことができる通信装置のヘルスチェック装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の通信装置のヘルスチェック装置は、ヘルスチェックコマンドを周期的に発生させ、相手側の通信装置からのリプライを受信することによりヘルスチェックを行う通信装置のヘルスチェック装置であって、コマンドを受信し、かつデコードして通常の応答通信のリプライコマンドであるか、ヘルスチェックを指示するヘルスチェックコマンドであるかを判別するコマンドデコード部と、タイマーを有し、前記コマンドデコード部により判定したコマンドの通知を受けた時点の前記タイマーのタイマー値を折り返し判定制御部に出力するタイマー制御部と、前記ヘルスチェックコマンドの発生周期であるヘルスチェック間隔と、最後に実行した通常応答通信により受信したリプライコマンドの通知を受けた時点の前記タイマーのタイマーカウント値と前記リプライコマンド以降に受信したヘルスチェックコマンドの通知を受けた時点の前記タイマーのタイマーカウント値との差分である時間間隔とを比較してヘルスチェックコマンドの折り返し通信を行うか否かを判定する折り返し判定制御部と、折り返し判定制御部により、ヘルスチェックコマンドの折り返し通信を行う必要が有ると判定された場合に前記相手側の通信装置に対し、ヘルスチェックコマンドを送信するヘルスチェック通信を、ヘルスチェックコマンドをコマンド生成側に戻すヘルスチェックコマンドの折り返し通信に変換する折り返し変換制御部とを有することを特徴とする。
【０００９】
また、本発明の通信装置のヘルスチェック装置は、前記折り返し判定制御部は、前記コマンドデコード部より通常応答通信のリプライコマンドを受信する毎にカウントアップするカウンタを有し、前記カウンタは、最後に実行した通常応答通信により受信したリプライコマンドの通知を受けた時点の前記タイマーのタイマーカウント値と前記リプライコマンド以降に受信したヘルスチェックコマンドの通知を受けた時点の前記タイマーのタイマーカウント値との差分である時間間隔が前記ヘルスチェックコマンドの発生周期であるヘルスチェック間隔より小さい期間内において、カウント値が通常処理が高頻度で発生していることを示す閾値を超えた場合には、その判定結果を前記折り返し変換制御部に出力し、前記折り返し変換制御部は、前記判定結果に基づいて前記ヘルスチェック通信をヘルスチェックコマンドの折り返し通信に変換することを特徴とする。
【００１０】
通信装置間の通信処理においては、お互いに通信を送受信する応答通信および、一方通行の送り付け通信があるが、主に応答通信が多く使用されている。応答通信は通信装置Ａが処理の指示を出し、装置Ｂが装置Ａからの指示を受けて処理を行い、装置Ａにリプライを返すという動作をしている。
【００１１】
転送コマンドでリプライを受けるところに注目すると、通常処理の応答通信が正常に機能しているということは相手が生きていることを確認する作業が出来ているということになる。つまりヘルスチェックの転送コマンドと次のヘルスチェックの転送コマンドの間に通常処理としての応答通信が存在している場合には、通常処理としての応答通信をヘルスチェックととらえて、次のヘルスチェックを間引いても問題ない。
【００１２】
そこで本発明では、ヘルスチェック間隔と応答通信の間隔を一定の式で計算して、通常処理が頻発しているケースはヘルスチェックを間引く(折り返し通信に変換する)。これによりピーク時に余計な転送を省くことで転送性能の低下を防ぐことが可能となる。
さらに転送機能に影響がないことからヘルスチェック間隔を短くすることで障害検出のリアルタイム性を向上する。
【００１３】
本発明は、タイマーを持ちコマンドデコード時の時刻を保持するタイマー制御部、ヘルスチェック通信と通常処理のリプライ通信をデコードするコマンドデコード部、ヘルスチェック間隔とコマンドデコード時刻を比較し折り返しにするかを判定する折り返し判定制御部、ヘルスチェック通信を折り返し通信に変換する折り返し変換制御部を含むヘルスチェック制御部で構成する。 
【発明の効果】
【００１４】
以上説明したように、本発明によれば、通常の応答通信である転送処理が多発した場合に折り返し通信によりヘルスチェックを間引くことでピーク時の転送処理とヘルスチェック処理の競合による性能低下を防ぐことができる。
さらに、本発明によりヘルスチェック間隔を短くすることが可能となり障害検出のリアルタイム性を向上させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態を、図面を参照して説明する。本発明が適用される通信装置の構成を図１に示す。図１に示すように通信装置Ａと通信装置Ｂが光インターフェース３９、３９′を介して接続されている。ここで、通信装置Ａと通信装置Ｂとの間で通常の応答通信及びヘルスチェック通信が行われるものとする。通信装置Ａ，Ｂは同一構成であるので、通信装置Ａの構成について説明する。
【００１６】
図１において、通信装置Ａはプロセッサ１、メモリ２、Ｉ／Ｏユニット３、ＰＣＩインターフェース３０及び光インターフェース３９から構成されている。プロセッサ１、メモリ２、Ｉ／Ｏユニット３及びＰＣＩインターフェース３０は相互にＰＣＩバス１００を介して接続されている。
【００１７】
Ｉ／Ｏユニット３は、アウトバウンドキュー３１、アウトバウンドバッファ３２、インバウンドキュー３５、インバウンドバッファ３６、ダイレクトメモリアクセス（ＤＭＡ）制御部（以下、ＤＭＡ制御部と記す。）３３、光インターフェース制御部３４、ヘルスチェック制御部３７を有している。 
アウトバウンドキュー３１は、ＰＣＩインターフェース３０からコマンドを取り込んで解析し、ＤＭＡ制御部３３へＤＭＡリクエストを行い、アウトバウンドバッファ３２にデータ転送を指示する。 
【００１８】
アウトバウンドバッファ３２は、アウトバウンドキュー３１からデータ転送が指示されたら転送データを保持し、光インターフェース制御部３４へ転送要求を行う。 
インバウンドバッファ３６はコマンドとデータのデータフレームを受信してインバウンドキュー３５へコマンドの書き込みおよびＰＣＩインターフェース３０へのデータの出力を行う。 ここで、フレームとは、光インターフェース３９にデータ転送するためのデータフォーマットである。 
【００１９】
インバウンドキュー３５はインバウンドバッファ３６からコマンドを取り込んでＤＭＡリクエストを行う。 
ＤＭＡ制御部３３は、インバウンドキュー３５、アウトバウンドキュー３１からのＤＭＡリクエストに対するＰＣＩインターフェース制御を行う。 
光インターフェース制御部３４は、制御フレームを生成し光I/Fに送信する処理と、光I/Fから受信した制御フレームがデータ化けしていないかチェック処理を行う。 
【００２０】
ヘルスチェック制御部３７は、内蔵するタイマーで時刻をカウントし、受信した特定の転送コマンドとタイマーの値によって通常応答通信が多発刷る場合にヘルスチェックコマンドを折り返しコマンドに変換する機能を有している。
【００２１】
次に、図１に示した本発明のヘルスチェック装置に相当するヘルスチェック制御部３７の具体的構成を図２に示す。
図２において、ヘルスチェック制御部３７は、コマンドデコード部３７１と、タイマー制御部３７２と、折り返し判定制御部３７３、折り返し変換制御部３７４とを有している。
【００２２】
折り返し判定制御部３７３は、ヘルスチェック間隔を保持するレジスタＴα３７３１と、通常処理実行で処理タスクがリプライを返した時点の時刻を保持するレジスタＴx３７３２と、ヘルスチェック実行でヘルスチェックコマンドを転送した時刻を保持するレジスタＴh３７３３から構成されている。 
【００２３】
コマンドデコード部３７１は、何らかの応答通信が行われた際にヘルスチェック通信か通常処理のリプライ通信かをデコードして判別し、判別したコマンドをタイマー制御部３７２と折り換えし判定制御部３７３に通知する機能を有している。 
【００２４】
タイマー制御部３７２は、タイマーの持ち時刻をカウントアップする。
また、タイマー制御部３７２はコマンドデコード部３７１からの判定コマンドの通知を受けた時点のタイマーカウント値を折り返し判定制御部３７３に通知する機能を有している。 
【００２５】
折り返し判定制御部３７３は、受信したタイマー値がヘルスチェックコマンドのタイマー値なら折り返し判定制御部７３内のレジスタＴh３７３３に保存し、タイマー値が通常処理のリプライのタイマー値ならレジスタＴx３７３２に保存する。
【００２６】
折り返し判定制御部３７３は、コマンドコマンドデコード部３７１からヘルスチェックコマンドの通知を受けた時点で、事前にレジスタＴα３７３１に設定しておいたヘルスチェック間隔Ｔαと、ヘルスチェックと最後に実行した通常処理からヘルスチェックコマンドの通知を受けた時点までの間隔（Ｔｈ−Ｔｘ）を比較してヘルスチェックコマンドの折り返し通信をさせるかどうかを判定し、アウトバウンドキュー３１または折り返し変換制御部３７４に判定結果を通知する。 
折り返し変換制御部３７４は、ヘルスチェックコマンドの折り返し通信が必要と判定された場合にヘルスチェック通信を折り返し通信に変換し、アウトバウンドキュー３１とインバウンドキュー３５へ通知する。 
【００２７】
次に、上記構成からなる本発明の一実施形態に係るヘルスチェック装置の動作について図３のシーケンス図を参照して説明する。
図３において、周期タスクはヘルスチェックを定期的に実行する通信装置Ａのプロセッサにおいて実行されるタスク、応答タスクは周期タスクからのヘルスチェックを受けて起き上がり、リプライを返す通信装置Ｂのプロセッサにおいて実行されるタスクである。
【００２８】
また、 転送タスクは通常の処理を通信装置Ｂに要求する通信装置Ａのプロセッサにおいて実行されるタスクであり、処理タスクは転送タスクからの通信を受けて起き上がり、通信装置Ａからの指示に応じた処置を行い、リプライを返す通信装置Ｂのプロセッサにおいて実行されるタスクである。
【００２９】
折り返し判定制御部３７３は、ヘルスチェック間隔（Ｔα）を事前にレジスタＴα３７３１に設定しておく。 
通常応答通信が行われて処理タスクがリプライを返した時点の時刻Ｔ１をタイマー値（Ｔｘ）としてＩ／Ｏユニット３内のレジスタＴｘ３７３２に保存する（（２））。 
折り返し判定制御部３７３は、一回目のヘルスチェック（１）から次のヘルスチェック間隔後にヘルスチェックを行おうとした時刻Ｔ２をＩ／Ｏユニット３内のレジスタＴh３７３３に保存する（（３））。
【００３０】
折り返し判定制御部３７３は、通常通信処理を行った際に得たレジスタＴｘ３７３２に格納されているタイマー値Ｔｘを用いて、折り返し判定制御部３７３でＩ／Ｏユニット３内で保存したヘルスチェックと応答通信との時間間隔（Ｔｈ−Ｔｘ）とレジスタＴα３７３１に設定されているヘルスチェック間隔（Ｔα）との大小比較からヘルスチェック実行の必要の有無を判定する。 
【００３１】
すなわち、折り返し判定制御部３７３は、ヘルスチェックと最後に実行した通常処理との間隔がヘルスチェック間隔Ｔαより小さい（Ｔｈ−Ｔｘ＜Ｔα）場合（（４））には、ヘルスチェックを折り返す（（５））。 
ヘルスチェックと最後に実行した通常処理との時間間隔がヘルスチェック間隔Ｔαより大きい（Ｔｈ−Ｔｘ＞Ｔα）場合（（６））には、ヘルスチェックを実行する（（７））。 
【００３２】
次に、本発明の具体的な実施例について図２、図４、図５、図６を参照して説明する。 
図２、図４を参照すると、インバウンドキュー３５は応答通信のリプライコマンドをコマンドデコード部３７１に通知し（（１））、コマンドデコード部３７１は通知されたコマンドの内容を判定し、通常応答通信のリプライコマンドであればタイマー制御部３７２に通知する（（２））。
【００３３】
タイマー制御部３７２は、タイマー制御部３７２内のタイマーによりタイマー値を得て、折り返し判定制御部３７３にタイマー値を通知し（（３））、折り返し判定制御部３７３では、レジスタＴｘ３７３２に保存する。 
図２、図５を参照すると、コマンドデコード部３７１はアウトバウンドキュー３１からのコマンドを受信して（（１））、コマンドをデコードする。コマンドがヘルスチェックコマンドなら、タイマー制御部３７２に通知する（（２））。
【００３４】
タイマー制御部３７２は内蔵するタイマーによりタイマー値を得て折り返し判定制御部３７３にタイマー値を通知し（（３））、折り返し判定制御部３７３では通知されたタイマー値をレジスタＴh３７３３に保存する。
折り返し判定制御部３７３は、通常通信処理を行った際に得たレジスタＴｘ３７３２に格納されているタイマー値Ｔｘを用いて、折り返し判定制御部３７３でＩ／Ｏユニット３内で保存したヘルスチェックと応答通信との時間間隔（Ｔｈ−Ｔｘ）とヘルスチェック間隔Ｔαとの大小比較からヘルスチェック実行の必要の有無を判定する。
【００３５】
折り返し判定制御部３７３は、ヘルスチェックと応答通信との間隔（Ｔｈ−Ｔｘ）がヘルスチェック間隔Ｔαより小さい場合には、折り返し変換制御部３７４へ通知する（（４））。
折り返し変換制御部３７４は、ヘルスチェック通信を折り返し通信に変換してアウトバウンドキュー３１とインバウンドキュー３５に折り返し通知を行う（（５））。
データは光インターフェース制御部３４を介さずに、アウトバウンドバッファ３２からインバウンドバッファ３６へ転送される（（６））。 
【００３６】
図２、図６を参照すると、折り返し判定制御部３７３は、Ｉ／Ｏユニット３内で保存したヘルスチェックと応答通信との間隔（Ｔｈ−Ｔｘ）とヘルスチェック間隔Ｔαとの大小比較からヘルスチェック実行の必要の有無を判定する。
折り返し判定制御部３７３は、ヘルスチェックと前回の応答通信との間隔（Ｔｈ−Ｔｘ）がヘルスチェック間隔Ｔαより大きい場合、アウトバウンドキュー３１にヘルスチェックの実行必要有りと通知し（（４））、アウトバウンドキュー３１はヘルスチェックを実行する。 
【００３７】
本発明の実施形態に係る通信装置のヘルスチェック装置によれば、通常処理をしている際にはヘルスチェックを間引くことで、通常処理のピーク時に余計な転送を省くことができ、必要以上に行われていた分のヘルスチェック回数を減らすことが出来る。その理由は、ヘルスチェックと応答通信との間隔（Ｔｈ−Ｔｘ）がヘルスチェック間隔Ｔα以下であった場合に通常処理が行われるとヘルスチェックを行ったと見なせるため、折り返し通信に変換してヘルスチェックコマンドをＩ／Ｏユニット３内で折り返させる機能を設けたためである。 
【００３８】
また、本発明の実施形態に係る通信装置のヘルスチェック装置によれば、短い間隔でヘルスチェックを行うことができ、より早く障害を検出できる。このため、障害が発生した場合には障害の影響範囲を小さくすることが可能となる。その理由は、ピーク時はヘルスチェックを間引くため転送性能に影響を与えないことから、ヘルスチェック間隔Ｔαを小さくすることが可能であるためである。 
【００３９】
また、本発明では、周期タスクはプログラム（ファームウェア）であり、ヘルスチェックを定期的に実行させるタスクである。この周期タスクから見れば、応答タスクからのリプライとＩ／Ｏユニットからのヘルスチェックの折り返しは同一のものとして見えるため周期タスク側、即ちファームウェアの修正は不要となる。
【００４０】
次に、本発明の他の実施形態に係る通信装置のヘルスチェック装置について説明する。本発明の実施形態に係る通信装置のヘルスチェック装置が、既述した実施形態に係る通信装置のヘルスチェック装置と異なる点は、Ｉ／Ｏユニット３内の折り返し判定制御部３７３の構成のみであり、他の構成は同一であるので、重複する説明は省略する。
【００４１】
本発明の実施形態に係る通信装置のヘルスチェック装置が既述した実施形態に係る通信装置のヘルスチェック装置と異なる点は、具体的には図７に示すように、折り返し判定制御部３７３内に通常処理実行毎に実行回数をカウントするカウンタ（Ｃｙ）３７３４と、通常処理が何回以上実行されれば通常処理が高頻度で発生していることを示す閾値Ｃγが設定されるレジスタ３７３５を設けたことである。 
【００４２】
上記構成において、カウンタ３７３４（Ｃｙ）はヘルスチェックと最後に実行した通常処理との間隔がヘルスチェック間隔より小さい（Ｔｈ−Ｔｘ＜Ｔα）期間内では、カウントアップされ続け、コマンドデコード部３７１から折り返し判定制御部３７３にヘルスチェックコマンドが通知されたら、カウンタ３７３４（Ｃｙ）は０にリセットされる。 
コマンドデコード部３７１から折り返し判定制御部３７３に受信したコマンドが通常処理コマンドであるという通知を受けると（（３））、カウンタ３７３４（Ｃｙ）はカウントアップする。
【００４３】
コマンドデコード部３７１から折り返し判定制御部３７３にヘルスチェックコマンドを通知されると、折り返し判定制御部３７３は、カウンタ３７３４（Ｃｙ）のカウント値Ｃｙがレジスタ３７３５に設定されている閾値Ｃγより大きい場合には通常処理が高頻度で行われていると判定し、ヘルスチェックの折り返しを実行する（（４−１，（５）））。
【００４４】
また、ヘルスチェックと最後に実行した通常処理との時間間隔がヘルスチェック間隔より小さい（Ｔｈ−Ｔｘ＜Ｔα）期間内において、カウンタ３７３４（Ｃｙ）のカウント値Ｃｙがレジスタ３７３５に設定されている閾値Ｃγより小さい場合は通常処理の頻度は低いと判定し、アウトバウンドキュー３１に折り返し通知を行う（（４−２））。この結果、ヘルスチェックが実行される。
【００４５】
本実施形態によれば、ヘルスチェックと最後に実行した通常処理との時間間隔がヘルスチェック間隔より小さい（Ｔｈ−Ｔｘ＜Ｔα）期間内において通常処理の実行回数を示すカウンタ３７３４（Ｃｙ）のカウント値Ｃｙがレジスタ３７３５に設定されている閾値Ｃγ以上あれば通常処理が高頻度であると判定する機能を増やすことにより、処理ピーク時のみヘルスチェックコマンドを抑止することができる。 
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態に係る通信装置のヘルスチェック装置の全体構成を示すブロック図。
【図２】図１に示した本発明の実施形態に係る通信装置のヘルスチェック装置におけるヘルスチェック制御部の具体的構成を示すブロック図。
【図３】図１に示した本発明の実施形態に係る通信装置のヘルスチェック装置の動作を示すシーケンス図。
【図４】図１に示した本発明の実施形態に係る通信装置のヘルスチェック装置の動作の一例を示す説明図。
【図５】図１に示した本発明の実施形態に係る通信装置のヘルスチェック装置の動作の一例を示す説明図。
【図６】図１に示した本発明の実施形態に係る通信装置のヘルスチェック装置の動作の一例を示す説明図。
【図７】本発明の他の実施形態に係る通信装置のヘルスチェック装置の構成及び動作を示す説明図。
【符号の説明】
【００４７】
１…プロセッサ、２…メモリ、３…Ｉ／Ｏユニット、３０…ＰＣＩインターフェース、３１…アウトバウンドキュー、３２…アウトバウンドバッファ、３３…ＤＭＡ制御部、３４…光インターフェース制御部、３５…インバウンドキュー、３６…インバウンドバッファ、３７…ヘルスチェック制御部、３８…セレクタ、３９…被解Ｒインターフェース、３７１…コマンドデコード部、３７２…タイマー制御部、３７３…折り返し判定制御部、３７４…折り返し変換制御部
【図１】
0004812133.tif 000002
【図２】
0004812133.tif 000003
【図３】
0004812133.tif 000004
【図４】
0004812133.tif 000005
【図５】
0004812133.tif 000006
【図６】
0004812133.tif 000007
【図７】
0004812133.tif 000008