Thursday, January 2, 2020

The best of both worlds - Network Programmability


I took a trip down memory lane today. I am back to work this morning and am feeling energized to start the new year. I started the day off with a Day 1 workout video of a 30-day yoga challenge. And now that I am at work, I feel mentally sharp and ready to learn something new.

I opened the book Network Programmability with YANG, and started leafing through the pages of Chapter 1. This is an introduction into network management. It highlights how network management has changed and why we should care. It sets the stage for the networking concepts of today, by talking about what it traditionally has been over the years. And of course, this set my ever-imaginative mind off into dream-mode, and I went back all the way to my very first foray into the world of engineering.

It was the beginning of the year 2002, a couple of, a few just about eighteen years ago. I started my first internship at a research facility as part of my final year engineering project. The project was about a software defined radio, a relatively novel concept at the time. A software defined radio is a system in which components that were traditionally implemented in hardware are implemented on an embedded system. An embedded system is a combination of hardware and software, either with fixed capabilities or with programmable elements. My project focused on a digital receiver, more specifically the HSP50210 demodulator. My memory is hazy about the details, but I remember that it was a time when I first made a presentation to a team of scientists. The presentation was on a manual slide projector, no less, and I recall the lead scientist questioning me and being impressed when I answered his question correctly (those were the days when student interns used to be tested, and when feeling intimidated was the norm).

By the end of the year, I had started my first job and it was in the embedded systems group of a big software services company. The project I worked on was a video editing system and involved very exciting elements of programming video accelerators and editors, with operating system knowledge being a key strength. The very next project I worked on was the software of a GSM/GPRS based cell phone. This made me realize that I was always working on an intersection of technologies – with programmability, embedded systems and digital signal processing being the key areas. It was no surprise therefore, when I chose DSP, computer networking, statistical signal processing and sensor networks as the core areas of my Master’s course work. My next officially paid research project was on tracking algorithms for a satellite communication system.

Fast forward a few years into my professional career. I am now working in the computer networking industry. My focus is on an innovative routing protocol and software-defined access in networks. This was around the time that Software Defined Networking came in to network engineering in a big way, and led us to develop and market new technologies that would keep us moving with the times. Following this, I worked on a management and orchestration platform which gave me a view into network management as a whole. It taught me about the intersection between networks and servers, and on the functions of network engineers and compute engineers. The lines between the two are now blurry, with network automation being handled under the umbrella of DevOps. However, working on this project gave me a good baseline knowledge of the infrastructure we have in place for network management. The platform I worked on was largely based on SNMP with a few elements of network programmability, and I was hungry for more. 

My latest interest is in the world of network programmability. I spent a few months haphazardly looking for reading material, and getting lost in the sea of information there is out there on the topic.  I volunteered for a project at work on this subject, and spent a few weeks feverishly putting it together with my superficial knowledge. This renewed my interest to really get back to the basics and to understand the various concepts. My husband, in a very well-timed gesture, kindly ordered me the book I am currently reading on Amazon. I breathed a sign of relief to have a concrete starting point, and one where I could also mark my progress. I happen to know the author of the book, am reassured to have several resources available for support and knowledge sharing.

While reading this book, I came across a sentence that struck a chord with me. “Software engineers do not really understand networking, and networking engineers do not necessarily understand software, so combining forces to get the best out of both worlds makes sense”. Network programmability is in fact that bridge between the worlds. I am coming at it from the networking engineer angle, which means that I understand networking protocols, and their deployment and configuration in overall network design. However I am not proficient in software development itself, nor do I desire to be a full-time programmer. I do want to be able to script my own automated network-related tasks, and to be able to modify scripts on the fly. I want to understand what it takes to develop a new feature, and to be able to script it myself. What I am looking for is that middle ground, that intersection of technologies that will take my strengths to a new level and make them more relevant. I would like to become an effective translator between networking needs and programmable capabilities, and to bring in a more holistic perspective to a problem.

Here I am, officially beginning my journey into network programmability with my latest resource, “Network Programmability and YANG”. Over the months, I hope to gain knowledge into scripting, configuration protocols, data models, programming languages, and more. The goal for the month of January is as follows:

  • Read chapters 1 through 4 of the book (Intro, Data-driven model management, YANG, and NETCONF, RESTCONF and gNMI)
  • Sign up for the Coursera course “Intro to Python Programming”
  • Sign up on GitHub and start familiarizing myself with what is out there
  • Subscribe to technical blogs on the topic and start participating in discussions (note to self: this serves my other goal for the year, expressing myself without waiting to be an expert on the topic)
  • Make a learning map for myself with all the topics I plan to learn and corresponding resources


I’m very happy to realize that this is a coming together of all my worlds. I’ve always been about balance and moderation. The idea of dichotomy resolution excites me: finding a unique solution that brings seemingly opposing ideas together in harmony. I am not even sure if my work will allow me the opportunity to take on this topic, or how the next few weeks will go, really. But I do believe this is something up my alley and I would like to give it a good shot. If not for anything else, the knowledge is certainly going to be empowering, and nobody can take that away from me.

No comments:

Pinnacles National Park

 After living in California for over a decade, I recently went to Pinnacles National Park for the first time. Without knowing what to expect...