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;
}