(58)【調査した分野】(Int.Cl.,DB名)
前記ネットワーク障害を検出するステップは、レイヤ2のリンクイベントモニタリング及びシグナリング、並びに双方向転送検出(BFD)のうちの1つ以上によって実行される、請求項1に記載の方法。
前記ネットワーク障害を反映するためにルーティングテーブルを更新するステップの後に、前記ネットワーク障害を示すメッセージの通常のフラッディングを開始するステップ、
をさらに含む、請求項1に記載の方法。
前記高速障害通知メッセージは、特定のIGPルーティングプロトコルに固有のIGP PDU(Interior Gateway Protocol Protocol Data Unit)パケットフォーマットを有する、請求項1に記載の方法。
前記ルータは、レイヤ2のリンクイベントモニタリング及びシグナリング、並びに双方向転送検出(BFD)のうちの1つ以上によって、前記ネットワーク障害を検出するようにさらに構成される、請求項7に記載のルータ。
前記ルーティングプロトコルモジュールは、当該ルーティングプロトコルモジュールが前記ルーティングテーブルを更新した後に、前記ネットワーク障害を示すメッセージの通常のフラッディングを開始するようにさらに構成される、請求項7に記載のルータ。
前記第1及び第2の高速障害通知メッセージは、高速フラッディングベースの高速収束のために予約される固有の宛先MACアドレスの識別を通じて識別される、請求項14に記載の方法。
前記第1の高速障害通知メッセージは、特定のIGPルーティングプロトコルに固有のIGP PDU(Interior Gateway Protocol Protocol Data Unit)パケットフォーマットを有する、請求項13に記載の方法。
前記FFNモジュールは、ネットワーク障害を識別する情報を含む第2の高速障害通知メッセージを前記複数のインタフェースのうちの1つにおいて受信することに応答して、
前記第2の高速障害通知メッセージのソースMACアドレスは当該第2の高速障害通知メッセージが受信された前記インタフェースに関連付けられていると判定することに応じて、前記第2の高速障害通知メッセージを破棄すること、
を実行するようにさらに構成される、請求項18に記載のルータ。
前記第1及び第2の高速障害通知メッセージは、高速フラッディングベースの高速収束のために予約される固有の宛先MACアドレスの識別を通じて識別される、請求項19に記載のルータ。
【発明を実施するための形態】
【0018】
下記の説明において、多くの具体的な詳細が述べられる。しかしながら、本発明の実施形態はこれらの具体的な詳細無しに実施をされ得ることが理解される。他の例において、周知の回路、構造及び技法は、本説明の理解を曖昧にしないために、詳細には示されていない。当業者であれば、本明細書に含められる説明によって、必要以上の実験無しに適当な機能性を実装することが可能であろう。
【0019】
本明細書における「一実施形態」、「ある実施形態」、「例示的な実施形態」等への言及は、説明される実施形態が特定の機能、構造、又は特性を含み得るが、全ての実施形態が必ずしも当該特定の機能、構造、又は特性を含まなくてもよいことを示す。また、そのような表現は、必ずしも同じ実施形態に言及しない。さらに、特定の機能、構造、又は特性がある実施形態に関連して説明される場合、明示的に説明されていてもいなくても、そのような機能、構造、又は特性を他の実施形態に関連して達成することは当業者の知識の範囲内であることが提示される。
【0020】
下記の説明及び特許請求の範囲においては、「結合される(coupled)」及び「接続される(connected)」という用語がこれらの派生語と共に用いられ得る。これらの用語は互いに同義語として意図されないことが理解されるべきである。「結合される」は、互いに直接物理的に又は電気的に接触してもしなくてもよい2つ以上のエレメントが互いに協働し又はインタラクションすることを示すために用いられる。「接続される」は、互いに結合される2つ以上のエレメント間における通信の確立を示すために用いられる。
【0021】
高速フラッディングベースの高速収束(FFFC:fast flooding based fast convergence)アーキテクチャが説明される。FFFCアーキテクチャは、ネットワーク障害が起きた場合(例えば、リンク又は機器の障害時)にはネットワークダウンタイムを最小限にする。本発明の一実施形態において、FFFCアーキテクチャは、ネットワークにおける対象の受信機全てへのイベントの迅速な拡散のために、イベントフレームワークを用いる。イベントフレームワークは、基礎となる伝達メカニズムから独立している。従って、様々な要件に適した様々な特性を有する様々な伝達メカニズムが用いられ得る。例えば、単純さについて最適化される何らかの伝達メカニズムが用いられ得る一方で、信頼性を改善する他の伝達メカニズムも用いられ得る。
【0022】
イベントフレームワークは、複数の異なるアプリケーションがイベントを生成し及び/又はイベントを受信するように登録することができるという点において、アプリケーション非依存(independent)である。一実施形態において、TLV(type-length-value)ベースのイベントフレームワークがアプリケーションと伝達メカニズムとの間を確かなものにするために用いられる。イベントフレームワークを用いるアプリケーションの一例は、高速障害通知(Fast Failure Notification)である。高速障害通知は、ネットワーク収束時間を改善するために用いられる。例えば、ネットワークにおいて障害が発生する場合、障害に隣接するルータは、当該障害を検出し、領域の全体にわたる他のルータに障害通知を素早く拡散させることができる。異なるルータ上のルーティングプロトコル(例えば、OSPF(Open Shortest Path First)及びIS−IS(Intermediate System to Intermediate System)といったリンク状態IGP(Interior Gateway Protocol)ルーティングプロトコル)は、そのような障害通知を登録し及び受信し、障害に素早く反応して高速な収束を達成することができる。高速障害通知におけるイベントは、リンクダウンイベント又はノードダウンイベントである。アップイベント(例えば、リンクアップ又はノードアップ)は、ネットワーク安定性の同じものについてフラッディングされない。
【0023】
図1は、一実施形態に係る、ネットワークにおけるルータ上で具現化される高速フラッディングベースの高速収束(FFFC)アーキテクチャを図示する。例示的なFFFCアーキテクチャは、種々のルーティング機能がルータの各々上に配置される層状構造である。
図1に図示されるように、FFFCアーキテクチャは、アプリケーション層105と、データトランスポート層107と、を含む。アプリケーション層105は、ルーティングプロトコル固有の機能性を含み、典型的には、それぞれのルータの制御プレーンの一部である。データトランスポート層107は、本明細書において説明される高速フラッディングメカニズムのための機能性を含み(例えば、ネットワークにおける対象の受信機全てへのネットワークイベントの迅速な拡散に関与する)、典型的には、それぞれのルータのデータプレーンの一部である。具体的には、アプリケーション層105は、ルータ120A〜N上にそれぞれルーティングプロトコルモジュール110A〜Nを含み、データトランスポート層107は、ルータ120A〜N上にそれぞれ高速フラッディングモジュール115A〜Nを含む。
【0024】
ルーティングプロトコルモジュール110A〜Nは、それぞれ高速フラッディングモジュール115A〜Nからイベントを受信するように登録されている。一実施形態において、高速フラッディングモジュールは、ルータ120がネットワークにおける他のルータ120にネットワーク障害通知を拡散させることを可能にし、当該他のルータは、対応するルーティングプロトコルモジュール110にさらなる処理(例えば、ルーティングテーブル及び/又は転送テーブルの更新)のために転送することができる。従って、高速フラッディングメカニズムは、アプリケーション層105から切り離され、データトランスポート層107上に移行される。
【0025】
蓄積転送(store-and-forward)方式においてフラッディングを実行する、ネットワーク障害から復旧するための通例のルーティングプロトコル処理は、信頼でき(例えば、再送信を含む)及び安全である(例えば、隣接関係チェックを含む)が、当該処理は、制御プレーン動作及び制御プレーン/データプレーン間通信に関与し、これはネットワークワイドな収束を減速させる。しかしながら、本明細書において説明されるFFFCアーキテクチャは、ネットワーク障害通知のフラッディングをアプリケーション層105から切り離し、データトランスポート層107上に移行させる。従って、データトランスポート層107は、データトラフィック速度でルーティング制御メッセージを伝達することができるドメインワイドな高速フラッディングプラットフォームを提供し、それにより、ルーティングドメイン全体は、ドメインワイドの高速な収束を実現することができる。一実施形態において、通常のフラッディング機能は、意図されたルータに高速フラッディング通知が到達しない場合に備えて、最終的な(ultimate)同期を確保するために、依然としてアプリケーション層に含まれる。通常のフラッディング機能は、障害通知メッセージが送信される前に、ルーティングテーブル及び転送テーブルが更新されることを必要とする。
【0026】
図2は、一実施形態に係る、FFFCアーキテクチャを用いる高速障害通知アプリケーションを用いる例示的なネットワークを図示する。当該例示的なネットワークは、ルータ220A〜Nを含み、リング型トポロジーを形成する。ルータ220Aとルータ220Bとは、リンク252によって結合される。ルータ220Bとルータ220Cとは、リンク254によって結合される。ルータ220Cとルータ220Nとは、リンク256によって結合される(ルータ220Cとルータ220Nとの間にはゼロ個以上のルータが存在し得る)。ルータ220Nとルータ220Aとは、リンク250によって結合される。ルータ220A〜Nは、それぞれIGPモジュール210A〜Nと、高速障害通知(FFN:Fast Failure Notification)モジュール215A〜Nと、を含む。IGPモジュール210A〜Nは、それぞれルータ220A〜Nのアプリケーション層の一部であり、FFNモジュール215A〜Nは、それぞれルータ220A〜Nのデータトランスポート層の一部である。
【0027】
図2に図示される例において、ルータ220Cは、ルータ220Aを宛先とするパケットのソースである。通常の動作期間中、パケットは、ルータ220Cからルータ220Bを介して宛先ルータ220Aに到達するパスを選択する。
図2に図示されるように、ネットワークは、ネットワーク障害を経験しており、具体的には、リンク252が障害を起こしている。結果として、ルータ220Bは、ルータ220Aにリンク252上でパケットを転送することができない。従って、ルータ220Cからのパケットは、ルータ220Bを介して宛先ルータ220Aに到達しないであろう。しかしながら、ルータ220Cからのパケットは、ルータNを介して宛先ルータ220Aに到達することができる。
【0028】
説明の目的のため、ルータ220Bは、リンク252の障害を検出する。ただし、ルータ220Aも障害を検出し得ることが理解されるべきである。障害の検出は、異なる実施形態においては異なる手法で実行され得る。一実施形態において、レイヤ2のリンクのイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD:Bidirectional Forwarding Detection)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクのイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。リンク252の障害の検出は、イベントフレームワークにおけるイベントである。従って、IGPモジュール210Bにリンク252の障害を通知するメッセージが、IGPモジュール210Bに送られ、IGPモジュール210Bは、ルータ220Bのルーティングテーブル及び転送テーブルを更新して、リンク252の障害を反映することができる。
【0029】
ルータ220Bは障害を検出するため、一実施形態において、ルータ220Bは、FFFC処理を開始し、高速障害通知メッセージフラッディングのための始点となる。従って、障害を検出した後のあるときに、ルータBは、リンク252上の障害を示す高速障害通知メッセージを発信する。高速障害通知メッセージは、当該タイプのメッセージを受信するように登録した他のルータに障害を通知するために用いられる。例えば、高速障害通知メッセージは、リンク252上に障害が存在することを示す。また、高速障害通知メッセージは、受信側ルータに、収束を待たずに高速障害通知メッセージをその次のホップに転送することを含む高速フラッディング処理が実行されるべきであることも示す。例えば、高速障害通知メッセージは、そのようなルータによって、それらのアプリケーション層からのインタラクション無しに転送されるべきである。
図2について、ルータ220A〜Nの各々は、高速障害通知メッセージを受信するように登録している。
【0030】
一実施形態において、高速障害通知メッセージは、既存のIGP PDU(Protocol Data Unit)パケットフォーマットを用いる。例えば、IGPがOSPFである場合、崩壊した隣接関係(ルータが少ないあるリンク)を反映するOSPFルータのLSA(link state advertisement)は、高速障害通知メッセージとして用いられ、特別な変形無しにルータに高速フラッディングされることができる。これは、受信機、例えばルータ220A及び220C〜Nが、それらの通常の手法でパケットを処理することを可能にする。また、パケットは通常のフラッディングにおいて用いられるものと異ならないため、通常のフラッディングが本明細書において説明される高速フラッディングに追い付く場合、推移がシームレスであることを保証する。また、通常のパケットを用いることは、高速収束と低速収束との間で冗長な取り組み(effort)が存在しないであろうことを意味する。換言すれば、ルータが更新される(例えば、高速障害通知メッセージを既に高速フラッディングした)場合には常にフラッディングは停止する。しかしながら、高速障害通知メッセージについて既存のIGP PDUパケットフォーマットを用いることは、当該メッセージを複数のプロトコルについて均一にできないことを意味する。例えば、OSPFについての既存のIGP PDUパケットフォーマットは、IS−ISのそれとは異なる。従って、IS−ISについては、OSPFについてのものとは異なるフォーマットが用いられなければならない。また、IS−IS PDUはIPベースではないため、場合によってはカプセル化を必要とし得る。さらに、欠点の1つは、信頼できない相手からのDoS(Denial of Service)攻撃又はPDUリプレイを回避するために、通常のIGPフラッディングメカニズムが隣接関係チェックを用いることである。高速障害通知メッセージが受け取られるようにするためには、この隣接関係チェックが迂回される必要があり、これはDoS攻撃又はPDUリプレイ攻撃に機会を与えてしまう。しかしながら、これらのタイプの攻撃を防ぐために、ドメインワイドな認証が用いられる。
【0031】
別の実施形態において、高速障害通知メッセージは、プロトコルに関わらず共通のメッセージフォーマットを用いる。このフォーマットは、障害を起こしたリンクに関する充分な情報を考慮し、本明細書において説明されるイベントフレームワークにおけるローカルなイベントとして受信側ルータ上で扱われる。一実施形態において、均一なフォーマットは、TLVベースである。一実施形態において、共通のメッセージフォーマットを用いる高速障害通知メッセージがバグ又は他のエラー状態に起因して誤ってフラッディングされる場合を防ぐために、タイムアウト機構(machinery)が用いられる。本明細書において後により詳細に説明されるであろう
図21は、IGPプロトコルに依存せず、データトランスポート層によって発されたレイヤ2のプロトコルパケットである例示的なメッセージフォーマットを図示する。
【0032】
一実施形態において、高速障害通知メッセージは、当該メッセージが本明細書において説明されるFFFCアーキテクチャについてのものであることを受信側ルータに示す固有の宛先IPアドレス又はMACアドレスを含む。
【0033】
高速障害通知メッセージを発信した後、検出側ルータ220Bは、高速障害通知メッセージをフラッディングする。
図2に示されるように、ルータ220Bは、高速障害通知メッセージ260をリンク254上でルータ220Cにフラッディングする。これは、FFNモジュール215BからFFNモジュール215Cに送られるものとして概念的に図示される。高速フラッディングを実行するための任意の数のメカニズムが用いられ得る。一実施形態において、用いられるフラッディングメカニズムは、信頼でき(障害が発生した後でも全ての参加者に到達し)、ループフリーで、単純で、認証されることができる。
【0034】
一実施形態において、ルータ220Bは、リンク252の障害を(当該障害が収束する前に)反映するためにルータ220Bがそのルーティングテーブル及び転送テーブルの更新を完了する前に、高速障害通知メッセージを生成し及び送信する。従って、ルータ220Bは、ルーティングテーブル及び転送テーブルを更新することとは独立に、高速障害通知メッセージを生成し及び送信する。
【0035】
受信側ルータ220Cは、高速障害通知メッセージ260を受信する。当該通知メッセージ260は、本明細書において説明されるイベントフレームワークにおけるイベントであり、IGPモジュール210Cは、当該イベントについてのメッセージを受信するように登録されている。一実施形態において、高速障害通知メッセージ260は、当該メッセージが固有の宛先IPアドレス又はMACアドレスを有することに基づいて、FFFCアーキテクチャについてのメッセージとして識別される。従って、当該メッセージを受信した後、リンク252の障害を示す高速障害通知メッセージ272をそのIGPモジュール210Cに転送し、それにより、当該IGPモジュール210Cは、障害に反応し及び収束処理を開始することができる。一実施形態において、IGPモジュール210Cは、隣接関係チェックを控えること(foregoing)によってメッセージの受け取り基準を緩和する。高速障害通知メッセージ272を受信した後、IGPモジュールは、リンク252の障害を反映するために適当にルーティングテーブル及び転送テーブルを更新することを含めて当該メッセージを処理する。一実施形態において、収束時間を改善するために、変更はデータプレーンに(例えば、転送テーブルに)予めダウンロードされる。
【0036】
高速障害通知メッセージ272をIGPモジュール210Cに転送することに加えて、FFNモジュール215Cは、高速障害通知メッセージのコピーをフラッディングする。例示の目的のため、FFNモジュール215Cは、高速障害通知メッセージ262をリンク256上でルータ220Nにフラッディングする。高速障害通知メッセージ262は、高速障害通知メッセージ272の前に又は同時に送られることができる。従って、一実施形態によれば、高速障害通知メッセージ262はIGPモジュール210Cと如何なるインタラクションも無く次のルータにフラッディングされ、これは収束時間を低減する。
【0037】
高速障害通知メッセージ262を受信することに応答してルータ220Nによって実行される処理は、高速障害通知メッセージ260を受信することに応答してルータ220Cによって実行される処理と同様である。高速障害通知メッセージ262は、IGPモジュール210Nが登録しているフレームワークにおけるイベントである。従って、FFNモジュール215Nは、IGPモジュール210Nに、リンク252の障害を示す高速障害通知メッセージ274を送る。IGPモジュール210Nは、リンク252の障害を反映するためにルーティングテーブル及び転送テーブルを適当に更新する。FFNモジュール215Nは、リンク250上でルータ220Aに高速障害通知メッセージ264もフラッディングする。高速障害通知メッセージ264は、高速
障害通知メッセージ274の転送の前に又は同時に転送されることができる。高速障害通知メッセージ
264を受信することに応じて、高速フラッディングメカニズム215Aは、高速障害通知メッセージ276をIGPモジュール210Aに転送し、それにより、IGPモジュール210Aは、当該通知及びリンク252の障害に反応することができる。
【0038】
一実施形態において、高速障害通知メッセージ260、262、及び264は、データトランスポート層において処理されるため、データトラフィックと同じ速度で送信される。特定の例として、ルータ220Cからルータ220Nへリンク256上で送られる高速障害通知メッセージ262は、ルータ220Cからルータ220Nへリンク256上で送られるデータトラフィックと同じ速度で伝わる。高速障害通知メッセージ260、262、264はデータトラフィックと同じ速度で伝わるため、同じ計算能力とすれば、ネクストホップのルータは、当該通知メッセージの処理について先行するルータと同じ時間を有する。例えば、ルータ220C及び220Nが同じ計算能力を有するとすれば、ルータ220Cが通知メッセージ260を処理するために有する時間と同じ時間をルータ220Nは通知メッセージ262を処理するために有する。
【0039】
ルータ220A〜Nは同時に収束しないことが理解されるべきである。これは、高速障害通知メッセージの伝搬遅延に起因する。例えば、ルータ220Cがリンク252の障害を示す高速障害通知メッセージを受信するのは、ルータ220Nが同様のメッセージを受信するよりも前になるであろう。しかしながら、本明細書において説明されるFFFCアーキテクチャを用いれば、最初のルータが回復した後、トラフィックロスは直ちに無くなる。これは、データトラフィックが高速障害通知メッセージと同じ伝搬遅延を経験し、これは遠隔のルータにおける収束の遅い開始を補償するためである。
【0040】
例として、ルータ220A〜Nの各々が、50ミリ秒の収束時間、及び各ホップについて20ミリ秒の送信遅延を有すると仮定する。収束時間は、ロスしたパケットの数をドメイン中の任意の2つのルータ間のトラフィックフローレートで除算することによって測定される。これは、全ての個々のルータが同じ計算能力及び同じ収束時間を有する場合、ドメインワイドなネットワーク収束時間と等しくなるべきである。例えば、リンク252の障害時に、ルータ220Bは、ルータ220Cに高速転送通知メッセージ260(例えば、リンク状態更新)を送り、その収束を開始する。下記の表1は、収束タイムラインを示す。
【0042】
ルータ220Bは、リンク252の障害の後、時刻0においてその収束を開始する。また、ルータ220Bは、同時に、高速転送通知メッセージ260をルータ220Cに送る。最初の50ミリ秒の期間中、(リンク252の障害に起因して)ルータ220Bからルータ220Aへのリンク252上のパケットは破棄される(dropped)。高速転送通知メッセージ260は、20ミリ秒後にルータ220Cに到達し、その時点で、ルータ220Cはその収束を開始する。従って、ルータ220Bがその収束を終了する前に、ルータ220Cはその収束を開始する。ルータ220Cも、ネクストホップのルータ(例えば、ルータ220N)に高速障害通知メッセージ262を送る。実質的に50ミリ秒経ち且つルータ220Bが収束した後、ルータ220Bは、ルータ220Aを宛先とするパケットを、ルータ220Cに向けてリルーティングする。このようなパケットは、ルータ220Cに到達するまでに20ミリ秒を要し、従って、リンク252の障害の70ミリ秒後に到達するであろう。ルータ220Cは、高速転送通知メッセージ260を受信して50ミリ秒後に収束し、これはリンク252の障害の70ミリ秒後である。従って、データトラフィックパケットは、ルータ220Cが収束するのとおよそ同じ時刻に到達するであろう。この処理はドメインワイドに継続する。ルータ220C及びそれ以外の全ての下流のルータは、データパケットが到達することとなる前に1つずつ収束するため、データパケットは修正後のパスを介して成功裏に宛先(ルータ220A)に到達する。
【0043】
ルータ220A〜Nが異なる収束時間を有する場合、パケットは1つ以上のループの後にやはり伝達されるであろうが、マイクロルーピングが形成されるかも知れない。例えば、同じリンク障害のシナリオである(リンク252が障害を起こす)が、ルータ220Cが収束するために90ミリ秒を必要とする一方、それ以外のルータは50ミリ秒で収束すると仮定する。ルータ220Bが、リンク252の障害の70ミリ秒後にパケットをルータ220Cへリルーティングする場合、ルータ220Cはその更新をまだ完了していないであろう。従って、ルータ220Cは、依然としてその古い転送テーブルを用い続けており、ルータ220Aを宛先とするパケットをルータ220Bに送信し得る。これは、それらのパケットをルータ220Cに再度リルーティングすることになる。これらのパケットがルータ220Cに到達することになる時間は、障害の110ミリ秒後であり、ルータ220Cは更新を終了し当該パケットを正確に転送するであろう。この例において、パケットは1回ループされるが、状況によっては複数回のループが存在し得ることが理解されるべきである。パケットは、異なる収束タイムラインに起因して並び替えられ、パケットは一時的に間違った方向へ転送され得る。パケットの並び替えは、新たなシーケンス番号を付されたパケットがより古いものよりも先に到達し得るという点でTCP通信に悪影響を及ぼす。
【0044】
本明細書において説明されるFFFCアーキテクチャは、ルータの全てが収束することとは対照的に、影響を受けるルータが収束するとすぐにデータトラフィックがリルーティングされることを可能にする。また、影響を受けるルータが収束すると、本明細書において説明されるFFFCアーキテクチャは、影響を受ける全てのトラフィックについて正確なルートを保証する。本明細書において説明されるFFFCアーキテクチャは、如何なるサイズ及び如何なるトポロジーのネットワークに対してもスケーリング性を有し、少なくとも通常のIGPフラッディングには劣らない。
【0045】
図3は、一実施形態に係る、ネットワーク障害を検出してドメインワイドなFFFCを開始するルータによって実行される例示的な動作を図示するフロー図である。動作310において、ルータは、ネットワーク障害を検出する。一実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。フローは次いで動作315に移る。
【0046】
動作315において、ルータは、ネットワーク障害に関する情報を含む高速障害通知メッセージを生成する。高速障害通知メッセージは、受信側ルータ上で高速フラッディングイベントとして扱われるべきである。また、高速障害通知メッセージは、収束を待たずに(ルーティングテーブル及び転送テーブルが更新されることを待たずに)受信側ルータのネクストホップに高速障害通知メッセージを転送することを含めて高速フラッディング処理が実行されるべきであることも受信側ルータに示す。例えば、高速障害通知メッセージは、それらのルータによってそれらのアプリケーション層からのインタラクション無しに転送されるべきである。一実施形態において、高速障害通知メッセージは、FFFC専用である固有の宛先IPアドレス又はMACアドレスを含む。従って、高速障害通知メッセージは、受信側ルータがそのルーティングテーブル及び転送テーブルを更新してネットワーク障害を反映することを可能にし、当該ルーティングテーブル及び転送テーブルの双方を更新することとは独立して高速障害通知がそれらのネクストホップのルータに転送されるべきであるという情報を含む。
【0047】
上述の通り、高速障害通知メッセージは、既存のIGP PDUパケットフォーマットを用いても、又はプロトコルに関わらず共通のメッセージフォーマットを用いてもよい。フローは次いで動作320に移り、ルータは高速障害通知メッセージを1つ以上のルータにフラッディングする。フローは次いで動作325に移り、ルータは、ネットワーク障害を反映するために、そのルーティングテーブル及び転送テーブルを更新する。ルータがそのルーティングテーブル及び転送テーブルを更新した後、データパケットはネットワーク障害を回避するためにリルーティングされるであろう。
【0048】
動作325は、幾つかの実施形態において、動作315及び/又は320と同時に開始されてもよい。ただし、上記更新は、典型的に、高速障害通知メッセージが生成され及び送信される後まで完了されないことが理解されるべきである。ルータは、高速障害通知メッセージを生成し及び送信する前に、ルーティングテーブル及び転送テーブルの更新が終了されるまで待たないことも理解されるべきである。従って、高速障害通知メッセージを生成し及び送信することは、ルーティングテーブル及び転送テーブルの更新とは独立に実行される。
【0049】
図4は、一実施形態に係る、高速障害通知メッセージを受信するルータによって実行される例示的な動作を図示するフロー図である。動作410において、ルータは、ネットワーク障害に関する情報を含む高速障害通知メッセージを受信する。高速障害通知メッセージは、当該メッセージがFFFCアーキテクチャにおいて扱われるべきであることも示す。例えば、高速障害通知メッセージは、本明細書において説明されるFFFC専用である固有の宛先IPアドレス又はMACアドレスを含み得る。フローは次いで動作415に移る。
【0050】
動作415において、高速フラッディングメッセージは、さらなる処理のためにルータ上の適当なルーティングプロトコルモジュール(例えば、ルータ上のIGPモジュール)に送られる。ルータがネクストホップのルータを含む場合、フローは動作420に移り、高速障害通知メッセージがネクストホップのルータにフラッディングされる。これは高速障害通知メッセージであるため、ルータは高速障害通知メッセージをそのネクストホップのルータにフラッディングする前にそのルーティングテーブル及び転送テーブルを更新するまで待たないことが理解されるべきである。フローは次いで動作425に移り、ルータは、ネットワーク障害を反映するために、そのルーティングテーブル及び転送テーブルを更新する。ルータがそのルーティングテーブル及び転送テーブルを更新した後、データパケットは、ネットワーク障害を回避するためにリルーティングされるであろう。
【0051】
動作425は、幾つかの実施形態において、動作420と同時に開始されてもよい。ただし、上記更新は、典型的に、高速障害通知メッセージがフラッディングされた後まで完了されないことが理解されるべきである。ルータは、高速障害通知メッセージをフラッディングする前にルーティングテーブル及び転送テーブルの更新が終了されるまで待たないことも理解されるべきである。従って、受信された高速障害通知メッセージをそのネクストホップのルータにフラッディングすることは、ルーティングテーブル及び転送テーブルの更新とは独立に実行される。
【0052】
ブリッジベースの高速障害通知メッセージフラッディング
一実施形態において、高速障害通知メッセージフラッディングのための伝達メカニズムは、ブリッジベース(bridged based)である。高速障害通知メッセージのためのブリッジベースの伝達メカニズムは、ツリーベースの伝達メカニズムのように、リンク破損に起因するツリーの区分化(tree partition)の影響を受けることがない。全てのツリーベースの高速フラッディングスキームは、ルータが障害を起こす場合又は複数のリンクが同時に障害を起こす(例えば、ラインカード障害)場合に、フラッディングが区分化されてしまい、それ故にトポロジーの異なる部分におけるルータがトポロジー変化について異なる認知を有しかねないという限界がある。結果として、ルーティングループ及び/又はブラックホールを形成し得る。本明細書において説明されるブリッジベースの伝達メカニズムは、
フラッディングが区分化されることに影響を受けない。
【0053】
図5は、一実施形態に係る、高速障害通知を拡散させるためのブリッジベースのフラッディングを用いる例示的なネットワーク500を図示する。ネットワーク500は、ルータ520A〜Dを含み、これらは全て、エリア中の全てのノード及びリンクを含むブリッジネットワークの一部である。ルータ520A〜Dは、それぞれブリッジバーチャルインタフェース(BVI)515A〜Dと、IGPモジュール510A〜Dと、を含む。BVI515A〜Dは、それぞれ本明細書において説明される高速障害通知を発信し及び受信するように構成され、ルータ520A〜Dのデータトランスポート層の一部である。BVI515A〜Dは、高速障害通知(FFN)モジュールの一タイプである。
【0054】
IGPモジュール510A〜Dは、それぞれルータ520A〜Dのアプリケーション層の一部である。ルータ520Aは、インタフェースAb570を含む。ルータ520Bは、インタフェースBa572、Bc574、Bd576を含む。ルータ520Cは、インタフェースCb578及びCd580を含む。ルータ520Dは、インタフェースDb582及びDc584を含む。インタフェースAb570とインタフェースBa572とは、リンク552によって結合される。インタフェースBc574とインタフェースCb578とは、リンク554によって結合される。インタフェースCd580とインタフェースDc584とは、リンク556によって結合される。インタフェースBd576とインタフェースDb582とは、リンク550によって結合される。
【0055】
図5に図示されるように、ルータはリング型トポロジーを形成する。従って、ネットワークにおいてルーピングが発生する可能性がある。MACムーブ検出は、ブリッジネットワークにおいてループを防ぐための周知の手法である。ただし、制御プレーンがその決定をルータの異なるラインカード上の全てのインタフェースに設定する(populate)ための時間(例えば、数ミリ秒)は、ネットワークを麻痺させることがある。本発明の一実施形態においては、一回学習(learning-once)フラッディングスキームが導入され、ネットワークにおけるループを回避するために用いられる。高速転送通知メッセージがブリッジインタフェースに到達する場合、ブリッジはその通常のMAC学習処理を開始する。これは、典型的に、当該メッセージのソースMACアドレスは当該メッセージが受信されたインタフェースに関連づけられているかをブリッジが判定することを含む。MACアドレスとインタフェースとの関連付けは、典型的にブリッジMACテーブルに記憶される。エントリが存在しない(MACアドレスとインタフェースとの関連付けが新しい)場合、通例のMAC学習及びフラッディング処理が実行される(高速障害通知が当該ブリッジグループの他のインタフェース全てにフラッディングされるであろう)。しかしながら、エントリが存在する(MACアドレスとインタフェースとの関連付けが既知である)場合、高速障害通知メッセージは破棄され、それ以上の処理は実行されない。
【0056】
一回学習フラッディングスキームのループ回避メカニズムは、各インタフェースが高速障害通知メッセージを受信し、当該メッセージを他のインタフェースに最大で1回フラッディングすることとなることを保証する。従って、n個のインタフェースを有するブリッジは、高速障害通知メッセージを最大でn回フラッディングすることとなる。
【0057】
図5に図示される例においては、インタフェースAb570とインタフェースBa572との間のリンク552が障害を起こしている。説明の目的のため、ルータ520Bが、リンク552の障害を検出する。ただし、ルータ520Aも障害を検出し得ることが理解されるべきである。障害の検出は、様々な実施形態において様々な手法で実行され得る。一実施形態においては、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。リンク552の障害の検出は、イベントフレームワークにおけるイベントである。
【0058】
障害を検出すると、リンク552上の障害を示す高速障害通知メッセージがBVIインタフェース515Bを介して送られて、高速フラッディング処理が開始される。具体的には、高速障害通知メッセージ560がインタフェースBc574及び
Bd576を介してフラッディングされる。高速障害通知メッセージ560は、インタフェースBa572に割り当てられるソースMACアドレスを有する。この例の目的のために、フラッディングの方向は、高速障害通知メッセージ560がインタフェースBc574を介してフラッディングされることを基準として説明されるであろう。ただし、高速障害通知メッセージ560がインタフェースB
d576を介してフラッディングされることを基準として同様の動作が実行されることが理解されるべきである。
【0059】
高速障害通知メッセージ560は、リンク554をわたって送られ、ルータ520CのインタフェースCb578において受信される。これは高速障害通知メッセージ560のソースMACアドレスを有するパケットがインタフェースCb578上で受信される初回であると仮定すると、インタフェースとMACアドレスとの関連付け(例えば、インタフェースCb578とインタフェースのMACアドレスとの関連付け)が学習される(例えば、ブリッジMACテーブルに追加される)。高速障害通知メッセージ560は、BVI515C及びインタフェースCd580を介して外部にもフラッディングされる。BVI515Cは、処理する(例えば、リンク552の障害を反映するために、ルータ520Cのルーティングテーブル及び/又は転送テーブルを更新する)ために、当該通知をIGPモジュール510Cに転送する。
【0060】
高速障害通知メッセージ560は、リンク556をわたって送られ、ルータ520DのインタフェースDc584において受信される。ルータ520Cに関して説明されたのと同様の処理において、これが高速障害通知メッセージ560のソースMACアドレスを有するパケットがインタフェースDc584上で受信される初回であると仮定すると、インタフェースとMACアドレスとの関連付け(例えば、インタフェースDc584とインタフェースのMACアドレスとの関連付け)が学習される(例えば、ブリッジMACテーブルに追加される)。高速障害通知メッセージ560は、BVI515D及びインタフェースDb582を介して外部にもフラッディングされる。BVI515Dは、処理する(例えば、リンク552の障害を反映するために、ルータ520Dのルーティングテーブル及び/又は転送テーブルを更新する)ために、当該通知をIGPモジュール510Dに転送する。
【0061】
高速障害通知メッセージ560は、リンク550をわたって送られ、ルータ520BのインタフェースBd576において受信される。ルータ520C及び520Dに関して説明されたのと同様の処理において、これが高速障害通知メッセージ560のソースMACアドレスを有するパケットが(外部のソースから)インタフェースBd576において受信される初回であると仮定すると、インタフェースとMACアドレスとの関連付け(例えば、インタフェースBd576とインタフェースのMACアドレスとの関連付け)が学習される(例えば、ブリッジMACテーブルに追加される)。高速障害通知メッセージ560は、BVI515B及びインタフェースBc574を介して外部にもフラッディングされる。
【0062】
高速障害通知メッセージ560は、再度リンク554をわたって送られ、インタフェースCb578において受信される。しかしながら、高速障害通知メッセージ560はインタフェースCb578において既に受信されているため、高速障害通知メッセージは破棄され、ループは停止する。
【0063】
図6は、一実施形態に係る、ネットワーク障害を検出して、ブリッジベースの高速障害通知メッセージフラッディングを用いるドメインワイドなFFFCを開始するルータによって実行される例示的な動作を図示するフロー図である。動作610において、ルータはネットワーク障害を検出する。一実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態において、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。フローは次いで動作615に移る。
【0064】
動作615において、ルータは、ネットワーク障害に関する情報を含む高速障害通知メッセージを生成する。高速障害通知メッセージは、リンク障害に関係のあるルータ上のインタフェースのソースMACアドレスを含む。例えば、
図5を参照し、リンク552が障害を起こしたと仮定すると、ルータ520Bは、インタフェースBa572のソースMACアドレスを含む高速障害通知メッセージを生成する。高速障害通知メッセージは、受信側ルータ上で高速フラッディングイベントとして扱われるべきである。例えば、高速障害通知メッセージは、受信側ルータの各々に、収束を待つこと無く(ルーティングテーブル及び/又は転送テーブルが更新されることを待つこと無く)そのデータトランスポート層におけるそのインタフェースの1つ以上から高速障害通知メッセージをフラッディングし、ルーティングテーブル及び/又は転送テーブルを適当に更新して高速障害通知メッセージにおいて示されるネットワーク障害を反映すべきかを判定すべきであることを示す。従って、高速障害通知メッセージは、受信側ルータに、データトランスポート層(例えば、入口ポート)によって、アプリケーション層(又はさもなければ制御プレーン)とのインタラクション無しに、従って回線レートで、MAC学習及びルックアップが実行されるべきであり、アプリケーション層はフラッディング処理とは独立にルーティングテーブル及び/又は転送テーブルを適当に更新すべきであることを示す。一実施形態において、高速障害通知メッセージは、当該メッセージを高速障害通知メッセージとして扱うべきであることを受信側ルータに示すためのFFFC専用の固有の宛先MACアドレスを含む。従って、高速障害通知メッセージは、受信側ルータが高速障害通知メッセージを回線レートでフラッディングすること並びにそれらのルーティングテーブル及び/又は転送テーブルを更新してネットワーク障害を反映することの双方を可能にする情報を含む。
【0065】
フローは次いで動作620に移り、ルータは、高速障害通知メッセージをブリッジグループにフラッディングする。ブリッジグループは、同じブロードキャストドメインの一部である1つ以上のネットワークインタフェースを含む。例えば、
図5を参照すると、ルータ520Bは、高速障害通知メッセージ560をインタフェースBc574及びBd576を介してフラッディングする。フローは次いで動作625に移り、ルータは、ネットワーク障害を反映するために、そのルーティングテーブル及び転送テーブルを更新する。ルータがそのルーティングテーブル及び転送テーブルを更新した後、データパケットは、ネットワーク障害を回避するためにリルーティングされるであろう。
【0066】
動作
625は、幾つかの実施形態において、動作615及び/又は620と同時又はその前に開始されてもよい。ただし、上記更新は、典型的に、高速障害通知メッセージが生成され及び送信される後まで完了されないことが理解されるべきである。ルータは高速障害通知メッセージを生成し及び送信する前にルーティングテーブル及び転送テーブルの更新が終了するまで待たないことも理解されるべきである。従って、高速障害通知メッセージを生成し及び送信することは、ルーティングテーブル及び転送テーブルの更新とは独立に実行される。
【0067】
図7は、一実施形態に係る、ブリッジベースの高速障害通知メッセージフラッディングを用いるFFFCアーキテクチャにおいて高速障害通知メッセージを受信するルータによって実行される例示的な動作を図示するフロー図である。動作710において、ルータは、ネットワーク障害に関する情報を含む高速障害通知メッセージを、インタフェース上で受信する。高速障害通知メッセージは、当該メッセージがFFFCアーキテクチャにおいて扱われるべきであることも示す。例えば、高速障害通知メッセージは、本明細書において説明されるFFFC専用の固有の宛先IPアドレス又はMACアドレスを含み得る。フローは次いで動作715に移る。
【0068】
動作715において、ルータは、高速障害通知メッセージのソースMACアドレスは当該メッセージが受信されたインタフェースに関連付けられているかを判定する。例えば、ルータは、ブリッジMACテーブルにアクセスして、ソースMACアドレスがインタフェースに関連付けられているかを判定する。ソースMACアドレスがインタフェースに関連付けられていない場合、フローは動作720に移る。ソースMACアドレスがインタフェースと既に関連付けられている場合(これは典型的には高速障害通知メッセージが当該インタフェース上で既に受信されたことを意味する)、フローは動作740に移り、パケットが破棄される。前述の通り、パケットが既知である場合に当該パケットを破棄することは、ネットワークにおけるループを回避するために用いられる。また、一実施形態において、MAC学習及びルックアップは、回線レートで入口インタフェース内において実行され、ルータの制御プレーンとのインタラクション無しに実行される。従って、本発明の実施形態の一回学習フラッディング技法は、ループを回避するために用いられ、MACムーブ検出などの他の一般に用いられるループ回避技法よりも高速である(例えば、当該フラッディング技法は回線レートで動作する)。
【0069】
動作720において、ルータは、高速障害通知メッセージに含まれるソースMACアドレスを、当該メッセージが受信されたルータのインタフェースに関連付ける。例えば、ルータは、ソースMACアドレスとインタフェースとのペアをブリッジMACテーブルに追加する。フローは次いで動作725に移り、ルータは、高速障害通知メッセージを、もしあればブリッジグループの他のインタフェース全てにフラッディングして、高速障害通知メッセージが隣接するルータに送られるようにする。フローは次いで動作730に移り、高速障害通知メッセージは、さらなる処理のためのルーティングプロトコル(例えば、ルータ上のIGPモジュール)に向けて、BVIに送られる。フローは次いで動作735に移り、ルータ(例えば、IGPモジュール)は、障害を反映するために、ルーティングテーブル及び/又は転送テーブルを更新する。
【0070】
一実施形態において、非FFFCの目的からのブリッジの使用を抑制するために、専用のMACアドレスが予約され及び高速障害通知メッセージについての宛先MACアドレスとして用いられる。一実施形態において、ブリッジがFFFC目的のための専用のMACアドレスのみを受け取るように、ACL(access control list:アクセス制御リスト)が設定される。
【0071】
レイヤ2のブリッジネットワーク上のSTPベースの高速障害通知メッセージフラッディング
一実施形態において、レイヤ2のブリッジネットワーク上の高速障害通知メッセージフラッディングのための伝達メカニズムは、スパニングツリープロトコル(STP)を用いる。レイヤ2のブリッジネットワークにおけるフラッディングは、明確に定義されており、高速障害通知メッセージを伝達するために用いられることができる。ブリッジグループは参加している各ルータ上で設定され、STPは全てのブリッジ上で有効化される(enabled)。STPは、ルータのスパニングツリーを作成することによってブリッジのループを回避するために用いられ、当該ツリーの一部ではないインタフェースをブロックする。STPは、IEEE802.1Dにおいて定義されている。このタイプのマシンは、ブルータ(brouter)と呼ばれる。IPパケットを受信すると、ブルータは、IPパケットをルーティングする。他のタイプのパケットを受信すると、ブルータは、パケットをブリッジする。ブルータはIPパケットをルーティングするため、レイヤ2のブリッジネットワーク上のSTPベースの高速障害通知メッセージフラッディングにおいて用いられる高速障害通知メッセージは、IP転送テーブルに従って転送されることを回避するためにレイヤ2のパケットである。
【0072】
図8は、一実施形態に係る、ネットワーク障害を検出して、STPベースのフラッディングを用いてドメインワイドなFFFCを開始するレイヤ2のブリッジネットワークにおけるルータ(例えば、ブルータ)上で実行される例示的な動作を図示するフロー図である。動作810において、ルータは、ネットワーク障害を検出する。一実施形態においては、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。フローは次いで動作815に移る。
【0073】
動作815において、ルータ(例えば、当該ルータ上のFFNモジュール)は、ネットワーク障害に関する情報を含む高速障害通知メッセージを生成する。高速障害通知メッセージは、レイヤ2のパケットである。レイヤ2の高速障害通知メッセージについての例示的なフォーマットは、
図21を参照しつつさらに詳細に説明されるであろう。高速障害通知メッセージは、受信側ルータ上で高速フラッディングイベントとして扱われるべきである。例えば、高速障害通知メッセージを受信するルータは、収束を待つこと無く、STPによってブロックされない他のインタフェース全てにパケットをフラッディングすべきである。従って、高速障害通知メッセージは、受信側ルータに、そのデータトランスポート層がSTPによってブロックされない他のポート全てに、アプリケーション層とのインタラクション無しに、従って回線レートでパケットをフラッディングすべきであること、及びそのアプリケーション層はルーティングテーブル及び/又は転送テーブルを適当に更新すべきであることを示す。従って、高速障害通知メッセージは、受信側ルータに当該高速障害通知メッセージを回線レートでフラッディングすること並びにそれらのルーティングテーブル及び/又は転送テーブルを更新してネットワーク障害を反映することの双方を可能にする情報を含む。
【0074】
フローは次いで動作820に移り、ルータは、レイヤ2の高速障害通知メッセージをブリッジグループのメンバにフラッディングする。フローは次いで動作825に移り、ルータは、障害を反映するために、そのルーティングテーブル及び/又は転送テーブルを適当に更新する(例えば、IGPモジュールが、そのルーティングテーブル及び/又は転送テーブルを適当に更新する)。動作825は、幾つかの実施形態において、動作815及び/又は820と同時に又はその前に開始されてもよい。ただし、上記更新は、典型的には、高速障害通知メッセージが生成され及び送信される後まで終了されないことが理解されるべきである。高速障害通知メッセージを生成し及び送信する前にルーティングテーブル及び転送テーブルの更新が終了されるまでルータは待たないことも理解されるべきである。従って、高速障害通知メッセージを生成し及び送信することは、ルーティングテーブル及び転送テーブルの更新とは独立に実行される。
【0075】
図9は、一実施形態に係る、レイヤ2の高速障害通知メッセージを受信するルータによって実行される例示的な動作を図示するフロー図である。動作910において、ルータは、ネットワーク障害に関する情報を含むレイヤ2の高速障害通知メッセージを受信する。例えば、当該ルータの(データトランスポート層上の)FFNモジュールは、レイヤ2の高速障害通知メッセージを受信する。フローは次いで動作915に移り、ルータ(例えば、当該ルータのFFNモジュール)は、STPによってブロックされない他のインタフェース全てに高速障害通知メッセージをフラッディングする。フローは次いで動作920に移り、高速障害通知メッセージは、さらなる処理のためにルータ上のルーティングプロトコルモジュール(例えば、IGPモジュール)に送られる。フローは次いで動作925に移り、ルーティングプロトコルモジュールは、ルーティングテーブル及び転送テーブルを更新してネットワーク障害を反映する。動作920及び925は、幾つかの実施形態において、動作915の前に又は同時に開始されてもよい。ただし、上記更新は、典型的には、高速障害通知メッセージがフラッディングされる後まで完了されないことが理解されるべきである。高速障害通知メッセージのフラッディングの前にルーティングテーブル及び転送テーブルの更新が終了されるまでルータは待たないことも理解されるべきである。
【0076】
レイヤ2のブリッジネットワーク上のSTPフラッディングは、単純且つ高速である。しかしながら、STPフラッディングは、ターンアラウンド(次のヒットのために準備すること)については比較的長い時間を要し、ツリーパーティション問題の対象ともなり、これは同時に起こる複数のリンク障害に対処できないことを意味する。
【0077】
ユニキャストベースの高速障害通知メッセージフラッディング
一実施形態において、高速障害通知メッセージフラッディングのための伝達メカニズムは、ユニキャストベースである。ネットワーク障害を検出するルータは、高速障害通知メッセージを生成し、ドメイン中の各ルータにコピーを送る。ドメイン中のルータのIDは、ルータ上のルーティングテーブル及び/又は転送テーブルに記憶される。これらのユニキャスト高速障害通知メッセージは、通例のIPデータトラフィックが転送されるのと同様の手法で、宛先ルータにデータプレーン速度で転送される。
【0078】
図10は、一実施形態に係る、ユニキャストベースの高速障害通知メッセージフラッディングを用いる例示的なネットワークを図示する。ネットワーク1000は、ルータ1020A〜Dを含む。ルータ1020Aとルータ1020Bとは、リンク1052によって結合される。ルータ1020Bとルータ1020Cとは、リンク1054によって結合される。ルータ1020Cとルータ1020Dとは、リンク1056によって結合される。ルータ1020Aとルータ1020Dとは、リンク1050によって結合される。ルータ1020A〜Dは、それぞれIGPモジュール1010A〜D及びFFNモジュール1015A〜Dを含む。IGPモジュール1010A〜Dは、それぞれルータ1020A〜Dのアプリケーション層の一部であり、FFNモジュール1015A〜Dは、それぞれルータ1020A〜Dのデータトランスポート層の一部である。
【0079】
図10に図示される例において、ネットワーク1000は、ネットワーク障害を経験している。具体的には、リンク1052が障害を起こしている。説明の目的のため、ルータ1020Bは、リンク1052の障害を検出する。ただし、ルータ1020Aも障害を検出し、ルータ1020Bと同様の動作を実行し得ることが理解されるべきである。障害の検出は、様々な実施形態において様々な手法で実行され得る。一実施形態においては、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。リンク1052の障害の検出は、イベントフレームワークにおけるイベントである。従って、リンク1052の障害をIGPモジュール1010Bに通知するメッセージは、IGPモジュール1010Bに送られ、IGPモジュール1010Bは、リンク1052の障害を反映するために、ルータ1020Bのルーティングテーブル及び転送テーブルを更新することができる。
【0080】
障害を検出した後のあるときに、ルータ1020Bは、リンク
1052上の障害を示す高速障害通知メッセージを発信する。高速障害通知メッセージは、当該タイプのメッセージを受信するように登録した他のルータに障害を通知するために用いられる。例えば、高速障害通知メッセージは、リンク1052上に障害が存在することを示す。ルータ1020Bは、IPドメイン中のルータの各々に高速障害通知メッセージを送る。
図10を参照すると、リンク1052の障害を示すユニキャスト高速障害通知メッセージ1060は、ルータ1020Cの宛先IPアドレスに送られ、及びルータ1020Dの宛先IPアドレスに送られる。また、ユニキャスト高速障害通知メッセージ1060は、ルータ1020Aの宛先アドレスにも送られ得る。
【0081】
ルータが高速障害通知メッセージを受信すると、当該ルータは、そのルーティングテーブル及び/又は転送テーブルを適当に更新することを含めて当該高速障害通知メッセージを処理する。例えば、ルータ1020Cが高速障害通知メッセージ1060を受信すると、当該メッセージは、ルーティングテーブル及び/又は転送テーブルを更新することを含むさらなる処理のためにIGPモジュール1010Cに転送されるであろう。幾つかの実施形態において、受信側ルータのIGPモジュールは、パケット検証の期間における隣接関係チェックを控えることによって、高速障害通知メッセージのその受け取り基準を緩和する。隣接関係チェックが迂回される場合、DoS攻撃又はPDUリプレイ攻撃を回避するために、ドメインワイドな認証が用いられ得る。
【0082】
本明細書において説明される他の高速障害通知メッセージ伝送技法とは異なり、高速障害通知メッセージをフラッディングすることについて、障害を検出するルータが責任を有する。従って、高速障害通知メッセージを受信するルータは、それらのネクストホップのルータに当該メッセージを転送し又は中継する必要がない。
【0083】
図11は、一実施形態に係る、ネットワーク障害を検出し、ユニキャストベースの高速障害通知メッセージフラッディングを用いるルータによって実行される例示的な動作を図示するフロー図である。動作1110において、ルータは、ネットワーク障害を検出する。一実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。フローは次いで動作1115に移る。
【0084】
動作1115において、ルータは、ネットワーク障害に関する情報を含む高速障害通知メッセージを生成する。高速障害通知メッセージは、受信側ルータ上で高速フラッディングイベントとして扱われるべきである。従って、高速障害通知メッセージは、受信側ルータがそれらのルーティングテーブル及び転送テーブル更新してネットワーク障害を反映することを可能にする情報を含む。フローは次いで動作1120に移る。上述の通り、高速障害通知メッセージは、既存のIGP PDUパケットフォーマットを用いても、又はプロトコルに関わらず共通のメッセージフォーマットを用いてもよい。
【0085】
動作1120において、高速障害通知のコピーは、(例えば、ルータのルーティングテーブル及び/又は転送テーブルにおいて識別される)IPドメイン中の各ルータに送られる。例えば、IPドメイン中の各ルータについて、パケットの宛先IPアドレスが当該ルータに設定される。フローは次いで動作1125に移り、ルータはそのルーティングテーブル及び転送テーブルを更新してネットワーク障害を反映する。
【0086】
動作1125は、幾つかの実施形態において、動作1115及び/又は1120の前に又は同時に開始されてもよい。幾つかの実施形態において、ルータは、高速障害通知メッセージを送信する前にルーティングテーブル及び/又は転送テーブルの更新が終了されるまで待たない。従って、高速障害通知メッセージを生成し及び送信することは、ルーティングテーブル及び転送テーブルの更新とは独立に実行される。
【0087】
図12は、一実施形態に係る、ユニキャストベースの伝送技法を用いて伝送される高速障害通知メッセージを受信するルータによって実行される例示的な動作を図示するフロー図である。動作1210において、ルータは、ネットワーク障害に関する情報を含む高速障害通知メッセージを受信する。フローは次いで動作1215に移る。動作1215において、高速フラッディングメッセージは、さらなる処理のためにルータ上の適当なルーティングプロトコルモジュール(例えば、ルータ上のIGPモジュール)に送られる。フローは次いで動作1220に移り、(ルーティングプロトコルモジュールが隣接関係チェックを実行するように構成される場合)典型的にルーティングプロトコルモジュールによって実行される隣接関係チェックは、迂回される。フローは次いで動作1225に移り、ルーティングプロトコルモジュールは、ネットワーク障害を反映するために、ルーティングテーブル及び/又は転送テーブルを更新する。
【0088】
ユニキャストベースの高速障害通知メッセージフラッディング技法は、ネットワーク障害を検出して高速フラッディング通知を生成し及びIPドメイン中のその他のルータに送信するルータに依存するため、パケットを送る試みを複数回繰り返さなければならない発信側ルータへの負担が重すぎるように思われるかもしれない。しかしながら、発信側ルータ上の負担は無視できることを実験は示している。適当な(decent)サイズである、100個のルータを含むネットワークの場合、発信側ルータが100個の高速フラッディング通知パケットを生成し及び送信するための総時間は、7ミリ秒である。発信側ルータ上のこの小さな遅延は、高速障害通知メッセージパケットをデータプレーンに予めダウンロードすることによって最小化されることができる。データプレーンはIGPルーティングテーブルの一部である全てのルータのリストを既に有しているため、データプレーンは、パケットを直接ディスパッチすることができる。
【0089】
基本的に、ユニキャストベースの高速障害通知メッセージフラッディング技法は、マルチキャストツリーと同様のツリーベースである。しかしながら、高速障害通知メッセージフラッディングの目的のために生成される特別なツリーは存在しない。代わりに、通常のルーティングテーブルが用いられ、これはSPF(shortest path first:最短パス優先)ツリー(SPT)である。これは、フラッディングが(ルーティングテーブルによって判定される通りの)最短パスに従うこと、及びフラッディングループが作成されないことを保証する。故障したリンクがSPT上に存在する状況においては、ツリーは区分化され、発信側ルータからのフラッディングはツリーの一部にしか到達しないであろう。しかしながら、リンクの他端側のルータは同様のユニキャストベースの高速障害通知処理を実行してツリーの他の部分のルータをカバーすることができるため、ツリー全体に障害が通知されるであろう。例えば、
図10を参照すると、ルータ1020Bがリンク障害1052を検出することに応じてユニキャスト高速障害通知メッセージを生成し及びドメイン中のその他のルータに送信することに加えて、ルータ1020Aもリンク障害1052を検出することに応じてユニキャスト高速障害通知メッセージを生成し及びドメイン中のその他のルータに送信することができる。
【0090】
RPFチェック高速障害通知メッセージフラッディングを通じたゲーテッド(gated)マルチキャスト
一実施形態において、高速障害通知メッセージフラッディングのための伝達メカニズムは、マルチキャストベースであり、フラッディングループはRPFチェックを通じて回避される。ゲーテッドマルチキャストベースのフラッディングは、マルチキャストツリーが確立されることを必要とせず、むしろ、その他のルータに高速障害通知メッセージをフラッディングする前に、IGPモジュールによって算出されたものと同じSPT及び当該SPTを用いるRPFチェックを用いる。RPFチェックは、高速障害通知メッセージが受信されるインタフェースが高速障害通知メッセージのソースに到達するためのアウトゴーイングインタフェースでもあるのかを判定する。
【0091】
一実施形態において、専用のマルチキャストアドレスが定義され、ゲーテッドマルチキャストベースの高速障害通知メッセージフラッディングのために用いられる。この専用のマルチキャストアドレスは、高速フラッディングのための高速障害通知メッセージを識別するために用いられる。ルータが当該マルチキャストアドレスにおいて高速障害通知メッセージを受信すると、当該ルータは、RPFチェックを実行する。例えば、ルータは、発信側ルータ(障害を検出し、高速障害通知メッセージを発信したルータ)についてのIPユニキャストルーティングテーブル(例えば、IGPモジュールによって算出されるSPT)にアクセスして、発信側ルータに到達するためのアウトゴーイングインタフェースを発見する。高速障害通知メッセージの到着インタフェースが発信側ルータに到達するためのアウトゴーイングインタフェースと同じである場合、RPFチェックにパスし、ルータは他のインタフェースに通知をフラッディングする。高速障害通知メッセージの到着インタフェースが発信側ルータに到達するために用いられるアウトゴーイングインタフェースと同じではない場合、ルータはパケットを破棄し、それによって、ループを回避する。
【0092】
図13は、一実施形態に係る、ゲーテッドマルチキャスト高速障害通知メッセージフラッディングを用いる例示的なネットワーク1300を図示する。例示的なネットワーク1300は、ルータ1320A〜Dを含み、当該ルータ1320A〜Dは、それぞれIGPモジュール1310A〜D及びFFNモジュール1315A〜Dを含む。ルータ1320Aは、ルータ1320Bにリンク1350を介して結合され、ルータ1320Cにリンク1352上で結合され、及びルータ1320Dにリンク1356上で結合される。ルータ1320Bも、ルータ1320Cにリンク1354上で、及びルータ1320Dにリンク1360上で結合される。ルータ1320Cも、ルータ1320Dにリンク1358上で結合される。
【0093】
ルータ1320A〜DのIGPモジュール1310A〜Dの各々は、(当該IGPモジュールによって算出される)そのSPTが双方向マルチキャストツリーとして用いられるように複製し、当該双方向マルチキャストツリーがルータのデータプレーンにダウンロードされるようにし(例えば、当該データプレーンの1つ以上のラインカード上にインストールし)、及びゲーテッドマルチキャストベースの高速障害通知メッセージフラッディング専用のマルチキャストグループアドレスを当該マルチキャストグループに加入するために追加する。
【0094】
図
13を参照すると、ルータ1320Aをルートとする(rooted)SPTは、ルータ1320Bに到達するためのリンク1350、ルータ1320Cに到達するためのリンク1352、並びにルータ1320Dに到達するためのリンク1350及び1360を含む。例えば、ルータ1320Aがルータ1320Dにパケットを送る際、当該パケットは、リンク1350及びリンク1360に沿って伝わる。リンク1354、1356、及び1358は、ルータ1320AをルートとするSPTの一部ではない。
【0095】
説明の目的のため、ルータ1320Aは、リンク又はノードの障害を検出する。これは、本発明の理解を曖昧にしないために図示されていない。上述の通り、障害の検出は、様々な実施形態において様々な手法で実行され得る。一実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。ネットワーク障害の検出は、イベントフレームワークにおけるイベントである。
【0096】
ネットワーク障害を検出した後のあるときに、ルータ1320Aは、当該障害を識別する情報を含む高速障害通知メッセージを生成する。例えば、FFNモジュール1315Aは、高速障害通知メッセージを生成する。高速障害通知メッセージは、受信側ルータに、ゲーテッド高速フラッディング処理が実行されるべきであることを示す。例えば、高速障害通知メッセージは、受信側ルータに、そのアプリケーション層がルーティングテーブル及び/又は転送テーブルを更新して高速障害通知メッセージにおいて示されるネットワーク障害を反映することとは独立に、そのデータトランスポート層が高速障害通知メッセージをそのインタフェースにマルチキャストすべきかを判定(及び、適切な場合には当該メッセージをマルチキャスト)すべきであることを示す。
【0097】
データトランスポート層は、高速障害通知メッセージを、当該メッセージの宛先アドレスに基づいて識別する(高速障害通知メッセージは、ゲーテッド高速障害通知メッセージ専用のマルチキャスト宛先アドレスを有する)。ルータ1320B〜Dの各々は、専用のマルチキャストアドレスを有するマルチキャストパケットをリッスンし、結果として、ルータ1320B〜Dの各々は、マルチキャスト高速フラッディング通知メッセージ1360を受信する。ルータ1320A〜Dはメッシュ状に配置されるため、ルータが高速障害通知メッセージ1360の複数のコピーを受信し得る可能性がある。例えば、ルータ1320Cは、ルータ1320Aからリンク1352上で高速障害通知メッセージ1360を受信し、ルータ1320Bからもリンク1354上で高速障害通知メッセージ1360を受信し得る。ただし、ループを回避するために、RPFチェックが実行される。例えば、ルータ1320Cは、ルータ1320Aからルータ1320Bを介して受信される高速障害通知メッセージ1360を破棄するであろう。なぜなら、ルータ1320Bは、ルータ1320Aへのルータ1320CのRPFネクストホップではないためである。
【0098】
図14は、一実施形態に係る、ネットワーク障害を検出して、ゲーテッドマルチキャストベースの高速障害通知メッセージフラッディングを用いるドメインワイドなFFFCを開始するルータによって実行される例示的な動作を図示するフロー図である。動作1410において、ルータはネットワーク障害を検出する。一実施形態においては、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。フローは次いで動作1415に移る。
【0099】
動作1415において、ルータ(例えば、当該ルータ上のFFNモジュール)は、ネットワーク障害に関する情報を含む高速障害通知メッセージを生成する。高速障害通知メッセージは、受信側ルータ上で高速フラッディングイベントとして扱われるべきである。また、高速障害通知メッセージは、受信側ルータに、ゲーテッドマルチキャスト高速フラッディング処理が実行されるべきであることも示す。当該処理は、RPFチェックを実行することを含み、高速障害通知を他のインタフェースにマルチキャストすることを含み得る。高速障害通知メッセージは、マルチキャストゲーテッド高速障害通知専用のマルチキャストアドレスの宛先アドレスを有する。アプリケーション層がネットワーク障害後のトポロジーにおける変化を反映するためにルーティングテーブル及び/又は転送テーブルを更新することとは独立に、高速障害通知メッセージは(転送が発生すべき場合には)それらのルータによって転送されるべきである。従って、高速障害通知メッセージは、受信側ルータに、ネットワーク障害を反映するためにそれらのルーティングテーブル及び/又は転送テーブルを更新すること、並びに、当該更新とは独立に、ゲーテッドマルチキャスト高速フラッディング処理を実行することの双方を示す情報を含む。フローは次いで動作1420に移り、ルータは、マルチキャストゲーテッド高速障害通知専用のマルチキャストグループアドレスにパケットを送る。フローは次いで動作1425に移り、ルータは、障害を反映するために、そのルーティングテーブル及び/又は転送テーブルを適当に更新する(例えば、IGPモジュールが、そのルーティングテーブル及び/又は転送テーブルを適当に更新する)。
【0100】
動作1425は、幾つかの実施形態において、動作1415及び/又は1420の前に又は同時に開始されてもよい。ただし、上記更新は、典型的には、高速障害通知メッセージが生成され及び送信される後までは完了されないことが理解されるべきである。ルータは、高速障害通知メッセージを生成し及び送信する前にルーティングテーブル及び転送テーブルの更新が終了されるまで待たないことも理解されるべきである。従って、高速障害通知メッセージを生成し及び送信することは、ルーティングテーブル及び転送テーブルの更新とは独立に実行される。
【0101】
図15は、一実施形態に係る、ゲーテッドマルチキャスト高速障害通知メッセージフラッディングアプリケーションにおいて、マルチキャスト高速障害通知メッセージを受信するルータによって実行される例示的な動作を図示するフロー図である。動作15010において、ルータは、ネットワーク障害に関する情報を含むマルチキャスト高速障害通知メッセージを受信する。例えば、当該ルータのFFNモジュールは、マルチキャスト高速障害通知メッセージを受信する。また、高速障害通知メッセージは、ルータに、ゲーテッドマルチキャスト高速フラッディング処理が実行されるべきであることも示す。当該処理は、RPFチェックを実行することを含み、高速障害通知を他のインタフェースにマルチキャストすることを含み得る。フローは次いで動作1515に移り、ルータ(例えば、FFNモジュール)は、RPFチェックを実行する。当該RPFチェックは、高速障害通知メッセージの到着インタフェースが、発信側ルータに到達するためのアウトゴーイングインタフェースと同じであるかを判定することを含む。例えば、ルータは、マルチキャスト高速障害通知パケットのソースであるルータについてのIPユニキャストルーティングテーブルにアクセスして、当該ルータに到達するためのアウトゴーイングインタフェースを判定する。具体的な例として、受信側ルータのFFNモジュールは、SPTに基づいて生成されたデータプレーン上の双方向マルチキャストツリーを用いて、マルチキャスト高速障害通知パケットのソースに到達するためのアウトゴーイングインタフェースを判定する。高速障害通知メッセージのインカミングインタフェースが当該高速障害通知メッセージを発信したルータに到達するためのアウトゴーイングインタフェースと同じである場合、フローは動作1520に移る。そうでない場合、フローは動作1540に移り、パケットは破棄される。
【0102】
動作1520において、ルータ(例えば、当該ルータのFFNモジュール)は、当該ルータのその他のインタフェースに高速障害通知をマルチキャストする。例えば、
図13を参照すると、ルータ1320Bがマルチキャスト高速障害通知メッセージ1360をリンク1350上で受信し及びリンク1350に対応するインタフェースはルータ1320Aに到達するために用いられるインタフェースと同じであると判定することに応じて、FFNモジュール1315Bは、リンク1354及び1360に対応するインタフェースから高速障害通知メッセージ1360をマルチキャストする。フローは動作1520から動作1525に移り、FFNモジュールは、当該ルータのルーティングプロトコルモジュール(例えば、IGPモジュール)に高速障害通知を転送する。フローは次いで動作1530に移り、ルーティングプロトコルモジュールは、ネットワーク障害を反映するためにルーティングテーブル及び転送テーブルを更新する。
【0103】
動作1530は、幾つかの実施形態において、動作1520の前に又は同時に開始されてもよい。ただし、上記更新は、典型的に、高速障害通知メッセージがフラッディングされた後まで完了されないことが理解されるべきである。ルータは、高速障害通知メッセージをフラッディングする前にルーティングテーブル及び転送テーブルの更新が終了されるまで待たないことも理解されるべきである。
【0104】
最短パスツリー(SPT)選択ルート高速障害通知メッセージフラッディング
一実施形態において、高速障害通知メッセージのための伝達メカニズムは、ルータのうちの1つをルートノードとして選択するSPF算出に基づくSPTを用いるマルチキャストベースである。ツリーは双方向マルチキャストツリーと同様であるが、IGP処理によって直接構築される。ネットワークにおけるルータは、ルータのうちの1つをルートノードとして選択し、IGPモジュールは、現行のネットワークトポロジーに基づいて、選択されたルータをルートとするSPTを構築する。一実施形態において、ルータは、最上位のルータIDを有するルータがルートノードとなるように選択する。双方向マルチキャスト転送エントリは、構築されたSPTに基づいてIGPモジュール(例えば、IS−IS又はOSPF)によって作成され、高速障害通知メッセージを広める際に用いられるためにデータプレーン(例えば、ルータの1つ以上のラインカード)にダウンロードされることができる。高速障害通知メッセージは、ダウンロードされた双方向マルチキャスト転送エントリを用いる通常のマルチキャストプロトコルを用いて転送される。
【0105】
図16は、一実施形態に係る、ルータにおいて実行されるSPF算出に基づいてSPTを構築するための例示的な動作を図示する。動作1610において、ルータは、ルートノードとなるネットワークのルータを選択する。選択されたルータは、必ずしも動作1610を実行しているルータではない。一実施形態において、ルートノードとして選択されたルータは、最上位のルータIDを有する。当然ながら、ルートノードの選択は、異なる実施形態においては異なる手法で実行され得る(例えば、最下位のルータIDを有するルータ)。ただし、いずれの場合にも、ネットワークにおけるルータは、どのルータがルートノードであるかについて合意する必要がある。フローは次いで動作1615に移り、ルータは、現行のネットワークトポロジーに基づいて、選択されたルートノードをルートとするSPTを構築する。例えば、ルータは、(例えば、OSPF又はIS−ISを用いる場合)ルータのLSDB(link state database)上でSPFの実装を実行する。フローは次いで動作1620に移り、構築されたSPTは、高速障害通知メッセージを広める際に用いられるための双方向マルチキャストツリーとして、ルータのデータプレーン(例えば、ルータのデータトランスポート層)にダウンロードされる。
【0106】
図17は、一実施形態に係る、ネットワーク障害を検出して、SPF選択ルートノード算出に基づくSPTを用いてマルチキャストベースの高速障害通知メッセージを用いるドメインワイドなFFFCを開始するルータによって実行される例示的な動作を図示する。動作1710において、ルータは、ネットワーク障害を検出する。一実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。フローは次いで動作1715に移る。
【0107】
動作1715において、ルータ(例えば、当該ルータ上のFFNモジュール)は、ネットワーク障害に関する情報を含む高速障害通知メッセージを生成する。高速障害通知メッセージは、受信側ルータ上で高速フラッディングイベントとして扱われるべきである。高速障害通知メッセージは、受信側ルータに、SPT選択ルートノード算出に基づくSPTを用いてマルチキャスト高速フラッディング処理が実行されるべきであることを示す。当該処理は、高速障害通知をマルチキャストすることを含み得る。一実施形態において、高速障害通知メッセージは、マルチキャスト高速障害通知専用のマルチキャストアドレスの宛先アドレスを有する。マルチキャストの決定及び結果として生じるルータによる高速障害通知メッセージの如何なるマルチキャストも、アプリケーション層がルーティングテーブル及び/又は転送テーブルを更新することとは独立に発生する。従って、高速障害通知メッセージは、受信側ルータに、高速障害通知メッセージを回線レートでマルチキャストすること、並びにネットワーク障害を反映するためにそれらのルーティングテーブル及び/又は転送テーブルを更新することの双方を示す。
【0108】
フローは動作1715から動作1720に移り、ルータは、マルチキャスト高速障害通知専用のマルチキャストグループアドレスにパケットを送る。フローは次いで動作1725に移り、ルータは、そのルーティングテーブル及び/又は転送テーブルを適当に更新して、障害を反映する(例えば、IGPモジュールは、そのルーティングテーブル及び/又は転送テーブルを適当に更新する)。
【0109】
動作1725は、幾つかの実施形態において、動作1715及び/又は1720の前に又は同時に開始されてもよい。ただし、上記更新は、典型的には、高速障害通知メッセージが生成され及び送信される後までは完了されないことが理解されるべきである。ルータは、高速障害通知メッセージを生成し及び送信する前にルーティングテーブル及び転送テーブルの更新が終了されるまで待たないことも理解されるべきである。従って、高速障害通知メッセージを生成し及び送信することは、ルーティングテーブル及び転送テーブルの更新とは独立に実行される。
【0110】
図18は、一実施形態に係る、SPT選択ルートノードベースのFFFCアプリケーションにおいてマルチキャスト高速障害通知メッセージを受信するルータによって実行される例示的な動作を図示するフロー図である。動作1810において、ルータは、ネットワーク障害に関する情報を含むマルチキャスト高速障害通知メッセージを受信する。例えば、当該ルータのFFNモジュールは、マルチキャスト高速障害通知メッセージを受信する。高速障害通知メッセージは、ルータに、SPT選択ルートノードベースのマルチキャスト高速フラッディング処理が実行されるべきであることを示す。当該処理は、(上記のSPT選択ルート処理に基づく双方向マルチキャストツリーによって示される)他のインタフェースに高速障害通知をマルチキャストすることを含む。フローは動作1810から動作1815に移る。
【0111】
動作1815において、ルータ(たとえば、ルータのFFNモジュール)は、(上記のSPT選択ルート処理に基づいて生成される)そのデータプレーンにおける双方向マルチキャストツリーによって示される他のルータに、高速障害通知メッセージをマルチキャストする。双方向マルチキャストツリーにおいて示されるルータから下流にマルチキャストの受け手(例えば、別のルータ)が存在しない場合、当該ルータはパケットをマルチキャストしないことが理解されるべきである。一実施形態においては、ループ回避処理(例えば、RPFチェック)も実行され得る。フローは動作1815から動作1820に移り、高速障害通知メッセージは、ルーティングプロトコルモジュールに送られる。例えば、ルータのFFNモジュールは、高速障害通知をさらなる処理のために当該ルータ上のIGPモジュールに転送する。フローは次いで動作1825に移り、ルーティングプロトコルモジュールは、ネットワーク障害を反映するためにルーティングテーブル及び/又は転送テーブルを適当に更新する。動作1820及び/又は1825は、幾つかの実施形態において、動作1815の前に又は同時に開始されてもよい。ただし、上記更新は、典型的に、高速障害通知メッセージのマルチキャスト後まで完了されないことが理解されるべきである。ルータは、高速障害通知メッセージをマルチキャストする前に、ルーティングテーブル及び転送テーブルの更新が終了されるまで待たないことも理解されるべきである。
【0112】
PIM双方向マルチキャスト配信ツリー高速障害通知メッセージフラッディング
一実施形態において、高速障害通知メッセージのための伝達メカニズムは、PIM(Protocol Independent Multicast)プロトコルを用いて構築される双方向マルチキャスト配信ツリーを用いる。構築された双方向マルチキャスト配信ツリーは、高速障害通知メッセージ専用である。特定の実施形態において、双方向PIM(BIDIR−PIM:bidirectional PIM)プロトコルが用いられて、高速障害通知メッセージの高速フラッディングのための双方向マルチキャストツリーが確立される。しかしながら、他の実施形態においては、PIMプロトコルの他の変形例(例えば、PIM−ASM(Any-Source Multicast)、PIM−SSM(Source-Specific Multicast))が用いられて、高速障害通知メッセージの高速フラッディングのためのマルチキャストツリーが構築される。
【0113】
一実施形態においては、専用のマルチキャストアドレスが定義され、高速障害通知メッセージフラッディングのために用いられる。この専用のマルチキャストアドレスは、高速フラッディングのための高速障害通知メッセージを識別するために用いられる。ネットワークにおける参加している各ルータは、BIDIR−PIMプロトコルの実装を含み、当該BIDIR−PIMプロトコルを設定し及び実行して、双方向マルチキャストツリーを生成し、当該マルチキャストツリーがルータのデータプレーンにダウンロードされる(例えば、1つ以上のラインカードにインストールされる)ようにする。BIDIR−PIMプロトコルは、双方向マルチキャストツリーを構築する際に、ルーティングプロトコル(例えば、IGPモジュール)から得られる情報を用いる。双方向マルチキャストツリーは、高速障害通知メッセージを広める際に用いられる。また、各ルータは、マルチキャストグループに加えるための専用のマルチキャストアドレスを追加する。高速障害通知メッセージは、ダウンロードされた双方向マルチキャストツリーを用いる通常のマルチキャストプロトコルを用いて転送される。
【0114】
図19は、一実施形態に係る、ネットワーク障害を検出して、PIMプロトコルを用いて構築される双方向マルチキャストツリーを用いてマルチキャスト高速障害通知メッセージを用いるドメインワイドなFFFCを開始するルータによって実行される例示的な動作を図示する。動作1910において、ルータは、ネットワーク障害を検出する。一実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングが用いられて、障害が検出される。別の実施形態においては、双方向転送検出(BFD)が用いられて、障害が検出される。別の実施形態において、レイヤ2のリンクイベントモニタリング及びシグナリングとBFDとの組み合わせが用いられて、障害が検出される。フローは次いで動作1715に移る。
【0115】
動作1915において、ルータ(例えば、当該ルータ上のFFNモジュール)は、ネットワーク障害に関する情報を含む高速障害通知メッセージを生成する。高速障害通知メッセージは、受信側ルータ上で高速フラッディングイベントとして扱われるべきである。高速障害通知メッセージは、受信側ルータに、PIMプロトコルを用いて構築される双方向マルチキャストツリーを用いてマルチキャスト高速フラッディング処理が実行されるべきであることを示す。当該処理は、高速障害通知をマルチキャストすることを含み得る。一実施形態において、高速障害通知メッセージは、マルチキャスト高速障害通知専用のマルチキャストアドレスの宛先アドレスを有する。アプリケーション層がネットワーク障害を反映するためにルーティングテーブル及び/又は転送テーブルを更新することとは独立に、高速障害通知メッセージは、(転送が発生すべき場合には)それらのルータによって転送されるべきである。従って、高速障害通知メッセージは、受信側ルータに、高速障害通知メッセージを回線レートでマルチキャストすること、並びにネットワーク障害を反映するために当該受信側ルータのルーティングテーブル及び/又は転送テーブルを更新することの双方を示す。
【0116】
フローは動作1915から動作1920に移り、ルータは、マルチキャスト高速障害通知専用のマルチキャストグループアドレスにパケットを送る。フローは次いで動作1925に移り、ルータは、障害を反映するためにそのルーティングテーブル及び/又は転送テーブルを適当に更新する(例えば、IGPモジュールが、そのルーティングテーブル及び/又は転送テーブルを適当に更新する)。
【0117】
動作1925は、幾つかの実施形態において、動作1915及び/又は1920の前に又は同時に開始されてもよい。ただし、上記更新は、典型的に、高速障害通知メッセージが生成され及び送信される後まで完了されないことが理解されるべきである。ルータは、高速障害通知メッセージを生成し及び送信する前に、ルーティングテーブル及び転送テーブルの更新が終了されるまで待たないことも理解されるべきである。従って、高速障害通知メッセージを生成し及び送信することは、ルーティングテーブル及び転送テーブルの更新とは独立に実行される。
【0118】
図20は、一実施形態に係る、PIMプロトコルを用いて構築される双方向マルチキャストツリーを用いるFFFCアプリケーションにおいてマルチキャスト高速障害通知メッセージを受信するルータによって実行される例示的な動作を図示するフロー図である。動作2010において、ルータは、ネットワーク障害に関する情報を含むマルチキャスト高速障害通知メッセージを受信する。例えば、当該ルータのFFNモジュールは、高速障害通知メッセージを受信する。また、高速障害通知メッセージは、ルータに、マルチキャスト高速フラッディング処理が実行されるべきであることも示す。当該処理は、(PIMプロトコルを用いて構築される双方向マルチキャストツリーによって示される)他のインタフェースに高速障害通知をマルチキャストすることを含み得る。フローは動作2010から2015に移る。
【0119】
動作2015において、ルータ(例えば、ルータのFFNモジュール)は、(PIMプロトコルによって生成される)そのデータプレーンにおける双方向マルチキャストツリーによって示される他のルータに高速障害通知メッセージをマルチキャストする。双方向マルチキャストツリーにおいて示されるルータから下流にマルチキャストの受け手(例えば、別のルータ)が存在しない場合にルータはパケットをマルチキャストしないことが理解されるべきである。一実施形態において、ループ回避処理(例えば、RPFチェック)も実行され得る。フローは動作2015から動作2020に移り、高速障害通知メッセージは、ルーティングプロトコルモジュールに送られる。例えば、ルータのFFNモジュールは、さらなる処理のためにルータ上のIGPモジュールに高速障害通知を転送する。フローは次いで動作2025に移り、ルーティングプロトコルモジュールは、ネットワーク障害を反映するためにルーティングテーブル及び/又は転送テーブルを適当に更新する。動作2020及び/又は2025は、幾つかの実施形態において、動作2015の前に又は同時に開始されてもよい。ただし、上記更新は、典型的に、高速障害通知メッセージのマルチキャスト後まで完了されないことが理解されるべきである(メッセージがマルチキャストされるべき場合)。ルータは、高速障害通知メッセージをマルチキャストする前に、ルーティングテーブル及び転送テーブルの更新が終了されるまで待たないことも理解されるべきである。
【0120】
高速障害通知メッセージをフラッディングするためのPIMベースの解決策は、現在のところ多くのルータがPIMを実行するケイパビリティを有しているため、書き込まれる必要がある追加的なコードの量がほとんど最小限で済むという利点を有する。また、(レイヤ2のメカニズムである)高速障害通知メッセージを広めるためのブリッジベースのフラッディング技法と比較して、PIMベースの解決策は、レイヤ3のメカニズムを用いており、レイヤ3のルーティングアプリケーション/転送アプリケーションにとってより容易であると見なされ得る。しかしながら、PIMベースの解決策は、ネットワークにおけるツリー状態を維持するために、ルータ設定及びシグナリングにおけるオーバーヘッドを増加させてしまう。また、PIMベースの解決策は、ブリッジングよりも複雑であり、ネットワーク障害のハンドリングの観点からはロバスト性がより低くなり得る。
【0121】
高速障害通知メッセージのフォーマット
一実施形態において、本明細書において説明される高速障害通知メッセージは、IGPに依存しないメッセージフォーマットを用い、レイヤ2プロトコルのパケットであり、データトランスポート層によって発行される。前述の通り、高速障害通知メッセージについてのメッセージフォーマットは、既存のIGP PDUパケットフォーマットを用い得る。例えば、IGPがOSPFである場合には、崩壊した隣接関係(ルータが少ないあるリンク)を反映するOSPFルータLSA(link state advertisement)は、高速障害通知メッセージとして用いられ、特別な変形無しにルータに高速フラッディングされることができる。既存のIGP PDUパケットフォーマットを用いることは、当該フォーマットが既に存在し(追加的なデータフォーマットが必要とされず)、同じLSAが到来する際に低速のフラッディングに自然に一体化するという利点を有する。しかしながら、既存のIGP PDUパケットフォーマットを用いることは、当該フォーマットがIGPプロトコルごとに異なり(例えば、OSPFについての既存のIGP PDUパケットフォーマットは、IS−ISのそれとは異なる)、メッセージフォーマットが典型的には制御プレーンに存在するIGPモジュールによって発信されるか、又はさもなければ事前の演算を必要とし、データプレーン(トランスポート層)のディスパッチングメカニズムを依然として必要とするという不利益も有する。
【0122】
本明細書において説明される独立したメッセージフォーマットは、IGPに依存せず(従って、同じメッセージフォーマットが、異なるIGPの実装について用いられ得る)、データプレーン(データトランスポート層)によって発行され、トリガリングポイントにより近くなる結果、イベントパスごとに短くなるという利点を有する。
【0123】
独立したメッセージフォーマットは、TLVベースである。TLVは、基礎となる高速フラッディングトランスポートの要件に依存して、IPパケットにパックされても又はパックされなくてもよい。
図21は、一実施形態に係る、高速障害通知メッセージについての例示的な独立したメッセージフォーマットを図示する。例示的な高速障害通知メッセージフォーマット2110は、メッセージが高速障害通知メッセージであることを示すタイプフィールド2115、長さフィールド2120、並びに、複数の可変値フィールド、即ち、広告ルータIDフィールド2125、広告リンクIDフィールド2130、ピアルータIDフィールド2135、及びピアリンクIDフィールド2140を含む。これらのフィールドは、高速障害通知メッセージを発信するルータ及びリンク、並びに障害を経験しているルータ及びリンクを識別する。TLVベースの独立したメッセージフォーマットは、将来的な開発及び拡張を可能にする。
【0124】
独立したメッセージフォーマットは、高速障害通知メッセージのハンドリングがIGP処理に依存しないことを可能にする。IGP非依存のフォーマットを用いる高速障害通知メッセージを受信すると、ルータは、当該メッセージを、本明細書において説明されるイベントフレームワークにおけるローカルイベントとして扱う。一実施形態において、独立したメッセージフォーマットを用いる高速障害通知メッセージがバグ若しくは他のエラー状態又はサービス攻撃の拒否に起因して誤ってフラッディングされる場合を防ぐために、タイムアウト機構が用いられる。タイマが満了すると、ルータは、システムをロールバックして、エラーが長続きせず自己回復可能であることを確実にする。
【0125】
一実施形態において、高速障害通知メッセージについての独立したメッセージは、通例の通知メッセージに取って代わらない。従って、プロトコル非依存の高速障害通知メッセージが本明細書において説明されるFFFCアーキテクチャを介して最初に転送され、ネットワーク障害を反映する通例のIGPフラッディングが後に続く。
【0126】
プロトコル非依存なメッセージフォーマットを用いる高速障害通知を受信した後、当該メッセージは、処理のためにIGPモジュールに送られるであろう。例えば、IGPモジュールは、そのルーティングトポロジーデータベース(例えば、そのLSDB)を適宜更新し、(実装されている場合には)セーフティタイマをキャンセルし、最短パス優先(SPF)処理を更新後のデータベースに実行して、ルーティングテーブル及び/又は転送テーブルを適宜更新すべきかを判定するであろう。ルータは、用いられるトランスポートに依存して、高速障害通知メッセージも拡散させ得る。
【0127】
本明細書において説明されるように、FFFCアーキテクチャは、ネットワーク障害通知メッセージを転送することをアプリケーション層から切り離し、データトランスポート層上へ移行させる。結果として、ネットワークワイドな収束のために必要な時間を低減するネットワーク障害通知メッセージを転送するために制御プレーンとデータプレーンとの間のインタラクションは必要とされない。これは、ネットワーク障害が起きた場合におけるネットワークダウンタイムを最小限にする。
【0128】
本明細書において説明されるように、動作は、ある動作を実行するように構成され又は所定の機能性を有する特定用途向け集積回路(ASIC)などのハードウェアの特定の構成、又は非一時的な(non-transitory)コンピュータ読取可能な媒体において具現化されるメモリに記憶されるソフトウェア命令を指し得る。従って、図面に示される技法は、1つ以上の電子デバイス(例えば、ルータ)上に記憶され及び実行されるコード及びデータを用いて実装されることができる。そのような電子デバイスは、非一時的なコンピュータ読取可能な記憶媒体(例えば、磁気ディスク、光ディスク、RAM、ROM、フラッシュメモリデバイス、相変化メモリ)、及び一時的なコンピュータ読取可能な通信媒体(例えば、搬送波、赤外線信号、デジタル信号といった、電気的、光学的、音響的又は他の形態の伝搬信号)といったコンピュータ読取可能な媒体を用いて、コード及びデータを記憶し並びに(内部的に、及び/又は、ネットワーク上で他の電子デバイスと)通信する。また、そのような電子デバイスは、典型的に、1つ以上の記憶装置(非一時的な機械読み取り可能な記憶媒体)、ユーザ入力/出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)、並びにネットワーク接続といった1つ以上の他のコンポーネントに結合される1つ以上のプロセッサのセットを含む。プロセッサのセットと他のコンポーネントとの結合は、典型的に、1つ以上のバス及び(バスコントローラとも称される)ブリッジを介する。従って、所与の電子デバイスの記憶装置は、典型的に、当該電子デバイスの1つ以上のプロセッサのセット上での実行のためのコード及び/又はデータを記憶する。当然ながら、本発明の一実施形態の1つ以上の部分は、ソフトウェア、ファームウェア、及び/又はハードウェアの様々な組み合わせを用いて実装され得る。
【0129】
図面におけるフロー図は本発明のある実施形態によって実行される動作の特定の順序を示すが、そのような順序は例示である(例えば、別の実施形態は、当該動作を異なる順序で実行し、ある動作を組み合わせ、ある動作を重複させる等し得る)ことが理解されるべきである。
【0130】
本発明は幾つかの実施形態の観点から説明されたが、本発明が説明された実施形態に限定されず、添付の特許請求の範囲の思想及び範囲内における変形及び変更と共に実施をされることができることを当業者は認識するであろう。従って、説明は限定ではなく例示として考慮されるべきである。