Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expose enqueue action action to NetKAT layer #481

Open
basus opened this issue Mar 29, 2016 · 8 comments
Open

Expose enqueue action action to NetKAT layer #481

basus opened this issue Mar 29, 2016 · 8 comments

Comments

@basus
Copy link
Member

basus commented Mar 29, 2016

I've been trying to port the Merlin codebase to use the current Frenetic code. Merlin makes use of the queues extensively. There seems to OpenFlow-level support for queues in the codebase, but this isn't presented to the NetKAT layer. One way would be to extend the NetKAT location type with a Queue of queueId * portId constructor and then push that down through the compiler.

I can make the required changes to a branch, unless someone has a better way of going about it.

@jnfoster
Copy link
Member

I think I would do the following:

  • Do not expose queues in NetKAT.
  • Create a virtual port for each queue and virtual tests for each physical
    port (the union of its queues).
  • Write a backend "plugin" that maps virtual ports to queueId * portId
    pairs.

The plugin architecture is still being baked, but you could be an early
customer.

-N

On Tue, Mar 29, 2016 at 4:45 PM, Shrutarshi Basu notifications@github.com
wrote:

I've been trying to port the Merlin codebase to use the current Frenetic
code. Merlin makes use of the queues extensively. There seems to
OpenFlow-level support for queues in the codebase, but this isn't presented
to the NetKAT layer. One way would be to extend the NetKAT location type
with a Queue of queueId * portId constructor and then push that down
through the compiler.

I can make the required changes to a branch, unless someone has a better
way of going about it.


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
#481

@ldecicco
Copy link

@jnfoster I've just noticed the commit 5e1fe76 by @craig-riecke and I was wondering if the situation changed. Is the Enqueue action still not exposed? In case it is still not exposed, could you point to an example backend plugin in order to aid the implementation of the approach suggested by @jnfoster.

@jnfoster
Copy link
Member

Hi Luca,

Yes! Here is the OF 1.0 plugin:
https://github.com/frenetic-lang/frenetic/blob/master/async/Frenetic_OpenFlow0x01_Plugin.ml
It would not be too hard to do what was proposed several months ago but some work would be needed.

I am on sabbatical as of next week so I can also have a go at this...

-N

@ldecicco
Copy link

Hi Nate,

thanks for the reply! I am not really fluent in OCaml, so if you'll implement this feature I will return the favor by issuing a pull request integrating enqueue actions in pyretic.

Thanks again,
Luca

@ldecicco
Copy link

ldecicco commented Sep 1, 2016

Hi Nate,

any update on this?

Thanks a lot,
Luca

@jnfoster
Copy link
Member

jnfoster commented Sep 1, 2016

Sorry not yet.

@ldecicco
Copy link

@basus did you find any way to implement that?

@basus
Copy link
Member Author

basus commented Nov 12, 2016

I haven't used the queues for a while and I'm not sure what the state of the plugin architecture is. However, it looks like the OpenFlow backend does support Enqueue actions, so maybe that will be sufficient for your use?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants