(57)【要約】【課題】負荷を軽減したマルチレイヤ仮想ネットワークを構築する。【解決手段】例えば、サーバPhM1の仮想ＳＷ（ｓ１）は、仮想ネットワークに属するＶＭを識別する第１のＭＡＣアドレス、同一の物理Ｌ２セグメントに属するサーバの各々で動作するＶＭ同士の通信に用いられる第２のＭＡＣアドレス、および、異なる物理Ｌ２セグメントに属するサーバの各々で動作するＶＭ同士の通信に用いられるＩＰアドレス、をＶＭごとに関連付けた転送テーブルｔ１と、同一の物理Ｌ２セグメントに属するサーバの各々で動作するＶＭ同士でやり取りされるフレームを第２のＭＡＣアドレスによってＬ２カプセル化するＬ２カプセル化モジュールｃ１１と、異なる物理Ｌ２セグメントに属するサーバの各々で動作するＶＭ同士でやり取りされるフレームを第２のＭＡＣアドレスおよびＩＰアドレスによってＬ３カプセル化するＬ３カプセル化モジュールｃ１２部と、振分機能部ｄ１を備える。【選択図】図１
2017200099.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンが動作する複数のサーバが接続されて仮想ネットワークを構築する仮想化システムであって、
前記サーバの各々は、
自身の前記サーバで動作する仮想マシンを前記仮想ネットワーク上でつなぐ仮想スイッチを備えており、
前記仮想スイッチの各々は、
前記仮想ネットワークに属する前記仮想マシンを識別する第１のＭＡＣアドレス、
同一の物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士の通信に用いられる第２のＭＡＣアドレス、および、
異なる物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士の通信に用いられるＩＰアドレス、を前記仮想ネットワークに属する前記仮想マシンごとに関連付けた転送テーブルと、
前記同一の物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士でやり取りされるフレームを前記第２のＭＡＣアドレスによってＬ２カプセル化したりＬ２デカプセル化したりするＬ２カプセル化部と、
前記異なる物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士でやり取りされるフレームを前記第２のＭＡＣアドレスおよび前記ＩＰアドレスによってＬ３カプセル化したりＬ３デカプセル化したりするＬ３カプセル化部と、
前記転送テーブルによって前記Ｌ２カプセル化と前記Ｌ３カプセル化を振り分ける振分機能部と、を備える、
ことを特徴とする仮想化システム。
【請求項２】
前記仮想スイッチの各々は、
前記仮想ネットワークのＩＤを含むフレームを受信した際に、前記受信したフレームに含まれる前記第１のＭＡＣアドレスおよび前記第２のＭＡＣアドレスもしくは前記ＩＰアドレスが前記転送テーブルに存在しない場合、前記Ｌ２カプセル化部でＬ２デカプセル化された場合は、前記受信したフレームに含まれる前記第１のＭＡＣアドレスと前記第２のＭＡＣアドレスを、前記Ｌ３カプセル化部でＬ３デカプセル化された場合は、前記受信したフレームに含まれる前記第１のＭＡＣアドレスと前記第２のＭＡＣアドレスと前記ＩＰアドレスを、前記転送テーブルに追加登録する、
ことを特徴とする請求項１に記載の仮想化システム。
【請求項３】
複数の仮想マシンが動作する複数のサーバが接続されて仮想ネットワークを構築する仮想化システムにおける転送方法であって、
前記サーバの各々は、
自身の前記サーバで動作する仮想マシンを前記仮想ネットワーク上でつなぐ仮想スイッチを備えており、
前記仮想スイッチの各々が、
前記仮想ネットワークのＩＤを含むフレームを受信するステップと、
前記仮想ネットワークに属する前記仮想マシンを識別する第１のＭＡＣアドレスを有する転送テーブルを参照して、前記受信したフレームの宛先となる仮想マシンを特定するステップと、
前記宛先となる仮想マシンについて、前記転送テーブル内に、同一の物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士の通信に用いられる第２のＭＡＣアドレスが格納されており、異なる物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士の通信に用いられるＩＰアドレスが格納されていない場合、前記受信したフレームを前記第２のＭＡＣアドレスによってＬ２カプセル化したりＬ２デカプセル化したりするＬ２カプセル化ステップと、
前記宛先となる仮想マシンについて、前記転送テーブル内に、前記第２のＭＡＣアドレスおよび前記ＩＰアドレスが格納されている場合、前記受信したフレームを前記第２のＭＡＣアドレスおよび前記ＩＰアドレスによってＬ３カプセル化したりＬ３デカプセル化したりするＬ３カプセル化ステップと、を実行する、
ことを特徴とする転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ネットワークを構築する技術に関する。なお、「ネットワーク」という語を、「ＮＷ」（Network）と表記する場合もある。
【背景技術】
【０００２】
仮想化技術の発達により、データセンタや物理サーバ（単に、「サーバ」と呼ぶ場合もある）に多数の仮想マシン（ＶＭ（Virtual Machine）と呼ぶ場合もある）を実装させることが可能となった。これらの仮想マシンは、ＶＬＡＮ（Virtual Local Area Network）などの仮想ネットワークによって互いに接続され、通信や連携を行うことで、さまざまなサービスを実現することができる。このため、マルチテナントを収容する仮想データセンタなどを構築する際に、多数の仮想ネットワークを構築できるようにしたいという要望がある。しかし、例えば、IEEE802.1q（IEEEは登録商標）に従って構築可能となるＶＬＡＮの最大数が4094であるように、従来のネットワーク規格では、構築可能な仮想ネットワークの最大数は小さく、もはや上記の要望に対応することが困難になっている。
【０００３】
上記の問題を解決する方法として、Ｌ２フレームのカプセル化によるオーバレイネットワークを構築する手段が提案されている。具体的には、Ｌ３ＮＷへのオーバレイを行うＶＸＬＡＮ（Virtual eXtensible Local Area Network）（例えば、非特許文献１を参照）やＬ２ＮＷへのオーバレイを行うIEEE802.1ah（例えば、非特許文献２を参照）を用いた手段が提案されている。これらの手段によれば、仮想データセンタなどに構築可能な仮想ネットワークの最大数を1600万程度に拡張することができる。
なお、「Ｌ２」は、ＯＳＩ（Open Systems Interconnection）参照モデルの第２層（データリンク層）でありEthernet（Ethernetは登録商標）等に対応し、「Ｌ３」は、ＯＳＩ参照モデルの第３層（ネットワーク層）でありIP(Internet Protocol)等に対応する。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】RFC7348［online］、［平成28年4月7日検索］、インターネット<ＵＲＬ:https://www.rfc-editor.org/rfc/pdfrfc/rfc7348.txt.pdf>
【非特許文献２】802.1ah-2008 - IEEE Standard for Local and metropolitan area networks -- Virtual Bridged Local Area Networks Amendment 7: Provider Backbone Bridges［online］、［平成28年4月7日検索］、インターネット<ＵＲＬ: http://www.techstreet.com/ieee/products/vendor_id/3689>
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、フレームのＬ２カプセル化、つまりEthernetカプセル化を行うIEEE802.1ahに対し、ＶＸＬＡＮでは、フレームのＬ３カプセル化、つまりUDP(User Datagram Protocol)/IP/Ethernetカプセル化を行うため、カプセル化のオーバヘッド（Ｌ２カプセル化では１段階、Ｌ３カプセル化では３段階）およびフレームのオーバヘッドが大きい（Ｌ２カプセル化では22Byte、Ｌ３カプセル化では50Byte）。このため、複数の物理サーバを同一の物理Ｌ２セグメント内に構築することが多い仮想データセンタに対し、ＶＸＬＡＮを導入することは、余計な負荷が大きくなり、通信性能の低下を招くおそれがある。
一方、フレームサイズも含めてオーバヘッドを小さく済ませることができるIEEE802.1ahだけでは、物理Ｌ２セグメントを越えＬ３ＮＷを介した仮想ネットワークを構築することができない。
【０００６】
このような事情に鑑みて、本発明は、負荷を軽減した効率的なマルチレイヤ仮想ネットワークを構築することを課題とする。
【課題を解決するための手段】
【０００７】
前記した課題を解決するため、請求項１に記載の発明は、複数の仮想マシンが動作する複数のサーバが接続されて仮想ネットワークを構築する仮想化システムであって、前記サーバの各々は、自身の前記サーバで動作する仮想マシンを前記仮想ネットワーク上でつなぐ仮想スイッチを備えており、前記仮想スイッチの各々は、前記仮想ネットワークに属する前記仮想マシンを識別する第１のＭＡＣアドレス、同一の物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士の通信に用いられる第２のＭＡＣアドレス、および、異なる物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士の通信に用いられるＩＰアドレス、を前記仮想ネットワークに属する前記仮想マシンごとに関連付けた転送テーブルと、前記同一の物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士でやり取りされるフレームを前記第２のＭＡＣアドレスによってＬ２カプセル化したりＬ２デカプセル化したりするＬ２カプセル化部と、前記異なる物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士でやり取りされるフレームを前記第２のＭＡＣアドレスおよび前記ＩＰアドレスによってＬ３カプセル化したりＬ３デカプセル化したりするＬ３カプセル化部と、転送テーブルによってＬ２カプセル化とＬ３カプセル化を振分けする振分機能部を備える、ことを特徴とする。
【０００８】
また、請求項３に記載の発明は、複数の仮想マシンが動作する複数のサーバが接続されて仮想ネットワークを構築する仮想化システムにおける転送方法であって、前記サーバの各々は、自身の前記サーバで動作する仮想マシンを前記仮想ネットワーク上でつなぐ仮想スイッチを備えており、前記仮想スイッチの各々が、前記仮想ネットワークのＩＤを含むフレームを受信するステップと、前記仮想ネットワークに属する前記仮想マシンを識別する第１のＭＡＣアドレスを有する転送テーブルを参照して、前記受信したフレームの宛先となる仮想マシンを特定するステップと、前記宛先となる仮想マシンについて、前記転送テーブル内に、同一の物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士の通信に用いられる第２のＭＡＣアドレスが格納されており、異なる物理Ｌ２セグメントに属する前記サーバの各々で動作する前記仮想マシン同士の通信に用いられるＩＰアドレスが格納されていない場合、前記受信したフレームを前記第２のＭＡＣアドレスによってＬ２カプセル化したりＬ２デカプセル化したりするＬ２カプセル化ステップと、前記宛先となる仮想マシンについて、前記転送テーブル内に、前記第２のＭＡＣアドレスおよび前記ＩＰアドレスが格納されている場合、前記受信したフレームを前記第２のＭＡＣアドレスおよび前記ＩＰアドレスによってＬ３カプセル化したりＬ３デカプセル化したりするＬ３カプセル化ステップと、を実行する、ことを特徴とする。
【０００９】
請求項１，３に記載の発明によれば、仮想マシンが動作するサーバの各々が、第１のＭＡＣアドレス、第２のＭＡＣアドレス、および、ＩＰアドレスを、仮想マシンごとに関連付けた転送テーブルを備えることで、Ｌ２ＮＷおよびＬ３ＮＷのオーバレイ技術を組み合わせたマルチレイヤ仮想ネットワークを構築することができる。これにより、物理Ｌ２セグメントを越えＬ３ＮＷを介するＬ３カプセル化の通信に、カプセル化／デカプセル化処理およびフレームのオーバヘッドを小さくし負荷を軽減することができるＬ２カプセル化による、同一の物理Ｌ２セグメント内の通信を導入することができ、通信性能の低下を回避することができる。
したがって、負荷を軽減した効率的なマルチレイヤ仮想ネットワークを構築することができる。
【００１０】
また、請求項２に記載の発明は、請求項１に記載の仮想化システムであって、前記仮想スイッチの各々は、前記仮想ネットワークのＩＤを含むフレームを受信した際に、前記受信したフレームに含まれる前記第１のＭＡＣアドレスおよび前記第２のＭＡＣアドレスもしくは前記ＩＰアドレスが前記転送テーブルに存在しない場合、前記Ｌ２カプセル化部でＬ２デカプセル化された場合は、前記受信したフレームに含まれる前記第１のＭＡＣアドレスと前記第２のＭＡＣアドレスを、前記Ｌ３カプセル化部でＬ３デカプセル化された場合は、前記受信したフレームに含まれる前記第１のＭＡＣアドレスと前記第２のＭＡＣアドレスと前記ＩＰアドレスを、前記転送テーブルに追加登録する、ことを特徴とする。
【００１１】
請求項２に記載の発明によれば、転送テーブル内に第１のＭＡＣアドレスも第２のＭＡＣアドレスも存在しない未学習の仮想マシンが存在する場合には、仮想スイッチの各々がフレームを受信する際に、フレームを送信した当該仮想マシンの第１のＭＡＣアドレスおよび第２のＭＡＣアドレスを自動的に学習する。このため、通信の際には、フレームの宛先となる仮想マシンを転送テーブルから特定することができるようになる。
【発明の効果】
【００１２】
本発明によれば、負荷を軽減した効率的なマルチレイヤ仮想ネットワークを構築することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態の仮想化システムの機能構成図の例である。
【図２】転送テーブルの説明図である。
【図３】本実施形態の通信開始処理のフローチャートである。
【図４】本実施形態の通信処理（アドレス情報学習済）のフローチャートである。
【発明を実施するための形態】
【００１４】
本発明の実施形態について、図面を参照しながら詳細に説明する。
【００１５】
≪全体構成≫
図１に示すように、本実施形態の仮想化システムは、Ｌ２ＮＷおよびＬ３ＮＷ上に、物理サーバPhM1〜ＰｈＭ５が配置され、これら物理サーバPhM1〜ＰｈＭ５が、ブリッジｂ１〜ｂ４およびルータｒ１〜ｒ２によって通信可能なように接続されたマルチレイヤ仮想ネットワークを構成するシステムである。Ｌ２ＮＷは、通常のEthernetによるネットワークと同様に構成されており、そのＬ２ＮＷ上に、例えば、IEEE802.1ah（以下、単に、「802.1ah」と記載する場合がある。）のネットワークをオーバレイする形になる。また、Ｌ３ＮＷも、通常のＩＰネットワークと同様に構成されており、例えば、ＶＸＬＡＮによりＬ２ＮＷをオーバレイする形である。サーバPhM1〜ＰｈＭ３は、ハイパバイザなどのＶＭ生成・制御用プログラムを備え、自身上で動作可能な１または複数のＶＭを有する。また、サーバPhM1〜ＰｈＭ３は、ＶＭ生成・制御用プログラムを備えないサーバＰｈＭ４，ＰｈＭ５ともＬ２カプセル化モジュールを搭載したブリッジ（ｂ４）、Ｌ３カプセル化モジュールを搭載したルータ（ｒ２）を介して通信することができる。
【００１６】
また、サーバPhM1〜ＰｈＭ５は、記憶部、制御部、通信部、入力部、出力部といったハードウェアを備えたコンピュータである。制御部は、例えば、記憶部に記憶されているプログラムを記憶部の記憶領域に展開し実行することにより、さまざまな処理を実行することができる。本実施形態の仮想化システムは、このようなソフトウェアとハードウェアの協働を実現することができる。
【００１７】
本実施形態の仮想化システムは、Ｌ２ＮＷおよびＬ３ＮＷに対して１つの仮想ネットワークを構築することができる。この仮想ネットワークは、サーバPhM1〜ＰｈＭ５で動作する任意の仮想マシン間で通信が行われるときの通信経路に応じて、ここでは仮想ネットワークｖＮＷａ〜ｖＮＷｃの３種類に分類することができる。
【００１８】
ｖＮＷａは、同一のサーバ上で動作する仮想マシン同士（例えば、PhM1上で動作するＶＭ１，ＶＭ２）の通信を実現する仮想ネットワークである。
ｖＮＷｂは、同一の物理Ｌ２セグメントに属するサーバの各々で動作する仮想マシン同士（例えば、Ｌ２ＮＷ上に配置されているPhM1上で動作するＶＭ３と、Ｌ２ＮＷ上に配置されているＰｈＭ２上で動作するＶＭ５）の通信を実現する仮想ネットワークである。
ｖＮＷｃは、異なる物理Ｌ２セグメントに属するサーバの各々で動作する仮想マシン同士（例えば、Ｌ２ＮＷ上に配置されているPhM1上で動作するＶＭ４と、ルータｒ１を介してＬ３ＮＷで接続されているＰｈＭ３上で動作するＶＭ７）の通信を実現する仮想ネットワークである。
【００１９】
サーバPhM1は、仮想マシンＶＭ１〜ＶＭ４と、仮想ＳＷ（ｓ１）とを備える。仮想ＳＷ（ｓ１）は、仮想マシンＶＭ１〜ＶＭ４の論理ポートをＬ２で結ぶことで、仮想マシンＶＭ１〜ＶＭ４を仮想ネットワーク上でつなぐ。仮想ＳＷ（ｓ１）は、Ｌ２ＮＷおよびＬ３ＮＷに対して構築される仮想ネットワークのスイッチとして機能する。
【００２０】
仮想ＳＷ（ｓ１）は、Ｌ２カプセル化モジュールｃ１１（Ｌ２カプセル化部の例）と、Ｌ３カプセル化モジュールｃ１２（Ｌ３カプセル化部の例）と、振分機能部ｄ１と、転送テーブルｔ１とを備える。
【００２１】
Ｌ２カプセル化モジュールｃ１１は、サーバPhM1と同一の物理Ｌ２セグメントに属するサーバの各々で動作する仮想マシン同士（例えば、図１に示すＶＭ３とＶＭ５）でやり取りされるフレームをＬ２カプセル化したりＬ２デカプセル化したりする。フレームのＬ２カプセル化およびＬ２ＮＷでの転送には、サーバPhM1の物理ポートに紐付いた、第２のＭＡＣアドレス（後記するOuter MAC）を使用する。
【００２２】
Ｌ３カプセル化モジュールｃ１２は、異なる物理Ｌ２セグメントに属するサーバの各々で動作する仮想マシン同士（例えば、図１に示すＶＭ４とＶＭ７）でやり取りされるフレームをＬ３カプセル化したりＬ３デカプセル化したりする。フレームのＬ３カプセル化およびＬ３デカプセル化には、サーバPhM1の物理ポートに紐付いた、第２のＭＡＣアドレスおよびIPアドレス（後記するOuter MACおよびOuter IP）を使用する。
【００２３】
振分機能部ｄ１は、Ｌ２カプセル化とＬ３カプセル化を振り分ける。具体的には、送信するフレームを、そのフレームの宛先となるＶＭに応じて、Ｌ２カプセル化モジュールｃ１１またはＬ３カプセル化モジュールｃ１２に振り分ける。
転送テーブルｔ１は、仮想ネットワークに接続する仮想マシン同士の転送用のエントリを、仮想マシンごとに登録する。転送テーブルの詳細は後記する。
【００２４】
サーバＰｈＭ２が備える仮想ＳＷ（ｓ２）、および、サーバＰｈＭ３が備える仮想ＳＷ（ｓ３）は、仮想ＳＷ（ｓ１）と同等の機能を有する。
サーバＰｈＭ２が備えるＬ２カプセル化モジュールｃ２１、および、サーバＰｈＭ３が備えるＬ２カプセル化モジュールｃ３１は、Ｌ２カプセル化モジュールｃ１１と同等の機能を有する。
サーバＰｈＭ２が備えるＬ３カプセル化モジュールｃ２２、および、サーバＰｈＭ３が備えるＬ３カプセル化モジュールｃ３２は、Ｌ２カプセル化モジュールｃ１２と同等の機能を有する。
サーバＰｈＭ２が備える振分機能部ｄ２、および、サーバＰｈＭ３が備える振分機能部ｄ３は、振分機能部ｄ１と同等の機能を有する。
【００２５】
ＶＭ生成・制御用プログラムを備えないサーバＰｈＭ４は、Ｌ２カプセル化モジュールｃ４１を備えているブリッジｂ４に接続することで、Ｌ２ＮＷおよびＬ３ＮＷに対して構築されて仮想ネットワークを介して各種ＶＭ１〜ＶＭ８と通信することができる。
ＶＭ生成・制御用プログラムを備えないサーバＰｈＭ５は、Ｌ３カプセル化モジュールｃ５２を備えているルータｒ２に接続することで、Ｌ２ＮＷおよびＬ３ＮＷに対して構築されて仮想ネットワークを介して各種ＶＭ１〜ＶＭ８と通信することができる。
【００２６】
［転送テーブルの詳細］
図２に示すように、転送テーブルｔ４〜ｔ６は、図１の転送テーブルｔ１〜ｔ３と同等の機能を有しており、Ｌ２ＮＷおよびＬ３ＮＷに対して構築される仮想ネットワークに配置されている「PhM1」、「PhM3」、および「L2SW4」がそれぞれ備えている。なお、PhM1やPhM3はVTEP（VXLAN Tunnel End Point）となっており、サーバが備える機能の１つであり、具体的には、ハイパバイザ、ＴＯＲ（Top of Rack）スイッチである。「L2SW4」は、802.1ahに従うＬ２スイッチである。
【００２７】
「PhM1」が備える転送テーブルｔ４は、「VNI（Virtual Network ID；仮想ネットワークID）」、「Inner MAC（Media Access Controller）」、「Outer IP（Internet Protocol）」、および、「Outer MAC」といった欄を有し、仮想マシンごとにエントリが作成される。
「VNI」欄には、「PhM1」が配置されている仮想ネットワークの識別子が格納される。
「Inner MAC」欄には、VNIで識別される仮想ネットワークに属する仮想マシンを識別するＭＡＣアドレス（第１のＭＡＣアドレス）の値が格納される。
【００２８】
「Outer IP」欄には、Ｌ３カプセル化用のＩＰアドレスの値が格納される。このＩＰアドレスは、異なる物理Ｌ２セグメントに属するサーバの各々で動作する仮想マシン同士の通信に用いられる。
「Outer MAC」欄には、Ｌ２カプセル化用およびＬ３カプセル化用のＭＡＣアドレス（第２のＭＡＣアドレス）の値が格納される。このＭＡＣアドレスは、同一の物理Ｌ２セグメントに属するサーバの各々で動作する仮想マシン同士の通信に用いられる。
【００２９】
転送テーブルｔ４において、「PhM1」内にあるＶＭ３は、「Inner MAC」は「mac3」であり、Ｌ３カプセル化は不要なため「Outer IP」は「Local」であり、Ｌ２カプセル化は不要なため「Outer MAC」は「Local」である。
同様に、「PhM1」内にあるＶＭ４は、「Inner MAC」は「mac4」であり、Ｌ３カプセル化は不要なため「Outer IP」は「Local」であり、Ｌ２カプセル化は不要なため「Outer MAC」は「Local」である。
【００３０】
また、「PhM3」内にあるＶＭ７は、「Inner MAC」は「mac7」であり、Ｌ３カプセル化は必要となるため「Outer IP」は「PhM3」（ＶＭ７が接続している物理サーバの識別子を示す）であり、かつ、「Outer MAC」は「r11」（ＶＭ７が接続しているＬ３ＮＷへのネクストホップであるルータの識別子を示す）である。
また、「L2SW4」に接続しているＰｈＭ４は、「Inner MAC」は「mac40」であり、Ｌ３カプセル化は不要なため「Outer IP」はブランクであるが、Ｌ２カプセル化は必要となるため、「Outer MAC」は「sw4」（ＰｈＭ４が接続しているＬ２スイッチの識別子を示す）である。
【００３１】
転送テーブルｔ４において、mac1〜mac7のエントリはＶＸＬＡＮ転送に用いられる通常のエントリである（図２では、転送テーブルｔ４が有するエントリのうち、本発明の特徴を説明するのに不要となるエントリについては便宜的に図示を省略している（転送テーブルｔ５，ｔ６についても同様））。本実施形態では、ＶＸＬＡＮ転送用にエントリに、802.1ah転送用のエントリ（つまり、ＰｈＭ４のエントリ）を追加する態様で転送テーブルｔ４を作成することができる。802.1ah転送用のエントリは、802.1ahフレームの自動学習機能により生成することができる。転送テーブルｔ４がこのような態様をとることで、種類の異なるＬ２ＮＷおよびＬ３ＮＷを経由するフレームの転送を同じように扱うことができる。
【００３２】
「PhM3」は、「PhM1」と同様、ＶＸＬＡＮ転送を行うため、「PhM3」が備える転送テーブルｔ６は、転送テーブルｔ４と同様の形式のエントリを有する。なお、「PhM3」と「PhM1」との仮想ネットワーク上の位置が異なるため、転送テーブルｔ４，ｔ６の間で、各仮想マシンについて「Outer IP」欄の値および「Outer MAC」欄の値は異なっている。
【００３３】
「L2SW4」は、802.1ah転送を行うが、ＶＸＬＡＮ転送は行わないため、転送テーブルｔ５は、「VNI」、「Inner MAC」、および、「Outer MAC」といった欄を有し、「Outer IP」欄を有することなく、仮想マシンごとにエントリが作成される。なお、「L2SW4」と「PhM3」と「PhM1」との仮想ネットワーク上の位置が異なるため、転送テーブルｔ４〜ｔ６の間で、各仮想マシンについて「Outer MAC」欄の値は異なっている。
【００３４】
［仮想マシン間の通信態様１〜３］
本実施形態のマルチレイヤ仮想ネットワークの構成を採用する場合、仮想マシン間の通信は、以下の通信態様１〜３に分類される。
通信態様１：同一サーバの仮想ＳＷ内での通信
通信態様２：同一物理Ｌ２セグメント内での通信（Ｌ２ＮＷを介した通信）
通信態様３：異なる物理Ｌ２セグメント間の通信（Ｌ３ＮＷを介した通信）
【００３５】
（通信態様１）
例えば、サーバＰｈＭ１（図１参照）上で動作するＶＭ１とＶＭ２との仮想ＳＷ（ｓ１）内での通信を例に説明する。
まず、ＶＭ１は、ＡＲＰリクエストをＶＭ２に送信する。このとき、仮想ＳＷ（ｓ１）は、ＶＭ１のアドレス情報（具体的には、Inner MAC）を学習する。次に、ＶＭ２は、ＡＲＰリプライをＶＭ１に送信する。このとき、ＶＭ１および仮想ＳＷ（ｓ１）は、ＶＭ２のアドレス情報（具体的には、Inner MAC）を学習する。その後、ＶＭ１とＶＭ２との間でＭＡＣフレームをＩＰで送受信する。
【００３６】
（通信態様２）
例えば、サーバＰｈＭ１（図１参照）上で動作するＶＭ３と、サーバＰｈＭ２上で動作するＶＭ５と間の通信を例に説明する。
まず、ＶＭ３は、Ｌ２カプセル化モジュールｃ１１およびＬ２カプセル化モジュールｃ２１を介して、ＡＲＰリクエストをＶＭ５に送信する。このとき、Ｌ２カプセル化モジュールｃ１１は、ＡＲＰリクエストをＬ２カプセル化し、ブロードキャストでＬ２カプセル化モジュールｃ２１に送信する。また、Ｌ２カプセル化モジュールｃ２１は、サーバＰｈＭ１のＭＡＣアドレスとＶＭ３のアドレス情報（具体的には、Inner MACおよびOuter MAC）を学習する。また、仮想ＳＷ（ｓ２）は、ＶＭ１のアドレス情報（具体的には、Inner MAC）を学習する。
【００３７】
次に、ＶＭ５は、Ｌ２カプセル化モジュールｃ２１およびＬ２カプセル化モジュールｃ１１を介して、ＡＲＰリプライをＶＭ３に送信する。このとき、Ｌ２カプセル化モジュールｃ２１は、ＡＲＰリプライをＬ２カプセル化し、Ｌ２カプセル化モジュールｃ１１に送信する。また、Ｌ２カプセル化モジュールｃ１１は、サーバＰｈＭ２のＭＡＣアドレスとＶＭ５のアドレス情報（具体的には、Inner MACおよびOuter MAC）を学習する。また、ＶＭ３および仮想ＳＷ（ｓ１）は、ＶＭ５のアドレス情報（具体的には、Inner MAC）を学習する。
【００３８】
その後、ＶＭ３とＶＭ５との間でＭＡＣフレームをＬ２カプセル化して、ＩＰで送受信する。
【００３９】
（通信態様３）
例えば、サーバＰｈＭ１（図１参照）上で動作するＶＭ４と、サーバＰｈＭ３上で動作するＶＭ７と間の通信を例に説明する。
まず、ＶＭ４は、Ｌ３カプセル化モジュールｃ１２およびＬ３カプセル化モジュールｃ３２を介して、ＡＲＰリクエストをＶＭ７に送信する。このとき、Ｌ３カプセル化モジュールｃ１２は、ＡＲＰリクエストをＬ３カプセル化し、ＩＰマルチキャストでＬ３カプセル化モジュールｃ３２に送信する。また、Ｌ３カプセル化モジュールｃ３２は、サーバＰｈＭ１のＩＰアドレスとＶＭ４のアドレス情報（具体的には、Inner MAC、Outer MAC、およびOuter IP）を学習する。また、仮想ＳＷ（ｓ３）は、ＶＭ４のアドレス情報（具体的には、Inner MAC）を学習する。
【００４０】
次に、ＶＭ７は、Ｌ３カプセル化モジュールｃ３２およびＬ３カプセル化モジュールｃ１２を介して、ＡＲＰリプライをＶＭ４に送信する。このとき、Ｌ３カプセル化モジュールｃ３２は、ＡＲＰリプライをＬ３カプセル化し、Ｌ３カプセル化モジュールｃ１２に送信する。また、Ｌ３カプセル化モジュールｃ１２は、サーバＰｈＭ３のＩＰアドレスとＶＭ７のアドレス情報（具体的には、Inner MAC、Outer MAC、およびOuter IP）を学習する。また、ＶＭ４および仮想ＳＷ（ｓ３）は、ＶＭ７のアドレス情報（具体的には、Inner MAC）を学習する。
【００４１】
その後、ＶＭ４とＶＭ７との間でＭＡＣフレームをＬ３カプセル化して、ＩＰで送受信する。
仮想ＳＷ（ｓ１〜ｓ３）の振分機能部ｄ１〜ｄ３は、通信態様２，３のいずれによってフレームをカプセル化するかを判定する。
【００４２】
≪処理≫
本実施形態の仮想化システムが実行する処理について説明する。
図３は、本実施形態の通信開始処理のフローチャートである。この処理は、マルチレイヤ仮想ネットワークに接続されている送信元ＶＭが宛先ＶＭに、マルチレイヤ仮想ネットワークのＩＤを含むフレームを送信しようとする際に実行される。なお、各ＶＭについて、Ｌ３カプセル化のために、仮想ネットワークＩＤ（ＶＮＩ）およびＩＰアドレス（Outer IP）との関連は事前に設定されている。
【００４３】
まず、送信元ＶＭが宛先ＶＭのＭＡＣアドレス（具体的には、Inner MACとOuter MAC）を学習済みであるか否か判定される（ステップＡ１）。学習済みであれば、ステップＢ１（後記図４参照）に進む。学習済みでない場合、送信元ＶＭがＡＲＰ（Address Resolution Protocol）リクエストをブロードキャストで送信する（ステップＡ２）。
【００４４】
次に、送信元ＶＭを管理する仮想ＳＷが、自身の仮想ＳＷ内の各ＶＭ、および、自身の仮想ＳＷが備える振分機能部にブロードキャストする（ステップＡ３）。なお、仮想ＳＷは、送信元ＶＭからのＡＲＰリクエストにより送信元ＶＭのアドレス情報（具体的には、Inner MACとOuter MAC）を学習する。
【００４５】
ここで、宛先ＶＭが、送信元ＶＭと同一のサーバ内のＶＭである場合（ステップＡ４／Ｙｅｓ）、つまり、ＡＲＰリクエストの問合せＩＰが、送信元ＶＭと同一のサーバ内のＶＭのＩＰである場合、ステップＡ１０に進む。
【００４６】
宛先ＶＭが、送信元ＶＭと同一のサーバ内のＶＭでない場合（ステップＡ４でＮｏ）、仮想ＳＷが備える振分機能部が、当該仮想ＳＷが備える、Ｌ２カプセル化モジュールおよびＬ３カプセル化モジュールにＡＲＰリクエストを転送するように指示する（ステップＡ５）。
【００４７】
指示を受けたＬ２カプセル化モジュールおよびＬ３カプセル化モジュールはそれぞれ、ＡＲＰリクエストをカプセル化して転送する（ステップＡ６）。具体的には、Ｌ２カプセル化モジュールは、ＡＲＰリクエストをＬ２カプセル化して、送信元ＶＭが動作するサーバと同一の物理Ｌ２セグメントにあるサーバに対してブロードキャストする。その際、Ｌ２カプセル化されるＡＲＰリクエストには、ＶＮＩに対応するＢ−ＶＩＤ（Backbone VLAN ID）が付与される。また、Ｌ３カプセル化モジュールは、ＡＲＰリクエストをＬ３カプセル化して、送信元ＶＭが動作するサーバが属する物理Ｌ２セグメントとは異なる物理Ｌ２セグメントに属するサーバに対してＩＰマルチキャストする。なお、前記「異なる物理Ｌ２セグメントにあるサーバ」は、ＩＰマルチキャストグループとして予め設定されている。
【００４８】
ここで、宛先ＶＭが、送信元ＶＭが動作するサーバと同一の物理Ｌ２セグメントに属するサーバ内のＶＭである場合（ステップＡ７／Ｙｅｓ）、ステップＡ８に進む。この場合、ＡＲＰリクエストの問合せＩＰが、送信元ＶＭが動作するサーバと同一の物理Ｌ２セグメントに属するサーバ（ただし、送信元ＶＭが動作するサーバとは異なる）内のＶＭのＩＰに等しい。その後、同一の物理Ｌ２セグメントに属するサーバの各々のＬ２カプセル化モジュールは、送信元ＶＭのアドレス情報（具体的には、Inner MACおよびOuter MAC）を学習する（ステップＡ８）。
【００４９】
一方、宛先ＶＭが、送信元ＶＭが動作するサーバと同一の物理Ｌ２セグメントに属するサーバ内のＶＭでない場合（ステップＡ７／Ｎｏ）、宛先ＶＭは、送信元ＶＭが動作するサーバが属する物理Ｌ２セグメントとは異なる物理Ｌ２セグメントに属するサーバ上で動作するＶＭであることを意味する。この場合、（あらかじめ設定されたＩＰマルチキャストグループに属する）サーバの各々のＬ３カプセル化モジュールは、送信元ＶＭのアドレス情報（具体的には、Inner MAC、Outer MAC、およびOuter IP）を学習する（ステップＡ９）。
【００５０】
その後、送信元ＶＭと同一のサーバ内のＶＭとなる宛先ＶＭ（ステップＡ４／Ｙｅｓ）、送信元ＶＭが動作するサーバと同一の物理Ｌ２セグメントに属するサーバ内のＶＭとなる宛先ＶＭ（ステップＡ７／Ｙｅｓ）、または、送信元ＶＭが動作するサーバが属する物理Ｌ２セグメントとは異なる物理Ｌ２セグメントに属するサーバ上で動作するＶＭとなる宛先ＶＭ（ステップＡ７／Ｎｏ）は、ＡＲＰリプライを返信する（ステップＡ１０）。次に、ＡＲＰリプライを受信したＶＭは、学習したアドレス情報をもとに、ＩＰでの通信を行う（ステップＡ１１）。
以上で、通信開始処理が完了する。
【００５１】
図４は、本実施形態の通信処理（アドレス情報学習済）のフローチャートである。この処理は、送信元ＶＭが宛先ＶＭのＭＡＣアドレスを学習済みである場合（ステップＡ１／Ｙｅｓ）に開始する。この場合、送信元ＶＭは、アドレスを学習したＶＭに関するＡＲＰテーブルを有している。
【００５２】
まず、送信元ＶＭがＡＲＰテーブルから宛先ＶＭのＭＡＣアドレスを抽出し、宛先ＶＭにフレームを送信する（ステップＢ１）。仮想ＳＷは、仮想ＳＷ自身が備える転送テーブルに基づいてフレームを送信する（ステップＢ２）。
【００５３】
ここで、宛先ＶＭが、送信元ＶＭと同一のサーバ内のＶＭである場合（ステップＢ３／Ｙｅｓ）、ステップＢ１０に進む。一方、宛先ＶＭが、送信元ＶＭと同一のサーバ内のＶＭでない場合（ステップＢ３／Ｎｏ）、仮想ＳＷが備える振分機能部が、当該仮想ＳＷが備える転送テーブルに基づいて、当該仮想ＳＷが備える、Ｌ２カプセル化モジュールまたはＬ３カプセル化モジュールにフレームを振り分ける（ように指示する）（ステップＢ４）。
【００５４】
宛先ＶＭが、送信元ＶＭが動作するサーバと同一の物理Ｌ２セグメントに属するサーバ内のＶＭである場合（ステップＢ５／Ｙｅｓ）、（指示を受けた）Ｌ２カプセル化モジュールが転送テーブルから宛先ＶＭのＭＡＣアドレス（Outer MAC）を抽出し、フレームをＬ２カプセル化して宛先ＶＭに送信する（ステップＢ６）。その後、宛先サーバ（宛先ＶＭが動作するサーバ）のＬ２カプセル化モジュールが、フレームを受信してデカプセル化し、宛先サーバが備える仮想ＳＷに送信する（ステップＢ７）。
【００５５】
一方、宛先ＶＭが、送信元ＶＭが動作するサーバと同一の物理Ｌ２セグメントに属するサーバ内のＶＭでない場合（ステップＢ５／Ｎｏ）、宛先ＶＭは、送信元ＶＭが動作するサーバが属する物理Ｌ２セグメントとは異なる物理Ｌ２セグメントに属するサーバ上で動作するＶＭであることを意味する。この場合、（指示を受けた）Ｌ３カプセル化モジュールが転送テーブルから宛先ＶＭのＭＡＣアドレスおよびＩＰアドレスを抽出し、フレームをＬ３カプセル化してパケットとし、ネクストホップへの送信を繰り返して宛先ＶＭに送信する（ステップＢ８）。その後、宛先サーバ（宛先ＶＭが動作するサーバ）のＬ３カプセル化モジュールが、パケットを受信してデカプセル化してフレームとし、宛先サーバが備える仮想ＳＷに送信する（ステップＢ９）。
【００５６】
その後、送信元ＶＭと同一のサーバ内のＶＭとなる宛先ＶＭ（ステップＢ３／Ｙｅｓ）、送信元ＶＭが動作するサーバと同一の物理Ｌ２セグメントに属するサーバ内のＶＭとなる宛先ＶＭ（ステップＢ５／Ｙｅｓ）、または、送信元ＶＭが動作するサーバが属する物理Ｌ２セグメントとは異なる物理Ｌ２セグメントに属するサーバ上で動作するＶＭとなる宛先ＶＭ（ステップＢ５／Ｎｏ）は、フレームを受信する（ステップＢ１０）。
これらの手順を繰り返して本実施形態の通信処理が行われる。
【００５７】
≪まとめ≫
本実施形態によれば、仮想マシンが動作するサーバの各々が、第１のＭＡＣアドレス（Inner MAC）、第２のＭＡＣアドレス（Outer MAC）、および、ＩＰアドレス（Outer IP）を、仮想マシンごとに関連付けた転送テーブルを備えることで、Ｌ２ＮＷおよびＬ３ＮＷのオーバレイ技術を組み合わせたマルチレイヤ仮想ネットワークを構築することができる。これにより、物理Ｌ２セグメントを越えＬ３ＮＷを介するＬ３カプセル化の通信に、カプセル化／デカプセル化処理およびフレームのオーバヘッドを小さくし負荷を軽減することができるＬ２カプセル化による、同一の物理Ｌ２セグメント内の通信を導入することができ、通信性能の低下を回避することができる。
したがって、負荷を軽減した効率的なマルチレイヤ仮想ネットワークを構築することができる。
【００５８】
また、転送テーブル内に第１のＭＡＣアドレスも第２のＭＡＣアドレスも存在しない未学習の仮想マシンが存在する場合には、仮想スイッチの各々がフレームを受信する際に、フレームを送信した当該仮想マシンの第１のＭＡＣアドレスおよび第２のＭＡＣアドレスを自動的に学習する。このため、通信の際には、フレームの宛先となる仮想マシンを転送テーブルから特定することができるようになる。
【００５９】
≪変形例≫
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の（ａ）〜（ｃ）のようなものがある。
（ａ）：Ｌ３の仮想ネットワークとしてＶＸＬＡＮの代わりにＮＶＧＲＥ(Network Virtualization using Generic Routing Encapsulation)や、ＳＴＴ（Stateless TCP Transport）を採用することができる。
（ｂ）：Ｌ２の仮想ネットワークとしてIEEE802.1ahの代わりにＥｏＥ（Ethernet over Ethernet）や、TRILL（Transparent Interconnect of Lots of Links）を採用することができる。
（ｃ）：本実施形態では同一のＶＩＤを有するエントリに対応する仮想マシン同士の通信について説明したが、異なるＶＩＤを有するエントリに対応する仮想マシン同士の通信にも本発明を適用することができる。
【００６０】
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
また、本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、処理手順などについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【００６１】
Ｓ１〜Ｓ３        仮想ＳＷ（仮想スイッチ）
ｔ１〜ｔ６        転送テーブル
ｃ１１，ｃ２１，ｃ３１  Ｌ２カプセル化モジュール（Ｌ２カプセル化部）
ｃ１２，ｃ２２，ｃ３２  Ｌ３カプセル化モジュール（Ｌ３カプセル化部）
ｄ１〜ｄ３        振分機能部
【図１】
2017200099.tif 000003
【図２】
2017200099.tif 000004
【図３】
2017200099.tif 000005
【図４】
2017200099.tif 000006