JP2014116672A - 中継装置および中継方法 - Google Patents

中継装置および中継方法 Download PDF

Info

Publication number
JP2014116672A
JP2014116672A JP2012267209A JP2012267209A JP2014116672A JP 2014116672 A JP2014116672 A JP 2014116672A JP 2012267209 A JP2012267209 A JP 2012267209A JP 2012267209 A JP2012267209 A JP 2012267209A JP 2014116672 A JP2014116672 A JP 2014116672A
Authority
JP
Japan
Prior art keywords
transmission
time
packet
source device
delay
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2012267209A
Other languages
English (en)
Inventor
Sumimasa Okada
純征 岡田
Daiji Mitsunaga
大司 滿永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012267209A priority Critical patent/JP2014116672A/ja
Publication of JP2014116672A publication Critical patent/JP2014116672A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】パケット集中によるマスタの負荷低減を図ること。
【解決手段】中継装置は、マスタからスレーブ群に第1のパケット群を転送した場合に各々のスレーブからマスタに送信される第2のパケット群を受信する。中継装置は、特定のスレーブ以外のいずれかのスレーブからのパケットの受信時刻と、特定のスレーブからマスタへパケットに先行して送信される特定のパケットを受信してからマスタに送信するまでの滞留時間と、を取得する。中継装置は、第1のパケット群がマスタから送信されてから受信されるまでの伝送遅延時間と、マスタが計時する時刻からのずれ時間と、取得された受信時刻および滞留時間と、に基づいて、パケットがいずれかのスレーブからマスタに送信された場合にマスタからいずれかのスレーブに送信される応答パケットの推定送信時刻を算出する。中継装置は応答パケットを生成し、特定のスレーブに送信する。
【選択図】図1

Description

