これ以降、類似する番号が類似するコンポーネントまたはステップを示す図面を参照して、さまざまな例示的な実施形態の広範な態様が開示される。
図1は、データパケットをルーティングするための例示的なネットワーク100を示す。例示的なネットワークは、さまざまなアプリケーションにデータ転送を行なうためのパケット交換通信ネットワークであってもよい。例示的なネットワーク100はさらに、ネットワーク内の変化に応答してルーティング情報を自動更新するための規格を実施することができる。たとえば、ネットワーク100は、オープンショーテストパスファースト(OSPF)規格を実施する自律システムを構成することができる。
例示的なネットワークは、複数のノードA−G 110−170を含むことができる。各ノードA−G 110−170は、ルータ、スイッチ、またはデータパケットを受信してパケットのそれぞれの宛先に向けて転送するように構成された他のネットワーク機器であってもよい。各ノードはまた、追加のネットワークデバイスおよびエンドユーザ機器のような、複数の追加のデバイス(図示せず)に接続されてもよい。
ノードA−G 110−170は各々、1つまたは複数のリンクを介して1つまたは複数の他のノードA−G 110−170に接続されてもよい。各リンクは、リンクコストに関連付けられてもよい。たとえば、ノードC130は、コスト2を有するリンクを介してノードD140に接続されてもよい。このリンクコストは、たとえば、ノード間の地理的距離、ノード間の中間デバイスの数、リンクに関連付けられているビットレート、および/またはリンクの現在の負荷のようなさまざまな要因に基づいて割り当てられてもよい。一部のリンクは、障害が生じているため、パケットの転送には望ましくないこともある。そのようなリンクは、それに応じて、使用を妨げるように、非常に高いかまたは無限のリンクコストを割り当てられてもよい。
動作中、ネットワーク100の特性は変化することがある。たとえば、ノードB120とノードG170の間のリンクの場合のように、以前障害の発生したリンクが復元されることがある。他のネットワークの変化は、たとえば、リンクコストが変化すること、ノードまたはリンクが障害状態に入ること、ノードまたはリンクが障害状態から回復すること、ノードまたはリンクが追加されること、および/またはノードまたはリンクが除去されることを含むことができる。
そのようなネットワーク変化の後、更新メッセージが他のノードに伝送されてもよい。たとえば、例示的なネットワーク100のOSPF実施態様において、ノードB120は、リンク状態アドバタイズメント(LSA)180をノードC130に伝送して、ノードB120とノードG170の間のリンクが障害状態から回復して、現在は10のリンクコストを有することを指示することができる。ノードB120とノードG170はさらに、類似または同一のLSA(図示せず)を、接続されているすべての他のノードに伝送することができる。OSPF規格によれば、次いでLSAは、受信ノードのこのグループによって、そのすべての隣接ノードに渡される。このようにして、各ノードは、リンクの新しい状況を指示するLSAを受信する。
すべてのLSAが、必ずしもすべてのノードA−G 110−170に関連するわけではない。たとえば、復元されたリンクは、ノードB120とノードG170の間の直接のトラフィックの最善パスであってもよいが、ノードC130は引き続き、それらの両方のノードへのその事前に確立されているパスを使用することができる。
各ノードA−G 110−170は、例示的なネットワーク100のローカル表現を格納することができる。そのようなローカル表現は、OSPFに従って他のノードA−G 110−170によって伝送されたLSAメッセージで搬送された情報からローカルに構築されてもよい。たとえば、各ノードは、リンク状態データベース(LSDB:Link State Database)のすべてのノードおよびエッジの指示を格納することができる。そのような表現は、最短パスツリーを構築するため、および最終的に、パケットをそれぞれの宛先に転送する際に使用する転送テーブルを構築するため、各ノードA−G 110−170によって使用されてもよい。
図2は、1つのノードから複数の他の可能なノードへの最適パスを決定するための例示的な最短パスツリー(SPT)200を示す。SPT200は、当業者に知られている任意の方法を使用して、例示的なネットワーク100のようなネットワークの現在の状態の表現から構築されてもよい。たとえば、ノードはダイクストラの最短経路ツリー(Djikstra’s Shortest Path Tree)アルゴリズムを使用してSPTを構築することができる。
SPT200は、例示的なネットワーク100を考慮すると、ノードC130によって構築されたSPTであってもよい。SPT200は、ノードA−G 110−170に対応する複数のノード表現A−G 210−270を含むことができる。SPT200は、ノードC130からネットワーク内の各ノードへの最適パスを指示することができる。たとえば、SPT200は、ノードC130からノードG170への最短パスが、ノードB120または他のパス経由ではなく、ノードD140を経由することを指示する。したがって、ノードG170に宛てられた、ノードC130によって受信されたパケットは、SPT200に従ってノードD140に転送される必要がある。次に、ノードD140は、パケットをノードG170に転送できるようにする自身のルーティング情報を含むことができる。
SPT200を計算した後、ノードC130は、例示的なネットワーク100の状態を反映するように、その転送テーブルを更新することができる。特に、ノードC130は、SPT200を分析して、考えられる宛先ノードごとに使用されるべきネクストホップノードを決定することができる。次いで、この情報は、パケットを転送するときに迅速にアクセスできるよう転送テーブルに格納されてもよい。
図3は、パケット宛先に基づいてパケットが伝送されるべきネクストホップを決定するための例示的な転送テーブル300を示す。転送テーブル300は、たとえば、ノードC130に格納されているデータベース内のテーブルであってもよい。あるいは、転送テーブル300は、一連のリンクされたリスト、アレイ、または類似するデータ構造であってもよい。したがって、転送テーブル300は、基礎をなすデータの抽象化であり、基礎をなすデータの格納に適した任意のデータ構造が使用されてもよいことが明らかとなろう。
転送テーブル300は、宛先フィールド302、およびネクストホップフィールド304を含むことができる。宛先フィールド302は、対応するエントリが関連付けられている宛先デバイスを指示することができ、ネクストホップフィールド304は、関連する宛先デバイスに適切なネクストホップデバイスを指示することができる。転送テーブル300が、いくつかの点で、簡略化されたものであることは明らかとなろう。たとえば、転送テーブルは、発信ポート番号、宛先MACアドレス、および/または代替ネクストホップのような、追加のフィールドを含むことができる。さまざまな変形が、当業者には明らかとなろう。例示的なテーブル300に示されるデータが、いくつかの点で、抽象化および/または簡略化されたものであり、たとえば、宛先フィールド302は1つまたは複数の宛先ノードのアドレスを格納することができることが明らかとなろう。
転送テーブルは、複数のエントリ310−370を含むことができる。エントリ310は、ノードA110に宛てられたパケットが、ノードB120に転送される必要があることを指示することができる。同様に、エントリ320は、ノードB120に宛てられたパケットが、そのノードに直接転送される必要があることを指示することができる。エントリ340−370は、ノードD−G 140−170に宛てられたパケットが、それぞれ、ノードD140に転送される必要があることを指示することができる。
例示的なネットワーク100のコンポーネントを説明してきたが、例示的なネットワーク100の動作の概要がこれ以降説明される。後段の説明が例示的なネットワーク100の動作の概要を提供することを意図されており、したがって若干簡略化されたものであることは明らかとなろう。例示的なネットワーク100の詳細な動作は、図4−図10に関連して以下でさらに詳細に説明される。
ノードC130がLSA180を受信した後、ノードC130は、LSAが、ノードA110、ノードD140、および/またはノードE150のような他のノードに伝搬されるべきであるかどうかを決定することができる。ノードC130は、SPT200に助言を求め、ノードB120とノードG170の間のリンクを現在使用していないことを決定する。次いで、ノードC130は、LSA180に基づいて新しいSPTを計算し、新しいSPTが現在のSPTと同一であり、したがってLSA180を他のいずれのノードにも伝搬することを控えることを決定することができる。
ノードC130はまた、LSA180のローカル処理が、たとえば100msのような期間だけ遅延されるべきであると決定することもできる。この100msが経過すると、ノードC130は、LSA180および遅延中に到着したであろうあらゆる他のLSA(図示せず)を考慮してそのルーティング情報の更新を開始することができる。
図4は、パケットをルーティングして、リンク状態アドバタイズメント(LSA)に関連するネットワークオーバーヘッドを軽減するための例示的なネットワークノード400を示す。ネットワークノード400は、例示的なネットワーク100の1つまたは複数のノードA−G 110−170に対応することができる。ネットワークノード400は、パケット受信機405、リンク状態アドバタイズメント識別子410、ルーティングプロセッサ420、パケット送信機425、転送テーブルストレージ430、リンク状態アドバタイズメントリレーモジュール440、リンク状態データベース450、最短パスツリー生成器460、転送テーブル生成器470、および/または最短パスツリー遅延モジュール480を含むことができる。
パケット受信機405は、他のネットワークデバイスからパケットを受信するように構成されたハードウェア、および/または機械可読ストレージ媒体上の符号化された実行可能命令を備えるインターフェイスであってもよい。パケット受信機405は、複数のポートを含むことができ、複数のネットワークデバイスからパケットを受信することができる。たとえば、パケット受信機405は、リンク状態アドバタイズメントパケット、および通常のネットワークトラフィックに関連するパケットを受信することができる。
リンク状態アドバタイズメント(LSA)識別子410は、受信したパケットがノード400の処理すべきLSAであるかどうかを決定するように構成されたハードウェア、および/または機械可読ストレージ媒体上の実行可能命令を含むことができる。パケットがLSAである場合、LSA識別子410は、たとえばLSAリレーモジュール440および/またはSPT遅延モジュール480にLSAを渡すことによって、新しいLSAが到着したことをそれらのコンポーネントに通知することができる。それ以外の場合、LSA識別子は、パケットを、さらにルーティングするためにルーティングプロセッサ420に渡すことができる。
本明細書において説明されるさまざまな実施形態は、OSPFに従って構築されたリンク状態アドバタイズメントを使用するシステムに関するが、さまざまな実施形態が代替のネットワーク更新メッセージを使用する他の規格と共に機能できることに留意されたい。したがって、LSA識別子410は、汎用ネットワーク更新メッセージ識別子と見なされてもよい。そのような他の規格を伴う実施態様に有用な変更が、当業者には明らかとなろう。
ルーティングプロセッサ420は、パケットをそれぞれの宛先にルーティングするように構成されたハードウェア、および/または機械可読ストレージ媒体上の実行可能命令を含むことができる。ルーティングプロセッサ430は、受信した各パケットから宛先を抽出し、転送テーブルストレージ430に格納されている転送テーブルを使用してその宛先のネクストホップを決定することができる。次いで、ルーティングプロセッサ420は、パケットを、送信機425を介して適切なネクストホップに転送することができる。
パケット送信機425は、他のネットワークデバイスにパケットを送信するように構成されたハードウェア、および/または機械可読ストレージ媒体上の符号化された実行可能命令を備えるインターフェイスであってもよい。パケット送信機425は、複数のポートを含むことができ、複数のネットワークデバイスにパケットを送信することができる。たとえば、パケット送信機425は、リンク状態アドバタイズメントパケット、および通常のネットワークトラフィックに関連するパケットを送信することができる。
転送テーブルストレージ430は、転送テーブルを格納することができる任意の機械可読媒体であってもよい。したがって、転送テーブルストレージ430は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス、および/または類似するストレージ媒体のような機械可読ストレージ媒体を含むことができる。
リンク状態アドバタイズメント(LSA)リレーモジュール440は、受信した各LSAがネットワーク内の他のノードに伝搬されるべきであるかどうかを決定するように構成されたハードウェア、および/または機械可読ストレージ媒体上の実行可能命令を含むことができる。たとえば、さまざまな実施形態において、LSAリレーモジュール440は、それらのLSAがローカルルーティング情報に影響を及ぼす可能性がある場合に限り、他のノードに伝搬されるべきであることを決定することができる。そのような決定を行なうためのさまざまな方法について、図5−図7に関連して以下でさらに詳細に説明される。
受信したLSAを転送するかどうかを決定するために、代替または追加の基準が使用されてもよい。たとえば、LSAリレーモジュール440は、LSAが別のノードのルーティング情報に影響を及ぼすかどうかを推定し、その後、影響を受ける可能性のあるノードにLSAを転送することができる。もう1つの例として、LSAリレーモジュール440は、後続のLSAをグループ化するよう試み、他のLSAをオーバーライドする傾向のあるいずれのLSAも伝搬することを控えることができる。LSAの他のノードに対する関連性を決定するための他の方法は、当業者には明らかとなろう。
さまざまな代替的な実施形態によれば、ルーティング情報の更新がLSAに必要とされない場合にLSAの伝搬を控えるのではなく、LSAリレーモジュール440は、マーク済みのLSAを構築し、その後マーク済みLSAを転送することができる。そのような構築は、全く新しいLSAを構築すること、またはマーク済みLSAを生成するために受信したLSAのビットまたはフィールドに単にマークを付けることを含むことができる。たとえば、LSAリレーモジュール440は、LSAがルーティング情報の変更に至らなかったことを指示するために、LSAのヘッダにビットを設定することができる。次いで、LSAリレーモジュール440は、LSAを、OSPFごとに少なくとも1つの他のノードに転送することができる。次いで、そのような他のノードは、LSAを処理するかどうか、およびどのように処理するかを決定する場合に、そのビットを考慮に入れることができる。たとえば、そのようなマーク済みLSAを受信するノードは、送信ノードがリンクへのその現在のパス上にあるか、またはLSAによって識別されたノードであるかどうかを決定することができる。その場合、受信側ノードはLSAを無視することができる。それ以外の場合、受信側ノードはLSAを通常通り処理することができる。
追加の代替的な実施形態によれば、LSAリレーモジュール440は、メッセージ全体を伝搬することを控えるのではなく、無関係なLSAを遅延させることができる。そのような実施形態によれば、LSAがノードのルーティング情報に全く関係がないと判断される場合、LSAは後に伝送されるように遅延されてもよい。たとえば、LSAは、他の遅延されたパケットと共にキューに入れられてもよい。そのようなキュー内のすべてのメッセージは、所定の時間間隔が経過したことを定期タイマーが指示した後、他のノードに伝送されてもよい。もう1つの例として、そのようなLSAは、単にキューに入れられ、別のLSAが受信されて伝搬される場合に伝送されてもよい。次いで、2つのLSAは一緒に伝送されてもよい。
リンク状態データベース(LSDB)450は、現在のネットワーク状態の表現を格納することができる任意の機械可読媒体であってもよい。LSDB450は、たとえば、自律システム内のあらゆるノードおよびリンクの指示を格納することができる。したがって、LSDB450は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス、および/または類似するストレージ媒体のような機械可読ストレージ媒体を含むことができる。LSDB450は、ノード400内の独立したストレージデバイスであってもよいか、または転送テーブルストレージ430と同じものであってもよい。
最短パスツリー(SPT)生成器460は、ネットワークの表現から最短パスツリーを生成するように構成されたハードウェア、および/または機械可読ストレージ媒体上の実行可能命令を含むことができる。たとえば、SPT生成器460は、ダイクストラのアルゴリズムまたは当業者に知られている任意の他の方法を使用して、LSDB450に格納されているデータから最短パスツリーを生成することができる。SPTを生成した後、SPT生成器460は、SPTを転送テーブル生成器470に伝送することができる。
転送テーブル生成器470は、SPTに基づいて転送テーブルを生成するかまたは更新するように構成されたハードウェア、および/または機械可読ストレージ媒体上の実行可能命令を含むことができる。たとえば、転送テーブル生成器470は、ネットワークノード400の現在のSPTに基づいて、転送テーブルストレージ430の任意のエントリが追加または変更されるべきであるかどうかを決定することができる。次いで、転送テーブル生成器470は、そのような更新を、たとえば、エントリを追加または除去するか、もしくは1つまたは複数のエントリのネクストホップを変更することによって実行することができる。
ノード400はOSPFのさまざまな態様に従って機能するように説明されるが、本明細書において説明される方法が他の規格に適用可能な場合があることに留意されたい。他の規格に準拠するための適切な変更が、当業者には明らかとなろう。したがって、SPT生成器460および転送テーブル生成器470は、単独または全体として、汎用「ルーティング情報生成器」と見なされてもよい。
最短パスツリー(SPT)遅延モジュール480は、着信LSAの処理を遅延させるように構成されたハードウェア、および/または機械可読ストレージ媒体上の実行可能命令を含むことができる。さまざまな実施形態によれば、SPT遅延モジュール480は、LSAに関連付けられているさまざまな基準に基づいて遅延時間を生成し、遅延時間が経過するまで待機して、その後LSAを処理するようSPT生成器460に指示することができる。このプロセスは、図5および図8に関してさらに詳細に説明される。遅延時間が経過するまで待機する間に、追加のLSAが受信される場合、SPT遅延モジュール480は、元のLSAの処理が当初指定されているよりも早くまたは遅く生じるように、遅延時間を更新することができる。そのような時間において、SPT生成器460は、最初に受信したLSAのみを処理するか、または代わりに遅延中に受信したすべてのLSAを処理することができる。
図5は、LSAに関連するネットワークのオーバーヘッドを軽減するための例示的な方法500を示す。方法500は、たとえば、LSA識別子410、LSAリレーモジュール440、SPT生成器460、転送テーブル生成器470、および/またはSPT遅延モジュール480のような、ネットワークノード400のさまざまなコンポーネントによって実行されてもよい。
方法500は、ステップ505で開始して、ステップ510に進むことができ、ここでノード400がLSAを受信して識別することができる。さまざまな代替的な実施形態によれば、本明細書において説明される方法は、受信したLSAのサブセットにしか適用されない。たとえば、方法500は、OSPF規格によって定義される、タイプ1、2、または8のLSAのみに適用することができる。そのような実施形態によれば、ノード400が別のタイプのLSAを識別する場合、LSAは、OSPFによって定義されている方法のような代替的な方法に従って処理されてもよい。
次いで、方法500は、ステップ520に進むことができ、ここでノード400は、リンクまたはノードがパケットのルーティングに使用可能であることをLSAが指示するかどうかを決定することができる。指示する場合、方法500は、ステップ530へと進むことができ、ここでノード400がそのローカルルーティング情報を分析することができる。たとえば、ノード400は、現在のSPTが当該のノードまたはリンクを含むかどうかを決定することができる。さまざまな実施形態は、代替として、または追加的に、ステップ530において、LSAで識別されているノードまたはリンクの存在があるかどうか他のルーティング情報を調べることができる。たとえば、ノード400は、転送テーブルを参照することができる。したがって、ステップ530は概して、ノードまたはリンクの存在があるかどうか関連するネットワークパス構造を調べることができる。リンクまたはノードがすでにSPTまたは他のルーティング情報内にある場合、LSAは、関連性がほとんどないかまたは全くないと決定される。したがって、方法500は、ステップ585に進んでLSAを伝搬することなく終了する。
一方、リンクまたはノードが現在のSPTに見出されない場合、方法500はステップ540に進むことができる。ステップ540において、ノード400は、さらなる処理を行なうことなく、LSAを他のノードに単に転送することができる。あるいは、ノード400は、LSAが転送されるべきかどうかを決定する前に、LSA関連性の追加の推定を行なうことができる。そのような追加の手順の例は、図6および図7に関して以下でさらに詳細に説明される。次いで、方法500は、ステップ550に進むことができ、ここでノード400がローカル転送テーブルを更新するようにLSAを処理することができる。このステップは、以下の図8を参照してさらに詳細に説明されるように、しばらくの間処理を遅延させることを含むことができる。次いで、方法500は、ステップ585に進んで終了することができる。
ステップ520に戻り、ノードまたはリンクが現在使用可能ではないとLSAが指示することが決定される場合、方法500は代わりにステップ560へと進むことができる。たとえば、LSAは、ノードまたはリンクがパケットのルーティングに現在使用不可能であることを指示することができる。ステップ560は、当該のノードまたはリンクがSPTまたは他のルーティング情報によって使用されるかどうかをノード400が決定するという点において、ステップ530と類似していてもよい。当該のノードまたはリンクがSPTまたは他のルーティング情報によって使用される場合、方法500はステップ570に進むことができる。ステップ570は、ステップ540と類似していてもよい。あるいは、ステップ570は、LSAが転送されるべきかどうかを決定するために異なる処理を使用することができる。次いで、方法500はステップ580に進むことができ、ここで、ステップ550と同様に、LSAがローカルに処理されてもよい。次いで、方法500は、ステップ585で終了することができる。
ステップ560において、代わりに、当該のノードまたはリンクがSPTによって使用されないことが決定される場合、方法585は、LSAを他のいずれのノードにも転送することなく、ステップ585で単に終了することができる。さまざまな代替的な実施形態において、LSAのローカル処理は、完全に独立したLSAの伝搬であってもよい。したがって、ステップ550および/またはステップ580と類似するステップは、ステップ520、530、560の結果とはかかわりなく実行されてもよい。
図6は、LSAを伝搬するかどうかを決定するための例示的な方法600を示す。方法600は、たとえば、LSAリレーモジュール440、SPT生成器460、および/または転送テーブル生成器470のような、ネットワークノード400のさまざまなコンポーネントによって実行されてもよい。方法600は、方法500のステップ540および/またはステップ570に対応することができる。さまざまな代替的な実施形態において、方法600は、方法500のステップ520−580のうちの少なくとも一部の代わりに実施されてもよい。
方法600は、ステップ605で開始してステップ610に進むことができ、ここでノード400が、以前受信したLSAによって搬送された情報をリンク状態データベース(LSDB)450または他のストレージに追加することができる。次いで、ステップ620において、ノード400は、新たに受信した情報を考慮に入れて、新しいSPTを計算することができる。次いで、方法600はステップ630に進むことができ、ここでノード400が、新しいSPTに基づいて、新しい転送テーブルを計算するか、または以前の転送テーブルを更新することができる。
ステップ640において、ノード400は、新たに計算されたかまたは更新された転送テーブルが以前の転送テーブルと異なっているかどうかを決定することができる。2つのテーブルが異なっており、それによりLSAが関連するネットワーク状態情報を含むことを表す場合、方法600はステップ650へと進むことができ、ここでノード400がLSAを他のノードに転送する。しかし、LSAが転送テーブルの変更に至らなかった場合、方法600は、ステップ640から直接ステップ655に進んで終了する。
図7は、LSAを伝搬するかどうかを決定するためのもう1つの例示的な方法700を示す。方法700は、たとえば、LSAリレーモジュール440のような、ネットワークノード400のさまざまなコンポーネントによって実行されてもよい。例示のために、方法700の説明の中で、ノード400は「k」と称されることもある。方法700は、方法500のステップ540および/またはステップ570に対応することができる。さまざまな代替的な実施形態において、方法700は、方法500のステップ520−580のうちの少なくとも一部の代わりに実施されてもよい。
方法700は、ステップ705で開始して、ステップ710に進むことができ、ここでノード400が以前受信したLSAの分析を開始する。ノード400は、LSAに関連するリンクごとに、方法700またはその一部を実行することができる。たとえば、LSAは、1つまたは複数のリンクが接続している単一のリンクまたはノードの状況を記述することができる。ノード400は、リンクのエンドポイントiおよびjを決定することができ、リンクに関連付けられているリンクコストc(i、j)を決定することができる。次いで、ステップ720において、ノード400は、第1のリンクエンドポイントへの現在のパスのコストs(k、i)を決定することができる。同様に、ステップ730において、ノード400は、第2のリンクエンドポイントへの現在のパスのコストs(k、j)を決定することができる。
ステップ740で開始して、ノード400は、リンクがよりコストの低いパスを任意のノードに提供するかどうか、ひいてはSPTが再計算されるべきであるかどうかを決定することができる。ステップ740において、ノード400は、新しいリンクを経由するリンクエンドポイントiへのパスが、エンドポイントiへの以前使用されたパスよりもコストが低いかどうかを決定することができる。同様に、ステップ750において、ノード400は、新しいリンクを経由するリンクエンドポイントjへのパスが、エンドポイントjへの以前使用されたパスよりもコストが低いかどうかを決定することができる。それらの新しい考えられるパスのいずれも、以前使用されたパスよりコストが低くならない場合、方法700は、LSAを他のノードに転送することなく、ステップ775において終了することができる。
一方、新しい考えられるパスのいずれかが、以前使用されたパスよりも優れている場合、方法700はステップ760に進むことができる。さまざまな代替的な実施形態において、ノード400はこの時点においてLSAを単に転送し、方法は終了することができる。しかし、例示的な方法700において、ノード400は追加的に、別のノードが、LSAの関連しうるノードにLSAをすでに伝搬してしまっているかどうかを決定する。したがって、ステップ760において、ノード400は、リンクエンドポイントiおよびjの各々へのパスが任意の共通のルータを共有するかどうかを決定することができる。共有する場合、方法700は、ステップ775で単に終了することができる。
しかし、パスが共通のルータを共有しない場合、ステップ770において、ノード400はLSAを伝搬することができる。ノード400は、近隣ノードの各々に、または代替として、現在2つのパスのいずれにも属していない近隣ノードのみに、LSAを伝搬することができる。次いで、方法700は、ステップ775で終了することができる。
図8は、受信したLSAの処理を遅らせるための例示的な方法800を示す。方法800は、たとえば、SPT遅延モジュール480のような、ネットワークノード400のさまざまなコンポーネントによって実行されてもよい。方法800は、方法500のステップ550および/またはステップ580に対応することができる。さまざまな代替的な実施形態において、方法800は、方法500のステップ520−580のうちの少なくとも一部の代わりに実施されてもよい。
方法800は、ステップ805で開始してステップ820に進むことができ、ここでノード400が、LSAによって識別された各リンクのエンドポイントにどのノードが位置するかを決定するためにLSAを解釈することができる。このステップは単に、LSAの処理において以前解釈された情報を読み取ることを含むことができる。ステップ810および820において、ノード400は、それぞれ、リンクエンドポイントiおよびjの各々への距離を決定することができる。この距離メトリックは、各ノードへのホップの数、地理的距離、各ノードへの現在のパスのコスト、および/または他の情報を含むことができる。
次いで、ステップ840において、ノード400は、LSAを処理するまでにノード400がどのくらい長く待機すべきかを決定するため、2つの距離のうち短い方を使用する。この決定は、たとえば、決定された最小距離を変数として使用する数学関数を適用するか、またはさまざまな可能な距離に関連付けられている所定の遅延のテーブルを読み取ることによって行なわれてもよい。
各LSAの遅延の長さを決定するために他の方法が採用されてもよいことに留意されたい。たとえば、さまざまな代替的な実施形態は、遅延時間を決定する場合、受信したLSAのタイプ、LSAによって指示された状態の変化、または他の最近受信したLSAの数を考慮に入れることができる。
ステップ850において、ノード400は、遅延時間が経過するのを待機することができる。たとえば、ノード400は、遅延時間と等しい時間にわたりルーティング情報更新プロセスを中断することができる。この待機期間中、追加のLSAはノード400に到着することができる。そのようなLSAは、将来の処理のためにLSAスタックまたは他のデータ構造に配置されてもよい。さらに、そのような追加のLSAを受信すると、方法800または類似する方法の別のインスタンスが、ノード400で実行して遅延時間を更新することができる。たとえば、ノード400は、新しいLSAに基づいて本来の待機期間を短縮、延長、および/またはリフレッシュすることができる。
遅延時間が経過してしまうと、ステップ860において、ノード400は、受信したLSAを処理することができる。さまざまな実施形態において、受信したLSAは、最新のLSAが最初に処理されるように、スタックのようなLIFO構造に格納されてもよい。次いで、後のLSAによってオーバーライドされたLSAはいずれも無視されてもよく、ルーティング情報を更新することに関連する処理時間がさらに短縮される。次いで、ノード400は、単一のSPTを生成して、受信したすべてのLSAに基づいて転送テーブルを一度に更新することができる。
上記の説明によれば、さまざまな例示的な実施形態は、ネットワーク状態における変化に関連するオーバーヘッドの軽減を可能にする。特に、ルーティング情報に全く関係しない更新メッセージの伝搬を回避することにより、帯域幅オーバーヘッドが軽減されうる。さらに、受信したネットワーク更新の処理を遅延させることによって、複数のネットワーク更新が同時に処理されうるので、処理オーバーヘッドが軽減されうる。
本発明のさまざまな例示的な実施形態が、ハードウェアおよび/またはファームウェアにおいて実施されうることが、上記の説明から明らかとなろう。さらに、さまざまな例示的な実施形態は、本明細書において詳細に説明される動作を実行するために少なくとも1つのプロセッサによって読み込まれ実行されうる、機械可読ストレージ媒体に格納された命令として実施されてもよい。機械可読ストレージ媒体は、パーソナルまたはラップトップコンピュータ、サーバ、または他のコンピューティングデバイスのような、機械によって読み取り可能な形態で情報を格納するための任意のメカニズムを含むことができる。したがって、機械可読ストレージ媒体は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス、および類似するストレージ媒体を含むことができる。
「プロセッサ」と称される任意の機能ブロックを含む、図面に示されるさまざまな要素の機能は、専用ハードウェア、および適切なソフトウェアと関連して処理ステップを実行することができるハードウェアの使用を通じて提供されてもよい。プロセッサにより提供される場合、機能は、単一の専用プロセッサ、単一の共有プロセッサ、または一部が共有されうる複数の個々のプロセッサによって提供されてもよい。さらに、「プロセッサ」または「コントローラ」という用語の明示的な使用は、ソフトウェアを実行することができるハードウェアのみを参照するものと解釈されるべきではなく、デジタル信号プロセッサ(DSP)ハードウェア、ネットワークプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ソフトウェアを格納するための読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、および不揮発性ストレージを、制限なく暗黙的に含むことができる。標準および/またはカスタムの他のハードウェアが含まれてもよい。同様に、図面に示される任意のスイッチは、概念的なものに過ぎない。それらの機能は、プログラム論理の動作を通じて、専用論理を通じて、プログラム制御および専用論理の相互作用を通じて、または手動によっても実行されてもよく、特定の技法は、コンテキストからさらに具体的に理解されるように実施者により選択可能である。
当業者には、本明細書における任意のブロック図が、本発明の原理を具現する例示的な回路の概念的な図を表すことが理解されるであろう。同様に、任意の流れ図、フローダイアグラム、状態遷移図、擬似コードなどは、機械可読媒体において実質的に表されてもよく、コンピュータまたはプロセッサにより(そのようなコンピュータまたはプロセッサが明示的に示されているかどうかにかかわらず)実行されてもよいさまざまなプロセスを表すことが理解されよう。
さまざまな例示的な実施形態が、その特定の例示的な態様を特に参照して詳細に説明されてきたが、本発明は他の実施形態が可能であり、その詳細はさまざまな明白な点において変更が可能であることを理解されたい。当業者には容易に明らかなように、本発明の趣旨および範囲を逸脱することなく変形および変更が行なわれてもよい。したがって、前述の開示、説明、および図面は、例示のみを目的としており、本発明を何ら限定するものではなく、本発明は特許請求の範囲によってのみ定義される。