I recently wrote about the need for network engineers to stop specializing and get started with software-defined...
networking. I wanted to expound on the getting started part, especially when it comes to using Python for SDN.
We're moving into interesting times when it comes to being a network engineer. We're sitting where systems engineers were when virtualization came around. We're fortunate enough though that we have two areas to start looking at: software-defined networking and network functions virtualization (NFV). While each is effective and can stand on its own, combining SDN and NFV will change the future of networking, along with how network engineers do their jobs.
Coming from that standpoint, you'd be doing yourself and your organization a favor if you learned Python.
Why Python for SDN?
First off, you may be asking, "Why Python for SDN?" There are plenty of other languages to choose from. Three basic reasons:
- It's an easy language to learn. Granted it will take a lot of additional work to master it, but getting started is easy.
- It's general purpose. With Python, you can do everything from gathering data to scripting configuration changes to playing games.
- It's widely supported. Python seems to be the language of choice for most SDN vendors.
SDN has come a long way over the years. If you've been following it at all, I'm sure you're just as amazed as I am at how much it has matured. The problem is the feature set and standardization needed for widespread adoption isn't quite there yet. Until we get those features, SDN is effectively contained to the world of the data center.
So, how do we get there?
Vendors' engineers are part of it, but it's really going to boil down to everyday network engineers who actually work with the products. Nearly every major SDN vendor offers a Python API or software developer's kit for their product. If you're an engineer skilled with coding in Python, your imagination is the limit on what you can start doing with the products. Using these tools, engineers can really strengthen their options for both the northbound controller interfaces and the southbound ones.
The northbound APIs have great potential for realizing true network automation and orchestration, meeting the needs of your organization's applications by communicating with them. On the other side of the equation are the southbound APIs, which are used to communicate between the controller and the routers or switches, so they know what and how to do what they need to. By learning Python for SDN you can create custom, situation-based programs to run and pull information from the APIs. Using this data, on-the-fly changes can be made to the network to meet your current needs.
If you're anything like I was before I started branching out, you may be inclined to sit in your dark corner and count open Ethernet ports on switches to keep yourself busy. That's all fine and good if you want to stay in your niche. I get it. But for SDN and NFV to really take off -- and stop being a trend and move into a standardization -- the majority of us needs to start looking at the network in a different light.
We need to stop looking at the network in terms of, "Here's my cable, plug it in and go." It's not the same as hooking up a water hose and turning it on, thereby providing a path for the water to flow. We need to start looking more toward the software side of things. By understanding the way applications work and how they affect the network and traffic flow, we gain additional insight into our network's current and future needs.
When it comes to coding -- especially in regards to dealing with APIs -- you have to understand how the application you're dealing with works. This leads to a change in thinking when it comes to dealing with how your network and the applications they support interact with each other.
It's easy to get started with Python for SDN -- there is a multitude of documentation and resources available for free online. You have to make the choice though: Sit on the bench or get in the game.
SDN skills for network engineers
How SDN will affect networking teams
Learn about network programming languages Frenetic and Pyretic