以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<PTPの時刻同期ロジック>
図1は、PTPの時刻同期ロジックの一例を示す図である。PTPでは、PTPマスタクロックを備える装置とPTPスレーブクロックを備える装置との間で複数のPTPメッセージがやり取りされる。PTPスレーブクロックを備える装置は、PTPメッセージの
送信時刻及び受信時刻のタイムスタンプに基づいて、PTPスレーブクロックをPTPマスタクロックに同期させるための処理が行われる。なお、PTPマスタクロックを備える装置とPTPスレーブクロックを備える装置との間のPTPメッセージの伝搬経路は対称であることを前提とする。
以下、PTPマスタクロック、PTPスレーブクロックをそれぞれ、単に、マスタクロック、スレーブクロックと称する。また、以下、PTPマスタクロックを備える装置、PTPスレーブクロックを備える装置を、それぞれ、単に、マスタ、スレーブと称することがある。また、PTPマスタクロックを備える装置を、PTPマスタサーバ、マスタサーバと称することもある。また、以下、PTPメッセージを、単に、メッセージと称することがある。
例えば、マスタからは、所定の周期でSyncメッセージが送信されている。Syncメッセージの送信周期は、例えば、1秒である。
スレーブは、当該Syncメッセージを受信すると、当該Syncメッセージの受信時刻t2を自身のスレーブクロックから取得する。また、当該Syncメッセージのマスタクロックの送信時刻t1は、例えば、マスタからのFollow_Upメッセージによって送信される。スレーブは、当該Follow_Upメッセージを受信することで、当該Syncメッセージのマスタクロックの送信時刻t1を取得する。なお、Follow_Upメッセージはオプションの機能であり、Follow_Upメッセージのオプションが採用されていない場合には、Syncメッセージにマスタクロックの送信時刻t1が含まれている。
次に、スレーブはマスタに対してDelay_Requestメッセージを送信する。また、スレーブは、Delay_Requestメッセージの送信時刻t3をスレーブクロックから取得する。マスタは、Delay_Requestメッセージを受信すると、当該Delay_Requestメッセージの受信時刻t4をマスタクロックから取得し、受信時刻t4をDelay_Responseメッセージに含めてスレーブに送信する。
スレーブでは、スレーブクロックをマスタクロックに同期させるための処理として、例えば、時刻t1〜t4からマスタクロックに対するオフセットであるOFM(Offset From Master)を算出し、OFMが0に近づくようにスレーブクロックを調整する。スレーブクロックの調整は、例えば、スレーブクロックを加速又は減速することによって行われる。OFMに基づくスレーブックロックの調整は、例えば、スレーブクロック補正、ともいう。
OFMは、例えば、以下の数式1によって求められる。
t_ms、t_smは、それぞれ、マスタからスレーブ、スレーブからマスタへの片方
向の伝搬遅延時間とスレーブクロックのマスタクロックからのオフセットとを含む、メッセージの伝搬時間である。MPD(Mean Path Delay)は、各方向の伝搬遅延時間の平均
であって、マスタとスレーブとの間の伝搬遅延時間を示す。
PTPでは、スレーブクロックのタイムスタンプは、OS(Operating System)を通さずに、例えば、スレーブクロックのドライバやネットワーク送受信にかかるドライバ等のOSよりも物理的にスレーブクロックやネットワークに近いプロセスから取得される。これによって、PTPでは、μ秒オーダの同期精度を達成している。
なお、OFMの算出(スレーブクロック補正)は、例えば、タイムスタンプの取得に関係する種別のPTPメッセージが受信されたタイミングで実行される。例えば、Syncメッセージが1秒周期で送信される場合には、OFMの算出(スレーブクロック補正)は、1秒周期で、Syncメッセージ(又はFollow_Upメッセージ)の受信時とDelay_Responseメッセージの受信時とに実行される。OFMの算出周期については、一定時間に計測した複数の測定データを振るいにかけるフィルタ機能を使う場合、パケット送受信周期とは別のフィルタ周期、例えば、Syncメッセージの数倍周期ごと、に算出する場合もある。
図2は、PTPメッセージの共通部のフォーマットを示す図である。PTPは、UDP(User Datagram Protocol)を用いるプロトコルである。また、PTPは、メッセージの送信にマルチキャストを用いる方式(以下、マルチキャスト方式)と、ユニキャストを用いる方式(以下、ユニキャスト方式)とがある。図2に示される共通部のフォーマットは、マルチキャスト方式及びユニキャスト方式で共通し、且つ、全ての種別のPTPメッセージでも共通している部分のフォーマットである。
PTPメッセージには、UDPのポート番号319又は320が用いられる。UDPポート番号319は、タイムスタンプの取得に関係する種別のメッセージに用いられる。UDPポート番号320は、タイムスタンプの取得に関係しない種別のメッセージに用いられる。
UDPポート番号319が用いられるメッセージには、例えば、Syncメッセージ、Delay_Requestメッセージがある。UDPポート番号320が用いられるメッセージには、例えば、Announceメッセージ、Delay_ResponseメッセージFollow_Upメッセージがある。Announceメッセージは、PTPマスタの情報を配信するメッセージであって、例えば、2秒等の周期で送信される。
PTPメッセージの種別は、共通部の「メッセージ種別」(図中「msgType」)によっ
て示される。ドメイン番号は、共通部の「ドメイン番号」(図中「domain Number」)に
よって示される。ドメインは、PTPの論理境界を示す。同じドメイン番号を用いるマスタ、スレーブは、同じPTPドメインに属する。
また、共通部の「source port Identity」に、PTPクロックを識別するクロックIDが含まれている。クロックIDは、例えば、PTPメッセージの通信に用いられているインタフェースのMAC(Media Access Control)アドレスから生成される。クロックIDは、例えば、「source port Identity」の先頭から64ビットに格納されている。PTPクロックは、例えば、ドメイン番号とクロックIDとから識別される。
また、共通部の「シーケンス番号」によって、PTPメッセージの新しさが示される。例えば、シーケンス番号が大きいほど新しいPTPメッセージであることが示される。
<第1実施形態>
図3は、第1実施形態に係る時刻同期システムのシステム構成の一例を示す図である。時刻同期システム100は、例えば、ネットワーク装置1、PTPマスタサーバ2、PTPマスタサーバ3を含む。ネットワーク装置1、PTPマスタサーバ2、PTPマスタサーバ3は、例えば、IP(Internet Protocol)ネットワーク201に接続している。
マスタ2は、マスタクロックAを備えている。マスタ3は、マスタクロックBを備えている。PTPマスタクロック、マスタクロックA、マスタクロックBは、それぞれ、「同期元クロック」の一例である。PTPマスタクロックを備える装置、PTPマスタ、マスタ2、マスタ3は、それぞれ、「同期元クロック装置」の一例である。
ネットワーク装置1は、例えば、時刻同期専用の装置、ゲートウェイ装置等である。ネットワーク装置1は、PTPスレーブ10−1、10−2を備える。図3では、スレーブ10−1はHot系である。図3では、スレーブ10−2はStandby系である。スレーブ10−1はスレーブクロック110を備える。スレーブ10−2はスレーブクロック120を備える。PTPスレーブクロック、スレーブクロック110、スレーブクロック120は、それぞれ、「被同期クロック」の一例である。PTPスレーブクロックを備える装置、PTPスレーブ10−1、PTPスレーブ10−2は、それぞれ、「ネットワーク装置」の一例である。
また、Hot系のスレーブ10−1とStandby系のスレーブ10−2との間で、代表インタフェース(IF)150が共有されている。Hot系のスレーブ10−1及びStandby系のスレーブ10−2は、代表IF 150を通じて、マスタ2又はマスタ3とPTPメッセージの交換を行っている。PTPメッセージは、「メッセージ」の一例である。
代表IF 150は、Hot系のスレーブ10−1とStandby系のスレーブ10−2とのいずれで動作してもよく、図3では、Hot系のスレーブ10−1において動作している。また、代表IF 150は、マスタ2、3と通信するためのIPアドレスを1つ有している。代表IF 150のIPアドレスは、例えば、Hot系のスレーブ10−1とStandby系のスレーブ10−2とのいずれで動作する場合でも変わらない。代表IF 150は、「第1のインタフェース」の一例である。スレーブとマスタとの間のPTPメッセージの交換は、「第1のインタフェースを通じて行われる通信」の一例である。
図3に示される例では、Hot系のスレーブ10−1のスレーブクロック110はマスタ2のマスタクロックAに同期する。図3に示される例では、Standby系のスレーブ10−2のスレーブクロック120はマスタ3のマスタクロックBに同期する。
第1実施形態では、代表IF 150は、Hot系のスレーブ10−1において動作することとする。第1実施形態では、代表IF 150が動作するスレーブ10−1は、代表IFにおけるもう一方のスレーブ10−2とマスタ3との間のメッセージの受信時刻及び送信時刻のタイムスタンプを、スレーブ10−2に備えられるスレーブクロック120から取得する。また、第1実施形態では、スレーブ10−1がスレーブ10−2からタイムスタンプを取得する場合の通信は、他のアプリケーションの通信が通るインタフェースとは分離されたインタフェース間で行われる。また、スレーブ10−2が備えるスレーブクロック120のタイムスタンプの取得は、当該分離されたインタフェースを通じて、また、OSを経由せずに、ハードウェアアシストによって行われる。
スレーブ10−2は、マスタ3との間のメッセージが代表IF 150において送信又
は受信された時点におけるスレーブ10−2のスレーブクロック120のタイムスタンプを用いて、マスタ3のマスタクロックBとの同期をとることができる。これによって、代表IF 150が動作していないスレーブ10−2における時刻同期の精度を代表IF 150が動作するスレーブ10−1と同じ程度の精度にすることができる。
代表IF 150が動作するスレーブ10−1は、「第1のネットワーク装置」の一例である。タイムスタンプの取得の通信に用いられる、他のアプリケーションの通信が通るインタフェースとは分離されたインタフェースは、「第3のインタフェース」の一例である。アプリケーションの通信が通るインタフェースは、「第2のインタフェース」の一例である。
なお、Hot系とStandby系との切替の制御は、例えば、ネットワーク装置1内の他のパッケージ、ネットワーク装置1とは異なる装置等によって行われる。第1実施形態では、スレーブのHot系とStandby系との切替の制御は、既存の技術のいずれが用いられてもよい。
なお、マスタ又はマスタクロックの数は、2つに限定されず、1つでも3つ以上であってもよい。また、パッケージ又はスレーブクロックの数は、3つ以上であってもよい。
<装置構成>
図4は、パッケージのハードウェア構成の一例を示す図である。パッケージは、ネットワーク装置1に搭載されているユニットカードである。パッケージは、PTPスレーブとして動作するハードウェアである。スレーブ10−1として動作するパッケージ10−1及びスレーブ10−2として動作するパッケージ10−2のいずれもハードウェア構成は同じである。そのため、図4では、パッケージ10−1及びパッケージ10−2それぞれの共通するハードウェア構成要素には同じ符号が付されている。また、パッケージ10−1、10−2を区別しない場合には、以下、パッケージ10と称する。パッケージ10は、「ネットワーク装置」の一例である。
パッケージ10は、ハードウェア構成要素として、プロセッサ101、メモリ102、通信インタフェース103、通信インタフェース104、ブリッジ105、通信インタフェース106、PTPスレーブクロック107を備える。また、これらはバスにより互いに接続されている。
メモリ102は、例えば、メインメモリとして用いられるメモリである。メモリ102は、例えば、RAM(Random Access Memory)のような半導体メモリを含む。メモリ102は、プロセッサ101に、例えば、所定の記憶装置に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。メモリ102の記憶領域には、例えば、OS、各通信インタフェースのドライバ、スレーブクロック107のドライバ、PTPスタック、時刻制御プログラムが保持されている。PTPスタックは、例えば、PTPに規定された処理を実行させるためのプログラムである。時刻制御プログラムは、Hot系及びStandby系間の時刻制御を行うためのプログラムである。メモリ102は、「第1の記憶部」、「第3の記憶部」、「第4の記憶部」の一例である。通信インタフェースのドライバは、「第1のインタフェースのドライバプログラム」の一例である。
プロセッサ101は、メモリ102にロードされたプログラムを実行することによって、様々な処理を実行する。プロセッサ101は、1つに限られず、複数備えられてもよい。プロセッサ101は、「プロセッサ」の一例である。
通信IF 103は、IPネットワーク201に接続するインタフェースである。通信IF 103は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。通信IF 103は、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等である。以下、通信IF 103は、外部ネットワーク用通信IF 103と表記する。外部ネットワーク用通信IF 103は、「第1のインタフェース」の一例である。
代表IFは論理インタフェースであり、物理インタフェースとしては外部ネットワーク用通信IF 103上で動作する。第1実施形態では、パッケージ10−1の外部ネットワーク用通信IF 103上で代表IFが動作するので、パッケージ10−1の外部ネットワーク用通信IF 103は起動又は有効化されている。一方、第1実施形態では、パッケージ10−2の外部ネットワーク用通信IF 103は起動又は有効化されていない。
通信IF 104は、ネットワーク装置1内のパッケージ10間の接続に用いられるインタフェースである。通信IF 104は、例えば、NICである。各パッケージ10の通信IF 104間は、例えば、イーサネット(登録商標)で接続される。
通信IF 104は、パッケージ10間のアプリケーションによる通信に用いられる。PTPはアプリケーション層であるので、PTPメッセージは、通信IF 104を通じて、他のパッケージ10に転送される。以下、通信IF 104は、アプリ用通信IF 104と表記する。アプリ用通信IF 104は、「第2のインタフェース」の一例である。
通信IF 106は、ネットワーク装置1内のパッケージ10間の接続に用いられるインタフェースである。通信IF 106は、例えば、シリアルポートである。各パッケージ10の通信IF 106間では、例えば、シリアル通信が行われる。
通信IF 106は、他のパッケージ10のスレーブクロック107のタイムスタンプを取得するために用いられる。以下、通信IF 106は、タイムスタンプ用通信IF 106と表記する。タイムスタンプ用通信IF 106は、「第3のインタフェース」の一例である。
このように、他のパッケージ10のスレーブクロック107のタイムスタンプを取得するための経路を、アプリケーションのデータの経路と切り離すことによって、アプリケーションのデータの通信によって発生する伝送遅延の変化の影響を受けないようにすることができる。すなわち、通信IF 106間の通信の伝送遅延は、変動量がごく少ない。伝送遅延の変化は、例えば、通信の揺らぎ、とも称される。
ブリッジ105は、プロセッサ101、メモリ102、外部ネットワーク用通信IF 103、及び、アプリ用通信IF 104と、タイムスタンプ用通信IF 106及びスレーブクロック107とを接続する。ブリッジ105は、例えば、プロセッサ101、メモリ102、外部ネットワーク用通信IF 103、及び、アプリ用通信IF 104が搭載されているモジュールと、タイムスタンプ用通信IF 106及びスレーブクロック107が搭載されているモジュールが異なる場合に、モジュール間を接続するために用いられる。例えば、プロセッサ101、メモリ102、外部ネットワーク用通信IF 103、アプリ用通信IF 104、タイムスタンプ用通信IF 106、及び、スレーブクロック107が同じモジュールに搭載されている場合には、ブリッジ105はパッケージ10に搭載されなくともよい。
スレーブクロック107は、例えば、FPGA(Field-Programmable Gate Array)の
ようなプロセッサ(図示せず)を備える。スレーブクロック107に備えられるプロセッサは、例えば、タイムスタンプ取得の命令を受けて、スレーブクロック107のタイムスタンプを取得し、他のハードウェア構成要素からもアクセス可能なレジスタ(図示せず)にタイムスタンプ値を記録する。命令元は、当該レジスタからタイムスタンプを読み出すことによって、スレーブクロック107のタイムスタンプを取得できる。スレーブクロック107は、「被同期クロック」の一例である。
また、他のパッケージ10のスレーブクロック107のタイムスタンプの取得は、例えば、以下の様にして行われる。タイムスタンプ用通信IF 106には、例えば、FPGA等のプロセッサが備えられている。タイムスタンプ用通信IF 106に備えられているプロセッサは、他のパッケージのタイムスタンプの取得の命令を受けて、タイムスタンプ用通信IF 106を通じて、他のパッケージ10のスレーブクロック107にタイムスタンプの命令を送信する。
他のパッケージ10のスレーブクロック107のプロセッサは、当該スレーブクロック107のタイムスタンプ値を、他のハードウェア構成要素からもアクセス可能なレジスタに書き込む。タイムスタンプ用通信IF 106のプロセッサは、タイムスタンプ用通信IF 106を通じて、他のパッケージ10の当該レジスタから他のパッケージ10のスレーブクロック107のタイムスタンプを読み出して取得する。
タイムスタンプ用通信IF 106のプロセッサは、取得した他のパッケージ10のスレーブクロック107のタイムスタンプを、例えば、タイムスタンプ用通信IF 106が搭載されるボード上の、他のハードウェア構成要素からもアクセス可能なレジスタ(図示せず)に格納する。命令元は、当該レジスタにアクセスし、格納されている他のパッケージ10のスレーブクロック107のタイムスタンプを取得する。
パッケージ10−1のスレーブクロック107は、図3のスレーブクロック110に相当する。パッケージ10−2のスレーブクロック107は、図3のスレーブクロック120に相当する。以下、スレーブクロックを区別しない場合にはスレーブクロック107と表記する。スレーブクロックを区別する場合には、スレーブクロック110、スレーブクロック120と表記する。
なお、図4に示されるパッケージ10のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、パッケージ10は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、SDカード、miniSDカード、microSDカード、USB(Universal Serial Bus)フラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、Blu−ray(登録商標) Disc、又はフラッシュメモリカードのような記録媒体である。
図5は、PTPスレーブの機能構成の一例を示す図である。以下、パッケージ10−1、パッケージ10−2は、PTPスレーブとして機能する装置であるので、機能的な説明を行う場合には、PTPスレーブ10−1、10−2、又は、単に、スレーブ10−1、10−2と称する。また、以下、スレーブ2台でHot/Standby構成を想定するので、自系、他系とは、それぞれ、自装置、他装置、と同義として用いる。
スレーブ10−1は、例えば、機能構成要素として、パケット送受信部11、記憶部12、PTPスタック13、装置時刻制御部14を備える。
パケット送受信部11は、例えば、外部ネットワーク用通信IF 103のドライバに相当する。パケット送受信部11は、受信部111、送信部112、タイムスタンプ制御部113、パケット転送部114を含む。
受信部111と送信部112とは、外部ネットワーク用通信IF 103を通じて、IPパケットの受信又は送信を行う。受信部111は、外部ネットワーク用通信IF 103において受信されたIPパケットの入力を受け、タイムスタンプ制御部113に出力する。送信部112は、タイムスタンプ制御部113からIPパケットの入力を受け、外部ネットワーク用通信IF 103に出力する。
タイムスタンプ制御部113は、タイムスタンプの取得に係る制御を行う。タイムスタンプ制御部113は、受信部111、パケット転送部114、PTPスタック13、その他アプリケーション(図示せず)から入力されたIPパケットを解析する。タイムスタンプ制御部113は、解析対象のIPパケットがタイムスタンプの取得に関係する種別のPTPメッセージであり、且つ、自系のPTPメッセージである場合は、自系のスレーブクロック110からタイムスタンプを取得する。PTPメッセージが自系のメッセージであるか他系のメッセージであるかは、例えば、メッセージ内のドメイン番号及びクロックIDの組合せ、又は、送信元又は宛先IPアドレスによって判別される(詳細は後述)。
タイムスタンプ制御部113は、解析対象のIPパケットがタイムスタンプの取得に関係する種別のPTPメッセージであり、且つ、他系のPTPメッセージである場合は、他系のスレーブクロック120からタイムスタンプを取得する。
タイムスタンプ制御部113は、タイムスタンプの取得契機となったPTPメッセージの識別情報とともに、当該メッセージの送信時刻又は受信時刻のタイムスタンプを後述のタイムスタンプ格納テーブル122に記録する。タイムスタンプ制御部113は、解析対象のIPパケットの解析が終了したら、当該IPパケットを送信部112、パケット転送部114、PTPスタック13、その他アプリケーションのいずれかに出力する。
例えば、解析対象のIPパケットが送信予定のIPパケットである場合には、タイムスタンプ制御部113は、当該IPパケットを送信部112に出力する。例えば、解析対象のIPパケットが、受信部111から入力された自系のPTPメッセージである場合には、タイムスタンプ制御部113は、当該IPパケットをPTPスタック13に出力する。例えば、解析対象のIPパケットが、受信部111から入力された他系のPTPメッセージである場合には、タイムスタンプ制御部113は、当該メッセージをパケット転送部114に出力する。例えば、解析対象のIPパケットが、受信部111から入力された自スレーブ宛てのPTP以外のアプリケーションのパケットである場合には、タイムスタンプ制御部113は、当該IPパケットを該当するアプリケーションに出力する。
パケット転送部114は、タイムスタンプ制御部113とアプリ用通信IF 104との間でIPパケットの転送を行う。パケット転送部114に入力されるIPパケットは、他系のPTPメッセージである。パケット転送部114は、タイムスタンプ制御部113から入力された他系のメッセージをアプリ用通信IF 104に出力する。パケット転送部114は、アプリ用通信IF 104から入力された他系のメッセージをタイムスタンプ制御部113に出力する。
なお、第1実施形態では、PTPメッセージの転送経路とタイムスタンプの取得経路とは分離されているので、PTPメッセージの転送に対して即時性は求められない。そのため、パケット転送部114に対応する機能は、通信IFのドライバに備えられることに限定されず、例えば、他のミドルウェアやアプリケーションプロセスに備えられてもよい。
PTPスタック13は、プロセッサ101によって実行されるPTPスタックのプロセスである。PTPスタック13は、PTPを終端する。より具体的には、PTPスタック13は、パケット送受信部11から自系のPTPメッセージの入力を受ける。パケット送受信部11から入力される自系のPTPメッセージは、第1実施形態では、マスタ2から受信したPTPメッセージである。PTPスタック13は、自系のPTPメッセージが入力されると、入力されたPTPメッセージに応じた処理を行う。
例えば、入力されたPTPメッセージのメッセージ種別がAnnounceである場合には、PTPスタック13は、マスタの選択、ドメインの登録等を行う。例えば、入力されたPTPメッセージのメッセージ種別がSync、Delay_Responseである場合には、PTPスタック13は、PTPメッセージの受信及び送信のタイムスタンプの収集、OFMの算出、スレーブクロック110の補正等を行う。
装置時刻制御部14は、例えば、プロセッサ101によって実行される時刻制御プログラムのプロセスである。装置時刻制御部14は、Hot系及びStandby系の時刻制御を行う。具体的には、装置時刻制御部14は、後述のスレーブアクセス先管理テーブル121の管理を行う。スレーブアクセス先管理テーブル121は、PTPメッセージが自系であるか他系であるかを判別するために用いられるテーブルである。
例えば、装置時刻制御部14は、周期的にPTPスタック13を監視し、マスタの変更に応じて、スレーブアクセス先管理テーブル121の登録、更新、削除等を行う。例えば、装置時刻制御部14は、タイムスタンプ格納テーブル122に保持されるタイムスタンプの収集要求の処理の中継を行う。
記憶部12は、メモリ102に相当する。記憶部12は、スレーブアクセス先管理テーブル121とタイムスタンプ格納テーブル122を保持する。スレーブアクセス先管理テーブル121は、受信又は送信されるPTPメッセージがタイムスタンプの取得を要求する種別のメッセージである場合に、参照先のスレーブクロックの情報を保持するテーブルである。タイムスタンプ格納テーブル122は、PTPメッセージの受信又は送信時に取得されたタイムスタンプの情報を保持するテーブルである。スレーブアクセス先管理テーブル121とタイムスタンプ格納テーブル122との詳細は、後述される。スレーブアクセス先管理テーブル121、221は、「第4の記憶部」の一例である。タイムスタンプ格納テーブル122は、「第1の記憶部」の一例である。
スレーブ10−2は、機能構成要素として、スレーブ10−1と同様に、パケット送受信部21、記憶部22、PTPスタック23、装置時刻制御部24を備える。また、パケット送受信部21は、スレーブ10−1のパケット送受信部11と同様に、受信部211、送信部212、タイムスタンプ制御部213、パケット転送部214を含む。記憶部22は、スレーブ10−1の記憶部12と同様に、スレーブアクセス先管理テーブル221とタイムスタンプ格納テーブル222とを保持する。
ただし、第1実施形態では、スレーブ10−2では代表IFが動作しないので、例えば、受信部211、送信部212、タイムスタンプ制御部213は動作しない。例えば、代表IFがスレーブ10−2で動作するように変更された場合には、受信部211、送信部212、タイムスタンプ制御部213は稼働し、一方でスレーブ10−1の受信部111、送信部112、タイムスタンプ制御部113は動作しなくなる。
スレーブ10−2のパケット転送部214は、アプリ用通信IF 104を通じて、スレーブ10−1からPTPメッセージを受信する。パケット転送部214は、受信したP
TPメッセージをPTPスタック23に出力する。
また、パケット転送部214には、PTPスタック23からPTPメッセージが入力される。パケット転送部214は、PTPスタック23から入力されたPTPメッセージを、アプリ用通信IF 104を通じて、スレーブ10−1に送信する。この場合、当該PTPメッセージは、スレーブ10−1のパケット転送部114によって受信され、タイムスタンプ制御部113を経由して、送信部112から、外部ネットワーク用通信IF 103(代表IF)を通じてネットワークに送信される。
図6は、スレーブアクセス先管理テーブルの一例である。スレーブアクセス先管理テーブルは、PTPメッセージに対応するスレーブクロック107の参照先を保持するテーブルである。スレーブアクセス先管理テーブルのエントリは、メッセージ識別情報とスレーブクロックアクセス先とを含む。
図6では、メッセージ識別情報として、ドメイン番号とクロックIDとの組み合わせが用いられる場合のスレーブアクセス先管理テーブルが示されている。ドメイン番号とクロックIDとは、PTPメッセージに含まれている。ただし、メッセージ識別情報として用いられる情報は、ドメイン番号とクロックIDとに限定されない。メッセージ識別情報は、各スレーブが同期するマスタクロックを特定可能な情報であればよいので、例えば、ユニキャスト方式でPTPマスタのIPアドレスがコンフィグ等により予め設定されている場合には、メッセージ識別情報として、PTPマスタのIPアドレスを用いることができる。
スレーブアクセス先管理テーブルのスレーブクロックアクセス先には、スレーブを特定可能な情報が含まれる。スレーブが2台である場合には、いずれか一方がHot系、もう一方がStandby系となるため、例えば図6に示されるように、スレーブを特定可能な情報として、自系又は他系を示す情報が用いられる。自系又は他系を示す情報には、例えば、フラグが用いられてもよい。
スレーブアクセス先管理テーブルは、初期状態では、空である。スレーブアクセス先管理テーブルのエントリは、PTPスタック13が起動し、PTPメッセージが受信されてマスタの情報を取得することによって、登録される。スレーブアクセス先管理テーブルは、PTPスタック13を監視する装置時刻制御部14によって管理される。メッセージ識別情報、ドメイン番号とクロックIDとの組み合わせは、それぞれ、「メッセージの識別情報」の一例である。スレーブアクセス先管理テーブルのエントリは、「メッセージの識別情報とタイムスタンプの参照先の被同期クロックとの対象付け」の一例である。
図6では、図3に示される時刻同期システム100におけるスレーブ10−1の、各スレーブのマスタの情報を取得済みの場合のスレーブアクセス先管理テーブルが示されている。
図7は、タイムスタンプ格納テーブルの一例である。タイムスタンプ格納テーブルは、代表IFにおけるPTPメッセージの送信時刻と受信時刻の、各スレーブ10のスレーブクロック107のタイムスタンプを格納するテーブルである。タイムスタンプ格納テーブルのエントリには、タイムスタンプの取得の契機となったメッセージの情報であるトリガメッセージ情報と、タイムスタンプの値とが含まれている。
トリガメッセージ情報には、タイムスタンプの取得の契機となったメッセージを特定可能な情報が含まれる。例えば図7では、トリガメッセージ情報として、ドメイン番号、クロックID、方向、シーケンス番号が用いられている。ドメイン番号、クロックID、シ
ーケンス番号は、タイムスタンプの取得の契機となったPTPメッセージから取得される。
トリガメッセージ情報の一つとして用いられる「方向」には、代表IFにおいて受信されたメッセージであるか、代表IFにおいて送信されたメッセージであるかを示す情報が用いられる。図7に示される例では、「方向」には、送信又は受信のいずれかが格納される。
タイムスタンプ格納テーブルは、初期状態で空である。タイムスタンプ格納テーブル122のエントリは、タイムスタンプの取得に関係する種別のPTPメッセージの代表IFにおける送信または受信が発生した場合に、例えば、タイムスタンプ制御部113によって登録される。また、タイムスタンプ格納テーブル122のエントリは、例えば、PTPのOFMの算出のために読み出された場合に、タイムスタンプ制御部113によって削除される。
図8は、PTPマスタサーバ管理テーブルの一例である。PTPマスタサーバ管理テーブルは、例えば、ユニキャスト方式の場合にスレーブによって用いられるテーブルである。PTPマスタサーバ管理テーブルは、例えば、スレーブ10−1の記憶部12に保持され、装置時刻制御部14によって管理される。なお、図5に示される機能構成図には、PTPマスタサーバ管理テーブルは示されていない。
PTPマスタサーバ管理テーブルは、PTPマスタのIPアドレスと、当該PTPマスタを選択するスレーブとの対応付けを保持するテーブルである。ユニキャスト方式の場合には、マスタのIPアドレスは、予めコンフィグに設定されている。
PTPマスタサーバ管理テーブルには、初期状態では、マスタのIPアドレスが格納されている。PTPマスタサーバ管理テーブルにおいて、マスタのIPアドレスには、並びの順番に番号が振られている。例えば、装置時刻制御部14は、各スレーブ10にHot系のスレーブから順にPTPマスタサーバ管理テーブルの未使用のマスタのIPアドレスを先頭から割り当てる。これによって、各スレーブ10へのマスタの割り当てが制御される。PTPマスタサーバ管理テーブルは、「第3の記憶部」の一例である。
<処理の流れ>
以下、スレーブ上で実施される処理の流れについて説明する。以下の処理の流れの説明では、スレーブを代表して、スレーブ10−1において実施される処理として説明する。ただし、以下の処理はスレーブ10−2においても実施される。なお、以下の各フローチャートの処理主体は、プロセッサ 101であるが、便宜上、機能構成要素を主体として説明する。
図9A及び図9Bは、タイムスタンプ制御部113のIPパケット受信時の処理のフローチャートの一例である。タイムスタンプ制御部113は、代表IFが動作しているスレーブ上で稼働するので、図9A及び図9Bに示される処理は、代表IFが動作しているスレーブによって行われる処理である。第1実施形態では、スレーブ10−1において代表IFが動作することが想定されているので、図9A及び図9Bの処理は、スレーブ10−1において実施される。ただし、代表IFがスレーブ10−2で動作する場合には、以下の処理と同様の処理がスレーブ10−2においても実施される。
図9Aに示される処理は、IPネットワーク201からスレーブ10−1(代表IF)にIPパケットが受信され、受信IPパケットが受信部111からタイムスタンプ制御部113に入力されると開始される。
OP1では、タイムスタンプ制御部113は、受信IPパケットがPTPパケットであるか否かを判定する。例えば、受信IPパケットがUDPパケットであって、UDPヘッダ内のポート番号が319又は320である場合に、タイムスタンプ制御部113は、受信IPパケットがPTPパケットであることを判定する。
受信IPパケットがPTPパケットである場合には(OP1:YES)、処理がOP2に進む。受信IPパケットがPTPパケットでない場合には(OP1:NO)、処理がOP7に進む。OP7では、タイムスタンプ制御部113は、受信IPパケットをHot系のアプリケーションに送る。スレーブ10−1がHot系として動作している場合には、タイムスタンプ制御部113は、IPパケットを自装置内の該当アプリケーションに送る。スレーブ10−1がStandby系として動作している場合には、タイムスタンプ制御部113は、受信IPパケットをパケット転送部114に出力し、パケット転送部114はスレーブ10−2に受信IPパケットを転送する。その後、図9Aに示される処理が終了する。
OP2では、タイムスタンプ制御部113は、受信PTPメッセージがタイムスタンプの取得を要求する種別のメッセージであるか否かを判定する。タイムスタンプの取得を要求する種別のPTPメッセージのUDPポート番号は319である。受信PTPメッセージがタイムスタンプの取得を要求する種別のメッセージである場合には(OP2:YES)、処理がOP3に進む。受信PTPメッセージがタイムスタンプの取得を要求する種別のメッセージでない場合には(OP2:NO)、処理が図9BのOP11に進む。
OP3からOP6の処理は、PTPメッセージの受信によるタイムスタンプ取得の処理である。OP3からOP6の処理は、スレーブアクセス先管理テーブル121の先頭のエントリから末尾のエントリまで、各エントリについて繰り返し実行される。
OP3では、タイムスタンプ制御部113は、スレーブアクセス先管理テーブル121の対象エントリと受信PTPメッセージとを比較し、ドメイン番号とクロックIDとが一致するか否かを判定する。スレーブアクセス先管理テーブル121の対象エントリと受信PTPメッセージとで、ドメイン番号とクロックIDとが一致しない場合には(OP3:不一致)、処理が次の対象エントリ、又は、対象エントリが末尾のエントリである場合には図9BのOP11に進む。
スレーブアクセス先管理テーブル121の対象エントリと受信PTPメッセージとで、ドメイン番号とクロックIDとが一致し、対象エントリのPTPスレーブアクセス先が「自系」である場合には(OP3:一致(自系))、処理がOP4に進む。OP4では、タイムスタンプ制御部113は、自系のスレーブクロック110からタイムスタンプを取得する。
スレーブアクセス先管理テーブル121の対象エントリと受信PTPメッセージとで、ドメイン番号とクロックIDとが一致し、対象エントリのPTPスレーブアクセス先が「他系」である場合には(OP3:一致(他系))、処理がOP5に進む。OP5では、タイムスタンプ制御部113は、タイムスタンプ用通信IF 106を通じて、他系のスレーブクロック120からタイムスタンプを取得する。
OP6では、タイムスタンプ制御部113は、OP4又はOP5において取得したタイムスタンプをタイムスタンプ格納テーブル122に登録する。スレーブアクセス先管理テーブル121の末尾のエントリまでOP3からOP6の処理が終了すると、処理が図9BのOP11に進む。
図9BのOP11では、タイムスタンプ制御部113は、受信PTPメッセージの宛先IPアドレスがユニキャストであるかマルチキャストであるかを判定する。PTPメッセージの宛先IPアドレスがマルチキャストIPアドレスである場合には(OP11:マルチキャスト)、処理がOP12に進む。PTPメッセージの宛先IPアドレスがユニキャストIPアドレスである場合には(OP11:ユニキャスト)、処理がOP18に進む。
OP12では、タイムスタンプ制御部113は、受信PTPメッセージの宛先であるマルチキャストIPアドレスに対応するマルチキャストグループに、自系及び/又は他系が参加済みであるか否かを判定する。なお、マルチキャストグループに参加又は離脱する場合には、例えば、IGMP(Internet Group Management Protocol)等のマルチキャストプログラムのメッセージが自系及び他系のスレーブそれぞれから代表IFを通じて送信される。例えば、タイムスタンプ制御部113は、マルチキャストグループへの参加又は離脱のメッセージが送信される際に、自系及び他系のスレーブが参加するマルチキャストグループの情報を、メモリ102に記録しておく。OP12の判定は、当該記録を参照して行われる。
受信PTPメッセージに対応するマルチキャストグループに自系又は他系のスレーブのいずれも参加していない場合には(OP12:どちらでもない)、処理がOP13に進む。OP13では、タイムスタンプ制御部113は、受信PTPメッセージを廃棄する。その後、図9Bに示される処理が終了する。
受信PTPメッセージに対応するマルチキャストグループに自系及び他系のスレーブ両方が参加している場合には(OP12:両系)、処理がOP14に進む。OP14では、タイムスタンプ制御部113は、受信PTPメッセージを複製する。OP15では、タイムスタンプ制御部113は、自系のPTPスタック13と、他系のPTPスタック23に、受信PTPメッセージを送る。他系のPTPスタック23へは、パケット転送部114、アプリ用通信IF 104を通じて受信PTPメッセージが送信される。その後、図9Bに示される処理が終了する。
受信PTPメッセージに対応するマルチキャストグループが自系のスレーブが参加しているマルチキャストグループである場合には(OP12:自系)、処理がOP16に進む。OP16では、タイムスタンプ制御部113は、自系のPTPスタック13に、受信PTPメッセージを送る。その後、図9Bに示される処理が終了する。
受信PTPメッセージに対応するマルチキャストグループが他系のスレーブが参加しているマルチキャストグループである場合には(OP12:他系)、処理がOP17に進む。OP17では、タイムスタンプ制御部113は、パケット転送部114、アプリ用通信IF 104を通じて、他系のPTPスタック23に、受信PTPメッセージを送る。その後、図9Bに示される処理が終了する。
OP18では、受信PTPメッセージの宛先IPアドレスがユニキャストIPアドレスであるので、タイムスタンプ制御部113は、受信PTPメッセージが自系又は他系のスレーブのいずれに宛てられたものであるかを判定する。より具体的には、OP18においてタイムスタンプ制御部113は、以下の様な処理を行う。
PTPマスタからPTPスレーブにユニキャストIPアドレスに宛てて送信されるメッセージの種別は、例えば、Delay_Responseや、Signaling、Managementである。したがって、タイムスタンプ制御部113は、受信PTPメッセージの種別に応じて、Delay_Responseである場合にはメッセージ内の「
requesting Port Identity」フィールド、Signaling、managementである場合にはメッセージ内の「target Port Identity」フィールドから、クロックIDを取得する。
タイムスタンプ制御部113は、受信PTPメッセージから取得したドメイン番号とクロックIDと、スレーブアクセス先管理テーブル121とを比較して、受信PTPメッセージが自系又は他系のスレーブのいずれに宛てられたものかを判定する。
なお、スレーブアクセス先管理テーブル121において、メッセージ識別情報として、マスタのIPアドレスが用いられている場合には、タイムスタンプ制御部113は、受信PTPメッセージの送信元IPアドレスであるマスタのIPアドレスに基づいて、OP18の判定を行う。
受信PTPメッセージが自系のスレーブ10−1に宛てられたメッセージである場合には(OP18:自系)、処理がOP16に進む。OP16では、タイムスタンプ制御部113は、自系のPTPスタック13に、受信PTPメッセージを送る。その後、図9Bに示される処理が終了する。
受信PTPメッセージが他系のスレーブ10−2に宛てられたメッセージである場合には(OP18:他系)、処理がOP17に進む。OP17では、タイムスタンプ制御部113は、パケット転送部114、アプリ用通信IF 104を通じて、他系のPTPスタック23に、受信PTPメッセージを送る。その後、図9Bに示される処理が終了する。
受信PTPメッセージの宛先が自系又は他系のスレーブのいずれでもない場合には(OP18:どちらでもない)、処理がOP19に進む。OP19では、タイムスタンプ制御部113は、受信PTPメッセージを廃棄する。その後、図9Bに示される処理が終了する。
図10は、タイムスタンプ制御部113のIPパケットの送信要求発生時の処理のフローチャートの一例である。図10に示される処理は、代表IFが動作しているスレーブによって行われる処理である。図10に示される処理は、スレーブ10−1又はスレーブ10−2においてIPパケットの送信要求が発生し、送信対象のIPパケットがタイムスタンプ制御部113に入力されると開始される。送信対象のIPパケットは、例えば、スレーブ10−1内のアプリケーション、PTPスタック13、スレーブ10−2のパケット転送部214から、タイムスタンプ制御部113へ入力される。
OP21からOP26の処理は、受信IPパケット又は受信PTPパケットが、送信対象IPパケット又は送信対象IPパケットに置き換わるだけで、その他は図9AのOP1からOP6と同様である。すなわち、タイムスタンプ制御部113は、送信対象IPパケットがPTPメッセージであるか否か判定し(OP21)、送信対象IPパケットがPTPメッセージである場合には(OP21:YES)、タイムスタンプの取得に関係するメッセージ種別であるか否かを判定する(OP22)。
送信対象PTPメッセージがタイムスタンプの取得に関係するメッセージ種別である場合には(OP22:YES)、タイムスタンプ制御部113は、スレーブアクセス先管理テーブル121から送信対象PTPメッセージの送信元を識別する(OP23)。タイムスタンプ制御部113は、自系又は他系のスレーブクロックからタイムスタンプを取得し(OP24、OP25)、取得したタイムスタンプをタイムスタンプ格納テーブル122に登録する。
OP27では、タイムスタンプ制御部113は、送信対象IPパケットを送信部112に出力する。送信対象IPパケットは、送信部112から代表IF(外部ネットワーク用通信IF 103)を通じてネットワークに送信される。その後、図10に示される処理が終了する。
なお、IPパケットの送信要求発生時の処理は、マルチキャスト方式であってもユニキャスト方式であっても、同じ処理となる。
図11は、PTPスタック13のPTPメッセージ受信時の処理のフローチャートの一例である。図11に示される処理は、代表IFが動作しているか否かに関わらず、いずれのスレーブでも実行される処理である。図11に示される処理は、例えば、スレーブ10−1においては、PTPスタック13にタイムスタンプ制御部113からPTPメッセージが入力された場合に開始される。図11に示される処理は、例えば、スレーブ10−2においては、PTPスタック23にパケット転送部214からPTPメッセージが入力された場合に開始される。
OP31では、PTPスタック13は、受信PTPメッセージを解析して、メッセージ種別を判定する。OP31におけるPTPメッセージの解析では、メッセージチェックの正常性、クロックID、シーケンス番号等もチェックされる。
受信PTPメッセージのメッセージ種別がAnnounceである場合には(OP31:Announce)、処理がOP32に進む。受信PTPメッセージのメッセージ種別がSync、Delay_Responseである場合には(OP31:Sync、Delay_Resp)、処理がOP35に進む。
OP32からOP34の処理は、受信PTPメッセージのメッセージ種別がAnnounceである場合の処理である。Announceメッセージは、PTPマスタの情報を報知するメッセージであって、PTPマスタのドメイン番号、クロックID等が含まれている。
OP32では、PTPスタック13は、PTPスタック13が存在を認識しているPTPマスタの情報を保持するマスタテーブル(図示せず)に、受信したAnnouceメッセージに含まれているPTPマスタのドメイン番号、クロックIDを新規又は更新登録する。マスタテーブルは、例えば、メモリ102に格納されている。
OP33では、PTPスタック13は、マスタテーブルに複数のマスタの情報が登録されている場合には、例えば、BMCA(Best Master Clock Algorism)によってマスタの選択を行う。BMCAは、Annouceメッセージに含まれているプライオリティが最も高いマスタを選択するアルゴリズムである。なお、選択候補のPTPマスタが1台の場合には、OP33の処理は省略される。
OP34では、PTPスタック13は、選択しているPTPマスタに対して測定メッセージの交換を開始する。測定メッセージの交換とは、例えば、選択中のPTPマスタからのSyncメッセージ受信に対して、当該PTPマスタに対してDelay_Requestメッセージを送信する処理である。その後、図11に示される処理が終了する。
OP35からOP39の処理は、受信PTPメッセージのメッセージ種別がSync、Delay_Responseである場合の処理である。OP35では、PTPスタック13は、タイムスタンプ読出し処理を行う。タイムスタンプ読出し処理は、第1実施形態では、代表IFが動作するスレーブ10−1のタイムスタンプ格納テーブル122から、
スレーブクロックの補正に用いられるタイムスタンプを読み出す処理である。タイムスタンプ読出し処理の詳細は後述される。
OP36では、PTPスタック13は、マスタ2からスレーブ10−1、スレーブ10−1からマスタ2それぞれの方向の伝搬遅延(t_ms、t_sm)を算出する。なお、PTPでは、各方向の伝搬遅延(t_ms、t_sm)を、一定の条件を満たす測定値に振るいにかけることにより、測定誤差を低減させるフィルタ機能を使うこともできる。その場合は、OP37により、PTPスタック13は、マスタ2からスレーブ10−1、スレーブ10−1からマスタ2それぞれの方向の伝搬遅延(t_ms、t_sm)をフィルタにかける。例えば、PTPスタック13は、算出された各方向の複数の伝搬遅延(t_ms、t_sm)のうち、例えば、閾値未満であり、且つ、伝搬遅延のより小さい値を選択する。
OP38では、PTPスタック13は、オフセット時間(OFM)を算出する(図1参照)。OP39では、PTPスタック13は、オフセット時間に基づいてスレーブクロックを補正する。例えば、オフセット時間が正の値である場合には、PTPスタック13はスレーブクロック110を加速させる。例えば、オフセット時間が負の値である場合には、PTPスタック13はスレーブクロック110を減速させる。その後、図11に示される処理が終了する。
図12は、タイムスタンプ読出し処理のフローチャートの一例である。図12に示される処理は、図11のOP35において実行される処理である。
OP41では、PTPスタック13は、代表IFが動作しているスレーブが自系であるか否かを判定する。OP41の判定は、例えば、PTPスタック13が代表IFやHot/Standby系を管理するプロセスに問い合わせることによって行われる。
代表IFが動作しているスレーブが自系である場合には(OP41:自系)、処理がOP42に進む。OP42では、PTPスタック13は、自系のタイムスタンプ格納テーブル122から、図11の処理の開始契機となった受信メッセージに該当するタイムスタンプを取得する。その後、図12に示される処理が終了し、処理が図11のOP36に進む。
代表IFが動作しているスレーブが自系でない場合には(OP41:他系)、処理がOP43に進む。代表IFが動作しているスレーブが他系である場合には、自系のタイムスタンプは、他系のスレーブ10−2のタイムスタンプ格納テーブル222に格納されている。
OP43では、PTPスタック13は、装置時刻制御部14へタイムスタンプ収集を依頼する。装置時刻制御部14は、PTPスタック13からの依頼を受けて、アプリ用通信IF 104を通じて、他系のスレーブ10−2から、自系のタイムスタンプを取得する。
OP44では、PTPスタック13は、装置時刻制御部14から他系のスレーブ10−2のタイムスタンプ格納テーブル222に格納されていた自系のタイムスタンプを取得する。その後、図12に示される処理が終了し、処理が図11のOP36に進む。
図13は、装置時刻制御部14の、タイムスタンプ収集依頼を受けた場合の処理のフローチャートの一例である。図13に示される処理は、例えば、装置時刻制御部14にタイムスタンプ収集の依頼が入力された場合に開始される(図12、OP42参照)。
OP51では、装置時刻制御部14は、タイムスタンプ収集の依頼元が自系のPTPスタック13であるか、他系のスレーブ10−2の装置時刻制御部24であるかを判定する。タイムスタンプ収集の依頼元が自系のPTPスタック13である場合には(OP51:PTPスタック)、処理がOP52に進む。タイムスタンプ収集の依頼元が他系のスレーブ10−2の装置時刻制御部24である場合には(OP51:他系の装置時刻制御部)、処理がOP55に進む。
OP52からOP54の処理は、自系のPTPスタック13からタイムスタンプ収集の依頼を受けた場合の処理である。OP52では、装置時刻制御部14は、他系のスレーブ10−2の装置時刻制御部24へ、アプリ用通信IF 104を通じて、タイムスタンプ収集の依頼を送信する。OP53では、装置時刻制御部14は、アプリ用通信IF 104を通じて、他系のスレーブ10−2の装置時刻制御部24から当該他系のスレーブ10−2のタイムスタンプ格納テーブル222に格納されていた自系のタイムスタンプを受信する。OP54では、装置時刻制御部14は、取得したタイムスタンプを自系のPTPスタック13に通知する。その後、図13に示される処理が終了する。
OP55とOP56との処理は、他系のスレーブ10−2の装置時刻制御部24からタイムスタンプ収集の依頼を受けた場合の処理である。OP55では、装置時刻制御部14は、タイムスタンプ格納テーブル122から、他系のタイムスタンプを読み出す。OP56では、装置時刻制御部14は、アプリ用通信IF 104を通じて、他系のスレーブ10−2の装置時刻制御部24へ、タイムスタンプ格納テーブル122に格納されていた他系のタイムスタンプを送信する。その後、図13に示される処理が終了する。
図14は、装置時刻制御部14のPTPスタック監視処理のフローチャートの一例である。図14に示される処理は、例えば、所定の周期で繰り返し実行される。PTPスタック監視処理の実行周期は、例えば、秒オーダで設定されている。図14に示されるPTPスタック監視処理は、いずれのスレーブにおいても実行される。
OP61では、装置時刻制御部14は、PTPスタック13のデータセットを読み取る。PTPスタック13のデータセットは、例えば、PTPスタック13が管理する、選択中のマスタに関する情報である。データセットとしての選択中のマスタに関する情報には、例えば、選択中のマスタの、ドメイン番号、クロックID、IPアドレス等が含まれている。例えば、データセットは、PTPスタック13が存在を認識しているマスタの情報を格納するマスタテーブル内の、PTPスタック13が選択中のマスタの情報である。
OP62では、装置時刻制御部14は、PTPスタック13の選択中のマスタに変更があるか否かを判定する。PTPスタック13の選択中のマスタに変更がある場合には(OP62:YES)、処理がOP63に進む。PTPスタック13の選択中のマスタに変更がない場合には(OP62:NO)、処理が図14に示される処理が終了する。
OP63では、装置時刻制御部14は、PTPスタック13の選択中のマスタの変更の種類を判定する。OP63の処理は、例えば、前回のPTPスタック監視処理の実行時に取得されたPTPスタック13のデータセットの値と比較することによって行われる。選択中のマスタの変更の種類は、例えば、新規登録、変更、削除がある。
新規登録は、例えば、PTPスタック13のデータセットの値がデフォルト値からデフォルト値以外へ変更されていることによって判定される。データセットのデフォルト値は、例えば、Nullである。変更は、例えば、PTPスタック13のデータセットがデフォルト値以外からデフォルト値以外へと変更されていることによって判定される。削除は
、例えば、PTPスタック13のデータセットが、デフォルト値以外からデフォルト値へと変更されていることによって判定される。
PTPスタック13の選択中のマスタの変更の種類が「新規登録」である場合には(OP63:新規)、処理がOP64に進む。OP64では、装置時刻制御部14は、自系及び他系のスレーブアクセス先管理テーブルに、PTPスタック13のデータセットに含まれる自系のマスタの情報を登録する。また、自系又は他系のスレーブアクセス先管理テーブルにスレーブクロックIDが登録されていない場合には、装置時刻制御部14は、該当するスレーブアクセス先管理テーブルにスレーブクロックIDを登録する。その後、図14に示される処理が終了する。
PTPスタック13の選択中のマスタの変更の種類が「変更」である場合には(OP63:変更)、処理がOP65に進む。OP65では、装置時刻制御部14は、自系及び他系のスレーブアクセス先管理テーブルに、PTPスタック13のデータセットに含まれる自系のマスタの情報を上書き登録する。ただし、装置時刻制御部14は、スレーブアクセス先管理テーブル内のスレーブクロックIDの値は操作しない。その後、図14に示される処理が終了する。
PTPスタック13の選択中のマスタの変更の種類が「削除」である場合には(OP63:削除)、処理がOP66に進む。OP66では、装置時刻制御部14は、自系及び他系のスレーブアクセス先管理テーブルから、自系のマスタの情報を削除する。ただし、装置時刻制御部14は、スレーブアクセス先管理テーブル内のスレーブクロックIDの値は削除しない。その後、図14に示される処理が終了する。
なお、OP64〜OP66において、他系のスレーブアクセス先管理テーブルの設定は、例えば、装置時刻制御部14が、他系のスレーブ10−2の装置時刻制御部24に新規登録、変更、または削除の指示を、アプリ用通信IF 104を通じて送信することで行われる。他系のスレーブ10−2の装置時刻制御部24は、装置時刻制御部14からの指示に従って、スレーブアクセス先管理テーブル221への操作を行う。
図15は、ユニキャスト方式の場合の装置時刻制御部14の処理のフローチャートの一例である。図15に示される処理は、装置時刻制御部14にPTP起動指示が入力された場合に開始される。PTP起動指示は、例えば、スレーブ10−1に直接、又は、ネットワークを介して、スレーブ10−1の管理者から、又は、他系のスレーブの装置時刻制御部から入力される。
OP71では、装置時刻制御部14は、Hot系のスレーブのマスタとして、PTPマスタサーバ管理テーブル(図8)の未使用であるマスタのうち最小番号のマスタを選択する。
OP72では、装置時刻制御部14は、Hot系のスレーブが自系であるか否かを判定する。Hot系のスレーブが自系である場合には(OP72:YES)、処理がOP73に進む。OP73では、装置時刻制御部14は、自系のPTPスタック13にOP71で選択したマスタのIPアドレスを設定する。その後、PTPスタック13によって、PTPメッセージの送信が開始される。
Hot系のスレーブが他系である場合には(OP72:NO)、処理がOP74に進む。OP74では、装置時刻制御部14は、他系のスレーブ10−2の装置時刻制御部24に、OP71において選択したマスタのIPアドレスとPTP開始指示とを、アプリ用通信IF 104を通じて通知する。その後、スレーブ10−2の装置時刻制御部24によ
って、PTPスタック23にマスタのIPアドレスが設定され、PTPメッセージの送信が開始される。
OP75では、装置時刻制御部14は、Standby系のスレーブのマスタとして、PTPマスタサーバ管理テーブル(図8)の未使用であるマスタのうち最小番号のマスタを選択する。
OP76では、装置時刻制御部14は、Standby系のスレーブが自系であるか否かを判定する。Standby系のスレーブが自系である場合には(OP76:YES)、処理がOP77に進む。OP77では、OP73と同様に、装置時刻制御部14は、自系のPTPスタック13に、OP75で選択したマスタのIPアドレスを設定する。
Standby系のスレーブが他系である場合には(OP76:NO)、処理がOP78に進む。OP78では、OP74と同様に、装置時刻制御部14は、他系のスレーブ10−2の装置時刻制御部24に、OP75において選択したマスタのIPアドレスとPTP開始指示とを、アプリ用通信IF 104を通じて通知する。
OP79では、装置時刻制御部14は、マスタが未決定のStandby系のスレーブが存在するか否かを判定する。マスタが未決定のStandby系のスレーブが存在する場合には(OP79:YES)、処理がOP75に進む。マスタが未決定のStandby系のスレーブが存在しない場合には(OP79:NO)、図15に示される処理が終了する。
<具体例>
以下、具体例として、図3に示される時刻同期システム100における処理のシーケンスについて説明する。
図16A及び図16Bは、マルチキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。図17は、図16A及び図16Bに示される具体例における、代表IFが動作するスレーブ10−1におけるスレーブアクセス先管理テーブル121の変遷の一例を示す図である。図18は、図16A及び図16Bに示される具体例における、代表IFが動作していないスレーブ10−2におけるスレーブアクセス先管理テーブル221の変遷の一例を示す図である。
S1、S2では、それぞれ、スレーブ10−1のPTPスタック13、スレーブ10−2のPTPスタック23が起動し、PTPマルチキャストグループへの参加を開始する。以降、スレーブ10−1及びスレーブ10−2が、マスタ2又はマスタ3からのPTPメッセージを受信可能になる。なお、具体例では、マスタ2とマスタ3とは異なるマルチキャストグループに参加していることを想定する。スレーブ10−1のPTPスタック13は、マスタ2と同じマルチキャストグループに参加する。また、スレーブ10−2のPTPスタック23は、マスタ3と同じマルチキャストグループに参加する。
S1の時点のスレーブ10−1のスレーブアクセス先管理テーブル121は、図17の(A1)のテーブルに示されている。S2の時点のスレーブ10−2のスレーブアクセス先管理テーブル221は、図18の(B1)に示されている。S1及びS2の時点では、スレーブ10−1及びスレーブ10−2のいずれのスレーブアクセス先管理テーブルも、初期状態であり、いずれのクロックの情報も格納されていない。
S3では、メッセージ送信周期にしたがって、マスタ2からAnnounceメッセージが送信される。マスタ2からのメッセージは、代表IFが動作するスレーブ10−1に
よって受信される。
S4では、パケット送受信部11(タイムスタンプ制御部113)は、Announceメッセージを受信する(図9A、OP2:NO)。受信したAnnounceメッセージは、自系のPTPスタック13が参加しているマルチキャストグループのメッセージであるので(図9B、OP12:自系)、パケット送受信部11(タイムスタンプ制御部113)は、自系のPTPスタック13にAnnounceメッセージを出力する(図9B、OP16)。
S5では、PTPスタック13は、Announceメッセージが入力されたので(図11、OP31:Announce)、AnnounceメッセージからマスタクロックAのドメイン番号及びクロックID等を取得し、マスタテーブルに新規に登録する(図11、OP32)。以降、PTPスタック13は、マスタ2に対してDelay_Requestメッセージ等の送信を開始する(図11、OP34)。
S6では、PTPスタック13に対する周期監視により、スレーブ10−1の装置時刻制御部14がPTPスタック13のデータセットの読み取りを行う(図14、OP61)。S7では、PTPスタック13の選択中のマスタ2がデータセットに新規に登録されたので(図14、OP62:YES、OP63:新規)、装置時刻制御部14は、自系のスレーブアクセス先管理テーブル121に、マスタクロックAのドメイン番号及びクロックIDと、自系のスレーブクロック110のドメイン番号及びクロックIDとを登録する(図14、OP64)。なお、具体例において、自系のスレーブクロック110のドメイン番号は、マスタクロックAのドメイン番号と同じ値となる。
S7の時点のスレーブ10−1のスレーブアクセス先管理テーブル121は、図17の(A2)で示されるテーブルである。図17の(A2)のスレーブアクセス先管理テーブル121には、マスタクロックAのドメイン番号とクロックIDとの組み合わせに対して、スレーブクロックのアクセス先が「自系」と登録されている。また、スレーブクロック110のドメイン番号(マスタクロックAのドメイン番号と同じ)とクロックIDとの組み合わせに対して、スレーブクロックのアクセス先が「自系」と登録されている。
S8では、装置時刻制御部14は、他系の装置時刻制御部24に、他系のスレーブアクセス先管理テーブル221への、マスタクロックAのドメイン番号及びクロックIDと、自系のスレーブクロック110のドメイン番号及びクロックIDとの登録を指示する(図14、OP64)。S9では、スレーブ10−2の装置時刻制御部24は、自系のスレーブアクセス先管理テーブル221に、マスタクロックAのドメイン番号及びクロックIDと、他系のスレーブクロック110のドメイン番号及びクロックIDとを登録する。
S9の時点のスレーブ10−2のスレーブアクセス先管理テーブル221は、図18の(B2)で示されるテーブルである。図18の(B2)のスレーブアクセス先管理テーブル221には、マスタクロックAのドメイン番号とクロックIDとの組み合わせに対して、スレーブクロックのアクセス先が「他系」と登録されている。また、スレーブクロック110のドメイン番号(マスタクロックAのドメイン番号と同じ)とクロックIDとの組み合わせに対して、スレーブクロックのアクセス先が「他系」と登録されている。
図16BのS10では、メッセージ送信周期にしたがって、マスタ3からAnnounceメッセージが送信される。マスタ3からのメッセージも、代表IFが動作するスレーブ10−1によって受信される。
S11では、パケット送受信部11(タイムスタンプ制御部113)は、Announ
ceメッセージを受信する(図9A、OP2:NO)。受信したAnnounceメッセージは、他系のPTPスタック23が参加しているマルチキャストグループのメッセージであるので(図9B、OP12:他系)、パケット送受信部11(タイムスタンプ制御部113)は、他系のPTPスタック23にAnnounceメッセージを出力する(図9B、OP17)。なお、スレーブ10−1のパケット送受信部11からスレーブ10−2のPTPスタック23へは、パケット送受信部11(パケット転送部114)から、アプリ用通信IF 104を通じてスレーブ10−2に送信され、パケット送受信部21(パケット転送部214)を経由し、PTPスタック23へと転送される。
S12では、PTPスタック23は、マスタ3からのAnnounceメッセージが入力されたので(図11、OP31:Announce)、AnnounceメッセージからマスタクロックBのドメイン番号及びクロックID等を取得し、マスタテーブルに新規に登録する(図11、OP32)。以降、PTPスタック23は、マスタ3に対してDelay_Requestメッセージ等の送信を開始する(図11、OP34)。
S13では、PTPスタック23に対する周期監視により、スレーブ10−2の装置時刻制御部24がPTPスタック23のデータセットの読み取りを行う(図14、OP61)。S14では、PTPスタック23の選択中のマスタ3がデータセットに新規に登録されたので(図14、OP62:YES、OP63:新規)、装置時刻制御部24は、自系のスレーブアクセス先管理テーブル221に、マスタクロックBのドメイン番号及びクロックIDと、自系のスレーブクロック120のドメイン番号及びクロックIDとを登録する(図14、OP64)。なお、自系(スレーブ10−2)のスレーブクロック120のドメイン番号は、具体例において、マスタクロックBのドメイン番号と同じ値となる。
S14の時点のスレーブ10−2のスレーブアクセス先管理テーブル221は、図18の(B3)で示されるテーブルである。図18の(B3)のスレーブアクセス先管理テーブル221には、マスタクロックBのドメイン番号とクロックIDとの組み合わせに対して、スレーブクロックのアクセス先が「自系」であるエントリが追加されている。また、スレーブクロック120のドメイン番号(マスタクロックBのドメイン番号と同じ)とクロックIDとの組み合わせに対して、スレーブクロックのアクセス先が「自系」であるエントリが追加されている。
S15では、装置時刻制御部24は、他系のスレーブ10−1の装置時刻制御部14に、他系のスレーブアクセス先管理テーブル121への、マスタクロックBのドメイン番号及びクロックIDと、自系のスレーブクロック120のドメイン番号及びクロックIDとの登録を指示する(図14、OP64)。S16では、スレーブ10−1の装置時刻制御部14は、自系のスレーブアクセス先管理テーブル121に、マスタクロックBのドメイン番号及びクロックIDと、他系のスレーブクロック120のドメイン番号及びクロックIDとを登録する。
S16の時点のスレーブ10−1のスレーブアクセス先管理テーブル121は、図17の(A3)で示されるテーブルである。図17の(A3)のスレーブアクセス先管理テーブル121には、マスタクロックBのドメイン番号とクロックIDとの組み合わせに対して、スレーブクロックのアクセス先が「他系」であるエントリが追加されている。また、スレーブクロック120のドメイン番号(マスタクロックBのドメイン番号と同じ)とクロックIDとの組み合わせに対して、スレーブクロックのアクセス先が「他系」であるエントリが追加されている。
図19A、図19B、及び、図19Cは、ユニキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。まず、スレーブ10
−1のスレーブアクセス先管理テーブル121の初期状態は、図17の(A1)のテーブルに示される通りである。スレーブ10−2のスレーブアクセス先管理テーブル221の初期状態は、図18の(B1)のテーブルに示される通りである。
S21では、代表IFが動作するスレーブ10−1の装置時刻制御部14が、PTPマスタサーバ管理テーブル(図8参照)の先頭の未使用であるマスタ2を選択する(図15、OP71)。S22では、装置時刻制御部14は、PTPスタック13に選択したマスタ2のIPアドレスを設定する(図15、OP72:YES、OP73)。
S23では、PTPスタック13は、PTPメッセージのサービスの開始を要求するSignaling−unicast Requestメッセージをマスタ2に送信する。Signaling−unicast Requestメッセージは、パケット送受信部11、外部ネットワーク用通信IF 103を経由して、IPネットワーク201に出力される(図10、OP22:NO、OP27)。
S24では、マスタ2は、スレーブ10−1からSignaling−unicast
Requestメッセージを受信し、応答として、スレーブ10−1にSignaling−unicast Grantメッセージを送信する。マスタ2は、Signaling−unicast Grantメッセージで供給の受諾をしたAnnounceメッセージの送信を開始し、スレーブ10−1に対して、所定の周期でAnnounceメッセージを送信する。
S25では、スレーブ10−1のパケット送受信部11はSignaling−unicast Grantメッセージを受信する(図9A、OP2:NO)。受信したメッセージは、スレーブ10−1のユニキャストIPアドレス宛であるので(図9B、OP11:ユニキャスト、OP18:自系)、パケット送受信部11(タイムスタンプ制御部113)は、自系のPTPスタック13にSignaling−unicast Grantメッセージを出力する(図9B、OP16)。
S26では、PTPスタック13は、Signaling−unicast Grantメッセージまたはマスタ2が供給を開始したAnnounceメッセージにより(図11、OP31:Announce)、当該メッセージからマスタクロックAのドメイン番号及びクロックID等を取得し、マスタテーブルに新規に登録する(図11、OP32)。以降、PTPスタック13は、マスタ2に対してDelay_Requestメッセージ等の送信を開始する(図11、OP34)。
S27では、PTPスタック13に対する周期監視により、スレーブ10−1の装置時刻制御部14がPTPスタック13のデータセットの読み取りを行う(図14、OP61)。S28では、PTPスタック13の選択中のマスタ2がデータセットに新規に登録されたので(図14、OP62:YES、OP63:新規)、装置時刻制御部14は、自系のスレーブアクセス先管理テーブル121に、マスタクロックAのドメイン番号及びクロックIDと、自系のスレーブクロック110のドメイン番号及びクロックIDとを登録する(図14、OP64)。S28の時点のスレーブ10−1のスレーブアクセス先管理テーブル121は、図17の(A2)で示されるテーブルである。
図19BのS29では、装置時刻制御部14は、他系の装置時刻制御部24に、他系のスレーブアクセス先管理テーブル221への、マスタクロックAのドメイン番号及びクロックIDと、自系のスレーブクロック110のドメイン番号及びクロックIDとの登録を指示する(図14、OP64)。S30では、スレーブ10−2の装置時刻制御部24は、自系のスレーブアクセス先管理テーブル221に、マスタクロックAのドメイン番号及
びクロックIDと、他系のスレーブクロック110のドメイン番号及びクロックIDとを登録する。S30の時点のスレーブ10−2のスレーブアクセス先管理テーブル221は、図18の(B2)で示されるテーブルである。
S31では、スレーブ10−1の装置時刻制御部14は、PTPマスタサーバ管理テーブル(図8参照)内で最小番号の未使用であるマスタ3を選択する(図15、OP75)。S32では、装置時刻制御部14は、マスタ3のIPアドレスとPTP起動指示とを、アプリ用通信IF 104を通じて、他系のスレーブ10−2の装置時刻制御部24に送信する(図15、OP76:NO、OP78)。
S33では、スレーブ10−2の装置時刻制御部24は、スレーブ10−1からのマスタ3のIPアドレスとPTP起動指示とを受信し、PTPスタック23にマスタ3のIPアドレスを設定する。
S34では、PTPスタック23は、PTPメッセージのサービスの開始を要求するSignaling−unicast Requestメッセージを、マスタ3に送信する(図10、OP22:NO、OP27)。Signaling−unicast Requestメッセージは、パケット送受信部21、アプリ用通信IF 104、パケット送受信部11、外部ネットワーク用通信IF 103を経由して、送信される。
S35では、マスタ3は、スレーブ10−2からSignaling−unicast
Requestメッセージを受信し、応答として、スレーブ10−2にSignaling−unicast Grantメッセージを送信する。以降、マスタ3は、スレーブ10−2に対して、所定の周期でAnnounceメッセージを送信する。Signaling−unicast Grantメッセージは、スレーブ10−1の外部ネットワーク用通信IF 103、パケット送受信部11、アプリ用通信IF 104、パケット送受信部21、を経由して、スレーブ10−2のPTPスタック23に到着する。
S36では、PTPスタック23は、Signaling−unicast Grantメッセージまたはマスタ2が供給を開始したAnnounceメッセージにより(図11、OP31:Announce)、当該メッセージからマスタクロックBのドメイン番号及びクロックID等を取得し、マスタテーブルに新規に登録する(図11、OP32)。以降、PTPスタック23は、マスタ3に対してDelay_Requestメッセージ等の送信を開始する(図11、OP34)。
図19CのS37では、PTPスタック23に対する周期監視により、スレーブ10−2の装置時刻制御部24がPTPスタック23のデータセットの読み取りを行う(図14、OP61)。S38では、PTPスタック23の選択中のマスタ3がデータセットに新規に登録されたので(図14、OP62:YES、OP63:新規)、装置時刻制御部24は、自系のスレーブアクセス先管理テーブル221に、マスタクロックBのドメイン番号及びクロックIDと、自系のスレーブクロック120のドメイン番号及びクロックIDとを登録する(図14、OP64)。S38の時点のスレーブ10−2のスレーブアクセス先管理テーブル221は、図18の(B3)で示されるテーブルである。
S39では、装置時刻制御部24は、他系のスレーブ10−1の装置時刻制御部14に、他系のスレーブアクセス先管理テーブル121への、マスタクロックBのドメイン番号及びクロックIDと、自系のスレーブクロック120のドメイン番号及びクロックIDとの登録を指示する(図14、OP64)。S40では、スレーブ10−1の装置時刻制御部14は、自系のスレーブアクセス先管理テーブル121に、マスタクロックBのドメイン番号及びクロックIDと、他系のスレーブクロック120のドメイン番号及びクロック
IDとを登録する。S40の時点のスレーブ10−1のスレーブアクセス先管理テーブル121は、図17の(A3)で示されるテーブルである。
図16A及び図16B、図19A〜図19Cで示されるように、PTPメッセージにマルチキャストIPアドレスが用いられる場合でも、ユニキャストIPアドレスが用いられる場合でも、構築されるスレーブアクセス先管理テーブルは同じものとなる。
図20は、PTPメッセージの受信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。図20では、スレーブ10−1及びスレーブ10−2において、スレーブアクセス先管理テーブルの構築が完了していることを想定する。PTPメッセージの受信及び送信を契機とするタイムスタンプ取得の処理のシーケンスは、マルチキャスト方式の場合でも、ユニキャスト方式の場合でも、同様である。以下の説明では、マルチキャスト方式又はユニキャスト方式のどちらが用いられるかについては限定されない。
S51では、マスタ2からSyncメッセージが送信されたとする。マスタ2から送信されたSyncメッセージは、代表IFが動作しているスレーブ10−1によって受信される。S51においてマスタ2から送信されるSyncメッセージには、マスタクロックAのドメイン番号とクロックIDとが含まれている。
S52では、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、マスタ2からのSyncメッセージを受信する(図9A、OP1:YES)。Syncメッセージはタイムスタンプの取得に関係する種別のメッセージである(図9A、OP2:YES)。したがって、パケット送受信部11(タイムスタンプ制御部113)は、スレーブアクセス先管理テーブル121から、受信メッセージ内のマスタクロックAのドメイン番号とクロックIDとに対応するアクセス先である自系のスレーブクロック110を取得する(図9A、OP3:一致(自系))。
S53では、パケット送受信部11(タイムスタンプ制御部113)は、自系のスレーブクロック110からタイムスタンプを取得する(図9A、OP4)。S54では、パケット送受信部11(タイムスタンプ制御部113)は、取得したタイムスタンプをタイムスタンプ格納テーブル122に記録する(図9A、OP6)。
S55では、パケット送受信部11(タイムスタンプ制御部113)は、受信したSyncメッセージを自系のPTPスタック13に転送する(図9B、OP16)。
S56では、PTPスタック13は、代表IFがスレーブ10−1で動作しているので(図12、OP41:自系)、自系のタイムスタンプ格納テーブル122から、受信したSyncメッセージに該当するタイムスタンプを読み出す(図12、OP42)。S57では、PTPスタック13は、伝搬遅延やOFMを算出し、スレーブクロック110の補正を行う(図11、OP36〜OP39)。
次に、S58では、マスタ3からSyncメッセージが送信されたとする。マスタ3から送信されたSyncメッセージは、代表IFが動作しているスレーブ10−1によって受信される。S58においてマスタ3から送信されるSyncメッセージには、マスタクロックBのドメイン番号とクロックIDとが含まれている。
S59では、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、マスタ3からのSyncメッセージを受信する(図9A、OP1:YES)。Syncメッセージはタイムスタンプの取得に関係する種別のメッセージであるので(図9A、OP2:YES)、パケット送受信部11(タイムスタンプ制御部113)は、スレー
ブアクセス先管理テーブル121から、受信メッセージ内のマスタクロックBのドメイン番号とクロックIDとに対応するアクセス先である他系のスレーブ10−2のスレーブクロック120を取得する(図9A、OP3:一致(他系))。
S60では、パケット送受信部11(タイムスタンプ制御部113)は、タイムスタンプ用通信IF 106を通じて、他系のスレーブ10−2のスレーブクロック120からタイムスタンプを取得する。
S61では、パケット送受信部11(タイムスタンプ制御部113)は、取得した他系のスレーブクロック120のタイムスタンプを自系のタイムスタンプ格納テーブル122に記録する(図9A、OP6)。
S62では、パケット送受信部11(タイムスタンプ制御部113)は、マスタ3から受信したSyncメッセージを他系のPTPスタック23に転送する(図9B、OP17)。Syncメッセージは、スレーブ10−2のパケット送受信部21(パケット転送部214)に受信され、パケット送受信部21(パケット転送部214)からPTPスタック23に転送される。
S63では、スレーブ10−2のPTPスタック23は、スレーブ10−1からSyncメッセージを受信する(図11、OP31:Sync)。PTPスタック23は、代表IFがスレーブ10−1で動作しているので(図12、OP41:他系)、装置時刻制御部24にタイムスタンプ収集を依頼する(図12、OP43)。
S64では、装置時刻制御部24は、PTPスタック23からタイムスタンプ収集の依頼を受けて、スレーブ10−2の装置時刻制御部24へ、アプリ用通信IF 104を通じて、タイムスタンプ収集の依頼を送信する(図13、OP51:PTPスタック、OP52)。
S65では、スレーブ10−1の装置時刻制御部14は、スレーブ10−2の装置時刻制御部24からタイムスタンプ収集の依頼を受けて、タイムスタンプ格納テーブル122から他系のタイムスタンプを読み出す(図13、OP51:他系の装置時刻制御部、OP55)。
S66では、装置時刻制御部14は、読み出したスレーブ10−2のスレーブクロック120のタイムスタンプを、スレーブ10−2の装置時刻制御部24に、アプリ用通信IF 104を通じて、送信する(図13、OP56)。
S67では、スレーブ10−2の装置時刻制御部24は、スレーブ10−1の装置時刻制御部14から受信した、自系のスレーブクロック120のタイムスタンプを受信し、PTPスタック23に通知する(図13、OP53、OP54)。
S68では、PTPスタック23は、伝搬遅延やOFMを算出し、スレーブクロック120の補正を行う(図11、OP36〜OP39)。
図21は、PTPメッセージの送信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。図21の処理シーケンスは、例えば、図20の処理シーケンスの後に発生する処理である。
S71では、スレーブ10−1のPTPスタック13において、Delay_Requestメッセージの送信要求が発生したとする。S71において生成されるDelay_
Requestメッセージには、スレーブクロック110のドメイン番号とクロックIDとが含まれている。
S72では、送信対象のDelay_Requestメッセージはタイムスタンプの取得に関係する種別のメッセージであるので(図10、OP22:YES)、パケット送受信部11(タイムスタンプ制御部113)は、スレーブアクセス先管理テーブル121から、受信メッセージ内のスレーブクロック110のドメイン番号とクロックIDとに対応するアクセス先である自系のスレーブクロック110を取得する(図10、OP23:一致(自系))。
S73では、パケット送受信部11(タイムスタンプ制御部113)は、スレーブクロック110からタイムスタンプを取得する(図10、OP24)。S74では、パケット送受信部11(タイムスタンプ制御部113)は、取得したタイムスタンプをタイムスタンプ格納テーブル122に記録する(図10、OP26)。
S75では、パケット送受信部11(タイムスタンプ制御部113)は、送信対象のDelay_Requestメッセージを、代表IFが動作する外部ネットワーク用通信IF 103を通じて、マスタ2に送信する(図10、OP27)。
S76では、マスタ2からDelay_Responseメッセージが送信される。マスタ2から送信されたメッセージは、代表IFが動作しているスレーブ10−1によって受信される。
S77では、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、マスタ2からのDelay_Responseメッセージを受信する(図9A、OP1:YES)。Delay_Responseメッセージはタイムスタンプの取得に関係する種別のメッセージでないので(図9A、OP2:NO)、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、自系のPTPスタック13にメッセージを転送する(図9B、OP16)。
S78では、PTPスタック13は、Delay_Responseメッセージを受信する(図11、OP31:Delay_Resp)。PTPスタック13は、代表IFがスレーブ10−1で動作しているので(図12、OP41:自系)、タイムスタンプ格納テーブル122から、S75において送信したDelay_Requestメッセージに該当するタイムスタンプを読み出す(図12、OP42)。S79では、PTPスタック13は、伝搬遅延やOFMを算出し、スレーブクロック110の補正を行う(図11、OP36〜OP39)。
次に、S80では、スレーブ10−2のPTPスタック23において、Delay_Requestメッセージの送信要求が発生したとする。スレーブ10−2のPTPスタック23が送信するDelay_Requestメッセージは、マスタ3宛てのメッセージである。また、S80において生成されるDelay_Requestメッセージには、スレーブクロック120のドメイン番号とクロックIDとが含まれている。
S81では、パケット送受信部21(パケット転送部214)は、PTPスタック23から入力されたDelay_Requestメッセージを、アプリ用通信IF 104を通じて、スレーブ10−1のパケット送受信部11に転送する。
S82では、パケット送受信部11(タイムスタンプ制御部113)は、スレーブ10−2からDelay_Requestメッセージを受信する。送信対象のDelay_R
equestメッセージはタイムスタンプの取得に関係する種別のメッセージである(図10、OP22:YES)。したがって、パケット送受信部11(タイムスタンプ制御部113)は、スレーブアクセス先管理テーブル121から、受信メッセージ内のスレーブクロック120のドメイン番号とクロックIDとに対応するアクセス先として他系のスレーブ10−2のスレーブクロック120を取得する(図10、OP23:一致(他系))。
S83では、パケット送受信部11(タイムスタンプ制御部113)は、タイムスタンプ用通信IF 106を通じて、他系のスレーブ10−2のスレーブクロック120からタイムスタンプを取得する(図10、OP25)。
S84では、パケット送受信部11(タイムスタンプ制御部113)は、取得した他系のスレーブクロック120のタイムスタンプをタイムスタンプ格納テーブル122に記録する(図10、OP26)。
S85では、パケット送受信部11(タイムスタンプ制御部113)は、送信対象のDelay_Requestメッセージを、代表IFが動作する外部ネットワーク用通信IF 103を通じて、マスタ3に送信する(図10、OP27)。
S86では、マスタ3からスレーブ10−2にDelay_Responseメッセージが送信される。マスタ3から送信されたメッセージは、代表IFが動作しているスレーブ10−1によって受信される。
S87では、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、マスタ3からのDelay_Responseメッセージを受信する(図9A、OP1:YES)。Delay_Responseメッセージはタイムスタンプの取得に関係する種別のメッセージでないので(図9A、OP2:NO)、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、他系のスレーブ10−2のPTPスタック23にメッセージを転送する(図9B、OP17)。
S88では、スレーブ10−2のPTPスタック23は、スレーブ10−1からDelay_Responseメッセージを受信する(図11、OP31:Delay_Resp)。PTPスタック23は、代表IFがスレーブ10−1で動作しているので(図12、OP41:他系)、装置時刻制御部24にタイムスタンプ収集を依頼する(図12、OP43)。
S89では、装置時刻制御部24は、PTPスタック23からタイムスタンプ収集の依頼を受けて、スレーブ10−2の装置時刻制御部24へ、アプリ用通信IF 104を通じて、タイムスタンプ収集の依頼を送信する(図13、OP51:PTPスタック、OP52)。
S90では、スレーブ10−1の装置時刻制御部14は、スレーブ10−2の装置時刻制御部24からタイムスタンプ収集の依頼を受けて、タイムスタンプ格納テーブル122から他系のタイムスタンプを読み出す(図13、OP51:他系の装置時刻制御部、OP55)。
S91では、装置時刻制御部14は、読み出したスレーブ10−2のスレーブクロック120のタイムスタンプを、スレーブ10−2の装置時刻制御部24に、アプリ用通信IF 104を通じて、送信する(図13、OP56)。
S92では、スレーブ10−2の装置時刻制御部24は、スレーブ10−1の装置時刻制御部14から受信した、自系のスレーブクロック120のタイムスタンプを受信し、PTPスタック23に通知する(図13、OP53、OP54)。
S93では、PTPスタック23は、伝搬遅延やOFMを算出し、スレーブクロック120の補正を行う(図11、OP36〜OP39)。
<第1実施形態の作用効果>
第1実施形態では、代表IFが動作するスレーブ10−1が、代表IFを通じた他系のスレーブ10−2とマスタ間のメッセージの送信又は受信時のタイムスタンプを、スレーブ10−2のスレーブクロック120から取得する(図20のS60、図21のS83等)。スレーブ10−2のスレーブクロック120のタイムスタンプを取得するための通信は、他のアプリケーションの通信とは分離され、タイムスタンプ用通信IF 106を通じて行われる。これによって、スレーブ10−2のスレーブクロック120のタイムスタンプを取得するまでの伝送遅延の変動をより少なくすることができる。したがって、代表IFにおけるPTPメッセージの送信又は受信時のスレーブ10−2におけるスレーブクロック120のタイムスタンプを、より正確に取得することができる。
スレーブ10−2は、自身のスレーブクロック120のタイムスタンプを用いてスレーブクロック120を補正することができる。したがって、第1実施形態によれば、代表IFが動作してないスレーブ10−2も、代表IFが動作しているスレーブ10−1と同程度の精度でマスタクロックに同期することができ、Hot/Standby構成の各スレーブの時刻同期の精度を向上させることができる。
Hot/Standby構成の各スレーブの時刻同期の精度が向上することによって、Hot系及びStandby系が切り替わった場合でも、新たにHot系となったスレーブは、切替直後でも切替前と同程度の精度を保った時刻を提供することができる。
また、第1実施形態では、代表IFが動作するスレーブ10−1が、もう一方のスレーブ10−2のタイムスタンプを取得する処理が、OSを介さずに、例えば、通信IFのドライバによって実行される。これによって、メッセージが代表IFにおいて送信又は受信される時点からスレーブ10−2におけるタイムスタンプが取得されるまでの時間をより短くすることができ、スレーブ10−2のスレーブクロック120のOFMをより正確に取得することができる。これによって、代表IFが動作していないスレーブにおいても、より精度の高い時刻同期を実現することができる。
第1実施形態によれば、代表IFが動作するスレーブ10−1のタイムスタンプ制御部113は、他系のスレーブクロック120のタイムスタンプを取得し、自系のタイムスタンプ格納テーブル122に記録する。これによって、代表IFが動作するスレーブ10−1において一元的にタイムスタンプを管理することができる。また、もう一方のスレーブ10−2では、タイムスタンプ格納テーブルを保持しなくてもよく、メモリの資源を節約できる。
第1実施形態では、代表IFが動作するスレーブ10−1は、タイムスタンプの取得に関係する種別のメッセージが代表IFにおいて送信又は受信される場合に、タイムスタンプの取得先をスレーブアクセス先管理テーブル121から取得する。スレーブアクセス先管理テーブル121には、メッセージ識別情報とタイムスタンプの参照先となるスレーブクロックの情報が格納されている。したがって、スレーブアクセス先管理テーブル121を保持することによって、スレーブ10−1は、タイムスタンプの取得に関係する種別のメッセージの代表IFにおける送信又は受信時に参照するスレーブクロックの所在を特定
することができる。
また、スレーブアクセス先管理テーブル121のエントリは、PTPメッセージから学習される。これによって、時刻同期システム100の管理者にとって、スレーブアクセス先管理テーブル121の管理が容易となる。
また、代表IFが動作しているか否かにかかわらず、いずれのスレーブにおいても、スレーブアクセス先管理テーブルが構築される。これによって、例えば、Hot系及びStandby系が切り替わった場合でも、新たにHot系となったスレーブが、タイムスタンプの取得に関係する種別のメッセージが代表IFにおいて送信又は受信した場合に、参照先のスレーブクロックの所在を特定することができる。
<第1実施形態の変形例>
第1実施形態では、スレーブアクセス先管理テーブルにおいて、メッセージ識別情報として、ドメイン番号とクロックIDとが用いられる。ユニキャスト方式の場合には、スレーブアクセス先管理テーブル内のメッセージ識別情報として、マスタのIPアドレスを用いることができる。変形例では、スレーブアクセス先管理テーブル内のメッセージ識別情報として、マスタのIPアドレスが用いられる。
変形例では、時刻同期システム100のシステム構成、パッケージ10−1及び10−2のハードウェア構成、スレーブ10−1及び10−2の機能構成は、第1実施形態と同様である。また、スレーブ10−1及びスレーブ10−2の各機能構成要素の処理も第1実施形態と同様である。
図22は、第1実施形態の変形例における、PTPメッセージにユニキャストIPアドレスが用いられる場合の装置時刻制御部14の処理のフローチャートの一例である。図22に示される処理は、装置時刻制御部14に、PTP起動指示が入力されると開始される。
OP81では、装置時刻制御部14は、Hot系のスレーブのマスタとして、PTPマスタサーバ管理テーブル(図8)内の未使用であるマスタのうち最小番号のマスタを選択する。
OP82では、装置時刻制御部14は、Standby系のスレーブのマスタとして、PTPマスタサーバ管理テーブル(図8)の未使用であるマスタのうち最小番号のマスタを選択する。Standby系のスレーブが複数台存在する場合には、例えば、OP82では、装置時刻制御部14は、全Standby系のスレーブについてマスタを選択する。
OP83では、装置時刻制御部14は、自系のスレーブアクセス先管理テーブル121に、OP81及びOP82において自系及び他系のスレーブについて選択されたマスタのIPアドレスを登録する。
OP84では、装置時刻制御部14は、自系のPTPスタック13に、OP81又はOP83で選択したマスタのIPアドレスを設定する。その後、PTPスタック13によって、PTPメッセージの送信が開始される。
OP85では、装置時刻制御部14は、他系のスレーブ10−2の装置時刻制御部24に、他系のスレーブアクセス先管理テーブル221に、OP81及びOP82において自系及び他系のスレーブについて選択されたマスタのIPアドレスの登録を指示する。
OP86では、装置時刻制御部14は、他系のスレーブ10−2の装置時刻制御部24に、PTP開始指示を、アプリ用通信IF 104を通じて通知する。その後、図22に示される処理が終了する。
図23は、第1実施形態の変形例における、ユニキャスト方式の場合の、スレーブアクセス先管理テーブルの構築の処理のシーケンスの一例を示す図である。図24は、具体例における、スレーブ10−1及びスレーブ10−2におけるスレーブアクセス先管理テーブル121、221の変遷の一例を示す図である。
まず、変形例における、スレーブ10−1のスレーブアクセス先管理テーブル121の初期状態は、図24の(A4)のテーブルに示される通りである。スレーブ10−2のスレーブアクセス先管理テーブル221の初期状態は、図24の(B4)のテーブルに示される通りである。変形例において、スレーブアクセス先管理テーブルは、メッセージ識別情報として、マスタのIPアドレスが用いられている。
S101では、代表IFが動作するスレーブ10−1の装置時刻制御部14が、PTPマスタサーバ管理テーブル(図8参照)の1番目のマスタ2をHot系のスレーブのマスタとして、2番目のマスタ3をStandby系のスレーブのマスタとして選択する(図22、OP81、OP82)。具体例では、スレーブ10−1がHot系、スレーブ10−2がStandby系である。したがって、スレーブ10−1のマスタとしてマスタ2、スレーブ10−2のマスタとしてマスタ3が選択される。
S102では、装置時刻制御部14は、スレーブアクセス先管理テーブル121に、自系及び他系のマスタのIPアドレスを設定する(図22、OP83)。S102の時点のスレーブ10−1のスレーブアクセス先管理テーブル121は、図24の(A5)のテーブルである。図24の(A5)のスレーブアクセス先管理テーブル121には、マスタ2のIPアドレスに対して、スレーブクロックのアクセス先が「自系」と登録されている。また、マスタ3のIPアドレスに対して、スレーブクロックのアクセス先が「他系」と登録されている。
S103では、装置時刻制御部14は、PTPスタック13に選択したマスタ2のIPアドレスを設定する(図22、OP84)。
S104では、PTPスタック13は、PTPメッセージのサービスの開始を要求するSignaling−unicast Requestメッセージをマスタ2に送信する。Signaling−unicast Requestメッセージは、パケット送受信部11、外部ネットワーク用通信IF 103を経由して、外部ネットワークに出力される(図10、OP22:NO、OP27)。
S105では、マスタ2は、スレーブ10−1からSignaling−unicast Requestメッセージを受信し、応答として、スレーブ10−1にSignaling−unicast Grantメッセージを送信する。以降、マスタ2は、スレーブ10−1に対して、所定の周期でAnnounceメッセージを送信する。
S106では、装置時刻制御部14は、他系のスレーブ10−2の装置時刻制御部24に、他系のスレーブアクセス先管理テーブル221への、自系及び他系のマスタのIPアドレスの登録を指示する(図22、OP85)。
S107では、スレーブ10−2の装置時刻制御部24は、スレーブアクセス先管理テ
ーブル221に、自系及び他系のマスタのIPアドレスを登録する。S107の時点のスレーブ10−2のスレーブアクセス先管理テーブル221は、図24の(B5)のテーブルである。図24の(B5)のスレーブアクセス先管理テーブル221には、マスタ2のIPアドレスに対して、スレーブクロックのアクセス先が「他系」と登録されている。また、マスタ3のIPアドレスに対して、スレーブクロックのアクセス先が「自系」と登録されている。
S108では、装置時刻制御部14は、マスタ3とのPTPメッセージのサービスの開始の指示を、アプリ用通信IF 104を通じて、他系のスレーブ10−2の装置時刻制御部24に送信する。
S109では、スレーブ10−2の装置時刻制御部24は、スレーブ10−1からのマスタ3とのPTPメッセージのサービスの開始の指示を受信し、PTPスタック23にマスタ3のIPアドレスを設定する。
S110では、PTPスタック23は、PTPメッセージのサービスの開始を要求するSignaling−unicast Requestメッセージを、マスタ3に送信する(図10、OP22:NO、OP27)。Signaling−unicast Requestメッセージは、パケット送受信部21、アプリ用通信IF 104、パケット送受信部11、外部ネットワーク用通信IF 103を経由して、送信される。
S111では、マスタ3は、スレーブ10−2からSignaling−unicast Requestメッセージを受信し、応答として、スレーブ10−2にSignaling−unicast Grantメッセージを送信する。以降、マスタ3は、スレーブ10−2に対して、所定の周期でAnnounceメッセージを送信する。Signaling−unicast Grantメッセージは、スレーブ10−1の外部ネットワーク用通信IF 103、パケット送受信部11、アプリ用通信IF 104、パケット送受信部21、を経由して、スレーブ10−2のPTPスタック23に到着する。
第1実施形態の変形例によれば、PTPメッセージにユニキャストIPアドレスが用いられる場合に、スレーブアクセス先管理テーブルのメッセージ識別情報として、マスタのIPアドレスを用いることができる。
<第2実施形態>
第1実施形態では、パケット送受信部がスレーブクロックからタイムスタンプを受信し、取得したタイムスタンプをタイムスタンプ格納テーブルに格納する。パケット送受信部は、外部ネットワーク用通信IF 103のドライバに相当する。第1実施形態ではタイムスタンプ格納テーブルはメモリ102に格納されている。
第2実施形態では、いずれのパッケージにおいても、タイムスタンプ格納テーブルを保持するメモリがメモリ102とは別に用意される。また、タイムスタンプの取得及びタイムスタンプの記録は、スレーブクロックが行う。
したがって、第2実施形態では、いずれのスレーブもタイムスタンプ格納テーブルを備え、いずれのスレーブも自装置内のスレーブクロックのタイムスタンプを自装置内のタイムスタンプテーブルに記録する。第2実施形態では、第1実施形態と共通する説明は省略される。第2実施形態では、時刻同期システム100のシステム構成は第1実施形態と同様である。
図25は、第2実施形態に係るパッケージ10のハードウェア構成の一例を示す図であ
る。パッケージ10は、ハードウェア構成要素として、プロセッサ101、メモリ102、通信インタフェース103、通信インタフェース104、ブリッジ105、通信インタフェース106、PTPスレーブクロック107に加え、メモリ108を備える。
メモリ108は、例えば、RAMである。メモリ108は、例えば、タイムスタンプ用通信IF 106及びスレーブクロック107が搭載されているモジュールに搭載されており、スレーブクロック107が直接アクセス可能である。直接アクセス可能とは、伝送路以外の他のハードウェア構成要素を介さずにアクセス可能であることを示す。メモリ108は、「第2の記憶部」の一例である。
スレーブクロック107には、例えば、FPGA等のプロセッサが搭載されており、プロセッサ101からの指示に従って、メモリ108、すなわち、タイムスタンプ格納テーブルにタイムスタンプを書き込む。
したがって、第2実施形態では、例えば、プロセッサ101がタイムスタンプの取得の命令をスレーブクロック107に送信すると、スレーブクロック107がメモリ108内のタイムスタンプ格納テーブルにタイムスタンプを書き込む。
図26は、第2実施形態に係るスレーブの機能構成の一例を示す図である。第2実施形態に係るスレーブ10−1は、機能構成要素として、パケット送受信部11、記憶部12、PTPスタック13、装置時刻制御部14に加え、記憶部15を備える。記憶部15は、メモリ108に相当する。第2実施形態では、記憶部15にタイムスタンプ格納テーブル151が備えられる。
第2実施形態に係るスレーブ10−2も、スレーブ10−1と同様に、パケット送受信部21、記憶部22、PTPスタック23、装置時刻制御部24に加え、記憶部25を備える。記憶部25は、メモリ108に相当し、タイムスタンプ格納テーブル251を備える。記憶部15、記憶部25、タイムスタンプ格納テーブル151、251は、それぞれ、「第2の記憶部」の一例である。
また、第2実施形態では、例えば、タイムスタンプ制御部113は、代表IFにおいて、タイムスタンプの取得に関係する種別のPTPメッセージが受信又は送信された場合に、自系又は他系のスレーブクロックに対してタイムスタンプ取得要求を出力する。他系のスレーブクロックに対するタイムスタンプ取得要求は、タイムスタンプ用通信IF 106を通じて送信される。
各スレーブ内のスレーブクロックは、タイムスタンプ制御部113からタイムスタンプ取得要求を受信すると、自装置内のタイムスタンプ格納テーブルにタイムスタンプを記録する。
また、第2実施形態では、PTPスタック13、23は、PTPメッセージの受信又は送信のタイムスタンプを読み出す場合には、自装置内のタイムスタンプ格納テーブル151、251から読み出す。すなわち、第1実施形態では、PTPメッセージの受信又は送信のタイムスタンプを読み出す場合には、例えば、図12の処理が行われるが、第2実施形態では、図12に示される処理全体は実行されず、図12のOP42に相当する処理が行われる。
図27は、第2実施形態に係るタイムスタンプ格納テーブルの一例である。図27には、スレーブ10−1のタイムスタンプ格納テーブル151と、スレーブ10−2のタイムスタンプ格納テーブル251との一例が示されている。
第2実施形態では、各スレーブがタイムスタンプ格納テーブルを保持し、自装置内のスレーブクロックのタイムスタンプの情報を自装置で保持している。そのため、タイムスタンプ値を読み出す場合に、タイムスタンプ格納テーブルが自系か他系かを意識する必要がない。
したがって、第2実施形態に係るタイムスタンプ格納テーブルのトリガメッセージ情報には、ドメイン番号、クロックIDが用いられない。すなわち、第2実施形態に係るタイムスタンプ格納テーブルでは、トリガメッセージ情報として、方向とシーケンス番号とが用いられている。
図28は、第2実施形態に係るPTPメッセージの受信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。図28では、スレーブ10−1及びスレーブ10−2において、スレーブアクセス先管理テーブルの構築が完了していることを想定する。
S111では、マスタ2からSyncメッセージが送信されたとする。マスタ2から送信されたSyncメッセージは、代表IFが動作しているスレーブ10−1によって受信される。
S112では、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、マスタ2からのSyncメッセージを受信する(図9A、OP1:YES)。Syncメッセージはタイムスタンプの取得に関係する種別のメッセージである(図9A、OP2:YES)。したがって、パケット送受信部11(タイムスタンプ制御部113)は、スレーブアクセス先管理テーブル121から、受信メッセージ内のマスタクロックAのドメイン番号とクロックIDとに対応するアクセス先である自系のスレーブクロック110を取得する(図9A、OP3:一致(自系))。
S113では、パケット送受信部11(タイムスタンプ制御部113)は、スレーブクロック110にタイムスタンプ取得要求を送信する。S114では、スレーブクロック110は、タイムスタンプ格納テーブル151にタイムスタンプを記録する。
S115では、パケット送受信部11(タイムスタンプ制御部113)は、受信したSyncメッセージを自系のPTPスタック13に転送する(図9B、OP16)。
S116では、PTPスタック13は、タイムスタンプ格納テーブル151から受信したSyncメッセージに該当するタイムスタンプを読み出す。S117では、PTPスタック13は、伝搬遅延やOFMを算出し、スレーブクロック110の補正を行う(図11、OP36〜OP39)。
次に、S118では、マスタ3からSyncメッセージが送信されたとする。マスタ3から送信されたSyncメッセージは、代表IFが動作しているスレーブ10−1によって受信される。S118においてマスタ3から送信されるSyncメッセージには、マスタクロックBのドメイン番号とクロックIDとが含まれている。
S119では、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、マスタ3からのSyncメッセージを受信する(図9A、OP1:YES)。Syncメッセージはタイムスタンプの取得に関係する種別のメッセージであるので(図9A、OP2:YES)、パケット送受信部11(タイムスタンプ制御部113)は、スレーブアクセス先管理テーブル121から、受信メッセージ内のマスタクロックBのドメイ
ン番号とクロックIDとに対応するアクセス先である他系のスレーブ10−2のスレーブクロック120を取得する(図9A、OP3:一致(他系))。
S120では、パケット送受信部11(タイムスタンプ制御部113)は、タイムスタンプ用通信IF 106を通じて、他系のスレーブクロック120にタイムスタンプ取得要求を送信する。
S121では、スレーブ10−2のスレーブクロック120は、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)からタイムスタンプ取得要求を受けて、タイムスタンプ格納テーブル251にタイムスタンプを記録する。
S122では、パケット送受信部11(タイムスタンプ制御部113)は、マスタ3から受信したSyncメッセージを他系のPTPスタック23に転送する(図9B、OP17)。
S123では、スレーブ10−2のPTPスタック23は、スレーブ10−1から、パケット送受信部21(パケット転送部214)を通じて、Syncメッセージを受信する(図11、OP31:Sync)。PTPスタック23は、タイムスタンプ格納テーブル251から受信したSyncメッセージに該当するタイムスタンプを読み出す。S124では、PTPスタック23は、伝搬遅延やOFMを算出し、スレーブクロック120の補正を行う(図11、OP36〜OP39)。
図29は、第2実施形態に係るPTPメッセージの送信を契機とするタイムスタンプ取得の処理のシーケンスの一例を示す図である。図29の処理シーケンスは、例えば、図28に示される処理シーケンスの後に発生する。
S131では、スレーブ10−1のPTPスタック13において、Delay_Requestメッセージの送信要求が発生したとする。S131において生成されるDelay_Requestメッセージには、スレーブクロック110のドメイン番号とクロックIDとが含まれている。
S132では、送信対象のDelay_Requestメッセージはタイムスタンプの取得に関係する種別のメッセージである(図10、OP22:YES)。したがって、パケット送受信部11(タイムスタンプ制御部113)は、スレーブアクセス先管理テーブル121から、受信メッセージ内のスレーブクロック110のドメイン番号とクロックIDとに対応するアクセス先である自系のスレーブクロック110を取得する(図10、OP23:一致(自系))。
S133では、パケット送受信部11(タイムスタンプ制御部113)は、スレーブクロック110に、タイムスタンプ取得要求を送信する。S134では、スレーブクロック110は、タイムスタンプ格納テーブル151にタイムスタンプを記録する。
S135では、パケット送受信部11(タイムスタンプ制御部113)は、送信対象のDelay_Requestメッセージを、代表IFが動作する外部ネットワーク用通信IF 103を通じて、マスタ2に送信する(図10、OP27)。
S136では、マスタ2からDelay_Responseメッセージが送信される。マスタ2から送信されたメッセージは、代表IFが動作しているスレーブ10−1によって受信される。
S137では、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、マスタ2からのDelay_Responseメッセージを受信する(図9A、OP1:YES)。Delay_Responseメッセージはタイムスタンプの取得に関係する種別のメッセージでないので(図9A、OP2:NO)、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、自系のPTPスタック13にメッセージを転送する(図9B、OP16)。
S138では、PTPスタック13は、Delay_Responseメッセージを受信する(図11、OP31:Delay_Resp)。PTPスタック13は、代表IFがスレーブ10−1で動作しているので(図12、OP41:自系)、タイムスタンプ格納テーブル151から、S135において送信したDelay_Requestメッセージに該当するタイムスタンプを読み出す(図12、OP42)。S139では、PTPスタック13は、伝搬遅延やOFMを算出し、スレーブクロック110の補正を行う(図11、OP36〜OP39)。
次に、S140では、スレーブ10−2のPTPスタック23において、Delay_Requestメッセージの送信要求が発生したとする。スレーブ10−2のPTPスタック23が送信するDelay_Requestメッセージは、マスタ3宛てのメッセージである。また、S140において生成されるDelay_Requestメッセージには、スレーブクロック120のドメイン番号とクロックIDとが含まれている。
S141では、パケット送受信部21(パケット転送部214)は、PTPスタック23から入力されたDelay_Requestメッセージを、アプリ用通信IF 104を通じて、スレーブ10−1のパケット送受信部11に転送する。
S142では、パケット送受信部11(タイムスタンプ制御部113)は、スレーブ10−2からDelay_Requestメッセージを受信する。送信対象のDelay_Requestメッセージはタイムスタンプの取得に関係する種別のメッセージである(図10、OP22:YES)。したがって、パケット送受信部11(タイムスタンプ制御部113)は、スレーブアクセス先管理テーブル121から、受信メッセージ内のスレーブクロック120のドメイン番号とクロックIDとに対応するアクセス先である他系のスレーブ10−2のスレーブクロック120を取得する(図10、OP23:一致(他系))。
S143では、パケット送受信部11(タイムスタンプ制御部113)は、タイムスタンプ用通信IF 106を通じて、他系のスレーブ10−2のスレーブクロック120にタイムスタンプ取得要求を送信する。
S144では、スレーブ10−2のスレーブクロック120は、スレーブ10−1のパケット送受信部11からのタイムスタンプ取得要求を受けて、タイムスタンプ格納テーブル251にタイムスタンプを記録する。
S145では、パケット送受信部11(タイムスタンプ制御部113)は、送信対象のDelay_Requestメッセージを、代表IFが動作する外部ネットワーク用通信IF 103を通じて、マスタ3に送信する(図10、OP27)。
S146では、マスタ3からスレーブ10−2へのDelay_Responseメッセージが送信される。マスタ3から送信されたメッセージは、代表IFが動作しているスレーブ10−1によって受信される。
S147では、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、マスタ3からのDelay_Responseメッセージを受信する(図9A、OP1:YES)。Delay_Responseメッセージはタイムスタンプの取得に関係する種別のメッセージでないので(図9A、OP2:NO)、スレーブ10−1のパケット送受信部11(タイムスタンプ制御部113)は、他系のスレーブ10−2のPTPスタック23にメッセージを転送する(図9B、OP17)。
S148では、スレーブ10−2のPTPスタック23は、スレーブ10−1からDelay_Responseメッセージを、パケット送受信部21(パケット転送部214)を通じて、受信する(図11、OP31:Delay_Resp)。PTPスタック23は、タイムスタンプ格納テーブル251から受信したSyncメッセージに該当するタイムスタンプを読み出す。S149では、PTPスタック23は、伝搬遅延やOFMを算出し、スレーブクロック120の補正を行う(図11、OP36〜OP39)。
<第2実施形態の作用効果>
第2実施形態では、各スレーブ10にスレーブクロック107が直接アクセス可能なメモリを備え、当該メモリにタイムスタンプ格納テーブルを保持する。これによって、代表IFが動作していないスレーブ10−2において、スレーブ10−2のタイムスタンプをスレーブ10−2内のタイムスタンプ格納テーブル251に保持することができる。これによって、代表IFが動作していないスレーブ10−2がOFM等を算出する際に、スレーブ10−1からタイムスタンプを取得しなくてよくなり、パッケージ間の通信が削減される。
<第3実施形態>
PTPでは、複数のマスタクロックから最適なクロックを選択するアルゴリズムとしてBMCAが規定されているが、ネットワーク伝搬中の同期精度の劣化までは考慮されていない。
第3実施形態では、第1実施形態又は第2実施形態の時刻同期システム100において、PTPマスタ2及びPTPマスタ3それぞれについて、ネットワーク伝搬中の同期精度の劣化を考慮して、同期状態の優劣が判定される。具体的には、第3実施形態では、OFMに基づいて、各マスタについて同期状態の優劣が判定される。OFMは、「被同期クロック」の「同期元クロックからのオフセット」の一例である。
PTPマスタとの同期状態の優劣の判定は、例えば、スレーブ10−1、スレーブ10−2、スレーブ10−1及びスレーブ10−2とは異なる制御装置等のいずれで行われてもよい。また、PTPマスタとの同期状態の優劣の判定がスレーブ10−1で行われる場合には、装置時刻制御部14、PTPスタック13のいずれによって実行されてもよい。なお、第3実施形態では、一例として、スレーブ10−1の装置時刻制御部14がPTPマスタとの同期状態の優劣の判定を実行することを想定して説明される。
第3実施形態において、時刻同期システム100のシステム構成、パッケージ10のハードウェア構成、スレーブ10−1及びスレーブ10−2の機能構成は、第1実施形態又は第2実施形態と同様である。すなわち、第3実施形態では、スレーブ10−1とスレーブ10−2とがそれぞれ異なるPTPマスタを選択していることを前提として説明される。
図30は、時刻同期精度の判定処理のフローチャートの一例である。時刻同期精度の判定処理は、時刻同期の精度がより良いPTPマスタを特定する処理である。図30に示される処理は、例えば、所定の周期で実行される。時刻同期精度の判定処理の実行周期は、
例えば、OFMの算出周期と同じである。
OP91では、装置時刻制御部14は、スレーブ10−1のPTPスタック13及びスレーブ10−2のPTPスタック23から時刻オフセット(OFM)を収集する。例えば、スレーブ10−2のPTPスタック23からの時刻オフセットは、アプリ用通信IF 104とパケット転送部114とを通じて取得される。
OP92では、装置時刻制御部14は、評価対象のPTPマスタが有るか否かを判定する。OP92では、例えば、OFMの絶対値が閾値以下であり、且つ、1周期前のOFMとの差分が閾値以下である場合に、PTPマスタが評価対象であることが判定される。
評価対象のPTPマスタが存在する場合には(OP92:YES)、処理がOP93に進む。いずれのPTPマスタも評価対象とならない場合には(OP92:NO)、処理がOP96に進む。OP96では、装置時刻制御部14は、評価項目の値(後述)の累積値をリセットする。その後、処理がOP97に進む。
OP93では、装置時刻制御部14は、OP92において評価対象であると判定されたPTPマスタについて、評価項目の値を算出する。評価項目の値は、例えば、過去m回分の1周期前のOFMとの差分の累積値と、過去m回分のOFMの分散値の累積値と、である。1周期前のOFMとの差分は、短期的にゆらぎを監視するための項目である。OFMの分散値は、長期的にゆらぎを監視するための項目である。
OP94では、装置時刻制御部14は、OP93において算出される評価結果が有るか否かを判定する。例えば、過去m回分の評価項目の値が累積されていない場合には、評価結果がない。評価結果がある場合には(OP94:YES)、処理がOP95に進む。評価結果がない場合には(OP94:NO)、処理がOP97に進む。
OP95では、装置時刻制御部14は、評価項目の値がより0に近い項目がより多いマスタを、同期状態が優れているマスタとして選択する。これによって、伝送経路のゆらぎが小さいマスタを、同期状態が優れているマスタとして選択することができる。その後、図30に示される処理が終了する。
OP97では、装置時刻制御部14は、評価対象となるマスタが存在しない、又は、評価項目の値が得られないので、いずれのマスタも選択することなく、現状維持を選択する。その後、図30に示される処理が終了する。
なお、OP95において選択されたマスタは、例えば、同期先のマスタの切替の判定に用いられてもよい。より具体的には、OP95において選択されたマスタが選択中のマスタと異なる場合には、例えば、Hot系のスレーブのPTPスタックは、OP95において選択されたマスタを新たな同期先に選択する。また、例えば、Standby系のスレーブのPTPスタックはOP95において選択されていないマスタを新たな同期先に選択する。
または、OP95において選択されたマスタは、例えば、Hot系/Standby系の切替の判定に用いられてもよい。より具体的には、OP95において選択されたマスタを選択中マスタとするスレーブをHot系、もう一方のスレーブをStandby系に変更してもよい。
図31は、時刻連続性チェック処理のフローチャートの一例である。図31に示される処理は、例えば、図30のOP92におけるPTPマスタが評価対象であるか否かの判定
処理のオプションとして行われる処理である。図31の処理は、各PTPマスタについて実行される。図31の処理は、例えば、図30のOP92において実行される処理であるので、図31の実行周期は、図30の実行周期と同じである。
例えば、スレーブとマスタとの間の伝搬経路が対称経路から非対称経路に変化した場合には、計算誤差の混入のために時刻同期したTAI(仏語:Temps Atomique International、英語:International Atomic Time)時刻が不連続に変化する。
対象経路とは、例えば、マスタからスレーブへの方向の伝搬経路と、スレーブからマスタへの方向の伝搬経路とが同じ経路であることを示す。非対称経路とは、例えば、マスタからスレーブへの方向の伝搬経路と、スレーブからマスタへの方向の伝搬経路とが異なる経路であることを示す。マスタとスレーブとの間の経路が非対称となると、各方向の経路の伝搬遅延の差分が大きくなる可能性が高い為、OFMが精度良く算出されなくなる可能性が高い。結果として、スレーブクロックに基づいて取得されるTAIの時刻が不連続になる可能性が高くなる。時刻連続性チェック処理は、伝搬経路が対称から非対称に変化した場合のTAI時刻の不連続の状態のマスタを評価対象から除外するための処理である。
OP101では、装置時刻制御部14は、対象のPTPマスタが評価対象であるか否かを判定する。OP101の判定は、図30のOP92と同様に、例えば、対象のマスタとのOFMの絶対値が閾値以下であり、且つ、1周期前のOFMとの差分が閾値以下である場合に、対象のマスタが評価対象であることが判定される。
対象のマスタが評価対象である場合には(OP101:YES)、処理がOP103に進む。対象のマスタが評価対象でない場合には(OP101:NO)、処理がOP102に進む。OP102では、装置時刻制御部14は、対象のマスタについて評価対象外と判定した回数kに1を加算する。kの初期値は0である。その後、図31に示される処理が終了し、例えば、図30のOP93(評価対象マスタがある場合)またはOP96(評価対象マスタがない場合)に処理が進む。また、初回から1回以上は、OP92の評価対象条件を満たさないため、OP102に進む。
OP103では、装置時刻制御部14は、対象のマスタについて評価対象外と判定した回数kが0であるか否かを判定する。k=0である場合には、例えば、対象のマスタが前回も評価対象と判定されていることが示される。k=0でない場合には、例えば、対象のマスタが評価対象外から評価対象へと復帰した初回の処理であることが示される。k=0である場合には(OP103:YES)、処理がOP104に進む。k=0でない場合には(OP103:NO)、処理がOP107に進む。
OP104では、装置時刻制御部14は、評価対象のマスタを選択しているスレーブのスレーブクロックのTAIの現在値を取得し、前回値との差分を算出する。OP105では、装置時刻制御部14は、OP104で取得したTAIの差分値の平均値を算出する。
OP106では、装置時刻制御部14は、評価対象のマスタについて、OP104で取得したTAIの現在値とOP105で算出したTAIの差分値の平均値とをメモリ102の所定の記憶領域に上書き更新して記憶する。その後、図31に示される処理が終了し、例えば、図30のOP93又はOP96に処理が進む。
OP107では、装置時刻制御部14は、評価対象外となる直前に対象のマスタについて記憶されたTAIの差分値の平均値と、評価対象への復帰までにかかった周期数(kの値)とから、TAIの現在値の予測値を算出する。TAIの現在値の予測値は、例えば、TAIの差分値の平均値に、時刻同期精度の判定処理(図30)の実行周期にkの値を乗
じた値を加算して算出される。
OP108では、装置時刻制御部14は、対象のマスタを選択するスレーブのスレーブクロックからTAIの現在値(実測値)を取得し、TAIの現在値について、OP107で算出した予測値と実測値との差分が閾値以下であるか否かを判定する。TAIの現在値の予測値と実測値との差分が閾値以下である場合には(OP108:YES)、TAIの連続性が確認され、処理がOP109に進む。TAIの現在値の予測値と実測値との差分が閾値より大きい場合には(OP108:NO)、TAIの不連続が検出され、処理がOP111に進む。
OP109では、TAIの連続性が確認され、装置時刻制御部14は、対象のマスタが引き続き評価対象であることを判定し、対象のマスタについて、OP108で取得したTAIの現在値(実測値)をメモリ102の所定の記憶領域に記憶する。OP110では、装置時刻制御部14は、kを0にリセットする。その後、図31に示される処理が終了し、例えば、図30のOP93又はOP96に処理が進む。
OP111では、TAIの不連続が検出され、装置時刻制御部14は、対象のマスタが評価対象外であることを判定する。OP112では、装置時刻制御部14は、kに1を加算する。その後、図31に示される処理が終了し、例えば、図30のOP93又はOP96に処理が進む。
図31に示される時刻連続性チェック処理によれば、TAIの不連続性が検出された場合に、対象のマスタは評価対象外と判定される。したがって、時刻連続性チェック処理によれば、ネットワーク上の揺らぎが小さくても、スレーブの時刻に誤差が混入するマスタを評価対象から除外することができる。
<第3実施形態の作用効果>
第3実施形態によれば、異なるPTPマスタそれぞれのうち、伝送遅延の変動がより少なく、より時刻同期の精度の高いマスタを特定することができる。
また、第3実施形態では、例えば、図30に示される処理(OP92)において、OFMの絶対値が閾値より大きい、又は、1周期前のOFMとの差分が閾値より大きいPTPマスタは評価対象から除外される。これによって、伝送遅延の変動が大きい経路を用いるPTPマスタを評価対象から除外することができる。
また、第3実施形態では、例えば、例えば、図30に示される処理(OP93〜OP95)において、評価項目として、過去m回分の1周期前のOFMとの差分の累積値と、過去m回分のOFMの分散値の累積値とが用いられる。1周期前のOFMとの差分は、短期的にゆらぎを監視するための項目である。OFMの分散値は、長期的にゆらぎを監視するための項目である。条件を満たす評価項目の数が多いPTPマスタが選択されるので、短期的にも長期的にも伝送遅延の変動が小さい経路を用いるPTPマスタを選択することができる。
また、第3実施形態では、例えば、図31に示される時刻連続性チェック処理によって、TAIが不連続となるスレーブクロックによって選択されているPTPマスタが評価対象から除外される。これによって、ネットワーク上の揺らぎが小さくても、スレーブの時刻に誤差が混入するマスタを評価対象から除外することができる。
なお、第3実施形態では、時刻同期システム100を想定して説明されたが、第3実施形態で説明された時刻同期の優劣の判定方法を適用可能なシステムの構成は、時刻同期シ
ステム100のシステム構成に限定されない。例えば、PTPマスタが3台以上含まれ、1台のスレーブが各PTPマスタからのメッセージを受信し、各PTPマスタについてOFMを算出して、各マスタについて時刻同期の優劣を判定してもよい。
<プロセッサ>
上記実施形態において、スレーブ10は、プロセッサを備え、メモリ内にプログラムから展開された命令を実行することによって、説明された処理を実行する。プロセッサは、CPU、MPU(Microprocessor)とも呼ばれるプロセッサである。プロセッサは、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のプロセッサがマルチコア構成を有していても良い。上記各部の少なくとも一部の処理は、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit(GPU)、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、上記各部の少なくとも一部の処理は、集積回路(IC)、その他のディジタル回路であっても良い。また、上記各部の少なくとも一部にアナログ回路が含まれても良い。集積回路は、LSI、Application Specific Integrated Circuit(ASIC)、プログラマブルロジックデバイス(PLD)を含む。PLDは
、例えば、Field-Programmable Gate Array(FPGA)を含む。上記各部は、プロセッサと集
積回路との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラ(MCU)、SoC(System-on-a-chip),システムLSI、チップセットなどと呼ばれる。
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
<その他>
上記の実施形態は、以下の付記を開示する。
(付記1)
1又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか1つに同期する被同期クロックを備える複数のネットワーク装置を代表して、前記1又は複数の同期元クロック装置との通信が行われる第1のインタフェースを備える第1のネットワーク装置が、
前記第1のインタフェースを通じて行われる通信を監視し、
第2のインタフェースを通じて、他のネットワーク装置との間で、前記他のネットワーク装置と前記1又は複数の同期元クロック装置のいずれかとの間のメッセージの転送を行い、
前記第1のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記1又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、第3の
インタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する、
ネットワーク装置の時刻同期方法。
(付記2)
前記第1のネットワーク装置が、
前記第3のインタフェースを通じて取得された前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを第1の記憶部に記録し、
前記他のネットワーク装置からの取得要求に応じて、前記第1の記憶部に格納されている前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを、前記第2のインタフェースを通じて、送信する、
付記1に記載のネットワーク装置の時刻同期方法。
(付記3)
前記複数のネットワーク装置のそれぞれに備えられる被同期クロックが、
タイムスタンプの取得要求を受けた場合に、前記被同期クロックがアクセス可能な第2の記憶部にタイムスタンプを記録し、
前記第1のネットワーク装置が、
前記処理として、前記第1のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記1又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第3のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックにタイムスタンプの取得要求を送信する、
付記1に記載のネットワーク装置の時刻同期方法。
(付記4)
前記第1のネットワーク装置が、
複数の同期元クロック装置のそれぞれのアドレスを記憶する第3の記憶部にアドレスが記憶される同期元クロック装置から、前記複数のネットワーク装置それぞれに備えられる被同期クロックの同期元を選択し、
前記他のネットワーク装置に、前記他のネットワーク装置に備えられる被同期クロックの同期元として選択された同期元クロック装置のアドレスを前記第2のインタフェースを通じて通知する、
付記2又は3に記載のネットワーク装置の時刻同期方法。
(付記5)
前記第1のネットワーク装置は、
前記第1のインタフェースにおいて、前記複数のネットワーク装置のいずれかと前記1又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、メッセージの識別情報とタイムスタンプの参照先の被同期クロックとの対応付けを記憶する第4の記憶部に基づいて、前記検出されたメッセージの識別情報に対応する被同期クロックを特定し、
前記特定された被同期クロックを備えるネットワーク装置に対して、前記処理を実行する、
付記1から4のいずれか一つに記載のネットワーク装置の時刻同期方法。
(付記6)
前記複数のネットワーク装置のそれぞれは、
前記1又は複数の同期元クロック装置のうちの1つの同期元クロック装置から自装置へのメッセージを受信した場合に、前記受信したメッセージの識別情報と自装置に備えられる被同期クロックとの対応付けを前記第4の記憶部に記録し、
前記対応付けを他のネットワーク装置に通知し、
他のネットワーク装置から、メッセージの識別情報と前記他のネットワーク装置に備えられる被同期クロックとの対応付けの通知を受けた場合に、前記第4の記憶部に、前記通知された対応付けを記録する、
付記5に記載のネットワーク装置の時刻同期方法。
(付記7)
前記第1のネットワーク装置に備えられるプロセッサが、
前記第1のインタフェースのドライバプログラムを実行することによって、前記第1のインタフェースを通じてやり取りされる他のネットワーク装置と前記1又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第3のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する、
付記1から6のいずれか一つに記載のネットワーク装置の時刻同期方法。
(付記8)
前記複数のネットワーク装置のそれぞれは、被同期クロックが同期する同期元クロックを備える第1の同期元クロック装置と前記第1のインタフェースとの間の、前記被同期クロックのタイムスタンプに基づいて算出される伝搬遅延に基づいて、前記被同期クロックの前記第1の同期元クロック装置に備えられる同期元クロックからのオフセットが0になるように前記被同期クロックを補正し、
前記第1のネットワーク装置は、
前記複数のネットワーク装置のそれぞれについて、前記オフセットに基づいて、前記1又は複数の同期元クロック装置の中から前記伝搬遅延の変動のより小さい同期元クロック装置を選択する、
付記1から7のいずれか一つに記載のネットワーク装置の時刻同期方法。
(付記9)
前記第1のネットワーク装置は、
前記1又は複数の同期元クロック装置のうち、前記オフセットの絶対値が第1の閾値より大きく、且つ、前記オフセットの変動値が第2の閾値より大きい同期元クロック装置を、選択対象から除外する、
付記8に記載のネットワーク装置の時刻同期方法。
(付記10)
前記第1のネットワーク装置が、
前記1又は複数の同期元クロック装置のうち、少なくとも、前記オフセットの所定期間過去の分散値の累積値がより小さい、又は、前記オフセットと変動値の前記所定期間の累積値がより0に近い同期元クロック装置を選択する、
付記8又は9に記載のネットワーク装置の時刻同期方法。
(付記11)
前記第1のネットワーク装置が、
前記1又は複数の同期元クロック装置のうち、被同期クロックに基づくTAI(International Atomic Time)の不連続が検出されたネットワーク装置の同期元の同期元クロ
ック装置を、選択対象から除外する、
付記8から10のいずれか一つに記載のネットワーク装置の時刻同期方法。
(付記12)
前記第1のネットワーク装置が、
前記複数のネットワーク装置について、
所定の周期で、前記TAIの値とTAIの変動値の平均値とを取得し、
前記平均値に基づいて前記TAIの予測値を算出し、
前記TAIの予測値と前記被同期クロックから取得されるTAIの実測値との差分が第4の閾値より大きい場合に、前記被同期クロックの不連続を検出する、
付記11に記載のネットワーク装置の時刻同期方法。
(付記13)
1又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか1つに同期する被同期クロックと、
他の被同期クロックを備える他のネットワーク装置を代表して、前記1又は複数の同期元クロック装置との通信が行われる第1のインタフェースと、
他のネットワーク装置との間で、前記他のネットワーク装置と前記1又は複数の同期元クロック装置のいずれかとの間のメッセージの転送が行われる第2のインタフェースと、
前記他のネットワーク装置との接続される第3のインタフェースと、
前記第1のインタフェースを通じて行われる通信を監視し、前記第1のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記1又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第3のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する制御部と、
を備えるネットワーク装置。
(付記14)
同期元クロックを備える、1又は複数の同期元クロック装置と、
前記1又は複数の同期元クロック装置それぞれに備えられる同期元クロックのうちのいずれか1つに同期する被同期クロックを備える複数のネットワーク装置と、
を含み、
前記複数のネットワーク装置のうちの1つは、
他のネットワーク装置を代表して前記1又は複数の同期元クロック装置との通信が行われる第1のインタフェースと、
他のネットワーク装置との間で、前記他のネットワーク装置と前記1又は複数の同期元クロック装置のいずれかとの間のメッセージの転送が行われる第2のインタフェースと、
前記他のネットワーク装置との接続される第3のインタフェースと、
前記第1のインタフェースを通じて行われる通信を監視し、前記第1のインタフェースを通じてやり取りされる前記他のネットワーク装置と前記1又は複数の同期元クロック装置のいずれかとの間のメッセージを検出した場合に、前記第3のインタフェースを通じて、前記他のネットワーク装置に備えられる被同期クロックのタイムスタンプを取得する処理を実行する制御部と、
を備えるネットワークシステム。
(付記15)
1又は複数の同期元クロック装置それぞれに備えられる同期元クロックのいずれか1つに同期する被同期クロックを備える複数のネットワーク装置であって、前記複数のネットワーク装置のうちの1つのネットワーク装置が前記複数のネットワーク装置を代表して前記1又は複数の同期元クロック装置と通信を行う第1のインタフェースを備える、前記複数のネットワーク装置のそれぞれが、
前記被同期クロックが同期する同期元クロックを備える第1の同期元クロック装置と前記第1のインタフェースとの間の、前記被同期クロックのタイムスタンプに基づいて算出される伝搬遅延に基づいて、前記被同期クロックの前記第1の同期元クロック装置に備えられる同期元クロックからのオフセットが0になるように前記被同期クロックを補正し、
情報処理装置が、
前記複数のネットワーク装置のそれぞれについて、前記オフセットに基づいて、前記1又は複数の同期元クロック装置の中から伝搬遅延の変動のより小さい同期元クロック装置を選択する、
ネットワーク装置の時刻同期方法。