jonstout / ogo

An OpenFlow Network Controller in Go
GNU General Public License v3.0
100 stars 26 forks source link

expose I/O concurrency to applications? #4

Open adferguson opened 11 years ago

adferguson commented 11 years ago

hi,

I am starting to write a new version of my OpenFlow controller [1], currently in Haskell, in Go.

in our current version, we make use of the fact that each switch has its own I/O loop to provide concurrency to switch-specific computation. so, rather than muxing all messages of type A onto a single channel (which then becomes a bottleneck), I would prefer to have a set of per-switch channels with all messages from that switch. we've found this concurrency to be necessary as the controller scales.

anyway, is this something you would be open to? (sorry to file this as an issue, I couldn't find your email address :-) ... I think it could be done by exposing a lower-level interface in addition to the current one.

if not, what is your license for this project? we have a basic OpenFlow serialization/deserialization library for go which we've been using [2], and might want to adapt some of your parsers into ours.

thanks! Andrew

adf@cs.brown.edu

[1] http://pane.cs.brown.edu [2] https://github.com/brownsys/GoOF

jonstout commented 10 years ago

There's something similar now implemented. To register your app, you now pass a function that returns app instances (or a single instance). This function will be used to create an instance for each switch that connects.