(57)【要約】  コントローラが、仮想マシンの通信の開始に先立って、スイッチに対するフローエントリの設定を完了しておく。具体的には、コントローラは、仮想マシンの情報と、仮想マシンを稼働させるサーバの情報とを設定する。コントローラは、スイッチを介して、スイッチ配下のサーバの情報を検出する。コントローラは、設定されたサーバの情報と、検出されたサーバの情報が一致する場合、当該サーバ上の仮想マシンの情報を基に、当該仮想マシン宛のパケットに関するフローエントリをスイッチに設定する。その後、当該仮想マシンは、通信を開始する。
2012033117.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを管理する管理装置と、
前記管理装置からの設定に従って、サーバの情報を保持するコントローラと、
前記ネットワークを形成し、前記コントローラからの制御に従って、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリを登録し、当該フローエントリのルールにマッチするパケットに対し、当該フローエントリのアクションを実行するスイッチと
を含み、
前記コントローラは、前記設定されたサーバの情報を基に、当該サーバとの通信経路を計算し、当該サーバ宛のパケットに関するフローエントリを前記スイッチに設定する
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記スイッチは、配下のサーバの情報を検出し、当該サーバの情報を前記コントローラに通知し、
前記コントローラは、前記管理装置からの設定に従って、仮想マシンの情報と、前記仮想マシンを稼働させるサーバの情報とを対応付けて保持し、前記設定されたサーバの情報と、前記スイッチから通知されたサーバの情報が一致する場合、当該サーバ上の仮想マシンの情報を基に、当該仮想マシン宛のパケットに関するフローエントリを前記スイッチに設定し、
当該サーバは、当該仮想マシンを生成し、稼働させる
ネットワークシステム。
【請求項３】
請求項２に記載のネットワークシステムであって、
前記コントローラは、前記仮想マシンの稼働中に、前記管理装置から前記仮想マシンを稼働させるサーバの情報の変更が通知された場合、当該仮想マシン宛のパケットに関するフローエントリの変更を前記スイッチに設定する
ネットワークシステム。
【請求項４】
ネットワークを管理する管理装置から設定されたサーバの情報を保持する手段と、
前記設定されたサーバの情報を基に、当該サーバとの通信経路を計算し、当該サーバ宛のパケットに関するフローエントリを、前記ネットワークを形成するスイッチであって、設定されたフローエントリに従って受信パケットを転送するスイッチに設定する手段と
を具備する
コントローラ。
【請求項５】
請求項４に記載のコントローラであって、
前記管理装置からの設定に従って、仮想マシンの情報と、前記仮想マシンを稼働させるサーバの情報と、を対応付けて保持する手段と、
前記スイッチを介して、当該スイッチ配下のサーバの情報を検出する手段と、
前記検出されたサーバの情報と、前記保持しているサーバの情報とが一致する場合、当該サーバ上の仮想マシンの情報を基に、当該仮想マシン宛のパケットに関するフローエントリを前記スイッチに設定する手段と
を更に具備する
コントローラ。
【請求項６】
請求項５に記載のコントローラであって、
前記仮想マシンの稼働中に、前記管理装置から前記仮想マシンを稼働させるサーバの情報の変更が通知された場合、当該仮想マシン宛のパケットに関するフローエントリの変更を前記スイッチに設定する手段
を更に具備する
コントローラ。
【請求項７】
計算機により実施されるネットワーク管理方法であって、
ネットワークを管理する管理装置から設定されたサーバの情報を保持することと、
前記設定されたサーバの情報を基に、当該サーバとの通信経路を計算し、当該サーバ宛のパケットに関するフローエントリを、前記ネットワークを形成するスイッチであって、設定されたフローエントリに従って受信パケットを転送するスイッチに設定することと
を含む
ネットワーク管理方法。
【請求項８】
請求項７に記載のネットワーク管理方法であって、
前記管理装置からの設定に従って、仮想マシンの情報と、前記仮想マシンを稼働させるサーバの情報と、を対応付けて保持することと、
前記スイッチを介して、当該スイッチ配下のサーバの情報を検出することと、
前記検出されたサーバの情報と、前記保持しているサーバの情報とが一致する場合、当該サーバ上の仮想マシンの情報を基に、当該仮想マシン宛のパケットに関するフローエントリを前記スイッチに設定することと
を更に含む
ネットワーク管理方法。
【請求項９】
請求項８に記載のネットワーク管理方法であって、
前記仮想マシンの稼働中に、前記管理装置から前記仮想マシンを稼働させるサーバの情報の変更が通知された場合、当該仮想マシン宛のパケットに関するフローエントリの変更を前記スイッチに設定すること
を更に含む
ネットワーク管理方法。
【請求項１０】
ネットワークを管理する管理装置から設定されたサーバの情報を保持するステップと、
前記設定されたサーバの情報を基に、当該サーバとの通信経路を計算し、当該サーバ宛のパケットに関するフローエントリを、前記ネットワークを形成するスイッチであって、設定されたフローエントリに従って受信パケットを転送するスイッチに設定するステップと
を計算機に実行させるためのプログラムを格納した
記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムに関し、特にＣＵ（Ｃ：コントロールプレーン／Ｕ：ユーザプレーン）分離型ネットワークを用いたネットワークシステムに関する。
【背景技術】
【０００２】
外部のコントローラ（コントロールプレーン）からスイッチや端末等（ユーザプレーン）を制御する方式をＣＵ（Ｃ：コントロールプレーン／Ｕ：ユーザプレーン）分離型アーキテクチャと呼ぶ。このようなＣＵ分離型アーキテクチャに基づく構成のネットワークをＣＵ分離型ネットワークと呼ぶ。【０００３】
ＣＵ分離型ネットワークの一例として、コントローラからスイッチを制御してネットワークの経路制御を行うオープンフロー（ＯｐｅｎＦｌｏｗ）技術を利用したオープンフローネットワークが挙げられる。【０００４】
［オープンフローネットワークの説明］
オープンフローネットワークでは、ＯＦＣ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）等のコントローラが、ＯＦＳ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）等のスイッチのフローテーブルを操作することによりスイッチの挙動を制御する。コントローラとスイッチの間は、コントローラがオープンフロープロトコルに準拠した制御メッセージを用いてスイッチを制御するためのセキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）により接続されている。【０００５】
オープンフローネットワークにおけるスイッチとは、オープンフローネットワークを形成し、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチでのパケットの受信から出力側エッジスイッチでの送信までのパケットの一連の流れをフロー（Ｆｌｏｗ）と呼ぶ。【０００６】
フローテーブルとは、所定のマッチ条件（ルール）に適合するパケット（通信データ）に対して行うべき所定の処理内容（アクション）を定義したフローエントリ（Ｆｌｏｗ  ｅｎｔｒｙ）が登録されたテーブルである。【０００７】
フローエントリのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組合せにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローエントリのルールとして使用可能である。【０００８】
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作を示す。例えば、スイッチは、フローエントリのアクションに出力ポートの識別情報（出力ポート番号等）が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチは、フローエントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいてパケットのヘッダを書き換える。【０００９】
オープンフローネットワークにおけるスイッチは、フローエントリのルールに適合するパケット群（パケット系列）に対して、フローエントリのアクションを実行する。【００１０】
オープンフロー技術の詳細については、非特許文献１、２に記載されている。【００１１】
オープンフロー技術を用いたネットワークシステムにおいて、スイッチ配下のサーバ上で仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を稼働させる場合、コントローラは、スイッチ配下のサーバ上に仮想マシンが生成される毎に、生成された仮想マシンから、スイッチを介して、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）要求を受信し、当該仮想マシンの識別情報及び所在情報（サーバ情報）を特定し、当該仮想マシン宛のパケットに関するフローエントリをスイッチに設定する必要があった。そのため、コントローラにこれらの処理が集中し、多大な負荷がかかっていた。【００１２】
例えば、ネットワークに接続されている数千台の物理サーバが１台につき仮想マシンを数十台稼働させている場合、合計で数万台〜数十万台の仮想マシンが稼働していることになる。物理サーバはまだしも、これらの仮想マシンの各々からＡＲＰ要求を受信し、各仮想マシンの識別情報及び所在情報を特定し、これらの情報を基に、各仮想マシン宛のパケットに関するフローエントリをスイッチに設定するのでは、コントローラにかかる負荷は膨大なものとなる。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】“Ｔｈｅ  ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｃｏｎｓｏｒｔｉｕｍ”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／＞
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．０  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）  Ｄｅｃｅｍｂｅｒ  ３１，  ２００９”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ＞
【発明の概要】
【００１４】
本発明の目的は、コントローラ側で、スイッチ配下のサーバ上で稼働する仮想マシンの識別情報、及び当該仮想マシンを稼働させるサーバの識別情報を管理し、仮想マシンの生成やマイグレーションの動作と並行してスイッチに対するフローエントリの設定を行うネットワークシステムを提供することである。
【００１５】
本発明に係るネットワークシステムは、ネットワークを管理する管理装置と、管理装置からの設定に従って、サーバの情報を保持するコントローラと、ネットワークを形成し、コントローラからの制御に従って、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリを登録し、当該フローエントリのルールにマッチするパケットに対し、当該フローエントリのアクションを実行するスイッチとを含む。コントローラは、設定されたサーバの情報を基に、当該サーバとの通信経路を計算し、当該サーバ宛のパケットに関するフローエントリをスイッチに設定する。
【００１６】
本発明に係るコントローラは、ネットワークを管理する管理装置から設定されたサーバの情報を保持する記憶部と、設定されたサーバの情報を基に、当該サーバとの通信経路を計算し、当該サーバ宛のパケットに関するフローエントリを、ネットワークを形成するスイッチであって、設定されたフローエントリに従って受信パケットを転送するスイッチに設定する処理部とを具備する。
【００１７】
本発明に係るネットワーク管理方法では、コントローラとして機能する計算機が、ネットワークを管理する管理装置から設定されたサーバの情報を保持する。また、設定されたサーバの情報を基に、当該サーバとの通信経路を計算し、当該サーバ宛のパケットに関するフローエントリを、ネットワークを形成するスイッチであって、設定されたフローエントリに従って受信パケットを転送するスイッチに設定する。
【００１８】
本発明に係るプログラムは、ネットワークを管理する管理装置から設定されたサーバの情報を保持するステップと、設定されたサーバの情報を基に、当該サーバとの通信経路を計算し、当該サーバ宛のパケットに関するフローエントリを、ネットワークを形成するスイッチであって、設定されたフローエントリに従って受信パケットを転送するスイッチに設定するステップとを計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００１９】
これにより、オープンフロー技術を用いたネットワークシステムにおいて、スイッチ配下のサーバ上に仮想マシンが生成される際、コントローラにかかる負担を軽減することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明に係るネットワークシステムの構成例を示す概念図である。
【図２】本発明における事前設定情報と実際の検出情報との照合処理を説明するための図である。
【図３】本発明における設定情報の登録処理を示すフローチャートである。
【図４】本発明における設定情報の変更処理を示すフローチャートである。
【図５】本発明に係るコントローラの構成例を示す機能ブロック図である。
【発明を実施するための形態】
【００２１】
本発明は、ＣＵ分離型ネットワークを対象としている。ここでは、ＣＵ分離型ネットワークの１つであるオープンフローネットワークを例に説明する。但し、実際には、オープンフローネットワークに限定されない。
【００２２】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００２３】
［システム構成］
図１に示すように、本発明に係るネットワークシステムは、管理装置（Ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）１０と、コントローラ（ＯＦＣ：ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）２０と、スイッチ（Ｓｗｉｔｃｈ）３０と、サーバ（Ｓｅｒｖｅｒ）４０と、仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）５０と、ルータ（Ｒｏｕｔｅｒ）６０を含む。
【００２４】
管理装置１０、コントローラ２０、スイッチ３０、サーバ４０、仮想マシン５０、及びルータ６０の各々は、複数でも良い。すなわち、少なくとも１台は存在するものとする。
【００２５】
管理装置１０は、ＣＵ分離型ネットワークにおけるノードやサービスの管理を行う。管理装置１０は、スイッチやルータ、サーバを管理する。例えば、管理装置１０は、ＮＭＳ（Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）やＥＭＳ（Ｅｌｅｍｅｎｔ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）を実現するためのハードウェア及びソフトウェアによってネットワークの管理を行う。また、管理装置１０は、仮想マシン情報（ＶＭ  Ｉｎｆｏｒｍａｔｉｏｎ）として、仮想マシンの仮想ＭＡＣアドレス及び仮想ＩＰアドレスと、当該仮想マシンを稼働させるサーバの物理ＭＡＣアドレスとをコントローラ２０に設定する。ここでは、仮想マシン情報は、予め管理装置１０に設定されているものとする。
【００２６】
なお、仮想ＭＡＣアドレス、仮想ＩＰアドレス、及び物理ＭＡＣアドレス等は、ネットワーク上の所在情報の一例に過ぎない。実際には、ＭＡＣアドレスやＩＰアドレスに限定されるものではなく、仮想マシンやサーバを特定するための情報であれば良い。
【００２７】
コントローラ２０は、ＣＵ分離型ネットワークの制御を行う。コントローラ２０は、管理装置１０からの設定に従って、スイッチ３０の経路制御を行う。ここでは、コントローラ２０は、オープンフロー技術に対応したコントローラであり、スイッチ３０から通知されたサーバの物理ＭＡＣアドレスを基に、当該サーバ宛のパケットに関するフローエントリをスイッチ３０に設定するものとする。
【００２８】
また、コントローラ２０は、管理装置１０からの設定に従って、仮想マシン情報として、仮想マシンの仮想ＭＡＣアドレス及び仮想ＩＰアドレスと、当該仮想マシンを稼働させるサーバの物理ＭＡＣアドレスとを対応付けたテーブルを保持する。コントローラ２０は、図２に示すように、管理装置１０から設定されたサーバの物理ＭＡＣアドレスと、スイッチ３０から通知されたサーバの物理ＭＡＣアドレスとを照合し、両方が一致した場合、両方を対応付け、当該サーバ上の仮想マシンの仮想ＭＡＣアドレス及び仮想ＩＰアドレスを基に、当該仮想マシン宛のパケットに関するフローエントリをスイッチ３０に設定する。
【００２９】
図２を参照すると、コントローラ２０は、管理装置１０から設定されたサーバの物理ＭＡＣアドレス（「ＶＭ  Ｉｎｆｏｒｍａｔｉｏｎ」の「ＳＶ１  ＭＡＣ」）と、スイッチ３０から通知されたサーバの物理ＭＡＣアドレス（「Ｓｅｒｖｅｒ  Ｉｎｆｏｒｍａｔｉｏｎ」の「ＳＶ１  ＭＡＣ」）とを照合する。ここでは、両方が一致（Ｍａｔｃｈ）するため、両方を対応付け、当該サーバ上の仮想マシンの仮想ＭＡＣアドレス及び仮想ＩＰアドレス（「ＶＭ  Ｉｎｆｏｒｍａｔｉｏｎ」の「ＶＭ１  ＭＡＣ」及び「ＶＭ１  ＩＰ」）を基に、当該仮想マシン宛のパケットに関するフローエントリをスイッチ３０に設定する。
【００３０】
また、コントローラ２０は、管理装置１０からの設定により、仮想マシンを稼働させるサーバの物理ＭＡＣアドレスの変更が通知された場合、当該仮想マシン宛のパケットに関するフローエントリの変更をスイッチ３０に設定する。例えば、コントローラ２０は、サーバの物理ＭＡＣアドレスの変更により経路上のスイッチ３０が変更される場合、現在の経路上にあるスイッチ３０に設定された当該仮想マシン宛のパケットに関するフローエントリを削除し、当該仮想マシン宛のパケットに関するフローエントリを、変更後のサーバに対応するスイッチ３０に設定する。
【００３１】
更に、コントローラ２０は、仮想マシン宛のパケットに関するフローエントリをスイッチ３０に設定した後、当該仮想マシンからＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）要求が送出された場合、スイッチ３０を介して、当該仮想マシンからのＡＲＰ要求を受信し、仮想マシン情報として保持している仮想マシンの仮想ＭＡＣアドレス及び仮想ＩＰアドレスを参照して、該当する情報を基に、当該仮想マシンにＡＲＰ応答を返信する。
【００３２】
スイッチ３０は、ＣＵ分離型ネットワークにおけるパケット転送を行う。ここでは、スイッチ３０は、オープンフロー技術に対応したスイッチであり、フローテーブルを保持するものとする。スイッチ３０は、配下にサーバ４０が接続された場合、当該サーバ４０からＡＲＰ要求を受信した際に、当該サーバ４０の物理ＭＡＣアドレスを検出し、当該サーバ４０の物理ＭＡＣアドレスをコントローラ２０に通知する。或いは、スイッチ３０は、コントローラ２０から当該サーバ４０の物理ＭＡＣアドレスを問い合わせるＡＲＰ要求を受信し、ＡＲＰ要求を当該サーバ４０に転送し、当該サーバ４０からのＡＲＰ応答をコントローラ２０に転送することで、当該サーバの物理ＭＡＣアドレスをコントローラ２０に通知するようにしても良い。仮想サーバの数と比べて物理サーバの数は少なく、物理サーバの識別情報の問い合わせ処理だけであれば、コントローラにかかる負荷も比較的小さくて済むと考えられるためである。このとき、スイッチ３０は、サーバ情報（Ｓｅｒｖｅｒ  Ｉｎｆｏｒｍａｔｉｏｎ）として、当該サーバの物理ＭＡＣアドレスと共に、当該サーバに接続された自身のポート番号をコントローラ２０に通知する。これにより、コントローラ２０は、当該サーバ４０がスイッチ３０の配下にあることを認識する。
【００３３】
サーバ４０は、スイッチ３０の配下の物理サーバであり、ＣＵ分離型ネットワークにおけるサービスの提供を行う。ここでは、サーバ４０は、仮想マシン（ＶＭ）５０を管理する。サーバ４０上では、仮想マシン（ＶＭ）５０を稼働させることができる。例えば、サーバ４０は、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）等の仮想マシンモニタ（ＶＭＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）によって仮想マシン５０を生成し、稼働させる。なお、サーバ４０の役割・用途は、上記の例に限定されない。
【００３４】
仮想マシン５０は、サーバ４０上で稼働する仮想マシン（ＶＭ）である。仮想マシン５０に設定される仮想ＭＡＣアドレス及び仮想ＩＰアドレスの組合せは、管理装置１０が保持する仮想マシンの仮想ＭＡＣアドレス及び仮想ＩＰアドレスの組合せのうちの１つである。
【００３５】
［補足］
このとき、管理装置１０が、全ての仮想マシンの稼働状況を管理し、サーバ４０への仮想マシン５０の生成指示と、コントローラ２０への仮想マシン情報の通知を同時に行うようにしても良い。
【００３６】
また、サーバ４０が、仮想マシン５０を生成して稼働させた際に、仮想マシン５０の仮想ＭＡＣアドレス及び仮想ＩＰアドレスと、自身の物理ＭＡＣアドレスとを、直接的又は間接的に、管理装置１０に通知するようにしても良い。
【００３７】
ルータ６０は、スイッチ３０と外部ネットワーク（インターネット等）とを接続する中継機器である。図１では、ルータ６０として、アクセスルータ（Ａｃｃｅｓｓ  Ｒｏｕｔｅｒ）と、センタールータ（Ｃｅｎｔｅｒ  Ｒｏｕｔｅｒ）を示している。アクセスルータは、スイッチ３０とセンタールータとを接続する中継機器である。センタールータは、アクセスルータと外部ネットワークとを接続する中継機器である。
【００３８】
［ハードウェアの例示］
以下に、本発明に係るネットワークシステムを実現するための具体的なハードウェアの例について説明する。
【００３９】
管理装置１０、コントローラ２０、及びサーバ４０の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。他にも、サーバ４０の例として、携帯電話機、スマートフォン、スマートブック、カーナビ（カーナビゲーションシステム）、携帯型ゲーム機、家庭用ゲーム機、ガジェット（電子機器）、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＰＯＳ（Ｐｏｉｎｔ  ｏｆ  Ｓａｌｅ）端末、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器、店頭端末・高機能コピー機、デジタルサイネージ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｇｅ：電子看板）等が考えられる。また、管理装置１０、コントローラ２０、及びサーバ４０は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。管理装置１０、コントローラ２０、及びサーバ４０は、車両や船舶、航空機等の移動体に搭載されていても良い。
【００４０】
スイッチ３０の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）等を想定している。また、ルータ６０の例として、一般的なルータ（ｒｏｕｔｅｒ）等を想定している。他にも、スイッチ３０及びルータ６０の例として、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置／セキュリティ監視制御装置（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等が考えられる。
【００４１】
管理装置１０、コントローラ２０、スイッチ３０、サーバ４０、及びルータ６０の各々を接続するネットワークの例として、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を想定している。他の例として、インターネット、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等も考えられる。
【００４２】
図示しないが、管理装置１０、コントローラ２０、スイッチ３０、サーバ４０、及びルータ６０は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、通信用インターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）とによって実現される。
【００４３】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等が考えられる。
【００４４】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）でも良い。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【００４５】
上記の通信用インターフェースの例として、ネットワーク通信に対応した基板（マザーボードやＩ／Ｏボード）等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００４６】
なお、管理装置１０、コントローラ２０、スイッチ３０、サーバ４０、及びルータ６０の各々の処理を実現する内部構成は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【００４７】
但し、実際には、これらの例に限定されない。
【００４８】
［設定情報の登録処理］
図３を参照して、本実施形態における設定情報の登録処理の詳細について説明する。
【００４９】
（１）ステップＳ１０１
管理装置１０は、仮想マシン情報（ＶＭ  Ｉｎｆｏｒｍａｔｉｏｎ）として、仮想マシン５０の仮想ＭＡＣアドレス及び仮想ＩＰアドレスと、当該仮想マシン５０を稼働させるサーバ４０の物理ＭＡＣアドレスとをコントローラ２０に設定する。
【００５０】
（２）ステップＳ１０２
コントローラ２０は、管理装置１０からの設定により、仮想マシン情報として、仮想マシン５０の仮想ＭＡＣアドレス及び仮想ＩＰアドレスと、当該仮想マシン５０を稼働させるサーバ４０の物理ＭＡＣアドレスとを保持する。
【００５１】
（３）ステップＳ１０３
スイッチ３０は、配下にサーバ４０が接続された場合、当該サーバ４０からＡＲＰ要求を受信した際に、当該サーバ４０の物理ＭＡＣアドレスを検出し、当該サーバ４０の物理ＭＡＣアドレスをコントローラ２０に通知する。このとき、コントローラ２０は、オープンフロー技術を用いて、サーバ４０の物理ＭＡＣアドレスを基に、当該サーバ４０宛のパケットに関するフローエントリをスイッチ３０に設定する。
【００５２】
（４）ステップＳ１０４
コントローラ２０は、保持しているサーバの物理ＭＡＣアドレスと、スイッチ３０から通知されたサーバの物理ＭＡＣアドレスとを照合し、両方が一致した場合、両方を対応付け、当該サーバ上の仮想マシン５０の仮想ＭＡＣアドレス及び仮想ＩＰアドレスを基に、当該仮想マシン５０宛のパケットに関するフローエントリをスイッチ３０に設定する。
【００５３】
（５）ステップＳ１０５
サーバ４０は、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）等の仮想マシンモニタ（ＶＭＭ）によって仮想マシン５０を生成し、稼働させる。
【００５４】
（６）ステップＳ１０６
スイッチ３０は、当該仮想マシン５０宛のパケットに関するフローエントリが設定された後、当該仮想マシン５０からＡＲＰ要求を受信する。ここでは、スイッチ３０は、当該仮想マシン５０からのＡＲＰ要求をコントローラ２０に転送する。
【００５５】
（７）ステップＳ１０７
コントローラ２０は、スイッチ３０を介して、当該仮想マシン５０からのＡＲＰ要求を受信し、仮想マシン情報を参照して、当該仮想マシン５０にＡＲＰ応答を返信する。
【００５６】
［設定情報の変更処理］
図４を参照して、本実施形態における設定情報の変更処理の詳細について説明する。
【００５７】
（１）ステップＳ２０１
管理装置１０は、仮想マシン５０を稼働させるサーバの物理ＭＡＣアドレスが変更された場合、再度、仮想マシン情報（ＶＭ  Ｉｎｆｏｒｍａｔｉｏｎ）として、仮想マシンの仮想ＭＡＣアドレス及び仮想ＩＰアドレスと、変更後のサーバの物理ＭＡＣアドレスとをコントローラ２０に設定する。このとき、管理装置１０は、変更後の内容を基に、サーバの物理ＭＡＣアドレスのみ、コントローラ２０に再設定するようにしても良い。
【００５８】
（２）ステップＳ２０２
コントローラ２０は、管理装置１０からの設定により、仮想マシン５０を稼働させるサーバ４０の物理ＭＡＣアドレスの変更が通知された場合、当該仮想マシン５０宛のパケットに関するフローエントリの変更をスイッチ３０に設定する。
【００５９】
（３）ステップＳ２０３
サーバ４０は、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）等の仮想マシンモニタ（ＶＭＭ）によって仮想マシン５０を移動（ｍｉｇｒａｔｉｏｎ）させる。
【００６０】
（４）ステップＳ２０４
仮想マシン５０の移動先のサーバ４０に対応するスイッチ３０は、当該仮想マシン５０宛のパケットに関するフローエントリが設定された後、移動後の仮想マシン５０からＡＲＰ要求を受信する。ここでは、当該スイッチ３０は、当該仮想マシン５０からのＡＲＰ要求をコントローラ２０に転送する。
【００６１】
（５）ステップＳ２０５
コントローラ２０は、スイッチ３０を介して、当該仮想マシン５０からのＡＲＰ要求を受信し、仮想マシン情報を参照して、当該仮想マシン５０にＡＲＰ応答を返信する。
【００６２】
［コントローラの構成例］
上記の内容を基に、本発明に係るコントローラの構成を、機能ブロックとして表現する。
【００６３】
図５に示すように、本発明に係るコントローラ２０は、記憶部２１と、検出部２２と、設定部２３を備える。
【００６４】
記憶部２１は、管理装置１０から設定された仮想マシン情報、すなわち、仮想マシンの仮想ＭＡＣアドレス及び仮想ＩＰアドレスと、当該仮想マシンを稼働させるサーバの物理ＭＡＣアドレスとを記憶する。このとき、記憶部２１は、仮想マシン５０の仮想ＭＡＣアドレス及び仮想ＩＰアドレスと、当該仮想マシン５０を稼働させるサーバ４０の物理ＭＡＣアドレスも記憶する。
【００６５】
検出部２２は、スイッチ３０を介して、スイッチ３０の配下のサーバ４０の物理ＭＡＣアドレスを検出する。ここでは、検出部２２は、スイッチ３０を介して、ヘッダ情報の送信元アドレスの領域に当該サーバ４０の物理ＭＡＣアドレスを含むパケットを受信することで、当該サーバ４０の物理ＭＡＣアドレスを検出する。なお、検出部２２は、検出した情報を記憶部２１に記憶するようにしても良い。
【００６６】
設定部２３は、管理装置１０から設定されたサーバの物理ＭＡＣアドレスと、スイッチ３０を介して検出されたサーバ４０の物理ＭＡＣアドレスを照合し、両方が一致した場合、両方を対応付け、当該サーバ４０上の仮想マシン５０の仮想ＭＡＣアドレス及び仮想ＩＰアドレスを基に、当該仮想マシン５０宛のパケットに関するフローエントリをスイッチ３０に設定する。
【００６７】
記憶部２１、検出部２２、及び設定部２３は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、通信用インターフェース（Ｉ／Ｆ）とによって実現される。
【００６８】
＜第２実施形態＞
以下に、本発明の第２実施形態について説明する。
【００６９】
本発明の第１実施形態では、スイッチ３０は、配下のサーバ４０の識別情報を検出し、当該サーバ４０の識別情報をコントローラ２０に通知している。コントローラ２０は、管理装置１０から設定されたサーバ４０の識別情報と、スイッチ３０から通知されたサーバ４０の識別情報が一致する場合、当該サーバ４０との通信経路を計算し、当該サーバ４０宛のパケットに関するフローエントリをスイッチ３０に設定する。
【００７０】
しかし、どのスイッチの配下にどのサーバがあるか事前に判明しており、管理装置１０からコントローラ２０に対して、サーバ４０の識別情報として、スイッチ３０の配下のサーバ４０の識別情報が設定された場合、コントローラ２０は、管理装置１０から設定されたサーバ４０の識別情報と、スイッチ３０から通知されたサーバ４０の識別情報とを照合する必要はない。この場合、コントローラ２０は、スイッチ３０から、配下のサーバ４０の識別情報の通知がなくても、管理装置１０から設定されたサーバ４０の識別情報のみに基づいて、当該サーバ４０との通信経路を計算し、当該サーバ４０宛のパケットに関するフローエントリをスイッチ３０に設定することが可能である。
【００７１】
＜各実施形態の関係＞
なお、上記の各実施形態は、組み合わせて実施することも可能である。例えば、一部のスイッチについてのみ、配下にどのサーバがあるか事前に判明している場合、配下のサーバが事前に判明しているスイッチに対しては第２実施形態の方式を適用し、配下のサーバが事前に判明していないスイッチに対しては第１実施形態の方式を適用することが考えられる。
【００７２】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【００７３】
（付記１）
仮想マシンの識別情報と、前記仮想マシンを稼働させるサーバの識別情報とを設定されたコントローラと、
配下のサーバの識別情報を検出し、当該サーバの識別情報を前記コントローラに通知するスイッチと
を含み、
前記コントローラは、前記設定されたサーバの識別情報と、前記スイッチから通知されたサーバの識別情報が一致する場合、当該サーバ上の仮想マシンの識別情報を基に、当該仮想マシン宛のパケットに関するフローエントリを前記スイッチに設定する
ネットワークシステム。
【００７４】
（付記２）
付記１に記載のネットワークシステムであって、
前記仮想マシンの識別情報と、前記仮想マシンを稼働させるサーバの識別情報とを前記コントローラに設定する管理装置
を更に含み、
前記コントローラは、前記仮想マシンの稼働中に、前記管理装置から前記仮想マシンを稼働させるサーバの識別情報の変更が通知された場合、当該仮想マシン宛のパケットに関するフローエントリの変更を前記スイッチに設定する
ネットワークシステム。
【００７５】
（付記３）
仮想マシンの識別情報と、前記仮想マシンを稼働させるサーバの識別情報とを保持する記憶部と、
設定されたフローエントリに従って受信パケットを転送するスイッチを介して、当該スイッチ配下のサーバの識別情報を検出する検出部と、
前記検出されたサーバの識別情報と、前記保持しているサーバの識別情報とが一致する場合、当該サーバ上の仮想マシンの識別情報を基に、当該仮想マシン宛のパケットに関するフローエントリを前記スイッチに設定する設定部と
を具備する
コントローラ。
【００７６】
（付記４）
コントローラに、仮想マシンの識別情報と、前記仮想マシンを稼働させるサーバの識別情報とを設定することと、
前記コントローラからスイッチを介して、前記スイッチ配下のサーバの識別情報を検出し、当該サーバの識別情報を検出することと、
前記設定されたサーバの識別情報と、前記検出されたサーバの識別情報が一致する場合、当該サーバ上の仮想マシンの識別情報を基に、当該仮想マシン宛のパケットに関するフローエントリを前記スイッチに設定することと
を含む
ネットワーク管理方法。
【００７７】
（付記５）
付記４に記載のネットワーク管理方法であって、
管理装置から、前記仮想マシンの識別情報と、前記仮想マシンを稼働させるサーバの識別情報とを前記コントローラに設定することと、
前記仮想マシンの稼働中に、前記管理装置から前記コントローラに、前記仮想マシンを稼働させるサーバの識別情報の変更が通知された場合、当該仮想マシン宛のパケットに関するフローエントリの変更を前記スイッチに設定することと
を更に含む
ネットワーク管理方法。
【００７８】
（付記６）
仮想マシンの識別情報と、前記仮想マシンを稼働させるサーバの識別情報とを保持するステップと、
設定されたフローエントリに従って受信パケットを転送するスイッチを介して、当該スイッチ配下のサーバの識別情報を検出するステップと、
前記検出されたサーバの識別情報と、前記保持しているサーバの識別情報とが一致する場合、当該サーバ上の仮想マシンの識別情報を基に、当該仮想マシン宛のパケットに関するフローエントリを前記スイッチに設定するステップと
を計算機に実行させるためのプログラムを格納した
記憶媒体。
【００７９】
＜本発明の特徴＞
以上のように、本発明は、オープンフローネットワークを始めとするＣＵ分離型ネットワークを対象としている。なお、オープンフローネットワークは一例に過ぎない。実際には、本発明は、「オープンフロー技術を使用したフローの制御」以外の経路制御を行うネットワークを対象とすることもできる。
【００８０】
本発明では、仮想マシンの生成やマイグレーションの動作と並行してスイッチに対するフローエントリの設定を行う。すなわち、仮想マシンの通信の開始に先立って、スイッチに対するフローエントリの設定が完了する。
【００８１】
本発明においては、コントローラには、外部の管理装置から、仮想マシンの識別情報と、当該仮想マシンを稼働させるサーバの識別情報が設定される。コントローラは、スイッチを介して、スイッチ配下にあるサーバの識別情報を検出し、設定されたサーバの識別情報を照合することで、当該サーバ上で稼働している仮想マシンの識別情報を把握することができる。このため、コントローラは、仮想マシンが生成されるたびに仮想マシンの識別情報を問い合わせる必要がなくなる。従って、本発明を適用しない場合と比べて、コントローラにかかる負荷が大幅に軽減されることになる。
【００８２】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【００８３】
なお、本出願は、日本出願番号２０１０−２０２４４４に基づく優先権を主張するものであり、日本出願番号２０１０−２０２４４４における開示内容は引用により本出願に組み込まれる。
【図１】
2012033117.tif 000003
【図２】
2012033117.tif 000004
【図３】
2012033117.tif 000005
【図４】
2012033117.tif 000006
【図５】
2012033117.tif 000007
【国際調査報告】
2012033117.tif 000008
2012033117.tif 000009