(57)【要約】      （修正有）【課題】動的に拡張可能な仮想スイッチの装置および方法を提供する。【解決手段】装置または仮想スイッチは、少なくとも１つのルータおよびデータ構造を有する。ルータは、１つ以上の仮想ネットワークインタフェースカード（ＶＮＩＣ）間の接続を組織して仮想ネットワークを形成するためにデータ構造を使用する。仮想スイッチは、データフレームのＶＮＩＣノードをそのユニークなＩＤによって特定し、仮想ネットワークヘッドへのポインタを得るためにユニークなＩＤを要素の集合へのインデックスとして使用し、仮想ネットワークヘッドに関連付けられたＶＮＩＣノードリスト内の、そのユニークなＩＤに関係するＶＮＩＣノードを除く全てのＶＮＩＣノードに対してデータフレームを転送する。【選択図】図２
2011070676.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのルータと、
前記少なくとも１つのルータが、１つ以上の仮想ネットワークインタフェースカード（ＶＮＩＣ）間における接続を組織して仮想ネットワークを形成するために使用するデータ構造と
を備える装置。
【請求項２】
前記１つ以上のＶＮＩＣのそれぞれは、同一の仮想マシン（ＶＭ）に存在する請求項１に記載の装置。
【請求項３】
前記１つ以上のＶＮＩＣのそれぞれは、異なる仮想マシン（ＶＭ）に存在する請求項１に記載の装置。
【請求項４】
前記１つ以上のＶＮＩＣのそれぞれは、ユニークなＩＤを有する請求項１に記載の装置。
【請求項５】
前記データ構造は、
前記１つ以上のＶＮＩＣの前記ユニークなＩＤによってインデックスされる要素の集合と、
各ＶＮＩＣノードが前記１つ以上のＶＮＩＣの前記ユニークなＩＤの１つを有するＶＮＩＣノードリスト、および、前記要素の集合内の要素に関連付けられた仮想ネットワークヘッドを有する、仮想ネットワークヘッドリストと
を備える請求項４に記載の装置。
【請求項６】
前記要素の集合は配列である請求項５に記載の装置。
【請求項７】
前記ＶＮＩＣノードリストはＶＮＩＣノードのダブルリンクドリストである請求項５に記載の装置。
【請求項８】
１つ以上の仮想ネットワークインタフェースカード（ＶＮＩＣ）間の接続を構成することを目的としてデータ構造を使用する少なくとも１つのルータと前記データ構造とによって仮想ネットワークを形成すること
を備える方法。
【請求項９】
前記１つ以上のＶＮＩＣのそれぞれは、ユニークなＩＤを有する請求項８に記載の方法。
【請求項１０】
前記データ構造は、前記１つ以上のＶＮＩＣの前記ユニークなＩＤによってインデックスされる要素の集合と仮想ネットワークヘッドリストとを備え、前記要素の集合内の各要素は、前記仮想ネットワークヘッドリスト内の仮想ネットワークヘッドに関連付けられ、前記仮想ネットワークヘッドリスト内の前記各仮想ネットワークヘッドは、ＶＮＩＣノードリストに関連付けられ、前記ＶＮＩＣノードリスト内の各ＶＮＩＣノードは、前記１つ以上のＶＮＩＣの前記ユニークなＩＤの１つを有する請求項９に記載の方法。
【請求項１１】
新規仮想ネットワークを作成することを更に備える請求項１０に記載の方法であって、
前記新規仮想ネットワークを作成することは、
新規仮想ネットワークヘッドを作成することと、
前記新規仮想ネットワークヘッドを前記仮想ネットワークヘッドリストに追加することと
を備える方法。
【請求項１２】
１つ以上の仮想ネットワークインタフェースカード（ＶＮＩＣ）間の接続を組織することを目的としてデータ構造を使用する少なくとも２つのルータと前記データ構造とによって、少なくとも２つの仮想ネットワークを形成すること
を備える方法。
【請求項１３】
前記１つ以上のＶＮＩＣのそれぞれは、ユニークなＩＤを有し、前記データ構造は、前記１つ以上のＶＮＩＣのユニークなＩＤによってインデックスされる要素の集合と仮想ネットワークヘッドリストとを備え、前記要素の集合内の各要素は前記仮想ネットワークヘッドリスト内の仮想ネットワークヘッドに関連づけられ、前記仮想ネットワークヘッドリスト内の各仮想ネットワークヘッドは、各ＶＮＩＣノードが前記１つ以上のＶＮＩＣの前記ユニークなＩＤの１つを有する、ＶＮＩＣノードリストに関連づけられる、
請求項１２に記載の方法。
【請求項１４】
前記少なくとも２つの仮想ネットワークのうちの１つを削除することを更に備える請求項１３に記載の方法であって、
前記仮想ネットワークを削除することは、
削除される前記仮想ネットワークを表す前記仮想ネットワークヘッドリスト内の前記仮想ネットワークヘッドを決定することと、
前記決定された仮想ネットワークヘッドに関連付けられた前記要素の集合内の各要素の関連付けを解消することと、
前記決定された仮想ネットワークヘッドに関連付けられたＶＮＩＣノードリストの関連付けを解消することと、
前記仮想ネットワークヘッドリストから前記決定された仮想ネットワークヘッドを削除することと
を備える方法。
【請求項１５】
前記少なくとも２つの仮想ネットワークのうちの１つからＶＮＩＣを削除することを更に備える請求項１３に記載の方法であって、
前記ＶＮＩＣを削除することは、
削除される前記ＶＮＩＣに関連づけられた前記仮想ネットワークを表す前記仮想ネットワークヘッドリスト内の前記仮想ネットワークヘッドを決定することと、
削除される前記ＶＮＩＣの前記ユニークなＩＤによってインデックスされる前記要素の集合内の前記要素の関連付けを前記決定された仮想ネットワークヘッドから解消することと、
削除される前記ＶＮＩＣの前記ユニークなＩＤを有する前記決定された仮想ネットワークに関連付けられた前記ＶＮＩＣノードリスト内の前記ＶＮＩＣノードを削除することと
を備える方法。
【請求項１６】
前記少なくとも２つの仮想ネットワークのうちの１つにＶＮＩＣを追加することを更に備える請求項１３に記載の方法であって、
前記ＶＮＩＣを追加する方法は、
追加される前記ＶＮＩＣに関連付けられた前記仮想ネットワークを表す前記仮想ネットワークヘッドリスト内の前記仮想ネットワークヘッドを決定することと、
追加される前記ＶＮＩＣの前記ユニークなＩＤによってインデックスされる前記要素の集合内の前記要素を前記決定された仮想ネットワークヘッドに関連付けることと、
追加される前記ＶＮＩＣの前記ユニークなＩＤを有する前記決定された仮想ネットワークヘッドに関連付けられた前記ＶＮＩＣノードリストにＶＮＩＣノードを追加することと
を備える方法。
【請求項１７】
プロセッシングシステムによって実行されたときプロセッシングシステムに方法を実行させる命令群を有する、マシンによって読み取り可能な媒体であって、
前記方法は、
１つ以上の仮想ネットワークインタフェースカード（ＶＮＩＣ）間の接続を組織することを目的としてデータ構造を使用する少なくとも１つのルータと前記データ構造とによって、仮想ネットワークを形成すること
を備える媒体。
【請求項１８】
前記１つ以上のＶＮＩＣのそれぞれはユニークなＩＤを有し、前記データ構造は前記１つ以上のＶＮＩＣの前記ユニークなＩＤによってインデックスされる要素の集合と仮想ネットワークヘッドリストとを備え、前記要素の集合内の各要素は前記仮想ネットワークヘッドリスト内の仮想ネットワークヘッドに関連付けられ、前記仮想ネットワークヘッドリスト内の前記仮想ネットワークヘッドはそれぞれＶＮＩＣノードリストに関連付けられ、前記ＶＮＩＣノードリスト内の各ＶＮＩＣノードは前記１つ以上のＶＮＩＣの前記ユニークなＩＤの１つを有する請求項１７に記載のマシンによって読み取り可能な媒体。
【請求項１９】
新規仮想ネットワークを作成することを更に備える請求項１８に記載の媒体であって、
前記新規仮想ネットワークを作成する方法は、
新規仮想ネットワークヘッドを作成することと、
前記新規仮想ネットワークヘッドを前記仮想ネットワークヘッドリストに追加することと
を備える媒体。
【請求項２０】
プロセッシングシステムによって実行されたときプロセッシングシステムに方法を実行させる命令を有する、マシンによって読み取り可能な媒体であって、
前記方法は、
１つ以上の仮想ネットワークインタフェースカード（ＶＮＩＣ）間の接続を組織するためにデータ構造を使用する少なくとも２つのルータと、前記データ構造とによって、少なくとも２つの仮想ネットワークを形成すること
を備える媒体。
【請求項２１】
前記１つ以上のＶＮＩＣのそれぞれは、ユニークなＩＤを有し、前記データ構造は、前記１つ以上のＶＮＩＣのユニークなＩＤによってインデックスされる要素の集合と仮想ネットワークヘッドリストとを備え、前記要素の集合内の各要素は前記仮想ネットワークヘッドリスト内の仮想ネットワークヘッドに関連づけられ、前記仮想ネットワークヘッドリスト内の各仮想ネットワークヘッドは、各ＶＮＩＣノードが前記１つ以上のＶＮＩＣの前記ユニークなＩＤの１つを有する、ＶＮＩＣノードリストに関連づけられる、請求項２０に記載のマシンによって読み取り可能な媒体。
【請求項２２】
前記少なくとも２つの仮想ネットワークのうちの１つを削除することを更に備える請求項２１に記載の媒体であって、
前記仮想ネットワークを削除することは、
削除される前記仮想ネットワークを表す前記仮想ネットワークヘッドリスト内の前記仮想ネットワークヘッドを決定することと、
前記決定された仮想ネットワークヘッドに関連付けられた前記要素の集合内の各要素の関連付けを解消することと、
前記決定された仮想ネットワークヘッドに関連付けられた前記ＶＮＩＣノードリストの関連付けを解消することと、
前記決定された仮想ネットワークヘッドを前記仮想ネットワークヘッドリストから削除することと
を備える媒体。
【請求項２３】
前記少なくとも２つの仮想ネットワークのうちの１つからＶＮＩＣを削除することを更に備える請求項２１に記載のマシンによって読み取り可能な媒体であって、
前記ＶＮＩＣを削除することは、
削除される前記ＶＮＩＣに関連付けられた前記仮想ネットワークを表す前記仮想ネットワークヘッドリスト内の前記仮想ネットワークヘッドを決定することと、
削除される前記ＶＮＩＣノードの前記ユニークなＩＤによってインデックスされる前記要素の集合内の前記要素の関連付けを前記決定された仮想ネットワークヘッドから解消することと、
削除される前記ＶＮＩＣの前記ユニークなＩＤを有する前記決定された仮想ネットワークヘッドに関連付けられた前記ＶＮＩＣノードリスト内の前記ＶＮＩＣノードを削除することと
を備える媒体。
【請求項２４】
前記少なくとも２つの仮想ネットワークのうちの１つにＶＮＩＣを追加することを更に備える請求項２１に記載のマシンによって読み取り可能な媒体であって、
前記ＶＮＩＣを追加することは、
追加される前記ＶＮＩＣに関連付けられた前記仮想ネットワークを表す前記仮想ネットワークヘッドリスト内の前記仮想ネットワークヘッドを決定することと、
追加される前記ＶＮＩＣの前記ユニークなＩＤによってインデックスされる前記要素の集合内の前記要素を前記決定された仮想ネットワークヘッドに関連付けることと、
追加される前記ＶＮＩＣの前記ユニークなＩＤを有する前記決定された仮想ネットワークヘッドに関連付けられた前記ＶＮＩＣノードリストにＶＮＩＣノードを追加することと
を備える媒体。
【請求項２５】
データフレームのソース仮想ネットワークインタフェースカード（ＶＮＩＣ）ノードをそのユニークなＩＤによって識別することと、
仮想ネットワークヘッドへのポインタを取得するために前記ユニークなＩＤを要素の集合へのインデックスとして使用することと、
前記仮想ネットワークヘッドに関連付けられたＶＮＩＣノードリスト内の、前記ユニークなＩＤに関連するＶＮＩＣノードを除いた全てのＶＮＩＣノードに対して前記データフレームを転送することと
を備える方法。
【請求項２６】
前記要素の集合は配列であって、かつ、前記ＶＮＩＣノードリストはＶＮＩＣノードのダブルリンクドリストである請求項２５に記載の方法。
【請求項２７】
データフレームのソース仮想ネットワークインタフェースカード（ＶＮＩＣ）ノードをそのユニークなＩＤによって識別し、仮想ネットワークヘッドへのポインタを取得するために前記ユニークなＩＤを要素の集合へのインデックスに使用し、前記仮想ネットワークヘッドに関連付けられたＶＮＩＣノードリスト内の、前記ユニークなＩＤに関連するＶＮＩＣノードを除いた全てのＶＮＩＣノードに対して前記データフレームを転送する仮想スイッチを備える装置。
【請求項２８】
前記要素の集合は配列であって、かつ、前記ＶＮＩＣノードリストはＶＮＩＣノードのダブルリンクドリストである請求項２７に記載の装置。
【請求項２９】
プロセッシングシステムによって実行されたときプロセッシングシステムに方法を実行させる命令を有する、マシンによって読み取り可能な媒体であって、
前記方法は、
データフレームのソース仮想ネットワークインタフェースカード（ＶＮＩＣ）ノードをそのユニークな識別子によって識別することと、
仮想ネットワークヘッドへのポインタを取得することを目的として、前記ユニークなＩＤを要素の集合へのインデックスとして使用することと、
前記仮想ネットワークヘッドに関連付けられたＶＮＩＣノードリスト内の、前記ユニークなＩＤに関連するＶＮＩＣノードを除く全てのＶＮＩＣノードに対して前記データフレームを転送することと
を備える媒体。
【請求項３０】
前記要素の集合は配列であって、かつ、前記ＶＮＩＣノードリストはＶＮＩＣノードのダブルリンクドリストである請求項２９に記載のマシンによって読み取り可能な媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
１つの物理プラットフォームは、複数の仮想ネットワークに分離されうる。このとき、物理プラットフォームは、少なくとも１つの仮想マシンモニタ（ＶＭＭ）を含む。従来のＶＭＭは、概して、コンピュータにおいて実行され、かつ、他のソフトウェアに対して１つ以上の仮想マシン（ＶＭ）のアブストラクションを提供する。各ＶＭは、集合的にゲストソフトウェアと称される自身の「ゲストオペレーティングシステム」（すなわち、ＶＭＭによってホストされるオペレーティングシステム（ＯＳ））およびその他のソフトウェアを実行する、自己完結のプラットフォームとして機能しうる。
【０００２】
ＶＭ内で実行されるプロセスには、いくつかのハードウェアリソースのアブストラクションが提供され、また、これらのプロセスは、システム内の他のＶＭを認識しなくてもよい。全てのＶＭは、自身に対して割り当てられたハードウェアリソースに対してフルコントロールを有すると考える。ＶＭＭは、プロセッサ、入力／出力（Ｉ／Ｏ）デバイス、およびメモリを含む、しかしこれらに限定されないシステムリソースの管理、および、ＶＭ間における調停を適切に行う責任を負う実体であってもよい。
【０００３】
ネットワークインタフェースカード（ＮＩＣ）の仮想化は、ＶＭに対して物理ＮＩＣのアブストラクションを提供するための技術である。仮想化によって、同一の物理ＮＩＣが、複数のＶＭによって共有されることができる。更に、ＮＩＣの仮想化は、ＶＭに対して同一物理ＮＩＣの複数のインスタンスが提供されることを可能にする。例えば、システムは１つの物理ＮＩＣを有していても、ＶＭは、それぞれ物理プラットフォーム内の異なるネットワークおよび／または物理ＮＩＣが接続された外部ネットワークをインタフェースで接続する、複数の仮想ＮＩＣ（ＶＮＩＣ）を認識しうる。実際には、システム内におけるＶＭ間通信を使用可能にすることを目的として、実際の物理ＮＩＣが存在する必要は無い。ＶＭに提供されるＶＮＩＣは、実際の物理ＮＩＣとは完全に異なってもよいので、実際の物理ハードウェアに存在しない機能をＶＭに提供することを可能にしている。
【０００４】
１つの物理プラットフォームにおける、仮想ネットワークの総数、および、１つの仮想ネットワークに対するＶＭの最大数には制限がある。更に、仮想ネットワークの再構成は、影響を受けるＶＭおよびＶＭＭ全体の再起動を必要とする、１つ以上のＶＭの１つの仮想ネットワークから他の仮想ネットワークへの移動を含むので、仮想ネットワークは、ＶＭＭのランタイムに再構成されることができない。
【０００５】
仮想スイッチは、複数の仮想ネットワーク間における情報またはデータフレームのルーティングを行う、スイッチ機能を提供することを目的として使用されうる。仮想スイッチは、概して、データフレームが送信されてきたＶＮＩＣのＭＡＣアドレス、または、データフレーム自体に保存されたＭＡＣアドレスによって、データフレームのソースＶＮＩＣノードを特定する。すべての悪意のあるソフトウェア（例：ＶＭで実行されるゲストＯＳ）は、ＭＡＣアドレスをスプーフすることができるので、データフレームの受信ノードに、データフレームが実際のソースＶＮＩＣノードとは異なるソースＶＮＩＣノードから送信されてきたというように認識させることができる。ＭＡＣアドレスのスプーフィングは、仮想ネットワークの整合性を損なう。
【０００６】
本発明は、下記の説明および本発明の実施形態を説明するために使用される添付図面を参照することによって、最も良く理解されうる。
【図面の簡単な説明】
【０００７】
【図１】本発明のいくつかの実施形態が動作しうる仮想マシン環境の一実施形態を示す図である。
【０００８】
【図２】本発明の一実施形態による仮想スイッチデータ構造を示す図である。
【０００９】
【図３】新規の仮想ネットワークを作成する処理の一実施形態を示すフロー図である。
【００１０】
【図４】既存の仮想ネットワークを削除する処理の一実施形態を示すフロー図である。
【００１１】
【図５】本発明のある実施形態による既存の仮想ネットワークを削除する動作を示す図である。
【００１２】
【図６】特定の仮想ネットワークにＶＮＩＣを追加する処理の一実施形態を示すフロー図である。
【００１３】
【図７】特定の仮想ネットワークにＶＮＩＣを追加する動作を示す図である。
【００１４】
【図８】特定の仮想ネットワークからＶＮＩＣを削除する処理の一実施形態を示すフロー図である。
【００１５】
【図９】スプーフィングの可能性を回避するデータフレーム・ルーティング・スキームにおける処理の一実施形態を示すフロー図である。
【発明を実施するための最良の形態】
【００１６】
動的に拡張可能な仮想スイッチの装置および方法が説明される。本発明の仮想スイッチは、ＶＭまたはＶＭＭを再起動する必要なくランタイムに仮想ネットワークを作成、削除、または再構築する能力を提供する。更に、仮想スイッチは、仮想ネットワークに接続されることができるＶＭの数について固定の制限を課さない。仮想スイッチは、仮想ネットワークの総数についても制限を課さない。また、仮想スイッチは、悪意のあるソフトウェアがＶＭＭ管理者によって設定された仮想ネットワークの分離を損なわないことを保証する。以下の説明では、本発明を説明するために多くの特定の詳細が提示される。しかし、当業者にとっては、本発明の実施形態がこれらの詳細を必要とすることなく実施可能であることは明白である。
【００１７】
本発明の実施形態は、ソフトウェア、ファームウェア、ハードウェア、または種々の技術の組み合わせによって実装されうる。例えば、いくつかの実施形態では、本発明は、本発明による処理を実行するためにコンピュータ（またはその他の電子デバイス）をプログラムするために使用されうる命令群が保存された、マシンまたはコンピュータによって読み取り可能な媒体を含むコンピュータプログラム製品またはソフトウェアとして提供されてもよい。他の実施形態では、本発明の方法は、本発明の方法を実行するための、ハードウェアによって制御された論理を含む特定のハードウェアコンポーネント、または、プログラムされたコンピュータコンポーネントおよびハードウェアコンポーネントの全ての組み合わせによって実行されてもよい。
【００１８】
このように、マシン読み取り可能な媒体は、マシン（例：コンピュータ）によって読み取り可能な形態で情報を保存または送信するいかなる機構を含んでもよい。これらの機構は、フロッピーディスク、光ディスク、コンパクト・ディスク・リード・オンリー・メモリ（ＣＤ−ＲＯＭ）、磁気光ディスク、リード・オンリー・メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、消去可能プログラマブル・リード・オンリー・メモリ（ＥＰＲＯＭ）、電気的消去可能リード・オンリー・メモリ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、インターネットによる転送、電気、光、音波、またはその他の形態の伝播信号（例：搬送波、赤外線信号、デジタル信号、など）などを含み、しかし、これらに限定されない。新しいタイプの機構が開発されるにつれて、本発明の特定の適用により、説明の内容に対して他のタイプの機構が追加または代用されてもよい。
【００１９】
以下の詳細な説明におけるいくつかの部分は、コンピュータシステムのレジスタまたはメモリ内のデータビットの操作に関するアルゴリズムおよび記号表現の形で説明される。これらのアルゴリズムの説明および表現は、データ処理分野の当業者によって、技術内容の本質を他の当業者に対して最も効率的に伝えるために使用される方法である。アルゴリズムは、本明細書では、また一般的に、期待される結果に至る操作の自己矛盾無き順序であると考えられる。操作は、物理的な数量に対する物理的な操作を必要とするものであってもよい。通常、必ずしも必要ではないが、これらの数量は、保存、転送、結合、比較、および他の操作がされることが可能な電気または磁気の信号の形態をとる。これらの信号をビット、値、要素、記号、文字、言葉、数字、またはそのような形で参照することは、主に広く使われていることを理由として、便利であることが判明している。
【００２０】
しかし、上述および同様の用語は、適切な物理的な数量に関連付けられたものであって、これらの数量に適用される単に便利なラベルであると理解されるべきである。特に記述が無い限り、下記の説明から明白であるように、説明において使用される「処理」、「コンピューティング」、「計算」、「判定」のような言葉は、コンピュータシステムのレジスタおよびメモリ内の物理的な（電子の）量として表現されるデータを操作して、コンピュータシステムのメモリまたはレジスタ、もしくは、その他の情報を保存、転送、または表示するデバイス内で物理的な量として同様に表現される他のデータに変換する、コンピュータシステムまたは同様の電子コンピュータデバイスの動作および動作および処理を指す。
【００２１】
本明細書全体における「一実施形態」または「ある実施形態」は、本発明の実施形態に関連して説明される特定の機能、構造、または性質が少なくとも本発明の一実施形態に含まれることを意味する。このように、本明細書全体の多様な箇所に見られる「一実施形態では」または「ある実施形態では」の表現は、必ずしも同一の実施形態を指していない。更に、特定の機能、構造、または性質は、１つ以上の実施形態においてあらゆる適切な方法で組み合わされてもよい。
【００２２】
実施形態に関する以下の詳細な説明では、本発明を説明する手法として、本発明が実施されうる特定の実施形態を示す添付図面への参照がなされる。添付図面では、数字などはいくつかの図において一貫して実質的に同様のコンポーネントを説明する。これらの実施形態は、当業者による本発明の実施を可能にするために十分な詳細まで説明される。本発明の範囲から逸脱することなく、他の実施形態が使用されてもよく、また、構造的、論理的、および電気的な変更が加えられてもよい。
【００２３】
図１は、本発明のいくつかの実施形態が動作しうる動的に拡張可能な仮想スイッチの環境の一実施形態を示す図である。図１に示される特定のコンポーネントは、本発明に適した構成の一例を表すものであって、本発明を限定するものではない。
【００２４】
図１を参照すると、動的に拡張可能な仮想スイッチの環境１００は、１つ以上のＶＭ１０２から１１２、ＶＭＭ１１４、およびプラットフォームハードウェア１１６を有し、また、必ずしもこれらに限定されない。図１には６つのＶＭが示されるが、環境１００にはいかなる数のＶＭが存在してもよいと理解される。次に、これらの各コンポーネントについて詳細に説明する。
【００２５】
ＶＭ１０２から１１２のそれぞれは、１つ以上のＶＮＩＣを有する。例えば、ＶＭ１０２はＶＮＩＣ１およびＶＮＩＣ２を有し、ＶＭ１０６はＶＮＩＣ５のみを有する。図１の各ＶＮＩＣはユニークなＩＤを有する。以下の説明では、ＶＮＩＣ１は１のＩＤを有し、ＶＮＩＣ２は２のＩＤを有し、ＶＮＩＣ３は３のＩＤを有する、というように仮定する。
【００２６】
ＮＩＣの仮想化は、ＶＭに対して物理ＮＩＣのアブストラクションを提供するための技術である。仮想化によって、同一の物理ＮＩＣは、複数のＶＭによって共有されることができる。各ＶＭは、それぞれ自身が物理ＮＩＣを所有すると認識する。更に、ＮＩＣの仮想化は、同一物理ＮＩＣの複数のインスタンスがＶＭに提供されることを可能にする。例えば、システムが１つの物理ＮＩＣを有していても、ＶＭは、それぞれが物理マシン内の異なるネットワークおよび／または物理ＮＩＣが接続された外部ネットワークをインタフェースで接続する、複数のＶＮＩＣを認識しうる。本発明の一実施形態では、ＶＮＩＣ１から８は、プラットフォームハードウェア１１６のネットワークインタフェースカード（ＮＩＣ）１２８のアブストラクションである。
【００２７】
ＶＭＭ１４４は、仮想スイッチ１１８を有する。仮想スイッチ１１８は、ルータ１２０、１２２、および１２４の集合と、データ構造１２６とを有する。図１には３つのルータが示されるが、仮想スイッチ１１８にはいかなる数のルータが存在してもよいと理解される。ルータ１２０、１２２、および１２４は、以下に詳細に説明されるように、ＶＭ１０２から１１２のＶＮＩＣ間における接続を組織して種々の仮想ネットワークを形成することを目的として、データ構造１２６を使用する。本発明の一実施形態では、仮想スイッチ１１８は、ＶＭＭ１１４によって使用される仮想化モデル（例：ハイパーバイザ、ホストベースド、ハイブリッド、など）に関する知識を有しない。新しいタイプの仮想化モデルが開発されるにつれて、本発明の特定の適用により、説明の内容に対して他のタイプの仮想化モデルが追加または代用されてもよい。
【００２８】
プラットフォームハードウェア１１６は、ＮＩＣ１２８を有する。ＮＩＣ１２８は、物理ネットワーク１３０に接続される。プラットフォームハードウェア１１６は、パーソナルコンピュータ（ＰＣ）、メインフレーム、ハンドヘルドデバイス、ポータブルコンピュータ、セットアップボックス、またはその他いかなるコンピュータシステムであってもよい。プラットフォームハードウェア１１６は、１つ以上のプロセッサおよびメモリ（図１には図示されない）を有してもよい。更に、プラットフォームハードウェア１１６は、メモリおよびその他の種々の入力／出力デバイス（図１には図示されない）を含んでもよい。
【００２９】
プラットフォームハードウェア１１６のプロセッサは、ハイパースレッド、ＳＭＰ、マルチコア、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、またはそれに類似するもの、もしくはこれらの組み合わせのような、ソフトウェアを実行することができるいかなるタイプのプロセッサであってもよい。新しいタイプのプロセッサが開発されるにつれて、環境１００に対する本発明の特定の適用により、説明の内容に対して他のタイプのプロセッサが追加または代用されてもよい。本発明の方法の実施形態を実行するためのプロセッサは、マイクロコード、マクロコード、ソフトウェア、プログラマブルロジック、ハードウェアによって制御される論理などを含んでもよく、また、必ずしもこれらに限定されない。
【００３０】
プラットフォームハードウェア１１６のメモリは、いかなるタイプの記録可能／記録不可能なメディア（例：ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリー・メモリ（ＲＯＭ）、磁気ディスクストレージメディア、光ストレージメディア、フラッシュメモリデバイスなど）であってもよく、また、電気、光、音波、またはその他の形式の伝播信号（例：搬送波、赤外線信号、デジタル信号など）、上記デバイスの組み合わせ、または、プロセッサによって読み取り可能なその他いかなるタイプのマシン媒体であってもよい。新しいタイプの記録可能／記録不可能なメディアが開発されるにつれて、本発明の特定の適用により、説明の内容に対して他のタイプの記録可能／記録不可能なメディアが追加または代用されてもよい。メモリは、本発明の実施形態による方法を実行する命令を保存してもよい。
【００３１】
環境１００では、プラットフォームハードウェア１１６は、例えば通常のオペレーティングシステム（ＯＳ）またはＶＭＭ１１４のような仮想マシンモニタ（ＶＭＭ）を実行しうるコンピュータプラットフォームを備える。ＶＭＭ１１４は、概してソフトウェアによって実装されるが、上位ソフトウェアに対して最小限のマシンインタフェースをエミュレートおよびエクスポートしてもよい。このような上位ソフトウェアは、通例のまたはリアルタイムＯＳを含んでもよく、限定されたオペレーティングシステムの機能を有する大きく機能を取り除かれたオペレーティング環境であってもよく、または、従来のＯＳの機能を有しなくてもよい。あるいは、例えば、ＶＭＭ１１４は、他のＶＭＭの内部または他のＶＭＭの上で実行されてもよい。ＶＭＭおよびその典型的な特徴と機能は、当業者によって広く知られており、例えばソフトウェア、ファームウェア、ハードウェア、または種々の技術の組み合わせによって実装されうる。
【００３２】
本発明の一実施形態では、仮想スイッチ１１８の各ルータは、関連するＶＮＩＣと共に仮想ネットワークを表す。このように、ルータ１２０、ＶＭ１０２のＶＮＩＣ２、およびＶＭ１０４のＶＮＩＣ３は１つの仮想ネットワークを表し、ルータ１２２、ＶＭ１０４のＶＮＩＣ４、ＶＭ１０６のＶＮＩ５、およびＶＭ１０８のＶＮＩＣ６は第２の仮想ネットワークを表し、ルータ１２４、ＶＭ１１０のＶＮＩＣ７、およびＶＭ１１２のＶＮＩＣ８は第３の仮想ネットワークを表す。ＶＭ１０２のＶＮＩＣ１は、（ＮＩＣ１２８を経由して）物理ネットワーク１３０に接続される、図１に示される唯一のＶＮＩＣである。図１には４つの仮想ネットワークが示されるが、環境１００にはいかなる数の仮想ネットワークが存在してもよいと理解される。
【００３３】
仮想スイッチデータ構造１２６は、図２を参照して次に更に説明される。上述のように、ルータ１２０、１２２、および１２４は、ＶＭ１０２から１１２のＶＮＩＣ間における接続を組織して環境１００において種々の仮想ネットワークを形成することを目的として、データ構造１２６を使用する。データ構造１２６は、ＶＮＩＣ  ＩＤ配列２０２および仮想ネットワークヘッドリスト２０４を有する。これらについて、以下に詳細に説明する。
【００３４】
本発明の一実施形態では、図１の各ＶＮＩＣは、ユニークなＩＤを有する。以下の説明では、ＶＮＩＣ１は１のＩＤを有し、ＶＮＩＣ２は２のＩＤを有し、ＶＮＩＣ３は３のＩＤを有する、というように仮定する。各ユニークなＶＮＩＣ  ＩＤは、ＶＮＩＣ  ＩＤ配列２０２内の要素へのインデックスとなる。ＶＮＩＣ  ＩＤ配列２０２内の要素は、仮想ネットワークヘッドへのポインタと、実際のＶＮＩＣデータ構造（図２には図示されない）とを有する。各仮想ネットワークヘッドは、ＶＮＩＣノードのダブルリンクドリストへのポインタを有する。各ＶＮＩＣノードは、ＶＮＩＣのＩＤ（すなわち、ＶＮＩＣ  ＩＤ配列２０２内の要素へのインデックス）を有する。
【００３５】
本発明の一実施形態では、図１を参照した上記の説明の通り、ＶＭ１０２のＶＮＩＣ１は、（ＮＩＣ１２８を介して）物理ネットワーク１３０に接続された唯一のＶＮＩＣである。図２の仮想ネットワークは、（仮想ネットワークヘッドリスト２０４の）仮想ネットワークヘッド１へのポインタを有するＶＮＩＣ  ＩＤ配列２０２内の要素１によって、および、（ＶＮＩＣ１を表す）１のＩＤを含むＶＮＩＣノードのダブルリンクドリストへのポインタを有する仮想ネットワークヘッド１によって示される。
【００３６】
また、図１を参照した上述の説明の通り、ルータ１２０、ＶＭ１０２のＶＮＩＣ２、およびＶＭ１０４のＶＮＩＣ３は、もう１つの仮想ネットワークを作成する。この仮想ネットワークは、仮想ネットワークヘッド２へのポインタをそれぞれ有するＶＮＩＣ  ＩＤ配列２０２内の要素２および３によって、および、（ＶＮＩＣ２およびＶＮＩＣ３を表す）２および３のＩＤを含むＶＮＩＣノードのダブルリンクドリストへのポインタを有する仮想ネットワークヘッド２によって示される。図１の他の仮想ネットワークに対する同様の説明が図２に示される。
【００３７】
本発明の一実施形態では、仮想スイッチデータ構造１２６は、ＶＭ１０２から１１２および／またはＶＭＭ１１４を再起動することなく、仮想ネットワークに対する操作を動的に実行するために使用される。これらの操作は、（１）新規仮想ネットワークの作成、（２）既存仮想ネットワークの削除、（３）特定の仮想ネットワークへのＶＮＩＣの追加、および（４）特定の仮想ネットワークからのＶＮＩＣの削除を含み、また必ずしもこれらに限定されない。これらの操作の実施形態は、図３から図８を参照して以下に説明される。
【００３８】
図３は、新規仮想ネットワークを作成する処理の一実施形態を示すフロー図である。図３を参照すると、処理は、新規仮想ネットワークヘッドが作成される、処理ブロック３０２から開始する。処理ブロック３０４において、新規に作成された仮想ネットワークヘッドは、仮想ネットワークヘッドリスト２０４に追加される。図３の処理は、この時点で終了する。
【００３９】
図４は、既存の仮想ネットワークを削除する処理の一実施形態を示すフロー図である。以下の説明では、仮想ネットワーク３が図２の仮想スイッチデータ構造１２６から削除されると仮定する。この説明は図５に示される。
【００４０】
図４を参照すると、処理は、ＶＮＩＣ  ＩＤ配列２０２内の全てのＶＮＩＣ  ＩＤ要素が、削除される仮想ネットワークヘッドから関連付けを解消される、処理ブロック４０２から開始する。本説明では、この処理はＶＮＩＣ  ＩＤ配列２０２（図５に図示される）内の要素４、５、および６からのポインタの削除を含む。
【００４１】
処理ブロック４０４において、削除される仮想ネットワークヘッドのＶＮＩＣノードに対応するダブルリンクドリストが削除される。この説明では、この処理は、仮想ネットワークヘッド３（図５にも図示される）からのＶＮＩＣノードのダブルリンクドリストの削除を含む。
【００４２】
処理ブロック４０６において、仮想ネットワークヘッドリスト２０４から仮想ネットワークヘッドが削除される。本説明では、この処理は、仮想ネットワークヘッドリスト２０４（図５に図示される）からの仮想ネットワークヘッド３の削除を含む。図４の処理は、この時点で終了する。
【００４３】
図６は、特定の仮想ネットワークにＶＮＩＣを追加する処理の一実施形態を示すフロー図である。以下の説明では、ＶＮＩＣ４（ＶＮＩＣ  ＩＤ配列２０２内の要素４）が図２の仮想ネットワーク２に追加されると仮定する。この説明は図７に示される。
【００４４】
図６を参照すると、処理は、ＶＮＩＣ  ＩＤ配列２０２内のＶＮＩＣ  ＩＤ要素がその古い仮想ネットワークヘッドから関連付けを解消される、処理ブロック６０２から開始する。本説明では、要素４は、現在、仮想ネットワークヘッド３に関連付けられている。このため、要素４から仮想ネットワークヘッド３へのポインタが削除される（図７が示す通り）。
【００４５】
処理ブロック６０４において、ＶＮＩＣ  ＩＤ配列２０２内のＶＮＩＣ  ＩＤ要素は、その新しい仮想ネットワークヘッドから関連付けられる。本説明では、要素４から仮想ネットワークヘッド２へのポインタが作成される（図７が示す通り）。
【００４６】
処理ブロック６０６において、新旧の仮想ネットワークヘッドに対するＶＮＩＣノードのダブルリンクドリストが更新される。本説明では、ＶＮＩＣ４ノードは、仮想ネットワークヘッド３のダブルリンクドリストから削除され、仮想ネットワークヘッド２のダブルリンクドリストに追加される（図７が示す通り）。図６の処理は、この時点で終了する。
【００４７】
図８は、特定の仮想ネットワークからＶＮＩＣを削除する処理の一実施形態を示すフロー図である。図８を参照すると、処理は、ＶＮＩＣ  ＩＤ配列２０２内のＶＮＩＣ  ＩＤ要素がその仮想ネットワークヘッドから関連付けを解消される、処理ブロック８０２から開始する。
【００４８】
処理ブロック８０４において、削除されたＶＮＩＣに対応するＶＮＩＣノードを削除することを目的として、仮想ネットワークヘッドのＶＮＩＣノードのダブルリンクドリストが更新される。図８の処理は、この時点で終了する。
【００４９】
上述の通り、仮想スイッチは、複数の仮想ネットワーク間における情報またはデータフレームのルーティングを行うスイッチ機能を提供するために使用されうる。従来の仮想スイッチは、概して、データフレームが送信されてきたＶＮＩＣのＭＡＣアドレス、または、データフレーム自体に保存されたＭＡＣアドレスによって、データフレームのソースＶＮＩＣノードを特定する。すべての悪意のあるソフトウェア（例：ＶＭにおいて実行するゲストＯＳ）は、ＭＡＣアドレスをスプーフすることができるので、データフレームの受信ノードにデータフレームが実際のソースＶＮＩＣのノードとは異なるソースＶＮＩＣノードから送信されたと認識させることができる。ＭＡＣアドレスのスプーフィングは、仮想ネットワークの整合性を損なう。
【００５０】
本発明の一実施形態では、仮想スイッチ１１８は、データフレームのソースＶＮＩＣをＭＡＣアドレスではなくそのユニークなＶＮＩＣ  ＩＤによって特定することにより、悪意のあるソフトウェアがＭＡＣアドレスをスプーフする可能性がある状況を克服する。仮想スイッチ１１８は、ＶＭで実行されるプロセスからは認識されないＶＮＩＣ  ＩＤを割り当てて使用することにより、ＭＡＣアドレスのみに基づいてデータフレームを送信する悪意のあるソフトウェアのみが仮想ネットワークの整合性を損ないうることを保証する。
【００５１】
図９は、スプーフィングの可能性を回避するデータフレーム・ルーティング・スキームにおける処理の一実施形態を示すフロー図である。図９を参照すると、処理は、仮想スイッチ１１８がデータフレームのソースＶＮＩＣノードをそのユニークなＩＤによって特定する、処理ブロック９０２から開始する。
【００５２】
処理ブロック９０４において、仮想スイッチ１１８は、ソースＶＮＩＣノードが属する仮想ネットワークヘッドへのポインタを取得することを目的として、ＶＮＩＣ  ＩＤをＶＮＩＣ  ＩＤ配列２０２へのインデックスとして使用する。
【００５３】
処理ブロック９０６において、仮想スイッチ１１８は、ＶＮＩＣノードのダブルリンクドリスト内の、ソースＶＮＩＣノードを除く全てのＶＮＩＣノードに対してデータフレームを転送する。図９の処理は、この時点で終了する。
【００５４】
動的に拡張可能な仮想スイッチの装置および方法が説明された。上述の説明は、本発明を説明することを意図したものであって、本発明を限定することを意図していないと理解されるであろう。上記の説明を読解することにより、当業者には多くの他の実施形態が明白となる。このため、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲の均等物の全ての範囲によって決定される。
【図１】
2011070676.tif 000003
【図２】
2011070676.tif 000004
【図３】
2011070676.tif 000005
【図４】
2011070676.tif 000006
【図５】
2011070676.tif 000007
【図６】
2011070676.tif 000008
【図７】
2011070676.tif 000009
【図８】
2011070676.tif 000010
【図９】
2011070676.tif 000011
【外国語明細書】
2011070676000001.pdf