内容

はじめに

前提条件

要　件

使用するコンポーネント

マイクロループの概要

一般的な設定

定常状態で

PE1上のインターフェイスTenGigE0/0/0/8（プライマリパス）がダウンしたときのイベントの順序

スケジュールの概要

結論

コマンド

はじめに

このドキュメントでは、IS-ISマイクロループの技術概要、発生する条件、および防止に使用する原理とメカニズムについて説明します。

前提条件

要　件

Intermediate System to Intermediate System(ISIS)セグメントルーティング(SR)バージョン6に関する基本的な知識があることが推奨されます。

使用するコンポーネント

このドキュメントの情報は、Device: Network Convergence System(NCS)540、NCS 5500に基づくものです。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

マイクロループの概要

IS-ISは、高速コンバージェンスと拡張性により、大規模なサービスプロバイダーネットワークで使用されている広く導入されているリンクステートルーティングプロトコルです。ただし、リンクやノードの障害などのトポロジ変更時に、ルータがForwarding Information Base（FIB；転送情報ベース）を別々のタイミングで更新する間に、一時的な転送の不整合（一般にマイクロループと呼ばれます）が発生することがあります。これらのマイクロループは、一時的なパケット損失、遅延の増加、またはトラフィックのブラックホールの発生につながり、リアルタイムで遅延の影響を受けやすいアプリケーションに悪影響を与える可能性があります。

IS-ISルーティングプロトコルは、ネットワークコンバージェンス中のこのような一時的な転送ループを防止するために、セグメントルーティング（SRおよびSRv6）マイクロループ回避メカニズムを活用します。これらのメカニズムにより、ネットワークが新しい定常状態に移行している間でも、ループフリー転送が保証されます。

図 1.ネットワークトポロジ図

一般的な設定

interface Loopback100

ipv6 address <>

interface <>

ipv6 enable

router isis <>

is-type level-2-only

net <>

address-family ipv6 unicast

metric-style wide

microloop avoidance segment-routing ## enables Microloop avoidance mechanism

microloop avoidance rib-update-delay <> ## specify the time in ms

router-id Loopback100

segment-routing srv6

locator <>

interface Loopback100

address-family ipv6 unicast

interface <>

point-to-point

address-family ipv6 unicast

fast-reroute per-prefix

fast-reroute per-prefix ti-lfa ## enables topology-independent loop-free alternates (TI-LFA)

segment-routing

srv6

encapsulation

source-address <>

!

locators

locator <>

micro-segment behavior unode psp-usd ## enables SRv6 Micro-SIDs (uSIDs) the PSP-USD (Penultimate Segment Pop - Ultimate Segment Pop) flavor

prefix <configure the locator >

router bgp <>

vrf <>

address-family <> unicast

segment-routing srv6 ## steering the packet using SRv6 uSID

locator <>

定常状態で

ネットワークに変更がない場合、10.10.1.0/24ネットワークはボーダーゲートウェイプロトコル(BGP)を介してプロバイダーエッジ1(PE1)からプロバイダーエッジ2(PE2)にアドバタイズされ、10.10.20.0/24ネットワークはPE2からPE1にアドバタイズされます。

RP/0/RP0/CPU0:PE1#show bgp vrf mobility 10.10.1.0/24 detail

BGP routing table entry for 10.10.1.0/24, Route Distinguisher: 10.10.11.11:0

SRv6-VPN SID: fc00:1000:a810:e003::/64

Local

0.0.0.0 from 0.0.0.0 (10.10.11.11), if-handle 0x3c000090

Origin incomplete, metric 0, localpref 100, weight 32768, valid, redistributed, best, group-best, import-candidate

Received Path ID 0, Local Path ID 1, version 8

Extended community:

注:fc00:1000:a810:e003::/64 >> fc00:1000:a810 ## locator of PE1, e003 ##関数。

RP/0/RP0/CPU0: PE1#show bgp vrf mobility 10.10.20.0/24 detail

Local

fc00:1000:a822::22 (metric 2000) from fc00:1000:a822::22 (10.10.22.22), if-handle 0x00000000

Received Label 0xe0030

Origin incomplete, metric 0, localpref 100, valid, internal, best, group-best, import-candidate, imported

Received Path ID 0, Local Path ID 1, version 714

Extended community:

