IP Fast Reroute ループフリー代替の実装

IP Fast Reroute ループフリー代替機能により、障害のあるリンクを含むパケットを、リモート ループフリー代替(数ホップ離れている)までトンネリングすることができます。

ループフリー代替による Fast Reroute の前提条件

  • ループフリー代替による Fast Reroute 機能は、インターフェイスがポイントツーポイント インターフェイスである場合にのみ、インターフェイスを介して到達可能なパスを保護できます。

  • LAN インターフェイスが 1 つのネイバーに物理的に接続されている場合、ループフリー代替(LFA)FRR 経由で保護するために、LAN インターフェイスをポイントツーポイント インターフェイスとして設定する必要があります。

  • リモート ループフリー代替による Fast Reroute 機能の適切な展開のために、保護されたリンクも BFD で設定する必要があります。

ループフリー代替による Fast Reroute の制約事項

  • ロード バランス サポートは、FRR で保護されたプレフィックスで利用可能ですが、50 ミリ秒のカットオーバーの時間は保証されません。

  • 最大 8 個の FRR 保護のインターフェイスで同時にカットオーバーを実行することができます。

  • レイヤ 3 VPN だけがサポートされます。

  • LFA 計算は、同じレベルまたは領域に属するインターフェイスまたはリンクに制限されます。したがって、バックアップ LFA の計算時に同じ LAN 上のすべてのネイバーを除外すると、トポロジのサブセットで修復を使用できなくなる可能性があります。

  • 物理インターフェイスおよび物理ポートチャネル インターフェイスのみ保護されます。サブインターフェイス、トンネル、および仮想インターフェイスは保護されません。

  • MPLS トラフィックのリモート LFA バックアップ パスは、LDP を使用してのみ設定できます。

  • ボーダー ゲートウェイ プロトコル(BGP)プレフィックス独立コンバージェンス(PIC)と IP FRR は、同じプレフィックスに使用されない限り、同じインターフェイス上に設定できます。

IS-IS および IP FRR

ローカル リンクがネットワークで失敗した場合、IS-IS は、影響を受けるすべてのプレフィックスの新しいプライマリ ネクストホップ ルートを再計算します。これらのプレフィックスは、RIB および転送情報ベース(FIB)で更新されます。プライマリ プレフィックスがフォワーディング プレーンで更新されるまで、影響を受けるプレフィックス宛てのトラフィックは廃棄されます。このプロセスには数百ミリ秒かかることがあります。

IP FRR で、IS-IS はプライマリ パスで障害が発生した場合に使用するために、フォワーディング プレーンに対する LFA ネクストホップ ルートを計算します。LFA はプレフィックスごとに計算されます。

特定のプライマリ パスに複数の LFA がある場合、IS-IS はプライマリ パスの単一 LFA を選ぶために、タイブレーク ルールを使用します。複数 LFA パスを持つプライマリ パスの場合、プレフィックスは LFA パス間で均等に分散されます。

修復パス

修復パスでは、ルーティングの遷移時にトラフィックが転送されます。リンクまたはルータに障害が発生すると、物理層の信号が失われるため、当初は隣接ルータしかこの障害を認識できません。ネットワーク内のその他すべてのルータは、この障害に関する情報がルーティング プロトコルによって伝播されるまで(これには数百ミリ秒かかる可能性があります)、この障害の性質と場所を認識しません。したがって、このネットワーク障害の影響を受けたパケットがそれぞれの宛先に到達するように準備する必要があります。

障害が発生したリンクに隣接するルータは、障害が発生したリンクを使用していた可能性のあるパケットに対して、一連の修復パスを使用します。これらの修復パスは、ルータが障害を検出してから、ルーティングの遷移が完了するまで使用されます。ルーティングの遷移が完了するまでに、ネットワーク内のすべてのルータは転送データを変更し、障害が発生したリンクはルーティングの計算から除外されます。

