BGP routes not being propagated to kernel via OSPF

Brian Topping brian.topping at gmail.com
Mon Mar 9 17:56:33 CET 2020


As a followup to this thread, I don’t know why I didn’t try this to start with, but installing 2.0.4 on the router having problems cleared it up with no change to configuration. 

I did try to upgrade to 2.0.5 and the problem returned.

Now that I know for sure that this is a problem in BIRD (either with a regression or some change that is required by spec but not clear how to configure for),  I will try to diff the sources and see what might have caused this.

Regards, Brian

> On Feb 19, 2020, at 3:43 PM, Brian Topping <brian.topping at gmail.com> wrote:
> 
> If it helps, I uploaded the output from `debug backbone all` && `restart backbone` to https://gist.github.com/briantopping/7313d6bda963ea01b6d1288fda4942e8
> 
>> On Feb 17, 2020, at 12:17 AM, Brian Topping <brian.topping at gmail.com> wrote:
>> 
>> Greetings, I have a network with four routers on an OSPF backbone. Only one of the four routers cannot export the type 5 LSA entries to the kernel. I cannot figure out why. I wonder if I might kindly ask some guidance.
>> 
>> The routers (including the problem router) are all BIRD 2.0.7 with the router with IP 10.10.4.1 running 2.0.4. The kernels are Linux 4.20.x.
>> 
>> Here is the OSPF for a working router:
>> 
>>> protocol ospf backbone {
>>> ipv4 {
>>>   export all;
>>>   import filter { if net = 0.0.0.0/0 then reject; else accept; };
>>> };
>>> area 0.0.0.0 {
>>>   interface "eno2" {};
>>>   interface "vti*" {
>>>     type nbma;
>>>     strict nonbroadcast yes;
>>>     neighbors {
>>>       10.9.254.2 eligible;
>>>     };
>>>   };
>>> };
>>> }
>> 
>> 
>> 
>> The OSPF configuration of the router having problems. They are virtually identical with the exception of the interfaces:
>> 
>>> protocol ospf backbone {
>>> ipv4 {
>>>   export all;
>>>   import filter { if net = 0.0.0.0/0 then reject; else accept; };
>>> };
>>> area 0.0.0.0 {
>>>   interface "bond0" {
>>>   };
>>>   interface "vti*" {
>>>     type nbma;
>>>     neighbors {
>>>       10.9.255.1 eligible;
>>>       10.9.254.1 eligible;
>>>     };
>>>   };
>>> };
>>> }
>> 
>> 
>> All the routers have *identical* LSADBs  on each router (not shown). master4 is correct on the working routers:
>>> [root at gw02 ~]# birdc show route
>>> BIRD 2.0.7 ready.
>>> Table master4:
>>> 0.0.0.0/0            unicast [bgp_handy_125 02:07:43.248] * (100) [AS30475i]
>>> 	via c.d.143.125 on eno1
>>>                    unicast [bgp_handy_126 02:07:43.661] (100) [AS30475i]
>>> 	via c.d.143.126 on eno1
>>> a.b.96.0/32      unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> a.b.96.9/32      unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> a.b.96.8/32      unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> a.b.96.11/32     unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> 10.10.0.0/22         unicast [backbone 02:07:46.207] I (150/10) [c.d.143.113]
>>> 	dev eno2
>>> 10.9.254.2/32        unicast [backbone 02:08:16.208] I (150/10) [10.10.4.21]
>>> 	via 10.9.254.2 on vti3
>>> 10.9.254.0/24        unicast [backbone 02:08:16.208] I (150/10) [10.10.4.21]
>>> 	dev vti3
>>> 10.9.255.2/32        unicast [backbone 02:08:16.208] I (150/10) [10.10.4.21]
>>> 	via 10.9.254.2 on vti3
>>> 192.168.10.0/24      unicast [backbone 02:08:16.208] I (150/30) [10.10.4.1]
>>> 	via 10.9.254.2 on vti3
>>> 10.10.4.0/22         unicast [backbone 02:08:16.208] I (150/20) [10.10.4.1]
>>> 	via 10.9.254.2 on vti3
>>> 10.9.255.0/24        unicast [backbone 02:08:16.208] I (150/20) [c.d.143.113]
>>> 	via 10.9.254.2 on vti3 weight 1
>>> 	via 10.10.0.41 on eno2 weight 1
>>> a.b.97.1/32      unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> a.b.96.10/32     unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> a.b.96.0/24      blackhole [public_nets_proto 02:07:35.107] * (500)
>>>                    unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> a.b.97.0/24      blackhole [public_nets_proto 02:07:35.107] * (500)
>>>                    unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> [root at gw02 ~]# birdc show route a.b.96.0/32 all
>>> BIRD 2.0.7 ready.
>>> Table master4:
>>> a.b.96.0/32      unicast [backbone 02:07:46.207] E2 (150/10/10000) [c.d.143.113]
>>> 	via 10.10.0.41 on eno2
>>> 	Type: OSPF-E2 univ
>>> 	OSPF.metric1: 10
>>> 	OSPF.metric2: 10000
>>> 	OSPF.tag: 0x00000000
>>> 	OSPF.router_id: c.d.143.113
>> 
>> The router with problems does *not* have a correct copy of master4 table, it is missing all of the LSA type 5 entries. So of course they cannot be exported to kernel on that router:
>>> [root at centos01 ~]# birdc show route
>>> BIRD 2.0.7 ready.
>>> Table master4:
>>> 10.9.254.2/32        unicast [backbone 22:53:52.605] I (150/0) [10.10.4.21]
>>> 	dev bond0
>>> 10.9.254.0/24        unicast [backbone 00:08:15.604] I (150/10) [10.10.4.21]
>>> 	dev bond0
>>> 10.9.255.2/32        unicast [backbone 23:56:54.605] I (150/0) [10.10.4.21]
>>> 	dev bond0
>>> 192.168.10.0/24      unicast [backbone 22:54:32.604] I (150/20) [10.10.4.1]
>>> 	via 10.10.4.1 on bond0
>>> 10.10.4.0/22         unicast [backbone 22:54:32.604] I (150/10) [10.10.4.1]
>>> 	dev bond0
>>> 10.9.255.0/24        unicast [backbone 23:57:39.604] I (150/10) [c.d.143.113]
>>> 	dev bond0
>> 
>> 
>> What I cannot figure out is why the OSPF entries are not imported to master4 on this single machine. 
>> 
>> Thanks kindly for any thoughts.
>> 
>> Brian
>> 
>> 
> 




More information about the Bird-users mailing list