fp7-netide / Engine

App Engine to enable Network App programs to be executed, systematically tested, and refined on a variety of concrete SDN platforms
Eclipse Public License 1.0
10 stars 11 forks source link

Installing a new controller #128

Open sushiljain1989 opened 8 years ago

sushiljain1989 commented 8 years ago

Hi,

Is there any tutorial to add and run a new controller with NetIDE. I want to add Frenetic and FlowLog.

~Sushil jain

ElisaRojas commented 8 years ago

Hi @sushiljain1989

That is a good question! Currently we don't have any tutorial. I guess you want to use them on top of other SDN controller (e.g. ONOS or ODL?), so then you basically need to create a class to convert the OpenFlow packets into NetIDE packets and that should be enough (similar to what Pyretic does over POX). After this, you can serialize the NetIDE packets with a library and in that case you could reuse the Python or Java libs we already have (in case that's one of the languages you use) and that's it.

How do you want to use Frenetic and FlowLog? As far as I know, these are languages and not "full" SDN platforms, but maybe I'm wrong. Do they rely on another SDN platform to work? (for example Pyretic is Frenetic over POX).

Please let us know what you want to build and we'll help you :+1:

sushiljain1989 commented 8 years ago

I am a newbie to SDN world so I am also not good at telling what exactly is needed, however you got what I need. I want to use them on top of ODL.

As per my understanding, Frenetic is SDN platform. "Frenetic is an open-source Software Defined Network (SDN) controller platform designed to make SDN programming easy, modular, and semantically correct." [Source](Frenetic is an open-source Software Defined Network (https://github.com/frenetic-lang/frenetic) Please correct me if my understanding is wrong about frenetic

And what should I do to make these run on top of ODL ? I need to run Frenetic, Pyretic, FlowLog,Nettle,Merlin,OpenMuL and Maestro

ElisaRojas commented 7 years ago

Hi @sushiljain1989 ,

The initial intermediate protocol was indeed the same from Pyretic. But we changed it because Pyretic only supported OF1.0. Basically, to run Pyretic now, you should change the "backend.py" file of Pyretic to look a bit more similar to the "ryu-backend.py" file we have for the Ryu backend: https://github.com/fp7-netide/Engine/blob/master/ryu-backend/ryu-backend.py Basically, this Ryu backend is in charge of serializing the messages coming from the controller to the core, which is the same that the Pyretic backend does with its OF_client. Additionally, the Ryu backend implements a heartbeat (to show if the backend is alive or not at all times) and the connection to the Core module in NetIDE. This should be added to the Pyretic backend as well.

If you feel like going for it, we'll be glad to hear so and we could include your code in the repo as well. I'd recommend to start working on it and if you have questions, open a specific issue about it. @doriguzzi was in charge of working with the Pyretic and Ryu backends at a time, so he probably might help you much more on it.

As for the other SDN platforms you mention. You should look at their architectures and how to insert a hook. In Pyretic is very easy, because its architecture is already very similar to NetIDE, so you only have to change its backend. But for other SDN platforms, you need to know how they work and how can you insert the backend to get all messages instead of the main module. For example in Ryu, we run the Ryu backend while at the same time we set the usual OF port to a non-used one. In that way, the main thread of Ryu is listening to somewhere where there is nothing, while the Ryu backend is indeed connected to NetIDE and listening to all the events from the network, which are later delivered to the Ryu platform. Therefore, you need to check how to insert this backend in the middle.

For example, in Ryu was kind of easy (as it was based on Python), but not so easy for Floodlight (based on Java), @KevinPhemius and @peppepetra developed the Floodlight backend.

sushiljain1989 commented 7 years ago

@ElisaRojas : Thanks for useful information. I am in process of thinking if I should really go for NetIDE or create something of my own. The information you shared is really helpful, thanks again for that