Contents

Introdução

Pré-requisitos

Visão geral do Flex-Algo

Topologia de rede

Rede

Configuração Flex-Algo

Flex-Algo 129 Definido por TE de tipo métrico

Configuração

Verificação

Flex-Algo 128 Definido pelo atraso do tipo métrico

Configuração

Verificação

Alternativa sem loop independente de topologia (TI-LFA) e MLA (Prevenção de microloop) no FLEX-ALGO 129

Restrições de mapa de afinidade de link

Configuração

Verificação

Configuração em ABR-2 do Mapa de Afinidade

Verificação

Conclusão

Comandos

Introdução

Este documento descreve o algoritmo flexível operacional (Flex-Algo) no ISIS e fornece comandos relevantes para verificação e solução de problemas.

Pré-requisitos

Requisitos

- A Cisco recomenda que você tenha conhecimento básico da engenharia de tráfego de roteamento do Segmento ISIS.

Componentes Utilizados

- As informações neste documento são baseadas no dispositivo: Roteador de serviços de agregação 9000 (ASR9K).

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

Visão geral do Flex-Algo

- Algoritmo flexível (Flex-Algo): é identificado por um valor numérico compreendido entre 0 e 255; os valores de 0 a 127 são reservados, enquanto 128 a 255 são definidos pelo usuário.

- Um Flex-Algo é definido por um tipo de métrica (métrica Interior Gateway Protocol (IGP), métrica de atraso ou métrica TE) e um conjunto de restrições (por exemplo, afinidade de link, Grupo de enlace de risco compartilhado (SRLG)).

- Aproveitando o Flex-Algo, as redes podem implementar divisão de rede, ou seja, segmentação lógica da rede, onde a computação de caminho é restrita à topologia que satisfaz as restrições definidas.

Figura 1: Formato SubTLV de SID do Prefixo (com Campo de Algoritmo)

Figura 2: Formato TLV de definição de FAD (Flex-Algo Definition)

Topologia de rede

Figura 3: Diagrama de Topologia de Rede

Rede

- Algoritmo 128 → Define uma fatia com otimização de latência.

- Algoritmo 129 → Define uma fatia otimizada para TE.

- O ABR1 e o ABR2 anunciam suas Definições de Flex-Algo (FAD TLVs) em IS-IS Link-State Protocol Data Unit (LSPs).

- Um originador de FAD pode ser qualquer roteador no domínio IS-IS; um roteador não precisa participar de cada Flex-Algo para anunciar sua definição.

Configuração Flex-Algo

router isis core

flex-algo 128

interface Loopback100

passive

address-family ipv4 unicast

prefix-sid index 11 explicit-null

prefix-sid algorithm 128 index 811 explicit-null

Note:

- index 11 - Prefix-SID vinculado ao Flex-Algo 0 (SPF (Shortest Path First, primeiro caminho mais curto padrão)).

- index 811 - Prefix-SID vinculado a Flex-Algo 128.

- Os SIDs de prefixo do Flex-Algo permitem a divisão da rede. Para um determinado prefixo (exemplo, Loopback100), vários SIDs de prefixo podem ser anunciados, cada um vinculado a um Flex-Algo específico.

- O primeiro Prefix-SID (Índice 11) é automaticamente associado ao Flex-Algo 0 (algoritmo de caminho mais curto IGP padrão).

- O segundo Prefix-SID (Índice 811) está explicitamente associado ao Flex-Algo 128, um algoritmo definido pelo usuário.

Flex-Algo 129 Definido por TE de tipo métrico

Configuração

Em ABR2:

router isis core

flex-algo 129

priority 50

metric-type te

advertise-definition

interface Loopback100

address-family ipv4 unicast

prefix-sid algorithm 129 index 92 explicit-null >> Prefix-SID bound to Flex-Algo 129

interface HundredGigE0/1/0/2

point-to-point

address-family ipv4 unicast

fast-reroute per-prefix

