<div dir="ltr"><div><div>Hi mohammad,<br><br></div>What I meant in my email is totaly in line with your proposal. My dataplane driver is your resource driver, whereas my controlplane driver is your agent driver!<br></div><div>
I totally agree that the real challenge is defining a common abstract class for every resource driver.<br></div><div>My proposal was to bind a port to a resource driver, so that we can have several resource driver on the same agent. This seems to be the goal the method <span class=""><b> ResourceDriver</b></span><span class=""><b>.port_bound() </b>in [3], am I wrong?<br>
<br></span></div><div><span class="">Tahnks for the etherpad, I will try to participate through it.<br><br></span></div><div><span class="">Mathieu<br></span></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Sat, May 31, 2014 at 5:10 AM, Mohammad Banikazemi <span dir="ltr"><<a href="mailto:mb@us.ibm.com" target="_blank">mb@us.ibm.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<p><font face="sans-serif">Hi Mathieu,</font><br>
<br>
<font face="sans-serif">Thanks for the email. As discussed during the ML2 IRC meeting [2], we have not decided on a design. That is why we do not have a spec for review yet. The idea is that we spend a bit more time and figure out the details and try out some possible options before we go ahead with the spec. So new comments/suggestions are much appreciated.</font><br>

<br>
<font face="sans-serif">In addition to having different drivers we want to reduce the code replication across current agents. I am wondering if with what you are proposing as dataplane drivers, we will end up with having different drivers which look like the current agents and we do not deal with reducing code replication across agents. If this is not a correct assessment could you describe how we can avoid code replication across agents/drivers.</font><br>

<br>
<font face="sans-serif">Let me briefly explain what I have outlined in [3] (also mentioned in [2]). We are thinking of having drivers for each extension or probably better said each functionality. So we can have a base l2 connectivity driver, an l2pop driver, a sg driver (not to be confused with sq drivers), so on so forth. I think in your email you are referring to these drivers (or something close to them) as Extension drivers. In [3] they are called Agent Drivers.</font><br>

<br>
<font face="sans-serif">Then we have the Resource Drivers which will be essentially used for realizing these features depending on the technology/resource being used (e.g., using  OVS switches, or Linux Bridges, or some other technology). The main reason for using such a organization is to be able to have different agent drivers utilize the same resource and reuse code. The challenge is figuring out the api for such a driver. Any thoughts on this?</font><br>

<br>
<font face="sans-serif">Mohammad</font><br>
<br>
<font face="sans-serif">[3] </font><font face="sans-serif"><a href="https://etherpad.openstack.org/p/modular-l2-agent-outline" target="_blank">https://etherpad.openstack.org/p/modular-l2-agent-outline</a></font><br>
<br>
<br>
<img src="cid:1__=0ABBF67BDFF856DC8f9e8a93df938@us.ibm.com" alt="Inactive hide details for Mathieu Rohon ---05/30/2014 06:25:29 AM---Hi all, Modular agent seems to have to choose between two t" width="16" border="0" height="16"><font color="#424282" face="sans-serif">Mathieu Rohon ---05/30/2014 06:25:29 AM---Hi all, Modular agent seems to have to choose between two type of architecture [1].</font><br>

<br>
<font size="1" color="#5F5F5F" face="sans-serif">From:      </font><font size="1" face="sans-serif">Mathieu Rohon <<a href="mailto:mathieu.rohon@gmail.com" target="_blank">mathieu.rohon@gmail.com</a>></font><br>
<font size="1" color="#5F5F5F" face="sans-serif">To:        </font><font size="1" face="sans-serif">OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>>, Mohammad Banikazemi/Watson/IBM@IBMUS, </font><br>

<font size="1" color="#5F5F5F" face="sans-serif">Date:      </font><font size="1" face="sans-serif">05/30/2014 06:25 AM</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Subject:   </font><font size="1" face="sans-serif">[openstack-dev][Neutron][ML2] Modular agent architecture</font><br>
</p><hr style="color:#8091a5" size="2" width="100%" align="left" noshade><div><div class="h5"><br>
<br>
<br>
<tt><font>Hi all,<br>
<br>
Modular agent seems to have to choose between two type of architecture [1].<br>
<br>
As I understood during the last ML2 meeting [2], Extension driver<br>
seems to be the most reasonnable choice.<br>
But I think that those two approaches are complementory : Extension<br>
drivers will deal with RPC callbacks form the plugin, wheras Agent<br>
drivers will deal with controlling the underlying technology to<br>
interpret those callbacks.<br>
<br>
It looks like a controlPlane/Dataplane architecture. Could we have a<br>
control plane manager on which each Extension driver should register<br>
(and register callbacks it is listening at), and a data plane manager,<br>
on which each dataplane controller will register (ofagent, ovs, LB..),<br>
and which implement a common abastract class.<br>
A port will be managed by only one dataplane controller, and when a<br>
control plane driver wants to apply a modification on a port, it will<br>
retrieve the correct dataplane controller for this port in order to<br>
call one of the abstracted method to modify the dataplane.<br>
<br>
<br>
[1]</font></tt><tt><font><a href="https://wiki.openstack.org/wiki/Neutron/ModularL2Agent#Possible_Directions" target="_blank">https://wiki.openstack.org/wiki/Neutron/ModularL2Agent#Possible_Directions</a></font></tt><tt><font><br>

[2]</font></tt><tt><font><a href="http://eavesdrop.openstack.org/meetings/networking_ml2/2014/networking_ml2.2014-05-28-16.02.log.html" target="_blank">http://eavesdrop.openstack.org/meetings/networking_ml2/2014/networking_ml2.2014-05-28-16.02.log.html</a></font></tt><tt><font><br>

<br>
</font></tt><br>
</div></div><p></p></div>
</blockquote></div><br></div>