Otro episodio en nuestra serie de artículos en los que echamos un vistazo bajo el capó de Cisco NSO. Esta vez, exploraremos más a fondo cómo Cisco NSO gestiona la configuración y cómo el sistema puede ayudar a asegurar redes, facilitar la resolución de problemas y simplificar la administración de servicios. NSO logra esto mediante el uso de contadores de referencias y un algoritmo propietario de Cisco llamado FASTMAP.
¿Qué son FASTMAP y los Contadores de Referencias?
Comencemos con el más sencillo de los dos: los contadores de referencias, o "reference counting", un concepto que todos los programadores de Python y Java deberían conocer bien, así como cualquier persona que programe en lenguajes que usan "garbage collection" para gestionar variables y memoria automáticamente.
NSO tiene funciones internas para el mismo tipo de gestión, pero aplicadas a la configuración generada por los servicios. Sin embargo, es importante destacar que tanto los contadores de referencias como FASTMAP trabajan con el modelo YANG de la configuración que los NED y el Device Manager envían y reciben de los dispositivos, en lugar de la configuración directamente en los equipos.
Cuando se crea un servicio en Cisco NSO y este genera una configuración que se envía a los dispositivos, cada parte de dicha configuración recibe un contador de referencias que rastrea cuántos servicios la utilizan, ya que puede ser más de uno. Un ejemplo es una lista de acceso que se reutiliza en todos los servicios de un tipo específico. La configuración también recibe un puntero de referencia de regreso al servicio o servicios en cuestión. Con este puntero de retorno, llamado "backpointer", podemos responder una pregunta clave: ¿Cómo podemos saber qué servicios se verán afectados si modificamos una parte específica de la configuración en un dispositivo?
¿Qué es FASTMAP?
Además de crear contadores de referencias y punteros, FASTMAP es el algoritmo que asegura que no necesitemos realizar pasos adicionales para gestionar la configuración de los servicios a lo largo de su ciclo de vida, incluyendo actualizaciones y eliminaciones.
Cuando se crea un servicio, NSO guarda un "reverse diff" para la configuración de ese servicio, que contiene los pasos necesarios para eliminar esa instancia del servicio. Si el servicio se actualiza, NSO primero usa este diff para eliminar el servicio (sin modificar el dispositivo) y luego ejecuta nuevamente el código de creación del servicio con los cambios aplicados. La diferencia entre esta nueva configuración y la existente en el dispositivo representa las modificaciones que deben realizarse. Finalmente, esta lista de cambios se envía al NED correspondiente, que actualiza la configuración del dispositivo.

Volviendo a la Realidad
Entonces, ¿qué significa esto en términos prácticos para una empresa que utiliza Cisco NSO? Veamos un ejemplo.
En este escenario, ya hemos implementado Cisco NSO y gestionamos nuestros dispositivos y servicios a través de él. Sin embargo, un técnico ha iniciado sesión directamente en un dispositivo y ha realizado un cambio en la configuración. En este caso, Cisco NSO notificará que el dispositivo ya no está sincronizado, ya que su configuración no coincide con la esperada.
Comenzamos con el caso más sencillo: el técnico cometió un error y el cambio debería haberse realizado a través del servicio en NSO. En este caso, instruimos a Cisco NSO para que envíe su versión de la configuración y sobrescriba el cambio. Luego, si es necesario, actualizamos los parámetros del servicio y desplegamos la actualización en la red a través de NSO. Finalmente, el técnico recibe capacitación sobre lo que debería haberse hecho en su lugar.
Pero, ¿qué sucede si el técnico tenía razón? Si el servicio no funciona correctamente y el cambio realizado no está disponible como un parámetro en NSO, en su lugar, instruimos a NSO para que sincronice su vista con el dispositivo. La configuración importada no coincidirá con la esperada por el servicio, por lo que Cisco NSO puede utilizar el backpointer para identificar qué servicios se ven afectados.
Por ejemplo, si se actualiza una lista de acceso utilizada por varios servicios, podríamos haber solucionado un problema en un servicio, pero haber causado problemas en otros cuatro.
Ahora debemos analizar el problema subyacente y su solución. Quizás necesitemos actualizar el servicio para incluir este cambio y desplegarlo en todas las instancias de este servicio en todos nuestros dispositivos. Alternativamente, podríamos crear una versión 2 del servicio en la que los usuarios puedan elegir si esta funcionalidad debe estar activada o desactivada. Los clientes que deseen el cambio pueden migrar a la nueva versión, mientras que aquellos que no lo quieran pueden seguir utilizando la versión anterior.
Pensando en la Configuración como Servicios
Esta visión basada en servicios no se limita a los servicios entregados a clientes externos. La misma lógica y gestión de configuración se aplican, por ejemplo, a las configuraciones AAA, un servicio que todos los dispositivos deben tener en el momento en que se implementan. Esto nos permite aplicarlo automáticamente mientras nos aseguramos de que se nos notifique si alguien lo modifica, para poder restaurarlo a su estado esperado. Sin embargo, también es posible que deba actualizarse o modificarse ocasionalmente.
El mismo principio se aplica a todas las demás partes de la configuración "estándar" que se implementan en los dispositivos, desde los filtros CoPP hasta el banner de autenticación que aparece al iniciar sesión.
Pensar en toda la configuración en términos de servicios—donde cada configuración en un dispositivo proviene y se gestiona como un servicio—puede representar un cambio significativo para una empresa. Esto es especialmente cierto para organizaciones acostumbradas a realizar cambios manuales en la configuración hasta que desaparecen los síntomas (aunque probablemente sin solucionar el problema subyacente). Del mismo modo, cambiar la mentalidad para gestionar el ciclo de vida completo de un servicio y todas sus instancias de manera industrializada, en lugar de "reparar" constantemente los mismos problemas una y otra vez, puede ser un desafío.
¿Necesitas ayuda para comenzar con la automatización de redes y Cisco NSO?
Ya sea que necesites ayuda con análisis, implementación o soporte a largo plazo, nuestros consultores experimentados en Cisco NSO pueden guiarte en cada paso del proceso. Con el soporte adecuado, puedes maximizar los beneficios de la automatización de redes, reducir costos y mejorar la eficiencia general de tu red.
¡Contáctanos hoy para descubrir cómo podemos ayudar a tu empresa a tener éxito con Cisco NSO!
Comments