Skip to content

Instantly share code, notes, and snippets.

@amanjuman
Created April 13, 2026 23:47
Show Gist options
  • Select an option

  • Save amanjuman/6a4a9588c58ee74b359d91cd6cd85bd9 to your computer and use it in GitHub Desktop.

Select an option

Save amanjuman/6a4a9588c58ee74b359d91cd6cd85bd9 to your computer and use it in GitHub Desktop.
Pathvector Configuration for Transit BGP Server
# Your ASN Number
asn: YOUR_ASN
# BIRD router ID
router-id: X.X.X.X
# RIRs to query for IRR filtering
bgpq-args: -S AFRINIC,APNIC,ARIN,LACNIC,RIPE
# Main IRR whois server
irr-server: rr.ntt.net
# Timeout for IRR lookups
irr-query-timeout: 30
# RPKI RTR validator
rtr-server: rtr.rpki.cloudflare.com:8282
# Auto-generate configs from PeeringDB
peeringdb-api-key: "REDUCTED"
# PeeringDB API Timeout
peeringdb-query-timeout: 30
# Send default route to peer
default-route: false
# Originate default route
#accept-default: true
# Allows multiple ECMP paths
merge-paths: true
# Keep filtered routes (useful for debugging)
keep-filtered: false
kernel:
learn: false # This keeps the server from learning routes FROM the system
export: true # This allows BIRD to tell the system how to REACH your MikroTik
# For upstream/transit/edge router
srd-communities:
- "YOUR_ASN:0:16" # own prefixes — tagged on iBGP import
- "YOUR_ASN:0:15" # downstream customer routes
# Communities Documentation
# YOUR_ASN:0:12 → Learned from upstream
# YOUR_ASN:0:13 → Learned from route server
# YOUR_ASN:0:14 → Learned from peer
# YOUR_ASN:0:15 → Learned from downstream (customer routes)
# YOUR_ASN:0:16 → Own prefixes (your allocations)
templates:
upstream:
local-pref: 80
allow-local-as: false
add-on-import: ["YOUR_ASN:0:12"]
announce: ["YOUR_ASN:0:15", "YOUR_ASN:0:16"]
remove-all-communities: YOUR_ASN
import-limit4: 2000000
import-limit6: 1000000
filter-irr: false
filter-transit-asns: false
enforce-first-as: true
enforce-peer-nexthop: true
peer:
local-pref: 100
add-on-import: ["YOUR_ASN:0:14"]
announce: ["YOUR_ASN:0:15", "YOUR_ASN:0:16"]
remove-all-communities: YOUR_ASN
filter-irr: true
filter-transit-asns: true
auto-import-limits: true
auto-as-set: true
enforce-first-as: true
enforce-peer-nexthop: true
next-hop-self: true
routeserver:
local-pref: 90
add-on-import: ["YOUR_ASN:0:13"]
announce: ["YOUR_ASN:0:15", "YOUR_ASN:0:16"]
remove-all-communities: YOUR_ASN
filter-irr: true
filter-transit-asns: true
auto-import-limits: true
auto-as-set: true
enforce-first-as: false
enforce-peer-nexthop: false
next-hop-self: true
ibgp:
local-pref: 150
allow-local-as: true
add-on-import: ["YOUR_ASN:0:16"]
announce: ["YOUR_ASN:0:12", "YOUR_ASN:0:13", "YOUR_ASN:0:14", "YOUR_ASN:0:15", "YOUR_ASN:0:16"]
remove-all-communities: YOUR_ASN
enforce-first-as: false
enforce-peer-nexthop: false
filter-rpki: false
filter-irr: false
next-hop-self: true
import-limit4: 10000
import-limit6: 5000
downstream:
local-pref: 200
add-on-import: ["YOUR_ASN:0:15"]
announce: ["YOUR_ASN:0:12", "YOUR_ASN:0:13", "YOUR_ASN:0:14", "YOUR_ASN:0:16"]
remove-all-communities: YOUR_ASN
announce-default: true
filter-irr: true
filter-transit-asns: true
auto-import-limits: true
auto-as-set: true
next-hop-self: true
import-limit4: 500000
import-limit6: 250000
allow-blackhole-community: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment