[openstack-dev] Quantum L3 router, mixin or plugin?

Salvatore Orlando sorlando at nicira.com
Mon Nov 12 14:12:00 UTC 2012


Hello again!
Comments inline

Salvatore

On 12 November 2012 12:04, Bob Melander (bmelande) <bmelande at cisco.com>wrote:

>  My original thinking (given that others would agree that separate
> plugin(s) for L3/routing is a good idea, and it seems people do) was to
> start modestly by simply refactoring the mixin to become a plugin, adhering
> to the SI framework being developed. Getting that into Grizzly would be a
> good baseline. I think this is also what you were proposing in your "9
> november 2012 13:56" email?
>

Agreed. In a previous email I had a comment concerning xxx_l3_yyy functions
in the base plugins. Some people who read this thread misunderstood this as
entangling L2 and L3 concepts in a way such that a network would be always
associated with a L3 forwarding element. This kind of brought the thread a
little bit off topic. I think your last paragraph summarises very well our
goal.


> I'm willing to do work on this, or actually I am doing work on it already
> that hopefully can be of use. I understand you're going to migrate the L3
> API to core and these two efforts clearly have connections.
>

If you look at the service insertion patch on gerrit, one assumption there
is that there is a 1:1 relationship between API extensions and services.
While this works well for 'new' services which will be inserted as API
extension, will need some more thought from us on how to wire something
which is part of core API onto the new l3 plugin. Also, I am not sure we
want to have a URI prefix for router and floating IP operations, as
currently required by the SI framework, due to backward compatibiltiy
reasons.


>  About your comment/question about further decomposing the different L3
> routing functionality into separate L3 plugins, my spontaneous proposal is
> to keep it as one plugin for now. Then as discussions and work evolve on
> the L3 APIs, VPNs, NAT etc we can revisit this and make further splits if
> that turns out to make sense.
>

I totally agree, that was my thinking too.


>
>  / Bob
>
>
>
>   From: Salvatore Orlando <sorlando at nicira.com>
>
> Reply-To: OpenStack Development Mailing List <
> openstack-dev at lists.openstack.org>
> Date: fredag 9 november 2012 15:35
> To: OpenStack Development Mailing List <openstack-dev at lists.openstack.org>
>
> Subject: Re: [openstack-dev] Quantum L3 router, mixin or plugin?
>
>  I did not notice Bob already filed a blueprint.
> This is good for me as it saves me some time :)
>
>  Do you have already a plan for delivering this work item? Let me know if
> I can help in any way.
>
>  Salvatore
>
> On 9 November 2012 15:26, Salvatore Orlando <sorlando at nicira.com> wrote:
>
>> Replies inline.
>>
>>  On 9 November 2012 15:03, Ian Wells <ijw.ubuntu at cack.org.uk> wrote:
>>
>>>  On 9 November 2012 12:42, Bob Melander (bmelande) <bmelande at cisco.com>wrote:
>>>
>>>>  Ok, I'm willing to work on this and I've created a blueprint to kick
>>>> it off (
>>>> https://blueprints.launchpad.net/quantum/+spec/quantum-l3-routing-plugin
>>>> )
>>>>
>>>>  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  create_network(…)make calls to
>>>> mixin functions such as _process_l3_create(…),
>>>> _extend_network_dict_l3(…), _process_l3_update(…):
>>>>
>>>>
>>>>  self._process_l3_create(context, network['network'], net['id'])
>>>>
>>>>>>>>
>>>> self._extend_network_dict_l3(context, net)
>>>>
>>>
>>> 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.
>>>
>>
>>  That how we do it, actually.
>>
>>  1) POST /networks
>> Create a l2 network
>> 2) POST /subnets with reference in body to previously created network
>> Defines a IP address range on the L2 network
>> 3) POST /routers
>> Defined a l3 forwarding element
>> 4) PUT /routers/<router-id>/add-router-interface
>> Connects a subnet to a router
>>
>>
>>
>>>  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?)
>>>
>>
>>  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.
>>
>>
>>>
>>> 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.
>>>
>>
>>  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.
>>
>>
>>>
>>>
>>> --
>>> Ian.
>>>
>>>
>>> _______________________________________________
>>> OpenStack-dev mailing list
>>> OpenStack-dev at lists.openstack.org
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>
>>>
>>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20121112/e5719bce/attachment.html>


More information about the OpenStack-dev mailing list