<div dir="ltr"><div dir="ltr">Hi,</div><div dir="ltr"><br></div><div dir="ltr">Speaking about general routing (not specially Bird), I would say that what you want would be perfectly managed by the «advertise best external» feature, which makes a router advertise in iBGP its best external paths, even if they are not the overall best path.</div><div><br></div><div>This way, in conjunction with solution 1, router 2 uses the routes from router 1, BUT all the routes are known on both routers.</div><div><br></div><div>Features in Cisco/Juniper:</div><div><br></div><div><a href="https://www.juniper.net/documentation/us/en/software/junos/cli-reference/topics/ref/statement/advertise-external-edit-protocols-bgp.html">https://www.juniper.net/documentation/us/en/software/junos/cli-reference/topics/ref/statement/advertise-external-edit-protocols-bgp.html</a><br></div><div><br></div><div><a href="https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_bgp/configuration/xe-3s/irg-xe-3s-book/bgp-best-external.html">https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_bgp/configuration/xe-3s/irg-xe-3s-book/bgp-best-external.html</a><br></div><div><br></div><div>Unfortunately this doesn't exist in Bird :P<br></div><div>But could be nice to implement...</div><div><br></div><div><br></div><div>Here, we use a solution «0» :D</div><div>- we don't use advertise-external</div><div>- we don't prefer a specific transit provider, so the routes with similarly sized AS paths are known from every routers :)</div><div><br></div><div><br></div><div>But, for selective iBGP session, we use solution 2:<br></div><div>- between countries (we would not really like to see a transit in London be used from routers in Paris by example, even if AS path is shorter)</div><div>- incoming routes from all transit/peering are tagged with two communities, one for the transit (or peering, not the same), one for the site (showing the country and the POP, one digit for each)</div><div>-at iBGP ingress policy, received iBGP routes tagged with communities [Transit/Peering + any foreign country] see their locapref slightly decreased. </div><div><br></div><div><br></div>About solution 3: sux, forget it (to my mind) :)<div><br></div><div><br></div><div>regards,</div><div>Olivier</div><div><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le mar. 6 août 2024 à 13:28, Nico Schottelius via Bird-users <<a href="mailto:bird-users@network.cz">bird-users@network.cz</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Good morning,<br>
<br>
you might remember my confusion about non-exported routes some threads<br>
away [0] and while not completely bird specific, I think it might be a<br>
good topic to discuss for most bird users as well:<br>
<br>
How to deal with route preference when one has multiple sources?<br>
<br>
Problem statement:<br>
<br>
- Your ASN receives the same route multiple times from different upstreams<br>
- What is the best way of handling multiple routes in regards to<br>
a) best practice ("the next engineer understands the solution")<br>
b) efficiency ("how fast to failover")<br>
c) robustness ("simplicity" and "default behaviour")<br>
<br>
The setup will for almost anybody look something like that:<br>
<br>
--------<br>
|Your ASN |<br>
--------<br>
<br>
router1----------------- ASN A: sends route X<br>
|<br>
iBGP+IGP (babel, OSPF, etc.) - other-routers-of-the-asn<br>
|<br>
router2<br>
|--------------------- ASN B: sends route X<br>
<br>
And let's assume that by default ASN A is the preferred path for route<br>
X.<br>
<br>
Solution 1: lower bgp_local pref on import from ASN B<br>
-----------------------------------------------<br>
- Advantage:<br>
- very easy to configure<br>
- has the state local: "this upstream is not so interesting"<br>
- Disadvantage<br>
- router2 does not export route X into the ASN<br>
- Only if the ASN A route vanishes, it is being redistributed<br>
<br>
>From a setup perspective, this looks very logical and coherent, besides<br>
the lack of knowledge of all other routers of the routes.<br>
<br>
Solution 2: lower bgp_local pref on import from router2<br>
-------------------------------------------------<br>
- Advantage:<br>
- route X will be propagated into the ASN<br>
- Should have almost zero failover time, only kernel needs to be<br>
updated on each router<br>
- Disadvantage<br>
- All routes from router2 will have a lower preference, if router2<br>
handles other routes that should be treated normally, configuration<br>
can get complex<br>
<br>
>From a setup perspective this looks more messy and complicated, but<br>
should achieve faster failover times and seems more transparent.<br>
<br>
Solution 3: Elongate the bgp_path<br>
-------------------------------------------------<br>
router2 could prepend ASN B some times on import or export to iBGP.<br>
<br>
- Advantage:<br>
- route would be propagated (actually unclear, as it is not the best route)<br>
- Disadvantage<br>
- path is modified in an "incorrect" way<br>
<br>
<br>
Solution 4: other solutions<br>
-------------------------------------------------<br>
Maybe something else is actually much smarter?<br>
If you solve the problem differently, I'm looking for feedback on that<br>
topic.<br>
<br>
Best regards,<br>
<br>
Nico<br>
<br>
<br>
[0] <a href="https://bird.network.cz/pipermail/bird-users/2024-July/017743.html" rel="noreferrer" target="_blank">https://bird.network.cz/pipermail/bird-users/2024-July/017743.html</a><br>
</blockquote></div></div></div>
<br>
<div><i>Ce message et toutes les pièces jointes (ci-après le "message") sont établis à l’intention exclusive des destinataires désignés. Il contient des informations confidentielles et pouvant être protégé par le secret professionnel. Si vous recevez ce message par erreur, merci d'en avertir immédiatement l'expéditeur et de détruire le message. Toute utilisation de ce message non conforme à sa destination, toute diffusion ou toute publication, totale ou partielle, est interdite, sauf autorisation expresse de l'émetteur</i></div>