(57)【要約】【課題】  同期収束時間を短縮するために、ルートから見たツリーの形を考慮した、ネットワークの時刻同期方法を提供する。【解決手段】  対向する一方のノードの通信装置の機能をマスタとし、他方のノードの通信装置の機能をスレーブとして、マスタの同期用クロックにスレーブのクロックを同期させるステップと、マスタ及びスレーブが収容されているノードは、スレーブのクロックにマスタのクロックを同期させるステップとを有する時刻同期方法であって、マスタ及びスレーブがそれぞれ、当該マスタ及びスレーブの配下で同期する配下クロック数を取得する第１のステップと、マスタ及びスレーブが収容されたノードについて、最大配下クロック数を有するスレーブのクロックに、マスタのクロックを同期させる第２のステップとを有する。【選択図】  図１２
2005286720.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードが分散配置され、各ノードが少なくとも１つの通信装置を含み、対向するノードがそれぞれの通信装置間にリンクを確立するネットワークにあって、
対向する一方のノードの通信装置の機能をマスタとし、他方のノードの通信装置の機能をスレーブとして、前記マスタの同期用クロックに前記スレーブのクロックを同期させるステップと、
前記マスタ及び前記スレーブが収容されているノードは、前記スレーブのクロックに前記マスタのクロックを同期させるステップと
を有し、前記同期のとれたリンクに繋がる複数のマスタのうち、クロック供給源として機能するマスタをルートと定義して、前記複数のノードをツリー状に構成したネットワークにおける時刻同期方法において、
前記マスタ及びスレーブが、前記ルートの配下で同期するルート配下クロック数を取得する第１のステップと、
前記マスタ及び前記スレーブが収容されたノードについて、最大ルート配下クロック数を有するスレーブのクロックに、前記マスタのクロックを同期させる第２のステップと
を有することを特徴とするネットワークの時刻同期方法。
【請求項２】
前記第２のステップは、
前記最大ルート配下クロック数を有するスレーブ以外のスレーブが、当該スレーブに対向するマスタと機能を交換することにより、当該スレーブをマスタに変更し、マスタであったものをスレーブに変更するステップと、
変更された前記マスタのクロックを、前記最大ルート配下クロック数を有する前記スレーブのクロックに同期させるステップと
を更に有することを特徴とする請求項１に記載のネットワークの時刻同期方法。
【請求項３】
前記第１のステップは、
前記ノードに前記マスタが収容されていない場合、当該ノードに収容された前記スレーブをリーフと定義し、
前記リーフが、配下クロック数を１とするホップ数通知メッセージを、当該リーフのマスタとなる上位ノードへ送信するステップと、
前記ホップ数通知メッセージを受信した前記マスタが、該メッセージに含まれる配下クロック数の合計を保持し、合計された配下クロック数を含むホップ数通知メッセージをマスタとなる上位ノードへ送信するステップと、
前記ホップ数通知メッセージを受信した前記ルートが、該メッセージに含まれる配下クロック数の合計を保持し、合計されたルート配下クロック数を含むルートＩＤ通知メッセージを下位ノードへ送信するステップと、
前記ルートＩＤ通知メッセージを受信した前記マスタ及びスレーブが、該メッセージに含まれるルート配下クロック数を保持するステップと
を更に有することを特徴とする請求項１又は２に記載のネットワークの時刻同期方法。
【請求項４】
前記第１のステップについて、前記マスタ及び前記スレーブがそれぞれ、当該ノードから前記ルートまでのルートホップ数を更に取得し、
前記第２のステップについて、前記マスタ及び前記スレーブの前記ルート配下クロック数が同じ場合、最小ルートホップ数を有するスレーブのクロックに、前記マスタのクロックを同期させる
ことを特徴とする請求項１から３のいずれか１項の記載のネットワークの時刻同期方法。
【請求項５】
前記第２のステップについて、前記最小ルートホップ数を有するスレーブ以外のスレーブであって、前記最小ルートホップ数よりも２以上多いルートホップ数を有するスレーブについて、当該スレーブに対向するマスタと機能を交換することにより、当該スレーブをマスタに変更し、マスタであったものをスレーブに変更するステップと、
変更された前記マスタのクロックを、前記最小ルートホップ数を有する前記スレーブのクロックに同期させるステップと
を更に有することを特徴とする請求項４に記載のネットワークの時刻同期方法。
【請求項６】
前記ルートが、ルートホップ数を０とするルートＩＤ通知メッセージを、当該ルートのスレーブとなる下位ノードへ送信するステップと、
前記ルートＩＤ通知メッセージを受信した前記スレーブが、該メッセージに含まれるルートホップ数を保持し、１増分したルートホップ数を含むルートＩＤ通知メッセージを、スレーブとなる下位ノードへ送信するステップと
を更に有することを特徴とする請求項４又は５に記載のネットワークの時刻同期方法。
【請求項７】
複数のノードが分散配置され、各ノードが少なくとも１つの通信装置を含み、対向するノードがそれぞれの通信装置間にリンクを確立するネットワークにあって、
対向する一方のノードの通信装置の機能をマスタとし、他方のノードの通信装置の機能をスレーブとして、前記マスタの同期用クロックに、前記スレーブのクロックを同期させるステップと、
前記マスタ及び前記スレーブが収容されているノードは、前記スレーブのクロックに前記マスタのクロックを同期させるステップと
を有し、前記同期のとれたリンクに繋がる複数のマスタのうち、クロック供給源として機能するマスタをルートと定義して、前記複数のノードをツリー状に構成したネットワークにおける時刻同期方法において、
前記マスタ及び前記スレーブがそれぞれ、当該ノードから前記ルートまでのルートホップ数を取得する第１のステップと、
前記マスタ及び前記スレーブが収容されたノードについて、最小ルートホップ数を有するスレーブのクロックに、前記最小ルートホップ数よりも２以上多いルートホップ数を有するマスタのクロックを同期させる第２のステップと
を有することを特徴とするネットワークの時刻同期方法。
【請求項８】
前記第２のステップは、
前記最小ルートホップ数を有するスレーブ以外のスレーブであって、前記最小ルートホップ数よりも２以上多いルートホップ数を有するスレーブについて、当該スレーブに対向するマスタと機能を交換することにより、前記スレーブをマスタに変更し、マスタであったものをスレーブに変更するステップと、
変更された前記マスタのクロックを、前記最小ルートホップ数を有する前記スレーブのクロックに同期させるステップと
を更に有することを特徴とする請求項７に記載のネットワークの時刻同期方法。
【請求項９】
前記第１のステップは、
前記ルートが、ルートホップ数を０とするルートＩＤ通知メッセージを、当該ルートのスレーブとなる下位ノードへ送信するステップと、
前記ルートＩＤ通知メッセージを受信した前記スレーブが、該メッセージに含まれるルートホップ数を保持し、１増分したルートホップ数を含むルートＩＤ通知メッセージを、スレーブとなる下位ノードへ送信するステップと
を更に有することを特徴とする請求項８又は９に記載のネットワークの時刻同期方法。
【請求項１０】
複数のノードが分散配置され、各ノードが少なくとも１つの通信装置を含み、対向するノードがそれぞれの通信装置間にリンクを確立するネットワークにあって、
対向する一方のノードの通信装置の機能をマスタとし、他方のノードの通信装置の機能をスレーブとして、前記マスタの同期用クロックに、前記スレーブのクロックを同期させるステップと、
前記マスタ及び前記スレーブが収容されているノードは、前記スレーブのクロックに前記マスタのクロックを同期させるステップと
を有し、前記同期のとれたリンクに繋がる複数のマスタのうち、クロック供給源として機能するマスタをルートと定義して、前記複数のノードをツリー状に構成したネットワークにおける時刻同期方法において、
前記ルートは、当該ルートを収容するノードとリンクを介して同期するスレーブ毎に、ツリーの末端に位置するスレーブであるリーフまでのリーフホップ数を取得する第１のステップと、
前記ルートが収容されたノードについて、繋がっている複数のスレーブのうち、最小リーフホップ数よりも２以上多いリーフホップ数を有するスレーブが存在する場合、当該ルートが、前記最小リーフホップ数を有するスレーブと機能を交換することにより、当該ルートをスレーブに変更し、スレーブであったものをルートに変更する第２のステップと、
前記スレーブのクロックを、前記ルートのクロックに同期させる第３のステップと
を有することを特徴とするネットワークの時刻同期方法。
【請求項１１】
前記ルートが収容されたノードに更にマスタが収容されていた場合、前記機能を交換された前記スレーブのクロックに、前記マスタのクロックを同期させる第４のステップを更に有することを特徴とする請求項１０に記載のネットワークの時刻同期方法。
【請求項１２】
前記第１のステップは、
前記リーフが、リーフホップ数を１とするリーフホップ数通知メッセージを、当該リーフのマスタとなる上位ノードへ送信するステップと、
前記リーフホップ数通知メッセージを受信した前記マスタが、該メッセージに含まれるリーフホップ数を保持し、１増分したリーフホップ数を含むリーフホップ数通知メッセージをマスタとなる上位ノードへ送信するステップと
を更に有することを特徴とする請求項１０又は１１に記載のネットワークの時刻同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノードが分散配置されたネットワークの時刻同期方法に関する。
【背景技術】
【０００２】
メッシュ型通信ネットワークにおける時刻同期方法として、管理ノードを必要とすることなく、ノード間の時刻同期をネットワーク全体で自律分散的に確立する技術がある（例えば特許文献１参照）。メッシュ型通信ネットワークとは、複数のノードＮがメッシュ状に分散配置され、各ノードが少なくとも１つの通信装置を含み、対向するノードがそれぞれの通信装置間にリンクを確立しているものをいう。このような技術は、各ノードが対向ノードとの間でのみ同期を確立しつつ、全体として複数のノードを順次にツリー状に構成する。従って、部分的なノード障害があった場合でも、リンクで接続された範囲内でツリーを維持することが可能となる。
【０００３】
例えば、特許文献１に基づく技術は、対向する一方のノードの通信装置の機能をマスタとし、他方のノードの通信装置の機能をスレーブとして、マスタの同期用クロックにスレーブのクロックを同期させる。リンクを介して対向するマスタとスレーブとの関係は、両者間のネゴシエーションにより、入れ替わることができる。また、マスタ及びスレーブが収容されているノードは、スレーブのクロックにマスタのクロックを同期させる。
【０００４】
このようにして同期のとれたリンクに繋がる複数のマスタのうち、クロック供給源として機能するマスタをルートと定義して、複数のノードをツリー状に構成する。ルートＲは、同期の確立されているツリー内に唯一存在するものとする。
【０００５】
尚、メッシュ型通信ネットワークについて、全てのノードが同期しているとは限らず、複数の時刻同期ツリーが存在することとなる。また、１つのノードに複数の通信装置が存在していても、必ず全てのクロックが同期しているとは限らない。この場合、１つのノードが異なるツリーに属することとなる。
【０００６】
【特許文献１】特開２００３−２７３８４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の時刻同期方法によれば、各ノードのクロックに事前に設定されている優先度のみを用いて、いずれのクロックに同期するかが決定されていた。従って、ルートから見たツリーの形を考慮することができないために、偏ったツリーとなる場合があった。このようなツリーは、収束時間が増加し、ルートからの従属同期を実現する上で効率の悪いものである。
【０００８】
そこで、本発明は、同期収束時間を短縮するために、ルートから見たツリーの形を考慮した、ネットワークの時刻同期方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明が対象とするネットワークにおける時刻同期方法は、複数のノードが分散配置され、各ノードが少なくとも１つの通信装置を含み、対向するノードがそれぞれの通信装置間にリンクを確立するネットワークにあって、対向する一方のノードの通信装置の機能をマスタとし、他方のノードの通信装置の機能をスレーブとして、マスタの同期用クロックにスレーブのクロックを同期させるステップと、マスタ及びスレーブが収容されているノードは、スレーブのクロックにマスタのクロックを同期させるステップとを有し、同期のとれたリンクに繋がる複数のマスタのうち、クロック供給源として機能するマスタをルートと定義して、複数のノードをツリー状に構成したネットワークにおけるものである。
【００１０】
本発明におけるネットワークの時刻同期方法は、
マスタ及びスレーブが、ルートの配下で同期するルート配下クロック数を取得する第１のステップと、
マスタ及びスレーブが収容されたノードについて、最大ルート配下クロック数を有するスレーブのクロックに、マスタのクロックを同期させる第２のステップと
を有することを特徴とする。
【００１１】
また、本発明の時刻同期方法における他の実施形態によれば、第２のステップは、
最大ルート配下クロック数を有するスレーブ以外のスレーブが、当該スレーブに対向するマスタと機能を交換することにより、当該スレーブをマスタに変更し、マスタであったものをスレーブに変更するステップと、
変更されたマスタのクロックを、最大ルート配下クロック数を有するスレーブのクロックに同期させるステップとを更に有することも好ましい。
【００１２】
更に、本発明の時刻同期方法における他の実施形態によれば、第１のステップは、ノードにマスタが収容されていない場合、当該ノードに収容されたスレーブをリーフと定義し、
リーフが、配下クロック数を１とするホップ数通知メッセージを、当該リーフのマスタとなる上位ノードへ送信するステップと、
ホップ数通知メッセージを受信したマスタが、該メッセージに含まれる配下クロック数の合計を保持し、合計された配下クロック数を含むホップ数通知メッセージをマスタとなる上位ノードへ送信するステップと
ホップ数通知メッセージを受信したルートが、該メッセージに含まれる配下クロック数の合計を保持し、合計されたルート配下クロック数を含むルートＩＤ通知メッセージを下位ノードへ送信するステップと、
ルートＩＤ通知メッセージを受信したマスタ及びスレーブが、該メッセージに含まれるルート配下クロック数を保持するステップと
を更に有することも好ましい。
【００１３】
更に、本発明の時刻同期方法における他の実施形態によれば、
第１のステップについて、マスタ及びスレーブがそれぞれ、当該ノードからルートまでのルートホップ数を更に取得し、
第２のステップについて、マスタ及びスレーブのルート配下クロック数が同じ場合、最小ルートホップ数を有するスレーブのクロックに、マスタのクロックを同期させることも好ましい。
【００１４】
更に、本発明の時刻同期方法における他の実施形態によれば、
第２のステップについて、最小ルートホップ数を有するスレーブ以外のスレーブであって、最小ルートホップ数よりも２以上多いルートホップ数を有するスレーブについて、当該スレーブに対向するマスタと機能を交換することにより、当該スレーブをマスタに変更し、マスタであったものをスレーブに変更するステップと、
変更されたマスタのクロックを、最小ルートホップ数を有するスレーブのクロックに同期させるステップとを更に有することも好ましい。
【００１５】
更に、本発明の時刻同期方法における他の実施形態によれば、
ルートが、ルートホップ数を０とするルートＩＤ通知メッセージを、当該ルートのスレーブとなる下位ノードへ送信するステップと、
ルートＩＤ通知メッセージを受信したスレーブが、該メッセージに含まれるルートホップ数を保持し、１増分したルートホップ数を含むルートＩＤ通知メッセージを、スレーブとなる下位ノードへ送信するステップとを更に有することも好ましい。
【００１６】
また、本発明におけるネットワークの時刻同期方法は、
マスタ及びスレーブがそれぞれ、当該ノードからルートまでのルートホップ数を取得する第１のステップと、
マスタ及びスレーブが収容されたノードについて、最小ルートホップ数を有するスレーブのクロックに、最小ルートホップ数よりも２以上多いルートホップ数を有するマスタのクロックを同期させる第２のステップと
を有することを特徴とする。
【００１７】
また、本発明の時刻同期方法における他の実施形態によれば、
第２のステップは、
最小ルートホップ数を有するスレーブ以外のスレーブであって、最小ルートホップ数よりも２以上多いルートホップ数を有するスレーブについて、当該スレーブに対向するマスタと機能を交換することにより、スレーブをマスタに変更し、マスタであったものをスレーブに変更するステップと、
変更されたマスタのクロックを、最小ルートホップ数を有するスレーブのクロックに同期させるステップと
を更に有することも好ましい。
【００１８】
更に、本発明の時刻同期方法における他の実施形態によれば、
第１のステップは、
ルートが、ルートホップ数を０とするルートＩＤ通知メッセージを、当該ルートのスレーブとなる下位ノードへ送信するステップと、
ルートＩＤ通知メッセージを受信したスレーブが、該メッセージに含まれるルートホップ数を保持し、１増分したルートホップ数を含むルートＩＤ通知メッセージを、スレーブとなる下位ノードへ送信するステップと
を更に有することも好ましい。
【００１９】
更に、本発明におけるネットワークの時刻同期方法は、
ルートは、当該ルートを収容するノードとリンクを介して同期するスレーブ毎に、ツリーの末端に位置するスレーブであるリーフまでのリーフホップ数を取得する第１のステップと、
ルートが収容されたノードについて、繋がっている複数のスレーブのうち、最小リーフホップ数よりも２以上多いリーフホップ数を有するスレーブが存在する場合、当該ルートが、最小リーフホップ数を有するスレーブと機能を交換することにより、当該ルートをスレーブに変更し、スレーブであったものをルートに変更する第２のステップと、
スレーブのクロックを、ルートのクロックに同期させる第３のステップと
を有することを特徴とする。
【００２０】
本発明の時刻同期方法における他の実施形態によれば、ルートが収容されたノードに更にマスタが収容されていた場合、機能を交換されたスレーブのクロックに、マスタのクロックを同期させる第４のステップを更に有することも好ましい。
【００２１】
また、本発明の時刻同期方法における他の実施形態によれば、第１のステップは、
リーフが、リーフホップ数を１とするリーフホップ数通知メッセージを、当該リーフのマスタとなる上位ノードへ送信するステップと、
リーフホップ数通知メッセージを受信したマスタが、該メッセージに含まれるリーフホップ数を保持し、１増分したリーフホップ数を含むリーフホップ数通知メッセージをマスタとなる上位ノードへ送信するステップとを更に有することも好ましい。
【発明の効果】
【００２２】
本発明におけるネットワークの時刻同期方法によれば、同期収束時間を短縮するために、ルートから見たツリーの形を考慮することができる。配下クロック数が多いツリーのクロックに従属することができ、またルートまでのホップ数が少ないクロックに従属することができるので、ジッタを抑制することができ、正確な同期タイミングを実現することができる。更に、ルートが、ツリーの最適な位置に移動することにより、ツリー全体のホップ数を短縮することもできる。本発明によれば、特定の管理ノードを必要とせず、各ノードが時刻同期のために自律分散的に動作する。
【００２３】
特に、ネットワークトポロジの変化に柔軟に対応して、同期ネットワークを自律分散的に構成又は維持することができるので、無線局の移動を想定したノーマディック／アドホックネットワークへの用途に有効である。また、本発明におけるツリーの構築技術は、無線に限られず、インターネットのような有線網にも適用できる。例えばＮＴＰ(Network Time Protocol)のような時刻同期方式においても、事前に基準ノードやノード間の階層関係を設定することなく、最適なツリーを構成し、同期を維持することが可能となるため、極めて有効である。
【発明を実施するための最良の形態】
【００２４】
以下では、図面を用いて、本発明の最良の実施形態を詳細に説明する。
【００２５】
「クロック」とは、リンクを介して終端する通信装置をいい、ルートのクロックＲと、マスタのクロックＭと、スレーブのクロックＳと、リーフのクロックＬとがある。
「配下クロック数」Ｎallとは、自クロックの下位に従属している全クロック数をいう。自クロックに複数のクロックが従属している場合には、従属している各クロックの配下クロック数の和をもって配下クロック数とする。
「ルート配下クロック数」Ｒallとは、ルートに従属している全クロック数をいう。各クロックが保持し、クロック同期の際の比較対照となる。
「ルートホップ数」Ｒhopとは、ルートを０としたときのルートから自ノードまでの距離を示すホップ数をいう。
「リーフホップ数」Ｌhopとは、ツリー末端のスレーブであるリーフを０とした場合、そのリーフから自ノードまでの距離を示すホップ数をいう。自ノードからのリーフが複数存在する場合、その最大ホップ数を自ノードのリーフホップ数とする。
【００２６】
新しくツリーを構築する本発明の方法は、各クロックが「ルート配下クロック数」Ｒall及び「ルートホップ数」Ｒhopを保持することにより実現する。「ルート配下クロック数」Ｒallを考慮することにより、ルート配下クロック数が多いクロックに当該ノードが従属することができ、ネットワーク全体での同期確立収束までの時間を短縮することができる。また、「最大ホップ数」Ｒhopを考慮することにより、リーフまでのホップ数が最小となるツリーに従属することができ、ツリー構造を最適化する、即ち、ツリーの基準ノードから、各ノードへの最大ホップ数を最短にすることができる。
【００２７】
また、既に構築されたツリーを最適化する本発明の方法は、「ホップ数短縮化方法」と「ルート移動方法」とがある。「ホップ数短縮化方法」とは、自ノード内の複数のクロックの中で、ルートからのホップ数の差が一定以上ある場合、ホップ数の大きなクロックの従属関係を逆転させて従属先を切り替え、自ノードを含めた下位クロックのホップ数を短縮し、ツリーの最大ホップ数を短くするものである。また、「ルート移動方法」とは、一度構築されたツリーにおいて、ツリーの構造は崩さないまま、全体として最適な位置にルートを移動させ、ツリーの最大ホップ数を短くするものである。これは、「ルートスレーブ逆転」及び「ルートマスタ逆転」の２つの動作の連続により、最適な位置までルートを移動させる。
【００２８】
これら方法を実現するために、「ルートＩＤ通知メッセージ」及び「ホップ数通知メッセージ」が用いられる。
【００２９】
「ルートＩＤ通知メッセージ」Ｒmesは、ツリーＩＤと、ルートホップ数Ｒhopと、ルート配下クロック数Ｒallとを含む。このメッセージは、ルートの状態が変化したこと（例えばリンク断等）を下位ノードへ通知するものである。このメッセージを受信したクロックは、これら値（ツリーＩＤ、Ｒhop及びＲall）とを保持し、ルートホップ数Ｒhopを１増分して、下位クロックに対してルートＩＤ通知メッセージを送信する。
【００３０】
「ホップ数通知メッセージ」Ｈmesは、リーフホップ数Ｌhopと、配下クロック数Ｎallとを含む。このメッセージは、リンク独立や、ツリーＩＤの変更によりホップ数が変化したことを上位ノードへ通知するものである。このメッセージを受信したクロックは、これら値（Ｌhop及びＮall）を保持し、リーフホップ数Ｌhopを１増分し、配下クロック数を再加算して、上位クロックに対してホップ数通知メッセージを送信する。
【００３１】
図１は、本発明におけるメッセージの送受信を表すツリー構成図である。
【００３２】
図１によれば、ノードＮ０内で、マスタＭ０がルートＲに同期している。ノードＮ１０のスレーブＳ１は、上位ノードＮ０のルートＲと同期し、ノードＮ１１のスレーブＳ１は、上位ノードＮ０のマスタＭ０と同期している。また、ノードＮ１０について、３つのマスタＭ１は、スレーブＳ１に同期している。マスタＭ１は、ノードＮ１０の下位ノードＮ２１〜Ｎ２３のスレーブＳ２から同期されている。
【００３３】
ノードの各クロック（マスタＭ、スレーブＳ、ルートＲ及びリーフＬ）は、Ｒhop「ルートホップ数」と、Ｌhop「リーフホップ数」と、Ｎall「配下クロック数」と、Ｒall「ルート配下クロック数」とを保持する。
【００３４】
ノードＮ０は、下位ノードＮ１０及びＮ１１へ、ルートＩＤ通知メッセージＲmes（ＩＤ，Ｒhop，Ｒall）を送信する。ノードＮ０が送信するルートＩＤ通知メッセージＲmesのルートホップ数Ｒhopは０である。
【００３５】
ノードＮ１０のスレーブＳ１は、ルートＩＤ通知メッセージＲmesに応答して、ＡＣＫをノードＮ０へ送信する。ノードＮ０のスレーブＳ１は、ルートＩＤ通知メッセージＲmesの受信によって、ルートホップ数０に１増分して保持する。更に、スレーブＳ１に同期している各マスタＭ１は、同様にルートホップ数Ｒhop＝１を保持し、更に、下位ノードＮ２１〜Ｎ２３へ、ルートホップ数Ｒhop＝１としたルートＩＤ通知メッセージＲmesを送信する。これに対し、ノードＮ１０は、下位ノードＮ２１〜Ｎ２３からＡＣＫを受信する。
【００３６】
このように、ルートＲから送信されたルートＩＤ通知メッセージＲmesは、上位から下位へ中継されながら、リーフまで到達する。これに応答して、リーフは、ホップ数通知メッセージＨmes（Ｌhop，Ｎall）を上位ノードへ送信する。リーフが送信するホップ数通知メッセージＨmesは、リーフホップ数Ｌhopが０であり、配下クロック数Ｎallが１である。
【００３７】
ノードＮ１０のマスタＭ１が、ノードＮ２１から、ホップ数通知メッセージＨmes（Ｌhop＝５，Ｎall＝１０）を受信する。このとき、マスタＭ１は、リーフホップ数５に１増分して保持し、配下クロック数１０に１増分して保持する。更に、マスタＭ１が同期しているスレーブＳ１は、全てのマスタＭ１の中で最大リーフホップ数を保持する。ここでは、３つのマスタＭ１の中で、最大リーフホップ数は７である。また、スレーブＳ１は、全てのマスタＭ１について配下クロック数の合計値（１１＋１０＋１５＝３６）と、当該ノードＮ１０の中のクロック数（スレーブ１＋マスタ３＝４）との和となる配下クロック数４０を保持する。
【００３８】
ノードＮ０のマスタＭ０は、ノードＮ１１からホップ数通知メッセージＨmes（Ｌhop＝５，Ｎall＝８）を受信している。これにより、マスタＭ０は、受信したリーフホップ数５に１増分したリーフホップ数６を保持する。また、マスタＭ０は、受信した配下クロック数８に、自身のクロック数１との和である配下クロック数９を保持する。
【００３９】
最後に、ノードＮ０のルートＲは、ノードＮ１０のスレーブＳ１からホップ数通知メッセージＨmes（Ｌhop＝７，Ｎall＝４０）を受信する。これにより、ルートＲは、マスタＭ０との関係から、受信したリーフホップ数の最大値（７＞６）に１増分したリーフホップ数８を保持する。また、ルートＲは、受信した配下クロック数の合計値（４０＋９）と、自身のクロック数１との和である配下クロック数５０を保持する。
【００４０】
このように、ルートＩＤ通知メッセージＲmesとホップ数通知メッセージＨmesとを送受信することによって、各クロックは、所定の値を取得することができる。
【００４１】
図２は、図１の構成について、リンクダウンが発生した場合のツリー構成図である。
【００４２】
ノードＮ２３の従属ツリーにおいてリンクダウンが発生し、Ｎ２３の配下クロック数Ｎallが８に減少し、リーフホップ数Ｌhopが３に減少したとする。このとき、ノードＮ２３は、ホップ数通知メッセージＨmes（Ｌhop＝３，Ｎall＝８）を、上位ノードＮ１０へ送信する。
【００４３】
ホップ数通知メッセージＨmesを受信したノードＮ１０のマスタＭ１は、リーフホップ数３を１増分して保持し、配下クロック数８を保持する。更に、マスタＭ１が同期しているスレーブＳ１において、３つのマスタＭ１の中で最大リーフホップ数は６となる。従って、スレーブＳ１は、全てのマスタＭ１について配下クロック数の合計値（１１＋１０＋８＝２９）と、当該ノードＮ１０の中のクロック数４（スレーブ１＋マスタ３＝４）との和となる配下クロック数３３を保持する。
【００４４】
ノードＮ１０のスレーブＳ１は、上位ノードＮ０のルートＲへ、ホップ数通知メッセージＨmes（Ｌhop＝６、Ｎall＝３３）を送信する。これにより、ルートＲは、マスタＭ０との関係から、受信したリーフホップ数の最大値６に１増分したリーフホップ数７を保持する。また、ルートＲは、受信した配下クロック数の合計値（３３＋９）と、自身のクロック数１との和である配下クロック数４３を保持する。
【００４５】
このように、ツリーに変更が生じた場合であっても、ルートＩＤ通知メッセージＲmesとホップ数通知メッセージＨmesとを送受信することによって、各クロックは、所定の値を取得することができる。
【００４６】
図３は、ノードがルートＩＤ通知メッセージＲmesを受信した場合のフローチャートである。
【００４７】
（Ｓ３０１）ルートＩＤ通知メッセージＲmes（ＩＤ,Ｒhop,Ｒall）を受信した自ノードの上位クロック（スレーブ）は、ツリーＩＤ、ルートホップ数Ｒhop及びルート配下クロック数Ｒallを更新する。
（Ｓ３０２）当該上位クロックは、ルートＩＤ通知メッセージの送信元ノードに対して、ＡＣＫを送信する。
（Ｓ３０３）自ノード内に当該上位クロックに従属する他のリンクのマスタが存在するか否かを判定する。即ち、自ノードがリーフノードであるか否かを判定する。
（Ｓ３０４）自ノードがリーフノードでないならば、当該上位クロックに従属している全てのマスタに対して、Ｓ３０５〜Ｓ３０７の処理を実行する。
（Ｓ３０５）当該下位クロック（マスタ）は、ツリーＩＤ、ルートホップ数Ｒhop及びルート配下クロック数Ｒallを更新する。
（Ｓ３０６）当該下位クロック（マスタ）に同期している下位ノードに対して、ルートホップ数を１増分したルートＩＤ通知メッセージを送信する。
（Ｓ３０７）下位ノードからＡＣＫを受信する。
（Ｓ３０８）当該上位クロックに従属している全てのマスタに対して、Ｓ３０５〜Ｓ３０７の処理を繰り返す。その後、処理を終了する。
（Ｓ３０９）自ノードがリーフノードであるならば、このルートＩＤ通知メッセージが、ホップ数通知メッセージに対して返答されたものであるか否かを判定する。この判定は、メッセージに含まれるフラグによって判定される。ホップ数通知メッセージに対して返答されたものであるならば、処理を終了する。
（Ｓ３１０）ルートＩＤ通知メッセージが、ホップ数通知メッセージに対して返答されたものでないならば、上位ノードに対して、ホップ数通知メッセージＨmes（Ｌhop＝０，Ｎall＝１）を送信して、処理を終了する。
【００４８】
図４は、ノードがホップ数通知メッセージＨmesを受信した場合のフローチャートである。
【００４９】
（Ｓ４０１）ホップ数通知メッセージＨmes（Ｌhop,Ｎall）を受信した自ノードの下位クロック（マスタ又はルート）は、当該下位クロックの保持するリーフホップ数として、通知されたリーフホップ数Ｌhopに１増分した値を保持する。また、当該下位クロックの保持する配下クロック数として、通知された配下クロック数Ｎallを保持する。尚、これらの過去の値についても、現在の値との変化を判定するために、一時的に保持しておく。
（Ｓ４０２）リーフホップ数及び配下クロック数について、過去の値と現在の値とに変化が生じたか否かを判定する。変化がなければ、処理を終了する。
（Ｓ４０３）これら値に変化があったならば、当該自ノードに従属しているクロックが存在するか否かを判定する。即ち、自ノードがルートであるか否かについて判定する。
（Ｓ４０４）自ノードがルートでないならば、自ノードの上位クロック（スレーブ）は、当該上位クロックの保持するリーフホップ数として、現在従属している下位クロックのリーフホップ数の最大値を保持する。また、当該上位クロックの保持する配下クロック数として、現在従属している下位クロックの配下クロック数の合計値と、現在従属しているクロック数との和を保持する。尚、これらの過去の値についても、現在の値との変化を判定するために、一時的に保持しておく。
（Ｓ４０５）当該上位クロックが同期している上位ノードが存在するか否かを判定する。
（Ｓ４０６）Ｓ４０３において自ノードがルートであるか、又は、Ｓ４０５において上位ノードが存在するならば、このホップ数通知メッセージが、ルートＩＤ通知メッセージに対して返答されたものであるか否かを判定する。この判定は、メッセージに含まれるフラグによって判定される。ルートＩＤ通知メッセージに対して返答されたものであるならば、処理を終了する。
（Ｓ４０７）ホップ数通知メッセージが、ルートＩＤ通知メッセージに対して返答されたものでないならば、下位ノードに対して、ルートＩＤ通知メッセージＲmes（ＩＤ,Ｒhop）を送信して、処理を終了する。
（Ｓ４０８）Ｓ４０５において上位ノードが存在しないならば、リーフホップ数及び配下クロック数について、過去の値と現在の値とに変化が生じたか否かを判定する。変化がなければ、処理を終了する。
（Ｓ４０９）リーフホップ数及び配下クロック数について変化があったならば、当該スレーブのクロックが同期している上位ノードに対して、リーフホップ数を１増分した上で、ホップ数通知メッセージＨmes（Ｌhop,Ｎall）を送信して、処理を終了する。
【００５０】
図５は、ルートＩＤ通知メッセージとホップ数通知メッセージとの関係を示す説明図である。
【００５１】
図５によれば、ノード内においてマスタとスレーブとの間の従属解消をした場合、マスタは、ルートとして機能する。このとき、スレーブは、上位ノードに対してホップ数通知メッセージを送信し、ルートは、下位ノードに対してルートＩＤ通知メッセージを送信する。ルートＩＤ通知メッセージを受信したリーフノードは、それに応答して上位ノードへホップ数通知メッセージを送信する。また、ホップ数通知メッセージを受信したルートは、それに応答して下位ノードへルートＩＤ通知メッセージを送信する。
【００５２】
ルートＩＤ通知メッセージとホップ数通知メッセージとは、常に１対１の関係にある。ルートＩＤ通知メッセージを送信した場合にはホップ数通知メッセージが送信され、ホップ数通知メッセージが送信された場合にはルートＩＤ通知メッセージが送信される。両メッセージには、現在送信されているメッセージが、ルートＩＤ通知メッセージによるものなのか、ホップ数通知メッセージによるものなのかを識別するフラグが含まれている。これにより、メッセージが再現なく送信されるのを防ぐ。
【００５３】
図６は、本発明におけるクロック同期処理のフローチャートである。
【００５４】
（Ｓ６０１）自ノード内で同期のとれていないクロックが存在するか否かを判定する。全てのクロックで同期がとれていれば、Ｓ６０５へ移行する。
（Ｓ６０２）同期のとれていないクロックが存在するならば、全てのクロックのルート配下クロック数Ｒallが同一か否かを判定する。
（Ｓ６０３）全てのクロックのルート配下クロック数Ｒallが同一でないならば、ルート配下クロック数が最も大きいスレーブを基準クロックと定義する。その後、ノード内で同期のとれていないクロックを同期対象とする。
（Ｓ６０４）全てのクロックのルート配下クロック数Ｒallが同一であるならば、ルートホップ数の最も小さいクロックを基準クロックと定義する。その後、ノード内で同期のとれていないクロックを同期対象とする。
（Ｓ６０５）自ノード内で全てのクロックで同期がとれているならば、自ノード内にルートホップ数Ｒhopが２ホップ以上離れたクロックが存在するか否かを判定する。２ホップ以上離れたクロックが存在しないならば、処理を終了する。
（Ｓ６０６）２ホップ以上離れたクロックが存在するならば、ルートホップ数が最も小さいスレーブを基準クロックと定義する。その後、基準クロックから２ホップ以上離れたクロックを同期対象とする。
（Ｓ６０７）基準クロック以外の全てのクロックについて、Ｓ６０８〜Ｓ６１１の処理を実行する。
（Ｓ６０８）当該クロックがスレーブか否かを判定する。スレーブでない、即ちマスタであれば、Ｓ６１０へ移行する。
（Ｓ６０９）当該クロックがスレーブならば、スレーブ／マスタ交換処理を行う。この方法は、特許文献１に示されたものと同じであり、スレーブと、当該スレーブにリンクを解して対向するマスタとの機能を交換する。これにより、当該クロックは、マスタとなる。
（Ｓ６１０）基準クロックに、当該マスタを同期させる。
（Ｓ６１１）基準クロックに同期した当該マスタは、下位ノードへルートＩＤ通知メッセージを送信する。
（Ｓ６１２）他のクロックの全てについてＳ６０８〜Ｓ６１１を繰り返す。
（Ｓ６１３）基準クロックとなるスレーブは、上位ノードへホップ数通知メッセージを送信する。
【００５５】
図７は、２ホップ以上離れた場合にのみホップ数を短縮することの説明図である。
【００５６】
図７（１）のように、新たに従属するクロックとの差分が１ホップの場合には、切り替えたとしても、リーフノードまでのホップ数は結局同じである。図７（２）のように、新たに従属するクロックとの差分が２ホップの場合には、リーフノードまでのホップ数は１つ減少する（Ｌ３->Ｌ２）。図７（３）のように、新たに従属するクロックとの差分が３ホップの場合には、リーフノードまでのホップ数は２つ減少する（Ｌ３->Ｌ１）。このように、新たに従属するクロックとの差分が２ホップ以上の場合に、ホップ数短縮の効果がある。尚、ホップ数短縮の動作は、リーフだけでなく、マスタが従属しているスレーブに対しても当然に発生する。
【００５７】
図８は、ノード内におけるホップ数短縮動作の説明図である。
【００５８】
（Ｓ８１）ノードＮ３のスレーブＳ１は、ノードＮ１のルートＲに同期し、スレーブＳ１にマスタＭ１が同期する。そのマスタＭ１に同一ツリーを介してスレーブＳ３が同期する。更に、スレーブＳ３にマスタＭ３が同期し、マスタＭ３はノードＮ２のリーフＬ４に同期される。
（Ｓ８２）このとき、ホップ数の最も小さいスレーブＳ１が基準クロックとなる。最初に、スレーブＳ３とマスタＭ１との従属が解消される。次に、従属を解消されたマスタＭ１は、基準クロックのスレーブＳ１に従属する。
（Ｓ８３）次に、従属を解消されたスレーブＳ３は、リンクを介して対向するマスタＭ２と機能を交換する。そして、スレーブから交換されたマスタＭ１は、基準クロックのスレーブＳ１に従属する。
【００５９】
図９は、本発明におけるルート移動のフローチャートである。
【００６０】
（Ｓ９０１）自ノードが、ルートを収容しているか否かを判定する。ルートを収容していなければ、処理を終了する。
（Ｓ９０２）ルートが２つ以上のリンクとツリーを構成しているか否かを判定する。
（Ｓ９０３）ルートに１つのリンクしか存在しない場合、そのルートのリーフホップ数が２以上であるか否かを判定する。２以上でなければ、処理を終了する。
（Ｓ９０４）ルートのリーフホップ数が２以上であれば、当該ルートのリンク先を、ルートの移動対象とする。
（Ｓ９０５）ルートに２以上のリンクが存在する場合、リンク毎のリーフホップ数について、リーフホップ数が大きい上位２つのリーフホップ数の差が２以上であるか否かを判定する。２以上でなければ、処理を終了する。
（Ｓ９０６）リーフホップ数の差が２以上であるならば、最大リーフホップ数となるリンク先を、ルートの移動対象とする。
（Ｓ９０７）移動対象となるリンク先のノードに、マスタが収容されているか否かを判定する。マスタが収容されていなければ、処理を終了する。
（Ｓ９０８）リンク先のノードにマスタが収容されているならば、ルートとマスタとの逆転処理を行う。
【００６１】
図１０は、ルート移動の説明図である。
【００６２】
図１０に示すように、ルートがツリーの端部分に近寄ることにより、ツリー全体としてのホップ数は大きくならざるを得ない。そこで、ルート／スレーブ逆転と、ルート／マスタ逆転とを繰り返すことにより、ルートをツリーの中央部分に移動させることにより、ルートから見たホップ数を平均化することができる。
【００６３】
ルートが存在するノードについて、各リンク先からの最大ホップ数に２以上の差分があったときに、ルート移動が行われる。図１０について、状態（１）では、ルートは、右に４ホップ、左に０ホップであるため、移動を実行する。状態（２）では、ルート／スレーブの逆転がなされる。状態（３）でも、ルートは右に３ホップ、左に１ホップであるために、２以上の差分があるので更に移動する。状態（４）では、右に２ホップ、左に２ホップであり、ホップに差分がないため、ルート移動を行わない。
【００６４】
ルート移動の動作は、一度の動作でルートが最適な位置に移動するのではなく、１度の動作で移動するのは隣接のノードまでである。隣接ノードに移動後、改めてルート移動の動作が発生し、ホップ数計算の結果移動の必要があると判断すれば、再びルートの移動を行う。
【００６５】
図１１は、ルート／マスタ逆転の説明図である。
【００６６】
ノードＮ１にルートとマスタとが収容されているとする。このとき、マスタを一旦ルートとし、右側の同期ツリーを独立させる。その後、左側のルートを、マスタとする。このような動作は、瞬間的に完了するため、独立／従属解消動作を伴わずに実行が可能となる。ノードＮ１内の２つのルートの同期タイミングはほぼ一致していると考えられるため、この動作はクロック同期処理に比べ短期間で完了できる。
【００６７】
図１２は、本発明のホップ数短縮とルート移動との効果の説明図である。
【００６８】
図１２（Ａ）は、ホップ数を改善可能なツリー構成図である。これによれば、最長ホップ数は３となる。図１２（Ｂ）は、図１２（Ａ）からホップ数短縮した場合のツリー構成図である。これによれば最長ホップ数は２となる。また、図１２（Ｃ）は、図１２（Ａ）からルート移動した場合のツリー構成図である。これによっても最長ホップ数は２となる。図１２（Ｄ）のように、ホップ数の差が１だった場合、ホップ数短縮とルート移動とのいずれを行っても効果に違いがない。
【００６９】
前述した本発明におけるネットワークの時刻同期方法の種々の実施形態によれば、本発明の技術思想及び見地の範囲の種々の変更、修正及び省略を、当業者は容易に行うことができる。前述の説明はあくまで例であって、何ら制約しようとするものではない。本発明は、特許請求の範囲及びその均等物として限定するものにのみ制約される。
【図面の簡単な説明】
【００７０】
【図１】本発明におけるメッセージの送受信を表すツリー構成図である。
【図２】図１の構成について、リンクダウンが発生した場合のツリー構成図である。
【図３】ノードがルートＩＤ通知メッセージＲmesを受信した場合のフローチャートである。
【図４】ノードがホップ数通知メッセージＨmesを受信した場合のフローチャートである。
【図５】ルートＩＤ通知メッセージとホップ数通知メッセージとの関係を示す説明図である。
【図６】本発明におけるクロック同期処理のフローチャートである。
【図７】２ホップ以上離れた場合にのみホップ数を短縮することの説明図である。
【図８】ノード内におけるホップ数短縮動作の説明図である。
【図９】本発明におけるルート移動のフローチャートである。
【図１０】ルート移動の説明図である。
【図１１】ルート／マスタ逆転の説明図である。
【図１２】本発明のホップ数短縮とルート移動との効果の説明図である。
【図１】
2005286720.tif 000003
【図２】
2005286720.tif 000004
【図３】
2005286720.tif 000005
【図４】
2005286720.tif 000006
【図５】
2005286720.tif 000007
【図６】
2005286720.tif 000008
【図７】
2005286720.tif 000009
【図８】
2005286720.tif 000010
【図９】
2005286720.tif 000011
【図１０】
2005286720.tif 000012
【図１１】
2005286720.tif 000013
【図１２】
2005286720.tif 000014