Yes, realistically, the blueprint should have said "avoid expensive polling
when using l3-agent".  During Folsom, the way we did this for the L2-agents
was introducing an RPC-layer, so that is what we named this blueprint, but
in hindsight that is specifying the mechanism, not the goal.

Dan

On Tue, Nov 13, 2012 at 2:28 PM, Mark McClain <[email protected]>wrote:

> Sorry for the delay responding.  I wanted to read through the proposed
> review which was updated overnight.
>
> I think the current direction of the code is starting to head in the right
> direction, but I don't think it goes far enough.  I was thinking about the
> problem on my run today and realized that part of the issue might be the
> blueprint description.  The blueprint summary and title say to convert to
> RPC, but in reality all that is needed is a combination of notifications
> (which are already emitted by Quantum) and targeted API calls.  Adding RPC
> actually increases the complexity and number of changes and essentially
> duplicates notification functionality.
>
> At DreamHost, we we built our own L3 router service based off Quantum's
> notifications and http api.  Using both, we were able to keep the existing
> agent/server relationship and improve the communication efficiency by only
> making requests when needed.  Another benefit to this design was that we
> were able to keep the number of files changed to a minimum: one
> (l3_agent.py).
>
> mark
>
> PS:  I'm working get that code open sourced, so folks can take a look.
>
> On Nov 13, 2012, at 7:54 AM, Gary Kotton <[email protected]> wrote:
>
>  Hi,
> I too have added some comments to the document.
> Thanks
> Gary
>
>
> On 11/13/2012 12:06 PM, Salvatore Orlando wrote:
>
> Hi Yong,
>
>  I added some more comments on the google document.
> I don't think this design is bad. Still, I believe we can smooth some
> details in order to keep the efficiency improvement that you are achieving
> with a lesser impact on the plugin.
>
>  I also have some more comments inline.
>
>  Thanks,
> Salvatore
>
> On 12 November 2012 23:50, gong yong sheng <[email protected]>wrote:
>
>>  Hi salv-orlando and markmcclain,
>>
>> There is no email back for a long time since I sent out the spec, So I
>> had not paid attention to the spec for a while.
>>
>
>  I do apologise for that. However, as you know, when this happens it's
> not because we're deliberately ignoring the work.
>
>
>>  I have replied mark's comments.
>>
>> I have to say, this design is of high efficiency.
>>
>
>  I agree that the goal will be to increase efficiency of the interface
> between the plugin and the agent.
>
>
>>  1. l3 agent does not bug server many times within a sync cycle.
>>
>
>  Agreed, but I suspect we'll be paying an undesired price in terms of
> scalability of the server side component.
> I have some comments on the google document and a suggestion for an
> alternative, which I'm pretty sure you've already considered. So it's up to
> you telling me why the alternative would be worse than the solution you're
> proposing :)
>
>
>>  2. We use adjustable periodical time to sync data so that even if
>> administrator operates routers' data in a frequent manner,
>> the system's behaviour can be expected. There is no notification and data
>> exchange between l3 agent and quantum server for every
>> router operation. This will create latency between router update and
>> putting into operation. Of course, we can modify the algorithm so that
>> l3 agent will sync data after each router and its related data modified.
>> ( including created, deleted, updated)
>>
>
>  I found interesting that you are seeing periodic sync as a better
> approach compared to notifications. I agree the period of synchronization
> is tuneable, and expert deployers will be able to analyse their traffic
> pattern and find the optimal sync period. Still, notifications is a widely
> and successfully used mechanism in a wide set of apps. So I'm curious to
> hear why you think they might not be as good as periodic syn in our case.
>
>   interface the interface between quantum server and l3 agent is simple:
>> l3 agent -> quantum server:
>> sync_routers(host, synctype)
>> synctype is full sync and incremental sync.
>> first time is full sync and then we will use incremental sync for normal
>> operations.
>> If sync
>> quantum server -> l3 agent
>> router_deleted(router_id)
>>
>
>  Are you explicitly using notifications for delete events in order to
> avoid the need for soft deletes?
> From what I gather the sync mechanism is not able to cope with object
> deletions.
> Soft deletes are actually my biggest concern. Is this the only kind of
> notification you're looking at?
>
>   Data structure on server side: mapper for l3 agents' sync object:quantum 
> server keeps a mapper for sync objects of agents:
>> sync object is just keeping last sync time
>>
>> to deal with quantum server restart:
>> quantum server will start full sync for coming sync to re build the cache.
>>
>
>  I don't understand this bit. Will the quantum server a notification to
> all agents inviting them to do a full sync?
>
>
>>  to deal with l3 agent restarts:
>> l3 agent will use full sync to replace the sync object on the server side.
>>
>
>  This is pretty much clear.
>
>>
>> big router concept on server side, we have a concept of a big router:
>> include router,  its gateway port, its interfaces and related floating ips.
>>
>> one sync will sync all of these data by one shot from server to l3 agent.
>>
>> with multi-host and multi-l3 agents coming, we will be able to distribute
>> the big routers among l3 agents. so don't worry about the data size in one
>> sync.
>>
>
>  Indeed. But why worry about maintaining the last sync state for a lot of
> agents? I know your answer would be that it's just a data structure which
> maps an agent id to a timestamp, and it's a good argument. But we'll also
> have increased state because of the added fields, and increased computation
> logic as you'll need to scan all objects for veryfing whether more have
> been created/updated since last sync, and the number of those object can
> grow quite a lot.
>
>
>>
>> patches are: Add created_at and updated_at datetime 
>> columns.<https://review.openstack.org/#/c/15476/>I think adding created_at 
>> and updated_at are agreed by many core members,
>> even if we don't agree the sync way.
>> l3 agent rpc. (WORKINPROGRESS) <https://review.openstack.org/#/c/15619/>It 
>> is sync algorithm by now.
>>
>> Thanks
>> Yong Sheng Gong
>>
>>
>>
>> --
>> Mailing list: https://launchpad.net/~quantum-core
>> Post to     : [email protected]
>> Unsubscribe : https://launchpad.net/~quantum-core
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>
>
>
>  --
> Mailing list: https://launchpad.net/~quantum-core
> Post to     : [email protected]
> Unsubscribe : https://launchpad.net/~quantum-core
> More help   : https://help.launchpad.net/ListHelp
>
>
>
> --
> Mailing list: https://launchpad.net/~quantum-core
> Post to     : [email protected]
> Unsubscribe : https://launchpad.net/~quantum-core
> More help   : https://help.launchpad.net/ListHelp
>
>


-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dan Wendlandt
Nicira, Inc: www.nicira.com
twitter: danwendlandt
~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 
Mailing list: https://launchpad.net/~quantum-core
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~quantum-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to