PSID-Type:L3, SubTLV Count:1, R:0x00,

SubTLV:

T:1(Sid information), Sid:fc00:1000:a820::, F:0x00, R2:0x00, Behavior:63, R3:0x00, SS-TLV Count:1

SubSubTLV:

T:1(Sid structure):

Length [Loc-blk,Loc-node,Func,Arg]:[32,16,16,0], Tpose-len:16, Tpose-offset:48

Source AFI: VPNv4 Unicast, Source VRF: default, Source Route Distinguisher: 10.10.22.22:2

注：この10.10.20.0/24は、ロケータsid fc00:1000:a820:：および関数e0030でPE1上のPE2から受信されます。

RP/0/RP0/CPU0: PE1#show route vrf mobility 10.10.20.0/24 detail

Known via "bgp 100", distance 200, metric 0, type internal

Routing Descriptor Blocks

fc00:1000:a822::22, from fc00:1000:a822::22

<snip>

SRv6 Headend: H.Encaps.Red [f3216], SID-list {fc00:1000:a820:e003::}

注：定常状態では、カスタマーエッジ2(CE2)宛てのパケットは、インターネットプロトコルバージョン6(IPv6)ヘッダー宛先アドレスfc00:1000:a820:e003:：を使用してPE2に送信されます。

STEADY状態のPE1によって送信されるパケット。

Frame 2: 136 bytes on wire (1088 bits), 136 bytes captured (1088 bits)

Ethernet II, Src: Cisco_a7:8a:0d (c4:b2:39:a7:8a:0d), Dst: Cisco_ff:d4:16 (a0:b4:39:ff:d4:16)

Destination: Cisco_ff:d4:16 (a0:b4:39:ff:d4:16)

Source: Cisco_a7:8a:0d (c4:b2:39:a7:8a:0d)

Type: IPv6 (0x86dd)

Internet Protocol Version 6, Src: fc00:1000:a811::11, Dst: fc00:1000:a820:e003::

0110 .... = Version: 6

<0110 .... = Version: 6 [This field makes the filter match on "ip.version == 6" possible]>

.... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)

.... 0000 0000 0000 1110 1111 = Flow Label: 0x000ef

Payload Length: 82

Next Header: IPIP (4)

Hop Limit: 254

Source Address: fc00:1000:a811::11

<Source or Destination Address: fc00:1000:a811::11>

<[Source Host: fc00:1000:a811::11]>

<[Source or Destination Host: fc00:1000:a811::11]>

Destination Address: fc00:1000:a820:e003::

<Source or Destination Address: fc00:1000:a820:e003::>

<[Destination Host: fc00:1000:a820:e003::]>

<[Source or Destination Host: fc00:1000:a820:e003::]>

Internet Protocol Version 4, Src: 10.10.1.2, Dst: 10.10.20.2

0100 .... = Version: 4

.... 0101 = Header Length: 20 bytes (5)

Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)

注：

- 送信元：fc00:1000:a811::11 >>送信元アドレスとして使用されるPE1のループバック100。

- Dst : fc00:1000:a820:e003:: >> PE2：関数のロケータ。

- IPv6トランスポートヘッダー、次はIPv4ペイロード。

Topology-Independent - Loop-Free Alternate(TI-LFA)による、計算されたプライマリおよびバックアップパス。

RP/0/RP0/CPU0:PE1#show cef ipv6 fc00:1000:a820::

via fe80::a2b4:39ff:feff:d416/128, TenGigE0/0/0/9, 11 dependencies, weight 0, class 0, backup (TI-LFA) [flags 0xb00]

path-idx 0 NHID 0x0 [0x8ef0f2b0 0x0]

next hop fe80::a2b4:39ff:feff:d416/128, Repair Node(s): fc00:1000:a802::2

local adjacency

SRv6 H.Insert.Red SID-list {fc00:1000:a802::}

via fe80::9ee1:76ff:feca:e8a8/128, TenGigE0/0/0/8, 4 dependencies, weight 0, class 0, protected [flags 0x400]

path-idx 1 bkup-idx 0 NHID 0x0 [0x8f2db710 0x0]

next hop fe80::9ee1:76ff:feca:e8a8/128

PE1上のインターフェイスTenGigE0/0/0/8（プライマリパス）がダウンしたときのイベントの順序