本発明は、中継装置および中継方法に関する。
近年、基地局装置を収容する伝送網のパケット化の進展に伴い、パケットベースでの時刻同期を行う方向性が探られている。その一例として、IEEE(The Institute of Electrical and Electronics Engineers:以下、「IEEE」と称する。)により規格化された高精度での時刻同期を実現するIEEE1588プロトコルなどによるパケットベースでの時刻同期がある(下記非特許文献1を参照。)。
IEEE1588プロトコルは、時刻基準を持つマスタとそれに従属するスレーブを定義する。両装置は、定期的に時刻同期用パケット(PTP(Presition Time Protocol:以下、「PTP」と称する。)パケット)を交換する。そして、スレーブは、スレーブの時刻をマスタの時刻に対し補正する。これにより、時刻同期が実現する。
また、現実のネットワークは広域に及ぶため、マスタとスレーブの間に、TC(Tranceparent Clock)装置(以下、「TC装置」と称する)と呼ばれる中継装置が設置される。中継装置はマスタとスレーブとの間でやりとりするPTPパケットに中継装置内の滞留時間を追加する。これにより、時刻同期が実現する。
中継装置に一般的なL2スイッチを用いると、中継装置内の滞留時間が時刻補正を行う上での誤差要因となり、時刻同期精度が低下する。非特許文献1で提案されている中継装置では、時刻補正手順において装置内滞留時間の補正をおこなうことにより、中継装置内の滞留時間が上り下りの経路で異なったとしても時刻補正をすることができる。
また、非特許文献1で時刻同期の手順はいくつか規定されているが、その中の一つにONE STEP CLOCKがある。ONE STEP CLOCKの手順では、マスタがスレーブにSYNCメッセージを送信する。スレーブは、SYNCメッセージを受信するとDELAY_REQメッセージをマスタに送信する。マスタは、DELAY_REQメッセージを受信した場合、スレーブにDELAY_RESPメッセージを送信する。中継装置は、この3つの手順の中で時刻補正に必要な値を収集し、伝送路の遅延およびマスタとの時刻ずれを計算する。
また、特許文献1では、PON(Passive Optical Network)システム内において、ONU(Optical Network Unit)をOLT(Optical Line Terminal)に対して時刻同期する方法が開示されている。
特開2012−60217号公報
IEEE STD 1588TM−2008(IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems)
非特許文献1には、SYNCメッセージをマルチキャストで送信する点が開示されているが、SYNCメッセージだけが1対多の通信となり、その後のDELAY_REQメッセージとDELAY_RESPメッセージはユニキャストで送信される。したがって、マスタとスレーブとの間は、論理的に1対1の通信となる。そのため、マスタに接続されるスレーブの数が増加するほど、マスタが処理しなければならないPTPパケットの数が増加し、マスタの負荷が増加するという問題がある。
また、特許文献1では、1台のマスタに対して複数台のスレーブが接続されている場合に、マスタでのPTPパケットの集中による処理負荷増加について言及されていない。
本発明は、パケット集中によるマスタの負荷低減を図ることを目的とする。
本願において開示される発明の一側面となる中継装置および中継方法は、送信元装置から送信先装置群に第1のパケット群を転送した場合に、前記送信先装置群の各々の送信先装置から前記送信元装置に送信される第2のパケット群を受信し、各送信先装置から受信された第2のパケット群のうち特定の送信先装置以外のいずれかの送信先装置からのパケットの受信時刻と、前記第2のパケット群のうち前記特定の送信先装置から前記送信元装置へ前記パケットに先行して送信される特定のパケットを受信してから前記送信元装置に送信するまでの滞留時間と、を取得し、前記パケットを前記送信元装置に転送しないように制御し、前記第1のパケット群が前記送信元装置から送信されてから受信されるまでの伝送遅延時間と、前記送信元装置が計時する時刻からのずれ時間と、取得された受信時刻および滞留時間と、に基づいて、前記パケットが前記いずれかの送信先装置から前記送信元装置に送信された場合における前記送信元装置での前記パケットの推定受信時刻を算出し、算出された推定受信時刻を含み、かつ、前記いずれかの送信先装置を宛先とする前記パケットに対する応答パケットを生成し、生成された応答パケットを前記いずれかの送信先装置に送信する。
本発明の代表的な実施の形態によれば、パケット集中による送信元装置の負荷低減を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
実施例1における時刻同期例を示す説明図である。 PTPパケットの共通ヘッダを示す説明図である。 SYNCメッセージとDELAY_REQメッセージで使われるフィールドを示す説明図である。 DELAY_RESPメッセージで使われるフィールドを示す説明図である。 実施例1にかかる管理テーブルの記憶内容の一例を示す説明図である。 実施例1にかかる時刻同期処理例を示すシーケンス図である。 実施例1にかかる中継装置の構成例を示すブロック図である。 実施例1にかかる中継装置の中継処理手順例を示すフローチャートである。 実施例1にかかる図8に示した第2の送信パケット処理の詳細な処理手順例を示すフローチャートである。 実施例2にかかる時刻同期処理例を示すシーケンス図である。 実施例2にかかる管理テーブルの記憶内容の一例を示す説明図である。 実施例2にかかる中継装置の構成例を示すブロック図である。 実施例2にかかる図8に示した第2の送信パケット処理の詳細な処理手順例を示すフローチャートである。
以下、本実施の形態について説明する。なお、本実施の形態では、一例として、IEEEにより規格化されたIEEE1588プロトコルによるパケットベースでの時刻同期を用いて説明する。
図1は、実施例1における時刻同期例を示す説明図である。図1において、(A)は、本実施例1の適用前の時刻同期例であり、(B)は、本実施例1の適用後の時刻同期例である。図1において、ネットワークシステムは、マスタ101と、中継装置102と、スレーブ103と、を含む。マスタ101は、基準時刻を持つ装置である。マスタ101は、GPS(Global Positioning System)衛星と通信することにより、基準時刻を取得する。マスタ101は、たとえば、L2スイッチ、ルータまたはブリッジである。
中継装置102は、マスタ101とスレーブ103間のパケットを中継する装置である。具体的には、たとえば、中継装置102は、マスタ101とスレーブ103間で定期的に通信されるPTPパケットを中継する。スレーブ103は、マスタ101が持つ基準時刻により時刻補正をおこなう装置である。スレーブ103は、たとえば、L2スイッチ、ルータまたはブリッジである。
(A)の時刻同期処理では、まず、マスタ101が、複数のスレーブ103に対しSYNCメッセージをマルチキャストする。中継装置102は、マスタ101からのSYNCメッセージを中継して、配下のスレーブ103に転送する。スレーブ103は、SYNCメッセージを受信した場合、マスタ101に対し、DELAY_REQメッセージを送信する。中継装置102は、配下のスレーブ103からのDELAY_REQメッセージを中継して、マスタ101に転送する。
マスタ101は、DELAY_REQメッセージを受信した場合、DELAY_REQメッセージを送信したスレーブ103ごとに、DELAY_RESPメッセージを送信する。中継装置102は、マスタ101からのDELAY_RESPメッセージを中継して、配下のスレーブ103に転送する。スレーブ103は、DELAY_RESPメッセージを受信する。スレーブ103は、SYNCメッセージに含まれるマスタ101でのSYNCメッセージの送信時刻、スレーブ103でのSYNCメッセージの受信時刻、スレーブ103でのDELAY_REQメッセージの送信時刻、DELAY_RESPメッセージに含まれるマスタ101でのDELAY_REQメッセージの受信時刻を用いて、当該スレーブ103が持つ時計の時刻を補正する。
(B)の時刻同期処理では、まず、マスタ101が、複数のスレーブ103A、103Bに対しSYNCメッセージをマルチキャストする。中継装置102は、マスタ101からのSYNCメッセージを中継して、配下のスレーブ103A、103Bに転送する。スレーブ103A、103Bは、SYNCメッセージを受信した場合、マスタ101に対し、DELAY_REQメッセージを送信する。
ここで、中継装置102は、スレーブ103AからのDELAY_REQメッセージをマスタ101に送信する。そして、マスタ101は、スレーブ103AからのDELAY_REQメッセージに応答して、DELAY_RESPメッセージを中継装置102を介してスレーブ103Aに送信する。スレーブ103Aは、DELAY_RESPメッセージを受信する。スレーブ103Aは、SYNCメッセージに含まれるマスタ101でのSYNCメッセージの送信時刻、スレーブ103AでのSYNCメッセージの受信時刻、スレーブ103AでのDELAY_REQメッセージの送信時刻、DELAY_RESPメッセージに含まれるマスタ101でのDELAY_REQメッセージの受信時刻を用いて、当該スレーブ103Aが持つ時計の時刻を補正する。すなわち、スレーブ103Aについては、図1の(A)と同様の時刻同期処理が実行される。
一方、中継装置102は、スレーブ103BからのDELAY_REQメッセージをマスタ101に転送せずに廃棄または存在しないアドレス宛に送信する。そして、中継装置102は、DELAY_REQメッセージがマスタ101に転送されたと仮定した場合におけるマスタ101でのDELAY_REQメッセージの推定受信時刻を算出する。推定受信時刻の算出の詳細については後述する。
そして、中継装置102は、推定受信時刻を含むDELAY_RESPメッセージを生成して、DELAY_REQメッセージを送信したスレーブ103BにDELAY_RESPメッセージを送信する。スレーブ103Bは、DELAY_RESPメッセージを受信する。スレーブ103Bは、SYNCメッセージに含まれるマスタ101でのSYNCメッセージの送信時刻、スレーブ103BでのSYNCメッセージの受信時刻、スレーブ103BでのDELAY_REQメッセージの送信時刻、DELAY_RESPメッセージに含まれる中継装置102が推定したマスタ101でのDELAY_REQメッセージの受信時刻を用いて、当該スレーブ103Bが持つ時計の時刻を補正する。
このように、本実施の形態では、DELAY_REQメッセージをマスタ101に転送せずに、中継装置102が、マスタ101に替わってDELAY_RESPメッセージの代理応答をする。したがって、マスタ101のDELAY_REQメッセージの受信負担と、マスタ101のDELAY_RESPメッセージの送信負担と、が軽減される。また、代理応答した場合、マスタ101と中継装置102間のDELAY_REQメッセージおよびDELAY_RESPメッセージの通信がなくなるため、スレーブ103BへのDELAY_RESPメッセージの受信時間の短縮化を図ることができる。
以下、図2〜図9を用いて、実施例1にかかる時刻同期処理について説明する。時刻同期処理では、例として、PTPパケットが用いられる。ここで、PTPパケットのデータフォーマットについて説明する。
図2は、PTPパケットの共通ヘッダを示す説明図である。図2において、「tranceportSpecific」は、下位のトランスポートプロトコルで用いられる。「messageType」は、このメッセージがSYNCメッセージなのかDELAY_REQメッセージなのかDELAY_RESPメッセージなのかといったメッセージのタイプを示す。「reserved」は、拡張用の領域として確保される。「versionPTP」は、PTPプロトコルのバージョンを示す。
「messageLength」は、PTPメッセージのオクテット数を示す。「domainNumber」は、ターゲットのドメインを示す。「flagField」は、メッセージの状態を表すフラグの集合で各ビットの意味づけを定義する。「correctionField」は、ナノセカンド単位の時刻を表現するのに用いられる。「sourcePortIdentify」は、このメッセージを生成したポート番号を示す。「sequenceID」は、メッセージの送信元によって付与されるシーケンスIDを示す。「controlField」は、メッセージタイプに依存して決まる値である。「logMessageInterval」は、メッセージタイプによって決定される値である。
図3は、SYNCメッセージとDELAY_REQメッセージで使われるフィールドを示す説明図である。「header」には、図2で示した共通ヘッダが入る。「originTimestamp」は、このメッセージの送信時刻を示す。
図4は、DELAY_RESPメッセージで使われるフィールドを示す説明図である。「header」には図2で示した共通ヘッダが入る。「receiveTimestamp」は、このメッセージの元となるDELAY_REQメッセージの受信時刻を示す。「requestingPortIdentify」は、受信したDELAY_REQメッセージの「sourcePortIdentify」の値がコピーされる。
図5は、実施例1にかかる管理テーブルの記憶内容の一例を示す説明図である。管理テーブル500は、中継装置102内のメモリなどの記憶装置に記憶される。管理テーブル500は、T1_OriginTimestamp項目、T1_correctionField項目、Ta項目、Tb項目、T4_OriginTimestamp項目、T4_correctionField項目、TC_IV_delay項目、mean_path_delay項目、および、Offset_from_master項目を有する。
T1_OriginTimestamp項目には、マスタ101から受信されたSYNCメッセージ内のoriginTimestampの値が格納される。T1_correctionField項目には、マスタ101から送信されるSYNCメッセージ内のcorrectionFieldの値が格納される。
Ta項目には、マスタ101からのSYNCメッセージを中継装置102が送信した時刻Ts2が格納される。Tb項目には、スレーブからのDELAY_REQメッセージを中継装置102が受信した時刻が格納される。TC_IV_delay項目には、DELAY_REQメッセージを中継装置102が受信してから送信するまでの装置内滞留時間が格納される。この装置内滞留時間は、中継装置102で算出される値である。
<時刻同期処理シーケンス>
図6は、実施例1にかかる時刻同期処理例を示すシーケンス図である。説明を単純化するため、図6では、スレーブを2台にして説明する。また、図6中、上下段の長方形内の数値は、PTPパケットに格納される時刻情報を示しており、上段が「originTimestamp」の値を、下段が「correctionField」の値を示す。
図6において、スレーブ103Aが、上述した代表スレーブであり、スレーブ103Bが残余のスレーブである。代表スレーブは、あらかじめ決められたスレーブである。たとえば、中継装置102から通信距離が最も短いスレーブが代表スレーブとなる。これにより、中継装置102の配下のスレーブ群のうち代表スレーブよりも中継装置102からの通信距離が長いスレーブについて、上述した代理応答が可能となる。
マスタ101は基準時刻としてTmを有する。中継装置102は、基準時刻Tmからのずれ時間であるオフセットToffTCを有する。スレーブ103Aは、基準時刻Tmからのずれ時間であえるオフセットToffAを有する。スレーブ103Bは、基準時刻Tmからのずれ時間であるオフセットToffBを有する。
[マスタ101からのSYNCメッセージの送信]
まず、マスタ101は、時刻T1でスレーブに対しSYNCメッセージをマルチキャストする。マスタ101は、スレーブごとにSYNCメッセージをユニキャストしてもよい。ここで、一例として、時刻T1=7.5[ns]とする。時刻T1は、このままではスレーブが知りえない情報である。したがって、時刻T1のナノセカンド部分である7[ns]は、PTPパケットのoriginTimestampに格納され、それ以下の部分である0.5[ns]はcorrection Fieldに格納されて、SYNCメッセージとして送信される。
SYNCメッセージは、伝送遅延Td1を経てマスタ101から中継装置102に送信される。伝送遅延Td1は、一例としてTd1=0.5[ns]とする。中継装置102は、SYNCメッセージを受信した場合、SYNCメッセージ内のoriginTimestampの値「7」を、管理テーブル500のT1_OriginTimestamp項目に格納する。
中継装置102は、受信したSYNCメッセージを各スレーブ103A、103Bに送信する。ここで、中継装置102は、SYNCメッセージの受信時と送信時にそれぞれタイムスタンプをとる。中継装置102での受信時刻をTs1とし、中継装置102からのSYNCメッセージの送信時刻をTs2とする。送信時刻Ts1は、一例として、Ts1=108[ns]とし、送信時刻Ts2は、一例として、Ts2=308[ns]とする。中継装置102は、SYNCメッセージの送信時刻Ts2を、管理テーブル500のTa項目に格納する。
また、中継装置102での受信から送信までの時間を滞留時間Tr1とする。滞留時間Tr1は、中継装置102によりTr1=Ts2−Ts1で算出される。ここで、滞留時間Tr1をTr1=200[ns]とする。中継装置102は、滞留時間Tr1を、SYNCメッセージの「correctionField」に格納する。したがって、中継装置102からの送信時では、SYNCメッセージの「correctionField」の値は、200.5[ns]となる。また、中継装置102は、SYNCメッセージの「correctionField」の値である200.5[ns]を、管理テーブル500のT1_correctionField項目に格納する。
SYNCメッセージは、伝送遅延Td2Aを経て中継装置102からスレーブ103Aに送信される。伝送遅延Td2Aは、一例としてTd2A=1.0[ns]とする。また、SYNCメッセージは、伝送遅延Td2Bを経て中継装置102からスレーブ103Bに送信される。伝送遅延Td2Bは、一例としてTd2B=3.0[ns]とする。
スレーブ103Aは、中継装置102からのSYNCメッセージを受信する。ここで、スレーブ103Aは、SYNCメッセージの時刻情報であるoriginTimestampの値(7)とcorrectionFieldの値(200.5)を保持する。また、スレーブ103Aは、SYNCメッセージの受信時と送信時にそれぞれタイムスタンプをとる。SYNCメッセージの受信時刻T2Aは、一例として、T2A=229[ns]とする。
受信時刻T2Aは、スレーブ103Aにより計時された時刻である。受信時刻T2Aは、時刻T1に、伝送遅延Td1と、滞留時間Tr1と、伝送遅延Td2Aと、オフセットToffAと、を加算した値と一致する。図6の例では、伝送遅延Td1、伝送遅延Td2A、およびオフセットToffAの値を明記するが、これらの値は、スレーブ103Aがそのままでは知り得ない値であり、計算により求めることになる。
[スレーブ103AからのDELAY_REQメッセージの送信]
スレーブ103Aは、SYNCメッセージを受信すると次のステップとしてDELAY_REQメッセージをマスタ101に送信する。スレーブ103Aは、DELAY_REQメッセージの送信時刻T3Aを保持する。DELAY_REQメッセージの送信時刻T3Aは、一例として、T3A=480[ns]とする。
DELAY_REQメッセージのoriginTimestampの値とcorrectionFieldの値はともに「0」に設定される。DELAY_REQメッセージはSYNCメッセージと逆の経路をたどり、Td2A=1[ns]の遅延を受けて中継装置102に到達する。中継装置102は、DELAY_REQメッセージの受信時とマスタ101への送信時にタイムスタンプとして、受信時刻Ts3Aおよび送信時刻Ts4Aをとる。中継装置102は、受信時刻Ts3Aおよび送信時刻Ts4Aの差分を滞留時間Tr2(=Ts4A−Ts3A)として算出する。滞留時間Tr2は、一例として、100[ns]とする。
中継装置102は、滞留時間Tr2を、DELAY_REQメッセージのcorrection Fieldに加算する。これにより、DELAY_REQメッセージのcorrectionFieldの値は、「0」から「100」になる。また、中継装置102は、滞留時間Tr2を、管理テーブル500のTC_IV_delay項目に格納する。このように、中継装置102は、上りと下りとで個別に滞留時間Tr1、Tr2を算出するため、SYNCメッセージとDELAY_REQメッセージとで異なる滞留時間を計測することができる。
中継装置102で中継されたDELAY_REQメッセージは伝送遅延Td1=0.5[ns]を受けてマスタ101に到達する。マスタ101は、DELAY_REQメッセージの受信時刻T4Aを保持する。受信時刻T4Aは、一例として、T4A=561.5[ns]とする。マスタ101は、DELAY_REQメッセージの受信時刻T4をスレーブ103Aに通知するために、DELAY_RESPメッセージを生成する。
マスタ101は、DELAY_RESPメッセージのoriginTimestampに、受信時刻T4Aのナノセカンド部分である561[ns]を格納し、「correctionField」に、DELAY_REQメッセージのcorrectionFieldの値から受信時刻T4Aのナノセカンド部分以下の値を減じた値を格納する。この例では、受信時刻T4Aが561.5[ns]のため、DELAY_RESPメッセージのoriginTimestampには「561」が、correctionFieldには、滞留時間Tr2=100[ns]から受信時刻T4Aのナノセカンド部分以下の0.5[ns]を減じた99.5[ns]が格納される。
[マスタ101からスレーブ103AへのDELAY_RESPメッセージの送信]
マスタ101は、DELAY_RESPメッセージをスレーブ103Aに送信する。DELAY_RESPメッセージは、伝送遅延Td1を経てマスタ101から中継装置102に送信される。中継装置102は、DELAY_RESPメッセージ内のoriginTimestampの値である「561」を、管理テーブル500のT4_OriginTimestamp項目に格納する。また、中継装置102は、DELAY_RESPメッセージ内のcorrectionFieldの値である「99.5」を、管理テーブル500のT4_correctionField項目に格納する。このあと、中継装置102は、DELAY_RESPメッセージをスレーブ103Aに送信する。
DELAY_RESPメッセージは、マスタ101で生成した時刻情報を伝搬することを目的とするため、マスタ101からスレーブ103Aまでの経路において中継装置102内の滞留時間の加算等は行われない。そのためマスタ101の送信時の時刻情報のままスレーブ103Aまで届く。なお、スレーブ103Aは、DELAY_RESPメッセージの時刻情報であるoriginTimestampの値(561)とcorrectionFieldの値(99.5)を保持する。
ここまでの手順により、中継装置102は、伝送遅延Td1とオフセットToffTCを算出するための情報が収集できたことになる。すなわち、マスタ101におけるDELAY_RESPの受信時刻T4Aは、下記式(1)により表現される。
T4A=T1+Td1+Tr1+(Ts3A−Ts2)+Tr2+Td1・・・(1)
伝送遅延Td1は未知の値であるため、中継装置102は、式(1)を解くことにより伝送遅延Td1を求めることができる。本例では、伝送遅延Td1=0.5[ns]が算出される。管理テーブル500を参照する場合、上記式(1)は、下記式(2)のように表現される。中継装置102は、管理テーブル500を参照すると、下記式(2)により伝送遅延Td1を求めることができる。
Td1={(Ta−Tb)
+(RESP_Time−SYNC_Time)
−SYNC_correction
−RESP_correction}/2・・・(2)
上記式(2)において、「Ta」は、管理テーブル500のTa項目の値である。すなわち、中継装置102からのSYNCメッセージの送信時刻Ts2(=308)である。「Tb」は、管理テーブル500のTb項目の値である。すなわち、中継装置102におけるDELAY_REQメッセージの受信時刻Ts3A(=561)である。送信時刻Ts2および受信時刻Ts3Aは、中継装置102で計時された時刻であるため、中継装置102のオフセットToffTCを含むが、式(1)および式(2)では差分をとるため、オフセットToffTCは相殺される。
「RESP_Time」は、管理テーブル500のT4_OriginTimestamp項目の値(561)である。また、「SYNC_Time」は、管理テーブル500のT1_OriginTimestamp項目の値(7)である。また、「SYNC_correction」は、管理テーブル500のT1_correctionField項目の値(200.5)である。また、「RESP_correction」は、管理テーブル500のT4_correctionField項目の値(99.5)である。中継装置102は、算出された伝送遅延Td1(=0.5)を、管理テーブル500のmean_path_delay項目に格納する。
また、中継装置102のオフセットToffTCは、下記式(3)により表現される。
T1+Td1+Tr1=Ts2−ToffTC・・・(3)
オフセットToffTCは未知の値であるため、中継装置102は、式(3)を解くことによりオフセットToffTCを求めることができる。本例では、オフセットToffTC=100[ns]が算出される。管理テーブル500を参照する場合、上記式(3)は、下記式(4)のように表現される。中継装置102は、管理テーブル500を参照すると、下記式(4)によりオフセットToffTCを求めることができる。
ToffTC=Ta−SYNC_Time−mean_path_delay
−SYNC_correction・・・(4)
上記式(4)において、「Ta」は、管理テーブル500のTa項目の値である。すなわち、中継装置102からのSYNCメッセージの送信時刻Ts2(=308)である。また、「SYNC_Time」は、管理テーブル500のT1_OriginTimestamp項目の値(7)である。また、「mean_path_delay」は、式(2)で算出された伝送遅延Td1の値であり、管理テーブル500のmean_path_delay項目の値である。また、「SYNC_correction」は、管理テーブル500のT1_correctionField項目の値(200.5)である。
中継装置102は、算出されたオフセットToffTC(=100)を、管理テーブル500のoffset_from_master項目に格納する。中継装置102は、中継装置102が計時する時刻Tm+ToffTCから、算出されたオフセットToffTCを引くことにより、マスタ101と同一の基準時刻Tmに補正することができる。
また、ここまでの手順により、スレーブ103Aは、伝送遅延Td1と伝送遅延Td2Aの総和とオフセットToffAとを算出するための情報が収集できたことになる。すなわち、マスタ101におけるDELAY_RESPの受信時刻T4Aは、下記式(5)により表現される。
T4A=T1+Td1+Tr1+Td2A+(T3A−T2A)+Td2A+Tr2+Td1・・・(5)
伝送遅延Td1および伝送遅延Td2Aは未知の値であるため、スレーブ103Aは、式(5)を解くことにより伝送遅延Td1および伝送遅延Td2Aの総和を求めることができる。伝送遅延Td1および伝送遅延Td2Aの総和をTdAとする。スレーブ103Aが取得したSYNCメッセージの時刻情報とDELAY_RESPメッセージの時刻情報を参照すると、上記式(5)は、下記式(6)のように表現される。中継装置102は、下記式(6)により伝送遅延TdAを求めることができる。
TdA=Td1+Td2A
={(T2A−T3A)
+(RESP_Time−SYNC_Time)
−SYNC_correction
−RESP_correction}/2・・・(6)
上記式(6)において、「RESP_Time」は、DELAY_RESPメッセージのOriginTimestampの値(561)である。また、「SYNC_Time」は、SYNCメッセージのOriginTimestampの値(7)である。また、「SYNC_correction」は、SYNCメッセージのcorrectionFieldの値(200.5)である。また、「RESP_correction」は、DELAY_RESPメッセージのcorrectionFieldの値(99.5)である。
スレーブ103Aは、上記(6)式を解くことにより、伝送遅延Td1および伝送遅延Td2Aの総和TdAを算出することができる。本例の場合、TdA=1.5[ns]となる。
また、スレーブ103AのオフセットToffAは、下記式(7)により表現される。
T1+Td1+Tr1+Td2A=T2A−ToffA・・・(7)
オフセットToffAは未知の値であるため、スレーブ103Aは、式(7)を解くことによりオフセットToffAを求めることができる。スレーブ103Aが取得したSYNCメッセージの時刻情報とDELAY_RESPメッセージの時刻情報を参照すると、上記式(7)は、下記式(8)のように表現される。中継装置102は、下記式(8)によりオフセットToffAを求めることができる。
ToffA=T2A−SYNC_Time−TdA−SYNC_correction
・・・(8)
上記式(8)において、「SYNC_Time」は、SYNCメッセージのOriginTimestampの値(7)である。また、「SYNC_correction」は、SYNCメッセージのcorrectionFieldの値(200.5)である。本例では、オフセットToffA=20[ns]が算出される。
スレーブ103Aは、スレーブ103Aが計時する時刻Tm+ToffAから、算出されたオフセットToffAを引くことにより、マスタ101と同一の基準時刻Tmに補正することができる。
[スレーブ103BからのDELAY_REQメッセージの送信と中継装置102からスレーブ103Bに対するDELAY_RESPメッセージの代理応答]
また、図6において、中継装置102から送信されるSYNCメッセージは、マルチキャストであるため、スレーブ103Aだけではなく、スレーブ103Bにも送信される。スレーブ103Bは、中継装置102からのSYNCメッセージを受信する。ここで、スレーブ103Bは、SYNCメッセージの受信時と送信時にそれぞれタイムスタンプをとる。SYNCメッセージの受信時刻T2Bは、一例として、T2B=251[ns]とする。
受信時刻T2Bは、スレーブ103Bにより計時された時刻である。受信時刻T2Bは、時刻T1に、伝送遅延Td1と、滞留時間Tr1と、伝送遅延Td2Bと、オフセットToffBと、を加算した値と一致する。図6の例では、伝送遅延Td1、伝送遅延Td2A、およびオフセットToffBの値を明記するが、これらの値は、スレーブ103Bがそのままでは知り得ない値であり、計算により求めることになる。
スレーブ103Bは、SYNCメッセージを受信すると次のステップとしてDELAY_REQメッセージをマスタ101に送信する。スレーブ103Bは、DELAY_REQメッセージの送信時刻T3Bを保持する。DELAY_REQメッセージの送信時刻T3Bは、一例として、T3B=600[ns]とする。
DELAY_REQメッセージのoriginTimestampの値とcorrectionFieldの値はともに「0」に設定される。DELAY_REQメッセージはSYNCメッセージと逆の経路をたどり、Td2B=3[ns]の遅延を受けて中継装置102に到達する。中継装置102は、DELAY_REQメッセージの受信時にタイムスタンプとして、受信時刻Ts3Bをとる。中継装置102は、受信時刻Ts3Bを管理テーブル500のTb項目に上書きする。受信時刻Ts3Bは、一例として、663[ns]とする。
中継装置102は、スレーブ103Bから受信したDELAY_REQメッセージをマスタ101に転送せずに廃棄する。これにより、マスタ101は、スレーブ103BからのDELAY_REQメッセージを受信しないことになり、受信負荷の低減化を図ることができる。また、マスタ101は、DELAY_RESPメッセージをスレーブ103Bに送信する必要がないため、送信負荷の低減化を図ることができる。
中継装置102は、スレーブ103Bから受信したDELAY_REQメッセージをマスタ101に転送しないため、当該DELAY_REQメッセージがマスタ101に送信されたと仮定した場合のマスタ101での受信時刻を知りえない。DELAY_REQメッセージのマスタ101での受信時刻は、スレーブ103Bでの時刻補正に用いられるため、中継装置102は、DELAY_REQメッセージのマスタ101での推定受信時刻T4Bを算出する。マスタ101での推定受信時刻T4Bは、受信時刻Ts3Bに、中継装置102のオフセットToffTCと、滞留時間Tr2と、伝送遅延Td1と、を加算した時間として、下記式(9)により算出される。
T4B=Ts3B+Tr2+Td1−ToffTC・・・(9)
受信時刻Ts3Bは、管理テーブル500のTb項目に上書きされた値「663」である。滞留時間Tr2は、管理テーブル500のTC_IV_delay項目に格納された値「100」である。伝送遅延Td1は、管理テーブル500のmean_path_delay項目に格納された値「0.5」である。オフセットToffTCは、管理テーブル500のTC_IV_offset_from_master項目に格納された値「100」である。これにより、中継装置102は、推定算出時刻T4B=663.5[ns]を算出する。
そして、中継装置102は、推定算出時間T4Bのナノセカンド部分である「663」を、管理テーブル500のT4_OriginTimestamp項目に上書きする。また、中継装置102は、管理テーブル500のTC_IV_delay項目に格納された値「100」である滞留時間Tr2から、推定算出時間T4Bのナノセカンド部分以下である「0.5」を引いた値「99.5」を、管理テーブル500のT4_correctionField項目に上書きする。
そして、中継装置102は、算出された推定算出時刻T4Bを含むDELAY_RESPメッセージを生成する。具体的には、中継装置102は、マスタ101と同様の処理により、DELAY_RESPメッセージを生成する。中継装置102は、たとえば、推定送信時刻T4Bのナノセカンド部分を、DELAY_RESPメッセージのorginTimestampに設定する。また、中継装置102は、滞留時間Tr2から推定送信時刻T4Bのナノセカンド以下の部分を引いた値をT4_correctionField項目から読み出し、DELAY_RESPメッセージのcorrectionFieldに設定する。
たとえば、推定送信時刻T4B=663.5[ns]、滞留時間Tr2=100[ns]とすると、DELAY_RESPメッセージのorginTimestampには、「663」が格納され、DELAY_RESPメッセージのcorrectionFieldには、「99.5」が格納される。そして、中継装置102は、生成されたDELAY_RESPメッセージを、スレーブ103Bに送信する。これにより、中継装置102は、マスタ101に替わって、DELAY_RESPメッセージの代理応答をすることができる。
DELAY_RESPメッセージは、スレーブ103Bとの間で時刻情報の取得をする必要がないため、中継装置102は、DELAY_RESPメッセージの送信タイミングを制御する必要はなく、準備でき次第送信すればよい。
また、ここまでの手順により、スレーブ103Bは、伝送遅延Td1と伝送遅延Td2Bの総和とオフセットToffBとを算出するための情報が収集できたことになる。すなわち、マスタ101におけるDELAY_RESPの推定受信時刻T4Bは、下記式(10)により表現される。
T4B=T1+Td1+Tr1+Td2B+(T3B−T2B)+Td2B+Tr2+Td1・・・(10)
上記式(10)では、スレーブ103BからのDELAY_REQメッセージの滞留時間には、スレーブ103AからのDELAY_REQメッセージの滞留時間Tr2を用いた。伝送遅延Td1および伝送遅延Td2Bは未知の値であるため、スレーブ103Bは、式(10)を解くことにより伝送遅延Td1および伝送遅延Td2Bの総和を求めることができる。伝送遅延Td1および伝送遅延Td2Bの総和をTdBとする。スレーブ103Bが取得したSYNCメッセージの時刻情報とDELAY_RESPメッセージの時刻情報を参照すると、上記式(10)は、下記式(11)のように表現される。中継装置102は、下記式(11)により伝送遅延の総和TdBを求めることができる。
TdB=Td1+Td2B
={(T2B−T3B)
+(RESP_Time−SYNC_Time)
−SYNC_correction
−RESP_correction}/2・・・(11)
上記式(6)において、「RESP_Time」は、DELAY_RESPメッセージのOriginTimestampの値(663)である。また、「SYNC_Time」は、SYNCメッセージのOriginTimestampの値(7)である。また、「SYNC_correction」は、SYNCメッセージのcorrectionFieldの値(200.5)である。また、「RESP_correction」は、DELAY_RESPメッセージのcorrectionFieldの値(99.5)である。
スレーブ103Bは、上記(11)式を解くことにより、伝送遅延Td1および伝送遅延Td2Bの総和TdBを算出することができる。本例の場合、TdB=3.5[ns]となる。
また、スレーブ103BのオフセットToffBは、下記式(12)により表現される。
T1+Td1+Tr1+Td2B=T2B−ToffB・・・(12)
オフセットToffBは未知の値であるため、スレーブ103Bは、式(12)を解くことによりオフセットToffBを求めることができる。スレーブ103Bが取得したSYNCメッセージの時刻情報とDELAY_RESPメッセージの時刻情報を参照すると、上記式(12)は、下記式(13)のように表現される。スレーブ103Bは、下記式(13)によりオフセットToffBを求めることができる。
ToffB=T2B−SYNC_Time−TdB−SYNC_correction
・・・(13)
上記式(13)において、「SYNC_Time」は、SYNCメッセージのOriginTimestampの値(7)である。また、「SYNC_correction」は、SYNCメッセージのcorrectionFieldの値(200.5)である。本例では、オフセットToffB=40[ns]が算出される。
スレーブ103Bは、スレーブ103Bが計時する時刻Tm+ToffBから、算出されたオフセットToffBを引くことにより、マスタ101と同一の基準時刻Tmに補正することができる。
<中継装置102の構成例>
図7は、実施例1にかかる中継装置102の構成例を示すブロック図である。図7において、中継装置102は、計時部700と、第1の送受信部701と、第2の送受信部702と、第1のパケット処理部703と、第2のパケット処理部704と、スイッチ705と、管理テーブル500と、取得部706と、制御部707と、算出部708と、生成部709と、を有する。
第1の送受信部701は、マスタ101からのパケットを受信したり、マスタ101へパケットを送信する。第1の送受信部701は、具体的には、たとえば、マスタ101からのSYNCメッセージやDELAY_RESPメッセージを受信したり、スレーブからのDELAY_REQメッセージをマスタ101へ送信する。第1の送受信部701は、具体的には、たとえば、通信ポートである。
第2の送受信部702は、スレーブからのパケットを受信したり、スレーブへパケットを送信する。第2の送受信部702は、具体的には、たとえば、スレーブからのDELAY_REQメッセージを受信したり、マスタ101からのSYNCメッセージやDELAY_REQメッセージをスレーブへ送信する。第2の送受信部702は、具体的には、たとえば、通信ポートである。
計時部700は、時刻を計時する。計時部700は、具体的には、たとえば、クロック源となる水晶発振器と、水晶発振器からのクロックにより計時するカウンタを有する。
第1のパケット処理部703は、パケットの種類を識別する。第1のパケット処理部703は、たとえば、パケットのヘッダ内の「messageType」を参照して、処理対象のパケットがSYNCメッセージなのか、DELAY_REQメッセージなのか、DELAY_RESPメッセージなのかを識別する。第1のパケット処理部703は、たとえば、組合せ回路により構成される。
第2のパケット処理部704は、パケットの種類を識別する。第2のパケット処理部704は、たとえば、パケットのヘッダ内の「messageType」を参照して、処理対象のパケットがSYNCメッセージなのか、DELAY_REQメッセージなのか、DELAY_RESPメッセージなのかを識別する。また、第2のパケット処理部704は、パケットの送信元が代表スレーブか否かを識別する。第2のパケット処理部704は、たとえば、組合せ回路により構成される。また、スイッチ705は、第1の送受信部701および第2の送受信部702に対し、パケットが送信されるポートを振り分ける。
取得部706は、第1のパケット処理部703および第2のパケット処理部704により種別が特定されたパケットから、時刻情報を取得する。具体的には、たとえば、取得部706は、パケットの共通ヘッダ内の「correctionField」に格納されている値を取得する。また、取得部706は、図3および図4に示したように、パケットの「origintimestamp」に格納されている値を取得する。たとえば、図6において、マスタ101からのSYNCメッセージの場合、取得部706は、「origintimestamp」の値である「7」を取得し、「correctionField」の値である「0.5」を取得する。そして、取得部706は、取得した時刻情報を管理テーブル500に格納する。
また、取得部706は、第1のパケット処理部703および第2のパケット処理部704において処理されたパケットについて、タイムスタンプを取得する。具体的には、たとえば、取得部706は、パケットの受信時刻や送信時刻を取得する。また、取得部706は、同一パケットについての送信時刻から受信時刻を引いた滞留時間を取得する。取得部706は、取得した時刻情報を管理テーブル500に格納する。なお、取得部706は、組合せ回路により構成してもよく、また、プロセッサにプログラムを実行させることにより実現してもよい。
制御部707は、第2のパケット処理部704によるパケットの種別の識別結果により、当該パケットの転送を制御する。具体的には、たとえば、制御部707は、送信元が代表スレーブであるDELAY_REQメッセージについては、スイッチ705により宛先となるマスタ101を指定して第1のパケット処理部703に渡す。一方、制御部707は、送信元が代表スレーブでないDELAY_REQメッセージの場合、当該DELAY_REQメッセージを廃棄する。また、制御部707は、送信元が代表スレーブでないDELAY_REQメッセージの場合、その宛先を存在しない宛先に設定することとしてもよい。
算出部708は、取得部706によって取得されて管理テーブル500に格納された情報を用いて、上述したように、伝送遅延Td1、オフセットToffTC、推定受信時刻T4Bを算出する。なお、伝送遅延Td1が既知であり管理テーブル500に格納されている場合は、算出部708は、管理テーブル500から読み出すだけでよい。また、オフセットToffTCが管理テーブル500に格納されている場合も、算出部708は、管理テーブル500から読み出すだけでよい。
生成部709は、算出部708によって算出された推定受信時刻T4Bを含むパケットを生成する。具体的には、たとえば、生成部709は、推定送信時刻T4Bのナノセカンド部分を、DELAY_RESPメッセージのorginTimestampに設定する。また、生成部709は、滞留時間Tr2から推定送信時刻T4Bのナノセカンド以下の部分を引いた値を、DELAY_RESPメッセージのcorrectionFieldに設定する。そして、生成部709は、生成したDELAY_REQメッセージを第2のパケット処理部704に渡す。これにより、生成されたDELAY_REQメッセージが、宛先となるスレーブに送信される。したがって、マスタ101の通信負荷の低減を図りつつ、スレーブでの時刻同期を実現することができる。
なお、取得部706、制御部707、算出部708、および生成部709は、組合せ回路により構成してもよく、また、記憶装置に記憶されたプログラムをプロセッサに実行させることによりその機能を実現することとしてもよい。
<中継処理手順>
図8は、実施例1にかかる中継装置102の中継処理手順例を示すフローチャートである。まず、中継装置102は、パケットの受信を待ち受け(ステップS801:No)、パケットを受信した場合(ステップS801:Yes)、パケットの受信処理を実行する(ステップS802)。つぎに、中継装置102は、受信したパケットについてタイムスタンプを取得する(ステップS803)。これにより、受信したパケットの受信時刻が得られる。
このあと、中継装置102は、受信したパケットの種類を識別する(ステップS804)。受信したパケットがSYNCメッセージである場合(ステップS804:SY)、第1の送信パケット処理を実行する(ステップS805)。第1の送信パケット処理(ステップS805)とは、受信パケットを宛先に転送する処理である。
具体的には、中継装置102は、配下のスレーブ群にマルチキャストする。また、中継装置102は、SYNCメッセージの送信時にタイムスタンプを取得する。これにより、送信したSYNCメッセージの送信時刻が得られる。このあと、中継装置102は、滞留時間Tr1を取得する。そして、中継装置102は、管理テーブル500を更新する。これにより、第1の送信パケット処理(ステップS805)が終了する。
また、ステップS804において、受信したパケットの種類がDELAY_REQメッセージである場合(ステップS804:DQ)、第2の送信パケット処理を実行する(ステップS806)。第2の送信パケット処理(ステップS806)の詳細については、図9において後述する。
また、ステップS804において、受信したパケットの種類がDELAY_RESPメッセージである場合(ステップS804:DR)、第3の送信パケット処理を実行する(ステップS807)。第3の送信パケット処理(ステップS807)とは、受信パケットを宛先に転送する処理である。具体的には、中継装置102は、代表スレーブと接続するポートを選択して、代表スレーブにDELAY_RESPメッセージを送信する。これにより、第3の送信パケット処理(ステップS807)が終了する。
なお、代表スレーブにDELAY_RESPメッセージが送信された場合、代表スレーブは、当該DELAY_RESPメッセージを受信する。つぎに、代表スレーブであるスレーブ103Aは、上述したように、上記式(8)により、オフセットToffAを算出する。そして、スレーブ103Aが計時する時刻Tm+ToffAから、オフセットToffAを引くことにより、スレーブ103Aは、マスタ101と同一の基準時刻Tmに補正することができる。
図9は、実施例1にかかる図8に示した第2の送信パケット処理(ステップS806)の詳細な処理手順例を示すフローチャートである。まず、中継装置102は、受信したパケットの送信元が、特定の送信元であるか否かを判断する(ステップS901)。特定の送信元とは、たとえば、代表スレーブである。特定の送信元である場合(ステップS901:Yes)、中継装置102は、DELAY_REQメッセージの転送処理を実行する(ステップS902)。具体的には、中継装置102は、DELAY_REQメッセージをマスタ101に送信する。
また、中継装置102は、DELAY_REQメッセージの送信時にタイムスタンプを取得する。これにより、送信したDELAY_REQメッセージの送信時刻Ts4Aが得られる。このあと、中継装置102は、滞留時間Tr2を取得する。そして、中継装置102は、管理テーブル500を更新する。これにより、DELAY_REQメッセージの転送処理(ステップS902)が終了する。
つぎに、中継装置102は、DELAY_REQメッセージの転送拒否設定を実行する(ステップS903)。具体的には、たとえば、中継装置102は、DELAY_REQメッセージを廃棄するか、DELAY_REQメッセージの宛先を存在しないアドレスに変更する。廃棄の場合は、DELAY_REQメッセージは送信されない。アドレス変更の場合は、DELAY_REQメッセージは送信されるが、マスタ101には到達しない。いずれにしても、マスタ101の通信負荷の低減化を図ることができる。
そして、中継装置102は、転送拒否したDELAY_REQメッセージが仮にマスタ101に転送され、かつ、マスタ101から応答としてDELAY_RESPメッセージが送信されてきた場合のDELAY_RESPメッセージの推定送信時刻T4Bを算出する(ステップS904)。具体的には、中継装置102は、上記式(9)により推定送信時刻T4Bを算出する。中継装置102は、マスタ101からDELAY_RESPメッセージを受信しなくても、DELAY_RESPメッセージの送信時刻を得ることができる。
このあと、中継装置102は、推定送信時刻T4Bを含むDELAY_RESPメッセージを生成し(ステップS905)、生成したDELAY_RESPメッセージを、DELAY_REQメッセージの送信元のスレーブに送信する(ステップS906)。これにより、マスタ101からDELAY_RESPメッセージを受信しなくても、中継装置102は、DELAY_RESPメッセージの代理応答をすることができる。
なお、DELAY_RESPメッセージが代理応答された場合、宛先となるスレーブは、当該DELAY_RESPメッセージを受信する。つぎに、受信したスレーブであるスレーブ103Bは、上述したように、上記式(12)により、オフセットToffBを算出する。そして、スレーブ103Bが計時する時刻Tm+ToffBから、オフセットToffBを引くことにより、スレーブ103Bは、マスタ101と同一の基準時刻Tmに補正することができる。
このように、実施例1によれば、代表スレーブ以外の残余のスレーブからのDELAY_REQメッセージの転送を拒否することにより、マスタ101におけるDELAY_RESPメッセージの受信負荷と、その応答となるDELAY_RESPメッセージの送信負荷の低減化を図ることができる。特に、残余のスレーブの台数が多ければ多いほど、通信負荷の低減効率を上げることができる。また、中継装置102が、マスタ101に替わってDELAY_RESPメッセージの代理応答をすることにより、残余のスレーブでの時刻同期処理が保証される。
つぎに、実施例2について説明する。実施例1では、中継装置102は、上記式(9)によりマスタ101でのDELAY_RESPメッセージの推定送信時刻T4Bを求めた。これに対し、実施例2では、代表スレーブ以外の残余のスレーブからのDELAY_REQメッセージの滞留時間Tr3を求めてから、当該DELAY_REQメッセージの転送拒否を実行する。このように、中継装置102は、DELAY_REQメッセージごとに個別に滞留時間Tr3を求め、式(9)で用いた滞留時間Tr2に替えて、算出したTr3を用いて、マスタ101でのDELAY_RESPメッセージの推定送信時刻T4Bを算出する。これにより、残余のスレーブごとに個別の時刻補正をおこなうことができ、残余のスレーブでの時刻補正の高精度化を図ることができる。
以下、実施例2について詳細に説明するが、実施例1と同一内容については同一符号を付し、その説明を省略する。
<時刻同期処理シーケンス>
図10は、実施例2にかかる時刻同期処理例を示すシーケンス図である。実施例1との違いについて説明する。
実施例1では、式(10)において、スレーブ103BからのDELAY_REQメッセージの滞留時間には、スレーブ103AからのDELAY_REQメッセージの滞留時間Tr2を用いた。
これに対し、実施例2では、中継装置102が、スレーブ103BからのDELAY_REQメッセージをマスタ101へ送信した時刻Ts4Bを得て、滞留時間Tr3を取得する。滞留時間Tr3は、下記式(14)により求められる。
Tr3=Ts4B−Ts3B・・・(14)
ここで、受信時刻Ts3Bを実施例1と同様、Ts3B=663[ns]とし、送信時刻Ts4BをTs4B=713[ns]とする。
中継装置102は、実施例1と同様、DELAY_REQメッセージのマスタ101での推定受信時刻T4Bを算出する。実施例2では、マスタ101での推定受信時刻T4Bは、受信時刻Ts3Bに、中継装置102のオフセットToffTCと、滞留時間Tr3と、伝送遅延Tr1と、を加算した時間として、下記式(15)により算出される。上記式(9)との違いは、右辺第2項がTr2からTr3に替わった点である。
T4B=Ts3B+Tr3+Td1−ToffTC・・・(15)
受信時刻Ts3Bは、管理テーブル500のTb項目に上書きされた値「663」である。滞留時間Tr3は、上記式(14)により算出される。ここでは、滞留時間Tr3は、Tr3=713−663=50[ns]となる。算出された滞留時間Tr3は、管理テーブル500のTC_IV_delay項目に上書きされる。伝送遅延Td1は、管理テーブル500のmean_path_delay項目に格納された値「0.5」である。オフセットToffTCは、管理テーブル500のTC_IV_offset_from_master項目に格納された値「100」である。これにより、中継装置102は、推定算出時刻T4B=613.5[ns]を算出する。
実施例2では、中継装置102は、推定算出時間T4Bのナノセカンド部分である「613」を、管理テーブル500のT4_OriginTimestamp項目に上書きする。また、中継装置102は、管理テーブル500のTC_IV_delay項目に格納された値「50」である滞留時間Tr2から、推定算出時間T4Bのナノセカンド部分以下である「0.5」を引いた値「49.5」を、管理テーブル500のT4_correctionField項目に上書きする。
そして、中継装置102は、算出された推定算出時刻T4Bを含むDELAY_RESPメッセージを生成する。具体的には、中継装置102は、マスタ101と同様の処理により、DELAY_RESPメッセージを生成する。中継装置102は、たとえば、推定送信時刻T4Bのナノセカンド部分を、DELAY_RESPメッセージのorginTimestampに設定する。また、中継装置102は、滞留時間Tr2から推定送信時刻T4Bのナノセカンド以下の部分を引いた値をT4_correctionField項目から読み出し、DELAY_RESPメッセージのcorrectionFieldに設定する。
たとえば、推定送信時刻T4B=613.5[ns]、滞留時間Tr3=50[ns]とすると、DELAY_RESPメッセージのorginTimestampには、「613」が格納され、DELAY_RESPメッセージのcorrectionFieldには、「49.5」が格納される。そして、中継装置102は、式(15)で算出された推定受信時刻T4Bを含むDELAY_RESPメッセージを生成し、スレーブ103Bに送信する。これにより、中継装置102は、マスタ101に替わって、DELAY_RESPメッセージの代理応答をすることができる。
また、実施例2の場合、スレーブ103Bからみると、マスタ101におけるDELAY_RESPの推定受信時刻T4Bは、下記式(16)により表現される。上記式(10)との違いは、右辺第7項がTr2からTr3に替わった点である。
T4B=T1+Td1+Tr1+Td2B+(T3B−T2B)+Td2B+Tr3+Td1・・・(16)
上記式(16)では、スレーブ103BからのDELAY_REQメッセージの滞留時間には、スレーブ103BからのDELAY_REQメッセージの滞留時間Tr3を用いた。伝送遅延Td1および伝送遅延Td2Bは未知の値であるため、スレーブ103Bは、式(16)を解くことにより伝送遅延Td1および伝送遅延Td2Bの総和TdBを求めることができる。スレーブ103Bが取得したSYNCメッセージの時刻情報とDELAY_RESPメッセージの時刻情報を参照すると、上記式(16)は、下記式(17)のように表現される。中継装置102は、下記式(17)により伝送遅延の総和TdBを求めることができる。
TdB=Td1+Td2B
={(T2B−T3B)
+(RESP_Time−SYNC_Time)
−SYNC_correction
−RESP_correction}/2・・・(17)
上記式(17)において、「RESP_Time」は、DELAY_RESPメッセージのOriginTimestampの値「613」である。また、「SYNC_Time」は、SYNCメッセージのOriginTimestampの値(7)である。また、「SYNC_correction」は、SYNCメッセージのcorrectionFieldの値「200.5」である。
また、「RESP_correction」は、DELAY_RESPメッセージのcorrectionFieldの値「49.5」である。DELAY_RESPメッセージのcorrectionFieldの値「49.5」は、滞留時間Tr3=50から推定受信時刻T4B=613.5のナノセカンド以下の部分である0.5を引いた値である。
スレーブ103Bは、上記(17)式を解くことにより、伝送遅延Td1および伝送遅延Td2Bの総和TdBを算出することができる。本例の場合、TdB=3.5[ns]となる。
また、スレーブ103BのオフセットToffBは、実施例1と同様、上記式(13)により求めることができる。上記式(13)において、「SYNC_Time」は、SYNCメッセージのOriginTimestampの値「7」である。また、「SYNC_correction」は、SYNCメッセージのcorrectionFieldの値「200.5」である。本例では、オフセットToffB=40[ns]が算出される。
スレーブ103Bは、スレーブ103Bが計時する時刻Tm+ToffBから、算出されたオフセットToffBを引くことにより、マスタ101と同一の基準時刻Tmに補正することができる。このように、実施例2によれば、残余のスレーブごとに個別の時刻補正をおこなうことができ、残余のスレーブでの時刻補正の高精度化を図ることができる。
<管理テーブル500>
図11は、実施例2にかかる管理テーブルの記憶内容の一例を示す説明図である。管理テーブル500は、メモリなどの記憶装置に記憶される。中継装置102は、実施例1と同様、スレーブ103AからDELAY_REQメッセージを受信すると、タイムスタンプとして取得した受信時刻Ts3A=561[ns]をTb項目に上書きする。そして、中継装置102は、実施例1と同様、スレーブ103BからDELAY_REQメッセージを受信すると、タイムスタンプとして取得した受信時刻Ts3B=663[ns]をTb項目に上書きする。
また、中継装置102は、実施例1と同様、マスタ101からDELAY_RESPメッセージを受信すると、受信時刻T4Aのナノセカンド部分である「561」を、管理テーブル500のT4_OriginTimestamp項目に格納する。また、中継装置102は、管理テーブル500のTC_IV_delay項目に格納された値「100」である滞留時間Tr2から、受信時刻T4Aのナノセカンド部分以下である「0.5」が引かれた値「99.5」を、管理テーブル500のT4_correctionField項目に格納する。
また、中継装置102は、スレーブ103BからDELAY_REQメッセージを受信すると、マスタ101での受信時刻を推定する。当該DELAY_REQメッセージの推定算出時刻T4Bのナノセカンド部分である「663」を、管理テーブル500のT4_OriginTimestamp項目に格納する。また、中継装置102は、管理テーブル500のTC_IV_delay項目に格納された値「50」である滞留時間Tr3から、推定算出時間T4Bのナノセカンド部分以下である「0.5」を引いた値「49.5」を、管理テーブル500のT4_correctionField項目に上書きする。
<中継装置102の構成例>
図12は、実施例2にかかる中継装置102の構成例を示すブロック図である。実施例1との違いは、制御部707が、第1のパケット処理部703に接続される点である。すなわち、制御部707は、第1のパケット処理部703により、スレーブ103BからのDELAY_REQメッセージの送信時刻Ts4Bを取得してから、当該DELAY_REQメッセージを廃棄または存在しないアドレスに転送する。
<第2の送信パケット処理>
図13は、実施例2にかかる図8に示した第2の送信パケット処理(ステップS806)の詳細な処理手順例を示すフローチャートである。実施例2では、特定の送信元でない場合(ステップS901:No)、DELAY_REQメッセージの転送拒否設定(ステップS903)の前に、中継装置102は、タイムスタンプを取得して、滞留時間Tr3を算出する(ステップS1302)。具体的には、DELAY_REQメッセージの受信時刻Ts3Bについては、図8のステップS803で取得済みであるため、ステップS1302では、中継装置102は、転送拒否されるDELAY_REQメッセージの送信時刻Ts4Bを取得する。そして、中継装置102は、上記式(14)により滞留時間Tr3を算出する。
これにより、ステップS1304では、中継装置102は、ステップS1302で算出された滞留時間Tr3を用いて、上記式(15)により推定送信時刻T4Bを算出することになる(ステップS1304)。
このように、実施例2によれば、実施例1と同様、マスタ101のDELAY_REQメッセージの受信負荷と、マスタ101のDELAY_RESPメッセージの送信負荷と、の低減化を図ることができる。また、中継装置102は、代表スレーブ以外の残余のスレーブごとに、DELAY_REQメッセージの滞留時間を求め、当該滞留時間を用いて、残余のスレーブごとに推定送信時刻を求める。したがって、実施例1よりも高精度な時刻補正を実現することができる。
以上説明したように、本実施の形態によれば、マスタ101の通信負荷の低減化を図ることができる。これにより、マスタ101と中継装置102間の通信が低減されるため、代表スレーブ以外の残余のスレーブについての時刻同期処理の短縮化を図ることができる。
なお、上述した実施の形態では、伝送遅延Td1を計算により求めたが、既知の値であれば、あらかじめメモリなどの記憶装置に格納しておき、オフセットToffTCや推定受信時刻T4Bの算出に用いればよい。
同様に、滞留時間Tr1、Tr2、Tr3についても、既知の値であれば、あらかじめメモリなどの記憶装置に格納しておき、オフセットToffTCや推定受信時刻T4Bの算出に用いればよい。
なお、上述した実施の形態では、ONE STEP CLOCKを例に挙げて説明したが、TWO STEP CLOCKにも適用可能である。TWO STEP CLOCKは、マスタ101からのSYNCメッセージの時刻T1をSYNCメッセージではなくFOLLOW_UPメッセージの送信時刻とする。時刻T1はSYNCメッセージの送信時刻を示すが、SYNCメッセージに時刻を埋め込んでから実際にSYNCメッセージが送信するまで必然的に時間のずれが発生する。誤差要因となるこのずれに対処した方法がTWO STEP CLOCKである。
TWO STEP CLOCKでは、マスタ101はSYNCメッセージに時刻T1を埋め込まない。中継装置102は、ONE STEP CLOCKと同様に、SYNCメッセージに滞留時間Tr1を加算する。また、SYNCメッセージの中継装置102からの送信時刻Ts2、SYNCメッセージのスレーブ103Aでの受信時刻T2A、SYNCメッセージのスレーブ103Bでの受信時刻T2Bとする点についても、ONE STEP CLOCKと同様である。
TWO STEP CLOCKでは、この後、時刻T1がFOLLOW_UPメッセージで伝達される。なお、FOLLOW_UPメッセージは中継装置102において滞留時間Tr1を加算されることなく、透過的にスレーブにマルチキャストされる。中継装置102およびスレーブは、FOLLOW_UPメッセージ内のpreciseOriginTimestampをSYNCメッセージ内のOrigin Timestampに足し合わせる。また、中継装置102およびスレーブは、FOLLOW_UPメッセージのcorrectionFieldをSYNCメッセージのcorrectionFieldに足し合わせる。
これにより、マスタ101から中継装置102までの伝送遅延と、マスタ101と中継装置102との時計のずれであるオフセットと、を、ONE STEP CLOCKと同様の数式により計算することができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
101 マスタ
102 中継装置
103A スレーブ
103B スレーブ
500 管理テーブル
700 計時部
701 第1の送受信部
702 第2の送受信部
703 第1のパケット処理部
704 第2のパケット処理部
705 スイッチ
706 取得部
707 制御部
708 算出部
709 生成部

