(57)【要約】【課題】クライアント装置とサーバ装置との間で、輻輳などによるジッタの多いネットワーク環境でも、安定して高精度な時刻同期またはクロック周波数同期を実現すること。【解決手段】サーバ装置２との間の時間差を一定値となるように制御することでサーバ装置２に時刻またはクロック周波数を同期させるクライアント装置１において、クライアント装置１とサーバ装置２との間で送受信される信号のＲＴＴを、この信号の複数をサンプルとして抽出して計算する手段としてのＲＴＴ計算部１５と、ＲＴＴ計算部１５により計算されたＲＴＴのバラツキを判定する手段としてのバラツキ判定部１６と、このバラツキ判定部１６の判定結果に基づきサンプル数を調整する手段としてのサンプル数調整部１７と、を備える。【選択図】図１
2010028684.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置との間の時刻差を一定値となるように制御することで上記サーバ装置に時刻またはクロック周波数を同期させるクライアント装置において、
上記クライアント装置とサーバ装置との間で送受信される信号の往復遅延時間を、この信号の複数をサンプルとして抽出して計算する手段と、
上記計算する手段により計算された上記往復遅延時間のバラツキを判定する手段と、
この判定する手段の判定結果に基づき上記サンプル数を調整する手段と、
を備えることを特徴とするクライアント装置。
【請求項２】
前記調整する手段は、
前記計算する手段により計算された前記往復遅延時間における最小の往復遅延時間と二番目に小さい往復遅延時間との差が第一の閾値よりも大きいか否かを判定する第一の判定条件と、
上記差が上記第一の閾値以下の値に設定される第二の閾値以下か否かを判定する第二の判定条件と、
を有することを特徴とする請求項１記載のクライアント装置。
【請求項３】
前記調整する手段は、
前記計算する手段により計算された前記往復遅延時間における最小の往復遅延時間に対する二番目に小さい往復遅延時間の比が第三の閾値よりも大きいか否かを判定する第三の判定条件と、
上記比が上記第三の閾値以下の値に設定される第四の閾値以下か否かを判定する第四の判定条件と、
を有することを特徴とする請求項１記載のクライアント装置。
【請求項４】
前記調整する手段は、
前記第一または第三の判定条件に基づく判定結果として前記差または前記比が前記第一または第三の閾値よりも大きいときには前記サンプル数を増加させ、
前記第二または第四の判定条件に基づく判定結果として前記差または前記比が前記第二または第四の閾値以下のときには前記サンプル数を減少させ、
前記第一または第三の判定条件に基づく判定結果として前記差または前記比が前記第一または第三の閾値以下であり、前記第二または第四の判定条件に基づく判定結果として前記差または前記比が前記第二または第四の閾値より大きいときには前記サンプル数を現状維持とする、
ことを特徴とする請求項２または３記載のクライアント装置。
【請求項５】
前記計算する手段により計算された前記往復遅延時間の中で最小の往復遅延時間を適切な往復遅延時間として選択する請求項１から４のいずれか１項記載のクライアント装置。
【請求項６】
情報処理装置にインストールすることにより、その情報処理装置に、サーバ装置との間の時刻差を一定値となるように制御することで上記サーバ装置に時刻またはクロック周波数を同期させるクライアント装置としての機能を実現するプログラムにおいて、
クライアント装置とサーバ装置との間で送受信される信号の往復遅延時間を、この信号の複数をサンプルとして抽出して計算する機能と、
上記計算する機能により計算された上記往復遅延時間のバラツキを判定する機能と、
この判定する機能の判定結果に基づき上記サンプル数を調整する機能と、
を実現することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント装置およびプログラムに関する。
【背景技術】
【０００２】
パケット網における同期方式として標準的に用いられているＮＴＰ(Network Time Protocol、非特許文献１参照)やＳＮＴＰ(Simple Network Time Protocol、非特許文献２参照)の基本原理を図１１に示す。
【０００３】
クライアント装置５０は同期要求パケット送信時刻Ｔ１を書き込んだ同期要求パケット５１をサーバ装置５２に送信する。サーバ装置５２は同期要求パケット５１を受信すると、同期応答パケット５３をクライアント装置５０に送信する。同期応答パケット５３には同期要求パケット送信時刻Ｔ１の他、同期要求パケット受信時刻Ｔ２と同期応答パケット送信時刻Ｔ３とが書き込まれている。クライアント装置５０が同期応答パケット５３を受信した時刻を同期応答パケット受信時刻Ｔ４とする。
【０００４】
ここで、同期要求パケット送信時刻Ｔ１および同期応答パケット受信時刻Ｔ４はクライアント装置５０で測った時刻であり、同期要求パケット受信時刻Ｔ２および同期応答パケット送信時刻Ｔ３はサーバ装置５２で測った時刻である。クライアント装置５０とサーバ装置５２との間でパケットが往復するのに要した実効的な往復遅延時間（以下では、ＲＴＴ(Round Trip Time)という）は、
ＲＴＴ＝（Ｔ４−Ｔ１）−（Ｔ３−Ｔ２）＝Ｔ４−Ｔ３＋Ｔ２−Ｔ１
で与えられる。
【０００５】
また、同期要求パケット５１の遅延時間を同期要求パケット遅延時間Ｄ１、同期応答パケット５３の遅延時間を同期応答パケット遅延時間Ｄ２とすると、
Ｄ１＋Ｄ２＝ＲＴＴ
となる。同期要求パケット遅延時間Ｄ１と同期応答パケット遅延時間Ｄ２とが等しいと仮定すると、
Ｄ１＝Ｄ２＝ＲＴＴ／２
となる。この場合には、クライアント装置５０とサーバ装置５２との間に時刻差ｄＴが生じているとすると、その時刻差ｄＴは、
ｄＴ＝Ｔ４−（Ｔ３＋Ｄ２）
＝Ｔ４−Ｔ３−ＲＴＴ／２
＝Ｔ４−Ｔ３−（Ｔ４−Ｔ３＋Ｔ２−Ｔ１）／２
＝（Ｔ１−Ｔ２−Ｔ３＋Ｔ４）／２
と推定できる。
【０００６】
時刻差ｄＴの値が“０”になるようにクライアント装置５０を制御することにより、サーバ装置５２に対してのクライアント装置５０の時刻同期が確立できる。また、時刻同期が確立できることにより、クロック周波数同期も確立することができる。
【０００７】
【非特許文献１】Ｄ．Ｗ．Ｍｉｌｌｓ、“Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ（Ｖｅｒｓｉｏｎ３）Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ａｎｄ  Ａｎａｌｙｓｉｓ”、ＲＦＣ１３０５，ＩＥＴＦ．
【非特許文献２】Ｄ．Ｍｉｌｌｓ、“Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ（ＳＮＴＰ）Ｖｅｒｓｉｏｎ４  ｆｏｒ  ＩＰｖ４，ＩＰｖ６  ａｎｄ  ＯＳＩ”，ＲＦＣ２０３０，ＩＥＴＦ．
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ネットワーク内において輻輳(Congestion)などにより同期要求パケット遅延時間Ｄ１と同期応答パケット遅延時間Ｄ２とがそれぞれΔＤ１、ΔＤ２だけ変化すると、クライアント装置５０とサーバ装置５２との時間差ｄＴは、
ｄＴ＝（Ｔ１−Ｔ２−Ｔ３＋Ｔ４）／２＋（ΔＤ２−ΔＤ１）／２
【０００９】
すなわち、（ΔＤ２−ΔＤ１）／２だけ変化が生じたように見える。これをそのまま用いてクライアント装置５０を制御すると、その影響を受けて時刻同期精度が劣化してしまう。そこで、複数のサンプルの中からＲＴＴが最小となるＴ１〜Ｔ４や最小に近いＴ１〜Ｔ４を選択すれば、そのＴ１〜Ｔ４は輻輳などによるジッタの影響が小さいものであると推定できる。
【００１０】
原理的にはサンプル数を多くすればジッタの影響が小さいサンプルがその中に入る確率が増加する。しかしながら、サンプル数が多過ぎると時刻同期の制御の応答時間が遅れてしまい、動作が不安定となるおそれがある。
【００１１】
本発明は、このような背景の下に行われたものであって、輻輳などによるジッタの多いネットワーク環境でも、安定して高精度な時刻同期またはクロック周波数同期を実現できるクライアント装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では、サンプル数を適応的に変化させる。すなわち、ＲＴＴのバラツキが大きいときにはジッタの影響の少ないサンプルの割合が少なくなると予想されるので、サンプル数を増加させる。ＲＴＴのバラツキが小さいときにはジッタの影響の少ないサンプルの割合が多くなると予想されるのでサンプル数を減少させる。
【００１３】
このように、サンプル数を適応的に変化させることにより、常にジッタの影響の小さいサンプルが含まれるようになるので、時刻同期またはクロック周波数同期の精度が劣化しにくくなる。
【００１４】
すなわち、本発明のクライアント装置は、サーバ装置との間の時刻差を一定値となるように制御することでサーバ装置に時刻またはクロック周波数を同期させるクライアント装置において、クライアント装置とサーバ装置との間で送受信される信号のＲＴＴを、この信号の複数をサンプルとして抽出して計算する手段と、計算する手段により計算されたＲＴＴのバラツキを判定する手段と、この判定する手段の判定結果に基づきサンプル数を調整する手段と、を備えることを特徴とする。
【００１５】
この調整する手段は、計算する手段により計算されたＲＴＴにおける最小のＲＴＴと二番目に小さいＲＴＴとの差が第一の閾値よりも大きいか否かを判定する第一の判定条件と、この差が第一の閾値以下の値に設定される第二の閾値以下か否かを判定する第二の判定条件と、を有することができる。
【００１６】
あるいは、調整する手段は、計算する手段により計算されたＲＴＴにおける最小のＲＴＴに対する二番目に小さいＲＴＴの比が第三の閾値よりも大きいか否かを判定する第三の判定条件と、この比が第三の閾値以下の値に設定される第四の閾値以下か否かを判定する第四の判定条件と、を有することができる。
【００１７】
これにより、調整する手段は、第一または第三の判定条件に基づく判定結果として前記差または前記比が第一または第三の閾値よりも大きいときにはサンプル数を増加させ、第二または第四の判定条件に基づく判定結果として前記差または前記比が第二または第四の閾値以下のときにはサンプル数を減少させ、第一または第三の判定条件に基づく判定結果として前記差または前記比が第一または第三の閾値以下であり、第二または第四の判定条件に基づく判定結果として前記差または前記比が第二または第四の閾値より大きいときにはサンプル数を現状維持とする、ことができる。
【００１８】
例えば、計算する手段により計算されたＲＴＴの中で最小のＲＴＴを適切なＲＴＴとして選択する。
【００１９】
また、本発明をプログラムとしての観点から観ることもできる。すなわち、本発明のプログラムは、情報処理装置にインストールすることにより、その情報処理装置に、サーバ装置との間の時刻差を一定値となるように制御することでサーバ装置に時刻またはクロック周波数を同期させるクライアント装置としての機能を実現するプログラムにおいて、クライアント装置とサーバ装置との間で送受信される信号のＲＴＴを、この信号の複数をサンプルとして抽出して計算する機能と、計算する機能により計算されたＲＴＴのバラツキを判定する機能と、この判定する機能の判定結果に基づきサンプル数を調整する機能と、を実現することを特徴とする。
【発明の効果】
【００２０】
輻輳などによるジッタの多いネットワーク環境でも、安定して高精度な時刻同期またはクロック周波数同期を実現できる。
【発明を実施するための最良の形態】
【００２１】
（本発明の第一の実施の形態）
本発明の第一の実施の形態に係るクライアント装置１およびサーバ装置２を備える周波数・時刻同期システム３の構成を図１に示す。図１は、クライアント装置１およびサーバ装置２を含む周波数・時刻同期システム３のブロック構成図である。この周波数・時刻同期システム３は、クライアント装置１の時刻またはクロック周波数をサーバ装置２の時刻またはクロック周波数に同期させるものである。なお、クライアント装置１とサーバ装置２との間で時刻同期が確立されれば、クライアント装置１とサーバ装置２との間のクロック周波数同期も確立される。よって、以下では、時刻同期について説明し、クロック周波数同期についての説明は省略する。
【００２２】
クライアント装置１は、サーバ装置２に対し、図１１に示す基本原理で説明したものと同様な同期要求パケット５１を送信するための同期要求パケット送信部１０と、サーバ装置２から送信される先に示したものと同様な同期応答パケット５３を受信するための同期応答パケット受信部１１とを備える。さらに、同期要求パケット送信部１０および同期応答パケット受信部１１に時刻情報を供給すると共に、クライアント装置１の外部に時刻情報を出力するためのクライアント時刻発生部１２を備える。
【００２３】
また、クライアント装置１とサーバ装置２との間の信号のＲＴＴのバラツキの影響を吸収しつつＲＴＴに基づきクライアント装置１とサーバ装置２との間の時刻差ｄＴを計算する適応型フィルタリング部１３を備える。さらに、適応型フィルタリング部１３から伝達された時刻差ｄＴが目標値となるように、クライアント時刻発生部１２に対する位相・周波数制御を実施するクライアント時刻制御部１４を備える。なお、時刻差ｄＴの目標値としては“０”（時刻同期の場合であり、この場合はクロック周波数同期も達成）も有り得るし、“０”以外の値（周波数同期の場合）も有り得る。
【００２４】
また、適応型フィルタリング部１３は、ＲＴＴを、クライアント装置１とサーバ装置２との間で送受信される信号の複数をサンプルとして抽出して計算する手段としてのＲＴＴ計算部１５と、ＲＴＴ計算部１５により計算されたＲＴＴのバラツキを判定する手段としてのバラツキ判定部１６と、このバラツキ判定部１６の判定結果に基づきサンプル数を調整する手段としてのサンプル数調整部１７と、を備える。
【００２５】
また、時刻差計算部１８は、ＲＴＴ計算部１５から出力されるＲＴＴの値に基づいて時刻差ｄＴを計算する。この時刻差ｄＴは、クライアント時刻制御部１４に伝達される。
【００２６】
また、サーバ装置２は、クライアント装置１から同期要求パケット５１を受信するための同期要求パケット受信部２０と、クライアント装置１に同期応答パケット５３を送信するための同期応答パケット送信部２１と、同期要求パケット受信部２０および同期応答パケット送信部２１に、時刻情報を供給するためのサーバ時刻発生部２２とを備える。このサーバ時刻発生部２２は、周波数・時刻同期システム３の基準時刻を発生する。
【００２７】
周波数・時刻同期システム３におけるクライアント装置１およびサーバ装置２は、それぞれ図示せぬメモリ、ＣＰＵ(Central Processing Unit)、入出力ポートなどを有する。このＣＰＵは、メモリなどから図示せぬ制御プログラムを読み込んで実行する。これにより、クライアント装置１には、同期要求パケット送信部１０、同期応答パケット受信部１１、クライアント時刻発生部１２、適応型フィルタリング部１３、クライアント時刻制御部１４が実現される。また、サーバ装置２には、同期要求パケット受信部２０、同期応答パケット送信部２１、サーバ時刻発生部２２が実現される。
【００２８】
なお、ＣＰＵが実行する制御プログラムは、クライアント装置１、サーバ装置２の出荷前に、メモリなどに記憶されたものであっても、クライアント装置１、サーバ装置２の出荷後に、メモリなどに記憶されたものであってもよい。また、制御プログラムの一部がクライアント装置１、サーバ装置２の出荷後に、メモリに記憶されたものであってもよい。クライアント装置１、サーバ装置２の出荷後に、メモリなどに記憶される制御プログラムは、例えば、ＣＤ−ＲＯＭなどのコンピュータ読取可能な記録媒体に記憶されているものをインストールしたものであっても、インターネットなどの伝送媒体を介してダウンロードしたものをインストールしたものであってもよい。
【００２９】
次に、周波数・時刻同期システム３の動作について説明する。クライアント装置１は、同期要求パケット送信部１０から同期要求パケット送信時刻Ｔ１を書き込んだ同期要求パケット５１をサーバ装置２に送信する。基準時刻を発生するサーバ装置２は、同期要求パケット受信部２０で同期要求パケットを受信し、同期応答パケット送信部２１から同期応答パケット５３をクライアント装置１に送信する。
【００３０】
同期応答パケット５３には同期要求パケット送信時刻Ｔ１の他、同期要求パケット受信部２０が同期要求パケットを受信した同期要求パケット受信時刻Ｔ２と同期応答パケット送信部２１が同期応答パケット５３を送信した同期応答パケット送信時刻Ｔ３とが書き込まれている。また、クライアント装置１が同期応答パケット受信部１１で同期応答パケット５３を受信した時刻を同期応答パケット受信時刻Ｔ４とする。
【００３１】
なお、同期要求パケット送信部１０および同期応答パケット受信部１１が、同期要求パケット５１の送信および同期応答パケット５３の受信を行った時点において、クライアント時刻発生部１２から供給されている時刻情報を、それぞれ同期要求パケット送信時刻Ｔ１および同期応答パケット受信時刻Ｔ４として決定する。
【００３２】
同様に、同期要求パケット受信部２０および同期応答パケット送信部２１が、同期要求パケット５１の受信および同期応答パケット５３の送信を行った時点において、サーバ時刻発生部２２から供給されている時刻情報を、それぞれ同期要求パケット受信時刻Ｔ２および同期応答パケット送信時刻Ｔ３として決定する。
【００３３】
次に、適応型フィルタリング部１３の動作を図２および図３を参照して説明する。図２および図３は、適当型フィルタリング部１３の動作を説明するフローチャートである。適応型フィルタリング部１３は、各時刻Ｔ１〜Ｔ４に対し、図２および図３に示すステップＳ１〜ステップＳ１５の処理を行ってクライアント時刻発生部１２のサーバ時刻発生部２２に対する時刻差ｄＴをクライアント時刻制御部１４に対して出力する。
【００３４】
ここで、
Ｎ：サンプル数
Ｎ＿ｉｎｉｔ：サンプル数の初期値
Ｎ＿ｍｉｎ：サンプル数の下限
Ｎ＿ｍａｘ：サンプル数の上限
Ｍ：インデックスの現在値
ｔ１［］，ｔ２［］，ｔ３［］，ｔ４［］：Ｔ１〜Ｔ４のサンプル値を格納する配列
ｒ［］：ＲＴＴを格納する配列
Ｋ：ｒ［］の最小値、すなわちＲＴＴが最小値となる配列のインデックス
Ｆ＿ｍｉｎ（ｒ［］）：配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝の中からＲＴＴが最小値となる配列のインデックスを返す関数
Ｆ＿ｉｎｃ（ｒ［］，Ｎ）：配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のバラツキが「大きい」と判定する関数
Ｆ＿ｄｅｃ（ｒ［］，Ｎ）：配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のバラツキが「小さい」と判定する関数
とする。
【００３５】
図２に示すように、まず、適応型フィルタリング部１３は、ＲＴＴ計算部１５におけるサンプル数およびインデックスを初期化する（ステップＳ１：Ｎ＝Ｎ＿ｉｎｉｔ；Ｍ＝０；）。ＲＴＴ計算部１５は、Ｔ１，Ｔ２，Ｔ３，Ｔ４を読み込む（ステップＳ２）。ＲＴＴ計算部１５は、読み込んだＴ１〜Ｔ４を配列に格納する（ステップＳ３：ｔ１［Ｍ］＝Ｔ１；ｔ２［Ｍ］＝Ｔ２；ｔ３［Ｍ］＝Ｔ３；ｔ４［Ｍ］＝Ｔ４；）。ＲＴＴ計算部１５は、ＲＴＴを求めてこれを配列に格納する（ステップＳ４：ｒ［Ｍ］＝ｔ４［Ｍ］−ｔ３［Ｍ］＋ｔ２［Ｍ］−ｔ１［Ｍ］；）。ＲＴＴ計算部１５は、インデックスを１つ増加させる（ステップＳ５：Ｍ＋１；）。このときに、ＲＴＴ計算部１５は、配列長を示すインデックスＭが所定のサンプル数Ｎに満たない場合は（ステップＳ６のＮｏ）、ステップＳ２に戻る（ステップＳ６：ｉｆ（Ｍ＜Ｎ）ｔｈｅｎ｛Ｓ２；｝）。
【００３６】
ＲＴＴ計算部１５は、配列長を示すインデックスＭが所定のサンプル数Ｎ以上であれば（ステップＳ６のＹｅｓ）、配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝の中でＲＴＴが最小値となるインデックスをＫとする（ステップＳ７：Ｋ＝Ｆ＿ｍｉｎ（ｒ［］）；）。時刻差計算部１８は、ＲＴＴ計算部１５により計算されたＲＴＴ最小値に対する時刻差ｄＴを求める（ステップＳ８：ｄＴ＝｛ｔ１［Ｋ］−ｔ２［Ｋ］−ｔ３［Ｋ］＋ｔ４［Ｋ］｝／２；）。
【００３７】
バラツキ判定部１６は、ＲＴＴ計算部１５によるＲＴＴの計算結果から配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のバラツキを判定する。このバラツキの判定は、上述したように所定の関数によって判定しているが、その関数は、過去の経験値から導かれるものとなっている。例えば、使用するネットワークで輻輳が生じていない状態における平均的なＲＴＴと、そのときの標準偏差を実験データから求め、その各値と、配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝の平均値と標準偏差とを比較するなどを採用する。バラツキ判定の結果、バラツキ判定部１６がバラツキは「大きい」と判定し、かつ、サンプル数が上限に達していない場合は（ステップＳ９のＹｅｓ）、サンプル数調整部１７は、サンプル数を１つ増加させる（ステップＳ１０）。その後、処理はステップＳ２に戻る（ステップＳ９、Ｓ１０：ｉｆ（（Ｆ＿ｉｎｃ（ｒ［］，Ｎ）＝１）＆（Ｎ＜Ｎ＿ｍａｘ））ｔｈｅｎ｛Ｎ＋１；Ｓ２｝）。
【００３８】
ステップＳ１０において、サンプル数調整部１７がサンプル数を１つ増加させる様子を図４に示す。図４は、横軸に、例えば、サーバ時刻発生部２２による第１の時刻Ｔ３ａが、さらに所定時間後の第２の時刻Ｔ３ｂ、などの時刻からなる経過時間をとり、縦軸にその時刻を有するＲＴＴをとる。図４の黒丸は、経過時間に対応するＲＴＴの値を示すものである。図４では、黒丸の配置位置の上下幅、すなわちＲＴＴの最小値と最大値との差が後述する図５、図６よりも大きく、ＲＴＴのバラツキが大きい様子がわかる。図４の下部に示す両端に矢印を有する線分は、その線分の長さがサンプル範囲を示す。すなわち、線分が長いほどサンプル数が多いことを意味する。図４の例で、線分が下に行くほど長くなっている様子がわかる。図４では、最も上の１本目の線分のサンプル範囲で４つのＲＴＴが計算され、そのバラツキが「大きく」かつサンプル数が上限でないため、次の２本目の線分のサンプル範囲に拡大され、５つ目のＲＴＴが計算（算出）されている。このようにしてサンプル数が上限（＝８）となるまでサンプル範囲が拡大されて行き、上から５本目の線分のサンプル範囲で上限に達したことを示している。なお、５本目の線分からは長さが一定となっているのは、上述したように、５本目の線分の時点でサンプル数が上限（ここではＮ＿ｍａｘ＝８とした）に達しているためである。また、５本目の線分までスタート位置が同じであるのは、バラツキが「大きい」場合（かつ、サンプル数が上限に達していない場合）は、最も古いサンプル｛ｔ１［０］，ｔ２［０］，ｔ３［０］，ｔ［０］｝を廃棄しないためである。
【００３９】
ステップＳ９において、バラツキ判定部１６がバラツキが「大きい」と判定しなかった場合は（ステップＳ９のＮｏ：Ｆ＿ｉｎｃ（ｒ［］，Ｎ）＝０）、図３に示すステップＳ１１に移行する。
【００４０】
ステップＳ１１において、バラツキ判定部１６が配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のばらつきが「小さい」と判定した場合（かつ、サンプル数が下限数に比べ大きく、下限に達していない場合）は（ステップＳ１１のＹｅｓ：ｉｆ（（Ｆ＿ｄｅｃ（ｒ［］，Ｎ）＝１）＆（Ｎ＞Ｎｍｉｎ））ｔｈｅｎ  Ｓ１２  ｅｌｓｅ  Ｓ１４）、最も古いサンプル｛ｔ１［０］，ｔ２［０］，ｔ３［０］，ｔ４［０］｝および２番目に古いサンプル｛ｔ１［１］，ｔ２［１］，ｔ３［１］，ｔ４［１］｝を廃棄する（ステップＳ１２）。
Ｓ１２：ｆｏｒ（ｉ＝０；ｉ＜Ｎ−２；ｉ＋）｛
ｔ１［ｉ］＝ｔ１［ｉ＋２］
ｔ２［ｉ］＝ｔ２［ｉ＋２］
ｔ３［ｉ］＝ｔ３［ｉ＋２］
ｔ４［ｉ］＝ｔ４［ｉ＋２］
ｒ［ｉ］＝ｒ［ｉ＋２］
｝
ステップＳ１２の後、インデックスを２つ増加させ、かつ、サンプル数を１つ減少させてステップＳ２に戻る（ステップＳ１３：Ｍ＝Ｍ＋２；Ｎ−１；Ｓ２）。
【００４１】
ステップＳ１３において、サンプル数調整部１７がサンプル数を１つ減少させる様子を図５に示す。図５は、図４と同様に、横軸に経過時間をとり、縦軸にＲＴＴをとる。図５の黒丸は、経過時間に対応するＲＴＴの値を示すものである。図５では、黒丸の配置位置の上下幅が図４と比べると小さく、ＲＴＴのバラツキが小さい様子がわかる。図５の下部に示す両端に矢印を有する線分は、その線分の長さがサンプル範囲を示す。すなわち、線分が短いほどサンプル数が少ないことを意味する。図５の例で、線分が下に行くほど短くなっている様子がわかる。最も上の１本目に線分のサンプル範囲では６つのＲＴＴが算出されているが、そのＲＴＴのバラツキが小さく、かつ、サンプル数が下限（例えば４つ）に到達していないため、次の２本目の線分のサンプル範囲のサンプル数は５つとなり、時刻Ｔ３ｃから時刻Ｔ３ｇのサンプル範囲となっている。この２番目のサンプル範囲は「Ｍ＋２」、すなわち最初のサンプル範囲のスタートから２番目にくるもの（＝時刻Ｔ３ｃ）からスタートしている。この５つのＲＴＴのバラツキも小さく、かつ、サンプル数は下限でないため、３番目のサンプル範囲へ移行して行く。なお、３本目の線分からは長さが一定となっているのは、３本目の線分の時点でサンプル数が下限（ここではＮ＿ｍｉｎ＝４とした）に達しているためである。
【００４２】
また、ステップＳ１１で、バラツキ判定部１６が配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のばらつきが「中程度（大きくもなく小さくもない）」と判定した場合（あるいはサンプル数が上限または下限に達した場合）は（ステップＳ１１のＮｏ：ｉｆ（（Ｆ＿ｄｅｃ（ｒ［］，Ｎ）＝１）＆（Ｎ＞Ｎｍｉｎ））ｔｈｅｎ  Ｓ１２  ｅｌｓｅ  Ｓ１４）、最も古いサンプル｛ｔ１［０］，ｔ２［０］，ｔ３［０］，ｔ４［０］｝を廃棄する（ステップＳ１４）。
Ｓ１４：ｆｏｒ（ｉ＝０；ｉ＜Ｎ−１；ｉ＋）｛
ｔ１［ｉ］＝ｔ１［ｉ＋１］
ｔ２［ｉ］＝ｔ２［ｉ＋１］
ｔ３［ｉ］＝ｔ３［ｉ＋１］
ｔ４［ｉ］＝ｔ４［ｉ＋１］
ｒ［ｉ］＝ｒ［ｉ＋１］
｝
この場合には、インデックスを１つ増加させサンプル数は現状維持としてステップＳ２に戻る（ステップＳ１５：Ｍ＋１；Ｓ２）。
【００４３】
ステップＳ１５において、サンプル数調整部１７がサンプル数を現状維持とする様子を図６に示す。図６は、図４と同様に、横軸に経過時間をとり、縦軸にＲＴＴをとる。図６の黒丸は、経過時間に対応するＲＴＴの値を示すものである。図６では、黒丸の配置位置の上下幅が図４と比べると小さく、また、図５と比べると大きく、バラツキが「中程度」である様子がわかる。図６の下部に示す両端に矢印を有する線分は、その線分の長さがサンプル範囲を示す。図６の例では、時間が経過しても線分の長さは同じである様子がわかる。
【００４４】
クライアント時刻制御部１４は、適応型フィルタリング部１３が出力した時刻差ｄＴの値が目標値に近づくようにクライアント時刻発生部１２の位相・周波数の制御を実施する。時刻差ｄＴの目標値としては“０”（時刻同期の場合）も有り得るし、“０”以外の値（周波数同期の場合）も有り得る。また、本発明の実施の形態ではサンプル中からＲＴＴの最小値を選択しているが、この他の選択アルゴリズムも有り得る。例えば、ＲＴＴに対するフィルタリングを行い、遅延時間の平均値から大きく外れるパケットを除去し、遅延時間の平均値の近傍のデータだけをサンプルとして用いてもよい。または、ＲＴＴに対するフィルタリングを行い、前回のＲＴＴから推定される誤差範囲に収まるデータだけをサンプルとして用いてもよい。
【００４５】
このように、本発明の第一の実施の形態では、バラツキ判定部１６に２種類の関数（Ｆ＿ｉｎｃ（ｒ［］，Ｎ），Ｆ＿ｄｅｃ（ｒ［］，Ｎ））を設け、バラツキ判定部１６がＲＴＴのサンプル配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のバラツキを判定することにより、バラツキを「大きい」、「中程度」、「小さい」の３段階に分類している。
【００４６】
サンプル数調整部１７は、バラツキ判定部１６によりサンプル配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のバラツキが「大きい」と判定された場合には、新しいサンプル１個を追加することにより、サンプル数を１つ増加させる。
【００４７】
また、サンプル数調整部１７は、バラツキ判定部１６によりサンプル配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のバラツキが「中程度」と判定された場合には、新しいサンプル１個を追加し、かつ古いサンプル１個を廃棄することにより、サンプル数を現状維持とする。
【００４８】
また、サンプル数調整部１７は、バラツキ判定部１６によりサンプル配列｛ｒ［０］，ｒ［１］，…，ｒ［Ｎ−１］｝のバラツキが「小さい」と判定された場合には、新しいサンプル１個を追加し、かつ古いサンプル２個を廃棄することにより、サンプル数を１つ減少させる。
【００４９】
（本発明の第二の実施の形態）
本発明の第二の実施の形態として、バラツキ判定部１６がＲＴＴのバラツキを「大きい」「小さい」「中程度」と判定するアルゴリズムを有する周波数・時刻同期システム３について説明する。図７は、判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）の定義を説明するためのフローチャートである。図８は、判定関数Ｆ＿ｄｅｃ（ｘ［］，Ｎ）の定義を説明するためのフローチャートである。なお、第一の実施の形態と同一部材については、同一符号を用いて説明する。
【００５０】
Ｆ＿ｍｉｎ（ｘ［］，Ｎ）：配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中からＲＴＴが最小値となる配列のインデックスを返す関数
Ｆ＿２ｎｄ（ｘ［］，Ｎ）：配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中からＲＴＴが２番目に小さい値となる配列のインデックスを返す関数
Ｋ：ｘ［］の中でＲＴＴが最小値のインデックス
Ｌ：ｘ［］の中でＲＴＴが２番目に小さい値のインデックス
Δｒ＿ｉｎｃ：第１の閾値
Δｒ＿ｄｅｃ：第２の閾値
（Δｒ＿ｄｅｃ≦Δｒ＿ｉｎｃ）
として、上述の判定関数を次のように定義する。
【００５１】
図７に示すように、バラツキ判定部１６は、配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中から最小のＲＴＴを有するもの、すなわちＲＴＴが最小値となる配列を求める（ステップＳ２０：Ｋ＝Ｆ＿ｍｉｎ（ｘ［］，Ｎ）；）。次に、バラツキ判定部１６は、配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中から２番目に小さいＲＴＴの値を有する配列を求める（ステップＳ２１：Ｌ＝Ｆ＿２ｎｄ（ｘ［］，Ｎ）；）。次に、バラツキ判定部１６は、これら２つのＲＴＴの差分を求める（ステップＳ２２）。バラツキ判定部１６は、その差分が第１の閾値Δｒ＿ｉｎｃより大きい場合は（ステップＳ２２のＹｅｓ）、判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）の値を「１」とする（ステップＳ２３）。また、バラツキ判定部１６は、その差分がΔｒ＿ｉｎｃ以下の場合は（ステップＳ２２のＮｏ）、判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）の値を「０」とする（ステップＳ２４）。判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）は以上のように定義されるものである。
【００５２】
また、図８に示すように、バラツキ判定部１６は、配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中から最小のＲＴＴを有するもの、すなわちＲＴＴが最小値となる配列を求める（ステップＳ３０：Ｋ＝Ｆ＿ｍｉｎ（ｘ［］，Ｎ）；）。次に、バラツキ判定部１６は、配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中から２番目に小さいＲＴＴの値を有する配列を求める（ステップＳ３１：Ｌ＝Ｆ＿２ｎｄ（ｘ［］，Ｎ）；）。次に、バラツキ判定部１６は、これら２つのＲＴＴの差分を求める（ステップＳ３２）。バラツキ判定部１６は、その差分が第２の閾値Δｒ＿ｄｅｃ以下の場合は（ステップＳ３２のＹｅｓ）、判定関数Ｆ＿ｄｅｃ（ｘ［］，Ｎ）の値を「１」とする（ステップＳ３３）。また、バラツキ判定部１６は、その差分が第２の閾値Δｒ＿ｄｅｃより大きい場合は（ステップＳ３２のＮｏ）、判定関数Ｆ＿ｄｅｃ（ｘ［］，Ｎ）の値を「０」とする（ステップＳ３４）。
【００５３】
第１の閾値Δｒ＿ｉｎｃおよび第２の閾値Δｒ＿ｄｅｃの値は、使用するネットワークで輻輳が生じていない状態における平均的なジッタに基づいて設定する。例えば、そのような平均的なジッタの値の＋２０％の値を第１の閾値Δｒ＿ｉｎｃとし、−２０％を第２の閾値Δｒ＿ｄｅｃとする。この他、ジッタを統計処理し、標準偏差σを求め、＋σを第１の閾値Δｒ＿ｉｎｃとし、−σを第２の閾値Δｒ＿ｄｅｃとしてもよい。バラツキ判定部１６は、Ｆ＿ｉｎｃ（ｘ［］，Ｎ）＝１であり、Ｆ＿ｄｅｃ（ｘ［］，Ｎ）＝０であればバラツキが「大きい」と判定する。また、バラツキ判定部１６は、Ｆ＿ｉｎｃ（ｘ［］，Ｎ）＝０であり、Ｆ＿ｄｅｃ（ｘ［］，Ｎ）＝１であればバラツキが「小さい」と判定する。また、バラツキ判定部１６は、Ｆ＿ｉｎｃ（ｘ［］，Ｎ）＝０であり、Ｆ＿ｄｅｃ（ｘ［］，Ｎ）＝０であればバラツキが「中程度」と判定する。
【００５４】
（本発明の第三の実施の形態）
本発明の第三の実施の形態として、バラツキ判定部１６がＲＴＴのバラツキを「大きい」「小さい」「中程度」と判定する本発明の第二の実施の形態とは異なるアルゴリズムを有する周波数・時刻同期システム３について説明する。図９は、判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）の定義を説明するためのフローチャートである。図１０は、判定関数Ｆ＿ｄｅｃ（ｘ［］，Ｎ）の定義を説明するためのフローチャートである。なお、第一の実施の形態と同一部材については同一の符号を用いて説明する。
【００５５】
Ｆ＿ｍｉｎ（ｘ［］，Ｎ）：配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中からＲＴＴが最小値となる配列のインデックスを返す関数
Ｆ＿２ｎｄ（ｘ［］，Ｎ）：配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中からＲＴＴが２番目に小さい値となる配列のインデックスを返す関数
Ｋ：ｘ［］の中でＲＴＴが最小値のインデックス
Ｌ：ｘ［］の中でＲＴＴが２番目に小さい値のインデックス
δ＿ｉｎｃ：第３の閾値（＞１）
δ＿ｄｅｃ：第４の閾値（＞１）
（δ＿ｄｅｃ≦δ＿ｉｎｃ）
として、上述の判定関数を次のように定義する。
【００５６】
図９に示すように、バラツキ判定部１６は、配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中からＲＴＴが最小値となる配列を求める（ステップＳ４０：Ｋ＝Ｆ＿ｍｉｎ（ｘ［］，Ｎ）；）。次に、バラツキ判定部１６は、配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中からＲＴＴが２番目に小さい値となる配列を求める（ステップＳ４１：Ｌ＝Ｆ＿２ｎｄ（ｘ［］，Ｎ）；）。次に、バラツキ判定部１６は、これらの値の比となる「ｘ［Ｌ］／ｘ［Ｋ］」を求める（ステップＳ４２）。バラツキ判定部１６は、その比が第３の閾値δ＿ｉｎｃより大きい場合は（ステップＳ４２のＹｅｓ）、判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）の値を「１」とする（ステップＳ４３）。また、バラツキ判定部１６は、その比が第３の閾値δ＿ｉｎｃ以下の場合は（ステップＳ４２のＮｏ）、判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）の値を「０」とする（ステップＳ４４）。
【００５７】
また、図１０に示すように、バラツキ判定部１６は、配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中からＲＴＴが最小値となる配列を求める（ステップＳ５０：Ｋ＝Ｆ＿ｍｉｎ（ｘ［］，Ｎ）；）。次に、バラツキ判定部１６は、配列｛ｘ［０］，ｘ［１］，…，ｘ［Ｎ−１］｝の中からＲＴＴが２番目に小さい値となる配列を求める（ステップＳ５１：Ｌ＝Ｆ＿２ｎｄ（ｘ［］，Ｎ）；）。次に、バラツキ判定部１６は、これらの値の比となる「ｘ［Ｌ］／ｘ［Ｋ］」を求める（ステップＳ５２）。バラツキ判定部１６は、その比が第４の閾値δ＿ｄｅｃ以下の場合は（ステップＳ５２のＹｅｓ）、判定関数Ｆ＿ｄｅｃ（ｘ［］，Ｎ）の値を「１」とする（ステップＳ５３）。また、バラツキ判定部１６は、その比が第４の閾値δ＿ｄｅｃより大きい場合は（ステップＳ５２のＮｏ）、判定関数Ｆ＿ｄｅｃ（ｘ［］，Ｎ）の値を「０」とする（ステップＳ５４）。
【００５８】
第３の閾値δ＿ｉｎｃおよび第４の閾値δ＿ｄｅｃの値は、使用するネットワークで輻輳が生じていない状態における平均的なジッタに基づいて設定する。具体的に設定値を求める方法としては、第二の実施の形態における各閾値を求める方法やその他の方法を採用することができる。バラツキ判定部１６は、Ｆ＿ｉｎｃ（ｘ［］，Ｎ）＝１であり、Ｆ＿ｄｅｃ（ｘ［］，Ｎ）＝０であればバラツキが「大きい」と判定する。また、バラツキ判定部１６は、Ｆ＿ｉｎｃ（ｘ［］，Ｎ）＝０であり、Ｆ＿ｄｅｃ（ｘ［］，Ｎ）＝１であればバラツキが「小さい」と判定する。また、バラツキ判定部１６は、Ｆ＿ｉｎｃ（ｘ［］，Ｎ）＝０であり、Ｆ＿ｄｅｃ（ｘ［］，Ｎ）＝０であればバラツキが「中程度」と判定する。
【００５９】
（プログラムの実施例）
情報処理装置にインストールすることにより、その情報処理装置に、本発明の実施の形態のクライアント装置１の機能を実現するプログラム（以下、本プログラムという）の実施例を説明する。ここで、情報処理装置とは、例えば、汎用のコンピュータ装置である。
【００６０】
本プログラムは記録媒体に記録されることにより、情報処理装置は、この記録媒体を用いて本プログラムをインストールすることができる。あるいは、本プログラムを保持するサーバからネットワークを介して直接、情報処理装置に本プログラムをインストールすることもできる。
【００６１】
これにより、情報処理装置を用いて、本発明の実施の形態のクライアント装置１における同期要求パケット送信部１０、同期応答パケット受信部１１、クライアント時刻発生部１２、適応型フィルタリング部１３、クライアント時刻制御部１４の機能を実現することができる。なお、これ以外の機能についてもソフトウェアによって実現可能な機能については、本プログラムによって実現してもよい。また、サーバ装置２の機能についてもソフトウェアによって実現可能な機能については、本プログラムによって実現してもよい。
【００６２】
なお、上述した本プログラムの実施例は、情報処理装置によって直接実行可能なものだけでなく、ハードディスクなどにインストールすることによって実行可能となるものも含む。また、圧縮されたり、暗号化されたりしたものも含む。
【００６３】
（その他の実施の形態）
本発明の実施の形態は、本発明の要旨を逸脱しない限り、様々に変更が可能である。例えば、図１に示す周波数・時刻同期システム３は、クライアント装置１とサーバ装置２との間を、有線回線であるかのように図示した。しかしながら、クライアント装置１とサーバ装置２との間の回線は、有線回線であっても無線回線であってもよい。また、ステップＳ２２、Ｓ４２の「＞」を「≧」とし、ステップＳ３２、Ｓ５２の「≦」を「＜」としてもよい。さらに、この符号の一方のみを変更し、他方をそのままとしてもよい。
【００６４】
また、上述の各実施の形態では、往復遅延時間ＲＴＴの最小値を適切な往復遅延時間として選択しているが最小値がバラツキの標準偏差σ外であるときは、最小値ではなく２番目に小さい値を採用するようにしてもよい。さらには、常に２番目に小さい値または３番目に小さい値など他の値を適切な往復遅延時間ＲＴＴとしてもよい。また、第二、第三の実施の形態ではＲＴＴが２番目に小さいものを利用しているが、２番目ではなく、３番目に小さいものや４番目に小さいものなどを利用して最小値のものと併せて利用するようにしてもよい。また、第二、第三の実施の形態では、ＲＴＴが最小値のものと２番目に小さいものの２つを利用しているが、利用する配列としては３つ以上としてもよい。
【００６５】
上述の実施の形態では、クライアント装置１が出力する時刻情報の用途については述べていない。例えば、この時刻情報を図示外の他のクライアント装置に供給することにより、そのクライアント装置もサーバ装置２の時刻と同期が可能になる。また、サーバ装置２が時刻Ｔ４を入手できるようにすることで、サーバ装置２のサーバ時刻発生部２２の位相または周波数を制御するようにしてもよい。また、各実施の形態では、ＲＴＴを利用しているが、ＲＴＴではなく、片側の遅延時間Ｄ１、Ｄ２の一方のみを利用して制御するようにしてもよい。
【００６６】
また、図１では、説明を分り易くするために、クライアント時刻発生部１２、適応型フィルタリング部１３、クライアント時刻制御部１４をそれぞれ異なる機能ブロックとして図示した。しかしながら、これらの機能ブロックを１つの機能ブロックに集約してもよい。また、クロック周波数同期を行うときは、時刻差ｄｔを「０」あるいは適当な値とし、その値を目標として制御することとなる。
【図面の簡単な説明】
【００６７】
【図１】本発明の第一の実施の形態に係る周波数・時刻同期システムの構成図である。
【図２】図１に示すクライアント装置の適応型フィルタリング部の動作を示すフローチャートである。
【図３】図２に示すフローチャートの続きとなるフローチャートである。
【図４】図１に示すクライアント装置の適応型フィルタリング部におけるサンプル数増加処理を説明するための図である。
【図５】図１に示すクライアント装置の適応型フィルタリング部におけるサンプル数減少処理を説明するための図である。
【図６】図１に示すクライアント装置の適応型フィルタリング部におけるサンプル数維持処理を説明するための図である。
【図７】本発明の第二の実施の形態に係る周波数・時刻同期システム中の適応型フィルタリング部におけるバラツキ判定手順を示すフローチャートであり、判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）の定義を説明するためのフローチャートである。
【図８】本発明の第二の実施の形態に係る周波数・時刻同期システム中の適応型フィルタリング部におけるバラツキ判定手順を示すフローチャートであり、判定関数Ｆ＿ｄｅｃ（ｘ［］，Ｎ）の定義を説明するためのフローチャートである。
【図９】本発明の第三の実施の形態に係る周波数・時刻同期システム中の適応型フィルタリング部におけるバラツキ判定手順を示すフローチャートであり、判定関数Ｆ＿ｉｎｃ（ｘ［］，Ｎ）の定義を説明するためのフローチャートである。
【図１０】本発明の第三の実施の形態に係る周波数・時刻同期システム中の適応型フィルタリング部におけるバラツキ判定手順を示すフローチャートであり、判定関数Ｆ＿ｄｅｃ（ｘ［］，Ｎ）の定義を説明するためのフローチャートである。
【図１１】従来例を示す図で、パケット網における同期方式として標準的に用いられているＮＴＰやＳＮＴＰの基本原理を説明するための図である。
【符号の説明】
【００６８】
１  クライアント装置、２  サーバ装置、３  周波数・時刻同期システム、１０  同期要求パケット送信部、１１  同期応答パケット受信部、１２  クライアント時刻発生部、１３  適応型フィルタリング部（計算する手段、判定する手段、調整する手段）、１４  クライアント時刻制御部、１５  ＲＴＴ計算部（計算する手段）、１６  バラツキ判定部（判定する手段）、１７  サンプル数調整部（調整する手段）、１８  時刻差計算部、２０  同期要求パケット受信部、２１  同期応答パケット送信部、２２  サーバ時刻発生部、５１  同期要求パケット、５３  同期応答パケット
【図１】
2010028684.tif 000003
【図２】
2010028684.tif 000004
【図３】
2010028684.tif 000005
【図４】
2010028684.tif 000006
【図５】
2010028684.tif 000007
【図６】
2010028684.tif 000008
【図７】
2010028684.tif 000009
【図８】
2010028684.tif 000010
【図９】
2010028684.tif 000011
【図１０】
2010028684.tif 000012
【図１１】
2010028684.tif 000013