<div dir="ltr">Hi Maria, <div><br></div><div>I had a question on (1). By 'primary' did you mean something similar to the 'preferred' keyword described on this thread? If so, does this include surrounding logic to take of scenarios where routes might not get advertised because of RA_ANY behavior? <br><br>Any idea of when these changes might get merged into master?</div><div><br></div><div>Thanks!</div><div>Trisha <br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><span style="color:rgb(136,136,136)">--</span><br style="color:rgb(136,136,136)"><div dir="ltr" style="color:rgb(136,136,136)"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><img src="https://www.fastly.com/img/sig.png"><br></div><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><b>Trisha Biswas</b> | Sr. Software Engineer, Network Systems</div><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><a href="http://fastly.com/" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">fastly.com</a> | <a href="https://twitter.com/fastly" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">@fastly</a> | <a href="http://www.linkedin.com/company/fastly" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">LinkedIn</a></div></div></div></div></div></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Feb 27, 2021 at 2:05 AM Maria Matějka <<a href="mailto:maria.matejka@nic.cz">maria.matejka@nic.cz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Hello!<br>I have recently done some substantial changes in route exports (in separate branches). I'd like to summarize what we are looking for.<br><br>1) have 'primary' in the filter and decide based on it<br>2) export 'first N routes' with sorted table<br><br>I suppose this may be possible in the new code which is currently placed into the guernsey branch. I'll try to implement something of that while refactoring exports. <br><br>Maria<br><br><div class="gmail_quote">On February 27, 2021 2:26:48 AM GMT+01:00, Trisha Biswas <<a href="mailto:tbiswas@fastly.com" target="_blank">tbiswas@fastly.com</a>> wrote:<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr"><div dir="ltr">Hi Ondrej,</div><div dir="ltr"><br></div><div dir="ltr">Thanks for evaluating the patch. It makes sense to use rte->flags to store the preferred path and access that from the filter code to get around the first issue.<br><br>For the second issue, it almost feels like there should be a separate mode of route announcement called RA_SELECTIVE. This would be exactly the same as RA_ANY, but in addition it would announce when routes change their REF_BEST. The RA_SELECTIVE mode could be enabled with a config option such as 'add paths tx selective;', so that we don't end up with lots of unnecessary announcements for BGP add-path. Previously, we had tried this by making RA_SELECTIVE a clone of RA_OPTIMAL, but that did not work well. Do you see issues with this approach up front?</div><div dir="ltr"><br></div><div>Thanks,</div><div>Trisha</div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><span style="color:rgb(136,136,136)">--</span><br style="color:rgb(136,136,136)"><div dir="ltr" style="color:rgb(136,136,136)"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><img src="https://www.fastly.com/img/sig.png"><br></div><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><b>Trisha Biswas</b> | Sr. Software Engineer, Network Systems</div><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><a href="http://fastly.com/" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">fastly.com</a> | <a href="https://twitter.com/fastly" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">@fastly</a> | <a href="http://www.linkedin.com/company/fastly" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">LinkedIn</a></div></div></div></div></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 26, 2021 at 3:53 PM Ondrej Zajicek <<a href="mailto:santiago@crfreenet.org" target="_blank">santiago@crfreenet.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, Feb 26, 2021 at 01:56:42PM -0800, Trisha Biswas wrote:<br>
> Hi all,<br>
> <br>
> The attached patch adds a 'preferred' route attribute to check whether the<br>
> route being processed has been selected as the best-path for the network it<br>
> belongs to. This attribute does not take in a value, and returns a boolean.<br>
> This is useful for allowing selection in an add-path enabled BGP session.<br>
<br>
Hi<br>
<br>
I agree this may be a useful feature, but there are two issues with the<br>
approach used in the patch:<br>
<br>
First, we would like not to access rte->net from the filters (outside of<br>
net_addr). We plan to remove this ptr and instead have ptr from rte<br>
directly to net_addr.<br>
<br>
Second, RA_ANY mode of route announcement (which is used by BGP add-path<br>
and pipes) would not really work with this change in a way how you expect<br>
- consider this scenario: route A is added, preferred and accepted for<br>
export, then route B is added, not-preferred and not-accepted for export.<br>
Then route A is withdrawn and B is selected as preferred. Protocols with<br>
RA_OPTIMAL received update with route B as new-preferred (as they accept<br>
only preferred one and that changed), but protocols with RA_ANY receive<br>
just withdraw for route A (as they accept all routes and only route A was<br>
changed, while route B is the same as was announced before), so they do<br>
not get notification that route B became preferred and export filter for<br>
B is not re-evaluated.<br>
<br>
The one approach that avoids the first issue is to add REF_BEST flag<br>
(in rte->flags) that would be added to mark preferred routes, and this<br>
flag can be accessed from the filter code. But that does not fix the<br>
second issue. We can add RA_ANY announcement for routes that changed<br>
their REF_BEST, but that would add plenty of unnecessary announcements<br>
(that are propagated as BGP updates) for BGP add-path that do not<br>
use or care about this flag.<br>
<br>
In general, BGP add-path in BIRD was developed with assumption that<br>
routes within one network are handled independently and would need some<br>
deeper redesign for other cases. That might be useful (in order to be<br>
able to implement things like 'announce best 4 routes for given<br>
network'), but i do not see an easy solution to this.<br>
<br>
-- <br>
Elen sila lumenn' omentielvo<br>
<br>
Ondrej 'Santiago' Zajicek (email: <a href="mailto:santiago@crfreenet.org" target="_blank">santiago@crfreenet.org</a>)<br>
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, <a href="http://wwwkeys.pgp.net" rel="noreferrer" target="_blank">wwwkeys.pgp.net</a>)<br>
"To err is human -- to blame it on a computer is even more so."<br></blockquote><div><div dir="auto"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 26, 2021 at 1:56 PM Trisha Biswas <<a href="mailto:tbiswas@fastly.com" target="_blank">tbiswas@fastly.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi all,<div><br></div><div>The attached patch adds a 'preferred' route attribute to check whether the route being processed has been selected as the best-path for the network it belongs to. This attribute does not take in a value, and returns a boolean. This is useful for allowing selection in an add-path enabled BGP session. </div><div><br></div><div>The motivation behind selective add paths is to reduce the number of routes that are shared in an add-path enabled BGP session on a per-prefix basis. Instead of sending all paths to all destinations for an add-path session, we would like to specify prefixes (and/or other route attributes) for which all paths are to be shared. Further, if there are thousands of ways to reach a destination, simply negotiating add paths for a prefix would result in sharing all additional paths to the peer. This in turn would result in a flood of advertisements to be sent between the nodes, and a high memory footprint on the peer. To avoid this, we are considering a filter-based selection criteria that would unlock the potential of purposefully sending additional paths when desired. <br></div><div><br></div><div>Adding the 'preferred' keyword allows us to always send the best-path whether or not other criteria in the export filter match. In the following example, a route is exported when it is either the best route or one of <a href="http://172.16.0.0/16" target="_blank">172.16.0.0/16</a>, <a href="http://10.0.0.0/8%7B16,24%7D" target="_blank">10.0.0.0/8{16,24}</a> (regardless of best route status). In the case of <a href="http://8.8.8.0/24" target="_blank">8.8.8.0/24</a>, we export it if it's the best route, or if it additionally has the specified extended community attached to the route. </div><div><br></div><div><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">protocol bgp { </span><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">[....]</span><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">   </span><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">add paths tx;</span></div><div><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">        export filter {</span></div><div><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">            if preferred || (net = [<a href="http://172.16.0.0/16" target="_blank">172.16.0.0/16</a>, <a href="http://10.0.0.0/8%7B16,24%7D" target="_blank">10.0.0.0/8{16,24}</a>]) then accept;<br></span></div><div><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">            if preferred || (net = <a href="http://8.8.8.0/24" target="_blank">8.8.8.0/24</a> && (ro, 1, 2) ~ bgp_ext_community) then accept;<br></span></div><div><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">                #remaining filter code</span></div><div><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">             reject;</span></div><div><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    }<br></span><span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-size:9pt;font-family:"Courier New";color:rgb(23,43,77);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">}</span><br></div><div><br></div><div>Cheers,</div><div>Trisha</div><div><div><div dir="ltr"><div dir="ltr"><span style="color:rgb(136,136,136)">--</span><br style="color:rgb(136,136,136)"><div dir="ltr" style="color:rgb(136,136,136)"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><img src="https://www.fastly.com/img/sig.png"><font color="#888888"><br></font></div><font color="#888888"><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><b>Trisha Biswas</b> | Sr. Software Engineer, Network Systems</div><div style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:14px;line-height:20px"><a href="http://fastly.com/" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">fastly.com</a> | <a href="https://twitter.com/fastly" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">@fastly</a> | <a href="http://www.linkedin.com/company/fastly" rel="nofollow" style="color:rgb(59,115,175)" target="_blank">LinkedIn</a></div></font></div></div></div></div></div></div></div></div></div></blockquote></div></blockquote></div></div></div></div>
</blockquote></div><br>-- <br>Sent from my Android device with K-9 Mail. Please excuse my brevity.</div></blockquote></div>