fast-reroute per-prefix ti-lfa

te-metric flex-algo 20 level 2 >> 20 is the TE metric value for this link , need to be enabled on the links only between those routers participating in Flex-Algo 129

Verificação

PE3#show isis flex-algo 129

IS-IS core Flex-Algo Database

Flex-Algo 129:

Level-2:

Definition Priority: 100

Definition Source: ASR9906-2-ABR-1.00

Definition Equal to Local: No

Definition Metric Type: TE

Definition Flex-Algo Prefix Metric: No

<snip>

FRR Disabled: No

Microloop Avoidance Disabled: No

UCMP Disabled: No

Data Plane Segment Routing: Yes

Data Plane IP: Yes

PE3#show isis database 55A1-2-PE4.00-00  verbose internal

IS-IS core (Level-2) Link State Database

LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL  Len  Received  From           On          Reason

55A1-2-PE4.00-00      0x00000149   0xfe2f        995  /1200         0/0/0     282  09:21:39  ASR9910-4-ABR-2 Hu0/1/0/0    Flooded

<snip>

TLV code:242 length:28

Router Cap:     10.10.44.44 D:0 S:0

SubTLV code:2 length:9

Segment Routing: I:1 V:0, SRGB Base: 16000 Range: 8000

SubTLV code:23 length:2

Node Maximum SID Depth:

Label Imposition: 12

SubTLV code:19 length:3

SR Algorithm:

Algorithm: 0

Algorithm: 1

Algorithm: 129

SubTLV code:29 length:1

IP Algorithm:

Algorithm: 129

TLV code:22 length:117

Metric: 10         IS-Extended ASR9910-4-ABR-2.00

SubTLV code:4 length:8

Local Interface ID: 32, Remote Interface ID: 38

SubTLV code:6 length:4

Interface IP Address: 10.10.244.44

SubTLV code:8 length:4

Neighbor IP Address: 10.10.244.2

SubTLV code:9 length:4

Physical BW: 10000000 kbits/sec

SubTLV code:16 length:9

Application Specific Link Attributes:

L flag: 0, SA-Length: 1, UDA-Length: 1

Standard Applications: 0x10 FLEX-ALGO

User Defined Applications: 0x10

SubTLV code:18 length:3

Admin. Weight: 20 >>>>>>>>>> configured TE metric

PE3#show isis topology flex-algo 129

IS-IS core paths to IPv4 Unicast (Level-2) routers

System Id        Metric     Next-Hop        Interface        SNPA

ASR9910-4-ABR-2   20        ASR9910-4-ABR-2  Hu0/1/0/0       *PtoP*        >> 1 hop away from PE3

55A1-2-PE4        40        ASR9910-4-ABR-2  Hu0/1/0/0       *PtoP*        >> 2 hops away from PE3

PE3#show isis database 55A1-2-01EEA29-PE4.00-00  verbose internal

IS-IS core (Level-2) Link State Database

LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL  Len  Received  From           On          Reason

55A1-2-01EEA29-PE4.00-00  0x00000149   0xfe2f        995  /1200         0/0/0     282  09:21:39  ASR9910-4-01F8486-ABR-2 Hu0/1/0/0   Flooded

TLV code:242 length:28

Router Cap:     10.10.44.44 D:0 S:0

SubTLV code:2 length:9

Segment Routing: I:1 V:0, SRGB Base: 16000 Range: 8000

SubTLV code:23 length:2

Node Maximum SID Depth:

Label Imposition: 12

SubTLV code:19 length:3

SR Algorithm:

Algorithm: 0

Algorithm: 1

Algorithm: 129

SubTLV code:29 length:1

IP Algorithm:

Algorithm: 129

TLV code:22 length:117

Metric: 10         IS-Extended ASR9910-4-01F8486-ABR-2.00

SubTLV code:4 length:8

Local Interface ID: 32, Remote Interface ID: 38

SubTLV code:6 length:4

Interface IP Address: 10.10.244.44

