(57)【特許請求の範囲】
【請求項１】
複数の仮想計算機間の通信経路制御方法であって，
前記仮想計算機は，一以上のCPUと，一以上のメモリと，一以上のI/Oデバイスを備えた一以上の物理計算機で稼働し，
通信経路変更指示を契機に，
第１の仮想計算機からの通信経路の変更先となる，第２の仮想計算機が直接または間接的に通信する通信用ポートに，前記第１の仮想計算機の実バッファのエイリアスである仮想バッファを割り当て，
前記仮想バッファが参照する前記メモリの領域をメモリアドレス変換することにより，
前記第１の仮想計算機の参照する前記メモリの領域を，前記第２の仮想計算機の参照する前記メモリの領域に関連付けることで，前記第１の仮想計算機と前記第２の仮想計算機間の通信経路を生成し，
前記物理計算機は，前記仮想計算機を制御するハイパバイザを有し，
前記ハイパバイザは，
前記仮想計算機および前記I/Oデバイスに割り当てる，前記実バッファと前記仮想バッファを制御する，バッファ制御部と，
前記物理計算機が搭載する前記I/Oデバイスへの通信処理を制御する，コネクション制御部と，
前記仮想計算機間の通信経路を記録し通信用ポート情報を含むLPAR間通信テーブル，および，前記仮想計算機の位置情報を記録しメモリアドレス情報を含む稼働位置情報テーブルを保有するメモリ管理部を有し，
前記通信経路変更指示が
第１の物理計算機で稼働する前記第１の仮想計算機と，前記第１の物理計算機で稼働する前記第２の仮想計算機で相互に通信する通信経路に変更する指示であれば，
前記第１の仮想計算機と前記第２の仮想計算機の前記メモリアドレス情報と，前記第１の仮想計算機と前記第２の仮想計算機の前記通信用ポート情報から，前記仮想バッファの前記第２の仮想計算機の通信用ポートへの割り当て，および，アドレス変換を行うことで，
前記第１の仮想計算機と前記第２の仮想計算機の通信経路に共有メモリを利用すること，
を特徴とする仮想計算機間の通信経路制御方法。
【請求項２】
前記通信経路変更指示が
第１の物理計算機で稼働する前記第１の仮想計算機と，前記第１の物理計算機以外の第２の物理計算機で稼働する第３の仮想計算機で相互に通信する通信経路に変更する指示であれば，
前記第１の仮想計算機と前記第１の物理計算機の前記メモリアドレス情報と，前記第１の仮想計算機と前記第１の物理計算機の前記通信用ポート情報から，前記仮想バッファの前記第１の物理計算機の通信用ポートへの割り当て，および，アドレス変更を行うことで，
前記第１の仮想計算機が利用する前記メモリの領域を，前記第３の仮想計算機と通信する前記I/Oデバイスに割り当てる仮想バッファに関連付けることで，前記第２の物理計算機の前記第３の仮想計算機に通信する通信経路を生成すること，
を特徴とする請求項１に記載の仮想計算機間の通信経路制御方法。
【請求項３】
前記通信経路変更指示で対象となる前記仮想計算機の稼働位置により，
同一の前記物理計算機で稼働する前記仮想計算機間の相互通信となるか，別々の前記物理計算機で稼働する前記仮想計算機の相互通信となるか判定すること，
を特徴とする請求項２に記載の仮想計算機間の通信経路制御方法。
【請求項４】
前記通信経路変更指示により前記仮想計算機間の通信経路を変更したならば，
変更情報をそれぞれの前記物理計算機に送信し，かつ，それぞれの前記物理計算機内の変更情報を受信することで，前記物理計算機間で更新情報を共有すること，
を特徴とする請求項２に記載の仮想計算機間の通信経路制御方法。
【請求項５】
前記通信経路変更指示は，管理サーバからの指示により実行され，
前記管理サーバは，前記仮想計算機間の通信経路を変更する設定画面を有し，
前記設定画面は，送信元と送信先となる前記仮想計算機，および，前記仮想計算機間の通信手段を選択することにより，
前記仮想計算機間の通信経路を変更したことを示す結果を表示する，
ことを特徴とする請求項２に記載の仮想計算機間の通信経路制御方法。
【請求項６】
一以上のCPUと，一以上のメモリと，一以上のI/Oデバイスを備えた一以上の物理計算機で稼働する一以上の仮想計算機を搭載する計算機システムであって，
前記物理計算機は，前記仮想計算機を制御するハイパバイザを有し，
前記ハイパバイザは，前記仮想計算機および前記I/Oデバイスに割り当てる実バッファと仮想バッファを制御するバッファ制御部を有し，
前記バッファ制御部は，
送信側仮想計算機と受信側仮想計算機との間の通信を，前記送信側仮想計算機と他の仮想計算機との間の通信に切り替える場合には，
前記送信側仮想計算機が使用する通信用ポートに割り当てられた前記実バッファのエイリアスである前記仮想バッファの割り当てを，
前記受信側仮想計算機が通信可能な通信用ポートから，前記他の仮想計算機が通信可能な通信用ポートに切り替え，
前記送信側仮想計算機が参照する前記メモリの領域を，前記他の仮想計算機が参照する前記メモリの領域に関連付けることで，前記送信側仮想計算機と前記他の仮想計算機との通信経路を確立し，
前記ハイパバイザは，
前記物理計算機が搭載する前記I/Oデバイスへの通信処理を制御するコネクション制御部と，
前記仮想計算機間の通信経路を記録し通信用ポート情報を含むLPAR間通信テーブルと前記仮想計算機の位置情報を記録しメモリアドレス情報を含む稼働位置情報テーブルを保有するメモリ管理部を有し，
管理サーバの通信経路変更指示により，
第１の物理計算機で稼働する前記送信側仮想計算機と，前記第１の物理計算機で稼働する前記他の仮想計算機で相互に通信する通信経路に変更する場合には，
前記バッファ制御部が，前記メモリ管理部の前記稼働位置情報テーブルから前記送信側仮想計算機と前記他の仮想計算機のメモリアドレス情報と，前記LPAR間通信テーブルから前記送信側仮想計算機と前記他の仮想計算機の通信用ポート情報を取得し，
前記仮想バッファの前記他の仮想計算機の通信用ポートへの割り当て，および，ディスクリプタによるアドレス変更を行い，
前記送信側仮想計算機と前記他の仮想計算機の通信経路に共有メモリを利用すること，
を特徴とする計算機システム。
【請求項７】
前記ハイパバイザは，
前記物理計算機が搭載する前記I/Oデバイスへの通信処理を制御するコネクション制御部と，
前記仮想計算機間の通信経路を記録し通信用ポート情報を含むLPAR間通信テーブルと前記仮想計算機の位置情報を記録しメモリアドレス情報を含む稼働位置情報テーブルを保有するメモリ管理部を有し，
管理サーバの通信経路変更指示により，
第１の物理計算機で稼働する前記送信側仮想計算機と，前記第１の物理計算機以外の第２の物理計算機で稼働する前記他の仮想計算機で相互に通信する通信経路に変更する場合には，
前記バッファ制御部が前記メモリ管理部の前記稼働位置情報テーブルから前記送信側仮想計算機と前記コネクション制御部のメモリアドレス情報と，前記LPAR間通信テーブルから前記送信側仮想計算機と前記コネクション制御部の通信用ポート情報を取得し，
前記仮想バッファの前記コネクション制御部の通信用ポートへの割り当て，および，ディスクリプタによるアドレス変更を行うことで
前記送信側仮想計算機が利用する前記メモリの領域を，前記第２の物理計算機と通信する前記I/Oデバイスに割り当てる仮想バッファに関連付けることで，前記コネクション制御部を経由し，前記第２の物理計算機の前記他の仮想計算機に通信する通信経路を生成すること，
を特徴とする請求項６に記載の計算機システム。
【請求項８】
前記管理サーバの通信経路変更指示で対象となる前記仮想計算機の稼働位置を，前記バッファ制御部が，前記稼働位置情報テーブルから取得し，
通信経路の変更を，同一の前記物理計算機で稼働する前記仮想計算機間の相互通信となるか，別々の前記物理計算機で稼働する前記仮想計算機の相互通信となるか判定すること，
を特徴とする請求項７に記載の計算機システム。
【請求項９】
前記管理サーバの通信経路変更指示により前記仮想計算機間の通信経路を変更したならば，
前記バッファ制御部が更新した前記LPAR間通信テーブルと前記稼働位置情報テーブルを前記メモリ管理部に送付し，
前記メモリ管理部の切替通知部が，それぞれの前記物理計算機内の前記メモリ管理部に送信し，かつ，それぞれの前記物理計算機内の前記メモリ管理部より受信した前記LPAR間通信テーブルと前記稼働位置情報テーブルを，
保有する前記LPAR間通信テーブルと前記稼働位置情報テーブルに反映させることで，
前記物理計算機間の前記LPAR間通信テーブルと前記稼働位置情報テーブルを共有できること，
を特徴とする請求項７に記載の計算機システム。
【請求項１０】
管理サーバの通信経路変更指示が，
第１の物理計算機で稼働する前記送信側仮想計算機と前記第1の物理計算機以外の第２の物理計算機で稼働する前記他の仮想計算機で相互に通信する通信経路に変更する指示であり，かつ，前記第１の物理計算機と前記第２の物理計算機間をＲＤＭＡで通信する構成であるならば，
前記バッファ制御部が前記メモリ管理部の前記稼働位置情報テーブルから前記送信側仮想計算機と前記コネクション制御部のメモリアドレス情報と，前記LPAR間通信テーブルから前記送信側仮想計算機と前記コネクション制御部の通信用ポート情報を取得し，
前記バッファ制御部は前記仮想バッファの前記コネクション制御部の通信用ポートへの割り当て，および，アドレス変更を行い，
前記コネクション制御部は，割り当てた前記仮想バッファにコネクションを張り通信経路を生成し，
前記バッファ制御部は前記送信側仮想計算機が利用する前記メモリの領域を取得し，送信先となる前記第２の物理計算機のメモリアドレスを付与したデータを送信すること，
を特徴とする請求項７に記載の計算機システム。
【請求項１１】
ＣＰＵ、メモリ、およびI/Oデバイスを含む物理計算機上で動作する仮想計算機を備える計算機システムであって、
前記物理計算機は前記仮想計算機を制御するハイパバイザを備え、
前記ハイパバイザは、
（１）前記仮想計算機および前記I/Oデバイスに割り当てられる実バッファおよび仮想バッファを制御するバッファ制御部と、
（２）前記I/Oデバイスの通信処理を制御するコネクション制御部と、
（３）前記仮想計算機間の通信経路が記録され通信ポート情報を含むＬＰＡＲ間通信テーブルと、前記仮想計算機の位置情報が記録されメモリアドレス情報を含む動作位置情報テーブルを保持するメモリ管理部と、を備え、
（Ａ）送信側仮想計算機と受信側仮想計算機との間の通信が、前記送信側仮想計算機と他の仮想計算機との間の通信に切り替えられた場合、
（Ａ１）前記バッファ制御部は、前記送信側仮想計算機に使用されていた通信ポートに割り当てられていた実バッファのエイリアスとして用いられていた仮想バッファの割り当てを、前記受信側仮想計算機が通信可能な通信ポートから前記他の仮想計算機が通信可能な通信ポートへ切り替え、
（Ａ２）前記バッファ制御部は、仮想バッファが参照するメモリの領域に対してメモリアドレス変換を行い、前記送信側仮想計算機によって使用される通信ポートに割り当てられた実バッファのエイリアスとして働く仮想バッファによって参照される前記メモリの領域のメモリアドレス変換に基づいて、前記送信側仮想計算機が参照する前記メモリの領域と、前記他の仮想計算機が参照する前記メモリの領域とを関連付けることにより、前記送信側仮想計算機と前記他の仮想計算機との間の通信経路を確立し、
（Ｂ）通信経路変更指示により、第１の物理計算機上で動作する送信側仮想計算機と該第１の物理計算機上で動作する他の仮想計算機との間で通信が行われる通信パスに変更された場合には、
（Ｂ１）前記バッファ制御部は、前記メモリ管理部の前記動作位置情報テーブルから前記送信側仮想計算機と前記他の仮想計算機のメモリアドレス情報を取得し、前記ＬＰＡＲ間通信テーブルから前記送信側仮想計算機と前記他の仮想計算機の通信ポート情報を取得し、
（Ｂ２）前記バッファ制御部は、前記他の仮想計算機の通信ポートへの仮想バッファの割り当ておよびディスクリプタに基づくアドレス変更を行い、
（Ｂ３）前記バッファ制御部は、前記送信側仮想計算機と前記他の仮想計算機との間の通信経路に共有メモリを使用し、
（Ｃ）通信経路変更指示により、第１の物理計算機上で動作する送信側仮想計算機と該第１の物理計算機以外の第２の物理計算機で動作する他の仮想計算機との間で通信が行われる通信パスに変更された場合には、
（Ｃ１）前記バッファ制御部は、前記メモリ管理部の前記動作位置情報テーブルから前記送信側仮想計算機と前記コネクション制御部のメモリアドレス情報を取得し、前記ＬＰＡＲ間通信テーブルから前記送信側仮想計算機と前記コネクション制御部の通信ポート情報を取得し、
（Ｃ２）前記バッファ制御部は、前記コネクション制御部の通信ポートへの仮想バッファの割り当ておよびディスクリプタに基づくアドレス変更を行い、
（Ｃ３）前記バッファ制御部は、前記コネクション制御部を介して、前記送信側仮想計算機が使用するメモリの領域と前記第２の物理計算機の前記他の仮想計算機とを通信する通信経路を生成する、
ことを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，仮想サーバシステムの通信経路制御技術に関し，特に仮想サーバ間の相互通信時における通信経路の制御技術に関する。
【背景技術】
【０００２】
近年，多くの企業が各種業務のクラウドへの移行を模索しており，これらがＩＴ新時代のマーケットを牽引して継続成長している。その理由としては，システムの短期構築に加えて，メンテナンスを含めたＩＴ投資効率化や負荷低減等が期待されているためである。このような状況下，ＶＭｗａｒｅ社がネットワーク制御をソフトウェアで行うＳＤＮ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋｉｎｇ）の考え方をデータセンタにまで拡張することで，データセンタ自体を仮想化するコンセプトＳＤＤＣ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｄａｔａ  Ｃｅｎｔｅｒ）を提唱し，注目を集めている。この狙いは，可能な限りソフトウェアでＩＴインフラを抽象化し，その上で仮想化された柔軟なサービスを提供，更には，ＩＴインフラの導入と拡張の自動化，サービスレベル制御の自動化を推進することにある。
【０００３】
上述したＳＤＤＣでは，（仮想サーバ上の）ソフトウェアと，実際に処理を行うハードウェアを分離することで柔軟性が向上されている。そのため，仮想環境では，仮想サーバの稼働位置によらずシームレスにソフトウェアを実行できることが求められる。特に，昨今のハイパバイザは稼働中の仮想サーバの移行（ライブマイグレーション）に対応する製品が多い。そこで，仮想サーバのライブマイグレーション等により仮想サーバ間の通信経路が変更される場合であっても，仮想サーバ上のアプリケーション層からは意識させないシームレスに通信できることが望ましい。
【０００４】
一方，通信性能としては，１０Ｇｂｐｓ超の高速・広帯域通信が求められている。そのため，仮想環境では，仮想化によるオーバヘッドによる通信性能の低下抑止を狙い，メモリに直接データを通信する（ゼロコピー）ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）技術やＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）等の高速Ｉ／Ｏデバイスの利用等により通信性能を向上させている。また，仮想サーバ間のネットワーク構成としてスター型構成やメッシュ型構成（Ｐ２Ｐ通信）等が利用されているが，仮想サーバ間で相互に通信を行うことで，無駄な通信が少ないＰ２Ｐ（Ｐｅｅｒ  Ｔｏ  Ｐｅｅｒ）通信が活用されつつある。
【０００５】
このような仮想サーバ間の通信制御を行う技術分野の背景技術としては，主メモリに対して２つの論理的なオブジェクトを割り当てたポートを仮想サーバに割り当て，ポートを回線障害に切り替えることで通信を継続させる技術（特許文献１）が提供されている。具体的には，ＲＤＭＡを利用した通信経路を冗長化させ，冗長化に合わせて仮想サーバに複数のポートを割り当てる。これにより，回線障害が発生した場合に，障害対象の回線に接続されるポートの利用を停止し，冗長化された回線に接続されるポートを利用することで通信経路を変更することが可能となる。
【０００６】
また，仮想サーバ間の通信方式として，ＸｅｎＬｏｏｐ（非特許文献１）が提供されている（３章”DESIGN AND IMPLEMENTATION”）。このＸｅｎＬｏｏｐは，通信プロトコルスタックのＩＰレイヤとデータリンクレイヤの間で実現されたドライバである。そのため，ＸｅｎＬｏｏｐはアプリケーションから送信されたデータをパケットの形式で受信する。例えば，送信先の仮想サーバが同一のハイパバイザ上に存在するならばハイパバイザの通信チャネル（Ｘｅｎｌｏｏｐ  ｃｈａｎｎｅｌ）を利用して送信し，そうでなければそのままデータリンクレイヤにパケットを渡す。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０―８６２２７号公報
【非特許文献】
【０００８】
【非特許文献１】Jian Wang，Kwame−Lante Wright，and Kartik Gopalan，”XenLoop： A Transparent High Performance Inter-VM Network Loopback”，［online］，［2015年6月23日検索］，インターネット＜URL：http：//osnet.cs.binghamton.edu/publications/wang08xenloop.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に示したように仮想サーバに複数の通信用ポートを割り当て，この通信用ポートを切り替えることで通信経路を変更する技術では，ＲＤＭＡ等の高速通信を利用可能であり，かつ，仮想サーバ間の通信経路を切り替えた場合でも，仮想サーバ上のソフトウェアはシームレスに通信を行うことができる。しかし，本技術では，通信経路毎にポートを仮想サーバに割り当てる必要があるため，仮想サーバの構成変更時には，その都度，通信経路に合わせた通信用ポートを仮想サーバに割り当てる制御や割り当てた通信用ポートの管理が必要となるため，仮想サーバの構成管理を容易に行えない課題がある。
【００１０】
非特許文献１に示したように送信先の仮想サーバの搭載位置に合わせて通信経路を変更する技術では，仮想サーバを他の物理計算機に移行（マイグレーション）させた場合であっても仮想サーバ上のソフトウェアはシームレスに通信することができる。しかし，この通信処理では，仮想環境のハイパバイザであるＸｅｎ（登録商標）のカーネルモジュールの変更（ヘッダファイルの変更やコンパイル処理等）が必要となるため仮想サーバ間の通信経路を容易に変更することが出来ない課題がある。
【００１１】
本発明の目的は，上記課題を解決し，仮想サーバ間の通信性能を維持させ，仮想サーバの構成管理を容易化させ，仮想サーバ間の通信経路を容易に切り替えられることである。
【課題を解決するための手段】
【００１２】
本願は，上記課題を解決する手段を含んでいるが，その一例を挙げるならば，
複数の仮想計算機間の通信経路制御方法であって，仮想計算機は，一以上のCPUと，一以上のメモリと，一以上のI/Oデバイスを備えた一以上の物理計算機で稼働するものである。この方法では，通信経路変更指示を契機に，第１の仮想計算機からの通信経路の変更先となる，第２の仮想計算機が直接または間接的に通信する通信用ポートに，第１の仮想計算機の実バッファのエイリアスである仮想バッファを割り当て，仮想バッファが参照するメモリの領域をメモリアドレス変換することにより，第１の仮想計算機の参照するメモリの領域を，第２の仮想計算機の参照するメモリの領域に関連付けることで，第１の仮想計算機と第２の仮想計算機間の通信経路を生成する。
【００１３】
本発明の具体的な構成例では，物理計算機は，仮想計算機を制御するハイパバイザを有し，ハイパバイザは，仮想計算機およびI/Oデバイスに割り当てる，実バッファと仮想バッファを制御する，バッファ制御部を備える。また，物理計算機が搭載するI/Oデバイスへの通信処理を制御する，コネクション制御部を備える。また，仮想計算機間の通信経路を記録し通信用ポート情報を含むLPAR間通信テーブル，および，仮想計算機の位置情報を記録しメモリアドレス情報を含む稼働位置情報テーブルを保有するメモリ管理部を有する。通信経路変更指示が第１の物理計算機で稼働する第１の仮想計算機と，第１の物理計算機で稼働する第２の仮想計算機で相互に通信する通信経路に変更する指示であれば，第１の仮想計算機と第２の仮想計算機のメモリアドレス情報と，第１の仮想計算機と第２の仮想計算機の通信用ポート情報から，仮想バッファの第２の仮想計算機の通信用ポートへの割り当て，および，アドレス変換を行うことで，第１の仮想計算機と第２の仮想計算機の通信経路に共有メモリを利用することができる。
【００１４】
本発明の他の具体的な例では，通信経路変更指示が第１の物理計算機で稼働する第１の仮想計算機と，第１の物理計算機以外の第２の物理計算機で稼働する第３の仮想計算機で相互に通信する通信経路に変更する指示の場合を規定する。この例では，第１の仮想計算機と第１の物理計算機のメモリアドレス情報と，第１の仮想計算機と第１の物理計算機の通信用ポート情報から，仮想バッファの第１の物理計算機の通信用ポートへの割り当て，および，アドレス変更を行うことで，第１の仮想計算機が利用するメモリの領域を，第２の物理計算機の第３の仮想計算機に通信する通信経路を生成する。
【００１５】
本発明の具体的な例では，通信経路変更指示は，管理サーバからの指示により実行されてもよい。管理サーバは，仮想計算機間の通信経路を変更する設定画面を有し，設定画面は，送信元と送信先となる仮想計算機，および，仮想計算機間の通信手段を選択することにより，仮想計算機間の通信経路を変更したことを示す結果を表示する。
【００１６】
本発明の他の一側面は，一以上のCPUと，一以上のメモリと，一以上のI/Oデバイスを備えた一以上の物理計算機で稼働する一以上の仮想計算機を搭載する計算機システムである。このシステムでは，物理計算機は，仮想計算機を制御するハイパバイザを有し，ハイパバイザは，仮想計算機およびI/Oデバイスに割り当てる実バッファと仮想バッファを制御するバッファ制御部を有する。バッファ制御部は，送信側仮想計算機と受信側仮想計算機との間の通信を，送信側仮想計算機と他の仮想計算機との間の通信に切り替える場合には，送信側仮想計算機が使用する通信用ポートに割り当てられた実バッファのエイリアスである仮想バッファの割り当てを，受信側仮想計算機が通信可能な通信用ポートから，他の仮想計算機が通信可能な通信用ポートに切り替え，送信側仮想計算機が参照するメモリの領域を，他の仮想計算機が参照するメモリの領域に関連付けることで，送信側仮想計算機と他の仮想計算機との通信経路を確立する。
【００１７】
本発明の具体的な構成例では，ハイパバイザは，物理計算機が搭載するI/Oデバイスへの通信処理を制御するコネクション制御部と，仮想計算機間の通信経路を記録し通信用ポート情報を含むLPAR間通信テーブルと仮想計算機の位置情報を記録しメモリアドレス情報を含む稼働位置情報テーブルを保有するメモリ管理部を有する。このシステム例では，管理サーバの通信経路変更指示により，第１の物理計算機で稼働する送信側仮想計算機と，第１の物理計算機で稼働する他の仮想計算機で相互に通信する通信経路に変更する場合には，バッファ制御部が，メモリ管理部の稼働位置情報テーブルから送信側仮想計算機と他の仮想計算機のメモリアドレス情報と，LPAR間通信テーブルから送信側仮想計算機と他の仮想計算機の通信用ポート情報を取得し仮想バッファの他の仮想計算機の通信用ポートへの割り当て，および，ディスクリプタによるアドレス変更を行い，送信側仮想計算機と他の仮想計算機の通信経路に共有メモリを利用する。
【００１８】
本発明の他の具体的な構成例では，ハイパバイザは，物理計算機が搭載するI/Oデバイスへの通信処理を制御するコネクション制御部と，仮想計算機間の通信経路を記録し通信用ポート情報を含むLPAR間通信テーブルと仮想計算機の位置情報を記録しメモリアドレス情報を含む稼働位置情報テーブルを保有するメモリ管理部を有する。このシステムでは，管理サーバの通信経路変更指示により，第１の物理計算機で稼働する送信側仮想計算機と，第１の物理計算機以外の第２の物理計算機で稼働する他の仮想計算機で相互に通信する通信経路に変更する場合には，バッファ制御部がメモリ管理部の稼働位置情報テーブルから送信側仮想計算機とコネクション制御部のメモリアドレス情報と，LPAR間通信テーブルから送信側仮想計算機とコネクション制御部の通信用ポート情報を取得し，仮想バッファのコネクション制御部の通信用ポートへの割り当て，および，ディスクリプタによるアドレス変更を行うことで送信側仮想計算機が利用するメモリの領域を，コネクション制御部を経由し，第２の物理計算機の他の仮想計算機に通信する通信経路を生成する。
【発明の効果】
【００１９】
本発明を用いれば，仮想サーバ間の通信性能を維持させ，仮想サーバの構成管理を容易化させ，仮想サーバ間の通信経路を容易に切り替えることができる
【図面の簡単な説明】
【００２０】
【図１】第１の実施例における物理計算機の構成図の一例のブロック図である。
【図２】第１の実施例における物理計算機及びソフトウェアの関係の一例を示すスタック図である。
【図３】第１の実施例におけるメモリ内容の一例を示す概念図である。
【図４Ａ】第１の実施例における稼働位置情報テーブルの一例を示す表図である。
【図４Ｂ】第１の実施例における稼働位置情報テーブルの一例を示す表図である。
【図５Ａ】第１の実施例におけるＬＰＡＲ間通信テーブルの一例を示す表図である。
【図５Ｂ】第１の実施例におけるＬＰＡＲ間通信テーブルの一例を示す表図である。
【図６】第１の実施例におけるディスクリプタとバッファの関係を示す一例を示す概念図である。
【図７】第１の実施例における物理計算機の処理を示す一例を示す模式図である。
【図８】第１の実施例における同一物理計算機内の通信を別物理計算機間の通信に切り替えるタイミングチャート図の一例である。
【図９】第１の実施例における別物理計算機間の通信を同一物理計算機内の通信に切り替えるタイミングチャート図の一例である。
【図１０】第１の実施例における通信経路の切り替え時の全体処理を説明するフローチャート図の一例である。
【図１１】第１の実施例における同一物理計算機内から別物理計算機間の通信経路変更処理のフローチャート図の一例である。
【図１２】第１の実施例における同一物理計算機内から別物理計算機間の通信経路変更処理後のフローチャート図の一例である。
【図１３】第１の実施例における別物理計算機間から同一物理計算機内の通信経路変更処理のフローチャート図の一例である。
【図１４】第１の実施例における別物理計算機間から同一物理計算機内の通信経路変更処理後のフローチャート図の一例である。
【図１５】第２の実施例における物理計算機の構成図の一例である。
【図１６】第２の実施例における物理計算機及びソフトウェアの関係を示すスタック図の一例である。
【図１７】第２の実施例におけるメモリ内容の一例の概念図である。
【図１８】第２の実施例における同一物理計算機内から別物理計算機間の通信経路変更処理のフローチャート図の一例である。
【図１９】第２の実施例における同一物理計算機内から別物理計算機間の通信経路変更処理後のフローチャート図の一例である。
【図２０】第１，２の実施例における管理サーバの管理画面を示す一例の平面図である。
【発明を実施するための形態】
【００２１】
以下，実施例について図面を用いて説明する。ただし，本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で，その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００２２】
以下に説明する発明の構成において，同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い，重複する説明は省略することがある。
【００２３】
本明細書等における「第１」，「第２」，「第３」などの表記は，構成要素を識別するために付するものであり，必ずしも，数または順序を限定するものではない。また，構成要素の識別のための番号は文脈毎に用いられ，一つの文脈で用いた番号が，他の文脈で必ずしも同一の構成を示すとは限らない。また，ある番号で識別された構成要素が，他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【００２４】
図面等において示す各構成の位置，大きさ，形状，範囲などは，発明の理解を容易にするため，実際の位置，大きさ，形状，範囲などを表していない場合がある。このため，本発明は，必ずしも，図面等に開示された位置，大きさ，形状，範囲などに限定されない。
【実施例１】
【００２５】
本実施例では，各物理計算機１００上で稼働する各仮想サーバ１０２間の通信経路の切り替え処理を行う物理計算機１００の例を示す。
【００２６】
図１は，複数の仮想サーバ１０２が稼働する物理計算機１００の構成図の例である。物理計算機１００は，ＣＰＵ１０４を１つ以上有し，これらのＣＰＵ１０４はＱＰＩ（ＱｕｉｃｋＰａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）やＳＭＩ（Ｓｃａｌａｂｌｅ  Ｍｅｍｏｒｙ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）等のインターコネクト１０５を介してＣｈｉｐＳｅｔ１０６に接続される。
【００２７】
ＣｈｉｐＳｅｔ１０６には，ＰＣＩ  Ｅｘｐｒｅｓｓ等のバス１１７を介してＬＡＮ１１２に接続されるＩ／Ｏデバイスである物理ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１１０，ディスク１１５やストレージ装置１１４に接続されるＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）１０９，コンソール１０８に接続されるコンソールインタフェース（コンソールＩ／Ｆ）１０７が接続される。
【００２８】
ＣＰＵ１０４は，インターコネクト１０５を介してメモリ１０３にアクセスし，ＣｈｉｐＳｅｔ１０６から物理ＮＩＣ１１０等にアクセスして所定の処理を行う。メモリ１０３には，ハイパバイザ１０１がロードされ，ハイパバイザ１０１が制御する仮想サーバ１０２でゲストＯＳ１１１が稼働する
図２を用いて次に，物理計算機１００上で仮想サーバ１０２を実現するソフトウェア構成の主要部と，制御対象となるハードウェア要素について，説明する。物理計算機１００上では，１つ以上の仮想サーバ１０２を制御するハイパバイザ１０１が稼動する。
【００２９】
１つ以上の物理ＮＩＣ１１０は，ＩＯＶ（Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）機能を有しており，物理的な機能（ＰＦ：Ｐｈｉｃｉｃａｌ   Fｕｎｃｔｉｏｎ）２０６，仮想的な機能（ＶＦ：Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）２０７から成る。ＰＦ２０６は常時利用可能な機能だが，ＶＦ２０７はＩＯＶ機能が有効な場合にのみ利用できる機能である。なお，仮想サーバ１０２は，ＩＯＶに非対応な物理ＮＩＣ１１０を含んでも構わない。
【００３０】
ＰＦ２０６は，物理サーバ１００の外部ネットワークとデータを送受信する機能を有し，ＩＯＶ機能を制御するＩＯＶレジスタを含む。ＶＦ２０７は，ＩＯＶ機能が有効な場合にのみ，物理サーバ１００の外部ネットワークとデータを送受信する機能を有する。
【００３１】
ハイパバイザ１０１は，仮想サーバ１０２を生成し，仮想サーバ１０２上に対してＣｈｉｐｓｅｔ１０６に相当する機能（仮想Ｃｈｉｐｓｅｔ２１３）を提供する。また，ハイパバイザ１０１は，任意のＶＦ２０７を任意の仮想サーバ１０２に占有的に割り当て，当該仮想サーバ１０２上で稼動するゲストＯＳ１１１に当該ＶＦ２０７の直接操作を許可する機能（パススルー機能）を備える。
【００３２】
仮想サーバ１０２には，実バッファ２１５と仮想バッファ２１６が割り当てられている。ハイパバイザ１０１は，実バッファ２１５と仮想バッファ２１６がアクセスするメモリアドレスを制御する，バッファ制御部２００を備える。
【００３３】
また，ハイパバイザ１０１は，物理計算機１００が他の物理計算機１００と通信する際に通信制御を行うコネクション制御部２０１，管理サーバ１１６や他の物理計算機１００と相互に情報を通信する切替通知部２０３，仮想サーバ１０２の稼働位置や構成情報を登録する稼働位置情報テーブル２０５，仮想サーバ１０２（ＬＰＡＲ）間の通信経路情報を登録するＬＰＡＲ間通信経路テーブル２０４を備える。また，これら切替通知部２０３，稼働位置情報テーブル２０５，および，ＬＰＡＲ間通信経路テーブル２０４を管理するメモリ管理部２０２を備える。
【００３４】
さらに，ハイパバイザ１０１は，仮想サーバ１０２に割り当てるＰＦドライバ２０９とＶＦドライバ２１０を管理する，物理ＮＩＣ制御部２０８を含む。
【００３５】
ハイパバイザ１０１の仮想ＮＩＣエミュレータ２１１は，仮想サーバ１０２に提供する実バッファ２１５や仮想バッファ２１６のアドレス情報を提供するディスクリプタ・エントリデータ２１２を含む。このディスクリプタ・エントリデータ２１２は，実バッファ２１５や仮想バッファ２１６が使用するメモリ領域のアドレス情報等を保持する。
【００３６】
各仮想サーバ１０２には，仮想ＮＩＣ（ＶＮＩＣ）２１９が割り当てられる。この仮想ＮＩＣ２１９は（図示しない）仮想スイッチ等により物理ＮＩＣ１１０を複数の仮想サーバ１０２で共有して，接続される。
【００３７】
ＰＦドライバ２０９は，ＰＦ２０６に含まれるＩＯＶレジスタを操作する機能を有する。
【００３８】
仮想サーバ１０２は，ハイパバイザ１０１によって提供される仮想Ｃｈｉｐｓｅｔ２１３などの仮想的な部品と，占有的に割り当てられたＶＦ２０７を含む。仮想サーバ１０２上ではゲストＯＳ１１１が動作する。ゲストＯＳ１１１は，ＶＦ２０７の種類に応じたＶＦドライバ２１０を用いてＶＦ２０７で通信を行い，ＮＩＣドライバ２２０を用いてＶＮＩＣ２１９での通信や物理ＮＩＣ１１０と直接通信を行う。また，ゲストＯＳ１１１は，実バッファ２１５と仮想バッファ２１６のメモリアドレスを変更することで，各仮想サーバ１０２上のゲストＯＳ１１１が共有して利用するデータ領域（共有データ領域２１８）を有し，本共有データ領域２１８を利用することで共有メモリの通信を行うことができる。
【００３９】
バッファ制御部２００は，ＬＰＡＲ間通信経路テーブル２０４，および，稼働位置情報テーブル２０５に登録された仮想サーバ１０２の位置情報や構成情報から，仮想サーバ１０２の通信経路変更時の実バッファ２１５と仮想バッファ２１６の制御を行い，仮想サーバ１０２の通信経路を切り替える。また，仮想サーバ１０２の通信経路が他の物理計算機１００と通信を行う際には，コネクション制御部２０１を利用する。本処理の詳細について後述する。
【００４０】
図３には，ハイパバイザ１０１が管理するメモリ１０３の一例を示す。ハイパバイザ１０１は，メモリ１０３上にハイパバイザ１０１自身が使用する領域と，仮想サーバ１０２が使用する領域を割り当てる。
【００４１】
例えば，図３のように物理アドレス（ホストメモリアドレス）が割り当てられている場合，ハイパバイザ１０１は，ハイパバイザ１０１の領域にアドレスＡＤ０からＡＤ１を割り当て，仮想サーバ１０２―１にアドレスＡＤ１からＡＤ２を，仮想サーバ１０２―２にアドレスＡＤ３からＡＤ４を，仮想サーバ１０２−１と仮想サーバ１０２−２が共有メモリによる通信時に使用する共有データ領域２１８にアドレスＡＤ３からＡＤ４を割り当てる。
【００４２】
各仮想サーバ１０２が使用する領域には，ゲストＯＳ１１１とＶＦドライバ２１０とＮＩＣドライバ２２０が格納される。ハイパバイザ１０１が使用する領域には，バッファ制御部２００，コネクション制御部２０１，メモリ管理部２０２，物理ＮＩＣ制御部２０８，および，仮想ＮＩＣエミュレータ２１１が格納される。
【００４３】
図４Ａは，稼働位置情報テーブル２０５の構成例である。稼働位置情報テーブル２０５は，仮想サーバ１０２の稼働位置と利用メモリアドレス情報を保持する表である。この表では，情報の取得日時（ｄａｔｅ）４０１に，物理計算機１００の通し番号（Ｂｌａｄｅ＃）４０２と仮想サーバ１０２の通し番号（ＬＰＡＲ＃）４０３により，仮想サーバ１０２の稼働位置が登録される。
【００４４】
図４Ａの例では，仮想サーバ１０２はＬＰＡＲ＃１〜＃３の３つを想定する。なお，ハイパバイザ１０１の情報は，ＬＰＡＲ＃０に登録される。また，各仮想サーバ１０２が使用するメモリ領域として，ホストメモリアドレス（Ｈｏｓｔ  Ｍｅｍｏｒｙ  Ａｄｄｒｅｓｓ）４０４とゲストメモリアドレス（Ｇｕｅｓｔ  Ｍｅｍｏｒｙ  Ａｄｄｒｅｓｓ）４０７が登録され，各アドレスを使用するバッファを割り当てる仮想ＮＩＣ（ＶＮＩＣ＃）４１０が登録される。
【００４５】
この割り当てるバッファのバッファ情報（Ｂｕｆｆｅｒ  Ｉｎｆｏｒｍａｔｉｏｎ）４１１には，バッファの名称（ｎａｍｅ）４１２と，実バッファ２１５のエイリアスとなる仮想バッファ２１６を生成した場合には，実バッファ２１５の情報（Ａｌｉａｓ）４１３を登録する。ここでは，バッファの名称をＧＰＡ（Ｇｕｅｓｔ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）の番号で規定している。図４Ａの例では，ＬＰＡＲ＃１の実バッファ２１５のＧＰＡ１と，ＬＰＡＲ＃２の仮想バッファ２１６のＧＰＡ２が，メモリの同じアドレスを参照しているということを示している。
【００４６】
なお，ホストメモリアドレスは，前述のように物理サーバに搭載されるメモリ１０３の物理アドレスであり，ゲストメモリアドレスはゲストＯＳ１１１に割り当てる論理的なメモリ１０３の物理アドレスである。図４Ａでは，（各仮想サーバである）ＬＰＡＲ＃１〜＃３で，メモリアドレスは上下２段となっている。ホストメモリアドレス４０４の上段のアドレスは各ゲストＯＳ１１１が使用する領域を示し，対応するゲストメモリアドレス４０７は「address」とのみ表示し具体的な内容は省略している。また，ホストメモリアドレス４０４の下段のアドレスは共通データ領域２１８（図３）を示し，同じアドレスが割り当てられており，各ゲストＯＳ１１１は対応するゲストメモリアドレス４０７を持っている。なお，図４Ａの例では，ＬＰＡＲ＃１とＬＰＡＲ＃２のゲストメモリアドレスが同じ値となっているが，実際に動作するゲストＯＳの種類やアプリケーションにより異なる値が入ってもよい。
【００４７】
稼働位置情報テーブル２０５によれば，通信経路変更指示で対象となる仮想サーバ１０２の稼働位置により，同一の前記物理計算機１００で稼働する仮想サーバ１０２間の相互通信となるか，別々の物理計算機１００で稼働する仮想サーバ１０２の相互通信となるか判定することが可能である。
【００４８】
図５Ａは，ＬＰＡＲ間通信テーブル２０４の構成例である。ＬＰＡＲ間通信テーブル２０４は，仮想サーバ１０２の送信元と送信先の接続情報を保持する表である。この表では，ＬＰＡＲ間通信テーブル２０４は，情報の取得日時（ｄａｔｅ）５０１における送信元の仮想サーバ１０２の情報（Ｓｏｒｕｃｅ  ＬＰＡＲ）５０２に，仮想サーバ１０２の通し番号（ＬＰＡＲ＃）５０３と，この仮想サーバ１０２が利用する仮想ＮＩＣ２１９の通し番号（Ｖｉｒｔｕａｌ  ＩＦ＃）５０４が登録されている。また，送信先の仮想サーバ１０２の情報（Ｄｅｓｔｉｎａｔｉｏｎ  ＬＰＡＲ）５０５に，仮想サーバ１０２の通し番号（ＬＰＡＲ＃）５０６と，この仮想サーバ１０２が利用する仮想ＮＩＣ２１９の通し番号（Ｖｉｒｔｕａｌ  ＩＦ＃）５０７が登録される。
【００４９】
この仮想ＮＩＣ通し番号５０７では，仮想サーバ１０２に割り当てる仮想ＮＩＣ２１９であれば通し番号が登録されるが，直接物理ＮＩＣ１１０を利用する際には，「ＶＦ＃１」のように使用するデバイス名を付与した形式で登録される。これらの情報により，仮想サーバ１０２間の通信構成を把握する。また，各仮想サーバ１０２の送信元が送信先の候補として予定される仮想サーバ１０２の情報（Ａｃｃｅｓｓ  Ｐｏｉｎｔ  Ｌｉｓｔ）５０８が登録される。
【００５０】
図６によって，本実施例における実バッファ２１５と仮想バッファ２１６の制御方法の一例を示す。図６は，仮想サーバ１０２−１から仮想サーバ１０２−２にデータを送信する例である。仮想サーバ１０２−１には実バッファ２１５が割り当てられ，この実バッファ２１５のエイリアスとなる仮想バッファ２１６を仮想サーバ１０２−２が割り当てられている。このエイリアスとは，実バッファ２１５と仮想バッファ２１６が同じメモリ空間を使用することを指す。
【００５１】
上記の例を図４Ａを再度参照して説明すると，仮想サーバ１０２−１（ＬＰＥＲ＃１）と仮想サーバ１０２−２（ＬＰＥＲ＃２）は，０ｘ００１０から０ｘ００１８という同じホストメモリアドレス４０４を使用しており，仮想サーバ１０２−１のバッファＧＰＡ１のエイリアスが，仮想サーバ１０２−２に割り当てられている。このとき，仮想サーバ１０２−１と１０２−２のゲストメモリアドレス４０７は異なっているが，図６のアドレス変換によって，同じアドレスを参照することが可能となる。
【００５２】
実バッファ２１５と仮想バッファ２１６が使用するメモリ領域については，使用メモリのアドレス情報のポインタをディスクリプタが所有しており，このディスクリプタにより制御される。本実施例では，仮想サーバ１０２−１の送信時のディスクリプタ情報と仮想サーバ１０２−２の受信時のディスクリプタ情報は，バッファ制御部２００にてディスクリプタのアドレス変換が行われる。これにより，送信ディスクリプタと受信ディスクリプタが同じメモリ領域を使用することが可能となり，実バッファ２１５に格納されたデータを仮想サーバ１０２−２からアクセスすることができる。すなわち，仮想サーバ１０２−１と仮想サーバ１０２−２は共有メモリを使用した通信が可能となる。なお，図４Ａでは，仮想サーバ１０２−１と１０２−２のゲストメモリアドレス４０７が異なっているが，ゲストメモリアドレスを同一に設定しておけば，稼働位置情報テーブル２０５によるアドレス変換が不要となることはいうまでもない。
【００５３】
図７は，上述した実バッファ２１５と仮想バッファ２１６の制御方法を含めた全体処理の一例を示す。図７では，物理計算機１００−１で仮想サーバ１０２−１と仮想サーバ１０２−２が稼働し，物理計算機１００−２で仮想サーバ１０２−３が稼働しており，仮想サーバ１０２−１と仮想サーバ１０２−２の通信（図７内の実線矢印部分）を，仮想サーバ１０２−１と仮想サーバ１０３の通信（図７内の点線矢印部分）に切り替える例を示している。
【００５４】
まず，仮想サーバ１０２−１と仮想サーバ１０２−２の通信処理では，外部より受信したデータが物理ＮＩＣ１１０−１のキューペアＮＩＣ７０１のキューＲｘに溜められ（処理（ａ）），実バッファ２１５（ＧＰＡ１）に取得される（処理（ｂ））。この取得されたデータは，ゲストＯＳ１１１で稼働するアプリケーションの処理が行われ，実バッファ２１５に格納される（処理（ｃ））。
【００５５】
実バッファ２１５の格納先となるメモリ領域のアドレス情報（ゲストメモリアドレス４０７）は，仮想サーバ１０２−１の仮想デバイスのキューペアＳ＿ＩＦ（シェアドインタフェース）７０２のキューＴｘに溜められ（処理（ｄ）），仮想サーバ１０２−２の仮想デバイスのキューペアＳ＿ＩＦ７０３のキューＲｘに送られる（処理（ｅ））。ここで，仮想デバイスは，図２のＶＮＩＣ２１９に対応する。仮想サーバ１０２−２では，仮想デバイスのキューペアＳ＿ＩＦ７０３のキューＲｘを基に，必要により図６で示したアドレス変換を行い，仮想バッファ２１６（ＧＰＡ２）にメモリ領域の情報を取得する。そして，ゲストＯＳ１１１のアプリケーション処理を行い，再度，仮想バッファ２１６に格納する（処理（ｆ））。この仮想バッファ２１６に格納されたデータは，物理ＮＩＣ１１０−２のキューペアＮＩＣ７０４のキューＴｘを経由し外部に送信される（処理（ｇ））。
【００５６】
次に，仮想サーバ１０２−１と仮想サーバ１０２−２の通信を，仮想サーバ１０２−１と仮想サーバ１０２−３に切り替えた処理について説明する。なお，処理（ａ）から処理（ｄ）までは，仮想サーバ１０２−１と仮想サーバ１０２−２の通信処理と同じとなるため説明を割愛する。
【００５７】
仮想サーバ１０２−１で処理されたデータのキュー情報は，バッファ制御部２００が取得する（処理（ｈ））。次に，物理ＮＩＣ１１０−３と通信するコネクション制御部２０１に作成する仮想バッファ２１６（ＧＰＡ３）に，キュー情報を送信する（処理（ｉ））。キュー情報は，物理計算機１００−１の物理ＮＩＣ１１０−３から，物理計算機１００−２に送信される（処理（ｊ））。
【００５８】
物理計算機１００−２では，実バッファ２１５（ＧＰＡ４）のエイリアスが，仮想バッファ２１６（ＧＰＡ５）に割り当てられている。物理計算機１００−１から受信したキュー情報をキューペアＮＩＣ７０５のキューに溜め（処理（ｋ）），キューの情報により格納するデータ領域を実バッファ２１５（ＧＰＡ４）に取得する（処理（ｎ））。すなわち，実バッファ２１５（ＧＰＡ４）には，仮想バッファ（ＧＰＡ３）の内容のコピーが格納されることになる。実バッファ２１５（ＧＰＡ４）に格納されたデータは，バッファ制御部２００のバッファアドレス変更処理機能によりアドレス変換が行われ（処理（ｍ）），仮想サーバ１０２−３のキューペアＳ＿ＩＦ７０６のキューに溜められた情報から仮想バッファ２１６（ＧＰＡ５）がデータを取得し，ゲストＯＳ１１１のアプリケーションの処理が行われる（処理（ｏ））。本処理結果は，仮想バッファ２１６（ＧＰＡ５）に格納され，物理ＮＩＣ１１０−５を経由し外部に送信される。
【００５９】
なお，上述した処理（ｋ）から処理（ｐ）は，物理計算機１００−２で実行される処理であり，物理計算機１００−２で特に特別な制御を実施しないようであれば本処理を行う必要はない。
【００６０】
以上の処理により，仮想サーバ１０２−１と仮想サーバ１０２−２は，共有メモリによるデータ通信を行うことができ，別の物理計算機１００に通信経路を切り替えた場合であっても，ゲストＯＳ１１１が意識することなく，仮想サーバ１０２に別途ポートを割り当てる必要もなく，シームレスに通信経路を切り替えることが可能となる。なお，ここでは，同じ物理計算機１００上で仮想サーバ１０２間の通信状態を，「同一物理計算機間の仮想サーバ間通信」と呼び，別の物理計算機１００間で仮想サーバ１０２間の通信状態を「別物理計算機間の仮想サーバ間通信」と呼ぶ。
【００６１】
以降では，同一物理計算機間の仮想サーバ間通信から別物理計算機間の仮想サーバ間通信に切り替える処理と，別物理計算機間の仮想サーバ間通信から同一物理計算機間の仮想サーバ間通信に切り替える処理について図８，図９で説明する。
【００６２】
図８は，同一物理計算機間の仮想サーバ間通信を別物理計算機間の仮想サーバ間通信に切り替える際のタイミングチャートの例を示す。
【００６３】
まず，管理サーバ１１６から通信経路の切り替え対象となる物理計算機１００−１に経路変更指示が送信される(ａ)。この経路変更指示は，切替通知部２０３で受診し，バッファ制御部２００に経路変更通知を送信する(ｂ)。バッファ制御部２００では，メモリ管理部２０２で保有するテーブル情報（稼働位置情報テーブル２０５とＬＰＡＲ間通信テーブル２０４）のテーブル取得要求を，メモリ管理部２０２に送信する(ｃ)。バッファ制御部２００は，テーブル内容通知を取得し(ｄ)，通信経路の変更対象となる仮想サーバ１０２−１の送信キューの処理を一時停止させる(ｅ)。この時，仮想サーバ１０２−１の処理自体は停止しないため，仮想サーバ１０２−１の処理結果は，実バッファ２１５に溜められることになる。
【００６４】
バッファ制御部２００では，取得したテーブルの情報に基づいて，仮想サーバ１０２−１の通信先となる仮想サーバ１０２−２に割り当てた仮想バッファ２１６（仮想サーバ１０２−１の実バッファ２１５のエイリアス）を解除する(ｆ)。そして，新たに仮想バッファ２１６(仮想サーバ１０２−１の実バッファ２１５のエイリアス)をコネクション制御部２０１に割り当てる(ｇ)。
【００６５】
コネクション制御部２０１に仮想バッファ２１６を割り当てた後は，物理計算機１００−２に対してデータの送信を行い，全てのデータを送信した後に物理計算機１００−１と物理計算機１００−２の間でコネクションが張れたことをバッファ制御部２００に通知する。すなわち，物理計算機１００−２の仮想サーバ１０２−３にＷｒｉｔｅのエンキュー処理を実施し(ｈ)，物理計算機１００−２からエンキュー処理完了通知を受信した後(ｉ)，コネクション完了通知をバッファ制御部２００に通知する(ｊ)。
【００６６】
このコネクション完了通知を受信したバッファ制御部２００は，各テーブル（稼働位置情報テーブル２０５とＬＰＡＲ間通信テーブル２０４）を更新し，メモリ管理部２０２に送信する(ｋ)。稼働位置情報テーブル２０５には，仮想サーバ１０２−１の実バッファ２１５と，コネクション制御部２０１に割り当てた新たな仮想バッファ２１６との対応関係が記録される。また，ＬＰＡＲ間通信テーブル２０４には，物理計算機１００−２に対するデータの送信が記録される。メモリ管理部２０２では，取得した更新テーブルを関連する各物理計算機１００に，切替通知部２０３を経由し送信する(ｌ)。
【００６７】
このようにして，仮想サーバ１０２間の通信経路を変更したならば，変更情報をそれぞれの物理計算機１００に送信し，かつ，それぞれの物理計算機１００内の変更情報を受信することで，物理計算機１００間で更新情報を共有することができる。
【００６８】
上記一連の処理が完了した後，仮想サーバ１０２−１の送信キューの処理が再開され(ｍ)，管理サーバ１１６に通信経路の変更完了通知が送信される(ｎ)。なお，本処理では，管理サーバ１１６の経路変更指示により各処理を実施しているが，管理サーバ１１６の契機以外にもＣＰＵ１０４やメモリ１０３等のリソースの利用状況等でハイパバイザ１０１内で自動的に切り替えてもよい。
【００６９】
図４Ａと図５Ａは図７の構成で，同一物理計算機間の仮想サーバ間通信時のテーブルの内容を示す。また，図４Ｂと図５Ｂは別物理計算機間の仮想サーバ間通信に切り替えた場合のテーブルの内容を示す。
【００７０】
図４Ａでは，仮想サーバ１０２（ＬＰＡＲ＃１）の実バッファ２１５（ＧＰＡ１）のエイリアスは，仮想サーバ１０２（ＬＰＡＲ＃２）の仮想バッファ２１６（ＧＰＡ２）に対応していたが，図４Ｂでは，仮想サーバ１０２（ＬＰＡＲ＃１）の実バッファ２１５（ＧＰＡ１）のエイリアスは，仮想サーバ１０２（ＬＰＡＲ＃０）（ハイパバイザ）が使用する，仮想バッファ２１６（ＧＰＡ３）に対応することになる。仮想バッファ２１６が利用するゲストメモリアドレス４０７が変更されるため，これに伴って，バッファ制御部２００が行うディスクリプタのアドレス変換の内容が変更される。また，データ受信側の仮想サーバ１０２（ＬＰＡＲ＃３）では，仮想サーバ１０２（ＬＰＡＲ＃０）のコネクション制御部２０１の実バッファ２１５（ＧＰＡ４）のエイリアスが，仮想バッファ２１６（ＧＰＡ５）に対応付けられる。
【００７１】
図５Ａでは，仮想サーバ１０２（ＬＰＡＲ＃１）は，ＶＮＩＣ２１９（＃１）（キューペアＳ＿ＩＦ７０２に対応）を介して仮想サーバ１０２（ＬＰＡＲ＃２）と通信していたが，図４Ｂでは，仮想サーバ１０２（ＬＰＡＲ＃１）は，物理ＮＩＣ１１０−３（ＶＦ＃１）を介して仮想サーバ１０２（ＬＰＡＲ＃３）と通信することになる。
【００７２】
図９は，別物理計算機間の仮想サーバ間通信を同一物理計算機間の仮想サーバ間通信に切り替える際のタイミングチャートの例を示す。
【００７３】
まず，管理サーバ１１６から通信経路の切り替え対象となる物理計算機１００−１に経路変更指示が送信される(ａ)。この経路変更指示は，切替通知部２０３で受診し，バッファ制御部２００に変更通知を送信する(ｂ)。バッファ制御部２００では，メモリ管理部２０２で保有するテーブル情報（稼働位置情報テーブル２０５とＬＰＡＲ間通信テーブル２０４）を要求(ｃ)，取得し(ｄ)，通信経路の変更対象となる仮想サーバ１０２−１の送信処理を一時停止させる(ｅ)。このとき，通信先となる物理計算機１００に未送信のデータがあれば送信する。すなわち物理計算機１００−２の仮想サーバ１０２−３にＷｒｉｔｅのエンキュー処理を開始し(ｆ)，物理計算機１００−２でエンキュー処理が完了したら，物理計算機１００−２からコネクション制御部２０１を経由して，バッファ制御部２００にエンキュー処理完了通知を送信する(g)。この時，仮想サーバ１０２−１の処理自体は停止しないため，処理結果は，実バッファ２１５に溜められることになる。
【００７４】
未送信のデータを全て送信した後は，バッファ制御部２００が，コネクション制御部２０１に割り当てた仮想バッファ２１６(仮想サーバ１０２−１の実バッファ２１５のエイリアス)を解除し(ｈ)，新たに通信先となる仮想サーバ１０２−２に仮想バッファ２１６(仮想サーバ１０２−１の実バッファ２１５のエイリアス)を割り当てる(ｉ)。仮想バッファ２１６を割り当てた後は，バッファ制御部２００が各テーブルを更新し，メモリ管理部２０２に送信する(ｊ)。メモリ管理部２００では，取得した更新テーブルを関連する各物理計算機１００に切替通知部２０３を経由し送信する(ｋ)。その後，仮想サーバ１０２−１の送信キューの処理が再開され(ｌ)，管理サーバ１１６に通信経路の変更完了通知が送信される(ｍ)。
【００７５】
以下では，ハイパバイザ１０１が行う処理の一例について，フローチャートにより説明する。なお，ここでは，送信先となる物理計算機１００−２の構成は任意で良いため，送信元となる物理計算機１００−１のハイパバイザ１０１が行う処理について説明する。
【００７６】
図１０は，ハイパバイザ１０１が行う処理の全体像を示すフローチャートの例である。まず，管理サーバ１１６が通信経路の変更対象となる物理計算機１００に対して通信経路変更指示を送信する（１００１）。この通信経路変更指示は，ハイパバイザ１０１内の切替通知部２０３が受信し，バッファ制御部２００に通信経路の変更を通知する（１００２）。変更通知を受信したバッファ制御部２００は，メモリ管理部２０２が所有するＬＰＡＲ間通信経路テーブル２０４と稼働位置情報テーブル２０５を取得する（１００３）。稼働位置情報テーブル２０５には，仮想サーバ１０２が稼働する物理計算機１００の情報と，現在使用するバッファ情報が登録されており，この情報から通信経路を同一物理計算機間の仮想サーバ間通信に切り替えるか，別物理計算機間の仮想サーバ間通信に切り替えるか判定する（１００４）。
【００７７】
同一物理計算機間の仮想サーバ間通信に切り替える処理（１００５）と別物理計算機間の仮想サーバ間通信に切り替える処理（１００６）については後述する。
【００７８】
仮想サーバ１０２間の通信経路を切り替えた後は，バッファ制御部２００は，ＬＰＡＲ間通信経路テーブル２０４と稼働位置情報テーブル２０５を更新し，メモリ管理部２０２に通知する（１００７）。メモリ管理部２０２では，更新したＬＰＡＲ間通信経路テーブル２０４と稼働位置情報テーブル２０５を各物理計算機１００に切替通知部２０３を経由して送信する（１００８）。この送信処理では，テーブル自体を各物理計算機１００に送信しても良いし，更新部分のみを抽出して送信してもよい。また，メモリ管理２０２は，切替通知部２０３を経由し，管理サーバ１１６に通信経路の変更完了を通知する（１００９）。
【００７９】
図１１は，別物理計算機間の仮想サーバ間通信に切り替える処理（１００６）を示すフローチャートの例である。
【００８０】
まず，バッファ制御部２００は，ＬＰＡＲ間通信経路テーブル２０４から仮想サーバ１０２−１の通信先（仮想サーバ１０２−２）と，通信先のメモリ情報を抽出し（１１０１），通信元となる仮想サーバ１０２−１の送信キューの処理（デキュー処理）を一時的に停止させる（１１０２）。
【００８１】
次に，バッファ制御部２００は，仮想サーバ１０２−２の仮想バッファ２１６（ＧＰＡ２）を解除し（１１０３），仮想サーバ１０２−１の実バッファ２１５のエイリアスとして仮想バッファ２１６（ＧＰＡ３）をコネクション制御部２０１に生成する（１１０４）。本処理により，仮想サーバ１０２間の通信経路が共有メモリを使用した通信から外部向けの通信に切り替わることになる。
【００８２】
最後に，コネクション制御部２０１では，通信先となる物理計算機１００−２にコネクションを張り通信経路を生成する。なお，ここでは，通信経路の切り替えによりコネクションを張っているが，事前にコネクションを張っておいてもよい。
【００８３】
図１２は，別物理計算機間の仮想サーバ間通信に切り替えた後の通信処理を示すフローチャートの例である。
【００８４】
別物理計算機間の仮想サーバ間通信に通信経路を切り替えた後は，バッファ制御部２００がコネクション制御部２０１で未送信のデータを物理計算機１００−２の仮想サーバ１０２−３に対して送信処理（エンキュー処理）を行う（１２０１）。この時，バッファ制御部２００では，仮想サーバ１０２−２に送信予定であったメモリアドレス情報（ディスクリプタ）をコネクション制御部２０１に割り当てた仮想バッファ２１６（ＧＰＡ３）に送信するようにメモリアドレスを変更し，仮想バッファ２１６（ＧＰＡ）にデータを登録する処理（デキュー処理）を実施する（１２０２）。
【００８５】
未送信データの送信が完了した後は（１２０３），バッファ制御部２００が仮想サーバ１０２−１の送信キューの処理を再開する（１２０４）。以降は，仮想サーバ１０２−１でエンキューされたデータをバッファ制御部２００が送信先となるコネクション制御部２０１の仮想バッファ２１６（ＧＰＡ３）にディスクリプタを変換し送信される（１２０５）。
【００８６】
仮想サーバ１０２−１の通信処理が再開した後は，バッファ制御部２００がＬＰＡＲ間通信経路テーブル２０４と稼働位置情報テーブル２０５を更新する（１２０６）。
【００８７】
図１３は，同一物理計算機間の仮想サーバ間通信に切り替える処理（１００５）を示すフローチャートの例である。
【００８８】
まず，バッファ制御部２００は，ＬＰＡＲ間通信経路テーブル２０４から仮想サーバ１０２−１の通信先（仮想サーバ１０２−２）と，通信先のメモリ情報を抽出し（１３０１），通信元となる仮想サーバ１０２−１の送信キューの処理（デキュー処理）を一時的に停止させる（１３０２）。
【００８９】
次に，コネクション制御部２０１が，通信先となる物理計算機１００−２からの通信データの受信が完了したか監視し（１３０３），受信が完了するまで物理計算機１００−２の通信データのエンキュー処理を実施する（１３０４）。
【００９０】
物理計算機１００−２の通信データの受信が完了したならば，バッファ制御部２００がコネクション制御部２０１に割り当てた仮想バッファ２１６（ＧＰＡ３）を解除し（１３０５），仮想サーバ１０２−１の実バッファ２１５のエイリアスとなる仮想バッファ２１６（ＧＡＰ２）を仮想サーバ１０２−２に生成し，共有メモリを使用する通信経路を生成する（１３０６）。
【００９１】
図１４は，同一物理計算機間の仮想サーバ間通信に切り替えた後の通信処理を示すフローチャートの例である。
【００９２】
同一物理計算機間の仮想サーバ間通信に切り替えた後は，バッファ制御部２００が仮想サーバ１０２−１の送信キューの処理を再開する（１４０１）。以降は，仮想サーバ１０２−１でエンキューされたデータをバッファ制御部２００が送信先となる仮想サーバ１０２−２の仮想バッファ（ＧＰＡ２）にディスクリプタを変換し送信される（１４０２）。
【００９３】
仮想サーバ１０２−１の通信処理が再開した後は，バッファ制御部２００がＬＰＡＲ間通信経路テーブル２０４と稼働位置情報テーブル２０５を更新する（１４０３）。
【００９４】
以上の構成，および，処理により仮想サーバ１０２間の通信に共有メモリを使用することで仮想サーバ１０２間の通信性能を維持させることができる。また，仮想サーバ１０２間の通信経路は，実バッファ２１５のエイリアス（仮想バッファ２１６）を通信先に割り当て，および，仮想バッファ２１６が利用するメモリ空間を制御することで切り替えることができる。これにより，仮想サーバ１０２に割り当てるポートを経路毎に複数準備することがないため仮想サーバ１０２の構成管理を容易に行うことができ，かつ，仮想バッファ２１６の割り当てにより通信経路を容易に切り替えることができる。
【実施例２】
【００９５】
本実施例では，メモリ１０３に直接データを送信するＲＤＭＡ１５０２を別物理計算機間の仮想サーバ間通信に使用する通信経路に使用した時の物理計算機１００の例を示す。
【００９６】
図１５は，実施例２における複数の仮想サーバ１０２が稼働する物理計算機１００の構成図の例である。図１の物理計算機１００のうち，既に説明した図１に示される同一の符号を付された構成と，同一の機能を有する部分については，説明を省略する。
【００９７】
物理計算機１００のＣｈｉｐＳｅｔ１０６には，ＰＣＩ  Ｅｘｐｒｅｓｓ等のバス１１７を介してＬＡＮ１１２に接続される物理ＮＩＣ１１０，ディスク１１５やストレージ装置１１４に接続されるＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）１０９，コンソール１０８に接続されるコンソールインタフェース（コンソールＩ／Ｆ）１０７，ＲＤＭＡ１５０２を使用した通信を行うＨＣＡ（Ｈｏｓｔ  Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）１５０１が接続される。
【００９８】
図１６を参照しながら，次に，物理サーバ１００上で仮想サーバ１０２を実現するソフトウェアの構成の主要部と，制御対象となるハードウェア要素について詳述する。実施例１に於ける図２と同一の番号の同一構成要素については説明を省略する。
【００９９】
１つ以上のＨＣＡ１５０１は，ＲＤＭＡ機能を有しており，通信先となる物理計算機１００に同様にＲＤＭＡ機能を有するＨＣＡ１５０１が搭載していれば，直接メモリ１０３にアクセスすることができる。
【０１００】
ハイパバイザ１０１は，ＨＣＡ１５０１を経由しＲＤＭＡ１５０２で通信を行うＲＤＭＡドライバ１６０２を制御する物理ＨＣＡ制御部１６０１を含む。
図１７には，ハイパバイザ１０１が管理するメモリ１０５の一例を示す。実施例１に於ける図３と同一の番号の同一構成要素については説明を省略する。
【０１０１】
ハイパバイザ１０１が使用する領域には，バッファ制御部２００，コネクション制御部２０１，メモリ管理部２０２，物理ＮＩＣ制御部２０８，および，仮想ＮＩＣエミュレータ２１１，物理ＨＣＡ制御部１６０１が格納される。
【０１０２】
ハイパバイザ１０１が行う処理の全体像については，実施例１に於ける図１０で説明した手順となる。但し，本実施例では，送信先となる物理計算機１００−２に図７で説明した処理（ｋ）から処理（ｐ）を行うことで別物理計算機間の仮想サーバ間通信を高速化することが可能となる。
【０１０３】
以下では，同一物理計算機間の仮想サーバ間通信に切り替える処理（１００５）の送信先となる物理計算機１００−２のハイパバイザ１０１の処理について説明する。なお，別物理計算機間の仮想サーバ間通信に切り替える処理（１００６）については，送信先となる物理計算機１００−２との通信を切断する処理となるため，ここでは割愛する。
【０１０４】
図１８は，別物理計算機間の仮想サーバ間通信に切り替える処理（１００６）を示すフローチャートの例である。
【０１０５】
まず，バッファ制御部２００は，ＬＰＡＲ間通信経路テーブル２０４から仮想サーバ１０２−１の通信先（仮想サーバ１０２−２）と，通信先のメモリ１０３情報を抽出する（１８０１）。
【０１０６】
次に，バッファ制御部２００は，コネクション制御部２０１の実バッファ２１５のエイリアスとなる仮想バッファ２１６（ＧＰＡ４）を仮想サーバ１０２−３に生成する（１８０２）。
【０１０７】
最後に，コネクション制御部２０１では，通信元となる物理計算機１００−１のコネクション制御部２０１に割り当てた仮想バッファ２１６（ＧＰＡ３）にコネクションを張り通信経路を生成する（１８０３）。
【０１０８】
図１９は，別物理計算機間の仮想サーバ間通信に切り替えた後の通信処理を示すフローチャートの例である。
【０１０９】
まず，バッファ制御部２００は，コネクション制御部２０１でエンキュー処理を行い実バッファ２１５（ＧＰＡ４）にデータを取得し（１９０１），取得したデータをバッファ制御部２００が送信先となる仮想サーバ１０２−３のディスクリプタに変更し，仮想サーバ１０２−３のデキュー処理を実施する（１９０２）。
【０１１０】
次に，全ての通信処理が完了したならば（１９０３），バッファ制御部２００がコネクション制御部２０１でエンキューされた受信データを送信先の仮想サーバ１０２−３に割り当てた仮想バッファ２１６（ＧＰＡ５）に変換して送信する（１９０４）。
【０１１１】
仮想サーバ１０２−３にデータが送信された後は，バッファ制御部２００がＬＰＡＲ間通信経路テーブル２０４と稼働位置情報テーブル２０５を更新する（１９０５）。
【０１１２】
以上の構成，および，処理により仮想サーバ１０２間の通信に共有メモリを使用でき，かつ，別物理計算機間の仮想サーバ間通信に切り替えた場合には，ＲＤＭＡ１５０２を使用できることで仮想サーバ１０２間の通信性能を別物理計算機１００間，或いは，同一物理計算機１００間によらず維持させることができる。また，仮想サーバ１０２間の通信経路は，実バッファ２１５のエイリアス（仮想バッファ２１６）を通信先に割り当て，および，仮想バッファ２１６が利用するメモリ空間を制御することで切り替えることができる。これにより，仮想サーバ１０２に割り当てるポートを経路毎に複数準備することがないため仮想サーバ１０２の構成管理を容易に行うことができ，かつ，仮想バッファ２１６の割り当てにより通信経路を容易に切り替えることができる。
【０１１３】
上述した実施形態では，仮想サーバ１０２間の通信経路を切り替える処理に関して説明したが，仮想サーバ１０２のマイグレーション時においても同様の効果を得ることが可能である。例えば，仮想サーバ１０２のマイグレーション先となる物理計算機１００では，仮想サーバ１０２が使用するメモリ１０３等のリソースがハイパバイザ１０１で割り当てられる。この割り当てられた情報に基づき稼働位置情報テーブル２０５とＬＰＡＲ間通信テーブル２０４を更新すれば，マイグレーション後も共有メモリの使用からＲＤＭＡ１５０２の使用に切り替えることが可能となる。
【０１１４】
また，それぞれの実施形態では，仮想サーバ１０２間の通信経路の変更指示を管理サーバ１１６が対象物理計算機１００に通知していた。この変更指示を管理サーバ１１６で実施する例を図２０で説明する。但し，仮想サーバ１０２間の通信経路の変更指示は，管理サーバ１１６からの通知に限らず，例えば，ハイパバイザ１０１のパフォーマンスモニタでリソースの利用状況により自動的に仮想サーバ１０２間の通信経路を切り替えても良い。
【０１１５】
図２０は，管理サーバ１１６の管理画面２００１を示す一例である。図２０では，仮想サーバ１０２間の通信制御を行う画面であり，対象となる仮想サーバ１０２の選定等を行う設定変更画面と通信経路の構成を示す構成画面を有する。本実施例では，通信経路変更指示は，管理サーバからの指示により実行することができる。
【０１１６】
設定変更画面では，送信元と送信先となる前記仮想サーバ１０２，および，前記仮想サーバ１０２間の通信手段を選択する。具体的には，通信経路の切り替え対象となる仮想サーバ１０２と，この仮想サーバ１０２が使用する通信ポートを選択し，仮想サーバ１０２間の通信経路に利用する通信手段を選択する。通信手段では，通常のネットワーク通信を利用することも想定されるため，一例を挙げるならば共有メモリを使用した高速通信を行う場合には，「ＤＭＡ」と入力する。
【０１１７】
構成画面では，通信経路の切り替え前後の構成が把握できるように，それぞれのネットワーク構成が図示される。
【０１１８】
この管理画面２００１では，本画面構成に限らず，例えば，仮想サーバ１０２の構築画面に上述した入力内容を含めてもよい。また，変更前後の構成画面を表示させずに，必要に応じて画面を切り替えてもよい。
【０１１９】
以上の実施例を用いれば，仮想サーバ１０２間の通信に共有メモリを使用することで仮想サーバ１０２間の通信性能を維持させることができる。また，仮想サーバ１０２間の通信経路は，送信元と送信先に割り当てる実バッファ２１５と仮想バッファ２１６のメモリアドレス制御により実現されており，仮想サーバ１０２に割り当てる通信用ポートを経路毎に複数準備する必要がなく，仮想サーバ１０２の構成管理を容易に行うことができ，かつ，実バッファ２１５と仮想バッファ２１６のメモリアドレス制御により通信経路を容易に切り替えることができる。
【０１２０】
以上のように本発明の実施の形態について説明したが，本発明の技術範囲は上記実施の形態に記載された範囲に限定されない。本発明者によってなされた発明を上記実施の形態に基づき具体的に説明したが，その要旨を逸脱しない範囲で種々の変更または改良を加えることが可能であることは言うまでもない。従って，そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【符号の説明】
【０１２１】
１００  物理計算機
１０２  仮想サーバ
１０３  メモリ
１０４  ＣＰＵ
１０５  インターコネクタ
１０６  Ｃｈｉｐ  Ｓｅｔ
１０７  コンソールＩ／Ｆ
１０８  コンソール
１０９  ＨＢＡ
１１０  物理ＮＩＣ
１１１  ゲストＯＳ
１１２  ＬＡＮ
１１３  ＳＡＮ
１１４  ストレージ装置
１１５  ディスク
１１６  管理サーバ
１１７  バス
２００  バッファ制御部
２０１  コネクション制御部
２０２  メモリ管理部
２０３  切替通知部
２０４  ＬＰＡＲ間通信経路テーブル
２０５  稼働位置情報テーブル
２０６  ＰＦ
２０７  ＶＦ
２０８  物理ＮＩＣ制御部
２０９  ＰＦドライバ
２１０  ＶＦドライバ
２１１  仮想ＮＩＣエミュレータ
２１２  ディスクリプタ・エントリデータ
２１３  仮想Ｃｈｉｐ  Ｓｅｔ
２１５  実バッファ
２１６  仮想バッファ
２１８  共有データ領域
２１９  ＶＮＩＣ
２２０  ＮＩＣドライバ
１５０１  ＨＣＡ
１５０２  ＲＤＭＡ
１６０１  物理ＨＣＡ制御部
１６０２  ＲＤＭＡドライバ
【図１】
0006579916.tif 000002
【図２】
0006579916.tif 000003
【図３】
0006579916.tif 000004
【図４Ａ】
0006579916.tif 000005
【図４Ｂ】
0006579916.tif 000006
【図５Ａ】
0006579916.tif 000007
【図５Ｂ】
0006579916.tif 000008
【図６】
0006579916.tif 000009
【図７】
0006579916.tif 000010
【図８】
0006579916.tif 000011
【図９】
0006579916.tif 000012
【図１０】
0006579916.tif 000013
【図１１】
0006579916.tif 000014
【図１２】
0006579916.tif 000015
【図１３】
0006579916.tif 000016
【図１４】
0006579916.tif 000017
【図１５】
0006579916.tif 000018
【図１６】
0006579916.tif 000019
【図１７】
0006579916.tif 000020
【図１８】
0006579916.tif 000021
【図１９】
0006579916.tif 000022
【図２０】
0006579916.tif 000023