diff --git a/docs/lab/prod/pr01/bird.conf b/docs/lab/prod/pr01/bird.conf new file mode 100644 index 0000000..fecfcad --- /dev/null +++ b/docs/lab/prod/pr01/bird.conf @@ -0,0 +1,1454 @@ +router id 193.36.104.1; + +log stderr { debug, trace, info, remote, warning, error, auth, fatal, bug }; + +filter rayhaan_net_only { + if (net ~ [2a0d:d740::/29+]) then accept; + if (net ~ [193.36.104.0/22+]) then accept; + reject; +} + +function lab_export_allowed(int peer_as) +{ + if (210036, 0, peer_as) ~ bgp_large_community then return false; + if (210036, 1, peer_as) ~ bgp_large_community then return true; + if (210036, 0, 0) ~ bgp_large_community then return false; + return true; +} + +protocol kernel kernel4 { + kernel table 200; + scan time 120; + ipv4 { + import all; + export all; + }; +} + +protocol kernel kernel6 { + kernel table 200; + scan time 120; + ipv6 { + import all; + export all; + }; +} + +protocol device { + scan time 10; +} + +protocol direct { + ipv4 { + import filter rayhaan_net_only; + }; + ipv6 { + import filter rayhaan_net_only; + }; +} + +filter peers_out { + bgp_med = 0; + bgp_large_community.add((210036, 10, 2)); + if (net = 193.36.104.0/24) then accept; + if (net = 2a0d:d740::/48) then accept; + if (net = 2a0d:d740:105::/48) then accept; + if proto = "delroth_v6" then accept; + if proto = "pkern_v6" then accept; + if proto = "home_v4" then accept; + if proto = "ferrix" then { + if !lab_export_allowed(42476) then reject; + bgp_path.delete([ 64512..65534, 4200000000..4294967294 ]); + bgp_large_community.delete([ (210036, 0..1, *) ]); + accept; + } + reject; +} + +filter comrack_out { + bgp_med = 500; + bgp_large_community.add((210036, 10, 2)); + if (net = 193.36.104.0/24) then accept; + if (net = 2a0d:d740::/48) then accept; + if proto = "benfiedler_v4" then accept; + if proto = "benfiedler_v6" then accept; + if proto = "delroth_v6" then accept; + if proto = "pkern_v6" then accept; + if proto = "home_v4" then accept; + if proto = "ferrix" then { + if !lab_export_allowed(42476) then reject; + bgp_path.delete([ 64512..65534, 4200000000..4294967294 ]); + bgp_large_community.delete([ (210036, 0..1, *) ]); + accept; + } + reject; +} + +filter peers_in { + if (net = 0.0.0.0/0) then { + reject; + } + if (net = ::/0) then { + reject; + } + # Don't accept routes from our own ASN. + if (bgp_path ~ [210036]) then { + reject; + } + accept; +} + + +filter drop_peers_from_transits { + if (bgp_path ~ [15169, 6939]) then { + reject; + } +} + +# CommunityRack V4 +protocol bgp comrack_v4 { + description "CommunityRack IPv4 transit"; + local 185.95.219.37 as 210036; + neighbor 185.95.219.36 as 57118; + ipv4 { + export filter comrack_out; + import filter { + if (net = 0.0.0.0/0) then { + reject; + } + # Don't accept routes from our own ASN. + if (bgp_path ~ [210036]) then { + reject; + } + # Don't accept routes from AS15169 over this link, + # we have multiple other paths via IXes. + if (bgp_path ~ [15169]) then { + reject; + } + accept; + }; + export limit 200; + }; +} + +# CommunityRack V6 +protocol bgp comrack_v6 { + description "CommunityRack IPv6 transit"; + local 2a05:fc87:1:12::b as 210036; + neighbor 2a05:fc87:1:12::a as 57118; + ipv6 { + export filter comrack_out; + import filter { + if (net = ::/0) then { + reject; + } + # Don't accept routes from our own ASN. + if (bgp_path ~ [210036]) then { + reject; + } + # Don't accept routes from AS15169 over this link, + # we have multiple other paths via IXes. + if (bgp_path ~ [15169]) then { + reject; + } + accept; + }; + export limit 200; + }; +} + +# Temporarily disabled until a better route is found. +#protocol bgp bgptools { +# description "BGPTools monitoring session"; +# local 2a05:fc87:1:12::b as 210036; +# neighbor 2a0c:2f07:9459::b14 as 212232; +# multihop; +# ipv6 { +# add paths tx; +# export filter { accept; }; +# import filter { reject; }; +# }; +# ipv4 { +# add paths tx; +# export filter { accept; }; +# import filter { reject; }; +# }; +#} + +# +# SwissIX peers +# + +# RS1 +protocol bgp swissix_rs1_v4 { + description "SwissIX RS1 IPv4"; + local 91.206.52.201 as 210036; + neighbor 91.206.52.252 as 42476; + default bgp_local_pref 500; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} +protocol bgp swissix_rs1_v6 { + description "SwissIX RS1 IPv6"; + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::a5ec:a:1 as 42476; + default bgp_local_pref 500; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# RS2 +protocol bgp swissix_rs2_v4 { + description "swissix rs2 ipv4"; + local 91.206.52.201 as 210036; + neighbor 91.206.53.253 as 42476; + default bgp_local_pref 500; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_rs2_v6 { + description "swissix rs2 ipv6"; + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::a5ec:a:2 as 42476; + default bgp_local_pref 500; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Hurricane +protocol bgp swissix_he_v4 { + description "Hurricane Electric @ SwissIX ipv4"; + local 91.206.52.201 as 210036; + neighbor 91.206.52.170 as 6939; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_he_v6 { + description "Hurricane Electric @ SwissIX ipv6"; + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::aa as 6939; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Pim +protocol bgp swissix_pim_8298_v4 { + description "Pim SwissIX IPv4"; + local 91.206.52.201 as 210036; + neighbor 91.206.53.12 as 8298; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_pim_8298_v6 { + description "Pim SwissIX IPv6"; + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::10c as 8298; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Andrew +protocol bgp swissix_andrew_v4 { + local 91.206.52.201 as 210036; + neighbor 91.206.52.243 as 34615; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_andrew_v6 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::f3 as 34615; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Tobias +protocol bgp swissix_tobias_v4 { + local 91.206.52.201 as 210036; + neighbor 91.206.53.19 as 212495; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_tobias_v6 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::113 as 212495; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Meerfabrig +protocol bgp swissix_meerfabrig_v4 { + local 91.206.52.201 as 210036; + neighbor 91.206.52.244 as 34549; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_meerfabrig_v6 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::f4 as 34549; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Akamai +protocol bgp swissix_akamai_v4 { + local 91.206.52.201 as 210036; + neighbor 91.206.52.56 as 20940; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_akamai_v6 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::38 as 20940; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# JMP Technologies +protocol bgp swissix_jmp_technologies_v4 { + local 91.206.52.201 as 210036; + neighbor 91.206.53.18 as 61423; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_jmp_technologies_v6 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::112 as 61423; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp swissix_google_v4_1 { + local 91.206.52.201 as 210036; + neighbor 91.206.52.74 as 15169; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp swissix_google_v6_1 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::4a as 15169; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp swissix_google_v4_2 { + local 91.206.52.201 as 210036; + neighbor 91.206.52.223 as 15169; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp swissix_google_v6_2 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::df as 15169; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# 31173 Services AB +protocol bgp swissix_31173_v4 { + local 91.206.52.201 as 210036; + neighbor 91.206.52.230 as 39351; + # Higher local pref for Zurich. + default bgp_local_pref 200; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp swissix_31173_v6 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::e6 as 39351; + # Higher local pref for Zurich. + default bgp_local_pref 200; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Cloudflare +protocol bgp swissix_cloudflare_v4 { + local 91.206.52.201 as 210036; + neighbor 91.206.52.192 as 13335; + # Higher local pref for Zurich. + default bgp_local_pref 200; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp swissix_cloudflare_v6 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::c0 as 13335; + # Higher local pref for Zurich. + default bgp_local_pref 200; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# i3d +protocol bgp swissix_i3d_v4 { + local 91.206.52.201 as 210036; + neighbor 91.206.53.28 as 49544; + # Higher local pref for Zurich. + default bgp_local_pref 200; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp swissix_i3d_v6 { + local 2001:7f8:24::c9 as 210036; + neighbor 2001:7f8:24::11c as 49544; + # Higher local pref for Zurich. + default bgp_local_pref 200; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + + + +# +# NL-IX +# + +# RS1 +protocol bgp nl_ix_rs1_v4 { + local 193.239.117.206 as 210036; + neighbor 193.239.116.255 as 34307; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_rs1_v6 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a503:4307:1 as 34307; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# RS2 +protocol bgp nl_ix_rs2_v4 { + local 193.239.117.206 as 210036; + neighbor 193.239.117.0 as 34307; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_rs2_v6 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a503:4307:2 as 34307; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Apple +protocol bgp nl_ix_apple_v4_r1 { + local 193.239.117.206 as 210036; + neighbor 193.239.117.112 as 714; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_apple_v6_r1 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a500:714:1 as 714; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp nl_ix_apple_v4_r2 { + local 193.239.117.206 as 210036; + neighbor 193.239.117.113 as 714; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_apple_v6_r2 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a500:714:2 as 714; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + + +# Hurricane +protocol bgp nl_ix_he_v4 { + local 193.239.117.206 as 210036; + neighbor 193.239.116.14 as 6939; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_he_v6 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a500:6939:1 as 6939; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# NL-IX Cloudflare +protocol bgp nl_ix_cloudflare_1 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a501:3335:1 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} +protocol bgp nl_ix_cloudflare_2 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a501:3335:2 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} +protocol bgp nl_ix_cloudflare_3 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a501:3335:3 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} +protocol bgp nl_ix_cloudflare_4 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a501:3335:4 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_cloudflare_v4_1 { + local 193.239.117.206 as 210036; + neighbor 193.239.117.114 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_cloudflare_v4_2 { + local 193.239.117.206 as 210036; + neighbor 193.239.118.138 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_cloudflare_v4_3 { + local 193.239.117.206 as 210036; + neighbor 193.239.119.101 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp nl_ix_cloudflare_v4_4 { + local 193.239.117.206 as 210036; + neighbor 193.239.117.14 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +# 31173 Services AB. +protocol bgp nl_ix_31173_v4 { + local 193.239.117.206 as 210036; + neighbor 193.239.116.34 as 39351; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp nl_ix_31173_v6 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a503:9351:1 as 39351; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp nl_ix_i3d_v4 { + local 193.239.117.206 as 210036; + neighbor 193.239.117.76 as 49544; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp nl_ix_i3d_v6 { + local 2001:7f8:13::a521:36:1 as 210036; + neighbor 2001:7f8:13::a504:9544:1 as 49544; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# +# France-IX +# + +protocol bgp france_ix_rs1_v4{ + local 37.49.238.32 as 210036; + neighbor 37.49.236.250 as 51706; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_rs1_v6 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::250 as 51706; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Hurricane +protocol bgp france_ix_he_v4{ + local 37.49.238.32 as 210036; + neighbor 37.49.236.10 as 6939; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_he_v6 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::10 as 6939; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Transatel +protocol bgp france_ix_transatel_v4{ + local 37.49.238.32 as 210036; + neighbor 37.49.236.140 as 198335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_transatel_v6 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::140 as 198335; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Apple +protocol bgp france_ix_apple_v4_r1 { + local 37.49.238.32 as 210036; + neighbor 37.49.237.176 as 714; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_apple_v6_r1 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::1:176 as 714; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp france_ix_apple_v4_r2 { + local 37.49.238.32 as 210036; + neighbor 37.49.237.179 as 714; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_apple_v6_r2 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::1:179 as 714; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp france_ix_akamai_v4_r1 { + local 37.49.238.32 as 210036; + neighbor 37.49.236.168 as 20940; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_akamai_v6_r1 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::168 as 20940; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp france_ix_akamai_v4_r2 { + local 37.49.238.32 as 210036; + neighbor 37.49.237.164 as 32787; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_akamai_v6_r2 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::1:164 as 32787; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp france_ix_cloudflare_v4_r1 { + local 37.49.238.32 as 210036; + neighbor 37.49.237.49 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_cloudflare_v4_r2 { + local 37.49.238.32 as 210036; + neighbor 37.49.238.59 as 13335; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_cloudflare_v6_r1 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::1:49 as 13335; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} +protocol bgp france_ix_cloudflare_v6_r2 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::2:59 as 13335; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp france_ix_alibaba { + local 37.49.238.32 as 210036; + neighbor 37.49.237.201 as 45102; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp france_ix_i3d_v4 { + local 37.49.238.32 as 210036; + neighbor 37.49.237.230 as 49544; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp france_ix_i3d_v6_r1 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::1:230 as 49544; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# 31173 services AB. +protocol bgp france_ix_39351_v4{ + local 37.49.238.32 as 210036; + neighbor 37.49.237.171 as 39351; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp france_ix_39351_v6 { + local 2001:7f8:54::2:32 as 210036; + neighbor 2001:7f8:54::1:171 as 39351; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# +# DE-CIX +# + +protocol bgp de_cix_rs1_v4 { + local 80.81.196.144 as 210036; + neighbor 80.81.192.157 as 6695; + default bgp_local_pref 150; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_rs1_v6 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::1a27:5051:c09d as 6695; + default bgp_local_pref 150; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_rs2_v4 { + local 80.81.196.144 as 210036; + neighbor 80.81.193.157 as 6695; + default bgp_local_pref 150; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_rs2_v6 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::1a27:5051:c19d as 6695; + default bgp_local_pref 150; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# Apple +protocol bgp de_cix_apple_v4_r1 { + local 80.81.196.144 as 210036; + neighbor 80.81.193.202 as 714; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} +protocol bgp de_cix_apple_v6_r1 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::2ca:0:1 as 714; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_apple_v4_r2 { + local 80.81.196.144 as 210036; + neighbor 80.81.193.223 as 714; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_apple_v6_r2 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::2ca:0:2 as 714; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_apple_v4_r3 { + local 80.81.196.144 as 210036; + neighbor 80.81.194.171 as 714; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_apple_v6_r3 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::2ca:0:4 as 714; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_apple_v4_r4 { + local 80.81.196.144 as 210036; + neighbor 80.81.194.161 as 714; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_apple_v6_r4 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::2ca:0:3 as 714; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + + +protocol bgp de_cix_cprm_v4 { + local 80.81.196.144 as 210036; + neighbor 80.81.192.38 as 8657; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_cprm_v6 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::21d1:0:1 as 8657; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_clouflare_v4_1 { + local 80.81.196.144 as 210036; + neighbor 80.81.194.180 as 13335; + default bgp_local_pref 150; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_clouflare_v4_2 { + local 80.81.196.144 as 210036; + neighbor 80.81.193.129 as 13335; + default bgp_local_pref 150; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_cloudflare_v6_1 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::3417:0:1 as 13335; + default bgp_local_pref 150; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp de_cix_cloudflare_v6_2 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::3417:0:2 as 13335; + default bgp_local_pref 150; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_alibaba { + local 80.81.196.144 as 210036; + neighbor 80.81.195.60 as 45102; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_jmp_technologies_v4 { + local 80.81.196.144 as 210036; + neighbor 80.81.195.13 as 61423; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp de_cix_jmp_technologies_v6 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::efef:0:1 as 61423; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# 31173 services AB. +protocol bgp de_cix_31173_v4 { + local 80.81.196.144 as 210036; + neighbor 80.81.195.179 as 39351; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_31173_v6 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::99b7:0:1 as 39351; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp de_cix_alibaba_multi { + local 80.81.196.144 as 210036; + neighbor 80.81.194.33 as 45102; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + import limit 100; + }; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 10; + import limit 100; + }; +} + +protocol bgp de_cix_i3d_v4 { + local 80.81.196.144 as 210036; + neighbor 80.81.194.107 as 49544; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp de_cix_i3d_v6 { + local 2001:7f8::3:3474:0:1 as 210036; + neighbor 2001:7f8::c188:0:1 as 49544; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# +# FREE-IX +# + +protocol bgp free_ix_rs1_v4 { + local 185.1.205.5 as 210036; + neighbor 185.1.205.254 as 51530; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp free_ix_rs1_v6 { + local 2001:7f8:111:42:0:3:3474:1 as 210036; + neighbor 2001:7f8:111:42::c94a:1 as 51530; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp free_ix_rs2_v4 { + local 185.1.205.5 as 210036; + neighbor 185.1.205.253 as 51530; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} +protocol bgp free_ix_rs2_v6 { + local 2001:7f8:111:42:0:3:3474:1 as 210036; + neighbor 2001:7f8:111:42::c94a:2 as 51530; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp free_ix_otg_v4 { + local 185.1.205.5 as 210036; + neighbor 185.1.205.12 as 35202; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp free_ix_otg_v6 { + local 2001:7f8:111:42:0:3:3474:1 as 210036; + neighbor 2001:7f8:111:42::8982:1 as 35202; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp free_ix_remote_v4 { + local 185.1.205.5 as 210036; + neighbor 185.1.205.7 as 50869; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp free_ix_remote_v6 { + local 2001:7f8:111:42:0:3:3474:1 as 210036; + neighbor 2001:7f8:111:42::c6b5:1 as 50869; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +# +# CommunityIX +# + +protocol bgp com_ix_otg_v4 { + local 185.1.105.7 as 210036; + neighbor 185.1.105.3 as 35202; + ipv4 { + export filter peers_out; + import filter peers_in; + export limit 10; + }; +} + +protocol bgp com_ix_otg_v6 { + local 2001:7f8:bf:1::7 as 210036; + neighbor 2001:7f8:bf:1::3 as 35202; + ipv6 { + export filter peers_out; + import filter peers_in; + export limit 200; + }; +} + +protocol bgp delroth_v6 { + local fd00:2::1 as 210036; + neighbor fd00:2::2 as 210400; + # Transit customers get local_pref higher than any other route + # to ensure we propagate their best routes outwards. + default bgp_local_pref 1000; + ipv6 { + export filter { + accept; # Announce all routes to downstream. + }; + import filter { + if (net ~ [2a0d:d742:40::/44+]) then { + accept; + } + reject; + }; + }; +} + +protocol bgp pkern_v6 { + local fd00:3::1 as 210036; + neighbor fd00:3::2 as 210617; + # Transit customers get local_pref higher than any other route + # to ensure we propagate their best routes outwards. + default bgp_local_pref 1000; + ipv4 { + extended next hop on; + export filter { + accept; # Announce all routes downstream. + }; + import filter { + if (net ~ [193.36.107.0/24]) then { + accept; + } + reject; + }; + }; + ipv6 { + export filter { + accept; # Announce all routes to downstream. + }; + import filter { + if (net ~ [2a0e:97c0:5a0::/48, 2a0e:97c0:5a1::/48, 2a0d:d740:107::/48]) then { + accept; + } + reject; + }; + }; +} + +protocol bgp home_v6 { + local 2a0d:d747:100:: as 210036; + neighbor 2a0d:d747:100::1 as 210036; + allow local as; + ipv6 { + next hop self; + export filter { + # Don't advertise stuff from comrack to home. + if (proto = "comrack_v6") then { + reject; + } + accept; + }; + import filter { + if (net ~ [2a0d:d740:105::/48]) then { + bgp_path.empty; + accept; + } + reject; + }; + }; +} + +protocol bgp home_v4 { + local 10.2.0.2 as 210036; + neighbor 10.2.0.1 as 210036; + allow local as; + direct; + ipv4 { + next hop self; + gateway direct; + import where net ~ [ 193.36.105.0/24 ]; + export where source = RTS_BGP; + }; +} + +define FERRIX_ASN = 4200000001; +define LAB_PREFIXES = [ 2a0d:d741::/40{48,48} ]; + +filter ferrix_import +{ + if !(net ~ LAB_PREFIXES) then reject; + if bgp_path.len > 17 then reject; + if bgp_path.first != FERRIX_ASN then reject; + bgp_community.filter([ (65535, 65281), (65535, 65282) ]); + bgp_large_community.filter([ (42476, *, *), (210036, 0..1, *) ]); + bgp_ext_community.empty; + dest = RTD_UNREACHABLE; + accept; +} + +protocol bgp ferrix +{ + description "ferrix_bgp teaching lab (announce only)"; + local 2a0d:d747:1::1 as 210036; + neighbor 2a0d:d747:1:: as FERRIX_ASN; + direct; + passive on; + ipv6 { + import filter ferrix_import; + import limit 130 action block; + export none; + }; +} + +