【実施例1】
【0013】
[仮想マシンシステムの構成]
図1は、実施例1に係る仮想マシンシステムの構成図である。
図1に示すように、仮想マシンシステム9は、データセンタ1、通信事業者が提供するPPPoE(Point to Point Protocol over Ethernet(登録商標))網2、ルータ3、顧客用イントラネット4、及び顧客PC(Personal Computer)5を有する。
【0014】
データセンタ1は、顧客PC5に対して、PPPoE網2経由でソフトウェアパッケージやアプリケーション実行用のプラットフォームなどのサービスを提供するクラウドコンピューティング用のデータセンタである。
【0015】
PPPoE網2は、通信事業者が提供するキャリア通信網の一例である。PPPoEは、PPP(Point to Point Protocol)の機能を、イーサネット(登録商標)を通して利用するプロトコルであり、後述する仮想私設通信網用のプロトコルである。PPPoE網2は、ワイドエリアネットワーク(WAN)である。
【0016】
ルータ3は、顧客用イントラネット4をデータセンタ1に接続するために用いられるクラウドコンピュータ用のルータである。ルータ3は、提供を希望するVM機器の処理能力、すなわちVM機器の設定を規定する情報(以降、「VM機器情報」という)を、管理サーバ10に送信する。設定情報としては、VM機器のOSやハードウェア資源、例えばハードディスク容量やメモリ容量、アプリケーションなどが記録されている。
【0017】
顧客用イントラネット4は、IPv4を用いた顧客用のイントラネットである。顧客用イントラネット4には、顧客PC5が接続されている。なお、顧客5は、ルータ3に直接接続されても良い。外部装置の一例として、顧客PC5が挙げられる。
【0018】
ここで、顧客PC5では、リンクローカルアドレスとして、IPv4のアドレスが設定される。リンクローカルアドレスとは、顧客用イントラネット4内で規定されたアドレスのことをいう。リンクローカルとは、ここでは、顧客用イントラネット4のことを指す。そして、実施例に係る仮想マシンシステム9では、複数の顧客用イントラネット4内でそれぞれ規定される顧客PC5のリンクローカルアドレスが同一であっても、それぞれの顧客PC5は、同一の仮想マシン23とセキュアに接続できる。なお、以降では、「IPv4のリンクローカルアドレス」のことを「IPv4のアドレス」または「v4のIPアドレス」という。同様に、「Ipv6のリンクローカルアドレス」のことを「IPv6のアドレス」または「v6のIPアドレス」という。
【0019】
[データセンタの構成の説明]
データセンタ1は、管理サーバ10、物理サーバ20及びGWサーバ30を備えている。管理サーバ10は、LAN(Local Area Network)40を介して物理サーバ20に接続されている。なお、実施例1では、管理サーバ10が、IPv4を用いたネットワークに対応している場合について説明する。
【0020】
[物理サーバの構成の説明]
物理サーバ20は、ホストOS(Operating System)とハイパーバイザとが一体となったホストOS/ハイパーバイザを備える。さらに、物理サーバ20は、ホストOS/ハイパーバイザに、仮想スイッチ(vSW:virtual switch)21、v4v6変換モジュール22及び仮想マシン23を備える。なお、ホストOS/ハイパーバイザは、ホストOSとハイパーバイザとが一体となったものとして説明したが、これに限定されず、ホストOSとハイパーバイザとが分離した場合であっても良い。かかる場合は、物理サーバ20は、ハイパーバイザ上にホストOSを備え、ホストOS上に仮想スイッチ21、v4v6変換モジュール22及び仮想マシン23を備える。また、仮想マシン23は、1個のみならず、複数個あっても良い。物理サーバ20は、1個のみならず、複数個あっても良い。
【0021】
仮想スイッチ21は、いわゆる仮想ルータに含まれ、特定の顧客PCからのアクセスのみを受け付けるファイアーウォールルータである。なお、仮想スイッチ21は、後述するethインタフェース231の数分存在可能であり、識別ID(Identifier)によって区別される。
【0022】
v4v6変換モジュール22は、顧客用イントラネット4との通信で用いられるv4のIPアドレスを仮想マシン23上で用いられる仮想的なv4のIPアドレスに変換すべく、NAT(Network Address Translation)を実行する。また、v4v6変換モジュール22は、仮想マシン23上で用いられる仮想的なv4のIPアドレスを顧客用イントラネット4との通信で用いられるv4のIPアドレスに変換すべく、NATを実行する。仮想的なv4のIPアドレスとは、v6のIPアドレスに相当する。なお、v4v6変換モジュール22は、仮想スイッチ21と同様、後述するethインタフェース231の数分存在可能であり、識別IDによって区別される。
【0023】
ここで、v4v6変換モジュール22によって行われるアドレスの変換規則について説明する。例えば、v4のIPアドレスが「www.xxx.yyy.zzz」であるとすると、仮想的なv4のIPアドレスであるv6のIPアドレスは、「fe80::<WWW.XXX.YYY.ZZZ>」となる。v4のIPアドレスである「www.xxx.yyy.zzz」は、10進表記である。一方、v6のIPアドレス内の<WWW.XXX.YYY.ZZZ>は、v4のIPアドレスの10進表記を16進表記に変換した文字列である。そして、v4のIPアドレスは、v4v6変換モジュール22の仮想スイッチ21側に設定され、v6のIPアドレスは、v4v6変換モジュール22の後述するethインタフェース231側に設定される。
【0024】
一例として、v4v6変換モジュール22は、管理サーバ10によって仮想マシン23にv4のIPアドレスが割り当てられた場合、割り当てられたIPアドレスを仮想的なv4のIPアドレスであるv6のIPアドレスに変換する。かかる仮想マシン23に割り当てられたIPアドレスとは、顧客PC5から送信される場合の宛先となるアドレスを意味し、v4のIPアドレスである。そして、v4v6変換モジュール22は、変換後のv6のIPアドレスを後述するethインタフェース231側に設定するとともに、変換前のv4のIPアドレスを仮想スイッチ21側に設定する。なお、v4v6変換モジュール22は、後述するルータ管理部13によってアドレスの設定が指示される。
【0025】
他の一例として、v4v6変換モジュール22は、顧客用イントラネット4側のDPCPサーバによって仮想マシン23のIPアドレスが割り当てられた場合、割り当てられたIPアドレスを仮想的なv4のIPアドレスであるv6のIPアドレスに変換する。そして、v4v6変換モジュール22は、変換後のv6のIPアドレスを後述するethインタフェース231側に設定するとともに、変換前のv4のIPアドレスを仮想スイッチ21側に設定する。なお、v4v6変換モジュール22は、後述するルータ管理部13によってアドレスの設定が指示される。
【0026】
また、v4v6変換モジュール22は、変換前のv4のIPアドレスと変換後のv6のIPアドレスとを対応付けてNAT変換表221に登録する。例えば、v4のIPアドレスが「192.0.0.192」であり、v6のIPアドレスが「fe80::<192.0.0192>」であるとする。かかる場合、NAT変換表221には、「192.0.0.192」と「fe80::<192.0.0192>」とを対応付けて登録される。
【0027】
仮想マシン23は、仮想OSや、顧客へ提供するアプリケーションなどを起動する。さらに、仮想マシン23は、複数のイーサネットインタフェース(以降、「ethインタフェース」という)231及びサービスプログラム232を有する。
【0028】
ethインタフェース231は、仮想マシン23上に仮想的に生成される通信インタフェースである。ethインタフェース231は、仮想マシン23上の図示しない仮想OS(ゲストOSともいう)のインタフェース上限数まで生成可能である。そして、ethインタフェース231には、識別子(インデックス)が固定で割り当てられる。すなわち、ethインタフェース231に割り当てられるインデックスは、IPv6で規定されているゾーンインデックスに相当する。一例として、
図1では、1つのethインタフェース231には「1」が割り当てられ、別のethインタフェース231には「3」が割り当てられている。すなわち、ethインタフェース231は、仮想マシン23とリンクローカルを形成することとなる顧客用イントラネット4との通信路である。
【0029】
サービスプログラム232は、ソケット通信を用いて、各ソケットとethインタフェース231とを関連付けるソケットAPI(Application Program Interface)である。例えば、サービスプログラム232は、顧客側との通信において、顧客側のIPアドレスと、通信に用いられたethインタフェース231のインデックスをソケットに割り当てる。ここでいうIPアドレスは、v4v6変換モジュール22によって顧客側のv4のIPアドレスを仮想的なv4のIPアドレスに変換された結果得られたv6のIPアドレスである。そして、サービスプログラム232は、特定のソケットが指定されると、指定されたソケットを使っている顧客側のIPアドレス及びethインタフェース231のインデックスを取得する。これにより、サービスプログラム232は、ethインタフェース231のインデックスを用いて、ソケットに割り当てられているIPアドレスがどの顧客用イントラネット4に属するアドレスであるのかを特定できる。
【0030】
一例として、ソケットを使っている顧客側のIPアドレスが「fe80::<192.0.0.1>」であり、ethインタフェース231のインデックスが「1」であるとする。すると、サービスプログラム232は、このソケットが指定されると、このソケットを使っている顧客側のIPアドレス「fe80::<192.0.0.1>」及びethインタフェース231のインデックス「1」を取得する。他方、別のソケットを使っている顧客側のIPアドレスが「fe80::<192.0.0.1>」であり、ethインタフェース231のインデックスが「3」であるとする。すると、サービスプログラム232は、このソケットが指定されると、このソケットを使っている顧客側のIPアドレス「fe80::<192.0.0.1>」及びethインタフェース231のインデックス「3」を取得する。すなわち、サービスプログラム232は、顧客側のIPアドレスが同一であっても、ethインタフェース231のインデックスを用いて、どちらの顧客のリンクローカルアドレスであるのかを切り分けることができる。なお、サービスプログラム232は、例えばRFC3493によってIPv6のための基本ソケットインタフェースの拡張版として制定されているAPIを適用すれば良い。
【0031】
GWサーバ30は、ゲートウェイプログラムを有し、ゲートウェアプログラムを実行することにより、仮想スイッチ21とPPPoE網2との間でデータの橋渡しを行う。
【0032】
[管理サーバの構成の説明]
管理サーバ10は、vSW使用状況管理表11、物理サーバ管理部12及びルータ管理部13を備える。vSW使用状況管理表11は、仮想スイッチ21の使用状況を管理する表である。ここで、vSW使用状況管理表11のデータ構造について、
図2を参照して説明する。
【0033】
図2は、実施例1に係るvSW使用状況管理表のデータ構造の一例を示す図である。
図2に示すように、vSW使用状況管理表11は、仮想スイッチ(ID)11bと、v4v6変換モジュール(ID)11cと、インタフェース接続状況11dとを、ユーザ名11aに対応付けて記憶する。ユーザ名11aは、仮想マシン23と接続している顧客用イントラネット4の顧客の名称を示す。仮想スイッチ11bは、仮想スイッチ21の識別IDを示す。v4v6変換モジュール(ID)11cは、v4v6変換モジュール22の識別IDを示す。インタフェース接続状況11dは、ethインタフェース231の接続状況を表し、仮想マシン(ID)11e及びv4用ethインタフェース(インデックス)11fを有する。仮想マシン(ID)11eは、顧客用イントラネット4と接続されている仮想マシン23の識別IDを示す。v4用ethインタフェース(インデックス)11fは、IPv4で用いられるethインタフェース231のインデックスを示す。
【0034】
一例として、ユーザ名11aが「A株式会社」である場合、仮想スイッチ(ID)11bとして「vsw−001」、v4v6変換モジュール(ID)11cとして「v4v6−0」と記憶している。さらに、仮想マシン(ID)11eとして「NAS−001」、v4用ethインタフェース(インデックス)11fとして「1」と記憶している。
【0035】
図1に戻って、物理サーバ管理部12は、データベース(DB)12Aを備えている。
【0036】
図3は、データベース12Aのデータ構造の一例を示す図である。
図3に示すように、データベース12Aには、ルータ3から受信するVM機器情報に関連付けられた、仮想マシン23、物理サーバ20及びGWサーバ30の識別IDが登録されている。VM機器情報は、仮想マシン23を起動する物理サーバ20を特定する情報であり、具体的には、物理サーバ20が有するOS(Operating System)及び物理サーバ20が有するハードウェア資源の情報である。
【0037】
一例として、VM機器情報として、OSが「Windows(登録商標) server 2008」、ハードウェア資源が「HDD 2TB、2GB mem」である場合、仮想マシン23として「NAS−001」、物理サーバ21として「I−001」、GWサーバ30として「G−001」と記憶している。
【0038】
図1に戻って、物理サーバ管理部12は、各物理サーバ20の動作を管理する。例えば、物理サーバ管理部12は、ルータ3からVM機器情報を受信すると、VM機器情報に基づいて、データベース12Aに登録されている仮想マシン23、物理サーバ20及びGWサーバ30を選択する。その後、物理サーバ管理部12は、選択した物理サーバ20及びGWサーバ30を起動し、選択した物理サーバ20に仮想マシン23及びサービスプログラム232を起動させる。
【0039】
ルータ管理部13は、接続要求のあったルータ3及びGWサーバ30との通信を確立し、当該ルータ3及び接続要求を満たす仮想マシン23を接続すべく、仮想スイッチ21及びethインタフェース231間の接続処理を行う。また、ルータ管理部13は、仮想マシン23に割り当てられるv4のIPアドレスについて、ethインタフェース231側に仮想的なv4のIPアドレスを設定するように指示する。ここで、ルータ管理部13の構成を、
図4を参照して説明する。
【0040】
図4は、ルータ管理部の構成を示すブロック図である。
図4に示すように、ルータ管理部13は、通信確立部131、接続処理部132、アドレス設定指示部133及びアドレス送信部134を備える。
【0041】
通信確立部131は、通信事業者が開設したIP−VPN(IP-Virtual Private Network)上で、ルータ3及びGWサーバ30との間のPPPoEセッションの通信を確立する。IP−VPNは、通信事業者の保有する広域IP通信網を経由して構築される仮想私設通信網(VPN)である。
図1では、IP−VPNは、データセンタ1からPPPoE網2を介してルータ3まで接続する仮想私設通信網(VPN)である。なお、IP−VPNの例としては、通信事業者が提供する、フレッツ・VPNワイドなどがある。
【0042】
例えば、通信確立部131は、ルータ3がPPPoE網2と顧客用イントラネット4との間に接続されたときに、ルータ3と仮想マシン23との接続要求としてVM機器情報をルータ3から受信する。そして、通信確立部131は、運用段階用のIP−VPNの作成、及び2組の運用段階用PPPoE設定情報の作成を通信事業者に依頼する。そして、通信確立部131は、VM機器情報に基づいて、データセンタ1内の起動すべき物理サーバ20、起動すべき仮想マシン23、起動すべきGWサーバ30の情報を物理サーバ管理部12から取得する。なお、取得される情報はIDである。さらに、通信確立部131は、2組の運用段階用PPPoE設定情報を通信事業者から取得すると、1組の運用段階用PPPoE設定情報をルータ3へ送信し、他の1組の運用段階用PPPoE設定情報を起動すべきGWサーバ30の情報に対応するGWサーバ30へ送信する。
【0043】
接続処理部132は、ルータ3からの接続要求ごとに、vSW21、v4v6変換モジュール22及び仮想マシン23のethインタフェース231を接続する。例えば、接続処理部132は、ルータ3から接続要求として受信されたVM機器情報に対応する仮想マシン23に対して、vSW使用状況管理表11に記憶されていないv4用の空きのethインタフェース231のインデックスを特定する。そして、接続処理部132は、対応する仮想マシン23のサービスプログラム232に対して、特定したインデックスが示す新たなethインタフェース231、新たなv4v6変換モジュール22、新たな仮想スイッチ21の生成を依頼する。そして、接続処理部132は、依頼によって生成されたethインタフェース231、v4v6変換モジュール22及び仮想スイッチ21を接続する。そして、接続処理部132は、接続に用いられたethインタフェース231、仮想スイッチ21及びv4v6変換モジュール22の情報を接続要求のあった顧客に対応するユーザ名と対応付けて、vSW使用状況管理表11に追加する。接続要求のあった顧客に対応するユーザ名は、一例として接続要求に含まれる。
【0044】
アドレス設定指示部133は、仮想マシン23に割り当てられるv4のIPアドレスについて、ethインタフェース231側に仮想的なv4のIPアドレスを設定するように指示する。例えば、アドレス設定指示部133は、管理サーバ10によって仮想マシン23のv4のIPアドレスが割り当てられる場合、以下の処理を行う。すなわち、アドレス設定指示部133は、接続要求のあった顧客に対応するv4v6変換モジュール22の識別ID及びethインタフェース231のインデックスをvSW使用状況管理表11から検索する。そして、アドレス設定指示部133は、検索して得られたインデックスが示すethインタフェース231側に、自サーバ10によって割り当てられたv4のIPアドレスからv6に変換された後のアドレスを設定するように指示する。アドレス設定指示部133が指示する先は、検索して得られた識別IDが示すv4v6変換モジュール22である。
【0045】
また、アドレス設定指示部133は、接続要求のあった顧客用イントラネット4のDHCP(Dynamic Host Configuration Protocol)サーバによって仮想マシン23のv4のIPアドレスが割り当てる場合、以下の処理を行う。すなわち、アドレス設定指示部133は、接続要求のあった顧客に対応するv4v6変換モジュール22の識別ID及びethインタフェース231のインデックスをvSW使用状況管理表11から検索する。そして、アドレス設定指示部133は、検索して得られたインデックスが示すethインタフェース231側に、DHCPサーバによって割り当てられたv4のIPアドレスからv6に変換された後のアドレスを設定するように指示する。アドレス設定指示部133が指示する先は、検索して得られた識別IDが示すv4v6変換モジュール22である。
【0046】
アドレス送信部134は、ルータ3に対して仮想スイッチ21に割り当てられるv4のIPアドレスを通知し、仮想スイッチ21に対してルータ3のIPアドレスを通知し、ルータ3及び仮想スイッチ21の間のEthernet over IPによる通信を確立する。
【0047】
[管理サーバのハードウェア構成]
図5は、管理サーバ10のハードウェア構成を示すブロック図である
【0048】
図5に示すように、管理サーバ10は、装置全体を制御するCPU10a、制御プログラムを備えるROM10b、及びワーキングエリアとして機能するRAM10cを備えている。また、管理サーバ10は、各種の情報やプログラムを備えるハードディスクドライブ(HDD)10d及びネットワーク2と接続するためのネットワークインタフェース10eを備えている。
【0049】
CPU10aは、システムバス10fを介してROM10b、RAM10c、及びネットワークインタフェース10eに接続されている。管理サーバ10のハードウェア構成は、物理サーバ20のハードウェア構成と同一であるので、物理サーバ20のハードウェア構成の説明は省略する。なお、物理サーバ管理部12及びルータ管理部13の各処理部は、管理サーバ10のCPU10aが、管理サーバ10のROM10bまたはHDD10dに格納されている制御プログラムを実行することによって実現される。また、
図1のvSW使用状況管理表11やデータベース12Aは、管理サーバ10のHDD10dに格納されている。
【0050】
[仮想マシンシステムの処理のシーケンス]
図6は、仮想マシンシステムが実行する処理のシーケンスを説明する図である。なお、ルータ3には、仮想マシン23を起動する物理サーバ20を特定するVM機器構成が設定されているものとする。また、ルータ3の接続時に、ルータ3は、設定段階のPPPoEによるGWサーバ30への通信路を開設したとする。
【0051】
ルータ3によって接続要求を示すパケット及びVM機器情報がルータ管理部13に送信されると(ステップS11)、ルータ管理部13は、接続要求を示すパケット及びVM機器情報をルータ3から受信する(ステップS12)。ルータ管理部13は、VM機器情報を物理サーバ管理部12に送信する(ステップS13)。物理サーバ管理部12は、VM機器情報を受信し、起動すべき仮想マシン23、起動すべき物理サーバ21及び起動すべきGWサーバ21を選択する(ステップS14)。
【0052】
そして、ルータ管理部13は、起動すべき物理サーバ20、起動すべき仮想マシン23及び起動すべきGWサーバ30の情報を物理サーバ管理部12から取得する(ステップS15)。ルータ管理部13は、運用段階用のIP−VPNの作成、及び2組の運用段階用PPPoE設定情報の作成を通信事業者に依頼する(ステップS16)。通信事業者は、ルータ管理部13からの依頼に応じて運用段階用のIP−VPNを開設し、2組の運用段階用PPPoE設定情報をルータ管理部13に返信する。ルータ管理部13は、1組の運用段階用PPPoE設定情報をルータ3に、他の1組の運用段階用PPPoE設定情報を、起動すべきGWサーバ30に送信する(ステップS17)。
【0053】
ルータ3は、運用段階用PPPoE設定情報を使って、起動すべきGWサーバ30への通信路を開設する(ステップS18)。また、起動すべきGWサーバ30が、運用段階用PPPoE設定情報を使って、ルータ3への通信路を開設する(ステップS19)。これにより、ルータ3及び起動すべきGWサーバ30は、イーサネットを使った仮想私設通信路を介して互いに接続できる。
【0054】
続いて、ルータ管理部13は、ステップS15で取得した起動すべき仮想マシン23の情報に対応する仮想マシン23及び仮想マシン23上のプロセスの起動を物理サーバ管理部12に指示する(ステップS20)。物理サーバ管理部12は、起動すべき物理サーバ20に、起動すべき仮想マシン23及び仮想マシン23上のプロセスを起動させる(ステップS21)。物理サーバ20は、仮想マシン23及び仮想マシン23上のプロセスを起動する(ステップS22)。ここで、仮想マシン23上のプロセスには、仮想マシン23上のサービスプログラム232を含むものである。
【0055】
そして、ルータ管理部13は、仮想スイッチ21及びethインタフェース231間の接続処理を行う(ステップS23)。かかる処理は、
図7を参照して説明する。
【0056】
そして、ルータ管理部13は、仮想マシン23に割り当てられるv4のIPアドレスの設定処理を行う(ステップS24)。これにより、仮想スイッチ21が生成され、仮想スイッチ21側に仮想マシン23のv4のIPアドレスが割り当てられる。かかる処理は、
図8及び
図9を参照して説明する。
【0057】
その後、ルータ管理部13は、生成された仮想スイッチ21のIPアドレスをルータ3へ、ルータ3のIPアドレスを生成された仮想スイッチ21へそれぞれ送信する(ステップS25)。ルータ3は、生成された仮想スイッチ21のIPアドレスをルータ管理部13から受信する。ルータ3は、Ethernet over IP機能を設定し、受信されたIPアドレスに基づいて、GWサーバ30からルータ3までの通信路を介して生成された仮想スイッチ21と通信する(ステップS26)。物理サーバ20内の生成された仮想スイッチ21は、ルータ管理部13からルータ3のIPアドレスを受信する。仮想スイッチ21は、Ethernet over IP機能、即ちデータをIPパケット化し送受信する機能を設定する。同時に、仮想スイッチ21は、受信されたIPアドレスに基づいて、GWサーバ30からルータ3までの通信路を介してルータ3と通信する(ステップS27)。
【0058】
これにより、接続要求のあったルータ3に対応する顧客用イントラネット4は、顧客毎に異なる仮想スイッチ21を介して仮想マシン23と通信可能になる。したがって、複数の顧客用イントラネット4内で規定されるそれぞれの顧客PC5のv4のIPアドレスが同一となっても、それぞれの顧客PC5は、通信する仮想マシン23が同一であってもセキュアに通信することが可能となる。
【0059】
[仮想スイッチ及びethインタフェース間の接続処理のシーケンス]
次に、
図6のS23の処理について、
図7を参照して説明する。
図7は、実施例1に係る仮想スイッチ及びethインタフェース間の接続処理のシーケンスを説明する図である。
【0060】
物理サーバ20によって仮想マシン23が起動されると、ルータ管理部13の接続処理部132は、起動された仮想マシン23の空きのethインタフェース231を特定する(ステップS31)。例えば、接続処理部132は、起動された仮想マシン23の識別IDをキーにして、vSW使用状況管理表11に記憶されているv4用のethインタフェース231のインデックスを取得する。すなわち、接続処理部132は、既に接続に用いられているethインタフェース231の集合を取得する。そして、接続処理部132は、ethインタフェース231のインデックスを0からチェックし、空きのインデックスを特定する。
【0061】
そして、接続処理部132は、起動された仮想マシン23に、特定したインデックスが示す新たなethインタフェース231、新たなv4v6変換モジュール22、新たな仮想スイッチ21の生成を依頼する(ステップS32)。
【0062】
そして、仮想マシン23は、接続処理部132による依頼に基づいて、特定されたインデックスが示す新たなethインタフェース231を生成する(ステップS33)。仮想マシン23は、接続処理部132による依頼に基づいて、新たなv4v6変換モジュール22を生成する(ステップS34)。仮想マシン23は、接続処理部132による依頼に基づいて、新たな仮想スイッチ21を生成する(ステップS35)。
【0063】
そして、接続処理部132は、起動された仮想マシン23上のサービスプログラム232に新たなethインタフェース231が生成されたことを通知する(ステップS36)。
【0064】
続いて、接続処理部132は、生成されたethインタフェース231、生成されたv4v6変換モジュール22及び生成された仮想スイッチ21を接続する(ステップS37)。そして、接続処理部132は、接続に用いられたethインタフェース231、仮想スイッチ21及びv4v6変換モジュール22の情報を、接続要求のあったルータ3に対応するユーザ名に対応付けてvSW使用状況管理表11に追加する(ステップS38)。ethインタフェース231の情報は、生成されたethインタフェース231のインデックスである。仮想スイッチ21の情報は、生成された仮想スイッチ21の識別IDである。v4v6変換モジュール22の情報は、生成されたv4v6変換モジュール22の識別IDである。
【0065】
[アドレス設定処理のシーケンス]
次に、
図6のS24の処理について、
図8及び
図9を参照して説明する。
図8及び
図9は、実施例1に係るアドレス設定処理のシーケンスを説明する図である。
図8は、仮想マシン23のv4のIPアドレスが管理サーバ10によって割り当てられる場合のアドレス設定処理のシーケンスを示す。
図9は、仮想マシン23のv4のIPアドレスが顧客用イントラネット4のDHCPサーバによって割り当てられる場合のアドレス設定処理のシーケンスを示す。
【0066】
図8に示すように、仮想マシン23上のサービスプログラム232が、接続要求のあったルータ3に対応するユーザ名を指示するとともに、仮想マシン23にv4のIPアドレスを割り当てるように指示する(ステップS41)。
【0067】
すると、ルータ管理部13のアドレス設定指示部133は、指示された仮想マシン23にv4のIPアドレスを割り当てる(ステップS42)。例えば、アドレス設定指示部133は、ユーザ名「A株式会社」から仮想マシン23にパケットが送信される場合に、パケットの宛先となるアドレスとして、「192.0.0.192/24」を割り当てる。ここでは、「192.0.0.192/24」が指示された仮想マシン23のv4のIPアドレスである。
【0068】
そして、アドレス設定指示部133は、指示されたユーザ名に対応するv4v6変換モジュール22及びethインタフェース231の情報を、vSW使用状況管理表11から検索する(ステップS43)。そして、アドレス設定指示部133は、検索できた情報に対応するv4v6変換モジュール22に、管理サーバ10によって割り当てられたv4のIPアドレスを設定するとともに、設定したIPアドレスのNATを開始するように指示する(ステップS44)。指示には、検索できた情報に対応するethインタフェース231のインデックスが含まれる。すなわち、アドレス設定指示部133は、自サーバによって割り当てられたv4のIPアドレスからv6に変換された後のアドレスをethインタフェース231側に設定するように指示する。
【0069】
続いて、v4v6変換モジュール22は、設定されたv4のIPアドレスを仮想的なv4のIPアドレスであるv6のIPアドレスに変換する(ステップS45)。例えば、設定されたv4のIPアドレスが「192.0.0.192」である場合、v4v6変換モジュール22は、「192.0.0.192」を「fe80::<192.0.0.192>」に変換する。ここでは、「fe80::<192.0.0.192>」が仮想的なv4のIPアドレス、すなわちv6のIPアドレスである。
【0070】
そして、v4v6変換モジュール22は、仮想スイッチ21側のインタフェースに、変換前のv4のIPアドレスを設定する(ステップS46)。例えば、v4v6変換モジュール22は、「ifconfig 1 192.0.0.192 255.255.255.0」コマンドを発行する。コマンドの中の「1」は、仮想スイッチ21側のインタフェースの名称、すなわち仮想スイッチ21の識別IDである。
【0071】
そして、v4v6変換モジュール22は、仮想マシン23側インタフェースに変換後のv6のIPアドレスを設定する(ステップS47)。例えば、v4v6変換モジュール22は、「ifconfig 1 fe80::<192.0.0.192>」コマンドを発行する。コマンドの中の「1」は、仮想マシン23側インタフェースの名称、すなわちethインタフェース231のインデックスである。
【0072】
そして、v4v6変換モジュール22は、変換前のv4のIPアドレスと変換後のv6のIPアドレスとを対応付けてNAT変換表221に登録する(ステップS48)。例えば、v4v6変換モジュール22は、「192.0.0.192」と「fe80::<192.0.0.192>」とを対応付けて登録する。
【0073】
その後、v4v6変換モジュール22は、NATが終了したことをルータ管理部13のアドレス設定指示部133に通知すると、ルータ管理部13は、仮想マシンのv4のIPアドレスの割り当てが終了したことをサービスプログラム232に通知する。すると、サービスプログラム232は、ethインタフェース231に変換後のv6のIPアドレスを設定する(ステップS49)。
【0074】
次に、
図9に示すように、仮想マシン23上のサービスプログラム232が、接続要求のあったルータ3に対応するユーザ名を指示するとともに、仮想マシン23にv4のIPアドレスを割り当てるように指示する(ステップS51)。
【0075】
すると、アドレス設定指示部133は、指示されたユーザ名に対応するv4v6変換モジュール22及びethインタフェース231の情報を、vSW使用状況管理表11から検索する(ステップS52)。そして、アドレス設定指示部133は、検索できた情報に対応するv4v6変換モジュール22に、ユーザ名に対応する顧客用イントラネット4のDHCPサーバへの「dhcp client」コマンドの実行を依頼する(ステップS53)。「dhcp client」コマンドは、DHCPサーバに対してIPアドレスの割り当てを指示するコマンドである。v4v6変換モジュール22への依頼には、検索できた情報に対応するethインタフェース231のインデックスが含まれる。すなわち、アドレス設定指示部133は、DHCPサーバによって割り当てられるv4のIPアドレスからv6のIPアドレスに変換された後のアドレスをethインタフェース231側に設定するように指示する。
【0076】
続いて、v4v6変換モジュール22は、依頼を受けた「dhcp client」コマンドを、ユーザ名に対応する顧客用イントラネット4のDHCPサーバに対して実行する(ステップS54)。そして、v4v6変換モジュール22は、DHCPサーバによって割り当てられたv4のIPアドレスをDHCPサーバから取得する(ステップS55)。
【0077】
そして、v4v6変換モジュール22は、取得されたv4のIPアドレスを仮想的なv4のIPアドレスであるv6のIPアドレスに変換する(ステップS56)。
【0078】
そして、v4v6変換モジュール22は、仮想スイッチ21側のインタフェースに、変換前のv4のIPアドレスを設定する(ステップS57)。
【0079】
そして、v4v6変換モジュール22は、仮想マシン23側インタフェースに変換後のv6のIPアドレスを設定する(ステップS58)。
【0080】
そして、v4v6変換モジュール22は、変換前のv4のIPアドレスと変換後のv6のIPアドレスとを対応付けてNAT変換表221に登録する(ステップS59)。
【0081】
その後、v4v6変換モジュール22は、NATが終了したことをルータ管理部13のアドレス設定指示部133に通知すると、ルータ管理部13は、仮想マシンのv4のIPアドレスの割り当てが終了したことをサービスプログラム232に通知する。すると、サービスプログラム232は、ethインタフェース231に変換後のv6のIPアドレスを設定する(ステップS60)。
【0082】
これにより、仮想マシン23と通信可能となったルータ3とを接続する顧客用イントラネット4(顧客PC5)から送信されたパケットは、仮想スイッチ21を介してv4v6変換モジュール22に到着する。すると、v4v6変換モジュール22は、パケット内送信元のv4のIPアドレスを仮想的なv4のIPアドレスであるv6のIPアドレスに変換後、変換したIPアドレスを自己に対応するethインタフェース231に引き渡す。したがって、2つの顧客用イントラネット4から送信されたパケット内の送信元(顧客PC5)のIPアドレスが同一であっても、それぞれの顧客PC5は、顧客毎に異なるethインタフェース231に接続することとなるので、送信先の仮想マシン23とセキュアに通信することができる。
【0083】
[実施例1の効果]
上記実施例1によれば、ルータ管理部13は、管理サーバ10がIPv4を用いたネットワークに対応している場合、接続要求を満たす仮想マシン23に対して、vSW使用状況管理表11に記憶されていないethインタフェース231のインデックスを特定する。そして、ルータ管理部13は、特定したインデックスが示すethインタフェース231を用いて、接続要求のあったルータ3と仮想マシン23とを接続する。これにより、ルータ管理部13は、接続要求のあったルータ3毎に異なるethインタフェース231を用いて、ルータ3と仮想マシン23とを接続するので、IPv4であっても、1つの仮想マシン23と複数のルータ3との間で安全に通信することが可能となる。すなわち、ルータ管理部13は、IPv4であっても、1つの仮想マシン23と複数のルータ3に対応するそれぞれのイントラネットの顧客PC5とセキュアに通信することが可能となる。
【0084】
また、上記実施例1によれば、ルータ管理部13は、顧客用イントラネット4内の顧客PC5から送信される場合の宛先となるIPv4アドレスを管理サーバ10が割り当てる場合、以下の指示を行う。すなわち、ルータ管理部13は、顧客PC5が属する顧客用イントラネット4の顧客に対応するethインタフェース231のインデックスをvSW使用状況管理表11から検索する。そして、ルータ管理部13は、検索して得られたインデックスが示すethインタフェース231側に、自サーバによって割り当てられたIPv4アドレスからIPv6に変換された後のアドレスを設定するようにv4v6変換モジュール22に指示する。これにより、ルータ管理部13は、IPv4であっても、ethインタフェース231側に、顧客PC5毎に異なるIPv4アドレスをIPv6に変換された後のアドレスを設定させるので、ethインタフェース231を用いてセキュアな通信をすることが可能となる。
【0085】
また、上記実施例1によれば、ルータ管理部13は、顧客PC5から送信される場合の宛先となるIPv4アドレスを顧客PC5が属する顧客用イントラネット4側が割り当てる場合、以下の指示を行う。すなわち、ルータ管理部13は、顧客PC5が属する顧客用イントラネット4の顧客に対応するethインタフェース231のインデックスをvSW使用状況管理表11から検索する。そして、ルータ管理部13は、検索して得られたインデックスが示すethインタフェース231側に、顧客用イントラネット4側によって割り当てられたIPv4アドレスからIPv6に変換された後のアドレスを設定するようにv4v6変換モジュール22に指示する。これにより、ルータ管理部13は、IPv4であっても、ethインタフェース231側に、顧客PC5毎に異なるIPv4アドレスをIPv6に変換された後のアドレスを設定させるので、ethインタフェース231を用いてセキュアな通信をすることが可能となる。
【実施例2】
【0086】
ところで、実施例1に係る仮想マシンシステム9では、管理サーバ10がIPv4を用いたネットワークに対応している場合を説明した。しかしながら、管理サーバ10は、これに限定されず、IPv4とIPv6を共存させる仕組みであるデュアルスタックを用いたネットワークに対応するようにしても良い。そこで、実施例2では、管理サーバ10がデュアルスタックを用いたネットワークに対応する場合について説明する。
【0087】
[実施例2に係る仮想マシンシステムの構成]
図10は、実施例2に係る仮想マシンシステムの構成図である。なお、
図1に示す仮想マシンシステム9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、仮想スイッチ21をv6とv4とを共存させた仮想スイッチ21Aに変更した点にある。また、実施例1と実施例2とが異なるところは、ethインタフェース231をethインタフェース231Aとethインタフェース231Bとに分けた点にある。また、実施例1と実施例2とが異なるところは、管理サーバ10のルータ管理部13をルータ管理部13Aに変更した点にある。
【0088】
ethインタフェース231Aおよびethインタフェース231Bは、仮想マシン23上に仮想的に生成される通信インタフェースである。ethインタフェース231Aは、IPv4用のインタフェースである。すなわち、ethインタフェース231Aは、仮想マシン23とリンクローカルを形成することとなる顧客用イントラネット4とのIPv4用の通信経路である。他方、ethインタフェース231Bは、IPv6用のインタフェースである。すなわち、ethインタフェース231Bは、仮想マシン23とリンクローカルを形成することとなる顧客用イントラネット4とのIPv6用の通信経路である。ethインタフェース231Aおよびethインタフェース231Bには、識別子(インデックス)が重複しないように固定で割り当てられる。
【0089】
ここで、IPv4用とIPv6用とでインタフェースを区別したのは、顧客側のv4のIPアドレスを変換した後の仮想的なv4のIPアドレスであるv6のIPアドレスが、顧客側のv6のIPアドレスと同じとなる場合を考慮したからである。
図10の例では、インデックス「0」のethインタフェース231Bは、サービスプログラム232における「fe80::1234%eth0」が割り付いたソケットに対応する。インデックス「1」のethインタフェース231Aは、サービスプログラム232における「fe80::<192.0.0.1>%eth1」が割り付いたソケットに対応する。万一、「fe80::1234」と「fe80::<192.0.0.1>」が同一であっても、ethインタフェース231A、231Bのインデックスによってv6とv4とが切り分けられる。なお、ethインタフェース231Bは、IPv6で規定されているゾーンインデックスに相当するが、ゾーンインデックスそのものであっても良い。
【0090】
ルータ管理部13Aは、接続要求のあったルータ3及びGWサーバ30との通信を確立した後、接続要求のあったルータ3及び接続要求を満たす仮想マシン23を接続すべく、仮想スイッチ21A及びethインタフェース231A、231B間の接続処理を行う。なお、通信を確立する処理は、
図4の通信確立部131で説明した処理と同様であるので、その説明は省略する。また、接続処理は、
図4の接続処理部132によって以下のように行われる。
【0091】
接続処理部132は、接続要求ごとに、IPv4用として仮想スイッチ21A、v4v6変換モジュール22及びethインタフェース231Aを接続する。また、接続処理部132は、接続要求ごとに、IPv6用として仮想スイッチ21A及びethインタフェース231Bを接続する。
【0092】
例えば、接続処理部132は、ルータ3から接続要求として受信されたVM機器情報に対応する仮想マシン23に対して、IPv6用及びIPv4用のethインタフェース231のインデックスを特定する。インデックスの特定には、vSW使用状況管理表11Aを用いる。すなわち、接続処理部132は、IPv4用のethインタフェース231Aのインデックスとして、vSW使用状況管理表11Aのv4用およびv6用のいずれのインタフェースの情報にも記憶されていない空きのインデックスを特定する。接続処理部132は、IPv6用のethインタフェース231Bのインデックスとして、vSW使用状況管理表11Aのv4用およびv6用のいずれのインタフェースの情報にも記憶されていないインデックスを特定する。
【0093】
接続処理部132は、対応する仮想マシン23のサービスプログラム232に対して、IPv4用として、特定したインデックスが示す新たなethインタフェース231A、新たなv4v6変換モジュール22及び新たな仮想スイッチ21Aの生成を依頼する。接続処理部132は、対応する仮想マシン23のサービスプログラム232に対して、IPv6用として、特定したインデックスが示す新たなethインタフェース231B及び新たな仮想スイッチ21Aの生成を依頼する。
【0094】
接続処理部132は、IPv4用として、依頼によって生成されたethインタフェース231A、v4v6変換モジュール22及び仮想スイッチ21Aを接続する。接続処理部132は、IPv6用として、依頼によって生成されたethインタフェース231B及び仮想スイッチ21Aを接続する。
【0095】
接続処理部132は、接続に用いられたethインタフェース231A、231B、仮想スイッチ21A及びv4v6変換モジュール22の情報を接続要求のあった顧客に対応するユーザ名と対応付けて、vSW使用状況管理表11Aに追加する。ここで、vSW使用状況管理表11Aのデータ構造について、
図11を参照して説明する。
【0096】
図11は、実施例2に係るvSW使用状況管理表のデータ構造の一例を示す図である。なお、
図2に示すvSW使用状況管理表11と同一のデータ構造については同一符号を示すことで、その重複するデータ構造の説明については省略する。実施例1と実施例2とが異なるところは、インタフェース使用状況11dにv6用ethインタフェース(インデックス)11gが追加された点にある。v6用ethインタフェース(インデックス)11gは、IPv6で用いられるethインタフェース231Bのインデックスを示す。なお、v4用ethインタフェース(インデックス)11fは、IPv4で用いられるethインタフェース231Aのインデックスを示す。
【0097】
一例として、ユーザ名11aが「A株式会社」である場合、v4用ethインタフェース(インデックス)11fとして「0」、v6用ethインタフェース(インデックス)11gとして「1」と記憶している。すなわち、v4用ethインタフェース(インデックス)11f及びv6用ethインタフェース(インデックス)11gは、それぞれ重複しない値であるとともに、同じ仮想マシン11eに対応するインデックスと重複しない値である。
【0098】
また、ルータ管理部13Aは、仮想マシン23に割り当てられるv6のIPアドレスを、ethインタフェース231Bに設定する。なお、v4のIPアドレスにおける設定指示は、
図4のアドレス設定指示部133で説明したとおりであるので、その説明は省略する。
【0099】
また、ルータ管理部13Aは、ルータ3に対して仮想スイッチ21Aに割り当てられるv4のIPアドレス及びv6のIPアドレスを通知し、仮想スイッチ21Aに対してルータ3のIPアドレスを通知する。そして、ルータ管理部13Aは、ルータ3及び仮想スイッチ21Aの間のEthernet over IPによる通信を確立する。なお、IPアドレスの通知処理は、
図4のアドレス送信部134によって行われる。
【0100】
このようにして、ルータ管理部13Aは、IPv4用のethインタフェース231AとIPv6用のethインタフェース231Bとを分ける構成とした。したがって、ルータ管理部13Aは、IPv4/IPv6のデュアルスタックであっても、1つの仮想マシン23とルータ3との間で安全に通信することが可能となる。さらに、ルータ管理部13Aは、接続要求のあったルータ3毎に異なるethインタフェース231A,231Bを用いて、ルータ3と仮想マシン23とを接続するので、IPv4であっても、1つの仮想マシン23と複数のルータ3との間で安全に通信することが可能となる。
【0101】
なお、管理サーバ10は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記した物理サーバ管理部12と、ルータ管理部13等の各機能を搭載することによって実現することができる。また、物理サーバ20は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記したHostOS/Hypervisor上に仮想マシン23、ethインタフェース231、v4v6変換モジュール22等の各機能を搭載することによって実現することができる。
【0102】
また、上記実施例では、物理サーバ管理部12及びルータ管理部13が、管理サーバ10に備える構成とした。しかしながら、これに限定されず、物理サーバ管理部12及びルータ管理部13が、それぞれ独立のサーバに備える構成としても良い。
【0103】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、物理サーバ管理部12とルータ管理部13とを1個の部として統合しても良い。一方、ルータ管理部13を、通信確立部131と接続処理部132とアドレス設定指示部133とアドレス送信部134とに分散しても良い。また、vSW使用状況管理表11を管理サーバ10の外部装置に記憶するようにしても良いし、vSW使用状況管理表11を記憶した外部装置を管理サーバ10とネットワーク経由で接続するようにしても良い。