(57)【要約】【課題】データ・パケットを処理するための方法およびシステムを提供する。【解決手段】この方法は、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類するステップであって、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる、分類するステップと、分類されたエレファント・フローとマイス・フローとをサーバにおける仮想スイッチに送信するステップと、仮想スイッチでマイス・フローを処理し、エレファント・フローと処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するステップと、ハードウェア・スイッチでエレファント・フローを処理し、受信したマイス・フローと処理されたエレファント・フローとを転送するステップとを含む。この方法およびシステムにより、ネットワーク性能が効果的に改善され得る。【選択図】図３
2016525846.tif 000002
【特許請求の範囲】
【請求項１】
データ・パケットを処理するための方法であって、
データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類するステップであって、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる、前記分類するステップと、
前記分類されたエレファント・フローとマイス・フローとをサーバにおける仮想スイッチに送信するステップと、
前記仮想スイッチで前記マイス・フローを処理するステップと、
前記エレファント・フローと前記処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するステップであって、それにより、前記ハードウェア・スイッチは、前記エレファント・フローを処理し、前記処理されたエレファント・フローと前記受信した処理済みのマイス・フローとを転送することができる、前記送信するステップと
を含む方法。
【請求項２】
前記分類されたフローを識別するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記特定の分類パラメータは、前記仮想スイッチおよび前記ハードウェア・スイッチの負荷関連の情報に基づいて、動的に調整され得る、請求項１に記載の方法。
【請求項４】
前記特定の分類パラメータは閾値であり、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類する前記ステップは、各フローのデータ・パケットの数を記録するステップ、前記数が前記閾値未満である前記フローをマイス・フローとして分類するステップ、および前記数が前記閾値以上である前記フローをエレファント・フローとして分類するステップを含む、請求項１に記載の方法。
【請求項５】
前記処理するステップは、フロー情報をバッファリングするステップ、パケット・ヘッダを置き換えるステップ、カプセル化するステップ、およびカプセル化解除するステップのうちの１つまたは複数を含む、請求項１に記載の方法。
【請求項６】
データ・パケットを処理するための方法であって、
データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類するステップであって、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる、前記分類するステップと、
前記分類されたエレファント・フローとマイス・フローとをサーバにおける仮想スイッチに送信するステップと、
前記仮想スイッチで前記マイス・フローを処理し、前記エレファント・フローと前記処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するステップと、
前記ハードウェア・スイッチで前記エレファント・フローを処理し、前記処理されたエレファント・フローと前記受信した処理済みのマイス・フローとを転送するステップと
を含む方法。
【請求項７】
前記分類されたフローを識別するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記仮想スイッチおよび前記ハードウェア・スイッチの負荷関連の情報に基づいて、前記特定の分類パラメータを動的に調整するステップ
をさらに含む、請求項６に記載の方法。
【請求項９】
前記特定の分類パラメータは閾値であり、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類する前記ステップは、各フローのデータ・パケットの数を記録するステップ、前記数が前記閾値未満である前記フローをマイス・フローとして分類するステップ、および前記数が前記閾値以上である前記フローをエレファント・フローとして分類するステップを含む、請求項６に記載の方法。
【請求項１０】
前記処理するステップは、フロー情報をバッファリングするステップ、パケット・ヘッダを置き換えるステップ、カプセル化するステップ、およびカプセル化解除するステップのうちの１つまたは複数を含む、請求項６に記載の方法。
【請求項１１】
前記ハードウェア・スイッチで、
データ・パケットを含んでいるフローを受信するステップと、
エレファント・フローを認識するステップと、
前記エレファント・フローを処理するステップと、
前記受信したマイス・フローと前記処理されたエレファント・フローとを前記サーバにおける仮想スイッチに送信するステップと、
前記仮想スイッチによって前記マイス・フローを処理し、前記処理されたマイス・フローと前記受信した処理済みのエレファント・フローとを転送するステップと
をさらに含む、請求項６に記載の方法。
【請求項１２】
前記ハードウェア・スイッチで、エレファント・フローを認識する前記ステップは、前記フロー内のデータ・パケットに含まれている識別子に基づいて、前記エレファント・フローを認識するステップを含む、請求項１１に記載の方法。
【請求項１３】
前記ハードウェア・スイッチで、エレファント・フローを認識する前記ステップは、前記フローを、前記特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類するステップであって、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる、前記分類するステップを含む、請求項１１に記載の方法。
【請求項１４】
サーバにおけるデータ・パケットを処理するためのシステムであって、
データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類し、前記エレファント・フローと前記マイス・フローとを仮想スイッチに送信するように構成されている分類器であって、前記エレファント・フローは、前記マイス・フローより多くのデータ・パケットを含んでいる、前記分類器と、
前記分類器からの前記マイス・フローを処理し、前記受信したエレファント・フローと前記処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するように構成されている仮想スイッチであって、それにより、前記ハードウェア・スイッチは、前記エレファント・フローを処理し、前記処理されたエレファント・フローと前記受信した処理済みのマイス・フローとを転送することができる、前記仮想スイッチと
を備えるシステム。
【請求項１５】
前記特定の分類パラメータは、前記仮想スイッチおよび前記ハードウェア・スイッチの負荷関連の情報に基づいて、動的に調整され得る、請求項１４に記載のシステム。
【請求項１６】
データ・パケットを処理するためのシステムであって、
データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類し、前記エレファント・フローと前記マイス・フローとを仮想スイッチに送信するように構成されている、サーバにおける分類器であって、前記エレファント・フローは、前記マイス・フローより多くのデータ・パケットを含んでいる、前記分類器と、
前記分類器からの前記マイス・フローを処理し、前記受信したエレファント・フローと前記処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するように構成されている、前記サーバにおける仮想スイッチと、
前記エレファント・フローを処理し、次いで、前記処理されたエレファント・フローと前記受信した処理済みのマイス・フローとを転送するように構成されている、前記ネットワークにおけるハードウェア・スイッチと
を備えるシステム。
【請求項１７】
前記仮想スイッチおよび前記ハードウェア・スイッチの負荷関連の情報に基づいて、前記特定の分類パラメータを動的に調整するように構成されているモニタをさらに備える、請求項１６に記載のシステム。
【請求項１８】
前記ハードウェア・スイッチは、
データ・パケットを含んでいるフローを受信し、
エレファント・フローを認識し、
前記エレファント・フローを処理し、
前記受信したマイス・フローと前記処理されたエレファント・フローとを前記サーバにおける前記仮想スイッチに送信する
ようにさらに構成され、
前記仮想スイッチは、前記マイス・フローを処理し、前記処理されたマイス・フローと前記受信した処理済みのエレファント・フローとを転送するように構成されている、
請求項１６に記載のシステム。
【請求項１９】
前記ハードウェア・スイッチは、前記フロー内のデータ・パケットに含まれている識別子に基づいて、前記エレファント・フローを認識するように構成されている、請求項１８に記載のシステム。
【請求項２０】
前記ハードウェア・スイッチは、前記フローを、前記特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類するように構成され、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる、請求項１８に記載のシステム。
【請求項２１】
コンピュータにおいて動作すると、請求項１ないし１３のいずれかに記載の方法ステップを実行するようになされたプログラム・コードを備えるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・ネットワークに関し、より詳細には、データ・ネットワークにおけるデータ・パケットを処理するための方法およびシステムに関する。
【背景技術】
【０００２】
これまでのネットワーク規模の拡大とともに、ユーザがますます増え、仮想化などの技術が出現してきたことにより、多くのユーザがネットワークをより一層利用するようになる一方で、ネットワークの柔軟性に対する要件もより高まっている。多くのユーザのサポートには、ネットワーク・リソースを共有することが必要であり、また、セキュリティを確保するために多くのユーザ同士間で隔離を行うことが必要である。ソフトウェア・デファインド・ネットワーキング（Software Defined Networking）は、ネットワークに対するユーザの柔軟性要求を満たすことは可能であるが、一方、処理負荷がスイッチまたはサーバ側の両方で生じ、それによって、処理ボトルネックに直面するという理由から、ネットワーク性能の低下ももたらすことになる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記の問題に鑑みて、ネットワーク性能を改善するための解決策を提供する必要性がある。
【課題を解決するための手段】
【０００４】
本発明の１つの実施形態によれば、データ・パケットを処理するための方法が提供される。方法は、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類するステップであって、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる、分類するステップと、分類されたエレファント・フローとマイス・フローとをサーバにおける仮想スイッチに送信するステップと、仮想スイッチでマイス・フローを処理するステップと、エレファント・フローと処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するステップであって、それにより、ハードウェア・スイッチは、エレファント・フローを処理し、処理されたエレファント・フローと受信した処理済みのマイス・フローとを転送することができる、送信するステップとを含む。
【０００５】
本発明の１つの実施形態によれば、データ・パケットを処理するための方法が提供される。方法は、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類するステップであって、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる、分類するステップと、分類されたエレファント・フローとマイス・フローとをサーバにおける仮想スイッチに送信するステップと、仮想スイッチでマイス・フローを処理し、エレファント・フローと処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するステップと、ハードウェア・スイッチでエレファント・フローを処理し、処理されたエレファント・フローと受信した処理済みのマイス・フローとを転送するステップとを含む。
【０００６】
本発明の１つの実施形態によれば、サーバにおけるデータ・パケットを処理するためのシステムが提供される。システムは、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類し、それらを仮想スイッチに送信するように構成されている分類器であって、エレファント・フローは、マイス・フローより多くのデータ・パケットを含んでいる、分類器と、分類器からのマイス・フローを処理し、受信したエレファント・フローと処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するように構成されている仮想スイッチであって、それにより、ハードウェア・スイッチは、エレファント・フローを処理し、処理されたエレファント・フローと受信した処理済みのマイス・フローとを転送することができる、仮想スイッチとを備える。
【０００７】
本発明の１つの実施形態によれば、サーバにおけるデータ・パケットを処理するためのシステムが提供される。システムは、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類し、それらを仮想スイッチに送信するように構成されている、サーバにおける分類器であって、エレファント・フローは、マイス・フローより多くのデータ・パケットを含んでいる、分類器と、分類器からのマイス・フローを処理し、受信したエレファント・フローと処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信するように構成されている、サーバにおける仮想スイッチと、エレファント・フローを処理し、次いで、処理されたエレファント・フローと受信した処理済みのマイス・フローとを転送するように構成されている、ネットワークにおけるハードウェア・スイッチとを備える。
【０００８】
こうして、単に、より少ないデータ・パケットを含んでいるマイス・フローをサーバの仮想スイッチで処理し、より多くのデータ・パケットを含んでいるエレファント・フローをネットワークにおけるハードウェア・スイッチに送信して処理することによって、サーバ側でのＣＰＵに対する要件が抑えられ、それによって、ＣＰＵ処理能力におけるボトルネックに起因する転送遅延を回避することができる。
【０００９】
添付の図面における本開示のいくつかの実施形態のより詳細な説明を通じて、本開示の上記ならびに他の目的、特徴、および利点は、より明らかになろうが、ここで、同じ参照番号は、全体的に、本開示の実施形態における同じコンポーネントを示す。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態を実施するのに適用可能な例示的なコンピュータ・システム／サーバ１２のブロック図である。
【図２】例示的なデータ・センタ・ネットワークのアーキテクチャ図である。
【図３】本発明の１つの実施形態によるデータ・パケットを処理するための方法のフローチャートである。
【図４】本発明の別の実施形態によるデータ・パケットを処理するための方法のフローチャートである。
【図５】本発明の１つの実施形態によるデータ・パケットを処理するためのシステムのブロック図である。
【図６】本発明の別の実施形態によるデータ・パケットを処理するためのシステムのブロック図である。
【発明を実施するための形態】
【００１１】
本開示の好ましい実施形態が例示されている添付の図面を参照して、いくつかの好ましい実施形態が、より詳細に説明されることになる。しかしながら、本開示は、様々な形で実施可能であり、したがって、本明細書に記載の実施形態に限定されるように解釈すべきではない。それどころか、それらの実施形態は、本開示の徹底的かつ完全な理解のために、および本開示の範囲を当業者に完全に伝えるために提供される。
【００１２】
当業者には理解されることになるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として実装され得る。したがって、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは本明細書で「回路（circuit）」、「モジュール（module）」、または「システム（system）」とすべて大まかに呼ばれることがあるソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態を取ることができる。さらには、本発明の態様は、コンピュータ可読プログラム・コードを実装した１つまたは複数のコンピュータ可読媒体（複数可）で実装されるコンピュータ・プログラム製品の形態を取ることもできる。
【００１３】
１つまたは複数のコンピュータ可読媒体（複数可）の任意の組合せが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体であっても、またはコンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、装置、またはデバイス、あるいは前述の任意の適した組合せとすることができるが、それらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例（非包括的なリスト）には、以下、すなわち、１つまたは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭもしくはＦｌａｓｈメモリ）、光ファイバ、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適した組合せが含まれることになる。本文献の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム、装置、またはデバイスによって、あるいは命令実行システム、装置、またはデバイスに関連して使用するためのプログラムを収容する、または記憶することが可能な任意の有形媒体とすることができる。
【００１４】
コンピュータ可読信号媒体は、例えば、ベースバンドで、または搬送波の一部として、コンピュータ可読プログラム・コードが実装されている伝播データ信号を含むことができる。そのような伝播信号は、電磁気、光学、またはそれらの任意の適した組合せを含むが、それらに限定されない多様な形態のうちのいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなくて、かつ命令実行システム、装置、またはデバイスによって、あるいは命令実行システム、装置、またはデバイスに関連して使用するためのプログラムを伝え、伝播し、または輸送することが可能な、任意のコンピュータ可読媒体とすることができる。
【００１５】
コンピュータ可読媒体において実装されるプログラム・コードは、ワイヤレス、ワイヤライン、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組合せを含むが、それらに限定されない任意の適切な媒体を使用して送信され得る。
【００１６】
本発明の態様の動作を遂行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、またはＣ＋＋などのオブジェクト指向のプログラミング言語、および「Ｃ」プログラミング言語など、従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語、あるいは類似のプログラミング言語の任意の組合せで書くことができる。プログラム・コードは、ユーザのコンピュータにおいて全体的に、ユーザのコンピュータにおいて部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータにおいて部分的にかつリモート・コンピュータにおいて部分的に、あるいはリモート・コンピュータまたはサーバにおいて全体的に実行することが可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続可能であり、あるいは接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータとなされてもよい。
【００１７】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図、またはブロック図、あるいはその両方を参照して後述される。フローチャート図、またはブロック図、あるいはその両方の各ブロック、およびフローチャート図、またはブロック図、あるいはその両方におけるブロックの組合せが、コンピュータ・プログラム命令によって実施され得ることは理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャート、またはブロック図、あるいはその両方のブロックまたは複数のブロックにおいて指定される機能／行為を実施するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを創出するものであってよい。
【００１８】
これらのコンピュータ・プログラム命令はまた、コンピュータ可読媒体に記憶される命令が、フローチャート、またはブロック図、あるいはその両方のブロックまたは複数のブロックにおいて指定される機能／行為を実施する命令を含む製造品を創出するように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の形で機能するように指図するものであってよい。
【００１９】
コンピュータ・プログラム命令はまた、コンピュータ、または他のプログラマブル装置において実行する命令が、フローチャート、またはブロック図、あるいはその両方のブロックまたは複数のブロックにおいて指定される機能／行為を実施するためのプロセスを提供するように、コンピュータ実施プロセスを創出するべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされて、コンピュータ、他のプログラマブル装置、または他のデバイスにおいて一連の動作ステップを行わせるものであってよい。
【００２０】
次に、図１を参照すると、本発明の実施形態を実施するのに適用可能な例示的なコンピュータ・システム／サーバ１２のブロック図がその中に示されている。コンピュータ・システム／サーバ１２のみが図示されているが、本明細書に説明される本発明の実施形態の使用、または機能性の範囲に関して限定を示唆する意図は全くない。
【００２１】
図１に示されるように、コンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ１２のコンポーネントは、１つまたは複数のプロセッサもしくはプロセッシング・ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含む様々なシステム・コンポーネントをプロセッサ１６に連結するバス１８を含むことができるが、それらに限定されない。
【００２２】
バス１８は、メモリ・バスまたはメモリ・コントローラ、周辺機器バス、アクセラレイティッド・グラフィックス・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかのうちの１つまたは複数を表す。限定ではなく、例として、そのようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）ローカル・バス、および周辺機器コンポーネント相互接続（ＰＣＩ）バスが含まれる。
【００２３】
典型的には、コンピュータ・システム／サーバ１２は、多様なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２がアクセスできる任意の入手可能な媒体であってよく、揮発性および不揮発性の媒体、リムーバブルおよび非リムーバブルの媒体の両方を含む。
【００２４】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０、またはキャッシュ・メモリ３２、あるいはその両方など、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２が、他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでもよい。ほんの一例として、ストレージ・システム３４が、（図示されていない、通常、「ハード・ドライブ」と呼ばれる）非リムーバブル、不揮発性の磁気媒体との読出しおよび書込みのために設けられてよい。図示されていないが、リムーバブル、不揮発性の磁気ディスク（例えば、「フロッピ・ディスク」）との読出しおよび書込みのために磁気ディスク・ドライブが、ならびにＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体など、リムーバブル、不揮発性の光ディスクとの読出しまたは書込みのために光ディスク・ドライブが、設けられてもよい。そのような例では、それぞれが、１つまたは複数のデータ媒体インターフェースによってバス１８に接続され得る。以下にさらに示され、説明されることになるように、メモリ２８は、本発明の実施形態の機能を遂行するように構成されているプログラム・モジュールの組（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００２５】
例として、プログラム・モジュール４２の組（少なくとも１つ）を有するプログラム／ユーティリティ４０が、メモリ２８に記憶され得、限定ではないが、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも同様である。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはそれらの何らかの組合せのそれぞれは、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール４２は、概して、本明細書に記載される本発明の実施形態の機能、または方法論、あるいはその両方を遂行する。
【００２６】
コンピュータ・システム／サーバ１２はまた、キーボード、ポインティング・デバイス、ディスプレイ２４などの１つまたは複数の外部デバイス１４、ユーザがコンピュータ・システム／サーバ１２と相互作用できるようにする１つもしくは複数のデバイス、またはコンピュータ・システム／サーバ１２が１つもしくは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはそれらのすべてと通信することもできる。そのような通信は、Ｉｎｐｕｔ／Ｏｕｔｐｕｔ（Ｉ／Ｏ）インターフェース２２を介して行われ得る。さらになお、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般広域ネットワーク（ＷＡＮ）、またはネットワーク・アダプタ２０を介した公衆ネットワーク（例えば、インターネット）、あるいはそれらのすべてなどの１つまたは複数のネットワークとも通信することができる。示されているように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示されていないが、他のハードウェア・コンポーネント、またはソフトウェア・コンポーネント、あるいはその両方が、コンピュータ・システム／サーバ１２とともに使用可能になることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどが含まれるが、それらに限定されない。
【００２７】
図２は、例示的なデータ・センタ・ネットワークのアーキテクチャの図を示している。データ・センタ・ネットワークが本発明の様々な実施形態を説明するための例として挙げられているが、本発明は、データ・センタ・ネットワークに限定されるのではなく、本発明は、任意のタイプのネットワークに適用できることに留意されたい。図２に示されるように、データ・センタ・ネットワークは、複数のハードウェア・スイッチ２１０を含むことができ、ここでは、ハードウェア・スイッチは、複数のネットワーク・ノード間で相互接続するためのネットワーク信号転送デバイスを示す。複数のハードウェア・スイッチ２１０を介して、サーバ２２０が、データ・センタ・ネットワークに接続される。ここでは、サーバ２２０は、複数の仮想マシンが実現されるサーバであっても、または任意の他の物理サーバであってもよい。サーバ２２０は、その内部に仮想スイッチｖＳｗｉｔｃｈ、すなわち、サーバ内で実現されるソフトウェア・スイッチを含んでおり、その仮想スイッチは、サーバにおける複数の仮想マシンを相互接続するために使用され得る。
【００２８】
データ・パケットは、サーバ、およびデータ・センタ・ネットワーク内でフローの形態で送信される。ここでは、フローは、同じクインテット（送信元ＩＰ、送信先ＩＰ、送信元ＭＡＣ、送信先ＭＡＣ、およびポート番号）を有するデータ・パケットの群を示し、概して、同じフロー内のデータ・パケットは、それらの相互間の関連性を有し、典型的には、１つのネットワーク・アプリケーションに属する。
【００２９】
本発明の発明者は、図２に示されるデータ・センタ・ネットワークのアーキテクチャの下、サーバ側で、入力負荷が増加すると、サーバのＣＰＵに対する処理要件が比例的に増加し、それにより、ＣＰＵは、処理する際にボトルネックになることを見出した。ＣＰＵの追加の消費は、計算リソースを浪費することになり、それにより、テナントの経費も浪費されることになる。
【００３０】
その一方で、ハードウェア・スイッチ側では、フロー・テーブルは、サイズが限定されている。フロー・ルールのタイムアウト期間は、３５秒より長いなど、比較的長く設定され、その場合、記憶されるのに必要なフロー・エントリのサイズは、２ｋを超えることになり、そのことは、スイッチのフロー・テーブルをオーバーフローにし、結果的に、スイッチ側での処理ボトルネックをもたらすことになる。
【００３１】
本発明の発明者は、データ・センタ・ネットワークのトラフィック内には、エレファント・フローとマイス・フローとがあり、ここで、エレファント・フローそのものの数は、比較的少なく、しかしながら、各エレファント・フローは、大量のデータ・パケットを含んでおり、その一方、マイス・フローそのものの数は、比較的多く、しかしながら、それらは、エレファント・フローと比較すると、はるかに少ないデータ・パケットを含んでいることに気付いている。
【００３２】
サーバ側では、多くのＣＰＵ時間がエレファント・フローのデータ・パケットを処理することによって消費され、エレファント・フローのパケット処理時間は、マイス・フローのパケット処理時間よりはるかに大きい。これは、仮想スイッチにおけるデータ・パケットの処理が、一般ＣＰＵを消費することになり、より多くのデータ・パケットを含んでいるエレファント・フローが、より多くのＣＰＵリソースを消費することになるという事実に起因する。その一方で、別の避けられないシステム・オーバーヘッドは、データ・パケットを転送するためのネットワークＩ／Ｏであり、エレファント・フローを転送するためにネットワークＩ／Ｏによって消費されるＣＰＵもまた、マイス・フローを転送するためにネットワークＩ／Ｏによって消費されるＣＰＵよりはるかに大きい。
【００３３】
一方、スイッチ側では、フローをバッファリングするためのフロー・エントリに関しては、エレファント・フローをバッファリングするためのフロー・エントリに対する必要性は、フローをすべてバッファリングするためのものよりはるかに小さく、より安定している。例えば、キャッシュについてのタイムアウト期間が３０秒に設定される場合には、平均して５６のフロー・エントリ、および最大で３００のフロー・エントリが１つのエレファント・フローをバッファリングするのに必要になり、それは、現在、一般に使用されるスイッチによって容易に実現可能である。フローすべてが、バッファリングされることになる場合には、平均して１７４１のフロー・エントリが必要になり、かなりの変動が存在することになる。
【００３４】
上述の観察に基づいて、本発明の様々な実施形態によるデータ・パケットを処理するための方法およびシステムを提案する。
【００３５】
図３は、本発明の１つの実施形態によるデータ・パケットを処理するための方法のフローチャートを示している。
【００３６】
ステップＳ３１０では、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類する。ここで、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる。本発明の実施形態によれば、仮想マシンの文脈では、フローは、それぞれの仮想マシンから生じ得る。
【００３７】
本発明の実施形態によれば、特定の分類パラメータは、閾値とすることができる。各フローのデータ・パケットの数は記録され、フローにおけるデータ・パケットの数が閾値未満の場合、そのフローはマイス・フローとして分類され、その数が閾値以上の場合、そのフローはエレファント・フローとして分類される。
【００３８】
本発明の実施形態によれば、分類されたフローは、識別され得る。識別は、エレファント・フローのみにおいて、またはマイス・フローのみにおいて行うことができ、あるいはエレファント・フローとマイス・フローの両方それぞれにおいて行うことができる。例えば、識別は、データ・パケットにおける既存のタグ・ビット（ＶＬＡＮ、ＴＯＳなど）を利用することによって、または新規ロケーションを付加することによって行うことができる。
【００３９】
ステップＳ３２０では、分類されたエレファント・フローとマイス・フローとをサーバにおける仮想スイッチに送信する。
【００４０】
ステップＳ３３０では、仮想スイッチでマイス・フローを処理する。
【００４１】
本発明の実施形態によれば、フローがマイス・フローであるかどうかがデータ・パケットにおけるタグをチェックすることによって判断され得る。マイス・フローである場合には、処理動作がマイス・フローにおいて行われ、この処理動作は、フロー情報をバッファリングすること、パケット・ヘッダを置き換えること、カプセル化すること、カプセル化解除することなどの動作を含むことができる。
【００４２】
ステップＳ３４０では、エレファント・フローと処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信し、それにより、ハードウェア・スイッチは、エレファント・フローを処理し、処理されたエレファント・フローと受信した処理済みのマイス・フローとを転送することができる。
【００４３】
ここで、ハードウェア・スイッチは、データ・パケットにおけるタグをチェックすることによって、エレファント・フローとマイス・フローとを区別する。エレファント・フローである場合には、エレファント・フローにおける処理動作では、フロー情報をバッファリングすること、パケット・ヘッダを置き換えること、カプセル化することなどが行われる。エレファント・フローでない場合、処理は何も行われず、フローは直接、コア・ネットワークに、または送信先側のハードウェア・スイッチに転送される。
【００４４】
こうして、単に、より少ないデータ・パケットを含んでいるマイス・フローをサーバの仮想スイッチで処理し、より多いデータ・パケットを含んでいるエレファント・フローをネットワークにおけるハードウェア・スイッチに送信して処理することによって、サーバ側でのＣＰＵに対する要件が抑えられ、それによって、ＣＰＵ処理能力におけるボトルネックに起因する転送遅延を回避することができる。
【００４５】
本発明の実施形態によれば、特定の分類パラメータは、仮想スイッチおよびハードウェア・スイッチの負荷関連の情報に基づいて、動的に調整され得る。
【００４６】
例えば、負荷状況は、ネットワークにおけるモニタに定期的にフィードバックされ得る。モニタは、定期的に、仮想スイッチおよびハードウェア・スイッチにおける負荷データを収集し、またはスイッチは、定期的に、負荷パラメータをモニタにフィードバックすることができる。モニタは、仮想スイッチとハードウェア・スイッチとの間の負荷を平衡させるように、モニタリング・データに基づいて適正な分類閾値を割り当てる。例えば、モニタは、仮想スイッチおよびハードウェア・スイッチにおける必要な負荷データ、ＣＰＵ占有率、メモリ占有率などを収集し、様々なデータ指標を総合的に考慮することによって、負荷占有率を計算することができる。例えば、最高占有率を有する値、すなわち、システム・ボトルネックは、負荷占有率として選択され得、次いで、エレファント・フローおよびマイス・フローの分類パラメータは、仮想スイッチおよびハードウェア・スイッチの負荷状態に基づいて調整される。仮想スイッチの負荷が高い場合、パラメータは、より多くの負荷をハードウェア・スイッチに割り当てるように調整される（例えば、エレファント・フローのようにより多くのフローを分類するには、分類閾値を１０％だけ抑える）。逆に、ハードウェア・スイッチの負荷が高い場合、閾値は、１０％だけ増加する。負荷同士が近接している（差が１０％以内である）場合、負荷は、バランスが取れていると見なされ、分類パラメータは、調整されないことになる。
【００４７】
図４は、本発明の１つの実施形態によるネットワークにおけるサーバおよびスイッチによって実現されるデータ・パケットを一緒に処理するための方法のフローチャートを示している。
【００４８】
ステップＳ４１０では、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類する。ここで、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる。
【００４９】
ステップＳ４２０では、分類されたエレファント・フローとマイス・フローとをサーバにおける仮想スイッチに送信する。
【００５０】
ステップＳ４３０では、仮想スイッチでマイス・フローを処理し、エレファント・フローと処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチに送信する。
【００５１】
ステップＳ４４０では、ハードウェア・スイッチでエレファント・フローを処理し、処理されたエレファント・フローと受信した処理済みのマイス・フローとを転送する。
【００５２】
データ・パケットを送信するとき、データ・パケットは、まず、サーバ上の仮想スイッチ（送信側でのアクセス・スイッチ）を通過してから、ネットワークにおけるハードウェア・スイッチに達する。データ・パケットを受信する順序が正反対であるときには、データ・パケットは、まず、ネットワーク上のハードウェア・スイッチ（受信側でのアクセス・スイッチ）を通過してから、送信先サーバ上の仮想スイッチに達し、最終的には、受信するパーティに達する。
【００５３】
対称的な動作を必要とするいくつかのアプリケーションの場合には、例えば、パケットは、送信する側から送信された後にカプセル化される必要があり、受信する側に達する前にカプセル化解除される必要があり、受信する側はまた、逆の順序で処理を実施する必要がある、つまり、エレファント・フローが、まず、ハードウェア・スイッチによって処理され、次いで、マイス・フローが、仮想スイッチによって処理される。セキュリティ検出など、受信する側で処理される必要がない動作の場合には、パケットは、送信する側から送信された後に処理されるだけで十分であり、受信する側は、それが仮想スイッチであるか、ハードウェア・スイッチであるかにかかわらず、直接、パケットを転送することになる（処理命令がヌルであることと等しい）。
【００５４】
したがって、本発明の１つの実施形態によれば、図４は、ステップＳ４５０、すなわち、ネットワークにおけるハードウェア・スイッチにおいて、データ・パケットを含んでいるフローを受信し、エレファント・フローを認識し、エレファント・フローを処理し、マイス・フローと処理されたエレファント・フローとをサーバにおける仮想スイッチに送信することをさらに含むことができる。
【００５５】
本発明の１つの実施形態によれば、ステップＳ４５０では、ハードウェア・スイッチは、フローにおけるデータ・パケットに含まれている識別子に基づいて、エレファント・フローを認識することができる。代替として、ハードウェア・スイッチはまた、現在の負荷状態に従って、エレファント・フローとマイス・フローとを再分類することができ、例えば、上述の方法を用いて、フローを、特定の分類パラメータに基づいて、エレファント・フローとマイス・フローとに分類し、ここで、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる。
【００５６】
次いで、ステップＳ４６０では、仮想スイッチによってマイス・フローを処理し、処理されたマイス・フローと受信した処理済みのエレファント・フローとを転送する。
【００５７】
本発明の１つの実施形態によれば、仮想スイッチは、送信する側のスイッチのみならず、受信する側のスイッチでもある。これは、送信する側と受信する側の両方が、同じ物理サーバ上（可能性として、種々の仮想マシン、または種々の方法）にあることを意味する。この例では、データ・パケットは、ハードウェア・スイッチを通過することはなく、したがって、それらはすべて、仮想スイッチにおいて処理される。本発明の１つの実施形態によれば、仮想スイッチは、それの受信したフローがローカルに転送されるかどうかをさらに判断することができる。例えば、仮想スイッチは、データ・パケットがそのＭＡＣアドレスに基づいてローカルに転送されるかどうかを判断することができる。はい、ならば、フローはすべて、仮想スイッチにおいて処理される。
【００５８】
本発明の１つの実施形態によれば、ハードウェア・スイッチは、送信する側のスイッチのみならず、受信する側のスイッチでもあり、例えば、送信するパーティと受信するパーティの両方が同じハードウェア・スイッチに接続される場合には、ハードウェア・スイッチは、送信する側の処理を完了した後に、直接、受信する側の処理を行うことになる。（カプセル化およびカプセル化解除などの）対称的なアプリケーションの場合、処理は行われず、これは具体的なアプリケーションによって決まる。
【００５９】
図５は、本発明の１つの実施形態によるサーバ側でデータ・パケットを処理するためのシステムのブロック図を示している。システムは、分類器５１０、および仮想スイッチ５２０を備える。分類器５１０は、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類し、それらを仮想スイッチ５２０に送信するように構成されている。ここで、エレファント・フローは、マイス・フローより多くのデータ・パケットを含んでいる。仮想スイッチ５２０は、分類器からのマイス・フローを処理し、受信したエレファント・フローと処理されたマイス・フローとをハードウェア・スイッチに送信するように構成され、それにより、ハードウェア・スイッチは、エレファント・フローを処理し、処理されたエレファント・フローとそれの受信した処理済みのマイス・フローとを転送することができる。
【００６０】
ここで、分類器５１０は、分類されたフローを識別するようにさらに構成されている。
【００６１】
本発明の１つの実施形態によれば、特定の分類パラメータは、仮想スイッチおよびハードウェア・スイッチの負荷関連の情報に基づいて、動的に調整され得る。特定の分類パラメータは、閾値とすることができ、分類器５１０は、各フローのデータ・パケットの数を記録し、その数が閾値未満のフローをマイス・フローとして分類し、その数が閾値以上のフローをエレファント・フローとして分類することができる。
【００６２】
図６は、本発明の１つの実施形態によるデータ・パケットを処理するためのシステムのブロック図を示している。システムは、分類器６１０、サーバ側での仮想スイッチ６２０、およびネットワークにおけるハードウェア・スイッチ６３０を備える。分類器６１０は、データ・パケットを含んでいるフローを、特定の分類パラメータに従って、エレファント・フローとマイス・フローとに分類し、それらを仮想スイッチ６２０に送信するように構成されている。ここで、エレファント・フローは、マイス・フローより多くのデータ・パケットを含んでいる。仮想スイッチ６２０は、分類器からのマイス・フローを処理し、受信したエレファント・フローと処理されたマイス・フローとをネットワークにおけるハードウェア・スイッチ６３０に送信するように構成されている。ハードウェア・スイッチ６３０は、エレファント・フローを処理し、次いで、処理されたエレファント・フローと受信した処理済みのマイス・フローとを転送するように構成されている。
【００６３】
本発明の１つの実施形態によれば、システム６００は、仮想スイッチ６２０およびハードウェア・スイッチ６３０の負荷関連の情報に基づいて、特定の分類パラメータを動的に調整するように構成されたモニタ６４０をさらに備える。
【００６４】
データ・パケットを送信するとき、データ・パケットは、まず、サーバにおける仮想スイッチ（送信する側でのアクセス・スイッチ）を通過してから、ネットワークにおけるハードウェア・スイッチに達する。データ・パケットを受信する順序が正反対であるときには、データ・パケットは、まず、ネットワークにおけるハードウェア・スイッチ（受信する側でのアクセス・スイッチ）を通過してから、送信先サーバにおけるソフト・スイッチに達し、最終的には、受信するパーティに達する。
【００６５】
本発明の１つの実施形態によれば、ハードウェア・スイッチは、送信する側のスイッチのみならず、受信する側のスイッチでもある。受信する側のスイッチである場合には、ハードウェア・スイッチ６３０は、データ・パケットを含んでいるフローを受信し、エレファント・フローを認識し、エレファント・フローを処理し、マイス・フローと処理されたエレファント・フローとをサーバにおける仮想スイッチに送信するようにさらに構成可能であり、仮想スイッチ６１０は、マイス・フローを処理し、受信したエレファント・フローと処理されたマイス・フローとを転送するように構成されている。
【００６６】
本発明の１つの実施形態によれば、ハードウェア・スイッチ６３０は、フロー内のデータ・パケットに含まれている識別子に基づいて、エレファント・フローを認識することができる。代替として、ハードウェア・スイッチ６３０はまた、現在の負荷状態に従って、エレファント・フローとマイス・フローとを再分類することができ、例えば、上述の方法を用いて、フローを、特定の分類パラメータに基づいて、エレファント・フローとマイス・フローとに分類し、ここで、１つのエレファント・フローは、１つのマイス・フローより多くのデータ・パケットを含んでいる。
【００６７】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャート、またはブロック図における各ブロックは、指定された論理的な機能（複数可）を実装するための１つまたは複数の実行可能な命令を含むコードのモジュール、コードのセグメント、またはコードの一部分を表すことができる。いくつかの代替の実装形態においては、ブロックにおいて注記された機能は、図に注記された順序から外れて行われ得ることにもまた留意されたい。例えば、連続して示された２つのブロックは、実際、実質的に同時に実行可能であり、またはブロックは、時として、必要とされる機能性に応じて、逆順序で実行可能である。ブロック図、またはフローチャート図、あるいはその両方の各ブロック、およびブロック図、またはフローチャート図、あるいはその両方におけるブロックの組合せは、指定された機能または行為を行う専用ハードウェアベースのシステム、あるいは専用ハードウェアとコンピュータ命令の組合せによって実装され得ることに留意されることにもなろう。
【００６８】
本発明の様々な実施形態の説明は、例示目的のために表されており、開示される実施形態を包括するようにも、それらに限定するようにも意図していない。多くの変更形態、および変形形態が、説明された実施形態の範囲および趣旨から逸脱することなしに当業者には明らかになろう。本明細書に使用される専門用語は、実施形態の原理、実際の適用例、または市場に見出される技術にわたる技術的な改良を最良に説明するために、あるいは本明細書に開示される実施形態を他の当業者が理解できるようにするために選択されたものである。
【図１】
2016525846.tif 000003
【図２】
2016525846.tif 000004
【図３】
2016525846.tif 000005
【図４】
2016525846.tif 000006
【図５】
2016525846.tif 000007
【図６】
2016525846.tif 000008
【国際調査報告】
2016525846.tif 000009
2016525846.tif 000010