# Multiprotocol Label Switching

La conmutación de etiquetas multiprotocolo o MPLS (del inglés Multiprotocol Label Switching) es un mecanismo de transporte de datos estándar creado por la IETF y definido en el RFC 3031. Opera entre la capa de enlace de datos y la capa de red del modelo OSI. Fue diseñado para unificar el servicio de transporte de datos para las redes basadas en circuitos y las basadas en paquetes. Puede ser utilizado para transportar diferentes tipos de tráfico, incluyendo tráfico de voz y de paquetes IP.
MPLS reemplazó a Frame Relay y ATM como la tecnología preferida para llevar datos de alta velocidad y voz digital en una sola conexión. MPLS no solo proporciona una mayor fiabilidad y un mayor rendimiento, sino que a menudo puede reducir los costes de transporte mediante una mayor eficiencia de la red. Su capacidad para dar prioridad a los paquetes que transportan tráfico de voz hace que sea la solución perfecta para llevar las llamadas de voz sobre IP o VoIP.

## MPLS (conmutación multiprotocolo mediante etiquetas)

Circuitos virtuales en las redes IP, sobre las que introduce una serie de mejoras:
* Redes privadas virtuales.
* Ingeniería de tráfico.
* Mecanismos de protección frente a fallos y más.
* Soporte de Calidad del Servicio (QoS)
* Soporte multiprotocolo
* Establecimiento de Clases de Servicio (CoS).

## Características básicas y funcionamiento

La tecnología MPLS es una solución para la conmutación multiprotocolo:
* Introduce una estructura orientada a la conexión en redes que originariamente no estaban orientadas a la conexión (redes IP).
* Integra con continuidad a la capa 2 (enlace de datos) y capa 3 (red) del modelo OSI, combinando las funciones de control de enrutamiento con efectividad en la conmutación.
* Optimiza el enrutamiento, reduciendo notablemente la complejidad de los algoritmos.
* Mantiene un estado de la comunicación entre dos nodos.
* Permite introducir QoS en redes IP.
* Optimiza el establecimiento de túneles en las VPN.

## Arquitectura MPLS
### Elementos

* LER (Label Edge Router o enrutador frontera de etiquetado): elemento que inicia o termina el túnel (extrae e introduce cabeceras). Es decir, el elemento de entrada/salida a la red MPLS. Existen tanto enrutadores de entrada como de salida de la red. Ambos suelen denominarse router frontera ya que se encuentran en los extremos de la red MPLS.
* LSR (Label Switching Router o enrutador de conmutación de etiquetas)
* LSP (Label Switched Path o intercambio de rutas por etiqueta) nombre genérico de un camino MPLS (para cierto tráfico o FEC), es decir, del túnel MPLS establecido entre los extremos. A tener en cuenta que un LSP es unidireccional.
* LDP (Label Distribution Protocol o protocolo de distribución de etiquetas): un protocolo para la distribución de etiquetas MPLS entre los equipos de la red.
* FEC (Forwarding Equivalence Class o clase de equivalencia de reenvío): nombre que se le da al tráfico que se encamina bajo una etiqueta. Subconjunto de paquetes tratados del mismo modo por el conmutador.

### Cabecera MPLS

Donde:
* Etiqueta o label (20 bits): es el valor de la etiqueta MPLS.
* Experimental o Exp (3 bits): llamado también bits experimentales. Aparece como calidad de servicio en otros textos, y afecta al encolado y descarte de paquetes. Son tres bits usados para identificar la clase del servicio.
* Pila o stack (S, 1 bit): sirve para el apilado jerárquico de etiquetas. Cuando S=0, indica que hay más etiquetas añadidas al paquete. Cuando S=1, se trata de la última etiqueta de la jerarquía.
* Tiempo de vida o time-to-live (TTL, 8 bits), que tiene la misma funcionalidad que en IP. Se decrementa en cada enrutador y al llegar al valor de 0, el paquete es descartado. Generalmente sustituye el campo TTL de la cabecera IP.

### Pila de Etiquetas MPLS

MPLS funciona anexando un encabezado a cada paquete. Dicho encabezado contiene una o más "etiquetas", y al conjunto de etiquetas se le llama pila o "stack". Cada etiqueta consiste en cuatro campos:
* Valor de la etiqueta de 20 bits.
* Prioridad de Calidad de Servicio (QoS) de 3 bits. También llamados bits experimentales.
* Bandera de "fondo" de la pila de 1 bit.
* Tiempo de Vida (TTL) de 8 bits.
Estos paquetes MPLS son enviados después de una búsqueda por etiquetas en vez de una búsqueda dentro de una tabla IP. De esta manera, cuando MPLS fue concebido, la búsqueda de etiquetas y el envío por etiquetas eran más rápido que una búsqueda RIB (base de información de enrutamiento), porque las búsquedas eran realizadas en el switch fabric y no en la CPU.

