(57)【要約】【課題】ネットワーク経由で時刻同期を行うＨｏｔ／Ｓｔａｎｄｂｙ構成の各装置の時刻同期の精度を向上させる。【解決手段】複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれかに同期する被同期クロックを備える複数のネットワーク装置を代表して、各同期元クロック装置との通信が行われる第１のインタフェースを備える第１のネットワーク装置が実行するネットワーク装置の時刻同期方法である。第１のネットワーク装置は、第２のインタフェースを通じて、他のネットワーク装置との間で、他のネットワーク装置と同期元クロック装置のいずれかとの間のメッセージの転送を行い、第１のインタフェースを通じてやり取りされる他のネットワーク装置と同期元クロック装置のいずれかとの間のメッセージを検出した場合に、第３のインタフェースを通じて、他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する。【選択図】図２０
2019080288.tif 000002
【特許請求の範囲】
【請求項１】
１又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか１つに同期する被同期クロックを備える複数のネットワーク装置を代表して、前記１又は複数の同期元クロック装置との通信が行われる第１のインタフェースを備える第１のネットワーク装置が、
前記第１のインタフェースを通じて行われる通信を監視し、
第２のインタフェースを通じて、他のネットワーク装置との間で、前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージの転送を行い、
前記第１のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する、
ネットワーク装置の時刻同期方法。
【請求項２】
前記第１のネットワーク装置が、
前記第３のインタフェースを通じて取得された前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを第１の記憶部に記録し、
前記他のネットワーク装置からの取得要求に応じて、前記第１の記憶部に格納されている前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを、前記第２のインタフェースを通じて、送信する、
請求項１に記載のネットワーク装置の時刻同期方法。
【請求項３】
前記複数のネットワーク装置のそれぞれに備えられる被同期クロックが、
タイムスタンプの取得要求を受けた場合に、前記被同期クロックがアクセス可能な第２の記憶部にタイムスタンプを記録し、
前記第１のネットワーク装置が、
前記処理として、前記第１のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックにタイムスタンプの取得要求を送信する、
請求項１に記載のネットワーク装置の時刻同期方法。
【請求項４】
前記第１のネットワーク装置が、
複数の同期元クロック装置のそれぞれのアドレスを記憶する第３の記憶部にアドレスが記憶される同期元クロック装置から、前記複数のネットワーク装置それぞれに備えられる被同期クロックの同期元を選択し、
前記他のネットワーク装置に、前記他のネットワーク装置に備えられる被同期クロックの同期元として選択された同期元クロック装置のアドレスを前記第２のインタフェースを通じて通知する、
請求項２又は３に記載のネットワーク装置の時刻同期方法。
【請求項５】
前記第１のネットワーク装置は、
前記第１のインタフェースにおいて、前記複数のネットワーク装置のいずれかと前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、メッセージの識別情報とタイムスタンプの参照先の被同期クロックとの対応付けを記憶する第４の記憶部に基づいて、前記検出されたメッセージの識別情報に対応する被同期クロックを特定し、
前記特定された被同期クロックを備えるネットワーク装置に対して、前記処理を実行
する、
請求項１から４のいずれか一項に記載のネットワーク装置の時刻同期方法。
【請求項６】
前記複数のネットワーク装置のそれぞれは、
前記１又は複数の同期元クロック装置のうちの１つの同期元クロック装置から自装置へのメッセージを受信した場合に、前記受信したメッセージの識別情報と自装置に備えられる被同期クロックとの対応付けを前記第４の記憶部に記録し、
前記対応付けを他のネットワーク装置に通知し、
他のネットワーク装置から、メッセージの識別情報と前記他のネットワーク装置に備えられる被同期クロックとの対応付けの通知を受けた場合に、前記第４の記憶部に、前記通知された対応付けを記録する、
請求項５に記載のネットワーク装置の時刻同期方法。
【請求項７】
前記第１のネットワーク装置に備えられるプロセッサが、
前記第１のインタフェースのドライバプログラムを実行することによって、前記第１のインタフェースを通じてやり取りされる他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する、
請求項１から６のいずれか一項に記載のネットワーク装置の時刻同期方法。
【請求項８】
前記複数のネットワーク装置のそれぞれは、被同期クロックが同期する同期元クロックを備える第１の同期元クロック装置と前記第１のインタフェースとの間の、前記被同期クロックのタイムスタンプに基づいて算出される伝搬遅延に基づいて、前記被同期クロックの前記第１の同期元クロック装置に備えられる同期元クロックからのオフセットが０になるように前記被同期クロックを補正し、
前記第１のネットワーク装置は、
前記複数のネットワーク装置のそれぞれについて、前記オフセットに基づいて、前記１又は複数の同期元クロック装置の中から前記伝搬遅延の変動のより小さい同期元クロック装置を選択する、
請求項１から７のいずれか一項に記載のネットワーク装置の時刻同期方法。
【請求項９】
前記第１のネットワーク装置は、
前記１又は複数の同期元クロック装置のうち、前記オフセットの絶対値が第１の閾値より大きく、且つ、前記オフセットの変動値が第２の閾値より大きい同期元クロック装置を、選択対象から除外する、
請求項８に記載のネットワーク装置の時刻同期方法。
【請求項１０】
前記第１のネットワーク装置が、
前記１又は複数の同期元クロック装置のうち、少なくとも、前記オフセットの所定期間過去の分散値の累積値がより小さい、又は、前記オフセットと変動値の前記所定期間の累積値がより０に近い同期元クロック装置を選択する、
請求項８又は９に記載のネットワーク装置の時刻同期方法。
【請求項１１】
前記第１のネットワーク装置が、
前記１又は複数の同期元クロック装置のうち、被同期クロックに基づくＴＡＩ（International Atomic Time）の不連続が検出されたネットワーク装置の同期元の同期元クロ
ック装置を、選択対象から除外する、
請求項８から１０のいずれか一項に記載のネットワーク装置の時刻同期方法。
【請求項１２】
前記第１のネットワーク装置が、
前記複数のネットワーク装置について、
所定の周期で、前記ＴＡＩの値とＴＡＩの変動値の平均値とを取得し、
前記平均値に基づいて前記ＴＡＩの予測値を算出し、
前記ＴＡＩの予測値と前記被同期クロックから取得されるＴＡＩの実測値との差分が第４の閾値より大きい場合に、前記被同期クロックの不連続を検出する、
請求項１１に記載のネットワーク装置の時刻同期方法。
【請求項１３】
１又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか１つに同期する被同期クロックと、
他の被同期クロックを備える他のネットワーク装置を代表して、前記１又は複数の同期元クロック装置との通信が行われる第１のインタフェースと、
他のネットワーク装置との間で、前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージの転送が行われる第２のインタフェースと、
前記他のネットワーク装置との接続される第３のインタフェースと、
前記第１のインタフェースを通じて行われる通信を監視し、前記第１のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する制御部と、
を備えるネットワーク装置。
【請求項１４】
同期元クロックを備える、１又は複数の同期元クロック装置と、
前記１又は複数の同期元クロック装置それぞれに備えられる同期元クロックのうちのいずれか１つに同期する被同期クロックを備える複数のネットワーク装置と、
を含み、
前記複数のネットワーク装置のうちの１つは、
他のネットワーク装置を代表して前記１又は複数の同期元クロック装置との通信が行われる第１のインタフェースと、
他のネットワーク装置との間で、前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージの転送が行われる第２のインタフェースと、
前記他のネットワーク装置との接続される第３のインタフェースと、
前記第１のインタフェースを通じて行われる通信を監視し、前記第１のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する制御部と、
を備えるネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク装置の時刻同期方法、ネットワーク装置、及び、ネットワークシステムに関する。
【背景技術】
【０００２】
ネットワークで接続された複数の装置間で動作タイミングを合わせた処理を行うために、装置間では、ネットワーク経由による時刻同期が行われる。高精度の時刻同期が行われることで、より精度高く動作タイミングを合わせることができる。
【０００３】
ネットワーク経由による高精度な時刻同期を行うための技術の一つに、例えば、ＰＴＰ（Precision Time Protocol）がある。ＰＴＰでは、マスタクロックとスレーブクロック
との間でメッセージを送信及び受信し、マスタクロックとスレーブクロックとの間の伝送遅延を求め、伝送遅延を用いて、マスタクロックとの誤差が小さくなるようにスレーブクロックを調整する。ＰＴＰでは、タイムスタンプの取得にＯＳ（Operating System）を通さないハードウェアアシストを使用することや、測定回数（メッセージの送信回数）を増やして測定精度が良いデータを抽出することにより、マスタクロックからのスレーブクロックの時刻オフセットであるＯＦＭ（Offset From Master）を高精度で算出する。これによって、ＰＴＰでは、μ秒オーダ又は０．１μ秒オーダの精度で時刻同期を実現する。
【０００４】
また、スレーブクロックは冗長化されることが多い。スレーブクロックの冗長化構成には、例えば、Ｈｏｔ／Ｈｏｔ構成とＨｏｔ／Ｓｔａｎｄｂｙ構成とがある。Ｈｏｔ／Ｈｏｔ構成では、両方のスレーブクロックがマスタクロックと同期する。Ｈｏｔ／Ｓｔａｎｄｂｙ構成では、一方のスレーブクロックがマスタクロックと同期し、他方のスレーブクロックはマスタクロックと同期しているスレーブクロックに同期する。
【０００５】
Ｈｏｔ／Ｈｏｔ構成の場合には、各スレーブクロックはマスタクロック（外部ネットワーク）との通信可能なインタフェースを備える。Ｈｏｔ／Ｓｔａｎｄｂｙ構成の場合には、マスタクロック（外部ネットワーク）と通信可能なインタフェースは、どちらか一方のスレーブクロックに備えられるインタフェース１つとなる。Ｈｏｔ／Ｓｔａｎｄｂｙ構成において、マスタクロック（外部ネットワーク）と通信可能な１つのインタフェースは、例えば、代表インタフェースと称される。以下、代表インタフェースは、代表ＩＦと表記する。
【０００６】
例えば、ネットワーク経由の時刻同期の方法には、ＰＴＰの他に、例えば、ＮＴＰ（Network Time Protocol）がある。ＮＴＰでは、Ｈｏｔ／Ｓｔａｎｄｂｙ構成において、外
部時計と接続していない計算機は、外部時計と接続する計算機から配信される時刻情報に内部時計を同期させる（例えば、特許文献１）。外部時計と接続する計算機からの時刻情報の配信は、装置間通信プログラムを通じて行われる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−３０５２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ＰＴＰにおいて、ＮＴＰと同様にしてＨｏｔ／Ｓｔａｎｄｂｙ構成をと
ると、例えば、代表ＩＦが動作するスレーブクロックから他のスレーブクロックへの時刻の配信に時間が掛かる。これにより、代表ＩＦが動作するスレーブクロックはＰＴＰマスタクロックにマイクロ秒オーダで同期できるものの、ＯＳやネットワークを経由することによって、他のスレーブクロックにおいてＰＴＰマスタクロックとの時刻同期の精度がミリ秒オーダになることがある。すなわち、ＰＴＰを実行しているものの、代表ＩＦが動作していないスレーブクロックにおいて、本来のＰＴＰの時刻同期の精度を得られない可能性がある。
【０００９】
本発明は、ネットワーク経由で時刻同期を行うＨｏｔ／Ｓｔａｎｄｂｙ構成の各装置の時刻同期の精度を向上可能なネットワーク装置の時刻同期方法、ネットワーク装置、及び、ネットワークシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、１又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか１つに同期する被同期クロックを備える複数のネットワーク装置を代表して、１又は複数の同期元クロック装置との通信が行われる第１のインタフェースを備える第１のネットワーク装置が実行するネットワーク装置の時刻同期方法である。第１のネットワーク装置は、第１のインタフェースを通じて行われる通信を監視し、第２のインタフェースを通じて、他のネットワーク装置との間で、他のネットワーク装置と１又は複数の同期元クロック装置のいずれかとの間のメッセージの転送を行い、第１のインタフェースを通じてやり取りされる他のネットワーク装置と１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、第３のインタフェースを通じて、他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する。
【発明の効果】
【００１１】
１つの側面として、ネットワーク経由で時刻同期を行うＨｏｔ／Ｓｔａｎｄｂｙ構成の各装置の時刻同期の精度を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、ＰＴＰの時刻同期ロジックの一例を示す図である。
【図２】図２は、ＰＴＰメッセージの共通部のフォーマットを示す図である。
【図３】図３は、第１実施形態に係る時刻同期システムのシステム構成の一例を示す図である。
【図４】図４は、パッケージのハードウェア構成の一例を示す図である。
【図５】図５は、ＰＴＰスレーブの機能構成の一例を示す図である。
【図６】図６は、スレーブアクセス先管理テーブルの一例である。
【図７】図７は、タイムスタンプ格納テーブルの一例である。
【図８】図８は、ＰＴＰマスタサーバ管理テーブルの一例である。
【図９Ａ】図９Ａは、タイムスタンプ制御部のＩＰパケット受信時の処理のフローチャートの一例である。
【図９Ｂ】図９Ｂは、タイムスタンプ制御部のＩＰパケット受信時の処理のフローチャートの一例である。
【図１０】図１０は、タイムスタンプ制御部のＩＰパケットの送信要求発生時の処理のフローチャートの一例である。
【図１１】図１１は、ＰＴＰスタックのＰＴＰメッセージ受信時の処理のフローチャートの一例である。
【図１２】図１２は、タイムスタンプ読出し処理のフローチャートの一例である。
【図１３】図１３は、装置時刻制御部の、タイムスタンプ収集依頼を受けた場合の処理のフローチャートの一例である。
【図１４】図１４は、装置時刻制御部のＰＴＰスタック監視処理のフローチャートの一例である。
【図１５】図１５は、ユニキャスト方式の場合の装置時刻制御部の処理のフローチャートの一例である。
【図１６Ａ】図１６Ａは、マルチキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。
【図１６Ｂ】図１６Ｂは、マルチキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。
【図１７】図１７は、図１６Ａ及び図１６Ｂに示される具体例における、代表ＩＦが動作するスレーブにおけるスレーブアクセス先管理テーブルの変遷の一例を示す図である。
【図１８】図１８は、図１６Ａ及び図１６Ｂに示される具体例における、代表ＩＦが動作していないスレーブにおけるスレーブアクセス先管理テーブルの変遷の一例を示す図である。
【図１９Ａ】図１９Ａは、ユニキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。
【図１９Ｂ】図１９Ｂは、ユニキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。
【図１９Ｃ】図１９Ｃは、ユニキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。
【図２０】図２０は、ＰＴＰメッセージの受信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。
【図２１】図２１は、ＰＴＰメッセージの送信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。
【図２２】図２２は、第１実施形態の変形例における、ユニキャスト方式の場合の装置時刻制御部の処理のフローチャートの一例である。
【図２３】図２３は、第１実施形態の変形例における、ユニキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。
【図２４】図２４は、具体例における、スレーブにおけるスレーブアクセス先管理テーブルの変遷の一例を示す図である。
【図２５】図２５は、第２実施形態に係るパッケージのハードウェア構成の一例を示す図である。
【図２６】図２６は、第２実施形態に係るスレーブの機能構成の一例を示す図である。
【図２７】図２７は、第２実施形態に係るタイムスタンプ格納テーブルの一例である。
【図２８】図２８は、第２実施形態に係るＰＴＰメッセージの受信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。
【図２９】図２９は、第２実施形態に係るＰＴＰメッセージの送信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。
【図３０】図３０は、時刻同期精度の判定処理のフローチャートの一例である。
【図３１】図３１は、時刻連続性チェック処理のフローチャートの一例である。
【発明を実施するための形態】
【００１３】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１４】
＜ＰＴＰの時刻同期ロジック＞
図１は、ＰＴＰの時刻同期ロジックの一例を示す図である。ＰＴＰでは、ＰＴＰマスタクロックを備える装置とＰＴＰスレーブクロックを備える装置との間で複数のＰＴＰメッセージがやり取りされる。ＰＴＰスレーブクロックを備える装置は、ＰＴＰメッセージの
送信時刻及び受信時刻のタイムスタンプに基づいて、ＰＴＰスレーブクロックをＰＴＰマスタクロックに同期させるための処理が行われる。なお、ＰＴＰマスタクロックを備える装置とＰＴＰスレーブクロックを備える装置との間のＰＴＰメッセージの伝搬経路は対称であることを前提とする。
【００１５】
以下、ＰＴＰマスタクロック、ＰＴＰスレーブクロックをそれぞれ、単に、マスタクロック、スレーブクロックと称する。また、以下、ＰＴＰマスタクロックを備える装置、ＰＴＰスレーブクロックを備える装置を、それぞれ、単に、マスタ、スレーブと称することがある。また、ＰＴＰマスタクロックを備える装置を、ＰＴＰマスタサーバ、マスタサーバと称することもある。また、以下、ＰＴＰメッセージを、単に、メッセージと称することがある。
【００１６】
例えば、マスタからは、所定の周期でＳｙｎｃメッセージが送信されている。Ｓｙｎｃメッセージの送信周期は、例えば、１秒である。
【００１７】
スレーブは、当該Ｓｙｎｃメッセージを受信すると、当該Ｓｙｎｃメッセージの受信時刻ｔ２を自身のスレーブクロックから取得する。また、当該Ｓｙｎｃメッセージのマスタクロックの送信時刻ｔ１は、例えば、マスタからのＦｏｌｌｏｗ＿Ｕｐメッセージによって送信される。スレーブは、当該Ｆｏｌｌｏｗ＿Ｕｐメッセージを受信することで、当該Ｓｙｎｃメッセージのマスタクロックの送信時刻ｔ１を取得する。なお、Ｆｏｌｌｏｗ＿Ｕｐメッセージはオプションの機能であり、Ｆｏｌｌｏｗ＿Ｕｐメッセージのオプションが採用されていない場合には、Ｓｙｎｃメッセージにマスタクロックの送信時刻ｔ１が含まれている。
【００１８】
次に、スレーブはマスタに対してＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを送信する。また、スレーブは、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの送信時刻ｔ３をスレーブクロックから取得する。マスタは、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを受信すると、当該Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの受信時刻ｔ４をマスタクロックから取得し、受信時刻ｔ４をＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージに含めてスレーブに送信する。
【００１９】
スレーブでは、スレーブクロックをマスタクロックに同期させるための処理として、例えば、時刻ｔ１〜ｔ４からマスタクロックに対するオフセットであるＯＦＭ（Offset From Master）を算出し、ＯＦＭが０に近づくようにスレーブクロックを調整する。スレーブクロックの調整は、例えば、スレーブクロックを加速又は減速することによって行われる。ＯＦＭに基づくスレーブックロックの調整は、例えば、スレーブクロック補正、ともいう。
【００２０】
ＯＦＭは、例えば、以下の数式１によって求められる。
【数１】
2019080288.tif 000003
ｔ＿ｍｓ、ｔ＿ｓｍは、それぞれ、マスタからスレーブ、スレーブからマスタへの片方
向の伝搬遅延時間とスレーブクロックのマスタクロックからのオフセットとを含む、メッセージの伝搬時間である。ＭＰＤ（Mean Path Delay）は、各方向の伝搬遅延時間の平均
であって、マスタとスレーブとの間の伝搬遅延時間を示す。
【００２１】
ＰＴＰでは、スレーブクロックのタイムスタンプは、ＯＳ（Operating System）を通さずに、例えば、スレーブクロックのドライバやネットワーク送受信にかかるドライバ等のＯＳよりも物理的にスレーブクロックやネットワークに近いプロセスから取得される。これによって、ＰＴＰでは、μ秒オーダの同期精度を達成している。
【００２２】
なお、ＯＦＭの算出（スレーブクロック補正）は、例えば、タイムスタンプの取得に関係する種別のＰＴＰメッセージが受信されたタイミングで実行される。例えば、Ｓｙｎｃメッセージが１秒周期で送信される場合には、ＯＦＭの算出（スレーブクロック補正）は、１秒周期で、Ｓｙｎｃメッセージ（又はＦｏｌｌｏｗ＿Ｕｐメッセージ）の受信時とＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージの受信時とに実行される。ＯＦＭの算出周期については、一定時間に計測した複数の測定データを振るいにかけるフィルタ機能を使う場合、パケット送受信周期とは別のフィルタ周期、例えば、Ｓｙｎｃメッセージの数倍周期ごと、に算出する場合もある。
【００２３】
図２は、ＰＴＰメッセージの共通部のフォーマットを示す図である。ＰＴＰは、ＵＤＰ（User Datagram Protocol）を用いるプロトコルである。また、ＰＴＰは、メッセージの送信にマルチキャストを用いる方式（以下、マルチキャスト方式）と、ユニキャストを用いる方式（以下、ユニキャスト方式）とがある。図２に示される共通部のフォーマットは、マルチキャスト方式及びユニキャスト方式で共通し、且つ、全ての種別のＰＴＰメッセージでも共通している部分のフォーマットである。
【００２４】
ＰＴＰメッセージには、ＵＤＰのポート番号３１９又は３２０が用いられる。ＵＤＰポート番号３１９は、タイムスタンプの取得に関係する種別のメッセージに用いられる。ＵＤＰポート番号３２０は、タイムスタンプの取得に関係しない種別のメッセージに用いられる。
【００２５】
ＵＤＰポート番号３１９が用いられるメッセージには、例えば、Ｓｙｎｃメッセージ、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージがある。ＵＤＰポート番号３２０が用いられるメッセージには、例えば、Ａｎｎｏｕｎｃｅメッセージ、Ｄｅｌａｙ＿ＲｅｓｐｏｎｓｅメッセージＦｏｌｌｏｗ＿Ｕｐメッセージがある。Ａｎｎｏｕｎｃｅメッセージは、ＰＴＰマスタの情報を配信するメッセージであって、例えば、２秒等の周期で送信される。
【００２６】
ＰＴＰメッセージの種別は、共通部の「メッセージ種別」（図中「msgType」）によっ
て示される。ドメイン番号は、共通部の「ドメイン番号」（図中「domain Number」）に
よって示される。ドメインは、ＰＴＰの論理境界を示す。同じドメイン番号を用いるマスタ、スレーブは、同じＰＴＰドメインに属する。
【００２７】
また、共通部の「source port Identity」に、ＰＴＰクロックを識別するクロックＩＤが含まれている。クロックＩＤは、例えば、ＰＴＰメッセージの通信に用いられているインタフェースのＭＡＣ（Media Access Control）アドレスから生成される。クロックＩＤは、例えば、「source port Identity」の先頭から６４ビットに格納されている。ＰＴＰクロックは、例えば、ドメイン番号とクロックＩＤとから識別される。
【００２８】
また、共通部の「シーケンス番号」によって、ＰＴＰメッセージの新しさが示される。例えば、シーケンス番号が大きいほど新しいＰＴＰメッセージであることが示される。
【００２９】
＜第１実施形態＞
図３は、第１実施形態に係る時刻同期システムのシステム構成の一例を示す図である。時刻同期システム１００は、例えば、ネットワーク装置１、ＰＴＰマスタサーバ２、ＰＴＰマスタサーバ３を含む。ネットワーク装置１、ＰＴＰマスタサーバ２、ＰＴＰマスタサーバ３は、例えば、ＩＰ（Internet Protocol）ネットワーク２０１に接続している。
【００３０】
マスタ２は、マスタクロックＡを備えている。マスタ３は、マスタクロックＢを備えている。ＰＴＰマスタクロック、マスタクロックＡ、マスタクロックＢは、それぞれ、「同期元クロック」の一例である。ＰＴＰマスタクロックを備える装置、ＰＴＰマスタ、マスタ２、マスタ３は、それぞれ、「同期元クロック装置」の一例である。
【００３１】
ネットワーク装置１は、例えば、時刻同期専用の装置、ゲートウェイ装置等である。ネットワーク装置１は、ＰＴＰスレーブ１０−１、１０−２を備える。図３では、スレーブ１０−１はＨｏｔ系である。図３では、スレーブ１０−２はＳｔａｎｄｂｙ系である。スレーブ１０−１はスレーブクロック１１０を備える。スレーブ１０−２はスレーブクロック１２０を備える。ＰＴＰスレーブクロック、スレーブクロック１１０、スレーブクロック１２０は、それぞれ、「被同期クロック」の一例である。ＰＴＰスレーブクロックを備える装置、ＰＴＰスレーブ１０−１、ＰＴＰスレーブ１０−２は、それぞれ、「ネットワーク装置」の一例である。
【００３２】
また、Ｈｏｔ系のスレーブ１０−１とＳｔａｎｄｂｙ系のスレーブ１０−２との間で、代表インタフェース（ＩＦ）１５０が共有されている。Ｈｏｔ系のスレーブ１０−１及びＳｔａｎｄｂｙ系のスレーブ１０−２は、代表ＩＦ  １５０を通じて、マスタ２又はマスタ３とＰＴＰメッセージの交換を行っている。ＰＴＰメッセージは、「メッセージ」の一例である。
【００３３】
代表ＩＦ  １５０は、Ｈｏｔ系のスレーブ１０−１とＳｔａｎｄｂｙ系のスレーブ１０−２とのいずれで動作してもよく、図３では、Ｈｏｔ系のスレーブ１０−１において動作している。また、代表ＩＦ  １５０は、マスタ２、３と通信するためのＩＰアドレスを１つ有している。代表ＩＦ  １５０のＩＰアドレスは、例えば、Ｈｏｔ系のスレーブ１０−１とＳｔａｎｄｂｙ系のスレーブ１０−２とのいずれで動作する場合でも変わらない。代表ＩＦ  １５０は、「第１のインタフェース」の一例である。スレーブとマスタとの間のＰＴＰメッセージの交換は、「第１のインタフェースを通じて行われる通信」の一例である。
【００３４】
図３に示される例では、Ｈｏｔ系のスレーブ１０−１のスレーブクロック１１０はマスタ２のマスタクロックＡに同期する。図３に示される例では、Ｓｔａｎｄｂｙ系のスレーブ１０−２のスレーブクロック１２０はマスタ３のマスタクロックＢに同期する。
【００３５】
第１実施形態では、代表ＩＦ  １５０は、Ｈｏｔ系のスレーブ１０−１において動作することとする。第１実施形態では、代表ＩＦ  １５０が動作するスレーブ１０−１は、代表ＩＦにおけるもう一方のスレーブ１０−２とマスタ３との間のメッセージの受信時刻及び送信時刻のタイムスタンプを、スレーブ１０−２に備えられるスレーブクロック１２０から取得する。また、第１実施形態では、スレーブ１０−１がスレーブ１０−２からタイムスタンプを取得する場合の通信は、他のアプリケーションの通信が通るインタフェースとは分離されたインタフェース間で行われる。また、スレーブ１０−２が備えるスレーブクロック１２０のタイムスタンプの取得は、当該分離されたインタフェースを通じて、また、ＯＳを経由せずに、ハードウェアアシストによって行われる。
【００３６】
スレーブ１０−２は、マスタ３との間のメッセージが代表ＩＦ  １５０において送信又
は受信された時点におけるスレーブ１０−２のスレーブクロック１２０のタイムスタンプを用いて、マスタ３のマスタクロックＢとの同期をとることができる。これによって、代表ＩＦ  １５０が動作していないスレーブ１０−２における時刻同期の精度を代表ＩＦ  １５０が動作するスレーブ１０−１と同じ程度の精度にすることができる。
【００３７】
代表ＩＦ  １５０が動作するスレーブ１０−１は、「第１のネットワーク装置」の一例である。タイムスタンプの取得の通信に用いられる、他のアプリケーションの通信が通るインタフェースとは分離されたインタフェースは、「第３のインタフェース」の一例である。アプリケーションの通信が通るインタフェースは、「第２のインタフェース」の一例である。
【００３８】
なお、Ｈｏｔ系とＳｔａｎｄｂｙ系との切替の制御は、例えば、ネットワーク装置１内の他のパッケージ、ネットワーク装置１とは異なる装置等によって行われる。第１実施形態では、スレーブのＨｏｔ系とＳｔａｎｄｂｙ系との切替の制御は、既存の技術のいずれが用いられてもよい。
【００３９】
なお、マスタ又はマスタクロックの数は、２つに限定されず、１つでも３つ以上であってもよい。また、パッケージ又はスレーブクロックの数は、３つ以上であってもよい。
【００４０】
＜装置構成＞
図４は、パッケージのハードウェア構成の一例を示す図である。パッケージは、ネットワーク装置１に搭載されているユニットカードである。パッケージは、ＰＴＰスレーブとして動作するハードウェアである。スレーブ１０−１として動作するパッケージ１０−１及びスレーブ１０−２として動作するパッケージ１０−２のいずれもハードウェア構成は同じである。そのため、図４では、パッケージ１０−１及びパッケージ１０−２それぞれの共通するハードウェア構成要素には同じ符号が付されている。また、パッケージ１０−１、１０−２を区別しない場合には、以下、パッケージ１０と称する。パッケージ１０は、「ネットワーク装置」の一例である。
【００４１】
パッケージ１０は、ハードウェア構成要素として、プロセッサ１０１、メモリ１０２、通信インタフェース１０３、通信インタフェース１０４、ブリッジ１０５、通信インタフェース１０６、ＰＴＰスレーブクロック１０７を備える。また、これらはバスにより互いに接続されている。
【００４２】
メモリ１０２は、例えば、メインメモリとして用いられるメモリである。メモリ１０２は、例えば、ＲＡＭ（Random Access Memory）のような半導体メモリを含む。メモリ１０２は、プロセッサ１０１に、例えば、所定の記憶装置に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。メモリ１０２の記憶領域には、例えば、ＯＳ、各通信インタフェースのドライバ、スレーブクロック１０７のドライバ、ＰＴＰスタック、時刻制御プログラムが保持されている。ＰＴＰスタックは、例えば、ＰＴＰに規定された処理を実行させるためのプログラムである。時刻制御プログラムは、Ｈｏｔ系及びＳｔａｎｄｂｙ系間の時刻制御を行うためのプログラムである。メモリ１０２は、「第１の記憶部」、「第３の記憶部」、「第４の記憶部」の一例である。通信インタフェースのドライバは、「第１のインタフェースのドライバプログラム」の一例である。
【００４３】
プロセッサ１０１は、メモリ１０２にロードされたプログラムを実行することによって、様々な処理を実行する。プロセッサ１０１は、１つに限られず、複数備えられてもよい。プロセッサ１０１は、「プロセッサ」の一例である。
【００４４】
通信ＩＦ  １０３は、ＩＰネットワーク２０１に接続するインタフェースである。通信ＩＦ  １０３は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。通信ＩＦ  １０３は、例えば、ＮＩＣ（Network Interface Card）、無線ＬＡＮ（Local Area Network）カード等である。以下、通信ＩＦ  １０３は、外部ネットワーク用通信ＩＦ  １０３と表記する。外部ネットワーク用通信ＩＦ  １０３は、「第１のインタフェース」の一例である。
【００４５】
代表ＩＦは論理インタフェースであり、物理インタフェースとしては外部ネットワーク用通信ＩＦ  １０３上で動作する。第１実施形態では、パッケージ１０−１の外部ネットワーク用通信ＩＦ  １０３上で代表ＩＦが動作するので、パッケージ１０−１の外部ネットワーク用通信ＩＦ  １０３は起動又は有効化されている。一方、第１実施形態では、パッケージ１０−２の外部ネットワーク用通信ＩＦ  １０３は起動又は有効化されていない。
【００４６】
通信ＩＦ  １０４は、ネットワーク装置１内のパッケージ１０間の接続に用いられるインタフェースである。通信ＩＦ  １０４は、例えば、ＮＩＣである。各パッケージ１０の通信ＩＦ  １０４間は、例えば、イーサネット（登録商標）で接続される。
【００４７】
通信ＩＦ  １０４は、パッケージ１０間のアプリケーションによる通信に用いられる。ＰＴＰはアプリケーション層であるので、ＰＴＰメッセージは、通信ＩＦ  １０４を通じて、他のパッケージ１０に転送される。以下、通信ＩＦ  １０４は、アプリ用通信ＩＦ  １０４と表記する。アプリ用通信ＩＦ  １０４は、「第２のインタフェース」の一例である。
【００４８】
通信ＩＦ  １０６は、ネットワーク装置１内のパッケージ１０間の接続に用いられるインタフェースである。通信ＩＦ  １０６は、例えば、シリアルポートである。各パッケージ１０の通信ＩＦ  １０６間では、例えば、シリアル通信が行われる。
【００４９】
通信ＩＦ  １０６は、他のパッケージ１０のスレーブクロック１０７のタイムスタンプを取得するために用いられる。以下、通信ＩＦ  １０６は、タイムスタンプ用通信ＩＦ  １０６と表記する。タイムスタンプ用通信ＩＦ  １０６は、「第３のインタフェース」の一例である。
【００５０】
このように、他のパッケージ１０のスレーブクロック１０７のタイムスタンプを取得するための経路を、アプリケーションのデータの経路と切り離すことによって、アプリケーションのデータの通信によって発生する伝送遅延の変化の影響を受けないようにすることができる。すなわち、通信ＩＦ  １０６間の通信の伝送遅延は、変動量がごく少ない。伝送遅延の変化は、例えば、通信の揺らぎ、とも称される。
【００５１】
ブリッジ１０５は、プロセッサ１０１、メモリ１０２、外部ネットワーク用通信ＩＦ  １０３、及び、アプリ用通信ＩＦ  １０４と、タイムスタンプ用通信ＩＦ  １０６及びスレーブクロック１０７とを接続する。ブリッジ１０５は、例えば、プロセッサ１０１、メモリ１０２、外部ネットワーク用通信ＩＦ  １０３、及び、アプリ用通信ＩＦ  １０４が搭載されているモジュールと、タイムスタンプ用通信ＩＦ  １０６及びスレーブクロック１０７が搭載されているモジュールが異なる場合に、モジュール間を接続するために用いられる。例えば、プロセッサ１０１、メモリ１０２、外部ネットワーク用通信ＩＦ  １０３、アプリ用通信ＩＦ  １０４、タイムスタンプ用通信ＩＦ  １０６、及び、スレーブクロック１０７が同じモジュールに搭載されている場合には、ブリッジ１０５はパッケージ１０に搭載されなくともよい。
【００５２】
スレーブクロック１０７は、例えば、ＦＰＧＡ（Field-Programmable Gate Array）の
ようなプロセッサ（図示せず）を備える。スレーブクロック１０７に備えられるプロセッサは、例えば、タイムスタンプ取得の命令を受けて、スレーブクロック１０７のタイムスタンプを取得し、他のハードウェア構成要素からもアクセス可能なレジスタ（図示せず）にタイムスタンプ値を記録する。命令元は、当該レジスタからタイムスタンプを読み出すことによって、スレーブクロック１０７のタイムスタンプを取得できる。スレーブクロック１０７は、「被同期クロック」の一例である。
【００５３】
また、他のパッケージ１０のスレーブクロック１０７のタイムスタンプの取得は、例えば、以下の様にして行われる。タイムスタンプ用通信ＩＦ  １０６には、例えば、ＦＰＧＡ等のプロセッサが備えられている。タイムスタンプ用通信ＩＦ  １０６に備えられているプロセッサは、他のパッケージのタイムスタンプの取得の命令を受けて、タイムスタンプ用通信ＩＦ  １０６を通じて、他のパッケージ１０のスレーブクロック１０７にタイムスタンプの命令を送信する。
【００５４】
他のパッケージ１０のスレーブクロック１０７のプロセッサは、当該スレーブクロック１０７のタイムスタンプ値を、他のハードウェア構成要素からもアクセス可能なレジスタに書き込む。タイムスタンプ用通信ＩＦ  １０６のプロセッサは、タイムスタンプ用通信ＩＦ  １０６を通じて、他のパッケージ１０の当該レジスタから他のパッケージ１０のスレーブクロック１０７のタイムスタンプを読み出して取得する。
【００５５】
タイムスタンプ用通信ＩＦ  １０６のプロセッサは、取得した他のパッケージ１０のスレーブクロック１０７のタイムスタンプを、例えば、タイムスタンプ用通信ＩＦ  １０６が搭載されるボード上の、他のハードウェア構成要素からもアクセス可能なレジスタ（図示せず）に格納する。命令元は、当該レジスタにアクセスし、格納されている他のパッケージ１０のスレーブクロック１０７のタイムスタンプを取得する。
【００５６】
パッケージ１０−１のスレーブクロック１０７は、図３のスレーブクロック１１０に相当する。パッケージ１０−２のスレーブクロック１０７は、図３のスレーブクロック１２０に相当する。以下、スレーブクロックを区別しない場合にはスレーブクロック１０７と表記する。スレーブクロックを区別する場合には、スレーブクロック１１０、スレーブクロック１２０と表記する。
【００５７】
なお、図４に示されるパッケージ１０のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、パッケージ１０は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、ＳＤカード、ｍｉｎｉＳＤカード、ｍｉｃｒｏＳＤカード、ＵＳＢ（Universal Serial Bus）フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ(Digital Versatile Disc)、Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ、又はフラッシュメモリカードのような記録媒体である。
【００５８】
図５は、ＰＴＰスレーブの機能構成の一例を示す図である。以下、パッケージ１０−１、パッケージ１０−２は、ＰＴＰスレーブとして機能する装置であるので、機能的な説明を行う場合には、ＰＴＰスレーブ１０−１、１０−２、又は、単に、スレーブ１０−１、１０−２と称する。また、以下、スレーブ２台でＨｏｔ／Ｓｔａｎｄｂｙ構成を想定するので、自系、他系とは、それぞれ、自装置、他装置、と同義として用いる。
【００５９】
スレーブ１０−１は、例えば、機能構成要素として、パケット送受信部１１、記憶部１２、ＰＴＰスタック１３、装置時刻制御部１４を備える。
【００６０】
パケット送受信部１１は、例えば、外部ネットワーク用通信ＩＦ  １０３のドライバに相当する。パケット送受信部１１は、受信部１１１、送信部１１２、タイムスタンプ制御部１１３、パケット転送部１１４を含む。
【００６１】
受信部１１１と送信部１１２とは、外部ネットワーク用通信ＩＦ  １０３を通じて、ＩＰパケットの受信又は送信を行う。受信部１１１は、外部ネットワーク用通信ＩＦ  １０３において受信されたＩＰパケットの入力を受け、タイムスタンプ制御部１１３に出力する。送信部１１２は、タイムスタンプ制御部１１３からＩＰパケットの入力を受け、外部ネットワーク用通信ＩＦ  １０３に出力する。
【００６２】
タイムスタンプ制御部１１３は、タイムスタンプの取得に係る制御を行う。タイムスタンプ制御部１１３は、受信部１１１、パケット転送部１１４、ＰＴＰスタック１３、その他アプリケーション（図示せず）から入力されたＩＰパケットを解析する。タイムスタンプ制御部１１３は、解析対象のＩＰパケットがタイムスタンプの取得に関係する種別のＰＴＰメッセージであり、且つ、自系のＰＴＰメッセージである場合は、自系のスレーブクロック１１０からタイムスタンプを取得する。ＰＴＰメッセージが自系のメッセージであるか他系のメッセージであるかは、例えば、メッセージ内のドメイン番号及びクロックＩＤの組合せ、又は、送信元又は宛先ＩＰアドレスによって判別される（詳細は後述）。
【００６３】
タイムスタンプ制御部１１３は、解析対象のＩＰパケットがタイムスタンプの取得に関係する種別のＰＴＰメッセージであり、且つ、他系のＰＴＰメッセージである場合は、他系のスレーブクロック１２０からタイムスタンプを取得する。
【００６４】
タイムスタンプ制御部１１３は、タイムスタンプの取得契機となったＰＴＰメッセージの識別情報とともに、当該メッセージの送信時刻又は受信時刻のタイムスタンプを後述のタイムスタンプ格納テーブル１２２に記録する。タイムスタンプ制御部１１３は、解析対象のＩＰパケットの解析が終了したら、当該ＩＰパケットを送信部１１２、パケット転送部１１４、ＰＴＰスタック１３、その他アプリケーションのいずれかに出力する。
【００６５】
例えば、解析対象のＩＰパケットが送信予定のＩＰパケットである場合には、タイムスタンプ制御部１１３は、当該ＩＰパケットを送信部１１２に出力する。例えば、解析対象のＩＰパケットが、受信部１１１から入力された自系のＰＴＰメッセージである場合には、タイムスタンプ制御部１１３は、当該ＩＰパケットをＰＴＰスタック１３に出力する。例えば、解析対象のＩＰパケットが、受信部１１１から入力された他系のＰＴＰメッセージである場合には、タイムスタンプ制御部１１３は、当該メッセージをパケット転送部１１４に出力する。例えば、解析対象のＩＰパケットが、受信部１１１から入力された自スレーブ宛てのＰＴＰ以外のアプリケーションのパケットである場合には、タイムスタンプ制御部１１３は、当該ＩＰパケットを該当するアプリケーションに出力する。
【００６６】
パケット転送部１１４は、タイムスタンプ制御部１１３とアプリ用通信ＩＦ  １０４との間でＩＰパケットの転送を行う。パケット転送部１１４に入力されるＩＰパケットは、他系のＰＴＰメッセージである。パケット転送部１１４は、タイムスタンプ制御部１１３から入力された他系のメッセージをアプリ用通信ＩＦ  １０４に出力する。パケット転送部１１４は、アプリ用通信ＩＦ  １０４から入力された他系のメッセージをタイムスタンプ制御部１１３に出力する。
【００６７】
なお、第１実施形態では、ＰＴＰメッセージの転送経路とタイムスタンプの取得経路とは分離されているので、ＰＴＰメッセージの転送に対して即時性は求められない。そのため、パケット転送部１１４に対応する機能は、通信ＩＦのドライバに備えられることに限定されず、例えば、他のミドルウェアやアプリケーションプロセスに備えられてもよい。
【００６８】
ＰＴＰスタック１３は、プロセッサ１０１によって実行されるＰＴＰスタックのプロセスである。ＰＴＰスタック１３は、ＰＴＰを終端する。より具体的には、ＰＴＰスタック１３は、パケット送受信部１１から自系のＰＴＰメッセージの入力を受ける。パケット送受信部１１から入力される自系のＰＴＰメッセージは、第１実施形態では、マスタ２から受信したＰＴＰメッセージである。ＰＴＰスタック１３は、自系のＰＴＰメッセージが入力されると、入力されたＰＴＰメッセージに応じた処理を行う。
【００６９】
例えば、入力されたＰＴＰメッセージのメッセージ種別がＡｎｎｏｕｎｃｅである場合には、ＰＴＰスタック１３は、マスタの選択、ドメインの登録等を行う。例えば、入力されたＰＴＰメッセージのメッセージ種別がＳｙｎｃ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅである場合には、ＰＴＰスタック１３は、ＰＴＰメッセージの受信及び送信のタイムスタンプの収集、ＯＦＭの算出、スレーブクロック１１０の補正等を行う。
【００７０】
装置時刻制御部１４は、例えば、プロセッサ１０１によって実行される時刻制御プログラムのプロセスである。装置時刻制御部１４は、Ｈｏｔ系及びＳｔａｎｄｂｙ系の時刻制御を行う。具体的には、装置時刻制御部１４は、後述のスレーブアクセス先管理テーブル１２１の管理を行う。スレーブアクセス先管理テーブル１２１は、ＰＴＰメッセージが自系であるか他系であるかを判別するために用いられるテーブルである。
【００７１】
例えば、装置時刻制御部１４は、周期的にＰＴＰスタック１３を監視し、マスタの変更に応じて、スレーブアクセス先管理テーブル１２１の登録、更新、削除等を行う。例えば、装置時刻制御部１４は、タイムスタンプ格納テーブル１２２に保持されるタイムスタンプの収集要求の処理の中継を行う。
【００７２】
記憶部１２は、メモリ１０２に相当する。記憶部１２は、スレーブアクセス先管理テーブル１２１とタイムスタンプ格納テーブル１２２を保持する。スレーブアクセス先管理テーブル１２１は、受信又は送信されるＰＴＰメッセージがタイムスタンプの取得を要求する種別のメッセージである場合に、参照先のスレーブクロックの情報を保持するテーブルである。タイムスタンプ格納テーブル１２２は、ＰＴＰメッセージの受信又は送信時に取得されたタイムスタンプの情報を保持するテーブルである。スレーブアクセス先管理テーブル１２１とタイムスタンプ格納テーブル１２２との詳細は、後述される。スレーブアクセス先管理テーブル１２１、２２１は、「第４の記憶部」の一例である。タイムスタンプ格納テーブル１２２は、「第１の記憶部」の一例である。
【００７３】
スレーブ１０−２は、機能構成要素として、スレーブ１０−１と同様に、パケット送受信部２１、記憶部２２、ＰＴＰスタック２３、装置時刻制御部２４を備える。また、パケット送受信部２１は、スレーブ１０−１のパケット送受信部１１と同様に、受信部２１１、送信部２１２、タイムスタンプ制御部２１３、パケット転送部２１４を含む。記憶部２２は、スレーブ１０−１の記憶部１２と同様に、スレーブアクセス先管理テーブル２２１とタイムスタンプ格納テーブル２２２とを保持する。
【００７４】
ただし、第１実施形態では、スレーブ１０−２では代表ＩＦが動作しないので、例えば、受信部２１１、送信部２１２、タイムスタンプ制御部２１３は動作しない。例えば、代表ＩＦがスレーブ１０−２で動作するように変更された場合には、受信部２１１、送信部２１２、タイムスタンプ制御部２１３は稼働し、一方でスレーブ１０−１の受信部１１１、送信部１１２、タイムスタンプ制御部１１３は動作しなくなる。
【００７５】
スレーブ１０−２のパケット転送部２１４は、アプリ用通信ＩＦ  １０４を通じて、スレーブ１０−１からＰＴＰメッセージを受信する。パケット転送部２１４は、受信したＰ
ＴＰメッセージをＰＴＰスタック２３に出力する。
【００７６】
また、パケット転送部２１４には、ＰＴＰスタック２３からＰＴＰメッセージが入力される。パケット転送部２１４は、ＰＴＰスタック２３から入力されたＰＴＰメッセージを、アプリ用通信ＩＦ  １０４を通じて、スレーブ１０−１に送信する。この場合、当該ＰＴＰメッセージは、スレーブ１０−１のパケット転送部１１４によって受信され、タイムスタンプ制御部１１３を経由して、送信部１１２から、外部ネットワーク用通信ＩＦ  １０３（代表ＩＦ）を通じてネットワークに送信される。
【００７７】
図６は、スレーブアクセス先管理テーブルの一例である。スレーブアクセス先管理テーブルは、ＰＴＰメッセージに対応するスレーブクロック１０７の参照先を保持するテーブルである。スレーブアクセス先管理テーブルのエントリは、メッセージ識別情報とスレーブクロックアクセス先とを含む。
【００７８】
図６では、メッセージ識別情報として、ドメイン番号とクロックＩＤとの組み合わせが用いられる場合のスレーブアクセス先管理テーブルが示されている。ドメイン番号とクロックＩＤとは、ＰＴＰメッセージに含まれている。ただし、メッセージ識別情報として用いられる情報は、ドメイン番号とクロックＩＤとに限定されない。メッセージ識別情報は、各スレーブが同期するマスタクロックを特定可能な情報であればよいので、例えば、ユニキャスト方式でＰＴＰマスタのＩＰアドレスがコンフィグ等により予め設定されている場合には、メッセージ識別情報として、ＰＴＰマスタのＩＰアドレスを用いることができる。
【００７９】
スレーブアクセス先管理テーブルのスレーブクロックアクセス先には、スレーブを特定可能な情報が含まれる。スレーブが２台である場合には、いずれか一方がＨｏｔ系、もう一方がＳｔａｎｄｂｙ系となるため、例えば図６に示されるように、スレーブを特定可能な情報として、自系又は他系を示す情報が用いられる。自系又は他系を示す情報には、例えば、フラグが用いられてもよい。
【００８０】
スレーブアクセス先管理テーブルは、初期状態では、空である。スレーブアクセス先管理テーブルのエントリは、ＰＴＰスタック１３が起動し、ＰＴＰメッセージが受信されてマスタの情報を取得することによって、登録される。スレーブアクセス先管理テーブルは、ＰＴＰスタック１３を監視する装置時刻制御部１４によって管理される。メッセージ識別情報、ドメイン番号とクロックＩＤとの組み合わせは、それぞれ、「メッセージの識別情報」の一例である。スレーブアクセス先管理テーブルのエントリは、「メッセージの識別情報とタイムスタンプの参照先の被同期クロックとの対象付け」の一例である。
【００８１】
図６では、図３に示される時刻同期システム１００におけるスレーブ１０−１の、各スレーブのマスタの情報を取得済みの場合のスレーブアクセス先管理テーブルが示されている。
【００８２】
図７は、タイムスタンプ格納テーブルの一例である。タイムスタンプ格納テーブルは、代表ＩＦにおけるＰＴＰメッセージの送信時刻と受信時刻の、各スレーブ１０のスレーブクロック１０７のタイムスタンプを格納するテーブルである。タイムスタンプ格納テーブルのエントリには、タイムスタンプの取得の契機となったメッセージの情報であるトリガメッセージ情報と、タイムスタンプの値とが含まれている。
【００８３】
トリガメッセージ情報には、タイムスタンプの取得の契機となったメッセージを特定可能な情報が含まれる。例えば図７では、トリガメッセージ情報として、ドメイン番号、クロックＩＤ、方向、シーケンス番号が用いられている。ドメイン番号、クロックＩＤ、シ
ーケンス番号は、タイムスタンプの取得の契機となったＰＴＰメッセージから取得される。
【００８４】
トリガメッセージ情報の一つとして用いられる「方向」には、代表ＩＦにおいて受信されたメッセージであるか、代表ＩＦにおいて送信されたメッセージであるかを示す情報が用いられる。図７に示される例では、「方向」には、送信又は受信のいずれかが格納される。
【００８５】
タイムスタンプ格納テーブルは、初期状態で空である。タイムスタンプ格納テーブル１２２のエントリは、タイムスタンプの取得に関係する種別のＰＴＰメッセージの代表ＩＦにおける送信または受信が発生した場合に、例えば、タイムスタンプ制御部１１３によって登録される。また、タイムスタンプ格納テーブル１２２のエントリは、例えば、ＰＴＰのＯＦＭの算出のために読み出された場合に、タイムスタンプ制御部１１３によって削除される。
【００８６】
図８は、ＰＴＰマスタサーバ管理テーブルの一例である。ＰＴＰマスタサーバ管理テーブルは、例えば、ユニキャスト方式の場合にスレーブによって用いられるテーブルである。ＰＴＰマスタサーバ管理テーブルは、例えば、スレーブ１０−１の記憶部１２に保持され、装置時刻制御部１４によって管理される。なお、図５に示される機能構成図には、ＰＴＰマスタサーバ管理テーブルは示されていない。
【００８７】
ＰＴＰマスタサーバ管理テーブルは、ＰＴＰマスタのＩＰアドレスと、当該ＰＴＰマスタを選択するスレーブとの対応付けを保持するテーブルである。ユニキャスト方式の場合には、マスタのＩＰアドレスは、予めコンフィグに設定されている。
【００８８】
ＰＴＰマスタサーバ管理テーブルには、初期状態では、マスタのＩＰアドレスが格納されている。ＰＴＰマスタサーバ管理テーブルにおいて、マスタのＩＰアドレスには、並びの順番に番号が振られている。例えば、装置時刻制御部１４は、各スレーブ１０にＨｏｔ系のスレーブから順にＰＴＰマスタサーバ管理テーブルの未使用のマスタのＩＰアドレスを先頭から割り当てる。これによって、各スレーブ１０へのマスタの割り当てが制御される。ＰＴＰマスタサーバ管理テーブルは、「第３の記憶部」の一例である。
【００８９】
＜処理の流れ＞
以下、スレーブ上で実施される処理の流れについて説明する。以下の処理の流れの説明では、スレーブを代表して、スレーブ１０−１において実施される処理として説明する。ただし、以下の処理はスレーブ１０−２においても実施される。なお、以下の各フローチャートの処理主体は、プロセッサ  １０１であるが、便宜上、機能構成要素を主体として説明する。
【００９０】
図９Ａ及び図９Ｂは、タイムスタンプ制御部１１３のＩＰパケット受信時の処理のフローチャートの一例である。タイムスタンプ制御部１１３は、代表ＩＦが動作しているスレーブ上で稼働するので、図９Ａ及び図９Ｂに示される処理は、代表ＩＦが動作しているスレーブによって行われる処理である。第１実施形態では、スレーブ１０−１において代表ＩＦが動作することが想定されているので、図９Ａ及び図９Ｂの処理は、スレーブ１０−１において実施される。ただし、代表ＩＦがスレーブ１０−２で動作する場合には、以下の処理と同様の処理がスレーブ１０−２においても実施される。
【００９１】
図９Ａに示される処理は、ＩＰネットワーク２０１からスレーブ１０−１（代表ＩＦ）にＩＰパケットが受信され、受信ＩＰパケットが受信部１１１からタイムスタンプ制御部１１３に入力されると開始される。
【００９２】
ＯＰ１では、タイムスタンプ制御部１１３は、受信ＩＰパケットがＰＴＰパケットであるか否かを判定する。例えば、受信ＩＰパケットがＵＤＰパケットであって、ＵＤＰヘッダ内のポート番号が３１９又は３２０である場合に、タイムスタンプ制御部１１３は、受信ＩＰパケットがＰＴＰパケットであることを判定する。
【００９３】
受信ＩＰパケットがＰＴＰパケットである場合には（ＯＰ１：ＹＥＳ）、処理がＯＰ２に進む。受信ＩＰパケットがＰＴＰパケットでない場合には（ＯＰ１：ＮＯ）、処理がＯＰ７に進む。ＯＰ７では、タイムスタンプ制御部１１３は、受信ＩＰパケットをＨｏｔ系のアプリケーションに送る。スレーブ１０−１がＨｏｔ系として動作している場合には、タイムスタンプ制御部１１３は、ＩＰパケットを自装置内の該当アプリケーションに送る。スレーブ１０−１がＳｔａｎｄｂｙ系として動作している場合には、タイムスタンプ制御部１１３は、受信ＩＰパケットをパケット転送部１１４に出力し、パケット転送部１１４はスレーブ１０−２に受信ＩＰパケットを転送する。その後、図９Ａに示される処理が終了する。
【００９４】
ＯＰ２では、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージがタイムスタンプの取得を要求する種別のメッセージであるか否かを判定する。タイムスタンプの取得を要求する種別のＰＴＰメッセージのＵＤＰポート番号は３１９である。受信ＰＴＰメッセージがタイムスタンプの取得を要求する種別のメッセージである場合には（ＯＰ２：ＹＥＳ）、処理がＯＰ３に進む。受信ＰＴＰメッセージがタイムスタンプの取得を要求する種別のメッセージでない場合には（ＯＰ２：ＮＯ）、処理が図９ＢのＯＰ１１に進む。
【００９５】
ＯＰ３からＯＰ６の処理は、ＰＴＰメッセージの受信によるタイムスタンプ取得の処理である。ＯＰ３からＯＰ６の処理は、スレーブアクセス先管理テーブル１２１の先頭のエントリから末尾のエントリまで、各エントリについて繰り返し実行される。
【００９６】
ＯＰ３では、タイムスタンプ制御部１１３は、スレーブアクセス先管理テーブル１２１の対象エントリと受信ＰＴＰメッセージとを比較し、ドメイン番号とクロックＩＤとが一致するか否かを判定する。スレーブアクセス先管理テーブル１２１の対象エントリと受信ＰＴＰメッセージとで、ドメイン番号とクロックＩＤとが一致しない場合には（ＯＰ３：不一致）、処理が次の対象エントリ、又は、対象エントリが末尾のエントリである場合には図９ＢのＯＰ１１に進む。
【００９７】
スレーブアクセス先管理テーブル１２１の対象エントリと受信ＰＴＰメッセージとで、ドメイン番号とクロックＩＤとが一致し、対象エントリのＰＴＰスレーブアクセス先が「自系」である場合には（ＯＰ３：一致（自系））、処理がＯＰ４に進む。ＯＰ４では、タイムスタンプ制御部１１３は、自系のスレーブクロック１１０からタイムスタンプを取得する。
【００９８】
スレーブアクセス先管理テーブル１２１の対象エントリと受信ＰＴＰメッセージとで、ドメイン番号とクロックＩＤとが一致し、対象エントリのＰＴＰスレーブアクセス先が「他系」である場合には（ＯＰ３：一致（他系））、処理がＯＰ５に進む。ＯＰ５では、タイムスタンプ制御部１１３は、タイムスタンプ用通信ＩＦ  １０６を通じて、他系のスレーブクロック１２０からタイムスタンプを取得する。
【００９９】
ＯＰ６では、タイムスタンプ制御部１１３は、ＯＰ４又はＯＰ５において取得したタイムスタンプをタイムスタンプ格納テーブル１２２に登録する。スレーブアクセス先管理テーブル１２１の末尾のエントリまでＯＰ３からＯＰ６の処理が終了すると、処理が図９ＢのＯＰ１１に進む。
【０１００】
図９ＢのＯＰ１１では、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージの宛先ＩＰアドレスがユニキャストであるかマルチキャストであるかを判定する。ＰＴＰメッセージの宛先ＩＰアドレスがマルチキャストＩＰアドレスである場合には（ＯＰ１１：マルチキャスト）、処理がＯＰ１２に進む。ＰＴＰメッセージの宛先ＩＰアドレスがユニキャストＩＰアドレスである場合には（ＯＰ１１：ユニキャスト）、処理がＯＰ１８に進む。
【０１０１】
ＯＰ１２では、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージの宛先であるマルチキャストＩＰアドレスに対応するマルチキャストグループに、自系及び／又は他系が参加済みであるか否かを判定する。なお、マルチキャストグループに参加又は離脱する場合には、例えば、ＩＧＭＰ（Internet Group Management Protocol）等のマルチキャストプログラムのメッセージが自系及び他系のスレーブそれぞれから代表ＩＦを通じて送信される。例えば、タイムスタンプ制御部１１３は、マルチキャストグループへの参加又は離脱のメッセージが送信される際に、自系及び他系のスレーブが参加するマルチキャストグループの情報を、メモリ１０２に記録しておく。ＯＰ１２の判定は、当該記録を参照して行われる。
【０１０２】
受信ＰＴＰメッセージに対応するマルチキャストグループに自系又は他系のスレーブのいずれも参加していない場合には（ＯＰ１２：どちらでもない）、処理がＯＰ１３に進む。ＯＰ１３では、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージを廃棄する。その後、図９Ｂに示される処理が終了する。
【０１０３】
受信ＰＴＰメッセージに対応するマルチキャストグループに自系及び他系のスレーブ両方が参加している場合には（ＯＰ１２：両系）、処理がＯＰ１４に進む。ＯＰ１４では、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージを複製する。ＯＰ１５では、タイムスタンプ制御部１１３は、自系のＰＴＰスタック１３と、他系のＰＴＰスタック２３に、受信ＰＴＰメッセージを送る。他系のＰＴＰスタック２３へは、パケット転送部１１４、アプリ用通信ＩＦ  １０４を通じて受信ＰＴＰメッセージが送信される。その後、図９Ｂに示される処理が終了する。
【０１０４】
受信ＰＴＰメッセージに対応するマルチキャストグループが自系のスレーブが参加しているマルチキャストグループである場合には（ＯＰ１２：自系）、処理がＯＰ１６に進む。ＯＰ１６では、タイムスタンプ制御部１１３は、自系のＰＴＰスタック１３に、受信ＰＴＰメッセージを送る。その後、図９Ｂに示される処理が終了する。
【０１０５】
受信ＰＴＰメッセージに対応するマルチキャストグループが他系のスレーブが参加しているマルチキャストグループである場合には（ＯＰ１２：他系）、処理がＯＰ１７に進む。ＯＰ１７では、タイムスタンプ制御部１１３は、パケット転送部１１４、アプリ用通信ＩＦ  １０４を通じて、他系のＰＴＰスタック２３に、受信ＰＴＰメッセージを送る。その後、図９Ｂに示される処理が終了する。
【０１０６】
ＯＰ１８では、受信ＰＴＰメッセージの宛先ＩＰアドレスがユニキャストＩＰアドレスであるので、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージが自系又は他系のスレーブのいずれに宛てられたものであるかを判定する。より具体的には、ＯＰ１８においてタイムスタンプ制御部１１３は、以下の様な処理を行う。
【０１０７】
ＰＴＰマスタからＰＴＰスレーブにユニキャストＩＰアドレスに宛てて送信されるメッセージの種別は、例えば、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅや、Ｓｉｇｎａｌｉｎｇ、Ｍａｎａｇｅｍｅｎｔである。したがって、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージの種別に応じて、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅである場合にはメッセージ内の「
ｒｅｑｕｅｓｔｉｎｇ  Ｐｏｒｔ  Ｉｄｅｎｔｉｔｙ」フィールド、Ｓｉｇｎａｌｉｎｇ、ｍａｎａｇｅｍｅｎｔである場合にはメッセージ内の「ｔａｒｇｅｔ  Ｐｏｒｔ  Ｉｄｅｎｔｉｔｙ」フィールドから、クロックＩＤを取得する。
【０１０８】
タイムスタンプ制御部１１３は、受信ＰＴＰメッセージから取得したドメイン番号とクロックＩＤと、スレーブアクセス先管理テーブル１２１とを比較して、受信ＰＴＰメッセージが自系又は他系のスレーブのいずれに宛てられたものかを判定する。
【０１０９】
なお、スレーブアクセス先管理テーブル１２１において、メッセージ識別情報として、マスタのＩＰアドレスが用いられている場合には、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージの送信元ＩＰアドレスであるマスタのＩＰアドレスに基づいて、ＯＰ１８の判定を行う。
【０１１０】
受信ＰＴＰメッセージが自系のスレーブ１０−１に宛てられたメッセージである場合には（ＯＰ１８：自系）、処理がＯＰ１６に進む。ＯＰ１６では、タイムスタンプ制御部１１３は、自系のＰＴＰスタック１３に、受信ＰＴＰメッセージを送る。その後、図９Ｂに示される処理が終了する。
【０１１１】
受信ＰＴＰメッセージが他系のスレーブ１０−２に宛てられたメッセージである場合には（ＯＰ１８：他系）、処理がＯＰ１７に進む。ＯＰ１７では、タイムスタンプ制御部１１３は、パケット転送部１１４、アプリ用通信ＩＦ  １０４を通じて、他系のＰＴＰスタック２３に、受信ＰＴＰメッセージを送る。その後、図９Ｂに示される処理が終了する。
【０１１２】
受信ＰＴＰメッセージの宛先が自系又は他系のスレーブのいずれでもない場合には（ＯＰ１８：どちらでもない）、処理がＯＰ１９に進む。ＯＰ１９では、タイムスタンプ制御部１１３は、受信ＰＴＰメッセージを廃棄する。その後、図９Ｂに示される処理が終了する。
【０１１３】
図１０は、タイムスタンプ制御部１１３のＩＰパケットの送信要求発生時の処理のフローチャートの一例である。図１０に示される処理は、代表ＩＦが動作しているスレーブによって行われる処理である。図１０に示される処理は、スレーブ１０−１又はスレーブ１０−２においてＩＰパケットの送信要求が発生し、送信対象のＩＰパケットがタイムスタンプ制御部１１３に入力されると開始される。送信対象のＩＰパケットは、例えば、スレーブ１０−１内のアプリケーション、ＰＴＰスタック１３、スレーブ１０−２のパケット転送部２１４から、タイムスタンプ制御部１１３へ入力される。
【０１１４】
ＯＰ２１からＯＰ２６の処理は、受信ＩＰパケット又は受信ＰＴＰパケットが、送信対象ＩＰパケット又は送信対象ＩＰパケットに置き換わるだけで、その他は図９ＡのＯＰ１からＯＰ６と同様である。すなわち、タイムスタンプ制御部１１３は、送信対象ＩＰパケットがＰＴＰメッセージであるか否か判定し（ＯＰ２１）、送信対象ＩＰパケットがＰＴＰメッセージである場合には（ＯＰ２１：ＹＥＳ）、タイムスタンプの取得に関係するメッセージ種別であるか否かを判定する（ＯＰ２２）。
【０１１５】
送信対象ＰＴＰメッセージがタイムスタンプの取得に関係するメッセージ種別である場合には（ＯＰ２２：ＹＥＳ）、タイムスタンプ制御部１１３は、スレーブアクセス先管理テーブル１２１から送信対象ＰＴＰメッセージの送信元を識別する（ＯＰ２３）。タイムスタンプ制御部１１３は、自系又は他系のスレーブクロックからタイムスタンプを取得し（ＯＰ２４、ＯＰ２５）、取得したタイムスタンプをタイムスタンプ格納テーブル１２２に登録する。
【０１１６】
ＯＰ２７では、タイムスタンプ制御部１１３は、送信対象ＩＰパケットを送信部１１２に出力する。送信対象ＩＰパケットは、送信部１１２から代表ＩＦ（外部ネットワーク用通信ＩＦ  １０３）を通じてネットワークに送信される。その後、図１０に示される処理が終了する。
【０１１７】
なお、ＩＰパケットの送信要求発生時の処理は、マルチキャスト方式であってもユニキャスト方式であっても、同じ処理となる。
【０１１８】
図１１は、ＰＴＰスタック１３のＰＴＰメッセージ受信時の処理のフローチャートの一例である。図１１に示される処理は、代表ＩＦが動作しているか否かに関わらず、いずれのスレーブでも実行される処理である。図１１に示される処理は、例えば、スレーブ１０−１においては、ＰＴＰスタック１３にタイムスタンプ制御部１１３からＰＴＰメッセージが入力された場合に開始される。図１１に示される処理は、例えば、スレーブ１０−２においては、ＰＴＰスタック２３にパケット転送部２１４からＰＴＰメッセージが入力された場合に開始される。
【０１１９】
ＯＰ３１では、ＰＴＰスタック１３は、受信ＰＴＰメッセージを解析して、メッセージ種別を判定する。ＯＰ３１におけるＰＴＰメッセージの解析では、メッセージチェックの正常性、クロックＩＤ、シーケンス番号等もチェックされる。
【０１２０】
受信ＰＴＰメッセージのメッセージ種別がＡｎｎｏｕｎｃｅである場合には（ＯＰ３１：Ａｎｎｏｕｎｃｅ）、処理がＯＰ３２に進む。受信ＰＴＰメッセージのメッセージ種別がＳｙｎｃ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅである場合には（ＯＰ３１：Ｓｙｎｃ、Ｄｅｌａｙ＿Ｒｅｓｐ）、処理がＯＰ３５に進む。
【０１２１】
ＯＰ３２からＯＰ３４の処理は、受信ＰＴＰメッセージのメッセージ種別がＡｎｎｏｕｎｃｅである場合の処理である。Ａｎｎｏｕｎｃｅメッセージは、ＰＴＰマスタの情報を報知するメッセージであって、ＰＴＰマスタのドメイン番号、クロックＩＤ等が含まれている。
【０１２２】
ＯＰ３２では、ＰＴＰスタック１３は、ＰＴＰスタック１３が存在を認識しているＰＴＰマスタの情報を保持するマスタテーブル（図示せず）に、受信したＡｎｎｏｕｃｅメッセージに含まれているＰＴＰマスタのドメイン番号、クロックＩＤを新規又は更新登録する。マスタテーブルは、例えば、メモリ１０２に格納されている。
【０１２３】
ＯＰ３３では、ＰＴＰスタック１３は、マスタテーブルに複数のマスタの情報が登録されている場合には、例えば、ＢＭＣＡ（Best Master Clock Algorism）によってマスタの選択を行う。ＢＭＣＡは、Ａｎｎｏｕｃｅメッセージに含まれているプライオリティが最も高いマスタを選択するアルゴリズムである。なお、選択候補のＰＴＰマスタが１台の場合には、ＯＰ３３の処理は省略される。
【０１２４】
ＯＰ３４では、ＰＴＰスタック１３は、選択しているＰＴＰマスタに対して測定メッセージの交換を開始する。測定メッセージの交換とは、例えば、選択中のＰＴＰマスタからのＳｙｎｃメッセージ受信に対して、当該ＰＴＰマスタに対してＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを送信する処理である。その後、図１１に示される処理が終了する。
【０１２５】
ＯＰ３５からＯＰ３９の処理は、受信ＰＴＰメッセージのメッセージ種別がＳｙｎｃ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅである場合の処理である。ＯＰ３５では、ＰＴＰスタック１３は、タイムスタンプ読出し処理を行う。タイムスタンプ読出し処理は、第１実施形態では、代表ＩＦが動作するスレーブ１０−１のタイムスタンプ格納テーブル１２２から、
スレーブクロックの補正に用いられるタイムスタンプを読み出す処理である。タイムスタンプ読出し処理の詳細は後述される。
【０１２６】
ＯＰ３６では、ＰＴＰスタック１３は、マスタ２からスレーブ１０−１、スレーブ１０−１からマスタ２それぞれの方向の伝搬遅延（ｔ＿ｍｓ、ｔ＿ｓｍ）を算出する。なお、ＰＴＰでは、各方向の伝搬遅延（ｔ＿ｍｓ、ｔ＿ｓｍ）を、一定の条件を満たす測定値に振るいにかけることにより、測定誤差を低減させるフィルタ機能を使うこともできる。その場合は、ＯＰ３７により、ＰＴＰスタック１３は、マスタ２からスレーブ１０−１、スレーブ１０−１からマスタ２それぞれの方向の伝搬遅延（ｔ＿ｍｓ、ｔ＿ｓｍ）をフィルタにかける。例えば、ＰＴＰスタック１３は、算出された各方向の複数の伝搬遅延（ｔ＿ｍｓ、ｔ＿ｓｍ）のうち、例えば、閾値未満であり、且つ、伝搬遅延のより小さい値を選択する。
【０１２７】
ＯＰ３８では、ＰＴＰスタック１３は、オフセット時間（ＯＦＭ）を算出する（図１参照）。ＯＰ３９では、ＰＴＰスタック１３は、オフセット時間に基づいてスレーブクロックを補正する。例えば、オフセット時間が正の値である場合には、ＰＴＰスタック１３はスレーブクロック１１０を加速させる。例えば、オフセット時間が負の値である場合には、ＰＴＰスタック１３はスレーブクロック１１０を減速させる。その後、図１１に示される処理が終了する。
【０１２８】
図１２は、タイムスタンプ読出し処理のフローチャートの一例である。図１２に示される処理は、図１１のＯＰ３５において実行される処理である。
【０１２９】
ＯＰ４１では、ＰＴＰスタック１３は、代表ＩＦが動作しているスレーブが自系であるか否かを判定する。ＯＰ４１の判定は、例えば、ＰＴＰスタック１３が代表ＩＦやＨｏｔ／Ｓｔａｎｄｂｙ系を管理するプロセスに問い合わせることによって行われる。
【０１３０】
代表ＩＦが動作しているスレーブが自系である場合には（ＯＰ４１：自系）、処理がＯＰ４２に進む。ＯＰ４２では、ＰＴＰスタック１３は、自系のタイムスタンプ格納テーブル１２２から、図１１の処理の開始契機となった受信メッセージに該当するタイムスタンプを取得する。その後、図１２に示される処理が終了し、処理が図１１のＯＰ３６に進む。
【０１３１】
代表ＩＦが動作しているスレーブが自系でない場合には（ＯＰ４１：他系）、処理がＯＰ４３に進む。代表ＩＦが動作しているスレーブが他系である場合には、自系のタイムスタンプは、他系のスレーブ１０−２のタイムスタンプ格納テーブル２２２に格納されている。
【０１３２】
ＯＰ４３では、ＰＴＰスタック１３は、装置時刻制御部１４へタイムスタンプ収集を依頼する。装置時刻制御部１４は、ＰＴＰスタック１３からの依頼を受けて、アプリ用通信ＩＦ  １０４を通じて、他系のスレーブ１０−２から、自系のタイムスタンプを取得する。
【０１３３】
ＯＰ４４では、ＰＴＰスタック１３は、装置時刻制御部１４から他系のスレーブ１０−２のタイムスタンプ格納テーブル２２２に格納されていた自系のタイムスタンプを取得する。その後、図１２に示される処理が終了し、処理が図１１のＯＰ３６に進む。
【０１３４】
図１３は、装置時刻制御部１４の、タイムスタンプ収集依頼を受けた場合の処理のフローチャートの一例である。図１３に示される処理は、例えば、装置時刻制御部１４にタイムスタンプ収集の依頼が入力された場合に開始される（図１２、ＯＰ４２参照）。
【０１３５】
ＯＰ５１では、装置時刻制御部１４は、タイムスタンプ収集の依頼元が自系のＰＴＰスタック１３であるか、他系のスレーブ１０−２の装置時刻制御部２４であるかを判定する。タイムスタンプ収集の依頼元が自系のＰＴＰスタック１３である場合には（ＯＰ５１：ＰＴＰスタック）、処理がＯＰ５２に進む。タイムスタンプ収集の依頼元が他系のスレーブ１０−２の装置時刻制御部２４である場合には（ＯＰ５１：他系の装置時刻制御部）、処理がＯＰ５５に進む。
【０１３６】
ＯＰ５２からＯＰ５４の処理は、自系のＰＴＰスタック１３からタイムスタンプ収集の依頼を受けた場合の処理である。ＯＰ５２では、装置時刻制御部１４は、他系のスレーブ１０−２の装置時刻制御部２４へ、アプリ用通信ＩＦ  １０４を通じて、タイムスタンプ収集の依頼を送信する。ＯＰ５３では、装置時刻制御部１４は、アプリ用通信ＩＦ  １０４を通じて、他系のスレーブ１０−２の装置時刻制御部２４から当該他系のスレーブ１０−２のタイムスタンプ格納テーブル２２２に格納されていた自系のタイムスタンプを受信する。ＯＰ５４では、装置時刻制御部１４は、取得したタイムスタンプを自系のＰＴＰスタック１３に通知する。その後、図１３に示される処理が終了する。
【０１３７】
ＯＰ５５とＯＰ５６との処理は、他系のスレーブ１０−２の装置時刻制御部２４からタイムスタンプ収集の依頼を受けた場合の処理である。ＯＰ５５では、装置時刻制御部１４は、タイムスタンプ格納テーブル１２２から、他系のタイムスタンプを読み出す。ＯＰ５６では、装置時刻制御部１４は、アプリ用通信ＩＦ  １０４を通じて、他系のスレーブ１０−２の装置時刻制御部２４へ、タイムスタンプ格納テーブル１２２に格納されていた他系のタイムスタンプを送信する。その後、図１３に示される処理が終了する。
【０１３８】
図１４は、装置時刻制御部１４のＰＴＰスタック監視処理のフローチャートの一例である。図１４に示される処理は、例えば、所定の周期で繰り返し実行される。ＰＴＰスタック監視処理の実行周期は、例えば、秒オーダで設定されている。図１４に示されるＰＴＰスタック監視処理は、いずれのスレーブにおいても実行される。
【０１３９】
ＯＰ６１では、装置時刻制御部１４は、ＰＴＰスタック１３のデータセットを読み取る。ＰＴＰスタック１３のデータセットは、例えば、ＰＴＰスタック１３が管理する、選択中のマスタに関する情報である。データセットとしての選択中のマスタに関する情報には、例えば、選択中のマスタの、ドメイン番号、クロックＩＤ、ＩＰアドレス等が含まれている。例えば、データセットは、ＰＴＰスタック１３が存在を認識しているマスタの情報を格納するマスタテーブル内の、ＰＴＰスタック１３が選択中のマスタの情報である。
【０１４０】
ＯＰ６２では、装置時刻制御部１４は、ＰＴＰスタック１３の選択中のマスタに変更があるか否かを判定する。ＰＴＰスタック１３の選択中のマスタに変更がある場合には（ＯＰ６２：ＹＥＳ）、処理がＯＰ６３に進む。ＰＴＰスタック１３の選択中のマスタに変更がない場合には（ＯＰ６２：ＮＯ）、処理が図１４に示される処理が終了する。
【０１４１】
ＯＰ６３では、装置時刻制御部１４は、ＰＴＰスタック１３の選択中のマスタの変更の種類を判定する。ＯＰ６３の処理は、例えば、前回のＰＴＰスタック監視処理の実行時に取得されたＰＴＰスタック１３のデータセットの値と比較することによって行われる。選択中のマスタの変更の種類は、例えば、新規登録、変更、削除がある。
【０１４２】
新規登録は、例えば、ＰＴＰスタック１３のデータセットの値がデフォルト値からデフォルト値以外へ変更されていることによって判定される。データセットのデフォルト値は、例えば、Ｎｕｌｌである。変更は、例えば、ＰＴＰスタック１３のデータセットがデフォルト値以外からデフォルト値以外へと変更されていることによって判定される。削除は
、例えば、ＰＴＰスタック１３のデータセットが、デフォルト値以外からデフォルト値へと変更されていることによって判定される。
【０１４３】
ＰＴＰスタック１３の選択中のマスタの変更の種類が「新規登録」である場合には（ＯＰ６３：新規）、処理がＯＰ６４に進む。ＯＰ６４では、装置時刻制御部１４は、自系及び他系のスレーブアクセス先管理テーブルに、ＰＴＰスタック１３のデータセットに含まれる自系のマスタの情報を登録する。また、自系又は他系のスレーブアクセス先管理テーブルにスレーブクロックＩＤが登録されていない場合には、装置時刻制御部１４は、該当するスレーブアクセス先管理テーブルにスレーブクロックＩＤを登録する。その後、図１４に示される処理が終了する。
【０１４４】
ＰＴＰスタック１３の選択中のマスタの変更の種類が「変更」である場合には（ＯＰ６３：変更）、処理がＯＰ６５に進む。ＯＰ６５では、装置時刻制御部１４は、自系及び他系のスレーブアクセス先管理テーブルに、ＰＴＰスタック１３のデータセットに含まれる自系のマスタの情報を上書き登録する。ただし、装置時刻制御部１４は、スレーブアクセス先管理テーブル内のスレーブクロックＩＤの値は操作しない。その後、図１４に示される処理が終了する。
【０１４５】
ＰＴＰスタック１３の選択中のマスタの変更の種類が「削除」である場合には（ＯＰ６３：削除）、処理がＯＰ６６に進む。ＯＰ６６では、装置時刻制御部１４は、自系及び他系のスレーブアクセス先管理テーブルから、自系のマスタの情報を削除する。ただし、装置時刻制御部１４は、スレーブアクセス先管理テーブル内のスレーブクロックＩＤの値は削除しない。その後、図１４に示される処理が終了する。
【０１４６】
なお、ＯＰ６４〜ＯＰ６６において、他系のスレーブアクセス先管理テーブルの設定は、例えば、装置時刻制御部１４が、他系のスレーブ１０−２の装置時刻制御部２４に新規登録、変更、または削除の指示を、アプリ用通信ＩＦ  １０４を通じて送信することで行われる。他系のスレーブ１０−２の装置時刻制御部２４は、装置時刻制御部１４からの指示に従って、スレーブアクセス先管理テーブル２２１への操作を行う。
【０１４７】
図１５は、ユニキャスト方式の場合の装置時刻制御部１４の処理のフローチャートの一例である。図１５に示される処理は、装置時刻制御部１４にＰＴＰ起動指示が入力された場合に開始される。ＰＴＰ起動指示は、例えば、スレーブ１０−１に直接、又は、ネットワークを介して、スレーブ１０−１の管理者から、又は、他系のスレーブの装置時刻制御部から入力される。
【０１４８】
ＯＰ７１では、装置時刻制御部１４は、Ｈｏｔ系のスレーブのマスタとして、ＰＴＰマスタサーバ管理テーブル（図８）の未使用であるマスタのうち最小番号のマスタを選択する。
【０１４９】
ＯＰ７２では、装置時刻制御部１４は、Ｈｏｔ系のスレーブが自系であるか否かを判定する。Ｈｏｔ系のスレーブが自系である場合には（ＯＰ７２：ＹＥＳ）、処理がＯＰ７３に進む。ＯＰ７３では、装置時刻制御部１４は、自系のＰＴＰスタック１３にＯＰ７１で選択したマスタのＩＰアドレスを設定する。その後、ＰＴＰスタック１３によって、ＰＴＰメッセージの送信が開始される。
【０１５０】
Ｈｏｔ系のスレーブが他系である場合には（ＯＰ７２：ＮＯ）、処理がＯＰ７４に進む。ＯＰ７４では、装置時刻制御部１４は、他系のスレーブ１０−２の装置時刻制御部２４に、ＯＰ７１において選択したマスタのＩＰアドレスとＰＴＰ開始指示とを、アプリ用通信ＩＦ  １０４を通じて通知する。その後、スレーブ１０−２の装置時刻制御部２４によ
って、ＰＴＰスタック２３にマスタのＩＰアドレスが設定され、ＰＴＰメッセージの送信が開始される。
【０１５１】
ＯＰ７５では、装置時刻制御部１４は、Ｓｔａｎｄｂｙ系のスレーブのマスタとして、ＰＴＰマスタサーバ管理テーブル（図８）の未使用であるマスタのうち最小番号のマスタを選択する。
【０１５２】
ＯＰ７６では、装置時刻制御部１４は、Ｓｔａｎｄｂｙ系のスレーブが自系であるか否かを判定する。Ｓｔａｎｄｂｙ系のスレーブが自系である場合には（ＯＰ７６：ＹＥＳ）、処理がＯＰ７７に進む。ＯＰ７７では、ＯＰ７３と同様に、装置時刻制御部１４は、自系のＰＴＰスタック１３に、ＯＰ７５で選択したマスタのＩＰアドレスを設定する。
【０１５３】
Ｓｔａｎｄｂｙ系のスレーブが他系である場合には（ＯＰ７６：ＮＯ）、処理がＯＰ７８に進む。ＯＰ７８では、ＯＰ７４と同様に、装置時刻制御部１４は、他系のスレーブ１０−２の装置時刻制御部２４に、ＯＰ７５において選択したマスタのＩＰアドレスとＰＴＰ開始指示とを、アプリ用通信ＩＦ  １０４を通じて通知する。
【０１５４】
ＯＰ７９では、装置時刻制御部１４は、マスタが未決定のＳｔａｎｄｂｙ系のスレーブが存在するか否かを判定する。マスタが未決定のＳｔａｎｄｂｙ系のスレーブが存在する場合には（ＯＰ７９：ＹＥＳ）、処理がＯＰ７５に進む。マスタが未決定のＳｔａｎｄｂｙ系のスレーブが存在しない場合には（ＯＰ７９：ＮＯ）、図１５に示される処理が終了する。
【０１５５】
＜具体例＞
以下、具体例として、図３に示される時刻同期システム１００における処理のシーケンスについて説明する。
【０１５６】
図１６Ａ及び図１６Ｂは、マルチキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。図１７は、図１６Ａ及び図１６Ｂに示される具体例における、代表ＩＦが動作するスレーブ１０−１におけるスレーブアクセス先管理テーブル１２１の変遷の一例を示す図である。図１８は、図１６Ａ及び図１６Ｂに示される具体例における、代表ＩＦが動作していないスレーブ１０−２におけるスレーブアクセス先管理テーブル２２１の変遷の一例を示す図である。
【０１５７】
Ｓ１、Ｓ２では、それぞれ、スレーブ１０−１のＰＴＰスタック１３、スレーブ１０−２のＰＴＰスタック２３が起動し、ＰＴＰマルチキャストグループへの参加を開始する。以降、スレーブ１０−１及びスレーブ１０−２が、マスタ２又はマスタ３からのＰＴＰメッセージを受信可能になる。なお、具体例では、マスタ２とマスタ３とは異なるマルチキャストグループに参加していることを想定する。スレーブ１０−１のＰＴＰスタック１３は、マスタ２と同じマルチキャストグループに参加する。また、スレーブ１０−２のＰＴＰスタック２３は、マスタ３と同じマルチキャストグループに参加する。
【０１５８】
Ｓ１の時点のスレーブ１０−１のスレーブアクセス先管理テーブル１２１は、図１７の（Ａ１）のテーブルに示されている。Ｓ２の時点のスレーブ１０−２のスレーブアクセス先管理テーブル２２１は、図１８の（Ｂ１）に示されている。Ｓ１及びＳ２の時点では、スレーブ１０−１及びスレーブ１０−２のいずれのスレーブアクセス先管理テーブルも、初期状態であり、いずれのクロックの情報も格納されていない。
【０１５９】
Ｓ３では、メッセージ送信周期にしたがって、マスタ２からＡｎｎｏｕｎｃｅメッセージが送信される。マスタ２からのメッセージは、代表ＩＦが動作するスレーブ１０−１に
よって受信される。
【０１６０】
Ｓ４では、パケット送受信部１１（タイムスタンプ制御部１１３）は、Ａｎｎｏｕｎｃｅメッセージを受信する（図９Ａ、ＯＰ２：ＮＯ）。受信したＡｎｎｏｕｎｃｅメッセージは、自系のＰＴＰスタック１３が参加しているマルチキャストグループのメッセージであるので（図９Ｂ、ＯＰ１２：自系）、パケット送受信部１１（タイムスタンプ制御部１１３）は、自系のＰＴＰスタック１３にＡｎｎｏｕｎｃｅメッセージを出力する（図９Ｂ、ＯＰ１６）。
【０１６１】
Ｓ５では、ＰＴＰスタック１３は、Ａｎｎｏｕｎｃｅメッセージが入力されたので（図１１、ＯＰ３１：Ａｎｎｏｕｎｃｅ）、ＡｎｎｏｕｎｃｅメッセージからマスタクロックＡのドメイン番号及びクロックＩＤ等を取得し、マスタテーブルに新規に登録する（図１１、ＯＰ３２）。以降、ＰＴＰスタック１３は、マスタ２に対してＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージ等の送信を開始する（図１１、ＯＰ３４）。
【０１６２】
Ｓ６では、ＰＴＰスタック１３に対する周期監視により、スレーブ１０−１の装置時刻制御部１４がＰＴＰスタック１３のデータセットの読み取りを行う（図１４、ＯＰ６１）。Ｓ７では、ＰＴＰスタック１３の選択中のマスタ２がデータセットに新規に登録されたので（図１４、ＯＰ６２：ＹＥＳ、ＯＰ６３：新規）、装置時刻制御部１４は、自系のスレーブアクセス先管理テーブル１２１に、マスタクロックＡのドメイン番号及びクロックＩＤと、自系のスレーブクロック１１０のドメイン番号及びクロックＩＤとを登録する（図１４、ＯＰ６４）。なお、具体例において、自系のスレーブクロック１１０のドメイン番号は、マスタクロックＡのドメイン番号と同じ値となる。
【０１６３】
Ｓ７の時点のスレーブ１０−１のスレーブアクセス先管理テーブル１２１は、図１７の（Ａ２）で示されるテーブルである。図１７の（Ａ２）のスレーブアクセス先管理テーブル１２１には、マスタクロックＡのドメイン番号とクロックＩＤとの組み合わせに対して、スレーブクロックのアクセス先が「自系」と登録されている。また、スレーブクロック１１０のドメイン番号（マスタクロックＡのドメイン番号と同じ）とクロックＩＤとの組み合わせに対して、スレーブクロックのアクセス先が「自系」と登録されている。
【０１６４】
Ｓ８では、装置時刻制御部１４は、他系の装置時刻制御部２４に、他系のスレーブアクセス先管理テーブル２２１への、マスタクロックＡのドメイン番号及びクロックＩＤと、自系のスレーブクロック１１０のドメイン番号及びクロックＩＤとの登録を指示する（図１４、ＯＰ６４）。Ｓ９では、スレーブ１０−２の装置時刻制御部２４は、自系のスレーブアクセス先管理テーブル２２１に、マスタクロックＡのドメイン番号及びクロックＩＤと、他系のスレーブクロック１１０のドメイン番号及びクロックＩＤとを登録する。
【０１６５】
Ｓ９の時点のスレーブ１０−２のスレーブアクセス先管理テーブル２２１は、図１８の（Ｂ２）で示されるテーブルである。図１８の（Ｂ２）のスレーブアクセス先管理テーブル２２１には、マスタクロックＡのドメイン番号とクロックＩＤとの組み合わせに対して、スレーブクロックのアクセス先が「他系」と登録されている。また、スレーブクロック１１０のドメイン番号（マスタクロックＡのドメイン番号と同じ）とクロックＩＤとの組み合わせに対して、スレーブクロックのアクセス先が「他系」と登録されている。
【０１６６】
図１６ＢのＳ１０では、メッセージ送信周期にしたがって、マスタ３からＡｎｎｏｕｎｃｅメッセージが送信される。マスタ３からのメッセージも、代表ＩＦが動作するスレーブ１０−１によって受信される。
【０１６７】
Ｓ１１では、パケット送受信部１１（タイムスタンプ制御部１１３）は、Ａｎｎｏｕｎ
ｃｅメッセージを受信する（図９Ａ、ＯＰ２：ＮＯ）。受信したＡｎｎｏｕｎｃｅメッセージは、他系のＰＴＰスタック２３が参加しているマルチキャストグループのメッセージであるので（図９Ｂ、ＯＰ１２：他系）、パケット送受信部１１（タイムスタンプ制御部１１３）は、他系のＰＴＰスタック２３にＡｎｎｏｕｎｃｅメッセージを出力する（図９Ｂ、ＯＰ１７）。なお、スレーブ１０−１のパケット送受信部１１からスレーブ１０−２のＰＴＰスタック２３へは、パケット送受信部１１（パケット転送部１１４）から、アプリ用通信ＩＦ  １０４を通じてスレーブ１０−２に送信され、パケット送受信部２１（パケット転送部２１４）を経由し、ＰＴＰスタック２３へと転送される。
【０１６８】
Ｓ１２では、ＰＴＰスタック２３は、マスタ３からのＡｎｎｏｕｎｃｅメッセージが入力されたので（図１１、ＯＰ３１：Ａｎｎｏｕｎｃｅ）、ＡｎｎｏｕｎｃｅメッセージからマスタクロックＢのドメイン番号及びクロックＩＤ等を取得し、マスタテーブルに新規に登録する（図１１、ＯＰ３２）。以降、ＰＴＰスタック２３は、マスタ３に対してＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージ等の送信を開始する（図１１、ＯＰ３４）。
【０１６９】
Ｓ１３では、ＰＴＰスタック２３に対する周期監視により、スレーブ１０−２の装置時刻制御部２４がＰＴＰスタック２３のデータセットの読み取りを行う（図１４、ＯＰ６１）。Ｓ１４では、ＰＴＰスタック２３の選択中のマスタ３がデータセットに新規に登録されたので（図１４、ＯＰ６２：ＹＥＳ、ＯＰ６３：新規）、装置時刻制御部２４は、自系のスレーブアクセス先管理テーブル２２１に、マスタクロックＢのドメイン番号及びクロックＩＤと、自系のスレーブクロック１２０のドメイン番号及びクロックＩＤとを登録する（図１４、ＯＰ６４）。なお、自系（スレーブ１０−２）のスレーブクロック１２０のドメイン番号は、具体例において、マスタクロックＢのドメイン番号と同じ値となる。
【０１７０】
Ｓ１４の時点のスレーブ１０−２のスレーブアクセス先管理テーブル２２１は、図１８の（Ｂ３）で示されるテーブルである。図１８の（Ｂ３）のスレーブアクセス先管理テーブル２２１には、マスタクロックＢのドメイン番号とクロックＩＤとの組み合わせに対して、スレーブクロックのアクセス先が「自系」であるエントリが追加されている。また、スレーブクロック１２０のドメイン番号（マスタクロックＢのドメイン番号と同じ）とクロックＩＤとの組み合わせに対して、スレーブクロックのアクセス先が「自系」であるエントリが追加されている。
【０１７１】
Ｓ１５では、装置時刻制御部２４は、他系のスレーブ１０−１の装置時刻制御部１４に、他系のスレーブアクセス先管理テーブル１２１への、マスタクロックＢのドメイン番号及びクロックＩＤと、自系のスレーブクロック１２０のドメイン番号及びクロックＩＤとの登録を指示する（図１４、ＯＰ６４）。Ｓ１６では、スレーブ１０−１の装置時刻制御部１４は、自系のスレーブアクセス先管理テーブル１２１に、マスタクロックＢのドメイン番号及びクロックＩＤと、他系のスレーブクロック１２０のドメイン番号及びクロックＩＤとを登録する。
【０１７２】
Ｓ１６の時点のスレーブ１０−１のスレーブアクセス先管理テーブル１２１は、図１７の（Ａ３）で示されるテーブルである。図１７の（Ａ３）のスレーブアクセス先管理テーブル１２１には、マスタクロックＢのドメイン番号とクロックＩＤとの組み合わせに対して、スレーブクロックのアクセス先が「他系」であるエントリが追加されている。また、スレーブクロック１２０のドメイン番号（マスタクロックＢのドメイン番号と同じ）とクロックＩＤとの組み合わせに対して、スレーブクロックのアクセス先が「他系」であるエントリが追加されている。
【０１７３】
図１９Ａ、図１９Ｂ、及び、図１９Ｃは、ユニキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。まず、スレーブ１０
−１のスレーブアクセス先管理テーブル１２１の初期状態は、図１７の（Ａ１）のテーブルに示される通りである。スレーブ１０−２のスレーブアクセス先管理テーブル２２１の初期状態は、図１８の（Ｂ１）のテーブルに示される通りである。
【０１７４】
Ｓ２１では、代表ＩＦが動作するスレーブ１０−１の装置時刻制御部１４が、ＰＴＰマスタサーバ管理テーブル（図８参照）の先頭の未使用であるマスタ２を選択する（図１５、ＯＰ７１）。Ｓ２２では、装置時刻制御部１４は、ＰＴＰスタック１３に選択したマスタ２のＩＰアドレスを設定する（図１５、ＯＰ７２：ＹＥＳ、ＯＰ７３）。
【０１７５】
Ｓ２３では、ＰＴＰスタック１３は、ＰＴＰメッセージのサービスの開始を要求するＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージをマスタ２に送信する。Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージは、パケット送受信部１１、外部ネットワーク用通信ＩＦ  １０３を経由して、ＩＰネットワーク２０１に出力される（図１０、ＯＰ２２：ＮＯ、ＯＰ２７）。
【０１７６】
Ｓ２４では、マスタ２は、スレーブ１０−１からＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ
Ｒｅｑｕｅｓｔメッセージを受信し、応答として、スレーブ１０−１にＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージを送信する。マスタ２は、Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージで供給の受諾をしたＡｎｎｏｕｎｃｅメッセージの送信を開始し、スレーブ１０−１に対して、所定の周期でＡｎｎｏｕｎｃｅメッセージを送信する。
【０１７７】
Ｓ２５では、スレーブ１０−１のパケット送受信部１１はＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージを受信する（図９Ａ、ＯＰ２：ＮＯ）。受信したメッセージは、スレーブ１０−１のユニキャストＩＰアドレス宛であるので（図９Ｂ、ＯＰ１１：ユニキャスト、ＯＰ１８：自系）、パケット送受信部１１（タイムスタンプ制御部１１３）は、自系のＰＴＰスタック１３にＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージを出力する（図９Ｂ、ＯＰ１６）。
【０１７８】
Ｓ２６では、ＰＴＰスタック１３は、Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージまたはマスタ２が供給を開始したＡｎｎｏｕｎｃｅメッセージにより（図１１、ＯＰ３１：Ａｎｎｏｕｎｃｅ）、当該メッセージからマスタクロックＡのドメイン番号及びクロックＩＤ等を取得し、マスタテーブルに新規に登録する（図１１、ＯＰ３２）。以降、ＰＴＰスタック１３は、マスタ２に対してＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージ等の送信を開始する（図１１、ＯＰ３４）。
【０１７９】
Ｓ２７では、ＰＴＰスタック１３に対する周期監視により、スレーブ１０−１の装置時刻制御部１４がＰＴＰスタック１３のデータセットの読み取りを行う（図１４、ＯＰ６１）。Ｓ２８では、ＰＴＰスタック１３の選択中のマスタ２がデータセットに新規に登録されたので（図１４、ＯＰ６２：ＹＥＳ、ＯＰ６３：新規）、装置時刻制御部１４は、自系のスレーブアクセス先管理テーブル１２１に、マスタクロックＡのドメイン番号及びクロックＩＤと、自系のスレーブクロック１１０のドメイン番号及びクロックＩＤとを登録する（図１４、ＯＰ６４）。Ｓ２８の時点のスレーブ１０−１のスレーブアクセス先管理テーブル１２１は、図１７の（Ａ２）で示されるテーブルである。
【０１８０】
図１９ＢのＳ２９では、装置時刻制御部１４は、他系の装置時刻制御部２４に、他系のスレーブアクセス先管理テーブル２２１への、マスタクロックＡのドメイン番号及びクロックＩＤと、自系のスレーブクロック１１０のドメイン番号及びクロックＩＤとの登録を指示する（図１４、ＯＰ６４）。Ｓ３０では、スレーブ１０−２の装置時刻制御部２４は、自系のスレーブアクセス先管理テーブル２２１に、マスタクロックＡのドメイン番号及
びクロックＩＤと、他系のスレーブクロック１１０のドメイン番号及びクロックＩＤとを登録する。Ｓ３０の時点のスレーブ１０−２のスレーブアクセス先管理テーブル２２１は、図１８の（Ｂ２）で示されるテーブルである。
【０１８１】
Ｓ３１では、スレーブ１０−１の装置時刻制御部１４は、ＰＴＰマスタサーバ管理テーブル（図８参照）内で最小番号の未使用であるマスタ３を選択する（図１５、ＯＰ７５）。Ｓ３２では、装置時刻制御部１４は、マスタ３のＩＰアドレスとＰＴＰ起動指示とを、アプリ用通信ＩＦ  １０４を通じて、他系のスレーブ１０−２の装置時刻制御部２４に送信する（図１５、ＯＰ７６：ＮＯ、ＯＰ７８）。
【０１８２】
Ｓ３３では、スレーブ１０−２の装置時刻制御部２４は、スレーブ１０−１からのマスタ３のＩＰアドレスとＰＴＰ起動指示とを受信し、ＰＴＰスタック２３にマスタ３のＩＰアドレスを設定する。
【０１８３】
Ｓ３４では、ＰＴＰスタック２３は、ＰＴＰメッセージのサービスの開始を要求するＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージを、マスタ３に送信する（図１０、ＯＰ２２：ＮＯ、ＯＰ２７）。Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージは、パケット送受信部２１、アプリ用通信ＩＦ  １０４、パケット送受信部１１、外部ネットワーク用通信ＩＦ  １０３を経由して、送信される。
【０１８４】
Ｓ３５では、マスタ３は、スレーブ１０−２からＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ
Ｒｅｑｕｅｓｔメッセージを受信し、応答として、スレーブ１０−２にＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージを送信する。以降、マスタ３は、スレーブ１０−２に対して、所定の周期でＡｎｎｏｕｎｃｅメッセージを送信する。Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージは、スレーブ１０−１の外部ネットワーク用通信ＩＦ  １０３、パケット送受信部１１、アプリ用通信ＩＦ  １０４、パケット送受信部２１、を経由して、スレーブ１０−２のＰＴＰスタック２３に到着する。
【０１８５】
Ｓ３６では、ＰＴＰスタック２３は、Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージまたはマスタ２が供給を開始したＡｎｎｏｕｎｃｅメッセージにより（図１１、ＯＰ３１：Ａｎｎｏｕｎｃｅ）、当該メッセージからマスタクロックＢのドメイン番号及びクロックＩＤ等を取得し、マスタテーブルに新規に登録する（図１１、ＯＰ３２）。以降、ＰＴＰスタック２３は、マスタ３に対してＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージ等の送信を開始する（図１１、ＯＰ３４）。
【０１８６】
図１９ＣのＳ３７では、ＰＴＰスタック２３に対する周期監視により、スレーブ１０−２の装置時刻制御部２４がＰＴＰスタック２３のデータセットの読み取りを行う（図１４、ＯＰ６１）。Ｓ３８では、ＰＴＰスタック２３の選択中のマスタ３がデータセットに新規に登録されたので（図１４、ＯＰ６２：ＹＥＳ、ＯＰ６３：新規）、装置時刻制御部２４は、自系のスレーブアクセス先管理テーブル２２１に、マスタクロックＢのドメイン番号及びクロックＩＤと、自系のスレーブクロック１２０のドメイン番号及びクロックＩＤとを登録する（図１４、ＯＰ６４）。Ｓ３８の時点のスレーブ１０−２のスレーブアクセス先管理テーブル２２１は、図１８の（Ｂ３）で示されるテーブルである。
【０１８７】
Ｓ３９では、装置時刻制御部２４は、他系のスレーブ１０−１の装置時刻制御部１４に、他系のスレーブアクセス先管理テーブル１２１への、マスタクロックＢのドメイン番号及びクロックＩＤと、自系のスレーブクロック１２０のドメイン番号及びクロックＩＤとの登録を指示する（図１４、ＯＰ６４）。Ｓ４０では、スレーブ１０−１の装置時刻制御部１４は、自系のスレーブアクセス先管理テーブル１２１に、マスタクロックＢのドメイン番号及びクロックＩＤと、他系のスレーブクロック１２０のドメイン番号及びクロック
ＩＤとを登録する。Ｓ４０の時点のスレーブ１０−１のスレーブアクセス先管理テーブル１２１は、図１７の（Ａ３）で示されるテーブルである。
【０１８８】
図１６Ａ及び図１６Ｂ、図１９Ａ〜図１９Ｃで示されるように、ＰＴＰメッセージにマルチキャストＩＰアドレスが用いられる場合でも、ユニキャストＩＰアドレスが用いられる場合でも、構築されるスレーブアクセス先管理テーブルは同じものとなる。
【０１８９】
図２０は、ＰＴＰメッセージの受信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。図２０では、スレーブ１０−１及びスレーブ１０−２において、スレーブアクセス先管理テーブルの構築が完了していることを想定する。ＰＴＰメッセージの受信及び送信を契機とするタイムスタンプ取得の処理のシーケンスは、マルチキャスト方式の場合でも、ユニキャスト方式の場合でも、同様である。以下の説明では、マルチキャスト方式又はユニキャスト方式のどちらが用いられるかについては限定されない。
【０１９０】
Ｓ５１では、マスタ２からＳｙｎｃメッセージが送信されたとする。マスタ２から送信されたＳｙｎｃメッセージは、代表ＩＦが動作しているスレーブ１０−１によって受信される。Ｓ５１においてマスタ２から送信されるＳｙｎｃメッセージには、マスタクロックＡのドメイン番号とクロックＩＤとが含まれている。
【０１９１】
Ｓ５２では、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ２からのＳｙｎｃメッセージを受信する（図９Ａ、ＯＰ１：ＹＥＳ）。Ｓｙｎｃメッセージはタイムスタンプの取得に関係する種別のメッセージである（図９Ａ、ＯＰ２：ＹＥＳ）。したがって、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブアクセス先管理テーブル１２１から、受信メッセージ内のマスタクロックＡのドメイン番号とクロックＩＤとに対応するアクセス先である自系のスレーブクロック１１０を取得する（図９Ａ、ＯＰ３：一致（自系））。
【０１９２】
Ｓ５３では、パケット送受信部１１（タイムスタンプ制御部１１３）は、自系のスレーブクロック１１０からタイムスタンプを取得する（図９Ａ、ＯＰ４）。Ｓ５４では、パケット送受信部１１（タイムスタンプ制御部１１３）は、取得したタイムスタンプをタイムスタンプ格納テーブル１２２に記録する（図９Ａ、ＯＰ６）。
【０１９３】
Ｓ５５では、パケット送受信部１１（タイムスタンプ制御部１１３）は、受信したＳｙｎｃメッセージを自系のＰＴＰスタック１３に転送する（図９Ｂ、ＯＰ１６）。
【０１９４】
Ｓ５６では、ＰＴＰスタック１３は、代表ＩＦがスレーブ１０−１で動作しているので（図１２、ＯＰ４１：自系）、自系のタイムスタンプ格納テーブル１２２から、受信したＳｙｎｃメッセージに該当するタイムスタンプを読み出す（図１２、ＯＰ４２）。Ｓ５７では、ＰＴＰスタック１３は、伝搬遅延やＯＦＭを算出し、スレーブクロック１１０の補正を行う（図１１、ＯＰ３６〜ＯＰ３９）。
【０１９５】
次に、Ｓ５８では、マスタ３からＳｙｎｃメッセージが送信されたとする。マスタ３から送信されたＳｙｎｃメッセージは、代表ＩＦが動作しているスレーブ１０−１によって受信される。Ｓ５８においてマスタ３から送信されるＳｙｎｃメッセージには、マスタクロックＢのドメイン番号とクロックＩＤとが含まれている。
【０１９６】
Ｓ５９では、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ３からのＳｙｎｃメッセージを受信する（図９Ａ、ＯＰ１：ＹＥＳ）。Ｓｙｎｃメッセージはタイムスタンプの取得に関係する種別のメッセージであるので（図９Ａ、ＯＰ２：ＹＥＳ）、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレー
ブアクセス先管理テーブル１２１から、受信メッセージ内のマスタクロックＢのドメイン番号とクロックＩＤとに対応するアクセス先である他系のスレーブ１０−２のスレーブクロック１２０を取得する（図９Ａ、ＯＰ３：一致（他系））。
【０１９７】
Ｓ６０では、パケット送受信部１１（タイムスタンプ制御部１１３）は、タイムスタンプ用通信ＩＦ  １０６を通じて、他系のスレーブ１０−２のスレーブクロック１２０からタイムスタンプを取得する。
【０１９８】
Ｓ６１では、パケット送受信部１１（タイムスタンプ制御部１１３）は、取得した他系のスレーブクロック１２０のタイムスタンプを自系のタイムスタンプ格納テーブル１２２に記録する（図９Ａ、ＯＰ６）。
【０１９９】
Ｓ６２では、パケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ３から受信したＳｙｎｃメッセージを他系のＰＴＰスタック２３に転送する（図９Ｂ、ＯＰ１７）。Ｓｙｎｃメッセージは、スレーブ１０−２のパケット送受信部２１（パケット転送部２１４）に受信され、パケット送受信部２１（パケット転送部２１４）からＰＴＰスタック２３に転送される。
【０２００】
Ｓ６３では、スレーブ１０−２のＰＴＰスタック２３は、スレーブ１０−１からＳｙｎｃメッセージを受信する（図１１、ＯＰ３１：Ｓｙｎｃ）。ＰＴＰスタック２３は、代表ＩＦがスレーブ１０−１で動作しているので（図１２、ＯＰ４１：他系）、装置時刻制御部２４にタイムスタンプ収集を依頼する（図１２、ＯＰ４３）。
【０２０１】
Ｓ６４では、装置時刻制御部２４は、ＰＴＰスタック２３からタイムスタンプ収集の依頼を受けて、スレーブ１０−２の装置時刻制御部２４へ、アプリ用通信ＩＦ  １０４を通じて、タイムスタンプ収集の依頼を送信する（図１３、ＯＰ５１：ＰＴＰスタック、ＯＰ５２）。
【０２０２】
Ｓ６５では、スレーブ１０−１の装置時刻制御部１４は、スレーブ１０−２の装置時刻制御部２４からタイムスタンプ収集の依頼を受けて、タイムスタンプ格納テーブル１２２から他系のタイムスタンプを読み出す（図１３、ＯＰ５１：他系の装置時刻制御部、ＯＰ５５）。
【０２０３】
Ｓ６６では、装置時刻制御部１４は、読み出したスレーブ１０−２のスレーブクロック１２０のタイムスタンプを、スレーブ１０−２の装置時刻制御部２４に、アプリ用通信ＩＦ  １０４を通じて、送信する（図１３、ＯＰ５６）。
【０２０４】
Ｓ６７では、スレーブ１０−２の装置時刻制御部２４は、スレーブ１０−１の装置時刻制御部１４から受信した、自系のスレーブクロック１２０のタイムスタンプを受信し、ＰＴＰスタック２３に通知する（図１３、ＯＰ５３、ＯＰ５４）。
【０２０５】
Ｓ６８では、ＰＴＰスタック２３は、伝搬遅延やＯＦＭを算出し、スレーブクロック１２０の補正を行う（図１１、ＯＰ３６〜ＯＰ３９）。
【０２０６】
図２１は、ＰＴＰメッセージの送信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。図２１の処理シーケンスは、例えば、図２０の処理シーケンスの後に発生する処理である。
【０２０７】
Ｓ７１では、スレーブ１０−１のＰＴＰスタック１３において、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの送信要求が発生したとする。Ｓ７１において生成されるＤｅｌａｙ＿
Ｒｅｑｕｅｓｔメッセージには、スレーブクロック１１０のドメイン番号とクロックＩＤとが含まれている。
【０２０８】
Ｓ７２では、送信対象のＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージはタイムスタンプの取得に関係する種別のメッセージであるので（図１０、ＯＰ２２：ＹＥＳ）、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブアクセス先管理テーブル１２１から、受信メッセージ内のスレーブクロック１１０のドメイン番号とクロックＩＤとに対応するアクセス先である自系のスレーブクロック１１０を取得する（図１０、ＯＰ２３：一致（自系））。
【０２０９】
Ｓ７３では、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブクロック１１０からタイムスタンプを取得する（図１０、ＯＰ２４）。Ｓ７４では、パケット送受信部１１（タイムスタンプ制御部１１３）は、取得したタイムスタンプをタイムスタンプ格納テーブル１２２に記録する（図１０、ＯＰ２６）。
【０２１０】
Ｓ７５では、パケット送受信部１１（タイムスタンプ制御部１１３）は、送信対象のＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを、代表ＩＦが動作する外部ネットワーク用通信ＩＦ  １０３を通じて、マスタ２に送信する（図１０、ＯＰ２７）。
【０２１１】
Ｓ７６では、マスタ２からＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージが送信される。マスタ２から送信されたメッセージは、代表ＩＦが動作しているスレーブ１０−１によって受信される。
【０２１２】
Ｓ７７では、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ２からのＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信する（図９Ａ、ＯＰ１：ＹＥＳ）。Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージはタイムスタンプの取得に関係する種別のメッセージでないので（図９Ａ、ＯＰ２：ＮＯ）、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、自系のＰＴＰスタック１３にメッセージを転送する（図９Ｂ、ＯＰ１６）。
【０２１３】
Ｓ７８では、ＰＴＰスタック１３は、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信する（図１１、ＯＰ３１：Ｄｅｌａｙ＿Ｒｅｓｐ）。ＰＴＰスタック１３は、代表ＩＦがスレーブ１０−１で動作しているので（図１２、ＯＰ４１：自系）、タイムスタンプ格納テーブル１２２から、Ｓ７５において送信したＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージに該当するタイムスタンプを読み出す（図１２、ＯＰ４２）。Ｓ７９では、ＰＴＰスタック１３は、伝搬遅延やＯＦＭを算出し、スレーブクロック１１０の補正を行う（図１１、ＯＰ３６〜ＯＰ３９）。
【０２１４】
次に、Ｓ８０では、スレーブ１０−２のＰＴＰスタック２３において、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの送信要求が発生したとする。スレーブ１０−２のＰＴＰスタック２３が送信するＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージは、マスタ３宛てのメッセージである。また、Ｓ８０において生成されるＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージには、スレーブクロック１２０のドメイン番号とクロックＩＤとが含まれている。
【０２１５】
Ｓ８１では、パケット送受信部２１（パケット転送部２１４）は、ＰＴＰスタック２３から入力されたＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを、アプリ用通信ＩＦ  １０４を通じて、スレーブ１０−１のパケット送受信部１１に転送する。
【０２１６】
Ｓ８２では、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブ１０−２からＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを受信する。送信対象のＤｅｌａｙ＿Ｒ
ｅｑｕｅｓｔメッセージはタイムスタンプの取得に関係する種別のメッセージである（図１０、ＯＰ２２：ＹＥＳ）。したがって、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブアクセス先管理テーブル１２１から、受信メッセージ内のスレーブクロック１２０のドメイン番号とクロックＩＤとに対応するアクセス先として他系のスレーブ１０−２のスレーブクロック１２０を取得する（図１０、ＯＰ２３：一致（他系））。
【０２１７】
Ｓ８３では、パケット送受信部１１（タイムスタンプ制御部１１３）は、タイムスタンプ用通信ＩＦ  １０６を通じて、他系のスレーブ１０−２のスレーブクロック１２０からタイムスタンプを取得する（図１０、ＯＰ２５）。
【０２１８】
Ｓ８４では、パケット送受信部１１（タイムスタンプ制御部１１３）は、取得した他系のスレーブクロック１２０のタイムスタンプをタイムスタンプ格納テーブル１２２に記録する（図１０、ＯＰ２６）。
【０２１９】
Ｓ８５では、パケット送受信部１１（タイムスタンプ制御部１１３）は、送信対象のＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを、代表ＩＦが動作する外部ネットワーク用通信ＩＦ  １０３を通じて、マスタ３に送信する（図１０、ＯＰ２７）。
【０２２０】
Ｓ８６では、マスタ３からスレーブ１０−２にＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージが送信される。マスタ３から送信されたメッセージは、代表ＩＦが動作しているスレーブ１０−１によって受信される。
【０２２１】
Ｓ８７では、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ３からのＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信する（図９Ａ、ＯＰ１：ＹＥＳ）。Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージはタイムスタンプの取得に関係する種別のメッセージでないので（図９Ａ、ＯＰ２：ＮＯ）、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、他系のスレーブ１０−２のＰＴＰスタック２３にメッセージを転送する（図９Ｂ、ＯＰ１７）。
【０２２２】
Ｓ８８では、スレーブ１０−２のＰＴＰスタック２３は、スレーブ１０−１からＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信する（図１１、ＯＰ３１：Ｄｅｌａｙ＿Ｒｅｓｐ）。ＰＴＰスタック２３は、代表ＩＦがスレーブ１０−１で動作しているので（図１２、ＯＰ４１：他系）、装置時刻制御部２４にタイムスタンプ収集を依頼する（図１２、ＯＰ４３）。
【０２２３】
Ｓ８９では、装置時刻制御部２４は、ＰＴＰスタック２３からタイムスタンプ収集の依頼を受けて、スレーブ１０−２の装置時刻制御部２４へ、アプリ用通信ＩＦ  １０４を通じて、タイムスタンプ収集の依頼を送信する（図１３、ＯＰ５１：ＰＴＰスタック、ＯＰ５２）。
【０２２４】
Ｓ９０では、スレーブ１０−１の装置時刻制御部１４は、スレーブ１０−２の装置時刻制御部２４からタイムスタンプ収集の依頼を受けて、タイムスタンプ格納テーブル１２２から他系のタイムスタンプを読み出す（図１３、ＯＰ５１：他系の装置時刻制御部、ＯＰ５５）。
【０２２５】
Ｓ９１では、装置時刻制御部１４は、読み出したスレーブ１０−２のスレーブクロック１２０のタイムスタンプを、スレーブ１０−２の装置時刻制御部２４に、アプリ用通信ＩＦ  １０４を通じて、送信する（図１３、ＯＰ５６）。
【０２２６】
Ｓ９２では、スレーブ１０−２の装置時刻制御部２４は、スレーブ１０−１の装置時刻制御部１４から受信した、自系のスレーブクロック１２０のタイムスタンプを受信し、ＰＴＰスタック２３に通知する（図１３、ＯＰ５３、ＯＰ５４）。
【０２２７】
Ｓ９３では、ＰＴＰスタック２３は、伝搬遅延やＯＦＭを算出し、スレーブクロック１２０の補正を行う（図１１、ＯＰ３６〜ＯＰ３９）。
【０２２８】
＜第１実施形態の作用効果＞
第１実施形態では、代表ＩＦが動作するスレーブ１０−１が、代表ＩＦを通じた他系のスレーブ１０−２とマスタ間のメッセージの送信又は受信時のタイムスタンプを、スレーブ１０−２のスレーブクロック１２０から取得する（図２０のＳ６０、図２１のＳ８３等）。スレーブ１０−２のスレーブクロック１２０のタイムスタンプを取得するための通信は、他のアプリケーションの通信とは分離され、タイムスタンプ用通信ＩＦ  １０６を通じて行われる。これによって、スレーブ１０−２のスレーブクロック１２０のタイムスタンプを取得するまでの伝送遅延の変動をより少なくすることができる。したがって、代表ＩＦにおけるＰＴＰメッセージの送信又は受信時のスレーブ１０−２におけるスレーブクロック１２０のタイムスタンプを、より正確に取得することができる。
【０２２９】
スレーブ１０−２は、自身のスレーブクロック１２０のタイムスタンプを用いてスレーブクロック１２０を補正することができる。したがって、第１実施形態によれば、代表ＩＦが動作してないスレーブ１０−２も、代表ＩＦが動作しているスレーブ１０−１と同程度の精度でマスタクロックに同期することができ、Ｈｏｔ／Ｓｔａｎｄｂｙ構成の各スレーブの時刻同期の精度を向上させることができる。
【０２３０】
Ｈｏｔ／Ｓｔａｎｄｂｙ構成の各スレーブの時刻同期の精度が向上することによって、Ｈｏｔ系及びＳｔａｎｄｂｙ系が切り替わった場合でも、新たにＨｏｔ系となったスレーブは、切替直後でも切替前と同程度の精度を保った時刻を提供することができる。
【０２３１】
また、第１実施形態では、代表ＩＦが動作するスレーブ１０−１が、もう一方のスレーブ１０−２のタイムスタンプを取得する処理が、ＯＳを介さずに、例えば、通信ＩＦのドライバによって実行される。これによって、メッセージが代表ＩＦにおいて送信又は受信される時点からスレーブ１０−２におけるタイムスタンプが取得されるまでの時間をより短くすることができ、スレーブ１０−２のスレーブクロック１２０のＯＦＭをより正確に取得することができる。これによって、代表ＩＦが動作していないスレーブにおいても、より精度の高い時刻同期を実現することができる。
【０２３２】
第１実施形態によれば、代表ＩＦが動作するスレーブ１０−１のタイムスタンプ制御部１１３は、他系のスレーブクロック１２０のタイムスタンプを取得し、自系のタイムスタンプ格納テーブル１２２に記録する。これによって、代表ＩＦが動作するスレーブ１０−１において一元的にタイムスタンプを管理することができる。また、もう一方のスレーブ１０−２では、タイムスタンプ格納テーブルを保持しなくてもよく、メモリの資源を節約できる。
【０２３３】
第１実施形態では、代表ＩＦが動作するスレーブ１０−１は、タイムスタンプの取得に関係する種別のメッセージが代表ＩＦにおいて送信又は受信される場合に、タイムスタンプの取得先をスレーブアクセス先管理テーブル１２１から取得する。スレーブアクセス先管理テーブル１２１には、メッセージ識別情報とタイムスタンプの参照先となるスレーブクロックの情報が格納されている。したがって、スレーブアクセス先管理テーブル１２１を保持することによって、スレーブ１０−１は、タイムスタンプの取得に関係する種別のメッセージの代表ＩＦにおける送信又は受信時に参照するスレーブクロックの所在を特定
することができる。
【０２３４】
また、スレーブアクセス先管理テーブル１２１のエントリは、ＰＴＰメッセージから学習される。これによって、時刻同期システム１００の管理者にとって、スレーブアクセス先管理テーブル１２１の管理が容易となる。
【０２３５】
また、代表ＩＦが動作しているか否かにかかわらず、いずれのスレーブにおいても、スレーブアクセス先管理テーブルが構築される。これによって、例えば、Ｈｏｔ系及びＳｔａｎｄｂｙ系が切り替わった場合でも、新たにＨｏｔ系となったスレーブが、タイムスタンプの取得に関係する種別のメッセージが代表ＩＦにおいて送信又は受信した場合に、参照先のスレーブクロックの所在を特定することができる。
【０２３６】
＜第１実施形態の変形例＞
第１実施形態では、スレーブアクセス先管理テーブルにおいて、メッセージ識別情報として、ドメイン番号とクロックＩＤとが用いられる。ユニキャスト方式の場合には、スレーブアクセス先管理テーブル内のメッセージ識別情報として、マスタのＩＰアドレスを用いることができる。変形例では、スレーブアクセス先管理テーブル内のメッセージ識別情報として、マスタのＩＰアドレスが用いられる。
【０２３７】
変形例では、時刻同期システム１００のシステム構成、パッケージ１０−１及び１０−２のハードウェア構成、スレーブ１０−１及び１０−２の機能構成は、第１実施形態と同様である。また、スレーブ１０−１及びスレーブ１０−２の各機能構成要素の処理も第１実施形態と同様である。
【０２３８】
図２２は、第１実施形態の変形例における、ＰＴＰメッセージにユニキャストＩＰアドレスが用いられる場合の装置時刻制御部１４の処理のフローチャートの一例である。図２２に示される処理は、装置時刻制御部１４に、ＰＴＰ起動指示が入力されると開始される。
【０２３９】
ＯＰ８１では、装置時刻制御部１４は、Ｈｏｔ系のスレーブのマスタとして、ＰＴＰマスタサーバ管理テーブル（図８）内の未使用であるマスタのうち最小番号のマスタを選択する。
【０２４０】
ＯＰ８２では、装置時刻制御部１４は、Ｓｔａｎｄｂｙ系のスレーブのマスタとして、ＰＴＰマスタサーバ管理テーブル（図８）の未使用であるマスタのうち最小番号のマスタを選択する。Ｓｔａｎｄｂｙ系のスレーブが複数台存在する場合には、例えば、ＯＰ８２では、装置時刻制御部１４は、全Ｓｔａｎｄｂｙ系のスレーブについてマスタを選択する。
【０２４１】
ＯＰ８３では、装置時刻制御部１４は、自系のスレーブアクセス先管理テーブル１２１に、ＯＰ８１及びＯＰ８２において自系及び他系のスレーブについて選択されたマスタのＩＰアドレスを登録する。
【０２４２】
ＯＰ８４では、装置時刻制御部１４は、自系のＰＴＰスタック１３に、ＯＰ８１又はＯＰ８３で選択したマスタのＩＰアドレスを設定する。その後、ＰＴＰスタック１３によって、ＰＴＰメッセージの送信が開始される。
【０２４３】
ＯＰ８５では、装置時刻制御部１４は、他系のスレーブ１０−２の装置時刻制御部２４に、他系のスレーブアクセス先管理テーブル２２１に、ＯＰ８１及びＯＰ８２において自系及び他系のスレーブについて選択されたマスタのＩＰアドレスの登録を指示する。
【０２４４】
ＯＰ８６では、装置時刻制御部１４は、他系のスレーブ１０−２の装置時刻制御部２４に、ＰＴＰ開始指示を、アプリ用通信ＩＦ  １０４を通じて通知する。その後、図２２に示される処理が終了する。
【０２４５】
図２３は、第１実施形態の変形例における、ユニキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。図２４は、具体例における、スレーブ１０−１及びスレーブ１０−２におけるスレーブアクセス先管理テーブル１２１、２２１の変遷の一例を示す図である。
【０２４６】
まず、変形例における、スレーブ１０−１のスレーブアクセス先管理テーブル１２１の初期状態は、図２４の（Ａ４）のテーブルに示される通りである。スレーブ１０−２のスレーブアクセス先管理テーブル２２１の初期状態は、図２４の（Ｂ４）のテーブルに示される通りである。変形例において、スレーブアクセス先管理テーブルは、メッセージ識別情報として、マスタのＩＰアドレスが用いられている。
【０２４７】
Ｓ１０１では、代表ＩＦが動作するスレーブ１０−１の装置時刻制御部１４が、ＰＴＰマスタサーバ管理テーブル（図８参照）の１番目のマスタ２をＨｏｔ系のスレーブのマスタとして、２番目のマスタ３をＳｔａｎｄｂｙ系のスレーブのマスタとして選択する（図２２、ＯＰ８１、ＯＰ８２）。具体例では、スレーブ１０−１がＨｏｔ系、スレーブ１０−２がＳｔａｎｄｂｙ系である。したがって、スレーブ１０−１のマスタとしてマスタ２、スレーブ１０−２のマスタとしてマスタ３が選択される。
【０２４８】
Ｓ１０２では、装置時刻制御部１４は、スレーブアクセス先管理テーブル１２１に、自系及び他系のマスタのＩＰアドレスを設定する（図２２、ＯＰ８３）。Ｓ１０２の時点のスレーブ１０−１のスレーブアクセス先管理テーブル１２１は、図２４の（Ａ５）のテーブルである。図２４の（Ａ５）のスレーブアクセス先管理テーブル１２１には、マスタ２のＩＰアドレスに対して、スレーブクロックのアクセス先が「自系」と登録されている。また、マスタ３のＩＰアドレスに対して、スレーブクロックのアクセス先が「他系」と登録されている。
【０２４９】
Ｓ１０３では、装置時刻制御部１４は、ＰＴＰスタック１３に選択したマスタ２のＩＰアドレスを設定する（図２２、ＯＰ８４）。
【０２５０】
Ｓ１０４では、ＰＴＰスタック１３は、ＰＴＰメッセージのサービスの開始を要求するＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージをマスタ２に送信する。Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージは、パケット送受信部１１、外部ネットワーク用通信ＩＦ  １０３を経由して、外部ネットワークに出力される（図１０、ＯＰ２２：ＮＯ、ＯＰ２７）。
【０２５１】
Ｓ１０５では、マスタ２は、スレーブ１０−１からＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージを受信し、応答として、スレーブ１０−１にＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージを送信する。以降、マスタ２は、スレーブ１０−１に対して、所定の周期でＡｎｎｏｕｎｃｅメッセージを送信する。
【０２５２】
Ｓ１０６では、装置時刻制御部１４は、他系のスレーブ１０−２の装置時刻制御部２４に、他系のスレーブアクセス先管理テーブル２２１への、自系及び他系のマスタのＩＰアドレスの登録を指示する（図２２、ＯＰ８５）。
【０２５３】
Ｓ１０７では、スレーブ１０−２の装置時刻制御部２４は、スレーブアクセス先管理テ
ーブル２２１に、自系及び他系のマスタのＩＰアドレスを登録する。Ｓ１０７の時点のスレーブ１０−２のスレーブアクセス先管理テーブル２２１は、図２４の（Ｂ５）のテーブルである。図２４の（Ｂ５）のスレーブアクセス先管理テーブル２２１には、マスタ２のＩＰアドレスに対して、スレーブクロックのアクセス先が「他系」と登録されている。また、マスタ３のＩＰアドレスに対して、スレーブクロックのアクセス先が「自系」と登録されている。
【０２５４】
Ｓ１０８では、装置時刻制御部１４は、マスタ３とのＰＴＰメッセージのサービスの開始の指示を、アプリ用通信ＩＦ  １０４を通じて、他系のスレーブ１０−２の装置時刻制御部２４に送信する。
【０２５５】
Ｓ１０９では、スレーブ１０−２の装置時刻制御部２４は、スレーブ１０−１からのマスタ３とのＰＴＰメッセージのサービスの開始の指示を受信し、ＰＴＰスタック２３にマスタ３のＩＰアドレスを設定する。
【０２５６】
Ｓ１１０では、ＰＴＰスタック２３は、ＰＴＰメッセージのサービスの開始を要求するＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージを、マスタ３に送信する（図１０、ＯＰ２２：ＮＯ、ＯＰ２７）。Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージは、パケット送受信部２１、アプリ用通信ＩＦ  １０４、パケット送受信部１１、外部ネットワーク用通信ＩＦ  １０３を経由して、送信される。
【０２５７】
Ｓ１１１では、マスタ３は、スレーブ１０−２からＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｒｅｑｕｅｓｔメッセージを受信し、応答として、スレーブ１０−２にＳｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージを送信する。以降、マスタ３は、スレーブ１０−２に対して、所定の周期でＡｎｎｏｕｎｃｅメッセージを送信する。Ｓｉｇｎａｌｉｎｇ−ｕｎｉｃａｓｔ  Ｇｒａｎｔメッセージは、スレーブ１０−１の外部ネットワーク用通信ＩＦ  １０３、パケット送受信部１１、アプリ用通信ＩＦ  １０４、パケット送受信部２１、を経由して、スレーブ１０−２のＰＴＰスタック２３に到着する。
【０２５８】
第１実施形態の変形例によれば、ＰＴＰメッセージにユニキャストＩＰアドレスが用いられる場合に、スレーブアクセス先管理テーブルのメッセージ識別情報として、マスタのＩＰアドレスを用いることができる。
【０２５９】
＜第２実施形態＞
第１実施形態では、パケット送受信部がスレーブクロックからタイムスタンプを受信し、取得したタイムスタンプをタイムスタンプ格納テーブルに格納する。パケット送受信部は、外部ネットワーク用通信ＩＦ  １０３のドライバに相当する。第１実施形態ではタイムスタンプ格納テーブルはメモリ１０２に格納されている。
【０２６０】
第２実施形態では、いずれのパッケージにおいても、タイムスタンプ格納テーブルを保持するメモリがメモリ１０２とは別に用意される。また、タイムスタンプの取得及びタイムスタンプの記録は、スレーブクロックが行う。
【０２６１】
したがって、第２実施形態では、いずれのスレーブもタイムスタンプ格納テーブルを備え、いずれのスレーブも自装置内のスレーブクロックのタイムスタンプを自装置内のタイムスタンプテーブルに記録する。第２実施形態では、第１実施形態と共通する説明は省略される。第２実施形態では、時刻同期システム１００のシステム構成は第１実施形態と同様である。
【０２６２】
図２５は、第２実施形態に係るパッケージ１０のハードウェア構成の一例を示す図であ
る。パッケージ１０は、ハードウェア構成要素として、プロセッサ１０１、メモリ１０２、通信インタフェース１０３、通信インタフェース１０４、ブリッジ１０５、通信インタフェース１０６、ＰＴＰスレーブクロック１０７に加え、メモリ１０８を備える。
【０２６３】
メモリ１０８は、例えば、ＲＡＭである。メモリ１０８は、例えば、タイムスタンプ用通信ＩＦ  １０６及びスレーブクロック１０７が搭載されているモジュールに搭載されており、スレーブクロック１０７が直接アクセス可能である。直接アクセス可能とは、伝送路以外の他のハードウェア構成要素を介さずにアクセス可能であることを示す。メモリ１０８は、「第２の記憶部」の一例である。
【０２６４】
スレーブクロック１０７には、例えば、ＦＰＧＡ等のプロセッサが搭載されており、プロセッサ１０１からの指示に従って、メモリ１０８、すなわち、タイムスタンプ格納テーブルにタイムスタンプを書き込む。
【０２６５】
したがって、第２実施形態では、例えば、プロセッサ１０１がタイムスタンプの取得の命令をスレーブクロック１０７に送信すると、スレーブクロック１０７がメモリ１０８内のタイムスタンプ格納テーブルにタイムスタンプを書き込む。
【０２６６】
図２６は、第２実施形態に係るスレーブの機能構成の一例を示す図である。第２実施形態に係るスレーブ１０−１は、機能構成要素として、パケット送受信部１１、記憶部１２、ＰＴＰスタック１３、装置時刻制御部１４に加え、記憶部１５を備える。記憶部１５は、メモリ１０８に相当する。第２実施形態では、記憶部１５にタイムスタンプ格納テーブル１５１が備えられる。
【０２６７】
第２実施形態に係るスレーブ１０−２も、スレーブ１０−１と同様に、パケット送受信部２１、記憶部２２、ＰＴＰスタック２３、装置時刻制御部２４に加え、記憶部２５を備える。記憶部２５は、メモリ１０８に相当し、タイムスタンプ格納テーブル２５１を備える。記憶部１５、記憶部２５、タイムスタンプ格納テーブル１５１、２５１は、それぞれ、「第２の記憶部」の一例である。
【０２６８】
また、第２実施形態では、例えば、タイムスタンプ制御部１１３は、代表ＩＦにおいて、タイムスタンプの取得に関係する種別のＰＴＰメッセージが受信又は送信された場合に、自系又は他系のスレーブクロックに対してタイムスタンプ取得要求を出力する。他系のスレーブクロックに対するタイムスタンプ取得要求は、タイムスタンプ用通信ＩＦ  １０６を通じて送信される。
【０２６９】
各スレーブ内のスレーブクロックは、タイムスタンプ制御部１１３からタイムスタンプ取得要求を受信すると、自装置内のタイムスタンプ格納テーブルにタイムスタンプを記録する。
【０２７０】
また、第２実施形態では、ＰＴＰスタック１３、２３は、ＰＴＰメッセージの受信又は送信のタイムスタンプを読み出す場合には、自装置内のタイムスタンプ格納テーブル１５１、２５１から読み出す。すなわち、第１実施形態では、ＰＴＰメッセージの受信又は送信のタイムスタンプを読み出す場合には、例えば、図１２の処理が行われるが、第２実施形態では、図１２に示される処理全体は実行されず、図１２のＯＰ４２に相当する処理が行われる。
【０２７１】
図２７は、第２実施形態に係るタイムスタンプ格納テーブルの一例である。図２７には、スレーブ１０−１のタイムスタンプ格納テーブル１５１と、スレーブ１０−２のタイムスタンプ格納テーブル２５１との一例が示されている。
【０２７２】
第２実施形態では、各スレーブがタイムスタンプ格納テーブルを保持し、自装置内のスレーブクロックのタイムスタンプの情報を自装置で保持している。そのため、タイムスタンプ値を読み出す場合に、タイムスタンプ格納テーブルが自系か他系かを意識する必要がない。
【０２７３】
したがって、第２実施形態に係るタイムスタンプ格納テーブルのトリガメッセージ情報には、ドメイン番号、クロックＩＤが用いられない。すなわち、第２実施形態に係るタイムスタンプ格納テーブルでは、トリガメッセージ情報として、方向とシーケンス番号とが用いられている。
【０２７４】
図２８は、第２実施形態に係るＰＴＰメッセージの受信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。図２８では、スレーブ１０−１及びスレーブ１０−２において、スレーブアクセス先管理テーブルの構築が完了していることを想定する。
【０２７５】
Ｓ１１１では、マスタ２からＳｙｎｃメッセージが送信されたとする。マスタ２から送信されたＳｙｎｃメッセージは、代表ＩＦが動作しているスレーブ１０−１によって受信される。
【０２７６】
Ｓ１１２では、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ２からのＳｙｎｃメッセージを受信する（図９Ａ、ＯＰ１：ＹＥＳ）。Ｓｙｎｃメッセージはタイムスタンプの取得に関係する種別のメッセージである（図９Ａ、ＯＰ２：ＹＥＳ）。したがって、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブアクセス先管理テーブル１２１から、受信メッセージ内のマスタクロックＡのドメイン番号とクロックＩＤとに対応するアクセス先である自系のスレーブクロック１１０を取得する（図９Ａ、ＯＰ３：一致（自系））。
【０２７７】
Ｓ１１３では、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブクロック１１０にタイムスタンプ取得要求を送信する。Ｓ１１４では、スレーブクロック１１０は、タイムスタンプ格納テーブル１５１にタイムスタンプを記録する。
【０２７８】
Ｓ１１５では、パケット送受信部１１（タイムスタンプ制御部１１３）は、受信したＳｙｎｃメッセージを自系のＰＴＰスタック１３に転送する（図９Ｂ、ＯＰ１６）。
【０２７９】
Ｓ１１６では、ＰＴＰスタック１３は、タイムスタンプ格納テーブル１５１から受信したＳｙｎｃメッセージに該当するタイムスタンプを読み出す。Ｓ１１７では、ＰＴＰスタック１３は、伝搬遅延やＯＦＭを算出し、スレーブクロック１１０の補正を行う（図１１、ＯＰ３６〜ＯＰ３９）。
【０２８０】
次に、Ｓ１１８では、マスタ３からＳｙｎｃメッセージが送信されたとする。マスタ３から送信されたＳｙｎｃメッセージは、代表ＩＦが動作しているスレーブ１０−１によって受信される。Ｓ１１８においてマスタ３から送信されるＳｙｎｃメッセージには、マスタクロックＢのドメイン番号とクロックＩＤとが含まれている。
【０２８１】
Ｓ１１９では、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ３からのＳｙｎｃメッセージを受信する（図９Ａ、ＯＰ１：ＹＥＳ）。Ｓｙｎｃメッセージはタイムスタンプの取得に関係する種別のメッセージであるので（図９Ａ、ＯＰ２：ＹＥＳ）、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブアクセス先管理テーブル１２１から、受信メッセージ内のマスタクロックＢのドメイ
ン番号とクロックＩＤとに対応するアクセス先である他系のスレーブ１０−２のスレーブクロック１２０を取得する（図９Ａ、ＯＰ３：一致（他系））。
【０２８２】
Ｓ１２０では、パケット送受信部１１（タイムスタンプ制御部１１３）は、タイムスタンプ用通信ＩＦ  １０６を通じて、他系のスレーブクロック１２０にタイムスタンプ取得要求を送信する。
【０２８３】
Ｓ１２１では、スレーブ１０−２のスレーブクロック１２０は、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）からタイムスタンプ取得要求を受けて、タイムスタンプ格納テーブル２５１にタイムスタンプを記録する。
【０２８４】
Ｓ１２２では、パケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ３から受信したＳｙｎｃメッセージを他系のＰＴＰスタック２３に転送する（図９Ｂ、ＯＰ１７）。
【０２８５】
Ｓ１２３では、スレーブ１０−２のＰＴＰスタック２３は、スレーブ１０−１から、パケット送受信部２１（パケット転送部２１４）を通じて、Ｓｙｎｃメッセージを受信する（図１１、ＯＰ３１：Ｓｙｎｃ）。ＰＴＰスタック２３は、タイムスタンプ格納テーブル２５１から受信したＳｙｎｃメッセージに該当するタイムスタンプを読み出す。Ｓ１２４では、ＰＴＰスタック２３は、伝搬遅延やＯＦＭを算出し、スレーブクロック１２０の補正を行う（図１１、ＯＰ３６〜ＯＰ３９）。
【０２８６】
図２９は、第２実施形態に係るＰＴＰメッセージの送信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。図２９の処理シーケンスは、例えば、図２８に示される処理シーケンスの後に発生する。
【０２８７】
Ｓ１３１では、スレーブ１０−１のＰＴＰスタック１３において、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの送信要求が発生したとする。Ｓ１３１において生成されるＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージには、スレーブクロック１１０のドメイン番号とクロックＩＤとが含まれている。
【０２８８】
Ｓ１３２では、送信対象のＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージはタイムスタンプの取得に関係する種別のメッセージである（図１０、ＯＰ２２：ＹＥＳ）。したがって、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブアクセス先管理テーブル１２１から、受信メッセージ内のスレーブクロック１１０のドメイン番号とクロックＩＤとに対応するアクセス先である自系のスレーブクロック１１０を取得する（図１０、ＯＰ２３：一致（自系））。
【０２８９】
Ｓ１３３では、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブクロック１１０に、タイムスタンプ取得要求を送信する。Ｓ１３４では、スレーブクロック１１０は、タイムスタンプ格納テーブル１５１にタイムスタンプを記録する。
【０２９０】
Ｓ１３５では、パケット送受信部１１（タイムスタンプ制御部１１３）は、送信対象のＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを、代表ＩＦが動作する外部ネットワーク用通信ＩＦ  １０３を通じて、マスタ２に送信する（図１０、ＯＰ２７）。
【０２９１】
Ｓ１３６では、マスタ２からＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージが送信される。マスタ２から送信されたメッセージは、代表ＩＦが動作しているスレーブ１０−１によって受信される。
【０２９２】
Ｓ１３７では、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ２からのＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信する（図９Ａ、ＯＰ１：ＹＥＳ）。Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージはタイムスタンプの取得に関係する種別のメッセージでないので（図９Ａ、ＯＰ２：ＮＯ）、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、自系のＰＴＰスタック１３にメッセージを転送する（図９Ｂ、ＯＰ１６）。
【０２９３】
Ｓ１３８では、ＰＴＰスタック１３は、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信する（図１１、ＯＰ３１：Ｄｅｌａｙ＿Ｒｅｓｐ）。ＰＴＰスタック１３は、代表ＩＦがスレーブ１０−１で動作しているので（図１２、ＯＰ４１：自系）、タイムスタンプ格納テーブル１５１から、Ｓ１３５において送信したＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージに該当するタイムスタンプを読み出す（図１２、ＯＰ４２）。Ｓ１３９では、ＰＴＰスタック１３は、伝搬遅延やＯＦＭを算出し、スレーブクロック１１０の補正を行う（図１１、ＯＰ３６〜ＯＰ３９）。
【０２９４】
次に、Ｓ１４０では、スレーブ１０−２のＰＴＰスタック２３において、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの送信要求が発生したとする。スレーブ１０−２のＰＴＰスタック２３が送信するＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージは、マスタ３宛てのメッセージである。また、Ｓ１４０において生成されるＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージには、スレーブクロック１２０のドメイン番号とクロックＩＤとが含まれている。
【０２９５】
Ｓ１４１では、パケット送受信部２１（パケット転送部２１４）は、ＰＴＰスタック２３から入力されたＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを、アプリ用通信ＩＦ  １０４を通じて、スレーブ１０−１のパケット送受信部１１に転送する。
【０２９６】
Ｓ１４２では、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブ１０−２からＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを受信する。送信対象のＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージはタイムスタンプの取得に関係する種別のメッセージである（図１０、ＯＰ２２：ＹＥＳ）。したがって、パケット送受信部１１（タイムスタンプ制御部１１３）は、スレーブアクセス先管理テーブル１２１から、受信メッセージ内のスレーブクロック１２０のドメイン番号とクロックＩＤとに対応するアクセス先である他系のスレーブ１０−２のスレーブクロック１２０を取得する（図１０、ＯＰ２３：一致（他系））。
【０２９７】
Ｓ１４３では、パケット送受信部１１（タイムスタンプ制御部１１３）は、タイムスタンプ用通信ＩＦ  １０６を通じて、他系のスレーブ１０−２のスレーブクロック１２０にタイムスタンプ取得要求を送信する。
【０２９８】
Ｓ１４４では、スレーブ１０−２のスレーブクロック１２０は、スレーブ１０−１のパケット送受信部１１からのタイムスタンプ取得要求を受けて、タイムスタンプ格納テーブル２５１にタイムスタンプを記録する。
【０２９９】
Ｓ１４５では、パケット送受信部１１（タイムスタンプ制御部１１３）は、送信対象のＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを、代表ＩＦが動作する外部ネットワーク用通信ＩＦ  １０３を通じて、マスタ３に送信する（図１０、ＯＰ２７）。
【０３００】
Ｓ１４６では、マスタ３からスレーブ１０−２へのＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージが送信される。マスタ３から送信されたメッセージは、代表ＩＦが動作しているスレーブ１０−１によって受信される。
【０３０１】
Ｓ１４７では、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、マスタ３からのＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信する（図９Ａ、ＯＰ１：ＹＥＳ）。Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージはタイムスタンプの取得に関係する種別のメッセージでないので（図９Ａ、ＯＰ２：ＮＯ）、スレーブ１０−１のパケット送受信部１１（タイムスタンプ制御部１１３）は、他系のスレーブ１０−２のＰＴＰスタック２３にメッセージを転送する（図９Ｂ、ＯＰ１７）。
【０３０２】
Ｓ１４８では、スレーブ１０−２のＰＴＰスタック２３は、スレーブ１０−１からＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを、パケット送受信部２１（パケット転送部２１４）を通じて、受信する（図１１、ＯＰ３１：Ｄｅｌａｙ＿Ｒｅｓｐ）。ＰＴＰスタック２３は、タイムスタンプ格納テーブル２５１から受信したＳｙｎｃメッセージに該当するタイムスタンプを読み出す。Ｓ１４９では、ＰＴＰスタック２３は、伝搬遅延やＯＦＭを算出し、スレーブクロック１２０の補正を行う（図１１、ＯＰ３６〜ＯＰ３９）。
【０３０３】
＜第２実施形態の作用効果＞
第２実施形態では、各スレーブ１０にスレーブクロック１０７が直接アクセス可能なメモリを備え、当該メモリにタイムスタンプ格納テーブルを保持する。これによって、代表ＩＦが動作していないスレーブ１０−２において、スレーブ１０−２のタイムスタンプをスレーブ１０−２内のタイムスタンプ格納テーブル２５１に保持することができる。これによって、代表ＩＦが動作していないスレーブ１０−２がＯＦＭ等を算出する際に、スレーブ１０−１からタイムスタンプを取得しなくてよくなり、パッケージ間の通信が削減される。
【０３０４】
＜第３実施形態＞
ＰＴＰでは、複数のマスタクロックから最適なクロックを選択するアルゴリズムとしてＢＭＣＡが規定されているが、ネットワーク伝搬中の同期精度の劣化までは考慮されていない。
【０３０５】
第３実施形態では、第１実施形態又は第２実施形態の時刻同期システム１００において、ＰＴＰマスタ２及びＰＴＰマスタ３それぞれについて、ネットワーク伝搬中の同期精度の劣化を考慮して、同期状態の優劣が判定される。具体的には、第３実施形態では、ＯＦＭに基づいて、各マスタについて同期状態の優劣が判定される。ＯＦＭは、「被同期クロック」の「同期元クロックからのオフセット」の一例である。
【０３０６】
ＰＴＰマスタとの同期状態の優劣の判定は、例えば、スレーブ１０−１、スレーブ１０−２、スレーブ１０−１及びスレーブ１０−２とは異なる制御装置等のいずれで行われてもよい。また、ＰＴＰマスタとの同期状態の優劣の判定がスレーブ１０−１で行われる場合には、装置時刻制御部１４、ＰＴＰスタック１３のいずれによって実行されてもよい。なお、第３実施形態では、一例として、スレーブ１０−１の装置時刻制御部１４がＰＴＰマスタとの同期状態の優劣の判定を実行することを想定して説明される。
【０３０７】
第３実施形態において、時刻同期システム１００のシステム構成、パッケージ１０のハードウェア構成、スレーブ１０−１及びスレーブ１０−２の機能構成は、第１実施形態又は第２実施形態と同様である。すなわち、第３実施形態では、スレーブ１０−１とスレーブ１０−２とがそれぞれ異なるＰＴＰマスタを選択していることを前提として説明される。
【０３０８】
図３０は、時刻同期精度の判定処理のフローチャートの一例である。時刻同期精度の判定処理は、時刻同期の精度がより良いＰＴＰマスタを特定する処理である。図３０に示される処理は、例えば、所定の周期で実行される。時刻同期精度の判定処理の実行周期は、
例えば、ＯＦＭの算出周期と同じである。
【０３０９】
ＯＰ９１では、装置時刻制御部１４は、スレーブ１０−１のＰＴＰスタック１３及びスレーブ１０−２のＰＴＰスタック２３から時刻オフセット（ＯＦＭ）を収集する。例えば、スレーブ１０−２のＰＴＰスタック２３からの時刻オフセットは、アプリ用通信ＩＦ  １０４とパケット転送部１１４とを通じて取得される。
【０３１０】
ＯＰ９２では、装置時刻制御部１４は、評価対象のＰＴＰマスタが有るか否かを判定する。ＯＰ９２では、例えば、ＯＦＭの絶対値が閾値以下であり、且つ、１周期前のＯＦＭとの差分が閾値以下である場合に、ＰＴＰマスタが評価対象であることが判定される。
【０３１１】
評価対象のＰＴＰマスタが存在する場合には（ＯＰ９２：ＹＥＳ）、処理がＯＰ９３に進む。いずれのＰＴＰマスタも評価対象とならない場合には（ＯＰ９２：ＮＯ）、処理がＯＰ９６に進む。ＯＰ９６では、装置時刻制御部１４は、評価項目の値（後述）の累積値をリセットする。その後、処理がＯＰ９７に進む。
【０３１２】
ＯＰ９３では、装置時刻制御部１４は、ＯＰ９２において評価対象であると判定されたＰＴＰマスタについて、評価項目の値を算出する。評価項目の値は、例えば、過去ｍ回分の１周期前のＯＦＭとの差分の累積値と、過去ｍ回分のＯＦＭの分散値の累積値と、である。１周期前のＯＦＭとの差分は、短期的にゆらぎを監視するための項目である。ＯＦＭの分散値は、長期的にゆらぎを監視するための項目である。
【０３１３】
ＯＰ９４では、装置時刻制御部１４は、ＯＰ９３において算出される評価結果が有るか否かを判定する。例えば、過去ｍ回分の評価項目の値が累積されていない場合には、評価結果がない。評価結果がある場合には（ＯＰ９４：ＹＥＳ）、処理がＯＰ９５に進む。評価結果がない場合には（ＯＰ９４：ＮＯ）、処理がＯＰ９７に進む。
【０３１４】
ＯＰ９５では、装置時刻制御部１４は、評価項目の値がより０に近い項目がより多いマスタを、同期状態が優れているマスタとして選択する。これによって、伝送経路のゆらぎが小さいマスタを、同期状態が優れているマスタとして選択することができる。その後、図３０に示される処理が終了する。
【０３１５】
ＯＰ９７では、装置時刻制御部１４は、評価対象となるマスタが存在しない、又は、評価項目の値が得られないので、いずれのマスタも選択することなく、現状維持を選択する。その後、図３０に示される処理が終了する。
【０３１６】
なお、ＯＰ９５において選択されたマスタは、例えば、同期先のマスタの切替の判定に用いられてもよい。より具体的には、ＯＰ９５において選択されたマスタが選択中のマスタと異なる場合には、例えば、Ｈｏｔ系のスレーブのＰＴＰスタックは、ＯＰ９５において選択されたマスタを新たな同期先に選択する。また、例えば、Ｓｔａｎｄｂｙ系のスレーブのＰＴＰスタックはＯＰ９５において選択されていないマスタを新たな同期先に選択する。
【０３１７】
または、ＯＰ９５において選択されたマスタは、例えば、Ｈｏｔ系／Ｓｔａｎｄｂｙ系の切替の判定に用いられてもよい。より具体的には、ＯＰ９５において選択されたマスタを選択中マスタとするスレーブをＨｏｔ系、もう一方のスレーブをＳｔａｎｄｂｙ系に変更してもよい。
【０３１８】
図３１は、時刻連続性チェック処理のフローチャートの一例である。図３１に示される処理は、例えば、図３０のＯＰ９２におけるＰＴＰマスタが評価対象であるか否かの判定
処理のオプションとして行われる処理である。図３１の処理は、各ＰＴＰマスタについて実行される。図３１の処理は、例えば、図３０のＯＰ９２において実行される処理であるので、図３１の実行周期は、図３０の実行周期と同じである。
【０３１９】
例えば、スレーブとマスタとの間の伝搬経路が対称経路から非対称経路に変化した場合には、計算誤差の混入のために時刻同期したＴＡＩ（仏語：Temps Atomique International、英語：International Atomic Time）時刻が不連続に変化する。
【０３２０】
対象経路とは、例えば、マスタからスレーブへの方向の伝搬経路と、スレーブからマスタへの方向の伝搬経路とが同じ経路であることを示す。非対称経路とは、例えば、マスタからスレーブへの方向の伝搬経路と、スレーブからマスタへの方向の伝搬経路とが異なる経路であることを示す。マスタとスレーブとの間の経路が非対称となると、各方向の経路の伝搬遅延の差分が大きくなる可能性が高い為、ＯＦＭが精度良く算出されなくなる可能性が高い。結果として、スレーブクロックに基づいて取得されるＴＡＩの時刻が不連続になる可能性が高くなる。時刻連続性チェック処理は、伝搬経路が対称から非対称に変化した場合のＴＡＩ時刻の不連続の状態のマスタを評価対象から除外するための処理である。
【０３２１】
ＯＰ１０１では、装置時刻制御部１４は、対象のＰＴＰマスタが評価対象であるか否かを判定する。ＯＰ１０１の判定は、図３０のＯＰ９２と同様に、例えば、対象のマスタとのＯＦＭの絶対値が閾値以下であり、且つ、１周期前のＯＦＭとの差分が閾値以下である場合に、対象のマスタが評価対象であることが判定される。
【０３２２】
対象のマスタが評価対象である場合には（ＯＰ１０１：ＹＥＳ）、処理がＯＰ１０３に進む。対象のマスタが評価対象でない場合には（ＯＰ１０１：ＮＯ）、処理がＯＰ１０２に進む。ＯＰ１０２では、装置時刻制御部１４は、対象のマスタについて評価対象外と判定した回数ｋに１を加算する。ｋの初期値は０である。その後、図３１に示される処理が終了し、例えば、図３０のＯＰ９３（評価対象マスタがある場合）またはＯＰ９６（評価対象マスタがない場合）に処理が進む。また、初回から１回以上は、ＯＰ９２の評価対象条件を満たさないため、ＯＰ１０２に進む。
【０３２３】
ＯＰ１０３では、装置時刻制御部１４は、対象のマスタについて評価対象外と判定した回数ｋが０であるか否かを判定する。ｋ＝０である場合には、例えば、対象のマスタが前回も評価対象と判定されていることが示される。ｋ＝０でない場合には、例えば、対象のマスタが評価対象外から評価対象へと復帰した初回の処理であることが示される。ｋ＝０である場合には（ＯＰ１０３：ＹＥＳ）、処理がＯＰ１０４に進む。ｋ＝０でない場合には（ＯＰ１０３：ＮＯ）、処理がＯＰ１０７に進む。
【０３２４】
ＯＰ１０４では、装置時刻制御部１４は、評価対象のマスタを選択しているスレーブのスレーブクロックのＴＡＩの現在値を取得し、前回値との差分を算出する。ＯＰ１０５では、装置時刻制御部１４は、ＯＰ１０４で取得したＴＡＩの差分値の平均値を算出する。
【０３２５】
ＯＰ１０６では、装置時刻制御部１４は、評価対象のマスタについて、ＯＰ１０４で取得したＴＡＩの現在値とＯＰ１０５で算出したＴＡＩの差分値の平均値とをメモリ１０２の所定の記憶領域に上書き更新して記憶する。その後、図３１に示される処理が終了し、例えば、図３０のＯＰ９３又はＯＰ９６に処理が進む。
【０３２６】
ＯＰ１０７では、装置時刻制御部１４は、評価対象外となる直前に対象のマスタについて記憶されたＴＡＩの差分値の平均値と、評価対象への復帰までにかかった周期数（ｋの値）とから、ＴＡＩの現在値の予測値を算出する。ＴＡＩの現在値の予測値は、例えば、ＴＡＩの差分値の平均値に、時刻同期精度の判定処理（図３０）の実行周期にｋの値を乗
じた値を加算して算出される。
【０３２７】
ＯＰ１０８では、装置時刻制御部１４は、対象のマスタを選択するスレーブのスレーブクロックからＴＡＩの現在値（実測値）を取得し、ＴＡＩの現在値について、ＯＰ１０７で算出した予測値と実測値との差分が閾値以下であるか否かを判定する。ＴＡＩの現在値の予測値と実測値との差分が閾値以下である場合には（ＯＰ１０８：ＹＥＳ）、ＴＡＩの連続性が確認され、処理がＯＰ１０９に進む。ＴＡＩの現在値の予測値と実測値との差分が閾値より大きい場合には（ＯＰ１０８：ＮＯ）、ＴＡＩの不連続が検出され、処理がＯＰ１１１に進む。
【０３２８】
ＯＰ１０９では、ＴＡＩの連続性が確認され、装置時刻制御部１４は、対象のマスタが引き続き評価対象であることを判定し、対象のマスタについて、ＯＰ１０８で取得したＴＡＩの現在値（実測値）をメモリ１０２の所定の記憶領域に記憶する。ＯＰ１１０では、装置時刻制御部１４は、ｋを０にリセットする。その後、図３１に示される処理が終了し、例えば、図３０のＯＰ９３又はＯＰ９６に処理が進む。
【０３２９】
ＯＰ１１１では、ＴＡＩの不連続が検出され、装置時刻制御部１４は、対象のマスタが評価対象外であることを判定する。ＯＰ１１２では、装置時刻制御部１４は、ｋに１を加算する。その後、図３１に示される処理が終了し、例えば、図３０のＯＰ９３又はＯＰ９６に処理が進む。
【０３３０】
図３１に示される時刻連続性チェック処理によれば、ＴＡＩの不連続性が検出された場合に、対象のマスタは評価対象外と判定される。したがって、時刻連続性チェック処理によれば、ネットワーク上の揺らぎが小さくても、スレーブの時刻に誤差が混入するマスタを評価対象から除外することができる。
【０３３１】
＜第３実施形態の作用効果＞
第３実施形態によれば、異なるＰＴＰマスタそれぞれのうち、伝送遅延の変動がより少なく、より時刻同期の精度の高いマスタを特定することができる。
【０３３２】
また、第３実施形態では、例えば、図３０に示される処理（ＯＰ９２）において、ＯＦＭの絶対値が閾値より大きい、又は、１周期前のＯＦＭとの差分が閾値より大きいＰＴＰマスタは評価対象から除外される。これによって、伝送遅延の変動が大きい経路を用いるＰＴＰマスタを評価対象から除外することができる。
【０３３３】
また、第３実施形態では、例えば、例えば、図３０に示される処理（ＯＰ９３〜ＯＰ９５）において、評価項目として、過去ｍ回分の１周期前のＯＦＭとの差分の累積値と、過去ｍ回分のＯＦＭの分散値の累積値とが用いられる。１周期前のＯＦＭとの差分は、短期的にゆらぎを監視するための項目である。ＯＦＭの分散値は、長期的にゆらぎを監視するための項目である。条件を満たす評価項目の数が多いＰＴＰマスタが選択されるので、短期的にも長期的にも伝送遅延の変動が小さい経路を用いるＰＴＰマスタを選択することができる。
【０３３４】
また、第３実施形態では、例えば、図３１に示される時刻連続性チェック処理によって、ＴＡＩが不連続となるスレーブクロックによって選択されているＰＴＰマスタが評価対象から除外される。これによって、ネットワーク上の揺らぎが小さくても、スレーブの時刻に誤差が混入するマスタを評価対象から除外することができる。
【０３３５】
なお、第３実施形態では、時刻同期システム１００を想定して説明されたが、第３実施形態で説明された時刻同期の優劣の判定方法を適用可能なシステムの構成は、時刻同期シ
ステム１００のシステム構成に限定されない。例えば、ＰＴＰマスタが３台以上含まれ、１台のスレーブが各ＰＴＰマスタからのメッセージを受信し、各ＰＴＰマスタについてＯＦＭを算出して、各マスタについて時刻同期の優劣を判定してもよい。
【０３３６】
＜プロセッサ＞
上記実施形態において、スレーブ１０は、プロセッサを備え、メモリ内にプログラムから展開された命令を実行することによって、説明された処理を実行する。プロセッサは、ＣＰＵ、ＭＰＵ（Microprocessor）とも呼ばれるプロセッサである。プロセッサは、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のプロセッサがマルチコア構成を有していても良い。上記各部の少なくとも一部の処理は、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit（GPU）、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、上記各部の少なくとも一部の処理は、集積回路（ＩＣ）、その他のディジタル回路であっても良い。また、上記各部の少なくとも一部にアナログ回路が含まれても良い。集積回路は、ＬＳＩ、Application Specific Integrated Circuit（ASIC）、プログラマブルロジックデバイス（ＰＬＤ）を含む。ＰＬＤは
、例えば、Field-Programmable Gate Array(FPGA)を含む。上記各部は、プロセッサと集
積回路との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラ（ＭＣＵ）、ＳｏＣ（System-on-a-chip），システムＬＳＩ、チップセットなどと呼ばれる。
【０３３７】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０３３８】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
【０３３９】
＜その他＞
上記の実施形態は、以下の付記を開示する。
（付記１）
１又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか１つに同期する被同期クロックを備える複数のネットワーク装置を代表して、前記１又は複数の同期元クロック装置との通信が行われる第１のインタフェースを備える第１のネットワーク装置が、
前記第１のインタフェースを通じて行われる通信を監視し、
第２のインタフェースを通じて、他のネットワーク装置との間で、前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージの転送を行い、
前記第１のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、第３の
インタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する、
ネットワーク装置の時刻同期方法。
（付記２）
前記第１のネットワーク装置が、
前記第３のインタフェースを通じて取得された前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを第１の記憶部に記録し、
前記他のネットワーク装置からの取得要求に応じて、前記第１の記憶部に格納されている前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを、前記第２のインタフェースを通じて、送信する、
付記１に記載のネットワーク装置の時刻同期方法。
（付記３）
前記複数のネットワーク装置のそれぞれに備えられる被同期クロックが、
タイムスタンプの取得要求を受けた場合に、前記被同期クロックがアクセス可能な第２の記憶部にタイムスタンプを記録し、
前記第１のネットワーク装置が、
前記処理として、前記第１のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックにタイムスタンプの取得要求を送信する、
付記１に記載のネットワーク装置の時刻同期方法。
（付記４）
前記第１のネットワーク装置が、
複数の同期元クロック装置のそれぞれのアドレスを記憶する第３の記憶部にアドレスが記憶される同期元クロック装置から、前記複数のネットワーク装置それぞれに備えられる被同期クロックの同期元を選択し、
前記他のネットワーク装置に、前記他のネットワーク装置に備えられる被同期クロックの同期元として選択された同期元クロック装置のアドレスを前記第２のインタフェースを通じて通知する、
付記２又は３に記載のネットワーク装置の時刻同期方法。
（付記５）
前記第１のネットワーク装置は、
前記第１のインタフェースにおいて、前記複数のネットワーク装置のいずれかと前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、メッセージの識別情報とタイムスタンプの参照先の被同期クロックとの対応付けを記憶する第４の記憶部に基づいて、前記検出されたメッセージの識別情報に対応する被同期クロックを特定し、
前記特定された被同期クロックを備えるネットワーク装置に対して、前記処理を実行する、
付記１から４のいずれか一つに記載のネットワーク装置の時刻同期方法。
（付記６）
前記複数のネットワーク装置のそれぞれは、
前記１又は複数の同期元クロック装置のうちの１つの同期元クロック装置から自装置へのメッセージを受信した場合に、前記受信したメッセージの識別情報と自装置に備えられる被同期クロックとの対応付けを前記第４の記憶部に記録し、
前記対応付けを他のネットワーク装置に通知し、
他のネットワーク装置から、メッセージの識別情報と前記他のネットワーク装置に備えられる被同期クロックとの対応付けの通知を受けた場合に、前記第４の記憶部に、前記通知された対応付けを記録する、
付記５に記載のネットワーク装置の時刻同期方法。
（付記７）
前記第１のネットワーク装置に備えられるプロセッサが、
前記第１のインタフェースのドライバプログラムを実行することによって、前記第１のインタフェースを通じてやり取りされる他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する、
付記１から６のいずれか一つに記載のネットワーク装置の時刻同期方法。
（付記８）
前記複数のネットワーク装置のそれぞれは、被同期クロックが同期する同期元クロックを備える第１の同期元クロック装置と前記第１のインタフェースとの間の、前記被同期クロックのタイムスタンプに基づいて算出される伝搬遅延に基づいて、前記被同期クロックの前記第１の同期元クロック装置に備えられる同期元クロックからのオフセットが０になるように前記被同期クロックを補正し、
前記第１のネットワーク装置は、
前記複数のネットワーク装置のそれぞれについて、前記オフセットに基づいて、前記１又は複数の同期元クロック装置の中から前記伝搬遅延の変動のより小さい同期元クロック装置を選択する、
付記１から７のいずれか一つに記載のネットワーク装置の時刻同期方法。
（付記９）
前記第１のネットワーク装置は、
前記１又は複数の同期元クロック装置のうち、前記オフセットの絶対値が第１の閾値より大きく、且つ、前記オフセットの変動値が第２の閾値より大きい同期元クロック装置を、選択対象から除外する、
付記８に記載のネットワーク装置の時刻同期方法。
（付記１０）
前記第１のネットワーク装置が、
前記１又は複数の同期元クロック装置のうち、少なくとも、前記オフセットの所定期間過去の分散値の累積値がより小さい、又は、前記オフセットと変動値の前記所定期間の累積値がより０に近い同期元クロック装置を選択する、
付記８又は９に記載のネットワーク装置の時刻同期方法。
（付記１１）
前記第１のネットワーク装置が、
前記１又は複数の同期元クロック装置のうち、被同期クロックに基づくＴＡＩ（International Atomic Time）の不連続が検出されたネットワーク装置の同期元の同期元クロ
ック装置を、選択対象から除外する、
付記８から１０のいずれか一つに記載のネットワーク装置の時刻同期方法。
（付記１２）
前記第１のネットワーク装置が、
前記複数のネットワーク装置について、
所定の周期で、前記ＴＡＩの値とＴＡＩの変動値の平均値とを取得し、
前記平均値に基づいて前記ＴＡＩの予測値を算出し、
前記ＴＡＩの予測値と前記被同期クロックから取得されるＴＡＩの実測値との差分が第４の閾値より大きい場合に、前記被同期クロックの不連続を検出する、
付記１１に記載のネットワーク装置の時刻同期方法。
（付記１３）
１又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか１つに同期する被同期クロックと、
他の被同期クロックを備える他のネットワーク装置を代表して、前記１又は複数の同期元クロック装置との通信が行われる第１のインタフェースと、
他のネットワーク装置との間で、前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージの転送が行われる第２のインタフェースと、
前記他のネットワーク装置との接続される第３のインタフェースと、
前記第１のインタフェースを通じて行われる通信を監視し、前記第１のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する制御部と、
を備えるネットワーク装置。
（付記１４）
同期元クロックを備える、１又は複数の同期元クロック装置と、
前記１又は複数の同期元クロック装置それぞれに備えられる同期元クロックのうちのいずれか１つに同期する被同期クロックを備える複数のネットワーク装置と、
を含み、
前記複数のネットワーク装置のうちの１つは、
他のネットワーク装置を代表して前記１又は複数の同期元クロック装置との通信が行われる第１のインタフェースと、
他のネットワーク装置との間で、前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージの転送が行われる第２のインタフェースと、
前記他のネットワーク装置との接続される第３のインタフェースと、
前記第１のインタフェースを通じて行われる通信を監視し、前記第１のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記１又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第３のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する制御部と、
を備えるネットワークシステム。
（付記１５）
１又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか１つに同期する被同期クロックを備える複数のネットワーク装置であって、前記複数のネットワーク装置のうちの１つのネットワーク装置が前記複数のネットワーク装置を代表して前記１又は複数の同期元クロック装置と通信を行う第１のインタフェースを備える、前記複数のネットワーク装置のそれぞれが、
前記被同期クロックが同期する同期元クロックを備える第１の同期元クロック装置と前記第１のインタフェースとの間の、前記被同期クロックのタイムスタンプに基づいて算出される伝搬遅延に基づいて、前記被同期クロックの前記第１の同期元クロック装置に備えられる同期元クロックからのオフセットが０になるように前記被同期クロックを補正し、
情報処理装置が、
前記複数のネットワーク装置のそれぞれについて、前記オフセットに基づいて、前記１又は複数の同期元クロック装置の中から伝搬遅延の変動のより小さい同期元クロック装置を選択する、
ネットワーク装置の時刻同期方法。
【符号の説明】
【０３４０】
１          ネットワーク装置
２、３      ＰＴＰマスタ
１０        ＰＴＰスレーブ
１１、２１      パケット送受信部
１２、１５、２２、２５      記憶部
１３、２３      ＰＴＰスタック
１４、２４      装置時刻制御部
１０１      プロセッサ
１０２、１０８      メモリ
１０３、１０４、１０６      通信ＩＦ
１０５      ブリッジ
１０７、１１０、１２０      スレーブクロック
１１１、２１１      受信部
１１２、２１２      送信部
１１３、２１３      タイムスタンプ制御部
１１４、２１４      パケット転送部
１２１、２２１      スレーブアクセス先管理テーブル
１２２、２２２、１５１、２５１      タイムスタンプ格納テーブル
１５０      代表インタフェース
【図１】
2019080288.tif 000004
【図２】
2019080288.tif 000005
【図３】
2019080288.tif 000006
【図４】
2019080288.tif 000007
【図５】
2019080288.tif 000008
【図６】
2019080288.tif 000009
【図７】
2019080288.tif 000010
【図８】
2019080288.tif 000011
【図９Ａ】
2019080288.tif 000012
【図９Ｂ】
2019080288.tif 000013
【図１０】
2019080288.tif 000014
【図１１】
2019080288.tif 000015
【図１２】
2019080288.tif 000016
【図１３】
2019080288.tif 000017
【図１４】
2019080288.tif 000018
【図１５】
2019080288.tif 000019
【図１６Ａ】
2019080288.tif 000020
【図１６Ｂ】
2019080288.tif 000021
【図１７】
2019080288.tif 000022
【図１８】
2019080288.tif 000023
【図１９Ａ】
2019080288.tif 000024
【図１９Ｂ】
2019080288.tif 000025
【図１９Ｃ】
2019080288.tif 000026
【図２０】
2019080288.tif 000027
【図２１】
2019080288.tif 000028
【図２２】
2019080288.tif 000029
【図２３】
2019080288.tif 000030
【図２４】
2019080288.tif 000031
【図２５】
2019080288.tif 000032
【図２６】
2019080288.tif 000033
【図２７】
2019080288.tif 000034
【図２８】
2019080288.tif 000035
【図２９】
2019080288.tif 000036
【図３０】
2019080288.tif 000037
【図３１】
2019080288.tif 000038