<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered 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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 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:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Syed,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In addition to what Mark had mentioned, couple of inputs below.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For #2: Yes, currently there is no MAC learning through FPM and FPM can’t inject any information back to Zebra. We have a similar need and we are planning to add a custom channel through which MACs can be injected to Zebra/BGP so that BGP
 can pick them and advertise as Type-2 route advertisements. I can provide more details on the design and other things at later point.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For #3: Could you please check if the below PR addresses this requirement ?<o:p></o:p></p>
<p class="MsoNormal"><a href="https://github.com/FRRouting/frr/pull/4293">https://github.com/FRRouting/frr/pull/4293</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Mohan<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></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:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">dev <dev-bounces@lists.frrouting.org> on behalf of Mark Stapp <mjs@voltanet.io><br>
<b>Date: </b>Tuesday, July 23, 2019 at 8:53 AM<br>
<b>To: </b>Syed Hasan Raza Naqvi <syed.naqvi@broadcom.com><br>
<b>Cc: </b>FRRouting-Dev <dev@lists.frrouting.org><br>
<b>Subject: </b>Re: [dev] FPM-Zebra interactions and EVPN MAC route handing<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">Hi Hasan,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">FPM in one-way: it's a way of making some of zebra's information available to an external consumer. As you observed, it's not possible to use FPM to influence what information zebra holds or how it processes the information it receives.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">We've begun adding a dataplane subsystem to zebra that is designed to be more complete, and to be bi-directional. The zebra dataplane is asynchronous, and it supports plugins to implement support for a system's forwarding path - the default
 plugin supports the local kernel, for example. We've moved ip route programming, interface address programming, and LSP programming into this kernel plugin so far. You can take a look at zebra/zebra_dplane.[ch] to see how the current support works.  I'll be
 working on EVPN this summer, as a matter of fact, and hopefully we'll be able to offer a useful set of features.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-- Mark<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Mon, Jul 22, 2019 at 5:00 PM Syed Hasan Raza Naqvi via dev <<a href="mailto:dev@lists.frrouting.org">dev@lists.frrouting.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal"><br>
<br>
<br>
---------- Forwarded message ----------<br>
From: Syed Hasan Raza Naqvi <<a href="mailto:syed.naqvi@broadcom.com" target="_blank">syed.naqvi@broadcom.com</a>><br>
To: <a href="mailto:dev@lists.frrouting.org" target="_blank">dev@lists.frrouting.org</a><br>
Cc: <br>
Bcc: <br>
Date: Mon, 22 Jul 2019 13:58:07 -0700<br>
Subject: FPM-Zebra interactions and EVPN MAC route handing<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Hi,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I have below queries related to Zebra-FPM interaction and EVPN MAC handling in FRR. Would appreciate if someone could answer. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">(1)  First of all, I don't see any communication from Fpm to Zebra today. The code in Zebra just de-queues from the fpm socket and discards.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    zebra_fpm.c:<span style="font-size:9.0pt;font-family:Consolas;color:#6F42C1">zfpm_read_cb() ...</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:Consolas;color:#6F42C1">/*</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:Consolas;color:#6F42C1">* Just throw it away for now. */</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    Wondering if we never had a situation where specific info or feedback is required from Fpm? <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    For example, the route installation errors in Fpm communicated back to Zebra?<span style="font-size:9.0pt;font-family:Consolas;color:#6F42C1"><br>
<br>
</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">(2) This question is related to above. In systems where L2 forwarding/learning is achieved in hardware (asic) forwarding plane, not all of the MACs will be available in Linux FDB. Only the MACs which were learned due to ARP/ND would be
 present in Linux FDB.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">    In such a case, it might be better to inject the local MACs into Zebra directly from Fpm. But looks like the only way for local MACs to be advertised into EVPN is to somehow inject  them into Linux FDB and let Zebra learn from Linux.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">    Is this correct understanding? And will it be acceptable to introduce a knob in zebra to get the local MACs from Fpm instead of Linux FDB?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">(3) On the similar lines as above, not all of the remote EVPN MACs need to be present in Linux FDB. Only those MACs which have corresponding IP (ARP/ND) are required in Linux FDB. In such a case, it might be better to selectively install
 MACs into Linux, and send all of the EVPN MACs to Fpm so that they can be installed in asic. But I don't see zebra gives any MAC to Fpm. I would like to hear the rationale behind this as well. And is it a good idea to introduce a knob in Zebra to achieve it?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks in advance!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Hasan<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>