修復パスは、障害が検出されるとすぐにアクティブになるようにするために、障害を予測して事前計算されます。

IPv4/IPv6 LFA FRR 機能では次の修復パスを使用します。
  • 等コスト マルチパス(ECMP)は、宛先の等コスト パス分割セットのメンバーとしてリンクを使用します。セットの他のメンバーは、リンクに障害が発生したときに代替パスを提供できます。

  • LFA は、ループバックしないで宛先にパケットを送るネクストホップ ルートです。ダウンストリーム パスは LFA のサブセットです。

LFA の概要

LFA はプライマリ ネイバー以外のノードです。トラフィックは、ネットワーク障害発生後に LFA にリダイレクトされます。LFA は、失敗について認識せずに転送を決定します。

LFA は、トラフィックの転送に障害のある要素を使用したり、保護ノードを使用することはできません。LFA はループを発生させてはなりません。LFA は、インターフェイスがプライマリ パスとして使用できる限り、デフォルトでサポートされるすべてのインターフェイスでイネーブルになります。

プレフィックスごとの LFA を使用する利点は次のとおりです。
  • プライマリ パスでリンクがダウンした場合、修復パスが移行中にトラフィックを転送します。

  • プレフィックスごとの LFA を持つすべての宛先が保護されます。これにより、サブセット(障害の遠端のノード)のみが保護されない状態で残ります。

LFA の計算

プレフィックスごとに LFA を計算する汎用アルゴリズムについては、RFC 5286 を参照してください。IS-IS は、メモリ使用量を減らすための少量の変更とともに RFC 5286 を実装します。保護のプレフィックスを検証する前にすべてのネイバーの最短パス優先(SPF)計算を実行する代わりに、IS-IS は SPF 計算がネイバーごとに実行された後でプレフィックスを検査します。IS-IS は SPF 計算の実行後にプレフィックスを検査するため、IS-IS は SPF 計算がネイバーごとに実行された後も最適な修復パスを保持します。IS-IS では、すべてのネイバーに対する SPF の結果を保存する必要はありません。

RIB とルーティング プロトコル間の連携

ルーティング プロトコルは、タイブレーク アルゴリズムを実装して、プレフィックスの修復パスを計算します。計算の結果は、プライマリ パス付きの一連のプレフィックスになり、いくつかのプライマリ パスが修復パスに関連付けられます。

タイブレーク アルゴリズムは特定の条件を満たすか、または特定の属性を持つ LFA を考慮します。複数の LFA がある場合は、 tie-break キーワードを使用して fast-reroute per-prefix コマンドを設定します。ルールによってすべての候補 LFA が除外される場合、そのルールはスキップされます。

プライマリ パスには、複数の LFA を設定できます。デフォルトのタイブレーク ルールを実装し、ユーザがこれらのルールを変更できるようにするには、ルーティング プロトコルが必要です。タイブレーク アルゴリズムの目的は、複数の候補 LFA を除外し、プレフィックス単位のプライマリ パスごとに 1 つの LFA を選択し、プライマリ パスが失敗したときに複数の候補 LFA でトラフィックを分散させることです。

タイブレーク ルールでは、すべての候補を除外することはできません。

タイブレークには、次の属性が使用されます。
  • ダウンストリーム:保護された宛先へのメトリックが宛先へのノードを保護しているメトリックよりも低い候補を除外します。

  • ラインカード分離:保護されたパスと同じラインカードを共有している候補を除外します。

  • 共有リスク リンク グループ(SRLG):保護されたパス SRLG のいずれかに属する候補を除外します。

  • 負荷分散:保護されたパスを共有するプレフィックスで残りの候補を分散させます。

  • 最低修復パス メトリック:保護されたプレフィックスへのメトリックが高い候補を除外します。

  • ノードの保護:保護されたノードではない候補を除外します。

  • プライマリ パス:ECMP ではない候補を除外します。

  • セカンダリ パス:ECMP の候補を除外します。

