The documentation moves from READMEs into a site in docs/: getting started, a user guide, operations, a reference, and development pages, written in the style of network vendors' documentation (docs/STYLE.md). bin/bgp/README.md and docs/RFCs.md are folded into it. - A theme of its own in the International Typographic Style, in blues, with self-hosted Inter and JetBrains Mono, search over Zola's index, dark mode, and no resources loaded from other hosts. - Example configurations in docs/examples/, shown on the pages and checked with `bgp --check` in CI. - A test that fails when a field of config.proto is missing from the configuration reference. - A CI job that builds the site; Zola fails on broken links and anchors. - A hardened systemd unit, tried under systemd with kernel routes on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
71 lines
2.0 KiB
Protocol Buffer Text Format
71 lines
2.0 KiB
Protocol Buffer Text Format
# 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 }
|