Hi everyone. I have a problem with OSPF. In my topology Core router (Area0) connected to 2 routers (Area1), which intrconnected with their own link. Core redistributes 0/0 and things works normal. Core router ID is 10.0.0.0, R1 - 10.0.1.1, R2 - 10.0.1.2.
But, when I drop one of links between Core router and Area1 router, I expect that 0/0 route pass through second Area 1 router and all reveal on first, on wich i drop link to core. In LSA DB I see LSA Type 5, wich generates from core router: bird> show ospf lsadb Global Type LS ID Router Age Sequence Checksum 0005 0.0.0.0 10.0.0.0 616 80000002 72f0 Area 0.0.0.0 Type LS ID Router Age Sequence Checksum 0001 10.0.1.2 10.0.1.2 0 80000002 594e 0003 10.16.0.0 10.0.1.2 29 80000001 e258 Area 0.0.0.1 Type LS ID Router Age Sequence Checksum 0003 10.0.0.0 10.0.1.1 943 80000001 6d75 0004 10.0.0.0 10.0.1.1 943 80000001 5f82 0001 10.0.1.1 10.0.1.1 23 8000000a 2103 0003 10.0.1.1 10.0.1.1 962 80000001 6cd8 0003 10.2.1.3 10.0.1.1 962 80000001 1ac5 0002 10.31.12.1 10.0.1.1 23 80000001 847a 0002 10.31.21.1 10.0.1.1 23 80000001 21d4 0001 10.0.1.2 10.0.1.2 13 80000009 3be5 0003 10.0.1.2 10.0.1.2 29 80000001 5ce6 0003 10.2.1.4 10.0.1.2 29 80000001 0ad3 But in master table I have no this route: bird> show route 10.0.1.2/32 dev lo [C1 11:46] * I (150/0) [10.0.1.2] 10.2.1.4/30 dev bond0.4002 [C1 11:46] * I (150/100) [10.0.1.2] 10.31.21.0/24 dev bond0.4021 [C1 11:47] * I (150/10) [10.0.1.1] 10.31.12.0/24 dev bond0.4012 [C1 11:47] * I (150/10) [10.0.1.1] (bond0.4012 and bond0.4021 - links which interconnect R1 and R2, bond0.4002 - link to Core, which disabled there) Config of R1 and R2 is same (exept Router ID): # Configure logging #log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug }; log stderr all; log "/var/log/bird.log" { info,remote,warning,error,auth,fatal,bug}; #log "/var/log/debug_bird.log" all; filter OSPF_in { if ( net=0.0.0.0/0 || net ~ 10.0.0.0/8 ) then accept; else reject; }; filter OSPF_out { if (net ~ 10.16.0.0/12 ) then accept; else reject; }; # This pseudo-protocol performs synchronization between BIRD's routing # tables and the kernel. If your kernel supports multiple routing tables # (as Linux 2.2.x does), you can run multiple instances of the kernel # protocol and synchronize different kernel tables with different BIRD tables. protocol kernel { # learn; # Learn all alien routes from the kernel debug {states,routes,filters,interfaces}; persist; # Don't remove routes on bird shutdown scan time 20; # Scan kernel routing table every 20 seconds import all; # Default is import all export all; # Default is export none # kernel table 5; # Kernel table to synchronize with (default: main) } # This pseudo-protocol watches all interface up/down events. protocol device { scan time 10; # Scan interfaces every 10 seconds } protocol ospf C1{ # rfc1583compat yes; router id 10.0.1.2; ecmp; import keep filtered yes; # import filter OSPF_in; import all; # export filter OSPF_out; # export none; # debug {states,routes,filters,interfaces}; debug all; area 0{ stub no; interface "bond0.4002"{ type bcast; cost 100; hello 1; dead count 3; retransmit 6; transmit delay 5; wait 30; authentication cryptographic; password "xxx"; }; interface 10.0.1.2/32 { stub 1; }; }; area 1{ stub no; interface "bond0.4012", "bond0.4021" { rx buffer large; type bcast; cost 10; hello 1; dead count 3; retransmit 6; transmit delay 5; wait 30; authentication cryptographic; password "aaa"; }; interface 10.16.0.0/12 { stub 1; cost 10; }; }; } Config of Core router: # Configure logging #log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug }; #log stderr all; #log "tmp" all; filter OSPF_in { if (net ~ 10.0.0.0/8 ) then accept; else reject; }; # Redistribute 0/0 only from BRAS!!! filter OSPF_redistribute { if ( net = 0.0.0.0/0) then { #ospf_metric1=200; ospf_metric2=100; accept; } else reject; }; # This pseudo-protocol performs synchronization between BIRD's routing # tables and the kernel. If your kernel supports multiple routing tables # (as Linux 2.2.x does), you can run multiple instances of the kernel # protocol and synchronize different kernel tables with different BIRD tables. protocol kernel { learn; # Learn all alien routes from the kernel persist; # Don't remove routes on bird shutdown scan time 10; # Scan kernel routing table every 20 seconds import all; # Default is import all export all; # Default is export none # kernel table 5; # Kernel table to synchronize with (default: main) } # This pseudo-protocol watches all interface up/down events. protocol device { scan time 10; # Scan interfaces every 10 seconds } # Static routes (again, there can be multiple instances, so that you # can disable/enable various groups of static routes on the fly). protocol static { # disabled; # Disable by default route 123.123.123.0/24 via "eth0"; } protocol ospf CORE{ tick 2; ecmp; # rfc1583compat yes; router id 10.0.0.0; import filter OSPF_in; export filter OSPF_redistribute; # export none; area 0 { stub no; interface "eth0.4001", "eth0.4002" { # "To corp1"; hello 1; retransmit 6; cost 10; transmit delay 5; dead count 3; wait 50; type broadcast; authentication cryptographic; password "corp1_pass"; }; interface "lo" { stub yes; }; }; }