Contents

Introdução

Pré-requisitos

Requisitos

Componentes Utilizados

Visão geral do microloop

Configuração Genérica

Em estado estacionário

Sequência de eventos quando a interface TenGigE0/0/0/8 (caminho principal) no PE1 cai

Resumo da Linha do Tempo

Conclusão

Comandos

Introdução

Este documento descreve uma visão geral técnica dos microloops IS-IS, explica as condições em que ocorrem e descreve os princípios e mecanismos utilizados para evitá-los.

Pré-requisitos

Requisitos

A Cisco recomenda que você tenha conhecimento básico da versão 6 do Roteamento de Segmento (SR) de Sistema Intermediário para Sistema Intermediário (ISIS).

Componentes Utilizados

As informações neste documento são baseadas no dispositivo: Network Convergence System (NCS) 540, NCS 5500

As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.

Visão geral do microloop

O IS-IS é um protocolo de roteamento link-state amplamente implantado usado em redes de provedores de serviços de grande escala devido à sua rápida convergência e escalabilidade. No entanto, durante alterações de topologia, como falhas de link ou nó, podem ocorrer inconsistências de encaminhamento transitórias, comumente conhecidas como microloops, enquanto os roteadores atualizam suas bases de informações de encaminhamento (FIBs) em momentos diferentes. Esses microloops resultam em perda temporária de pacotes, aumento da latência ou blackholing de tráfego, o que pode afetar negativamente os aplicativos em tempo real e sensíveis à latência.

O protocolo de roteamento IS-IS aproveita os mecanismos de prevenção de microloops de roteamento de segmento (SR e SRv6) para evitar esses loops de encaminhamento transitório durante a convergência da rede. Esses mecanismos asseguram o encaminhamento sem loops mesmo enquanto a rede está em transição para um novo estado fixo.

Figura 1. Diagrama de Topologia de Rede

Configuração Genérica

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

Em estado estacionário

Quando não há alteração na rede, a rede 10.10.1.0/24 é anunciada pelo Provider Edge 1 (PE1) via Border Gateway Protocol (BGP) para Provider Edge 2 (PE2), a rede 10.10.20.0/24 é anunciada pelo PE2 para 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:

Note: fc00:1000:a810:e003::/64 >> fc00:1000:a810 ## localizador da função 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

Note: Esse 10.10.20.0/24 é recebido de PE2 em PE1 com o sid de localizador fc00:1000:a820:: e função 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::}

Note: No estado steady, os pacotes destinados ao Customer Edge 2 (CE2) são enviados para PE2 com endereço destino do cabeçalho IPv6 (Internet Protocol version 6) fc00:1000:a820:e003::.

Pacote enviado por PE1 em estado fixo.

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)

Note:

- Src: fc00:1000:a811::11 >> loopback 100 de PE1 usado como o endereço origem.

- Dst: fc00:1000:a820:e003:: >> localizador de PE2: função.

- o cabeçalho de transporte IPv6, o próximo é o payload IPv4.

Caminho principal e de backup por computador através de TI-LFA (Topology-Independent - Loop-Free Alternate).

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

Sequência de eventos quando a interface TenGigE0/0/0/8 (caminho principal) no PE1 cai

Figura 2. Ocorrência de microloop

Em PE1, quando o link tengig 0/0/8 fica inativo, no caminho de backup entre PE1 e P1, suspeita-se de um microloop que, por sua vez, aciona o mecanismo de prevenção de microloop (MLA) em 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 a interface TenGigE0/0/0/8 está inativa, primeiro há um evento de redirecionamento rápido (FRR), ou seja, o tráfego é enviado no caminho 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

Às 8:30:10:307, há uma adjacência de exclusão IS-IS.

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

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

Às 08:30:10:358, o Label Switched Path (LSP) foi recebido, o Small Form-Fator Pluggable (SFP) foi calculado e o loop foi ativado.

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

Vendo esses eventos mais detalhadamente no rastreamento IS-IS, nesse caso, o tempo de atraso de atualização configurado da RIB (Routing Information Base) é: 65535 ms ~ 65 seg.

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

Status da RIB no momento em que o MLA está ativo.

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

Status do Cisco Express Forwarding (CEF) no momento em que o MLA está ativo.

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

Um pacote originário de PE1 é encaminhado via P1 com o Identificador de microssegmento (uSID) de P2s como o primeiro destino ativo. Quando o pacote alcança P2, o comportamento de SRv6 associado ao uSID aciona o desencapsulamento do Cabeçalho de Roteamento de Segmento (SRH - Segment Routing Header), após o qual o pacote original é encaminhado para PE2 sob encaminhamento de MLA.

Figura 3. O caminho seguido durante o MLA

Pacote encaminhado por 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)

Após o desencapsulamento, o pacote original é enviado por P2 e o SRH é removido por P2 durante o 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)

Após a convergência (após o temporizador de atraso de atualização RIB), o SRH inserido é removido e o pacote é enviado no melhor caminho de IGP (Interior Gateway Protocol) convergido.

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

Resumo da Linha do Tempo

Tempo

Ação

Mecanismo

08:30:10.244

Falha de link, mudança de tráfego para caminho de backup

TI-LFA

08:30:10:307

LSP recebido, novo Shortest Path First (SPF) calculado

MLA (disparado)

08:30:10.358

A atualização da RIB está atrasada, o tráfego está usando o túnel MLA

MLA (ativo)

08:31:15.893

Expirações do temporizador de retardo, caminho final instalado na FIB

Convergência total

Conclusão

Este documento detalhou como os caminhos uSID SRv6 IS-IS-advertised suportam MLA durante a convergência de rede. Ao codificar a intenção topológica ordenada diretamente na lista uSID, o tráfego é direcionado através de uma sequência determinística de nós, garantindo o encaminhamento sem loops, mesmo quando os cálculos de IS-IS SPF são temporariamente inconsistentes na rede.

Durante a convergência, os pacotes que saem de PEs de entrada tomam a sequência uSID pré-computada, atravessando nós P intermediários sem depender de decisões de próximo salto de IGP transitório. O comportamento de desencapsulamento no endpoint uSID designado garante uma transição limpa de volta ao encaminhamento nativo assim que o segmento protegido for concluído. Essa interação estreitamente acoplada entre as atualizações do plano de controle IS-IS e os comportamentos do plano de dados uSID SRv6 permite um reroteamento rápido e determinístico.

O MLA baseado em uSID IS-IS fornece uma solução escalável, sensível à topologia e operacionalmente simples para convergência sem microloops, tornando-o adequado para grandes redes habilitadas para SRv6, onde o redirecionamento rápido e o direcionamento de tráfego determinístico são críticos.

Comandos

- #show isis instance <> ipv6 microloop avoidance <prefix> detail

- #show isis