はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
本発明は、その一実施形態において、図1に示すように、計算機上に構築されてユーザに仮想化環境を提供する仮想マシン1200と、仮想マシン1200を管理する仮想マシン管理部1400と、I/O仮想化技術をサポートしたネットワークインタフェース1600と、を備えた計算機1000同士を接続した構成にて実現できる。
具体的には、ネットワークインタフェース1600は、受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、ネットワーク1800を介して接続された第2の計算機上で動作する第2の仮想マシンから受信したデータを、自装置側の仮想マシン1200に転送するスイッチング機能を備える。
また、仮想マシン1200は、動作中のアプリケーション側のデータ識別子(MACアドレス、IPアドレス等またはこれらの組み合わせ)と、前記第2の仮想マシンとの通信用のデータ識別子(MACアドレス、IPアドレス等またはこれらの組み合わせ)とを相互に変換する変換ルールを参照して、前記データ識別子の変換を行う変換部を備え、前記ネットワークインタフェース1600を介して第2の仮想マシンと通信する。
また、仮想マシン管理部1400は、前記仮想マシン1200から新規アクセス要求を受けた場合、前記第2の計算機に対して自装置側の仮想マシン1200から出力されるデータのデータ識別子を送信し、前記第2の計算機側のフィルターテーブルの更新と、前記更新したフィルターテーブルのマッチ条件の返送とを要求する。前記第2の計算機からマッチ条件が返送されると、仮想マシン管理部1400は、返送されたマッチ条件を用いて、自装置側の仮想マシン1200の変換部にデータ識別子の変換ルールを設定する。
前記第2の計算機側のフィルターテーブルの更新と、自装置側の仮想マシン1200への変換ルールの設定とが完了すると、仮想マシン1200間で仮想マシン管理部1400を介さないダイレクトアクセスが開始される。この結果、仮想マシンに、高いI/O性能を提供することができる。
[第1の実施形態]
次に、本発明の第1の実施形態について図面を参照して詳細に説明する。図2は、本発明の第1の実施形態の全体構成を示す図である。図2を参照すると、2台のサーバ(以下、Server Aを「サーバ10A」、ServerBを「サーバ10B」と記す。両者を特に区別しない場合、「サーバ10」と記す。)と、サーバ10Aとサーバ10Bがネットワーク18を介して互いに接続されている。各サーバ10には、仮想マシン12(VM A1〜n、VM B1〜m)と、仮想マシン12を管理する仮想マシン管理部に相当するハイパーバイザー14(HyperVisor A、HyperVisor B)と、ネットワークインタフェース(NIC)16(NIC A、NIC B)とが備えられている。
仮想マシン12は、ハイパーバイザー14によって、CPU(Central Processing Unit)やメモリ、ディスク、ネットワークといった資源を割り当てられ、様々なアプリケーションを実行する。
ハイパーバイザー14は、仮想マシン12への資源割り当て、モニタリングなどの管理を行う。
ネットワークインタフェース16は、サーバ10とネットワーク18とのインタフェースであり、仮想マシン12がネットワーク18を介して通信を行う際に使用される。ネットワークインタフェース16は、I/O仮想化技術をサポートしている。
仮に、ネットワークインタフェースが、I/O仮想化技術をサポートしていない場合、仮想マシン12は、ハイパーバイザー14を介して通信を行う。一方、ネットワークインタフェースがI/O仮想化技術をサポートしている場合、ハイパーバイザー14の制御に基づいて、仮想インタフェースが仮想マシン12に割り当てられ、仮想マシン12は、ハイパーバイザー14を介さずに通信を行うことができる。逆に、ネットワークインタフェース16がI/O仮想化技術をサポートしていても、ハイパーバイザー14が仮想インタフェースを仮想マシン12に割り当てなかった場合、仮想マシン12はハイパーバイザー14を介して通信を行う。
図3は、図2のサーバ10Aの詳細構成を表したブロック図である。図3を参照すると、仮想マシン12と、ハイパーバイザー14とに、それぞれモジュールを配置した構成が示されている。ここで、モジュールとは、何らかの機能を提供するソフトウェア・プログラム、またはハードウェアを指す。
具体的には、図3のサーバ10Aの仮想マシン12(VM)は、ヘッダー変換部(Header Translator)122と、ヘッダー変換テーブル(Header Translation Table)126と、を備えている。
また、仮想マシン12では、1つ以上のアプリケーションプログラム(Application、以下、単に「アプリケーション」と記す。)124が稼動している。ヘッダー変換部122は、仮想マシン12が、I/O仮想化技術を利用してパケットを送出する際に、パケットヘッダを変換するモジュールである。パケットヘッダ変換の際には、ヘッダー変換部122は、ヘッダー変換テーブル126を参照して、パケットヘッダ変換に必要な情報を取得する。
ヘッダー変換テーブル126には、パケットヘッダを変換するための情報が登録されている。ヘッダー変換部122は、変換前のパケットヘッダをもとに、ヘッダー変換テーブル126を参照し、パケットヘッダをどのように変換するかの情報を取得する。ヘッダー変換テーブル126には、少なくとも、ダイレクトアクセス対象の通信を識別するのに必要な、パケットヘッダに含まれる情報の組み合わせと等しい粒度の、変換前のパケットヘッダの情報と、この情報に対応付けられた、パケットヘッダの変換ルールが登録される。例えば、ダイレクトアクセス対象の通信として、VLAN IDが2048、送信元IPアドレスが192.168.1.1、宛先IPアドレスが192.168.1.2、宛先ポート番号が80の通信のみを、ある仮想マシン同士の通信でダイレクトアクセスさせたい場合を考える。このときに、ネットワークインタフェースのフィルターテーブルのマッチ条件である宛先MACアドレスとVLAN IDの組でダイレクトアクセスを行うかどうかを判断する場合、ヘッダー変換テーブル126には、VLAN ID、送信元IPアドレス、宛先IPアドレス、宛先ポート番号を変換前の情報として登録し、変換ルールとして、この通信を識別可能な宛先MACアドレスとVLAN IDの組み合わせを、送信元仮想マシンのヘッダー変換テーブル126に登録する。
また、ヘッダー変換テーブル126には、ネットワークから受信したパケットのヘッダを元に戻すための情報も保持している。ダイレクトアクセスを行ったパケットのヘッダは変換されており、この変換後のパケットヘッダの情報を元にヘッダー変換テーブル126を参照し、ヘッダを元に戻す情報を取得し、元のヘッダに戻す処理が行われる。
ヘッダー変換部122は、パケットヘッダを変換する際に、上記のようにヘッダー変換テーブル126を参照する。なお、このようなヘッダー変換部122及びヘッダー変換テーブル126を、仮想マシン12に導入されるOS(Operating System)のデバイスドライバ中に備える形態等を採ることができる。
仮想マシン12が、ダイレクトアクセスを利用して、新たに通信を行いたい場合、ヘッダー変換ルールを取得するために、ハイパーバイザー14にダイレクトアクセスの設定リクエストを発行する。この設定リクエストは、仮想マシン間、あるいは仮想マシンと管理領域との通信機能を利用して送信する形態を採ることができる。
ハイパーバイザー14は、ダイレクトアクセス機能を提供するために、ヘッダー管理テーブル(Header Management Table)144と、変換管理マネージャー(Translation Management Manager)146と、を備えている。
ハイパーバイザー14には、さらに、仮想スイッチ(Virtual Switch)142が備えられ、I/O仮想化技術を利用しない場合における、仮想マシン12に係る通信を中継する機能を有する。
変換管理マネージャー146は、自サーバ内のダイレクトアクセスに関する情報の管理と、リモートサーバ(例えば、図2においてネットワーク18を介して接続されているサーバ10B)内の変換管理マネージャー146と、ダイレクトアクセスの設定を行うためのネゴシエーションを行う。このネゴシエーションによって、通信相手のサーバ10のネットワークインタフェース16がサポートするフィルターテーブルに登録可能な情報や、パケットヘッダをどのように変換するかを決定する。
ヘッダー管理テーブル144は、自サーバで稼動する仮想マシン12に係る通信を管理する。変換管理マネージャー146が、ダイレクトアクセスの設定時に、既に存在する通信と、新規のダイレクトアクセスの通信が識別可能なように、変換後のパケットヘッダを決定するために使用される。
ネットワークインタフェース16は、I/O仮想化技術をサポートしており、ネットワークインタフェース16を制御するネットワークインタフェースコントローラー(Network Interface Controller)162と、ネットワークインタフェース16に届いたパケットの出力先を登録したフィルターテーブル(Filter Table)164と、ハイパーバイザー14に対するインタフェースである物理インタフェース(Physical Interface、PI)166と、仮想マシン12に対するインタフェースである仮想インタフェース(Virtual Interface、VI)167と、ネットワーク18との物理的な接続の口となる物理ポート168(Physical Port)と、を備えている。
物理インタフェース166は、ハイパーバイザー14とのパケットの送受信に使用されるほか、ネットワークインタフェース16の動作に関する設定を、ハイパーバイザー14から行うためのインタフェースや、ネットワークインタフェース16のステータスを、ハイパーバイザー14から読み出すためのインタフェースとして使用される。
ネットワークインタフェース16は、ハイパーバイザー14の制御のもとで、パケットの送受信を行う。
パケットがネットワーク18から、物理ポート168へ届いた場合には、ネットワークインタフェースコントローラー162が、パケットのヘッダー情報をもとにフィルターテーブル164にアクセスし、物理インタフェース166、あるいは、仮想インタフェース167のいずれにパケットを出力するかを決定する。
フィルターテーブル164には、パケットの出力先を判断するための情報(マッチ条件)と対応付けて、パケットの出力先等を対応付けたエントリが登録される。パケットの出力先として、どのインタフェースにも出力せずに、ドロップすることを指定したエントリを設定することもできる。フィルターテーブル164に登録されていないパケットが届いた場合、物理インタフェース166を経由して、ハイパーバイザー14にパケットが転送される。このパケットに対する処理は、ハイパーバイザー14で決定され、場合によっては、ハイパーバイザー14が、フィルターテーブル164にこのパケットの情報と出力先と定めたエントリを登録する。
パケットが物理インタフェース166又は仮想インタフェース167のいずれかから届いた場合には、ネットワークインタフェースコントローラー162は、物理ポート168を通じて、パケットを送出する。
なお、図2、3に示したサーバ10の各部(処理手段)は、サーバ10を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
続いて、本実施形態の動作について図面を参照して詳細に説明する。はじめに、図4〜図7のシーケンスを参照して、本実施形態の全体動作について説明する。
図4は、仮想マシン12のリクエストにもとづいて、2台のサーバ10間(それぞれサーバ10A、サーバ10Bとする)でダイレクトアクセスの設定を行う処理を示したシーケンス図である。以下、サーバ10を構成する各要素についても、A、Bの符号を付して説明する。図4のシーケンス図では、仮想マシン12Aが通信の起動側(送信側)であり、仮想マシン12Bが通信の受信側であり、仮想マシン12Aから仮想マシン12Bへの通信のみダイレクトアクセスを使用するものとする。
まず、仮想マシン12A内のヘッダー変換部122Aが、ヘッダー変換テーブル126Aを参照し、ダイレクトアクセスの設定がなされた通信かどうかをチェックする(図4中に図示せず。)。ダイレクトアクセスの設定がなされていない場合、ヘッダー変換部122Aは、変換管理マネージャー146Aに対しダイレクトアクセスの設定リクエストを発行する(図4のS120a)。このリクエストには、パケットヘッダーに含まれる通信を識別する情報が含まれている。このリクエストを発行するタイミングの例としては、TCP/IPを用いた通信の場合、TCPの3−wayハンドシェイクにおいてSYNパケットを送出する際に、発行すること等が考えられる。
次に、変換管理マネージャー146Aは、リクエストに含まれる通信の識別情報を、サーバ10Bの変換管理マネージャー146Bに通知する(図4のS142a)。
次に、ダイレクトアクセスの通知を受けた変換管理マネージャー146Bは、通知された通信の識別情報と、フィルターテーブル164Bに登録可能な通信の識別情報と、ヘッダー管理テーブル144Bの情報とを用いて、送信側にパケットヘッダーをどのように変換して欲しいかを示すパケットヘッダー変換ルールBを決定する(図4のS140b)。このパケットヘッダー変換ルールBは、仮想マシン12Aがパケットをダイレクトアクセスを使用して送信する際に、パケットヘッダーをどのように変換するかを示したルールである。
ここで、ヘッダー管理テーブル144Bに登録された情報の使用方法について説明する。パケットヘッダー変換ルールBを決定する際には、変換後のパケットヘッダーのフィールドのうち、ネットワークインタフェース16Bのフィルターテーブル164Bに登録可能なパケットヘッダーのフィールドの範囲で同一のものが、サーバ10Bに係る通信で使用されていないかどうか、ヘッダー管理テーブル144Bを参照する。これにより、パケットヘッダー変換後のパケットヘッダーと同一の通信が他に存在しないことを保証する。そのため、決定したパケットヘッダー変換ルールBは、ヘッダー管理テーブル144Bに登録される。
なお、この変換の際には、ネットワーク18において、各仮想マシンを一意に識別する情報は変更しないことが望ましい。例えば、ネットワーク18がイーサネットであり、複数ユーザで同一のネットワークを共有している場合、各仮想マシンをMACアドレスとVLAN IDで識別することが考えられる。これらの情報を変換する場合には、パケットヘッダー変換ルール決定時に、ARP(Address Resolution Protocol)などを用いて、変換後のMACアドレスとVLAN IDが一致する仮想マシン10が存在しないことを確認する必要がある。
次に、変換管理マネージャー146Bは、通信相手の仮想マシン12Bのヘッダー変換テーブル126Bに、図3の140bで決定したパケットヘッダー変換ルールBを登録する(図4のS144b)。
次に、変換管理マネージャー146Bは、フィルターテーブル164Bに、パケットヘッダー変換ルールBに基づいてエントリを追加し、ダイレクトアクセスの設定を行う(図4のS146b)。なお、図3のS144bの処理と、図3のS146bの処理に依存はないため、処理の手順が入れ替わってもよい。
次に、変換管理マネージャー146Bは、変換管理マネージャー146Aに対して、パケットヘッダー変換ルールBを通知する(図4のS142b)。
次に、変換管理マネージャー146Aは、ダイレクトアクセスのリクエストを出した仮想マシン12Aのヘッダー変換テーブル126Aに、図4のステップS142bで通知されたパケットヘッダー変換ルールBを登録する(図4のS144a)。
なお、同一ユーザの環境下で仮想マシン12を一意に識別する情報を変換する場合には、変換後のパケットヘッダで通信相手にパケットが届くようにネットワーク装置の設定を行う必要がある。例えば、ネットワークがイーサネットの場合で、宛先MACアドレスを変換してパケットを送信する場合、パケットを送信する前に、ARPパケットを送信し、通信を行う仮想マシン12の間に存在するネットワークスイッチにMACアドレスを学習させる必要がある。この学習のトリガは、変換管理マネージャー146Aがダイレクトアクセスの設定を行う前に実行してもよいし、アプリケーション124Aがパケットを投げる際に行っても良い。後者の場合、仮想マシンAのプロトコルスタックがARP解決を行う前に、ヘッダー変換部122がパケットヘッダの変換を行うことで、仮想マシンAのARPテーブルに送信するパケットのMACアドレスが登録されていないようにすることができ、プロトコルスタックがパケットを送信する前にARP解決を実行することで、ネットワーク装置の設定がなされる。
ダイレクトアクセスの設定完了後、変換管理マネージャー146Aは、ダイレクトアクセス設定のリクエストを出した仮想マシン12Aに対して、ダイレクトアクセスの設定が完了したことを通知する(図4のS147a)。
以上の動作により、仮想マシン12Aから仮想マシン12Bに対する通信について、ネットワークインタフェースカード16Bのフィルターテーブル164Bに登録可能な情報を考慮したダイレクトアクセスの設定が行われた。仮想マシン12Aは、パケットヘッダー変換ルールBに基づいてパケットを変換し、パケットを送出する。
図5は、ダイレクトアクセスの設定がなされた後の、仮想マシン12Aと仮想マシン12Bの通信の流れを示したシーケンス図である。図4と同様に、それぞれのサーバ10、及びその構成要素に対して、符号A、Bを付与して説明する。
まず、仮想マシン12Aで稼動するアプリケーション124(アプリケーション124Aとする)がソケットライブラリのような通信ライブラリを使用するなどして、パケットの送信要求を発行する(図5のS1240a)。この送信要求には、MACアドレス、IPアドレス等の通信を識別する識別情報が含まれている。
次に、ヘッダー変換部122Aは、ヘッダー変換テーブル126Aから前記識別情報に対応するエントリを検索し、パケットヘッダの変換情報を取得する(図5のS1220a)。
次に、ヘッダー変換部122Aは、パケットヘッダを変換し、プロトコルスタックやネットワークインタフェースカード16Aを通じて、パケットをネットワーク18に送出する(図5のS1222a)。前記パケットヘッダの変換は、サーバ10Bのネットワークインタフェースカード16Bが、フィルターテーブル164Bを参照して、仮想マシン12Aから送出されたパケットを適切な仮想マシンに転送できるように書き換えるものである。
次に、ネットワークインタフェースカード16Bは、フィルターテーブル164Bから届いたパケットのヘッダー情報に適合するマッチ条件を持つエントリを検索し、適切な仮想インタフェースにパケットを転送する(図5のS160b)。
次に、ヘッダー変換部122Bは、ヘッダー変換テーブル126Bから、受信したパケットのヘッダー情報に適合するマッチ条件を持つエントリを検索し、パケットヘッダの変換情報を取得する(図5のS1220b)。
次に、ヘッダー変換部122Bは、受信したパケットのパケットヘッダを変換し、アプリケーションにパケットを転送する(図5のS1224b)。ここでのパケットヘッダの変換は、ステップS1222aで書き換えた内容を復元するものである。
以上のようにして、ダイレクトアクセスを用いた通信が実行される。
以上の図4、図5の説明では、サーバ10Aからサーバ10Bへの方向の通信に対して、ダイレクトアクセスの設定を行うものとして説明したが、2台のサーバ10間の両方向の通信に対して、ダイレクトアクセスの設定を行うことも可能である。以下、図6を参照して、2台のサーバ10間で両方向の通信に対して、ダイレクトアクセスの設定を行う処理について説明する。また、以下の説明においても、それぞれのサーバ10及びその構成要素に対して、符号A、Bを付与して説明する。また、図6において、図4と同様の処理については、同一の符号を付し、詳細な説明を省略する。
図6を参照すると、変換管理マネージャー146Aは、ヘッダー変換部122Aからダイレクトアクセスの設定リクエストを受けると、ダイレクトアクセスのリクエストに含まれる通信の識別情報を元に、フィルターテーブル164Aに登録可能なパケットヘッダーのフィールドを、仮想マシン12B側にどのように変換してほしいかを示すパケットヘッダー変換ルールAを決定する(図6のS140a)。決定の際に、ヘッダー管理テーブル144Aを参照し、同じ変換ルールが存在しないことを保証する。また、前述したように、仮想マシン12を同一ユーザの環境下で一意に識別可能な情報を変換する場合は、そのユーザの環境内に変換後の識別子と同一の情報を持つ仮想マシン12が存在しないかどうか確認する必要がある。そのため、決定したパケットヘッダー変換ルールAは、ヘッダー管理テーブル144Aに登録される。
次に、変換管理マネージャー146Aが、サーバ10Bの変換管理マネージャー146Bに対して、変換前の通信の識別情報と、パケットヘッダー変換ルールAとを通知する(図6のS143a)。
ダイレクトアクセスの通知を受けた変換管理マネージャー146Bは、図4のステップS140bと同様に、パケットヘッダー変換ルールBを決定し、ヘッダー管理テーブル144Bに登録する。(図6のS140b)。
次に、変換管理マネージャー146Bは、仮想マシン12Bのヘッダー変換テーブルBに、パケットヘッダー変換ルールAと、パケットヘッダー変換ルールBとを登録する(図6のS145b)。
次に、変換管理マネージャー146Bは、図4のステップS146bと同様に、パケットヘッダー変換ルールBに基づいて、ネットワークインタフェースカード16Bのフィルターテーブル164Bにエントリを追加する(図6のS146b)。なお、図6のS145bの処理と、図6のS146bの処理に依存はないため、処理の手順が入れ替わってもよい。
次に、変換管理マネージャー146Bは、図4のステップS142bと同様に、サーバ10Aの変換管理マネージャー146Aに対して、パケットヘッダー変換ルールBを通知する。
次に、変換管理マネージャー146Aは、ダイレクトアクセスのリクエストを出した仮想マシン12Aのヘッダー変換テーブル126Aに、パケットヘッダー変換ルールAと、図6の142bで通知されたパケットヘッダー変換ルールBとを登録する(図6のS145a)。なお、同一ユーザの環境下で仮想マシン12を一意に識別する情報を変換する必要がある場合には、変換後のパケットヘッダで通信相手にパケットが届くようにネットワーク装置の設定を行う必要がある。また、パケットヘッダー変換ルールAについては、図6のS140aでパケットヘッダー変換ルールAを決定した後、図6のS145aまでのいずれかのタイミングで(例えば、ステップS140a)、ヘッダー変換テーブル126Aに登録してもよい。
次に、変換管理マネージャー146Aは、パケットヘッダー変換ルールAに基づいて、フィルターテーブル164Aにエントリを追加し、ダイレクトアクセスの設定を行う(図6のS146a)。なお、図6のS145aの処理と、図6の146aの処理に依存はないため、処理の手順が入れ替わってもよい。
ダイレクトアクセスの設定完了後、変換管理マネージャー146Aは、ダイレクトアクセス設定のリクエストを出した仮想マシン12Aに対して、ダイレクトアクセスの設定が完了したことを通知する(図6のS147a)。
以上の動作により、仮想マシン12Aと仮想マシン12Bの間の通信について、ネットワークインタフェースカード16Bのフィルターテーブル164Bに登録可能な情報を考慮したダイレクトアクセスの設定が行われた。なお、図6のシーケンス図に示すように、一度のネゴシエーションで双方向の設定を行わずに、図4のシーケンス図に示すような片方向の通信についての設定を仮想マシン12Aと仮想マシン12Bがそれぞれ実行することでも、同様の設定が可能である。また、ダイレクトアクセスの設定を、仮想マシンからのリクエストを契機にするほか、通信頻度や仮想マシン管理部の負荷等に応じて、事前に設定しておくことも考えられる。
その後は、図5に示したシーケンスと同様に、仮想マシン12Aは、パケットヘッダー変換ルールBに基づいてパケットヘッダーを変換し、仮想マシン12Bに対してパケットを送出する。一方、仮想マシン12Bからパケットを受信すると、仮想マシン12Aは、パケットヘッダーをパケットヘッダー変換ルールAに基づいて戻し、適切なアプリケーション124Aにパケットを転送する。同様に、仮想マシン12Bは、仮想マシン12Aからのパケットをパケットヘッダー変換ルールBに基づいて戻し、適切なアプリケーション124Bにパケットを転送する一方、パケットヘッダー変換ルールAに基づいてパケットヘッダーを変換し、仮想マシン12Aに対してパケットを送出する。
続いて、上記のように設定されたダイレクトアクセスの設定を削除する際の処理の流れについて説明する。図7は、仮想マシン12同士の通信が完了し、ダイレクトアクセスを用いた通信において、受信側となる仮想マシン12における、ダイレクトアクセスの設定を削除する際の処理の流れを示したシーケンス図である。
まず、仮想マシン12は、ヘッダー変換テーブル126に登録されている、削除対象の通信に関するエントリを削除する(図7のS126)。エントリの検索方法は、図5のS1220aと同様である。
次に、仮想マシン12は、変換管理マネージャー146に対して、ダイレクトアクセスを使用した通信が完了したことを通知する(図7のS128)。この通知には、完了した通信を識別する情報が含まれている。
次に、変換管理マネージャー146は、ヘッダー管理テーブル144から該当するエントリを削除する(図7のステップS148)。ここでのエントリの検索方法は、図6のS140aと同様である。
次に、変換管理マネージャー146は、ネットワークインタフェースカード16のフィルターテーブル164から、該当するエントリを削除する(図7のステップS149)。
このようにして、ダイレクトアクセスの設定を削除することができる。なお、ダイレクトアクセスを用いた通信において、送信側となる仮想マシン12における、ダイレクトアクセスの設定を削除する処理は、図7のステップS126と同様に、仮想マシン12が行うようにすればよい。
以上のようなダイレクトアクセスの設定削除を行うことで、各テーブルのエントリ数を減らし、仮想マシンや変換管理マネージャー146の応答性能を維持することができる。もちろん、通信頻度等に応じて、特定の通信についてはダイレクトアクセスの設定削除を省略することもできる。
続いて、上記したシーケンス図における仮想マシン12やハイパーバイザー14の動作についてこれら構成要素毎に説明する。
図8は、仮想マシン12Aに備えられるヘッダー変換部122の処理を詳細に示したフローチャートである。
まず、ヘッダー変換部122は、アプリケーションからパケット送信要求がなされると(図8のステップF120aのYes)、ヘッダー変換テーブル126Aを参照し、送信要求がなされたパケットが属する通信に対して、既にダイレクトアクセスの設定がなされているかどうかを確認する(図8のステップF122a)。設定済みかどうかの確認は、パケットヘッダに含まれる情報を用いて、ヘッダー変換テーブル126Aを参照し、対応するエントリが存在するかどうかで判定することができる。なお、ステップF120aにおいて、アプリケーションからパケット送信要求がなされていない場合は、ヘッダー変換部122は特に処理を開始しない(図8のステップF120aのNo)。
次に、ダイレクトアクセスの設定が既になされていた場合(図8のステップF122aの設定済)、即ち、ヘッダー変換テーブル126Aに該当エントリ(パケットヘッダー変換ルール)が存在する場合は、ヘッダー変換部122は、パケットヘッダー変換ルールに従ってパケットヘッダーを変換し、ネットワークに送出する(図8のステップF128a)。
一方、ダイレクトアクセスの設定がなされていない場合(図8のステップF122aの未設定)、ヘッダー変換部122は、変換管理マネージャー146Aに対し、ダイレクトアクセスの設定リクエストを出す(図8のステップF124a)。これにより、図4、図5に示したシーケンスが開始される。
図4、図5に示したシーケンスの実行により、ダイレクトアクセスの設定が完了した通知が、変換管理マネージャー146Aからなされると(図8のステップF126aのYes)、ヘッダー変換部122は、パケットヘッダーをパケットヘッダー変換ルールに従って変換し、ネットワークに送出する(図8のステップF128a)。ダイレクトアクセスの設定完了通知がなされていない場合(図8のステップF126aのNo)、ヘッダー変換部122は待機する。
このようにして、仮想マシン12Aは、ダイレクトアクセスを用いた通信を実行する。
図9は、図6のシーケンス図における、仮想マシン12Bに備えられるヘッダー変換部122Bの処理を詳細に示したフローチャートである。
図9を参照すると、ヘッダー変換部122Bは、ネットワークインタフェースカード16Bからパケットを受信すると(図9のステップF120bのYes)、ヘッダー変換テーブル122Bを参照し、パケットヘッダー変換ルールを取得し、このルールに従って、パケットヘッダーを戻す(図9のステップF124b)。そして、ヘッダー変換部122Bは、パケットヘッダーを戻したパケットを、適切なアプリケーション124Bに転送する(図9のステップF126b)。ネットワークインタフェースカード16Bからパケットを受信しない場合(図9のステップF120bのNo)、ヘッダー変換部126Bは特に処理を開始しない。
このようにして、仮想マシン12Bは、ダイレクトアクセス用にパケットヘッダーが変換されて届いたパケットを受信し、アプリケーションに渡す。
図10は、図4のシーケンス図における、ハイパーバイザー14Aの変換管理マネージャー146Aの処理を詳細に示したフローチャートである。
図10を参照すると、仮想マシン12Aからダイレクトアクセスの設定リクエストが発行されると(図10のステップF140aのYes)、変換管理マネージャー146Aは、設定リクエストに含まれる通信の識別情報を、通信先のサーバ10Bの変換管理マネージャー146Bに通知する(図10のステップF142a)。ダイレクトアクセスの設定リクエストが発行されていない場合(図10のステップF140aのNo)、変換管理マネージャー146Aは特に処理を開始しない。
前記通信の識別情報の送信によりハイパーバイザー14B側で一連の処理が行われ(図4参照)、通信先のサーバ10Bの変換管理マネージャー146Bから、パケットヘッダー変換ルールの通知がなされると(図10のステップF144aのYes)、変換管理マネージャー146Aは、ダイレクトアクセスの設定リクエストを出した仮想マシンのヘッダー変換テーブル126Aに、パケットヘッダー変換ルールを登録する(図10のステップF146a)。一方、パケットヘッダー変換ルールの通知がなされていない場合(図10のステップF144aのNo)、変換管理マネージャー146Aは待機する。
次に、変換管理マネージャー146Aは、ダイレクトアクセス設定要求を出した仮想マシン12Aに対して、ダイレクトアクセスの設定が完了した通知を出す(図10のステップF147a)。
このようにして、図4のシーケンス図における送信側のハイパーバイザー14Aのダイレクトアクセスの設定が完了する。
図11は、図4のシーケンス図における、ハイパーバイザー14Bに備えられる変換管理マネージャー146Bの処理を詳細に示したフローチャートである。
図11を参照すると、ダイレクトアクセス設定の通知があった場合(図11のステップF140bのYes)、変換管理マネージャー146Bは、通知に含まれる通信の識別情報と、ヘッダー管理テーブル144Bに登録されている情報をもとに、パケットヘッダー変換ルールを決定し、ヘッダー管理テーブル144Bに登録する(図11のステップF142b)。一方、ハイパーバイザー14A側からダイレクトアクセス設定の通知がなされていない場合(図11のステップF140bのNo)、変換管理マネージャー146Bは特に処理を開始しない。
次に、変換管理マネージャー146Bは、図11のステップF142bで決定したパケットヘッダー変換ルールを、通知されたダイレクトアクセスの通信先となる仮想マシン12Bのヘッダー変換テーブル126Bに登録する(図11のステップF144b)。さらに、変換管理マネージャー146Bは、この変換ルールに基づいて、ネットワークインタフェースカード16Bのフィルターテーブル164Bにエントリを追加する(図11のステップF146b)。
次に、変換管理マネージャー146Bは、ダイレクトアクセスの設定を通知したサーバ10Aの変換管理マネージャー146Aに対して、図11のステップF142bで決定したパケットヘッダー変換ルールを通知する(図11のステップF148b)。
このようにして、図4のシーケンス図における受信側のハイパーバイザー14Bのダイレクトアクセスの設定が完了する。
図12は、図6のシーケンス図における、ハイパーバイザー14Aの変換管理マネージャー146Aの処理を詳細に示したフローチャートである。図10のシーケンス図と同様の処理については、同一の符号を付し、詳細な説明を省略する。
変換管理マネージャー146Aは、仮想マシン12Aからダイレクトアクセスの設定リクエストが発行されると、設定リクエストに含まれる通信の識別情報と、ヘッダー管理テーブルの情報をもとに、パケットヘッダー変換ルールを決定し、ヘッダー管理テーブル144Aに登録する(図12のステップF141a)。
変換管理マネージャー146Aは、通信先のサーバ10Bの変換管理マネージャー146Bに対し、通信の識別情報と、図12のステップF141aで決定したパケットヘッダー変換ルールと、を通知する(図12のステップF143a)。
前記通信の識別情報とパケットヘッダー変換ルールとの送信によりハイパーバイザー14B側で一連の処理が行われ(図6参照)、通信先のサーバ10Bの変換管理マネージャー146Bから、パケットヘッダー変換ルールが通知されると、変換管理マネージャー146Aは、ダイレクトアクセスの設定リクエストを出した仮想マシン12Aのヘッダー変換テーブル126Aに、図12のステップF141aで決定したパケットヘッダー変換ルールと、通信先の変換管理マネージャー146Aから通知されたパケットヘッダー変換ルールとをセットする(図12のステップF145a)。
次に、図12のステップF141aで決定したパケットヘッダー変換ルールに基づいて、ネットワークインタフェースカード16Aのフィルターテーブル164Aにエントリを登録する(図12のステップF148a)。
このようにして、図6のシーケンス図における送信側のハイパーバイザー14Aのダイレクトアクセスの設定が完了する。
図13は、図6のシーケンス図における、ハイパーバイザー14Bに備えられる変換管理マネージャー146Bの処理を詳細に示したフローチャートである。図11のシーケンス図と同様の処理については、同一の符号を付し、詳細な説明を省略する。
変換管理マネージャー146Bは、ダイレクトアクセス設定の通知がなされ、通知をもとにパケットヘッダー変換ルールを決定すると、ダイレクトアクセスの通信相手となる仮想マシン12Bのヘッダー変換テーブル126Bに、ダイレクトアクセス設定の通知に含まれるパケットヘッダー変換ルールと、通知をもとに決定したパケットヘッダー変換ルールと、を登録する(図13のステップF145b)。
このようにして、図6のシーケンス図における受信側のハイパーバイザー14Bのダイレクトアクセスの設定が完了する。
以上のように、本実施形態では、ダイレクトアクセスを使用した仮想マシン12同士の通信において、事前に互いのネットワークインタフェースカード16に登録可能な情報と、既に存在する通信に関する情報から、ダイレクトアクセスのための、一意なパケットヘッダ変換ルールを決定し、パケットの送受信時にそのルールに基づいたパケットヘッダの変換が行われる。これにより、ネットワークインタフェースカード16の差異を吸収しつつ、ダイレクトアクセスを用いた通信を実現することができる。
なお、上記した実施形態では、パケットヘッダの変換によりネットワークインタフェースカード16の差異を吸収するものとして説明したが、パケットヘッダの変換ではなく、変換後のパケットヘッダを、もともとのパケットにカプセル化し、受信側でアンカプセル化する形態も採用可能である。本発明において、パケットヘッダの変換を行うことと、カプセル化を行うことには本質的な差異は生じない。
[第2の実施形態]
次に、ダイレクトアクセスの設定契機に変更を加えた本発明の第2の実施形態について、図面を参照して詳細に説明する。図14は、本発明の第2の実施形態のサーバ10A2の詳細構成を表したブロック図である。図3に示した第1の実施形態のサーバとの相違点は、ハイパーバイザー14−2と、ハイパーバイザー14−2を構成する仮想スイッチ142−2と、フローテーブル143と、ポリシーテーブル147である。その他本発明の第1の実施の形態と同様の構成要素については同一の符号を付し、詳細な説明を省略する。
ハイパーバイザー14−2は、仮想スイッチ142−2と、フローテーブル143と、ヘッダー管理テーブル144と、変換管理マネージャー146−2と、ポリシーテーブル147と、を備えている。
第2の実施形態では、仮想マシン12に係る通信は、仮想化環境の管理者が定める通信粒度でダイレクトアクセスを行うかどうかが制御される。この粒度は、少なくとも通信相手の仮想マシン12が識別できる粒度であり、例えば、VLAN IDとIPアドレスの組み合わせ、あるいはVLAN IDとMACアドレスの組み合わせ、などが考えられる。また、場合によっては、より細かい粒度でダイレクトアクセスを制御することも考えられる。その場合は、ポート番号やプロトコルまでを含めた通信粒度となる。以降、このような通信粒度単位のパケットの流れを「フロー」と呼ぶ。
仮想スイッチ142−2は、仮想マシン12に係る通信のうち、ダイレクトアクセスを使用しない通信を中継する。仮想スイッチ142−2は、フロー単位で通信の統計情報を管理する機能を有する。例えば、統計情報として、通過バイト数、通過パケット数、パケットのドロップ数などをフロー単位で管理するほか、フローの発生時刻、フローに属するパケットが最後に転送された時刻、などを管理する。
フローテーブル143には、少なくともマッチ条件として使用するフローの識別情報と、そのフローの統計情報とを対応付けたエントリが格納される。統計情報は、仮想スイッチ142−2によって読み出され、更新される。
仮想スイッチ142−2は、パケットを受信すると、フローテーブル143から、そのパケットのヘッダー情報に適合するマッチ条件を持つエントリを検索し、そのパケットが属するフローの統計情報を更新する。フローテーブル143に登録されていないフローに属するパケットが届いた場合、変換管理マネージャ146−2または仮想スイッチ142−2が保持する通信を識別する粒度に関する情報に基づいて当該フローの識別情報を生成し、フローテーブル143にエントリを新規に追加する。
変換管理マネージャ146−2が通信を識別する粒度に関する情報を保持する場合、フローテーブル143に登録されていないフローに属するパケットが仮想スイッチ142−2に届いた際に、仮想スイッチ142−2が、変換管理マネージャ146−2に問い合わせ、フローテーブルに登録するエントリを取得し、フローテーブル143に登録することとしてもよい。
ポリシーテーブル147には、フローの識別情報と、そのフローに対してダイレクトアクセスを使用するかどうかの判断基準が保持される。本実施形態では、フローの識別情報と、この判断基準をあわせて、「ポリシー」と呼ぶ。ポリシーの例としては、例えば、あて先IPアドレスが192.168.1.1であるフローに対して、一定時間内に仮想スイッチ142−2を通過するパケット数が一定数を超えた場合に、ダイレクトアクセスを使用する、というような、フローテーブル143に保持される統計情報を利用したポリシーが考えられる。
変換管理マネージャー146−2は、ポリシーテーブル147に保持されるポリシーに基づいて、あるフローに対してダイレクトアクセスを使用するかどうかを判断し、ダイレクトアクセスの設定を行う。
続いて、図15、図16のシーケンス図を参照して、本実施形態の動作について詳細に説明する。
図15は、変換管理マネージャー146−2が、フローテーブル143に登録されていないフローに属するパケットが仮想スイッチ142−2に届いた際に、ダイレクトアクセスの設定を行う処理を示したシーケンス図である。本実施形態においては、仮想スイッチ側に通信を識別する粒度に関する情報を持つものとするが、変換管理マネージャー146−2が、この情報を保持していても、本質的には変わらない。
まず、仮想スイッチ142−2が、パケットヘッダーと通信を識別する粒度に関する情報を用いて、フローの識別情報を生成し、変換管理マネージャー146−2に通知する(図15のS1420−2)。この通信を識別する情報とは、例えば、パケットヘッダーである。
次に、変換管理マネージャー146−2は、通信の識別情報と、フローの識別情報を用いてポリシーテーブル147を参照し、ダイレクトアクセスを使用するポリシーに該当するフローであった場合に、ダイレクトアクセスの設定処理を開始する(図15のS1460−2)。
ダイレクトアクセスの設定手順は、図4のS142a以降の処理、または、図6のS140a以降の処理と同様であるため、詳細な説明を省略する。
図16は、変換管理マネージャー146−2が、フローテーブル143に保持されている統計情報を用いて、ダイレクトアクセスの設定、あるいはダイレクトアクセス設定の終了を行う処理を示したものである。
まず、変換管理マネージャー146−2が、仮想スイッチ142−2に対して、統計情報取得のリクエストを発行する(図16のS1462−2)。このリクエストには、フローテーブル143に保持されているすべてのエントリを読み出すものや、特定の条件に一致するエントリだけを読み出すものなどが考えられる。
次に、仮想スイッチ142−2は、変換管理マネージャー146−2が発行したリクエストに従ってフローテーブル143にアクセスし、フローの統計情報を読み出し、変換管理マネージャー146−2に転送する(図16のS1422−2)。
次に、変換管理マネージャー146−2は、取得したフローの統計情報を用いてポリシーテーブル147を参照し、ダイレクトアクセス対象のフローが存在すれば、ダイレクトアクセスの設定処理を開始し、ダイレクトアクセスを終了させるフローが存在すれば、ダイレクトアクセスの終了処理を開始する(図16のS1464−2)。
ダイレクトアクセスの設定手順は、図4のS142a以降の処理、または、図6のS140a以降の処理と同様であるため、詳細な説明を省略する。また、ダイレクトアクセスの終了手順は、図7と同様であるため、詳細な説明を省略する。
以上のように本実施形態によれば、ダイレクトアクセスを使用した仮想マシン12同士の通信において、管理者のポリシーや統計情報に基づいてダイレクトアクセスの設定または削除が行われる。このため、仮想マシン10が明示的にダイレクトアクセスの設定要否を示さなくとも、ダイレクトアクセスを用いた通信を実現することができる。
[第3の実施形態]
次に、ネットワークインタフェースカード側の構成に変更を加えた本発明の第3の実施形態について、図面を参照して詳細に説明する。図17は、本発明の第3の実施形態のサーバ10A3の詳細構成を表したブロック図である。図3に示した第1の実施形態のサーバとの相違点は、ネットワークインタフェースカード16−3に、ネットワークインタフェースカード16−3を構成する受信フィルターテーブル(Ingress Filter Table)164−3と、送信フィルターテーブル(Egress Filter Table)165とが設けられている点である。その他本発明の第1の実施形態と同様の構成要素については同一の符号を付し、詳細な説明を省略する。また、受信フィルターテーブル164−3は、第1の実施形態のフィルターテーブル164と同一の機能を持つため、詳細な説明を省略する。
ネットワークインタフェースカード16−3は、ネットワークインタフェースコントローラー162と、受信フィルターテーブル164−3と、送信フィルターテーブル165と、物理インタフェース166と、仮想インタフェース167と、物理ポート168と、を備えている。なお、図17では、受信フィルターテーブル164−3と、送信フィルターテーブル165とが異なるテーブルとして図示されているが、実装上は、受信フィルターテーブル164−3と、送信フィルターテーブル165と、を同一のメモリなどを利用して実現することも可能である。この場合、送受信の両方向のパケットに対して、ネットワークインタフェースコントローラー162は同一のフィルターテーブルを参照し、パケットに対する処理を実行する。
送信フィルターテーブル165は、仮想マシン12から送出されたパケットを、ネットワークインタフェースカード16−3にて、フィルタリングするためのルールを保持するためのテーブルである。送信フィルターテーブルには、パケットヘッダなどの、通信を識別するための情報と、その情報を持つパケットに対する処理を登録することができる。ここでの処理とは、パケットヘッダ中の宛先IPアドレスフィールドの情報が特定の値のパケットはドロップさせるといったことが例として挙げられる。その他にも、ネットワークインタフェースコントローラー162にてパケットヘッダの書き換えや、パケットヘッダ以外のデータを用いたフィルタリング、などが考えられる。送信フィルターテーブル165へのルールの登録や削除といった操作は、ハイパーバイザー14から行われる。操作方法は、受信フィルターテーブル164−3に対する操作と同様であるため、詳細な説明を省略する。
ネットワークインタフェースコントローラー162は、仮想マシン12から仮想インタフェース167を経由してパケットを受け取ると、パケットに含まれる通信を識別する情報を用いて、送信フィルターテーブル165を参照する。ネットワークインタフェース162は、送信フィルターテーブル165からパケットにマッチするエントリを検索し、そのエントリに登録された処理内容を実行する。前記検索の結果、エントリが存在しない場合、ネットワークインタフェースコントローラー162は、ダイレクトアクセスの設定がなされていない通信に係るパケットを送出したと見なし、パケットをドロップする、という使い方も考えられる。
次に、図18のシーケンス図、図19、図20のフローチャートを参照して、本実施形態の動作について詳細に説明する。なお、本動作の説明では、送信フィルターテーブル165にエントリが存在しない通信は、ネットワークインタフェースカード16にて、パケットがドロップされるものとする。
図18は、送信フィルターテーブル165を利用したダイレクトアクセスの設定を行う処理の流れを示したものである。基本的な動作の流れは、図4のシーケンス図と同様であるので、図4と同様の処理については同一の番号を付し、詳細な説明を省略する。
ハイパーバイザー14Aは、仮想マシン12Aからダイレクトアクセスのリクエストを受信すると、ハイパーバイザー14Bの変換管理マネージャー146Bに対して、ダイレクトアクセスの通知を行う(図18のS142a−3)。この通知には、ネットワークインタフェースカード16Aの送信フィルターテーブル165Aに登録可能な通信の識別情報と、仮想マシン12Aからのリクエストに含まれる通信の識別情報と、が含まれる。
次に、変換管理マネージャー146Bは、ダイレクトアクセスの通知に含まれる情報と、ネットワークインタフェースカード16Bの受信フィルターテーブル164−3に登録可能な通信の識別情報と、をもとに、パケットヘッダー変換ルールBを決定し、ヘッダー管理テーブル144Bに登録する(図18のS140b−3)。
その後、図4のシーケンスと同様の処理が行われ、パケットヘッダー変換ルールBは、変換管理マネージャー146Aに通知される。そして、変換管理マネージャー146Aは、パケットヘッダー変換ルールBに基づいて、変換後のパケットヘッダーのうち、ネットワークインタフェースカード16Aの送信フィルターテーブル165Aに登録可能な情報を登録する(図18のS146a―3)。
このようにして、サーバ10Aとサーバ10Bの双方でダイレクトアクセスの設定がなされる。
図19は、図18のシーケンス図における、ハイパーバイザー14Aの変換管理マネージャー146Aの処理を詳細に示したフローチャートである。図10のフローチャートと同様の処理については、同一の符号を付し、詳細な説明を省略する。
変換管理マネージャー146Aは、仮想マシン12Aからダイレクトアクセスのリクエストを受信すると、ハイパーバイザー14Bの変換管理マネージャー146Bに対して、ダイレクトアクセスの通知を行う(図19のステップF142a−3)。この通知には、ネットワークインタフェースカード16Aの送信フィルターテーブル165Aに登録可能な通信の識別情報と、仮想マシン12Aからのリクエストに含まれる通信の識別情報と、が含まれる。
変換管理マネージャー146Bからパケットヘッダー変換ルールBが通知されると、変換管理マネージャー146Aはパケットヘッダー変換ルールBに基づいて、変換後のパケットヘッダーのうち、ネットワークインタフェースカード16Aの送信フィルターテーブル165Aに登録可能な情報を登録する(図19のF148a−3)。
図20は、図18のシーケンス図における、ハイパーバイザー14Bの変換管理マネージャー146Bの処理を詳細に示したフローチャートである。図11のフローチャートと同様の処理については、同一の符号を付し、詳細な説明を省略する。
変換管理マネージャー146Bは、変換管理マネージャー146Aからのダイレクトアクセスの通知に含まれる情報と、ネットワークインタフェースカード16Bの受信フィルターテーブル164−3に登録可能な通信の識別情報と、をもとに、パケットヘッダー変換ルールBを決定し、ヘッダー管理テーブル144Bに登録する(図20のF142b−3)。
図6に示したような、2台のサーバ10間で両方向の通信に対して、ダイレクトアクセスの設定を行う場合、変換管理マネージャー146Aが図6のS140aの処理を行う前に、変換管理マネージャー146Aと変換管理マネージャー146Bが、それぞれのネットワークインタフェースカード16の送信フィルターテーブル165に登録可能な通信の識別情報に関する情報を、互いに交換し、交換した情報と、図6のS140a以降の処理で交換する情報とを元にパケットヘッダー変換ルールを決定することで、両方向の通信に対してダイレクトアクセスすることができる。または、図18のシーケンス図で示した処理を、それぞれの通信の方向について実行することでも、両方向の通信に対して、ダイレクトアクセスの設定を行うこともできる。
以上のように本実施形態では、ダイレクトアクセスを使用した仮想マシン12同士の通信において、仮想マシンが誤ったパケットヘッダを付与してダイレクトアクセスを実行することを防ぐことができ、パケットが本来の通信相手ではない仮想マシン12に届くことを防ぐことができる。その理由は、ネットワークインタフェースカード16に送信フィルターテーブル165を設けたためである。
また、本実施形態では、パケット送信側の仮想マシン10の送信フィルターテーブル165に登録可能な通信の識別情報が、パケット受信側の仮想マシン10の受信フィルターテーブル164−3に登録可能な通信の識別情報のスーパーセット(上位集合)になっていることが望ましい。スーパーセットの関係である場合、パケット受信側の受信フィルタに登録可能な情報のいずれか1つでも誤ったパケットヘッダを持つパケットの送出を防ぐことができる。一方、スーパーセットの関係ではない場合は、送信フィルターテーブル165に登録可能な通信の識別情報の範囲内で、誤ったパケットヘッダーを持つパケットの送出を防ぐことができるが、それ以外の情報に誤りのあるパケットはパケットの受信側で検出される。
なお、第2の実施形態のネットワークインタフェースカード16を、本実施形態のネットワークインタフェースカード16−3で置き換えることで、第2の実施形態に、本実施の形態の効果であるパケット送信時におけるフィルタリングの機能を追加することができる。送信フィルターテーブル165の操作については、本実施の形態の動作の説明で述べた方法と同様であるため、詳細な説明を省略する。
[第4の実施形態]
次に、変換管理マネージャ機能をサーバ10の外部に集約した本発明の第4の実施形態について、図面を参照して詳細に説明する。図21は、本発明の第4の実施形態の全体構成を表したブロック図である。基本的な構成は図2に示した第1の実施形態と同様であるが、ダイレクトアクセスコントローラ20が接続されている点で相違している。図1と同様の構成要素については同一の符号を付し、詳細な説明を省略する。
ダイレクトアクセスコントローラ20は、ダイレクトアクセスの設定のためのパケットヘッダー変換ルールの割り当て及び管理を行う。ダイレクトアクセスコントローラ20は、仮想ネットワーク資源と仮想計算資源からなる各ユーザの仮想化環境に、少なくとも1つ配置される。
図22は、本発明の第4の実施形態のサーバ10A4及びダイレクトアクセスコントローラ20の詳細構成を表したブロック図である。図22を参照すると、ダイレクトアクセスコントローラ20と、サーバ10−4を上で動作する仮想マシン12と、ハイパーバイザー14−4と、を接続した構成が示されている。
図22を参照すると、第1の実施形態の変換管理マネージャー146と、ヘッダー管理テーブル144と、を備えたダイレクトアクセスコントローラ(Direct Access Controller)20と、変換管理ローカルマネージャー146−4と、仮想スイッチ142−4と、フローテーブル143−4と、を備えたハイパーバイザー(HyperVisor)14−4と、仮想マシン(VM)12と、が示されている。図22においても、第1の実施形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
本実施の形態では、ダイレクトアクセスの設定を行う際には、仮想マシン12、またはハイパーバイザー14−4から、ダイレクトアクセスコントローラ20に対して、ダイレクトアクセス設定のリクエストを出し、ダイレクトアクセスコントローラ20が、ダイレクトアクセスのためのパケットヘッダー変換ルールを決定し、決定されたパケットヘッダー変換ルールを、変換管理ローカルマネージャー146−4に通知し、変換管理ローカルマネージャー146−4が、フィルターテーブル164と、ヘッダー変換テーブル126に設定を行うように動作する。
また、ダイレクトアクセスコントローラ20は、変換管理マネージャー146と、ヘッダー管理テーブル144と、を備えて構成される。なお、ダイレクトアクセスコントローラ20には、サーバ10A4とネットワーク18を介して通信する通信機能や、ヘッダー管理テーブル144を保持するためのメモリ領域、ダイレクトアクセスの制御のための演算機能を持つ。一般的には、ダイレクトアクセスコントローラ20は、サーバを用いて構成することができる。
変換管理マネージャー146は、各サーバのダイレクトアクセスに関する情報の管理と、ダイレクトアクセス設定のための、各サーバ内の変換管理ローカルマネージャー146−4とのネゴシエーションや通知を行う。このネゴシエーションによって、パケットの受信側のサーバのネットワークインタフェースカード16のフィルターテーブル164に登録可能な情報に関する情報を取得し、パケットヘッダー変換ルールを決定する。また、決定したパケットヘッダー変換ルールを、ダイレクトアクセスを使用して通信を行う両仮想マシン12が収容されたサーバ10A4に備えられる変換管理ローカルマネージャー146−4に通知する。
ヘッダー管理テーブル144は、サーバ10A4で稼動する仮想マシン12に係る通信を管理する。変換管理マネージャー146が、ダイレクトアクセスのためのヘッダー変換ルールを決定する際に、既に存在する通信と、新規のダイレクトアクセスの通信とを識別可能なようにするために使用される。
また、サーバ10A4のハイパーバイザー14−4は、仮想スイッチ142−4と、フローテーブル143−4と、変換管理マネージャー146−4と、を備えて構成される。
仮想スイッチ142−4は、仮想マシン12に係る通信のうち、ダイレクトアクセスを使用しない通信を中継する。仮想スイッチ142−4は、現在アクティブな通信の識別子を、フローテーブル143−4に登録し、管理する。また、仮想スイッチ142−4は、パケットが仮想スイッチ142−4に届くたびに、フローテーブル143−4を参照し、新規の通信かどうかを確認する。新規の通信の場合は、変換管理ローカルマネージャー146−4に対して、新規の通信の識別子を通知する。
フローテーブル143−4には現在アクティブな通信の識別子が保存される。
変換管理ローカルマネージャー146−4は、仮想マシン12からダイレクトアクセスの設定リクエストが発行されると、リクエストに含まれる通信の識別子を、ダイレクトアクセスコントローラ20に通知する。また、変換管理ローカルマネージャー146−4は、ダイレクトアクセスコントローラ20からの、ネットワークインタフェースカード16のフィルターテーブル164に登録可能な通信の識別情報の問い合わせに対して、フィルターテーブル164に登録可能な通信の識別情報に関する情報を通知する。また、ダイレクトアクセスコントローラ20から、ヘッダー変換ルールが通知されると、該当する仮想マシン12のヘッダー変換テーブル126に、ヘッダー変換ルールを登録し、場合によっては、フィルターテーブル164にエントリを追加する。そのため、通知されるヘッダー変換ルールがどのダイレクトアクセスの設定要求に対応するものかを識別するために、ヘッダー変換ルールには、ダイレクトアクセスの要求と対応付けられた識別子が付与される。
また、変換管理ローカルマネージャー146−4は、仮想スイッチ142−4から、新規の通信が発生した旨を示す通知がなされると、ダイレクトアクセスコントローラ20に対して、通信の識別子を通知する。また、変換管理ローカルマネージャー146−4は、ダイレクトアクセスを用いた通信の終了時に、場合によっては、フィルターテーブル164から該当するエントリを削除し、また、変換管理ローカルマネージャー146−4は、ダイレクトアクセスコントローラ20に対して、ダイレクトアクセスを用いた通信が終了したことを、通信の識別子とともに通知する。
次に、図23、図24のシーケンス図、図25、図26のフローチャートを参照して、本実施形態の動作について詳細に説明する。
図23は、仮想マシン12のリクエストに基づいて、2台のサーバ間(サーバA、サーバB)でダイレクトアクセスの設定を行う処理を示したシーケンス図である。図23において、図4に示した第1の実施形態のシーケンス図と同様の処理については、同一の符号を付し、詳細な説明を省略する。また、本実施形態の動作の説明では、仮想マシン12は、ダイレクトアクセスの設定リクエストを、変換管理ローカルマネージャー146−4経由で、ダイレクトアクセスコントローラ20に出すが、仮想マシン12が直接ダイレクトアクセスコントローラ20に、ダイレクトアクセスの設定リクエストを出すことも可能である。このことは本実施形態に本質的な差異を与えない。
図23を参照すると、まず、仮想マシン12Aが変換管理ローカルマネージャー146−4Aに対して、ダイレクトアクセスのリクエストを送信する(図23のS120a−4)。このリクエストには、通信を識別する識別情報が含まれている。
次に、変換管理ローカルマネージャー146−4Aは、ダイレクトアクセスコントローラ20に対して、ダイレクトアクセス対象の通信の識別情報を転送する(図23のS142a−4)。
次に、ダイレクトアクセスコントローラ20に備えられる変換管理マネージャー146は、ダイレクトアクセスを用いた通信の相手となる仮想マシン12Bが収容されたサーバ10Bの変換管理ローカルマネージャー146−4Bに対して、ネットワークインタフェースカード16Bのフィルターテーブル164Bに登録可能な通信を識別する識別情報を問い合わせる(図23のS200)。
前記問い合わせを受けた変換管理ローカルマネージャー146−4Bは、ダイレクトアクセスコントローラ20に対して、フィルターテーブル164Bに登録可能な、通信を識別する情報に関する識別情報を応答する(図23のS140b−4)。
次に、ダイレクトアクセスコントローラ20は、変換管理ローカルマネージャー146−4Aから受信した通信の識別情報と、変換管理ローカルマネージャー146−4Bから受信したフィルターテーブル164Bに登録可能な識別情報とから、パケットヘッダー変換ルールを決定し、ヘッダー管理テーブル144に登録する(図23のS202)。
次に、ダイレクトアクセスコントローラ20は、変換管理ローカルマネージャー146−4Bに対して、パケットヘッダー変換ルールを通知する(図23のS204)。
次に、変換管理ローカルマネージャー146−4Bは、ヘッダー変換テーブル126Bに、パケットヘッダー変換ルールを登録する(図23のS144b)。また、変換管理ローカルマネージャー146−4Bは、フィルターテーブル164Bに、パケットヘッダー変換ルールに基づいて、エントリを登録する(図23のS146b)。なお、図23のS144bと図23のS146bの処理には依存関係は無いため、実行する順番が入れ替わってもよい。図23のステップS144b、S146bの処理が終わると、変換管理ローカルマネージャー146−4Bは、ダイレクトアクセスコントローラ20に対して、ダイレクトアクセスの設定が完了したことを通知する(図23のS152b−4)。
前記完了通知を受信すると、ダイレクトアクセスコントローラ20は、変換管理ローカルマネージャー146−4Aに対して、パケットヘッダー変換ルールを通知する(図23のS206)。
前記パケットヘッダー変換ルールを受信した変換管理ローカルマネージャー146−4Aは、ダイレクトアクセスのリクエストを出した仮想マシン12Aのヘッダー変換テーブル126Aに、前記受信したパケットヘッダー変換ルールを登録する(図23のS144a−4)。
次に、変換管理ローカルマネージャー146−4Aは、ダイレクトアクセスの設定が完了したことを、仮想マシン12Aに通知する(図22のS147a−4)。
このようにして、ダイレクトアクセスコントローラ20を利用した、ダイレクトアクセスの設定が完了する。
図24は、ダイレクトアクセスを用いた通信が完了した際に、ダイレクトアクセスの設定を削除する処理を示したシーケンス図である。なお、図24において、図7に示した第1の実施形態のシーケンス図と同様の処理については、同一の符号を付し、詳細な説明を省略する。
まず、仮想マシン12Aは、ヘッダー変換テーブル126Aから、該当するエントリを削除し(図24のS126)、変換管理ローカルマネージャー146−4Aに対して、ダイレクトアクセスを用いた通信が完了した旨を通知する(図24のS128)。この通知には、ダイレクトアクセス対象の通信を識別する識別情報が含まれている。
次に、変換管理ローカルマネージャー146−4Aは、ダイレクトアクセスコントローラ20に対して、ダイレクトアクセスを用いた通信が完了したことを通知する(図24のS148a−4)。この通知には、ダイレクトアクセス対象の通信を識別する識別情報が含まれている。
次に、ダイレクトアクセスコントローラ20は、変換管理ローカルマネージャー146−4Bに対して、ダイレクトアクセスを使用した通信が完了したことを通知する(図24のS208)。この通知には、ダイレクトアクセス対象の通信を識別する識別情報が含まれている。
次に、変換管理ローカルマネージャー146−4Bは、ヘッダー変換テーブル126から、該当するエントリを削除する(図24のS148b−4)。また、変換管理ローカルマネージャー146−4Bは、フィルターテーブル164Bから、該当するエントリを削除する(図24のS149b−4)。なお、図24のS148b−4と、図24のS149b−4の処理には依存関係は無いため、実行する順番が入れ替わってもよい。
次に、変換管理ローカルマネージャー146−4Bは、ダイレクトアクセスコントローラ20に対して、エントリの削除が完了した旨を通知する(図24のS150b−4)。この通知には、どのダイレクトアクセスを用いた通信のエントリの削除が完了したのかを示す識別情報が含まれている。
次に、ダイレクトアクセスコントローラ20は、ヘッダー管理テーブル144から、該当するエントリを削除する(図24のS210)。
このようにして、ダイレクトアクセスの設定の削除が完了する。
図25は、図23のシーケンス図における、ハイパーバイザー14Bの変換管理ローカルマネージャー146−4Bの処理のうち、フィルターテーブル164Bに登録可能な通信の識別情報に関する問い合わせに対する処理を詳細に示したフローチャートである。
変換管理ローカルマネージャー146−4Bは、フィルターテーブル164Bに登録可能な通信の識別情報に関する問い合わせがあった場合(図25のステップF140b−4のYes)、ダイレクトアクセスコントローラ20に対して、フィルターテーブル164Bに登録可能な通信の識別情報を通知する(図25のステップF142b−4)。フィルターテーブル164Bに登録可能な通信の識別情報に関する問い合わせがない場合(図25のステップF140b−4のNo)、変換管理ローカルマネージャー146−4Bは特に処理を開始しない。
図26は、図23のシーケンス図における、ハイパーバイザー14Bの変換管理ローカルマネージャー146−4Bの処理のうち、ヘッダー変換ルールを登録する処理を詳細に示したフローチャートである。
まず、変換管理ローカルマネージャー146−4Bは、パケットヘッダー変換ルールがダイレクトアクセスコントローラ20から通知された場合(図26のステップF144b−4のYes)、ヘッダー変換テーブル126にパケットヘッダー変換ルールを登録する(図26のステップF145b−4)。パケットヘッダー変換ルールが通知されていない場合(図25のステップF144b−4のNo)、変換管理ローカルマネージャー146−4Bは特に処理を開始しない。
次に、変換管理ローカルマネージャー146−4Bは、パケットヘッダー変換ルールに基づいて、フィルターテーブル164Bにエントリを追加する(図26のステップF146b−4)。このときに、変換後のパケットヘッダーに含まれる情報のうち、フィルターテーブル164Bに登録可能な情報のみを登録する。なお、図26のステップF145b−4と、図26のステップF146b−4の処理に依存関係はないため、実行する順番が入れ替わってもよい。
次に、変換管理ローカルマネージャー146−4Bは、ダイレクトアクセスコントローラ20に対して、パケットヘッダー変換ルールの登録が完了した旨を通知する(図26のステップF150b−4)。この通知には、どのダイレクトアクセスに関するパケットヘッダー変換ルールの登録が完了したのかを示す識別情報が含まれている。
本実施形態においても、図6に示したような、2台のサーバ10間で両方向の通信に対して、ダイレクトアクセスの設定を行うこともできる。この場合、変換管理ローカルマネージャー146−4Aが図6のS142a−4の処理を行う際に、ダイレクトアクセスコントローラ20に対して、通信の識別情報と同時に、フィルターテーブル164Aに登録可能な識別情報を通知する。これにより、ダイレクトアクセスコントローラ20は、両方の通信方向に関するヘッダー変換ルールを決定することができる。または、図23のシーケンス図で示した処理を、それぞれの通信の方向について実行することでも、両方向の通信に対して、ダイレクトアクセスの設定を行うことができる。
ダイレクトアクセスコントローラ20の別の形態として、各サーバに備えられるネットワークインタフェースカード16のフィルターテーブル164に登録可能な通信の識別情報や、ネットワークインタフェースコントローラー162がサポートする機能を事前に収集、あるいは、ダイレクトアクセスの設定時に得た時点で保持しておくことも考えられる。この場合、ダイレクトアクセスの設定の際に、ダイレクトアクセスコントローラ20が、ダイレクトアクセスの設定リクエストを出した仮想マシン12の通信相手となる仮想マシンが収容されているサーバ10のハイパーバイザー14に、フィルターテーブル164に登録可能な通信の識別情報を問い合わせる必要がなくなり、ダイレクトアクセスの設定完了までの所要時間を短縮できる。
以上のように本実施形態では、ダイレクトアクセスの際に使用する変換後のパケットヘッダーが、ネットワーク中で一意な値であるかどうかの確認を、各サーバ10内のハイパーバイザー14が行わなくて済むという効果がある。その理由は、ダイレクトアクセスの設定を行う際の問い合わせ先として、ネットワーク内にダイレクトアクセスコントローラ20を設け、ダイレクトアクセスコントローラ20が、ダイレクトアクセスの設定に関する情報と、サーバ10の通信に関する情報を管理するように構成したことにある。
[第5の実施形態]
次に、サーバ側のヘッダ変換機能とヘッダ変換ルールの生成機能を置く代わりに、外部のデータ変換装置(ダイレクトアクセスゲートウェイ)にこれらの機能を集約した本発明の第5の実施形態について図面を参照して詳細に説明する。
図27は、本発明の第5の実施形態の全体構成を表したブロック図である。図27を参照すると、サーバ10が、ネットワーク18−5を介して、ダイレクトアクセスゲートウェイ30に接続されている構成が示されている。
本実施形態では、ネットワーク18−5に接続されたサーバから送信されたパケットについて、ダイレクトアクセスゲートウェイ30が、ダイレクトアクセス対象の通信について、パケットヘッダー変換ルールを適用する。なお、図27の例では、サーバ10はネットワーク18−5を介してダイレクトアクセスゲートウェイ30に接続されているが、サーバ10が直接ダイレクトアクセスゲートウェイ30に接続されている構成であってもよい。
ダイレクトアクセスゲートウェイ30は、ヘッダー変換部122と、変換管理マネージャー146と、ヘッダー管理テーブル144と、ネットワークインタフェース16−5と、から構成される。各部の動作、およびダイレクトアクセスの設定方法は、本発明の他の実施形態と同様であるため、詳細な説明を省略する。
本実施形態では、ダイレクトアクセスのための設定、パケットヘッダー変換をダイレクトアクセスゲートウェイ30で実行する。このようにすることで、各サーバにヘッダー変換部122や、変換管理マネージャー146、ヘッダー管理テーブル144を備える必要がなくなり、サーバ10に変更を加えなくてすむ。このようなダイレクトアクセス設定機能を持たないサーバ10がデータの送信側であり、データの受信側が他の実施形態に示したようなダイレクトアクセス設定機能を備えたサーバ10の場合に、ダイレクトアクセスによる通信性能の向上の恩恵を受けることができる。
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態で用いたネットワーク構成やサーバ、仮想マシン等の数に制約は無い。
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による計算機参照)
[第2の形態]
第1の形態の計算機において、
前記仮想マシン管理部は、前記第1の仮想マシンからのアクセス要求を受けた場合、
自装置側のネットワークインタフェースのフィルターテーブルに、前記第2の仮想マシンから受信するデータを前記第1の仮想マシンに転送するエントリを追加するとともに、少なくとも前記エントリのマッチ条件を前記第2の計算機に対して送信し、
前記第2の計算機に前記第2の仮想マシンから出力されたデータのデータ識別子を、前記第1の計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから送信させることが好ましい。
[第3の形態]
第2の形態の計算機において、
自装置側で動作する仮想マシンと前記第2の計算機上で動作する第2の仮想マシン間の通信を一意に識別するためのデータ識別子を管理するデータ識別子管理テーブルを備え、
前記データ識別子管理テーブルを参照して、前記マッチ条件を決定することが好ましい。
[第4の形態]
第1〜第3いずれか一の形態の計算機において、
前記仮想マシンと前記第2の仮想マシン間の通信を一意に識別するためのデータ識別子を管理するデータ識別子管理テーブルを備えた集中制御コントローラに、前記変換ルールの生成を依頼し、
前記集中制御コントローラにて生成された変換ルールを、前記第1の仮想マシンの変換部に設定するとともに、前記変換ルールを用いてフィルターテーブルを更新することが好ましい。
[第5の形態]
第1〜第4いずれか一の形態の計算機において、
前記仮想マシン管理部は、前記仮想マシンと前記ネットワークインタフェースとを中継する仮想スイッチを備え、
前記仮想スイッチを介して、前記仮想マシンからのアクセス要求を受け付けることが好ましい。
[第6の形態]
第1〜第5いずれか一の形態の計算機において、
前記仮想マシン管理部は、さらに、ダイレクトアクセスを行うか否かの判断基準となるポリシーを管理するポリシー管理機能を備え、前記ポリシーを参照し、前記仮想マシン間のデータについてダイレクトアクセスの設定を行うかどうかを判断することが好ましい。
[第7の形態]
第6の形態の計算機において、
前記ポリシーとして、通信の識別子を用いることができる。
[第8の形態]
第6又は第7の形態の計算機において、
前記仮想マシン管理部は、通信の統計情報を取得、管理する統計情報管理機能を備え、前記ポリシーとして、通信の統計情報を用いることができる。
[第9の形態]
第2〜第8いずれか一の形態の計算機において、
前記ネットワークインタフェースは、さらに、前記仮想マシン上で動作するアプリケーションからネットワークへの方向のデータに対して、データの識別子に応じて、データの転送先又はデータの破棄を決定するデータ送出制御機能と、前記送出データに対する制御内容を保存する保存領域と、を備え、
前記仮想マシン管理部は、さらに、前記変換ルールに基づいて、前記保存領域に、送出データに対する制御内容を設定する機能を備えることが好ましい。
[第10の形態]
第1〜第9いずれか一の形態の計算機において、
前記データ識別子の変換に代えて、前記変換ルールを参照して、データのカプセル化及びアンカプセル化を行うこともできる。
[第11の形態]
(上記第2の視点によるデータ変換装置(ダイレクトアクセスゲートウェイ)参照)
[第12、第13の形態]
(上記第3、第4の視点による通信方法参照)
[第14の形態]
受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備えた第2の計算機と接続された計算機に実行させるプログラムであって、
前記ネットワークインタフェース及び自装置側のネットワークインタフェースを介して、前記第2の計算機側で動作する第2の仮想マシンと通信する第1の仮想マシンからのアクセス要求を受けた場合、前記第2の計算機に対して前記第1の仮想マシンから出力されるデータのデータ識別子を送信し、前記第2の計算機の前記フィルターテーブルの更新と、前記更新したフィルターテーブルのマッチ条件の返送とを要求する処理と、
前記第2の計算機から返送されたマッチ条件を用いて、前記第1の仮想マシンの変換部にデータ識別子の変換ルールを設定する処理と、
前記変換ルールに基づいて、前記第2の仮想マシンに送信するデータのデータ識別子を、前記第2の計算機のフィルターテーブルにマッチ条件として設定されたデータ識別子に変換してから前記第2の計算機に送信する処理と、を実行させるプログラム。
[第15の形態]
受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースを備える計算機に実行させるプログラムであって、
第2の計算機から送信されたデータ識別子を用いて、前記フィルターテーブルに、前記第2の計算機から送信されたデータを該当する仮想マシンに転送させるエントリを追加する処理と、
前記第2の計算機に対して、前記追加したフィルターテーブルのマッチ条件を返送する処理とを実行させ、
前記第2の計算機に、前記第2の計算機で動作する仮想マシンから送信されたデータのデータ識別子を、前記追加したフィルターテーブルのマッチ条件に適用するよう変換させるプログラム。
[第16の形態]
第1〜第10いずれか一の形態の計算機を接続したダイレクトアクセス制御システム。
[第17の形態]
仮想マシンと、仮想マシン管理部と、受信データと照合するマッチ条件と、出力先の仮想マシンに対応する仮想インタフェースと、を対応付けたフィルターテーブルを備え、該フィルターテーブルを参照して、受信したデータを、自装置側の仮想マシンに転送するスイッチング機能を備えたネットワークインタフェースとを備えた2つ以上の計算機が、第11の形態のデータ変換装置(ダイレクトアクセスゲートウェイ)を介して接続されているダイレクトアクセス制御システム。
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。