(57)【要約】【課題】拡張性の優れたネットワークエミュレータ装置を提供する。【解決手段】インタフェースモジュール２２にはバーチャルノード２７−１乃至２７−Ｎが設けられ、トラヒックジェネレータ２４は、所定のタイミングで、バーチャルノード２７−１乃至２７−Ｎ間に仮想的に流れるトラヒックに関する情報を、バーチャルノード２７−１乃至２７−Ｎを介してネットワークコントローラ１３に送信する。バーチャルノード２７−１乃至２７−Ｎは、ネットワークコントローラ１３から送信されてくるパスの変更の要求を受信してリソースシミュレータ２３に供給し、リソースシミュレータ２３は、そのパスの変更の要求に対する処理を行い、要求に対する処理結果を示す情報をバーチャルノード２７−１乃至２７−Ｎを介してネットワークコントローラ１３に送信する。本発明は、例えば、ネットワークコントローラの試験を行うネットワークエミュレータに適用できる。【選択図】図２
2011101140.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードにより構成されるネットワークを制御するネットワークコントローラに接続されるネットワークエミュレータ装置において、
複数の前記ノードそれぞれに対応して仮想的に構成される複数の仮想ノードが設けられ、前記ネットワークコントローラと通信を行うインタフェース手段と、
複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間を仮想的に接続するパスの変更の要求に応じた処理を行うパス処理手段と、
複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間に流れるトラヒックを仮想的に発生させるトラヒック生成手段と
を備え、
前記トラヒック生成手段は、所定のタイミングで、前記仮想ノード間に仮想的に流れるトラヒックに関する情報を前記仮想ノードに供給し、
前記仮想ノードは、前記トラヒック生成手段から供給される前記トラヒックに関する情報を前記ネットワークコントローラに送信し、前記ネットワークコントローラから送信されてくる前記パスの変更の要求を受信して前記パスの変更の要求を前記パス処理手段に供給し、
前記パス処理手段は、前記パスの変更の要求に対する処理を行い、前記要求に対する処理結果を示す情報を複数の前記仮想ノードに供給し、
前記仮想ノードは、前記トラヒック生成手段から供給される前記処理結果を示す情報を前記ネットワークコントローラに送信する
ネットワークエミュレータ装置。
【請求項２】
前記パス処理手段は、前記ネットワークコントローラから前記仮想ノードを介して、前記仮想ノード間にパスを設定することが要求されたとき、複数の前記仮想ノードに現在設定されているパスの使用帯域および使用可能帯域のリソースに関するリソース情報に基づいて前記要求に対する処理を行う
請求項１に記載のネットワークエミュレータ装置。
【請求項３】
前記インタフェース手段に設けられる複数の前記仮想ノードと前記パス処理手段との間の通信、および、前記インタフェース手段に設けられる複数の前記仮想ノードと前記トラヒック生成手段との間の通信には、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）が用いられる
請求項１に記載のネットワークエミュレータ装置。
【請求項４】
前記インタフェース手段、前記パス処理手段、および前記トラヒック生成手段は、複数のコンピュータに実装される
請求項１に記載のネットワークエミュレータ装置。
【請求項５】
前記インタフェース手段に設けられる複数の前記仮想ノードは、前記ネットワークコントローラに対して送信するデータを遅延させる遅延手段をそれぞれ有する
請求項１に記載のネットワークエミュレータ装置。
【請求項６】
所定の故障発生モデルに従ったタイミングで、前記仮想ノード、または前記仮想ノード間のリンクに仮想的に故障を発生させ、故障が発生したことを示す情報を出力する故障発生手段
をさらに備え、
前記インタフェース手段は、前記故障が発生したことを示す情報で指定された前記仮想ノードの機能を停止し、
前記パス処理手段は、前記故障が発生したことを示す情報で指定された前記リンクにより接続されていた前記仮想ノード間のパスを解除する
請求項１に記載のネットワークエミュレータ装置。
【請求項７】
複数のノードにより構成されるネットワークを制御するネットワークコントローラに接続されるネットワークエミュレータ装置の制御方法において、
前記ネットワークエミュレータ装置は、複数の前記ノードそれぞれに対応して仮想的に構成される複数の仮想ノードが設けられ、前記ネットワークコントローラと通信を行うインタフェース手段と、複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間を仮想的に接続するパスの変更の要求に応じた処理を行うパス処理手段と、複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間に流れるトラヒックを仮想的に発生させるトラヒック生成手段とを備え、
前記トラヒック生成手段が、所定のタイミングで、前記仮想ノード間に仮想的に流れるトラヒックに関する情報を前記仮想ノードに供給し、
前記仮想ノードが、前記トラヒック生成手段から供給される前記トラヒックに関する情報を前記ネットワークコントローラに送信し、前記ネットワークコントローラから送信されてくる前記パスの変更の要求を受信して前記パスの変更の要求を前記パス処理手段に供給し、
前記パス処理手段が、前記パスの変更の要求に対する処理を行い、前記要求に対する処理結果を示す情報を複数の前記仮想ノードに供給し、
前記仮想ノードが、前記トラヒック生成手段から供給される前記処理結果を示す情報を前記ネットワークコントローラに送信する
ステップを含むネットワークエミュレータ装置の制御方法。
【請求項８】
複数のノードにより構成されるネットワークを制御するネットワークコントローラに接続されるネットワークエミュレータ装置を制御する処理をコンピュータに実行させるプログラムにおいて、
前記ネットワークエミュレータ装置は、複数の前記ノードそれぞれに対応して仮想的に構成される複数の仮想ノードが設けられ、前記ネットワークコントローラと通信を行うインタフェース手段と、複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間を仮想的に接続するパスの変更の要求に応じた処理を行うパス処理手段と、複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間に流れるトラヒックを仮想的に発生させるトラヒック生成手段とを備え、
前記トラヒック生成手段が、所定のタイミングで、前記仮想ノード間に仮想的に流れるトラヒックに関する情報を前記仮想ノードに供給し、
前記仮想ノードが、前記トラヒック生成手段から供給される前記トラヒックに関する情報を前記ネットワークコントローラに送信し、前記ネットワークコントローラから送信されてくる前記パスの変更の要求を受信して前記パスの変更の要求を前記パス処理手段に供給し、
前記パス処理手段が、前記パスの変更の要求に対する処理を行い、前記要求に対する処理結果を示す情報を複数の前記仮想ノードに供給し、
前記仮想ノードが、前記トラヒック生成手段から供給される前記処理結果を示す情報を前記ネットワークコントローラに送信する
ステップを含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークエミュレータ装置、ネットワークエミュレータ装置の制御方法、およびプログラムに関し、特に、拡張性の優れたネットワークエミュレータ装置、ネットワークエミュレータ装置の制御方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、複数のルータが接続されて構成されるネットワークにおいて、ネットワークコントローラが、各ルータ間のトラヒック需要を予測し、最適な通信環境となるように各ルータ間のパスの設定を行っている。
【０００３】
ところで、近年、様々な種類のアプリケーションが出現しており、例えば、高精細テレビジョンや、ビデオストリーミング、高速データ通信などのように、大容量かつ高品質な通信を要求するアプリケーションによりネットワーク資源が占有されてしまい、ネットワークコントローラが、トラヒック需要を予測することが困難になってきている。
【０００４】
ネットワークを介して様々なサービスを提供する必要があり、ネットワークコントローラは、カスタマの要求に応じて、ネットワークをダイナミックかつ効率的に使用できるように、ネットワークを制御する必要がある。
【０００５】
例えば、非特許文献１で開示されているネットワーク制御装置は、トポロジ情報およびトラヒック情報を収集し、これらの情報と、最適なネットワーク制御ポリシーまたはアルゴリズムとに基づいて、パスの経路計算、設定、および解除を行う。最適なネットワーク制御ポリシーまたはアルゴリズムについては、非特許文献２乃至４に開示されている。
【０００６】
また、このようなネットワーク制御装置を開発する際には、ネットワーク規模に応じた複数の実機のルータを接続して構成されるネットワークを使用し、そのネットワークの構成およびトラヒックに応じてネットワーク制御装置がどのような挙動をするかが監視される。そして、最適な通信環境を実現するように、ネットワーク制御装置に対して各種の設定が行われる。
【０００７】
ところで、ネットワーク制御装置を運用するための試験を実施する際に、実機のルータを接続して大規模なネットワークを構成することは、多大なコストが必要になる。また、現在の通信環境からは想定できない程のトラヒックの変動に対しても正常に制御することができるようなネットワーク制御装置を開発するには、そのような予測困難なトラヒックをネットワークに反映させる必要があるが、実機のルータを接続して構成されるネットワークで、そのようなトラヒック変動を発生させることは困難である。
【０００８】
そこで、本願出願人らは、非特許文献５において、ネットワーク制御装置を運用するための試験において使用されるネットワークエミュレータに関する提案を行っている。
【先行技術文献】
【特許文献】
【０００９】
【非特許文献１】K. Shiomoto, I. Inoue, and E. Oki, ‘‘Network virtualization in highspeedhuge-bandwidth optical circuit switching network,’’ High-Speed Networks 2008 (HSN 2008), IEEE INFOCOM 2008, Apr. 2008.
【非特許文献２】Y. Koizumi, T. Miyamura, S. Arakawa, E. Oki, K. Shiomoto, and M. Murata, ‘‘Stability of virtual network topology control for overlay routing services,‘‘ Journal of Optical Networking, vol. 7, no. 7, pp.704-719, Jul. 2008.
【非特許文献３】K. Shiomoto, E. Oki, W. Imajuku, S. Okamoto, and N. Yamanaka,‘‘Distributed Virtual Network Topology Control Mechanism in GMPLS-Based Multi-Region Networks,‘‘ IEEE Journal on Selected Areas in Communications, vol. 21, no. 8, pp. 1254-1262, Oct. 2003.
【非特許文献４】E. Oki, K. Shiomoto, D. Shimazaki, N. Yamanaka, W. Imajuku, and Y. Takigawa, ‘‘Dynamic Multilayer Routing Schemes in GMPLS-based IP+Optical Networks,‘‘ IEEE Commun. Mag. , pp. 108-114, vol. 43, no.1, Jan. 2005.
【非特許文献５】大木英司，宮村崇，塩本公平，‘‘光インフラ網上でのネットワーク仮想化に向けたネットワークエミュレータアーキテクチャ’’ 電子情報通信学会総合大会講演論文集, vol. 2009, B-12-8, 通信, 2009年3月.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、ネットワークエミュレータを利用してネットワーク制御装置の試験を行う際には、ネットワーク制御装置による制御の対象となるネットワーク規模に応じて、ネットワークエミュレータにより模擬されるネットワークの規模を変更する必要がある。しかしながら、上述のネットワークエミュレータでは、その具体的な構成までは開示されておらず、ネットワーク規模に応じてネットワークエミュレータにより模擬されるネットワークの規模を容易に変更することができるような、拡張性の優れたネットワークエミュレータが求められている。
【００１１】
本発明は、このような状況に鑑みてなされたものであり、拡張性の優れたネットワークエミュレータを提供することができるようにするものである。
【課題を解決するための手段】
【００１２】
本発明の一側面のネットワークエミュレータ装置は、複数のノードにより構成されるネットワークを制御するネットワークコントローラに接続されるネットワークエミュレータ装置であって、複数の前記ノードそれぞれに対応して仮想的に構成される複数の仮想ノードが設けられ、前記ネットワークコントローラと通信を行うインタフェース手段と、複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間を仮想的に接続するパスの変更の要求に応じた処理を行うパス処理手段と、複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間に流れるトラヒックを仮想的に発生させるトラヒック生成手段とを備え、前記トラヒック生成手段は、所定のタイミングで、前記仮想ノード間に仮想的に流れるトラヒックに関する情報を前記仮想ノードに供給し、前記仮想ノードは、前記トラヒック生成手段から供給される前記トラヒックに関する情報を前記ネットワークコントローラに送信し、前記ネットワークコントローラから送信されてくる前記パスの変更の要求を受信して前記パスの変更の要求を前記パス処理手段に供給し、前記パス処理手段は、前記パスの変更の要求に対する処理を行い、前記要求に対する処理結果を示す情報を複数の前記仮想ノードに供給し、前記仮想ノードは、前記トラヒック生成手段から供給される前記処理結果を示す情報を前記ネットワークコントローラに送信する。
【００１３】
本発明の一側面の制御方法またはプログラムは、複数のノードにより構成されるネットワークを制御するネットワークコントローラに接続されるネットワークエミュレータ装置の制御方法、または、そのネットワークエミュレータ装置を制御する処理をコンピュータに実行させるプログラムであって、前記ネットワークエミュレータ装置は、複数の前記ノードそれぞれに対応して仮想的に構成される複数の仮想ノードが設けられ、前記ネットワークコントローラと通信を行うインタフェース手段と、複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間を仮想的に接続するパスの変更の要求に応じた処理を行うパス処理手段と、複数の前記仮想ノードそれぞれと通信し、複数の前記仮想ノード間に流れるトラヒックを仮想的に発生させるトラヒック生成手段とを備え、前記トラヒック生成手段が、所定のタイミングで、前記仮想ノード間に仮想的に流れるトラヒックに関する情報を前記仮想ノードに供給し、前記仮想ノードが、前記トラヒック生成手段から供給される前記トラヒックに関する情報を前記ネットワークコントローラに送信し、前記ネットワークコントローラから送信されてくる前記パスの変更の要求を受信して前記パスの変更の要求を前記パス処理手段に供給し、前記パス処理手段が、前記パスの変更の要求に対する処理を行い、前記要求に対する処理結果を示す情報を複数の前記仮想ノードに供給し、前記仮想ノードが、前記トラヒック生成手段から供給される前記処理結果を示す情報を前記ネットワークコントローラに送信するステップを含む。
【００１４】
本発明の一側面においては、ネットワークエミュレータ装置は、複数のノードそれぞれに対応して仮想的に構成される複数の仮想ノードが設けられ、ネットワークコントローラと通信を行うインタフェース手段と、複数の仮想ノードそれぞれと通信し、複数の仮想ノード間を仮想的に接続するパスの変更の要求に応じた処理を行うパス処理手段と、複数の仮想ノードそれぞれと通信し、複数の仮想ノード間に流れるトラヒックを仮想的に発生させるトラヒック生成手段とを備えて構成される。そして、所定のタイミングで、仮想ノード間に仮想的に流れるトラヒックに関する情報が、仮想ノードを介してネットワークコントローラに送信され、ネットワークコントローラから送信されてくるパスの変更の要求が、複数の仮想ノードを介して供給される。そして、パスの変更の要求に対する処理が行われ、要求に対する処理結果を示す情報が、複数の仮想ノードを介してネットワークコントローラに送信される。
【発明の効果】
【００１５】
本発明の一側面によれば、拡張性の優れたネットワークエミュレータ装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実際に構築されるネットワークと、エミュレータにより模擬されるネットワークとを示す図である。
【図２】本発明を適用したエミュレータの第１の実施の形態の構成例を示すブロック図である。
【図３】パスを設定する処理を説明するフローチャートである。
【図４】パスを解除する処理を説明するフローチャートである。
【図５】ネットワークエミュレータにおいて実行される処理を説明するフローチャートである。
【図６】ネットワークエミュレータの実装例を示す図である。
【図７】ネットワークエミュレータの他の実装例を示す図である。
【図８】ネットワークエミュレータの第２の実施の形態の構成例を示すブロック図である。
【図９】ネットワークエミュレータの第３の実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１８】
まず、図１を参照して、実際に構築されたネットワークによるネットワークコントローラの試験と、エミュレータにより仮想的に構築されたネットワークによるネットワークコントローラの試験とについて説明する。
【００１９】
図１Ａに示すように、ネットワーク１１は、ノード１２−１乃至１２−４が接続されて構成されており、ノード１２−１乃至１２−４間のパス（Path）の設定および解除がネットワークコントローラ１３により制御される。
【００２０】
ノード１２−１乃至１２−４は、実機のルータであり、ノード１２−１乃至１２−４間で実際にデータを送受信させることでトラヒックを発生させ、ノード１２−１乃至１２−４は、その実際のトラヒック量を示すトラヒック情報をネットワークコントローラ１３に送信するとともに、ネットワーク１１の接続形態を示すトポロジ情報を送信する。そして、ネットワークコントローラ１３がトラヒック情報およびトポロジ情報に応じてどのような制御を行うかが監視される。
【００２１】
これに対し、図１Ｂのネットワークエミュレータ２１は、ネットワークコントローラ１３を試験するために、ネットワーク１１を構成するノード１２−１乃至１２−４の代わりに、バーチャルノード１２−１’乃至１２−４’によるテスト環境を提供する。
【００２２】
ネットワークエミュレータ２１により模擬されたバーチャルノード１２−１’乃至１２−４’間では、実際にデータの送受信が行われるのではなく、バーチャルノード１２−１’乃至１２−４’は、試験環境に応じて生成されたトラヒック情報をネットワークコントローラ１３に送信するとともに、バーチャルノード１２−１’乃至１２−４’により仮想的に構成されるネットワークのトポロジ情報を送信して、ネットワークコントローラ１３の挙動が監視される。このように、ネットワークエミュレータ２１では、データの送受信が実際に行われないので、現在の通信環境からは想定できないような、実際に発生することがありえないトラヒック情報を送信することができ、ネットワークコントローラ１３の予測範囲を超えるような（予測困難な）トラヒックの変動に対して、ネットワークコントローラ１３がどのような制御を行うかが監視される。
【００２３】
ます、このようなネットワークを仮想的に構築するネットワークエミュレータ２１に要求される条件を提示する。
【００２４】
第１の要求条件として、ネットワークエミュレータ２１は、インタフェース機能を備える必要がある。例えば、ネットワークエミュレータ２１は、光ＩＰ（Internet Protocol）連携サーバプラットホームと接続するルータのインタフェースを模擬する必要がある。また、そのインタフェースとして、Telnet（テルネット：Telecommunication network）やSNMP（Simple Network Management Protocol）をサポートする必要がある。Telnetは、パスの設定および解除のコマンドをサポートし、SNMPコマンドは、トラヒック情報の取得をサポートする。
【００２５】
第２の要求条件として、ネットワークエミュレータ２１は、リソースシミュレーション機能を備える必要がある。例えば、ネットワークエミュレータ２１は、ネットワークの挙動をシミュレーションにより模擬する必要がある。例えば、光ネットワークではGMPLS（Generalized Multi-Protocol Label Switching）をベースとして、ＩＰネットワークではMPLS（Multi-Protocol Label Switching）をベースとして、それぞれリソース管理やパスの設定および解除などを行っており、ネットワークエミュレータ２１は、GMPLS/MPLSの挙動を模擬する必要がある。また、トポロジ情報などのリソースを管理する情報は、OSPF-TE（Open Shortest Path First-Traffic Engineering）により規定されている。例えば、ネットワークエミュレータ２１は、パスが設定された場合は、その設定されたパスが使用するリンクの残余帯域を削減し、パスが解除された場合は、パスが使用していたリンクの残余帯域を増加させる。
【００２６】
第３の要求条件として、ネットワークエミュレータ２１は、トラヒック情報生成機能を備える必要がある。ネットワークエミュレータ２１は、将来の予測困難なトラヒック変動を反映して、ネットワーク上で発生するトラヒックを模擬して、トラヒック情報を生成する機能をサポートする必要がある。
【００２７】
第４の要求条件として、ネットワークエミュレータ２１は、拡張性および柔軟性を備える必要がある。ネットワークエミュレータ２１は、ネットワーク規模が大きくなっても、ハードウェアの制限に強く依存することない拡張性を有する必要がある。また、ネットワークエミュレータ２１は、トポロジの変化、即ち、ノードやリンクの追加または削除に対して、コンフィグレーションを柔軟に変更可能である必要がある。
【００２８】
このような第１乃至第４の要求条件を満たすように、ネットワークエミュレータ２１が構成される。
【００２９】
図２は、ネットワークエミュレータの第１の実施の形態の構成例を示すブロック図である。
【００３０】
図２において、ネットワークエミュレータ２１は、インタフェースモジュール２２、リソースシミュレータ２３、トラヒックジェネレータ２４、ＴＥ（Traffic Engineering）データベース２５、およびトラヒックデータベース２６を備えて構成されている。インタフェースモジュール２２は、Ｎ個のバーチャルノード２７−１乃至２７−Ｎと、１個のバーチャルノードＲ２８とからなる複数のサブモジュールにより構成されている。なお、インタフェースモジュール２２は本発明のインタフェース手段に対応し、リソースシミュレータ２３は本発明のパス処理手段に対応し、トラヒックジェネレータ２４は本発明のトラヒック生成手段に対応し、バーチャルノード２７−１乃至２７−Ｎは本発明の仮想ノードに対応する。
【００３１】
ネットワークエミュレータ２１では、インタフェースモジュール２２において模擬されるバーチャルノード２７−１乃至２７−Ｎによりネットワークが仮想的に構成され、ネットワークコントローラ１３は、その仮想的に構成されるネットワークを制御する。
【００３２】
また、インタフェースモジュール２２は、ネットワークエミュレータ２１で模擬されるネットワークを構成するルータの追加または削除に応じて、バーチャルノード２７−１乃至２７−Ｎの個数を柔軟に変化させることができる。即ち、ネットワークエミュレータ２１で模擬されるネットワークの規模に応じた個数のバーチャルノードが、インタフェースモジュール２２に用意される。
【００３３】
バーチャルノード２７−１乃至２７−Ｎは、ネットワークコントローラ１３が制御するネットワークに接続されるエッジルータ（ネットワークコントローラ１３と通信するためのインタフェースを有するルータ）の機能を仮想的に実現する。また、バーチャルノード２７−１乃至２７−Ｎは、CLI/SNTP（Command Line Interface/Simple Network Management Protocol）によりネットワークコントローラ１３との通信を行う。なお、バーチャルノード２７−１乃至２７−Ｎのそれぞれを区別する必要がない場合、以下、適宜、単にバーチャルノード２７と称する。
【００３４】
例えば、ネットワークコントローラ１３からバーチャルノード２７−１乃至２７−Ｎに対し、パスの設定を要求するパスセットアップリクエストや、パスの解除を要求するパスリリースリクエストが送信される。一方、バーチャルノード２７−１乃至２７−Ｎからネットワークコントローラ１３に対して、バーチャルノード２７−１乃至２７−Ｎ間で仮想的に発生したとされるトラヒックに応じたトラヒック情報がネットワークコントローラ１３に送信される。
【００３５】
バーチャルノードＲ２８は、OSPF（Open Shortest Path First）によりネットワークコントローラ１３と通信を行い、ネットワークコントローラ１３との間でトポロジ情報およびリソース情報を交換するインタフェースとしての機能を実現する。
【００３６】
リソースシミュレータ２３は、ネットワークコントローラ１３がバーチャルノード２７−１乃至２７−Ｎに対してパスの設定または解除を要求すると、ＴＥデータベース２５に格納されているリソース情報を参照して、その要求に対する処理を行う。そして、リソースシミュレータ２３は、その処理の結果に従って、ＴＥデータベース２５に格納されているトポロジ情報およびリソース情報を更新し、新たなトポロジ情報およびリソース情報をバーチャルノード２７−１乃至２７−ＮまたはバーチャルノードＲ２８に供給する。
【００３７】
トラヒックジェネレータ２４は、トラヒックデータベース２６に格納されているトラヒック生成モデル（後で詳述）を参照し、バーチャルノード２７−１乃至２７−Ｎに現在設定されているパスに流れるトラフィックを仮想的に発生させ、そのトラヒック量を示すトラヒック情報を、バーチャルノード２７−１乃至２７−Ｎに供給する。これにより、バーチャルノード２７−１乃至２７−Ｎにより仮想的に構成されるネットワークにおけるトラヒックの変動が模擬的に発生する。
【００３８】
ＴＥデータベース２５は、バーチャルノード２７−１乃至２７−Ｎの接続形態を示すトポロジ情報と、バーチャルノード２７−１乃至２７−Ｎに設定されているパスの使用帯域および使用可能帯域などのリソースを示すリソース情報を管理する。トラヒックデータベース２６は、ネットワークコントローラ１３を試験するためにバーチャルノード２７−１乃至２７−Ｎに仮想的にトラヒックを発生させるためのモデルであるトラヒック生成モデルを管理する。トラヒック生成モデルには、トラヒックを発生させるタイミング、発生させたトラヒック量を示すトラヒック情報、およびトラヒックの発生の対象となるバーチャルノード２７が記述されている。なお、トラヒックデータベース２６のトラヒック生成モデルには、現在では想定できないようなトラヒックの変動を発生させるようなトラヒック情報が含まれている。
【００３９】
ここで、ネットワークエミュレータ２１の内部では、TCP/IP（Transmission Control Protocol/Internet Protocol）を用いて、バーチャルノード２７−１乃至２７−Ｎとリソースシミュレータ２３およびトラヒックジェネレータ２４との間の通信、バーチャルノードＲ２８とリソースシミュレータ２３およびトラヒックジェネレータ２４との間の通信、リソースシミュレータ２３とトラヒックジェネレータ２４との間の通信が行われる。
【００４０】
例えば、バーチャルノード２７−１乃至２７−Ｎとリソースシミュレータ２３との間の通信では、ネットワークコントローラ１３から送信されてきたパスセットアップリクエストまたはパスリリースリクエストや、リクエストに応じて更新されるトポロジ情報などが、TCP/IPを用いて送受信される。また、バーチャルノード２７−１乃至２７−Ｎとトラヒックジェネレータ２４との間の通信では、トラヒックジェネレータ２４からバーチャルノード２７−１乃至２７−Ｎに対して、トラヒック情報がTCP/IPを用いて送信される。
【００４１】
また、例えば、バーチャルノードＲ２８とリソースシミュレータ２３との間の通信では、リソースシミュレータ２３からバーチャルノードＲ２８に対して、ネットワークの挙動に応じて更新されるトポロジ情報およびリソース情報がTCP/IPを用いて送信される。また、リソースシミュレータ２３とトラヒックジェネレータ２４との間の通信では、リソースシミュレータ２３からトラヒックジェネレータ２４に対して、現在のトポロジ情報がTCP/IPを用いて送信される。
【００４２】
このように、ネットワークエミュレータ２１の内部において、バーチャルノード２７−１乃至２７−Ｎ、リソースシミュレータ２３、およびトラヒックジェネレータ２４の間の通信、即ち、図２において破線の矢印で接続が示されているブロック間の通信は、TCP/IPにより行われる。
【００４３】
このように、ネットワークエミュレータ２１がTCP/IPを用いた通信を行うように設計することで、ネットワークエミュレータ２１では、バーチャルノード２７−１乃至２７−Ｎ、バーチャルノードＲ２８、リソースシミュレータ２３、およびトラヒックジェネレータ２４を、それぞれ異なるコンピュータに実装することが可能となる。また、ネットワークエミュレータ２１において仮想的に構成されるネットワークが、分散的に動作する。即ち、ネットワークエミュレータ２１は、ネットワーク規模に対して、拡張性を有することになる。
【００４４】
また、このように構成されているネットワークエミュレータ２１では、バーチャルノード２７−１乃至２７−Ｎが実機のノード（例えば、図１のノード１２）と同様の挙動をするので、即ち、ネットワークコントローラ１３からみたネットワークのインタフェースが実際のネットワークと同様に構成されているので、ネットワークコントローラ１３は、実機のノードを制御するのと同様の処理を行うことができる。従って、ネットワークを実際に構築することなく、ネットワークエミュレータ２１により、ネットワークコントローラ１３の実験を行うことができる。
【００４５】
以上のようにネットワークエミュレータ２１は構成されており、ネットワークエミュレータ２１が模擬するネットワークにネットワークコントローラ１３を接続させ、ネットワークコントローラ１３に対してネットワークの制御を行うように指示をすると、ネットワークコントローラ１３は、トラヒック情報およびトポロジ情報に基づいて、バーチャルノード２７−１乃至２７−Ｎ間のパスの設定または解除を制御する。
【００４６】
次に、図３は、バーチャルノード２７−１乃至２７−Ｎにより仮想的に構成されるネットワークにパスを設定する処理を説明するフローチャートである。
【００４７】
ステップＳ１１において、ネットワークコントローラ１３は、Telnet上のCLIを使用して通信を行い、バーチャルノード２７−１乃至２７−Ｎのうちの、パスを設定するバーチャルノード２７にログインし、処理はステップＳ１２に進む。
【００４８】
ステップＳ１２において、ネットワークコントローラ１３は、ステップＳ１１でログインしたバーチャルノード２７に対し、パスの設定を要求するパスセットアップリクエストを送信する。パスセットアップリクエストには、物理ポートアドレス、ＩＰアドレス、必要な帯域幅、必要なルート、スイッチタイプの属性を示す情報が含まれる。バーチャルノード２７は、パスセットアップリクエストに含まれる情報を記憶し、ステップＳ１３に進む。
【００４９】
ステップＳ１３において、ステップＳ１２でネットワークコントローラ１３から送信されたパスセットアップリクエストを受信したバーチャルノード２７は、そのパスセットアップリクエストに含まれる情報の正確性を確認し、アクティベートを行う。そして、バーチャルノード２７は、パスセットアップリクエストに含まれている情報を、リソースシミュレータ２３に供給し、処理はステップＳ１４に進む。
【００５０】
ステップＳ１４において、リソースシミュレータ２３は、ネットワークコントローラ１３から要求されたパスを設定できるか否かを判定する。例えば、リソースシミュレータ２３は、ＴＥデータベース２５に格納されているリソース情報を参照し、設定することが要求されているパスの帯域に、要求されている帯域幅の空きがあれば、パスを設定できると判定し、その帯域幅の空きがなければ、パスを設定できないと判定する。
【００５１】
ステップＳ１４において、リソースシミュレータ２３が、パスを設定できると判定した場合、処理はステップＳ１５に進む。リソースシミュレータ２３は、ＴＥデータベース２５に格納されているリソース情報およびトポロジ情報を、新たに設定するパスに基づいて更新し、仮想的に構成されるネットワークに新たなパスを設定した旨を、バーチャルノード２７−１乃至２７−Ｎに通知する。また、リソースシミュレータ２３は、更新したリソース情報およびトポロジ情報をバーチャルノードＲ２８に通知する。
【００５２】
一方、ステップＳ１４において、リソースシミュレータ２３が、パスを設定できないと判定した場合、処理はステップＳ１６に進み、リソースシミュレータ２３は、ステップＳ１３でパスセットアップリクエストの情報を送信してきたバーチャルノード２７に対し、パスを設定することができない旨を通知する。
【００５３】
ステップＳ１５またはＳ１６の処理後、処理はステップＳ１７に進み、パスセットアップリクエストに対する結果がネットワークコントローラ１３に送信され、処理は終了する。例えば、ステップＳ１５で新たなパスが設定された場合は、バーチャルノード２７−１乃至２７−Ｎが、新たなパスの設定が行われたことをネットワークコントローラ１３に送信するとともに、バーチャルノードＲ２８が、更新したリソース情報およびトポロジ情報をネットワークコントローラ１３に送信する。一方、ステップＳ１６において、パスを設定することができない旨が通知された場合は、その通知を受けたバーチャルノード２７が、パスの設定が行われなかったことをネットワークコントローラ１３に送信する。
【００５４】
次に、図４は、バーチャルノード２７−１乃至２７−Ｎにより仮想的に構成されるネットワークに設定されていたパスを解除する処理を説明するフローチャートである。
【００５５】
ステップＳ２１において、ネットワークコントローラ１３は、Telnet上のCLIを使用して通信を行い、バーチャルノード２７−１乃至２７−Ｎのうちの、パスを解除するバーチャルノード２７にログインし、処理はステップＳ２２に進む。
【００５６】
ステップＳ２２において、ネットワークコントローラ１３は、ステップＳ２１でログインしたバーチャルノード２７に対し、パスの解除を要求するパスリリースリクエストを送信する。パスリリースリクエストには、ローカルおよびリモートＩＰアドレスによりパスを確認する情報が含まれている。ステップＳ２２の処理後、処理はステップＳ２３に進む。
【００５７】
ステップＳ２３において、ステップＳ２２でネットワークコントローラ１３から送信されたパスリリースリクエストを受信したバーチャルノード２７は、パスリリースリクエストに含まれる情報の正確性を確認し、アクティベートを行う。そして、バーチャルノード２７は、パスリリースリクエストに含まれている情報を、リソースシミュレータ２３に供給し、処理はステップＳ２４に進む。
【００５８】
ステップＳ２４において、リソースシミュレータ２３は、パスリリースリクエストにより要求されたパスを解除するように、ＴＥデータベース２５に格納されているリソース情報およびトポロジ情報を更新し、処理はステップＳ２５に進む。
【００５９】
ステップＳ２５において、リソースシミュレータ２３は、仮想的に構成されていたネットワークに設定されていたパスが解除された旨を、バーチャルノード２７−１乃至２７−Ｎに通知する。また、リソースシミュレータ２３は、更新したリソース情報およびトポロジ情報をバーチャルノードＲ２８に通知する。
【００６０】
ステップＳ２６において、バーチャルノード２７−１乃至２７−Ｎは、パスの解除が行われたことをネットワークコントローラ１３に送信するとともに、バーチャルノードＲ２８が、更新したリソース情報およびトポロジ情報をネットワークコントローラ１３に送信し、処理は終了する。
【００６１】
以上のように、バーチャルノード２７−１乃至２７−Ｎにより仮想的に構成されるネットワークに対するパスの設定および解除が行われる。
【００６２】
次に、図５は、ネットワークエミュレータ２１において実行される処理を説明するフローチャートである。
【００６３】
ユーザは、まず、ネットワークエミュレータ２１を複数台のコンピュータに実装する場合、実装に必要なコンピュータの台数を決定し、各コンピュータにバーチャルマシンを準備して、コンピュータどうしを通信ケーブルで接続する。なお、ネットワークエミュレータ２１の複数台のコンピュータへの実装例については、図６を参照して後述する。
【００６４】
そして、ユーザが、各コンピュータに、リソースシミュレータ２３、トラヒックジェネレータ２４、バーチャルノード２７−１乃至２７−Ｎ、およびバーチャルノードＲ２８を割り当てると処理が開始され、ステップＳ３１において、ユーザの入力に従って、各種の初期設定が行われる。
【００６５】
例えば、リソースシミュレータ２３は、ネットワークコントローラ１３の試験を開始する際のバーチャルノード２７−１乃至２７−Ｎによるネットワークの構成（ネットワークに接続されるバーチャルノード、それらの間のリンク）を設定して、その構成に基づいたトポロジ情報およびリソース情報をＴＥデータベース２５に格納する。また、トラヒックジェネレータ２４は、試験で使用するトラヒック生成モデルを設定（選択）してトラヒックデータベース２６に格納する。
【００６６】
ステップＳ３１の処理後、処理はステップＳ３２において、リソースシミュレータ２３とバーチャルノード２７−１乃至２７−ＮおよびバーチャルノードＲ２８との間でＴＣＰ／ＩＰによる接続が確立され、トラヒックジェネレータ２４とバーチャルノード２７−１乃至２７−ＮおよびバーチャルノードＲ２８との間でＴＣＰ／ＩＰによる接続が確立され、リソースシミュレータ２３とトラヒックジェネレータ２４との間でＴＣＰ／ＩＰによる接続が確立され、処理はステップＳ３３に進む。
【００６７】
ステップＳ３３において、ネットワークエミュレータ２１のアクティベートが行われ、バーチャルノード２７−１乃至２７−ＮおよびバーチャルノードＲ２８は、ネットワークコントローラ１３との通信を開始する。例えば、バーチャルノード２７−１乃至２７−Ｎは、CLI/SNTPによるネットワークコントローラ１３との通信を開始し、バーチャルノードＲ２８は、OSPFによるネットワークコントローラ１３と通信を開始する。これにより、ネットワークコントローラ１３の試験が開始される。
【００６８】
ステップＳ３３の処理後、処理はステップＳ３４に進み、トラヒックジェネレータ２４は、バーチャルノード２７−１乃至２７−Ｎにより仮想的に構成されるネットワークに仮想的なトラヒックを発生させるか否かを判定する。例えば、トラヒックジェネレータ２４は、トラヒック生成モデルを参照し、トラヒックを生成させるタイミングであれば、トラヒックを発生させると判定し、トラヒックを発生させるタイミングでなければ、トラヒックを発生させないと判定する。
【００６９】
ステップＳ３４において、トラヒックジェネレータ２４がトラヒックを発生させると判定した場合、処理はステップＳ３５に進み、トラヒックジェネレータ２４は、トラヒック生成モデルを参照し、現在のタイミングに対応付けられているトラヒック情報を、トラヒックの発生の対象となるバーチャルノード２７に供給する。なお、トラヒックジェネレータ２４は、現在のトポロジ情報でパスが設定されているバーチャルノード２７間にトラヒックを生成させる。トラヒック情報が供給されたバーチャルノード２７は、そのトラヒック情報をCLI/SNTPによりネットワークコントローラ１３に送信する。
【００７０】
ステップＳ３５の処理後、または、ステップＳ３４でトラヒックジェネレータ２４がトラヒックを発生させないと判定した場合、処理はステップＳ３６に進み、バーチャルノード２７−１乃至２７−Ｎは、ネットワークコントローラ１３からリクエストが送信されてきたか否かを判定する。
【００７１】
ステップＳ３６において、バーチャルノード２７−１乃至２７−Ｎが、ネットワークコントローラ１３からリクエストが送信されていないと判定した場合、処理はステップＳ３４に戻り、以下、同様の処理が行われる。一方、ステップＳ３６において、いずれかのバーチャルノード２７が、ネットワークコントローラ１３からリクエストが送信されてきたと判定した場合、処理はステップＳ３７に進む。
【００７２】
ステップＳ３７において、ネットワークコントローラ１３からリクエストが送信されてきたと判定したバーチャルノード２７は、ネットワークコントローラ１３から送信されてきたリクエストを受信し、そのリクエストをリソースシミュレータ２３に供給して、処理はステップＳ３８に進む。
【００７３】
ステップＳ３８において、リソースシミュレータ２３は、ネットワークコントローラ１３からのリクエストの内容を判定する。
【００７４】
ステップＳ３８において、リソースシミュレータ２３が、ネットワークコントローラ１３からのリクエストの内容が、パスセットアップリクエストであると判定した場合、処理はステップＳ３９に進み、リソースシミュレータ２３は、パスを設定する処理を行う。即ち、リソースシミュレータ２３は、図３のステップＳ１４乃至Ｓ１６で説明したように、ＴＥデータベース２５に格納されているリソース情報を参照してパスを設定できるか否かを判定し、その判定結果に基づいた処理を行う。
【００７５】
一方、ステップＳ３８において、リソースシミュレータ２３が、ネットワークコントローラ１３からのリクエストの内容が、パスリリースリクエストであると判定した場合、処理はステップＳ４０に進み、リソースシミュレータ２３は、パスを解除する処理を行う。即ち、リソースシミュレータ２３は、図４のステップＳ２４およびＳ２５で説明したように、ＴＥデータベース２５に格納されているリソース情報を更新してパスを解除する処理を行う。
【００７６】
ステップＳ３９またはＳ４０の処理後、処理はステップＳ４１に進み、バーチャルノード２７−１乃至２７−Ｎは、ステップＳ３９またはＳ４０での処理結果をネットワークコントローラ１３に送信する。例えば、図３のステップＳ１７で説明したように、新たなパスの設定が行われたこと或いはパスの設定が行われなかったこと、または、図４のステップＳ２６で説明したように、パスの解除が行われたことが処理結果としてネットワークコントローラ１３に通知される。ステップＳ４１の処理後、処理はステップＳ３４に戻り、以下、同様の処理が行われる。
【００７７】
このように、ネットワークエミュレータ２１において仮想的に構成されたネットワークにトラヒックを発生させ、そのトラヒックに応じてネットワークコントローラ１３から送信されてくるリクエストに応じた処理（パスの設定または解除）が行われるので、例えば、予測困難なトラヒックの発生に対してネットワークコントローラ１３がどのような制御を行うかを試験することができる。また、ネットワークコントローラ１３との通信は、インタフェースモジュール２２に構成されたバーチャルノード２７−１乃至２７−ＮおよびバーチャルノードＲ２８を介して行われるので、ネットワークコントローラ１３に対し、実際のネットワークと同様の処理を行わせることができる。
【００７８】
次に、ネットワークエミュレータ２１をコンピュータに実装する例について説明する。
【００７９】
例えば、CLI/SNMP/OSPFのインタフェースを有するバーチャルノードの実装において、１台のコンピュータに１つのバーチャルノードを対応付けて実装することができるが、このような１対１の対応による構成では効率が悪いので、ＶＭ（Virtual Machine）技術が利用される。ＶＭ技術では、複数のバーチャルノード（マシン）を１台のコンピュータに実装することができ、それらの複数のノードを独立に動作させることができる。
【００８０】
１台のコンピュータに実装することが可能なバーチャルノードの個数は、そのコンピュータのCPUのパワーやメモリの容量などにより決定される。ここで、１台のコンピュータに実装することが可能なバーチャルノードの個数をＭ個とし、ネットワークコントローラ１３とのCLI/SNMPのインタフェースを有するバーチャルノード２７の個数をＮ個とすると、Ｎ個のバーチャルノード２７により構成されるネットワークをエミュレーションするために、Ｎ／Ｍ個のコンピュータが必要になる。
【００８１】
また、OSPFのインタフェースを有するバーチャルノードＲ２８、リソースシミュレータ２３、およびトラヒックジェネレータ２４は、計算負荷がネットワーク規模に大きく依存しないため、１台のコンピュータに実装される。
【００８２】
従って、ネットワークエミュレータ２１は、（Ｎ／Ｍ＋１）個のコンピュータにより実装可能である。
【００８３】
次に、図６は、図２に示したネットワークエミュレータ２１の実装例を示す図である。図６の実装例では、４０個のバーチャルノード２７−１乃至２７−４０によりネットワークが仮想的に構成されている（Ｎ＝４０）。
【００８４】
図６に示すシステムは、通信ケーブル３１を介して４台のコンピュータ３２−１乃至３２−４が接続されて構成される。コンピュータ３２−１乃至３２−４は、通信ケーブル３１を介して、例えば、100Mbpsの転送速度を有する100BASE-TXなどのイーサネット（Ethernet）の規格に準拠したインタフェースに対応した通信を行う。
【００８５】
コンピュータ３２−１乃至３２−４は、２０個のバーチャルノード２７の実装可能な処理能力（Ｍ＝２０）を有しており、コンピュータ３２−１にバーチャルノード２７−１乃至２７−２０が実装され、コンピュータ３２−２にバーチャルノード２７−２１乃至２７−４０が実装される。
【００８６】
コンピュータ３２−３には、バーチャルノードＲ２８、リソースシミュレータ２３、およびトラヒックジェネレータ２４が実装され、その記憶部が、ＴＥデータベース２５およびトラヒックデータベース２６として用いられる。コンピュータ３２−４には、ネットワークコントローラ１３が実装される。
【００８７】
図６に示すように、インタフェースモジュール２２に設けられるバーチャルノード２７−１乃至２７−４０およびバーチャルノードＲ２８が３台のコンピュータ３２−１乃至３２−３に分散されて実装され、ネットワークエミュレータ２１は、３台のコンピュータ３２−１乃至３２−３により実現されている。上述したように、ネットワークエミュレータ２１を構成する各ブロックは、TCP/IPにより通信を行うように設計されるので、例えば、バーチャルノード２７の個数を増加させたい場合には、新たなコンピュータを通信ケーブル３１に接続して、必要な個数のバーチャルノード２７をセットアップするだけでよく、模擬するネットワーク規模の変更を容易に（柔軟に）行うことができる。即ち、ネットワークエミュレータ２１の内部では、汎用性のあるTCP/IPを使用して通信を行っているので、優れた拡張性を実現することができる。なお、ネットワークエミュレータ２１では、TCP/IP以外でも汎用性のある通信を採用することで、同様の拡張性を有することができる。
【００８８】
また、例えば、コンピュータ３２−１乃至３２−４がインタネットを介して接続されるように構成してもよく、コンピュータ３２−１乃至３２−４がそれぞれ離れた場所に設置されていても、ネットワークエミュレータ２１としての機能を実現することができる。
【００８９】
また、複数台のコンピュータにネットワークエミュレータ２１を実装する他、高性能なコンピュータを使用したり、バーチャルノード２７の個数を少なくすることで、１台のコンピュータにネットワークエミュレータ２１を実装してもよい。
【００９０】
即ち、図７は、図２に示したネットワークエミュレータ２１の他の実装例を示す図である。図７の実装例では、１０個のバーチャルノード２７−１乃至２７−１０によりネットワークが仮想的に構成されている（Ｎ＝１０）。
【００９１】
図７に示すように、通信ケーブル３１を介してコンピュータ３３−１とコンピュータ３３−２とが接続されており、コンピュータ３３−１にネットワークエミュレータ２１が実装され、コンピュータ３３−２にネットワークコントローラ１３が実装されている。
【００９２】
コンピュータ３３は、図６のコンピュータ３２と同様に、２０個のバーチャルノード２７の実装可能な処理能力（Ｍ＝２０）を有しており、コンピュータ３２に実装することが可能なバーチャルノードの個数（Ｍ）よりも、仮想的にネットワークを構成するバーチャルノード２７の個数（Ｎ）が十分に小さいので、コンピュータ３３−１に、バーチャルノード２７−１乃至２７−１０、バーチャルノードＲ２８、リソースシミュレータ２３、およびトラヒックジェネレータ２４を実装することが可能である。
【００９３】
このように１台のコンピュータ３３−１にネットワークエミュレータ２１が実装されている場合でも、ネットワークエミュレータ２１を構成する各ブロックは、TCP/IPにより通信を行うように設計される。例えば、１台のコンピュータ３３−１に実装可能な規模のネットワークでネットワークコントローラ１３の試験を行った後、さらに大規模なネットワークでの試験に移行するように運用することができる。
【００９４】
次に、図８は、ネットワークエミュレータの第２の実施の形態の構成例を示すブロック図である。
【００９５】
図８では、図２のネットワークエミュレータ２１を構成するブロックのうちの、バーチャルノード２７−１乃至２７−Ｎ、バーチャルノードＲ２８、リソースシミュレータ２３、およびトラヒックジェネレータ２４が示されている。
【００９６】
図８に示すように、バーチャルノード２７−１乃至２７−Ｎは、バーチャルノード処理部５１−１乃至５１−Ｎ、バッファ５２−１乃至５２−Ｎおよび５３−１乃至５３−Ｎ、タイマ５４−１乃至５４−Ｎ、並びに、遅延処理部５５−１乃至５５−Ｎをそれぞれ備えて構成されている。なお、遅延処理部５５−１乃至５５−Ｎは、本発明の遅延手段に対応する。
【００９７】
バーチャルノードＲ２８は、バーチャルノード処理部６１、バッファ６２および６３、タイマ６４、並びに、遅延処理部６５を備えて構成されている。リソースシミュレータ２３は、リソースシミュレータ処理部７１、並びに、バッファ７２−１乃至７２−Ｎおよび７３を備えて構成され、トラヒックジェネレータ２４は、トラヒックジェネレータ処理部８１、並びに、バッファ８２−１乃至８２−Ｎおよび８３を備えて構成されている。
【００９８】
このように構成されているネットワークエミュレータ２１では、各ブロック間で送受信されるデータが、バッファに一時的に蓄積され、蓄積されたデータが逐次処理される。
【００９９】
例えば、リソースシミュレータ２３では、リソースシミュレータ処理部７１が、バーチャルノード２７−１乃至２７−ＮおよびバーチャルノードＲ２８からの処理要求を１つずつ処理する。従って、複数の処理要求が到着した場合、リソースシミュレータ２３では、バッファ７２−１乃至７２−Ｎおよび７３に処理要求を一時的に蓄積させて、リソースシミュレータ処理部７１が、逐次処理を行う。例えば、リソースシミュレータ処理部７１は、処理要求を到着順に選択して処理を行ったり、各処理を一定時間ずつ分割して順番に実行するラウンドロビン方式により処理を行ったりすることができる。
【０１００】
そして、リソースシミュレータ２３では、複数の処理要求が短時間に到着した場合などには、バッファ７２−１乃至７２−Ｎおよび７３があふれないように、バッファ７２−１乃至７２−Ｎおよび７３のキュー長が所定の閾値を超えると、バーチャルノード２７−１乃至２７−ＮおよびバーチャルノードＲ２８から処理要求が到達しないように、バーチャルノード２７−１乃至２７−ＮおよびバーチャルノードＲ２８に対して抑制信号を送信するようなフロー制御を行う。
【０１０１】
また、トラヒックジェネレータ２４も、リソースシミュレータ２３と同様に、バッファ８２−１乃至８２−Ｎおよび８３を利用して処理を行う。
【０１０２】
ところで、実際のネットワークでは、その経路に応じて、ネットワークコントローラ１３から各ノードに対しリクエストを送信してから、そのリクエストに対するレスポンスを受信するまでに所定の遅延時間を要する。ところが、ネットワークエミュレータ２１を利用したネットワークコントローラ１３の実験では、ネットワークコントローラ１３とネットワークエミュレータ２１との間の経路が短くなり、実際のネットワークでの挙動と異なって、リクエストの送信からレスポンスの受信までの遅延時間が短くなる。
【０１０３】
そこで、ネットワークエミュレータ２１では、タイマ５４−１乃至５４−Ｎ、遅延処理部５５−１乃至５５−Ｎ、タイマ６４、および遅延処理部６５により、その遅延時間をエミュレートすることができる。
【０１０４】
例えば、バーチャルノード２７−１が、リソースシミュレータ２３からネットワークコントローラ１３にレスポンスを送信するように要求された場合、バーチャルノード処理部５１−１は、そのレスポンスを遅延処理部５５−１に一時的に格納させて、タイマ５４−１に対して時刻の計時を開始させる。そして、予め設定されている遅延時間になると、タイマ５４−１が遅延時間が経過したことを遅延処理部５５−１に通知し、これに応じて、遅延処理部５５−１がレスポンスをネットワークコントローラ１３に送信する。
【０１０５】
このように、ネットワークエミュレータ２１は、実際のネットワークの経路をデータが通過することによる遅延時間をエミュレートすることで、実際のネットワークと同様の挙動をすることができる。
【０１０６】
なお、遅延処理部６５において発生させる遅延の程度の設定は、即ち、バーチャルノード２７からネットワークコントローラ１３までの仮想的な距離の設定は、所定の遅延モデルにより決定され、例えば、図５のステップＳ３１の初期設定においてバーチャルノード２７−１乃至２７−Ｎに設定される。
【０１０７】
次に、図９は、ネットワークエミュレータの第３の実施の形態の構成例を示すブロック図である。
【０１０８】
図９のネットワークエミュレータ９１は、エミュレータ処理部９２、ネットワーク構成設定入力部９３、および故障発生部９４を備えて構成される。なお、故障発生部９４は、本発明の故障発生手段に対応する。
【０１０９】
エミュレータ処理部９２は、図２のネットワークエミュレータ２１と同様に構成されており、ネットワークエミュレータ９１においてネットワークを仮想的に構成するバーチャルノード２７−１乃至２７−Ｎがネットワークコントローラ１３により制御される。
【０１１０】
ネットワーク構成設定入力部９３には、キーボードやマウスなどからなる入力装置（図示せず）が接続されており、ユーザの操作に応じて入力装置から入力される信号に従って、エミュレータ処理部９２におけるネットワーク構成のパラメータを設定する。ネットワーク構成設定入力部９３により設定されるパラメータには、OSPF-TEで広告されるOpaque LSA（LINK State Advertisements）の内容（例えば、ルータのＩＰアドレス、インタフェースのＩＰアドレス、リンクの帯域）が含まれる。
【０１１１】
例えば、エミュレータ処理部９２によるネットワークの模擬を開始するときに、ユーザは、ネットワーク構成設定入力部９３を介してネットワークの初期設定としてパラメータを入力する。その後、ネットワークコントローラ１３による制御に応じて、リソースシミュレータ２３およびトラヒックジェネレータ２４によるネットワークのエミュレートが行われ、ネットワークコントローラ１３の実験が開始される。
【０１１２】
また、ネットワークエミュレータ９１では、故障発生部９４が、所定の故障発生モデル（予めプログラムされたシナリオ）に従って、所定のタイミングで自動的にリンクまたはノードに故障を発生させ、ネットワーク構成設定入力部９３を介してエミュレータ処理部９２に設定することで、エミュレータ処理部９２のネットワークのパラメータを変更させることができる。
【０１１３】
例えば、所定のバーチャルノード２７に故障が発生したことを示す情報が故障発生部９４から出力された場合、インタフェースモジュール２２は、その情報により指定されるバーチャルノード２７の機能を停止する処理を行う。また、例えば、故障発生部９４により所定のリンクに故障が発生したことを示す情報が供給された場合、リソースシミュレータ２３は、その情報により指定されるリンクにより接続されていたパスを解除する処理を行う。
【０１１４】
このように、ネットワークエミュレータ９１では、バーチャルノード２７−１乃至２７−Ｎ、またはバーチャルノード２７−１乃至２７−Ｎ間のリンクにおいて故障が発生した場合におけるネットワークコントローラ１３の挙動を実験することができる。なお、リンクまたはノードを擬似的に故障させる設定は、ユーザが、図示しない入力装置を操作してネットワークエミュレータ９１に入力してもよい。
【０１１５】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１１６】
１１  ネットワーク，  １２−１乃至１２−４  ノード，  １２−１’乃至１２−４’  バーチャルノード  １３  ネットワークコントローラ，  ２１  ネットワークエミュレータ，  ２２  インタフェースモジュール，  ２３  リソースシミュレータ，  ２４  トラヒックジェネレータ，  ２５  ＴＥデータベース，  ２６  トラヒックデータベース，  ２７  バーチャルノード，  ２８  バーチャルノードＲ，  ３１  通信ケーブル，  ３２  コンピュータ，  ３３  コンピュータ，  ５１  バーチャルノード処理部，  ５２および５３  バッファ，  ５４  タイマ，  ５５  遅延処理部，  ６１  バーチャルノード処理部，  ６２および６３  バッファ，  ６４  タイマ，  ６５  遅延処理部，  ７１  リソースシミュレータ処理部，  ７２および７３  バッファ，  ８１  トラヒックジェネレータ処理部，  ８２および８３  バッファ，  ９１  ネットワークエミュレータ，  ９２  エミュレータ処理部，  ９３  ネットワーク構成設定入力部，  ９４  故障発生部
【図１】
2011101140.tif 000003
【図２】
2011101140.tif 000004
【図３】
2011101140.tif 000005
【図４】
2011101140.tif 000006
【図５】
2011101140.tif 000007
【図６】
2011101140.tif 000008
【図７】
2011101140.tif 000009
【図８】
2011101140.tif 000010
【図９】
2011101140.tif 000011