Hi again,<div><br></div><div>Network creation does not, and will not, imply a Layer 3 network. Quantum will continue to support L-2 only domains, and this is what you will get when you create a network.</div><div><br></div>
<div>On the "infamous" routed insertion mode, I think it's been interpreted in all the possible ways from the community, but unfortunately not in the way it was originally proposed. Anyway, it won't definitely be the only way of plugging 'advanced' services in a quantum network.</div>
<div><br></div><div>It is my opinion the framework of network services exposed by Quantum, intended as the set of services offered to final users, will grow over the course of several releases, and will eventually encompass all the services highlighted in Alan's comprehensive diagram. Taking the current implementation of the L3 API extension, and splitting it over one or more plugins is surely an important step, and in my opinion is orthogonal to the discussion about how these services should be place in the tenant's logical topology.</div>
<div><br></div><div>A question worth asking is whether the L3 API, which provides l3 forwarding, external gw through SNAT, and floating IPs through DNAT, should all be implemented by a single plugin, or whether there's actually the case for multiple independent plugins.</div>
<div><br></div><div>Salvatore</div><div><br></div><div><br><br><div class="gmail_quote">On 9 November 2012 23:43, Alan Kavanagh <span dir="ltr"><<a href="mailto:alan.kavanagh@ericsson.com" target="_blank">alan.kavanagh@ericsson.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-CA" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">So I believe that’s a very good point and one I firmly support, we should not enforce that issuing a Create_network implies you do an L-3 network and does not
 imply you tie this network to a router, fully agree we should avoid that as depending on the Virtual Networking Services you want to add that will then determine the need for other Networking Services such as a “Router”.<u></u><u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Alan<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Salvatore Orlando [mailto:<a href="mailto:sorlando@nicira.com" target="_blank">sorlando@nicira.com</a>]
<br>
<b>Sent:</b> November-09-12 9:27 AM</span></p><div class="im"><br>
<b>To:</b> OpenStack Development Mailing List<br>
</div><div class="im"><b>Subject:</b> Re: [openstack-dev] Quantum L3 router, mixin or plugin?<u></u><u></u></div><p></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">Replies inline.<u></u><u></u></p><div><div class="h5">
<div>
<p class="MsoNormal">On 9 November 2012 15:03, Ian Wells <<a href="mailto:ijw.ubuntu@cack.org.uk" target="_blank">ijw.ubuntu@cack.org.uk</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">On 9 November 2012 12:42, Bob Melander (bmelande) <<a href="mailto:bmelande@cisco.com" target="_blank">bmelande@cisco.com</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Ok, I'm willing to work on this and I've created a blueprint to kick it off (<a href="https://blueprints.launchpad.net/quantum/+spec/quantum-l3-routing-plugin" target="_blank">https://blueprints.launchpad.net/quantum/+spec/quantum-l3-routing-plugin</a>)<u></u><u></u></span></p>

</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">I too think VRRP (and some other features) would be nice to add. However, the first steps would be to take the inherited mixin and transform that into a plugin. That ought
 to be possible with fairly limited effort. Though there are some dependencies that need to be sorted out. In particular, core plugin methods like </span><span style="font-size:9.0pt;font-family:"Helvetica","sans-serif""> </span><span style="font-size:9.0pt;font-family:Courier">create_network(…)</span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">make
 calls to mixin functions such as </span><span style="font-size:9.0pt;font-family:Courier">_process_l3_create(…), _extend_network_dict_l3(…), _process_l3_update(…):</span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>

</div>
<p style="margin:0cm;margin-bottom:.0001pt;min-height:14px"><span style="font-size:9.0pt;font-family:Courier"><u></u> <u></u></span></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:9.0pt;font-family:Courier">self._process_l3_create(context, network['network'], net['id'])<u></u><u></u></span></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:9.0pt;font-family:Courier">…<u></u><u></u></span></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:9.0pt;font-family:Courier">self._extend_network_dict_l3(context, net)<u></u><u></u></span></p>
</div>
</div>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><br>
One point here is that I would like to be able to create an unrouted network.  Creating a network *with* a router is a composite call (and in any case, shouldn't I be able to create a network and add a router later on?) and I don't think that functionality
 should be baked into create_network if we can avoid it. <u></u><u></u></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">That how we do it, actually.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">1) POST /networks<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Create a l2 network<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">2) POST /subnets with reference in body to previously created network<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Defines a IP address range on the L2 network<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">3) POST /routers<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Defined a l3 forwarding element<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">4) PUT /routers/<router-id>/add-router-interface<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Connects a subnet to a router<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">I'm aware this breaks backward compatibility in the way I've described it, but just my 2c.  (Perhaps create_network becomes a thin wrapper over a more fundamental call, create_bare_network?)<u></u><u></u></span></p>

</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">The methods pointed out by Bob are not really for creating a router with a network; they are for managing the additions that the l3 API extensions makes to the "network" resource in order to handle "external" networks properly. I have more
 on then in my previous post.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><br>
There's reasons why you might want that: in a layered application, HA -> cache -> web appservers  -> DB for instance, most of the inner networks you might create for such a topology have no need of external routeability.  At the moment the rule seems to be
 'if you don't need it, don't use it' but it would be nice to simply not have the router there in the first place.<u></u><u></u></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Totally agree. Quantum v1 actually did not have any router and built multi-tier topologies as you describe them. The router is not necessary, and if you don't need it it does not get created.<u></u><u></u></p>

</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#888888"><br>
<br>
<span>-- </span><br>
<span>Ian.</span></span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</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><u></u><u></u></p>
</blockquote>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div></div></div>
</div>

<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</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>