Should network-ODL be rewritten as a monolithic plugin or continue as an ML2 driver
Ryan Moats
I'm going to use this to reply to the question below as well as update this thread from last weeks meeting. |
Isaku Yamahata <yamahata@...>
On Sat, Aug 15, 2015 at 08:29:32PM -0500,
Ryan Moats <rmoats@...> wrote: I will comment in line as far as I can. Others may have differentYeah, I'd like to see other's opinions too... And also expected use cases. You're right and I agree with you. Right now ML3 is under debate yet.Now long details follows.Since ODL wants to know about L3 items and other extensions, an ML2 driver However, the key question in my mind is does networking-ODL have to coexistAgree. User requirements are needed. Maybe or maybe not. So let's figure out what's the issues and how we'd- reasonable performance: requests/secondOne point to remember is that the ML2 team may not solve them in the way like to solve them first. Interesting approach. Changing wire protocol should not be excluded.C. Accept out-of-sync of two state. fix it up by backgroundsynchronizationNuage plugin takes this approach.Part of the sync problem is that the communication between OS and ODL today Can you please elaborate on interaction between neutron and ODL? What are precommit/postcommit expected to do on neutron side/odl side? Right, this is common problem among controller based ML2 drivers- neutron HA supportI'm going to be a little thick here and say I don't understand why this is (or monolithic plugins). On the other, hand agent based drivers don't have this issue. So it's partly general neutron problem, partly ML2 driver (or plugin) dependent problem. Anyway it's worthwhile to discuss on this in order to figure out what's needed for ODL. -- Isaku Yamahata <isaku.yamahata@...> |
Ryan Moats
I will comment in line as far as I can. Others may have different opinions... |
Isaku Yamahata
Hi Ryan. Thank you for starting this thread.
Ryan, can you please elaborate your motivation to go for monolithic plugin? why monolithic plugin makes problems easier than ML2 driver? At least the following should be discussed, I think. * pros/cons for ml2 vs monolithic * requirement and problem to be solved. how different the two approaches affects solutions. Without this, we can't understand which way is better. Now long details follows. * ML2 vs monolithic - migration from other technology ML2 is better for migration from other ML2 driver. - development cost monolithic requires much engineering cost. Ryan seems to think ML2 design imposes too much restrictions. Can you please elaborate? * requirements: - neutron server ha - scalability large number of neutron networks/subnets/ports... (e.g. 10k ports) should be able to be handled. - reasonable performance: requests/second * observed problems/solutions. I think the issues are independent from 'ML2 vs monolithic' and ML2 team is already aware of those issues. Those issues needs to be solved anyway. - requests from neutron to odl are serialized The communication can be made asynchronous. There is PoC code for ML2. - race condition among request from neutron to odl This stems from maintaining two states in neutron and odl. There are several approaches. A. Make neutron stateless i.e. Not use neutron db. All the user requests to neutron are passed through to ODL. This implies most functionality needs to be re-implemented in ODL. OpenContrail plugin takes this approach B. Make ODL neutron northbound stateless This is reverse of A. When those information are needed in ODL, ODL asks Neturon for it. This is not feasible because MD-SAL is core concept of ODL C. Accept out-of-sync of two state. fix it up by background synchronization Nuage plugin takes this approach. Run background thread to monitor the de-synchronization and fix it if found. Potentially we can introduce sequential number to track the diff between neutron and odl. Also by sequential number, ODL can detect reordered requests from neutron. D. any other idea? - neutron HA support Currently full synchronization can be done by any neutron servers. It's disastrous. When a neutron server is processing synchronization, other neutron server should be prohibited. Ideally each neutron servers take ownership for a subset of network/subnsets/ports... for scalability. thanks, On Thu, Aug 13, 2015 at 04:59:10PM -0500, Ryan Moats <rmoats@...> wrote:
_______________________________________________ -- Isaku Yamahata <isaku.yamahata@...> |
Ryan Moats
Folks, I took the action item to kick of threads from the extensive discussion we had last week [1]. I've been behind the 8 ball, but am remembering this belatedly... |