Claims (7)

  1. 送信元装置から送信先装置群に第1のパケット群を転送した場合に、前記送信先装置群の各々の送信先装置から前記送信元装置に送信される第2のパケット群を受信する受信部と、
    前記受信部によって各送信先装置から受信された第2のパケット群のうち特定の送信先装置以外のいずれかの送信先装置からのパケットの受信時刻と、前記第2のパケット群のうち前記特定の送信先装置から前記送信元装置へ前記パケットに先行して送信される特定のパケットを受信してから前記送信元装置に送信するまでの滞留時間と、を取得する取得部と、
    前記パケットを前記送信元装置に転送しないように制御する制御部と、
    前記第1のパケット群が前記送信元装置から送信されてから受信されるまでの伝送遅延時間と、前記送信元装置が計時する時刻からのずれ時間と、前記取得部によって取得された受信時刻および滞留時間と、に基づいて、前記パケットが前記いずれかの送信先装置から前記送信元装置に送信された場合における前記送信元装置での前記パケットの推定受信時刻を算出する算出部と、
    前記算出部によって算出された推定受信時刻を含み、かつ、前記いずれかの送信先装置を宛先とする前記パケットに対する応答パケットを生成する生成部と、
    前記生成部によって生成された応答パケットを前記いずれかの送信先装置に送信する送信部と、
    を有することを特徴とする中継装置。
  2. 前記取得部は、前記送信元装置からの前記第1のパケット群の送信時刻と、前記送信先装置群への前記第1のパケット群の送信時刻と、前記第1のパケット群を受信してから前記送信先装置群に送信するまでの滞留時間と、前記第2のパケット群のうち前記特定の送信先装置から前記送信元装置へ前記パケットに先行して送信される特定のパケットの受信時刻と、前記特定のパケットの前記送信元装置での受信時刻と、を取得し、
    前記算出部は、
    前記取得部によって取得された前記送信元装置からの前記第1のパケット群の送信時刻と、前記送信先装置群への前記第1のパケット群の送信時刻と、前記第1のパケット群を受信してから前記送信先装置群に送信するまでの滞留時間と、前記特定のパケットの受信時刻と、前記特定のパケットの前記送信元装置での受信時刻と、前記特定のパケットを受信してから前記送信元装置に送信するまでの滞留時間と、に基づいて、前記伝送遅延時間を算出し、
    算出された前記伝送遅延時間と、前記送信元装置が計時する時刻からのずれ時間と、前記いずれかの送信先装置からの前記パケットの受信時刻と、前記特定のパケットを受信してから前記送信元装置に送信するまでの滞留時間と、に基づいて、前記推定受信時刻を算出することを特徴とする請求項1に記載の中継装置。
  3. 前記算出部は、
    前記送信元装置からの前記第1のパケット群の送信時刻と、前記送信先装置群への前記第1のパケット群の送信時刻と、前記第1のパケット群を受信してから前記送信先装置群に送信するまでの滞留時間と、前記伝送遅延時間と、に基づいて、前記送信元装置が計時する時刻からのずれ時間を算出し、
    前記伝送遅延時間と、算出された前記送信元装置が計時する時刻からのずれ時間と、前記いずれかの送信先装置からの前記パケットの受信時刻と、前記特定のパケットを受信してから前記送信元装置に送信するまでの滞留時間と、に基づいて、前記推定受信時刻を算出することを特徴とする請求項1または2に記載の中継装置。
  4. 送信元装置から送信先装置群に第1のパケット群を転送した場合に、前記送信先装置群の各々の送信先装置から前記送信元装置に送信される第2のパケット群を受信する受信部と、
    前記受信部によって各送信先装置から受信された第2のパケット群のうち特定の送信先装置以外のいずれかの送信先装置からのパケットの受信時刻と、前記パケットを受信してから前記送信元装置に送信するまでの滞留時間と、を取得する取得部と、
    前記取得部による前記滞留時間の取得後に、前記パケットを前記送信元装置に転送しないように制御する制御部と、
    前記第1のパケット群が前記送信元装置から送信されてから受信されるまでの伝送遅延時間と、前記送信元装置が計時する時刻からのずれ時間と、前記取得部によって取得された受信時刻および滞留時間と、に基づいて、前記パケットが前記いずれかの送信先装置から前記送信元装置に送信された場合における前記送信元装置での前記パケットの推定受信時刻を算出する算出部と、
    前記算出部によって算出された推定受信時刻を含み、かつ、前記いずれかの送信先装置を宛先とする前記パケットに対する応答パケットを生成する生成部と、
    前記生成部によって生成された応答パケットを前記いずれかの送信先装置に送信する送信部と、
    を有することを特徴とする中継装置。
  5. 前記取得部は、前記送信元装置からの前記第1のパケット群の送信時刻と、前記送信先装置群への前記第1のパケット群の送信時刻と、前記第1のパケット群を受信してから前記送信先装置群に送信するまでの滞留時間と、前記第2のパケット群のうち前記特定の送信先装置から前記送信元装置へ前記パケットに先行して送信される特定のパケットの受信時刻と、前記特定のパケットの前記送信元装置での受信時刻と、を取得し、
    前記算出部は、
    前記取得部によって取得された前記送信元装置からの前記第1のパケット群の送信時刻と、前記送信先装置群への前記第1のパケット群の送信時刻と、前記第1のパケット群を受信してから前記送信先装置群に送信するまでの滞留時間と、前記特定のパケットの受信時刻と、前記特定のパケットの前記送信元装置での受信時刻と、前記パケットを受信してから前記送信元装置に送信するまでの滞留時間と、に基づいて、前記伝送遅延時間を算出し、
    算出された前記伝送遅延時間と、前記送信元装置が計時する時刻からのずれ時間と、前記いずれかの送信先装置からの前記パケットの受信時刻と、前記パケットを受信してから前記送信元装置に送信するまでの滞留時間と、に基づいて、前記推定受信時刻を算出することを特徴とする請求項4に記載の中継装置。
  6. 前記算出部は、
    前記送信元装置からの前記第1のパケット群の送信時刻と、前記送信先装置群への前記第1のパケット群の送信時刻と、前記第1のパケット群を受信してから前記送信先装置群に送信するまでの滞留時間と、前記伝送遅延時間と、に基づいて、前記送信元装置が計時する時刻からのずれ時間を算出し、
    前記伝送遅延時間と、算出された前記送信元装置が計時する時刻からのずれ時間と、前記いずれかの送信先装置からの前記パケットの受信時刻と、前記パケットを受信してから前記送信元装置に送信するまでの滞留時間と、に基づいて、前記推定受信時刻を算出することを特徴とする請求項4または5に記載の中継装置。
  7. 送信元装置から送信先装置群に第1のパケット群を転送した場合に、前記送信先装置群の各々の送信先装置から前記送信元装置に送信される第2のパケット群を受信する受信工程と、
    前記受信工程によって各送信先装置から受信された第2のパケット群のうち特定の送信先装置以外のいずれかの送信先装置からのパケットの受信時刻と、前記第2のパケット群のうち前記特定の送信先装置から前記送信元装置へ前記パケットに先行して送信される特定のパケットを受信してから前記送信元装置に送信するまでの滞留時間と、を取得する取得工程と、
    前記パケットを前記送信元装置に転送しないように制御する制御工程と、
    前記第1のパケット群が前記送信元装置から送信されてから受信されるまでの伝送遅延時間と、前記送信元装置が計時する時刻からのずれ時間と、前記取得工程によって取得された受信時刻および滞留時間と、に基づいて、前記パケットが前記いずれかの送信先装置から前記送信元装置に送信された場合における前記送信元装置での前記パケットの推定受信時刻を算出する算出工程と、
    前記算出工程によって算出された推定受信時刻を含み、かつ、前記いずれかの送信先装置を宛先とする前記パケットに対する応答パケットを生成する生成工程と、
    前記生成工程によって生成された応答パケットを前記いずれかの送信先装置に送信する送信工程と、
    を有することを特徴とする中継方法。
JP2012267209A 2012-12-06 2012-12-06 中継装置および中継方法 Withdrawn JP2014116672A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012267209A JP2014116672A (ja) 2012-12-06 2012-12-06 中継装置および中継方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012267209A JP2014116672A (ja) 2012-12-06 2012-12-06 中継装置および中継方法

Publications (1)

Publication Number Publication Date
JP2014116672A true JP2014116672A (ja) 2014-06-26

Family

ID=51172291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012267209A Withdrawn JP2014116672A (ja) 2012-12-06 2012-12-06 中継装置および中継方法

Country Status (1)

Country Link
JP (1) JP2014116672A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016063427A (ja) * 2014-09-18 2016-04-25 Kddi株式会社 Ponシステム、onu、oltおよび伝送方法
WO2024189860A1 (ja) * 2023-03-15 2024-09-19 日本電信電話株式会社 転送装置、転送方法およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016063427A (ja) * 2014-09-18 2016-04-25 Kddi株式会社 Ponシステム、onu、oltおよび伝送方法
WO2024189860A1 (ja) * 2023-03-15 2024-09-19 日本電信電話株式会社 転送装置、転送方法およびプログラム

Similar Documents

Publication Publication Date Title
EP3491753B1 (en) System and methods for network synchronization
US8913514B2 (en) Communication control unit and communication control system
US10158444B1 (en) Event-driven precision time transfer
US8873588B2 (en) Network distributed packet-based synchronization
EP2801162B1 (en) Method and apparatus for communicating time information between time-aware devices
US8953645B2 (en) Communication system, communication apparatus and time synchronization method
US8730868B2 (en) Network node, time synchronization method and network system
KR101479483B1 (ko) 지연의 비대칭을 보정하는 방법
KR101290643B1 (ko) 광 전송 네트워크에서 시간 동기화 프로토콜을 베어링하는 방법 및 시스템
JP5804086B2 (ja) ノード装置および時刻同期方法
JP2015531216A (ja) 通信ネットワークにおいて、高精度時刻プロトコルによって配信クロックを同期するための方法
US8644350B2 (en) Packet-based timing measurement
JP6227888B2 (ja) 通信システム、同期システム、通信方法
JP2009065579A (ja) 時刻同期システム、時刻同期方法、ノード及びプログラム
KR20090071923A (ko) 동기식 이더넷에서 단일 타임 싱크 프레임을 이용한 통신단말 및 브리지 장치의 시간 동기화 방법 및 그 장치
JP5426695B2 (ja) 少なくとも1つのタイミング配信プロトコルにより第1のデータおよび第2のデータを別々に伝送することによってクロックを同期するための方法、ならびに関連するシステムおよびモジュール
US9912693B1 (en) Identification of malicious precise time protocol (PTP) nodes
JP2014116672A (ja) 中継装置および中継方法
JP2001036538A (ja) 時刻同期方法及びその装置
KR20150016735A (ko) 중앙 집중 제어 평면을 이용한 네트워크 시각 동기 시스템
CN110224777A (zh) 一种基于1588协议传递时间的方法及其系统
US20160128012A1 (en) Communication system, communication system control method, transmission device, and reception device
WO2012118177A1 (ja) 同期装置、時刻管理方法及びコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141211

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150904

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20150917