# Transit network with two providers and one customer. Customer routes are # advertised to all neighbors. Provider routes are advertised to the # customer only. The BGP roles of the neighbors enforce this. router_id: "198.51.100.1" local_asn: 64500 # Advertise learned routes to all neighbors, as BGP roles permit. export { learned_routes: true } # Customers can restrict the advertisement of their routes with the large # communities 64500:0:P (not to AS P), 64500:1:P (only to AS P), and # 64500:0:0 (to no neighbor), or the standard communities 0:P, 64500:P, and # 0:64500. control_communities: true peers { name: "transit-a" endpoint { address: "203.0.113.0" } remote_asn: 64496 role: PROVIDER import { max_prefixes: 1500000 remove_communities: "64500:2:*" add_large_communities: "64500:2:100" } } peers { name: "transit-b" endpoint { address: "203.0.113.2" } remote_asn: 64497 role: PROVIDER import { max_prefixes: 1500000 remove_communities: "64500:2:*" add_large_communities: "64500:2:200" } # Prepend to make the path through transit-b less preferred. This # statement replaces the top-level export statement for this neighbor. export { learned_routes: true as_path_prepend: 2 } } # Customer with a four-octet AS number. The prefix and origin AS lists # restrict its routes to its registered address space. Local preference # 200 makes its routes preferred over the same prefixes from providers. peers { name: "customer-65536" endpoint { address: "203.0.113.5" } remote_asn: 65536 role: CUSTOMER require_role: true import { max_prefixes: 50 prefixes { prefix: "192.0.2.0/24" } prefixes { prefix: "2001:db8:a00::/40" max_length: 48 } origin_asns: 65536 remove_communities: "64500:2:*" add_large_communities: "64500:2:300" local_pref: 200 } } originate { prefix: "198.51.100.0/24" } originate { prefix: "2001:db8:100::/40" } rpki { caches { address: "::1" port: 3323 } } kernel {} http_endpoint { address: "127.0.0.1" port: 8080 }