Olá network folks! Após um LONGO tempo afastado de artigos (o famoso burnoutinho, o seu amiguinho hahaha), voltamos com mais artigos por aqui. A ideia é tirar da pilha de anotações (e bota pilha nisso) coisas que acho que são pertinentes postar aqui e que voltei a estudar firme esse ano. O artigo de hoje é a continuação de um tópico que comecei lááá em 2020, e que não aprofundei muito , que é sobre o IS-IS (você pode ler ele no link aqui).
Dessa vez, irei abordar sobre o IS-IS Single Topology e o Multi-Topology, e demonstrarei em um lab como você pode manipular prefixos v4 e v6 para passarem por caminhos diferentes em seu backbone.
Pegue o seu café e let's routing!
IS-IS TLVs
Antes de entrarmos nos modos, precisamos entender o que são TLVs e a sua importância para o IS-IS.
TLVs são parametros que o IS-IS usa para transportar informações em LSPs (Link State Packets) e sendo bastante extensivel (conforme definido na RFC 1195).
fonte: https://orhanergun.net/is-is-routing-ptrotocol
No data unit do IS-IS (PDU), há uma parte fixa e uma parte variável do cabeçalho. A parte fixa do cabeçalho contem os campos fixos, e a parte variável, contem os TLVs que permitem codificação flexivel. Esses campos são identificados por um octeto type (T), um octeto lenght (L) e "x" octetos de value (V).
Fonte: https://www.ciscopress.com/articles/article.asp?p=26850&seqNum=4
Abaixo temos um exemplo de uma coleta feita com o Wireshark onde é possivel ver os TLVs de type 129 (Protocols supported) e TLV 132 (IP Interface address).
Fonte do pcap: https://learningnetwork.cisco.com/s/question/0D53i00000KsnKeCAJ/how-to-analysis-packet-capture-of-isis-protocol
Explicado a importância do TLV para o ISIS, podemos seguir com o nosso tópico (fará toda a diferença no final do artigo, eu juro).
IS-IS Single Topology
No artigo anterior (citado no começo), nós realizamos a configuração basica do IS-IS no modelo Multi-level, onde eu possuia roteadores L1 para a camada de acesso, L1-L2 para distribuição e L2 para Core (classico modelo hierárquico de três camadas) e todos na mesma área (49.0001.XXXX.XXXX). Naquele cenário, todos os routers se enxergavam (show isis database) e L1 recebia todos os prefixos L1 da sua área, além de uma rota default do roteador L1-L2 mais proximo através do ATT-BIT*
OBS: ATT-BIT é definido pelo router L1-L2 em seus pacotes L1 LSPs automaticamente. Ele é responsavel por realizar o roteamento entre areas ou Inter-area routing. Abaixo uma imagem junto com um artigo da Cisco sobre).
Explicado o cenário anterior, agora iremos para uma abordagem de Single Topology, que por mais que o nome faça você pensar ( e eu sei que você pensou isso hahaha) que Single-Topology vem de que provavelmente usaremos 1
única address-family (v4 ou v6), na verdade ele vem de usarmos ambos porém com a mesma IS-IS Database!
Vamos entender um pouco disso com o nosso lab.
No cenario acima, possuimos 2 IOS-XE (R4 e R7) e 4 IOS-XR (R1,R2,R5 e R8) configurados todos na mesma area (49.0001) e rodando no mesmo level (Level 2 no caso, nao se antentem aos hostnames no print. Não mudei pois se eu mudasse teria que desligar o lab inteiro e iria levar 84 anos para tudo ligar novamente hahaha).
No modo Single-topology, todas os meus IS-IS Links (as interfaces habilitadas com IS-IS) precisam ter endereçamento v4 e v6 configurados para funcionar. Nesse modo, a topologia IS-IS será construida com base nos IS-IS Reachability TLV v4 type 126 e Reachability TLV v6 type 127 (entendeu porque abordei o TLV no comeco? Você pode conferir todos os codes TLV nesse link aqui).
Vamos verificar como está a configuração em R4 e R7?
R4
R7
Como podemos ver, R4 e R7 tem neighbors fechados e possuem todos os routers em sua LSDB de Level-2 (já que todos estão operando no mesmo level). Se verificarmos a tabela de roteamento e tentarmos pingar o ip de loopback de R7 (7.7.7.7|), teremos comunicação.
R4
Para v4 está tudo perfeito. Vamos tentar v6?
R4
Funcionando perfeitamente. E podemos ver que tanto o caminho via v4 quanto v6 são exatamente os mesmos hops (R2-R5-R7) .
E qual o problema em se usar single-topology então Pedro? De fato, o unico problema que vejo, é de ser ter a mesma database para ambas as familias de endereçamento.Em caso de falha do link, ambas ficaram indisponiveis até o novo calculo de convergência.Veja que para IPv6 , não existe uma IS-IS topology para os prefixos v6 que recebemos, logo, toda as metrics são baseados no Reachability IPv4, incapacitando que eu mude a metrica de prefixos v4 passarem por um caminho, e v6 por outro, por exemplo.
Podemos ver tambem que na database entre R4 e R7, o campo NLPID (Network Layer Protocol ID) mostra que estamos operando nas address-familys v4 e v6 (v4 com o codigo 0xCC e v6 0x8E respectivamente) , porém no campo Topology, estamos utilizando somente baseado em v4, comprovando que estamos utilizando o modo Single-Topology.
OBS: IOS XE roda Single Topology por default e IOS XR roda multi-topology por default
IS-IS Multi-Topology
Quando utilizamos Multi-topology no IS-IS, basicamente estamos informando ao processo IS-IS configurado que utilize o campo MT (Multitopology) + a address family configurada. Ao habilitarmos isso, o IS-IS irá criar duas IS-IS databases com ambos os reachabilitys TLVs para v4 e v6.
Para habilita-lo, basta acessarmos os roteadores e adicionar os seguintes comandos abaixo:
IOS XR
Router isis LAB (no nosso caso)
address-family ipv6 metric-style wide
no single-topology
!
address-family ipv4
metric-style wide
!
IOS XE
Router isis LAB (no nosso caso)
metric-style wide
address-family ipv6
multi-topology
Vamos realizar a mesma verificação do print anterior em R4?
R4
Agora nos possuimos uma IS-IS Database para v6 totalmente apartada da database de v4 como mostra o campo Topology , e com isso podemos como eu disse, alterar metricas de custo para determinados tipos de address-family.
Vocês se lembram que anteriormente o traceroute para o R7 tanto v4 quanto v6 usavam o mesmo caminho? Vamos habilitar a interface G2 de R4 (tinha desabilitado somente para fins de demonstração da utilização da mesma interface), e forçar o ipv6 a sair por ela, e o ipv4 sair pela interface G1.
R4-L2(config)#int g1
R4-L2(config-if)#isis ipv6 metric 30
Funcionou perfeitamente! R4 para alcançar o endereço ipv6 da interface G2 de R7, ele está utilizando o caminho via R8-R1-R7 , e para alcançar o IP de loopback 7.7.7.7/32, R4 vai para ambos os caminhos por conta do ECMP, ou, se quisermos, podemos forçar a metric para v4 manualmente para ele seguir o caminho R2-R5-R7 com o comando abaixo
R4-L2(config)#int g2
R4-L2(config-if)#isis metric 30
Bacana ne? Espero que esse artigo tenha feito você se interessar pelo IS-IS e que você tente subir esse LAB por conta propria. Vou disponibilizar os arquivos de config para agilizar, mas recomendo tentar montar por conta propria pois será uma otima forma de fixar conceitos e ter familaridade com os comandos. Até a proxima (e que não leve mais um ano hahaha)!