I want to announce 2001:db8:2177::/48, which also needs to be in the kernel routing table as a blackhole, and also 2001:db8:30a9:ffff::/64, which is a subnet of 2001:db8:30a9::/48. Static protocol is used to also blackhole the 2001:db8:30a9::/48. Traffic for this 2001:db8:30a9::/48 besides the /64 we announce at this point will flow into AS64515 via another router that is connected to AS65517 and which is announcing the whole 2001:db8:30a9::/48 Anyway... router id 1.3.3.7; debug protocols { states, routes, filters, interfaces } protocol kernel { persist; scan time 60; import none; export all; } protocol device { scan time 60; } protocol static { import all; route 2001:db8:30a9::/48 via "dummy0"; route 2001:db8:2177::/48 via "dummy0"; } template bgp template_bgp { local as 64515; import all; export all; route limit 1000; } template pipe template_pipe { table master; mode transparent; } table T65517; filter bgp_pipe_T65517_to_master { if net = ::/0 then accept; reject; } filter bgp_pipe_master_to_T65517 { if net = 2001:db8:2177::/48 then accept; reject; } protocol pipe P65517 from template_pipe { peer table T65517; import filter bgp_pipe_T65517_to_master; export filter bgp_pipe_master_to_T65517; } protocol static static_bgp_T65517 { table T65517; import all; route 2001:db8:30a9:ffff::/64 via "dummy0"; } protocol bgp bgp_example_peer from template_bgp { table T65517; source address 2001:db8:2000:1::202; neighbor 2001:db8:2000:1::201 as 65517; } Note that the /64 route is directy injected into T65517, because it only has to be used inside the BGP announcement. I don't know if this is the best way, as I'm obviously still learning to find out, but it works (tm). Now when the context is clear... let's start bird with this config file... bird6: kernel1: Initializing bird6: device1: Initializing bird6: static1: Initializing bird6: P65517: Initializing bird6: static_bgp_T65517: Initializing bird6: bgp_example_peer: Initializing bird6: device1: Starting bird6: device1: Connected to table master bird6: device1: State changed to feed bird6: kernel1: Starting bird6: kernel1: Connected to table master bird6: kernel1: State changed to feed bird6: static1: Starting bird6: static1: Connected to table master bird6: static1: State changed to feed bird6: P65517: Starting bird6: P65517: Connected to table master bird6: P65517: Connected to table T65517 bird6: P65517: State changed to feed bird6: static_bgp_T65517: Starting bird6: static_bgp_T65517: Connected to table T65517 bird6: static_bgp_T65517: State changed to feed bird6: bgp_example_peer: Starting bird6: Started bird6: device1: State changed to up bird6: kernel1: State changed to up bird6: static1 < interface lo goes up bird6: static1 < interface eth0 goes up bird6: static1 < interface eth1 goes up bird6: static1 < interface eth2 goes up bird6: static1 < interface eth3 goes up bird6: static1 < interface dummy0 created bird6: static1: State changed to up bird6: P65517: State changed to up bird6: static_bgp_T65517 < interface lo goes up bird6: static_bgp_T65517 < interface eth0 goes up bird6: static_bgp_T65517 < interface eth1 goes up bird6: static_bgp_T65517 < interface eth2 goes up bird6: static_bgp_T65517 < interface eth3 goes up bird6: static_bgp_T65517 < interface dummy0 created bird6: static_bgp_T65517: State changed to up bird6: bgp_example_peer: Connected to table T65517 bird6: bgp_example_peer: State changed to feed bird6: bgp_example_peer: State changed to up bird6: bgp_example_peer > added [best] ::/0 via 2001:db8:2000:1::201 on eth0 bird6: P65517 < added ::/0 via 2001:db8:2000:1::201 on eth0 bird6: P65517 > added [best] ::/0 via 2001:db8:2000:1::201 on eth0 bird6: P65517 < rejected by protocol ::/0 via 2001:db8:2000:1::201 on eth0 bird6: kernel1 < added ::/0 via 2001:db8:2000:1::201 on eth0 bird6: bgp_example_peer < rejected by protocol ::/0 via 2001:db8:2000:1::201 on eth0 BGP session is established, we get the predicted ::/0 route from the remote AS. bird> show route table T65517 ::/0 via 2001:db8:2000:1::201 on eth0 [bgp_example_peer 00:33] * (100) [AS3265i] bird> show route table master ::/0 via 2001:db8:2000:1::201 on eth0 [bgp_example_peer 00:41] * (100) [AS3265i] But!... the static routes are not in the system. I don't see the /48's and /64 anywhere... Let's gently reload the same (!) configuration file again... bird> configure soft Reading configuration from /etc/bird6.conf Reconfigured bird6: Reconfiguring bird6: kernel1: Reconfigured bird6: device1: Reconfigured bird6: static1 > added [best] 2001:db8:30a9::/48 dev dummy0 bird6: P65517 < filtered out 2001:db8:30a9::/48 dev dummy0 bird6: kernel1 < added 2001:db8:30a9::/48 dev dummy0 bird6: static1 > added [best] 2001:db8:2177::/48 dev dummy0 bird6: P65517 < added 2001:db8:2177::/48 dev dummy0 bird6: P65517 > added [best] 2001:db8:2177::/48 dev dummy0 bird6: P65517 < rejected by protocol 2001:db8:2177::/48 dev dummy0 bird6: bgp_example_peer < added 2001:db8:2177::/48 dev dummy0 bird6: kernel1 < added 2001:db8:2177::/48 dev dummy0 bird6: static1: Reconfigured bird6: P65517: Reconfigured bird6: static_bgp_T65517 > added [best] 2001:db8:30a9:ffff::/64 dev dummy0 bird6: P65517 < filtered out 2001:db8:30a9:ffff::/64 dev dummy0 bird6: bgp_example_peer < added 2001:db8:30a9:ffff::/64 dev dummy0 bird6: static_bgp_T65517: Reconfigured bird6: bgp_example_peer: Reconfigured bird6: Reconfigured bird> show route table T65517 ::/0 via 2001:db8:2000:1::201 on eth0 [bgp_example_peer 00:41] * (100) [AS3265i] 2001:db8:30a9:ffff::/64 dev dummy0 [static_bgp_T65517 00:48] * (200) 2001:db8:2177::/48 dev dummy0 [static1 00:48] * (200) bird> show route table master ::/0 via 2001:db8:2000:1::201 on eth0 [bgp_example_peer 00:41] * (100) [AS3265i] 2001:db8:2177::/48 dev dummy0 [static1 00:48] * (200) 2001:db8:30a9::/48 dev dummy0 [static1 00:48] * (200) And tadaa.wav: # ip -6 r list proto bird 2001:db8:2177::/48 dev dummy0 metric 1024 mtu 1500 advmss 1440 hoplimit 4294967295 2001:db8:30a9::/48 dev dummy0 metric 1024 mtu 1500 advmss 1440 hoplimit 4294967295 default via 2001:db8:2000:1::201 dev eth0 metric 1024 mtu 1500 advmss 1440 hoplimit 4294967295 My question is: what's going on here? Why are the static routes not fed into bird at startup, but only after I reload the unchanged configuration? Have I overlooked a configuration detail, or is there something else 'fishy' going on? Thanks, -- Hans van Kranenburg - System / Network Engineer T +31 (0)10 2760434 | hans.van.kranenburg@mendix.com | www.mendix.com
participants (1)
-
None