[OVSDB-21] Augment OpenFlow NXM (vendor) extensions through proper extensibility framework Created: 04/Jun/14  Updated: 03/May/18  Resolved: 23/Sep/14

Status: Resolved
Project: ovsdb
Component/s: API
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Madhu Venugopal Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Mac OS
Platform: PC


External issue ID: 1133

 Description   

Openstack integration with OpenDaylight using OVSDB needs a few NXM vendor
extensions in place.

Yang Augments from external bundle/application is the correct approach in
getting this done. But unfortunately, the extensibility support is lacking
in the ofjava and ofplugin bundles.

In order to get the integration moving towards the Helium Release, we have
implemented the vendor extension handling inline to the ofplugin and ofjava bundles. This includes :
1. translation in ofplugin from generic to OF specifics.
2. serialization and deserialization for these vendor extensions in ofjava

https://git.opendaylight.org/gerrit/#/c/7633/
https://git.opendaylight.org/gerrit/#/c/7607/

The above gerrits are merged by the ofjava/ofplugin team as a temporary
measure to unblock the progress and until the extensibility support is
made available.

This bug is opened to track the vendor extension inline changes (more to come) in ofjava and ofplugin and revert them from these projects once the extensibility support is made available end to end.



 Comments   
Comment by Madhu Venugopal [ 04/Jun/14 ]

