Skip to main content


·3 mins

Software-Defined Networking and the Networking Space in general has pretty obscure documentation. Examples, working prototypes, and learning resources in general are pretty hard to come by.

So, I’ve compiled a list of resources that might help out with the journey to SDN.

Articles #

Here’s a bunch of interesting articles and websites that contain information on SDN, that may help you out with setting up your network for success.

  1. A decent history of the evolution of Software-Defined Networks: The Road to SDN
  2. Windy’s Software-Defined Networks: Blogspot
  3. An in-depth explanation on OpenFlow and SDN on StackOverflow
  4. YT course on working with the Ryu Controller

Controller Usage #

Ever faced times where you couldn’t find the required documentation for a controller or something? I know I have, so here are some links to some controllers that I’ve used over the course of my study.

Hopefully, at some point, I’ll write an article about working with some of these controllers and link those here.

  1. The POX Controller Documentation
  2. Ryu Controller Documentation
  3. Floodlight Controller Documentation
  4. ONOS Controller Documentation
  5. Faucet Controller Documentation, Experiment
  6. RFC for Benchmarking Methodology of SDN Controller Performance: rfc

OpenDaylight has given me enough of a headache to warrant it’s own section.

OpenDaylight #

OpenDaylight is quite complex, in that, the documentation is almost always out of date for the version that you are about to use. The compability and features for one version will not work for another. Additionally, anything and everything that you can expect to go wrong, will go right. It’s the part where you think it’s going to work correctly that seems to be the problem.

So, just a note, the only working condition OpenDaylight that has all the software in a working state is the OSGi version of OpenDaylight. Everything above OpenDaylight Nitrogen seems to be missing out on the dlux suite and the l2switch-switch package.

  1. OpenDaylight Fundamentals on packt
  2. Working with NETCONF in OpenDaylight
  3. Executable NETCONF Repositories
  4. Executable Karaf Download for OpenDaylight Nitrogen

Courses #

Here are some courses on SDN, that may help you out in either finding some inspiration or learning something new.

  1. One of the best introductions to Software-Defined Networking: Nick Feamster’s Course on Software-Defined Networking
  2. A set of lab courses by Pietro Manzoni on working with SDN emulators: 1, 2, 3

Emulators #

Here are some resources that can help to work with SDN emulators,

  1. Mininet Documentation
  2. Mininet-Wifi Documentation, Reference Manual

Datasets #

A lot of research in the SDN-IoT scene revolves around strategies to mitigate malicious traffic pouring into nd infecting the network. AI, ML, and DL works are now attempting to train models that can stop these occurences from taking place before they take place. Here are some datasets that existing models rely on,

  1. IEEE Dataport
  2. Aposemat IoT-23
  3. TON_IoT Datasets
  4. Bot-IoT Dataset

Miscellaneous #

Some other resources which are tangentially relevant to SDN-related tech,

  1. Isolate your VMs into a NAT network for testing purposes: NAT network
  2. Make your Raspberry Pi into an OpenFlow Switch: David Bombal
  3. Awesome SDN List: GitHub

P4 #

P4 is a new paradigm to manage the control of networks, formerly part of the Open Networking Foundation, which now falls under the Linux Foundation. The following are resources on getting started and working with the technology.

From what I’ve seemed to find, the most reliable way to get started with the P4 developer ecosystem is to use the official VM build instructions as given by the P4 lang community.

  1. Official P4 Language Repository w/ VM

If you are interested in setting up other ecosystems (none of which have seemed to work for me), here are links for that as well.

  1. ETH Zurich’s P4 Setup Repository
  2. ETH Zurich’s P4 Learning Repository
  3. Issue with installation of the Virtual Machine on your system