Bug? / Patch for BGP next hop issue with frr peers

Sebastian Hahn bird_users at sebastianhahn.net
Mon Apr 20 09:32:08 CEST 2020



> On 20. Apr 2020, at 05:05, Ondrej Zajicek <santiago at crfreenet.org> wrote:
> On Mon, Apr 20, 2020 at 12:46:17AM +0200, Sebastian Hahn wrote:
>> In a bird 2.0.7 setup, I was unable to import routes from one of my peers. It is the only one using frr (version 6.02-2 on debian), most other peers use bird1 or bird2. I noticed immediately after adding the peering that I received "Invalid NEXT_HOP attribute" errors in the log. Unfortunately, no more information than that was provided in the log, so I went on a little hunt. Since the exact error is raised from many places, I added some logs to identify the GW_DIRECT case in bgp_apply_next_hop() as the culprit. Here I realized that both gw and ll are set, which means a neighbor is tried to be found which doesn't involve the ll case. I then noticed that in bgp_decode_next_hop_ip(), this can only happen if len == 32. This is where I am absolutely clueless what it means for the nh len to be 32, and thus I don't know if the patch I came up with is correct, even though it works for my testing. Only this one peer using frr causes nh len to be set to 32, so I suppose it might be a !
>> rare configuration.
> 
> What is your BIRD config? It seems that most likely BIRD cannot resolve
> the global next hop IP address (the on in gw). Because it is GW_DIRECT,
> it is resolved only in local addresses.

Hi,

and thanks for the responses. Here is the config:

protocol bgp v6_frr_peer {
        local as <myas>;

        direct;
        neighbor fe80::1 as <theiras>;
        interface "frr_peer";

        ipv6 {
                import keep filtered;
                import filter import_filter;
                export filter export_filter;
        };
}

I use fe80::42, the peer uses fe80::1 on this link.

Please let me know if I can provide more information in any way.

Thanks
Sebastian


More information about the Bird-users mailing list