Resumen de MPLS (Teoría de las Comunicaciones)

De Cuba-Wiki
Saltar a: navegación, buscar
Back.png Volver a la página de la materia

MPLS (Multiprotocol Label Switching)[editar]

Introducción[editar]

Trata de combinar algunas de las propiedades de los circuitos virtuales con la flexibilidad y robustez de los datagramas.

Por un lado, MPLS se basa en las direcciones y los protocolos de ruteo IP. Por el otro, los routers con capacidad MPLS también pueden forwardear paquetes basados en labels de tamaño fijo y scope local.

Para qué sirve MPLS?[editar]

  • Dar capacidad IP a dispositivos que no forwardean datagramas IP de la forma normal.
  • Forwardear paquetes IP a través de rutas explícitas (precalculadas, que no necesariamente serían elegidas por los protocolos de ruteo IP).
  • Soportar ciertos tipos de services de VPN.

Utilidad[editar]

Destination-Based Forwarding[editar]

Lo explicamos con el ejemplo del Peterson.

Mpls-fig440.svg

Cuando se habilita MPLS en un router, el mismo reserva una label para cada prefijo que encuentra en su tabla, y le avisa a sus vecinos de estas relaciones. En nuestro ejemplo, R2 le asigna la label 15 al prefijo 10.1.1 y 16 al prefijo 10.3.3 . R2 elige estas labels a su conveniencia, y se entienden como índices a la tabla de ruteo.

Entonces R2 le dice a sus vecinos: "por favor agréguenle la etiqueta 15 a todos los paquetes destinados a un host con prefijo 10.1.1". R1 se guarda la etiqueta en un registro relacionado a dicho prefijo, representando la etiqueta "remota" o "de salida" para los paquetes que envíe a esos prefijos.

R2 dice lo mismo a R3, pero además aprende la etiqueta remota de R3, que en este caso es 24.

Supongamos un paquete destinado a 10.1.1.5 llega R1. Llamamos en este caso a R1 "label edge router" (LER). El LER tiene la tarea de aplicar las labels sobre los paquetes IP.

Luego, R1 coloca la etiqueta remota 15 en el paquete antes de enviarlos.

El paquete llega a R2, que viendo la etiqueta sabe que debe forwardearlo a través de su interfaz 1, sacarle la etiqueta remota 15 y attachearle la etiqueta remota 24.

Notar que R2 no necesitó en ningún momento mirar la dirección IP del paquete, simplemente miró la etiqueta remota.

Esto es significante, ya que mientras que el header de IP es de tamaño variable, un label de MPLS tiene tamaño fijo, lo cual hace que el matching de direcciones sea mucho más eficiente.

Otra cosa a notar, es que el algoritmo de ruteo puede seguir siendo cualquiera de los que conocíamos para IP. El camino que seguirá un paquete en este ambiente es el mismo que hubiera seguido sin MPLS de por medio. Sólo el algoritmo de forwarding cambió, no el de ruteo.

Lo más importante de este cambio es que ahora dispositivos que no sabían forwardear paquetes IP, pueden ser usados en una red MPLS. Ergo, por ejemplo, los switches de ATM se bancan MPLS. Esto se debe a que soportan los algoritmos de forwardeo basados en label switching. Con sólo agregarle algún protocolo de ruteo IP salís andando.

Si el protocolo subyacente es del estilo de PPP o Ethernet, la label se coloca entre el header de PPP/Ethernet y el de IP. Si se trata de ATM, se utilizan los campos VCI y VPI para reemplazarlos por la label.

Qué ganamos? Podemos armar una red mezclando routers IP, switches ATM, o routers MPLS adhoc. Esto es económicamente muy conveniente.

En redes grandes, correr MPLS en los switches permite reducir significativamente el número de "adyacencias" que cada router debe mantener, y el trabajo que se deben tomar para informar de cambios de topología. La clave es que para comunicarme con un host conectado a una red a su vez conectada a un router a través de un switch, ya no necesito conocer la IP del router ni cómo llegar, sólo necesito tener la label remota correspondiente.

Explicit Routing[editar]

La idea principal es: quiero ir de un router A a un router B, por alguna razón sé que la mejor ruta es una determinada, que tal vez no sea la mejor según el criterio del protocolo de ruteo que esté usando. Utilizando MPLS puedo "marcar" el camino de A a B como si fuera un cable, independientemente de la cantidad de hops que realmente termine realizando.

La implementación de esto no es demasiado importante, se utiliza un protocolo llamado RSVP (Resource Reservation Protocol). Es parecido a lo que hacíamos en capa 2 cuando queríamos armar un circuito virtual.

