特許第6010802号(P6010802)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東日本電信電話株式会社の特許一覧

特許6010802時刻同期システム、時刻同期方法、スレーブノード及びコンピュータプログラム
<>
  • 特許6010802-時刻同期システム、時刻同期方法、スレーブノード及びコンピュータプログラム 図000008
  • 特許6010802-時刻同期システム、時刻同期方法、スレーブノード及びコンピュータプログラム 図000009
  • 特許6010802-時刻同期システム、時刻同期方法、スレーブノード及びコンピュータプログラム 図000010
  • 特許6010802-時刻同期システム、時刻同期方法、スレーブノード及びコンピュータプログラム 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6010802
(24)【登録日】2016年9月30日
(45)【発行日】2016年10月19日
(54)【発明の名称】時刻同期システム、時刻同期方法、スレーブノード及びコンピュータプログラム
(51)【国際特許分類】
   H04L 7/00 20060101AFI20161006BHJP
【FI】
   H04L7/00 990
【請求項の数】4
【全頁数】13
(21)【出願番号】特願2013-33193(P2013-33193)
(22)【出願日】2013年2月22日
(65)【公開番号】特開2014-165582(P2014-165582A)
(43)【公開日】2014年9月8日
【審査請求日】2015年7月23日
(73)【特許権者】
【識別番号】399040405
【氏名又は名称】東日本電信電話株式会社
(74)【代理人】
【識別番号】100064908
【弁理士】
【氏名又は名称】志賀 正武
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(72)【発明者】
【氏名】小橋 敏浩
(72)【発明者】
【氏名】及川 健太郎
(72)【発明者】
【氏名】行田 克俊
【審査官】 森谷 哲朗
(56)【参考文献】
【文献】 国際公開第2011/074529(WO,A1)
【文献】 特開2010−028684(JP,A)
【文献】 特開2007−158425(JP,A)
【文献】 特表2011−525308(JP,A)
【文献】 特表2010−527193(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 7/00
(57)【特許請求の範囲】
【請求項1】
双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムであって、
前記マスターノードは、
前記スレーブノードと制御メッセージの送受信を行う通信部を備え、
前記スレーブノードは、
前記マスターノードと制御メッセージの送受信を行う通信部と、
前記通信部が前記制御メッセージを送受信した際に取得される時刻情報を用いて平均遅延時間およびオフセットを算出する演算部と、
前記演算部によって算出された前記平均遅延時間および前記オフセットを対応付けて複数記憶する記憶部と、
前記記憶部に平均遅延時間およびオフセットの各値が所定の回数記憶された後に前記記憶部に記憶されている複数の平均遅延時間の中から最小の平均遅延時間を選択し、選択した前記平均遅延時間に対応するオフセットを選択する選択部と、
前記選択部が選択した前記オフセットに基づいて自装置の時刻を補正する時刻補正部と、
を備える時刻同期システム。
【請求項2】
双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムが行う時刻同期方法であって、
前記マスターノードが、
前記スレーブノードと制御メッセージの送受信を行う通信ステップと、
前記スレーブノードが、
前記マスターノードと制御メッセージの送受信を行う通信ステップと、
前記通信ステップによって前記制御メッセージを送受信した際に取得される時刻情報を用いて平均遅延時間およびオフセットを算出する演算ステップと、
前記演算ステップによって算出された前記平均遅延時間および前記オフセットを対応付けて記憶部に記憶する記録ステップと、
前記記憶部に平均遅延時間およびオフセットの各値が所定の回数記憶された後に前記記憶部に記憶されている複数の平均遅延時間の中から最小の平均遅延時間を選択し、選択した前記平均遅延時間に対応するオフセットを選択する選択ステップと、
前記選択ステップによって選択された前記オフセットに基づいて自装置の時刻を補正する時刻補正ステップと、
を有する時刻同期方法。
【請求項3】
マスターノードに対して時刻同期を行うスレーブノードであって、
前記マスターノードと制御メッセージの送受信を行う通信部と、
前記通信部が前記制御メッセージを送受信した際に取得される時刻情報を用いて平均遅延時間およびオフセットを算出する演算部と、
前記演算部によって算出された前記平均遅延時間および前記オフセットを対応付けて複数記憶する記憶部と、
前記記憶部に平均遅延時間およびオフセットの各値が所定の回数記憶された後に前記記憶部に記憶されている複数の平均遅延時間の中から最小の平均遅延時間を選択し、選択した前記平均遅延時間に対応するオフセットを選択する選択部と、
前記選択部が選択した前記オフセットに基づいて自装置の時刻を補正する時刻補正部と、
を備えるスレーブノード。
【請求項4】
双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムとして、前記マスターノードに相当する第一のコンピュータ及び前記スレーブノードに相当する第二のコンピュータを動作させるためのコンピュータプログラムであって、
前記第一のコンピュータに対し、
前記スレーブノードと制御メッセージの送受信を行う通信ステップを実行させ、
前記第二のコンピュータに対し、
前記マスターノードと制御メッセージの送受信を行う通信ステップと、
前記通信ステップによって前記制御メッセージを送受信した際に取得される時刻情報を用いて平均遅延時間およびオフセットを算出する演算ステップと、
前記演算ステップによって算出された前記平均遅延時間および前記オフセットを対応付けて記憶部に記録する記録ステップと、
前記記憶部に平均遅延時間およびオフセットの各値が所定の回数記憶された後に前記記憶部に記憶されている複数の平均遅延時間の中から最小の平均遅延時間を選択し、選択した前記平均遅延時間に対応するオフセットを選択する選択ステップと、
前記選択ステップによって選択された前記オフセットに基づいて自装置の時刻を補正する時刻補正ステップと、
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、時刻同期の技術に関する。
【背景技術】
【0002】
従来、ネットワーク接続された複数の機器の時刻をマイクロ秒以下の精度で同期させる技術として、IEEE1588で定義されたPTP(Precision Time Protocol)が知られている(例えば、非特許文献1参照)。PTPでは、マスターノードとスレーブノードとの間で時刻情報を含むメッセージが定期的に交換される。スレーブノードは、マスターノード及びスレーブノードにおけるメッセージが送受信された時刻情報から、マスターノードに対するスレーブノードの時刻のずれ(Offset)を計算する。そして、スレーブノードは、計算したOffsetに基づいてスレーブノードの時刻を補正して、スレーブノードの時刻をマスターノードの時刻に同期させる。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】“IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems,” IEEE Standard 1588-2008.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述したPTPによる時刻同期は、ネットワーク環境によっては適切に機能しないことがある。例えば、PTPによる時刻同期は、Offsetを求めるために、マスターノードからスレーブノードへの伝送遅延と、スレーブノードからマスターノードへの伝送遅延とが等しいと仮定している。それに対して、一般的なネットワークでは、パケットの揺らぎなどの影響により、マスターノードからスレーブノードへの伝送遅延と、スレーブノードからマスターノードへの伝送遅延とが異なる値となる可能性が高い。このような場合、スレーブノードの時刻を補正する際に求められるOffset(オフセット)の値には誤差が含まれる。
【0005】
さらに、パケットの揺らぎなどの影響が大きい場合、求められるOffsetの値に含まれる誤差も大きくなってしまう。したがって、スレーブノードは、パケットの揺らぎなどの影響によって誤差の大きいOffsetの値でスレーブノードの時刻を補正してしまうおそれがあった。このような問題が発生すると、マスターノードとスレーブノードとの間で行われる時刻同期の精度が低下してしまう。このような問題は、PTPに限らず、時刻同期を行う全ての通信プロトコルに共通する問題である。
【0006】
上記事情に鑑み、本発明は、パケットの揺らぎなどによる影響を軽減し、時刻同期の精度を向上する技術の提供を目的としている。
【課題を解決するための手段】
【0007】
本発明の一態様は、双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムであって、前記マスターノードは、前記スレーブノードと制御メッセージの送受信を行う通信部を備え、前記スレーブノードは、前記マスターノードと制御メッセージの送受信を行う通信部と、前記通信部が前記制御メッセージを送受信した際に取得される時刻情報を用いて平均遅延時間およびオフセットを算出する演算部と、前記演算部によって算出された前記平均遅延時間および前記オフセットを対応付けて複数記憶する記憶部と、前記記憶部に記憶されている複数の平均遅延時間の中から最小の平均遅延時間を選択し、選択した前記平均遅延時間に対応するオフセットを選択する選択部と、前記選択部が選択した前記オフセットに基づいて自装置の時刻を補正する時刻補正部と、を備える時刻同期システムである。
【0008】
本発明の一態様は、上記の時刻同期システムであって、前記選択部は、前記記憶部に平均遅延時間およびオフセットの各値が、所定の回数記憶された後に前記オフセットを選択し、前記時刻補正部は、前記選択部が選択した前記オフセットに基づいて自装置の時刻を補正する。
【0009】
本発明の一態様は、双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムが行う時刻同期方法であって、前記マスターノードが、前記スレーブノードと制御メッセージの送受信を行う通信ステップと、前記スレーブノードが、前記マスターノードと制御メッセージの送受信を行う通信ステップと、前記通信ステップによって前記制御メッセージを送受信した際に取得される時刻情報を用いて平均遅延時間およびオフセットを算出する演算ステップと、前記演算ステップによって算出された前記平均遅延時間および前記オフセットを対応付けて記憶部に記憶する記録ステップと、前記記憶部に記憶されている複数の平均遅延時間の中から最小の平均遅延時間を選択し、選択した前記平均遅延時間に対応するオフセットを選択する選択ステップと、前記選択ステップによって選択された前記オフセットに基づいて自装置の時刻を補正する時刻補正ステップと、を有する時刻同期方法である。
【0010】
本発明の一態様は、上記の時刻同期方法であって、前記スレーブノードは、前記選択ステップにおいて、前記記憶部に平均遅延時間およびオフセットの各値が、所定の回数記憶された後に前記オフセットを選択し、前記スレーブノードは、前記時刻補正ステップにおいて、前記オフセットに基づいて自装置の時刻を補正する。
【0011】
本発明の一態様は、マスターノードに対して時刻同期を行うスレーブノードであって、前記マスターノードと制御メッセージの送受信を行う通信部と、前記通信部が前記制御メッセージを送受信した際に取得される時刻情報を用いて平均遅延時間およびオフセットを算出する演算部と、前記演算部によって算出された前記平均遅延時間および前記オフセットを対応付けて複数記憶する記憶部と、前記記憶部に記憶されている複数の平均遅延時間の中から最小の平均遅延時間を選択し、選択した前記平均遅延時間に対応するオフセットを選択する選択部と、前記選択部が選択した前記オフセットに基づいて自装置の時刻を補正する時刻補正部と、を備えるスレーブノードである。
【0012】
本発明の一態様は、上記のスレーブノードであって、前記選択部は、前記記憶部に平均遅延時間およびオフセットの各値が、所定の回数記憶された後に前記オフセットを選択し、前記時刻補正部は、前記オフセットに基づいて自装置の時刻を補正する。
【0013】
本発明の一態様は、双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムとして、前記マスターノードに相当する第一のコンピュータ及び前記スレーブノードに相当する第二のコンピュータを動作させるためのコンピュータプログラムであって、前記第一のコンピュータに対し、前記スレーブノードと制御メッセージの送受信を行う通信ステップを実行させ、前記第二のコンピュータに対し、前記マスターノードと制御メッセージの送受信を行う通信ステップと、前記通信ステップによって前記制御メッセージを送受信した際に取得される時刻情報を用いて平均遅延時間およびオフセットを算出する演算ステップと、前記演算ステップによって算出された前記平均遅延時間および前記オフセットを対応付けて記憶部に記憶する記録ステップと、前記記憶部に記憶されている複数の平均遅延時間の中から最小の平均遅延時間を選択し、選択した前記平均遅延時間に対応するオフセットを選択する選択ステップと、前記選択ステップによって選択された前記オフセットに基づいて自装置の時刻を補正する時刻補正ステップと、を実行させるためのコンピュータプログラムである。
【0014】
本発明の一態様は、上記のコンピュータプログラムであって、前記選択ステップにおいて、前記記憶部に平均遅延時間およびオフセットの各値が、所定の回数記憶された後に前記オフセットを選択し、前記時刻補正ステップにおいて前記オフセットに基づいて自装置の時刻を補正する。
【発明の効果】
【0015】
本発明により、パケットの揺らぎなどによる影響を軽減し、時刻同期の精度を向上させることが可能となる。
【図面の簡単な説明】
【0016】
図1】IEEE1588の時刻同期アルゴリズムによる通信シーケンスの動作を表すシーケンス図である。
図2】マスターノード10及びスレーブノード20の機能構成を表す概略ブロック図である。
図3】時間情報DBの構成例を示す図である。
図4】本実施形態におけるスレーブノード20による時刻同期処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0017】
以下、本発明の一実施形態を、図面を参照しながら説明する。
まず、図1を用いてIEEE1588の時刻同期アルゴリズムについて説明する。図1は、IEEE1588の時刻同期アルゴリズムによる通信シーケンスの動作を表すシーケンス図である。図1では、マスターノード10とスレーブノード20とが双方向通信を行っており、スレーブノード20が定期的にマスターノード10の時刻にスレーブノード20の時刻を同期させる。
【0018】
マスターノード10は、スレーブノード20に対して、定期的にSyncメッセージを送信する(ステップS100)。マスターノード10は、Syncメッセージの送信時刻(以下、「Sync送信時刻」という。)Tm(0)を記録する(ステップS101)。次に、マスターノード10は、スレーブノード20に対して、Follow_upメッセージを送信する(ステップS102)。この際、マスターノード10は、Follow_upメッセージの中に、Sync送信時刻Tm(0)を格納する。
【0019】
スレーブノード20は、Syncメッセージを受信すると、この受信処理をトリガとしてSyncメッセージの受信時刻(以下、「Sync受信時刻」という。)Ts(0)を記録する(ステップS103)。次に、スレーブノード20はFollow_upメッセージを受信し、Follow_upメッセージ中に格納されるSync送信時刻Tm(0)を抽出し記録する。次に、スレーブノード20は、マスターノード10に対して、Delay_Requestメッセージを送信する(ステップS104)。そして、スレーブノード20は、Delay_Requestメッセージの送信時刻(以下、「Delay送信時刻」という。)Ts(1)を記録する(ステップS105)。
【0020】
マスターノード10は、Delay_Requestメッセージを受信すると、この受信処理をトリガとしてDelay_Requestメッセージの受信時刻(以下、「Delay受信時刻」という。)Tm(1)を記録する(ステップS106)。次に、マスターノード10は、スレーブノード20に対してDelay_Responseメッセージを送信する(ステップS107)。この際、マスターノード10は、Delay_Responseメッセージの中に、Delay受信時刻Tm(1)を格納する。
【0021】
スレーブノード20は、Delay_Responseメッセージを受信すると、Delay_Responseメッセージ中に格納されるDelay受信時刻Tm(1)を抽出し記録する。
スレーブノード20は、Sync送信時刻Tm(0)、Sync受信時刻Ts(0)に基づいて、以下の式1によってマスターノード10における時刻(以下、「マスター時刻」という。)とスレーブノード20における時刻(以下、「スレーブ時刻」という。)との差分MS_Diffを算出する。
【数1】
【0022】
また、スレーブノード20は、Delay送信時刻Ts(1)、Delay受信時刻Tm(1)に基づいて、以下の式2によってスレーブ時刻とマスター時刻との差分SM_Diffを求める。
【数2】
【0023】
式1のMS_Delayはマスターノード10からスレーブノード20への伝送遅延を表し、式2のSM_Delayはスレーブノード20からマスターノード10への伝送遅延を表し、式1及び式2のOffsetはマスターノード10に対するスレーブノード20の時刻オフセット(進み)を表す。なお、伝送遅延MS_Delay及びSM_Delayは、マスターノード10とスレーブノード20との間の伝播遅延と、マスターノード10とスレーブノード20との間のネットワーク上の中継ノードで生じるキューイング遅延などから構成される。
【0024】
以上のように、マスターノード10に対するスレーブノード20の時刻のずれであるOffsetに関して、式1及び式2の二つの式が得られる。しかし、この二つの式には、Offsetの他にMS_Delay及びSM_Delayという未知のパラメータが含まれている。したがって、三つの未知のパラメータに対し二つの式しか存在しないため、Offsetを算出することができない。そのため、IEEE1588では、マスターノード10からスレーブノード20への伝送遅延MS_Delayと、スレーブノード20からマスターノード10への伝送遅延SM_Delayとが等しく、いずれの値もDelayであると仮定して、上記の式1及び式2を以下の式3及び式4に変形する。
【0025】
【数3】
【数4】
式3及び式4の連立方程式を解くことによって、以下の式5が導出される。
【数5】
【0026】
スレーブノード20は、導出された式5に基づいてOffsetを算出する。スレーブノード20は、算出したOffsetに基づいてスレーブ時刻を補正することによって、スレーブ時刻をマスター時刻に同期させる。以上が、IEEE1588に規定される時刻同期アルゴリズムである。
【0027】
図2は、マスターノード10及びスレーブノード20の機能構成を表す概略ブロック図である。まず、マスターノード10の機能構成を説明する。
マスターノード10は、バスで接続されたCPU(Central Processing Unit)やメモリや補助記憶装置などを備え、時刻同期用プログラムを実行する。時刻同期用プログラムの実行によって、マスターノード10は、マスタークロック生成部11、時計部12、パケット生成部13、通信部14を備える装置として機能する。なお、マスターノード10の各機能の全て又は一部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されても良い。また、時刻同期用プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。また、時刻同期用プログラムは、電気通信回線を介して送受信されても良い。
【0028】
マスタークロック生成部11は、例えば、VCXO(Voltage controlled xtal oscillators)等の電圧可変型の水晶発振器等を用いて構成される。また、マスタークロック生成部11は、マスタークロックを生成する。具体的には、マスタークロック生成部11は、マスターノード10における1秒の時間幅を決定する。なお、マスタークロック生成部11は、マスターノード10の外部に存在しても良い。
【0029】
時計部12は、マスタークロック生成部11が生成したマスタークロックに従い、マスター時刻を決定する。具体的には、時計部12は、マスターノード10において何時何分何秒であるかを決める。時計部12は、マスター時刻の時刻情報をパケット生成部13に出力する。
【0030】
パケット生成部13は、PTPメッセージを生成する。PTPメッセージとは、具体的には、Syncメッセージ、Follow_upメッセージ、Delay_Responseメッセージである。Syncメッセージは、時刻同期化の動作を開始するために送信されるメッセージである。Follow_upメッセージは、Syncメッセージが送信された後に、Sync送信時刻Tm(0)の時刻情報を通知するために送信されるメッセージである。Delay_Responseメッセージは、マスターノード10がスレーブノード20から送信されるPTPメッセージに応答するために送信されるメッセージである。
【0031】
パケット生成部13は、定期的に通信部14を介してSyncメッセージをスレーブノード20に送信し、同時に時計部12を参照してSync送信時刻Tm(0)を記録する。また、パケット生成部13は、Syncメッセージ送信後に、Sync送信時刻Tm(0)を格納したFollow_upメッセージを生成する。パケット生成部13は、通信部14を介してスレーブノード20にFollow_upメッセージを送信する。
【0032】
また、パケット生成部13は、通信部14によって受信されるDelay_Requestメッセージの受信時刻(Delay受信時刻)Tm(1)を時計部12を参照して記録する。その後、パケット生成部は記録した受信時刻Tm(1)を格納したDelay_Responseメッセージを生成し、通信部14を介してスレーブノード20にDelay_Responseメッセージを送信する。
通信部14は、スレーブノード20との間で通信を行う。例えば、通信部14は、スレーブノード20からDelay_Requestメッセージを受信し、パケット生成部13に転送する。また、通信部14は、Syncメッセージ、Follow_upメッセージ、Delay_Responseメッセージをスレーブノード20に送信する。
【0033】
次に、スレーブノード20の機能構成を説明する。
スレーブノード20は、バスで接続されたCPUやメモリや補助記憶装置などを備え、時刻同期用プログラムを実行する。時刻同期用プログラムの実行によって、スレーブノード20は、スレーブクロック生成部21、時計部22、通信部23、制御部24、演算部25、時間情報記憶部26、判定部27、選択部28、時刻補正部29を備える装置として機能する。なお、スレーブノード20の各機能の全て又は一部は、ASICやPLDやFPGA等のハードウェアを用いて実現されても良い。また、時刻同期用プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。また、時刻同期用プログラムは、電気通信回線を介して送受信されても良い。
【0034】
スレーブクロック生成部21は、例えば、VCXO等の電圧可変型の水晶発振器等を用いて構成される。スレーブクロック生成部21は、スレーブクロックを生成する。具体的には、スレーブクロック生成部21は、スレーブノード20における1秒の時間幅を決定する。なお、スレーブクロック生成部21は、スレーブノード20の外部に存在しても良い。
【0035】
時計部22は、スレーブクロック生成部21が生成したスレーブクロックに従い、スレーブ時刻を決定する。具体的には、時計部22は、スレーブノード20において何時何分何秒であるかを決める。時計部22は、スレーブ時刻の時刻情報を制御部24に出力する。
【0036】
通信部23は、マスターノード10との間で通信を行う。例えば、通信部23は、マスターノード10からSyncメッセージ、Follow_upメッセージ、Delay_Responseメッセージを受信し、制御部24に転送する。また、通信部23は、Delay_Requestメッセージをマスターノード10に送信する。
制御部24は、スレーブノード20の各機能部を制御する。また、制御部24は、Delay_Requestメッセージを生成し、通信部23を介してマスターノード10にDelay_Requestメッセージを送信する。この際、制御部24は、時計部22を参照してDelay送信時刻Ts(1)を記録する。Delay_Requestメッセージは、通信部23がマスターノード10から送信されるFollow_upメッセージを受信した後に、マスターノード10にDelay_Responseメッセージを要求するために送信されるメッセージである。
【0037】
また、制御部24は、通信部23からSyncメッセージが転送された際に時計部22を参照してSync受信時刻Ts(0)を記録する。また、制御部24は、Follow_upメッセージ中に格納されているSync送信時刻Tm(0)を抽出し記録する。また、制御部24は、Delay_Responseメッセージ中に格納されているDelay受信時刻Tm(1)を抽出し記録する。その後、制御部24は、各時刻情報(Sync送信時刻Tm(0)、Sync受信時刻Ts(0)、Delay送信時刻Ts(1)、Delay受信時刻Tm(1))を演算部25に出力する。
【0038】
演算部25は、制御部24から出力された各時刻情報を用いて平均遅延時間およびOffsetを算出する。平均遅延時間は、マスターノード10からスレーブノード20への伝送遅延MS_Diffと、スレーブノード20からマスターノード10への伝送遅延SM_Diffとの平均時間である。具体的には、演算部25は、以下の式6に基づいて平均遅延時間t_dを算出する。
【数6】
【0039】
時間情報記憶部26は、磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成される。時間情報記憶部26は、時間情報DB(Data Base:データベース)を記憶している。時間情報DBには、演算部25が算出した平均遅延時間およびOffsetの各値が複数格納されている。時間情報記憶部26は、演算部25が平均遅延時間およびOffsetを算出する度に、平均遅延時間およびOffsetの各値を対応付けて時間情報DBに追加して記憶する。
【0040】
判定部27は、所定の回数、平均遅延時間およびOffsetの各値が時間情報DBに格納されたか否かを判定する。所定の回数とは、例えば、判定部27が予め記憶している回数であっても良いし、ユーザによって任意に決定された回数であっても良い。平均遅延時間およびOffsetの各値が時間情報DBに所定の回数格納された場合、判定部27は時計部22のスレーブ時刻を補正するように選択部28に指示する。一方、平均遅延時間およびOffsetの各値が時間情報DBに所定の回数格納されていない場合、判定部27は、時計部22のスレーブ時刻を補正することを選択部28に指示しない。
【0041】
選択部28は、判定部27の指示に応じて時間情報DBに格納されている複数の平均遅延時間の中から1つの平均遅延時間を選択する。選択部28は、例えば、複数の平均遅延時間の中から最小の平均遅延時間を選択する。そして、選択部28は、選択した平均遅延時間に対応付けて格納されているOffsetの値を取得する。その後、選択部28は、取得したOffsetの値を時刻補正部29に出力する。
時刻補正部29は、選択部28から出力されたOffsetの値を用いて時計部22のスレーブ時刻を補正する。時刻補正部29のこの処理によって、スレーブノード20の時計部22のスレーブ時刻は、マスターノード10の時計部12のマスター時刻に同期する。
【0042】
図3は、時間情報DBの構成例を示す図である。
時間情報DBは、レコード30を複数有する。レコード30は、番号、平均遅延時間、Offsetの各値を有する。番号の値は、レコード30によって表される平均遅延時間およびOffsetの各値が格納された順番を表す。平均遅延時間の値は、演算部25によって算出された平均遅延時間の項目を表す。Offsetの値は、演算部25によって算出されたOffsetの項目を表す。
【0043】
図3に示す例では、時間情報DBには番号“1”から番号“N”までN個の平均遅延時間(“t_d1”〜“t_dN”)およびOffset(“t_o1”〜“t_oN”)が格納されている。例えば、図3において、時間情報DBの最上段の行は、番号の値が“1”、平均遅延時間の値が“t_d1”、Offsetの値が“t_o1”である。即ち、平均時間情報DBに1番目に格納された平均遅延時間の値が“t_d1”であり、Offsetの値が“t_o1”であることが表されている。
【0044】
次に、図3を用いて選択部28の処理について詳細に説明する。
選択部28は、判定部27が所定の回数(例えば、N回)、平均遅延時間およびOffsetの各値が時間情報DBに格納されたと判定すると、以下の処理を行う。
選択部28は、時間情報DBに格納されている番号“1”から番号“N”までに対応する各レコード30の中から最小の平均遅延時間のレコード30を選択する。例えば、図3において、円40で示されている“t_dK”の値が時間情報DBに格納されている複数の平均遅延時間の中で最小の平均遅延時間である場合、選択部28は“t_dK”の値が格納されているレコード30を選択する。そして、選択部28は、選択したレコード30の平均遅延時間に対応付けて格納されているOffsetの値“t_oK”を取得する。その後、選択部28は、取得したOffsetの値“t_oK”を時刻補正部29に出力する。
以上で、選択部28の詳細な説明を終了する。
【0045】
図4は、本実施形態におけるスレーブノード20による時刻同期処理の流れを示すフローチャートである。
スレーブノード20の通信部23は、マスターノード10から送信されるSyncメッセージを受信する(ステップS201)。具体的には、通信部23は、マスターノード10からSyncメッセージを受信し、受信したSyncメッセージを制御部24に転送する。制御部24は、Syncメッセージが転送されると、時計部22を参照してSync受信時刻Ts(0)を記録する。
【0046】
次に、通信部23は、マスターノード10から送信されるFollow_upメッセージを受信する(ステップS202)。具体的には、通信部23は、マスターノード10からFollow_upメッセージを受信し、受信したFollow_upメッセージを制御部24に転送する。制御部24は、Follow_upメッセージ中に格納されているSync送信時刻Tm(0)を抽出し記録する。
【0047】
制御部24は、Delay_Requestメッセージを生成し、通信部23を介してマスターノード10にDelay_Requestメッセージを送信する(ステップS203)。この際、制御部24は、時計部22を参照してDelay送信時刻Ts(1)を記録する(ステップS204)。その後、通信部23は、マスターノード10から送信されるDelay_Responseメッセージを受信する(ステップS205)。
【0048】
具体的には、通信部23は、マスターノード10からDelay_Responseメッセージ受信し、受信したDelay_Responseメッセージを制御部24に転送する。制御部24は、Delay_Responseメッセージ中に格納されているDelay受信時刻Tm(1)を抽出し記録する。制御部24は、記録している各時刻情報(Sync送信時刻Tm(0)、Sync受信時刻Ts(0)、Delay送信時刻Ts(1)、Delay受信時刻Tm(1))を演算部25に出力する。
【0049】
演算部25は、制御部24から出力された各時刻情報を用いて平均遅延時間を算出する(ステップS206)。次に、演算部25は、制御部24から出力された各時刻情報を用いてOffsetを算出する(ステップS207)。演算部25は、算出した平均遅延時間およびOffsetの各値を対応付けて時間情報記憶部26に記録する(ステップS208)。
【0050】
判定部27は、平均遅延時間およびOffsetの各値が時間情報DBに所定の回数格納されたか否かを判定する(ステップS209)。平均遅延時間およびOffsetの各値が時間情報DBに所定の回数格納された場合(ステップS209−YES)、選択部28は時間情報記憶部26に記憶されている時間情報DBを読み出す。選択部28は、読み出した時間情報DBから平均遅延時間の値が最小のレコード30を選択する(ステップS210)。選択部28は、選択したレコード30に格納されているOffsetの値を取得する。その後、選択部28は、取得したOffsetの値を時刻補正部29に出力する。
【0051】
時刻補正部29は、選択部28が出力したOffsetの値を用いて時計部22のスレーブ時刻を補正する。具体的には、以下のように時計部22のスレーブ時刻を補正する。補正前の時計部22のスレーブ時刻は、マスターノード10の時計部12のマスター時刻にOffsetの値が加わった時刻である。そのため、時刻補正部29は、補正前の時計部22のスレーブ時刻を、Offsetの値だけ減算した時刻となるように補正する(ステップS211)。その後、図4の処理が終了する。
また、所定の回数、平均遅延時間およびOffsetの各値が時間情報DBに格納されていない場合(ステップS209−NO)、スレーブノード20はステップS201以降の処理を繰り返し実行する。
【0052】
以上のように構成されたスレーブノード20によれば、時間情報DBに格納されている複数の平均遅延時間の中から最小の平均遅延時間が選択される。そのため、選択された平均遅延時間は、時間情報DBに格納されている複数の平均遅延時間の中でパケットの揺らぎなどによる影響が最も小さい。したがって、選択された平均遅延時間に対応付けて格納されているOffsetの値もパケットの揺らぎなどによる影響が小さい。このようにパケットの揺らぎなどによる影響が小さいOffsetの値でスレーブノード20のスレーブ時刻を補正することによって、パケットの揺らぎなどによる影響を軽減し、時刻同期の精度を向上することが可能となる。
【0053】
<変形例>
一台のマスターノード10に対してスレーブノード20が複数台で接続して構成されても良い。
また、本実施例では、マスターノード10とスレーブノード20との間で送受信されるメッセージとしてPTPメッセージを示したが、これに限定される必要はない。例えば、NTP(Network Time Protocol)メッセージやSNTP(Simple Network Time Protocol)メッセージなどのメッセージが用いられても良いし、その他のメッセージが用いられても良い。
【0054】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0055】
10…マスターノード, 20…スレーブノード, 11…マスタークロック生成部, 12…時計部, 13…パケット生成部, 14…通信部, 21…スレーブクロック生成部, 22…時計部, 23…通信部, 24…制御部, 25…演算部, 26…時間情報記憶部(記憶部), 27…判定部, 28…選択部, 29…時刻補正部
図1
図2
図3
図4