El conjunto de documentos para este producto aspira al uso de un lenguaje no discriminatorio. A los fines de esta documentación, "no discriminatorio" se refiere al lenguaje que no implica discriminación por motivos de edad, discapacidad, género, identidad de raza, identidad étnica, orientación sexual, nivel socioeconómico e interseccionalidad. Puede haber excepciones en la documentación debido al lenguaje que se encuentra ya en las interfaces de usuario del software del producto, el lenguaje utilizado en función de la documentación de la RFP o el lenguaje utilizado por un producto de terceros al que se hace referencia. Obtenga más información sobre cómo Cisco utiliza el lenguaje inclusivo.
Cisco ha traducido este documento combinando la traducción automática y los recursos humanos a fin de ofrecer a nuestros usuarios en todo el mundo contenido en su propio idioma. Tenga en cuenta que incluso la mejor traducción automática podría no ser tan precisa como la proporcionada por un traductor profesional. Cisco Systems, Inc. no asume ninguna responsabilidad por la precisión de estas traducciones y recomienda remitirse siempre al documento original escrito en inglés (insertar vínculo URL).
Este documento describe los aspectos de la comprensión, configuración y verificación del controlador Inter-Area SR-TE sin Path Computation Element .
Colaborado por Elvin Arias, Ingeniero del TAC de Cisco.
No hay requisitos previos para este documento.
No hay requisitos específicos para este documento.
La información de este documento se basa en Cisco IOS-XR® e 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.
La ingeniería de tráfico de routing de segmentos (SR-TE) proporciona las capacidades necesarias para dirigir el tráfico a través del núcleo sin formar ninguna sesión de estado en el núcleo. Una política SR-TE se expresa como una lista de segmentos que especifica una ruta, denominada lista ID de segmento (SID). No se requiere señalización porque el estado está en el paquete y la lista SID se procesa como un conjunto de instrucciones por los routers habilitados para SR de tránsito.
Tradicionalmente, los dominios múltiples se han implementado con Resource Reservation Protocol Traffic Engineering (RSVP-TE) mediante el uso de expansión de siguiente salto flexible en una opción de ruta explícita. Al realizar cálculos, un administrador crearía una ruta en la que las direcciones del protocolo de Internet entre áreas (IP) se definen de forma poco precisa para permitir el cálculo de extremo a extremo a través de la ruta más corta restringida primero (CSPF).
SR-TE no tiene el concepto de saltos siguientes sueltos, por lo que para los cálculos multidominio la pregunta es ¿cómo se puede realizar esto? Los cálculos son posibles y el diseño de facto es colocar un controlador centralizado (XTC, WAE, NOS) para realizar los cálculos multidominio correspondientes. La descarga de los cálculos de la cabecera al extremo tal permitirá a los dispositivos calcular las trayectorias sin tener visibilidad de toda la topología. Para esta entidad Path Computation Element (PCE) se utiliza y la idea es que esta entidad tenga toda la visibilidad del dominio, realice cálculos y realice un seguimiento de los LSP calculados.
En los casos en que no es posible tener un controlador temporalmente y se necesitan cálculos de varios dominios en el núcleo de ruteo de segmentos, podemos realizar diferentes configuraciones para permitir que los túneles se establezcan en escenarios entre áreas.
SR-TE nos permite definir varios tipos de trayectoria, generalmente conocidos como trayectos explícitos y trayectos dinámicos. Para las trayectorias dinámicas y explícitas esto es sencillo, permitimos que el algoritmo SR-TE compute la trayectoria basada en criterios dinámicos, a menudo la métrica TE o IGP a un extremo de cola. Para las trayectorias explícitas podemos definir varios tipos, entre muchos podemos:
Al definir las políticas SR-TE entre áreas, debemos definir rutas explícitas hacia el extremo final, esto se debe a que no tenemos toda la visibilidad de la topología. Para SR-TE entre áreas, necesitamos configurar las políticas de la siguiente manera:
Nota: Si se requieren opciones dinámicas de ruta entre áreas, el cálculo de la trayectoria se debe delegar a una entidad PCE.
En los siguientes casos, utilizaremos esta topología entre áreas OSPF, y los ejemplos se basarán en el intento de calcular los túneles SR-TE desde XR1 a XR5 que cruzan los límites del área.
Nota: Los ejemplos de SR-TE se basan en OSPF, pero también se aplican a 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
Los dispositivos en el dominio OSPF han construido LSP entre ellos, podemos verificar esto verificando el LSP entre XR1 y 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
Crearemos una política SR-TE desde XR1 para calcular una trayectoria hacia el prefijo-SID XR5 correspondiente a 5.5.5.5/32. El Prefijo 5.5.5.5/32 se ha configurado con un índice de 5, esta es la única etiqueta que proporcionaremos a PCALC para calcular el trayecto.
Nota: Todos los routers de la topología tienen el mismo bloque 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 !
Nota: El anuncio automático no funciona en casos entre áreas.
Cuando proporcionamos una lista SID como entrada para el cálculo, sólo se verifica la primera etiqueta y, si se cumple esta condición, el túnel se activará. Si verificamos el túnel, podemos ver que está activo y que se está realizando el ruteo.
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
Nota: Los eventos PCALC se pueden verificar con el comando debug mpls traffic-eng path lookup.
Si verificamos el RIB global, podemos ver que el ruteo a 5.5.5.5/32 se configura a través de la interfaz 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.
Si verificamos el LFIB, podemos ver que el túnel-te15 se ha instalado y está listo para el reenvío.
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
Al definir las políticas SR-TE para interáreas, tenemos la opción de combinar etiquetas y direcciones IPv4. Para que el PCALC compute correctamente una trayectoria al extremo final, las direcciones IPv4 proporcionadas para el cálculo deben ser locales del área, y para los elementos que están fuera del área, debemos proporcionar los SID de adyacencia de prefijo.
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 !
Como se observó, hemos indicado a PCALC que la trayectoria debe pasar a través de XR6 (16006) y luego al prefijo final SID (16005). Al verificar los resultados del cálculo del túnel, podemos ver cómo se computó.
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
Si hacemos un seguimiento, podemos ver los siguientes saltos que realmente atravesamos 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 tener situaciones en las que definimos los SID de prefijo, pero formamos patrones de tráfico subóptimos o con loop. En este caso, crearemos este escenario.
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
Basándonos en el prefix-SID, podemos ver que el tráfico debe pasar por los SID de prefijo 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
Si rastreamos el trayecto a 5.5.5.5/32 podemos ver que hemos formado un loop entre XR2 y XR6, aunque esto sea subóptimo, aún podemos rutear al XR5 5.5.5.5/32 sin problemas ya que el LSP está correctamente configurado.
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
Al crear políticas de varios dominios sin PCE en la Ingeniería de tráfico de ruteo de segmentos, no tenemos la vista completa de la base de datos de estado de link, debido a esto, debemos establecer rutas explícitas que cumplan los requisitos de ruteo específicos, debido a la falta de visibilidad. Los túneles entre áreas son posibles y se activarán definiendo trayectos explícitos con direcciones IPv4, SID de adyacencia y/o SID de prefijo en el área local con SID de prefijo de los dispositivos de tránsito y/o extremo final de la política SR-TE. Otras definiciones de ruta explícitas fallarán.