aggregate6 - a fast versatile prefix list compressor

Job Snijders job at ntt.net
Thu Nov 30 20:07:49 UTC 2017


Dear NANOG,

I re-implemented the venerable 'aggregate' tool (by Joe Abley & co) in
python under the name of 'aggregate6'. The 'aggregate6' tool is faster
and also has IPv6 support.

    https://github.com/job/aggregate6

Installation is can be done through 'pip', or your operating system's
package manager (if they carry the 'aggregate6' tool). 

    $ pip install aggregate6

Example use:

	$ echo 10.0.0.0/16 10.0.0.0/24 2000::/4 3000::/4 | aggregate6
	10.0.0.0/16
	2000::/3

Note that 'aggregate6' can also be imported as module in your own python
project:

	>>> import from aggregate6 import aggregate
	>>> aggregate(["10.0.0.0/8", "10.0.0.0/24"])
	['10.0.0.0/8']
	>>>

Related to the above example, NTT uses 'aggregate6' as library in their
network automation toolchain to help compress firewall rules.

When using a dump from the IPv4 Default-Free Zone, it appears that
'aggregate6' can deaggregate that list ~ 50 times faster than
'aggregate'. However the tradeoff is that 'aggregate6' uses a bit more
memory.

Aggregate6 has been tested with pypy, python2 and python3; and can be
used both from the command line or as python module. Aggregate6 is
published under the 2-Clause BSD license.

Kind regards,

Job



More information about the NANOG mailing list