<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif;font-size:large;color:#000000">Hi,</div><div class="gmail_default" style="font-family:georgia,serif;font-size:large;color:#000000">Does it make sense also to have the choice between ovs-ofctl CLI and a direct OF1.3 connection too in the ovs-agent?</div>

<div class="gmail_default" style="font-family:georgia,serif;font-size:large;color:#000000"><br></div><div class="gmail_default" style="font-family:georgia,serif;font-size:large;color:#000000">Best Regards,</div><div class="gmail_default" style="font-family:georgia,serif;font-size:large;color:#000000">

Racha</div><div class="gmail_default" style="font-family:georgia,serif;font-size:large;color:#000000"><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 17, 2014 at 10:25 AM, 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<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">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">from controller.<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">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">on POC’ing of such a change.<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">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: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">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">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: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">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">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:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">intelligently/appropriately.
<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">--<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Thanks,<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">Vivek<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"><u></u> <u></u></span></p>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;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:12.0pt"><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>