Aggregate a list of IP prefixes into their minimum equivalent representation
Go to file
2023-11-16 21:35:29 -08:00
.github/workflows Remove unnecessary archive formats from release CI 2023-11-16 21:35:29 -08:00
benches Add bench for small runs / startup time 2023-11-16 21:35:29 -08:00
doc Update bench results 2023-11-16 21:35:29 -08:00
src Specialize on truncate arg for ~5% speedup in truncate case 2023-11-16 21:33:59 -08:00
test-data Add benches and plot generation 2023-11-15 16:53:45 -08:00
tests tests: Test against aggregate6 output ordering behaviour 2023-11-15 16:53:31 -08:00
.gitignore Initial commit 2023-03-13 23:11:45 -07:00
Cargo.lock Add bench for small runs / startup time 2023-11-16 21:35:29 -08:00
Cargo.toml Add bench for small runs / startup time 2023-11-16 21:35:29 -08:00
LICENSE Add license 2023-03-18 22:06:46 -07:00
README.md Fix readme 2023-03-18 21:50:46 -07:00

rs-aggregate

rs-aggregate will aggregate an unsorted list of IP prefixes

Intended to be a drop-in replacement for aggregate6 with better performance.

Takes a list of whitespace-separated IPs or IP networks and aggregates them to their minimal representation.

Known discrepancies with aggregate6

  • rs-aggregate accepts subnet and wilcard mask formats in addition to CIDR, ie all these are valid and equivalent:
    • 1.1.1.0/255.255.255.0
    • 1.1.1.0/0.0.0.255
    • 1.1.1.0/24
  • -m/--max-prefixlen supports different maximums for each address family as ipv4,ipv6 format

Performance

Performance comparison of rs-aggregate vs aggregate6. A speedup of >100x is achieved on DFZ data.

Full DFZ (1154968 total, 202729 aggregates): dfz perf comparison

IPv4 DFZ (968520 total, 154061 aggregates): ipv4 dfz perf comparison