リモート ループフリー代替による Fast Reroute

リモート ループフリー代替による Fast Reroute(FRR リモート LFA)により、障害のあるリンクを含むパケットを、リモート ループフリー代替(数ホップ離れている)までトンネリングすることができます。 

リンクやルータに障害が発生すると、分散ルーティング アルゴリズムによって障害を考慮した新しいルートが計算されます。計算のための時間をルーティングの遷移と呼びます。遷移が完了し、すべてのルータがネットワーク上の共通のビューで収束されるまで、送信元と宛先のペア間の接続は中断されます。事前計算済みの代替ネクスト ホップを使用してルーティングの遷移時間を 50 ミリ秒より少なくするために、IP ループフリー代替(LFA)Fast Reroute(FRR)を使用できます。リンク障害の通知を受けると、ルータはトラフィック損失を減らすために、修復パスにすぐに切替えます。IGP/BGP コンバージェンスにおけるルーティング遷移には、最大数百ミリ秒かかる場合があることに注意してください。

IP ループフリー代替(LFA)Fast Reroute(FRR)は、修復パスの事前計算をサポートしています。Intermediate System-to-Intermediate System(IS-IS)ルーティング プロトコルによって、修復パスの計算が可能になります。結果の修復パスはルーティング情報ベース(RIB)に送信されます。Cisco Express Forwarding(旧 CEF)と Open Shortest Path First(OSPF)は、修復パスをインストールします。

IP ローカル LFA FRR では、IGP は直接接続されたネイバーのみを LFA バックアップ パスとして計算し、特定のプレフィックスのプライマリ パスを保護します。Label Distribution Protocol(LDP; ラベル配布プロトコル)は、保護されたプレフィックスのネクストホップを使用してラベル付けされたバックアップ LSP を設定します。一部のトポロジ(一般に使用されるリングベースのトポロジなど)は、LFA FRR で提供できない保護を必要とします。そのような場合は、LDP ベースの FRR リモート LFA 機能を使用します。この機能では、IGP が非直接接続ネイバー(数ホップ離れている)を LFA バックアップ パスとして計算し、特定のプレフィックスのプライマリ パスを保護します。LDP は、保護されたプレフィックスのリモート ネクストホップを使用してラベル付けされたバックアップ LSP を設定します。また、LDP は、リモート ノードから学習した LFA バックアップ ラベルを公開することなく、トラフィックをリモート ネクストホップにトンネリングする別のトランスポート LSP を設定します。

下の図 のトポロジについて考えます。

図 1. リモート LFA による FRR とリング トポロジ


赤色のループしている矢印は、ノード A と C の間に障害が起きた直後(ネットワークの再コンバージェンス前)にループしたトラフィックを表しています。デバイス A は、F を宛先として B にネクストホップするトラフィックを送信しようと試みます。ノード C および F によってアドバタイズされているプレフィックスの LFA として、デバイス B を使用することはできません。ただし、ノード D は、保護ノード A に直接接続されていません。C によりアドバタイズされるプレフィックスを保護するには、障害中のリンクをトンネルが通過しない条件で、ノード A は、障害中の A - C リンクを含むパケットをノード D までトンネリングする必要があります。

FRR リモート LFA 機能により、障害のあるリンクを含むパケットを、リモート ループフリー代替(数ホップ離れている)までトンネリングすることができます。上の図で、A と D の間の緑色の矢印は、リモート LFA 機能によりルーピングをバイパスするために自動的に生成されたトンネルを表しています。

設定

LFA による FRR を設定するには、次のタスクを実行します。

ローカル LFA による FRR の設定


