【SRv6】TI-LFA&MicroLoop Avoidance

こんにちは。ネットワークエンジニアとして働いている「だいまる」です。
投稿の間隔が少し空いてしまいましたが、今回は、タイトルにもある通り「TI-LFA」と「MicroLoop Avoidance」について触れていきたいと思います。

LFAとは

  SRv6やネットワークに携わっていると必ず耳にする「LFA」ですが、正式名称は、「Loop Free Alternate」と言います。
 この名前からもわかるようにループフリーとなる代替経路を見つける仕組みのことを指します。これの仕組みのうち代表例の3つについて、触れていきたいと思います。

LFA

 「LFA」は、ダイナミックルーティングプロトコルを利用し、バックアップ経路を算出します。そして、障害発生時に予め用意していたバックアップ経路に切り替えることで断時間を最小限に抑えることができます。
 しかし、「LFA」には算出方法にはループが発生する課題があります。
課題や仕組みについて、具体例を利用しイメージをつかんでいきましょう。
 まず、通常時はメトリックから計算し、メイン経路が「R2→R1→R6」となっており、バックアップ経路が「R3→R4→R5→R6」となっています。
 「R1⇄R2」のリンク障害が発生した場合バックアップ経路に切り替える仕組みとなります。
 ただし、「R1⇄R2」のリンク障害が発生した場合、「R2→R1→R6」の経路が利用できないのは自明となり、「R3」経由の経路に切り替わります
 しかし、「R3」から「R6」への最短経路は、「R2」経由となっており各ルータが障害を検知し、RIB/FIBの更新を行うまでの間、ループが発生します。

remote LFA(rLFA)

 「LFA」で存在したループが発生する課題を多少解決したのが「remote LFA」になります。
 この「remote LFA」は、「ループが発生しないノードまでトンネルを張り、バックアップ経路を生成」します。このバックアップ経路生成方法に触れる前に、3つの用語を覚えていきましょう。
①P-SPACE:始点ノードから障害リンクを通過せずに最短経路となるノードの集合
②Q-SPACE:対向ノード(宛先)に障害リンクを通過せずに最短経路となるノードの集合
③PQ-SPACE:P-SPACEとQ-SPACEの重複ノードの集合

(3つの用語の説明図)

 3つの用語を頭に入れた上で、「remoteLFA」の通常時と課題のパターンを説明します。通常時は、「R2→R1→R6」がメイン経路となり、「R2→R3→R4→R5→R6」がバックアップ経路となります。
これは、P-SPACEが「R3、R4」Q-SPACEが「R1、R4、R5、R6」になるので、PQ-SPACEが「R4」となり、「R2→R4」までLDPなどのプロトコルを利用し、トンネルを作成します。
 トンネルの作成後は、「R4」にパケットを届けることで必然的に「R6」への最短経路は障害リンクを含まない経路となります。

 通常では、P-SPACEとQ-SPACEの重複は存在しますが、存在しない構成がありえることが「remote LFA」の課題となります。重複ノードが存在しないため、バックアップ経路が生成されずルーティングプロトコルの再計算が走り、経路の切り替わりが遅れ断時間が長くなってしまいます。

TI-LFA

 「remote LFA」の課題も解決し、100%ループフリーのバックアップ経路を作成できるのが「TI-LFA」になります。
「TI-LFA」では、PノードやQノードの選定を以下の条件で実施します。
 ①Pノード:Q-SPACEに最も近いP-SPACEのノード
 ②Qノード:P-SPACEに最も近いQ-SPACEのノード

上記のノードが決まった後は、宛先のNode SIDに加え、Pノード宛のNode SIDとPノードとQノードのAdj-SID、QノードのNode SIDをパケットに付加することでバックアップ経路への転送を可能としております。

IOS-XRのコマンド

 IOS-XRのIS-IS上での設定コマンドを以下に記載します。

router isis <instance ID>
 interface <interface ID>
  address-family ipv6 unicast
   fast-reroute per-prefix ※プレフィックスごとのFRを有効にするコマンド
   fast-reroute per-prefix ti-lfa ※TI-LFAの有効化
  !
 !
!

Microloop Avoidance

 LFAについて、説明してきましたが、どのLFAでも必ずループが発生する事象が「Microloop」と呼ばれます。
 この事象は、障害発生時に障害に関連するノードは即座にバックアップ経路に切り替わりますが、それ以外のノードで再計算が走った際にループが発生します。

 上記の事象を防ぐために「Microloop Avoidance」という機能があります。
この機能により、障害が発生した場合、指定時間は「ループが発生しないノードまでトンネルを生成」しパケットを転送することでループを防ぎます。
この詳細な仕組みについては、高性能なサーバを購入し、CML環境を構築した際に見ていきたいと思います。

IOS-XRコマンド

IOS-XRのコマンドは以下の通りとなります。

router isis <instance id>
 address-family ipv6 unicast
  microloop avoidance segment-routing
  microloop avoidance rib-update-delay <time value>
 !
!

最後に

 今回は、FRRの機能である「TI-LFA」についてまとめてみました。
投稿数も少しずつ増え、文章力があまりない自分も少しずつ成長していたら嬉しいなと思います。
 アウトプットすることで自分のスキルの向上、ご覧になられた方のスキルの向上につながればと思います。

この記事が気に入ったらサポートをしてみませんか?