[08:43am] Madhu: hi michal_rehak
[08:44am] Madhu: michal_rehak: regarding https://git.opendaylight.org/gerrit/#/c/7607/
[08:44am] Madhu: we spoke to the other michal from of lib
[08:45am] Madhu: and the extensibility support is NOT available yet and we agreed to extend the NXM inline till it is made available
[08:45am] Madhu: we have been waiting for more than 8 weeks
[08:45am] Madhu: we need to get moving and would be great if we can get this merged in now.
[08:46am] Madhu: and once we have the extensibility support, we can of course remove these and move forward. does that work ?
[08:46am] michal_rehak: Madhu: hi
[08:46am] michal_rehak: Madhu: I spoke with Ed regarding this
[08:46am] Madhu: oh great.
[08:47am] Madhu: and...
[08:47am] michal_rehak: so
[08:48am] michal_rehak: having Nxm0 and Nxm1 classes in basic implementation of OFJava is ok, since those are metioned in OFSpec
[08:48am] Madhu: agreed
[08:48am] michal_rehak: what I have problem with are the underlying models like TcpFlag
[08:48am] Madhu: technically
[08:48am] Madhu: even for ofjava
[08:48am] Madhu: i didn't want it to be part of the library project
[08:49am] Madhu: because tcpflag is NOT defined in the spec
[08:49am] Madhu: though the class is vaguely specified
[08:49am] michal_rehak: but in order to have at least some things working it is a bad idea to wait for refactoring of OFPlugin and creating bundles etc..
[08:49am] michal_rehak: agreed
[08:49am] michal_rehak: so
[08:49am] Madhu: our request now is to get this moving just to make sure we hit the helium dates
[08:50am] Madhu: if we have the extensibility support in, we will certainly move it to a pluggable bundle
[08:50am] michal_rehak: for POC I agreed with this change
[08:50am] michal_rehak: right
[08:50am] Madhu: do u know when will we have the support for extensibility ?
[08:50am] michal_rehak: but once this has to be moved to separate bundle
[08:50am] michal_rehak: in OFPlugin?
[08:51am] Madhu: overall.
[08:51am] michal_rehak: good question
[08:51am] Madhu: the problem is
[08:51am] Madhu: we have 6-7 NXM extensions to be done
[08:51am] Madhu: and I hate to embed the code like this
[08:51am] michal_rehak: in OFJava it is ready for testing
[08:51am] michal_rehak: so there are 2 more ways to achieve this
[08:51am] Madhu: okay
[08:52am] michal_rehak: #1 - register translators for OFPlugin in order to use external code
[08:52am] michal_rehak: but there is large refactoring needed for that
[08:53am] Madhu: ok
[08:53am] michal_rehak: #2 - vendor specific messages can be forwarded through OFPlugin without touching them
[08:53am] Madhu: hmm then controller will be corrupted
[08:53am] Madhu: i mean the md-sal generic yang models
[08:53am] michal_rehak: why so?
[08:54am] michal_rehak: right
[08:54am] michal_rehak: any bundle can define yang containing augmentation for existing md-sal model
[08:54am] michal_rehak: so can the vendor bundle
[08:54am] Madhu: right
[08:55am] michal_rehak: this is current case - there are augmentations on sal models as placeholders for specail messages
[08:55am] michal_rehak: similar augmentation is done on OFJava-API models
[08:55am] michal_rehak: in order for OFJava to read those messages
[08:56am] michal_rehak: but OFJava does not need to read them - for this purpose there are registered codecs
[08:56am] Madhu: can u point to an example ?
[08:56am] michal_rehak: matchEntry
[08:57am] Madhu: i will take a look @ that later today
[08:57am] michal_rehak: in md-sal there is a list of containers
[08:57am] Madhu: just curious
[08:57am] Madhu: if we can send extensions transparently to ofjava
[08:57am] Madhu: why do we need any kind of translators at all ?
[08:57am] michal_rehak: well the main point is that you can not have one augmentation able to augment 2 different nodes
[08:57am] michal_rehak: but augmentations can share grouping inside
[08:58am] michal_rehak: that is my point!
[08:58am] michal_rehak: #2 will completely skip messing with extensible messages in OFPlugin
[08:58am] Madhu: I need to refresh my yang knowledge
[08:58am] Madhu: #2 is cool. but am trying to understand ... at what cost ?
[08:58am] michal_rehak: so for POC this is huge delay
[08:59am] Madhu: i agree that the current change is PoC due to the lack of end-to-end extensibility support
[08:59am] Madhu: and we have 7 more coming
[08:59am] Madhu: so not sure how to address this sooner.
[08:59am] michal_rehak: we need new bundle defining those augmentations in order to interconnect md-sal and ofjava-api
[09:00am] michal_rehak: and vendor bundle - this we need anyway
[09:00am] michal_rehak: and minor changes in OFPlugin in places where those extensions will pass
[09:00am] michal_rehak: OFPlugin will not be dependent on vendor bundle
[09:01am] michal_rehak: vendor bundle will be accessible for NB-app (or those could be the same bundle)
[09:01am] Madhu: okay.
[09:01am] michal_rehak: and vendor bundle needs to register codes for OFJAva before sending or receiving extension messages
[09:02am] Madhu: am okay with any idea if we have a solid end-to-end idea to work from my app towards controller -> ofplugin -> ofjava
[09:02am] Madhu: and back
[09:02am] michal_rehak: and this way md-sal models will also stay vendor agnostic
[09:02am] Madhu: and would be helpful if we have an example done by you experts so that we can follow that
[09:02am] michal_rehak: right so
[09:02am] michal_rehak: here is the proposal:
[09:03am] michal_rehak: the first steps / POC can be done just like Brent already pushed but with HUGE comments that this is about to get changed
[09:04am] Madhu: how about a bug opened with these gerrits to be backed out ?
[09:04am] michal_rehak: and at least all augmentation definitions shall be pulled in separate yang files in order to easy the later changes
[09:04am] Madhu: +1 to that
[09:05am] Madhu: so. Brent is working on the current code to get the OpenStack integration going. and hence I wouldn't want to block him
[09:05am] Madhu: but I can take this cleanup work
[09:05am] michal_rehak: ok
[09:05am] Madhu: but I need help from you guys to make sure we have the infra in place for it to work
[09:05am] michal_rehak: and is Brent around?
[09:05am] michal_rehak: sure
[09:05am] Madhu: unfortunately. he works nights and nights
[09:06am] Madhu: and goes offline in the mornings. lol
[09:06am] michal_rehak: first I need to write a wiki for that
[09:06am] michal_rehak: oh
[09:06am] Madhu: yes. thats a plan then
[09:06am] michal_rehak: ok, I will reach him tomorrow
[09:06am] Madhu: perfect.
[09:06am] michal_rehak: and then we can file bug a check planning
[09:06am] Madhu: if we can get Brent moving with this PoC implementation, that would be awesome for the short term
[09:07am] Madhu: will file a bug right away infact
[09:07am] michal_rehak: currently I am occupied by high priority task - ingress backpressure
[09:07am] michal_rehak:
[09:07am] Madhu: np. if u can unblock brent by +2 and merge that code
[09:07am] Madhu: we will actually start to integrate Security group Openstack feature
[09:08am] Madhu: michal_rehak: also, am new to md-sal yang. so please go easy on me
[09:08am] michal_rehak: everyone is new to yang as it is used in md-sal
[09:08am] michal_rehak:
[09:08am] Madhu: ok perfect so am not alone to be stupid
[09:09am] michal_rehak: ok, I will add some info in gerrit about the commenting stuff
[09:09am] michal_rehak: YEAH - we are never alone!
[09:09am] michal_rehak: and I will copy this conversation into mail fro brent
[09:09am] Madhu: ok sir. thanks a ton.
[09:10am] Madhu: excellent. sure.
[09:10am] michal_rehak: you are welcome
[09:12am] Madhu: michal_rehak: btw. since Brent is offline. I can amend the gerrit with the HUGE comments as we discussed
[09:12am] Madhu: can u merge it with that done ?
[09:12am] michal_rehak: yes - doing that
[09:22am] Madhu: michal_rehak: https://bugs.opendaylight.org/show_bug.cgi?id=1133
[09:22am] Madhu: opened a bug against our project
[09:23am] Madhu: and we can track all the gerrits that will introduce these PoC changes for the NXM extensions (we have 6-7 of them)
[09:23am] michal_rehak: Madhu: great
[09:25am] Madhu: michal_rehak: please let me know if you want me to amend the commit with some comments pointing to this bug ?
[09:25am] Madhu: you can also add an attachment to this bug with the conversation that we just add to keep me honest
[09:25am] michal_rehak: oh
[09:26am] abhijitkumbhare_: sorry my MAC hung up and had to reboot
[09:26am] abhijitkumbhare left the chat room. (Ping timeout: 276 seconds)
[09:26am] abhijitkumbhare_ is now known as abhijitkumbhare.
[09:26am] michal_rehak: the other Michal from OFJava knows about this issue
[09:26am] michal_rehak: Madhu: may I ask you to append the conversation to bug?
[09:26am] Madhu: michal_rehak: sure i will
[09:26am] michal_rehak: Madhu: thank you

