jueves, 3 de septiembre de 2009

Etiquetas IGP y VPN I

Posted by Nicolas | jueves, 3 de septiembre de 2009 | Category: , , , , , |

A modo de continuar con lo que se vio en BGP/MPLS IP VPNs I y BGP/MPLS IP VPNs II, se verá ahora el papel que cumplen LDP y BGP en el intercambio de las etiquetas MPLS. Se utilizarán fragmentos de la maqueta a continuación.


Como IGP se utilizará OSPF (área 0) y todos los equipos residirán en el sistema autónomo 64512. Cada equipo tendrá configurada una interface Loopback (0) con dirección IP X.X.X.X, con X el número de router.

Además cada equipo tendrá configurada la VRF RouterX, con RD (Route Distinguisher) X:X, RT (Route Target) import X:1 y con varios RT export de la forma Y:1 (dependiendo en cada caso como se verá más adelante). Por otra parte se configurará una interface Loopback (1) dentro de la VRF configurada con dirección IP 192.168.0.X.

A continuación la configuración relevante de uno de los equipos para tener una idea.

hostname R3
!
ip cef
!
ip vrf Router3
rd 3:3
route-target export 5:1
route-target export 1:1
route-target import 3:1
!
mpls label protocol ldp
!

interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface Loopback1
ip vrf forwarding Router3
ip address 192.168.0.3 255.255.255.255
!
interface Serial1/0
ip address 172.16.0.1 255.255.255.252
mpls ip
!
interface Serial1/1
ip address 10.0.0.2 255.255.255.252
mpls ip
!
interface Serial1/2
ip address 10.0.0.10 255.255.255.252
mpls ip
!
interface Serial1/3
ip address 10.0.0.17 255.255.255.252
mpls ip
!
router ospf 1
log-adjacency-changes
passive-interface Loopback0
network 3.3.3.3 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
network 172.16.0.0 0.0.0.255 area 0
!
router bgp 64512
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 64512
neighbor 1.1.1.1 update-source Loopback0
neighbor 2.2.2.2 remote-as 64512
neighbor 2.2.2.2 update-source Loopback0
neighbor 4.4.4.4 remote-as 64512
neighbor 4.4.4.4 update-source Loopback0
neighbor 5.5.5.5 remote-as 64512
neighbor 5.5.5.5 update-source Loopback0
!
address-family vpnv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community extended
neighbor 1.1.1.1 route-reflector-client
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 send-community extended
neighbor 4.4.4.4 activate
neighbor 4.4.4.4 send-community extended
neighbor 4.4.4.4 route-reflector-client
neighbor 5.5.5.5 activate
neighbor 5.5.5.5 send-community extended
exit-address-family
!
address-family ipv4 vrf Router3
redistribute connected
no synchronization
exit-address-family
!
mpls ldp router-id Loopback0
!

En un primer ejemplo se mostrará cómo es el label path entre R5 y R4 (R5-R3-R4) y cómo se modifican las interfaces para tomar otro camino (R5-R3-R1-R4).

En R5 se evalua si el prefijo ha sido recibido con show ip bgp vpnv4 vrf nombre prefijo. Se puede ver el prefijo accarrea el RT:5:1, por ende es ingresado en la VRF Router5 de ese router. De este comando se puede desprender el label VPN asignado por el PE de destino (que es quien anuncia el prefijo). Otro comando que nos puede revelar esta información es show ip bgp vpnv4 vrf nombre labels. Se puede ver como la etiqueta interior del paquete será 22 en este caso.

