まず、本実施例に係る通信検証装置の概要について説明する。図1は、本実施例に係る通信検証装置が適用されるモバイルネットワークの構成例を示す図である。同図に示したモバイルネットワーク1は、所定の端末装置(以下、「CN:Correspondent Node」という)10と、ホームエージェント(以下、「HA:Home Agent」という)20と、通信検証装置100とが、ネットワークを介して有線接続または無線接続されている。
CN10は、通信検証装置100と通信を行う端末装置であり、例えば、移動可能な携帯情報端末(PDA:Personal Digital Assistant)や、移動体でないパーソナルコンピュータなどである。なお、図1では、1台のCN10のみを示したが、通信検証装置100は、複数のCNと通信を行ってもよい。
HA20は、モバイルIPにおける移動体のホームネットワーク上のルータである。このHA20は、移動体がホームネットワーク外に移動した場合に、かかる移動体宛のパケットを捕獲して移動体へ転送したり、移動体の位置情報を管理したりする。
通信検証装置100は、検証用の仮想的なネットワーク(以下、「仮想ネットワーク」という)と、仮想的な移動体(以下、「仮想移動体」という)とを生成して、仮想移動体を仮想ネットワーク内で移動させながら、仮想移動体とCN10との間で通信を行わせる装置である。
ここで、図2を用いて、通信検証装置100が生成する仮想ネットワークについて説明する。図2は、通信検証装置100が生成する仮想ネットワークの一例を示す図である。
同図に示した例では、通信検証装置100は、3つの仮想ネットワークN1〜N3を生成している。そして、通信検証装置100は、仮想ネットワークN1内に、3つの通信状態J1〜J3を生成し、仮想ネットワークN2内に、3つの通信状態J4〜J6を生成し、仮想ネットワークN3内に、3つの通信状態J7〜J9を生成している。
仮想ネットワークN1〜N3は、仮想的な無線基地局装置(以下、「仮想基地局」という)が仮想移動体と通信可能な仮想的な範囲を示している。例えば、仮想ネットワークN1は、仮想基地局Aが仮想移動体と通信可能な仮想的な範囲を示しており、仮想ネットワークN2は、仮想基地局Bが仮想移動体と通信可能な仮想的な範囲を示しており、仮想ネットワークN3は、仮想基地局Cが仮想移動体と通信可能な仮想的な範囲を示している。すなわち、仮想移動体が、仮想ネットワークN1から仮想ネットワークN2へ移動した場合、仮想移動体と通信する無線基地局装置が切り替わる「ハンドオーバ」が発生することになる。
通信状態J1〜J3は、仮想ネットワークN1内の通信状態を示しており、言い換えれば、仮想ネットワークN1内における仮想的なエリア(以下、「仮想エリア」という)を示している。つまり、通信状態J1〜J3は、実際の移動体の通信状態が、実際のネットワーク内における場所によって変化するように、仮想移動体の通信状態が、仮想ネットワークN1内で位置する仮想エリアによって変化することを実現する。なお、ここでいう、通信状態とは、仮想移動体が送受信するパケットの遅延時間や、パケットロス率や、パケットエラー率などを意味する。
同様に、通信状態J4〜J6は、仮想ネットワークN2内の通信状態を示しており、言い換えれば、仮想ネットワークN2内における仮想エリアを示している。同様に、通信状態J7〜J9は、仮想ネットワークN3内の通信状態、言い換えれば、仮想ネットワークN3内における仮想エリアを示している。
図2に示した例を用いて具体的に説明すると、通信状態が通信状態J1である仮想エリアに仮想移動体が位置する場合、仮想移動体が送受信するパケットの遅延時間が「10ms(ミリ秒)」になり、パケットロス率が「0%」になり、パケットエラー率が「0%」になることを示している。
また、通信状態が通信状態J2である仮想エリアに仮想移動体が位置する場合、仮想移動体が送受信するパケットの遅延時間が「50ms(ミリ秒)」になり、パケットロス率が「1%」になり、パケットエラー率が「5%」になることを示している。
通信検証装置100は、このような仮想ネットワークN1〜N3を生成して、仮想移動体を、通信状態J1〜J9が示す仮想エリアに移動させながら、仮想移動体とCN10との間で通信を行わせる。例えば、通信状態が通信状態J3である仮想エリアに仮想移動体が位置する場合、通信検証装置100は、パケットロス率が「20%」かつパケットエラー率が「40%」であるパケットを生成し、生成したパケットを「200ms」遅延させてCN10へ送信する。
また、通信検証装置100は、仮想移動体を仮想ネットワークN1の所定の仮想エリアから仮想ネットワークN2内の所定の仮想エリアへ移動させた場合、すなわち、仮想ネットワークを跨って仮想移動体を移動させた場合、位置登録(Registration Request)メッセージをHA20へ送信したり、HA20から位置登録応答メッセージを受信したりする。なお、本実施例では、図1に示したHA20は、図2に示した仮想ネットワークN1をホームネットとする。
このように、本実施例に係る通信検証装置100は、自装置内に様々な通信状態を有する仮想ネットワークを生成して、仮想移動体を仮想ネットワーク内で移動させ、かかる仮想移動体が位置する仮想エリアの通信状態(遅延時間、ロス率、エラー率など)に従って、仮想移動体とCN10やHA20との間で通信を行わせるので、様々な通信状態によってCN10やHA20と通信を行うことができる。すなわち、本実施例に係る通信検証装置100を用いれば、大規模なネットワークを実際に構築したり、移動体を実際に移動させたりすることなく、通信時に様々なエラーを意図的かつ容易に発生させることができ、その結果、様々な環境でモバイルネットワーク関連機器の研究開発や検証等を行うことができる。
次に、通信検証装置100の構成について説明する。図3は、通信検証装置100の構成を示すブロック図である。なお、以下に説明する通信検証装置100は、仮想ネットワークとして、図2に示した仮想ネットワークN1〜N3を生成するものとする。
図3に示すように、通信検証装置100は、情報処理装置30と接続されており、インタフェース(以下、(「I/F」)という)部110と、I/F部120と、記憶部130と、状態設定部140と、通信部150とを有する。
情報処理装置30は、通信検証装置100に各種情報や各種指示を送信するパーソナルコンピュータ等の装置であり、シナリオ31を有する。シナリオ31は、通信検証装置100によって生成される仮想ネットワークや、仮想ネットワーク内の通信状態や、仮想移動体などに関する情報が定義されている設定ファイルである。
シナリオ31の一例を図4に示す。同図に示したシナリオ31は、図2に示した仮想ネットワークN1〜N3に関する各種情報が定義されている。具体的には、図4に示したシナリオ31は、「/*ネットワーク定義*/」に、仮想ネットワークN1〜N3のHoA(Home Address:ホームアドレス)が定義されている。同図に示した例では、「network_no=X」が1つの仮想ネットワークを示している。以下では、図4中の「network_no=X」が、図2に示した仮想ネットワークN「X」に対応するものとする。例えば、図4中の「network_no=1」は、図2中の仮想ネットワークN1に対応する。すなわち、図4に示した例では、仮想ネットワークN1のHoAが「192.168.1.0」であり、仮想ネットワークN2のHoAが「192.168.2.0」であり、仮想ネットワークN3のHoAが「192.168.20.0」であることが定義されている。
また、同図に示したシナリオ31は、「/*各状態のネットワーク特性*/」に、通信状態J1〜J9が属する仮想ネットワークや、通信状態J1〜J9の具体的な通信状態が定義されている。同図に示した例では、「state_N」が1つの通信状態を示している。以下では、図4中の「state_N」が、図2中の通信状態J「N」に対応するものとする。例えば、図4中の「state_1」は、図2中の通信状態J1に対応する。
すなわち、同図に示した例では、通信状態J1(state_1)が、仮想ネットワークN1(network_no=1)内の通信状態であることが定義されている。さらに、通信状態が通信状態J1である仮想エリアに仮想移動体が位置する場合、仮想移動体が送受信するパケットの遅延時間(Delay)が「10ms」になり、かかるパケットのロス率(Loss)が「0%」になり、エラー率(Error)が「0%」になることが定義されている。
同様に、同図に示した例では、通信状態J2(state_2)が、仮想ネットワークN1(network_no=1)内の通信状態であることが定義されている。さらに、通信状態が通信状態J2である仮想エリアに仮想移動体が位置する場合、仮想移動体が送受信するパケットの遅延時間が「50ms」になり、かかるパケットのロス率が「1%」になり、エラー率が「5%」になることが定義されている。
また、同図に示したシナリオ31は、「/*移動ノード初期状態定義*/」に、仮想移動体が、通信状態が通信状態J1〜J9である仮想エリアのうち、最初にどの仮想エリアに位置するかが定義されている。同図に示した例では、「mn_X」が1つの仮想移動体を示している。以下では、図4中の「mn_X」が、仮想移動体MN「X」であるとする。例えば、図4中の「mn_1」は、仮想移動体MN(Mobile Node)1であるとする。すなわち、同図に示した例では、仮想移動体MN1が、最初に通信状態が通信状態J1である仮想エリアに位置することが定義されている。なお、上述したように、通信状態J1は、「/*各状態のネットワーク特性*/」において、仮想ネットワークN1内の通信状態であることが定義されているので、仮想移動体MN1は、最初に、仮想ネットワークN1内の通信状態が通信状態J1である仮想エリアに位置することになる。
なお、以下では、仮想移動体MN1〜MN3のホームリンクは、シナリオ31の「/*移動ノード初期状態定義*/」に定義されている通信状態が属する仮想ネットワークであるとする。つまり、仮想移動体MN1のホームリンクは仮想ネットワークN1であり、仮想移動体MN2のホームリンクは仮想ネットワークN2であり、仮想移動体MN3のホームリンクは仮想ネットワークN3であるものとする。
同様に、同図に示した例では、仮想移動体MN2が、最初に仮想ネットワークN2内の通信状態が通信状態J4である仮想エリアに位置することが定義されており、仮想移動体MN3が、最初に仮想ネットワークN3内の通信状態が通信状態J7である仮想エリアに位置することが定義されている。
また、同図に示したシナリオ31には、「/*移動ノード時間変化*/」に、仮想移動体MN1〜3が、仮想エリアを移動させる条件(以下、この条件を「移動条件」という)と、仮想移動体MN1〜3の移動先の仮想エリアが定義されている。同図に示した例では、「time」に移動条件が定義されており、具体的には、「10s(秒)」経過した場合に、仮想移動体MN1を、通信状態が通信状態J1である仮想エリアから、通信状態が通信状態J3である仮想エリアへ移動させることが定義されている。また、さらに「15秒」経過した場合に、仮想移動体MN1を、通信状態が通信状態J3である仮想エリアから、通信状態が通信状態J5である仮想エリアへ移動させることが定義されている。
なお、上述したシナリオ31では、所定の時間が経過することを移動条件として定義したが、移動する確率(例えば、「5秒おきに10%の確率で移動する」)などを移動条件としてもよい。また、上述したシナリオ31の定義形式はあくまで一例であり、定義形式は図4に示した例に限られない。例えば、シナリオ31は、各種情報をCSV(Comma Separated Values)形式や、XML(Extensible Markup Language)形式などによって定義されてもよい。
図3の説明に戻って、I/F部110は、情報処理装置30と通信検証装置100との間におけるデータの送受信を行うインタフェースであり、情報処理装置30は、このI/F部110を介して、シナリオ31を状態設定部140へ送信する。
I/F部120は、通信検証装置100とCN10やHA20等との間におけるデータの送受信を行うインタフェースであり、通信検証装置100は、このI/F部120を介して、CN10やHA20との間で通信を行う。
記憶部130は、不揮発性メモリやハードディスク装置などの記憶デバイスであり、アドレス記憶部131と、エラー内容記憶部132と、現通信状態記憶部133とを有する。アドレス記憶部131は、通信検証装置100が生成する仮想ネットワークのHoAを記憶する。このアドレス記憶部131は、後述する初期設定部141によって初期設定される。
アドレス記憶部131の一例を図5に示す。同図に示すように、アドレス記憶部131は、ネットワーク番号に対応付けて、HoAといった項目を有する。ネットワーク番号は、仮想ネットワークを識別するための番号を示す。なお、同図に示したアドレス記憶部131では、図2に示した仮想ネットワークに付した参照符号をネットワーク番号としている。HoAは、仮想ネットワークのHoAを示す。
すなわち、図5に示したアドレス記憶部131の1行目は、仮想ネットワークN1のHoAが「192.168.1.0」であることを示し、図5に示したアドレス記憶部131の2行目は、仮想ネットワークN2のHoAが「192.168.2.0」であることを示している。
エラー内容記憶部132は、仮想ネットワーク内の各通信状態におけるエラー内容を記憶する。このエラー内容記憶部132は、初期設定部141によって初期設定される。エラー内容記憶部132の一例を図6に示す。同図に示すように、エラー内容記憶部132は、状態番号に対応付けて、遅延時間と、ロス率と、エラー率といった項目を有する。
状態番号は、仮想ネットワーク内の通信状態を識別するための番号を示す。なお、同図に示したエラー内容記憶部132では、図2に示した通信状態に付した参照符号を状態番号としている。遅延時間は、仮想移動体MN1〜MN3とCN10等との間で行われる通信の遅延時間を示す。
ロス率は、仮想移動体MN1〜MN3とCN10等との間で送受信されるパケットのパケットロス率を示す。例えば、ロス率が「10%」である場合、仮想移動体MN1〜MN3は、生成したパケットのうち「10%」を送信しない。言い換えれば、ロス率が「10%」である場合、仮想移動体MN1〜MN3は、生成したパケットのうち「90%」をCN10等へ送信する。
エラー率は、仮想移動体MN1〜MN3とCN10等との間で送受信されるパケットのパケットエラー率を示す。例えば、エラー率が「5%」である場合、仮想移動体MN1〜MN3は、生成したパケット内の「5%」のデータを化けさせて(誤りデータにさせて)、CN10等へ送信する。
すなわち、図6に示したエラー内容記憶部132の1行目は、通信状態が通信状態J1である仮想エリアに仮想移動体MN1〜MN3が位置する場合、仮想移動体MN1〜MN3が、ロス率「0%」かつエラー率「0%」のパケットを、「10ms」遅延させて送受信することを示している。また、図6に示したエラー内容記憶部132の2行目は、通信状態が通信状態J2である仮想エリアに仮想移動体MN1〜MN3が位置する場合、仮想移動体MN1〜MN3が、ロス率「1%」かつエラー率「5%」のパケットを、「50ms」遅延させて送受信することを示している。
現通信状態記憶部133は、仮想移動体MN1〜MN3が現在位置している仮想エリアを記憶する。この現通信状態記憶部133は、初期設定部141によって初期設定され、また、後述する移動体移動部142によって更新される。
現通信状態記憶部133の一例を図7に示す。同図に示すように、現通信状態記憶部133は、仮想移動体番号に対応付けて、ネットワーク番号と、状態番号といった項目を有する。
仮想移動体番号は、通信検証装置100が生成する仮想移動体MN1〜MN3を識別するための番号を示す。なお、同図に示した現通信状態記憶部133、上述した仮想移動体に付した参照符号を仮想移動体番号としている。ネットワーク番号は、図5に示したアドレス記憶部131のネットワーク番号に対応する。状態番号は、図6に示したエラー内容記憶部132の状態番号に対応する。
すなわち、図7に示した現通信状態記憶部133の1行目は、仮想移動体MN1が、現在、仮想ネットワークN1内の通信状態が通信状態J1である仮想エリアに位置していることを示している。また、図7に示した現通信状態記憶部133の2行目は、仮想移動体MN2が、現在、仮想ネットワークN2内の通信状態が通信状態J4である仮想エリアに位置していることを示している。
図3に示した状態設定部140は、記憶部130に各種情報を初期設定したり、更新したりする処理部であり、初期設定部141と、移動体移動部142とを有する。初期設定部141は、情報処理装置30から受け付けたシナリオ31に定義されている各種情報に基づいて、記憶部130の各種記憶部に初期情報を設定する処理部である。ここで、図4に示したシナリオ31を受け付けた場合を例に挙げて、初期設定部141による初期情報設定処理について具体的に説明する。
図4に示したシナリオ31を受け付けた場合、初期設定部141は、シナリオ31の「/*ネットワーク定義*/」に定義されている仮想ネットワークN1〜N3のHoAを、アドレス記憶部131に設定する。すなわち、初期設定部141は、図5に示したアドレス記憶部131のように、ネットワーク番号「N1」に対応付けて、HoA「192.168.1.0」を設定する。同様に、初期設定部141は、ネットワーク番号「N2」に対応付けて、HoA「192.168.2.0」を設定し、ネットワーク番号「N3」に対応付けて、HoA「192.168.20.0」を設定する。
また、初期設定部141は、図4に示したシナリオ31の「/*各状態のネットワーク特性*/」に定義されている通信状態J1〜J9のエラー内容(遅延時間等)を、エラー内容記憶部132に設定する。すなわち、初期設定部141は、図6に示したエラー内容記憶部132のように、状態番号「J1」に対応付けて、遅延時間「10ms」と、ロス率「0%」と、エラー率「0%」とを設定する。同様に、初期設定部141は、状態番号「J2」〜「J9」に対応付けて、遅延時間と、ロス率と、エラー率とを設定する。
また、初期設定部141は、図4に示したシナリオ31の「/*移動ノード初期状態定義*/」に定義されている仮想移動体が最初に位置する仮想エリアの通信状態を、現通信状態記憶部133に設定する。すなわち、初期設定部141は、図7に示した現通信状態記憶部133のように、仮想移動体番号「MN1」に対応付けて、状態番号「J1」を設定する。このとき、初期設定部141は、シナリオ31の「/*各状態のネットワーク特性*/」に定義されている「network_no=X」に基づいて、状態番号「J1」が仮想ネットワークN1内の通信状態であることを取得して、現通信状態記憶部133のネットワーク番号に「N1」を設定する。同様に、初期設定部141は、仮想移動体番号「MN2」に対応付けて、ネットワーク番号「N2」と、状態番号「J4」とを設定する。
移動体移動部142は、情報処理装置30から受け付けたシナリオ31に定義されている各種情報に基づいて、仮想移動体が位置する仮想エリアを移動させる処理部である。ここで、図4に示したシナリオ31を受け付けた場合を例に挙げて、移動体移動部142による移動体移動処理について具体的に説明する。
図4に示したように、シナリオ31の「/*移動ノード時間変化*/」には、「10秒」経過した場合に、仮想移動体MN1を、通信状態が通信状態J1である仮想エリアから、通信状態が通信状態J3である仮想エリアへ移動させることが定義されている。したがって、移動体移動部142は、初期設定部141による初期設定処理が終了してから「10秒」経過した後に、仮想移動体番号「MN1」に対応する現通信状態記憶部133の状態番号を、「J1」から「J3」へ更新する。なお、通信状態J3は、仮想ネットワークN1内の通信状態であるため、移動体移動部142は、仮想移動体番号「MN1」に対応する現通信状態記憶部133のネットワーク番号を「N1」のままとする。
さらに、図4に示したシナリオ31には、「15秒」経過した場合に、仮想移動体MN1を、通信状態が通信状態J3である仮想エリアから、通信状態が通信状態J4である仮想エリアへ移動させることが定義されている。したがって、移動体移動部142は、前述した仮想移動体MN1を通信状態J1から通信状態J3へ移動させる処理が終了してから「15秒」経過した後に、仮想移動体番号「MN1」に対応する現通信状態記憶部133の状態番号を、「J3」から「J5」へ更新する。このとき、状態J5が仮想ネットワークN2内の通信状態であるため、移動体移動部142は、仮想移動体番号「MN1」に対応する現通信状態記憶部133のネットワーク番号を「N1」から「N2」へ更新する。
通信部150は、情報処理装置30からの指示に従って、仮想移動体と、CN10やHA20との間で通信を行わせる処理部であり、通信モジュール151と、アドレスフィルタ部152と、エミュレート部153と、ログ出力部154とを有する。
通信モジュール151は、CN通信部151aと、HA通信部151bとを有する。CN通信部151aは、仮想移動体MN1〜MN3とCN10との間の通信を実現するためのモジュールである。
具体的には、CN通信部151aは、情報処理装置30から、所定の仮想移動体MN1〜MN3とCN10との間で通信を行うよう指示を受け付けた場合に、かかる所定の仮想移動体MN1〜MN3が現在位置している仮想ネットワークのネットワーク番号を、現通信状態記憶部133から取得する。続いて、CN通信部151aは、アドレス記憶部131から、前述において取得したネットワーク番号に対応するHoAを取得する。続いて、CN通信部151aは、取得したHoAを、送信元アドレスに設定したパケットを生成して、生成したパケットをエミュレート部153へ出力する。
また、CN通信部151aは、CN10から通信検証装置100に対して所定のパケットが送信された場合に、かかるパケットを、I/F部120と、エミュレート部153と、アドレスフィルタ部152とを介して受信する。
例えば、情報処理装置30が、CN通信部151aに対して、仮想移動体MN1からCN10に対してパケットを送信するように指示をしたとする。なお、ここでは、アドレス記憶部131は、図5に示した状態であるものとする。また、現通信状態記憶部133は、図7に示した状態であるものとする。かかる場合、CN通信部151aは、現通信状態記憶部133から、仮想移動体MN1が現在位置している仮想ネットワークのネットワーク番号「N1」を取得する。続いて、CN通信部151aは、アドレス記憶部131から、ネットワーク番号「N1」に対応するHoA「192.168.1.0」を取得する。そして、CN通信部151aは、取得したHoA「192.168.1.0」を、送信元アドレスに設定したパケットを生成する。
HA通信部151bは、仮想移動体MN1〜MN3とHA20との間の通信を実現するためのモジュールである。具体的には、HA通信部151bは、情報処理装置30から、所定の仮想移動体MN1〜MN3とHA20との間で通信を行うよう指示を受け付けた場合に、かかる所定の仮想移動体MN1〜MN3が現在位置している仮想ネットワークのネットワーク番号を、現通信状態記憶部133から取得する。続いて、HA通信部151bは、アドレス記憶部131から、前述において取得したネットワーク番号に対応するHoAを取得する。続いて、HA通信部151bは、取得したHoAを含む位置登録メッセージを生成して、生成した位置登録メッセージをエミュレート部153へ出力する。
また、HA通信部151bは、HA20から通信検証装置100に対して位置登録応答(Registration Response)メッセージが送信された場合に、かかる位置登録応答メッセージを、I/F部120と、エミュレート部153と、アドレスフィルタ部152とを介して受信する。また、HA通信部151bは、HA20から通信検証装置100に対してカプセル化されたパケットが送信された場合に、かかるパケットを、I/F部120と、エミュレート部153と、アドレスフィルタ部152とを介して受信する。
例えば、情報処理装置30が、HA通信部151bに対して、仮想移動体MN1からHA20に対して位置登録メッセージを送信するように指示をしたとする。なお、ここでは、アドレス記憶部131は、図5に示した状態であるものとする。また、現通信状態記憶部133は、図7に示した状態ではなく、仮想移動体番号「MN1」に対応するネットワーク番号に「N2」が記憶されており、状態番号に「J5」が記憶されているものとする。かかる場合、HA通信部151bは、現通信状態記憶部133から、仮想移動体MN1が現在位置している仮想ネットワークのネットワーク番号「N2」を取得する。続いて、HA通信部151bは、アドレス記憶部131から、ネットワーク番号「N2」に対応するHoA「192.168.2.0」を取得する。そして、HA通信部151bは、取得したHoA「192.168.2.0」を含む位置登録メッセージを生成する。
アドレスフィルタ部152は、CN10またはHA20から受信したパケットや位置登録応答メッセージのうち、通信検証装置100が生成した仮想移動体MN1〜MN3宛のパケット等以外を廃棄する処理部である。
具体的には、アドレスフィルタ部152は、CN10またはHA20から受信したパケット等に設定されている宛先アドレスが、アドレス記憶部131に記憶されているHoAに含まれているか否かを判定する。そして、受信したパケット等に設定されている宛先アドレスが、アドレス記憶部131のHoAに含まれている場合、アドレスフィルタ部152は、かかるパケット等を通信モジュール151へ出力する。一方、受信したパケット等に設定されている宛先アドレスが、アドレス記憶部131のHoAに含まれていない場合、アドレスフィルタ部152は、かかるパケット等を廃棄する。
エミュレート部153は、仮想移動体が位置する仮想エリアの通信状態に基づいて、仮想移動体と、CN10やHA20との間で行われる通信に様々なエラーを発生させる処理部である。
具体的には、エミュレート部153は、通信モジュール151からパケットや位置登録メッセージを受け付けた場合に、かかるパケットの送信元の仮想移動体が現在位置する仮想エリアの状態番号を、現通信状態記憶部133から取得する。そして、取得した状態番号に対応する遅延時間等のエラー内容をエラー内容記憶部132から取得して、取得したエラー内容に従って、通信モジュール151から受け付けたパケット等にエラーを発生させる。
また、エミュレート部153は、I/F部120を介して、CN10やHA20から所定のパケットや位置登録応答メッセージを受け付けた場合に、かかるパケット等の宛先の仮想移動体が現在位置する仮想エリアに対応する通信状態を、現通信状態記憶部133から取得する。そして、取得した通信状態に対応するエラー内容をエラー内容記憶部132から取得して、取得したエラー内容を受信したパケット等に発生させる。
例えば、情報処理装置30が、仮想移動体MN1からCN10に対してパケットを送信するように指示をしたとする。なお、ここでは、エラー内容記憶部132は図6に示した状態であり、現通信状態記憶部133は図7に示した状態であるものとする。かかる場合、CN通信部151aは、所定のパケットをエミュレート部153へ出力する。
CN通信部151aからパケットを受け付けたエミュレート部153は、まず、現通信状態記憶部133から、仮想移動体MN1が現在位置している仮想エリアの通信状態として、状態番号「J1」を取得する。続いて、エミュレート部153は、エラー内容記憶部132から、状態番号「J1」に対応する遅延時間「10ms」と、ロス率「0%」と、エラー率「0%」とを取得する。続いて、エミュレート部153は、「10ms」待機した後に、CN通信部151aから受け取ったパケットを、CN10へ送信する。なお、ここでは、ロス率が「0%」であり、エラー率が「0%」であるため、エミュレート部153は、送信するパケットにロスおよびエラーを発生させない。
また、例えば、情報処理装置30が、仮想移動体MN1からHA20に対して位置登録メッセージを送信するように指示をしたとする。なお、ここでは、エラー内容記憶部132は、図6に示した状態であるものとする。また、現通信状態記憶部133は、図7に示した状態ではなく、仮想移動体番号「MN1」に対応するネットワーク番号に「N2」が記憶されており、状態番号に「J5」が記憶されているものとする。かかる場合、HA通信部151bは、所定の位置登録メッセージをエミュレート部153へ出力する。
HA通信部151bから位置登録メッセージを受け付けたエミュレート部153は、まず、現通信状態記憶部133から、仮想移動体MN1が現在位置している仮想エリアの通信状態として、状態番号「J5」を取得する。続いて、エミュレート部153は、エラー内容記憶部132から、状態番号「J5」に対応する遅延時間「70ms」と、ロス率「5%」と、エラー率「5%」とを取得する。続いて、エミュレート部153は、HA通信部151bから受け取った位置登録メッセージの「5%」をロスさせるとともに、位置登録メッセージ内の「5%」のデータを化けさせる。そして、エミュレート部153は、「70ms」待機した後に、ロスおよびエラーを発生させた位置登録メッセージを、HA20へ送信する。
また、例えば、CN10から仮想移動体MN1宛のパケットを受信したとする。なお、ここでは、エラー内容記憶部132は、図6に示した状態であるものとする。また、現通信状態記憶部133は、図7に示した状態ではなく、仮想移動体番号「MN1」に対応するネットワーク番号に「N2」が記憶されており、状態番号に「J5」が記憶されているものとする。
かかる場合、エミュレート部153は、まず、現通信状態記憶部133から、仮想移動体MN1が現在位置している仮想エリアに対応する通信状態として、状態番号「J5」を取得する。続いて、エミュレート部153は、エラー内容記憶部132から、状態番号「J5」に対応する遅延時間「70ms」と、ロス率「5%」と、エラー率「5%」とを取得する。続いて、エミュレート部153は、CN10から受信したパケットの「5%」をロスさせるとともに、CN10から受信したパケットの「5%」のデータを化けさせる。そして、エミュレート部153は、「70ms」待機した後に、ロスおよびエラーを発生させたパケットを、アドレスフィルタ部152へ送信する。
ログ出力部154は、仮想端末装置MN1〜MN3と、CN10やHA20との間における通信の状況を所定のファイルに出力する処理部である。例えば、ログ出力部154は、CN10やHA20から受信したパケットや位置登録応答メッセージのロス率やエラー率を所定のファイルに出力する。また、例えば、ログ出力部154は、所定のパケット等をCN10やHA20へ送信してから、アクノリッジが返ってくるまでの時間をファイルに出力する。
次に、通信検証装置100およびHA20による位置登録処理について説明する。図8は、通信検証装置100およびHA20による位置登録処理手順を示すシーケンス図である。ここでは、仮想移動体MN1がHA20へ位置登録メッセージを送信する場合における位置登録処理手順について説明する。
同図に示すように、情報処理装置30によって、仮想移動体MN1からHA20へ位置登録メッセージを送信するように指示された場合、通信検証装置100は、仮想移動体MN1が現在位置している仮想エリアが属する仮想ネットワークのHoAを含む位置登録メッセージをHA20へ送信する(ステップS101)。
かかる位置登録メッセージを受信したHA20は、HoAとCoA(Care of Address:気付アドレス)とを対応付けて所定記憶部に記憶した後、位置登録応答メッセージを通信検証装置100へ送信する(ステップS102)。
その後、CN10が仮想移動体MN1宛へパケットを送信すると(ステップS103)、HA20は、かかるパケットを捕獲してパケットをカプセル化した後に、カプセル化したパケットを通信検証装置100へ送信する(ステップS104)。
次に、図3に示した初期設定部141による初期情報設定処理について説明する。図9は、図3に示した初期設定部141による初期情報設定処理手順を示すフローチャートである。図9に示すように、情報処理装置30からシナリオ31を受け付けた場合に(ステップS201肯定)、通信検証装置100の初期設定部141は、シナリオ31に定義されている仮想ネットワークのHoAを、アドレス記憶部131に設定する(ステップS202)。
続いて、初期設定部141は、シナリオ31に定義されている遅延時間等のエラー内容を、エラー内容記憶部132に設定する(ステップS203)。続いて、初期設定部141は、シナリオ31に定義されている仮想移動体が最初に位置する仮想エリアの通信状態を、現通信状態記憶部133に設定する(ステップS204)。
次に、図3に示した移動体移動部142による移動体移動処理について説明する。図10は、図3に示した移動体移動部142による移動体移動処理手順を示すフローチャートである。図10に示すように、移動体移動部142は、シナリオ31に定義されている移動条件を満たした場合に(ステップS301肯定)、シナリオ31に定義されている情報に基づいて、現通信状態記憶部133の状態番号に更新する(ステップS302)。
このとき、仮想ネットワークを跨って仮想移動体を移動させた場合(ステップS303肯定)、移動体移動部142は、現通信状態記憶部133のネットワーク番号を、仮想移動体の移動先の仮想エリアが属する仮想ネットワークのネットワーク番号に更新する(ステップS304)。
次に、図3に示した通信部150によるパケット等の送信処理について説明する。図11は、図3に示した通信部150によるパケット等の送信処理手順を示すフローチャートである。ここでは、仮想移動体がCN10へパケットを送信する場合における送信処理手順について説明する。
図11に示すように、情報処理装置30から、所定の仮想移動体とCN10との間で通信を行うように指示された場合(ステップS401肯定)、通信部150のCN通信部151aは、かかる所定の仮想移動体が現在位置している仮想ネットワークのネットワーク番号を、現通信状態記憶部133から取得する(ステップS402)。
続いて、CN通信部151aは、アドレス記憶部131から、上記ステップS402において取得したネットワーク番号に対応するHoAを取得して(ステップS403)、取得したHoAを送信元アドレスに設定したパケットを生成する(ステップS404)。
続いて、エミュレート部153は、かかる所定の仮想移動体が現在位置している仮想エリアの状態番号を、現通信状態記憶部133から取得する(ステップS405)。続いて、エミュレート部153は、取得した状態番号に対応する遅延時間、ロス率、エラー率をエラー内容記憶部132から取得する(ステップS406)。
続いて、エミュレート部153は、エラー内容記憶部132から取得したロス率に従って、CN通信部151aによって生成されたパケットにロスを発生させる(ステップS407)。続いて、エミュレート部153は、エラー内容記憶部132から取得したエラー率に従って、CN通信部151aによって生成されたパケットにエラーを発生させる(ステップS408)。そして、エミュレート部153は、エラー内容記憶部132から取得した遅延時間が経過した後に(ステップS409肯定)、エラーを発生させたパケットを、I/F部120を介して、CN10へ送信する(ステップS410)。
次に、図3に示した通信部150によるパケット等の受信処理について説明する。図12は、図3に示した通信部150によるパケット等の受信処理手順を示すフローチャートである。なお、ここでは、通信検証装置100がCN10から所定のパケットを受信した場合における受信処理手順ついて説明する。
図12に示すように、CN10からパケットを受信した場合(ステップS501肯定)、通信検証装置100のエミュレート部153は、現通信状態記憶部133から、受信したパケットの宛先の仮想移動体が現在位置している仮想エリアに対応する状態番号を取得する(ステップS502)。続いて、エミュレート部153は、エラー内容記憶部132から、上記ステップS502において取得した状態番号に対応する遅延時間、ロス率、エラー率を取得する(ステップS503)。
続いて、エミュレート部153は、エラー内容記憶部132から取得したロス率に従って、CN10から受信したパケットにロスを発生させるとともに(ステップS504)、エラー内容記憶部132から取得したエラー率に従って、CN10から受信したパケットにエラーを発生させる(ステップS505)。続いて、エミュレート部153は、エラー内容記憶部132から取得した遅延時間が経過した後に(ステップS506肯定)、ロスおよびエラーを発生させたパケットを、アドレスフィルタ部152へ出力する(ステップS507)。
エミュレート部153からパケットを受け付けたアドレスフィルタ部152は、かかるパケットに設定されている宛先アドレスが、アドレス記憶部131に記憶されているHoAに含まれているか否かを判定する。受信したパケットに設定されている宛先アドレスが、アドレス記憶部131のHoAに含まれている場合(ステップS508肯定)、アドレスフィルタ部152は、かかるパケット等を通信モジュール151へ出力する(ステップS509)。一方、受信したパケット等に設定されている宛先アドレスが、アドレス記憶部131のHoAに含まれていない場合(ステップS508否定)、アドレスフィルタ部152は、かかるパケット等を廃棄する(ステップS510)。
アドレスフィルタ部152からパケットを受け付けた通信モジュール151のCN通信部151aは、パケットに含まれているユーザデータの取得などの所定の受信処理を行う(ステップS511)。そして、ログ出力部154は、仮想移動体MN1とCN10との間における通信の状況を所定のファイルに出力する(ステップS512)。
上述してきたように、本実施例に係る通信検証装置100は、シナリオ31に基づいて、仮想ネットワークN1〜N3と、仮想移動体MN1〜MN3とを生成し、仮想移動体MN1〜MN3を仮想ネットワークN1〜N3内で移動させ、仮想移動体が位置する仮想エリアの通信状態(遅延時間、ロス率、エラー率など)に従って、仮想移動体とCN10等との間で通信を行わせるので、様々な通信状態によってCN10等と通信を行うことができる。すなわち、本実施例に係る通信検証装置100を用いれば、大規模なネットワークを実際に構築したり、移動体を実際に移動させたりすることなく、様々なエラーを意図的かつ容易に発生させることができ、その結果、様々な環境でモバイルネットワーク関連機器の研究開発や検証等を行うことができる。
また、本実施例に係る通信検証装置100は、複数の仮想ネットワークN1〜N3を生成することが可能であるため、大規模なネットワークを実際に構築したり、移動体を実際に移動させたりすることなく、通信中に移動体のIPアドレスが変更される環境や、ハンドオーバが発生する環境を容易に構築することができ、かかる環境下で、モバイルネットワーク関連機器の研究開発や検証を行うことができる。
また、本実施例に係る通信検証装置100は、シナリオ31に定義されている情報を変更するだけで、仮想ネットワークの構成や、各通信状態におけるエラー内容や、仮想移動体の構成等を極めて容易に変更することができる。
なお、上記実施例では、情報処理装置30からの指示に従って、通信検証装置100がCN10に対してパケットを送信したり、HA20に対して位置登録メッセージを送信したりする例を示したが、通信検証装置100は、定期的に(例えば、1分に1回)、CN10に対してパケットを送信したり、HA20に対して位置登録メッセージを送信するようにしてもよい。
また、上記実施例では、情報処理装置30からの指示に従って、通信検証装置100がHA20に対して位置登録メッセージを送信する例を示したが、通信検証装置100は、仮想移動体が仮想ネットワークを跨って仮想エリアを移動した場合に、自動的に、HA20に対して位置登録メッセージを送信するようにしてもよい。かかる場合、通信検証装置100のHA通信部151bが現通信状態記憶部133を監視して、現通信状態記憶部133のネットワーク番号が更新された場合に、HA20に対して位置登録メッセージを送信する。
また、上記実施例では、エミュレート部153が、パケット等の送信時および受信時の両方において、遅延時間等のエラーを発生させる例を示したが、エミュレート部153は、送信時の場合のみパケット等にエラーを発生させてもよいし、受信時の場合のみパケット等にエラーを発生させてもよい。
また、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散、統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散、統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPU(Central Processing Unit)および当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、図3に示した通信検証装置100の構成は、要旨を逸脱しない範囲で種々に変更することができる。例えば、通信検証装置100の状態設定部140および通信部150の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、通信検証装置100と同等の機能を実現することもできる。以下に、状態設定部140および通信部150の機能をソフトウェアとして実装した通信検証プログラム1071を実行するコンピュータの一例を示す。
図13は、通信検証プログラム1071を実行するコンピュータ1000を示す機能ブロック図である。このコンピュータ1000は、各種演算処理を実行するCPU1010と、ユーザからのデータの入力を受け付ける入力装置1020と、各種情報を表示するモニタ1030と、記録媒体からプログラム等を読み取る媒体読取り装置1040と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置1050と、各種情報を一時記憶するRAM(Random Access Memory)1060と、ハードディスク装置1070とをバス1080で接続して構成される。
そして、ハードディスク装置1070には、図3に示した状態設定部140および通信部150と同様の機能を有する通信検証プログラム1071と、図3に示した記憶部130に記憶される各種データに対応する通信検証用データ1072と、図3に示したシナリオ31とが記憶される。なお、通信検証用データ1072またはシナリオ31を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
そして、CPU1010が通信検証プログラム1071をハードディスク装置1070から読み出してRAM1060に展開することにより、通信検証プログラム1071は、通信検証プロセス1061として機能するようになる。そして、通信検証プロセス1061は、通信検証用データ1072およびシナリオ31から読み出した情報等を適宜RAM1060上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
なお、上記の通信検証プログラム1071は、必ずしもハードディスク装置1070に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ1000がこれらからプログラムを読み出して実行するようにしてもよい。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)モバイルネットワークに接続され、該モバイルネットワークを介して、仮想的な移動体である仮想移動体と所定の端末装置との間で通信を行わせる通信検証装置であって、
当該の通信検証装置によって生成される仮想的なネットワークである仮想ネットワーク内における複数の仮想的なエリアである仮想エリアに対応する通信状態を識別するための状態番号に対応付けて該通信状態時に発生するエラー内容と、前記仮想移動体を前記仮想ネットワーク内における複数の仮想エリアのいずれかに移動させる移動条件と、が定義されているシナリオに基づいて、前記仮想移動体を前記複数の仮想エリアのいずれかに移動させる移動体移動手段と、
前記移動体移動手段によって移動された仮想移動体が位置する仮想エリアに対応するエラー内容を発生させて、前記仮想移動体と前記端末装置との間で通信を行わせる通信手段と
を備えたことを特徴とする通信検証装置。
(付記2)前記シナリオは、複数の仮想ネットワークを識別するためのネットワーク番号に対応付けて、該仮想ネットワークのホームアドレスがさらに定義され、
前記移動体移動手段は、前記仮想移動体を、前記複数の仮想ネットワークに属する複数の仮想エリアのいずれかに移動させ、
前記通信手段は、前記移動体移動手段によって移動された仮想移動体が位置する仮想エリアが属する仮想ネットワークのホームアドレスを用いて、前記仮想移動体と前記端末装置との間で通信を行わせることを特徴とする付記1に記載の通信検証装置。
(付記3)前記通信手段は、前記移動体移動手段によって、前記仮想移動体が、該仮想移動体が現在位置する仮想エリアである現仮想エリアから、該現仮想エリアが属する仮想ネットワークと異なる仮想ネットワークに属する仮想エリアである新仮想エリアへ移動された場合に、前記新仮想エリアが属する仮想ネットワークのホームアドレスを含むパケットを、前記仮想移動体から前記端末装置であるホームエージェントへ送信させることを特徴とする付記2に記載の通信検証装置。
(付記4)前記通信手段は、前記端末装置から受信したパケットである受信パケットの宛先アドレスが、前記シナリオに定義されているホームアドレスに含まれない場合に、前記受信パケットを廃棄するアドレスフィルタ手段をさらに備えたことを特徴とする付記2または3に記載の通信検証装置。
(付記5)前記シナリオは、前記エラー内容として、前記端末装置と送受信を行うパケットのロス率およびエラー率と、パケットを送受信する場合に発生させる遅延時間とが定義され、
前記通信手段は、前記仮想移動体から前記端末装置に対してパケットを送信させる場合に、前記シナリオに定義されているロス率およびエラー率に従って、送信パケットにロスおよびエラーを発生させ、前記遅延時間が経過した後に該送信パケットを送信させ、前記仮想移動体が前記端末装置からパケットを受信した場合に、前記シナリオに定義されているロス率およびエラー率に従って、受信パケットにロスおよびエラーを発生させ、前記遅延時間が経過した後に該受信パケットを受信したものとして受信処理を行わせることを特徴とする付記1〜4のいずれか一つに記載の通信検証装置。
(付記6)前記通信手段は、前記端末装置との間における通信の状況を所定のファイルに出力するログ出力手段をさらに備えたことを特徴とする付記1〜5のいずれか一つに記載の通信検証装置。
(付記7)前記ネットワーク番号に対応付けて、前記ホームアドレスを記憶するアドレス記憶手段と、
前記ネットワーク番号に対応付けて、現仮想エリアに対応する通信状態の状態番号を記憶する現通信状態記憶手段と、
前記状態番号に対応付けて、前記エラー内容を記憶するエラー内容記憶手段とをさらに備え、
前記アドレスフィルタ手段は、前記受信パケットの宛先アドレスが、前記アドレス記憶手段に記憶されているホームアドレスに含まれない場合に、前記受信パケットを廃棄し、
前記通信手段は、前記エラー内容記憶手段から、前記現通信状態記憶手段に記憶されている状態番号に対応するエラー内容を取得し、該エラー内容に従ってエラーを発生させて、前記仮想移動体と前記端末装置との間で通信を行わせることを特徴とする付記1〜6のいずれか一つに記載の通信検証装置。
(付記8)モバイルネットワークを介して、該モバイルネットワークに接続された通信検証装置によって生成される仮想的な移動体である仮想移動体と、所定の端末装置との間で通信を行わせる通信検証方法であって、
前記通信検証装置が、
当該の通信検証装置によって生成される仮想的なネットワークである仮想ネットワーク内における複数の仮想的なエリアである仮想エリアに対応する通信状態を識別するための状態番号に対応付けて該通信状態時に発生するエラー内容と、前記仮想移動体を前記仮想ネットワーク内における複数の仮想エリアのいずれかに移動させる移動条件と、が定義されているシナリオに基づいて、前記仮想移動体を前記複数の仮想エリアのいずれかに移動させる移動体移動工程と、
前記移動体移動工程によって移動された仮想移動体が位置する仮想エリアに対応するエラー内容を発生させて、前記仮想移動体と前記端末装置との間で通信を行わせる通信工程と
を含んだことを特徴とする通信検証方法。
(付記9)モバイルネットワークを介して、該モバイルネットワークに接続された通信検証装置によって生成される仮想的な移動体である仮想移動体と、所定の端末装置との間で通信を行わせる通信検証方法をコンピュータに実行させる通信検証プログラムであって、
前記通信検証装置によって生成される仮想的なネットワークである仮想ネットワーク内における複数の仮想的なエリアである仮想エリアに対応する通信状態を識別するための状態番号に対応付けて該通信状態時に発生するエラー内容と、前記仮想移動体を前記仮想ネットワーク内における複数の仮想エリアのいずれかに移動させる移動条件と、が定義されているシナリオに基づいて、前記仮想移動体を前記複数の仮想エリアのいずれかに移動させる移動体移動手順と、
前記移動体移動手順によって移動された仮想移動体が位置する仮想エリアに対応するエラー内容を発生させて、前記仮想移動体と前記端末装置との間で通信を行わせる通信手順と
をコンピュータに実行させることを特徴とする通信検証プログラム。