MPLS básico: introducción

Spread the love

Aunque he promocionado este blog como IP/MPLS, la verdad sea dicha, he escrito muy poco sobre switching y nada sobre MPLS. Así que voy a empezar una serie de escritos sobre esos dos temas. En ésta quiero hacer una pequeña contextualización de la importancia de MPLS, de su evolución histórica y su estado actual (hasta donde lo conozco). Disfrútalo y si te parece interesante, compartelo.

MPLS: ¿switching o routing?

Cuando uno está empezando con las redes IP, nuestro primer contacto con MPLS puede resultar bastante extraño, incluso la tecnología nos puede parecer innecesario o truculento por decir lo menos. Para poder conocer su historia tenemos que hablar, obligatoriamente, sobre su principio de funcionamiento.

MPLS significa Multi-protocol label switching y lo primero que se debe notar es que se habla de switching a pesar de que lo configuramos en routers 🙂 En principio, un dispositivo de capa 3, también tiene que hacer capa 2 y 1, es decir, un router también hace switching, sólo que en sus decisiones la información sobre la cual trabaja es IP. Como dispositivo intermedio, un router recibe paquetes, revisa su encabezado de capa 3, compara con la tabla de enrutamiento y conmuta. Conmutar significa mover una trama de una interfaz de ingreso a una de egreso y en ese movimiento, cambiar el encabezado de capa 2 de la trama al formato necesario para que lo reciba el siguiente salto, éste puede ser alcanzable mediante un enlace ethernet u otra tecnología, por ejemplo un enlace serial tipo frame relay o atm, obviamente muy poco comunes hoy en día, pero podría suceder. Lo cierto, es que una vez que una trama pasa de una interfaz a otra el encabezado de capa 2 tiene que cambiar por la naturaleza de la misma (L2 asume que las tecnologías cambian y que los dispositivos se ven directamente). La capa 3, de otro lado, no debería cambiar, dado que define el nodo inicial y final en una perspectiva independiente del medio, de alguna manera incluye la «ubicación» (en la porción de red). Existe una pequeña pugna entre capa 2 y capa 3, dado que antaño, habían múltiples tecnologías de ambas capas que podrían llevar tráfico de un punto a otro. Con el tiempo, IP se ha convertido en una tecnología convergente, es decir, sobre la que se lleva todo tipo de tráfico y hasta otras tecnologías (incluso de capa 2) y ha ganado la batalla sobre las tecnologías de capa 2 dado que éstas solían ser un poco más engorrosas de configurar y más susceptibles a fallos, por ejemplo: un loop de capa 2 tumba la red, mientras que uno de capa 3 generalmente no tumba la red, sólo la pone más lenta o satura enlaces. En éste contexto, a alguien se le ocurrió que sería muy interesante tener una tecnología que tuviera la velocidad del switching pero la confiabilidad e inteligencia del routing y voilá: nació MPLS! Nota: Cisco se adjudica la invención de MPLS con el nombre de tag switching.

y eso: ¿cómo se come, es decir, cómo funciona?

¿Por qué multiprotocol? Porque en su momento buscaba ser independiente de la tecnología de capa 2, por ejemplo, en la literatura de CCNP se habla de dos modos de MPLS: frame-mode y cell-mode, el primero para uso en ethernet y el segundo para uso en ATM.

MPLS se considera una tecnología de capa 2.5 porque crea un encabezado justo después del encabezado de capa 2 y antes del encabezado de capa 3. La otra razón, más conceptual e interesante, de por qué se considera capa 2.5 es porque aunque opera como capa 2, es decir, hace una lectura del encabezado que le indica por qué interfaz salir, en un proceso super rápido, sin embargo, de manera previa, el plano de control usa la tabla de enrutamiento tradicional para conocer la topología y establecer los caminos efectivos en la red. Es como una decisión inteligente y estratégica para que el reenvío de tráfico sea rápido y eficiente, que combina las ventajas de ambas capas.

Volviendo un poco a la actualidad y a nuestros routers/switches ethernet/IP, una vez que un router habilita mpls, aparece una forma completamente diferente de retransmitir el tráfico y el router tiene que mantener una nueva tabla que indica qué acciones requiere el tráfico mpls, es decir, aquel que llega con etiquetas multiprotocolo. El principio de funcionamiento se define aquí: el tráfico puede llegar como paquetes IP puros o etiquetados. Cada paquete IP se puede reenviar directamente usando la tabla de enrutamiento de siempre, pero si un paquete hace parte de un servicio MPLS, entonces éstos entran en procesamiento por MPLS, se les asignan etiquetas y lo procesa sólo la tabla de etiquetas. En el mismo sentido, un paquete podría ser procesado por MPLS en todo el trayecto (cada router) pero en el último o penúltimo router, volver a ser IP puro. Con éste principio, aparecen grandes posibilidades, por ejemplo, que el tráfico siga una ruta preestablecida sin importar qué diga la tabla de enrutamiento (o el protocolo de enrutamiento dinámico de puerta interior -IGP), porque una vez etiquetado, quien define qué camino o ruta sigue un paquete es la etiqueta MPLS, no la dirección IP destino como de costumbre. También aparecen otras posibilidades, por ejemplo, de qué manera meto el tráfico a procesamiento por MPLS entre otros muchos ajustes muy sofisticados que aparecen con ésta nueva tabla de etiquetas.