SubTLV code:8 length:4

Neighbor IP Address: 10.10.244.2

SubTLV code:9 length:4

Physical BW: 10000000 kbits/sec

SubTLV code:16 length:9

Application Specific Link Attributes:

L flag: 0, SA-Length: 1, UDA-Length: 1

Standard Applications: 0x10 FLEX-ALGO

User Defined Applications: 0x10

SubTLV code:18 length:3

Admin. Weight: 20 >>>>>>>>>> configured TE metric

Flex-Algo 128 Definido pelo atraso do tipo métrico

Configuração

router isis core

flex-algo 128

priority 100

metric-type delay

advertise-definition

performance-measurement

interface HundredGigE0/1/0/0

delay-measurement >>> this CLI needs to be enabled only on those interfaces between those routers participating in Flex-Algo 128

!

!

interface HundredGigE0/1/0/3

delay-measurement

Verificação

PE1#show isis flex-algo 128

IS-IS core Flex-Algo Database

Flex-Algo 128:

Level-2:

Definition Priority: 100

Definition Source: ASR9906-2-ABR-1.00

Definition Equal to Local: No

Definition Metric Type: Delay

Definition Flex-Algo Prefix Metric: No

Note: Em PE2, o link HundredGigE0/1/0/1 >> de medição de desempenho entre PE2 e ABR 1 delay-measurement advertise-delay 100 >> é configurado estaticamente. Isso aumenta a métrica de atraso em +100 na direção de PE2 para PE1, portanto, o atraso para alcançar ABR 1 de PE2 é 100.

PE1#show isis database ASR-9904-5-PE2.00-00 verbose internal

IS-IS core (Level-2) Link State Database

LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd ATT/P/OL LSP Length

ASR-9904-5-PE2.00-00  0x00000231   0x6084        1131 /1200         0/0/0   310

<snip>

TLV code:242 length:25

<snip>

SubTLV code:19 length:3

SR Algorithm:

Algorithm: 0

Algorithm: 1

Algorithm: 128

TLV code:22 length:144

Metric: 10         IS-Extended ASR9906-2-ABR-1.00

SubTLV code:4 length:8

Local Interface ID: 17, Remote Interface ID: 22

SubTLV code:6 length:4

Interface IP Address: 10.10.221.22

SubTLV code:8 length:4

Neighbor IP Address: 10.10.221.1

SubTLV code:9 length:4

Physical BW: 99999998 kbits/sec

SubTLV code:33 length:4

Link Average Delay: 100 us

SubTLV code:34 length:8

Link Min/Max Delay: 100/100 us

SubTLV code:35 length:4

Link Delay Variation: 0 us

SubTLV code:16 length:14

Application Specific Link Attributes:

L flag: 0, SA-Length: 1, UDA-Length: 1

Standard Applications: 0x10 FLEX-ALGO

User Defined Applications: 0x10

SubTLV code:34 length:8

Link Min/Max Delay: 100/100 us >>> delay calculated on this link due to the confoguration

PE2#show isis topology flex-algo 128

IS-IS core paths to IPv4 Unicast (Level-2) routers

System Id                Metric    Next-Hop                 Interface       SNPA

ASR9906-2-ABR-1          100       ASR9906-2-ABR-1          Hu0/1/0/1       *PtoP*

ASR9906-1-PE1            112       ASR9906-2-ABR-1          Hu0/1/0/1       *PtoP*

Quando não há advertise-delay manual configurado na interface e usando o perfil de medida de atraso padrão ativado na interface, testes são enviados nos links para medir o atraso na interface.

ABR-1#show performance-measurement sessions

----------------------------------------------------------------------------------------------------------------------------------------------------------------

0/1/CPU0

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Transport type              : Interface

Measurement type            : Delay Measurement

Interface name              : HundredGigE0/1/0/0

Nexthop                     : Unknown

Delay Measurement session:

Session ID                   : 4097

Profile Keys:

Profile name                 : default

