Multilabel Protocol Switching (MPLS) es una herencia del protocolo "tag switching " de Cisco.
Ahora MPLS es un estándar que se regula en la RFC 3031
También tenemos la RFC 3032 que trata sobre el etiquetado MPLS.
Se puede usar para tunelizar IPv6, Ethernet e incluso protocolo no IP pero sus decisiones están basadas en "label switching". Puede transportar PPP; HDLC, Ethernet, Frame Relay, etc.
El uso de las MPLS sirven para hacer que nuestro tráfico sea transparente al ISP, para hacer túneles para nuestro tráfico. Para ello el ISP nos ofrece los servicios de L2VPN y L3VPN.
Una red MPLS nos permite hacer "Traffic Engineering" para distribuir la carga por enlaces no utilizados, garantizar ancho de banda,
FORMATO DE LAS ETIQUETAS
Es el mismo concepto que las etiquetas de VLAN. Cuando en una VLAN entra una trama, la etiqueta dot1q nos dice en que tabla debemos mirar, en el caso de Ethernet, en la CAM. Pues con MPLS pasa lo mismo, cuando entra esta etiqueta nos dice si mirar en la tabla IPv4 o IPv6, en la de una VRF, etc.
Es una cabecera de 4 bytes que se compone de:
- Label -> 20 bits. Significancia local
- EXP -> 3 bits. Para la "class of Service"
- S -> 1 bit. Indica que es la última etiqueta del paquete.
- TTL -> 8 bits.
MPLS tiene su propia tabla de envío. Es la MPLS Forwarding:
- RIB -> show ip route
- FIB -> show ip cef
- LFIB -> show mpls forwarding-table
Las etiquetas MPLS están asociadas a la FEC (Forwarding Equivalency Class), que básicamente es lo que asocia la ruta ip a la etiqueta (show mpls forwarding-table). Aquí se ve una de las ventajas de MPLS, sobre todo para los equipos del CORE de un ISP, que una red MPLS se denominan equipos P. Estos equipos no necesitan mirar la tabla IP para enviar el tráfico, se basan en la LFIB, que en realidad es la combinación de la FIB con las etiquetas MPLS. Lo único que hacen es sacarlo por la interface que tiene en la LFIB.
La lógica del switching MPLS es: si me entra tráfico por la interface e0/0 con la etiqueta X, lo tengo que mandar por la interface e0/1 con la etiqueta Y.
Lo vemos más abajo con un ejemplo.
ROLES DE EQUIPOS
- CE (Customer Edge) -> el equipo del cliente que conecta con el ISP (Router o Switch). Es el último salto de la red del cliente
- PE (Provider Edge) -> el equipo del ISP que conecta con los CE y con los P. Este equipo realiza los "lookup" tanto de layer 2 y 3, dependiendo de si el acceso de L2VPN o L3VPN, como del switching MPLS. Es el último salto de la red del ISP. Podéis encontrarlos también como equipos LER (Label Edge Router)
- P (Provider) -> equipo CORE del ISP. El tráfico sen envía en base a las etiquetas. Podéis encontrarlos también como equipos LSR (Label Switch Router)
- Imposition-> El PE recibe paquetes del CE sin etiqueta, le añade una o más y las manda al CORE (P)
- Disposition -> El PE recibe paquetes del P, quita las etiquetas y lo envía al CE
- Label Push -> añade la etiqueta -Imposition
- Label Swap -> reemplaza la etiqueta. En los equipos P.
- Label Pop -> elimina la etiqueta - Disposition
PROPAGACIÓN DE LAS ETIQUETAS
Para propagar las etiquetas usamos el protocolo LDP , antiguamente llamado "tag protocol". Se recoge en la RFC 5036.
También tenemos el protocolo MP-BGP para propagar las etiquetas. Esto lo usamos para las L3VPN. RFC 3107.
Y otra opción es utilizar RSVP para configurar MPLS TE (traffic Engineering) que nos añade opciones para los túneles LSP. RFC 3209
LDP
El primer paso al activar el protocolo es descubrir a los vecinos con "hello". No usa su propio transporte, como BGP, por lo que necesita de un IGP para tener comunicación entre equipos. Se puede configurar autenticación.
Estos paquetes hello se envían a la dirección 224.0.0.2 con origen y destino del puerto UDP 646 con los típicos roles de cliente/servidor en la negociación.
Dentro del hello se incluye el " Ipv4 transport Address" que usa para montar la sesión TCP, que suele ser el propio LDP Router-ID. Recomendado configurarlo manual, no queremos que el equipo elija la que quiera.
Para aclarar esto, hay que decir que los hello se intercambian por UDP pero las etiquetas se hacen por la sesión TCP, es decir, las sesiones LDP se forman sobre TCP a traves del puerto 646 también y con la Ipv4 transport Address. Esto implica que si esta dirección es una loopback, los vecinos deben saber llegar a ella. Se intercambian mensajes del tipo "Address Message Label Mapping Message Label " (os juro que sale así en Wireshark) donde viene una lista con las asociaciones de etiquetas que quieren hacer de las rutas
Durante la negociación de los vecinos la distribución de las etiquetas puede ser de dos maneras dependiendo de la configuración.
- Unsolicited Downstream
- Downstream on Demand
Un ejemplo del flujo:
Hacemos un ping desde CE1 a CE2 y vemos los saltos y las etiquetas MPLS:
El primer salto es la 172.16.1.1 que es la "WAN" del PE1. Ahora PE1 hace un "lookup" de la dirección de destino y encuentra que tiene asociada una etiqueta (FEC).
El salto 10.0.0.1 nos está diciendo el número de etiqueta (23) con el que sale de PE1 por la interface e0/0 hacia esa dirección ip. También podemos ver que la etiqueta número 23 será la marcada como local para esa dirección en el P3. Ahora P3 no tiene que hacer un "lookup" de la dirección, se basa en la LFIB.
show mpls forwarding-table |
El salto 10.0.0.5 nos está diciendo el número de etiqueta (18) con el que sale de P3 por la interface e0/1 hacia esa dirección ip. Vemos que tiene a la 23 como local.
El salto 10.0.0.2 que es la interface e0/0 de PE2 no muestra etiqueta MPLS, pero esa interface si está dentro del escenario MPLS. Lo que sucede aquí es la regla del Penultimate Hop. Este es el penúltimo salto de la red MPLS para salir de ella si se quiere llegar a ese destino. Cuando un equipo cumple esta función lo que hace es eliminar la etiqueta del paquete (Label Pop) porque si sabe que ya cuando salga de él ya no van a haber más salto en la MPLS, la etiqueta no es necesaria. Le ahorra trabajo a PE2, que solo tiene que hacer el "lookup" de capa 3, no tiene que mirar en la LFIB.
Si miramos la tabla CEF en PE1 o P3,que necesitan de la etiqueta MPLS para llegar, vemos que nos la muestra. Pero si miramos en P4 o en PE2, la CEF ya no nos muestra etiqueta porque el enrutamiento lo hace por la tabla general.
Estas etiquetas no tienen por qué corresponderse en el camino de ida y vuelta. SI hacemos un ping ahora desde CE2, vemos que usa números de etiquetas diferentes.
Por último, si ahora hacemos un ping de CE1 a la dirección del PE2 10.0.0.2, que es una por donde pasamos para llegar a CE2, podemos ver que no le asigna la misma etiqueta. Las etiquetas se asocian por prefijos, no por compartir el mismo camino.
Ahora es P3 el Penultimate Hop. |
Para configurar LDP es necesario tener CEF habilitado.
En las IOS antiguas por defecto venía habilitado TDP (igual que LDP pero propiedad de Cisco) y había que configurar el protocolo LDP. Ahora viene por defecto LDP. Si os encontráis con una antigua:
(config)#mpls label protocol ldp
Después tenemos dos opciones:
mpls ip - > para habilitar LDP a nivel de interface
mpls ldp autoconfig -> para habilitar LDP a nivel de router (peligroso)
Es recomendable también darle un ID.
(config)#mpls ldp router-id
Las interfaces loopback serán los puntos finales nuestros túneles L2/L3VPN, lo que se llaman los LSP. Solo necesitamos etiquetas para llegar a esas loopbacks, no necesitamos que LDP sepa llegar a todas las interfaces. Podemos hacer que LDP solo propague las loopbacks.
(config)#mpls ldp label
(config-ldp-lbl)#allocate globlal host-routes
Para verificar:
show mpls interfaces
show mpls ldp neighbors
show mpls ldp bindings
show mpls forwarding-table
show ip route
show ip cef
debug mpls ldp
No hay comentarios:
Publicar un comentario