(57)【特許請求の範囲】
【請求項１】
ネットワークを構成する物理ノードと、
前記物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定を指示するドメイン管理装置とを備え、
前記物理ノードが、前記ドメイン管理装置からの指示に含まれる前記仮想ノードの定義の仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を決め、
前記ＭＡＣアドレスに設定する値の少なくとも一部は、前記仮想インタフェースを識別する情報にマッピング関数を適用した値の少なくとも一部を使用し、
前記仮想マシンで動作するプログラムが、
前記仮想インタフェースを識別する情報に前記マッピング関数を適用して求めた値と、
前記仮想インタフェースのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表と
を基に前記仮想インタフェースのデバイス名を求めること
を特徴とするネットワーク仮想化システム。
【請求項２】
前記マッピング関数が、ハッシュ関数、巡回冗長検査関数、又は、同じ識別する情報には同じ値を返し異なる識別する情報には所定の確率以下でしか同じ値を返さない関数であることを特徴とする請求項１に記載のネットワーク仮想化システム。
【請求項３】
前記ドメイン管理装置が、前記物理ノードに指示を出す前に、前記仮想ノードの設定を基に、前記仮想ノードを割り当てる仮想マシンの仮想ＮＩＣのＭＡＣアドレスの重複確認することを特徴とする請求項１又は請求項２に記載のネットワーク仮想化システム。
【請求項４】
仮想ネットワークの仮想ノードと仮想リンクとの設定の指示を受ける仮想ノード定義解釈部と、
前記仮想ノード定義解釈部の結果を受け仮想ネットワークに割り当てるリソースを確認するリソース割当て部と、
前記設定の指示と前記仮想ネットワークに割り当てるリソースとを基に仮想マシンの起動パラメータを生成し、前記起動パラメータで仮想マシンの起動を依頼する仮想マシンパラメータ生成処理部とを備え、
前記仮想マシンパラメータ生成処理部が、前記設定の指示に含まれる仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を求め、
前記ＭＡＣアドレスに設定する値の少なくとも一部は、前記仮想インタフェースを識別する情報にマッピング関数を適用した値の少なくとも一部を使用し、
前記仮想マシンで動作するプログラムが、
前記仮想インタフェースを識別する情報に前記マッピング関数を適用して求めた値と、
前記仮想インタフェースのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表と
を基に前記仮想インタフェースのデバイス名を求めること
を特徴とするノード。
【請求項５】
前記マッピング関数が、ハッシュ関数、巡回冗長検査関数、又は、同じ識別する情報には同じ値を返し異なる識別する情報には所定の確率以下でしか同じ値を返さない関数であることを特徴とする請求項４に記載のノード。
【請求項６】
物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定の指示し、
前記指示に含まれる仮想インタフェースの識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部を設定する値を求め、
前記ＭＡＣアドレスに設定する値の少なくとも一部は、前記仮想インタフェースを識別する情報にマッピング関数を適用した値の少なくとも一部を使用し、
前記仮想マシンで動作するプログラムが、
前記仮想インタフェースを識別する情報に前記マッピング関数を適用して求めた値と、
前記仮想インタフェースのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表と
を基に前記仮想インタフェースのデバイス名を求めること
を特徴とするネットワーク仮想化方法。
【請求項７】
物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定の指示する処理と、
前記指示に含まれる仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を求める処理と、
前記ＭＡＣアドレスに設定する値の少なくとも一部は、前記仮想インタフェースを識別する情報にマッピング関数を適用した値の少なくとも一部を使用し、
前記仮想マシンで動作するプログラムに基づく
前記仮想インタフェースを識別する情報に前記マッピング関数を適用して求めた値と、
前記仮想インタフェースのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表と
を基に前記仮想インタフェースのデバイス名を求める処理とを
コンピュータに実行させることを特徴とするネットワーク仮想化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク仮想化システム、特に、仮想化ネットワークの設定に関する。
【背景技術】
【０００２】
近年、ネットワーク（network）が、大型化し、ネットワークの管理運用が、複雑化している。
【０００３】
そのため、ネットワークを構成するいずれかの装置が、ほかの装置に対する設定を受けて、管理者の代わりに設定する、ネットワークに対応した管理が行われている（例えば、特許文献１を参照）。
【０００４】
さらに、ネットワークを構成している物理ネットワークをそのまま使用するのではなく、管理のため又は安全性の確保のため、物理ネットワークの上に仮想ネットワークを構築して使用することが、行われている。
【０００５】
ネットワークを仮想化したシステム（ネットワーク仮想化システム）は、物理ネットワークの上に、１つ又は複数の仮想ネットワークを構築することできる。さらに、構築された仮想ネットワークは、互いに影響を与えることなく動作することができる。そのため、例えば、ネットワークの研究者が行うネットワークの実験と、ネットワークサービスの提供者が行うネットワークサービスの提供とが、同じ物理ネットワーク上で、相互に影響することなく行うことが可能となる。このようなネットワーク仮想化システムは、ネットワークの各分野において注目されている。
【０００６】
このようなネットワークを仮想化する手法として、ノードのＮＩＣ（Network Interface Circuit又はCard、ネットワークインタフェース回路、ネットワークインタフェースカード）のＭＡＣアドレス（Media Access Control address）を仮想化するものがある（例えば、特許文献２を参照）。
【０００７】
なお、仮想化したネットワークの資源（リソース：resource）は、物理ネットワークのネットワーク資源が、割り振られている（例えば、特許文献３を参照）。
【０００８】
このような仮想ネットワークを備えるネットワーク仮想化システムでは、仮想ネットワークを実現する物理ノードとは別に、ネットワークを介して物理ノードに設定を指示するドメイン（domain：領域）管理装置が使用されている。
【０００９】
このようなネットワーク仮想化システムの研究開発は、日本に限らず、外国でも行われている。例えば、米国科学財団（NSF：National Science Foundation）は、実験ネットワークＧＥＮＩ（Global Environment for Networking Investigations(http://www.geni.net/)）プロジェクトを行っている。ドメイン管理装置を使用したネットワーク仮想化システムの一例として、ＧＥＮＩにおけるネットワーク仮想化システムを含むネットワークシステムの一例のブロック図を図１７示す。
【００１０】
図１７に示すネットワーク仮想化システム９１は、情報の処理（コンピューティング：computing）資源を提供する物理ノード９２と、それらの物理ノード９２を接続する物理リンク９３と、ドメイン管理装置９４とを含む。そして、ネットワーク仮想化システム９１は、物理ノード９２と物理リンク９３の上に仮想ネットワーク９５を構築している。仮想ネットワーク９５は、物理ネットワークと同様に、仮想ノード９６と仮想リンク９７とを含む。
【００１１】
なお、図１７に示す仮想ネットワーク９５の仮想ノード９６には、物理ノード９２のリソースが、割り当てられる。図１７では、この割当て関係を点線で示している。また、仮想ノード９６間を結ぶ仮想リンク９７も、物理リンク９３のリソースが割り当てられる。
【００１２】
また、ドメイン管理装置９４は、通信路９９を使用して、このリソースの割当てを物理ノード９２に指示する。
【００１３】
このネットワーク仮想化システム９１について、さらに説明すると、次のようになる。
【００１４】
設定端末９８から仮想ネットワーク９５の作成要求を受け取ったドメイン管理装置９４は、その要求を基に、仮想ネットワーク９５に割り当てる物理ノード９２と物理リンク９３のリソースの割当てを決定する。そして、ドメイン管理装置９４は、物理ノード９２に仮想ネットワーク９５の作成とリソースの割当てを指示する。物理ノード９２は、その指示に基づき仮想ネットワーク９５にリソースを割り当てる。ドメイン管理装置９４は、割当てが完了すると設定端末９８に仮想ネットワーク割当て結果を通知する。
【００１５】
設定端末９８がドメイン管理装置９４に送る要求は、いろいろな形式のものが利用されている。一例として、ＧＥＮＩに関連するＰｒｏｔｏＧＥＮＩ ＲＳｐｅｃに関連する仮想ネットワーク定義を、図１８に示す（例えば、非特許文献１を参照）。
【００１６】
図１８において、点線で囲まれた範囲、つまり＜ｎｏｄｅ＞から＜／ｎｏｄｅ＞で囲まれた領域が、要求されている仮想ノード９６の定義である。
【００１７】
図１８に示す仮想ノード９６の定義は、仮想ノード９６の識別子を表す＜ｖｉｒｔｕａｌ＿ｉｄ＞属性と、仮想ノード９６の種別を表す＜ｎｏｄｅ＿ｔｙｐｅ＞要素と、仮想ノード９６のネットワークインタフェース（以下、仮想インタフェースとも呼ぶ）の定義である＜ｉｎｔｅｒｆａｃｅ＞とを含む。この定義は、要求されている仮想インタフェースの数の仮想インタフェースの定義が、含まれている。図１８に示す例では、２つの仮想インタフェースの定義が、含まれている。
【００１８】
さらに、仮想インタフェースの名前は、＜ｉｎｔｅｒｆａｃｅ＞要素の属性＜ｖｉｒｔｕａｌ＿ｉｄ＞で示されている。図１８に示す例では、Ｎｏｄｅ−Ａの仮想インタフェース（仮想ＩＦ）は、「ＶＩＦ−Ａ０」と、「ＶＩＦ−Ａ１」との名前（デバイス名）を持つ仮想インタフェース定義を含む。
【００１９】
また、仮想ノード９６間を接続する仮想リンク９７は、＜ｌｉｎｋ＞から＜／ｌｉｎｋ＞で囲まれた要素で定義される。図１８に一例として示す仮想リンク９７は、仮想リンク９７が接続する仮想ノード９６の仮想インタフェースを指定する形式で定義されている。例えば、図１８に示す仮想リンク「Ｌｉｎｋ−ＡＢ」は、Ｎｏｄｅ−Ａの仮想インタフェースＶＩＦ−Ａ０とＮｏｄｅ−Ｂの仮想インタフェースＶＩＦ−Ｂ１を接続している。
【００２０】
このような仮想ネットワーク定義を受け取ったドメイン管理装置９４は、受信した仮想ネットワーク定義の解釈を行い、仮想ネットワーク９５を作成するのに必要な仮想ノード９６及び仮想リンク９７に割り当てる物理ノード９２及び物理リンク９３のリソースを決定する。そして、ドメイン管理装置９４は、通信路９９を使用して、仮想ネットワーク９５の構成させる物理ノード９２に対し、仮想ノード９６及び仮想リンク９７に割り当てるリソースを定義した仮想ノード９６の定義を送信し、リソース割当てを指示する。
【００２１】
仮想ノード９６の割当ての指示を受信した物理ノード９２は、仮想ノード９６の定義に基づき、物理ノード９２で動作する仮想マシン（ＶＭ：Virtual Machine）に仮想ノード９６を割り当てる。また、物理ノード９２は、物理リンク９３へ仮想リンク９７のリソース割当ても行う。割当てが終わると、物理ノード９２は、割当て結果を、ドメイン管理装置９４に返す。
【００２２】
設定端末９８から受け取った仮想ネットワーク定義で定義された仮想ネットワーク９５の構築が完了すると、ドメイン管理装置９４は、設定端末９８に結果を通知する。
【００２３】
この割当て結果もいろいろなデータ形式で表現されている。
【００２４】
図１９は、Ｐｒｏｔｏ ＧＥＮＩで使用される割当て結果の一例である（非特許文献２を参照）。
【００２５】
なお、説明の便宜のため、図１９に示す結果は、１つの仮想ノード９６の結果を抽出して示している（図１９の外側の点線枠の範囲）。
【００２６】
図１９に示す仮想ノード識別子１４１が、この仮想ノード９６がＮｏｄｅ−Ａに対応する割当て結果であることを示す。
【００２７】
また、図１９に示す仮想インタフェース情報１４２及び仮想インタフェース情報１４３が、Ｎｏｄｅ−Ａの仮想インタフェースに対応する割当て結果を示している。
【００２８】
図１９に示す仮想インタフェースは、＜ｃｏｍｐｏｎｅｎｔ＿ｉｄ＞と＜／ｃｏｍｐｏｎｅｎｔ＿ｉｄ＞とに挟まれた範囲に、仮想マシン（ＶＭ）の仮想ＮＩＣの割当てが含まれている。また、＜ｖｉｒｔｕａｌ＿ｉｄ＞と＜／ｖｉｒｔｕａｌ＿ｉｄ＞とに挟まれた範囲に、仮想インタフェース（仮想ＩＦ）の割当てが、含まれる。
【００２９】
例えば、図１９の仮想インタフェース情報１４２は、仮想マシンの仮想ＮＩＣのデバイス名（名前）「ｅｔｈ１」が、仮想インタフェース「ＶＩＦ−Ａ０」に対応していることが示している。同様に、仮想インタフェース情報１４３は、仮想マシンの仮想ＮＩＣのデバイス名「ｅｔｈ０」が、仮想インタフェース「ＶＩＦ−Ａ１」に対応していることを示している。
【００３０】
仮想ネットワークに接続する仮想ノード９６で動作するプログラムは、仮想インタフェース情報１４２又は仮想インタフェース情報１４３を参照し、仮想インタフェースが、仮想マシン上のどの仮想ＮＩＣに対応しているかを知ることができる。
【００３１】
このように、図１７に示したＧＥＮＩのネットワーク仮想化システム９１は、設定端末９８の要求を受けたドメイン管理装置９４が、物理ノード９２の設定することに基づき、仮想ネットワークを構築することができる。
【先行技術文献】
【特許文献】
【００３２】
【特許文献１】特開２００５−１９７８２６
【特許文献２】特表２００８−５３３９３６
【特許文献３】特開２００９−２６７６２５
【非特許文献】
【００３３】
【非特許文献１】RSpecExample - ProtoGENI                    (http://www.protogeni.net/trac/protogeni/wiki/RSpecExamples#LinkRequest)
【非特許文献２】RSpecManifestExample - ProtoGENI                    (http://www.protogeni.net/trac/protogeni/wiki/RSpecManifestExample)
【発明の概要】
【発明が解決しようとする課題】
【００３４】
一般に、ＮＩＣがどのような名前で参照されるかは、コンピュータのオペレーティングシステム（ＯＳ）に応じて異なる。さらに、ＮＩＣの名前は、ＯＳの起動時のＮＩＣの認識順序にも依存する。しかし、ＯＳの起動時のＮＩＣの認識順序は、起動ごとに異なり、決まっていない。このように、仮想マシンで動作するＯＳが設定したＮＩＣの名称は、ＯＳが立ち上がった後に確定する。
【００３５】
図１７に示したネットワーク仮想化システム９１は、仮想化の要求に対して、仮想ノード９６及び仮想リンク９７を設定後、要求元に図１９に示す設定結果を返却する。従って、ネットワーク仮想システム９１で設定された仮想ＮＩＣの名前は、この図１９に示す設定結果を確認に基づき可能となる。
【００３６】
しかし、図１９に示す割当て結果を用いる図１７に示したネットワーク仮想化システム９１には、次に示す問題点があった。
【００３７】
仮想ネットワーク９５に割り振られた仮想マシンで動作するプログラムは、仮想ネットワーク９５を利用するために、仮想ネットワーク９５における仮想インタフェースと仮想ＮＩＣの名前（デバイス名）との対応を知ることが必要である。しかし、一般的な仮想マシンで動作するプログラムは、仮想インタフェースと仮想ＮＩＣとの対応を知ることはできない。そのため、ネットワーク仮想化システム９１の物理ノード９２は、仮想マシンで動作するプログラムに、仮想ネットワークの割当て結果、特に仮想インタフェースと対応する仮想ＮＩＣの名前を知らせることが必要であるという問題点があった。
【００３８】
また、ネットワーク仮想化システム９１の物理ノード９２は、仮想マシンを動作させるための制御プログラムが動作している。この制御プログラムが、仮想マシンで動作しているプログラムに仮想ＮＩＣに関した情報を通知することとなる。しかし、仮想ＮＩＣの名前は、オペレーティングシステムに依存して異なる。従って、物理ノード９２の制御プログラムは、通知するために、仮想マシンで動作するオペレーティングシステムに対応していることが必要である。しかし、制御プログラムが、全てのオペレーティングシステムに対応することは、実質的に困難である。そのため、ネットワーク仮想化システム９１は、仮想マシンで使用できるオペレーティングシステムを自由に選択することができないという問題点があった。
【００３９】
また、ネットワーク仮想化システム９１の物理ノード９２における仮想インタフェースと仮想ＮＩＣの対応関係は、仮想マシンで動作するオペレーティングシステムの起動が完了するまで、確定しない。そのため、ネットワーク仮想化システム９１の物理ノード９２は、仮想マシンで動作するオペレーティングシステムが起動するまで、ドメイン管理部９４に設定結果を回答することができないという問題点があった。
【００４０】
さらに、オペレーティングシステムの起動が必要なため、ネットワーク仮想化システム９１の物理ノード９２は、仮想ネットワーク９５の作成を予約することができないという問題点がある。同様に、ネットワーク仮想化システム９１の物理ノード９２は、前もって仮想ネットワーク９５のリソースの確保が可能かどうかを確認することができないという問題点もあった。
【００４１】
本発明の目的は、上記問題点を解決し、仮想ネットワークの割当て結果を参照せず、仮想マシンの起動を待たなくても、仮想インタフェースと仮想ＮＩＣの対応関係を把握できる、ネットワーク仮想化システムを提供することにある。
【課題を解決するための手段】
【００４２】
本発明のネットワーク仮想化システムは、ネットワークを構成する物理ノードと、前記物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定を指示するドメイン管理装置とを備え、前記物理ノードが、前記ドメイン管理装置からの指示に含まれる前記仮想ノードの定義の仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を決めることを特徴とする。
【００４３】
本発明のノード、仮想ネットワークの仮想ノードと仮想リンクとの設定の指示を受ける仮想ノード定義解釈部と、前記仮想ノード定義解釈部の結果を受け仮想ネットワークに割り当てるリソースを確認するリソース割当て部と、前記設定の指示と前記仮想ネットワークに割り当てるリソースとを基に仮想マシンの起動パラメータを生成し、前記起動パラメータで仮想マシンの起動を依頼する仮想マシンパラメータ生成処理部とを備え、前記仮想マシンパラメータ生成処理部が、前記設定の指示に含まれる仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を求めることを特徴とする。
【００４４】
本発明のネットワーク仮想化方法は、物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定の指示し、前記指示に含まれる仮想インタフェースの識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部を設定する値を求めることを特徴とする。
【００４５】
本発明のネットワーク仮想化プログラムは、物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定の指示する処理と、前記指示に含まれる仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を求める処理をコンピュータに実行させることを特徴とする。
【発明の効果】
【００４６】
本発明によれば、仮想ネットワーク割当て結果を参照せず、仮想マシンの起動を待たなくても、仮想インタフェースと仮想マシンにおける仮想ＮＩＣの対応関係を把握できる効果を得ることが出来る。
【図面の簡単な説明】
【００４７】
【図１】本発明における第１の実施の形態に係るネットワーク仮想化システムを含むネットワークシステムの一例を示すブロック図である。
【図２】第１の実施の形態に係る仮想ネットワークの構成の一例を示す図である。
【図３】第１の実施に形態に係るネットワーク仮想化システムの一例を示すブロック図である。
【図４】第１の実施の形態に係る物理ノードの構成の一例を示すブロック図である。
【図５】第１の実施の形態に係るリソース割当て処理部の動作の一例を示すフローチャート図である。
【図６】第１の実施に形態に係るＶＭパラメータ生成処理部の動作の一例を示すフローチャート図である。
【図７】第１の実施の形態に係るＭＡＣアドレスの構成の一例を示す図である。
【図８】第１の実施の形態に係るＭＡＣアドレスを生成する動作の一例を示すフローチャート図である。
【図９】第１の実施の形態に係るマッピング関数の動作の一例を示すフローチャート図である。
【図１０】第１の実施の形態に係るハッシュ関数の結果の一例を示す図である。
【図１１】第１の実施の形態に係る仮想Ｍの起動パラメータの一例を示す図である。
【図１２】第１の実施の形態に係る仮想ネットワーク割当て結果の一例を示す図である。
【図１３】第１の実施の形態に係る仮想ネットワーク割当て結果の一例を示す図である。
【図１４】第１の実施の形態に係るＡＰプログラムの動作の一例を示すフローチャート図である。
【図１５】第１の実施の形態に係る仮想ノードの定義の一例を示す図である。
【図１６】第１の実施の形態に係る仮想Ｍの仮想ＮＩＣの一例を示す図である。
【図１７】一般的なネットワークシステムの一例を示すブロック図である。
【図１８】一般的な仮想ネットワーク定義の一例を示す図である。
【図１９】一般的な仮想ネットワーク割当て結果の一例を示す図である。
【発明を実施するための最良の形態】
【００４８】
次に、本発明の実施の形態について、図面を参照して説明する。
【００４９】
なお、以下の説明において、仮想ネットワーク上のノード（node：節点）を仮想ノード、リンク（Link：通信路）を仮想リンクと言う。
【００５０】
図１は、本発明の第１の実施の形態に係るネットワーク仮想化システム１を含むネットワークシステム４の一例を示すブロック図である。
【００５１】
ネットワークシステム４は、ネットワーク仮想化システム１と設定端末３１を含む。
【００５２】
設定端末３１は、図示しない装置、又は、システム管理者の指示の基づき、ネットワーク仮想化システム１で実現する仮想化ネットワークの作成の指示をネットワーク仮想化システム１に送る。
【００５３】
ネットワーク仮想化システム１は、設定端末３１からの指示を受け取り、後ほど詳細に説明するが、物理ノード（物理ノード２１乃至物理ノード２６）と物理リンク５１のリソースを用いて、仮想ノードと仮想リンクを含む仮想ネットワーク（図１で示す仮想ネットワーク２及び仮想ネットワーク３）を構築する。なお、図１は、点線により、物理ノードと仮想ノードの対応の一例を示している。
【００５４】
次に、仮想ネットワーク２に関して図面を参照して、さらに詳細に説明する。
【００５５】
図２は、図１に示す仮想ネットワーク２の構成の一例をさらに詳細に示した図である。
【００５６】
仮想ネットワークは、一般的に、２つ以上の仮想ノードと１つ以上の仮想リンクを含む。また、各仮想ノードは、仮想リンクに接続するための１つ以上の仮想ＮＩＣ（Network interface Circuit又はCard、ネットワークインタフェース回路、ネットワークインタフェースカード）を含む。仮想ノードは、仮想リンクを使用して、通信する。
【００５７】
図２に示す仮想ネットワーク２は、３つの仮想ノード及び３つの仮想リンクで構成された例を示している。
【００５８】
例えば、仮想ノード７１（Node-A）は、仮想ＮＩＣ（VIF-A0）と仮想リンク８１(Link-AB）を介して仮想ノード７２(Node-B）と接続し、仮想ＮＩＣ(VIF-A1)と仮想リンク８３（Link-CA）を介して仮想ノード７３（Node-C）と接続する。仮想ノード７２と仮想ノード７３も、仮想リンク８２（Link-BC）を介して接続する。
【００５９】
ただし、本実施の形態に係る仮想ネットワーク２は、仮想リンクを含まない、いわゆる、スタンドアローン（stand-alone）の仮想ノードを含んでも良い。
【００６０】
次に、本実施の形態に係るネットワーク仮想化システム１について、図面を参照して、さらに説明する。
【００６１】
図３は、ネットワーク仮想化システム１の構成の一例をさらに詳細に示したブロック図である。図３において、図１と同じ構成は、同じ番号を付してある。
【００６２】
ネットワーク仮想化システム１は、ドメイン管理装置１１（domain：領域）と、１つ以上の物理ノード（物理ノード２１乃至物理ノード２６）と、物理リンク５１とを含む。
【００６３】
ドメイン管理装置１１は、図１に示した設定端末３１から仮想ネットワークの設定を受け取り、物理ノード２１乃至物理ノード２６に指示を出し、ネットワーク仮想化システム１に要求された仮想ネットワークを構築する。ドメイン管理装置１１は、設定端末３１に構築結果の返却も行う。
【００６４】
ただし、ドメイン管理装置１１が行う設定は、これに限られるわけではない。例えば、ドメイン管理装置１１は、仮想ネットワーク上の仮想の中継リンクとなる物理ノード、つまり仮想ノードの割当ては行わないが仮想リンクの割り当てる物理ノードに、仮想リンクの割当ての指示も行う。
【００６５】
物理リンク５１は、物理ノード２１乃至物理ノード２６を接続する。また、物理リンク５１のリソース（resource：資源）が、仮想リンクに割り振られる。なお、本実施の形態に係る物理リンク５１は、一般的なネットワークのリンク（例えば、IEEE(The Institute of Electrical and Electronics Engineers, Inc.）802.3）を使用すればよい。また、物理リンク５１は、有線でも無線でもよく、有線と無線とが混在していてもよく、接続方法にも制限はない。そのため、物理リンク５１の詳細な説明は、省略する。
【００６６】
設定経路６１は、ドメイン管理装置１１が、物理ノード２１乃至物理ノード２６に設定の指示を行い、結果を受け取るための通信の経路である。図３では、説明の便宜のため、設定経路６１を、物理リンク５１とは別として示している。しかし、本実施の形態に係るネットワーク仮想化システム1は、これに限られず、設定経路６１として物理リンク５１の一部又は全部を使用しても良い。なお、設定経路６１も、一般的なネットワークを使用すればよく、詳細な説明は、省略する。
【００６７】
物理ノード２１乃至物理ノード２６は、相互に物理リンク５１を用いて接続し、物理ネットワークを構成している。物理ノード２１乃至物理ノード２６は、１つ以上ならば接続する物理リンク５１の数に制限がなく、物理リンク５１を用いて他の物理ノードに接続していればよい。
【００６８】
図３は、一例として、物理ノード２３及び物理ノード２５が３つの物理リンク５１に接続し、物理ノード２１、物理ノード２２、物理ノード２４、及び、物理ノード２６が２つの物理リンク５１に接続している場合を示している。
【００６９】
さらに、物理ノード２１乃至物理ノード２６では、ドメイン管理装置１１の指示に基づき、物理ノードの資源（リソース：resource）を割り当てた仮想機械（以下、ＶＭ(Virtual Machine)、仮想マシン、又は、仮想Ｍと言うこともある）が動作している。この仮想Ｍ上では、オペレーティングシステム（以下、ＯＳ(Operating System)と言う）及びアプリケーションプログラム（Application Program、以下、ＡＰプログラムとも言う）が動作している。物理ノード２１乃至物理ノード２６は、この仮想Ｍを用いて仮想ノードを実現する。
【００７０】
ネットワーク仮想化システム１は、このように仮想Ｍで実現されている仮想ノードと物理リンク５１に基づく仮想リンクを用いて仮想ネットワーク（例えば、図１に示す仮想ネットワーク２）を実現している。
【００７１】
図３では、一例として、物理ノード２１で１個、物理ノード２２上で３個、物理ノード２４上で０個、その他の物理ノードで２個の仮想Ｍ（ＶＭ）が動作している。
【００７２】
なお、図１では、本実施の形態に係る仮想Ｍと仮想ネットワークの仮想ノードとの割当ての一例として、対応関係を点線で示している。
【００７３】
本実施の形態に係る物理ノード２１乃至物理ノード２６は、ドメイン管理装置１１からの指示を、個別に受けてもよく、複数の物理ノードで共通の指示を受けても良い。
【００７４】
また、本実施の形態に係るネットワーク仮想化システム１に含まれる物理ノードの数は、６に限られるわけではなく、５以下でも、７以上でもよい。
【００７５】
さらに、ネットワーク仮想化システム１の上に構築される仮想化ネットワークも２つに限られるわけではなく、１つでも良く、３以上でも良い。
【００７６】
なお、図３に示すネットワーク仮想化システム１が、本実施の形態に係るネットワーク仮想化システム１の最小構成となっている。
【００７７】
次に本発明の実施の形態に係る物理ノードについて図面を参照して説明する。
【００７８】
なお、本実施に形態に係るネットワーク仮想化システム１の物理ノード２１乃至物理ノード２６は、同じ構成として説明するが、必ずしも同じ構成の装置で実現する必要はない。物理ノード２１乃至物理ノード２６は、以降で説明する動作を実現することができれば、別の構成の装置（ノード）でもよい。
【００７９】
以下の説明では、一例として、物理ノード２１を使用して説明する。
【００８０】
図４は、本発明の実施の形態に係る物理ノード２１の構成の一例を示す図である。
【００８１】
なお、説明の便宜のため、以下の説明では、本実施の形態に係る物理ノード２１を、サーバ装置のような一般的なコンピュータ装置として説明するが、これに限られるわけではない。
【００８２】
物理ノード２１は、物理ＮＩＣ４１と、物理ＮＩＣ４２と、演算装置４３と、メモリ４４を含む。なお、図４に示す物理ノード２１が２つの物理ＮＩＣを備えているのは、以降の説明において、２種類の動作を行う物理ＮＩＣを説明する便宜のためである。本実施の形態に係る物理ノード２１の物理ＮＩＣは、２つに限られるわけはなく、１つでも、３つ以上でも良い。
【００８３】
物理ＮＩＣ４１及び物理ＮＩＣ４２は、物理リンク５１を介して他の装置と接続する。本実施の形態に係る物理ＮＩＣ４１及び物理ＮＩＣ４２は、接続先の制限がない。ただし、説明の便宜のため、物理ＮＩＣ４１が、ドメイン管理装置１１との接続を行い、物理ＮＩＣ４２が他の物理ノードと接続するとして説明する。つまり、本実施の形態に係る仮想化リンクは、物理ＮＩＣ４２に接続する物理リンク５１のリソースを使用して実現されることとする。
【００８４】
演算装置４３は、図示しない情報処理部（例えば、ＣＰＵ（Central Processing Unit））と記憶部とを含み、物理ノード２１の処理を行う。さらに具体的に説明すると、演算装置４３は、以降で説明を行うメモリ４４が記憶しているプログラムを実行する。
【００８５】
メモリ４４は、演算装置４３が本実施の形態を実現するために実行するプログラムを記憶している。メモリ４４は、演算装置４３がプログラムを実行するための作業領域として使用されてもよい。なお、図４のメモリ４４は、１つの構成として示しているが、これは説明の便宜のためである。本実施の形態に係るメモリ４４は、複数の記憶装置で構成されていてもよい。
【００８６】
本実施の形態に係るメモリ４４上のプログラムは、次のプログラムが含まれる。
【００８７】
ノード管理プログラム４４０は、仮想ノードを実現するためのプログラムである。ノード管理プログラム４４０は、ドメイン管理装置１１からの指示を基に、仮想ノード及び仮想リンクへのリソースの割当てと、次に説明する仮想化制御プログラム４５１に、仮想ノードを実現するための仮想Ｍの起動及び廃棄を指示する。このため、ノード管理プログラム４４０は、仮想ノード定義解釈処理部４４１と、リソース割当て処理部４４２と、ＶＭパラメータ生成処理部４４３と、ＶＭ割当て結果応答処理部４４４とを含む。ノード管理プログラム４４０は、これらの処理を別プログラムとしても良く、複数の処理を備えたプログラムとしても良い。これらの処理については、後ほどさらに説明する。
【００８８】
なお、本実施の形態に係る物理ノード２１は、ノード管理プログラム４４０をコンピュータで動作するプログラムとして説明するが、これに限られるわけではない。本実施の形態に係る物理ノード２１は、以降で説明するノード管理プログラム４４０の各処理の一部又は全てを、同等の動作する装置又は回路で構成してもよい。
【００８９】
仮想化制御プログラム４５１は、Ｈｙｐｅｒｖｉｓｏｒプログラムと呼ばれるプログラムに相当し、仮想Ｍを実現するための制御プログラムである。仮想化制御プログラム４５１は、仮想化マシンモニタまたは仮想化ＯＳ（Operating System）と呼ばれることもある。仮想化制御プログラム４５１は、ノード管理プログラム４４０から仮想Ｍの起動パラメータを含んだ指示を受けて、仮想Ｍの起動及び廃棄を行う。物理ノード２１は、仮想化制御プログラム４５１が起動した仮想Ｍに用いて、仮想化ノードを実現する。また、仮想化制御プログラム４５１は、次に説明するＡＰプログラム４６１又はＡＰプログラム４６２の起動及び廃棄を含んだ制御を行っても良い。ただし、ＡＰプログラム４６１又はＡＰプログラム４６２の起動及び廃棄の制御は、仮想Ｍ上で動作するプログラム（例えばＯＳ）が行っても良い。なお、本発明の第１の実施に形態に係る仮想化制御プログラム４５１は、一般的なＨｙｐｅｒｖｉｓｏｒプログラムを使用すればよく、詳細な説明は省略する。
【００９０】
ＡＰプログラム４６１又はＡＰプログラム４６２は、仮想化制御プログラム４５１が起動した仮想Ｍ内で動作するＡＰプログラムの例示である。仮想Ｍが仮想ノードに割り当てられている場合、ＡＰプログラム４６１は、仮想ノードで動作しているプログラムとなる。ＡＰプログラム４６１及びＡＰプログラム４６２は、必要に応じて、物理ＮＩＣ４２で実現されている仮想ＮＩＣに接続する仮想リンクを使用し、他の仮想ノードで動作するプログラムと接続し、データの通信することができる（なお、ＡＰプログラム４６１及びＡＰプログラム４６２は、ループバック（loop-back）を使用して、同じ物理ノード２１のプログラムと接続しても良い）。本実施の形態において、ＡＰプログラム４６１及びＡＰプログラム４６２は、仮想Ｍ上のＯＳで実行されるプログラムであるため、ＡＰプログラム４６１及びＡＰプログラム４６２の詳細な説明は、省略する。ただし、ＡＰプログラム４６１又はＡＰプログラム４６２の仮想ＮＩＣに関する動作については、後ほど説明する。
【００９１】
なお、演算装置４３が、ここで説明したメモリ４４上の各プログラムを実行している。この関係を示すため、図４では、演算装置４３と各プログラムとの接続を点線で示している。また、演算装置４３は、ここで説明した各プログラムを実行するための基盤となるオペレーティングシステムも実行しているが、これは、一般的なプログラムを使用すればよく、また、説明が煩雑になるため、図示及び詳細な説明は、省略する。
【００９２】
次に、物理ノード２１の動作について図面を参照して説明する。
【００９３】
なお、既に説明したとおり、仮想化制御プログラム４５１、ＡＰプログラム４６１、及び、ＡＰプログラム４６２は、一般的なプログラムを使用すればよいため、動作の詳細な説明は省略し、ノード管理プログラム４４０について詳細に説明と行う。
【００９４】
ノード管理プログラム４４０は、既に説明したとおり、仮想ノード定義解釈処理部４４１と、リソース割当て処理部４４２と、ＶＭパラメータ生成処理部４４３と、ＶＭ割当て結果応答処理部４４４とを含む。
【００９５】
仮想ノード定義解釈処理部４４１は、物理ＮＩＣ４１を介して、ドメイン管理装置１１から仮想ノードの割当て要求を受信する。要求を受信した仮想ノード定義解釈処理部４４１は、割当て要求された仮想ノードの定義を解釈する。そして、仮想ノード定義解釈処理部４４１は、要求された仮想ノードの定義を以降の処理で利用可能なデータ構造に変換し、リソース割当て処理部４４２に渡す。なお、本実施の形態に係る仮想ノードの定義のデータ形式は、特に制限がなく、一般的なデータ形式を使用すればよく、データ形式に関しての詳細な説明は、省略する。
【００９６】
リソース割当て処理部４４２は、仮想ノード定義解釈処理部４４１からデータ変換後の仮想ノード定義を受け取ると、物理ノード２１でのリソースを割り当てる。
【００９７】
図５を参照して、この動作についてさらに詳細に説明する。
【００９８】
まず、リソース割当て処理部４４２は、仮想ノードの定義を受け取ると、物理ノード２１において仮想マシンに割当て可能な物理リソース（例えば、ＣＰＵ数、処理時間比率、又は、ワーク領域）の空き状況を確認する（ステップ１００１）。
【００９９】
次に、リソース割当て処理部４４２は、仮想ノードのための仮想マシンに必要なリソースが割当て可能かどうかを判定する（ステップ１００２）。
【０１００】
割当て可能な場合（ステップ１００２でyes）、リソース割当て処理部４４２は、仮想ノード定義と割り当てた物理リソース量とをＶＭパラメータ生成処理部４４３に渡す（ステップ１００３）。
【０１０１】
なお、リソース割当て処理部４４２がＶＭパラメータ生成処理部４４３に渡す仮想ノード定義は、仮想ノードに割り当てた仮想インタフェース（以下、仮想ＩＦと言うこともある）の情報（例えば識別子）を含む。複数の仮想ＩＦの情報を含む場合、仮想ノード定義は、複数の仮想ＩＦの情報をどのように含んでも良いが、本実施の形態では、処理の効率及び明確さを勘案して、仮想ノード定義として複数の仮想ＩＦの情報を連続して記載する形式で含むこととする。
【０１０２】
リソースの割当てが不可能な場合（ステップ１００２でno）、リソース割当て処理部４４２は、ＶＭパラメータ生成処理部４４３に、割り当てるリソースが確保できなかったことを通知する（ステップ１００４）。
【０１０３】
このように、リソース割当て処理部４４２は、割当てができない場合を含め、リソースの割当て結果をＶＭパラメータ生成処理部４４３に通知する。
【０１０４】
リソースの割当て結果を受け取ったＶＭパラメータ生成処理部４４３は、リソースの割当て結果を基に、後ほど詳細に説明する処理を行い、仮想化制御プログラム４５１への指示及びＶＭ割当て結果応答処理部４４４へ結果を通知する。
【０１０５】
結果を受け取ったＶＭ割当て結果応答処理部４４４は、仮想ノード割当て結果を、物理ＮＩＣ４１を介して、ドメイン管理装置１１に返す。
【０１０６】
このように動作し、ノード管理プログラム４４０は、仮想ネットワークのリソースを物理ノード２１で確保する。
【０１０７】
次に、ＶＭパラメータ生成処理部４４３の動作について、図面を参照してさらに説明する。
【０１０８】
図６は、ＶＭパラメータ生成処理部４４３の動作の一例を示すフローチャート図である。
【０１０９】
リソース割当て処理部４４２から割当て結果を受け取ったＶＭパラメータ生成処理部４４３は、まず、割当てができたかどうかを確認する（ステップ１１０１）。
【０１１０】
割当てが可能な場合（ステップ１１０１でyes）、ＶＭパラメータ生成処理部４４３は、リソース割当て処理部４４２から受け取った仮想ノード定義と割り当てる物理リソース量とを基に、仮想ＮＩＣに割り当てるＭＡＣアドレス（Media Access Control address）を生成する（ステップ１１０２）。このＭＡＣアドレスの生成については、後ほどさらに詳細に説明する。
【０１１１】
続いて、ＶＭパラメータ生成処理部４４３は、ＭＡＣアドレスの生成ができたかどうかを確認する（ステップ１１０３）。
【０１１２】
ＭＡＣアドレスが生成できた場合（ステップ１００３でyes）、ＶＭパラメータ生成処理部４４３は、生成したＭＡＣアドレスと、仮想ノードの定義とに基づき、仮想化制御プログラム４５１が仮想Ｍを起動するために使用する起動パラメータを生成する（ステップ１１０４）。
【０１１３】
起動パラメータを生成したＶＭパラメータ生成処理部４４３は、生成した起動パラメータを仮想化制御プログラム４５１に渡して、仮想Ｍの起動を指示する（ステップ１１０５）。
【０１１４】
ここで、本実施の形態に係るＶＭパラメータ生成処理部４４３は、仮想化制御プログラム４５１に指示を行い、仮想化制御プログラム４５１からの応答を待たずに、次の処理を行う。
【０１１５】
ただし、ＶＭパラメータ生成処理部４４３は、以降で説明する処理と並行して、仮想化制御プログラム４５１からの応答を受け取り、例えば、エラー時などに再試行するような動作を行ってもよい。
【０１１６】
次に、ＶＭパラメータ生成処理部４４３は、仮想ノードの割当て結果をＶＭ割当て結果応答処理部４４４に渡す（ステップ１１０６）。
【０１１７】
なお、ＶＭパラメータ生成処理部４４３は、先に、仮想ノードの割当て結果をＶＭ割当て結果応答処理部４４４に渡してから、生成した起動パラメータを仮想化制御プログラム４５１に渡して、仮想Ｍの起動の指示を行ってもよい。つまり、ＶＭパラメータ生成処理部４４３は、ステップ１１０６とステップ１１０５との順番を入れ替えても良い。
【０１１８】
ＭＡＣアドレスが生成できなかった場合（ステップ１１０３でno）、ＶＭパラメータ生成処理部４４３は、仮想ノードの割当てができなかったことを、ＶＭ割当て結果応答処理部４４４に渡す（ステップ１１０７）。
【０１１９】
同様に、リソース割当て処理部４４２から割当て結果が不可の場合（ステップ１１０１でno）、ＶＭパラメータ生成処理部４４３は、仮想ノードの割当てができなかったことを、ＶＭ割当て結果応答処理部４４４に渡す（ステップ１１０７）。
【０１２０】
このような動作に基づき、ＶＭパラメータ生成処理部４４３は、仮想化制御プログラム４５１への仮想Ｍの起動の指示と、ＶＭ割当て結果応答処理部４４４への結果を通知する。
【０１２１】
次に、ＶＭパラメータ生成処理部４４３がＭＡＣアドレスを生成する動作について、図面を参照して説明する。
【０１２２】
まず、本実施の形態に係るＶＭパラメータ生成処理部４４３が生成するＭＡＣアドレスについて説明する。
【０１２３】
本実施の形態に係るＶＭパラメータ生成処理部４４３は、ＭＡＣアドレスを仮想ＩＦ（Interface）識別部と汎用部との２つの部分に分けて生成する。ＭＡＣアドレスは、６バイトのデータである。本実施に形態に係るＶＭパラメータ生成処理部４４３は、バイトの位置が重複せず、仮想ＩＦ識別部を確保すれば、ＭＡＣアドレスの６バイトをどのように仮想ＩＦ識別部と汎用部とに分けてもよい。例えば、ＶＭパラメータ生成処理部４４３は、仮想ＩＦ識別部と汎用部とを上位と下位の３バイトに分けて設定しても良く、汎用部の割当てを行わず、ＭＡＣアドレスの６バイトを全て仮想ＩＦ識別部としてもよい。
【０１２４】
さらに、仮想ＩＦ識別部と汎用部として割り当てるＭＡＣアドレスの領域は、連続した領域である必要はなく、不連続な領域でもよい。例えば、ＶＭパラメータ生成処理部４４３は、ＭＡＣアドレスの下位から１バイト目、３バイト目、５バイト目を仮想ＩＦ識別部に割り当て、それ以外の２バイト目、４バイト目、６バイト目を汎用部に割り当ててもよい。また、仮想ＩＦ識別部と汎用部に割り当てるＭＡＣアドレスの領域は、バイト単位で割り当てる必要はなく、ビット単位で割り当ててもよい。
【０１２５】
本実施の形態の説明では、一例として、図７に示すように、ＭＡＣアドレスの下位３バイトを仮想ＩＦ識別部、上位３バイトを汎用部として説明する。
【０１２６】
後ほど詳細に説明するとおり、ＶＭパラメータ生成処理部４４３は、仮想ＩＦ識別部の値を仮想ノード定義内の仮想インタフェース定義を基に生成する。
【０１２７】
これに対し、本実施の形態に係る汎用部は、任意の値を割り当てることができる。このため、本実施の形態に係るネットワーク仮想化システム１において、汎用部は、任意の用途に用いることができる。このように、本実施の形態に係る汎用部の値は、任意に設定してよいため、設定の詳細な説明は、省略する。
【０１２８】
ＶＭパラメータ生成処理部４４３が行う仮想ＩＦ識別部に設定について、図面を参照して、さらに詳細に説明する。
【０１２９】
図８は、本実施の形態に係るＶＭパラメータ生成処理部４４３が、仮想ＮＩＣに割り当てるＭＡＣアドレス、特に仮想ＩＦ識別部の値を生成する処理の一例を示すフローチャート図である。
【０１３０】
ＶＭパラメータ生成処理部４４３は、まず、空のＭＡＣアドレスの一覧表を作成する（ステップ１２０１）。
【０１３１】
次に、ＶＭパラメータ生成処理部４４３は、リソース割当て処理部４４２から受け取った仮想ノード定義の仮想インタフェース（仮想ＩＦ）のリストから仮想ＩＦの要素（情報）を１つ取り出す（ステップ１２０２）。本実施の形態に係るＶＭパラメータ生成処理部４４３は、仮想ＩＦのリストの最初から仮想ＩＦの要素を取り出す。ただし、本実施の形態のＶＭパラメータ生成処理部４４３が要素を取り出す順番は、これに限られるわけでない。
【０１３２】
次にＶＭパラメータ生成処理部４４３は、取り出した仮想ＩＦの情報（本実施の形態では、情報として仮想ＩＦの識別子を使用して説明する）を取り出し、マッピング（mapping）関数を適用する（ステップ１２０３）。このマッピング関数については後ほど説明するが、マッピング関数は、所定の処理に基づき、所定の比率以下でしか重複が起きない値を求めることができる関数である。
【０１３３】
また、仮想ＩＦの識別子は、仮想ノード定義の各仮想ノードに定義されている仮想ＩＦを識別するため、一意に設定されている値である。つまり、仮想ＩＦの識別子は、仮想ＩＦを区別するための識別子であり、重複しない値が割り当てられている。なお、本実施の形態に係る仮想ＩＦの識別子は、一般的なデータでよく、文字列又は数字といったデータの型の制限も、データの長さの制限もない。
【０１３４】
なお、本実施の形態の説明では、一例として、仮想ＩＦの識別子に文字列を用いた場合について説明する。
【０１３５】
ＶＭパラメータ生成処理部４４３は、マッピング関数から戻ってきた値を、仮想ＮＩＣのＭＡＣアドレスの仮想ＩＦ識別部に代入する（ステップ１２０４）。
【０１３６】
続いて、ＶＭパラメータ生成処理部４４３は、設定するＭＡＣアドレスに汎用部があるかどうかを判定する（ステップ１２０５）。
【０１３７】
汎用部分がある場合（ステップ１２０５でyes）、ＶＭパラメータ生成処理部４４３は、汎用部を設定する（ステップ１２０６）。なお、既に説明したとおり、汎用部は、任意の用途に用いることができ、任意の値を設定してよいため、設定の詳細な説明は省略する。
【０１３８】
汎用部がない場合（ステップ１２０５でno）又は汎用部の設定後、ＶＭパラメータ生成処理部４４３は、一覧表に、生成したＭＡＣアドレスの仮想ＩＦ識別部と同じ仮想ＩＦ識別部を持つ作成済みのＭＡＣアドレスがあるかどうかを確認する（ステップ１２０７）。
【０１３９】
一致するＭＡＣアドレスが一覧表にない場合、作成したＭＡＣアドレスは、使用可能なＭＡＣアドレスである。そのため、一覧表にない場合（ステップ１２０７でyes）、ＶＭパラメータ生成処理部４４３は、求めたＭＡＣアドレスを仮想Ｍの作成で使用するために保持し、求めたＭＡＣアドレスをＭＡＣアドレスの一覧表への追加も行う（ステップ１２０８）。
【０１４０】
次に、ＶＭパラメータ生成処理部４４３は、仮想ＩＦのリストに、設定する仮想ＩＦが残っているかどうかを確認する（ステップ１２０９）。
【０１４１】
残りがある場合（ステップ１２０９でyes）、ＶＭパラメータ生成処理部４４３は、ステップ１２０２に戻り、残っている仮想ＩＦに対して同じ動作を繰り返す。
【０１４２】
残りがなかった場合（ステップ１２０９でno）、ＶＭパラメータ生成処理部４４３は、処理を終了する。この場合、ＶＭパラメータ生成処理部４４３は、図６に示すステップ１１０３の判定に戻る。なお、ステップ１１０３の判定結果は、「yes」となる。
【０１４３】
ＭＡＣアドレスが一覧表にあった場合（ステップ１２０７でno）、ＶＭパラメータ生成処理部４４３は、ＭＡＣアドレスの追加ができないと判断し（ステップ１２１０）、処理を終了する。この場合も、ＶＭパラメータ生成処理部４４３は、図６のステップ１１０３の判定に戻る。ただし、判定結果は、「no」となる。
【０１４４】
このような動作に基づき、ＶＭパラメータ生成処理部４４３は、仮想Ｍで使用するＭＡＣアドレスを生成する。
【０１４５】
次に、マッピング関数に関して、図面を参照して説明する。
【０１４６】
本実施の形態に係るマッピング関数は、仮想ＩＦの識別子を基に仮想ＩＦ識別部に設定するＭＡＣアドレスに使用する値を求める関数である。
【０１４７】
このマッピング関数は、次の条件を満足する関数であれば、どのような関数を使用しても良い。
【０１４８】
条件１：同じ識別子に対しては、同じ値を返す。
【０１４９】
条件２：異なる識別子では、十分小さな比率（確率）でしか重複が起きない。
【０１５０】
本実施の形態に係るマッピング関数は、上記の条件を満たす一例としてハッシュ関数、特にハッシュ関数の１つであるＳＨＡ５１２（Secure Hash Algorithm 512）を使用するものとして説明する。
【０１５１】
図９は、本実施の形態に係るマッピング関数の動作の一例を示すフローチャートである。
【０１５２】
識別子を受け取ったマッピング関数は、識別子にＳＨＡ５１２を適用してハッシュ値を求める（ステップ１３０１）。
【０１５３】
ここで、ＳＨＡ５１２が、マッピング関数の条件を満たすことを説明する。
【０１５４】
ハッシュ関数の内部の処理は、毎回同じ処理である。そのため、同じデータを入力したときの出力結果は、同じ値となる。つまり、ハッシュ関数は、上の条件１を満足する。
【０１５５】
次に、条件２について説明する。
【０１５６】
ハッシュ関数が一様な分布を示すハッシュ値を返す場合、ハッシュ関数の返り値の重複が発生する確率Ｐは、次の式となる。
【０１５７】
Ｐ＝１−（１−２＾（−Ｄ））＾（Ｎ−１）
（ただし、Ｎは仮想ＩＦ数、Ｄは仮想ＩＦ識別部のデータ幅である。）
例えば、仮想ＩＦの数を１００（＝Ｎ）、仮想ＩＦ識別部を２４ビット（＝Ｄ）とした場合、ハッシュ関数の返り値の重複が発生する確率Ｐは、Ｐ＝５．９＊１０＾（−６）（０．０００５９％）となる。このように本実施の形態に係るハッシュ関数は、小さな確率でして重複を発生させないため、条件２も満足している。
【０１５８】
次に、マッピング関数（ハッシュ関数）は、求めた関数値（ハッシュ値）の所定の位置から、仮想ＩＦ識別部の長さのデータ（本実施の形態の説明では３バイト）を取り出す（ステップ１３０２）。例えば、図１０に示すハッシュ値が求まった場合、本実施の形態のマッピング関数は、破線で囲った先頭の３バイトである「８１ｂｅ４ｂ」を取り出す。（図１０は、１６進表現である。Ｈなど１６進表現の表記は、省略している。）なお、取り出すデータは、連続している必要はない。例えば、マッピング関数は、１・３・５バイト目を取り出す、又は、２・４・８バイト目を取り出すなど、所定の規則を適用してデータを取り出してもよい。
【０１５９】
所定の長さのデータを取り出したマッピング関数は、取り出したデータを返却する（ステップ１３０３）。
【０１６０】
なお、本実施の形態に係るマッピング関数は、ＳＨＡ５１２に限られるわけではない。本実施の形態に係るマッピング関数は、既に説明したマッピング関数の条件を満たす関数であればよく、図９の動作と異なった動作でもよい。例えば、マッピング関数は、他のハッシュ関数であるＳＨＡ１（Secure Hash Algorithm 1）又はＭＤ５（Message Digest Algorithm 5）でもよく、巡回冗長検査関数であるＣＲＣ３２（cyclic redundancy check 32）でもよい。
【０１６１】
また、本実施の形態に係るマッピング関数は、これらの関数に限られるわけではなく、他の関数でも良い。さらに、本実施の形態に係るマッピング関数は、引数として仮想ＩＦの識別子を含んでいれば良く、他の情報、例えば仮想ノードの識別子を含んでも良い。
【０１６２】
また、本実施の形態に係るマッピング関数は、説明の便宜のため、物理ノード２１乃至物理ノード２６で同じマッピング関数を使用するとして、説明する。ただし、本実施の形態は、これに限られるわけではない。物理ノード２１乃至物理ノード２６は、既に説明した条件を備えた異なるマッピング関数を使用してもよい。
【０１６３】
このように動作するマッピング関数は、多くの場合、仮想ノードに定義された仮想ＩＦの識別子について、異なるデータを返却する。つまり、マッピング関数は、多くの場合、返り値の重複を回避することできる。
【０１６４】
しかし、小さな確率ではあるが、マッピング関数は、重複を発生する。
【０１６５】
次に、このような、マッピング関数での重複が発生した場合のネットワーク仮想化システム１の動作について説明する。
【０１６６】
ＶＭパラメータ生成処理部４４３が割当て不可の結果をＶＭ割当て結果応答処理部４４４に渡した場合（図６のステップ１１０７）、ＶＭ割当て結果応答処理部４４４は、物理ＮＩＣ４１を介して、ドメイン管理装置１１にリソースが確保できなかったことを回答する。
【０１６７】
この回答を受けたドメイン管理装置１１は、失敗応答（要求のリソースが確保できなかったこと）を設定端末３１に返す。
【０１６８】
本実施の形態に係る物理ノード２１は、仮想ＩＦの識別子を基にＭＡＣアドレスを求めている。そのため、重複の失敗応答の受け取った設定端末３１は、例えば、仮想ＩＦの識別子を変更し、再度、仮想ネットワークの割当てを要求すればよい。
【０１６９】
なお、マッピング関数は、物理ノード２１乃至物理ノード２６で予め決められている。そこで、ドメイン管理装置１１は、予め物理ノード２１乃至物理ノード２６のマッピング関数を受け取っておき、各物理ノードに設定を通知する前に、設定端末３１からの指示を基に、物理ノードでの確認と同様のＭＡＣアドレスの重複を確認しても良い。ドメイン管理装置１１の重複確認で重複の発生を検出した場合、ドメイン管理装置１１は、設定端末３１に失敗応答を返す。このようなドメイン管理装置１１の動作に基づき、ネットワーク仮想化システム１は、物理ノード２１乃至物理ノード２６での無駄な処理を軽減することができる。
【０１７０】
ただし、既に説明したとおり、マッピング関数の返り値の重複が発生する確率は、十分に小さいため、重複回避の動作の発生も、十分に小さい確率でしか発生しない。そのため、物理ノード２１乃至物理ノード２６で重複判定を行っても、物理ノード２１乃至物理ノード２６で発生する無駄な処理は、十分小さな確率でしか起きない。
【０１７１】
なお、本実施の形態の各部で使用するデータの形式は、既に説明したとおり、特に制限はないが、参考として、次に幾つかのデータの例を示す。
【０１７２】
図１１は、ＶＭパラメータ生成処理部４４３が作成する仮想Ｍの起動パラメータの一例である。
【０１７３】
起動パラメータは、通知先の仮想化制御プログラム４５１に依存するため、図１１に示す起動パラメータも一例として示しており、起動パラメータは、ここに記載の内容に限られるわけではない。
【０１７４】
図１１の点線の枠で囲った部分が、仮想マシンに定義された仮想ＮＩＣ定義１５１及び仮想ＮＩＣ定義１５２である。ここに示す例において、ＭＡＣアドレスは、「nic,macaddr」で指定されている。例えば、仮想ＮＩＣ定義１５１では、「nic,macaddr=db:20:98:81:be:4b」と設定されている。その他の起動パラメータは、既に説明したとおり仮想化制御プログラム４５１に依存するため、詳細な説明は省略する。
【０１７５】
図１２は、ＶＭ割当て結果応答処理部４４４がドメイン管理装置１１に返却する仮想ネットワーク２の割当て結果の一例を示す図である。
【０１７６】
図１２の点線で囲まれた部分が、仮想ノードの割当て結果である。
【０１７７】
図１２に示す割当て結果は、ドメイン管理装置１１に応答するために必要な情報を備えていれば良く、一般的な割当て結果を示しており、その他の情報の詳細な説明は省略する。
【０１７８】
図１３は、図１２の点線で囲まれた部分、つまり仮想ノードの割当て結果の一例である。
【０１７９】
図１３の結果を図１９に示す結果と比較すると、図１３に示す割当て結果は、図１９の仮想インタフェース情報１４２及び仮想インタフェース情報１４３に相当する仮想ＩＦの情報を含んでいない。
【０１８０】
このような動作に基づき、物理ノード２１は、仮想ノードへの仮想マシンに物理リソースの割当てを処理する。
【０１８１】
また、このような動作に基づき、物理ノード２１を含む本実施の形態に係るネットワーク仮想化システム１は、仮想ネットワーク２又は仮想ネットワーク３に物理ネットワークのリソースの割り当てることができる。
【０１８２】
なお、本実施の形態では詳細な説明を行わなかったが、ドメイン管理装置１１は、仮想リンクについても同様に物理ノード２１乃至物理ノード２６に指示を行い、リソースを確保する。
【０１８３】
次に、このように仮想ネットワーク２の割当てが行われた場合における、仮想ＭのＯＳ上で動作するＡＰプログラム４６１が、仮想ＩＦに対応する仮想ＮＩＣを判定する動作について説明する。なお、仮想ＮＩＣの判定の動作は、他のＡＰプログラム４６２も、ＡＰプログラム４６１と同様に動作するため、ＡＰプログラム４６２についての説明は、省略する。
【０１８４】
図１４は、ＡＰプログラム４６１が、仮想ＮＩＣを判別する動作の一例を示すフローチャート図である。
【０１８５】
なお、ＡＰプログラム４６１は、図１４に示す仮想ＮＩＣの判定を行うため、ノード管理プログラム４４０の設定結果をまとめた、仮想ＮＩＣのデバイス名（名前）とＭＡＣアドレスを含む仮想ＮＩＣの一覧表を入手することが必要である。
【０１８６】
仮想ＮＩＣの一覧表の入手として、物理ノード２１は、いろいろな方法を使用することが出来る。例えば、物理ノード２１は、仮想化制御プログラム４５１が、ＡＰプログラム４６１が起動するとき、プログラム内データとして、関係する仮想ＮＩＣの一覧表を埋め込んでもよい。また、物理ノード２１は、ＡＰプログラム４６１が動作している仮想ＭのＯＳのネットワーク設定コマンドで一覧表を入手できるようにしてもよい。さらに、物理ノード２１は、仮想ネットワークを経由してネットワークを管理している装置（例えばドメイン管理装置１１）から一覧表を取得できるようにしてもよい。
【０１８７】
このようにＡＰプログラム４６１は、物理ノード２１又はネットワーク仮想化システム１が備えるいろいろな手法を使用して仮想ＮＩＣの一覧表を入手できる。そのため、本実施の形態の説明では、仮想ＮＩＣの一覧表の入手の詳細な説明は、省略し、入手済みとして説明する。
【０１８８】
また、ＡＰプログラム４６１は、仮想ＮＩＣを判定するために、既に説明したマッピング関数を使用する。ただし、ＡＰプログラム４６１は、仮想Ｍ上で動作しているため、そのままでは、ＶＭパラメータ生成処理部４４３が使用したマッピング関数が使用できない。
【０１８９】
そこで、本実施の形態に係る物理ノード２１は、ＡＰプログラム４６１がマッピング関数を使用できるような環境も備えている。
【０１９０】
物理ノード２１は、このマッピング関数を使用できる環境の設定も、いろいろな手法で実現可能である。例えば、物理ノード２１は、仮想化制御プログラム４５１が、仮想Ｍ上で動作するＯＳのＡＰＩ（Application Program Interface）の１つにマッピング関数を割り当てても良い。また、例えば、ドメイン管理装置１１がマッピング関数を保持している場合、ＡＰプログラム４６１が、ドメイン管理装置１１からマッピング関数を取り出せるようにしてもよい。
【０１９１】
このように、ＡＰプログラム４６１は、いろいろな手法を使用してマッピング関数を使用することができるため、本実施の形態の説明では、マッピング関数を使用できる仕組みの詳細な説明も、省略する。
【０１９２】
ＡＰプログラム４６１は、まず、着目している仮想ＩＦに対応する仮想ＮＩＣのＭＡＣアドレスの仮想ＩＦ識別部の値（以下この値をＲと言う）を、仮想ＩＦの識別子（名前）にマッピング関数を適用して求める（ステップ１４０１）。
【０１９３】
次に、ＡＰプログラム４６１は、仮想ＮＩＣの一覧表を取得する（ステップ１４０２）。
【０１９４】
一覧表を取得したＡＰプログラム４６１は、一覧表にデータがある、つまり、残りのエントリ（entry：登録）があるかどうかを判定する（ステップ１４０３）。
【０１９５】
残りのエントリがある場合（ステップ１４０３でyes）、ＡＰプログラム４６１は、一覧表から１つのエントリを取り出す（ステップ１４０４）。本実施例のＡＰプログラム４６１は、一覧表の先頭から順に取り出すが、取り出す順番これに限らず、他の順番でもよい。
【０１９６】
エントリを取り出したＡＰプログラム４６１は、取り出した仮想ＮＩＣのＭＡＣアドレスの値を得る（ステップ１４０５）。
【０１９７】
続いてＡＰプログラム４６１は、取り出しＭＡＣアドレスの仮想ＩＦ識別部の値（以下、この値をＱと言う）を取り出す（ステップ１４０６）。
【０１９８】
次に、ＡＰプログラム４６１は、着目している仮想ＮＩＣの仮想ＩＦ識別部（Ｒ）と取り出したエントリの仮想ＮＩＣの仮想ＩＦ識別部（Ｑ）とを比較する（ステップ１４０７）。
【０１９９】
ＲとＱが異なった場合（ステップ１４０７でno）、ＡＰプログラム４６１は、一覧表に残りのエントリがあるかどうかの確認（ステップ１４０３）に戻り動作を続ける。
【０２００】
ＲとＱが一致した場合（ステップ１４０７でyes）、取り出したエントリの仮想ＮＩＣが、着目している仮想ＩＦに対応する仮想ＮＩＣとなる。従って、ＡＰプログラム４６１は、取り出したエントリの仮想ＮＩＣが、着目している仮想ＩＦであると判定する（ステップ１４０８）。
【０２０１】
そして、ＡＰプログラム４６１は、判定した仮想ＮＩＣのデータからデバイス名（名前）を求めることが出来る。
【０２０２】
このようにＡＰプログラム４６１は、着目している仮想ＩＦに対応するデバイス名を判定し、判定動作を終了する。
【０２０３】
なお、リストの全てのエントリを確認しても着目した仮想ＩＦに対応する仮想ＮＩＣを検出できなかった場合（ステップ１４０３でno）、着目している仮想ＩＦに対応する仮想ＮＩＣが、ないこととなる。そのため、ＡＰプログラム４６１は、着目している仮想ＩＦが不在と判定して動作を終了する（ステップ１４０９）。
【０２０４】
なお、ここまで説明してきた仮想ＮＩＣの判定は、ＡＰプログラム４６１ではなく、仮想Ｍ上のＯＳ又は別のプログラムが動作し、ＡＰプログラム４６１が結果を受け取るようにしてもよい。
【０２０５】
このように動作に基づき、本実施形態のＡＰプログラム４６１は、着目している仮想ＩＦの仮想ＮＩＣのデバイス名を得ることができる。
【０２０６】
なお、ネットワーク仮想化システム１は、複数の構成、例えば物理ノード２１乃至物理ノード２６のいずれか又は全てと、ドメイン管理装置１１とを同じ装置で実現しても良い。
【０２０７】
さらに、本実施の形態に係るネットワーク仮想化システム１は、１つ又は複数の装置を、１つのコンピュータで動作するプログラムとして実現しても良い。例えば、ネットワーク仮想化システム１は、ドメイン管理装置１１として動作するプログラムと、物理ノード２１として動作するプログラムとを１つのコンピュータで実行しても良い。
【０２０８】
さらに、本実施の形態に係るネットワーク仮想化システム１の各装置、又は、各構成は、コンピュータで実行するプログラムを記憶する記録媒体を含んでも良い。
【０２０９】
反対に、本実施の形態に係るネットワーク仮想化システム１は、１つの構成を複数の装置で実現しても良い。例えば、ドメイン管理装置１１は、複数のコンピュータで構成されたクラスタシステムとして実現しても良い。
【０２１０】
このように第１の実施の形態に係るネットワーク仮想化システム１の仮想Ｍで動作するＡＰプログラム４６１は、仮想ネットワークの割当て結果の通知を受けなくても、デバイス名を把握できる効果を得ることができる。
【０２１１】
その理由は、第１の実施の形態に係るネットワーク仮想化システム１は、仮想ＩＦを基に仮想ＮＩＣのＭＡＣアドレスを設定する。そのため、ＡＰプログラム４６１は、通知を受けなくても、マッピング関数を用いて、着目した仮想ＩＦの仮想ＮＩＣのデバイス名を得ることができるためである。
【０２１２】
また、第１の実施の形態に係るネットワーク仮想化システム１は、物理ノード２１がＮＩＣの名前に対応していないオペレーティングシステムを使用できる効果を得ることができる。
【０２１３】
その理由は、第１の実施の形態に係るネットワーク仮想化システム１が、仮想ＩＦを基に仮想ＮＩＣのＭＡＣアドレスを設定するため、ＡＰプログラム４６１は、マッピング関数を用いて、着目した仮想ＩＦの仮想ＮＩＣのデバイス名を得ることができる。つまり、物理ノード２１は、ＡＰプログラム４６１通知の必要が無いため、オペレーティングシステムに対応する必要がないためである。
【０２１４】
さらに、第１の実施の形態に係るネットワーク仮想化システム１は、仮想Ｍを起動しなくても、仮想ＩＦと仮想ＮＩＣの対応関係を知る効果を得ることができる。
【０２１５】
その理由は、第１の実施の形態に係る物理ノード２１は、仮想ＩＦの識別子からＭＡＣアドレスを求めるため、仮想Ｍの起動に関係なく、割当て結果を報告することができるためである。
【０２１６】
また、第１の実施の形態に係るネットワーク仮想化システム１は、割当て結果を受けるまでの待ち時間も短くする効果を得ることもできる。
【０２１７】
その理由は、第１の実施の形態に係る物理ノード２１は、仮想Ｍの起動を待たずに、割当て結果を報告することができるためである。
【０２１８】
さらに、第１の実施の形態に係るネットワーク仮想化システム１は、仮想ネットワークの作成の予約及び予め仮想ネットワークの確保の確認を行える効果を得ることができる。
【０２１９】
その理由は、第１の実施の形態に係る物理ノード２１は、仮想Ｍを起動しなくても、設定を行えるためである。
【０２２０】
（第１の実施例）
次に、本発明における第１の実施例について図面を参照して説明する。
【０２２１】
なお、第１の実施例に係るネットワーク仮想化システム１の構成及び動作は、第１の実施の形態に係る構成及び動作と同等である。そのため、第１の実施の形態と同等の構成及び動作の詳細な説明は、適宜省略し、第１の実施例に特有な構成及び動作を中心に説明する。
【０２２２】
まず、本実施例の前提について整理しておく。
【０２２３】
本実施例の仮想ネットワークの定義は、図１８で示した定義とする。また、本実施例の仮想ノードの定義は、図１８の二つある定義のうち、上の仮想ノードの定義（Node-A）とする。
【０２２４】
対象の物理ノードは、図４に示す物理ノード２１とする。つまり、ドメイン管理装置１１が、図１８で示された仮想ネットワークの定義を基に、「Node-A」のリソースを物理ノード２１で確保すると決定し、図１５で示す仮想ノードの定義を物理ノード２１に渡すとする。なお、図１５で示す「Node-A」は、２つの仮想ＩＦ（VIF-A0又はVIF-A1）が指定されている。
【０２２５】
また、「VIF-A0」の仮想ＩＦ識別子のハッシュ結果は、図１０に示したデータを使用する。
【０２２６】
ＭＡＣアドレスの仮想ＩＦ識別部は、図７に示すように下位の３バイトする。
【０２２７】
また、仮想Ｍを起動するための起動パラメータは、図１１に示すリストを使用することとする。
【０２２８】
なお、仮想ネットワークの割当て結果は、図１２に示す値とする。
【０２２９】
また、本実施例の説明では、仮想ネットワークのリソースは確保できたとする。
【０２３０】
次に、本実施例に係るネットワーク仮想化システム１の動作を説明する。
【０２３１】
設定端末３１から仮想ネットワーク２の設定（図１８）を依頼されたドメイン管理装置１１は、依頼された仮想化ネットワークの定義を確認し、物理ノード２１で仮想化ノードと仮想化リンクのリソースを確保すると決定する。
【０２３２】
ドメイン管理装置１１は、リソースを確保するために、物理ノード２１に、仮想ノードの定義（図１５）を送信する。
【０２３３】
物理ノード２１のノード管理プログラム４４０は、物理ＮＩＣ４１を介して、仮想ノードの定義（図１５）を受け取り、リソースを確保し、仮想ネットワークの割当て結果（図１２）を、物理ＮＩＣ４１を介してドメイン管理装置１１に返却する。
【０２３４】
物理ノード２１のノード管理プログラム４４０の動作をさらに詳細に説明する。
【０２３５】
仮想ノード定義解釈処理部４４１は、物理ＮＩＣ４１を介して受け取った仮想ノードの定義を、ノード管理プログラム４４０で使用する内部表現に変換後、リソース割当て処理部４４２に渡す。
【０２３６】
リソース割当て処理部４４２は、受け取った仮想ノードの定義を基に確保できた物理ノード２１の物理リソースの量を、ＶＭパラメータ生成処理部４４３に渡す。
【０２３７】
ＶＭパラメータ生成処理部４４３は、仮想Ｍの仮想ＮＩＣに割り当てるＭＡＣアドレスの決定と、仮想Ｍの起動のための起動パラメータとを生成する。
【０２３８】
このＭＡＣアドレスを決定する動作を説明すると、次のようなる。
【０２３９】
まず、ＶＭパラメータ生成処理部４４３は、受け取った仮想ノード定義に含まれる仮想ＩＦの識別子（VIF-A0）にマッピング関数（ここではハッシュ関数）を適用し、図１０に示すハッシュ値の最初の３バイトを得る。
【０２４０】
ＶＭパラメータ生成処理部４４３は、得た３バイトのデータ（８１ｂｅ４ｂ）を、ＭＡＣアドレスの下位３バイトを設定する。その結果、仮想ＮＩＣのＭＡＣアドレスは、次のようになる。
【０２４１】
ＭＡＣアドレス＝ｘｘ：ｘｘ：ｘｘ：８１：ｂｅ：４ｂ
（ｘｘは、未定を示す。なお数値は、１６進で表示している。）
続いて、ＶＭパラメータ生成処理部４４３は、ＭＡＣアドレスの汎用部に所定のアドレスを設定する。
【０２４２】
汎用部分の値の決定方法の一例として、本実施例のＶＭパラメータ生成処理部４４３は、ネットワーク仮想化システム１内において物理ノードを識別する番号と、物理ノードにおいて仮想ノードに割り当てた仮想Ｍを識別する番号を連結した値を使用する。
【０２４３】
例えば、物理ノード２１の識別番号が“ｄｂ２０”で、仮想Ｍの識別番号が“９８”とすると、ＶＭパラメータ生成処理部４４３は、この２つの値を連結し、ＭＡＣアドレスの汎用部分の値に「ｄｂ：２０：９８」を設定する。
【０２４４】
この結果、仮想ＮＩＣのＭＡＣアドレスは、「ｄｂ：２０：９８：８１：ｂｅ：４ｂ」となる。
【０２４５】
このように、ＶＭパラメータ生成処理部４４３は、仮想ＮＩＣ（今の場合VIF-A0）のＭＡＣアドレスを生成する。
【０２４６】
同様に、ＶＭパラメータ生成処理部４４３は、仮想ノードで指定されている全ての仮想ＮＩＣ（例えば今の場合VIF-A1）のＭＡＣアドレスを生成する。
【０２４７】
次に、ＶＭパラメータ生成処理部４４３は、仮想化制御プログラム４５１で仮想Ｍを起動するための起動パラメータ（図１１）を生成する。
【０２４８】
図１１で示す仮想ＮＩＣ定義１５１が、仮想ＩＦ「ＶＩＦ−Ａ０」に対応する仮想ＮＩＣの定義である。仮想ＮＩＣ定義１５１のＭＡＣアドレスは、既に説明した「ｄｂ：２０：９８：８１：ｂｅ：４ｂ」となっている。
【０２４９】
ＶＭパラメータ生成処理部４４３は、生成した起動パラメータを基に、仮想化制御プログラム４５１に仮想Ｍの起動を指示する。
【０２５０】
ＶＭパラメータ生成処理部４４３は、指示の後、仮想ノードの割当て結果（図１２）をＶＭ割当て結果応答処理部４４４に通知する。
【０２５１】
ＶＭ割当て結果応答処理部４４４は、物理ＮＩＣ４１を介して、仮想ネットワーク割当て結果（図１２)を、ドメイン管理装置１１に返却する。
【０２５２】
ドメイン管理装置１１は、物理ノード２１から仮想ネットワーク割当て結果（図１２）を受け取る。
【０２５３】
ドメイン管理装置１１は、依頼された全ての仮想ネットワークに関して同様にリソースを確保する。
【０２５４】
設定端末３１から依頼された全ての仮想化ネットワークの設定が完了すると、ドメイン管理装置１１は、設定端末３１に仮想ネットワーク割当て結果を通知する。
【０２５５】
続いて、このように仮想ネットワークの割当てが行われた場合における、仮想Ｍ内のＯＳ上で動作するＡＰプログラム４６１が、仮想ＮＩＣを判定する動作について説明する。なお、第１の実施に形態と同様に、本実施例ＡＰプログラム４６１とＡＰプログラム４６２に差異はなく、ＡＰプログラム４６２も、同様に動作する。
【０２５６】
本実施例の説明では、図１６に示す仮想ノード（Node-A）の仮想ＮＩＣについて説明する。図１６に示す仮想ノード(Node-A)は、２つの仮想ＮＩＣ(VIF-A0とVIF-A1)を備えている。
【０２５７】
続いて、ＡＰプログラム４６１の動作を図１４に沿って説明する。
【０２５８】
なお、ＡＰプログラム４６１は、既に説明したとおり、第１の実施の形態と同様に、図１６に示す仮想ＮＩＣのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表を入手しており、また、マッピング関数も使用することができるものとする。
【０２５９】
ＡＰプログラム４６１は、まず、着目している仮想ＩＦ（ここではVIF-A0とする）に対応する仮想ＮＩＣのＭＡＣアドレスの仮想ＩＦ識別部の値（Ｒ）を求める（ステップ１４０１）。ＡＰプログラム４６１は、仮想ＩＦ識別部の値（Ｒ）を求める動作として、既に説明したマッピング関数を使用する。マッピング関数については、既に説明を行っているため、詳細な説明は省略する。
【０２６０】
ＡＰプログラム４６１は、仮想ＩＦの識別子（ここではVIF-A0）にマッピング関数を適用して、仮想ＩＦ識別部（ここではＲ＝８１：ｂｅ：４ｂ）のデータを得る（図１０）。
【０２６１】
次に、ＡＰプログラム４６１は、仮想ＮＩＣの一覧表を取得する（ステップ１４０２）。この仮想ＮＩＣの一覧表は、仮想ＮＩＣのデバイス名が含む。例えば、図１６に示す仮想ノード（Node-A）は、仮想ＮＩＣのリストのデバイス名として「eth0」と「eth1」を含む。
【０２６２】
一覧表を取得したＡＰプログラム４６１は、一覧表にデータがある、つまり、残りのエントリがあるかどうかを判定する（ステップ１４０３）。
【０２６３】
残りのエントリがある場合（ステップ１４０３でyes）、ＡＰプログラム４６１は、一覧表から１つのエントリを取り出す（ステップ１４０４）。本実施例のＡＰプログラム４６１も、リストの先頭から順に取り出すが、取り出す順番これに限らず、他の順番でもよい。
【０２６４】
なお、本実施例の説明では、仮想ＮＩＣの一覧表のデータは、図１６に示す順、つまり、VIF-A1、VIF-A0の順にエントリが並んでいるとして説明する。
【０２６５】
エントリを取り出したＡＰプログラム４６１は、取り出した仮想ＮＩＣのＭＡＣアドレスの値を得る（ステップ１４０５）。本実施例では、まず、ＭＡＣアドレスとして「ｄｂ：２０：９８：ｃｄ：０９：１ａ」が取り出される。
【０２６６】
続いてＡＰプログラム４６１は、取り出したＭＡＣアドレスの仮想ＩＦ識別部の値（以下、Ｑと言う）を取り出す（ステップ１４０６）。ここでは、仮想ＩＦ識別部の値は、Ｑ＝ｃｄ：０９：１ａとなる。
【０２６７】
次に、ＡＰプログラム４６１は、取り出したエントリの仮想ＮＩＣの仮想識別部の値（Ｑ）を、着目している仮想ＩＦの仮想ＩＦ識別部の値（Ｒ）と比較する（ステップ１４０７）。
【０２６８】
今の場合、Ｒ（８１：ｂｅ：４ｂ）とＱ（ｃｄ：０９：１ａ）とは、異なる。
【０２６９】
ＲとＱが異なった場合（ステップ１４０７でno）、ＡＰプログラム４６１は、一覧表に残りのエントリがあるかどうかの確認（ステップ１４０３）に戻り動作を続ける。
【０２７０】
今の場合、次のエントリがあるため、ＡＰプログラム４６１は、エントリがあると判定する（ステップ１４０３でyes）。
【０２７１】
そしてＡＰプログラム４６１は、次の仮想ＮＩＣにエントリを取り出し（ステップ１４０４）、エントリのＭＡＣアドレスを取り出す（ステップ１４０５）。今度の場合、ＭＡＣアドレスは、「ｄｂ：２０：９８：８１：ｂｅ：４ｂ」となる。
【０２７２】
続いてＡＰプログラム４６１は、ＭＡＣアドレスの仮想ＩＦ識別部（Ｑ）を取り出す（ステップ１４０６）。今度の場合、仮想ＩＦ識別部の値は、Ｑ＝８１：ｂｅ：４ｂとなる。
【０２７３】
そして、ＡＰプログラム４６１は、ＲとＱを比較する（ステップ１４０７）。
【０２７４】
今回はＲとＱが同じとなるため（ステップ１４０７でyes）、ＡＰプログラム４６１は、現在取り出したエントリの仮想ＮＩＣが、着目している仮想ＩＦに対応する仮想ＮＩＣであると判定する（ステップ１４０８）。
【０２７５】
そして、ＡＰプログラム４６１は、判定した仮想ＮＩＣのデータからデバイス名（ここでは、eth1）を求めることが出来る。
【０２７６】
このようにＡＰプログラム４６１は、着目している仮想ＮＩＣを判定し、動作を終了する。
【０２７７】
なお、一覧表の全てのエントリを確認しても着目した仮想ＮＩＣを検出できなかった場合（ステップ１４０３でno）、着目している仮想ＮＩＣが、不在である。そのため、ＡＰプログラム４６１は、着目している仮想ＮＩＣが不在と判定して動作を終了する。
【０２７８】
このように第１の実施例に係るネットワーク仮想化システム１も、第１の実施の形態と同様の効果を得ることが出来る。
【０２７９】
その理由は、第１の実施例に係るネットワーク仮想化システム１は、仮想ＩＦを基に仮想ＮＩＣのＭＡＣアドレスを決めている。そのため、ＡＰプログラム４６１は、マッピング関数を用いて、着目した仮想ＩＦの仮想ＮＩＣのデバイス名を得ることができるためである。
【０２８０】
さらに、第１の実施例に係る物理ノード２１は、仮想ＩＦの識別子からＭＡＣアドレスを求めるため、仮想Ｍの起動を待たずに、割当て結果を報告することができるためである。
【０２８１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０２８２】
（付記）
（付記１）
ネットワークを構成する物理ノードと、
前記物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定を指示するドメイン管理装置とを備え、
前記物理ノードが、前記ドメイン管理装置からの指示に含まれる前記仮想ノードの定義の仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を決めること
を特徴とするネットワーク仮想化システム。
（付記２）
前記ＭＡＣアドレスに設定する値の少なくとも一部は、前記仮想インタフェースを識別する情報にマッピング関数を適用した値の少なくとも一部を使用することを特徴とする付記１に記載のネットワーク仮想化システム。
（付記３）
前記マッピング関数が、ハッシュ関数、巡回冗長検査関数、又は、同じ識別する情報には同じ値を返し異なる識別する情報には所定の確率以下でしか同じ値を返さない関数であることを特徴とする付記２に記載のネットワーク仮想化システム。
（付記４）
前記仮想マシンで動作するプログラムが、
前記仮想インタフェースを識別する情報に前記マッピング関数を適用して求めた値と、
前記仮想インタフェースのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表と
を基に前記仮想インタフェースのデバイス名を求めること
を特徴とする付記２乃至付記３のいずれかに記載のネットワーク仮想化システム。
（付記５）
前記ドメイン管理装置が、前記物理ノードに指示を出す前に、前記仮想ノードの設定を基に、前記仮想ノードを割り当てる仮想マシンの仮想ＮＩＣのＭＡＣアドレスの重複確認することを特徴とする付記１乃至付記４のいずれかに記載のネットワーク仮想化システム。
（付記６）
仮想ネットワークの仮想ノードと仮想リンクとの設定の指示を受ける仮想ノード定義解釈部と、
前記仮想ノード定義解釈部の結果を受け仮想ネットワークに割り当てるリソースを確認するリソース割当て部と、
前記設定の指示と前記仮想ネットワークに割り当てるリソースとを基に仮想マシンの起動パラメータを生成し、前記起動パラメータで仮想マシンの起動を依頼する仮想マシンパラメータ生成処理部とを備え、
前記仮想マシンパラメータ生成処理部が、前記設定の指示に含まれる仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を求めること
を特徴とするノード。
（付記７）
前記ＭＡＣアドレスに設定する値の少なくとも一部は、前記仮想インタフェースを識別する情報にマッピング関数を適用した値の少なくとも一部を使用することを特徴とする付記６に記載のノード。
（付記８）
前記マッピング関数が、ハッシュ関数、巡回冗長検査関数、又は、同じ識別する情報には同じ値を返し異なる識別する情報には所定の確率以下でしか同じ値を返さない関数であることを特徴とする付記７に記載のノード。
（付記９）
前記仮想マシンで動作するプログラムが、
前記仮想インタフェースを識別する情報に前記マッピング関数を適用して求めた値と、
前記仮想インタフェースのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表と
を基に前記仮想インタフェースのデバイス名を求めること
を特徴とする付記６乃至付記８にいずれかに記載のノード。
（付記１０）
物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定の指示し、
前記指示に含まれる仮想インタフェースの識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部を設定する値を求めること
を特徴とするネットワーク仮想化方法。
（付記１１）
前記ＭＡＣアドレスに設定する値の少なくとも一部は、前記仮想インタフェースを識別する情報にマッピング関数を適用した値の少なくとも一部を使用することを特徴とする付記１０に記載のネットワーク仮想化方法。
（付記１２）
前記マッピング関数が、ハッシュ関数、巡回冗長検査関数、又は、同じ識別する情報には同じ値を返し異なる識別する情報には所定の確率以下でしか同じ値を返さない関数であることを特徴とする付記１１に記載のネットワーク仮想化方法。
（付記１３）
前記仮想インタフェースを識別する情報に前記マッピング関数を適用して求めた値と、
前記仮想インタフェースのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表と
を基に前記仮想インタフェースのデバイス名を求めること
を特徴とする付記１１乃至付記１２のいずれかに記載のネットワーク仮想化方法。
（付記１４）
前記設定の指示を出す前に、前記仮想ノードの定義を基に、前記仮想ノードに割り当てる仮想マシンの仮想ＮＩＣのＭＡＣアドレスの重複確認することを特徴とする付記１０乃至付記１３のいずれかに記載のネットワーク仮想化方法。
（付記１５）
物理ノードに仮想ネットワークの仮想ノードと仮想リンクとの設定の指示する処理と、
前記指示に含まれる仮想インタフェースを識別する情報を基に、前記仮想インタフェースに対して、前記仮想ノード上の仮想マシンの仮想ネットワークインタフェース回路（ＮＩＣ）に割り当てるＭＡＣアドレスの少なくとも一部又は全部に設定する値を求める処理を
コンピュータに実行させることを特徴とするネットワーク仮想化プログラム。
（付記１６）
前記ＭＡＣアドレスの設定する値の少なくとも一部は、前記仮想インタフェースを識別する情報にマッピング関数を適用した値の少なくとも一部を使用することを特徴とする付記１５に記載のネットワーク仮想化プログラム。
（付記１７）
前記マッピング関数が、ハッシュ関数、巡回冗長検査関数、又は、同じ識別する情報には同じ値を返し異なる識別する情報には所定の確率以下で同じ値を返す関数であることを特徴とする付記１６に記載のネットワーク仮想化プログラム。
（付記１８）
前記仮想インタフェースを識別する情報に前記マッピング関数を適用して求めた値と、
前記仮想インタフェースのデバイス名とＭＡＣアドレスを含む仮想ＮＩＣの一覧表と
を基に前記仮想インタフェースのデバイス名を求める処理
を特徴とする付記１６乃至付記１７のいずれかに記載のネットワーク仮想化プログラム。
（付記１９）
前記設定の指示を出す前に、前記仮想ノードの定義を基に、前記仮想ノードに割り当てる仮想マシンの仮想ＮＩＣのＭＡＣアドレスの重複確認処理することを特徴とする付記１５乃至付記１８のいずれかに記載のネットワーク仮想化プログラム。
【符号の説明】
【０２８３】
１    ネットワーク仮想化システム
２    仮想ネットワーク
３    仮想ネットワーク
４    ネットワークシステム
１１    ドメイン管理装置
２１    物理ノード
２２    物理ノード
２３    物理ノード
２４    物理ノード
２５    物理ノード
２６    物理ノード
３１    設定端末
４１    物理ＮＩＣ
４２    物理ＮＩＣ
４３    演算装置
４４    メモリ
５１    物理リンク
６１    設定経路
７１    仮想ノード
７２    仮想ノード
７３    仮想ノード
８１    仮想リンク
８２    仮想リンク
８３    仮想リンク
９１    ネットワーク仮想化システム
９２    物理ノード
９３    物理リンク
９４    ドメイン管理装置
９５    仮想ネットワーク
９６    仮想ノード
９７    仮想リンク
９８    設定端末
９９    通信路
１４１    仮想ノード識別子
１４２    仮想インタフェース情報
１４３    仮想インタフェース情報
１５１    仮想ＮＩＣ定義
１５２    仮想ＮＩＣ定義
４４０    ノード管理プログラム
４４１    仮想ノード定義解釈処理部
４４２    リソース割当て処理部
４４３    ＶＭパラメータ生成処理部
４４４    割当て結果応答処理部
４５１    仮想化制御プログラム
４６１    ＡＰプログラム
４６２    ＡＰプログラム
【図１】
0005609527.tif 000002
【図２】
0005609527.tif 000003
【図３】
0005609527.tif 000004
【図４】
0005609527.tif 000005
【図５】
0005609527.tif 000006
【図６】
0005609527.tif 000007
【図７】
0005609527.tif 000008
【図８】
0005609527.tif 000009
【図９】
0005609527.tif 000010
【図１０】
0005609527.tif 000011
【図１１】
0005609527.tif 000012
【図１２】
0005609527.tif 000013
【図１３】
0005609527.tif 000014
【図１４】
0005609527.tif 000015
【図１５】
0005609527.tif 000016
【図１６】
0005609527.tif 000017
【図１７】
0005609527.tif 000018
【図１８】
0005609527.tif 000019
【図１９】
0005609527.tif 000020