Profile type.                : Interface Delay Measurement

Last advertisement:

Advertised at: Sep 26 2025 14:00:36.179 (247623.282 seconds ago)

Advertised reason: Periodic timer, min delay threshold crossed

Advertised delays (uSec): avg: 12, min: 12, max: 13, variance: 0

A flag set: False

Next advertisement:

Threshold check scheduled in 2 more probes (roughly every 120 seconds)

Aggregated delays (uSec): avg: 12, min: 11, max: 12, variance: 1

Rolling average (uSec): 11

Current computation:

Started at: Sep 29 2025 10:47:17.373 (22.88 seconds ago)

Packets Sent: 8, received: 8

Measured delays (uSec): avg: 12, min: 11, max: 12, variance: 1 >>>>>>>>>>>> the delay measured using probes on this interface

Next probe scheduled at: Sep 29 2025 10:47:47.369 (in 7.908 seconds)

Next packet will be sent in 1.908 seconds

Packet sent every 3.0 seconds

Responder IP : 10.10.111.11

Number of Hops : 1

ABR-1#show isis database ASR9906-1-PE1.00-00 verbose internal

IS-IS core (Level-2) Link State Database

LSPID               LSP Seq Num LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL LSP Length

ASR9906-1-PE1.00-00 0x00000777  0x13ef         497 /1200         0/0/0    370

<snip>

TLV code:22 length:197

Metric: 10 IS-Extended ASR9906-2-ABR-1.00

SubTLV code:4 length:8

Local Interface ID: 40, Remote Interface ID: 21

SubTLV code:6 length:4

Interface IP Address: 10.10.111.11

SubTLV code:8 length:4

Neighbor IP Address: 10.10.111.1

SubTLV code:9 length:4

Physical BW: 99999998 kbits/sec

SubTLV code:33 length:4

Link Average Delay: 12 us >>>>>>>>>>>>>> the calculated delay is propagated via ISIS which is used by the Headend router to calculate the path with minimum delay

SubTLV code:34 length:8

Link Min/Max Delay: 12/13 us

SubTLV code:35 length:4

Link Delay Variation: 0 us

SubTLV code:16 length:14

Application Specific Link Attributes:

L flag: 0, SA-Length: 1, UDA-Length: 1

Standard Applications: 0x10 FLEX-ALGO

User Defined Applications: 0x10

SubTLV code:34 length:8

Link Min/Max Delay: 12/13 us

PE1#show isis topology flex-algo 128

IS-IS core paths to IPv4 Unicast (Level-2) routers

System Id                 Metric    Next-Hop                 Interface       SNPA

ASR9906-2-ABR-1           12        ASR9906-2-ABR-1          Hu0/1/0/0       *PtoP*

ASR-9904-5-PE2            24        ASR9906-2-ABR-1          Hu0/1/0/0       *PtoP*

Note:

- De PE1 para acessar ABR 1, há apenas 12 retardos de uso

- Do PE1 para alcançar o PE2, há um atraso de 24 us

Alternativa sem loop independente de topologia (TI-LFA) e Prevenção de microloop ( MLA ) no FLEX-ALGO 129

Figura 4: Diagrama de topologia de rede usado para demonstrar TI-LFA e MLA para Flex-Algo 129

ABR-1#show isis fast-reroute flex-algo 129 10.10.2.2/32  detail

L2 10.10.2.2/32 [20/115] Label: 16092, medium priority

Installed Sep 17 10:40:08.503 for 00:16:25

via 10.10.12.2, HundredGigE0/1/0/1, Label: Exp-Null-v4, ASR9910-4-ABR-2, SRGB Base: 16000, Weight: 0

Backup path: TI-LFA (link), via 10.10.221.22, HundredGigE0/1/0/3 ASR-9904-5-PE2, SRGB Base: 16000, Weight: 0, Metric: 60

P node: ASR9910-3-PE3.00 [10.10.33.33], Label: 16933 >>>>>>>>>> TI-LFA precomputed path for FRR

