(57)【特許請求の範囲】
【請求項１】
相互接続されたコンピュータおよびスイッチの１つまたは複数のハイブリッドネットワークにおいてレガシースイッチルーティングを制御するための、コンピュータによって実施される方法であって、
前記１つまたは複数のハイブリッドネットワークの物理ネットワークトポロジにわたって最小スパニングツリー（ＭＳＴ）と転送グラフ（ＦＷＧ）とを生成することによって、前記１つまたは複数のハイブリッドネットワークのためのネットワークアンダーレイを生成することと、
最小コストマッピングを用いて初期パスを最適化することによって、前記ＦＷＧにおけるホスト間の最適パスを決定することと、
１つまたは複数のプログラマブルスイッチにおいて、１つまたは複数のレガシースイッチにおける転送規則のインストールをトリガーするための特殊パケットを生成およびインストールすることによって、前記最適パスを強制するように前記初期パスを調整することと、
を含む、方法。
【請求項２】
前記ＭＳＴは、前記１つまたは複数のハイブリッドネットワークにおけるスイッチ間でブロードキャストパケットを送信するためのリンクの組を含む、請求項１に記載の方法。
【請求項３】
前記ＦＷＧは、前記１つまたは複数のハイブリッドネットワークにおけるスイッチ間でユニキャストパケットとブロードキャストパケットとの双方を送信するためのリンクの組を含む、請求項１に記載の方法。
【請求項４】
前記初期パスを前記調整することは、
前記ＦＷＧ内にない物理リンクをオフにすることと、
前記プログラマブルスイッチにおいて、前記ＦＷＧ内にあるが前記ＭＳＴ内にない全てのリンク上のブロードキャストトラフィックをドロップするための規則をインストールすることと、
前記最適パスに沿ってトラフィックを転送することと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記最小コストマッピングは、各リンクコストの和であり、前記リンクコストは、リンクを介してフローを送信するコスト、前記リンクのセットアップコスト、前記リンクを動作させるコスト、および複数のネットワーク需要のコストを含む、請求項１に記載の方法。
【請求項６】
前記ハイブリッドネットワーク内の全てのループが、少なくとも１つのプログラマブルスイッチを含むことを検証することによってブロードキャストを回避することをさらに含む、請求項１に記載の方法。
【請求項７】
前記特殊パケットは連続して送信され、前記レガシースイッチが安定状態に到達するまで、前記レガシースイッチにインストールされ、前記安定状態は、データパケットが双方向において前記最適パスをトラバースするときに到達する、請求項１に記載の方法。
【請求項８】
相互接続されたコンピュータおよびスイッチの１つまたは複数のハイブリッドネットワークにおいてレガシースイッチルーティングを制御するためのシステムであって、
前記１つまたは複数のハイブリッドネットワークの物理ネットワークトポロジにわたって最小スパニングツリー（ＭＳＴ）と転送グラフ（ＦＷＧ）とを構築するネットワークアンダーレイ生成器と、
最小コストマッピングを用いて初期パスを最適化することによって、前記ＦＷＧにおけるホスト間の最適パスを決定する最適化器と、
１つまたは複数のプログラマブルスイッチにおいて、１つまたは複数のレガシースイッチのための転送規則のインストールをトリガーするための特殊パケットを生成およびインストールすることによって、前記最適パスを強制するコントローラと、
を備えている、システム。
【請求項９】
前記ＭＳＴは、前記１つまたは複数のハイブリッドネットワークにおけるスイッチ間でブロードキャストパケットを送信するためのリンクの組を含む、請求項８に記載のシステム。
【請求項１０】
前記ＦＷＧは、前記１つまたは複数のハイブリッドネットワークにおけるスイッチ間でユニキャストパケットとブロードキャストパケットとの双方を送信するためのリンクの組を含む、請求項８に記載のシステム。
【請求項１１】
前記初期パスを調整することは、
前記ＦＷＧ内にない物理リンクをオフにすることと、
前記プログラマブルスイッチにおいて、前記ＦＷＧ内にあるが前記ＭＳＴ内にない全てのリンク上のブロードキャストトラフィックをドロップするための規則をインストールすることと、
前記最適パスに沿ってトラフィックを転送することと、
をさらに含む、請求項８に記載のシステム。
【請求項１２】
前記最小コストマッピングは各リンクコストの和であり、前記リンクコストは、リンクを介してフローを送信するコスト、前記リンクのセットアップコスト、前記リンクを動作させるコスト、および複数のネットワーク需要のコストを含む、請求項８に記載のシステム。
【請求項１３】
前記ハイブリッドネットワーク内の全てのループが少なくとも１つのプログラマブルスイッチを含むことを検証することによってブロードキャストを回避することをさらに含む、請求項８に記載のシステム。
【請求項１４】
前記特殊パケットは、前記レガシースイッチが安定状態に達するまで連続して送信され、前記レガシースイッチにインストールされ、前記安定状態は、データパケットが双方向において前記最適パスをトラバースするときに到達する、請求項８に記載のシステム。
【請求項１５】
コンピュータ可読プログラムを備えるコンピュータ可読ストレージ媒体であって、前記コンピュータ可読プログラムは、コンピュータにおいて実行されると、前記コンピュータに、
１つまたは複数のハイブリッドネットワークの物理ネットワークトポロジにわたって最小スパニングツリー（ＭＳＴ）と転送グラフ（ＦＷＧ）とを生成することによって、相互接続されたコンピュータおよびスイッチの前記１つまたは複数のハイブリッドネットワークのためのネットワークアンダーレイを生成するステップと、
最小コストマッピングを用いて初期パスを最適化することによって、前記ＦＷＧにおけるホスト間の最適パスを決定するステップと、
１つまたは複数のプログラマブルスイッチにおいて、１つまたは複数のレガシースイッチのための転送規則のインストールをトリガーするための特殊パケットを生成およびインストールすることによって、前記最適パスを強制するように前記初期パスを調整するステップと、
を実行させる、コンピュータ可読ストレージ媒体。
【請求項１６】
前記ＭＳＴは、前記１つまたは複数のハイブリッドネットワークにおけるスイッチ間でブロードキャストパケットを送信するためのリンクの組を含む、請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項１７】
前記ＦＷＧは、前記１つまたは複数のハイブリッドネットワークにおけるスイッチ間のユニキャストパケットとブロードキャストパケットとの双方を送信するためのリンクの組を含む、請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項１８】
前記初期パスを前記調整することは、
前記ＦＷＧ内にない物理リンクをオフにすることと、
前記プログラマブルスイッチにおいて、前記ＦＷＧ内にあるが前記ＭＳＴ内にない全てのリンク上のブロードキャストトラフィックをドロップするための規則をインストールすることと、
前記最適パスに沿ってトラフィックを転送することと、
をさらに含む、請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項１９】
前記最小コストマッピングは、各リンクコストの和であり、前記リンクコストは、リンクを介してフローを送信するコスト、前記リンクのセットアップコスト、前記リンクを動作させるコスト、および複数のネットワーク需要のコストを含む、請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項２０】
前記ハイブリッドネットワーク内の全てのループが、少なくとも１つのプログラマブルスイッチを含むことを検証することによって、ブロードキャストを回避することをさらに含む、請求項１５に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願情報
本出願は、２０１４年８月２５日に出願された米国仮特許出願第６２／０４１，６００号に対する優先権を主張する。この米国仮特許出願の内容は、参照により本明細書に援用される。
【背景技術】
【０００２】
技術分野
本発明は、包括的には、ハイブリッドネットワークにおけるスイッチルーティングの制御に関し、より詳細には、ハイブリッドネットワークにおけるレガシースイッチおよびプログラマブルスイッチのルーティングを制御するためのシステムおよび方法に関する。
【０００３】
従来技術の説明
ハイブリッドネットワークは、レガシースイッチとプログラマブル（例えば、ＯｐｅｎＦｌｏｗ（商標））スイッチとの双方を含み、これによって、ネットワーク全体のアップグレードを必要とすることなく、ソフトウェア定義ネットワーキング（ＳＤＮ）を用いることにより、ネットワークパフォーマンスが改善される。従来のシステムおよび方法は、ネットワーク内の重要な位置に配置されたスイッチにＳＤＮ機能を付加し、多くのＳＤＮパラダイム（例えば、ルーティング、アクセス制御等）の制御を達成するために、各フローが少なくとも１つのそのようなスイッチをトラバースすることを確実にする。一方、制御点はＳＤＮ対応デバイスに限定され、オペレータは、ＳＤＮスイッチ間のレガシーパスに対し、きめの細かいポリシーを施行することができない。
【０００４】
ＳＤＮは、ネットワークデバイスを制御し、ネットワークとインタラクトするための、論理的に集中型のインタフェースを提供する。オペレータは、集中型コントローラから実行されるプログラムを用いて、ネットワーク管理タスク（例えば、トラフィックエンジニアリング、アクセス制御等）を実行する。ＳＤＮによって提供される柔軟な制御および拡張された可視性により、ネットワークの運用コストを大幅に低減してもよい。一方、ＳＤＮの利益を完全に得るには、通常、かなりの初期投資が必要である。なぜなら、ネットワークプロバイダは通常、全てのレガシーデバイスをアップグレードするか、またはプログラマブルデバイス（例えば、その転送テーブルが、論理的に集中型のコントローラから、専用プロトコルを用いて遠隔でプログラマブルであるデバイス（例えば、ＯｐｅｎＦｌｏｗ（商標））と交換しなくてはならないためである。
【０００５】
近年、ネットワーク（例えば、プログラマブルスイッチおよびレガシースイッチを含むハイブリッドネットワーク）における僅かな数の戦略的に選択されたデバイスをアップグレードすることによって、ＳＤＮのほとんどの利点を維持しながら、ＳＤＮの資本支出を低減するための試みが行われてきた。一方、従来のシステムは、ＳＤＮ対応デバイスを通じてパスを制御するのに有効であるが、レガシースイッチの構成に、結果としてレガシーネットワーク全体に動的に影響を及ぼすことができない。２つのＳＤＮスイッチ間のレガシーネットワークパスは、通常、ＶＬＡＮまたはトンネルを用いて粗く制御されるか、または単にレイヤ２のルーティングプロトコル（例えば、ＳＴＰ、ＥＣＭＰ）の許容範囲に委ねられている。
【０００６】
レガシーレイヤ２ネットワークにおいてパスを決定する一般的な方法は、スイッチに最小スパニングツリー（ＭＳＴ）を構築させ、次に、このスパニングツリーの一部でないリンクをオフにさせることである。ホスト間のパスは、単純に、ツリー内のホスト間のパスである。一方、ネットワークにより計算されたスパニングツリーに依拠することにより、利用可能なパスのダイバーシティが制限され、多くのパスが不要に拡張され、それによってエンドツーエンドのパフォーマンスがマイナスの影響を受ける。ＭＳＴを実行する元々の目的は、ネットワークにおけるループを回避することである。デフォルトにより、スイッチが未知のプロパティを有するパケットを認識したとき、またはスイッチがブロードキャストパケットを受信したとき、スイッチは通常、このパケットを、着信（ｉｎｃｏｍｉｎｇ）インタフェースを除く全てのインタフェース（例えば、ポート）において送信する。一方、ネットワークトポロジがループを含む場合、パケットは継続的に無期限にループする場合がある。
【発明の概要】
【０００７】
相互接続されたコンピュータおよびスイッチの１つまたは複数のハイブリッドネットワークにおいてレガシースイッチルーティングを制御するための、コンピュータによって実施される方法であって、この１つまたは複数のハイブリッドネットワークの物理ネットワークトポロジにわたって最小スパニングツリー（ＭＳＴ）と転送グラフ（ＦＷＧ）とを生成することによって、この１つまたは複数のハイブリッドネットワークのためのネットワークアンダーレイを生成することと、最小コストマッピングを用いて初期パスを最適化することによって、ＦＷＧにおけるホスト間の最適パスを決定することと、１つまたは複数のプログラマブルスイッチにおいて、１つまたは複数のレガシースイッチにおける転送規則のインストールをトリガーするための特殊パケットを生成およびインストールすることによって、最適パスを強制するように初期パスを調整することとを含む、方法。
【０００８】
相互接続されたコンピュータおよびスイッチの１つまたは複数のハイブリッドネットワークにおいてレガシースイッチルーティングを制御するためのシステムであって、この１つまたは複数のハイブリッドネットワークの物理ネットワークトポロジにわたって最小スパニングツリー（ＭＳＴ）と転送グラフ（ＦＷＧ）とを構築するためのネットワークアンダーレイ生成器と、最小コストマッピングを用いて初期パスを最適化することによって、ＦＷＧにおけるホスト間の最適パスを決定するための最適化器と、１つまたは複数のプログラマブルスイッチにおいて、１つまたは複数のレガシースイッチのための転送規則のインストールをトリガーするための特殊パケットを生成およびインストールすることによって、最適パスを強制するためのコントローラとを備えている、システム。
【０００９】
コンピュータ可読プログラムを備えるコンピュータ可読ストレージ媒体であって、このコンピュータ可読プログラムは、コンピュータにおいて実行されると、このコンピュータに、１つまたは複数のハイブリッドネットワークの物理ネットワークトポロジにわたって最小スパニングツリー（ＭＳＴ）と転送グラフ（ＦＷＧ）とを生成することによって、相互接続されたコンピュータおよびスイッチの１つまたは複数のハイブリッドネットワークのためのネットワークアンダーレイを生成するステップと、最小コストマッピングを用いて初期パスを最適化することによって、ＦＷＧにおけるホスト間の最適パスを決定するステップと、１つまたは複数のプログラマブルスイッチにおいて、１つまたは複数のレガシースイッチのための転送規則のインストールをトリガーするための特殊パケットを生成およびインストールすることによって、最適パスを強制するように初期パスを調整するステップとを実行させる、コンピュータ可読ストレージ媒体。
【００１０】
本発明のこれらの利点および他の利点は、以下の詳細な説明および添付の図面を参照することによって、当業者に明らかとなるであろう。
【図面の簡単な説明】
【００１１】
本開示は、以下の図面を参照して、好ましい実施形態の以下の説明において詳細を提供する。
【図１】本原理の一実施形態による、本原理が適用されてもよい処理システムの一例を示す図である。
【図２】本原理の一実施形態による、ネットワークパス更新のための高水準のシステム／方法の一例を示す図である。
【図３】本原理の一実施形態による、ハイブリッドネットワークにおけるスイッチルーティングを制御するための方法の一例を示す図である。
【図４】本原理の一実施形態による、ハイブリッドネットワークにおける初期ネットワークパスおよび更新されたネットワークパスを説明的に示すシステム／方法の一例を示す図である。
【図５】本原理の一実施形態による、ハイブリッドネットワークにおけるスイッチルーティングを制御するためのシステムの一例を示す図である。
【発明を実施するための形態】
【００１２】
本原理は、ハイブリッドネットワークにおけるレガシースイッチおよびプログラマブル（例えば、ＯｐｅｎＦｌｏｗ（商標））スイッチを制御するためのシステムおよび方法を対象とする。特に有用な実施形態では、本原理を利用して、１つまたは複数の仮想端末ネットワーク（ＶＴＮ）によって利用されてもよい物理ネットワークトポロジにわたって１つまたは複数の最小スパニングツリー（ＭＳＴ）および１つまたは複数の転送グラフ（ＦＷＧ）を決定してもよい。リンクごとにＭＳＴを決定するための複数のコスト関数が検討されてもよく、最良の利益／コスト比を有するＭＳＴが選択されてもよい。ＦＷＧを決定するために、生成されたＭＳＴから開始し、プログラマブル（例えば、ＯｐｅｎＦｌｏｗ（商標））スイッチに付随する全てのリンクを加えることによって本原理が利用されてもよい。
【００１３】
一実施形態では、ＦＷＧにおいて、本原理（例えば、貪欲最短パス、多品種フロー問題、ランダム等の方法を用いて）に従って最適化を実行し、ＶＴＮのための最適パスを決定してもよい。次に、決定されたパスは、（例えば、ＳＮＭＰを用いて）ＦＷＧの一部でない全ての物理リンクをオフにすることによって、コントローラによって強制／制御されてもよく、ＦＷＧの一部であるがＭＳＴの一部でない全てのリンクにおけるブロードキャストトラフィックをドロップするために、規則が１つまたは複数のプログラマブル（例えば、ＯｐｅｎＦｌｏｗ（商標））スイッチにおいてインストールされてもよい。本原理の様々な実施形態によれば、次に、トラフィックは、決定された経路に沿って転送されてもよい。
【００１４】
本原理は、プログラマブルスイッチの能力を活用してパスのパフォーマンスおよび／またはダイバーシティを改善することによって、（エンドホスト間のパスの計算に用いられる）１つまたは複数のアンダーレイグラフを向上させてもよい。一実施形態では、本原理によるシステムおよび方法は、ＦＷＧグラフを１つまたは複数のネットワークのレガシー部分においてループなしに保持しておくことによって、ループを回避するためのレガシーネットワークおよびスイッチの要件に適合してもよい。一方、様々な実施形態によれば、スパニングツリーおよびＦＷＧの計算をアプリケーションにアウトソーシングする（このため、これらを分散型ではなく集中型にする）ことによって、本原理を利用して、プロセスの開始時に従来のシステムおよび方法よりも正確な初期ＭＳＴを決定してもよい。
【００１５】
本原理は、様々な実施形態によるハイブリッドデータセンターアーキテクチャにおいて実行されるテナントのためのパフォーマンス改善を提供する。本原理を用いて、従来のシステムおよび方法を用いて可能であるよりも価値のある付加サービス（例えば、１つまたは複数のテナントの仮想マシン（ＶＭ）間の基礎をなすネットワーク通信のパフォーマンスに依拠する）が導入されてもよい。様々な実施形態によれば、本原理をさらに利用して、従来のシステムおよび方法よりも迅速に、かつ低い計算コストで、データセンタネットワークを、レガシースイッチのみのネットワークからレガシースイッチおよびプログラマブルスイッチのハイブリッドネットワーク（またはプログラマブルスイッチのみのネットワーク）へと遷移させてもよい。
【００１６】
一実施形態では、ネットワーク管理フレームワークを利用して、本原理によるプログラマブルスイッチを用いるハイブリッドＳＤＮにおけるレガシーパスに対し、きめの細かいルーティング制御を行ってもよい。レガシースイッチにおけるルーティングエントリを更新するために、本原理は、様々な実施形態に従って単純なプリミティブ（例えば、ＬｅｇａｃｙＦｌｏｗＭｏｄ）を利用してもよい。プログラマブルスイッチ（例えば、Ａ）、レガシースイッチ（例えば、Ｂ）、レガシースイッチにおけるポート（例えば、ｐ）およびｍａｃアドレス（例えば、ｍ）に関する単純なプリミティブ（例えば、ＬｅｇａｃｙＦｌｏｗＭｏｄ）を呼び出すとき、本原理を利用して、プログラマブルスイッチに、（例えば、ソースＭＡＣとしてｍを用いて）特殊なパケットをレガシースイッチにおけるポートｐに送信するように命令してもよい。説明の目的で、ＢがＭＡＣ学習を実行すると仮定してもよく、したがって、Ｂがｍのための自身の転送エントリを更新してもよい。これによって、プログラマブルスイッチおよびＭＡＣ学習を用いてレガシースイッチにおける転送エントリの遠隔操作が可能になる。
【００１７】
一実施形態において、本原理を利用して、ネットワークにフェイクの無害な情報を投入することによって、ネットワークルーティングに間接的に影響を及ぼしてもよい。本原理は、ハイブリッドＳＤＮネットワーク（例えば、レガシースイッチおよびプログラマブルスイッチを含む）においてレイヤ２で機能してもよく、様々な実施形態による高度にきめの細かいレガシーパス制御を提供することによって、パスダイバーシティを改善してもよい。いくつかの実施形態では、全てのネットワークパスが強制されなくてもよい。例えば、ポートｐに対するＭＡＣ  ｍのための転送エントリを更新することは、スイッチがポートｐにおいてアクセス可能であることを必要とする場合がある。このために、ｐは、プログラマブルスイッチに直接接続されてもよく、またはＭＡＣレベルルーティング（例えば、スパニングツリー）を制御するレイヤ２アンダーレイの一部であってもよい。更新のためのパスを与えられると、本原理を利用して、まず、パス上の全てのスイッチについて更新が可能であるか否かをチェックし、次に更新の実行を試行してもよい。
【００１８】
一実施形態において、元のパスをトラバースするデータトラフィックがない場合、一定のオーバヘッド（例えば、新たなパスにおけるレガシースイッチの数に比例するが、必ずしも古いパスにおけるレガシースイッチの数には比例しない）を用いて新たなパス対し構成が更新されてもよい。元のパスにおけるデータトラフィックは、新たなパスにおける全てのスイッチが十分迅速に更新されるわけではない場合、パス更新を上書きしてもよく、このため、いくつかの実施形態では、更新が少なくとも最終的に適用されることを確保するために、本原理に従って、基礎をなすトラフィックのレートに適合してもよく、これに応じて特殊パケットのレートが調整されてもよい。
【００１９】
一実施形態では、本原理を利用して、レガシースイッチインタフェース（例えば、同じハイブリッドネットネットワーク内のＳＤＮスイッチから到達可能である）のための転送エントリを遠隔で構成してもよい。いくつかの実施形態では、単純なプリミティブ（例えば、ＬｅｇａｃｙＦｌｏｗＭｏｄ）に基づいて、本原理によるハイブリッドネットワークコントローラは、ハイブリッドネットワークにおいて展開されるプログラマブルスイッチ（例えば、ＯｐｅｎＦｌｏｗ（商標））のための従来のコントローラよりも、高いダイバーシティおよびきめ細かなパス制御を可能にしてもよい。
【００２０】
本原理を詳細に説明する前に、本原理の様々な実施形態の理解を容易にするために、ハイブリッドネットワークおよびパス強制に関する背景。ハイブリッドネットワークは、プログラマブルスイッチとレガシー（例えば、非プログラマブルスイッチ）との双方を含んでいてもよく、展開するためのコストと、ソフトウェア定義ネットワークを有することから得られる利益とのトレードオフをネットワークプロバイダに提供してもよい。ネットワークプロバイダは、いくつかのプログラマブルスイッチを追加するためにネットワーク全体をアップグレードする必要がないため、プロバイダは、コストが法外に高くなることなく、ＳＤＮによって提供される制御および可視性の向上をうまく利用してもよい。一方、従来のシステムにおける制御の向上は、依然としてＳＤＮ対応（例えば、プログラマブル）デバイスのみに限定されており、いずれの既存のハイブリッドネットワークも、現在のところ、レガシーデバイスの構成を動的に管理する方法を提供していない。このため、従来のシステムおよび方法を用いるＳＤＮスイッチ間のレガシーパスは、手動で（例えば、ＶＬＡＮを用いて）セットアップされなくてはならないか、またはレイヤ２プロトコル（例えば、ＳＴＰ）の監督下に残しておかなくてはならない。
【００２１】
本原理の理解を容易にするために、レガシーネットワークおよびソフトウェア定義ネットワーク（ＳＤＮ）におけるパス強制の短い概観を以下で説明する。
【００２２】
レガシーネットワークにおいて、標準的なレイヤ２のイーサネット（登録商標）スイッチは、２つの主な機能、すなわち、（例えば、宛先ＭＡＣアドレスに向けた次ホップスイッチの）学習および（例えば、学習した情報によるパケットの）転送を実行してもよい。パケットのための次ホップスイッチを学習するために、レイヤ２スイッチは、パケットが到達したポートを除く全てのポートにおいてパケットをブロードキャストする。ループを防止するために、複数のリンクを（例えば、ＳＴＰを用いて）オフにし、（例えば、リンクアグリゲーションを用いて）アグリゲートすることによって、基礎をなすトポロジがスパニングツリーに限定されてもよい。
【００２３】
レガシーネットワークにおいて、特殊ＭＡＣアドレスを用いてパケットを転送するためのポートを学習するために、スイッチはＭＡＣ学習を用いる。すなわち、ソースアドレスｍを有するパケットがポートｐに到達する場合、スイッチは、宛先アドレスを有する任意の未来のパケットがｐを通じて送達され得ると仮定する。パケットのパスは静的であってもよく、ネットワークにおいてトポロジまたは構成の変化が存在する場合にのみ変化してもよい。パスダイバーシティを増大させるために、オペレータは、ネットワークを、各々が独自のスパニングツリーおよび転送エントリの組を有する複数のＶＬＡＮにスライスしてもよい。一方、ブロードキャストループを防止するためにスパニングツリーを用いることによって、パス選択の柔軟性が制限され（例えば、実現可能なパスがスパニングツリーリンクを含まなくてはならないため）、ネットワークパフォーマンスが制限される（パスがはるかに必要以上に長くなる場合があるため）。
【００２４】
ソフトウェア定義ネットワーク（ＳＤＮ）では、オペレータ（またはプログラム）は、特殊化されたプロトコル（例えば、ＯｐｅｎＦｌｏｗ（商標））を用いて論理的に集中型のコントローラからそれらの転送エントリを遠隔で変更してもよい。このため、スイッチは、負荷のかかるブロードキャストまたは複雑な構成を必要とすることなく、未知の宛先およびルーティングポリシーに関して学習してもよい。レガシーネットワークと異なり、ＳＤＮは、トポロジ全体にわたって明示的なかつ高速なパス制御を提供する。ネットワークの全てのスイッチがプログラマブルＳＤＮスイッチである場合、スイッチに明示的な規則を付加して、ホスト間に任意のパスをセットアップし、これによってレガシーネットワークにわたってパス選択の柔軟性およびネットワークパフォーマンスの双方を改善してもよい。
【００２５】
ハイブリッドネットワークにおいて、本原理の様々な実施形態に従って、（例えば、パス選択およびネットワークパフォーマンスに関して）ＳＤＮの利点のうちのいくつかが保持されてもよい。例えば、ネットワークにおけるレガシースイッチが、プログラマブルスイッチと交換される場合、本原理を利用してプログラマブルスイッチを制御してもよい。本原理によれば、一実施形態では、新たなパスが決定され、プログラマブルスイッチから（または遠隔で）制御されてもよく、スイッチはネットワーク内の制御点として利用されてもよい。一実施形態では、ネットワークに別の制御点を加えることによって、最適パスが決定され、スイッチにおいて（または遠隔で）制御されてもよい。本原理の一実施形態によれば、レガシースイッチにおける転送エントリを遠隔で構成するためのレガシースイッチにおける専用プロトコル（例えば、ＯｐｅｎＦｌｏｗ（商標））および学習機能を用いて、パス上のプログラマブル（例えば、ＯｐｅｎＦｌｏｗ（商標））スイッチおよびレガシースイッチの双方を制御することによって、パスが完全に制御されてもよい。
【００２６】
本明細書において説明される実施形態は、完全にハードウェアであってもよく、ハードウェア要素およびソフトウェア要素の双方を含んでもよいことを理解するべきである。ソフトウェア要素は、限定ではないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含む。好ましい実施形態では、本発明はハードウェアにおいて実装される。本発明は、システム、方法および／またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるための、コンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体を含んでいてもよい。
【００２７】
実施形態は、コンピュータもしくは任意の命令実行システムによってまたはこれらと接続して用いるためのプログラムコードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品を含んでいてもよい。このコンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置またはデバイスによってまたはこれらと接続して用いるためのプログラムを記憶、通信、伝搬またはトランスポートする任意の装置を含んでいてもよい。この媒体は、磁気、光、電子、電磁、赤外、もしくは半導体システム（または装置もしくはデバイス）または伝搬媒体であり得る。この媒体は、半導体もしくはソリッドステートメモリ、磁気テープ、取り外し可能コンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、剛性磁気ディスクおよび光ディスク等のコンピュータ可読ストレージ媒体を含んでいてもよい。
【００２８】
プログラムコードを記憶および／または実行するのに適したデータ処理システムが、システムバスを通じてメモリ要素に直接または間接的に結合された少なくとも１つのプロセッサを含んでいてもよい。メモリ要素は、実行中にバルクストレージからコードが取り出される回数を低減するために少なくとも何らかのプログラムコードの一次ストレージを提供する、プログラムコードの実際の実行中に用いられるローカルメモリ、バルクストレージおよびキャッシュメモリを含むことができる。入出力、すなわちＩ／Ｏデバイス（限定ではないが、キーボード、ディスプレイ、ポインティングデバイス等を含む）が、直接、または介在するＩ／Ｏコントローラを通じてシステムに結合されてもよい。
【００２９】
ネットワークアダプタもシステムに結合され、データ処理システムが、他のデータ処理システムまたは遠隔のプリンタもしくはストレージデバイスに、介在するプライベートネットワークまたは公衆ネットワークを通じて結合されることを可能にしてもよい。モデム、ケーブルモデムおよびイーサネット（登録商標）カードは、現在利用可能なタイプのネットワークアダプタのほんの数例にすぎない。
【００３０】
次に、類似の符号が同じまたは同様の要素を表す図面を参照し、最初に図１を参照すると、本原理の一実施形態による、本原理が適用されてもよい処理システム１００の一例が、実例として示されている。処理システム１００は、システムバス１０２を介して他のコンポーネントに動作的に連結される少なくとも１つのプロセッサ（ＣＰＵ）１０４を備える。キャッシュ１０６、リードオンリーメモリ（ＲＯＭ）１０８、ランダムアクセスメモリ（ＲＡＭ）１１０、入出力（Ｉ／Ｏ）アダプタ１２０、サウンドアダプタ１３０、ネットワークアダプタ１４０、ユーザインタフェースアダプタ１５０、およびディスプレイアダプタ１６０が、システムバス１０２に動作的に連結される。
【００３１】
第１のストレージデバイス１２２および第２のストレージデバイス１２４は、Ｉ／Ｏアダプタ１２０によってシステム１０２に動作的に連結される。ストレージデバイス１２２および１２４は、ディスクストレージデバイス（例えば、磁気または光ディスクストレージデバイス）、ソリッドステート磁気デバイス等のうちの任意のものであり得る。ストレージデバイス１２２および１２４は、同じタイプのストレージデバイスまたは異なるタイプのストレージデバイスであり得る。
【００３２】
スピーカ１３２は、サウンドアダプタ１３０によってシステムバス１０２に動作的に連結される。トランシーバ１４２は、ネットワークアダプタ１４０によってシステムバス１０２に動作的に連結される。ディスプレイデバイス１６２は、ディスプレイアダプタ１６０によってシステムバス１０２に動作的に連結される。
【００３３】
第１のユーザ入力デバイス１５２、第２のユーザ入力デバイス１５４、および第３のユーザ入力デバイス１５６は、ユーザインタフェースアダプタ１５０によってシステムバス１０２に動作的に連結される。ユーザ入力デバイス１５２、１５４および１５６は、キーボード、マウス、キーパッド、画像捕捉デバイス、動き検知デバイス、マイクロフォン、上記のデバイスのうちの少なくとも２つのデバイスの機能を組み込むデバイス等のうちの任意のものであり得る。当然ながら、本原理の趣旨を維持しながら、他のタイプの入力デバイスを用いることもできる。ユーザ入力デバイス１５２、１５４および１５６は、同じタイプのユーザ入力デバイスまたは異なるタイプのユーザ入力デバイスであり得る。ユーザ入力デバイス１５２、１５４および１５６は、システム１００に情報を入力し、システム１００から情報を出力するのに用いられる。
【００３４】
当然ながら、処理システム１００は、当業者に容易に予期されるように、他の要素（図示せず）も含んでいてもよく、いくつかの要素を省いてもよい。例えば、当業者によって容易に理解されるように、処理システム１００の特定の実施に依拠して、様々な他の入力デバイスおよび／または出力デバイスを処理システム１００に含めることができる。例えば、様々なタイプの無線および／または有線入出力デバイスを用いることができる。さらに、当業者によって容易に理解されるように、様々な構成において、追加のプロセッサ、コントローラメモリ等も利用することができる。処理システム１００のこれらの変形形態および他の変形形態は、本明細書において提供される本原理の教示を与えられた当業者によって容易に予期される。
【００３５】
さらに、以下でそれぞれ図２、図４Ａ、図４Ｂおよび図５に関して説明したシステム２００、４００、４０２および５００は、本原理のそれぞれの実施形態を実施するためのシステムであることを理解されたい。処理システム１００の一部または全てが、システム２００、４００、４０２および５００のうちの１つまたは複数において実装されてもよい。
【００３６】
さらに、処理システム１００が、例えば、それぞれ図２、図３、図４Ａおよび図４Ｂの方法２００、３００、４００および４０２の少なくとも一部を含む、本明細書において説明される方法の少なくとも一部を実行してもよいことを理解されたい。同様に、システム２００、４００、４０２および５００の一部または全てを用いて、それぞれ図２、図３、図４Ａおよび図４Ｂの方法２００、３００、４００および４０２の少なくとも一部を実行してもよい。
【００３７】
次に図２を参照すると、本原理の一実施形態による、ネットワークパス更新のための高水準のシステム／方法２００の一例が実例として示されている。一実施形態では、説明のために、本原理を、プログラマブルスイッチとレガシースイッチとの双方を有するレイヤ２のハイブリッドネットワークの観点で説明する。プログラマブルスイッチは、様々な方法（例えば、ＯｐｅｎＦｌｏｗ（商標））を用いて制御されてもよいが、従来のシステムおよび方法は、転送エントリのためのレガシースイッチを更新することができない。転送エントリは、宛先ＭＡＣアドレスｍと、宛先ＭＡＣがｍであるパケットに適用されるアクション（例えば、「ポートに送信」、「ドロップ」等）を含んでいてもよい。この説明のために、各レガシースイッチがＭＡＣ学習を実行し、レガシーネットワークが、（例えば、ＳＴＰを用いて）ルーティングループを回避するように（手動または自動で）構成されることが仮定されてもよい。この構成後の結果として生じるレガシーリンクのコレクションは、ネットワークアンダーレイと呼ばれることもあり、このネットワークアンダーレイは、ツリー、または複数のツリー（例えば、ツリーの集合）を含んでいてもよい。
【００３８】
一実施形態では、初期構成パスＰ２０２（例えば、１つまたは複数のリンク２０６によって接続されるハイブリッドネットワークにアタッチされたホストＡ２２０およびＢ２３０間のスイッチのシーケンス）が与えられると、本原理を利用して、Ａ２２０とＢ２３０との間のパスをＰ２０２からＰ’２０４に変更することによって、新たな更新されたパスＰ’２０４を制御および強制してもよい。本原理によれば、一実施形態では、初期構成パスＰ２０２は、スイッチ２０１、２０３、２０５、２０７および２０９を用いることができ、所望の更新パスＰ’２０４はスイッチ２０１、２１０、２０３、２０４、２１２および２０９を用いることができる。一実施形態では、スイッチ２０１、２０３、２０５、２０７、２０９、２１０および２１２は、１つまたは複数のリンク２０６によって他のスイッチおよび／またはホスト２２０、２３０に相互接続されてもよい。一実施形態では、プログラマブルスイッチが制御され、新たなパスにおいて特殊パケットをレガシースイッチに送信するように命令されてもよく、これらのパケットは、ＭＡＣ学習をうまく利用して、レガシースイッチを操作し、これらのレガシースイッチのルーティングテーブルにおける転送エントリ（例えば、単一の転送エントリ）を更新させてもよい。
【００３９】
例えば、一実施形態では、ＭＡＣｍのためのルーティングエントリのアクションを「ポートｐ１に送信」から「ポートｐ２に送信」に変更するために、ソースアドレスｍを用いて特殊パケットが生成されてもよく、このパケットがポートｐ２においてスイッチ（例えば、スイッチ２０１）に送信されてもよい。ＭＡＣ学習方法は、ｐ２に到達するパケットを認識し、このパケットのソースアドレスｍがｐ２に到達可能であることを仮定してもよく、したがって対応する転送エントリを更新してもよい。一実施形態では、Ｐ２０２をＰ’２０４に更新することは、Ｐ２０２上にないＰ’２０４上の全てのスイッチを更新し、２つのパスが分岐および収束する全てのスイッチを更新することによって行われてもよい。例えば、スイッチ２０５への／からのパスは現在更新されていないため、スイッチ２０５以外の全てのスイッチが更新されてもよい。更新サブパスは、パス変更中に更新されてもよい隣接するスイッチのシーケンスであることに留意されたい。本原理の一実施形態によれば、図２において、スイッチ２０１、２１０および２０３、ならびにスイッチ２０７、２１２および２０９は、サブパスを表す。
【００４０】
一実施形態では、レガシースイッチの転送テーブルを遠隔で操作するために利用される全ての特殊パケット（例えば、リンク情報、ＳＮＭＰ、ピング情報等を含む）は、インストールされることになる新たなパスＰ２０４の一部であるリンク上のスイッチに到達する。これにより、パスＰ’が満たしてもよい２つの条件を導くことができ、これらの条件を満たした後、パスＰ’が強制されてもよい。一実施形態では、第１の条件は、パスＰ’２０４上の全てのレガシーリンク（例えば、少なくとも１つのレガシースイッチをエンドポイントとして有するリンク）が、レガシーレイヤ２ネットワークアンダーレイ（例えば、スパニングツリー）の一部であってもよく、またはプログラマブル（例えば、ＯｐｅｎＦｌｏｗスイッチ、スイッチ２１０）に隣接してもよいというものである。これによって、パスＰ’２０４上の各レガシーリンクが、プログラマブルスイッチ２０６から到達可能であることが確実にされる。一実施形態では、第２の条件は、Ｐ’の各更新サブパスが、少なくとも１つのプログラマブルスイッチ２１０を含んでいてもよいというものであってもよい。なぜなら、本原理によれば、プログラマブルスイッチ２１０を利用して、更新サブパスがレイヤ２アンダーレイの一部である場合であっても、パスＰ’２０１４のリンク部分を通じて、この更新サブパスにおけるスイッチに到達する特殊パケットを送信してもよいためである。
【００４１】
次に図３を参照すると、本原理の一実施形態に従って、ハイブリッドネットワークにおけるスイッチルーティングを制御するための方法３００の一例が実例として示されている。本原理によれば、一実施形態では、ブロック３０１において入力データが受信されてもよく、この入力データは、物理ネットワークトポロジデータ、仮想マシン（ＶＭ）ロケーション等）を含んでいてもよい。ブロック３０４において、入力データ３０１を利用して、ネットワークアンダーレイを決定（計算）してもよい。
【００４２】
本原理によれば、一実施形態では、ブロック３０４におけるネットワークアンダーレイ決定は、２つのサブグラフ、すなわち、ブロードキャストツリーグラフ３０６および転送グラフ３０８の決定を含む。一実施形態では、ブロードキャストツリー３０６は、ブロードキャストパケットを送信するために用いることができるリンクの組を含んでいてもよい。転送グラフ３０８は、ユニキャストパケットとブロードキャストパケットとの双方を送信するために用いられるリンクの組であってもよい。ブロードキャストツリー３０６は、転送グラフのサブセットであってもよい。ブロードキャストツリー３０６と転送グラフ３０８との双方を決定することによって、本原理を利用して、転送の学習を分離してもよい。通常、レイヤ２ネットワークは、スパニングツリー検出アルゴリズムを実行して、ユニキャストとブロードキャストとの双方の転送のために用いることができる実現可能なパスの組を計算し、この組の一部でない全てのリンクをオフにする。一方、これにより、通信に利用可能なパスが制限され、選択されたリンクに更なるストレスが課される。本原理によれば、ブロードキャストに用いることができるリンクを、ユニキャストのみに用いることができるリンクと分離することによって、通信のために利用可能なパス数が従来のシステムおよび方法に対して増大する。
【００４３】
本原理によれば、一実施形態では、ブロック３０６において所与のネットワーク（例えば、仮想端末ネットワーク（ＶＴＮ）のためのブロードキャストツリーが決定されてもよく、これを利用して（例えば、スイッチ、エンドホスト等によって生成された）ブロードキャストパケットを送信してもよい。
【００４４】
一実施形態では、セットアップコストは、ＶＴＮ仮想トポロジの一部としてリンクをセットアップするために被るコストであり、リンクが入る２つのスイッチを構成するために被るコストを反映する。説明の目的で、この例示的なネットワークにおいて２つのタイプのスイッチ、すなわちプログラマブルスイッチおよびレガシースイッチが検討される。ＶＴＮのためのトラフィックを転送するためにプログラマブルスイッチ（例えば、ＯｐｅｎＦｌｏｗ（商標））を構成することは、ＶＴＮトラフィックのための転送規則をスイッチに追加することを含んでいてもよい。様々な実施形態によれば、レガシースイッチを構成することは、ＶＴＮに関連付けられたＶＬＡＮを構成することを含んでいてもよく、レガシースイッチは、転送規則を自動的に学習してもよい。
【００４５】
一実施形態において、ブロック３０４におけるブロードキャストツリー決定中にリンクのセットアップコストを設定するために、特定のリンクが入るスイッチが更新される。例えば、プログラマブルスイッチごとに、特定のプロトコル（例えば、ＯｐｅｎＦｌｏｗ（商標））を用いて１つまたは複数の転送エントリが変更されてもよく、レガシースイッチごとに、新たなＶＬＡＮが定義されてもよい。一般に、ＯｐｅｎＦｌｏｗスイッチにおいて転送エントリを更新するコストは、レガシースイッチにおいてＶＬＡＮをセットアップするコストよりも低い。ａ１およびａ５は、セットアップコスト（例えば、各スイッチを更新する構成コスト）を表すことに留意されたい。プログラマブルスイッチごとに、ａ１が追加されてもよく、レガシースイッチごとに、ａ５が追加されてもよく、ここで、ａ１およびａ５の値は、スイッチの厳密なタイプに依拠し、一般に、ａ１はａ５よりも小さい。ａ１およびａ５は各スイッチを更新する構成コストを表すことに留意されたい。
【００４６】
一実施形態では、リンクのロケーションコストは、リンクが、このリンクが通信を提供するホスト（例えば、ＶＭマシン）のロケーションに対し、どれだけ近いかを表す。リンクのロケーションコストを決定するために、隣接するスイッチをチェックしてもよく、ＶＴＮがＶＭ（例えば、ａ３＝０．５）を有するサーバに直接接続されたスイッチごとに、ａ３を加算してもよい。ａ３が、リンクのロケーションコストの値を表すことに留意されたい。ａ１およびａ５と同様に、ａ３は単位を有せず、３つ全てのコストが（例えば、０と１との間で）正規化されている限り、単位は無関係である。本原理によれば、１つのタイプのコストにより大きな重要性を与えるために、重みｗ１、ｗ２および／またはｗ３が利用されてもよい。
【００４７】
一実施形態では、各リンクの最終コストは、以下の方法によって決定されてもよい。
Ｃｏｓｔ（ｌｉｎｋ）＝ｗｌ＊ｓｅｔｕｐ（ｌｉｎｋ）＋ｗ２＊ｏｐｅｒａｔｉｏｎ（ｌｉｎｋ）＋ｗ３＊ｌｏｃａｔｉｏｎ（ｌｉｎｋ）
ここで、ｗ１、ｗ２およびｗ３は、リンクの全体コストを決定する際のコストのタイプ（ｔｏｐｅ）の各々の重要度を決定してもよい重みである。ｗ１、ｗ２およびｗ３の値は、ネットワーク内のリンクの様々なコスト分布を決定するように変更されてもよく、したがって、本原理の一実施形態によれば、これらを利用して、ブロック３０６におけるブロードキャストツリー決定中に複数の最小スパニングツリーを決定してもよい。
【００４８】
一実施形態では、ブロック３０４におけるアンダーレイ決定は、物理トポロジに対応するグラフのための複数の最小スパニングツリーを決定し、ブロードキャストツリーとして「最良の」ツリー（ここで、「最良」とは、以下で説明するいくつかのコストメトリックに従って定義される）を選択することを含んでいてもよい。グラフは、単一の最小スパニングツリー（全てのリンクコストが異なると仮定する）を含んでいてもよいため、各リンクのコストが決定される方法を変更することによって、複数のスパニングツリーが生成されてもよい。検討されるコストは、例えば、セットアップコスト、動作コストおよび／またはロケーションコストを含んでいてもよい。
【００４９】
一実施形態では、ブロック３０６において、可能なＭＳＴの組を決定した後、最適なＭＳＴが選択されてもよい。これは、要求されたＶＴＮ需要および／または以下の５つのコスト−利益メトリックのうちの１つまたは複数に従って行われる。コスト−利益メトリックはすなわち、（１）ＶＴＮ内の全てのＶＭ対ＶＭの対についてのスイッチホップの平均数を含んでいてもよい平均ホップカウント、（２）構成される全てのスイッチについての平均セットアップ時間を含んでいてもよい平均セットアップコスト、（３）全てのＶＭ対ＶＭパスについての平均利用量を含んでいてもよい平均パス利用量、（４）全てのＶＭ対ＶＭパスについての、パス利用量とスイッチホップ数との積を含んでいてもよい、平均帯域幅遅延積、（５）少なくとも１つのＶＴＮのためのトラフィックを搬送する全てのリンクについてのＶＴＮの平均数を含んでいてもよいＶＴＮ／リンクの平均数（このメトリックは、ネットワーク内に埋め込まれた複数のＶＴＮが存在するときに適用される）、である。上記のメトリックが上記で説明されたが、本原理の様々な実施形態に従って、ブロック３０６において任意のネットワークメトリックを用いることができることが予期されることに留意されたい。
【００５０】
一実施形態では、ブロック３０６において決定されるブロードキャストツリーは、ブロードキャストパケットを送信することができるリンクの組を含んでいてもよい。レガシーネットワーク（通常、スイッチを制御することができないことに起因する）では、リンクにおいてブロードキャストを停止する唯一の方法は、リンクを完全にオフにすることである。一方、このアクションの副次的影響は、リンクをユニキャストトラフィックにも用いることができないことである。本原理を利用して、パケットがどこでプログラマブルスイッチを用いて転送されるかを制御してもよい。プログラマブルスイッチを用いて、特定のプログラマブルスイッチのための転送テーブルにおいて特定の規則をインストールすることによって、ユニキャストを可能にしながら、ブロードキャストが停止されてもよい。
【００５１】
ブロック３０８において、１つまたは複数の転送グラフが決定／構築されてもよく、この転送グラフは、物理ネットワークトポロジに対応してもよい。ブロック３０８における転送グラフの構築は、ブロック３０６から、入力としてブロードキャストツリーを受信してもよく、隣接する全てのリンクをプログラマブルスイッチに加えてもよい。一実施形態では、リンクの両端プログラマブルスイッチの転送テーブル内に規則をインストールすることによって、これらのリンクにおいてブロードキャストが制御されてもよく、かつ自由にユニキャストを可能にするように制御されてもよく、このため、２つのホスト間で利用可能なパスのダイバーシティが、従来のシステムおよび方法と比較して増大する。本原理によれば、いくつかの実施形態では、ブロック３０８において、転送ツリーグラフが構築されてもよく、これは、ブロック３０６において決定された全てのツリーのための転送グラフを構築することによって行われる。
【００５２】
一実施形態では、中間出力３０３（例えば、ブロードキャストツリー、転送グラフ、施行規則等）およびＶＴＮトラフィック需要３１１が、ブロック３１０におけるパス選択／検証のための入力として用いられてもよい。本原理によれば、ブロック３１２において、最適化を実行して、ブロック３０８において決定された転送グラフにおける２つのホスト間の最適パスを決定してもよい。
【００５３】
例示的な実施例では、ブロック３１２における最適化は、多品種フロー問題の特殊な事例である、１品種１パスフロー問題（ＵＦＰ）最適化を利用して、最適パスを決定してもよいが、本原理に従って他の最適化方法が利用されてもよい。一実施形態では、ＵＦＰは、入力としてＶＴＮトラフィック需要を利用してもよく、各ＶＴＮフロー（例えば、ＶＭ対ＶＭ通信）を、１つまたは複数の制約が満たされるようにトポロジ内のパスにマッピングしてもよい。いくつかの実施形態では、制約は、容量制約（例えば、リンク上のフローの総需要がリンク容量を超えない）、フロー保存（例えば、ノードに入るフローの総需要は、ノードを出るフローの総需要に等しい）、および需要満足（例えば、フローの総需要が、フローがマッピングされるパスによって満たされる）を含んでいてもよいが、本原理に従って他の制約も利用されてもよい。
【００５４】
一実施形態では、ブロック３１２における最適化を利用して、最小コストマッピングを決定してもよい。ここで、マッピングのコストは各リンクコストの和である。リンクコストは、リンクにわたってフローを送信するコストを捕捉し、リンクのセットアップコスト（例えば、ＶＴＮがマッピングされるとき、１つの時間コスト）およびリンクを動作させるコストに依拠してもよい。ブロック２１２における最適化中にＶＴＮ需要が検討されているため、最適化において用いられるリンクコストは、ブロック３０４におけるアンダーレイ決定中に最小スパニングツリーを決定するのに用いられるリンクコストと異なる場合がある。
【００５５】
例示的な実施例では、ブロック３１２における最適化中、変数（例えば、ｗ４）は、より高速な構成またはより高速な動作に対するオペレータまたは顧客のプリファレンスを表すことができる。より高速な構成が好ましい場合、セットアップコストはより重要であり、セットアップコストの低い（例えば、レガシースイッチがより少ない）パスを見つけるためにブロック３１２の最適化が用いられてもよい。そうではなく、より高速な動作が好ましい場合、ブロック３１２における最適化は、（例えば、利用可能な帯域幅の観点から）より高速なパスを決定する。リンクのコストは、以下の方法を用いて決定されてもよい。
ｗ４！＝０かつｗ４！＝１の場合、Ｃｏｓｔ（ｌｉｎｋ）＝（ｗ４＊ｓｅｔｕｐ（ｌｉｎｋ））／（（１−ｗ４）＊ｏｐｅｒａｔｉｏｎ（ｌｉｎｋ））＊ｆ＿ｉ（ｌｉｎｋ）
ｗ４＝１の場合、Ｃｏｓｔ（ｌｉｎｋ）＝ｗ４＊ｓｅｔｕｐ（ｌｉｎｋ）＊ｆ＿ｉ（ｌｉｎｋ）
Ｃｏｓｔ（ｌｉｎｋ）＝１／（（１−ｗ４）＊ｏｐｅｒａｔｉｏｎ（ｌｉｎｋ））＊ｆ＿ｉ（ｌｉｎｋ）
ここで、Ｆ＿ｉ（ｌｉｎｋ）は、本原理によるリンクを通じたＶＭ対ｉの需要を表す。
【００５６】
一実施形態では、ブロック３１０におけるパス選択中にパス検証が行われてもよい。例示的な実施例では、更新されたパスＰ’および現在のネットワーク構成を与えられると、ブロック３１０におけるパス検証は、特定のネットワークにおいてＰ’が実現可能であるか否かを判断してもよい。ブロック３１０におけるパス検証は、まず、パスＰ’における全てのレガシーリンクがレガシーレイヤ２のネットワークアンダーレイの一部であるか、またはプログラマブルスイッチに隣接していることを検証してもよい。次に、本原理を利用して、少なくとも１つのスイッチがプログラマブルである（例えば、ＯｐｅｎＦｌｏｗ（商標）に対応している）か否かを検証してもよい。これらの条件が検証される場合、（例えば、少なくとも１つのプログラマブルスイッチで開始または終了するサブパスのための）１つまたは複数のプログラマブルスイッチにおける転送エントリが更新されるか、またはプログラマブルスイッチを用いてメッセージ（例えば、ＬｅｇａｃｙＦｌｏｗＭｏｄ）メッセージが（例えば、アンダーレイのレガシーリンク部分について）送信される。
【００５７】
一実施形態では、ブロック３１０におけるパス検証は、パスの実現可能性を検証するための以下の方法に従って実行されてもよい。
【表１】
0006271039.tif 000002
【００５８】
一実施形態では、レガシースイッチにおける転送エントリ更新をサポートするために、ブロック３１０におけるパス選択はパス更新を含んでいてもよく、更新されるパスは、ブロック３１３において出力され、ブロック３１３におけるパス強制のための入力として用いられてもよい。本原理によれば、一実施形態では、新たなプリミティブ（例えば、ＬｅｇａｃｙＦｌｏｗＭｏｄ）を導入して、特殊パケットを生成し、制御されることになるスイッチに送信してもよい。これらのパケットのヘッダにおいて施行されてもよい規則は、それらのソースＭＡＣアドレスが、調整されることになる転送エントリに関連付けられたＭＡＣと同じであるべきであることである。一方、ネットワークに対する副次的影響を制限するために、ＡＲＰパケットが利用されてもよい（なぜなら、ＡＲＰパケットはローカルホストおよびスイッチにおいてＡＲＰキャッシュの更新しか行わないためである。
【００５９】
一実施形態では、本原理によれば、特殊パケットを送信するために、制御されている任意のプログラマブルスイッチの使用により特定のデータプレーンにおいてパケットを挿入することを可能にする、プログラマブルスイッチの機能（例えば、ＯｐｅｎＦｌｏｗ（商標）ＰａｃｋｅｔＯｕｔ機能）が利用されてもよい。一実施形態では、ブロック３１０におけるパス更新は、以下の方法に従って実行されてもよい。
【表２】
0006271039.tif 000003
【００６０】
一実施形態では、ブロック３０４および３１１において決定されるパスは、本原理に従って、ブロック３１４におけるパス強制によってインストール／強制されてもよい。本原理によれば、ブロック３１４におけるパス強制は、ブロック３１３から入力を受信してもよく、ブロック３１６におけるブロードキャスト回避および／またはブロック３１８における最適化構成を含んでいてもよい。
【００６１】
ブロック３１６において、ブロードキャスト回避は、ネットワーク内の全てのループが少なくとも１つのプログラマブルスイッチを含むことを確保することによって実行されてもよい。いくつかの実施形態によれば、ブロック３０８において決定される転送グラフの一部でない物理ネットワーク内の全てのリンクはオフにされてもよい。一実施形態では、全てのそのようなリンクはレガシースイッチ間にあり、ほとんどのレガシースイッチはＳＮＭＰ対応であるため、例えばＳＮＭＰを用いて停止させることができる。
【００６２】
一実施形態によれば、ブロック３１２において実行される最適化に従ってパスを構成することによって、ブロック３１８において最適化構成を実行してもよい。プログラマブルスイッチの場合、これらのプログラマブルスイッチの転送テーブルに対応する規則がインストールされてもよく、レガシースイッチの場合、ブロック３０８において決定された転送グラフ内のポートにマッピング（例えば、ＶＬＡＮマッピング）が加えられてもよい。一実施形態では、最適化は、最適化規則がブロック３１８においてインストールされているときに、ネットワークを準備することを含んでいてもよい。プログラマブルスイッチの、ネットワークにパケットを送信する機能、およびレガシースイッチの、転送エントリをリアルタイムで学習する機能を用いて、ダミーパケットを生成し、レガシースイッチが異なるパスを辿ることを可能にしてもよい。本原理によれば、一実施形態では、ブロック３１４からの出力を用いて、ブロック３２３における新たなパスに沿ったＶＴＮ通信を可能にしてもよい。
【００６３】
例えば、レガシースイッチＤおよびＢ間のフローが、パスＤ−Ｆ−Ｂ上にマッピングされたと仮定すると（ここで、Ｆはプログラマブルスイッチである）、スイッチＤは、別のレガシースイッチＣではなくＦにフローを転送することを知らない場合がある。従来のシステムおよび方法は、全てのポート上のフローの第１のパケットをブロードキャストし、最終的に、スイッチＣから、Ｃを通じてＢに到達することができることを知らせる応答を受信する。本原理は、ブロードキャストがリンクＦ−Ｂにおいて伝搬されないことを確実にしたので、ＤはＦから同様の応答を受信しないことに留意されたい。
【００６４】
ネットワークにおける上記のような発生を防止するために、ブロック３１８における最適化構成中にブロック３１３から最適化規則をインストールする際にネットワークが準備されてもよい。パケットをネットワークに送信するプログラマブルスイッチの機能、および転送エントリをリアルタイムで学習するレガシースイッチの機能を用いて、本原理は、スイッチＤに、プログラマブルスイッチＦを通じてスイッチＢに到達することができることを信じさせることができる。これを達成するために、ブロック３１８において、プログラマブルスイッチＦにおいて、ソースＢと宛先Ｄとを有するダミーパケットが生成されてもよい。本原理によれば、一実施形態において、例えば、ＰａｃｋｅｔＯｕｔ  ＯｐｅｎＦｌｏｗ（商標）メッセージを用いてダミーパケットがスイッチＤに送信されてもよい。様々な実施形態によれば、スイッチＤがスイッチＦへのリンク上でダミーパケットを受信するとき、スイッチＤはソースをスイッチＢとみなすことができ、次に、スイッチＦを通じてスイッチＢに到達するパスを含めて独自の転送テーブルを記録してもよい。
【００６５】
次に図４を参照すると、本原理の一実施形態による、ハイブリッドネットワークにおける初期ネットワークパス４０３および更新されたネットワークパス４１３を示すシステム／方法４００の一例が実例として示されている。一実施形態では、ホストＳ４０１とホストＤ４０５との間の初期パス４０３（太線のパスによって表される）がハイブリッドネットワークについて実例として示されている。この例示的な実施例では、レガシースイッチ４０２、４０４、４０６、４０８および４１０がネットワークトポロジに含まれていてもよく、プログラマブルスイッチ４１２もネットワークトポロジに含まれていてもよい。一実施形態では、更新されたパス４１３が決定されてもよく、本原理を利用して、更新されたパス４１３にわたって送信を制御してもよい。
【００６６】
例示的な実施形態では、ホストＳ４０１とホストＤ４０５との間のパスは、最初に、スイッチ４０４、４１２および４１０を含んでおり、所望の更新されたパスは、スイッチ４０４、４０６、４１２および４２０を含んでいてもよい。この更新を達成するために、スイッチ４０４における転送エントリが（例えば、スイッチ４１２ではなくスイッチ４０６にホストＤ４０５のためのパケットを転送するように）変更されてもよく、スイッチ４０６における転送エントリが（例えば、スイッチ４０４ではなくスイッチ４１２にホストＤ４０５のためのパケットを転送するように）変更されてもよい。
【００６７】
一実施形態では、本原理を利用して、機能（例えば、ＬｅｇａｃｙＦｌｏｗＭｏｄ）を用いて、特殊パケットを制御し／プログラマブルスイッチ４１２からレガシースイッチ４０６に送信してもよい。パケットは、自身のソースＭＡＣアドレスとしてホストＤ４０５のアドレスを含んでいてもよく、着信インタフェースに従ってスイッチ４０４および４０６のスイッチの転送テーブルを更新するように、これらのスイッチにおける学習方法をトリガーしてもよい。いくつかの実施形態では、パスを更新するとき、逆のパスが自動的に更新されてもよい。説明を簡単にするために、逆のパスの変更の詳細については説明しないが、これは、様々な実施形態による転送パス変更と同様にして行われてもよい。
【００６８】
図４に示す例示的なネットワークでは、スイッチ４０４、４０６および４１２を含むサブパスはプログラマブルスイッチ（例えば、４１２）で開始または終了するため、転送エントリは、スイッチ４１２において、スイッチ４０６と４１２とを含むリンクにおけるトラフィックをホストＤ４０５からホストＳ４０１にリダイレクトするように更新されてもよい。一実施形態では、次に、スイッチ４０４は、スイッチ４０６から１つまたは複数のデータパケットを受信した後に、転送エントリを、ホストＤ４０５のための未来のパケットをスイッチ４０６に転送するように変更してもよい。本原理の様々な実施形態によれば、上記のネットワーク構成は、説明を単純にするために、限られた数のスイッチ、ホストおよびパスを用いて示されているが、任意の数のスイッチ、ホストおよびパスが利用されてもよいことに留意されたい。
【００６９】
次に図５を参照すると、本原理の一実施形態による、ハイブリッドネットワークにおけるスイッチルーティングを制御するためのシステム５００の一例が実例として示されている。本原理の様々な実施形態によれば、コントローラ５１２がバス５０１に接続されてもよく、コントローラ５１２を利用して、それぞれ図２、図３、図４および図５における制御システム１００、３００、４００および／または５００に加えて、それぞれ図２、図３および図４の方法２００、３００および／または４００の全てまたは一部を制御してもよい。いくつかの実施形態では、コントローラ５１２は、本原理によるハードウェア論理回路であってもよい。
【００７０】
説明のために、および明確にするために、システム５００の多くの態様を単数形で説明しているが、システム５００の説明に関して上述したアイテムが複数であっても同じことを適用することができる。例えば、単一のスイッチ５１６を説明しているが、本原理の趣旨を保ちながら、本原理の教示に従って２つ以上のスイッチ５１６を用いることができる。さらに、スイッチ５１６は、システム５００に関与する１つのみの態様ではなく、本原理の趣旨を保ちながら、複数形に拡張してもよい。
【００７１】
システム５００は、本原理の様々な実施形態による、決定器５０２、検証機５０４、パス選択器５０６、最適化器５０８、更新器５１０、コントローラ／エンフォーサ５１２、ストレージデバイス５１４および／またはスイッチ５１６を含むことができる。
【００７２】
一実施形態では、決定器５０２は、本原理によるアンダーレイネットワーク決定、ブロードキャストツリー決定および／または転送グラフ決定のために利用されてもよく、結果がストレージデバイス５１４に記憶されてもよい。一実施形態によれば、決定器５０２からの出力が、（例えば、潜在的なパスの実現可能性を検証するための）検証機５０４および／または（例えば、特定のパスを選択するための）パス選択器５０６への入力として利用されてもよい。最適化器５０８は、（上記で説明したように）パスの最適化のために利用されてもよく、パスは、本原理による更新器５１０を用いて更新されてもよい。本原理の様々な実施形態によれば、更新器５１０によって生成される更新されたパスをコントローラ／エンフォーサ５１２が選択および強制し、新たなパスを１つまたは複数のネットワークに適用してもよい。
【００７３】
図５に示す実施形態では、その要素はバス５０１によって相互接続されている。一方、他の実施形態では、他のタイプの接続も用いることができる。さらに、一実施形態では、システム５００の要素のうちの少なくとも１つがプロセッサベースである。さらに、１つまたは複数の要素が別個の要素として示される場合があるが、他の実施形態では、これらの要素は１つの要素として組み合わされ得る。逆もまた適用可能であり、１つまたは複数の要素が別の要素の一部である場合があるが、他の実施形態では、この１つまたは複数の要素はスタンドアロン要素として実装されてもよい。システム４００の要素のこれらの変形形態および他の変形形態は、本明細書において提供される本原理の教示を与えられた当業者によって、本原理の趣旨を保ちながら容易に決定される。
【００７４】
上記のものは、全ての観点において、説明的であり例示的であるが、限定的でないと理解され、本明細書において開示した発明の範囲は、詳細な説明から決定されるのではなく、特許法によって認められる全範囲に従って解釈される特許請求の範囲から決定される。「追加情報」と題する本出願の付録に追加情報が提供される。本明細書において示し、説明した実施形態は、本発明の原理の例示にすぎず、当業者は、本発明の範囲および趣旨から逸脱することなく、様々な変更を行うことができることを理解されたい。当業者であれば、本発明の範囲および趣旨から逸脱することなく、様々な他の特徴の組み合わせを実施し得る。
【図１】
0006271039.tif 000004
【図２】
0006271039.tif 000005
【図３】
0006271039.tif 000006
【図４】
0006271039.tif 000007
【図５】
0006271039.tif 000008