For easy prototyping, I'd recommend Ryu: https://osrg.github.io/ryu/ written in Python, very straightfoward and easy to program.
However, if you want to get closer to telco deployments, I'd go for ONOS: https://onosproject.org/ which is a bit more complex, but more realistic (up/down of apps during runtime, great CLI, REST and GUI interfaces, etc.). Moreover ONOS is supported by the ONF.
OpenDaylight (ODL) is ok, but personally I believe it's too complex as a first step, as its architecture is too generalized and it is difficult to model new modules if you're new into SDN. But this is just my opinion...
(Note: I've worked with Ryu, ONOS, ODL, Floodlight and POX).
The answer is factorial; if you want an easy way you can check pox or Ryu. However, If you want higher requirements in terms of reliability, processing capabilities and implementation, i recommend ONOS. You can decide based on your application.
ONOS is the latest SDN controller. You can also use NOX, POX, Floodlight and Ryu Controller. Ryu is the easiest SDN controller to implement in the Mininet/Mininet WiFi.
A current battle is raging between networking vendors, who want to provide their own SDN Controllers to orchestrate their own equipment (and potentially other vendors’ networking equipment), and Open Source Controllers designed for all vendors to support.
The first SDN Controller was NOX, which was initially developed by Nicira Neworks, alongside OpenFlow. In 2008, Nicira Networks (acquired by VMWare) donated NOX to the SDN community (it was open sourced), where it has become the basis for many subsequent SDN Controller solutions. Nicira then went on to co-develop ONIX with NTT and Google; ONIX is the base for the Nicira/VMware Controller and rumored to be the base for the Google WAN Controller. While ONIX was originally supposed to be opened up, the parties later decided not to make it Open Source.
There are, however, a variety of Open Source Controllers currently available. The earliest ones include POX and Beacon. Started in early 2010, Beacon is a Java-based OpenFlow Controller licensed under a combination of the GPL v2 license and the Stanford University FOSS License Exception v1.0. Other SDN Controllers of note include Trema (Ruby-based from NEC), as well as Ryu (supported by NTT). You can see a full list of Open Source projects here.
POX and Ryu are the python based comtrollers. If you good in python script You can go with these controllers which are easy to handle.. but less features in it.
Floodlight and opendaylight are java based controllers. Many features are there in these controllers.
For my self im more prefer on Ryu Controller, previously on trema. This is because during the year i first land in SDN world . i believe back in 2015, my professor did help me alot in trema .
The differences here are in term of flow operation stack.
in my paper i name it as FoS.
Trema is truly basic even for dummies, truly easy to code with ROR. however, the repository is no longer maintain by the developer. Thus, i switch up for Ryu.
Ryu is the originally not for basic back then. the learning curve is truly steep but once you grab the idea on how it work on control plane and data plane , Ryu welcomed you along the way.
Plus, its easier to do ansible and running a simultaneously with github or gitlab.
The role of a controller in a SDN network is similar to the role of an OS in a computer, so it's very important to choose the most appropriate controller for your project. There are multiple parameters to consider before choosing the appropriate controller, such as: OpenFlow support, programming language, network programmability, southbound & northbound interfaces, memory consumption, etc.
RYU is the easiest controller. It's Python based and can be a good choice for the people who are new to programming and SDN world. (So you may want to use it in order to make a prototype)
Floodlight is a user friendly SDN controller that is Java-based. It has an active mailing list and you can find many tutorials, references and documents for it.
If you need more capabilities and your project requires more complicated scenarios, I would recommend ONOS or OpenDayLight. They can be really effective specially in distributed environments or IoT networks.
They are several other controllers such as POX, Beehive, etc. I think you should choose your SDN controller based on the goal and the requirement of your project.
I have question please, I am trying to simulate an SDN to mitigate DDoS attacks, can any one plz suggest a suitable controller and simulator to show the best results of the simulation.
mininet controller would be a good startup. However, you can connect mininet to external controllers as a gateway and managed it form a virtual server. Moreover, Ryu and OpenDay Light controllers are good and commonly used as well. There are many other controllers such as Cisco Open SDN controller that support OpenFlow protocol 1.0 to 1.3 versions.