(57)【要約】  ソフトウェア定義ネットワーク（ＳＤＮ）内でデータフローをデフレクションさせるためのフローデフレクション能力が、ＳＤＮにセキュリティを提供するために、提供される。第１のネットワーク要素に関連付けられた状態（たとえば、ＴＣＡＭ利用状態、ＣＰＵ利用状態、など）の検出に基づいて、ＳＤＮの第１のネットワーク要素のためにフロー転送ルールが生成される。フロー転送ルールは、ＳＤＮの制御要素またはＳＤＮの第１のネットワーク要素によって生成される。フロー転送ルールは、第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、ＳＤＮの第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する。フロー転送ルールは、全フローデフレクションまたは選択的なフローデフレクションを指定することができる。
2015531568.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、プロセッサに通信可能に接続されたメモリとを含む装置であって、
プロセッサが、
ソフトウェア定義ネットワークの第１のネットワーク要素に関連付けられたリソース利用状態の検出に基づいて、第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、ソフトウェア定義ネットワークの第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、フロー転送ルールを生成するように構成されている、
装置。
【請求項２】
リソース利用状態が、三値連想メモリ（ＴＣＡＭ）利用状態または中央処理ユニット（ＣＰＵ）利用状態を含む、請求項１に記載の装置。
【請求項３】
プロセッサが、候補ネットワーク要素のセットから第２のネットワーク要素を選択するように構成されている、請求項１に記載の装置。
【請求項４】
リソース利用状態が、リソースタイプに関連付けられており、第２のネットワーク要素が、リソースタイプについての最も低いリソース利用レベルを有する候補ネットワーク要素のうちの１つである、請求項３に記載の装置。
【請求項５】
候補ネットワーク要素のセットが、
第１のネットワーク要素の１つもしくは複数の１ホップネイバ、または
第１のネットワーク要素の１つもしくは複数の２ホップネイバ
のうちの少なくとも１つを含む、
請求項３に記載の装置。
【請求項６】
フロー転送ルールが、第１のネットワーク要素で受信された各新しいフロー要求が第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、請求項１に記載の装置。
【請求項７】
フロー転送ルールが、第１のネットワーク要素で受信された新しいフロー要求の小部分が第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、請求項１に記載の装置。
【請求項８】
プロセッサが、
フロー転送ルールに基づいて第１のネットワーク要素から第２のネットワーク要素へとデフレクションされたデフレクションされたデータフローの、第２のネットワーク要素から第１のネットワーク要素への移行を開始し、
デフレクションされたデータフローが第２のネットワーク要素から再び第１のネットワーク要素へと移行されたという判定に基づいて、第１のネットワーク要素でのフロー転送ルールの使用を防ぐためのメッセージを生成するように構成されている、
請求項１に記載の装置。
【請求項９】
プロセッサが、
フロー転送ルールに基づいて第１のネットワーク要素から第２のネットワーク要素へとデフレクションされたデフレクションされたデータフローごとに、デフレクションされたデータフローのデータパケットが、第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、フロールールを生成し、
第１のネットワーク要素でのフロー転送ルールの使用を中止するよう、第１のネットワーク要素に命令するためのメッセージを生成するように構成されている、
請求項１に記載の装置。
【請求項１０】
ソフトウェア定義ネットワークの第１のネットワーク要素に関連付けられたリソース利用状態の検出に基づいて、第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、ソフトウェア定義ネットワークの第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、フロー転送ルールを生成するために、
プロセッサを使用するステップを含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、通信ネットワークに関し、限定的でなくより詳細には、ソフトウェア定義ネットワーク（ＳＤＮ）においてセキュリティを提供することに関する。
【背景技術】
【０００２】
ソフトウェア定義ネットワーク（ＳＤＮ）は、制御プレーンがデータプレーンから分離されたタイプのコンピュータネットワークである。概して、ＳＤＮにおいて、データプレーンは、転送要素（たとえば、スイッチ、ルータ、など）を使用して実装され、制御プレーンは、転送要素から分離した、１つまたは複数の制御要素（たとえば、サーバなど）を使用して実装される。
【発明の概要】
【課題を解決するための手段】
【０００３】
先行技術におけるさまざまな欠陥が、ソフトウェア定義ネットワーク（ＳＤＮ）においてセキュリティを提供するための実施形態によって対処される。
【０００４】
一実施形態において、装置が、プロセッサと、プロセッサに通信可能に接続されたメモリとを含み、プロセッサは、ＳＤＮの第１のネットワーク要素におけるリソース利用状態の検出に基づいて、ＳＤＮの第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、ＳＤＮの第１のネットワーク要素からＳＤＮの第２のネットワーク要素へと転送されるべきであることを指示する、フロー転送ルールを生成するように構成されている。
【０００５】
一実施形態において、方法が、ＳＤＮの第１のネットワーク要素におけるリソース利用状態の検出に基づいて、ＳＤＮの第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、ＳＤＮの第１のネットワーク要素からＳＤＮの第２のネットワーク要素へと転送されるべきであることを指示する、フロー転送ルールを生成するために、プロセッサを使用するステップを含む。
【０００６】
一実施形態において、装置が、プロセッサと、プロセッサに通信可能に接続されたメモリとを含み、プロセッサは、ＳＤＮの第１のネットワーク要素で新しいフロー要求を受信し、第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示するフロー転送ルールに基づいて、新しいフロー要求を、ＳＤＮの第１のネットワーク要素から第２のネットワークに向けて転送するように、構成されている。
【０００７】
一実施形態において、方法が、ＳＤＮの第１のネットワーク要素で新しいフロー要求を受信するために、および、第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示するフロー転送ルールに基づいて、新しいフロー要求を、ＳＤＮの第１のネットワーク要素から第２のネットワークに向けて転送するために、プロセッサを使用するステップを含む。
【０００８】
本明細書における教示は、添付の図面と併用して以下の詳細な説明を検討することによって、容易に理解され得る。
【図面の簡単な説明】
【０００９】
【図１】ソフトウェア定義ネットワーク（ＳＤＮ）として実装されるデータセンタネットワークを含む、データセンタ環境の高レベルブロック図である。
【図２】図１のデータセンタネットワークのネイバのネットワーク要素における比較的低相関のリソース消費を示す、例示的な累積分布関数を示す図である。
【図３】ネットワーク要素におけるリソース利用状態の検出に応答して、ネットワーク要素においてフローデフレクションを使用するための方法の一実施形態を示す図である。
【図４】本明細書で説明される機能を実施する際の使用に好適なコンピュータの高レベルブロック図である。
【発明を実施するための形態】
【００１０】
理解を容易化するために、可能な限り、図面に共通する同一の要素を指摘するために、同一の参照番号が使用されている。
【００１１】
概して、ソフトウェア定義ネットワーク（ＳＤＮ）内でデータフローをデフレクションさせるためのフローデフレクション能力が、ＳＤＮにセキュリティを提供するために、提供される。
【００１２】
図１は、ソフトウェア定義ネットワーク（ＳＤＮ）として実装されるデータセンタネットワークを含む、データセンタ環境の高レベルブロック図を示す。
【００１３】
図１に示されるように、データセンタ環境１００は、データセンタ１０２を含む。データセンタ１０２は、複数のホストサーバ１１０（まとめて、ホストサーバ１１０）と、データセンタネットワーク１２０とを含む。
【００１４】
ホストサーバ１１０は、それぞれの複数の仮想マシン（ＶＭ）１１２をサポートするように構成されている。各ホストサーバ１１０は、１つまたは複数のサーバブレードを含むことができ、各サーバブレードは、１つまたは複数の中央処理ユニット（ＣＰＵ）を含むことができることが認識されるであろう。
【００１５】
データセンタネットワーク１２０は、データセンタ環境１００の通信（たとえば、データセンタ環境１００内のホストサーバ１１０のＶＭ１１２間の通信、ホストサーバ１１０のＶＭ１１２とデータセンタ環境１００の外側に設置されたデバイスとの間の通信、など、ならびにそのさまざまな組合せ）サポートするように構成されている。
【００１６】
データセンタネットワーク１２０は、複数のネットワーク要素１２２と、コントローラ１２７とを含む。ネットワーク要素１２２は、３つのトップオブラック（ＴｏＲ）スイッチ１２２Ｔ１−１２２Ｔ３（まとめて、ＴｏＲスイッチ１２２Ｔ）、対のアグリゲートスイッチ１２２Ａ１−１２２Ａ２（まとめて、アグリゲートスイッチ１２２Ａ）、および対のルータ１２２Ｒ１−１２２Ｒ２（まとめて、ルータ１２２Ｒ）を含む。図１に示されるように、ホストサーバ１１０は、ＴｏＲスイッチ１２２Ｔに通信可能に接続され（各ＴｏＲスイッチ１２２Ｔが複数のホストサーバ１１０をサポートし、各ホストサーバ１１０がＴｏＲスイッチ１２２Ｔのうちの１つによってサポートされるように、各ホストサーバ１１０は、ＴｏＲスイッチ１２２Ｔのうちの関連付けられた１つに接続されている）、ＴｏＲスイッチ１２２Ｔの各々は、アグリゲートスイッチ１２２Ａの両方に通信可能に接続され、アグリゲートスイッチ１２２Ａの各々は、ルータ１２２Ｒの両方に通信可能に接続される。コントローラ１２７は、ルータ１２２Ｒのうちの１つを介して、ネットワーク要素１２２の各々に通信可能に接続される。図１にさらに示されるように、各ルータ１２２Ｒは、通信ネットワーク１４０（たとえば、インターネットなどのパブリックデータネットワーク、プライベートデータネットワーク、など）に通信可能に接続される。データセンタネットワーク１２０は、例示にすぎず、さまざまな他のタイプのデータセンタネットワーク１２０（たとえば、より少ないまたはより多いＴｏＲスイッチ１２２Ｔ、より少ないまたはより多いアグリゲートスイッチ１２２Ａ、より少ないまたはより多いルータ１２２Ｒ、より少ないまたはより多い層のネットワーク要素１２２、ネットワーク要素１２０の異なる配置、など、ならびにそのさまざまな組合せを含む）が、サポートされ得ることが認識されるであろう。
【００１７】
データセンタネットワーク１２０は、ＳＤＮとして実装される。概して、ＳＤＮは、集中型コントローラを介して、ネットワークのネットワーク要素をプログラムするための（例証として、コントローラ１２７を介して、データセンタネットワーク１２０のネットワーク要素１２２をプログラムするための）能力を提供する。このタイプの柔軟性は、ネットワークを管理し、更新する、ネットワーク内のフローの位置付けを制御する、その他などの、さまざまなタスクを簡素化する。そのような利点は、大規模データセンタにとって有益であり得ることが認識されるであろう。たとえば、ＳＤＮは、データセンタ内の大量のデータセットの移行を計画するために使用されてよい。
【００１８】
データセンタネットワーク１２０において、ネットワーク要素１２２は、ＳＤＮの転送要素として動作するように構成されており、コントローラ１２７は、ＳＤＮの制御要素として動作するように構成されている。言い換えれば、ネットワーク要素１２２は、データセンタネットワーク１２０内でデータを伝搬するためのＳＤＮのデータプレーンを提供し、コントローラ１２７は、データセンタネットワーク１２０内のデータの伝搬を制御するためのＳＤＮの制御プレーンを提供する。典型的なＳＤＮにおいて、ネットワーク要素１２２は、新しいデータフローの要求をコントローラ１２７へと転送し、コントローラ１２７は、新しいデータフローのためのデータ経路を計算し、コントローラ１２７は、計算されたデータ経路を指示するデータ経路情報を、データフローをサポートすることになるネットワーク要素１２２に提供し、データフローをサポートすることになるネットワーク要素１２２が、コントローラ１２７からデータ経路情報を受信し、データ経路情報を使用して、データフローの計算されたデータ経路に従ってデータフローのデータを転送する。このようにして、コントローラ１２７は、ＳＤＮ内でのデータフローのデータ経路を制御する。
【００１９】
データセンタネットワーク１２０において、ネットワーク要素１２２およびコントローラ１２７は、（たとえば、ネットワーク要素１２２がデータフローのためのデータ経路の計算を要求するのを可能にするため、コントローラ１２７がデータフローのためのデータ経路情報をネットワーク要素１２２に提供するのを可能にするため、などの）ＳＤＮの制御プロトコルを使用して、通信するように構成されている。少なくともいくつかの実施形態において、データセンタネットワーク１２０で使用される制御プロトコルは、ＯｐｅｎＦｌｏｗプロトコルである。
【００２０】
概して、ＯｐｅｎＦｌｏｗは、ネットワーク要素から中央コントローラへのデータフローの経路セットアップ決定をオフロードすることによって、ネットワークのきめの細かい制御を提供する（例証として、ネットワーク要素１２２からコントローラ１２７へのデータフローの経路セットアップ決定をオフロードすることによって、データセンタネットワーク１２０のきめの細かい制御を提供する）。コントローラ１２７は、ＳＤＮのグローバルな知識に基づいて（例証として、データセンタネットワーク１２０のグローバルな知識に基づいて）、所与のデータフローのための最適なデータ経路を識別するように構成されている。ＯｐｅｎＦｌｏｗでは、新しいフロー要求を受信するＳＤＮの第１のネットワーク要素１２２が、新しいフロー要求をコントローラ１２７に送信し、コントローラ１２７は、データセンタネットワーク１２０内のデータフローのためのデータ経路を決定し、ネットワーク要素１２２による使用のために構成された転送ルールを用いてネットワーク要素１２２をプログラミングすることによって、データセンタネットワーク１２０内でデータ経路をプロビジョニングして、データフローのために決定されたデータ経路に従ってデータフローのパケットを転送する。新しいフロー要求は、データフローの最初のパケット、データフロー要求メッセージ、などの形式であってよい。たとえば、データセンタ１０２のホストサーバ１１０のうちの１つのＶＭ１１２のうちの１つから発信するデータフローについては、ホストサーバ１１０のうちの１つが関連付けられているＴｏＲスイッチ１２２Ｔが、データフローのための新しいフロー要求を受信し、（フローデフレクションが使用されていないときに）データフローのための新しいフロー要求をコントローラ１２７へと転送するための、第１のネットワーク要素である。たとえば、データセンタ１０２の外側にあるデバイスから発信し、データセンタ１０２のホストサーバ１１０のうちの１つのＶＭ１１０のうちの１つに向けられたデータフローについては、データセンタネットワーク１２０へのエントリポイントであるルータ１２２Ｒが、データフローのための新しいフロー要求を受信し、（フローデフレクションが使用されていないときに）データフローのための新しいフロー要求をコントローラ１２７へと転送するための、第１のネットワーク要素である。
【００２１】
結果として、ＯｐｅｎＦｌｏｗにおいて、制御プレーンオーバーヘッドは、ＳＤＮ内のデータフローの数次第である。このように、ＳＤＮの制御プレーンを提供するためのＯｐｅｎＦｌｏｗの使用が、ＳＤＮのデータフローのきめの細かい制御を可能にする限り、ＯｐｅｎＦｌｏｗの制御プレーンを提供するために使用される関連付けられたリソースを含む、ＯｐｅｎＦｌｏｗの制御プレーンが、大いに利用されるようになる可能性があり、したがって、新しい攻撃のクラスに脆弱であることがある。これは、制御プレーンオーバーヘッドがデータフローの数とは無関係な従来のネットワークと比較すれば、少なくともその理由は、（１）トポロジ情報を維持すること、データ経路を計算すること、および転送テーブルを維持することを担うネットワーク要素上に、制御プレーンが分散されている、ならびに（２）事前計算されたエントリに基づいて、データフローのためのデータ経路をまとめることによるネットワークを通して、データフローのパケットが転送されるからである。
【００２２】
ＯｐｅｎＦｌｏｗにおいて、コントローラ１２７およびネットワーク要素１２２は、データフローのためのデータ経路セットアップを実施し、ネットワーク要素１２２が、データフローをサポートする。所与のデータフローについて、（１）コントローラ１２７は、データフローのためのデータ経路を決定し、データフローのために決定されたデータ経路におけるネットワーク要素１２２に提供されることになる転送ルールを計算し、転送ルールを、データフローのために決定されたデータ経路におけるネットワーク要素１２２に伝搬する、および（２）データフローのために決定されたデータ経路におけるネットワーク要素１２２は、転送ルールを受信し、転送ルールを転送テーブルに格納し、転送ルールにアクセスして、データフローのために決定されたデータ経路に従って、データフローのパケットを転送する。結果として、データフローのためのネットワーク要素１２２によるサポートは、ネットワーク要素１２２のリソースを消費する。
【００２３】
データフローをサポートするために通常使用される、ネットワーク要素１２２のリソースは、メモリリソースおよびプロセッサリソースである。ネットワーク要素１２２のメモリリソースおよびプロセッサリソースは、データフローのためのデータ経路セットアップを実施すること、データフローのためのフロー状態を維持すること、その他などの機能のために使用される。ネットワーク要素１２２のメモリリソースは、通常、ネットワーク要素１２２の連想メモリ（Ｃｏｎｔｅｎｔ−Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ：ＣＡＭ）、より詳細には、ネットワーク要素１２２の三値ＣＡＭ（Ｔｅｒｎａｒｙ  ＣＡＭ：ＴＣＡＭ）を含み、三値ＣＡＭは、ネットワーク要素１２２のための（たとえば、ネットワーク要素１２２によってサポートされるデータフローごとにデータフローエントリを使用する）転送テーブルを維持するために使用される。ネットワーク要素１２２のプロセッサリソースは、通常、ネットワーク要素のＣＰＵのリソースを含む。これらのタイプのリソースは、ネットワーク要素１２２の各々のＴＣＡＭリソース１２３およびＣＰＵリソース１２４として、それぞれ図１に示されている。
【００２４】
データフローをサポートするために通常使用される、ネットワーク要素１２２のメモリリソースおよびプロセッサリソース（すなわち、それぞれ、ＴＣＡＭリソース１２３およびＣＰＵリソース１２４）は、（たとえば、ＴＣＡＭリソースおよびＣＰＵリソースの比較的高コストのために）通常、ネットワーク要素１２２における容量が制限されている。たとえば、ネットワーク要素の既存のＴＣＡＭの最大容量は、通常およそ３６Ｍビットであり、これは、およそ６４Ｋから１２８Ｋのデータフローエントリを収容することができる。同様に、たとえば、ネットワーク要素の既存のＣＰＵの最大データレートは、通常およそ１７Ｍｂｐｓであり、これは、データフローのデータレートよりも複数桁小さい。したがって、データセンタネットワーク１２０のネットワーク要素１２２のメモリリソースおよびプロセッサリソースは、かなり制限されることが予想される。
【００２５】
データセンタネットワーク１２０において、ネットワーク要素１２２の有限のリソースは、データセンタネットワーク１２０に対して向けられることがある、さまざまなタイプの悪意のある攻撃において悪用され得る。たとえば、ネットワーク要素１２２が正当なクライアントからの新しいデータフローを効率的に受け入れることをできなくし得るように、ネットワーク要素１２２の特定のタイプのリソースが過剰に利用される（たとえば、閾値利用レベルを超えて無理強いされる）リソース利用攻撃、または、ネットワーク要素１２２が正当なクライアントからの新しいデータフローを受け入れることをできないように、ネットワーク要素１２２の特定のタイプのリソースが枯渇するリソース利用攻撃を実施するために、ネットワーク要素１２２の有限のリソースが悪用され得る。
【００２６】
概して、ＯｐｅｎＦｌｏｗを使用するデータセンタネットワーク１２０内で新しいデータフローのための新しいデータ経路をセットアップすることに関与する作業（およびリソース）の量を悪用することによって、データセンタネットワーク１２０内のＶＭ１１２またはデータセンタネットワーク１２０の外側にあるホストは、ＶＭ１１２またはデータセンタネットワーク１２０の外側にあるホストによって生成された悪意のあるトラフィックを介して、データセンタネットワーク１２０を攻撃することができる。概して、そのような攻撃の悪意のあるトラフィックは、ネットワーク帯域幅またはサーバリソースを枯渇させることは試みない。むしろ、悪意のあるトラフィックは、データセンタ環境１００内のＶＭ１１２（これは、無害な、または悪意のあるＶＭ１１２を含むことができる）行きの、新しいフロー要求（たとえば、データフローの最初のパケット）を含むことがある。このようにして開始された悪意のあるデータフローごとに、データフローは、データフローの新しいフロー要求を受信する第１のネットワーク要素１２２上のＴＣＡＭリソース１２３およびＣＰＵリソース１２４を消費することになり、その理由は、第１のネットワーク要素１２２が、新しいフロー要求を、データプレーンから制御プレーンへと動かし、新しいフロー要求をコントローラ１２７へと転送し、コントローラ１２７から（コントローラ１２７によるデータフローのためのデータ経路の計算に基づいた）データ経路のためのデータ経路情報を受信し、第１のネットワーク要素１２２のＴＣＡＭリソース１２３において維持された転送テーブルに、関連付けられた転送エントリをインストールするからであることが認識されるであろう。第１のネットワーク要素１２２のＴＣＡＭリソース１２３およびＣＰＵリソース１２４を消費することに加えて、各悪意のあるデータフローがまた、データフローのためのデータ経路を形成する他のネットワーク要素１２２の各々において（たとえば、第１のネットワーク要素１２２からデータフローの関連付けられた宛先までのデータ経路上のネットワーク要素１２２についての）、いくらかのＴＣＡＭリソース１２３およびＣＰＵリソース１２４を消費する。このようにして、悪意のあるデータフローは、ネットワーク要素１２２のＴＣＡＭリソース１２３を過剰利用する、もしくは枯渇させることすらできる（それにより、ネットワーク要素１２２へのＴＣＡＭリソース状態／攻撃を引き起こす）、または、ネットワーク要素１２２のＣＰＵリソース１２４を過剰利用する、もしくは枯渇させることすらできる（それにより、ネットワーク要素１２２へのＣＰＵリソース状態／攻撃を引き起こす）。ネットワーク要素１２２のＴＣＡＭリソース１２３は、ネットワーク要素１２２のＣＰＵリソース１２４よりも「厄介」であることが予想され、したがって、ネットワーク要素１２２へのＴＣＡＭベースの攻撃は、ネットワーク要素１２２へのＣＰＵベースの攻撃よりも、潜在的により激しいことが予想されることが認識されるであろう。所与のネットワーク要素１２２内のＴＣＡＭリソース１２３とＣＰＵリソース１２４との間には、本来の緊張関係がある（たとえば、フローのためのタイムアウト値を削減することは、より多い利用可能なＴＣＡＭエントリにつながるが、より多くのフローがコントローラ１２７へと転送される必要があるために、ＣＰＵ負荷を増加させる）こともまた認識されるであろう。ネットワーク要素１２２のＴＣＡＭリソース１２３が枯渇すると、後続の新しいデータフローは、ネットワーク要素１２２上のソフトウェア内で処理されることがあり、それにより、ネットワーク要素１２２のＣＰＵリソース１２４の枯渇につながり得るネットワーク要素１２２のさらなるＣＰＵリソース１２４を消費するので、ネットワーク要素１２２へのＴＣＡＭ枯渇攻撃は、ネットワーク要素１２２へのＣＰＵ枯渇攻撃を促進することができることもまた認識されるであろう。
【００２７】
ネットワーク要素１２２の有限のＴＣＡＭリソース１２３は、ＴＣＡＭ枯渇攻撃を実施するために悪用され得る。ＴＣＡＭ枯渇攻撃において、目当ては、ネットワーク要素１２２が正当なクライアントからの新しいデータフローを受け入れることができないように、ネットワーク要素１２２のＴＣＡＭリソース１２３を完全に消費することである。たとえば、データセンタ環境１００内の危険にさらされた、または悪意のあるＶＭ１１２は、ネットワーク要素１２２が正当なクライアントからの新しいデータフローを受け入れることができないように、データセンタネットワーク１２０のネットワーク要素１２２のＴＣＡＭリソース１２３が完全に消費される、ＴＣＡＭ枯渇攻撃を仕掛けることができる。いくつかのデータセンタにおいて、たとえば、悪意のあるＶＭは、データセンタ内の他のＶＭのすべてに単にｐｉｎｇすることによって、スイッチを壊滅させることができる。たとえば、各ホストが１０またはそれ以上のＶＭをホストすることができる、１０Ｋのホストを有する適度なサイズのデータセンタにおいて、ＶＭのうちの１つからデータセンタの他のＶＭの各々へのｐｉｎｇは、悪意のあるＶＭのアップストリームにあるネットワーク要素におけるＴＣＡＭリソースの全部を潜在的に消費し、それにより、ネットワーク要素においてＴＣＡＭ枯渇状態を引き起こすことができる。同様に、たとえば、任意のポートへの通信が制限されているデータセンタについてでさえ、共通ポートに単にｐｉｎｇすることは、悪意のあるＶＭのアップストリームにあるネットワーク要素におけるＴＣＡＭリソースの全部を潜在的に消費し、それにより、悪意のあるＶＭのアップストリームにあるネットワーク要素においてＴＣＡＭ枯渇状態を引き起こすことができる。ＴＣＡＭ枯渇攻撃は、（ＯｐｅｎＦｌｏｗにおけるその直接的な関与とは対照的に）経路セットアップにおけるその間接的な関与のために、これまで悪用されることが知られていない新しいタイプのリソースに対する新しいタイプの攻撃であるとはいえ、ＴＣＡＭ枯渇攻撃は、分散型サービス拒否（ＤＤｏＳ）攻撃に類似していることが認識されるであろう。ＴＣＡＭ枯渇攻撃に関して主に説明されたが、ＴＣＡＭ過剰利用攻撃を実施するために、ネットワーク要素１２２の有限のＴＣＡＭリソース１２３が悪用され得る、または、試みられたＴＣＡＭ枯渇攻撃が、ＴＣＡＭ過剰利用状態をもたらすことがあり、その結果、ネットワーク要素１２２のＴＣＡＭリソース１２３の過剰利用が、データセンタネットワーク１２０への有害な影響を有し得ることが認識されるであろう。
【００２８】
ネットワーク要素１２２の有限のＣＰＵリソース１２４は、ＣＰＵ枯渇攻撃を実施するために悪用され得る。ＣＰＵ枯渇攻撃において、目当ては、ネットワーク要素１２２が正当なクライアントからの新しいデータフローを受け入れることができないように、ネットワーク要素１２２のＣＰＵリソース１２４を完全に消費することである。たとえば、データセンタ内の危険にさらされた、または悪意のあるＶＭは、ネットワーク要素が正当なクライアントからの新しいデータフローを受け入れることができないように、ＣＰＵ枯渇攻撃を仕掛けることができ、そこではＶＭが、比較的小さな、しかし絶え間なく溢れる新しいフロー要求メッセージを、ターゲットネットワーク要素に送信する。ＣＰＵ枯渇攻撃に関して主に説明されたが、ＣＰＵ過剰利用攻撃を実施するために、ネットワーク要素１２２の有限のＣＰＵリソース１２４が悪用され得る、または、試みられたＣＰＵ枯渇攻撃が、ＣＰＵ過剰利用状態をもたらすことがあり、その結果、ネットワーク要素１２２のＣＰＵリソース１２４の過剰利用が、データセンタネットワーク１２０への有害な影響を有し得ることが認識されるであろう。
【００２９】
加えて、ＴＣＡＭ枯渇（またはＴＣＡＭ過剰利用）およびＣＰＵ枯渇（またはＣＰＵ過剰利用）のうちの１つまたは両方をもたらすことがある、他のタイプの攻撃もまた存在する。たとえば、プライベートデータセンタがＶＭ上に「デフォルトオフ」ファイアウォールを有さないとき、すべての他のＶＭにｐｉｎｇすること、オープンポートに接続すること、トラフィックを送信すること、またはＴＣＡＭ枯渇およびＣＰＵ枯渇のうちの１つまたは両方をもたらすことがある他の措置を取ることは、データセンタの悪意のあるＶＭにとってより簡単である。たとえば、ＶＭ上で「デフォルトオフ」ファイアウォールが使用されているときでさえ、悪意のあるＶＭは、一般のオープンポート（たとえば、ポート８０およびポート４４３）に、簡単に接続することができる。たとえば、データセンタの外側から発信するトラフィックもまた、特に、データセンタのコアスイッチで、または外部トラフィックが個々のテナントにルーティングされるポイントで、上で論じられたタイプの攻撃につながることがある。たとえば、データセンタの外側にある悪意のあるソースは、データセンタの外側から、データセンタ内のデータフローがデータセンタにおけるＶＭのいくつかまたは全部に広がるようにさせるトラフィックを（これはよく使われるポートに接続することに類似するが、データセンタの外側から）、生成することができる。
【００３０】
そのようなリソースベースの攻撃は、データセンタ環境１００の内側から（たとえば、データセンタネットワーク１２０を攻撃するために悪意のあるエンティティによってプロキシとして使用されるデータセンタ環境１００の危険にさらされたＶＭ１１２によって、データセンタネットワーク１２０を積極的に、かつ悪意をもって攻撃しようと試みているデータセンタ環境１００のＶＭ１１２によって、など）開始されることがある、または、データセンタ環境１００の外側から（たとえば、データセンタネットワーク１２０を攻撃するために悪意のあるエンティティによってプロキシとして使用されるデータセンタ環境１００の外側にある危険にさらされたホストによって、データセンタネットワーク１２０を積極的に、かつ悪意をもって攻撃しようと試みているデータセンタ環境１００の外側にあるホストによって、など）開始されることがあることが認識されるであろう。データセンタ環境１００のさまざまな特徴（たとえば、データセンタネットワーク１２０のトポロジ、データセンタ環境１００のアプリケーションによって生成されたトラフィックの性質、など）を検討することによって、攻撃者は、さらに力強い攻撃を行うことができることもまた認識されるであろう。さらに、既存のデータセンタの分析（たとえば、データセンタトポロジを分析する、データセンタ作業負荷を分析する、通例使用されるデータセンタトポロジにおいて異なるネットワーク要素がサポートする必要があるデータフローを概算する、など）に基づいて、（１）単位時間ごとの新しいデータフローの数において比較的大きな変動があるために、通常のトラフィック状態でさえリソース枯渇につながり得ること、（２）攻撃をデータセンタの作業負荷に合わせることによって、攻撃者は、比較的低いオーバーヘッドでそのようなリソース枯渇攻撃を仕掛けることができること、および（３）他のタイプのスイッチと比較して比較的大きな数のデータフローに関与する、密に接続されたコアスイッチによるデータセンタトポロジは、そのようなリソース枯渇攻撃に特に脆弱であること、が特定されている。加えて、データセンタに関連付けられた一定の正当なアクティビティが、少なくとも最初は、データセンタへの攻撃であるように見えることがある（たとえば、アプリケーションが比較的短期間の間に、大きな量のデータフローを生成する場合など）ことが認識されるであろう。
【００３１】
ＳＤＮに対して開始され得る、潜在的なタイプのリソースベースの攻撃の分析においては、（１）コントローラが、セキュアでスケーラブルであり、正しく動作していること、（２）（たとえば、リソース利用レベルをモニターする、ネットワーク要素にルールをインストールする、などのために）コントローラとネットワーク要素との間の通信のための制御チャネルとして使用される、コントローラとネットワーク要素との間の接続（たとえば、セキュアソケットレイヤ（ＳＳＬ）接続、または他のタイプの接続）がセキュアであること、が想定されてきた。これらの想定のうちの１つまたは複数は、緩められる、または無視されることがあり、リソースベースの攻撃の影響を軽減するためには、フローデフレクションがなお使用されてよいことが認識されるであろう。
【００３２】
ＤＤｏｓ攻撃の場合、抑止手段は、通常、ネットワーク帯域幅またはサーバリソースへの攻撃に対処するように設計されることが認識されるであろう。たとえば、ネットワーク帯域幅防御は、通常、性能、ルータ上の公平キューイング、レート制限、およびパケットの選択的なドロッピングなどのメカニズムに依拠している。たとえば、サーバリソース防御は、通常、性能、制限状態、および接続完了後の配分状態などのメカニズムに依拠している。しかしながら、そのような防御は、ＯｐｅｎＦｌｏｗにおけるＴＣＡＭリソースおよびＣＰＵリソースへのリソースベースの攻撃を阻止することができるとは予想されず、その理由は、そのような防御が、フローの数ではなく、トラフィックのボリュームを抑えることに主に重点を置いているからである。たとえば、公平キューイングは、攻撃フローの帯域幅を制限することができるが、これはフローの数を制限するものではない。加えて、一定の防御メカニズムは、一定の場面においては、少なくとも部分的に、リソース枯渇攻撃に対する保護に役立つことができるが、他の場面においては、防御メカニズムは、リソース枯渇攻撃に対していかなる保護も提供することができない。たとえば、コントローラは、ＭＡＣアドレスまたはＩＰアドレスから開始され得るフローの数に制限を課し、そのような制限が破られた場合に、ネットワーク要素における任意の新しいデータフローを減少させるためのルールを設定することができる。これは、実際に、攻撃がデータセンタの内側から開始された場合に役立つことがあり、それは、コントローラが、各ホストの識別子を知っており、したがって、各ホストのアクティビティを追跡し、スプーフィングを防ぐことができるからである。しかしながら、データセンタの外側からの攻撃の場合、攻撃者は、ソースアドレスをスプーフィングすることができ、したがって、そのような防御を効果のないものにする。同様に、性能ベースのアプローチでは、データセンタの外側に防御メカニズムを配備することが難しいことを考えると、攻撃者は、性能を要求するフローをスプーフィングし、データセンタのネットワーク要素のＴＣＡＭリソースを溢れさせることができる。さらに、リソース枯渇攻撃を保護するためのフローデフレクションが十分でないとき、新しいデータフローの拒絶が使用され得ることが予想される。
【００３３】
データセンタネットワーク１２０は、データセンタネットワーク１２０へのリソースベースの状態または攻撃に対処するために、フローデフレクションを使用するように構成され、それにより、データセンタネットワーク１２０へのリソースベースの状態または攻撃に対して、データセンタネットワーク１２０をより回復力のあるものにする。データセンタネットワーク１２０は、データセンタネットワーク１２０のリソースのためのリソース利用状態（たとえば、ネットワーク要素１２２のＴＣＡＭリソース１２３に関連付けられたＴＣＡＭベースの利用状態、ネットワーク要素１２２のＣＰＵリソース１２４に関連付けられたＣＰＵベースの利用状態、など）に対処するために、フローデフレクションを使用するように構成され、それにより、データセンタネットワーク１２０のリソースのためのリソース利用状態に対して、データセンタネットワーク１２０をより回復力のあるものにする。データセンタネットワーク１２０におけるフローデフレクションの使用に関連し得る根本的な想定は、（１）異なるネットワーク要素１２２は、比較的高い負荷を異なる時間に見ることが予想され、したがって、所与のネットワーク要素１２２がリソース利用状態を経験しているとき、比較的低い負荷を有するネイバのネットワーク要素１２２を識別する比較的高い見込みがあり、このネイバのネットワーク要素１２２は、リソース利用状態を経験しているネットワーク要素１２２によって対処され得ない追加のデータフローに対処することができる、および（２）攻撃は通常、比較的小さな数のネットワーク要素１２２をターゲットとし、攻撃中にターゲットにされたネットワーク要素１２２によって対処され得ない新しいデータフローを対処するために使用され得るいくつかのネイバのネットワーク要素１２２はそのままにする、ということが認識されるであろう。第１の想定は、データセンタネットワーク１２０におけるネットワーク要素１２２へのホストサーバ１１０の可能性の高い割り当てを分析して再構築するために、データセンタネットワーク１２０の作業負荷データを使用し、（たとえば、同じデータ上で作業する仕事は、同じラック内に割り当てられる可能性が高いという想定に基づいて）同じラックにおける対のホストサーバ１１０の重みを測定し、ＶＭ１１２を、同じラックにおけるクラスタにグループ化するために、重みを入力として使用してグラフ分割プロセスを行うこと、（２）分割が高い忠実度でクラスタを与えることを確認し、ＶＭ１１２の各クラスタを関連付けられたラックに割り当てること、ならびに（３）同じ仕事に割り当てられたＶＭ間のデータフローをルーティングし、ターゲットネットワーク要素１２２ごとに、ターゲットネットワーク要素１２２上のＴＣＡＭエントリの数、およびターゲットネットワーク要素１２２の各ネイバネットワーク要素１２２（たとえば、１ホップネイバ、１ホップおよび２ホップネイバ、など）に関連付けられたＴＣＡＭエントリの数を計算すること、によって検証されてよい。これは、（そこからデータフローがデフレクションされ得る）ターゲットネットワーク要素１２２のＴＣＡＭエントリに対する、（そこにデータフローがデフレクションされ得る）ネイバネットワーク要素１２２のＴＣＡＭエントリの相対的割合を示す、ターゲットネットワーク要素１２２についての累積分布関数（ＣＤＦ）から、認識されるであろう。ターゲットネットワーク要素１２２についての例示的なＣＤＦが、図２に示されている。図２に示されるように、例示的なＣＤＦ２００は、ターゲットネットワーク要素１２２の１ホップネイバネットワーク要素１２２のＴＣＡＭ消費が、１ホップネイバネットワーク要素１２２のうちの９０％について、３０％以下であり、ターゲットネットワーク要素１２２の２ホップネイバネットワーク要素１２２のＴＣＡＭ消費が、２ホップネイバネットワーク要素１２２の全部について、１０％以下であることを指し示す。したがって、例示的なＣＤＦ２００は、データセンタネットワーク１２０のネイバのネットワーク要素１２２においては、比較的低相関のリソース消費があること、したがって、ターゲットネットワーク要素１２２からネイバネットワーク要素１２２へのデータフローのデフレクションのために、かなりの余地があることを指し示す。第２の想定は、概して、よりデータセンタのネットワーキングインフラストラクチャの小さなサブセットをターゲットにするために必要とされるよりも、データセンタのネットワーキングインフラストラクチャ全体をターゲットにするために、より多くの攻撃者のリソースが必要とされる、という予想に基づく。
【００３４】
再度図１を参照すると、コントローラ１２７は、データセンタネットワーク１２０のネットワーク要素１２２に関連付けられたリソース利用状態（これは、データセンタネットワーク１２０のネットワーク要素１２２に対して向けられたリソース利用攻撃から生じても、そうでなくてもよい）に対処するために、フローデフレクションを使用するように構成されている。
【００３５】
コントローラ１２７は、ネットワーク要素１２２に関連付けられたリソース利用状態を検出するために、ネットワーク要素１２２をモニターする。リソース利用状態は、ＴＣＡＭ利用状態、ＣＰＵ利用状態、などであってよい。コントローラ１２７は、ネットワーク要素１２２上のＴＣＡＭ負荷をモニターすることによって、ネットワーク要素１２２上のＴＣＡＭ利用状態を検出するためにモニターすることができる。ネットワーク要素１２２についてのＴＣＡＭ利用状態は、任意の好適なやり方（たとえば、ネットワーク要素１２２のＴＣＡＭ容量の７０％を超える、または７０％に等しいＴＣＡＭ負荷、ネットワーク要素１２２のＴＣＡＭ容量の８５％を超える、または８５％に等しいＴＣＡＭ負荷、ネットワーク要素１２２のＴＣＡＭ容量の９５％を超える、または９５％に等しいＴＣＡＭ負荷、など）で定義されてよい。コントローラ１２７は、１つまたは複数のＴＣＡＭ利用状態のために、（たとえば、ネットワーク要素１２２の各々について同じＴＣＡＭ利用状態を使用して、ネットワーク要素１２２の異なるタイプについて異なるＴＣＡＭ利用状態を使用して、など）ネットワーク要素１２２をモニターすることができる。
【００３６】
コントローラ１２７は、ネットワーク要素１２２上のＣＰＵ負荷をモニターすることによって、ネットワーク要素１２２上のＣＰＵ利用状態を検出するためにモニターすることができる。ネットワーク要素１２２についてのＣＰＵ利用状態は、任意の好適なやり方（たとえば、ネットワーク要素１２２のＣＰＵ容量の７０％を超える、または７０％に等しいＣＰＵ負荷、ネットワーク要素１２２のＣＰＵ容量の７５％を超える、または７５％に等しいＣＰＵ負荷、ネットワーク要素１２２のＣＰＵ容量の８５％を超える、または８５％に等しいＣＰＵ負荷、など）で定義されてよい。コントローラ１２７は、１つまたは複数のＣＰＵ利用状態のために、（たとえば、ネットワーク要素１２２の各々について同じＣＰＵ利用状態を使用して、ネットワーク要素１２２の異なるタイプについて異なるＣＰＵ利用状態を使用して、など）ネットワーク要素１２２をモニターすることができる。
【００３７】
コントローラ１２７は、ネットワーク要素１２２の少なくともいくつかについて、ＴＣＡＭ利用状態のために、およびＣＰＵ利用状態のためにネットワーク要素１２２をモニターすることができる。
【００３８】
コントローラ１２７は、任意の好適なやり方でネットワーク要素１２２をモニターすることができる。たとえば、コントローラ１２７は、（たとえば、ポーリングを介して、ネットワーク要素による定期的な報告を介して、ネットワーク要素１２２によるイベントベースの報告を介して、など、ならびにそのさまざまな組合せを介して）ネットワーク要素１２２から状態情報を収集することができる。たとえば、コントローラ１２７は、ネットワーク要素１２２から、ネットワーク要素１２２によってサポートされるデータフローに関連付けられたフロー統計を収集することができる（ここで、フロー統計は、ネットワーク要素１２２上で使用された／利用可能なＴＣＡＭ容量、ネットワーク要素１２２上で使用された／利用可能なＣＰＵ容量、など、ならびにそのさまざまな組合せを含む、または別のやり方で指示することができる）。
【００３９】
コントローラ１２７は、ネットワーク要素１２２のうちのいくつかまたは全部をモニターすることができることが認識されるであろう。コントローラ１２７は、各モニターされるネットワーク要素１２２の同じリソース利用状態を検出するために、ネットワーク要素１２２のうちのいくつかまたは全部をモニターすることができる（たとえば、ＴＣＡＭ利用状態のために各ネットワーク要素１２２をモニターする、ＴＣＡＭ利用状態およびＣＰＵ利用状態のために各ネットワーク要素１２２をモニターする、など）、各モニターされるネットワーク要素１２２のうちの異なるリソース利用状態を検出するために、ネットワーク要素１２２のうちのいくつかまたは全部をモニターすることができる（たとえば、ＣＰＵ利用状態を検出するために第１のネットワーク要素１２２をモニターする、ＴＣＡＭ利用状態を検出するために第２のネットワーク要素１２２をモニターする、ＴＣＡＭ利用状態およびＣＰＵ利用状態を検出するために第３のネットワーク要素１２２をモニターする、その他）など、ならびにそのさまざまな組合せをモニターすることができることが認識されるであろう。リソース利用状態は、コントローラ１２７がリソース利用状態を検出するためのモニタリングを実施するネットワーク要素１２２のうちの異なるネットワーク要素１２２にわたって、同じであるように定義されても、または異なるように定義されてもよい（たとえば、ネットワーク要素のうちのいくつかについては８０％のＴＣＡＭ利用閾値を使用し、他のネットワーク要素については９０％のＴＣＡＭ利用閾値を使用して、ネットワーク要素のうちのいくつかについては８５％のＣＰＵ利用閾値を使用し、他のネットワーク要素については９２％のＣＰＵ利用閾値を使用して、など）ことが認識されるであろう。異なるネットワーク要素１２２またはネットワーク要素１２２の組にわたるリソース利用状態のためのモニタリングにおけるそのような違いは、ネットワーク要素１２２のネットワーク要素のタイプ（たとえば、トップオブラックスイッチ対アグリゲートスイッチ、スイッチ対ルータ、など）、時間的な情報、データセンタネットワーク１２０内のトラフィックのトラフィック特性などのうちの１つまたは複数、など、ならびにそのさまざまな組合せに基づいていてよいことが認識されるであろう。
【００４０】
第１のネットワーク要素１２２上のリソース利用状態の検出に基づいて、コントローラは、第１のネットワーク要素１２２のための全フローデフレクションまたは選択的なフローデフレクションを開始する。全フローデフレクションでは、第１のネットワーク要素１２２で受信された新しいデータフローの全部が、第１のネットワーク要素１２２からデフレクションされる。選択的なフローデフレクションでは、第１のネットワーク要素１２２で受信された新しいデータフローのうちの小部分が、第１のネットワーク要素１２２からデフレクションされる。コントローラ１２７は、ネットワーク要素１２２上のリソース利用状態の検出に応答して、ネットワーク要素１２２のための全フローデフレクションまたは選択的なフローデフレクションを実施することができる。たとえば、コントローラ１２７は、ネットワーク要素１２２上のＴＣＡＭ利用状態の検出に応答して、ネットワーク要素１２２上のＣＰＵ利用状態の検出に応答して、またはネットワーク要素１２２上のＴＣＡＭ利用状態およびＣＰＵ利用状態の検出に応答して、ネットワーク要素１２２のための全フローデフレクションまたは選択的なフローデフレクションを実施することができる。少なくともいくつかの実施形態において、コントローラ１２７は、ネットワーク要素１２２についてＴＣＡＭ利用状態が検出されたときに、全フローデフレクションまたは選択的なフローデフレクションを使用するように、ネットワーク要素１２２についてＣＰＵ利用状態が検出されたときに、選択的なフローデフレクションを使用するように、およびネットワーク要素１２２についてＴＣＡＭ利用状態とＣＰＵ利用状態との両方が検出されたときに、選択的なフローデフレクションを使用するように、構成されている。
【００４１】
全フローデフレクションおよび選択的なフローデフレクションにおいて、コントローラ１２７は、第１のネットワーク要素１２２に代わって新しいフロー要求に対処するための、第２のネットワーク要素１２２を選択する。コントローラ１２７は、第１のネットワーク要素１２２に代わって新しいフロー要求に対処するための第２のネットワーク要素１２２として選択され得る、一組の候補ネイバネットワーク要素１２２を決定する。たとえば、コントローラ１２７は、第１のネットワーク要素１２２のすべての１ホップネイバ、第１のネットワーク要素１２２のすべての１ホップネイバおよび２ホップネイバ、などを検討することができる。コントローラ１２７は、一組の候補ネイバネットワーク要素１２２から、第２のネットワーク要素１２２を選択する。
【００４２】
コントローラ１２７は、任意の好適なやり方で、一組の候補ネイバネットワーク要素１２２から、第２のネットワーク要素１２２を選択することができる。
【００４３】
少なくともいくつかの実施形態において、第２のネットワーク要素１２２の選択は、リソース利用状態が第１のネットワーク要素１２２で検出された、リソースタイプに基づく（たとえば、ＴＣＡＭ利用状態が検出されたとき、最も低いＴＣＡＭ負荷を有する候補ネイバネットワーク要素１２２を選択する、ＣＰＵ利用状態が検出されたとき、最も低いＣＰＵ負荷を有する候補ネイバネットワーク要素１２２を選択する、ＴＣＡＭ利用状態とＣＰＵ利用状態との両方が検出されたとき、最も低い組み合わされたＴＣＡＭ負荷とＣＰＵ負荷とを有する候補ネイバネットワーク要素１２２を選択する、など）。
【００４４】
少なくともいくつかの実施形態において、コントローラは、一組の候補ネイバネットワーク要素１２２から、以下の制約の少なくとも一部のバランスを取るためのやり方で、第２のネットワーク要素１２２を選択する：（１）第２のネットワーク要素１２２が、十分な予備容量を有する（たとえば、問題のリソースの１５％を超えるリソースが第２のネットワーク要素１２２での使用に利用可能である、問題のリソースの２０％を超えるリソースが第２のネットワーク要素１２２での使用に利用可能である、など）、（２）デフレクションされたデータフローのレイテンシの増加が、閾値未満に保たれる、またはさらに最小限にされる、（３）フローデフレクションによるデータセンタネットワーク内のネットワーク帯域幅の増加が、閾値未満に保たれる、またはさらに最小限にされる、（４）第１のネットワーク要素１２２および第２のネットワーク要素１２２のトラフィックパターンの相関関係が、閾値未満、またはさらにはゼロである、ならびに（５）第２のネットワーク要素１２２が１つまたは複数の他のネットワーク要素１２２によってフローデフレクションのために使用される確率が、閾値未満である。少なくともいくつかの実施形態において、上で説明された制約のうちのいくつかまたは全部に責任をとる最適化問題が、第１のネットワーク要素１２２によってデフレクションされたデータフローに対処するための第２のネットワーク要素１２２を選択するために、解決されることが認識されるであろう（たとえば、ここで、最適化問題のゴールは、データフローを拡張するオーバーヘッドのバランスを取ることに対して、ネットワーク要素１２２の全部の関連付けられた問題のリソースの利用における、所望のまたは最適な解決策を決定することであってよい）。この選択能力または類似した選択能力の使用は、フローデフレクションを使用することの潜在的な欠点（たとえば、デフレクションされたフローのレイテンシの増加、データセンタネットワークのネットワーク帯域幅の消費の増加、など）を軽減することもまた認識されるであろう。
【００４５】
コントローラ１２７は、第１のネットワーク要素１２２のためのフロー転送ルールを生成し、ここでフロー転送ルールは、新しいフロー要求を、（コントローラ１２７にではなく）コントローラ１２７によって選択された第２のネットワーク要素１２２に伝搬するよう、第１のネットワーク要素１２２に命令するように構成されており、その結果、第２のネットワーク要素１２２が、第１のネットワーク要素１２２で受信された新しいフロー要求を、第１のネットワーク要素１２２に代わって、コントローラ１２７へと転送することになる。
【００４６】
少なくともいくつかの実施形態において、全フローデフレクションが使用されるとき、フロー転送ルールは、第１のネットワーク要素１２２で受信されたすべての新しいフロー要求が、第１のネットワーク要素１２２から第２のネットワーク要素１２２へと転送されるべきであることを指示する。
【００４７】
少なくともいくつかの実施形態において、選択的なフローデフレクションが使用されるとき、フロー転送ルールは、第１のネットワーク要素１２２で受信された新しいフロー要求の小部分が、第１のネットワーク要素１２２から第２のネットワーク要素１２２へと転送されるべきであることを指示する（一方、第１のネットワーク要素１２２で受信された新しいフロー要求の残りの小部分は、第１のネットワーク要素１２２によってローカルに対処されることになる）。第２のネットワーク要素１２２へとデフレクションされる、第１のネットワーク要素１２２で受信された新しいデータフローの小部分は、任意の好適なやり方（たとえば、利用状態が第１のネットワーク要素１２２で検出されたリソースのタイプに基づいて、第１のネットワーク要素１２２での問題のリソースの利用のレベルに基づいて、など）で選択されてよい。たとえば、リソース利用が７０％のとき、小部分は３０％であってよく、リソース利用が９０％のとき、小部分は４０％であってよい、などである。第２のネットワーク要素１２２へとデフレクションされる、第１のネットワーク要素１２２で受信された新しいデータフローの小部分に対する制御は、（たとえば、データフローの所望のまたは要求される小部分のデフレクションを達成するために）任意の適切なやり方（たとえば、データフローのフロー定義に基づいて）で達成されてよい。少なくともいくつかの実施形態において、フローヘッダからのランダムなビット（たとえば、ソースプレフィックスまたはフローヘッダの他の部分）が、第１のネットワーク要素１２２から第２のネットワーク要素１２２へとデフレクションさせるためのフローはどれか、および第１のネットワーク要素１２２でローカルに対処するためのフローはどれかを決定するための根拠として、選択されてよい。少なくともいくつかの実施形態において、デフレクション小部分に使用されるビットの選択は、潜在的な攻撃者が選択的なフローデフレクションのための根拠を特定するのをより難しくするために、動的であってよい。少なくともいくつかの実施形態において、第２のネットワーク要素１２２へとデフレクションされる、第１のネットワーク要素１２２で受信された新しいデータフローの小部分に対する制御は、データフローのアドレスのプレフィックス（たとえば、インターネットプロトコル（ＩＰ）アドレス、メディアアクセスコントロール（ＭＡＣ）アドレス、など）、データフローのプロトコル（たとえば、ハイパーテキストトランスファープロトコル（ＨＴＴＰ）、ＨＴＴＰセキュア（ＨＴＴＰＳ）、ファイルトランスファープロトコル（ＦＴＰ）など）、データフローのポート番号など、ならびにそのさまざまな組合せに基づいていてよい。
【００４８】
コントローラ１２７は、フロー転送ルールを、第１のネットワーク要素１２２に伝搬する。第１のネットワーク要素１２２は、コントローラ１２７によって生成されたフロー転送ルールを受信し、フロー転送ルールを格納する。第１のネットワーク要素１２２は、フロー転送ルールを使用して、新しいフロー要求を、コントローラ１２７によって選択された第２のネットワーク要素１２２へと転送する。新しいフロー要求は、それについての第１のネットワーク要素１２２が、新しいフロー要求を受信するＳＤＮの第１のネットワーク要素となる、新しいフロー要求であることに留意されたい。たとえば、データセンタ１０２のホストサーバ１１０のうちの１つのＶＭ１１２のうちの１つから発信するデータフローについては、ホストサーバ１１０のうちの１つが関連付けられたＴｏＲスイッチ１２２Ｔが、データフローのための新しいフロー要求を受信するためのＳＤＮの第１のネットワーク要素である。たとえば、データセンタ１０２の外側にあるデバイスから発信し、データセンタ１０２のホストサーバ１１０のうちの１つのＶＭ１１０のうちの１つに向けられたデータフローについては、データセンタネットワーク１２０へのエントリポイントであるルータ１２２Ｒが、データフローのための新しいフロー要求を受信するためのＳＤＮの第１のネットワーク要素である。新しいフロー要求は、データフローの最初のパケット、データフロー要求メッセージ、などの形式であってよい。
【００４９】
少なくともいくつかの実施形態において、フロー転送ルールが全フローデフレクションのためであるとき、第１のネットワーク要素１２２は、第１のネットワーク要素１２２での新しいデータフローの要求の受信に基づいて、新しいデータフローの新しいフロー要求を、コントローラ１２７によって第１のネットワーク要素１２２にインストールされたフロー転送ルールに従って、（コントローラ１２７にではなく）第２のネットワーク要素１２２へと転送する。
【００５０】
少なくともいくつかの実施形態において、フロー転送ルールが選択的なフローデフレクションのためであるとき、第１のネットワーク要素１２２は、第１のネットワーク要素１２２での新しいデータフローの要求の受信に基づいて、新しいフロー要求の新しいデータフローが、ローカルに対処されるべきか、第２のネットワーク要素１２２へとデフレクションされるべきかを判定する。上で触れたように、新しいフロー要求の新しいデータフローが、ローカルに対処されるべきか、第２のネットワーク要素１２２へとデフレクションされるべきかについての判定は、データフローのフロー定義（たとえば、フローヘッダからのランダムなビット、アドレス情報、プロトコル、ポート番号情報、など）に基づいてなされてよい。第１のネットワーク要素１２２は、新しいフロー要求が第２のネットワーク要素１２２へとデフレクションされるべきという判定に基づいて、新しいフローの新しいフロー要求を、コントローラ１２７によって第１のネットワーク要素１２２にインストールされたフロー転送ルールに従って、（コントローラ１２７にではなく）第２のネットワーク要素１２２へと転送する。第１のネットワーク要素１２２は、新しいフロー要求が第２のネットワーク要素１２２へとデフレクションされるべきでないという判定に基づいて、新しいフローの新しいフロー要求を、（第２のネットワーク要素１２２にではなく）コントローラ１２７へと転送する。
【００５１】
第２のネットワーク要素１２２は、第１のネットワーク要素１２２から新しいフロー要求を受信し、新しいフロー要求が（たとえば、第２のネットワーク要素１２２の転送テーブルのルックアップに基づいて）第２のネットワーク要素１２２によって現在サポートされていない新しいデータフローに関連付けられているという、第２のネットワーク要素１２２による判定に基づいて、新しいフロー要求をコントローラ１２７へと転送する。
【００５２】
コントローラ１２７は、第２のネットワーク要素１２２から、第１のネットワーク要素１２２の新しいフロー要求を受信し、第１のスイッチの新しいフロー要求があたかも第２のネットワーク要素１２２の新しいフロー要求であるかのように（たとえば、新しいデータフローのための経路を決定し、新しいデータフローのためのデータ経路に含めるために、コントローラ１２７によって選択されたネットワーク要素１２２の各々に新しいデータフローのデータ経路のための転送ルールをインストールすることによって）、第１のネットワーク要素１２２の新しいフロー要求を処理する。
【００５３】
少なくともいくつかの実施形態において、フロー識別子が、第１のネットワーク要素１２２から第２のネットワーク要素１２２へと転送される新しいフロー要求に関連付けられてよい。フロー識別子は、第１のネットワーク要素１２２によって、第１のネットワーク要素１２２から第２のネットワーク要素１２２へと送信される新しいフロー要求に追加されてよい。フロー識別子は、第２のネットワーク要素１２２によって、（たとえば、フロー識別子をデータフローに割り当てる、およびフロー識別子を、データフローのために第２のネットワーク要素１２２に格納されたデータフロー情報に関連付けることによって）新しいフローに関連付けられてよい。フロー識別子は、フローデフレクションの一部として第１のネットワーク要素１２２から受信された新しいフロー要求を、第２のネットワーク要素のローカルなデータフロー（たとえば、フローデフレクションを使用せずに、第２のスイッチで受信されたデータフロー要求のためのデータフロー）から区別するために、第２のネットワーク要素１２２によって使用されてよい。第２のネットワーク要素１２２は、一定の状態下で（たとえば、第２のネットワーク要素１２２がＴＣＡＭ利用状態を経験しているとき、第２のネットワーク要素１２２がＣＰＵ利用状態を経験しているとき、など）、デフレクションされたデータフローよりも高い優先度を、ローカルなデータフローに与えるように構成されてよい。フロー識別子は、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベル（たとえば、ＭＰＬＳラベルの対処は、ＯｐｅｎＦｌｏｗ１．１以降のＯｐｅｎＦｌｏｗによってサポートされている）、仮想ローカルエリアネットワーク（ＶＬＡＮ）識別子、または任意の好適なタイプの識別子を使用して、実装されてよい。
【００５４】
新しいフロー要求は、（たとえば、ＯｐｅｎＦｌｏｗネットワークにおけるデータフローの確立に関して説明されたような）新しいフローの最初のパケット、または任意の他の好適なタイプの新しいフロー要求メッセージであってよいことが認識されるであろう。
【００５５】
以上の説明は、明確にする目的のために、第２のネットワーク要素１２２が、第１のネットワーク要素１２２の１ホップネイバであると想定していることが認識されるであろう。第２のネットワーク要素１２２が、第１のネットワーク要素１２２の１ホップネイバではなくて、むしろ、１つまたは複数の中間ネットワーク要素１２２によって第１のネットワーク要素１２２から分離されているとき、コントローラ１２７は、中間ネットワーク要素１２２ごとにフロー転送ルールを生成し、フロー転送ルールを中間ネットワーク要素１２２へと転送し、その結果、第１のネットワーク要素１２２の新しいフロー要求は、中間ネットワーク要素１２２を介して、第２のネットワーク要素１２２に伝搬されてよい。たとえば、第２のネットワーク要素１２２が、第１のネットワーク要素１２２の２ホップネイバであり、中間ネットワーク要素１２２が、第１のネットワーク要素１２２から第２のネットワーク要素１２２へのフローデフレクションをサポートするために選択される場合、コントローラ１２７は、（たとえば、第１のネットワーク要素１２２で受信された新しいフロー要求を、中間ネットワーク要素１２２へと転送するよう、第１のネットワーク要素１２２に命令する）第１のフロー転送ルールを、第１のネットワーク要素１２２に送信し、（たとえば、中間ネットワーク要素１２２で受信された第１のネットワーク要素１２２からの新しいフロー要求を、第２のネットワーク要素１２２へと転送するよう、中間ネットワーク要素１２２に命令する）第２のフロー転送ルールを、中間ネットワーク要素１２２に送信する。
【００５６】
選択的なフローデフレクションの使用は、新しいデータフローが複数のネットワーク要素１２２へとデフレクションされるのを可能にすることが認識されるであろう。コントローラ１２７は、複数のネイバネットワーク要素１２２を選択し、複数のネイバネットワーク要素１２２のための複数のデフレクションルールを生成し、複数のデフレクションルールを第１のネットワーク要素１２２にインストールすることができる。複数のネイバネットワーク要素１２２の選択は、任意の好適なやり方（たとえば、候補ネイバネットワーク要素１２２の単一のリストを生成し、候補ネイバネットワーク要素１２２のリストから複数のネイバネットワーク要素１２２を選択する、候補ネイバネットワーク要素１２２の複数のリストを生成し、候補ネイバネットワーク要素１２２の複数のリストから複数のネイバネットワーク要素１２２を選択する、など）で実施されてよい。
【００５７】
新しいデータフローのためにコントローラ１２７によって計算されたデータ経路は、第１のネットワーク要素１２２を含んでいても、いなくてもよいことが認識されるであろう。うまく接続されたネットワークでは、コントローラ１２７が、第１のネットワーク要素１２２（またはリソース利用状態を経験している可能性がある任意の他のネットワーク要素１２２）を含まない、新しいデータフローのための経路を識別することができることが予想される。しかしながら、うまく接続されていないネットワーク、またはさらにうまく接続されたネットワークにおける一定の事例では、コントローラ１２７は、データ経路が、第１のネットワーク要素１２２（または、上で触れたような、リソース利用状態を経験している可能性がある任意の他のネットワーク要素１２２）を横断しなければならない、または横断すべきであると決定することがある。新しいデータフローのために計算されたデータ経路がリソース利用状態を経験しているネットワーク要素１２２を含む、少なくともいくつかの実施形態において、１つまたは複数のトンネル（たとえば、１つもしくは複数のＭＰＬＳトンネル、または任意の他の好適なタイプのトンネル）が、データフローのトラフィックが、リソース利用状態を経験しているネットワーク要素１２２を通り抜けるのを可能にするために構成されてよい。
【００５８】
フローデフレクションは、追加的な負荷に対処するために共有されることになる利用可能なリソースの量を増大させるが、この利用可能なリソースの量の増大は、デフレクションされるフローのために計算され、使用されるデータ経路の増加された経路長を犠牲にして成り立つことができることが認識されるであろう。少なくともいくつかの実施形態において、コントローラ１２７は、そのような対抗する利益のバランスを取るように構成されてよい。
【００５９】
コントローラ１２７は、第１のネットワーク要素１２２におけるフローデフレクションが取り除かれてもよいときを判定するために、第１のネットワーク要素１２２をモニターすることを続行し、第１のネットワーク要素１２２におけるフローデフレクションが取り除かれてもよいという判定に基づいて、第１のネットワーク要素１２２におけるフローデフレクションを取り除くことを開始するように構成されている。
【００６０】
第１のネットワーク要素１２２におけるフローデフレクションが取り除かれてもよいという判定は、リソース利用状態が第１のネットワーク要素１２２上にもはや存在しない（たとえば、第１のネットワーク要素１２２上のＴＣＡＭ利用が、フローデフレクションを開始するために使用される閾値未満に減少する、第１のネットワーク要素１２２上のＣＰＵ利用が、フローデフレクションを開始するために使用される閾値未満に減少する、など）という判定に基づいていてよい。
【００６１】
第１のネットワーク要素１２２におけるフローデフレクションが取り除かれてもよいという判定は、異なるリソース利用状態が第１のネットワーク要素１２２において満たされたという判定に基づいていてもよい。たとえば、第１のネットワーク要素１２２におけるＴＣＡＭ利用が８５％を超えたという判定に基づいて、第１のネットワーク要素１２２においてフローデフレクションが開始された場合、第１のネットワーク要素１２２におけるＴＣＡＭ利用が８０％未満に減少したという判定に基づいて、フローデフレクションが第１のネットワーク要素１２２において取り除かれてよい。たとえば、第１のネットワーク要素１２２におけるＣＰＵ利用が９２％を超えたという判定に基づいて、第１のネットワーク要素１２２においてフローデフレクションが開始された場合、第１のネットワーク要素１２２におけるＣＰＵ利用が８８％未満に減少したという判定に基づいて、フローデフレクションが第１のネットワーク要素１２２において取り除かれてよい。状態は、さまざまな他の方式で定義され得ることが認識されるであろう。
【００６２】
第１のネットワーク要素１２２におけるフローデフレクションが取り除かれてもよいという判定は、モニターされているリソースタイプごとに、リソースタイプのリソース利用が、関連付けられたリソース状態（たとえば、ＴＣＡＭ利用閾値未満のＴＣＡＭ利用、ＣＰＵ利用閾値未満のＣＰＵ利用、など、ならびにそのさまざまな組合せ）を満たすという判定に基づいていてもよい。
【００６３】
第１のネットワーク要素１２２におけるフローデフレクションが取り除かれてもよいという判定は、任意の他の好適なタイプの状態に基づいていてもよいことが認識されるであろう。
【００６４】
コントローラ１２７は、第１のネットワーク要素１２２におけるフローデフレクションを取り除くことを開始する。フローデフレクションを取り除くことは、フロー転送ルールを取り除くことだけを含まず、その理由は、デフレクションされたフローを第２のネットワーク要素１２２から再び第１のネットワーク要素１２２へと移行させることなく、第１のネットワーク要素１２２からフロー転送ルールを取り除くことは、爆発的なフローセットアップ要求につながることがあり、それが、第１のネットワーク要素１２２のＣＰＵリソース１２４に負担をかけることになることが認識されるであろう。
【００６５】
コントローラ１２７は、デフレクションされたフローを、第２のネットワーク要素１２２から再び第１のネットワーク要素１２２へと移行させることによって、第１のネットワーク要素１２２におけるフローデフレクションを取り除くことを開始することができる。たとえば、コントローラ１２７は、第１のネットワーク要素１２２から第２のネットワーク要素１２２へとデフレクションされたデータフローごとに、第１のネットワーク要素１２２から宛先までの新しい経路をセットアップし、第２のネットワーク要素１２２に関連付けられた以前の経路上ではなく、第１のネットワーク要素１２２に関連付けられた新しい経路上で転送されるようにデフレクションされたフローを変更し、次いで、第２のネットワーク要素１２２から宛先までの以前の経路を取り除くように構成されてよい。コントローラ１２７は次いで、デフレクションされたフローが第２のネットワーク要素１２２から再び第１のネットワーク要素１２２へと移行された後で、第１のネットワーク要素１２２でのフロー転送ルールの使用を防ぐことができる。しかしながら、少なくともいくつかの場面では、このプロセスは、（たとえば、経路セットアップのために）大幅なオーバーヘッドをもたらすことがある、またはデフレクションされたデータフローについて順序の狂ったパケット配信を引き起こすことがある。
【００６６】
コントローラ１２７は、第１のネットワーク要素１２２で受信された新しいデータフローが、第１のネットワーク要素１２２から第２のネットワーク要素１２２へとこれ以上デフレクションされないことを保証しながら、デフレクションされたフローのデータ経路を変わらないままにすることによって、第１のネットワーク要素１２２におけるフローデフレクションを取り除くことを開始することができる。たとえば、コントローラ１２７は、（１）フローのパケットは、第１のネットワーク要素１２２から第２のネットワーク要素１２２へと転送されるべきであり、それにより、フローデフレクションが開始されたときに第１のネットワーク要素１２２にインストールされたフロー転送ルールに頼ることなく、デフレクションされたフローがなおも第２のネットワーク要素１２２に届くことが可能であることを保証する明示的なルールを、デフレクションされたフローごとに生成し、（２）デフレクションされたフローのための明示的なルールが第１のネットワーク要素１２２上で設定された後で、フローデフレクションが開始されたときに第１のネットワーク要素１２２にインストールされたフロー転送ルールを取り除き、それにより、新しいデータフローが、第１のネットワーク要素１２２から、第２のネットワーク要素１２２ではなく、コントローラ１２７へと送信されることを保証するように、構成されてよい。この実施形態において、デフレクションされたデータフローは、デフレクションされたデータフローが終了されるまで、デフレクション経路を使用することを続行する。
【００６７】
コントローラ１２７は、第１のネットワーク要素１２２におけるフロー転送ルールの使用を中止するよう、第１のネットワーク要素に命令するように構成されたメッセージ（たとえば、第１のネットワーク要素１２２からフロー転送ルールを取り除くことによって、第１のネットワーク要素１２２で非アクティブであるとフロー転送ルールにマークすることによって、など）を、第１のネットワーク要素１２２に伝搬することによって、第１のネットワーク要素１２２におけるフロー転送ルールの使用を防ぐことができる。
【００６８】
コントローラ１２７は、任意の他の好適な状態（たとえば、フローデフレクションの開始以降の時間の閾値長さの後で、全体のネットワークトラフィック負荷に基づいて、など）に応答して、第１のネットワーク要素１２２におけるフローデフレクションを取り除くことを開始することができる。
【００６９】
第１のネットワーク要素１２２上のリソース利用状態の検出に応答して、第１のネットワーク要素１２２によって実施されたフローデフレクションの結果として、第１のネットワーク要素１２２ではなく、第２のネットワーク要素１２２のリソース（たとえば、ＴＣＡＭリソース１２３およびＣＰＵリソース１２４）が、新しいデータフローのためのデータ経路を要求しサポートすることにおいて消費される。これにより、第１のネットワーク要素１２２で受信された新しいデータフローがサポートされることを可能にし、もしそうでなければ、第１のネットワーク要素１２２上のリソース利用状態（たとえば、リソース過剰利用状態、またはリソース枯渇状態）が、第１のネットワーク要素１２２の新しいデータフローがサポートされるのを妨げていた可能性があったことになる。
【００７０】
図３は、ネットワーク要素におけるリソース利用状態の検出に応答して、ネットワーク要素においてフローデフレクションを使用するための方法の一実施形態を示す。図３に示されるように、方法３００のステップの一部は、コントローラ（たとえば、コントローラ１２７）によって実施され、方法３００のステップの一部は、ネットワーク要素（たとえば、ネットワーク要素１２２）によって実施される。方法３００のさまざまなステップは、図１の説明と併用して検討されるときに、よりよく理解され得る。
【００７１】
ステップ３０２で、方法３００が始まる。
【００７２】
ステップ３０４で、コントローラは、リソース利用状態のためにネットワーク要素をモニターする。
【００７３】
ステップ３０６で、コントローラは、リソース利用状態が検出されたかどうかを判定する。リソース利用状態が検出されていない場合、方法３００は、ステップ３０４に戻る（たとえば、コントローラは、リソース利用状態を検出するために、ネットワーク要素をモニターすることを続行する）。リソース利用状態が検出された場合、方法３００は、ステップ３０８へと進む。
【００７４】
ステップ３０８で、コントローラは、ネットワーク要素のためのフローデフレクションを開始する。少なくともいくつかの実施形態において、コントローラによるフロー検出の開始は、ネットワーク要素のためのフロー転送ルールの生成、コントローラからネットワーク要素へのフロー転送ルールの伝搬、などを含む。ステップ３０８から、方法３００は、（ネットワーク要素によって実施される）ステップ３０９へと進み、（コントローラによって実施される）ステップ３１０にもまた進む。
【００７５】
ステップ３０９で、ネットワーク要素は、フローデフレクションを使用して動作する。少なくともいくつかの実施形態において、フローデフレクションを使用するネットワーク要素の動作は、フロー転送ルールを受信すること、ネットワーク要素においてフローデフレクションするためにフロー転送ルールを使用すること、などを含む。図３に示されるように、ネットワーク要素は、フローデフレクションが取り除かれるべきであるという指示をコントローラから受信するまで、ステップ３０９にとどまる（とはいえ、方法３００は、フローデフレクションが取り除かれることになるように、ネットワーク要素におけるリソース利用状態の終了を検出するために、コントローラ側で続行する）。
【００７６】
ステップ３１０で、コントローラは、リソース利用状態の終了についてネットワーク要素をモニターする。
【００７７】
ステップ３１２で、コントローラは、リソース利用状態の終了が検出されたかどうかを判定する。リソース利用状態の終了が検出されていない場合、方法３００は、ステップ３１０に戻る（たとえば、コントローラは、リソース利用状態の終了を検出するために、ネットワーク要素をモニターすることを続行する）。リソース利用状態の終了が検出された場合、方法３００は、ステップ３１４へと進む。
【００７８】
ステップ３１４で、コントローラは、ネットワーク要素のためのフローデフレクションを取り除くことを開始する。たとえば、コントローラによるフロー検出を取り除くことの開始は、データフローがそこからデフレクションされたネットワーク要素に、新しいデータフローをデフレクションさせないように命令すること、デフレクションされたデータフローを、データフローがそこからデフレクションされたネットワーク要素に再び移行させるように、ネットワーク要素に命令すること、などを含むことができる。ステップ３０８から、方法３００は（ネットワーク要素によって実施される）ステップ３１５へと進む。
【００７９】
ステップ３１５で、ネットワーク要素は、フローデフレクションを取り除くことを開始する。フローデフレクションを取り除くことの開始は、デフレクションされたフローを再びネットワーク要素に移行させるためのプロセスを開始すること、後続のデータフローが、（たとえば、フロー転送ルールを取り除くことによって）デフレクションされるのではなく、ローカルに処理されることを保証するためのプロセスを開始すること、などを含むことができる。
【００８０】
方法３００は、単一のリソース利用状態のために、単一のネットワーク要素においてフローデフレクションを適用し、取り除くことの１つのサイクルを表すことが認識されるであろう。方法３００は、ネットワーク要素によって経験される他のリソース利用状態のために、コントローラおよびネットワーク要素によって実施されるように続行することができることが認識されるであろう。方法３００は、コントローラによって、およびコントローラがフローデフレクション能力を提供する複数のネットワーク要素によって実施され得ることもまた認識されるであろう。
【００８１】
リソースベースの状態についてのモニタリング、リソースベースの状態の検出、およびリソースベースの状態の検出に基づいたフロー転送ルールの生成が、ＳＤＮのコントローラによって実施される実施形態に関して、本明細書で主に示され、説明されたが、少なくともいくつかの実施形態においては、これらの機能のうちの１つまたは複数が、１つまたは複数の他のデバイスによって実施されてもよいことが認識されるであろう。少なくともいくつかの実施形態において、ネットワーク要素が、リソースベースの状態についてモニターし、リソースベースの状態を検出し、リソースベースの状態の検出に基づいてフロー転送ルールを生成するように構成されてもよい（たとえば、そこでは、ネットワーク要素が、それ自体の１つまたは複数のリソースの利用をモニターし、リソースベースの状態が検出されたときに、そのネットワーク要素でのローカルな使用のためのフロー転送ルールを生成し、格納する）。少なくともいくつかの実施形態において、（ＳＤＮのコントローラおよびＳＤＮのネットワーク要素以外の）ＳＤＮのデバイスまたはエージェントが、リソースベースの状態についてモニターし、リソースベースの状態を検出し、リソースベースの状態の検出に基づいてフロー転送ルールを生成するように構成されてもよい。少なくともいくつかの実施形態において、ＳＤＮの外側にあるデバイスが、リソースベースの状態についてモニターし、リソースベースの状態を検出し、リソースベースの状態の検出に基づいてフロー転送ルールを生成するように構成されてもよい。そのような実施形態のさまざまな組合せが使用され得ることが認識されるであろう（たとえば、そこでは、ネットワーク要素のうちの一定のネットワーク要素は、それ自体で機能を実施し、一方、ネットワーク要素のうちの他のネットワーク要素については、機能がコントローラによって実施される）。これらの機能は、さまざまな他の方式で実装されてもよいことが認識されるであろう。
【００８２】
ＳＤＮ内での経路の選択およびセットアップを制御するために、ＯｐｅｎＦｌｏｗが使用される実施形態に関して、本明細書で主に示され、説明されたが、ＳＤＮ内での経路の選択およびセットアップを制御するために、任意の他の好適な制御プロトコルが使用され得ることが認識されるであろう。
【００８３】
データセンタネットワークを提供するためにＳＤＮが使用される実施形態に関して、本明細書で主に示され、説明されたが、任意の他の好適なタイプのネットワークを提供するためにＳＤＮが使用され得ることが認識されるであろう。
【００８４】
制御プレーン機能と転送プレーン機能とが分離された（すなわち、ＳＤＮ）、特有のタイプの分散ネットワーク内でフローデフレクションが使用される実施形態に関して、本明細書で主に示され、説明されたが、制御プレーン機能と転送プレーン機能とが分離された、任意の他の好適なタイプの分散ネットワーク内でフローデフレクションが使用され得ることが認識されるであろう。
【００８５】
図４は、本明細書で説明された機能を実施する際の使用に好適なコンピュータの高レベルブロック図を示す。
【００８６】
コンピュータ４００は、プロセッサ４０２（たとえば、中央処理ユニット（ＣＰＵ）および／または他の好適なプロセッサ）と、メモリ４０４（たとえば、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）など）とを含む。
【００８７】
コンピュータ４００はまた、協調モジュール／プロセス４０５を含むことができる。協調プロセス４０５は、本明細書で論じられたような機能を実装するために、メモリ４０４にロードされ、プロセッサ４０２によって実行されてよく、したがって、協調プロセス４０５（関連付けられたデータ構造を含む）は、コンピュータ可読記憶媒体、たとえば、ＲＡＭメモリ、磁気または光学ドライブまたはディスケット、などに記憶されてよい。
【００８８】
コンピュータ４００はまた、１つまたは複数の入力／出力デバイス４０６（たとえば、ユーザ入力デバイス（キーボード、キーパッド、マウス、その他など）、ユーザ出力デバイス（ディスプレイ、スピーカ、その他など）、入力ポート、出力ポート、受信機、送信機、１つまたは複数の記憶デバイス（たとえば、テープドライブ、フロッピー（登録商標）ドライブ、ハードディスクドライブ、コンパクトディスクドライブ、その他）など、ならびにそのさまざまな組合せ）を含むことができる。
【００８９】
図４に示されたコンピュータ４００は、本明細書で説明された機能的要素および／または本明細書で説明された機能的要素の部分を実装するために好適な、一般的なアーキテクチャおよび機能性を提供することが認識されるであろう。たとえば、コンピュータ４００は、ホストサーバ１１０、ホストサーバ１１０の一部、ＴｏＲスイッチ１２２Ｔ、ＴｏＲスイッチ１２２Ｔの一部、アグリゲートスイッチ１２２Ａ、アグリゲートスイッチ１２２Ａの一部、ルータ１２２Ｒ、ルータ１２２Ｒの一部、コントローラ１２７、コントローラ１２７の一部、などのうちの１つまたは複数を実装するために好適な、一般的なアーキテクチャおよび機能性を提供する。
【００９０】
本明細書で示され、説明された機能は、（たとえば、特定用途コンピュータなどを実装するために、（たとえば、１つもしくは複数のプロセッサによる実行を介して）汎用コンピュータ上で実行するための１つもしくは複数のプロセッサ上のソフトウェアの実装を介した）ソフトウェアで実装されてもよく、ならびに／または、（たとえば、汎用コンピュータ、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、および／もしくは任意の他のハードウェア等価物を使用して）ハードウェアで実装されてもよいことが認識されるであろう。
【００９１】
ソフトウェア方法として本明細書で論じられた方法ステップのいくつかは、たとえば、さまざまな方法ステップを実施するためにプロセッサと協調する回路として、ハードウェア内で実装されてもよいことが認識されるであろう。本明細書で説明された機能／要素のうちの部分は、コンピュータプログラム製品として実装されてよく、そこでは、コンピュータによって処理されるとき、本明細書で説明された方法および／または技法が呼び出される、または別のやり方で提供されるように、コンピュータ命令が、コンピュータの動作を適合させる。発明の方法を呼び出すための命令は、固定媒体もしくはリムーバブル媒体に格納される、放送媒体もしくは他の信号担持媒体におけるデータストリームを介して伝送される、および／または、命令に従って動作するコンピューティングデバイス内のメモリ内に記憶されてもよい。
【００９２】
本明細書で使用されるとき、「または（ｏｒ）」という用語は、別段指し示されない（たとえば、「さもなければ（ｏｒ  ｅｌｓｅ）」または「または代替において（ｏｒ  ｉｎ  ｔｈｅ  ａｌｔｅｒｎａｔｉｖｅ）」）限りは、非排他的な「または」を指すことが認識されるであろう。
【００９３】
さまざまな実施形態の態様は、特許請求の範囲において明記される。さまざまな実施形態のそれらの態様および他の態様は、以下の番号付けされた条項において明記される。
１．プロセッサと、プロセッサに通信可能に接続されたメモリとを含む装置であって、
プロセッサが、
ソフトウェア定義ネットワークの第１のネットワーク要素に関連付けられたリソース利用状態の検出に基づいて、第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、ソフトウェア定義ネットワークの第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、フロー転送ルールを生成するように構成されている、
装置。
２．リソース利用状態が、三値連想メモリ（ＴＣＡＭ）利用状態または中央処理ユニット（ＣＰＵ）利用状態を含む、条項１に記載の装置。
３．プロセッサが、候補ネットワーク要素のセットから第２のネットワーク要素を選択するように構成されている、条項１に記載の装置。
４．リソース利用状態が、リソースタイプに関連付けられており、第２のネットワーク要素が、リソースタイプについての最も低いリソース利用レベルを有する候補ネットワーク要素のうちの１つである、条項３に記載の装置。
５．候補ネットワーク要素のセットが、
第１のネットワーク要素の１つもしくは複数の１ホップネイバ、または
第１のネットワーク要素の１つもしくは複数の２ホップネイバ
のうちの少なくとも１つを含む、
条項３に記載の装置。
６．フロー転送ルールが、第１のネットワーク要素で受信された各新しいフロー要求が第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、条項１に記載の装置。
７．フロー転送ルールが、第１のネットワーク要素で受信された新しいフロー要求の小部分が第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、条項１に記載の装置。
８．プロセッサが、小部分を、データフローに関連付けられたフロー定義情報の条件とするように構成されている、条項７に記載の装置。
９．プロセッサが、
フロー転送ルールに基づいて第１のネットワーク要素から第２のネットワーク要素へとデフレクションされたデフレクションされたデータフローの、第２のネットワーク要素から第１のネットワーク要素への移行を開始し、
デフレクションされたデータフローが第２のネットワーク要素から再び第１のネットワーク要素へと移行されたという判定に基づいて、第１のネットワーク要素でのフロー転送ルールの使用を防ぐためのメッセージを生成するように構成されている、
条項１に記載の装置。
１０．プロセッサが、
フロー転送ルールに基づいて第１のネットワーク要素から第２のネットワーク要素へとデフレクションされたデフレクションされたデータフローごとに、デフレクションされたデータフローのデータパケットが、第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、フロールールを生成し、
第１のネットワーク要素でのフロー転送ルールの使用を中止するよう、第１のネットワーク要素に命令するためのメッセージを生成するように構成されている、
条項１に記載の装置。
１１．ソフトウェア定義ネットワークの第１のネットワーク要素に関連付けられたリソース利用状態の検出に基づいて、第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、ソフトウェア定義ネットワークの第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、フロー転送ルールを生成するために、
プロセッサを使用するステップを含む、
方法。
１２．プロセッサと、プロセッサに通信可能に接続されたメモリとを含む装置であって、
プロセッサが、
ソフトウェア定義ネットワークの第１のネットワーク要素で新しいフロー要求を受信し、
第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示するフロー転送ルールに基づいて、新しいフロー要求を、ソフトウェア定義ネットワークの第１のネットワーク要素から第２のネットワークに向けて転送するように構成されている、
装置。
１３．プロセッサが、
第１のネットワーク要素に関連付けられたリソース利用状態の検出に基づいて、ソフトウェア定義ネットワークの制御要素から、第１のネットワーク要素でフロー転送ルールを受信すること、または
第１のネットワーク要素に関連付けられたリソース利用状態の検出に基づいて、第１のネットワーク要素のためのフロー転送ルールを生成すること
のうちの少なくとも１つを実施するように構成されている、
条項１２に記載の装置。
１４．リソース利用状態が、三値連想メモリ（ＴＣＡＭ）利用状態または中央処理ユニット（ＣＰＵ）利用状態を含む、条項１３に記載の装置。
１５．フロー転送ルールが、第１のネットワーク要素で受信された各新しいフロー要求が第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、条項１２に記載の装置。
１６．フロー転送ルールが、第１のネットワーク要素で受信された新しいフロー要求の小部分が第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示する、条項１２に記載の装置。
１７．プロセッサが、
フロー転送ルールおよび新しいフロー要求に関連付けられたフロー情報に基づいて、新しいフロー要求が、第２のネットワーク要素へと転送されるべきかどうかを判定するように構成されている、
条項１６に記載の装置。
１８．プロセッサが、
第２のネットワーク要素で受信されたデータフロー要求に関連付けられたデータフローから、新しいフロー要求に関連付けられたデータフローを区別するために、第２のネットワーク要素によって使用されるためのフロー識別子を、新しいフロー要求に関連付けるように構成されている、
条項１２に記載の装置。
１９．プロセッサが、
第１のネットワーク要素でのフロー転送ルールの使用を中止するよう、第１のネットワーク要素に命令するためのメッセージを受信し、
第１のネットワーク要素で受信された新しいデータフロー要求のためのフロー転送ルールの使用を中止するように構成されている、
条項１２に記載の装置。
２０．ソフトウェア定義ネットワークの第１のネットワーク要素で新しいフロー要求を受信するために、および
第１のネットワーク要素で受信された新しいフロー要求の少なくとも一部が、第１のネットワーク要素から第２のネットワーク要素へと転送されるべきであることを指示するフロー転送ルールに基づいて、新しいフロー要求を、ソフトウェア定義ネットワークの第１のネットワーク要素から第２のネットワークに向けて転送するために、
プロセッサを使用するステップを含む、
方法。
【００９４】
本明細書に提示された教示を組み込むさまざまな実施形態が、本明細書で詳細に示され、説明されてきたが、これらの教示をなおも組み込む多くの他の多様な実施形態を、当業者が容易に考案できることが認識されるであろう。
【図１】
2015531568.tif 000003
【図２】
2015531568.tif 000004
【図３】
2015531568.tif 000005
【図４】
2015531568.tif 000006
【国際調査報告】
2015531568.tif 000007
2015531568.tif 000008