¿y cómo llegamos hasta acá?

Hay que recordar el contexto en el cual aparece MPLS por primera vez: las redes Ethernet/IP a nivel de transporte metropolitano/carrier estaban un poco en su infancia. En ese momento ocurrían dos cosas: 1) Los grandes routers/switches que aparecían para llevar tráfico Ethernet/IP se inventaban formas de acelerar la conmutación de paquetes, desde ese entonces conocemos el CEF de Cisco, que fue el sucesor de otros dos métodos: process switching y fast-switching, la idea era alinear las tablas de capa 2 con la tabla de enrutamiento de tal manera que los paquetes no tuvieran que consultar la tabla de enrutamiento cada vez. La otra cosa que ocurría era la pregunta de ¿qué hacer con los servicios predominantes de transporte, básicamente, SDH (y sus variantes) y ATM si eran reemplazados por Ethernet/IP?, dado que éstos últimos equipos eran mucho más baratos y relativamente fáciles de instalar que los tradicionales SDH/ATM. Por supuesto, las reglas de negocio tendían a reemplazar los tradicionales por Eth/IP. En ese contexto, un «protocolo» que pudiera transportar servicios SDH/ATM por una red eth/ip transparentemente era un incentivo poderoso para desplegar redes ethernet de gran capacidad sin traumatismos, dado que los servicios legacy se podrían ir migrando paulatinamente a esta nueva red. Esa red la conocemos hoy en día como carrier ethernet y no sólo fue mucho más barata que las alternativas en su momento, sino que tenía la ventaja de ser una tecnología de extremo a extremo (ethernet) que aumentaba su capacidad mucho más rápido que otras tecnologías, MPLS le dió el toque que necesitaba para ser la tecnología de transición y predominante de hoy.

Una última característica de MPLS la hace especialmente útil en entornos de grandes switches: la separación efectiva del plano de control de el de datos y la arquitectura distribuida de los equipos. Los dispositivos carrier son equipos altamente redundantes compuestos por tarjetas de control y tarjetas de línea, que son las que tienen los puertos respectivos. En ésta arquitectura, la CPU es un par de tarjetas que se respaldan en modo activo/pasivo y una serie de tarjetas de línea intercomunicadas por el backplane. Cada tarjeta de línea es una procesadora independiente y diseñada para hacer la transferencia de paquetes lo más rápido posible, es decir, cada una de ellas es un switch en sí misma con su propia CPU y memoria. Recuerden que mpls toma la tabla de enrutamiento y crea la tabla de etiquetas, eso no se hace en tiempo real, se hace según la arquitectura de los servicios, es decir, cuando se configuran, por ende la creación de la tabla de etiquetas ocurre, generalmente, antes de que exista tráfico y ésta tabla de etiquetas se puede bajar a la memoria/cpu de las tarjetas de línea. En conclusión: mpls desacopla el plano de datos de el plano de control y permite que el forwarding se haga mucho más rápido de lo que se haría sin ella sacando provecho de la arquitectura de los equipos. Hay literatura que dice que ese no es un criterio para la adopción de mpls dado que las arquitecturas y capacidades de los dispositivos ha evolucionado mucho al punto de casi eliminar las diferencias de velocidad de un forwarding de capa 3 versus uno de capa 2, pero la característica sigue existiendo, así no sea tan significativa como en sus orígenes.

Servicios MPLS

Actualmente, las redes de datos en general están sufriendo una transformación muy grande y están apareciendo servicios de todo tipo respaldados en mpls y en bgp principalmente, sin embargo, podemos clasificar los servicios básicos de mpls en l2vpn, l3vpn y pseudowire, también conocido como PWE3 por sus siglas en inglés pseudo wire emulation edge to edge. Éstos fueron los servicios que hicieron predominante a mpls, pero siguen estando presentes en todas partes que se use el protocolo, de hecho, siguen siendo un importante objeto de la operación de una red carrier. El Pseudowire es el servicio base que hizo a mpls una tecnología codiciada, pero luego le siguieron las posibilidades de redes L2 ethernet y paralelamente las tablas de enrutamiento privadas o L3VPN.

