<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Kyle, What happened to the long-term potential goal of ML2 driver
APIs becoming neutron's core APIs? Do we really want to encourage
new monolithic plugins?<br>
<br>
ML2 is not a control plane - its really just an integration point
for control planes. Although co-existence of multiple mechanism
drivers is possible, and sometimes very useful, the single-driver
case is fully supported. Even with hierarchical bindings, its not
really ML2 that controls what happens - its the drivers within the
framework. I don't think ML2 really limits what drivers can do, as
long as a virtual network can be described as a set of static and
possibly dynamic network segments. ML2 is intended to impose as few
constraints on drivers as possible.<br>
<br>
My recommendation would be to implement an ML2 mechanism driver for
OVN, along with any needed new type drivers or extension drivers. I
believe this will result in a lot less new code to write and
maintain.<br>
<br>
Also, keep in mind that even if multiple driver co-existence doesn't
sound immediately useful, there are several potential use cases to
consider. One is that it allows new technology to be introduced into
an existing cloud alongside what previously existed. Migration from
one ML2 driver to another may be a lot simpler (and/or flexible)
than migration from one plugin to another. Another is that
additional drivers can support special cases, such as bare metal,
appliances, etc..<br>
<br>
-Bob<br>
<br>
<div class="moz-cite-prefix">On 2/24/15 11:11 AM, Kyle Mestery
wrote:<br>
</div>
<blockquote
cite="mid:CAL3VkVxs+i5+O6vRs7ZNBPdhuZDZBZ_5Jfp0F4x+kWXUkji2ig@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Tue, Feb 24, 2015 at 3:19 AM,
Salvatore Orlando <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:sorlando@nicira.com"
target="_blank">sorlando@nicira.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span class="">On 24 February
2015 at 01:34, Kyle Mestery <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:mestery@mestery.com"
target="_blank">mestery@mestery.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0
0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">
<div>
<div>Russel and I have already merged the
initial ML2 skeleton driver [1].</div>
</div>
</div>
</blockquote>
<blockquote class="gmail_quote" style="margin:0 0
0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">
<div>
<div>The thinking is that we can always
revert to a non-ML2 driver if needed. </div>
</div>
</div>
</blockquote>
<div><br>
</div>
</span>
<div>If nothing else an authoritative decision on a
design direction saves us the hassle of going
through iterations and discussions.</div>
<div>The integration through ML2 is definitely
viable. My opinion however is that since OVN
implements a full control plane, the control plane
bits provided by ML2 are not necessary, and a
plugin which provides only management layer
capabilities might be the best solution. Note:
this does not mean it has to be monolithic. We can
still do L3 with a service plugin.<br>
</div>
<div>However, since the same kind of approach has
been adopted for ODL I guess this provides some
sort of validation.</div>
<span class="">
<div> <br>
</div>
</span></div>
</div>
</div>
</blockquote>
<div>To be honest, after thinking about this last night, I'm
now leaning towards doing this as a full plugin. I don't
really envision OVN running with other plugins, as OVN is
implementing it's own control plane, as you say. So the
value of using ML2 is quesitonable.<br>
<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span class="">
<blockquote class="gmail_quote" style="margin:0 0
0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">
<div>
<div>I'm not sure how useful having using
OVN with other drivers will be, and that
was my initial concern with doing ML2 vs.
full plugin. With the HW VTEP support in
OVN+OVS, you can tie in physical devices
this way. Anyways, this is where we're at
for now. Comments welcome, of course.<br>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
</span>
<div>That was also kind of my point regarding the
control plane bits provided by ML2 which OVN does
not need. Still, the fact that we do not use a
function does not make any harm. </div>
<div>Also i'm not sure if OVN needs at all a type
manager. If not, we can always implement a no-op
type manager, I guess.</div>
<span class="HOEnZb"><font color="#888888">
<div><br>
</div>
</font></span></div>
</div>
</div>
</blockquote>
<div>See above. I'd like to propose we move OVN to a full
plugin instead of an ML2 MechanismDriver.<br>
<br>
</div>
<div>Kyle<br>
<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span class="HOEnZb"><font
color="#888888">
<div>Salvatore</div>
</font></span>
<div>
<div class="h5">
<div> </div>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">
<div>
<div><br>
</div>
Thanks,<br>
</div>
Kyle<br>
<br>
[1] <a moz-do-not-send="true"
href="https://github.com/stackforge/networking-ovn"
target="_blank">https://github.com/stackforge/networking-ovn</a><br>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, Feb 23,
2015 at 4:09 PM, Kevin Benton <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:blak111@gmail.com"
target="_blank">blak111@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">I want to emphasize
Salvatore's last two points a bit
more. If you go with a monolithic
plugin, you eliminate the
possibility of heterogenous
deployments.
<div><br>
</div>
<div>One example of this that is
common now is having the current
OVS driver responsible for
setting up the vswitch and then
having a ToR driver (e.g. Big
Switch, Arista, etc) responsible
for setting up the fabric.
Additionally, there is a
separate L3 plugin (e.g. the
reference one, Vyatta, etc) for
providing routing.
<div><br>
</div>
<div>I suppose with an overlay
it's easier to take the route
that you don't want to be
compatible with other
networking stuff at the
Neutron layer (e.g.
integration with the 3rd
parties is orchestrated
somewhere else). In that case,
the above scenario wouldn't
make much sense to support,
but it's worth keeping in
mind.</div>
</div>
</div>
<div class="gmail_extra">
<div>
<div><br>
<div class="gmail_quote">On
Mon, Feb 23, 2015 at 10:28
AM, Salvatore Orlando <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:sorlando@nicira.com"
target="_blank">sorlando@nicira.com</a>></span>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">I think
there are a few factors
which influence the ML2
driver vs "monolithic"
plugin debate, and they
mostly depend on OVN
rather than Neutron.
<div>From a Neutron
perspective both
plugins and drivers
(as long at they live
in their own tree)
will be supported in
the foreseeable
future. If a ML2 mech
driver is not the best
option for OVN that
would be ok - I don't
think the Neutron
community advices
development of a ML2
driver as the
preferred way for
integrating with new
backends.<br>
</div>
<div><br>
</div>
<div>The ML2 framework
provides a long list
of benefits that
mechanism driver
developer can
leverage.</div>
<div>Among those:</div>
<div>- The ability of
leveraging Type
drivers which relieves
driver developers from
dealing with network
segment allocation</div>
<div>- Post-commit and
(for most operations)
pre-commit hooks for
performing operation
on the backend</div>
<div>- The ability to
leverage some of the
features offered by
Neutron's built-in
control-plane such as
L2-population</div>
<div>- A flexible
mechanism for enabling
driver-specific API
extensions</div>
<div>- Promotes modular
development and
integration with
higher-layer services,
such as L3. For
instance OVN could
provide the L2 support
for Neutron's built-in
L3 control plane</div>
<div>- The (potential
afaict) ability of
interacting with other
mechanism driver such
as those operating on
physical appliances on
the data center</div>
<div>- <add your
benefit here></div>
<div><br>
</div>
<div>In my opinion OVN
developers should look
at ML2 benefits, and
check which ones apply
to this specific
platform. I'd say that
if there are 1 or 2
checks in the above
list, maybe it would
be the case to look at
developing a ML2
mechanism driver, and
perhaps a L3 service
plugin.</div>
<div>It is worth nothing
that ML2, thanks to
its type and mechanism
driver provides also
some control plane
capabilities. If those
capabilities are
however on OVN's
roadmap it might be
instead worth looking
at a "monolithic"
plugin, which can also
be easily implemented
by inheriting from
neutron.db.db_base_plugin_v2.NeutronDbPluginV2,
and then adding all
the python mixins for
the extensions the
plugin needs to
support.<span><font
color="#888888"><br>
</font></span></div>
<span><font
color="#888888">
<div><br>
</div>
<div>Salvatore<br>
</div>
</font></span>
<div>
<div>
<div><br>
<div>
<div
class="gmail_extra"><br>
<div
class="gmail_quote">On
23 February
2015 at 18:32,
Ben Pfaff <span
dir="ltr"><<a
moz-do-not-send="true" href="mailto:blp@nicira.com" target="_blank">blp@nicira.com</a>></span>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">[branching
off a
discussion on
ovs-dev at
this point:<br>
<a
moz-do-not-send="true"
href="http://openvswitch.org/pipermail/dev/2015-February/051609.html"
target="_blank">http://openvswitch.org/pipermail/dev/2015-February/051609.html</a>]<br>
<br>
On Fri, Feb
20, 2015 at
6:56 PM, Kyle
Mestery <<a
moz-do-not-send="true" href="mailto:mestery@mestery.com" target="_blank">mestery@mestery.com</a>>
wrote:<br>
> One thing
to keep in
mind, this
ties somewhat
into my
response to
Russell<br>
> earlier
on the
decision
around ML2 vs.
core plugin.
If we do ML2,
there are<br>
> type
drivers for
VLAN, VXLAN,
and GRE
tunnels. There
is no
TypeDriver for<br>
> STT
tunnels
upstream now.
It's just an
item we need
on the TODO
list if we<br>
> go down
the STT tunnel
path.<br>
<br>
It was
suggested to
me off-list
that this part
of the
discussion
should be on<br>
openstack-dev,
so here it is
;-)<br>
<br>
__________________________________________________________________________<br>
OpenStack
Development
Mailing List
(not for usage
questions)<br>
Unsubscribe: <a
moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a
moz-do-not-send="true"
href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
__________________________________________________________________________<br>
OpenStack Development
Mailing List (not for
usage questions)<br>
Unsubscribe: <a
moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a moz-do-not-send="true"
href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
</div>
</div>
<span><font color="#888888">-- <br>
<div>
<div>Kevin Benton</div>
</div>
</font></span></div>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List
(not for usage questions)<br>
Unsubscribe: <a
moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a moz-do-not-send="true"
href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for
usage questions)<br>
Unsubscribe: <a moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a moz-do-not-send="true"
href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
</div>
</div>
<br>
</div>
</div>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage
questions)<br>
Unsubscribe: <a moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a moz-do-not-send="true"
href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: <a class="moz-txt-link-abbreviated" href="mailto:OpenStack-dev-request@lists.openstack.org?subject:unsubscribe">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a>
<a class="moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>