(57)【特許請求の範囲】
【請求項１】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させる時刻同期方法において、
前記時刻要求パケットの送出の基本周期を発生する段階と、
前記基本周期からずらして前記時刻要求パケットを生成し、生成した前記時刻要求パケットを前記時刻サーバに送出する段階と、
を有することを特徴とする、時刻同期方法。
【請求項２】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させる時刻同期方法において、
前記時刻要求パケットの送出の基本周期を発生する段階と、
前記基本周期ごとに、前記基本周期に対して任意に変化する遅延時間を与えて前記時刻要求パケットを生成し、生成した前記時刻要求パケットを前記時刻サーバに送出する段階と、
を有することを特徴とする、時刻同期方法。
【請求項３】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させる時刻同期方法において、
前記時刻要求パケットを受信した際に、任意に変化する遅延時間を与えた後に、受信した前記時刻要求パケットに対応する前記時刻応答パケットを送出する段階
を有することを特徴とする、時刻同期方法。
【請求項４】
前記時刻要求パケットに対応した時刻応答パケットを受信して往復伝送遅延時間を求める段階と、
複数の前記往復伝送遅延時間のうちの最小のものに基づいて前記ローカル時計を修正する段階と、
をさらに有する、請求項２または３に記載の時刻同期方法。
【請求項５】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させる時刻同期方法において、
前記アプリケーション装置において、
アプリケーションパケットの送出の基本周期を発生する段階と、
前記基本周期ごとに、前記基本周期に対して任意に変化する遅延時間を与えて前記アプリケーションパケットを生成し、生成したアプリケーションパケットを前記通信手段に送出する段階と、
を有することを特徴とする、時刻同期方法。
【請求項６】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させるシステムにおける時刻クライアントにおいて、
時刻要求パケットを一定周期からはずして送出することを特徴とする、時刻クライアント。
【請求項７】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントの前記ローカル時計の時刻を同期させるシステムにおける時刻クライアントにおいて、
時刻要求パケットの送出の基本周期を発生するタイミング発生手段と、
前記基本周期に対して任意に変化する遅延時間ｄを与えて前記時刻要求パケットを生成し、生成した時刻要求パケットを前記時刻サーバに送出するパケット生成手段と、
を有することを特徴とする時刻クライアント。
【請求項８】
前記任意に変化する遅延時間ｄは、Ｌを前記通信手段におけるアプリケーションパケットもしくは伝送路の最大パケット時間長、Ｌtpを前記時刻要求パケットのパケット長、Ｇをパケット間最小間隔、Ｉを前記基本周期として、
０≦ｄ≦ｄmax  （ただし、Ｌ≦ｄmax≦Ｉ−Ｌtp−Ｇ）
を満たすようにランダムに決められる遅延時間である、請求項７に記載の時刻クライアント。
【請求項９】
前記時刻要求パケットに対応した時刻応答パケットを前記時刻サーバから受信する手段と、
前記受信した時刻応答パケットに基づいて往復伝送遅延時間を求める手段と、
複数の前記往復伝送遅延のうちの最小ものに対応する時刻応答パケットに含まれる時刻情報に基づいて、前記ローカル時計が示す時刻を更新する更新手段と、
を有する、請求項７または８に記載の時刻クライアント。
【請求項１０】
前記時刻要求パケットの送出の基本周期よりも長い時間長のバースト時間を設定するバースト時間設定手段をさらに備え、
前記バースト時間内において前記往復伝送遅延時間を最小にする前記時刻応答パケットの時刻情報に基づいて、前記時刻の更新が行われる、請求項９に記載の時刻クライアント。
【請求項１１】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させるシステムにおける時刻サーバにおいて、
前記時刻応答パケットを受信した時点からの、任意に変化する遅延時間ｄを与えた後に前記時刻応答パケットを送出する手段を有することを特徴とする時刻サーバ。
【請求項１２】
前記任意に変化する遅延時間ｄは、Ｌを前記通信手段におけるアプリケーションパケットもしくは伝送路の最大パケット時間長として、
０≦ｄ≦ｄmax（ただし、Ｌ≦ｄmax）
を満たすようにランダムに決められる遅延時間である、請求項１１に記載の時刻サーバ。
【請求項１３】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させるシステムにおける時刻サーバにおいて、
前記時刻要求パケットをそれぞれ蓄積することが可能な複数のバッファと、
前記時刻要求パケットを受信したときに、前記複数のバッファのうちの空バッファの１つに当該時刻要求パケットを蓄積する入力スイッチ手段と、
前記複数のバッファのうちの１つのランダムに選択し、選択されたバッファが空であればランダムな時間の経過後に次のバッファの選択を行うスケジューラ手段と、
前記スケジューラ手段で選択されたバッファが空でないときに当該バッファに蓄積された時刻要求パケットに基づいて前記時刻応答パケットを生成し送出する時刻応答パケット生成手段と、
を備えることを特徴とする時刻サーバ。
【請求項１４】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段にアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させるシステムにおける時刻サーバにおいて、
前記時刻要求パケットをそれぞれ蓄積することが可能な複数のバッファと、
前記時刻要求パケットを受信したときに、前記複数のバッファのうちの空バッファの１つに当該時刻要求パケットを蓄積する入力スイッチ手段と、
前記時刻要求パケットを前記バッファに蓄積する際に、当該時刻要求パケットに対応する時刻応答パケットの生成予約時刻をランダムに設定し、当該生成予約時刻になったときに対応するバッファを選択するスケジューラ手段と、
前記スケジューラ手段で選択されたバッファに蓄積された時刻要求パケットに基づいて前記時刻応答パケットを生成し送出する時刻応答パケット生成手段と、
を備えることを特徴とする時刻サーバ。
【請求項１５】
通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、前記通信手段に、ローカル時計を備えて前記通信手段に対してアプリケーションパケットを送出するアプリケーション装置が接続されており、
前記通信手段の経路において、前記時刻クライアントから前記時刻サーバに送信される時刻要求パケットまたは前記時刻サーバから前記時刻クライアントに送信される時刻応答パケットと、前記アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、
前記時刻クライアントが前記時刻サーバに時刻要求パケットを送信し、これに対応して前記時刻サーバが前記時刻クライアントに時刻応答パケットを返信し、前記時刻要求パケットならびに前記時刻応答パケットが伝えるパケットの送受信時刻をもとに、前記時刻サーバが保持する時刻に前記時刻クライアントのローカル時計の時刻を同期させるシステムにおける、前記通信手段に接続されたアプリケーション装置において、
前記アプリケーションパケットの送出の基本周期を発生するタイミング発生手段と、
前記基本周期に対して任意に変化する遅延時間ｄを与えて前記アプリケーションパケットを生成し、生成したアプリケーションパケットを前記通信手段に送出するパケット生成手段と、
を有することを特徴とするアプリケーション装置。
【請求項１６】
前記任意に変化する遅延時間ｄは、Ｌを前記通信手段におけるアプリケーションパケットもしくは伝送路の最大パケット時間長、Ｌtpを前記時刻要求パケットのパケット長、Ｇをパケット間最小間隔、Ｉを前記基本周期として、
０≦ｄ≦ｄmax  （ただし、Ｌ≦ｄmax≦Ｉ−Ｌtp−Ｇ）
を満たすようにランダムに決められる遅延時間である、請求項１５に記載のアプリケーション装置。
【請求項１７】
請求項６乃至１０のいずれか１項に記載の時刻クライアントと、請求項１１乃至１４のいずれか１項に記載の時刻サーバと、を有する時刻同期システム。
【請求項１８】
請求項６乃至１０のいずれか１項に記載の時刻クライアントと、請求項１１乃至１４のいずれか１項に記載の時刻サーバと、請求項１５または１６に記載のアプリケーション装置と、を有する時刻同期システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信手段で接続された２つ以上の装置間で時刻を同期させる方法及びシステムに関し、特に、インターネットなどの通信手段を介して高精度に時刻同期を行うための時刻同期方法及びシステムに関する。
【背景技術】
【０００２】
通信手段を介して接続された２つ以上の装置間の時刻同期を行う従来技術として、インターネット規格であるＲＦＣ１３０５に規定されたＮＴＰ(Network time protocol)がある（非特許文献１）。ＮＴＰは、インターネットなどのＩＰ(Internet protocol)ネットワークを通信手段として、そのようなＩＰネットワークに対し、時刻の基準を提供するサーバ（時刻サーバともいう）とこのサーバに時刻を一致させるクライアント（時刻クライアントともいう）とが接続している場合に、サーバとクライアントとの間で機能するプロトコルである。ＮＴＰでは、サーバとクライアントとの間でのパケットを往復させたときのそのパケットの往復伝送遅延時間２ｄと、サーバの示す時刻とクライアントのローカルな時刻との差Δｔとを用いて、クライアントのローカル時計を調整し、サーバの時刻に対してクライアントのローカルな時刻を同期させる。以下、ＮＴＰによる時刻同期の具体的な手順を説明する。
【０００３】
ＮＴＰでは、往復伝送遅延時間２ｄやクライアントローカル時計のサーバとの相対的な差Δｔを計算するために、クライアントは、まず、サーバに対してクライアントのローカル時刻をメッセージ送信する。サーバは、このメッセージに対し、開始タイムスタンプ、受信タイムスタンプ、送信タイムスタンプを備える応答を返す。この応答時にサーバでは、クライアントから送られた時刻を開始タイムスタンプにコピーする。そして、受信タイムスタンプと送信タイムスタンプをサーバの時計の日時に設定する。
【０００４】
クライアントは、サーバからの応答に含まれる開始タイムスタンプ、受信タイムスタンプ、送信タイムスタンプをそれぞれ記録する変数ｔ1、ｔ2、ｔ3を管理するとともに、さらに、クライアントのローカルな時計で測った応答受信時刻である終了タイムスタンプを記録する変数ｔ4を管理しており、サーバの応答を受信したとき、クライアントの時計で測った到着時刻を、終了タイムスタンプ変数に設定する。下記の表は、４つのタイムスタンプの要約である。
【０００５】
【表１】
0004542027.tif 000002
【０００６】
これらの変数を用いると、往復伝送遅延時間２ｄは
２ｄ＝｛（ｔ4−ｔ1）−（ｔ3−ｔ2）｝
で表わされる。
【０００７】
クライアントからサーバへの往路とサーバからクライアントへの復路で遅延量が等しいと仮定すると、クライアントが応答を受信した時刻は、サーバが応答を送信した時刻に片道の遅延量を加えた値ｔ3＋ｄとなるので、クライアントの時計のサーバの時計に対する誤差Δｔを次のように求めることができる。
【０００８】
Δｔ＝ｔ0−（ｔ3＋ｄ）＝｛（ｔ1−ｔ2）−（ｔ3−ｔ4）｝／２
したがって、ＮＴＰでは、Δｔ＝０となるようにクライアントの時計を修正することで、クライアントのローカルな時計をサーバの時計に時刻同期させることができる。
【非特許文献１】Network Time Protocol (Version3) Specification, Implementation and Analysis, David L. Mills, IETF RFC-1305
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述したようにＮＴＰでは、クライアントにおけるローカル時計の誤差Δｔを計算する際に、サーバとクライアントとの間の伝送遅延量が往復で等しいという仮定を用いている。したがって、往路と復路の遅延差が存在する場合、この仮定が成立しないので、ＮＴＰの精度が劣化し、もしくはオフセットが生じる。
【００１０】
クライアントとサーバとの間の通信経路で、ＮＴＰによる時刻要求パケットとその他のアプリケーションのパケットとがパケット多重される場合を考える。そのようなアプリケーションのパケットが周期性を有し、その周期が高安定、もしくはサーバ時刻と同期していると、時刻クライアントが送出する時刻要求パケットの周期とアプリケーションのパケットの周期が一致もしくは単純な比率になることがある。そのとき、両者の位相関係によっては、パケットを多重化するルータもしくはスイッチにおいて、往路の時刻要求パケットがアプリケーションのパケットと衝突し、常に一定の遅延を受けることが起こり得る。そのような場合には、伝送遅延量が往復で等しいという仮定が成り立たなくなる。
【００１１】
時刻サーバ側においても、時刻クライアントからの時刻要求パケットはクライアント側からサーバ側（往路）に向かうアプリケーションパケットの周期性の影響を受けるので、サーバ側からクライアント側（復路）に向かうアプリケーションのパケットの周期と一致もしくは単純な比率になる場合には、同様に、復路の時刻パケットが常に一定の遅延を受けることがある。
【００１２】
このように、アプリケーションパケットが多重される通信経路を介して時刻要求パケット、時刻応答パケットが送信される場合、ＮＴＰでは、時刻要求パケット、往路及び復路のアプリケーションパケットの周期及び位相の組み合わせによっては、±（アプリケーションパケット時間長）のオフセットが生じる可能性があり、高精度で時刻同期を行う際の障害となっている。
【００１３】
ＩＥＥＥ  ８０２．１ｑやＤｉｆｆｓｅｒｖｅなどの規格では、特定の種類のパケットの送信を優先させる優先制御を定めているが、一般にＩＰルータ／スイッチで用いられているストア・アンド・フォワード型の転送では出力中のパケットが終了しないと次のパケットの転送が開始できないので、これらの規格にしたがって時刻同期パケット（時刻要求パケット及び時刻応答パケット）の優先制御を行ったとしても、上述したオフセットの問題を解決することはできない。アプリケーションパケット出力中に時刻同期パケットが到着しても、アプリケーションパケットの終了を待ってから時刻同期パケットが出力されることになるからである。
【００１４】
本発明は上記のような事情に鑑みてなされたもので、高精度に時刻同期することが可能な方法及びシステムを提供することにある。
【課題を解決するための手段】
【００１５】
時刻クライアントにおける本発明の時刻同期方法は、通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、通信手段にアプリケーション装置が接続されており、通信手段の経路において、時刻クライアントから時刻サーバに送信される時刻要求パケットまたは時刻サーバから時刻クライアントに送信される時刻応答パケットと、アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、時刻クライアントが時刻サーバに時刻要求パケットを送信し、これに対応して時刻サーバが時刻クライアントに時刻応答パケットを返信し、時刻要求パケットならびに時刻応答パケットが伝えるパケットの送受信時刻をもとに、時刻サーバが保持する時刻に時刻クライアントのローカル時計の時刻を同期させる時刻同期方法において、時刻要求パケットの送出の基本周期を発生する段階と、基本周期ごとに、基本周期に対して任意に変化する遅延時間を与えて時刻要求パケットを生成し、生成した時刻要求パケットを時刻サーバに送出する段階と、を有することを特徴とする。
【００１６】
時刻サーバにおける本発明の時刻同期方法は、通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、通信手段にアプリケーション装置が接続されており、通信手段の経路において、時刻クライアントから時刻サーバに送信される時刻要求パケットまたは時刻サーバから時刻クライアントに送信される時刻応答パケットと、アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、時刻クライアントが時刻サーバに時刻要求パケットを送信し、これに対応して時刻サーバが時刻クライアントに時刻応答パケットを返信し、時刻要求パケットならびに時刻応答パケットが伝えるパケットの送受信時刻をもとに、時刻サーバが保持する時刻に時刻クライアントのローカル時計の時刻を同期させる時刻同期方法において、時刻要求パケットを受信した際に、任意に変化する遅延時間を与えた後に、受信した時刻要求パケットに対応する時刻応答パケットを送出する段階を有することを特徴とする。
【００１７】
アプリケーション装置における本発明の時刻同期方法は、通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、通信手段にアプリケーション装置が接続されており、通信手段の経路において、時刻クライアントから時刻サーバに送信される時刻要求パケットまたは時刻サーバから時刻クライアントに送信される時刻応答パケットと、アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、時刻クライアントが時刻サーバに時刻要求パケットを送信し、これに対応して時刻サーバが時刻クライアントに時刻応答パケットを返信し、時刻要求パケットならびに時刻応答パケットが伝えるパケットの送受信時刻をもとに、時刻サーバが保持する時刻に時刻クライアントのローカル時計の時刻を同期させる時刻同期方法において、アプリケーション装置において、アプリケーションパケットの送出の基本周期を発生する段階と、基本周期ごとに、基本周期に対して任意に変化する遅延時間を与えてアプリケーションパケットを生成し、生成したアプリケーションパケットを通信手段に送出する段階と、を有することを特徴とする。
【００１８】
本発明の時刻クライアントは、通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、通信手段にアプリケーション装置が接続されており、通信手段の経路において、時刻クライアントから時刻サーバに送信される時刻要求パケットまたは時刻サーバから時刻クライアントに送信される時刻応答パケットと、アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、時刻クライアントが時刻サーバに時刻要求パケットを送信し、これに対応して時刻サーバが時刻クライアントに時刻応答パケットを返信し、時刻要求パケットならびに時刻応答パケットが伝えるパケットの送受信時刻をもとに、時刻サーバが保持する時刻に時刻クライアントのローカル時計の時刻を同期させるシステムにおける時刻クライアントにおいて、時刻要求パケットを一定周期からはずして送出することを特徴とする。
【００１９】
本発明の別の時刻クライアントは、通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、通信手段にアプリケーション装置が接続されており、通信手段の経路において、時刻クライアントから時刻サーバに送信される時刻要求パケットまたは時刻サーバから時刻クライアントに送信される時刻応答パケットと、アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、時刻クライアントが時刻サーバに時刻要求パケットを送信し、これに対応して時刻サーバが時刻クライアントに時刻応答パケットを返信し、時刻要求パケットならびに時刻応答パケットが伝えるパケットの送受信時刻をもとに、時刻サーバが保持する時刻に時刻クライアントのローカル時計の時刻を同期させるシステムにおける時刻クライアントにおいて、時刻要求パケットの送出の基本周期を発生するタイミング発生手段と、基本周期に対して任意に変化する遅延時間ｄを与えて時刻要求パケットを生成し、生成した時刻要求パケットを時刻サーバに送出するパケット生成手段と、を有する。
【００２０】
本発明の時刻クライアントにおいて、任意に変化する遅延時間ｄは、Ｌを通信手段におけるアプリケーションパケットもしくは伝送路の最大パケット時間長、Ｌtpを時刻要求パケットのパケット長、Ｇをパケット間最小間隔、Ｉを基本周期として、例えば、
０≦ｄ≦ｄmax  （ただし、Ｌ≦ｄmax≦Ｉ−Ｌtp−Ｇ）
を満たすようにランダムに決められる遅延時間である。ここで、ｄmax＝Ｌとすることが好ましい。
【００２１】
本発明の時刻サーバは、通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、通信手段にアプリケーション装置が接続されており、通信手段の経路において、時刻クライアントから時刻サーバに送信される時刻要求パケットまたは時刻サーバから時刻クライアントに送信される時刻応答パケットと、アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、時刻クライアントが時刻サーバに時刻要求パケットを送信し、これに対応して時刻サーバが時刻クライアントに時刻応答パケットを返信し、時刻要求パケットならびに時刻応答パケットが伝えるパケットの送受信時刻をもとに、時刻サーバが保持する時刻に時刻クライアントのローカル時計の時刻を同期させるシステムにおける時刻サーバにおいて、時刻応答パケットを受信した時点からの、任意に変化する遅延時間ｄを与えた後に時刻応答パケットを送出する手段を有することを特徴とする。
【００２２】
本発明の時刻サーバにおいて、任意に変化する遅延時間ｄは、Ｌを通信手段におけるアプリケーションパケットもしくは伝送路の最大パケット時間長として、例えば、
０≦ｄ≦ｄmax（ただし、Ｌ≦ｄmax）
を満たすようにランダムに決められる遅延時間である。ここで、ｄmax＝Ｌとすることが好ましい。
【００２３】
このような時刻サーバは、具体的には、例えば、時刻要求パケットをそれぞれ蓄積することが可能な複数のバッファと、時刻要求パケットを受信したときに、複数のバッファのうちの空バッファの１つに時刻要求パケットを蓄積する入力スイッチ手段と、複数のバッファのうちの１つのランダムに選択し、選択されたバッファが空であればランダムな時間の経過後に次のバッファの選択を行うスケジューラ手段と、スケジューラ手段で選択されたバッファが空でないときにそのバッファに蓄積された時刻要求パケットに基づいて時刻応答パケットを生成し送出する時刻応答パケット生成手段と、を備える。あるいは時刻サーバは、例えば、時刻要求パケットをそれぞれ蓄積することが可能な複数のバッファと、時刻要求パケットを受信したときに、複数のバッファのうちの空バッファの１つにその時刻要求パケットを蓄積する入力スイッチ手段と、時刻要求パケットをバッファに蓄積する際に、その時刻要求パケットに対応する時刻応答パケットの生成予約時刻をランダムに設定し、その生成予約時刻になったときに対応するバッファを選択するスケジューラ手段と、スケジューラ手段で選択されたバッファに蓄積された時刻要求パケットに基づいて時刻応答パケットを生成し送出する時刻応答パケット生成手段と、を備える。
【００２４】
本発明のアプリケーション装置は、通信手段を介して時刻クライアントと時刻サーバが接続されており、かつ、通信手段に、ローカル時計を備えて通信手段に対してアプリケーションパケットを送出するアプリケーション装置が接続されており、通信手段の経路において、時刻クライアントから時刻サーバに送信される時刻要求パケットまたは時刻サーバから時刻クライアントに送信される時刻応答パケットと、アプリケーション装置が送出する周期性のあるアプリケーションパケットが多重されており、時刻クライアントが時刻サーバに時刻要求パケットを送信し、これに対応して時刻サーバが時刻クライアントに時刻応答パケットを返信し、時刻要求パケットならびに時刻応答パケットが伝えるパケットの送受信時刻をもとに、時刻サーバが保持する時刻に時刻クライアントのローカル時計の時刻を同期させるシステムにおける、通信手段に接続されたアプリケーション装置において、アプリケーションパケットの送出の基本周期を発生するタイミング発生手段と、基本周期に対して任意に変化する遅延時間ｄを与えてアプリケーションパケットを生成し、生成したアプリケーションパケットを通信手段に送出するパケット生成手段と、を有することを特徴とする。
【００２５】
本発明のアプリケーション装置において、任意に変化する遅延時間ｄは、Ｌを通信手段におけるアプリケーションパケットもしくは伝送路の最大パケット時間長、Ｌtpを時刻要求パケットのパケット長、Ｇをパケット間最小間隔、Ｉをアプリケーションパケット送出の基本周期として、例えば、
０≦ｄ≦ｄmax  （ただし、Ｌ≦ｄmax≦Ｉ−Ｌtp−Ｇ）
を満たすようにランダムに決められる遅延時間である。ここで、ｄmax＝Ｌとすることが好ましい。
【００２６】
本発明においては、時刻クライアントにおいて、時刻要求パケットに対応した時刻応答パケットを受信して往復伝送遅延時間を求め、複数の往復伝送遅延時間のうちの最小のものに基づいてローカル時計を修正するようにすることが好ましい。
【００２７】
本発明の時刻同期システムは、本発明の時刻クライアントと、本発明の時刻サーバと、を有する。あるいは本発明の時刻同期システムは、本発明の時刻クライアントと、本発明の時刻サーバと、本発明のアプリケーション装置と、を有する。
【発明の効果】
【００２８】
本発明では、時刻クライアントにおいて時刻要求パケットの生成の基本周期に対して任意に変化する遅延時間を与えて時刻要求パケットを生成して送出することにより、及び／または、時刻サーバにおいて時刻要求パケットを受信した際に、任意に変化する遅延時間を与えた後にその時刻要求パケットに対応した時刻応答パケットを送出することにより、周期性を持ったアプリケーショントラフィックが存在する環境下においても、経路上のルータ（スイッチ）において往路の時刻要求パケット及び復路の時刻応答パケットがアプリケーションパケットと衝突せずに通過する場合が存在するようになるため、高精度な時刻同期が可能になる。
【００２９】
同様に、周期性を有するアプリケーションパケットを送出するアプリケーション装置において、アプリケーションパケットによるトラフィックの周期性が低減されるようにすることによっても、経路上のルータ（スイッチ）において時刻要求パケット及び時刻応答パケットがアプリケーションパケットと衝突せずに通過する場合が存在するようになるため、高精度な時刻同期が可能になる。
【００３０】
本発明の時刻サーバ、時刻クライアントとアプリケーション装置を組み合わせて用いることにより、時刻要求パケットや時刻応答パケットが周期的な衝突をせずにルータ（スイッチ）を通過する割合が高まり、より高精度な時刻同期が可能になる。
【発明を実施するための最良の形態】
【００３１】
次に、本発明の好ましい実施の形態について、図面を参照して説明する。
【００３２】
図１は、時刻同期システムの基本的な構成を示している。インターネットなどのネットワーク１に対し、高精度に時刻を保持している時刻サーバ２が接続し、さらに、ローカルな時計を有するとともに時刻サーバ２に対してこのローカルな時計を時刻同期させようとする時刻クライアント３が接続している。ネットワーク１では、周期性を有する他のアプリケーションパケットも伝送されている。そこで本実施形態では、時刻同期のための手法として基本的にはＮＴＰを利用するものの、周期性を持った他のアプリケーションパケットが時刻同期の精度に与える影響を低減するため、ＮＴＰによる従来の時刻同期システムに対して、以下に述べるように、いくつかの改良を行うこととする。
【００３３】
（時刻クライアント）
まず時刻クライアントにおいて、時刻要求パケットの生成タイミングを改良し、時刻要求パケットが一定の周期からランダムにずれた間隔で送出されるようにする。図２は、このような時刻クライアント３の内部構成と時刻要求パケットの送出タイミングとを示す図である。図２では、時刻クライアントにおける時刻要求パケットの送信に関係する部分を示されている。
【００３４】
時刻クライアントは、時刻クライアントのローカル時計（図２には不図示）と、このローカル時計に同期した周期ＩのパルスＩ（ｔ）を発生するトリガ発生器１１と、パルスＩ（ｔ）に対して遅延を与えて遅延パルスＯ（ｔ）を発生する遅延発生器１２と、遅延パルスＯ（ｔ）に基づいて時刻要求パケットを送出する時刻要求パケット生成器１３と、を備えている。ここで周期Ｉは一定の周期であり、これを時刻要求パケットの送出基本周期Ｉと呼ぶことにする。遅延発生器１２は、パルスＩ（ｔ）を入力とし、パルスＩ（ｔ）が到着すると、周期ごとに乱数によって決められた遅延ｄ（ｔ，ｋ）を与えて、遅延パルスＯ（ｔ）を出力するように構成されている。時刻要求パケット生成器１３は、遅延パルスＯ（ｔ）が到着した瞬間に、クライアント時刻を開始タイムスタンプとして時刻要求パケットを送出するように構成されている。
【００３５】
このような時刻クライアント３では、クライアントにおけるローカルな時刻をＴcで表わすこととすると、
Ｔc＝ｋ・Ｉ＋ｄ（ｋ）＋Ｔ0
となる時刻に、時刻要求パケットの送出が行なわれる。ここで、ｋは任意の整数、Ｔ0は定数であり、またｄ（ｋ）は、０からｄmax（ただしＬ≦ｄmax≦Ｉ−ＬTP−Ｇ；Ｌはアプリケーションパケットもしくは伝送路の最大パケット時間長、ＬTPは時刻同期パケット時間長、Ｇはパケット間最小間隔）の値をとる任意の変動値とする。ｄ（ｋ）は乱数に基づいて定められるようにすることが好ましい。
【００３６】
図２に示した時刻クライアント３では、上述したような改良が加えられることにより、時刻要求パケットの送出タイミングが１パケット時間長以上の分散を持つようになる。このことは、図２においては、それぞれの時刻要求パケット１４の送出タイミングが、周期Ｉで定まるタイミングから、ｄ（ｋ），ｄ（ｋ＋１），…などのようにばらついていることによって示されている。その結果、いかなる周期のアプリケーションパケットに対しても、ルータ（もしくはスイッチ）において往路の時刻要求パケットがアプリケーションのパケットと衝突せずに通過する場合が存在するようになる。なお、時刻要求パケットの送出タイミングにおいて、１パケット時間長以上の分散があればアプリケーションのパケットと衝突せずにルータ（もしくはスイッチ）を通過する場合が存在するので、アプリケーションパケットもしくは伝送路の最大パケット時間長をＬとすると、ｄ（ｋ）の最大値ｄmaxはＬで十分である。
【００３７】
図３は、図２に示した時刻クライアントにおける遅延発生器１２の状態遷移の一例を示した状態遷移図である。デフォルトでの出力値をＯ（ｔ）＝０として、状態Ａから開始される。入力パルスＩ（ｔ）が到着するまでは状態Ａにあり、パルスＩ（ｔ）が入力されると、変数Ｄに０からＬまでの乱数を格納し状態Ｂに遷移する。状態遷移図においては、乱数を発生する関数がＲａｎｄ（）で表記されている。状態Ｂでは、Ｄが０になるまで、単位時刻あたり１を減じていく。Ｄ＝０になった時、出力値Ｏ（ｔ）＝１として、状態Ａに遷移する。
【００３８】
（バースト制御）
ＶＣＯ（電圧制御発振器）の制御など、ほぼ一定の周期で時刻誤差を修正したい場合には、ＮＴＰによる従来の時刻同期システムにおいて、次の改良を加える。
【００３９】
ネットワーク１に対して時刻サーバ２と時刻クライアント３が接続している点は図２に示すものと同じであるが、時刻クライアント３は、バースト周期をＩ、バースト内での時刻要求パケットの送出基本周期をＢ、クライアントにおけるローカルな時刻をＴcとした場合に、
Ｔc＝ｋ・Ｉ＋ｈ・Ｂ＋ｄ（ｋ，ｈ）＋Ｔ0
となる時刻に時刻要求パケットの送出を行う。ここで、上述と同様に、ｋは任意の整数、Ｔ0は定数、Ｌはアプリケーションパケットもしくは伝送路の最大パケット時間長である。さらにここでは、バースト長をｈmaxとして、ｈは０からｈmaxまでの整数であり、ＢはＢ≧Ｌ＋ＬTP＋Ｇを満たす定数である。ＬTPは時刻同期パケット時間長であり、Ｇはパケット間の最小間隔である。ｄ（ｋ，ｈ）は、｛０，１，２，…，Ｌ｝のいずれかの値をとる任意の変動値とする。
【００４０】
このような時刻Ｔcにおいて時刻要求パケットを送出した場合には、各バースト内において、アプリケーションパケットと衝突しない時刻要求パケットが存在する確率が高くなるため、バースト周期での制御が可能になる。
【００４１】
図４は、このようなバースト制御を行う場合における、遅延発生器１２の状態遷移を示したものである。デフォルトでの出力値をＯ（ｔ）＝０として、状態Ａから開始される。入力パルスＩ（ｔ）が到着するまでは状態Ａにあり、パルスＩ（ｔ）が入力されると、変数ｇ，ｈにそれぞれ０を格納し、ｄに０からＬまでの乱数を格納して、状態Ｂに遷移する。状態Ｂでは、単位時間ごとにｄが０になるまで１を減じ、ｇを１ずつ増加させていく。
ｄ＝０になった時、出力値Ｏ（ｔ）＝１として、ｈ＜ｈmaxであれば状態Ｃに、ｈ≧ｈmaxであれば状態Ａに遷移する。
【００４２】
状態Ｃでは、ｇ＜Ｂの間、単位時刻ごとにｇを１ずつ増加させていく。ｇ≧Ｂになった時点で、ｇに０を格納し、ｄに０からＬまでの乱数を格納し、ｈを１増加させて状態Ｂに遷移する。
【００４３】
（ＲＴＴフィルタ）
上述したように時刻クライアント３側での時刻要求パケットの送出タイミングをずらす手法において、開始タイムスタンプをｔ1、受信タイムスタンプをｔ2、送信タイムスタンプをｔ3、終了タイムスタンプをｔ4とした時、各バースト内において、時刻サーバ２からの時刻応答パケットのうち、往復伝送遅延時間ＲＴＴ＝（ｔ2−ｔ1）＋（ｔ4−ｔ3）を最小にする時刻応答パケットの時刻情報に基づいてクライアント時刻の更新もしくはＶＣＯ制御を行うことで、高精度な同期が可能になる。これは、通信経路上のルータ（スイッチ）において過剰な遅延を受けていない、時刻情報の精確な応答パケットが選択される確率が高いためである。
【００４４】
図５は、このようにバースト内での時刻応答パケットのうち、ＲＴＴが最小である時刻応答パケットに応じて時刻同期を行う時刻クライアントの構成の一例を示すブロック図である。図５は、時刻クライアントにおける時刻応答パケットの受信に関係する部分の構成を示している。
【００４５】
図５に示す時刻クライアントは、その時刻クライアントのローカル時計４１を備えており、このローカル時計４１の時刻を時刻サーバの時計の時刻に同期させることを目的として構成されている。時刻クライアントは、ローカル時計４１からの時刻信号に基づいてバーストトリガＢ（ｔ）を発生するバーストトリガ発生回路４２と、時刻応答パケットを受信する受信回路４３と、往復伝送遅延時間ＲＴＴを計算する伝送遅延時間計算回路（ＲＴＴ）４４と、サーバの時計とローカル時計４１との時刻誤差Δを計算するクライアント時刻誤差計算回路（Δ）４５と、往復伝送遅延時間ＲＴＴに基づきバースト内での最小伝送遅延時間ＲＴＴburstを計算するバースト内最小伝送遅延時間計算回路４６と、クライアント時刻誤差Δに基づきバースト内でのクライアント時刻誤差Δburstを計算するバースト内クライアント時刻誤差計算回路４７と、バーストトリガのパルスとクライアント時刻誤差Δburstとに基づいて、バースト内での最小伝送遅延時間ＲＴＴburstに基づくクライアント時刻誤差ｄｔを計算するクライアント時刻誤差計算回路４８と、クライアント時刻誤差ｄｔに基づいてローカル時計４１の時刻を修正する時刻修正回路４９と、を備えている。なお、終了タイムスタンプｔ4を付与するために、ローカル時計４１からの時刻信号は、受信回路４３にも供給されている。
【００４６】
次に、この時刻クライアントの動作について説明する。
【００４７】
ローカル時計４１に基づいて不図示の時刻要求パケット送信回路によって時刻要求パケットが時刻サーバ（不図示）に送られると、時刻サーバは時刻応答パケットをこの時刻クライアントに送信する。この時刻応答パケットが受信回路４３で受信されると、その時刻応答パケットに含まれる４つのタイムスタンプ（開始タイムスタンプｔ1、受信タイムスタンプｔ2、送信タイムスタンプｔ3及び終了タイムスタンプｔ4）４１１が伝送遅延時間計算回路４４とクライアント時刻誤差計算回路４５とに入力する。伝送遅延時間計算回路４４は往復伝送遅延時間ＲＴＴを計算してその計算結果をバースト内最小伝送遅延時間計算回路４６に供給し、クライアント時刻誤差計算回路４５はクライアント時刻誤差Δを計算してその計算結果をバースト内クライアント時刻誤差計算回路４７に供給する。
【００４８】
バースト内最小伝送遅延時間計算回路４６は、バーストトリガ発生回路４２からのパルスでＲＴＴburst＝∞にリセットされており、ＲＴＴ計算結果４１２が入力されると、その計算結果をＲＴＴburstの現在値と比較し、小さい方の値をＲＴＴburstに入れる。この際、ＲＴＴｂburstの値が更新されたのであれば、更新パルス４１３が出力し、バースト内クライアント時刻誤差計算回路４７に供給される。バースト内クライアント時刻誤差計算回路４７は、更新パルス４１３が出力された時のクライアント時刻誤差Δの値を保持し、バースト内クライアント時刻誤差Δburstとして出力する。
【００４９】
クライアント時刻誤差計算回路４８は、バーストトリガ発生回路４２からのバーストトリガＢ（ｔ）のパルスに同期してバースト内クライアント時刻誤差Δburstを捕捉して、クライアント時刻情報４１７として出力する。時刻補正回路４９は、クライアント時刻誤差４１７の情報を基に、ローカル時計４１の時刻の修正を行う。
【００５０】
このようにして図５に示される時刻クライアントでは、バースト内での最小伝送遅延時間ＲＴＴburstに基づいて、ローカル時計４１の時刻の修正が行われることになる。
【００５１】
（時刻サーバ）
次に、ＮＴＰによる従来の時刻同期における問題点を解決するための、時刻サーバ２側で行われる改良について説明する。
【００５２】
ネットワーク内のルータ（もしくはスイッチ）において、周期性のあるアプリケーションパケットと時刻要求パケットとが多重される場合、時刻要求パケットはアプリケーションパケット間に配置されるために、アプリケーションの周期性の影響を強く受けることになる。時刻サーバでの処理遅延が一定であるとすると、時刻要求パケットの場合と同様に、時刻サーバからの時刻応答パケットがルータ（もしくはスイッチ）において周期性のある（同一または別の）アプリケーションパケットと多重される場合には、往路及び復路のアプリケーションパケットの周期が一致もしくは単純な比率になる場合に、時刻応答パケットが常に復路のアプリケーションパケットと衝突することがある。
【００５３】
そこで、時刻サーバ２における改良として、時刻クライアント３において時刻要求パケットの送信周期にゆらぎを設けるのと同様に、時刻サーバ２においても、時刻要求パケットを受信してから時刻応答パケットを送信するまでの時間間隔にゆらぎを設定することが考えられる。図６は、このような時刻サーバ２の内部構成を示している。
【００５４】
時刻サーバは、時刻サーバ内の高精度な時計としての時刻カウンタ５１と、時刻要求パケット５１０を格納するバッファ５３と、時刻要求パケット５１０に対して遅延を与える遅延発生器５２と、時刻応答パケットを生成して送信する時刻応答生成器５４と、を備えている。
【００５５】
この時刻サーバでは、時刻要求パケット５１０が到着すると、時刻カウンタ５１の現在値５１２が受信タイムスタンプｔ2として、時刻要求パケット５１０とともにバッファ５３に入力される。遅延発生器５２は、時刻要求パケット５１０が到着すると、パケットごとに乱数によって決められた遅延ｄ（ｔ，ｋ）の後に、出力パルス５１５を出力する。時刻応答生成器５４は、出力パルス５１５をトリガとしてバッファ５３から時刻要求パケット５１４の読み出しを開始し、この時点での時刻カウンタ５１のカウンタ値を送信タイムスタンプｔ3として、時刻要求パケット５１４に含まれる情報と受信タイムスタンプｔ2と送信タイムスタンプｔ3とを含む時刻応答パケット５１１を生成して送信する。
【００５６】
このような時刻サーバにおいては、時刻要求パケットの受信時刻をＴRX、サーバにおける時刻処理時間をＳ0とした場合、
ＴS＝ＴRX＋Ｓ0＋ｄ（ｋ）
となる時刻ＴSにおいて、時刻応答パケットが送出される。ここで、ｋは任意の整数、ｄ（ｋ）は０からｄmax（ｄmax≧Ｌ；Ｌはアプリケーションパケットもしくは伝送路の最大パケット時間長）の値をとる任意の変動値とする。
【００５７】
このような改良を時刻サーバに加えることで、時刻サーバからの時刻応答パケットの送出タイミングが１パケット時間長以上の分散をもつため、いかなる周期のアプリケーションパケットに対しても、ルータ（もしくはスイッチ）において復路の時刻応答パケットがアプリケーションのパケットと衝突せずに通過する場合が存在するようになる。
【００５８】
（バッファ制御）
ところで、一般に時刻クライアントは１つの時刻サーバに対して時刻同期を行うだけであるが，時刻サーバにおいては、多数の時刻クライアントからの時刻同期要求を処理する必要があり、高頻度に到着する時刻要求パケットに対応しなければならない。そこで図７に示す時刻サーバは、時刻要求パケットを格納するためのバッファを複数備えるとともに、各時刻要求パケットの受信してから対応する時刻応答パケットを送信するまでの時間間隔にゆらぎを設定するようにしたものである。
【００５９】
すなわち図７に示した時刻サーバは、時刻サーバ内の高精度な時計としての時刻カウンタ６１と、Ｎ（ただしＮ≧２）個のバッファ６３と、時刻応答パケット６１１を生成して送信する時刻応答生成器６４と、到着した時刻要求パケット６１０をいずれかのバッファ６３に振り分ける入力スイッチ６５と、バッファ６３を選択して時刻要求パケット６１３を時刻応答生成器６４に供給する出力スイッチ６６と、出力スイッチ６６を制御するスケジューラ６７と、を備えている。各バッファ６３からは入力スイッチ６５に対し、そのバッファの使用状況を示す信号６１６が供給されている。入力スイッチ６５は、各バッファの使用状況を示す信号６１７をスケジューラ６７に出力する。出力スイッチ６６は、選択したバッファ６３に対して、時刻要求パケットの出力を開始させる出力パルス６１５を出力する。
【００６０】
この時刻サーバでは、時刻要求パケット６１０が到着すると、入力スイッチ６５は、各バッファ６３の使用状況を示す信号６１６に基づいて、空のバッファの１つを選択し、時刻カウンタ６１の現在値６１２を受信タイムスタンプｔ2として、その到着した時刻要求パケット６１０とともにバッファ６３に格納する。スケジューラ６７は、バッファの使用状況を示す信号６１７から、予め決められた手順でＮ個のバッファ６３のうちの１つを選択し、その選択結果を示す選択信号６１８を出力スイッチ６６に送る。出力スイッチ６６は、選択信号６１８で示されるバッファに対して出力パルス６１５を送出し、その結果、そのバッファ６３からの読み出しが開始される。時刻応答生成器５４は、バッファからの読み出し時点での時刻カウンタ６１のカウンタ値を送信タイムスタンプｔ3として、時刻要求パケット６１４に含まれる情報と受信タイムスタンプｔ2と送信タイムスタンプｔ3とを含む時刻応答パケット６１１を生成して送信する。
【００６１】
このような時刻サーバにおいては、受信側では時刻要求パケット及び受信時刻ＴRXの情報が、一旦、Ｎ個のバッファのうち空バッファの１つに蓄積される。送信側ではランダムにＮ個のバッファの１つが選択され、選択されたバッファが空でなければ時刻応答パケットの生成・送出を行った後、次のバッファの選択に戻る。空であった場合には、ｄ（ｋ）（ただしｄ（ｋ）は０からｄmax（ｄmax≧Ｌ）の値をとる任意の変動値）時間後に次のバッファの選択に戻る。ここでＬは、アプリケーションパケットもしくは伝送路の最大パケット時間長である。このようにしてこの時刻サーバでは、高頻度な時刻要求パケットの到着に対し、サーバ内での遅延時間に分散を与えて時刻応答パケットの送出を行うことができる。
【００６２】
図８は、図７に示した時刻サーバにおけるスケジューラ６７の状態遷移の一例を示している。デフォルトでの選択信号６１８の出力値Ｏ（ｔ）はヌル(null)、すなわち何も選択していないものとし、初期状態をＡとする。この初期状態Ａから、変数ｓに対して１からＮまでの乱数を代入し，状態Ｂに遷移する。ｓ番目（ただしｓ≦Ｎ）のバッファの使用状況を示す信号ｂｕｆ［ｓ］を参照し、ｓ番目のバッファが空(empty)でない時には選択信号６１８にｓを出力して状態Ｃに遷移する。状態Ｃにおいては、ｓ番目のバッファが空になるまで選択信号６１８にｓを出力して、空になった時に次のバッファを選択して状態Ｂに遷移する。この場合、次のバッファの選択も乱数に基づいて行われる。
【００６３】
一方、状態Ｂにおいてｓ番目のバッファが空の場合には、変数ｄに０からＬまでの乱数を代入して状態Ｄに遷移する。状態Ｄにおいてはｄを１ずつ減算していき、０以下になった時に次のバッファを選択して状態Ｂに遷移する。
【００６４】
（バッファ制御の別の例）
複数のバッファを有する時刻サーバの場合、時刻要求パケットを読み出すバッファの選択に乱数を用いるのではなく、バッファに時刻要求パケットを蓄積する時点でその時刻要求パケットを読み出すタイミングを乱数に基づいて予め決めてしまうこともできる。そのような制御を行う場合は、図７に示した時刻サーバにおいて、時刻要求パケットの受信側においては、時刻要求パケット及び受信時刻ＴRXの情報を、一旦、Ｎ個のバッファのうちの空バッファの１つに蓄積する。同時にスケジューラ６７は、時刻応答パケットの生成予約時刻をＴRX＋ｄ（ｋ）（ただしｄ（ｋ）は０からｄmax（ｄmax≧Ｌ）の値をとる任意の変動値）にセットする。このように生成予約時刻が設定され、その予約時刻に達すると、スケジューラ６７は、該当するバッファを選択する。その結果、上述したものと同様にして、時刻応答生成器６４が、時刻応答パケットの生成・送出を行う。なお、予約時刻に他の時刻応答パケットが送出中の場合には、現在送出中のパケットの終了を待った後、改めてその時点での送信タイムスタンプｔ3を用いて、該当する時刻応答パケットの生成・送出を行うことができる。
【００６５】
図９は、生成予約時刻を設定するように構成されている場合のスケジューラ６７の動作を示す状態遷移図である。この場合、バッファ６３の使用状況を示す信号６１７に関係する状態遷移（状態Ｃ，Ｄ）と選択信号６１８に関係する状態遷移（状態Ａ，Ｂ）とは、独立に遷移する。選択信号６１８のデフォルトがヌルであることは、図８の場合と同じである。
【００６６】
バッファの使用状況を示す信号６１７に関係する状態遷移では、初期状態Ｃにおいて、時刻要求パケットＩ（ｔ）の入力を待ち合わせ、時刻要求パケットが到着するとその時刻要求パケットをバッファに蓄積するとともに、その時刻要求パケットＩ（ｔ）に対応する時刻応答パケットの生成予約時刻をｄｅｌａｙ｛Ｉ（ｔ）｝として、ｄｅｌａｙ｛Ｉ（ｔ）｝に対し、０からＬまでの乱数だけ現在の時刻ｔより遅い時刻を設定し、状態Ｄに遷移する。時刻要求パケットが終了すると、状態Ｄから状態Ｃに戻る。
【００６７】
一方、選択信号６１８に関する状態遷移では、初期状態をＡとして、予約時刻を過ぎたバッファの１つを返す関数Ｓｅｌｅｃｔ（ｔ）が有効な値ｓを返した時に、ｓを選択信号Ｏ（ｔ）として出力し、状態Ｂに遷移する。状態Ｂでは、該当するバッファ（ｓ番目のバッファ）からの出力の完了を待ち、生成予約時刻ｄｅｌａｙ［ｓ］をリセットして、状態Ａに戻る。
【００６８】
（サーバ・アンド・クライアントシステム）
以上、本発明に基づく時刻クライアントと時刻サーバとを説明したが、これらの時刻クライアントと時刻サーバとを組み合わせることによって、クライアントとサーバ間の通信経路において周期性を持ったアプリケーショントラフィックが存在する環境下においても、高精度な時刻同期が可能になる。図１０は、上述した時刻クライアント及び時刻サーバを用いたサーバ・アンド・クライアントシステムのネットワーク構成の一例を示している。時刻クライアント９１は、クライアント側のルータ９３を介してサーバ側のルータ９４を経て、時刻サーバ９２と接続している。また、ネットワーク装置９５，９６がそれぞれルータ９３，９４に接続されトラフィックを相互に送りあうものとする。
【００６９】
図１１は、このようなネットワーク構成のサーバ・アンド・クライアントシステムにおける各ルータにおけるパケットの到着と送出のタイミングを模式的に示したものである。
【００７０】
（１）は、クライアント側のルータ９３でのパケットの到着状況を示している。この例では、時刻クライアント９１からの時刻要求パケットＡ１〜Ａ３の基本周期とネットワーク装置９５からの送出パケットＢ１〜Ｂ３の基本周期が一致しているが、時刻クライアント９１において、時刻要求パケットＡ１〜Ａ３の送出タイミングに対して任意の変動したタイミングを与えているので、時刻要求パケットＡ１，Ａ２はネットワーク装置９５からの送出パケットＢ１，Ｂ２と衝突するものの、時刻要求パケットＡ３のように、ネットワーク装置９５のパケットとは衝突していない時刻要求パケットが存在する。（２）は、このような状況下でのクライアント側ルータ９３からのパケット送出状況を示している。時刻要求パケットとネットワーク装置９５からの送出パケットが衝突した場合には、時刻要求パケットＡ１ａ，Ａ２ａに示されるように、時刻要求パケットは、ネットワーク装置からのパケットＢ１ａ，Ｂ１ｂの後に送出され、過剰な遅延を受けることになる。これは時刻同期誤差の原因となる。しかしながら、時刻要求パケットＡ３ａは、パケットＢ３ａによる遅延を受けずに、ルータ９３から送出される。したがって、時刻要求パケットＡ３，Ａ３ａに基づいて時刻同期を行えば、正確な時刻同期を達成できることになる。
【００７１】
時刻サーバ９２からの復路についても同様のことが言える。（３）は、サーバ側のルータ９４におけるパケットの到着状況を示しており、Ａ１ｃ，Ａ２ｃ，Ａ３ｃは時刻サーバからの時刻応答パケットを表わし、Ｃ１，Ｃ２，Ｃ３はネットワーク機器９６からの送出パケットを表わしている。時刻サーバも、時刻要求パケットを受信後、任意の変動した遅延を与えて時刻応答パケットを送出するので、時刻応答パケットＡ１ｂ，Ａ３ｂのように、ネットワーク装置９６の送出パケットと衝突しない場合が存在する。（４）は、サーバ側のルータ９４からのパケットの送出状況を示しているが、衝突したパケットＡ２ｂは、（４）に示すように、ネットワーク機器９６からの送出パケットＣ２ｂの後にルータ９４から送出され、過剰な遅延を受けるため、時刻同期誤差の原因となる。Ａ３，Ａ３ａ，Ａ３ｂ，Ａ３ｃのように往復ともに他のパケットと衝突しなかった場合を、伝送遅延時間を計算することにより検出し，そのような場合のパケットの時刻誤差の情報を基にクライアント時刻を修正することで、高精度に時刻クライアント９１と時刻サーバ９２との間の同期を確立することが可能になる。
【００７２】
（アプリケーション装置）
次に、ＮＴＰによる従来の時刻同期における問題点を解決するための、周期性を有するアプリケーションパケットを送出する装置において行われる改良について説明する。上述した時刻クライアントでは、時刻要求パケットの生成タイミングを改良し、時刻要求パケットが一定の周期からランダムにずれた間隔で送出されるようにすることによって、時刻要求パケットや時刻応答パケットとその他のアプリケーションからのアプリケーションパケットとが衝突しない場合が必ず生じるようにしている。ここで時刻要求パケットの代わりにアプリケーションパケットの送出タイミングを一定の周期からずらすことによっても、時刻要求パケットや時刻応答パケットとその他のアプリケーションパケットとが衝突しない場合が必ず生じるようにすることができる。
【００７３】
図１２は、このようにアプリケーションパケットの送出タイミングが改良されたアプリケーション装置を示すブロック図である。ここでいうアプリケーション装置とは、時刻要求パケット以外のパケットであって周期性を有するアプリケーションパケットを生成し、生成したアプリケーションパケットをネットワークに対して送出するもののことを言う。
【００７４】
アプリケーション装置７０は、アプリケーション装置の内部時計に同期した周期Ｉ（これを基本周期という）のパルスＩ（ｔ）を生成するトリガ発生器７１と、パルスＩ（ｔ）に遅延を与えて遅延パルスＯ（ｔ）を発生する遅延発生器７２と、遅延パルスＯ（ｔ）に基づいて時刻要求パケットを送出するアプリケーションパケット生成器７３と、を備えている。遅延発生器７２は、パルスＩ（ｔ）を入力とし、パルスＩ（ｔ）が到着すると、周期ごとに乱数によって決められた遅延ｄ（ｋ）ののち、遅延パルスＯ（ｔ）を出力するように構成されている。アプリケーションパケット生成器７３は、遅延パルスＯ（ｔ）が到着した瞬間に、アプリケーションパケットを送出するように構成されている。
【００７５】
このようなアプリケーション装置では、そのアプリケーション装置におけるローカルな時刻をＴcで表わすこととすると、
Ｔc＝ｋ・Ｉ＋ｄ（ｋ）＋Ｔ0
となる時刻に、アプリケーションパケットの送出が行なわれる。ここで、ｋは任意の整数、Ｔ0は定数であり、またｄ（ｋ）は、０からｄmax（ただしＬ≦ｄmax≦Ｉ−ＬTP−Ｇ；Ｌはアプリケーションパケットもしくは伝送路の最大パケット時間長、ＬTPは時刻同期パケット時間長、Ｇはパケット間最小間隔）の値をとる任意の変動値とする。ｄ（ｋ）は乱数に基づいて定められるようにすることが好ましい。
【００７６】
このアプリケーション装置７０では、上述したような改良が加えられることにより、図１２においてパケットの位置が周期Ｉで定まるタイミングからｄ（ｋ），ｄ（ｋ＋１），…などのようにばらついていることように、アプリケーションパケットの送出タイミングが１パケット時間長以上の分散を持つようになる。その結果、アプリケーションパケットが、ルータ（もしくはスイッチ）において、時刻要求パケットや時刻応答パケットに対しても衝突せずに通過する場合が存在するようになる。なお、アプリケーションパケットの送出タイミングにおいて、１パケット時間長以上の分散があればアプリケーションのパケットと衝突せずにルータ（もしくはスイッチ）を通過する場合が存在するので、アプリケーションパケットもしくは伝送路の最大パケット時間長をＬとすると、ｄ（ｋ）の最大値ｄmaxはＬで十分である。言い換えれば、ｄmax＝Ｌとして運用することで、アプリケーションパケットを受信する側でのパケット受信タイミングの分散を小さくしつつ、ネットワークを共有する時刻クライアントでの時刻合わせ精度を確保できるようになる。
【００７７】
（アプリケーション装置の共存下でのサーバ・アンド・クライアントシステム）
本発明に基づく時刻クライアント、時刻サーバ及びアプリケーション装置を組み合わせることにより、クライアントとサーバ間の通信経路においてアプリケーション装置からのアプリケーションパケットのトラフィックが存在しても、より高精度に時刻同期を行うことができるようになる。図１３は、上述した時刻クライアント、時刻サーバ及びアプリケーション装置を用いたネットワーク構成の一例を示している。時刻クライアント８１は、クライアント側のルータ９３を介してサーバ側のルータ８４を経て、時刻サーバ８２と接続している。また、アプリケーション装置８５，８６がそれぞれルータ８３，８４に接続されトラフィックを相互に送りあうものとする。特にこの構成においては、アプリケーション装置８５，８６は、周期性を有するアプリケーションパケットを送出するものであるが、それぞれ、図１２に示したような構成を有しているので、アプリケーションパケットは、その送出の基本周期からゆらぎを持って送出されるようになっている。
【００７８】
このネットワークシステムにおいては、時刻クライアント８１、時刻サーバ８２及びアプリケーション装置８５，８６でのパケット出力のタイミングに分散があるために、各ルータ８３，８４においてパケット同士が衝突することなく、すなわち過剰な遅延を受けずにパケットが透過する確率が存在する。時刻クライアント８１では、往復の遅延時間が小さな時刻同期パケットの情報を中心にしてそのクライアント時刻を修正することで、周期性を有するアプリケーションパケットのトラフィックの影響をさらに低減して、高精度に時刻クライアント８１と時刻サーバ８２との間の同期を確立することが可能になる。
【図面の簡単な説明】
【００７９】
【図１】時刻同期システムの基本構成を示すブロック図である。
【図２】時刻要求パケットの間隔にゆらぎが設定された時刻クライアントを示すブロック図である。
【図３】図２に示した時刻クライアントにおける遅延発生器の状態遷移図である。
【図４】図２に示した時刻クライアントにおける別の例の遅延発生器の状態遷移図である。
【図５】時刻クライアントの構成の一例を示すブロック図である。
【図６】時刻応答パケットの間隔にゆらぎが設定された時刻サーバを示すブロック図である。
【図７】高頻度な時刻要求パケットの到着に対して、サーバ内での遅延時間に分散を与えて時刻応答パケットを送出する時刻サーバを示すブロック図である。
【図８】図７に示した時刻サーバにおけるスケジューラの状態遷移図である。
【図９】図７に示した時刻サーバにおける別の例のスケジューラの状態遷移図である。
【図１０】時刻サーバと時刻クライアントとを有する時刻同期システムのネットワーク構成の一例を示す図である。
【図１１】図１０に示すシステムにおける遅延時間を説明するタイミングチャートである。
【図１２】アプリケーションパケットの間隔にゆらぎが設定されたアプリケーション装置を示すブロック図である。
【図１３】時刻サーバと時刻クライアントとアプリケーション装置とを有する時刻同期システムのネットワーク構成の一例を示す図である。
【符号の説明】
【００８０】
１    ネットワーク
２，８２，９２    時刻サーバ
３，８１，９１    時刻クライアント
１１，７１    トリガ発生器
１２，５２，７２    遅延発生器
１３    時刻要求パケット生成器
４１    ローカル時計
４２    バーストトリガ発生回路
４３    受信回路
４４    伝送遅延時間計算回路
４５，４８    クライアント時刻誤差計算回路
４６    バースト内最小伝送遅延時間計算回路
４７    バースト内クライアント時刻誤差計算回路
４９    時刻修正回路
５１，６１    時刻カウンタ
５３，６３    バッファ
５４，６４    時刻応答生成器
６５    入力スイッチ
６６    出力スイッチ
６７    スケジューラ
７０，８５，８６    アプリケーション装置
７１    アプリケーションパケット生成器
８３，８４，９３，９４    ルータ
９５，９６    ネットワーク装置
【図１】
0004542027.tif 000003
【図２】
0004542027.tif 000004
【図３】
0004542027.tif 000005
【図４】
0004542027.tif 000006
【図５】
0004542027.tif 000007
【図６】
0004542027.tif 000008
【図７】
0004542027.tif 000009
【図８】
0004542027.tif 000010
【図９】
0004542027.tif 000011
【図１０】
0004542027.tif 000012
【図１１】
0004542027.tif 000013
【図１２】
0004542027.tif 000014
【図１３】
0004542027.tif 000015