Virtualización, Programabilidad y Automatización en Redes de Comunicaciones

Stechs
5 min readAug 27, 2021

--

En pocas palabras, el título se refiere a la posibilidad de descargar parte del trabajo de la administración y operación de una red de comunicaciones de personas a máquinas que operan automáticamente, a la vez que la mayor cantidad posible de funciones de esta red se llevan a la “nube” (privada y/o pública) y comienzan a basarse en software y hardware de propósito general. El objetivo es ahorrar costos, manteniendo o aumentando la calidad del servicio, reduciendo las fuentes principales de errores y dándole a las personas la posibilidad de ocuparse de tareas de mayor valor como el diseño y la configuración de la “programación” de la red.

Hace mas de 30 años que el trabajo de administración de la red se lleva a cabo, principalmente, utilizando la interfaz de línea de comandos (CLI), protocolos como SMNP y plataformas propietarias, que sufren varias limitaciones muy importantes al momento de escalar y soportar necesidades como las que tienen las redes modernas, principalmente, porque fueron diseñados para interactuar con humanos. No solo los distintos fabricantes lo hacen de formas diferentes sino que algunas veces las distintas plataformas del mismo fabricante también son diferentes y no compatibles entre si, en donde pueden cambiar las estructuras de datos e incluso la arquitectura o la
organización de las herramientas. Para poder llevar a cabo lo que propone el concepto de automatización, que es delegar a una máquina parte de la administración de la red, es necesario que los servicios de red, y las funciones en las que estos se descomponen, los protocolos y las tecnologías utilizada sean compatibles.

A medida que el sistema completo se va haciendo mas homogéneo, utilizando modelos comunes de datos, representaciones lógicas compatibles, interfaces o APIs conocidas, sistemas de control similares, aparece un concepto muy importante para los operadores de redes de comunicaciones (CSP): la posibilidad de des-agregar los sistemas en sus componentes con la posibilidad de utilizar fabricantes diferentes para algunos de ellos. Si bien es un concepto muy atractivo aún hay mucho trabajo por delante para asegurar la inter-operabilidad entre componentes de fabricantes diferentes.
Sin embargo, al día de hoy existen varios ejemplos en donde es posible hacerlo, al menos parcialmente.

Hay que tener en cuenta que el uso de hardware y software de uso general no es adecuado para todas las plataformas, o mejor dicho, para todas las funciones de red, algunas requieren niveles de performance que solo se pueden obtener usando hardware de propósito especial o chips diseñados
ad hoc, especialmente las del llamado plano de datos o plano de usuario. Pero aún así se pueden diseñar para ser programables en el sentido nombrado antes y basarse en APIs estándar (o conocidas) para simplificar la interacción con otros componentes del sistema.

La programación, los sistemas operativos y la tecnología detrás de la programabilidad de la red no son nuevas, aunque si lo son la posibilidad de tener interfaces programables y operación automática en las plataformas de red. Esto constituye un ecosistema prácticamente nuevo y es un desafío
considerable integrar tareas humanas con otras automatizadas. Acá es en donde aparecen conceptos como tiempo de ejecución en donde actúan personas y máquinas colaborativa-mente y el tiempo de diseño en donde se definen esos automatismos, se crea el “programa” de la red y se programa como debe responder ante situaciones normales de operación, en caso de fallas e incluso auto repararse cuando hay daños. Es importante diferenciar el concepto de programabilidad, que es lo que le da a la red la capacidad de ser programada y la automatización, que utiliza a la programabilidad para que
las plataformas de red puedan tomar decisiones autónomas.

Durante los últimos años la industria ha realizado un enorme esfuerzo para desarrollar nuevas tecnologías y arquitecturas para que estas iniciativas sean posibles. Ejemplos de esto son: las redes definidas por software (SDN) que intentan unificar el plano de control y sus versiones mas modernas que tratan de operar en base a intensiones, la virtualización de funciones de red (NFV), la nube y los conceptos de “listo para la nube” Cloud-Ready) o “nativo para la nube” (Cloud-Native) las tecnologías basadas en contenedores de software (inicialmente Docker y por estos tiempos Kubernetes o K8s). Estos últimos impulsan el concepto de nube y de virtualización, en donde los principales exponentes son las funciones virtuales de red (VNF), que llevan el software a máquinas virtuales, que pueden correr en la nube y en los últimos tiempos las funciones basadas en contenedores (CNF), que permiten arquitecturas mas sencillas de desarrollar y mantener.

Como surge del punto anterior la tendencia actual es utilizar muchas de las herramientas que, desde hace años, se utilizan en los sistemas de IT, como lenguajes de programación estándares e interfaces con las aplicaciones (API) conocidas. Al utilizar herramientas comunes en el desarrollo de software
para la administración de redes es posible aprovechar metodologías sumamente eficientes para estas tareas como las basadas en los conceptos del agilismo, DevOps, Integración y delivery continúo (CI/CD), ambientes, técnicas de testing y muchas otras.

Cuando se habla de automatización, normalmente, se refiere a darle autonomía o cierta inteligencia a algunos elementos de red relacionados entre ellos. Cuando se quiere organizar a los diferentes componentes de un dominio de red (pueden ser geográficos, como una región, un tipo de servicio, una tecnología) entre sí, es cuando aparece el concepto de orquestación que funciona igual que en la música: el compositor escribe la música para varios instrumentos y el director trata de organizar la ejecución para que suene una sola canción, la orquestación de dominios. Con el tiempo también aparecerán los orquestadores de servicios que permitirán una visión unificada de la red y en ese momento será posible crear nuevos productos a partir de un catálogo de servicios disponibles que se crearán en el momento que sean necesarios. Esto dará un nivel de flexibilidad, velocidad y confiabilidad nunca vistos, o al menos esa es la intensión de estas iniciativas, pero ese ya es tema de
otro artículo.

Hoy casi todas las plataformas existentes en operación son clásicas, en muchos casos operadas desde la línea de comandos o utilizando plataformas de gestión propietarias, pero gracias a una multitud de herramientas, ya disponibles, es posible automatizar parcialmente algunas de sus características, tanto de configuración como de operación. Acá es en donde el mundo clásico comienza a ver conceptos de autonomía, un ejemplo es Ansible (pensado originalmente para el mundo de los servidores) que permite configurar y administrar plataformas de red gracias a la posibilidad de representar una enorme cantidad de fabricantes por medio de modelos unificados escritos en un lenguaje de markup llamado YAML. Esto sumado a una multitud de lenguajes, protocolos, modelos de red, modelos de datos, están haciendo posible dar los primeros pasos en el apasionante mundo de la automatización y la virtualización de las redes de comunicaciones: ¡Si! las
que tenemos y operamos hoy.

Algunos párrafos parcialmente basados en la introducción del libro Network Programmability and Automation Fundamentals, Cisco Press, Junio 2021.

Autor: Gabriel Carro (gcarro@stechs.io)

--

--

Stechs
Stechs

Written by Stechs

Stechs provides platforms and services that allow Service Providers to deliver automated Media & Communications services and improve their CX.

No responses yet