図 2：マイクロループ発生

PE1でリンクtengig 0/0/8がダウンすると、PE1とP1間のバックアップパスでマイクロループが疑われ、これがPE1でマイクロループ回避(MLA)メカニズムがトリガーされます。

RP/0/RP0/CPU0:PE1#show logging

RP/0/RP0/CPU0:Mar 21 08:30:10.244 UTC: ifmgr[307]: %PKT_INFRA-LINK-5-CHANGED : Interface TenGigE0/0/0/8, changed state to Administratively Down

インターフェイスTenGigE0/0/0/8がダウンしている場合、最初にFast Reroute(FRR)イベントが発生します。つまり、トラフィックはTI-LFAパスで送信されます。

RP/0/RP0/CPU0:PE1#show cef trace

Mar 21 08:30:10.244 fib/common/frr 0/RP0/CPU0 43# t5991 Common: FRR-ITF-EVENT: proto=3 type=0 ifh=0x3c0000a0

Mar 21 08:30:10.244 fib/common/frr 0/RP0/CPU0 13# t5991 IPv6: FRR-LOOKUP-DONE: evt=0, ifh=0x3c0000a0,  main_ifh=0, proto=1

Mar 21 08:30:10.244 fib/common/frr 0/RP0/CPU0 12# t5991 IPv6: FRR-ITF-EVENT: Global Active; handle:0x3c0000a0[0x0]

Mar 21 08:30:10.244 fib/common/frr 0/RP0/CPU0 13# t5991 IPv6: FRR-ITF-EVENT: FRR Active; handle:0x3c0000a0[0x0]

Mar 21 08:30:10.244 fib/common/frr 0/RP0/CPU0 1# t5991 IPv6: FRR-EVENT: evt=0, notify protocol=1, ifh=0x0, switched=111768 ns

Mar 21 08:30:10.244 fib/common/fast 0/RP0/CPU0 20# t5991 Common: PLAT-UPD-FAST: Proto=common, Obj[FIB_DATA_TYPE2_ALL]=0, flags=0 Acttype=FRR_EOD

08:30:10:307に、IS-IS削除隣接関係があります。

RP/0/RP0/CPU0:PE1#show isis lsp last 20

08:30:10:307    1  Te0/0/0/8          DELADJ

08:30:10:358に、ラベルスイッチドパス(LSP)が受信され、Small Form-Factor Pluggable(SFP)が計算され、uloopがアクティブ化されました。

RP/0/RP0/CPU0:PE1#show isis spf-log detail

08:30:10:358  FSPF     2     5     2    PE1.00-00 DELADJ LINKBAD

Delay:                 50ms (since first trigger)

46257ms (since end of last calculation)

Trigger Link:          P3.00

Trigger Next Hop:      P3

New LSP Arrivals:      0

SR uloop:              Link Down

これらのイベントをIS-ISトレースで詳細に確認する場合、設定されているRouting Information Base（RIB；ルーティング情報ベース）のアップデート遅延時間は、65535 ms ～ 65秒です。

RP/0/RP0/CPU0:PE1#show isis trace all

Mar 21 08:30:10.308 isis/Mring_2801/std 0/RP0/CPU0 t8712 isis_roca_event_schedule_result_debug:329                SPF_TRIGGER_PRIMARY L2 IPv6 Unicast

Mar 21 08:30:10.308 isis/Mring_2801/spf 0/RP0/CPU0 t8712  isis_roca_spf_linkchanged_trigger:2609                  SPF_TRIGGER_LINKCHANGED_ADD L2 IPv6 Unicast 0370.0011.0011.00

Mar 21 08:30:10.358 isis/Mring_2801/std 0/RP0/CPU0 6669# t8712  isis_roca_event_start:1541                              SPF_ROCA_START L2 IPv6 Unicast SPF Type: Full >>>>>>>>. SPF was trigger

Mar 21 08:30:10.358 isis/Mring_2801/sr_ 0/RP0/CPU0 t8712  isis_roca_sr_uloop_prep:3069                            SR_ULOOP_SPF_PREP_START L2 IPv6 Unicast SPF Type: Full>>>>>>>> uloop activated and uloop path installed

