(58)【調査した分野】(Int.Cl.,DB名)
前記データ複製部は、処理対象の仮想計算機に対応付けられた前記メモリ領域のメモリから処理対象の仮想計算機のデータを、前記処理対象の仮想計算機に対応付けられた前記バッファ領域のバッファに保存するとともに、メモリのタイムスタンプ情報とバッファのタイムスタンプ情報とに現在の時刻を保存することを特徴とする請求項1に記載の伝送模擬装置。
【発明を実施するための形態】
【0010】
実施の形態1.
本発明では、ネットワーク上のN台の機器がそれぞれ保持しているデータを共有するようなシステムを1台の物理計算機上で模擬することを想定している。このようなシステムは、例えば、ネットワーク上の機器の死活監視やセンサデータを共有するために利用されている。また、FA(Factory Automation)分野において、ネットワーク上の機器のデータを共有するのに利用されることもある。本実施の形態のネットワークにおいて、データの流れる経路(以下、データフローと称す)は、M個とする。
【0011】
図1は、実施の形態1に係る伝送模擬装置の構成を示すブロック図である。伝送模擬装置としての物理計算機11は、複数の仮想計算機12a〜n、仮想計算機12a〜nそれぞれに対応して設けられたメモリ領域13a〜n並びにタイムスタンプ情報領域14a〜n、及び伝送模擬機構部15から構成される。メモリ領域13a〜nは、それぞれ仮想計算機12a〜nに対応付けられている。各メモリのタイムスタンプ情報は、タイムスタンプ情報領域14a〜nに保存される。
【0012】
伝送模擬機構部15は、データフローと同数のデータ複製部16a〜m、データ複製部16a〜mそれぞれに対応して設けられたバッファ17a〜m並びにタイムスタンプ情報領域18a〜m、及びネットワークトポロジ情報保存部19から構成される。バッファ領域17a〜mは、データフローが各々保持するバッファである。各バッファのタイムスタンプ情報は、タイムスタンプ情報領域14a〜nに保存される。ネットワークトポロジ情報保存部19は、模擬するネットワークのトポロジ及びデータフローの状態を保持する。トポロジとは、仮想計算機の接続形態を示す。データフローの状態とは、接続又は切断である。
【0013】
メモリ領域13a〜nは、対応する仮想計算機12a〜n及びデータ複製部16a〜mからアクセスすることができる。タイムスタンプ情報領域14a〜nは、データ複製部16a〜mからアクセスすることができる。タイムスタンプ情報領域18a〜m及びネットワークトポロジ情報保存部19は、データ複製部16a〜mからアクセスすることができる。
【0014】
図2は、実施の形態1に係るメモリ領域13a及びタイムスタンプ情報領域14aの構成を示すブロック図である。メモリ領域13a及びタイムスタンプ情報領域14aは、N個のメモリ21a〜n及びタイムスタンプ情報22a〜nに分割され、それぞれ仮想計算機12a〜nに対応する。メモリ21a〜nには、対応する仮想計算機12a〜nのデータが保存されている。タイムスタンプ情報22a〜nには、対応する仮想計算機12a〜nからデータが伝送された時刻がタイムスタンプとして保存されている。
【0015】
仮想計算機12a〜nは、メモリ21a〜nのうち当該仮想計算機に対応するメモリのみ書き込み可能であり、その他のメモリは読み取りのみ可能である。データ複製部16a〜mは、すべてのメモリ21a〜n及びタイムスタンプ情報22a〜nの読み取りと書き込みが可能である。
なお、
図2では、メモリ領域13a及びタイムスタンプ情報領域14aの構成を例示したが、メモリ領域13b〜n及びタイムスタンプ情報領域14b〜nについても同様の構成である。
【0016】
図3は、実施の形態1に係るバッファ領域17a及びタイムスタンプ情報領域18aの構成を示すブロック図である。バッファ領域17a及びタイムスタンプ情報領域18aは、N個のバッファ31a〜n及びタイムスタンプ情報32a〜nに分割され、それぞれ仮想計算機12a〜nに対応する。バッファ31a〜nには、対応する仮想計算機12a〜nのデータが保存されている。タイムスタンプ情報32a〜nには、対応する仮想計算機12a〜nからデータが伝送された時刻がタイムスタンプとして保存されている。
【0017】
仮想計算機12a〜nは、バッファ31a〜n及びタイムスタンプ情報22a〜nのうち当該仮想計算機に対応するメモリ及びタイムスタンプ情報のみ書き込み可能であり、その他のバッファ及びタイムスタンプ情報は読み取りのみ可能である。データ複製部16a〜mは、すべてのバッファ31a〜n及びタイムスタンプ情報32a〜nの読み取りと書き込みが可能である。
なお、
図3では、バッファ領域17a及びタイムスタンプ情報領域18aの構成を例示したが、バッファ領域17b〜n及びタイムスタンプ情報領域18b〜nについても同様の構成である。
【0018】
タイムスタンプ情報32a〜nの初期値は、それぞれ対応する仮想計算機12a〜nに対応するタイムスタンプ情報22a〜nの時刻よりも過去の時刻が設定される。
【0019】
図4は、実施の形態1に係るネットワークトポロジ情報保存部19に保存されるネットワークトポロジ情報41を示す図である。ネットワークトポロジ情報41には、データフロー、仮想計算機、状態、伝送遅延の項目が保存される。データフローの項目には、データフローの識別子が保存される。仮想計算機の項目には、データフローに接続される仮想計算機の識別子が接続順に保存される。状態の項目には、1つ前の順番の仮想計算機との伝送路の状態が保存される。伝送遅延の項目には、1つ前の順番の仮想計算機からの伝送における伝送遅延時間が保存される。ネットワークトポロジ情報41の内容は、ユーザから入力される内容に従って保存される。
【0020】
例えば、データフローaは、仮想計算機12a、仮想計算機12b、仮想計算機12c、仮想計算機12dの順に接続され、データが伝送されることを示している。データフローaは、仮想計算機12aが先頭で、仮想計算機12dが最後尾である。仮想計算機12aはデータフローの先頭であり、1つ前の順番の計算機は存在しないため、状態は設定されない。仮想計算機12bの状態は「接続」であり、仮想計算機12aに接続されていることを示している。仮想計算機12cの状態は「接続」であり、仮想計算機12bに接続されていることを示している。仮想計算機12dの状態は「切断」であり、仮想計算機12cとは切断されていることを示している。
【0021】
仮想計算機12aはデータフローの先頭であり、1つ前の順番の計算機は存在しないため、伝送遅延は設定されない。仮想計算機12bの伝送遅延は「100ms」であり、仮想計算機12aから仮想計算機12bまでの伝送による伝送遅延が100msであることを示している。仮想計算機12cの伝送遅延は「200ms」であり、仮想計算機12bから仮想計算機12cまでの伝送による伝送遅延が200msであることを示している。仮想計算機12dの伝送遅延は、「100ms」であり、仮想計算機12cから仮想計算機12dまでの伝送による伝送遅延が100msであることを示している。
【0022】
次に、動作について
図5〜9を用いて説明する。データフローaにおいて、仮想計算機12aから仮想計算機12dまで順にデータを伝送する場合を例として説明する。
図5は、実施の形態1に係るデータ複製部16aの処理の流れを示すフローチャートである。
【0023】
図6は、実施の形態1に係るメモリ領域13a及びタイムスタンプ情報領域14aと、バッファ領域17a及びタイムスタンプ領域18aを示す図である。各領域は、(1)〜(3)の順に更新される。メモリ領域13aは、仮想計算機12aのメモリ領域である。メモリ21aaは、メモリ領域13aのうち仮想計算機12aに対応するメモリである。メモリ21abは、メモリ領域13aのうち仮想計算機12bに対応するメモリである。メモリ21acは、メモリ領域13aのうち仮想計算機12cに対応するメモリである。メモリ21adは、メモリ領域13aのうち仮想計算機12dに対応するメモリである。
【0024】
タイムスタンプ情報領域14aは、仮想計算機12aのタイムスタンプ情報領域である。タイムスタンプ情報22aaは、タイムスタンプ情報領域14aのうち仮想計算機12aに対応するタイムスタンプ情報である。タイムスタンプ情報22abは、タイムスタンプ情報領域14aのうち仮想計算機12bに対応するタイムスタンプ情報である。タイムスタンプ情報22acは、タイムスタンプ情報領域14aのうち仮想計算機12cに対応するタイムスタンプ情報である。タイムスタンプ情報22adは、タイムスタンプ情報領域14aのうち仮想計算機12dに対応するタイムスタンプ情報である。
【0025】
図7は、実施の形態1に係るメモリ領域13b及びタイムスタンプ情報領域14bと、バッファ領域17a及びタイムスタンプ領域18aを示す図である。各領域は、(1)〜(4)の順に更新される。メモリ領域13bは、仮想計算機12bのメモリ領域である。メモリ21baは、メモリ領域13bのうち仮想計算機12aに対応するメモリである。メモリ21bbは、メモリ領域13bのうち仮想計算機12bに対応するメモリである。メモリ21bcは、メモリ領域13bのうち仮想計算機12cに対応するメモリである。メモリ21bdは、メモリ領域13bのうち仮想計算機12dに対応するメモリである。
【0026】
タイムスタンプ情報領域14bは、仮想計算機12bのタイムスタンプ情報領域である。タイムスタンプ情報22baは、タイムスタンプ情報領域14bのうち仮想計算機12aに対応するタイムスタンプ情報である。タイムスタンプ情報22bbは、タイムスタンプ情報領域14bのうち仮想計算機12bに対応するタイムスタンプ情報である。タイムスタンプ情報22bcは、タイムスタンプ情報領域14bのうち仮想計算機12cに対応するタイムスタンプ情報である。タイムスタンプ情報22bdは、タイムスタンプ情報領域14bのうち仮想計算機12dに対応するタイムスタンプ情報である。
【0027】
図8は、実施の形態1に係るメモリ領域13c及びタイムスタンプ情報領域14dと、バッファ領域17a及びタイムスタンプ領域18aを示す図である。各領域は、(1)〜(4)の順に更新される。メモリ領域13cは、仮想計算機12cのメモリ領域である。メモリ21caは、メモリ領域13cのうち仮想計算機12aに対応するメモリである。メモリ21cbは、メモリ領域13cのうち仮想計算機12bに対応するメモリである。メモリ21ccは、メモリ領域13cのうち仮想計算機12cに対応するメモリである。メモリ21cdは、メモリ領域13cのうち仮想計算機12dに対応するメモリである。
【0028】
タイムスタンプ情報領域14dは、仮想計算機12cのタイムスタンプ情報領域である。タイムスタンプ情報22daは、タイムスタンプ情報領域14dのうち仮想計算機12aに対応するタイムスタンプ情報である。タイムスタンプ情報22dbは、タイムスタンプ情報領域14dのうち仮想計算機12bに対応するタイムスタンプ情報である。タイムスタンプ情報22dcは、タイムスタンプ情報領域14dのうち仮想計算機12cに対応するタイムスタンプ情報である。タイムスタンプ情報22ddは、タイムスタンプ情報領域14dのうち仮想計算機12dに対応するタイムスタンプ情報である。
【0029】
図9は、実施の形態1に係るメモリ領域13d及びタイムスタンプ情報領域14dと、バッファ領域17a及びタイムスタンプ領域18aを示す図である。各領域は、(1)〜(3)の順に更新される。メモリ領域13dは、仮想計算機12dのメモリ領域である。メモリ21daは、メモリ領域13dのうち仮想計算機12aに対応するメモリである。メモリ21dbは、メモリ領域13dのうち仮想計算機12bに対応するメモリである。メモリ21dcは、メモリ領域13dのうち仮想計算機12cに対応するメモリである。メモリ21ddは、メモリ領域13dのうち仮想計算機12dに対応するメモリである。
【0030】
タイムスタンプ情報領域14dは、仮想計算機12cのタイムスタンプ情報領域である。タイムスタンプ情報22daは、タイムスタンプ情報領域14dのうち仮想計算機12aに対応するタイムスタンプ情報である。タイムスタンプ情報22dbは、タイムスタンプ情報領域14dのうち仮想計算機12bに対応するタイムスタンプ情報である。タイムスタンプ情報22dcは、タイムスタンプ情報領域14dのうち仮想計算機12cに対応するタイムスタンプ情報である。タイムスタンプ情報22ddは、タイムスタンプ情報領域14dのうち仮想計算機12dに対応するタイムスタンプ情報である。
【0031】
図6〜9のバッファ領域17aについて説明する。バッファ領域17aは、データフローaのバッファ領域である。バッファ31aは、バッファ領域17aのうち仮想計算機12aに対応するバッファである。バッファ31bは、バッファ領域17aのうち仮想計算機12bに対応するバッファである。バッファ31cは、バッファ領域17aのうち仮想計算機12cに対応するバッファである。バッファ31dは、バッファ領域17aのうち仮想計算機12dに対応するバッファである。
【0032】
図6〜9のタイムスタンプ情報領域18aについて説明する。タイムスタンプ情報領域18aは、データフローaのタイムスタンプ情報領域である。タイムスタンプ情報32aは、タイムスタンプ情報領域18aのうち仮想計算機12aに対応するバッファである。タイムスタンプ情報32bは、タイムスタンプ情報領域18aのうち仮想計算機12bに対応するバッファである。タイムスタンプ情報32cは、タイムスタンプ情報領域18aのうち仮想計算機12cに対応するバッファである。タイムスタンプ情報32dは、タイムスタンプ情報領域18aのうち仮想計算機12dに対応するバッファである。
【0033】
図5において、ユーザからデータフローaが指定されると、データ複製部16aはステップS51より処理を開始する。
【0034】
ステップS51において、データ複製部16aは、データ伝送の処理対象となる仮想計算機を1台選択する。ここでは、仮想計算機12aが選択されたとする。
図6(1)は、仮想計算機12aのメモリ領域13a及びタイムスタンプ情報領域14aと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。メモリ21aaにデータA、タイムスタンプ情報22aaにt0が保存されている。処理はステップS52へ進む。
【0035】
ステップS52において、データ複製部16aは、ネットワークトポロジ情報41を参照する。仮想計算機12aはデータフローaの先頭のため、状態は設定されていない。処理はステップS53へ進む。
【0036】
ステップS53において、データ複製部16aは、メモリ領域13aのメモリ21aaに保存されているデータAを、バッファ領域17aのバッファ31aにコピーする。この処理は、仮想計算機12aがデータAをデータフローaに送出することを模擬している。
図6(2)は、仮想計算機12aのメモリ領域13a及びタイムスタンプ情報領域14aと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS54へ進む。
【0037】
ステップS54において、データ複製部16aは、タイムスタンプ情報領域14aのタイムスタンプ情報22aa及びタイムスタンプ情報領域18aのタイムスタンプ情報32aに現在の時刻t10を保存する。
図6(3)は、仮想計算機12aのメモリ領域13a及びタイムスタンプ情報領域14aと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS55へ進む。
【0038】
ステップS55において、データ複製部16aは、データフローa上で仮想計算機12aより前に位置する仮想計算機のうち、データフローaの先頭の仮想計算機又は状態が切断となっている仮想計算機から仮想計算機12aの直前に位置する仮想計算機について、それぞれタイムスタンプ情報を比較する。仮想計算機12aは先頭であり、比較対象の仮想計算機は存在しないため、処理はステップS57へ進む。
【0039】
ステップS57において、データ複製部16aは、ステップS51〜S57までにかかった処理時間を測定し、仮想計算機12aの伝送遅延時間と比較する。処理時間より遅延時間が大きい場合、処理はステップS58へ進む。大きくない場合、処理はステップS59へ進む。仮想計算機12aはデータフローaの先頭のため、伝送遅延時間は設定されていない。処理はステップS51に戻る。
【0040】
ステップS51において、データ複製部16aは、データフローaにおける次の仮想計算機12bを選択する。
図7(1)は、仮想計算機12bのメモリ領域13b及びタイムスタンプ情報領域14bと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。メモリ21baにデータX、タイムスタンプ情報22baにt5、メモリ21bbにデータB、タイムスタンプ情報22bbにt0が保存されている。ネットワークには複数のデータフローが存在し、データフローa上の仮想計算機が他のデータフローにも含まれる場合がある。メモリ21ba、タイムスタンプ情報22baは、他のデータフローの処理によって保存された値である。処理はステップS52へ進む。
【0041】
ステップS52において、データ複製部16aは、ネットワークトポロジ情報41を参照し、仮想計算機12bの状態「接続」を取得する。処理はステップS53へ進む。
【0042】
ステップS53において、データ複製部16aは、メモリ領域13bのメモリ21bbに保存されているデータBを、バッファ領域17aのバッファ31bにコピーする。この処理は、仮想計算機12bがデータBをデータフローaに送出することを模擬している。
図7(2)は、仮想計算機12bのメモリ領域13b及びタイムスタンプ情報領域14bと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS54へ進む。
【0043】
ステップS54において、データ複製部16aは、タイムスタンプ情報領域14bのタイムスタンプ情報22bb及びタイムスタンプ情報領域18aのタイムスタンプ情報32bに現在の時刻t20を保存する。
図7(3)は、仮想計算機12bのメモリ領域13b及びタイムスタンプ情報領域14bと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS55へ進む。
【0044】
ステップS55〜S56の処理は、仮想計算機12aから新たに送出されたデータがあれば、仮想計算機12bが受信することを模擬する。
【0045】
ステップS55において、データ複製部16aは、データフローa上で仮想計算機12aより前に位置する仮想計算機のうち、データフローaの先頭の仮想計算機又は状態が切断となっている仮想計算機から仮想計算機12bの直前に位置する仮想計算機について、それぞれタイムスタンプ情報を比較する。ここでは、タイムスタンプ情報の比較をするのは、仮想計算機12aである。
図7(3)を参照すると、タイムスタンプ情報22baにはt5、タイムスタンプ情報32aにはt10が保存されている。データ複製部16aは、メモリ21baよりバッファ31aの値が新しいと判定し、処理はステップS56へ進む。
【0046】
ステップS56において、データ複製部16aは、タイムスタンプ情報32aのt10をタイムスタンプ情報22baにコピーする。また、データ複製部16aは、バッファ31aのデータAをメモリ21baにコピーする。この処理は、仮想計算機12bが仮想計算機12aから送出されたデータを受信することを模擬している。
図7(4)は、仮想計算機12bのメモリ領域13b及びタイムスタンプ情報領域14bと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS57へ進む。
【0047】
ステップS57において、データ複製部16aは、ステップS51〜S57までにかかった処理時間を測定し、仮想計算機12bの遅延時間100msと比較する。処理時間より遅延時間が大きい場合、処理はステップS58へ進む。大きくない場合、ステップS59へ進む。
【0048】
ステップS58において、データ複製部16aは、遅延時間100msが経過するまで待つ。時間が経過すると、処理はステップS59へ進む。
【0049】
ステップS59において、データ複製部16aは、仮想計算機12bがデータフローの最後尾かどうか判定する。仮想計算機12bはデータフローの最後尾ではないため、処理はステップS51に戻る。
【0050】
ステップS51において、データ複製部16aは、データフローaにおける次の仮想計算機12cを選択する。
図8(1)は、仮想計算機12cのメモリ領域13c及びタイムスタンプ情報領域14cと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。メモリ21ccにデータC、タイムスタンプ情報22ccにt0が保存されている。処理はステップS52へ進む。
【0051】
ステップS52において、データ複製部16aは、ネットワークトポロジ情報41を参照し、仮想計算機12bの状態「切断」を取得する。処理はステップS59へ進む。
【0052】
ステップS53において、データ複製部16aは、メモリ領域13cのメモリ21ccに保存されているデータCを、バッファ領域17aのバッファ31cにコピーする。この処理は、仮想計算機12cがデータCをデータフローaに送出することを模擬している。
図8(2)は、仮想計算機12cのメモリ領域13c及びタイムスタンプ情報領域14cと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS54へ進む。
【0053】
ステップS54において、データ複製部16aは、タイムスタンプ情報領域14cのタイムスタンプ情報22cc及びタイムスタンプ情報領域18aのタイムスタンプ情報32cに現在の時刻t30を保存する。
図8(3)は、仮想計算機12cのメモリ領域13c及びタイムスタンプ情報領域14cと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS55へ進む。
【0054】
ステップS55において、データ複製部16aは、データフローa上で仮想計算機12aより前に位置する仮想計算機のうち、データフローaの先頭の仮想計算機又は状態が切断となっている仮想計算機から仮想計算機12cの直前に位置する仮想計算機について、それぞれタイムスタンプ情報を比較する。仮想計算機12cは仮想計算機12bとは切断されており、比較対象の仮想計算機はない。この処理は、仮想計算機12cは仮想計算機12bとは切断されているため、仮想計算機12a及び仮想計算機12bが送出するデータを受信しないことを意味している。処理はステップS57へ進む。
【0055】
ステップS57において、データ複製部16aは、ステップS51〜S57までにかかった処理時間を測定し、仮想計算機12cの伝送遅延100msと比較する。処理時間より遅延時間が大きい場合、処理はステップS58へ進む。大きくない場合、処理はステップS59へ進む。
【0056】
ステップS58において、データ複製部16aは、伝送遅延100msが経過するまで待つ。時間が経過すると、処理はステップS59へ進む。
【0057】
ステップS59において、データ複製部16aは、仮想計算機12cがデータフローの最後尾かどうか判定する。仮想計算機12cはデータフローの最後尾ではないため、処理はステップS51に戻る。
【0058】
ステップS51において、データ複製部16aは、データフローaにおける次の仮想計算機12dを選択する。
図9(1)は、仮想計算機12dのメモリ領域13d及びタイムスタンプ情報領域14dと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。メモリ21dbにデータZ、タイムスタンプ情報22dbにt25、メモリ21dcにデータY、タイムスタンプ情報22dcにt35、メモリ21ddにデータD、タイムスタンプ情報22ddにt5が保存されている。処理はステップS52へ進む。
【0059】
ステップS52において、データ複製部16aは、ネットワークトポロジ情報41を参照し、仮想計算機12dの状態「接続」を取得する。処理はステップS53へ進む。
【0060】
ステップS53において、データ複製部16aは、メモリ領域13dのメモリ21ddに保存されているデータDを、バッファ領域17aのバッファ31dにコピーする。この処理は、仮想計算機12dがデータDをデータフローaに送出することを模擬している。
図9(2)は、仮想計算機12dのメモリ領域13d及びタイムスタンプ情報領域14dと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS54へ進む。
【0061】
ステップS54において、データ複製部16aは、タイムスタンプ情報領域14dのタイムスタンプ情報22dd及びタイムスタンプ情報領域18aのタイムスタンプ情報32dに現在の時刻t40を保存する。
図9(3)は、仮想計算機12dのメモリ領域13d及びタイムスタンプ情報領域14dと、データフローaのバッファ領域17a及びタイムスタンプ領域18aの現在の状態を示す図である。処理はステップS55へ進む。
【0062】
ステップS55〜S56の処理は、仮想計算機12cから新たに送出されたデータがあれば、仮想計算機12dが受信することを模擬する。
【0063】
ステップS55において、データ複製部16aは、データフローa上で仮想計算機12aより前に位置する仮想計算機のうち、データフローaの先頭の仮想計算機又は状態が切断となっている仮想計算機から仮想計算機12dの直前に位置する仮想計算機について、それぞれタイムスタンプ情報を比較する。ここでは、タイムスタンプ情報の比較をするのは、仮想計算機12cである。
図9(3)を参照すると、タイムスタンプ情報22dcにはt35、タイムスタンプ情報32cにはt30が保存されている。データ複製部16aは、メモリ21dcよりバッファ31cの値が新しくないと判定し、処理はステップS57へ進む。
【0064】
メモリ21dcの値が新しくても、データ複製部16aがバッファ31cにコピーしないのは次の理由からである。本発明では、仮想計算機が自身のデータをデータフローに送出し、他の仮想計算機の送出したデータを受信することを模擬している。仮想計算機12dは、メモリ21ddに自身の送出するデータを保存し、メモリ21da〜dcに他の仮想計算機から受信したデータを保存する。よって、メモリ21dcは仮想計算機12cから受信したデータであり、他の仮想計算機には送出しないため、バッファ31cにはコピーしない。
【0065】
ステップS57において、データ複製部16aは、ステップS51〜S57までにかかった処理時間を測定し、遅延時間200msと比較する。処理時間より遅延時間が大きい場合、処理はステップS58へ進む。大きくない場合、ステップS59へ進む。
【0066】
ステップS58において、データ複製部16aは、遅延時間200msが経過するまで待つ。時間が経過すると、処理はステップS59へ進む。
【0067】
ステップS59において、データ複製部16aは、仮想計算機12bがデータフローの最後尾かどうか判定する。仮想計算機12dはデータフローの最後尾のため、処理は終了する。
【0068】
したがって、本実施の形態では、仮想計算機に対応付けられ、自身と他の複数の仮想計算機のデータを各メモリに保持するメモリ領域と、複数のメモリに保持されるデータそれぞれのタイムスタンプ情報を保持する第1のタイムスタンプ情報領域と、複数の仮想計算機のデータを各バッファに保持するバッファ領域と、複数のバッファに保持されるデータそれぞれのタイムスタンプ情報を保持する第2のタイムスタンプ情報領域と、メモリ領域と、バッファ領域とについて、データの経路を示すデータフロー上で処理対象の仮想計算機より前に位置する仮想計算機のデータを保持するメモリとバッファとのどちらのデータを他方に上書きするか、第1のタイムスタンプ情報領域のタイムスタンプ情報と第2のタイムスタンプ情報領域のタイムスタンプ情報とに基づいて判定するデータ複製部と、を備え、データ複製部は、処理対象の仮想計算機に対応付けられたメモリ領域のメモリから処理対象の仮想計算機のデータを、処理対象の仮想計算機に対応付けられたバッファ領域のバッファに保存するとともに、メモリのタイムスタンプ情報とバッファのタイムスタンプ情報とに現在の時刻を保存するので、仮想計算機内の環境を変えずに仮想計算機間でのデータの伝送を模擬することができる。
【0069】
また、データフロー上の各仮想計算機について、データフロー上の直前に位置する仮想計算機からの伝送遅延を示す伝送遅延時間を保持するネットワークトポロジ情報保存部を備え、データ複製部は、処理対象の仮想計算機の伝送遅延時間が経過すると、データフロー上で次に位置する仮想計算機を新たな処理対象の仮想計算機とするので、仮想計算機内の環境を変えずに、データの伝送における遅延を模擬することができる。
【0070】
また、ネットワークトポロジ情報保存部は、仮想計算機がデータフロー上で直前に位置する仮想計算機と接続されているか否かを示す状態を保持し、データ複製部は、処理対象の仮想計算機に対応付けられたメモリ領域とバッファ領域とについて、データフロー上で処理対象の仮想計算機より前に位置する仮想計算機のうち、状態が切断である仮想計算機より前に位置する仮想計算機のメモリとバッファと、それぞれ対応するタイムスタンプ情報とを変更しないので、仮想計算機内の環境を変えずにネットワークが切断されている場合のデータ伝送を模擬することができる。
【0071】
実施の形態2.
以上の実施の形態1では、データフローの先頭からデータを伝送する場合を模擬したものであるが、本実施の形態においては、周期的にデータが更新される実施の形態を示す。
なお、本実施の形態においては、実施の形態1に記載の構成を全て備えた上で、更に付加的な構成について説明する。
【0072】
図10は、実施の形態2に係る伝送模擬装置の構成を示すブロック図である。伝送模擬装置としての物理計算機101は、伝送模擬機構部102にメモリの更新タイミングを管理する更新タイミング管理部103を設けている。また、ネットワークトポロジ情報保存部104は、ネットワークトポロジ情報41の他にメモリの更新タイミングを示す更新タイミング情報111を保持する。
【0073】
図11は、実施の形態2に係る更新タイミング情報111を示す図である。例えば、データフローaは10000msごとにメモリを更新することを示している。
【0074】
次に、動作について説明する。
図12は、実施の形態2に係る更新タイミング管理部103の処理の流れを示すフローチャートである。データフローaにおいて伝送する場合を例として説明する。ユーザからデータフローaが指定されると、更新タイミング管理部103は、ステップS121より処理を開始する。
【0075】
ステップS121において、更新タイミング管理部103は、更新タイミング管理部103の更新タイミング情報111を参照し、データフローaの更新タイミング「10000ms」を取得する。処理はステップS122へ進む。
【0076】
ステップS122において、更新タイミング管理部103は、データ複製部16aにデータフローaにおける伝送を指示する。データ複製部16aから処理が終了したことを通知されると、処理はステップS123へ進む。
【0077】
ステップS123において、更新タイミング管理部103は、データ複製部16aの処理にかかった時間を測定し、更新タイミングの時間と比較する。更新タイミングに達している場合、処理はステップS122へ進む。更新タイミングに達していない場合、処理はステップS124へ進む。
【0078】
ステップS124において、更新タイミング管理部103は、更新タイミングまで待つ。更新タイミングに達すると、処理はステップS122へ進む。
【0079】
したがって、本実施の形態では、ネットワークトポロジ情報保存部は、データフロー毎にデータフロー上の仮想計算機のデータを更新する更新タイミングを保持し、更新タイミングが経過すると、データフローに対応するデータ複製部に通知する更新タイミング管理部を備えているので、周期的にデータが更新される場合の伝送を模擬することができる。
【0080】
実施の形態3.
以上の実施の形態2では、周期的にデータが更新される場合の伝送を模擬するようにしたものであるが、本実施の形態においては、複数のデータフローの伝送を模擬する場合に効率よくCPUパワーを使用する実施の形態を示す。
本実施の形態において、伝送模擬装置としての物理計算機101の構成は
図10と同じであるため、説明を割愛する。
【0081】
動作について説明する。
図13は、実施の形態3に係る更新タイミング管理部103の処理の流れを示すフローチャートである。データフローaとともにデータフローbの処理が同時に実施されている場合を例として説明する。更新タイミング管理部103は、模擬するデータフローa、bが入力されるとステップS131より処理を開始する。
【0082】
ステップS131において、更新タイミング管理部103は、更新タイミング情報111を参照し、データフローaの更新タイミング「10000ms」及びデータフローbの更新タイミング「12000ms」を取得する。処理はステップS132へ進む。
【0083】
ステップS132において、更新タイミング管理部103は、データ複製部16a及びデータ複製部16bのデータ複製部にメモリの更新を指示する。処理はステップS133へ進む。
【0084】
ステップS133において、更新タイミング管理部103は、データ複製部16a又はデータ複製部16bのいずれかから更新処理が終了したことを通知されると、処理はステップS134へ進む。更新処理が終了していない場合、処理はステップS133に戻る。ここでは、データ複製部16aから更新処理が終了したことを通知されたとする。
【0085】
ステップS134において、更新タイミング管理部103は、データ複製部16aの処理にかかった時間を測定し、更新タイミングの時間と比較する。更新タイミングの場合、処理はステップS132へ進む。更新タイミングでない場合、処理はステップS134へ進む。
【0086】
ステップS135において、更新タイミング管理部103は、データ複製部16bが処理中かどうか判定する。データ複製部16bが処理中の場合、処理はステップS136へ進む。処理中でない場合、処理はステップS137へ進む。
【0087】
ステップS136において、更新タイミング管理部103は、データ複製部16aに割り当てられていたCPUリソースを解放するように通知する。処理はステップS137へ進む。
【0088】
ステップS137において、更新タイミング管理部103は、更新タイミングまで待つ。更新タイミングに達すると、処理はステップS132に戻る。
【0089】
したがって、本実施の形態では、データ複製部は、データフロー上の最後尾の仮想計算機まで処理が終了すると更新タイミング管理部に通知し、更新タイミング管理部は、更新タイミングに達していない場合、データ複製部に保持している計算機リソースを解放するように通知するので、複数のデータフローの伝送を模擬する場合に効率よくCPUパワーを使用することができる。
【0090】
実施の形態4.
以上の実施の形態3では、複数のデータフローの伝送を模擬する場合に効率よくCPUパワーを使用するようにしたものであるが、本実施の形態においては、リング状のデータフローの伝送を模擬する実施の形態を示す。
本実施の形態において、伝送模擬装置としての物理計算機101の構成は
図10と同じであるため、説明を割愛する。
【0091】
図14は、実施の形態4に係る仮想計算機12a〜cが模擬するネットワークの構成を示す図である。
図15は、実施の形態4に係るネットワークトポロジ情報保存部104に保存されるネットワークトポロジ情報151を示す図である。ネットワークトポロジ情報151には、データフローc及びデータフローdのネットワークトポロジ情報が保存されている。データフローcは、仮想計算機12a、仮想計算機12b、仮想計算機12cの順にリング状に接続されたデータフローである。各仮想計算機の状態は接続で、伝送遅延はtxである。データフローdは、仮想計算機12a、仮想計算機12c、仮想計算機12bの順にリング状に接続されたデータフローである。各仮想計算機の状態は接続で、伝送遅延はtxである。データフローcとデータフローdは、同じ仮想計算機から成るデータフローである。データフローcは時計回り方向であるのに対し、データフローdは反時計回り方向である。
【0092】
図16は、実施の形態4に係る更新タイミング情報161を示す図である。データフローcとデータフローdはともにtyごとにメモリを更新することを示している。
【0093】
動作について説明する。
図17は、実施の形態4に係る更新タイミング管理部103の処理の流れを示すフローチャートである。更新タイミング管理部103は、模擬するデータフローc、dが入力されるとステップS171より処理を開始する。
【0094】
ステップS171において、更新タイミング管理部103は、更新タイミング管理部103の更新タイミング情報161を参照し、データフローc及びデータフローdの更新タイミングtyを取得する。処理はステップS172へ進む。
【0095】
ステップS172において、更新タイミング管理部103は、データ複製部16c及びデータ複製部16dの両方に更新を指示する。処理はステップS173へ進む。
【0096】
ステップS173において、更新タイミング管理部103は、データ複製部16c又はデータ複製部16dのいずれかから更新処理が終了したことを通知されると、処理はステップS174へ進む。更新処理が終了していない場合、処理はステップS173に戻る。ここでは、データ複製部16cから更新処理が終了したことを通知されたとする。
【0097】
ステップS174において、更新タイミング管理部103は、他のデータ複製部としてデータ複製部16dが処理中かどうか判定する。データ複製部16dが処理中の場合、処理はステップS175へ進む。処理中でない場合、処理はステップS176へ進む。
【0098】
ステップS175において、更新タイミング管理部103は、データ複製部16cに割り当てられていたCPUリソースを明示的に解放するように通知する。処理はステップS176へ進む。
【0099】
ステップS176において、更新タイミング管理部103は、データ複製部16cの処理にかかった時間を測定し、更新タイミングの時間と比較する。更新タイミングの場合、処理はステップS172に戻る。更新タイミングでない場合、処理はステップS174へ進む。
【0100】
ステップS177において、更新タイミング管理部103は、更新タイミングまで待つ。更新タイミングに達すると、処理はステップS172に戻る。
【0101】
したがって、本実施の形態では、ネットワークトポロジ情報保存部は、複数のデータフローについて同一の更新タイミングを保持し、更新タイミング管理部は、更新タイミングになると、同一の更新タイミングのデータフローに対応する複数のデータ複製部に通知するので、複数のデータフローの更新タイミングを合わせることができる。