<div dir="ltr"><div>Even ignoring integration with other VXLAN based drivers inside of a segment, using ML2 can allow someone to run a network with a mix of segments using different segmentation types. As long as the OVN driver understands which ports it is capable of binding, it can coexist with other drivers and allow heterogenous setups 'for free'.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 24, 2015 at 1:19 AM, Salvatore Orlando <span dir="ltr"><<a 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 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><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><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 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 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 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 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 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 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 href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a 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 href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a 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 href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a 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 href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a 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 href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a 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>-- <br><div class="gmail_signature"><div>Kevin Benton</div></div>
</div>