IPv6, route reflectors and link-local nexthops
Jan-Philipp Litza
jpl at plutex.de
Thu Oct 10 16:57:28 CEST 2019
Hi list,
maybe this question boils down to "How can I tell bird to always use
global IPv6 addresses as nexthops". But let me give you a sketch of my
problem:
RR ---- R1 ---- R2
Addresses:
RR 2001:db8:1::100, fe80:1::100%I1
R1 2001:db8:1::1, fe80:1::1%I1
2001:db8:2::1, fe80:2::1%I2
R2 2001:db8:2::2, fe80:2::2%I2
RR is an route reflector with
* a direct iBGP session to R1 / 2001:db8:1::1, and
* a multihop eBGP session to R2 / 2001:db8:2::2.
As RR isn't supposed to forward any traffic, it has "missing lladdr
ignore" set on the iBGP session.
R1 and R2 don't talk to each other.
Let's suppose R2 announces a route for 2001:db8:3::/64
RR sees this route:
> bird> show route all 2001:db8:3::/64
> 2001:db8:3::/64 unicast [R2 2019-10-10 from 2001:db8:2::2] * (100/100) [AS4242424242?]
> via fe80:1::1 on I1
> Type: BGP univ
> BGP.origin: Incomplete
> BGP.as_path: 4242424242
> BGP.next_hop: 2001:db8:2::2
> BGP.local_pref: 100
The nexthop is correctly set to the link-local address of R1 that RR can
reach. Notice the missing link-local BGP.next_hop, however.
Now RR exports this route to R1, and this is where things go wrong:
> bird> show route all 2001:db8:3::/64> 2001:db8:3::/64 unicast [RR 2019-10-10 from 2001:db8:1::100] * (100/0)
[AS4242424242?]
> via fe80:1::100 on I2
> Type: BGP univ
> BGP.origin: Incomplete
> BGP.as_path: 4242424242
> BGP.next_hop: 2001:db8:2::2
> BGP.local_pref: 100
R1 correctly identifies the BGP.next_hop as being on-link for I2, but
uses the link-local address of RR on the interface to R2 as nexthop.
(Actually, it's even worse: R1 doesn't really use fe80:1::100 as
nexthop, but the link-local address of the peer that was formerly in the
place of RR. That address isn't even present anymore on any server
anywhere!)
I understand the R1 has no way of knowing the link-local address of R2,
because it was never part of the BGP.next_hop. But the link-local
address of RR was never part of BGP.next_hop, either!
So, Questions:
Why does bird use link-local nexthops at all, when all neighbors are
configured using global addresses?
How is it possible that bird uses the link-local address of RR decoupled
from its interface?
Is there anything I can do to make R1 use the global address (which is
the only address in BGP.next_hop) of R2 as the nexthop?
Best regards,
Jan-Philipp Litza
--
Jan-Philipp Litza
PLUTEX GmbH
Hermann-Ritter-Str. 108
28197 Bremen
Hotline: 0800 100 400 800
Telefon: 0800 100 400 821
Telefax: 0800 100 400 888
E-Mail: support at plutex.de
Internet: http://www.plutex.de
USt-IdNr.: DE 815030856
Handelsregister: Amtsgericht Bremen, HRB 25144
Geschäftsführer: Torben Belz, Hendrik Lilienthal
More information about the Bird-users
mailing list