BIRD sample config

log syslog name “bird” all; #debug protocols { routes }; #debug commands 1; router id 109.xxx.yyy.2; ################## #### FILTRY ###### ################## function is_martian() prefix set martians; { martians = [ 169.254.0.0/16+, 172.16.0.0/12+, 192.168.0.0/16+, 10.0.0.0/8+, 224.0.0.0/4+, 240.0.0.0/4+ ]; # filter default if net.ip = 0.0.0.0 then return true; # filter too long and too short prefixes if (net.len < 8) || (net.len > 24) then return true; # filter martians prefixes if net ~ martians then return true; # filter too long as paths if ( bgp_path.len > 45 ) then return true; return false; } function is_martian_long() prefix set martians; { martians = [ 169.254.0.0/16+, 172.16.0.0/12+, 192.168.0.0/16+, 10.0.0.0/8+, 224.0.0.0/4+, 240.0.0.0/4+ ]; if net.ip = 0.0.0.0 then return true; if (net.len < 8) || (net.len > 28) then return true; if net ~ martians then return true; if ( bgp_path.len > 45 ) then return true; return false; } function is_not_martian() prefix set martians; { martians = [ 169.254.0.0/16+, 172.16.0.0/12+, 192.168.0.0/16+, 10.0.0.0/8+, 224.0.0.0/4+, 240.0.0.0/4+ ]; if net.ip = 0.0.0.0 then return false; if (net.len < 8) || (net.len > 24) then return false; if net ~ martians then return false; if ( bgp_path.len > 45 ) then return false; return true; } filter bgp_in_ibgp { if ( is_martian() ) then { reject; } else { accept; } } filter bgp_out_ibgp { if ( is_martian_long() || proto = "static_nobgp" ) then { reject; } else { accept; } } filter bgp_in_euroix { if ( is_martian() ) then { reject; } else { bgp_community.empty; bgp_local_pref=710; accept; } } filter bgp_out_euroix { if ( is_not_martian() ) && ( net ~ [109.xxx.yyy.0/21, 109.xxx.yyy.0/22] || bgp_community ~ [(31116,201), (31116,204)] ) then { accept; } else { reject; } } filter bgp_in_interoute { if ( is_martian() ) then { reject; } else { bgp_community.empty; bgp_local_pref=700; accept; } } filter bgp_out_interoute { if ( is_not_martian() ) && ( net ~ [109.xxx.yyy.0/21, 109.xxx.yyy.0/22] || bgp_community ~ [(31116,201), (31116,204)] ) then { accept; } else { reject; } } filter bgp_in_uvt { if ( is_not_martian() ) && ( net = 178.xxx.yyy.zzz/20 ) then { bgp_community.empty; bgp_community.add ((31116,204)); bgp_local_pref=1000; accept; } else { reject; } } filter bgp_out_uvt { if ( net = 0.0.0.0/0 ) then { accept; } else { reject; } } protocol kernel { scan time 20; # Scan kernel routing table every 20 seconds import all; # Default is import all export all; # Default is export none } protocol device { scan time 10; } protocol static static_nobgp{ preference 1000; route 109.xxx.yyy.1/32 via 109.xxx.yyy.5; route 109.xxx.yyy.152/29 via 109.xxx.yyy.198; route 109.xxx.yyy.160/28 via 109.xxx.yyy.182; route 109.xxx.yyy.184/29 via 109.xxx.yyy.198; route 109.xxx.yyy.220/30 via 109.xxx.yyy.5; route 109.xxx.yyy.240/30 via 109.xxx.yyy.5; route 109.xxx.yyy.244/30 via 109.xxx.yyy.5; route 109.xxx.yyy.248/30 via 109.xxx.yyy.5; route 109.xxx.yyy.252/30 via 109.xxx.yyy.5; route 109.xxx.yyy.0/24 via 109.xxx.yyy.235; } protocol static static_bgp{ preference 1000; route 109.xxx.yyy.0/21 drop; route 0.0.0.0/0 drop; route 109.xxx.yyy.16/28 via 109.xxx.yyy.235; } protocol bgp r4 { # disabled; description "propoj s R4"; debug {events, states}; local as 31116; neighbor 109.xxx.yyy.12 as 31116; hold time 90; startup hold time 90; connect retry time 30; keepalive time 30; start delay time 5; error wait time 60, 300; error forget time 300; gateway direct; igp metric off; # disable after error; next hop self; path metric 1; default bgp_med 0; # default bgp_local_pref 100; import filter bgp_in_ibgp; export filter bgp_out_ibgp; } protocol bgp r1 { # disabled; description "propoj s R1"; debug {events, states}; local 109.xxx.yyy.6 as 31116; neighbor 109.xxx.yyy.5 as 31116; hold time 90; startup hold time 90; connect retry time 30; keepalive time 30; start delay time 5; error wait time 60, 300; error forget time 300; # disable after error; gateway direct; igp metric off; next hop self; path metric 1; default bgp_med 0; # default bgp_local_pref 100; import filter bgp_in_ibgp; export filter bgp_out_ibgp; } protocol bgp r3 { # disabled; description "propoj s R3"; debug {events, states}; local as 31116; neighbor 109.xxx.yyy.11 as 31116; hold time 90; startup hold time 90; connect retry time 30; keepalive time 30; start delay time 5; error wait time 60, 300; error forget time 300; gateway direct; igp metric off; # disable after error; next hop self; path metric 1; default bgp_med 0; # default bgp_local_pref 100; import filter bgp_in_ibgp; export filter bgp_out_ibgp; } protocol bgp amsix { # disabled; description "propoj s amsix"; debug {events, states}; local as 31116; neighbor 82.xxx.yyy.zzz as 29208; hold time 180; startup hold time 180; connect retry time 30; keepalive time 60; start delay time 5; error wait time 60, 300; error forget time 300; gateway direct; # disable after error; # next hop self; path metric 1; default bgp_med 0; default bgp_local_pref 710; import filter bgp_in_euroix; export filter bgp_out_euroix; } protocol bgp six { # disabled; description "propoj do sixu"; debug {events, states}; local as 31116; neighbor 82.xxx.yyy.zzz as 29208; hold time 180; startup hold time 180; connect retry time 30; keepalive time 60; start delay time 5; error wait time 60, 300; error forget time 300; gateway direct; # disable after error; # next hop self; path metric 1; default bgp_med 0; default bgp_local_pref 710; import filter bgp_in_euroix; export filter bgp_out_euroix; } protocol bgp decix { # disabled; description "propoj do decixu"; debug {events, states}; local as 31116; neighbor 82.xxx.yyy.zzz as 29208; hold time 180; startup hold time 180; connect retry time 30; keepalive time 60; start delay time 5; error wait time 60, 300; error forget time 300; gateway direct; # disable after error; # next hop self; path metric 1; default bgp_med 0; default bgp_local_pref 710; import filter bgp_in_euroix; export filter bgp_out_euroix; } protocol bgp interoute { # disabled; description "tranzit interoute"; debug {events, states}; local as 31116; neighbor 84.xxx.yyy.zzz as 8928; hold time 180; startup hold time 180; connect retry time 30; keepalive time 60; start delay time 5; error wait time 60, 300; error forget time 300; gateway direct; # disable after error; # next hop self; path metric 1; default bgp_med 0; default bgp_local_pref 700; import filter bgp_in_interoute; export filter bgp_out_interoute; } protocol bgp uvt { # disabled; description "klient uvt"; debug {events, states}; local as 31116; neighbor 109.xxx.yyy.227 as 51115; hold time 180; startup hold time 180; connect retry time 30; keepalive time 60; start delay time 5; error wait time 60, 300; error forget time 300; gateway direct; # disable after error; # next hop self; path metric 1; default bgp_med 0; default bgp_local_pref 700; import filter bgp_in_uvt; export filter bgp_out_uvt; }

source: http://danrimal.net/doku.php?id=wiki:bgp:bird:sample_configs4