The wonderful world of Software Defined Networking (SDN) is here.  If you are a networking professional, it’s best to embrace it with both arms open.

What is SDN?  How can I practically get started with SDN?  What are some good free and inexpensive resources to learn about all the different SDN solutions?  Which SDN solutions should I focus on in particular?

There are no 100% right or wrong answers to these questions, however, I will attempt to answer these questions based on the approach to SDN I am taking myself.

What is SDN?

Many places have covered that already.  There are complex and detailed definitions and some slightly simpler and broader definitions.
My crude and simple definition:
– A highly programmable and modular network that’s managed by a centralized “controller” (typically a server or set of servers) instead of each individual switch, router, firewall, load balancer and other networking components being managed individually.
– Some SDN implementations have their own physical controller servers e.g. Cisco ACI and some run as VMs e.g. VMware’s NSX Manager.
– Some integrate heavily with the hardware and use the controller to program SDN policies into the hardware ASICs e.g. ACI and some use overlays and run on top of a simple IP based network on virtually any generic hardware e.g. NSX, OpenStack, etc. with the intelligence being handled in software.
– All major SDN solutions provide features that simplify multi-tenancy significantly, allow configuration of network based on policies rather than arbitrary hardware limitation through service chaining and bring many other similar advantages to networking as virtualization brought to compute.
Cisco ACI and VMware NSX are likely the two biggest contenders vying for the enterprise space.  The OpenStack platform, which has networking components (Quantum/Neutron) is another contender gaining significant ground in the enterprise.  You can learn about these and other SDN solutions in more detail on my favourite networking blog by Ivan Pepelnjak.

Currently, most SDN solutions are focused on Data Center Networking (DCN), however, all other areas of networking (service provider, enterprise/campus, etc.) are also increasingly seeing SDN or SDN-like products being released.

Getting Started

So, how does a typical network admin, who primarily has experience with Cisco, get started with SDN?


For starters, you can do Cisco or VMware specific courses to learn more about ACI and NSX in more detail.  Note, for VMware’s NSX certification, dubbed VCP-NV, with a few simple google searches, you can find a lot of good sources (like vBrownBag video series) to study for the certification, including practice questions and best of all, you can practice almost all components of the NSX certification for free on VMware’s Hands On Labs website.  As a bonus, until January 31, 2016, VMware is accepting a valid CCNA as a pre-requisite for the VCP-NV exam, so, you don’t have to pay for VMware courses, or have prior VMware certifications.  With resources mentioned above, you can easily learn on your own and go and write the certification exam.  The VCP-NV exam fee is $225 USD.

Cisco ACI

You can similarly find a lot of great resources for learning about Cisco ACI – the most valuable resource being all the free ACI videos on the Cisco Live website.  For those who work with a Cisco partner, you can also play with ACI labs on Cisco’s dCloud.  YouTube also has a great selection of ACI content, especially the videos from Tech Field Day covering ACI.


Then we come to OpenStack.  I’ve completed the VMware’s NSX certification, VCP-NV and caught up on Cisco’s ACI as best I could over the last few months, including playing with it quite a bit on Cisco’s dCloud.  Learning OpenStack, especially from a networking perspective is the next big challenge – and that requires significant Linux know-how.

Most network professionals I know started their IT journeys as Windows Admins – probably with A+, MCP or MCSE (now MCITP) certifications.  Relatively few of us have any significant Linux know-how.  Almost all SDN solutions however are deeply ingrained in Linux.  ACI, NSX, OpenStack, Nuage and almost all other SDN solutions either use Linux for their controllers (NSX, ACI), Linux in the management plane, Linux-based OS (NX-OS) on their hardware platforms or very Linux-like kernels (e.g. ESXi).  Basically, Linux is all over the SDN world’s map.

And with Linux, also comes Python scripting.  Similar to Linux, Python is an integral part of almost all SDN solutions.  In short, if you want to learn SDN, you gotta get really comfortable with Linux and Python scripting.  You don’t need to become a programmer, but, you need to learn Python enough to at least grab code from online repositories like GitHub, and modify it to meet your requirements.  At the same time, if you come up with something cool in the process, you can contribute back to the community via GitHub.

With that in mind, two great and VERY cost effective resources for learning Linux, Python and OpenStack are and only costs $25/month (update: increased to $30/month September 2015). only costs $99/month with the first month for $49/month and very attractive yearly and two-year subscription options.  Both INE and LinuxAcademy have a large library of other courses as well.  INE, being focused on networking, has a great amount of quality networking related training.  I utilized INE for my CCIE R&S and CCIE DC certifications and would recommend them any day.

For OpenStack in particular:

LinuxAcademy courses I would recommend:
Linux Essentials
Introduction to Python
OpenStack Essentials course I would recommend:
– Linux Fundamentals
Introduction to Python Programming
Python Programming for Network Engineers
Shell Scripting Fundamentals for Network Engineers
Introduction to Open vSwitch
– Introduction to OpenStack

I plan to go through all of the above courses (they are an average of ~10-15 hours in length each).  Next steps after that would involve building an OpenStack lab.  I’ll provide another update then! 🙂