(57)【特許請求の範囲】
【請求項１】
仮想ネットワーク環境において、データのコピー・オペレーションを迂回するためのコンピュータ実行の方法であって、前記方法は、
データ・パケットを第一論理区画のユーザ・スペースから第一カーネル・スペースにコピーするステップであり、前記データ・パケットは、第二論理区画中の受信側仮想イーサネット・ドライバへ届くように構成され、前記第一論理区画と前記第二論理区画は同じ物理的なデータ処理装置内の仮想オペレーション・システム・インスタンスである、前記コピーするステップと、
ハイパーバイザを介して、前記第二論理区画中の受信側仮想イーサネット・ドライバの第一マップト・アドレスを要求するステップであって、前記第一マップト・アドレスは、前記受信側仮想イーサネット・ドライバの受信バッファに関連付けられる、前記要求するステップと、
第二マップト・アドレスを前記受信側仮想イーサネット・ドライバの前記受信バッファへマップするステップであり、前記第二マップト・アドレスは共用物理イーサネット・アダプタの物理イーサネット・ドライバーの物理送信バッファに関連付けられ、前記共用物理イーサネット・アダプタは少なくとも前記第一論理区画および第二論理区画を含む複数の論理区画により共用される、前記マップするステップと、
前記データ・パケットを、前記第一論理区画の前記第一カーネル・スペースから、前記第二論理区画の第二カーネル・スペース中の送り先へ、前記ハイパーバイザをバイパスすることで、直接コピーするステップであって、前記送り先は前記第一マップト・アドレスを使って決められる、前記直接コピーするステップと、
前記物理イーサネット・ドライバーが呼び出しを行うことで、前記受信側仮想イーサネット・ドライバに、前記第二論理区画中の前記送り先への前記データ・パケットのコピーが成功したことを通知するステップと、
を含む、前記コンピュータ実行の方法。
【請求項２】
前記直接コピーするステップは、前記第一カーネル・スペースから前記第一論理区画の送信側仮想イーサネット・ドライバへのデータ・パケットのコピー・オペレーションを含まない、請求項１に記載のコンピュータ実行の方法。
【請求項３】
前記受信側仮想イーサネット・ドライバは、少なくとも一つの直接データ・バッファを有する直接データ・バッファプールを含む、請求項１又は２に記載のコンピュータ実行の方法。
【請求項４】
前記少なくとも一つの直接データ・バッファの各々は、前記第二論理区画の前記第二カーネル・スペース中の前記送り先をポイントする、前記第一マップト・アドレスを含む、請求項３に記載のコンピュータ実行の方法。
【請求項５】
前記ハイパーバイザがマップされたバッファ・アドレスのキャッシュ化サブセットを格納するステップをさらに含む、請求項１〜４のいずれかに記載のコンピュータ実行の方法。
【請求項６】
コンピュータの内部メモリにロード可能であり、前記コンピュータ上で実行されたとき、請求項１〜５のいずれかに記載の前記方法を前記コンピュータに遂行させるコンピュータ・プログラム。
【請求項７】
論理区画されたデータ処理システムであって、該システムは、
バスと、
前記バスに連結されたメモリであって、命令のセットがメモリ中に配置されている、前記メモリと、
前記バスに連結された一つ以上のプロセッサであって、前記一つ以上のプロセッサは、
仮想ネットワーク環境において、データのコピー・オペレーションを迂回するための命令
のセットを実行する、前記プロセッサと、
を含み、
前記命令のセットは、
データ・パケットを第一論理区画のユーザ・スペースから第一カーネル・スペースにコピーするステップであり、前記データ・パケットは、第二論理区画中の受信側仮想イーサネット・ドライバへ届くように構成され、前記第一論理区画と前記第二論理区画は同じ物理的なデータ処理装置内の仮想オペレーション・システム・インスタンスである、前記コピーするステップと、
ハイパーバイザを介して、前記第二論理区画中の受信側仮想イーサネット・ドライバの第一マップト・アドレスを要求するステップであって、前記第一マップト・アドレスは、前記受信側仮想イーサネット・ドライバの受信バッファに関連付けられる、前記要求するステップと、
第二マップト・アドレスを前記受信側仮想イーサネット・ドライバの前記受信バッファへマップするステップであり、前記第二マップト・アドレスは共用物理イーサネット・アダプタの物理イーサネット・ドライバーの物理送信バッファに関連付けられ、前記共用物理イーサネット・アダプタは少なくとも前記第一論理区画および第二論理区画を含む複数の論理区画により共用される、前記マップするステップと、
前記データ・パケットを、前記第一論理区画の前記第一カーネル・スペースから、前記第二論理区画の第二カーネル・スペース中の送り先へ、前記ハイパーバイザをバイパスすることで、直接コピーするステップであって、前記送り先は前記第一マップト・アドレスを使って決められる、前記直接コピーするステップと、
前記物理イーサネット・ドライバーが呼び出しを行うことで、前記受信側仮想イーサネット・ドライバに、前記第二論理区画中の前記送り先への前記データ・パケットのコピーが成功したことを通知するステップと、
を含む、前記論理区画されたデータ処理システム。
【請求項８】
前記マップするステップは、前記論理区画されたデータ処理システムの起動時に実行され、前記第一および第二論理区画が構成される前に実行される請求項７に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、改良されたデータ処理システムに関する。具体的には、本開示は、論理区画されたデータ処理システムに関し、さらに具体的には、本開示は、仮想ネットワーク環境におけるコピー／マッピングの迂回に関する。
【背景技術】
【０００２】
先進的な仮想化システムにおいては、オペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）インスタンス群は、仮想イーサネット（ＶＥ：ｖｉｒｔｕａｌ  Ｅｔｈｅｒｎｅｔ）（Ｒ）を介し相互交信する能力を有する。論理区画されたデータ処理システムでは、論理区画（ＬＰＡＲ：ｌｏｇｉｃａｌ  ｐａｒｔｉｔｉｏｎ）は、仮想入力／出力サーバ（ＶＩＯＳ：Ｖｉｒｔｕａｌ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｅｒｖｅｒ）として知られる、特別なパーティションを介して外部ネットワークと通信する。ＶＩＯＳは、各区画が物理Ｉ／Ｏデバイスを所有する必要なしに、これら区画へのネットワーク、ディスク、テープ、および他のアクセスを含む、Ｉ／Ｏサービスを提供する。
【０００３】
ＶＩＯＳ内では、共用イーサネット・アダプタ（ＳＥＡ：ｓｈａｒｅｄ  Ｅｔｈｅｒｎｅｔ  ａｄａｐｔｅｒ）またはブリッジ・アダプタとして知られるネットワーク・アクセス・コンポーネントを使って、物理イーサネット・アダプタと一つ以上の仮想イーサネット・アダプタとの間がブリッジされる。ＳＥＡは、物理インタフェース部分および仮想インタフェース部分の両方を含む。仮想クライアントが、外部クライアントとの通信を所望する場合、データ・パケットがＳＥＡの仮想部分に送信されて受信される。次いで、ＳＥＡは、該データ・パケットを、ＳＥＡの物理部分から外部クライアントに再送信する。この処理方法は、従来式のネットワーキング・アプローチに依って（仮想のまたは物理的なあるいはその両方の）各アダプタおよびアダプタの関連リソースを相互に独立的に保っている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
共用イーサネット・アダプタを用いる仮想ネットワーク環境において、データのコピー・オペレーションを迂回するための方法、システム、およびコンピュータ・プログラム製品を開示する。
【課題を解決するための手段】
【０００５】
該方法は、データ・パケットをユーザ・スペースから第一論理区画（ＬＰＡＲ）の第一カーネル・スペースにコピーするステップを含む。ハイパーバイザを使って、第二ＬＰＡＲ中の受信側仮想イーサネット・ドライバのマップされたアドレスが要求される。第一マップ・アドレスは、受信側仮想イーサネット・ドライバのバッファに関連付けられる。該データ・パケットは、第一ＬＰＡＲの第一カーネル・スペースから、第二ＬＰＡＲの第二カーネル・スペース中の送り先に直接コピーされる。送り先は、該マップされたアドレスを使って決められる。送り先に直接コピーするステップは、（ｉ）該第一カーネル・スペースから第一ＬＰＡＲの送信側仮想イーサネット・ドライバへのデータ・パケットのコピー・オペレーションと、（ｉｉ）ハイパーバイザを介するデータ・パケットのコピー・オペレーションとを迂回する。受信側仮想イーサネット・ドライバには、該データ・パケットが第二ＬＰＡＲ中の送り先に成功裏にコピーされたことが通知される。
【０００６】
以下の詳細な書面説明において、本発明の上記のおよびさらなる特質が明らかになろう。
【０００７】
以下の図面に示された好適な実施形態を例として参照しながら以降に本発明を説明する。
【図面の簡単な説明】
【０００８】
【図１】本発明を実装することが可能な典型的データ処理システムのブロック図を示す。
【図２】本発明のある実施形態による、仮想イーサネット環境中のプロセシング・ユニットのブロック図を示す。
【図３】本発明のある実施形態による、外部の物理クライアントに送信する内部仮想クライアントを有するプロセシング・ユニットのブロック図を示す。
【図４】本発明のある実施形態による、仮想ネットワーク環境における、データのコピー・オペレーションを迂回するための高レベル・フローチャートを示す。
【図５】本発明の別の実施形態による、共用イーサネット・アダプタを用いる仮想ネットワーク環境における、データのコピー・オペレーションを迂回するための高レベル・フローチャートを示す。
【発明を実施するための形態】
【０００９】
（仮想のまたは物理的なあるいはその両方の）各イーサネット・アダプタおよびイーサネット・アダプタの関連リソースを区分けする場合、（ｉ）ハイパーバイザを介する、仮想化環境中の仮想イーサネット・アダプタ同士の間と、（ｉｉ）ハイパーバイザおよびＳＥＡを介する、仮想イーサネット・アダプタと物理イーサネット・アダプタとの間で、データ・パケットの送信および受信を行うためには相当な数のコピーが必要となる。結果的に、ＳＥＡを用いたかかる仮想ネットワーク環境下で、１５００バイトの最大転送単位（ＭＴＵ：ｍａｘｉｍｕｍ  ｔｒａｎｓｍｉｓｓｉｏｎ  ｕｎｉｔ）を有する１０ギガ・ビットのイーサネット（１０ＧｂＥまたは１０ＧｉｇＥ）ライン速度の規格で送信達成するのは困難である。加えて、データ・パケット処理の増加と相まったオペレーティング・システム（ＯＳ）またはデバイスの間接参照あるいはその両方によって、中央演算ユニット（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）の使用率とデータ・パケットあたりの全体的待ち時間の増大が生じる。本発明は、さまざまなコピー・オペレーションを効果的に迂回することによって、上記のような影響を回避する。
【００１０】
次いでこれらの図面、具体的に図１を参照すると、本発明の好適な実施形態が実装可能なデータ処理システム（ＤＰＳ：ｄａｔａ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ）１００のブロック図が示されている。説明目的の上で、該データ処理システムは、サーバ・コンピュータに一般的な機能を備えるものとして描かれている。しかしながら、本明細書で用いる用語「データ処理システム」は、コンピュータ・システムだけでなく、通信デバイス（例、ルータ、スイッチ、ページャ、電話、電子書籍、電子雑誌および新聞など）、並びに個人および一般家庭用デバイス（例、手持ちコンピュータ、ウェブ対応テレビジョン、ホーム・オートメーション・システム、マルチメディア視聴システムなど）のデバイスを含め、ソフトウエア製品を受信、格納、実行することのできる任意の種類のコンピューティング・デバイスまたはマシンを包含するものと意図されている。
【００１１】
図１および以下の説明は、本発明を実装するのに適した典型的データ処理システムの簡明で一般的な説明を提供することを意図している。本発明の各部を、サーバ・コンピュータ内のハードウエアに所在する命令の一般的コンテキストで説明するが、当業者は、本発明が、オペレーティング・システム中で作動するプログラム・モジュールの組み合わせにも実装可能なことを認識するであろう。一般に、プログラム・モジュールは、特定のタスクを遂行する、または特定の抽象データ型を実装する、ルーティン、プログラム、コンポーネント、およびデータ構造を包含する。また、本発明は、分散型コンピューティング環境においても実施することができ、該環境では、通信ネットワークを介してリンクされた遠隔のプロセシング・デバイス群によってタスクが遂行される。分散型コンピューティング環境においては、プログラム・モジュールは、ローカルおよび遠隔のメモリ記憶デバイスの両方に配置することができる。
【００１２】
ＤＰＳ１００は、一つ以上のプロセシング・ユニット１０２ａ〜１０２ｄと、メモリ・コントローラ１０５に連結されたシステム・メモリ１０４と、メモリ・コントローラ１０５をプロセシング・ユニット（群）１０２およびＤＰＳ１００の他のコンポーネントに連結しているシステム相互接続ファブリック１０６とを含む。システム相互接続ファブリック１０６上の命令は、バス・アービタ１０８の制御の下でさまざまなシステム・コンポーネントに伝達される。
【００１３】
ＤＰＳ１００は、第一ハード・ディスク・ドライブ（ＨＤＤ：ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）１１０および第二ＨＤＤ１１２などの記憶媒体をさらに含む。第一ＨＤＤ１１０および第二ＨＤＤ１１２は、入力−出力（Ｉ／Ｏ：Ｉｎｐｕｔ−Ｏｕｔｐｕｔ）インタフェース１１４によって、システム相互接続ファブリック１０６に通信可能に連結されている。第一ＨＤＤ１１０および第二ＨＤＤ１１２は、ＤＰＳ１００に不揮発性記憶装置を提供する。上記のコンピュータ可読媒体の説明はハード・ディスクに言及しているが、当業者は、着脱可能磁気ディスク、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）ディスク、磁気カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ、およびその後に開発された他のハードウエアなど、コンピュータが可読の他の種類の媒体も、該典型的コンピュータ・オペレーティング環境において使用可能であることは十分理解しているはずである。
【００１４】
ＤＰＳ１００は、遠隔コンピュータ１１６など一つ以上の遠隔コンピュータへの論理接続を使いネットワーク環境中で作動することができる。遠隔コンピュータ１１６は、サーバ、ルータ、ピア・デバイス、または他の一般的なネットワーク・ノードとすることができ、通常、ＤＰＳ１００に関して説明したエレメントの多くまたは全部を包含する。あるネットワーク環境において、ＤＰＳ１００が用いるプログラム・モジュールまたはその一部は、遠隔コンピュータ１１６などの遠隔メモリ記憶デバイスに格納しておくことができる。図１に示された論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）１１８を介する接続を含むが、別の実施形態においては、広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含めることもできる。
【００１５】
ＬＡＮネットワーキング環境で用いられる場合、ＤＰＳ１００は、ネットワーク・インタフェース１２０などの入力／出力インタフェースを介してＬＡＮ１１８に接続される。示されたネットワーク接続は典型例であって、これらコンピュータの間の通信リンクを確立する他の手段を用いることも可能なことはよく理解されよう。
【００１６】
示された例は、現在説明している実施形態または本発明全般、あるいはその両方に対するアーキテクチャ上のまたは他の限定を意味するものではない。図１に示されたデータ処理システムは、例えば、ＡＩＸ（ＩＢＭの登録商標）オペレーティング・システムまたはＬＩＮＵＸ（Ｒ）オペレーティング・システム上で作動する、ＩＢＭ（ＩＢＭの登録商標）のｅＳｅｒｖｅｒ  ｐＳｅｒｉｅｓ（ＩＢＭの登録商標）システムとすることができる。（ＩＢＭ、ｅＳｅｒｖｅｒ、ｐＳｅｒｉｅｓ、およびＡＩＸは、米国または他の国あるいはその両方におけるＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標であり、Ｌｉｎｕｘは、米国または他の国あるいはその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標である。）
【００１７】
次に図２を参照すると、本開示のある実施形態による、論理区画（ＬＰＡＲ）されたプロセシング・ユニット中の仮想ネットワーキング・コンポーネントが示されている。これは、仮想イーサネット（ＶＥ）が、同一の物理システム内に包含されている仮想オペレーティング・システム（ＯＳ）インスタンス群（またはＬＰＡＲ群）の間の通信を可能にする。ＬＰＡＲ２００およびその関連リソースのセットは、各々、カーネル・スペース２０４に所在する自分用のＯＳインスタンスおよびユーザ・スペース２０２に所在するアプリケーションを用いる独立したコンピューティング・プロセスとして、独立的に作動することができる。生成可能なＬＰＡＲの数は、ＤＰＳ１００のプロセッサ・モデルおよび利用可能なリソースの如何による。通常、ＬＰＡＲ群は、データベース・オペレーションまたはクライアント／サーバ・オペレーション、あるいはテスト環境とプロダクション環境とを分離するなど、各種の用途に用いられる。各ＬＰＡＲは、仮想ＬＡＮ２１２を介して、他のＬＰＡＲとあたかも各ＬＰＡＲが互いに別個のマシンに在るかのように通信することができる。
【００１８】
示された例では、プロセシング・ユニット１０２ａは２つの論理区画（ＬＰＡＲ）２００ａおよび２００ｂを実行している。ＬＰＡＲ２００ａおよび２００ｂは、それぞれユーザ・スペース２０２ａおよびユーザ・スペース２０２ｂを含む。ユーザ・スペース２０２ａとユーザ・スペース２０２ｂとは、それぞれカーネル・スペース２０４ａとカーネル・スペース２０４ｂとに通信可能にリンクされている。一つの実施形態によれば、ユーザ・スペース２０２ａは、カーネル・スペース２０４ａ中のスタック２０６にデータをコピーする。スタック２０６中に格納されたデータを、ＬＰＡＲ２００ｂの中の意図された受け手に転送するために、データは、ＬＰＡＲ２００ｂのバッファのバス（またはマップされた）・アドレスに、マップまたはコピーされる。
【００１９】
ＬＰＡＲ２００ａおよび２００ｂ内で、仮想イーサネット・ドライバ２０８ａおよび２０８ｂが、ＬＰＡＲ２００ａと２００ｂとの間でのデータの転送を管理する。仮想イーサネット・ドライバ２０８ａおよび２０８ｂの各々は、仮想イーサネット・ドライバ２０８ａと２０８ｂとの間でデータ・パケットを送信または受信あるいはその両方を行うために、それ自体の送信データ・バッファおよび受信データ・バッファを有する。データ・パケットをＬＰＡＲ２００ａからＬＰＡＲ２００ｂに転送するとき、仮想イーサネット・ドライバ２０８ａはハイパーバイザ２１０を呼び出す。ハイパーバイザ２１０は、仮想化イーサネット環境内のさまざまなリソースを管理するように作られている。ＬＰＡＲ２００ａおよび２００ｂ両方の生成、並びに、ＬＰＡＲ２００ａと２００ｂとへのプロセッサ１０２ａおよびデータ処理システム１００のリソースの割当は、ハイパーバイザ２１０によって制御される。
【００２０】
仮想ＬＡＮ２１２は、仮想イーサネット（ＶＥ）技術の一例であり、該技術は、同じシステム上のＬＰＡＲ群の間でインターネット・プロトコル（ＩＰ：ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）ベースの通信を可能にする。仮想ＬＡＮ（ＶＬＡＮ：Ｖｉｒｔｕａｌ  ＬＡＮ）技術はＩｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  ＥｎｇｉｎｅｅｒｓのＩＥＥＥ  ８０２．１Ｑ規格に記載されており、該規格は参照により本明細書に組み込まれる。ＶＬＡＮ技術は、レイヤ２接続性が同じＶＬＡＮに属する構成体に対するものに限定されるようにして、物理ネットワークを論理分割する。この分割は、イーサネット・データ・パケットにＶＬＡＮ構成体の情報をタグ付けし、次いで所与のＶＬＡＮの構成体への配送に限定することによって実現される。
【００２１】
ＶＬＡＮタグに包含されるＶＬＡＮ構成体の情報は、ＶＬＡＮ  ＩＤ（ＶＩＤ）と呼ばれる。デバイスは、そのデバイスに対するＶＩＤによって指定されたＶＬＡＮの構成体として設定される。仮想イーサネット・ドライバ２０８ａおよび２０８ｂはかかるデバイスに含まれる。例えば、仮想イーサネット・ドライバ２０８ａは、仮想イーサネット・ドライバ２０８ｂなどＶＬＡＮ２１２の他の構成体に、デバイスＶＩＤを使って識別される。
【００２２】
本発明のある好適な実施形態によれば、仮想イーサネット・ドライバ２０８ｂは、直接データ・バッファ（ＤＤＢ：ｄｉｒｅｃｔ  ｄａｔａ  ｂｕｆｆｅｒ）群２１６のプール２１４を格納する。ＤＤＢ２１６は、受信側ＶＥデータ・バッファ（すなわち、データ・パケットの意図された受け手）のアドレスをポイントするバッファである。ＤＤＢ２１６は、ＶＥドライバ２０８ａによるハイパーバイザ２１０の呼び出しを介して、スタック２０６に提供される。スタック２０６は、カーネル・スペース２０４ａから直接にＤＤＢ２１６中へのコピー・オペレーションを遂行する。このオペレーションは、２つの別個のコピー／マッピング、（１）カーネル・スペース２０４ａから仮想イーサネット・ドライバ２０８ａへのコピー／マップと、（２）その後の、ハイパーバイザ２１０による、送信側ＶＥドライバ２０８ａから受信側ＶＥドライバ２０８ｂへのデータ・パケットのコピー・オペレーションとを迂回する。上記（２）については、パケット・データは、スタック２０６によって、ＤＤＢ２１６がポイントするアドレスを有する事前マップされたデータ・バッファ中に既にコピーされているので、ハイパーバイザ２１０によるコピー・オペレーションは必要ない。しかして、ＶＥドライバ２０８ａが、ハイパーバイザ２１０を介し、受信側ＶＥドライバ２０８ｂ中の、マップされた、受信データ・バッファのアドレスを取得して、ＶＥドライバ２０８ａがＬＰＡＲ２００ｂ中の該マップされた受信データ・バッファの中に直接コピーすれば、ＶＥドライバ２０８ａは、受信側ＶＥドライバ２０８ｂ中の、ＤＤＢ２１６によって参照されたメモリ域中に効果的に書き込み完了することになる。
【００２３】
次に図３を参照すると、本開示のある実施形態による、論理区画されたプロセシング・ユニットの複数のＬＰＡＲによって共用される物理イーサネット・アダプタが示されている。ＤＰＳ１００は、ＬＰＡＲ２２０ａとＬＰＡＲ２００ｂとに論理区画されたプロセシング・ユニット１０２ａを含む。また、ＬＰＡＲ２００ｂは仮想Ｉ／Ｏサーバ（ＶＩＯＳ）３００を実行し、該サーバは、各区画がネットワーク・アダプタを所有する必要なく、ＬＰＡＲ２００ａおよび２００ｂに、ネットワーク、ディスク、および他へのアクセスを提供するカプセル化されたデバイス・パーティションを提供する。ＶＩＯＳ３００のネットワーク・アクセス・コンポーネントは、共用イーサネット・アダプタ（ＳＥＡ）３１０である。ＳＥＡ３１０を参照しながら本発明を説明しているが、本発明は、Ｉ／Ｏインタフェース１１４など、任意の周辺機器アダプタまたは他のデバイスにも同様に適合する。
【００２４】
ＳＥＡ３１０は、物理ネットワーク・アダプタ・インタフェース１２０または物理アダプタの集合体と、ＶＩＯＳ３００上のＶＬＡＮ２１２の一つ以上とをブリッジする役割をする。ＳＥＡ３１０は、ＶＬＡＮ２１２上のＬＰＡＲ２００ａおよび２００ｂが、物理ネットワーク３３０を介した外部クライアント３２０へのアクセスを共用することができるように構成されている。ＳＥＡ３１０は、ハイパーバイザ２１０を介して、ＶＬＡＮ２１２を物理ネットワーク３３０中の物理ＬＡＮに接続し、これらのＬＡＮに連結されたマシンおよび区画が、同じＶＬＡＮの構成体として切れ目なく作動することを可能にすることによって、このアクセスを提供している。ＳＥＡ３１０は、ＤＰＳ１００のプロセシング・ユニット１０２ａ中のＬＰＡＲ２００ａおよび２００ｂが、外部クライアント３２０とのＩＰサブネットを共用することを可能にする。
【００２５】
ＳＥＡ３１０は仮想アダプタと物理アダプタとの対を含む。ＳＥＡ３１０の仮想サイドでは、ＶＥドライバ２０８ｂがハイパーバイザ２１０と通信する。ＶＥドライバ２０８ｂはＤＤＢ３１６のプール３１４を格納する。ＤＤＢ３１６は、物理イーサネット・ドライバ３１２の送信データ・バッファ（すなわち、データ・パケットの意図された場所）のアドレスをポイントするバッファである。ＳＥＡ３１０の物理サイドでは、物理イーサネット・ドライバ３１２が物理ネットワーク３３０とインタフェース接続する。しかしながら、ＬＰＡＲ２００ａがその仮想環境を脱して物理環境と通信可能になる前に、仮想クライアントはＶＩＯＳ３００とインタフェース接続しなければならないので、物理イーサネット・ドライバ３１２の物理送信データ・バッファが、受信側ＶＥドライバ２０８ｂにおいて受信データ・バッファとしてマップされる。しかして、受信側ＶＥドライバ２０８ｂがＶＥドライバ２０８ａから、物理イーサネット・ドライバ３１２の物理送信データ・バッファに事前マップされたデータ・パケットを受信すれば、受信側ＶＥドライバ２０８ｂは、物理イーサネット・ドライバ３１２中の、ＤＤＢ３１６によって参照されたメモリ域に効果的に書き込み完了することになる。ＶＩＯＳ３００は、受信側ＶＥドライバ２０８ｂにあるデータ・パケットを、物理イーサネット・ドライバ３１２を管理する別のドライバに転送する。
【００２６】
このオペレーションは、３つの別個のコピー／マッピング・オペレーション、（１）カーネル・スペース２０４ａから仮想イーサネット・ドライバ２０８ａへのコピー／マップ、（２）その後の、ハイパーバイザ２１０による、送信側ＶＥドライバ２０８ａからハイパーバイザ２１０を介する受信側ＶＥドライバ２０８ｂへのデータ・バッファのコピー・オペレーション、および（３）その後の、受信側ＶＥドライバ２０８ｂからＳＥＡ３１０を介した物理イーサネット・ドライバ３１２へのデータ・バッファのコピー・オペレーション、を迂回する。
【００２７】
次いで図４を参照すると、本発明の例示の好適な実施形態による、仮想ネットワーク環境においてデータ・コピー・オペレーションを迂回するための典型的プロセスのフローチャートが示されている。これについては図２に示されたエレメントを参照する。該プロセスは開始ブロック４０１から始まり、データ・パケットが、内部仮想クライアント（すなわち、ＬＰＡＲ２００ａ）のユーザ・スペース２０２ａからカーネル・スペース２０４ａにコピーされることを示すブロック４０２に続く。次いで、ブロック４０４に示されるように、仮想イーサネット（ＶＥ）ドライバ２０８ａは、ＶＥドライバ２０８ｂの、マップされた、受信データ・バッファのアドレスを要求する。このステップは、ＶＥドライバ２０８ａによるデータ・パケット送信要求に応じて行われる、ＶＥドライバ２０８ａによるハイパーバイザ２１０の呼び出しを介して遂行される。ハイパーバイザ２１０は、ＶＥドライバ２０８ｂから直接データ・バッファ（ＤＤＢ）２１６を取得する。ＤＤＢ２１６は、データ・パケットの送信先として意図された、ＬＰＡＲ２００ｂ中のバッファのアドレスを含む。ハイパーバイザ２１０は、該意図された受信データ・バッファのアドレスをＶＥドライバ２０８ａに伝達し、該受信データ・バッファのアドレスは、カーネル・スペース２０４ａ中のスタック２０６に手渡される。受信データ・バッファがＶＥドライバ２０８ａに伝達されたならば、プロセスは、ブロック４０６に続き、該ブロックには、カーネル・スペース２０４ａ中のＶＥドライバ２０８ａが、データ・パケットを、スタック２０６から受信側ＶＥドライバ２０８ｂの、マップされた、受信データ・バッファのアドレスに、直接にコピーするのが示されている。次いで、ＶＥドライバ２０８ａは、ハイパーバイザ２１０を呼び出して、受信側ＶＥドライバ２０８ｂに、マップされた受信データ・バッファへのデータ・コピーが成功したことを通知する（ブロック４０８）。しかる後、ブロック４１０において該プロセスは終了する。
【００２８】
次に図５を参照すると、本発明の例示の好適な実施形態による、共用イーサネット・アダプタ（ＳＥＡ）を用いた仮想ネットワーク環境において、データのコピー・オペレーションを迂回するための典型的プロセスのフローチャートが示されている。これについては図３に示されたエレメントを参照する。該プロセスは開始ブロック５０１から始まり、データ・パケットが、内部仮想クライアント（すなわち、ＬＰＡＲ２００ａ）のユーザ・スペース２０２ａからカーネル・スペース２０４ａにコピーされることを示すブロック５０２に続く。次いで、ブロック５０４に示されるように、仮想イーサネット（ＶＥ）ドライバ２０８ａは、受信側ＶＥドライバ２０８ｂの、マップされた、受信データ・バッファの第一アドレスを要求する。このステップは、ＶＥドライバ２０８ａによるデータ・パケット送信要求に応じて行われる、ＶＥドライバ２０８ａによるハイパーバイザ２１０の呼び出しを介して遂行される。ハイパーバイザ２１０は、ＶＥドライバ２０８ｂから直接データ・バッファ（ＤＤＢ）３１６を取得する。
【００２９】
ハイパーバイザ２１０が、ＶＥドライバ２０８ａからの呼び出しを受信した後、ＤＤＢ３１６を取得できるやり方はいろいろある。一つの典型的実施形態によれば、ハイパーバイザ２１０は、ＶＥドライバ２０８ａが対象となるマップされた受信データ・バッファに直接コピーするに先立って、マップされた、受信データ・バッファのアドレスのキャッシュ化サブセットを格納することができる。次いで、ハイパーバイザ２１０は、該キャッシュ化バッファ・アドレスを、仮想イーサネット・ドライバ２０８ａに伝達することができ、該ドライバはデータ・パケットをマップされた受信データ・バッファに直接コピーする。
【００３０】
ＤＤＢ３１６は、データ・パケットの意図された送信先である、ＬＰＡＲ２００ｂ中のバッファのアドレスを含む。データ・パケットを、仮想クライアントからＳＥＡ３１０を介して物理クライアントに転送する場合、ＤＤＢ３１６は、物理イーサネット・ドライバ３１２が所有するバッファをポイントする。これを可能にするため、物理イーサネット・ドライバ３１２の送信データ・バッファの第二マップ・アドレスが、受信側ＶＥドライバ２０８ｂの、マップされた受信データ・バッファにマップされる（ブロック５０６）。このマッピングは、通常、内部仮想クライアントが構成される前、起動時にＶＩＯＳ３００およびＳＥＡ３１０が初期設定される際に行われる。次いで、ハイパーバイザ２１０は、該意図された受信データ・バッファのアドレスをＶＥドライバ２０８ａに伝達し、該受信データ・バッファのアドレスは、カーネル・スペース２０４ａ中のスタック２０６に手渡される。
【００３１】
受信データ・バッファの場所がＶＥドライバ２０８ａに伝達されたならば、プロセスは、ブロック５０８に続き、該ブロックには、カーネル・スペース２０４ａ中のＶＥドライバ２０８ａが、データ・パケットを、スタック２０６からカーネル・スペース２０４ｂ中の第二マップ・アドレスに直接コピーするのが示されている。しかして、ＶＥドライバ２０８ｂがＶＥドライバ２０８ａから、物理イーサネット・ドライバ３１２の物理送信データ・バッファに事前マップされたデータ・パケットを受信すれば、ＶＥドライバ２０８ｂは、物理イーサネット・ドライバ３１２中の、ＤＤＢ３１６によって参照されたメモリ域に効果的に書き込み完了することになる。物理イーサネット・ドライバ３１２ａは、ＳＥＡ３１０を呼び出して、受信側ＶＥドライバ２０８ｂに、意図された物理送信データ・バッファへのデータ・コピーが成功したことを通知する（ブロック５１０）。しかる後、ブロック５１２において該プロセスは終了する。
【００３２】
上記のフロー・チャートにおいて、これら方法の一つ以上は、コンピュータ可読コードを包含するコンピュータ可読媒体中に、該コンピュータ可読コードがコンピュータ・デバイス上で（プロセシング・ユニットによって）実行されたとき一連のステップが遂行されるように、具現される。いくつかのインプリメンテーションにおいては、本発明の精神および範囲から逸脱することなく、これらの方法の特定のプロセスが、組み合わせられ、同時にまたは異なる順序で遂行され、あるいは多分省略される。以上、本方法のプロセスを、特定のシーケンスで説明、例示してきたが、プロセスの特定のシーケンスの使用は、本発明に対するいかなる限定をも意味するものではない。本発明の精神および範囲から逸脱することなく、プロセスのシーケンスに関して変更を加えることができる。従って、特定のシーケンスの使用は、限定する意味合いで捉えるものでなく、本発明の範囲は、添付の請求項およびこれらの同等物に広く適用される。
【００３３】
当業者はよく理解するであろうが、本発明の実施形態は、方法、システムまたはコンピュータ・プログラム製品あるいはこれらの複数として具現することができる。従って、本発明の好適な実施形態は、全体がハードウエアの実施形態、全体がソフトウエアの実施形態（ファームウエア、常駐ソフトウエア、マイクロコードなどを含む）、あるいは、一般に本明細書では全て「回路」、「モジュール」、「ロジック」または「システム」と呼ぶ、ソフトウエアおよびハードウエア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の好適な実施形態は、媒体中または媒体上に具現されたコンピュータ可用プログラム・コードを有するコンピュータ可用記憶媒体中のコンピュータ・プログラム製品の形を取ることもできる。
【００３４】
さらに、よく分かっているように、本発明の好適な実施形態中のプロセスは、ソフトウエア、ファームウエア、マイクロコード、またはハードウエアの任意の組み合わせ用いて実装することができる。本発明の好適な実施形態をソフトウエアで実施する準備ステップとして、通常、（ソフトウエア、ファームウエアを問わず）プログラミング・コードは、固定（ハード）ドライブ、ディスケット、磁気ディスク、光ディスク、磁気テープ、および、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄａｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）／読み取り専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）／プログラム可能読み取り専用メモリ（ＰＲＯＭ：ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）等の半導体メモリ、など一つ以上のマシン可読記憶媒体に格納し、これにより本発明の好適な実施形態による製造品を作製することがある。プログラム・コードを包含する製造品は、直接に記憶デバイスからのコードを実行するか、記憶デバイスからのコードを、ハード・ディスク、ＲＡＭなどの別の記憶デバイスに中にコピーするか、あるいは、デジタルまたはアナログ通信リンクなどの送信型媒体を用いて遠隔実行のためのコードを送信するかして使われる。媒体は、電子的、磁気的、光学的、電磁的、赤外的もしくは半導体のシステム（または装置またはデバイス）あるいは伝播媒体とすることができる。さらに、該媒体は、実行システム、装置、またはデバイスによって、あるいはこれらと組み合わせて用いるためのプログラムを、包含、格納、通信、伝播、または伝送することが可能な任意の装置とすることができる。本発明の好適な実施形態の方法は、説明した実施形態（群）に従ったコードを包含する一つ以上のマシン可読記憶デバイスを、これらに収納された該コードを実行するための適切なプロセシング・ハードウエアと組み合わせることによって遂行することができる。本発明の好適な実施形態を実施するための装置は、本発明の好適な実施形態によってコードされたプログラム（群）を包含するか、または（サーバを介し）これへのネットワーク・アクセスを有する、一つ以上のプロセシング・デバイスおよび記憶システムとすることができよう。一般に、コンピュータ、コンピュータ・システム、またはデータ処理システムという用語は、広義には、メモリ媒体からの命令／コードを実行するプロセッサ（またはプロセシング・ユニット）を有する任意のデバイスを網羅すると定義することができる。
【００３５】
上記では、本発明の好適な実施形態の例示的な実施形態は、インストールされた（または実行可能な）ソフトウエアを備えた完全に機能可能なコンピュータ（サーバ）システムのコンテキストで説明されているが、当業者は、本発明の例示的好適な実施形態のソフトウエア態様は、さまざまな形でプログラム製品として配布することが可能で、本発明の例示的好適な実施形態が、使われる媒体の特定の種類に関わりなく、該配布の実際の施行に適していることをよく理解するであろう。例として、媒体の種類の非排他的なリストには、フロッピー・ディスク、ＵＳＢメモリ、ハード・ディスク・ドライブ、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの記録型（有形）媒体、およびデジタルおよびアナログ通信リンクなどの送信型媒体が含まれる。
【００３６】
典型的実施形態を参照しながら、本発明の好適な実施形態を説明してきたが、当業者は、本発明の範囲から逸脱することなく、そのエレメントにさまざまな変更を加えたり、あるいは同等物によって代替したりすることが可能なのを理解していよう。さらに、特定のシステム、デバイス、またはこれらのコンポーネントに適応させるため、本発明の本質的範囲から逸脱することなく、本発明の教示に多くの修改を加えることもできる。従って、本発明は本発明を実施するため開示された特定の実施形態に限定されるものでなく、本発明は、添付の請求項の範囲に網羅される全ての実施形態を含むものと意図されている。さらに、第一、第二などの用語の使用は、いかなる順序または重要性をも表すものでなく、これら第一、第二などの用語は、一つのエレメントを別のエレメントから区別するために使われている。本明細書での使用において、単数形用語「ある（ａ、ａｎ）」および「該（ｔｈｅ）」は、コンテキストが明確に表している場合を除き、同様に複数も含むものと意図されている。本明細書での使用において、用語「含む（ｃｏｍｐｒｉｓｅｓ）」または「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方は、述べられた特質、整数、ステップ、オペレーション、エレメント、またはコンポーネントあるいはこれらの複数の存在を規定しているが、他の一つ以上の特質、整数、ステップ、オペレーション、エレメント、コンポーネント、またはこれらのグループの存在または追加を除外するものでないとさらに理解する。
【図１】
0005662949.tif 000002
【図２】
0005662949.tif 000003
【図３】
0005662949.tif 000004
【図４】
0005662949.tif 000005
【図５】
0005662949.tif 000006