Comment by Brent Salisbury [ 05/Jun/14 ]

Adding additional conversation to bug regarding models etc. Will need to figure out how to do this w/the Yang headers. Everything I see upstream is contained in single files, match, ext, action etc. Thanks.

[13:47:07] <michal_rehak> networkstatic: so if possible, please put vendor extension models into separate yang files so it will be easy to pull them into new bundle
[13:48:01] <networkstatic> in ofJava Im guessing?
[13:48:09] <networkstatic> Controller using other objects
[13:48:13] <networkstatic> existing
[13:48:13] <michal_rehak> networkstatic: right
[13:48:16] <networkstatic> rogr
[13:48:24] <networkstatic> you got it. will break them out
[13:48:36] amit_ (~amit_@2001:420:305:1252:b594:9ace:d657:9616) joined the channel.
[13:48:55] <michal_rehak> networkstatic: in controller there is for example by match simply list of fields (containers)
[13:49:37] <networkstatic> i want to use as little as possible from other projects to be honest
[13:49:39] <michal_rehak> vendor stuff among those should be one day moved out as augmentations... but this needs some designing
[13:49:44] <networkstatic> so you get us support
[13:49:50] <networkstatic> to use exteernally
[13:49:57] <michal_rehak> networkstatic: appreciate that
[13:50:02] <networkstatic> and we wont need to be in ur project
[13:50:13] <networkstatic> its no fun for us
[13:50:19] <michal_rehak> funny is, that nxm0 and nxm1 are part of OFSpec
[13:50:27] <networkstatic> last thing i want is to intrude
[13:50:39] <networkstatic> well, i agree
[13:50:49] <networkstatic> why i think its reasoanble
[13:50:58] <networkstatic> since u defined it in the clazz

Generated at Wed Feb 07 20:35:18 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.