NESTA PÁGINA
Caminhos mais curtos do SPF e caminhos mais curtos do Flex Algo
Caminhos de backup alternativos sem loop independentes de topologia e prevenção de microloop
Engenharia de tráfego com configuração manual de segmento de usuário
Engenharia de tráfego com configuração manual do usuário e pesquisas de IP
Como os roteadores decidem quais segmentos enviar para um pacote no Roteamento por segmentos?
Em uma rede roteada por segmentos, os nós podem enviar um ou mais segmentos para um pacote para criar um caminho de encaminhamento preciso. Se um pacote simplesmente seguir o caminho mais curto, o Junos OS decidirá automaticamente o segmento correto. Se o caminho envolver engenharia de tráfego (TE), você poderá configurar os segmentos manualmente ou calculá-los automaticamente de acordo com suas restrições de TE. Você também pode usar um controlador centralizado para calcular essas informações.
Conhecimento de pré-requisito
Presumimos que os leitores tenham lido os tópicos intitulados O que é Roteamento por segmentos e Roteamento de pacotes de origem em redes?, Quais recursos e designs o Roteamento por segmentos permite?, e O que é roteamento de origem em uma rede roteada por segmentos?, juntamente com os pré-requisitos para esses tópicos.
Em uma rede roteada por segmentos, o Junos OS determina os segmentos SR-MPLS ou SRv6 necessários para criar instruções de encaminhamento por meio de uma combinação de cálculo automático e configuração manual. Os caminhos podem utilizar um único rótulo MPLS ou endereço SRv6, ou uma pilha de segmentos.
Este documento apresenta brevemente todas as opções. Essas opções são explicadas com mais detalhes em documentos separados. Este documento usa exemplos de SR-MPLS, mas você pode aplicar os mesmos conceitos ao SRv6.
Caminhos mais curtos do SPF e caminhos mais curtos do Flex Algo
Se seu único requisito é que o tráfego siga o caminho metricamente mais curto de IS-IS ou OSPF para um roteador remoto, então o Junos OS simplesmente usa o segmento associado a essa instrução. Isso acontece automaticamente e é verdadeiro tanto para topologias regulares quanto para topologias de Algoritmo Flexível (Flex Algo).
No caso da topologia completa padrão, o Junos OS terá uma malha completa de túneis SR em sua tabela inet.3 (para SR-MPLS) ou em sua tabela inet6.3 (para SRv6).
Lembre-se de que as tabelas inet.3 e inet6.3 armazenam todos os caminhos comutados por rótulos operacionais (LSP) que entram neste dispositivo. Por padrão, essa tabela é usada pelo BGP como uma maneira potencial de resolver os próximos saltos do protocolo BGP. Cada túnel nessas tabelas contém informações sobre o segmento de caminho mais curto que deve ser enviado para o pacote para transportar o tráfego até o destino do túnel.
Se você optar por habilitar qualquer topologia do Flex Algo em sua rede, o Junos OS também criará uma malha completa separada de LSPs para todos os dispositivos dentro dessa topologia. Dependendo de como você habilita esse recurso, cada topologia pode ter seu próprio equivalente a uma tabela inet.3 em cada roteador Junos OS, com uma malha completa de túneis de caminho mais curto para todos os outros roteadores na topologia.
Para entender esse conceito, consulte a Figura 1 e a saída 1 da CLI abaixo. Primeiro, a Figura 1 mostra uma rede de dez roteadores, numerados de R1 a R10. Cada roteador tem um endereço IPv4 de loopback do formato 192.168.1.x, em que X é o número do roteador.
A saída 1 da CLI abaixo se concentra na tabela de roteamento inet.3 do roteador R1 depois que você habilita uma implantação básica de SR-MPLS em todos os dispositivos. Ele mostra uma malha completa de LSPs para todos os outros dispositivos na rede. Se você configurar segmentos de caminho mais curtos em cada nó da rede, essa malha completa de túneis será criada automaticamente em cada dispositivo SR-MPLS.
Saída 1: Depois de habilitar uma implantação básica de SR-MPLS em todos os roteadores, a tabela inet.3 de R1 mostra uma malha completa de caminhos comutados por rótulos para todos os outros roteadores
user@R1> show route table inet.3
inet.3: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
192.168.1.2/32 *[L-ISIS/14] 00:06:45, metric 100
> to 10.1.2.2 via ge-0/0/0.0
192.168.1.3/32 *[L-ISIS/14] 00:02:18, metric 200
> to 10.1.2.2 via ge-0/0/0.0, Push 300403
192.168.1.4/32 *[L-ISIS/14] 00:02:18, metric 300
> to 10.1.2.2 via ge-0/0/0.0, Push 300404
192.168.1.5/32 *[L-ISIS/14] 00:02:18, metric 400
> to 10.1.2.2 via ge-0/0/0.0, Push 300405
192.168.1.6/32 *[L-ISIS/14] 00:06:45, metric 100
> to 10.1.6.6 via ge-0/0/2.0
192.168.1.7/32 *[L-ISIS/14] 00:02:18, metric 200
to 10.1.2.2 via ge-0/0/0.0, Push 300407
> to 10.1.6.6 via ge-0/0/2.0, Push 300407
192.168.1.8/32 *[L-ISIS/14] 00:02:18, metric 300
> to 10.1.2.2 via ge-0/0/0.0, Push 300408
to 10.1.6.6 via ge-0/0/2.0, Push 300408
192.168.1.9/32 *[L-ISIS/14] 00:02:18, metric 400
> to 10.1.2.2 via ge-0/0/0.0, Push 300409
to 10.1.6.6 via ge-0/0/2.0, Push 300409
192.168.1.10/32 *[L-ISIS/14] 00:02:18, metric 500
> to 10.1.2.2 via ge-0/0/0.0, Push 300410
to 10.1.6.6 via ge-0/0/2.0, Push 300410
Cada um desses LSPs contém uma única etiqueta de transporte de saída. O rótulo representa a instrução para seguir o caminho mais curto até esse roteador remoto. O SR-MPLS calcula o automaticamente e não requer configuração adicional em R1.
Por exemplo, a saída contém um LSP de entrada para R5 com um endereço de destino de 192.168.1.5. Se R1 aprender um prefixo BGP com um protocolo next-hop de 192.168.1.5, R1 resolverá o prefixo para esse LSP. Portanto, R1 usa automaticamente o segmento de caminho mais curto associado a esse túnel. Nesse caso, R1 envia um único rótulo de transporte SR-MPLS de 300405. Esse é o rótulo que R2 recebe quando você envia tráfego pelo caminho mais curto em direção a R5.
Caminhos de backup alternativos sem loop independentes de topologia e prevenção de microloop
Um resultado automático semelhante ocorre quando você habilita a TI-LFA (Topology-Independent Loop-Free Alternate) ou quando você executa a prevenção de microloop. Além dos segmentos que representam o caminho mais curto para um dispositivo remoto, o roteamento por segmentos também oferece segmentos que encaminham o tráfego diretamente de um roteador específico para um vizinho de próximo salto. Ao combinar segmentos de caminho mais curto e segmentos diretos de próximo salto, você pode criar qualquer caminho arbitrário na rede. Essa abordagem evita loops temporários que podem ocorrer durante eventos de convergência de rede. O TI-LFA usa esses dois tipos de segmento para calcular e criar caminhos de backup.
Quando o SPF calcula o melhor caminho para um link ou roteador de destino, o TI-LFA executa novamente o SPF para determinar um caminho de backup que protege contra falhas de link local ou de roteador vizinho. Uma vez que o TI-LFA calcula o caminho, ele decide automaticamente a pilha de segmentos necessária neste caminho. Essa pilha pode variar de um único segmento de caminho mais curto a uma série mais complexa de instruções salto a salto. De qualquer forma, isso acontece sem qualquer intervenção adicional do usuário.
A Figura 2 mostra seis roteadores onde o R4 falhou.
Em uma rede TI-LFA, R3 é preparado para esse evento calculando um caminho de backup que roteia em torno de R4. No entanto, R3 também identificou que R8 e R9 são fontes potenciais para um loop. Para evitar esse problema, R3 envia automaticamente um segundo segmento para o pacote que instrui a rede a enviar o tráfego para R10. A partir de R10, o pacote pode ser entregue com segurança para R5. Esses segmentos são calculados e enviados automaticamente e não requerem intervenção adicional do usuário além da ativação do TI-LFA. O mesmo vale para a prevenção de microloops. No caso de uma alteração de topologia, o SPF calcula um novo melhor caminho. Se a prevenção de microloops detectar o potencial de um microloop breve no novo caminho, o Junos OS envia automaticamente os segmentos necessários para o pacote, o que garante que o pacote chegue ao seu destino.
Engenharia de tráfego com configuração manual de segmento de usuário
O Junos OS oferece vários métodos para determinar os segmentos gravados em um pacote para um caminho projetado para tráfego. O método mais simples, porém menos escalável, é um usuário criar manualmente um túnel para um roteador remoto e então configurar os rótulos MPLS ou endereços SRv6 necessários para esse caminho. Nesse caso, o roteador não verifica se os segmentos são válidos e corretos. Alguns segmentos não são anunciados e não podem ser verificados quanto à precisão. Nesse caso, o Junos OS simplesmente segue suas instruções e escreve o que você especificar no pacote.
A Figura 3 mostra um exemplo disso. Usando a mesma topologia de 10 roteadores, ele apresenta uma construção de configuração do Junos OS chamada lista de segmentos. Ao definir uma lista de segmentos nomeados, você pode definir os segmentos precisos que devem ser gravados em um pacote. Em seguida, você pode consultar a lista de segmentos ao criar um caminho de comutação de rótulos SR-TE.
O exemplo usa SR-MPLS, mas o conceito é idêntico para SRv6.
protocols {
source-packet-routing {
segment-list PATH_R1_R5_EXPLICIT_LABELS {
HOP_1 label 1004012;
HOP_2 label 1004023;
HOP_3 label 1004034;
HOP_4 label 1004045;
}
}
}
Esse método é fácil de configurar, mas, como todos os caminhos estáticos, não pode reagir a alterações de topologia. Se um dos links ou nós representados por seus segmentos falhar, todo o caminho falhará. Outra desvantagem dessa opção é que ela não pode identificar falhas inerentemente ao longo do caminho. No entanto, você pode habilitar uma nova versão do BFD (Detecção de Encaminhamento Bidirecional) chamada S-BFD (BFD Contínuo) que monitora ativamente o caminho. Isso desliga o caminho quando uma falha é detectada, permitindo que você mude para outro caminho de backup ou secundário.
Engenharia de tráfego com configuração manual do usuário e pesquisas de IP
Um método mais escalável de engenharia de tráfego é configurar os saltos de IP necessários que o caminho de engenharia de tráfego deve seguir. Por exemplo, um caminho pode combinar endereços IP de loopback e endereços de interface de rede dos dispositivos no caminho. O Junos OS pode então converter esses endereços em instruções de caminho mais curto e instruções diretas de next-hop e, em seguida, calcular o rótulo MPLS ou endereço SRv6 necessário para esse segmento.
A Figura 4 demonstra esse conceito.
protocols {
source-packet-routing {
segment-list PATH_R1_R10_INTERFACE_IP {
auto-translate;
HOP_1 ip-address 10.1.6.6;
HOP_2 ip-address 10.6.7.7;
HOP_3 ip-address 10.7.8.8;
HOP_4 ip-address 10.8.9.9;
HOP_5 ip-address 10.9.10.10;
}
}
}
Isso é semelhante ao exemplo na Figura 3 , exceto que, desta vez, a lista de segmentos nomeados se refere diretamente aos endereços IP da interface e aos endereços IP de loopback. Quando essa lista de segmentos é usada em um LSP SR-TE, o Junos OS converte automaticamente os endereços IP nos segmentos necessários. Observe que esse método ainda requer que você defina o caminho manualmente. Dessa forma, esse caminho não pode responder à falha de nenhum dos dispositivos nesse caminho. No entanto, a tradução automática de IPs para segmentos introduz uma pequena quantidade de comportamento dinâmico quando comparada à definição dos valores do segmento explicitamente em sua configuração.
Engenharia de tráfego com cálculo de caminho dinâmico
Um método ainda mais escalável é calcular o caminho dinamicamente com base em um conjunto de restrições de engenharia de tráfego. O Junos OS calculará os segmentos corretos para o caminho calculado. Essa opção usa uma versão do algoritmo CSPF (Constrained Shortest Path First) usado pelo RSVP. O algoritmo é chamado de Distributed CSPF (D-CSPF). O nome reflete o fato de que o protocolo pode ser executado em qualquer roteador da rede. Isso contrasta com a opção de usar um controlador centralizado.
O D-CSPF oferece algumas restrições de TE encontradas no RSVP, como grupos de administradores e grupos de links de risco compartilhados. Além disso, inclui restrições específicas de roteamento por segmentos, como limitar o número máximo de segmentos enviados por push para um pacote ou usar exclusivamente links que oferecem suporte a reparo local. O D-CSPF também pode considerar métricas alternativas de caminho mais curto, como métricas de TE ou métricas de atraso. O Junos OS coleta um conjunto de restrições em um objeto chamado perfil de computação. Esse conjunto de restrições pode ser aplicado de forma consistente a qualquer caminho de TE que exija essas restrições.
A Figura 5 apresenta brevemente esse conceito.
protocols {
source-packet-routing {
compute-profile ONLY_USE_HIGH_PRIORITY {
admin-group include HIGH_PRIORITY;
maximum-segment-list-depth 6;
metric-type {
te;
}
}
}
}
A Figura 5 mostra que cada link na rede foi marcado com um dos dois grupos de administradores, chamados HIGH_PRIORITY e BEST_EFFORT. O diagrama também mostra a configuração de um perfil de computação básico, que calcula um caminho que considera apenas links marcados com o grupo de administradores HIGH_PRIORITY. Este exemplo também mostra que você pode incluir outras restrições de engenharia de tráfego dentro de um objeto de perfil de computação. Depois de definir um perfil de computação, você pode usar esse objeto de duas maneiras. A primeira opção é referenciá-lo dentro de um túnel com um endpoint de destino que você definiu manualmente. Nesse caso, embora o endpoint seja configurado manualmente, todo o resto é calculado dinamicamente pelo Junos OS, incluindo o caminho e a lista de segmentos. Se a topologia mudar, o Junos OS calcula automaticamente um novo caminho e uma nova lista de segmentos. A segunda opção é fazer referência ao perfil de computação como parte de uma implantação ODN (Next-Hops On Demand). Esse recurso não exige que você defina manualmente cada túnel endpoint. Em vez disso, o Junos OS pode construir dinamicamente novos túneis para qualquer protocolo BGP válido next-hop.
Em ambos os casos, o resultado é que o Junos OS decide os segmentos que devem ser gravados em um pacote.
Engenharia de tráfego com um controlador centralizado
Você pode usar um controlador central para calcular e criar uma lista de segmentos. Um controlador também oferece todas as opções de TE mencionadas anteriormente: criação de caminhos manuais com segmentos explícitos ou saltos de IP e caminhos dinâmicos baseados em restrições de TE. Além disso, os controladores oferecem uma variedade de recursos poderosos, como visibilidade de topologia, visibilidade de caminho gráfico, restrições de largura de banda e TE entre domínios de roteamento. Uma vez que o controlador determina o caminho que um túnel deve tomar, o controlador localiza os segmentos associados a esse caminho e, em seguida, grava essas informações diretamente no plano de dados do roteador de entrada para o caminho. O caminho pode cruzar facilmente um limite de domínio. O roteador de entrada não precisa estar ciente de cada segmento no caminho. O roteador de entrada precisa conhecer apenas os rótulos MPLS ou endereços IPv6 que devem ser gravados no pacote, juntamente com o próximo salto direto para o tráfego.
Leitura adicional
As seções acima são alguns conceitos básicos da engenharia de tráfego de Roteamento por segmentos. Fique ligado para atualizações detalhadas da documentação da engenharia de tráfego de Roteamento por segmentos nas próximas revisões.
Se você leu todos os quatro tópicos desta série introdutória sobre roteamento por segmentos, agora está pronto para explorar o SR-MPLS e o SRv6 em detalhes.