Aggregate a list of IP prefixes into their minimum equivalent representation
Go to file
2023-03-18 21:37:13 -07:00
.github/workflows add release action 2023-03-16 17:55:06 -07:00
src More refactoring, add tests, aggregate6 compatibility 2023-03-18 21:37:13 -07:00
test-data More refactoring, add tests, aggregate6 compatibility 2023-03-18 21:37:13 -07:00
tests More refactoring, add tests, aggregate6 compatibility 2023-03-18 21:37:13 -07:00
.gitignore Initial commit 2023-03-13 23:11:45 -07:00
Cargo.lock More refactoring, add tests, aggregate6 compatibility 2023-03-18 21:37:13 -07:00
Cargo.toml More refactoring, add tests, aggregate6 compatibility 2023-03-18 21:37:13 -07:00
README.md More refactoring, add tests, aggregate6 compatibility 2023-03-18 21:37:13 -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