(57)【要約】【課題】データセンタと WAN とが連携して処理の中断なしに VM を移動させることによって，省電力化，負荷分散，障害対策をより効果的に行う。【解決手段】WAN 101 と他のネットワーク 111, 131, 141 との境界に位置する各ノード 102, 104 に動的に設定可能なネットワーク・アドレス変換機構（NAT） 201, 202 を用意して VM 114, 125 移動前と移動後のアドレスの重複をなくす。或いは、 WAN 101 を構成する各ノード102, 103, 104 にネットワーク仮想化機能を搭載して移動前のデータセンタ 111 に接続された仮想ネットワークと、移動後のデータセンタ 121 に接続された仮想ネットワークとを用意して同一アドレスの共存を可能にすることによって，VM 114, 125 の移動にともなう経路情報変更の必要をなくし、設定変更を短時間で完了する。【選択図】図２
2011210032.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンのマイグレーション方法であって、
経路情報に従ってパケットがルーティングされる第 1 のネットワーク上に存在する第 1 のノードには第 1 の LAN が接続され，
前記第 1 のネットワーク上に存在する第 2 のノードには第 2 の LAN が接続され，
前記第 1 のネットワーク上に存在する第 3 のノードには第 2 のネットワークが接続され，
前記第 1 の LAN に接続された前記第 1 のサーバ上で動作する仮想マシンと，前記第 2 のネットワークに接続されたクライアントとが，前記第 1 のノードと前記第 3 のノードを経由して通信しているとき，
前記仮想マシンを前記第 1 のネットワークにおけるアドレスを変更せずに、前記第 2 の LAN に接続された前記第 2 のサーバ上に移行させ，
前記仮想マシンの移行と同期して前記第 3 のノードの設定変更を行い，
前記通信が前記第 1 のネットワークの経路情報に基づいて、前記第 2 のノードと前記第 3 のノードとを経由するように経路変更され，
前記クライアントは前記第 2 のサーバ上に移行した仮想マシンとの通信を継続する、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項２】
請求項１に記載の仮想マシンのマイグレーション方法であって，
前記第１のネットワークが IP ネットワークであり，
前記第１のノードと前記第３のノードがそれぞれネットワーク・アドレス変換機能を有し，
前記仮想マシンの移行前には，前記第３のノードの前記ネットワーク・アドレス変換機構により、前記クライアントから前記仮想マシンに宛てて送信されたパケットの宛先アドレスを、前記仮想マシンのアドレスから第２のアドレスに変換する第１の変換を実施し，
前記第１のノードにおいては前記クライアントから前記仮想マシンに宛てて送信された前記パケットの宛先アドレスを前記第２のアドレスから第１のアドレスに変換するが，
前記第３のノードの設定変更において前記第１の変換をおこなわないように設定することにより，前記の通信切り替えを実現する、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項３】
請求項１の仮想マシンのマイグレーション方法であって，
前記第 1 のネットワークが IP ネットワークであり，
前記第 2 のノードと前記第 3 のノードがネットワーク・アドレス変換機能を有し，
前記仮想マシンの移行前には，前記第 3 のノードおよび前記第 1 のノードにおいて前記クライアントから前記仮想マシンに宛てて送信されたパケットの宛先アドレスを変換せずに転送し，
前記第 3 のノードの設定変更において前記クライアントから前記仮想マシンに宛てて送信されたパケットの宛先アドレスを、前記仮想マシンのアドレスから第 2 のアドレスに変換する第 1 の変換をおこなうように設定することにより，前記通信の切り替えを実現する、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項４】
請求項１に記載の仮想マシンのマイグレーション方法であって，
前記第 1 のネットワークが，前記第 1 の LAN に接続されているが、前記第 2 の LAN には接続されていない第 1 の仮想ネットワークと，前記第 2 の LAN に接続されているが前記第 1 の LAN には接続されていない第 2 の仮想ネットワークとを実現する仮想化ネットワークであり，
前記仮想マシンの移行前には，
前記第 3 のノードが前記クライアントから前記仮想マシンに宛てて送信されたパケットを前記第 1 の仮想ネットワークに転送し，
前記第 3 のノードの設定変更において、前記第 3 のノードが前記クライアントから前記仮想マシンに宛てて送信されたパケットを前記第 1 の仮想ネットワークに転送するように設定することにより，前記の通信切り替えを実現する、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項５】
請求項１に記載の仮想マシンのマイグレーション方法であって，
前記仮想マシンの移行が完了するまえに、前記仮想マシンのアドレスを前記第 2 の LAN に広告する、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項６】
請求項１に記載の仮想マシンのマイグレーション方法であって，
前記第 1 の LAN における前記第 1 のノードのアドレスと前記第 2 の LAN における前記第 2 のノードのアドレスを一致させる、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項７】
請求項１に記載の仮想マシンのマイグレーション方法であって，
前記第 2 の LAN 上に設定プログラムを搭載した管理コンピュータが存在し，
前記仮想マシンの前記第 2 のサーバへの移行時に、前記第 1 のサーバがパケットを生成し，
前記設定プログラムが前記のパケットを捕捉すると前記第 3 のノードの設定変更をおこなう、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項８】
請求項１に記載の仮想マシンのマイグレーション方法であって，
前記第 2 の LAN 上に設定プログラムを搭載した管理コンピュータが存在し，
前記仮想マシンの前記第 2 のサーバへの移行時に前記第 2 のサーバがパケットを生成し，
前記設定プログラムが前記パケットを捕捉すると前記第 3 のノードの設定変更をおこなう、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項９】
請求項４に記載の仮想ネットワークのマイグレーション方法であって、
前記仮想ネットワークの識別子として VLAN ID 、MAC アドレス、MPLS ラベル、トンネル付加情報、或いは光パスにおける波長を使用する、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項１０】
請求項４に記載の仮想ネットワークのマイグレーション方法であって、
前記仮想ネットワークの識別子を付けるかわりに，通信に使用する回線を変更する、
ことを特徴とする仮想マシンのマイグレーション方法。
【請求項１１】
第 1、第 2、第 3のノードが存在し、経路情報に従ってパケットがルーティングされる第 1のネットワークと、前記第 1、第 2、第 3 のノードにそれぞれ接続された第 3, 第 4, 第 2 のネットワークにおける仮想マシンのマイグレーションシステムであって、
前記第 3 の ネットワークに接続された第 1 のサーバと、
前記第 4 のネットワークに接続された第 2 のサーバと、
前記第 2 のネットワークに接続されたクライアント端末とを備え、
前記第 1のサーバ上で動作する仮想マシンと前記クライアント端末とが，前記第 1 のノードと第 3 のノードを経由して通信しているとき，
前記仮想マシンを前記第 1 のネットワークにおけるアドレス変更せずに、前記第 2 のサーバ上に移行させ、
前記仮想マシンの移行と同期した前記第 3 のノードの設定変更により，前記通信が前記第 1 のネットワークの経路情報に基づいて、前記第 2 のノードと前記第 3 のノードとを経由するように経路変更され，
前記クライアント端末は前記第 2 のサーバ上に移行した前記仮想マシンとの通信を継続する、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項１２】
請求項１１に記載の仮想マシンのマイグレーションシステムであって，
前記第 1のネットワークが IP ネットワークであり，
前記第 1のノードと前記第 3のノードがそれぞれネットワーク・アドレス変換機能を有し，
前記仮想マシンの移行前には，前記第 3のノードの前記ネットワーク・アドレス変換機構により、前記クライアント端末から前記仮想マシンに宛てて送信されたパケットの宛先アドレスを、前記仮想マシンのアドレスから第 2のアドレスに変換する第 1の変換を実施し，
前記第 1のノードにおいては、前記クライアントから前記仮想マシンに宛てて送信された前記パケットの宛先アドレスを前記第 2のアドレスから第 1のアドレスに変換するが，前記第 3のノードの設定変更において前記第 1の変換を行わないように設定することにより，前記の通信切り替えを実現する、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項１３】
請求項１１に記載の仮想マシンのマイグレーションシステムであって，
前記第 1 のネットワークが IP ネットワークであり，
前記第 2 のノードと前記第 3 のノードがネットワーク・アドレス変換機能を有し，
前記仮想マシンの移行前には，前記第 3 のノードおよび前記第 1 のノードにおいて前記クライアントから前記仮想マシンに宛てて送信されたパケットの宛先アドレスを変換せずに転送し，
前記第 3 のノードの設定変更において前記クライアントから前記仮想マシンに宛てて送信されたパケットの宛先アドレスを、前記仮想マシンのアドレスから第 2 のアドレスに変換する第 1 の変換をおこなうように設定することにより，前記通信の切り替えを実現する、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項１４】
請求項１１に記載の仮想マシンのマイグレーションシステムであって，
前記第 1 のネットワークが IP ネットワークであり，
前記第 1 のノードと、前記第 2 のノードと、前記第 3 のノードがそれぞれネットワーク・アドレス変換機能を有し，
前記仮想マシンの移行前と移行後において、前記ネットワーク・アドレス変換機能における変換を制御することにより、前記仮想マシンと前記クライアント端末間の通信を継続する、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項１５】
請求項１１に記載の仮想マシンのマイグレーションシステムであって，
前記第 1 のネットワークが，前記第 3 のネットワーク に接続されているが、前記第 4 の ネットワーク には接続されていない第 1 の仮想ネットワークと，前記第 4 のネットワークに接続されているが、前記第 3 のネットワークには接続されていない第 2 の仮想ネットワークとを実現する仮想化ネットワークであり，
前記仮想マシンの移行前には，
前記第 3 のノードが前記クライアントから前記仮想マシンに宛てて送信されたパケットを前記第 1 の仮想ネットワークに転送し，
前記第 3 のノードの設定変更において、前記第 3 のノードが前記クライアントから前記仮想マシンに宛てて送信されたパケットを前記第 1 の仮想ネットワークに転送するように設定することにより，前記の通信切り替えを実現する、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項１６】
請求項１１に記載の仮想マシンのマイグレーションシステムであって，
前記仮想マシンの移行が完了するまえに、前記仮想マシンのアドレスを前記第 3 のネットワークに広告する、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項１７】
請求項１１に記載の仮想マシンのマイグレーションシステムであって，
前記第 3 の ネットワーク における前記第 1 のノードのアドレスと前記第 4 の  ネットワークにおける前記第 2 のノードのアドレスを一致させる、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項１８】
請求項１１に記載の仮想マシンのマイグレーションシステムであって，
前記第 4 のネットワーク上に設定プログラムを搭載した管理コンピュータが存在し，
前記仮想マシンの前記第 2 のサーバへの移行時に、前記第 1 のサーバがパケットを生成し，
前記設定プログラムは、前記のパケットを捕捉すると前記第 3 のノードの設定変更を行う、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項１９】
請求項１１に記載の仮想マシンのマイグレーションシステムであって，
前記第 4 のネットワーク上に設定プログラムを搭載した管理コンピュータが存在し，
前記仮想マシンの前記第 2 のサーバへの移行時に、前記第 2 のサーバがパケットを生成し，
前記設定プログラムは、前記のパケットを捕捉すると前記第 3 のノードの設定変更を行う、
ことを特徴とする仮想マシンのマイグレーションシステム。
【請求項２０】
請求項１５に記載の仮想ネットワークのマイグレーションシステムであって、
前記仮想ネットワークの識別子として VLAN ID 、MAC アドレス、MPLS ラベル、トンネル付加情報、または光パスにおける波長を使用する、或いは前記仮想ネットワークの識別子を付けるかわりに，通信に使用する回線を変更する、
ことを特徴とする仮想マシンのマイグレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク上の異なる地点に存在するサーバ間での仮想マシンのライブ・マイグレーション技術に関する。
【背景技術】
【０００２】
インターネット上のトラヒック量は増大しつづけている。それにともなってネットワーク全体の消費電力も継続的に増大している。一方で，二酸化炭素排出抑制を含む地球温暖化問題の解決に向けて省電力化へのとりくみの重要性が高まっている。従来の技術において個々のデータセンタ内や個々のネットワーク・ノード内の省電力化が実現されてきたが，より効果的な省電力化のためには、これらのデータセンタと広域ネットワーク (Wide Area Network：WAN) とが連携することが重要だと考えられる。そのひとつの理由は，あるデータセンタとユーザや他のサーバとの通信トラフィックを全てなくせば，その通信のために用意されたネットワーク・ノードもあわせて電源を遮断することができることである。
【０００３】
サーバが消費する電力を削減するには，サーバの稼働率が低下したときに複数台のサーバ上に分散された処理を１台にまとめて，空いたサーバの電源を遮断する方法が従来からあった。処理をまとめる方法として，通常はサーバを仮想化して，あらかじめそれらの処理を仮想マシン (Virtual Machine：VM)上でおこない， VM 単位で他のサーバにマイグレート (移行) する方法が使用される。処理中の  VM を他のサーバにマイグレートすることをライブ・マイグレーションという。サーバ仮想化技術としては Xen , VMware （登録商標）などがあるが， Xen におけるライブ・マイグレーション技術は非特許文献１に記述され，VMware におけるライブ・マイグレーション技術、すなわち VMotion は非特許文献２に記述されている。
【０００４】
ライブ・マイグレーションにおいては，VM 上で動作しているアプリケーションに通信の中断や応答の遅延といった悪影響がないようにする必要がある。データセンタのサーバ上ではさまざまなアプリケーションが実行され，その中にはオンライン・ゲームや会議システムなどのリアルタイム・アプリケーションも存在する。これらに悪影響をあたえないためには，ダウンタイムすなわちマイグレーション時にアプリケーションの実行が中断する時間をできるだけ短くする必要がある。非特許文献１においては Quake 3 というオンライン・ゲームを実行するVM のダウンタイムを 60 ms におさえることに成功し，その結果ユーザがマイグレーションにほとんど気づかなかったと記述されている。
【０００５】
また，LAN上でのライブ・マイグレーションにおいて，移動前の VM が停止してから移動後の VM が起動するまでの時間を短縮するする技術が特許文献１に記述されている。
【０００６】
広域での VM 移動を実現する方法としては非特許文献３がある。この文献に記述された方法を使用すれば，モバイル IPを使用することによって，IP ネットワーク上の任意の場所に VM を移動させても通信を継続することができる。  また，特許文献２には遠隔地にあるデータセンタ間をインターネット・プロトコルによってカプセル化された レベル2 (L2) パスでむすんでライブ・マイグレーションなどの操作がおこなえるようにする方法が記述されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Clark, C., Fraser, K., Hand, S., Gorm Hansen, J., Jul, E., Limpach, C., Pratt, I., and Warfield, A., “Live Migration of Virtual Machines”, 2nd Symposium on Networked Systems Design and Implementation (NSDI ’05), pp. 273-286, 2005.
【非特許文献２】Nelson, M., Lim, B.-H., and Hutchins, G., “Fast Transparent Migration for Virtual Machines”, 2005 USENIX Annual Technical Conference, Article 25, 2005.
【非特許文献３】Qin Li, Jinpeng Huai, Jianxin Li, Tianyu Wo, and Minxiong Wen, “HyperMIP: Hypervisor Controlled Mobile IP for Virtual Machine Live Migration across Networks”, 11th IEEE High Assurance Systems Engineering Symposium, pp. 80-88, 2008.
【特許文献】
【０００８】
【特許文献１】特開2008-217302号公報
【特許文献２】米国公開特許公報 US 20090037607
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし，特許文献１及び非特許文献２に記載の技術は LAN 内に存在する 2 個のサーバの間で VM を移動させる技術であり，そのままでは広域に分散したサーバ間のマイグレーションは実現できず，したがってデータセンタとネットワークとが連携した省電力化は実現できない。
また、非特許文献３に記載の技術ではダウンタイムは数 10 秒程度になることは開示されている。
特許文献２に記載の方法はデータセンタ間をカプセル化された Ethernet（登録商標）によってむすぶが，ユーザからの通信もそのパスを経由することができるため，言及はされていないが、ダウンタイムは短縮することができると考えられる。しかし，この方法ではデータセンタが分散していてもトラフィックは特定のデータセンタへのパスに集中するという問題があると考えられる。
【００１０】
この発明の第１の課題は，データセンタと WAN とが連携することによって，従来技術であるデータセンタ内およびネットワーク内に限定された省電力化より効果的な省電力化を実現することである。そのためには，処理・トラフィックともに分散されている状態から，すべてのアプリケーションを他のデータセンタのサーバにマイグレートさせ，トラフィックも他のネットワーク・ノードにマイグレートさせる技術が必要である。とくにリアルタイム・アプリケーションの動作に悪影響をあたえずにマイグレートさせるために，アプリケーションのダウンタイムを低減、望ましくは数 10 ms 以下に短縮する必要がある。
【００１１】
また，この発明の第２の課題は，データセンタと WAN とが連携することによって，従来技術であるデータセンタ内に限定された負荷分散より効果的な広域の負荷分散を実現することである。とくに，複数のデータセンタに処理が分散されるときには WAN 内のトラフィックも分散されるようにする必要がある。このような負荷分散においてもアプリケーションを他のデータセンタのサーバにマイグレートさせる技術が有効であり，そのためには上記の省電力化におけるのと同様の技術が必要である。
【００１２】
さらに，この発明の第３の課題は，データセンタが存在する地域での地震予知や爆撃機襲来など，災害が予測されるときに，データセンタと WAN とが連携することによってその影響を最小限にすることである。このような災害の回避のためにも，アプリケーションを他のデータセンタのサーバにマイグレートさせるとともにトラフィックもマイグレートする技術が有効であり，そのためには上記の省電力化におけるのと同様の技術が必要である。
【００１３】
本発明は，上記の課題を解決するため、広域でのプログラムや仮想マシンのマイグレーションを短時間で実現することによって，どのようなアプリケーションでもマイグレートできるようにすると共に、そのアプリケーションの通信トラフィックもマイグレートすることが可能な仮想マシンのマイグレーション方法およびシステムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の目的を達成するため、本発明においては、経路情報に従ってパケットがルーティングされる第 1 のネットワーク上に存在する第 1 のノードには第 1 の LAN が接続され，第 1 のネットワーク上に存在する第 2 のノードには第 2 の LAN が接続され，さらに第 1 のネットワーク上に存在する第 3 のノードには第 2 のネットワークが接続され，第 1 の LAN に接続された第 1 のサーバ上で動作する仮想マシンと，第 2 のネットワークに接続されたクライアントとが，第 1 のノードと第 3 のノードを経由して通信しているとき，仮想マシンを第 1 のネットワークにおけるアドレスと MAC (Media Access Control) アドレスとを変更せずに、第 2 の LAN に接続された第 2 のサーバ上に移行させ，この仮想マシンの移行と同期した第 3 のノードの設定変更により，当該通信が 第 1 のネットワークの経路情報にもとづいて、第 2 のノードと第 3 のノードとを経由するように経路変更され，クライアントは第 2 のサーバ上に移行した仮想マシンとの通信を継続する構成の仮想マシンのマイグレーション方法を提供する。
【００１５】
また、本発明においては、上記の目的を達成するため、第 1 、第 2 、第 3 のノードが存在し、経路情報に従ってパケットがルーティングされる第 1 のネットワークと、第 1、第 2、第 3のノードにそれぞれ接続された第 3, 第 4, 第 2 のネットワークにおける仮想マシンのマイグレーションシステムであって、第 3 の ネットワーク に接続された第１のサーバ上で動作する仮想マシンと，第 2 のネットワークに接続されたクライアント端末とが，第 1 のノードと第 3 のノードとを経由して通信しているとき，仮想マシンを第 1 のネットワークにおけるアドレスと MAC アドレスとを変更せずに、第 4 のネットワークに接続された第 2 のサーバ上に移行させ，仮想マシンの移行と同期した第 3 のノードの設定変更により，通信が第 1 のネットワークの経路情報に基づいて、第 2 のノードと第 3 のノードとを経由するように経路変更され，クライアントは第 2 のサーバ上に移行した仮想マシンとの通信を継続する仮想マシンのマイグレーションシステムを提供する。
【００１６】
すなわち、上記の目的を達成するため、本発明の好適な態様において，次の２種類の手段の組を使用する。
【００１７】
第 1 の手段の組においては，第１のネットワークである WAN と他のネットワークとの境界に位置する各ネットワーク・ノードに動的に設定可能なネットワーク・アドレス変換 (NAT) 機構を用意する。そして，VM の移動元のデータセンタに接続されたネットワーク・ノードがもつ第 1 の NAT 機構によって，VM の移動元のデータセンタからそのノードに到着するパケットが送信元アドレスとして VM のアドレスを含むときにそれを重複のない第 2 のアドレスに変換するようにし，同時にそのノードから VM の移動元のデータセンタに転送されるパケットが送信先アドレスとして前記の第 2 のアドレスを含むときにそれを VM のアドレスに変換するようにする設定をしておく。また，VM が移動元のデータセンタに存在するときには，VM のユーザに接続されたネットワーク・ノードがもつ第 2 の NAT 機構によって，そのノードからユーザのネットワークに転送されるパケットが送信元アドレスとして第 2 のアドレスを含むときにそれを VM のアドレスに変換するようにし，ユーザのネットワークからそのノードに達するパケットが送信先アドレスとして VM のアドレスを含むときにそれを第 2 のアドレスに変換するように設定しておく。そして， VM が移動先のデータセンタに移動したときには第 2 の NAT 機構の設定を無効にする。これによって，WAN 内においては VM の移動元のデータセンタからのパケットと VM の移動先のデータセンタからのパケットとでアドレスが重複することがなくなる。
【００１８】
第 2 の手段の組においては， WAN を構成する各ネットワーク・ノードにネットワーク仮想化機能を搭載し，移動前のデータセンタに接続された第 1 の仮想ネットワークと，移動後のデータセンタに接続された第 2 の仮想ネットワークとを用意する。VM が移動前のデータセンタに存在するときは，WAN の各出入口に到着するパケットが送信元アドレスとして VM のアドレスを含むときにそのパケットを第 1 の仮想ネットワークに転送するように設定しておく。また， VM が移動先のデータセンタに移動したことを検出すると，WAN の各出入口に到着するパケットが送信元アドレスとして VM のアドレスを含むときにそのパケットを第 2 の仮想ネットワークに転送するように設定変更する。
【００１９】
上記の第 1 の手段の組または第 2 の手段の組を適用することによって，VM の移動にともなって経路情報を変更する必要がなくなり，ネットワークが不安定になる時間をなくすことができる。また， VM の移動を検出すると、ただちに移動前の VM との通信が移動後の VM との通信に切り替えられる。そのため，ダウンタイムを数 10 ms 以下におさえることができる。その際，VM にアクセスするには移動前のアドレスをそのまま使用することができる。
【発明の効果】
【００２０】
本発明によれば，上記のように広域ネットワークにおけるライブ・マイグレーションのダウンタイムを低減できるため，あらゆるアプリケーションが動作する VM を広域で移動させることができる。その結果として、第 1 の課題としてあげた省電力化の効果と，第 2 の課題としてあげた負荷分散の効果と，第 3 の課題としてあげた障害対策の効果を高めることができる。
【図面の簡単な説明】
【００２１】
【図１】第 1 および第 2 の実施例におけるネットワークの物理構成図である。
【図２】第 1 の実施例のネットワークシステムの概要をあらわす図である。
【図３】第 1 の実施例に係る、NATの適用によるパケットの内容の変化をあらわす図である。
【図４】第 1、第 2 の実施例に係る、1 個の VM のマイグレーションの手順の一例をあらわす図である。
【図５】第 1、第 2 の実施例に係る、省電力化を目的とする VM 移動法における管理プログラムにおける全体手順をあらわす図である。
【図６】第 2 の実施例のネットワークシステムの概要をあらわす図である。
【図７】第 1、第 2 の実施例に係る、1 個の VMのマイグレーションの手順の別案をあらわす図である。
【図８】第 1、第 2 の実施例に係る、負荷分散を目的とする VM 移動法における管理プログラムにおける全体手順をあらわす図である。
【図９】第 1、第 2 の実施例に係る、障害対策を目的とする VM 移動法における管理プログラムにおける全体手順をあらわす図である。
【図１０】第 1 の実施例に係る、 NAT の高速変換を説明するための模式図である。
【図１１】第 2 の実施例に係る、ノード群の具体的構成例を示す図である。
【図１２】第 2 の実施例に係る、ノード群の具体的構成の他の例を示す図である。
【発明を実施するための形態】
【００２２】
以下、図面に従い、本発明の実施形態について説明する。なお、本明細書において仮想マシン (VM) とは，コンピュータのユーザが実行させるプログラムとデータによって構成されるオブジェクトを意味するものとする。たとえば、特定のプログラムとデータを扱うプロセスは、本明細書においては仮想マシン(VM)の範疇に入ることとする。また、本明細書においては、「マイグレーション」を「移行」あるいは「移動」と称する場合がある。
【実施例１】
【００２３】
図１は第 1 および第 2 の実施例に共通するネットワークの物理構成図である。
【００２４】
同図において、中央の第 1 のネットワークである WAN 101 はデータセンタ 111 に接続されたエッジ・ノード(Node) 102 と，データセンタ 121 に接続されたエッジ・ノード 103 と，第 2 のネットワークを構成する、ユーザのネットワーク 131 および 141 に接続されたエッジ・ノード 104 によって構成されている。WAN 101 はさらに多くのネットワーク・ノードによって構成されていてもよい。また，複数のネットワーク・ノードが異なるユーザのネットワークに接続されていてもよい。エッジ・ノード 102，103，104 は、第 1 の実施例においてはネットワーク・アドレス変換 (Network Address Translation： NAT) 機能をもつルータであり，後で説明する第 2 の実施例においてはネットワーク仮想化機能をもつ レベル３(L3) スイッチである。
【００２５】
WAN 101 においては，エッジ・ノード間を直接接続するかわりにコア・ノードをはさんで接続することも可能である。また，第 2 のネットワークを構成する、ユーザのネットワーク 131 および 141 を同一のエッジ・ノード 104 に接続するかわりに，異なるエッジ・ノードに接続することも可能である。ユーザのネットワークに接続された複数のエッジ・ノードが存在するときは，各エッジ・ノードにおいて同様の処理をおこなう。
【００２６】
データセンタ 111 には、エッジ・ノード 102 に接続されたゲートウェイ 112 があり，ゲートウェイ 112 に接続された VLAN D 116 に第 1 のサーバであるサーバ 113 が接続されている。VLAN D 116 には他にもサーバが接続されていてもよい。図１に示したように、第 1 の LAN であるVLAN D 116 に与えられた IP サブネットは 10.1.1.* である。サーバ 113 には仮想マシン (VM) 114 がふくまれている。ゲートウェイ 112 はスイッチまたはルータである。ゲートウェイ 112 がルータであればその LAN 側のポート、すなわちその IP アドレスがデータセンタ 111 内のサーバ 113 から WAN 101 へのデフォルト・ゲートウェイとなる。また，ゲートウェイ 112 が L2 スイッチであればエッジ・ノード 102 のゲートウェイ側のポート、すなわちその IP アドレスがデータセンタ 111 内のサーバ 113から WAN 101 へのデフォルト・ゲートウェイとなる。
【００２７】
一方、データセンタ 121 にはエッジ・ノード 103 に接続されたゲートウェイ 122 があり，ゲートウェイ 122 に接続された第 2 の LAN である VLAN D’ 126 に第 2 のサーバであるサーバ 123 、およびサーバ 124 が接続されている。VLAN D’ 126 には他にもサーバが接続されていてもよい。VLAN D’ 126 にあたえられた IP サブネットは 10.1.1.* であり，データセンタ 111 における 第 1 の LAN の IP サブネットと等しい。
【００２８】
なお、第 2 の LAN であるVLAN D’ 126 上には、第 1 の LAN である VLAN D 116 と同一の MAC アドレスが存在できる必要があるため VLAN D 116 とは Ethernet による直接の接続は存在しないが，特に一部の VM だけが移動したときにデータセンタ 111 上の VM とデータセンタ 121 上の VM とが Ethernet プロトコルによって通信できるように，特定の MAC アドレスをもつ Ethernet パケットだけを通過させる一種のゲートウェイを経由して VLAN D 116 と VLAN D’ 126 を接続することができる。
【００２９】
また、本明細書にあっては、上述の第 1 , 第 2 の LAN を、第 1, 第 2 のネットワークである WAN 101 , ユーザネットワーク 131, 141と区別するため、便宜上、第 3, 第 4 のネットワークと称する場合がある。
【００３０】
さて、上述の構成において、サーバ 123 内に VM 125 が図示されているが，これは VM 114 が移行する先の VM であり，サーバ 113 のVM 114 と同時に存在することはない。ゲートウェイ 122 がルータであればその LAN 側のポートの IP アドレスがデータセンタ 121 内のサーバから WAN 101 へのデフォルト・ゲートウェイとなる。また，ゲートウェイ 122 が L2 スイッチであればエッジ・ノード 102 のゲートウェイ側のポートの IP アドレスがデータセンタ 121 内のサーバから WAN 101 へのデフォルト・ゲートウェイとなる。
【００３１】
データセンタ 111 およびデータセンタ 121 のサーバ群はサーバ管理サーバ( DC Manager ) 162 によって管理されている。データセンタ内にとじた管理のためにはデータセンタ 111，データセンタ 121 それぞれにとじたサーバを使用することができるが，データセンタ間で VM をマイグレートするときは共通管理サーバが必要である。サーバ管理サーバ 162 はこの目的のためのサーバであるが，管理サーバ(Mng. Server) 150 が直接管理することも可能である。サーバ管理サーバ 162 はデータセンタ 111，データセンタ 121 にまたがる管理用 VLAN M 161 に接続され，2 つのデータセンタ内の各サーバすなわちサーバ 113，サーバ 123，サーバ 124 も管理用 VLAN M 161 に接続されている。
【００３２】
管理用 VLAN M 161 はサーバ管理のための指示・応答だけでなく VM マイグレーション時には VM のメモリやストレージの内容の転送にも使用するため，十分な帯域を確保する必要がある。管理用 VLAN M 161 は 2 つのデータセンタ 111、121 を Ethernet によって物理的に接続することによって実現することもできるが，WAN 101 上のエッジ・ノード 102 およびエッジ・ノード 103 を経由する VLAN や IP ネットワーク上の L2 パス であるL2TP ( Level 2 Tunneling Protocol)，VPLS ( Virtual Private LAN Service) などによるトンネルによって実現することもできる。
【００３３】
なお，ここでは管理用のネットワークとして２つのデータセンタにまたがる VLAN M 161 を使用しているが，サーバ管理サーバ 162 が IP ネットワーク経由の管理や VM 移動に対応していれば，これを IP ネットワークによって，たとえば WAN 101 によっておきかえてもよい。従来のサーバ管理はデータセンタ内でとじていたため，サーバ管理サーバ 162 も LAN における使用が前提とされていた。ここで VLAN を使用しているのはそのためである。
【００３４】
ユーザのネットワーク 131 もゲートウェイ 132 によってエッジ・ノード 104 に接続されている。ゲートウェイ 132 に接続された LAN には クライアント端末である PC( Personal Computer ) 133 が接続されている。また，ユーザのネットワーク 141 もゲートウェイ 142 によってエッジ・ノード 104 に接続されている。ゲートウェイ 142 に接続された LAN にはクライアント端末である PC 143 が接続されている。
【００３５】
管理サーバ 150 は PC サーバであり，管理プログラム( Manager ) 151 をふくんでいる。管理プログラム 151 は WAN 101 を管理するとともに，上述の通り、データセンタ 111，データセンタ 121 が含むサーバ等にも指示をあたえる設定プログラムとしても機能する。ただし，データセンタ 111，121 内の機器すなわちサーバ 113，ゲートウェイ 112 などに直接，指示をあたえるかわりに，データセンタ 111，112 のサーバ管理サーバ 162 を経由して指示をあたえることができる。そこで、本明細書において、管理サーバ 150, サーバ管理サーバ 161を総称して管理コンピュータと呼ぶ場合がある。
【００３６】
以上説明したネットワーク上に存在する各種のサーバ、すなわちサーバ 113, 123, 124, 管理サーバ 150, サーバ管理サーバ 161, 更には PC 133, 143は通常のコンピュータであり、それぞれ内部バス等で接続された、処理部である中央処理部(Central Processig Unit：CPU)、記憶部であるメモリや記憶装置、更にはネットワークに接続するためのインターフェイス部、入出力部であるキーボードやディスプレイを備えている。VM 114, 125は、メモリに記憶されたプログラムを CPU が実行することによって実現できることは言うまでもない。
【００３７】
以下，図２を使用して第 1 の実施例のネットワークシステムの概要について説明する。図２においてはゲートウェイ 112 からエッジ・ノード 102 に入力されるパケットと，エッジ・ノード 102 からゲートウェイ 112 に出力されるパケットとに NAT 201 が適用される。また，ゲートウェイ 132 およびゲートウェイ 142 からエッジ・ノード 104 に入力されるパケットと，ネットワーク・ノード 104 からゲートウェイ 132 およびゲートウェイ 142 に出力されるパケットとに NAT 202 が適用される。
【００３８】
NAT 201 には次の規則 (1) を登録しておく。この規則 (1) は変更しない。
rule LAN : Source S ←→ S’ : WAN   (1)
規則の並びは表として表現することができ，規則はその表の列として表現することができる。規則 (1) においては表の列 S および S’ を含む。
【００３９】
NAT 201 においては 第 1 のLAN 側すなわちゲートウェイ 112 から、第 1 のネットワークである WAN 101 側へのパケットに関してはそのパケットの送信者アドレスのサブネットが S であるかかどうかを判定し，そのとき，すなわちデータセンタ 111 において使用されているサブネットに属しているときにはそれをS’ にかきかえる。このとき，サブネット内のアドレスはもとのまま保存される。また，これ以外のサブネットに属しているパケットは変換しない。また，規則 (1) においては WAN 101 側から LAN 側、すなわちゲートウェイ 112 へのパケットに関してはそのパケットの受信者アドレスがデータセンタ 111 において使用されているサブネットに属しているかどうかを判定し，属しているとき (サブネットが S であるとき) にはそれを S にかきかえる。
【００４０】
具体例としてサブネット S としては 10.1/16，サブネット S’ としては 10.2/16 を使用するときは，この規則 (2) はつぎのようなかたちになる。
rule LAN : Source 10.1/16 ←→ 10.2/16 : WAN   (2)
この規則は，データセンタにおいてサブネット 10.1/16 (10.1.*.*) が使用されているときに，それに対応する WAN 101 におけるサブネットを 10.2/16 (10.2.*.*) とすることを意味する。すなわち，データセンタ 111 から WAN 101 へのパケットに対しては 10.1 → 10.2，WAN 101 からデータセンタ 111 へのパケットに対しては 10.2 → 10.1 という変換がなされる。いずれの場合もサブネット内のアドレスは変化しない。
【００４１】
また，NAT 202 には初期状態として下記の規則 (3) を登録しておく。
rule WAN : Source S’ ←→ S : LAN   (3)
すなわち，NAT 202 においては WAN 101 側から LAN 側すなわちゲートウェイ 132 へのパケットに関してはそのパケットの送信者アドレスのサブネットが S’ であるかどうかを判定し，そのときにはそれを S にかきかえる。このとき，サブネット内のアドレスはもとのまま保存される。また，これ以外のサブネットに属しているパケットは変換しない。また，規則 (3) においては LAN 側すなわちゲートウェイ 132 から WAN 101 側へのパケットに関してもそのパケットの送信者アドレスのサブネットが S であるかどうかを判定し，属しているときにはサブネットを S’ にかきかえる。
【００４２】
すなわち，初期状態においてはこのサブネットに属するアドレスをもつパケットはすべてデータセンタ 111 とユーザとの間で交換される。VM マイグレーション時には後述のように NAT 202 の規則を変更，削除または追加することによって移動した VM に関するパケットはデータセンタ 121 とユーザとの間で交換されるようにする。
【００４３】
なお，NAT 201 および NAT 202 における規則の形式として，上記のようなサブネットによって指定するのではなく，アドレスの範囲によって指定することも可能である。たとえば，規則 (2) をつぎのように表現することもできる。
rule LAN : Source 10.1.1.1-10.1.255.255 ←→ 10.2.1.1-10.2.255.255 : WAN
この規則は，10.1.1.1 から 10.1.255.255 までの範囲のアドレスを 10.2.1.1 から 10.2.255.255 までの範囲のアドレスに変換することをあらわしている。変換の内容は前記の規則 (2) と等しい。
【００４４】
図３は NAT 201 および初期状態の NAT 202 の適用によるパケットの内容の変化をあらわしている。パケット 301 は VM 114 から PC 133 に送信されるパケットであり，送信元アドレス 302 としては VM 114 のアドレスである s a (サブネットが s でありサブネット内のアドレスが a であるアドレス，たとえば s が 10.1/16 または 10.1.*.* であり a が 2.3 (*.*.2.3)) をふくみ，送信先アドレス 303 としては PC 133 のアドレスである t b (サブネットが t でありサブネット内のアドレスが b であるアドレス) をふくむ。パケット 311 はパケット 301 が NAT 201 を通過したあとのパケットである。送信元アドレス 312 が s a とは異なる s’ a に変換されている (すなわち，サブネットだけが s から s’ に変換されている) が，他の部分には変化がない。パケット 321 はパケット 301 が NAT 202 を通過したあとのパケットである。送信元アドレス 322 が s’ a から s a に逆変換されているが，他の部分には変化がない。 
パケット 331 は PC 133 から VM 114 に送信されるパケットであり，送信元アドレス 332 としては PC 133 のアドレスである t b をふくみ，送信先アドレス 333 としては VM 114 のアドレスである s a をふくむ。パケット 341 はパケット 331 が NAT 201 を通過したあとのパケットである。送信元アドレス 343 が s a とは異なる s’ a に変換されているが，他の部分には変化がない。パケット 351 はパケット 341 が NAT 201 を通過したあとのパケットである。送信元アドレス 353 が s’ a から s a に逆変換されているが，他の部分には変化がない。
【００４５】
ゲートウェイ 112 およびゲートウェイ 122 はデータセンタ内のサブネットに関する経路の通知である経路の広告を WAN 101 に対しておこなうことができる。このとき，エッジ・ノード 102 はゲートウェイ 112 からの広告を変換後のサブネットすなわち上記の s’ の広告とみなし，エッジ・ノード 103 はゲートウェイ 122 からの広告をそのまま (サブネット s の広告とみなして) 受け取れば良い。この広告は VM がどちらのデータセンタに存在するかに依存せず，初期状態からおこなうことができる。ただし，エッジ・ノード 104 が経路情報をユーザのネットワーク 131，141 につたえる際には，サブネット s の情報だけを伝える必要がある。
【００４６】
つづいて，省電力化のための VM の移動法を説明する。まず図５を使用して管理プログラム 151 における全体手順を説明する。この移動法は、第 2 の実施例において共通した手順である。
【００４７】
図５のフローにおいて、管理プログラム 151 はステップ 501 において，常にデータセンタ 111，データセンタ 121，WAN 101 を構成する各ネットワーク・ノードの状態を直接またはサーバ管理サーバ 162 経由で監視し，データセンタ 111 における処理とエッジ・ノード 102 のトラフィックをそれぞれデータセンタ 121 とエッジ・ノード 103 に片寄せすることができるかどうかを判定する。判定のきっかけは一定の間隔またはデータセンタ 111, 121 や WAN 101 に変化がおこったことがネットワーク・ノードやサーバから直接またはサーバ管理サーバ 162 や下位のネットワーク管理サーバから通知されたときとすればよい。
【００４８】
データセンタ 111, 121 の状態を監視するには，データセンタ 111, 121 において VM やネットワークの資源を管理するサーバ管理サーバ 162 から各サーバ，VM などの情報を受信すればよい。また，WAN 101 の状態を監視するには，各エッジ・ノードすなわち 102, 103, 104 の監視機能すなわち RMON (Remote network MONitoring), NetFlow, IPFIX (IP Flow Information eXport) などの IETF (Internet Engineering Task Force) 標準 MIB (Management Information Base) やプロトコルを使用すればよい。これらの機能を管理プログラム 151 が直接使用することもできる。大規模なネットワークにおいては直接の監視はオーバヘッドがおおきいが，このような場合は複数の下請のネットワーク管理サーバを使用すればよい。
【００４９】
このような監視情報をえると，管理サーバ 150 の管理プログラム 151 はデータセンタ 111 において稼働している VM をすべてデータセンタ 121 に移動させても処理量に余裕があるかどうかを判定する。十分な余裕がなければ，すべての VM をデータセンタ 121 に片寄せすることはしない。また，エッジ・ノード 102 を経由するデータセンタ 111 からとデータセンタ 111 へのトラフィックをエッジ・ノード 103 を経由するように変更してもエッジ・ノード 103 およびそれに接続されたリンクの容量に余裕があるかどうかを判定する。十分な余裕がなければ，すべてのトラフィックをエッジ・ノード 103 に片寄せすることはしない。さらに，エッジ・ノード 102 はデータセンタ 111 だけでなく他の LAN などに接続されている可能性があるから，エッジ・ノード 102 の電源を遮断してもそれらからやそれらへのトラフィックが他のネットワーク・ノードを経由して継続的に通信することができるか，またエッジ・ノード 102 の電源を遮断してもそれらのネットワーク・ノードに余裕があるかどうかを判定する。
【００５０】
これらの判定を総合することによって，ステップ 501 において管理プログラム 151 が片寄せ可能と判定した時は，ステップ 502 において，データセンタ 111 における各 VM について、後述する図４のマイグレーション処理を実行する。図４の処理は管理プログラム 151 だけの処理ではないが，一連の処理を管理プログラム 151 が起動する。図４の処理が終わると，管理プログラム 151 はステップ 503 においてデータセンタ 111 とWAN 101 の電源遮断可能な機器の電源を直接またはサーバ管理サーバ 132 や下位のネットワーク管理サーバを経由して遮断する。WAN 101 に関してはエッジ・ノード 102 全体の電源を遮断することも可能である。しかし，すべての電源を遮断すると電源再入により時間がかかるため，比較的短時間のうちにトラフィック量や処理量がふたたび増加すると予測されるときにはエッジ・ノード 102 をスリープ状態として，すぐに復帰できるようにしておく。データセンタ 111 に関しても同様に，全電源を遮断するか一部だけとするかを判断し，それに従う。
【００５１】
つぎに，図４を使用して、１個の VM 114 のマイグレーションの手順を説明する。この手順は第 1 の実施例と第 2 の実施例に共通な手順である。VM 125 が移動後の VM である。VM 125 は VM 114 と同一の IP アドレスおよび MAC アドレスをもつ。これらのアドレスは VM 114 の停止後に VLAN D 116 上から削除され，VLAN D’ 126 上に生成することができる。しかし，VM の移動が完了する前に VLAN D’ 126 にこれらのアドレスを生成し，移動前の IP アドレスおよび MAC アドレスと共存させることもできる。VLAN D 116 と VLAN D’ 126 は独立の LAN であるため，このようにアドレスを共存させても問題がおこることはない。このようにすれば，とくに MAC アドレスに関しては VLAN D’ 126 上のスイッチの学習機能をあらかじめはたらかせることができ，VM 移動後に VLAN D’ 126 を混乱させることなく，ただちに通信を開始することができる。
【００５２】
また，VM 114 はゲートウェイ 112 経由でユーザと通信しているが，移動後の VM 125 はゲートウェイ 122 経由でユーザと通信する。そのため，移動後にただちに通信を開始するためには，ゲートウェイ 112 とゲートウェイ 122 の LAN 側の MAC アドレスおよび IP アドレスを一致させるのがよい。このようにすれば，VM 125 は ARP (Address Resolution Protocol ), RARP (Reverse ARP)などのプロトコルにもとづくパケットを送信したときでも VM 114 からそれらを送信したときとまったくおなじ応答をうけとることになり，問題なくまた遅延なく通信を継続することができる。
【００５３】
VM 114 はユーザのネットワーク上にある PC 143 と通信している。パケット 411 はマイグレーション処理が開始されるまえに PC 143 から出力されたパケットをあらわしている。パケット 411 は PC 143 からネットワーク・ノード 104，ゲートウェイ 112 を経てサーバ 113 に到達し，サーバ 113 内で動作している VM 114 に到達する。ステップ 502 の実行が開始されると，まず管理プログラム 151 から直接またはサーバ管理サーバ 132 を経由して VM 移動開始指示 421 がサーバ 113 に送信される。サーバ 113 はサーバ 123 と連携して，VM 114 が使用しているメモリ上のデータや仮想ディスク上のデータなどを管理用 VLAN M 131 経由でサーバ 123 にコピーする。このとき，VM 114 は動作させたままとする。
【００５４】
VM の移動がおわると第 1のサーバであるサーバ 113 は管理プログラム 151 またはサーバ管理サーバ 132 に VM 停止可能通知 423 をかえす。VM のコピー中にも VM 114 は実行をつづけているため，VM 114 のメモリの内容は変化し，VM 125 とは差分が生じる。差分の発生はメモリのページ単位のフラグによって，書き込みがあったかどうかを記録すればよい。停止可能通知 423 はその差分が十分に小さくなったときに生成される。
【００５５】
管理プログラム 151、またはサーバ管理サーバ 132は VM 停止可能通知 423 を受信するとバッファリング開始指示 431 をサーバ 123 に送信し，切り替え指示 433 をエッジ・ノード 104 に送信し，VM 停止指示 441 をサーバ 113 に送信する。バッファリング開始指示 431 は第 2 のサーバであるサーバ 123 が受信した VM 125 へのパケットを VM 125 が起動するまでサーバ 123 に蓄積する動作を開始することを指示する。
【００５６】
ここでバッファリング開始指示 431 は VM 125 のアドレスの生成もあわせて指示する。すなわち，VM 125 のために VM 114 の MAC アドレス，IP アドレスと同一の MAC アドレス，IP アドレスが生成される。その MAC アドレスの生成時にサーバ 123 からその MAC アドレスをふくむ RARP メッセージを送信することができる。あるいは，その MAC アドレスおよび IP アドレスの生成時にサーバ 123 からそれらのアドレスをふくむ ARP メッセージを送信することができる。これらのメッセージは LAN 内にそれらのアドレスを通知 (ブロードキャスト) する。また，切り替え指示 431 によって移動した VM へのパケット送信先を変更することを指示する。
【００５７】
サーバ 123 におけるバッファリングは VM 移動にともなうパケットの廃棄を最小限に抑えるためにおこなう。サーバ 123 が移動中の VM を複数個ふくむときは，VM ごとにバッファを確保し，VM ごとにバッファリングをする。従来の VM 移動法においては VM 移動にともなって多数のパケットが廃棄される。このため，リアルタイム・アプリケーションにおいては VM 移動において音声・動画再生が停止するなどの問題が生じる。バッファリングをおこなうことによって，この問題を解決することができる。
【００５８】
バッファリングをおこなわなくてもパケットの廃棄をおさえることができるときはバッファリングの必要はなく，バッファリング開始指示 431 も不要である。バッファリング開始指示 431 は管理プログラム 151 やサーバ管理サーバ 132 から送信するかわりにサーバ 113 から送信することも可能だが，管理プログラム 151 から送信することによって切り替え指示 433 との送信タイミングを最適化することができる。
【００５９】
切り替え指示 433 は、エッジ・ノード 104 において，第 1 の実施例においては NAT 202 の設定変更をおこない，第 2 の実施例においては仮想ネットワークの切替えをおこなう。NAT 202 の設定変更においては，既存の規則を変更または削除・追加して，移動した VM のアドレスに対して NAT が適用されないようにする。たとえば，もとの規則がアドレス範囲 10.1.1.1-10.1.255.255 に適用されていて (すなわち規則 (2) であり)，移動した VM のアドレスが 10.1.123.45 であるときには，規則をつぎの 2 個に分割すればよい。
【００６０】
rule WAN : Source 10.1.1.1-10.1.123.44 ←→ 10.2.1.1.10.2.123.44 : LAN
rule WAN : Source 10.1.123.46-10.1.255.255 ←→ 10.2.123-10.2.255.255 : LAN
逆に切り替え指示 433 によって適用アドレス範囲が空になったり２個の規則のアドレス範囲の間にギャップがなくなったときに規則を削除したり，まとめたりすればよい。このような操作によってすべての規則を高速な記憶装置におくことができれば，処理の高速化をはかることができる。
【００６１】
切り替え指示 433 の送信後に PC 143 から出力されるパケット 412 は，エッジ・ノード 104 からゲートウェイ 122 に転送され，さらにサーバ 123 に到達する。VM 125 はまだ起動していないため，パケット 412 はサーバ 123 に蓄積される。
【００６２】
サーバ 113 は VM 停止指示 441 を受信すると VM 114 を停止させ (442)，VM 移動最終処理 443 すなわち差分をサーバ 113 からサーバ 123 に管理用 VLAN M 131 経由で送信する処理によって VM 114 と VM 125 の差分をなくし，VM 114 が停止した状態から VM 125 を起動することを可能にする。VM 移動最終処理 443 が終了するとサーバ 123 は VM 125 を起動する (444)。また，サーバ 123 はバッファリングを終了し (445)，蓄積されたパケットを順に VM 125 に出力する。以上の処理が終了したあとに PC 143 から出力されるパケット 413 は，エッジ・ノード 104 を経てゲートウェイ 122 に転送され，サーバ 123 に到達するところはパケット 412 と同様だが，パケット 412 とはちがってサーバ 123 からただちに VM 125 に転送される。
【００６３】
なお，図４においてはサーバ 113 から VM 停止可能通知 423 を受信し，それにもとづいて管理サーバ 151 がバッファリング開始指示 431 や切り替え指示 433 を送信することができることを前提としていた。しかし，VMware など，従来のサーバ管理ソフトウェアを使用する場合にはこれが可能でないことがある。このようなときには，サーバ管理ソフトウェアが VM 起動までを自動的におこない，管理サーバ 151 が通知を受信できないことがある。このようなばあいには，図７のような手順を使用することができる。
【００６４】
図７においては，VM 移動本処理 422 までの処理は図４におけるのと同じだが，VM 停止可能通知 423 は送信されず，VM 停止 442，VM 移動最終処理 443，VM 起動 444 がサーバ管理サーバ 132 およびサーバ 113、123 間でおこなわれる。VM 起動後に起動した VM の MAC アドレスや IP アドレスを LAN 内に通知 (ブロードキャスト) するため， VM 起動通知 711 が生成される。VM 起動通知 711 のためには，通常，ARP または RARP などのアドレス解決プロトコルが使用される。ARP は VM の MAC アドレスと IP アドレスをあわせて通知するために使用されるが，RARP は MAC アドレスだけを通知するのに使用される。
【００６５】
なお、管理サーバ 151 はこの LAN 上に存在するわけではないので，LAN セグメント上だけで放送されるこれらのパケットを直接受信することはできない。そのため，この LAN 上にこれらのパケットを受信する補助プログラムをおき，管理サーバ 151 は補助プログラムから VM 起動通知 711 を受信するようにすればよい。管理サーバ 151 は VM 起動通知 711 を受信すると切り替え指示 433 を生成する。
【００６６】
この場合，エッジ・ノード 104 における切替えをより高速にするためには，管理サーバ 151 経由で切り替えをおこなうのでなく，上述の補助プログラムから直接，切り替え指示 433 をエッジ・ノード 104 に送信するようにすることもできる。このとき，管理サーバ 151 があらかじめ補助プログラムに設定先のネットワーク・ノードと切り替え指示 433 の内容を指示しておけばよい。
【００６７】
これらのアドレス解決プロトコル・メッセージは移動後にサーバ 123 が生成するが，サーバ 123 が VM 移動後に他の特定の種類や内容をもつパケットを生成することがわかっていれば，それをトリガーとして切り替え指示 433 を生成することが可能である。また，サーバ 113 が VM 114 の停止時に特定の種類のパケットを生成することがわかっていれば，それをトリガーとして切り替え指示 433 を生成することも可能である。あるいはサーバ 123 またはサーバ 113 が、補助プログラムのかわりに切り替え指示 433 を直接，生成することも可能である。
【００６８】
図３を使用して、NAT 201 および規則変更後の NAT 202 の適用によるパケットの内容の変化を説明する。VM 125 から PC 133 に送信されるパケットの内容はパケット 301 と等しい。すなわち，送信元アドレスとしては VM 125 のアドレスである s a をふくみ，送信先アドレスとしては PC 133 のアドレスである t b をふくむ。このパケットは NAT によって変換されないため，最後までこの内容が維持される。そのため，転送遅延などのために WAN 101 においてこのパケットと VM 114 から送信され NAT によって変換されたパケット 311 とが混在しても送信元アドレスは区別されるため，混乱なく転送される。
【００６９】
また，PC 133 から VM 125 に送信されるパケットの内容はパケット 331 とひとしい。すなわち，送信元アドレスとしては PC 133 のアドレスである t b をふくみ，送信先アドレスとしては VM 125 のアドレスである s a をふくむ。このパケットは NAT を経由しないため，最後までこの内容が維持される。そのため，転送遅延などのために WAN 101 においてこのパケットと VM 114 に送信され NAT によって変換されたパケット 341 とが混在しても送信先アドレスは区別されるため，混乱なく転送される。
【００７０】
以上の移動法は省電力化を目的としていたが，つぎに負荷分散を目的とする VM 移動法について説明する。この移動法も第 2 の実施例に共通の処理である。
【００７１】
図８は管理プログラムにおける処理をあらわしている。管理プログラムはステップ 801 において，常にデータセンタ 111，データセンタ 121，WAN 101 を構成する各ネットワーク・ノードの状態を直接またはサーバ管理サーバ 131 経由で監視し，データセンタ 111 の処理とエッジ・ノード 102 のトラフィックを負荷分散できるかどうかを判定する。ただし，この負荷分散には VM 移動にともなうオーバヘッドがあるため，そのオーバヘッドの存在にもかかわらず負荷分散に利点があると判断されるときだけ，負荷分散できると判定する。判定のきっかけは省電力化におけるのと同様である。また，データセンタ 111, 121 や WAN 101 の状態を監視するための方法も省電力化におけるのと同様である。
【００７２】
ステップ 801 において管理プログラム 151 が負荷分散できると判定した時は，ステップ 802 において，データセンタ 111 における VM の中から移動させる VM を決定する。この決定は負荷が平均的に分散されるようにきめるが，サーバにおける計算やネットワークのトラフィックは刻々と変化するから，現在あるいは過去の計算量やトラフィック量から完全に推定することはできない。したがって，完全な最適解をもとめる必要はない。つづいて，ステップ 803 において，データセンタ 111 における各 VM について図４の処理を実行する。ただし，データセンタ 121 やエッジ・ノード 103 が省電力化手順によって電源遮断されたものであるときは，図４の処理を実行するまえに電源を投入し，初期設定をおこなう必要がある。
【００７３】
以上で負荷分散を目的とする VM 移動法の説明をおわり，障害対策としての VM 移動法についてのべる。図９は管理プログラムにおける処理をあらわしている。管理プログラムはステップ 901 において，地震予知情報や敵機襲来情報など，障害の原因となりうるイベントの発生を監視または待機する。
【００７４】
ステップ 901 において管理プログラム 151 が負荷分散できると判定した時は，ステップ 902 において，データセンタ 111 における各 VM について図４の処理を実行する。ただし，データセンタ 121 やエッジ・ノード 103 が省電力化手順によって電源遮断されたものであるときは，図４の処理を実行するまえに電源を投入し，初期設定をおこなう必要がある。
【００７５】
以下，第 1 の実施例における４つの補足説明をおこなう。第 1 に，第 1 の実施例においては NAT 201 および NAT 202 は WAN 101 内に存在した。しかし，NAT 201 をゲートウェイ 112 におくことも可能であり，NAT 202 をゲートウェイ 132 および 142 におくことも可能である。このようにすれば WAN 101 の機器や機能を変更せずにこの発明の方法を適用することができるという利点がある。それに対して上記の実施例においてはデータセンタやユーザのネットワークの機器や機能を変更せずにこの発明の方法を適用することができるという利点がある。
【００７６】
第 2 に，第 1 の実施例においては VM の移動元のデータセンタ 111 に接続されたエッジ・ルータ 102 に NAT 201 を装備し，移動先のデータセンタ 121 に接続されたエッジ・ルータ 103 には NAT を装備しなかった。これに対して，VM の移動元のデータセンタに接続されたエッジ・ルータ 102 には NAT を装備せず，移動先のデータセンタに接続されたエッジ・ルータ 103 には NAT を装備することもできる。すなわち，図 2 においてデータセンタ 121 からデータセンタ 111 に VM を移動するときには，切り替え指示 433 の生成時に NAT 202 の規則を第 1 の実施例におけるのとは逆に変換することによって，ユーザは VM との通信を継続することができる。言い換えるなら、エッジ・ルータ 103 とエッジ・ルータ1104 が NATを有し，VM の移行前には，エッジ・ルータ 104およびエッジ・ルータ 102 においてクライアントPC から VMに宛てて送信されたパケットの宛先アドレスを変換せずに転送し，エッジ・ノード 104の設定変更において、クライアントPC から VM に宛てて送信されたパケットの宛先アドレスを、VM のアドレスから第 2 のアドレスに変換する第 1 の変換を行うことで対応することとする。
【００７７】
第 3 に，より一般的な方法として，VM の移動元のデータセンタ 111 に接続されたエッジ・ルータ 102 と移動先のデータセンタ 121 に接続されたエッジ・ルータ 103 の両方に NAT を装備し，エッジ・ルータ 102 の NAT 201 においてはサブネットを S から S’ に変換し，エッジ・ルータ 103 の NAT においてはサブネットを S から S” に変換し，エッジ・ルータ 104 の NAT 202 において，これらのサブネットをいずれも S に逆変換するようにすることもできる。この方法は変換がデータセンタ 111 とデータセンタ 121 に関して対称になるという利点がある。また，3 個以上のデータセンタが存在し，それらの間で自由に VM を移動させるときにも，この方法を拡張して適用することができるという利点がある。
【００７８】
このとき，図１０に示すように，3 個のデータセンタはそれぞれ独立のアドレス空間 1001，1002，1003 を使用するが，それらが WAN における単一のアドレス空間に，アドレスが重複しないようにマップされることになる。各データセンタのアドレス空間は複数個のサブネット (ページ) に分割して，サブネットごとに異なる変換を適用することもできる。たとえば，アドレス空間 1001 におけるサブネット 172.16/15 をサブネット 172.16/16 (172.16.*.*) 1011 とサブネット 172.17/16 (172.17.*.*) 1012 とに分割し，172.16/16 は 150.25/16 (150.25.*.*) 1061 に変換し，172.17/16 は 150.29/16 (150.29.*.*) 1064 に変換することができる。このようにしてアドレス空間を均等なサイズに分割すれば，仮想記憶におけるページ・テーブルのように，規則 (1), (2) などのかわりに，サブネットの値によってインデクスされるテーブルによって変換後のサブネットをもとめることができ，より高速な NAT が実現できる可能性がある。このテーブルが巨大なサイズになるとすべての要素を高速な記憶装置におくことはできなくなるが，高頻度でアクセスされる要素を高速なキャッシュにおくことによって，変換の高速化をはかることができる。
【００７９】
第 4 に，第 1 の実施例においては VM をデータセンタ 111 からデータセンタ 121 に移動するとしていたが，第 1 の実施例の方法を VM を単位とする移動ではなく，特定のユーザのデータおよびプログラム一式の移動やアプリケーション単位の移動にも適用することができる。これらにおいては ARP，RARP などのアドレス解決プロトコルによる移動の検出はできないが，移動先のサーバ 125 は移動の終了や移動したプログラムの起動などをおこなうため，その際に切替指示 433 を生成することができる。
【００８０】
第 5 に，第 1 の実施例においては VM を識別し通信相手を特定するのにそのアドレスを使用していたが，その識別・特定が名前など，アドレス以外の識別子によっておこなわれる場合にも第 1 の実施例における方法を適用することができる。このとき，サブネットに相当するのは複合的な名前の上位部分である。すなわち，名前 a.b の a が VM のグループを指定し，b がグループ内での特定の VM を指示しているときは，a がサブネットに相当する.すなわち，変換の際には a を a’ に変換するが，b は変換せず，a’.b のかたちにする。
【実施例２】
【００８１】
つぎに，図６を使用して第２の実施例の概要について説明する。図６に示す第２の実施例においては WAN 101 は仮想化され，２個の仮想ネットワーク 601A および 601B が生成されている。これらの仮想ネットワークのトポロジーは物理ネットワーク 101 と等しい。すなわち，仮想ネットワーク 601A は，物理ノード 102 に対応する仮想ノード 602A と，物理ノード 103 に対応する仮想ノード 603A と，物理ノード 103 に対応する仮想ノード 603A とで構成されている。また，仮想ネットワーク 601B は，物理ノード 102 に対応する仮想ノード 602B と，物理ノード 103 に対応する仮想ノード 603B と，物理ノード 103 に対応する仮想ノード 603B とで構成されている。
【００８２】
仮想ネットワーク 601A 上および仮想ネットワーク 601B 上のパケットは物理ネットワーク 101 上に共存するが，パケット上の識別子や、使用する光パスにおける波長，使用する回線（パス）などによってどちらの仮想ネットワークに属するかが識別される。パケット上の識別子としては、 VLAN ID，MPLS (Multi-Protocol Label Switching) ラベル，トンネル ID たとえば GRE (Generic Routing Encapsulation) トンネルにおいてはキーの値などを使用することができる。WAN においてこのような仮想ネットワークを構成するには，仮想化機能をもつネットワーク・ノードを使用する必要がある。MPLS にもとづく仮想化機能をもつルータとして、例えば Cisco Catalyst 6500 シリーズなどがあり，VLAN にもとづく仮想化機能をもつスイッチとして 例えば、Alaxala AX-6700S シリーズなどがある。これらの装置をネットワーク・ノードとして使用することによって，ネットワーク仮想化を実現することができる。
【００８３】
データセンタ 111 およびデータセンタ 121 の内部構成は、図２に示した第１の実施例におけるのと等しい。データセンタ 111 は仮想ノード 602A との間で通信するが，仮想ノード 602B とは通信しない。また，データセンタ 121 は仮想ノード 603B との間で通信するが，仮想ノード 603A とは通信しない。
【００８４】
ユーザのネットワーク 131 および 141 は仮想化されていてもよいが，物理ノード 104 において通信先が仮想ネットワーク 601A または仮想ネットワーク 601B に切替えられる。仮想ネットワーク 601A が通信先となっているときはデータセンタ 111 内の VM 114 と通信し，仮想ネットワーク 601B が通信先となっているときはデータセンタ 121 内の VM 125 と通信する。
【００８５】
この実施例においては仮想ネットワークの識別子をのぞいては，NAT のように転送されるパケットの内容が変更されることはない。したがって，パケットの内容に関する説明は省略する。また，省電力化のための VM 移動法や個々の VM 移動の手順は第 1 の実施例におけるのと変わらない。異なるのは切り替え指示 433 において NAT 202 を削除するかわりに仮想ネットワークを 601A から 601B に切替えることである。
【００８６】
この切替えは次のように行う。初期状態においてはエッジ・ノード 104 においてユーザのネットワーク 131 または 141 から VM 114 のアドレス A が属するサブネット S にむかうパケットに仮想ネットワーク 601A の識別子 la をつける。それによって，この変換はつぎのような規則によって表現されている。
if destinationIP in S then add_label la
切り替え時にこの規則より優先的に適用される，仮想ネットワーク 601B の識別子 lb をつけるつぎの規則に変更する。
if destinationIP == A then add_label lb
これによって，ユーザのネットワーク 131 または 141 から VM 114 がもつアドレス A にむかうパケットはデータセンタ 121 にある VM 125 にむかうが，サブネット S に属する他の VM にむかうパケットはデータセンタ 111 にむかう。
【００８７】
しかし、既存のネットワーク・ノードを物理ノード 104 として使用するとき，上記のような仮想ネットワーク識別子だけを交換する機能がないことがある。たとえば，仮想ネットワーク識別子が VLAN ID であるときに，VLAN ID だけを交換する機能はないが，他の処理とあわせて VLAN ID の交換ができる機能をもっているネットワーク・ノード機器がある。たとえば，Alaxala 社の AX6700 シリーズのスイッチなどにおいては，ポリシーベース・ルーティング機能によって IP パケットの転送先を指定するのと同時にその転送先が属する VLAN ID を指定することができる機能がある。この機能を使用して仮想ネットワーク識別子を交換することができるが，ポリシーベース・ルーティング機能においては物理ノード 104 内の IP アドレスを転送先として指定することができない。そのため，図６における物理ノード 104 のかわりに図１１のノード群 1101 を使用する。
【００８８】
図１１において、ノード群 1101 は 3 個の物理ノード 1102, 1103, 1104 によって構成されている。ゲートウェイ 132, 142 経由でデータセンタ 111 またはデータセンタ 121 に送信されたパケットは，ゲートウェイ 132, 142 から物理ノード 1104 に転送され，そのまま物理ノード 1103 に転送される。これらのパケットは物理ノード 1103 においてポリシーベース・ルーティング機能が適用されて，データセンタ 111 に送信されたパケットは，物理ノード 1102 内にある仮想ネットワーク 601A に属する IP アドレス 1111 に転送される。また，データセンタ 121 に送信されたパケットは，物理ノード 1102 内にある仮想ネットワーク 601B に属する IP アドレス 1112 に転送される。この転送の際に仮想ネットワーク識別子である VLAN ID が書き換えられる。
【００８９】
逆にデータセンタ 111 またはデータセンタ 121 からユーザ PC 133，143 に向けて送信されたパケットに関しても，VLAN ID の交換が必要である。そのため，これらのパケットは物理ノード 1102 を経由して物理ノード 1103 に転送され，物理ノード 1103 においてポリシーベース・ルーティング機能が適用されて，物理ノード 1104 内にあるゲートウェイ 132 および 142 が属するネットワークの IP アドレス 1113 に転送される。この転送の際に仮想ネットワーク 601A または 601B の仮想ネットワーク識別子 (VLAN ID) は削除されるか，またはゲートウェイ 132 および 142 が属するネットワークの仮想ネットワーク識別子 (VLAN ID) に置換される。
【００９０】
上記の方法においては、本来１個でよいはずの物理ノードにかえて 3 個の物理ノードが必要になるので高コストである。コストを削減するには，図１２のように，物理ノード 104 がもつ仮想化機能を使用すればよい。すなわち，物理ノード 104 から３個の仮想ノードを生成し，それらの仮想インターフェイスを物理インターフェイスにつなぐ。これらの物理インターフェイス間をリンク 1201 および 1202 によって接続する。このようにすれば 1 個の物理ノード 104 によって物理ノード 1102, 1103, 1104 によって構成されるネットワークと等価な機能を実現することができ，コストを削減することができる。
【産業上の利用可能性】
【００９１】
本発明はネットワーク上の異なる地点に存在するサーバ間での仮想マシンのライブ・マイグレーション技術として有用である。
【符号の説明】
【００９２】
101…WAN
102,103,104…ネットワーク・ノード
111,121…データセンタ
112,122,132,142…ゲートウェイ
113,123,124…サーバ
114,125…VM
116,126,161…VLAN
131,141…ネットワーク
133,143…PC
150…管理サーバ
151…管理プログラム
162…サーバ管理サーバ
201, 202, 203…NAT
301, 311, 321, 331, 341, 351…パケット
602A, 602B, 603A, 603B, 604A, 604B…仮想ネットワーク
1101…ノード群
1102, 1103, 1104…物理ノード
1111, 1112, 1113…IPアドレス
1201, 1202…リンク。
【図１】
2011210032.tif 000003
【図２】
2011210032.tif 000004
【図３】
2011210032.tif 000005
【図４】
2011210032.tif 000006
【図５】
2011210032.tif 000007
【図６】
2011210032.tif 000008
【図７】
2011210032.tif 000009
【図８】
2011210032.tif 000010
【図９】
2011210032.tif 000011
【図１０】
2011210032.tif 000012
【図１１】
2011210032.tif 000013
【図１２】
2011210032.tif 000014