Example Scenario
To make it clearer how you can deploy RTRTR, below is an example scenario. This flow may not be entirely realistic, but it intends to show all the different ways you can wire units and targets together using a visual representation and the configuration file needed to accomplish it.
In this example, there is routing infrastructure in a data centre labeled as
dc1
. To ensure redundancy, it gets Validated ROA Payloads (VRPs) primarily
from relying party software running in the eu-west-3
location, using the RTR
protocol. There are two backups configured: a validator serving RTR in
ap-south-1
and an instance from another vendor offering a feed in JSON
format in us-east-2
. A unit of the type any
is configured to get a feed
from all three and, should the first one fail, do a round robin to the next
available one.
To make the management of some statically configured routes for this location
easy, the slurm
unit gets its data from the any
unit so only a single
file has to be kept up-to-date.
Finally, an http
target is configured to get the VRPs without the SLURM
exceptions, to be fed into internal tooling and an rtr
unit is defined to
serve the routing infrastructure.
Configuration File
log_level = "debug"
log_target = "stderr"
log_facility = "daemon"
log_file = "/var/log/rtrtr.log"
http-listen = ["127.0.0.1:8080"] # where 127.0.0.1 is the IP address of dc1.http.example.net
# RTR UNITS
[units.eu-west-3]
type = "rtr"
remote = "paris.validator.example.net:3323"
[units.ap-south-1]
type = "rtr"
remote = "mumbai.validator.example.net:3323"
# JSON UNIT
[units.us-east-2]
type = "json"
uri = "https://ohio.validator.example.net/rpki.json"
refresh = 60
# ANY UNIT
[units.round-robin]
type = "any"
sources = [ "eu-west-3", "ap-south-1", "us-east-2" ]
random = false
# SLURM
[units.static-routes]
type = "slurm"
source = "round-robin"
files = [ "/var/lib/rtrtr/local-expections.json" ]
# RTR TARGET
[targets.dc1-rtr]
type = "rtr"
listen = [ "127.0.0.2:9001" ] # where 127.0.0.2 is the IP address of dc1.http.example.net
unit = "static-routes"
# JSON TARGET
[targets.dc1-json]
type = "http"
path = "/json"
format = "json"
unit = "round-robin"