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>
74 lines
2.1 KiB
Protocol Buffer Text Format
74 lines
2.1 KiB
Protocol Buffer Text Format
# Network with one transit provider, a session with an Internet exchange
|
|
# route server, and a bilateral session with one peer at the exchange.
|
|
#
|
|
# Routes learned at the exchange have local preference 150, and transit
|
|
# routes have the default of 100. Accepted routes are marked with a large
|
|
# community that identifies where they were learned (64500:2:x). Advertised
|
|
# routes are marked with the advertising router (64500:3:r).
|
|
router_id: "198.51.100.1"
|
|
local_asn: 64500
|
|
|
|
peers {
|
|
name: "transit-a"
|
|
endpoint { address: "2001:db8:ffff:1::1" }
|
|
remote_asn: 64496
|
|
role: PROVIDER
|
|
import {
|
|
max_prefixes: 1500000
|
|
remove_communities: "64500:2:*"
|
|
remove_communities: "64500:3:*"
|
|
add_large_communities: "64500:2:100" # Learned from transit-a.
|
|
}
|
|
}
|
|
|
|
# The route server does not prepend its AS number. Its routes have the
|
|
# addresses of the originating members as next hops, which the role
|
|
# ROUTE_SERVER permits.
|
|
peers {
|
|
name: "ixp-a-rs1"
|
|
endpoint { address: "2001:db8:ffff:ff::fe" }
|
|
remote_asn: 64511
|
|
role: ROUTE_SERVER
|
|
import {
|
|
max_prefixes: 250000
|
|
accept_any_first_as: true
|
|
remove_communities: "64500:2:*"
|
|
remove_communities: "64500:3:*"
|
|
add_large_communities: "64500:2:1001" # Learned at exchange A.
|
|
local_pref: 150
|
|
}
|
|
}
|
|
|
|
# Bilateral peer at the exchange. The prefix and origin AS lists are
|
|
# generated from the IRR with bgpq4.
|
|
peers {
|
|
name: "ixp-a-as64499"
|
|
endpoint { address: "2001:db8:ffff:ff::99" }
|
|
remote_asn: 64499
|
|
role: PEER
|
|
require_role: true
|
|
import {
|
|
max_prefixes: 100
|
|
prefixes { prefix: "2001:db8:9900::/40" max_length: 48 }
|
|
origin_asns: 64499
|
|
remove_communities: "64500:2:*"
|
|
remove_communities: "64500:3:*"
|
|
add_large_communities: "64500:2:1001"
|
|
local_pref: 150
|
|
}
|
|
}
|
|
|
|
originate { prefix: "2001:db8:100::/40" }
|
|
|
|
# Applies to all neighbors: marks advertised routes with router 1.
|
|
export { add_large_communities: "64500:3:1" }
|
|
|
|
rpki {
|
|
caches { address: "::1" port: 3323 }
|
|
caches { address: "2001:db8:100::53" port: 3323 }
|
|
}
|
|
|
|
kernel {}
|
|
|
|
http_endpoint { address: "127.0.0.1" port: 8080 }
|