## Creación de la Red

Los puntos de entrada en la red MPLS son llamados Enrutadores de borde de Etiqueta (LER), es decir enrutadores que son interfaces entre la red MPLS y otras redes. Los enrutadores que efectúan la conmutación basados únicamente en etiquetas se llaman Enrutadores Conmutadores de Etiqueta (LSR). Cabe notar que un LER es simplemente un LSR que cuenta con la habilidad de rutear paquetes en redes externas a MPLS.
Las etiquetas son distribuidas usando el Protocolo de Distribución de Etiquetas (LDP). Es precisamente mediante el protocolo LDP que los enrutadores de etiquetas intercambian información acerca de la posibilidad de alcanzar otros enrutadores, y las etiquetas que son necesarias para ello. También es posible hacer la distribución de etiquetas usando el protocolo RSVP-TE.
El operador de una red MPLS puede establecer Caminos Conmutados mediante Etiquetas (LSP), es decir, el operador establece caminos para transportar Redes Privadas Virtuales de tipo IP (IP VPN), pero estos caminos pueden tener otros usos. En muchos aspectos las redes MPLS se parecen a las redes ATM y FR, con la diferencia de que la red MPLS es independiente del transporte en capa 2 (en el modelo OSI).
En el contexto de las Redes Privadas Virtuales, los enrutadores que funcionan como ingreso o regreso a la red son frecuentemente llamados enrutadores de Borde del Proveedor (enrutadores PE), los dispositivos que sirven solo de tránsito son llamados similarmente enrutadores de Proveedor (enrutadores P). Véase el RFC2547.
En MPLS el camino que se sigue está prefijado desde el origen (se conocen todos los saltos de antemano): se pueden utilizar etiquetas para identificar cada comunicación y en cada salto se puede cambiar de etiqueta (mismo principio de funcionamiento que VPI/VCI en ATM, o que DLCI en Frame Relay).
* Paquetes destinados a diferentes IPs pueden usar el mismo camino LSP (pertenecer al mismo FEC).
* Las etiquetas con el mismo destino y tratamiento se agrupan en una misma etiqueta: los nodos mantienen mucha menos información de estado que por ejemplo ATM. Las etiquetas se pueden apilar, de modo que se puede encaminar de manera jerárquica.

## Paso de un paquete por la red

Cuando un paquete no etiquetado entra a un enrutador de ingreso y necesita utilizar un túnel MPLS, el enrutador primero determinará la Clase Equivalente de Envío (FEC), luego inserta una o más etiquetas en el encabezado MPLS recién creado. Acto seguido el paquete salta al enrutador siguiente según lo indica el túnel.
Cuando un paquete etiquetado es recibido por un enrutador MPLS, la etiqueta que se encuentra en el tope de la pila será examinada. Basado en el contenido de la etiqueta el enrutador efectuará una operación apilar (PUSH), desapilar (POP) o intercambiar (SWAP).
* En una operación SWAP la etiqueta es cambiada por otra y el paquete es enviado en el camino asociado a esta nueva etiqueta.
* En una operación PUSH una nueva etiqueta es apilada sobre otra en caso de que exista. Si en efecto había otra etiqueta antes de efectuar esta operación, la nueva etiqueta encapsula la anterior.
* En una operación POP la etiqueta es retirada del paquete lo cual puede revelar una etiqueta interior si existía. A este proceso se llama desencapsulado y es usualmente efectuado por el enrutador de regreso con la excepción de PHP ( penultimate hop popping, remoción en el penúltimo salto).
Durante estas operaciones el contenido del paquete por debajo de la etiqueta MPLS no es examinado, de hecho los enrutadores de tránsito usualmente no necesitan examinar ninguna información por debajo de la mencionada etiqueta. El paquete es enviado basándose en el contenido de su etiqueta, lo cual permite un enrutamiento independiente del protocolo.
En el enrutador de regreso donde la última etiqueta es retirada, solo queda la carga útil, que puede ser un paquete IP o cualquier otro protocolo. Por tanto, el enrutador de regreso debe forzosamente tener información de enrutamiento para dicho paquete debido a que la información para el envío de la carga no se encuentra en la tabla de etiquetas MPLS.
En algunas aplicaciones es posible que el paquete presentado al LER ya contenga una etiqueta MPLS, en cuyo caso simplemente se anexará otra etiqueta encima. Un aspecto relacionado que resulta importante es PHP.
En ciertos casos, es posible que la última etiqueta sea retirada en el penúltimo salto (anterior al último enrutador que pertenece a la red MPLS); este procedimiento es llamado remoción en el penúltimo salto (PHP). Es útil, por ejemplo, cuando la red MPLS transporta mucho tráfico. En estas condiciones los penúltimos nodos ayudarán al último en el procesamiento de la última etiqueta de manera que éste no se vea excesivamente forzado al cumplir con sus tareas de procesamiento.