本発明による通信制御装置の実施例を、図面を用いて説明する。本発明による通信制御装置は、分散制御システムを構成し、ネットワーク中継装置を介して他の通信制御装置と接続される。以下の実施例では、着目している通信制御装置と区別するために、他の通信制御装置を便宜上「通信装置」と称する。IEEE1588のようにマスタ−スレーブ構成をとる場合、通信制御装置がマスタとなり、通信装置がスレーブとなる。NTPのようにサーバ−クライアント構成をとる場合、通信制御装置がサーバとなり、通信装置がクライアントとなる。本発明による通信制御装置は、マスタ−スレーブ構成ではサーバにもクライアントにもなることができ、サーバ−クライアント構成ではサーバにもクライアントにもなることができる。
本発明による通信制御装置は、少なくとも要求パケットと応答パケットとで構成される通信を用いた時刻同期手順を用いて、他の通信制御装置と時刻同期する。時刻同期を行うときには、他の通信制御装置からの要求パケットの衝突を検知し、検知結果に基づいて、要求パケットを送信した通信制御装置へ応答パケットを送信するか否かを決定する。
なお、以下の実施例では、時刻同期プロトコルとしてIEEE1588を実行するものとして説明する。以下の実施例で、スレーブの時刻をマスタに同期させる場合には、IEEE1588のDelay_Reqメッセージは、スレーブがマスタに時刻同期を要求するメッセージであり、Delay_Respメッセージは、マスタがスレーブに応答するメッセージである。従って、Delay_Reqメッセージのパケットが要求パケットとなり、Delay_Respメッセージのパケットが応答パケットとなる。Syncメッセージのパケットは、時刻同期を要求するための要求パケット、すなわち再要求パケットとなる。
本発明では、時刻同期プロトコルとして、NTP又はSNTPを実行してもよい。例えば、NTP又はSNTPを実行する場合には、クライアントからの要求に対してサーバが応答する。すなわち、クライアントが要求パケットをサーバに送信し、サーバは応答パケットをクライアントに送信する。
図1は、本実施例による通信制御装置120を用いて構成する分散制御システムの例を示す図である。分散制御システムは、通信制御装置120、通信装置123、ネットワーク122、及びネットワーク中継装置121から構成される。通信制御装置120と通信装置123、及び通信装置123同士は、ネットワーク122とネットワーク中継装置121を介して接続され、互いに通信する。
ネットワーク中継装置121の例としては、ネットワークスイッチ、ルータ、ゲートウェイ、及びOpenFlowにおけるOpenFlowスイッチ等が挙げられる。ネットワーク122の例としては、IEEE802.3、各種産業用ネットワーク、IEC61784、及びIEC61158等が挙げられる。
図2は、本実施例による通信制御装置120のハードウェア構成を示す図である。通信制御装置120は、CPU101、送受信機IC102、メモリ108、不揮発性記憶媒体109、及びバス110を備える。
CPU101は、不揮発性記憶媒体109からプログラムをメモリ108に転送し、このプログラムを実行する。実行するプログラムとしては、オペレーティングシステム(以下「OS」と称す)や、OS上で動作するアプリケーションプログラムを例示できる。
送受信機IC102は、ネットワーク122との通信機能を有する。送受信機IC102は、CPU101が実行するプログラムから通信要求を受け取り、ネットワーク122に対して通信する。送受信機IC102としては、IEEE802.3規格のMAC(Media Access Control)チップ、PHY(物理層)チップ、MACとPHYの複合チップ、FPGA、CPLD、ASIC、及びゲートアレイといったICを例示できる。なお、送受信機IC102は、CPU101や、コンピュータ内部の情報経路を制御するチップセットに含まれていてもよい。
メモリ108は、CPU101が動作するための一時的な記憶領域であり、例えば、不揮発性記憶媒体109から転送されたOSやアプリケーションプログラムを格納する。
不揮発性記憶媒体109は、情報の記憶媒体であり、OS、アプリケーションプログラム、デバイスドライバ、及びCPU101を動作させるためのプログラムを保存し、プログラムの実行結果も保存する。不揮発性記憶媒体109としては、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)、及びフラッシュメモリを例示できる。また、不揮発性記憶媒体109には、取り外しが容易な外部記憶媒体を用いてもよい。このような外部記憶媒体としては、例えば、フレキシブルディスク(FD)、CDやDVDなどの光ディスク、USBメモリやコンパクトフラッシュ(登録商標)などのフラッシュメモリを利用することができる。
バス110は、CPU101、送受信機IC102、メモリ108、及び不揮発性記憶媒体109を接続する。バス110としては、PCIバス、ISAバス、PCI Expressバス、システムバス、及びメモリバスを例示できる。
(通信制御装置の各機能の説明)
図3は、本発明の実施例1による通信制御装置120の機能構成を示す図である。通信制御装置120は、時刻同期処理部130、通信部131、受信間隔測定部134、及びキューイング発生判定部135を備える。
時刻同期処理部130は、時刻同期を実行する。実行する時刻同期プロトコルとしては、IEEE1588、NTP、及びSNTPが挙げられる。上述したように、本実施例では、時刻同期プロトコルとしてIEEE1588を実行するものとして説明する。ただし、NTP、又はSNTPを時刻同期プロトコルとして実行してもよい。
時刻同期処理部130は、CPU101が実行するソフトウェアで実現してもよいし、送受信機IC102をFPGAやCPLDで構成した場合のハードウェア論理として実現してもよい。又は、CPU101が実行するソフトウェアと送受信機IC102のハードウェア論理との両方で構成してもよい。この場合には、例えば、パケットの送信時刻と受信時刻の計測、又はパケットフォーマットの生成を、送受信機IC102で処理することができる。
通信部131は、送信部132と受信部133とを備え、時刻同期プロトコルにおける所定のパケットを送受信する。送信部132は、時刻同期プロトコルにおける所定のパケットを送信する。受信部133は、時刻同期プロトコルにおける所定のパケットを受信する。通信部131、送信部132、及び受信部133は、送受信機IC102による実現を例示できる。
受信間隔測定部134は、通信部131の受信部133で受信したパケットの受信間隔を測定する。受信間隔を測定するために、受信間隔測定部134は、受信部133がパケットを受信する時刻を計測する機能を有する。パケットの受信間隔は、受信部133が続けて受信した任意の2つのパケットの受信時刻の差分を計算することで測定してもよい。IEEE1588の規格に従う場合は、受信部133が受信した2つの時刻同期用パケット(例えば、Delay_Reqメッセージ)の受信時刻の差分を計算することで、パケットの受信間隔を測定してもよい。
受信間隔測定部134は、CPU101が実行するソフトウェアで実現してもよいし、送受信機IC102でハードウェアとして実現してもよい。又は、CPU101が実行するソフトウェアと送受信機IC102との組み合わせで実現してもよい。この場合には、例えば、送受信機IC102がパケットの受信時刻を計測し、CPU101が実行するソフトウェアが受信時刻の差分を求めることで、受信間隔を算出してもよい。この場合、送受信機IC102は、受信間隔を算出するための情報をCPU101に開示する。この情報は、送受信機IC102のレジスタを用いて保持してもよいし、送受信機IC102がメモリ108の所定の領域に書き込んでもよい。
キューイング発生判定部135は、ネットワーク中継装置121内のパケットバッファで時刻同期用パケットがキューイングしたかどうかを判定する。以下、ネットワーク中継装置121内のパケットバッファでパケットがキューイングして待ち時間が発生することを「衝突」と称する。
パケットが衝突したかどうかは、受信間隔測定部134で計測した実際のパケットの受信間隔Tと、パケットの通信処理時間Tp、フレーム間ギャップIFG、及びネットワーク中継装置121の通信処理時間Tsのうちの1つ又は複数の値を用いて算出した受信間隔Trとを比較することで、判定する。受信間隔Trは、パケットサイズと装置構成とから求められる値である。
任意のパケットの通信処理時間Tpは、式(3)で求まる。
Tp=Sp×8[bit/B]/Th (3)
ここで、Spはパケットサイズ(単位B)、Thは通信スループットである。例えば、64Bのパケットを100MbpsのIEEE802.3規格によるネットワーク上で送信した場合の通信処理時間Tpは、Tp=64[B]×8[bit/B]/100[Mbps]=5.12[μs]となる。
フレーム間ギャップIFGは、ネットワークで規定されるパケット間隔である。IEEE802.3規格は、フレームを通信経路上に送信後、後続のフレームを送信するまでの間隔をフレーム間ギャップ(Inter frame Gap、IFG)として規定している。フレーム間ギャップは、96bit時間と規定されており、式(4)でフレーム間ギャップIFGを求めることができる。
IFG=96[bit]/Th (4)
例えば、100MbpsのIEEE802.3規格によるネットワークでは、IFG=96[bit]/100[Mbps]=0.96[μs]である。
ネットワーク中継装置121の処理時間Tsは、個々のネットワーク中継装置121の処理内容に依存する。ネットワーク中継装置121の処理内容としては、宛先ポート情報の抽出や、ネットワーク中継装置121内でのパケットの転送処理を例示できる。ネットワーク中継装置121の処理時間Tsは、ネットワーク中継装置121のデータシートやマニュアルに記載されている値を用いてもよく、ネットワーク中継装置121の転送遅延を実験的に計測して求めた値を用いてもよい。
実験的にネットワーク中継装置121の転送遅延を計測する方法例としては、ある通信端末に2台の通信ポートを設けて、片方の通信ポートからテストパケットを送信後に、ネットワーク中継装置121を経由して、他方の通信ポートで受信させる。この時の通信遅延(例えば、パケットの先端を受信した時刻から、次のパケットの先端を送信した時刻を引く)から、式(3)によるパケットの通信処理時間Tpを引いた値が、ネットワーク中継装置121の処理時間Tsとなる。
ネットワーク中継装置121の通信処理時間Tsは、パケットサイズに比例する処理部分、着目しているパケットの前後にパケットが存在するか否か、及び管理する通信経路の情報量によって変化する可能性があるため、様々に条件を変えて、推定する必要がある。ネットワーク中継装置121の処理時間Tsを推定する方法の一例を、式(5)に示す。
Ts=A+kSp+B+mC (5)
Aは、パケット転送時にかかる固定の遅延を表す値であり、kは、パケットサイズSpに対する比例定数である。Bは、ネットワーク中継装置121のパケットバッファ中において、着目しているパケットの前にパケットが存在する場合の遅延を表す値である。Cは、通信経路の情報量、mは通信経路の情報量Cに対する比例定数である。
また、通信制御装置120と通信装置123の間に複数のネットワーク中継装置121がある場合、処理時間Tsには、通信制御装置120に隣接したネットワーク中継装置121のTsや、通信経路上のネットワーク中継装置121のTsの合計値又は最大値を用いることが例示できる。
図4は、パケットがネットワーク中継装置121で衝突した場合の動作を示す図である。バッファ142は、ネットワーク中継装置121中のパケット用のバッファである。バッファ142は、First−in First−out(FIFO)型のデータ構造とする。今、パケット140を送信処理中で、パケット141がパケット140に続いて、バッファ142内にキューイングされているとする。この時、パケット141は、バッファ142内で先行するパケット140によって送信が遅延され、待ち時間が発生している。すなわち、パケット141は、バッファ142内でパケット140と衝突している。
この時、図4で示す出力側に通信制御装置120が接続しているとする。通信制御装置120におけるパケット140とパケット141の受信間隔を見ることで、パケット141がパケット140と衝突していることを判定することができる。すなわち、パケット141とパケット140が衝突していれば、パケット140に係わる通信処理時間だけ、通信制御装置120がパケット141を受信する処理が遅延する。
パケットの先端を受信した時刻で判定すれば、衝突が発生している場合には、パケット140とパケット141の受信間隔Trは、式(6)で求められる。
Tr=Tp+IFG+Ts (6)
ここで、パケットの通信処理時間Tpは式(3)、フレーム間ギャップIFGは式(4)、ネットワーク中継装置121の処理時間Tsは式(5)で、それぞれ求めることができる。
又は、パケット140とパケット141の受信間隔Trは、ネットワーク中継装置121の処理時間Tsを省略して、式(7)で求めてもよい。ネットワーク中継装置121の処理時間Tsは、ネットワーク中継装置121の構成に応じて省略することができる。
Tr=Tp+IFG (7)
又は、パケットの後端を受信した時刻と次のパケットの先端を受信した時刻とを用いて判定すれば、衝突が発生している場合には、パケット140とパケット141の受信間隔Trは、式(8)又は式(9)で求められる。
Tr=IFG+Ts (8)
Tr=IFG (9)
式(9)では、ネットワーク中継装置121の処理時間Tsを省略している。
パケット141がパケット140と衝突していれば、ネットワーク上のパケットの量が多く、パケットの受信間隔が短くなる。衝突していなければ、ネットワーク上のパケットの量が少なくて、パケットの受信間隔が長くなる。このため、パケット141がパケット140と衝突していなければ、実際のパケットの受信間隔Tは、式(6)、式(7)、式(8)、又は式(9)で求めた受信間隔Trよりも長くなるはずである。従って、マージン(余裕度)をαとして、実際の受信間隔Tが式(10)を満たすとき、パケット141は衝突していないと判定する。
T>Tr+α (10)
マージンαは、任意の値(正の数値または零)とすることができ、予め定めておく。
(通信装置の機能構成)
図5は、本実施例による通信装置123の機能構成を示す図である。通信装置123は、時刻同期処理部130と通信部131を備える。
時刻同期処理部130は、通信制御装置120との間で時刻同期プロトコルを実行し、通信装置123の時刻を通信制御装置120の時刻と同期させる。時刻同期方式としては、NTP、SNTP、又はIEEE1588を用いることができる。IEEE1588のようにマスタ−スレーブ構成をとる場合、通信制御装置120がマスタとなり、通信装置123がスレーブとなる。
スレーブである通信装置123の時刻同期処理部130は、Delay_Respメッセージの受信後に、マスタとスレーブ間の通信遅延tdと時刻の差分tdiffを式(1)と式(2)を用いて計算する(図14のS068)。そして、時刻同期処理部130は、Syncメッセージ又はFollow_Upメッセージを受信したときに、マスタとスレーブ間の通信遅延tdと時刻の差分tdiffを用いて、通信装置123の時刻を通信制御装置120の時刻と同期させる。
通信部131は、送信部132と受信部133とを備え、時刻同期プロトコルにおける所定のパケットを送受信する。送信部132と受信部133の機能は、通信制御装置120の通信部131と同じなので、説明を省略する。
図6は、通信制御装置120の時刻同期処理の手順を説明する図である。上述したように本実施例では時刻同期プロトコルとしてIEEE1588を実行するとしているので、図6には、IEEE1588プロトコルを実行する場合の通信制御装置120の動作を示す。また、本実施例では、上述したように、通信制御装置120がIEEE1588プロトコルにおけるマスタとなる。
はじめに、通信制御装置120は、IEEE1588のマスタとなる(S001)。IEEE1588では、Best Master Clock(以下、「BMC」と称する)アルゴリズムにしたがって、通信制御装置120と各通信装置123間で情報(Announceメッセージ)をやりとりし、この情報の内容によって、マスタとなるかスレーブとなるかを決定する。本実施例では、通信制御装置120がマスタとなるように、予め通信制御装置120と各通信装置123のパラメータを設定しておく。通信制御装置120をマスタとする方法には、例えば、通信制御装置120がマスタとなるようにAnnounceメッセージをやりとりする情報の優先度を上げる方法がある。
又は、BMCアルゴリズムにおけるパラメータを特別に設定せずに、通信装置123の構成を通信制御装置120と同様にしてもよい。この場合、BMCアルゴリズムを実行した結果、マスタとなった装置を便宜上、通信制御装置120とし、スレーブとなった装置を通信装置123とする。
次に、時刻同期処理部130は、IEEE1588のプロトコルに従い、Syncメッセージをマルチキャストで通信装置123に送信する(S002)。なお、IEEE1588の仕様では、Syncメッセージの送信後にFollow_Upメッセージを送信するtwo stepモードが定義されている。本実施例では、Syncメッセージのみを送信するone stepモードを想定して説明するが、本実施例の効果は、two stepモードでもone stepモードと同様に得られる。
次に、時刻同期処理部130は、パケット(Delay_Reqメッセージ)の受信を待機する(S003)。
Delay_Reqメッセージを受信すると、通信制御装置120の受信間隔測定部134は、直前に受信したパケットとの受信間隔を測定する(S004)。なお、Delay_Reqメッセージが最初に受信したパケットである場合は、直前に受信したパケットとの受信間隔を計測できない。このため、この場合には、受信間隔を0とし、キューイング発生判定部135は衝突が発生していないと判定する。
次に、通信制御装置120のキューイング発生判定部135は、パケットの衝突が発生したかを判定する(S005)。
S005でパケットの衝突が発生したと判定した場合は、通信制御装置120の時刻同期処理部130は、衝突が発生したパケットの通信相手をメモリ108に記憶する(S006)。通信相手は、例えば、IPアドレス、又はIEEE1588上の識別可能な識別子(クロック識別子及びドメインなど)により記憶することができる。
S005でパケットの衝突が発生していないと判定した場合は、時刻同期処理部130は、Delay_Respメッセージを送信し、時刻同期プロトコルを継続する(S007)。
S006又はS007の後、時刻同期処理部130は、全ての通信相手からパケットを受信したかを判定する(S008)。全ての通信相手からパケットを受信していなければ、S003でパケット(Delay_Reqメッセージ)の受信を待機する。
S008で、全ての通信相手からパケットを受信したと判定すれば、時刻同期処理部130は、衝突が発生した通信相手があるか(S006で記憶した通信相手があるか)を判定する(S009)。なお、途中でパケットロスが発生することを考慮し、パケットを受信せずに予め定めた所定の時間が経過した場合に、S010へ進んでもよい。
S009で、パケットが衝突した通信相手があれば、ネットワーク中継装置121内でキューイングによる遅延が発生したこととなる。この場合は、通信制御装置120は、時刻同期プロトコル手順を再実行する。
この時、最初に送信したSyncメッセージと同様にマルチキャストメッセージを送信すると、再び全ての通信装置123が返信することとなる。これは、再度ネットワーク中継装置121内でパケットが衝突する可能性があるため、望ましくない。従って、パケットが衝突したと判定された通信相手とのみ通信をする必要がある。この通信を実現する方法の例としては、特定の通信相手とのみ通信するユニキャスト通信、別のマルチキャストアドレスを定義して利用する通信、VLAN機能に対応したネットワーク中継装置121を用いてVLANによるグルーピングを利用する通信が挙げられる。
これらのうちのいずれかの通信方法を利用して、パケットが衝突したと判定された通信相手とのみ通信をするように、時刻同期処理部130は、通信相手の宛先を変更する(S010)。それから、時刻同期処理部130は、パケットが衝突したと判定された通信相手に再度Syncメッセージを送信して、時刻同期プロトコルを再実行する(S002)。
S009で、パケットが衝突した通信相手がなければ、時刻同期処理部130は、パケットが衝突した通信相手の記録をクリアする(S011)。
次に、時刻同期処理部130は、終了条件を満足したかどうかを判定する(S012)。終了条件は、例えば、ユーザやシステム管理者が明示的に指示したときに終了するものとしてもよいし、システム稼働後の経過時間や時刻同期プロトコルの実行回数を用いて設定してもよい。終了条件を満足していれば、通信制御装置120は時刻同期処理を終了する。
終了条件を満足していなければ、通信制御装置120は、予め定めた所定の時間だけ待機し(S013)、時刻同期プロトコルを再度実行する(S002)。
なお、図6に示した手順では、パケットが衝突したと判定された通信相手に対して時刻同期プロトコルを再実行したが、再実行しなくてもよい。再実行しない場合は、通信制御装置120は、通信装置123との時刻同期が失敗したとして、所定の処理をとる。このような所定の処理の例としては、予め定めた所定の宛先に時刻同期が失敗したことと対象の通信装置123の識別子とを通知すること、及び所定の表示手段(例えば、通信制御装置120に接続されたモニタ、通信制御装置120に備えられたLEDランプ、又は通信制御装置120が発するアラーム音)によって、時刻同期が失敗したことを外部に通知することが挙げられる。
また、Syncメッセージを送信してから、最初のDelay_Reqメッセージを受信するまでの時間を計測し、この時間が予め定めた所定時間を超えた場合に最初のDelay_Reqメッセージのパケットに衝突が発生したと判定し、このDelay_Reqメッセージの送信相手と再度、時刻同期プロトコルを実行してもよい。所定時間は、他の通信フローを発生させずに、実験的にDelay_Reqメッセージを受信するまでの時間を計測して定めてもよい。
また、S013における待機時間は、S002でSyncメッセージを送信するタイミングが所定の周期となるように決定してもよいし、一定値でなく毎回変更してもよい。例えば、S013における待機時間は、キューイング発生判定部135が検知したDelay_Reqメッセージのパケットの衝突の回数に応じて毎回変更してもよい。S010からS002へ遷移した回数が多ければ(すなわち、パケットの衝突の回数が多ければ)、はじめに時刻同期した通信装置123は、次に同期するまでの時間が長くなり、同期せずに処理を実行する時間が長くなるため、なるべく早く時刻同期手順を実行した方がよい。S010からS002へ遷移した回数が少なければ、各通信装置123は比較的精度が高く同期されていると考えられ、待機時間を長めに設定してもよい。
以上説明したように、本実施例による通信制御装置120は、ネットワーク中継装置121を用いたネットワーク構成に利用でき、時刻同期プロトコルの応答メッセージの受信間隔によって、ネットワーク中継装置内でのパケットの衝突の有無を判定することができる。
パケットの衝突が発生した場合は、時刻同期手順を再実行し、パケットの衝突が発生しなかった場合は、そのまま時刻同期プロトコルを継続する。ネットワーク中継装置121を用いたネットワーク構成においても、時刻同期プロトコルを実現することができる。従って、ネットワークを共有した複数の通信装置間で時刻を同期させたシステムを構築することができる。また、ネットワーク中継装置を介してネットワークを中継し、延長することで、大規模な時刻同期システムを構築することができる。さらに、本実施例によれば、IEEE1588規格に準拠する通信装置123を用いて時刻同期システムを構成することができ、特殊な構成を有する通信装置123を必要としない。
実施例2では、通信制御装置120は、グループ構成部をさらに備え、通信装置123の時刻同期用パケットが衝突する確率を低減するために、複数の通信装置123をまとめたグループを活用して、時刻同期プロトコルを実行する。実施例2で用いる図面において、実施例1と同一の符号は、特に断りのない限り、実施例1で説明した機能や要素等と同一であるので、説明を省略する。
図7は、本発明の実施例2による通信制御装置120の機能構成を示す図である。実施例2による通信制御装置120は、図3に示した実施例1による通信制御装置120の構成要素を備え、さらにグループ構成部150とネットワーク構成情報記憶部151とを備える。
グループ構成部150は、ネットワーク構成の情報を基に、複数の通信装置123をグループにわけ、通信装置123のグループに識別子を付する。そして、Delay_Respメッセージの送信回数や各通信装置123との時刻同期の成否状況等に応じて、通信装置123のグループを時刻同期処理部130に通知する。例えば、時刻同期の成否状況として、時刻同期の成功回数や失敗回数、又は最後に時刻同期が成立してからの経過時間を基に、通信装置123のグループを時刻同期処理部130に通知する。
ネットワーク構成情報記憶部151は、グループ構成部150が通信装置123をグルーピングするために利用するネットワーク構成の情報を記憶する。ネットワーク構成の情報としては、ネットワークを構成する装置数、これらの装置に関する情報(装置を構成する部品の性能等)、ネットワークトポロジ、各装置までのホップ数、及び計測した各装置までの通信遅延を例示できる。
図8は、グループ構成部150を備える通信制御装置120の時刻同期処理の手順を説明する図である。図6に示した実施例1による通信制御装置120の時刻同期処理の手順との違いは、Syncメッセージの送信対象となるグループを決定する手順S020が加わったことである。また、通信相手の宛先を変更する手順S010がなく、S009の後で予め定めた所定の時間だけ待機して(S013)、S020を再度実行する点も異なる。
S020において、時刻同期処理部130は、送信対象となる通信装置123のグループをグループ構成部150に問い合わせる。問い合わせを受けたグループ構成部150は、送信対象となるグループの識別子を時刻同期処理部130に通知する。グループ構成部150は、グループの識別子ではなく、1つ又は複数の通信装置123の識別子を通知してもよい。例えば、通信制御装置120の通信相手となる通信装置123が少数(例えば、1つ)である場合は、少数の通信装置123をグルーピングしてグループを定義するよりは、通信装置123の識別子を通知する方がよい。
続くS002では、時刻同期処理部130は、S020でグループ構成部150から通知されたグループの識別子(又は通信装置123の識別子)を用いて、送信対象のグループにSyncメッセージを送信する。
グループの識別子を表現する方法の例としては、IEEE1588で定義されるドメイン、IEEE802.1QにおけるVLAN、又はIP(Internet Protocol)やIEEE802.3やその他の通信プロトコルで定義されるマルチキャストアドレスを用いる方法が挙げられる。その他、ネットワーク上での通信プロトコルに基づいて複数の通信端末間と通信可能な方法であればよい。
図9は、IEEE1588規格のドメインを用いた通信装置123の機能構成を示す図である。実施例2における通信装置123は、図5に示した実施例1における通信装置123の構成要素を備え、さらに同期時刻選択部161を備える。IEEE1588では、ドメインを用いてプロトコル上の操作やタイムスケールを独立して定義可能である。本実施例では、通信装置123内でドメインごとに同期時刻を管理する。このため、同期時刻選択部161は、複数の同期時刻160から1つを選択する。
同期時刻選択部161が同期時刻160を選択する基準は、同期時刻160の識別子、同期時刻プロトコルの実行状況、又は該当するドメインのIEEE1588のマスタの属性(時刻精度等)とすることができる。例えば、同期時刻プロトコルの実行頻度の多いドメインの同期時刻160、又はマスタの時刻精度が最も高いドメインの同期時刻160を選択することができる。
1つの通信装置123内にドメインを多重化して通信制御装置120と通信する方法は、ネットワーク中継装置121の経路制御情報で構成する(例えば、ドメインごとに経路を切り替える)方法でもよいし、通信装置123内でIEEE1588パケット上のドメイン番号を識別する方法でもよい。
IEEE802.1QにおけるVLANを用いてグループを識別する方法を説明する。複数の通信装置123のうちの1つ又は複数と通信制御装置120とによって構成するVLANを、定義するグループの数だけ定義する。
時刻同期処理部130は、図8に示したS002において、S020でグループ構成部150から通知されたVLANの識別子(VID)をVLAN用のタグに設定して、Syncメッセージを送信する。
この場合、ネットワーク中継装置121には、VLAN機能に対応したものを用いる。加えて、図8の手順を実行する前に、予め、各ネットワーク中継装置121にVLANのグルーピングを設定する。
又は、IPやIEEE802.3におけるマルチキャストアドレスを用いてグループを構成してもよい。この場合には、グループごとにマルチキャストアドレスを定義し、マルチキャストアドレスを実現する上で必要な設定を、IGMP(Internet Group Management Protocol)等を用いて、ネットワーク中継装置121、通信装置123、及び通信制御装置120に対して実施する。
次に、グループ構成部150におけるグループ構成方法の例について説明する。グループ構成は、なるべくネットワーク中のネットワーク中継装置121内におけるパケットの衝突確率が低くなることが望ましい。
例えば、通信制御装置120とネットワーク中継装置121間の通信遅延や、通信制御装置120と各通信装置123間の通信遅延を基準に、グループを構成する方法を用いることができる。事前のシステム構築の準備段階において、通信制御装置120と各通信装置123間で、1対1でIEEE1588等の時刻同期プロトコルを実行すれば、既に述べた図15に示す手順で通信遅延を求めることができる。
又は、ネットワークの構成に基づいてグループを構成してもよい。例えば、通信制御装置120と通信装置123との間にあるネットワーク中継装置121の数や性能、ネットワーク中継装置121間の通信性能、ネットワークの通信性能、又はネットワークメディアに基づいて、グループを構成することができる。ネットワーク中継装置121間の通信性能の例としては、IEEE802.3の通信スループット(10Mbps、100Mbps、又は1Gbps等)、有線通信か無線通信かという通信媒体の種類、及び通信規格の種類が挙げられる。
上記のように、遅延情報やネットワークの構成に基づき、各通信装置123をグルーピングするための指標を求めることができる。この指標に基づき、予め定めた所定のグループ数になり、かつ、同じ指標を持つ通信装置123が異なるグループにわかれるように、通信装置123のグループを構成すればよい。例えば、同じ通信遅延時間を持つ通信装置123が異なるグループにわかれるように、通信装置123のグループを構成する。
図10は、遅延情報を基に、通信装置のグループを構成する例を示す図である。図10に示す分散制御システムでは、通信制御装置120と6個の通信装置123a〜123fが、ネットワーク中継装置121を介してネットワーク122に接続されている。
各通信装置123a〜123fと通信制御装置120との通信遅延時間を、各々1ms、2ms、2ms、3ms、3ms、及び3msとする。通信装置を通信装置に付けた符号123a〜123fで表し、グループ数を3とすると、通信装置のグループ構成の一例は、(123a,123c,123d)、(123b、123e)、及び(123f)である。グループ数を2とすると、グループ構成の一例は、(123a,123c,123d)、及び(123b,123e,123f)である。ただし、この場合には、通信装置123dと通信装置123eは、返信パケットが衝突する確率が高まり、一方に対して再同期手順を実行することが予想される。
また、グループ構成の別の方法としては、前回の通信結果やDelay_Respメッセージの送信履歴に基づいてグループを構成してもよい。例えば、前回の時刻同期手順において時刻同期用パケットが衝突したと判定した通信装置123を時系列順に並べた列を作り、この列から通信装置123を1つおきに選択する方法がある。又は、前回の時刻同期手順の結果、時刻同期ができなかった残りの通信装置123の数が予め定めた所定数以下の場合、この残りの通信装置123の中から予め定めた所定数の通信装置123を選択してグルーピングする方法でもよい。システムが対応可能であれば、通信装置123ごとに同期処理を実行した方が容易だからである。
又は、図10を用いて例示した遅延情報に基づいてグループを構成する方法と、前回の時刻同期手順の結果に基づいてグループを構成する方法とを組み合わせてもよい。例えば、図10を用いて例示したグループ構成方法で構成したグループ候補から、前回の結果に基づいて構成したグループにおける通信装置123群を全て含んだグループを、時刻同期処理部130に通知してもよい。この方法では、例えば、時刻同期ができなかった通信装置が通信装置123b、123fであり、既に時刻同期が成立した通信装置が通信装置123eである場合であっても、(123b,123e,123f)のグループを通知することができる。
通信装置123のグループを構成する(通信装置123をグルーピングする)タイミングは、時刻同期通信やシステムアプリケーションに関する実稼働時前の準備段階でもよいし、システム稼働中に入手可能な情報に応じて決める動的なタイミングでもよい。
なお、時刻同期手順以外の通信フローが存在する場合、各パケットの受信間隔が変化する可能性がある。この場合は、時刻同期手順以外の通信フローに関する情報をネットワーク構成情報記憶部151で保持することにより、キューイング発生判定部115は、ネットワーク中継装置121内のパケットの衝突を判定することができる。
時刻同期プロトコル以外のパケットが通信制御装置120宛である場合は、時刻同期プロトコル以外のパケットと時刻同期用のパケットとの受信間隔を求める際には、式(3)と式(5)において、パケットサイズSpを時刻同期プロトコル以外のパケットのパケットサイズとする。式(8)と式(9)のように、パケットの後端を受信した時刻と次のパケットの先端を受信した時刻とを用いて受信間隔を求める場合は、データサイズに影響はない。
図11は、時刻同期プロトコル以外のパケットが通信制御装置120宛ではない場合の通信フローの例を示す図である。図11に示すように、通信装置123bから通信制御装置120へ時刻同期プロトコルの通信フロー170があり、通信装置123cから通信装置123aへ時刻同期プロトコル以外の通信フロー171があるとする。さらに、通信制御装置120と通信装置123aは、時刻が同期しているものとする。なお、図11では、ネットワーク中継装置に121a、121bと異なる符号を付けている。
通信フロー170のパケットは、ネットワーク中継装置121a、121bにおいて、通信フロー171のパケットと衝突する可能性がある。このパケットの衝突によって、通信フロー170のパケットがネットワーク中継装置121a、121bでどれだけ遅延したかを推定することは、従来技術では難しいが、本実施例では可能である。この遅延の推定は、通信装置123aと通信制御装置120を同期させた上で、通信装置123aにおける通信フロー171のパケットの受信時刻を取得することにより、可能である。
通信制御装置120は、通信フロー170のパケットを受信した際に、通信装置123aに対して、通信フロー171のパケットを受信していないかを問い合わせる。受信している場合は、受信時刻を問い合わせる。通信装置123aが通信フロー171のパケットを受信しており、このパケットの受信時刻と通信制御装置120における時刻同期用パケットの受信時刻との差を式(10)の受信間隔Tとしたときに、この受信間隔Tが式(10)を満たす場合には、衝突が発生したとして時刻同期手順を再実行する。
このように、パケットを受信するのが異なる装置(通信制御装置120と通信装置123a)であっても、異なる装置間での2つのパケットの受信間隔を求めて、衝突が発生したか否かを推定することが可能である。
なお、通信制御装置120が通信装置123aに問い合わせを実行する条件は、時刻同期用パケットを受信したときであり、受信したときの毎回でもよいし、受信したときのうち前のパケットとの受信間隔が予め定めた所定値よりも大きい場合でもよい。又は、時刻同期用パケット中の時刻情報を基に、問い合わせを実行するか否かを判断してもよい。通信装置123と通信制御装置120が同期された後であれば、通信制御装置120においても同期対象との通信遅延を推定することができ、現在までの平均値よりも推定した値が大きい場合は、通信フロー171との衝突が発生したと考えられる。このとき、ネットワーク構成情報記憶部151は、通信装置123宛の通信フローのパケットサイズ、通信フロー171のパケットサイズ、及び通信装置123の接続関係等の情報を保持することができる。
図22は、時刻同期手順以外の通信フローが通信装置123間で発生し、通信制御装置120から通信装置123へ送信された時刻同期用パケット(Syncメッセージ)と衝突する場合の通信フローの例を示す図である。図22では、通信装置123cから通信装置123bへの通信フロー171と、通信制御装置120から通信装置123bへの時刻同期プロトコルの通信フロー170とが存在する。
このような場合、時刻同期プロトコルの通信フロー170のSyncメッセージが、ネットワーク中継装置121a、121b内で、通信フロー171のパケットと衝突する可能性があり、時刻同期プロトコルの通信フロー170は往路と復路での通信遅延が等しくなるとは限らない。このような場合には、例えば、通信装置123cが、Syncメッセージを受信した後、予め定めた所定の時間内に、通信フロー171のパケットを通信装置123bへ送信すればよい。このようにすれば、ネットワーク中継装置121内でのパケットの衝突を回避することができる。
また、時刻同期手順以外の通信フローが存在する場合の対策として、後述する実施例6で説明するTC(IEEE1588規格で定義されるTransparent Clock)を、他の通信フロー171が流れる部分に導入する方法もある。
以上説明したように、通信制御装置120がグループ構成部150を備えて通信装置123のグループを構成することで、パケットの衝突確率を低減させて、ネットワーク中継装置121を用いた構成でも時刻同期を実行することができる。
実施例3は、実施例1、2において、通信装置123を工夫した実施例である。実施例3で用いる図面において、実施例1、2と同一の符号は、特に断りのない限り、実施例1、2で説明した機能や要素等と同一であるので、説明を省略する。
図12は、実施例3における通信装置123の機能構成を示す図である。実施例3における通信装置123は、図5に示した実施例1における通信装置123の構成要素を備え、さらに時刻同期実行制御部180を備える。
時刻同期実行制御部180は、時刻同期処理部130のパケットの送信タイミングを制御する。送信タイミングは、通信制御装置120から通知される情報に基づいて制御してもよいし、時刻同期処理部130の動作に基づいて制御してもよい。
図13は、通信装置123の動作を示すフローチャートである。
はじめに、Syncメッセージを受信するまで待機する(S030)。
Syncメッセージを受信したら、Syncメッセージの受信時刻t2を計測して記憶する(S031)。
次に、時刻同期実行制御部180は、Delay_Reqメッセージの送信タイミングを制御する(S032)。具体的には、予め定めた所定時間だけ待機する。
所定時間の経過後に、Delay_Reqメッセージを通信制御装置120に送信する(S033)。
次に、Delay_Reqメッセージの送信時刻t3を計測して記録する(S034)。
次に、時刻同期用パケットを受信するまで待機する(S035)。
時刻同期用パケットを受信したら、受信したパケットがSyncメッセージかどうかを判定する(S036)。Syncメッセージであれば、通信制御装置120が時刻同期手順を再実行したと判断して、S031〜S035の手順を実行する。
S036において、受信した時刻同期用パケットがSyncメッセージでなければ、同期処理を実行する(S037)。同期処理手順は、既に述べた図15に示す通りである。すなわち、図13に記載していないSyncメッセージ又はFollow_Upメッセージの中の時刻t1(マスタの送信時刻)と、Delay_Respメッセージの中の時刻t4(マスタにおけるDelay_Reqメッセージの受信時刻)と、上記の時刻t2、t3とを用いて、通信制御装置120と時刻を同期する。
本実施例における通信装置123は、時刻同期実行制御部180により、Delay_Reqメッセージの送信タイミングを制御できること(S032)が特徴である。すなわち、時刻同期実行制御部180は、Syncメッセージを受信してからDelay_Reqメッセージを送信するまでの待機時間を制御できる。この特徴を用いて、他の通信装置123の時刻同期用パケットの衝突確率を低減することができる。
Delay_Reqメッセージを送信するまでの待機時間は、通信制御装置120が通知する情報に基づいて通信装置123が決定してもよいし、通信装置123が通信制御装置120に依らずに決定してもよい。
通信制御装置120は、Delay_Reqメッセージの受信間隔によって、時刻同期実行制御部180の待機時間を制御することができる。例えば、通信制御装置120は、Delay_Reqメッセージの受信間隔からパケットが衝突したと判定すれば、パケットが衝突した通信装置123の待機時間を、予め定めた所定時間だけ長くすることや短くすることができる。
また、通信制御装置120は、IEEE1588の仕様によって、時刻同期実行制御部180の待機時間を制御することができる。IEEE1588では、スレーブのDelay_Reqメッセージの送信周期を、マスタのSyncメッセージの送信周期を基に制御することができる。具体的には、マスタがSyncメッセージを送信する所定の周期に1度、スレーブがDelay_Reqメッセージを送信する。この仕様を活用し、例えば、通信制御装置120がパケットが衝突したと判定すれば、パケットが衝突した通信装置123のDelay_Reqメッセージの送信頻度を上げることや下げることで、Delay_Reqメッセージの送信タイミングを制御する。
また、通信装置123は、Delay_Reqメッセージの送信後にSyncメッセージを受信すれば、通信制御装置120がパケットが衝突したと判断して時刻同期手順を再実行したものと推定できる。従って、Delay_Reqメッセージの送信後にSyncメッセージを受信した際に、時刻同期実行制御部180の待機時間を予め定めた所定の時間だけ長くすることや短くする方法もある。又は、通信制御装置120は、パケットの衝突を検知したことを、明示的に通信装置123へ通知してもよい。
なお、全ての通信装置123が本実施例の時刻同期実行制御部180を備えている必要はなく、少なくとも一部の通信装置123が時刻同期実行制御部180を備えていれば、その効果を享受できる。また、この場合、時刻同期実行制御部180を備えた通信装置123の識別子をネットワーク構成情報記憶部151で保持してもよい。通信制御装置120は、ネットワーク構成情報記憶部151に保持された通信装置123の識別子を用いて時刻同期実行制御部180を備えた通信装置123を判別し、この通信装置123の時刻同期実行制御部180に対して、待機時間の指令を送信することができる。
また、通信装置123が送信するDelay_Reqメッセージの中に、通信制御装置120が時刻同期を再実行する際に送信するSyncメッセージに必要な情報を埋め込むことができる。このような情報の例としては、Syncメッセージの宛先に係わる通信装置123の識別子や、図8のS020で決定する送信対象のグループについての情報が挙げられる。例えば、通信装置123が送信するDelay_Reqメッセージの中に、この通信装置123が属するIEEE1588仕様のドメイン情報を乗せ、通信制御装置120は、この通信装置123からのパケットが衝突したと判断すると、Delay_Reqメッセージに乗せられたドメイン情報を利用して、再度、Syncメッセージを送信することができる。この方法では、通信制御装置120は、グループ構成部150に送信対象のグループを問い合わせる必要がないため、短時間でSyncメッセージを送信することができる。この場合、通信制御装置120は、予め通信装置123にドメイン情報等のグループ構成情報を通知しておいてもよい。
通信装置123のDelay_Reqメッセージの送信タイミングは、他の通信装置123が制御することもでき、また、自身又は他の通信装置123に限らず、専用の装置やネットワーク中継装置121が制御することもできる。以下では、説明の便宜上、通信装置123の時刻同期用パケットの送信タイミングを制御する装置を、「時刻同期制御装置190」と称して説明する。
図16は、時刻同期制御装置190を用いた分散制御システムの例を示す図である。時刻同期制御装置190は、ネットワーク122を介して、通信制御装置120と通信装置123a〜123dに接続されている。
図17は、時刻同期制御装置190の機能構成を示す図である。時刻同期制御装置190は、図3に示した通信部131と、図7に示したネットワーク構成情報記憶部151と、図12に示した時刻同期実行制御部180とを備える。時刻同期制御装置190は、ネットワーク上のパケットを監視し、時刻同期用パケットが衝突して時刻同期手順を実行している通信装置123を検知すれば、この通信装置123がDelay_Reqメッセージを送信するのを、予め定めた所定の時間だけ遅らせたり早めたりする。又は、通信制御装置120は、時刻同期用パケットが衝突したことを、明示的に時刻同期制御装置190に通知してもよい。
パケットの監視は、通信部131の受信部133をプロミスキャスモードに設定するなどして、ネットワーク上のパケットを受信することで実行する。時刻同期制御装置190は、通信装置123がDelay_Reqメッセージを送信したのを確認した後に、同じ通信装置123宛にSyncメッセージが送信されたのを確認した場合には、通信制御装置120がパケットが衝突したと判断して時刻同期手順を再実行したものと推定し、時刻同期用パケットの衝突が発生したと判定する。
他の通信装置123のDelay_Reqメッセージの送信タイミングを制御する方法の例には、IEEE802.3におけるPAUSEフレームを用いて、予め定めた所定の時間だけ、他の通信装置123の送信を停止する方法や、専用のプロトコルを用いる方法が挙げられる。専用のプロトコルを用いる場合は、通信相手の情報と、送信タイミングを制御するための時間情報(待機時間、又は送信する時刻等)を少なくとも用いる。又は、専用プロトコルのパケットを受信した時点で送信してもよい。この場合、通信装置123は、この専用プロトコルのパケットを受信するまでは送信処理を実行しないように構成してもよい。
時刻同期制御装置190は、全ての通信装置123を制御する必要はなく、一部の通信装置123を制御してもよい。
なお、複数の通信装置123のDelay_Reqメッセージの送信タイミングを制御する場合には、通信装置123の属性や、現在までの同期手順結果に基づいて制御することもできる。例えば、通信装置123のそれぞれに優先度を設定しておき、優先度に応じて通信装置123の待機時間を設定することができる。又は、現在までの時刻同期手順におけるパケットの衝突頻度や、通信装置123の備えるクロックの精度に応じて、待機時間を調整することができる。パケットの衝突頻度に応じて待機時間を調整する場合には、例えば、衝突していない通信装置123ほど、待機時間を短く設定する。クロックの精度に応じて待機時間を調整する場合には、例えば、クロック精度の高い通信装置123ほど、待機時間を短く設定する。Delay_Reqメッセージの送信タイミングを制御するのに必要な情報は、時刻同期制御装置190内のネットワーク構成情報記憶部151で管理され、保持される。
以上説明したように、本実施例でも、ネットワーク中継装置121を用いた分散制御システムにおいて、時刻同期をすることができる。さらに、通信装置123でパケットの送信タイミングを制御することにより、パケットが衝突する確率を低減するとともに、分散処理によって通信制御装置120の計算や制御に係わる負荷も低減することができる。
実施例4は、ネットワーク中継装置121において、パケットの処理時間を一定値とすることで、パケットの衝突による往復の通信遅延の差を低減する実施例である。実施例4で用いる図面において、実施例1〜3と同一の符号は、特に断りのない限り、実施例1〜3で説明した機能や要素等と同一であるので、説明を省略する。
ネットワーク中継装置121内で時刻同期用パケットがキューイングされると、時刻同期用パケットは、往路と復路とで遅延時間が異なり、通信遅延に差が発生する。本実施例では、必要に応じて処理遅延を大きくとり、時刻同期用パケットの往復の遅延の差を低減する。ただし、システムの通信性能を向上させるためには、ネットワーク中継装置121内での時刻同期用パケットの待機時間を短くすることが望ましい。そこで、本実施例では、通信制御装置120等によるパケットの衝突判定結果を用いて、待機時間を短くする。
図18は、本実施例におけるネットワーク中継装置121の機能構成を示す図である。ネットワーク中継装置121は、パケット識別部200、経路制御部201、バッファ202、図4に示したバッファ142、図12に示した時刻同期実行制御部180、及び計時部203を備える。経路制御部201には、入力側に3つのバッファ142(入力バッファ)が接続され、出力側に3つのバッファ142(出力バッファ)が接続される。
パケット識別部200は、予め設定されたパケットの特徴に基づいて、パケットの種類を識別する。経路制御部201は、パケットに格納された情報から出力先のバッファ142を選択して、パケットを転送する。バッファ202は、パケットを保持する。
計時部203は、時刻を測定する。パケット識別部200、経路制御部201、及び時刻同期実行制御部180は、計時部203から時刻を取得することができる。なお、図18において、計時部203と他の部(パケット識別部200、経路制御部201、及び時刻同期実行制御部180)との関係を示す線は、図示を省略している。
本実施例におけるネットワーク中継装置121の動作手順について説明する。はじめに、パケット識別部200に、識別するパケットの特徴を設定する。識別するパケットの特徴は、通信制御装置120又は通信装置123からネットワーク122を経由して設定してもよいし、ネットワーク中継装置121に対して直接設定してもよい。ネットワーク中継装置121に対して直接設定する場合には、図18に示さない入力手段が必要である。設定する情報は、通信制御装置120と通信装置123間の通信フローを識別する情報であり、送信元アドレスと送信先アドレス、IEEE1588におけるドメイン、VLANの識別子、及びマルチキャストアドレスが例示できる。
ネットワーク中継装置121のバッファ142(入力バッファ)にパケットが入力すると、パケット識別部200は、このパケットの特徴が予め設定された特徴に一致するかを判別する。一致した場合は、パケット識別部200は、経路制御部201と時刻同期実行制御部180に、一致したことと一致した条件(特徴)とを通知する。同時に、パケット識別部200は、バッファ142にパケットが入力した時刻Tinを計時部203から取得し、時刻Tinを経路制御部201に通知する。
経路制御部201は、パケット識別部200からの通知を受信すると、パケットをバッファ142(出力バッファ)に転送せずに、バッファ202に転送する。バッファ202へ転送したパケットをパケット141aとする。また、パケット141aを転送すべき出力バッファをバッファ142aとする。
パケット141aをバッファ202で保持する時間は、他のパケットによる遅延時間を考慮して決定する必要がある。他のパケットによる遅延時間とは、バッファ142に先行して存在するパケットと、パケット141a受信後にバッファ142へ転送したパケットとの通信処理時間である。
パケットをバッファ202に転送後、経路制御部201は、バッファ142aに存在するパケットの数とデータサイズ、及びパケット141a受信後にバッファ142aへ転送したパケットの数とデータサイズを、時刻同期実行制御部180へ通知する。
時刻同期実行制御部180は、これらの通知された情報を基に、これらのパケットによる通信処理時間dを計算し、目標出力時刻Toutまでの残り時間Rから通信処理時間dを減算して、待機時間Twを算出する。すなわち、待機時間Twは、式(11)で求めることができる。目標出力時刻Toutは、時刻Tinに予め定めた滞留時間αを加えることで求められる。滞留時間αは、固定した値としてもよいし、パケットの往復ごとに変えてもよい。
Tw=R−d (11)
残り時間Rは、現在時刻から目標出力時刻Toutまでの時間(R=Tout−(現在時刻))である。現在時刻は、計時部203から取得可能である。通信処理時間dは、例えば式(3)で求めることができる。
時刻同期実行制御部180は、算出した待機時間Twを経路制御部201に通知する。なお、後続のパケットを受信するたびに通信処理時間dが変わるため、その都度、時刻同期実行制御部180は、待機時間Twを計算し、経路制御部201に通知する。
経路制御部201は、現在時刻から待機時間Twが経過したら、パケット141aをバッファ142aへ転送する。
ここで考慮すべきことは、ある後続のパケットをバッファ142aへ転送する場合に、パケット141aを保持すべき残り時間を経過してしまう可能性があることである。例えば、パケット141aをあと50μs保持する必要があり、後続のパケットの処理時間が60μsであるような場合である。このような場合には、後続のパケットをバッファ142aへ転送すると、ネットワーク中継装置121での滞留時間αを一定にできない。このため、このような後続のパケットに対しては、バッファ142aへ転送せずに、パケット141aを転送するまで保持(ブロック)することを、対処法として例示できる。
その後、経路制御部201は、時刻同期実行制御部180から通知された待機時間Twだけ、パケットをバッファ202に保持し、待機時間Twの経過後に、出力先にしたがってパケットをバッファ142に出力する。経路制御部201は、パケットをバッファ142に出力する時間を決定するために、計時部203を用いる。
経路制御部201がパケットを出力する時間を決定してバッファ142に出力する方法の例としては、計時部203から取得した時刻Tinに上述の待機時間を加えて時刻Toutを求め、時刻Toutに計時部203から経路制御部201に待機時間Twが経過したことを通知する方法がある。又は、待機時間Twが経過するまでの時刻を、経路制御部201が計時部203から予め定めた所定の間隔で取得してもよい。
滞留時間αの時刻同期実行制御部180への設定方法の例としては、パケットの衝突を検知した通信制御装置120からネットワーク122を介して、待機時間Twを時刻同期実行制御部180に通知する方法が挙げられる。又は、時刻同期実行制御部180がネットワーク中継装置121内を流れるパケットを監視し、Delay_Reqメッセージが流れた後にSyncメッセージが逆向きに流れた通信の組み合わせに対して、予め定めた所定の時間を長く又は短くすることで、設定する方法もある。
なお、ネットワーク中継装置121は、滞留時間α又は待機時間Twを外部から取得できるように構成してもよい。滞留時間α又は待機時間Twは、ネットワーク中継装置121に何らかの接続手段を設けることで取得してもよい。また、ネットワーク中継装置121は、ネットワーク122を用いて通信により、滞留時間α又は待機時間Twを外部へ伝送してもよい。例えば、所定のパケットフォーマットを認識すると、そのパケット内に滞留時間α又は待機時間Twを格納する。システム管理者は、これらの情報を用いて、滞留時間α又は待機時間Twが特に長い場合に、システムへの影響を考慮し、システムやネットワークの構成を変更することができる。
通信フローの識別には、パケット識別部200を用いることができる。
以上説明したように、本実施例によれば、ネットワーク中継装置121での衝突による遅延差を低減させて時刻同期が可能な分散制御システムを構築することができる。また、ネットワーク中継装置121の待機時間を最適化することで、ネットワーク全体の通信性能の低下を低減することができる。
実施例5は、通信制御装置120と通信装置123間のネットワーク中継装置121を通る経路が複数存在するとき、通信経路を変更することでパケットの衝突の確率を低減する方法を示す実施例である。実施例5で用いる図面において、実施例1〜4と同一の符号は、特に断りのない限り、実施例1〜4で説明した機能や要素等と同一であるので、説明を省略する。
図19は、本実施例における分散制御システムの構成を示す図である。図19の分散制御システムでは、通信制御装置120と、2台の通信装置123a、123bと、4台のネットワーク中継装置121が、ネットワーク122を介して接続されている。
通信装置123aと通信制御装置120との通信経路は、経路210aと経路210bの2つである。また、通信装置123bと通信制御装置120との通信経路も、経路210aと経路210bの2つである。このとき、通信装置123aと通信装置123bで、通信経路210aと通信経路210bを使いわければ、ネットワーク中継装置121内でパケットが衝突する確率を低減することができる。
これは、静的ルーティング、専用のルーティングプロトコル、又はMPLS(Multi-Protocol Label Switching)等を用いることで実現できる。また、経路ごとにグループ識別子(マルチキャストアドレス等)を使いわけてもよい。又は、OpenFlowプロトコルにおけるコントローラにおいて、宛先を区別して転送先ポートを使いわけるルールを設定して実現してもよい。
また、SyncメッセージとDelay_Reqメッセージとで、すなわち往路と復路とで、経路を変更してもよい。例えば、通信制御装置120から通信装置123aにSyncメッセージを送信するときは通信経路210aを利用し、通信装置123aから通信制御装置120にDelay_Reqメッセージを送信するときは、通信経路210bを利用してもよい。このとき、通信経路210aと通信経路210bでの通信遅延は、試験的に求める等により取得し、同期計算時に利用する。
通信経路210aと通信経路210bは、通信制御装置120のパケットの衝突の判定結果に基づいて、使いわけることができる。例えば、パケットが衝突したと通信制御装置120が判定した場合には、対象の通信装置123aを異なるグループとして、別の通信経路を利用するようにネットワークを設定することができる。
本実施例には、ネットワーク中継装置121を用いて、時刻同期システムを構築できるという効果がある。
実施例6は、IEEE1588規格で定義されるTransparent Clock(以下、「TC」と略記する)と、TCではないネットワーク中継装置121を混載してネットワークを構成する実施例である。実施例6で用いる図面において、実施例1〜5と同一の符号は、特に断りのない限り、実施例1〜5で説明した機能や要素等と同一であるので、説明を省略する。
TCは、ネットワーク中継装置121中の処理遅延を、各パケットに格納する。このパケットを受け取った通信装置123は、この処理遅延についての情報を用いて、往復の遅延の差を求めることができる。
図20は、本実施例における分散制御システムの構成を示す図である。図20の分散制御システムでは、通信制御装置120と、3台の通信装置123a〜123cと、ネットワーク中継装置121と、TC220が、ネットワーク122を介して接続されている。
通信装置123a〜123cのそれぞれからのDelay_Reqメッセージの送信に着目すると、TC220では通信フロー221bと通信フロー221cのパケットが衝突する可能性があり、ネットワーク中継装置121では通信フロー221a、通信フロー221b、及び通信フロー221cが衝突する可能性がある。
ただし、TC220内でパケットが衝突しても、衝突によって生じた遅延のゆらぎは、TCの機能により補正することができる。一方で、ネットワーク中継装置121では、遅延のゆらぎの補正が困難である。
本実施例では、通信制御装置120が、通信フロー221a〜221cのパケットの受信間隔を測定し、式(10)によってパケットが衝突したかどうかを判定する。
このとき、通信フロー221aの時刻同期用パケットを受信した後に、通信フロー221bと通信フロー221cの一方又は両方のパケットを受信し、これらのパケットの受信間隔によって、パケットが衝突したと判定した場合は、通信フロー221aのパケットと衝突した通信フローのパケットを送信した通信装置に対して、時刻同期処理を再実行する。
同様に、通信フロー221bと通信フロー221cの一方又は両方のパケットを受信した後に、通信フロー221aのパケットを受信し、通信フロー221aのパケットが衝突したと判定した場合も、時刻同期処理を再実行する。これは、ネットワーク中継装置121内で、通信フロー221aのパケットと、通信フロー221bと通信フロー221cの少なくとも一方のパケットとが衝突したと推定されるためである。
一方で、通信フロー221bのパケットと通信フロー221cのパケットとが衝突した場合は、TC220の機能により、同期処理を再実行する必要がない。TC220の機能によってTC220内での通信遅延を取得できるため、これらのパケットが衝突したとしても、TC220内の通信遅延を基に補正が可能である。通信フロー221bと通信フロー221cにおける時刻同期用パケットは、パケット内にTC220内の通信遅延が格納される。
図24は、マスタとスレーブとの間のメッセージのやりとりを示す図であり、図15と同じ図である。ただし、図24には、往路(Syncメッセージ)のパケットに格納された通信遅延Ttcgと、復路(Delay_Reqメッセージ)のパケットに格納された通信遅延Ttcrと、片道の通信遅延tdとが示されている。
片道の通信遅延tdと時刻の差分tdiffは、図14、図15にも示した時刻t1、t2、t3、t4を用いて、式(12)と式(13)で表わされる。
td=((t4−t1)−(t3−t2)−Ttcr−Ttcg)/2 (12)
tdiff
=((t4−(Ttcr−Ttcg)+t1)―(t3+t2))/2 (13)
このとき、通信遅延tdは、TC220の通信遅延を除いた値となる。
Syncメッセージを送信する際には、マルチキャストで衝突がないとすれば、(Ttcr−Ttcg)がTC220内での衝突によって生じた遅延とすることができる。
このとき、ネットワーク構成情報記憶部151は、TC220、ネットワーク中継装置121、及び通信装置123の接続順等のネットワーク構成情報を保持して、上記したパケットの衝突の判定に利用する。
図23は、時刻同期に関係のない通信フローが存在する場合の通信フローの例を示す図である。図23には、2台のTC(TC220aとTC220b)が存在する。図23に示すように、時刻同期用パケットの通信フロー170a及び170bが、通信装置123a及び123bから通信制御装置120へそれぞれ存在する。さらに、時刻同期に関係のない通信フロー171が、通信装置123cから通信装置123dに存在する。
通信フロー171のパケットは、TC220a、220b内で、時刻同期フロー170a又は170bのパケットと衝突する可能性がある。通信制御装置120からは、通信フロー171が時刻同期フロー170a又は170bに与える影響を検出できないため、通常は時刻同期が困難となる。
しかし、図23に示すように、時刻同期に関係のない通信フローが流入する部分にTC220aとTC220bを設けることで、TC220aとTC220b内での遅延情報を時刻同期用パケットに格納することができる。このため、TC220内での衝突を考慮する必要がなく、ネットワーク中継装置121内での衝突のみを、上記の実施例で述べた方法によって判定すればよい。
従って、通信制御装置120は、通信フロー170a、170bの時刻同期用パケットの受信間隔を測定し、衝突していないと判定した場合は、時刻同期プロトコルを継続すればよい。通信装置123a、123bは、式(12)と式(13)を用いて、通信制御装置120と同期すればよい。
本実施例によれば、TCを用いることにより、時刻同期処理の再実行によるオーバーヘッドを低減することができる。さらに、システムには部分的にTCを導入すればよいので、専用装置であるTCの導入数は少なくてよいという効果もある。
実施例7は、IEEE1588のマスタとなる通信制御装置120を変更することにより、衝突確率を低減する実施例である。IEEE1588では、分散制御システムを構成する通信制御装置のうち1つがマスタとなる(図6のS001を参照)が、本実施例では、マスタとなる通信制御装置を他の通信制御装置に変更する。実施例7で用いる図面において、実施例1〜6と同一の符号は、特に断りのない限り、実施例1〜6で説明した機能や要素等と同一であるので、説明を省略する。
図21は、本実施例における分散制御システムの構成を示す図である。図21に示すシステムでは、時刻同期プロトコルを実行する装置として、通信制御装置120a〜120eを備える。通信制御装置120a〜120eは、いずれも図3又は図7に示した構成を持ち、ネットワーク中継装置121a、121b、121cを介して接続されている。本実施例では、IEEE1588におけるマスタの役割を通信制御装置120a〜120e間で移動させる。すなわち、マスタである通信制御装置をスレーブにし、スレーブである通信制御装置のうちの1つをマスタにする。なお、分散制御システムに接続されている装置の全てが通信制御装置120である必要はない(すなわち、分散制御システムに接続されている装置の全てがマスタの機能を備える必要はない)。
以下、マスタとなる通信制御装置を他の通信制御装置に変更する手順を説明する。
はじめに通信制御装置120cがマスタであるとし、図6の手順で同期処理を実行する。通信制御装置120a、120b、120d、及び120eは、経由するネットワーク中継装置の数(マスタである通信制御装置120cとの間にあるネットワーク中継装置の数)が、いずれも2である。このため、ネットワーク中継装置121a〜121cの処理性能や通信経路の条件が同程度であれば、全ての返信タイミングが重なるとネットワーク中継装置121bで通信制御装置120a、120b、120d、120eからの4つのパケットが衝突する可能性がある。
本実施例では、通信制御装置120cがこの衝突を検知した際に、マスタを通信制御装置120aに変更する。マスタが通信制御装置120aになれば、スレーブとなる残りの通信制御装置120b〜120eにおいて、経由するネットワーク中継装置の数(マスタである通信制御装置120aとの間にあるネットワーク中継装置の数)が分散し、パケットの衝突確率を低減することができる。
マスタを変更する方法は、少なくとも変更後の通信制御装置120を識別する専用のプロトコルを用いる方法でもよいし、IEEE1588のBest Master Clock(以下、「BMC」と称する)アルゴリズムにおいて、マスタを決めるために判定される指標値を通信制御装置120a〜120e間で意図的に調整する方法でもよい。BMCでは、ユーザが定義可能なパラメータがあり、これを利用することができる。このユーザ定義可能なパラメータを、専用のプロトコルを用いて、通信制御装置120a〜120e間で交換する方法を用いることもできる。
新しいマスタの選択方法は、例えば、通信制御装置120a〜120eにおいて、指標値を設定して算出し、この指標値が最も高い通信制御装置を選ぶ方法を挙げることができる。指標値の算出方法には、通信制御装置120a〜120e間のネットワーク中継装置の数、通信遅延、通信帯域、又はクロックの精度を用いることを例示できる。例えば、通信制御装置120a〜120e間のネットワーク中継装置の数の分散を求め、分散が最も大きい通信制御装置をマスタに選択する方法を用いることができる。
また、STP(Spanning Tree Protocol)、RSTP(Rapid Spanning Tree Protocol)、又は通信経路の障害等によってトポロジが変化した場合に、マスタを変更してもよい。
本実施例によれば、マスタを変更することにより、時刻同期を再実行するオーバーヘッドを低減することができ、ネットワーク中継装置を用いた分散制御システムで時刻同期を実行することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル、測定情報、算出情報等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。