# Apuntes Ing. Tráfico ## MPLS, MultiProtocol Label Switching ### MPLS: Introducción Es un mecanismo de reenvío de paq. mediante solución “conectiva” en redes “no conectivas”. Además, es una tecnología de paquetes que separa las dos funciones básicas de los routers. * **Plano de control**: Aprendizaje y selección de rutas mediante protocolo de encaminamiento. Requiere de una gestión de tablas de encaminamiento. * **Plano de reenvio**: El reenvio se lleva a cabo mediante una “etiqueta” añadida a los paquetes. Cada paquete que se recibe se asocia (o está asociado) con una etiqueta y una interfaz de salida. Requiere gestión de tablas de conmutación de etiquetas (tablas MPLS). Podríamos dercir que esta tecnología incorpora lo mejor de las tecnologías IP y ATM. Ya que es un red "paquetizada" pero el hecho de que el forwarding se haga en base a etiquetas, y se guarde en una tabla el estado de conmutación de las mismas, tiende a crear unas rutas preestablecidad, circuitos virtuales. Es importante señalar que MPLS es una tecnología multiprotocolo, ya que en principio se tenía la intención de manejar varios protocolos de red, pero solo fue desarrolla para IP. En cuanto a capa 2, es compatible con diversas tecnologías como són FR, ATM, PPP, Ethernet. La motivación inicial de la creación de MPLS era la de acelerar el trabajo en los routers. Querían mejorar el modelo de conmutación IP, que se hacia normalmente a partir de preficos de direcciones IP destino. Para ello era necesario administrar unas tablas de rutas donde se haría una busqueda de la ruta que debería seguir el paquete. Esto suponía numerosas complejas operaciones que ralentizaban el reenvio. ¿Qué se prentendía conseguir con MPLS? Buena pregunta :relaxed: , se pretendía hacer una conmutación mediante etiquetas, para así evitar la inspección profunda de los paquetes y de esta manera ahorrar tiempo en el forwarding y requerir menos carga computacional. El interés actual de MPLS es las VPNs de capa 2 y 3, QoS. ### MPLS: Definiciones * **MPLS**: Procedimiento de conmutación/reenvío de paquetes basado sólo en etiquetas. * **PDU-MPLS**: resultado de encapsular tráfico de cualquier protocolo de capa de red para encaminarlo por determinado trayecto a partir de conmutación de etiquetas. * **LSR**: router IP con capacidad MPLS. Estos podrán hacer forwarding tanto mediante e lrouting IP convencional como por etiquetas. Estos además podrán asociar etiquetas a una FEC. * **FEC**: grupo de paquetes tratados de igual manera respecto al reenvío. * **Nodo MPLS**: Nodo con capacidad MPLS que no tiene necesariamente capacidad de forwarding mediante FEC (Forwarding Equivalency Class). * **Dominio MPLS**: Conjunto de LSR y nodos MPLS que pertenecen a un mismo dominio de encaminamiento o dominio administrativo. ![](https://i.imgur.com/j05Ovnu.jpg) A los LSR de la frontera se les puede llamar LSR frontera ó LER (Label Edge Router). * **Etiqueta**: Es un campo de longitud fija que se añade a cada paquete IP al ingresar a un dominio MPLS. Contiene información para el reenvío dentro de un dominio MPLS (Según destino, prioridad, QoS, perteneciencia a una VPN). Esta etiqueta será utilizada como un puntero a la tabla de conmutación de etiquetas de cada router MPLS, desde la cual sabremos el siguiente salto del paquete (Interfaz de salida) y el nuevo valor de la etiqueta. Para su codificación hay dos paradigmas: * Mediante un campo o campos ya existentes en las cabeceras de capa 2 ó 3, redefiniendolos para ello. * Mediante una cabecera *Shim Header* Pero, ¿Qué es una cabecera ***Shim Header***? El formato *shim header*, `32 bits` estructurados en cuetro campos es el siguiente: * Etiqueta (`20 bits`) * EXP (`3 bits`): valor experimental. * S (`1 bit`): para indicar si existe un stack de etiquetas. * TTL (`8 bits`): similar al campo de IP. ![](https://i.imgur.com/6l1heMH.jpg) Por lo que se ha podido ver hay dos paradigmas, modificar los campos de una cabecera, o añadir una cabecera intermedia entre capa 2 y 3. ### MPLS: Operativa La operativa de MPLS se puede dividir en tres etapas: * A la **entrada** del dominio MPLS, donde se realizará un analisis de la cabecera IP, se le asignará una FEC, y se mapeará la cabecerá IP a una etiqueta. * **Dentro** del dominio MPLS, donde se encaminará basado unicamente en las etiquetas (Este será un proceso rapido, siendo así el objetivo inicial de MPLS). * A la **salida** del dominio MPLS, donde se eliminará la etiqueta del paquete y se procederá con el reenvio basado en la cabecera IP. ![](https://i.imgur.com/iYTRklM.jpg) Como ya hemos dicho antes todos los nodos MPLS tienen una tabla donde donde consultan las etiquetas que deben poner, conmutar o quitar. Estas tablas se llaman **LFIB** (**L**abel **F**orward **I**nformation **B**ase). O para nosotros, *tabla de conmutación de etiquetas*. Cada router MPLS gestiona su propia tabla. Cada entrada de la LFIB tiene para cada FEC: * Una etiqueta de entrada, la cual es seleccionada por el propio nodo. * Etiqueta de salida, notificada por un vecino **downstream**. * Siguiente salto e interfaz por la cual va a salir el paquete. ![](https://i.imgur.com/yuCaYMF.jpg) Como curiosidad mencionar que hay un mecanismo de mapping que permite asociar multiples entradas de la LFIB a un misma entiqueta de entrada. Por lo que tendremos distintos LSP por si hubiera un error en nuestra red. Este mecanismo se llama , **Incoming Label Map**. Las etiquetas tienen un sigificado LOCAL, son solo validas para los enlaces que fueron creadas. En cada nodo MPLS, las etiquetas de entrada fueron seleccionadas por el propio nodo para una determinada FEC, en cambio las etiquetas de salida las recibe de otros vecinos (nodos MPLS). Una vez que la distribucción de etiquetas se ha llevado a cabo, la operativa de cada nodo solo se basa en la etiqueta que porta el paquete. Existe una relación entre nodos MPLS, ya le hemos mencionado anteriormente. * Un nodo MPLS puede estar **downstream** o **upstream** respecto a sus nodos vecinos. * Un nodo Upstream etiqueta los paquetes que recibe destinados a las FEC registradas en su LFIB. Cuando ya se han distribuido las etiquetas, se crea una especie de circuito virtual unidireccional a través del dominio MPLS. Esto se denomina **LSP** (**L**abel **S**witched **P**ath). Un LSP está definido por una secuencia de etiquetas y a una o varias FEC. Este estará conformado por un LSR frontera en la entrada del dominio MPLS, `n` nodos MPLS internos (LSR) y un LSR frontera de salida. Estos LSP se establecen gracias a la secuencia de etiquetas que hay en el dominio MPLS, estas a se vez se basan en un FEC, que a su vez se ha creado gracias a un protocolo de routing convencional. ![](https://i.imgur.com/UVe3V3S.jpg) La conformación de un LSP hemos diche que se basa en una secuencia de etiquetas, por lo que la actualización de la LFIB irá implicita también. La creación-actualización de las LFIB se basa en los siguientes procedimientos: * **Asignación de etiquetas** (creación): Nodo downstream crea etiquetas de entrada para las FEC alcanzables a través de si mismo. * **Notificación de etiquetas** (distribución de etiquetas): Permite que nodos MPLS conozcan la/s etiqueta/s de salida asociada/s a cada FEC. Se desarrolla/notifica en sentido opuesto al flujo de datos. Hay dos modos definidos: * * **Modo UD (Unsolicited Downstream)**: nodo downstream anuncia a sus nodos vecinos, por iniciativa propia, sus etiquetas de entrada. * **Modo DoD (Downstream on Demand)**: nodo downstream espera ser preguntado por nodos vecinos upstream en relación a sus etiquetas de entrada. * Por último, la **retención de etiquetas**, en la que hay dos modos definidos: * Modo de retención conservador: Solo se acepta notificación de etiqueta - FEC solo si el nodo que notifica está upstream respecto de él. * Modo de retención liberal: Todas las notificaciones etiqueta - FEC recibidas se aceptan. Ahora que ya hemos repasado la operativa general de MPLS, vamos a ver como se administra o como controlar sus LSP. Hay dos modos de control definidos: * Control LSP independiente (ILC), la asignación/asociación etiqueta-FEC cada nodo lo hace de manera independiente, y este notifica a sus nodos vecinos. * Control LSP ordenado (OLC), la asignación/asociación etiqueta-FEC, se origina en un nodo de egreso del dominio MPLS. Nodos NO de egreso reciben notificación a partir del nodo del próximo salto. | ILC | OLC | | -------- | -------- | | Converge más rápidamente | Permite establecer rutas explícitas | | Algunos nodos pueden conmutar paquetes antes de que el LSP esté totalmente establecido :unamused: |Provee mejores capacidades para la prevención de bucles | | - | Ante cambios de routing reacciona mejor que el control independiente | ![](https://i.imgur.com/5Mk69fY.jpg) #### Encaminamiento en MPLS El encaminamiento en MPLS puede ser: * Encaminamiento IP convencional, Lo determina el protocolo de routing utilizado (Normalmente basado en el trayecto con menor nº de saltos). * Encaminamiento explícito, permite explicitar la ruta para un LSP, correspondiendo o no con la ruta trazada por el routing IP. Es útil para satifascer criterios de QoS, balancear carga en la red y para las VPNs. #### Pila de etiquetas Es un procedimiento para gestionar “túneles” lógicos (enlaces virtuales) con MPLS. Tiene numerosas aplicaciones como para seguridad, interworking, transportar protocolos sobre otros protocolos. Hay que decir tambien los túneles lógicos también se pueden implementar con procedimientos no MPLS. Permite que un paquete porte más de una etiqueta, organizadas en forma de “pila” y anidamiento de etiquetas. En el momento que hay una pila de etiquetas, tendremos que hacer uso del campo “S” de cabecera MPLS indica si el paquete porta o no más de una etiqueta. ![](https://i.imgur.com/LojaDRz.jpg) Pero, ¿qué operaciones se llevan a cabo sobre estas etiquetas?: * Reemplazo de etiqueta (no hay pila de etiquetas) = Conmutación de etiquetas, unicamente se reenvia el paquete con la etiqueta neuva. * Agregado de etiqueta, donde se agrega nueva etiqueta (reemplaza) a la etiqueta de nivel más alto de la pila. * Eliminación de etiqueta, donde el paquete se reenvía en base a la siguiente etiqueta si la hay, sino como paquete IP Como curiosidad, vamos a mencionar un metodo que se usa para mejorar las prestaciones del LSR de egreso. **PHP**, Penultimate Hop Poping. * Procedimiento para mejorar las prestaciones de los LSR de egreso conectados a dominios no MPLS, para evitar doble búsqueda. ( En primera instancia el LSR de egreso iria a su LFIB donde simplemente le indicaría que quitara la etiqueta, si ya se la quitamos en el ultimo salto, eso que nos ahorramos). * Etiqueta especial para PHP, valor 3Indica a la lógica MPLS implicit NULL label. Se utiliza para notificar el modo PHP al nodo del penúltimo salto de un LSP. #### Bucles en MPLS Los LSP pueden construirse haciendo uso de los protocolos de routing IP, que no siempre logran evitar bucles. En MPLS se definen dos tipos de mecanismos para evitar-controlar los bucles: * Mecanismo reactivo: basado en detección de bucles. * Mecanismo preventivo: basado en prevención de bucles. **Detección de bucles**: En segmentos TTL (contextos IP). Si campo TTL de la shim header se decrementa hasta el valor cero, se procede con el descarte del paquete. ![](https://i.imgur.com/qQ29hH6.jpg) **Prevención de bucles**: Mediante determinados mecanismos antes del envío de datos. Añaden más sobrecarga que los mecanismos de detección. Disponibles dos técnicas: “*vector camino*” e “*hilo coloreado*” * **Vector camino**: Lista con direcciones de nodos MPLS por los que pasa un mensaje de control LSP. Cada nodo por donde pasa un mensaje de solicitud de etiqueta añade su dirección. Si un nodo detecta su propia dirección en la “lista” en un mensaje de control recibido Bucle detectado, se impide la formación del LSP y se envía mensaje de error. * **Hilo coloreado**: Cada nodo almacena el “hilo coloreado” de entrada y deja herencia del mismo en la petición de la etiqueta de salida. Si el “hilo coloreado” vuelve sobre sí mismo (nodo por donde antes pasó) Bucle detectado, se impide la formación del LSP y se envía mensaje de error. ![](https://i.imgur.com/KN2WjNZ.jpg) --- ## Aplicaciones de MPLS: VPN de capa 3 Redes privadas virtuales (VPN), hay varios tipos de VPN, punto a punto, de acceso remoto e internas. Nosotros estudiaremos las VPNs punto a punto. Las VPNs punto a punto, son una solución de conectividad, privacidad y servicios propios de redes privadas (contexto limitado) brindados mediante infraestructura de red pública (contexto amplio). Por tanto tendremos una solución de conectividad entre sedes de un cliente (separadas geográficamente) mediante infraestructura pública compartida, percibiéndose como servicios privados. ### MPLS-L3VPN: Introducción VPN de capa 3 con MPLS, es la aplicación de MPLS más utilizada actualmente. Cumple objetivos básicos de toda VPN de manera escalable y simple. * Conectividad * Direccionamiento privado * Privacidad Con ello, nosotros estaremos dotanto de renvío de paquetes IP con tecnología MPLS. Y de un trasnporte “transparente” de paquetes IP-cliente (tráfico de capa 3) mediante paquetes IP-VPN sobre el backbone MPLS del proveedor. Es importante señalar que se requiere de señalización para implementar la lógica VPN, para distribuir la correspondiente información de control entre las entidades involucradas en el servicio VPN (señalización para notificación de direcciones, rutas y etiquetas VPN). * Se hará mediante MP-BGP (Multi Protocol BGP): extensión BGP para distribuir diferentes tipos/familias de direcciones y etiquetas. ![](https://i.imgur.com/HymVPll.jpg) Como se puede apreciar en la figura, son los routers PE los que tienen toda la lógica VPN. La gestión del routing entre sedes de un cliente la lleva el proveedor. Toda la lógica de la VPN está en los routers PE como ya dijimos, y los routers CE interactuan solo con los PE con los que están vinculados. Añadir nuevas sedes solo requiere configurar los CE y PE vinculados, no los de otras sedes. Es importante añadir que A un PE pueden conectarse más de un CE, por tanto, el nº de PE no se incrementa necesariamente con el aumento del nº de sedes por cliente. Cada sede puede ejecutar diferente protocolo de routing, esto es así ya que será el router CE el que le comunique al router PE los destinos alcanzables de su sede. ### MPLS-L3VPN: VRF Las tablas VRF, son tablas para el encaminamiento y reenvío del tráfico relativo a una VPN. Cada VPN requiere una tabla VRF propia, o varias, en cada router PE vinculado. Tantas tablas VRF como routers CE asociados a un router PE vinculado. La tablas VRF pueden considerarse como routers virtuales dentro de un router físico. Pero si hay tantas tablas.. ¿Cómo sabe un PE qué tabla VRF utilizar para tratar un paq. recibido desde un CE local? **Respuesta**: A partir de la interfaz por donde arribe el paquete. Este asocia cada pareja “CE-interfaz del PE” a una tabla VRF diferente, sean interfaces físicas o lógicas. Por lo que las tablas VRF en routers PE, son condición necesaria para soportar espacios de direcciones privadas solapadas. Pero, no garantiza aislamiento de tráfico entre diferentes VPN, si una tabla VRF tiene entrada para un destino de otra VPN se puede violar el aislamiento de tráfico entre diferentes VPN. ¿Como aislamos tráfico entre VPN con tablas VRF? Mediante **Distribución restringida de rutas**. Distribución restringida de rutas mediante: * Un único protocolo de routing en la red del proveedor para transportar todas las rutas VPN. Haremos uso de MP-BGP (Multi Protocol Border Gateway Protocol): extensión del protocolo BGP. * Ejecución de una única instancia del protocolo de routing en cada router PE. * Distribución restringida de la información de routing para alcanzar las diferentes VPN. Las carencias BGP para el transporte de rutas VPN son las siguientes: * Sólo puede distribuir e instalar una ruta por prefijo de dirección. * Problema si hay espacios de direcciones privadas iguales (solapadas) en diferentes VPN. * Solución: direcciones **IP-VPN** (mecanismo para lograr direcciones privadas únicas). ### MPLS-L3VPN: Direcciones IP-VPN Las direcciones IP-VPN son n direcciones privadas únicas aún con solape de direcciones entre diferentes VPN. Estas se basan añadir al prefijo IP un identificador único (**RD**, Route Distinguisher). Para MP-BGP son prefijos diferentes para VPNs que comparten el mismo direccionamiento privado. Unicamente tienen conocimiento de ello los routers PE. Estos las utilizarán para: * Traducción entre rutas IP-cliente (de una VPN particular) y rutas IP-VPN. * Anunciar y notificar/distribuir rutas VPN El **RD** (Route Distinguisher) tiene como objetivo de obtener prefijos-rutas VPN únicos/diferentes aún utilizando iguales direcciones privadas. Estos deben ser únicos sin coordinación entre proveedores. El formato es el siguiente: ![](https://i.imgur.com/LzwrT6o.jpg) ![](https://i.imgur.com/yWvbD8w.jpg) ### MPLS-L3VPN: distribución restringida de rutas La distribución restringida de información de rutas entre routers PE es necesaria para aislar el trafico de distintas VPNs, y flexibilizar las políticas de conectividad entre las sedes de cada VPN. Hay dos procediminetos: * Filtrado de rutas: se puede hacer mediante el atributo “comunidad extendida” de BGP ó mediante el atributo ruta objetivo (**RT**, Route Target). Permite a un router PE conocer las rutas a insertar en cada tabla VRF. Permite asignar una o más RT a la misma ruta, posibilitando diferentes granularidades. * Exportación/importación de rutas VPN con los RT, se lleva a cabo cuando un PE local añade el RT en el momento de exportar una ruta, esta se transporta con MP-BGP a un PE remoto como “ruta IP-VPN”. El PE remoto al recibir notificación de ruta verifica, en términos de RT, si hay correspondencia con su política de importación en sus tablas VRF. * * Si hay correspondencia se extrae el RT y se importa a la tabla VRF la ruta que corresponda (import-RT) ### MPLS-L3VPN: Túneles VPN Mediante asociación de dos elementos: “etiqueta VPN” y “ruta VPN”. PE de ingreso etiqueta el tráfico VPN (etiqueta VPN) y lo reenvía al PE de egreso. PE de egreso demultiplexa el tráfico VPN a partir de la etiqueta VPN que porta y lo reenvía a la sede VPN correspondiente. El establecimiento y mantenimiento de un túnel por cada VPN es escalable sólo si La distribución de información de túneles VPN es automática mediante distribución conjunta de rutas VPN y etiquetas VPN con BGP. Además,