<div dir="auto">Hi Grzegorz,</div><div dir="auto"><br></div><div dir="auto">I don’t quite understand what you mean, but maybe someone else can. It seems like it announced a non-existent local-link address to another router?</div><div dir="auto"><br clear="all">Best,<br clear="all"><div dir="auto"><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><b>Brandon Z.</b><br></div><div>HUIZE LTD</div><div><a href="https://huize.asia/" target="_blank"><span>www.huize.asia</span> </a><span style="font-family:Helvetica,sans-serif;font-size:10.6667px;color:rgb(0,0,0)">| </span><a href="https://www.ixp.su/" target="_blank"><span>www.ixp.su</span></a><span style="font-family:Helvetica,sans-serif;font-size:10.6667px;color:rgb(0,0,0)"> | Twitter</span></div><div><img src="https://ci3.googleusercontent.com/mail-sig/AIorK4w5mVhfW4gNpNNG4wjzSr6YXLPGstLI3_79RkgqnXaG2nuFEB1nkGeXOqUOO3ma96TcEVR3iaA" width="200" height="43"><br></div><div>This e-mail and any attachments or any reproduction of this e-mail in whatever manner are confidential and for the use of the addressee(s) only. HUIZE LTD can’t take any liability and guarantee of the text of the email message and virus.</div></div></div></div></div><div><br></div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Tue, 28 Jan 2025 at 01:44, Ponikierski, Grzegorz via Bird-users <<a href="mailto:bird-users@network.cz">bird-users@network.cz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">





<div lang="en-PL" link="#467886" vlink="#96607D" style="overflow-wrap: break-word;">
<div class="m_2941261740640629417WordSection1">
<p class="MsoNormal"><span lang="PL" style="font-size:11pt">Hello all!<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="PL" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">I have an interesting case of link-local IPv6 address in BGP.next_hop and I would like to know your opinion about that because I cannot tell with 100% confidence if it’s a bug or a feature. Existence
 of these link-local addresses causes issues of interoperability between Bird and FRR. I have separate discussion about that with FRR folks. Here I would like to now a Bird perspective. Details below.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">On single router with Bird 2.15 I have multiple IPv4 and IPv6 eBGP sessions, which receives prefixes from the Internet, and IPv4 iBGP session, which forwards these prefixes to BGP collector with
 FRR, which is separate server somewhere in the Internet many hops away in separate ASN. Session with BGP collector uses both ipv4 and ipv6 channels to send both IPv4 and IPv6 prefixes. IPv6 prefixes received via eBGP have both global IPv6 address and link-local
 IPv6 address like in an example below:<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">::/0                 unicast [2600:1488:6080::8__r01.fra03.ien 2024-12-06] * (100) [AS3356i]<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                via 2600:1488:6080::8 on ae2<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                Type: BGP univ<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.origin: IGP<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.as_path: 3356<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.next_hop: 2600:1488:6080::8 fe80::7a4f:9bff:fed1:2e0d<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.med: 4294967294<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.local_pref: 60<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.community: (3356,2) (3356,501) (3356,601) (3356,2065) (20940,30403) (65502,3356)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">However, prefixes forwarded via iBGP to BGP collector also have both global and link-local addresses like below:<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">::/0                 unicast [2600:1488:6080::8__r01.fra03.ien 2024-12-06] * (100) [AS3356i]<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                via 2600:1488:6080::8 on ae2<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                Type: BGP univ<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.origin: IGP<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.as_path: 3356<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.next_hop: 2600:1488:6080::8 fe80::7a4f:9bff:fed1:2e0d<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.med: 4294967294<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.local_pref: 60<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">                BGP.community: (3356,2) (3356,501) (3356,601) (3356,2065) (20940,30403) (65502,3356) (21357,600)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="PL" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">On one hand, as per RFC 4271 NEXT_HOP is not changed when prefix is passed from eBGP to iBGP so what we see above it expected. But on the other hand, as per RFC 2545 link-local address must not
 be there because both sides of iBGP doesn’t share the same IPv6 subnet:<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">“””<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">  </span><span style="font-size:11pt"> The link-local address shall be included in the Next Hop field if and<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt">   only if the BGP speaker shares a common subnet with the entity<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt">   identified by the global IPv6 address carried in the Network Address<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt">   of Next Hop field and the peer the route is being advertised to.</span><span lang="PL" style="font-size:11pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt">   In all other cases a BGP speaker shall advertise to its peer in the<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt">   Network Address field only the global IPv6 address of the next hop<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt">   (the value of the Length of Network Address of Next Hop field shall<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt">   be set to 16).<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">“””<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">Who is right here? As far I know, both documents are still current standards, and both are implemented by Bird. I don’t see any clear guidelines how to make a clear judgement here. Personally,
 I would tell that RFC 4271 should be treated as general rule and RFC 2545 as more specific rule so in the end link-local should be removed. After all, link-local addresses do not make sense for multihop sessions. However, these documents don’t refer to each
 other and I don’t know if authors of these documents knew about each other statements. What do you think?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">Anyway, when BGP collector with FRR
</span><span style="font-size:11pt;color:black">8.5.2</span><span style="font-size:11pt;color:black">
</span><span lang="EN-US" style="font-size:11pt">receives BGP UPDATE for route like presented above, then FRR rejects such UPDATE with treat-as-withdrawn approach but also triggers additional error about invalid prefix length for AFI 1, which finally causes
 NOTIFICATION (</span><span style="font-size:11pt">UPDATE Message Error/Invalid Network Field</span><span lang="EN-US" style="font-size:11pt">) and session goes down. I cannot rule out implementation bug in FRR version that I use, and I discuss it with
 FRR folks already.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">Working workaround that I tested is to apply `next hop self` on Bird side. Probably `bgp_next_hop = bgp_next_hop` in Bird’s export policy will also work but I must test it yet.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt">What do you think? It’s a bug or a feature?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt"><u></u> <u></u></span></p>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt;color:black">Regards,</span><span style="font-size:11pt;color:black"><u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><span style="font-size:11pt;color:black">Grzegorz</span><u></u><u></u></p>
</div>
</div>

</blockquote></div></div>