(58)【調査した分野】(Int.Cl.,DB名)
前記受信コンポーネントが、第3のVMから、前記第1のVM、前記第2のVM、及び前記第3のVMの間で共有される前記メモリにおける第2の位置に対する第2の参照子を含む第2のメッセージを受信することにより前記パケットを受信する、請求項1に記載の装置。
前記第1の位置及び前記第2の位置が、前記第1のVM、前記第2のVM、及び前記第3のVMの間で共有される前記メモリに対する同じメモリアドレスである、請求項2に記載の装置。
前記第1のVM、前記第2のVM、及び前記第3のVMの間で共有される前記メモリが、前記第1のVM、前記第2のVM、及び前記第3のVMがサービスチェーン処理のための前記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを備える、請求項2に記載の装置。
前記サービスチェーンフローが、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものである、請求項1に記載の装置。
前記複数のフローテーブルが、少なくとも前記第1のVMと前記第2のVMとの間で前記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示されるように配置される、請求項1に記載の装置。
前記第1のフローテーブルが、少なくとも前記第1のVMと前記第2のVMとの間で前記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を前記第1のVMに対して分配する前記バーチャルスイッチの構成に基づいて前記第1のVMに割り当てられる前記複数のフローテーブルの中からのものである、請求項6に記載の装置。
前記マルチコアプロセッサの第4の演算処理装置が、前記バーチャルスイッチを構成するために前記第1のVMに対して前記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートする、請求項7に記載の装置。
複数の命令を備える少なくとも1つの機械読み取り可能媒体であって、前記命令が、マルチコアプロセッサの第1の演算処理装置によりサポートされる第1のバーチャルマシン(VM)により実行されることに応答して前記第1のVMに、
前記マルチコアプロセッサの前記第1の演算処理装置によりサポートされる前記第1のVMにより実行される第1のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信させ、
複数のフローテーブルの中から第1のフローテーブルにアクセスさせ、
前記マルチコアプロセッサの第2の演算処理装置によりサポートされる第2のVMにより実行される第2のアプリケーションによる追加のサービスチェーン処理のために、前記第1のアプリケーションによるサービスチェーン処理のあとで前記パケットを前記第2のVMに経路指定するために前記第1のフローテーブルを使用させ、
前記パケットを受信する前記第2のVMのために、前記第1のVMと前記第2のVMとの間で共有されるメモリにおける第1の位置に対する第1の参照子を含むメッセージを前記第2のVMに送信させる、少なくとも1つの機械読み取り可能媒体。
前記命令が、さらに前記第1のVMに、第3のVMから、前記第1のVM、前記第2のVM、及び前記第3のVMの間で共有される前記メモリにおける第2の位置に対する第2の参照子を含む第2のメッセージを受信することにより前記パケットを受信させる、請求項9に記載の少なくとも1つの機械読み取り可能媒体。
前記第1の位置及び前記第2の位置が、前記第1のVM、前記第2のVM、及び前記第3のVMの間で共有される前記メモリに対する同じメモリアドレスである、請求項10に記載の少なくとも1つの機械読み取り可能媒体。
前記第1のVM、前記第2のVM、及び前記第3のVMの間で共有される前記メモリが、前記第1のVM、前記第2のVM、及び前記第3のVMがサービスチェーン処理のための前記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを備える、請求項10に記載の少なくとも1つの機械読み取り可能媒体。
前記複数のフローテーブルが、少なくとも前記第1のVMと前記第2のVMとの間で前記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示されるように配置される、請求項11に記載の少なくとも1つの機械読み取り可能媒体。
前記第1のフローテーブルが、少なくとも前記第1のVMと前記第2のVMとの間で前記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を前記第1のVMに対して分配する前記バーチャルスイッチの構成に基づいて前記第1のVMに割り当てられる前記複数のフローテーブルの中からのものである、請求項13に記載の少なくとも1つの機械読み取り可能媒体。
前記マルチコアプロセッサの第4の演算処理装置が、前記バーチャルスイッチを構成するために前記第1のVMに対して前記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートする、請求項14に記載の少なくとも1つの機械読み取り可能媒体。
前記ホストオペレーティングシステムが、前記第1のVM及び前記第2のVMに前記第1のフローテーブル及び前記第2のフローテーブルを示すために、前記第1のVM及び前記第2のVMに対してバーチャルスイッチ制御経路を有する、請求項16に記載の装置。
前記第1のVM及び前記第2のVMが、前記第1のVMがコピーをすることなく前記パケットを経路指定することを可能にする前記第1のVMと前記第2のVMとの間で共有される第2のメモリにおける位置に対する参照子を含むメッセージを前記第1のVMが前記第2のVMに送信することを含むコピーをしない方法で、前記サービスチェーンフローのための前記パケットを経路指定することができる、請求項18に記載の装置。
前記サービスチェーンフローが、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものである、請求項16に記載の装置。
マルチコアプロセッサの第1の演算処理装置によりサポートされるホストオペレーティングシステムにおいて、前記マルチコアプロセッサのそれぞれの第2及び第3の演算処理装置により別々にサポートされる第1及び第2のバーチャルマシン(VM)の間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信するステップであって、前記バーチャルスイッチを構成することが、
前記第1のVM及び前記第2のVMにより実行される別個のアプリケーションによる処理のために前記サービスチェーンフローのための前記パケットがたどることになっている経路を示すグローバルフローテーブルを生成し、
前記別個のアプリケーションによる別個の処理のあとで前記サービスチェーンフローのための前記パケットを経路指定するために前記グローバルフローテーブルを前記第1のVM及び前記第2のVMによるそれぞれの使用のための第1のフローテーブル及び第2のフローテーブルに分割し、そして
前記第1のフローテーブル及び前記第2のフローテーブルを前記第1のVM及び前記第2のVMに示す
ことを含む、ステップと、
前記バーチャルスイッチの構成を示すために、前記グローバルフローテーブルのみを要求側に提供するステップとを含む、方法。
前記ホストオペレーティングシステムが、前記第1のVM及び前記第2のVMに前記第1のフローテーブル及び前記第2のフローテーブルを示すために、前記第1のVM及び前記第2のVMに対してバーチャルスイッチ制御経路を有する、請求項21に記載の方法。
前記グローバルフローテーブルが、第1のメモリに保持されるように配置され、前記第1のフローテーブルを前記第1のVMに示すことが、前記第1のフローテーブルを保持する前記第1のメモリの第1のメモリアドレス範囲を提供することを含み、前記第2のフローテーブルを前記第2のVMに示すことが、前記第2のフローテーブルを保持する前記メモリの第2のメモリアドレス範囲を提供することを含む、請求項21に記載の方法。
複数の命令を備える少なくとも1つの機械読み取り可能媒体であって、前記命令が、ホストオペレーティングシステム及び複数のバーチャルマシン(VM)をサポートすることができるマルチコアプロセッサを有するホストコンピューティングプラットフォームにおけるシステムにより実行されることに応答して前記システムに、請求項21から請求項23のいずれか一項に記載の方法を実行させる、少なくとも1つの機械読み取り可能媒体。
【発明を実施するための形態】
【0005】
本開示で熟考されたように、NFV配置は、VMの間でサービスチェーンフローのためのパケットを交換することに対して専用であるマルチコアプロセッサの複数の物理的コアをもたらす。複数の物理的コアを専用にすることは、少なくとも2つの理由のために問題を含む可能性がある。第1に、複数のコアがソフトウェアバーチャルスイッチに対して専用にされる場合に、これらのコアは、特にNFV配置において典型的な高いパケットレートでボトルネックになり得る。潜在的なボトルネックは、追加のサービスを含むためのサービスチェーンの可能な拡張を制限し得る。ボトルネックは、ピークパケットトラフィック期間の間の受容しがたいスイッチング待ち時間及び/又はスループットにつながるかもしれず、したがって、サービスチェーンにおけるリンクは、受容しがたいスイッチング待ち時間又は性能を回避するために、制限される可能性がある。第2に、バーチャルスイッチにより受け取られたサービスチェーンフローのための全てのパケットは分類される必要がある。この分類の必要性は、サービスチェーンフローのためのパケットを経路指定する場合に、バーチャルスイッチをなお一層のボトルネックにする可能性がある。例えば、5つの異なるVMにより実行されるアプリケーションによってサービスされた実例のサービスチェーンフローは、アプリケーションによる処理のために5つの異なるVMを通って横断するパケットを有しているかもしれない。5つの異なるVMを通って横断することは、同様に6回バーチャルスイッチを横切るサービスチェーンフローをもたらし得る。
【0006】
スレッドがコア、コアを共有するいくらかのスレッドを横断して自由にスケジュールされることを可能にすること、又は新しいスレッドの創造を可能にすることのようなボトルネックになるソフトウェアバーチャルスイッチの影響を制限するために、いくつかの試みが行われた。しかしながら、スレッドスケジューリングに関連するオーバヘッドのために、性能は劣るかもしれない。影響を制限する別のオプションは、複数のVMを固定した経路においてつなぐことであり得る。このオプションは、バーチャルスイッチの必要性を取り除くであろうが、しかし、同様に、VMを通してサービスチェーンフローのための経路を制御する能力を取り除くであろう。これは、所定のサービスチェーンと関連付けられた作業負荷及びサービスタイプにおける変動を経験し得る適当な動的環境において柔軟性を減少させ得る。ここで説明された実例が必要とされるのは、これらの課題に関することである。
【0007】
いくつかの第1の実例によれば、VMの間でサービスチェーンフローパケットを経路指定するための技術は、マルチコアプロセッサの第1の演算処理装置によりサポートされるホストオペレーティングシステムにおいて、マルチコアプロセッサのそれぞれの第2及び第3の演算処理装置により別々にサポートされる第1及び第2のVMの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信することを含み得る。これらの第1の実例に関して、バーチャルスイッチを構成することは、第1のVM及び第2のVMにより実行される別個のアプリケーションによる処理のためにサービスチェーンフローのためのパケットがたどることになっている経路を示すグローバルフローテーブルを生成することを含み得る。バーチャルスイッチを構成することは、同様に、別個のアプリケーションによる別個の処理のあとでサービスチェーンフローのためのパケットを経路指定するためにグローバルフローテーブルを第1のVM及び第2のVMによるそれぞれの使用のための第1のフローテーブル及び第2のフローテーブルに分割することを含み得る。バーチャルスイッチを構成することは、同様に、第1のフローテーブル及び第2のフローテーブルを第1のVM及び第2のVMに示すことを含み得る。その場合に、グローバルフローテーブルのみが、バーチャルスイッチの構成を示すために、要求側に提供され得る。
【0008】
いくつかの第2の実例において、VMの間でサービスチェーンフローパケットを経路指定するための技術は、マルチコアプロセッサの第1の演算処理装置によりサポートされる第1のVMにおいて、第1のVMにより実行される第1のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信することを含み得る。技術は、同様に、複数のフローテーブルの中から第1のフローテーブルにアクセスすることを含み得るとともに、第1のフローテーブルは、第1のアプリケーションによるサービスチェーン処理のあとでパケットを経路指定する第1のVMによる使用のためのものである。技術は、同様に、追加のサービスチェーン処理のためのパケットをマルチコアプロセッサの第2の演算処理装置によりサポートされる第2のVMに経路指定することを決定することを含み得る。技術は、同様に、第2のVMにより実行される第2のアプリケーションによる追加のサービスチェーン処理のためのパケットを受信する第2のVMのために、第1のVMと第2のVMとの間で共有されるメモリにおける第1の位置に対する第1の参照子を含むメッセージを第2のVMに送信することを含み得る。
【0009】
図1は、実例の第1のシステムを例示する。いくつかの実例において、
図1で示されるように、第1の実例システムは、システム100を含む。システム100は、複数の演算処理装置(processing element:PE)/コア112−1〜112−nを含むマルチコアプロセッサ110を有するホストコンピューティングプラットフォーム105を含み、ここで、“n”は1より大きいあらゆる正の全ての整数である。いくつかの実例によれば、PE/コア112−1〜112−nは、
図1においてVM1からVMmとして示されるVMを別々にサポートする能力を有することができるか、又はVMを別々にサポートするように配置されることができ、ここで、m=n−1である。同様に、各PE/コアは、ホストオペレーティングシステム(operating system:O/S)(例えばPE/コア112−1のような)をサポートすることが可能であり得る。各VMは、1つ又は複数のアプリケーションを遂行又は実行し得るバーチャル中央演算処理装置(virtual central processing unit:VCPU)を有するように配置され得る(例えば、VM1〜VMm)。
【0010】
いくつかの実例によれば、VMは、物理的機械と同様の、プログラム又はアプリケーションを実行し得るコンピュータのような機械のソフトウェア実装であり得る。VMは、使用法及び現実の計算機に対する一致の程度に基づき得る2つの実例クラスに分割され得る。第1の実例クラスは、システムVMであり得る。システムVMは、完全なO/Sの実行をサポートする完全なシステムプラットフォームを提供し得る。システムVMは、現存するアーキテクチャをエミュレートし得るとともに、現実のハードウェアが使用可能ではないかもしれない(例えば、そうでなければ旧式のプラットフォームで実行する)場合においてプログラム/アプリケーションを実行するためのプラットフォームを提供すること、又はコンピューティング資源の更に効率的な使用のためにバーチャルマシンの複数のインスタンスを有することを目的として形成され得る。システムVMは、ユーザ又はクライアントの視点からは現実のサーバとして見えるようにサーバをバーチャル化する“コンテナ”と呼ばれる複数の分離されたユーザスペースインスタンスを可能にするコンテナ技術(Container)と呼ばれる技術に基づいていても良い。第2の実例クラスは、プロセスVMであり得る。プロセスVMは、単一のプログラム/アプリケーションを実行する、及び/又は、単一のプロセスをサポートするように設計され得る。
【0011】
いくつかの実例において、
図1で示されるように、ホストコンピューティングプラットフォーム105は、ネットワーク140を通って経路指定されるネットワーク(NW)通信チャンネル142によってクライアント150に結合され得る。外部NWインタフェース111は、PE/コア112−2〜12−nによりサポートされるVM1〜VMmにより実行される1つ又は複数のアプリケーションによる最終的な処理のために、NW通信チャンネル142を通してネットワークパケットを受信することが可能であり得る。例えば、メモリ120は、受信したあとで、及び/又は、VM1〜VMmにより実行される1つ又は複数のアプリケーションによる処理のあとで、これらのパケットの少なくとも一部分を少なくとも一時的に保持するように配置され得る。いくつかの実例によれば、ホストコンピューティングプラットフォーム105は、ネットワークサービスをクライアント150のようなクライアントに提供するように配置されるデータセンタ又はサーバファームに配置され得る。
【0012】
いくつかの実例において、
図1で示されるように、ネットワークマネージャ160は、ネットワーク170を通って経路指定される内部NW通信チャンネル172によってホストコンピューティングプラットフォーム105に結合し得る。いくつかの実例によれば、内部NW通信チャンネル172は、コンピューティングプラットフォーム105における内部NWインタフェースを通してホストO/Sをサポートするように配置されるPE/コアに結合し得る。例えば、
図1で示されるように、PE/コア112−1は、ホストO/Sをサポートし得るとともに、内部ネットワークインタフェース113を通して内部NW通信チャンネル172に結合され得る。
【0013】
さらに下記で説明されるように、ネットワークマネージャ160のようなネットワークマネージャは、VM(例えばVM1〜VMm)の間でサービスチェーンフロー130のようなサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を送信することができ得る。要求は、内部NW通信チャンネル172のような内部NW通信チャンネルを通して送信され得るとともに、PE/コア112−1のようなマルチコアプロセッサ110のPE/コアによりサポートされるホストO/Sにより受信され得る。要求は、内部NWインタフェース113のような内部NWインタフェースを通して受信され得る。同様に、バーチャルスイッチ(virtual switch:VSwitch)制御経路115のようなVSwitch制御経路が、ホストO/Sとサービスチェーンフロー130のためのパケットを処理するアプリケーションを実行する各VMとの間で確立され得る。
【0014】
いくつかの実例によれば、さらに下記で説明されるように、サービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチの構成は、VMにより別々に実行されるアプリケーションによるサービスチェーン処理のあとでサービスチェーンフローのためのパケットを経路指定することを可能にする、VMの間のバーチャルスイッチロジックの分配を含み得る。バーチャルスイッチロジックの分配は、グローバルフローテーブルを生成し、次に、VMにより実行されるアプリケーションによる別個の処理のあとでサービスチェーンフローのためのパケットを経路指定するためにグローバルフローテーブルをそれぞれのVMにより使用されるべき別個のフローテーブルに分割することを含み得る。これらの実例に関して、要求側(例えば、ネットワークマネージャ160)は、グローバルフローテーブルだけを見ることができるか、又はグローバルフローテーブルだけにアクセスすることができる。一方、サービスチェーンフローのためのパケットを処理するアプリケーションを実行しているVMは、グローバルフローテーブルから分割されたそれらのそれぞれのフローテーブルだけを見ることができるか、又はグローバルフローテーブルから分割されたそれらのそれぞれのフローテーブルだけにアクセスすることができる。
【0015】
いくつかの実例において、サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。実例は、これらのタイプのサービスチェーンのみに限定されず、他のタイプが熟考される。同様に、これらの実例に関して、マルチコアプロセッサのPE/コアによりサポートされるVMにより別々に実行されるアプリケーションは、それぞれ、サービスチェーンフローのためのパケットを処理するように配置され得る。サービスチェーンのタイプに応じて、各アプリケーションは、特定のネットワークサービスを実行するようにパケットを処理し得る。例えば、電子メールサービスチェーンは、ウイルス検出、スパム検出、又はフィッシング検出のようなネットワークサービスを含み得る。例えば、サービスプロバイダサービスチェーンは、ディープパケットインスペクション(deep packet inspection)又はトラフィックモデリング(traffic modeling)のためのネットワークサービスを含み得る。
【0016】
図2は、実例の第2のシステムを例示する。
図2で示されるように、実例の第2のシステムは、システム200を含む。いくつかの実例において、システム200は、
図1において示されるマルチコアプロセッサ110と同様にマルチコアプロセッサの一部であり得るPE/コア212−1〜212−nを含み得る。これらの実例に関して、
図2で示されるように、PE/コア212−1は、ホストO/Sをサポートし、一方、PE/コア212−2〜212−nは、VM1〜VMmとして識別されるVMをサポートする。VM1〜VMmは、0からqまでのそれぞれのアプリケーション(App)を実行する能力を有することができ、ここで、“q”は、5より大きいあらゆる全ての正の整数に等しい。
【0017】
いくつかの実例によれば、ネットワークマネージャ260は、PE/コア212−1によりサポートされるホストO/Sに送信されホストO/Sにより処理される要求によってユーザがバーチャルスイッチを構成するための手段(例えば、ディスプレイを備えたキーボード/タッチスクリーン)を含み得る。要求は、それぞれのApp(0)〜App(q)による処理のために、VM(VM1〜VMm)の間でサービスチェーンフロー230のためのパケットを経路指定するようにバーチャルスイッチを構成することであり得る。これらの実例に関して、バーチャルスイッチを構成することは、それぞれのVM(VM1〜VMm)により実行されるアプリケーションApp(0)〜App(q)による処理のためにサービスチェーンフローのためのパケットがたどることができる経路をユーザ又は要求側に示すグローバルフローテーブル240を生成することを含み得る。バーチャルスイッチを構成することは、同様に、グローバルフローテーブル240をVM1〜VMmの各VMのための別個のフローテーブルに分割し、次にそれぞれのVM(VM1〜VMm)に別個のフローテーブルを示すことを含み得る。バーチャルスイッチロジックの少なくとも一部分を実行することが可能である各VMにより、ホストO/Sの資源、及び/又は、PE/コア212−1の資源をスイッチングのために消費することを、回避することが可能であり得る。このスイッチングの回避は、PE/コア資源を解放し得る。
【0018】
いくつかの実例において、
図2で示されるように、VSwitch制御経路115は、ホストO/Sを、それぞれのアプリケーションApp(0)〜App(q)を実行しているVM(VM1〜VMm)に結合し得る。これらの実例に関して、ホストO/Sのロジック及び/若しくは機能、並びに/又は、PE/コア212−1のロジック及び/若しくは機能は、VSwitch制御経路115によって、別個のフローテーブルを示すことが可能であり得る。例えば、示すことは、グローバルフローテーブル240から分割されたそれぞれのフローテーブルを保持するように配置されるメモリ220におけるメモリアドレス範囲を提供することを含み得る。これらの実例に関して、VM1〜VMmによる使用のために個別のフローテーブルを提供することにより、各VMは、これらのパケットを処理するアプリケーションを実行するように構成されるVMの間でサービスチェーンフロー230のためのパケットを経路指定するために、バーチャルスイッチロジックの少なくとも一部分を実行することが可能であり得る。
【0019】
いくつかの実例によれば、各VMのフローテーブルは、どこでサービスチェーンフロー230のためのパケットが受信され得るかを示すために、送信元アドレス情報(例えば、送信元メディアアクセスコントロール(media access control:MAC)アドレス)を含み得る。各VMのフローテーブルは、同様に、特定のVMにより実行されるアプリケーションによる処理のあとでどこにサービスチェーンフロー230のためのパケットが経路指定され得るかを示すために、送信先アドレス情報(例えば、送信先MACアドレス)を含み得る。
【0020】
図3は、実例の共有メモリメッシュ300を例示する。
図3で示されるように、共有メモリメッシュ300は、共有メモリメッシュ300を構成するように互いに結合されるPE/コア212−2〜212−nを示す。いくつかの実例によれば、共有メモリメッシュ300は、VM1〜VMmの中からの各VMが
図2で示されるサービスチェーンフロー230のためのパケットのようなサービスチェーンのためのパケットを受信することを可能にすることができる共有メモリリング(例えば、ダイナミックランダムアクセスメモリ(DRAM))を含み得る。これらの実例に関して、それらのパケットは、コピーをしない方法で(in a zero-copy manner)受信され得る。例えば、PE/コア212−2におけるApp(0)による処理のあとで、VM1は、サービスチェーンフロー230のための1つ又は複数のパケットがApp(0)による処理のあとで記憶された共有メモリにおける位置を示すメッセージをVM2(送信先VM)に送信するために、最初にVM1のフローテーブルを使用するためのロジック及び/又は機能を含み得る。VM2により実行されるApp(1)に割り当てられたバッファ又はメモリに1つ又は複数のパケットをコピーするよりむしろ共有メモリにおける位置の指示が提供されるので、1つ又は複数のパケットは、コピーをしない方法でVM2により受信され得る。
【0021】
図4は、第1の装置についての実例の構成図を例示する。
図4で示されるように、第1の装置は、装置400を含む。
図4において示される装置400は、特定の接続形態における限られた数の構成要素を有しているが、装置400は、代替の接続形態において、特定の実装用に要望される通り、より多い又はより少ない構成要素を含み得る、ということが認識され得る。
【0022】
装置400は、ホストコンピューティングプラットフォームにおいて保持されるマルチコアプロセッサのPE/コアであり得る回路420によりサポートされ得る。回路420は、1つ又は複数のソフトウェア又はファームウェアで実施されたモジュール又はコンポーネント422−aを実行することが可能であるVM422をサポートするように配置され得る。“a”及び“b”及び“c”、並びにここで使用されると同様の指示子は、あらゆる正の整数を表す変数であることが意図される、ということは注目に値する。したがって、例えば、もし実装が値をa=4に設定するならば、その場合に、コンポーネント422−aのためのソフトウェア又はファームウェアの完全なセットは、コンポーネント422−1、422−2、422−3、又は422−4を含み得る。提示された実例は、この文脈において限定されないとともに、いたるところで使用される異なる変数は、同じ整数値又は異なる整数値を示し得る。
【0023】
いくつかの実例によれば、回路420は、限定することなく、AMD(登録商標)社のAthlon(登録商標)、Duron(登録商標)、及びOpteron(登録商標)プロセッサ、ARM(登録商標)社のアプリケーションプロセッサ、埋め込み型プロセッサ、及びセキュアプロセッサ、IBM(登録商標)社及びMotorola(登録商標)社のDragonBall(登録商標)、PowerPC(登録商標)プロセッサ、IBM(登録商標)社及びSony(登録商標)社のCellプロセッサ、Intel(登録商標)社のAtom(登録商標)、Celeron(登録商標)、Core(2)Duo(登録商標)、Core i3(登録商標)、Core i5(登録商標)、Core i7(登録商標)、Itanium(登録商標)、Pentium(登録商標)、Xeon(登録商標)、Xeon Phi(登録商標)、及びXScale(登録商標)プロセッサ、並びに、同様のプロセッサを含む様々な商業上利用可能なプロセッサのうちのいずれかが提供するマルチコアプロセッサのPE/コアであり得る。
【0024】
いくつかの実例によれば、装置400は、受信コンポーネント422−1を含み得る。受信コンポーネント422−1は、回路420によりサポートされるVM422により実行され得る。これらの実例に関して、受信コンポーネント422−1は、同様にVMにより実行されるアプリケーションにより処理されるべき、サービスチェーンフローのためのパケットを受信し得る。例えば、パケットは、(複数の)パケット415に含まれ得る。受信コンポーネント422−1は、VMにより実行されるアプリケーションにより処理されるべきパケットの少なくとも一部分を少なくとも一時的に記憶する、他のVMと共有されるメモリにおける第1の位置に対する第1の参照子を有するメッセージ410に含まれる第1のメッセージの使用によってパケットを受信し得る。
【0025】
いくつかの実例によれば、装置400は、アクセスコンポーネント422−2を含み得る。アクセスコンポーネント422−2は、回路420によりサポートされるVM422により実行され得る。これらの実例に関して、アクセスコンポーネント422−2は、VMにより実行されるアプリケーションによる処理のあとでパケットを経路指定するために、複数のフローテーブルの中から1つのフローテーブルにアクセスし得る。複数のフローテーブルは、サービスチェーンフローのためのパケットを経路指定するそれぞれのVMによる使用のためにグローバルフローテーブルから分割された別個のフローテーブルであり得る。フローテーブルは、アクセスコンポーネント422−2により、フローテーブル425−bにおいて(例えばルックアップテーブル(LUT)において)保持され得る。
【0026】
いくつかの実例において、アクセスされるべきフローテーブルは、構成メッセージ405に含まれる第2のメッセージにより伝達されたかもしれない。これらの実例に関して、アクセスコンポーネント422−2は、バーチャルスイッチの構成のあとで、異なるVMにより実行されたO/Sから第2のメッセージを受け取ったかもしれない。バーチャルスイッチの構成は、VMと少なくとも1つの他のVMとの間でサービスチェーンフローのためのパケットを経路指定するために、スイッチロジックの一部分をVMに分配したかもしれない。
【0027】
いくつかの実例によれば、装置400は、ルートコンポーネント422−3を含み得る。ルートコンポーネント422−3は、回路420によりサポートされるVM422により実行され得る。これらの実例に関して、ルートコンポーネント422−3は、パケットをサービスチェーン処理のあとで回路420を含むマルチコアプロセッサの別のPE/コアによりサポートされる別のVMに対して経路指定するために、フローテーブル425−bに保持されるフローテーブルを使用し得る。別のVMは、追加のサービスチェーン処理を行うかもしれない別のアプリケーションを実行し得る。
【0028】
いくつかの実例において、装置400は、基準コンポーネント422−4を含み得る。基準コンポーネント422−4は、回路420によりサポートされるVM422により実行され得る。これらの実例に関して、基準コンポーネント422−4は、VMと他のVMとの間で共有されるメモリにおける第2の位置に対する第2の参照子を含む第3のメッセージを、他のVMに送信し得る。他のVMは、その場合に、メモリからパケットを受信するために第2の位置を使用し得るとともに、他のアプリケーションが追加のサービスチェーン処理を実行することを可能にし得る。メッセージ430は、第2の位置に対する第2の参照子を含む、他のVMに送信される第3のメッセージを含み得る。
【0029】
ここに含まれるのは、開示されたアーキテクチャの新奇な特徴を実行するための実例の手順を代表するロジックフローのセットである。説明の簡単化の目的のために、ここに示された1つ又は複数の手順が一連の動作として示されて説明される一方、当業者は、それらの手順が動作の順序によって限定されない、ということを理解するとともに、認識するであろう。いくつかの動作は、それに従って、ここで示されて説明される動作とは違って、異なる順序で、及び/又は他の動作と並行して、発生する場合がある。例えば、当業者は、手順が、その代わりに、状態図のように、一連の相互に関係のある状態又は事象として表され得るであろう、ということを理解するとともに、認識するであろう。さらに、手順において例示された全ての動作が、新奇な実装のために必ずしも必要とされるとは限らないかもしれない。
【0030】
ロジックフローは、ソフトウェア、ファームウェア、及び/又はハードウェアにおいて実施され得る。ソフトウェア及びファームウェアの実施例において、ロジックフローは、光記憶装置、磁気記憶装置、又は半導体記憶装置のような、少なくとも1つの非一時的なコンピュータ読み取り可能媒体又は機械読み取り可能媒体に記憶されるコンピュータ実行可能命令により実施され得る。実施例は、この文脈において限定されない。
【0031】
図5は、第1のロジックフローの実例を例示する。
図5で示されるように、第1のロジックフローは、ロジックフロー500を含む。ロジックフロー500は、装置400のような、ここで説明された1つ又は複数のロジック、機構、又は装置により実行される動作のいくつか又は全てを代表し得る。より具体的には、ロジックフロー500は、少なくとも受信コンポーネント422−1、アクセスコンポーネント422−2、ルートコンポーネント422−3、又は基準コンポーネント422−4により実施され得る。
【0032】
いくつかの実例によれば、ブロック502において、ロジックフロー500は、マルチコアプロセッサの第1のPE/コア(例えば、回路420)によりサポートされる第1のVMにおいて、第1のVMにより実行される第1のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信し得る。これらの実例に関して、受信コンポーネント422−1がパケットを受信し得る。
【0033】
いくつかの実例において、ブロック504において、ロジックフロー500は、複数のフローテーブルの中から第1のフローテーブルにアクセスし得るとともに、第1のフローテーブルは、第1のアプリケーションによるサービスチェーン処理のあとでパケットを経路指定する第1のVMによる使用のためのものである。これらの実例に関して、アクセスコンポーネント422−2が第1のフローテーブルにアクセスし得る。
【0034】
いくつかの実例によれば、ブロック506において、ロジックフロー500は、追加のサービスチェーン処理のためのパケットをマルチコアプロセッサの第2の演算処理装置によりサポートされる第2のVMに経路指定することを決定し得る。これらの実例に関して、ルートコンポーネント422−3が追加のサービスチェーン処理のためのパケットを経路指定する第2のVMを決定するために第1のフローテーブルを使用し得る。
【0035】
いくつかの実例によれば、ブロック508において、ロジックフロー500は、第2のVMにより実行される第2のアプリケーションによる追加のサービスチェーン処理のためのパケットを受信する第2のVMのために、第1のVMと第2のVMとの間で共有されるメモリにおける第1の位置に対する第1の参照子を含むメッセージを第2のVMに送信し得る。これらの実例に関して、基準コンポーネント422−4が第2のVMにメッセージを送信し得るか、又は基準コンポーネント422−4が第2のVMに対するメッセージの送信をもたらし得る。
【0036】
図6は、第1の記憶媒体の実例を例示する。
図6で示されるように、第1の記憶媒体は、記憶媒体600を含む。記憶媒体600は、工業製品(article of manufacture)を含み得る。いくつかの実例において、記憶媒体600は、光記憶装置、磁気記憶装置、又は半導体記憶装置のような、あらゆる非一時的なコンピュータ読み取り可能媒体又は機械読み取り可能媒体を含み得る。記憶媒体600は、ロジックフロー500を実施する命令のような様々なタイプのコンピュータ実行可能命令を記憶し得る。コンピュータ読み取り可能記憶媒体又は機械読み取り可能記憶媒体の実例は、揮発性メモリ又は不揮発性メモリ、取り外し可能メモリ又は取り外し不可能メモリ、消去可能メモリ又は消去不能メモリ、書き込み可能メモリ又は再書き込み可能メモリなどを含んでいる、電子データを記憶することが可能であるあらゆる有形の媒体を含み得る。コンピュータ実行可能命令の実例は、ソースコード、コンパイルされたコード(compiled code)、解釈されたコード(interpreted code)、実行可能コード、静的なコード、動的なコード、オブジェクト指向のコード(object-oriented code)、視覚的コード(visual code)などのようなあらゆる適切な種類のコードを含み得る。実例は、この文脈において限定されない。
【0037】
図7は、第2の装置についての実例の構成図を例示する。
図7で示されるように、第1の装置は、装置700を含む。
図7において示される装置700は、特定の接続形態における限られた数の構成要素を有しているが、装置700は、代替の接続形態において、特定の実装用に要望される通り、より多い又はより少ない構成要素を含み得る、ということが認識され得る。
【0038】
装置700は、ホストコンピューティングプラットフォームにおいて保持されるマルチコアプロセッサのPE/コアであり得る回路720を含み得る。回路720は、1つ又は複数のソフトウェア又はファームウェアで実施されたモジュール又はコンポーネント722−aを実行することが可能であり得るホストO/S722をサポートするように配置され得る。“a”及び“b”及び“c”、並びにここで使用されると同様の指示子は、あらゆる正の整数を表す変数であることが意図される、ということは注目に値する。したがって、例えば、もし実装が値をa=2に設定するならば、その場合に、コンポーネント722−aのためのソフトウェア又はファームウェアの完全なセットは、コンポーネント722−1又は722−2を含み得る。提示された実例は、この文脈において限定されないとともに、いたるところで使用される異なる変数は、同じ整数値又は異なる整数値を示し得る。
【0039】
いくつかの実例において、回路720は、装置400について上記で言及されたプロセッサを含むが、それに限定されない、様々な商業上利用可能なプロセッサのうちのいずれかが提供するマルチコアプロセッサのPE/コアであり得る。
【0040】
いくつかの実例によれば、装置700は、構成コンポーネント722−1を含み得る。構成コンポーネント722−1は、回路720によりサポートされるホストO/S722により実行され得る。これらの実例に関して、構成コンポーネント722−1は、例えば複数のVMの中からの第1及び第2のVMの間のような2つのVMの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信し得る。これらの第1及び第2のVMは、マルチコアプロセッサの他の回路(例えば、他のPE/コア)により別々にサポートされ得る。その要求は、構成要求705に含まれ得る。
【0041】
いくつかの実例において、構成コンポーネント722−1は、最初に、第1のVM及び第2のVMにより実行される別個のアプリケーションを処理するためにサービスチェーンフローのためのパケットがたどることになっている経路を示すグローバルフローテーブルを生成することにより、バーチャルスイッチを構成し得る。グローバルフローテーブルは、グローバルフローテーブル724−aにおいて(例えばLUTにおいて)保持され得るか、又はグローバルフローテーブル724−aによって保持され得る。構成コンポーネント722−1は、次に、別個のアプリケーションによる別個の処理のあとでサービスチェーンフローのためのパケットを経路指定するためにグローバルフローテーブルを第1のVM及び第2のVMによるそれぞれの使用のための第1のフローテーブル及び第2のフローテーブルに分割し得る。これらの実例に関して、第1及び第2のフローテーブルは、VMフローテーブル725−bにおいて(例えばLUTにおいて)保持され得るか、又はVMフローテーブル725−bによって保持され得る。構成コンポーネント722−1は、次に、第1のVM及び第2のVMに対して別個の構成メッセージにおいてそれぞれのメモリアドレス範囲を送信することにより、第1のフローテーブル及び第2のフローテーブルを第1のVM及び第2のVMに示し得る。これらの別個の構成メッセージは、(複数の)構成メッセージ710に含まれ得る。
【0042】
いくつかの実例によれば、装置700は、指示コンポーネント722−2を含み得る。指示コンポーネント722−2は、回路720によりサポートされるホストO/S722により実行され得る。これらの実例に関して、指示コンポーネント722−2は、バーチャルスイッチの構成を示すために、グローバルフローテーブルのみを要求側に提供し得る。例えば、指示コンポーネント722−2は、グローバルフローテーブル724−aに保持されるグローバルフローテーブルのコピーを送信し得るか、又は要求側がグローバルフローテーブル724−aに保持されるグローバルフローテーブルの保存されたバージョンにアクセスすることを許可し得る。グローバルフローテーブルのコピー又はグローバルフローテーブルにアクセスするための情報は、構成応答メッセージ715に含まれ得る。
【0043】
ここに含まれるのは、開示されたアーキテクチャの新奇な特徴を実行するための実例の手順を代表するロジックフローのセットである。説明の簡単化の目的のために、ここに示された1つ又は複数の手順が一連の動作として示されて説明される一方、当業者は、それらの手順が動作の順序によって限定されない、ということを理解するとともに、認識するであろう。いくつかの動作は、それに従って、ここで示されて説明される動作とは違って、異なる順序で、及び/又は他の動作と並行して、発生する場合がある。例えば、当業者は、手順が、その代わりに、状態図のように、一連の相互に関係のある状態又は事象として表され得るであろう、ということを理解するとともに、認識するであろう。さらに、手順において例示された全ての動作が、新奇な実装のために必ずしも必要とされるとは限らないかもしれない。
【0044】
図8は、第2のロジックフローの実例を例示する。
図8で示されるように、第1のロジックフローは、ロジックフロー800を含む。ロジックフロー800は、装置700のような、ここで説明された1つ又は複数のロジック、機構、又は装置により実行される動作のいくつか又は全てを代表し得る。より具体的には、ロジックフロー800は、少なくとも構成コンポーネント722−1、又は指示コンポーネント722−2により実施され得る。
【0045】
いくつかの実例によれば、ブロック802において、ロジックフロー800は、マルチコアプロセッサの第1のPE/コア(例えば、回路720)によりサポートされるホストO/Sにおいて、マルチコアプロセッサのそれぞれの第2及び第3の演算処理装置により別々にサポートされる第1及び第2のVMの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信し得る。これらの実例に関して、構成コンポーネント722−1が要求を受信し得る。
【0046】
いくつかの実例において、スイッチを構成するためのロジックフロー800は、ブロック804において第1のVM及び第2のVMにより実行される別個のアプリケーションによる処理のためにサービスチェーンフローのためのパケットがたどることになっている経路を示すグローバルフローテーブルを生成するロジックフロー800を含み得る。ブロック806において、スイッチを構成することは、同様に、別個のアプリケーションによる別個の処理のあとでサービスチェーンフローのためのパケットを経路指定するためにグローバルフローテーブルを第1のVM及び第2のVMによるそれぞれの使用のための第1のフローテーブル及び第2のフローテーブルに分割することを含み得る。ブロック808において、スイッチを構成することは、同様に、第1のフローテーブル及び第2のフローテーブルを第1のVM及び第2のVMに示すことを含み得る。これらの実例に関して、ブロック804〜808に関して上記で言及されたように、構成コンポーネント722−1がバーチャルスイッチを構成し得る。
【0047】
いくつかの実例によれば、ブロック810において、ロジックフロー800は、バーチャルスイッチの構成を示すために、グローバルフローテーブルのみを要求側に提供し得る。これらの実例に関して、指示コンポーネント722−2がグローバルフローテーブルを要求側に提供し得る。
【0048】
図9は、第2の記憶媒体の実例を例示する。
図9で示されるように、第1の記憶媒体は、記憶媒体900を含む。記憶媒体900は、工業製品を含み得る。いくつかの実例において、記憶媒体900は、光記憶装置、磁気記憶装置、又は半導体記憶装置のような、あらゆる非一時的なコンピュータ読み取り可能媒体又は機械読み取り可能媒体を含み得る。記憶媒体900は、ロジックフロー800を実施する命令のような様々なタイプのコンピュータ実行可能命令を記憶し得る。コンピュータ読み取り可能記憶媒体又は機械読み取り可能記憶媒体の実例は、揮発性メモリ又は不揮発性メモリ、取り外し可能メモリ又は取り外し不可能メモリ、消去可能メモリ又は消去不能メモリ、書き込み可能メモリ又は再書き込み可能メモリなどを含んでいる、電子データを記憶することが可能であるあらゆる有形の媒体を含み得る。コンピュータ実行可能命令の実例は、ソースコード、コンパイルされたコード(compiled code)、解釈されたコード(interpreted code)、実行可能コード、静的なコード、動的なコード、オブジェクト指向のコード(object-oriented code)、視覚的コード(visual code)などのようなあらゆる適切な種類のコードを含み得る。実例は、この文脈において限定されない。
【0049】
図10は、実例のコンピューティングプラットフォーム1000を例示する。いくつかの実例において、
図10で示されるように、コンピューティングプラットフォーム1000は、処理コンポーネント1040、他のプラットフォームコンポーネント1050、又は通信インタフェース1060を含み得る。いくつかの実例によれば、コンピューティングプラットフォーム1000は、
図1において示されるホストコンピューティングプラットフォーム105のようなホストコンピューティングプラットフォームで実施され得る。
【0050】
いくつかの実例によれば、処理コンポーネント1040は、装置400/700、及び/又は記憶媒体600/900のための処理動作又はロジックを実行し得る。処理コンポーネント1040は、様々なハードウェアエレメント、ソフトウェアエレメント、又は両方の組み合わせを含み得る。ハードウェアエレメントの実例は、装置、論理回路、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子(例えば、トランジスタ、レジスタ、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体素子、チップ、マイクロチップ、チップセットなどを含み得る。ソフトウェアエレメントの実例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、デバイスドライバ、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウエア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション(機能)、メソッド(方法)、プロシージャ(手順)、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード(words)、値(values)、シンボル、又はそれらのあらゆる組み合わせを含み得る。実例がハードウェアエレメント及び/又はソフトウェアエレメントを使用して実施されるかどうかを判定することは、所定の実例に関して要求される所望の計算レート、電力レベル、耐熱性、処理サイクル量、入力データレート、出力データレート、メモリ資源、データバス速度、及び他の設計の制約又は性能の制約のようなあらゆる数の要因に従って変化し得る。
【0051】
いくつかの実例において、他のプラットフォームコンポーネント1050は、1つ又は複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺装置、インタフェース、発振器、時間計測器、ビデオカード、オーディオカード、マルチメディア入出力(I/O)コンポーネント(例えば、デジタル表示装置)、電源などのような一般的な計算要素を含み得る。メモリユニットの実例は、限定されることなく、例えば、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、強誘電性ポリマーメモリのようなポリマーメモリ、オボニックメモリ、位相変化又は強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン(SONOS)メモリ、磁気若しくは光学カード、レイド(Redundant Array of Independent Disk:RAID)デバイスのようなデバイスのアレイ、ソリッドステートメモリ装置(例えば、USBメモリ、ソリッドステートドライブ(SSD))、及び情報を格納するのに適しているあらゆる他の種類の記憶媒体のような、1つ又は複数のより高速のメモリユニットの形式の様々な種類のコンピュータ読み取り可能及び機械読み取り可能記憶媒体を含み得る。
【0052】
いくつかの実例において、通信インタフェース1060は、通信インタフェースをサポートするためのロジック及び/又は機能を含み得る。これらの実例に関して、通信インタフェース1060は、直接的な通信リンク又はネットワーク通信リンク上で通信するための様々な通信プロトコル又は標準に従って動作する1つ又は複数の通信インタフェースを含み得る。直接的通信は、PCI仕様書と関連付けられた通信プロトコル又は標準のような1つ又は複数の業界標準(後継物及び変形物を含む)において示された通信プロトコル又は標準の使用によって発生し得る。ネットワーク通信は、IEEEによって公表された1つ又は複数のイーサネット(登録商標)規格において示された通信プロトコル又は標準のような通信プロトコル又は標準の使用によって発生し得る。例えば、そのような1つのイーサネット(登録商標)規格は、IEEE802.3を含み得る。ネットワーク通信は、同様に、OpenFlow Switch Specificationのような1つ又は複数のOpenFlow仕様書に従って発生し得る。
【0053】
上記で言及されたように、コンピューティングプラットフォーム1000は、ホストコンピューティングプラットフォームで実施され得る。したがって、ここで説明されたコンピューティングプラットフォーム1000の機能及び/又は特定の構成は、サーバ又はクライアントコンピューティング装置のために適宜望まれるように、コンピューティングプラットフォーム1000の各種の実施例において含まれ得るか、又は省略され得る。
【0054】
コンピューティングプラットフォーム1000のコンポーネント及び機能は、ディスクリート回路、特定用途向け集積回路(ASIC)、論理ゲート、及び/又はシングルチップアーキテクチャのあらゆる組み合わせを用いて実施され得る。さらに、コンピューティングプラットフォーム1000の機能は、マイクロコントローラ、プログラマブルロジックアレー、及び/若しくはマイクロプロセッサ、又は、適宜適切な上記のあらゆる組み合わせを用いて実施され得る。ハードウェア、ファームウェア、及び/又はソフトウェアエレメントが、集合的に又は個別に、ここでは“ロジック”又は“回路”と呼ばれ得ることに、注意が必要である。
【0055】
図10の構成図において示される代表的なコンピューティングプラットフォーム1000が多くの潜在的な実装例のうちの1つの機能的に記述的な実例を表し得る、ということが認識されるべきである。したがって、添付の図面において描写されたブロック機能の分割、省略、又は包含は、これらの機能を実施するためのハードウェアコンポーネント、回路、ソフトウェア、及び/又は素子が、実施例において、必ず分割される、省略される、又は含まれるということを暗示しない。
【0056】
少なくとも1つの実例の1つ又は複数の態様は、プロセッサの中の様々なロジックを表す少なくとも1つの機械読み取り可能媒体に記憶される代表的な命令により実施されることができ、命令は、機械、コンピューティング装置、又はシステムにより読み取られる場合に、機械、コンピューティング装置、又はシステムに、ここで説明された技術を実行するためのロジックを構築させる。“IPコア”として知られているそのような創造物は、有形の機械読み取り可能媒体に記憶され得るとともに、ロジック又はプロセッサを実際に作る製作マシンに読み込むために、様々な顧客又は製造施設に供給され得る。
【0057】
様々な実例は、ハードウェアエレメント、ソフトウェアエレメント、又は両方の組み合わせを用いて実施され得る。いくつかの実例において、ハードウェアエレメントは、装置、コンポーネント、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、レジスタ、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体素子、チップ、マイクロチップ、チップセットなどを含み得る。いくつかの実例において、ソフトウェアエレメントは、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウエア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション(機能)、メソッド(方法)、プロシージャ(手順)、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード(words)、値(values)、シンボル、又はそれらのあらゆる組み合わせを含み得る。実例がハードウェアエレメント及び/又はソフトウェアエレメントを使用して実施されるかどうかを判定することは、所定の実装例に関して要求される所望の計算レート、電力レベル、耐熱性、処理サイクル量、入力データレート、出力データレート、メモリ資源、データバス速度、及び他の設計の制約又は性能の制約のようなあらゆる数の要因に従って変化し得る。
【0058】
いくらかの実例は、工業製品、又は少なくとも1つのコンピュータ読み取り可能媒体を含み得る。コンピュータ読み取り可能媒体は、ロジックを記憶するための非一時的記憶媒体を含み得る。いくつかの実例において、非一時的記憶媒体は、揮発性メモリ又は不揮発性メモリ、取り外し可能メモリ又は取り外し不可能メモリ、消去可能メモリ又は消去不能メモリ、書き込み可能メモリ又は再書き込み可能メモリなどを含んでいる、電子データを記憶することが可能である1つ又は複数の種類のコンピュータ読み取り可能記憶媒体を含み得る。いくつかの実例において、ロジックは、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウエア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション(機能)、メソッド(方法)、プロシージャ(手順)、ソフトウェアインタフェース、API、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード(words)、値(values)、シンボル、又はそれらのあらゆる組み合わせのような、様々なソフトウェアエレメントを含み得る。
【0059】
いくつかの実例によれば、コンピュータ読み取り可能媒体は、機械、コンピューティング装置、又はシステムにより実行される場合に、機械、コンピューティング装置、又はシステムに、説明された実例に従った方法及び/又は動作を実行させる命令を記憶又は保持するための非一時的記憶媒体を含み得る。命令は、ソースコード、コンパイルされたコード(compiled code)、解釈されたコード(interpreted code)、実行可能コード、静的なコード、動的なコードなどのようなあらゆる適切な種類のコードを含み得る。命令は、機械、コンピューティング装置、又はシステムに特定の機能を実行するように指示するための予め定義されたコンピュータ言語、様式、又は構文に従って実施され得る。命令は、あらゆる適切な高水準プログラミング言語、低水準プログラミング言語、オブジェクト指向プログラミング言語、ビジュアル(visual)プログラミング言語、コンパイルされたプログラミング言語、及び/又は解釈されたプログラミング言語を使用して実施され得る。
【0060】
いくつかの実例は、“一実例において”又は“実例”という表現をそれらの派生語と共に使用して説明され得る。これらの用語は、実例に関連して説明された特定の特徴、構造、又は特性が、少なくとも1つの実例に含まれることを意味する。本明細書における様々な場所における“一実例において”という語句の状況は、必ずしも全て同じ実例を参照しているとは限らない。
【0061】
いくつかの実例は、“結合される”及び“接続される”という表現を使用して説明され得る。これらの用語は、必ずしも相互に対する同義語を意図していない。例えば、“接続される”及び/又は“結合される”という用語を使用した説明は、2つ以上の要素が互いに直接的な物理的又は電気的接触状態にあるということを示し得る。しかしながら、“結合される”という用語は、同様に、2つ以上の要素が互いに直接的な接触状態にないが、それでもやはり互いに協同するか、又は相互作用するということを意味し得る。
【0062】
下記の実例は、ここに開示された技術の追加の実例に関連する。
【0063】
「実例1」
実例の装置は、第1のVMをサポートするための第1の演算処理装置及び第2のVMをサポートするための第2の演算処理装置を有するマルチコアプロセッサを含み得る。上記装置は、同様に、上記第1のVMにより実行される第1のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信する、上記第1のVMによる実行に適した受信コンポーネントを含み得る。上記装置は、同様に、複数のフローテーブルの中から第1のフローテーブルにアクセスする、上記第1のVMによる実行に適したアクセスコンポーネントを含み得る。上記装置は、同様に、上記第2のVMにより実行される第2のアプリケーションによる追加のサービスチェーン処理のために、上記第1のアプリケーションによるサービスチェーン処理のあとで上記パケットを上記第2のVMに経路指定するために上記第1のフローテーブルを使用する、上記第1のVMによる実行に適したルートコンポーネントを含み得る。上記装置は、同様に、上記パケットを受信する上記第2のVMのために、上記第1のVMと上記第2のVMとの間で共有されるメモリにおける第1の位置に対する第1の参照子を含むメッセージを上記第2のVMに送信する、上記第1のVMによる実行に適した基準コンポーネントを含み得る。
【0064】
「実例2」
実例1の装置であって、上記受信コンポーネントは、第3のVMから、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリにおける第2の位置に対する第2の参照子を含む第2のメッセージを受信することにより上記パケットを受信し得る。
【0065】
「実例3」
実例2の装置であって、上記第1の位置及び上記第2の位置は、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリに対する同じメモリアドレスであり得る。
【0066】
「実例4」
実例2の装置であって、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリは、上記第1のVM、上記第2のVM、及び上記第3のVMがサービスチェーン処理のための上記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを含み得る。
【0067】
「実例5」
実例1の装置であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【0068】
「実例6」
実例1の装置であって、上記複数のフローテーブルは、少なくとも上記第1のVMと上記第2のVMとの間で上記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示されるように配置され得る。
【0069】
「実例7」
実例6の装置であって、上記第1のフローテーブルは、少なくとも上記第1のVMと上記第2のVMとの間で上記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を上記第1のVMに対して分配する上記バーチャルスイッチの構成に基づいて上記第1のVMに割り当てられる上記複数のフローテーブルの中からのものであり得る。
【0070】
「実例8」
実例7の装置であって、上記マルチコアプロセッサの第4の演算処理装置は、上記バーチャルスイッチを構成するために上記第1のVMに対して上記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートし得る。
【0071】
「実例9」
実例1の装置は、同様に、ユーザにインタフェース画面を提示するために、回路に結合されたデジタルディスプレイを含み得る。
【0072】
「実例10」
実例の方法は、マルチコアプロセッサの第1の演算処理装置によりサポートされる第1のVMにおいて、上記第1のVMにより実行される第1のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信するステップを含み得る。上記方法は、同様に、複数のフローテーブルの中から第1のフローテーブルにアクセスするステップを含み得る。上記第1のフローテーブルは、上記第1のアプリケーションによるサービスチェーン処理のあとで上記パケットを経路指定する上記第1のVMによる使用のためのものであり得る。上記方法は、同様に、追加のサービスチェーン処理のための上記パケットを上記マルチコアプロセッサの第2の演算処理装置によりサポートされる第2のVMに経路指定することを決定するステップを含み得る。上記方法は、同様に、上記第2のVMにより実行される第2のアプリケーションによる上記追加のサービスチェーン処理のための上記パケットを受信する上記第2のVMのために、上記第1のVMと上記第2のVMとの間で共有されるメモリにおける第1の位置に対する第1の参照子を含むメッセージを上記第2のVMに送信するステップを含み得る。
【0073】
「実例11」
実例10の方法は、同様に、第3のVMから、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリにおける第2の位置に対する第2の参照子を含む第2のメッセージを受信することにより上記パケットを受信するステップを含み得る。
【0074】
「実例12」
実例11の方法であって、上記第1の位置及び上記第2の位置は、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリに対する同じメモリアドレスであり得る。
【0075】
「実例13」
実例11の方法であって、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリは、上記第1のVM、上記第2のVM、及び上記第3のVMが処理のための上記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを含み得る。
【0076】
「実例14」
実例10の方法であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【0077】
「実例15」
実例10の方法であって、上記複数のフローテーブルは、少なくとも上記第1のVMと上記第2のVMとの間で上記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示され得る。
【0078】
「実例16」
実例15の方法であって、上記第1のフローテーブルは、少なくとも上記第1のVMと上記第2のVMとの間で上記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を上記第1のVMに対して分配する上記バーチャルスイッチの構成に基づいて上記第1のVMに割り当てられる上記複数のフローテーブルの中からのものであり得る。
【0079】
「実例17」
実例16の方法であって、上記マルチコアプロセッサの第4の演算処理装置は、上記バーチャルスイッチを構成するために上記第1のVMに対して上記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートし得る。
【0080】
「実例18」
少なくとも1つの機械読み取り可能媒体は複数の命令を含むことができ、上記命令は、複数のVMをサポートすることができるマルチコアプロセッサを有するホストコンピューティングプラットフォームにおけるシステムにより実行されることに応答して上記システムに、実例10から実例17のいずれか1つによる方法を実行させ得る。
【0081】
「実例19」
装置は、実例10から実例17のいずれか1つの方法を実行するための手段を含み得る。
【0082】
「実例20」
実例の少なくとも1つの機械読み取り可能媒体は複数の命令を含むことができ、上記命令は、マルチコアプロセッサの第1の演算処理装置によりサポートされる第1のVMにより実行されることに応答して上記第1のVMに、上記マルチコアプロセッサの上記第1の演算処理装置によりサポートされる上記第1のVMにより実行される第1のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信させ得る。上記命令は、同様に上記第1のVMに、複数のフローテーブルの中から第1のフローテーブルにアクセスさせ得る。上記命令は、同様に上記第1のVMに、上記マルチコアプロセッサの第2の演算処理装置によりサポートされる第2のVMにより実行される第2のアプリケーションによる追加のサービスチェーン処理のために、上記第1のアプリケーションによるサービスチェーン処理のあとで上記パケットを上記第2のVMに経路指定するために上記第1のフローテーブルを使用させ得る。上記命令は、同様に上記第1のVMに、上記パケットを受信する上記第2のVMのために、上記第1のVMと上記第2のVMとの間で共有されるメモリにおける第1の位置に対する第1の参照子を含むメッセージを上記第2のVMに送信させ得る。
【0083】
「実例21」
実例20の少なくとも1つの機械読み取り可能媒体であって、上記命令は、さらに上記第1のVMに、第3のVMから、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリにおける第2の位置に対する第2の参照子を含む第2のメッセージを受信することにより上記パケットを受信させ得る。
【0084】
「実例22」
実例21の少なくとも1つの機械読み取り可能媒体であって、上記第1の位置及び上記第2の位置は、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリに対する同じメモリアドレスであり得る。
【0085】
「実例23」
実例21の少なくとも1つの機械読み取り可能媒体であって、上記第1のVM、上記第2のVM、及び上記第3のVMの間で共有される上記メモリは、上記第1のVM、上記第2のVM、及び上記第3のVMがサービスチェーン処理のための上記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを含み得る。
【0086】
「実例24」
実例20の少なくとも1つの機械読み取り可能媒体であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【0087】
「実例25」
実例20の少なくとも1つの機械読み取り可能媒体であって、上記複数のフローテーブルは、少なくとも上記第1のVMと上記第2のVMとの間で上記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示されるように配置され得る。
【0088】
「実例26」
実例25の少なくとも1つの機械読み取り可能媒体であって、上記第1のフローテーブルは、少なくとも上記第1のVMと上記第2のVMとの間で上記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を上記第1のVMに対して分配する上記バーチャルスイッチの構成に基づいて上記第1のVMに割り当てられる上記複数のフローテーブルの中からのものであり得る。
【0089】
「実例27」
実例26の少なくとも1つの機械読み取り可能媒体であって、上記マルチコアプロセッサの第4の演算処理装置は、上記バーチャルスイッチを構成するために上記第1のVMに対して上記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートし得る。
【0090】
「実例28」
実例の装置は、ホストオペレーティングシステムをサポートするための第1の演算処理装置を有するマルチコアプロセッサを含み得る。上記装置は、同様に、上記マルチコアプロセッサのそれぞれの第2及び第3の演算処理装置により別々にサポートされる第1及び第2のVMの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信する、上記ホストオペレーティングシステムによる実行に適した構成コンポーネントを含み得る。上記バーチャルスイッチを構成することは、上記構成コンポーネントが、上記第1のVM及び上記第2のVMにより実行される別個のアプリケーションによる処理のために上記サービスチェーンフローのための上記パケットがたどることになっている経路を示すグローバルフローテーブルを生成することを含み得る。上記バーチャルスイッチを構成することは、同様に、上記構成コンポーネントが、上記別個のアプリケーションによる別個の処理のあとで上記サービスチェーンフローのための上記パケットを経路指定するために上記グローバルフローテーブルを上記第1のVM及び上記第2のVMによるそれぞれの使用のための第1のフローテーブル及び第2のフローテーブルに分割することを含み得る。上記バーチャルスイッチを構成することは、同様に、上記構成コンポーネントが、上記第1のフローテーブル及び上記第2のフローテーブルを上記第1のVM及び上記第2のVMに示すことを含み得る。上記装置は、同様に、上記バーチャルスイッチの構成を示すために、上記グローバルフローテーブルのみを要求側に提供する、上記ホストオペレーティングシステムによる実行に適した指示コンポーネントを含み得る。
【0091】
「実例29」
実例28の装置であって、上記ホストオペレーティングシステムは、上記第1のVM及び上記第2のVMに上記第1のフローテーブル及び上記第2のフローテーブルを示すために、上記第1のVM及び上記第2のVMに対してバーチャルスイッチ制御経路を有し得る。
【0092】
「実例30」
実例28の装置であって、上記グローバルフローテーブルは、第1のメモリに保持されるように配置され得る。この実例に関して、上記第1のフローテーブルを上記第1のVMに示す上記構成コンポーネントは、上記第1のフローテーブルを保持する上記第1のメモリの第1のメモリアドレス範囲を提供する上記構成コンポーネントを含み得る。上記第2のフローテーブルを上記第2のVMに示す上記構成コンポーネントは、上記第2のフローテーブルを保持する上記メモリの第2のメモリアドレス範囲を提供する上記構成コンポーネントを含み得る。
【0093】
「実例31」
実例30の装置であって、上記第1のVM及び上記第2のVMは、上記第1のVMがコピーをすることなく上記パケットを経路指定することを可能にする上記第1のVMと上記第2のVMとの間で共有される第2のメモリにおける位置に対する参照子を含むメッセージを上記第1のVMが上記第2のVMに送信することを含むコピーをしない方法で、上記サービスチェーンフローのための上記パケットを経路指定することができ得る。
【0094】
「実例32」
実例31の装置であって、上記第2のメモリは、共有メモリメッシュを形成する共有メモリリングを含み得る。
【0095】
「実例33」
実例28の装置であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【0096】
「実例34」
実例28の装置は、同様に、ユーザにインタフェース画面を提示するために、回路に結合されたデジタルディスプレイを含み得る。
【0097】
「実例35」
実例の方法は、マルチコアプロセッサの第1の演算処理装置によりサポートされるホストオペレーティングシステムにおいて、上記マルチコアプロセッサのそれぞれの第2及び第3の演算処理装置により別々にサポートされる第1及び第2のVMの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信するステップを含み得る。上記バーチャルスイッチを構成することは、上記第1のVM及び上記第2のVMにより実行される別個のアプリケーションによる処理のために上記サービスチェーンフローのための上記パケットがたどることになっている経路を示すグローバルフローテーブルを生成することを含み得る。上記バーチャルスイッチを構成することは、同様に、上記別個のアプリケーションによる別個の処理のあとで上記サービスチェーンフローのための上記パケットを経路指定するために上記グローバルフローテーブルを上記第1のVM及び上記第2のVMによるそれぞれの使用のための第1のフローテーブル及び第2のフローテーブルに分割することを含み得る。上記バーチャルスイッチを構成することは、同様に、上記第1のフローテーブル及び上記第2のフローテーブルを上記第1のVM及び上記第2のVMに示すことを含み得る。上記方法は、同様に、上記バーチャルスイッチの構成を示すために、上記グローバルフローテーブルのみを要求側に提供するステップを含み得る。
【0098】
「実例36」
実例35の方法であって、上記ホストオペレーティングシステムは、上記第1のVM及び上記第2のVMに上記第1のフローテーブル及び上記第2のフローテーブルを示すために、上記第1のVM及び上記第2のVMに対してバーチャルスイッチ制御経路を有し得る。
【0099】
「実例37」
実例35の方法であって、上記グローバルフローテーブルは、第1のメモリに保持されるように配置され得る。この実例に関して、上記第1のフローテーブルを上記第1のVMに示すことは、上記第1のフローテーブルを保持する上記第1のメモリの第1のメモリアドレス範囲を提供することを含み得る。同様に、上記第2のフローテーブルを上記第2のVMに示すことは、上記第2のフローテーブルを保持する上記メモリの第2のメモリアドレス範囲を提供することを含み得る。
【0100】
「実例38」
実例37の方法であって、上記第1のVM及び上記第2のVMは、上記第1のVMがコピーをすることなく上記パケットを経路指定することを可能にする上記第1のVMと上記第2のVMとの間で共有される第2のメモリにおける位置に対する参照子を含むメッセージを上記第1のVMが上記第2のVMに送信することを含むコピーをしない方法で、上記サービスチェーンフローのための上記パケットを経路指定することができ得る。
【0101】
「実例39」
実例38の方法であって、上記第2のメモリは、共有メモリメッシュを形成する共有メモリリングを備える。
【0102】
「実例40」
実例35の方法であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【0103】
「実例41」
実例の少なくとも1つの機械読み取り可能媒体は複数の命令を含むことができ、上記命令は、ホストオペレーティングシステム及び複数のVMをサポートすることができるマルチコアプロセッサを有するホストコンピューティングプラットフォームにおけるシステムにより実行されることに応答して上記システムに、実例35から実例40のいずれか1つによる方法を実行させ得る。
【0104】
「実例42」
実例の装置は、実例35から実例40のいずれか1つの方法を実行するための手段を含み得る。
【0105】
「実例43」
実例の少なくとも1つの機械読み取り可能媒体は複数の命令を含むことができ、上記命令は、マルチコアプロセッサの第1の演算処理装置によりサポートされるホストオペレーティングシステムにより実行されることに応答して上記ホストオペレーティングシステムに、上記マルチコアプロセッサのそれぞれの第2及び第3の演算処理装置により別々にサポートされる第1及び第2のVMの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信させ得る。この実例に関して、上記バーチャルスイッチを構成することは、上記命令が、上記ホストオペレーティングシステムに、上記第1のVM及び上記第2のVMにより実行される別個のアプリケーションによる処理のために上記サービスチェーンフローのための上記パケットがたどることになっている経路を示すグローバルフローテーブルを生成させることを含み得る。上記バーチャルスイッチを構成することは、同様に、上記命令が、上記ホストオペレーティングシステムに、上記別個のアプリケーションによる別個の処理のあとで上記サービスチェーンフローのための上記パケットを経路指定するために上記グローバルフローテーブルを上記第1のVM及び上記第2のVMによるそれぞれの使用のための第1のフローテーブル及び第2のフローテーブルに分割させることを含み得る。上記バーチャルスイッチを構成することは、同様に、上記命令が、上記ホストオペレーティングシステムに、上記第1のフローテーブル及び上記第2のフローテーブルを上記第1のVM及び上記第2のVMに示させることを含み得る。上記命令は、さらに上記ホストオペレーティングシステムに、上記バーチャルスイッチの構成を示すために、上記グローバルフローテーブルのみを要求側に提供させ得る。
【0106】
「実例44」
実例43の少なくとも1つの機械読み取り可能媒体であって、上記ホストオペレーティングシステムは、上記第1のVM及び上記第2のVMに対してバーチャルスイッチ制御経路を有し得る。上記命令は、さらに、上記ホストオペレーティングシステムに、上記バーチャルスイッチ制御経路を通して、上記第1のVM及び上記第2のVMに上記第1のフローテーブル及び上記第2のフローテーブルを示させ得る。
【0107】
「実例45」
実例43の少なくとも1つの機械読み取り可能媒体であって、上記グローバルフローテーブルは、第1のメモリに保持されるように配置され得る。上記命令は、さらに、上記ホストオペレーティングシステムに、上記第1のフローテーブルを保持する上記第1のメモリの第1のメモリアドレス範囲を提供することにより、上記第1のフローテーブルを上記第1のVMに示させ得るとともに、上記第2のフローテーブルを保持する上記メモリの第2のメモリアドレス範囲を提供することにより、上記第2のフローテーブルを上記第2のVMに示させ得る。
【0108】
「実例46」
実例45の少なくとも1つの機械読み取り可能媒体であって、上記第1のVM及び上記第2のVMは、上記第1のVMがコピーをすることなく上記パケットを経路指定することを可能にする上記第1のVMと上記第2のVMとの間で共有される第2のメモリにおける位置に対する参照子を含むメッセージを上記第1のVMが上記第2のVMに送信することを含むコピーをしない方法で、上記サービスチェーンフローのための上記パケットを経路指定することができ得る。
【0109】
「実例47」
実例46の少なくとも1つの機械読み取り可能媒体であって、上記第2のメモリは、共有メモリメッシュを形成する共有メモリリングを含み得る。
【0110】
「実例48」
実例43の少なくとも1つの機械読み取り可能媒体であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【0111】
読者が技術的開示の性質を迅速に確かめることを可能にするであろう要約を要求する連邦規則法典第37巻セクション1.72(b)(37C.F.R. Section 1.72(b))に適合するように、本開示の要約が提供されるということが強調される。要約は、要約が請求項の範囲又は意味を解釈するか、又は限定するために使用されないであろう、という了解のもとに提出される。さらに、前述の詳細な説明において、本開示を合理化する目的で様々な特徴が1つの実例に集められるということが理解され得る。本開示のこの方法は、主張された実例が、各請求項において明確に暗唱される特徴より更なる特徴を必要とする意図を反映する、と解釈されるべきではない。それどころか、添付の請求項が反映するように、発明の主題は、単一の開示された実例の全ての特徴より少ない状態にある。したがって、添付の請求項は、この結果、各請求項が個別の実例として独立している状態で詳細な説明の中に組み込まれる。添付の請求項において、“含む(including)”及び“その中で(in which)”という用語は、それぞれ“備える(comprising)”及び“ここで(wherein)”という用語の分かりやすい英語の等価物として使用される。さらに、“第1の”、“第2の”、及び“第3の”などの用語は、単にラベルとして使用され、数値的な要求をそれらの対象物に課すことを意図していない。
【0112】
主題は、構造上の特徴及び/又は方法論的な動作に特有の言語で説明されているが、添付の請求項において定義された主題は、上記で説明された特定の特徴又は動作に必ずしも限定されるとは限らない、ということが理解されるべきである。それどころか、上記で説明された特定の特徴又は動作は、請求項を実施することの実例形態として開示される。