Una de las aplicaciones de explicit routing es "traffic engineering", que básicamente se trata de asegurar disponibilidad de recursos en una red. También sirve para mejorar la respuesta de la red en caso de fallos. Para esto se usa "fast reroute". Por ejemplo, es posible precalcular un camino de A a B que explícitamente evita un enlace L. Si L falla, A puede enviar todo el tráfico correspondiente a través del camino precalculado.

Estos precálculos no necesariamente deben ser efectuados por un operador. Hay algoritmos como CSPF (constrained shortest path first), parecidos a link-state pero con constraints (de la pinta: quiero comunicar a R1 con R7, garantizando por lo menos 100Mbps).

Virtual Private Networks and Tunnels[editar]

La forma más simple de VPN sobre MPLS es la de capa 2. Se usa MPLS para tunelear datos de capa 2 a través de una red de routers MPLS-enabled.

Un túnel MPLS no difiere mucho de un túnel IP, sólo que usa headers MPLS en vez de headers IP.

Una cosa importante es que si estoy usando MPLS y quiero hacer un túnel, voy a terminar usando 2 labels MPLS "apiladas". La de más adentro será la que use para demultiplexar en última instancia (que es la que utilizamos en la primera aplicación de MPLS), y hace le agregaremos otra para "encauzar" el túnel (ver fig. 4.46, p. 350, Peterson).

Con este esquema puedo "apilar" circuitos virtuales con una profundidad arbitraria, simplemente agregando labels (notar que esto no es especialmente costoso algorítmicamente gracias a que cada label tiene longitud fija de 24 bits).

También existe MPLS tunneling de capa 3. En este caso también se usa la pila de labels, pero los paquetes deben ser IP (este constraint no existía en layer 2 MPLS tunneling).

Lo remarcable es que puedo darle a 2 clientes la ilusión de que tienen una VPN privada para cada uno, incluso cada uno puede asignar sus IPs a piacere, aunque se solapen; y todo sigue andando.

Conceptos[editar]

LSR[editar]

Label-switch router, es un router que implementa el forwarding de MPLS mediante el chequeo y cambio de labels, en lugar de direcciones IP. Un Edge-LSR es aquel que se encuentra en el borde de la red MPLS, y es el encargado de asignar las labels por primera vez (si es el de entrada) o de quitarlas y reenviar el mensaje a la red correspondiente (si es el de salida).

Label stacks[editar]

Para que el Edge-LSR sepa a qué protocolo corresponde el paquete que tiene que sacar, se puede utilizar un stack de labels. La label más externa se utiliza para el forwarding, como en el uso normal, pero se incluye otra más a continuación que indica el contenido del paquete. Se denominan multiplexing - demultiplexing labels. Las labels siempre se colocan entre el header de L2 y el contenido del paquete.

Asignacion de labels[editar]

Puede hacerse on demand o unsolicited. En el primer caso, cuando un router no sabe por qué interfaz sacar una determinada label, pregunta a sus vecinos enviando la direccion IP del paquete recibido. En el segundo, cada Edge-LSR envía labels a sus vecinos para sus redes, y estos las distribuyen por la red.

LSP[editar]

Label switch path, el camino generado por las labels. Siempre es unidireccional, el circuito establecido para la ida no es el mismo que para la vuelta.

FEC[editar]

Una FEC es una Forward Equivalence Class, o sea, una clase de equivalencia de forwarding. Todos los destinos que usen el mismo Edge-LSR de salida se dice que pertenecen a la misma FEC. Así, no es necesario generar un circuito por cada destino presente en el mismo router de salida, se los incluye a todos dentro de la misma FEC.

LDP[editar]

Label distribution protocol, el protocolo para asignar las labels dentro de la red MPLS. Es el más sencillo, mapea FECs a labels. Incluye mensajes para manejo de sesion, de mapeo de labels y de notificacion de errores. Usa UDP para descubrir a sus vecinos y TCP para establecer la sesion.

Protocolos más complejos como BGP se utilizan para implementar L3 VPNs, por ejemplo. En ese caso se pueden tener muchas IPs iguales (privadas) en la misma red MPLS que se corresponden a VPNs de distintos clientes.

Implicit-null label[editar]

Cuando un router es Edge-LSR, es decir, conecta de la red MPLS a una red IP, indica que la label a utilizar para dicha FEC sea implicit-null. Esto lo salva de tener que hacer una busqueda innecesaria de labels, ya que si no recibe ninguna label en la stack sabe que debe sacar el paquete por su red IP. Para esto, hace un IP lookup normalmente para obtener el best match y elegir la interface correspondiente.