(57)【要約】【課題】ネットワーク内のスイッチの学習不可を防止し、検索効率を向上できるＭＡＣアドレスを仮想マシンに割り当てることができる。【解決手段】業務ネットワーク内の複数の物理マシン１０１内の仮想マシンに割り当てるＭＡＣアドレスを管理する管理サーバ１１０は、業務ネットワークの情報と業務ネットワーク内のスイッチ１０５の情報を用いて、スイッチ１０５の学習テーブルと同じ学習数のテーブル列数を有し、ＭＡＣアドレスの割り当てを行うための割り当て計画テーブル２１０を作成する。また、ＭＡＣアドレスをスイッチ１０５のハッシュ関数を用いて、割り当て計画テーブル２１０の該当するハッシュ値のテーブル列に走査方向Ａに所定の順序を有して登録する。そして、テーブル列数の範囲内に登録されたＭＡＣアドレスを走査方向Ａに所定の順序を有して読み出し、仮想マシンに割り当てる。【選択図】図２
2014195174.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク内の複数の仮想マシンに割り当てるＭＡＣアドレスを管理する仮想マシン管理装置において、
前記ネットワークの情報と前記ネットワーク内のスイッチの情報を用いて、前記スイッチの学習テーブルと同じ学習数のテーブル列数を有し、前記ＭＡＣアドレスの割り当てを行うための割り当て計画テーブルを作成する作成手段と、
前記ＭＡＣアドレスを前記スイッチのハッシュ関数を用いて、前記割り当て計画テーブルの該当するハッシュ値のテーブル列に所定の順序を有して登録する登録手段と、
前記テーブル列数の範囲内に登録されたＭＡＣアドレスを所定の順序を有して読み出し、前記仮想マシンに割り当てる割り当て手段と、
を有することを特徴とする仮想マシン管理装置。
【請求項２】
前記登録手段は、
前記ＭＡＣアドレスが前記割り当て計画テーブルが有するハッシュ値に対するテーブル列数を超える場合、前記割り当て計画テーブルに前記ＭＡＣアドレスを登録しないことを特徴とする請求項１に記載の仮想マシン管理装置。
【請求項３】
前記作成手段は、
前記スイッチの情報として、前記ハッシュ関数の情報と、前記学習数と、前記ハッシュ値のビット数、および前記テーブル列数とを収集し、前記割り当て計画テーブルを、前記ハッシュ関数の情報と、前記学習数と、前記ハッシュ値のビット数、および前記テーブル列数に基づくテーブルサイズを有して作成することを特徴とする請求項１または２に記載の仮想マシン管理装置。
【請求項４】
前記登録手段は、
前記スイッチの前記ＭＡＣアドレスの検索時の走査方向に一致する所定の順序を有して前記ＭＡＣアドレスを登録することを特徴とする請求項１〜３のいずれか一つに記載の仮想マシン管理装置。
【請求項５】
前記割り当て手段は、
前記割り当て計画テーブルの各ＭＡＣアドレス毎に、前記仮想マシンに対する割り当ての有無を保持し、
前記スイッチの前記ＭＡＣアドレスの検索時の走査方向に一致する所定の順序を有して未割り当て状態のＭＡＣアドレスを、割り当て要求された前記仮想マシンに割り当てることを特徴とする請求項１〜４のいずれか一つに記載の仮想マシン管理装置。
【請求項６】
前記ＭＡＣアドレスが前記割り当て計画テーブルに登録されていない場合、当該ＭＡＣアドレスの割り当て要求が行えないことを外部に通知する通知手段を有することを特徴とする請求項１〜５のいずれか一つに記載の仮想マシン管理装置。
【請求項７】
前記作成手段は、
前記ネットワークの情報として、当該ネットワークに設けられる前記スイッチの種別を収集し、当該スイッチの種別に対応する数の割り当て計画テーブルをそれぞれ作成し、
前記スイッチの種別が複数の場合には、さらに、
テーブルサイズが異なり複数作成される前記割り当て計画テーブルにそれぞれ登録される前記ＭＡＣアドレスのテーブル列の位置に基づいて、前記ＭＡＣアドレス毎の割り当ての優先度テーブルを作成し、
前記割り当て手段は、
優先度が高い前記ＭＡＣアドレスから順に前記仮想マシンに割り当てる
ことを特徴とする請求項１〜６のいずれか一つに記載の仮想マシン管理装置。
【請求項８】
ネットワーク内の複数の仮想マシンに割り当てるＭＡＣアドレスを管理する仮想マシン管理方法において、
前記ネットワークの情報と前記ネットワーク内のスイッチの情報を用いて、前記スイッチの学習テーブルと同じ学習数のテーブル列数を有し、前記ＭＡＣアドレスの割り当てを行うための割り当て計画テーブルを作成する作成工程と、
前記ＭＡＣアドレスを前記スイッチのハッシュ関数を用いて、前記割り当て計画テーブルの該当するハッシュ値のテーブル列に所定の順序を有して登録する登録工程と、
前記テーブル列数の範囲内に登録されたＭＡＣアドレスを所定の順序を有して読み出し、前記仮想マシンに割り当てる割り当て工程と、
を含むことを特徴とする仮想マシン管理方法。
【請求項９】
前記登録工程は、
前記ＭＡＣアドレスが前記割り当て計画テーブルが有するハッシュ値に対するテーブル列数を超える場合、前記割り当て計画テーブルに前記ＭＡＣアドレスを登録しないことを特徴とする請求項８に記載の仮想マシン管理方法。
【請求項１０】
前記登録工程は、
前記スイッチの前記ＭＡＣアドレスの検索時の走査方向に一致する所定の順序を有して前記ＭＡＣアドレスを登録することを特徴とする請求項８または９に記載の仮想マシン管理方法。
【請求項１１】
前記割り当て工程は、
前記割り当て計画テーブルの各ＭＡＣアドレス毎に、前記仮想マシンに対する割り当ての有無を保持し、
前記スイッチの前記ＭＡＣアドレスの検索時の走査方向に一致する所定の順序を有して未割り当て状態のＭＡＣアドレスを、割り当て要求された前記仮想マシンに割り当てることを特徴とする請求項８〜１０のいずれか一つに記載の仮想マシン管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンのネットワークアドレスを管理する仮想マシン管理装置および仮想マシン管理方法に関する。
【背景技術】
【０００２】
クラウド環境等では、物理サーバ（物理マシン）上で複数の仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を動作させるサーバ仮想化技術が用いられる。例えば、仮想化したサーバをインフラストラクチャとしてユーザに提供するＩａａＳ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）事業者が管理するデータセンタでは、物理サーバあたり複数のＶＭを動作させる。
【０００３】
各ＶＭは、それぞれ仮想ネットワークインタフェースカード（仮想ＮＩＣ：Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）を有しているため、ネットワーク内では、多数のＭＡＣアドレスが存在することになる。
【０００４】
上記の仮想ＮＩＣと外部ネットワークとの間にはスイッチが設けられる。スイッチは、ＶＭ側から受信したフレーム転送のために、学習テーブル（転送先ＭＡＣアドレスと接続ポートの対応表）を保持している。また、各物理マシンを管理する管理サーバは、ＶＭの作成・削除・移動等の管理を行う。管理サーバは、ＶＭ作成時にはＶＭ上の仮想ＮＩＣにＭＡＣアドレスを割り当てる。
【０００５】
上記のスイッチは、受信したフレームの転送のために、転送先ＭＡＣアドレスおよび接続ポートの対応表である学習テーブルを保持している。スイッチは、一般的に転送対象ＭＡＣアドレスの検索スピード向上のためにハッシュテーブルを用いる。この学習テーブルは、ＭＡＣアドレスと、ＭＡＣアドレスから求めたハッシュ値、および接続先ポートの情報によって構成されている。この学習テーブルにおいては、ハッシュ値に対して学習できる数に上限がある。
【０００６】
ＭＡＣアドレスの割り当てとして、仮想環境下においてＶＭ作成時に仮想ＮＩＣに対して重複を避ける技術が開示されている。この技術では、割り当てるＭＡＣアドレスを管理するテーブルを一元的に管理せず、各物理サーバ内にＭＡＣアドレス管理用の共有テーブルを設け、ＶＭ同士でＭＡＣアドレスの使用状況を共有する（例えば、下記特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−１４７９２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の技術では、下記の問題を有する。
１）スイッチにおけるＭＡＣアドレス学習不可の発生
仮想環境下ではＶＭに割り当てられるＭＡＣアドレス数が増大し、スイッチ学習の際に一つのハッシュ値に対するＭＡＣアドレスの学習数が上限を超えてしまうことがある。この場合、スイッチは、受信したパケットについて、学習されていないＭＡＣアドレスと認識するため（ハッシュコリジョン）、他の全ポートにパケットを転送してしまうフラッディングが生じ、ネットワーク輻輳を生じる。この点は、スイッチの機能を上げる等により、学習可能なＭＡＣアドレス数を増やせるが、データセンタ内の機器コストが増大する。
【０００９】
２）スイッチにおいてＭＡＣアドレスの検索性能を考慮した学習ができない
スイッチが同一数のＭＡＣアドレスを学習する際に、各ハッシュ値に対する学習数の偏りが生じると、ハッシュ値に対する学習数が均一の場合と比較して、検索回数が増え、ＭＡＣアドレスの検索性能が悪くなる。
【００１０】
特許文献１の技術では、ＭＡＣアドレスの重複は避けることができるが、各スイッチにおける上記１）、２）の問題を解決することはできない。
【００１１】
一つの側面では、ネットワーク内のスイッチの学習不可を防止し、検索効率を向上できるＭＡＣアドレスを仮想マシンに割り当てることを目的とする。
【課題を解決するための手段】
【００１２】
一つの案では、ネットワーク内の複数の仮想マシンに割り当てるＭＡＣアドレスを管理する仮想マシン管理装置は、前記ネットワークの情報と前記ネットワーク内のスイッチの情報を用いて、前記スイッチの学習テーブルと同じ学習数のテーブル列数を有し、前記ＭＡＣアドレスの割り当てを行うための割り当て計画テーブルを作成する作成手段と、前記ＭＡＣアドレスを前記スイッチのハッシュ関数を用いて、前記割り当て計画テーブルの該当するハッシュ値のテーブル列に所定の順序を有して登録する登録手段と、前記テーブル列数の範囲内に登録されたＭＡＣアドレスを所定の順序を有して読み出し、前記仮想マシンに割り当てる割り当て手段と、を有する。
【発明の効果】
【００１３】
一つの実施形態によれば、ネットワーク内のスイッチの学習不可を防止し、検索効率を向上できるＭＡＣアドレスを仮想マシンに割り当てることができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施の形態にかかる仮想マシン管理装置を含むデータセンタの全体構成を示す図である。
【図２】図２は、実施の形態にかかる管理サーバによるＭＡＣアドレスの管理を説明するブロック図である。
【図３】図３は、実施の形態にかかる管理サーバのハードウェア構成例を示す図である。
【図４】図４は、実施の形態にかかる管理サーバの機能構成を示すブロック図である。
【図５】図５は、スイッチ種別が異なる構成例を示す図である。
【図６】図６は、ネットワーク情報テーブルの内容を示す図表である。
【図７】図７は、スイッチ情報テーブルの内容を示す図表である。
【図８】図８は、割り当て計画テーブルの内容を示す図表である。
【図９】図９は、非優先テーブルの内容を示す図表である。
【図１０】図１０は、実施例１によるテーブル作成の処理手順を示すシーケンス図である。
【図１１】図１１は、実施例１によるテーブル作成の処理手順を示すフローチャートである。
【図１２】図１２は、実施例１による仮想マシンに対するＭＡＣアドレス割り当ての処理手順を示すシーケンス図である。
【図１３】図１３は、実施例１による仮想マシンに対するＭＡＣアドレス割り当ての処理手順を示すフローチャートである。
【図１４】図１４は、スイッチによる各ＶＭのＭＡＣアドレスの学習手順を説明するシーケンス図である。
【図１５】図１５は、実施の形態２において用いられる優先度テーブル内容を示す図表である。
【図１６】図１６は、実施例２によるテーブル作成の処理手順を示すシーケンス図である。
【図１７】図１７は、実施例２によるテーブル作成の処理手順を示すフローチャートである。
【図１８】図１８は、実施例２において作成する各テーブルの内容を示す図表である。
【図１９】図１９は、実施例２による仮想マシンに対するＭＡＣアドレスの割り当ての処理手順を示すシーケンス図である。
【図２０】図２０は、実施例２による仮想マシンに対するＭＡＣアドレス割り当ての処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１５】
（実施の形態）
（ネットワークの全体構成例）
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。図１は、実施の形態にかかる仮想マシン管理装置を含むデータセンタの全体構成を示す図である。データセンタ１００は、外部（ユーザ）にサービスを提供する業務ネットワーク（ＮＷ）側１００ａと、データセンタ１００内部の管理を行う保守ネットワーク（ＮＷ）側１００ｂとに分けられる。
【００１６】
業務ＮＷ側１００ａには、複数の物理マシンＡ〜Ｄ（１０１）を有する。各物理マシンＡ〜Ｄ（１０１）は、それぞれ複数の仮想マシン（ＶＭ）１０２と、仮想ネットワークインタフェースカード（ＮＩＣ）１０３とを有する。各物理マシン１０１（仮想ＮＩＣ１０３）は、スイッチ（例えば、レイヤ２スイッチ）１０５、およびルータ１０６を介して外部ＮＷ１０７に接続される。
【００１７】
保守ＮＷ１００ｂ側には、各物理マシンＡ〜Ｄ（１０１）を管理する管理サーバ（仮想マシン管理装置）１１０と、管理サーバ１１０を運用者により操作する保守端末１１１が設けられている。
【００１８】
（ＭＡＣアドレス管理について）
図２は、実施の形態にかかる管理サーバによるＭＡＣアドレスの管理を説明するブロック図である。管理サーバ１１０は、制御部２０１と、メモリ２０２とを含む。
【００１９】
制御部２０１は、ＶＭ１０２に対し、割り当て計画情報を作成してＭＡＣアドレスの割り当てを行う。割り当て計画情報は、ＭＡＣアドレスから求めたハッシュ値と、このハッシュ値に対応するＭＡＣアドレスと、ＶＭ１０２への割り当て可否状況とを含む。制御部２０１は、作成した割り当て計画情報を割り当て計画テーブル２１０として、メモリ２０２に格納する。この割り当て計画テーブル２１０は、スイッチ１０５が有する学習テーブル相当のものを作成する。
【００２０】
管理サーバ１１０の制御部２０１は、ハッシュ値を求める際は、スイッチ１０５が有するハッシュ関数を用いる。割り当て計画テーブル２１０は、ハッシュ値（１〜Ｎ）と、ハッシュ値に対応したＭＡＣアドレスからなる。図２の例では、一つのハッシュ値（行）に対し、複数（テーブル列数３）のＭＡＣアドレスが割り当てられる。例えば、ハッシュ値１には、ＭＡＣ１，ＭＡＣ３，ＭＡＣ９が割り当てられている。
【００２１】
そして、制御部２０１は、割り当て計画テーブル２１０の最小の列（１列目）、および行（１行目）を起点として、図２の矢印に示す走査方向Ａを有して順次ＭＡＣアドレスを選択し、ＶＭ１０２の作成時に割り当てる。走査方向Ａは、１列目のハッシュ値１〜ＮについてそれぞれＭＡＣアドレスを割り当てた後、ハッシュ値１に戻り、２列目のハッシュ値１〜ＮについてそれぞれＭＡＣアドレスを割り当てていく。
【００２２】
制御部２０１は、割り当て計画テーブル２１０上で順次「未使用」のＭＡＣアドレスを割り当てていく。これにより、スイッチ１０５のＭＡＣアドレスの学習が学習数（テーブル列数）の範囲内に収まり、スイッチ１０５は、ハッシュ値に対してほぼ均一にＭＡＣアドレスを割り当てることができる。
【００２３】
管理サーバ１１０（制御部２０１）は、この割り当て計画テーブル２１０に基づき、各物理マシンＡ〜Ｄ（１０１）のＶＭ１０２（仮想ＮＩＣ１０３）に対して所定の順序を有してＭＡＣアドレスを払い出す。ここで、管理サーバ１１０は、割り当て計画テーブル２１０に登録されていないＭＡＣアドレスについては、ＶＭ１０２への割り当て（払い出し）を行わない。これにより、ＶＭ１０２には、スイッチ１０５の学習不可が起きないＭＡＣアドレスを割り当てることができる。
【００２４】
スイッチ１０５は、各ＶＭ１０２に割り当てられたＭＡＣアドレスに基づき学習を行う。スイッチ１０５の学習テーブルは、割り当て計画テーブル２１０の内容と同じＭＡＣアドレスを学習することになる。この際、スイッチ１０５は、図２に示すように、最小の列から順に割り当てられたＶＭ１０２のＭＡＣアドレスを学習することになり、ＭＡＣアドレス検索時に行う検索を効率的に行うことができるようになる。すなわち、割り当て計画テーブル２１０およびスイッチ１０５の学習テーブル内において、検索方向Ａに沿った割り当てが行われるため、割り当てられたＭＡＣアドレスの格納位置がばらつくことがなく、ＭＡＣアドレスの検索効率を向上できるようになる。
【００２５】
（管理サーバのハードウェア構成例）
図３は、実施の形態にかかる管理サーバのハードウェア構成例を示す図である。管理サーバ１１０は、制御部であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、メモリ２０２と、ＮＩＣ３０３とを含む。
【００２６】
ＣＰＵ２０１は、メモリ２０２のうち、ＲＯＭ等の不揮発領域に格納された制御プログラムに基づき、ＭＡＣアドレスの割り当ておよび払い出し等にかかる制御を実行する。ＣＰＵ２０１は、ネットワーク（業務ＮＷ１００ａ）情報の収集、スイッチ１０５のスイッチ情報の収集、メモリ２０２内の各種テーブル（上記割り当て計画テーブル２１０を含む）の作成、ＶＭ１０２に対するＭＡＣアドレスの割り当て（払い出し）等を行う。
【００２７】
メモリ２０２には、スイッチ１０５のＮＷ情報を格納するネットワーク情報テーブルと、各スイッチ１０５の情報を格納するスイッチ情報テーブル、上記の割り当て計画テーブル２１０、ＭＡＣアドレスの割り当ての優先度を示す複数の優先度テーブル（実施例２参照）等を格納する。例えば、これらの情報は書き換え可能な不揮発の領域に格納される。また、ＲＡＭ等の揮発領域に一次格納し、メモリ２０２の不揮発領域に保持する構成としてもよい。
【００２８】
ＮＩＣ３０３は、保守ＮＷ１００ｂを介して物理マシン１０１および保守端末１１１等と通信を行う。業務ＮＷ１００ａの情報、およびスイッチ１０５の情報は、保守端末１１１等を介して外部から入力される。保守端末１１１からは、管理サーバ１１０に対して割り当て計画テーブル２１０の作成要求や、ＶＭ作成要求が送信される。管理サーバ１１０は、各ＶＭ１０２に対してＭＡＣアドレスの割り当て（払い出し）を行い、保守端末１１１に対して割り当て計画テーブル２１０の作成応答や、ＶＭ作成応答を返答する。
【００２９】
（管理サーバの機能構成）
図４は、実施の形態にかかる管理サーバの機能構成を示すブロック図である。管理サーバ１１０は、要求受付部４０１と、メモリ制御部４０２と、ＶＭ制御部４０３と、通信制御部４０４等を含む。
【００３０】
要求受付部４０１は、保守ＮＷ１００ｂを介して保守端末１１１を操作する運用者からの管理指示（テーブル作成要求やＶＭ作成要求等）を受け付け、処理結果を保守端末１１１に応答する（通知手段）。メモリ制御部４０２は、メモリ２０２内の各テーブルの作成および削除の機能（作成手段）と、ＭＡＣアドレスの登録等の機能（登録手段）を有する。ＶＭ制御部４０３は、ＶＭ１０２の作成・追加・削除・ＭＡＣアドレスの割り当て等を行う。通信制御部４０４は、ＮＩＣ３０３および保守ＮＷ１００ｂを介して物理マシン１０１との通信や接続を行う。図４に記載の管理サーバ１１０内の各構成部は、図３に記載のＣＰＵ２０１がメモリ２０２等に格納された制御プログラムにより機能実行することができる。
【００３１】
以下、異なるスイッチ種別に対応する各実施例についてそれぞれ説明する。図５は、スイッチ種別が異なる構成例を示す図である。この図５に示す基本構成は、図１と同様であるが、スイッチ１０５の種別が異なるネットワークＮＷ１，ＮＷ２をそれぞれ示している。
【００３２】
ネットワークＮＷ１は、物理マシン１０１に接続されるスイッチ１０５が全て同一のスイッチ（ＳＷ１）１０５ａである。この構成例（実施例１）では、各スイッチＳＷ１（１０５ａ）は全て同じ学習数（テーブル列数）を有し、同一のハッシュ値を用いることができる。
【００３３】
ネットワークＮＷ２は、物理マシンＣ，Ｄそれぞれに対応の一対のスイッチ（ＳＷ１）１０５ａに対し、一対のスイッチ１０５ａに接続されるスイッチ（ＳＷ２）１０５ｂのスイッチ種別が異なる。この構成例（実施例２）では、スイッチＳＷ１とＳＷ２とでハッシュ値に対応する学習数（テーブル列数）と、ＭＡＣアドレスを用いたハッシュ値の算出の仕方が、スイッチＳＷ１とＳＷ２とで異なる。
【００３４】
（実施例１）
（ＭＡＣアドレス管理に用いる各テーブル内容）
はじめに、実施例１では、図５のＮＷ１（スイッチ種別が全て同一）に適用するＭＡＣアドレスの割り当て構成について説明する。図６〜図９は、それぞれメモリに格納される４つの各テーブル内容を示す図表である。これら４つのテーブルは、実施例１，２に共通して用いられる。
【００３５】
図６は、ネットワーク情報テーブルの内容を示す図表である。ネットワーク（ＮＷ）情報テーブル６０１は、業務ＮＷ１００ａ内に存在するスイッチ１０５の情報を保持する。このネットワーク情報テーブル６０１は、業務ＮＷを区別するためのＮＷ識別子と、ＮＷ識別子別のＮＷ内に存在するスイッチ種類を示すスイッチ（ＳＷ）識別子の情報を含む。図５に示したＮＷ１，ＮＷ２のそれぞれのＳＷ識別子が保持される。
【００３６】
図７は、スイッチ情報テーブルの内容を示す図表である。スイッチ（ＳＷ）情報テーブル７０１は、ハッシュ関数等、スイッチ１０５の内部情報（ＳＷ情報）を保持する。図示のように、各スイッチに固有の情報としてＳＷ識別子毎に、スイッチで使用されるハッシュ関数、学習可能ＭＡＣアドレス数、ハッシュ値ｂｉｔ数、テーブル列数の情報を含む。ハッシュ値ｂｉｔ数が２であれば２2＝４を意味する。
【００３７】
ＮＷ情報テーブル６０１と、ＳＷ情報テーブル７０１の内容は、予め保守端末１１１等を介してメモリ２０２に格納しておく。
【００３８】
図８は、割り当て計画テーブルの内容を示す図表である。割り当て計画テーブル２１０は、ＶＭ１０２へ割り当てるＭＡＣアドレスの候補と、使用状況を保持する。この割り当て計画テーブル２１０には、図示のように、ＭＡＣアドレスから求めたハッシュ値、およびハッシュ値に対応するＭＡＣアドレス、ＭＡＣアドレスの使用状況等を含む。使用状況は、「未使用」、あるいは「使用中」（ＶＭ１０２へ払い出し済みを示す）を示す識別子からなる。この割り当て計画テーブル２１０のＭＡＣアドレス使用状況（横軸）の列数は、スイッチ情報テーブル７０１のテーブル列数に一致し、同数（例えば、図８の３列数は、図７のテーブル列数３に対応する）を有して生成する。
【００３９】
図９は、非優先テーブルの内容を示す図表である。非優先テーブル９０１は、割り当て計画テーブル２１０のテーブル列数を超え、割り当て計画テーブル２１０への登録が不可能であったＭＡＣアドレスを保持する。非優先テーブル９０１に割り当てられたＭＡＣアドレスはフラッディングの要因となるため、ＶＭ１０２に対してＭＡＣアドレスの割り当て（払い出し）を行わない。
【００４０】
（割り当て計画テーブルの作成とＭＡＣアドレスの登録）
図１０は、実施例１によるテーブル作成の処理手順を示すシーケンス図である。管理サーバ１１０のメモリ制御部４０２が行う割り当て計画テーブル２１０の作成について説明する。
【００４１】
はじめに、クラウドの運用者は、保守端末１１１の操作により、管理対象ネットワークを指定して、管理サーバ１１０に対してテーブル作成要求を送信する（ステップＳ１００１）。この際、実施例１では、対象ＮＷのＮＷ識別子（ＮＷ１）と、所定の割り当てＭＡＣアドレス範囲（ＭＡＣ１〜１２）を指定する。
【００４２】
管理サーバ１１０のメモリ制御部４０２は、テーブル作成要求により、ＮＷ１内に存在するスイッチの種別（スイッチ識別子）を得るため、ＮＷ情報テーブル６０１に対してＮＷ識別子（ＮＷ１）を入力としてＮＷ情報取得要求を送信する（ステップＳ１００２）。ＮＷ情報テーブル６０１は、メモリ制御部４０２に対してスイッチ識別子ＳＷ１を応答する（ステップＳ１００３）。
【００４３】
また、メモリ制御部４０２は、スイッチ情報（ハッシュ関数、テーブル列数）を得るため、ＳＷ情報テーブル７０１に対してＳＷ識別子ＳＷ１を入力として、ＳＷ情報取得要求を送信する（ステップＳ１００４）。ＳＷ情報テーブル７０１は、メモリ制御部４０２に対してＳＷ情報（ハッシュ関数Ａ（ｘ）、テーブル列数３）を応答する（ステップＳ１００５）。
【００４４】
この後、メモリ制御部４０２は、割り当て計画テーブル２１０を作成するために、取得したハッシュ関数と、ＭＡＣアドレスからハッシュ値を算出する（ステップＳ１００６）。そして、メモリ制御部４０２は、割り当て計画テーブル２１０に対して、算出したハッシュ値と、対応するＭＡＣアドレスを入力として割り当て計画テーブル登録を行う（ステップＳ１００７）。図８の例では、ハッシュ値数４とテーブル列数３により合計１２（ＭＡＣ１〜ＭＡＣ１２）のＭＡＣアドレスが登録可能である。あるＭＡＣアドレスは、ハッシュ値演算により、このハッシュ値に対応する一つの行位置に登録される。例えば、ＭＡＣ１は、ハッシュ値２の行に登録される。
【００４５】
そして、メモリ制御部４０２は、登録しようとするＭＡＣアドレスが該当するハッシュ値（行）におけるテーブル列数の範囲内であればＭＡＣアドレス（ＭＡＣ１〜ＭＡＣ１２）を割り当て計画テーブル２１０に登録する（ステップＳ１００８）。この際、登録できた全てのＭＡＣアドレスの使用状況の識別子は「未使用」とする。割り当て計画テーブル２１０は、登録の応答（登録ＯＫ／または登録ＮＧ）をメモリ制御部４０２に応答する（ステップＳ１００９）。
【００４６】
そして、メモリ制御部４０２は、登録の応答を受けて（ステップＳ１０１０：ＯＫ／ＮＧ）、割り当て計画テーブル２１０へのＭＡＣアドレスの登録を、ＭＡＣアドレス範囲分（ＭＡＣ１〜ＭＡＣ１２）まで繰り返し行う（ステップＳ１００６〜ステップＳ１０１０）。
【００４７】
ここで、メモリ制御部４０２は、割り当て計画テーブル２１０に対するＭＡＣアドレスの登録結果がＮＧの場合（該当するハッシュ値の行のテーブル列数の範囲外の場合）には（ステップＳ１０１０：ＮＧ）、このＭＡＣアドレスを非優先テーブル９０１に登録する（ステップＳ１０１１）。そして、メモリ制御部４０２は、非優先テーブル９０１からの登録の応答を受ける（ステップＳ１０１２）。
【００４８】
図９の例では、ＭＡＣアドレス１１，１２が割り当て計画テーブル２１０に登録できなかったことを示す。図８の割り当て計画テーブル２１０には、ハッシュ値３，４に一つずつ空きがあるが、これらＭＡＣアドレス１１，１２は、ハッシュ値が１または２に該当するため、割り当て計画テーブル２１０に登録できない。
【００４９】
この後、管理サーバ１１０（メモリ制御部４０２）は、保守端末１１１に対して割り当て計画テーブル２１０の作成の登録結果（各ＭＡＣアドレス１〜１２の登録結果（ＯＫ／ＮＧ））を通知する（ステップＳ１０１３）。非優先テーブル９０１にＭＡＣアドレスが登録されている場合は、クラウドの運用者に対し、割り当て計画テーブル２１０の登録に失敗したＭＡＣアドレス（ＭＡＣ１１，１２）の情報も通知する。以上の処理により、割り当て計画テーブル２１０は、作成直後の状態では、割り当てられた各ＭＡＣアドレスの使用状況の識別子は、全て「未使用」となる。
【００５０】
図１１は、実施例１によるテーブル作成の処理手順を示すフローチャートである。管理サーバ１１０のメモリ制御部４０２が行う割り当て計画テーブル２１０の作成および登録にかかる処理内容を示す。
【００５１】
はじめに、メモリ制御部４０２は、保守端末１１１から対象ＮＷのＮＷ識別子（ＮＷ１）と、所定の割り当てＭＡＣアドレス範囲（ＭＡＣ１〜１２）の指定を受ける（ステップＳ１１０１）。これにより、ＮＷ情報テーブル６０１からＮＷ識別子（ＮＷ１）に対応するＳＷ識別子ＳＷ１を取得する（ステップＳ１１０２）。また、ＳＷ情報テーブル７０１からＳＷ識別子ＳＷ１に対応するＳＷ情報（ハッシュ関数Ａ（ｘ）、テーブル列数３）を取得する（ステップＳ１１０３）。この後、メモリ制御部４０２は、取得したハッシュ関数と、ＭＡＣアドレスからハッシュ値を算出する（ステップＳ１１０４）。
【００５２】
次に、メモリ制御部４０２は、割り当て計画テーブル２１０に、ハッシュ値に該当する行にＭＡＣアドレスを一つずつ登録する（ステップＳ１１０５）。登録できたＭＡＣアドレスの使用状況の識別子は「未使用」とする。
【００５３】
そして、メモリ制御部４０２は、割り当て計画テーブル２１０に対するＭＡＣアドレスの登録結果を判断し（ステップＳ１１０６）、登録できた場合（該当するハッシュ値のテーブル列数範囲内の場合）には（ステップＳ１１０６：ＯＫ）、ステップＳ１１０８に移行する。登録できなかった場合（該当するハッシュ値の行のテーブル列数の範囲外の場合）には（ステップＳ１１０６：ＮＧ）、このＭＡＣアドレスを非優先テーブル９０１に登録する（ステップＳ１１０７）。
【００５４】
ステップＳ１１０８では、指定範囲内のＭＡＣアドレス（ＭＡＣ１〜１２）に対して処理を終えたか判断し、未処理分があれば（ステップＳ１１０８：Ｎｏ）、ステップＳ１１０４に戻る。処理済みであれば（ステップＳ１１０８：Ｙｅｓ）、ステップＳ１１０９に移行する。
【００５５】
ステップＳ１１０９では、非優先テーブル９０１が存在するか判断する。非優先テーブル９０１にＭＡＣアドレスが登録されていなければ（ステップＳ１１０９：Ｎｏ）、割り当て計画テーブル２１０の作成が正常完了したことを保守端末に通知し、処理終了となる。一方、非優先テーブル９０１にＭＡＣアドレスが登録されている場合（ステップＳ１１０９：Ｙｅｓ）、割り当て計画テーブル２１０の登録に失敗したＭＡＣアドレス（ＭＡＣ１１，１２）の情報を保守端末１１１に通知してから（ステップＳ１１１０）、処理終了する。
【００５６】
（仮想マシンに対するＭＡＣアドレス割り当て）
次に、仮想マシン（ＶＭ）１０２に対するＭＡＣアドレスの割り当て処理について説明する。管理サーバ１１０のＶＭ制御部４０３が行う処理について説明する。
【００５７】
図１２は、実施例１による仮想マシンに対するＭＡＣアドレスの割り当ての処理手順を示すシーケンス図である。はじめに、クラウドの運用者はＶＭ１０２を作成する際に、保守端末１１１から管理サーバ１１０に対してＶＭ作成要求（例えば、ＶＭ１〜１０）を送信する（ステップＳ１２０１）。
【００５８】
管理サーバ１１０のＶＭ制御部４０３は、各ＶＭ１０２に割り当てるＭＡＣアドレスを取得するため、メモリ制御部４０２に対し、ＭＡＣアドレス割り当て要求を送信する（ステップＳ１２０２）。メモリ制御部４０２は、割り当て計画テーブル２１０を参照し、割り当て計画テーブル２１０の小さな番号の列から順に、走査方向Ａに走査してＭＡＣアドレスの使用状況が「未使用」のＭＡＣアドレスを検索する。そして、「未使用」のＭＡＣアドレスがあれば（図のＭＡＣ３）、ＭＡＣアドレスの使用状況を「未使用」から「使用中」に変更し、このＭＡＣアドレスをＶＭ制御部４０３に応答する（ステップＳ１２０３）。
【００５９】
例えば、ＶＭ１〜ＶＭ１０の順にＭＡＣアドレスを割り当てる際、図示の割り当て計画テーブル２１０に基づき、はじめに、ＶＭ１にＭＡＣ２を割り当て、次に２番目のＶＭ２にＭＡＣ１を割り当て、６番目のＶＭ６にＭＡＣ３を割り当てる。図の割り当て計画テーブル２１０には、５番目のＶＭ５までのＭＡＣアドレスの割付が終わった状態であり、ＶＭ６に対するＭＡＣ３の割り当て時の状態を示している。そして、ＶＭ６に対してＭＡＣアドレス（ＭＡＣ３）を割り当て、使用状況を「未使用」から「使用中」に変更する。
【００６０】
この後、ＶＭ制御部４０３は、ＶＭ識別子（ＶＭ６）と、取得したＭＡＣアドレス（ＭＡＣ３）を入力として、物理マシン１０１にＶＭ作成要求を送信し（ステップＳ１２０４）、物理マシン１０１は、実行結果をＶＭ制御部４０３に応答する（ステップＳ１２０５）。この後、ＶＭ制御部４０３は、保守端末１１１にＶＭ作成結果を応答する（ステップＳ１２０６）。以上により、ＶＭ１０２に対して最適なＭＡＣアドレスを払い出すことができる。
【００６１】
図１３は、実施例１による仮想マシンに対するＭＡＣアドレス割り当ての処理手順を示すフローチャートである。管理サーバ１１０のＶＭ制御部４０３が行う仮想マシンに対するＭＡＣアドレス割り当ての処理内容を示す。はじめに、ＶＭ制御部４０３は、保守端末１１１からＶＭ１０２のＶＭ作成要求（例えば、ＶＭ１〜１０）を受け付ける（ステップＳ１３０１）。
【００６２】
これにより、ＶＭ制御部４０３は、メモリ制御部４０２に対し、ＭＡＣアドレス割り当て要求を送信し、メモリ制御部４０２により割り当て計画テーブル２１０を検索し、ＭＡＣアドレスの使用状況が「未使用」のＭＡＣアドレスを抽出する（ステップＳ１３０２）。そして、ＶＭ制御部４０３は、ＶＭ１０２に割り当て可能なＭＡＣアドレスがあるか判断する（ステップＳ１３０３）。
【００６３】
割り当て可能なＭＡＣアドレスがあれば（ステップＳ１３０３：Ｙｅｓ）、ＶＭ制御部４０３は、ＭＡＣアドレス使用状況を「未使用」から「使用中」に変更し、抽出したＭＡＣアドレスでＶＭ１０２を作成する（ステップＳ１３０４）。例えば、ＶＭ６に対してＭＡＣ３を割り当て（払い出し）、処理を終了する。一方、割り当て可能なＭＡＣアドレスがなければ（ステップＳ１３０３：Ｎｏ）、処理を終了する。処理終了時、ＶＭ制御部４０３は、保守端末１１１にＶＭ作成結果を応答する。
【００６４】
（仮想マシン作成後のスイッチ学習について）
次に、仮想マシン（ＶＭ）１０２作成後のスイッチ学習について説明する。図１４は、スイッチによる各ＶＭのＭＡＣアドレスの学習手順を説明するシーケンス図である。管理サーバ１１０により作成された各ＶＭ１〜１０（１０２）は、スイッチ（スイッチ１）１０５ａに対し、通信を行いスイッチ１（１０５ａ）はＭＡＣアドレスの学習を行う（ステップＳ１４０１ａ〜ステップＳ１４０１ｎ）。
【００６５】
これにより、スイッチ１（１０５ａ）の学習テーブル１４１０には、管理サーバ１１０が作成した割り当て計画テーブル２１０（図８，図１２参照）と同じ内容のＭＡＣアドレスが保持される。
【００６６】
以上の実施例１によれば、管理サーバ１１０がネットワーク内のスイッチ１０５が有する学習テーブルと同様のテーブル、例えばテーブルサイズ（ハッシュ関数毎の列数）を有する割り当て計画テーブル２１０を作成する。そして、この割り当て計画テーブル２１０に対しスイッチ１０５のハッシュ関数を用いて、複数のＶＭ１０２（仮想ＮＩＣ１０３）に割り当て可能なＭＡＣアドレスを登録する。登録したＭＡＣアドレスは、ＶＭ作成要求により、ＶＭに対して割り当て（払い出され）る。
【００６７】
割り当て計画テーブル２１０の作成時に、スイッチ１０５が有する学習数（テーブル列数）を用い、所定のＭＡＣアドレスの範囲に対して登録できないＭＡＣアドレスを非優先扱いとする。これにより、ＶＭ１０２に割り当てるＭＡＣアドレス数が増大しても、スイッチ１０５の学習数（テーブル列数）を超えた分についてはＶＭ１０２に割り当てない。これにより、ＶＭ１０２には、スイッチ１０５の学習不可が起きないＭＡＣアドレスが割り当てられ、スイッチ１０５における学習不可、およびフラッディングの発生を防止できる。
【００６８】
また、ＶＭ１０２に対するＭＡＣアドレスの割り当てに割り当て計画テーブル２１０を用い、検索時の走査方向Ａについて、はじめに、行方向のハッシュ値１〜Ｎの順に沿って、若い番号のテーブル列数の１列目の未使用のＭＡＣアドレスを検索する。この後、再度ハッシュ値１に戻り次の２列目の未使用のＭＡＣアドレスを検索する。
【００６９】
この際、既存のようなＭＡＣアドレスのランダムな払い出しはせず、テーブル列数の１列目から順に未使用のＭＡＣアドレスをＶＭ１０２に規則性を有し割り当てていく。これにより、スイッチ１０５の学習を所定の学習数（テーブル列数）の範囲内に収めることができる。また、一つのハッシュ値に対するＭＡＣアドレス学習数の偏りがなく、均一に割り当てることができる。また、各スイッチ１０５における学習テーブル内のＭＡＣアドレスの格納位置のばらつきを抑え、ＭＡＣアドレス（フレーム転送先ポート）の検索を効率化できるようになる。
【００７０】
（実施例２）
（ＭＡＣアドレス管理に用いる各テーブル内容）
実施例２では、図５のＮＷ２（異なるスイッチ種別）に適用するＭＡＣアドレスの割り当て構成について説明する。実施例２においても、実施例１同様に、図６〜図９に示した４つの各テーブル（ＮＷ情報テーブル６０１、ＳＷ情報テーブル７０１、割り当て計画テーブル２１０、非優先テーブル９０１）を用いる。
【００７１】
実施例２は、スイッチＳＷ１（１０５ａ）とスイッチＳＷ２（１０５ｂ）はスイッチ種別が異なり、学習数（テーブル列数に相当）が異なる。このため、割り当て計画テーブル２１０は、ＳＷ１用と、ＳＷ２用の２つが作成される。この実施例２では、異なる種別のスイッチ１０５に対応した複数の割り当て計画テーブル２１０を用いて、ＭＡＣアドレスの割り当て（および検索）を効率的に行うために、優先度を持つ３つの優先度テーブルを用いる。
【００７２】
図１５は、実施の形態２において用いられる優先度テーブル内容を示す図表である。優先度テーブル１５０１は、メモリ２０２に格納される。これら優先度テーブル１５０１は、各スイッチ１０５単位に作成された割り当て計画テーブル２１０に基づきメモリ制御部４０２が作成する。
【００７３】
図１５の（ａ）は、最優先テーブルの内容を示す図表である。最優先テーブル１５０１ａは、ＭＡＣアドレス割り当ての際に最も優先的に選択される。図１５の（ｂ）は、優先テーブル１５０１ｂの内容を示す図表である。優先テーブル１５０１ｂは、ＭＡＣアドレス割り当ての際に最優先テーブル１５０１ａの次に優先的に選択される。図１５の（ｃ）は、非優先テーブル１５０１ｃの内容を示す図表である。非優先テーブル１５０１ｃは、ＶＭ１０２へのＭＡＣアドレス割り当て不可として、保守者（保守端末１１１）に通知される。図１５の（ａ）〜（ｃ）に示す複数のテーブル１５０１ａ〜１５０１ｃは、優先度別の領域に区切った一つの優先度テーブル１５０１として作成してもよい。
【００７４】
（割り当て計画テーブル、優先度テーブルの作成と、ＭＡＣアドレスの登録）
図１６は、実施例２によるテーブル作成の処理手順を示すシーケンス図である。管理サーバ１１０のメモリ制御部４０２が行う割り当て計画テーブル２１０および優先度テーブル１５０１の作成について説明する。図１６の各処理のうち、実施例１（図１０と共通する処理内容）については、同一の符号を付してある。また、便宜上、一部の処理内容、例えば、ハッシュ値算出（ステップＳ１００６）等については図示を省略してある。
【００７５】
実施例２においても、割り当て計画テーブル２１０の作成までの処理（ステップＳ１００１〜ステップＳ１００９）は、実施例１と同様の処理である。この際、ステップＳ１００４〜ステップＳ１００９の各処理は、スイッチ１０５（１０５ａ，１０５ｂ）の数分の処理を繰り返し行う。
【００７６】
そして、メモリ制御部４０２は、割り当て計画テーブル２１０の作成（ステップＳ１００９）が終わると、次に、優先度テーブル１５０１の作成を行う。メモリ制御部４０２は、割り当て計画テーブル２１０登録時の応答（各ＳＷ１０５ａ，１０５ｂの割り当て計画テーブル２１０において何番目の列に登録されたか）により、このＭＡＣアドレスをどの優先度テーブル１５０１（最優先テーブル１５０１ａ、優先テーブル１５０１ｂ、非優先テーブル１５０１ｃのいずれに）に登録すべきか優先度を判定する。そして、メモリ制御部４０２は、優先度の判定結果に基づき、対応する優先度テーブル１５０１にＭＡＣアドレスを登録する（ステップＳ１６０１ａ〜ステップＳ１６０１ｃ）。
【００７７】
優先度の判定基準は以下の通りである。
最優先：ＳＷ１とＳＷ２の全ての割り当て計画テーブル２１０でハッシュ値に対して１番目（１列目）に登録されたＭＡＣアドレス。
優先：ＳＷ１またはＳＷ２のいずれかの割り当て計画テーブル２１０でハッシュ値に対して２番目（２列目）以降に登録されたＭＡＣアドレス。但し、ＳＷ１およびＳＷ２のいずれかの割り当て計画テーブル２１０においてもテーブル列数は超えないこと。
非優先：ＳＷ１またはＳＷ２の割り当て計画テーブル２１０でテーブル列数を超えたＭＡＣアドレス。
【００７８】
優先度の判定の結果、最優先であれば、該当するＭＡＣアドレスを最優先テーブル１５０１ａに登録する（ステップＳ１６０１ａ）。判定結果が優先であれば、該当するＭＡＣアドレスを優先テーブル１５０１ｂに登録する（ステップＳ１６０１ｂ）。判定結果が非優先であれば、該当するＭＡＣアドレスを非優先テーブル１５０１ｃに登録する（ステップＳ１６０１ｃ）。各優先度テーブル１５０１は、登録後にメモリ制御部４０２に応答を返す（ステップＳ１６０２ａ〜ステップＳ１６０２ｃ）。ステップＳ１００７〜ステップＳ１６０２の処理は、ＭＡＣアドレス範囲分だけ繰り返し行う。
【００７９】
図１７は、実施例２によるテーブル作成の処理手順を示すフローチャートである。管理サーバ１１０のメモリ制御部４０２が行う優先度テーブル１５０１の作成および登録にかかる処理内容を主に記載してある。図１７において、実施例１と同様（図１１参照）の割り当て計画テーブル２１０の作成に関する処理（ステップＳ１１０１〜ステップＳ１１０５）については、実施例１と同じ処理を行う。便宜上、実施例１の一部の処理の記載を省略してある。
【００８０】
ステップＳ１１０５により割り当て計画テーブル２１０の作成後、メモリ制御部４０２は、ＳＷ１とＳＷ２の全ての割り当て計画テーブル２１０でハッシュ値に対して１番目（１列目）の登録のＭＡＣアドレスであるか判断する（ステップＳ１７０５）。このＭＡＣアドレスが１番目の登録であれば（ステップＳ１７０５：Ｙｅｓ）、最優先テーブル１５０１ａにこのＭＡＣアドレスを登録する（ステップＳ１７０６）。一方、このＭＡＣアドレスが１番目の登録でなければ（ステップＳ１７０５：Ｎｏ）、ステップＳ１７０７に移行する。
【００８１】
ステップＳ１７０７では、ＳＷ１とＳＷ２のいずれかの割り当て計画テーブル２１０のテーブル列数を超えたＭＡＣアドレスがあるか判断する（ステップＳ１７０７）。判断の結果、ＳＷ１とＳＷ２のいずれにおいてもテーブル列数を超えていないＭＡＣアドレスであれば（ステップＳ１７０７：Ｎｏ）、列数２列目以降に登録されたＭＡＣアドレスに相当し、このＭＡＣアドレスを優先テーブル１５０１ｂに登録する（ステップＳ１７０８）。一方、ＳＷ１またはＳＷ２のいずれかのテーブル列数を超えたＭＡＣアドレスであれば（ステップＳ１７０７：Ｙｅｓ）、このＭＡＣアドレスを非優先テーブル１５０１ｃに登録する（ステップＳ１７０９）。
【００８２】
ステップＳ１７０６，ステップＳ１７０８，ステップＳ１７０９の処理後、指定範囲内のＭＡＣアドレス（ＭＡＣ１〜１０）に対して処理を終えたか判断し（ステップＳ１７１０）、未処理分があれば（ステップＳ１７１０：Ｎｏ）、ステップＳ１１０５に戻り、処理を終えていれば（ステップＳ１７１０：Ｙｅｓ）、以上のテーブル作成処理を終了する。
【００８３】
（各テーブルの作成例）
図１８は、実施例２において作成する各テーブルの内容を示す図表である。実施例２における各テーブルの作成例について具体的に説明する。ＭＡＣアドレス指定範囲は、ＭＡＣ０１〜１０、ＳＷ識別子は、ＳＷ１（１０５ａ）、ＳＷ２（１０５ｂ）（図５参照）とし、ＳＷ１（１０５ａ）の列数（テーブル列数）は３、ＳＷ２（１０５ｂ）の列数は２である。対応して、割り当て計画テーブル２１０として、ＳＷ１（１０５ａ）用の３列を有する割り当て計画テーブル２１０ａと、ＳＷ２（１０５ｂ）用の２列を有する割り当て計画テーブル２１０ｂを作成する。
【００８４】
割り当て計画テーブル２１０ａは、ＳＷ１（１０５ａ）の学習テーブルと同じ内容となり、割り当て計画テーブル２１０ｂは、ＳＷ２（１０５ｂ）の学習テーブルと同じ内容となる。
【００８５】
図の横方向には、ＳＷ１の割り当て計画テーブル２１０ａ、ＳＷ２の割り当て計画テーブル２１０ｂ、最優先テーブル１５０１ａ、優先テーブル１５０１ｂ、非優先テーブル１５０１ｃを示す。図の縦軸には、各ＭＡＣアドレス（ＭＡＣ０１〜１０）についての登録例を示す。
【００８６】
ＭＡＣアドレス１（ＭＡＣ０１）は、ＳＷ１の割り当て計画テーブル２１０ａの１列目、ＳＷ２の割り当て計画テーブル２１０ｂでも１列目であるため、このＭＡＣ０１を最優先テーブル１５０１ａに割り当てる。
【００８７】
ＭＡＣアドレス３（ＭＡＣ０３）は、ＳＷ１の割り当て計画テーブル２１０ａでは２列目、ＳＷ２の割り当て計画テーブル２１０ｂでも２列目であるため、このＭＡＣ０３を優先テーブル１５０１ｂに割り当てる。
【００８８】
ＭＡＣアドレス４（ＭＡＣ０４）は、ＳＷ１の割り当て計画テーブル２１０ａでは２列目、ＳＷ２の割り当て計画テーブル２１０ｂでは登録されていない（列数を超えている）ため、このＭＡＣ０４を非優先テーブル１５０１ｃに割り当てる。
【００８９】
図１８の一番下の行には、全てのＭＡＣアドレス（ＭＡＣ０１〜１０）の登録状態を示す。非優先テーブル１５０１ｃに割り当てられたＭＡＣアドレスはフラッディングの要因となるため、ＶＭ１０２に対してＭＡＣアドレスの割り当て（払い出し）を行わない。
【００９０】
（仮想マシンに対するＭＡＣアドレス割り当て）
次に、仮想マシン（ＶＭ）１０２に対するＭＡＣアドレスの割り当て処理について説明する。管理サーバ１１０のＶＭ制御部４０３が行う処理について説明する。
【００９１】
図１９は、実施例２による仮想マシンに対するＭＡＣアドレスの割り当ての処理手順を示すシーケンス図である。図１９に示す各処理は、実施例１（図１２）の処理と同じであり、実施例１と同一の符号を付してある。
【００９２】
実施例２において実施例１と異なるのは、ＶＭ１０２作成時に実施例１では、割り当て計画テーブル２１０を検索するのに対し、実施例２では、優先度テーブル１５０１を検索する点である。
【００９３】
保守端末１１１から管理サーバ１１０に対してＶＭ作成要求（例えば、ＶＭ１〜１０）を送信した後（ステップＳ１２０１）、管理サーバ１１０のＶＭ制御部４０３は、各ＶＭ１０２に割り当てるＭＡＣアドレスを取得するため、メモリ制御部４０２に対し、ＭＡＣアドレス割り当て要求を送信する（ステップＳ１２０２）。
【００９４】
そして、メモリ制御部４０２は、優先度テーブル１５０１を最優先テーブル１５０１ａ、優先テーブル１５０１ｂの順にＭＡＣアドレスを検索する。はじめに、最優先テーブル１５０１ａの小さな番号の列から順にＭＡＣアドレスの使用状況が「未使用」のＭＡＣアドレスを検索する。最優先テーブル１５０１ａが全て「使用中」であれば、次に、優先テーブル１５０１ｂの小さな番号の列から順にＭＡＣアドレスの使用状況が「未使用」のＭＡＣアドレスを検索する。
【００９５】
そして、「未使用」のＭＡＣアドレスがあれば（図のＭＡＣ０７）、このＭＡＣアドレスの使用状況を「未使用」から「使用中」に変更し、このＭＡＣアドレスをＶＭ制御部４０３に応答する（ステップＳ１２０３）。
【００９６】
この後、ＶＭ制御部４０３は、ＶＭ識別子と、取得したＭＡＣアドレス（ＭＡＣ０７）を入力として、物理マシン１０１にＶＭ作成要求を送信し（ステップＳ１２０４）、物理マシン１０１は、実行結果をＶＭ制御部４０３に応答する（ステップＳ１２０５）。この後、ＶＭ制御部４０３は、保守端末１１１にＶＭ作成結果を応答する（ステップＳ１２０６）。以上により、ＶＭ１０２に対して最適なＭＡＣアドレスを払い出すことができる。
【００９７】
図２０は、実施例２による仮想マシンに対するＭＡＣアドレス割り当ての処理手順を示すフローチャートである。管理サーバ１１０のＶＭ制御部４０３が行う仮想マシンに対するＭＡＣアドレス割り当ての処理内容を示す。実施例２の図２０に示す処理は、基本的に実施例１（図１３）と同様であるが、実施例１では割り当て計画テーブル２１０を検索したのに対し、実施例２では、優先度テーブル１５０１を検索する点が異なる。
【００９８】
はじめに、ＶＭ制御部４０３は、保守端末１１１からＶＭ１０２のＶＭ作成要求（例えば、ＶＭ１〜１０）を受け付ける（ステップＳ２００１）。
【００９９】
これにより、ＶＭ制御部４０３は、メモリ制御部４０２に対し、ＭＡＣアドレス割り当て要求を送信し、メモリ制御部４０２により優先度テーブル１５０１のうちはじめに最優先テーブル１５０１ａを検索し、ＭＡＣアドレスの使用状況が「未使用」のＭＡＣアドレスを抽出する（ステップＳ２００２）。そして、ＶＭ制御部４０３は、ＶＭ１０２に割り当て可能なＭＡＣアドレスがあるか判断する（ステップＳ２００３）。
【０１００】
最優先テーブル１５０１ａに割り当て可能なＭＡＣアドレスがあれば（ステップＳ２００３：Ｙｅｓ）、ＭＡＣアドレス使用状況を「未使用」から「使用中」に変更し、最優先テーブル１５０１ａから抽出したＭＡＣアドレスでＶＭ１０２を作成し（ステップＳ２００４）、該当するＶＭ１０２にこの抽出したＭＡＣアドレスを割り当て（払い出し）、処理を終了する。
【０１０１】
一方、最優先テーブル１５０１ａにて割り当て可能なＭＡＣアドレスがなければ（ステップＳ２００３：Ｎｏ）、次に、メモリ制御部４０２により優先度テーブル１５０１のうち優先テーブル１５０１ｂを検索し、ＭＡＣアドレスの使用状況が「未使用」のＭＡＣアドレスを抽出する（ステップＳ２００５）。そして、ＶＭ制御部４０３は、ＶＭ１０２に割り当て可能なＭＡＣアドレスがあるか判断する（ステップＳ２００６）。
【０１０２】
優先テーブル１５０１ｂに割り当て可能なＭＡＣアドレスがあれば（ステップＳ２００６：Ｙｅｓ）、ＭＡＣアドレス使用状況を「未使用」から「使用中」に変更し、優先テーブル１５０１ｂから抽出したＭＡＣアドレスでＶＭ１０２を作成する（ステップＳ２００７）。そして、該当するＶＭ１０２にこの抽出したＭＡＣアドレスを割り当て（払い出し）、処理を終了する。優先テーブル１５０１ｂに割り当て可能なＭＡＣアドレスがなければ（ステップＳ２００６：Ｎｏ）、処理を終了する。
【０１０３】
以上の実施例２によれば、実施例１と同様の効果を有する。加えて、実施例２によれば、学習数（テーブル列数）が異なる種別のスイッチ（ＳＷ１，２）が混在した場合に対応できるようになる。特に、優先度テーブルを用いて、スイッチ種別毎に異なる学習数（テーブル列数）を考慮して割り当て計画テーブルに登録する各ＭＡＣアドレスの優先度を判断する。これにより、優先度が高いＭＡＣアドレスの検索を効率化できるとともに、非優先のＭＡＣアドレスは払い出さないため、いずれか一方のスイッチ（ＳＷ１，２）に登録できないＭＡＣアドレスによるフラッディングの発生を防止できる。
【０１０４】
そして、以上説明した実施の形態によれば、クラウド環境において物理サーバ上に複数の仮想マシンを動作させるデータセンタ等のサーバ仮想化技術において、仮想マシン毎に設けられる複数の仮想ＭＩＣに対するＭＡＣアドレスの割り当てを効率的に行うことができる。特に、ネットワーク内のスイッチの性能を上げることなく、スイッチが学習可能なＭＡＣアドレス数を管理サーバの管理処理により効率的に増やすことができる。そして、低コストにデータセンタ内のＭＡＣアドレスの割り当てを行うことができ、ＭＡＣアドレスの検索性能も向上できるようになる。
【０１０５】
また、スイッチの学習テーブル相当の割り当て計画テーブルを管理サーバに作成して、割り当て計画テーブルに登録されていないＭＡＣアドレスについては、ＶＭへ払い出しを行わない。これにより、ＶＭには、スイッチの学習不可が起きないＭＡＣアドレスが割り当てられ、スイッチの学習不可を防ぐことができる。
【０１０６】
なお、本実施の形態で説明した仮想マシン管理方法は、予め用意されたプログラムをコンピュータで実行することにより実現することができる。また、このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネット等のネットワークを介して配布してもよい。
【０１０７】
上述した各実施の形態に関し、さらに以下の付記を開示する。
（付記１）ネットワーク内の複数の仮想マシンに割り当てるＭＡＣアドレスを管理する仮想マシン管理装置において、
前記ネットワークの情報と前記ネットワーク内のスイッチの情報を用いて、前記スイッチの学習テーブルと同じ学習数のテーブル列数を有し、前記ＭＡＣアドレスの割り当てを行うための割り当て計画テーブルを作成する作成手段と、
前記ＭＡＣアドレスを前記スイッチのハッシュ関数を用いて、前記割り当て計画テーブルの該当するハッシュ値のテーブル列に所定の順序を有して登録する登録手段と、
前記テーブル列数の範囲内に登録されたＭＡＣアドレスを所定の順序を有して読み出し、前記仮想マシンに割り当てる割り当て手段と、
を有することを特徴とする仮想マシン管理装置。
【０１０８】
（付記２）前記登録手段は、
前記ＭＡＣアドレスが前記割り当て計画テーブルが有するハッシュ値に対するテーブル列数を超える場合、前記割り当て計画テーブルに前記ＭＡＣアドレスを登録しないことを特徴とする付記１に記載の仮想マシン管理装置。
【０１０９】
（付記３）前記作成手段は、
前記スイッチの情報として、前記ハッシュ関数の情報と、前記学習数と、前記ハッシュ値のビット数、および前記テーブル列数とを収集し、前記割り当て計画テーブルを、前記ハッシュ関数の情報と、前記学習数と、前記ハッシュ値のビット数、および前記テーブル列数に基づくテーブルサイズを有して作成することを特徴とする付記１または２に記載の仮想マシン管理装置。
【０１１０】
（付記４）前記登録手段は、
前記スイッチの前記ＭＡＣアドレスの検索時の走査方向に一致する所定の順序を有して前記ＭＡＣアドレスを登録することを特徴とする付記１〜３のいずれか一つに記載の仮想マシン管理装置。
【０１１１】
（付記５）前記割り当て手段は、
前記割り当て計画テーブルの各ＭＡＣアドレス毎に、前記仮想マシンに対する割り当ての有無を保持し、
前記スイッチの前記ＭＡＣアドレスの検索時の走査方向に一致する所定の順序を有して未割り当て状態のＭＡＣアドレスを、割り当て要求された前記仮想マシンに割り当てることを特徴とする付記１〜４のいずれか一つに記載の仮想マシン管理装置。
【０１１２】
（付記６）前記ＭＡＣアドレスが前記割り当て計画テーブルに登録されていない場合、当該ＭＡＣアドレスの割り当て要求が行えないことを外部に通知する通知手段を有することを特徴とする付記１〜５のいずれか一つに記載の仮想マシン管理装置。
【０１１３】
（付記７）前記作成手段は、
前記ネットワークの情報として、当該ネットワークに設けられる前記スイッチの種別を収集し、当該スイッチの種別に対応する数の割り当て計画テーブルをそれぞれ作成し、
前記スイッチの種別が複数の場合には、さらに、
テーブルサイズが異なり複数作成される前記割り当て計画テーブルにそれぞれ登録される前記ＭＡＣアドレスのテーブル列の位置に基づいて、前記ＭＡＣアドレス毎の割り当ての優先度テーブルを作成し、
前記割り当て手段は、
優先度が高い前記ＭＡＣアドレスから順に前記仮想マシンに割り当てる
ことを特徴とする付記１〜６のいずれか一つに記載の仮想マシン管理装置。
【０１１４】
（付記８）前記登録手段は、
前記ＭＡＣアドレスが前記割り当て計画テーブルが有するハッシュ値に対するテーブル列数を超える場合、前記割り当て計画テーブルに前記ＭＡＣアドレスを登録せずに、非優先テーブルに登録することを特徴とする付記１に記載の仮想マシン管理装置。
【０１１５】
（付記９）ネットワーク内の複数の仮想マシンに割り当てるＭＡＣアドレスを管理する仮想マシン管理方法において、
前記ネットワークの情報と前記ネットワーク内のスイッチの情報を用いて、前記スイッチの学習テーブルと同じ学習数のテーブル列数を有し、前記ＭＡＣアドレスの割り当てを行うための割り当て計画テーブルを作成する作成工程と、
前記ＭＡＣアドレスを前記スイッチのハッシュ関数を用いて、前記割り当て計画テーブルの該当するハッシュ値のテーブル列に所定の順序を有して登録する登録工程と、
前記テーブル列数の範囲内に登録されたＭＡＣアドレスを所定の順序を有して読み出し、前記仮想マシンに割り当てる割り当て工程と、
を含むことを特徴とする仮想マシン管理方法。
【０１１６】
（付記１０）前記登録工程は、
前記ＭＡＣアドレスが前記割り当て計画テーブルが有するハッシュ値に対するテーブル列数を超える場合、前記割り当て計画テーブルに前記ＭＡＣアドレスを登録しないことを特徴とする付記９に記載の仮想マシン管理方法。
【０１１７】
（付記１１）前記登録工程は、
前記スイッチの前記ＭＡＣアドレスの検索時の走査方向に一致する所定の順序を有して前記ＭＡＣアドレスを登録することを特徴とする付記９または１０に記載の仮想マシン管理方法。
【０１１８】
（付記１２）前記割り当て工程は、
前記割り当て計画テーブルの各ＭＡＣアドレス毎に、前記仮想マシンに対する割り当ての有無を保持し、
前記スイッチの前記ＭＡＣアドレスの検索時の走査方向に一致する所定の順序を有して未割り当て状態のＭＡＣアドレスを、割り当て要求された前記仮想マシンに割り当てることを特徴とする付記９〜１１のいずれか一つに記載の仮想マシン管理方法。
【符号の説明】
【０１１９】
１００  データセンタ
１０１  物理マシン
１０２  仮想マシン（ＶＭ）
１０３  仮想ＮＩＣ
１０５  スイッチ（ＳＷ）
１０５ａ  スイッチ（ＳＷ１）
１０５ｂ  スイッチ（ＳＷ２）
１０６  ルータ
１１０  管理サーバ
１１１  保守端末
２０１  制御部（ＣＰＵ）
２０２  メモリ
２１０  割り当て計画テーブル
４０１  要求受付部
４０２  メモリ制御部
４０３  ＶＭ制御部
４０４  通信制御部
６０１  ネットワーク情報テーブル
７０１  スイッチ情報テーブル
９０１  非優先テーブル
１４１０  ＳＷの学習テーブル
１５０１  優先度テーブル
１５０１ａ  最優先テーブル
１５０１ｂ  優先テーブル
１５０１ｃ  非優先テーブル
【図１】
2014195174.tif 000003
【図２】
2014195174.tif 000004
【図３】
2014195174.tif 000005
【図４】
2014195174.tif 000006
【図５】
2014195174.tif 000007
【図６】
2014195174.tif 000008
【図７】
2014195174.tif 000009
【図８】
2014195174.tif 000010
【図９】
2014195174.tif 000011
【図１０】
2014195174.tif 000012
【図１１】
2014195174.tif 000013
【図１２】
2014195174.tif 000014
【図１３】
2014195174.tif 000015
【図１４】
2014195174.tif 000016
【図１５】
2014195174.tif 000017
【図１６】
2014195174.tif 000018
【図１７】
2014195174.tif 000019
【図１８】
2014195174.tif 000020
【図１９】
2014195174.tif 000021
【図２０】
2014195174.tif 000022