Switch to announcing routes from downstream routers to mika

This commit is contained in:
Alex D. 2024-11-10 15:08:21 +00:00
parent 62e13a6a31
commit dfcfe9fbc7
Signed by: caskd
GPG Key ID: F92BA85F61F4C173
18 changed files with 236 additions and 144 deletions

View File

@ -2,87 +2,7 @@ log stderr all;
debug protocols { states, routes, filters, interfaces };
router id 252.222.50.251;
define DN42_OWN_AS = 4242420475;
define DN42_EXPORTABLE_NETSET = [
fd51:9b17:dc40::/48
];
define DN42_OWN_REGION = 1;
define DN42_OWN_COUNTRY = 276;
define DN42_OWN_BANDWIDTH = 3;
ipv6 table dn42;
roa6 table dn42_roa;
include "/etc/bird/dn42-filter.conf";
protocol device { scan time 10; }
protocol direct {
vrf "vrf-dn42";
check link yes;
ipv6 { table dn42; };
}
protocol static {
# Sink routes of owned prefixes
route fd51:9b17:dc40::/48 unreachable;
ipv6 { table dn42; };
}
protocol kernel {
vrf "vrf-dn42";
kernel table 20;
scan time 20;
learn;
merge paths 64;
ipv6 {
table dn42;
import filter {
if !dn42_is_valid_network() then reject; # Only import valid networks
if source != RTS_STATIC then reject; # Don't import non-static routes
accept;
};
export filter {
if source = RTS_STATIC then reject; # Don't export my routes back to kernel
# krt_prefsrc = DN42_OWN_IP; # Pick my own IP as default/source for these routes
accept;
};
};
}
protocol rpki roa_dn42 {
roa6 { table dn42_roa; };
remote ::1;
port 8082;
refresh 60;
retry 30;
expire 7200;
}
template bgp dn42peer {
vrf "vrf-dn42";
local as DN42_OWN_AS;
path metric 1;
ipv6 {
table dn42;
};
}
protocol babel vlan42 {
vrf "vrf-dn42";
interface "br-dn42" {
type wired;
check link 1;
};
ipv6 {
table dn42;
import all;
export all;
};
}
include "/etc/bird/peers/*";
include "/etc/bird/v6gw/bird.conf";
include "/etc/bird/dn42/bird.conf";

View File

@ -0,0 +1,82 @@
define DN42_OWN_AS = 4242420475;
define DN42_EXPORTABLE_NETSET = [
fd51:9b17:dc40::/48
];
define DN42_OWN_REGION = 1;
define DN42_OWN_COUNTRY = 276;
define DN42_OWN_BANDWIDTH = 3;
ipv6 table dn42;
roa6 table dn42_roa;
include "/etc/bird/dn42/dn42-filter.conf";
protocol direct dn42_direct {
vrf "vrf-dn42";
check link yes;
ipv6 { table dn42; };
}
protocol static dn42_static {
# Sink routes of owned prefixes
route fd51:9b17:dc40::/48 unreachable;
ipv6 { table dn42; };
}
protocol kernel dn42_kernel {
vrf "vrf-dn42";
kernel table 20;
scan time 20;
learn;
merge paths 64;
ipv6 {
table dn42;
import filter {
if !dn42_is_valid_network() then reject; # Only import valid networks
if source != RTS_STATIC then reject; # Don't import non-static routes
accept;
};
export filter {
if source = RTS_STATIC then reject; # Don't export my routes back to kernel
# krt_prefsrc = DN42_OWN_IP; # Pick my own IP as default/source for these routes
accept;
};
};
}
protocol rpki roa_dn42 {
roa6 { table dn42_roa; };
remote ::1;
port 8082;
refresh 60;
retry 30;
expire 7200;
}
template bgp dn42peer {
vrf "vrf-dn42";
local as DN42_OWN_AS;
path metric 1;
ipv6 {
table dn42;
};
}
protocol babel vlan42 {
vrf "vrf-dn42";
interface "br-dn42" {
type wired;
check link 1;
};
ipv6 {
table dn42;
import all;
export all;
};
}
include "/etc/bird/dn42/peers/*";

View File

@ -0,0 +1,48 @@
define V6GW_EXPORTABLE_NETSET = [
2a04:5b81:2060:b00b::/64,
2a04:5b81:2060:d00d::/64,
2a04:5b81:2060:f33d::/64
];
define V6GW_OWN_AS = 4200000001;
function v6gw_is_selfnet() {
return net ~ V6GW_EXPORTABLE_NETSET;
}
ipv6 table v6gw;
protocol direct v6gw_direct {
vrf "vrf-v6";
check link yes;
ipv6 { table v6gw; };
}
protocol kernel v6gw_kernel {
vrf "vrf-v6";
kernel table 10;
scan time 20;
learn;
merge paths 64;
ipv6 {
table v6gw;
import filter {
if !v6gw_is_selfnet() then reject; # Only import valid networks
if source != RTS_STATIC then reject; # Don't import non-static routes
accept;
};
export none;
};
}
template bgp v6gwpeer {
vrf "vrf-v6";
local as V6GW_OWN_AS;
path metric 1;
ipv6 {
table v6gw;
};
}
include "/etc/bird/v6gw/peers/*";

