Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Panoramica di Microloop

Configurazione generica

In stato stazionario

Sequenza di eventi quando l'interfaccia TenGigE0/0/0/8 (percorso primario) su PE1 diventa inattiva

Riepilogo sequenza temporale

Conclusioni

Comandi

Introduzione

Questo documento descrive una panoramica tecnica dei micro-loop IS-IS, spiega le condizioni in cui si verificano e descrive i principi e i meccanismi utilizzati per prevenirli.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza di base della versione 6 di Intermediate System to Intermediate System (ISIS) Segment Routing (SR).

Componenti usati

Le informazioni fornite in questo documento si basano su Device: Network Convergence System (NCS) 540, NCS 5500.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Panoramica di Microloop

IS-IS è un protocollo di routing allo stato del collegamento ampiamente implementato utilizzato nelle reti di provider di servizi su larga scala grazie alla sua rapida convergenza e scalabilità. Tuttavia, durante le modifiche alla topologia, ad esempio errori di collegamenti o nodi, possono verificarsi incoerenze di inoltro temporanee, comunemente note come microloop, mentre i router aggiornano le basi di informazioni di inoltro (FIB, Forwarding Information Base) in momenti diversi. Questi microloop causano perdite temporanee dei pacchetti, un aumento della latenza o blocchi del traffico, che possono avere un impatto negativo sulle applicazioni sensibili alla latenza e in tempo reale.

Il protocollo di routing IS-IS sfrutta i meccanismi di prevenzione dei microloop di Segment Routing (SR e SRv6) per impedire tali loop di inoltro transitori durante la convergenza della rete. Questi meccanismi garantiscono l'inoltro senza loop anche durante la transizione della rete a un nuovo stato stabile.

Figura 1. Diagramma della topologia di rete

Configurazione generica

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 <>

In stato stazionario

Quando non vi sono modifiche nella rete, la rete 10.10.1.0/24 viene annunciata da Provider Edge 1 (PE1) tramite Border Gateway Protocol (BGP) a Provider Edge 2 (PE2), la rete 10.10.20.0/24 viene annunciata da PE2 a 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:

Nota: fc00:1000:a810:e003::/64 >> fc00:1000:a810 ## localizzatore di PE1, e003 ## funzione.

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

Nota: Questo file 10.10.20.0/24 viene ricevuto da PE2 su PE1 con il sid di localizzazione fc00:1000:a820:: e funzione e0030.

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::}

Nota: In modalità stazionaria i pacchetti destinati a Customer Edge 2 (CE2) vengono inviati a PE2 con l'indirizzo di destinazione dell'intestazione IPv6 (Internet Protocol versione 6) fc00:1000:a820:e003::.

Pacchetto inviato da PE1 in stato stabile.

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)

Nota:

- Src: fc00:1000:a811::11 >> loopback 100 di PE1 utilizzato come indirizzo di origine.

- Destinazione : fc00:1000:a820:e003: >> indicatore di posizione di PE2: funzione.

- Nell'intestazione del trasporto IPv6, successiva è il payload IPv4.

Percorso di backup e primario per calcolo tramite TI-LFA (Loop-Free Alternate) indipendente dalla topologia.

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

Sequenza di eventi quando l'interfaccia TenGigE0/0/0/8 (percorso primario) su PE1 diventa inattiva

Figura 2. Presenza di microcircuiti

In PE1, quando il collegamento tengig 0/0/8 diventa inattivo, nel percorso di backup tra PE1 e P1, si sospetta un micro-loop che a sua volta attiva il meccanismo MLA (Microloop avoidance) in PE1.

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

Quando l'interfaccia TenGigE0/0/0/8 è inattiva, per prima cosa viene generato un evento Fast Reroute (FRR), ossia il traffico viene inviato sul percorso 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

Alle 08:30:10:307, è presente un'adiacenza di eliminazione IS-IS.

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

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

Alle 08:30:10:358, è stato ricevuto Label Switched Path (LSP), è stato calcolato Small Form-Factor Pluggable (SFP) ed è stato attivato 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

Per visualizzare questi eventi più dettagliatamente nella traccia IS-IS, in questo caso il tempo di ritardo dell'aggiornamento della base di informazioni di routing (RIB, Routing Information Base) configurato è: 65535 ms ~ 65 sec.

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

Stato RIB al momento in cui MLA è attivo.

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

Stato Cisco Express Forwarding (CEF) nel momento in cui MLA è attivo.

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

Un pacchetto proveniente da PE1 viene inoltrato tramite P1 con l'uSID (Micro-Segment Identifier) P2s come prima destinazione attiva. Quando il pacchetto raggiunge il valore P2, il comportamento SRv6 associato all'uSID attiva la decapsulamento dell'intestazione di routing del segmento (SRH), dopodiché il pacchetto originale viene inoltrato a PE2 in modalità di inoltro MLA.

Figura 3. Percorso utilizzato durante MLA

Pacchetto inoltrato da PE1 e P1 durante MLA.

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)

Dopo la decapsulazione, il pacchetto originale viene inviato da P2 e l'SRH rimosso da P2 durante l'MLA.

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)

Dopo la convergenza (dopo il timer di ritardo dell'aggiornamento RIB), l'SRH inserito viene rimosso e il pacchetto viene inviato al percorso IGP (Interior Gateway Protocol) convergente.

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

Riepilogo sequenza temporale

Ora

Azione

Meccanismo

08:30:10.244

Errore di collegamento, traffico spostato sul percorso di backup

TI-LFA

08:30:10:307

LSP ricevuto, calcolato nuovo SPF (Shortest Path First)

MLA (attivato)

08:30:10.358

L'aggiornamento RIB è ritardato, il traffico sta utilizzando il tunnel MLA

MLA (attivo)

08:31:15.893

Scadenza del timer ritardata, percorso finale installato in FIB

Convergenza completa

Conclusioni

In questo documento viene descritto in che modo i percorsi uSID SRv6 annunciati da IS-IS supportano MLA durante la convergenza di rete. Codificando le finalità topologiche ordinate direttamente nell'elenco uSID, il traffico viene indirizzato attraverso una sequenza deterministica di nodi, garantendo l'inoltro senza loop anche quando i calcoli IS-IS SPF sono temporaneamente incoerenti in tutta la rete.

Durante la convergenza, i pacchetti in uscita dai PE in entrata prendono la sequenza uSID precalcolata, attraversando i nodi P intermedi senza affidarsi a decisioni di hop successivo IGP transitorie. Il comportamento di decapsulamento all'endpoint uSID designato garantisce una transizione pulita verso l'inoltro nativo una volta completato il segmento protetto. Questa interazione strettamente accoppiata tra gli aggiornamenti del control-plane IS-IS e i comportamenti del data-plane uSID SRv6 consente un reindirizzamento rapido e deterministico.

MLA basato su uSID IS-IS fornisce una soluzione scalabile, con riconoscimento della topologia e semplice da utilizzare per una convergenza priva di microloop, che la rende particolarmente adatta per le reti di grandi dimensioni abilitate per SRv6 in cui è fondamentale reindirizzare rapidamente il traffico e gestirlo in modo deterministico.

Comandi

- dettagli <prefix> sulla prevenzione dei microloop ipv6 nell'istanza <> isis

- #show isis