¡Hola comunidad de The House of Routing!

Estoy muy emocionado de escribir este post, no solo por ser el primero de muchos que escribiré en los próximos años sobre SDN y Programabilidad de la Red, sino también porque es un post que te invitará a empezar "con el pie derecho" en el mundo de la Automatización, las API y el Intent-Based Network.

Comienzo con mencionarte, la forma o ruta como he considerado proponerte el estudio de SDN y Programabilidad de la red. ¡Espero sea de tu agrado! .

En este mi primer post, más que explicar qué es una API o que es SDN, muy humildemente bajo mi optica de enseñanza-aprendizaje, escribiré y propongo un "Marco de Estudio", con una visión 360 de como abordar el estudio de la Programabilidad de la Red y de como:

  • "Ingeniero de Red, que quizas nunca ha echado una línea de código, puede empezar a Automatizar una Red con Python, API's y herramientas de Automatización".
Cisco Live 2018 | Hank Preston y Jesús Espinoza en DevNet ZoneCisco Live 2018 | Hank Preston y Jesús Espinoza en DevNet Zone

Bueno, en primer lugar, vamos a tomar la ruta filosófica del Señor MIYAGI , el señor japones, de la película Karate Kid (1.984)

El Sr. Miyagi siempre le decía a su estudiante de Karate, Daniel Larusso, "Encerar, Pulir", "Encerar, Pulir", "Encerar, Pulir". Pero Daniel, siempre quería ir más rápido y quería pelear, porque ya se sabía algunos golpes de Karate. ¿Te suena parecido?

Si has intentando pelear contra Python, las API, Ansible, SDN, RESTCONF, YANG, YAML, BGP-LS, APIC-EM, etc... estoy seguro que me entiendes, muy bien, lo que quiero decir.

Mi recomendación para vencer ese mal aprroach es sencillo: ¡Permitete APRENDER las bases de la Programabilidad de Red, paso a paso y practicando desde la base!.

Hazlo todos los día y ve incrementando la complejidad de los ejercicios.

Practíca, Practíca y más Practíca.... y en menos tiempo de lo que te imaginas, serás todo un Cinta Negra, listo para Automatizar toda tu red.

Recuerda que la "Repetición es la Madre de la Especialización"

Te digo esto, porque supongo que como ingeniero de red especialista en OSPF y BGP, Switching y QoS, crees poder tomar a Ansible por los cachos y hacer lo que quieres. ¡Pues, a menos que ya seas un programador con el nivel de ingeniería de red correcto, no podrás avanzar!. ¡Es como querer correr 40 kilómetros y nunca has hecho ni siquiera 5K!

Y aunque empieces por allí, es decir, por las herramientas de automatización, mas temprano que tarde, te verás bloqueado e impedido en avanzar, por una simple razón... Carecerás de los conocimientos que pudiste haber adquirido con los ejercicios " Encerar, Pulir", "Encerar, Pulir".

Si hasta aquí, estas de acuerdo conmigo, ¡¡¡Excelente!!!

Te invito, entonces, a dar el primer paso, definiendo la "ruta de aprendizaje", la cuál te permitirá en poco tiempo automatizar tus equipos Cisco con Python, y te ubicará en la ruta correcta para automatizar tu red.

También, te invito a compartir este post con cualquier amigo que consideres, sea de utilidad esta ruta que ofrezco aquí, que aunque sé no es la única, es una lista de aprendizaje "curada", y las más exponencial en cuanto a aprendizaje, dominio y expansión del conocimiento en Programabilidad de la Red que he podido identificar en los últimos 4 años. Principalmente, porque cuando buscas infromación sobre Programabilidad de la red, vez todo muy disperso y cada quien se enfoca en enseñar una tecnología específica y no un contexto de aprendizaje que es lo que traigo en este post.

Entoces, empiezo deciendote como dar el primer paso, según mi propuesta de aprendizaje.

