(57)【特許請求の範囲】
【請求項１】
受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備えた第２の計算機と接続された計算機であって、
前記ネットワークインタフェース及び自装置側のネットワークインタフェースを介して、前記第２の計算機側で動作する第２の仮想マシンと通信する第１の仮想マシンと、
前記第１の仮想マシンからのアクセス要求を受けた場合、前記第２の計算機に対して前記第１の仮想マシンから出力されるデータのデータ識別子を送信し、前記第２の計算機の前記フィルターテーブルの更新と、前記更新したフィルターテーブルのマッチ条件の返送とを要求し、前記第２の計算機から返送されたマッチ条件を用いて、前記第１の仮想マシンの変換部にデータ識別子の変換ルールを設定する仮想マシン管理部と、
前記変換ルールに基づいて、前記第２の仮想マシンに送信するデータのデータ識別子を、前記第２の計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから前記第２の計算機に送信する変換部とを備え、
前記変換ルールの設定後、前記変換部が、前記仮想マシン管理部を介さずに、前記第１の仮想マシンから出力されるデータを前記第２の計算機に送信することを特徴とする計算機。
【請求項２】
前記仮想マシン管理部は、前記第１の仮想マシンからの前記アクセス要求を受けた場合、
自装置側のネットワークインタフェースのフィルターテーブルに、前記第２の仮想マシンから受信するデータを前記第１の仮想マシンに転送するエントリを追加するとともに、少なくとも前記エントリのマッチ条件を前記第２の計算機に対して送信し、
前記第２の計算機に、前記第２の仮想マシンから出力されたデータのデータ識別子を、前記計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから送信させる請求項１の計算機。
【請求項３】
前記仮想マシン管理部は、
自装置側で動作する仮想マシンと前記第２の計算機上で動作する第２の仮想マシン間の通信を一意に識別するためのデータ識別子を管理するデータ識別子管理テーブルを備え、
前記データ識別子管理テーブルを参照して、前記第２の計算機に対して送信するマッチ条件を決定する請求項２の計算機。
【請求項４】
前記変換部に代えて、
前記仮想マシン管理部は、
前記仮想マシンと前記第２の仮想マシン間の通信を一意に識別するためのデータ識別子を管理するデータ識別子管理テーブルを備えた集中制御コントローラに、前記変換ルールの生成を依頼し、
前記集中制御コントローラにて生成された変換ルールを、前記第１の仮想マシンの変換部に設定するとともに、前記変換ルールを用いてフィルターテーブルを更新する請求項１から３いずれか一の計算機。
【請求項５】
前記仮想マシン管理部は、前記仮想マシンと前記ネットワークインタフェースとを中継する仮想スイッチを備え、
前記仮想スイッチを介して、前記仮想マシンからのアクセス要求を受け付ける請求項１から４いずれか一の計算機。
【請求項６】
前記仮想マシン管理部は、さらに、ダイレクトアクセスを行うか否かの判断基準となるポリシーを管理するポリシー管理機能を備え、前記ポリシーを参照し、前記仮想マシン間のデータについてダイレクトアクセスの設定を行うかどうかを判断する請求項１から３、５いずれか一に記載の計算機。
【請求項７】
前記ネットワークインタフェースは、さらに、前記仮想マシン上で動作するアプリケーションからネットワークへの方向のデータに対して、データの識別子に応じて、データの転送先又はデータの破棄を決定するデータ送出制御機能と、前記ネットワークへの方向のデータに対する制御内容を保存する保存領域と、を備え、
前記仮想マシン管理部は、さらに、前記変換ルールに基づいて、前記保存領域に、送出データに対する制御内容を設定する機能を備える請求項１から３、６いずれか一に記載の計算機。
【請求項８】
前記データ識別子の変換に代えて、前記変換ルールを参照して、データのカプセル化及びアンカプセル化を行う請求項１から３、６、７いずれか一に記載の計算機。
【請求項９】
受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースと、前記ネットワークインタフェースを介して、他の仮想マシンと通信する仮想マシンと、を備えた計算機間に配置され、
前記計算機のうちの一方の計算機の仮想マシンからの要求を受けた場合、通信先の計算機に対して、前記一方の計算機の仮想マシンからのデータを通信先の仮想マシンに転送するようフィルターテーブルの更新を要求するとともに、前記一方の計算機の仮想マシンからのデータを、前記更新されたフィルターテーブルのマッチ条件に適合するよう変換するデータ識別子の変換ルールを作成する変換管理マネージャーと、
前記変換ルールを参照して、前記データ識別子の変換を行う変換部とを備えるデータ変換装置。
【請求項１０】
受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備えた第２の計算機と接続された計算機上で、
前記ネットワークインタフェース及び自装置側のネットワークインタフェースを介して、前記第２の計算機側で動作する第２の仮想マシンと通信する第１の仮想マシンからのアクセス要求を受けた場合、前記第２の計算機に対して前記第１の仮想マシンから出力されるデータのデータ識別子を送信し、前記第２の計算機の前記フィルターテーブルの更新と、前記更新したフィルターテーブルのマッチ条件の返送とを要求するステップと、
前記第２の計算機から返送されたマッチ条件を用いて、前記第１の仮想マシンの変換部にデータ識別子の変換ルールを設定するステップと、
前記変換ルールに基づいて、前記第２の仮想マシンに送信するデータのデータ識別子を、前記第２の計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから前記第２の計算機に送信するステップと、を含む通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機、データ変換装置、通信方法及びプログラムに関し、特に、仮想マシンを提供する計算機、その計算機間に配置されるデータ変換装置、その計算機間の通信方法及びプログラムに関する。
【背景技術】
【０００２】
これまで、単一のコンピュータネットワークを複数のユーザ、組織で共有して用いる場合に、Ｖｉｒｔｕａｌ  ＬＡＮ（ＶＬＡＮ、ＬＡＮは「Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ」）などのネットワーク仮想化技術が用いられてきた。例えば、ＶＬＡＮを用いることで、単一のイーサネットネットワーク（以下、イーサネット（登録商標））を、仮想的な複数のイーサネット（仮想イーサネット）として使用することができる。各仮想イーサネットはＶＬＡＮ  ＩＤによって識別され、管理・運用される。
【０００３】
一方、サーバの性能向上、信頼性向上により、近年、サーバ資源の仮想化（サーバ仮想化）の導入が進んでいる。サーバ仮想化技術を用いて、これまで個々の物理的なサーバで稼動していたサービスを仮想マシン上で稼動させ、この仮想マシンを１台の物理的なサーバ上に収容することで、物理的なサーバの台数を削減することができる。これによって、サーバの導入コストや運用コストを削減することが可能となる。
【０００４】
ネットワーク仮想化技術とサーバ仮想化技術をあわせて用いることで、例えば、データセンタのような特定の拠点に設置されたサーバ資源とネットワーク資源を複数のユーザ・組織で共有することが可能となる。
【０００５】
サーバ仮想化を実現する仮想化環境は、大きく分けてサーバの物理資源や仮想マシンを管理する管理領域と、ユーザの仮想マシンを導入するユーザ領域から構成される。例えば、Ｃｉｔｒｉｘ社のＸｅｎＳｅｒｖｅｒ（登録商標）であれば、管理領域はＸｅｎ  ＨｙｐｅｒＶｉｓｏｒと、Ｄｏｍ０と呼ばれる権限の与えられた仮想マシンから構成される。
【０００６】
仮想マシンが、物理サーバに備えられたネットワークインタフェースのようなＩ／Ｏ資源を使用する際には、管理領域を介するのが一般的である。管理領域内には仮想スイッチ（Ｖｉｒｔｕａｌ  Ｓｗｉｔｃｈ、ｖＳｗｉｔｃｈ）と呼ばれる、ソフトウェアで実現されたパケットスイッチング機能が備えられ、仮想マシンはｖＳｗｉｔｃｈによって外部ネットワークとの通信を行う。しかしながら、ｖＳｗｉｔｃｈのためのソフトウェア処理など、管理領域を経由するオーバヘッドの影響により、仮想マシンでは高いＩ／Ｏ性能を得られないという課題が存在する。ここで、ネットワークインタフェースとは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）カードのようなカード型や、半導体チップとしてＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やサーバのマザーボード上に搭載される形態など、様々な実現形態を採る。
【０００７】
このような性能上の課題を解決するために、ＣＰＵやチップセット、ネットワークインタフェースを中心に、ＩＯＭＭＵ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）やＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）のようなＩ／Ｏ仮想化技術の導入が進んでいる。仮想マシンはこのようなＩ／Ｏ仮想化技術を利用することで、Ｉ／Ｏ資源に管理領域を経由することなく直接アクセスすることができ、高い性能を得ることができる。このようなＩ／Ｏ仮想化技術は、１つのＩ／Ｏインタフェースを仮想的な複数のＩ／Ｏインタフェースとして使用する技術と、各Ｉ／Ｏインタフェースが仮想マシンに直接アクセスするためのメモリアドレス変換を行う技術から構成され、ＳＲ−ＩＯＶは前者に、ＩＯＭＭＵは後者に含まれる技術である。
【０００８】
Ｉ／Ｏ仮想化技術をサポートしたネットワークインタフェースは、仮想マシンごとに異なる仮想インタフェースを提供することができる。ＳＲ−ＩＯＶにおいては、 各仮想マシンに割り当てる仮想インタフェースとしてＶｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎが、仮想インタフェースを制御する物理インタフェースとしてＰｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎが定義されている。
【０００９】
Ｉ／Ｏ仮想化技術をサポートしたネットワークインタフェースに届いたパケットは、パケットヘッダに含まれるＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスやＶＬＡＮ  ＩＤ、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスといったパケットを識別する情報をもとにして、適切な仮想インタフェースに配送される。このように、パケットヘッダの情報に応じてパケットの配送先を決定するために、Ｉ／Ｏ仮想化技術をサポートしたネットワークインタフェースのコントローラチップ内には、パケットスイッチの機能が備えられている。このパケットスイッチの機能は、各仮想インタフェースに関連付けられたポートと、パケットをどのポートに出力するかを判断するロジックから構成される。この判断ロジックは、一般的にはＴＣＡＭ（Ｔｅｒｎａｒｙ  Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）などのメモリを用いたテーブルと、テーブルを参照するロジックから構成される。このテーブルには、パケットヘッダの特定のフィールドの情報と出力先ポートが対応付けられた情報が登録される（以降、このネットワークインタフェースのコントローラチップに備えられるテーブルを「フィルターテーブル」と呼称する）。どのフィールドの情報が登録可能かは、コントローラチップの実装に依存する。
【００１０】
Ｉ／Ｏ仮想化技術を用いると、仮想マシンに高いＩ／Ｏ性能を提供することができる。しかし、サーバ資源とネットワーク資源が仮想化された環境に、Ｉ／Ｏ仮想化技術を適用し、ネットワークの性能を向上させようとすると、フィルターテーブルに登録可能な情報の差異によって、パケットが適切な仮想マシンに配送されなくなる可能性がある。
【００１１】
例えば、あるサーバＡに装着されているネットワークインタフェースＡでは、宛先ＭＡＣアドレス（Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣアドレス、Ｄｓｔ  ＭＡＣアドレス）の情報を用いて、パケット配送先の仮想インタフェースを選択する場合を考える。このとき、サーバＡ上に、互いにＶＬＡＮ  ＩＤは異なるが、同一のＭＡＣアドレスを持つ仮想マシンＡ１、Ａ２が収容されていたとすると、このＭＡＣアドレスを宛先とするパケットがＶＬＡＮ  ＩＤに係らず、全て仮想マシンＡ１またはＡ２のどちらかに配送されてしまうことになる。
【００１２】
また、ネットワークがＯｐｅｎＦｌｏｗに代表されるように、通信をパケットヘッダの特定フィールドの情報によって分類し、分類された各パケット群をフローとして、フロー単位で通信を管理・制御する方式の場合、特定のフローに属するパケットのみをＩ／Ｏ仮想化技術を用いて、仮想マシンに直接配送することも考えられる。
【００１３】
例えば、ある仮想マシンＢ１（ＩＰ＝１９２．１６８．１．１とする）の８０番ポート宛のパケットのみ、ネットワークインタフェースから仮想マシンＢ１へ、パケットを直接配送しようとする場合、ネットワークインタフェースのコントローラチップがＩＰアドレスとポート番号の情報で仮想インタフェースを選択可能であることが必要である。ところが、ネットワークインタフェースがどのような情報で仮想インタフェースを割り振るかがネットワークチップの実装依存であるため、該当するパケット群のみを仮想マシンに直接転送することができないことが起こりうる。
【００１４】
このように、ネットワークインタフェースの組み合わせによっては、Ｉ／Ｏ仮想化技術によるＩ／Ｏ性能の高速化の恩恵を受けられない可能性がある。本発明では、パケットヘッダの情報を、フィルターテーブルで扱えるように変換することで、この課題を解決する。以降、Ｉ／Ｏ仮想化技術によって管理領域をバイパスする場合をダイレクトアクセス、そうでない場合をインダイレクトアクセスと呼称する。
【００１５】
特許文献１には、複数のネットワークインタフェースを使い分ける手法が記載されている。送信側のサーバで稼動する送信側アプリケーションが送信したパケットのヘッダ情報のうち、送信元を示す情報を、ネットワークインタフェースごとに割り振られたアドレスに変換し、送信する。パケットの受信側のサーバは、受信したパケットを元のアドレスに戻して、アプリケーションにパケットを渡す。サーバ間でアドレスをどのように戻すのかを示す情報をやり取りすることで、受信側のサーバがアドレスを元に戻すことが可能になっている。
【００１６】
また、特許文献２には、複数のバーチャルマシーン（仮想マシン、ＶＭ）が物理リソースを個別に設定及びアクセスすることを可能にする、という方法及びシステムが開示されている。同公報によれば、このシステムは、コンピュータシステムの複数のＶＭのそれぞれから、前記ＶＭ内の物理デバイスの制御可能な機能を示すデバイスドライバの対応するインスタンスを介し物理デバイス設定制御を受信するインタフェースシステムと、前記複数のＶＭのそれぞれについてＶＭに固有の接続情報と設定パラメータとを維持し、対応する前記ＶＭに固有の接続情報と設定パラメータとによって前記複数のＶＭのそれぞれについて前記物理デバイスを再設定する制御システムとを有する、とされている。そして、このシステムの前記インタフェースシステムと前記制御システムとは、前記ＶＭを提供するバーチャルマシーンモニタ（ＶＭＭ）の実質的に外部に実現されると記載されている。
【００１７】
また、特許文献３には、変換前パケット識別情報と変換後パケット識別情報との対応関係を示す変換エントリを格納した変換ポリシーテーブルを備え、スイッチの転送テーブルを操作することにより、複数の仮想ネットワーク間でのアプライアンスの共有を実現する管理計算機が開示されている。具体的には、前記管理計算機は、仮想ネットワークの識別子を含む変換前パケット識別情報を、アプライアンス側に設定された異なる仮想ネットワーク間で重複しない変換後パケット識別情報に書き換えさせる。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００９−５１５４３０号公報
【特許文献２】特開２０１２−９０２９号公報
【特許文献３】特開２０１１−２１１５０２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
以下の分析は、本発明によって与えられたものである。上述した特許文献１〜３に示される技術には、以下に示す問題点が存在する。
【００２０】
すなわち、サーバ仮想化の環境では、１台の物理的なサーバ上に、互いに独立な複数の仮想マシンが存在し、各仮想マシンは割り当てられたＭＡＣアドレスやＩＰアドレスといった識別情報を持つ。Ｉ／Ｏ仮想化技術を使用すると、各仮想マシンがネットワークインタフェースに直接アクセスし、パケットを送出する。そのため、通信を行う仮想マシン同士で、上記ＭＡＣアドレスやＩＰアドレスといった識別情報の変換に関する情報をやり取りしたとしても、変換後の情報が、通信を行う仮想マシンのペアが稼動するそれぞれの物理的なサーバにおいて、他の仮想マシンで使用されている可能性があり、パケットが適切な仮想マシンに届かない可能性がある。また、他の仮想マシンの識別情報を、各仮想マシンが知ることができるようにすることは、仮想化技術により、異なるユーザが単一のサーバ資源とネットワーク資源を共有する環境の場合、セキュリティの観点から望ましくない。
【００２１】
この点、特許文献２には、複数のバーチャルマシーン（仮想マシン）が物理リソースを個別に設定及びアクセスすることを可能にする構成が開示されているが、同文献の仮想拡張システム（ＶＡシステム）内の統合制御エンジンは、自装置側のデバイス固有のパラメータを維持するに止まり、通信相手の仮想マシンでダイレクトアクセスができるような変換がなされる保証は無い。
【００２２】
同様に特許文献３も、仮想ネットワーク間で重複しないように、ヘッダの書き換えを行う方法が開示されているが、通信相手の仮想マシンでダイレクトアクセスができるような変換がなされる保証は無いという問題点がある。
【００２３】
本発明は、互いに通信する計算機において、ネットワークインタフェースのフィルターテーブルに登録可能な識別情報に差異があり、ダイレクトアクセスを使用すると、本来の通信相手と異なる仮想マシンにパケットが届く可能性がある場合であっても、ダイレクトアクセスを利用しつつ、正しい送信先の仮想マシンにパケットを届けることができる計算機、データ変換装置、通信方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２４】
本発明の第１の視点によれば、受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備えた第２の計算機と接続された計算機であって、前記ネットワークインタフェース及び自装置側のネットワークインタフェースを介して、前記第２の計算機側で動作する第２の仮想マシンと通信する第１の仮想マシンと、前記第１の仮想マシンからのアクセス要求を受けた場合、前記第２の計算機に対して前記第１の仮想マシンから出力されるデータのデータ識別子を送信し、前記第２の計算機の前記フィルターテーブルの更新と、前記更新したフィルターテーブルのマッチ条件の返送とを要求し、前記第２の計算機から返送されたマッチ条件を用いて、前記第１の仮想マシンの変換部にデータ識別子の変換ルールを設定する仮想マシン管理部と、前記変換ルールに基づいて、前記第２の仮想マシンに送信するデータのデータ識別子を、前記第２の計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから前記第２の計算機に送信する変換部とを備える計算機が提供される。前記変換ルールの設定後、前記計算機の変換部は、前記仮想マシン管理部を介さずに、前記第１の仮想マシンから出力されるデータを前記第２の計算機に送信する。
【００２５】
本発明の第２の視点によれば、受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースと、前記ネットワークインタフェースを介して、前記他の仮想マシンと通信する仮想マシンと、を備えた計算機間に配置され、前記計算機のうちの一方の計算機の仮想マシンからの要求を受けた場合、通信先の計算機に対して、前記一方の計算機の仮想マシンからのデータを通信先の仮想マシンに転送するようフィルターテーブルの更新を要求するとともに、前記一方の計算機の仮想マシンからのデータを、前記更新されたフィルターテーブルのマッチ条件に適合するよう変換するデータ識別子の変換ルールを作成する変換管理マネージャーと、前記変換ルールを参照して、前記データ識別子の変換を行う変換部とを備えるデータ変換装置が提供される。
【００２６】
本発明の第３の視点によれば、受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備えた第２の計算機と接続された計算機上で、前記ネットワークインタフェース及び自装置側のネットワークインタフェースを介して、前記第２の計算機側で動作する第２の仮想マシンと通信する第１の仮想マシンからのアクセス要求を受けた場合、前記第２の計算機に対して前記第１の仮想マシンから出力されるデータのデータ識別子を送信し、前記第２の計算機の前記フィルターテーブルの更新と、前記更新したフィルターテーブルのマッチ条件の返送とを要求するステップと、前記第２の計算機から返送されたマッチ条件を用いて、前記第１の仮想マシンの変換部にデータ識別子の変換ルールを設定するステップと、前記変換ルールに基づいて、前記第２の仮想マシンに送信するデータのデータ識別子を、前記第２の計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから前記第２の計算機に送信するステップと、を含む通信方法が提供される。本方法は、前記Ｉ／Ｏ仮想化技術を利用するネットワークインタフェースと、仮想マシンとを備える計算機という、特定の機械に結びつけられている。
【００２７】
本発明の第４の視点によれば、受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備える計算機上で、第２の計算機から送信されたデータ識別子を用いて、前記フィルターテーブルに、前記第２の計算機から送信されたデータを該当する仮想マシンに転送させるエントリを追加するステップと、前記第２の計算機に対して、前記追加したフィルターテーブルのマッチ条件を返送し、前記第２の計算機に、前記第２の計算機で動作する仮想マシンから送信されたデータのデータ識別子を、前記追加したフィルターテーブルのマッチ条件に適用するよう変換させるステップと、を含む通信方法が提供される。本方法は、前記Ｉ／Ｏ仮想化技術を利用するネットワークインタフェースと、仮想マシンとを備える計算機という、特定の機械に結びつけられている。
【００２８】
本発明の第５の視点によれば、上記した計算機又はデータ変換装置の機能を実現するためのコンピュータプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００２９】
本発明によれば、互いに通信する計算機において、ネットワークインタフェースのフィルターテーブルに登録可能な識別情報に差異があり、ダイレクトアクセスを使用すると、本来の通信相手と異なる仮想マシンにパケットが届く可能性がある場合であっても、ダイレクトアクセスを利用しつつ、正しい送信先の仮想マシンにパケットを届けることが可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態の構成を示す図である。
【図２】本発明の第１の実施形態の全体構成を示す図である。
【図３】本発明の第１の実施形態のサーバの詳細構成を表したブロック図である。
【図４】仮想マシン（ＶＭ  Ａ）からのリクエストに基づいて、２台のサーバ間でダイレクトアクセスの設定を行う処理を示したシーケンス図である。
【図５】ダイレクトアクセスの設定がなされた後の、仮想マシン間（ＶＭ  Ａ−ＶＭ  Ｂ）の通信の流れを示したシーケンス図である。
【図６】仮想マシン（ＶＭ  Ａ）からのリクエストに基づいて、２台のサーバ１０間で両方向の通信に対して、ダイレクトアクセスの設定を行う処理を示したシーケンス図である。
【図７】仮想マシン間（ＶＭ  Ａ−ＶＭ  Ｂ）の通信終了後の受信側となる仮想マシン（ＶＭ  Ｂ）におけるダイレクトアクセスの設定を削除する際の処理の流れを示したシーケンス図である。
【図８】本発明の第１の実施形態のサーバの仮想マシン（ＶＭ  Ａ）内のヘッダー変換部の処理（パケット送信時）を詳細に示したフローチャートである。
【図９】本発明の第１の実施形態のサーバの仮想マシン（ＶＭ  Ｂ）内のヘッダー変換部の処理（パケット受信時）を詳細に示したフローチャートである。
【図１０】本発明の第１の実施形態のサーバのハイパーバイザーに備えられる変換管理マネージャーの処理（ダイレクトアクセスの設定リクエスト受信時で一方向）を詳細に示したフローチャートである。
【図１１】本発明の第１の実施形態のサーバのハイパーバイザーに備えられる変換管理マネージャーの処理（ダイレクトアクセスの設定通知受信時で一方向）を詳細に示したフローチャートである。
【図１２】本発明の第１の実施形態のサーバのハイパーバイザーに備えられる変換管理マネージャーの処理（ダイレクトアクセスの設定リクエスト受信時で双方向）を詳細に示したフローチャートである。
【図１３】本発明の第１の実施形態のサーバのハイパーバイザーに備えられる変換管理マネージャーの処理（ダイレクトアクセスの設定通知受信時で双方向）を詳細に示したフローチャートである。
【図１４】本発明の第２の実施形態のサーバの詳細構成を表したブロック図である。
【図１５】本発明の第２の実施形態のサーバ内のハイパーバイザー内の新規パケット受信時の処理の流れを示したシーケンス図である。
【図１６】本発明の第２の実施形態のサーバ内のハイパーバイザー内の統計情報の取得処理の流れを示したシーケンス図である。
【図１７】本発明の第３の実施形態のサーバの詳細構成を表したブロック図である。
【図１８】本発明の第３の実施形態において、仮想マシン（ＶＭ  Ａ）からのリクエストに基づいて、２台のサーバ間でダイレクトアクセスの設定を行う処理を示したシーケンス図である。
【図１９】本発明の第３の実施形態のサーバのハイパーバイザーに備えられる変換管理マネージャーの処理（ダイレクトアクセスの設定リクエスト受信時で一方向）を詳細に示したフローチャートである。
【図２０】本発明の第３の実施形態のサーバのハイパーバイザーに備えられる変換管理マネージャーの処理（ダイレクトアクセスの設定通知受信時で一方向）を詳細に示したフローチャートである。
【図２１】本発明の第４の実施形態の全体構成を表したブロック図である。
【図２２】本発明の第４の実施形態のサーバ及びダイレクトアクセスコントローラの詳細構成を表したブロック図である。
【図２３】本発明の第４の実施形態のサーバの仮想マシン（ＶＭ  Ａ）からのリクエストに基づいて、２台のサーバ間でダイレクトアクセスの設定を行う処理を示したシーケンス図である。
【図２４】仮想マシン間（ＶＭ  Ａ−ＶＭ  Ｂ）の通信終了後の受信側となる仮想マシン（ＶＭ  Ｂ）におけるダイレクトアクセスの設定を削除する際の処理の流れを示したシーケンス図である。
【図２５】本発明の第４の実施形態のサーバのハイパーバイザー内の変換管理ローカルマネージャーの処理のうち、フィルターテーブルに登録可能な通信の識別情報に関する問い合わせに対する処理を詳細に示したフローチャートである。
【図２６】本発明の第４の実施形態のサーバのハイパーバイザーに備えられる変換管理ローカルマネージャーの処理のうち、ヘッダー変換ルールの登録処理を詳細に示したフローチャートである。
【図２７】本発明の第５の実施形態の全体構成を表したブロック図である。
【発明を実施するための形態】
【００３１】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００３２】
本発明は、その一実施形態において、図１に示すように、計算機上に構築されてユーザに仮想化環境を提供する仮想マシン１２００と、仮想マシン１２００を管理する仮想マシン管理部１４００と、Ｉ／Ｏ仮想化技術をサポートしたネットワークインタフェース１６００と、を備えた計算機１０００同士を接続した構成にて実現できる。
【００３３】
具体的には、ネットワークインタフェース１６００は、受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、ネットワーク１８００を介して接続された第２の計算機上で動作する第２の仮想マシンから受信したデータを、自装置側の仮想マシン１２００に転送するスイッチング機能を備える。
【００３４】
また、仮想マシン１２００は、動作中のアプリケーション側のデータ識別子（ＭＡＣアドレス、ＩＰアドレス等またはこれらの組み合わせ）と、前記第２の仮想マシンとの通信用のデータ識別子（ＭＡＣアドレス、ＩＰアドレス等またはこれらの組み合わせ）とを相互に変換する変換ルールを参照して、前記データ識別子の変換を行う変換部を備え、前記ネットワークインタフェース１６００を介して第２の仮想マシンと通信する。
【００３５】
また、仮想マシン管理部１４００は、前記仮想マシン１２００から新規アクセス要求を受けた場合、前記第２の計算機に対して自装置側の仮想マシン１２００から出力されるデータのデータ識別子を送信し、前記第２の計算機側のフィルターテーブルの更新と、前記更新したフィルターテーブルのマッチ条件の返送とを要求する。前記第２の計算機からマッチ条件が返送されると、仮想マシン管理部１４００は、返送されたマッチ条件を用いて、自装置側の仮想マシン１２００の変換部にデータ識別子の変換ルールを設定する。
【００３６】
前記第２の計算機側のフィルターテーブルの更新と、自装置側の仮想マシン１２００への変換ルールの設定とが完了すると、仮想マシン１２００間で仮想マシン管理部１４００を介さないダイレクトアクセスが開始される。この結果、仮想マシンに、高いＩ／Ｏ性能を提供することができる。
【００３７】
［第１の実施形態］
次に、本発明の第１の実施形態について図面を参照して詳細に説明する。図２は、本発明の第１の実施形態の全体構成を示す図である。図２を参照すると、２台のサーバ（以下、Ｓｅｒｖｅｒ  Ａを「サーバ１０Ａ」、ＳｅｒｖｅｒＢを「サーバ１０Ｂ」と記す。両者を特に区別しない場合、「サーバ１０」と記す。）と、サーバ１０Ａとサーバ１０Ｂがネットワーク１８を介して互いに接続されている。各サーバ１０には、仮想マシン１２（ＶＭ  Ａ１〜ｎ、ＶＭ  Ｂ１〜ｍ）と、仮想マシン１２を管理する仮想マシン管理部に相当するハイパーバイザー１４（ＨｙｐｅｒＶｉｓｏｒ  Ａ、ＨｙｐｅｒＶｉｓｏｒ  Ｂ）と、ネットワークインタフェース（ＮＩＣ）１６（ＮＩＣ  Ａ、ＮＩＣ  Ｂ）とが備えられている。
【００３８】
仮想マシン１２は、ハイパーバイザー１４によって、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やメモリ、ディスク、ネットワークといった資源を割り当てられ、様々なアプリケーションを実行する。
【００３９】
ハイパーバイザー１４は、仮想マシン１２への資源割り当て、モニタリングなどの管理を行う。
【００４０】
ネットワークインタフェース１６は、サーバ１０とネットワーク１８とのインタフェースであり、仮想マシン１２がネットワーク１８を介して通信を行う際に使用される。ネットワークインタフェース１６は、Ｉ／Ｏ仮想化技術をサポートしている。
【００４１】
仮に、ネットワークインタフェースが、Ｉ／Ｏ仮想化技術をサポートしていない場合、仮想マシン１２は、ハイパーバイザー１４を介して通信を行う。一方、ネットワークインタフェースがＩ／Ｏ仮想化技術をサポートしている場合、ハイパーバイザー１４の制御に基づいて、仮想インタフェースが仮想マシン１２に割り当てられ、仮想マシン１２は、ハイパーバイザー１４を介さずに通信を行うことができる。逆に、ネットワークインタフェース１６がＩ／Ｏ仮想化技術をサポートしていても、ハイパーバイザー１４が仮想インタフェースを仮想マシン１２に割り当てなかった場合、仮想マシン１２はハイパーバイザー１４を介して通信を行う。
【００４２】
図３は、図２のサーバ１０Ａの詳細構成を表したブロック図である。図３を参照すると、仮想マシン１２と、ハイパーバイザー１４とに、それぞれモジュールを配置した構成が示されている。ここで、モジュールとは、何らかの機能を提供するソフトウェア・プログラム、またはハードウェアを指す。
【００４３】
具体的には、図３のサーバ１０Ａの仮想マシン１２（ＶＭ）は、ヘッダー変換部（Ｈｅａｄｅｒ  Ｔｒａｎｓｌａｔｏｒ）１２２と、ヘッダー変換テーブル（Ｈｅａｄｅｒ  Ｔｒａｎｓｌａｔｉｏｎ  Ｔａｂｌｅ）１２６と、を備えている。
【００４４】
また、仮想マシン１２では、１つ以上のアプリケーションプログラム（Ａｐｐｌｉｃａｔｉｏｎ、以下、単に「アプリケーション」と記す。）１２４が稼動している。ヘッダー変換部１２２は、仮想マシン１２が、Ｉ／Ｏ仮想化技術を利用してパケットを送出する際に、パケットヘッダを変換するモジュールである。パケットヘッダ変換の際には、ヘッダー変換部１２２は、ヘッダー変換テーブル１２６を参照して、パケットヘッダ変換に必要な情報を取得する。
【００４５】
ヘッダー変換テーブル１２６には、パケットヘッダを変換するための情報が登録されている。ヘッダー変換部１２２は、変換前のパケットヘッダをもとに、ヘッダー変換テーブル１２６を参照し、パケットヘッダをどのように変換するかの情報を取得する。ヘッダー変換テーブル１２６には、少なくとも、ダイレクトアクセス対象の通信を識別するのに必要な、パケットヘッダに含まれる情報の組み合わせと等しい粒度の、変換前のパケットヘッダの情報と、この情報に対応付けられた、パケットヘッダの変換ルールが登録される。例えば、ダイレクトアクセス対象の通信として、ＶＬＡＮ  ＩＤが２０４８、送信元ＩＰアドレスが１９２．１６８．１．１、宛先ＩＰアドレスが１９２．１６８．１．２、宛先ポート番号が８０の通信のみを、ある仮想マシン同士の通信でダイレクトアクセスさせたい場合を考える。このときに、ネットワークインタフェースのフィルターテーブルのマッチ条件である宛先ＭＡＣアドレスとＶＬＡＮ  ＩＤの組でダイレクトアクセスを行うかどうかを判断する場合、ヘッダー変換テーブル１２６には、ＶＬＡＮ  ＩＤ、送信元ＩＰアドレス、宛先ＩＰアドレス、宛先ポート番号を変換前の情報として登録し、変換ルールとして、この通信を識別可能な宛先ＭＡＣアドレスとＶＬＡＮ  ＩＤの組み合わせを、送信元仮想マシンのヘッダー変換テーブル１２６に登録する。
【００４６】
また、ヘッダー変換テーブル１２６には、ネットワークから受信したパケットのヘッダを元に戻すための情報も保持している。ダイレクトアクセスを行ったパケットのヘッダは変換されており、この変換後のパケットヘッダの情報を元にヘッダー変換テーブル１２６を参照し、ヘッダを元に戻す情報を取得し、元のヘッダに戻す処理が行われる。
【００４７】
ヘッダー変換部１２２は、パケットヘッダを変換する際に、上記のようにヘッダー変換テーブル１２６を参照する。なお、このようなヘッダー変換部１２２及びヘッダー変換テーブル１２６を、仮想マシン１２に導入されるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のデバイスドライバ中に備える形態等を採ることができる。
【００４８】
仮想マシン１２が、ダイレクトアクセスを利用して、新たに通信を行いたい場合、ヘッダー変換ルールを取得するために、ハイパーバイザー１４にダイレクトアクセスの設定リクエストを発行する。この設定リクエストは、仮想マシン間、あるいは仮想マシンと管理領域との通信機能を利用して送信する形態を採ることができる。
【００４９】
ハイパーバイザー１４は、ダイレクトアクセス機能を提供するために、ヘッダー管理テーブル（Ｈｅａｄｅｒ  Ｍａｎａｇｅｍｅｎｔ  Ｔａｂｌｅ）１４４と、変換管理マネージャー（Ｔｒａｎｓｌａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ  Ｍａｎａｇｅｒ）１４６と、を備えている。
【００５０】
ハイパーバイザー１４には、さらに、仮想スイッチ（Ｖｉｒｔｕａｌ  Ｓｗｉｔｃｈ）１４２が備えられ、Ｉ／Ｏ仮想化技術を利用しない場合における、仮想マシン１２に係る通信を中継する機能を有する。
【００５１】
変換管理マネージャー１４６は、自サーバ内のダイレクトアクセスに関する情報の管理と、リモートサーバ（例えば、図２においてネットワーク１８を介して接続されているサーバ１０Ｂ）内の変換管理マネージャー１４６と、ダイレクトアクセスの設定を行うためのネゴシエーションを行う。このネゴシエーションによって、通信相手のサーバ１０のネットワークインタフェース１６がサポートするフィルターテーブルに登録可能な情報や、パケットヘッダをどのように変換するかを決定する。
【００５２】
ヘッダー管理テーブル１４４は、自サーバで稼動する仮想マシン１２に係る通信を管理する。変換管理マネージャー１４６が、ダイレクトアクセスの設定時に、既に存在する通信と、新規のダイレクトアクセスの通信が識別可能なように、変換後のパケットヘッダを決定するために使用される。
【００５３】
ネットワークインタフェース１６は、Ｉ／Ｏ仮想化技術をサポートしており、ネットワークインタフェース１６を制御するネットワークインタフェースコントローラー（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）１６２と、ネットワークインタフェース１６に届いたパケットの出力先を登録したフィルターテーブル（Ｆｉｌｔｅｒ  Ｔａｂｌｅ）１６４と、ハイパーバイザー１４に対するインタフェースである物理インタフェース（Ｐｈｙｓｉｃａｌ  Ｉｎｔｅｒｆａｃｅ、ＰＩ）１６６と、仮想マシン１２に対するインタフェースである仮想インタフェース（Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｆａｃｅ、ＶＩ）１６７と、ネットワーク１８との物理的な接続の口となる物理ポート１６８（Ｐｈｙｓｉｃａｌ  Ｐｏｒｔ）と、を備えている。
【００５４】
物理インタフェース１６６は、ハイパーバイザー１４とのパケットの送受信に使用されるほか、ネットワークインタフェース１６の動作に関する設定を、ハイパーバイザー１４から行うためのインタフェースや、ネットワークインタフェース１６のステータスを、ハイパーバイザー１４から読み出すためのインタフェースとして使用される。
【００５５】
ネットワークインタフェース１６は、ハイパーバイザー１４の制御のもとで、パケットの送受信を行う。
【００５６】
パケットがネットワーク１８から、物理ポート１６８へ届いた場合には、ネットワークインタフェースコントローラー１６２が、パケットのヘッダー情報をもとにフィルターテーブル１６４にアクセスし、物理インタフェース１６６、あるいは、仮想インタフェース１６７のいずれにパケットを出力するかを決定する。
【００５７】
フィルターテーブル１６４には、パケットの出力先を判断するための情報（マッチ条件）と対応付けて、パケットの出力先等を対応付けたエントリが登録される。パケットの出力先として、どのインタフェースにも出力せずに、ドロップすることを指定したエントリを設定することもできる。フィルターテーブル１６４に登録されていないパケットが届いた場合、物理インタフェース１６６を経由して、ハイパーバイザー１４にパケットが転送される。このパケットに対する処理は、ハイパーバイザー１４で決定され、場合によっては、ハイパーバイザー１４が、フィルターテーブル１６４にこのパケットの情報と出力先と定めたエントリを登録する。
【００５８】
パケットが物理インタフェース１６６又は仮想インタフェース１６７のいずれかから届いた場合には、ネットワークインタフェースコントローラー１６２は、物理ポート１６８を通じて、パケットを送出する。
【００５９】
なお、図２、３に示したサーバ１０の各部（処理手段）は、サーバ１０を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【００６０】
続いて、本実施形態の動作について図面を参照して詳細に説明する。はじめに、図４〜図７のシーケンスを参照して、本実施形態の全体動作について説明する。
【００６１】
図４は、仮想マシン１２のリクエストにもとづいて、２台のサーバ１０間（それぞれサーバ１０Ａ、サーバ１０Ｂとする）でダイレクトアクセスの設定を行う処理を示したシーケンス図である。以下、サーバ１０を構成する各要素についても、Ａ、Ｂの符号を付して説明する。図４のシーケンス図では、仮想マシン１２Ａが通信の起動側（送信側）であり、仮想マシン１２Ｂが通信の受信側であり、仮想マシン１２Ａから仮想マシン１２Ｂへの通信のみダイレクトアクセスを使用するものとする。
【００６２】
まず、仮想マシン１２Ａ内のヘッダー変換部１２２Ａが、ヘッダー変換テーブル１２６Ａを参照し、ダイレクトアクセスの設定がなされた通信かどうかをチェックする（図４中に図示せず。）。ダイレクトアクセスの設定がなされていない場合、ヘッダー変換部１２２Ａは、変換管理マネージャー１４６Ａに対しダイレクトアクセスの設定リクエストを発行する（図４のＳ１２０ａ）。このリクエストには、パケットヘッダーに含まれる通信を識別する情報が含まれている。このリクエストを発行するタイミングの例としては、ＴＣＰ／ＩＰを用いた通信の場合、ＴＣＰの３−ｗａｙハンドシェイクにおいてＳＹＮパケットを送出する際に、発行すること等が考えられる。
【００６３】
次に、変換管理マネージャー１４６Ａは、リクエストに含まれる通信の識別情報を、サーバ１０Ｂの変換管理マネージャー１４６Ｂに通知する（図４のＳ１４２ａ）。
【００６４】
次に、ダイレクトアクセスの通知を受けた変換管理マネージャー１４６Ｂは、通知された通信の識別情報と、フィルターテーブル１６４Ｂに登録可能な通信の識別情報と、ヘッダー管理テーブル１４４Ｂの情報とを用いて、送信側にパケットヘッダーをどのように変換して欲しいかを示すパケットヘッダー変換ルールＢを決定する（図４のＳ１４０ｂ）。このパケットヘッダー変換ルールＢは、仮想マシン１２Ａがパケットをダイレクトアクセスを使用して送信する際に、パケットヘッダーをどのように変換するかを示したルールである。
【００６５】
ここで、ヘッダー管理テーブル１４４Ｂに登録された情報の使用方法について説明する。パケットヘッダー変換ルールＢを決定する際には、変換後のパケットヘッダーのフィールドのうち、ネットワークインタフェース１６Ｂのフィルターテーブル１６４Ｂに登録可能なパケットヘッダーのフィールドの範囲で同一のものが、サーバ１０Ｂに係る通信で使用されていないかどうか、ヘッダー管理テーブル１４４Ｂを参照する。これにより、パケットヘッダー変換後のパケットヘッダーと同一の通信が他に存在しないことを保証する。そのため、決定したパケットヘッダー変換ルールＢは、ヘッダー管理テーブル１４４Ｂに登録される。
【００６６】
なお、この変換の際には、ネットワーク１８において、各仮想マシンを一意に識別する情報は変更しないことが望ましい。例えば、ネットワーク１８がイーサネットであり、複数ユーザで同一のネットワークを共有している場合、各仮想マシンをＭＡＣアドレスとＶＬＡＮ  ＩＤで識別することが考えられる。これらの情報を変換する場合には、パケットヘッダー変換ルール決定時に、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）などを用いて、変換後のＭＡＣアドレスとＶＬＡＮ  ＩＤが一致する仮想マシン１０が存在しないことを確認する必要がある。
【００６７】
次に、変換管理マネージャー１４６Ｂは、通信相手の仮想マシン１２Ｂのヘッダー変換テーブル１２６Ｂに、図３の１４０ｂで決定したパケットヘッダー変換ルールＢを登録する（図４のＳ１４４ｂ）。
【００６８】
次に、変換管理マネージャー１４６Ｂは、フィルターテーブル１６４Ｂに、パケットヘッダー変換ルールＢに基づいてエントリを追加し、ダイレクトアクセスの設定を行う（図４のＳ１４６ｂ）。なお、図３のＳ１４４ｂの処理と、図３のＳ１４６ｂの処理に依存はないため、処理の手順が入れ替わってもよい。
【００６９】
次に、変換管理マネージャー１４６Ｂは、変換管理マネージャー１４６Ａに対して、パケットヘッダー変換ルールＢを通知する（図４のＳ１４２ｂ）。
【００７０】
次に、変換管理マネージャー１４６Ａは、ダイレクトアクセスのリクエストを出した仮想マシン１２Ａのヘッダー変換テーブル１２６Ａに、図４のステップＳ１４２ｂで通知されたパケットヘッダー変換ルールＢを登録する（図４のＳ１４４ａ）。
【００７１】
なお、同一ユーザの環境下で仮想マシン１２を一意に識別する情報を変換する場合には、変換後のパケットヘッダで通信相手にパケットが届くようにネットワーク装置の設定を行う必要がある。例えば、ネットワークがイーサネットの場合で、宛先ＭＡＣアドレスを変換してパケットを送信する場合、パケットを送信する前に、ＡＲＰパケットを送信し、通信を行う仮想マシン１２の間に存在するネットワークスイッチにＭＡＣアドレスを学習させる必要がある。この学習のトリガは、変換管理マネージャー１４６Ａがダイレクトアクセスの設定を行う前に実行してもよいし、アプリケーション１２４Ａがパケットを投げる際に行っても良い。後者の場合、仮想マシンＡのプロトコルスタックがＡＲＰ解決を行う前に、ヘッダー変換部１２２がパケットヘッダの変換を行うことで、仮想マシンＡのＡＲＰテーブルに送信するパケットのＭＡＣアドレスが登録されていないようにすることができ、プロトコルスタックがパケットを送信する前にＡＲＰ解決を実行することで、ネットワーク装置の設定がなされる。
【００７２】
ダイレクトアクセスの設定完了後、変換管理マネージャー１４６Ａは、ダイレクトアクセス設定のリクエストを出した仮想マシン１２Ａに対して、ダイレクトアクセスの設定が完了したことを通知する（図４のＳ１４７ａ）。
【００７３】
以上の動作により、仮想マシン１２Ａから仮想マシン１２Ｂに対する通信について、ネットワークインタフェースカード１６Ｂのフィルターテーブル１６４Ｂに登録可能な情報を考慮したダイレクトアクセスの設定が行われた。仮想マシン１２Ａは、パケットヘッダー変換ルールＢに基づいてパケットを変換し、パケットを送出する。
【００７４】
図５は、ダイレクトアクセスの設定がなされた後の、仮想マシン１２Ａと仮想マシン１２Ｂの通信の流れを示したシーケンス図である。図４と同様に、それぞれのサーバ１０、及びその構成要素に対して、符号Ａ、Ｂを付与して説明する。
【００７５】
まず、仮想マシン１２Ａで稼動するアプリケーション１２４（アプリケーション１２４Ａとする）がソケットライブラリのような通信ライブラリを使用するなどして、パケットの送信要求を発行する（図５のＳ１２４０ａ）。この送信要求には、ＭＡＣアドレス、ＩＰアドレス等の通信を識別する識別情報が含まれている。
【００７６】
次に、ヘッダー変換部１２２Ａは、ヘッダー変換テーブル１２６Ａから前記識別情報に対応するエントリを検索し、パケットヘッダの変換情報を取得する（図５のＳ１２２０ａ）。
【００７７】
次に、ヘッダー変換部１２２Ａは、パケットヘッダを変換し、プロトコルスタックやネットワークインタフェースカード１６Ａを通じて、パケットをネットワーク１８に送出する（図５のＳ１２２２ａ）。前記パケットヘッダの変換は、サーバ１０Ｂのネットワークインタフェースカード１６Ｂが、フィルターテーブル１６４Ｂを参照して、仮想マシン１２Ａから送出されたパケットを適切な仮想マシンに転送できるように書き換えるものである。
【００７８】
次に、ネットワークインタフェースカード１６Ｂは、フィルターテーブル１６４Ｂから届いたパケットのヘッダー情報に適合するマッチ条件を持つエントリを検索し、適切な仮想インタフェースにパケットを転送する（図５のＳ１６０ｂ）。
【００７９】
次に、ヘッダー変換部１２２Ｂは、ヘッダー変換テーブル１２６Ｂから、受信したパケットのヘッダー情報に適合するマッチ条件を持つエントリを検索し、パケットヘッダの変換情報を取得する（図５のＳ１２２０ｂ）。
【００８０】
次に、ヘッダー変換部１２２Ｂは、受信したパケットのパケットヘッダを変換し、アプリケーションにパケットを転送する（図５のＳ１２２４ｂ）。ここでのパケットヘッダの変換は、ステップＳ１２２２ａで書き換えた内容を復元するものである。
【００８１】
以上のようにして、ダイレクトアクセスを用いた通信が実行される。
【００８２】
以上の図４、図５の説明では、サーバ１０Ａからサーバ１０Ｂへの方向の通信に対して、ダイレクトアクセスの設定を行うものとして説明したが、２台のサーバ１０間の両方向の通信に対して、ダイレクトアクセスの設定を行うことも可能である。以下、図６を参照して、２台のサーバ１０間で両方向の通信に対して、ダイレクトアクセスの設定を行う処理について説明する。また、以下の説明においても、それぞれのサーバ１０及びその構成要素に対して、符号Ａ、Ｂを付与して説明する。また、図６において、図４と同様の処理については、同一の符号を付し、詳細な説明を省略する。
【００８３】
図６を参照すると、変換管理マネージャー１４６Ａは、ヘッダー変換部１２２Ａからダイレクトアクセスの設定リクエストを受けると、ダイレクトアクセスのリクエストに含まれる通信の識別情報を元に、フィルターテーブル１６４Ａに登録可能なパケットヘッダーのフィールドを、仮想マシン１２Ｂ側にどのように変換してほしいかを示すパケットヘッダー変換ルールＡを決定する（図６のＳ１４０ａ）。決定の際に、ヘッダー管理テーブル１４４Ａを参照し、同じ変換ルールが存在しないことを保証する。また、前述したように、仮想マシン１２を同一ユーザの環境下で一意に識別可能な情報を変換する場合は、そのユーザの環境内に変換後の識別子と同一の情報を持つ仮想マシン１２が存在しないかどうか確認する必要がある。そのため、決定したパケットヘッダー変換ルールＡは、ヘッダー管理テーブル１４４Ａに登録される。
【００８４】
次に、変換管理マネージャー１４６Ａが、サーバ１０Ｂの変換管理マネージャー１４６Ｂに対して、変換前の通信の識別情報と、パケットヘッダー変換ルールＡとを通知する（図６のＳ１４３ａ）。
【００８５】
ダイレクトアクセスの通知を受けた変換管理マネージャー１４６Ｂは、図４のステップＳ１４０ｂと同様に、パケットヘッダー変換ルールＢを決定し、ヘッダー管理テーブル１４４Ｂに登録する。（図６のＳ１４０ｂ）。
【００８６】
次に、変換管理マネージャー１４６Ｂは、仮想マシン１２Ｂのヘッダー変換テーブルＢに、パケットヘッダー変換ルールＡと、パケットヘッダー変換ルールＢとを登録する（図６のＳ１４５ｂ）。
【００８７】
次に、変換管理マネージャー１４６Ｂは、図４のステップＳ１４６ｂと同様に、パケットヘッダー変換ルールＢに基づいて、ネットワークインタフェースカード１６Ｂのフィルターテーブル１６４Ｂにエントリを追加する（図６のＳ１４６ｂ）。なお、図６のＳ１４５ｂの処理と、図６のＳ１４６ｂの処理に依存はないため、処理の手順が入れ替わってもよい。
【００８８】
次に、変換管理マネージャー１４６Ｂは、図４のステップＳ１４２ｂと同様に、サーバ１０Ａの変換管理マネージャー１４６Ａに対して、パケットヘッダー変換ルールＢを通知する。
【００８９】
次に、変換管理マネージャー１４６Ａは、ダイレクトアクセスのリクエストを出した仮想マシン１２Ａのヘッダー変換テーブル１２６Ａに、パケットヘッダー変換ルールＡと、図６の１４２ｂで通知されたパケットヘッダー変換ルールＢとを登録する（図６のＳ１４５ａ）。なお、同一ユーザの環境下で仮想マシン１２を一意に識別する情報を変換する必要がある場合には、変換後のパケットヘッダで通信相手にパケットが届くようにネットワーク装置の設定を行う必要がある。また、パケットヘッダー変換ルールＡについては、図６のＳ１４０ａでパケットヘッダー変換ルールＡを決定した後、図６のＳ１４５ａまでのいずれかのタイミングで（例えば、ステップＳ１４０ａ）、ヘッダー変換テーブル１２６Ａに登録してもよい。
【００９０】
次に、変換管理マネージャー１４６Ａは、パケットヘッダー変換ルールＡに基づいて、フィルターテーブル１６４Ａにエントリを追加し、ダイレクトアクセスの設定を行う（図６のＳ１４６ａ）。なお、図６のＳ１４５ａの処理と、図６の１４６ａの処理に依存はないため、処理の手順が入れ替わってもよい。
【００９１】
ダイレクトアクセスの設定完了後、変換管理マネージャー１４６Ａは、ダイレクトアクセス設定のリクエストを出した仮想マシン１２Ａに対して、ダイレクトアクセスの設定が完了したことを通知する（図６のＳ１４７ａ）。
【００９２】
以上の動作により、仮想マシン１２Ａと仮想マシン１２Ｂの間の通信について、ネットワークインタフェースカード１６Ｂのフィルターテーブル１６４Ｂに登録可能な情報を考慮したダイレクトアクセスの設定が行われた。なお、図６のシーケンス図に示すように、一度のネゴシエーションで双方向の設定を行わずに、図４のシーケンス図に示すような片方向の通信についての設定を仮想マシン１２Ａと仮想マシン１２Ｂがそれぞれ実行することでも、同様の設定が可能である。また、ダイレクトアクセスの設定を、仮想マシンからのリクエストを契機にするほか、通信頻度や仮想マシン管理部の負荷等に応じて、事前に設定しておくことも考えられる。
【００９３】
その後は、図５に示したシーケンスと同様に、仮想マシン１２Ａは、パケットヘッダー変換ルールＢに基づいてパケットヘッダーを変換し、仮想マシン１２Ｂに対してパケットを送出する。一方、仮想マシン１２Ｂからパケットを受信すると、仮想マシン１２Ａは、パケットヘッダーをパケットヘッダー変換ルールＡに基づいて戻し、適切なアプリケーション１２４Ａにパケットを転送する。同様に、仮想マシン１２Ｂは、仮想マシン１２Ａからのパケットをパケットヘッダー変換ルールＢに基づいて戻し、適切なアプリケーション１２４Ｂにパケットを転送する一方、パケットヘッダー変換ルールＡに基づいてパケットヘッダーを変換し、仮想マシン１２Ａに対してパケットを送出する。
【００９４】
続いて、上記のように設定されたダイレクトアクセスの設定を削除する際の処理の流れについて説明する。図７は、仮想マシン１２同士の通信が完了し、ダイレクトアクセスを用いた通信において、受信側となる仮想マシン１２における、ダイレクトアクセスの設定を削除する際の処理の流れを示したシーケンス図である。
【００９５】
まず、仮想マシン１２は、ヘッダー変換テーブル１２６に登録されている、削除対象の通信に関するエントリを削除する（図７のＳ１２６）。エントリの検索方法は、図５のＳ１２２０ａと同様である。
【００９６】
次に、仮想マシン１２は、変換管理マネージャー１４６に対して、ダイレクトアクセスを使用した通信が完了したことを通知する（図７のＳ１２８）。この通知には、完了した通信を識別する情報が含まれている。
【００９７】
次に、変換管理マネージャー１４６は、ヘッダー管理テーブル１４４から該当するエントリを削除する（図７のステップＳ１４８）。ここでのエントリの検索方法は、図６のＳ１４０ａと同様である。
【００９８】
次に、変換管理マネージャー１４６は、ネットワークインタフェースカード１６のフィルターテーブル１６４から、該当するエントリを削除する（図７のステップＳ１４９）。
【００９９】
このようにして、ダイレクトアクセスの設定を削除することができる。なお、ダイレクトアクセスを用いた通信において、送信側となる仮想マシン１２における、ダイレクトアクセスの設定を削除する処理は、図７のステップＳ１２６と同様に、仮想マシン１２が行うようにすればよい。
【０１００】
以上のようなダイレクトアクセスの設定削除を行うことで、各テーブルのエントリ数を減らし、仮想マシンや変換管理マネージャー１４６の応答性能を維持することができる。もちろん、通信頻度等に応じて、特定の通信についてはダイレクトアクセスの設定削除を省略することもできる。
【０１０１】
続いて、上記したシーケンス図における仮想マシン１２やハイパーバイザー１４の動作についてこれら構成要素毎に説明する。
【０１０２】
図８は、仮想マシン１２Ａに備えられるヘッダー変換部１２２の処理を詳細に示したフローチャートである。
【０１０３】
まず、ヘッダー変換部１２２は、アプリケーションからパケット送信要求がなされると（図８のステップＦ１２０ａのＹｅｓ）、ヘッダー変換テーブル１２６Ａを参照し、送信要求がなされたパケットが属する通信に対して、既にダイレクトアクセスの設定がなされているかどうかを確認する（図８のステップＦ１２２ａ）。設定済みかどうかの確認は、パケットヘッダに含まれる情報を用いて、ヘッダー変換テーブル１２６Ａを参照し、対応するエントリが存在するかどうかで判定することができる。なお、ステップＦ１２０ａにおいて、アプリケーションからパケット送信要求がなされていない場合は、ヘッダー変換部１２２は特に処理を開始しない（図８のステップＦ１２０ａのＮｏ）。
【０１０４】
次に、ダイレクトアクセスの設定が既になされていた場合（図８のステップＦ１２２ａの設定済）、即ち、ヘッダー変換テーブル１２６Ａに該当エントリ（パケットヘッダー変換ルール）が存在する場合は、ヘッダー変換部１２２は、パケットヘッダー変換ルールに従ってパケットヘッダーを変換し、ネットワークに送出する（図８のステップＦ１２８ａ）。
【０１０５】
一方、ダイレクトアクセスの設定がなされていない場合（図８のステップＦ１２２ａの未設定）、ヘッダー変換部１２２は、変換管理マネージャー１４６Ａに対し、ダイレクトアクセスの設定リクエストを出す（図８のステップＦ１２４ａ）。これにより、図４、図５に示したシーケンスが開始される。
【０１０６】
図４、図５に示したシーケンスの実行により、ダイレクトアクセスの設定が完了した通知が、変換管理マネージャー１４６Ａからなされると（図８のステップＦ１２６ａのＹｅｓ）、ヘッダー変換部１２２は、パケットヘッダーをパケットヘッダー変換ルールに従って変換し、ネットワークに送出する（図８のステップＦ１２８ａ）。ダイレクトアクセスの設定完了通知がなされていない場合（図８のステップＦ１２６ａのＮｏ）、ヘッダー変換部１２２は待機する。
【０１０７】
このようにして、仮想マシン１２Ａは、ダイレクトアクセスを用いた通信を実行する。
【０１０８】
図９は、図６のシーケンス図における、仮想マシン１２Ｂに備えられるヘッダー変換部１２２Ｂの処理を詳細に示したフローチャートである。
【０１０９】
図９を参照すると、ヘッダー変換部１２２Ｂは、ネットワークインタフェースカード１６Ｂからパケットを受信すると（図９のステップＦ１２０ｂのＹｅｓ）、ヘッダー変換テーブル１２２Ｂを参照し、パケットヘッダー変換ルールを取得し、このルールに従って、パケットヘッダーを戻す（図９のステップＦ１２４ｂ）。そして、ヘッダー変換部１２２Ｂは、パケットヘッダーを戻したパケットを、適切なアプリケーション１２４Ｂに転送する（図９のステップＦ１２６ｂ）。ネットワークインタフェースカード１６Ｂからパケットを受信しない場合（図９のステップＦ１２０ｂのＮｏ）、ヘッダー変換部１２６Ｂは特に処理を開始しない。
【０１１０】
このようにして、仮想マシン１２Ｂは、ダイレクトアクセス用にパケットヘッダーが変換されて届いたパケットを受信し、アプリケーションに渡す。
【０１１１】
図１０は、図４のシーケンス図における、ハイパーバイザー１４Ａの変換管理マネージャー１４６Ａの処理を詳細に示したフローチャートである。
【０１１２】
図１０を参照すると、仮想マシン１２Ａからダイレクトアクセスの設定リクエストが発行されると（図１０のステップＦ１４０ａのＹｅｓ）、変換管理マネージャー１４６Ａは、設定リクエストに含まれる通信の識別情報を、通信先のサーバ１０Ｂの変換管理マネージャー１４６Ｂに通知する（図１０のステップＦ１４２ａ）。ダイレクトアクセスの設定リクエストが発行されていない場合（図１０のステップＦ１４０ａのＮｏ）、変換管理マネージャー１４６Ａは特に処理を開始しない。
【０１１３】
前記通信の識別情報の送信によりハイパーバイザー１４Ｂ側で一連の処理が行われ（図４参照）、通信先のサーバ１０Ｂの変換管理マネージャー１４６Ｂから、パケットヘッダー変換ルールの通知がなされると（図１０のステップＦ１４４ａのＹｅｓ）、変換管理マネージャー１４６Ａは、ダイレクトアクセスの設定リクエストを出した仮想マシンのヘッダー変換テーブル１２６Ａに、パケットヘッダー変換ルールを登録する（図１０のステップＦ１４６ａ）。一方、パケットヘッダー変換ルールの通知がなされていない場合（図１０のステップＦ１４４ａのＮｏ）、変換管理マネージャー１４６Ａは待機する。
【０１１４】
次に、変換管理マネージャー１４６Ａは、ダイレクトアクセス設定要求を出した仮想マシン１２Ａに対して、ダイレクトアクセスの設定が完了した通知を出す（図１０のステップＦ１４７ａ）。
【０１１５】
このようにして、図４のシーケンス図における送信側のハイパーバイザー１４Ａのダイレクトアクセスの設定が完了する。
【０１１６】
図１１は、図４のシーケンス図における、ハイパーバイザー１４Ｂに備えられる変換管理マネージャー１４６Ｂの処理を詳細に示したフローチャートである。
【０１１７】
図１１を参照すると、ダイレクトアクセス設定の通知があった場合（図１１のステップＦ１４０ｂのＹｅｓ）、変換管理マネージャー１４６Ｂは、通知に含まれる通信の識別情報と、ヘッダー管理テーブル１４４Ｂに登録されている情報をもとに、パケットヘッダー変換ルールを決定し、ヘッダー管理テーブル１４４Ｂに登録する（図１１のステップＦ１４２ｂ）。一方、ハイパーバイザー１４Ａ側からダイレクトアクセス設定の通知がなされていない場合（図１１のステップＦ１４０ｂのＮｏ）、変換管理マネージャー１４６Ｂは特に処理を開始しない。
【０１１８】
次に、変換管理マネージャー１４６Ｂは、図１１のステップＦ１４２ｂで決定したパケットヘッダー変換ルールを、通知されたダイレクトアクセスの通信先となる仮想マシン１２Ｂのヘッダー変換テーブル１２６Ｂに登録する（図１１のステップＦ１４４ｂ）。さらに、変換管理マネージャー１４６Ｂは、この変換ルールに基づいて、ネットワークインタフェースカード１６Ｂのフィルターテーブル１６４Ｂにエントリを追加する（図１１のステップＦ１４６ｂ）。
【０１１９】
次に、変換管理マネージャー１４６Ｂは、ダイレクトアクセスの設定を通知したサーバ１０Ａの変換管理マネージャー１４６Ａに対して、図１１のステップＦ１４２ｂで決定したパケットヘッダー変換ルールを通知する（図１１のステップＦ１４８ｂ）。
【０１２０】
このようにして、図４のシーケンス図における受信側のハイパーバイザー１４Ｂのダイレクトアクセスの設定が完了する。
【０１２１】
図１２は、図６のシーケンス図における、ハイパーバイザー１４Ａの変換管理マネージャー１４６Ａの処理を詳細に示したフローチャートである。図１０のシーケンス図と同様の処理については、同一の符号を付し、詳細な説明を省略する。
【０１２２】
変換管理マネージャー１４６Ａは、仮想マシン１２Ａからダイレクトアクセスの設定リクエストが発行されると、設定リクエストに含まれる通信の識別情報と、ヘッダー管理テーブルの情報をもとに、パケットヘッダー変換ルールを決定し、ヘッダー管理テーブル１４４Ａに登録する（図１２のステップＦ１４１ａ）。
【０１２３】
変換管理マネージャー１４６Ａは、通信先のサーバ１０Ｂの変換管理マネージャー１４６Ｂに対し、通信の識別情報と、図１２のステップＦ１４１ａで決定したパケットヘッダー変換ルールと、を通知する（図１２のステップＦ１４３ａ）。
【０１２４】
前記通信の識別情報とパケットヘッダー変換ルールとの送信によりハイパーバイザー１４Ｂ側で一連の処理が行われ（図６参照）、通信先のサーバ１０Ｂの変換管理マネージャー１４６Ｂから、パケットヘッダー変換ルールが通知されると、変換管理マネージャー１４６Ａは、ダイレクトアクセスの設定リクエストを出した仮想マシン１２Ａのヘッダー変換テーブル１２６Ａに、図１２のステップＦ１４１ａで決定したパケットヘッダー変換ルールと、通信先の変換管理マネージャー１４６Ａから通知されたパケットヘッダー変換ルールとをセットする（図１２のステップＦ１４５ａ）。
【０１２５】
次に、図１２のステップＦ１４１ａで決定したパケットヘッダー変換ルールに基づいて、ネットワークインタフェースカード１６Ａのフィルターテーブル１６４Ａにエントリを登録する（図１２のステップＦ１４８ａ）。
【０１２６】
このようにして、図６のシーケンス図における送信側のハイパーバイザー１４Ａのダイレクトアクセスの設定が完了する。
【０１２７】
図１３は、図６のシーケンス図における、ハイパーバイザー１４Ｂに備えられる変換管理マネージャー１４６Ｂの処理を詳細に示したフローチャートである。図１１のシーケンス図と同様の処理については、同一の符号を付し、詳細な説明を省略する。
【０１２８】
変換管理マネージャー１４６Ｂは、ダイレクトアクセス設定の通知がなされ、通知をもとにパケットヘッダー変換ルールを決定すると、ダイレクトアクセスの通信相手となる仮想マシン１２Ｂのヘッダー変換テーブル１２６Ｂに、ダイレクトアクセス設定の通知に含まれるパケットヘッダー変換ルールと、通知をもとに決定したパケットヘッダー変換ルールと、を登録する（図１３のステップＦ１４５ｂ）。
【０１２９】
このようにして、図６のシーケンス図における受信側のハイパーバイザー１４Ｂのダイレクトアクセスの設定が完了する。
【０１３０】
以上のように、本実施形態では、ダイレクトアクセスを使用した仮想マシン１２同士の通信において、事前に互いのネットワークインタフェースカード１６に登録可能な情報と、既に存在する通信に関する情報から、ダイレクトアクセスのための、一意なパケットヘッダ変換ルールを決定し、パケットの送受信時にそのルールに基づいたパケットヘッダの変換が行われる。これにより、ネットワークインタフェースカード１６の差異を吸収しつつ、ダイレクトアクセスを用いた通信を実現することができる。
【０１３１】
なお、上記した実施形態では、パケットヘッダの変換によりネットワークインタフェースカード１６の差異を吸収するものとして説明したが、パケットヘッダの変換ではなく、変換後のパケットヘッダを、もともとのパケットにカプセル化し、受信側でアンカプセル化する形態も採用可能である。本発明において、パケットヘッダの変換を行うことと、カプセル化を行うことには本質的な差異は生じない。
【０１３２】
［第２の実施形態］
次に、ダイレクトアクセスの設定契機に変更を加えた本発明の第２の実施形態について、図面を参照して詳細に説明する。図１４は、本発明の第２の実施形態のサーバ１０Ａ２の詳細構成を表したブロック図である。図３に示した第１の実施形態のサーバとの相違点は、ハイパーバイザー１４−２と、ハイパーバイザー１４−２を構成する仮想スイッチ１４２−２と、フローテーブル１４３と、ポリシーテーブル１４７である。その他本発明の第１の実施の形態と同様の構成要素については同一の符号を付し、詳細な説明を省略する。
【０１３３】
ハイパーバイザー１４−２は、仮想スイッチ１４２−２と、フローテーブル１４３と、ヘッダー管理テーブル１４４と、変換管理マネージャー１４６−２と、ポリシーテーブル１４７と、を備えている。
【０１３４】
第２の実施形態では、仮想マシン１２に係る通信は、仮想化環境の管理者が定める通信粒度でダイレクトアクセスを行うかどうかが制御される。この粒度は、少なくとも通信相手の仮想マシン１２が識別できる粒度であり、例えば、ＶＬＡＮ  ＩＤとＩＰアドレスの組み合わせ、あるいはＶＬＡＮ  ＩＤとＭＡＣアドレスの組み合わせ、などが考えられる。また、場合によっては、より細かい粒度でダイレクトアクセスを制御することも考えられる。その場合は、ポート番号やプロトコルまでを含めた通信粒度となる。以降、このような通信粒度単位のパケットの流れを「フロー」と呼ぶ。
【０１３５】
仮想スイッチ１４２−２は、仮想マシン１２に係る通信のうち、ダイレクトアクセスを使用しない通信を中継する。仮想スイッチ１４２−２は、フロー単位で通信の統計情報を管理する機能を有する。例えば、統計情報として、通過バイト数、通過パケット数、パケットのドロップ数などをフロー単位で管理するほか、フローの発生時刻、フローに属するパケットが最後に転送された時刻、などを管理する。
【０１３６】
フローテーブル１４３には、少なくともマッチ条件として使用するフローの識別情報と、そのフローの統計情報とを対応付けたエントリが格納される。統計情報は、仮想スイッチ１４２−２によって読み出され、更新される。
【０１３７】
仮想スイッチ１４２−２は、パケットを受信すると、フローテーブル１４３から、そのパケットのヘッダー情報に適合するマッチ条件を持つエントリを検索し、そのパケットが属するフローの統計情報を更新する。フローテーブル１４３に登録されていないフローに属するパケットが届いた場合、変換管理マネージャ１４６−２または仮想スイッチ１４２−２が保持する通信を識別する粒度に関する情報に基づいて当該フローの識別情報を生成し、フローテーブル１４３にエントリを新規に追加する。
【０１３８】
変換管理マネージャ１４６−２が通信を識別する粒度に関する情報を保持する場合、フローテーブル１４３に登録されていないフローに属するパケットが仮想スイッチ１４２−２に届いた際に、仮想スイッチ１４２−２が、変換管理マネージャ１４６−２に問い合わせ、フローテーブルに登録するエントリを取得し、フローテーブル１４３に登録することとしてもよい。
【０１３９】
ポリシーテーブル１４７には、フローの識別情報と、そのフローに対してダイレクトアクセスを使用するかどうかの判断基準が保持される。本実施形態では、フローの識別情報と、この判断基準をあわせて、「ポリシー」と呼ぶ。ポリシーの例としては、例えば、あて先ＩＰアドレスが１９２．１６８．１．１であるフローに対して、一定時間内に仮想スイッチ１４２−２を通過するパケット数が一定数を超えた場合に、ダイレクトアクセスを使用する、というような、フローテーブル１４３に保持される統計情報を利用したポリシーが考えられる。
【０１４０】
変換管理マネージャー１４６−２は、ポリシーテーブル１４７に保持されるポリシーに基づいて、あるフローに対してダイレクトアクセスを使用するかどうかを判断し、ダイレクトアクセスの設定を行う。
【０１４１】
続いて、図１５、図１６のシーケンス図を参照して、本実施形態の動作について詳細に説明する。
【０１４２】
図１５は、変換管理マネージャー１４６−２が、フローテーブル１４３に登録されていないフローに属するパケットが仮想スイッチ１４２−２に届いた際に、ダイレクトアクセスの設定を行う処理を示したシーケンス図である。本実施形態においては、仮想スイッチ側に通信を識別する粒度に関する情報を持つものとするが、変換管理マネージャー１４６−２が、この情報を保持していても、本質的には変わらない。
【０１４３】
まず、仮想スイッチ１４２−２が、パケットヘッダーと通信を識別する粒度に関する情報を用いて、フローの識別情報を生成し、変換管理マネージャー１４６−２に通知する（図１５のＳ１４２０−２）。この通信を識別する情報とは、例えば、パケットヘッダーである。
【０１４４】
次に、変換管理マネージャー１４６−２は、通信の識別情報と、フローの識別情報を用いてポリシーテーブル１４７を参照し、ダイレクトアクセスを使用するポリシーに該当するフローであった場合に、ダイレクトアクセスの設定処理を開始する（図１５のＳ１４６０−２）。
【０１４５】
ダイレクトアクセスの設定手順は、図４のＳ１４２ａ以降の処理、または、図６のＳ１４０ａ以降の処理と同様であるため、詳細な説明を省略する。
【０１４６】
図１６は、変換管理マネージャー１４６−２が、フローテーブル１４３に保持されている統計情報を用いて、ダイレクトアクセスの設定、あるいはダイレクトアクセス設定の終了を行う処理を示したものである。
【０１４７】
まず、変換管理マネージャー１４６−２が、仮想スイッチ１４２−２に対して、統計情報取得のリクエストを発行する（図１６のＳ１４６２−２）。このリクエストには、フローテーブル１４３に保持されているすべてのエントリを読み出すものや、特定の条件に一致するエントリだけを読み出すものなどが考えられる。
【０１４８】
次に、仮想スイッチ１４２−２は、変換管理マネージャー１４６−２が発行したリクエストに従ってフローテーブル１４３にアクセスし、フローの統計情報を読み出し、変換管理マネージャー１４６−２に転送する（図１６のＳ１４２２−２）。
【０１４９】
次に、変換管理マネージャー１４６−２は、取得したフローの統計情報を用いてポリシーテーブル１４７を参照し、ダイレクトアクセス対象のフローが存在すれば、ダイレクトアクセスの設定処理を開始し、ダイレクトアクセスを終了させるフローが存在すれば、ダイレクトアクセスの終了処理を開始する（図１６のＳ１４６４−２）。
【０１５０】
ダイレクトアクセスの設定手順は、図４のＳ１４２ａ以降の処理、または、図６のＳ１４０ａ以降の処理と同様であるため、詳細な説明を省略する。また、ダイレクトアクセスの終了手順は、図７と同様であるため、詳細な説明を省略する。
【０１５１】
以上のように本実施形態によれば、ダイレクトアクセスを使用した仮想マシン１２同士の通信において、管理者のポリシーや統計情報に基づいてダイレクトアクセスの設定または削除が行われる。このため、仮想マシン１０が明示的にダイレクトアクセスの設定要否を示さなくとも、ダイレクトアクセスを用いた通信を実現することができる。
【０１５２】
［第３の実施形態］
次に、ネットワークインタフェースカード側の構成に変更を加えた本発明の第３の実施形態について、図面を参照して詳細に説明する。図１７は、本発明の第３の実施形態のサーバ１０Ａ３の詳細構成を表したブロック図である。図３に示した第１の実施形態のサーバとの相違点は、ネットワークインタフェースカード１６−３に、ネットワークインタフェースカード１６−３を構成する受信フィルターテーブル（Ｉｎｇｒｅｓｓ  Ｆｉｌｔｅｒ  Ｔａｂｌｅ）１６４−３と、送信フィルターテーブル（Ｅｇｒｅｓｓ  Ｆｉｌｔｅｒ  Ｔａｂｌｅ）１６５とが設けられている点である。その他本発明の第１の実施形態と同様の構成要素については同一の符号を付し、詳細な説明を省略する。また、受信フィルターテーブル１６４−３は、第１の実施形態のフィルターテーブル１６４と同一の機能を持つため、詳細な説明を省略する。
【０１５３】
ネットワークインタフェースカード１６−３は、ネットワークインタフェースコントローラー１６２と、受信フィルターテーブル１６４−３と、送信フィルターテーブル１６５と、物理インタフェース１６６と、仮想インタフェース１６７と、物理ポート１６８と、を備えている。なお、図１７では、受信フィルターテーブル１６４−３と、送信フィルターテーブル１６５とが異なるテーブルとして図示されているが、実装上は、受信フィルターテーブル１６４−３と、送信フィルターテーブル１６５と、を同一のメモリなどを利用して実現することも可能である。この場合、送受信の両方向のパケットに対して、ネットワークインタフェースコントローラー１６２は同一のフィルターテーブルを参照し、パケットに対する処理を実行する。
【０１５４】
送信フィルターテーブル１６５は、仮想マシン１２から送出されたパケットを、ネットワークインタフェースカード１６−３にて、フィルタリングするためのルールを保持するためのテーブルである。送信フィルターテーブルには、パケットヘッダなどの、通信を識別するための情報と、その情報を持つパケットに対する処理を登録することができる。ここでの処理とは、パケットヘッダ中の宛先ＩＰアドレスフィールドの情報が特定の値のパケットはドロップさせるといったことが例として挙げられる。その他にも、ネットワークインタフェースコントローラー１６２にてパケットヘッダの書き換えや、パケットヘッダ以外のデータを用いたフィルタリング、などが考えられる。送信フィルターテーブル１６５へのルールの登録や削除といった操作は、ハイパーバイザー１４から行われる。操作方法は、受信フィルターテーブル１６４−３に対する操作と同様であるため、詳細な説明を省略する。
【０１５５】
ネットワークインタフェースコントローラー１６２は、仮想マシン１２から仮想インタフェース１６７を経由してパケットを受け取ると、パケットに含まれる通信を識別する情報を用いて、送信フィルターテーブル１６５を参照する。ネットワークインタフェース１６２は、送信フィルターテーブル１６５からパケットにマッチするエントリを検索し、そのエントリに登録された処理内容を実行する。前記検索の結果、エントリが存在しない場合、ネットワークインタフェースコントローラー１６２は、ダイレクトアクセスの設定がなされていない通信に係るパケットを送出したと見なし、パケットをドロップする、という使い方も考えられる。
【０１５６】
次に、図１８のシーケンス図、図１９、図２０のフローチャートを参照して、本実施形態の動作について詳細に説明する。なお、本動作の説明では、送信フィルターテーブル１６５にエントリが存在しない通信は、ネットワークインタフェースカード１６にて、パケットがドロップされるものとする。
【０１５７】
図１８は、送信フィルターテーブル１６５を利用したダイレクトアクセスの設定を行う処理の流れを示したものである。基本的な動作の流れは、図４のシーケンス図と同様であるので、図４と同様の処理については同一の番号を付し、詳細な説明を省略する。
【０１５８】
ハイパーバイザー１４Ａは、仮想マシン１２Ａからダイレクトアクセスのリクエストを受信すると、ハイパーバイザー１４Ｂの変換管理マネージャー１４６Ｂに対して、ダイレクトアクセスの通知を行う（図１８のＳ１４２ａ−３）。この通知には、ネットワークインタフェースカード１６Ａの送信フィルターテーブル１６５Ａに登録可能な通信の識別情報と、仮想マシン１２Ａからのリクエストに含まれる通信の識別情報と、が含まれる。
【０１５９】
次に、変換管理マネージャー１４６Ｂは、ダイレクトアクセスの通知に含まれる情報と、ネットワークインタフェースカード１６Ｂの受信フィルターテーブル１６４−３に登録可能な通信の識別情報と、をもとに、パケットヘッダー変換ルールＢを決定し、ヘッダー管理テーブル１４４Ｂに登録する（図１８のＳ１４０ｂ−３）。
【０１６０】
その後、図４のシーケンスと同様の処理が行われ、パケットヘッダー変換ルールＢは、変換管理マネージャー１４６Ａに通知される。そして、変換管理マネージャー１４６Ａは、パケットヘッダー変換ルールＢに基づいて、変換後のパケットヘッダーのうち、ネットワークインタフェースカード１６Ａの送信フィルターテーブル１６５Ａに登録可能な情報を登録する（図１８のＳ１４６ａ―３）。
【０１６１】
このようにして、サーバ１０Ａとサーバ１０Ｂの双方でダイレクトアクセスの設定がなされる。
【０１６２】
図１９は、図１８のシーケンス図における、ハイパーバイザー１４Ａの変換管理マネージャー１４６Ａの処理を詳細に示したフローチャートである。図１０のフローチャートと同様の処理については、同一の符号を付し、詳細な説明を省略する。
【０１６３】
変換管理マネージャー１４６Ａは、仮想マシン１２Ａからダイレクトアクセスのリクエストを受信すると、ハイパーバイザー１４Ｂの変換管理マネージャー１４６Ｂに対して、ダイレクトアクセスの通知を行う（図１９のステップＦ１４２ａ−３）。この通知には、ネットワークインタフェースカード１６Ａの送信フィルターテーブル１６５Ａに登録可能な通信の識別情報と、仮想マシン１２Ａからのリクエストに含まれる通信の識別情報と、が含まれる。
【０１６４】
変換管理マネージャー１４６Ｂからパケットヘッダー変換ルールＢが通知されると、変換管理マネージャー１４６Ａはパケットヘッダー変換ルールＢに基づいて、変換後のパケットヘッダーのうち、ネットワークインタフェースカード１６Ａの送信フィルターテーブル１６５Ａに登録可能な情報を登録する（図１９のＦ１４８ａ−３）。
【０１６５】
図２０は、図１８のシーケンス図における、ハイパーバイザー１４Ｂの変換管理マネージャー１４６Ｂの処理を詳細に示したフローチャートである。図１１のフローチャートと同様の処理については、同一の符号を付し、詳細な説明を省略する。
【０１６６】
変換管理マネージャー１４６Ｂは、変換管理マネージャー１４６Ａからのダイレクトアクセスの通知に含まれる情報と、ネットワークインタフェースカード１６Ｂの受信フィルターテーブル１６４−３に登録可能な通信の識別情報と、をもとに、パケットヘッダー変換ルールＢを決定し、ヘッダー管理テーブル１４４Ｂに登録する（図２０のＦ１４２ｂ−３）。
【０１６７】
図６に示したような、２台のサーバ１０間で両方向の通信に対して、ダイレクトアクセスの設定を行う場合、変換管理マネージャー１４６Ａが図６のＳ１４０ａの処理を行う前に、変換管理マネージャー１４６Ａと変換管理マネージャー１４６Ｂが、それぞれのネットワークインタフェースカード１６の送信フィルターテーブル１６５に登録可能な通信の識別情報に関する情報を、互いに交換し、交換した情報と、図６のＳ１４０ａ以降の処理で交換する情報とを元にパケットヘッダー変換ルールを決定することで、両方向の通信に対してダイレクトアクセスすることができる。または、図１８のシーケンス図で示した処理を、それぞれの通信の方向について実行することでも、両方向の通信に対して、ダイレクトアクセスの設定を行うこともできる。
【０１６８】
以上のように本実施形態では、ダイレクトアクセスを使用した仮想マシン１２同士の通信において、仮想マシンが誤ったパケットヘッダを付与してダイレクトアクセスを実行することを防ぐことができ、パケットが本来の通信相手ではない仮想マシン１２に届くことを防ぐことができる。その理由は、ネットワークインタフェースカード１６に送信フィルターテーブル１６５を設けたためである。
【０１６９】
また、本実施形態では、パケット送信側の仮想マシン１０の送信フィルターテーブル１６５に登録可能な通信の識別情報が、パケット受信側の仮想マシン１０の受信フィルターテーブル１６４−３に登録可能な通信の識別情報のスーパーセット（上位集合）になっていることが望ましい。スーパーセットの関係である場合、パケット受信側の受信フィルタに登録可能な情報のいずれか１つでも誤ったパケットヘッダを持つパケットの送出を防ぐことができる。一方、スーパーセットの関係ではない場合は、送信フィルターテーブル１６５に登録可能な通信の識別情報の範囲内で、誤ったパケットヘッダーを持つパケットの送出を防ぐことができるが、それ以外の情報に誤りのあるパケットはパケットの受信側で検出される。
【０１７０】
なお、第２の実施形態のネットワークインタフェースカード１６を、本実施形態のネットワークインタフェースカード１６−３で置き換えることで、第２の実施形態に、本実施の形態の効果であるパケット送信時におけるフィルタリングの機能を追加することができる。送信フィルターテーブル１６５の操作については、本実施の形態の動作の説明で述べた方法と同様であるため、詳細な説明を省略する。
【０１７１】
［第４の実施形態］
次に、変換管理マネージャ機能をサーバ１０の外部に集約した本発明の第４の実施形態について、図面を参照して詳細に説明する。図２１は、本発明の第４の実施形態の全体構成を表したブロック図である。基本的な構成は図２に示した第１の実施形態と同様であるが、ダイレクトアクセスコントローラ２０が接続されている点で相違している。図１と同様の構成要素については同一の符号を付し、詳細な説明を省略する。
【０１７２】
ダイレクトアクセスコントローラ２０は、ダイレクトアクセスの設定のためのパケットヘッダー変換ルールの割り当て及び管理を行う。ダイレクトアクセスコントローラ２０は、仮想ネットワーク資源と仮想計算資源からなる各ユーザの仮想化環境に、少なくとも１つ配置される。
【０１７３】
図２２は、本発明の第４の実施形態のサーバ１０Ａ４及びダイレクトアクセスコントローラ２０の詳細構成を表したブロック図である。図２２を参照すると、ダイレクトアクセスコントローラ２０と、サーバ１０−４を上で動作する仮想マシン１２と、ハイパーバイザー１４−４と、を接続した構成が示されている。
【０１７４】
図２２を参照すると、第１の実施形態の変換管理マネージャー１４６と、ヘッダー管理テーブル１４４と、を備えたダイレクトアクセスコントローラ（Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２０と、変換管理ローカルマネージャー１４６−４と、仮想スイッチ１４２−４と、フローテーブル１４３−４と、を備えたハイパーバイザー（ＨｙｐｅｒＶｉｓｏｒ）１４−４と、仮想マシン（ＶＭ）１２と、が示されている。図２２においても、第１の実施形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
【０１７５】
本実施の形態では、ダイレクトアクセスの設定を行う際には、仮想マシン１２、またはハイパーバイザー１４−４から、ダイレクトアクセスコントローラ２０に対して、ダイレクトアクセス設定のリクエストを出し、ダイレクトアクセスコントローラ２０が、ダイレクトアクセスのためのパケットヘッダー変換ルールを決定し、決定されたパケットヘッダー変換ルールを、変換管理ローカルマネージャー１４６−４に通知し、変換管理ローカルマネージャー１４６−４が、フィルターテーブル１６４と、ヘッダー変換テーブル１２６に設定を行うように動作する。
【０１７６】
また、ダイレクトアクセスコントローラ２０は、変換管理マネージャー１４６と、ヘッダー管理テーブル１４４と、を備えて構成される。なお、ダイレクトアクセスコントローラ２０には、サーバ１０Ａ４とネットワーク１８を介して通信する通信機能や、ヘッダー管理テーブル１４４を保持するためのメモリ領域、ダイレクトアクセスの制御のための演算機能を持つ。一般的には、ダイレクトアクセスコントローラ２０は、サーバを用いて構成することができる。
【０１７７】
変換管理マネージャー１４６は、各サーバのダイレクトアクセスに関する情報の管理と、ダイレクトアクセス設定のための、各サーバ内の変換管理ローカルマネージャー１４６−４とのネゴシエーションや通知を行う。このネゴシエーションによって、パケットの受信側のサーバのネットワークインタフェースカード１６のフィルターテーブル１６４に登録可能な情報に関する情報を取得し、パケットヘッダー変換ルールを決定する。また、決定したパケットヘッダー変換ルールを、ダイレクトアクセスを使用して通信を行う両仮想マシン１２が収容されたサーバ１０Ａ４に備えられる変換管理ローカルマネージャー１４６−４に通知する。
【０１７８】
ヘッダー管理テーブル１４４は、サーバ１０Ａ４で稼動する仮想マシン１２に係る通信を管理する。変換管理マネージャー１４６が、ダイレクトアクセスのためのヘッダー変換ルールを決定する際に、既に存在する通信と、新規のダイレクトアクセスの通信とを識別可能なようにするために使用される。
【０１７９】
また、サーバ１０Ａ４のハイパーバイザー１４−４は、仮想スイッチ１４２−４と、フローテーブル１４３−４と、変換管理マネージャー１４６−４と、を備えて構成される。
【０１８０】
仮想スイッチ１４２−４は、仮想マシン１２に係る通信のうち、ダイレクトアクセスを使用しない通信を中継する。仮想スイッチ１４２−４は、現在アクティブな通信の識別子を、フローテーブル１４３−４に登録し、管理する。また、仮想スイッチ１４２−４は、パケットが仮想スイッチ１４２−４に届くたびに、フローテーブル１４３−４を参照し、新規の通信かどうかを確認する。新規の通信の場合は、変換管理ローカルマネージャー１４６−４に対して、新規の通信の識別子を通知する。
【０１８１】
フローテーブル１４３−４には現在アクティブな通信の識別子が保存される。
【０１８２】
変換管理ローカルマネージャー１４６−４は、仮想マシン１２からダイレクトアクセスの設定リクエストが発行されると、リクエストに含まれる通信の識別子を、ダイレクトアクセスコントローラ２０に通知する。また、変換管理ローカルマネージャー１４６−４は、ダイレクトアクセスコントローラ２０からの、ネットワークインタフェースカード１６のフィルターテーブル１６４に登録可能な通信の識別情報の問い合わせに対して、フィルターテーブル１６４に登録可能な通信の識別情報に関する情報を通知する。また、ダイレクトアクセスコントローラ２０から、ヘッダー変換ルールが通知されると、該当する仮想マシン１２のヘッダー変換テーブル１２６に、ヘッダー変換ルールを登録し、場合によっては、フィルターテーブル１６４にエントリを追加する。そのため、通知されるヘッダー変換ルールがどのダイレクトアクセスの設定要求に対応するものかを識別するために、ヘッダー変換ルールには、ダイレクトアクセスの要求と対応付けられた識別子が付与される。
【０１８３】
また、変換管理ローカルマネージャー１４６−４は、仮想スイッチ１４２−４から、新規の通信が発生した旨を示す通知がなされると、ダイレクトアクセスコントローラ２０に対して、通信の識別子を通知する。また、変換管理ローカルマネージャー１４６−４は、ダイレクトアクセスを用いた通信の終了時に、場合によっては、フィルターテーブル１６４から該当するエントリを削除し、また、変換管理ローカルマネージャー１４６−４は、ダイレクトアクセスコントローラ２０に対して、ダイレクトアクセスを用いた通信が終了したことを、通信の識別子とともに通知する。
【０１８４】
次に、図２３、図２４のシーケンス図、図２５、図２６のフローチャートを参照して、本実施形態の動作について詳細に説明する。
【０１８５】
図２３は、仮想マシン１２のリクエストに基づいて、２台のサーバ間（サーバＡ、サーバＢ）でダイレクトアクセスの設定を行う処理を示したシーケンス図である。図２３において、図４に示した第１の実施形態のシーケンス図と同様の処理については、同一の符号を付し、詳細な説明を省略する。また、本実施形態の動作の説明では、仮想マシン１２は、ダイレクトアクセスの設定リクエストを、変換管理ローカルマネージャー１４６−４経由で、ダイレクトアクセスコントローラ２０に出すが、仮想マシン１２が直接ダイレクトアクセスコントローラ２０に、ダイレクトアクセスの設定リクエストを出すことも可能である。このことは本実施形態に本質的な差異を与えない。
【０１８６】
図２３を参照すると、まず、仮想マシン１２Ａが変換管理ローカルマネージャー１４６−４Ａに対して、ダイレクトアクセスのリクエストを送信する（図２３のＳ１２０ａ−４）。このリクエストには、通信を識別する識別情報が含まれている。
【０１８７】
次に、変換管理ローカルマネージャー１４６−４Ａは、ダイレクトアクセスコントローラ２０に対して、ダイレクトアクセス対象の通信の識別情報を転送する（図２３のＳ１４２ａ−４）。
【０１８８】
次に、ダイレクトアクセスコントローラ２０に備えられる変換管理マネージャー１４６は、ダイレクトアクセスを用いた通信の相手となる仮想マシン１２Ｂが収容されたサーバ１０Ｂの変換管理ローカルマネージャー１４６−４Ｂに対して、ネットワークインタフェースカード１６Ｂのフィルターテーブル１６４Ｂに登録可能な通信を識別する識別情報を問い合わせる（図２３のＳ２００）。
【０１８９】
前記問い合わせを受けた変換管理ローカルマネージャー１４６−４Ｂは、ダイレクトアクセスコントローラ２０に対して、フィルターテーブル１６４Ｂに登録可能な、通信を識別する情報に関する識別情報を応答する（図２３のＳ１４０ｂ−４）。
【０１９０】
次に、ダイレクトアクセスコントローラ２０は、変換管理ローカルマネージャー１４６−４Ａから受信した通信の識別情報と、変換管理ローカルマネージャー１４６−４Ｂから受信したフィルターテーブル１６４Ｂに登録可能な識別情報とから、パケットヘッダー変換ルールを決定し、ヘッダー管理テーブル１４４に登録する（図２３のＳ２０２）。
【０１９１】
次に、ダイレクトアクセスコントローラ２０は、変換管理ローカルマネージャー１４６−４Ｂに対して、パケットヘッダー変換ルールを通知する（図２３のＳ２０４）。
【０１９２】
次に、変換管理ローカルマネージャー１４６−４Ｂは、ヘッダー変換テーブル１２６Ｂに、パケットヘッダー変換ルールを登録する（図２３のＳ１４４ｂ）。また、変換管理ローカルマネージャー１４６−４Ｂは、フィルターテーブル１６４Ｂに、パケットヘッダー変換ルールに基づいて、エントリを登録する（図２３のＳ１４６ｂ）。なお、図２３のＳ１４４ｂと図２３のＳ１４６ｂの処理には依存関係は無いため、実行する順番が入れ替わってもよい。図２３のステップＳ１４４ｂ、Ｓ１４６ｂの処理が終わると、変換管理ローカルマネージャー１４６−４Ｂは、ダイレクトアクセスコントローラ２０に対して、ダイレクトアクセスの設定が完了したことを通知する（図２３のＳ１５２ｂ−４）。
【０１９３】
前記完了通知を受信すると、ダイレクトアクセスコントローラ２０は、変換管理ローカルマネージャー１４６−４Ａに対して、パケットヘッダー変換ルールを通知する（図２３のＳ２０６）。
【０１９４】
前記パケットヘッダー変換ルールを受信した変換管理ローカルマネージャー１４６−４Ａは、ダイレクトアクセスのリクエストを出した仮想マシン１２Ａのヘッダー変換テーブル１２６Ａに、前記受信したパケットヘッダー変換ルールを登録する（図２３のＳ１４４ａ−４）。
【０１９５】
次に、変換管理ローカルマネージャー１４６−４Ａは、ダイレクトアクセスの設定が完了したことを、仮想マシン１２Ａに通知する（図２２のＳ１４７ａ−４）。
【０１９６】
このようにして、ダイレクトアクセスコントローラ２０を利用した、ダイレクトアクセスの設定が完了する。
【０１９７】
図２４は、ダイレクトアクセスを用いた通信が完了した際に、ダイレクトアクセスの設定を削除する処理を示したシーケンス図である。なお、図２４において、図７に示した第１の実施形態のシーケンス図と同様の処理については、同一の符号を付し、詳細な説明を省略する。
【０１９８】
まず、仮想マシン１２Ａは、ヘッダー変換テーブル１２６Ａから、該当するエントリを削除し（図２４のＳ１２６）、変換管理ローカルマネージャー１４６−４Ａに対して、ダイレクトアクセスを用いた通信が完了した旨を通知する（図２４のＳ１２８）。この通知には、ダイレクトアクセス対象の通信を識別する識別情報が含まれている。
【０１９９】
次に、変換管理ローカルマネージャー１４６−４Ａは、ダイレクトアクセスコントローラ２０に対して、ダイレクトアクセスを用いた通信が完了したことを通知する（図２４のＳ１４８ａ−４）。この通知には、ダイレクトアクセス対象の通信を識別する識別情報が含まれている。
【０２００】
次に、ダイレクトアクセスコントローラ２０は、変換管理ローカルマネージャー１４６−４Ｂに対して、ダイレクトアクセスを使用した通信が完了したことを通知する（図２４のＳ２０８）。この通知には、ダイレクトアクセス対象の通信を識別する識別情報が含まれている。
【０２０１】
次に、変換管理ローカルマネージャー１４６−４Ｂは、ヘッダー変換テーブル１２６から、該当するエントリを削除する（図２４のＳ１４８ｂ−４）。また、変換管理ローカルマネージャー１４６−４Ｂは、フィルターテーブル１６４Ｂから、該当するエントリを削除する（図２４のＳ１４９ｂ−４）。なお、図２４のＳ１４８ｂ−４と、図２４のＳ１４９ｂ−４の処理には依存関係は無いため、実行する順番が入れ替わってもよい。
【０２０２】
次に、変換管理ローカルマネージャー１４６−４Ｂは、ダイレクトアクセスコントローラ２０に対して、エントリの削除が完了した旨を通知する（図２４のＳ１５０ｂ−４）。この通知には、どのダイレクトアクセスを用いた通信のエントリの削除が完了したのかを示す識別情報が含まれている。
【０２０３】
次に、ダイレクトアクセスコントローラ２０は、ヘッダー管理テーブル１４４から、該当するエントリを削除する（図２４のＳ２１０）。
【０２０４】
このようにして、ダイレクトアクセスの設定の削除が完了する。
【０２０５】
図２５は、図２３のシーケンス図における、ハイパーバイザー１４Ｂの変換管理ローカルマネージャー１４６−４Ｂの処理のうち、フィルターテーブル１６４Ｂに登録可能な通信の識別情報に関する問い合わせに対する処理を詳細に示したフローチャートである。
【０２０６】
変換管理ローカルマネージャー１４６−４Ｂは、フィルターテーブル１６４Ｂに登録可能な通信の識別情報に関する問い合わせがあった場合（図２５のステップＦ１４０ｂ−４のＹｅｓ）、ダイレクトアクセスコントローラ２０に対して、フィルターテーブル１６４Ｂに登録可能な通信の識別情報を通知する（図２５のステップＦ１４２ｂ−４）。フィルターテーブル１６４Ｂに登録可能な通信の識別情報に関する問い合わせがない場合（図２５のステップＦ１４０ｂ−４のＮｏ）、変換管理ローカルマネージャー１４６−４Ｂは特に処理を開始しない。
【０２０７】
図２６は、図２３のシーケンス図における、ハイパーバイザー１４Ｂの変換管理ローカルマネージャー１４６−４Ｂの処理のうち、ヘッダー変換ルールを登録する処理を詳細に示したフローチャートである。
【０２０８】
まず、変換管理ローカルマネージャー１４６−４Ｂは、パケットヘッダー変換ルールがダイレクトアクセスコントローラ２０から通知された場合（図２６のステップＦ１４４ｂ−４のＹｅｓ）、ヘッダー変換テーブル１２６にパケットヘッダー変換ルールを登録する（図２６のステップＦ１４５ｂ−４）。パケットヘッダー変換ルールが通知されていない場合（図２５のステップＦ１４４ｂ−４のＮｏ）、変換管理ローカルマネージャー１４６−４Ｂは特に処理を開始しない。
【０２０９】
次に、変換管理ローカルマネージャー１４６−４Ｂは、パケットヘッダー変換ルールに基づいて、フィルターテーブル１６４Ｂにエントリを追加する（図２６のステップＦ１４６ｂ−４）。このときに、変換後のパケットヘッダーに含まれる情報のうち、フィルターテーブル１６４Ｂに登録可能な情報のみを登録する。なお、図２６のステップＦ１４５ｂ−４と、図２６のステップＦ１４６ｂ−４の処理に依存関係はないため、実行する順番が入れ替わってもよい。
【０２１０】
次に、変換管理ローカルマネージャー１４６−４Ｂは、ダイレクトアクセスコントローラ２０に対して、パケットヘッダー変換ルールの登録が完了した旨を通知する（図２６のステップＦ１５０ｂ−４）。この通知には、どのダイレクトアクセスに関するパケットヘッダー変換ルールの登録が完了したのかを示す識別情報が含まれている。
【０２１１】
本実施形態においても、図６に示したような、２台のサーバ１０間で両方向の通信に対して、ダイレクトアクセスの設定を行うこともできる。この場合、変換管理ローカルマネージャー１４６−４Ａが図６のＳ１４２ａ−４の処理を行う際に、ダイレクトアクセスコントローラ２０に対して、通信の識別情報と同時に、フィルターテーブル１６４Ａに登録可能な識別情報を通知する。これにより、ダイレクトアクセスコントローラ２０は、両方の通信方向に関するヘッダー変換ルールを決定することができる。または、図２３のシーケンス図で示した処理を、それぞれの通信の方向について実行することでも、両方向の通信に対して、ダイレクトアクセスの設定を行うことができる。
【０２１２】
ダイレクトアクセスコントローラ２０の別の形態として、各サーバに備えられるネットワークインタフェースカード１６のフィルターテーブル１６４に登録可能な通信の識別情報や、ネットワークインタフェースコントローラー１６２がサポートする機能を事前に収集、あるいは、ダイレクトアクセスの設定時に得た時点で保持しておくことも考えられる。この場合、ダイレクトアクセスの設定の際に、ダイレクトアクセスコントローラ２０が、ダイレクトアクセスの設定リクエストを出した仮想マシン１２の通信相手となる仮想マシンが収容されているサーバ１０のハイパーバイザー１４に、フィルターテーブル１６４に登録可能な通信の識別情報を問い合わせる必要がなくなり、ダイレクトアクセスの設定完了までの所要時間を短縮できる。
【０２１３】
以上のように本実施形態では、ダイレクトアクセスの際に使用する変換後のパケットヘッダーが、ネットワーク中で一意な値であるかどうかの確認を、各サーバ１０内のハイパーバイザー１４が行わなくて済むという効果がある。その理由は、ダイレクトアクセスの設定を行う際の問い合わせ先として、ネットワーク内にダイレクトアクセスコントローラ２０を設け、ダイレクトアクセスコントローラ２０が、ダイレクトアクセスの設定に関する情報と、サーバ１０の通信に関する情報を管理するように構成したことにある。
【０２１４】
［第５の実施形態］
次に、サーバ側のヘッダ変換機能とヘッダ変換ルールの生成機能を置く代わりに、外部のデータ変換装置（ダイレクトアクセスゲートウェイ）にこれらの機能を集約した本発明の第５の実施形態について図面を参照して詳細に説明する。
【０２１５】
図２７は、本発明の第５の実施形態の全体構成を表したブロック図である。図２７を参照すると、サーバ１０が、ネットワーク１８−５を介して、ダイレクトアクセスゲートウェイ３０に接続されている構成が示されている。
【０２１６】
本実施形態では、ネットワーク１８−５に接続されたサーバから送信されたパケットについて、ダイレクトアクセスゲートウェイ３０が、ダイレクトアクセス対象の通信について、パケットヘッダー変換ルールを適用する。なお、図２７の例では、サーバ１０はネットワーク１８−５を介してダイレクトアクセスゲートウェイ３０に接続されているが、サーバ１０が直接ダイレクトアクセスゲートウェイ３０に接続されている構成であってもよい。
【０２１７】
ダイレクトアクセスゲートウェイ３０は、ヘッダー変換部１２２と、変換管理マネージャー１４６と、ヘッダー管理テーブル１４４と、ネットワークインタフェース１６−５と、から構成される。各部の動作、およびダイレクトアクセスの設定方法は、本発明の他の実施形態と同様であるため、詳細な説明を省略する。
【０２１８】
本実施形態では、ダイレクトアクセスのための設定、パケットヘッダー変換をダイレクトアクセスゲートウェイ３０で実行する。このようにすることで、各サーバにヘッダー変換部１２２や、変換管理マネージャー１４６、ヘッダー管理テーブル１４４を備える必要がなくなり、サーバ１０に変更を加えなくてすむ。このようなダイレクトアクセス設定機能を持たないサーバ１０がデータの送信側であり、データの受信側が他の実施形態に示したようなダイレクトアクセス設定機能を備えたサーバ１０の場合に、ダイレクトアクセスによる通信性能の向上の恩恵を受けることができる。
【０２１９】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態で用いたネットワーク構成やサーバ、仮想マシン等の数に制約は無い。
【０２２０】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による計算機参照）
［第２の形態］
第１の形態の計算機において、
前記仮想マシン管理部は、前記第１の仮想マシンからのアクセス要求を受けた場合、
自装置側のネットワークインタフェースのフィルターテーブルに、前記第２の仮想マシンから受信するデータを前記第１の仮想マシンに転送するエントリを追加するとともに、少なくとも前記エントリのマッチ条件を前記第２の計算機に対して送信し、
前記第２の計算機に前記第２の仮想マシンから出力されたデータのデータ識別子を、前記第１の計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから送信させることが好ましい。
［第３の形態］
第２の形態の計算機において、
自装置側で動作する仮想マシンと前記第２の計算機上で動作する第２の仮想マシン間の通信を一意に識別するためのデータ識別子を管理するデータ識別子管理テーブルを備え、
前記データ識別子管理テーブルを参照して、前記マッチ条件を決定することが好ましい。
［第４の形態］
第１〜第３いずれか一の形態の計算機において、
前記仮想マシンと前記第２の仮想マシン間の通信を一意に識別するためのデータ識別子を管理するデータ識別子管理テーブルを備えた集中制御コントローラに、前記変換ルールの生成を依頼し、
前記集中制御コントローラにて生成された変換ルールを、前記第１の仮想マシンの変換部に設定するとともに、前記変換ルールを用いてフィルターテーブルを更新することが好ましい。
［第５の形態］
第１〜第４いずれか一の形態の計算機において、
前記仮想マシン管理部は、前記仮想マシンと前記ネットワークインタフェースとを中継する仮想スイッチを備え、
前記仮想スイッチを介して、前記仮想マシンからのアクセス要求を受け付けることが好ましい。
［第６の形態］
第１〜第５いずれか一の形態の計算機において、
前記仮想マシン管理部は、さらに、ダイレクトアクセスを行うか否かの判断基準となるポリシーを管理するポリシー管理機能を備え、前記ポリシーを参照し、前記仮想マシン間のデータについてダイレクトアクセスの設定を行うかどうかを判断することが好ましい。
［第７の形態］
第６の形態の計算機において、
前記ポリシーとして、通信の識別子を用いることができる。
［第８の形態］
第６又は第７の形態の計算機において、
前記仮想マシン管理部は、通信の統計情報を取得、管理する統計情報管理機能を備え、前記ポリシーとして、通信の統計情報を用いることができる。
［第９の形態］
第２〜第８いずれか一の形態の計算機において、
前記ネットワークインタフェースは、さらに、前記仮想マシン上で動作するアプリケーションからネットワークへの方向のデータに対して、データの識別子に応じて、データの転送先又はデータの破棄を決定するデータ送出制御機能と、前記送出データに対する制御内容を保存する保存領域と、を備え、
前記仮想マシン管理部は、さらに、前記変換ルールに基づいて、前記保存領域に、送出データに対する制御内容を設定する機能を備えることが好ましい。
［第１０の形態］
第１〜第９いずれか一の形態の計算機において、
前記データ識別子の変換に代えて、前記変換ルールを参照して、データのカプセル化及びアンカプセル化を行うこともできる。
［第１１の形態］
（上記第２の視点によるデータ変換装置（ダイレクトアクセスゲートウェイ）参照）
［第１２、第１３の形態］
（上記第３、第４の視点による通信方法参照）
［第１４の形態］
受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備えた第２の計算機と接続された計算機に実行させるプログラムであって、
前記ネットワークインタフェース及び自装置側のネットワークインタフェースを介して、前記第２の計算機側で動作する第２の仮想マシンと通信する第１の仮想マシンからのアクセス要求を受けた場合、前記第２の計算機に対して前記第１の仮想マシンから出力されるデータのデータ識別子を送信し、前記第２の計算機の前記フィルターテーブルの更新と、前記更新したフィルターテーブルのマッチ条件の返送とを要求する処理と、
前記第２の計算機から返送されたマッチ条件を用いて、前記第１の仮想マシンの変換部にデータ識別子の変換ルールを設定する処理と、
前記変換ルールに基づいて、前記第２の仮想マシンに送信するデータのデータ識別子を、前記第２の計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから前記第２の計算機に送信する処理と、を実行させるプログラム。
［第１５の形態］
受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備える計算機に実行させるプログラムであって、
第２の計算機から送信されたデータ識別子を用いて、前記フィルターテーブルに、前記第２の計算機から送信されたデータを該当する仮想マシンに転送させるエントリを追加する処理と、
前記第２の計算機に対して、前記追加したフィルターテーブルのマッチ条件を返送する処理とを実行させ、
前記第２の計算機に、前記第２の計算機で動作する仮想マシンから送信されたデータのデータ識別子を、前記追加したフィルターテーブルのマッチ条件に適用するよう変換させるプログラム。
［第１６の形態］
第１〜第１０いずれか一の形態の計算機を接続したダイレクトアクセス制御システム。
［第１７の形態］
仮想マシンと、仮想マシン管理部と、受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースとを備えた２つ以上の計算機が、第１１の形態のデータ変換装置（ダイレクトアクセスゲートウェイ）を介して接続されているダイレクトアクセス制御システム。
【０２２１】
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【産業上の利用可能性】
【０２２２】
本発明は、サーバ仮想化環境において、各サーバが異なるネットワークインタフェースカードを搭載していた場合にも、ダイレクトアクセスを利用した通信を実現することができ、ＩａａＳ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）のようなサービスにおいて、高い通信性能をユーザに提供することができる。
【符号の説明】
【０２２３】
１０、１０Ａ〜１０Ａ５  サーバ
１２、１２Ａ、１２Ｂ、１２００  仮想マシン（ＡＭ）
１４、１４Ａ、１４Ｂ、１４−２、１４−４  ハイパーバイザー
１６、１６−３、１６−５  ネットワークインタフェースカード（ＮＩＣ）
１８、１８−５、１８００  ネットワーク
２０  ダイレクトアクセスコントローラ
３０  ダイレクトアクセスゲートウェイ
１２２、１２２Ａ、１２２Ｂ  ヘッダー変換部
１２４、１２４Ａ、１２４Ｂ  アプリケーション（プログラム）
１２６、１２６Ａ、１２６Ｂ  ヘッダー変換テーブル
１４２、１４２−２、１４２−４  仮想スイッチ
１４３、１４３−４  フローテーブル
１４４、１４４Ａ  ヘッダー管理テーブル
１４６、１４６Ａ、１４６Ｂ、１４６−２  変換管理マネージャー
１４６−４、１４６−４Ａ、１４６−４Ｂ  変換管理ローカルマネージャー
１４７  ポリシーテーブル
１６２  ネットワークインタフェースコントローラー
１６４、１６４Ａ、１６４Ｂ  フィルターテーブル
１６４−３  受信フィルターテーブル
１６５  送信フィルターテーブル
１６６  物理インタフェース（ＰＩ）
１６７  仮想インタフェース（ＶＩ）
１６８  物理ポート
１０００  計算機
１４００  仮想マシン管理部
１６００  ネットワークインタフェース
【図１】
0005970954.tif 000002
【図２】
0005970954.tif 000003
【図３】
0005970954.tif 000004
【図４】
0005970954.tif 000005
【図５】
0005970954.tif 000006
【図６】
0005970954.tif 000007
【図７】
0005970954.tif 000008
【図８】
0005970954.tif 000009
【図９】
0005970954.tif 000010
【図１０】
0005970954.tif 000011
【図１１】
0005970954.tif 000012
【図１２】
0005970954.tif 000013
【図１３】
0005970954.tif 000014
【図１４】
0005970954.tif 000015
【図１５】
0005970954.tif 000016
【図１６】
0005970954.tif 000017
【図１７】
0005970954.tif 000018
【図１８】
0005970954.tif 000019
【図１９】
0005970954.tif 000020
【図２０】
0005970954.tif 000021
【図２１】
0005970954.tif 000022
【図２２】
0005970954.tif 000023
【図２３】
0005970954.tif 000024
【図２４】
0005970954.tif 000025
【図２５】
0005970954.tif 000026
【図２６】
0005970954.tif 000027
【図２７】
0005970954.tif 000028