/* Configure FRR with local LFA using IS-IS */
Router# configure
Router(config)# router isis ring
Router(config)#  is-type level-1
Router(config-isis)# net 49.0001.0000.0000.0007.00
Router(config-isis)# nsf cisco
Router(config-isis)# address-family ipv4 unicast
Router(config-isis-af)# metric-style wide
Router(config-isis-af)# mpls traffic-eng level-1-2
Router(config-isis-af)# mpls traffic-eng router-id 10.7.7.7
Router(config-isis-af)# exit
Router(config-isis)# interface Loopback 0
Router(config-isis-if)# point-to-point
Router(config-isis-if)# address-family ipv4 unicast
Router(config-isis-if)# exit
Router(config-isis)# interface TenGigabitEthernet 0/0/0/4 
Router(config-isis-if)# point-to-point
Router(config-isis-if)# address-family ipv4 unicast
Router(config-isis-af)# fast-reroute per-prefix  
Router(config-isis-af)# commit

/* Configure FRR with local LFA using OSPF*/
Router# configure
Router(config)# router ospf 50
Router(config-ospf)# router-id 10.1.1.1
Router(config-ospf)# address-family ipv4 unicast
Router(config-ospf-af)# area 0
Router(config-ospf-af)# mpls traffic-eng
Router(config-ospf-af)# interface Loopback 0
Router(config-ospf-af)# exit
Router(config-ospf)# interface HundredGigE0/0/1/0
Router(config-ospf-if)# fast-reroute per-prefix
Router(config-ospf-if)# exit
Router(config-ospf)# exit
Router(config)# mpls traffic-eng router-id Loopback 0

LFA によるリモート FRR を設定します。


/* Configure FRR with remote LFA using IS-IS */
Router# configure
Router(config)# router isis ring
Router(config)#  is-type level-1
Router(config-isis)# net 49.0001.0000.0000.0007.00
Router(config-isis)# nsf cisco
Router(config-isis)# address-family ipv4 unicast
Router(config-isis-af)# metric-style wide
Router(config-isis-af)# mpls traffic-eng level-1-2
Router(config-isis-af)# mpls traffic-eng router-id 10.7.7.7
Router(config-isis-af)# exit
Router(config-isis)# interface Loopback 0
Router(config-isis-if)# point-to-point
Router(config-isis-if)# address-family ipv4 unicast
Router(config-isis-if)# exit
Router(config-isis)# interface TenGigabitEthernet 0/0/0/4 
Router(config-isis-if)# point-to-point
Router(config-isis-if)# address-family ipv4 unicast
Router(config-isis-af)# fast-reroute per-prefix  
Router(config-isis-af)# fast-reroute per-prefix remote-lfa tunnel mpls-ldp
 
Router(config-isis-af)# commit

/* Configure FRR with remote LFA using OSPF */
Router# configure
Router(config)# router ospf 50
Router(config-ospf)# router-id 10.1.1.1
Router(config-ospf)# address-family ipv4 unicast
Router(config-ospf-af)# area 0
Router(config-ospf-af)# mpls traffic-eng
Router(config-ospf-af)# interface Loopback 0
Router(config-ospf-af)# exit
Router(config-ospf)# interface HundredGigE0/0/1/0
Router(config-ospf-if)# fast-reroute per-prefix
Router(config-ospf-if)# fast-reroute per-prefix remote-lfa tunnel mpls-ldp

Router(config-ospf-if)# exit
Router(config-ospf)# exit
Router(config)# mpls traffic-eng router-id Loopback 0

実行コンフィギュレーション

この項では、ローカル LFA による FRR 構成を示します。


/* FRR with local LFA with ISIS */
router isis ring
 is-type level-1
 net 49.0001.0000.0000.0007.00
 nsf cisco
 address-family ipv4 unicast
  metric-style wide
  mpls traffic-eng level-1-2
  mpls traffic-eng router-id 10.7.7.7
 !
 interface Loopback0
  point-to-point
  address-family ipv4 unicast
  !
 !
 interface HundredGigE0/0/1/0
  point-to-point
  address-family ipv4 unicast
fast-reroute per-prefix 

/* FRR with local LFA with OSPF */
router ospf 50
 router-id 10.1.1.1
