<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>"I'm partial to an "agent_mode" flag which will toggle the
      router..."</p>
    <p>In my previous email I mention being in favor of not overloading
      agent_mode, I realized I had a typo that might be confusing. I'm
      partial to introducing something like "agent_backend" for toggling
      OVS vs. namespace routers, not "agent_mode". Sorry for the typo.</p>
    <p>-Ryan<br>
    </p>
    <div class="moz-cite-prefix">On 1/31/19 10:02 AM, Ryan Tidwell
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:c9f2c904-9b5b-ba5b-363c-0e3a2a53121e@suse.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <p><br>
      </p>
      <div class="moz-cite-prefix">On 1/29/19 1:25 AM, Duarte Cardoso,
        Igor wrote:<br>
      </div>
      <blockquote type="cite"
cite="mid:E09EC9A2DDB2914E953966C44BEF9CF633F86A76@ORSMSX103.amr.corp.intel.com">
        <meta http-equiv="Content-Type" content="text/html;
          charset=windows-1252">
        <meta name="Generator" content="Microsoft Word 15 (filtered&#xA;
          medium)">
        <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
        <div class="WordSection1">
          <p class="MsoNormal">Hi Neutron,<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">I've been internally collaborating on the
            ``dvr_bridge`` L3 agent mode [1][2][3] work (David
            Shaughnessy, Xubo Zhang), which allows the L3 agent to make
            use of Open vSwitch / OpenFlow to implement ``distributed``
            IPv4 Routers thus bypassing kernel namespaces and iptables
            and opening the door for higher performance by keeping
            packets in OVS for longer.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">I want to share a few questions in order
            to gather feedback from you. I understand parts of these
            questions may have been answered in the past before my
            involvement, but I believe it's still important to revisit
            and clarify them. This can impact how long it's going to
            take to complete the work and whether it can make it to
            stein-3.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">1. Should OVS support also be added to
            the legacy router?<o:p></o:p></p>
          <p class="MsoNormal">And if so, would it make more sense to
            have a new variable (not ``agent_mode``) to specify what
            backend to use (OVS or kernel) instead of creating more
            combinations?</p>
        </div>
      </blockquote>
      Personally, I would like to see all routers implemented completely
      in the OVS data path. We can't do everything at once, so the
      DVR-first approach here seems reasonable to me. As to the question
      of config flags, agent_mode has a specific meaning. It effectively
      tells the agent what role it's playing (SNAT, SNAT_HA, etc.), not
      how to do it. dvr_bridge isn't a new mode, it's really a change to
      the backend implementation of the router (ie the "how"). Because
      of that, I'm partial to an "agent_mode" flag which will toggle the
      router implementation between OVS and namespace implementations.<br>
      <blockquote type="cite"
cite="mid:E09EC9A2DDB2914E953966C44BEF9CF633F86A76@ORSMSX103.amr.corp.intel.com">
        <div class="WordSection1">
          <p class="MsoNormal"><o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">2. What is expected in terms of CI for
            this? Regarding testing, what should this first patch
            include apart from the unit tests? (since the l3_agent.ini
            needs to be configured differently).<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">3. What problems can be anticipated by
            having the same agent managing both kernel and OVS powered
            routers (depending on whether they were created as
            ``distributed``)?<o:p></o:p></p>
          <p class="MsoNormal">We are experimenting with different ways
            of decoupling RouterInfo (mainly as part of the L3 agent
            refactor patch) and haven't been able to find the right
            balance yet. On one end we have an agent that is still
            coupled with kernel-based RouterInfo, and on the other end
            we have an agent that either only accepts OVS-based
            RouterInfos or only kernel-based RouterInfos depending on
            the ``agent_mode``.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">We'd also appreciate reviews on the 2
            patches [4][5]. The L3 refactor one should be able to pass
            Zuul after a recheck.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">[1] Spec: <a
              class="moz-txt-link-freetext"
              href="https://blueprints.launchpad.net/neutron/+spec/openflow-based-dvr"
              moz-do-not-send="true">https://blueprints.launchpad.net/neutron/+spec/openflow-based-dvr</a><o:p></o:p></p>
          <p class="MsoNormal">[2] RFE: <a
              class="moz-txt-link-freetext"
              href="https://bugs.launchpad.net/neutron/+bug/1705536"
              moz-do-not-send="true">https://bugs.launchpad.net/neutron/+bug/1705536</a><o:p></o:p></p>
          <p class="MsoNormal">[3] Gerrit topic:
            <a class="moz-txt-link-freetext"
href="https://review.openstack.org/#/q/topic:dvr_bridge+(status:open+OR+status:merged)"
              moz-do-not-send="true">https://review.openstack.org/#/q/topic:dvr_bridge+(status:open+OR+status:merged)</a><o:p></o:p></p>
          <p class="MsoNormal">[4] L3 agent refactor patch: <a
              class="moz-txt-link-freetext"
              href="https://review.openstack.org/#/c/528336/29"
              moz-do-not-send="true">https://review.openstack.org/#/c/528336/29</a><o:p></o:p></p>
          <p class="MsoNormal">[5] dvr_bridge patch: <a
              class="moz-txt-link-freetext"
              href="https://review.openstack.org/#/c/472289/17"
              moz-do-not-send="true">https://review.openstack.org/#/c/472289/17</a><o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Thank you!<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal"><span lang="EN-IE">Best regards,<o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-IE">Igor D.C.<o:p></o:p></span></p>
          <p class="MsoNormal"><o:p> </o:p></p>
        </div>
      </blockquote>
      -Ryan<br>
    </blockquote>
  </body>
</html>