Prefix label: 16092

Backup-src: ASR9910-4-ABR-2.00

P: No, TM: 60, LC: No, NP: No, D: No, SRLG: Yes

src ASR9910-4-ABR-2.00-00, 10.10.2.2, prefix-SID index 92, R:0 N:1 P:1 E:1 V:0 L:0, Alg:129

Note:

- Etiqueta 16933 PE3 Flex-Algo 129

- 16092 ABR -2 rótulo Flex-Algo 129

- O caminho TI-LFA também é restrito com a fatia de rede lógica de flex algo 129

Em ABR-1 quando o link entre ABR 1 e 2 é desligado, o túnel MLA é disparado:

ABR-1 #show isis microloop avoidance 10.10.2.2/32 flex-algo 129 detail

10.10.2.2/32 participated in 1 of 6 microloop avoidance events

number start     spf             duration  cleanup        duration  pins: ipv4   ipv6

---    ---       ---               ---     ---               ---        ---     ---

5      restart   10:59:16.440     0 ms    10:59:16.643                   3      0

trigger: Link down, near node: ASR9906-2-ABR-1.00, far node: ASR9910-4-ABR-2.00

via 10.10.221.22, Hu0/1/0/3, Labels: 16933

Tanto no TI-LFA quanto no MLA , o Flex-Algo 129 executa seu próprio SPF restrito, calcula previamente um túnel de redirecionamento rápido que respeita as restrições do Algo 129, usando apenas rótulos FLEX-ALGO 129.

Restrições de mapa de afinidade de link

- A afinidade é um atributo de 32 bits associado a um link IGP, administrativamente atribuído pelo operador.

- Cada posição de bit corresponde a um significado semântico definido pelo operador.

- Esses bits de afinidade são anunciados no IGP (OSPF/IS-IS) como parte dos atributos TE do link.

Quando um Flex-Algo calcula sua SPF (árvore de caminho mais curto), ele aplica restrições de afinidade durante a seleção de caminho:

- Incluir-Qualquer (IA): O caminho computado deve atravessar pelo menos um link que tenha qualquer um dos bits de afinidade especificados definidos.

- Incluir tudo (IAll): O caminho computado deve atravessar apenas links que contenham coletivamente todos os bits de afinidade especificados.

- Exclude-Any (EA): O caminho computado deve evitar todos os links que transportam qualquer um dos bits de afinidade especificados.

Configuração

Em ABR 1e 2:

On ABR 1and 2

router isis core

affinity-map ALGO-129 bit-position 6

flex-algo 129

priority 100

metric-type te

advertise-definition

affinity exclude-any ALGO-129

Publique essa configuração no FAD anunciado.

Verificação

PE4#show isis database ASR9906-2-ABR-1.00-00  verbose internal

IS-IS core (Level-2) Link State Database

LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL  Len  Received  From           On          Reason

ASR9906-2-ABR-1.00-00  0x0000023f   0xa89f        871  /1200         0/0/0     453  11:12:43  ASR9906-1-PE1 Hu0/0/0/5   Flooded

TLV code:242 length:44

Router Cap:     10.10.1.1 D:0 S:0

<snip>

SubTLV code:19 length:4

SR Algorithm:

Algorithm: 0

Algorithm: 1

Algorithm: 128

Algorithm: 129

SubTLV code:26 length:4

Flex-Algo Definition:

Algorithm: 129 Metric-Type: 2 Alg-type: 0 Priority: 100

SubTLV code:1 length:4

Flex-Algo Exclude-Any Ext Admin Group: >>> FAD to exclude any link with this bit position set

0x00000040

PE4#show isis flex-algo 129

IS-IS core Flex-Algo Database

Flex-Algo 129:

Level-2:

Definition Priority: 100

Definition Source: ASR9906-2-ABR-1.00

Definition Equal to Local: No

Definition Metric Type: TE

Definition Flex-Algo Prefix Metric: No