Mar 21 08:30:10.358 isis/Mring_2801/sr_ 0/RP0/CPU0 8451# t8712  isis_roca_uloop_install_exp_path:3915                   SR_ULOOP_DETAIL_ADD_EXP_PATH L2 IPv6 Unicast SPF Type: Full

Mar 21 08:30:10.358 isis/Mring_2801/sr_ 0/RP0/CPU0 t8712   isis_roca_prefix_update_run:1040                       SR_ULOOP_SPF_START_DELAYED_UPD_TIMER_8 L2 IPv6 Unicast SPF Type: Full 65535 >>>>>> the MLA timer has began

Mar 21 08:30:10.864 isis/Mring_2801/std 0/RP0/CPU0 t8712 isis_roca_frr_run:1538                                   SPF_FRR_DEFERRED_ULOOP L2 IPv6 Unicast

Mar 21 08:31:15.893 isis/Mring_2801/sr_ 0/RP0/CPU0 t8712 isis_ip_rib_worker_delayed_update_run:2344               SR_ULOOP_EVENT_DELAYED_UPDATE L2 IPv6 Unicast >> after 65 seconds the rib is updated and MLA is deactivated

MLAがアクティブな時点でのRIBステータス。

RP/0/RP0/CPU0:PE1#show route ipv6 fc00:1000:a820:: detail

Routing entry for fc00:1000:a820::/48

Routing Descriptor Blocks

fe80::a2b4:39ff:feff:d416, from fc00:1000:a822::22, via TenGigE0/0/0/9

Route metric is 6000

<snip>

SRv6 Headend: H.Insert.Red [f3216], SID-list {fc00:1000:a802::} ##this locator of P2 is inserted before the SRH

MLAがアクティブな時点でのCisco Express Forwarding(CEF)ステータス。

RP/0/RP0/CPU0: PE1#show cef ipv6 fc00:1000:a820:: detail

local adjacency to TenGigE0/0/0/9

<snip>

via fe80::a2b4:39ff:feff:d416/128, TenGigE0/0/0/9, 10 dependencies, weight 0, class 0 [flags 0x0]

SRv6 H.Insert.Red SID-list {fc00:1000:a802::} ## P node (locator of P2)sid is inserted into the packet

Load distribution: 0 (refcount 9)

Hash  OK  Interface                 Address

0     Y   TenGigE0/0/0/9            fe80::a2b4:39ff:feff:d416

PE1から発信されたパケットは、最初のアクティブな宛先としてP2のMicro-Segment Identifier(uSID)を使用してP1経由で転送されます。パケットがP2に到達すると、uSIDに関連付けられたSRv6の動作によってセグメントルーティングヘッダー(SRH)のカプセル化解除がトリガーされ、その後、元のパケットがMLA転送の下でPE2に転送されます。

図 3：MLA中に取得されるパス

MLAの間にPE1およびP1によって転送されたパケット。

Frame 1: 160 bytes on wire (1280 bits), 160 bytes captured (1280 bits)

Ethernet II, Src: Cisco_a7:8a:0d (c4:b2:39:a7:8a:0d), Dst: Cisco_ff:d4:16 (a0:b4:39:ff:d4:16)

Internet Protocol Version 6, Src: fc00:1000:a811::11, Dst: fc00:1000:a802:: >> during MLA the 1st active destination locator is of P2

0110 .... = Version: 6

<0110 .... = Version: 6 [This field makes the filter match on "ip.version == 6" possible]>

.... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)

.... 0000 0000 0000 1110 1111 = Flow Label: 0x000ef

Payload Length: 106

Next Header: Routing Header for IPv6 (43) >> indicates the next header is a SRH

Hop Limit: 254

Source Address: fc00:1000:a811::11

<Source or Destination Address: fc00:1000:a811::11>

<[Source Host: fc00:1000:a811::11]>

<[Source or Destination Host: fc00:1000:a811::11]>

Destination Address: fc00:1000:a802::

<Source or Destination Address: fc00:1000:a802::>

<[Destination Host: fc00:1000:a802::]>

<[Source or Destination Host: fc00:1000:a802::]>

Routing Header for IPv6 (Segment Routing) >>>>>>>>> SRH header which contains the orginal PE2 locator

Next Header: IPIP (4)

Length: 2

[Length: 24 bytes]

Type: Segment Routing (4)

Segments Left: 1

Last Entry: 0

Flags: 0x00

