I'm running bird on a Linksys WRT54G running Sveasoft Talisman 1.0.1 firmware. Bird version is 1.0.11, and it is part of that firmware, so I am not sure how it was built. I want my WRT to advertise 0.0.0.0/0 as long as the WAN port is up. I have another system (Linux w/Quagga) running which provides another default route. I've got a Cisco router on the same net which peers, but does not send a default. I've made the Linux system's default a higher metric. o---------------------------------o 172.16.1.0/24 | | | WRT54G Cisco 2610 Linux Bird 12.2(28a) Quagga OSPFd | ||| | Internet Other Nets Internet (NATed) (NATed) Default routes come from redistributing kernel on quagga (E2 w/cost 20000), and export all on bird (E2 w/cost 10000). I ran into trouble where the higher metric default (from Quagga) would overwrite the local default on the WRT, which I determined was based on preference of protocols within bird (kernel < ospf). I adjusted the preferences to the order that I wanted, and I am now unable to peer with quagga or Cisco routers. Debug on Cisco shows continual resending of DBD packets, stuck in EXSTART. Cisco docs show that it's likely an MTU size mismatch, however ifconfig on my WRT and sh int on my Cisco match MTU's. The quagga ospfd comes up with some similar error, however I'm not as familiar with it's debug output. The great part is that if I remove my protocol preferences in bird, the peering works (but stomps my default route). I am looking for any insight that anyone may have on this issue. Any responses are appreciated. Here's my bird.conf... router id 172.16.1.12; protocol kernel { preference 50; learn; persist; scan time 10; import all; export all; } protocol device { scan time 10; } protocol direct { interface "*"; } protocol ospf WRT54G_ospf { preference 100; export all; area 0 { interface "br0" { cost 10; }; interface "vlan1" { cost 10; stub yes; }; }; } -- Matt Weigl
I want my WRT to advertise 0.0.0.0/0 as long as the WAN port is up. I have another system (Linux w/Quagga) running which provides another default route. I've got a Cisco router on the same net which peers, but does not send a default. I've made the Linux system's default a higher metric.
Maybe you'd like to filter the default route from OSPF protocol ospf ... { import filter { if net.ip = 0.0.0.0 then reject; accept; }; ... } I even think, instead of reject-ing the default route you could manipulate its metric too. -- damjan | дамјан This is my jabber ID --> damjan@bagra.net.mk <-- not my mail address!!!
The Linux quagga ospfd is advertising 0.0.0.0/0 as an external 2, with a metric of 20000. The WRT 0.0.0.0/0 is advertising as an external 2, with a metric of 10000. From an OSPF perspective, the WRT's route is better, however, bird on the WRT sees the route as a kernel route, not as an OSPF route. The default preferences within bird appear to favor the OSPF route. Thinking of things as I am writing this, I decided to try an "import all" on the OSPF process on the WRT. This resolved the issue. The WRT imported the 0.0.0.0/0 route as E2 metric 10000, favoring that above the E2 metric 20000 0.0.0.0/0 coming from the Linux box. The preference issue is still there, however. In the version of bird packaged with WRT54G Talisman firmware, setting protocol preference causes an MTU mismatch between OSPF processes. Damjan wrote:
Maybe you'd like to filter the default route from OSPF
protocol ospf ... { import filter { if net.ip = 0.0.0.0 then reject; accept; }; ... }
I even think, instead of reject-ing the default route you could manipulate its metric too.
participants (2)
-
Damjan -
Matthew V. Weigl