On Wed, Apr 1, 2015 at 5:12 PM, Ondrej Zajicek <santiago@crfreenet.org> wrote:
On Wed, Apr 01, 2015 at 05:01:01PM +0200, Patrik Lundin wrote:
I specifically noticed that OSPF is supposed to create routes for its own interfaces.
Yes it is supposed to do that. Although handling of 'lo' is kind of special case and in some circumstances does not work as expected. In that case it is often useful to try dummy interface instead of lo interface.
I thought I should report back on my continued adventures. Like you said using the lo interface seemed to work for IPv4, but I noticed bird6 would not pick up a /128 prefix assigned to lo in the same way. I found this had been discussed earlier: http://marc.info/?l=bird-users&m=130087394302820&w=2 Because of this I decided to abandon the use of lo altogether, and just use dummy interfaces which worked fine for both protocols. My configuration now looks like this: Address configuration: === # cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback up ip link add type dummy up ip link set dev dummy0 up up ip addr add xxx.xxx.xxx.xxx/32 dev dummy0 up ip addr add yyyy:yyyy:yyyy:yyyy::yyyy/128 dev dummy0 # The primary network interface auto eth0 iface eth0 inet dhcp === bird configuration: === # cat /etc/bird/bird.conf router id zzz.zzz.zzz.zzz; protocol device {} protocol ospf { import none; # Default is import all area 0.0.0.0 { interface "eth0" { authentication cryptographic; password "pass"; }; interface "dummy0" {}; }; } === bird6 configuration: === # cat /etc/bird/bird6.conf router id zzz.zzz.zzz.zzz; protocol device {} protocol ospf { import none; # Default is import all area 0.0.0.0 { interface "eth0" { type ptp; }; interface "dummy0" { stub; }; }; } === Some things to note: * I have not decided on the best way to create the dummy interfaces, the solution above was just a quick hack but it seems to work well. * While bird defaults to a "ptp" link type for eth0, bird6 defaults to "broadcast". * The dummy0 interface defaults to being a stub interface in bird, while it requires configuration in bird6. The above configuration works well, the main thing I am still not sure about if is there is a "best" way to take a specific anycast node out of rotation if it needs maintenance. Anyone have any experience with this? General ideas are appreciated as well!
It turns out the "filtered out" messages were not relevant to my problem. The issue was caused by a OSPF network type mismatch. While I was using the BIRD default of point-to-point, the upstream router was configured for broadcast. After the upstream router was changed to use a point-to-point network type everything started to work.
It would be nice to know what the meaning of the "filtered out" lines are, but they do not seem to affect the route announcement.
'filtered out' lines are related to 'import none', e.g. routes were not imported from OSPF to master routing table.
Thank you for the information! Regards, Patrik Lundin