<div dir="ltr">I'm hoping someone can tell me whether this behavior is expected or not.<div><br></div><div>I am using BIRD as a RR, and running into a behavior where modifying a policy, within a function called by a filter, requires a hard BGP session reset or stop/start of BIRD, rather than a 'configure soft.' Route Refresh is supported by the RR client.</div><div><div><br></div><div>I am using a unique filter for each RR client; each filter calls a function that is shared amongst all filters -- basically matching routes that all RR clients should receive. This was first instantiated with a single BGP community match in the function, and a 'configure soft' worked fine. I then went back and added a second if statement to the function, expecting 'configure soft' to put the new policy into effect, but what I noticed is that the only way for RR clients to receive the newly accepted routes was to hard down/up the BGP session.</div><div><br></div><div>Anecdotally, a 'show route filter router1_out' (after 'configure soft') did match the routes I was expecting the RR client to receive, but until the BGP session was hard cleared to the RR client, they were not advertised by BIRD.</div><div><br></div><div>Here is the relevant configuration (I've bolded the new configuration that was added, which did not result in an advertisement to the RR client):</div><div><br></div><div><div><font face="monospace, monospace"># RR client template</font></div><div><font face="monospace, monospace">template bgp rr_client {</font></div><div><font face="monospace, monospace">    description "Template for route reflector clients";</font></div><div><font face="monospace, monospace">        local as 65412;</font></div><div><font face="monospace, monospace">        hold time 180;</font></div><div><font face="monospace, monospace">        source address 2.2.2.2 ;</font></div><div><font face="monospace, monospace">        rr client;</font></div><div><font face="monospace, monospace">        rr cluster id 1.1.1.1;</font></div><div><font face="monospace, monospace">        import all;</font></div><div><font face="monospace, monospace">        export none;</font></div><div><font face="monospace, monospace">        add paths;</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"># Globally reflected routes function</font></div><div><font face="monospace, monospace">function global_routes() {</font></div><div><font face="monospace, monospace">   # Match 65000-65499,100-200</font></div><div><font face="monospace, monospace">    if bgp_community ~ [(65000..65499,100..200)] then accept;</font></div><div><font face="monospace, monospace"><b>   # Match 65000-65499,300-400</b></font></div><div><font face="monospace, monospace"><b>    if bgp_community ~ [(65000..65499,300..400)] then accept;</b></font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"># Outbound filter for router1</font></div><div><font face="monospace, monospace">filter router1_out {</font></div><div><font face="monospace, monospace">  global_routes();</font></div><div><font face="monospace, monospace">  reject;</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">protocol bgp 'router1' from rr_client {</font></div><div><font face="monospace, monospace">    neighbor 1.2.3.4 as 65412;</font></div><div><font face="monospace, monospace">    import all;</font></div><div><font face="monospace, monospace">    export filter router1_out;</font></div><div><font face="monospace, monospace">}</font></div><div><div class="gmail_signature"><br></div><div class="gmail_signature">As mentioned, the output of 'show route filter router1_out' (after a 'configure soft') did return the expected routes, but they were not advertised to the 'router1' RR client until the session was hard cleared.</div><div class="gmail_signature"><br></div><div class="gmail_signature">Is this expected behavior?</div><div class="gmail_signature"><br>-- Eric Cables</div></div>
</div></div></div>