Aggregate a list of IP prefixes into their minimum equivalent representation
Go to file
2023-10-21 14:39:55 -07:00
.github/workflows Workflow: build tests before running 2023-03-19 12:34:25 -07:00
doc Add performance graphs to repo 2023-03-18 21:50:12 -07:00
src New implementation that does not depend on iprange crate 2023-10-21 14:34:24 -07:00
test-data More refactoring, add tests, aggregate6 compatibility 2023-03-18 21:37:13 -07:00
tests Improve tests to normalize (sort) test case output / expected 2023-10-21 14:34:08 -07:00
.gitignore Initial commit 2023-03-13 23:11:45 -07:00
Cargo.lock amend! Update cargo 2023-10-21 14:39:55 -07:00
Cargo.toml amend! Update cargo 2023-10-21 14:39:55 -07: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