R5#sh ip bgp vpnv4 vrf Router5 192.168.0.4
BGP routing table entry for 5:5:192.168.0.4/32, version 13
Paths: (1 available, best #1, table Router5)
Not advertised to any peer
Local, imported path from 4:4:192.168.0.4/32
4.4.4.4 (metric 129) from 3.3.3.3 (3.3.3.3)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Extended Community: RT:1:1 RT:3:1 RT:5:1 RT:6:1
Originator: 4.4.4.4, Cluster list: 3.3.3.3
mpls labels in/out nolabel/22
R5#

R5#sh ip bgp vpnv4 vrf Router5 labels | i Network|192.168.0.4
Network Next Hop In label/Out label
192.168.0.4/32 4.4.4.4 nolabel/22
R5#

Sin embargo esta etiqueta es sólo útil en el PE de destino. Para transmitir el paquete a través de la red se necesita de otra etiqueta (IGP) que permitirá realizar el label switching en cada nodo. Estas etiquetas son intercambiadas por los routers a través de LDP y sus valores son almacenados en la LFIB (Label Forwarding Information Base), que pueden ser consultados con show mpls forwarding-table o bien con show ip cef vrf nombre prefijo detail que entrega el detalle de las etiquetas a ser asingadas para un prefijo en particular. Se ve entonces que la etiqueta IGP tiene como valor 20.

R5#sh ip cef vrf Router5 192.168.0.4 detail  
192.168.0.4/32, epoch 0
recursive via 4.4.4.4 label 22
nexthop 172.16.0.1 Serial1/0 label 20
R5#

Por ende el paquete antes de salir de R5 con destino R4 luce así (Encabezado MPLS no proporcional a su tamaño real, son 4 bytes con; label 20 bits, Exp 3 bit, Bottom of Stack 1 bit y TTL 8 bits):

Encabezado MPLS

-----------------------------------------------------------------
|Label = 20 |Exp|S = 0|TTL|Label = 22 |Exp|S = 1|TTL|Paquete IP |
-----------------------------------------------------------------

Paquete IP

-----------------------------------------------------------------
|V = 4 | IHL |Type of Service| Total Length |
-----------------------------------------------------------------
| Identification |Flags| Fragment Offset |
-----------------------------------------------------------------
| Time to Live | Protocol = 1 | Header Checksum |
-----------------------------------------------------------------
| SA = 192.168.0.5 |
-----------------------------------------------------------------
| DA = 192.168.0.4 |
-----------------------------------------------------------------
| Mensaje ICMP |
-----------------------------------------------------------------

Mensaje ICMP

-----------------------------------------------------------------
| Type = 8 | Code = 0 | Checksum |
-----------------------------------------------------------------
| Identifier | Sequence Number |
-----------------------------------------------------------------
| Data ... |
-----------------------------------------------------------------

Antes de entrar en el detalle del path seguido, se prueba conectividad.

R5#ping vrf Router5 192.168.0.4 source Loop1 

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.4, timeout is 2 seconds:
Packet sent with a source address of 192.168.0.5
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 56/143/340 ms
R5#

Si se revisa la LFIB local se ve que la etiqueta 20 está asociada a la Loopback del PE de destino.

R5#sh mpls forwarding-table | i Local|20
Local Outgoing Prefix Bytes Label Outgoing Next Hop
20 Pop Label 10.0.0.16/30 0 Se1/0 point2point
22 20 4.4.4.4/32 0 Se1/0 point2point
R5#

R3 recibirá el paquete con etiqueta 20 y realizará la operación POP (PHP), es decir la remueve (etiqueta IGP) y deriva el paquete a R4 con sólo la etiqueta VPN.

R3#sh mpls forwarding-table | i Local|20
Local Outgoing Prefix Bytes Label Outgoing Next Hop
16 Pop Label 5.5.5.5/32 1620 Se1/0 point2point
20 Pop Label 4.4.4.4/32 1620 Se1/3 point2point
R3#

Si el enlace entre R3 y R4 cae, esto provocará el correspondiende update de la RIB y por ende LFIB.

R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#int s1/3
R3(config-if)#shut
R3(config-if)#^Z
R3#
*Sep 2 10:45:43.455: %OSPF-5-ADJCHG: Process 1, Nbr 4.4.4.4 on Serial1/3 from FULL to DOWN, Neighbor Down: Interface down or detached
*Sep 2 10:45:43.671: %LDP-5-NBRCHG: LDP Neighbor 4.4.4.4:0 (3) is DOWN (Interface not operational)
*Sep 2 10:45:44.403: %SYS-5-CONFIG_I: Configured from console by console
R3#
*Sep 2 10:45:45.383: %LINK-5-CHANGED: Interface Serial1/3, changed state to administratively down
R3#
*Sep 2 10:45:45.387: %ENTITY_ALARM-6-INFO: ASSERT INFO Se1/3 Physical Port Administrative State Down
R3#
*Sep 2 10:45:46.383: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/3, changed state to down
R3#

Nuevamente se revisa la LFIB de R3 y ahora en vez de POP realiza SWAP, cambiando la etiqueta exterior de 20 a 21, para derivar el paquete a R1.

R3#sh mpls forwarding-table | i Local|20
Local Outgoing Prefix Bytes Label Outgoing Next Hop
20 21 4.4.4.4/32 560 Se1/1 point2point
R3#

R1 recibe el paquete con etiqueta 21 y realiza un POP.

R1#sh mpls forwarding-table | i Local|21
Local Outgoing Prefix Bytes Label Outgoing Next Hop
21 Pop Label 4.4.4.4/32 1139 Se1/1 point2point
R1#

R4 finalmente recibe el paquete con una única etiqueta (VPN) con valor 22 que en su LFIB se ve está asciado al prefijo de destino. Cada prefijo vpnv4 tiene asignada una etiqueta MPLS única (comportamiento default de Cisco IOS).

R4#sh mpls forwarding-table | i Local|22
Local Outgoing Prefix Bytes Label Outgoing Next Hop
22 Pop Label 192.168.0.4/32[V] 2000 aggregate/Router4

En los siguientes post se mostrarán más ejemplo de la misma topología.

En total 1 comentarios:

Leave a Reply