(57)【特許請求の範囲】
【請求項１】
第１のバーチャルマシン（ＶＭ）をサポートするための第１の演算処理装置及び第２のＶＭをサポートするための第２の演算処理装置を有するマルチコアプロセッサと、
前記第１のＶＭにより実行される第１のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信する、前記第１のＶＭによる実行に適した受信コンポーネントと、
複数のフローテーブルの中から第１のフローテーブルにアクセスする、前記第１のＶＭによる実行に適したアクセスコンポーネントと、
前記第２のＶＭにより実行される第２のアプリケーションによる追加のサービスチェーン処理のために、前記第１のアプリケーションによるサービスチェーン処理のあとで前記パケットを前記第２のＶＭに経路指定するために前記第１のフローテーブルを使用する、前記第１のＶＭによる実行に適したルートコンポーネントと、
前記パケットを受信する前記第２のＶＭのために、前記第１のＶＭと前記第２のＶＭとの間で共有されるメモリにおける第１の位置に対する第１の参照子を含むメッセージを前記第２のＶＭに送信する、前記第１のＶＭによる実行に適した基準コンポーネントとを備える、装置。
【請求項２】
前記受信コンポーネントが、第３のＶＭから、前記第１のＶＭ、前記第２のＶＭ、及び前記第３のＶＭの間で共有される前記メモリにおける第２の位置に対する第２の参照子を含む第２のメッセージを受信することにより前記パケットを受信する、請求項１に記載の装置。
【請求項３】
前記第１の位置及び前記第２の位置が、前記第１のＶＭ、前記第２のＶＭ、及び前記第３のＶＭの間で共有される前記メモリに対する同じメモリアドレスである、請求項２に記載の装置。
【請求項４】
前記第１のＶＭ、前記第２のＶＭ、及び前記第３のＶＭの間で共有される前記メモリが、前記第１のＶＭ、前記第２のＶＭ、及び前記第３のＶＭがサービスチェーン処理のための前記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを備える、請求項２に記載の装置。
【請求項５】
前記サービスチェーンフローが、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものである、請求項１に記載の装置。
【請求項６】
前記複数のフローテーブルが、少なくとも前記第１のＶＭと前記第２のＶＭとの間で前記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示されるように配置される、請求項１に記載の装置。
【請求項７】
前記第１のフローテーブルが、少なくとも前記第１のＶＭと前記第２のＶＭとの間で前記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を前記第１のＶＭに対して分配する前記バーチャルスイッチの構成に基づいて前記第１のＶＭに割り当てられる前記複数のフローテーブルの中からのものである、請求項６に記載の装置。
【請求項８】
前記マルチコアプロセッサの第４の演算処理装置が、前記バーチャルスイッチを構成するために前記第１のＶＭに対して前記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートする、請求項７に記載の装置。
【請求項９】
複数の命令を備える少なくとも１つの機械読み取り可能媒体であって、前記命令が、マルチコアプロセッサの第１の演算処理装置によりサポートされる第１のバーチャルマシン（ＶＭ）により実行されることに応答して前記第１のＶＭに、
前記マルチコアプロセッサの前記第１の演算処理装置によりサポートされる前記第１のＶＭにより実行される第１のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信させ、
複数のフローテーブルの中から第１のフローテーブルにアクセスさせ、
前記マルチコアプロセッサの第２の演算処理装置によりサポートされる第２のＶＭにより実行される第２のアプリケーションによる追加のサービスチェーン処理のために、前記第１のアプリケーションによるサービスチェーン処理のあとで前記パケットを前記第２のＶＭに経路指定するために前記第１のフローテーブルを使用させ、
前記パケットを受信する前記第２のＶＭのために、前記第１のＶＭと前記第２のＶＭとの間で共有されるメモリにおける第１の位置に対する第１の参照子を含むメッセージを前記第２のＶＭに送信させる、少なくとも１つの機械読み取り可能媒体。
【請求項１０】
前記命令が、さらに前記第１のＶＭに、第３のＶＭから、前記第１のＶＭ、前記第２のＶＭ、及び前記第３のＶＭの間で共有される前記メモリにおける第２の位置に対する第２の参照子を含む第２のメッセージを受信することにより前記パケットを受信させる、請求項９に記載の少なくとも１つの機械読み取り可能媒体。
【請求項１１】
前記第１の位置及び前記第２の位置が、前記第１のＶＭ、前記第２のＶＭ、及び前記第３のＶＭの間で共有される前記メモリに対する同じメモリアドレスである、請求項１０に記載の少なくとも１つの機械読み取り可能媒体。
【請求項１２】
前記第１のＶＭ、前記第２のＶＭ、及び前記第３のＶＭの間で共有される前記メモリが、前記第１のＶＭ、前記第２のＶＭ、及び前記第３のＶＭがサービスチェーン処理のための前記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを備える、請求項１０に記載の少なくとも１つの機械読み取り可能媒体。
【請求項１３】
前記複数のフローテーブルが、少なくとも前記第１のＶＭと前記第２のＶＭとの間で前記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示されるように配置される、請求項１１に記載の少なくとも１つの機械読み取り可能媒体。
【請求項１４】
前記第１のフローテーブルが、少なくとも前記第１のＶＭと前記第２のＶＭとの間で前記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を前記第１のＶＭに対して分配する前記バーチャルスイッチの構成に基づいて前記第１のＶＭに割り当てられる前記複数のフローテーブルの中からのものである、請求項１３に記載の少なくとも１つの機械読み取り可能媒体。
【請求項１５】
前記マルチコアプロセッサの第４の演算処理装置が、前記バーチャルスイッチを構成するために前記第１のＶＭに対して前記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートする、請求項１４に記載の少なくとも１つの機械読み取り可能媒体。
【請求項１６】
ホストオペレーティングシステムをサポートするための第１の演算処理装置を有するマルチコアプロセッサと、
前記マルチコアプロセッサのそれぞれの第２及び第３の演算処理装置により別々にサポートされる第１及び第２のバーチャルマシン（ＶＭ）の間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信する、前記ホストオペレーティングシステムによる実行に適した構成コンポーネントであって、前記バーチャルスイッチを構成することが、当該構成コンポーネントが、
前記第１のＶＭ及び前記第２のＶＭにより実行される別個のアプリケーションによる処理のために前記サービスチェーンフローのための前記パケットがたどることになっている経路を示すグローバルフローテーブルを生成し、
前記別個のアプリケーションによる別個の処理のあとで前記サービスチェーンフローのための前記パケットを経路指定するために前記グローバルフローテーブルを前記第１のＶＭ及び前記第２のＶＭによるそれぞれの使用のための第１のフローテーブル及び第２のフローテーブルに分割し、そして
前記第１のフローテーブル及び前記第２のフローテーブルを前記第１のＶＭ及び前記第２のＶＭに示す
ことを含む、前記構成コンポーネントと、
前記バーチャルスイッチの構成を示すために、前記グローバルフローテーブルのみを要求側に提供する、前記ホストオペレーティングシステムによる実行に適した指示コンポーネントとを備える、装置。
【請求項１７】
前記ホストオペレーティングシステムが、前記第１のＶＭ及び前記第２のＶＭに前記第１のフローテーブル及び前記第２のフローテーブルを示すために、前記第１のＶＭ及び前記第２のＶＭに対してバーチャルスイッチ制御経路を有する、請求項１６に記載の装置。
【請求項１８】
前記グローバルフローテーブルが、第１のメモリに保持されるように配置され、
前記第１のフローテーブルを前記第１のＶＭに示す前記構成コンポーネントが、前記第１のフローテーブルを保持する前記第１のメモリの第１のメモリアドレス範囲を提供する前記構成コンポーネントを含み、
前記第２のフローテーブルを前記第２のＶＭに示す前記構成コンポーネントが、前記第２のフローテーブルを保持する前記メモリの第２のメモリアドレス範囲を提供する前記構成コンポーネントを含む、請求項１６に記載の装置。
【請求項１９】
前記第１のＶＭ及び前記第２のＶＭが、前記第１のＶＭがコピーをすることなく前記パケットを経路指定することを可能にする前記第１のＶＭと前記第２のＶＭとの間で共有される第２のメモリにおける位置に対する参照子を含むメッセージを前記第１のＶＭが前記第２のＶＭに送信することを含むコピーをしない方法で、前記サービスチェーンフローのための前記パケットを経路指定することができる、請求項１８に記載の装置。
【請求項２０】
前記サービスチェーンフローが、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものである、請求項１６に記載の装置。
【請求項２１】
マルチコアプロセッサの第１の演算処理装置によりサポートされるホストオペレーティングシステムにおいて、前記マルチコアプロセッサのそれぞれの第２及び第３の演算処理装置により別々にサポートされる第１及び第２のバーチャルマシン（ＶＭ）の間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信するステップであって、前記バーチャルスイッチを構成することが、
前記第１のＶＭ及び前記第２のＶＭにより実行される別個のアプリケーションによる処理のために前記サービスチェーンフローのための前記パケットがたどることになっている経路を示すグローバルフローテーブルを生成し、
前記別個のアプリケーションによる別個の処理のあとで前記サービスチェーンフローのための前記パケットを経路指定するために前記グローバルフローテーブルを前記第１のＶＭ及び前記第２のＶＭによるそれぞれの使用のための第１のフローテーブル及び第２のフローテーブルに分割し、そして
前記第１のフローテーブル及び前記第２のフローテーブルを前記第１のＶＭ及び前記第２のＶＭに示す
ことを含む、ステップと、
前記バーチャルスイッチの構成を示すために、前記グローバルフローテーブルのみを要求側に提供するステップとを含む、方法。
【請求項２２】
前記ホストオペレーティングシステムが、前記第１のＶＭ及び前記第２のＶＭに前記第１のフローテーブル及び前記第２のフローテーブルを示すために、前記第１のＶＭ及び前記第２のＶＭに対してバーチャルスイッチ制御経路を有する、請求項２１に記載の方法。
【請求項２３】
前記グローバルフローテーブルが、第１のメモリに保持されるように配置され、前記第１のフローテーブルを前記第１のＶＭに示すことが、前記第１のフローテーブルを保持する前記第１のメモリの第１のメモリアドレス範囲を提供することを含み、前記第２のフローテーブルを前記第２のＶＭに示すことが、前記第２のフローテーブルを保持する前記メモリの第２のメモリアドレス範囲を提供することを含む、請求項２１に記載の方法。
【請求項２４】
複数の命令を備える少なくとも１つの機械読み取り可能媒体であって、前記命令が、ホストオペレーティングシステム及び複数のバーチャルマシン（ＶＭ）をサポートすることができるマルチコアプロセッサを有するホストコンピューティングプラットフォームにおけるシステムにより実行されることに応答して前記システムに、請求項２１から請求項２３のいずれか一項に記載の方法を実行させる、少なくとも１つの機械読み取り可能媒体。
【請求項２５】
請求項２１から請求項２３のいずれか一項に記載の方法を実行するための手段を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
ここで説明される実例は、一般に、バーチャルマシンにより実行されるアプリケーションによる処理のためのパケットを経路指定することに関する。
【背景技術】
【０００２】
クライアントコンピューティング装置に結合されたネットワークサーバを含み得るコンピューティングプラットフォームは、増加しているとともに、複数のオペレーティングシステム及び／又はアプリケーションが１つ又は複数のマルチコアプロセッサを含んでいる単一のコンピューティングプラットフォームにより実行されることを可能にする（複数の）バーチャルマシン（virtual  machine：ＶＭ）をサポート又はホストするように配置される。マルチコアプロセッサの演算処理装置又はコアは、複数のＶＭをサポートすることが可能であり得る。各ＶＭは、少なくとも１つのアプリケーションを別々に実行することが可能であり得る。いくつかの実例において、ネットワークサーバは、負荷バランサー、ファイアウォール、又は侵入検知システムのようなネットワークサービスのセットを提供するように配置され得る。場合によっては、ネットワークサービスのセットは、サービスチェーンと呼ばれ得る。アプリケーションを別々に実行することが可能であるＶＭは、サービスチェーンフローに従って、クライアントから受け取られたネットワークパケットを処理するように配置され得る。
【０００３】
ＶＭの間でサービスチェーンフローのためのパケットを経路指定するように配置されるソフトウェアバーチャルスイッチが、ますます更に一般的になってきている。２０１４年３月に公表されたＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎバージョン１．３．４及び／又はこの標準の後のバージョンを含んでいる１つ又は複数の業界標準又は仕様書により説明されたバーチャルスイッチング技術のような現在のバーチャルスイッチング技術は、ＶＭの間でサービスチェーンフローのためのパケットを交換するために、ホストオペレーティングシステム上で動作している又は実行している１つのバーチャルスイッチアプリケーションを当てにし得る。ネットワーク機能仮想化（network  function  virtualization：ＮＦＶ）配置において、複数のスレッドは、バーチャルスイッチング専用であり得る。これらのスレッドは、マルチコアプロセッサの複数のコアと親密な関係を有し得るとともに、その場合に、それらは、ＶＭの間でサービスチェーンフローのためのパケットを交換するために主として又はもっぱら使用される。
【図面の簡単な説明】
【０００４】
【図１】実例の第１のシステムを例示する図である。
【図２】実例の第２のシステムを例示する図である。
【図３】実例の共有メモリメッシュを例示する図である。
【図４】第１の装置についての実例の構成図を例示する図である。
【図５】第１のロジックフローの実例を例示する図である。
【図６】第１の記憶媒体の実例を例示する図である。
【図７】第２の装置についての実例の構成図を例示する図である。
【図８】第２のロジックフローの実例を例示する図である。
【図９】第２の記憶媒体の実例を例示する図である。
【図１０】実例のコンピューティングプラットフォームを例示する図である。
【発明を実施するための形態】
【０００５】
本開示で熟考されたように、ＮＦＶ配置は、ＶＭの間でサービスチェーンフローのためのパケットを交換することに対して専用であるマルチコアプロセッサの複数の物理的コアをもたらす。複数の物理的コアを専用にすることは、少なくとも２つの理由のために問題を含む可能性がある。第１に、複数のコアがソフトウェアバーチャルスイッチに対して専用にされる場合に、これらのコアは、特にＮＦＶ配置において典型的な高いパケットレートでボトルネックになり得る。潜在的なボトルネックは、追加のサービスを含むためのサービスチェーンの可能な拡張を制限し得る。ボトルネックは、ピークパケットトラフィック期間の間の受容しがたいスイッチング待ち時間及び／又はスループットにつながるかもしれず、したがって、サービスチェーンにおけるリンクは、受容しがたいスイッチング待ち時間又は性能を回避するために、制限される可能性がある。第２に、バーチャルスイッチにより受け取られたサービスチェーンフローのための全てのパケットは分類される必要がある。この分類の必要性は、サービスチェーンフローのためのパケットを経路指定する場合に、バーチャルスイッチをなお一層のボトルネックにする可能性がある。例えば、５つの異なるＶＭにより実行されるアプリケーションによってサービスされた実例のサービスチェーンフローは、アプリケーションによる処理のために５つの異なるＶＭを通って横断するパケットを有しているかもしれない。５つの異なるＶＭを通って横断することは、同様に６回バーチャルスイッチを横切るサービスチェーンフローをもたらし得る。
【０００６】
スレッドがコア、コアを共有するいくらかのスレッドを横断して自由にスケジュールされることを可能にすること、又は新しいスレッドの創造を可能にすることのようなボトルネックになるソフトウェアバーチャルスイッチの影響を制限するために、いくつかの試みが行われた。しかしながら、スレッドスケジューリングに関連するオーバヘッドのために、性能は劣るかもしれない。影響を制限する別のオプションは、複数のＶＭを固定した経路においてつなぐことであり得る。このオプションは、バーチャルスイッチの必要性を取り除くであろうが、しかし、同様に、ＶＭを通してサービスチェーンフローのための経路を制御する能力を取り除くであろう。これは、所定のサービスチェーンと関連付けられた作業負荷及びサービスタイプにおける変動を経験し得る適当な動的環境において柔軟性を減少させ得る。ここで説明された実例が必要とされるのは、これらの課題に関することである。
【０００７】
いくつかの第１の実例によれば、ＶＭの間でサービスチェーンフローパケットを経路指定するための技術は、マルチコアプロセッサの第１の演算処理装置によりサポートされるホストオペレーティングシステムにおいて、マルチコアプロセッサのそれぞれの第２及び第３の演算処理装置により別々にサポートされる第１及び第２のＶＭの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信することを含み得る。これらの第１の実例に関して、バーチャルスイッチを構成することは、第１のＶＭ及び第２のＶＭにより実行される別個のアプリケーションによる処理のためにサービスチェーンフローのためのパケットがたどることになっている経路を示すグローバルフローテーブルを生成することを含み得る。バーチャルスイッチを構成することは、同様に、別個のアプリケーションによる別個の処理のあとでサービスチェーンフローのためのパケットを経路指定するためにグローバルフローテーブルを第１のＶＭ及び第２のＶＭによるそれぞれの使用のための第１のフローテーブル及び第２のフローテーブルに分割することを含み得る。バーチャルスイッチを構成することは、同様に、第１のフローテーブル及び第２のフローテーブルを第１のＶＭ及び第２のＶＭに示すことを含み得る。その場合に、グローバルフローテーブルのみが、バーチャルスイッチの構成を示すために、要求側に提供され得る。
【０００８】
いくつかの第２の実例において、ＶＭの間でサービスチェーンフローパケットを経路指定するための技術は、マルチコアプロセッサの第１の演算処理装置によりサポートされる第１のＶＭにおいて、第１のＶＭにより実行される第１のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信することを含み得る。技術は、同様に、複数のフローテーブルの中から第１のフローテーブルにアクセスすることを含み得るとともに、第１のフローテーブルは、第１のアプリケーションによるサービスチェーン処理のあとでパケットを経路指定する第１のＶＭによる使用のためのものである。技術は、同様に、追加のサービスチェーン処理のためのパケットをマルチコアプロセッサの第２の演算処理装置によりサポートされる第２のＶＭに経路指定することを決定することを含み得る。技術は、同様に、第２のＶＭにより実行される第２のアプリケーションによる追加のサービスチェーン処理のためのパケットを受信する第２のＶＭのために、第１のＶＭと第２のＶＭとの間で共有されるメモリにおける第１の位置に対する第１の参照子を含むメッセージを第２のＶＭに送信することを含み得る。
【０００９】
図１は、実例の第１のシステムを例示する。いくつかの実例において、図１で示されるように、第１の実例システムは、システム１００を含む。システム１００は、複数の演算処理装置（processing  element：ＰＥ）／コア１１２−１〜１１２−ｎを含むマルチコアプロセッサ１１０を有するホストコンピューティングプラットフォーム１０５を含み、ここで、“ｎ”は１より大きいあらゆる正の全ての整数である。いくつかの実例によれば、ＰＥ／コア１１２−１〜１１２−ｎは、図１においてＶＭ１からＶＭｍとして示されるＶＭを別々にサポートする能力を有することができるか、又はＶＭを別々にサポートするように配置されることができ、ここで、ｍ＝ｎ−１である。同様に、各ＰＥ／コアは、ホストオペレーティングシステム（operating  system：Ｏ／Ｓ）（例えばＰＥ／コア１１２−１のような）をサポートすることが可能であり得る。各ＶＭは、１つ又は複数のアプリケーションを遂行又は実行し得るバーチャル中央演算処理装置（virtual  central  processing  unit：ＶＣＰＵ）を有するように配置され得る（例えば、ＶＭ１〜ＶＭｍ）。
【００１０】
いくつかの実例によれば、ＶＭは、物理的機械と同様の、プログラム又はアプリケーションを実行し得るコンピュータのような機械のソフトウェア実装であり得る。ＶＭは、使用法及び現実の計算機に対する一致の程度に基づき得る２つの実例クラスに分割され得る。第１の実例クラスは、システムＶＭであり得る。システムＶＭは、完全なＯ／Ｓの実行をサポートする完全なシステムプラットフォームを提供し得る。システムＶＭは、現存するアーキテクチャをエミュレートし得るとともに、現実のハードウェアが使用可能ではないかもしれない（例えば、そうでなければ旧式のプラットフォームで実行する）場合においてプログラム／アプリケーションを実行するためのプラットフォームを提供すること、又はコンピューティング資源の更に効率的な使用のためにバーチャルマシンの複数のインスタンスを有することを目的として形成され得る。システムＶＭは、ユーザ又はクライアントの視点からは現実のサーバとして見えるようにサーバをバーチャル化する“コンテナ”と呼ばれる複数の分離されたユーザスペースインスタンスを可能にするコンテナ技術（Container）と呼ばれる技術に基づいていても良い。第２の実例クラスは、プロセスＶＭであり得る。プロセスＶＭは、単一のプログラム／アプリケーションを実行する、及び／又は、単一のプロセスをサポートするように設計され得る。
【００１１】
いくつかの実例において、図１で示されるように、ホストコンピューティングプラットフォーム１０５は、ネットワーク１４０を通って経路指定されるネットワーク（ＮＷ）通信チャンネル１４２によってクライアント１５０に結合され得る。外部ＮＷインタフェース１１１は、ＰＥ／コア１１２−２〜１２−ｎによりサポートされるＶＭ１〜ＶＭｍにより実行される１つ又は複数のアプリケーションによる最終的な処理のために、ＮＷ通信チャンネル１４２を通してネットワークパケットを受信することが可能であり得る。例えば、メモリ１２０は、受信したあとで、及び／又は、ＶＭ１〜ＶＭｍにより実行される１つ又は複数のアプリケーションによる処理のあとで、これらのパケットの少なくとも一部分を少なくとも一時的に保持するように配置され得る。いくつかの実例によれば、ホストコンピューティングプラットフォーム１０５は、ネットワークサービスをクライアント１５０のようなクライアントに提供するように配置されるデータセンタ又はサーバファームに配置され得る。
【００１２】
いくつかの実例において、図１で示されるように、ネットワークマネージャ１６０は、ネットワーク１７０を通って経路指定される内部ＮＷ通信チャンネル１７２によってホストコンピューティングプラットフォーム１０５に結合し得る。いくつかの実例によれば、内部ＮＷ通信チャンネル１７２は、コンピューティングプラットフォーム１０５における内部ＮＷインタフェースを通してホストＯ／Ｓをサポートするように配置されるＰＥ／コアに結合し得る。例えば、図１で示されるように、ＰＥ／コア１１２−１は、ホストＯ／Ｓをサポートし得るとともに、内部ネットワークインタフェース１１３を通して内部ＮＷ通信チャンネル１７２に結合され得る。
【００１３】
さらに下記で説明されるように、ネットワークマネージャ１６０のようなネットワークマネージャは、ＶＭ（例えばＶＭ１〜ＶＭｍ）の間でサービスチェーンフロー１３０のようなサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を送信することができ得る。要求は、内部ＮＷ通信チャンネル１７２のような内部ＮＷ通信チャンネルを通して送信され得るとともに、ＰＥ／コア１１２−１のようなマルチコアプロセッサ１１０のＰＥ／コアによりサポートされるホストＯ／Ｓにより受信され得る。要求は、内部ＮＷインタフェース１１３のような内部ＮＷインタフェースを通して受信され得る。同様に、バーチャルスイッチ（virtual  switch：ＶＳｗｉｔｃｈ）制御経路１１５のようなＶＳｗｉｔｃｈ制御経路が、ホストＯ／Ｓとサービスチェーンフロー１３０のためのパケットを処理するアプリケーションを実行する各ＶＭとの間で確立され得る。
【００１４】
いくつかの実例によれば、さらに下記で説明されるように、サービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチの構成は、ＶＭにより別々に実行されるアプリケーションによるサービスチェーン処理のあとでサービスチェーンフローのためのパケットを経路指定することを可能にする、ＶＭの間のバーチャルスイッチロジックの分配を含み得る。バーチャルスイッチロジックの分配は、グローバルフローテーブルを生成し、次に、ＶＭにより実行されるアプリケーションによる別個の処理のあとでサービスチェーンフローのためのパケットを経路指定するためにグローバルフローテーブルをそれぞれのＶＭにより使用されるべき別個のフローテーブルに分割することを含み得る。これらの実例に関して、要求側（例えば、ネットワークマネージャ１６０）は、グローバルフローテーブルだけを見ることができるか、又はグローバルフローテーブルだけにアクセスすることができる。一方、サービスチェーンフローのためのパケットを処理するアプリケーションを実行しているＶＭは、グローバルフローテーブルから分割されたそれらのそれぞれのフローテーブルだけを見ることができるか、又はグローバルフローテーブルから分割されたそれらのそれぞれのフローテーブルだけにアクセスすることができる。
【００１５】
いくつかの実例において、サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。実例は、これらのタイプのサービスチェーンのみに限定されず、他のタイプが熟考される。同様に、これらの実例に関して、マルチコアプロセッサのＰＥ／コアによりサポートされるＶＭにより別々に実行されるアプリケーションは、それぞれ、サービスチェーンフローのためのパケットを処理するように配置され得る。サービスチェーンのタイプに応じて、各アプリケーションは、特定のネットワークサービスを実行するようにパケットを処理し得る。例えば、電子メールサービスチェーンは、ウイルス検出、スパム検出、又はフィッシング検出のようなネットワークサービスを含み得る。例えば、サービスプロバイダサービスチェーンは、ディープパケットインスペクション（deep  packet  inspection）又はトラフィックモデリング（traffic  modeling）のためのネットワークサービスを含み得る。
【００１６】
図２は、実例の第２のシステムを例示する。図２で示されるように、実例の第２のシステムは、システム２００を含む。いくつかの実例において、システム２００は、図１において示されるマルチコアプロセッサ１１０と同様にマルチコアプロセッサの一部であり得るＰＥ／コア２１２−１〜２１２−ｎを含み得る。これらの実例に関して、図２で示されるように、ＰＥ／コア２１２−１は、ホストＯ／Ｓをサポートし、一方、ＰＥ／コア２１２−２〜２１２−ｎは、ＶＭ１〜ＶＭｍとして識別されるＶＭをサポートする。ＶＭ１〜ＶＭｍは、０からｑまでのそれぞれのアプリケーション（Ａｐｐ）を実行する能力を有することができ、ここで、“ｑ”は、５より大きいあらゆる全ての正の整数に等しい。
【００１７】
いくつかの実例によれば、ネットワークマネージャ２６０は、ＰＥ／コア２１２−１によりサポートされるホストＯ／Ｓに送信されホストＯ／Ｓにより処理される要求によってユーザがバーチャルスイッチを構成するための手段（例えば、ディスプレイを備えたキーボード／タッチスクリーン）を含み得る。要求は、それぞれのＡｐｐ（０）〜Ａｐｐ（ｑ）による処理のために、ＶＭ（ＶＭ１〜ＶＭｍ）の間でサービスチェーンフロー２３０のためのパケットを経路指定するようにバーチャルスイッチを構成することであり得る。これらの実例に関して、バーチャルスイッチを構成することは、それぞれのＶＭ（ＶＭ１〜ＶＭｍ）により実行されるアプリケーションＡｐｐ（０）〜Ａｐｐ（ｑ）による処理のためにサービスチェーンフローのためのパケットがたどることができる経路をユーザ又は要求側に示すグローバルフローテーブル２４０を生成することを含み得る。バーチャルスイッチを構成することは、同様に、グローバルフローテーブル２４０をＶＭ１〜ＶＭｍの各ＶＭのための別個のフローテーブルに分割し、次にそれぞれのＶＭ（ＶＭ１〜ＶＭｍ）に別個のフローテーブルを示すことを含み得る。バーチャルスイッチロジックの少なくとも一部分を実行することが可能である各ＶＭにより、ホストＯ／Ｓの資源、及び／又は、ＰＥ／コア２１２−１の資源をスイッチングのために消費することを、回避することが可能であり得る。このスイッチングの回避は、ＰＥ／コア資源を解放し得る。
【００１８】
いくつかの実例において、図２で示されるように、ＶＳｗｉｔｃｈ制御経路１１５は、ホストＯ／Ｓを、それぞれのアプリケーションＡｐｐ（０）〜Ａｐｐ（ｑ）を実行しているＶＭ（ＶＭ１〜ＶＭｍ）に結合し得る。これらの実例に関して、ホストＯ／Ｓのロジック及び／若しくは機能、並びに／又は、ＰＥ／コア２１２−１のロジック及び／若しくは機能は、ＶＳｗｉｔｃｈ制御経路１１５によって、別個のフローテーブルを示すことが可能であり得る。例えば、示すことは、グローバルフローテーブル２４０から分割されたそれぞれのフローテーブルを保持するように配置されるメモリ２２０におけるメモリアドレス範囲を提供することを含み得る。これらの実例に関して、ＶＭ１〜ＶＭｍによる使用のために個別のフローテーブルを提供することにより、各ＶＭは、これらのパケットを処理するアプリケーションを実行するように構成されるＶＭの間でサービスチェーンフロー２３０のためのパケットを経路指定するために、バーチャルスイッチロジックの少なくとも一部分を実行することが可能であり得る。
【００１９】
いくつかの実例によれば、各ＶＭのフローテーブルは、どこでサービスチェーンフロー２３０のためのパケットが受信され得るかを示すために、送信元アドレス情報（例えば、送信元メディアアクセスコントロール（media  access  control：ＭＡＣ）アドレス）を含み得る。各ＶＭのフローテーブルは、同様に、特定のＶＭにより実行されるアプリケーションによる処理のあとでどこにサービスチェーンフロー２３０のためのパケットが経路指定され得るかを示すために、送信先アドレス情報（例えば、送信先ＭＡＣアドレス）を含み得る。
【００２０】
図３は、実例の共有メモリメッシュ３００を例示する。図３で示されるように、共有メモリメッシュ３００は、共有メモリメッシュ３００を構成するように互いに結合されるＰＥ／コア２１２−２〜２１２−ｎを示す。いくつかの実例によれば、共有メモリメッシュ３００は、ＶＭ１〜ＶＭｍの中からの各ＶＭが図２で示されるサービスチェーンフロー２３０のためのパケットのようなサービスチェーンのためのパケットを受信することを可能にすることができる共有メモリリング（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ））を含み得る。これらの実例に関して、それらのパケットは、コピーをしない方法で（in  a  zero-copy  manner）受信され得る。例えば、ＰＥ／コア２１２−２におけるＡｐｐ（０）による処理のあとで、ＶＭ１は、サービスチェーンフロー２３０のための１つ又は複数のパケットがＡｐｐ（０）による処理のあとで記憶された共有メモリにおける位置を示すメッセージをＶＭ２（送信先ＶＭ）に送信するために、最初にＶＭ１のフローテーブルを使用するためのロジック及び／又は機能を含み得る。ＶＭ２により実行されるＡｐｐ（１）に割り当てられたバッファ又はメモリに１つ又は複数のパケットをコピーするよりむしろ共有メモリにおける位置の指示が提供されるので、１つ又は複数のパケットは、コピーをしない方法でＶＭ２により受信され得る。
【００２１】
図４は、第１の装置についての実例の構成図を例示する。図４で示されるように、第１の装置は、装置４００を含む。図４において示される装置４００は、特定の接続形態における限られた数の構成要素を有しているが、装置４００は、代替の接続形態において、特定の実装用に要望される通り、より多い又はより少ない構成要素を含み得る、ということが認識され得る。
【００２２】
装置４００は、ホストコンピューティングプラットフォームにおいて保持されるマルチコアプロセッサのＰＥ／コアであり得る回路４２０によりサポートされ得る。回路４２０は、１つ又は複数のソフトウェア又はファームウェアで実施されたモジュール又はコンポーネント４２２−ａを実行することが可能であるＶＭ４２２をサポートするように配置され得る。“ａ”及び“ｂ”及び“ｃ”、並びにここで使用されると同様の指示子は、あらゆる正の整数を表す変数であることが意図される、ということは注目に値する。したがって、例えば、もし実装が値をａ＝４に設定するならば、その場合に、コンポーネント４２２−ａのためのソフトウェア又はファームウェアの完全なセットは、コンポーネント４２２−１、４２２−２、４２２−３、又は４２２−４を含み得る。提示された実例は、この文脈において限定されないとともに、いたるところで使用される異なる変数は、同じ整数値又は異なる整数値を示し得る。
【００２３】
いくつかの実例によれば、回路４２０は、限定することなく、ＡＭＤ（登録商標）社のＡｔｈｌｏｎ（登録商標）、Ｄｕｒｏｎ（登録商標）、及びＯｐｔｅｒｏｎ（登録商標）プロセッサ、ＡＲＭ（登録商標）社のアプリケーションプロセッサ、埋め込み型プロセッサ、及びセキュアプロセッサ、ＩＢＭ（登録商標）社及びＭｏｔｏｒｏｌａ（登録商標）社のＤｒａｇｏｎＢａｌｌ（登録商標）、ＰｏｗｅｒＰＣ（登録商標）プロセッサ、ＩＢＭ（登録商標）社及びＳｏｎｙ（登録商標）社のＣｅｌｌプロセッサ、Ｉｎｔｅｌ（登録商標）社のＡｔｏｍ（登録商標）、Ｃｅｌｅｒｏｎ（登録商標）、Ｃｏｒｅ（２）Ｄｕｏ（登録商標）、Ｃｏｒｅ  ｉ３（登録商標）、Ｃｏｒｅ  ｉ５（登録商標）、Ｃｏｒｅ  ｉ７（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、Ｐｅｎｔｉｕｍ（登録商標）、Ｘｅｏｎ（登録商標）、Ｘｅｏｎ  Ｐｈｉ（登録商標）、及びＸＳｃａｌｅ（登録商標）プロセッサ、並びに、同様のプロセッサを含む様々な商業上利用可能なプロセッサのうちのいずれかが提供するマルチコアプロセッサのＰＥ／コアであり得る。
【００２４】
いくつかの実例によれば、装置４００は、受信コンポーネント４２２−１を含み得る。受信コンポーネント４２２−１は、回路４２０によりサポートされるＶＭ４２２により実行され得る。これらの実例に関して、受信コンポーネント４２２−１は、同様にＶＭにより実行されるアプリケーションにより処理されるべき、サービスチェーンフローのためのパケットを受信し得る。例えば、パケットは、（複数の）パケット４１５に含まれ得る。受信コンポーネント４２２−１は、ＶＭにより実行されるアプリケーションにより処理されるべきパケットの少なくとも一部分を少なくとも一時的に記憶する、他のＶＭと共有されるメモリにおける第１の位置に対する第１の参照子を有するメッセージ４１０に含まれる第１のメッセージの使用によってパケットを受信し得る。
【００２５】
いくつかの実例によれば、装置４００は、アクセスコンポーネント４２２−２を含み得る。アクセスコンポーネント４２２−２は、回路４２０によりサポートされるＶＭ４２２により実行され得る。これらの実例に関して、アクセスコンポーネント４２２−２は、ＶＭにより実行されるアプリケーションによる処理のあとでパケットを経路指定するために、複数のフローテーブルの中から１つのフローテーブルにアクセスし得る。複数のフローテーブルは、サービスチェーンフローのためのパケットを経路指定するそれぞれのＶＭによる使用のためにグローバルフローテーブルから分割された別個のフローテーブルであり得る。フローテーブルは、アクセスコンポーネント４２２−２により、フローテーブル４２５−ｂにおいて（例えばルックアップテーブル（ＬＵＴ）において）保持され得る。
【００２６】
いくつかの実例において、アクセスされるべきフローテーブルは、構成メッセージ４０５に含まれる第２のメッセージにより伝達されたかもしれない。これらの実例に関して、アクセスコンポーネント４２２−２は、バーチャルスイッチの構成のあとで、異なるＶＭにより実行されたＯ／Ｓから第２のメッセージを受け取ったかもしれない。バーチャルスイッチの構成は、ＶＭと少なくとも１つの他のＶＭとの間でサービスチェーンフローのためのパケットを経路指定するために、スイッチロジックの一部分をＶＭに分配したかもしれない。
【００２７】
いくつかの実例によれば、装置４００は、ルートコンポーネント４２２−３を含み得る。ルートコンポーネント４２２−３は、回路４２０によりサポートされるＶＭ４２２により実行され得る。これらの実例に関して、ルートコンポーネント４２２−３は、パケットをサービスチェーン処理のあとで回路４２０を含むマルチコアプロセッサの別のＰＥ／コアによりサポートされる別のＶＭに対して経路指定するために、フローテーブル４２５−ｂに保持されるフローテーブルを使用し得る。別のＶＭは、追加のサービスチェーン処理を行うかもしれない別のアプリケーションを実行し得る。
【００２８】
いくつかの実例において、装置４００は、基準コンポーネント４２２−４を含み得る。基準コンポーネント４２２−４は、回路４２０によりサポートされるＶＭ４２２により実行され得る。これらの実例に関して、基準コンポーネント４２２−４は、ＶＭと他のＶＭとの間で共有されるメモリにおける第２の位置に対する第２の参照子を含む第３のメッセージを、他のＶＭに送信し得る。他のＶＭは、その場合に、メモリからパケットを受信するために第２の位置を使用し得るとともに、他のアプリケーションが追加のサービスチェーン処理を実行することを可能にし得る。メッセージ４３０は、第２の位置に対する第２の参照子を含む、他のＶＭに送信される第３のメッセージを含み得る。
【００２９】
ここに含まれるのは、開示されたアーキテクチャの新奇な特徴を実行するための実例の手順を代表するロジックフローのセットである。説明の簡単化の目的のために、ここに示された１つ又は複数の手順が一連の動作として示されて説明される一方、当業者は、それらの手順が動作の順序によって限定されない、ということを理解するとともに、認識するであろう。いくつかの動作は、それに従って、ここで示されて説明される動作とは違って、異なる順序で、及び／又は他の動作と並行して、発生する場合がある。例えば、当業者は、手順が、その代わりに、状態図のように、一連の相互に関係のある状態又は事象として表され得るであろう、ということを理解するとともに、認識するであろう。さらに、手順において例示された全ての動作が、新奇な実装のために必ずしも必要とされるとは限らないかもしれない。
【００３０】
ロジックフローは、ソフトウェア、ファームウェア、及び／又はハードウェアにおいて実施され得る。ソフトウェア及びファームウェアの実施例において、ロジックフローは、光記憶装置、磁気記憶装置、又は半導体記憶装置のような、少なくとも１つの非一時的なコンピュータ読み取り可能媒体又は機械読み取り可能媒体に記憶されるコンピュータ実行可能命令により実施され得る。実施例は、この文脈において限定されない。
【００３１】
図５は、第１のロジックフローの実例を例示する。図５で示されるように、第１のロジックフローは、ロジックフロー５００を含む。ロジックフロー５００は、装置４００のような、ここで説明された１つ又は複数のロジック、機構、又は装置により実行される動作のいくつか又は全てを代表し得る。より具体的には、ロジックフロー５００は、少なくとも受信コンポーネント４２２−１、アクセスコンポーネント４２２−２、ルートコンポーネント４２２−３、又は基準コンポーネント４２２−４により実施され得る。
【００３２】
いくつかの実例によれば、ブロック５０２において、ロジックフロー５００は、マルチコアプロセッサの第１のＰＥ／コア（例えば、回路４２０）によりサポートされる第１のＶＭにおいて、第１のＶＭにより実行される第１のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信し得る。これらの実例に関して、受信コンポーネント４２２−１がパケットを受信し得る。
【００３３】
いくつかの実例において、ブロック５０４において、ロジックフロー５００は、複数のフローテーブルの中から第１のフローテーブルにアクセスし得るとともに、第１のフローテーブルは、第１のアプリケーションによるサービスチェーン処理のあとでパケットを経路指定する第１のＶＭによる使用のためのものである。これらの実例に関して、アクセスコンポーネント４２２−２が第１のフローテーブルにアクセスし得る。
【００３４】
いくつかの実例によれば、ブロック５０６において、ロジックフロー５００は、追加のサービスチェーン処理のためのパケットをマルチコアプロセッサの第２の演算処理装置によりサポートされる第２のＶＭに経路指定することを決定し得る。これらの実例に関して、ルートコンポーネント４２２−３が追加のサービスチェーン処理のためのパケットを経路指定する第２のＶＭを決定するために第１のフローテーブルを使用し得る。
【００３５】
いくつかの実例によれば、ブロック５０８において、ロジックフロー５００は、第２のＶＭにより実行される第２のアプリケーションによる追加のサービスチェーン処理のためのパケットを受信する第２のＶＭのために、第１のＶＭと第２のＶＭとの間で共有されるメモリにおける第１の位置に対する第１の参照子を含むメッセージを第２のＶＭに送信し得る。これらの実例に関して、基準コンポーネント４２２−４が第２のＶＭにメッセージを送信し得るか、又は基準コンポーネント４２２−４が第２のＶＭに対するメッセージの送信をもたらし得る。
【００３６】
図６は、第１の記憶媒体の実例を例示する。図６で示されるように、第１の記憶媒体は、記憶媒体６００を含む。記憶媒体６００は、工業製品（article  of  manufacture）を含み得る。いくつかの実例において、記憶媒体６００は、光記憶装置、磁気記憶装置、又は半導体記憶装置のような、あらゆる非一時的なコンピュータ読み取り可能媒体又は機械読み取り可能媒体を含み得る。記憶媒体６００は、ロジックフロー５００を実施する命令のような様々なタイプのコンピュータ実行可能命令を記憶し得る。コンピュータ読み取り可能記憶媒体又は機械読み取り可能記憶媒体の実例は、揮発性メモリ又は不揮発性メモリ、取り外し可能メモリ又は取り外し不可能メモリ、消去可能メモリ又は消去不能メモリ、書き込み可能メモリ又は再書き込み可能メモリなどを含んでいる、電子データを記憶することが可能であるあらゆる有形の媒体を含み得る。コンピュータ実行可能命令の実例は、ソースコード、コンパイルされたコード（compiled  code）、解釈されたコード（interpreted  code）、実行可能コード、静的なコード、動的なコード、オブジェクト指向のコード（object-oriented  code）、視覚的コード（visual  code）などのようなあらゆる適切な種類のコードを含み得る。実例は、この文脈において限定されない。
【００３７】
図７は、第２の装置についての実例の構成図を例示する。図７で示されるように、第１の装置は、装置７００を含む。図７において示される装置７００は、特定の接続形態における限られた数の構成要素を有しているが、装置７００は、代替の接続形態において、特定の実装用に要望される通り、より多い又はより少ない構成要素を含み得る、ということが認識され得る。
【００３８】
装置７００は、ホストコンピューティングプラットフォームにおいて保持されるマルチコアプロセッサのＰＥ／コアであり得る回路７２０を含み得る。回路７２０は、１つ又は複数のソフトウェア又はファームウェアで実施されたモジュール又はコンポーネント７２２−ａを実行することが可能であり得るホストＯ／Ｓ７２２をサポートするように配置され得る。“ａ”及び“ｂ”及び“ｃ”、並びにここで使用されると同様の指示子は、あらゆる正の整数を表す変数であることが意図される、ということは注目に値する。したがって、例えば、もし実装が値をａ＝２に設定するならば、その場合に、コンポーネント７２２−ａのためのソフトウェア又はファームウェアの完全なセットは、コンポーネント７２２−１又は７２２−２を含み得る。提示された実例は、この文脈において限定されないとともに、いたるところで使用される異なる変数は、同じ整数値又は異なる整数値を示し得る。
【００３９】
いくつかの実例において、回路７２０は、装置４００について上記で言及されたプロセッサを含むが、それに限定されない、様々な商業上利用可能なプロセッサのうちのいずれかが提供するマルチコアプロセッサのＰＥ／コアであり得る。
【００４０】
いくつかの実例によれば、装置７００は、構成コンポーネント７２２−１を含み得る。構成コンポーネント７２２−１は、回路７２０によりサポートされるホストＯ／Ｓ７２２により実行され得る。これらの実例に関して、構成コンポーネント７２２−１は、例えば複数のＶＭの中からの第１及び第２のＶＭの間のような２つのＶＭの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信し得る。これらの第１及び第２のＶＭは、マルチコアプロセッサの他の回路（例えば、他のＰＥ／コア）により別々にサポートされ得る。その要求は、構成要求７０５に含まれ得る。
【００４１】
いくつかの実例において、構成コンポーネント７２２−１は、最初に、第１のＶＭ及び第２のＶＭにより実行される別個のアプリケーションを処理するためにサービスチェーンフローのためのパケットがたどることになっている経路を示すグローバルフローテーブルを生成することにより、バーチャルスイッチを構成し得る。グローバルフローテーブルは、グローバルフローテーブル７２４−ａにおいて（例えばＬＵＴにおいて）保持され得るか、又はグローバルフローテーブル７２４−ａによって保持され得る。構成コンポーネント７２２−１は、次に、別個のアプリケーションによる別個の処理のあとでサービスチェーンフローのためのパケットを経路指定するためにグローバルフローテーブルを第１のＶＭ及び第２のＶＭによるそれぞれの使用のための第１のフローテーブル及び第２のフローテーブルに分割し得る。これらの実例に関して、第１及び第２のフローテーブルは、ＶＭフローテーブル７２５−ｂにおいて（例えばＬＵＴにおいて）保持され得るか、又はＶＭフローテーブル７２５−ｂによって保持され得る。構成コンポーネント７２２−１は、次に、第１のＶＭ及び第２のＶＭに対して別個の構成メッセージにおいてそれぞれのメモリアドレス範囲を送信することにより、第１のフローテーブル及び第２のフローテーブルを第１のＶＭ及び第２のＶＭに示し得る。これらの別個の構成メッセージは、（複数の）構成メッセージ７１０に含まれ得る。
【００４２】
いくつかの実例によれば、装置７００は、指示コンポーネント７２２−２を含み得る。指示コンポーネント７２２−２は、回路７２０によりサポートされるホストＯ／Ｓ７２２により実行され得る。これらの実例に関して、指示コンポーネント７２２−２は、バーチャルスイッチの構成を示すために、グローバルフローテーブルのみを要求側に提供し得る。例えば、指示コンポーネント７２２−２は、グローバルフローテーブル７２４−ａに保持されるグローバルフローテーブルのコピーを送信し得るか、又は要求側がグローバルフローテーブル７２４−ａに保持されるグローバルフローテーブルの保存されたバージョンにアクセスすることを許可し得る。グローバルフローテーブルのコピー又はグローバルフローテーブルにアクセスするための情報は、構成応答メッセージ７１５に含まれ得る。
【００４３】
ここに含まれるのは、開示されたアーキテクチャの新奇な特徴を実行するための実例の手順を代表するロジックフローのセットである。説明の簡単化の目的のために、ここに示された１つ又は複数の手順が一連の動作として示されて説明される一方、当業者は、それらの手順が動作の順序によって限定されない、ということを理解するとともに、認識するであろう。いくつかの動作は、それに従って、ここで示されて説明される動作とは違って、異なる順序で、及び／又は他の動作と並行して、発生する場合がある。例えば、当業者は、手順が、その代わりに、状態図のように、一連の相互に関係のある状態又は事象として表され得るであろう、ということを理解するとともに、認識するであろう。さらに、手順において例示された全ての動作が、新奇な実装のために必ずしも必要とされるとは限らないかもしれない。
【００４４】
図８は、第２のロジックフローの実例を例示する。図８で示されるように、第１のロジックフローは、ロジックフロー８００を含む。ロジックフロー８００は、装置７００のような、ここで説明された１つ又は複数のロジック、機構、又は装置により実行される動作のいくつか又は全てを代表し得る。より具体的には、ロジックフロー８００は、少なくとも構成コンポーネント７２２−１、又は指示コンポーネント７２２−２により実施され得る。
【００４５】
いくつかの実例によれば、ブロック８０２において、ロジックフロー８００は、マルチコアプロセッサの第１のＰＥ／コア（例えば、回路７２０）によりサポートされるホストＯ／Ｓにおいて、マルチコアプロセッサのそれぞれの第２及び第３の演算処理装置により別々にサポートされる第１及び第２のＶＭの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信し得る。これらの実例に関して、構成コンポーネント７２２−１が要求を受信し得る。
【００４６】
いくつかの実例において、スイッチを構成するためのロジックフロー８００は、ブロック８０４において第１のＶＭ及び第２のＶＭにより実行される別個のアプリケーションによる処理のためにサービスチェーンフローのためのパケットがたどることになっている経路を示すグローバルフローテーブルを生成するロジックフロー８００を含み得る。ブロック８０６において、スイッチを構成することは、同様に、別個のアプリケーションによる別個の処理のあとでサービスチェーンフローのためのパケットを経路指定するためにグローバルフローテーブルを第１のＶＭ及び第２のＶＭによるそれぞれの使用のための第１のフローテーブル及び第２のフローテーブルに分割することを含み得る。ブロック８０８において、スイッチを構成することは、同様に、第１のフローテーブル及び第２のフローテーブルを第１のＶＭ及び第２のＶＭに示すことを含み得る。これらの実例に関して、ブロック８０４〜８０８に関して上記で言及されたように、構成コンポーネント７２２−１がバーチャルスイッチを構成し得る。
【００４７】
いくつかの実例によれば、ブロック８１０において、ロジックフロー８００は、バーチャルスイッチの構成を示すために、グローバルフローテーブルのみを要求側に提供し得る。これらの実例に関して、指示コンポーネント７２２−２がグローバルフローテーブルを要求側に提供し得る。
【００４８】
図９は、第２の記憶媒体の実例を例示する。図９で示されるように、第１の記憶媒体は、記憶媒体９００を含む。記憶媒体９００は、工業製品を含み得る。いくつかの実例において、記憶媒体９００は、光記憶装置、磁気記憶装置、又は半導体記憶装置のような、あらゆる非一時的なコンピュータ読み取り可能媒体又は機械読み取り可能媒体を含み得る。記憶媒体９００は、ロジックフロー８００を実施する命令のような様々なタイプのコンピュータ実行可能命令を記憶し得る。コンピュータ読み取り可能記憶媒体又は機械読み取り可能記憶媒体の実例は、揮発性メモリ又は不揮発性メモリ、取り外し可能メモリ又は取り外し不可能メモリ、消去可能メモリ又は消去不能メモリ、書き込み可能メモリ又は再書き込み可能メモリなどを含んでいる、電子データを記憶することが可能であるあらゆる有形の媒体を含み得る。コンピュータ実行可能命令の実例は、ソースコード、コンパイルされたコード（compiled  code）、解釈されたコード（interpreted  code）、実行可能コード、静的なコード、動的なコード、オブジェクト指向のコード（object-oriented  code）、視覚的コード（visual  code）などのようなあらゆる適切な種類のコードを含み得る。実例は、この文脈において限定されない。
【００４９】
図１０は、実例のコンピューティングプラットフォーム１０００を例示する。いくつかの実例において、図１０で示されるように、コンピューティングプラットフォーム１０００は、処理コンポーネント１０４０、他のプラットフォームコンポーネント１０５０、又は通信インタフェース１０６０を含み得る。いくつかの実例によれば、コンピューティングプラットフォーム１０００は、図１において示されるホストコンピューティングプラットフォーム１０５のようなホストコンピューティングプラットフォームで実施され得る。
【００５０】
いくつかの実例によれば、処理コンポーネント１０４０は、装置４００／７００、及び／又は記憶媒体６００／９００のための処理動作又はロジックを実行し得る。処理コンポーネント１０４０は、様々なハードウェアエレメント、ソフトウェアエレメント、又は両方の組み合わせを含み得る。ハードウェアエレメントの実例は、装置、論理回路、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子（例えば、トランジスタ、レジスタ、キャパシタ、インダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、論理ゲート、レジスタ、半導体素子、チップ、マイクロチップ、チップセットなどを含み得る。ソフトウェアエレメントの実例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、デバイスドライバ、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウエア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション（機能）、メソッド（方法）、プロシージャ（手順）、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（ＡＰＩ）、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード（words）、値（values）、シンボル、又はそれらのあらゆる組み合わせを含み得る。実例がハードウェアエレメント及び／又はソフトウェアエレメントを使用して実施されるかどうかを判定することは、所定の実例に関して要求される所望の計算レート、電力レベル、耐熱性、処理サイクル量、入力データレート、出力データレート、メモリ資源、データバス速度、及び他の設計の制約又は性能の制約のようなあらゆる数の要因に従って変化し得る。
【００５１】
いくつかの実例において、他のプラットフォームコンポーネント１０５０は、１つ又は複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺装置、インタフェース、発振器、時間計測器、ビデオカード、オーディオカード、マルチメディア入出力（Ｉ／Ｏ）コンポーネント（例えば、デジタル表示装置）、電源などのような一般的な計算要素を含み得る。メモリユニットの実例は、限定されることなく、例えば、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電性ポリマーメモリのようなポリマーメモリ、オボニックメモリ、位相変化又は強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン（ＳＯＮＯＳ）メモリ、磁気若しくは光学カード、レイド（Redundant  Array  of  Independent  Disk：ＲＡＩＤ）デバイスのようなデバイスのアレイ、ソリッドステートメモリ装置（例えば、ＵＳＢメモリ、ソリッドステートドライブ（ＳＳＤ））、及び情報を格納するのに適しているあらゆる他の種類の記憶媒体のような、１つ又は複数のより高速のメモリユニットの形式の様々な種類のコンピュータ読み取り可能及び機械読み取り可能記憶媒体を含み得る。
【００５２】
いくつかの実例において、通信インタフェース１０６０は、通信インタフェースをサポートするためのロジック及び／又は機能を含み得る。これらの実例に関して、通信インタフェース１０６０は、直接的な通信リンク又はネットワーク通信リンク上で通信するための様々な通信プロトコル又は標準に従って動作する１つ又は複数の通信インタフェースを含み得る。直接的通信は、ＰＣＩ仕様書と関連付けられた通信プロトコル又は標準のような１つ又は複数の業界標準（後継物及び変形物を含む）において示された通信プロトコル又は標準の使用によって発生し得る。ネットワーク通信は、ＩＥＥＥによって公表された１つ又は複数のイーサネット（登録商標）規格において示された通信プロトコル又は標準のような通信プロトコル又は標準の使用によって発生し得る。例えば、そのような１つのイーサネット（登録商標）規格は、ＩＥＥＥ８０２．３を含み得る。ネットワーク通信は、同様に、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎのような１つ又は複数のＯｐｅｎＦｌｏｗ仕様書に従って発生し得る。
【００５３】
上記で言及されたように、コンピューティングプラットフォーム１０００は、ホストコンピューティングプラットフォームで実施され得る。したがって、ここで説明されたコンピューティングプラットフォーム１０００の機能及び／又は特定の構成は、サーバ又はクライアントコンピューティング装置のために適宜望まれるように、コンピューティングプラットフォーム１０００の各種の実施例において含まれ得るか、又は省略され得る。
【００５４】
コンピューティングプラットフォーム１０００のコンポーネント及び機能は、ディスクリート回路、特定用途向け集積回路（ＡＳＩＣ）、論理ゲート、及び／又はシングルチップアーキテクチャのあらゆる組み合わせを用いて実施され得る。さらに、コンピューティングプラットフォーム１０００の機能は、マイクロコントローラ、プログラマブルロジックアレー、及び／若しくはマイクロプロセッサ、又は、適宜適切な上記のあらゆる組み合わせを用いて実施され得る。ハードウェア、ファームウェア、及び／又はソフトウェアエレメントが、集合的に又は個別に、ここでは“ロジック”又は“回路”と呼ばれ得ることに、注意が必要である。
【００５５】
図１０の構成図において示される代表的なコンピューティングプラットフォーム１０００が多くの潜在的な実装例のうちの１つの機能的に記述的な実例を表し得る、ということが認識されるべきである。したがって、添付の図面において描写されたブロック機能の分割、省略、又は包含は、これらの機能を実施するためのハードウェアコンポーネント、回路、ソフトウェア、及び／又は素子が、実施例において、必ず分割される、省略される、又は含まれるということを暗示しない。
【００５６】
少なくとも１つの実例の１つ又は複数の態様は、プロセッサの中の様々なロジックを表す少なくとも１つの機械読み取り可能媒体に記憶される代表的な命令により実施されることができ、命令は、機械、コンピューティング装置、又はシステムにより読み取られる場合に、機械、コンピューティング装置、又はシステムに、ここで説明された技術を実行するためのロジックを構築させる。“ＩＰコア”として知られているそのような創造物は、有形の機械読み取り可能媒体に記憶され得るとともに、ロジック又はプロセッサを実際に作る製作マシンに読み込むために、様々な顧客又は製造施設に供給され得る。
【００５７】
様々な実例は、ハードウェアエレメント、ソフトウェアエレメント、又は両方の組み合わせを用いて実施され得る。いくつかの実例において、ハードウェアエレメントは、装置、コンポーネント、プロセッサ、マイクロプロセッサ、回路、回路素子（例えば、トランジスタ、レジスタ、キャパシタ、インダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、論理ゲート、レジスタ、半導体素子、チップ、マイクロチップ、チップセットなどを含み得る。いくつかの実例において、ソフトウェアエレメントは、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウエア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション（機能）、メソッド（方法）、プロシージャ（手順）、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（ＡＰＩ）、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード（words）、値（values）、シンボル、又はそれらのあらゆる組み合わせを含み得る。実例がハードウェアエレメント及び／又はソフトウェアエレメントを使用して実施されるかどうかを判定することは、所定の実装例に関して要求される所望の計算レート、電力レベル、耐熱性、処理サイクル量、入力データレート、出力データレート、メモリ資源、データバス速度、及び他の設計の制約又は性能の制約のようなあらゆる数の要因に従って変化し得る。
【００５８】
いくらかの実例は、工業製品、又は少なくとも１つのコンピュータ読み取り可能媒体を含み得る。コンピュータ読み取り可能媒体は、ロジックを記憶するための非一時的記憶媒体を含み得る。いくつかの実例において、非一時的記憶媒体は、揮発性メモリ又は不揮発性メモリ、取り外し可能メモリ又は取り外し不可能メモリ、消去可能メモリ又は消去不能メモリ、書き込み可能メモリ又は再書き込み可能メモリなどを含んでいる、電子データを記憶することが可能である１つ又は複数の種類のコンピュータ読み取り可能記憶媒体を含み得る。いくつかの実例において、ロジックは、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウエア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション（機能）、メソッド（方法）、プロシージャ（手順）、ソフトウェアインタフェース、ＡＰＩ、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード（words）、値（values）、シンボル、又はそれらのあらゆる組み合わせのような、様々なソフトウェアエレメントを含み得る。
【００５９】
いくつかの実例によれば、コンピュータ読み取り可能媒体は、機械、コンピューティング装置、又はシステムにより実行される場合に、機械、コンピューティング装置、又はシステムに、説明された実例に従った方法及び／又は動作を実行させる命令を記憶又は保持するための非一時的記憶媒体を含み得る。命令は、ソースコード、コンパイルされたコード（compiled  code）、解釈されたコード（interpreted  code）、実行可能コード、静的なコード、動的なコードなどのようなあらゆる適切な種類のコードを含み得る。命令は、機械、コンピューティング装置、又はシステムに特定の機能を実行するように指示するための予め定義されたコンピュータ言語、様式、又は構文に従って実施され得る。命令は、あらゆる適切な高水準プログラミング言語、低水準プログラミング言語、オブジェクト指向プログラミング言語、ビジュアル（visual）プログラミング言語、コンパイルされたプログラミング言語、及び／又は解釈されたプログラミング言語を使用して実施され得る。
【００６０】
いくつかの実例は、“一実例において”又は“実例”という表現をそれらの派生語と共に使用して説明され得る。これらの用語は、実例に関連して説明された特定の特徴、構造、又は特性が、少なくとも１つの実例に含まれることを意味する。本明細書における様々な場所における“一実例において”という語句の状況は、必ずしも全て同じ実例を参照しているとは限らない。
【００６１】
いくつかの実例は、“結合される”及び“接続される”という表現を使用して説明され得る。これらの用語は、必ずしも相互に対する同義語を意図していない。例えば、“接続される”及び／又は“結合される”という用語を使用した説明は、２つ以上の要素が互いに直接的な物理的又は電気的接触状態にあるということを示し得る。しかしながら、“結合される”という用語は、同様に、２つ以上の要素が互いに直接的な接触状態にないが、それでもやはり互いに協同するか、又は相互作用するということを意味し得る。
【００６２】
下記の実例は、ここに開示された技術の追加の実例に関連する。
【００６３】
「実例１」
実例の装置は、第１のＶＭをサポートするための第１の演算処理装置及び第２のＶＭをサポートするための第２の演算処理装置を有するマルチコアプロセッサを含み得る。上記装置は、同様に、上記第１のＶＭにより実行される第１のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信する、上記第１のＶＭによる実行に適した受信コンポーネントを含み得る。上記装置は、同様に、複数のフローテーブルの中から第１のフローテーブルにアクセスする、上記第１のＶＭによる実行に適したアクセスコンポーネントを含み得る。上記装置は、同様に、上記第２のＶＭにより実行される第２のアプリケーションによる追加のサービスチェーン処理のために、上記第１のアプリケーションによるサービスチェーン処理のあとで上記パケットを上記第２のＶＭに経路指定するために上記第１のフローテーブルを使用する、上記第１のＶＭによる実行に適したルートコンポーネントを含み得る。上記装置は、同様に、上記パケットを受信する上記第２のＶＭのために、上記第１のＶＭと上記第２のＶＭとの間で共有されるメモリにおける第１の位置に対する第１の参照子を含むメッセージを上記第２のＶＭに送信する、上記第１のＶＭによる実行に適した基準コンポーネントを含み得る。
【００６４】
「実例２」
実例１の装置であって、上記受信コンポーネントは、第３のＶＭから、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリにおける第２の位置に対する第２の参照子を含む第２のメッセージを受信することにより上記パケットを受信し得る。
【００６５】
「実例３」
実例２の装置であって、上記第１の位置及び上記第２の位置は、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリに対する同じメモリアドレスであり得る。
【００６６】
「実例４」
実例２の装置であって、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリは、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭがサービスチェーン処理のための上記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを含み得る。
【００６７】
「実例５」
実例１の装置であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【００６８】
「実例６」
実例１の装置であって、上記複数のフローテーブルは、少なくとも上記第１のＶＭと上記第２のＶＭとの間で上記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示されるように配置され得る。
【００６９】
「実例７」
実例６の装置であって、上記第１のフローテーブルは、少なくとも上記第１のＶＭと上記第２のＶＭとの間で上記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を上記第１のＶＭに対して分配する上記バーチャルスイッチの構成に基づいて上記第１のＶＭに割り当てられる上記複数のフローテーブルの中からのものであり得る。
【００７０】
「実例８」
実例７の装置であって、上記マルチコアプロセッサの第４の演算処理装置は、上記バーチャルスイッチを構成するために上記第１のＶＭに対して上記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートし得る。
【００７１】
「実例９」
実例１の装置は、同様に、ユーザにインタフェース画面を提示するために、回路に結合されたデジタルディスプレイを含み得る。
【００７２】
「実例１０」
実例の方法は、マルチコアプロセッサの第１の演算処理装置によりサポートされる第１のＶＭにおいて、上記第１のＶＭにより実行される第１のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信するステップを含み得る。上記方法は、同様に、複数のフローテーブルの中から第１のフローテーブルにアクセスするステップを含み得る。上記第１のフローテーブルは、上記第１のアプリケーションによるサービスチェーン処理のあとで上記パケットを経路指定する上記第１のＶＭによる使用のためのものであり得る。上記方法は、同様に、追加のサービスチェーン処理のための上記パケットを上記マルチコアプロセッサの第２の演算処理装置によりサポートされる第２のＶＭに経路指定することを決定するステップを含み得る。上記方法は、同様に、上記第２のＶＭにより実行される第２のアプリケーションによる上記追加のサービスチェーン処理のための上記パケットを受信する上記第２のＶＭのために、上記第１のＶＭと上記第２のＶＭとの間で共有されるメモリにおける第１の位置に対する第１の参照子を含むメッセージを上記第２のＶＭに送信するステップを含み得る。
【００７３】
「実例１１」
実例１０の方法は、同様に、第３のＶＭから、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリにおける第２の位置に対する第２の参照子を含む第２のメッセージを受信することにより上記パケットを受信するステップを含み得る。
【００７４】
「実例１２」
実例１１の方法であって、上記第１の位置及び上記第２の位置は、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリに対する同じメモリアドレスであり得る。
【００７５】
「実例１３」
実例１１の方法であって、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリは、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭが処理のための上記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを含み得る。
【００７６】
「実例１４」
実例１０の方法であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【００７７】
「実例１５」
実例１０の方法であって、上記複数のフローテーブルは、少なくとも上記第１のＶＭと上記第２のＶＭとの間で上記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示され得る。
【００７８】
「実例１６」
実例１５の方法であって、上記第１のフローテーブルは、少なくとも上記第１のＶＭと上記第２のＶＭとの間で上記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を上記第１のＶＭに対して分配する上記バーチャルスイッチの構成に基づいて上記第１のＶＭに割り当てられる上記複数のフローテーブルの中からのものであり得る。
【００７９】
「実例１７」
実例１６の方法であって、上記マルチコアプロセッサの第４の演算処理装置は、上記バーチャルスイッチを構成するために上記第１のＶＭに対して上記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートし得る。
【００８０】
「実例１８」
少なくとも１つの機械読み取り可能媒体は複数の命令を含むことができ、上記命令は、複数のＶＭをサポートすることができるマルチコアプロセッサを有するホストコンピューティングプラットフォームにおけるシステムにより実行されることに応答して上記システムに、実例１０から実例１７のいずれか１つによる方法を実行させ得る。
【００８１】
「実例１９」
装置は、実例１０から実例１７のいずれか１つの方法を実行するための手段を含み得る。
【００８２】
「実例２０」
実例の少なくとも１つの機械読み取り可能媒体は複数の命令を含むことができ、上記命令は、マルチコアプロセッサの第１の演算処理装置によりサポートされる第１のＶＭにより実行されることに応答して上記第１のＶＭに、上記マルチコアプロセッサの上記第１の演算処理装置によりサポートされる上記第１のＶＭにより実行される第１のアプリケーションにより処理されるべきサービスチェーンフローのためのパケットを受信させ得る。上記命令は、同様に上記第１のＶＭに、複数のフローテーブルの中から第１のフローテーブルにアクセスさせ得る。上記命令は、同様に上記第１のＶＭに、上記マルチコアプロセッサの第２の演算処理装置によりサポートされる第２のＶＭにより実行される第２のアプリケーションによる追加のサービスチェーン処理のために、上記第１のアプリケーションによるサービスチェーン処理のあとで上記パケットを上記第２のＶＭに経路指定するために上記第１のフローテーブルを使用させ得る。上記命令は、同様に上記第１のＶＭに、上記パケットを受信する上記第２のＶＭのために、上記第１のＶＭと上記第２のＶＭとの間で共有されるメモリにおける第１の位置に対する第１の参照子を含むメッセージを上記第２のＶＭに送信させ得る。
【００８３】
「実例２１」
実例２０の少なくとも１つの機械読み取り可能媒体であって、上記命令は、さらに上記第１のＶＭに、第３のＶＭから、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリにおける第２の位置に対する第２の参照子を含む第２のメッセージを受信することにより上記パケットを受信させ得る。
【００８４】
「実例２２」
実例２１の少なくとも１つの機械読み取り可能媒体であって、上記第１の位置及び上記第２の位置は、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリに対する同じメモリアドレスであり得る。
【００８５】
「実例２３」
実例２１の少なくとも１つの機械読み取り可能媒体であって、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭの間で共有される上記メモリは、上記第１のＶＭ、上記第２のＶＭ、及び上記第３のＶＭがサービスチェーン処理のための上記パケットをコピーをしない方法で受信することを可能にすることができる共有メモリメッシュを形成する共有メモリリングを含み得る。
【００８６】
「実例２４」
実例２０の少なくとも１つの機械読み取り可能媒体であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【００８７】
「実例２５」
実例２０の少なくとも１つの機械読み取り可能媒体であって、上記複数のフローテーブルは、少なくとも上記第１のＶＭと上記第２のＶＭとの間で上記サービスチェーンフローのためのパケットを経路指定するバーチャルスイッチの構成を要求したユーザに対して、単一のフローテーブルとして示されるように配置され得る。
【００８８】
「実例２６」
実例２５の少なくとも１つの機械読み取り可能媒体であって、上記第１のフローテーブルは、少なくとも上記第１のＶＭと上記第２のＶＭとの間で上記サービスチェーンフローのためのパケットを経路指定するためにスイッチロジックの一部分を上記第１のＶＭに対して分配する上記バーチャルスイッチの構成に基づいて上記第１のＶＭに割り当てられる上記複数のフローテーブルの中からのものであり得る。
【００８９】
「実例２７」
実例２６の少なくとも１つの機械読み取り可能媒体であって、上記マルチコアプロセッサの第４の演算処理装置は、上記バーチャルスイッチを構成するために上記第１のＶＭに対して上記スイッチロジックの一部分の分配を伝達するためのバーチャルスイッチ制御経路を有するホストオペレーティングシステムをサポートし得る。
【００９０】
「実例２８」
実例の装置は、ホストオペレーティングシステムをサポートするための第１の演算処理装置を有するマルチコアプロセッサを含み得る。上記装置は、同様に、上記マルチコアプロセッサのそれぞれの第２及び第３の演算処理装置により別々にサポートされる第１及び第２のＶＭの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信する、上記ホストオペレーティングシステムによる実行に適した構成コンポーネントを含み得る。上記バーチャルスイッチを構成することは、上記構成コンポーネントが、上記第１のＶＭ及び上記第２のＶＭにより実行される別個のアプリケーションによる処理のために上記サービスチェーンフローのための上記パケットがたどることになっている経路を示すグローバルフローテーブルを生成することを含み得る。上記バーチャルスイッチを構成することは、同様に、上記構成コンポーネントが、上記別個のアプリケーションによる別個の処理のあとで上記サービスチェーンフローのための上記パケットを経路指定するために上記グローバルフローテーブルを上記第１のＶＭ及び上記第２のＶＭによるそれぞれの使用のための第１のフローテーブル及び第２のフローテーブルに分割することを含み得る。上記バーチャルスイッチを構成することは、同様に、上記構成コンポーネントが、上記第１のフローテーブル及び上記第２のフローテーブルを上記第１のＶＭ及び上記第２のＶＭに示すことを含み得る。上記装置は、同様に、上記バーチャルスイッチの構成を示すために、上記グローバルフローテーブルのみを要求側に提供する、上記ホストオペレーティングシステムによる実行に適した指示コンポーネントを含み得る。
【００９１】
「実例２９」
実例２８の装置であって、上記ホストオペレーティングシステムは、上記第１のＶＭ及び上記第２のＶＭに上記第１のフローテーブル及び上記第２のフローテーブルを示すために、上記第１のＶＭ及び上記第２のＶＭに対してバーチャルスイッチ制御経路を有し得る。
【００９２】
「実例３０」
実例２８の装置であって、上記グローバルフローテーブルは、第１のメモリに保持されるように配置され得る。この実例に関して、上記第１のフローテーブルを上記第１のＶＭに示す上記構成コンポーネントは、上記第１のフローテーブルを保持する上記第１のメモリの第１のメモリアドレス範囲を提供する上記構成コンポーネントを含み得る。上記第２のフローテーブルを上記第２のＶＭに示す上記構成コンポーネントは、上記第２のフローテーブルを保持する上記メモリの第２のメモリアドレス範囲を提供する上記構成コンポーネントを含み得る。
【００９３】
「実例３１」
実例３０の装置であって、上記第１のＶＭ及び上記第２のＶＭは、上記第１のＶＭがコピーをすることなく上記パケットを経路指定することを可能にする上記第１のＶＭと上記第２のＶＭとの間で共有される第２のメモリにおける位置に対する参照子を含むメッセージを上記第１のＶＭが上記第２のＶＭに送信することを含むコピーをしない方法で、上記サービスチェーンフローのための上記パケットを経路指定することができ得る。
【００９４】
「実例３２」
実例３１の装置であって、上記第２のメモリは、共有メモリメッシュを形成する共有メモリリングを含み得る。
【００９５】
「実例３３」
実例２８の装置であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【００９６】
「実例３４」
実例２８の装置は、同様に、ユーザにインタフェース画面を提示するために、回路に結合されたデジタルディスプレイを含み得る。
【００９７】
「実例３５」
実例の方法は、マルチコアプロセッサの第１の演算処理装置によりサポートされるホストオペレーティングシステムにおいて、上記マルチコアプロセッサのそれぞれの第２及び第３の演算処理装置により別々にサポートされる第１及び第２のＶＭの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信するステップを含み得る。上記バーチャルスイッチを構成することは、上記第１のＶＭ及び上記第２のＶＭにより実行される別個のアプリケーションによる処理のために上記サービスチェーンフローのための上記パケットがたどることになっている経路を示すグローバルフローテーブルを生成することを含み得る。上記バーチャルスイッチを構成することは、同様に、上記別個のアプリケーションによる別個の処理のあとで上記サービスチェーンフローのための上記パケットを経路指定するために上記グローバルフローテーブルを上記第１のＶＭ及び上記第２のＶＭによるそれぞれの使用のための第１のフローテーブル及び第２のフローテーブルに分割することを含み得る。上記バーチャルスイッチを構成することは、同様に、上記第１のフローテーブル及び上記第２のフローテーブルを上記第１のＶＭ及び上記第２のＶＭに示すことを含み得る。上記方法は、同様に、上記バーチャルスイッチの構成を示すために、上記グローバルフローテーブルのみを要求側に提供するステップを含み得る。
【００９８】
「実例３６」
実例３５の方法であって、上記ホストオペレーティングシステムは、上記第１のＶＭ及び上記第２のＶＭに上記第１のフローテーブル及び上記第２のフローテーブルを示すために、上記第１のＶＭ及び上記第２のＶＭに対してバーチャルスイッチ制御経路を有し得る。
【００９９】
「実例３７」
実例３５の方法であって、上記グローバルフローテーブルは、第１のメモリに保持されるように配置され得る。この実例に関して、上記第１のフローテーブルを上記第１のＶＭに示すことは、上記第１のフローテーブルを保持する上記第１のメモリの第１のメモリアドレス範囲を提供することを含み得る。同様に、上記第２のフローテーブルを上記第２のＶＭに示すことは、上記第２のフローテーブルを保持する上記メモリの第２のメモリアドレス範囲を提供することを含み得る。
【０１００】
「実例３８」
実例３７の方法であって、上記第１のＶＭ及び上記第２のＶＭは、上記第１のＶＭがコピーをすることなく上記パケットを経路指定することを可能にする上記第１のＶＭと上記第２のＶＭとの間で共有される第２のメモリにおける位置に対する参照子を含むメッセージを上記第１のＶＭが上記第２のＶＭに送信することを含むコピーをしない方法で、上記サービスチェーンフローのための上記パケットを経路指定することができ得る。
【０１０１】
「実例３９」
実例３８の方法であって、上記第２のメモリは、共有メモリメッシュを形成する共有メモリリングを備える。
【０１０２】
「実例４０」
実例３５の方法であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【０１０３】
「実例４１」
実例の少なくとも１つの機械読み取り可能媒体は複数の命令を含むことができ、上記命令は、ホストオペレーティングシステム及び複数のＶＭをサポートすることができるマルチコアプロセッサを有するホストコンピューティングプラットフォームにおけるシステムにより実行されることに応答して上記システムに、実例３５から実例４０のいずれか１つによる方法を実行させ得る。
【０１０４】
「実例４２」
実例の装置は、実例３５から実例４０のいずれか１つの方法を実行するための手段を含み得る。
【０１０５】
「実例４３」
実例の少なくとも１つの機械読み取り可能媒体は複数の命令を含むことができ、上記命令は、マルチコアプロセッサの第１の演算処理装置によりサポートされるホストオペレーティングシステムにより実行されることに応答して上記ホストオペレーティングシステムに、上記マルチコアプロセッサのそれぞれの第２及び第３の演算処理装置により別々にサポートされる第１及び第２のＶＭの間でサービスチェーンフローのためのパケットを経路指定するために使用されるバーチャルスイッチを構成する要求を受信させ得る。この実例に関して、上記バーチャルスイッチを構成することは、上記命令が、上記ホストオペレーティングシステムに、上記第１のＶＭ及び上記第２のＶＭにより実行される別個のアプリケーションによる処理のために上記サービスチェーンフローのための上記パケットがたどることになっている経路を示すグローバルフローテーブルを生成させることを含み得る。上記バーチャルスイッチを構成することは、同様に、上記命令が、上記ホストオペレーティングシステムに、上記別個のアプリケーションによる別個の処理のあとで上記サービスチェーンフローのための上記パケットを経路指定するために上記グローバルフローテーブルを上記第１のＶＭ及び上記第２のＶＭによるそれぞれの使用のための第１のフローテーブル及び第２のフローテーブルに分割させることを含み得る。上記バーチャルスイッチを構成することは、同様に、上記命令が、上記ホストオペレーティングシステムに、上記第１のフローテーブル及び上記第２のフローテーブルを上記第１のＶＭ及び上記第２のＶＭに示させることを含み得る。上記命令は、さらに上記ホストオペレーティングシステムに、上記バーチャルスイッチの構成を示すために、上記グローバルフローテーブルのみを要求側に提供させ得る。
【０１０６】
「実例４４」
実例４３の少なくとも１つの機械読み取り可能媒体であって、上記ホストオペレーティングシステムは、上記第１のＶＭ及び上記第２のＶＭに対してバーチャルスイッチ制御経路を有し得る。上記命令は、さらに、上記ホストオペレーティングシステムに、上記バーチャルスイッチ制御経路を通して、上記第１のＶＭ及び上記第２のＶＭに上記第１のフローテーブル及び上記第２のフローテーブルを示させ得る。
【０１０７】
「実例４５」
実例４３の少なくとも１つの機械読み取り可能媒体であって、上記グローバルフローテーブルは、第１のメモリに保持されるように配置され得る。上記命令は、さらに、上記ホストオペレーティングシステムに、上記第１のフローテーブルを保持する上記第１のメモリの第１のメモリアドレス範囲を提供することにより、上記第１のフローテーブルを上記第１のＶＭに示させ得るとともに、上記第２のフローテーブルを保持する上記メモリの第２のメモリアドレス範囲を提供することにより、上記第２のフローテーブルを上記第２のＶＭに示させ得る。
【０１０８】
「実例４６」
実例４５の少なくとも１つの機械読み取り可能媒体であって、上記第１のＶＭ及び上記第２のＶＭは、上記第１のＶＭがコピーをすることなく上記パケットを経路指定することを可能にする上記第１のＶＭと上記第２のＶＭとの間で共有される第２のメモリにおける位置に対する参照子を含むメッセージを上記第１のＶＭが上記第２のＶＭに送信することを含むコピーをしない方法で、上記サービスチェーンフローのための上記パケットを経路指定することができ得る。
【０１０９】
「実例４７」
実例４６の少なくとも１つの機械読み取り可能媒体であって、上記第２のメモリは、共有メモリメッシュを形成する共有メモリリングを含み得る。
【０１１０】
「実例４８」
実例４３の少なくとも１つの機械読み取り可能媒体であって、上記サービスチェーンフローは、電子メールサービスチェーン、ストリーミングビデオサービスチェーン、ストリーミングオーディオサービスチェーン、サービスプロバイダサービスチェーン、ネットワークストレージサービスチェーン、ソーシャルネットワークサービスチェーン、又はネットワークセキュリティサービスチェーンのためのものであり得る。
【０１１１】
読者が技術的開示の性質を迅速に確かめることを可能にするであろう要約を要求する連邦規則法典第３７巻セクション１．７２（ｂ）（37C.F.R.  Section  1.72(b)）に適合するように、本開示の要約が提供されるということが強調される。要約は、要約が請求項の範囲又は意味を解釈するか、又は限定するために使用されないであろう、という了解のもとに提出される。さらに、前述の詳細な説明において、本開示を合理化する目的で様々な特徴が１つの実例に集められるということが理解され得る。本開示のこの方法は、主張された実例が、各請求項において明確に暗唱される特徴より更なる特徴を必要とする意図を反映する、と解釈されるべきではない。それどころか、添付の請求項が反映するように、発明の主題は、単一の開示された実例の全ての特徴より少ない状態にある。したがって、添付の請求項は、この結果、各請求項が個別の実例として独立している状態で詳細な説明の中に組み込まれる。添付の請求項において、“含む（including）”及び“その中で（in  which）”という用語は、それぞれ“備える（comprising）”及び“ここで（wherein）”という用語の分かりやすい英語の等価物として使用される。さらに、“第１の”、“第２の”、及び“第３の”などの用語は、単にラベルとして使用され、数値的な要求をそれらの対象物に課すことを意図していない。
【０１１２】
主題は、構造上の特徴及び／又は方法論的な動作に特有の言語で説明されているが、添付の請求項において定義された主題は、上記で説明された特定の特徴又は動作に必ずしも限定されるとは限らない、ということが理解されるべきである。それどころか、上記で説明された特定の特徴又は動作は、請求項を実施することの実例形態として開示される。
【図１】
0006022650.tif 000002
【図２】
0006022650.tif 000003
【図３】
0006022650.tif 000004
【図４】
0006022650.tif 000005
【図５】
0006022650.tif 000006
【図６】
0006022650.tif 000007
【図７】
0006022650.tif 000008
【図８】
0006022650.tif 000009
【図９】
0006022650.tif 000010
【図１０】
0006022650.tif 000011