address-family ipv4 unicast
 area 0
  mpls traffic-eng
  interface Loopback0
  !
  interface HundredGigE0/0/1/0
 fast-reroute per-prefix 
  !
!
 mpls traffic-eng router-id loopback 0
!

この項では、リモート LFA による FRR 構成を示します。


/* FRR with remote  LFA with ISIS */
* FRR with local LFA with ISIS */
router isis ring
 is-type level-1
 net 49.0001.0000.0000.0007.00
 nsf cisco
 address-family ipv4 unicast
  metric-style wide
  mpls traffic-eng level-1-2
  mpls traffic-eng router-id 10.7.7.7
 !
 interface Loopback0
  point-to-point
  address-family ipv4 unicast
  !
 !
 interface TenGigabitEthernet 0/0/0/4
  point-to-point
  address-family ipv4 unicast
fast-reroute per-prefix 
fast-reroute per-prefix remote-lfa tunnel mpls-ldp


/* FRR with remote  LFA with OSPF */
router ospf 50
 router-id 10.1.1.1
address-family ipv4 unicast
 area 0
  mpls traffic-eng
  interface Loopback0
  !
  interface HundredGigE0/0/1/0
 fast-reroute per-prefix 
fast-reroute per-prefix remote-lfa tunnel mpls-ldp
  !
!
 mpls traffic-eng router-id loopback 0
!

確認

次の項に示す show 出力には、リモート LFA による FRR 機能の設定の詳細とその設定のステータスが表示されます。


/* Verify the route summary information about the specified routing table. */
 
RP/0/RSP0/CPU0:router# show route 10.3.3.3    

Routing entry for 10.3.3.3/32
   Known via "isis 44", distance 115, metric 20, type level-1
   Installed Nov 15 19:43:13.367 for 00:00:34
   Routing Descriptor Blocks
     10.1.1.1, from 10.3.3.3, via TenGigE0/0/0/0, Backup (remote)
       Remote LFA is 10.9.9.9
      Route metric is 0
     10.1.1.2, from 10.3.3.3, via TenGigE0/7/0/3, Protected
       Route metric is 20
   No advertising protos.


/* Verify the MPLS LDP configuration. */

RP/0/RSP0/CPU0:router# show running mpls ldp 
Codes:
   - = GR label recovering, (!) = LFA FRR pure backup path
   {} = Label stack with multi-line output for a routing path
   G = GR, S = Stale, R = Remote LFA FRR backup
  
 Prefix           Label   Label(s)       Outgoing     Next Hop            Flags
                  In      Out            Interface                        G S R
 ------------- ----- -------- -------- --------------- ----
 192.0.2.0/24     16019   { 16001        Te0/0/0/0    10.1.1.1        (!)     R
                            28006 }                   (10.9.9.9)
                          ImpNull        Te0/7/0/3    192.0.2.1
 192.0.2.1/32     16013   ImpNull        Te0/0/0/0    10.1.1.1
 192.0.1.0/32     16014   { 16001        Te0/0/0/0    10.1.1.1        (!)     R
                            16002 }                   (10.9.9.9)
                          ImpNull        Te0/7/0/3    192.0.2.2
 10.9.9.9/32      16012   16001          Te0/0/0/0    10.1.1.1
                          28006          Te0/7/0/3    192.0.2.1
 10.23.1.0/24     16018   16004          Te0/0/0/0    10.1.1.1        (!)
                          ImpNull        Te0/7/0/3    192.0.2.1
 10.34.1.0/24     16015   ImpNull        Te0/0/0/0    10.1.1.1
 10.0.0.1/32      16011  { 16001         Te0/0/0/0     10.1.1.1        (!)     R
                            16013 }                   (10.9.9.9)
                          16016          Te0/7/0/3    192.0.2.1
 10.100.0.2/32     16010   { 16001        Te0/0/0/0    10.1.1.1        (!)     R