Va a separar el tráfico del cliente y del ISP. Esto lo va hacer a través de las VRF. Cada cliente tendrá su tabla de rutas particular, la de la cada VRF. Podemos decir que son tablas de rutas "virtuales". Entre el cliente y el ISP (de CE a PE) hay un IGP para comunicarse, normalmente BGP, pero puede ser una ruta estática o RIP.
Dentro de la red del ISP se configura MP-BGP (Multiprotocol BGP) para que los PE hablen dinámicamente entre ellos. Esto se consigue configurando un Router Distinguisher. El tráfico se etiqueta con LDP para llegar a los next-hops de BGP, para llegar al PE del otro lado de la MPLS.Los equipos P solo saben llegar al next-hop de bgp a través del IGP.
En esta solución solo los PE saben de las rutas del cliente.
Entre los equiops PE se forman túneles LSP, que es la combinación del IGP y LDP.
Una direccion NLRI de VPNv4, que es otra manera de llamar a las direcciones que se forman cuando montamos L3VPN, se compone de:
- Route Distinguisher
- IP/MASK
- Next Hop
- Etiqueta MPLS VPN
Con un ejemplo se ve mucho más claro.
PE1
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.0 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 1.1.1.1 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
PE2
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.2 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 2.2.2.2 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
P3
interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.1 255.255.255.254
!
interface Ethernet0/1
ip address 10.0.0.4 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 3.3.3.3 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
P4
interface Loopback0
ip address 4.4.4.4 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.3 255.255.255.254
!
interface Ethernet0/1
ip address 10.0.0.5 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 4.4.4.4 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
Con esta configuración básica tenemos un IGP (OSPF) + LDP, lo que nos conforma una MPLS.
De PE2 a PE1 se llega y se ven las etiquetas LDP |
Lo siguiente sería configurar las conexiones entre PE's y CE's. Aquí es donde entre en juego la VRF. Creamos la VRF y le asignamos un RD. Este RD no tiene que se igual en los dos PE para la misma VRF. Para facilitar la explicación lo hago así, pero en ISP's que tienen Router Reflectors puede ser un problema. Lo explico en la sección de Router Reflector.
PE1
ip vrf L3VPN
rd 65500:100
rd 65500:100
!
interface Ethernet1/0
ip vrf forwarding L3VPN
ip address 172.16.1.1 255.255.255.252
!
ip address 172.16.1.1 255.255.255.252
!
PE2:
ip vrf L3VPN
rd 65500:100
rd 65500:100
!
interface Ethernet1/0
ip vrf forwarding L3VPN
ip address 172.16.2.1 255.255.255.252
!
ip address 172.16.2.1 255.255.255.252
!
Si miramos la tabla de rutas global en uno de ellos, no encontraremos la red de la interface que se enfrenta al CE porque la hemos metido en la VRF y esta tiene su propia tabla de rutas.
Ahora vamos a configurar los CE:
CE1
interface Loopback0
ip address 5.5.5.5 255.255.255.255
!
interface Ethernet1/0
ip address 172.16.1.2 255.255.255.252
!
ip address 5.5.5.5 255.255.255.255
!
interface Ethernet1/0
ip address 172.16.1.2 255.255.255.252
!
router bgp 65501
redistribute connected -> para propagar la loopback
neighbor 172.16.1.1 remote-as 65500
redistribute connected -> para propagar la loopback
neighbor 172.16.1.1 remote-as 65500
CE2
interface Loopback0
ip address 6.6.6.6 255.255.255.255
!
interface Ethernet1/0
ip address 172.16.2.2 255.255.255.252
!
ip address 6.6.6.6 255.255.255.255
!
interface Ethernet1/0
ip address 172.16.2.2 255.255.255.252
!
router bgp 65502
redistribute connected
neighbor 172.16.2.1 remote-as 65500
redistribute connected
neighbor 172.16.2.1 remote-as 65500
Y las sesiones BGP en los PE:
PE1
router bgp 65500
neighbor 172.16.1.2 remote-as 65501
!
neighbor 172.16.1.2 remote-as 65501
!
PE2
router bgp 65500
neighbor 172.16.2.2 remote-as 65502
!
neighbor 172.16.2.2 remote-as 65502
!
Si chequeamos la sesión BGP vemos que no levanta. Eso sucede porque la dirección del vecino CE está en la tabla de routing de la VRF y no en la global. Y nosotros, en el PE, hemos configurado la vecindad BGP en lo que podemos llamar la configuración global de BGP.
Tenemos que configurar la sesión eBGP a través de la VRF.
PE1
no router bgp 65500
router bgp 65500
address-family ipv4 vrf L3VPN
neighbor 172.16.1.2 remote-as 65501
neighbor 172.16.1.2 remote-as 65501
PE2
no router bgp 65500
router bgp 65500
address-family ipv4 vrf L3VPNneighbor 172.16.2.2 remote-as 65502
show bgp vpnv4 unicast vrf L3VPN |
Ahora la sesión con el CE se establece a través de la vrf. El show ip bgp summary no funciona porque ese comando muestra la tabla global. Vemos que PE2 tiene en su tabla de rutas las loopback de CE", la 6.6.6.6./32.
La tabla de rutas BGP de la vrf tiene todos los atributos de la tabla BGP global. Sin embargo, la entrada lleva también el RD incorporado, lo que la hace única. A estas entradas se las llama AFI o SAFI:
- AFI&SAFI 128 -> 12 bytes. Conocidas como las "vpnv4". Se componen de:
- Router Distinguisher (RD) -> 8 bytes
- Dirección IP -> 4 bytes
show bgp vpnv4 unicast vrf L3VPN 6.6.6.6 |
show bgp vpnv4 unicast vrf L3VPN neighbors 172.16.2.2 routes |
Vemos que PE2 recibe la loopback de CE2 pero no le manda ninguna ruta.
Ahora vamos a configurar las sesiones iBGP entre los PE's. Estos si se tienen que ver por la tabla globlal de BGP y establecemos las sesiones con origen de la interface loopback. También tenemos que activar la vecindad en la faminilia vpnv4.
PE1
router bgp 65500
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 65500
neighbor 2.2.2.2 update-source Loopback0
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 65500
neighbor 2.2.2.2 update-source Loopback0
!
address-family vpnv4
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 send-community extended
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 send-community extended
exit-address-family
!
!
PE2
router bgp 65500
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 65500
neighbor 1.1.1.1 update-source Loopback0
!
address-family vpnv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community extended
exit-address-family
!
Ahora comprobamos las vecindades
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 65500
neighbor 1.1.1.1 update-source Loopback0
!
address-family vpnv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community extended
exit-address-family
!
Ahora comprobamos las vecindades
show ip bgp summary -> vemos que la vecindad se ha formado
show bgp vpnv4 unicast all neighbors -> tenemos tanto el interno como el externo
show bgp vpnv4 unicast vrf L3VPN ->no se han pasado direcciones entre PE
En PE2 solo se ve la loopback de CE2 y en PE1 la de de CE1. Vamos a PE1 y vemos que sí le estamos mandando las rutas a PE2.
show bgp vpnv4 unicast all neighbors 2.2.2.2 advertised-routes |
Nos falta por configurar el Route Target (extended community). Necesitamos otro atributo para asociar las rutas a los clientes. El Route Distinguisher solo nos soluciona el problema de solapamiento de direcciones, hace única a cada dirección VPNv4. Pero el Route Target es el que dice que ruta va a cada VRF. Este número tiene que ser compartido por los equipos que quiere participar en esa VRF. Puede haber diferentes Router Target para una misma VPNv4, lo que nos da la versatilidadpara crear redes complejas ya sean en full mesh, en hub-spoke, etc.
El Route Target sirve para controlar lo que entra en la tabla de rutas VRF. Son dos políticas. Hay que verlo desde la perspectiva de la VRF:
- export route-target -> las rutas que van de la VRF a la global de BGP
- import route-target -> las rutas que van de la global de BGP a la VRF
- export-map
- import-map
El formato del Router Target es igual que el del Route Distinguisher. Esto puede llevar a consfusión, ojo con esto.:
[AS:nn | IP-address:nn]
Sabiendo esto vamos a configurar en los PE el Route Target. Los números dan igual, solo tienen que coincidir en los dos PE:
route-target both 567:89
Ahora ya vemos la loopback de CE1 (5.5.5.5) en la tabla de la VRF de PE2
show bgp vpnv4 unicast vrf L3VPN |
Desde CE2 vemos que tiene la loopback de CE1 (5.5.5.5) aprendida por BGP. También comprobamos con un traceroute los saltos del camino.
Ahora cuando pasa por la MPLS, vemos en el salto 2 etiquetas. Una es la que ya conocemos (18), a la que llamamos la "Transport Label" y se transporta con LDP, y la otra es la etiqueta de la VPN (21), que la llamamos la "VPN Label" que se transporta con BGP. Esta última no cambia en todo el camino individualmente para cada NLRI, para cada dirección. La etiqueta de LDP cambiará enfunción de lo que hayan negociado con los vecinos (en este ejemplo coincide casualmente, ambos ambos tienen la 18).
Ahora nos vamos a PE2 y miramos en la tabla CEF sobre la 5.5.5.5
show ip cef vrf L3VPN 5.5.5.5/32 details |
Se pueden ver las 2 etiquetas:
- recursive -> VPN Label (21)
- nexthop -> Transport Label (18)
No hay comentarios:
Publicar un comentario