(57)【要約】  仮想化された計算機システムにおいて仮想ポートの状態を持続する方法が記載されている。分散仮想ポート（ＤＶポート）は持続的な記憶位置に記憶され、ＤＶポートは対応する仮想ポートの状態及び仮想ポートの構成設定を含む。加えて、仮想ポートと仮想ポートに接続している仮想ネットワーク・インタフェ−ス・カード（ＶＮＩＣ）の間の関連は記憶される。ＶＮＩＣに対応する仮想計算機が再起動されると、ＤＶポートからの状態は持続的な記憶位置から新規な仮想ポートに復元される。【選択図】  図３
2011523128.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの仮想計算機（ＶＭ）を有し、仮想化ソフトウェアが前記仮想計算機とシステム・ハードウェアとの間に論理的に配置される、仮想化された計算機システムにおいて仮想ポートの状態を持続する方法であり、各仮想計算機はゲスト・オペレーティングシステム及び少なくとも１つの仮想ネットワーク・インタフェ−ス・カード（ＶＮＩＣ）を含み、前記仮想化ソフトウェアはエミュレーション・ソフトウェア及び仮想スイッチを使用して前記ＶＮＩＣを実行し、前記仮想スイッチは前記ＶＮＩＣの各々に対応する仮想ポートを備え、前記仮想スイッチはＶＮＩＣの間にネットワーク・フレームを転送するように機能し、ゼロ以上の物理的なネットワーク・インタフェ−ス・カード（ＮＩＣ）が前記システム・ハードウェアに接続している方法であって、
分散仮想ポート（ＤＶポート）を持続的な記憶位置に記憶する段階であって、前記ＤＶポートがランタイム状態及び構成設定から成る段階と、
前記ＤＶポートと前記ＤＶポートに接続している前記ＶＮＩＣとの間の関連を記憶する段階と、
前記被接続ＶＮＩＣに対応する前記ＶＭが再起動されると、前記ＤＶポートからの状態を前記持続的な記憶位置から新規な仮想ポートへ復元する段階と、
を含む方法。
【請求項２】
前記ＤＶポートが固有の接続識別子（ＩＤ）を更に含み、前記ＤＶポートと前記ＶＮＩＣとの間の前記関連の前記記憶が、前記仮想計算機が遮断されるか又は停止すると前記ＶＮＩＣ状態と共に前記接続ＩＤを記憶する段階を含む請求項１記載の方法。
【請求項３】
前記仮想化された計算機システムがホストの管理されたコレクションの内の１つであり、１つのホストで前記ＶＭが遮断されるか又は停止され、その後に前記１つのホストと異なるホストで再起動される請求項１記載の方法。
【請求項４】
前記仮想化された計算機システムがホストの管理されたコレクションの内の１つであり、前記コレクション・ホストのための前記仮想ポートのコレクションが分散仮想スイッチを形成する請求項１記載の方法。
【請求項５】
前記分散仮想スイッチが、物理的なローカル・エリア・ネットワーク（ＬＡＮ）に接続しているホストの前記コレクションで動作する前記ＶＭの各々に接続している物理的なスイッチの抽象化として管理される請求項４記載の方法。
【請求項６】
前記持続的な記憶位置が別々のサーバに維持されるデータベースを含む請求項１記載の方法。
【請求項７】
前記別々のサーバが、前記ＶＮＩＣから独立しているネットワークを介してアクセスされる請求項６記載の方法。
【請求項８】
ＤＶポートのコレクションが分散仮想スイッチを形成する請求項１記載の方法であって、
ＶＭの前記ＶＮＩＣからのＤＶポートへの接続の要求を、前記分散仮想スイッチを管理することに関与するデータベース・コントローラに送信する段階と、
前記ＤＶポートが別のＶＮＩＣに現在割り当てられていないと決定して、前記ＤＶポートを初期状態及びデフォルト構成に初期化する段階と、
前記要求に応答して前記ＤＶポートに対応する新しい接続ＩＤを生成し、前記新しい接続ＩＤを前記ＶＮＩＣに送信する段階と、
前記ＤＶポートの前記初期化された状態及びデフォルト構成を、前記ＤＶポートをバックアップする前記仮想ポートに渡し、それにより前記仮想ポートは前記ＤＶポートの前記状態及び構成を仮定する段階と、
前記ＤＶポートを仮想ポートと共に元に戻すために、前記ＶＮＩＣからの前記仮想化された計算機システムのシステム・レベル・ソフトウェアへの要求を送信する段階であって、前記システム・レベル・ソフトウェアは前記ＤＶポートを前記仮想スイッチの仮想ポートと関連付けることによって前記要求に応じる段階と、
前記ＶＮＩＣ及び仮想スイッチがネットワーク・フレームを交換できるように、前記ＤＶポートをバックアップするように構成される前記仮想ポートを前記ＤＶポートが割り当てられる前記ＶＮＩＣにリンクする段階と、
によって、前記ＶＭを前記仮想スイッチに取り付ける段階を更に含む方法。
【請求項９】
前記データベース・コントローラが仮想化された計算機システムと別であるサーバ・コンピュータにある請求項８記載の方法。
【請求項１０】
ＤＶポートのコレクションが分散仮想スイッチを形成し、前記状態の前記復元段階が、
ＤＶポートの接続ＩＤを前記分散仮想スイッチを管理することに関与するデータベース・コントローラに送信する段階と、
前記ＶＭが前記ＤＶポートに割り当てられると決定し、対応して前記ＤＶポートの状態及び構成を前記ＶＭに送信する段階と、
前記ＶＭに割り当てられた前記ＤＶポートをバックアップするために仮想ポートを割り当て、前記仮想ポートに前記ＤＶポートの前記状態及び構成を仮定させる段階と、
前記ＶＮＩＣ及び仮想スイッチがネットワーク・フレームを交換できるように、前記仮想ポートを前記ＤＶポートが割り当てられる前記ＶＮＩＣにリンクする段階と、
を含む請求項１記載の方法。
【請求項１１】
前記ＤＶポートの前記構成を変更する段階と、
前記ＤＶポートのホスト位置及び動作状態に関係なく、前記ＤＶポートの変更を直ちに実行する段階と、
を更に含む請求項１記載の方法。
【請求項１２】
少なくとも１つの仮想計算機（ＶＭ）を有し、仮想化ソフトウェアが前記仮想計算機とシステム・ハードウェアとの間に論理的に配置される、仮想化された計算機システムにおいて仮想ポートの状態を持続する方法を計算機に実行させる機械可読命令を実行する有形の媒体であり、各仮想計算機はゲスト・オペレーティングシステム及び少なくとも１つの仮想ネットワーク・インタフェ−ス・カード（ＶＮＩＣ）を含み、前記仮想化ソフトウェアはエミュレーション・ソフトウェア及び仮想スイッチを使用して前記ＶＮＩＣを実行し、前記仮想スイッチは前記ＶＮＩＣの各々に対応する仮想ポートを備え、前記仮想スイッチはＶＮＩＣの間にネットワーク・フレームを転送するように機能し、ゼロ以上の物理的なネットワーク・インタフェ−ス・カード（ＮＩＣ）が前記システム・ハードウェアに接続している有形の媒体であって、
前記方法は、
分布仮想ポート（ＤＶポート）を持続的な記憶位置に記憶する段階であって、前記ＤＶポートはランタイム状態及び構成設定から成る段階と、
前記ＤＶポートと前記ＤＶポートに接続している前記ＶＮＩＣとの間の関連を記憶する段階と、
前記被接続ＶＮＩＣに対応する前記ＶＭが再起動されると、前記ＤＶポートからの状態を前記持続的な記憶位置から新規な仮想ポートへ復元する段階と、
を含む有形の媒体。
【請求項１３】
前記ＤＶポートが固有の接続識別子（ＩＤ）を更に含み、前記ＤＶポートと前記ＶＮＩＣとの間の前記関連の前記記憶が、前記仮想計算機が遮断されるか又は停止すると、前記ＶＮＩＣ状態と共に前記接続ＩＤを記憶する段階を含む請求項１２記載の有形の媒体。
【請求項１４】
前記仮想化された計算機システムがホストの管理されたコレクションの内の１つであり、前記ＶＭが１つのホストで遮断されるか又は停止され、その後に前記１つのホストと異なるホストで再起動される請求項１２記載の有形の媒体。
【請求項１５】
前記仮想化された計算機システムがホストの管理されたコレクションの内の１つであり、前記コレクション・ホストのための前記仮想ポートのコレクションが分散仮想スイッチを形成する請求項１２記載の有形の媒体。
【請求項１６】
前記分散仮想スイッチが、物理的なローカル・エリア・ネットワーク（ＬＡＮ）に接続しているホストの前記コレクションで動作する前記ＶＭの各々に接続している物理的なスイッチの抽象化として管理される請求項１５記載の有形の媒体。
【請求項１７】
前記持続的な記憶位置が別々のサーバに維持されるデータベースを含む請求項１２記載の有形の媒体。
【請求項１８】
前記別々のサーバが、前記ＶＮＩＣから独立しているネットワークを介してアクセスされる請求項１７記載の有形の媒体。
【請求項１９】
ＤＶポートのコレクションが分散仮想スイッチを形成する請求項１２記載の有形の媒体であって、
前記方法が、
ＶＭの前記ＶＮＩＣからＤＶポートへの接続の要求を前記分散仮想スイッチを管理することに関与するデータベース・コントローラに送信する段階と、
前記ＤＶポートが別のＶＮＩＣに現在割り当てられていないと決定し、前記ＤＶポートを初期状態及びデフォルト構成に初期化する段階と、
前記要求に応答して前記ＤＶポートに対応する新しい接続ＩＤを生成し、前記新しい接続ＩＤを前記ＶＮＩＣに送信する段階と、
前記ＤＶポートの前記初期化された状態及びデフォルト構成を前記ＤＶポートをバックアップする前記仮想ポートに渡し、それにより前記仮想ポートは前記ＤＶポートの前記状態及び構成を仮定する段階と、
前記ＤＶポートを仮想ポートと共に元に戻すために、前記ＶＮＩＣから前記仮想化された計算機システムのシステム・レベル・ソフトウェアへの要求を送信する段階であって、前記システム・レベル・ソフトウェアが前記ＤＶポートを前記仮想スイッチの仮想ポートと関連付けることによって前記要求に応じる段階と、
前記ＶＮＩＣ及び仮想スイッチがネットワーク・フレームを交換できるように、前記ＤＶポートをバックアップするように構成される前記仮想ポートを、前記ＤＶポートが割り当てられる前記ＶＮＩＣにリンクする段階と、
によって、前記ＶＭを前記仮想スイッチに取り付ける段階を更に含む有形の媒体。
【請求項２０】
前記データベース・コントローラが仮想化された計算機システムと別であるサーバ・コンピュータにある請求項１９記載の有形の媒体。
【請求項２１】
ＤＶポートのコレクションが分散仮想スイッチを形成し、前記状態の前記復元段階が、
ＤＶポートの接続ＩＤを前記分散仮想スイッチを管理することに関与するデータベース・コントローラに送信する段階と、
前記ＶＭが前記ＤＶポートに割り当てられると決定して、対応して前記ＤＶポートの状態及び構成を前記ＶＭに送信する段階と、
前記ＶＭに割り当てられた前記ＤＶポートをバックアップするために仮想ポートを割り当てて、前記仮想ポートに前記ＤＶポートの前記状態及び構成を仮定させる段階と、
前記ＶＮＩＣ及び仮想スイッチがネットワーク・フレームを交換できるように、前記仮想ポートを前記ＤＶポートが割り当てられる前記ＶＮＩＣにリンクする段階と、
を含む請求項１２記載の有形の媒体。
【請求項２２】
前記方法が、
前記ＤＶポートの前記構成を変更する段階と、
前記ＤＶポートのホスト位置及び動作状態に関係なく、前記ＤＶポートの変更を直ちに実行する段階と、
を更に含む請求項１２記載の有形の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化された計算機システム用の分散仮想スイッチに関する。
【背景技術】
【０００２】
[0001]仮想計算機（ＶＭ）は、実際の物理的な計算機システムの抽象化―「仮想化」―である。図１は仮想化を実行する計算機システム７０の１つの可能な構成を示す。この構成では、複数のＶＭ２０、．．．２０―ｎは、ホスト１０の仮想化ソフトウェア１５によって抽象化される。本実施例では、仮想化ソフトウェア１５はＶＭカーネル６０及び１つ以上のＶＭモニタ（ＶＭＭ）５０を含む。他の構成は、本技術分野で一般に理解されるように仮想化機能を提供することが可能である。ホスト１０は、通常は、１つ以上のプロセッサ１１、メモリ１３、何らかの形の大量データ記憶装置１４、１つ以上のネットワーク・インタフェ−ス・カード（ＮＩＣ）１７、及びさまざまな他の装置１９を含む。一般に知られている様に、用語「ＮＩＣ」は、それが別々のカードに存在するか、又は主計算機ボードに組み込まれるか否かに関係なく、ネットワーク接続を実行する構成要素を一般に指す。
【０００３】
[0002]各ＶＭ２０、．．．２０―ｎは、仮想システム・ハードウェア２２及びゲスト・システム・ソフトウェア３０の両方を含むと考えられる。仮想システム・ハードウェア２２は、通常は、１つ以上の仮想プロセッサ２８、仮想メモリ２３、少なくとも１つの仮想ディスク２４、及び１つ以上の仮想ネットワーク・インタフェ−ス・カード（ＶＮＩＣ）（１つのみ示される）を含む。１つ以上の追加仮想装置２７、例えば仮想ユーザインタフェース装置、汎用シリアル・バス（ＵＳＢ）ポート、その他を含んでいてもよい。仮想システム・ハードウェア２２は単に仮想化ソフトウェア１５及びホスト１０から離れて存在しない概念化に過ぎないので、それは図１に点線ボックスで示される。この概念化は、単にゲスト・システム・ソフトウェア３０の実行環境の１つの表現に過ぎない。ＶＭ２０の仮想ハードウェア構成要素の全ては、対応する物理的な構成要素をエミュレートするために、公知の技術を使用して仮想化ソフトウェア１５によって実際に実行される。本実施例では、仮想化ソフトウェア１５は、装置エミュレータ５３を各々含む１つ以上のＶＭモニタ（ＶＭＭ）５０を含む。
【０００４】
[0003]ゲスト・システム・ソフトウェア３０は、ＶＮＩＣ２５、仮想ディスク２４、及び他のさまざまな仮想装置２７のために必要に応じて、ゲスト・オペレーティングシステム（ＯＳ）３２及びドライバ３４を含む。ゲストＯＳ３２は、ハードウェア・プラットフォーム（即ち、仮想計算機においてでない）で直接動作するように設計された既製のＯＳでもよく、又は、仮想化ソフトウェア１５の特定の実行により必要とされるか、又は認められていることに応じて、それはパラ仮想化された環境で動作するように特別に変更されたＯＳであってもよい。従って、「仮想化ソフトウェア」という用語は、本願明細書において、完全な仮想化又はパラ仮想化を移植するソフトウェア層を指す。「完全な仮想化」は、いかなる形のソフトウェア構成要素も仮想化されない計算機で見つかるもの以外のゲストに含まれないシステムを指し、従って、ゲストＯＳは、仮想化された環境における使用を支援するために特に含まれる構成要素のない既製の市販ＯＳであってもよい。対照的に、「パラ仮想化された」システムは「完全には」仮想化されない。むしろ、ゲストは、何らかの方法で仮想化を容易にする特定の機能を提供するように構成される。本願明細書の目的のために、「仮想化」という用語は完全及びパラの仮想化の両方を含む。
【０００５】
[0004]ゲスト・オペレーティングシステム３２に加えて、当業者は、ゲストＯＳ及びゲスト・アプリケーション命令の遂行が仮想化ソフトウェア１５及びホスト・プラットフォーム１０を介して発生することを理解するだろうけれども、１つ以上のゲスト・アプリケーション３６はＶＭ２０の「中で」実行される。ゲスト・アプリケーション３６は、ゲスト・オペレーティングシステム３２で動作するように設計されたいかなるタイプのアプリケーションであってもよい。仮想化の技術において一般に理解されるように、ＶＭ２０への及びそれからのユーザー入力及び出力は、仮想化ソフトウェア１５によって遠隔端末（図示せず）へ、又はコンソール・オペレーティングシステム４０で実行される端末アプリケーション（図示せず）により出力先を変更されてもよい。
【０００６】
[0005]仮想化ソフトウェア１５は、１つ以上のソフトウェア構成要素及び／又は層を含むことができ、場合により、「仮想計算機モニタ」（ＶＭＭ）、「ハイパーバイザ」、又は仮想化カーネル（本明細書において、「ＶＭカーネル」と称される）として仮想計算機技術の分野で知られているソフトウェア構成要素の１つ以上を含む。仮想化用語が時間と共に進化し、まだ完全には標準化されていないので、これらの用語は、ソフトウェア層とそれらが参照する構成要素との明白な差異を必ずしも提供しない。本明細書中で使用されているように、用語「仮想化ソフトウェア」は、一般的に、仮想計算機とホスト・プラットフォームとの間に論理的に配置されるソフトウェア層又は構成要素を指すことを意図されている。
【０００７】
[0006]図１に示される仮想化システムにおいて、ＶＭＭ５０は、ＶＭカーネル６０の上に配置されている。ＶＭカーネル６０は、効果的なサポートをＶＭに提供するように特に構成されていてもよく、ホスト１０を形成している物理的な資源及び装置とのインタフェースを直接に（即ち、汎用ホストＯＳ、例えばＬｉｎｕｘ又はＷｉｎｄｏｗｓ（登録商標）を使用しない）とる。ＶＭカーネル６０がゲストＯＳ３２内のカーネルと同じでないことに注意されたい。周知のように、各典型的なオペレーティングシステムはそれ自体のＯＳカーネルを有する。図１に示す構成が一般に「ホストに従属しない（ｎｏｎ−ｈｏｓｔｅｄ）」と称される場合であっても、ＶＭカーネル６０はＶＭのためのホスト・プラットフォームの一部であると考えることができる点にも注意されたい。
【０００８】
[0007]異なる周知の構成（図示せず）において、仮想化ソフトウェア１５は、ＶＭカーネルの代わりに汎用オペレーティングシステム（図示せず）を含むことができる。この種の構成は、ホストＯＳとしての汎用オペレーティングシステムと共に、「ホストに従属する（ｈｏｓｔｅｄ）」仮想化システムと呼ばれることが多い。ホストＯＳは、ＶＭＭと並行して及び時々ＶＭＭの要求で、システムで実行するさまざまなＶＭのための特定の装置入出力（Ｉ／Ｏ）動作を実行するように構成される。この場合、ホストＯＳは、仮想化を可能にする仮想化ソフトウェアの一部であると考えることができる。仮想化ソフトウェアの構成の選択は、即ち、ホストに従属するかどうか、あるいは、それが完全に仮想化されているか又はパラ仮想化されているかは、各タイプの相対的な長所及び短所に基づいてなされ、仮想計算機システムの技術分野の当業者には周知である。
【０００９】
[0008]図２は、ネットワーク・フレームを仮想スイッチ６５を通ってホスト１０―１のネットワーク・インタフェ−ス・カード（ＮＩＣ）１７に送信する、ＶＭ２０―１、２０―２、及びＶＭＭ５０―１、５０―２を例示する。仮想化ソフトウェア１５は、ＶＭ２０―１、２０―２からの仮想ＮＩＣ（ＶＮＩＣ）２５―１、２５―２を経由して、ネットワーク・フレームをホスト計算機１０―１の物理的なＮＩＣ１７に送信する。各ＶＮＩＣ２５―１、２５―２は、仮想スイッチ６５の対応する仮想ポート６２、６４に通信で連結されている。仮想スイッチ６５は、仮想ポート６２、６４の論理的コレクションであり、ＶＮＩＣアドレス、例えば、ＭＡＣアドレスの転送データベース（図示せず）を維持する。各仮想ポート６２、６４、６６は、対応するＶＮＩＣ及びＶＮＩＣへ又はそれからのトラヒックを転送するソフトウェア構成要素のための論理的ランデブー・ポイントである。このように、仮想スイッチ６５は、ＶＮＩＣ２５―１、２５―２、及びＮＩＣ１７へ／から送信されるネットワーク・フレームをどのように何処へ送るかを決定する。このように、仮想スイッチ６５は、複数のＶＭがゼロ、１、又は複数の物理的なＮＩＣを共有できるソフトウェアブリッジとして機能する。例えば、ゼロ（即ち、無し）の物理的なＮＩＣがホスト１０―１にインストールされる場合は、仮想スイッチ６５は、ホスト１０―１で動作するＶＭ２０―１、２０―２に接続する仮想ネットワークとして機能できる。
【００１０】
[0009]各ＶＮＩＣ２５―１、２５―２は、仮想化ソフトウェア１５によってネットワーク・アクセスを必要とするＶＭ２０―１、２０―２に示される、エミュレートされたネットワーク装置である。このように、仮想スイッチ６５は、仮想スイッチ６５に接続し、場合によって１つ以上の物理的なＮＩＣを経由して物理ネットワークにブリッジする、ＶＮＩＣ２５―１、２５―２間のトラヒックの転送を処理する。一般に、仮想スイッチは、ネットワーク・フレームのヘッダに基づいて、フレームが局所的に予定されるか否かについて決定でき、それが局所的に予定される場合は、仮想計算機はフレームを受信しなければならない。ネットワーク管理者は、通常、これらの特徴を構成するために仮想スイッチ６５を管理することを要求される。仮想スイッチ６５の数は、それらの物理的に対応する物の数より通常は多いので、ネットワーク管理者は、多くの仮想スイッチ６５を構成する反復作業を実行することを要求されることがある。
【００１１】
[0010]仮想化技術の１つの長所は、それによってＶＭが１つのホストのＶＭの電源を切るか又は停止し、異なる物理的なホストのＶＭの電源を入れるか又は再開することによって、１つの物理的なホストから別のホストへ移行できるようにすることである。この文脈において、「停止（ｓｕｓｐｅｎｄｉｎｇ）」は、ＶＭが仮想化ソフトウェアによって一時的又は永久に休止させられるという実行を指す。ＶＭの実行は、それが「動作している（ｒｕｎｎｉｎｇ）」場合であっても、頻繁に停止される点に留意する必要がある。ＶＭは、例えば、別の共同動作ＶＭの実行が進行できるために瞬間的に停止されることがある。対照的に、ＶＭの「電源を切る（ｐｏｗｅｒｉｎｇ  ｏｆｆ）」ことは、物理的な機械の電源切断手順を仮想化することを指す。物理的な計算機と同様に、ＶＭは、各プロセスが差し迫った電源切断をＯＳにより通知される秩序立った方法で電源を切ることができ、各開いたアプリケーションがそのデータを保存して終了することを可能にし、又は電源切断は電源遮断をシミュレーションすることにより実行でき、その場合、全ての動作プロセスは終了され、動作プロセスと関連した保存されていないデータ又は状態も失う。ＶＭの電源を切った後に、実行の再開は、通常、ゲストＯＳを再起動し、アプリケーションを再開することを必要とするが、停止されたＶＭの実行を再開することは、ＶＭに状態を再ロードして、実行を再開することを必要とする。
【００１２】
[0011]ＶＭが停止されると、プロセスは休止し、そのメモリ内容、レジスタの設定、仮想装置状態、その他を含むＶＭの状態をディスクに書き込むことができる。図２に示される実施例において、矢印７５により表されるように、ＶＭ２０―２は、ホスト１０―１のＶＭ２０―２を停止するか又は電源を切って、ホスト１０―２のＶＭ２０―２を再開するか又は電源を入れることにより移行できる。従って、「移行（ｍｉｇｒａｔｉｏｎ）」という用語は、あるホストＶＭを停止するか又は電源を切って、異なるホストのＶＭを再開するか又は電源を入れることによって、あるホストから別のホストへＶＭを移動するプロセスを指す。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
[0012]残念なことに、ＶＭをあるホストから別のホストへ移行することは、移行されるＶＭのためのＶＮＩＣと関連した状態の多少の損失を伴うことがある。従来は、ＶＭ２０―２がホスト１０―１からホスト１０―２へ移行される（矢印７５により示されるように）と、ＶＮＩＣエミュレータ５５―２と仮想ポート６４との接続５６は、×印５２により示されるように、失われ、新規な接続５８が、ＶＮＩＣエミュレータ５５―３とホスト１０―２の仮想化ソフトウェア１５´により実行される仮想スイッチ６５´の仮想ポート６６との間に確立される。ＶＮＩＣ２５―２に関連したＭＡＣアドレス及び他の状態情報は、ＶＭ２０―２を形成している仮想装置の属性の一部としてＶＮＩＣ２５―３へ転送でき、その結果、再開されたＶＭ２０―２は、ネットワークのその位置を維持する。しかしながら、ＶＭ２０―２は更に、ホスト１０―２の仮想スイッチ６５´の仮想ポート６６に接続し、類似のネットワーク接続性を提供するために新規なポート６６を仮定するが、仮想ＮＩＣ装置２５―２（例えば、ＭＡＣアドレス、放送／マルチキャスト・フィルタ等）に特に関連していない状態のいかなる保存についても仮定をしない。このように、このＶＭ移行プロセスの内に、仮想スイッチポート６４に蓄積できる状態情報は、通常は失われる。
【００１４】
[0013]これらのこれまで認められていない問題に加えて、ネットワーク管理者が仮想ネットワークを見て、及び／又は再構成することを試みる間にＶＭが移行している場合は、スイッチの観点から仮想ネットワークを見ているネットワーク管理者は、協力するための一貫したトポロジを有しない。
【課題を解決するための手段】
【００１５】
仮想化された計算機システムにおいて、仮想ポートの状態を持続する方法が本願明細書に記載されている。いくつかの実施形態では、分散仮想ポート（ＤＶポート）は持続的な記憶位置に記憶され、ＤＶポートは対応する仮想ポートの状態及び仮想ポートの構成設定を含む。加えて、仮想ポートと仮想ポートに接続している仮想ネットワーク・インタフェ−ス・カード（ＶＮＩＣ）との間の関連が記憶される。ＶＮＩＣに対応する仮想計算機が再起動されると、ＤＶポートの状態は持続的な記憶位置から検索され、新規な仮想ポートに適用される。
【図面の簡単な説明】
【００１６】
【図１】[0014]図１は、ホストとして働かない仮想化されたシステムを例示する。
【図２】[0015]図２は、ネットワーク・フレームを仮想スイッチを通してシステム・ハードウェアのネットワーク・インタフェ−ス・カード（ＮＩＣ）に送信するＶＭ及びＶＭＭを例示する。
【図３】[0016]図３は、一実施形態による、分散仮想スイッチ（ＤＶスイッチ）を例示する。
【図４】[0017]図４は、一実施形態による、どのようにＤＶスイッチの分散仮想ポート（ＤＶポート）が構成されるかについて例示する。
【図５】[0018]図５は、一実施形態による、どのようにＤＶスイッチがＶＭ移行の間にＶＮＩＣと仮想スイッチの間の接続を再構成するかについて例示する。
【図６】[0019]図６は、一実施形態による、ＤＶスイッチを作成し、削除するプロセスを例示する。
【図７】[0020]図７は、一実施形態による、ＤＶスイッチのＤＶポートにＶＮＩＣを接続するか又は分離するプロセスを例示する。
【図８】[0021]図８は、一実施形態による、ＶＭ移行の間のＤＶポート移行のためのプロセスを例示する。
【図９】[0022]図９は、一実施形態による、ホストの電源を切ってから入れる間に、ＤＶスイッチを再構成するプロセスを例示する。
【発明を実施するための形態】
【００１７】
[0023]ここで、いくつかの実施形態に対する参照が詳細に為され、その実施例は添付図に示される。どこで使用されようとも、類似又は同類の参照番号が図において使用でき、類似又は同類の機能を示すことができることが留意される。図は説明の目的のためのみに実施形態を表す。当業者は、以下の説明から、本願明細書において例示される構成及び方法の他の実施形態が本願明細書において記載されている原理を逸脱しない範囲で使用できると容易に認めるであろう。
【００１８】
[0024]図３は、一例として、仮想化された計算機システムの管理されたコレクション３００を例示する。分散仮想スイッチ（ＤＶスイッチ）は、一実施形態に従うＤＶスイッチ構成要素３５０Ａ、３５０Ｂ、及び３５０Ｃを含む。本願明細書において、用語「分散された（ｄｉｓｔｒｉｂｕｔｅｄ）」は、ある物理的なホストから別のホストに移行するか、又はホスト計算機の管理されたコレクションにおいて複数のホストにまたがることがあるオブジェクトを説明するために用いられる。従って、ＤＶスイッチは、管理されたコレクションの類似の仮想スイッチ６０２、６０２′を単一の論理的構成可能な実体に結び付けるソフトウェア抽象化である。図３は、説明のためにのみ、単一のＶＭ３２０、３２０′のみを各々有する２つのホスト１００−１、１００−２、及び対応するＶＮＩＣエミュレータ３０１−１、３０１−２のみを表わす。ＤＶスイッチは、いかなる数のＶＭも各々有する、更にはいかなる数のＶＮＩＣも各々有する、いかなる数のホストにも及ぶことができ、そのいずれかは個々のホストの利用できるハードウェア資源によって、総計で制限できることを認識するべきである。
【００１９】
[0025]ＤＶスイッチは、ソフトウェア抽象化として、分散した形で様々なハードウェアにあり、それゆえに用語は「分散」仮想スイッチ。例えば、ＤＶスイッチ構成要素３５０Ａ、３５０Ｂ、及び３５０Ｃは、ホスト１００―１、１００―２、及びデータベース３７０にある。ＤＶスイッチ構成要素３５０Ａ、３５０Ｂ、及び３５０Ｃは図３に示され、点線ボックスは、ＤＶスイッチを形成するＤＶスイッチ３５０Ａ、３５０Ｂ、及び３５０Ｃの部分を示している。これらの構成要素に加えて、ＤＶスイッチ機能を実行する論理は、後でより詳しく述べるように仮想化ソフトウェア６００及びデータベース・コントローラ３７２に位置する。
【００２０】
[0026]図３に示すように、単一の仮想ポート６５２、６５４は、各ＶＮＩＣ２１５―１、２１５―２のためにそれぞれ維持される。各ＶＮＩＣエミュレータ３０１―１、３０１―２は、データをＶＭ３２０、３２０′へ／から送受信するために、ＶＭの２００−１、２００−２のＮＩＣドライバー２２４−１、２２４−２と相互に作用する。例えば、各ＶＮＩＣエミュレータ３０１―１、３０１―２は、各ＶＭ３２０、３２０′の１つ以上のＶＮＩＣの状態を維持できる。あるいは、ＶＮＩＣエミュレータ３０１―１、３０１―２（各ホストのために１つだけ示される）は、仮想化ソフトウェア層内で複数のインスタンスを生成できる。いずれにせよ、単一のＶＭは１つ以上のＶＮＩＣを有していてもよく、それは１つ以上のＶＮＩＣエミュレータにより実行できる。説明のために、図３は、各ＶＭのための１つのみのＶＮＩＣ、及び各ホストのための１つのみのＶＭを示す。当業者は、ＶＮＩＣ２１５―１、２１５―２についての本願明細書における議論が、実際のところ、各ＶＮＩＣエミュレータ３０１―１、３０１―２により行われて維持される、ＶＮＩＣ状態に関する議論であることを認識するだろう。上述のように、ＶＮＩＣＳ２１５―１、２１５―２等の仮想装置は、ＶＭ２００―１、２００―２の一部として述べるのに便利であるが、実際にはエミュレータ３０１―１、３０１―２を用いて仮想化ソフトウェア６００、６００′により実行される。しかしながら、各ＶＭ２００―１、２００―２の状態はその仮想装置の状態を含み、それは根底にある仮想化ソフトウェア６００、６００′により制御され、維持される。ＶＭが停止されるか、又は遮断されて、移行する時に、その状態（それはいかなるＶＮＩＣＳのＭＡＣアドレス等のネットワークの設定も含む）はＶＭと共に移行する。
【００２１】
[0027]同じ物理ネットワーク４４２に接続している類似の仮想スイッチ６０２、６０２′は、１つのＤＶスイッチを用いて管理される。物理ネットワーク４４２は、例えば、ローカル・エリア・ネットワークでもよい。図３において、ＤＶスイッチは分散仮想ポート（ＤＶポート）３５２、３５４を含む。ＤＶポートは、対応する仮想ポートの「個性（ｐｅｒｓｏｎａｌｉｔｙ）」（構成及びランタイム状態の両方）をカプセル化するソフトウェア抽象化である。このように、ＤＶポート３５２は、仮想スイッチ６０２の仮想ポート６５２の構成及びランタイム状態を表わす１つ以上のデータ構造を含む。同様に、ＤＶポート３５４は、仮想スイッチ６０２′の仮想ポート６５４の構成及びランタイム状態を表わす１つ以上のデータ構造を含む。ＤＶポートはネットワーク管理者によってあらかじめ定義された構成で作成される。仮想ポート６５２、６５２′は作成されて、ブランクの構成状態から始めるが、一旦ＤＶポートに関連すると、関連するＤＶポートの構成及びランタイム状態を仮定する。ＶＭが移行されるか又は電源をオンオフされる時、ＤＶポートが持続して、それが接続されるＶＭで移行するので、ＤＶポートと仮想ＮＩＣとの間の「接続」は影響を受けない。
【００２２】
[0028]「接続（ｃｏｎｎｅｃｔｉｏｎ）」という用語は、仮想ＮＩＣのＤＶポートとの関連を説明するために、本願明細書において使われる。一実施形態において、この関連は、仮想化ソフトウェア６００、６００′によって局所的に、及び後でより詳しく述べるように、テーブル又はデータベース３７０内の他のデータ構造に維持される。ＤＶポートへの接続が発生する時には、別の仮想ＮＩＣは、既に接続されていた仮想ＮＩＣを明確に分離せずにそのＤＶポートに接続できない。「リンク・アップ」という用語は、仮想ＮＩＣ及び仮想ポートがフレームを送受信する準備ができている状態を説明するために、本願明細書において使われる。仮想ＮＩＣ及び仮想ポートがこのリンク・アップ状態で一致する場合かつその場合に限り、ネットワーク・トラフィックは仮想スイッチによって仮想ＮＩＣへ／から転送できる。「フィルタ（ｆｉｌｔｅｒ）」という用語は、仮想ポートと仮想ＮＩＣとの間で入出力（Ｉ／Ｏ）経路に配置するソフトウェア構成要素を説明するために、本願明細書において使われることに注意されたい。「フォワーディング・エンジン」という用語が、層２ハードウェアアドレス（例えば、ＭＡＣ受取人）を仮想ポートにマップするテーブルを作成し維持し、それらのテーブルに基づいてフォワーディング判断をすることが可能なソフトウェア構成要素を説明するために、本願明細書において使われる。
【００２３】
［ＤＶスイッチ及びＤＶポート状態管理］
[0029]ＤＶスイッチ３５０及びそのＤＶポート３５２、３５４は、ホスト１００―１、１００―２の管理された領域の物理的なＮＩＣ１７２、１７２′が利用できなければならない物理的な資源に基づいて生成される。一旦生成されると、データベース３７０はＤＶスイッチ３５０及びＤＶポート３５２、３５４の状態を記憶する。データベース３７０は、物理ネットワーク４４２を経由してホスト１００―１、１００―２に接続しているデータベース・コントローラ３７２に設けられてあってもよい。他の実施形態では、第２物理ネットワーク（図示せず）は、各ホスト１００―１、１００―２にインストールされた第２ＮＩＣ（図示せず）を経由してデータベース・サーバ３７４をホスト１００―１、１００―２に接続して、データベース・サーバ３７４を、機密保護を脅かす可能性があるネットワーク資源（例えば、インターネット）から更に分離する。従って、管理された領域のホスト１００―１、１００―２はデータベース３７０にアクセスする。管理された領域は、データベース３７０のインスタンスによってカバーされるホスト１００―１、１００―２のコレクションである。所与のＤＶスイッチ３５０に大域的である状態の場合は、データベース３７０は、読出し専用コピーを、管理された領域のホスト１００―１、１００―２の各々の方にプッシュする。ホスト１００―１、１００―２がデータを変更する必要はなく、それに対する更新は稀であるので、すべてのホスト１００―１、１００―２に対する更新をプッシュすることは、容認できないオーバーヘッドを積極的に導入しない。しかしながら、所与のＤＶポート３５２、３５４に特有である状態は、ＤＶポートのピア仮想ポート６５２、６５４が位置するホストによって変更させられることを必要とし、更新は頻度が高い。このように、データベース３７０は、ＤＶポート状態を必要なホストの方にのみプッシュし、状態の更新のためにそのホストを周期的に、且つ特定の重要な事象周辺でポーリングする。データベース３７０に永久に記憶されることに加えて、あるＤＶスイッチ状態は、データベース３７０との不必要な通信を回避するために、管理された領域の各ホストにキャッシュされてもよい。データベース３７０にあるプロセスは、関連した更新を、管理された領域の各ホストの局所記憶装置３５８、３５８′の方にプッシュする役割を果たす。フレーズ「局所記憶装置（ｌｏｃａｌ  ｓｔｏｒａｇｅ）」は、ホストが容易にアクセス可能であるデータ記憶デバイス又はシステムを反映するために、本願明細書において広く解釈されなければならない。一実施形態において、ホスト１００―１、１００―２は、それらの局所記憶装置３５８、３５８′が最新であり、それらが局所記憶装置に対して為すいかなる更新も、データベース・コントローラ３７２のデータベース・サーバ・プロセスによって、タイムリーにデータベース３７０に取り戻されると常に仮定する。データベース３７０がオフラインであるか、又はホストがデータベース３７０との接続性を失うという場合には、データベース３７０からの更新なしで、且つそれがその局所記憶装置にもたらす変化が持続するという保証なしであるが、ホストは現在の状態で動作を続けることがで���る。この種の接続性の損失に関連した危険は最小である（即ち、同期メカニズムが失われる場合、回復不能なデータ損失が発生する場合がある分散ファイル・システムと異なり、ここでは共有されている資源だけが概念的である）。
【００２４】
［ＤＶポート所有権］
[0030]一実施形態において、２レベル所有権モデルはＤＶポート状態に適用される。所有権の第１レベルは、どのホストが特定のＤＶポートの状態を変更するための権利を現在有しているかを指す。一実施形態において、データベース・コントローラ３７０がＤＶポートの状態を所与のホストの方にプッシュするときに、ＤＶポート状態のこの種の所有権はそれによって暗に付与される。データベース・コントローラ３７０は、ＤＶポート３５２、３５４のホスト所有権を付与し、取り消す役割を果たす。一旦ホスト１００―１又は１００―２がＤＶポートの所有権を受けると、データベース・コントローラ３７２が所有権を明確に取り消すまで、それは所有権を保持する。
【００２５】
[0031]所有権の第２レベルは、どの仮想ＮＩＣがＤＶポートに現在接続しているかを指す。仮想ＮＩＣ２１５―１がＤＶポート３５２への新規な「接続」をするときに、仮想ＮＩＣ２１５―１は、ＤＶポート３５２の接続識別子（ＩＤ）のためにデータベース・コントローラ３７２に要求を出す。一実施形態において、仮想ＮＩＣ２１５―１は、ユーザー（即ち、管理者）によって手動で選択されるか、又はＤＶスイッチの構成の間に管理アプリケーションによって自動的に割り当て可能であるＤＶポート番号（又は他の識別子）によってＤＶポート３５２を識別する。例えば、特定のＤＶポートをその番号によって識別するＤＶポート番号は、ＶＭの他の構成設定と共に構成できる。接続ＩＤフィールドが要求されたＤＶポートに対して空である場合は、新しい接続ＩＤはデータベース・コントローラ３７２により生成され、仮想ＮＩＣ２１５―１に返される。仮想ＮＩＣ２１５―１がＤＶポート３５２の接続ＩＤを受信すると、それはＤＶポート３５２を元に戻す（即ち、関連される）ネットワーク資源を使用する権利を所有する。接続ＩＤ及びＤＶポート番号はＶＭの他の構成設定と共に記憶でき、それによって、ＶＭとＤＶポートとの間に関連を確立する。上述のように、仮想ＮＩＣ２１５―１、２１５―２は、それぞれ仮想ＮＩＣエミュレータ３０１―１、３０１―２により実行される、物理的なＮＩＣのソフトウェア抽象化である。従って、接続ＩＤを要求して得るためのコードは、仮想ＮＩＣエミュレータ３０１―１、３０１―２の構成要素、又は各ホスト１００―１、１００―２の仮想化ソフトウェア６００、６００′層の他の構成要素にあってもよい。
【００２６】
[0032]特定のＤＶポートの現在の接続ＩＤフィールドが接続要求時に空でない場合は、別の仮想ＮＩＣは現在接続権を所有し、新規な接続要求は拒否される。仮想ＮＩＣがＤＶポートへの接続を認められる度に、仮想ＮＩＣは接続ＩＤを記憶し、将来の動作のために、それを使用する。仮想ＮＩＣは、いつでも接続を解除することができ、その時は、それは別の仮想ＮＩＣによって使用できるようになる。単にＤＶポートの新しい接続ＩＤを生成することによって、又はＤＶポートの現在の接続ＩＤフィールドをクリアすることによって、接続を取り消すことが可能である。一旦接続が取り消されると、古い接続ＩＤを使用する試みは失敗する。
【００２７】
[0033]別の実施形態では、ＤＶポートは、単一のホストへの明確な割当てなしに、ホストのクラスタによって集合的に所有されていてもよい。同じＤＶポートを請求することを試みる複数のホストから生じているいかなる不一致も、ピア・ツー・ピア選挙アルゴリズムにより解決可能である。
【００２８】
［ＤＶポート動作］
[0034]一旦仮想ＮＩＣ２１５―１がＤＶポート３５２に接続すると、仮想ＮＩＣは、ＤＶポート３５２が仮想ポートによって元に戻されることを要求するために、ホスト１００―１のシステム・レベルのソフトウェアへの呼び出しを行うことによってリンク・アップをもたらすことを試みることができる。システム・レベルのソフトウェアは、仮想化ソフトウェア、例えば仮想化ソフトウェア６００又は他のシステム・レベル・ソフトウェアでもよい。例えば、ホストとして動作しない仮想化システムで、呼び出しは、例えば図１及び２を参照して上述したように、ＶＭカーネルに為されてもよい。呼び出しに応答して、システム・レベルのソフトウェアは、所望のネットワークへのアクセスを与えるために、ＤＶポート３５２を仮想スイッチ６０２の仮想ポート６５２と関連させることができる。一旦リンク・アップがうまく完了すると、仮想ＮＩＣ２１５―１は、ネットワーク４４２へ／からフレームを送受信することが可能である。
【００２９】
[0035]図９を参照してより詳細に後述するように、仮想計算機３２０の電源が切られるか又は停止すると、リンク状態をダウンするために、ＶＮＩＣ２１５―１はシステム・レベルのソフトウェアを呼び出す。これは根底にある仮想ポート６５２及びＤＶポート３５２と関連した資源を解除するが、ＤＶポート３５２の所有権を解除しない。仮想ポート６５２を解除する前に、システムはすべての登録されたポート状態をＤＶポート３５２へ同期させる。仮想計算機が再びオンになるか、又は再開すると、ＤＶポート３５２はホスト１００―１の新規な仮想ポートを要求し、すべての登録されたポート状態をそれへ同期させて、それが残された状態である場合は再びリンク状態をアップする。
【００３０】
[0036]図８を参照してより詳細に後述するように、仮想計算機３２０が１つのホスト（例えば、１００―１）から別のホスト（例えば、１００―２）に移行するときに、根底にある仮想スイッチポートを解放するための手順の前半が送信元ホストに起こり、新規な根底にある仮想スイッチポートを得るための手順の後半が宛先ホストに起こることを除いては、ＶＭの電源をオンオフする際と同じステップのシーケンスが実行される。１つの追加ステップは、ＤＶポート状態を宛先ホストの局所記憶装置へ転送し、それを送信元ホストの局所記憶装置で無効にすることを必要とする。接続ＩＤはＤＶポート状態の一部であるので、ＶＭ移行によってＤＶポートの所有権の送信元ホストから宛先ホストへの転送が生じる。
【００３１】
[0037]図４は、第１及び第２のホスト１００―１、１００―２に各々またがる、複数の分散仮想スイッチ３５０、３５０′、３５０″の概念化を例示する。この概念化において、各ＶＮＩＣは３つのＤＶスイッチの内の１つに取り付けられ、それの各々は各ホストの対応する物理的なＮＩＣと関連している。このように、ＶＮＩＣ２１５―１（それの各々は個々のＶＭに対応できる）は、分散仮想ポート、例えば、ＤＶスイッチ３５０によって集合的に管理される３５２、３５４と各々関連している。次にＤＶスイッチ３５０は、ＶＮＩＣ２１５―１、２１５―２への接続性を物理的なＮＩＣ１７２、１７２′を経由してネットワーク４４２に与える。ユーザの観点から、図３を参照して上述した個々の仮想ポート６５２、６５４及び仮想スイッチ６０２、６０２′の設定及び状態についての特定の知識は不要である。このようにして、ＤＶスイッチは、ＶＮＩＣと仮想スイッチとの間のリンクを実行する根底にある論理の便利な抽象化を表し、これによりユーザがＶＭの各々を特定のローカル・エリア・ネットワーク（ＬＡＮ）に接続している物理的なスイッチの抽象化としてＤＶスイッチを管理できる。この場合は、上記の「ユーザ」はネットワーク又はホスト管理者でもよい。ＤＶスイッチが個々の仮想スイッチ及び仮想ポートの設定を抽象化するので、管理者はＤＶスイッチを各ＶＮＩＣに取り付けて、同じものを構成することに関心を持つことを必要とするだけである。一旦それがされると、再開又は再起動が管理されたコレクションの異なるホストにおいてであっても、ＤＶポート及びＤＶスイッチを元に戻す仮想ポート及びスイッチは、ＶＭを再起動又は停止し、再開すると、自動的に適切に構成される。
【００３２】
[0038]図４により示唆されるように、単一のホスト１００―１は複数のＤＶスイッチ（対応するネットワークに各々関連する）と相互に作用できる。本実施例において、ホスト１００―１、１００―２はＤＶスイッチ３５０、３５０′、３５０″と相互に作用し、次にそれらはネットワーク４４２、４４６、及び４４８にそれぞれ接続している。ホスト１００―１は、ＤＶスイッチ３５０をネットワーク４４２に接続させるＮＩＣ１７２、ＤＶスイッチ３５０′をネットワーク４４６に接続させるＮＩＣ１７４、及びＤＶスイッチ３５０″をネットワーク４４８に接続させるＮＩＣ１７６を含む。当業者が思いつくように、多くの他の構成が可能であるけれども、ホスト１００―２は対応する構成要素を含む。
【００３３】
[0039]図５は、ホスト１００―１からホスト１００―２へのＶＭ３２０′の移行の前の、図３に以前に示したコレクション３００の簡略図を例示する。一実施形態によれば、ＶＭ３２０′が送信元ホスト１００―１から宛先ホスト１００―２へ移行すると、ＶＮＩＣ２１５―２と仮想スイッチ６０２の仮想ポート６５４との接続は失われ、ＶＮＩＣ２１５―２は、宛先ホスト１００―２の仮想スイッチ６０２′の新規な仮想ポート６５６と接続する。ＤＶスイッチ３５０が、送信元ホスト１００―１の局所記憶装置３５８からＤＶスイッチ３５０を通って宛先ホスト１００―２の局所記憶装置３５８′へのＤＶポート（例えば、３５２）の状態及び所有権の転送を容易にするので、仮想スイッチポート６５４に蓄積できる状態情報は失われず、仮想スイッチ６０２′の仮想ポート６５６へ移行される。
【００３４】
［拡張性］
[0040]ＤＶスイッチ及びＤＶポートの実行は、レジスタリング・フィルタ及びフォワーディング・エンジン・クラスによってランタイムで拡張可能である。１つのフォワーディング・エンジン・クラス（本願明細書において示されない）は各ＤＶスイッチ３５０と関連し、ゼロ以上のフィルタ・クラスはＤＶスイッチ３５０と関連している。フォワーディング・クラスは、ＤＶスイッチ３５０の基本的なフレーム・フォワーディング論理を実行する。フォワーディング・クラスは、どのＤＶポートがＤＶスイッチに入る各フレームを受信しなければならないかについて決定し、表示することに対する規則を含む。フォワーディング・クラスがフォワーディング決定をする役割を果たすので、各ＤＶスイッチ３５０と関連した１つのフォワーディング・クラスのみがある。フォワーディング・クラスは、構成及びランタイム状態のためのＤＶスイッチ及びＤＶポートに特有のコンテキストを登録できる。フィルタ・クラスは、ＤＶポートのためのあるタイプのモニタリング、フィルタリング、又は変換機能を実行する。各フィルタ・クラスは、１つ以上のＤＶポートに適用でき、構成及びランタイム状態のためのポートに特有のコンテキストを登録できる。
【００３５】
[0041]フォワーディング・エンジン・クラスはＤＶスイッチ作成時間に割り当てられる。フィルタ・クラスは、いつでもＤＶポートへ／から加えられるか又は取り除かれることができる。各フォワーディング・エンジン・クラスは、さまざまな必須及び任意の機能を実行するために、一組のコールバックを定める。各フォワーディング・エンジン・クラスは、システムにより維持される１つ以上の不透明なデータタイプを任意に宣言することもできる。これらのデータは、システムにより移行されて持続されるＤＶスイッチ及びＤＶポート状態に追加される。
【００３６】
[0042]図６は、一例として、一実施形態による、ＤＶスイッチを作成し削除するプロセスを例示する。ここで図３及び６を参照すると、動作６０１で、データベース・コントローラ３７２は、データベース３７０で新規なＤＶスイッチ入口３５０Ｃ及びＤＶスイッチのＤＶポートを作成する。この点に関しては、ＤＶスイッチ３５０は、フォワーディング・エンジン・サービス・クラス及びクラスに特有のＤＶスイッチ状態と関連している。新規なＤＶポート入口をデータベース３７０に作成するために、ＤＶポート入口は所与のＤＶスイッチと関連し、ＤＶポート状態はデフォルト値に初期化される。例えば、ＤＶポートの「現在の接続ＩＤ」は、仮想ＮＩＣがＤＶポートに現在接続していないことを示すために、「ＤＶＰＯＲＴ＿ＮＯ＿ＣＯＮＮＥＣＴＩＯＮ」にセットできる。データベース・コントローラ３７２は、新しいＤＶポート情報を管理された領域のすべてのホスト１００―１、１００―２にプッシュし、ホストはそれを局所記憶装置３５８、３５８′に記憶する。加えて、データベース・コントローラ３７２は、不透明なクラス定義の状態をＤＶポートの状態と関連させることによってＤＶポートフィルタをインストールすることもできる。
【００３７】
[0043]動作６０４において、ホストは作成されたＤＶスイッチ３５０に結合する。一実施形態において、この動作はデータベース・コントローラ３７２により開始され、それは、（ｉ）ホスト（例えば、１００―１、１００―２）が所与のＤＶスイッチの一部のホストを務めるために適当なネットワーク接続性及びサービスを提供できることを識別し、(ii)ホストをデータベース３７０のＤＶスイッチ３５０と関連したホストのリストに加え、 (iii)現在のＤＶスイッチデータを接続されるホストへプッシュし、ホストはそれをその局所記憶装置に記憶する。
【００３８】
[0044]動作６０６において、ホストはＤＶスイッチをそのままにしておく。一実施形態において、この動作はデータベース・コントローラ３７２により開始され、それは、（ｉ）ＤＶスイッチをそのままにしておくホスト（例えば、１００―１、１００―２）がそれに委託される所与のＤＶスイッチからいかなるＤＶポート（例えば、３５２、３５４、．．．、３６２）も現在有しないことを識別し、(ii)ホスト（例えば、１００―１、１００―２）がその局所記憶装置から所与のＤＶスイッチと関連したいかなるデータも取り除かなければならないことを示すために、それと接触し、 (iii)データベース３７０のＤＶスイッチ３５０と関連したホストのリストからホストを取り除く。ホストは、ＤＶスイッチの有効期間を通じて複数回ＤＶスイッチに６０４で結合し、６０８でそのままにしておくことができることに注意されたい。
【００３９】
[0045]動作６０８において、データベース・コントローラ３７２は、データベース３７０からＤＶスイッチ（例えば、３５０）を削除する。ＤＶスイッチ（例えば、３５０）を削除するために、データベース・コントローラ３７２は、すべてのホストがＤＶスイッチをそのままにしておいたことを確認して、データベース３７０からＤＶスイッチに対応するすべての状態を取り除く。
【００４０】
[0046]図７は、一実施形態による、ＤＶスイッチのＤＶポートへ／からＶＮＩＣを接続するか又は分離するプロセスを例示する。ステップ７０２において、仮想ＮＩＣ（例えば、２１５―１）は、ＤＶスイッチ３５０の要求されたＤＶポート（例えば、３５２）に接続している。一実施形態において、この動作はデータベース・コントローラ３７２を介して開始され、それは、現在の接続ＩＤがＤＶＰＯＲＴ＿ＮＯ＿ＣＯＮＮＥＣＴＩＯＮであることを確実にすることによって、要求されたＤＶポート（例えば、３５２）の既存の接続について検査し、仮想ＮＩＣがその要求されたＤＶポートに現在接続していないことを示す。要求されたＤＶポートに別の仮想ＮＩＣが現在接続している場合は、ＶＮＩＣを要求されたＤＶポートに接続する要求は拒否される。要求されたＤＶポートが利用できる場合は、データベース・コントローラ３７２は新しい接続ＩＤを生成し、要求されたＤＶポート（例えば、３５２）のために、「現在の接続ＩＤ」を新しい接続ＩＤにセットする。データベース・コントローラ３７２は、更新されたＤＶデータを現在仮想ＮＩＣ（例えば、２１５―１）のホストを務めるホスト（例えば、１００―１）の方にプッシュし、同様に仮想ＮＩＣ構成の「接続ＩＤ」フィールドを新しい接続ＩＤにセットする。
【００４１】
[0047]ステップ７０４において、仮想スイッチ６０２の仮想ポート（例えば、６５２）は、「被接続」仮想ＮＩＣ（例えば、２１５―１）に「リンク・アップされる」。一実施形態において、この動作は、仮想ＮＩＣ（例えば、２１５―１）のホストが務められ、データベース・コントローラ３７２による関与を必要としないホスト（例えば、１００―１）で生じる。仮想ＮＩＣ（例えば、２１５―１）は、それが接続しているＤＶポート（例えば、３５２）を識別するホストシステム・レベルのソフトウェア（例えば、仮想化ソフトウェア６００）を呼び出して、接続ＩＤを提供する。ＤＶスイッチシステムは、ＤＶポート（例えば、３５２）がこのホスト（例えば、１００―１）に現在実際に委託されていることを確認する。一実施形態において、ＤＶＰＯＲＴ＿ＮＯ＿ＣＯＮＮＥＣＴＩＯＮ以外の現在の接続ＩＤを有するＤＶポートデータの存在は、ＤＶポート（例えば、３５２）がこのホスト（例えば、１００―１）に委託されていることを確認するのに充分である。ＤＶスイッチシステムは、仮想ＮＩＣ（例えば、２１５―１）により提供される接続ＩＤがＤＶポートデータの現在の接続ＩＤと一致することを確認する。接続ＩＤデータが一致しない場合は、リンク・アップをもたらす要求は拒否される。接続ＩＤデータが一致する場合は、ホスト毎の局所仮想スイッチ（例えば、６０２）のポート資源は仮想ＮＩＣ（例えば、２１５―１）に割り当てられ、仮想ＮＩＣ実行は資源の処理を渡される。いかなるインストールされたフォワーディング・クラス又はフィルタ・クラスのためのクラス定義のコールバックも、根底にある仮想スイッチポート（例えば、６５２）にインストールされ、仮想スイッチポート状態は、クラス定義の直並列変換器を使用して、ホストの局所記憶装置から回復される。その結果、仮想スイッチポート（例えば、６５２）はＩＯのために使用可能になる。
【００４２】
[0048]ステップ７０６において、仮想スイッチの仮想ポートは、「被接続」仮想ＮＩＣ（例えば、２１５―１）により「リンク・ダウンされる」こともできる。一実施形態において、この動作は、仮想ＮＩＣ（例えば、２１５―１）はホストに従属して、データベース・コントローラ３７２からいかなる関与も必要としないホスト（例えば、１００―１）で生じる。仮想ＮＩＣ（例えば、２１５―１）は、それがホスト（例えば、１００―１）の仮想スイッチポート（例えば、６５２）資源を解除することを望むことを示しているシステムに呼び出しする。その結果、仮想スイッチポート（例えば、６５２）のすべてのＩＯ及び他のアクティビティは休止される。ＤＶスイッチシステムは、根底にある仮想スイッチポート（例えば、６５２）からすべての透明なＤＶポート状態を集める。いかなるインストールされたフォワーディング・クラス又はフィルタ・クラスのためのクラス定義のコールバックも、根底にある仮想スイッチポート（例えば、６５２）から取り除かれ、状態はクラス定義の直並列変換器を使用してホストの局所記憶装置に対するチェックポイントになる。仮想スイッチの仮想ポートは、ＤＶスイッチのＤＶポートへの仮想ＮＩＣ接続の有効期間にわたって複数回リンクアップ又はリンクダウン可能であることに注意されたい。
【００４３】
[0049]ステップ７０８において、仮想ＮＩＣ（例えば、２１５―１）はＤＶポート（例えば、３５２）から分離できる。一実施形態において、この動作はデータベース・コントローラ３７２を介して開始され、それは現在の接続ＩＤの更新をＤＶポート（例えば、３５２）が現在委託されているホスト（例えば、１００―１）の方にプッシュし、現在の接続ＩＤをＤＶＰＯＲＴ＿ＮＯ＿ＣＯＮＮＥＣＴＩＯＮにセットする。この更新を受信すると、リンク状態が既にダウンしていない場合は、ホスト（例えば、１００―１）は仮想ポート・リンク状態をダウンし、データベース３７０を同期させるためにＤＶポート状態をホストの局所記憶装置から取り戻す。
【００４４】
[0050]図８は、一実施形態による、ＶＭ移行の間のＤＶポート移行のプロセスを例示する。図５及び８を参照して、ＤＶポート（例えば、３５４）は、仮想計算機（例えば、２００―２）が移行される場合と同一方法で、ホスト１００―１、１００―２間で移行できる。高いレベルで、ＤＶポートが送信元ホスト（例えば、１００―１）から宛先ホスト（例えば、１００―２）に移行すると、それらは、整合したネットワーク接続を仮想ＮＩＣ（例えば、２１５―２）に提供するために、それらの状態を、利用できる仮想スイッチポートに投影する。
【００４５】
[0051]一実施形態において、ＤＶポート移行はデータベース・コントローラ３７２を介して開始され、それは移行される影響を受けた仮想計算機（例えば、２００―２）の仮想ＮＩＣ毎に以下の動作を実行する。動作８０２において、データベース・コントローラ３７２は、図７を参照して上述したように、送信元ホスト（例えば、１００―１）で「仮想ポート・リンク・ダウン」を実行することによって、ＤＶポート（例えば、３５４）を送信元ホスト（例えば、１００―１）に移行させる。動作８０４において、送信元ホスト（例えば、１００―１）の局所記憶装置（例えば、３５８）から移行されるＤＶポート（例えば、３５４）の直列化状態は、宛先ホスト（例えば、１００―２）の局所記憶装置（例えば、３５８′）へ転送される。ＤＶポートの状態を宛先ホストの方にプッシュする際に、データベース・コントローラ３７２は、ＤＶポートの所有権を宛先ホストに委託する。動作８０６において、データベース・コントローラ３７２は送信元ホスト（例えば、１００―１）の仮想ポート状態をクリアし、それによってＤＶポート（例えば、３５２）のその所有権を取り消す。動作８０７及び８０８において、データベース・コントローラ３７２は、ＤＶポート（例えば、３５４）の転送された状態を宛先ホスト（例えば、１００―２）の仮想スイッチ（例えば、６０２′）の別の仮想ポートに適用し、上記の通りに宛先ホスト（例えば、１００―２）における仮想ポート「リンク・アップ」を実行することによって、ＤＶポートを宛先ホスト（例えば、１００―２）にもたらす。
【００４６】
[0052]図９は、一実施形態による、例証として、ホストの電源を切ってから入れる間にＤＶスイッチを再構成するプロセスを例示する。これらの動作はデータベース・コントローラ３７２の関与の有無にかかわらず発生する場合がある。データベース・コントローラ３７２が差し迫った電源遮断事象を認識している場合は、それは動作９０２を実行することができ、そこではデータベース・コントローラ３７２は、ホスト（例えば、１００―１）の遮断の直前に最新版をホストの局所記憶装置から検索する。動作９０４において、電源を切る前に、持続的な記憶装置が利用できる場合は、ホスト（例えば、１００―１）は、その持続的な局所記憶装置をそのインメモリのキャッシュと同期させる。動作９０６において、ホストが持続的な局所記憶装置にその局所ＤＶスイッチ及びＤＶポート状態キャッシュのコピーを有する場合は、ＤＶスイッチ及びＤＶポート状態の内容は、リブートさせるとすぐに局所記憶装置からホストのインメモリのキャッシュへ復元される。動作９０８において、データベース・コントローラ３７２がホストの存在を検出するとすぐに、それはすべての関連したＤＶスイッチ及びＤＶポート状態のコピーをホスト（例えば、１００―１）へ転送する。データベース・コントローラ３７２は、ホストのキャッシュからの古いデータとデータベース３７０からのデータとの間の矛盾をマージするか、さもなければ解決することを試みることができる。一実施形態において、データベース３７０からのデータは信頼できるとみなされて、局所記憶装置に維持されるいかなる状態にも上書きする。データベース・コントローラ３７２は、結果として生じる更新をホスト（例えば、１００―１）の方にプッシュする。
【００４７】
[0053]この開示を読むと、当業者は、本願明細書において開示された原理による分散仮想スイッチのためのさらに付加的な他の構造及び機能的な設計を認識するだろう。上記の特定の方法動作は、並行して、又は記載されているのと異なる順序で実行されることができる。特定の実施形態及び応用が例示されて説明されていた一方で、当業者にとって明らかであるさまざまな変更態様、変更、及び変形が、添付の請求範囲に記載の本発明の精神及び範囲から逸脱することなく、本願明細書において開示される実施形態の方法及び装置の構成、動作、及び細部においてなされることができることを理解すべきである。
【図１】
2011523128.tif 000003
【図２】
2011523128.tif 000004
【図３】
2011523128.tif 000005
【図４】
2011523128.tif 000006
【図５】
2011523128.tif 000007
【図６】
2011523128.tif 000008
【図７】
2011523128.tif 000009
【図８】
2011523128.tif 000010
【図９】
2011523128.tif 000011
【手続補正書】
【提出日】平成23年3月22日(2011.3.22)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
同じ物理ネットワーク４４２に接続している類似の仮想スイッチ６０２、６０２′は、１つのＤＶスイッチを用いて管理される。物理ネットワーク４４２は、例えば、ローカル・エリア・ネットワークでもよい。図３において、ＤＶスイッチは分散仮想ポート（ＤＶポート）３５２、３５４を含む。ＤＶポートは、対応する仮想ポートの「個性（ｐｅｒｓｏｎａｌｉｔｙ）」（構成及びランタイム状態の両方）をカプセル化するソフトウェア抽象化である。このように、ＤＶポート３５２は、仮想スイッチ６０２の仮想ポート６５２の構成及びランタイム状態を表わす１つ以上のデータ構造を含む。同様に、ＤＶポート３５４は、仮想スイッチ６０２′の仮想ポート６５４の構成及びランタイム状態を表わす１つ以上のデータ構造を含む。ＤＶポートはネットワーク管理者によってあらかじめ定義された構成で作成される。仮想ポート６５２、６５４は作成されて、ブランクの構成状態から始めるが、一旦ＤＶポートに関連すると、関連するＤＶポートの構成及びランタイム状態を仮定する。ＶＭが移行されるか又は電源をオンオフされる時、ＤＶポートが持続して、それが接続されるＶＭで移行するので、ＤＶポートと仮想ＮＩＣとの間の「接続」は影響を受けない。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
［ＤＶポート所有権］
[0030]一実施形態において、２レベル所有権モデルはＤＶポート状態に適用される。所有権の第１レベルは、どのホストが特定のＤＶポートの状態を変更するための権利を現在有しているかを指す。一実施形態において、データベース・コントローラ３７２がＤＶポートの状態を所与のホストの方にプッシュするときに、ＤＶポート状態のこの種の所有権はそれによって暗に付与される。データベース・コントローラ３７２は、ＤＶポート３５２、３５４のホスト所有権を付与し、取り消す役割を果たす。一旦ホスト１００―１又は１００―２がＤＶポートの所有権を受けると、データベース・コントローラ３７２が所有権を明確に取り消すまで、それは所有権を保持する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
[0044]動作６０６において、ホストはＤＶスイッチをそのままにしておく。一実施形態において、この動作はデータベース・コントローラ３７２により開始され、それは、（ｉ）ＤＶスイッチをそのままにしておくホスト（例えば、１００―１、１００―２）がそれに委託される所与のＤＶスイッチからいかなるＤＶポート（例えば、３５２、３５４、．．．、３６２）も現在有しないことを識別し、(ii)ホスト（例えば、１００―１、１００―２）がその局所記憶装置から所与のＤＶスイッチと関連したいかなるデータも取り除かなければならないことを示すために、それと接触し、 (iii)データベース３７０のＤＶスイッチ３５０と関連したホストのリストからホストを取り除く。ホストは、ＤＶスイッチの有効期間を通じて複数回ＤＶスイッチに６０４で結合し、６０６でそのままにしておくことができることに注意されたい。
【国際調査報告】
2011523128.tif 000012
2011523128.tif 000013