(57)【要約】【課題】時刻同期を高精度に実行可能とする。【解決手段】第２通信装置を宛先とし、送信時刻を含む第１同期メッセージを第１通信装置から受信する受信部を備えた入出力ポート１１０ａと、第１同期メッセージを第２通信装置に送信するまでの滞留時間を算出する算出部１０３と、第１同期メッセージを受信してから滞留時間が経過した後に第１同期メッセージを第２通信装置に送信する入出力ポート１１０ａ内の送信制御部と、第１同期メッセージに応じて第１通信装置を宛先として送信され、送信時刻を含む第２同期メッセージを第２通信装置から受信する受信部を備えた入出力ポート１１０ｂ〜ｄと、第２同期メッセージを受信してから、対応する第１同期メッセージに対して算出された滞留時間が経過した後に第２同期メッセージを第１通信装置に送信する入出力ポート１１０ｂ〜ｄ内の送信制御部と、を備える。【選択図】図２
2010213101.tif 000002
【特許請求の範囲】
【請求項１】
第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置であって、
前記第２通信装置を宛先とし、送信時刻を含む第１同期メッセージを前記第１通信装置から受信する第１受信部と、
前記第１同期メッセージを前記第２通信装置に送信するまでに滞留する時間の予測値である第１滞留時間を算出する算出部と、
前記第１同期メッセージを受信してから前記第１滞留時間が経過した後に前記第１同期メッセージを前記第２通信装置に送信する第１送信制御部と、
前記第１同期メッセージに応じて前記第１通信装置を宛先として送信され、送信時刻を含む第２同期メッセージを前記第２通信装置から受信する第２受信部と、
前記第２同期メッセージを受信してから、対応する前記第１同期メッセージに対して算出された前記第１滞留時間が経過した後に前記第２同期メッセージを前記第１通信装置に送信する第２送信制御部と、
を備えることを特徴とする中継装置。
【請求項２】
前記算出部は、さらに、前記第２同期メッセージを前記第１通信装置に送信するまでに滞留する時間の予測値である第２滞留時間を算出し、
前記第２送信制御部は、前記第２滞留時間が、対応する前記第１同期メッセージに対して算出された前記第１滞留時間以下である場合に、前記第２同期メッセージを受信してから、対応する前記第１同期メッセージに対して算出された前記第１滞留時間が経過した後に前記第２同期メッセージを前記第１通信装置に送信すること、
を特徴とする請求項１に記載の中継装置。
【請求項３】
前記算出部は、前記第２滞留時間が、前記第１滞留時間より大きい場合に前記第２同期メッセージを破棄すること、
を特徴とする請求項２に記載の中継装置。
【請求項４】
前記第１同期メッセージの送信元アドレスと、前記第１同期メッセージの宛先アドレスと、前記第１滞留時間とを対応づけて記憶する対応記憶部をさらに備え、
前記第２送信制御部は、受信された前記第２同期メッセージの送信元アドレスが、対応する前記第１同期メッセージの宛先アドレスと一致する前記第１滞留時間を前記対応記憶部から読み出し、前記第２同期メッセージを受信してから、読み出した前記第１滞留時間が経過した後に前記第２同期メッセージを前記第１通信装置に送信すること、
を特徴とする請求項１に記載の中継装置。
【請求項５】
前記算出部は、前記第１同期メッセージを前記第２通信装置に送信するまでに滞留する時間として予測される時間の最大値を前記第１滞留時間として算出すること、
を特徴とする請求項１に記載の中継装置。
【請求項６】
第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置であって、
前記第２通信装置を宛先とし、送信時刻を含む第１同期メッセージを前記第１通信装置から受信する第１受信部と、
前記第１同期メッセージを前記第２通信装置に送信するまでに滞留する時間の予測値である第１滞留時間を算出する第１算出部と、
算出された前記第１滞留時間を前記第１同期メッセージに付加し、前記第１同期メッセージを受信してから前記第１滞留時間が経過した後に、前記第１滞留時間を付加した前記第１同期メッセージを前記第２通信装置に送信する第１送信制御部と、
前記第１同期メッセージに応じて前記第１通信装置を宛先として送信され、送信時刻を含む第２同期メッセージを前記第２通信装置から受信する第２受信部と、
前記第２同期メッセージを前記第１通信装置に送信するまでに滞留する時間の予測値である第２滞留時間を算出する第２算出部と、
算出された前記第２滞留時間を前記第２同期メッセージに付加し、前記第２同期メッセージを受信してから前記第２滞留時間が経過した後に、前記第２滞留時間を付加した前記第２同期メッセージを前記第１通信装置に送信する第２送信制御部と、
を備えることを特徴とする中継装置。
【請求項７】
第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置であって、
ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式でｎ個（ｎは２以上の整数）のメッセージを記憶可能な記憶部と、
前記記憶部からＦＩＦＯ方式でメッセージを取得し、取得したメッセージで指定された宛先に、取得したメッセージを送信する送信制御部と、
前記第２通信装置を宛先とし、送信時刻を含む第１同期メッセージを前記第１通信装置から受信する第１受信部と、
前記第１同期メッセージに応じて前記第１通信装置を宛先として送信され、送信時刻を含む第２同期メッセージを前記第２通信装置から受信する第２受信部と、
前記第１同期メッセージおよび前記第２同期メッセージを、前記記憶部のＦＩＦＯ方式でｎ番目に出力される位置に保存する保存部と、
を備えることを特徴とする中継装置。
【請求項８】
第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置であって、
前記第２通信装置を宛先とするメッセージを前記第１通信装置から受信する第１受信部と、
受信されたメッセージが、送信時刻を含む第１同期メッセージであるか否かを判定する第１メッセージ判定部と、
前記第１同期メッセージであると判定されたメッセージを記憶する第１記憶部と、
前記第１同期メッセージでないと判定されたメッセージを記憶する第２記憶部と、
前記第１記憶部に記憶されたメッセージを、前記第２記憶部に記憶されたメッセージより優先して前記第２通信装置に送信する第１送信制御部と、
前記第１通信装置を宛先とするメッセージを前記第２通信装置から受信する第２受信部と、
受信されたメッセージが、前記第１同期メッセージに応じて送信され、送信時刻を含む第２同期メッセージであるか否かを判定する第２メッセージ判定部と、
前記第２同期メッセージであると判定されたメッセージを記憶する第３記憶部と、
前記第２同期メッセージでないと判定されたメッセージを記憶する第４記憶部と、
前記第３記憶部に記憶されたメッセージを、前記第４記憶部に記憶されたメッセージより優先して前記第１通信装置に送信する第２送信制御部と、
を備えることを特徴とする中継装置。
【請求項９】
前記第２送信制御部は、さらに、前記第２同期メッセージの送信を開始するまでの開始時間を含み、前記開始時間が経過後に前記第２同期メッセージを送信することを要求する開始メッセージを前記第２通信装置に送信すること、
を特徴とする請求項８に記載の中継装置。
【請求項１０】
第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置を、  前記第２通信装置を宛先とし、送信時刻を含む第１同期メッセージを前記第１通信装置から受信する第１受信部と、
前記第１同期メッセージを前記第２通信装置に送信するまでに滞留する時間の予測値である第１滞留時間を算出する算出部と、
前記第１同期メッセージを受信してから前記第１滞留時間が経過した後に前記第１同期メッセージを前記第２通信装置に送信する第１送信制御部と、
前記第１同期メッセージに応じて前記第１通信装置を宛先として送信され、送信時刻を含む第２同期メッセージを前記第２通信装置から受信する第２受信部と、
前記第２同期メッセージを受信してから、対応する前記第１同期メッセージに対して算出された前記第１滞留時間が経過した後に前記第２同期メッセージを前記第１通信装置に送信する第２送信制御部
として機能させるための中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージを中継する中継装置およびプログラムに関する。
【背景技術】
【０００２】
ＩＥＥＥ１５８８（非特許文献１）では、高精度な時刻同期を行うためのプロトコルであるＰＴＰ(Precision Time Protocol)が定義されている。ＰＴＰでは、マスターノードとスレーブノードの時刻を同期するために、スレーブノードは、マスターノードから定期的に送信されるＳｙｎｃメッセージの送信時刻および受信時刻と、スレーブノードからマスターノードに送信するＤｅｌｌａｙ＿Ｒｅｑメッセージの送信時刻および受信時刻とから、マスターノードに対する時刻のずれを求める。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】IEEE Std 1588,“IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems”
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＩＥＥＥ１５８８では、マスターノードからスレーブノードにメッセージを送信する場合と、スレーブノードからマスターノードにメッセージを送信する場合とで、伝送遅延が等しいと仮定している。このため、実際には両者の伝送遅延が等しくない場合は、時刻の計算時に誤差が生じ、時刻同期精度が下がるという問題があった。例えば、マスターノードとスレーブノードとの間にネットワークスイッチ等の別のノードが存在し、当該ノードがメッセージを中継している場合は、ノード内のキューイング遅延等が生じるため、伝送遅延が等しくならない場合がある。
【０００５】
本発明は、上記に鑑みてなされたものであって、メッセージを中継する通信装置間の時刻同期を高精度に実行可能とする装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置であって、前記第２通信装置を宛先とし、送信時刻を含む第１同期メッセージを前記第１通信装置から受信する第１受信部と、前記第１同期メッセージを前記第２通信装置に送信するまでに滞留する時間の予測値である第１滞留時間を算出する算出部と、前記第１同期メッセージを受信してから前記第１滞留時間が経過した後に前記第１同期メッセージを前記第２通信装置に送信する第１送信制御部と、前記第１同期メッセージに応じて前記第１通信装置を宛先として送信され、送信時刻を含む第２同期メッセージを前記第２通信装置から受信する第２受信部と、前記第２同期メッセージを受信してから、対応する前記第１同期メッセージに対して算出された前記第１滞留時間が経過した後に前記第２同期メッセージを前記第１通信装置に送信する第２送信制御部と、を備えることを特徴とする。
【０００７】
また、本発明は、第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置であって、前記第２通信装置を宛先とし、送信時刻を含む第１同期メッセージを前記第１通信装置から受信する第１受信部と、前記第１同期メッセージを前記第２通信装置に送信するまでに滞留する時間の予測値である第１滞留時間を算出する第１算出部と、算出された前記第１滞留時間を前記第１同期メッセージに付加し、前記第１同期メッセージを受信してから前記第１滞留時間が経過した後に、前記第１滞留時間を付加した前記第１同期メッセージを前記第２通信装置に送信する第１送信制御部と、前記第１同期メッセージに応じて前記第１通信装置を宛先として送信され、送信時刻を含む第２同期メッセージを前記第２通信装置から受信する第２受信部と、前記第２同期メッセージを前記第１通信装置に送信するまでに滞留する時間の予測値である第２滞留時間を算出する第２算出部と、算出された前記第２滞留時間を前記第２同期メッセージに付加し、前記第２同期メッセージを受信してから前記第２滞留時間が経過した後に、前記第２滞留時間を付加した前記第２同期メッセージを前記第１通信装置に送信する第２送信制御部と、を備えることを特徴とする。
【０００８】
また、本発明は、第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置であって、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式でｎ個（ｎは２以上の整数）のメッセージを記憶可能な記憶部と、前記記憶部からＦＩＦＯ方式でメッセージを取得し、取得したメッセージで指定された宛先に、取得したメッセージを送信する送信制御部と、前記第２通信装置を宛先とし、送信時刻を含む第１同期メッセージを前記第１通信装置から受信する第１受信部と、前記第１同期メッセージに応じて前記第１通信装置を宛先として送信され、送信時刻を含む第２同期メッセージを前記第２通信装置から受信する第２受信部と、前記第１同期メッセージおよび前記第２同期メッセージを、前記記憶部のＦＩＦＯ方式でｎ番目に出力される位置に保存する保存部と、を備えることを特徴とする。
【０００９】
また、本発明は、第１通信装置と第２通信装置との間で送受信されるメッセージを中継する中継装置であって、前記第２通信装置を宛先とするメッセージを前記第１通信装置から受信する第１受信部と、受信されたメッセージが、送信時刻を含む第１同期メッセージであるか否かを判定する第１メッセージ判定部と、前記第１同期メッセージであると判定されたメッセージを記憶する第１記憶部と、前記第１同期メッセージでないと判定されたメッセージを記憶する第２記憶部と、前記第１記憶部に記憶されたメッセージを、前記第２記憶部に記憶されたメッセージより優先して前記第２通信装置に送信する第１送信制御部と、前記第１通信装置を宛先とするメッセージを前記第２通信装置から受信する第２受信部と、受信されたメッセージが、前記第１同期メッセージに応じて送信され、送信時刻を含む第２同期メッセージであるか否かを判定する第２メッセージ判定部と、前記第２同期メッセージであると判定されたメッセージを記憶する第３記憶部と、前記第２同期メッセージでないと判定されたメッセージを記憶する第４記憶部と、前記第３記憶部に記憶されたメッセージを、前記第４記憶部に記憶されたメッセージより優先して前記第１通信装置に送信する第２送信制御部と、を備えることを特徴とする。
【００１０】
また、本発明は、上記装置で実行することができるプログラムである。
【発明の効果】
【００１１】
本発明によれば、メッセージを中継する通信装置間の時刻同期を高精度に実行できるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、第１の実施の形態の中継装置であるネットワークスイッチを含む通信システムの構成例を示す図である。
【図２】図２は、第１の実施の形態のネットワークスイッチの内部構成の一例を示すブロック図である。
【図３】図３は、第１の実施の形態の対応記憶部に記憶されるデータのデータ構造の一例を示す図である。
【図４】図４は、第１の実施の形態の入出力ポートの詳細構成の一例を示すブロック図である。
【図５】図５は、ＰＴＰメッセージのメッセージ形式の一例を示す図である。
【図６】図６は、ＰＴＰヘッダの詳細な構成の一例を示す図である。
【図７】図７は、ＰＴＰボディの一例を示す図である。
【図８】図８は、ＰＴＰボディの一例を示す図である。
【図９】図９は、ＰＴＰボディの一例を示す図である。
【図１０】図１０は、第１の実施の形態における中継処理の全体の流れを示すフローチャートである。
【図１１】図１１は、第２の実施の形態にかかるネットワークスイッチの構成の一例を示すブロック図である。
【図１２】図１２は、第２の実施の形態の入出力ポートの詳細構成の一例を示すブロック図である。
【図１３】図１３は、第２の実施の形態における中継処理の全体の流れを示すフローチャートである。
【図１４】図１４は、第３の実施の形態の中継装置であるネットワークスイッチ３００を含む通信システムの構成例を示す図である。
【図１５】図１５は、第３の実施の形態のネットワークスイッチの内部構成の一例を示すブロック図である。
【図１６】図１６は、第３の実施の形態の入出力ポートの詳細構成の一例を示すブロック図である。
【図１７】図１７は、入出力キューの構成例を示す図である。
【図１８】図１８は、第３の実施の形態における中継処理の全体の流れを示すフローチャートである。
【図１９】図１９は、１つのデータにまとめたＤｅｌａｙ＿Ｒｅｑメッセージのデータ形式の一例を示す図である。
【図２０】図２０は、第４の実施の形態にかかるネットワークスイッチの構成の一例を示すブロック図である。
【図２１】図２１は、第４の実施の形態のポート状態記憶部に記憶されるデータのデータ構造の一例を示す図である。
【図２２】図２２は、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージのＰＴＰボディの構成例を示す図である。
【図２３】図２３は、Ｄｅｌａｙ＿Ｒｅｑ終了メッセージのＰＴＰボディの構成例を示す図である。
【図２４】図２４は、第４の実施の形態の入出力ポートの詳細構成の一例を示すブロック図である。
【図２５】図２５は、マスターノードおよびスレーブノードの内部構成の一例を示すブロック図である。
【図２６】図２６は、ＰＴＰ管理メッセージのメッセージ形式の一例を示す図である。
【図２７】図２７は、第４の実施の形態における中継処理の全体の流れを示すフローチャートである。
【図２８】図２８は、第４の実施の形態の時刻同期処理のシーケンス図である。
【図２９】図２９は、第５の実施の形態の中継装置であるネットワークスイッチを含む通信システムの構成例を示す図である。
【図３０】図３０は、第５の実施の形態にかかるネットワークスイッチの構成の一例を示すブロック図である。
【図３１】図３１は、第５の実施の形態のポート状態記憶部に記憶されるデータのデータ構造の一例を示す図である。
【図３２】図３２は、第５の実施の形態の時刻同期処理のシーケンス図である。
【図３３】図３３は、第６の実施の形態にかかるネットワークスイッチの構成の一例を示すブロック図である。
【図３４】図３４は、第６の実施の形態の入出力ポートの詳細構成の一例を示すブロック図である。
【図３５】図３５は、第６の実施の形態における中継処理の全体の流れを示すフローチャートである。
【図３６】図３６は、専用出力キューおよび出力キューに割り当てる処理時間の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、この発明にかかる中継装置および中継プログラムの最良な実施の形態を詳細に説明する。
【００１４】
（第１の実施の形態）
第１の実施の形態にかかる中継装置は、通信装置であるＩＥＥＥ１５８８のマスターノードおよびスレーブノードに接続され、マスターノードから送信される時刻同期用のメッセージと、スレーブノードから送信される時刻同期用のメッセージとに対し、中継装置内での滞留時間を一致させるように制御する。
【００１５】
図１は、第１の実施の形態の中継装置であるネットワークスイッチ１００を含む通信システムの構成例を示す図である。図１に示すように、第１の実施の形態の通信システムは、ネットワークスイッチ１００と、マスターノード２と、スレーブノード３とを備えている。
【００１６】
マスターノード２およびスレーブノード３は、イーサネット（登録商標）ケーブルなどのケーブルにより、ネットワークスイッチ１００に接続されている。以下では、マスターノード２およびスレーブノード３は、イーサネット（登録商標）に準拠したケーブルで接続されているものとして説明する。マスターノード２およびスレーブノード３は、ＩＥＥＥ１５８８を実装しており、それぞれＩＥＥＥ１５８８で規定されたマスタースレーブ階層のマスターおよびスレーブとして動作する。
【００１７】
本実施の形態の通信システムは、原子時計内蔵マスタークロックをマスターノード２、遮断機へトリップ信号を送信する保護リレー装置等をスレーブノード３とする変電所システムに適用できる。トリップ信号は、複数の遮断機へ高い時刻制度により同時に送信されることが要求されるため、これらの機器は時刻が同期されている必要がある。
【００１８】
なお、適用可能なシステムはこれに限られるものではない。また、中継装置はネットワークスイッチに限られるものではなく、時刻同期用のメッセージを中継できるものであれば、ルータなどの従来から用いられているあらゆる中継装置に適用できる。また、以下では、時刻同期のためのプロトコルとしてＩＥＥＥ１５８８で定義されるＰＴＰを用いる場合を例に説明する。この場合の時刻同期用のメッセージを以下ではＰＴＰメッセージという。
【００１９】
図２は、ネットワークスイッチ１００の内部構成の一例を示すブロック図である。ネットワークスイッチ１００は、対応記憶部１２１と、アドレス記憶部１２２と、入出力ポート１１０ａ、１１０ｂ、１１０ｃ、１１０ｄと、クロック部１０１と、ＣＰＵ１０２と、算出部１０３と、を備えている。各構成部は、内部バス１３１により接続され、内部バス１３１を介して相互にデータを送受信する。
【００２０】
対応記憶部１２１は、マスターノード２からスレーブノード３に送信されたＰＴＰメッセージであるＳｙｎｃメッセージに含まれる所定のパラメータと、当該Ｓｙｎｃメッセージを送信したときの滞留時間を特定可能な情報とを対応づけて記憶する。図３は、対応記憶部１２１に記憶されるデータのデータ構造の一例を示す図である。図３に示すように、対応記憶部１２１は、１つのエントリに、イーサネット（登録商標）ヘッダ（以下、イーサヘッダという）の送主（送信元）アドレスと、イーサヘッダの宛先アドレスと、ＰＴＰヘッダのシーケンス番号と、メッセージの受信時刻と、メッセージの送信時刻とを含んでいる。
【００２１】
なお、同図では、送信時刻と受信時刻とを保存する例が示されているが、滞留時間を特定可能な情報はこれに限られるものではない。例えば、滞留時間自体を保存するように構成してもよい。
【００２２】
アドレス記憶部１２２は、入出力ポート１１０ａ、１１０ｂ、１１０ｃ、１１０ｄに接続されたノードのアドレスを記憶する。この情報により、メッセージを転送すべきノードが接続されたポートを特定することができる。
【００２３】
なお、対応記憶部１２１およびアドレス記憶部１２２は、ＨＤＤ（Hard Disk Drive）、光ディスク、メモリカード、ＲＡＭ（Random Access Memory）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００２４】
クロック部１０１は、クロック信号を発生させる。ＣＰＵ１０２は、ネットワークスイッチ１００内で実行される各種処理を制御するプロセッサである。
【００２５】
入出力ポート１１０ａ、１１０ｂ、１１０ｃ、１１０ｄは、各ノードに接続するためのケーブルが接続されるポートである。なお、入出力ポート１１０ａ、１１０ｂ、１１０ｃ、１１０ｄはそれぞれ同様の構成を備えるため、以下では単に入出力ポート１１０という場合がある。また、入出力ポート１１０の個数は４に限られるものではない。また、以下では、マスターノード２およびスレーブノード３が、それぞれ入出力ポート１１０ａおよび入出力ポート１１０ｂに接続されているものとして説明する。
【００２６】
図４は、入出力ポート１１０の詳細構成の一例を示すブロック図である。図４に示すように、入出力ポート１１０は、ＰＨＹ（PHYsical layer）部１１１と、入力キュー１１２と、出力キュー１１３と、専用出力キュー１１４と、接続検出部１１５と、時刻検出部１１６と、メッセージ検出部１１７と、送信制御部１１８と、転送制御部１１９と、を備えている。これらは、内部バス１３１により接続され、相互にデータのやり取りが可能である。
【００２７】
ＰＨＹ部１１１は、ＯＳＩ参照モデルの物理層に関連する処理を実行する。ＰＨＹ部１１１は、さらに詳細な構成として、受信部１１１ａと、送信部１１１ｂとを備えている。受信部１１１ａは、ケーブル１３２からメッセージを受信する。具体的には、受信部１１１ａは、ケーブル１３２からメッセージを表す電気信号が到着すると、電気信号をディジタル情報に変換し、メッセージ検出部１１７に渡す。送信部１１１ｂは、ケーブル１３２に対してメッセージを送信する。具体的には、送信部１１１ｂは、送信すべきメッセージを表すビット列を、イーサネット（登録商標）の仕様に準拠した形式の信号に変換し、ケーブル１３２に送出する。
【００２８】
入力キュー１１２は、受信したメッセージを一時的に記憶するキューである。入力キュー１１２は、複数のメッセージを一時的に記憶できる。以下では、入力キュー１１２に記憶可能なメッセージの個数を表す最大長をＱ＿ｉｍａｘと表す。
【００２９】
出力キュー１１３は、ケーブル１３２に出力するメッセージを一時的に記憶するキューである。出力キュー１１３は、予め定められたクロック（以下、クロックＣとする）ごとに、記憶しているメッセージを出力する。出力キュー１１３は、複数のメッセージを一時的に記憶できる。以下では、出力キュー１１３に記憶可能なメッセージの個数を表す最大長をＱ＿ｏｍａｘと表す。なお、入力キュー１１２の最大長Ｑ＿ｉｍａｘと、出力キュー１１３の最大長Ｑ＿ｏｍａｘは固定値とする。
【００３０】
専用出力キュー１１４は、予め定められたＰＴＰメッセージを一時的に記憶するキューである。専用出力キュー１１４は、算出部１０３により算出された送信予定時刻に、記憶したメッセージを出力するように送信制御部１１８により制御される。
【００３１】
接続検出部１１５は、ケーブル１３２を介してノードが接続されているか否かを検出する。例えば、接続検出部１１５は、ケーブル１３２を介してノードがアクティブであることを表す所定の信号を受信したか否かにより、ノードが接続されているか否かを検出する。接続検出部１１５は、ケーブル１３２が接続されかつノードがアクティブの場合には、接続状態としてオン情報を保持する。また、接続検出部１１５は、ケーブル１３２が接続されていない場合、または、ノードがアクティブでない場合には、接続状態としてオフ情報を保持する。
【００３２】
上述のようにマスターノード２およびスレーブノード３が、それぞれ入出力ポート１１０ａおよび入出力ポート１１０ｂに接続されている場合は、入出力ポート１１０ａおよび入出力ポート１１０ｂの接続検出部１１５は、オン情報を保持している。一方、入出力ポート１１０ｃおよび入出力ポート１１０ｄは、ノードが接続されていないため、オフ情報を保持している。
【００３３】
時刻検出部１１６は、メッセージを受信した時刻（受信時刻）を検出する。例えば、時刻検出部１１６は、クロック部１０１から時刻情報を受け取ることにより、メッセージの受信時刻を検出し、検出した受信時刻を保持する。
【００３４】
メッセージ検出部１１７は、受信されたメッセージの種類を検出する。具体的には、メッセージ検出部１１７は、イーサヘッダのタイプとＰＴＰメッセージのＰＴＰヘッダのメッセージタイプとを参照することにより、メッセージの種類を検出する。
【００３５】
図５は、受信されるＰＴＰメッセージのメッセージ形式の一例を示す図である。図５に示すように、ＰＴＰメッセージは、イーサヘッダ４１と、ＰＴＰヘッダ４２と、ＰＴＰボディ４３と、送信時刻タグ４４とから構成される。ＰＴＰメッセージは、システムによっては、ＵＤＰ／ＩＰ通信のパケットとして運ばれる場合がある。本実施の形態では、イーサネット（登録商標）により運ばれため、イーサヘッダ４１が付加されている。
【００３６】
イーサヘッダ４１は、宛先アドレス４１ａと、送主アドレス４１ｂと、タイプ４１ｃとから構成されている。宛先アドレス４１ａは、宛先のノードのＭＡＣアドレス、ブロードキャストアドレス、およびマルチキャストアドレスなどが割り当てられる。送主アドレス４１ｂは、送主のノードのＭＡＣアドレスが割り当てられる。タイプ４１ｃは、ペイロードの内容を表す。ＰＴＰの場合は、タイプ４１ｃに「０ｘ８８０７」が割り当てられる。
【００３７】
ＰＴＰヘッダ４２は、ＰＴＰで定められたパラメータを格納するヘッダである。図６は、ＰＴＰヘッダ４２の詳細な構成の一例を示す図である。図６に示すように、ＰＴＰヘッダ４２は、メッセージタイプ４２ａと、バージョン４２ｂと、メッセージ長４２ｃと、ドメイン番号４２ｄと、フラグフィールド４２ｅと、コレクションフィールド４２ｆと、ソースポートＩＤ４２ｇと、シーケンスＩＤ４２ｈと、制御フィールド４２ｉと、ログメッセージ間隔４２ｊとから構成される。
【００３８】
メッセージタイプ４２ａは、ＰＴＰメッセージの種類により異なる値が割り当てられる。バージョン４２ｂは、ＰＴＰプロトコルのバージョンを表す。メッセージ長４２ｃは、ＰＴＰヘッダを含むメッセージの長さである。ドメイン番号４２ｄは、時刻を同期する範囲を表す識別子である。フラグフィールド４２ｅは、メッセージによって与えられる詳細の情報である。コレクションフィールド４２ｆは、マスターノード２およびスレーブノード３以外のＩＥＥＥ１５８８ノードにメッセージが滞留した時間である。ソースポートＩＤ４２ｇは、ＩＥＥＥ１５８８ノードの送主の送信ポートの識別子を示す。シーケンスＩＤ４２ｈは、ＰＴＰメッセージの識別子を示す。制御フィールド４２ｉは、メッセージによって異なる値が割り当てられる識別子である。ログメッセージ間隔４２ｊは、メッセージによって役割が異なる。
【００３９】
図５に戻り、ＰＴＰボディ４３は、ＰＴＰメッセージの種類によって構成が変更される。図７〜図９は、ＰＴＰボディ４３の一例を示す図である。
【００４０】
図７は、ＰＴＰメッセージがＳｙｎｃメッセージである場合のＰＴＰボディ４３の構造を示す。ＳｙｎｃメッセージのＰＴＰボディ４３１は、送主タイムスタンプにより構成される。送主タイムスタンプは、Ｓｙｎｃメッセージがマスターノード２から送信された概算の時刻を表す。なお、Ｓｙｎｃメッセージの場合、イーサヘッダ４１の宛先アドレス４１ａはマルチキャストアドレスとなり、ＰＴＰヘッダ４２のメッセージタイプ４２ａは「０」となる。
【００４１】
なお、Ｄｅｌａｙ＿ＲｅｑメッセージのＰＴＰボディは、ＳｙｎｃメッセージのＰＴＰボディ４３１と同じ構成であり、送主タイムスタンプが保持可能である。Ｄｅｌａｙ＿Ｒｅｑメッセージの場合、イーサヘッダ４１の宛先アドレス４１ａにはマスターノード２のＭＡＣアドレス、送主アドレス４１ｂにはスレーブノード３のＭＡＣアドレス、ＰＴＰヘッダ４２のメッセージタイプ４２ａの値には「１」が設定される。
【００４２】
図８は、ＰＴＰメッセージがＦｏｌｌｏｗ＿Ｕｐメッセージである場合のＰＴＰボディ４３の構造を示す。Ｆｏｌｌｏｗ＿ＵｐメッセージのＰＴＰボディ４３２は、精密な送主タイムスタンプにより構成される。精密な送主タイムスタンプは、Ｓｙｎｃメッセージが実際に送信された時刻である。Ｆｏｌｌｏｗ＿Ｕｐメッセージの場合、イーサヘッダ４１の宛先アドレス４１ａにはマルチキャストアドレス。送主アドレス４１ｂにはマスターノード２のＭＡＣアドレス、タイプ４１ｃには「０ｘ００８７」、ＰＴＰヘッダ４２のメッセージタイプ４２ａの値には「８」が設定される。
【００４３】
図９は、ＰＴＰメッセージがＤｅｌａｙ＿Ｒｅｓｐメッセージである場合のＰＴＰボディ４３の構造を示す。Ｄｅｌａｙ＿ＲｅｓｐメッセージのＰＴＰボディ４３３は、受信タイムスタンプと要求ポートＩＤとにより構成される。受信タイムスタンプは、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信した時刻が保持されている。要求ポートＩＤは、Ｄｅｌａｙ＿Ｒｅｑメッセージを送信した送信先のポートＩＤが保持されている。Ｄｅｌａｙ＿Ｒｅｓｐメッセージはユニキャストである。Ｄｅｌａｙ＿Ｒｅｓｐメッセージの場合、イーサヘッダの送主アドレスにはマスターノード２のＭＡＣアドレス、宛先アドレスにはスレーブノード３のＭＡＣアドレス、ＰＴＰヘッダ４２のメッセージタイプ４２ａの値には「９」が設定される。
【００４４】
図４に戻り、メッセージ検出部１１７は、このように構成されたメッセージの各ヘッダ等を参照することによりメッセージの種類を検出する。例えば、イーサヘッダ４１のタイプ４１ｃが「０ｘ８８０７」で、かつＰＴＰヘッダのメッセージタイプが「０」の場合は、メッセージ検出部１１７は、受信したメッセージがＳｙｎｃメッセージであることを検出する。この場合、メッセージ検出部１１７は、Ｓｙｎｃメッセージのイーサヘッダ４１の送主アドレス４１ｂと、イーサヘッダ４１の宛先アドレス４１ａと、ＰＴＰヘッダ４２のシーケンスＩＤ４２ｈと、時刻検出部１１６により検出された受信時刻とを含むエントリを作成し、対応記憶部１２１に追加する。
【００４５】
送信制御部１１８は、出力キュー１１３および専用出力キュー１１４に記憶されているメッセージの送信タイミングを制御する。例えば、送信制御部１１８は、クロックＣごとに、出力キュー１１３に記憶されているメッセージを、ＰＨＹ部１１１を介してケーブル１３２に送信するように制御する。また、送信制御部１１８は、専用出力キュー１１４に記憶されているメッセージを、算出部１０３により算出された送信予定時刻にＰＨＹ部１１１を介してケーブル１３２に送信するように制御する。
【００４６】
転送制御部１１９は、入力キュー１１２に記憶されているメッセージを、他の入出力ポート１１０の出力キュー１１３に転送する処理を制御する。例えば、転送制御部１１９は、クロックＣごとに、入力キュー１１２に記憶されているメッセージの１つを取得し、内部バス１３１を介して、取得したメッセージの宛先となるノードが接続された入出力ポート１１０の出力キュー１１３に転送する。
【００４７】
図２に戻り、算出部１０３は、入出力ポート１１０から入力されたメッセージがネットワークスイッチ１００内に滞留する時間（滞留時間）の予測値を算出する。具体的には、算出部１０３は、以下のアルゴリズムにしたがって滞留時間を見積もる。
【００４８】
まず、ネットワークスイッチ１００は、アクティブなノードに接続されたＮ個の入出力ポート１１０の入力キュー１１２および出力キュー１１３に対して、クロックＣごとに、予め定められた順番で巡回してアクセスするものとする。ノードがアクティブか否かは、接続検出部１１５が保持する接続状態（オン情報かオフ情報か）により判断できる。また、滞留時間の見積り時にアクセスしている入力キュー１１２を基準とした、滞留時間の見積り対象であるメッセージを受信した入出力ポート１１０の入力キュー１１２のアクセスする順番をＴとする。なお、ＴはＮ以下（Ｔ＜＝Ｎ）である。この場合、複数の入力キュー１１２を所定の順序でアクセスすることにより生じる滞留時間の最大値（最大滞留時間）は、Ｃ×（Ｔ×Ｑ＿ｉｍａｘ＋Ｑ＿ｏｍａｘ）となる。
【００４９】
算出部１０３は、まず、受信されたメッセージが入力キュー１１２へ送られた時に、出力キュー１１３への転送用にアクセスされている入力キュー１１２の位置を検出する。そして、算出部１０３は、受信されたメッセージが出力するまでに滞留する時間として予測される時間の最大値であるＳ＋Ｃ×（Ｔ×Ｑ＿ｉｍａｘ＋Ｑ＿ｏｍａｘ）を滞留時間として算出する。なお、Ｓは、受信されたメッセージが入力キュー１１２へ送られる時間として予め定められた値である。
【００５０】
なお、同図に示すように算出部１０３をＣＰＵ１０２と異なるハードウェア回路により実現する代わりに、ＣＰＵ１０２により動作するソフトウェアとして構成してもよい。
【００５１】
次に、このように構成された第１の実施の形態にかかるネットワークスイッチ１００による中継処理について図１０を用いて説明する。図１０は、第１の実施の形態における中継処理の全体の流れを示すフローチャートである。
【００５２】
まず、ＰＨＹ部１１１の受信部１１１ａが、マスターノード２またはスレーブノード３から送信されたメッセージを受信する（ステップＳ１００１）。次に、時刻検出部１１６が、メッセージの受信時刻を検出して保持する（ステップＳ１００２）。次に、メッセージ検出部１１７が、イーサヘッダのタイプおよびＰＴＰヘッダのメッセージタイプを参照してメッセージの種類を検出する（ステップＳ１００３）。
【００５３】
次に、メッセージ検出部１１７が、受信したメッセージがＳｙｎｃメッセージであるか否かを判断する（ステップＳ１００４）。Ｓｙｎｃメッセージの場合（ステップＳ１００４：ＹＥＳ）、メッセージ検出部１１７は、Ｓｙｎｃメッセージのイーサヘッダ４１の送主アドレス４１ｂと、ＰＴＰヘッダ４２のシーケンスＩＤ４２ｈと、受信時刻とを含むエントリを作成し、対応記憶部１２１へ追加する（ステップＳ１００５）。次に、算出部１０３が、Ｓｙｎｃメッセージの滞留時間を算出する（ステップＳ１００６）。
【００５４】
Ｓｙｎｃメッセージでない場合（ステップＳ１００４：ＮＯ）、メッセージ検出部１１７は、さらに受信したメッセージがＤｅｌａｙ＿Ｒｅｑメッセージであるか否かを判断する（ステップＳ１００７）。Ｄｅｌａｙ＿Ｒｅｑメッセージの場合（ステップＳ１００７：ＹＥＳ）、算出部１０３は、受信されたＤｅｌａｙ＿Ｒｅｑメッセージに対応するＳｙｎｃメッセージがネットワークスイッチ１００を通過した際に要した滞留時間を調べる。すなわち、算出部１０３は、Ｄｅｌａｙ＿Ｒｅｑメッセージのイーサヘッダの送主アドレスと一致する宛先アドレスを有するエントリを対応記憶部１２１から検索する（ステップＳ１００８）。
【００５５】
そして、算出部１０３は、検索したエントリの送信時刻と受信時刻との差分であるＳｙｎｃメッセージの滞留時間を算出する（ステップＳ１００９）。なお、対応記憶部１２１に滞留時間自体が記憶されている場合は、算出部１０３は検索したエントリから滞留時間を取得する。また、算出部１０３は、Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間を算出する（ステップＳ１０１０）。
【００５６】
次に、算出部１０３は、Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間が、対応するＳｙｎｃメッセージの滞留時間以下であるか否かを判断する（ステップＳ１０１１）。Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間が、対応するＳｙｎｃメッセージの滞留時間以下でない場合（ステップＳ１０１１：ＮＯ）、算出部１０３は、受信されたＤｅｌａｙ＿Ｒｅｑメッセージを破棄し（ステップＳ１０１２）、中継処理を終了する。
【００５７】
Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間が、対応するＳｙｎｃメッセージの滞留時間以下である場合（ステップＳ１０１１：ＹＥＳ）、算出部１０３は、Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間を対応するＳｙｎｃメッセージの滞留時間に一致させる（ステップＳ１０１３）。
【００５８】
ステップＳ１００６でＳｙｎｃメッセージの滞留時間を算出後、または、ステップＳ１０１３でＤｅｌａｙ＿Ｒｅｑメッセージの滞留時間を算出後、算出部１０３は、算出した滞留時間をメッセージの受信時刻に加算することにより送信予定時刻を算出し、メッセージの送信時刻タグ４４に付加する（ステップＳ１０１４）。
【００５９】
次に、算出部１０３は、送信予定時刻を付加したメッセージを、メッセージを受信した入出力ポート１１０の入力キュー１１２に送出する（ステップＳ１０１５）。入力キュー１１２に送出されたメッセージは、別の入出力ポート１１０の出力キュー１１３に転送されるまで保持される。転送制御部１１９は、メッセージが転送される順番となったとき、入力キュー１１２に保持されたメッセージを、宛先となるノードが接続された入出力ポート１１０の出力キュー１１３に転送する（ステップＳ１０１６）。転送制御部１１９は、アドレス記憶部１２２を参照することにより宛先となるノードが接続された入出力ポート１１０を決定する。
【００６０】
メッセージが転送された入出力ポート１１０の送信制御部１１８は、クロックＣごとに、送信するメッセージを出力キュー１１３から取得する（ステップＳ１０１７）。次に、メッセージ検出部１１７が、ステップＳ１００３と同様の手法により、取得されたメッセージの種類を検出する（ステップＳ１０１８）。
【００６１】
次に、メッセージ検出部１１７が、取得されたメッセージがＳｙｎｃメッセージまたはＤｅｌａｙ＿Ｒｅｑメッセージであるか否かを判断する（ステップＳ１０１９）。ＳｙｎｃメッセージまたはＤｅｌａｙ＿Ｒｅｑメッセージである場合（ステップＳ１０１９：ＹＥＳ）、メッセージ検出部１１７は、取得されたメッセージを専用出力キュー１１４に転送する（ステップＳ１０２０）。
【００６２】
次に、送信制御部１１８は、メッセージの送信時刻タグから送信予定時刻を抽出し、定期的にクロック部１０１から取得した現在時刻と送信時刻とを比較することにより、送信予定時刻に達したか否かを判断する（ステップＳ１０２１）。送信予定時刻でない場合（ステップＳ１０２１：ＮＯ）、送信予定時刻となるまで専用出力キュー１１４にメッセージが保持される。送信予定時刻である場合（ステップＳ１０２１：ＹＥＳ）、送信制御部１１８は、ＰＨＹ部１１１を介して、専用出力キュー１１４に保持されたメッセージを宛先となるノードに送信する（ステップＳ１０２２）。
【００６３】
ステップＳ１０１９で、出力キュー１１３から取得されたメッセージがＳｙｎｃメッセージまたはＤｅｌａｙ＿Ｒｅｑメッセージでないと判断された場合（ステップＳ１０１９：ＮＯ）、送信制御部１１８は、ＰＨＹ部１１１を介して、取得されたメッセージを宛先となるノードに送信する（ステップＳ１０２２）。
【００６４】
次に、送信制御部１１８は、対応記憶部１２１のエントリを更新する（ステップＳ１０２３）。例えば、Ｓｙｎｃメッセージを送信した場合、送信制御部１１８は、シーケンスＩＤ４２ｈが一致するエントリの送信時刻および宛先アドレスとして、メッセージの送信時刻と、宛先のノードのＭＡＣアドレスとを追加する。なお、このエントリ以外に同じ送主アドレスおよび宛先アドレスのエントリ（重複エントリ）が存在した場合、送信制御部１１８は当該重複エントリを削除する。
【００６５】
また、Ｄｅｌａｙ＿Ｒｅｑメッセージを送信した場合、送信制御部１１８は、送信したＤｅｌａｙ＿Ｒｅｑメッセージに対応するＳｙｎｃメッセージを、イーサヘッダの宛先アドレスと送主アドレスとを用いて対応記憶部１２１から検索する。Ｄｅｌａｙ＿Ｒｅｑメッセージの送主アドレスとＳｙｎｃメッセージの宛先アドレス、および、Ｄｅｌａｙ＿Ｒｅｑメッセージの宛先アドレスとＳｙｎｃメッセージの送主アドレスが一致した場合、送信制御部１１８は、そのエントリを対応記憶部１２１から削除する。
【００６６】
上記のような手順により、Ｓｙｎｃメッセージの滞留時間と、Ｓｙｎｃメッセージに対する応答として送信されるＤｅｌａｙ＿Ｒｅｑメッセージの滞留時間とを一致させることができる。すなわち、マスターノード２からスレーブノード３にメッセージを送信する場合と、スレーブノード３からマスターノード２にメッセージを送信する場合とで、伝送遅延を一致させることができる。これにより、これらのメッセージの受信時刻等を用いる時刻同期処理を高精度に実行可能となる。
【００６７】
次に、本実施の形態の通信システムによる時刻同期処理の具体例について説明する。ＩＥＥＥ１５８８では、マスターノード２からのＳｙｎｃメッセージおよびＦｏｌｌｏｗ＿Ｕｐメッセージの送信、スレーブノード３からのＤｅｌａｙ＿Ｒｅｑメッセージの送信、および、マスターノード２からのＤｅｌａｙ＿Ｒｅｓｐメッセージの送信、という手順により、時刻同期処理が実現される。
【００６８】
まず、マスターノード２は、ＩＥＥＥ１５８８で定義されているＰＴＰのＳｙｎｃメッセージを定期的に送信する。
【００６９】
マスターノード２から送信されたＳｙｎｃメッセージは、ネットワークスイッチ１００の入出力ポート１１０ａに受信される。メッセージ検出部１１７は、イーサヘッダ４１のタイプ４１ｃが「０ｘ８８０７」で、かつＰＴＰヘッダのメッセージタイプが「０」であるため、Ｓｙｎｃメッセージであることを検出する。次に、算出部１０３が、Ｓｙｎｃメッセージの滞留時間を見積もる。また、算出部１０３は、算出した滞留時間を受信時刻に加算して送信予定時刻を算出する。そして、算出部１０３は、算出した送信予定時刻を設定した送信時刻タグ４４をＳｙｎｃメッセージに付加する。
【００７０】
次に、Ｓｙｎｃメッセージは、入力キュー１１２に送られ、別の入出力ポート１１０ｂの出力キュー１１３に転送されるまで保持される。Ｓｙｎｃメッセージが転送される順番となったとき、転送制御部１１９が、アドレス記憶部１２２を参照して、Ｓｙｎｃメッセージのイーサヘッダの宛先アドレス４１ａに該当する入出力ポート１１０を検出する。この例では、スレーブノード３が宛先となるため、入出力ポート１１０ｂが検出される。したがって、Ｓｙｎｃメッセージは、入出力ポート１１０ｂの出力キュー１１３へ転送され、メッセージがスレーブノード３へ送信されるまで保持される。
【００７１】
送信の順番となったとき、メッセージ受信時と同様の手順により、メッセージ検出部１１７によりメッセージの種類が判定される。この場合はＳｙｎｃメッセージであることが検出され、専用出力キュー１１４へ送られる。送信制御部１１８は、送信時刻タグから送信予定時刻を抽出し、送信予定時刻となるまでＳｙｎｃメッセージを専用出力キュー１１４に保持する。送信制御部１１８は、送信予定時刻となったときにＳｙｎｃメッセージをスレーブノード３に送信する。
【００７２】
Ｓｙｎｃメッセージがスレーブノード３に受信されると、続いて、マスターノード２はＦｏｌｌｏｗ＿Ｕｐメッセージを送信する。
【００７３】
Ｆｏｌｌｏｗ＿Ｕｐメッセージがネットワークスイッチ１００に受信されると、Ｓｙｎｃメッセージと同様に、入出力ポート１１０ａの時刻検出部１１６が、Ｆｏｌｌｏｗ＿Ｕｐメッセージの受信時刻を検出する。次に、メッセージ検出部１１７が、Ｆｏｌｌｏｗ＿Ｕｐメッセージのイーサヘッダのタイプと、ＰＴＰヘッダのメッセージタイプを調べる。メッセージ検出部１１７は、イーサヘッダ４１のタイプ４１ｃが「０ｘ８８０７」で、かつＰＴＰヘッダのメッセージタイプが「８」であるため、Ｆｏｌｌｏｗ＿Ｕｐメッセージであることを検出する。Ｆｏｌｌｏｗ＿Ｕｐメッセージは、Ｓｙｎｃメッセージが送信された正確な時刻を送信するメッセージであるため、伝送遅延を対称にする必要はない。したがって、そのまま入力キュー１１２に送られ、スレーブノード３へ転送される。
【００７４】
スレーブノード３でＦｏｌｌｏｗ＿Ｕｐメッセージが受信された後、スレーブノード３は、マスターノード２へＤｅｌａｙ＿Ｒｅｑメッセージを送信する。
【００７５】
Ｄｅｌａｙ＿Ｒｅｑメッセージがネットワークスイッチ１００に受信されると、Ｓｙｎｃメッセージと同様に、入出力ポート１１０ｂの時刻検出部１１６が、Ｄｅｌａｙ＿Ｒｅｑメッセージの受信時刻を検出する。次に、メッセージ検出部１１７が、Ｄｅｌａｙ＿Ｒｅｑメッセージのイーサヘッダのタイプと、ＰＴＰヘッダのメッセージタイプを調べる。メッセージ検出部１１７は、イーサヘッダ４１のタイプ４１ｃが「０ｘ８８０７」で、かつＰＴＰヘッダのメッセージタイプが「１」であるため、Ｄｅｌａｙ＿Ｒｅｑメッセージであることを検出する。
【００７６】
次に、算出部１０３が、Ｓｙｎｃメッセージの場合と同様の方法で、Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間を見積もる。さらに、算出部１０３は、対応記憶部１２１を参照することにより、過去に、対応するＳｙｎｃメッセージがネットワークスイッチ１００を通過した際に要した滞留時間を調べる。そして、算出部１０３は、計算で求めた滞留時間と対応するＳｙｎｃメッセージの滞留時間とを比較する。Ｓｙｎｃメッセージの滞留時間がＤｅｌａｙ＿Ｒｅｑメッセージの滞留時間より長い場合、算出部１０３は、Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間をＳｙｎｃメッセージの滞留時間に合わせる。アクティブな入出力ポート１１０が増加した等の理由で、Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間が、対応するＳｙｎｃメッセージの滞留時間より長くなる場合は、滞留時間を等しくできず、誤差が生じるため、算出部１０３はＤｅｌａｙ＿Ｒｅｑメッセージを破棄する。破棄せずに処理が続く場合は、算出部１０３はＳｙｎｃメッセージと同様に送信予定時刻を計算し、送信時刻タグ４４をＤｅｌａｙ＿Ｒｅｑメッセージに付加し、入力キュー１１２に送る。
【００７７】
Ｄｅｌａｙ＿Ｒｅｑメッセージは、入出力ポート１１０ｂの入力キュー１１２から、入出力ポート１１０ａの出力キュー１１３へ転送され、出力の順番が待たれる。出力の順番となったときには、メッセージ受信時と同様の手順により、出力するメッセージがＤｅｌａｙ＿Ｒｅｑメッセージであることが検出される。このため、Ｄｅｌａｙ＿Ｒｅｑメッセージは専用出力キュー１１４に送られる。送信制御部１１８は、送信時刻タグから送信予定時刻を抽出し、送信予定時刻となるまでＤｅｌａｙ＿Ｒｅｑメッセージを専用出力キュー１１４に保持する。送信制御部１１８は、送信予定時刻となったときにＤｅｌａｙ＿Ｒｅｑメッセージをマスターノード２に送信する。
【００７８】
マスターノード２は、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信すると、即座にＤｅｌａｙ＿Ｒｅｓｐメッセージをスレーブノード３へ送信する。Ｄｅｌａｙ＿Ｒｅｓｐメッセージは、Ｆｏｌｌｏｗ＿Ｕｐメッセージ同様、ネットワークスイッチ１００では、特殊な処理が実行されずに、スレーブノード３へ転送される。
【００７９】
これらの一連の通信により、スレーブノード３は、（１）マスターノード２によるＳｙｎｃメッセージの送信時刻ｔ１、（２）Ｓｙｎｃメッセージがスレーブノード３によって受信された時刻ｔ２、（３）スレーブノード３によりＤｅｌａｙ＿Ｒｅｑメッセージが送信された時刻ｔ３、（４）マスターノード２によりＤｅｌａｙ＿Ｒｅｑメッセージが受信された時刻ｔ４、の４つの時刻を得ることができる。なお、（１）の送信時刻ｔ１は、Ｆｏｌｌｏｗ＿Ｕｐメッセージの精密な送主タイムスタンプから得られる。また、（４）の時刻ｔ４は、Ｄｅｌａｙ＿Ｒｅｓｐメッセージの受信タイムスタンプから得られる。
【００８０】
これらの４つの時刻から、スレーブノード３のクロックの、マスターノード２のクロックに対するずれを表すｔ＿ｏを計算することができる。
【００８１】
まず、マスターノード２からスレーブノード３へのメッセージ伝送遅延をｔ＿ｍｄとすると、ｔ２−ｔ１＝ｔ＿ｏ＋ｔ＿ｍｄが成り立つ。また、スレーブノード３からマスターノード２へのメッセージ伝送遅延をｔ＿ｓｄとすると、ｔ４−ｔ３＝−ｔ＿ｏ＋ｔ＿ｓｄが成り立つ。
【００８２】
ｔ＿ｍｄは、マスターノード２からネットワークスイッチ１００への伝送遅延、ネットワークスイッチ１００内の滞留時間、および、ネットワークスイッチ１００からスレーブノード３への伝送遅延で構成されている。ｔ＿ｓｄは、スレーブノード３からネットワークスイッチ１００への伝送遅延、ネットワークスイッチ１００内の滞留時間、および、ネットワークスイッチ１００からマスターノード２への伝送遅延で構成されている。
【００８３】
ケーブル１３２上の伝送遅延の非対称性は、無視できる範囲である。また、ネットワークスイッチ１００内の滞留時間は、本実施の形態の処理により等しい。このため、ｔ＿ｍｄとｔ＿ｓｄは等しい。したがって、両ノードのクロックのずれは、ｔ＿ｏ＝（ｔ２−ｔ１−ｔ４＋ｔ３）／２により算出することができる。
【００８４】
このように、第１の実施の形態にかかる中継装置では、スレーブノードから送信されるＤｅｌａｙ＿Ｒｅｑメッセージの滞留時間を、マスターノードから送信されるＳｙｎｃメッセージの滞留時間と一致させることができる。これにより、マスターノードおよびスレーブノード間の時刻同期を高精度に実行することが可能となる。
【００８５】
（第２の実施の形態）
第２の実施の形態にかかる中継装置は、時刻同期用のメッセージの滞留時間を見積もり、見積もった滞留時間をメッセージに付加した上で、見積もった滞留時間が経過した後にメッセージを送信する。
【００８６】
図１１は、第２の実施の形態にかかるネットワークスイッチ２００の構成の一例を示すブロック図である。図１１に示すように、ネットワークスイッチ２００は、アドレス記憶部１２２と、入出力ポート２１０ａ、２１０ｂ、２１０ｃ、２１０ｄ（以下、入出力ポート２１０という）と、クロック部１０１と、ＣＰＵ１０２と、算出部２０３と、を備えている。各構成部は、内部バス１３１により接続され、内部バス１３１を介して相互にデータを送受信する。
【００８７】
第２の実施の形態では、対応記憶部１２１を削除したこと、および、入出力ポート２１０および算出部２０３の機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかるネットワークスイッチ１００の構成を表すブロック図である図２と同様であるので、同一符号を付し、ここでの説明は省略する。
【００８８】
図１２は、入出力ポート２１０の詳細構成の一例を示すブロック図である。図１２に示すように、入出力ポート２１０は、ＰＨＹ部１１１と、入力キュー１１２と、出力キュー１１３と、専用出力キュー１１４と、接続検出部１１５と、時刻検出部１１６と、メッセージ検出部２１７と、送信制御部２１８と、転送制御部１１９と、を備えている。
【００８９】
第２の実施の形態では、メッセージ検出部２１７および送信制御部２１８の機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかる入出力ポート１１０の構成を表すブロック図である図４と同様であるので、同一符号を付し、ここでの説明は省略する。
【００９０】
メッセージ検出部２１７は、第１の実施の形態のメッセージ検出部１１７と同様に、受信されたメッセージの種類を検出する。一方、本実施の形態では、対応記憶部１２１を備えないため、メッセージ検出部２１７は、対応記憶部１２１にエントリを追加する機能を備えていない。
【００９１】
送信制御部２１８は、第１の実施の形態の送信制御部１１８と同様に、出力キュー１１３および専用出力キュー１１４に記憶されているメッセージの送信タイミングを制御する。一方、本実施の形態では、対応記憶部１２１を備えないため、送信制御部２１８は、対応記憶部１２１のエントリを更新する機能を備えていない。
【００９２】
算出部２０３は、第１の実施の形態の送信制御部１１８と同様の手法により、メッセージの滞留時間の予測値を算出する。さらに、算出部２０３は、滞留時間をＰＴＰヘッダのコレクションフィールドに加算する機能を備えている。
【００９３】
一方、算出部２０３は、Ｄｅｌａｙ＿Ｒｅｑメッセージに対応するＳｙｎｃメッセージの滞留時間を対応記憶部１２１から取得する機能、Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間とＳｙｎｃメッセージの滞留時間とを比較し、Ｄｅｌａｙ＿Ｒｅｑメッセージの滞留時間をＳｙｎｃメッセージの滞留時間に一致させる機能、滞留時間が一致させられない場合にＤｅｌａｙ＿Ｒｅｑメッセージを破棄する機能を備えていない。
【００９４】
次に、このように構成された第２の実施の形態にかかるネットワークスイッチ２００による中継処理について図１３を用いて説明する。図１３は、第２の実施の形態における中継処理の全体の流れを示すフローチャートである。
【００９５】
ステップＳ１３０１からステップＳ１３０３までの、メッセージ受信処理、受信時刻検出処理、およびメッセージ検出処理は、第１の実施の形態にかかるネットワークスイッチ１００におけるステップＳ１００１からステップＳ１００３までと同様の処理なので、その説明を省略する。
【００９６】
次に、メッセージ検出部２１７は、受信したメッセージがＳｙｎｃメッセージまたはＤｅｌａｙ＿Ｒｅｑメッセージであるか否かを判断する（ステップＳ１３０４）。ＳｙｎｃメッセージまたはＤｅｌａｙ＿Ｒｅｑメッセージである場合（ステップＳ１３０４：ＹＥＳ）、算出部２０３が、受信したメッセージの滞留時間を算出する（ステップＳ１３０５）。
【００９７】
次に、算出部２０３が、算出した滞留時間をメッセージの受信時刻に加算することにより送信予定時刻を算出し、メッセージの送信時刻タグ４４に付加する（ステップＳ１３０６）。次に、算出部２０３は、滞留時間をＰＴＰヘッダのコレクションフィールドに加算する（ステップＳ１３０７）。
【００９８】
ステップＳ１３０８からステップＳ１３１５までは、第１の実施の形態にかかるネットワークスイッチ１００におけるステップＳ１０１５からステップＳ１０２２までと同様の処理なので、その説明を省略する。
【００９９】
また、本実施の形態では、ステップＳ１３１５で出力キュー１１３または専用出力キュー１１４に保持されたメッセージを送信後、中継処理を終了する。
【０１００】
従来は、例えばメッセージが送信可能となった時点で滞留時間を算出し、滞留時間をコレクションフィールドに設定した後に、メッセージを送信することにより、コレクションフィールドに設定された滞留時間を考慮した時刻同期処理を行っていた。しかし、例えば滞留時間を算出してから実際にメッセージを送信するまでにさらに時間を要する場合などでは、コレクションフィールドに設定した滞留時間と、実際の滞留時間とに誤差が生じ、時刻同期の精度が低下するおそれがあった。
【０１０１】
一方、本実施の形態によれば、上記のような手順により、コレクションフィールドに設定する滞留時間と、実際の滞留時間とを高精度で一致させることができる。すなわち、見積もった滞留時間をコレクションフィールドに設定するとともに、見積もった滞留時間が経過した後にメッセージを送信することができる。これにより、コレクションフィールドを用いた時刻同期処理を高精度に実行可能となる。
【０１０２】
次に、本実施の形態の通信システムによる時刻同期処理の具体例について説明する。
【０１０３】
まず、マスターノード２は、ＩＥＥＥ１５８８で定義されているＰＴＰのＳｙｎｃメッセージを定期的に送信する。
【０１０４】
マスターノード２から送信されたＳｙｎｃメッセージは、ネットワークスイッチ２００の入出力ポート２１０ａに受信される。入出力ポート２１０ａの時刻検出部１１６は、クロック部１０１から時刻情報を得ることにより、Ｓｙｎｃメッセージの受信時刻を検出して保持する。
【０１０５】
次に、メッセージ検出部２１７が、イーサヘッダのタイプと、ＰＴＰヘッダのメッセージタイプを調べる。メッセージ検出部２１７は、イーサヘッダ４１のタイプ４１ｃが「０ｘ８８０７」で、かつＰＴＰヘッダのメッセージタイプが「０」であるため、Ｓｙｎｃメッセージであることを検出する。次に、算出部２０３が、Ｓｙｎｃメッセージの滞留時間を見積もる。また、算出部２０３が、滞留時間を受信時刻に加算して送信予定時刻を得る。次に、算出部２０３は、滞留時間をＰＴＰヘッダのコレクションフィールドに加算する。また、算出部２０３は、送信時刻タグ４４を、Ｓｙｎｃメッセージに付加する。送信時刻タグ４４は、送信予定時刻を保持する。
【０１０６】
この後、Ｓｙｎｃメッセージは、入力キュー１１２、別の入出力ポート２１０の出力キュー１１３、および、別の入出力ポート２１０の専用出力キュー１１４に送出され、送信予定時刻となったときにスレーブノード３に送信される。このときの処理は、第１の実施の形態と同様であるため詳細な説明を省略する。
【０１０７】
続いて、マスターノード２はＦｏｌｌｏｗ＿Ｕｐメッセージを送信する。ネットワークスイッチ２００は、Ｆｏｌｌｏｗ＿Ｕｐメッセージを受信し、受信したＦｏｌｌｏｗ＿Ｕｐメッセージをスレーブノード３に転送する。このときの処理は、第１の実施の形態と同様であるため詳細な説明を省略する。
【０１０８】
スレーブノード３でＦｏｌｌｏｗ＿Ｕｐメッセージが受信された後、スレーブノード３は、マスターノード２へＤｅｌａｙ＿Ｒｅｑメッセージを送信する。
【０１０９】
ネットワークスイッチ２００は、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信し、Ｓｙｎｃメッセージと同様の方法により、滞留時間の算出、送信予定時刻の算出、および、コレクションフィールドへの滞留時間の加算等の処理を行う。そして、Ｄｅｌａｙ＿Ｒｅｑメッセージは、送信予定時刻となったときにマスターノード２に送信される。このときの処理は、第１の実施の形態と同様であるため詳細な説明を省略する。
【０１１０】
マスターノード２は、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信すると、即座にＤｅｌａｙ＿Ｒｅｓｐメッセージをスレーブノード３へ送信する。Ｄｅｌａｙ＿Ｒｅｓｐメッセージは、Ｆｏｌｌｏｗ＿Ｕｐメッセージ同様、ネットワークスイッチ２００では、特殊な処理が実行されずに、スレーブノード３へ転送される。
【０１１１】
これらの一連の通信により、スレーブノード３は、第１の実施の形態で説明した（１）〜（４）の４つの時刻（ｔ１〜ｔ４）に、（５）Ｓｙｎｃメッセージがネットワークスイッチ２００に滞留した時間ｒ１、および、（６）Ｄｅｌａｙ＿Ｒｅｑメッセージがネットワークスイッチ２００に滞留した時間ｒ２を加えた６つの時刻を得ることができる。
【０１１２】
本実施の形態では、これらの６つの時刻から、スレーブノード３のクロックの、マスターノード２のクロックに対するずれを表すｔ＿ｏを計算することができる。
【０１１３】
マスターノード２からスレーブノード３へのメッセージ伝送遅延をｔ＿ｍｄとすると、ｔ２−ｔ１＝ｔ＿ｏ＋ｔ＿ｍｄ＋ｒ１が成り立つ。また、スレーブノード３からマスターノード２へのメッセージ伝送遅延をｔ＿ｓｄとすると、ｔ４−ｔ３＝−ｔ＿ｏ＋ｔ＿ｓｄ＋ｒ２が成り立つ。
【０１１４】
ｔ＿ｍｄは、マスターノード２からネットワークスイッチ２００への伝送遅延、およびネットワークスイッチ２００からスレーブノード３への伝送遅延で構成されている。ｔ＿ｓｄは、スレーブノード３からネットワークスイッチ２００への伝送遅延、およびネットワークスイッチ２００からマスターノード２への伝送遅延で構成されている。
【０１１５】
ケーブル１３２上の伝送遅延の非対称性は、無視できる範囲であり、ｔ＿ｍｄとｔ＿ｓｄは等しい。したがって、両ノードのクロックのずれは、ｔ＿ｏ＝（ｔ２−ｔ１−ｒ１−ｔ４＋ｔ３＋ｒ２）／２により算出することができる。
【０１１６】
このように、第２の実施の形態にかかる中継装置では、ＳｙｎｃメッセージおよびＤｅｌａｙ＿Ｒｅｑメッセージの滞留時間を見積もり、見積もった滞留時間を各メッセージのコレクションフィールドに付加した上で、見積もった滞留時間が経過した後にメッセージを送信することができる。これにより、コレクションフィールドに設定した滞留時間と実際の滞留時間との間に誤差が生じる可能性を低減し、マスターノードおよびスレーブノード間の時刻同期を高精度に実行することが可能となる。
【０１１７】
（第３の実施の形態）
第３の実施の形態にかかる中継装置は、複数の入出力ポートに共通する入出力キューを備え、時刻同期用のメッセージを、当該入出力キューの最後尾に追加する。これにより、追加したメッセージが出力されるまでの滞留時間を一致させることができる。
【０１１８】
図１４は、第３の実施の形態の中継装置であるネットワークスイッチ３００を含む通信システムの構成例を示す図である。図１４に示すように、第３の実施の形態の通信システムは、ネットワークスイッチ３００と、マスターノード２と、複数のスレーブノード３ａ〜３ｃとを備えている。
【０１１９】
スレーブノード３ａ〜３ｃは、第１および第２の実施の形態のスレーブノード３と同様の機能を備えるノードである。以下では、スレーブノード３ａ〜３ｃを単にスレーブノード３という場合がある。
【０１２０】
マスターノード２の構成は、第１および第２の実施の形態と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１２１】
図１５は、ネットワークスイッチ３００の内部構成の一例を示すブロック図である。ネットワークスイッチ３００は、アドレス記憶部１２２と、入出力ポート３１０ａ、３１０ｂ、３１０ｃ、３１０ｄ（以下、入出力ポート３１０という）と、クロック部１０１と、ＣＰＵ１０２と、入出力キュー３０４と、送信制御部３１８と、を備えている。各構成部は、内部バス１３１により接続され、内部バス１３１を介して相互にデータを送受信する。
【０１２２】
第３の実施の形態では、対応記憶部１２１と算出部１０３とを削除したこと、入出力ポート３１０の機能、および、入出力キュー３０４と送信制御部３１８とを追加したことが第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかるネットワークスイッチ１００の構成を表すブロック図である図２と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１２３】
入出力ポート３１０は、各ノードに接続するためのケーブル１３２が接続されるポートである。図１６は、入出力ポート３１０の詳細構成の一例を示すブロック図である。図１６に示すように、入出力ポート３１０は、ＰＨＹ部１１１を備えている。すなわち、第３の実施の形態では、ＰＨＹ部１１１以外の構成部を削除したことが第１の実施の形態と異なっている。ＰＨＹ部１１１の構成および機能は、第１の実施の形態と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１２４】
図１５に戻り、入出力キュー３０４は、各入出力ポート３１０で送受信されるメッセージを記憶するキューである。図１７は、入出力キュー３０４の構成例を示す図である。図１７に示すように、入出力キュー３０４は、ｎ個（ｎは２以上の整数）のＦＩＦＯ構造のデータブロック３０５と、データ処理部３０６とを備えている。同図では、１０個（ｎ＝１０）のデータブロック３０５（３０５−１〜３０５−１０）を備える例が示されている。
【０１２５】
１つのデータブロック３０５には１つのメッセージ（データ）が入力され、一定の時間ｔ＿ｑごとに１つのデータが出力される。全てのデータは最初にデータ処理部３０６に入力される。データ処理部３０６は、メッセージ検出部３０７と、保存部３０８とを備えている。
【０１２６】
メッセージ検出部３０７は、第１の実施の形態のメッセージ検出部１１７と同様の手法により、受信されたメッセージの種類を検出する。すなわち、メッセージ検出部３０７は、イーサヘッダのタイプとＰＴＰメッセージのＰＴＰヘッダのメッセージタイプとを参照することにより、メッセージの種類を検出する。
【０１２７】
保存部３０８は、入力されたデータをデータブロック３０５に保存する。例えば、保存部３０８は、受信されたメッセージがＰＴＰメッセージである場合、ＦＩＦＯ方式により最後（ｎ番目）に出力されるデータブロック３０５（最後尾のデータブロック３０５）に、当該ＰＴＰメッセージを保存する。なお、最後尾のデータブロック３０５以外に空のデータブロック３０５が存在する場合、保存部３０８は、ダミーデータを作成し、空のデータブロック３０５に作成したダミーデータを保存する。
【０１２８】
また、保存部３０８は、受信されたメッセージがＰＴＰメッセージ以外のメッセージである場合、空のデータブロック３０５またはダミーデータが保存されているデータブロック３０５のうち最も出力順序が小さいデータブロック３０５に当該メッセージを保存する。該当するデータブロック３０５にダミーデータが保存されている場合、保存部３０８は、ダミーデータと入れ替えることによりメッセージを保存する。
【０１２９】
図１５に戻り、送信制御部３１８は、一定の時間ｔ＿ｑごとに入出力キュー３０４からＦＩＦＯ方式でデータ（メッセージ）を取得し、取得したメッセージを、メッセージで指定された宛先のノードに送信するように制御する。なお、送信制御部３１８は、入出力キュー３０４からダミーデータを取得した場合は、取得したデータを送信せずに破棄する。
【０１３０】
上述のように、受信されたＰＴＰメッセージは、常に入出力キュー３０４の最後尾に入力される。このため、ＰＴＰメッセージが入出力キュー３０４に入力されてから出力されるまでの時間はｎ×ｔ＿ｑで一定となる。
【０１３１】
次に、このように構成された第３の実施の形態にかかるネットワークスイッチ３００による中継処理について図１８を用いて説明する。図１８は、第３の実施の形態における中継処理の全体の流れを示すフローチャートである。
【０１３２】
まず、ＰＨＹ部１１１の受信部１１１ａが、マスターノード２またはスレーブノード３から送信されたメッセージを受信する（ステップＳ１８０１）。ＰＨＹ部１１１は、受信したメッセージを入出力キュー３０４に送出する（ステップＳ１８０２）。
【０１３３】
次に、入出力キュー３０４のメッセージ検出部３０７が、イーサヘッダのタイプおよびＰＴＰヘッダのメッセージタイプを参照してメッセージの種類を検出する（ステップＳ１８０３）。次に、メッセージ検出部３０７が、受信したメッセージがＳｙｎｃメッセージまたはＤｅｌａｙ＿Ｒｅｑメッセージであるか否かを判断する（ステップＳ１８０４）。
【０１３４】
ＳｙｎｃメッセージまたはＤｅｌａｙ＿Ｒｅｑメッセージである場合（ステップＳ１８０４：ＹＥＳ）、保存部３０８が、受信したメッセージをデータブロック３０５の最後尾に入力する（ステップＳ１８０５）。なお、空のデータブロック３０５が存在する場合は、保存部３０８は、空のデータブロック３０５にダミーデータを入力した上で、メッセージをデータブロック３０５の最後尾に入力する。
【０１３５】
ＳｙｎｃメッセージまたはＤｅｌａｙ＿Ｒｅｑメッセージでない場合（ステップＳ１８０４：ＮＯ）、保存部３０８は、受信したメッセージをデータブロック３０５のうち、最も出力に近い位置の空のデータブロック３０５に入力する（ステップＳ１８０６）。
【０１３６】
次に、送信制御部３１８が、一定の時間ｔ＿ｑごとに入出力キュー３０４からＦＩＦＯ方式で送信するメッセージを取得する（ステップＳ１８０７）。そして、送信制御部３１８は、取得したメッセージをメッセージで指定された宛先のノードに送信し（ステップＳ１８０８）、中継処理を終了する。
【０１３７】
次に、本実施の形態の通信システムによる時刻同期処理の具体例について説明する。
【０１３８】
まず、マスターノード２は、ＩＥＥＥ１５８８で定義されているＰＴＰのＳｙｎｃメッセージを定期的に送信する。
【０１３９】
マスターノード２から送信されたＳｙｎｃメッセージは、ネットワークスイッチ３００の入出力ポート３１０ａで受信される。次に、Ｓｙｎｃメッセージは入出力キュー３０４に入力される。ＳｙｎｃメッセージはＰＴＰメッセージであるため、保存部３０８は、入出力キュー３０４の最後尾にＳｙｎｃメッセージを保存する。そして、送信制御部３１８が、一定時間であるｎ×ｔ＿ｑが経過後にＳｙｎｃメッセージをスレーブノード３に送信する。
【０１４０】
Ｓｙｎｃメッセージがスレーブノード３で受信されると、続いてマスターノード２はＦｏｌｌｏｗ＿Ｕｐメッセージを送信する。ネットワークスイッチ３００では、Ｆｏｌｌｏｗ＿Ｕｐメッセージは通常のデータと同じ扱いにより処理され、スレーブノード３へ転送される。
【０１４１】
スレーブノード３でＦｏｌｌｏｗ＿Ｕｐメッセージが受信された後、スレーブノード３は、マスターノード２へＤｅｌａｙ＿Ｒｅｑメッセージを送信する。
【０１４２】
Ｄｅｌａｙ＿Ｒｅｑメッセージがネットワークスイッチ３００に入力されると、ネットワークスイッチ３００はＳｙｎｃメッセージ同様の処理を行う。すなわち、データ処理部３０６のメッセージ検出部３０７が、Ｄｅｌａｙ＿ＲｅｑメッセージのイーサヘッダのタイプおよびＰＴＰヘッダのメッセージタイプを調べる。イーサヘッダ４１のタイプ４１ｃが「０ｘ８８０７」で、かつＰＴＰヘッダのメッセージタイプが「１」であるため、メッセージ検出部３０７は、Ｄｅｌａｙ＿Ｒｅｑメッセージであることを検出する。さらに、保存部３０８が、Ｄｅｌａｙ＿Ｒｅｑメッセージをデータブロック３０５の最後尾に入力し、それ以外の空のデータブロック３０５をダミーデータで埋める。この結果、Ｄｅｌａｙ＿Ｒｅｑメッセージは、ｎ×ｔ＿ｑ時間の滞留時間後に入出力キュー３０４から出力され、マスターノード２に送信される。
【０１４３】
マスターノード２は、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信すると、即座にＤｅｌａｙ＿Ｒｅｓｐメッセージをスレーブノード３へ送信する。Ｄｅｌａｙ＿Ｒｅｑメッセージがネットワークスイッチ３００により受信されると、通常のデータの処理が行われ、スレーブノード３へ転送される。
【０１４４】
これらの一連の通信により、スレーブノード３は、第１の実施の形態で説明した（１）〜（４）の４つの時刻（ｔ１〜ｔ４）を得ることができる。また、滞留時間を一定（ｎ×ｔ＿ｑ）にすることができるため、マスターノード２とスレーブノード３との間のクロックのずれは、第１の実施の形態と同様にｔ＿ｏ＝（ｔ２−ｔ１−ｔ４＋ｔ３）／２により算出することができる。
【０１４５】
ところで、本実施の形態では、複数のスレーブノード３ａ〜３ｃがネットワークスイッチ３００に接続されている。このような構成では、ネットワークスイッチ３００が、複数のスレーブノード３ａ〜３ｃからマスターノード２へ送信されるＤｅｌａｙ＿Ｒｅｑメッセージを同時に受信する場合がある。このような場合、データ処理部３０６の保存部３０８は、各スレーブノード３から受信した複数のメッセージを１つのデータにまとめてデータブロック３０５の最後尾へ入力する。
【０１４６】
仮に、同時に受信した複数のメッセージをそれぞれ異なるデータブロック３０５に入力するように構成した場合、例えば、それぞれのメッセージの滞留時間は、ｎ×ｔ＿ｑ、(ｎ＋１)×ｔ＿ｑ、および（ｎ＋２）×ｔ＿ｑのように異なる値となる。一方、上述のように同時に受信した複数のメッセージをまとめて最後尾のデータブロック３０５に入力するように構成すれば、滞留時間を常に一定の値であるｎ×ｔ＿ｑとすることができる。
【０１４７】
図１９は、１つのデータにまとめたＤｅｌａｙ＿Ｒｅｑメッセージのデータ形式の一例を示す図である。図１９では、Ｄｅｌａｙ＿Ｒｅｑメッセージの後に別のＤｅｌａｙ＿Ｒｅｑメッセージを連結して１つのデータとする例が示されている。このようなメッセージを受信したマスターノード２は、先頭から２番目のイーサヘッダが検出されるまでのメッセージを、あるスレーブノード３から送信された１つのＤｅｌａｙ＿Ｒｅｑメッセージとして処理する。
【０１４８】
次に、マスターノード２は、２番目のイーサヘッダとＰＴＰヘッダを検出し、別のスレーブノード３から送信されたＤｅｌａｙ＿Ｒｅｑメッセージとして処理を行う。マスターノード２は、２番目に処理するＤｅｌａｙ＿Ｒｅｑメッセージの受信時刻を、最初に処理をしたＤｅｌａｙ＿Ｒｅｑメッセージと同じ受信時刻とする。
【０１４９】
マスターノード２は、３番目以降のＤｅｌａｙ＿Ｒｅｑメッセージも同様にして処理する。マスターノード２は、複数のＤｅｌａｙ＿Ｒｅｑメッセージに対して、それぞれＤｅｌａｙ＿Ｒｅｓｐメッセージを送信する。
【０１５０】
なお、保存部３０８が、２番目以降のＤｅｌａｙ＿Ｒｅｑメッセージのイーサヘッダに、送信元ＭＡＣアドレス（送主アドレス）のみを設定するように構成してもよい。宛先アドレスやタイプは共通するためである。これにより、送信するメッセージのサイズを低減することが可能となる。
【０１５１】
このように、第３の実施の形態にかかる中継装置では、複数の入出力ポートに共通する入出力キューを備え、ＳｙｎｃメッセージおよびＤｅｌａｙ＿Ｒｅｑメッセージを、当該入出力キューの最後尾に追加するため、追加したメッセージが出力されるまでの滞留時間を一致させることができる。これにより、マスターノードおよびスレーブノード間の時刻同期を高精度に実行することが可能となる。
【０１５２】
（第４の実施の形態）
第４の実施の形態にかかる中継装置は、時刻同期用のメッセージを、宛先のノードが接続された入出力ポート内の専用出力キューに直接転送する。そして、専用出力キューに入力されたメッセージを、通常のメッセージが入力される出力キューより優先して即時に宛先のノードに送信する。これにより、中継装置内での時刻同期用のメッセージの滞留時間を一定にすることができる。
【０１５３】
なお、複数の時刻同期用のメッセージが同時に受信された場合、いずれかのメッセージが優先的に送信されることにより滞留時間を一定にできない可能性がある。そこで、第４の実施の形態にかかる中継装置は、複数のスレーブノードに対して、それぞれ異なるタイミングで時刻同期用のメッセージを送信することを要求するメッセージを送信する。これにより、各スレーブノードが送信した時刻同期用のメッセージが同時に受信されることを回避できる。
【０１５４】
本実施の形態の通信システムの構成は、第３の実施の形態の通信システムの構成例を示す図１４と同様であるため、説明を省略する。
【０１５５】
図２０は、第４の実施の形態にかかるネットワークスイッチ４００の構成の一例を示すブロック図である。図２０に示すように、ネットワークスイッチ４００は、アドレス記憶部１２２と、ポート状態記憶部４２３と、入出力ポート４１０ａ、４１０ｂ、４１０ｃ、４１０ｄ（以下、入出力ポート４１０という）と、クロック部１０１と、ＣＰＵ１０２と、プロトコル処理部４０５と、を備えている。各構成部は、内部バス１３１により接続され、内部バス１３１を介して相互にデータを送受信する。
【０１５６】
第４の実施の形態では、対応記憶部１２１と算出部１０３とを削除したこと、ポート状態記憶部４２３とプロトコル処理部４０５とを追加したこと、および入出力ポート４１０の機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかるネットワークスイッチ１００の構成を表すブロック図である図２と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１５７】
ポート状態記憶部４２３は、入出力ポート４１０の状態を表すポート状態を記憶する。図２１は、ポート状態記憶部４２３に記憶されるデータのデータ構造の一例を示す図である。同図に示すように、ポート状態記憶部４２３のエントリは、ポート番号と、ポート状態とを含んでいる。ポート番号は、入出力ポート４１０を識別する番号である。ポート状態は、入出力ポート４１０にマスターノード２が接続されている状態の場合に「マスター」が設定され、入出力ポート４１０にスレーブノード３が接続されている状態の場合に「スレーブ」が設定される。同図では、ポート番号１の入出力ポート４１０にはマスターノード２が接続され、ポート番号２、３、および４の入出力ポート４１０にはスレーブノード３が接続された場合のエントリの一例が示されている。
【０１５８】
図２０に戻り、プロトコル処理部４０５は、ＰＴＰに準拠した各種処理を実行する。例えば、プロトコル処理部４０５は、ポート状態を検出するために定期的にＰＴＰ管理要求メッセージを各ノードに送信する。また、プロトコル処理部４０５は、ＰＴＰ管理要求メッセージに対する応答であるＰＴＰ管理応答メッセージを受信し、ＰＴＰ管理応答メッセージを解析することにより、各ノードのポート状態を検出する。また、検出されたポート状態は、ポート状態記憶部４２３に保存される。
【０１５９】
また、プロトコル処理部４０５は、指定した開始時間が経過後にＤｅｌａｙ＿Ｒｅｑメッセージを送信することを要求するためのＤｅｌａｙ＿Ｒｅｑ開始メッセージを生成してスレーブノード３に送信する。このＤｅｌａｙ＿Ｒｅｑ開始メッセージは、ＰＴＰのシグナリングメッセージを拡張したものである。
【０１６０】
図２２は、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージのＰＴＰボディの構成例を示す図である。図２２に示すように、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージのＰＴＰボディ４３１は、ターゲットポートＩＤと、タイプと、長さと、組織ＩＤと、組織サブタイプと、開始時間とを含んでいる。ターゲットポートＩＤは、宛先のポートＩＤである。タイプは、ＰＴＰシグナリングメッセージのタイプを表す。Ｄｅｌａｙ＿Ｒｅｑ開始メッセージは組織拡張メッセージであるため、タイプには「３」の値を保持する。組織ＩＤは、例えば組織を表すＯＵＩコードを保持する。組織サブタイプは、組織内により自由に割り当てられる値を保持する。したがって、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージを表す固有の値は、組織ＩＤおよび組織サブタイプの値となる。開始時間は、スレーブノード３がＤｅｌａｙ＿Ｒｅｑ開始メッセージを受信してからＤｅｌａｙ＿Ｒｅｑメッセージの送信を開始するまでの時間を保持する。開始時間がゼロの場合は、スレーブノード３は即座にＤｅｌａｙ＿Ｒｅｑメッセージを送信する。
【０１６１】
Ｄｅｌａｙ＿Ｒｅｑ開始メッセージのイーサヘッダ４１の宛先アドレス４１ａにはスレーブノード３のＭＡＣアドレスが保持される。送主アドレス４１ｂにはネットワークスイッチ４００のＭＡＣアドレスが保持される。タイプ４１ｃには「０ｘ８８０７」が保持され、ＰＴＰヘッダ４２のメッセージタイプ４２ａにはシグナリングメッセージを表す「０ｘＣ」の値が保持される。
【０１６２】
なお、Ｄｅｌａｙ＿Ｒｅｑメッセージを送信する必要がないスレーブノード３は、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージに対する応答として、Ｄｅｌａｙ＿Ｒｅｑメッセージの代わりに、Ｄｅｌａｙ＿Ｒｅｑ終了メッセージを送信する。このＤｅｌａｙ＿Ｒｅｑ終了メッセージは、ＰＴＰのシグナリングメッセージを拡張したものである。
【０１６３】
図２３は、Ｄｅｌａｙ＿Ｒｅｑ終了メッセージのＰＴＰボディの構成例を示す図である。図２３に示すように、Ｄｅｌａｙ＿Ｒｅｑ終了メッセージは、ターゲットポートＩＤと、タイプと、長さと、組織ＩＤと、組織サブタイプとを含んでいる。組織サブタイプは、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージと異なる値を保持する。Ｄｅｌａｙ＿Ｒｅｑ終了メッセージは、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージ同様に組織拡張メッセージであるため、タイプには「３」の値を保持する。
【０１６４】
図２０に戻り、入出力ポート４１０は、各ノードに接続するためのケーブル１３２が接続されるポートである。図２４は、入出力ポート４１０の詳細構成の一例を示すブロック図である。図２４に示すように、入出力ポート４１０は、ＰＨＹ部１１１と、入力キュー１１２と、出力キュー１１３と、専用出力キュー１１４と、接続検出部１１５と、メッセージ検出部１１７と、送信制御部４１８と、転送制御部４１９と、メッセージ判定部４２０と、を備えている。これらは、内部バス１３１により接続され、相互にデータのやり取りが可能である。
【０１６５】
第４の実施の形態では、時刻検出部１１６を削除したこと、送信制御部４１８と転送制御部４１９の機能、および、メッセージ判定部４２０を追加したことが第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかる入出力ポート１１０の構成を表すブロック図である図４と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１６６】
メッセージ判定部４２０は、受信されたメッセージが最優先で転送するＰＴＰメッセージであるか否かを判定する。具体的には、メッセージ判定部４２０は、メッセージ検出部１１７によって検出されたメッセージの種類が、最優先で転送するＰＴＰメッセージとして予め定められたメッセージを表すか否かを判定する。
【０１６７】
送信制御部４１８は、出力キュー１１３および専用出力キュー１１４に記憶されているメッセージの送信タイミングを制御する。本実施の形態では、送信制御部４１８は、出力キュー１１３に記憶されているメッセージより、専用出力キュー１１４に記憶されているメッセージを優先して即時に送信するように制御する。
【０１６８】
転送制御部４１９は、入力キュー１１２に記憶されているメッセージを、他の入出力ポート４１０の出力キュー１１３に転送する処理を制御する。また、転送制御部４１９は、最優先で転送するＰＴＰメッセージを、入力キュー１１２に記憶せずに、宛先のノードが接続された入出力ポート４１０の専用出力キュー１１４に即時に転送するように制御する機能が追加される。
【０１６９】
次に、マスターノード２およびスレーブノード３の内部構造について図２５を用いて説明する。図２５は、マスターノード２およびスレーブノード３の内部構成の一例を示すブロック図である。なお、マスターノード２およびスレーブノード３は、同図に示すような同様の内部構成を備えている。
【０１７０】
すなわち、マスターノード２およびスレーブノード３は、クロック部２２と、ＣＰＵ２３と、プロトコル処理部２４と、入出力ポート２５と、を備えている。各構成部は、内部バス２６により接続され、内部バス２６を介して相互にデータを送受信する。
【０１７１】
クロック部２２は、クロック信号を発生させる。ＣＰＵ２３は、各ノード内で実行される各種処理を制御するプロセッサである。プロトコル処理部２４は、ネットワークスイッチ４００と同様に、ＰＴＰに準拠した各種処理を実行する。入出力ポート２５は、ネットワークスイッチ４００に接続するためのケーブル１３２が接続されるポートである。
【０１７２】
次に、このように構成された第４の実施の形態にかかるネットワークスイッチ４００によるポート状態検出処理について説明する。ポート状態検出処理とは、ＰＴＰに準拠した所定のメッセージを送受信することにより、各入出力ポート４１０のポート状態を検出する処理を表す。
【０１７３】
まず、マスターノード２やスレーブノード３がネットワークスイッチ４００に接続されると、接続検出部１１５によって接続が検出され、接続状態がオフ情報からオン情報に変更される。これを契機として、ネットワークスイッチ４００は、ＰＴＰ管理要求メッセージを定期的に送信し、ノード毎のポート状態（マスターかスレーブか）を取得する。
【０１７４】
図２６は、ＰＴＰ管理メッセージのメッセージ形式の一例を示す図である。ＰＴＰ管理メッセージとは、ポート状態の検出等のＰＴＰを実行するために必要な管理処理に関連して送信されるメッセージである。ＰＴＰ管理メッセージには、ポート状態を検出するためのＰＴＰ管理要求メッセージ、および、ＰＴＰ管理要求メッセージに対する応答であるＰＴＰ管理応答メッセージが含まれる。
【０１７５】
図２６に示すように、ＰＴＰ管理メッセージは、イーサヘッダ４１と、ＰＴＰヘッダ４２と、ＰＴＰボディ４３と、から構成される。このように、ＰＴＰ管理メッセージは、図５に示すような時刻同期に用いられるＰＴＰメッセージから送信時刻タグ４４を削除した構成となっている。なお、ＰＴＰヘッダ４２の詳細な構成は、第１の実施の形態で示した図６と同様であるため説明を省略する。
【０１７６】
ＰＴＰ管理メッセージのボディは、アクションフィールド、マネージメントＩＤ、およびポート状態フィールド等から構成される（図示せず）。アクションフィールドは、ＰＴＰ管理要求メッセージであれば「０」の値が保持され、ＰＴＰ管理応答メッセージであれば「２」の値が保持される。マネージメントＩＤは、ＰＴＰ管理メッセージの種類を表す値が保持される。ＰＴＰ管理要求メッセージおよびＰＴＰ管理応答メッセージの種類は、ＰＯＲＴ＿ＤＡＴＡ＿ＳＥＴであるため、「０ｘ２００４」が保持される。
【０１７７】
ポート状態フィールドは、ポート状態が保持される。マスターノード２が接続されている場合は「０ｘ０６」が保持され、スレーブノード３が接続されている場合は「０ｘ０９」の値が保持される。
【０１７８】
ＰＴＰ管理要求メッセージのイーサヘッダ４１の宛先アドレス４１ａには、マルチキャストアドレスが保持される。送主アドレス４１ｂにはネットワークスイッチ４００のＭＡＣアドレスが保持される。ＰＴＰヘッダ４２のメッセージタイプ４２ａには「０ｘＤ」が保持される。ＰＴＰボディ４３のアクションフィールドには「０」が保持され、マネージメントＩＤには「０ｘ２００４」が保持される。
【０１７９】
マスターノード２は、ＰＴＰ管理要求メッセージを受信すると、プロトコル処理部２４により、メッセージの種類が判別される。プロトコル処理部２４は、ＰＴＰヘッダのメッセージタイプ、ＰＴＰボディのアクションフィールド、およびマネージメントＩＤの値から、ＰＴＰ管理要求メッセージであることを検出し、応答としてＰＴＰ管理応答メッセージを送信する。
【０１８０】
マスターノード２が送信するＰＴＰ管理応答メッセージのイーサヘッダ４１の宛先アドレス４１ａには、ＰＴＰ管理要求メッセージの送主アドレスであったネットワークスイッチ４００のＭＡＣアドレスが保持される。イーサヘッダ４１の送主アドレス４１ｂには、マスターノード２のＭＡＣアドレスが保持される。ＰＴＰヘッダ４２のメッセージタイプ４２ａには「０ｘＤ」が保持される。ＰＴＰボディ４３のアクションフィールドには「２」が保持され、マネージメントＩＤには「０ｘ２００４」が保持され、ポート状態フィールドには「６」の値が保持される。
【０１８１】
スレーブノード３ａ、３ｂ、３ｃは、マスターノード２同様に、ＰＴＰ管理要求メッセージを受信すると、プロトコル処理部２４により、メッセージの種類が判別される。プロトコル処理部２４は、ＰＴＰ管理要求メッセージであることを検出し、ＰＴＰ管理応答メッセージを送信する。
【０１８２】
スレーブノード３が送信するＰＴＰ管理応答メッセージのイーサヘッダ４１の宛先アドレス４１ａにはネットワークスイッチ４００のＭＡＣアドレスが保持される。送主アドレス４１ｂにはスレーブノード３のＭＡＣアドレスが保持される。ＰＴＰヘッダ４２のメッセージタイプ４２ａには「０ｘＤ」が保持される。ＰＴＰボディ４３のアクションフィールドには「２」が保持され、マネージメントＩＤには「０ｘ２００４」が保持され、ポート状態フィールドには「９」の値が保持される。
【０１８３】
ネットワークスイッチ４００は、マスターノード２、およびスレーブノード３ａ、３ｂ、３ｃから送信されたＰＴＰ管理応答メッセージを受信すると、プロトコル処理部４０５によりメッセージの種類が検出される。プロトコル処理部４０５は、ＰＴＰ管理応答メッセージであることを検出し、ポート状態フィールドから各入出力ポート４１０のポート状態を検出する。また、プロトコル処理部４０５は、検出したポート状態を、ポート状態記憶部４２３に反映する。
【０１８４】
このようなポート状態検出処理により、ネットワークスイッチ４００は、各入出力ポート４１０の最新のポート状態を保持することができる。
【０１８５】
次に、このように構成された第４の実施の形態にかかるネットワークスイッチ４００による中継処理について図２７を用いて説明する。図２７は、第４の実施の形態における中継処理の全体の流れを示すフローチャートである。
【０１８６】
まず、ＰＨＹ部１１１の受信部１１１ａが、マスターノード２またはスレーブノード３から送信されたメッセージを受信する（ステップＳ２７０１）。次に、メッセージ検出部１１７が、イーサヘッダのタイプおよびＰＴＰヘッダのメッセージタイプを参照してメッセージの種類を検出する（ステップＳ２７０２）。
【０１８７】
次に、メッセージ判定部４２０が、受信したメッセージが最優先で転送するＰＴＰメッセージであるか否かを判断する（ステップＳ２７０３）。例えば、メッセージ判定部４２０は、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿Ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｑメッセージ、およびＤｅｌａｙ＿Ｒｅｓｐメッセージを最優先で転送するＰＴＰメッセージであると判定する。
【０１８８】
最優先で転送するＰＴＰメッセージである場合（ステップＳ２７０３：ＹＥＳ）、転送制御部４１９は、当該ＰＴＰメッセージの宛先として指定されたノードが接続された入出力ポート４１０を特定する。そして、転送制御部４１９が、特定した入出力ポート４１０の専用出力キュー１１４に当該ＰＴＰメッセージを転送する（ステップＳ２７０４）。
【０１８９】
ＰＴＰメッセージが転送された入出力ポート４１０の送信制御部４１８は、専用出力キュー１１４に転送されたＰＴＰメッセージを最優先で送信し（ステップＳ２７０５）、中継処理を終了する。
【０１９０】
最優先で転送するＰＴＰメッセージでない場合（ステップＳ２７０３：ＮＯ）、受信されたメッセージは、メッセージが受信された入出力ポート４１０の入力キュー１１２に記憶される（ステップＳ２７０６）。
【０１９１】
次に、転送制御部４１９は、記憶されたメッセージの処理の順番となったときに、当該メッセージを、内部バス１３１を介して、当該メッセージの宛先となるノードが接続された入出力ポート４１０の出力キュー１１３に転送する（ステップＳ２７０７）。
【０１９２】
メッセージが転送された入出力ポート４１０の送信制御部４１８は、出力キュー１１３に転送されたメッセージの処理の順番となったときに、当該メッセージを宛先となるノードに送信し（ステップＳ２７０８）、中継処理を終了する。
【０１９３】
次に、本実施の形態の通信システムによる時刻同期処理の具体例について図２８を用いて説明する。図２８は、第４の実施の形態の時刻同期処理のシーケンス図である。
【０１９４】
まず、マスターノード２は、定期的にＳｙｎｃメッセージを送信する（ステップＳ２８０１）。ネットワークスイッチ４００は、任意のメッセージを受信すると、メッセージ検出部１１７によって、最優先で転送するＰＴＰメッセージであるか否かを検出する。Ｓｙｎｃメッセージは、最優先で転送するＰＴＰメッセージであるため、転送制御部４１９によって宛先ノードが接続された入出力ポート４１０の専用出力キュー１１４へ直接転送され、即座にメッセージがスレーブノード３へ出力される（ステップＳ２８０２〜ステップＳ２８０４）。本実施の形態では、スレーブノード３ａ、３ｂ、３ｃが接続された入出力ポート４１０ｂ、４１０ｃ、４１０ｄの専用出力キュー１１４へ転送される。
【０１９５】
最優先で転送されるＰＴＰメッセージは、直接専用出力キュー１１４へ転送されることで、入力キュー１１２での待ち時間、および出力キュー１１３での待ち時間が生じなくなる。このため、ネットワークスイッチ４００内でのメッセージの滞留時間が減り、マスターノード２とスレーブノード３間の時刻同期精度が向上する。
【０１９６】
なお、最優先で転送するＰＴＰメッセージ以外のメッセージは、受信された入出力ポート４１０の入力キュー１１２へ送られ、先に送られたメッセージと共に、宛先となるノードが接続された入出力ポート４１０の出力キュー１１３へ転送する順番を待つ。
【０１９７】
マスターノード２は、Ｓｙｎｃメッセージに続いて、Ｆｏｌｌｏｗ＿Ｕｐメッセージを送信する（ステップＳ２８０５）。Ｆｏｌｌｏｗ＿Ｕｐメッセージを受信したネットワークスイッチ４００は、メッセージ検出部１１７により最優先で転送するＰＴＰメッセージであることを検出する。これにより、Ｆｏｌｌｏｗ＿Ｕｐメッセージは、Ｓｙｎｃメッセージ同様に最優先で転送される（ステップＳ２８０６〜ステップＳ２８０８）。
【０１９８】
次に、ネットワークスイッチ４００は、ポート状態記憶部４２３を参照し、スレーブノード３が接続された入出力ポート４１０を検出する。そして、検出した各入出力ポート４１０に接続されたスレーブノード３ａ、３ｂ、３ｃそれぞれに対して、Ｄｅｌａｙ＿Ｒｅｑメッセージの送信を開始する開始時間を算出する（ステップＳ２８０９）。このとき、ネットワークスイッチ４００は、各スレーブノード３ａ、３ｂ、３ｃに送信するＤｅｌａｙ＿Ｒｅｑ開始メッセージの開始時間を、それぞれ異なる時間に設定する。例えば、スレーブノード３ａ、３ｂ、および３ｃに送信するＤｅｌａｙ＿Ｒｅｑ開始メッセージの開始時間を、それぞれ「０ミリ秒」、「１０ミリ秒」、および「２０ミリ秒」に設定する。
【０１９９】
ネットワークスイッチ４００は、算出した開始時間を各スレーブノード３のＤｅｌａｙ＿Ｒｅｑ開始メッセージにそれぞれ設定し（ステップＳ２８１０）、各スレーブノード３に送信する（ステップＳ２８１１〜ステップＳ２８１３）。
【０２００】
スレーブノード３ａは、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージを受信し、プロトコル処理部２４によってメッセージを検出する。また、プロトコル処理部２４は、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージのＰＴＰボディ４３１の開始時間を読み取り、Ｄｅｌａｙ＿Ｒｅｑメッセージを、読み取った開始時間後に送信する（ステップＳ２８１４）。上記例では開始時間が「０ミリ秒」であるため、スレーブノード３ａは、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージを受信してから即座にＤｅｌａｙ＿Ｒｅｑメッセージを送信する。
【０２０１】
スレーブノード３ｂ、３ｃも同様にＤｅｌａｙ＿Ｒｅｑ開始メッセージを受信し、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージで指定された開始時間が経過した後に、Ｄｅｌａｙ＿Ｒｅｑメッセージを送信する（ステップＳ２８１６、ステップＳ２８１８）。
【０２０２】
Ｄｅｌａｙ＿Ｒｅｑメッセージを受信したネットワークスイッチ４００は、メッセージ検出部１１７によって最優先で転送するＰＴＰメッセージであることを検出する。これにより、Ｄｅｌａｙ＿Ｒｅｑメッセージは、Ｓｙｎｃメッセージと同様に優先してマスターノード２へ転送される。
【０２０３】
スレーブノード３ｂ、３ｃも同様に、それぞれＤｅｌａｙ＿Ｒｅｑ開始メッセージを受信してから、１０ミリ秒、２０ミリ秒後にＤｅｌａｙ＿Ｒｅｑメッセージを送信する。各Ｄｅｌａｙ＿Ｒｅｑメッセージは、それぞれマスターノード２へ同様に転送される。Ｄｅｌａｙ＿Ｒｅｑメッセージを送信する必要がないスレーブノード３は、Ｄｅｌａｙ＿Ｒｅｑメッセージの代わりに、Ｄｅｌａｙ＿Ｒｅｑ終了メッセージを送信する。
【０２０４】
マスターノード２は、各スレーブノード３のＤｅｌａｙ＿Ｒｅｑメッセージを受信した後、各スレーブノード３へＤｅｌａｙ＿Ｒｅｓｐメッセージを送信する。
【０２０５】
Ｄｅｌａｙ＿Ｒｅｓｐメッセージを受信したネットワークスイッチ４００は、メッセージ検出部１１７によって最優先で転送するＰＴＰメッセージであることを検出する。これにより、Ｄｅｌａｙ＿Ｒｅｓｐメッセージは、最優先度でスレーブノード３へ転送される（ステップＳ２８１５、ステップＳ２８１７、ステップＳ２８１９）。
【０２０６】
これらの一連の通信により、スレーブノード３は、第１の実施の形態で説明した（１）〜（４）の４つの時刻（ｔ１〜ｔ４）を得ることができる。また、ＰＴＰメッセージを常に最優先で転送することにより滞留時間を一定にすることができる。このため、マスターノード２とスレーブノード３との間のクロックのずれは、第１の実施の形態と同様にｔ＿ｏ＝（ｔ２−ｔ１−ｔ４＋ｔ３）／２により算出することができる。
【０２０７】
このように、第４の実施の形態にかかる中継装置では、時刻同期用のメッセージを専用出力キューに直接転送し、専用出力キューに入力されたメッセージを最優先で宛先のノードに送信する。これにより、中継装置内での時刻同期用のメッセージの滞留時間を一定にすることができる。
【０２０８】
また、第４の実施の形態にかかる中継装置では、複数のスレーブノードに対して、それぞれ異なるタイミングで時刻同期用のメッセージを送信することを要求するメッセージを送信することができる。これにより、各スレーブノードが送信した時刻同期用のメッセージが同時に受信されることを回避できる。
【０２０９】
（第５の実施の形態）
第５の実施の形態にかかる中継装置は、さらに他の中継装置を介してスレーブノードに接続される。そして、第５の実施の形態にかかる中継装置は、時刻同期用のメッセージ（Ｄｅｌａｙ＿Ｒｅｑメッセージ）を送信することを要求するメッセージ（Ｄｅｌａｙ＿Ｒｅｑ開始メッセージ）を、他の中継装置を介して接続されたスレーブノードを優先して送信する。そして、他の中継装置を介して接続されたスレーブノードから、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージに対応するＤｅｌａｙ＿Ｒｅｑメッセージを受信した後に、直接接続されたスレーブノードに対してＤｅｌａｙ＿Ｒｅｑ開始メッセージを送信する。
【０２１０】
図２９は、第５の実施の形態の中継装置であるネットワークスイッチ５００を含む通信システムの構成例を示す図である。図２９に示すように、第５の実施の形態の通信システムは、ネットワークスイッチ５００ａ、５００ｂと、マスターノード２と、スレーブノード３ｄ、３ｅ、３ｆ、３ｇとを備えている。なお、ネットワークスイッチ５００ａおよび５００ｂは同様の構成を備えるため、以下では単にネットワークスイッチ５００という場合がある。
【０２１１】
マスターノード２、スレーブノード３ｄ、３ｅ、およびネットワークスイッチ５００ｂが、ネットワークスイッチ５００ａに接続されている。また、スレーブノード３ｆおよびスレーブノード３ｇが、ネットワークスイッチ５００ｂに接続されている。マスターノード２およびスレーブノード３の内部構成は、第４の実施の形態と同様であるため説明を省略する。
【０２１２】
図３０は、第５の実施の形態にかかるネットワークスイッチ５００の構成の一例を示すブロック図である。図３０に示すように、ネットワークスイッチ５００は、アドレス記憶部１２２と、ポート状態記憶部５２３と、入出力ポート４１０と、クロック部１０１と、ＣＰＵ１０２と、プロトコル処理部５０５と、送信判定部５０６と、を備えている。各構成部は、内部バス１３１により接続され、内部バス１３１を介して相互にデータを送受信する。
【０２１３】
第５の実施の形態では、ポート状態記憶部５２３のデータ構造、プロトコル処理部５０５の機能、および、送信判定部５０６を追加したことが第４の実施の形態と異なっている。その他の構成および機能は、第４の実施の形態にかかるネットワークスイッチ４００の構成を表すブロック図である図２０と同様であるので、同一符号を付し、ここでの説明は省略する。
【０２１４】
ポート状態記憶部５２３は、他のネットワークスイッチ５００が接続された入出力ポート４１０が存在する場合に、当該他のネットワークスイッチ５００に接続されたスレーブノード３の個数を記憶するためのフィールドが追加される。
【０２１５】
図３１は、ポート状態記憶部５２３に記憶されるデータのデータ構造の一例を示す図である。同図に示すように、ポート状態記憶部５２３のエントリは、ポート番号と、ポート状態と、ノード数とを含んでいる。本実施の形態では、他のネットワークスイッチ５００が接続された入出力ポート４１０のポート状態として「スイッチ」が設定される。また、ノード数は、ポート状態が「スイッチ」である場合に、その配下に接続されたのスレーブノード３の個数を保持する。
【０２１６】
プロトコル処理部５０５は、第４の実施の形態のプロトコル処理部４０５と同様に、ＰＴＰに準拠した各種処理を実行する。また、プロトコル処理部５０５は、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージを生成してスレーブノード３に送信する。このとき、プロトコル処理部５０５は、ポート状態記憶部５２３のポート状態が「スイッチ」であるエントリが存在する場合、対応する入出力ポート４１０に接続された他のネットワークスイッチ５００に対して、優先的にＤｅｌａｙ＿Ｒｅｑ開始メッセージを送信する。
【０２１７】
送信判定部５０６は、他のネットワークスイッチ５００にＤｅｌａｙ＿Ｒｅｑ開始メッセージが送信された場合に、送信されたＤｅｌａｙ＿Ｒｅｑ開始メッセージに応じて、すべてのスレーブノード３からＤｅｌａｙ＿Ｒｅｑメッセージが送信されたことを判定する。プロトコル処理部５０５は、すべてのスレーブノード３からＤｅｌａｙ＿Ｒｅｑメッセージが送信されたと判定されたときに、直接接続されたスレーブノード３に対してＤｅｌａｙ＿Ｒｅｑ開始メッセージを送信する。
【０２１８】
本実施の形態の中継処理の流れは、第４の実施の形態における中継処理の全体の流れを示すフローチャートである図２７と同様であるため、説明を省略する。
【０２１９】
次に、このように構成された第５の実施の形態にかかるネットワークスイッチ５００によるポート状態検出処理について説明する。
【０２２０】
ネットワークスイッチ５００は、ＰＴＰ管理要求メッセージを定期的に送信し、ノード毎のポート状態（マスターかスレーブか）を取得する。
【０２２１】
ネットワークスイッチ５００ａおよび５００ｂは、それぞれ、ＰＴＰ管理要求メッセージを送信し、各ポートのポート状態を取得する。ネットワークスイッチ５００ｂは適切なポート状態を有さないため、ネットワークスイッチ５００ａに対して適切なＰＴＰ管理応答メッセージを送信しない。
【０２２２】
したがって、ネットワークスイッチ５００ａは、ネットワークスイッチ５００ｂが接続された入出力ポート４１０をさらに調査する。まず、ネットワークスイッチ５００ａは、ネットワークスイッチ５００ｂに、拡張したＰＴＰ管理要求メッセージを送信する。ＰＴＰの拡張であるため、このＰＴＰ管理要求メッセージのマネージメントＩＤには、ＰＴＰで割り当てられていない値を設定する。
【０２２３】
このＰＴＰ管理要求メッセージに対するＰＴＰ管理応答メッセージは、配下のノード数フィールドを含むように拡張する。配下のノード数とは、ネットワークスイッチ５００ｂに接続されている、カスケード接続されたものを含めたノードの総数である。
【０２２４】
これにより、ネットワークスイッチ５００ａは、ネットワークスイッチ５００ｂの存在を検出し、配下のノード数を検出する。図２９のような構成の場合、配下のノード数が２であることを検出する。もしネットワークスイッチ５００ｂに、さらに別のネットワークスイッチ５００ｃが接続され、ネットワークスイッチ５００ｃに４つのスレーブノード３が接続されていた場合、ノード数の値は４増加して６となる。プロトコル処理部５０５は、検出したノード数の値をポート状態記憶部５２３へ反映する。
【０２２５】
次に、本実施の形態の通信システムによる時刻同期処理の具体例について図３２を用いて説明する。図３２は、第５の実施の形態の時刻同期処理のシーケンス図である。
【０２２６】
まず、マスターノード２は、定期的にＰＴＰのＳｙｎｃメッセージを送信する（ステップＳ３２０１）。ネットワークスイッチ５００ａは、Ｓｙｎｃメッセージを受信すると、メッセージ検出部１１７により最優先で処理するメッセージであることを検出する。そして、Ｓｙｎｃメッセージは、スレーブノード３ｄ、３ｅ、３ｆ、３ｇへ送信される（ステップＳ３２０２〜ステップＳ３２０６）。続いて送信されるＦｏｌｌｏｗ＿Ｕｐメッセージも、同様に各スレーブノード３に送信される（ステップＳ３２０７〜ステップＳ３２１２）。
【０２２７】
次に、ネットワークスイッチ５００ａは、ポート状態記憶部５２３を参照し、ネットワークスイッチ５００ｂおよびスレーブノード３ｄ、３ｅが接続された入出力ポート４１０へＤｅｌａｙ＿Ｒｅｑ開始メッセージを順番に送信する。Ｄｅｌａｙ＿Ｒｅｑ開始メッセージの開始時間は、例えば、全てゼロ秒に設定するが、最初にネットワークスイッチ５００ｂへ送信する（ステップＳ３２１３、ステップＳ３２１４）。
【０２２８】
ネットワークスイッチ５００ｂは、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージを受信してから、即座にスレーブノード３ｆ、３ｇへＤｅｌａｙ＿Ｒｅｑ開始メッセージを送信する（ステップＳ３２１５、ステップＳ３２１６）。Ｄｅｌａｙ＿Ｒｅｑ開始メッセージの開始時間は、例えば、スレーブノード３ｆはゼロ秒、スレーブノード３ｇは１０ミリ秒に設定する。
【０２２９】
Ｄｅｌａｙ＿Ｒｅｑ開始メッセージを受信したスレーブノード３ｆ、３ｇは、それぞれ、開始時間後に、Ｄｅｌａｙ＿Ｒｅｑメッセージをマスターノード２宛に送信する（ステップＳ３２１７、ステップＳ３２１９）。Ｄｅｌｅｙ＿Ｒｅｑメッセージを受信したネットワークスイッチ５００ｂは、最優先でメッセージをネットワークスイッチ５００ａへ転送する。Ｄｅｌａｙ＿Ｒｅｑメッセージを受信したネットワークスイッチ５００ａは、Ｄｅｌａｙ＿Ｒｅｑメッセージを検出し、マスターノード２へさらに転送する。
【０２３０】
ネットワークスイッチ５００ａの送信判定部５０６は、ポート状態記憶部５２３のノード数から、Ｄｅｌａｙ＿Ｒｅｑメッセージか、またはＤｅｌａｙ＿Ｒｅｑ終了メッセージを受信した総数をカウントし、カウントした値がポート状態記憶部５２３のノード数に等しくなった場合に、Ｄｅｌａｙ＿Ｒｅｑメッセージの受信が完了したと判断する。そして、プロトコル処理部５０５が、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージをスレーブノード３ｄへ送信する（ステップＳ３２２１）。
【０２３１】
スレーブノード３ｄは、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージを受信後、即座にＤｅｌａｙ＿Ｒｅｑメッセージを送信する（ステップＳ３２２２）。このＤｅｌａｙ＿Ｒｅｑメッセージを処理したネットワークスイッチ５００ａは、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージをスレーブノード３ｅへ送信する（ステップＳ３２２４）。同様にスレーブノード３ｅはＤｅｌａｙ＿Ｒｅｑメッセージを送信する（ステップＳ３２２５）。
【０２３２】
マスターノード２は、各スレーブノード３が送信したＤｅｌａｙ＿Ｒｅｑを受信すると、即座にＤｅｌａｙ＿Ｒｅｓｐメッセージを送信する（ステップＳ３２１８、ステップＳ３２２０、ステップＳ３２２３、ステップＳ３２２６）。
【０２３３】
このような処理により、ネットワークスイッチ５００ａでは、Ｄｅｌａｙ＿Ｒｅｑメッセージが複数の入出力ポート４１０に同時に受信されることがない。このため、所定のＰＴＰメッセージを常に最優先で転送する最優先処理が実行される場合であっても、受信したＰＴＰメッセージの衝突が起こらず、滞留時間のずれが生じない。
【０２３４】
なお、同図では、直接接続された複数のスレーブノード３に対してＤｅｌａｙ＿Ｒｅｑ開始メッセージを送信するときに、１つのスレーブノード３に送信したＤｅｌａｙ＿Ｒｅｑ開始メッセージに対応するＤｅｌａｙ＿Ｒｅｑメッセージを受信した後に、次のスレーブノード３にＤｅｌａｙ＿Ｒｅｑ開始メッセージを送信していた。これに対し、第４の実施の形態と同様の方法により、異なる開始時間を設定したＤｅｌａｙ＿Ｒｅｑ開始メッセージを複数のスレーブノード３に対して同時に送信するように構成してもよい。
【０２３５】
このように、第５の実施の形態にかかる中継装置では、他の中継装置を介してスレーブノードが接続される場合であっても、第４の実施の形態と同様に受信したＰＴＰメッセージの衝突を起こさず、かつ、滞留時間を一定にすることができる。
【０２３６】
（第６の実施の形態）
一般的に、プロトコル処理部やＣＰＵが接続される内部バスには、イーサネット（登録商標）上のトラフィックのほか、ＣＰＵが実行する命令データや、機器を構成する各ハードウェアの監視制御情報等が流れ、データの流れを制御するのが非常に困難である。
【０２３７】
そこで第６の実施の形態では、データの流れを制御して滞留時間を最小化するメッセージを転送するためのバス（優先バス）を、他のデータが流れる上記のような内部バスから独立させる。この優先バスでは、最優先で転送するＰＴＰメッセージのみを転送することとして、これらのメッセージの滞留時間を容易に制御できるようにしている。
【０２３８】
図３３は、第６の実施の形態にかかるネットワークスイッチ６００の構成の一例を示すブロック図である。図３３に示すように、ネットワークスイッチ６００は、アドレス記憶部１２２と、ポート状態記憶部４２３と、入出力ポート６１０ａ、６１０ｂ、６１０ｃ、６１０ｄ（以下、入出力ポート６１０という）と、クロック部１０１と、ＣＰＵ１０２と、プロトコル処理部４０５と、を備えている。各構成部は、内部バス１３１により接続され、内部バス１３１を介して相互にデータを送受信する。また、各入出力ポート６１０は、相互に優先バス６３２により接続され、優先バス６３２を介して優先的に送信するＰＴＰメッセージを送受信する。
【０２３９】
第６の実施の形態では、上述のような優先バス６３２を追加したこと、および、入出力ポート６１０の機能が第４の実施の形態と異なっている。その他の構成および機能は、第４の実施の形態にかかるネットワークスイッチ４００の構成を表すブロック図である図２０と同様であるので、同一符号を付し、ここでの説明は省略する。
【０２４０】
入出力ポート６１０は、各ノードに接続するためのケーブル１３２が接続されるポートである。図３４は、入出力ポート６１０の詳細構成の一例を示すブロック図である。図３４に示すように、入出力ポート６１０は、ＰＨＹ部１１１と、入力キュー１１２と、出力キュー１１３と、専用出力キュー６１４と、接続検出部１１５と、メッセージ検出部１１７と、送信制御部４１８と、転送制御部６１９と、メッセージ判定部４２０と、を備えている。
【０２４１】
本実施の形態では、入力キュー１１２と、出力キュー１１３と、接続検出部１１５と、転送制御部６１９と、メッセージ判定部４２０とが、内部バス１３１により接続され、専用出力キュー６１４と、メッセージ検出部１１７と、転送制御部６１９とが、優先バス６３２により接続される点が、第４の実施の形態と異なっている。
【０２４２】
また、第４の実施の形態では、専用出力キュー６１４および転送制御部６１９の機能が第４の実施の形態と異なっている。その他の構成および機能は、第４の実施の形態にかかる入出力ポート４１０の構成を表すブロック図である図２４と同様であるので、同一符号を付し、ここでの説明は省略する。
【０２４３】
転送制御部６１９は、最優先で転送するＰＴＰメッセージを優先バス６３２を介して他のすべての入出力ポート６１０の専用出力キュー６１４に転送するように制御する点が、第４の実施の形態の転送制御部４１９と異なっている。
【０２４４】
専用出力キュー６１４は、転送されたＰＴＰメッセージの宛先アドレスが、対応する入出力ポート６１０に接続されたノードのアドレスと一致するか否かを判定し、一致する場合にのみ転送されたＰＴＰメッセージを記憶する機能が追加された点が、第４の実施の形態の専用出力キュー１１４と異なっている。
【０２４５】
次に、このように構成された第６の実施の形態にかかるネットワークスイッチ６００による中継処理について図３５を用いて説明する。図３５は、第６の実施の形態における中継処理の全体の流れを示すフローチャートである。
【０２４６】
ステップＳ３５０１からステップＳ３５０３までは、第４の実施の形態にかかるネットワークスイッチ４００におけるステップＳ２７０１からステップＳ２７０３までと同様の処理なので、その説明を省略する。
【０２４７】
最優先で転送するＰＴＰメッセージである場合（ステップＳ３５０３：ＹＥＳ）、転送制御部６１９が、他のすべての入出力ポート６１０の専用出力キュー６１４に当該ＰＴＰメッセージを転送する（ステップＳ３５０４）。ＰＴＰメッセージが転送された入出力ポート６１０の専用出力キュー６１４は、ＰＴＰメッセージの宛先アドレスを確認し、入出力ポート６１０に接続されたノードのアドレスと一致する場合に、転送されたＰＴＰメッセージ記憶する。
【０２４８】
ステップＳ３５０５からステップＳ３５０８までは、第４の実施の形態にかかるネットワークスイッチ４００におけるステップＳ２７０５からステップＳ２７０８までと同様の処理なので、その説明を省略する。
【０２４９】
次に、本実施の形態のネットワークスイッチ６００による中継処理の具体例について説明する。
【０２５０】
ケーブル１３２からメッセージが到着すると、ＰＨＹ部１１１が該メッセージをディジタル情報に変換し、入力キュー１１２とメッセージ検出部１１７とに渡す。メッセージ検出部１１７は、現在受信しているメッセージが最優先で転送するＰＴＰメッセージであるか否かを、メッセージのフォーマットが、予め定められた最優先で転送するＰＴＰメッセージと一致するか否かを調べることによって判断する。最優先で転送するＰＴＰメッセージである場合は、転送制御部６１９は、優先バス６３２を通じて該メッセージを送出するべき入出力ポート６１０へと転送する。一方、転送制御部６１９は、入力キュー１１２に該メッセージを廃棄するよう指示する。
【０２５１】
入出力ポート６１０ａの転送制御部６１９は、受信されたメッセージを、その他の全ての入出力ポート６１０の専用出力キュー６１４に、優先バス６３２を介して転送する。
【０２５２】
各入出力ポート６１０の専用出力キュー６１４は、優先バス６３２上を転送されてくるメッセージの宛先アドレスを確認し、メッセージを取り込むか否かを判断し、取り込むと判断した場合にメッセージを取り込む。送信制御部４１８は、専用出力キュー６１４に取り込まれたメッセージを即時にＰＨＹ部１１１に出力する。ＰＨＹ部１１１は、渡されたビット列を、イーサネット（登録商標）の仕様に基づく形式の信号に変換し、ケーブル１３２に送出する。
【０２５３】
本実施の形態では、以下の２つの場合に滞留が発生する可能性がある。
（１）優先バス６３２に対して、ある入出力ポート６１０（例えば入出力ポート６１０ａ）から最優先で転送するＰＴＰメッセージを送出するとき、他の入出力ポート６１０（例えば入出力ポート６１０ｂ）によって優先バス６３２にメッセージが送出されている場合。
（２）専用出力キュー６１４からメッセージをケーブル１３２に送出するとき、出力キュー１１３からメッセージが送出されている場合。
【０２５４】
上記（１）の場合の滞留は、マスターノード２からスレーブノード３へ転送される、または、スレーブノード３からマスターノード２へ転送される、最優先で転送するＰＴＰメッセージが、ネットワークスイッチ６００に同時に到着しないように制御すれば回避できる。
【０２５５】
マスターノード２から転送されるＰＴＰメッセージについては、マスターノード２がシステムの中で１つであること、および、シーケンスがマスターノード２から始まることから、マスターノード２が最優先で転送するＰＴＰメッセージ（Ｓｙｎｃメッセージ等）の送出間隔を制御することにより回避できる。すなわち、マスターノード２が、過去に送出したＳｙｎｃメッセージにより開始された一連のシーケンスが終了した後で、次のＳｙｎｃメッセージを送出することにすれば滞留が回避できる。
【０２５６】
一方、スレーブノード３からマスターノード２へ転送されるＰＴＰメッセージについては、Ｄｅｌａｙ＿Ｒｅｑ開始メッセージに開始時間を設定することにより、スレーブノード３が応答するまでの待ち時間を指定するようにしたので、この値をネットワークスイッチ６００が適切に調節することで滞留が回避できる。
【０２５７】
上記（２）の場合の滞留は、以下に述べる方法を適用することで回避できる。図３６は、専用出力キュー６１４および出力キュー１１３に割り当てる処理時間の一例を示す図である。図３６に示すように、ケーブル１３２に対して、最優先で転送するＰＴＰメッセージだけを送出できる時間を周期的に設ける。
【０２５８】
例えば、１ｍｓのうち１００μ秒が、最優先で転送するＰＴＰメッセージだけを送出できる時間とする。この周期構造は送信制御部４１８が作成する。通常のメッセージが出力キュー１１３に保持されると、送信制御部４１８は、該メッセージをケーブル１３２に送出するのに必要な時間を計算する。この時間は、メッセージの長さとケーブル１３２の物理速度から計算できる。その後、送信制御部４１８は、その時点でメッセージ送出を開始した場合に、そのメッセージ送出が終了する時刻を算出する。そして、送信制御部４１８は、この時刻を元に、現時点でメッセージを送出すると、最優先で転送するＰＴＰメッセージだけを送出できる時間の開始までに送出が終了するか否かを判定する。送出が終了しないと判定した場合、送信制御部４１８は、最優先で転送するＰＴＰメッセージの送出を妨げないように、最優先で転送するＰＴＰメッセージだけを送出できる時間の終了まで出力キュー１１３からのメッセージ送出を待機する。
【０２５９】
このように出力キュー１１３からのメッセージ送出を制御することにより、必ず、最優先で転送するＰＴＰメッセージを送出する空き時間を確保することができる。このため、最優先で転送するＰＴＰメッセージの滞留を周期構造の周期に留めることが可能になる。これにより、最優先で転送するＰＴＰメッセージのネットワークスイッチ６００での滞留時間を確定できるようになり、滞留時間のずれを防止できる。
【０２６０】
このように、第６の実施の形態にかかる中継装置では、最優先で転送するメッセージを転送するための優先バスを、他のデータが流れる内部バスから独立させることができる。これにより、最優先で転送するメッセージの滞留時間を一定にする制御を容易に実現可能となる。
【０２６１】
第１〜第６の実施の形態にかかる中継装置で実行される中継プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【０２６２】
また、第１〜第６の実施の形態にかかる中継装置で実行される中継プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１〜第６の実施の形態にかかる中継装置で実行される中継プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０２６３】
また、第１〜第６の実施の形態の中継プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０２６４】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０２６５】
２  マスターノード
３  スレーブノード
２２  クロック部
２３  ＣＰＵ
２４  プロトコル処理部
２５  入出力ポート
２６  内部バス
１００、２００、３００、４００、５００、６００  ネットワークスイッチ
１０１  クロック部
１０２  ＣＰＵ
１０３、２０３  算出部
１１０、２１０、３１０、４１０、６１０  入出力ポート
１１１  ＰＨＹ部
１１１ａ  受信部
１１１ｂ  送信部
１１２  入力キュー
１１３  出力キュー
１１４、６１４  専用出力キュー
１１５  接続検出部
１１６  時刻検出部
１１７、２１７  メッセージ検出部
１１８、２１８、３１８、４１８  送信制御部
１１９、４１９、６１９  転送制御部
１２１  対応記憶部
１２２  アドレス記憶部
１３１  内部バス
１３２  ケーブル
３０４  入出力キュー
３０５  データブロック
３０６  データ処理部
３０７  メッセージ検出部
３０８  保存部
４０５、５０５  プロトコル処理部
４２０  メッセージ判定部
４２３、５２３  ポート状態記憶部
５０６  送信判定部
６３２  優先バス
【図１】
2010213101.tif 000003
【図２】
2010213101.tif 000004
【図３】
2010213101.tif 000005
【図４】
2010213101.tif 000006
【図５】
2010213101.tif 000007
【図６】
2010213101.tif 000008
【図７】
2010213101.tif 000009
【図８】
2010213101.tif 000010
【図９】
2010213101.tif 000011
【図１０】
2010213101.tif 000012
【図１１】
2010213101.tif 000013
【図１２】
2010213101.tif 000014
【図１３】
2010213101.tif 000015
【図１４】
2010213101.tif 000016
【図１５】
2010213101.tif 000017
【図１６】
2010213101.tif 000018
【図１７】
2010213101.tif 000019
【図１８】
2010213101.tif 000020
【図１９】
2010213101.tif 000021
【図２０】
2010213101.tif 000022
【図２１】
2010213101.tif 000023
【図２２】
2010213101.tif 000024
【図２３】
2010213101.tif 000025
【図２４】
2010213101.tif 000026
【図２５】
2010213101.tif 000027
【図２６】
2010213101.tif 000028
【図２７】
2010213101.tif 000029
【図２８】
2010213101.tif 000030
【図２９】
2010213101.tif 000031
【図３０】
2010213101.tif 000032
【図３１】
2010213101.tif 000033
【図３２】
2010213101.tif 000034
【図３３】
2010213101.tif 000035
【図３４】
2010213101.tif 000036
【図３５】
2010213101.tif 000037
【図３６】
2010213101.tif 000038