Hello Ondrej, Thanks for your precious explanations. Unfortunately I am still stuck, static routes does not apply between 2 hosts.
To solve 1) and 2), and in the way I only need to publish static routes to other BGP hosts, I changed "export all” by "export where proto = “static1” “, but still no luck. I notice that static routes are not received any more on hosts. Here is my understanding of “show protocol all” on host1 : direct1 Direct master up 17:35:58 Preference: 240 Input filter: ACCEPT Output filter: REJECT Routes: 2 imported, 0 exported, 2 preferred Route change stats: received rejected filtered ignored accepted Import updates: 2 0 0 0 2 Import withdraws: 0 0 --- 0 0 Export updates: 0 0 0 --- 0 Export withdraws: 0 --- --- --- 0 Bird finds 2 direct routes related to eth0 and eth1, so they are received, accepted, but not exported, which is fine. kernel1 Kernel master up 17:41:12 Preference: 10 Input filter: ACCEPT Output filter: REJECT Routes: 1 imported, 0 exported, 1 preferred Route change stats: received rejected filtered ignored accepted Import updates: 1 0 0 0 1 Import withdraws: 0 0 --- 0 0 Export updates: 6 5 1 --- 0 Export withdraws: 0 --- --- --- 0 Bird find 1 static route and try to export 6 routes but they all get rejected or filtered, which is fine too, but I dont know why “6” routes of the routing table bellow : root@host1:~# ip r 10.10.1.0/24 dev eth0 proto kernel scope link src 10.10.1.1 10.10.2.0/24 via 10.10.1.254 dev eth0 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1 device1 Device master up 17:41:12 Preference: 240 Input filter: ACCEPT Output filter: REJECT Routes: 0 imported, 0 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 0 0 --- 0 0 Export updates: 0 0 0 --- 0 Export withdraws: 0 --- --- — 0 Nothing to say about this one, from what I have read it’s role is to feed the kernel protocol. static1 Static master up 17:41:12 Preference: 200 Input filter: ACCEPT Output filter: ACCEPT Routes: 1 imported, 0 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 1 0 0 0 1 Import withdraws: 0 0 --- 0 0 Export updates: 0 0 0 --- 0 Export withdraws: 0 --- --- --- 0 This one is annoying me and I think the issue is there, 1 imported but ignored, why ? bgp1 BGP master up 17:41:13 Established Preference: 100 Input filter: ACCEPT Output filter: (unnamed) Routes: 0 imported, 0 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 0 0 --- 0 0 Export updates: 3 0 3 --- 0 Export withdraws: 0 --- --- --- 0 BGP state: Established Neighbor address: 10.10.2.1 Neighbor AS: 3000 Neighbor ID: 10.10.2.1 Neighbor caps: refresh restart-aware AS4 Session: internal multihop AS4 Source address: 10.10.1.1 Hold timer: 162/240 Keepalive timer: 53/80 I don’t understand why 3 routes are received because protocols direct1 and kernel1 should not export anything, and only one static route should be received via BGP from host2 ! Also the ouput filter is unamed, which I thinks is not good. Below the host1 bird.conf. As you can see I think I misunderstand some things, and I am a bit disappointed. Cheers router id 10.10.1.1; protocol direct { interface "*"; # Restrict network interfaces it works with } protocol kernel { learn; # Learn all alien routes from the kernel #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 none; # Default is export none } protocol device { scan time 10; # Scan interfaces every 10 seconds } protocol static static1 { route 192.168.1.0/24 via 10.10.1.1; export all; } protocol bgp { multihop; #gateway recursive; import all; export where proto = "static1"; local as 3000; neighbor 10.10.2.1 as 3000; #next hop self; #rr client; } — Cédric Lemarchand > On 23 Feb 2017, at 17:10, Ondrej Zajicek <santi...@crfreenet.org> wrote: > > On Thu, Feb 23, 2017 at 04:42:50PM +0100, Cedric Lemarchand wrote: >> Yes, I am not sure to understand how plays theses options (and if I need it) >> in the bgp protocol and it they are related to my problem : >> > > >> gateway recursive : means that if host2 advertise "route 192.168.2.0/24 >> via 10.10.2.1;” to host1, host1 does a lookup in the kernel routing table >> and set the nexthop for 192.168.2.0/24 via the same IP as for host2 ? > > Mainly yes, but: > > 1) Not lookup in the kernel routing table, but in the BIRD table. By > default the same table as used by BGP protocol, but could be configured > to different one by 'igp table' option. > > 2) It is not lookup for host2, but lookup for bgp_next_hop attribute, as > specified by host2, which is usually value of 'via'. > >> next hop self : means that every route advertised by host2 will be routed to >> it self while keeping the “gateway recursive” logic ? > > That means host2 always announces own IP address as bgp_next_hop instead > of one from 'via'. > >> The output of show route all : > > There are two issues: > > 1) both hosts announce all routes (not only 192.168.xx but also 10.10.xx). > > 2) routes from kernel1 protocol has lower preference (10), so routes > from BGP are preferred and you get circular lookups for 10.0.1.1, 10.10.2.1 > > You could change preference of kernel protocol to say 200 and you > could filter out unwanted routes in BGP export filter. > > -- > Elen sila lumenn' omentielvo > > Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org) > OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) > "To err is human -- to blame it on a computer is even more so."