ibgp bird 1.6 vs 2.0
Matěj Grégr
mgregr at fit.vutbr.cz
Tue Apr 30 17:02:52 CEST 2019
On 30.04.2019 16:44, Ondrej Zajicek wrote:
> On Tue, Apr 30, 2019 at 04:02:36PM +0200, Matěj Grégr wrote:
>>
>>
>> On 30.04.2019 15:56, Ondrej Zajicek wrote:
>>> On Tue, Apr 30, 2019 at 03:34:59PM +0200, Matěj Grégr wrote:
>>>> Hello,
>>>> we have encountered a different ibgp behavior between bird 1.6 and
>>>> bird2, and I am not sure if it's an intentional change in bird2 or a
>>>> bug. Let's consider the following topology:
>>>>
>>>> 192.168.1.0/24 192.168.2.0/24
>>>> R1 ------- ebgp ------- R2 ------- ibgp ------- R3
>>>> .2 .1 .1 .2
>>>>
>>>> R1 uses AS 65001, R2 and R3 uses AS 65000. R1 propagates some routes
>>>> (e.g. 10.10.10.0/24) via eBGP to R2, which sends them to R3 via iBGP.
>>>> bird2 config on R3:
>>>>
>>>> template bgp IBGP {
>>>> local as 65000;
>>>> direct;
>>>> ipv4 {
>>>> next hop self;
>>>> import keep filtered on;
>>>> import all;
>>>> };
>>>> }
>>>>
>>>> protocol bgp from IBGP { neighbor 192.168.2.1 as 65000; }
>>>
>>> What bird is config on R2?
>>>
>>> I don't think there are any intentional changes w.r.t. your config.
>>>
>>
>> R2 is not running bird, but it's a cisco router, but we encounter the
>> same behavior with other vendors as well (HP). The config is pretty
>> simple on R2:
>
> OK, the question is whether R2 is using something like 'next hop self'.
> Based on the config i assume that no, and therefore BGP_NEXT_HOP announced
> from R2 to R3 is probably 192.168.1.2.
>
Yes, exactly.
>> Now there are two issues:
>>
>> 1) the bird on R3 reports "Invalid NEXT_HOP attribute" and doesn't learn
>> any R1 routes from R2. If the "direct" option is removed from the
>> config, R3 will learn R1 routes. However, if R3 runs bird1.6, it learns
>> all routes even with the direct option.
>>
>> According to the docs, "direct" is a check for directly connected
>> neighbors. The neighbor 192.168.2.1 is directly connected and in the
>> same subnet, so I don't understand, why there is an issue with NEXT_HOP
>> and why are routes silently dropped on R3?
>
> 'direct' is not only the check for directly connected, but also specifies
> default value for 'gateway' option (direct vs. recursive). In 'gateway
> direct' mode we expect BGP_NEXT_HOP to be directly connected.
I always thought that direct and gateway are two different options. If
setting direct also alter gateway option, a note in the docs would be great.
> I checked the code and we have fallback in BIRD 1.6 that if BGP_NEXT_HOP
> is not directly connected, we silently ignore it and use IP address of
> the neighbor. We removed this fallback in BIRD 2.0 and instead report the
> error. So it was intentional change. You could workaround that by setting
> 'next hop self' (or equivalent) on R2.
Ah, good to know. Thanks!
>> 2) If direct is removed from the config, bird2 on R3 learns R1 routes,
>> but with status unreachable. Even if I send 192.168.1.0/24 from R2 to R3
>> so the route 192.168.1.0/24 is in R3's routing table and ping from R3 to
>> the NEXT_HOP IP address is successful. bird1.6 works without a problem
>> with or without direct option and all routes are learned and reachable.
>
> This is a limitation in BIRD that it resolves recursive next hops (from
> multihop BGP) only through non-recursive routes (e.g. static or OSPF
> routes). So if you announce 192.168.1.0/24 through the same BGP session,
> it is not used for this purpose. But i am sure the same behavior was also
> in BIRD 1.6. The workaround is to have static/RIP/OSPF route for
> 192.168.1.0/24, or 'next hop self' on R2.
>
Yes, probably the behavior is same in bird 1.6, but it was hidden with
the NEXT_HOP fallback you have in 1.6. bird 1.6 sees the routes as
reachable because it uses peer address as the next hop, not the IP
address from the NEXT_HOP attribute.
Anyway, thanks a lot for clarification! We will alter the config
accordingly.
Best regards,
M.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2929 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20190430/b1cf8ddf/attachment.p7s>
More information about the Bird-users
mailing list