以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。なお、これ以降の説明では、複数の同一の構成に対して言及する場合、構成123A,123Bのように表現することがある。また、それらを総称する場合は、構成123と表現する。
実施の形態1.
図1は、本実施の形態に従うシステムの一構成例を示す図である。本実施の形態に従うシステムは、例えば、工場内の生産設備、人工衛星および自動車の内部ユニットとして組み込まれる機器等に適用され得る。
本実施の形態に従うシステムは、コントローラー100と、エッジ機器101と、通信装置102と、ネットワークリソース103と、ゲートウェイサーバー104とを含む。当該システムは、インターネット105を介して、クラウド環境106にも接続され得る。
コントローラー100は、システム全体を管理する。コントローラー100は、例えば、PC(Personal Computer)、ワークステーション等であってもよいし、専用のハードウェアであってもよい。その場合、当該専用のハードウェアは、少なくとも1つのCPU(Central Processing Unit)、少なくとも1つのASIC(Application Specific Integrated Circuit)、少なくとも1つのFPGA(Field-Programmable Gate Array)を含んでもよいし、またはこれらの組み合わせによっても構成され得る。エッジ機器101は、例えば、センサー等であり、工場の生産設備の動作検出、自動車の衝突検知等の任意の用途に使用され得る。
通信装置102は、稼働系および待機系の通信処理部を備え、時分割でフレームを送受信する。本実施の形態において、通信装置102は、冗長性を高めるために通信処理部または通信処理部を含むシステム全体を2重化されている。これらの2重化された通信処理部のうち、稼働系の通信処理部は、通信装置102が正常に稼働している際に通信する。また、待機系の通信処理部は、稼働系の通信処理部のバックアップであり、稼働系の通信処理部に異常が発生した際に稼働する。稼働系の通信処理部の異常とは、通信処理の異常だけでなく、稼働系の通信処理部および稼働系の通信処理部に関連する任意のハードウェア(CPUやメモリー等)の故障を含み得る。通信装置102は、エッジ機器101との間でデータを送受信すると共に、ネットワークリソース103を介して、コントローラー100とも通信する。通信装置102は、通信処理のための装置でなくてもよく、通信機能を持つ任意の装置であってもよい。ある局面において、通信装置102は、通信処理部として、SoC(System-on-a-Chip)を備えてもよい。SoCは、複数の機能を1チップ上にまとめたものである。SoCは、例えば、CPUと、メモリーと、FPGA等の再構成可能な半導体装置と、通信部と、入出力ポートとを含み得る。他の局面において、通信装置102は、通信処理部として、SoM(System-on-Module)を備えていてもよい。SoMは、例えば、複数の部品を小型のPCB(Printed Circuit Board)上に配置したものであり、複数の機能をまとめたモジュールとして提供される。SoMは、例えば、CPUと、メモリーと、FPGA等の再構成可能な半導体装置と、通信部と、入出力ポートとを含み得る。
ネットワークリソース103は、システムの通信経路を構成する。ある局面において、ネットワークリソース103は、複数のスイッチおよびリピータ等によって構成され得る。ゲートウェイサーバー104は、システム内の機器と、外部機器との通信を仲介すると共に、セキュリティに関する機能を含み得る。ある局面において、ゲートウェイサーバー104は、通信ポリシー等の設定を記憶し、外部機器からのシステム内の機器に対する通信を制限し得る。同様に、ゲートウェイサーバー104は、システム内の機器から外部機器に対する通信も制限し得る。他の局面において、ゲートウェイサーバー104は、送受信するデータのウイスルチェックを実行し得る。
クラウド環境106は、ある局面において、複数のサーバーから構成されるデータセンターであってもよい。クラウド環境106上に仮想的に構成されたコントローラーが、コントローラー100に代わって、システム内の各機器を管理してもよい。
図2は、ネットワークリソース103の一構成例を示す図である。図2に示す例では、スイッチ201Aおよびスイッチ201Bを含む。ある局面において、スイッチ201は、TCP/IP(Transmission Control Protocol/Internet Protocol)またはUDP(User Datagram Protocol)等の通信プロトコルに従い通信処理を行なってもよい。他の局面において、スイッチ201は、SLMP(Seamless Message Protocol)等の通信プロトコルに従い通信処理を行なってもよい。他の局面において、スイッチ201は、CAN(Controller Area Network)、TSN(Time-Sensitive Networking)またはユーザー独自に定義した通信プロトコル等に従い通信処理を行なってもよい。図2の例では、スイッチ201A,201Bの2台がネットワークリソースを構成しているが、ネットワークリソースの構成例はこれに限られない。ネットワークリソースは、任意の台数の装置および通信プロトコルの組み合わせによって実現され得る。
図3は、通信装置102の一構成例を示す図である。通信装置102は、2つの通信処理部300を備える。以降の説明において、一方を稼働系300A、もう片方を待機系300Bと呼ぶ。総称する場合は、通信処理部300と呼ぶ。稼働系300Aおよび待機系300Bは、同一の構成である。通信装置102は、自装置の信頼性を高めるために、これら2つの通信処理部300を備える。本実施の形態において、通信装置102は、正常時は、稼働系300Aのみを使用して通信する。通信装置102は、稼働系300Aの通信処理部に異常が発生した場合、待機系300Bを使用して通信する。
通信処理部300は、CPU301と、ユーザーロジック302と、メモリー303と、ネットワーク処理部304と、他のロジック305と、ネットワークPHY(Physical Layer)306とを含む。通信処理部300は、エッジ機器101およびネットワークリソース103側の機器と通信する。
CPU301は、通信処理部300の全体の処理を制御する。CPU301は、メモリー303に格納されるプログラムおよびデータを実行または参照してもよい。ある局面において、CPU301は、組み込みCPUであってもよいし、FPGAによって構成されてもよい。
ユーザーロジック302は、例えば、FPGA等の構成を変更することによって実現された回路である。ユーザーロジック302は、用途によって様々な機能を含み得る。例えば、ユーザーロジック302は、エッジ機器101との通信および取得したデータの変換機能等を有していてもよい。ユーザーロジック302は、多くの場合、専用の機能を有し、通信処理部300が実行する処理の一部を行い、CPU301の負荷を軽減し得る。
メモリー303は、CPU301によって実行されるプログラムまたはユーザーロジック302等によって読み書きされるデータ等を格納し得る。ある局面において、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)が、メモリー303として使用されてもよい。
ネットワーク処理部304は、ネットワークリソース103側(以下、ネットワークリソース103側を「ネットワーク側」と呼ぶ)との通信に関する処理を実行する。他のロジック305は、通信処理部300に組み込む回路またはチップ等である。ネットワークPHY306は、例えば、実際の通信の信号を処理するチップである。
上記の稼働系300Aおよび待機系300Bを含む通信装置102は、工場設備および車載ネットワーク等において、幅広く利用されている。通信装置102は、様々な用途に使用することができるため、ユーザーは、用途に応じて通信装置102の通信処理部300の構成を変更したい場合がある。通信装置102は、例えば、コントローラー100等の他の機器から通信処理部300を再構成する命令を受信して、通信処理部300のFPGA等の半導体装置の再構成、プログラムの変更、通信経路、ネットワークリソース103側の機器との間の通信プロトコルおよび通信設定の変更、さらにはネットワークリソース103自体の通信プロトコルや通信設定の変更への対応(以降、これらを総称して、「ネットワーク構成の変更」と呼ぶ)が可能である。ある局面において、ネットワークリソース103自体の設定変更は、クラウド環境106から行なわれてもよい。
通信プロトコルの設定変更等が生じた場合、ネットワーク機器の入出力の期待動作、所謂ネットワーク機器に求められるリアルタイム性、信頼性等も変化する。そのため、ネットワーク設計者は、設定変更前に、設定変更後のネットワーク構成が予め定められた処理能力(リアルタイム性、信頼性)を備えているか否かを机上計算またはシミュレーション等により検証する必要がある。しかし、従来の方法では、変更後のネットワーク構成が予め定められた処理能力を備えているか否かを実際にテストする方法がないため、通信装置102のネットワーク構成を新しいネットワーク構成に安全に変更することができない。そこで、本実施の形態に従う通信装置102は、通信装置102の通信処理に影響のない待機系300Bに新しいネットワーク構成をテストする回路を生成し、当該新しいネットワーク構成が予め定められた処理能力を備えているか否かをテストする。
図4は、通信処理部300のテスト回路400の一構成例を示す図である。図4を参照して、新しいネットワーク構成をテストするテスト回路400の機能の概要について説明する。テスト回路400は、例えば、FPGA等の再構成可能な集積回路によって、待機系300Bに構成され得る。
待機系300Bに含まれるCPU301B〜305Bまでの全てまたは一部が変更されることにより、ネットワーク構成が変更される。ある局面において、ネットワーク構成の変更は、ユーザーロジック302Bまたはネットワーク処理部304Bの回路構成の変更を含んでもよいし、CPU301Bの実行するプログラムの変更を含んでもよいし、通信装置102の通信経路の変更を含んでもよい。これ以降、待機系300Bに構成される新しいネットワーク構成を、DUTと呼ぶ。
待機系300Bに構成されたDUTは、テスト回路400によってテストされる。DUTが予め定められた性能を満たす場合、稼働系300Aおよび待機系300Bの構成は、当該DUTと同一の構成に置き換えられ得る。その際、テスト回路400によってDUTの性能は確認されているため、構成変更後の稼働系300Aおよび待機系300Bは、テスト回路400を含まない。
テスト回路400は、エッジインターフェイス制御回路401と、再構成制御回路402と、タイマー403と、テスト結果出力回路404と、テスト制御回路405と、ネットワークインターフェイス制御回路406とを備える。
エッジインターフェイス制御回路401は、エッジ機器101側(以下、エッジ機器101側を「エッジ側」と呼ぶ)のインターフェイスと、DUTのエッジ側の論理回路との接続を論理的にON/OFFすることができる。エッジインターフェイス制御回路401は、DUTの性能テスト時には、エッジ側のインターフェイスと、DUTのエッジ側の論理回路との接続を論理的にOFFにする。
エッジ側のインターフェイスとDUTのエッジ側の論理回路とが論理的に接続されていないとき、DUTのエッジ側の論理回路は、テスト制御回路405に接続され、当該テスト制御回路405から模擬データの入力を受け付ける。逆に、エッジ側のインターフェイスと、DUTのエッジ側の論理回路とが論理的に互いに接続されているとき、DUTのエッジ側の論理回路は、エッジ機器101からデータを受信する。
再構成制御回路402は、通信処理部300の内部を論理的に書き換える。ある局面において、FPGA等の半導体装置のネットワークを介した再構成技術が、再構成制御回路402に用いられてもよい。
タイマー403は、DUTから時刻データを取得する。タイマー403は、DUTから取得した時刻データを元にカウンター回路を動作させ、取得した時刻データを正確に更新し、当該時刻データをテスト制御回路405に通知する。タイマー403の保有する時刻は、DUTの入出力データのタイムスタンプの生成に使用される。テスト回路400は、DUTから実際に入出力されるデータのタイムスタンプを確認することで、DUTの処理性能を正確に計測することができる。
テスト結果出力回路404は、テスト制御回路405からテスト結果データを取得し、ネットワーク側の通信プロトコルに従い、当該テスト結果データをパケット化し、ネットワークインターフェイス制御回路406を介して、ネットワーク側に送信する。テスト結果データは、例えば、コントローラー100により収集され得る。
ネットワークインターフェイス制御回路406は、ネットワーク側のインターフェイス(ネットワークPHY306B)と、DUTのネットワーク側の論理回路との接続を論理的にON/OFFすることができる。ネットワークインターフェイス制御回路406は、DUTの性能テスト時には、ネットワーク側のインターフェイスと、DUTのネットワーク側の論理回路との接続を論理的にOFFにする。
ネットワーク側のインターフェイスとDUTのネットワーク側の論理回路とが論理的に接続されていないとき、DUTのネットワーク側の論理回路は、テスト制御回路405に接続され、当該テスト制御回路405から模擬データを受信する。逆に、ネットワーク側のインターフェイスと、DUTのネットワーク側の論理回路とが論理的に接続されているとき、DUTのネットワーク側の論理回路は、ネットワーク側の機器からデータを受信する。
テスト制御回路405は、DUTの性能をテストするための制御信号およびテスト用の模擬データを出力する。模擬データは、待機系300Bがエッジ機器101から受信するデータを模したエッジ側模擬データと、待機系300Bがネットワークリソース側の機器から受信するデータを模したネットワーク側模擬データとを含む。
テスト制御回路405は、エッジインターフェイス制御回路401およびネットワークインターフェイス制御回路406を制御することで、DUTのエッジ側論理回路およびネットワーク側論理回路の接続先を切り替える。さらに、テスト制御回路405は、タイマー403の機能と連携し、指定の時刻に模擬データをDUTに入力する。また、テスト制御回路405は、DUTのエッジ側論理回路およびネットワーク側論理回路に対する入出力データのタイミングと、バス信号のアクセスの種類と、タイムスタンプとを関連付けて、これらの情報をテスト制御回路405またはテスト結果出力回路404に保存する。
図5は、待機系300Bにおける信号の流れの一構成例を示す図である。最初に、エッジ側の信号について説明する。テスト制御回路405は、エッジインターフェイステスト制御信号501により、エッジインターフェイス制御回路401の接続先を切り替える。
エッジインターフェイス制御回路401は、エッジ機器101と論理的に接続されている場合、エッジ機器101からエッジ入力データ502Aを受信し、エッジ機器101にエッジ出力データ503Aを送信する。その際に、エッジインターフェイス制御回路401は、エッジ入力データのミラー502Bと、エッジ出力データのミラー503Bとをテスト制御回路405に送信し得る。
エッジインターフェイス制御回路401は、テスト制御回路405と論理的に接続されている場合、テスト制御回路405からエッジ入力模擬データ502Cを受信する。その際、エッジインターフェイス制御回路401は、エッジ機器101とは論理的に接続されていないため、エッジ機器101からエッジ入力データ502Aを受信しない。
待機系300Bの内部通信において、エッジインターフェイス制御回路401は、DUTのエッジ側論理回路、例えばユーザーロジック302Bと通信する。エッジインターフェイス制御回路401は、エッジ入力データ502Dをユーザーロジック302Bに送信する。エッジ入力データ502Dは、エッジ入力データ502Aまたはエッジ入力模擬データ502Cのいずれかである。エッジインターフェイス制御回路401は、ユーザーロジック302Bから、エッジ出力データ503Dを受信する。エッジインターフェイス制御回路401は、エッジインターフェイステスト制御信号501に応じて、当該エッジ出力データ503Dをエッジ機器101およびテスト制御回路405に送信する。
次に、ネットワーク側の信号について説明する。テスト制御回路405は、ネットワークインターフェイステスト制御信号504により、ネットワークインターフェイス制御回路406の接続先を切り替える。
ネットワークインターフェイス制御回路406は、ネットワークPHY306Bに論理的に接続されている場合、ネットワーク側の機器からネットワーク受信データ505Aを受信し、ネットワーク側の機器にネットワーク送信データ506Aを送信する。その際に、ネットワークインターフェイス制御回路406は、ネットワーク受信データのミラー505Bと、ネットワーク送信データのミラー506Bとを、テスト制御回路405に送信し得る。
ネットワークインターフェイス制御回路406は、テスト制御回路405に論理的に接続されている場合、テスト制御回路405からネットワーク受信模擬データ505Cを受信する。その際、ネットワークインターフェイス制御回路406は、ネットワークリソース103には論理的に接続されていないため、ネットワーク側の機器からネットワーク受信データ505Aを受信しない。
待機系300Bの内部通信において、ネットワークインターフェイス制御回路406は、DUTのネットワーク側論理回路、例えばネットワーク処理部304Bと通信する。ネットワークインターフェイス制御回路406は、ネットワーク受信データ505Dをネットワーク処理部304Bに送信する。ネットワーク受信データ505Dは、ネットワーク受信データ505Aまたはネットワーク受信模擬データ505Cのいずれかである。ネットワークインターフェイス制御回路406は、ネットワーク処理部304Bから、ネットワーク送信データ506Dを受信する。ネットワークインターフェイス制御回路406は、ネットワークインターフェイステスト制御信号504に応じて、当該ネットワーク送信データ506Dをネットワーク側の機器およびテスト制御回路405に送信する。
テスト制御回路405は、ネットワーク性能プロファイリング510を内部または外部に有する。テスト制御回路405は、当該ネットワーク性能プロファイリング510に基づいて、エッジインターフェイス制御回路401およびネットワークインターフェイス制御回路406の接続の制御と、エッジ入力模擬データ502Cおよびネットワーク受信模擬データ505Cの生成とを行なう。
テスト制御回路405は、タイマー403から時刻データ511を取得し、ネットワーク性能プロファイリング510に基づいて実行したDUTのテスト結果データ512をテスト結果出力回路404に送信する。テスト結果出力回路404は、受信したテスト結果データ512のフォーマットを変換して、テスト結果データパケット513を生成する。テスト結果出力回路404は、当該テスト結果データパケット513をネットワークインターフェイス制御回路406およびネットワークPHY306Bを介して、ネットワーク側の機器、例えば、コントローラー100、管理者のPCまたはクラウド環境106等に送信する。
図6は、エッジインターフェイス制御回路401の一構成例を示す図である。エッジインターフェイス制御回路401は、入力信号選択回路601と、出力信号選択回路602と、エッジインターフェイスプロトコル変換回路603と、固定出力値生成回路604とを含む。
入力信号選択回路601は、エッジ入力データ502Aおよびエッジ入力模擬データ502Cの入力を受け付け、エッジ入力データ502Dを出力する。エッジ入力データ502Aは、エッジ入力データのミラー502Bとしてテスト制御回路405にも入力される。さらに、入力信号選択回路601は、制御信号として、エッジインターフェイステスト制御信号501の入力を受け付ける。入力信号選択回路601は、エッジインターフェイステスト制御信号501に基づいて、エッジ入力データ502Aまたはエッジ入力模擬データ502Cのいずれかをエッジ入力データ502Dとして出力する。
ある局面において、入力信号選択回路601は、エッジインターフェイステスト制御信号501の論理値がHIGHのとき、エッジ入力データ502Aをエッジ入力データ502Dとして出力し、エッジインターフェイステスト制御信号501の論理値がLOWのとき、エッジ入力模擬データ502Cをエッジ入力データ502Dとして出力してもよい。他の局面において、入力信号選択回路601は、エッジインターフェイステスト制御信号501の論理値がLOWのとき、エッジ入力データ502Aをエッジ入力データ502Dとして出力し、エッジインターフェイステスト制御信号501の論理値がHIGHのとき、エッジ入力模擬データ502Cをエッジ入力データ502Dとして出力してもよい。
エッジ入力データ502Aがエッジ入力データ502Dとして出力される場合、DUTは、実際にエッジ機器101と通信し、通常時の動作状態で稼働している。逆に、エッジ入力模擬データ502Cがエッジ入力データ502Dとして出力される場合、DUTは、外部のエッジ機器101からは論理的に遮断され、代わりにテスト制御回路405との間で模擬データを送受信する。
エッジインターフェイスプロトコル変換回路603は、エッジ入力模擬データ502Cの信号をエッジ側の通信プロトコルに従う形式に変換する。ある局面において、エッジ機器101は、SPI(Serial Peripheral Interface)、I2C(Inter-Integrated Circuit)またはUART(Universal Asynchronous Receiver/Transmitter)等の通信プロトコルを使用し得る。エッジインターフェイスプロトコル変換回路603は、エッジ入力模擬データ502Cの信号をエッジ機器101の使用するこれらの通信プロトコルに従う形式に変換する。
出力信号選択回路602は、エッジ出力データ503Dおよび固定値信号610の入力を受け付け、エッジ出力データ503Aを出力する。エッジ出力データ503Dは、エッジ出力データのミラー503Bとしてテスト制御回路405にも入力される。さらに、出力信号選択回路602は、制御信号として、エッジインターフェイステスト制御信号501の入力を受け付ける。出力信号選択回路602は、エッジインターフェイステスト制御信号501に基づいて、エッジ出力データ503Dまたは固定値信号610のいずれかをエッジ出力データ503Aとして出力する。
ある局面において、出力信号選択回路602は、エッジインターフェイステスト制御信号501の論理値がHIGHのとき、エッジ出力データ503Dをエッジ出力データ503Aとして出力し、エッジインターフェイステスト制御信号501の論理値がLOWのとき、固定値信号610をエッジ出力データ503Aとして出力してもよい。他の局面において、出力信号選択回路602は、エッジインターフェイステスト制御信号501の論理値がLOWのとき、エッジ出力データ503Dをエッジ出力データ503Aとして出力し、エッジインターフェイステスト制御信号501の論理値がHIGHのとき、固定値信号610をエッジ出力データ503Aとして出力してもよい。
エッジ出力データ503Dがエッジ出力データ503Aとして出力される場合、DUTは、実際にエッジ機器101と通信し、通常時の動作状態で稼働している。逆に、固定値信号610がエッジ出力データ503Aとして出力される場合、DUTと外部のエッジ機器101との接続は、論理的に遮断され、代わりにテスト制御回路405との間で模擬データを送受信する。
固定出力値生成回路604は、DUTとエッジ機器101との接続が遮断されている間に、エッジ機器101に送信するための固定値信号610を生成する。固定値信号610は、通信装置102、具体的には待機系300Bのエッジ側インターフェイスが動作していないことを示す信号であってもよい。その場合、固定値信号610は、固定値出力(論理値HIGH)の信号であってもよいし、固定値出力(論理値LOW)の信号であってもよいし、論理値HIGHと論理値LOWとを交互に繰り返す信号であってもよい。
テスト制御回路405は、エッジ入力データのミラー502Bおよびエッジ出力データのミラー503Bと、タイマーから取得した時刻データ511とに基づいて、DUTがエッジ機器101と通信したタイムスタンプを取得する。
上記のように、エッジインターフェイス制御回路401は、入力信号選択回路601および出力信号選択回路602を用いて、DUTのエッジ側のインターフェイスと、エッジ機器101との接続を遮断し、代わりに、DUTのエッジ側のインターフェイスと、テスト制御回路405とを接続する。当該機能により、待機系300Bは、外部のエッジ機器101に影響を与えることなく、エッジ入力模擬データ502Cを用いて、DUTの性能をテストすることができる。
図7は、ネットワークインターフェイス制御回路406の一構成例を示す図である。ネットワークインターフェイス制御回路406は、入力信号選択回路701と、出力信号選択回路702と、ネットワークインターフェイスプロトコル変換回路703と、固定出力値生成回路704とを含む。
入力信号選択回路701は、ネットワーク受信データ505Aおよびネットワーク受信模擬データ505Cの入力を受け付け、ネットワーク受信データ505Dを出力する。ネットワーク受信データ505Aは、ネットワーク受信データのミラー505Bとしてテスト制御回路405にも入力される。さらに、入力信号選択回路701は、制御信号として、ネットワークインターフェイステスト制御信号504の入力を受け付ける。入力信号選択回路701は、ネットワークインターフェイステスト制御信号504に基づいて、ネットワーク受信データ505Aまたはネットワーク受信模擬データ505Cのいずれかをネットワーク受信データ505Dとして出力する。
ある局面において、入力信号選択回路701は、ネットワークインターフェイステスト制御信号504の論理値がHIGHのとき、ネットワーク受信データ505Aをネットワーク受信データ505Dとして出力し、ネットワークインターフェイステスト制御信号504の論理値がLOWのとき、ネットワーク受信模擬データ505Cをネットワーク受信データ505Dとして出力してもよい。他の局面において、入力信号選択回路701は、ネットワークインターフェイステスト制御信号504の論理値がLOWのとき、ネットワーク受信データ505Aをネットワーク受信データ505Dとして出力し、ネットワークインターフェイステスト制御信号504の論理値がHIGHのとき、ネットワーク受信模擬データ505Cをネットワーク受信データ505Dとして出力してもよい。
ネットワーク受信データ505Aがネットワーク受信データ505Dとして出力される場合、DUTは、実際にネットワーク側の機器と通信し、通常時の動作状態で稼働している。より具体的には、DUTのネットワーク処理部304Bは、ネットワークPHY306Bと通信が可能な状態である。逆に、ネットワーク受信模擬データ505Cがネットワーク受信データ505Dとして出力される場合、DUTとネットワーク側の機器との接続は、論理的に遮断され、代わりにテスト制御回路405と模擬データを送受信する。より具体的には、DUTのネットワーク処理部304Bは、ネットワークPHY306Bと通信ができず、代わりに、テスト制御回路405と通信が可能な状態である。
ネットワークインターフェイスプロトコル変換回路703は、ネットワーク受信模擬データ505Cの信号をネットワーク側の通信プロトコルに従う形式に変換する。ある局面において、ネットワーク側の機器は、イーサーネット(登録商標)または独自の通信プロトコル等を使用し得る。ネットワークインターフェイスプロトコル変換回路703は、ネットワーク受信模擬データ505Cの信号をネットワーク側の機器の使用するこれらの通信プロトコルに従う形式に変換する。
出力信号選択回路702は、ネットワーク送信データ506D、固定値信号710およびテスト結果データ512の入力を受け付け、ネットワーク送信データ506Aを出力する。ネットワーク送信データ506Dは、ネットワーク送信データのミラー506Bとしてテスト制御回路405にも入力される。さらに、出力信号選択回路702は、制御信号として、ネットワークインターフェイステスト制御信号504の入力を受け付ける。出力信号選択回路702は、ネットワークインターフェイステスト制御信号504に基づいて、ネットワーク送信データ506Dまたは固定値信号710のいずれかをネットワーク送信データ506Aとして出力する。
ある局面において、出力信号選択回路702は、ネットワークインターフェイステスト制御信号504の論理値がHIGHのとき、ネットワーク送信データ506Dをネットワーク送信データ506Aとして出力し、ネットワークインターフェイステスト制御信号504の論理値がLOWのとき、固定値信号710をネットワーク送信データ506Aとして出力してもよい。他の局面において、出力信号選択回路702は、ネットワークインターフェイステスト制御信号504の論理値がLOWのとき、ネットワーク送信データ506Dをネットワーク送信データ506Aとして出力し、ネットワークインターフェイステスト制御信号504の論理値がHIGHのとき、固定値信号710をネットワーク送信データ506Aとして出力してもよい。
ネットワーク送信データ506Dがネットワーク送信データ506Aとして出力される場合、DUTは、実際にネットワークリソース103側の機器と通信し、通常時の動作状態で稼働している。逆に、固定値信号710がネットワーク送信データ506Aとして出力される場合、DUTと、ネットワークリソース103側の外部機器との接続は、論理的に遮断され、代わりにテスト制御回路405との間で模擬データを送受信する。
テスト結果データ512は、DUTのテスト結果に関するデータであり、テスト結果出力回路404から、ネットワークPHY306Bを介して、ネットワークリソース103側の機器に送信される。ある局面において、テスト結果出力回路404は、DUTの性能テストの終了後に、テスト結果データ512をネットワークリソース103側の機器、例えば、コントローラー100に送信してもよい。他の局面において、出力信号選択回路702は、ネットワーク送信データ506D、固定値信号710およびテスト結果データ512のいずれかを出力信号として選択するために、テスト制御回路405から3種類のネットワークインターフェイステスト制御信号504の入力を受け付けてもよい。
固定出力値生成回路604は、DUTとネットワークリソース103側の機器との接続が遮断されている間に、ネットワークリソース103側の機器に送信するための固定値信号710を生成する。固定値信号710は、通信装置102、具体的には待機系300Bのネットワーク側インターフェイスが動作していないことを示す信号であってもよい。その場合、固定値信号710は、固定値出力(論理値HIGH)の信号であってもよいし、固定値出力(論理値LOW)の信号であってもよいし、論理値HIGHと論理値LOWとを交互に繰り返す信号であってもよい。
テスト制御回路405は、ネットワーク受信データのミラー505Bおよびネットワーク送信データのミラー506Bと、タイマーから取得した時刻データ511とに基づいて、DUTが、ネットワーク側の外部機器と通信したタイムスタンプを取得する。
上記のように、ネットワークインターフェイス制御回路406は、入力信号選択回路701および出力信号選択回路702を用いて、DUTのネットワーク側のインターフェイスとネットワークPHY306Bとの接続を遮断し、代わりに、DUTのネットワーク側のインターフェイスと、テスト制御回路405とを接続する。当該機能により、待機系300Bは、ネットワーク側の機器に影響を与えることなく、ネットワーク受信模擬データ505Cを用いて、DUTの性能をテストすることができる。
図8は、タイマー403の一構成例を示す図である。タイマー403は、カウンター回路801を含む。タイマー403は、待機系300B内のバスを介して、時刻データに関する情報800と、バス情報802とを取得する。
時刻データに関する情報800は、時刻データと、時刻データセット情報と、時刻データリセット情報とを含み得る。タイマー403は、時刻データ取得の制御信号による指示に基づいて、バスを介して、CPU301B等が管理している時刻データを取得する。タイマー403は、カウンター回路801に保存している現在時刻のデータを取得した時刻データで上書きする。時刻データセット情報は、カウンター回路801に保存している現在時刻のデータを予め定められた値に上書きするための情報である。タイマー403は、時刻データセット情報に基づいて、カウンター回路801に保存している現在時刻のデータを予め定められた時刻で上書きする。時刻データリセット情報は、カウンター回路801に保存している現在時刻をリセットするための情報である。タイマー403は、時刻データリセット情報に基づいて、カウンター回路801に保存している現在時刻のデータをリセットする(カウンターの値を0にする)。
バス情報802は、タイマー403の各種設定等を含み得る。カウンター回路801は、セットされた時刻をカウントアップしていき、現在時刻を更新する。タイマー403は、カウンター回路801が更新している現在時刻を含む時刻データ511をテスト制御回路405に送信する。
上述のように、タイマー403は、テスト制御回路405に正確なシステム時刻を提供する。当該機能により、テスト制御回路405は、DUTの各種入出力処理の完了時刻を正確に取得することができ、DUTの性能を厳密にテストすることができる。
図9は、テスト制御回路405の一構成例を示す図である。テスト制御回路405は、テストコントローラー901と、第1のメモリー902と、第2のメモリー903と、第3のメモリー904と、第4のメモリー905と、第1のタイミング制御回路906と、第2のタイミング制御回路907と、第5のメモリー908と、第6のメモリー909と、第7のメモリー910と、第8のメモリー911と、テスト結果出力部912とを含む。
テストコントローラー901は、テスト制御回路405内の各構成要素を制御する。一例として、テストコントローラー901は、エッジインターフェイステスト制御信号501と、ネットワークインターフェイステスト制御信号504と、各テストシーケンスと、パケットキャプチャー条件と、各メモリーへのライトイネーブル信号930と、テスト実行イネーブル信号940と、テスト結果出力制御信号950とを生成する。さらに、テストコントローラー901は、各種メモリーに書き込む情報の生成および書き込み処理を実行し得る。
各テストシーケンスは、DUTに対して行なわれる性能テストの手順である。パケットキャプチャー条件は、DUTに対して行なわれるテストにおいて、検証するパケットもしくは信号の取得条件である。各メモリーへのライトイネーブル信号930は、第1のメモリー902〜第4のメモリー905への設定書き込みをイネーブルにする。テスト実行イネーブル信号940は、第1のタイミング制御回路906〜第8のメモリー911までをイネーブルにして、テスト制御回路405にテスト実行を開始させる。
第1のメモリー902は、DUTのエッジ側インターフェイスに対するエッジ入力模擬データ502Cのタイミングと、システム時刻とを対応させて記憶する。第1のメモリー902は、格納する情報として、システム時刻情報と、送信元情報と、エッジ入力模擬データ502Cの種類とを含み得る。テスト制御回路405は、第1のメモリー902の設定に基づいて、エッジ入力模擬データ502Cを生成し得る。ある局面において、システム時刻情報は、時分割の通信におけるタイミングであってもよい。一例として、第1のメモリー902への登録データは、時刻情報「t2〜t3」、送信元情報「エッジ機器101」およびデータの種類「応答データ」等であってもよい。
第2のメモリー903は、DUTのネットワーク側インターフェイスに対するネットワーク受信模擬データ505Cのタイミングと、システム時刻とを対応させて記憶する。第2のメモリー903は、格納する情報として、システム時刻情報と、送信元情報と、ネットワーク受信模擬データ505Cの種類とを含み得る。テスト制御回路405は、第2のメモリー903の設定に基づいて、ネットワーク受信模擬データ505Cを生成し得る。ある局面において、システム時刻情報は、時分割の通信におけるタイミングであってもよい。一例として、第1のメモリー902への登録データは、時刻情報「t1〜t2」、送信元情報「コントローラー100」およびデータの種類「エッジデータ取得要求」等であってもよい。他の例として、第1のメモリー902への登録データは、時刻情報「t7〜t8」、送信元情報「機器B」およびデータの種類「制御データ」等であってもよい。
第3のメモリー904は、テスト制御回路405が、DUTの性能テスト時において、ネットワーク側の通信においてキャプチャーするパケットの条件を格納する。第3のメモリー904に登録されたパケットが、DUTの性能テスト時に、第5のメモリー908に書き込まれる。テスト制御回路405は、第3のメモリー904に登録されているDUTの入出力パケットをキャプチャーすることで、当該キャプチャーしたパケットが時分割の通信における期待したタイミングで処理されているか否かを検出することができる。例えば、テスト制御回路405は、DUTが受信したパケットの時刻およびDUTが送信する応答パケットの送信時の時刻の両方を確認し、これらの時刻を比較することでDUTが予め定められた性能を満たしているか否かをテストできる。なお、DUTと外部の機器との接続が遮断されている場合、第2のメモリー903に送受信の模擬データが格納されるため、キャプチャーは不要である。
第4のメモリー905は、時分割の通信におけるネットワーク側に出力するパケットのタイミングの期待値をシステム時刻と対応させて格納する。第4のメモリー905は、格納する情報として、ID(Identifier)と、最小時刻と、最大時刻と、ネットワーク送信データ506Aの種類とを含む。IDは、後述する第6のメモリー909のIDと関連付けられる。テスト制御回路405は、最小時刻から最大時刻までの間に、DUTがネットワーク送信データ506Aを出力した場合、DUTが予め定められた性能を満たすとみなす。そうでない場合、テスト制御回路405は、DUTが予め定められた性能を満たしていないとみなす。一例として、第4のメモリー905への登録データは、最小時刻「t3」、最大時刻「t4」およびデータの種類「エッジ取得データ」等であってもよい。この場合、エッジ取得データの期待される送信タイミングは、時刻t3〜t4の間になる。他の例として、第4のメモリー905への登録データは、最小時刻「t9」、最大時刻「t10」およびデータの種類「制御応答」等であってもよい。この場合、制御応答の期待される送信タイミングは、時刻t9〜t10の間になる。上記の第1のメモリー902〜第4のメモリー905は、ネットワーク性能プロファイリング510に含まれ得る。
第1のタイミング制御回路906は、エッジ入力模擬データ502Cを生成する。第1のタイミング制御回路906は、テストコントローラー901が、テスト実行イネーブル信号940をイネーブルにしているときに動作する。第1のタイミング制御回路906は、第1のメモリー902に予め登録されているデータの種類ごとの時刻情報と、現在時刻とを比較し、時刻が一致したエッジ入力模擬データ502Cを出力する。
第2のタイミング制御回路907は、ネットワーク受信模擬データ505Cを生成する。第2のタイミング制御回路907は、テストコントローラー901が、テスト実行イネーブル信号940をイネーブルにしているときに動作する。第2のタイミング制御回路907は、第2のメモリー903に予め登録されているデータの種類ごとの時刻情報と、現在時刻とを比較し、時刻が一致したネットワーク受信模擬データ505Cを出力する。
第5のメモリー908は、第3のメモリー904に予め登録されている条件と一致するパケットの送受信が発生した場合、当該パケットと、送受信時刻とを関連付けて格納する。第5のメモリー908は、格納する情報として、キャプチャー時刻と、送信/受信の種類と、送信元/送信先と、送受信データの種類とを含む。第5のメモリー908は、テストコントローラー901が、テスト実行イネーブル信号940をイネーブルにしているときに動作する。第5のメモリー908は、一連の通信をセットとして格納してもよい。
第5のメモリー908の期待値を満たすパケットに関する格納データの一例として、以下のような第1のパケット〜第4のパケットの情報を含んでもよい。第1のパケットは、キャプチャー時刻「t1」、送信/受信の種類「受信」、送信元/送信先「コントローラー100」および送受信データの種類「エッジデータ取得要求」である。第2のパケットは、キャプチャー時刻「t4」、送信/受信の種類「送信」、送信元/送信先「コントローラー100」および送受信データの種類「エッジ取得データ」である。第3のパケットは、キャプチャー時刻「t7」、送信/受信の種類「受信」、送信元/送信先「機器B」および送受信データの種類「制御データ」である。第4のパケットは、キャプチャー時刻「t9」、送信/受信の種類「送信」、送信元/送信先「機器B」および送受信データの種類「制御応答」である。
第5のメモリー908の期待値を満たさないパケットに関する格納データの一例として、以下のような第5のパケット〜第8のパケットの情報を含んでもよい。第5のパケットは、キャプチャー時刻「t1」、送信/受信の種類「受信」、送信元/送信先「コントローラー100」および送受信データの種類「エッジデータ取得要求」である。第6のパケットは、キャプチャー時刻「t5」、送信/受信の種類「送信」、送信元/送信先「コントローラー100」および送受信データの種類「エッジ取得データ」である。第7のパケットは、キャプチャー時刻「t7」、送信/受信の種類「受信」、送信元/送信先「機器B」および送受信データの種類「制御データ」である。第8のパケットは、キャプチャー時刻「t10」、送信/受信の種類「送信」、送信元/送信先「機器B」および送受信データの種類「制御応答」である。上記の第6のパケットは、通信第4のメモリー905の、「エッジ取得データ」の最小時刻「t3」および最大時刻「t4」の範囲を逸脱しているため、期待値を満たしていないことがわかる。
第6のメモリー909は、第4のメモリー905と、第5のメモリー908とに基づいて、キャプチャーしたパケットが、期待値に対してどの程度の余裕があるかを算出した情報を格納する。第6のメモリー909は、格納する情報として、IDと、期待値比較結果と、最小時刻に対する余裕時間と、最大時刻に対する余裕時間と、送受信データの種類とを含む。期待値比較結果は、期待値を満たすか否かのフラグ情報である。最小時刻に対する余裕時間は、式「実測値−最小時刻」で算出される。最大時刻に対する余裕時間は、式「最大時刻−実測値」で算出される。
第6のメモリー909の期待値を満たすパケットに関する格納データの一例として、以下のような第9のパケットおよび第10のパケットの情報を含んでもよい。第9のパケットは、ID「exp1」、期待値比較結果「OK」、最小時刻に対する余裕時間「t4−t3」、最大時刻に対する余裕時間「0」、送受信データの種類「エッジ取得データ」である。第10のパケットは、ID「exp2」、期待値比較結果「OK」、最小時刻に対する余裕時間「0」、最大時刻に対する余裕時間「t10−t9」、送受信データの種類「制御応答」である。
第6のメモリー909の期待値を満たさないパケットに関する格納データの一例として、以下のような第11のパケットおよび第12のパケットの情報を含んでもよい。第11のパケットは、ID「exp3」、期待値比較結果「NG」、最小時刻に対する余裕時間「t5−t3」、最大時刻に対する余裕時間「t4−t5(時間超過)」、送受信データの種類「エッジ取得データ」である。第12のパケットは、ID「exp4」、期待値比較結果「OK」、最小時刻に対する余裕時間「t10−t9」、最大時刻に対する余裕時間「0」、送受信データの種類「制御応答」である。
第7のメモリー910は、DUTの性能テスト時に、DUTのエッジ側インターフェイスで発生したデータの入出力情報と、入出力時刻とを関連付けて格納する。第7のメモリー910は、格納する情報として、キャプチャー時刻と、入力/出力の種類と、送信元/送信先と、送受信データの種類とを含む。第7のメモリー910は、テストコントローラー901が、テスト実行イネーブル信号940をイネーブルにしているときに動作する。第7のメモリー910は、一連の通信をセットとして格納してもよい。一例として、第7のメモリー910に格納されるデータは、キャプチャー時刻「t2」、入力/出力の種類「出力」、送信元/送信先「エッジ機器101」、送受信データの種類「データ取得要求」等であってもよい。他の例として、第7のメモリー910に格納されるデータは、キャプチャー時刻「t3」、入力/出力の種類「入力」、送信元/送信先「エッジ機器101」、送受信データの種類「応答データ」等であってもよい。
テスト結果を受信する機器は、第6のメモリー909に格納される情報と、第7のメモリー910に格納される情報とに基づいて、エッジ側の入出力およびネットワーク側の通信のいずれがボトルネックになっているかを解析することができる。
第8のメモリー911は、DUTの性能テスト時に発生した待機系300Bのバスに対するアクセスの情報と、システム時刻とを関連付けて格納する。DUTは、バスを通信以外の用途にも使用し得る。そのため、バスの使用タイミングが、DUTの通信処理性能のボトルネックにもなり得る。そのため、テスト制御回路405は、バスの使用に起因するボトルネックの解析を容易にするために、第8のメモリー911に、当該バスに対するアクセス情報を格納する。第8のメモリー911は、格納する情報として、キャプチャー時刻と、アクセス元と、アクセス先と、アクセス種別と、アクセスサイズとを含む。第8のメモリー911は、テストコントローラー901が、テスト実行イネーブル信号940をイネーブルにしているときに動作する。
一例として、第8のメモリー911に格納されるデータは、キャプチャー時刻「t1」、アクセス元「CPU301」、アクセス先「ネットワーク処理部304」、アクセス種別「バーストリード」、アクセスサイズ「8バイト」であってもよい。他の例として、第8のメモリー911に格納されるデータは、キャプチャー時刻「t2」、アクセス元「CPU301」、アクセス先「ユーザーロジック302」、アクセス種別「シングルライト」、アクセスサイズ「1バイト」であってもよい。
テスト結果を受信する機器は、第6のメモリー909に格納される情報と、第8のメモリー911に格納される情報とに基づいて、DUTが通信処理を行なっている間にバスがどのように占有されているか、および、どのバス動作がボトルネックとなっているか等を解析することができる。
テスト結果出力部912は、テストコントローラー901から出力されるテスト結果出力制御信号950に基づいて、テスト結果データ512をテスト結果出力回路404に出力する。テスト結果データ512は、第5のメモリー908〜第8のメモリー911の内容を含み得る。ある局面において、テスト結果出力制御信号950は、第5のメモリー908〜第8のメモリー911の内容のいずれかを選択する命令を含んでもよい。その場合、テスト結果データ512は、テスト結果出力制御信号950に含まれる命令に基づいて、第5のメモリー908〜第8のメモリー911の内容のいずれかを選択して、個別にテスト結果出力回路404に出力する。
次に、図10〜図12を参照して、テスト制御回路405によって実行されるDUTの性能テストの概要について説明する。図10は、DUTの性能テスト時の仮想的な環境の一例を示す図である。待機系300Bは、機器A(DUT)である。機器Aは、ネットワークリソース103を介して、機器Bおよびコントローラー100に接続されている。ネットワーク性能プロファイリング510は、例えば、図10に示すネットワークで発生し得る通信を想定したテスト内容を生成し得る。
図11は、図10のネットワーク側で発生する通信の一例を示す図である。時分割の通信では、各パケットは、予め定められた時刻内で通信することが求められる。一例として、コントローラー100から送信される「機器A宛のエッジデータ取得要求1101」は、時刻t1〜t2の間に機器Aによって受信されなければならない。他の例として、機器Aから送信される「コントローラー宛のエッジ取得データ1102」は、時刻t3〜t4の間に機器Aから送信されなければならない。これらの条件は、ネットワーク性能プロファイリング510内の第2のメモリー903および第4のメモリー905の設定に関連する。
図12は、図10のエッジ側で発生する入出力の一例を示す図である。エッジ側の入出力においても、各入出力は、予め定められた時刻内で行なわれることが求められる。一例として、機器Aからエッジ機器101に対して出力される「データ取得要求1201」は、時刻t2〜t2’の間に出力されなければならない。他の例として、エッジ機器101から機器Aに対して出力される「応答データ1202」は、時刻t2’〜t3の間に機器Aによって取得されなければならない。これらの条件は、ネットワーク性能プロファイリング510内の第1のメモリー902の設定に関連する。
テスト制御回路405は、待機系300Bの内部で、上記の図10〜図12に示す実際の状況を模した模擬信号を発生させて、DUTの性能テストを行なう。当該処理により、本実施の形態に従うテスト方法は、通常のシミュレーションと異なり、DUTが現場で求められる性能を満たしているか否かを実際に確認することができる。さらに、当該テスト方法は、待機系300Bの内部で完結するため、稼働系300Aの動作には影響を及ぼさない。ある局面において、テスト制御回路405は、待機系300Bをエッジ機器101およびネットワークリソース103に接続し、実際の通信内容に基づいてDUTの性能テストを行なってもよい。当該処理により、通信装置102は、より正確にDUTの実測テストを行なうことができる。
図13は、テスト結果出力回路404の一構成例を示す図である。テスト結果出力回路404は、テスト制御回路405によって実行されたテストの結果をネットワーク側の外部機器に送信する。テスト結果出力回路404は、パケット化回路1301と、テスト結果送信バッファ1302と、ネットワークインターフェイスプロトコル変換回路1303とを備える。
パケット化回路1301は、テスト結果データ512をパケット形式に変換する。テスト結果送信バッファ1302は、形式を変換されたテスト結果データを一時的に格納する。ネットワークインターフェイスプロトコル変換回路1303は、テスト結果送信バッファ1302から送られてくるパケットをネットワーク側の通信プロトコルに従う形式に変換する。
テスト結果送信バッファ1302は、テスト制御回路405から出力されるテスト結果出力制御信号950がイネーブルになったタイミングで、テスト結果データパケット513をネットワークインターフェイス制御回路406に送信する。ネットワークインターフェイス制御回路406は、ネットワークリソース103を介して、テスト結果データパケット513を外部機器(コントローラー100等)に送信する。ユーザーは、外部機器において受信したテスト結果データパケット513を参照することで、DUTの性能およびボトルネックの原因等を解析することができる。
図14は、再構成制御回路402の動作例を示す図である。再構成制御回路402は、ネットワークインターフェイス制御回路406から、ネットワーク側のパケットのミラーを受信する。再構成制御回路402は、ネットワーク構成の変更データを受信すると、通信処理部300の内部の構成を変更し得る。
図15は、コントローラー100の一構成例を示す図である。コントローラー100は、PCまたはワークステーション等であってもよい。コントローラー100は、通信処理部300に対して、ネットワーク構成の変更データを送信し得る。
コントローラー100は、制御装置1501と、RAM(Random Access Memory)1502と、入力インターフェイス1503と、出力インターフェイス1504と、記憶装置1507と、通信インターフェイス1506と、外部機器インターフェイス1505とを含む。
制御装置1501は、コントローラー100全体を制御する。ある局面において、CPUが制御装置1501として使用されてもよい。RAM1502は、制御装置1501によって参照されるプログラムおよびデータを格納し得る。ある局面において、DRAMまたはSRAMが、RAM1502として使用されてもよい。
入力インターフェイス1503は、キーボード、マウスまたはゲームパッド等の任意の入力装置に接続され得る。ある局面において、USB(Universal Serial Bus)端子、PS/2端子およびBluetooth(登録商標)モジュール等が入力インターフェイス1503として使用されてもよい。
出力インターフェイス1504は、ブラウン管ディスプレイ、液晶ディスプレイまたは有機EL(electro-luminescence)ディスプレイ等の任意の出力装置に接続され得る。ある局面において、USB端子、D−sub端子、DVI端子およびHDMI(登録商標)端子等が出力インターフェイス1504として使用されてもよい。
外部機器インターフェイス1505は、プリンター、スキャナーおよび外付けHDD(Hard Disk Drive)等の任意の外部機器に接続され得る。ある局面において、USB端子等が外部機器インターフェイス1505として使用されてもよい。
通信インターフェイス1506は、有線または無線のネットワーク機器に接続される。ある局面において、有線LAN(Local Area Network)ポートおよびWi-Fi(登録商標)モジュール等が通信インターフェイス1506として使用されてもよい。
記憶装置1507は、不揮発性メモリーであり、コントローラー100の電源が切れた状態でもデータを保存しておくことができる。記憶装置1507は、制御装置1501が実行または参照する任意のプログラムおよびデータを保存し得る。ある局面において、HDDまたはSSD(Solid State Drive)が、記憶装置1507として使用されてもよい。
図16は、DUTの性能テストの手順の一例を示す図である。ある局面において、待機系300Bまたはテスト回路400の各構成が図16の処理を実行してもよい。ステップS1610において、待機系300Bは、コントローラー100等から、ネットワーク構成の変更データを受信する。ステップS1620において、待機系300Bは、ネットワーク構成の変更データに基づいて、待機系300BにDUTおよびテスト回路400を含む回路を構成する。ある局面において、再構成制御回路402が当該処理を行なってもよい。その場合、再構成制御回路402は、テスト回路400の生成前に待機系300B内に存在する。
ステップS1630において、テスト制御回路405は、ネットワーク性能プロファイリング510からテスト設定を読み込む。ステップS1640において、テスト制御回路405は、エッジインターフェイス制御回路401と、ネットワークインターフェイス制御回路406とを制御し、DUTの接続先を変更する。
ステップS1650において、テスト制御回路405は、ネットワーク性能プロファイリング510の各種設定に基づいて、DUTの性能テストを実行する。テスト制御回路405は、テストの実行結果をテスト結果出力回路404に出力する。ステップS1660において、テスト結果出力回路404は、ネットワークリソース103を介して、テスト結果データのパケットを他の機器に送信する。
DUTのテストおよびテスト結果の解析完了後、DUTの性能が期待値を満たすものである場合、稼働系300Aおよび待機系300Bは、ネットワーク構成の変更データを受信し、当該ネットワーク構成の変更データに基づいて、稼働系300Aおよび待機系300Bの内部に、テスト回路400を含まないDUTと同一の回路を構成し得る。
以上説明したように、実施の形態1に従うシステムおよび通信装置102は、待機系300Bを用いて、実際の状況を模した模擬信号によるDUTの性能テストを行なう。当該処理により、通信装置102は、稼働系300Aの動作には影響を及ぼさずに、遠隔操作のみで新しいネットワーク構成の性能テストを実現し得る。さらに、通信装置102は、DUTの性能テスト後に、ネットワーク構成の変更データを受信し、稼働系300Aおよび待機系300Bの両方の構成をDUTと同様の構成に変更し得る。また、本実施の形態に従うシステムおよび通信装置102は、ネットワーク性能プロファイリング510に含まれる各種メモリーに任意の期待動作の設定を格納することができる。そのため、本実施の形態に従うシステムおよび通信装置102は、通信装置102の内部構成の変更だけでなく、ネットワークリソース103の構成や通信プロトコル等の変更が発生した場合でも、通信装置102が新しい環境において期待動作を満たすか否かを検証することができる。
実施の形態2.
次に、図17〜図23を参照して、実施の形態2について説明する。本実施の形態に従う通信装置は、稼働系1700Aおよび待機系1700Bを備える。また、通信装置は、稼働系1700AのネットワークPHY306を介して、待機系1700Bのテスト回路1710によるテスト結果データを外部の機器(コントローラー100等)に送信する点で、実施の形態1に従う通信装置と異なる。
本実施の形態に従う通信装置は、通信装置がコールドスタンバイモードで動作する場合においても待機系1700B内のDUTの性能をテストすることができる。「コールドスタンバイモード」とは、例えば、消費電力削減等の理由により、待機系1700Bまたは/および待機系1700Bが接続されるネットワーク機器に電力が供給されないモードである。通信装置がコールドスタンバイモードで稼働している場合、待機系1700B側のネットワークPHY306が接続されるネットワーク機器は稼働していない。そのため、待機系1700Bは、待機系1700B側のネットワークPHY306を介して、テスト結果データを外部の機器に送信することができない。
そのため、本実施の形態に従う通信装置は、待機系1700Bのテスト回路1710によるテスト結果データを稼働系1700Aに転送する。通信装置は、稼働系1700A側のネットワークPHY306を介して、テスト結果データを外部の機器に送信する。
なお、本実施の形態に従う通信装置のテスト回路1710は、実施の形態1に従う通信装置のテスト回路400と比較して、テスト制御回路1730と、LSI接続部1720AまたはLSI接続部1720Bとを備える。ある局面において、テスト回路1710は、テスト回路400が備える構成の一部を備えていなくてもよい。これ以降の説明では、実施の形態1に従う通信装置が備える各構成に対応するものについては、同一の符号を用いて説明する。
図17は、本実施の形態に従う通信装置における稼働系1700Aの構成の一例を示す図である。本実施の形態に従う稼働系1700Aは、図4に示す稼働系300Aの構成に加えて、さらに、テスト回路1710を備える。
稼働系1700AのLSI接続部1720Aは、後述する待機系1700BのLSI接続部1720Bと接続される。LSI接続部1720AおよびLSI接続部1720Bは、例えば、待機系1700Bのテスト結果データを稼働系1700Aに転送する。当該処理により、通信装置は、コールドスタンバイモードで稼働中でも、待機系1700Bのテスト結果データを外部の機器の送信することができる。また、LSI接続部1720AおよびLSI接続部1720Bは、稼働系1700Aの実際の通信に関する情報を待機系1700Bに送信し得る。当該処理により、待機系1700Bは、受信した稼働系1700Aの通信に関する情報に基づいて、通信のテストを実行することができる。
LSI接続部1720Aは、稼働系1700Aの各構成または通信路を介して、エッジ入力データ1701と、ネットワーク受信データ1702と、時刻データ1703と、LSI接続部の制御信号1704とを受信する。LSI接続部1720Aは、受信したエッジ入力データ1701と、ネットワーク受信データ1702と、時刻データ1703とを、後述するLSI接続部1720Bに転送する。
さらに、LSI接続部1720Aは、LSI接続部1720Bから、テスト結果データ1705を取得し、当該テスト結果データ1705をネットワークインターフェイス制御回路406に転送する。
エッジ入力データ1701は、例えば、エッジ入力データ502Aである。ネットワーク受信データ1702は、例えば、ネットワーク受信データ505Dのミラーデータである。時刻データ1703は、例えば、時刻データ511である。LSI接続部の制御信号1704は、LSI接続部1720Aのエッジ入力データ1701、ネットワーク受信データ1702、時刻データ1703、および、テスト結果データ1705のそれぞれの転送のオン/オフを制御するための信号であり、テスト制御回路1730から出力される。テスト制御回路1730は、さらに、バスを介して、CPU301、ユーザーロジック302、メモリー303、ネットワーク処理部304および他のロジック305とバス信号を送受信し得る。
図18は、本実施の形態に従う通信装置における待機系1700Bの構成の一例を示す図である。本実施の形態に従う待機系1700Bは、図5に示す構成に加えて、さらにLSI接続部1720Bを備える。
待機系1700BのLSI接続部1720Bは、稼働系1700AのLSI接続部1720Aと接続される。LSI接続部1720Bは、LSI接続部1720Aから受信したエッジ入力データ1701と、ネットワーク受信データ1702と、時刻データ1703とをテスト制御回路1730に転送する。また、LSI接続部1720Bは、テスト制御回路1730から、テスト結果データ1705を取得し、当該テスト結果データ1705をLSI接続部1720Aに転送する。さらに、LSI接続部1720Bは、テスト制御回路1730から、LSI接続部の制御信号1804を受信する。LSI接続部の制御信号1804は、LSI接続部1720Bのエッジ入力データ1701、ネットワーク受信データ1702、時刻データ1703、および、テスト結果データ1705のそれぞれの転送のオン/オフを制御するための信号である。
上記のLSI接続部1720A,1720Bは、大きく分けて2つの役割を持つ。LSI接続部1720A,1720Bの1つ目の役割は、コールドスタンバイモードでも待機系1700Bのテスト結果データ1705を外部の機器に送信可能にすることである。待機系1700Bは、待機系300Bと同様に、単体で待機系1700B内のDUTの通信性能をテストすることができる。しかし、通信装置がコールドスタンバイモードで動作していた場合、待機系1700Bは、テスト結果データ1705を外部の機器に送信することができない。そこで、待機系1700Bは、ネットワークと通信可能な稼働系1700Aに、テスト結果データ1705を転送する。テスト結果データ1705は、LSI接続部1720A,1720Bを介して、待機系1700Bから稼働系1700Aに転送される。稼働系1700Aのネットワークインターフェイス制御回路406は、外部の機器に、テスト結果データ1705を送信する。
LSI接続部1720A,1720Bの2つ目の役割は、稼働系1700Aのエッジ入力データ1701と、ネットワーク受信データ1702と、時刻データ1703とを待機系1700Bに転送することである。図9に示したように、待機系1700Bは、ネットワーク性能プロファイリング510に基づいて、テスト制御回路1730の各メモリーに設定を書き込み、当該設定に基づいてDUTのテストを実行し得る。待機系1700Bのテスト制御回路1730は、稼働系1700Aのエッジ入力データ1701と、ネットワーク受信データ1702と、時刻データ1703とを受信することで、これらのデータに基づいてネットワーク性能プロファイリング510を生成することができる。ある局面において、待機系1700Bのテスト制御回路1730は、受信したデータを直接第1のメモリー902〜第4のメモリー905に入力してもよい。これにより、本システムの管理者は、待機系1700BのDUTのテスト用の設定を作成する必要がなくなる。
図19は、LSI接続部1720Aの構成の一例を示す図である。LSI接続部1720Aは、接続制御部1900を備える。接続制御部1900は、スイッチ等の素子を含み、LSI接続部の制御信号1704に基づいて、エッジ入力データ1701、ネットワーク受信データ1702、時刻データ1703、および、テスト結果データ1705のそれぞれの転送のオン/オフを切り替える。
図20は、稼働系1700Aのテストコントローラー901の通信の一例を示す図である。図20を参照して、テストコントローラー901における本実施の形態に関連する通信について説明する。
テストコントローラー901は、ネットワーク受信データのミラー505Bを受信する。また、テストコントローラー901は、ネットワークインターフェイステスト制御信号504と、LSI接続部の制御信号1704とを出力する。さらに、テストコントローラー901は、バス情報2020を送受信することができる。
ある局面において、テストコントローラー901は、ネットワークPHY306を介して受信したパケットの内容に基づいて、LSI接続部の制御信号1704の内容を変更してもよい。他の局面において、テストコントローラー901は、CPU301から、バス情報2020を受信し、当該バス情報2020に基づいて、LSI接続部の制御信号1704の内容を変更してもよい。なお、図20に示す例は、稼働系1700Aのテストコントローラー901であるが、実際には、待機系1700Bのテストコントローラー901も同様のハードウェア構成を備え得る。ある局面において、待機系1700Bのテストコントローラー901は、稼働系1700AのLSI接続部1720Aから転送されたネットワーク受信データ1702に基づいて、LSI接続部1720Bの制御信号1804を変更してもよい。
図21は、LSI接続部1720Bの構成の一例を示す図である。LSI接続部1720Bは、接続制御部2100を備える。接続制御部2100は、スイッチ等の素子を含み、LSI接続部の制御信号1804に基づいて、エッジ入力データ1701、ネットワーク受信データ1702、時刻データ1703、および、テスト結果データ1705のそれぞれの転送のオン/オフを切り替える。
図19および図21に示すように、LSI接続部1720A,1720Bは、同数の入出力ポートを備えており、共通のハードウェアによって実現され得る。そのため、LSI接続部1720A,1720Bは、入出力データの向きを変えることで、稼働系1700Aおよび待機系1700BのいずれのLSI接続部としても動作し得る。
図22は、待機系1700Bのテスト制御回路1730の構成の一例を示す図である。図22に示すテスト制御回路1730は、図9に示すテスト制御回路405が備える構成に対して、さらに、エッジ入力データ1701、ネットワーク受信データ1702、時刻データ1703、LSI接続部の制御信号1804、および、テスト結果データ1705のための通信線を含む。ある局面において、稼働系1700Aのテスト制御回路1730は、待機系1700Bのテスト制御回路1730と同様の構成を含んでもよい。他の局面において、稼働系1700Aのテスト制御回路1730は、待機系1700Bのテスト制御回路1730と同様の構成を含まなくてもよい。
テストコントローラー901は、実施の形態1において、ネットワーク受信データのミラー505Bを用いて、第1のメモリー902と、第2のメモリー903と、第3のメモリー904と、第4のメモリー905とに、各種設定を格納していた。
これに対して、本実施の形態に従うテストコントローラー901は、ネットワーク受信データのミラー505Bの代わりに、稼働系1700Aから転送されるネットワーク受信データ1702を使用して、DUTのテストのための設定を行ない得る。ネットワーク受信データ1702は、第1のメモリー902〜第4のメモリー905の各種設定を含む。テストコントローラー901は、ネットワーク受信データ1702を受信したことに基づいて、ネットワーク受信データ1702に含まれる各種設定を第1のメモリー902〜第4のメモリー905の各々に直接書き込む。このように、テストコントローラー901は、ネットワーク受信データ1702に含まれる設定を各種メモリーに直接書き込むことで、DUTのテストのための設定を行い得る。
さらに、本実施の形態に従うテストコントローラー901は、エッジ入力データのミラー502Dおよび時刻データ511の代わりに、稼働系1700Aから受信したエッジ入力データ1701および時刻データ1703を使用し得る。以下に、ネットワーク受信データ1702、エッジ入力データ1701および時刻データ1703を使用する場合のテストコントローラー901の具体的な動作の一例を示す。なお、以下に示すテストコントローラー901の動作は一例であり、テストコントローラー901は、エッジ入力データ1701および時刻データ1703を使用しなくてもよい。
本実施の形態に従うテストコントローラー901は、稼働系1700Aから受信したエッジ入力データ1701および時刻データ1703に基づいて、第1のメモリーに、DUTのテストのための設定を書き込む。また、テストコントローラー901は、稼働系1700Aから受信したネットワーク受信データ1702および時刻データ1703に基づいて、第2のメモリー903に、DUTのテストのための設定を書き込む。同様に、テストコントローラー901は、稼働系1700Aから受信したネットワーク受信データ1702に基づいて、第3のメモリー904および第4のメモリー905に、DUTのテストのための設定を書き込む。
さらに、テストコントローラー901は、エッジインターフェイステスト制御信号501およびネットワークインターフェイステスト制御信号504に加えて、LSI接続部の制御信号1804を出力する。これらの構成により、待機系1700Bは、稼働系1700Aから受信した各種データに基づいて、DUTのテストを実行することができる。ある局面において、テストコントローラー901は、取得したエッジ入力データ1701〜時刻データ1703の各々を第1のメモリー902〜第4のメモリー905の各々に直接入力してもよい。
なお、稼働系1700Aも図22に示す構成を備えていてもよい。その場合、稼働系1700Aにおいて、テストコントローラー901は、LSI接続部の制御信号1804の代わりに、LSI接続部の制御信号1704を出力する。
図23は、ネットワークインターフェイス制御回路406の構成の一例を示す図である。ネットワークインターフェイス制御回路406は、送信データを格納する送信待ちキュー2300を備える。図23を参照して、当該送信待ちキュー2300を用いた優先制御について説明する。
ネットワークインターフェイス制御回路406は、テスト制御回路1730からネットワーク送信データ506Aを受信し、当該受信したネットワーク送信データ506Aを高優先度キュー2301に格納する。
また、ネットワークインターフェイス制御回路406は、LSI接続部1720Aから、待機系1700Bのテスト結果データ1705を受信し、当該受信したテスト結果データ1705を低優先度キュー2302に格納する。
ネットワークインターフェイス制御回路406は、テスト結果データ1705よりもネットワーク送信データ506Aを優先的に送信する。それにより、稼働系1700Aの通信処理におけるレイテンシおよび/またはジッタの発生が抑制され得る。また、ネットワークインターフェイス制御回路406は、ネットワークインターフェイステスト制御信号504に基づいて、テスト結果データ1705の送信のオン/オフを切り替えてもよい。当該テスト結果データ1705の送信のオン/オフの切り替え機能により、ネットワークインターフェイス制御回路406は、より確実に、稼働系1700Aの通信処理におけるレイテンシおよび/またはジッタの発生を抑制することができる。
以上説明したように、本実施の形態に従うシステムおよび通信装置は、待機系1700Bのテスト結果データ1705を稼働系1700Aに転送する。稼働系1700Aは、稼働系1700AのネットワークPHY306を介して、テスト結果データ1705を外部の機器に送信し得る。当該機能により、例えば、通信装置がコールドスタンバイモード動作していたとしても、通信装置は、待機系1700Bの性能テストを実行し、そのテスト結果データ1705を外部の機器の送信することができる。
また、待機系1700Bは、稼働系1700Aのエッジ入力データ1701、ネットワーク受信データ1702、および、時刻データ1703を受信して、これらのデータに基づいて、待機系1700Bの性能テストを実行することができる。当該機能により、通信装置は、通信装置の管理者のテスト設定データの作成の負担を減らすことができる。
さらに、稼働系1700Aは、送信待ちキュー2300を用いた優先制御により、稼働系1700Aの通信処理におけるレイテンシおよび/またはジッタの発生を抑制しながら、テスト結果データ1705を外部の機器に送信し得る。
実施の形態3.
次に、図24および図25を参照して、実施の形態3について説明する。本実施の形態における通信装置は、1または複数の他の通信装置との間の通信性能をテストする点で、実施の形態1および2に従う通信装置と異なる。
実施の形態3は、例えば、図1に示す例のように、複数の通信装置が互いに通信し合う構成において適用し得る。実施の形態1または2に従う通信装置は、単体で、待機系に関する性能テストを実行する。すなわち、実施の形態1または2に従う通信装置は、自装置内の待機系のみを用いて待機系に関する性能テストを実行する。これに対して、実施の形態3では、複数の通信装置が、お互いのテスト結果データを交換し合い、複数の通信装置を含むシステム全体の通信性能が予め定められた期待値以上であるか否かを評価する。
これ以降、通信装置(A)および通信装置(B)を含むシステムを例に、実施の形態3の詳細について説明する。なお、通信装置(A)および(B)を含むシステムの構成は一例であり、本実施の形態に従うシステムの構成はこれに限られない。ある局面において、本実施の形態に従うシステムは、任意の数の通信装置を含んでいてもよい。
また、実施の形態3に従う通信装置は、実施の形態1に従う通信装置が備える構成、または、実施の形態2に従う通信装置が備える構成と同じ構成を備え得る。これ以降の説明では、実施の形態1または2に従う通信装置が備える各構成に対応するものについては、同一の符号を用いて説明する。
図24は、各通信装置が自装置に保存するテスト結果テーブル2400の一例を示す図である。テスト結果テーブル2400は、各通信装置のテスト結果データのうち、通信性能(成績)が予め定められた期待値未満であったものを含む。すなわち、テスト結果テーブル2400は、各通信装置の問題のある通信のリストであると言える。全ての通信装置は、同一の内容のテスト結果テーブル2400を参照することができる。ここでのテスト結果データとは、例えば、実施の形態1における待機系300Bのテスト結果データである。
ある局面において、テスト結果テーブル2400は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON(JavaScript(登録商標) Object Notation)等の他の任意のデータ形式で表現されてもよい。
また、ある局面において、各通信装置は、テスト結果テーブル2400をメモリー303に格納してもよいし、各通信装置内の他のストレージ(図示せず)に格納してもよい。その場合、各通信装置は、各々のテスト結果データを互いに送信することで、テスト結果テーブル2400を共有し得る。
他の局面において、テスト結果テーブル2400は、各通信装置が使用する共有ストレージ(図示せず)に格納されてもよい。その場合、全ての通信装置は、テスト結果テーブル2400を参照する際、当該共有ストレージにアクセスする。
テスト結果テーブル2400は、当該テスト結果テーブル2400を構成するレコード、または他のデータ構造の要素として、番号2401と、送信機器2402と、受信機器2403と、最小期待時刻2404と、最大期待時刻2405と、実績値2406とを含む。
番号2401は、各テスト結果データ、または各テスト結果に含まれる通信データ(パケット等)を一意に識別する。送信機器2402は、テスト結果データの送信側の機器(通信装置)の識別情報である。受信機器2403は、テスト結果データの受信側の機器(通信装置)の識別情報である。
各通信データは、送信側の通信装置からいつの時刻までに送信されるべきかを示す送信時刻の期待値、および/または、受信側の通信装置でいつの時刻までに受信されるべきかを示す受信時刻の期待値が定義されている。これらの期待値は、ある程度の幅(最小値および最大値)が設けられており、各通信データは当該期待値の最小値および最大値の間に送信または受信されることで期待値通りに処理されたと見なされる。
最小期待時刻2404は、例えば、ある通信データが、送信側の通信装置からいつの時刻までに送信されるべきかを示す送信時刻の期待値の最小値、および/または、受信側の通信装置でいつの時刻までに受信されるべきかを示す受信時刻の期待値の最小値を含む。
最大期待時刻2405は、例えば、ある通信データが、送信側の通信装置からいつの時刻までに送信されるべきかを示す送信時刻の期待値の最大値、および/または、受信側の通信装置でいつの時刻までに受信されるべきかを示す受信時刻の期待値の最大値を含む。
本来ならば、テスト結果データの実績値は、最小期待時刻2404および最大期待時刻2405の間でなければならない。テスト結果テーブル2400に含まれるテスト結果データは、通信性能(成績)が予め定められた期待値未満であり、実績値2406は、最小期待時刻2404および最大期待時刻2405の間に含まれない。
各通信装置は、テスト結果テーブル2400に含まれる通信性能(成績)が予め定められた期待値未満のテスト結果データを参照し、これらのテスト結果データに基づいて、ネットワーク性能プロファイリング510および/または第1のメモリー902〜第4のメモリー905の設定値を調節して再テストをする。システムは、当該再テストにより、システム全体として、最小期待時刻2404および最大期待時刻2405の範囲内で、通信性能(成績)が予め定められた期待値未満であった通信の送受信を完了できるか否かを判定する。具体的な再テストの手順については図25を参照して説明する。
上記のテスト結果テーブル2400の各要素は、全ての通信装置が解釈できる共通の形式であることが望ましい。例えば、各通信装置が、イーサーネット(登録商標)を介して通信する場合、テスト結果テーブル2400の項目である送信機器2402および受信機器2403は、MACアドレスを含んでいてもよい。
また、テスト結果テーブル2400は、上記の要素以外にも、LANDID(Virtual LAN Identifier)、COS値(Class Of Service)等、TCP/IP(Transmission Control Protocol/Internet Protocol)のIPアドレス、ポート番号、機器間ネットワークにおいてユーザーが独自に組み込んだプロトコルのヘッダ情報、または/および、通信を特定するためのID等の任意の情報を含み得る。
図25は、通信装置がテスト結果テーブル2400を参照して再テストを実行する手順の一例を示すフローチャートである。ある局面において、CPU301は、図25の処理を行うためのプログラムをメモリー303から参照して、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
一例として、通信装置(A)および通信装置(B)の間の通信が予め定められた期待値未満の成績であったとする。また、通信装置(B)が送信側であり、通信装置(A)が受信側であるとする。これ以降、送信側の通信装置(B)の処理を例に説明する。
ステップS2505において、通信装置(B)は、期待値を満たさないテスト結果データ(テスト結果テーブル2400の各レコードに相当)を他の通信装置と共有する。例えば、通信装置(B)は、通信装置(B)の実行したテストのテスト結果データの中で、通信性能(成績)が予め定められた期待値未満の通信に関するテスト結果データを他の通信装置に送信する。逆に、通信装置(B)は、他の通信装置の実行したテストのテスト結果データの中で、通信性能(成績)が予め定められた期待値未満の通信に関するテスト結果データを受信する。ステップS2505の処理により、各通信装置は、テスト結果テーブル2400を共有する。
ステップS2510において、通信装置(B)は、テスト結果テーブル2400の中から最小期待時刻2404(送信/受信されるべき時刻の最小値)および/または最大期待時刻2405(送信/受信されるべき時刻の最大値)が、最も小さい通信を選択する。選択された通信は、送信側が通信装置(B)であり、受信側が通信装置(A)であったとする。以下、選択された通信を通信(A)と呼ぶ。
ステップS2515において、通信装置(B)は、受信側である通信装置(A)に対して、ネットワーク受信模擬データの設定の変更およびテストの実行を要求する。ネットワーク受信模擬データの設定の変更とは、第2のメモリー903の設定の変更に相当する。また、当該設定の変更は、第1のメモリー902、第3のメモリー904および第4のメモリー905の一部または全ての設定の変更を含んでいてもよい。または、当該設定の変更は、ネットワーク性能プロファイリング510の設定変更を含んでいてもよい。
より具体的には、通信装置(B)は、通信(A)の実績値2406および最大期待時刻2405の差分を第2のメモリー903の設定に反映するように、通信装置(A)に要求する指令を送信する。当該反映は、例えば、通信(A)の送信予定時刻が本来の期待値よりも遅れることの反映を含む。通信装置(A)は、当該設定に基づいて通信(A)の再テストを実行し、通信装置(A)における通信(A)の受信時刻が期待値の範囲内か否か(通信性能が期待値以上か否か)を判定し得る。
ステップS2520において、通信装置(B)は、受信側である通信装置(A)からエラーを受信したか否かを判定する。受信側の通信装置(A)の第2のメモリー903に送信側の通信装置(B)から依頼された通信(A)に該当するものがなければ、通信装置(B)にエラーを返信する。
通信装置(B)は、受信側である通信装置(A)からエラーを受信したと判定した場合(ステップS2520にてYES)、制御をステップS2560に移す。そうでない場合(ステップS2520にてNO)、通信装置(B)は、制御をステップS2525に移す。
ステップS2525において、通信装置(B)は、通信装置(A)から、通信(A)のテスト結果データを受信する。当該テスト結果データは、通信装置(A)がステップS2515にて受信した設定変更要求の内容を反映した後のテストの結果である。
ステップS2530において、通信装置(B)は、通信装置(A)から受信したテスト結果データが、受信側の通信装置(A)における予め定められた期待値を満たすか否かを判定する。ここでの「通信装置(A)から受信したテスト結果データが、受信側の通信装置(A)における予め定められた期待値を満たす」とは、受信側の通信装置(A)が、通信(A)のデータを問題のない時間範囲内(期待値の範囲内)で受信できることを意味する。
通信装置(B)は、通信装置(A)から受信したテスト結果データが、受信側の通信装置(A)における予め定められた期待値を満たすと判定した場合(ステップS2530にてYES)、制御をステップS2535に移す。そうでない場合(ステップS2530にてNO)、通信装置(B)は、制御をステップS2560に移す。
ステップS2535において、通信装置(B)は、自装置において、通信(A)に関する通信のテストを実行する。通信装置(B)は、当該テストの実行前に、第2のメモリー903の設定の変更と、第4のメモリー905の設定の変更とを実行し得る。通信装置(B)は、さらに、第1のメモリー902の設定の変更と、第3のメモリー904の設定の変更とを実行してもよい。
ステップS2525において得られるテスト結果データは、ステップS2515にて変更された設定を使用したテストにおいて、受信側の通信装置(A)における通信(A)の受信処理が期待値の範囲内で完了するか否かを示す。これに対して、ステップS2535において得られるテスト結果データは、ステップS2515にて変更された設定を使用したテストにおいて、送信側の通信装置(B)における通信(A)のデータの送信処理が期待値の範囲内で完了するか否かを示す。
ステップS2540において、通信装置(B)は、ステップS2535のテスト結果データが、送信側の通信装置(B)における予め定められた期待値を満たすか否かを判定する。ここでの「ステップS2535にて実行したテストのテスト結果データが、送信側の通信装置(B)における予め定められた期待値を満たす」とは、送信側の通信装置(B)が、通信(A)のデータを問題のない時間範囲内(期待値の範囲内)で送信できることを意味する。
通信装置(B)は、ステップS2535にて実行したテストのテスト結果データが、送信側の通信装置(B)における予め定められた期待値を満たすと判定した場合(ステップS2540にてYES)、制御をステップS2545に移す。そうでない場合(ステップS2540にてNO)、通信装置(B)は、制御をステップS2560に移す。
ステップS2545において、通信装置(B)は、通信装置(A),102Bのいずれのテスト結果も期待値を満たすことに基づいて、自装置の通信設定を変更する。すなわち、通信装置(B)は、ステップS2515にて変更した設定を正式に使用する設定としてメモリー303等に保存する。
ステップS2550において、通信装置(B)は、通信装置(A)に対して、設定変更を要求する通知を送信する。通信装置(A)は、当該通知を受信したことに基づいて、ステップS2515にて変更した設定を正式に使用する設定としてメモリー303等に保存する。
ステップS2555において、通信装置(B)は、他の全ての通信装置に、通信性能(成績)が予め定められた期待値未満の通信に関するテスト結果データ(テスト結果テーブル2400のレコード)の更新要求を送信する。例えば、ステップS2010〜S2550までの処理において、設定変更後の通信(A)が期待値を満たす場合、通信装置(B)は、他の全ての通信装置に、テスト結果テーブル2400から通信(A)のテスト結果データを削除するための更新要求を送信する。
ステップS2560において、通信装置(B)は、解決できなかった通信(通信性能が期待値未満の通信)のレポートを外部の機器に送信する。ある局面において、通信装置(B)は、コントローラー100またはシステムの管理者が使用する端末に当該レポートを送信してもよい。また、他の局面において、当該レポートは、テスト結果テーブル2400の各項目を含んでいてもよい。管理者は、当該レポートを参照することで、通信設定を修正することができる。ある局面において、各通信装置は、外部の機器からレポートの取得要求を受信したことに基づいて、メモリー303内のレポートを外部の機器に返信してもよい。
各通信装置は、テスト結果テーブル2400内の各レコードの通信に対して、上記のステップS2505〜S2560までの処理を繰り返し実行する。それにより、各通信装置は、修正可能な通信に関しては通信設定を更新し、修正不可能な通信に関してはレポートを外部の機器に送信し得る。
上記のフローチャートでは、送信側の通信装置(B)が受信側の通信装置(A)に対して各種処理を依頼しているが、通信装置間のテストの実現方法はこれに限られるものではない。他の局面において、受信側の通信装置(A)が送信側の通信装置(B)に各種処理を依頼してもよい。また、上記のフローチャートの処理は、全ての通信装置が実行し得る。
さらに他の局面において、実施の形態1〜実施の形態3は適宜組み合わせて実施され得る。例えば、通信装置は、稼働系1700AのネットワークPHY306を介して、図25のステップS2515,S2525,S2545における各種データを送受信してもよい。
以上説明したように、実施の形態3に従う複数の通信装置は、期待値を満たさない通信のテスト結果データを互いに共有し、当該テスト結果データに基づいて、テスト設定を変更して通信の再テストを実行する。当該機能により、複数の通信装置の各々は、システム全体として通信が期待値を満たすように自装置の通信設定を変更し得る。その結果、複数の通信装置の各々は、システムの管理者の通信テストの設定および再実行等の負担を減らすことができる。