O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve os aspectos de compreensão, configuração e verificação do SR-TE inter-área sem controlador de elemento de computação de caminho.
Contribuído por Elvin Arias, engenheiro do TAC da Cisco.
Não há pré-requisitos para este documento.
Não existem requisitos específicos para este documento.
As informações neste documento são baseadas no Cisco IOS-XR® e no IOS-XE®.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
A Engenharia de Tráfego de Roteamento de Segmento (SR-TE) fornece os recursos para direcionar o tráfego através do núcleo sem formar nenhuma sessão de estado no núcleo. Uma política SR-TE é expressa como uma lista de segmentos que especifica um caminho, chamada de lista de ID de segmento (SID). Nenhuma sinalização é necessária, pois o estado está no pacote e a lista SID é processada como um conjunto de instruções pelos roteadores habilitados para SR de trânsito.
Tradicionalmente, vários domínios foram implementados com o Resource Reservation Protocol Traffic Engineering (RSVP-TE) por meio do uso de expansão do próximo salto em uma opção de caminho explícito. Ao executar cálculos, um administrador criaria um caminho no qual os endereços IP (Inter-Area Internet Protocol) são definidos de forma livre para permitir a computação fim-a-fim através do CSPF (Constrained Shortest Path First).
O SR-TE não tem o conceito de próximos saltos soltos, portanto, e para computação de vários domínios, a questão é como isso pode ser realizado? As computações são possíveis e o projeto de fato é colocar um controlador centralizado (XTC, WAE, NOS) para executar as computações correspondentes de vários domínios. Descarregamento dos cálculos de head-end para tal end permitirá que os dispositivos calculem caminhos sem ter visibilidade de toda a topologia. Para esta entidade Path Computation Element (PCE) é usada e a ideia é que essa entidade tem toda a visibilidade do domínio, realiza computações e rastreia os LSPs computados.
Nos casos em que um controlador não é temporariamente possível e os cálculos de vários domínios são necessários no núcleo de roteamento de segmento, podemos executar configurações diferentes para permitir que os túneis estabeleçam em cenários entre áreas.
O SR-TE permite definir vários tipos de caminho, geralmente conhecidos como caminhos explícitos e caminhos dinâmicos. Para caminhos dinâmicos e explícitos, isso é simples, permitimos que o algoritmo SR-TE compute o caminho com base em critérios dinâmicos, geralmente com métrica TE ou IGP para uma extremidade traseira. Para caminhos explícitos, podemos definir vários tipos, entre muitos que podemos fazer:
Ao definir políticas SR-TE entre áreas, devemos definir caminhos explícitos para a extremidade posterior, isso é porque não temos toda a visibilidade da topologia. Para o SR-TE inter-área, precisamos configurar as políticas da seguinte maneira:
Note: Se forem necessárias opções dinâmicas de caminho entre áreas, a computação do caminho deve ser delegada a uma entidade PCE.
Nos próximos casos, usaremos essa topologia entre áreas OSPF e os exemplos serão baseados na tentativa de computar túneis SR-TE de XR1 a XR5 cruzando os limites da área.
Note: Os exemplos para SR-TE são baseados no OSPF, mas também se aplicam ao IS-IS.
XR1 hostname XR1 icmp ipv4 rate-limit unreachable disable interface Loopback0 ipv4 address 1.1.1.1 255.255.255.255 ! interface Loopback1 ipv4 address 1.1.1.11 255.255.255.255 ! interface GigabitEthernet0/0/0/0.12 ipv4 address 12.0.0.1 255.255.255.0 encapsulation dot1q 12 ! router ospf 1 router-id 1.1.1.1 segment-routing mpls segment-routing forwarding mpls segment-routing sr-prefer address-family ipv4 area 12 mpls traffic-eng interface Loopback0 prefix-sid index 1 ! interface Loopback1 prefix-sid index 11 ! interface GigabitEthernet0/0/0/0.12 cost 100 network point-to-point ! ! mpls traffic-eng router-id Loopback0 ! mpls traffic-eng interface GigabitEthernet0/0/0/0.12 admin-weight 100 ! ! end
XR2 hostname XR2 logging console debugging explicit-path identifier 4 index 10 next-label 16004 ! interface Loopback0 ipv4 address 2.2.2.2 255.255.255.255 ! interface GigabitEthernet0/0/0/0.12 ipv4 address 12.0.0.2 255.255.255.0 encapsulation dot1q 12 ! interface GigabitEthernet0/0/0/0.23 ipv4 address 23.0.0.2 255.255.255.0 encapsulation dot1q 23 ! interface GigabitEthernet0/0/0/0.26 ipv4 address 26.0.0.2 255.255.255.0 encapsulation dot1q 26 ! router ospf 1 router-id 2.2.2.2 segment-routing mpls segment-routing forwarding mpls segment-routing sr-prefer address-family ipv4 area 0 mpls traffic-eng interface Loopback0 prefix-sid index 2 ! interface GigabitEthernet0/0/0/0.23 cost 100 network point-to-point ! ! area 12 mpls traffic-eng interface GigabitEthernet0/0/0/0.12 cost 100 network point-to-point ! ! area 246 mpls traffic-eng interface GigabitEthernet0/0/0/0.26 cost 200 network point-to-point ! ! mpls traffic-eng router-id Loopback0 ! mpls oam ! mpls traffic-eng interface GigabitEthernet0/0/0/0.12 admin-weight 100 ! interface GigabitEthernet0/0/0/0.23 admin-weight 100 ! interface GigabitEthernet0/0/0/0.26 admin-weight 1 ! ! end
XR3 hostname XRv3 interface Loopback0 ipv4 address 3.3.3.3 255.255.255.255 ! interface MgmtEth0/0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0.23 ipv4 address 23.0.0.3 255.255.255.0 encapsulation dot1q 23 ! interface GigabitEthernet0/0/0/0.34 ipv4 address 34.0.0.3 255.255.255.0 encapsulation dot1q 34 ! router ospf 1 router-id 3.3.3.3 segment-routing mpls segment-routing forwarding mpls segment-routing sr-prefer address-family ipv4 area 0 mpls traffic-eng interface Loopback0 prefix-sid index 3 ! interface GigabitEthernet0/0/0/0.23 cost 100 network point-to-point ! interface GigabitEthernet0/0/0/0.34 cost 100 network point-to-point ! ! mpls traffic-eng router-id Loopback0 ! mpls oam ! mpls traffic-eng interface GigabitEthernet0/0/0/0.23 admin-weight 100 ! interface GigabitEthernet0/0/0/0.34 admin-weight 100 ! ! end
XR4 hostname XR4 interface Loopback0 ipv4 address 4.4.4.4 255.255.255.255 ! interface GigabitEthernet0/0/0/0.34 ipv4 address 34.0.0.4 255.255.255.0 encapsulation dot1q 34 ! interface GigabitEthernet0/0/0/0.45 ipv4 address 45.0.0.4 255.255.255.0 encapsulation dot1q 45 ! interface GigabitEthernet0/0/0/0.46 ipv4 address 46.0.0.4 255.255.255.0 encapsulation dot1q 46 ! router ospf 1 distribute bgp-ls router-id 4.4.4.4 segment-routing mpls segment-routing forwarding mpls segment-routing sr-prefer address-family ipv4 area 0 mpls traffic-eng interface Loopback0 prefix-sid index 4 ! interface GigabitEthernet0/0/0/0.34 cost 100 network point-to-point ! ! area 45 mpls traffic-eng interface GigabitEthernet0/0/0/0.45 cost 100 network point-to-point ! ! area 246 mpls traffic-eng interface GigabitEthernet0/0/0/0.46 cost 200 network point-to-point ! ! mpls traffic-eng router-id Loopback0 ! mpls oam ! mpls traffic-eng interface GigabitEthernet0/0/0/0.34 admin-weight 100 ! interface GigabitEthernet0/0/0/0.45 admin-weight 100 ! interface GigabitEthernet0/0/0/0.46 admin-weight 1 ! ! end
XR5 hostname XRv5 interface Loopback0 ipv4 address 5.5.5.5 255.255.255.255 ! interface Loopback1 ipv4 address 5.5.5.55 255.255.255.255 ! interface GigabitEthernet0/0/0/0.45 ipv4 address 45.0.0.5 255.255.255.0 encapsulation dot1q 45 ! router ospf 1 router-id 5.5.5.5 segment-routing mpls segment-routing forwarding mpls segment-routing sr-prefer address-family ipv4 area 45 mpls traffic-eng interface Loopback0 prefix-sid index 5 ! interface Loopback1 prefix-sid index 55 ! interface GigabitEthernet0/0/0/0.45 cost 100 network point-to-point ! ! mpls traffic-eng router-id Loopback0 ! mpls oam ! mpls traffic-eng interface GigabitEthernet0/0/0/0.45 admin-weight 100 ! ! end
XR6 hostname XR6 icmp ipv4 rate-limit unreachable disable interface Loopback0 ipv4 address 6.6.6.6 255.255.255.255 ! interface GigabitEthernet0/0/0/0.26 ipv4 address 26.0.0.6 255.255.255.0 encapsulation dot1q 26 ! interface GigabitEthernet0/0/0/0.46 ipv4 address 46.0.0.6 255.255.255.0 encapsulation dot1q 46 ! router ospf 1 router-id 6.6.6.6 segment-routing mpls segment-routing forwarding mpls segment-routing sr-prefer address-family ipv4 area 246 mpls traffic-eng interface Loopback0 prefix-sid index 6 ! interface GigabitEthernet0/0/0/0.26 cost 200 network point-to-point ! interface GigabitEthernet0/0/0/0.46 cost 200 network point-to-point ! ! mpls traffic-eng router-id Loopback0 ! mpls oam ! mpls traffic-eng interface GigabitEthernet0/0/0/0.26 admin-weight 1 ! interface GigabitEthernet0/0/0/0.46 admin-weight 1 ! ! end
Os dispositivos no domínio OSPF criaram LSPs entre eles. Podemos verificar isso verificando o LSP entre XR1 e XR5.
RP/0/0/CPU0:XR1#ping mpls ipv4 5.5.5.5/32 fec-type generic verbose
Sending 5, 100-byte MPLS Echos to 5.5.5.5/32, timeout is 2 seconds, send interval is 0 msec: Codes: '!' - success, 'Q' - request not sent, '.' - timeout, 'L' - labeled output interface, 'B' - unlabeled output interface, 'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch, 'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label, 'P' - no rx intf label prot, 'p' - premature termination of LSP, 'R' - transit router, 'I' - unknown upstream index, 'X' - unknown return code, 'x' - return code 0 Type escape sequence to abort. ! size 100, reply addr 45.0.0.5, return code 3 ! size 100, reply addr 45.0.0.5, return code 3 ! size 100, reply addr 45.0.0.5, return code 3 ! size 100, reply addr 45.0.0.5, return code 3 ! size 100, reply addr 45.0.0.5, return code 3 Success rate is 100 percent (5/5), round-trip min/avg/max = 1/6/10 ms
Criaremos uma política SR-TE de XR1 para calcular um caminho em direção ao prefixo XR5-SID correspondente a 5.5.5.5/32. O prefixo 5.5.5.5/32 foi configurado com um índice de 5, este é o único rótulo que forneceremos ao PCALC para calcular o caminho.
Note: Todos os roteadores na topologia têm o mesmo bloco SRGB.
explicit-path name CASE1 index 10 next-label 16005 ! interface tunnel-te15 ipv4 unnumbered Loopback0 autoroute destination 5.5.5.5 destination 5.5.5.5 path-selection metric te segment-routing adjacency unprotected ! path-option 1 explicit name CASE1 segment-routing !
Note: O anúncio de rota automática não funciona em casos entre áreas.
Quando fornecemos uma lista SID como entrada para a computação, somente a primeira etiqueta é verificada e se essa condição for atendida, o túnel estará ativado. Se verificarmos o túnel, podemos ver que ele está ativo e o roteamento está sendo executado.
RP/0/0/CPU0:XR1#show mpls traffic-eng tunnels segment-routing p2p 15 Name: tunnel-te15 Destination: 5.5.5.5 Ifhandle:0x130 Signalled-Name: XR1_t15 Status: Admin: up Oper: up Path: valid Signalling: connected path option 1, (Segment-Routing) type explicit CASE1 (Basis for Setup) G-PID: 0x0800 (derived from egress interface properties) Bandwidth Requested: 0 kbps CT0 Creation Time: Mon Nov 26 02:14:33 2018 (00:14:34 ago) Config Parameters: Bandwidth: 0 kbps (CT0) Priority: 7 7 Affinity: 0x0/0xffff Metric Type: TE (interface) Path Selection: Tiebreaker: Min-fill (default) Protection: Unprotected Adjacency Hop-limit: disabled Cost-limit: disabled Path-invalidation timeout: 10000 msec (default), Action: Tear (default) AutoRoute: disabled LockDown: disabled Policy class: not set Forward class: 0 (default) Forwarding-Adjacency: disabled Autoroute Destinations: 1 Loadshare: 0 equal loadshares Auto-bw: disabled Path Protection: Not Enabled BFD Fast Detection: Disabled Reoptimization after affinity failure: Enabled SRLG discovery: Disabled History: Tunnel has been up for: 00:04:43 (since Mon Nov 26 02:24:24 UTC 2018) Current LSP: Uptime: 00:04:43 (since Mon Nov 26 02:24:24 UTC 2018) Prior LSP: ID: 5 Path Option: 1 Removal Trigger: tunnel shutdown Segment-Routing Path Info (OSPF 1 area 12) Segment0[Node]: 5.5.5.5, Label: 16005 Displayed 1 (of 1) heads, 0 (of 0) midpoints, 0 (of 0) tails Displayed 1 up, 0 down, 0 recovering, 0 recovered heads
Observação: os eventos PCALC podem ser verificados com o comando debug mpls traffic-eng path lookup.
Se verificarmos o RIB global, veremos que o roteamento para 5.5.5.5/32 está definido através da interface de túnel 15.
RP/0/0/CPU0:XR1#show route 5.5.5.5 Routing entry for 5.5.5.5/32 Known via "te-client", distance 2, metric 401 (connected) Installed Nov 26 02:24:24.336 for 00:07:03 Routing Descriptor Blocks directly connected, via tunnel-te15 Route metric is 401 No advertising protos.
Se verificarmos o LFIB, podemos ver que tunnel-te15 foi instalado e está pronto para encaminhamento.
RP/0/0/CPU0:XR1#ping 5.5.5.5 source 1.1.1.1 repeat 100 size 1500 Type escape sequence to abort. Sending 100, 1500-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Success rate is 100 percent (100/100), round-trip min/avg/max = 9/12/19 ms
RP/0/0/CPU0:XR1#show mpls forwarding tunnels detail Tunnel Outgoing Outgoing Next Hop Bytes Name Label Interface Switched ------------- ----------- ------------ --------------- ------------ tt15 (SR) 16005 Gi0/0/0/0.12 12.0.0.2 150400 Updated: Nov 26 02:24:24.357 Version: 200, Priority: 2 Label Stack (Top -> Bottom): { 16005 } NHID: 0x0, Encap-ID: N/A, Path idx: 0, Backup path idx: 0, Weight: 0 MAC/Encaps: 18/22, MTU: 1500 Packets Switched: 100 Interface Name: tunnel-te15, Interface Handle: 0x00000130, Local Label: 24003 Forwarding Class: 0, Weight: 0 Packets/Bytes Switched: 100/150000
Ao definir políticas SR-TE para inter-área, temos a opção de misturar rótulos e endereços IPv4. Para que o PCALC calcule com êxito um caminho até a extremidade traseira, os endereços IPv4 fornecidos para o cálculo devem ser locais da área e, para elementos que estão fora da área, devemos fornecer SIDs de adjacência de prefixo.
explicit-path name CASE2 index 10 next-address strict ipv4 unicast 12.0.0.2 index 20 next-label 16006 index 50 next-label 16005 ! interface tunnel-te15 ipv4 unnumbered Loopback0 autoroute destination 5.5.5.5 destination 5.5.5.5 path-selection metric te segment-routing adjacency unprotected ! path-option 1 explicit name CASE2 segment-routing !
Conforme observado, indicamos à PCALC que o caminho deve passar pelo XR6 (16006) e, em seguida, pelo prefixo SID final (16005). Verificando os resultados da computação do túnel, podemos ver como ele foi computado.
RP/0/0/CPU0:XR1#show mpls traffic-eng tunnels segment-routing p2p 15 Name: tunnel-te15 Destination: 5.5.5.5 Ifhandle:0x130 Signalled-Name: XR1_t15 Status: Admin: up Oper: up Path: valid Signalling: connected path option 1, (Segment-Routing) type explicit CASE2 (Basis for Setup) G-PID: 0x0800 (derived from egress interface properties) Bandwidth Requested: 0 kbps CT0 Creation Time: Mon Nov 26 02:14:33 2018 (00:40:44 ago) Config Parameters: Bandwidth: 0 kbps (CT0) Priority: 7 7 Affinity: 0x0/0xffff Metric Type: TE (interface) Path Selection: Tiebreaker: Min-fill (default) Protection: Unprotected Adjacency Hop-limit: disabled Cost-limit: disabled Path-invalidation timeout: 10000 msec (default), Action: Tear (default) AutoRoute: disabled LockDown: disabled Policy class: not set Forward class: 0 (default) Forwarding-Adjacency: disabled Autoroute Destinations: 1 Loadshare: 0 equal loadshares Auto-bw: disabled Path Protection: Not Enabled BFD Fast Detection: Disabled Reoptimization after affinity failure: Enabled SRLG discovery: Disabled History: Tunnel has been up for: 00:08:47 (since Mon Nov 26 02:46:30 UTC 2018) Current LSP: Uptime: 00:00:10 (since Mon Nov 26 02:55:07 UTC 2018) Reopt. LSP: Last Failure: LSP not signalled, identical to the [CURRENT] LSP Date/Time: Mon Nov 26 02:52:43 UTC 2018 [00:02:34 ago] Prior LSP: ID: 9 Path Option: 1 Removal Trigger: reoptimization completed Segment-Routing Path Info (OSPF 1 area 12) Segment0[Link]: 12.0.0.1 - 12.0.0.2, Label: 24001 Segment1[Node]: 6.6.6.6, Label: 16006 Segment2[Node]: 5.5.5.5, Label: 16005 Displayed 1 (of 1) heads, 0 (of 0) midpoints, 0 (of 0) tails Displayed 1 up, 0 down, 0 recovering, 0 recovered heads
Se traceroute, podemos ver os próximos saltos que efetivamente passamos pelo XR6.
RP/0/0/CPU0:XR1#traceroute 5.5.5.5 source 1.1.1.1 Type escape sequence to abort. Tracing the route to 5.5.5.5 1 12.0.0.2 [MPLS: Labels 16006/16005 Exp 0] 9 msec 0 msec 0 msec 2 26.0.0.6 [MPLS: Label 16005 Exp 0] 0 msec 0 msec 0 msec 3 46.0.0.4 [MPLS: Label 16005 Exp 0] 0 msec 9 msec 0 msec 4 45.0.0.5 9 msec * 9 msec
Podemos ter situações em que definimos os prefix-SIDs, mas formamos padrões de tráfego não otimizados ou em loop. Nesse caso, criaremos esse cenário.
explicit-path name CASE3 index 10 next-address strict ipv4 unicast 12.0.0.2 index 20 next-label 16006 index 30 next-label 16002 index 40 next-label 16003 index 50 next-label 16005
!
interface tunnel-te15
ipv4 unnumbered Loopback0
autoroute destination 5.5.5.5
destination 5.5.5.5
path-selection
metric te
segment-routing adjacency unprotected
!
path-option 1 explicit name CASE3 segment-routing
Com base no prefix-SID, podemos ver que o tráfego deve passar pelo prefixo SIDs de XR6 -> XR2 -> XR3 -> XR5.
RP/0/0/CPU0:XR1#show mpls traffic-eng tunnels segment-routing p2p 15 Admin: up Oper: up Path: valid Signalling: connected path option 1, (Segment-Routing) type explicit CASE3 (Basis for Setup)
<<Output omitted>>
Segment-Routing Path Info (OSPF 1 area 12) Segment0[Link]: 12.0.0.1 - 12.0.0.2, Label: 24001 Segment1[Node]: 6.6.6.6, Label: 16006 Segment2[Node]: 2.2.2.2, Label: 16002 Segment3[Node]: 3.3.3.3, Label: 16003 Segment4[Node]: 5.5.5.5, Label: 16005 Displayed 1 (of 1) heads, 0 (of 0) midpoints, 0 (of 0) tails
Se rastrearmos o caminho para 5.5.5.5/32, veremos que formamos um loop entre XR2 e XR6, mesmo que isso seja subopcional, ainda podemos rotear para XR5 5.5.5.5/32 sem problemas, pois o LSP está configurado corretamente.
RP/0/0/CPU0:XR1#traceroute 5.5.5.5 source 1.1.1.1 Type escape sequence to abort. Tracing the route to 5.5.5.5 1 12.0.0.2 [MPLS: Labels 16006/16002/16003/16005 Exp 0] 19 msec 19 msec 9 msec 2 26.0.0.6 [MPLS: Labels 16002/16003/16005 Exp 0] 9 msec 9 msec 9 msec 3 26.0.0.2 [MPLS: Labels 16003/16005 Exp 0] 9 msec 9 msec 9 msec 4 23.0.0.3 [MPLS: Label 16005 Exp 0] 9 msec 9 msec 9 msec 5 34.0.0.4 [MPLS: Label 16005 Exp 0] 9 msec 9 msec 9 msec 6 45.0.0.5 9 msec * 9 msec
Ao criar políticas de vários domínios sem PCEs na Engenharia de Tráfego de Roteamento de Segmento, não temos a visão completa do banco de dados de link-state, devido a isso, devemos definir caminhos explícitos que atendam a requisitos específicos de roteamento, devido à falta de visibilidade. Os túneis entre áreas são possíveis e aparecerão definindo caminhos explícitos com endereços IPv4, SIDs de adjacência e/ou SIDs de prefixo na área local com SIDs de prefixo dos dispositivos de trânsito e/ou extremidade traseira da política SR-TE. Outras definições explícitas de caminho falharão.