La Programabilidad de Redes y Automatización. Introducción
¿Qué es la Programabilidad de las Redes?
La Programabilidad de redes es actualmente definido como un conjunto de herramientas prácticas de software para desplegar, verificar, manejar y solucionar problemas de redes. Una red que es programable debe poseer herramientas que permitan implementar dispositivos, funcionalidades, cambio de parámetros con agilidad sin importar si son 1 o 50 dispositivos. De igual modo para la solución de problemas debe dar la posibilidad de recolectar datos de cualquier segmento de red y ejecutar acciones sobre los dispositivos.
Este concepto nace por los beneficios de salvar tiempo, reducir errores humanos, innovación y personalización.
La Necesidad de la Programabilidad de las Redes
Los tiempos donde se configuraban y se administraban los dispositivos uno a uno están desapareciendo. En el nuevo mundo DevOps ambientes de desarrollo de software y de pruebas son construidos y destruidos en minutos gracias a la virtualización. Llevar a producción aplicaciones y actualizaciones ahora se logra de manera ágil y continua. Sin embargo, con las redes no se había visto esta flexibilidad y agilidad.
Un Ingeniero en Sistemas hoy en día es capaz de levantar una infraestructura de servidores funcional para una nueva solución o producto en minutos. Pero no se puede decir lo mismo para un Ingeniero de Redes que necesita configurar la red para soportar este nuevo producto y ofrecerle la calidad de servicio requerida.
Los fabricantes de dispositivos de redes han visto y aceptado esta necesidad. Están adoptando soluciones en diferentes fases para conseguirlo. Han abierto la posibilidad de implementar Programabilidad a las redes con Interfaces Programables de Aplicaciones(API) más robustas.
La comunicación entre las herramientas de softwares y las plataformas de redes se da gracias a que los fabricantes han habilitado mejores interfaces de programación de aplicaciones o API por sus siglas en ingles. Esto permite que las redes y servicios puedan ser programados y desplegadas de una manera más ágil y flexible. Incluso abre la posibilidad de integrarse dentro del mismo engranaje automatizado que construye la infraestructura de servidores.
Entre las plataformas de redes la API REST ha sido una de las mas populares. Por esta razón es importante conocer los fundamentos teóricos y prácticos de esta API.
¿Qué es la Automatización de Redes?
La automatización de redes es el proceso de automatizar la configuración, administración y despliegue de servicios y dispositivos dentro de una red. En otras palabras, consiste en tomar las herramientas desarrolladas para programabilidad de redes y agregarles inteligencia de modo que desarrollen tareas y tomen decisiones por sí solas, sin la intervención de un individuo.
Uno de los grandes retos para quienes trabajamos en las Operaciones de las redes, es que el crecimiento de la red y el incremento de la criticidad de los servicios han empezado a sobrepasar las capacidades de los ingenieros. Abordar las redes de manera manual se está tornando cada vez más difícil. Las exigencias de disminuir el tiempo de implementación y soluciones de problemas llevan a cometer errores de configuración y crear inconsistencias en la red.
¿Cómo se relaciona la Programabilidad de Redes con la Automatización de Redes?
La Programabilidad de Redes y Automatización son dos procesos que trabajan juntos para hacer aún menos requerida la intervención humana en las implementaciones y operaciones. Para visualizar mejor esta cooperación veamos la aplicación en dos casos, uno operacional y otro de implementación sin considerar ninguna plataforma propietaria de automatización y orquestación.
Caso en Operaciones de la Red
Escenario #1
Se da el caso que en un ISP(Internet Service Provider) ocurre un corte de fibra crítico que causa saturación de tráfico en un enlace del Backbone de la red. Las alarmas del corte y la saturación de tráfico llegan al Centro de Operaciones de la Red(NOC).
En un ambiente con 0 aplicación de Programabilidad de Redes y Automatización probablemente veamos que los ingenieros tomen las siguientes acciones:
- Validar que es un corte de fibra real conectándose a los dispositivos, verificando los logs y los niveles de potencia óptica en los extremos.
- Reportar y asignar un ticket al equipo de mantenimiento de la fibra para que procedan con la investigación del caso y la reparación de la fibra.
- Identificar otras rutas por donde balancear el tráfico.
- Diseñar túneles de ingeniería de tráfico para desviar parte del tráfico por rutas con poca utilización.
- Conectarse a los dispositivos y configurar los túneles.
- Monitorear y mantenerse ajustando la configuración de los túneles hasta eliminar la saturación.
Programabilidad de Redes aplicada a la Operación
La programabilidad de redes que se puede aplicar a este caso es:
- Desarrollar en Python una herramienta que dado la IP de los routers y las interfaces valide si existe un corte de fibra.
- Desarrollar una herramienta que dado las IP de los dispositivos esta pueda crear túneles de ingeniería de tráfico explícitamente por los saltos indicados.
Automatización de Redes aplicada a la Operación
La automatización de redes se puede aplicar de la siguiente forma:
- Con las alarmas recibidas se dispara un proceso que se conecta a los routersy valida el corte de fibra. Una vez validado se crea un ticket automático al equipo de mantenimiento de la fibra.
- Otro proceso detecta la saturación, calcula todas las posibles rutas y automáticamente crea túneles para el balanceo del tráfico.
- Una vez reparada la fibra y limpiada las alarmas se inicia un proceso de rollback o normalización de la red.
Caso de Implementación de Dispositivos en la Red
Escenario #1
Tenemos un proyecto donde se requiere expandir la red móvil de un proveedor de servicios a 100 nuevas localidades. Para el ingeniero de redes esto requiere de configurar e implementar 100 routers. Las tareas más comunes y repetitivas para lograr el objetivo son:
- Reservar direccionamiento de IPs para la gestión de los dispositivos y las adyacencias en el IPAM.
- Obtener el listado de los nombres de las 100 localidades para documentación en el banner del dispositivo, las opciones en SNMP, entre otras.
- Preparar el archivo de configuración para los 100 routers utilizando una plantilla.
- Configurar los routers cargando el archivo de configuración.
- Configuración de las adyacencias con los routers vecinos que ya están en producción.
- Agregar los dispositivos en los gestores de administración y monitoreo.
En una cultura con cero aplicación de Programabilidad y Automatización cada una estas tareas se ejecutarían manualmente. Tomaría largos meses dejar esto listo con un equipo 3 de ingenieros.
Programabilidad de Redes aplicada al proyecto
Este proyecto es un caso común en la que se puede aplicar Programabilidad de Redes. La aplicación se haría desarrollando herramientas que:
- Se conecten al IPAM, realicen la reservación de las IPs de los 100 dispositivos y extraigan dicha información.
- Extraiga los nombres de las 100 localidades del Sistema de documentación de Sitios.
- Construya la configuración de 100 dispositivos.
- Dada las IP de los dispositivos y las interfaces se conecten a estos para configurar las adyacencias.
- Se conecte a las plataformas de administración y monitoreo para agregar los 100 dispositivos.
Es lógico pensar que estos desarrollos ayudan bastante a ahorrar tiempo y a disminuir los errores humanos. Sin embargo aún hay mucha intervención humana y requiere tiempo combinar lo obtenido con cada herramienta. Aquí es donde concluimos que debemos aplicar Automatización de Redes.
Automatización de Redes aplicada al proyecto
En este proyecto se puede aplicar Automatización de la siguiente forma:
- En un sistema de aprovisionamiento se introducen las 100 localidades a implementar. Este sistema automáticamente dispara múltiples procesos que realizan la reservación de las IPs y generarían la configuración para luego guardarlas en una plataforma de gestión de configuraciones.
- Aprovechando la funcionalidad de Zero Touch Provisioning(ZTP) que viene en los routers hoy en día, se llevan masivamente los routers desde el almacén hasta su localidades. Al conectar estos routers a sus vecinos automáticamente se inicia el proceso de ZTP para la autoconfiguración del dispositivo.
En este nivel de automatización solo se requiere de la intervención humana para ingresar al sistema de aprovisionamiento las 100 localidades y el trabajo físico de llevar los dispositivos a las localidades y conectarlos con sus vecinos.
Beneficios de la programabilidad de la redes y automatización
Hemos venido definiendo los conceptos de programabilidad y automatización y al mismo tiempo hemos mencionado varios beneficios. Veamos a continuación con más enfoque algunos otros beneficios:
Beneficios desde el punto de vista del Negocio
- Disminución del tiempo de espera para el aprovisionamiento de nuevos servicios.
- Permitiría habilitar un servicio de ancho de banda calendarizado. Permitiendo a los clientes autoservirse y solicitar incrementos de ancho de banda en un horarios especificos.
Beneficios desde el punto de vista del ingeniero de redes
- Para los ingenieros como tal un primer beneficio es la reducción del tiempo que toma en implementar cambios en la red.
- Un segundo beneficio es que reducen los tiempos de downtime de la red. Hay estudios que muestran que la mitad de las salidas de la red se de deben a malas configuraciones, hechas manualmente.
- Mantiene la red consistente y estandarizada.
La Programabilidad de las Redes y Automatización No es Nuevo
La programabilidad y la automatización aunque ha tomado popoularidad en los últimos años, no son conceptos nuevos. Los ingenieros han utilizado la línea de comandos para programar. A lo largo del tiempo han existido herramientas como TCL(Tool Command Language) Scripting interpretan y arrojan comandos en la línea de comandos(CLI) para automatizar tareas administrativas. Cisco por mucho tiempo ha ofrecido su herramienta Cisco EEM(Embedded Event Manager) integrado en el sistema operativo Cisco IOS. Con esta herramienta es posible automatizar acciones en base a eventos que ocurran en el dispositivo. También disparar acciones calendarizadas.
De cierta forma la programabilidad y automatización de redes ha existido. Sin embargo, la diferencia con el antes y el ahora es el nivel de integración entre plataformas al que se quiere llegar. Se desea llegar un nivel de orquestación completo en el aprovisionamiento de servicios o en el manejo de la red. Una orquestación independiente al fabricante y que utilice protocolos e interfaces programabables estandares.
La estrategia en estos tiempos es la de proveer plataformas que provean servicios ágiles habilitando programación en la red. Se necesita que no solamente los servidores sean ágiles sino que también la red sea ágil en su construcción, en el aprovisionamiento y en la solución de problemas.
¿Cómo nos introducimos de manera práctica en este mundo?
Programabilidad de Redes vía CLI
Diría que guiándonos por las tendencias de la industria. Aunque tu trabajo no se invierta en entrenarte para la automatización, empieza por ti mismo, facilitate a ti mismo el trabajo con la automatización.
He descubierto que para los que aún operamos las redes a través del CLI, SecureCRT nos brinda una oportunidad excelente para introducirnos con la Programabilidad y Automatización de redes. Las tareas de configuración o verificación rutinarias se pueden programar utilizando potentes capacidades de «Scripting» que este trae. SecureCRT contiene un intérprete de Python incorporado, lo que significa que los scripts de Python se pueden ejecutar desde SecureCRT sin tener que instalar software adicional.
Recursos en la Comunidad
Además del contenido que encontrarás cada semana en este Blog, en la comunidad existen diferentes recursos en la que podemos aprender sobre Programabilidad y Automatización de Redes. A continuación comparto algunos de los que he utilizado y recomiendo.