<div dir="ltr">Mine wasn't really a serious suggestion, Neutron's controlling logic is already bloated as it is, and my personal opinion would be in favor of a leaner Neutron Server rather than a more complex one; adding more controller-like logic to it certainly goes against that direction :)<div>

<br></div><div>Having said that and as Vivek pointed out, using ovsdb gives us finer control and ability to react more effectively, however, with the current server-agent rpc framework there's no way of leveraging that...so in a grand scheme of things I'd rather see it prioritized lower rather than higher, to give precedence to rearchitecting the framework first.</div>

<div><br></div><div>Armando</div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On 17 June 2014 19:25, Narasimhan, Vivekanandan <span dir="ltr"><<a href="mailto:vivekanandan.narasimhan@hp.com" target="_blank">vivekanandan.narasimhan@hp.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Managing the ports and plumbing logic is today driven by L2 Agent, with little assistance
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">from controller.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">If we plan to move that functionality to the controller,  the controller has to be more
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">heavy weight (both hardware and software)  since it has to do the job of L2 Agent for all
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">the compute servers in the cloud. , We need to re-verify all scale numbers for the controller<u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">on POC’ing of such a change.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">That said, replacing CLI with direct OVSDB calls in the L2 Agent is certainly a good direction.<u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Today, OVS Agent invokes flow calls of OVS-Lib but has no idea (or processing) to follow up
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">on success or failure of such invocations.  Nor there is certain guarantee that all such
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">flow invocations would be executed by the third-process fired by OVS-Lib to execute CLI.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">When we transition to OVSDB calls which are more programmatic in nature, we can
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">enhance the Flow API (OVS-Lib) to provide more fine grained errors/return codes (or content)
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">and ovs-agent (and even other components) can act on such return state more
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">intelligently/appropriately.
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">--<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Thanks,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Vivek<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<div style="border-style:solid none none;border-top-color:rgb(181,196,223);border-top-width:1pt;padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10pt;font-family:Tahoma,sans-serif">From:</span></b><span style="font-size:10pt;font-family:Tahoma,sans-serif"> Armando M. [mailto:<a href="mailto:armamig@gmail.com" target="_blank">armamig@gmail.com</a>]
<br>
<b>Sent:</b> Tuesday, June 17, 2014 10:26 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [Neutron][ML2] Modular L2 agent architecture<u></u><u></u></span></p>
</div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">just a provocative thought: If we used the ovsdb connection instead, do we really need an L2 agent :P?<u></u><u></u></p>
<div>
<p class="MsoNormal" style="margin-bottom:12pt"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On 17 June 2014 18:38, Kyle Mestery <<a href="mailto:mestery@noironetworks.com" target="_blank">mestery@noironetworks.com</a>> wrote:<u></u><u></u></p>
<p class="MsoNormal">Another area of improvement for the agent would be to move away from<br>
executing CLIs for port commands and instead use OVSDB. Terry Wilson<br>
and I talked about this, and re-writing ovs_lib to use an OVSDB<br>
connection instead of the CLI methods would be a huge improvement<br>
here. I'm not sure if Terry was going to move forward with this, but<br>
I'd be in favor of this for Juno if he or someone else wants to move<br>
in this direction.<br>
<br>
Thanks,<br>
Kyle<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><br>
On Tue, Jun 17, 2014 at 11:24 AM, Salvatore Orlando <<a href="mailto:sorlando@nicira.com" target="_blank">sorlando@nicira.com</a>> wrote:<br>
> We've started doing this in a slightly more reasonable way for icehouse.<br>
> What we've done is:<br>
> - remove unnecessary notification from the server<br>
> - process all port-related events, either trigger via RPC or via monitor in<br>
> one place<br>
><br>
> Obviously there is always a lot of room for improvement, and I agree<br>
> something along the lines of what Zang suggests would be more maintainable<br>
> and ensure faster event processing as well as making it easier to have some<br>
> form of reliability on event processing.<br>
><br>
> I was considering doing something for the ovs-agent again in Juno, but since<br>
> we've moving towards a unified agent, I think any new "big" ticket should<br>
> address this effort.<br>
><br>
> Salvatore<br>
><br>
><br>
> On 17 June 2014 13:31, Zang MingJie <<a href="mailto:zealot0630@gmail.com" target="_blank">zealot0630@gmail.com</a>> wrote:<br>
>><br>
>> Hi:<br>
>><br>
>> Awesome! Currently we are suffering lots of bugs in ovs-agent, also<br>
>> intent to rebuild a more stable flexible agent.<br>
>><br>
>> Taking the experience of ovs-agent bugs, I think the concurrency<br>
>> problem is also a very important problem, the agent gets lots of event<br>
>> from different greenlets, the rpc, the ovs monitor or the main loop.<br>
>> I'd suggest to serialize all event to a queue, then process events in<br>
>> a dedicated thread. The thread check the events one by one ordered,<br>
>> and resolve what has been changed, then apply the corresponding<br>
>> changes. If there is any error occurred in the thread, discard the<br>
>> current processing event, do a fresh start event, which reset<br>
>> everything, then apply the correct settings.<br>
>><br>
>> The threading model is so important and may prevent tons of bugs in<br>
>> the future development, we should describe it clearly in the<br>
>> architecture<br>
>><br>
>><br>
>> On Wed, Jun 11, 2014 at 4:19 AM, Mohammad Banikazemi <<a href="mailto:mb@us.ibm.com" target="_blank">mb@us.ibm.com</a>><br>
>> wrote:<br>
>> > Following the discussions in the ML2 subgroup weekly meetings, I have<br>
>> > added<br>
>> > more information on the etherpad [1] describing the proposed<br>
>> > architecture<br>
>> > for modular L2 agents. I have also posted some code fragments at [2]<br>
>> > sketching the implementation of the proposed architecture. Please have a<br>
>> > look when you get a chance and let us know if you have any comments.<br>
>> ><br>
>> > [1] <a href="https://etherpad.openstack.org/p/modular-l2-agent-outline" target="_blank">
https://etherpad.openstack.org/p/modular-l2-agent-outline</a><br>
>> > [2] <a href="https://review.openstack.org/#/c/99187/" target="_blank">https://review.openstack.org/#/c/99187/</a><br>
>> ><br>
>> ><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><br>
>> ><br>
>><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><br>
><br>
><br>
><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><br>
><br>
<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>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</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></div></div>