(57)【特許請求の範囲】
【請求項１】
対向装置間の時刻同期のために送受信される同期メッセージフレーム内の対象バイトが自装置に入力されてから出力されるまでの時間である滞留時間を計時する計時手段と、
前記同期メッセージフレーム内の中継装置での遅延総和量を示す遅延量フィールドを書き換える書き換え手段と、
前記同期メッセージフレームから前記遅延量フィールドを構成する全バイト列を、前記対象バイトの自装置からの出力以降のタイミングで一括抽出して前記書き換え手段に供給する制御手段と、を備え、
前記書き換え手段は、前記遅延量フィールドの設定値に前記滞留時間を加算して算出した算出値を前記遅延量フィールドに上書きし、
外部から入力された前記同期メッセージフレームを構成するバイト列を一時格納する第１バッファと、
出力待ちとなる前記同期メッセージフレームを構成するバイト列を一時格納する第２バッファと、をさらに備え、
前記制御手段は、前記遅延量フィールドよりも前に設定されて前記対象バイトを含むバイト列である前方バイト列を、前記第１バッファに格納された前記同期メッセージフレームから読み出して前記第２バッファに格納し、
前記計時手段は、前記第１バッファに前記対象バイトが入力されたタイミングから、前記第２バッファから前記対象バイトが出力されるタイミングまでの時間を基に前記滞留時間を算出する、通信装置。
【請求項２】
前記制御手段は、前記前方バイト列を前記第２バッファから出力すると略同時に、前記遅延量フィールドを構成する全バイト列を一括して前記第１バッファから読み出して前記書き換え手段に供給する、請求項１に記載の通信装置。
【請求項３】
前記制御手段は、前記遅延量フィールドと関連する関連フィールドを前記前方バイト列に含めないように制御し、前記遅延量フィールドを構成する全バイト列と同時に前記関連フィールドを構成する全バイト列を前記第１バッファから読み出して前記書き換え手段に供給し、
前記書き換え手段は、前記遅延量フィールドの書き換えに応じて前記関連フィールドを書き換える、
請求項１または請求項２に記載の通信装置。
【請求項４】
対向装置間の時刻同期のために送受信される同期メッセージフレーム内の対象バイトが自装置に入力されてから出力されるまでの時間である滞留時間を計時する計時手段と、
前記同期メッセージフレーム内の中継装置での遅延総和量を示す遅延量フィールドを書き換える書き換え手段と、
前記同期メッセージフレームから前記遅延量フィールドを構成する全バイト列を、前記対象バイトの自装置からの出力以降のタイミングで一括抽出して前記書き換え手段に供給する制御手段と、を備え、
前記書き換え手段は、前記遅延量フィールドの設定値に前記滞留時間を加算して算出した算出値を前記遅延量フィールドに上書きし、
前記同期メッセージフレームを解析し、前記同期メッセージフレーム内での前記遅延量フィールドの配置位置を特定するフォーマット情報を取得して各処理手段に通知するフォーマット解析手段をさらに備える、通信装置。
【請求項５】
前記フォーマット解析手段は、
前記フォーマット情報を前記同期メッセージフレームにヘッダとして付与することにより通知を行う、請求項４に記載の通信装置。
【請求項６】
前記書き換え手段は、前記ヘッダを破棄する、請求項５に記載の通信装置。
【請求項７】
対向装置間の時刻同期のために送受信される同期メッセージフレーム内の対象バイトが自装置に入力されてから出力されるまでの時間である滞留時間を計時する計時手段と、
前記同期メッセージフレーム内の中継装置での遅延総和量を示す遅延量フィールドを書き換える書き換え手段と、
前記同期メッセージフレームから前記遅延量フィールドを構成する全バイト列を、前記対象バイトの自装置からの出力以降のタイミングで一括抽出して前記書き換え手段に供給する制御手段と、を備え、
前記書き換え手段は、前記遅延量フィールドの設定値に前記滞留時間を加算して算出した算出値を前記遅延量フィールドに上書きし、
前記対象バイトは、前記同期メッセージフレームの先頭バイトである、通信装置。
【請求項８】
対向装置間の時刻同期のために送受信される同期メッセージフレーム内の対象バイトが通信装置に入力されてから出力するまでの時間である滞留時間を計時し、
中継装置での遅延総和量を示す遅延量フィールドを構成する全バイト列を、前記対象バイトの前記通信装置からの出力以降のタイミングで前記同期メッセージフレームから一括抽出し、
前記遅延量フィールドの設定値に前記滞留時間を加算して算出した算出値を前記遅延量フィールドに上書きし、
前記通信装置は、外部から入力された前記同期メッセージフレームを構成するバイト列を一時格納する第１バッファと、出力待ちとなる前記同期メッセージフレームを構成するバイト列を一時格納する第２バッファと、を備え、
前記遅延量フィールドよりも前に設定されて前記対象バイトを含むバイト列である前方バイト列を、前記同期メッセージフレームを構成するバイト列が格納された前記第１バッファから読み出して前記第２バッファに格納し、
前記第１バッファに前記対象バイトが入力されたタイミングから、前記第２バッファから前記対象バイトが出力されるタイミングまでの時間を基に前記滞留時間を算出する、同期制御方法。
【請求項９】
前記前方バイト列を前記第２バッファから出力し始めるタイミングと、前記遅延量フィールドを構成する全バイト列を記第１バッファから出力し始めるタイミングと、が略同時である、請求項８に記載の同期制御方法。
【請求項１０】
前記遅延量フィールドと関連する関連フィールドを前記前方バイト列に含めないように制御し、
前記遅延量フィールドを構成する全バイト列と同時に前記関連フィールドを構成する全バイト列を前記第１バッファから読み出し、
前記遅延量フィールドの書き換えに応じて前記関連フィールドを書き換える、請求項８または請求項９に記載の同期制御方法。
【請求項１１】
対向装置間の時刻同期のために送受信される同期メッセージフレーム内の対象バイトが通信装置に入力されてから出力するまでの時間である滞留時間を計時し、
中継装置での遅延総和量を示す遅延量フィールドを構成する全バイト列を、前記対象バイトの前記通信装置からの出力以降のタイミングで前記同期メッセージフレームから一括抽出し、
前記遅延量フィールドの設定値に前記滞留時間を加算して算出した算出値を前記遅延量フィールドに上書きし、
前記同期メッセージフレームを解析し、前記同期メッセージフレーム内での前記遅延量フィールドの配置位置を特定する、同期制御方法。
【請求項１２】
前記遅延量フィールドの配置位置を前記同期メッセージフレームにヘッダとして付与する、請求項１１に記載の同期制御方法。
【請求項１３】
対向装置間の時刻同期のために送受信される同期メッセージフレーム内の対象バイトが通信装置に入力されてから出力するまでの時間である滞留時間を計時し、
中継装置での遅延総和量を示す遅延量フィールドを構成する全バイト列を、前記対象バイトの前記通信装置からの出力以降のタイミングで前記同期メッセージフレームから一括抽出し、
前記遅延量フィールドの設定値に前記滞留時間を加算して算出した算出値を前記遅延量フィールドに上書きし、
前記対象バイトは、前記同期メッセージフレームの先頭バイトである、同期制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び同期制御方法に関し、例えば時刻同期用の同期メッセージフレームを扱う通信装置及び同期制御方法に関する。
【背景技術】
【０００２】
近年、通信装置間の時刻同期を行う技術が注目を集めている。この時刻同期を行う技術仕様として、例えばＩＥＥＥ（Institute of Electrical and Electronic Engineers）１５８８が挙げられる。ＩＥＥＥ１５８８は、ＰＴＰ（Precision Time Protocol）を定めている。このＰＴＰは、ネットワーク内の通信装置の間で精度よく時刻を同期させるためのプロトコルである。【０００３】
以下、ＰＴＰを用いた時刻同期の処理の概略を説明する。当該時刻同期では、マスターノードとスレーブノード間の伝搬遅延時間を測定し、装置内部の時刻情報を伝搬遅延時間によって補正することにより精度の高い時刻合わせを実現する。【０００４】
はじめにマスターノードは、Ｓｙｎｃメッセージを送信する。この際にマスターノードは、Ｓｙｎｃメッセージを送信した時刻ｔ１を保持する。スレーブノードは、Ｓｙｎｃメッセージを受信した時刻ｔ２を保持する。マスターノードは、Ｆｏｌｌｏｗ＿Ｕｐメッセージに時刻ｔ１の情報を挿入して送信する。スレーブノードは、Ｆｏｌｌｏｗ＿Ｕｐメッセージを受信することにより時刻ｔ１の情報を取得する。続いてスレーブノードは、時刻ｔ３にＤｅｌａｙ＿Ｒｅｑメッセージを送信する。マスターノードは、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信した時刻ｔ４の情報をＤｅｌａｙ＿Ｒｅｓｐメッセージに挿入してスレーブノードに送信する。スレーブノードは、Ｄｅｌａｙ＿Ｒｅｓｐメッセージを受信することにより時刻ｔ１〜ｔ４を認識する。伝搬遅延時間は、（（ｔ２−ｔ１）＋（ｔ４−ｔ３））／２という計算式により算出することができる。スレーブノードは、自ノードの時刻に伝搬遅延時間を用いた補正を行うことにより、マスターノードとの時刻合わせを行う。【０００５】
ここで、マスターノードとクライアントノード間の経路には中継装置が存在することが一般的である。各中継装置は、自装置内における処理遅延を計測し、当該処理遅延時間を各同期メッセージフレーム（例えばＦｏｌｌｏｗ＿Ｕｐメッセージ）内のコレクションフィールドに設定する。コレクションフィールドとは、マスターノード及びスレーブノード以外のノード（中継装置等）に同期メッセージフレームが滞留した総和時間（すなわちマスターノードとスレーブノードを除いた全装置における遅延量の総和時間）が設定されるフィールド（遅延量フィールド）である。【０００６】
特許文献１には、マスターノードとスレーブノードに接続され、マスターノードから送信される同期メッセージフレームと、スレーブノードから送信される同期メッセージフレームとに対し、滞留時間が一致するように制御を行う中継装置が開示されている。当該中継装置は、中継装置内での滞留時間を上述のコレクションフィールドに設定している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２１３１０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
一般的な中継装置（特許文献１に記載の中継装置を含む）は、自装置内での滞留時間に応じて同期メッセージフレーム（Ｓｙｎｃメッセージ等）内のコレクションフィールドの書き換え処理を行う。当該書き換え処理を実現するために、中継装置は、同期メッセージフレームを保持するバッファと、中継装置内での滞留時間に応じた値をコレクションフィールドに書き込む書き込み処理部と、を有する。【０００９】
コレクションフィールドの書き換えを行う場合、書き込み処理部にコレクションフィールドの全て（８バイト）が一括して入力される必要がある。一般的な中継装置では、同期メッセージフレームを多重化して送信する際に、フレームを構成するバイト列を分割して書き込み処理部に供給する。この場合、コレクションフィールドの中間を分断したバイト列がバッファから書き込み処理部に供給される場合があった。コレクションフィールドが分断されてバッファから出力された場合、書き込み処理部はコレクションフィールドの書き換えを行うことができないという問題が生じていた。【００１０】
本発明は上述した問題に鑑みてなされたものであり、同期メッセージフレーム内の遅延量フィールドを確実に書き換えることができる通信装置、及び同期制御方法を提供することを主たる目的とする。
【課題を解決するための手段】
【００１１】
本発明にかかる通信装置の一態様は、
対向装置間の時刻同期のために送受信される同期メッセージフレーム内の対象バイトが自装置に入力されてから出力されるまでの時間である滞留時間を計時する計時手段と、
前記同期メッセージフレーム内の中継装置での遅延総和量を示す遅延量フィールドを書き換える書き換え手段と、
前記同期メッセージフレームから前記遅延量フィールドを構成する全バイト列を、前記対象バイトの自装置からの出力以降のタイミングで一括抽出して前記書き換え手段に供給する制御手段と、を備え、
前記書き換え手段は、前記遅延量フィールドの設定値に前記滞留時間を加算して算出した算出値を前記遅延量フィールドに上書きする、ものである。【００１２】
本発明にかかる同期制御方法の一態様は、
対向装置間の時刻同期のために送受信される同期メッセージフレーム内の対象バイトが自装置に入力されてから出力するまでの時間である滞留時間を計時し、
前記同期メッセージフレームから中継装置での遅延総和量を示す前記遅延量フィールドを構成する全バイト列を、前記対象バイトの自装置からの出力以降のタイミングで一括抽出し、
前記遅延量フィールドの設定値に前記滞留時間を加算して算出した算出値を前記遅延量フィールドに上書きする、ものである。
【発明の効果】
【００１３】
本発明では、同期メッセージフレーム内の遅延量フィールドを確実に書き換えることができる通信装置、及び同期制御方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかる通信装置１の構成を示すブロック図である。
【図２】実施の形態１にかかる通信装置１が送信する無線フレームの概略構成を示す図である。
【図３Ａ】Ｅｔｈｅｒｎｅｔ  ＩＩ  Ｏｎｅ  Ｔａｇフォーマットのフィールド構成を示す概念図である。
【図３Ｂ】Ｅｔｈｅｒｎｅｔ  ＩＩ  Ｔｗｏ  Ｔａｇフォーマットのフィールド構成を示す概念図である。
【図３Ｃ】ＩＰｖ４／ＵＤＰ  Ｏｎｅ  Ｔａｇフォーマットのフィールド構成を示す概念図である。
【図４Ａ】実施の形態１にかかる通信装置１の無線フレーム処理（パケット解析）を示す概念図である。
【図４Ｂ】実施の形態１にかかる通信装置１の無線フレーム処理（バッファ２０からのフレーム先頭の出力）を示す概念図である。
【図４Ｃ】実施の形態１にかかる通信装置１の無線フレーム処理（無線フレームの先頭のバッファ６０への格納）を示す概念図である。
【図４Ｄ】実施の形態１にかかる通信装置１の無線フレーム処理（各バッファからの出力）を示す概念図である。
【図４Ｅ】実施の形態１にかかる通信装置１の無線フレーム処理（コレクションフィールドの書き換え処理）を示す概念図である。
【図４Ｆ】実施の形態１にかかる通信装置１の無線フレーム処理（バッファ２０からのフレーム先頭の出力）を示す概念図である。
【図４Ｇ】実施の形態１にかかる通信装置１の無線フレーム処理（コレクションフィールドの書き換え処理）を示す概念図である。
【図５】実施の形態１にかかる通信装置１の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、実施の形態１にかかる通信装置１の構成を示すブロック図である。通信装置１は、各種のデータの送受信処理を行い、いわゆる無線通信機能を備える装置である。たとえば通信装置１は、携帯電話基地局同士を接続する無線通信装置である。なお通信装置１は基地局間を接続する無線通信装置に限られず、時刻同期用のメッセージフレーム（同期メッセージフレーム）を中継できるものであればよい。以下の説明において同期メッセージフレームは、ＩＥＥＥ１５８８に準拠したメッセージフレームであるものとする。また、以下の説明では通信装置１が同期メッセージフレームを無線通信によって送信する動作及び構成を中心に説明するが、通信装置１は同期メッセージフレーム以外の無線フレーム等も適宜送受信できるものとする。
【００１６】
通信装置１は、フォーマット解析部１０、バッファ２０（第１バッファ）、計時部３０、制御部４０、ＣＦ（コレクションフィールド）書き換え部５０、バッファ（第２バッファ）６０、及び多重化部７０を備える。計時部３０は、内部に監視部３１及びタイマ部３２を備える。
【００１７】
通信装置１には、図示しない入力ポートから無線フレームが入力される。フォーマット解析部１０は、入力された無線フレームが同期メッセージフレームに該当するか、及び同期メッセージフレームである場合にはどのフォーマットの同期メッセージフレームであるかを判定する。ここで同期メッセージフレームのメッセージフォーマットとして、例えばＥｔｈｅｒｎｅｔ（登録商標）  ＩＩ  Ｏｎｅ  Ｔａｇ、Ｅｔｈｅｒｎｅｔ  ＩＩ  Ｔｗｏ  Ｔａｇ、ＩＰｖ４／ＵＤＰ  Ｏｎｅ  Ｔａｇ、ＩＰｖ４／ＵＤＰ  Ｔｗｏ  Ｔａｇ、ＩＰｖ４／ＵＤＰ  Ｕｎｔａｇｇｅｄ、ＩＰｖ６／ＵＤＰ  Ｏｎｅ  Ｔａｇ、ＩＰｖ６／ＵＤＰ  Ｔｗｏ  Ｔａｇ、ＩＰｖ６／ＵＤＰ  Ｕｎｔａｇｇｅｄ、等のフォーマットが挙げられる。
【００１８】
はじめに図２を参照して上述の種々のフォーマットに共通するフレーム形式を説明する。フレーム内には、先頭から順にプリアンブル、ＳＦＤ（Start of Frame Delimiter）、Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールドといったようにフィールドが配列される。図示するように、Ｌｅｎ／Ｔｙｐｅフィールドに後続するＤａｔａフィールド及びＰａｄフィールドのバイト数が一定ではない。これは、上述のフレーム種別に応じてデータサイズが異なるためである。
【００１９】
次に図３を参照して各フォーマットのフィールド構成例を説明する。図３（図３Ａ、図３Ｂ、図３Ｃ）は、図２におけるＤｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールド以降のフィールド配置を示す図である。図３Ａは、Ｅｔｈｅｒｎｅｔ  ＩＩ  Ｏｎｅ  Ｔａｇフォーマットのフレームを示す概念図である。図３Ｂは、Ｅｔｈｅｒｎｅｔ  ＩＩ  Ｔｗｏ  Ｔａｇフォーマットのフレームを示す概念図である。図３Ｃは、ＩＰｖ４／ＵＤＰ  Ｏｎｅ  Ｔａｇフォーマットのフレームを示す概念図である。
【００２０】
Ｅｔｈｅｒｎｅｔ  ＩＩ  Ｏｎｅ  Ｔａｇフォーマットのフレーム（図３Ａ）は、Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールド以降に、Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓフィールド、ＴＰＩＤフィールド、Ｅｔｈｅｒｎｅｔ  Ｔｙｐｅフィールド、Ｍｓｇ  Ｔｙｐｅフィールド、ＰＴＰ  Ｖｅｒｓｉｏｎフィールド、コレクションフィールド（遅延量フィールド）を有する。これにより、ＰＴＰ  Ｖｅｒｓｉｏｎフィールドに後続するコレクションフィールドがＤｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールドの先頭から数えて２７バイト目から開始している。
【００２１】
Ｅｔｈｅｒｎｅｔ  ＩＩ  Ｔｗｏ  Ｔａｇフォーマットのフレーム（図３Ｂ）は、Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールド以降に、Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓフィールド、ＯＴＰＩＤフィールド、ＩＴＰＩＤフィールド、Ｅｔｈｅｒｎｅｔ  Ｔｙｐｅフィールド、Ｍｓｇ  Ｔｙｐｅフィールド、ＰＴＰバージョンフィールド、コレクションフィールドを有する。これにより、ＰＴＰ  Ｖｅｒｓｉｏｎフィールドに後続するコレクションフィールドがＤｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールドの先頭から数えて３１バイト目から開始している。
【００２２】
ＩＰｖ４／ＵＤＰ  Ｏｎｅ  Ｔａｇフォーマットのフレーム（図３Ｃ）は、Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールド以降に、Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓフィールド、ＶＬＡＮフィールド、Ｅｔｈｅｒｎｅｔ  Ｔｙｐｅフィールド、ＩＰ  Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓフィールド、ＩＰ  Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールド、ＵＤＰ  Ｓｏｕｒｃｅ  Ｐｏｒｔフィールド、ＵＤＰ  Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔフィールド、Ｌｅｎｇｔｈフィールド、Ｃｈｅｃｋ  Ｓｕｍフィールド、Ｍｓｇ  Ｔｙｐｅフィールド、ＰＴＰ  Ｖｅｒｓｉｏｎフィールド、コレクションフィールドを有する。これにより、コレクションフィールドがＤｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓフィールドの先頭から数えて５５バイト目から開始している。
【００２３】
図３Ａ〜図３Ｃに示すように、フォーマットの種別に応じてフレームを構成するフィールドの構成が異なっている。これにより、コレクションフィールドが同期メッセージフレームの先頭から何バイト目から開始するかが異なる。換言すると、同期メッセージフレームのフォーマット種別が定まるとコレクションフィールドがフレームの先頭から何バイト目から開始するかが一意に定まる。なお、図示しないものの他のフォーマット（ＩＰｖ６／ＵＤＰ  Ｏｎｅ  Ｔａｇ等）についても、フォーマット毎に各フィールドの配置が異なる。
【００２４】
再び図１を参照する。フォーマット解析部１０は、入力された無線フレームが同期メッセージフレーム（ＩＥＥＥ１５８８のメッセージフレーム）であるか否かを判定する。当該判定は、Ｅｔｈｅｒ２フレームの場合にはＥｔｈｅｒＴｙｐｅフィールドの値に応じて行い、ＩＰｖ４またはＩＰｖ６フレームの場合にはＵＤＰ  Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔフィールドの値に応じて行う。以下の説明では、無線フレームが同期メッセージフレームであった場合の処理について説明する。なお同期メッセージフレームではなかった場合、一般的な中継装置等が行う多重化処理や転送処理が適宜実行される。メッセージ種別の判定は、ＭｓｇＴｙｐｅフィールドの値に応じて行われる。
【００２５】
入力された無線フレームが同期メッセージフレームである場合、フォーマット解析部１０は、当該同期メッセージフレームがどのフォーマット（前述のＥｔｈｅｒｎｅｔ  ＩＩ  Ｏｎｅ  Ｔａｇフォーマット等のフォーマット）に該当するかをＥｔｈｅｒ  Ｔｙｐｅフィールドの値から判定する。なお、フォーマット解析部１０は、無線フレームに含まれるタグの数をＴＰＩＤフィールドの値に応じて判定する。そして、フォーマット解析部１０は、解析結果であるフォーマットの種別情報（フォーマット情報）を同期メッセージフレームの先頭にヘッダとして付加する。
【００２６】
なおフォーマット解析部１０は、フォーマット情報を任意のレジスタ等に記載することにより他の処理部からフォーマット情報を識別できるようにしてもよい。しかしながら、ヘッダにフォーマット情報が付与されることにより、他の処理部は入力バイト列を読み出すのみでフォーマット種別を判別することができる。
【００２７】
バッファ２０には、フォーマット解析部１０から上述のヘッダが付与された同期メッセージフレームが入力される。バッファ２０は、後述する制御部４０による読み出し制御処理が行われるまで同期メッセージフレームにかかるバイト列を保持する。
【００２８】
監視部３１は、バッファ２０及びバッファ６０を監視する。詳細には監視部３１は、同期メッセージフレームの先頭バイトがバッファ２０に入力された場合に、タイマ部３２に時間の計測開始を指示する。また監視部３１は、同期メッセージフレームの先頭バイトがバッファ６０から出力された場合に、タイマ部３２に時間の計測終了を指示する。
【００２９】
タイマ部３２は、同期メッセージフレームの先頭バイトがバッファ２０に入力された時点を開始時間とし、バッファ６０から出力された時間を終了時間とする滞留時間を計測する。タイマ部３２は、計測終了後に滞留時間をＣＦ書き換え部５０に通知する。なおタイマ部３２は、上述の時間を計測できる任意のタイマ機能を実現できればよい。
【００３０】
なお計時部３０は、同期メッセージフレームの先頭バイトではなく、例えば同期メッセージフレームの先頭バイトからｎバイト目の入力を監視してもよい。すなわち計時部３０は、対象となるバイト（以下の説明では、対象バイトとも記載する。）の入力を監視する構成であればよい。この場合、計時部３０は、バッファ６０からの出力についても対象バイト（例えば同期メッセージフレームの先頭からｎバイト目）の監視を行う。以下の説明では、対象バイトが同期メッセージフレームの先頭バイトであるものとして説明を行う。
【００３１】
制御部４０は、バッファ２０及びバッファ６０の入出力制御を行う処理部である。詳細には、制御部４０は、バッファ２０に入力された同期メッセージフレームのフォーマット情報をヘッダから読み出す。制御部４０は、読み出したフォーマット情報を基に、コレクションフィールドが同期メッセージフレームの何バイト目から開始するかを認識する。制御部４０は、同期メッセージフレームの先頭バイトを含み、かつコレクションフィールドより前に配置されたバイト列（以下の説明では、前方バイト列とも記載する。）をバッファ２０から読み出してＣＦ書き換え部５０に供給する。
【００３２】
そして制御部４０は、前方バイト列をバッファ６０から読み出して多重化部７０に入力する。制御部４０は、これと同時にバッファ２０からコレクションフィールドを構成する全８バイトをバッファ２０から一括して読み出し、読み出したコレクションフィールドをＣＦ書き換え部５０に供給する。なお制御部４０の動作は、図４Ａ〜図４Ｇを参照して改めて説明する。
【００３３】
ＣＦ書き換え部５０は、バッファ２０から読み出された同期メッセージフレームのバイト列をバッファ６０に転送するとともに、コレクションフィールドの書き換えを行う。ＣＦ書き換え部５０は、フォーマット解析部１０が付与したヘッダの情報を基に同期メッセージフレーム内でのコレクションフィールドの出現バイトを特定する。ＣＦ書き換え部５０は、タイマ部３２から通知された滞留時間に応じてコレクションフィールドを書き換える。
【００３４】
なお、フォーマット解析部１０が付与するヘッダは、コレクションフィールドの特定に用いられるものである。そのためＣＦ書き換え部５０は、当該ヘッダの解析を行った後に、このヘッダにかかるバイト列を破棄してもよい。当該破棄を行うことにより、後述の多重化部７０が多重化を行って同期メッセージフレームを送信する際に、送信する同期メッセージフレームがＩＥＥＥ１５８８のメッセージフォーマットに完全に準拠した状態とすることができる。
【００３５】
バッファ６０は、ＣＦ書き換え部５０から入力された同期メッセージフレームのバイト列を格納する。バッファ６０は、制御部４０による読み出し制御処理が行われるまで同期メッセージフレームにかかるバイト列を保持する。
【００３６】
多重化部７０は、バッファ６０から入力された同期メッセージフレームのバイト列に対して多重化処理を行う。そして多重化部７０は、多重化済みの同期メッセージフレームを他の装置に対して送信する。他の装置は、通信装置１と同様のフレーム中継機能を持つ装置であってもよく、いわゆるマスターノードやスレーブノードに該当する装置であってもよい。
【００３７】
次に図４（図４Ａ〜図４Ｇ）を参照して、通信装置１の同期メッセージフレームの処理の流れについて説明する。図４Ａ〜図４Ｇは、同期メッセージフレームが通信装置１に入力されてから多重化されるまでの一連の流れを時系列に沿って示す概念図である。図４Ａは、図示しない入力ポートから入力された同期メッセージフレームがフォーマット解析部１０を介してバッファ２０に格納されるまでの動作を示す概念図である。
【００３８】
フォーマット解析部１０は、無線フレームのＥｔｈｅｒ Ｔｙｐｅフィールドの値を解析し、ＥｔｈｅｒＴｙｐｅフィールドまたはＵＤＰ  Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔフィールドの値を参照することにより、当該無線フレームが同期メッセージフレームであるか否か、及び同期メッセージフレームである場合のフォーマットを解析する。以下、入力された無線フレームが同期メッセージフレーム（ＩＥＥＥ１５８８のメッセージ）であるものとする。フォーマット解析部１０は、解析結果となるフォーマット情報を同期メッセージフレームのヘッダとして付加する。そしてフォーマット解析部１０は、ヘッダを付加した同期メッセージフレームをバッファ２０に格納する。
【００３９】
計時部３０は、バッファ２０への同期メッセージフレーム入力を監視し、同期メッセージフレームの先頭バイト（上述のヘッダ箇所を除く）がバッファ２０内に格納されたタイミングにタイマ部３２による計時を開始する。また制御部４０は、バッファ２０に入力された同期メッセージフレームのヘッダ（フォーマット解析部１０が付与したヘッダ）からフォーマット（ＩＰｖ４／ＵＤＰ  Ｏｎｅ  Ｔａｇ等）を認識する。
【００４０】
次に図４Ｂを参照して、バッファ２０からのヘッダ（フォーマット情報）及びフレームの先頭の出力処理について説明する。制御部４０は、同期メッセージフレームのフォーマット情報を基に、バッファ２０から上述のヘッダ及び同期メッセージフレームの先頭バイトを含むバイト列（前方バイト列）を読み出してＣＦ書き換え部５０に供給する。上述のようにフォーマットに応じて、同期メッセージフレームの先頭バイトから何バイト目にコレクションフィールドが存在するのかが異なり、フォーマットが定まるとコレクションフィールドの配置位置が一意に特定される。ここで制御部４０は、前方バイト列のみをＣＦ書き換え部５０に供給する。換言すると制御部５０は、コレクションフィールドがバッファ２０に格納された状態のままとなるように読み出し処理を行う。
【００４１】
次に図４Ｃを参照して、同期メッセージフレームの前方バイト列のバッファ６０への格納について説明する。ＣＦ書き換え部５０は、フォーマット解析部１０が付与したヘッダを破棄するとともに、同期メッセージフレームの前方バイト列をバッファ６０に格納する。制御部４０は、この際にコレクションフィールド以降のバイト列をバッファ２０に滞留させたままとする。なお、ヘッダの破棄は上述のように必須の処理ではない。
【００４２】
次に図４Ｄを参照して、各バッファからのバイト列の出力時の動作について説明する。制御部４０は、バッファ６０に格納された同期メッセージフレームの前方バイト列の出力を開始すると同時に、バッファ２０からコレクションフィールドの出力を開始する。ここで制御部４０は、コレクションフィールドが途中で分断されないように読み出しバイト数を決定する。上述のようにコレクションフィールドは８バイトであるため、制御部４０はこの８バイトが分断されないように一括してバッファ２０からバイト列を読み出す。なお、コレクションフィールドが８バイト以上のサイズであることもあり得る。
【００４３】
計時部３０は、バッファ６０から同期メッセージフレームの先頭バイト（対象バイト）が出力されるタイミングを監視する。同期メッセージフレームの先頭バイト（対象バイト）が出力され始めた場合、計時部３０はタイマによる計時を終了し、滞留時間を確定する。計時部３０は、確定した滞留時間をＣＦ書き換え部５０に供給する。
【００４４】
なお上述の説明では、制御部４０は、同期メッセージフレームの前方バイト列の出力開始とコレクションフィールドの出力開始が同時であるものとして説明したが、必ずしも同時でなくてもよく、前方バイト列の出力タイミング以降にコレクションフィールドの出力を開始すればよい。すなわち制御部４０は、バッファ６０から前方バイト列の出力を開始し、その後のタイミングにコレクションフィールドを一括してバッファ２０から出力し始めてもよい。この場合、制御部４０は、バッファ６０内に格納された同期メッセージフレームの一部がバッファ６０内に残存している間にコレクションフィールドがバッファ６０に入力されるように出力タイミングを調整する。これは、ある同期メッセージフレームにかかるバイト列がバッファ６０に無い状態となってしまった場合、後段の多重化部７０による多重化を正常に行えないという不都合を回避するためである。なお、上述のように出力タイミングが同時であることにより、バッファ６０内に同期メッセージフレームにかかるバイト列が無くなる状態をより確実に回避することができる。
【００４５】
続いて図４Ｅを参照してコレクションフィールドの書き換え処理について説明する。ＣＦ書き換え部５０には、制御部４０によってコレクションフィールドが一括して入力される。ＣＦ書き換え部５０は、フォーマット解析部１０が付与したヘッダにより同期メッセージフレームのフォーマットを認識し、当該フォーマットの種別により同期メッセージフレーム内でのコレクションフィールドの出現位置を特定する。そしてＣＦ書き換え部５０は、コレクションフィールドに設定されている値（すなわち、これまで設定されていた遅延総和量）に対し、計時部３０から通知された滞留時間を加算して算出した値をコレクションフィールドに上書きする。ＣＦ書き換え部５０は、コレクションフィールドについての書き換え後にバイト列をバッファ６０に適宜格納する。またＣＦ書き換え部５０は、コレクションフィールド以外のバイト列については、そのままバッファ６０に格納する。
【００４６】
制御部４０は、コレクションフィールド以降の各バイト列をバッファ６０から多重化部７０に供給する。以上のように、通信装置１は入力された同期メッセージフレームの滞留時間に応じてコレクションフィールドを書き換える。
【００４７】
なお、上述の図４Ｂ〜図４Ｅでは、制御部４０はコレクションフィールドの直前のバイトまでをバッファ２０から先行して出力するように制御したが、必ずしもコレクションフィールドの直前でフレームを分断することに限られない。制御部４０は、バッファ６０から同期メッセージフレームにかかるバイト列が無くなる状態を回避し、かつコレクションフィールドの全バイト列（８バイト）がバッファ２０に全て滞留するように制御すればよい。
【００４８】
制御部４０は、コレクションフィールドの書き換えに伴い、書き換える可能性があるフィールドについてはコレクションフィールドと共にバッファ２０内に滞留させることが望ましい。詳細を図４Ｆ及び図４Ｇを参照して説明する。図４Ｆは、図４Ｂと同様にヘッダ及び同期メッセージフレームの先頭の出力処理を示す概念図である。
【００４９】
同期メッセージフレームのフォーマットにおいて、コレクションフィールドの書き換えに伴い、書き換えが必要となる可能性があるフィールド（以下、関連フィールドとも記載する。）が存在する。たとえば、図３Ｃに示すＣｈｅｃｋＳｕｍフィールドは、コレクションフィールドの書き換えに伴い、書き換えが必要となる場合がある。図３Ｃに示すようにＣｈｅｃｋＳｕｍフィールドは、コレクションフィールドよりも前方に配置されている。
【００５０】
制御部４０は、フォーマット解析部１０が付与したヘッダの情報からＣｈｅｃｋＳｕｍフィールドを含むフォーマットであるか、及びＣｈｅｃｋＳｕｍフィールドが同期メッセージフレーム内において存在する位置を解析する。制御部４０は、入力された同期メッセージフレームがＣｈｅｃｋＳｕｍフィールドを含むフォーマットである場合、図４Ｆに示すようにＣｈｅｃｋＳｕｍフィールドの全バイト及びコレクションフィールドの全バイトをバッファ２０に滞留させるとともに、同期メッセージフレームの前方バイト列を出力する。すなわち制御部４０は、関連バイト列を前方バイト列に含めないように制御を行う。
【００５１】
次にＣｈｅｃｋＳｕｍフィールドを含む場合のコレクションフィールド書き換え動作について図４Ｇを参照して説明する。図４Ｇは、図４Ｅと対応する処理であり、ＣｈｅｃｋＳｕｍフィールドを含むフォーマットのコレクションフィールドの書き換え処理を示す図である。なお、前方バイト列のバッファ６０への格納処理、及び各バッファからのバイト列の出力処理は、図４Ｃ及び図４Ｄに示す動作と略同一である。
【００５２】
ＣＦ書き換え部５０は、フォーマット解析部１０が付与したヘッダからＣｈｅｃｋＳｕｍフィールドの配置位置、及びコレクションフィールドの配置位置を認識する。ＣＦ書き換え部５０は、ＣｈｅｃｋＳｕｍフィールドをバッファ６０に入力する前にコレクションフィールドの書き換えを行う。コレクションフィールドの書き換え処理は、図４Ｅを参照して説明した処理と同一である。ＣＦ書き換え部５０は、コレクションフィールドの書き換え内容に応じてＣｈｅｃｋＳｕｍフィールドを書き換える必要があるか否かを判定する。
【００５３】
ＣｈｅｃｋＳｕｍフィールドの書き換えが不要である場合、ＣＦ書き換え部５０は、バイト列を入力順にバッファ６０に格納する。一方、ＣｈｅｃｋＳｕｍフィールドの書き換えが必要である場合、ＣＦ書き換え部５０は、コレクションフィールドの書き換えに応じてＣｈｅｃｋＳｕｍフィールドを書き換える。ＣＦ書き換え部５０は、ＣｈｅｃｋＳｕｍフィールドの書き換え後にＣｈｅｃｋＳｕｍフィールド以下のバイト列を順次バッファ６０に書き込む。
【００５４】
なお、上述の処理例は、ＣｈｅｃｋＳｕｍフィールドに限られたものではなく、コレクションフィールドの書き換えに応じて書き換わる可能性がある任意のフィールドを対象として実行することができる。
【００５５】
次に、本実施の形態にかかる通信装置１の効果について説明する。本実施の形態にかかる通信装置１は、同期メッセージフレームの対象バイト（上述の例では同期メッセージフレームの先頭バイト）が入力されてから出力されるまでの滞留時間を計時し、コレクションフィールドを構成する全バイトを一括して抽出し、当該コレクションフィールドの設定値に滞留時間を加算して設定している。通信装置１は、対象バイトの入力から出力までを計時することにより、正確な滞留時間を算出することができる。また通信装置１は、コレクションフィールドを一括して抽出することにより、コレクションフィールドの書き換えを確実に行うことができる。
【００５６】
詳細には、制御部４０は、同期メッセージフレームの先頭バイトを含む前方バイト列をバッファ２０からバッファ６０に入力する際に、コレクションフィールドを構成する全バイト列をバッファ２０に滞留させる。そして制御部４０は、バッファ２０からの前方バイト列の出力開始以降にバッファ２０からコレクションフィールドを構成する全バイトを一括して読み出してＣＦ書き換え部５０に供給する。これによりＣＦ書き換え回路５０にはコレクションフィールドが分断されることなく、確実に書き換え可能なバイト列が入力される。
【００５７】
また制御部４０は、上述のように前方バイト列のバッファ６０からの出力タイミングと、コレクションフィールドのバッファ２０からの出力タイミングが同時となるように制御している。これにより、バッファ６０内に同期メッセージフレームに関するバイト列が格納されていない状態となることを確実に回避することができ、正確に多重化処理を行うことが可能となる。
【００５８】
また図４Ｆ及び図４Ｇに示すように、制御部４０は、コレクションフィールドと関連するフィールド（関連フィールド、例えば上述のＣｈｅｃｋＳｕｍフィールド）も前方バイト列のバッファ２０からの出力時にバッファ２０に滞留させたままとする。そして制御部４０は、コレクションフィールドと関連フィールドを一括してＣＦ書き換え部５０に供給している。これによりＣＦ書き換え部５０は、コレクションフィールドを確実に書き換えられるとともに、コレクションフィールドの書き換えに伴って関連フィールドも確実に書き換えることができる。
【００５９】
以上、本発明を上記実施形態に即して説明したが、本発明は上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【００６０】
例えば、図１の構成ではフォーマット解析部１０がバッファ２０への格納前に無線フレームを解析していたが、必ずしもこれに限られない。たとえばフォーマット解析部１０は、バッファ２０内に格納された無線フレームのＥｔｈｅｒ  Ｔｙｐｅフィールドの値、及びＵＤＰ  Ｄｅｓｔｉｎａｔｉｏｎフィールドの値を基に解析を行ってもよい。
【００６１】
またフォーマットの解析処理は、ＣＦ書き換え部５０が行ってもよい。詳細には、制御部４０は、無線フレームのＥｔｈｅｒＴｙｐｅフィールドやＵＤＰ  Ｄｅｓｔｉｏｎａｔｉｏｎ  Ｐｏｒｔフィールドに関するバイト列のみをＣＦ書き換え部５０に供給する。ＣＦ書き換え部５０は、上述のフォーマット解析部１０が行った解析と同様の解析を行う。そしてＣＦ書き換え部５０は、解析結果となるフォーマット情報を保持するとともに制御部４０に通知する。以降の処理は、上述の処理と同様であれば良い。
【００６２】
最後に図５を参照して本実施の形態にかかる通信装置１の概要について改めて説明する。図５は、本実施の形態にかかる通信装置１の特徴的な動作を行う処理部を記載した概略構成図である。
【００６３】
通信装置１は、マスターノードとスレーブノード間（対向装置間）で送受信される同期メッセージフレームを扱う。計時部３０は、同期メッセージフレームの対象バイト（コレクションフィールドの前方にあるバイトであって、例えば先頭バイト）が通信装置１に入力されてから出力されるまでの時間である滞留時間を計時する。
【００６４】
なお図１の構成では、計時部３０は、対象バイトのバッファ２０への入力タイミングからバッファ６０からの出力タイミングまでを計時していた。これはバッファ内に滞留している時間が通信装置１内において滞留している時間の大半を占めるためである。なお、図１の構成において、バッファに滞留している時間以外を考慮して滞留時間を算出してもよい。例えば、バッファに滞留している時間に所定時間を加算することにより滞留時間を算出してもよい。
【００６５】
制御部４０は、同期メッセージフレーム内のコレクションフィールドを構成する全バイト列を一括して抽出し、ＣＦ書き換え部５０に供給する。この際に制御部４０は、対象バイトが通信装置１から出力されたタイミングよりも遅い（または同時の）タイミングでコレクションフィールドを抽出する。ＣＦ書き換え部５０は、計時部３０が計時した滞留時間をコレクションフィールドの設定値に加算し、算出した加算値をコレクションフィールドに上書きする。
【００６６】
滞留時間を計時した後に一括してコレクションフィールドをＣＦ書き換え部５０に供給することにより、ＣＦ書き換え部５０は確実にコレクションフィールドを書き換えることができる。
【００６７】
図５に示すように、通信装置１は滞留時間を計時した後に一括してコレクションフィールドをＣＦ書き換え部５０に供給するものであれば内部の構成は任意の構成であってよい。換言すると通信装置１内に必ずしも２つのバッファを必要とするものではない。通信装置１は、滞留時間を計時し、その後にコレクションフィールドを一括して抽出し、コレクションフィールドに滞留時間を加算する構成であれば単数のバッファのみを有する構成であっても良い。
【００６８】
なお、上述の通信装置１の各処理部（計時部３０、制御部４０、ＣＦ書き換え部５０、フォーマット解析部１０、多重化部７０）の処理は、任意のコンピュータ内で動作するプログラムとして実現することが可能である。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００６９】
この出願は、２０１３年１月４日に出願された日本出願特願２０１３−００００５６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００７０】
本発明は、例えば各種のデータの送受信処理を行う通信装置について利用可能性を有する。
【符号の説明】
【００７１】
１  通信装置
１０  フォーマット解析部
２０  バッファ（第１バッファ）
３０  計時部
３１  監視部
３２  タイマ部
４０  制御部
５０  ＣＦ（コレクションフィールド）書き換え部
６０  バッファ（第２バッファ）
７０  多重化部
【図１】
0005850180.tif 000002
【図２】
0005850180.tif 000003
【図３Ａ】
0005850180.tif 000004
【図３Ｂ】
0005850180.tif 000005
【図３Ｃ】
0005850180.tif 000006
【図４Ａ】
0005850180.tif 000007
【図４Ｂ】
0005850180.tif 000008
【図４Ｃ】
0005850180.tif 000009
【図４Ｄ】
0005850180.tif 000010
【図４Ｅ】
0005850180.tif 000011
【図４Ｆ】
0005850180.tif 000012
【図４Ｇ】
0005850180.tif 000013
【図５】
0005850180.tif 000014