RECUERDA: Aquí no explico los conceptos, lo que estoy brindando es una ruta de formación end to end para programabilidad de la red.

En primer lugar aprendamos 2 conceptos fundamentales e inter-dependientes:

  1. SDN o Software Defined Networking: Según la Open Network Foundation, SDN es la separación física del plano de control de el Plano de Envio y donde el Control Plan Controla varios Dispositivos
  2. Programabilidad de la Red: ¡En realidad, es muchas cosas a la vez!. Creo que la mejor manera de hablar de Programabildad de la Red, es la de identificar capacidad que tienen los dispositivos de hoy en día para ser configurados de forma centralizada desde un controlador, haciendo uso de varios protocoloso y sistemas de modelado de gestión y de telemetría, permitiendo a su vez, la Automatización y la Recolección de Datos ( Intent-Based Network). También hablamos de modelado de la red y de nuevos protocolos para gestionar la red, tales como RESTCONF, NETCONF, YANG, YAML, etc. El objetivo fundamental, de la Programabilidad de la Red, es el Service Delivery optimizado. ( Hablaré de esto mucho más en mi curso "Fundamentos de Programabildad de la Red").

El siguiente paso, es involucrarse, paso a paso, en activiades técnicas y se puede dividir en 4 grandes grupos:

1) Interoperabilidad: Incluye todo el Concepto de API's y REST API's. Uso e implementación de Postman, para el consumo o solicitud de información en los dispositivos y aplicaciones. En la siguiente imagen vemos una URI o Uniform Resource Identifier, el cual permite a una herramienta como POSTMAN, ubicar el Recurso u Objeto que quiere consultar vía API. Es básicamente, una consulta HTTP pero para ser consumida por una API y no por un Browser.


2) Controladores: Estudio de los Controladores existentes en el mercado, tales como OpenDayLight, ONF Controller, Cisco APIC, entre otros. Estos temas son largos, pero requieren del entendimiento de lo que hace cada uno y que brinda.


3) Sistemas Operativos y Lenguajes de Programación: Aunque puedes trabajar en tu ambiente Windows o Mac, es ampliamente recomendable que cuentes con una sólida base de LINUX. Igualmente, es necesario que puedas trabajar con Python. Muchos dicen que no es necesario que programes en el lenguaje, lo cual es cierto. ¡No tienes que crear aplicaciones en Python!. Sin embargo, para que puedas ser sobresaliente en la Programabilidad de la Red, te recomiendo ampliamente que hagas cursos de Python, como si fueses un programador, ya que a final de cuentas, te va a tocar hacer loops, manejar listas, tipos de datos, tuplas, librerías y todos los fundamentos de programación en Python, serán necesarios cuando empieces a automatizar la red.


4) Herramientas de Automatización: Ansible, es hoy en día la herramienta de automatización más recomendada. También tienes Puppet, Chef y SaltStack. Aunque puedes utilizar cualquiera de ellas, la recomendación es hacerlo con Ansible, ya que ofrece acceso al equipo vía SSH y no requiere Agentes instalados en el equipo.


Existen, herramientas que también son parte del ToolKit que debes tener para hacer Programabilidad de la Red y entre ellas está Git.

Puedes abirte una cuenta en GitHub o en Git-scm de forma gratuita y empezar a subir, descargar, clonar y hacer commit de tu código y el de otros programadores.

Para finalizar, te comento que una vez, hayas pasado por esta propuesta de aprendizaje, estarás listo para ir a escenarios más amplios en la gestión de datos vía API´s, como es el desarrollo de aplicaciones IoT en ambientes Cisco. Recuerda que puedes avanzar en las prácticas de programabilidad de la red con cursos y sandboxes gratuitos en el portal de DevNet. Te recomiendo que crees tu cuenta en este portal y des inicio a tu transformación en un Ingeniero de Red Hibrido


Saludos y éxito

Jesus Espinoza

The House of Routing