Exclude Any Affinity Bit Positions: 6

Caminho obtido de PE4 para PE3 quando o mapa de afinidade de link não está configurado em nenhum dos links:

PE4#traceroute sr-mpls labels 16933 lsp-end-point 10.10.33.33

Type escape sequence to abort.

0 10.10.244.44 MRU 1500 [Labels: 16933/explicit-null Exp: 0/0] >>>>>>>>>>>>>>>>>>>> PE4

L 1 10.10.244.2 MRU 1500 [Labels: explicit-null/explicit-null Exp: 0/0] 5 ms >>>>>>>>ABR2

! 2 10.10.32.33 4 ms >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>PE3

Figura 5: traceroute entre PE4 e PE3 sem mapa de afinidade definido

Configuração em ABR-2 do Mapa de Afinidade

router isis core

affinity-map ALGO-129 bit-position 6 >> define the bit position and associate it with a name

router isis core

interface HundredGigE0/1/0/2 >>> link between ABR-2 to PE3

affinity flex-algo ALGO-129 >>>>> link affinity map

point-to-point

address-family ipv4 unicast

fast-reroute per-prefix

fast-reroute per-prefix ti-lfa

te-metric flex-algo 20 level 2

Verificação

PE4#show isis database ASR9910-4-ABR-2.00-00  verbose internal

<snip>

TLV code:22 length:193

<snip>

SubTLV code:6 length:4

Interface IP Address: 10.10.32.2

SubTLV code:8 length:4

Neighbor IP Address: 10.10.32.33

SubTLV code:9 length:4

Physical BW: 99999998 kbits/sec, 12499999744 bytes/sec

SubTLV code:16 length:21

Application Specific Link Attributes:

L flag: 0, SA-Length: 1, UDA-Length: 1

Standard Applications: 0x10 FLEX-ALGO

User Defined Applications: 0x10

SubTLV code:14 length:4

Ext Admin Group:

0x00000040 >>>>>> link affinity flooded via IGP

SubTLV code:3 length:4

Affinity: 0x00000040

SubTLV code:18 length:3

Admin. Weight: 20

De acordo com o FAD para Flex Algo 129 de PE4 para PE3, ele precisa excluir qualquer link com a posição 6 do bit do mapa de afinidade.

PE4#traceroute sr-mpls labels 16933 lsp-end-point 10.10.33.33

0 10.10.244.44 MRU 1500 [Labels: 16933/explicit-null Exp: 0/0]

L 1 10.10.244.2 MRU 1500 [Labels: 16933/explicit-null Exp: 0/0] 5 ms >>>>>>>>>>>>> ABR2

L 2 10.10.12.1 MRU 1500 [Labels: 16933/explicit-null Exp: 0/0] 4 ms >>>>>>>>>>>>>> ABR1

L 3 10.10.221.22 MRU 1500 [Labels: explicit-null/explicit-null Exp: 0/0] 15 ms >>> PE2

! 4 10.10.233.33 4 ms >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> PE3

Figura 6: Caminho tomado de PE4 para PE3 após a configuração do mapa de afinidade

Note: Da mesma forma, usando "include any" e "include all" no FAD de um flex algo, podemos influenciar o cálculo do caminho da extremidade principal em direção à extremidade traseira.

Conclusão

Este documento descreve o uso do algoritmo flexível (Flex-Algo) para dividir logicamente um domínio IS-IS em várias fatias de rede. Cada fatia pode definir suas próprias regras e restrições de computação de caminho, permitindo um tratamento diferenciado dos fluxos de tráfego com base nos requisitos de SLA ou na sensibilidade do tráfego.

Comandos

show isis flex-algo <>

show isis flex-algo 129 neighbors

show isis topology flex-algo

show isis database <> verbose detail

show isis route <>  flex-algo <> detail

show mpls forwarding labels <> detail

show isis microloop avoidance <> flex-algo <>  detail

show isis fast-reroute flex-algo <>  <prefix> detail