2023-03-13 23:11:45 -07:00
|
|
|
# rs-aggregate
|
2023-03-14 00:40:01 -07:00
|
|
|
rs-aggregate will aggregate an unsorted list of IP prefixes
|
2023-03-13 23:11:45 -07:00
|
|
|
|
2023-03-18 21:37:13 -07:00
|
|
|
Intended to be a drop-in replacement for [aggregate6](https://github.com/job/aggregate6) with better performance.
|
2023-03-13 23:11:45 -07:00
|
|
|
|
2023-03-18 21:37:13 -07:00
|
|
|
Takes a list of whitespace-separated IPs or IP networks and aggregates them to their minimal representation.
|
|
|
|
|
2023-11-16 21:31:28 -08:00
|
|
|
## Installation
|
2023-03-18 21:37:13 -07:00
|
|
|
|
2023-11-16 21:31:28 -08:00
|
|
|
`rs-aggregate` is built statically. CI-built binaries can be found in the GitHub
|
|
|
|
releases for most common platforms. Simply download the appropriate binary and
|
|
|
|
place it in your path.
|
|
|
|
|
|
|
|
It can also be installed via some software management tools:
|
|
|
|
|
|
|
|
### FreeBSD
|
|
|
|
```
|
|
|
|
pkg install rs-aggregate
|
|
|
|
```
|
|
|
|
|
|
|
|
### Cargo
|
|
|
|
```
|
|
|
|
cargo install rs-aggregate
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Known differences from `aggregate6`
|
|
|
|
|
|
|
|
* `-m/--max-prefixlen` supports different maximums for each address family as
|
|
|
|
ipv4,ipv6 format. A single value is also supported and has the same behaviour
|
|
|
|
as `aggregate6` (apply the same maximum to both address families).
|
|
|
|
* `-v` verbose dump is not supported
|
|
|
|
* Truncation errors (when host bits are set without the `-t` flag) are printed
|
|
|
|
based on the parsed address, ie. always in CIDR format, whereas `aggregate6`
|
|
|
|
prints errors based on the input.
|
2023-03-18 21:37:13 -07:00
|
|
|
|
|
|
|
## Performance
|
|
|
|
|
|
|
|
Performance comparison of `rs-aggregate` vs `aggregate6`. A speedup of >100x is achieved on DFZ data.
|
|
|
|
|
2023-11-16 21:31:28 -08:00
|
|
|
### Full DFZ (1154968 total, 202729 aggregates):
|
2023-03-18 21:50:46 -07:00
|
|
|
![dfz perf comparison](doc/perfcomp_all.png)
|
2023-03-18 21:37:13 -07:00
|
|
|
|
2023-11-16 21:31:28 -08:00
|
|
|
### IPv4 DFZ (968520 total, 154061 aggregates):
|
|
|
|
![ipv4 dfz perf comparison](doc/perfcomp_v4.png)
|
|
|
|
|
|
|
|
### 1024 random prefixes (startup time):
|
|
|
|
![startup time comparison](doc/perfcomp_startup.png)
|