(57)【特許請求の範囲】
【請求項１】
複数の転送デバイスからルーティング制御デバイスへの複数の経路を検出する方法であって、
（ａ）前記複数の転送デバイスのうち、転送デバイスのデータリンク層ポート上で、前記ルーティング制御デバイスからの制御パケットを受信する段階であって、前記データリンク層ポートは、前記転送デバイスを他の転送デバイスにリンクを介して接続し、前記制御パケットは、パケットを前記他の転送デバイスから前記ルーティング制御デバイスへとルーティングするための推定時間を示すパフォーマンスメトリックを含む、段階と、
（ｂ）（ア）前記制御パケットを受信した前記データリンク層ポート、および、（イ）前記制御パケットにおける前記パフォーマンスメトリックに少なくとも部分的に基づいて、前記ルーティング制御デバイスに到達させるべく、前記転送デバイスの、ＭＡＣアドレスによって識別されるどのデータリンク層ポート上でデータを転送するか識別する段階と、
（ｃ）前記転送デバイスでの新規データストリームの受信に応答して、（ｂ）で識別された前記データリンク層ポート上で、メッセージを前記ルーティング制御デバイスへ送信する段階であって、前記メッセージは前記ルーティング制御デバイスに対し、前記複数の転送デバイスを通る、宛先へのパスを決定することと、決定された前記パスに沿って前記新規データストリームを転送するように前記複数の転送デバイスのサブセットを構成することとを命令する、送信する段階と、
（ｄ）前記ルーティング制御デバイスの複数の構成コマンドに従って、前記新規データストリームを転送する段階と
を備える方法。
【請求項２】
前記送信する段階（ｃ）は、前記ルーティング制御デバイスを通して、前記新規データストリームの初期パケットを転送する段階を含む、請求項１に記載の方法。
【請求項３】
（ｅ）段階（ａ）で前記制御パケットを受信した前記データリンク層ポートと異なる、前記転送デバイスの残りのデータリンク層ポート上で、前記制御パケットを前記転送デバイスから他の転送デバイスへと転送する段階を更に含む、請求項１または２に記載の方法。
【請求項４】
（ｆ）前記転送デバイスで、前記複数の転送デバイスのうち、他の転送デバイスへとラベルを送信し、前記ラベルは、前記転送デバイスで受信されるパケットに付加されている場合に、前記転送デバイスに対し、（ｂ）で識別された前記データリンク層ポート上で前記ルーティング制御デバイスへ前記パケットを転送するように指示する段階を更に含む、請求項３に記載の方法。
【請求項５】
前記制御パケットがシリアル番号を含み、
前記方法は、
（ｆ）前記転送デバイスが、他の制御パケットを以前に転送したかどうかを判定する段階であって、前記他の制御パケットは、前記ルーティング制御デバイスからのものであり、前記シリアル番号を有し、パケットを前記転送デバイスから前記ルーティング制御デバイスへとルーティングする他の推定時間であって、前記制御パケット内の前記推定時間より少ない推定時間を有する、判定する段階を更に含み、
前記転送デバイスが、（ｆ）において、前記他の制御パケットを以前に転送していないと判定された場合に、前記転送する段階（ｅ）の段階を行う、
請求項３または４に記載の方法。
【請求項６】
（ｅ）（ｂ）で識別された前記データリンク層ポート上で他のメッセージを前記ルーティング制御デバイスへと送信する段階であって、前記他のメッセージは、前記転送デバイスと、前記複数の転送デバイスのうち、前記転送デバイスが接続されている複数の他の転送デバイスとを識別する、送信する段階
を更に含み、
前記ルーティング制御デバイスは前記他のメッセージを使用してネットワークのトポロジを表すデータベースを構築し、かつ、前記データベースを使用して前記パスを決定する、
請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記制御パケットは、前記ルーティング制御デバイスの識別子を含み、
（ｅ）前記転送デバイスのデータリンク層ポート上で、他のルーティング制御デバイスの識別子を含む他の制御パケットを受信する段階と、
（ｆ）前記他の制御パケットを受信した前記データリンク層ポートに少なくとも部分的に基づいて、前記転送デバイスのどのデータリンク層ポート上でデータを転送し、前記他のルーティング制御デバイスへ到達させるか識別する段階と、
（ｇ）新規データストリームの前記転送デバイスでの受信に応答して、前記パスが前記複数の転送デバイスを通って構成されるよう命令する前記メッセージを、前記ルーティング制御デバイスおよび前記他のルーティング制御デバイスのいずれが送信するか決定する段階と
を更に含む、
請求項１から６のいずれか一項に記載の方法。
【請求項８】
ルーティング制御デバイスへの経路を検出するための転送デバイスであって、
（ｉ）前記転送デバイスのデータリンク層ポート上で前記ルーティング制御デバイスからの制御パケットを受信し、前記データリンク層ポートは、前記転送デバイスを他の転送デバイスにリンクを介して接続し、前記制御パケットは、パケットを前記他の転送デバイスから前記ルーティング制御デバイスへとルーティングするための推定時間を示すパフォーマンスメトリックを含み、（ｉｉ）（ア）前記制御パケットを受信した前記データリンク層ポート、および、（イ）前記制御パケットにおける前記パフォーマンスメトリックに少なくとも部分的に基づいて、前記ルーティング制御デバイスに到達させるべく、前記転送デバイスの、ＭＡＣアドレスによって識別されるどのデータリンク層ポート上でデータを転送するか識別するように構成されたスイッチ検出モジュールと、
新規データストリームの前記転送デバイスでの受信に応答して、識別された前記データリンク層ポート上で前記ルーティング制御デバイスへとメッセージを送信するように構成されたパス要求モジュールであって、前記メッセージは前記ルーティング制御デバイスに対し、（ｉ）複数の前記転送デバイスを通る、宛先へのパスを決定することと、（ｉｉ）決定された前記パスに沿って前記新規データストリームを転送するように、複数の前記転送デバイスのサブセットを構成することとを命令する、パス要求モジュールと、
前記ルーティング制御デバイスの複数の構成コマンドに従って、前記転送デバイスが前記新規データストリームを転送することを可能にするべくデータ入力された、前記転送デバイス内のルーティングテーブルと
を備える転送デバイス。
【請求項９】
前記パス要求モジュールは更に、前記ルーティング制御デバイスを通して前記新規データストリームの初期パケットを転送するよう構成される、請求項８に記載の転送デバイス。
【請求項１０】
前記スイッチ検出モジュールは、前記制御パケットを受信した前記データリンク層ポートとは異なる前記転送デバイスの残りのデータリンク層ポート上で、前記転送デバイスから他の転送デバイスへと前記制御パケットを転送するよう構成され、任意で、
前記スイッチ検出モジュールは、前記複数の転送デバイスの中の、他の転送デバイスへとラベルを送信するよう構成され、
前記ラベルは、前記転送デバイスで受信されたパケットに付加されている場合に、前記転送デバイスに対し、前記スイッチ検出モジュールによって識別された前記データリンク層ポート上で、前記ルーティング制御デバイスへ前記パケットを転送するように指示する、
請求項８または９に記載の転送デバイス。
【請求項１１】
前記制御パケットはシリアル番号を含み、前記転送デバイスは更に、パフォーマンスメトリックモジュールを備え、
前記パフォーマンスメトリックモジュールは、前記転送デバイスが、他の制御パケットを以前に転送したかどうか判定するよう構成され、前記他の制御パケットは、前記ルーティング制御デバイスからのものであり、前記シリアル番号を含み、前記転送デバイスから前記ルーティング制御デバイスへとパケットをルーティングする他のパフォーマンスメトリックであって、前記制御パケット内のパフォーマンスメトリックより良い他のパフォーマンスメトリックを含み、
前記パス要求モジュールが、前記他の制御パケットを以前に転送しなかったと判定した場合に、前記転送を行う、
請求項１０に記載の転送デバイス。
【請求項１２】
前記スイッチ検出モジュールは更に、
識別された前記データリンク層ポート上で前記ルーティング制御デバイスへ他のメッセージを送信するよう構成され、前記他のメッセージは、前記転送デバイスと、前記転送デバイスが接続されている前記複数の転送デバイスのうち複数の他の転送デバイスとを識別し、
前記ルーティング制御デバイスは、ネットワークのトポロジを表すデータベースを構築するべく前記他のメッセージを使用し、前記パスを決定するべく前記データベースを使用するよう構成される、
請求項１０または１１に記載の転送デバイス。
【請求項１３】
前記制御パケットは、前記ルーティング制御デバイスの識別子を含み、前記スイッチ検出モジュールは更に、
前記転送デバイスのデータリンク層ポート上で、他のルーティング制御デバイスの識別子を含む、他の制御パケットを受信し、
前記他の制御パケットを受信した前記データリンク層ポートに少なくとも部分的に基づいて、前記他のルーティング制御デバイスに到達するべく、前記転送デバイスのどのデータリンク層ポート上でデータを転送するか識別し、
新規データストリームの前記転送デバイス上での受信に応答して、前記パスが前記複数の転送デバイスを通って構成されるように命令する前記メッセージを、前記ルーティング制御デバイス、および前記他のルーティング制御デバイスのいずれに送信するか決定するよう構成される
請求項１０から１２のいずれか一項に記載の転送デバイス。
【請求項１４】
複数の転送デバイスからルーティング制御デバイスへの経路を検出するための方法を少なくとも１つのマシンに実行させるプログラムであって、前記方法は、
（ａ）前記複数の転送デバイスのうち、転送デバイスのデータリンク層ポート上で、前記ルーティング制御デバイスからの制御パケットを受信する段階であって、前記データリンク層ポートは、前記転送デバイスを他の転送デバイスにリンクを介して接続し、前記制御パケットは、パケットを前記他の転送デバイスから前記ルーティング制御デバイスへとルーティングするための推定時間を示すパフォーマンスメトリックを含む、段階と、
（ｂ）（ア）前記制御パケットを受信した前記データリンク層ポート、および、（イ）前記制御パケットにおける前記パフォーマンスメトリックに少なくとも部分的に基づいて、前記ルーティング制御デバイスへ到達させるべく、前記転送デバイスの、ＭＡＣアドレスによって識別されるどのデータリンク層ポート上でデータを転送するか識別する段階と、
（ｃ）新規データストリームの前記転送デバイスでの受信に応答して、（ｂ）で識別された前記データリンク層ポート上で、メッセージを前記ルーティング制御デバイスへ送信する段階であって、前記メッセージは前記ルーティング制御デバイスに対し、前記複数の転送デバイスを通る、宛先へのパスを決定することと、決定された前記パスに沿って前記新規データストリームを転送するように前記複数の転送デバイスのサブセットを構成することとを命令する、送信する段階と、
（ｄ）前記ルーティング制御デバイスの複数の構成コマンドに従って、前記新規データストリームを転送する段階と
を備える、プログラム。
【請求項１５】
前記送信する段階（ｃ）は、前記新規データストリームの初期パケットを前記ルーティング制御デバイスを通して転送する段階を含む、請求項１４に記載のプログラム。
【請求項１６】
前記方法は、（ｅ）（ａ）で前記制御パケットが受信された前記データリンク層ポートと異なる、前記転送デバイスの残りのデータリンク層ポート上で、前記制御パケットを前記転送デバイスから他の転送デバイスへと転送する段階を更に含み、任意で、
前記方法は、
（ｆ）前記転送デバイスで、前記複数の転送デバイス中の他の転送デバイスにラベルを送信する段階を更に備え、前記ラベルは、前記転送デバイスで受信されたパケットに付加されている場合に、前記転送デバイスに対し、（ｂ）で識別された前記データリンク層ポート上で、前記ルーティング制御デバイスへ前記パケットを転送するよう指示する、請求項１４または１５に記載のプログラム。
【請求項１７】
前記制御パケットはシリアル番号を含み、前記方法は、
（ｆ）前記転送デバイスが、以前に転送された他の制御パケットを有するかどうか判定する段階であって、前記他の制御パケットは、前記ルーティング制御デバイスからのものであり、前記シリアル番号を有し、パケットを前記転送デバイスから前記ルーティング制御デバイスへとルーティングする他の推定時間であって、前記制御パケット内の前記推定時間より少ない推定時間を有する、判定する段階
を更に備え、
前記転送デバイスが、（ｆ）において、前記他の制御パケットを以前に転送していないと判定された場合に、前記転送する段階（ｅ）の転送段階を行う、
請求項１６に記載のプログラム。
【請求項１８】
前記方法は、（ｅ）（ｂ）で識別された前記データリンク層ポート上で前記ルーティング制御デバイスへ他のメッセージを送信する段階であって、前記他のメッセージは、前記転送デバイスと、前記転送デバイスが接続されている、前記複数の転送デバイスのうち複数の他の転送デバイスとを識別する段階を更に備え、
前記ルーティング制御デバイスは、ネットワークのトポロジを表すデータベースを構築するべく前記他のメッセージを使用し、前記パスを決定するべく前記データベースを使用する、
請求項１４から１７のいずれか一項に記載のプログラム。
【請求項１９】
前記制御パケットは、前記ルーティング制御デバイスの識別子を含み、
前記方法は、
（ｅ）前記転送デバイスのデータリンク層ポート上で、他のルーティング制御デバイスの識別子を含む他の制御パケットを受信する段階と、
（ｆ）前記転送デバイスの受信した前記データリンク層ポートに少なくとも部分的に基づいて、前記他のルーティング制御デバイスへ到達するべく、前記転送デバイスのどのデータリンク層ポート上でデータを転送するか識別する段階と、
（ｇ）新規データストリームの前記転送デバイスでの受信に応答して、前記複数の転送デバイスを通る前記パスが構成されるように命令する前記メッセージを、前記ルーティング制御デバイス、および、前記他のルーティング制御デバイスのいずれに送信するか決定する段階と
を更に含む、請求項１４から１８のいずれか一項に記載のプログラム。
【請求項２０】
複数の転送デバイスのネットワークにおいて、少なくとも、転送デバイスのデータリンク層ポートに接続されている、ルーティング制御デバイスであって、
前記ルーティング制御デバイスからの制御パケットをデータリンク層ポートから送信することによって、前記複数の転送デバイスの前記ネットワークのトポロジを判定するよう構成されたコントローラ検出モジュールであって、前記制御パケットは、パケットを各転送デバイスから前記ルーティング制御デバイスへとルーティングするための推定時間を示すパフォーマンスメトリックを含む、コントローラ検出モジュールと、
前記ネットワークのトポロジを保存するよう構成されたトポロジデータベースと、
前記ルーティング制御デバイスから、前記ネットワーク内の各転送デバイスへのパスを確立し、
前記ネットワーク内の前記転送デバイスのそれぞれから前記ルーティング制御デバイスへのパスを確立し、
転送元デバイスからの接続要求をデータリンク層ポート上で受けると、前記転送元デバイスから転送先デバイスへの接続パスを確立する
よう構成されたパス決定モジュールと、
前記接続パスが確立されている間、前記転送元デバイスから前記ルーティング制御デバイス、および、前記ルーティング制御デバイスから前記転送先デバイスまでの前記パスを通して、前記接続要求に対して少なくとも１つの初期パケットを送るよう構成されたデータ転送モジュールと
を備える、ルーティング制御デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本分野は概して、ネットワークのルーティングに関する。
【背景技術】
【０００２】
通信ネットワークは、例えば、２つの地理的に離れた場所の間でデータを転送することを可能にするネットワーク接続を提供し得る。ネットワーク接続は、ルータなどの通信デバイスを接続する、複数のリンクに及び得る。通信デバイスを通ってリンクがどのように相互接続されるかに応じて、ネットワークは異なるトポロジを有し得る。特定のネットワークトポロジにおいて、送信元と宛先との間で、複数の経路が利用可能な場合がある。現在の容量および利用状況に応じて、いくつかの経路は、他の経路より好ましいことがあり得る。
【０００３】
従来のルーティングのアルゴリズムは、各ルータが有する、その隣接するリンクおよびデバイスからのローカル情報を利用して、データをルーティングし得る。ルータはそのような情報をルーティングテーブルに保持する。そして、ルータは受信パケットの宛先アドレスに基づいて、そのルーティングテーブルを使用して、受信パケットを特定の隣接するデバイスへ転送し得る。ルーティングテーブルを構築するべく、各ルータは、ボーダーゲートプロトコル（ＢＧＰ）などのプロトコルを使用して、ローカルの隣接するルータと、ルーティングおよび到達可能性の情報を交換する。このように、各ルータは、パケットを転送し、かつ、制御機能を実行して自身のルーティングテーブルを更新する。
【０００４】
ローカル情報の使用は、いくつかの状況では望ましいが、常に効率的にデータをルーティングできるとは限らない。より効率的にデータをルーティングするべく、ソフトウェア定義ネットワーク（ＳＤＮ）と呼ばれる他の技術は、制御機能と転送機能とを別個のデバイスに分離する。制御デバイスは、ネットワークトポロジの全体的な知識を使用して、個別のデータフローに対し、転送デバイスのネットワークを通るパスを決定する。このように、ルーティング制御デバイスは、例えば、遅延を最小化するか帯域幅を最大化するパスを、ネットワークを通して確立し得る。
【発明の概要】
【０００５】
一実施形態において、コンピュータ実装方法は、ネットワーク転送デバイスからルーティング制御デバイスへの経路を検出する。この検出方法は、転送デバイスのデータリンク層ポート上でルーティング制御デバイスからの制御パケットを受信する段階であって、データリンク層ポートは、転送デバイスを他の転送デバイスにリンクを介して接続し、制御パケットは、パケットを他の転送デバイスからルーティング制御デバイスへとルーティングするための推定時間を示すパフォーマンスメトリックを含む、段階を含む。この方法では次に、少なくとも部分的には、（ア）制御パケットを受信したデータリンク層ポート、および、（イ）制御パケットにおけるパフォーマンスメトリックに基づいて、ルーティング制御デバイスに到達するべく、転送デバイス上の、ＭＡＣアドレスによって識別されるどのデータリンク層ポートでデータを転送するか識別する。この方法では、新規データストリームの転送デバイスでの受信に応答して、識別されたデータリンク層ポート上で、コマンドをルーティング制御デバイスへ送信する。このコマンドは、ルーティング制御デバイスに対し、転送デバイスを通る、宛先までのパスを決定することと、決定されたパスに沿って新規データストリームを転送するように転送デバイスを構成することとを命令する。この方法では次に、ルーティング制御デバイスの構成コマンドに従って、新規データストリームを転送する。
【０００６】
システムおよびコンピュータプログラム製品の実施形態も開示される。 
【０００７】
本発明の更なる実施形態、特徴、および利点、ならびに、各種実施形態の構造及び動作が、複数の添付図面を参照して以下に詳細に説明される。
【図面の簡単な説明】
【０００８】
本明細書に組み込まれ、本明細書の一部を形成する複数の添付図面は本開示を図示し、説明と合わせて、本開示の複数の原理を説明し、当業者が本開示を作成及び使用することを可能にするのに更に役立つ。
【０００９】
【図１Ａ】制御パケットを転送デバイスへ送信するルーティング制御デバイスを図示するダイアグラムである。
【００１０】
【図１Ｂ】ネットワーク全体にわたって、制御パケットをフラッディングする、転送デバイスを図示するダイアグラムである。
【００１１】
【図１Ｃ】ネットワークトポロジを反映した情報を制御デバイスが収集する方法を図示するダイアグラムである。
【００１２】
【図２】制御デバイスから転送デバイスへのパスを見つけるための方法を図示するフローチャートである。
【００１３】
【図３】各転送デバイスから制御デバイスへのパスをセットアップする方法を図示するフローチャートである。
【００１４】
【図４Ａ】転送デバイスから制御デバイスへのパスを使用するネットワーク接続を図示するダイアグラムである。
【００１５】
【図４Ｂ】高速パスをセットアップするルーティング制御デバイスを図示するダイアグラムである。
【００１６】
【図５】複数の制御デバイスを有するネットワークを図示するダイアグラムである。
【００１７】
【図６】制御デバイスおよび転送デバイスのモジュールを図示するダイアグラムである。
【００１８】
要素が最初に現れる図面は、概して、対応する参照番号で左端の１または複数の数字で示される。複数の図面において、同様の参照番号は、同一または機能的に類似の要素を示し得る。
【発明を実施するための形態】
【００１９】
上述のように、ＳＤＮルーティング技術は、ネットワークトポロジの全体的な知識を使用することで、効率的にパケットをルーティングする。これらの技術は、互いに分離したルーティング制御デバイスおよび転送デバイスを使用する。転送デバイスがネットワークを通して新規データフローを受信すると、転送デバイスは、そのデータフローの新規パスを決定するべく、ルーティング制御デバイスに連絡する。ルーティング制御デバイスは、ネットワークの転送デバイスを通る新規パスを決定し、それに応じて、転送デバイスを構成する。
【００２０】
機能するには、ルーティング制御デバイスおよび転送デバイスは、ネットワーク情報で構成される必要がある。具体的には、相互接続された転送デバイスを通る新規パスを作成するように要求するには、転送デバイスは、ルーティング制御デバイスにデータをルーティングする方法を知っている必要がある。そして、ルーティング制御デバイスは、ネットワークを通るパスを決定するには、ネットワークトポロジを知っている必要がある。この情報を手動で構成することは、長い時間を要し、エラーが発生し得る。
【００２１】
本明細書で開示される複数の実施形態は、トポロジ情報が自動的に検出されることを可能にする。一実施形態において、ルーティング制御デバイスは、転送デバイスに接続され、それに制御パケットを送信する。制御パケットは、制御デバイスのアドレスを、その送信元アドレスとして、アドレスフィールド内に含む。また、制御デバイスは、シリアル番号を各制御パケットに付加する。
【００２２】
転送デバイスは、例えば、ネットワークが当該転送デバイスからルーティング制御デバイスへと情報を送信するのにかかり得る時間を示すパフォーマンス情報を付加する。次に、転送デバイスは、他の転送デバイスに接続されている、その他のポート上で、制御パケットをブロードキャスト、またはフラッディングする。そして、他の転送デバイスが、より良いパフォーマンス情報を含むパケットを以前に再ブロードキャストしていない場合、当該他の転送デバイスは、パフォーマンス情報を更新し、パケットを再ブロードキャストする。
【００２３】
転送デバイスは、制御パケットを受信すると、最高のパフォーマンス情報を有するパケットを制御パケットがどのポートで受信したかを記憶する。転送デバイスは、このポートが、ルーティング制御デバイスへの最速経路上であることが分かる。そして、各転送デバイスは、ラベルスイッチパスをその経路上で設定するように、ルーティング制御デバイスに要求し得る。
【００２４】
パスが確立されると、転送デバイスは、近隣のネットワークトポロジと、ネットワーク状態とに関する情報を、制御デバイスに送信する。制御デバイスは、すべての転送デバイスからの、そのような情報を使用することで、全体的なネットワークトポロジと、ネットワーク状態とのデータベースを作成できる。このトポロジデータベースによって、制御デバイスは、ネットワーク内で転送元デバイスと転送先デバイスとの間のパスを確立することが可能になる。
【００２５】
コントローラに対してこのパスが確立されると、コントローラは、それ以降いつでも、より完全なトポロジおよびパフォーマンス情報を利用し得る他の方法を使用することで、転送デバイスとコントローラとの間の通信により良いパスを決定し得る。この、より良いパスが決定された場合、既存のパスは、コントローラによって置き換えられ得る。この場合、コントローラは、特定の新規パスを再度シグナリングし、次に、既存のパスを削除する。
【００２６】
後述の詳細な説明は、５つの項に分けられる。第１項は、図１Ａ‐図１Ｃに関連し、制御パケットを各転送デバイスへ送信し、トポロジおよびネットワーク状態情報を転送デバイスから収集する、ネットワーク内の制御デバイスを説明する。第２項は、図２‐図３に関連し、制御デバイスと各転送デバイスとの間の双方向接続のセットアップを説明する。第３項は、図４Ａ‐図４Ｂに関連し、大量のパケットをバッファリングするようにエッジルータへ要求することなく、制御デバイスを使用することで、データを確立し、転送することを説明する。第４項は、図５に関連し、ネットワーク内における複数の制御デバイスの使用を説明する。最後の第５項は、図６に関連し、制御デバイスシステム、および、そのモジュール、ならびに、転送デバイスシステム、および、そのモジュールを説明する。  ［制御デバイスおよび制御パケット］
【００２７】
図１Ａは、通信ネットワークを図示するダイアグラム１００である。通信ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、または、広域ネットワーク（ＷＡＮ）であり得る。通信ネットワークは、ポイントツーポイント、または、マルチポイントツーマルチポイントのネットワークプロトコルを利用し得る。使用されるネットワークアクセスプロトコルは、例えば、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、イーサネット（登録商標）、非同期転送モード（ＡＴＭ）、ハイレベルデータリンク制御（ＨＤＬＣ）、または、パケットリレーを含み得る。
【００２８】
通信ネットワークは、転送デバイス１０４、１０６、１０８、１１０および１１２など、リンクによって相互接続された、複数の転送デバイスを含む。転送デバイスは、パケットを転送するデバイスであり、データリンク層（ＯＳＩ第２層）、および、ネットワーク層（ＯＳＩ第３層）のデバイスを含む。
【００２９】
また、通信ネットワークは、ルーティング制御デバイス１０２を含む。ルーティング制御デバイス１０２は、例えば転送デバイス１０４など、少なくとも１つの転送デバイスに接続され得る。ルーティング制御デバイス１０２は、ネットワーク内の他の転送デバイスから、地理的に遠く離れた場所にあり得る。
【００３０】
例として、ユーザは、例えば転送デバイス１０６などの転送元デバイスから、例えば転送デバイス１１０などの転送先デバイスへとデータを送信し得る。データは、パケットに分割されるストリームであり得、各パケットは、転送デバイス１１０、または、他の下流のデバイスを、その宛先として指定し得る。
【００３１】
ルーティング制御デバイス１０２は、ネットワーク接続を確立するためのインテリジェントなルーティングを提供する。これを行うには、制御デバイス１０２は、トポロジ、ならびに、ネットワークリンクおよびネットワークデバイスの状態に関する知識が必要である。ルーティング制御デバイス１０２は、転送デバイス１０４に直接接続する。制御デバイスがネットワークの知識を獲得するべく、制御デバイス１０２は、制御パケット１２０を転送デバイス１０４へ送信する。
【００３２】
制御パケット１２０は、当該パケットが制御パケットであることを示すものと、メディアアクセス制御アドレスなどのルーティング制御デバイス１０２の識別子と、パケットのシリアル番号とを含み得る。一実施形態において、制御デバイス１０２は、一定の時間間隔で、新規制御パケットを送信し得る。制御デバイス１０２が新規パケットを送信するたびに、制御デバイス１０２は、シリアル番号をインクリメントし、異なる番号を有する新規制御パケットを送り出す。
【００３３】
説明のための例において、制御パケット１２０は、以下の情報を含み得る。
タイプフラグ：Ｃ（制御パケット）
制御デバイスのＭＡＣアドレス：０１：２３：４５：６７：８９：ａｂ
制御パケットのシリアル番号：１
【００３４】
図１Ｂで図示するように、ルーティング制御デバイス１０２が制御パケット１２０を隣の転送デバイス１０４へ送信すると、ネットワーク転送デバイスは、そのパケットをネットワーク全体にフラッディングする。
【００３５】
図１Ｂは、制御パケットをネットワーク全体にフラッディングする、ネットワーク転送デバイスを図示するダイアグラムである。制御パケット１２０を受信後、転送デバイス１０４は、制御パケットを受信したポートを除く、そのすべてのポートで、制御パケットを送り出し得る。
【００３６】
上述した通り、ルーティング制御デバイス１０２が制御パケット１２０を生成する場合、制御デバイスは、そのアドレスとシリアル番号とを制御パケットに含め得る。転送デバイス１０４が制御パケットを受信すると、それを転送する前に、転送デバイス１０４は、２つの修正を行い得る。第１に、転送デバイスは、それ自身の識別子（そのＭＡＣアドレスなど）を制御パケットに追加し得る。このアドレスは、制御パケットが通過するすべての転送デバイスを記録するように、制御パケットのアドレスフィールドに追加される。第２に、転送デバイス１０４は、制御パケット内のパフォーマンスメトリックを修正し得る。パフォーマンスメトリックには、例えば、制御パケットを制御デバイス１０２から転送デバイス１０４へ送信する際の遅延が含まれ得る。この遅延情報は、例えば、リンク層検出プロトコル（ＬＬＤＰ）のパケット交換を使用して、転送デバイス１０４によって収集され得る。トラフィック量の変化にネットワークが反応する際の一時的な変化を防止するべく、遅延は移動平均として決定されるか、さもなければ平準化され得る。
【００３７】
転送デバイス１０４は、これら２つの修正を加え、制御パケット１４２、１４４および１４６として、他のポートで制御パケットを転送する。この時点では、３つの制御パケット１４２、１４４および１４６はすべて、同じ情報を含み得る。引き続き上の例で、転送デバイス１０４のＭＡＣアドレスが０２：０２：０２：０２：０２：ｂｃであり、制御デバイス１０２と転送デバイス１０４との間の遅延が５ナノ秒であると仮定すると、制御パケット１４２、１４４および１４６は、以下の情報を含み得る。
タイプフラグ：Ｃ（制御パケット）
制御デバイスのＭＡＣアドレス：０１：２３：４５：６７：８９：ａｂ
制御パケットのシリアル番号：１
仲介転送デバイスのアドレス：０２：０２：０２：０２：０２：ｂｃ 
パフォーマンスメトリック：５ナノ秒
【００３８】
転送デバイス１０４は、制御パケット１４４をリンク１１４上で転送デバイス１０６に転送し、制御パケット１４２をリンク１１６上で転送デバイス１０８に転送し、制御パケット１４６をリンク１１８上で転送デバイス１１０に転送する。
【００３９】
転送デバイス１０６は、制御パケット１４４を受信すると、自身のアドレスをアドレスフィールドに追加し、制御パケットのパフォーマンスメトリックを更新することで、制御パケット１４８を生成する。例えば、転送デバイス１０６は、遅延を追加し、データを転送デバイス１０６から転送デバイス１０４へ送信し得る。引き続き上の例で、転送デバイス１０６のＭＡＣアドレスが０３：０３：０３：０３：０３：ｃｄであり、コントローラ１０２と転送デバイス１０４との間の遅延が２ナノ秒であると仮定すると、制御パケット１４８は、以下の情報を含み得る。
タイプフラグ：Ｃ（制御パケット）
制御デバイスのＭＡＣアドレス：０１：２３：４５：６７：８９：ａｂ
制御パケットのシリアル番号：１
仲介転送デバイスのアドレス：０２：０２：０２：０２：０２：ｂｃ、０３：０３：０３：０３：０３：ｃｄ
パフォーマンスメトリック：７ナノ秒
【００４０】
転送デバイス１０６は、パケット１４８をリンク１２２上で転送デバイス１０８へ送信する。
【００４１】
転送デバイス１０８は、制御パケット１４２および１４８を受信する。転送デバイス１０８は、これら２つの制御パケットの各々に含まれる遅延情報を使用することで、制御デバイス１０２への遅延がより少ないパスを確立することを選択できる。転送デバイス１０８は、制御パケット内のアドレス系列フィールドを使用することで、制御デバイスに到達するには、どの隣接する転送デバイスと通信する必要があるか知ることができる。
【００４２】
例えば、転送デバイス１０８は、リンク１２２上でデータを転送デバイス１０６へ送信するための時間は３ナノ秒であり、リンク１１６上でデータを転送デバイス１０４へ送信するための時間は９ナノ秒であることを知り得る。この時間を、受信したパケット１４８および１４２内のパフォーマンスメトリックに追加することで、転送デバイス１０８は、転送デバイス１０６を介した制御デバイス１０２への伝送には１０ナノ秒かかるのに対し、転送デバイス１０４を介した伝送には、１４ナノ秒かかると判定できる。そのため、転送デバイス１０８は、デバイス１０４ではなく、転送デバイス１０６を介して、制御デバイス１０２へデータをルーティングすることを選択し、より速いパスを取り得る。
【００４３】
また、転送デバイス１０８は、制御パケット１４２および１４８を再転送し得る。転送デバイス１０８が、より遅いパスを示すパケット（この場合、パケット１４２）を受信する前に、より速いパスを示すパケット（この場合、パケット１４８）を受信した場合、転送デバイス１０８は、より遅いパケットを転送しなくてよい。なぜなら、転送デバイス１０８は、制御デバイス１０２へと向かう如何なるデータも、そのデータが転送デバイス１０８に由来するものか、または、デバイス１１２などの他の転送デバイスに由来するものかに関係なく、転送デバイス１０６を通る、より速いパスを取るべきであることを知っているからである。
【００４４】
制御デバイス１０２への最適パスは転送デバイス１０６を通るパスであることを決定すると、転送デバイス１０８は、転送デバイス１０６との双方向パスを確立し得る。一実施形態において、この双方向パスを確立するべく、転送デバイス１０８は、制御デバイスへ到達するには、特定のポート（当該転送デバイスが制御パケット１４４を受信したポート）で特定のラベル付きのパケットを送信するというルールを、転送テーブルとも呼ばれ得る、そのルーティングテーブルに設定する。この情報は、転送デバイス１０６に通信され、その結果、両方の転送デバイスが同じルールに従う。したがって、転送デバイス１０６が、転送デバイス１０８から、設定ラベルとともにパケットを設定ポートで受信した場合、転送デバイス１０６は、このパケットは制御デバイス１０２宛てであることを知る。同様に、転送デバイス１０６は、制御デバイス１０２宛てのトラフィックを、転送デバイス１０４を通して転送することを知る。そのため、転送デバイス１０６は、制御デバイス１０２へとデータをルーティングするべく、転送デバイス１０４と共にラベルを設定する。また、制御デバイス１０２から転送デバイス１０４を通して転送デバイス１０６へとデータをルーティングするべく、同様の方法でラベルが設定され得る。
【００４５】
このように、制御デバイスからの制御パケットを分析し、再転送することによって、各転送デバイスは、制御デバイスと通信する方法を検出し、制御デバイスへのラベルスイッチパスを設定できる。図４Ａおよび図４Ｂに関して後述するように、転送デバイスが新規データストリームを受信すると、制御デバイスがネットワークを通るパケットのためのパスを設定するまで、転送デバイスは新規データストリームからのパケットを制御デバイスへ転送し得る。
【００４６】
実施形態では、ラベルスイッチパスを使用してデータを制御デバイスへ転送するだけでなく、図１Ｃで図示されているように、ラベルスイッチパスを使用して、制御デバイスがネットワークのトポロジ情報を検出することも助ける。
【００４７】
図１Ｃは、ネットワークトポロジを反映している情報を収集する制御デバイス１０２を図示するダイアグラム１７０である。
【００４８】
各転送デバイスは、何の転送デバイスに接続されているか、および、周囲のリンクおよび転送デバイスの状態はどうかを示す情報をルーティング制御デバイスへ送信する。周囲のリンクおよび転送デバイスの状態には、例えば、トラフィックおよび輻輳情報、レイテンシ、パケット損失率、ジッタなどが含まれ得る。この情報は、例えば、リンク層検出プロトコル（ＬＬＤＰ）を使用して収集され得る。一実施形態において、転送デバイスは、この情報を定期的に送信する。そして、転送デバイスは、転送デバイスと制御デバイスとの間で確立されたパスを使用して、この情報を送信する。
【００４９】
図１Ｃで示されている例では、制御デバイス１０２への転送デバイス１０８用のパスが確立されている。このパスには、転送デバイス１０８、１０６および１０４が含まれる。転送デバイス１０８は、その周囲のトポロジを含む情報を制御デバイス１０２へ送信する。例では、転送デバイス１０８は、この情報をパケット１７２に入れてルーティング制御デバイス１０２へと送信する。
【００５０】
ルーティング制御デバイス１０２は、転送デバイス１０８を含む転送デバイスのすべてから受信するトポロジ情報を使用して、転送デバイスのネットワークのトポロジを反映するデータベース１７４を作成する。  ［制御デバイスとの間で両方向のパスを確立する］
【００５１】
図２は、制御デバイスから転送デバイスへのパスを発見するための方法２００を図示するフローチャートである。
【００５２】
段階２０２で、制御デバイスは転送デバイスのネットワークのうち１つの転送デバイスに物理的に接続する。段階２０４で、制御デバイスは、制御（または検出）パケット、例えば、リンク層検出プロトコル（ＬＬＤＰ）パケットを、制御デバイスが接続されている転送デバイスへ送信する。
【００５３】
段階２０６で、パケットを受信した転送デバイスは、パケットが制御デバイスに由来するものかどうか検証する。例において、転送デバイスは、例えば、特定のフラグが立てられているかどうかをチェックすることによって、パケットが制御デバイスからのものであることを検証できる。
【００５４】
制御パケットは、ネットワークリンクまたはネットワークデバイスの状態を示すパフォーマンスメトリックを含む。例えば、メトリックはリンクのレイテンシを示し得る。したがって、この例では、メトリックが低いことは、レイテンシがより低いこと、したがって、パフォーマンスがより良いことを示す。また、メトリックは、レイテンシ、パケット損失、ジッタなどの複数の状態の関数であり得る。
【００５５】
制御パケットを受信する各転送デバイスは、パフォーマンスメトリックを更新する。更新されたメトリックは、例えば、制御パケットが前の、すなわち上流の転送デバイスから、当該転送デバイスへ到達するための追加のレイテンシを示す。メトリックの更新後、転送デバイスは、制御パケットを受信したポートを除く、そのすべてのポート上で、制御パケットをフラッディングする。
【００５６】
転送デバイスは、過去に受信したものと同じ制御パケットを再度受信し得る。これが起きるのは、制御パケットがネットワークを通してフラッディングされるからである。転送デバイスは、制御デバイスが各制御パケットに付加する固有のシリアル番号によって、繰り返しの制御パケットを認識できる。
【００５７】
段階２０８で、転送デバイスは、パケットのパフォーマンスメトリックが、制御デバイスから受信した以前のメトリックより良いかどうかをチェックする。転送デバイスが受信したすべての制御パケットの中で、当該メトリックが最高のパフォーマンスメトリックである場合、段階２１０で、転送デバイスは、制御デバイスへ到達するための最適な経路としてパケットの受信ポートを保存する。
【００５８】
段階２１２で、制御パケットがネットワークを通って無限に循環することを回避するべく、転送デバイスはシリアル番号をチェックして、制御パケットが以前に転送されたかどうか判定する。制御パケットは固有のシリアル番号を、生成する各制御パケットへ追加するので、転送デバイスは制御パケットのシリアル番号を使用して、制御パケットを以前に転送したかどうか判定できる。または、転送デバイスが、例えば、より大きいシリアル番号を有する、より最近の制御パケットを以前に転送した場合、転送デバイスはシリアル番号を使用して、現在の制御パケットが古いかどうかを判定する。パケットが無限にネットワークを通って循環することを回避するべく、制御パケットの少なくとも一部のハッシュまたはチェックサムなど、多くの他の機構が使用され得る。
【００５９】
段階２１４で、転送デバイスは、パケットが以前に転送されたかどうか、および、最高のパフォーマンスを示すメトリックを含んでいるかどうかを判定する。制御パケットが最高のパフォーマンスメトリックを示さないか、または、当該転送デバイスによって以前に転送されていた場合、転送デバイスはパケットを破棄し、プロセスは終了する。
【００６０】
制御パケットが最高のパフォーマンスメトリックを含み、かつ、以前に転送されていない場合、プロセス２００は段階２１６でパスを設定する。段階２１６は、後述の図３の説明で詳細に説明される。
【００６１】
次に段階２１８で、転送デバイスは、上流の転送デバイスと現在の転送デバイスとを接続しているリンクのパフォーマンス、および、２つの転送デバイス自体のパフォーマンスを反映するように、パフォーマンスメトリックを更新する。次に段階２２０で、受信した転送デバイスは、制御パケットを受信したポートを除く、そのすべてのポート上でパケットをフラッディングする。このように、更新された制御パケットは、他の転送デバイスへ送信される。
【００６２】
他の転送デバイスは、段階２０６からプロセスを繰り返し、同じ方法でパケットを処理する。
【００６３】
図３は、転送デバイス１０４と１０６との間のパスをセットアップするための方法２１６を図示するフローチャートである。例として、制御パケットが転送デバイス１０４から転送デバイス１０６へと移動した場合、転送デバイス１０４は１０６にとって、上流の転送デバイスである。
【００６４】
図１Ａ、図１Ｂ、図２に関連して上述に引き続き、転送デバイス１０６は、上流の転送デバイス１０４から新規制御パケットを受信し、新規制御パケットは、これまでで最高のパフォーマンス特性を有すると仮定する。この理由から、図２の段階２１６でパスが設定される。
【００６５】
段階３０２で、転送デバイス１０６は、１つ上流の転送デバイスに対し、制御デバイスへのパスの要求を送信する。段階３０６で、転送デバイス１０４はパスを確立するためのラベルを決定する。段階３０８で、転送デバイス１０４は、このラベルを転送デバイス１０６へ送信する。段階３０４で、転送デバイス１０６はそれに応じて、そのルーティングテーブル内でこのラベルルールを確立する。
【００６６】
段階３１０で、転送デバイス１０４は制御デバイスへのパスを要求する。パスを作成するべく、転送デバイス１０４は、他の上流の転送デバイスからラベルを要求し、段階３０２、３０６、３０８および３１０を繰り返し得る。段階３１２で、転送デバイス１０４は、ラベルルールをそのルーティングテーブル内に確立する。
【００６７】
例えば、転送デバイス１０４は、段階３０２で転送デバイス１０６からの要求を受信後、ラベルＬ１を二者間のパスに選択する。このラベルを転送デバイス１０６へ送信後、転送デバイス１０６は、制御デバイス宛てのデータパケットすべてに、このラベルを付加する。
【００６８】
この例では、転送デバイス１０４は、転送デバイス１０６へ接続されているポート上でラベルＬ１が付いたデータパケットを受信すると、そのパケットを制御デバイスへ転送する。制御デバイスへパケットを転送するべく、転送デバイス１０４は、特定のラベルとともに特定のポート上で転送することを（段階３１２でラベルルールを確立したことで）知り得る。このように、転送デバイスから制御デバイスへのパスが確立される。
【００６９】
また、制御デバイスから転送デバイスへの逆方向のパスも、同様の方法で確立され得る。この場合、各転送デバイスは、そのルーティングテーブル内でラベルを設定し得る。ルーティングテーブル内のエントリには、データをルーティングするための関連するポートが含まれ得る。
【００７０】
そのようなパスがネットワーク内の転送デバイスの間で確立された後、ネットワーク内では、制御デバイスと各転送デバイスとの間で、両方向のパスが存在する。図３の例では、転送デバイス１０６と、転送デバイス１０４と、制御デバイスとの間にパスが確立された後、転送デバイス１０６はこのパスを使用して、制御デバイスにデータを送信する。逆の場合も同様であり、制御デバイスは、このパスを使用して転送デバイス１０６へデータを送信する。
［新規データストリーム用の高速パスを確立する］
【００７１】
図４Ａは、サーバ４４４へアドレス指定されたネットワークユーザ４４２からのデータストリームを図示するダイアグラム４００を示す。データストリームには、パケット４０２、４０４、４０６、４０８、４１０および４１２が含まれる。データストリームの第１パケット（パケット４０２）が転送デバイス１０６へ到達すると、それは制御デバイス１０２へルーティングされる。制御デバイス１０２は、このパケットが新規接続に属していると判定し、制御デバイス１０２を通って流れることがない、接続のための高速パスを確立するプロセスを開始する。
【００７２】
例において、パケット４０２の後、パケット４０４および４０６も送信される。転送デバイス１０６は、パケット４０４および４０６をバッファリングするか、または、第１パケット４０２に対して行ったことと同様に、これらのパケットを制御デバイス１０２へと転送する。
【００７３】
制御デバイスは第１パケットを受信した後、転送デバイス１０４へパケットを送信する。転送デバイス１０４は、パケット内に含まれる宛先アドレス、および、図２および図３の段階２１６で設定されたパスを使用して、対応するラベルとともにパケットを対応するポートへと転送する。
【００７４】
次に、制御デバイスは送信元から宛先へのパスを計算する。パスにはネットワークリンクおよびルータが含まれるが、制御デバイスは含まれない。例えば、制御デバイスは、ＭＰＬＳプロトコルを使用して、データストリーム用のラベルスイッチパス（ＬＳＰ）を作成する。パスを決定するべく、制御デバイスは、現在または過去の帯域幅の利用状況を考慮し得る。例えば、制御デバイスは、前の数週間（または他の周期的な期間）の間のネットワーク利用状況を考慮し得る。また、制御デバイスは、複数のパス上で負荷分散を可能にするべく、複数のパスを接続のために作成し得る。
【００７５】
また、制御デバイスは、各種パス全体における、レイテンシ、ジッタ、パケット損失、もしくは、他の何らかのパフォーマンスメトリック、ユーザのサービス水準合意、または、転送されるデータのタイプを考慮し得る。例えば、ブロードキャストビデオデータは、大きな帯域幅を必要とするが、レイテンシは比較的重要でないことがあり得る。他方、ボイスオーバーＩＰ（ＶｏＩＰ）データは、そこまで大きな帯域幅を必要としないが、レイテンシはより重要であることがあり得る。ブロードキャストビデオデータの場合、制御デバイスは高帯域幅、高レイテンシパスを選択し、ＶｏＩＰデータの場合、制御デバイスは低帯域幅、低レイテンシパスを選択し得る。
【００７６】
他の実施形態において、制御デバイスは、特定のサーバを通ってデータをルーティングし得る。例えば、特定のタイプを有するデータ、または、特定の宛先に宛てられたデータは、途中で特定のスクラビングサーバによって、スクラビングを受ける必要があり得る。スクラビングサーバは、受信データを監視するべく、または、データ上で他の分析を実施するべく、悪意のある内容がないかデータをスキャンするのに使用され得る。その実施形態において、制御デバイスは、データが特定のスクラビングサーバ、またはサーバのセットを通過するように決定し得る。
【００７７】
高速パスを決定した後、制御デバイスは、パスに沿った各転送デバイスのルーティングテーブルを更新する。データストリームに関して、複数のパスが計算された場合、制御デバイスはすべてのパスに沿ったルーティングテーブルを作成する。一実施形態において、更新済みルーティングテーブルは転送デバイスに対し、送信元／宛先アドレスおよび送信元／宛先ポートの特定の組合せを有するパケットをどのように転送するか命令し得る。代替的な実施形態において、データストリームは、ラベルによって識別され、更新済みルーティングテーブルは、ラベルが付いたパケットをどのように転送するか指示し得る。
【００７８】
制御デバイスは、更新済みルーティングテーブルをネットワークルータへ送信する。制御デバイスは、段階２１６ですべての転送デバイスに対して確立されたパスを使用して、ルーティングテーブルを送信し得る。ルータがどのように構成されるかについての例は、図４Ｂで図示されている。
【００７９】
図４Ｂは、ユーザ４４２とサーバ４４４との間でパスを確立するべく、制御デバイス１０２がどのようにネットワーク転送デバイスを構成するか図示するダイアグラム４２０を示す。
【００８０】
図４Ｂで、制御デバイス１０２は、ユーザ４４２とサーバ４４４との間のデータストリームが、リンク１２０、１２２、および１２４、ならびに、転送デバイス１０６、１０８、１１２、および１１０を含むパスを通って進むことを決定する。転送デバイスを構成するべく、制御デバイス１０２は、構成コマンド４２２、４２４、４２６および４２８を使用して、更新済みルーティングテーブルを送信する。これらの構成コマンドは、ユーザ４４２と宛先４４４とを接続する高速パス上にあるすべての転送デバイスを構成する。具体的には、コマンド４２２は転送デバイス１０６に対し、データストリーム内のパケットをリンク１２０へ転送するよう命令し、コマンド４２４は転送デバイス１０８に対し、データストリーム内のパケットをリンク１２２へ転送するよう命令し、コマンド４２６は転送デバイス１１２に対し、データストリーム内のパケットをリンク１２４へ転送するよう命令し、コマンド４２８は転送デバイス１１０に対し、データストリーム内のパケットをリンク１２４へ転送するよう命令する。
【００８１】
一実施形態において、パスが完全に確立されるまで、パケットが制御デバイスを通って流れ続けることを確実にするべく、パスに沿ったルータが、出口ポイント（転送デバイス１０４）から入口ポイント（転送デバイス１０６）まで構成される。第１に、コマンド４２８は、転送デバイス１１０を構成する。第２に、コマンド４２６は、転送デバイス１１２を構成する。第３に、コマンド４２４は、転送デバイス１０８を構成する。第４に、コマンド４２２は、転送デバイス１０６を構成する。
【００８２】
図４Ａに戻って、パスが確立されるまで、ユーザ４４２は、データストリームのパケット（パケット４０２、４０４、４０６）の送信を継続する。上述のように、転送デバイス１０６は、パス上でこれらのパケットを制御デバイス１０２へ向かわせ続ける。
【００８３】
制御デバイス１０２は、これらのパケットを受信すると、図２の段階２１６であらかじめ決定された既定のパスを使用して、パケットを宛先へとルーティングする。このように、ネットワークを通るパスが確立されている間（図４Ｂで図示）、パケットは宛先へルーティングされ続けるので、初期パケットをエッジルータにバッファリングする必要性が回避される。
【００８４】
パスが設定されると（例えば、転送デバイスが新規ルーティングテーブルで構成されると）、制御デバイスによって設定された高速パスに沿ってデータが流れる。この時点で、データは制御デバイスを流れなくなるので、転送デバイスを通るより速い速度で、より低いエンドツーエンドのレイテンシで流れる。
［複数の制御デバイス］
【００８５】
図５は、複数の制御デバイスを有するネットワークを図示するダイアグラムである。図５で示されている例示的な実施形態において、制御デバイス１０２が転送デバイス１０４に接続され、制御デバイス５０４が転送デバイス１１０に接続され、制御デバイス５０６が転送デバイス５０６に接続される。
【００８６】
例示的な実施形態において、各制御デバイス１０２、５０４または５０６は、制御パケットを定期的に、または、様々な時間間隔で、各々に直接接続された転送デバイスへ送信する。そして、図２で図示されているのと同じプロセスに従って、各制御デバイスは、ネットワーク内の各転送デバイスに対し、双方向パスを確立する。
【００８７】
図５の例示的な実施形態において、各転送デバイスは、その隣接する転送デバイスのトポロジを示す情報、および、ネットワーク状態情報をネットワーク内の各制御デバイスへ送信する。この実施形態において、転送デバイスは、プロセス２００の段階２１６で確立された双方向パスを使用して、この情報を送信する。一実施形態において、転送デバイスは、この情報を制御デバイスに対し、定期的に、または、様々な時間間隔で送信する。
【００８８】
冗長性の目的で、単一の物理ネットワークが、複数のトポロジデータベースと共に、複数の制御デバイス上にミラーリングされ得る。これらの制御デバイスは各々、自身とネットワーク内の各ルータとの間で確立されたパスを有する。１つの制御デバイスへの既定パスに障害が発生した場合、トラフィックは異なる制御デバイスへのパスを選択し得る。
【００８９】
例示的な実施形態において、各転送デバイスは、データを転送する際、および、宛先への高速パスを確立する際、１度に１台の制御デバイスを選択する。この実施形態において、転送デバイスは選択アルゴリズムに基づいて、制御デバイスのいずれか１つを選択できる。選択アルゴリズムには、例えば、ラウンドロビンアルゴリズムがあり得る。また、転送デバイスは、制御デバイスを選択するアルゴリズムで、制御デバイスが１度にセットアップしようとしているネットワーク負荷、または、新規接続の数も考慮し得る。加えて、転送デバイスは、レイテンシがもっとも低いコントローラに対し、宛先への高速パスを確立するように依頼し得る。ラウンドロビンのアプローチは、最低レイテンシのアプローチと併せて使用され得る。例えば、デバイスは、コントローラへの複数のパスにわたって、トラフィックのバランスをとることを選択し得る。例えば、おそらく、もっとも近い５への丸め処理をメトリックに行い、その結果、３、４、５、６、７、のパフォーマンス値を５の値と同じように扱う。転送デバイスは、高速パスを作成するコントローラを選択するべく、もっとも低い丸め処理済みメトリックを有するコントローラの間でラウンドロビンアルゴリズムを採用し得る。これは、ネットワークが実世界の状況に対応する際に、パフォーマンス値のわずかな修正の影響を制限するのに役立つ。
【００９０】
一実施形態において、ネットワーク内の制御デバイスは、互いに同期する必要はない。制御デバイスに障害が発生した場合、制御デバイスから制御パケットを一定期間受信しなかった後で、転送デバイスは、その制御デバイスへのパスを維持するためのラベルを除去する。転送デバイスは、ラウンドロビンなどの同じ選択アルゴリズムによって、続けて他の制御デバイスを使用する。
【００９１】
複数の制御デバイスが存在することで、ネットワークのレジリエンスが大幅に向上する。制御デバイスに障害が発生した場合、または、制御デバイスに接続しているリンクに障害が発生した場合、転送デバイスは、ネットワーク内にある他の制御デバイスを続けて使用する。また、複数の制御デバイスは、ネットワーク内の負荷のバランスをとることにも役立つ。新規接続要求の数がより少ない制御デバイスをインテリジェントに選択することで、または、レイテンシがもっとも低いパスなどの最適パスを有する制御デバイスを選択することで、転送デバイスは、新規接続を要求する場合に、ネットワークの輻輳区間を回避できる。
［制御デバイスおよび転送デバイスモジュール］ 
【００９２】
図６は、制御デバイス１０２、およびそのモジュール、ならびに、転送デバイス１０４、およびそのモジュールを図示するダイアグラム６００を示している。
【００９３】
具体的には、制御デバイス１０２は、コントローラ検出モジュール６１０、パス決定モジュール６０８、データ転送モジュール６１２、および、トポロジデータベース６０６を含む。各種モジュールは、図２の方法に関して上述したように機能し得る。
【００９４】
コントローラ検出モジュール６１０は、転送デバイスのネットワークのトポロジを判定するように構成される。コントローラ検出モジュール６１０は、制御デバイスに直接接続されている転送デバイスへ制御パケットを送信する。制御パケットは、制御デバイスのアドレス、および、シリアル番号を含む。アドレスとシリアル番号の組合せを使用することで、各制御パケットはネットワーク全体で一意に識別され得る。
【００９５】
制御パケットがネットワークを通って移動するにつれて、制御パケットを受信する各転送デバイスは、自身のアドレスを制御パケットに追加する。また、各転送デバイスは、各制御パケットにネットワークの特性を示すメトリックを更新する。転送デバイスは、制御パケットを受信すると、制御パケットから、制御パケットが転送デバイスに到着すべく移動してきたパスが分かる。また、プロセス２００で説明されているように、転送デバイスは、パフォーマンスメトリック情報を使用して、複数の転送パケットが移動した複数のパスの中で、どのパスが制御デバイスへの最適パスであるか分かる。したがって、転送デバイスは、制御デバイスへの最適パスを動的に更新できる。
【００９６】
転送デバイスへのパスが設定された後で、コントローラ検出モジュール６１０は、ネットワーク内の転送デバイスから、トポロジおよびネットワーク状態情報を受信する。コントローラ検出モジュール６１０は、この情報、および、ネットワーク内の他の転送デバイスからの同様の情報を使用して、トポロジデータベース６０６を作成する。
【００９７】
トポロジデータベース６０６は、ネットワーク内の転送デバイスの検出されたトポロジを保存する。トポロジデータベース６０６は、転送デバイスおよびリンクが共にどのように接続されているかに関する現在のトポロジを反映する。また、トポロジデータベース６０６は、ネットワークの現在の状態を示す情報を保存する。ネットワークの状態には、ネットワークリンクまたはデバイス上のレイテンシ、パケット損失、輻輳、またはジッタが含まれ得る。
【００９８】
パス決定モジュール６０８は、新規ネットワーク接続のためのパスを確立する。転送元デバイスから接続の要求があると、パス決定モジュール６０８は、転送元デバイスから転送先デバイスへの接続パスを決定する。パス決定モジュール６０８は、パスを決定するのにトポロジデータベース６０６を使用する。トポロジデータベース６０６に保存されたトポロジおよびネットワーク状態情報を使用することで、パス決定モジュール６０８は、転送元デバイスから宛先への最適パスを発見できる。最適パスには、例えば、最短パス、または、遅延がもっとも少ないパス、または、パケット損失がもっとも少ないパスがあり得る。
【００９９】
接続のためのパスを決定後、パス決定モジュール６０８はまた、決定されたパス上にある各転送デバイスに対し、構成コマンドを送信する。図４Ｂの例示的な実施形態で図示されているように、パス決定モジュールは、構成コマンド４２２、４２４、４２６および４２８を作成し、送信する。構成コマンドは、対応する転送デバイスを構成する。構成された転送デバイスは、パス決定モジュール６０８によって決定された接続用パス上の接続に属するパケットをルーティングする。
【０１００】
データ転送モジュール６１２は、パス決定モジュールが接続用のパスを決定している間に、要求された接続に関する初期パケットを送り、構成コマンドを送信することによって転送デバイスを構成する。図４Ａで図示されているように、初期パケット４０２、４０４、４０６、４０８および４１０は、転送元デバイスから制御デバイスへのパスを通って、制御モジュールへ転送される。接続パスが確立されている間、データ転送モジュール６１２は、制御デバイスから転送先デバイスへのパスを通して初期パケットを転送する。
【０１０１】
図６で示されている例示的な実施形態において、転送デバイス１０４は、パス要求モジュール６２２、スイッチ検出モジュール６２４、ルーティングテーブル６２６、パフォーマンスメトリックモジュール６２８を含む。
【０１０２】
転送デバイスで新規データ接続の要求を受信した後、パス要求モジュール６２２は、メッセージをルーティング制御デバイスへ送信し、接続パスの確立を要求する。パス要求モジュール６２２は、プロセス２００の段階２１６で設定された制御デバイスへのパスを使用して、接続パスを確立するための要求を送信する。パス要求は、ルーティング制御デバイスに対し、転送元デバイスから転送先デバイスへのパスを決定するように命令する。パス決定モジュール６０８は次に、接続パスを決定し、決定されたパスに沿って新規データストリームを転送するように転送デバイスを構成する。
【０１０３】
スイッチ検出モジュール６２４は、制御デバイスのコントローラ検出モジュール６１０によって送信された制御パケットを受信する。スイッチ検出モジュール６２４は、方法２００の段階２１６で示されているように、転送デバイスから制御デバイスへのパスを決定する。一実施形態において、スイッチ検出モジュール６２４は、制御パケット内の情報、および、制御パケットを受信するポートに基づいて、この決定を下す。
【０１０４】
転送デバイスから制御デバイスへのパスを確立するべく、スイッチ検出モジュール６２４は、制御パケットを受信したポートに部分的に基づいて、ルーティング制御デバイスに到達するには、転送デバイス上のどのポート上でデータを転送するか識別する。
【０１０５】
一実施形態において、隣接するデバイスから到着する制御パケット内のパフォーマンスメトリックが、制御デバイスから最高のパフォーマンスを有する転送デバイスへのパスを示す場合、スイッチ検出モジュール６２４は、方法３００の段階３０６で示されているように、制御デバイスへルーティングするためのラベルを決定する。
【０１０６】
また、スイッチ検出モジュール６２４は、プロセス２００の段階２１４で示されているように、受信した制御パケットが最高のパフォーマンスのパスを示し、かつ、転送デバイスの他のポート上でまだ転送されていないかどうか判定した後で、制御パケットを受信したポートを除くそのポート上で、制御パケットをフラッディングする。
【０１０７】
転送デバイスのルーティングテーブル６２６には、ネットワーク内でデータパケットをどのように転送するかに関する情報が含まれている。構成コマンド４２２、４２４、４２６および４２８は、パケットをどのように転送するかに関する情報で、転送デバイス内のルーティングテーブルを更新する。また、制御デバイス１０２へのパスをセットアップするためのラベルを受信後、スイッチ検出モジュール６２４は、決定されたラベルに基づいて、ルーティングテーブル６２６内に転送ルールを確立する。
【０１０８】
パフォーマンスメトリックモジュール６２８は、受信制御パケットのパフォーマンスメトリックのフィールドを更新する。受信制御パケットには、制御デバイスから前の転送デバイスまでのパスのネットワークパフォーマンスメトリックを含むフィールドが含まれる。パフォーマンスメトリックモジュールは、現在の転送デバイスまでのパスのパフォーマンスを反映するように、パフォーマンスメトリックのフィールドを更新する。
【０１０９】
また、パフォーマンスメトリックモジュール６２８は、転送デバイスが、より良いパフォーマンスメトリックを有する他の制御パケットを以前に転送したかどうか判定する。パフォーマンスメトリックモジュール６２８は、スイッチ検出モジュール６２４に対し、より良いメトリックを有する、以前の同じ制御パケットが、転送デバイスポート上でフラッディングされたかどうか通知する。
［結論］
【０１１０】
本明細書で使用されるユーザという用語は、ネットワーク接続サービスを利用する企業の従業員など、ネットワーク接続サービスの顧客、および、サービス提供者自体のネットワーク管理者の両方を包含し得る。また、ユーザは異なる企業、または組織に所属し得る。
【０１１１】
トポロジデータベース６０６は、永続的なメモリを含む、任意の保存タイプの構造化メモリであってよい。例では、各データベースは、関係データベース、またはファイルシステムとして実装され得る。
【０１１２】
図６の複数のデバイスおよびモジュールのそれぞれは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装され得る。
【０１１３】
図６の複数のデバイス及びモジュールのそれぞれは、同じまたは異なる複数のコンピューティングデバイス上に実装され得る。そのようなコンピューティングデバイスは、限定されないが、パーソナルコンピュータ、携帯電話などのモバイルデバイス、ワークステーション、組み込みシステム、ゲームコンソール、テレビ、セットトップボックス、または、他の何らかのコンピューティングデバイスを含み得る。更に、コンピューティングデバイスは、限定されないが、命令を実行し格納するための、プロセッサと、非一時的メモリを含むメモリとを有するデバイスを含み得る。メモリは、データ及びプログラム命令を有形に具体化し得る。ソフトウェアは、１または複数のアプリケーションとオペレーティングシステムとを含み得る。ハードウェアは、限定されないが、プロセッサ、メモリ、およびグラフィカル・ユーザ・インタフェース・ディスプレイを含み得る。また、コンピューティングデバイスは、複数のプロセッサ、および複数の共有または別個のメモリ構成要素も有し得る。例えば、コンピューティングデバイスは、クラスタ化された又は分散された、コンピューティング環境またはサーバファームの一部または全体であってよい。
【０１１４】
「（ａ）」、「（ｂ）」、「（ｉ）」、「（ｉｉ）」などの識別子は、異なる要素または段階のために用いられることがある。これらの識別子は明確にするために用いられ、必ずしも要素または段階の順序を示すものではない。
【０１１５】
本発明は、複数の特定機能、および、それらの関係の実装を図示する複数の機能的構成単位を用いて上述された。これらの機能的構成単位の境界は、説明の利便性のために、本明細書で任意に画定された。複数の特定機能およびそれらの関係が適切に実行される限り、代替の境界が画定され得る。
【０１１６】
複数の具体的な実施形態についての前述の説明は、本発明の全般的性質を十分に明らかにしているので、当技術分野の技術内の知識を応用することで、過度の実験なしに、本発明の一般的概念から逸脱することなく、その他の人々がそのような複数の具体的な実施形態を様々な用途のために容易に修正し得る、および／または容易に改作し得る。したがって、そのような改作物および修正物は、本明細書に提供された教示および指導に基づいて、開示された複数の実施形態の均等物の趣旨内および範囲内であるよう意図されている。本明細書の語句または用語は、説明を目的とするものであって限定するものではなく、これにより本明細書の語句または用語は、教示および指導を考慮して当業者により解釈されることになることが理解されるべきである。
【０１１７】
本発明の広さおよび範囲は、上述された複数の例示的実施形態のいずれによっても限定されるべきではなく、次の特許請求の範囲及びその均等物のみに基づいて定義されるべきである。
本願によれば、以下の各項目もまた開示される。
［項目１］
複数の転送デバイスからルーティング制御デバイスへの複数の経路を検出する方法であって、
（ａ）前記複数の転送デバイスのうち、転送デバイスのポート上で、制御パケットを受信する段階と、
（ｂ）前記制御パケットを受信した前記ポートに少なくとも部分的に基づいて、前記ルーティング制御デバイスに到達させるべく、前記転送デバイスのどのポート上でデータを転送するか識別する段階と、
（ｃ）前記転送デバイスでの新規データストリームの受信に応答して、（ｂ）で識別された前記ポート上で、メッセージを前記ルーティング制御デバイスへ送信する段階であって、前記メッセージは前記ルーティング制御デバイスに対し、前記複数の転送デバイスを通る、宛先へのパスを決定することと、決定された前記パスに沿って前記新規データストリームを転送するように前記複数の転送デバイスのサブセットを構成することとを命令する、送信する段階と、
（ｄ）前記ルーティング制御デバイスの複数の構成コマンドに従って、前記新規データストリームを転送する段階と
を備える方法。
［項目２］
前記制御パケットは、前記ルーティング制御デバイスからのものであり、
前記ポートは、前記転送デバイスのデータリンク層ポートであり、前記転送デバイスを他の転送デバイスにリンクを介して接続し、
前記制御パケットは、パケットを前記他の転送デバイスから前記ルーティング制御デバイスへとルーティングするための推定時間を示すパフォーマンスメトリックを含み、
前記識別することは、前記パフォーマンスメトリックおよび前記制御パケットを受信した前記データリンク層ポートに少なくとも部分的に基づいており、
前記識別することは、前記転送デバイス上の、ＭＡＣアドレスによって識別されるどのデータリンク層ポートが、前記ルーティング制御デバイスへ到達するべくデータを転送するかを識別する
項目１に記載の方法。
［項目３］
前記送信する段階（ｃ）は、前記ルーティング制御デバイスを通して、前記新規データストリームの初期パケットを転送する段階を含む、項目１または２に記載の方法。
［項目４］
（ｅ）段階（ａ）で前記制御パケットを受信した前記ポートと異なる、前記転送デバイスの残りのポート上で、前記制御パケットを前記転送デバイスから他の転送デバイスへと転送する段階を更に含む、項目１から３のいずれか一項に記載の方法。
［項目５］
（ｆ）前記転送デバイスで、前記複数の転送デバイスのうち、他の転送デバイスへとラベルを送信し、前記ラベルは、前記転送デバイスで受信されるパケットに付加されている場合に、前記転送デバイスに対し、（ｂ）で識別された前記ポート上で前記ルーティング制御デバイスへ前記パケットを転送するように指示する段階を更に含む、項目４に記載の方法。
［項目６］
前記制御パケットが、パケットを前記転送デバイスから前記ルーティング制御デバイスへとルーティングするためのシリアル番号および好ましくは推定時間を含み、
前記方法は、
（ｆ）前記転送デバイスが、他の制御パケットを以前に転送したかどうかを判定する段階であって、前記他の制御パケットは、前記ルーティング制御デバイスからのものであり、前記シリアル番号を有し、パケットを前記転送デバイスから前記ルーティング制御デバイスへとルーティングする他の推定時間であって、前記制御パケット内の前記推定時間より少ない推定時間を有する、判定する段階を更に含み、
前記転送デバイスが、（ｆ）において、前記他の制御パケットを以前に転送していないと判定された場合に、前記転送する段階（ｅ）の段階を行う、
項目４または５に記載の方法。
［項目７］
（ｅ）（ｂ）で識別された前記ポート上でメッセージを前記ルーティング制御デバイスへと送信する段階であって、前記メッセージは、前記転送デバイスと、前記複数の転送デバイスのうち、前記転送デバイスが接続されている複数の他の転送デバイスとを識別する、送信する段階
を更に含み、
前記ルーティング制御デバイスは前記メッセージを使用してネットワークのトポロジを表すデータベースを構築し、かつ、前記データベースを使用して前記パスを決定する、
項目１から６のいずれか一項に記載の方法。
［項目８］
前記制御パケットは、前記ルーティング制御デバイスの識別子を含み、
（ｅ）前記転送デバイスのポート上で、他のルーティング制御デバイスの識別子を含む他の制御パケットを受信する段階と、
（ｆ）前記他の制御パケットを受信した前記ポートに少なくとも部分的に基づいて、前記転送デバイスのどのポート上でデータを転送し、前記他のルーティング制御デバイスへ到達させるか識別する段階と、
（ｇ）新規データストリームの前記転送デバイスでの受信に応答して、前記パスが前記複数の転送デバイスを通って構成されるよう命令する前記メッセージを、前記ルーティング制御デバイスおよび前記他のルーティング制御デバイスのいずれが送信するか決定する段階と
を更に含む、
項目１から７のいずれか一項に記載の方法。
［項目９］
ルーティング制御デバイスへの経路を検出するための転送デバイスであって、
（ｉ）前記転送デバイスのポート上で制御パケットを受信し、（ｉｉ）前記制御パケットを受信した前記ポートに少なくとも部分的に基づいて、前記ルーティング制御デバイスに到達させるべく、前記転送デバイスのどのポート上でデータを転送するか識別するように構成されたスイッチ検出モジュールと、
新規データストリームの前記転送デバイスでの受信に応答して、識別された前記ポート上で前記ルーティング制御デバイスへとメッセージを送信するように構成されたパス要求モジュールであって、前記メッセージは前記ルーティング制御デバイスに対し、（ｉ）複数の前記転送デバイスを通る、宛先へのパスを決定することと、（ｉｉ）決定された前記パスに沿って前記新規データストリームを転送するように、複数の前記転送デバイスのサブセットを構成することとを命令する、パス要求モジュールと、
前記ルーティング制御デバイスの複数の構成コマンドに従って、前記転送デバイスが前記新規データストリームを転送することを可能にするべくデータ入力された、前記転送デバイス内のルーティングテーブルと
を備える転送デバイス。
［項目１０］
前記ポートは、前記転送デバイスのデータリンク層ポートであり、前記転送デバイスを他の転送デバイスにリンクを介して接続し、
前記制御パケットは、パケットを前記他の転送デバイスから前記ルーティング制御デバイスへとルーティングするための推定時間を示すパフォーマンスメトリックを含み、
前記識別することは、前記パフォーマンスメトリックおよび前記制御パケットを受信した前記データリンク層ポートに少なくとも部分的に基づいており、
前記識別することは、前記転送デバイス上で、ＭＡＣアドレスによって識別されるどのデータリンク層ポートが、前記ルーティング制御デバイスへ到達するべくデータを転送するかを識別する
項目９に記載の転送デバイス。
［項目１１］
前記パス要求モジュールは更に、前記ルーティング制御デバイスを通して前記新規データストリームの初期パケットを転送するよう構成される、項目９または１０に記載の転送デバイス。
［項目１２］
前記スイッチ検出モジュールは、前記制御パケットを受信した前記ポートとは異なる前記転送デバイスの残りのポート上で、前記転送デバイスから他の転送デバイスへと前記制御パケットを転送するよう構成され、任意で、
前記スイッチ検出モジュールは、前記複数の転送デバイスの中の、他の転送デバイスへとラベルを送信するよう構成され、
前記ラベルは、前記転送デバイスで受信されたパケットに付加されている場合に、前記転送デバイスに対し、前記スイッチ検出モジュールによって識別された前記ポート上で、前記ルーティング制御デバイスへ前記パケットを転送するように指示する、
項目９から１１のいずれか一項に記載の転送デバイス。
［項目１３］
前記制御パケットは、前記転送デバイスから前記ルーティング制御デバイスへとパケットをルーティングするためのシリアル番号および好ましくは推定時間を含み、前記転送デバイスは更に、パフォーマンスメトリックモジュールを備え、
前記パフォーマンスメトリックモジュールは、前記転送デバイスが、他の制御パケットを以前に転送したかどうか判定するよう構成され、前記他の制御パケットは、前記ルーティング制御デバイスからのものであり、前記シリアル番号を含み、前記転送デバイスから前記ルーティング制御デバイスへとパケットをルーティングする他のパフォーマンスメトリックであって、前記制御パケット内のパフォーマンスメトリックより良い他のパフォーマンスメトリックを含み、
前記パス要求モジュールが、前記他の制御パケットを以前に転送しなかったと判定した場合に、前記転送を行う、
項目１２に記載の転送デバイス。
［項目１４］
前記スイッチ検出モジュールは更に、
識別された前記ポート上で前記ルーティング制御デバイスへメッセージを送信するよう構成され、前記メッセージは、前記転送デバイスと、前記転送デバイスが接続されている前記複数の転送デバイスのうち複数の他の転送デバイスとを識別し、
前記ルーティング制御デバイスは、ネットワークのトポロジを表すデータベースを構築するべく前記メッセージを使用し、前記パスを決定するべく前記データベースを使用するよう構成される、
項目１２または１３に記載の転送デバイス。
［項目１５］
前記制御パケットは、前記ルーティング制御デバイスの識別子を含み、前記スイッチ検出モジュールは更に、
前記転送デバイスのポート上で、他のルーティング制御デバイスの識別子を含む、他の制御パケットを受信し、
前記他の制御パケットを受信した前記ポートに少なくとも部分的に基づいて、前記他のルーティング制御デバイスに到達するべく、前記転送デバイスのどのポート上でデータを転送するか識別し、
新規データストリームの前記転送デバイス上での受信に応答して、前記パスが前記複数の転送デバイスを通って構成されるように命令するメッセージを、前記ルーティング制御デバイス、および前記他のルーティング制御デバイスのいずれに送信するか決定するよう構成される
項目１２から１４のいずれか一項に記載の転送デバイス。
［項目１６］
複数の転送デバイスからルーティング制御デバイスへの経路を検出するための方法を少なくとも１つのマシンに実行させるプログラムであって、前記方法は、
（ａ）前記複数の転送デバイスのうち、転送デバイスのポート上で、制御パケットを受信する段階と、
（ｂ）前記制御パケットを受信した前記ポートに少なくとも部分的に基づいて、前記ルーティング制御デバイスへ到達させるべく、前記転送デバイスのどのポート上でデータを転送するか識別する段階と、
（ｃ）新規データストリームの前記転送デバイスでの受信に応答して、（ｂ）で識別された前記ポート上で、メッセージを前記ルーティング制御デバイスへ送信する段階であって、前記メッセージは前記ルーティング制御デバイスに対し、前記複数の転送デバイスを通る、宛先へのパスを決定することと、決定された前記パスに沿って前記新規データストリームを転送するように前記複数の転送デバイスのサブセットを構成することとを命令する、送信する段階と、
（ｄ）前記ルーティング制御デバイスの複数の構成コマンドに従って、前記新規データストリームを転送する段階と
を備える、プログラム。
［項目１７］
前記ポートは、前記転送デバイスのデータリンク層ポートであり、前記転送デバイスを他の転送デバイスにリンクを介して接続し、
前記制御パケットは、パケットを前記他の転送デバイスから前記ルーティング制御デバイスへとルーティングするための推定時間を示すパフォーマンスメトリックを含み、
前記識別することは、前記制御パケットおよび前記パフォーマンスメトリックを受信した前記データリンク層ポートに少なくとも部分的に基づいており、
前記識別することは、前記転送デバイス上で、ＭＡＣアドレスによって識別されるどのデータリンク層ポートが、前記ルーティング制御デバイスへ到達するべくデータを転送するかを識別する
項目１６に記載のプログラム。
［項目１８］
前記送信する段階（ｃ）は、前記新規データストリームの初期パケットを前記ルーティング制御デバイスを通して転送する段階を含む、項目１６または１７に記載のプログラム。
［項目１９］
前記方法は、（ｅ）（ａ）で前記制御パケットが受信された前記ポートと異なる、前記転送デバイスの残りのポート上で、前記制御パケットを前記転送デバイスから他の転送デバイスへと転送する段階を更に含み、任意で、
前記方法は、
（ｆ）前記転送デバイスで、前記複数の転送デバイス中の他の転送デバイスにラベルを送信する段階を更に備え、前記ラベルは、前記転送デバイスで受信されたパケットに付加されている場合に、前記転送デバイスに対し、（ｂ）で識別された前記ポート上で、前記ルーティング制御デバイスへ前記パケットを転送するよう指示する、項目１６から１８のいずれか一項に記載のプログラム。
［項目２０］
前記制御パケットは、前記転送デバイスから、前記ルーティング制御デバイスへと、パケットをルーティングするためのシリアル番号および好ましくは推定時間を含み、前記方法は、
（ｆ）前記転送デバイスが、以前に転送された他の制御パケットを有するかどうか判定する段階であって、前記他の制御パケットは、前記ルーティング制御デバイスからのものであり、前記シリアル番号を有し、パケットを前記転送デバイスから前記ルーティング制御デバイスへとルーティングする他の推定時間であって、前記制御パケット内の前記推定時間より少ない推定時間を有する、判定する段階
を更に備え、
前記転送デバイスが、（ｆ）において、前記他の制御パケットを以前に転送していないと判定された場合に、前記転送する段階（ｅ）の転送段階を行う、
項目１９に記載のプログラム。
［項目２１］
前記方法は、（ｅ）（ｂ）で識別された前記ポート上で前記ルーティング制御デバイスへメッセージを送信する段階であって、前記メッセージは、前記転送デバイスと、前記転送デバイスが接続されている、前記複数の転送デバイスのうち複数の他の転送デバイスとを識別する段階を更に備え、
前記ルーティング制御デバイスは、ネットワークのトポロジを表すデータベースを構築するべく前記メッセージを使用し、前記パスを決定するべく前記データベースを使用する、
項目１６から２０のいずれか一項に記載のプログラム。
［項目２２］
前記制御パケットは、前記ルーティング制御デバイスの識別子を含み、
前記方法は、
（ｅ）前記転送デバイスのポート上で、他のルーティング制御デバイスの識別子を含む他の制御パケットを受信する段階と、
（ｆ）前記転送デバイスの受信した前記ポートに少なくとも部分的に基づいて、前記他のルーティング制御デバイスへ到達するべく、前記転送デバイスのどのポート上でデータを転送するか識別する段階と、
（ｇ）新規データストリームの前記転送デバイスでの受信に応答して、前記複数の転送デバイスを通る前記パスが構成されるように命令する前記メッセージを、前記ルーティング制御デバイス、および、前記他のルーティング制御デバイスのいずれに送信するか決定する段階と
を更に含む、項目１６から２１のいずれか一項に記載のプログラム。
［項目２３］
複数の転送デバイスのネットワークにおいて、少なくとも、転送デバイスのポートに接続されている、ルーティング制御デバイスであって、
前記複数の転送デバイスの前記ネットワークのトポロジを判定するよう構成されたコントローラ検出モジュールと、
前記ネットワークのトポロジを保存するよう構成されたトポロジデータベースと、
前記ルーティング制御デバイスから、前記ネットワーク内の各転送デバイスへのパスを確立し、
前記ネットワーク内の前記転送デバイスのそれぞれから前記ルーティング制御デバイスへのパスを確立し、
転送元デバイスからの接続要求を受けると、前記転送元デバイスから転送先デバイスへの接続パスを確立する
よう構成されたパス決定モジュールと、
前記接続パスが確立されている間、前記転送元デバイスから前記ルーティング制御デバイス、および、前記ルーティング制御デバイスから前記転送先デバイスまでの前記パスを通して、前記接続要求に対して少なくとも１つの初期パケットを送るよう構成されたデータ転送モジュールと
を備える、ルーティング制御デバイス。
【図１Ａ】
0006576006.tif 000002
【図１Ｂ】
0006576006.tif 000003
【図１Ｃ】
0006576006.tif 000004
【図２】
0006576006.tif 000005
【図３】
0006576006.tif 000006
【図４Ａ】
0006576006.tif 000007
【図４Ｂ】
0006576006.tif 000008
【図５】
0006576006.tif 000009
【図６】
0006576006.tif 000010