(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-08-12
(45)【発行日】2022-08-22
(54)【発明の名称】クロック処理装置及びプログラム
(51)【国際特許分類】
H04L 7/00 20060101AFI20220815BHJP
【FI】
H04L7/00 990
H04L7/00 120
(21)【出願番号】P 2021144808
(22)【出願日】2021-09-06
【審査請求日】2021-09-06
(73)【特許権者】
【識別番号】313006647
【氏名又は名称】セイコーソリューションズ株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】特許業務法人太陽国際特許事務所
(72)【発明者】
【氏名】倉田 陽介
【審査官】北村 智彦
(56)【参考文献】
【文献】特開2016-25474(JP,A)
【文献】特開2010-28684(JP,A)
【文献】特開2020-91134(JP,A)
【文献】特許第7047164(JP,B1)
【文献】特開2020-9165(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 7/00
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
現在の時刻情報を出力するクロック部と、
参照クロック発信装置から参照クロックの時刻情報を含む第1メッセージを受信し、
前記参照クロック発信装置へ、前記クロック部が出力する時刻情報を含む第2メッセージを送信し、
前記第2メッセージを受信した時の前記参照クロックの時刻情報を受信する通信部と、
前記第1メッセージ及び前記第2メッセージの組み合わせの各々について、前記第1メッセージに含まれる参照クロックの時刻情報と、前記第1メッセージを受信した時に前記クロック部が出力した時刻情報との差分である第1片方向遅延時間、及び前記第2メッセージに含まれる時刻情報と、前記第2メッセージを受信した時の前記参照クロックの時刻情報との差分である第2片方向遅延時間の和を、往復遅延時間として計算する往復遅延時間計算部と、
前記計算された往復遅延時間から、前記往復遅延時間の極小時間を算出する極小往復遅延時間算出部と、
前記往復遅延時間の極小時間から、前記往復遅延時間が極小時間となる前記組み合わせでの第1片方向遅延時間である第1の一時基準遅延時間及び第2片方向遅延時間である第2の一時基準遅延時間を算出する一時基準遅延算出部と、
計算対象となる前記組み合わせでの前記第1片方向遅延時間と、前記第1の一時基準遅延時間との差分である第1片方向遅延差、及び前記計算対象となる前記組み合わせでの前記第2片方向遅延時間と、前記第2の一時基準遅延時間との差分である第2片方向遅延差を算出する遅延差算出部と、
前記算出した前記第1片方向遅延差及び前記第2片方向遅延差と、前記第1の一時基準遅延時間及び前記第2の一時基準遅延時間とから、前記第1片方向遅延時間の参考値及び前記第2片方向遅延時間の参考値を算出する参考値算出部と、
前記第1片方向遅延時間の参考値及び前記第2片方向遅延時間の参考値に応じて定められる比率と、前記計算対象となる前記組み合わせでの前記往復遅延時間とから、前記計算対象となる前記組み合わせでの前記第1片方向遅延時間又は前記第2片方向遅延時間を算出する遅延時間推定部と、
を含むクロック処理装置。
【請求項2】
前記遅延時間推定部は、前記第1片方向遅延時間の参考値、前記第2片方向遅延時間の参考値、及び簡約定数を用いて、前記比率として、前記第1片方向遅延時間を算出するための第1比率、又は前記第2片方向遅延時間を算出するための第2比率を決定し、
前記第1比率と、前記計算対象となる前記組み合わせでの前記往復遅延時間とから、前記計算対象となる前記組み合わせでの前記第1片方向遅延時間を算出するか、又は前記第2比率と、前記計算対象となる前記組み合わせでの前記往復遅延時間とから、前記計算対象となる前記組み合わせでの前記第2片方向遅延時間を算出する請求項1記載のクロック処理装置。
【請求項3】
前記遅延差算出部は、前記計算対象となる前記組み合わせ及び前記往復遅延時間が極小時間となる前記組み合わせの各々についての、前記第1メッセージに含まれる参照クロックの時刻情報と、前記第1メッセージを受信した時に前記クロック部が出力した時刻情報と、前記第2メッセージに含まれる時刻情報と、前記第2メッセージを受信した時の前記参照クロックの時刻情報とに基づいて、前記第1片方向遅延差、及び前記第2片方向遅延差を算出する請求項1又は2記載のクロック処理装置。
【請求項4】
前記一時基準遅延算出部は、前記往復遅延時間の極小時間から、予め定められた比率を用いて、前記第1の一時基準遅延時間及び前記第2の一時基準遅延時間を算出する請求項1~請求項3の何れか1項記載のクロック処理装置。
【請求項5】
前記遅延時間推定部によって推定された前記第1片方向遅延時間と、前記第1メッセージに含まれる参照クロックの時刻情報と、前記第1メッセージを受信した時に前記クロック部が出力した時刻情報とを用いて、前記クロック部が出力する時刻情報と、前記参照クロックの時刻情報との現在の時差を計算する時差計算部と、
前記現在の時差に基づいて、前記クロック部に対する現在の歩度を決定する歩度決定部と、
を更に含む請求項1~請求項4の何れか1項記載のクロック処理装置。
【請求項6】
コンピュータを、請求項1~請求項5のいずれか1項に記載のクロック処理装置の各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クロック処理装置及びプログラムに係り、特に、自装置のクロックを調整するためのクロック処理装置及びプログラムに関する。
【背景技術】
【0002】
従来より、参照クロックからの時刻情報を取得して自装置の精密なクロックを合わせ、配下の装置に対して時刻を配信するタイムサーバがある。
【0003】
タイムサーバは参照クロックから時刻情報を受信し、自クロックと参照クロックの時差を確認する。通常は時差に基づいた計算によって、自クロックの現在歩度を決定する。
【0004】
また、非特許文献1では、RTT(Round-Trip Time)を利用した実践的な片方向遅延の推定手法が開示されている。非特許文献1ではTCP(Transimission Control Protocol)プロトコル全般を対象として片方向遅延を推定している。TCPには再送のためのRetransmission Time Out(RTO)の仕組みがあり、RTO設定のためにRTTを計測している。また、特許文献1では、2つの内部クロックを用いて片方向遅延を推定している。
【先行技術文献】
【非特許文献】
【0005】
【文献】Choi, J.-H. and Yoo, C. One-way delay estimation and its application. Computer Communications, Vol. 28,No. 7, pp. 819-828, 2005.
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
NTP(Network Time Protocol)やPTP(Precision Time Protocol)で利用しているパケット交換方式での時刻同期では、サーバからクライアントへの片方向遅延と両者の時差を知るために
図12のようなサーバ・クライアント間のタイムスタンプのやり取りをする。この交換方式を便宜上、T
1-T
4方式と呼ぶ。
【0008】
この方式では片方向遅延時間は
(1)
と計算する。計算には最新のt
1、T
2、T
3、t
4が必要であり、その計算ができるようになるのはt
4が取得された直後である。
【0009】
T
1-T
4方式では、片方向遅延は上りと下りで同一であると想定している。t
4が分かった時点でt
1、T
2、T
3、t
4のすべてが分かっているので、その時点でのサーバとクライアントの時差O(t
4)は、
のように計算する。したがって片方向遅延時間が上りと下りで異なる場合は正しくない時差になる。しかしながら、この方式ではサーバとクライアントのクロックが合っていなくともそれなりに正確な片方向遅延が得られる。
【0010】
特にNTPの場合は時刻同期の確度・精度として1ミリ秒程度を想定していることもあり、きわめて遠方のサーバでなければこのような片方向遅延の計算誤差は無視できることが多い。しかしながら、PTPの場合は無視できないほど大きいことがほとんどである。
【0011】
本発明は、上記問題点を解決するために成されたものであり、片方向遅延時間が上りと下りで異なる場合であっても、精度よく片方向遅延時間を求めることができるクロック処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記目的を達成するために、本発明に係るクロック処理装置は、現在の時刻情報を出力するクロック部と、参照クロック発信装置から参照クロックの時刻情報を含む第1メッセージを受信し、前記参照クロック発信装置へ、前記クロック部が出力する時刻情報を含む第2メッセージを送信し、前記第2メッセージを受信した時の前記参照クロックの時刻情報を受信する通信部と、前記第1メッセージ及び前記第2メッセージの組み合わせの各々について、前記第1メッセージに含まれる参照クロックの時刻情報と、前記第1メッセージを受信した時に前記クロック部が出力した時刻情報との差分である第1片方向遅延時間、及び前記第2メッセージに含まれる時刻情報と、前記第2メッセージを受信した時の前記参照クロックの時刻情報との差分である第2片方向遅延時間の和を、往復遅延時間として計算する往復遅延時間計算部と、前記計算された往復遅延時間から、前記往復遅延時間の極小時間を算出する極小往復遅延時間算出部と、前記往復遅延時間の極小時間から、前記往復遅延時間が極小時間となる前記組み合わせでの第1片方向遅延時間である第1の一時基準遅延時間及び第2片方向遅延時間である第2の一時基準遅延時間を算出する一時基準遅延算出部と、計算対象となる前記組み合わせでの前記第1片方向遅延時間と、前記第1の一時基準遅延時間との差分である第1片方向遅延差、及び前記計算対象となる前記組み合わせでの前記第2片方向遅延時間と、前記第2の一時基準遅延時間との差分である第2片方向遅延差を算出する遅延差算出部と、前記算出した前記第1片方向遅延差及び前記第2片方向遅延差と、前記第1の一時基準遅延時間及び前記第2の一時基準遅延時間とから、前記第1片方向遅延時間の参考値及び前記第2片方向遅延時間の参考値を算出する参考値算出部と、前記第1片方向遅延時間の参考値及び前記第2片方向遅延時間の参考値に応じて定められる比率と、前記計算対象となる前記組み合わせでの前記往復遅延時間とから、前記計算対象となる前記組み合わせでの前記第1片方向遅延時間又は前記第2片方向遅延時間を算出する遅延時間推定部と、
を含んで構成されている。
【0013】
この発明によれば、計算対象となる前記組み合わせでの前記第1片方向遅延時間と、前記往復遅延時間が極小時間となる前記組み合わせでの前記第1の一時基準遅延時間との差分である第1片方向遅延差、及び前記計算対象となる前記組み合わせでの前記第2片方向遅延時間と、前記往復遅延時間が極小時間となる前記組み合わせでの前記第2の一時基準遅延時間との差分である第2片方向遅延差を算出し、前記算出した前記第1片方向遅延差及び前記第2片方向遅延差と、前記第1の一時基準遅延時間及び前記第2の一時基準遅延時間とから、前記第1片方向遅延時間の参考値及び前記第2片方向遅延時間の参考値を算出し、前記第1片方向遅延時間の参考値及び前記第2片方向遅延時間の参考値に応じて定められる比率と、前記計算対象となる前記組み合わせでの前記往復遅延時間とから、前記計算対象となる前記組み合わせでの前記第1片方向遅延時間又は前記第2片方向遅延時間を算出することにより、片方向遅延時間が上りと下りで異なる場合であっても、精度よく片方向遅延時間を求めることができる。
【0014】
また、前記クロック処理装置において、前記遅延時間推定部は、前記第1片方向遅延時間の参考値、前記第2片方向遅延時間の参考値、及び簡約定数を用いて、前記比率として、前記第1片方向遅延時間を算出するための第1比率、又は前記第2片方向遅延時間を算出するための第2比率を決定し、前記第1比率と、前記計算対象となる前記組み合わせでの前記往復遅延時間とから、前記計算対象となる前記組み合わせでの前記第1片方向遅延時間を算出するか、又は前記第2比率と、前記計算対象となる前記組み合わせでの前記往復遅延時間とから、前記計算対象となる前記組み合わせでの前記第2片方向遅延時間を算出することができる。ここで、簡約定数とは、前記第1片方向遅延時間の参考値及び前記第2片方向遅延時間の参考値を簡約化するために用いられる定数である。
【0015】
また、前記クロック処理装置において、前記遅延差算出部は、前記計算対象となる前記組み合わせ及び前記往復遅延時間の極小時間となる前記組み合わせの各々についての、前記第1メッセージに含まれる参照クロックの時刻情報と、前記第1メッセージを受信した時に前記クロック部が出力した時刻情報と、前記第2メッセージに含まれる時刻情報と、前記第2メッセージを受信した時の前記参照クロックの時刻情報とに基づいて、前記第1片方向遅延差、及び前記第2片方向遅延差を算出することができる。
【0016】
また、前記クロック処理装置において、前記一時基準遅延算出部は、前記往復遅延時間の極小時間から、予め定められた比率を用いて、前記第1の一時基準遅延時間及び前記第2の一時基準遅延時間を算出することができる。
【0017】
また、前記クロック処理装置において、前記遅延時間推定部によって推定された前記第1片方向遅延時間と、前記第1メッセージに含まれる参照クロックの時刻情報と、前記第1メッセージを受信した時に前記クロック部が出力した時刻情報とを用いて、前記クロック部が出力する時刻情報と、前記参照クロックの時刻情報との現在の時差を計算する時差計算部と、前記現在の時差に基づいて、前記クロック部に対する現在の歩度を決定する歩度決定部と、を更に含むことができる。
【0018】
ここで、歩度とは、クロックの進み又は遅れの度合いであり、例えば、1秒あたりに速くする又は遅くする長さ(ナノ秒)である。
【0019】
また、本発明のプログラムは、コンピュータを、本発明のクロック処理装置の各部として機能させるためのプログラムである。
【発明の効果】
【0020】
本発明によれば、片方向遅延時間が上りと下りで異なる場合であっても、精度よく片方向遅延時間を求めることができる。
【図面の簡単な説明】
【0021】
【
図1】片方向遅延時間、往復遅延時間を説明するための図である。
【
図2】Syncメッセージ、Delay_Reqメッセージ、Delay_Respメッセージを説明するための図である。
【
図3】メッセージを受信する毎に算出される片方向遅延時間の一例を示す図である。
【
図4】Syncメッセージ、Delay_Reqメッセージ、Delay_Respメッセージのやり取りの一例を示す図である。
【
図5】片方向遅延時間、往復遅延時間の一例を示す図である。
【
図6】メッセージ毎の送受信時間の経過を示す図である。
【
図7】本発明の実施の形態に係るクロック調整システムの一例を示す図である。
【
図8】本発明の実施の形態に係るクロック処理装置の構成を示すブロック図である。
【
図9】本発明の実施の形態に係るクロック処理装置の遅延時間推定部の構成を示すブロック図である。
【
図10】本発明の実施の形態に係るクロック処理装置のクロック制御処理のフローチャートを示す図である。
【
図11】本発明の実施の形態に係るクロック処理装置のクロック制御処理における遅延時間を推定する処理のフローチャートを示す図である。
【
図12】サーバ・クライアント間のタイムスタンプのやり取りの一例を示す図である。
【発明を実施するための形態】
【0022】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0023】
[本発明の実施の形態の原理]
まず、本発明の実施の形態の原理を説明する。
【0024】
PTPはNTPと同様のクライアントサーバ型の時刻同期プロトコルであり、参照クロック発信装置としてのPTPグランドマスター(PTPマスターとも称する)とPTPスレーブは、数ナノ秒から数十ナノ秒程度の確度・精度で時刻同期することができる。PTPがこのような確度・精度で時刻同期できるのは、グランドマスターやスレーブが、揺らぎが極めて小さいハードウェアによるタイムスタンプを利用しているのが大きい。
【0025】
また、このような同期確度・精度を維持するためにはグランドマスターとスレーブ間の中間ネットワーク中継装置(ルータ/L3スイッチやL2スイッチ)がすべてPTPに対応していなければならない。しかしながら、このようにすべての機器をPTP対応にするのは一般的にはハイコストである。特に自身で管理しているLAN(Local Area Network)内をPTP対応にするのはまだ容易であるが、自身の管理外のネットワークがグランドマスターとスレーブの間に挿まれている場合はすべてをPTP対応にするのは難しい。
【0026】
PTPを流すネットワークのすべての中継装置がPTPに対応しているネットワークのことをPTP awareネットワークと呼び、そうでないネットワークをPTP unawareネットワークと呼ぶ。PTP unawareネットワークでPTPを運用する場合、グランドマスターとスレーブがハードウェア・タイムスタンプに対応していたとしても中間ネットワークで確度・精度低下が起こり、一般的にはNTPと同程度の同期精度に低下する可能性がある。ただし、中間ネットワークがPTPには対応していないが低レンテンシであるL2スイッチ数台程度という場合は十分な確度・精度を確保できる可能性は高い。
【0027】
以上に鑑み、本実施の形態ではPTP unawareネットワークにおいてPTPマスターとPTPスレーブの同期確度・精度低下を防ぐための新しい手法を提案する。PTPプロトコルではPTPマスターとPTPスレーブ間で同期のためにタイムスタンプ・メッセージがやり取りされる。このタイムスタンプによって常に片方向遅延の差が計測できる。本実施の形態ではこの片方向遅延の差をもとに正しい片方向遅延時間(One-way delay)を推定する。特にPTP unawareネットワークにおいては、従来の方法に対して比較的正確な片方向遅延時間を推定することが可能となり、結果的に時刻同期の確度精度を高めることができる。
【0028】
<先行研究>
非特許文献1、2では、RTTを利用した実践的な片方向遅延の推定手法を提案している。非特許文献1は、本実施の形態においてターゲットとしている時刻同期プロトコルではなく、TCPプロトコル全般を対象として片方向遅延を推定している。
【0029】
[非特許文献2]Kim, D. and Lee, J. One-way delay estimation without clock sychronization. IEICE Electronics Express, Vol. 4, No. 23, pp. 717-723, 2007.
【0030】
非特許文献2は、非特許文献1の推定精度をさらに引き上げる手法を提案している。
【0031】
図1は、非特許文献1、2の手法を理解するための図である。ホストAとホストB間のメッセージのやり取りを示している。
【0032】
図1において、t
A、t
BはそれぞれホストAのクロックでの時間、ホストBのクロックでの時間をそれぞれ表しており、ホストAとホストBのクロックは同期しているとは限らない。以降、便宜上ホストAのクロックが“正しい”クロックであるとする。また、以下のようにそれぞれの量を定義する。
【0033】
tA(n)は、n番目のメッセージがホストAから送信された時のホストAクロックの示す時間である。すなわち、tA(n)は、n-1番目の返信をホストBから受信した時間である。
【0034】
tB(n)は、n番目のメッセージがホストBで受信された(と同時にホストAに向けて返信された)時のホストBクロックの示す時間である。
【0035】
-tB(n)は、n番目のメッセージがホストBで受信された時の正しい時間(ホストAクロックでの時間)である。ここで、図や式中でのバー付きの変数Xは、-Xと表記する。
【0036】
-DAB(n)は、n番目のメッセージのホストAからホストBに届くまでの片方向遅延時間である。すなわち、-DAB(n)=-tB(n)-tA(n)である。
【0037】
-DBA(n)は、n番目のメッセージに対する返信がホストBからホストAに届くまでの片方向遅延時間である。すなわち、-DBA(n)=tA(n+1)--tB(n)である。
【0038】
RA(n)は、n番目のメッセージのホストAクロックによるRTTである。すなわち、RA(n)=tA(n+1)-tA(n)である。
【0039】
RB(n)は、n番目のメッセージ返信のホストBクロックによるRTTである。すなわち、RB(n)=tB(n+1)-tB(n)である。
【0040】
-RB(n)は、n番目のメッセージ返信の正しい時間(ホストAクロック)によるRTTである。すなわち、-RB(n)=-tB(n+1)--tB(n)=-DBA(n)+-DAB(n+1)である。
【0041】
OB(n)は、n番目のメッセージをホストBで受信された時のホストBクロックと正しい時間(ホストAクロック)との時差である。すなわち、OB(n)=-tB(n)-tB(n)である。
【0042】
ここで、重要となる考え方が、RTTのような長くとも100ミリ秒程度の時間であれば、ホストAクロックとホストBクロックでの経過時間の差が無視できるほど小さいことである。
図1であれば、
が成立すると考える。このように仮定するとRTTによってそれぞれの方向の真の片方向遅延差
-J
A(n)、
-J
B(n)を以下のように近似計算できる。
【0043】
【0044】
JA(n)=RB(n)-RA(n)、JB(n)=RA(n+1)-RB(n)と定義する。以上により片方向遅延差が計算できるのだから、初期の片方向遅延時間-DAB(0)あるいは-DBA(0)が分かれば、すべての片方向遅延時間が確定する。
【0045】
しかしながら、初期の片方向遅延時間はRTTからは分からず、非特許文献1では以下のように3つのケースに分けてそれぞれ-DAB(0)の取りうる範囲が決まる。
【0046】
Case1:
-D
AB(0)>
-D
BA(0)の場合:
【0047】
Case2:
-D
AB(0)<
-D
BA(0)の場合:
【0048】
Case3:
-D
AB(0)=
-D
BA(0)の場合:
【0049】
その上で、複数サンプルにおいて-DAB値がRTTの70%以上であれば、Case1の範囲の中点(RA(1)-RB(1)+RB(0)+2RA(0))/4を-DAB(0)として採用し、30%以下であればCase2の範囲の中点(RA(1)-RB(1)+RB(0))/2を-DAB(0)として採用し、どちらでもなければRA(0)/2を-DAB(0)として採用する。
【0050】
一方、非特許文献2では、まずR
A(n)計測とR
A(n+1)計測が短い時間内で行われている場合、ホストBクロックの正しい時刻との時差がほとんど変わらない、すなわち、
が成立することも仮定する。そしてJ
A(n)およびJ
B(n)に注目する。もし、
(2)
が成り立てば、まず以下のように比例配分値を仮置きする。
【0051】
【0052】
もし、この時、ホストAとホストBのクロックが同期していれば、
A(n)=tB(n)-tA(n)
B(n)=tA(n+1)-tB(n)
A(n+1)=tB(n+1)-tA(n+1)
B(n+1)=tA(n+2)-tB(n+1)
(3)
が成立する。非特許文献2ではホストAとホストBのクロックが同期していない場合であっても式(3)が成立すると仮定すると、条件(2)は誤差込みで成立していると考える。
【0053】
次に同期していない場合に式(3)が成立すると仮定したうえで、推定時差O
B.est(n)を、
(4)
とする。そのうえで
-D
AB(n)=A(n)+O
B.est(n)
-D
BA(n)=B(n)-O
B.est(n)
-D
AB(n+1)=A(n+1)+O
B.est(n)
-D
BA(n+1)=B(n+1)-O
B.est(n)
とする。本アイデアで重要となるのは、式(3)が成立し、式(4)が成立する範囲にホストBクロックとの時差が収まっていることである。これに対して非特許文献2では、以下の判定条件1)~3)を提案している。
【0054】
1)RA(n)、RB(n)、RA(n+1)が正常に取得できていること。
【0055】
2){JA(n)>0かつJB(n)>0}あるいは{JA(n)<0かつJB(n)<0}のどちらかが成立する。
【0056】
3)tA(n)<tB(n)<tA(n+1)<tB(n+1)<tA(n+2)が成立する。
【0057】
実装では、上記の判定条件を満たした場合のみ片方向遅延を計算するとある。確かにこの判定条件は条件(2)を満たすための必要条件ではある。しかし、あまりにも自明であり、この判定条件が片方向遅延時間の推定に直接的な効果を発揮したというよりはDSL回線では多くの場合において上りと下りの遅延比率が概ね決まっており、上記の必要条件が揃えば高い確率で当たると主張しているように思える。
【0058】
しかしながら、式(3)を設定した最初の意図からも分かる通り、要するにホストAとホストBのクロックができるだけ同期しているポイントを選ぶと言っているに過ぎない。こういう考え方は時刻同期のための方法としては不適切となる。
【0059】
<PTPにおける用語定義および性質>
時刻同期プロトコルにおける片方向遅延時間の単純計算の方法は、上記式(1)に示した通りである。PTPの場合、具体的には
図2のようにSyncメッセージとDelay_ReqメッセージとDelay_Respメッセージとを交換している。図中の各種変数は
図1で定義したものを踏襲している。
【0060】
PTPマスターとPTPスレーブ間のn番目のSyncメッセージとm番目のDelay_Reqメッセージ(Delay_Respメッセージ)を使った最も標準的な片方向遅延時間D(n,m)および時差O(n,m)の計算は、
(5)
のようにする。
【0061】
また、実際には
図3のように(t
1,M(),t
2,S())の取得と(t
3,S(),t
4,M())の取得は非同期に行われている。したがって、片方向遅延時間D=D(i,j)はその時点での最新の(t
1,M(),t
2,S(),t
3,S(),t
4,M())で計算することができる。
【0062】
さて、SyncメッセージとDelay_Reqメッセージ(Delay_Respメッセージ)との交換が非同期に実施される場合、n番目のSyncメッセージとm番目のDelay_Reqメッセージを用いた、PTPマスター側の見かけ上のRTTは、以下のようにPTPスレーブ側の応答待ち時間を消去するように計算される。
【0063】
RM(n,m)=(t4,M(m)-t1,M(n))-(t3,S(m)-t2,S(n))
【0064】
ここで、PTPスレーブ側の応答待ち時間はPTPスレーブのクロックで計測していることに注意する。
【0065】
したがって、任意のn,mについて見かけ上のRTTを考えると真のRTTに対して誤差が大きい場合も存在する。出来るだけ正確なRTTを得るためにはSyncメッセージの受信とDelay_Reqメッセージの送信のタイミングが十分に短い必要がある。
【0066】
例えば、PTPスレーブのクロックの歩度がPTPマスターのクロックの歩度に対して±0.1ppmの狂いであった場合、Syncメッセージ、Delay_Reqメッセージともに5番目であるt2,S(5)からt3,S(5)の期間が15ミリ秒ならば、その期間の正しい時間との誤差は±1.5ナノ秒となる。これくらいの誤差ならばPTPとしては無視できるレベルである(信頼できるRTTとなる)が、5番目のSyncメッセージと20番目のDelay_Reqメッセージに対してt2,S(5)からt3,S(20)の期間が30秒であったとすると、同じく正しい時間との誤差は±3マイクロ秒となり、無視できないような値となる。
【0067】
PTPスレーブ側の見かけ上のRTT RS(n,m)も同様に定義されるが、RS(n,m)=(t2,S(n)-t3,S(m))-(t1,M(n)-t4,M(m))であるから、結局
RM(n,m)=RS(n,m)
を得る。これより事実上PTPマスター側、PTPスレーブ側と考える必要がなくなり、RM(n,m)およびRS(n,m)を単純にR(n,m)で表すことにする。以上の結果をまとめて以下の定義を得る。
【0068】
(定義1(信頼できるRTT))
n番目のSyncメッセージの受信タイミングt2,S(n)とm番目のDelay_Reqメッセージの送信タイミングt3,S(m)の差|t3,S(m)-t2,S(n)|について、この差と正しい経過時間との誤差が無視できるほど小さいとき
R(n,m)=(t4,M(m)-t1,M(n))-(t3,S(m)-t2,S(n))
を信頼できるRTTと呼ぶ。
【0069】
上記定義1において、|t3,S(m)-t2,S(n)|の値と正しい経過時間との誤差をできるだけ小さくするためにはPTPマスターのクロックの歩度とPTPスレーブのクロックの歩度の誤差を小さくすることはもちろんであるが、t2,S(n)とt3,S(m)の間にPTPスレーブのクロックの値がStep調整(一般的には線形的に増加するはずのクロックの値を、線形的増加を無視して一気に変更する調整のこと)されないことも重要である。
【0070】
最後に、片方向遅延時間について述べる。上記で述べた各種量の定義をもとにすると、n番目のSyncメッセージの真の片方向遅延時間は-DMS(n)であり、m番目のDelay_Reqメッセージの真の片方向遅延時間は-DSM(m)である。両者については以下の性質がいつでも成り立つ。
【0071】
(性質2)
すべてのn,mに対して必ず
-DMS(n)>0 かつ -DSM(m)>0
が成り立つ。
【0072】
次に真の片方向遅延差(Jitter)-JMは
-JM(n)=-DMS(n+1)--DMS(n)
={(t2,S(n+1)+On+1)-t1,M(n+1)}-
{(t2,S(n)+On-t1,M(n)}
と計算できる。ここでOn+1,Onはそれぞれt2,S(n+1),t2,S(n)時点でのPTPスレーブとPTPマスターのクロックの時差である。
【0073】
t
2,S(n+1)-t
2,S(n)の値とt
2,S(n)からt
2,S(n+1)までの正しい経過時間との差はO
n+1-O
nに等しい。したがって、信頼できるRTTと同様に、t
2,S(n+1)-t
2,S(n)の値とt
2,S(n)からt
2,S(n+1)までの正しい経過時間との差が無視できるほど小さければ
とできる。この時は、
とタイムスタンプ情報だけから計算できる。まとめると以下の定義を得る。
【0074】
(定義3)
1)t2,S(n+1)-t2,S(n)の値とt2,S(n)からt2,S(n+1)までの正しい経過時間との誤差が無視できるほど小さいとき
JM(n)=(t2,S(n+1)-t1,M(n+1))-(t2,S(n)-t1,M(n))
をSyncメッセージの信頼できる片方向遅延差と呼ぶ。
2)t3,S(m+1)-t3,S(m)の値とt3,S(m)からt3,S(m+1)までの正しい経過時間との誤差が無視できるほど小さいとき
JS(m)=(t4,M(m+1)-t3,S(m+1))-(t4,M(m)-t3,S(m))
をDelay_Reqメッセージの信頼できる片方向遅延差と呼ぶ。
また、両メッセージを区別する必要ないときは単に信頼できる片方向遅延差と呼ぶ。
【0075】
<RTTと遅延差列による遅延範囲の推定>
上述した用語と性質を用いるとまず以下の補題が示せる。
【0076】
(補題4)
R(n1,m1),R(n2,m2),...,R(np,mp)がすべて信頼できるRTTとなるn=n1<n2・・・<npおよびm=m1<m2<・・・<mpなる整数が存在し、そのすべてのRTTが分かっているとする。さらにSyncメッセージ、Delay_Reqメッセージそれぞれにおいて任意の2つのメッセージの片方向遅延差が信頼できるとき、
R(i,j)∈{R(n1,m1),R(n2,m2),...,R(np,mp)}
を任意に1つ選ぶと
1)n,n+1,...,np-1,npのうちの-DMS()が最小となる番号kが分かり、-DMS(k)と-DMS(i)との差JM(i,k)も分かる。
2)m,m+1,..,mp-1,mpのうちの-DSM()が最小となる番号lが分かり、-DSM(l)と-DSM(j)との差JS(j,l)も分かる。
【0077】
証明の前に、補題の想定している状況をもう少し詳しく説明しておく。SyncメッセージとDelay_Reqメッセージの両メッセージは一般的には非同期にメッセージのやり取りをしている(
図4)。したがって、任意の番号のSyncメッセージに対して対応するDelay_Reqメッセージが存在しない場合もあれば、逆にSyncメッセージに対して2つ以上のDelay_Reqメッセージを対応させることもできる。よって、対応付けた番号を(n
p,m
p)のように添え字をつけて分かりやすくしているのである。
【0078】
(証明)
補題4の1)について示す。q(≠i)を任意にとる。q>iのとき定義3により、
-D
MS(i)と
-D
MS(q)の差J
MS(i,q)は、i番目とq番目のメッセージの片方向遅延差が信頼できることから、以下のように計算できる。
q<iの場合も同様に計算できる。J
MS(i,n),...,J
MS(i,p)のうちの最小値J
MS(j,k)≦0がD
MS(k)に対応している。
補題4の2)についても同様に示される。
【0079】
(定理5(Valid Delay Range))
補題4と同様の状況を考え、同じ記号を使用する。このとき、n
1,n
1+1,...,n
pおよびm
1,m
1+1,...,m
pに対して性質2が成り立つことと、任意のRTT R(i,j)と最小片方向遅延時間
-D
MS(k)、
-D
SM(l)に対して
J
M(k,i)<
-D
MS(i)<R(i,j)-J
S(l,j)
-D
SM(j)=R(i,j)-
-D
MS(i)
(6)
が成立することは同値である。ただし
である。
【0080】
(定理5の証明)
図5を参照して、定理5を証明する。
【0081】
まず、性質2⇒式(6)を示す。性質2により-DMS(k)>0。-DMS(i)=-DMS(k)+JM(k,i)であるからJM(k,i)<-DMS(i)である。-DSMについても同様に考えてJS(l,j)<-DSM(j)である。
【0082】
-DSM(j)=R(i,j)-DMS(i)⇔DMS(i)=R(i,j)--DSM(j)はRTTの定義から直接成立する。JS(l,j)<-DSM(j)(JS(l,j)>0)であることから-DMS(i)<R(i,j)-JS(l,j)を得る。
【0083】
式(6)⇒性質2を示す。-DMS(k)=-DMS(i)-JM(k,i),(JM(k,i)>0)であるから、式(6)の最初の不等号により-DMS(k)>0である。式(6)の2つ目の不等号と等号式により-DSM(j)>JS(l,j)を得る。-DSM(l)=-DSM(i)-JS(l,j),(JS(l,j)>0)により-DSM(l)>0を得る。-DMS(k)、-DSM(l)がそれぞれの最小値であることから、n1≦∀u≦np、m1≦∀v≦mpに対して-DMS(u)>0かつ-DSM(v)>0が成り立つ。
【0084】
定理5により、片方向遅延時間を、任意の信頼できるRTT R(i,j)を基準にしてそこからの差分で求めることも可能となる。
【0085】
(系6)
定理5と同様の状況を考え、同じ記号を使用する。DMS(i)を、定理5を満たす存在範囲内のある値に固定する。したがってDSM(j)=R(i,j)-DMS(i)である。このとき、任意のu,v(n1≦u≦np,m1≦v≦mp)に対して、
DMS(u)=DMS(i)+JM(i,u)
DSM(v)=DSM(j)+JS(j,v)
と、組(i,j)を基準にDMS(u)、DSM(v)を計算することができる。
【0086】
<歩度調整のための片方向遅延計算>
周波数オフセットの補正と上りと下りの片方向遅延の変化の検出を両立させるために従来の方法と系6の手法を組み合わせた方法を利用する。まず以下の定義を導入する。
【0087】
(定義7)
現在時刻tから過去に向かって与えられた時間(期間)Itempのうちの最小の信頼できるRTT、すなわち
TMR(t,Itemp)=min R(n,m)|R(n,m)は信頼でき、
t-Itemp≦t1,M(n)≦t}
のことを一時極小Round-trip time(Temporary Minimal Round-trip time)あるいは一時極小RTTと呼ぶ。
【0088】
例えば、Itemp=1分とすると、一時極小RTTとは現在時刻から過去1分以内に計算された信頼できるRTTのうちの最小値を表す。
【0089】
一般的に、一時極小RTTについては、上り・下りの各々の中間転送装置のQueuing delayが最も少なかった可能性が高い。したがって、上り・下りで同一経路であった場合はその遅延値は一時極小RTTを上り・下りのネットワーク仕様上の比率で配分した値に近い。例えば有線LANにおいては上りと下りの比はおよそ1:1であろうし、モバイルネットワークにおいては下り:上り=a:bでa<bとなることが想像できる。
【0090】
一時極小RTTから一時基準Sync遅延を計算する。
【0091】
(定義8)
マスターとスレーブ間のネットワーク仕様上の下り(Sync側)・上り(Delay Req側)の遅延比率をa:bとするとき、一時極小RTTをもとにした一時基準遅延(Temporary Delay Base)とは、
のことである。TD
MSを一時基準Sync遅延、TD
SMを一時基準Delay Req遅延と呼ぶ。
【0092】
一時基準遅延は信頼できるRTTから計算しているが、信頼できるRTTの計算においてはマスターとクロックの周波数オフセットの影響はほとんど受けないことに注意する。
【0093】
次に、一時基準遅延から現在の片方向遅延時間を計算する方法を考える。スレーブの歩度調整値は式(8)のように時差解消部分r
P(t)と周波数オフセットr
I(t)の和になっている。時刻tにおいて周波数オフセットがマスターと合っていると仮定すると、スレーブのクロックは
だけ歩度調整された状態で動作していると言える。
【0094】
図6を例にとって考える。
R(n
0,m
0)が一時極小RTTと仮定する。さらにt
2,S(n
0)からt
3,S(m
1)までの任意の時刻tにおいてスレーブでの歩度調整は変更されなかったものとし、r
I(t)はマスターと合っているとする。この時、t
2,S(n
0)からt
2,S(n
1)までの経過時間、t
3,S(n
0)からt
3,S(n
1)までの経過時間に関しては、
が成り立つ。周波数ドリフトが合っているということは信頼できる期間であるから、信頼できる片方向遅延差は次のように計算できる。
【0095】
【0096】
続いて、一時基準遅延はそれぞれ
(8)
と計算できる。
【0097】
R(n1,m1)が新たな一時極小RTTとならない、すなわちR(n1,m1)>R(n0,m0)かつt2,S(n0)がt3,S(m1)を起点とした有効期間内ならば、系6を利用して一時基準遅延からn1番目、m1番目時点の片方向遅延時間を
^DMS(n1)=DMS(n0)+JM(n0,n1)
^DSM(m1)=DSM(m0)+JS(m0,m1)
(9)
と計算できる。しかしながら、実際には周波数オフセットrIは正しいとは限らない。さらに、上述した通りこの結果をそのまま利用するとマスター・スレーブのクロック時差の変化が分からない。したがって^DMS(n1)および^DSM(m1)の結果を参考にR(n1,m1)を比例配分して上り・下りの伝送遅延を決定する。
【0098】
(アルゴリズム9(OWD Approximation))
現在時刻をtとし、t=max{t2,S(n1),t3,S(m1)}とする。期間Itempに対して一時極小RTTはTMR(t,Itemp)=R(n0,m0)であったとする。したがって、DMS(n0)=TDMS(t,Itemp)であり、DSM(m0)=TDSM(t,Itemp)である。またR(n1,m1)は信頼できるものとする。この時、以下の手順でn1番目Syncの片方向遅延時間DMS(n1)およびm1番目のDelayReqの片方向遅延時間DSM(m1)を計算する。
【0099】
1)片方向遅延差を式(7)の方法で計算し、n1番目Syncメッセージの片方向遅延時間の参考値^DMS(n1)およびm1番目DelayReqメッセージの片方向遅延時間の参考値^DSM(m1)を式(9)の方法で計算する。
【0100】
2)簡約定数C
errをmin{^D
MS(n
1),^D
SM(m
1)}>C
err>1を満たすように与える。^D
MS(n
1)/C
errおよび^D
SM(m
1)/C
errの小数以下を四捨五入し整数に丸める。すなわち、
(10)
とする。
【0101】
3)信頼できるRTT R(n
1,m
1)に対して、
(11)
とする。
【0102】
本アルゴリズムについて解説する前にクロック安定度について注意する。PTPにおいては歩度調整のためのフィードバック・ループは離散的に動作しており、例えば1秒程度の間隔で動作している。すなわちスレーブの歩度は、設定上は連続的には変化せず1秒間は決まった値でクロックを進める。スレーブの内蔵クロックの安定度が5ppmであった場合、1秒間に最大5マイクロ秒クロックが狂う可能性がある。周波数オフセットの調整が働いていればこの狂いはもっと小さく、例えば1マイクロ秒程度に抑えられることになる。
【0103】
具体的な値を用いて本アルゴリズムを解説する。アルゴリズムにおいてタイムスタンプや片方向遅延差の計算がナノ秒単位で行われているとし、タイムスタンプからの計算結果が
DMS(n0)=2,000,000(ナノ秒)
DSM(m0)=2,000,000(ナノ秒)
JM(n0,n1)=350,620(ナノ秒)
JS(m0,m1)=-420(ナノ秒)
R(n1,m1)=4,350,250(ナノ秒)
であったとする。ここでは、上り・下りの片方向遅延は対称であると仮定して一時極小RTT R(n0,m0)を1:1に比例配分している。次に手順1)により、
^DMS(n1)=2350620
^DSM(m1)=1999580
【0104】
R(n
0,m
0)取得時からR(n
1,m
1)取得時までの経過時間が1秒程度であった場合、上の注意で述べたようにスレーブ・クロックの狂いは±1マイクロ秒程度以下であると考えられる。したがって簡約定数Cerrを例えば2,000(ナノ秒)に設定することでクロックの狂いよりも遥かに大きなSyncの片方向遅延時間の増加を加味した下り・上りの参考比率を計算する。
【0105】
最後にR(n
1,m
1)を1175:1000=47:40に比例配分して、各々の片方向遅延時間を得る。
【0106】
従来の計算方法では、R(n1,m1)を1:1に比例配分するため、DMS(n1)=DSM(m1)=2,175,125(ナノ秒)となるが、これは真の値から100マイクロ秒以上間違っている可能性が高い。
【0107】
この例では簡約定数Cerrをクロック安定度から決定したがそうでなくとも良い。例えばクロック安定度は0.01ppm程度であるが、クロック同期精度は1マイクロ秒程度で良い場合、簡約定数は大きく取りCerr=1000としても良い。
【0108】
最後に、本アルゴリズムは一時基準遅延の有効期間Itempと簡約定数Cerrを変更することで結果をコントロールするものであるが、有効期間を0に設定すれば毎回の信頼できるRTT計算から一時基準遅延が計算されるようになる。すなわち既存の片方向遅延計算と同じになる。
【0109】
<片方向遅延の検査と補正>
上述したように、スレーブ・クロックの周波数オフセットが適切にメンテナンスされていれば、定理5のための片方向遅延差を信頼できる期間を長くとることができる。
【0110】
定理5における信頼できる期間が長ければ長いほど、最小片方向遅延を更新できる可能性が高く、またその情報を長い期間利用できる。よって、定理5で得られる片方向遅延時間の存在範囲の情報を、片方向遅延時間の推定結果の検証および補正に利用する。
【0111】
(アルゴリズム(OWD Check and Correct))
現在時刻をtとし、t=max{t2,S(n1),t3,S(m1)}とし、片方向遅延時間の推定に使用する下りと上りの遅延比をa:bとする。また、定理5に使用する片方向遅延差は式(12)のようにスレーブの歩度を加味した計算を使う。ただし、rT(t)は、歩度調整値であり、後述する時差解消歩度rP(t)と固有歩度rI(t)を用いて、rT(t)=rP(t)/(1+rI(t))で表される。
【0112】
【0113】
この時、以下の手順でSyncメッセージの片方向遅延時間の検査と補正を行う。
【0114】
1)片方向遅延時間の推定処理を実行し、DMS(n1),DSM(m1)を計算する。
【0115】
2)定理5を利用し、真の片方向遅延時間-DMS(n1)の存在範囲を計算する。
【0116】
3)DMS(n1)が2)の存在範囲に含まれている場合はDMS(n1)をn1番目のSyncメッセージの片方向遅延時間として出力し終了する。存在範囲に含まれていなければ次の手順に進む。
【0117】
4)片方向遅延時間の推定に使用する下りと上りの遅延比a:bを、DMS(n1)が2)の存在範囲に含まれるように変更する。変更した比を改めてa:bとし上記手順1)に戻る。
【0118】
手順2)、3)をCheckフェーズ、手順4)をCorrectフェーズと呼ぶ。
【0119】
本アルゴリズムにおいては、片方向遅延時間を推定するための遅延比a:bの最適な補正方法については言及しないが、例えば次のような簡易な手順が利用できる。まず、定理5によるSyncメッセージの真の片方向遅延の存在範囲をU<-DMS(n1)<Vとし、片方向遅延時間の推定結果をDMS(n1)とする。
【0120】
1)DMS(n1)≦Uならば、a+1:bを新たな遅延比a:bとする。
【0121】
2)V≦DMS(n1)ならば、a:b+1を新たな遅延比a:bとする。
【0122】
上記の手順をU<DMS(n1)<Vを満たすまで繰り返せば良い。
【0123】
<本発明の実施の形態のシステム構成>
本発明の実施の形態に係るクロック調整システムの構成について説明する。
図7に示すように、本発明の実施の形態に係るクロック調整システム100は、クロック処理装置10と、参照クロック発信装置16とを備えており、クロック処理装置10と参照クロック発信装置16とはネットワークを介して接続されている。
【0124】
参照クロック発信装置16は、参照クロックの時刻情報を発信するサーバ装置である。参照クロック発信装置16の具体的な態様についての説明は省略するが、参照クロック発信装置16は、参照クロックを有し、参照クロックの時刻情報を、ネットワークを介して配信する。
【0125】
本実施の形態におけるクロック処理装置10は、CPUと、RAMと、後述する各種処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。このクロック処理装置10は、機能的には
図8に示すように、通信部20と、自システムクロック部24と、片方向遅延差計算部26と、RTT取得部28と、片方向遅延範囲更新部30と、遅延時間推定部32と、判定部34と、補正部36と、時差計算部38と、自システムクロック制御部40とを備えている。なお、RTT取得部28は、往復遅延時間計算部の一例であり、自システムクロック制御部40は、歩度決定部の一例である。
【0126】
通信部20は、ネットワークを介して、参照クロック発信装置16との間でメッセージを送受信する。
【0127】
具体的には、通信部20は、参照クロック発信装置16から参照クロックの時刻情報を含む第1メッセージ(Syncメッセージ)を受信する。通信部20は、参照クロック発信装置16へ、自システムクロック部24が出力する時刻情報を含む第2メッセージ(Delay_Reqメッセージ)を送信する。通信部20は、参照クロック発信装置16から、第2メッセージを受信した時の参照クロックの時刻情報を含む第3メッセージ(Delay_Respメッセージ)を受信する。
【0128】
自システムクロック部24は、現在の歩度に基づいて自クロックの時刻情報を決定して、通信部20に出力する。なお、自システムクロック部24は、クロック部の一例である。
【0129】
また、自クロックの時刻情報をクライアント端末に配信する、という利用法が応用として考えられる場合には、ネットワークを介して、自システムクロック部24から出力された自クロックの時刻情報を、クライアント端末へ送信する。
【0130】
片方向遅延差計算部26は、Syncメッセージに含まれる参照クロックの時刻情報と、Syncメッセージを受信した時に自システムクロック部24が出力した時刻情報との差分を、仮の第1片方向遅延時間とし、仮の第1片方向遅延時間同士の差である第1片方向遅延差を各々計算すると共に、Delay_Reqメッセージに含まれる時刻情報と、Delay_Respメッセージに含まれる、Delay_Reqメッセージを受信した時の参照クロックの時刻情報との差分を、仮の第2片方向遅延時間とし、仮の第2片方向遅延時間同士の差である第2片方向遅延差を各々計算する。
【0131】
具体的には、Syncメッセージ、及びDelay_Reqメッセージ(Delay_Respメッセージ)は非同期に送受信されており、Syncメッセージ受信時にタイムスタンプt1,M,t2,Sを、Delay_Respメッセージ受信時にt3,S,t4,Mを取得できる。片方向遅延差計算部26はそれぞれのメッセージを受信したタイミングで動作する。それぞれのメッセージに対応する片方向遅延差を計算し結果を一時的に保存する。保存した計算結果は後段の処理で利用する。
【0132】
手順にまとめると以下のようになる。
【0133】
1)受信メッセージがSyncメッセージ(t1,M(n),t2,S(n))の場合
a)現在の歩度情報rP、rIを参照し、上記式(12)の方法で、第1片方向遅延差JM(n-1,n)を計算する。
b)第1片方向遅延差JM(n-1,n)を保存する。
c)t1,M(n),t2,S(n)をRTT取得部28に入力し、片方向遅延差計算部26の処理を終了する。
【0134】
2)受信メッセージがDelay_Reqメッセージ(t3,S(m),t4,M(m))の場合
a)現在の歩度情報rP、rIを参照し、上記式(12)の方法で第2片方向遅延差JS(m-1,m)を計算する。
b)第2片方向遅延差JS(m-1,m)を保存する。
c)t3,S(m),t4,M(m)をRTT取得部28に入力し、片方向遅延差計算部26の処理を終了する。
【0135】
RTT取得部28は、計算対象となるSyncメッセージ、Delay_Reqメッセージ、及びDelay_Respメッセージの組み合わせについて、第1片方向遅延時間及び第2片方向遅延時間の和であるRTTを計算するための情報を取得し、RTTを計算する。なお、RTTが、往復遅延時間の一例である。
【0136】
具体的には、受信メッセージのタイムスタンプ情報を利用して信頼できるRTTとなるかをチェックする。
【0137】
PTPにおいてはSyncメッセージ(t1,M(n),t2,S(n))が時刻情報の基礎情報となることから、信頼できるRTTはt1,M(n),t2,S(n)を基準として前後のDelay_Reqメッセージのタイムスタンプ(t3,S(m-1),t4,M(m-1)),(t3,S(m),t4,M(m))から計算する。
【0138】
前後のDelay_Reqメッセージであるから、t3,S(m-1)<t2,S(n)<t3,S(m)を満たしている。この時、
Gp=t2,S(n)-t3,S(m-1)
Gf=t3,S(m)-t2,S(n)
のうち小さい方のタイムスタンプ情報を利用して信頼できるRTTを計算する。例えばGf<Gpであれば、t1,M(n),t2,S(n),t3,S(m),t4,M(m)を使って信頼できるRTTを計算する。実際には後段の処理でタイムスタンプ情報を利用するのでt1,M(n),t2,S(n),t3,S(m),t4,M(m)を片方向遅延範囲更新部30及び遅延時間推定部32に入力する。なお、RTT取得部28でRTTも計算して入力しても良いし、後段の処理でRTTを計算しても良い。
【0139】
ここで、RTTを信頼できる状態にするには単にt2,S(n)の近傍のタイムスタンプを採用するというだけでは不十分であり、Gf(あるいはGp)の長さについても考慮しなければならない。従って、Gfの最大値をユーザーが設定できるようにするのが良い。また、SyncメッセージとDelay_Reqメッセージは非同期に受信するのでt2,S(n)を基準にしたタイムスタンプがすべて揃っているとは限らない。したがって、必要な情報が揃うまで受信したタイムスタンプ情報は一時的に保存し、信頼できるRTTが計算できるt1,M(n),t2,S(n),t3,S(m),t4,M(m)が揃わない限りは処理を終了する。
【0140】
手順にまとめると以下のようになる。
【0141】
1)受信タイムスタンプがt1,M(n),t2,S(n)の場合、両方のタイムスタンプをそれぞれT1,T2として保存し、RTT取得部28の処理を終了し、後段の処理には進まない。
【0142】
2)受信タイムスタンプがt3,S(m),t4,M(m)の場合、保存されている最新のT1,T2,T3,T4を読込み、それぞれt1,M(n),t2,S(n),t3,S(m-1),t4,M(m-1)とする。
a)T3をt3,S(m)で、T4をt4,M(m)で上書き保存する。
b)t2,S(n)≦t3,S(m-1)≦t3,S(m)の場合、RTT取得部28の処理を終了し、後段の処理には進まない。
c)t3,S(m-1)≦t2,S(n)≦t3,S(m)の場合
i)Gp=t2,S(n)-t3,S(m-1)、Gf=t3,S(m)-t2,S(n)を計算する。
ii)Gp<GfかつGp≦(ユーザー設定の許容値)ならば、t1,M(n),t2,S(n),t3,S(m-1),t4,M(m-1)を、片方向遅延範囲更新部30及び遅延時間推定部32に入力し、RTT取得部28の処理を終了する。
iii)Gp≧=GfかつGf≦(ユーザー設定の許容値)ならば、t1,M(n),t2,S(n),t3,S(m),t4,M(m)を片方向遅延範囲更新部30及び遅延時間推定部32に入力し、RTT取得部28の処理を終了する。
iv)min{Gp,Gf}>(ユーザー設定の許容値)ならば、RTT取得部28の処理を終了し、後段の処理には進まない。
【0143】
片方向遅延範囲更新部30は、仮の第1片方向遅延時間の最短時間と、最新の仮の第1片方向遅延時間との差である第1片方向遅延差を計算し、仮の第2片方向遅延時間の最短時間と、最新の仮の第2片方向遅延時間との差である第2片方向遅延差を計算する。片方向遅延範囲更新部30は、RTT取得部28によって取得されたRTTを計算するための情報と、第1片方向遅延差及び第2片方向遅延差とを用いて定められる、第1片方向遅延時間の存在範囲を更新する。
【0144】
具体的には、定理5による-DMS(i)の存在範囲の情報を更新する。現時点から過去Iacc時間以内の片方向遅延差が信頼できると考える。Iaccはユーザー設定の値としても良いし、ドリフト値の変動などから自動計算しても良い。
【0145】
以下の手順で処理する。
【0146】
1)保存済みの第1片方向遅延差の列JM(n-1,n),第2片方向遅延差の列JS(m-1,m)から、過去Iacc以内で第1片方向遅延時間-DMS(k)および第2片方向遅延時間-DSM(l)が各々最小となる番号k,lを求める。最小値が複数ある場合は大きい方(新しい方)の番号を利用する。
【0147】
2)Dmin(i,j)=JM(k,i)、Dmax(i,j)=R(i,j)-JS(l,j)を計算し、それぞれ保存する。
【0148】
3)片方向遅延範囲更新部30の処理を終了する。なお、保存した結果は判定部34から参照され利用される。
【0149】
遅延時間推定部32は、第1片方向遅延時間を推定する。具体的には、
図9に示すように、遅延時間推定部32は、極小往復遅延時間算出部320と、一時基準遅延算出部321と、遅延差算出部322と、参考値算出部324と、推定部326とを備えている。
【0150】
極小往復遅延時間算出部320は、RTT取得部28で計算されたRTTから、所定時間内で最小値となるRTTがあれば、そのRTTを一時極小RTTとする。
例えば、極小往復遅延時間算出部320は、すでに計算され保存済みの信頼できるRTTのうち、所定時間内の最小値のものがあればそれを一時極小RTT R(n,m)とする。また、所定時間内で1つも信頼できるRTTが計算されていない場合、現在時刻tについて信頼できるRTTが計算できるのであれば、入力タイムスタンプt1,M(i),t2,S(i),t3,S(j),t4,M(j)から、信頼できるRTT R(i,j)を計算し、これを一時極小RTT R(n,m)とする。 一時基準遅延算出部321は、一時極小RTTから、一時極小RTTとなる組み合わせでの第1片方向遅延時間である第1の一時基準遅延時間及び第2片方向遅延時間である第2の一時基準遅延時間を算出する。
【0151】
具体的には、一時基準遅延算出部321は、一時極小RTTから、予め定められた比率を用いて、一時極小RTTとなる組み合わせでの第1の一時基準遅延時間及び第2の一時基準遅延時間を算出する。
【0152】
例えば、一時基準遅延算出部321は、予め定められた遅延比率a:bを参照し、R(n,m)から、上記(8)式に従って、第1の一時基準遅延時間TDMS,第2の一時基準遅延時間TDSMを計算する。
【0153】
遅延差算出部322は、計算対象となるSyncメッセージ、Delay_Reqメッセージ、及びDelay_Respメッセージの組み合わせでの第1片方向遅延時間と、第1の一時基準遅延時間との差分である第1片方向遅延差、及び計算対象となる組み合わせでの第2片方向遅延時間と、第2の一時基準遅延時間との差分である第2片方向遅延差を算出する。
【0154】
具体的には、遅延差算出部322は、計算対象となる組み合わせ及び一時極小RTTとなる組み合わせの各々についての、Syncメッセージに含まれる参照クロックの時刻情報と、Syncメッセージを受信した時に自システムクロック部24が出力した時刻情報と、Delay_Reqメッセージに含まれる時刻情報と、Delay_Reqメッセージを受信した時の参照クロックの時刻情報とに基づいて、第1の一時基準遅延時間との差分である第1片方向遅延差、及び第2の一時基準遅延時間との差分である第2片方向遅延差を算出する。例えば、上記(7)式に従って、第1片方向遅延差JM(n,i),第2片方向遅延差JS(m,j)を計算する。
【0155】
参考値算出部324は、遅延差算出部322によって算出した第1片方向遅延差JM(n,i)、第2片方向遅延差JS(m,j)と、第1の一時基準遅延時間及び第2の一時基準遅延時間とから、上記(9)式に従って、計算対象となる組み合わせでの第1片方向遅延時間の参考値及び第2片方向遅延時間の参考値を算出する。
【0156】
推定部326は、第1片方向遅延時間の参考値及び第2片方向遅延時間の参考値に応じて定められる比率と、計算対象となる組み合わせでのRTTとから、計算対象となる組み合わせでの第1片方向遅延時間及び第2片方向遅延時間を算出する。
【0157】
具体的には、推定部326は、第1片方向遅延時間の参考値、第2片方向遅延時間の参考値、及び簡約定数を用いて、上記(10)式に従って、第1片方向遅延時間を算出するための第1比率の値A、Bを決定する。
【0158】
推定部326は、上記(11)式に従って、第1比率A/(A+B)と、計算対象となる組み合わせでのRTTとから、計算対象となる組み合わせでの第1片方向遅延時間を算出する。例えば、第1片方向遅延時間DMS(i)を算出し、第1片方向遅延時間DMS(i),タイムスタンプt1,M(i),t2,S(j)を、判定部34に入力し、推定部326の処理を終了する。
【0159】
判定部34は、第1片方向遅延時間の存在範囲を用いて、遅延時間推定部32によって推定された第1片方向遅延時間が存在範囲内であるか否かを判定する。
【0160】
ここで、番号i,jに対する片方向遅延範囲更新部30の処理が完了している(Dmin(i,j),Dmax(i,j)が計算済みである)ことを前提とする。以下の手順で処理する。
【0161】
1)Dmin(i,j)<DMS(i)<Dmax(i,j)である場合、推定された第1片方向遅延時間が存在範囲内であると判定し、DMS(i),t1,M(i),t2,S(j)を、時差計算部38に入力し、判定部34の処理を終了する。
【0162】
2)Dmin(i,j)<DMS(i)<Dmax(i,j)でない場合、推定された第1片方向遅延時間が存在範囲外であると判定し、判定部34の処理を終了する。
【0163】
補正部36は、判定部34によって、推定された第1片方向遅延時間が存在範囲外であると判定された場合に、第1片方向遅延時間及び第2片方向遅延時間の比を補正する。
【0164】
具体的には、補正部36は、遅延時間推定部32で用いる比a:bを、Dmin(i,j)<DMS(i)<Dmax(i,j)を満足するように更新し、遅延時間推定部32の処理に戻る。更新の方法は何でも良いが、例えば、DMS(i)≦Dmin(i,j)ならば、a+1:bを新たな比a:bとする。Dmax(i,j)≦DMS(i)ならば、a:b+1を新たな比a:bとする。
【0165】
判定部34によって存在範囲内であると判定されるまで、補正部36による補正、遅延時間推定部32による推定、及び判定部34による判定が繰り返される。
【0166】
時差計算部38は、遅延時間推定部32によって推定された第1片方向遅延時間を用いて、自クロックの時刻情報と、参照クロックの時刻情報との現在の時差を計算する。
【0167】
例えば、以下の式に従って、現在の時差を計算する。
【0168】
O(i)=t1,M(i)+DMS(i)-t2,S(j)である。計算結果を自システムクロック制御部40に入力する。
【0169】
自システムクロック制御部40は、以下の式に従って、時差計算部38によって計算された現在の時差O(ti)と前回計算された時差O(ti-1)に基づいて、参照クロックが自クロックに対して進んでいれば、自クロックの歩度を速め、遅れていれば自クロックの歩度を緩めるように、時差解消歩度rP(ti)を更新すると共に、現在の時差O(ti)に基づいて、固有歩度rI(ti)を更新する。
【0170】
ただし、t
i-1は前回の、歩度を求めるためのPID制御計算が働いた時刻であり、K
P、K
I、K
Dは制御のためのPID定数である。
【0171】
自システムクロック制御部40は、時差解消歩度、及び固有歩度に基づいて、以下の式に従って、自クロックの現在の歩度r(ti)を決定して、自システムクロック部24へ出力する。
【0172】
r(ti)=rP(ti)+rI(ti)
【0173】
また、上記で計算された時差解消歩度rP、固有歩度rIは、片方向遅延差計算部26で利用するために保存される。
【0174】
<本発明の実施の形態の作用>
次に、本発明の実施の形態のクロック処理装置10による処理について
図10を参照して説明する。クロック処理装置10が、参照クロック発信装置16から、Syncメッセージ又はDelay_Respメッセージを受信する度に、クロック処理装置10は、
図10に示すクロック制御処理ルーチンを実行する。
【0175】
まず、ステップS100において、片方向遅延差計算部26は、受信メッセージがSyncメッセージ(t1,M(n),t2,S(n))である場合、タイムスタンプt1,M(n),t2,S(n)をRTT取得部28に入力する。
【0176】
片方向遅延差計算部26は、受信メッセージがDelay_Respメッセージ(t3,S(m),t4,M(m))である場合、タイムスタンプt3,S(m),t4,M(m)をRTT取得部28に入力する。
【0177】
ステップS102において、片方向遅延差計算部26は、受信メッセージがSyncメッセージ(t1,M(n),t2,S(n))である場合、現在の歩度情報rP、rIを参照し、第1片方向遅延差JM(n-1,n)を計算し、保存する。
【0178】
片方向遅延差計算部26は、受信メッセージがDelay_Respメッセージ(t3,S(m),t4,M(m))である場合、現在の歩度情報rP、rIを参照し、第2片方向遅延差JS(m-1,m)を計算し、保存する。
【0179】
ステップS104では、RTT取得部28は、計算対象となるSyncメッセージ、Delay_Reqメッセージ、Delay_Respメッセージの組み合わせについて、タイムスタンプt1,M(n),t2,S(n),t3,S(m),t4,M(m)を取得する。
【0180】
ステップS106では、片方向遅延範囲更新部30は、第1片方向遅延差を計算し、第2片方向遅延差を計算する。そして、片方向遅延範囲更新部30は、第1片方向遅延時間の存在範囲を更新する。
【0181】
ステップS108では、遅延時間推定部32は、第1片方向遅延時間を推定する。
【0182】
ステップS108は、
図11に示す処理ルーチンによって実現される。
【0183】
ステップS120において、極小往復遅延時間算出部320は、保存済みのRTTから、一時極小RTT R(n,m)を取得する。保存済みのRTTから、一時極小RTT R(n,m)が得られない場合には、現在時刻tについて有効なRTTが計算できるのであれば、入力タイムスタンプt1,M(i),t2,S(i),t3,S(j),t4,M(j)から、信頼できるRTT R(i,j)を計算し、それを一時極小RTT R(n,m)とする。
【0184】
ステップS122において、一時基準遅延算出部321は、予め定められた遅延比率a:bを参照し、一時極小RTT R(n,m)から、上記(8)式に従って、第1の一時基準遅延時間DMS、第2の一時基準遅延時間DSMを計算する。
【0185】
ステップS124において、遅延差算出部322は、計算対象となる組み合わせ及び一時極小RTTとなる組み合わせの各々についての、Syncメッセージに含まれる参照クロックの時刻情報と、Syncメッセージを受信した時に自システムクロック部24が出力した時刻情報と、Delay_Reqメッセージに含まれる時刻情報と、Delay_Reqメッセージを受信した時の参照クロックの時刻情報とに基づいて、第1の一時基準遅延時間との差分である第1片方向遅延差JM(n,i)、及び第2の一時基準遅延時間との差分である第2片方向遅延差JS(m,j)を算出する。
【0186】
ステップS126において、参考値算出部324は、遅延差算出部322によって算出した第1片方向遅延差JM(n,i),第2片方向遅延差JS(m,j)と、第1の一時基準遅延時間及び第2の一時基準遅延時間とから、上記(9)式に従って、計算対象となる組み合わせでの第1片方向遅延時間の参考値及び第2片方向遅延時間の参考値を算出する。
【0187】
ステップS128において、推定部326は、第1片方向遅延時間の参考値、第2片方向遅延時間の参考値、及び簡約定数を用いて、上記(10)式に従って、第1片方向遅延時間を算出するための第1比率の値A、Bを決定する。
【0188】
ステップS130において、推定部326は、第1比率A/(A+B)と、計算対象となる組み合わせでのRTTとから、計算対象となる組み合わせでの第1片方向遅延時間DMS(i)を算出し、第1片方向遅延時間DMS(i)、タイムスタンプt1,M(i),t2,S(j)を、判定部34に入力し、推定部326の処理を終了する。
【0189】
そして、
図10のステップS110において、判定部34は、第1片方向遅延時間の存在範囲を用いて、遅延時間推定部32によって推定された第1片方向遅延時間が存在範囲内であるか否かを判定する。遅延時間推定部32によって推定された第1片方向遅延時間が、第1片方向遅延時間の存在範囲内である場合には、ステップS114へ移行する。遅延時間推定部32によって推定された第1片方向遅延時間が、第1片方向遅延時間の存在範囲外である場合には、ステップS112へ移行する。
【0190】
ステップS112では、補正部36は、判定部34によって、推定された第1片方向遅延時間が存在範囲外であると判定された場合に、第1片方向遅延時間及び第2片方向遅延時間の比を補正し、上記ステップS108へ戻る。
【0191】
ステップS114では、時差計算部38は、上記ステップS108で最終的に推定された第1片方向遅延時間を用いて、自クロックの時刻情報と、参照クロックの時刻情報との現在の時差を計算する。
【0192】
ステップS116では、自システムクロック制御部40は、時差計算部38によって計算された現在の時差に基づいて、固有歩度を更新すると共に、時差解消歩度を更新する。
【0193】
自システムクロック制御部40は、時差解消歩度、及び固有歩度に基づいて、自クロックの現在の歩度r(ti)を決定して、自システムクロック部24へ出力し、クロック制御処理ルーチンを終了する。
【0194】
以上説明したように、本発明の実施の形態に係るクロック処理装置によれば、計算対象となる組み合わせでの第1片方向遅延時間と、第1の一時基準遅延時間との差分である第1片方向遅延差、及び計算対象となる組み合わせでの第2片方向遅延時間と、第2の一時基準遅延時間との差分である第2片方向遅延差を算出し、算出した第1片方向遅延差及び第2片方向遅延差と、第1の一時基準遅延時間及び第2の一時基準遅延時間とから、第1片方向遅延時間の参考値及び第2片方向遅延時間の参考値を算出し、第1片方向遅延時間の参考値及び第2片方向遅延時間の参考値に応じて定められる比率と、計算対象となる組み合わせでの往復遅延時間とから、計算対象となる組み合わせでの第1片方向遅延時間を算出する。これにより、片方向遅延時間が上りと下りで異なる場合であっても、精度よく片方向遅延時間を求めることができる。
【0195】
また、第1片方向遅延差と、第2片方向遅延差とを用いて定められる、第1片方向遅延時間の存在範囲を用いて、推定された第1片方向遅延時間が存在範囲内であるか否かを判定することにより、片方向遅延時間が上りと下りで異なる場合であっても、精度よく片方向遅延時間を求めることができる。また、この片方向遅延時間を用いて精度よく参照クロックとの時差を求めることができ、適切に自クロックの歩度を調整することができる。
【0196】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【0197】
例えば、上述した実施の形態では、遅延時間推定部32が、第1片方向遅延時間を推定し、第1片方向遅延時間の存在範囲を用いて、推定された第1片方向遅延時間が存在範囲内であるか否かを判定する場合を例に説明したが、これに限定されるものではない。遅延時間推定部32が、第2片方向遅延時間を推定し、片方向遅延範囲更新部30が、第2片方向遅延時間の存在範囲を更新し、判定部34が、第2片方向遅延時間の存在範囲を用いて、推定された第2片方向遅延時間が存在範囲内であるか否かを判定するようにしてもよい。この場合には、-DSM(j)=R(i,j)--DMS(i)を用いて、上記の実施の形態において、第1片方向遅延時間を、第2片方向遅延時間に読み替えればよい。
【符号の説明】
【0198】
10 クロック処理装置
16 参照クロック発信装置
20 通信部
24 自システムクロック部(クロック部)
26 片方向遅延時間計算部
28 RTT取得部(往復遅延時間計算部)
30 片方向遅延範囲更新部
32 遅延時間推定部
34 判定部
36 補正部
38 時差計算部
40 自システムクロック制御部(歩度決定部)
100 クロック調整システム
320 極小往復遅延時間算出部
321 一時基準遅延算出部
322 遅延差算出部
324 参考値算出部
326 推定部
【要約】
【課題】片方向遅延時間が上りと下りで異なる場合であっても、精度よく片方向遅延時間を求めることができるクロック処理装置及びプログラムを提供する。
【解決手段】クロック処理装置10では、遅延差算出部322が、往復遅延時間が極小時間となる組み合わせでの第1の一時基準遅延時間との差分である第1片方向遅延差、及び往復遅延時間が極小時間となる組み合わせでの第2の一時基準遅延時間との差分である第2片方向遅延差を算出する。参考値算出部324が、算出した第1片方向遅延差及び第2片方向遅延差と、第1の一時基準遅延時間及び第2の一時基準遅延時間とから、第1片方向遅延時間及び第2片方向遅延時間の参考値を算出する。推定部326が、第1片方向遅延時間及び第2片方向遅延時間の参考値に応じて定められる比率と、計算対象となる組み合わせでの往復遅延時間とから、第1片方向遅延時間を算出する。
【選択図】
図9