(57)【要約】【課題】本発明の目的は、往復の伝送経路が非対称な経路が一部に含まれているようなネットワークでも、バウンダリークロックを用いることなく、マスタとスレーブとの間の時刻同期を正確に実現できる技術を提供すること【解決手段】本発明のシステムは、通信相手となるノードまでのルーティング経路を調査する経路調査部と、往復のルーティング経路の一致状態を調査する経路比較部と、通信相手となるノードまでの片方向遅延時間を測定する遅延測定部と、マスタ−スレーブ間の時刻オフセットを補正する時刻同期部とを有し、スレーブは往復のルーティング経路が一致するようなマスタと時刻を同期させる。【選択図】図５
2009065579.tif 000002
【特許請求の範囲】
【請求項１】
時刻同期システムであって、
マスタノードとスレーブノードとの間の往復のルーティング経路を調査する経路調査手段と、
前記調査の結果、往復のルーティング経路が対称であるマスタノードとスレーブノードとの間の時刻オフセットを補正して互いの時刻を同期させる時刻同期手段と
を備えていることを特徴とする時刻同期システム。
【請求項２】
前記時刻同期手段は、スレーブノードの時刻をマスタノードの時刻に合わせるように時刻オフセットを補正することを特徴とする請求項１に記載の時刻同期システム。
【請求項３】
前記経路調査手段は、ネットワーク層における往復の伝送経路を調査することを特徴とする請求項１又は請求項２に記載の時刻同期システム。
【請求項４】
往復のルーティング経路が対称であるマスタノードとの間の時刻オフセットを補正したスレーブノードに残留している片方向遅延誤差を測定する遅延測定手段を有し、
前記時刻同期手段は、前記測定された片方向遅延誤差に基づいて、スレーブノードの時刻を更に補正することを特徴とする請求項１から請求項３のいずれかに記載の時刻同期システム。
【請求項５】
前記遅延測定手段は、前記経路調査手段が前記マスタノードとは異なるノードと前記スレーブノードとのルーティング経路を調査して、前記片方向遅延誤差の測定に用いると決定したノードと、前記スレーブノードとの間の往復の片方向遅延時間の非対称量を測定することによって、前記片方向遅延誤差を測定することを特徴とする請求項４に記載の時刻同期システム。
【請求項６】
前記経路調査手段は、前記マスタノードとは異なるノードと前記スレーブノードとの往復のルーティング経路が対称であり、このルーティング経路と、前記マスタノードと前記スレーブノードとの間のルーティング経路とに重なる経路がない場合に、前記片方向遅延誤差の測定に用いるノードと決定することを特徴とする請求項５に記載の時刻同期システム。
【請求項７】
前記マスタノードとは異なるノードは、マスタノード、または既にマスタノードと時刻を同期させているスレーブノードであることを特徴とする請求項５又は請求項６に記載の時刻同期システム。
【請求項８】
前記遅延測定手段は、前記片方向遅延時間が対称となる、前記マスタノードとは異なるノードが少なくとも１つ存在する場合には、前記スレーブノードの時刻を補正しないと決定することを特徴とする請求項５から請求項７のいずれかに記載の時刻同期システム。
【請求項９】
前記遅延測定手段は、前記片方向遅延時間が対称となるようなノードが１つも存在しない場合には、往復の片方向遅延時間の非対称量に基づいて、前記片方向遅延誤差を決定することを特徴とする請求項５から請求項７のいずれかに記載の時刻同期システム。
【請求項１０】
前記遅延測定手段は、前記スレーブノードと、前記マスタノードとは異なる複数のノードとの間の片方向遅延時間の非対称量の平均値を元にして、前記片方向遅延誤差を決定することを特徴とする請求項９に記載の時刻同期システム。
【請求項１１】
前記遅延測定手段は、前記スレーブノードと、前記マスタノードとは異なる複数のノードとの間の片方向遅延時間の重み付け平均値を元にして、前記片方向遅延誤差を決定することを特徴とする請求項９に記載の時刻同期システム。
【請求項１２】
前記重み付け平均値の重み付け係数は、前記マスタノードとは異なる複数のノードとそのノードが時刻同期を行ったマスタノードの間のホップ数の逆数であることを特徴とする請求項１１に記載の時刻同期システム。
【請求項１３】
時刻同期方法であって、
マスタノードとスレーブノードとの間の往復のルーティング経路を調査する経路調査ステップと、
前記調査の結果、往復のルーティング経路が対称である場合、マスタノードの時刻にスレーブノードの時刻を合わせるように補正する時刻同期ステップと
を有することを特徴とする時刻同期方法。
【請求項１４】
前記経路調査ステップは、マスタノードとスレーブノードとの間の往復の経路上に存在するルータを調査することを特徴とする請求項１３に記載の時刻同期方法。
【請求項１５】
前記経路調査ステップは、ネットワーク層における往復の伝送経路を調査することを特徴とする請求項１３又は請求項１４に記載の時刻同期方法。
【請求項１６】
往復のルーティング経路が対称であるマスタノードとの間の時刻オフセットを補正したスレーブノードに残留している片方向遅延誤差を測定する遅延測定ステップと、
前記測定された片方向遅延誤差に基づいて、スレーブノードの時刻を補正する補正ステップと
を有することを特徴とする請求項１３から請求項１５のいずれかに記載の時刻同期方法。
【請求項１７】
前記遅延測定ステップは、
前記マスタノードとは異なるノードと前記スレーブノードとのルーティング経路を調査して前記片方向遅延誤差の測定に用いるノードを決定する決定ステップと、
前記決定されたノードと、前記スレーブノードとの間の往復の片方向遅延時間の非対称量に基づいて前記片方向遅延誤差を測定するステップと
を有することを特徴とする請求項１６に記載の時刻同期方法。
【請求項１８】
前記決定ステップは、前記マスタノードとは異なるノードと前記スレーブノードとの往復のルーティング経路が対称であり、このルーティング経路と、前記マスタノードと前記スレーブノードとの間のルーティング経路とに重なる経路がない場合に、前記片方向遅延誤差の測定に用いるノードと決定することを特徴とする請求項１７に記載の時刻同期方法。
【請求項１９】
前記マスタノードとは異なるノードは、マスタノード、または既にマスタノードと時刻を同期させているスレーブノードであることを特徴とする請求項１７又は請求項１８に記載の時刻同期方法。
【請求項２０】
前記遅延測定ステップは、前記片方向遅延時間が対称となる、前記マスタノードとは異なるノードが少なくとも１つ存在する場合には、前記スレーブノードの時刻を補正しないと決定することを特徴とする請求項１７から請求項１９のいずれかに記載の時刻同期方法。
【請求項２１】
前記遅延測定ステップは、前記片方向遅延時間が対称となるようなノードが１つも存在しない場合には、往復の片方向遅延時間の非対称量に基づいて、前記片方向遅延誤差を決定することを特徴とする請求項１７から請求項１９のいずれかに記載の時刻同期方法。
【請求項２２】
前記遅延測定ステップは、前記スレーブノードと、前記マスタノードとは異なる複数のノードとの間の片方向遅延時間の非対称量の平均値を元にして、前記片方向遅延誤差を決定することを特徴とする請求項２１に記載の時刻同期方法。
【請求項２３】
前記遅延測定ステップは、前記スレーブノードと、前記マスタノードとは異なる複数のノードとの間の片方向遅延時間の重み付け平均値を元にして、前記片方向遅延誤差を決定することを特徴とする請求項２１に記載の時刻同期方法。
【請求項２４】
前記遅延測定ステップは、前記マスタノードとは異なる複数のノードとそのノードが時刻同期を行ったマスタノードの間のホップ数の逆数を前記重み付け平均値の重み付け係数にして、前記片方向遅延誤差を決定することを特徴とする請求項２３に記載の時刻同期方法。
【請求項２５】
時刻を同期するプログラムであって、前記プログラムは前記ノードに、
マスタノードと自ノードとの間の往復のルーティング経路を調査する経路調査処理と、
前記調査の結果、往復のルーティング経路が対称である場合、マスタノードの時刻に自ノードの時刻を合わせるように補正する時刻同期処理と
を実行させることを特徴とするプログラム。
【請求項２６】
前記経路調査処理は、マスタノードと自ノードとの間の往復の経路上に存在するルータを調査することを特徴とする請求項２５に記載のプログラム。
【請求項２７】
前記経路調査処理は、ネットワーク層における往復の伝送経路を調査することを特徴とする請求項２５又は請求項２６に記載のプログラム。
【請求項２８】
往復のルーティング経路が対称であるマスタノードとの間の時刻オフセットを補正後に自ノードに残留している片方向遅延誤差を測定する遅延測定処理と、
前記測定された片方向遅延誤差に基づいて、自ノードの時刻を補正する補正処理と
を更に実行させることを特徴とする請求項２５から請求項２７のいずれかに記載のプログラム。
【請求項２９】
前記遅延測定処理は、
前記マスタノードとは異なるノードと自ノードとのルーティング経路を調査して前記片方向遅延誤差の測定に用いるノードを決定する決定処理と、
前記決定されたノードと、前記自ノードとの間の往復の片方向遅延時間の非対称量に基づいて前記片方向遅延誤差を測定する処理と
を有することを特徴とする請求項２８に記載のプログラム。
【請求項３０】
前記決定処理は、前記マスタノードとは異なるノードと自ノードとの往復のルーティング経路が対称であり、このルーティング経路と、前記マスタノードと自ノードとの間のルーティング経路とに重なる経路がない場合に、前記片方向遅延誤差の測定に用いるノードと決定する処理であることを特徴とする請求項２９に記載のプログラム。
【請求項３１】
前記マスタノードとは異なるノードは、マスタノード、または既にマスタノードと時刻を同期させているスレーブノードであることを特徴とする請求項２９又は請求項３０に記載のプログラム。
【請求項３２】
前記遅延測定処理は、前記片方向遅延時間が対称となる、前記マスタノードとは異なるノードが少なくとも１つ存在する場合には、前記スレーブノードの時刻を補正しないと決定する処理であることを特徴とする請求項２９から請求項３１のいずれかに記載のプログラム。
【請求項３３】
前記遅延測定処理は、前記片方向遅延時間が対称となるようなノードが１つも存在しない場合には、往復の片方向遅延時間の非対称量に基づいて、前記片方向遅延誤差を決定する処理であることを特徴とする請求項２９から請求項３１のいずれかに記載のプログラム。
【請求項３４】
前記遅延測定処理は、自ノードと、前記マスタノードとは異なる複数のノードとの間の片方向遅延時間の非対称量の平均値を元にして、前記片方向遅延誤差を決定する処理であることを特徴とする請求項３３に記載のプログラム。
【請求項３５】
前記遅延測定処理は、自ノードと、前記マスタノードとは異なる複数のノードとの間の片方向遅延時間の重み付け平均値を元にして、前記片方向遅延誤差を決定する処理であることを特徴とする請求項３３に記載のプログラム。
【請求項３６】
前記遅延測定処理は、前記マスタノードとは異なる複数のノードとそのノードが時刻同期を行ったマスタノードの間のホップ数の逆数を前記重み付け平均値の重み付け係数にして、前記片方向遅延誤差を決定する処理であることを特徴とする請求項３５に記載のプログラム。
【請求項３７】
時刻を同期させるノードであって、
マスタノードとの間の往復のルーティング経路を調査する経路調査手段と、
前記調査の結果、往復のルーティング経路が対称であるマスタノードとの間の時刻オフセットを補正して互いの時刻を同期させる時刻同期手段と
を備えていることを特徴とするノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して複数の装置の時刻を同期させるための技術に関し、特に、ネットワーク内におけるマスタノードとスレーブノードとの間の時刻オフセットを補正するためのシステムおよび方法に関するものである。
【背景技術】
【０００２】
通信システムや制御システムが複雑化し、多数のノードが分散配置されるようになった現在、ノード間の時刻を同期させることが重要になっている。
【０００３】
たとえば、工業オートメーションのシステムでは、センサやモーションコントローラの時刻同期を維持することによって、より高度な処理を実行できるようになる。
【０００４】
ここで問題となるのは、温度変化や経年変化などの環境変化によって、個々の装置の時刻にズレが生じるという点である。このため、正確な時刻同期を維持するためには何らかの補正メカニズムが必要となる。
【０００５】
ＩＥＥＥ１５８８では、ネットワーク上にある各装置の時刻をマイクロ秒未満の精度で同期する方法が規定されている。
【０００６】
このＩＥＥＥ１５８８で規定されている技術は、ネットワーク上にあるマスタとスレーブとの間でタイムスタンプ情報のやりとりを行い、各スレーブ・クロックは、マスタ・クロックのタイムスタンプやネットワーク伝播遅延に関する情報を入手し、時刻同期アルゴリズムによってマスタ・クロックとの差分を求め、自身の時計のズレを補正する。このようにして、スレーブ・クロックとマスタ・クロックとの時刻の同期を取ることで、トリガやイベント、タイムスタンプを全ての装置上で一致させることができる。
【０００７】
以下では、図１を用いて、時刻同期アルゴリズムの詳細内容を説明する。
〈ステップ１〉
まず、マスタ１０がスレーブ１１に対して定期的にSyncメッセージを送信する。
【０００８】
このSyncメッセージの送出がトリガとなって、マスタ１０は自身のローカル・システム・クロックのタイムスタンプ（Tm(0)）を自装置に記録する。
【０００９】
Syncメッセージがスレーブ１１に到着すると、それがトリガとなってスレーブ１１は自身のローカル・システム・クロックのタイムスタンプ（Ts(0)）を自装置に記録する。
〈ステップ２〉
次に、マスタ１０がスレーブ１１に対してFollow_upメッセージを送信する。このメッセージの中には、先にSyncメッセージを送出したときに記録したマスタ１０のローカル・システム・クロックのタイムスタンプ（Tm(0)）が含まれている。
【００１０】
スレーブ１１は、自身が記録したローカル・システム・クロックのタイムスタンプ（Ts(0)）と、送信されて来たFollow_upメッセージに含まれているマスタ１０のローカル・システム・クロックのタイムスタンプ（Tm(0)）とのタイムスタンプをもとに、以下のようにして、マスタ・クロックとスレーブ・クロックの差分を求める。
Dms=Ts(0)-Tm(0)=Delay-Offset  （式１）
ここで、Delayはネットワークの伝播遅延であり、Offsetはマスタ・クロック１０に対するスレーブ１１の時刻オフセット（進み）である。
〈ステップ３〉
次に、スレーブ１１がマスタ１０に対して「Delay Request (Delay_Req)」メッセージを送信する。
【００１１】
このDelay_Reqメッセージの送出がトリガとなって、スレーブ１１は自身のローカル・システム時間のタイムスタンプ（Ts(1)）を記録する。
【００１２】
Delay_Reqメッセージがマスタ１０に到着すると、それがトリガとなってマスタ１０は自身のローカル・システム時間のタイムスタンプ（Tm(1)）を記録する。
〈ステップ４〉
マスタ１０がスレーブ１１に対して「Delay Response (Delay_Resp)」メッセージを返信する。このメッセージの中には、先にDelay_Reqメッセージを受信した時のマスタ１０のタイムスタンプ（Tm(1)）が含まれている。
【００１３】
スレーブ１１は、自身が記録したローカル・システム・クロックのタイムスタンプ（Ts(1)）と、送信されて来たDelay_Reqメッセージに含まれているマスタ１０のローカル・システム・クロックのタイムスタンプ（Tm(1)）とのタイムスタンプをもとに、マスタ・クロックとスレーブ・クロックとの差分を求める。
Dsm=Tm(1)-Ts(1)=Delay+Offset  （式２）
以上のようにして得られたDsmとDmsとから、時刻オフセットを求めることができる。
(Dsm-Dms)/2=Offset  （式３）
このように、４つの手順を踏むことで、スレーブ１１はマスタ１０との時刻オフセットを求めるとともに、このオフセットの情報を元に時刻ズレを補正することにより、マスタ１０との時刻同期を行うことが可能である。
【非特許文献１】ＩＥＥＥ１５８８
【発明の開示】
【発明が解決しようとする課題】
【００１４】
上記説明では、ＩＥＥＥ１５８８のスレーブが物理リンクでマスタに直接結ばれている場合を例にして説明した。しかしながら、実際には、マスタとスレーブとの間にルータやスイッチなどの装置が存在し、これらの装置によってマスタとスレーブとの間の遅延時間が変化してしまうので、ルータやスイッチなどの装置による遅延を考慮しないと、時刻同期精度が劣化する恐れがある。ＩＥＥＥ１５８８では、このようにルータやスイッチが介在するような場合でも、時刻同期を正確に行う方法として、バウンダリークロック（Boundary Clock）と呼ばれる機能を定義している。このバウンダリークロック機能をルータやスイッチに組み込むことにより、ルータやスイッチの転送処理による遅延時間のバラつきや変動を吸収することができる。以下において、その動作を説明する。
【００１５】
図２では、スイッチ２１にバウンダリークロック２２、スイッチ２３にバウンダリークロック２４を組み込んでいる。
【００１６】
このような構成の場合、バウンダリークロック２２は、マスタ２０に対するスレーブとして振る舞い、マスタ２０と時刻同期を行う。
【００１７】
次に、バウンダリークロック２２は、バウンダリークロック２４のマスタとして振る舞い、バウンダリークロック２４と時刻同期を行う。
【００１８】
このとき、バウンダリークロック２４は、バウンダリークロック２２に対するスレーブとして動作する。
【００１９】
そして、バウンダリークロック２４は、スレーブ２５に対するマスタとして振る舞い、スレーブ２５の時刻同期を行う。
【００２０】
このように、マスタ２０とスレーブ２５とが直接接続されていない場合でも、それらの間に介在する装置に設けられているバウンダリークロックが時刻同期を中継していくことにより、スイッチやルータの転送処理による遅延変動の影響を受けることなく、正確な時刻同期を行うことができる。
【００２１】
しかしながら、バウンダリークロックは非常に特殊な機能であり、現在市販されているようなルータやスイッチには組み込まれていない。
【００２２】
そのため、上述の方法で時刻同期を行うには、スイッチやルータの設計を変更する必要があり、装置価格が上昇してしまう。
【００２３】
また、バウンダリークロックを中継させて時刻同期を行う場合の注意点として、中継するバウンダリークロックの数に比例して時刻同期誤差が蓄積してしまうことが挙げられる。これは、バウンダリークロックの発振器の安定精度にもよるが、中継するバウンダリークロック数が増えれば増えるほど、元々のマスタ２０の時刻とズレが生じてくるので、バウンダリークロックを介してスレーブ２５に伝達される時刻には大きな誤差が出てくる。
【００２４】
したがって、これらの問題を抱えているバウンダリークロックを用いることなく、離れたマスタとスレーブとの間の時刻を同期できる方法が切望されている。
【００２５】
ただし、上記バウンダリークロックを用いることなく、離れたノード間の時刻同期をネットワークを介して実現するには、同期精度の劣化要因を完全に除去する必要がある。同期精度を劣化させる要因として、ネットワークのルーティング経路の非対称性による同期のズレが挙げられる。
【００２６】
ＩＥＥＥ１５８８では、前述したように、ネットワーク内の遅延（Delay）がマスタとスレーブとの間で対称となっていることを前提としているが、ルーティング経路によっては遅延時間が非対称となるケースが存在する。
【００２７】
たとえば、図３のようなネットワークを考えた場合、マスタ３０からスレーブ３１に向けて送信されたパケットが通る経路３２と、スレーブ３１からマスタ３０に向けて送信されたパケットが通る経路３３は異なっている。
【００２８】
このように、ルーティング経路の非対称性により、ネットワークの伝播遅延が非対称となるケースが存在する。
【００２９】
この場合、ＩＥＥＥ１５８８では時刻同期精度が劣化してしまう。以下では、その精度劣化の影響について説明する。
【００３０】
図４のように、マスタ４０からスレーブ４１への伝送遅延をPropagate1、スレーブ４１からマスタ４０への伝送遅延をPropagate2とすると、上記の式１、式２は以下のように表せる。
Dms=Ts(i)-Tm(i)=Propagate1-Offset  （式４）
Dsm=Tm(j)-Ts(j)=Propagate2+Offset  （式５）
以上のようにして得られたDsmとDmsとから、時刻オフセットを求めようとすると以下のようになる。
(Dsm-Dms)/2=Offset+(Propagate2-Propagate1)/2  （式６）
上式から分かるように、時刻オフセットを求めようとしても、(Propagate2-Propagate1)/2だけの誤差が生じてしまうので、正確な時刻同期は不可能である。
【００３１】
そこで、本発明では、ネットワークのルーティング経路の非対称性による同期のズレを補正して、バウンダリークロックを用いることなく、離れたマスタとスレーブとの間の時刻を同期することを目的とする。
【００３２】
更に、ネットワークのルーティング経路の非対称性による同期のズレを補正しても、データリンク層や物理層が非対称であると、やはり時刻同期誤差が発生する。即ち、ネットワーク層、データリンク層、および物理層の３つのレイヤにおける伝送経路のうち、１つでも経路が非対称となっている場合には時刻同期誤差が発生する。
【００３３】
そこで、本発明はこのような問題を解決するためになされたものであり、その目的とするところは、非対称な経路が一部に含まれているようなネットワークでも、バウンダリークロックを用いることなく、マスタとスレーブとの間の時刻同期を正確に実現できる技術を提供することにある。
【課題を解決するための手段】
【００３４】
上記課題を解決するための本発明は、時刻同期システムであって、マスタノードとスレーブノードとの間の往復のルーティング経路を調査する経路調査手段と、前記調査の結果、往復のルーティング経路が対称であるマスタノードとスレーブノードとの間の時刻オフセットを補正して互いの時刻を同期させる時刻同期手段とを備えていることを特徴とする。
【００３５】
上記課題を解決するための本発明は、時刻同期方法であって、マスタノードとスレーブノードとの間の往復のルーティング経路を調査する経路調査ステップと、前記調査の結果、往復のルーティング経路が対称である場合、マスタノードの時刻にスレーブノードの時刻を合わせるように補正する時刻同期ステップとを有することを特徴とする。
【００３６】
上記課題を解決するための本発明は、時刻を同期するプログラムであって、前記プログラムは前記ノードに、マスタノードと自ノードとの間の往復のルーティング経路を調査する経路調査処理と、前記調査の結果、往復のルーティング経路が対称である場合、マスタノードの時刻に自ノードの時刻を合わせるように補正する時刻同期処理とを実行させることを特徴とする。
【００３７】
上記課題を解決するための本発明は、時刻を同期させるノードであって、マスタノードとの間の往復のルーティング経路を調査する経路調査手段と、前記調査の結果、往復のルーティング経路が対称であるマスタノードとの間の時刻オフセットを補正して互いの時刻を同期させる時刻同期手段とを備えていることを特徴とする。
【発明の効果】
【００３８】
本発明によると、スレーブは、ルーティング経路が往復で一致するマスタと時刻同期を図るとともに、他のノードとの間の片方向遅延時間の対称性を調査することにより、自身に残留している同期誤差量を推定することができる。そして、これによってネットワークの伝播経路が非対称の場合でも時刻同期を正確に実現できる。
【００３９】
これは、本発明の時刻同期システムが、通信相手となるノードまでのルーティング経路を調査する経路調査部と、往復のルーティング経路の一致状態を調査する経路比較部と、通信相手となるノードまでの片方向遅延時間を測定する遅延測定部と、マスタ−スレーブ間の時刻オフセットを補正する時刻同期部とを有し、スレーブは往復のルーティング経路が一致するようなマスタと時刻同期を図るからである。
【００４０】
更に、スレーブは他のノードとの間で測定された片方向遅延時間の対称性を確認することにより、スレーブに残留している時刻同期誤差量を推定できるからである。
【００４１】
これにより、ネットワーク層（IPなど）のルーティング経路が非対称となっている場合だけでなく、データリンク層（Ethernetなど）や物理層の伝播経路が非対称となっている場合でも、その同期誤差を検出するとともに補正することが可能である。
【発明を実施するための最良の形態】
【００４２】
本発明の特徴と実施形態を説明するために、以下において、図面を参照して具体的な実施例を述べるものとする。しかしながら、これらの図面および説明は、本発明の典型的な実施形態のみを示しており、その範囲を限定するものではないことを理解されたい。
【００４３】
本発明を実施するための第１の実施の形態について、図面を参照して詳細に説明する。
【００４４】
<構成>
図５は、本発明の時刻同期システムの構成図である。
図５を参照すると、本発明の第１の実施の形態は、マスタ５００、マスタ５２０と、スレーブ５１０、スレーブ５３０、スレーブ５４０、スレーブ５５０と、ネットワーク５６０とを含む。
【００４５】
マスタ５００は、パケット送受信部５０１と、経路調査部５０２と、経路比較部５０３と、遅延測定部５０４と、時刻同期部５０５とを含んでいる。尚、マスタ５００には他のマスタ、本実施の形態ではマスタ５２０との間のオフセットがないことを前提とする。
【００４６】
同じく、スレーブ５１０は、パケット送受信部５１１と、経路調査部５１２と、経路比較部５１３と、遅延測定部５１４と、時刻同期部５１５とを含んでいる。
【００４７】
マスタ５２０は、上述のマスタ５００と同じ構成であり、同様にスレーブ５３０、スレーブ５４０、スレーブ５５０は上述のスレーブ５１０と同じ構成である。
【００４８】
ネットワーク５６０は、図５中に丸印で示される複数のルータを含んでいる。ただし、ネットワーク５６０は、図５には記載されていないが、ルータ間をネットワーク層の下位層に当たるデータリンク層のEthernetスイッチ（Ethernet：登録商標）や物理層の方向性分岐スイッチなどで接続されているものとする。
【００４９】
以下では、マスタ５００とスレーブ５１０との間で時刻同期を行う場合を例にして、その構成要素を説明する。
【００５０】
＜マスタ＞
マスタ５００の時刻同期部５０５は、時刻同期用メッセージをスレーブ５１０に送信するために生成する。なお、ここでは、このメッセージはＩＥＥＥ１５８８に準拠したものを使用する場合を用いて説明するが、他の方法を用いても良い。この場合、時刻同期部５０５はSyncメッセージ、Follow-upメッセージ、およびDelay Responseメッセージを作成し、パケット送受信部５０１に渡す。また、時刻同期部５０５は、スレーブ５１０からのDelay Requestメッセージをパケット送受信部５０１を介して受け取る。
【００５１】
マスタ５００の経路調査部５０２は、スレーブ５１０までのルーティング経路、即ち、スレーブ５１０との間でデータを送受信するにあたって選択された最適な経路を調べるために、スレーブ５１０に向けてトレースルート（traceroute）を実行する。トレースルートについては、例えば、非特許文献（ｈｔｔｐ：／／ｗｗｗ．ａｔｍａｒｋｉｔ．ｃｏ．ｊｐ／ｆｎｅｔｗｏｒｋ／ｎｅｔｃｏｍ／ｔｒａｃｅｒｏｕｔｅ．／ｈｔｍｌ）に記載されているような方法を用いればよい。トレースルートでは、経路調査部５０２は、ルータを通過する度にTTL（Time to Live）を変化させるパケットをスレーブ５１０宛に送信する。また、経路調査部５０２は、TTLが０になった時点でルータから送り返されてくるICMP Time Exceededメッセージをパケット送受信部５０１を介して受け取る。このトレースルートにより、経路調査部５０２は、マスタ５００からスレーブ５１０までの間に存在するルータを把握し、ルーティング経路情報を作成する。
【００５２】
そして、経路比較部５０３は、経路調査部５０２からトレースルートによって得られたスレーブ５１０までのルーティング経路情報を受け取る。経路比較部５０３は、このルーティング経路情報を通信相手となるスレーブ５１０の経路比較部５１３に転送する。
【００５３】
遅延測定部５０４は、通信相手となるスレーブ５１０とのオフセット時間を測定するために、パケット送受信部５０１を介してタイムスタンプが付加されたメッセージをスレーブ５１０の遅延測定部５１４とやり取りする。
【００５４】
パケット送受信部５０１は、時刻同期部５０５、経路調査部５０２、経路比較部５０３、および遅延測定部５０４から送信メッセージを受け取ると、受け取ったメッセージにＩＰヘッダとＭＡＣヘッダを付けた後、ネットワーク５６０に送信する。また、パケット送受信部５０１は、ネットワーク５６０からパケットを受信すると、そのパケットの宛先に応じて、時刻同期部５０５、経路調査部５０２、経路比較部５０３、および遅延測定部５０４に渡す。
【００５５】
＜スレーブ＞
スレーブ５１０の時刻同期部５１５は、時刻同期用メッセージをマスタ５００の時刻同期部５０５から受信する。なお、ここでは、このメッセージは、ＩＥＥＥ１５８８に準拠したものを使用した場合を用いて説明するが他の方法を用いても良い。この場合、時刻同期部５１５は、Syncメッセージ、Follow-upメッセージ、およびDelay Responseメッセージをパケット送受信部５１１を介して受け取る。また、時刻同期部５１５は、Delay Requestメッセージを作成するとともに、パケット送受信部５１１を介してマスタ５００へ送信する。
【００５６】
スレーブ５１０の経路調査部５１２は、マスタ５００までのルーティング経路を調べるために、マスタ５００に向けてトレースルート（traceroute）を実行する。トレースルートでは、経路調査部５１２は、TTLを変化させながらマスタ５００を宛先としたパケットを送信する。また、経路調査部５１２は、TTLが０になった時点でルータから送り返されてくるICMP Time Exceededメッセージをパケット送受信部５１１を介して受け取る。このトレースルートにより、経路調査部５１２は、スレーブ５１０からマスタ５００までの間に存在するルータを把握し、ルーティング経路情報を作成することができる。
【００５７】
そして、経路比較部５１３は、経路調査部５１２から、トレースルートによって得られたマスタ５００までのルーティング経路情報を受け取る。また、経路比較部５１３は、通信相手となるマスタ５００の経路比較部５０３から、マスタ５００からスレーブ５１０までのルーティング経路情報をネットワーク５６０を介して受け取る。これで、経路比較部５１３は、マスタ５００→スレーブ５１０と、スレーブ５１０→マスタ５００の往復のルーティング経路情報を手に入れる。そして、経路比較部５１３は、これら２つのルーティング経路情報を比較して、ルーティング経路に不一致の箇所があるかチェックする。不一致の箇所が見つからなければ、マスタ５００と時刻同期を行うために、時刻同期部５１５に命令する。逆に、不一致する箇所が見つかった場合には、経路比較部５１３は、経路調査部５１２に別のマスタへのルーティング経路を調査するように指示を出す。
【００５８】
遅延測定部５１４は、通信相手となる任意のノードとの間の片方向遅延時間を測定するために、パケット送受信部５１１を介して、タイムスタンプが付加されたメッセージを他ノードの遅延測定部とやり取りする。
【００５９】
パケット送受信部５１１は、時刻同期部５１５、経路調査部５１２、および遅延測定部５１４から送信メッセージを受け取ると、受け取ったメッセージにＩＰヘッダとＭＡＣヘッダを付けた後、ネットワーク５６０に送信する。また、パケット送受信部５１１は、ネットワーク５６０からパケットを受信すると、そのパケットの宛先に応じて、時刻同期部５１５、経路調査部５１２、経路比較部５１３、および遅延測定部５１４に渡す。
【００６０】
<動作>
まず、第１の実施の形態の動作概要について述べる。
第１の実施の形態では、図５のように、丸印で示される複数のルータを含むネットワークを想定しており、ネットワーク層のルーティング経路が非対称になりうるモデルを想定している。さらに、ルータ間を結ぶリンクの一部は、リンク５６１（３重線）のように非対称線路になっているネットワークを想定している。本発明は、このようなネットワークでも、経路の非対称性によって生じる同期精度の劣化を防ぎ、正確な時刻同期を実現できるシステムであり、その動作概要について以下に述べる。
【００６１】
まず、ネットワーク層（IP）における経路の非対称性は、トレースルートでルーティング経路を調査することにより検出することが可能である。
【００６２】
したがって、スレーブは、まずトレースルートを用いて、ルーティング経路が双方向で対称となっているようなマスタを検出し、そのマスタと時刻同期を行う。
【００６３】
しかしながら、データリンク層や物理層における経路の非対称性は、トレースルートで調査しても検出することはできない。
【００６４】
なぜなら、トレースルートで検出できるデバイスはネットワーク層のルータだけであり、データリンク層のイーサネットスイッチ（イーサネット：登録商標）や物理層の方向性分岐スイッチはトレースルートではその存在を検出できないからである。
【００６５】
図５に示されるように、スレーブ５３０は、データリンク層や物理層の経路が非対称になっているリンク５６１を介してマスタ５００と時刻同期を行っているが、上記の理由により、このスレーブ５３０には時刻同期誤差が残留してしまう。
【００６６】
そこで、このような時刻同期誤差が残っているスレーブ５３０を検出するために、第１の実施の形態では、経路が対称となっているノード同士で片方向遅延時間を測定する。例えば、時刻オフセットが残っていないスレーブ５１０とスレーブ５４０で片方向遅延時間を測定した場合、理由は以下で述べるが、スレーブ５１０→スレーブ５４０の片方向遅延時間と、スレーブ５４０→スレーブ５１０の片方向遅延時間は等しくなる。
【００６７】
一方、時刻オフセットが残留しているスレーブ５３０と、時刻オフセットが残留していないスレーブ５１０とで片方向遅延時間を測定した場合、スレーブ５１０→スレーブ５４０の片方向遅延時間と、スレーブ５４０→スレーブ５１０の片方向遅延時間は、スレーブ５３０の時刻オフセットの分だけ時間差が生じる。
【００６８】
第１の実施の形態では、この片方向遅延時間に関する特徴を利用することにより、時刻オフセットが残留しているスレーブを検出する。すなわち、時刻オフセットが残留していないスレーブであれば、複数の他のノードと片方向遅延時間を測定していけば、いつかは遅延時間が往復で対称となるようなノードを見つけることができる。これに対して、時刻オフセットが残留しているスレーブでは、いつまで経っても遅延時間が往復で対称となるようなノードを見つけることができない。
【００６９】
このように、片方向遅延時間の対称性を調査していくことにより、データリンク層や物理層の経路の非対称によって時刻オフセットが生じているスレーブを検出できる。
【００７０】
また、その時刻オフセット量は、以下で詳しく述べるように、往復の片方向遅延の時間差と相関がある値となっており、他のノードとの片方向遅延時間差から残留している時刻オフセット量を推測できる。
【００７１】
以上の理由から、第１の実施の形態は、ネットワーク層/データリンク層/物理層の経路が非対称となっているようなネットワークでも、正確な時刻同期システムを実現することができる。
【００７２】
次に、図５及び図６を参照しながら、第１の実施の形態の動作の詳細について説明する。
【００７３】
図６は、スレーブの処理の流れを示すフローチャートである。
【００７４】
以下の説明では、スレーブ５１０の動作を例に取り上げて説明する。
【００７５】
まず、スレーブ５１０の経路調査部５１２は、往復のルーティング経路が等しくなるようなマスタを検出すべく、スレーブ５１０から各マスタ（マスタ５００、マスタ５２０）までのルーティング経路をトレースルートで調査する（ステップ６０２）。
【００７６】
この際、スレーブ５１０の経路調査部５１２は、各マスタからスレーブ５１０までのルーティング経路も調査するべく、各マスタの経路調査部に経路調査要求メッセージを送信する。
【００７７】
各マスタの経路調査部は、スレーブ５１０から経路調査要求メッセージを受け取ると、マスタからスレーブ５１０までのルーティング経路を調査する。この調査が完了すると、各マスタは、ルーティング経路の調査結果をスレーブ５１０の経路比較部５１３に送付する。
【００７８】
そして、経路比較部５１３において、スレーブ５１０と各マスタ（マスタ５００、マスタ５２０）との間の往復のルーティング経路が対称かどうかチェックされる。
【００７９】
ここで、スレーブ５１０とマスタ５２０の間のルーティング経路は、図７に示されるように方向によって通過ルートが異なっているので、非対称となっている。
【００８０】
一方、スレーブ５１０とマスタ５００の間のルーティング経路は、図８に示されるように往復で同一ルートを通っているので、対称である。
【００８１】
このため、経路比較部５１３は、マスタ５００と時刻同期の処理を行うように時刻同期部５１５に指示する（図６のステップ６０３）。
【００８２】
そして、時刻同期部５１５は、マスタ５００と時刻同期用メッセージを交換する。この時刻同期メッセージには、IEEE１５８８で規定されている方法を利用しても良い。
【００８３】
以上の処理により、マスタ５００とスレーブ５１０の間で時刻同期が行われるが、この際、往復のルーティング経路が対称となっているマスタ５００−スレーブ５１０間で時刻同期を行っているので、スレーブ５１０に時刻同期誤差は生じない。
【００８４】
しかしながら、ネットワーク層よりも下のレイヤの伝播経路、即ち、データリンク層や物理層における伝送経路が非対称になっている場合、これらの処理だけでは時刻同期誤差が残留してしまう。
【００８５】
例えば、図５の中で３重線によって示されているリンク５６１は、方向によって異なる伝送路を通るように設計されている。
【００８６】
図９は、そのリンク５６１の物理層における状態を示しているが、ルータからのケーブルは方向性分岐スイッチで２つに分岐され、パケットの伝播方向によって異なる経路を通るように制御されている。ここで、この２つの経路の伝播遅延時間差（片方向遅延誤差）をDoffsetとする。
【００８７】
このように、ネットワーク層よりも下のレイヤで非対称となっている場合には、上述のトレースルートを用いた方法ではその非対称性を検出できない。このため、例えば、図５で示されるように、スレーブ５３０がこのような非対称リンク５６１を介してマスタ５００と時刻同期を行っているとすると、時刻同期誤差が残留してしまう。
【００８８】
このとき残留する時刻同期誤差はリンクの非対称遅延量の半分、すなわちDoffset/2であり、スレーブ５３０の時計はこの誤差分だけ時刻にズレが生じている。
【００８９】
各スレーブは、自身がもつ時計に、このような同期誤差が含まれていないかどうかを判断するとともに、その誤差量を推定するために、図６のステップ６０５〜６１６の処理を行う。
【００９０】
以下にその処理について述べる。
【００９１】
まず、各スレーブ（スレーブ５１０、スレーブ５３０、スレーブ５４０、スレーブ５５０）は、図６のステップ６０１〜６０３の処理を行い、ネットワーク層のルーティング経路が対称となるようなマスタと時刻同期処理を既に実行しているものとする。図８はマスタノード５００とスレーブノード５１０とが時刻同期処理を実行して得られたルーティング経路を示し、図１０はマスタノード５００とスレーブノード５３０とが時刻同期処理を実行して得られたルーティング経路を示し、図１１はマスタノード５２０とスレーブノード５４０とが時刻同期処理を実行して得られたルーティング経路を示し、図１２はマスタノード５００とスレーブノード５５０とが時刻同期処理を実行して得られたルーティング経路を示している。
【００９２】
ここで、ルーティング経路がリンク５６１を含んでいる場合にはスレーブに時刻同期誤差が残留することになるが、図８、図１０、図１１、図１２の経路を見ると分かるように、スレーブ５３０、スレーブ５５０はこの条件に当てはまるので同期誤差が残ってしまう。
【００９３】
図１３はその様子を示した図である。図１３を参照すると、スレーブ５３０、スレーブ５４０には同期誤差が残っていないが（Offset=0）、スレーブ５３０、スレーブ５５０にはDoffset/2の同期誤差が含まれている。
【００９４】
このように、時刻同期誤差が残留しているスレーブ５３０、５５０を特定するとともに、その同期誤差量を検出すべく、各スレーブは図６のステップ６０５〜６１６の処理を実行する。
【００９５】
以下では、これらの処理のイメージを掴むため、同期誤差が残留しているスレーブ５３０のケースを例に挙げて説明する。
【００９６】
まず、スレーブ５３０の経路調査部５１２は往復のルーティング経路が対称となる“新たなノード”を探索する（ステップ６０５）。
【００９７】
ここで、新たなノードとは、以下のいずれかの条件を満足するノードのことをさす。
・ステップ６０３で、時刻同期を行ったマスタ５００以外のマスタ（すなわち、本実施の形態ではマスタ５２０）
・既にマスタと時刻同期処理を実行している他のスレーブ（すなわち、本実施の形態ではスレーブ５１０、スレーブ５４０、スレーブ５５０）
【００９８】
ここで、スレーブ５３０の経路調査部５１２は、最初の通信相手として、スレーブ５４０を選んだとする。
【００９９】
そして、スレーブ５３０の経路調査部５１２は、スレーブ５４０までの往復のルーティング経路が対称となるか確認するために、トレースルートで調査する（ステップ６０５）。このようにスレーブ５３０がスレーブ５４０との経路の対称性を調査する理由は、通信相手に選んだスレーブ５４０への経路が非対称になっている場合、スレーブ５３０とスレーブ５４０との間で片方向遅延時間を測定しても、その片方向遅延時間は時刻オフセットの影響だけでなく、スレーブ５３０とスレーブ５４０との間の経路の非対称性の影響も受けてしまうため、片方向遅延時間から時刻オフセットを正確に求めることができないからである。
【０１００】
ここで、図１３のように、スレーブ５３０とスレーブ５４０との間のルーティング経路は往復で対称になっているものとする。
【０１０１】
この場合、スレーブ５３０の経路比較部５１３がスレーブ５３０とスレーブ５４０との間のルーティング経路は往復で対称になっているものと判断し、ステップ６０６の処理に進むが、新たなノードはスレーブであるので、ステップ６１３の処理に進む。
【０１０２】
このステップ６１３では、スレーブ５３０とこのスレーブ５３０が時刻同期したマスタ５００との間のルーティング経路と、スレーブ５４０とこのスレーブ５４０が時刻同期したマスタ５２０との間のルーティング経路に重なる箇所がないかをスレーブ５３０の経路比較部５１３がチェックする。このように２つのルーティング経路の重なり具合を調査する理由は、もし２つの経路に重なっている箇所が存在する場合には、同じ量の時刻オフセットが２つのスレーブに残留している可能性があり、時刻同期誤差を除去できなくなるからである。
【０１０３】
たとえば、スレーブ５５０とマスタ５００との経路と、スレーブ５３０とマスタ５００との経路は、図１０、図１２を見ると分かるようにリンク５６１で重なっているが、この場合両者には同じ量の時刻オフセット（Doffset/2）が残留している。
【０１０４】
このように同じ量の時刻オフセットが残留しているスレーブ間で片方向遅延時間を測定すると、その遅延時間は双方向で対称となる。第１の実施の形態では、このように片方向遅延時間が対称となるようなノードを１つでも見つけられたスレーブには時刻オフセットが残留していないと判断してしまうため（ステップ６０９）、スレーブに残っている同期誤差を除去できなくなってしまう。
【０１０５】
したがって、このようなエラーを防ぐために、図６のステップ６１３において、スレーブ５３０とマスタ５００との間のルーティング経路と、スレーブ５４０とマスタ５２０との間のルーティング経路の重なり具合をチェックしている。
【０１０６】
ここで、図１０、図１１を見ると分かるように、２つのルーティング経路はまったく独立しており、重なる箇所はないので、図６のステップ６０７に進む。
【０１０７】
ステップ６０７では、スレーブ５３０−マスタ５００間のルーティング経路とスレーブ５３０−スレーブ５４０間のルーティング経路に一致する箇所がないかスレーブ５３０の経路比較部５１３がチェックする。
【０１０８】
このように２つのルーティング経路の重なり具合を調査する理由は、上記のステップ６１３と同じ理由である。つまり、この２つの経路に重なる箇所が存在する場合には、片方向遅延時間差を元にした判断に誤りが生じる可能性があり、このようなエラーを防ぐために、図６のステップ６０７において、２つのルーティング経路の重なり具合をチェックしている。
【０１０９】
図１０、図１３を見ると分かるように、この２つのルーティング経路に重なる箇所は全くないので、スレーブ５３０の経路比較部５１３は、スレーブ５４０を片方向遅延時間を測定する対象として決定して、図６のステップ６０８に進む。
【０１１０】
ステップ６０８では、スレーブ５３０の遅延測定部５１４がスレーブ５３０−スレーブ５４０間の片方向遅延時間を測定する。
【０１１１】
片方向遅延時間の測定方法は、以下のとおりである。
【０１１２】
送信側では、パケットを送信する瞬間の時刻をタイムスタンプとして付与してからパケットを送信する。
【０１１３】
一方、受信側では、パケットを受信した時刻を観測する。
【０１１４】
このパケット受信時刻とパケットに付与されている送信時刻タイムスタンプから片方向遅延時間を算出する。
【０１１５】
ここで、スレーブ５３０→スレーブ５４０の片方向遅延時間は図１３のように、
DS540S530=Delay'+Doffset/2
で表される。
【０１１６】
一方、スレーブ５４０→スレーブ５３０への片方向遅延時間は図１３のように
DS530S540=Delay'-Doffset/2
で表される。
【０１１７】
ここで、スレーブ５３０の遅延測定部５１４は、DS540S530とDS530S540とを比較して、片方向遅延時間が対称であるか非対称であるかを確認する（ステップ６０９）。上記のように、スレーブ５３０−スレーブ５４０間の片方向遅延は方向によって異なっており一致しない。
【０１１８】
このため、スレーブ５３０の遅延測定部５１４は図６のステップ６１０に進み、片方向遅延時間の差、スレーブ５３０に残留している片方向遅延誤差であるDoffsetをデータベースに保存する。
【０１１９】
図６のステップ６１１の規定回数maxは、ここでは３に設定されているとする。
【０１２０】
まだ一回目の試行であるので、スレーブ５３０はステップ６０５の処理に戻る。
【０１２１】
次に、スレーブ５３０は、新たな通信相手（新たなノード）として、スレーブ５５０を選んだとする。
【０１２２】
ここで、図１４のように、スレーブ５３０−スレーブ５５０間は往復で同じルーティング経路を通っているので、ステップ６０６に進む。
【０１２３】
新たなノードはスレーブであるので、ステップ６１３に進み、スレーブ５３０−マスタ５００間のルーティング経路とスレーブ５５０−マスタ５００間のルーティング経路に一致する箇所がないかチェックする。
【０１２４】
ここで、図１０、図１２から分かるように、スレーブ５３０−マスタ５００間のルーティング経路と、スレーブ５５０−マスタ５００間のルーティング経路には、３重線で示されるリンク５６１が共有部分として存在している。
【０１２５】
このため、スレーブ５３０は、このようなスレーブ５５０は通信相手として不適切と判定して、ステップ６０５に戻る。
（試行回数２回目）
スレーブ５３０は、次の通信相手（新たなノード）として、スレーブ５１０を選んだとする。
【０１２６】
ここで、図１５のように、スレーブ５３０−スレーブ５１０間は往復で同じルーティング経路を通っているので、ステップ６０６に進む。
【０１２７】
新たなノードはスレーブであるので、ステップ６１３に進み、スレーブ５３０−マスタ５００間のルーティング経路とスレーブ５１０−マスタ５００間のルーティング経路ルーティング経路に一致する箇所がないかチェックする。
【０１２８】
図８、図１０を見ると分かるように、この２つのルーティング経路に重なる箇所は全くないので、図６のステップ６０８に進む。
【０１２９】
ステップ６０８では、スレーブ５３０−スレーブ５１０間の片方向遅延時間を測定する。
【０１３０】
ここで、スレーブ５１０→スレーブ５３０の片方向遅延時間は図１５のように、
DS510S530=Delay''-Doffset/2
で表される。
【０１３１】
一方、スレーブ５３０→スレーブ５１０への片方向遅延時間は図１５のように、
DS530S510=Delay''+Doffset/2
で表される。
【０１３２】
このように、スレーブ５３０−スレーブ５１０間の片方向遅延は方向によって異なっており、一致しない。
【０１３３】
このため、スレーブは図６のステップ６１０に進み、片方向遅延時間の差であるDoffsetをデータベースに保存する。
【０１３４】
現在の試行回数は３回目であり、規定回数max=3を超えたので、ステップ６１５に抜ける。
【０１３５】
この時点で、上述したように、スレーブ５３０はスレーブ５１０、５４０との片方向遅延誤差の測定結果を得ているが、スレーブ５３０にはDoffset/2の時刻オフセットが残っているため、他のスレーブとの片方向遅延は非対称となっていた。
【０１３６】
そして、データベースに保存されている片方向遅延による片方向遅延誤差の時間は、どちらのスレーブともDoffsetであり、スレーブ５３０の時刻オフセット（Doffset/2）の２倍の値となっている。
【０１３７】
したがって、スレーブ５３０の遅延測定部５１４はこのデータベースに保存されている遅延時間差を元に、２つのルーティング経路はまったく独立していると判定して、その遅延時間差を送出する。そしてスレーブ５３０の時刻同期部５１５は、送出された遅延時間差、即ちスレーブ５３０の時刻オフセット（Doffset/2）を補正することができる（図６のステップ６１５）。
【０１３８】
このようにして時刻オフセットを補正することによりマスタノードと同期させると、時刻同期処理は終了する（図６のステップ６１６）。
【０１３９】
以上の処理により、スレーブ５３０の時刻オフセットを補正できることが示された。
【０１４０】
このように、時刻オフセットが残留しているスレーブの場合、他のノードと片方向遅延時間を測定していっても、いつまで経ってもその遅延時間差が０となるようなノードを見つけることはできない。
【０１４１】
この特徴を利用することにより、時刻オフセットが残留しているスレーブは、『自装置には、時刻オフセットが残留している』ということを認識できる。
【０１４２】
また、その時刻オフセット量は、他ノードとの片方向遅延時間差の半分となっており、測定結果から時刻オフセットを補正することが可能である。
【０１４３】
上の例では、時刻オフセットが残留しているスレーブ５３０を例に挙げて、図６のステップ６０５〜６１６の処理を説明した。
【０１４４】
一方、時刻オフセットが残留していないスレーブ５１０の場合の処理について考えてみる。
【０１４５】
この場合も上記と同様の処理を行う。
【０１４６】
まず、ステップ６０５において、スレーブ５１０は、最初の通信相手としてスレーブ５４０を選んだとする。
【０１４７】
図１６のように、スレーブ５１０−スレーブ５４０間の往復のルーティング経路は一致するので、ステップ６０６に進む。
【０１４８】
新たなノードはスレーブであるので、ステップ６１３に進み、スレーブ５１０−マスタ５００間のルーティング経路と、スレーブ５５０−マスタ５００間のルーティング経路は一致する箇所がないかチェックする。
【０１４９】
ここで、図８、図１２を参照すると分かるように、スレーブ５１０−マスタ５００間のルーティング経路と、スレーブ５４０−マスタ５００間のルーティング経路は重なる箇所が一切ないのでステップ６０７に進む。
【０１５０】
ここで、図８、図１６を見ると分かるように、スレーブ５１０−マスタ５００間のルーティング経路と、スレーブ５１０−スレーブ５４０間のルーティング経路に重なる箇所は一切ないのでステップ６０８に進む。
【０１５１】
ステップ６０８では、スレーブ５１０−スレーブ５４０間の片方向遅延時間を測定する。
【０１５２】
スレーブ５１０とスレーブ５４０には時刻オフセットが残ってないので、スレーブ５１０-スレーブ５４０間の片方向遅延時間は図１６に示すように双方向で一致するので０となる。このため、図６のステップ６１４に進み、処理は終了となる。
【０１５３】
このように、時刻オフセットが残留していないスレーブであれば、他のノードと片方向遅延時間を測定していけば、いつかはその遅延時間差が０となるようなノードを見つけることができる。この特徴を利用することにより、時刻オフセットが残留していないスレーブは、『自分には時刻オフセットが残留していない』ということを認識できる。従って、遅延測定部５１４は、スレーブ５１０とスレーブ５４０との往復の片方向遅延時間が対称であるため、残留している片方向遅延誤差は存在しないと認識して、時刻同期部５１５に同期しないことを通知する。
【０１５４】
以上の処理により、第１の実施例は、ネットワーク層/データリンク層/物理層の経路が非対称となっているようなネットワークでも、時刻オフセットが残っているスレーブを特定するとともに、その残留オフセットを補正し、正確な時刻同期システムを実現できることが示された。
【０１５５】
また、上記の説明では、図６のステップ６０９において、片方向遅延時間が対称、すなわち往復の片方向遅延時間が一致するかどうかチェックしていたが、要求される時刻同期精度によっては完全に一致している必要はない。
【０１５６】
たとえば、要求される時刻同期精度が数μs程度の場合には、片方向遅延時間がサブμsオーダの範囲で一致していれば、要求される時刻同期精度よりも十分低い値に収まっているので、これらの片方向遅延時間は一致しているという判断を下して差し支えない。
【０１５７】
このように、上記の説明は本発明の典型的な実施形態のみを示しており、当該領域に精通した技術者であれば、上記の説明を元にして、実施形態に様々な変化を容易につけることが可能であり、上記説明はその範囲を限定するものではないことを理解されたい。
【０１５８】
尚、本発明は、上記ステップ６０３までの処理、即ちスレーブが往復のルーティング経路が一致するマスタと時刻を同期させる構成であっても、十分に、マスタとスレーブとの間の時刻同期を正確に実現できる。
【０１５９】
<効果>
次に、本発明を実施するための第１の実施の形態の効果について説明する。
本発明を実施するための第１の実施の形態では、マスタとスレーブ間での時刻同期を行った後に、スレーブ間で片方向遅延の対称性をチェックすることにより、時刻オフセットが残留しているスレーブノードを特定し、そのオフセットを補正する。これにより、ネットワーク遅延が非対称の場合でも正確な時刻同期を実現できるので、本発明の目的を達成することができる。
【０１６０】
次に、本発明を実施するための第２の実施の形態について、図面を参照して詳細に説明する。
【０１６１】
第２の実施の形態では、例えば、マスタ同士の間にオフセットが生じていたり、ある組み合わせのマスタとスレーブとの間の経路が非対称であったりしていて、スレーブ間の片方向遅延時間差が一意な値に収まらないケースを想定している。
【０１６２】
このような場合でも、スレーブに残留している時刻オフセット量を推定するために、得られた片方向遅延時間差に平均化処理を施す。
【０１６３】
これにより、最も確からしい時刻オフセット量を算出することができ、正確な時刻同期システムを実現できるので、本発明の目的を達成することができる。
【０１６４】
<構成>
第２の実施の形態の構成は、第１の実施の形態の構成と同じであるため、同様の構成については同一番号を付し、その詳細な説明を省略する。
【０１６５】
<動作>
次に、第２の実施の形態の動作について述べる。
第２の実施の形態では、図１７のように、複数のマスタと複数のスレーブが存在し、各スレーブと各マスタの間はネットワーク層よりも下のレイヤで経路が非対称となっているリンク８０１、８０２、８０３、８０４、８０５で接続されているものとする。
【０１６６】
各リンクの非対称量は、図１７に示されるように、以下の通りである。
リンク８０１ = D'offset
リンク８０２ = D''offset
リンク８０３ = D'''offset
リンク８０４ = D''''offset
リンク８０５ = D'''''offset
【０１６７】
このようなネットワーク環境において、各スレーブが図１７に示される経路でマスタと時刻同期処理を行った場合（図６のステップ６０３）、各スレーブには以下の量だけ時刻オフセットが残留する。
スレーブ７５０ = D'''''offset/ 2
スレーブ７６０ = D''''offset/ 2
スレーブ７７０ = D'''offset/ 2
スレーブ７８０ = D''offset/ 2
スレーブ７９０ = D'offset/ 2
【０１６８】
以下では、このような状況を想定した場合の、スレーブ７９０の動作について説明する。
【０１６９】
スレーブ７９０の遅延測定部は、図６に示される各ステップの処理を続け、他の各スレーブとの片方向遅延時間の差をデータベースに保存していく。ここで、規定回数が５以上の値に設定されていれば、スレーブ７９０は他の全スレーブとの片方向遅延時間差の情報を有する。
【０１７０】
データベースに保存されている片方向遅延時間差は、以下の通りである。
片方向遅延時間差（スレーブ７９０−スレーブ７５０） = D'offset - D'''''offset  （式７）
片方向遅延時間差（スレーブ７９０−スレーブ７６０） = D'offset - D''''offset  （式８）
片方向遅延時間差（スレーブ７９０−スレーブ７７０） = D'offset - D'''offset  （式９）
片方向遅延時間差（スレーブ７９０−スレーブ７８０） = D'offset - D''offset  （式１０）
ここで、D'''''offset、D''''offset、D'''offset、およびD''offsetの間には相関がなく、正負の値を取りうるものとする。
【０１７１】
また、図１７には５個のスレーブしか記載していないが、さらに多くのスレーブが集まれば、片方向遅延時間差に関するデータを多数集めることができる。
【０１７２】
このように得られた片方向遅延時間差をプロットすると、図１８のように、D'offsetを中心として、正規分布のようなグラフとなる。
【０１７３】
正規分布となる理由は、D'''''offset、D''''offset、D'''offset、およびD''offsetの間には相関がないためである。
【０１７４】
この場合、正規分布の平均値はD'offsetとなっているため、得られた片方向遅延時間差に平均値を求めることによりスレーブ７６０に残留している時刻オフセットD'offsetを推定できる。
【０１７５】
また、平均値を求める際に、中心から大きく外れたデータを取り除いてから平均値を求めることで、推定精度を向上できる。
【０１７６】
また、上記の説明では、平均値をとる方法について述べたが、単純に平均値をとるのではなく、各データの重み付け平均をとってもよい。
【０１７７】
たとえば、スレーブとマスタの距離（ホップ数）が大きくなればなるほど、非対称の経路を通る可能性が高まるので、スレーブに時刻同期誤差が残留する確率が高くなる。
【０１７８】
図１７を見ると分かるように、マスタ７４０とスレーブ７５０の間には２つのルータしかないが、マスタ７２０とスレーブ７７０の間にはルータが５個も存在する。このため、スレーブ７５０に比べて、スレーブ７７０には大きな時刻同期誤差が含まれている可能性が高いので、各データにホップ数の逆数を掛けてから平均をとることにより、スレーブ７７０の時刻同期誤差の影響を緩和できる。
【０１７９】
このような理由から、上記の式７〜式１０に対して、それぞれホップ数の逆数を掛けた重み付け平均値を求めることによりスレーブ７６０に残留している時刻オフセットD'offsetをより正確に推定できる。
【０１８０】
また、上記の説明では、マスタ−スレーブ間のホップ数の逆数を係数として重み付け平均を取る方法について述べたが、重み付け係数として、距離や遅延時間など他にも様々なパターンが考えられる。
【０１８１】
以上の説明では、スレーブ７９０に着目して説明したが、他のスレーブにおいても同様の処理を行うことにより、各スレーブに残留している時刻オフセットを求めることができる。
【０１８２】
<効果>
次に、本発明を実施するための第２の実施の形態の効果について説明する。
本発明を実施するための第２の実施の形態では、スレーブ間の片方向遅延時間差が一意な値とならない場合でも、得られた片方向遅延時間差に平均化処理を施すことにより、スレーブに残留している時刻オフセット量を推定する。
【０１８３】
これにより、最も確からしい時刻オフセット量を算出することができ、正確な時刻同期システムを実現できるので、本発明の目的を達成することができる。
【０１８４】
尚、上述した本発明の装置は、上記説明からも明らかなように、ハードウェアで構成することも可能であるが、コンピュータプログラムにより実現することも可能である。
【０１８５】
プログラムメモリに格納されているプログラムで動作するプロセッサによって、上述した実施の形態と同様の機能、動作を実現させる。尚、上述した実施の形態の一部の機能のみをコンピュータプログラムにより実現することも可能である。
【図面の簡単な説明】
【０１８６】
【図１】図１は、時刻同期アルゴリズムを説明するための図である。
【図２】図２は、スイッチにバウンダリークロックを組み込んだ場合の構成図である。
【図３】図３は、ルーティング経路が非対称である場合を説明するための図である。
【図４】図４は、ルーティング経路が非対称である場合に生じる精度劣化の影響を説明するための図である。
【図５】図５は、本発明の時刻同期システムの構成図である。
【図６】図６は、第１の実施の形態の動作を示すフローである。
【図７】図７は、スレーブ５１０とマスタ５２０の間のルーティング経路の一例である。
【図８】図８は、スレーブ５１０とマスタ５００の間のルーティング経路の一例である。
【図９】図９は、パケットの伝播方向によって生じる伝播遅延時間差を説明するための図である。
【図１０】図１０は、マスタノード５００とスレーブノード５３０とのルーティング経路の一例である。
【図１１】図１１は、マスタノード５２０とスレーブノード５４０とのルーティング経路の一例である。
【図１２】図１２は、マスタノード５００とスレーブノード５５０とのルーティング経路の一例である。
【図１３】図１３は、時刻同期誤差が残留することを説明するための図である。
【図１４】図１４は、スレーブ５３０とスレーブ５５０とのルーティング経路の一例である。
【図１５】図１５は、スレーブ５１０とスレーブ５３０とのルーティング経路の一例である。
【図１６】図１６は、スレーブ５１０とスレーブ５４０とのルーティング経路の一例である。
【図１７】図１７は、スレーブ間の片方向遅延時間差が一意な値に収まらないケースを説明するための図である。
【図１８】図１８は、片方向遅延時間差をプロットしたグラフである。
【符号の説明】
【０１８７】
５００、５２０  マスタ
５１０、５３０、５４０、５５０  スレーブ
５６０  ネットワーク
５０１  パケット送受信部
５０２  経路調査部
５０３  経路比較部
５０４  遅延測定部
５０５  時刻同期部
５１１  パケット送受信部
５１２  経路調査部
５１３  経路比較部
５１４  遅延測定部
５１５  時刻同期部
【図１】
2009065579.tif 000003
【図２】
2009065579.tif 000004
【図３】
2009065579.tif 000005
【図４】
2009065579.tif 000006
【図５】
2009065579.tif 000007
【図６】
2009065579.tif 000008
【図７】
2009065579.tif 000009
【図８】
2009065579.tif 000010
【図９】
2009065579.tif 000011
【図１０】
2009065579.tif 000012
【図１１】
2009065579.tif 000013
【図１２】
2009065579.tif 000014
【図１３】
2009065579.tif 000015
【図１４】
2009065579.tif 000016
【図１５】
2009065579.tif 000017
【図１６】
2009065579.tif 000018
【図１７】
2009065579.tif 000019
【図１８】
2009065579.tif 000020