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; } # # Export control for lab routes (the /48s learned from ferrix). # # Every eBGP session states who it talks to and where: its neighbour AS and # one of the locations below. Students steer their prefix with large # communities, in this order of precedence: # # 1. 210036:0: never announce to that neighbour AS # 210036:2: never announce at that location # 2. 210036:1: announce to that neighbour AS # 210036:3: announce at that location # 3. 210036:0:0 announce nowhere (unless rule 2 says otherwise) # 4. nothing announce everywhere <- default # # A "never" always wins, so the two dimensions combine: "to Cloudflare, but # not at DE-CIX" is 210036:0:0 210036:1:13335 210036:2:4. # define AT_SWISSIX = 1; # SwissIX define AT_NLIX = 2; # NL-ix define AT_FRANCEIX = 3; # France-IX define AT_DECIX = 4; # DE-CIX Frankfurt define AT_FREEIX = 5; # Free-IX Switzerland define AT_COMMUNITYIX = 6; # Community-IX.ch define AT_TRANSIT = 100; # transit (CommunityRack) define AT_DOWNSTREAM = 200; # downstream customers function lab_export_allowed(int peer_as; int location) { if (210036, 0, peer_as) ~ bgp_large_community then return false; if (210036, 2, location) ~ bgp_large_community then return false; if (210036, 1, peer_as) ~ bgp_large_community then return true; if (210036, 3, location) ~ bgp_large_community then return true; if (210036, 0, 0) ~ bgp_large_community then return false; return true; } # Decides whether a lab route goes out on a session and, if so, makes it # presentable: the origin must appear as AS210036 (matching the route6 # objects) and our action communities must not leak. function lab_route_out(int peer_as; int location) { if !lab_export_allowed(peer_as, location) then return false; bgp_path.delete([ 64512..65534, 4200000000..4294967294 ]); bgp_large_community.delete([ (210036, 0..3, *) ]); 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; }; } function peers_out(int peer_as; int location) { bgp_med = 0; bgp_large_community.add((210036, 10, 2)); if (net = 193.36.104.0/24) then return true; if (net = 2a0d:d740::/48) then return true; if (net = 2a0d:d740:105::/48) then return true; if proto = "delroth_v6" then return true; if proto = "pkern_v6" then return true; if proto = "home_v4" then return true; if proto = "ferrix" then return lab_route_out(peer_as, location); return false; } function comrack_out(int peer_as; int location) { bgp_med = 500; bgp_large_community.add((210036, 10, 2)); if (net = 193.36.104.0/24) then return true; if (net = 2a0d:d740::/48) then return true; if proto = "benfiedler_v4" then return true; if proto = "benfiedler_v6" then return true; if proto = "delroth_v6" then return true; if proto = "pkern_v6" then return true; if proto = "home_v4" then return true; if proto = "ferrix" then return lab_route_out(peer_as, location); return false; } 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 where comrack_out(57118, AT_TRANSIT); 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 where comrack_out(57118, AT_TRANSIT); 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 where peers_out(42476, AT_SWISSIX); 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 where peers_out(42476, AT_SWISSIX); 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 where peers_out(42476, AT_SWISSIX); 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 where peers_out(42476, AT_SWISSIX); 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 where peers_out(6939, AT_SWISSIX); 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 where peers_out(6939, AT_SWISSIX); 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 where peers_out(8298, AT_SWISSIX); 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 where peers_out(8298, AT_SWISSIX); 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 where peers_out(34615, AT_SWISSIX); 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 where peers_out(34615, AT_SWISSIX); 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 where peers_out(212495, AT_SWISSIX); 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 where peers_out(212495, AT_SWISSIX); 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 where peers_out(34549, AT_SWISSIX); 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 where peers_out(34549, AT_SWISSIX); 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 where peers_out(20940, AT_SWISSIX); 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 where peers_out(20940, AT_SWISSIX); 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 where peers_out(61423, AT_SWISSIX); 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 where peers_out(61423, AT_SWISSIX); 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 where peers_out(15169, AT_SWISSIX); 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 where peers_out(15169, AT_SWISSIX); 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 where peers_out(15169, AT_SWISSIX); 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 where peers_out(15169, AT_SWISSIX); 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 where peers_out(39351, AT_SWISSIX); 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 where peers_out(39351, AT_SWISSIX); 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 where peers_out(13335, AT_SWISSIX); 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 where peers_out(13335, AT_SWISSIX); 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 where peers_out(49544, AT_SWISSIX); 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 where peers_out(49544, AT_SWISSIX); 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 where peers_out(34307, AT_NLIX); 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 where peers_out(34307, AT_NLIX); 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 where peers_out(34307, AT_NLIX); 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 where peers_out(34307, AT_NLIX); 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 where peers_out(714, AT_NLIX); 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 where peers_out(714, AT_NLIX); 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 where peers_out(714, AT_NLIX); 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 where peers_out(714, AT_NLIX); 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 where peers_out(6939, AT_NLIX); 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 where peers_out(6939, AT_NLIX); 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 where peers_out(13335, AT_NLIX); import filter peers_in; export limit 10; }; ipv6 { export where peers_out(13335, AT_NLIX); 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 where peers_out(13335, AT_NLIX); import filter peers_in; export limit 10; }; ipv6 { export where peers_out(13335, AT_NLIX); 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 where peers_out(13335, AT_NLIX); import filter peers_in; export limit 10; }; ipv6 { export where peers_out(13335, AT_NLIX); 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 where peers_out(13335, AT_NLIX); 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 where peers_out(13335, AT_NLIX); 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 where peers_out(13335, AT_NLIX); 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 where peers_out(13335, AT_NLIX); 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 where peers_out(13335, AT_NLIX); 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 where peers_out(39351, AT_NLIX); 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 where peers_out(39351, AT_NLIX); 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 where peers_out(49544, AT_NLIX); 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 where peers_out(49544, AT_NLIX); 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 where peers_out(51706, AT_FRANCEIX); 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 where peers_out(51706, AT_FRANCEIX); 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 where peers_out(6939, AT_FRANCEIX); 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 where peers_out(6939, AT_FRANCEIX); 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 where peers_out(198335, AT_FRANCEIX); 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 where peers_out(198335, AT_FRANCEIX); 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 where peers_out(714, AT_FRANCEIX); 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 where peers_out(714, AT_FRANCEIX); 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 where peers_out(714, AT_FRANCEIX); 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 where peers_out(714, AT_FRANCEIX); 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 where peers_out(20940, AT_FRANCEIX); 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 where peers_out(20940, AT_FRANCEIX); 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 where peers_out(32787, AT_FRANCEIX); 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 where peers_out(32787, AT_FRANCEIX); 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 where peers_out(13335, AT_FRANCEIX); 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 where peers_out(13335, AT_FRANCEIX); 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 where peers_out(13335, AT_FRANCEIX); 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 where peers_out(13335, AT_FRANCEIX); 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 where peers_out(45102, AT_FRANCEIX); import filter peers_in; export limit 10; }; ipv6 { export where peers_out(45102, AT_FRANCEIX); 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 where peers_out(49544, AT_FRANCEIX); 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 where peers_out(49544, AT_FRANCEIX); 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 where peers_out(39351, AT_FRANCEIX); 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 where peers_out(39351, AT_FRANCEIX); 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 where peers_out(6695, AT_DECIX); 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 where peers_out(6695, AT_DECIX); 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 where peers_out(6695, AT_DECIX); 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 where peers_out(6695, AT_DECIX); 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 where peers_out(714, AT_DECIX); 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 where peers_out(714, AT_DECIX); 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 where peers_out(714, AT_DECIX); 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 where peers_out(714, AT_DECIX); 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 where peers_out(714, AT_DECIX); 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 where peers_out(714, AT_DECIX); 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 where peers_out(714, AT_DECIX); 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 where peers_out(714, AT_DECIX); 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 where peers_out(8657, AT_DECIX); 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 where peers_out(8657, AT_DECIX); 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 where peers_out(13335, AT_DECIX); 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 where peers_out(13335, AT_DECIX); 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 where peers_out(13335, AT_DECIX); 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 where peers_out(13335, AT_DECIX); 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 where peers_out(45102, AT_DECIX); import filter peers_in; export limit 10; }; ipv6 { export where peers_out(45102, AT_DECIX); 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 where peers_out(61423, AT_DECIX); 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 where peers_out(61423, AT_DECIX); 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 where peers_out(39351, AT_DECIX); 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 where peers_out(39351, AT_DECIX); 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 where peers_out(45102, AT_DECIX); import filter peers_in; export limit 10; import limit 100; }; ipv6 { export where peers_out(45102, AT_DECIX); 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 where peers_out(49544, AT_DECIX); 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 where peers_out(49544, AT_DECIX); 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 where peers_out(51530, AT_FREEIX); 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 where peers_out(51530, AT_FREEIX); 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 where peers_out(51530, AT_FREEIX); 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 where peers_out(51530, AT_FREEIX); 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 where peers_out(35202, AT_FREEIX); 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 where peers_out(35202, AT_FREEIX); 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 where peers_out(50869, AT_FREEIX); 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 where peers_out(50869, AT_FREEIX); 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 where peers_out(35202, AT_COMMUNITYIX); 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 where peers_out(35202, AT_COMMUNITYIX); 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 { if proto = "ferrix" then { if lab_route_out(210400, AT_DOWNSTREAM) then accept; reject; } 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 { if proto = "ferrix" then { if lab_route_out(210617, AT_DOWNSTREAM) then accept; reject; } 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..3, *) ]); bgp_ext_community.empty; dest = RTD_UNREACHABLE; accept; } protocol bgp ferrix { description "ferrix_bgp teaching lab (announce only, same host)"; local ::1 as 210036; neighbor ::1 as FERRIX_ASN; # Both ends are this machine, so there is no directly connected # neighbour for "direct" (the eBGP default) to find. multihop; passive on; ipv6 { import filter ferrix_import; import limit 130 action block; export none; }; }