Tag: 0000

Address[0]: fc00:1000:a820:e003:: >>>>>>>>>>>>>>>> PE2 locator : function

Internet Protocol Version 4, Src: 10.10.1.2, Dst: 10.10.20.2

0100 .... = Version: 4

.... 0101 = Header Length: 20 bytes (5)

カプセル化解除後、MLAの間に元のパケットがP2によって送信され、SRHがP2によって削除されます。

Frame 1: 136 bytes on wire (1088 bits), 136 bytes captured (1088 bits)

Ethernet II, Src: Cisco_87:d8:58 (b0:a6:51:87:d8:58), Dst: Cisco_af:48:01 (c8:47:09:af:48:01)

Internet Protocol Version 6, Src: fc00:1000:a811::11, Dst: fc00:1000:a820:e003::

0110 .... = Version: 6

<0110 .... = Version: 6 [This field makes the filter match on "ip.version == 6" possible]>

.... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)

.... 0000 0000 0000 1110 1111 = Flow Label: 0x000ef

Payload Length: 82

Next Header: IPIP (4)

Hop Limit: 252

Source Address: fc00:1000:a811::11

<Source or Destination Address: fc00:1000:a811::11>

<[Source Host: fc00:1000:a811::11]>

<[Source or Destination Host: fc00:1000:a811::11]>

Destination Address: fc00:1000:a820:e003::

<Source or Destination Address: fc00:1000:a820:e003::>

<[Destination Host: fc00:1000:a820:e003::]>

<[Source or Destination Host: fc00:1000:a820:e003::]>

Internet Protocol Version 4, Src: 10.10.1.2, Dst: 10.10.20.2

Data (62 bytes)

コンバージェンス後（RIBアップデート遅延タイマーの後）、挿入されたSRHは削除され、パケットはコンバージドされた最適なInterior Gateway Protocol(IGP)パスで送信されます。

RP/0/RP0/CPU0: PE1#show cef ipv6 fc00:1000:a822::22/128

local adjacency to TenGigE0/0/0/9

Prefix Len 128, traffic index 0, precedence n/a, priority 1

via fe80::a2b4:39ff:feff:d416/128, TenGigE0/0/0/9, 9 dependencies, weight 0, class 0 [flags 0x0]

path-idx 0 NHID 0x0 [0x8ef0f2b0 0x0]

next hop fe80::a2b4:39ff:feff:d416/128

local adjacency

スケジュールの概要

[Time]

アクション

メカニズム

08:30:10.244

リンク障害、トラフィックのバックアップパスへの移行

TI-LFA

08:30:10:307

LSPを受信し、新しいShortest Path First(SPF)を計算

MLA（トリガー）

08:30:10.358

RIB更新が遅延し、トラフィックがMLAトンネルを使用している

MLA（アクティブ）

08:31:15.893

遅延タイマーが期限切れになり、FIBに最終パスがインストールされる

完全収束

結論

このドキュメントでは、ネットワークコンバージェンス時にIS-ISによってアドバタイズされるSRv6 uSIDパスがMLAをサポートする方法について説明します。順序付けられたトポロジの目的をuSIDリストに直接符号化することで、トラフィックはノードの決定論的なシーケンスを介して転送され、IS-IS SPFの計算がネットワーク全体で一時的に一貫していない場合でも、ループのない転送が保証されます。

コンバージェンスの間、入力PEから出力されるパケットは事前に計算されたuSIDシーケンスを使用し、一時的なIGPネクストホップの決定に依存せずに中間Pノードを通過します。指定されたuSIDエンドポイントでのカプセル化解除動作により、保護セグメントが完了した後は、ネイティブ転送にクリーンに戻ります。IS-ISコントロールプレーンのアップデートとSRv6 uSIDデータプレーンの動作の間のこの緊密に結合されたインタラクションにより、高速で決定論的な再ルーティングが可能になります。

IS-IS uSIDベースのMLAは、マイクロループフリーのコンバージェンスに対して、拡張性が高く、トポロジを認識し、操作が簡単なソリューションを提供します。これは、高速な再ルーティングと決定論的なトラフィックステアリングが重要となる、大規模なSRv6対応ネットワークに適しています。

コマンド

- #show isisインスタンス<> ipv6マイクロループ回避<prefix> detail

- #show isis