Un pseudowire es un concepto muy simple: transportar tráfico que ingresa y sale por interfaces no ethernet, es decir, un servicio legacy como un E1/T1 (de la antigua jerarquía SDH/SONET) o un circuito ATM. Éste tráfico ingresa en un formato de L2 diferente a ethernet, pero el router lo convierte en un flujo de paquetes ethernet con etiquetas mpls y crea un túnel de una punta a otra de la red, cuando el tráfico llega al extremo de salida, éste es entregado en su formato original. El efecto es que muchos servicios (de conmutación de circuitos) de baja capacidad (2Mbps) se pueden transportar en una red de conmutación de paquetes transparentemente, sin afectar los dispositivos de los extremos. Ésto aplica para todas las variantes de SDH/SONET y sólo dependen de la existencia de las tarjetas que acepten esas tecnologías, pero al interior de la red todo es ethernet/ip. Para quienes no recuerdan (o no conocieron), SDH es una jerarquía originalmente diseñada para transportar llamadas telefónicas que poco a poco se usó para transportar datos y llegó a ser la red de transporte más popular. Los flujos son permanentes sin importar si llevan tráfico de usuario o no, tanto así que se discute si era una tecnología de capa 2 o capa 1. Yo la considero de capa 2 dado que involucra una trama en forma de tributario. Los canales de baja capacidad se multiplexan y se convierten en canales de mayor capacidad. Las unidades básicas eran DS0 (una llamada de 64Kbps/56Kbps), los E1/T1 (dependiendo de la región del mundo) que se convirtió en una unidad básica de datos y STMs de varias capacidades. Los E1 son 2Mbps y los STM-1 son 155Mbps. Ésta es una tecnología que ya va de salida y no tiene caso hablar de ella acá.

El pseudowire da paso a los servicios ethernet: vll o vpls. Las vll (siglas en inglés de virtual leased line) son servicios punto a punto y las vpls (siglas en inglés de virtual private lan service) son servicios multipunto. La analogía fácil de entender es un switch virtual de cobertura metropolitana o regional. Dicho de otra forma, varios puertos en la red, sin importar dónde se encuentren forman un dominio de capa 2 y los dispositivos que se conecten a él se verán entre sí como si estuvieran conectados al mismo switch, por ende compartirán el mismo segmento de red IP. Nada de lo anterior lo tiene que conocer el carrier, dado que los dispositivos en su red sólo ven las etiquetas mpls. Los switches del proveedor sólo configuran la conectividad entre los puertos, en los cuales el cliente puede conectar lo que quiera y tiene garantía de que los dispositivos se verán entre sí. Éstos últimos servicios son conocidos como l2vpn y se amplía la funcionalidad al descubrimiento dinámico de puntos que pertenezcan al mismo servicio. Las diferencias básicas en implementación y operación las veremos en otra publicación.

Finalmente, puede que muchos lectores conozcan las VRFs o Virtual Routing Forwarding. Éstas son la versión local de una l3vpn, es una tabla de enrutamiento aislada, es como una vlan pero de capa 3, es decir de direcciones IP. La l3vpn es la transmisión de información de control (rutas) por la red del proveedor desde y hacia VRFs. Desde el punto de vista del cliente, una L3VPN es un router virtual, la mecánica es igual que la l2vpn (puertos vinculados a una vpn) la diferencia es que en los puertos se debe configurar un protocolo de enrutamiento cuyas redes aprendidas se comunican transparentemente a los puertos que pertenezcan a la misma vrf según la forma en la cual se establezcan sesiones entre los diferentes routers de borde en la red del proveedor. Como las rutas aprendidas pertenecen a una tabla de enrutamiento privada, no interactúan con el direccionamiento del proveedor, es decir, se podrían repetir redes del proveedor en la red del cliente sin que haya conflictos.

En todos los casos descritos, el principio de funcionamiento está anclado en MPLS. Lo que ocurre cuando se crea un servicio es que se asocian etiquetas al servicio y el tráfico correspondiente es transmitido etiquetado por la red del carrier, es decir, siguiendo las instrucciones en la tabla de etiquetas, no como paquetes IP tradicionales. De los paquetes que hacen parte de un servicio no se consulta el encabezado IP, sólo la etiqueta y ésta determina qué hace el router con él. En éste sentido, decimos que mpls existe en el plano de datos, dado que el tráfico es procesado por las tarjetas de línea sin pasar por la controladora. El plano de control son todos los protocolos que se sincronizan independientemente del tráfico de los usuarios, por ejemplo los IGP como OSPF o ISIS, LDP en el caso de asociación de etiquetas mpls entre routers vecinos, etc.. Éstos plano ya existían antes de MPLS, pero con ésta tecnología se materializa efectivamente la diferencia con la posibilidad de que ambos planos estén desacoplados.

Resumen y siguientes publicaciones





En ésta entrada iniciamos un camino para comprender MPLS y sé que si las leen van a comprender más que en los típicos cursos de unos días en los que les meten teoría y práctica a toda carrera 🙂 Hemos visto el principio de funcionamiento, el contexto histórico y los servicios básicos: pwe3, l2vpn y l3vpn. Les hablé de la importante transformación que está ocurriendo con MPLS, por ejemplo las múltiples aplicaciones sofisticadas de MPLS como son EVPN, VXLAN y lo más sofisticado es Segment-routing que apenas lo estoy conociendo.

El plan a partir de ésta lectura es entrar un poco más en detalle sobre cada servicio y algo de configuración, bien sea en Huawei (lo que más conozco) o en Cisco, incluso podría ser hasta en ALU si hay público interesado. Espero que les haya resultado útil y si les gustó por favor comenten y compartan.

2 comentarios en “MPLS básico: introducción”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.