2020-07-02 16:02:58 +02:00
|
|
|
|
# RTRTR – A Versatile Tool for Route Filters
|
2020-02-10 13:54:54 +01:00
|
|
|
|
|
2020-07-17 12:16:05 +02:00
|
|
|
|

|
|
|
|
|
|
2020-07-02 16:02:58 +02:00
|
|
|
|
RTRTR is a tool that collects, processes, and distributes data for route
|
2020-07-02 17:05:44 +02:00
|
|
|
|
filtering. It reads data from various sources, such as validated RPKI
|
2020-07-02 16:02:58 +02:00
|
|
|
|
data, IRR data, or local rules, allows selecting, filtering, and otherwise
|
2020-07-02 17:05:44 +02:00
|
|
|
|
manipulating this data, and finally feeds it to routers either via
|
2020-07-02 16:02:58 +02:00
|
|
|
|
protocols such as RTR or through generated configuration files.
|
2020-02-13 17:14:28 +01:00
|
|
|
|
|
2020-07-02 16:02:58 +02:00
|
|
|
|
RTRTR is currently in early development. Right now, it can read RPKI data
|
|
|
|
|
via RTR from multiple servers and provide it, also via RTR, to routers.
|
|
|
|
|
Over time, we will add more functionality.
|
2020-02-13 17:14:28 +01:00
|
|
|
|
|
|
|
|
|
|
2020-07-02 16:02:58 +02:00
|
|
|
|
## Architecture
|
|
|
|
|
|
|
|
|
|
RTRTR is a very versatile tool. It comes with a number of components for
|
|
|
|
|
different purposes that can be connected to serve multiple use cases.
|
|
|
|
|
There are two classes of components: _Units_ take filtering data from
|
|
|
|
|
somewhere – this could other units or external sources –, and produce and
|
|
|
|
|
constantly update one new set of data. _Targets_ take the data set from
|
|
|
|
|
one particular unit and serve it to an external party.
|
|
|
|
|
|
|
|
|
|
Which components RTRTR will use and how they are connected is described in
|
|
|
|
|
a config file. An example can be found in [`etc/rtrtr.conf`].
|
2020-02-13 17:14:28 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Quick Start
|
|
|
|
|
|
|
|
|
|
If you have already installed Routinator, this should all be somewhat
|
|
|
|
|
familiar.
|
|
|
|
|
|
|
|
|
|
Assuming you have a newly installed Debian or Ubuntu machine, you will need
|
2020-07-02 16:02:58 +02:00
|
|
|
|
to install the C toolchain and Rust. You can then install RTRTR using
|
|
|
|
|
Cargo, Rust’s build tool, directly from the repository.
|
2020-02-13 17:14:28 +01:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
apt install rsync build-essential
|
|
|
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
|
|
|
source ~/.cargo/env
|
2020-03-07 11:29:20 +01:00
|
|
|
|
cargo install --git https://github.com/NLnetLabs/rtrtr.git
|
2020-07-02 16:02:58 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If you want to pick up a particular branch, you can do so, too:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
cargo install --git https://github.com/NLnetLabs/rtrtr.git --branch foo
|
2020-02-13 17:14:28 +01:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If you have an older version of Rust and RTRTR, you can update using
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
rustup update
|
2020-03-07 11:30:12 +01:00
|
|
|
|
cargo install -f --git https://github.com/NLnetLabs/rtrtr.git
|
2020-02-13 17:14:28 +01:00
|
|
|
|
```
|
|
|
|
|
|
2020-07-02 16:02:58 +02:00
|
|
|
|
The `-f` option to `cargo install` overwrites an already installed RTRTR.
|
|
|
|
|
|
|
|
|
|
Once RTRTR is installed, you need to create a config file that suits your
|
|
|
|
|
needs. The example in [`etc/rtrtr.conf`] may be a good way to start. The
|
|
|
|
|
config file to use needs to be passed to RTRTR via the `-c` option:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
rtrtr -c rtrtr.conf
|
|
|
|
|
```
|
2020-02-13 17:14:28 +01:00
|
|
|
|
|
2020-07-02 16:30:14 +02:00
|
|
|
|
[`etc/rtrtr.conf`]: https://github.com/NLnetLabs/rtrtr/blob/main/etc/rtrtr.conf
|