図1に本発明を適用した通信制御装置120を用いたシステム構成を示す。通信制御装置120は、ネットワーク122を介して、他のネットワーク中継装置121、またはマスタ装置123、スレーブ装置124、通信端末125と接続し、通信する。
ネットワーク中継装置121として、ネットワークスイッチ、ルータ、ゲートウェイ、OpenFlowにおけるOpenFlowスイッチ等が挙げられる。
ネットワーク122として、IEEE802.3、各種産業用ネットワーク、IEC 61784、IEC 61158等が例示される。
図1のシステム構成において、時刻同期プロトコルとしてIEEE 1588を例にとり、本発明の効果を説明する。
マスタ装置123、スレーブ装置124は、IEEE 1588における端末装置である。マスタ装置123は、スレーブ装置124とIEEE 1588の通信を実行し、スレーブ装置124は、マスタ装置123と同期を取ろうとしているものとする。通信端末125は、ネットワークに接続する汎用の端末である。同期処理を実行しない端末として図示している。
なお、図1では、すべてのネットワーク中継装置121に通信制御装置120を接続しているが、一部のネットワーク中継装置121にのみ通信制御装置120を接続してもよい。その場合、通信制御装置120を接続していないネットワーク中継装置121内の遅延を計測することができないために、ネットワーク中継装置121を接続した通信制御装置120の数に応じて同期精度が変化するが、ネットワーク中継装置121内の通信遅延を計測して、同期精度を向上させるという本発明の効果が失われるものではない。
本発明は、汎用的なネットワーク中継装置121に接続して、入力時と出力時に時刻を計測して差分を計算することで、通信制御装置120、ネットワーク中継装置121を通過する際の通信遅延を計測し、IEEE 1588におけるTC(Transparent Clock)と同様の効果を得るものである。
以下、具体的に説明する。
図3に通信制御装置120の利用例を示すため、通信制御装置120を利用しない場合のネットワーク中継装置121の利用例を示し、図4に通信制御装置120を利用した場合の利用例を示す。
通信制御装置120は、ネットワーク中継装置の通信ポートごとに、通信ポートが2つ必要である。これは、ネットワーク中継装置の通信ポートへ入力される通信経路を受けるポートと、ネットワーク中継装置へ接続する通信経路と接続するポートが必要なためである。図3、図4のネットワーク中継装置121の通信ポート数を4とすれば、通信制御装置120は8つの通信ポートが必要である。
なお、ネットワーク中継装置121の通信ポート数が、通信制御装置120の通信ポートの組みの数よりも多い場合は、本発明による効果を得られないネットワーク中継装置121の通信ポートが現れるが、通常の通信機能に影響は生じない。
図2に通信制御装置120のハードウェア構成を示す。
CPU101は、不揮発性記憶媒体109からプログラムをメモリ108に転送して実行する。実行処理プログラムとしては、オペレーティングシステム(以下、OSと称す)やOS上で動作するアプリケーションプログラムが例示される。CPU101上で動作するプログラムは、経路制御部103の動作設定や、状態情報を取得する。
LAN102は、ネットワーク122との通信機能を実装した送受信機ICである。LAN102は、経路制御部103から伝送されたパケットをネットワーク122へ送信することや、ネットワーク122から受信したパケットを経路制御部103へ伝送する。あるいは、CPU101上で動作するプログラムから通信要求を受け取り、ネットワーク122に対して通信する。LAN102の実装例としては、IEEE802.3規格のMAC(Media Access Control)チップ、PHY(物理層)チップ、MACとPHYの複合チップ、FPGA、CPLD、ASIC、ゲートアレイ等のICが例示される。なお、LAN102は、CPU101や、コンピュータ内部の情報経路を制御するチップセットに含まれていてもよい。
経路制御部103は、後述する本発明の仕組みによって、LAN102から受信したパケットを後述する本発明の仕組みによって、経路制御し、他のLAN102へ転送する。経路制御部103は、FPGA、CPLD、ASIC、ゲートアレイ等のICによる実装が例示される。なお、経路制御部103は、CPU101やコンピュータ内部の情報経路を制御するチップセットに含まれていてもよい。また、LAN102の構成によって、通信に必要な機能を内蔵してもよい。例えば、LAN102がPHY(物理層)相当の機能であれば、経路制御部103がMAC層相当の機能を含むことが例示される。
図4に示すように、通信制御装置120は、ネットワーク中継装置121の通信ポートごとに2つの通信ポートを有するため、この組み合わせをLAN102a群〜d群で示している。各LAN102nは2つのLAN102で構成される。ネットワーク中継装置121と対向して接続するLAN102をLAN102n−1(ダッシュ番号の1)で示し、他のネットワークと接続するLAN102をLAN102n−2(ダッシュ番号の2)で表す。接続するLAN102群の数は、1つ、または複数でもよい。
メモリ108は、CPU101が動作するための一時的な記憶領域であり、不揮発性記憶媒体109から転送したOS、アプリケーションプログラム等が格納される。
不揮発性記憶媒体109は、情報の記憶媒体で、OS、アプリケーション、デバイスドライバ等や、CPU101を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。不揮発性記憶媒体109として、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)、フラッシュメモリが例示される。また、取り外しが容易な外部記憶媒体として、フロッピーディスク(FD)、CD、DVD、ブルーレイ(登録商標)、USBメモリ、コンパクトフラッシュ等の利用が例示される。
バス110は、CPU101、LAN102、メモリ108、不揮発性記憶媒体109をそれぞれ接続する。バス110としては、PCIバス、ISAバス、PCI Expressバス、システムバス、メモリバス等が適用可能である。
図5に経路制御部103の機能構成を示す。
通信部131は、パケットの送受信機能である。通信部の数は、通信制御装置120の通信ポートの数と同一である。
通信部131は、パケットの送受信機能である。通信部131の数は、通信制御装置120の通信ポートの数と同一である。
受信部132は、パケットの受信機能である。
送信部133は、パケットの送信機能である。
通信部131、送信部133、受信部132は、LAN102、あるいは通信機能の一部が経路制御部103に含まれる場合は、LAN102と経路制御部103で構成される。
パケット識別部134は、パケットの属性に関して識別する。入力されたパケットがIEEE 1588の時刻同期パケットであるかを識別する。あるいは、パケットの送信元の通信部131を識別する。パケット識別部134は、パケットを接続先に転送する際に、上記の識別した情報をあわせて出力する。なお、図5では、パケット識別部134aと複数の通信部131を接続しているが、通信部131ごとに単一のパケット識別部134aをもうけ、時刻情報登録部136、または出力経路選択部138に複数の接続経路をもうけてもよい。
計時部135は、時刻情報を提供する(他の機能部との接続は図示していない)。計時
部135は、オシレーター、RTC(Real time clock)やクロック用ICを用いて構成してもよいし、CPU101上で動作するソフトウェアで構成してもよい。オペレーティングシステムによっては、起動時にRTCから時刻を取得し、CPU101内の定期的なタイマ割り込みで時間を計測するソフトウェアタイマを構成する場合がある。ソフトウェアタイマの場合は、ハードウェアを用いた計時部135の構成に比較して、時間分解能が粗くなるため、システムに要求される時間同期精度を満足できるかをもとにソフトウェアタイマの採用可否を判定する必要がある。
なお、計時部135の提供する時刻情報は、世界共通の標準時間でもよいし、自身における時間でもよい。これは、通信遅延を計測することが目的であり、必ずしも世界共通の時間で計時する必要がないためである。
時刻情報登録部136は、パケット識別部134aから通知されたタイミングに基づいて、計時部135から時刻情報を取得し、時刻情報保持部137にパケット識別情報と取得した時刻を時刻情報保持部137に登録する。なお、時刻情報登録部136にパケットが入力されたタイミングの時刻情報を時刻情報保持部137に登録する場合は、通信部131、パケット識別部134aの処理時間が含まれない。そこで、より正確に通信遅延を計測する場合は、計時部135より取得した時刻から通信部131、パケット識別部134aの処理時間だけ前の時刻を時刻情報保持部137に登録することが例示される。
この時、通信部131、パケット識別部134aの処理時間は、固定遅延でパケットを処理する通信部131、パケット識別部134aを用いて、該固定遅延の和を用いる方法が例示される。あるいは、実装部品のデータシート等に記載の処理遅延を用いてもよい。受信部132でパケットを受信した時点で計時部135より時刻を取得して、時刻情報登録部136で取得した時刻との差分を用いる方法が例示される。この時、受信部132で計時部135の時刻情報をパケットに付加する方法が例示される。あるいは、該処理時間を外部から任意に設定できるように、時刻情報登録部136に対して、所定のパラメータを設定できるようにしてもよい。これは、CPU101上で動作するソフトウェアによる経路制御部103へのアクセスによって実現される。あるいは、経路制御部103内にパラメータを設定する特別なパケットフォーマットを定義してもよい。そのようなパケットフォーマットとして、時刻情報登録部136へ設定するパケットであることを示す識別子と、パラメータを少なくとも含むことが例示される。これは、パケット識別部134aで識別されて、時刻情報登録部136に設定することが例示される。また、設定対象の通信制御装置120の識別子を含んでもよい。
時刻情報登録部136は、経路制御部103内に実装することが例示される。
時刻情報保持部137は、識別情報と時刻情報の組み合わせ情報を要素として保持する。保持する要素数は、0でもよいし、1つでもよいし、対象機器の計算機資源に応じて複数保持してもよい。時刻情報保持部137は、パケット識別情報をキーにしてアクセスされると、保持している時刻情報を返す。該当する情報がない場合は、該当する情報がないということを返す。
時刻情報保持部137は、メモリ108、あるいは不揮発性記憶媒体109、あるいは経路制御部103に構築することが例示される。
出力経路選択部138は、入力されたパケットに対して、パケット識別部134aから通知された識別情報、時刻情報保持部137に保存された情報等に基づいて、パケットの出力先を選択して、パケットを出力する。出力経路選択部138は、パケットの出力先が決定されるまでパケットを保持する必要があり、その間、後続のパケットが入力される可能性があるため、パケットバッファを内部に有する。出力経路選択部138は、経路制御部103内に実装することが例示される。
パケット更新部139は、パケット識別部134bから通知された識別情報を用いて、時刻情報保持部137にアクセスして取得した時刻情報Tinと、パケット更新部139から出力前に計時部135から時刻Toutを取得して、次式より差分Dを求める。
D = Tout − Tin (式1)
差分Dは、出力経路選択部138の処理遅延と、ネットワーク中継装置121内の処理遅延を反映した値である。
なお、Toutには、パケット更新部139の計算時間、出力経路選択部138、通信部131の処理時間が含まれない。そこで、より正確に通信遅延を計測する場合は、Toutより、パケット更新部139の計算時間、出力経路選択部138、通信部131のうちの一部または複数の処理時間だけ後の時間を加算した時刻を利用することが例示される。
この時、パケット更新部139の計算時間、出力経路選択部138、通信部131の処理時間は、固定遅延で実行する該機能部を用いて、その固定遅延を用いてもよいし、実装部品のデータシート等に記載の処理遅延を用いてもよい。
別な構成例として、図5では、単一のパケット識別部134bとパケット更新部139の構成としているが、通信部131ごとにパケット識別部134bとパケット更新部139の組みをもうけ、出力経路選択部138が出力経路を選択後にパケットを識別して更新してもよい。
この処理遅延を外部から任意に決められるように、パケット更新部139に対して、所定のパラメータを設定できるようにしてもよい。これはCPU101上で動作するソフトウェアによる経路制御部103へのアクセスか、あるいはパラメータを設定する特別なパケットフォーマットを定義してもよい。そのようなパケットフォーマットとして、パケット更新部139へ設定するパケットであることを示す識別子と、パラメータを少なくとも含むことが例示される。設定対象の通信制御装置120の識別子を含んでもよい。これは、パケット識別部134bで識別されて、パケット更新部139に設定することが例示される。
図7に本発明を適用した通信制御装置120の動作手順を示す。
はじめに、通信制御装置120はパケットを受信するまで待機する(ステップ001:以下、S001と称す)。S001で、パケットを受信すると、同期パケットかどうかを判定する(S002)。これは、パケット識別部134aによって識別される。
パケット識別部134aが時刻同期パケットかどうかを判定する方法は、受信パケットが、時刻同期プロトコルのパケットフォーマットにしたがっているかどうかが例示される。例えば、NTPであれば、UDPのポート123番を用いる。IEEE 1588において、IEEE 802.3上に利用する場合は、Ethtypeが88F7(16進数)、アドレス01:1B:19:00:00:00(16進数)であり、UDP上に利用する場合は、IPアドレスのマルチキャストアドレスが224.0.1.129、UDPのポート番号は319番である。したがって、これらの条件に一致した場合に時刻同期パケットと判定する。
S002で、同期パケットと判定した場合は、次にネットワーク中継装置121に転送前のパケットかどうかを判定する(S003)。
ネットワーク中継装置121に転送前かどうかを判定する方法は、パケットを受信した通信部131で判定する方法が例示される。図4の利用例に示すようにネットワーク中継装置121の通信ポートに対向する通信制御装置120の通信ポート、あるいは、他のネットワークと接続する通信制御装置120の通信ポートは、物理的に決まっており、受信した通信ポート、すなわち、図2のLAN102を識別することで、ネットワーク中継装置121へ転送する前のパケットかどうかを判定することができる。つまり、LAN102n−2から受信したパケットはネットワーク中継装置121へ転送する前のパケットと判定する。
ネットワーク中継装置121へ転送する前のパケットかどうかを判定する別の方法としては、パケット識別部134aで抽出した識別子を用いて、時刻情報保持部137に時刻情報が保持されているかどうかをもとに判定する方法が挙げられる。ネットワーク中継装置121に転送した後のパケットであれば、時刻情報保持部137中にネットワーク中継装置121へ転送前の時刻情報が存在することとなる。したがって、時刻情報保持部137に該当する時刻情報がなければ、ネットワーク中継装置121へ転送前のパケットと判断することができる。この時、時刻情報保持部137に保持している識別情報と時刻情報は、利用後に時刻情報保持部137から削除している必要がある。もし、削除していない場合は、同一の識別情報を有する以前のパケットが時刻情報保持部137中に残存している可能性がある。このような場合を想定し、S003における時刻と時刻情報保持部137から取得された時刻の差分を計算して、しきい値と比較する方法が例示される。これは、以前に受信した全く別のパケットであれば、S003における時刻までの時間経過が大きいと考えられるためである。しきい値をネットワーク中継装置121の転送遅延の最悪値に所定の余裕をもたせた値とする。そして、S003における時刻と取得した時刻の差分が前記しきい値より大きい場合(式2)に、該時刻情報保持部137中の時刻情報は、対象パケットではない以前のパケットと考え、対象パケットをネットワーク中継装置121へ転送前のパケットと判定する。
Tnow − Tget > Th (式2)
ここで、TnowはS003における時刻、Tgetは時刻情報保持部137から取得した時刻、Thはしきい値を示す。
なお、時刻情報保持部137中に同一識別情報の要素を複数保持している場合には、その全てで式2を満足している必要がある。
S003で、パケットがネットワーク中継装置121へ転送前であった場合、受信時刻を記憶する(S004)。これは、時刻情報登録部136が計時部135から時刻Tinを取得し、時刻情報保持部137へ識別情報とあわせて登録する。
時刻情報保持部137の保持する識別情報は、通信制御装置120を含むネットワーク中継装置121の通信遅延を計測するという発明の目的を果たす上で必要な情報であることが求められる。つまり、ネットワーク中継装置121へ入力したパケットと、ネットワーク中継装置121から出力されたパケットの同一性を判定できればよい。
図6にそのような情報として、時刻同期プロトコルにおけるパケットフォーマット上のデータを用いることが例示される。例として、IEEE 1588(IEEE 1588−2008)のパケットのヘッダフォーマットを示す。
図6に示すパラメータの中で、入力パケットと出力パケットの同一性を判定できるパラメータを選ぶ。そのようなパラメータとして、messageType142、domainNumber145、source portIdentity148、seuqenceId149等が挙げられる。messageType142は、SyncメッセージやDelay_Reqメッセージ等の種類を表す。
domainNumber145は、論理的に同期するマスタとスレーブのグループを表現するためのドメインの番号である。
sourcePortIdentity148は、同期パケットの送信元の識別子である。
seuqenceId149は、シーケンス番号である。
あるいは、これらのパラメータではなく、ヘッダ全体を識別情報としてもよい。
また、その他に入力パケットと出力パケットの同一性を判定するために、その他のプロトコルのヘッダ情報を用いてもよい。例えば、IPヘッダのIPアドレスを用いることで、送信元、送信先の識別子がわかり、TCPやUDPのポート番号を用いることで、マスタ装置123、スレーブ装置124の上位プロセスの通信ポート番号を識別することができる。
新たに識別情報と時刻情報を入力する際、すでに同じ識別情報が存在する場合の動作について説明する。この場合、上書きすることが望ましい。なお、複数の識別情報の存在を許可して、複数の要素を保持してもよい。この場合、識別情報をキーにしてアクセスされた場合に、どの時刻情報を返すかを決定する必要があり、入力された時刻が新しい情報を返すことが例示される。
図8に時刻情報保持部137が保持する識別子と時刻情報の例を示す。
図7のS004で受信時刻を時刻情報保持部137へ登録すると、出力ポートへパケットを転送する(S005)。これは、出力経路選択部138によって実行される。出力経路選択部138は、パケット識別部134aによる識別情報やパケットの入力経路によって転送先を判定する。
S004からS005へ至る手順では、パケットはLAN102n−2、あるいは、そのLAN102に該当する通信部131で受信しているために、他のネットワーク122からのパケットであることがわかり、対応するLAN102n−1、あるいは、そのLAN102に対応する通信部131の送信部133へパケットを転送して、ネットワーク中継装置121に出力すればよい。例えば、LAN102a−2で受信したパケットであれば、LAN102a−1からパケットを出力する。
S003にて、ネットワーク中継装置121への転送前のパケットではなく、ネットワーク中継装置121から転送されたパケットである場合は、該パケットをネットワーク中継装置121へ転送前に取得した受信時刻、すなわちS004におけるTinを取得する(S006)。
これは、パケット更新部139によって実行される。パケットがネットワーク中継装置121から転送されたパケットであれば、出力経路選択部138からパケット識別部134bへパケットが転送される。
パケット識別部134bは、パケットとその識別情報をあわせてパケット更新部139へ転送する。
パケット更新部139は、パケット識別部134bから転送されたパケットの識別情報を用いて、時刻情報保持部137から時刻情報を取得する。図8に識別情報の例としてIEEE 1588のヘッダを用いた例を示す。
もし、時刻情報保持部137から識別情報を使って時刻情報が見つからない場合や、取得できなかった場合は、所定の処理を実行してS005へ進む(図7に図示なし)。所定の処理とは、時刻情報を取得できなかったことを異常として、CPU101上のアプリケーションによって、不揮発性記憶媒体109等に履歴を残すことが挙げられる。この時、記憶する情報としては、識別情報や異常の発生時刻等が挙げられる。あるいは、予め設定した宛先に、上記情報を電子メールやFTP(File Transfer Protocol)、あるいは所定のプロトコルにしたがって通知することや、通信制御装置120がそなえるLED(Light Emitting Diode)や、所定の音声、映像出力手段等によって外部に提示してもよい。
次に、出力時刻Toutを求め、S006で取得した時刻情報Tinとの差分Dを式1により求める(S007)。求めた差分を用いて、パケットを更新する(S008)。
パケット更新部139は、IEEE 1588の場合、図6のcorrectionField147を更新する。correctionField147にすでに遅延情報がある場合は、その遅延情報に、算出したDを加算した値に更新する。なお、IEEE 802.3のCRC(Cyclic Redundancy Check)等、データ内容の変更にともなって更新する必要のある他のプロトコルのパラメータがあれば、あわせて更新する。
S008後、S005へ進む。この時、出力経路選択部138は、パケット識別部134bによる識別情報やパケットの入力経路によって転送先を判定する。S008からS005へ至る手順では、パケットはLAN102n−1、あるいは、そのLAN102に該当する通信部131で受信しているために、ネットワーク中継装置121からのパケットであることがわかり、対応するLAN102n−2、あるいは、そのLAN102に対応する通信部131の送信部133へパケット転送して、他のネットワーク122に出力すればよい。例えば、LAN102a−1で受信したパケットであれば、LAN102a−2からパケットを出力する。
この時、パケット更新部139で説明したように、出力経路選択部138の処理時間は固定であることが望ましい。出力経路選択部138は、パケット更新部139からパケットを受信する前に、パケット更新部139へパケットを転送しているため、パケット更新部139での処理時間経過後に、パケット更新部139からパケットを受信することを予め知ることができる。そこで、出力経路選択部138での処理時間を固定化するために、パケット更新部139へパケットを転送後、出力経路選択部138は、他の入力パケットをブロック、あるいは受信して保持したまま、パケット更新部139からのパケットの受信を待機して優先的に処理することが例示される。このようにすれば、他のパケットの処理遅延の影響を避けることができ、同期パケットの処理時間をパケット更新部139の処理時間までに低減して、パケット更新部139からのパケットを固定時間で処理することができ、通信制御装置120、ネットワーク中継装置121における処理遅延を精度よく計測することができる。これは、マスタ装置123、スレーブ装置124の同期精度を向上させることができる。あるいは、パケット更新部139からパケットを受信する前に、後続のパケットの通信処理が完了する場合は、その後続のパケットを処理してもよい。
図7の動作は、IEEE 1588の1ステップモードの動作を仮定した。2ステップモードの場合は、Syncメッセージの送信時刻(図14のt1)をFollow_Upメッセージに格納して送信する。同様にネットワーク中継装置121内の処理遅延は、Syncメッセージを対象に測定し、Follow_UpメッセージのIEEE 1588ヘッダのcorrectionField147に格納する。
図9にこの場合の動作手順を示す。図7との違いは、S010、S011のステップである。S010では、2ステップのSyncメッセージを判定する。2ステップのSyncメッセージでなければ、図7と同様にS008へ進む。もし、2ステップのSyncメッセージであれば、S007で算出した差分を時刻情報保持部137に識別情報とともに登録する(S011)。それから、S005へ進む。
なお、1ステップか2ステップかどうかは、図6に示すIEEE 1588パケットフォーマットのflagField146のtwoStepflagで判定することができる。
twoStepflagがtrue(1)であれば、2ステップである。
2ステップのSyncメッセージを通信制御装置120で処理した後、Follow_Upメッセージを図9の動作手順で処理する。S008のステップで、時刻情報保持部137の識別情報を用いて、時刻情報を取得する場合、messageTypeの違いに注意する必要がある。つまり、S011では、messageTypeはSyncであるが、Follow_Upメッセージの処理時はS008での識別情報におけるmessageTypeはFollow_Upである。したがって、S008で識別情報のFollow_UpをSyncに変換して時刻情報保持部137にアクセスしてもよいし、S011で時刻情報保持部137に保持する際に、SyncをFollow_Upに変換して保持してもよい。
あわせて、時刻情報保持部137に保持する識別情報として、2ステップかどうかを表す属性を追加することが例示される。
なお、上記の機能はマスタ装置123が2ステップの場合の動作を説明したが、IEEE 1588仕様では、ネットワーク中継装置121であるTC(Transparent Clock)自身が2ステップとなる仕様がある。この場合、マスタ装置123が1ステップであると、2ステップTCがSyncメッセージの滞留時間を記録する。Syncメッセージの転送後に、2ステップTC自身でFollow_Upメッセージを生成して、記録したSyncメッセージの滞留時間をFollow_Upに反映して送信するものである。
この動作を通信制御装置120に反映した場合の動作を説明する。図7、図9のS007までの手順と同様に、Syncメッセージを対象に、出力時刻と受信時刻の差分を求める。その後、Syncメッセージが1ステップであれば、ネットワーク中継装置121でFollow_Upメッセージを作成し、求めた差分を反映して送信する。この時、Follow_Upメッセージを生成するために必要なパラメータは、Syncメッセージから抽出して利用する。また、SyncメッセージのflagField146のtwoStepflagをtrue(1)に変更する。このようにすれば、Syncメッセージそのものに時刻情報を反映するという実装上の難易度を下げることができ、より簡単な構成で通信制御装置120を構築することができ、低コスト化できる。
図2、図4に示す通信制御装置120は、LAN102や通信部131の接続は予め固定として説明していた。すなわち、ネットワーク中継装置121に対向する通信ポートと、他のネットワークに接続する通信ポートは固定で、LAN102a−1とLAN102a−2というように、LAN102間の対応を固定としていた。
これは、通信制御装置120に対する配線の自由度を低下させ、誤配線が許容されないために設置コストを悪化させる問題があるが、ブリッジやスイッチのポート学習の仕組みを用いることで、接続の自由度を向上させることができる。
図10にこの仕組みを実現する機能構成を示す。
接続情報保持部160は、接続に関する情報を記憶する。図11に接続情報保持部160の保持する情報の例を示す。接続情報保持部160の保持する情報例としては、接続先IPアドレス、接続先MACアドレス、該接続先と接続している通信制御装置120自身のLAN102、あるいは通信部131の識別子が挙げられる。
通信制御装置120が何らかのパケットを受信するとパケットを受信したLAN102、あるいは通信部131、送信元のMACアドレス、送信元のIPアドレスの識別子をパケット識別部134aが識別し、接続情報保持部160に記憶する。もし、接続情報保持部160に記憶した接続先MACアドレスを宛先とするパケットを受信すれば、出力経路選択部138は、接続情報保持部160に記憶された通信部131へ出力経路選択部138はパケットを転送する。接続情報保持部160に該当する宛先の情報がなければ、全ての通信部131へパケットを転送する(受信した通信部131は除外してもよい)。あるいは,各通信部131からARP(Address Resolution Protocol)やPing機能を使って、返事があった通信部131へ、出力経路選択部138は出力先の通信部131と判定してもよい。また、この時得られた宛先と通信部131の関係を接続情報保持部160に記憶してもよい。
接続情報保持部160の各情報は、一定の保持期間をもうけ、保持期間後に削除してもよい。また、パケットを受信するたびに、接続情報を抽出して接続情報保持部160の情報を更新してもよい。
なお、図7、図11の手順では、S003において、ネットワーク中継装置121へ転送前のパケットであるかを判定する必要がある。これは、ネットワーク中継装置121へ接続するLAN102群、通信部131群と他のネットワークへ接続する通信部131群の区別だけは予め物理的に固定であるように構成してもよいし、あるいはパケットの中身で判定する方法が例示される。すなわち、ネットワーク中継装置121を経由した場合でもIEEE 802.3のデータ部分、あるいはIP層のデータ部分は変わらないことに着目し、ネットワーク中継装置121と対向する通信部131かどうかを判定する。ネットワーク中継装置121は、中継機能の対象となるプロトコル層のヘッダ部分を変更することはあり得るが、データ部分は基本的に変更しないことにしたがっている。この場合、通信制御装置120はパケットを受信すると、ネットワーク中継装置121の対象となるプロトコル層のデータ部分を抽出して接続情報保持部160に該当するデータと同一の情報があるかを検索する。つまり、接続情報保持部160は該データ部分を接続情報として保持する。なお、接続情報保持部160が保持する情報はデータそのものではなく、所定のハッシュ演算を適用したハッシュ値でもよい。
もし、接続情報保持部160に該当する情報があれば、該パケットはネットワーク中継装置121から転送されてきたパケットであり、受信した通信部131は、ネットワーク中継装置121に対向する通信部131と判定することができる。判定の確度を高めるために、接続情報保持部160にパケットの受信時刻をあわせて記憶するように構成し、現在の時刻との差分を求め、ネットワーク中継装置121の処理時間との差が妥当な所定値以内であれば接続情報保持部160の情報は、直前にネットワーク中継装置121へ転送したパケットであると考えられ、現在判定しているパケットは、そのパケットがネットワーク中継装置121から転送されてきたと考えることができる。以上の仕組みを用いて、通信部131がネットワーク中継装置121に対向するか、他のネットワークに接続しているかを判定する。この判定結果は接続情報保持部160へ保持することが例示される。
これらの判定処理や記憶処理は図7、図9の動作手順と並列に実行してもよいし、図7、図9のS005の出力経路選択部138による転送先ポートの決定時に実行してもよい。後者の場合、判定処理、記憶処理は処理時間を要するため、S007におけるToutへ反映する必要がある。これらの判定処理、記憶処理は、所定の固定時間で実行できれば、その固定時間をS007の差分Dの計算時にToutに足してもよいし、あるいは、S005以降にS007を実行して、判定処理、記憶処理実行後に計時部135から出力時刻Toutを取得してもよい。
なお、各通信部131の接続関係は、通信制御装置120に物理的なスイッチ手段(例えば、液晶表示とボタン、キーボード、タッチパネル等。)をもうけて、手動で接続関係を決定できるようにしてもよい。
接続情報保持部160を利用することで別の効果を得ることができる。送信先とその送信先に接続する通信部131の関係を記憶するだけでなく、送信元と送信先の関係を記憶するようにする。
送信元と送信先の対応関係は、パケット識別部134や時刻情報保持部137の情報を用いて、次のようにして判定することができる。
ネットワーク中継装置121へ転送前と転送後の同一パケットを識別する。識別したパケットの送信元(例、IPアドレス)と、送信先(例、IPアドレス)と転送先の通信部131を対応づける。このように構成すれば、通信制御装置120で受信した同期パケットの送信元から転送先通信部131を選択し、転送することができる。これは、ネットワーク中継装置121への転送を省略することで通信遅延を短くすることができる。通信制御装置120で遅延を計測する場合、通信制御装置120の計時部135自体に精度のずれがあるため、計測する時間が短い方が計測した時間のずれも小さい。したがって、通信遅延を短くできれば、計測する遅延の計測精度も向上し、マスタ装置123、スレーブ装置124の同期精度を向上させることができる。
前記のとおり、接続情報保持部160の情報は定期的に消去して学習しなおしてもよい。
また、同期パケット以外のパケットについてもネットワーク中継装置121への転送を省略して通信制御装置120内で転送先に接続する通信部131へ出力してもよい。通信遅延短縮の効果が得られる。
上記の処理において、ネットワーク中継装置121の対象とするプロトコル層のヘッダで変更する必要があるパラメータがあれば変更してもよい。例えば、L3スイッチ、ルータの場合は、TTL(Time To Live)から1を減じる処理が例示される。ネットワーク中継装置121がL2スイッチ、ブリッジの場合は、MACアドレスを変更しなくてもよい。
なお、上記の出力先の通信部131を記憶してネットワーク中継装置121への転送を省略している最中に、本来の通信経路が変化する可能性がある。ネットワーク中継装置121への転送を省略している場合に通信制御装置120の転送先とネットワーク中継装置121の転送先が異なると、同期パケットが本来の通信相手に到達しない可能性がある。
このような場合に備えて、接続情報保持部160の接続先情報を用いて受信したパケットを直接他のネットワークへ接続する通信部131へ転送するとともに、パケットを複製して、ネットワーク中継装置121へと転送する。このように構成すれば、もし、ネットワーク中継装置121の経路情報が変わった場合に、通信制御装置120は受信した通信部131をもとに、経路の変更を把握することができる。先に転送したパケットの送信先情報が異なれば、改めて、出力経路選択部138は、変更した先の通信部131へパケットを転送する。図7、図9のS007における出力時刻Toutは、ネットワーク中継装置121から受信したパケットを転送する際の時刻とする。経路情報が変更していなければ、ネットワーク中継装置121から受信したパケットを転送する必要はなく、通信制御装置120でパケットを破棄すればよい。
この時、接続情報保持部160に、先に転送したパケットの転送履歴や転送時刻を記憶しておくことが例示される。
このようにすれば、遅延を短くして同期精度を向上させつつ、経路情報が変更になった場合でも、ネットワーク中継装置121から転送されたパケットを、変更後の経路に送信することで、パケットが送信元に到達しないことを防ぐことができる。
また、パケット識別部134aにおいて、IEEE 1588ヘッダのcorrectionField147の値を抽出して、時刻情報保持部137で保持してもよい。
これは、通信制御装置120の接続するネットワーク中継装置121がIEEE 1588のTCであった場合、本発明を適用した通信制御装置120による計時と、ネットワーク中継装置121(この場合、TCを仮定)の計時によって、ネットワーク中継装置121の処理時間を重複して計測する可能性がある。
この問題を回避するため、時刻情報保持部137において、ネットワーク中継装置121へ転送前のパケットのcorrectionField147の値C1を保持し、ネットワーク中継装置121から転送された同期パケットのcorrectionField147(C2とする)と比較する。もし、C1とC2が異なる値であれば、ネットワーク中継装置121はTC機能を有していると判定する。C1とC2が等しければ、図7、図9に示す手順でcorrectionField147を更新する。
ネットワーク中継装置121がTC機能を有している場合の対応は、複数の方法が例示される。correctionField147のC2を破棄し、C1に通信制御装置120で計測した差分を追加する方法が例示される。通信制御装置120で複数のネットワーク中継装置121を経由して(挟んで)パケットをネットワーク中継装置121へ転送、ネットワーク中継装置121から受信する場合は、複数のネットワーク中継装置121のうちのいくつかがTCである場合がある。C2を破棄する方法はこのような場合に有効である。
また、C2のまま、correctionField147を変更せずにパケットを転送する方法が例示される。あるいは、C2に対して、通信制御装置120の処理時間を追加する方法が例示される。この時、図7、図9の手順では、通信制御装置120が他のネットワークからパケットを受信した時刻Tinと、ネットワーク中継装置121から転送されたパケットを他のネットワークへ送信する時刻Toutをもとに処理時間を計測していたが、通信制御装置120のみの処理時間を抽出するために、上記Tin、Toutに加えて通信制御装置120からネットワーク中継装置121へパケットを送信する時刻Tm1、ネットワーク中継装置121からパケットを受信した時刻Tm2をあわせて用いる。つまり、C2を用いる場合は、次式によって、通信制御装置120の処理時間を追加することができる。
C3 = C2 + (Tm1 − Tin) + (Tout − Tm2) (式3)
ここで、C3は、通信制御装置120とネットワーク中継装置121の処理時間を加えて、通信制御装置120が更新したIEEE 1588パケットのcorrectionField147の値である。
ここで、時刻情報保持部137は、Tm1、Tm2を保持してもよいし、(Tm1 − Tin)、(Tout − Tm2)を保持してもよい。
また、通信制御装置120から他のネットワークに送信する際に、式3によるC3に更新してもよいし、ネットワーク中継装置121へ転送前に、Tm1 − Tinを算出してC1に追加して、IEEE 1588のcorrectionField147を更新してもよい。
この場合、ネットワーク中継装置121からパケットが折り返されて通信制御装置120が他のネットワークに送出する際に、残るTout − Tm2を算出してIEEE 1588のcorrectionField147に追加してもよい(この時、IEEE 1588のcorrectionField147はC2 + (Tm1 − Tin)となっている)。
このように構成することで、通信制御装置120と接続するネットワーク中継装置121がTCであっても、誤って処理時間を計測することを防ぐことができる。
なお、本発明の効果はIEEE 1588を想定して説明した。NTPやSNTP等、他の同期プロトコルへの本発明の適用について述べる。NTP等では、往復の遅延が等しいと仮定しており、往復の遅延差が存在すれば、その分、同期精度に誤差が生じる。その遅延差の主な要因の一つは、中継装置の処理遅延である。そこで、本発明を適用した通信制御装置120により、通信制御装置120、ネットワーク中継装置121の処理遅延を計測して活用する。ただし、NTP等のプロトコルでは、IEEE 1588のヘッダのcorrectionField147に該当する項目がなく、パケット自体に通信制御装置120とネットワーク中継装置121の処理遅延を格納する手段がない。
そのため、通信制御装置120は計測した遅延をマスタ装置123、スレーブ装置124へ通知することが例示される。これは、図7、図9のS008において、パケットを更新するのではなく、遅延情報を格納したパケットをマスタ装置123、スレーブ装置124へ送信する処理に置き換わる。
マスタ装置123、スレーブ装置124の宛先は、計測した対象のパケットのヘッダから取得する。また、通信制御装置120の遅延情報をマスタ装置123、あるいはスレーブ装置124が受信した際に、どの同期パケットに対して計測した遅延情報であるかを判別するために、同期パケットに記載されてパケットを識別可能な情報を遅延情報とあわせて送信することが例示される。これは、IEEE 1588−2002(バージョン1)も同様である。IEEE 1588においても、遅延を計測したパケットの識別情報と遅延情報を別のパケットに格納して、マスタ装置123、スレーブ装置124へ送信することが例示される。
マスタ装置123、スレーブ装置124のどちらに遅延情報を送るかは、遅延計算が可能で、パケットを識別可能であるかに依存する。例えば、NTPでは、スレーブ装置124が遅延を計算し、同期パケットの送信、受信を実行することから、同期パケットの識別も可能である。したがって、スレーブ装置124にのみ、遅延情報とパケット識別情報を送ればよい。マスタ装置123が遅延情報を受信して、スレーブ装置124へ通知してもよい。
また、通信制御装置120とネットワーク中継装置121を接続する通信ケーブルに、ケーブル断線やコネクタが外れる等の異常が生じて、通信ができない場合に、他の通信部を利用して通信することができる。通信異常の判定は、物理層の異常判定機能を用いて判定する方法や、通信が不可である時間がしきい値をこえた場合に異常と判定する方法が例示される。また、本来パケットを受信する通信部131と異なる通信部131からパケットを受信した場合であっても、ネットワーク中継装置121がパケットの転送を継続できるように適切に処理することが例示される。例えば、パケットの中身やヘッダ情報を変更する処理が挙げられる。
以上の構成により、本発明によれば汎用のネットワーク中継装置121に処理遅延の計測機能を付加することができ、ネットワークに接続する端末装置間を高精度に同期することが実現できる。
第2の実施例は、図1で説明した通信制御装置120の構成を分割した構成である。実施例に使用する符号は、特に断りのない限り、実施例1で説明した機能や要素等と同一であることを意味する。
図12に本発明を適用した通信制御装置170の利用例を示す。同期用ネットワーク171は、2つの通信制御装置170を同期するためのネットワークである。
図13に通信制御装置170の機能構成を示す。
時刻同期制御部180は、他の通信制御装置170と同期用ネットワーク171を用いて、他の通信制御装置170上の時刻同期制御部180と通信して、同期させた時刻を計時部135に設定する。また時刻情報保持部137から時刻情報を抽出して、同期用ネットワーク171を経由して、他の通信制御装置170へ通知する。
また、通信部131aは他のネットワークと接続し、通信部131bはネットワーク中継装置121と接続している。通信部131cは同期用ネットワーク171と接続している。
図13における動作手順は図7と同様である。
このとき、時刻同期制御部180は所定の周期で、他の通信制御装置170の時刻同期制御部180と時刻同期手順を実行する。時刻同期手順としては、IEEE 1588(Peer delay方式を含む)、NTP、SNTPやGPSが挙げられる。これらの時刻同期手順は、同期用ネットワーク171を用いて同期する。
同期手順の実行周期は、水晶振動子等の物理的な特性で決定される計時部135の同期精度と、システムの要求する同期精度によって決まる。つまり、同期処理を実行しない期間でずれる精度誤差が要求同期精度より低下しないように実行周期を決める。例えば、1秒間同期処理を実行しないで、100μ秒の同期精度誤差が生じる2つの通信制御装置170間で、要求同期精度が1μ秒の場合、次式より、10ms周期で同期処理を実行する必要がある。
1s × 1μs/100μs = 10ms (式4)
同期等のパラメータは、図12、図13に図示していない入力手段で設定してもよい。例えば、キーボードや通信制御装置170が有線(LAN、USB等)や無線(無線LAN、Bluetooth等)のインターフェースをそなえて設定できるように構成することが例示される。あるいは、独自のプロトコルによって、パケット識別部134aが、時刻同期制御部180に対する設定パケットであることを識別して、パラメータを設定してもよい。そのようなプロトコルにしたがったパケットフォーマットでは、少なくともパラメータ設定であることを示す識別情報、設定するパラメータの識別情報(例、同期処理の実行周期)、設定する値(例、10μ秒)が例示される。あるいは、通信制御装置170、時刻同期制御部180を識別する情報を含む。
また、マスタ−スレーブ方式、あるいはサーバ−クライアント方式をとる時刻同期プロトコルであれば、どの通信制御装置170をマスタ、あるいはスレーブとするかを上記の周期と同様の方法で決定してもよい。IEEE 1588であれば、Best Master Clock(BMC)アルゴリズムによって、同期用ネットワーク171で接続された通信制御装置170間で自律的にマスタ−スレーブを決定することができる。
図13の別の動作手順を図16に示し、ここで、図7との違いを点線部に示す。
図16の動作は、通信制御装置170同士が同期していない場合を想定しているが、定期的に周期処理を実行し、同期している状態であってもよい。
S003において、中継装置に転送前のパケットであれば、時刻情報登録部136は、計時部135から受信時刻Tinを取得する(S020)。次に、他の通信制御装置170と同期処理を実行して時刻を同期させる(S021)。それから、S020で取得したTinをS021で算出した同期パラメータによって、同期後の時刻Tcinに変換する(S022)。
同期処理では、自身の時刻Lを他の通信制御装置170の時刻Sと同期させる。この時、SとLは、式5、式6等によって、モデル化され、各パラメータは同期処理によって算出される。
S = L + offset (式5)
S = kL + offset (式6)
offsetは、時間経過に依存しない、LとSの差分に関わる項である。kは、Lに対する比例定数である。また、LとSの関係は漸化式で表現してもよい。
同期処理によって、各パラメータを算出すれば、同期後の時刻にTinを変換することができる。例えば、式5の形式でLとSの関係を定義し、offsetを500μ秒として、Tin(L)が2000μ秒とすれば、同期後の時刻Sは2500μ秒(S=2000μ秒+500μ秒)となる。
S003において、ネットワーク中継装置に転送後のパケットであれば、S006で受信時刻Tcinを取得する。その後に、同期処理を実行する(S024)。
それから、同期された時刻Tcoutを取得する(S025)。TcoutとS006で取得したTcinの差分を求めて、パケットを更新する(S008)。
このようにすれば、同期処理の実行時間も含めて、通信制御装置170とネットワーク中継装置121の処理遅延を計測することができる。このとき、S021とS024の同期処理は必ずしも両方実行する必要はない。例えば、S021を省略し、S024のみ同期処理を実行してもよい。このとき、S024を実行する通信制御装置170を同期プロトコルのスレーブ(時刻を調整する側)とし、接続している他の通信制御装置170をマスタ(時刻の提供元)とすれば、マスタとなる通信制御装置170は、S021にて同期処理を実行する必要はない。
図12、図13に示す通信制御装置170の構成は、1つの通信制御装置170で、ネットワーク中継装置121の1つの通信ポートに対応している。通信制御装置170として、図13に示す構成を複数まとめて、1つの通信装置としてもよい。その場合、図13の構成が並列に動作してもよいし、通信制御装置170が他の通信制御装置170と通信部131cで接続するように、1つにまとめた通信制御装置170内部で接続してもよい。また、図12、図13に示す通信制御装置170は、他の1つの通信制御装置170と接続しているが、もう一つの通信部131dをそなえて、デイジーチェーン(数珠つなぎ)やリングトポロジで接続してもよい。あるいは、複数の通信制御装置170間をネットワーク中継装置121で接続してもよいが、本発明の当初の課題であるネットワーク中継装置121内の遅延が同様に課題となるため、TCの採用や本願発明の採用により、ネットワーク中継装置121内の遅延のゆらぎの影響が生じないように構成する必要がある。
また、図13に示す構成を複数並べた構成ではなく、図5、図10の構成に時刻同期制御部180を付加してもよい。その場合、時刻情報保持部137と時刻同期制御部180を接続し、時刻同期制御部180は計時部135の時刻を、他の通信制御装置170の時刻同期制御部180と同期する。さらに、時刻同期制御部180は同期用ネットワーク171を用いて通信するための通信部131と接続する。
また、ネットワーク中継装置121の全ての通信ポートに通信制御装置170を接続してもよいし、特定の通信ポートを選択して接続してもよい。通信ポートを選択した場合は、選択した通信ポート間で本発明の効果を得ることができる。また、複数の通信部を有する通信制御装置170を構成した場合は、その通信部の数が、接続するネットワーク中継装置121の通信ポートの数より多くてもよい。
さらに、通信制御装置170と接続する他の通信制御装置170は、同じネットワーク中継装置121に接続している必要はなく、通信制御装置170間の同期用ネットワーク171を物理的に接続可能であれば、異なるネットワーク中継装置121へ接続していてもよい。
通信制御装置170は、別の通信制御装置170と同期用ネットワーク171を用いて通信している。この同期用ネットワーク171を省略し、通信部131bを用いて、他の通信制御装置170と時刻同期する構成を図17に示す。
利用可能通信ポート取得部190は、接続している通信部131bが1つの場合、通信部131bに対する送信要求がないかを判定することができる。時刻同期制御部180が、他の通信制御装置170の時刻同期制御部180と同期しようとした場合、パケット識別部134aからのパケットによって、同期パケットの送信処理が遅れれば、同期精度が低下する。そのため、通信部131bが送信処理中でないことを利用可能通信ポート取得部190が判定すればよい。通信部131bが利用可能かどうかを利用可能通信ポート取得部190が判定する方法は、パケット識別部134aからの送信要求があるかどうかを見る方法や、あるいはパケット識別部134aと時刻同期制御部180のそれぞれの送信要求をスケジューリングする方法でもよい。利用可能通信ポート取得部190は、必ず時刻同期制御部180からの送信要求を最優先とすれば、パケット識別部134aの送信要求と衝突することはない。このとき、時刻同期制御部180は、利用可能通信ポート取得部190から送信要求を許可されたタイミングで、送信時刻を記録すれば、パケット識別部134aからの送信要求に影響されずに同期することができる。
図17の構成において、複数の通信部131を用いる場合は、利用可能通信ポート取得部190によって、複数のネットワーク中継装置121に対向する通信部131から、利用可能な通信部を取得して、時刻同期処理を実行することができる。ただし、複数の通信制御装置170と接続している場合は、ネットワーク中継装置121を経由後にパケットが転送される通信制御装置170に接続する通信部131を用いる必要がある。通信部131と各通信制御装置170の接続情報は、事前に、図示しない時刻同期制御部180への入力手段によって設定する方法やパケット識別部134aが識別可能なパケットによって設定する方法が例示される。このとき、設定する通信制御装置170と、通信部と、該通信部に接続する通信制御装置170の接続情報をパケットに含む必要がある。
利用可能通信ポート取得部190による通信可能な通信部131の取得、通信部131の利用タイミングは、図16のS021〜S024等の同期処理実行時である。
利用可能通信ポート取得部190を用いることで、同期用ネットワーク171と通信部131cが不要となる。
また、図5、図10の構成に時刻同期制御部180を付加した構成に、利用可能通信ポート取得部190を付加してもよい。その場合、利用可能通信ポート取得部190と、ネットワーク中継装置121に接続する通信部131群を接続する。利用可能通信ポート取得部190は、時刻同期制御部180に利用可能な通信部131を通知する。
また、システムの起動時は、各通信制御装置170同士がシステムの要求精度で同期していない場合がある。これは同期処理を未実行である場合や、同期処理実行時の過渡状態が該当する。そのような状態で通信制御装置170が同期パケットを受信した場合、時刻同期制御部180が同期するまで、同期パケットを時刻情報登録部136やパケット更新部139で保持する構成が例示される。これは、図16のS021、S024で同期するまで、同期パケットの転送を待機する構成と同様である。
これは、初期状態に限らず、何らかの異常により、同期が外れた場合も同様に、同期処理を完了するまでパケットをバッファリングする構成が例示される。同期処理前に計時部135から時刻情報を取得することで、同期処理の遅延を含めて、同期用ネットワーク171、ネットワーク中継装置121の通信遅延を計測することができる。
同期精度低下を判定する基準は、最後に同期してからの経過時間が所定のしきい値以上であるかを用いる方法が例示される。この所定値は、通信制御装置170のクロック基準となる物理デバイス(水晶振動子など)の精度と、システム要求精度から算出できる。例えば、1秒で10μ秒ずれる計時部135の精度で、システム要求精度が1μ秒であれば、100ミリ秒ごとに同期する必要があり、しきい値として80ミリ秒を用いることが例示される。80ミリ秒間同期処理がなされなければ、同期精度低下の異常状態と判定する。
あるいは、他の通信制御装置170と定期的に時刻情報を通信し、同期処理中に算出した通信制御装置170間の遅延を考慮した時刻差が所定値より大きければ、同期精度が低下していると考える。例えば、同期処理によって通信制御装置170間の遅延を1ミリ秒と推定し、受信側と送信側の同期後の状態で、受信側が受信した時刻と、同期パケット上の送信時刻の差が1ミリ秒よりも所定のしきい値だけずれていれば同期精度低下と考える。
以上の構成により、本発明を用いることで、ネットワーク中継装置121の処理遅延等の、通信制御装置170間の処理遅延を計測することができ、ネットワークに接続する端末装置間を高精度に同期することができる。さらに、複数の通信制御装置170を用いることで、ネットワーク中継装置121の特定の通信ポート間の通信遅延や、複数のネットワーク中継装置121の特定の通信ポート間の通信遅延を計測することができる。