(58)【調査した分野】(Int.Cl.,DB名)
前記同期メッセージの生成に用いられるデータのうち、同一の同期メッセージ送出装置が送出する全ての同期メッセージで同一の値となるデータであるグローバルプロファイルを記憶するグローバルプロファイル記憶部と、
前記同期メッセージの生成に用いられるデータのうち、同一の同期メッセージ送出装置から送出され、かつ、同一の時刻同期対象機器に送出される同期メッセージで同一の値となるデータであるSMIDプロファイルを、時刻同期対象機器毎に記憶するSMIDプロファイル記憶部と、
前記同期メッセージの生成に用いられるデータのうち、時刻同期メッセージ毎に異なる値となるデータを示すSMIDテーブルを記憶するSMIDテーブル記憶部と、
を備え、
前記同期メッセージ生成部は、前記グローバルプロファイル記憶部から読み出したグローバルプロファイルと、前記SMIDプロファイル記憶部から、同期メッセージ送出対象となっている時刻同期対象機器について読み出したSMIDプロファイルと、前記SMIDテーブル記憶部から読み出したSMIDテーブルに基づいて生成したデータとを組み合わせて同期メッセージを生成する、
請求項1に記載の同期メッセージ送出装置。
前記送出部は、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、前記一般メッセージを送出中である場合は、当該一般メッセージの送出を中断して、前記同期メッセージを送出する、請求項3または請求項4に記載の同期メッセージ送出装置。
前記送出部は、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制する、請求項3または請求項4に記載の同期メッセージ送出装置。
前記送出部は、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、新たな同期メッセージ及び一般メッセージの送出を抑制し、前記一般メッセージの送出に要する時間として規定されている規定時間が経過した後、前記同期メッセージを送出する、請求項3または請求項4に記載の同期メッセージ送出装置。
前記送出部が前記同期メッセージを送出するモードとして、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、前記一般メッセージを送出中である場合は、当該一般メッセージの送出を中断して、前記同期メッセージを送出するモードと、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制するモードと、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、新たな同期メッセージ及び一般メッセージの送出を抑制し、前記一般メッセージの送出に要する時間として規定されている規定時間が経過した後、前記同期メッセージを送出するモードとのうち少なくとも2つのモードからいずれかの選択を受け付ける、請求項3または請求項4に記載の同期メッセージ送出装置。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本発明の一実施形態における時刻同期システムの装置構成を示す概略構成図である。同図において、時刻同期システム1は、グランドマスタークロック(Grandmaster Clock)装置100と、アンテナ200と、トランスペアレントクロック(Transparent Clock)装置300と、1つ以上のスレーブ(Slave)装置400とを備える。
【0021】
グランドマスタークロック装置100とトランスペアレントクロック装置300とは、ネットワーク810を介して接続されている。トランスペアレントクロック装置300とスレーブ装置400とも、ネットワーク810を介して接続されている。トランスペアレントクロック装置300とスレーブ装置400とが、ネットワーク810に加えてL2スイッチ820を介して接続されていてもよい。グランドマスタークロック装置100及びスレーブ装置400との関係では、トランスペアレントクロック装置300、L2スイッチ820及びネットワーク810が、グランドマスタークロック装置100とスレーブ装置400とを接続する通信経路800に含まれる。
また、アンテナ200は測位システム900から得られる測位情報を受信し、アンテナ200はグランドマスタークロック装置100に接続されている。
【0022】
ネットワーク810は、例えばEthernet(登録商標)による通信ネットワークなど、非同期の通信ネットワークである。
測位システム900は、衛星を用いた測位システム(Global Navigation Satellite System;GNSS、全地球航法衛星システム)である。測位システム900の例として、GPS(Global Positioning System)、QZSS(Quasi Zenith Satellite System)又はGLONASS(Global Navigation Satellite System)を上げることができるが、これに限らない。測位システム900は、測位の原理として高精度の時刻と衛星の航法情報を元に三角測量を行うシステムであり、地上に設置された数台のセシウム原子時計と時刻が一致するように、常に時刻情報の補正を行っている。時刻同期システム1では、測位システム900を時刻源として利用する。具体的には、時刻同期システム1は、測位システム900の人工衛星が送信する高精度の時刻情報を利用して時刻を検出する。
【0023】
アンテナ200は、測位システム900の衛星が送信する測位情報を受信し、得られた測位情報をグランドマスタークロック装置100へ出力する。
グランドマスタークロック装置100は、時刻同期システム1の中枢となる時刻同期源であり、アンテナ200を介して測位システム900から受信した測位情報に基づいて時刻を検出し、検出した時刻に基づいて、時刻同期パケットの形式による時刻情報を生成してスレーブ装置400の各々へ送信する。グランドマスタークロック装置100は、時刻同期対象であるスレーブ装置400の時刻を測位システム900の時刻に同期させることを目的として、時刻情報のスレーブ装置400への送信を行う。なお、送信を送出とも称する。グランドマスタークロック装置100は、同期メッセージ送出装置の例に該当する。
【0024】
トランスペアレントクロック装置300、L2スイッチ820は、いずれも、グランドマスタークロック装置100とスレーブ装置400との通信を中継する。
トランスペアレントクロック装置300は、グランドマスタークロック装置100からの時刻同期パケットを受信して送信先のスレーブ装置400へ送信する。その際、トランスペアレントクロック装置300は、送信時刻から受信時刻を減算してトランスペアレントクロック装置300内での遅延時間を算出し、算出した遅延時間を時刻同期パケット内に書き込む(打刻する)。当該時刻同期パケットを受信したスレーブ装置400では、時刻同期パケット内に書き込まれた遅延時間に基づく補正を行うことで、時刻同期に対するトランスペアレントクロック装置300における伝送時間の遅延(Delay)や揺らぎ(Jitter)の影響を低減させることができる。
一方、L2スイッチ820は、一般的な多ポートスイッチであり、時刻同期パケットの識別等の処理は行わない。時刻同期パケットがL2スイッチ820を通過するのに要する時間は、通信経路800における伝送時間の遅延や揺らぎの一因となる。
【0025】
スレーブ装置400は、時刻同期システム1における時刻同期対象の装置である。スレーブ装置400は、通信経路800を介してグランドマスタークロック装置100から受信した時刻同期パケットを用いて、スレーブ装置400内部の時刻をグランドマスタークロック装置100内部の時刻に同期させる処理を行う。ここでいう装置内部の時刻とは、当該装置が備えるクロックを時刻同期パケットにて補正したものである。
【0026】
図1に示す装置構成は、従来の時刻同期システムにおける装置構成と同様である。本実施形態において特別な装置を追加する必要は無く、後述するようにグランドマスタークロック装置100内部の構成が従来の時刻同期システムの場合と異なる。
また、時刻同期対象であるスレーブ装置400を識別するために、グランドマスタークロック装置100がスレーブ装置400にSMID(SYNC mesage ID)を付与する。SMIDは、スレーブ装置400毎に固有の値を有する整数の通し番号である。
但し、SMIDはスレーブ装置400内に保管されるものではなく、グランドマスタークロック装置100が、スレーブ装置400を識別するためにグランドマスタークロック装置100内部に記憶しておく。
【0027】
本実施形態では、グランドマスタークロック装置100に、最大500台のスレーブ装置400を登録可能である場合を例に説明する。グランドマスタークロック装置100は、500台のスレーブ装置400に対して0〜499のSMIDを付与する。
但し、グランドマスタークロック装置100に登録可能なスレーブ装置400の台数は500台以下に限らない。グランドマスタークロック装置100が、1000台のslaveに対し時刻同期を実施する場合は、500台の場合よりもSMIDビットを1ビット増やすことで、SMIDを容易にスケールアップすることができる。なお、一台のグランドマスタークロック装置100が大量のスレーブ装置400を時刻同期する場合、通信経路800構成が複雑になり、トランスペアレントクロック装置300など時刻同期をサポートしたスイッチ以外のL2スイッチ820が多段に挟まる可能性がある点について留意が必要である。
【0028】
なお、グランドマスタークロック装置100とスレーブ装置400との接続関係は、
図1に示すものに限らない。例えば、グランドマスタークロック装置100とスレーブ装置400とが1対1で接続されていてもよい。また、グランドマスタークロック装置100とスレーブ装置400とが、トランスペアレントクロック装置300やL2スイッチ820を介さずに、単にネットワーク810を介して接続されていてもよい。
【0029】
ここで、
図2〜4を参照して、IEEE1588v2時刻同期プロセスによるグランドマスタークロック装置における時刻同期パケットの送信間隔の揺らぎについて説明する。一般には、グランドマスタークロック装置はIEEE1588v2時刻同期プロセスに従って動作する。
図2は、IEEE1588v2時刻同期プロセスにおける階層構造を示す説明図である。同図において、グランドマスタークロック装置1100とスレーブ装置1400とが示されており、グランドマスタークロック装置1100とスレーブ装置1400とは通信経路1800で接続されている。
【0030】
また、グランドマスタークロック装置1100、スレーブ装置1400とも、5層の階層構造をなすプロトコルに従って動作する。5つの階層構造は下位から順に物理層(PHY層)、メディアアクセスコントローラ(Media Access Controller;MAC)層、インターネットプロトコル(Internet Protocol;IP)層、ユーザデータグラムプロトコル(User Datagram Protocol;UDP)層、プレシジョンタイムプロトコル(Precision Time Protocol;PTP)層である。メディアアクセスコントローラ層にはタイムスタンプユニット(Timestamp Unit;TSU)が含まれる。
【0031】
グランドマスタークロック装置1100は時刻同期源であり、スレーブ装置1400は時刻同期対象である。グランドマスタークロック装置1100、スレーブ装置1400ともに、時刻同期に必要なプロトコルであるPTP層は最上位層に位置し、通常はCPU(Central Processing Unit、中央処理装置)にて処理が行われる。時刻同期パケットに関しても、PTP層の処理において一定間隔でスケジュールされたタイミングにて下位層に伝達される。
【0032】
UDP層、IP層は、いずれもプロトコルスタック層であり、OS(Operating System)に実装される。PTP層にて生成される時刻同期パケットはUDPパケットであることから、通常、UDP層およびIP層を経由して更に下位層へと伝達される。
MAC層は、PTP層、UDP層およびIP層のプロトコルスタックによってカプセル化されたPTPパケットにMACアドレス情報の付与、FCS(Frame Check Sequence)演算処理等の処理を行い、また、物理層とのインタフェースとして機能する。また、MAC層に含まれるタイムスタンプユニットは、PTP層の重要な要素であるタイムスタンプを実施する。
【0033】
IEEE1588v2が他の時刻同期方式に対して優位な点として、MAC層にタイムスタンプユニットを有することが挙げられる。これにより、PTP層から発行されたPTPパケットは、タイムスタンプの打刻に関して、MAC層より上位のPTP層、UDP層及びIP層における遅延(Delay)や揺らぎ(Jitter)の影響を受けない。
一方、従来のグランドマスタークロック装置では、パケットの送信タイミングについて、PTP層、UDP層およびIP層における遅延(Delay)や揺らぎ(Jitter)の影響を受ける。この点について
図3を参照して説明する。
【0034】
図3は、従来のグランドマスタークロック装置の構成例を示す概略ブロック図である。
同図において、グランドマスタークロック装置1100は、GNSS同期型周波数発振器(GNSSDO)1110と、物理層チップ(PHY)1120と、メディアアクセスコントローラ(Media Access Controller;MAC)部1130と、水晶振動子1150と、メインメモリ1160と、CPU(Central Processing Unit、中央処理装置)1170とを備える。GNSS同期型周波数発振器1110は、GNSS受信機1111と、クロック調整器1112と、水晶振動子1113とを備える。MAC部1130は、受信タイムスタンプユニット(Receive Timestamp Unit;RTSU)1131と、受信FIFO(First-in First-out)1132と、送信FIFO1133と、送信タイムスタンプユニット(Transmit Timestamp Unit;TTSU)1137と、プレシジョンタイムカウンターユニット(Precision Time Counter Unit;PRTCU)1142とを備える。CPU1170は、ハードウェア(HW)アクセス部1171と、ドライバ1172と、OS(Operating System)カーネル1173と、GNSS管理デーモン(GNSSD)1174と、プロトコルスタック1175と、Delayreq送出処理部1176と、Sync送出処理部1177と、スケジューラ(Scheduler)1178とメモリコントローラ1181とを備える。
【0035】
CPU1170は、グランドマスタークロック装置1100が備える記憶デバイスからプログラムを読み出して実行することで、CPU1170内の各部を実現する。一方、GNSS同期型周波数発振器1110、物理層チップ1120、及びMAC部1130は、ハードウェアにて構成されている。
また、物理層チップ1120が物理層の処理を実行し、MAC部1130がMAC層の処理を実行し、CPU1170が、IP層、UDP層及びPTP層の処理を実行する。
【0036】
グランドマスタークロック装置1100は、測位システムからの測位情報を受信するためのアンテナ(ANT)1200と接続されている。具体的には、アンテナ1200は、同軸ケーブルにてGNSS同期型周波数発振器1110と接続されており、受信した測位情報から抽出した時刻情報をGNSS同期型周波数発振器1110へ出力する。
GNSS同期型周波数発振器1110は、アンテナ1200から得たGNSSの信号から、ToD(Time Of Day、年・月・日・時・分・秒の時刻情報)、1PPS(正確な毎一秒を通知するパルス信号)、及び、125メガヘルツ(MHz)周波数信号を取得してグランドマスタークロック装置1100内部に提供する。
【0037】
GNSS受信機1111はアンテナ1200にて受信するGNSS信号から時刻情報、及び、GNSSの航法情報を抽出する。そして、GNSS受信機1111は、GNSSの航法情報と、定期的にGNSSから送付される時刻情報とに基づいて、三角測量の原理で衛星の現在位置(衛星とグランドマスタークロック装置1100との相対位置)の特定を行う。現在位置が確定すると、GNSS受信機1111は、時刻情報の換算を実施する。
【0038】
GNSSに含まれる時刻情報は、地上に配置されたセシウム原子時計により定期的に補正されているためGNSS信号から得られた時刻情報は非常に正確な時刻を示す。GNSS信号から得られた時刻情報は、いわば、この世で唯一の絶対時刻に同期していると見做すことができる。時刻情報は同時に周波数と位相に関する情報であるため、クロック調整器1112は、毎秒のパルスの投入を受けて水晶振動子1113に対して補正をかける。これにより、クロック調整器1112は、水晶振動子1113の周波数が125メガヘルツに高精度に一致するように補正をかける。なお、本実施形態では125メガヘルツを基本周波数とする場合を例に説明しているが、10メガヘルツまたは25メガヘルツ等、基本周波数を予め決定した周波数に置き換えることが可能である。
【0039】
MAC部1130において、受信タイムスタンプユニット1131は、受信パケット(グランドマスタークロック装置1100が受信したパケット)に受信時刻を書き込む(受信タイムスタンプを打刻する)。
受信FIFO1132は、受信パケットを一時的に格納する。
送信FIFO1133は、送信パケット(グランドマスタークロック装置1100が送信するパケット)を一時的に格納する。
送信タイムスタンプユニット1137は、送信パケットに送信時刻を書き込む(送信タイムスタンプを打刻する)。
【0040】
水晶振動子1150は、水晶振動子1113よりも周波数精度が低い水晶振動子である。水晶振動子1150は、CPU1170の基準クロックとして用いられる。
メインメモリ1160は、グランドマスタークロック装置1100が備える記憶デバイスを用いて構成され、各種情報を記憶する。
【0041】
CPU1170において、ハードウェアアクセス部1171は、バスとドライバ1172とを接続し、ドライバ1172がハードウェアを制御する。バスは、一般にPCIバスまたはローカルバスにて提供される。
CPU1170は、ハードウェアアクセス部1171を経由してToDの取得及び送受信パケットのハンドリングを行う。送受信パケットのハンドリングにおいて、CPU1170は、送信パケットについては、OSカーネル1173から指示のあったメインメモリアドレスをメインメモリコントローラ1181に出力して、メインメモリ1160から送信パケット情報を読み込む。そして、CPU1170は、読み込んだ送信パケット情報をMAC部1130に出力する。CPU1170は、受信パケットについては送信パケットの場合と逆に、MAC部1130から受信したパケットを、メインメモリ1160の、OSカーネル1173が指示したメインメモリアドレスに蓄積する。
【0042】
ここで、送受信パケット処理ではDMA(ダイレクトメモリアクセス)を利用してCPU1170の演算ユニットを利用することなく、メインメモリ1160およびメインメモリコントローラ1181とMAC部1130とで直接実施する方式が主流である。
図3に示すグランドマスタークロック装置1100では、メモリコントローラ1181内にDMAが内蔵されており、このDMAを利用して送受信パケット処理を行う。
【0043】
OSカーネル1173は、Linux(登録商標)やUNIX(登録商標)、windowsなどオペレーティングシステムの中枢であり、各種プロセスの実行管理を行うスケジューラ1178の制御やメモリ空間の割り当てなどを行う。
GNSSD1174は、GNSS同期型周波数発振器1110を制御する制御デーモンであり、GNSSから得たToD情報を元に、MAC部1130のプレシジョンタイムカウンターユニット1142の秒粒度以上の時刻合わせ、および、GNSS同期型周波数発振器1110の状態監視を実施する。具体的には、GNSSD1174は、GNSS同期型周波数発振器1110が前回行った時刻合わせ(水晶振動子1113の発振の補正)に基づいて時刻合わせを行う。そして、GNSSD1174は、GNSS電波の受信状況などによりGNSS同期型周波数発振器1110内の水晶振動子1113が自走状態(Holdover)になったことなどの状態変化を管理し、各プロセスからの被参照処理を実施する。
【0044】
プロトコルスタック1175は、UDP、IPの各層の処理を実施する。プロトコルスタック1175は、OSカーネル1173と共にコンパイルされて実装されるか、あるいは、追加で導入することが可能である。ユーザがプロトコルスタック1175を実装する負担を軽減させるために、一般的には標準的なプロトコルが、OSカーネル1173と共にコンパイルされて実装されている。
【0045】
スケジューラ1178は、上記のような各種プロセスの実行管理を行う。
Sync送出処理部1177は、スレーブ装置1400とPTPプロトコルにて事前に取り決め(ネゴシエーション)を行った同期間隔(Sync間隔、Sync interval)を基に、スケジューラ1178に対し、送信対象となるスレーブ装置のID(以下、スレーブIDと称する)を登録する。スケジューラ1178は、一定の粒度(例えば500us)にてスレーブID領域(スレーブ装置のIDが登録された領域)を参照し、スレーブIDが存在すれば、Sync送出処理部1177にスレーブIDを伝達する。Sync送出処理部1177は、当該スレーブIDに関する同期メッセージ(Synchronous message(Sync message))を時刻同期パケットにて生成し、プロトコルスタック1175に対して付加情報と共に出力する。
【0046】
ここでスケジューラ1178の粒度が時刻同期システムに関して大きな問題となり得る。例えば、500usの粒度で同期メッセージを送出する時刻同期システムにおいて、1秒間に128個の同期メッセージを送出したい場合、正しい間隔は1/128=7,812マイクロ秒(μs)であり、500usの近傍である数値は8,000マイクロ秒又は7,500マイクロ秒となる。8,000マイクロ秒、7,500マイクロ秒のいずれも、正しい間隔である7,812マイクロ秒と差があり、この差によって揺らぎ(Jitter)が発生する。
【0047】
また、CPU1170が、GNSSから抽出された時刻と同期する高精度の水晶振動子1113と同期していないこともjitterや一方向へのdelayを発生させる要因となり得る。さらにCPU1170は様々なプロセスを実行しているため、スケジューラ1178が指定する時刻にSync送出処理(同期メッセージの送出処理)を開始できる保証が無い。さらにSync送出タイミング(同期メッセージの送出タイミング)が到来した際に、既に同期メッセージ以外の一般メッセージのパケットの送信処理を実施していた場合には、その送出処理終了を待つ必要が生じる。
ここで、一般メッセージは、例えば、CPU1170において送出処理を実施する、例えば管理メッセージや後述するdelayrespメッセージなど、同期メッセージ以外のメッセージを示す。
【0048】
Delayreq送出処理部1176は、グランドマスタークロック装置1100が、スレーブ装置からdelayreqメッセージ(delayreq message)を受信すると、受信時刻を記録し、記録した受信時刻をdelayrespメッセージ内に記録する。そして、Delayreq送出処理部1176は、IEEE1588v2規定のフォーマットにて、delayreqメッセージを送出したスレーブ装置に対してdelayrespメッセージ(delayresp message)を送出する処理を行う。このdelayrespメッセージは、スレーブ装置がネットワーク遅延時間を算出するのに用いられる。
【0049】
上記のように、CPU処理には多数の揺らぎ要因があり、正確なSync interval(同期メッセージの送出間隔)を保つのは困難である。一方、MAC部1130は、受信FIFO1132及び送信FIFO1133と、GNSSと同等の正確な時刻源であるプレシジョンタイムカウンターユニット1142とによって、受信タイムスタンプユニット1131および送信タイムスタンプユニット1137にてPTPパケットに対し正確な時刻を打刻する。
物理層チップ(PHY)1120は、ネットワークを介してスレーブ装置1400と通信を行う。
【0050】
図4は、従来のグランドマスタークロック装置が送出する同期メッセージにおける遅延および揺らぎの例を示す説明図である。同図において、横軸は時刻を表しており、図に向かって右側ほど後の時刻を示している。また、同図の縦には、同期メッセージ送出経路における各部を示している。
図4において、Sync送出処理部1177は、毎正秒(1PPS)等間隔で同期メッセージを送出するものとしてスレーブ装置1400とネゴシエーションしており、スケジューラ1178に対して1秒毎のタイミングで同期メッセージIDを書き込む。
なお、
図4では、同期メッセージの送出間隔が1PPSである場合の例を示しているため、
図3を参照して説明した粒度の問題については言及しない。
【0051】
スケジューラ1178は、CPUの基準クロックである低精度の水晶振動子1150にて動作するため、スケジューラ1178の動作は絶対時刻軸に対して揺らぎを有する。すなわち、水晶振動子1150によるクロックの誤差により、スケジューラ1178が示す同期メッセージの送出タイミングは、1秒間隔に対して誤差を含み得る。
次に、スケジューラ1178が同期メッセージの送出タイミングを検出すると、Sync送出処理部1177が送出タイミングとなった同期メッセージをメインメモリ1160へと書き込む。この際、メインメモリ1160への書込による遅延が生じる。また、同期メッセージの書込中に他のプロセスが同一のメインメモリに対してアクセスすると、揺らぎ(Jitter)が発生し得る。
【0052】
メインメモリ1160に格納された同期メッセージは、高精度の水晶振動子1113にて動作するMAC1130内のTTSU1137によって、グランドマスタークロック装置1100からの正確な送出時刻を打刻される。そして、送出時刻を打刻された同期メッセージは、グランドマスタークロック装置1100から送出される。
【0053】
ここで、ネットワーク遅延をΔdelayi(iは、正整数)と表記すると、スレーブ装置1400に到達するパケットの到着時刻は、図中に示した「Δdelay1+100ns」、「Δdelay2+300,500ns」、・・・のように分散する。特に、ネットワーク遅延の揺らぎが小さい場合、グランドマスタークロック装置1100内で発生した揺らぎ成分が、同期メッセージの到着間隔に大きな影響を及ぼす。
また、
図3を参照して説明した粒度の問題の問題が生じると、同期メッセージのスレーブ装置1400への到着間隔の精度がさらに低下する。
【0054】
図5は、本実施形態の時刻同期プロセスにおける階層構造を示す説明図である。同図において、グランドマスタークロック装置100とスレーブ装置400とが示されており、グランドマスタークロック装置100とスレーブ装置400とは通信経路800で接続されている。
【0055】
また、グランドマスタークロック装置100、スレーブ装置400とも、5層の階層構造をなすプロトコルに従って動作する。5つの階層構造は下位から順に物理層(PHY層)、メディアアクセスコントローラ(Media Access Controller;MAC)層、インターネットプロトコル(Internet Protocol;IP)層、ユーザデータグラムプロトコル(User Datagram Protocol;UDP)層、プレシジョンタイムプロトコル(Precision Time Protocol;PTP)層である。メディアアクセスコントローラ層にはタイムスタンプユニット(Timestamp Unit;TSU)が含まれる。
【0056】
グランドマスタークロック装置100は時刻同期源であり、スレーブ装置400は時刻同期対象である。スレーブ装置400は時刻同期に必要なプロトコルであるPTPを最上位層にてCPUを用いて処理する。
一方、グランドマスタークロック装置100は、同期メッセージの送出処理を、CPUからプロファイルで指定された間隔、及び、スレーブ装置400に関する情報などに基づいて、MAC層内のプロセスにて実行する。このように、グランドマスタークロック装置100は、同期メッセージの送出処理をCPUから分離して実行する。
【0057】
PTPはUDPパケットであることから、通常、OSに実装されたUDP、IPプロトコルスタックを経由して更に下位層へと伝達される。一方、同期メッセージに特化した場合、そのパケットのサイズ及びフィールド位置は全てのスレーブ装置400に対し一定であり、相手アドレスがスレーブ装置400毎に異なり、シーケンス番号やUDPチェックサム等が送信時に一意に決定するデータとなる。
【0058】
グランドマスタークロック装置100は、MAC層において、PTP、UDP及びIPの各プロトコルスタックが出力する情報をプロファイルとして記憶する。その際、MAC層では、グローバルプロファイル、SMIDプロファイル(同期メッセージプロファイル)、SMテーブル(同期メッセージテーブル)に分割して記憶する。後述するように、グローバルプロファイルは、全てのスレーブ装置400に対して一定のデータを纏めたものである。また、SMIDプロファイルは、スレーブ装置400毎に異なるデータを纏めたものである。SMIDテーブルは、送信時に一意に決定するデータ(同期メッセージ毎に値が異なるデータ)を纏めたものである。
そして、グランドマスタークロック装置100はMAC層において、GNSSを起源とする極めて高精度のクロックによってスケジュールされた時刻に同期メッセージを送出することで、CPU層での処理による送出タイミングの揺らぎを排除し、一定の遅延のみで同期メッセージ送出を実現する。
【0059】
図6は、本実施形態におけるグランドマスタークロック装置の構成例を示す概略ブロック図である。
同図において、グランドマスタークロック装置100は、GNSS同期型周波数発振器(GNSSDO)110と、物理層チップ(PHY)120と、メディアアクセスコントローラ(Media Access Controller;MAC)部130と、水晶振動子150と、メインメモリ160と、CPU(Central Processing Unit、中央処理装置)170とを備える。GNSS同期型周波数発振器110は、GNSS受信機111と、クロック調整器112と、水晶振動子113とを備える。MAC部130は、受信タイムスタンプユニット(Receive Timestamp Unit;RTSU)131と、受信FIFO(First-in First-out)132と、送信FIFO133と、Syncプロファイル記憶部134と、Sync生成部135と、Sync送出部136と、送信タイムスタンプユニット(Transmit Timestamp Unit;TTSU)137と、スケジューラ(Scheduler)141と、プレシジョンタイムカウンターユニット(Precision Time Counter Unit;PRTCU)142とを備える。なお、MAC部130の、より詳細な構成については後述する。
CPU170は、ハードウェア(HW)アクセス部171と、ドライバ172と、OS(Operating System)カーネル173と、GNSS管理デーモン(GNSSD)174と、プロトコルスタック175と、Delayreq送出処理部176と、Sync登録処理部177と、メモリコントローラ181とを備える。
【0060】
CPU170は、グランドマスタークロック装置100が備える記憶デバイスからプログラムを読み出して実行することで、CPU170内の各部を実現する。一方、GNSS同期型周波数発振器110、物理層チップ120、及びMAC部130は、ハードウェアにて構成されている。
また、物理層チップ120が物理層の処理を実行し、MAC部130がMAC層の処理を実行し、CPU170が、IP層、UDP層及びPTP層の処理を実行する。
【0061】
GNSS同期型周波数発振器110の構成及び機能は、
図3のGNSS同期型周波数発振器1110の構成及び機能と同様であり、説明を省略する。
MAC部130において、受信タイムスタンプユニット131、送信タイムスタンプユニット137の機能は、それぞれ
図3の受信タイムスタンプユニット1131、送信タイムスタンプユニット1137の機能と同様であり、説明を省略する。
また、水晶振動子150、メインメモリ160の機能も、それぞれ
図3の水晶振動子1150、メインメモリ1160の機能と同様であり、説明を省略する。
CPU170は、
図3のSync送出処理部1177及びスケジューラ1178に代えてSync登録処理部177を備える点以外は、
図3のCPU1170と同様である。なお、CPU170もOSのスケジューラ機能を実行するが、同期メッセージの送出において、当該機能を直接には使用しないので、
図6にはCPUのスケジューラを記載していない。CPU170は、一般メッセージ生成部の例に該当し、
図6のCPU1170と同様、一般メッセージを生成する。
【0062】
Sync登録処理部177は、スレーブ装置400とネゴシエーションを行った同期メッセージ間隔及び相手先アドレスなどを、ハードウェアアクセス部171を経由してMAC部130へと通知する。これにより、同期メッセージの送出に際してCPU170のスケジューラ機能を用いる必要が無くなる。このため、同期メッセージの送出において、低精度の水晶振動子150に起因する送出タイミングの揺らぎや、スケジューラ粒度に起因する送出タイミングの揺らぎが生じない。
またCPU170が、定期的な同期メッセージ送出処理から解放されることによりGNSSD処理,Delayreq送出処理など他処理に多くの時間を割くことが可能となり装置のパフォーマンス向上が期待できる。Delayreq送出処理部176の機能は、
図3のDelayreq送出処理部1176の機能と同様であり、説明を省略する。
【0063】
MAC部130は、Sync登録処理部177から指示を受け、Syncプロファイル記憶部134に、スレーブ装置400毎のSync特性を格納する。具体的には、MAC部130は、Sync interval(同期メッセージの送出間隔)、スレーブ装置400に至るアドレス情報、及び、同期メッセージを構成する各要素を取得し、Syncプロファイル記憶部134内の3つの要素に分解し格納する。3つの要素については後述する。
【0064】
MAC部130は、さらにスケジューラ141を有し、スケジューラ141は、後述するようにSMIDを有する。SMIDは、7,812,500ナノ秒をさらに500分割した15,625ナノ秒間隔でカウントアップする。
【0065】
スケジューラ141は、毎秒パルスである1PPS受信後はSMIDをカウントアップし、現時刻において送出すべき同期メッセージが存在するか否かをSMID_tabel内のnextIntervalとSYNCID counterとを比較することにより判定する。nextIntervalとSYNCID counterとが等しいと判定した場合、スケジューラ141は、sync送出パルス(Transmit pulse)をSync送出部136に対して出力する。
スケジューラ141は、スケジューラ部の例に該当する。
【0066】
Sync生成部135は、CPU170のSync登録処理部177が予め設定した、同期メッセージを構成する3つの要素をマージ処理して同期メッセージを生成し得られた同期メッセージをSync送出部136に提示する。Sync生成部135は同期メッセージ生成部の例に該当する。
Sync送出部136は、後述する3方式のいずれかにより、同期メッセージの送出を行う。Sync送出部136は、送出部の例に該当する。
【0067】
なお、同期メッセージの送信を行う部分はMAC部130に限らない。例えば、MAC部130とは別のFPGAにて同期メッセージの送信を行う部分を構成するようにしてもよい。この場合、下位側の層から順に物理層チップ、FPGA、MACという構成になり、FPGAでタイムスタンプの打刻を行う。
【0068】
図7は、本実施形態におけるグランドマスタークロック装置が送出する同期メッセージにおける遅延の例を示す説明図である。同図において、横軸は時刻を表しており、図に向かって右側ほど後の時刻を示している。また、同図の縦には、同期メッセージ送出経路における各部を示している。
図7において、Sync登録処理部177は、毎正秒(1PPS)等間隔で同期メッセージを送出するものとしてスレーブ装置400とネゴシエーションしており、MAC部130のSyncプロファイル記憶部134に、送信間隔、同期メッセージを構成する各要素を登録する。CPU170が同期メッセージの送出に関して行う処理は、Syncプロファイル記憶部134への登録処理に限定される。これにより、CPU170は、その他のPTP処理並びに装置管理に必要なプロセスの実行に専念することができる。
【0069】
1PPSでの同期メッセージの送出は、SYNCプロファイル記憶部134に登録され、しかも後述するSMID(Sync message ID)単位でプロファイルを管理する。MAC部130では、GNSSを起源とする高精度の水晶振動子113によって内部の論理回路が動作する。MAC部130は、SMIDを定期監視するとともに、送出すべきSMIDが存在する場合に同期メッセージを組み立て、送出を実施する。
【0070】
Sync送出部136は、後述する3つのルールのいずれかに基づいて同期メッセージの送出処理を行う。特に、後述する強制廃棄方式および送信時刻予約方式では、毎正秒に同期メッセージを送出することが可能となる。従ってグランドマスタークロック装置100における同期メッセージ送出タイミングの揺らぎ成分が無くなり、スレーブ装置400に対して通信経路における遅延成分や揺らぎ成分のみで同期メッセージを伝達することが可能になる。特に、通信経路における遅延成分Δdelayi(iは正整数)が一定である場合、同期メッセージが正確に一定間隔でスレーブ装置400に到達する。このように、CPUにおける揺らぎ成分を排除することで、スレーブ装置400における時刻精度の向上と時刻同期時間の短縮を図ることか可能となる。
【0071】
図8は、IEEE1588v2の同期メッセージのフォーマットを示す説明図である。同図では、横方向に32ビット(bit)、つまり4バイト(BYTE)を示しており、左端のビットから回線に送出される。
また、同図の下方向に向けては、32ビットの集合が連続したデータとして表しており、上の行のデータから下の行のデータへと順に、回線に送信される。
また、同図の左端に記載している1、5、9、・・・は、32ビットの集合の左端、すなわち、ネットワークに最初に送出されるバイト位置を示している。例えば、上から1行目の左端のビットは、1バイト目に含まれており、上から2行目の左端のビットは、5バイト目に含まれている。
【0072】
図8に示されるように、同期メッセージはFCS(Frame Check Sequence)を含まない場合で86バイトの固定長である。VLAN tagなどでその長さが変更になる可能性はあるが、グランドマスタークロック装置100内において固定長となる。
同期メッセージは複数のプロトコルにて構成される。
【0073】
Ether headerはEthernet(登録商標)を伝搬するすべてのパケットに付与される領域であり、宛先MACアドレスであるMAC−DA、送信元MACアドレス(グランドマスタークロック装置100のMACアドレス)であるMAC−SA、継続するプロトコル種別を示すEtherTypeで構成される。なお同期メッセージの場合はIPv4であるため、Ethertype=0x0800で固定である。
【0074】
IP headerはIPのバージョン番号(version、=4)、IPヘッダ長(length、=5)、サービス・タイプ(TOS)、データグラム長(data length、=72)、ID(ランダム値)、フラグフィールド(flag)およびフラグメントオフセット(fragment offset、=0x00)、TTL(=1)、プロトコル番号(protocol No、=17:UDP)、ヘッダチェックサム(header checksum、IPヘッダ部のチェックサム値、計算方式はRFC1071にて規定されている)で構成される。
【0075】
UDP headerは、送信元(グランドマスタークロック装置100)UDPポート番号(UDP-SP、=319:IEEE1588v2にて規定されている固定値)、相手先(スレーブ装置400)UDPポート番号(UDP-DP、=319:IEEE1588v2にて規定されている固定値)、UDPパケット長(UDP-length、=52)、UDPチェックサム(UDP-checksum、UDP疑似ヘッダ12byte+UDPヘッダ+UDPペイロード)の3つの部分の1の補数の和によって算出される値である。なおUDPチェックサムの値を0とすることで、相手先装置にてUDPチェックサム計算が無効化されチェックが実施されない。グランドマスタークロック装置の実装においてはタイムスタンプがリアルタイムに変化するため、UDPチェックサム領域を0とする実装が簡易であり多くグランドマスタークロック装置やソフトウェアベースのグランドマスタークロック装置に実装されている、しかしながらネットワーク上もしくは装置内の何らかの問題で時刻同期において最も重要なタイムスタンプの信頼度を損なうことは望ましくない。そこで、グランドマスタークロック装置100は、パケット毎にUDPチェックサムを演算し、UDPチェックサム領域内に格納する。
【0076】
PTP headerは、IEEE1588v2にて規定された時刻同期パケット用のヘッダフォーマットであり同期メッセージも含まれる。Transmitspecificは今後の拡張のためにグランドマスタークロック装置100の管理者が自由に設定可能な4ビット値である(default=1)。メッセージタイプ(MessageType)は同期メッセージである(=0)。versionPTPは本願ではPTPv2を前提としているため(=2)である。
【0077】
message lengthは、同期メッセージの場合(=44)固定である。domain Numberは、グランドマスタークロック装置が所属する時刻同期グループ=ドメインをグランドマスタークロック装置の管理者が設定する。FlagFieldはグランドマスタークロック装置の特性を設定するフィールドでありグランドマスタークロック装置の管理者が設定する。correction Fieldは、グランドマスタークロック装置では使用しない領域である。clockIdentityは、グランドマスタークロック装置を一意に示す識別子でありネットワーク上に複数のグランドマスタークロック装置が存在する場合等に有効な領域であるIEEE1588v2において、MACSAつまりネットワーク上に1個しか存在しないMACアドレスを3バイト毎に分割し、その間にFF−FFを挿入することで計8バイトとすることが規定されている。sourcePortIDはグランドマスタークロック装置の何番目のポートから出力されたメッセージであるかを示す領域である。sequenceIDは同期メッセージの送信に対しシーケンシャルに振られる番号であり、単一のスレーブ装置から見た場合、1ずつインクリメント(increment)するように見える。このIDにおいて同期メッセージの抜けを発見し何らかの対処をすることが可能となる。また経路によるIDの逆転など時刻同期を阻害する要因を削除することが可能となる。controlFieldは同期メッセージを表す(=0)。logMessagePeriodは、通常は0である。同期メッセージ payloadは同期メッセージの場合、originTimestampで構成される。originTimestampは、48ビットの秒領域と、32ビットのナノ秒領域で構成され、originTimestampは同期メッセージがグランドマスタークロック装置100から送出される際にGNSSを起源とする絶対時刻を打刻する領域である。以上のように同期メッセージが送付したい情報である時刻情報以外にも多数の情報を送付する必要がある。また、
図8では、生成する情報を4種類に分類している。第1は、同一のグランドマスタークロック装置から送信する全ての同期メッセージで同一の値になる領域である。第2は、同一のグランドマスタークロック装置から送付され、かつ、同一のスレーブ装置に送出する同期メッセージで同一の値となる領域である。第3は、同期メッセージ毎に異なる値を有する領域である。第4は、リザーブ領域であり将来の拡張用である。
【0078】
図9は、Syncプロファイル記憶部134(グローバルプロファイル記憶部134−1)が記憶するグローバルプロファイル(Gloval profile)のデータ構造の例を示す説明図である。
グローバルプロファイルは、
図8に示す各領域のうち、同一のグランドマスタークロック装置から送信する全ての同期メッセージで同一の値になる領域(第1の領域)のデータを纏めたものである。
【0079】
図9に示す48バイトは、リザーブ領域(RSVD)も含めて常に同一の値(各同期メッセージに共通の値)であり、Syncプロファイル記憶部134は、1つのグローバルプロファイルを記憶する。単一のメモリ領域で管理することは装置コストの面から有効な手段である。
例外は、ID(random value)領域であり、ID(random value)領域の値は毎パケット異なる。ID(random value)領域の値は文字通りランダムであり一意の値をGloval profile内に保持する必要は無い。ただし、
図9の例では、ランダム値を生成するseed値(初期値)を設定するなどの利用のために領域を確保している。なお、ID(random value)領域のランダム値生成方式として、公知のランダム値生成方式を用いることができる。
【0080】
図10は、Syncプロファイル記憶部134(SMIDプロファイル記憶部134−2)が記憶するSMIDプロファイル(SMID_profile)のデータ構造の例を示す説明図である。
SMIDプロファイルは、
図8に示す各領域のうち、同一のグランドマスタークロック装置から送出され、かつ、同一のスレーブ装置に送出される同期メッセージで同一の値となる領域(第2の領域)のデータを纏めたものである。なお、
図10に示すように、リザーブ領域(RSVD)を含んでいる。
Syncプロファイル記憶部134は、スレーブ装置400毎にSMIDプロファイルを記憶する。
図10に示すSMIDプロファイルは、28バイトで構成されている。500個のスレーブ装置400を時刻同期する場合、Syncプロファイル記憶部134は、28×500=14,000バイトの領域を用いてSMIDプロファイルを記憶する。
【0081】
図11は、Syncプロファイル記憶部134(SMIDテーブル記憶部134−3)が記憶するSMIDテーブル(SMID_table)のデータ構造の例を示す説明図である。
SMIDテーブルは、
図8に示す各領域のうち、同期メッセージ毎に異なる値を有する領域(第3の領域)のデータを纏めたものである。なお、
図11に示すように、リザーブ領域(RSVD)を含んでいる。
図11に示すSMIDテーブルは、8バイトで構成されている。500個のスレーブ装置400を時刻同期する場合、Syncプロファイル記憶部134は、8×500=4,000バイトの領域を用いてSMIDテーブルを記憶する。
【0082】
以上より、Syncプロファイル記憶部134がGloval profile、SMIDプロファイル、及びSMIDテーブルを記憶するのに必要な記憶容量は式(1)で求めることができる。
【0083】
48+14,000+4,000=18,048(バイト) ・・・ (1)
【0084】
約18キロバイト(k BYTE)の領域は昨今のメモリ技術においては極めて小さく、ASICやFPGA内に搭載するにあたって障害とならない。
【0085】
図12は、MAC部130の機能構成を示す概略ブロック図である。同図において、MAC部130は、受信タイムスタンプユニット(RTSU)131と、受信FIFO132と、送信FIFO133と、Syncプロファイル記憶部134と、Sync生成部135と、Sync送出部136と、送信タイムスタンプユニット(TTSU)137と、SYNCメッセージFIFO139と、スケジューラ141と、プレシジョンタイムカウンターユニット(PRTCU)142とを備える。Syncプロファイル記憶部134は、グローバルプロファイル記憶部134−1と、SIMDプロファイル記憶部134−2と、SMIDテーブル記憶部134−3とを備える。
【0086】
MAC部130は、GNSSを起源とする高精度の1PPS(秒パルス)および125メガヘルツのクロック信号を受信する。そして、MAC部130の内部の各プロセスは、125メガヘルツにて極めて正確なタイミングで動作を行う。またToDは日付および時刻情報である。
【0087】
プレシジョンタイムカウンターユニット142は、装置内時刻源であり、現在時刻の年月日時分秒の情報を48ビットで記憶するSec領域と、125メガヘルツの逆数である8ナノ秒を最小単位として秒未満の時刻情報を30ビットで記憶するNsec領域とを有する。プレシジョンタイムカウンターユニット142は、ToDを取得して秒情報を確定し、125MHzの逆数である8nsにてNsec領域をカウントアップする。また、プレシジョンタイムカウンターユニット142は、1PPSパルスにてNsecカウンターを0リセットし毎正秒にてNsecを微調整する機構を有する。プレシジョンタイムカウンターユニット142によって生成された秒情報、ナノ秒情報は受信タイムスタンプユニット(RTSU)131及び送信タイムスタンプユニット(TTSU)137に通知され同期メッセージ生成時にoriginalTimestamp領域に打刻される。
【0088】
Syncプロファイル記憶部134はDPRAM(デュアルポートRAM)にて構成されている。これにより、CPU170とMAC部130の各プロセスとが、非同期にSyncプロファイル領域134にアクセスすることによる待ち合わせを排除することができる。Syncプロファイル記憶部134は、
図9、
図10及び
図11にて前述したグローバルプロファイル、SMIDプロファイル<0〜499>およびSMIDテーブル<0〜499>を記憶するメモリ空間である。具体的には、グローバルプロファイル記憶部134−1は、グローバルプロファイルを記憶する。SMIDプロファイル記憶部134−2は、SMIDプロファイルを記憶する。SMIDテーブル記憶部134−3は、SMIDテーブルを記憶する。
Syncプロファイル記憶部134へのアクセスでは、CPU170が、アドレス(ADDR)およびデータ(DATA)を指定して各データの書込を行う。CPU170が書き込んだデータは、MAC部130の各プロセスからは固定値として扱われる。また、リード機能を利用することで現在の同期メッセージの送出状態を監視することが可能である。
【0089】
受信FIFO132は、物理層チップ120がネットワーク810から受信したPTPおよびPTP以外のパケットを記憶するメモリ空間である。受信FIFO132は、受信タイムスタンプユニット131から到達した受信データを、DataEnable(データ有りを示す信号)がアサート(assert)されている間FIFO形式で格納する。また、受信FIFO132はEmptyFlagを有し、データが存在する場合、EmptyFlagをネゲート(negate)する。これにより、有効な受信データが存在することをCPU170に伝達することができる。
【0090】
CPU170は、EmptyFlagを定期的に監視し(低精度の水晶振動子150を用いた)CPUクロックに同期して、受信DATAのCPU170への取込処理を行う。なお、CPU170が取得するデータは、PTP以外にも様々なものがあってもよい。
【0091】
送信FIFO133は、CPU170がMAC部130へ出力するパケットを保存するメモリ空間である。CPU170がMAC部130へ出力するパケットは、同期メッセージ以外のパケット(一般メッセージのパケット)である。CPU170は、FullFlagがネゲートされている場合に、送信DATAを送信FIFO133に対して出力する。一方、FullFlagがアサートされている場合、CPU170はパケット送出処理を行わず、送出すべきデータをメインメモリ等に保管する。送信FIFO133はまた、EmptyFlag、ReadPulse、送信DATAの各パスにてSync送出部136と接続される。
Sync送出部136は、同期メッセージが存在しない場合にはReadPulse(FIFOからデータを読み込むための信号)を出力し、送信DATAの読み込みを実行する。
【0092】
SYNCメッセージFIFO139は、同期メッセージのみが格納される領域でありSync生成部135が生成した同期メッセージを格納する。SYNCメッセージFIFO139が格納する同期メッセージは、常に1個以下である。また、SYNCメッセージFIFO139は、EmptyFlag、ReadPulse、送信DATAにてSync送出部136と接続される。SYNCメッセージFIFO139は、EmptyFlag(データ無しを示す信号)がアサートされた際にSync送出部136のルールに従っていずれかの時刻タイミング後にReadPulseに従って送信DATAを送出する。
【0093】
スケジューラ141は、1秒/128でカウントアップするSYNCIDを備える。SYNCIDは、同期メッセージ送出におけるSyncIntervalと対応する。
また、スケジューラ141は、SYNCIDの1サイクルをさらに500に分割したタイミングでカウントアップするカウンターであるSMIDを備える。
【0094】
また、スケジューラ141は、SMIDの値を、SMIDテーブルのアドレス及びSMIDプロファイルのアドレスへと変換し、アドレス情報をSyncプロファイルに設定する。スケジューラ141は、アドレスが決定したSMIDテーブルから、nextInterval情報、syncIntervalおよびsequenceIDを読み出す。nextIntervalがSYNCIDと一致した場合、スケジューラ141は、同期メッセージを送出するタイミングであると判定し、TransmitPulseをSync生成部135およびSync送出部136に対して出力する。また、nextIntervalがSYNCIDと一致した場合、スケジューラ141は、nextIntervalの値とsequenceIDの値とを更新する。具体的には、スケジューラ141は、nextIntervalの値を、syncIntervalの値から算出した次回の送出タイミングに更新する。また、スケジューラ141は、sequenceIDに1をインクリメントした数値をSMIDテーブルに対して書き込む。
【0095】
ここで、nextIntervalは、スレーブ装置400毎に設定されている同期メッセージ送出間隔に対応するための情報である。同期メッセージ送出間隔が128PPSに設定されているスレーブ装置400に対しては、グランドマスタークロック装置100は、SyncIDが1インクリメントする間隔と同じ間隔で同期メッセージを送出すればよい。一方、同期メッセージ送出間隔が64PPSに設定されているスレーブ装置400に対しては、グランドマスタークロック装置100は、SyncIDが2インクリメントする間隔と同じ間隔で同期メッセージを送出する必要がある。
【0096】
そこで、スケジューラ141はスレーブ装置400毎にSyncプロファイル記憶部134に格納しているnextIntervalとSMIDとを比較する。nextIntervalの値とSMIDの値とが同じであると判定した場合、スケジューラ141は、同期メッセージを送出するタイミングが到来したと判定する。
さらに、スケジューラ141は、スレーブ装置400毎にSyncプロファイル記憶部134に格納しているsyncIntervalから次回の送出タイミングを算出しnextIntervalに書き込む。128PPSが規格上の最小間隔であるため、算出式を128÷SyncIntervalとし、現在のnextInterval値に上記算出結果を加算することとする。
例えば、同期メッセージ送出間隔が64PPSに設定されているスレーブ装置400の場合、128÷64=2となり、nextIntervalに記憶されていた値に2を加算しnextInterval領域への書き込み(更新)を行う。
また、同期メッセージ送出間隔が32PPSに設定されているスレーブ装置400の場合、128÷32=4となり、nextIntervalに記憶されていた値に4を加算しnextInterval領域への書き込み(更新)を行う。
【0097】
Sync生成部135は、スケジューラ141からのTransmit pulseを受信すると、SMIDテーブルおよびSMIDプロファイルからデータを読み出す。なお、アドレスについては既にスケジューラ141にて決定しているため、読み出す必要は無い。また、Sync生成部135は、全ての同期メッセージに共通のグローバルプロファイルを読み出し、
図8にて示した同期メッセージを組み立てる。組み立て処理は単純なフィールドの移動のみで完了する。またID領域に関してはランダムの値が期待されるので、Sync生成部135は、ランダム値ジェネレータにてランダム値を挿入する。Sync生成部135が用いるランダム値ジェネレータは、ランダム値を生成可能なものであればよく、公知のランダム値ジェネレータを用いることができる。
Sync生成部135は、同期メッセージの組み立てが完了すると、直ちに当該同期メッセージをSYNCメッセージFIFO139へ出力する。
【0098】
Sync送出部136は、同期メッセージ送信ルール(Sync transmit rule)をCPU170から設定可能なレジスタ領域を有する。当該レジスタにて、(1)強制廃棄方式(Discard)、(2)高優先送出方式(H.Priority)、(3)送信時刻予約方式(Reserved)の3種の送出方式のいずれかを設定可能である。同期メッセージ送信ルールの設定は、例えば、グランドマスタークロック装置100の管理者が、グランドマスタークロック装置100を適用するネットワークの特性を考慮して行う。
【0099】
(1)強制廃棄方式では、同期メッセージの送出タイミングが到来すると、現在送信中の全ての同期メッセージ以外のパケット(一般メッセージのパケット。以後、CPUパケットと称する)の送出を中断して同期メッセージを送出する方式である。送出を中断したパケットについては、当該パケットの終了まで廃棄処理を行う。
相手装置はエラーを検知するが上位層による再送が期待できる場合に、特に有効な方式である。
(2)高優先送出方式では、同期メッセージの送出タイミングが到来すると、現在送信中のCPUパケットが完了するのを待ち、次回の送出では必ず同期メッセージを送出する。仮にCPUパケットが連続して発行されている場合においても最優先で同期メッセージを送信する。
(3)送信時刻予約方式では、CPUパケットの最大値がEthernet(登録商標)の規定で1518バイトと決まっていることに着目して、同期メッセージの送出タイミングから1518バイト分前(実際にはIFGやFCSが存在するため1542オクテット(octet)時間前)の時刻になると、新たなCPUパケットの送出を抑制する。これにより、1542オクテット経過後に、確実に同期メッセージを送出することができる。なお、1542オクテットは、一般メッセージの送出に要する時間として規定されている規定時間の例に該当する。また、CPUパケットは、同期メッセージ及び一般メッセージの例に該当する。
送信時刻予約方式では、1542オクテット時間が経由した時点で同期メッセージの送出を開始することで、メッセージの送出間隔は常に一定となる。時刻同期においては、メッセージの到着速度は問題ではなく、メッセージの間隔ならびにメッセージ内のタイムスタンプの正確度が重要であるため、送信時刻予約方式が有効である。また、送信時刻予約方式では同期メッセージが存在する場合にのみCPUパケットの送出を停止するため、スレーブ装置400の台数が少ない場合など、同期メッセージの送出間隔(Sync interval)が長い場合でも、CPUメッセージを効率的に送出することができる。
なお、ここでは一般メッセージの送出に要する最長時間を規定時間としているが、これに限らず、規定時間は一般メッセージの送出に要する時間であればよい。この場合でも、同期メッセージの送出間隔は一定となる。
【0100】
受信タイムスタンプユニット131は、受信した時刻同期パケットに対し、プレシジョンタイムカウンターユニット142から得た時刻情報を打刻する処理を行う。
送信タイムスタンプユニット137は、送信する時刻同期パケットに対し、プレシジョンタイムカウンターユニット142から得た時刻情報を打刻する処理を行う。
受信タイムスタンプユニット131、送信タイムスタンプユニット137共に、時刻同期パケットを認識して時刻情報を打刻する。同期メッセージも時刻同期パケットであることから、送信タイムスタンプユニット137は、同期メッセージにも正確な時刻情報を打刻する。
【0101】
物理層チップ120は、ネットワーク810の物理インタフェースと、MAC部130の物理インタフェースとの変換処理を行う。
【0102】
図13は、同期メッセージのデータ構造の例を示す説明図である。同図に向かって左がMSBであり、ネットワーク810に対して最初に送信されるデータである。Ethernet(登録商標)の規定でインターフレームギャップ(IFG)は最低12オクテット必要である。インターフレームギャップは、フレーム間を分離するために設けられている。
preamble+FSDは7オクテットのpreambleと1オクテットのFSD(フレームスタートデリミタ)にて構成されている。preamble+FSDは、それ以後、Etherパケットのペイロードがスタートすることを示すフラグ領域である。
【0103】
IEEE1588v2同期メッセージ(Sync messasge)は、IEEE1588v2にて規定されたフォーマットの同期メッセージが格納される領域である。IEEE1588v2同期メッセージは、
図8で示した複数の要素によって構成され、時刻情報をグランドマスタークロック装置100からスレーブ装置400に対して伝達する。IEEE1588v2同期メッセージのサイズは固定長であり、UDPで同期メッセージを構成す場合は86バイトである。
【0104】
FCSはフレームチェックシーケンスであり、Etherパケットのデータ領域から一意に算出されるチェックサム領域である。FCSは、伝送路上で何らかの障害が発生し、パケットのデータ領域を信頼できない場合に、当該パケットを破棄できるように設けられている。また、FCSは回線の品質を示す指標として用いられることもある。
【0105】
同期メッセージの要素を全て合わせると110オクテットのサイズとなる。また1オクテットは8ビットにて構成されるため、110オクテットは880ビットとなる。ここで880ビットがどの程度帯域に対する影響を及ぼすかを換算するために、10ギガビット毎秒(Gbps)、1ギガビット毎秒それぞれの回線レートで送信した場合のパケット占有時間を算出すると、10ギガビット毎秒の場合は88ナノ秒、1ギガビット毎秒の場合は880ナノ秒となる。ここで、同期メッセージは秒間最大128回発行可能であることがITU−T G.8265で規定されており、1秒/128回=7,812,500ナノ秒の間隔となる。従って、単一のスレーブ装置400に対して時刻同期を行う場合、10ギガビット毎秒、1ギガビット毎秒のいずれの回線レートにおいても問題なく同期メッセージを送出可能である。
【0106】
図14は、複数のスレーブ装置400が存在するネットワークにおける同期メッセージの送出間隔の例を示す説明図である。同図では、同期メッセージの送信間隔のワーストケースを示している。具体的には、最もネットワーク帯域がひっ迫する場合の例を示している。上記のように、各同期メッセージは、最短で7,812,500ナノ秒の間隔となる。
図14では、この同期メッセージを500個のスレーブ装置400に対して送出するケースを示している。
【0107】
7,812,500ナノ秒をさらにスレーブ装置400の数である500に分割する。1つのスレーブ装置400に割り当て可能な同期メッセージの送信間隔は、7,812,500ナノ秒÷500=15,625ナノ秒である。この15,625ナノ秒を同期メッセージに関する最小時間間隔として定義する。
図13を参照して説明したパケット占有時間のうち、回線速度が最も低速であり1つの同期メッセージの送信時間が最長となる1ギガビット毎秒においても、15,625ナノ秒>880ナノ秒となる。従って、同期メッセージに着目した場合、帯域を確保可能である。ただし、同期メッセージ以外の通信量に応じて、グランドマスタークロック装置100が一度に制御するスレーブ装置400の数×各スレーブ装置400のSYNC intervalの積を適切な値に配分することが必要である。なお、SYNC intervalは、スレーブ装置400毎に設定可能である。
【0108】
図14では、1秒の最初に1番目のSyncスロットにSyncID0を割り当て、最大127までSyncIDがカウントアップする。SyncIDは、127となった後0になる。また同期メッセージを送出するタイミングを生成するためにSMIDを導入し、各SMIDと対応付けて、スレーブ装置400に関する情報を格納するエリアを設ける。
SMIDは0〜499の正整数の値をとり、15,625ナノ秒でカウントアップする構成とする。なお、同一のスレーブ装置400に対する同期メッセージ情報には、必ず同一のSMIDを対応付ける必要がある。どのSMIDを利用するかは例えば、グランドマスタークロック装置100の管理者が決定する。同期メッセージ間隔を一定にするために1つのスレーブ装置400に対応するSMIDは一意である必要がある。
なお、SyncIDは、第1カウンターの例に該当する。SMIDは、第2カウンターの例に該当する。
【0109】
図15は、SMIDテーブルのデータ構造の例を示す説明図である。
SMIDテーブルはSMIDを登録する11ビットの領域と、同期メッセージの送信間隔であるSyncInterval領域と、当該SMIDに該当する同期メッセージを送出した際に次回の送出タイミングを決定するためのNextIntervalと、1ずつデータがインクリメントされるsequenceIDとを含んで構成される。NextIntervalは、128÷SyncIntervalによって決定される値であり同期メッセージの送出後にアップデートされる。sequenceIDは読み込んだ値に1インクリメントして書き込まれるだけである。スレーブ装置400では、このsequenceIDを用いてSYNC messgeの抜けや順序逆転が生じていないことを確認するために利用する。
【0110】
図16は、スケジューラ141の動作の例を示す説明図である。スケジューラ141はハードウェアで構成されており、
図16のステップS101〜S110の処理と、ステップS120〜S130の処理とを並列に実行する。
プレシジョンタイムカウンターユニット142からの毎秒パルスを取得すると、スケジューラ141は、ステップS101を実行する。ステップS101では、スケジューラ141は、SyncID、SMID、SMID.counterの3つのカウンターの0クリアを実行する。SMID.counterは、SMIDを1インクリメントするタイミングを検出するためのカウンターである。
【0111】
ステップS102では、スケジューラ141は、同期メッセージを送信するタイミングが到来したか否かを判定する。具体的には、スケジューラ141は、SMID.counterの値が、SMIDの時刻境界である15,625ナノ秒か否かを判定する。SMID.counterの値が時刻境界であることは、同期メッセージを送信するタイミングであることを示している。
時刻境界であると判定した場合(ステップS102:YES)、ステップS103にて、スケジューラ141は、SMIDを1インクリメントする。これにより、次のSMIDの処理へと移行する。
ステップS104では、スケジューラ141は、SMID.counterを0クリアし、ステップS120での処理のためにSMIDpulseを発生させる。このSMIDpulseは同期メッセージを送出する最小周期(128PPS)が経過したことを示している。ステップS104の後、ステップS105へ遷移する。
【0112】
一方、ステップS102において、SMID.counterが15,625ナノ秒に達していないと判定した場合(ステップS102:NO)、スケジューラ141は、ステップS110にて、SMID.counterを1インクリメントし、ステップS102へ遷移する。
ステップS105では、スケジューラ141は、SMIDがその最大値である499に達したか否かを判定する。
【0113】
SMIDが499に達していないと判定した場合(ステップS105:NO)、まだ未処理のSMIDが存在するためステップS102へ遷移する。
一方、SMIDが499に達していると判定した場合(ステップS105:YES)、全てのSMID処理を完了したことを意味するので、スケジューラ141は、ステップS106にて、SMID=0つまり初期値に設定する。
【0114】
ステップS107では、スケジューラ141は、SyncIDを1インクリメントする。これにより、次のSyncIDの処理へ進む。
ステップS108では、スケジューラ141は、全てのSyncID処理が完了したか否かを判定する。具体的には、スケジューラ141は、SyncIDが127か否かを判定する。
SyncIDが127であると判定した場合(ステップS108:YES)、ステップS109にて、スケジューラ141は、SyncID=0とする。ステップS109の後、ステップS102へ遷移する。
一方、ステップS108において、SyncIDが127以外であると判定した場合(ステップS108:No)、処理すべきSyncIDが存在するため、ステップS102へ遷移する。
【0115】
ステップS120では、スケジューラ141は、SMIDpulseが発生しているか、つまり同期メッセージ送出タイミングが到来しているか否かを判定する。
同期メッセージ送出タイミングが到来していると判定した場合(ステップS120:YES)、ステップS121へ遷移する。
ステップS121では、スケジューラ141は、DPRAMのアドレスを、該SMIDが格納されている先頭アドレスへと変換する。
【0116】
ステップS122では、スケジューラ141は、先頭アドレスが確定したオフセット値を元にNextIntervalを取得する。
ステップS123では、スケジューラ141は、ステップS122で取得したNextIntervalとSyncIDとが同じか否かを判定する。同じではないと判定した場合(ステップS123:No)、ステップS120へ遷移する。これにより、SMIDpulse待ち状態になる。
【0117】
一方、SyncIDとNextIntervalとが同じであると判定した場合(ステップS123:Yes)、同期メッセージを送出するタイミングであり、ステップS124へ遷移する。
ステップS124では、スケジューラ141は、SMIDテーブルよりSyncIntervalを読み込む。
ステップS125では、スケジューラ141は、現在のNextIntervalを更新するために128÷SyncIntervalを演算する。
【0118】
ステップS126では、スケジューラ141は、NextIntervalに128÷SyncIntervalを加算した値をSMIDテーブルに書き込む。なお、加算の結果、NextIntervalの値が127よりも大きくなった場合は、当該値から128を減算した値を、SMIDテーブルに書き込む。
ステップS127では、スケジューラ141は、SMIDテーブルからsequenceIDを読み込む。
sequenceIDは1ずつインクリメントされることがIEEE1588v2にて規定されているため、ステップS128では、スケジューラ141は、sequenceIDのインクリメント処理を行う。
【0119】
ステップS129では、スケジューラ141は、sequenceIDをSMIDテーブルへ書き戻す。
以上で一連の同期メッセージに関する処理が完了したので、ステップS130において、スケジューラ141は、同期メッセージ送信PulseをSync生成部に送信し、ステップS120へ遷移する。
【0120】
図17は、同期メッセージ送出時のデータの流れの例を示す説明図である。
同図において、送信FIFO133は、グランドマスタークロック装置100からの全ての送信パケットのうち同期メッセージ以外のパケット(CPUパケット)が一時格納されるFIFOメモリである。
各パケットでは、パケット情報に加えてSOF(スタートオブフレーム)、EOF(エンドオブフレーム)を前後に付けることでパケット間の切れ目を明確にしている。
TFIFO.EmptyFlagは送信FIFO133が空の状態を通知するフラグである。
【0121】
TFIFO.ReadPulseは、FIFOのリード側のビット幅(以後1ライン)を読み込むための1クロック(CLK)のパルス信号である。連続してデータを送出する場合は、TFIFO.ReadPulseを連続してアサートする場合もある。
TFIFO.DATAは、TFIFO.ReadPulseのパルス信号の1サイクル後に出力される、EOF、SOFもしくは同期メッセージ以外のパケットデータである。
【0122】
SYNCメッセージFIFO139は、同期メッセージが格納される領域である。具体的には、SYNC生成部135が生成した同期メッセージが、SYNCメッセージFIFO139に格納される。
SFIFO.EmptyFlagは、同期メッセージの有無を示すフラグである。
SFIFO.ReadPulseは、TFIFO.ReadPulseと同一の動作をSYNCメッセージFIFOに対して行うリードパルスである。
【0123】
SFIFO.DATAはリードパルスの1サイクル後に出力される、同期メッセージを構成する1ラインのデータである。
Sync送出部136は、(1)強制廃棄方式、(2)高優先送出方式、(3)送信時刻予約方式のいずれかを選択するSync Transmit rule ID領域を有する。そして、SYNC送出部136は、Sync Transmit rule ID領域に設定されているルールに従って送信FIFO133もしくはSYNCメッセージFIFO139の何れかからパケットデータを読み出す。そして、Sync送出部136は、送信データと、送信データが有効であることを示すDataEnableとを、後段の処理ブロックである送信タイムスタンプユニット137へ出力する。
【0124】
図18は、強制廃棄方式の場合にSync送出部136が行う動作の例を示す説明図である。
ステップS201では、Sync送出部136は、カウンター等のリセットを行い、OSからのSYNC送信開始信号を待ち受ける。
次に、ステップS202へ遷移し、SYNC送出部136は、DataEnable=0を設定する。以上が前処理である。
【0125】
ステップS203では、SYNC送出部136は、SFIFO.EmptyFlagを参照して同期メッセージの有無を判定する。同期メッセージが存在すると判定した場合(ステップS203:Not Empty)、ステップS204へ遷移し、と進み、送信データとして、同期メッセージであるSFIFO.DATAを選択する。
S205にて、SYNC送出部136は、DataEnable=1を設定する。
その後、ステップS203へと進み、同期メッセージの送出完了まで送出処理を継続する。
【0126】
一方、ステップS203において同期メッセージが存在しないと判定した場合(ステップS203:Empty)、ステップS210へと進み、TFIFO.EmptyFlagを参照して送信FIFO133が空か否かを判定する。
送信FIFO133が空であると判定した場合(ステップS210:Empty)、ステップS202へ遷移する。
【0127】
一方、送信FIFO133が空でないと判定した場合(ステップS210:Not Empty)、ステップS211へ遷移し、SYNC送出部136は、送信データ=TFIFO.DATAとする。
ステップS212では、SYNC送出部136は、DATAEnable=1とし同期メッセージ以外のパケット送信処理(すなわち、CPUパケットの送信処理)を実行する。
【0128】
ステップS213では、SYNC送出部136は、SFIFO.EmptyFlagを参照して同期メッセージの有無を判定する。
同期メッセージが存在しないと判定した場合(ステップS213:Empty)、SYNC送出部136は、同期メッセージ以外のパケット送出処理を継続する。
一方、同期メッセージが存在すると判定した場合(ステップS213:Not Empty)、ステップS204とステップS213とに処理を分岐する。なお、ステップS204以降の処理とステップS213以降の処理をと同時並行処理にて実行する。
【0129】
ステップS214において、SYNC送出部136は、送信FIFO133のデータを廃棄する(TFIFO.DATA=廃棄)。
ステップS215において、SYNC送出部136は、送信FIFO133からのデータリードは継続処理する。
ステップS216において、SYNC送出部136は、送信FIFO133から読み出したデータがEOF(TFIFO.DATA=EOF)か否かを判定する。
【0130】
EOFであったと判定した場合(ステップS216:EOF)、ステップS203へ遷移する。
一方、EOF以外であったと判定した場合(ステップS216:Not EOF)、ステップS214へ遷移する。この場合、送信FIFO133から1パケットのデータを読み出すまで(EOFまで)、ステップS214〜S216のループにて廃棄処理を継続する。
【0131】
図19は、高優先送出方式の場合にSync送出部136が行う動作の例を示す説明図である。
ステップS301では、Sync送出部136は、カウンター等のリセットを行い、OSからのSYNC送信開始信号を待ち受ける。
ステップS302では、SYNC送出部136は、DataEnable=0とする。
【0132】
ステップS303では、SYNC送出部136は、SFIFO.EmptyFlagを参照して同期メッセージが存在するか否かを判定する。同期メッセージが存在すると判定した場合(ステップS303:Not Empty)、ステップS304〜S305にて同期メッセージの送信を実施する。
一方、ステップS303において同期メッセージが存在しないと判定した場合(ステップS303:Empty)、ステップS310へ遷移する。
【0133】
ステップS310では、SYNC送出部136は、TFIFO.EmptyFlagを参照して送信FIFO133にデータ(同期メッセージ)が存在するか否かを判定する。送信FIFO133が空である(同期メッセージが存在しない)と判定した場合(ステップS310:Empty)、ステップS303へと移行する。
一方、送信FIFO133にデータが存在すると判定した場合(ステップS310:Not Empty)、ステップS311、S312及びS313にて一般メッセージを送出処理する。
【0134】
ステップS313では、SYNC送出部136は、TFIFO.DATAを参照してEOFか否かを判定する。EOFであると判定した場合(ステップS313:EOF)、ステップS302へ遷移する。
一方、EOF以外であると判定した場合(ステップS313:Not EOF)、ステップS310へ遷移する。
【0135】
図20は、送信時刻予約方式の場合にSync送出部136が行う動作の例を示す説明図である。
送信時刻予約方式では、同期メッセージを、IPv4の最大パケットサイズである1542オクテット時間待ちの後に送出開始する。同期メッセージが存在するwait状態ではWaitFlag=1となる。WaitFlagは、通常パケット(CPUパケット)の送出開始時にのみ評価が実施され、WaitFlag=1の場合は、通常パケットは送信抑制状態となる。一方、通常パケットの送信中にはWaitFlagの評価は行われない。また、送信時刻予約方式では、同期メッセージの状態監視と、WaitFlagの操作とを行う第1のルーチンと、通常パケットの送信開始時にWaitFlag=0であれば送出を開始する第2のルーチンとが同時に実行される。
【0136】
図20の処理において、ステップS401、ステップS420のそれぞれでは、Sync送出部136は、カウンター等のリセットを行い、OSからのSYNC送信開始信号を待ち受ける。なお、ステップS401のSTART1ステートと、ステップS420のSTART2ステートは同時に開始されるものとする。
【0137】
ステップS402では、SYNC送出部136は、DataEnable=0とする。
ステップS403では、SYNC送出部136は、WaitFlag=0とする。
ステップS404では、SYNC送出部136は、SFIFO.EmptyFlagを参照し、同期メッセージが存在するか否かを判定する。
同期メッセージが存在すると判定した場合(ステップS404:Not Empty)、ステップS405へ遷移する。
【0138】
一方、同期メッセージが存在しない(SYNCメッセージFIFO139が空である)と判定した場合(ステップS404:Empty)、ステップS404へ遷移する。すなわち、ステップS404を再評価するループ処理を実行する。
【0139】
ステップS405では、SYNC送出部136は、SendWait=1542を代入し、処理をステップS406へと進める。
ステップS406では、SYNC送出部136は、WaitFlag=1をセットし処理をステップS407へと進める。
ステップS407では、SYNC送出部136は、SendWaitを1減算する。
ステップS408では、SYNC送出部136は、SendWaitが0か否かを判定する。SendWaitが0でないと判定した場合(ステップS408:No)、ステップS407へ遷移する。この場合、SendWait=0となるまでステップS407〜S408のループ処理を実行する。
【0140】
ステップS408においてSendWait=0となったと判定した場合(ステップS408:Yes)、ステップS409へ遷移する。
ステップS409では、SYNC送出部136は、送信データとして同期メッセージを選択する(送信データ=SFIFO.DATA)。
ステップS410では、SYNC送出部136は、DataEnable=1とする。
【0141】
ステップS411では、SYNC送出部136は、SFIFO.EmptyFlagを参照して送信FIFO133が空か否かを判定する。
送信FIFO133が空であると判定した場合(ステップS411:Empty)、ステップS402遷移する。
一方、送信FIFO133が空でない(同期メッセージが存在する)と判定した場合(ステップS411:Not Empty)、ステップS408へと遷移する。この場合、同期メッセージの送信を継続する。
【0142】
ステップS421では、SYNC送出部136は、TFIFO.EmptyFlagを参照して送信FIFO133が空か否かを判定する。
送信FIFO133が空であると判定した場合(ステップS421:Empty)、ステップS421へ遷移する。すなわち、ステップS421を再評価するループ処理を実行する。
【0143】
一方、送信FIFO133が空でないと判定した場合(ステップS421:Not Empty)、すなわち一般メッセージが存在すると判定した場合は、ステップS422へ遷移する。
ステップS422では、SYNC送出部136は、WaitFlagが0か否かを判定する。WaitFlagが0でない(WaitFlag=1)と判定した場合(ステップs422:No)、すなわち同期メッセージの送出待ち時間となっている場合、ステップS421へ遷移する。
WaitFlag=0であると判定した場合(ステップS422:Yes)、すなわち同期メッセージの送出待ち時間ではないと判定した場合、ステップS423へと進む。
ステップS423において、SYNC送出部136は、送信データとして、一般メッセージであるTFIFO.DATAを選択する。
ステップS424において、DataEnable=1とする。
その後、ステップS425において、SYNC送出部136は、TFIFO.DATA=EOFか否かを判定する。
EOFであると判定した場合(ステップS425:EOF)、ステップS426へ遷移する。一方、EOF以外であると判定した場合(ステップS425:Not EOF)、ステップS423へ遷移する。この場合、CPUパケット(同期メッセージ以外のパケット)の送出を継続する。
ステップS426では、SYNC送出部136は、DataEnable=0をセットし、ステップS421へ遷移する。
【0144】
図21は、送信時刻予約方式にて送信待ち受けがどの程度発生するかを示す説明図である。
同図に示すパケットの構成要素は
図13の場合と同様であり、説明を省略する。
図21において、SMIDslot長とは、秒間128発の同期メッセージを500台のslaveに送信することを想定した場合に、1つの同期メッセージに割り当てることが可能な時間間隔である。SMIDslot長=15,625nsは、同期メッセージ送信間隔の最小値が15,625ナノ秒であることを表す。
また1542オクテットのパケットはIPv4の最大パケット長を有するパケットを示している。1542オクテットは、12336ビットであり、回線速度が10Gbpsの場合、送信に要する時間は1234ナノ秒である。また、回線速度が10Gbpsの場合、当該パケットの送信に要する時間は12336ナノ秒である。いずれも、15625ナノ秒よりも短く、同期メッセージ送信間隔にて送信可能である。
【0145】
以上のように、同期メッセージを生成するSync生成部135が、一般メッセージを生成するCPU170よりも下位層に設けられている。
これにより、Sync生成部135は、CPU170が行う処理による時間の揺らぎの影響を受けずに同期メッセージを生成することができ、グランドマスタークロック装置100における同期パケットの送信間隔の揺らぎを低減させることができる。
特に、MAC部130がARP(Address Resolution Protocol)を実行した後に、Sync生成部135が同期メッセージを生成することで、実行時間の揺らぎが大きいARPの影響を低減させることができる。
【0146】
また、同期メッセージの送出タイミングか否かを判定するスケジューラ141が、一般メッセージを生成するCPU170よりも下位層に設けられている。
これにより、スケジューラ141は、CPU170が行う処理による時間の揺らぎの影響を受けずに同期メッセージの送出タイミングを検出することができ、グランドマスタークロック装置100における同期パケットの送信間隔の揺らぎを低減させることができる。
【0147】
また、グローバルプロファイル記憶部134−1は、同期メッセージの生成に用いられるデータのうち、同一のグランドマスタークロック装置100が送出する全ての同期メッセージで同一の値となるデータであるグローバルプロファイルを記憶する。SMIDプロファイル記憶部134−2は、同期メッセージの生成に用いられるデータのうち、同一のグランドマスタークロック装置100から送出され、かつ、同一のスレーブ装置400に送出される同期メッセージで同一の値となるデータであるSMIDプロファイルを、スレーブ装置400毎に記憶する。SMIDテーブル記憶部134−3は、同期メッセージの生成に用いられるデータのうち、同時メッセージ毎に異なる値となるデータを示すSMIDテーブルを記憶する。そして、Sync生成部135は、グローバルプロファイル記憶部134−1から読み出したグローバルプロファイルと、SMIDプロファイル記憶部134−2から、同期メッセージ送出対象となっているスレーブ装置400について読み出したSMIDプロファイルと、SMIDテーブル記憶部134−3から読み出したSMIDテーブルに基づいて生成したデータとを組み合わせて同期メッセージを生成する。Sync生成部がSMIDテーブルに基づいて生成したデータは、
図15を参照して説明したように、1ずつデータがインクリメントされるsequenceIDなど、同期メッセージ毎に異なる値を有するデータである。
このように、Sync生成部135は、グローバルプロファイルとSMIDプロファイルとSMIDテーブル記憶部134−3から読み出したデータに基づいて生成したデータとを組み合わせるという簡単な処理で、同期メッセージを生成することができる。
【0148】
また、SyncIDは、同一のスレーブ装置400に対する同期メッセージ送信間隔の最小値として規定されている間隔毎にカウント(1インクリメント)する。SMIDは、同一のスレーブ装置400に対する同期メッセージ送信間隔の最小値を時刻同期対象機器の数でさらに分割した間隔毎にカウント(1インクリメント)する。そして、スケジューラ141は、SMIDが示すスレーブ装置400に対して同期メッセージを送出するタイミングか否かをSyncIDの値に基づいて判定する。
これにより、スケジューラ141は、SyncIDの値と、SMIDが示すスレーブ装置400に対応付けられた値とを比較するという簡単な処理で、同期メッセージ送出タイミングを検出することができる。
【0149】
また、Sync送出部136は、スケジューラ141が同期メッセージの送出タイミングであると判定すると、同期メッセージ以外のメッセージである一般メッセージを送出中である場合は、当該一般メッセージの送出を中断して、同期メッセージを送出する。
これにより、Sync送出部136は、同期メッセージの送出タイミング到来時に、一般メッセージを送出中であっても直ちに同期メッセージを送出することができる。この点において、グランドマスタークロック装置100は、時間の揺らぎ無しに同期メッセージを送出することができる。
【0150】
また、Sync送出部136は、スケジューラ141が同期メッセージの送出タイミングであると判定すると、同期メッセージ以外メッセージである一般メッセージの新たな送出を抑制する。
これにより、Sync送出部136は、送出対象の一般メッセージが複数ある場合でも、同期メッセージを優先的に送出することができる。この点において、グランドマスタークロック装置100は、同期メッセージの送出間隔の揺らぎを低減させることができる。
【0151】
また、Sync送出部136は、スケジューラ141が同期メッセージの送出タイミングであると判定すると、新たな同期メッセージ及び一般メッセージの送出を抑制し、一般メッセージの送出に要する時間として規定されている規定時間が経過した後、同期メッセージを送出する。
これにより、Sync送出部136は、メッセージの送出に要する時間として規定されている規定時間が経過した後、必ず、メッセージ送出を行っていない状態から同期メッセージを送出することができる。この点において、グランドマスタークロック装置100は、同期メッセージの送出タイミング到来時に、直ちに同期メッセージを送出することができ、同期メッセージの送出間隔の揺らぎを低減させることができる。
また、スケジューラ141が同期メッセージの送出タイミングであると判定した場合のみ、Sync送出部136が新たな同期メッセージ及び一般メッセージの送出を抑制する点で、一般メッセージの送出が制限される頻度が少ない。この点において、グランドマスタークロック装置100は、一般メッセージの送出の遅延を低減させることができる。
【0152】
また、Sync送出部136が同期メッセージを送出するモードとして、スケジューラ141が同期メッセージの送出タイミングであると判定すると、一般メッセージを送出中である場合は、当該一般メッセージの送出を中断して、同期メッセージを送出するモードと、スケジューラ141が同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制するモードと、スケジューラ141が同期メッセージの送出タイミングであると判定すると、新たな同期メッセージ及び一般メッセージの送出を抑制し、一般メッセージの送出に要する時間として規定されている規定時間が経過した後、同期メッセージを送出するモードとのうち少なくとも2つのモードからいずれかを選択可能である。
これにより、ユーザは、グランドマスタークロック装置100の運用状況に応じて、上記のモードのいずれかを選択することができる。
【0153】
なお、本発明は、いろいろな時刻同期の場面に適用可能である。例えば、以下に本発明を適用するようにしてもよい。
1.携帯基地局間の時刻同期、周波数同期に用いる本願記載のGMC装置
2.センサーネットワークの各センサの時刻、周波数同期に用いる本願記載のGMC装置
3.電力変電所の保護リレー装置の作動時刻同期に用いる本願記載のGMC装置
4.オーディオ、ビデオなどAV分野におけるカメラ、記録機器、映像、ビデオ信号伝送装置、管理コンソール、サーバ群の時刻と、周波数の同期に用いつ本願記載のGMC装置
5.自動車内ネットワークにおける時刻、周波数同期に用いる本願記載のGMC装置
6.SDN,NFVなど複数装置で構成され中央集権設定が実行される環境における時刻、周波数同期に用いる本願記載のGMC装置
【0154】
なお、グランドマスタークロック装置100の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0155】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。