On Thu, Feb 6, 2020 at 3:22 PM Ondrej Zajicek <santiago@crfreenet.org> wrote:
On Thu, Feb 06, 2020 at 12:34:00PM +0000, Neil Jerram wrote:
Good morning all!
I'm debugging a situation where I'm seeing different IPv6 next hop behaviour in two setups with different versions of my team's software.
In both setups: There are 3 routers A, B and C, all peered with another router X. They are all on the same L2 bridge, and have global IPv6 addresses in the 2001:20::/64 subnet. A, B and C all export a route for fd00:10:96::/112 ... Any ideas? Can you advise where I should look or check next, to try to understand why the UPDATE message has two next hop addresses in one setup, but only one in the other?
Hi
Check code in IPv6 version of bgp_create_update(). It depends on how sender get the routes (local or received, were they received alredy with link-local next hop, were the next hop modified) and whether it is IBGP or EBGP and whether next hop is the same as sender.
Also, does the passing of two next hop addresses in setup #1 fully explain why the ECMP routes programmed into the kernel use link-local gateway addresses?
Yes, link-local next hop is preferered as direct gateway.
Also, are the routes with global next hops more correct in some sense than those with link-local next hops; or vice versa? Would you expect them both to forward data correctly?
Well, it is a bit strange quirk of IPv6 BGP. In general, both global and link-local next hops should be sent when sender, receiver and global next hop are on the same subnet. Global next hop is used for recursive next hop evalulation, while link-local is used for forwarding.
Thank you very much Ondrej for all this. I will work through understanding and checking the details that you have provided. Best wishes, Neil