Problems adding another router to OSPF
Hello, I'm writing this mail to get some help debugging some bird issues. Our OSPF network consists of 14 linux routers running bird, until now I didn't see any problem. Now I wanted to 15th router, but I was unable to do so. I'll try to describe the problem: Let's talk about routers rA, rB, and rC: rA: - running bird - NIC eth0A: part of OSPF, 11 neighbors (and the rest of OSPF) - NIC eth1A: part of OSPF, 1 neighbor - rB - some other stub NICs rB: - running bird - NIC eth0B: part of OSPF, 1 neighbor - rA - NIC eth1B: not part of OSPF, rC and some other routers here - some other stub NICs rC: - not running bird - NIC eth0C: not part of OSPF, rB and some other routers here - some other stub NICs Currently all routes via rC are static on rB. All these routers are exported to the rest of OSPF, soo rA (and others) know about all these routes. No problem here. I want to add rC into OSPF. rC and rB are neighbors, so I should start bird on rC, configure rB and rC to talk to each other. rC should tell all it's routes to the rest of the OSPF, so I can remove static routes on rB (routes via rC). It looks simple. My problem is this: When bird on rB and rC start to talk to each other, rB learns all routes from rC (this is expected). But something between rB and rA is wrong, becouse rA un-learns all new routes from rC. If I don't remove static routes on rB, bird on rB knows about both statically configured routes via rC and routes learned from rC via OSPF. If I remove static routes on rB, bird on rB knows only about routes learned from rC. That is normal. What is wrong - in both cases rA drops these new routes rB learns from rC. If I stop bird or rC, all static routes from rB (if not manually removed) are again re-learned on rA. Question #1: Where could be a problem? Why rA doesn't want routes from rC? Question #2: What is the best way to debug this? Thank you. ico ################################################## # BEGIN bird.conf @ host A log stderr all; debug protocols all; router id rA; protocol device { ... } protocol static { ... }; protocol kernel { learn on; persist; scan time 3; import filter { if 0.0.0.0/0 = net then reject; accept; }; export all; debug { states, routes, filters, interfaces }; } protocol ospf { debug { states, routes, filters, interfaces, events }; tick 2; rfc1583compat yes; import all; export all; area 0.0.0.0 { stub no; interface "eth0A" { hello 5; retransmit 2; wait 10; dead 20; type nonbroadcast; check link yes; authentication cryptographic; password "pass"; neighbors { ... }; }; interface "eth1A" { hello 5; retransmit 2; wait 10; dead 20; type nonbroadcast; check link yes; authentication cryptographic; password "pass"; neighbors { rB eligible; }; }; interface "eth2A" { stub yes; } ... }; }; # END bird.conf @ host A ################################################## # BEGIN bird.conf @ host B log stderr all; debug protocols all; router id rB; protocol device { ... } protocol static { ... }; protocol kernel { learn on; persist; scan time 3; import filter { if 0.0.0.0/0 = net then reject; accept; }; export all; debug { states, routes, filters, interfaces }; } protocol ospf { debug { states, routes, filters, interfaces, events }; tick 2; rfc1583compat yes; import all; export all; area 0.0.0.0 { stub no; interface "eth0B" { hello 5; retransmit 2; wait 10; dead 20; type nonbroadcast; check link yes; authentication cryptographic; password "pass"; neighbors { rA eligible; }; }; interface "eth1B" { hello 5; retransmit 2; wait 10; dead 20; type nonbroadcast; check link yes; authentication cryptographic; password "pass"; neighbors { rC eligible; }; }; interface "eth2B" { stub yes; } ... }; }; # END bird.conf @ host B ################################################## # BEGIN bird.conf @ host C log stderr all; debug protocols all; router id rC; protocol device { ... } protocol static { ... }; protocol kernel { learn on; persist; scan time 3; import filter { if 0.0.0.0/0 = net then reject; accept; }; export all; debug { states, routes, filters, interfaces }; } protocol ospf { debug { states, routes, filters, interfaces, events }; tick 2; rfc1583compat yes; import all; export all; area 0.0.0.0 { stub no; interface "eth0C" { hello 5; retransmit 2; wait 10; dead 20; type nonbroadcast; check link yes; authentication cryptographic; password "pass"; neighbors { rA eligible; }; }; interface "eth1C" { stub yes; } ... }; }; # END bird.conf @ host C
participants (1)
-
ico