View File

@ -0,0 +1,11 @@
protocol bgp mika_frankfurt from v6gwpeer {
neighbor fe80::1 as 4200000000;
interface "vultrbgp";
ipv6 {
import none;
export filter {
if !v6gw_is_selfnet() then reject;
accept;
};
};
}

View File

@ -3,71 +3,12 @@ timeformat protocol iso long;
debug protocols { states, routes, filters, interfaces };
router id 45.77.54.132;
define OWN_AS = 4288000569;
define EXPORTABLE_NETSET = [
2a04:5b81:2010::/44{44,48},
#2a04:5b81:2010::/48,
2a04:5b81:2060::/44{44,48}
];
define VRF = "vrf-wgate";
define VRF_RTID = 20;
ipv6 table main;
include "/etc/bird/filter.conf";
protocol device { scan time 10; }
protocol direct {
vrf VRF;
check link yes;
ipv6 {
table main;
import filter {
if is_self_net() then accept; # Import own routed networks
reject;
};
};
}
protocol static {
ipv6 { table main; };
}
protocol kernel {
vrf VRF;
kernel table VRF_RTID;
scan time 20;
learn;
merge paths 64; # ECMP
ipv6 {
table main;
import filter {
if is_self_net() then accept; # Import own routed networks
if source != RTS_STATIC then reject; # Don't import non-static routes
accept;
};
export filter {
if source = RTS_STATIC then reject; # Don't export my routes back to kernel
# krt_prefsrc = OWN_IP; # Pick my own IP as default/source for these routes
accept;
};
};
}
template bgp peer_main {
vrf VRF;
local as OWN_AS;
path metric 1;
enable extended messages yes;
connect delay time 1;
connect retry time 20;
error wait time 10, 300;
ipv6 {
table main;
};
}
include "/etc/bird/peers/*";
include "/etc/bird/vultr/bird.conf";
include "/etc/bird/downstream/bird.conf";

View File

@ -0,0 +1,21 @@
define DOWNSTREAM_OWN_AS = 4200000000;
define DOWNSTREAM_IMPORTABLE_ROUTES = [
2a04:5b81:2010::/44{44,64},
2a04:5b81:2060::/44{44,64}
];
template bgp downstream_peer {
vrf VRF;
local as DOWNSTREAM_OWN_AS;
path metric 1;
enable extended messages yes;
connect delay time 1;
connect retry time 20;
error wait time 10, 300;
ipv6 {
table main;
};
}
include "/etc/bird/downstream/peers/*";

View File

@ -0,0 +1,9 @@
protocol bgp lakewood from downstream_peer {
local as DOWNSTREAM_OWN_AS;
neighbor fe80::2 as 4200000001;
interface "caskd-lakewood";
ipv6 {
import all;
export none;
};
}

View File

@ -0,0 +1,60 @@
define OWN_AS = 4288000569;
define EXPORTABLE_NETSET = [
2a04:5b81:2010::/44{44,48},
2a04:5b81:2060::/44{44,48}
];
include "/etc/bird/vultr/filter.conf";
protocol direct {
vrf VRF;
check link yes;
ipv6 {
table main;
import filter {
if is_self_net() then accept; # Import own routed networks
reject;
};
};
}
protocol static {
ipv6 { table main; };
}
protocol kernel {
vrf VRF;
kernel table VRF_RTID;
scan time 20;
learn;
merge paths 64; # ECMP
ipv6 {
table main;
import filter {
if is_self_net() then accept; # Import own routed networks
if source != RTS_STATIC then reject; # Don't import non-static routes
accept;
};
export filter {
if source = RTS_STATIC then reject; # Don't export my routes back to kernel
# krt_prefsrc = OWN_IP; # Pick my own IP as default/source for these routes
accept;
};
};
}
template bgp peer_main {
vrf VRF;
local as OWN_AS;
path metric 1;
enable extended messages yes;
connect delay time 1;
connect retry time 20;
error wait time 10, 300;
ipv6 {
table main;
};
}
include "/etc/bird/vultr/peers/*";

View File

@ -13,7 +13,7 @@ function import_filter() {
}
function export_filter() {
if !is_self_net() && source != RTS_BGP then reject; # Don't export anything but stuff learned from other peers or my own subnets
if !is_self_net() then reject; # Don't export anything but my own subnets
accept;
}