aggregate1
Optimise a list of route prefixes to help make nice short filters
Usage
aggregate [-m
max-length]
[-o
max-opt-length]
[-p
default-length]
[-q]
[-t]
[-v]
Overview
Takes a list of prefixes in conventional format on stdin, and performs two optimisations to attempt to reduce the length of the prefix list.
The first optimisation is to remove any supplied prefixes which are superfluous because they are already included in another supplied prefix. For example, 203.97.2.0/24 would be removed if 203.97.0.0/17 was also supplied.
The second optimisation identifies adjacent prefixes that can be combined under a single, shorter-length prefix. For example, 203.97.2.0/24 and 203.97.3.0/24 can be combined into the single prefix 203.97.2.0/23.
Options
-
-m max-length -
Sets the maximum prefix length for entries read from stdin max_length bits. The default is 32. Prefixes with longer lengths will be discarded prior to processing.
-
-o max-opt-length -
Sets the maximum prefix length for optimisation to max-opt-length bits. The default is 32. Prefixes with longer lengths will not be subject to optimisation.
-
-p default-length -
Sets the default prefix length. There is no default; without this option a prefix without a mask length is treated as invalid. Use -p 32 -m 32 -o 32 to aggregate a list of host routes specified as bare addresses, for example.
-
-q -
Sets quiet mode -- instructs
aggregatenever to generate warning messages or other output on stderr.
-
-t -
Silently truncate prefixes that seem to have an inconsistent prefix: e.g. an input prefix 203.97.2.226/24 would be truncated to 203.97.2.0/24. Without this option an input prefix 203.97.2.226/24 would not be accepted, and a warning about the inconsistent mask would be generated.
-
-v -
Sets verbose mode. This changes the output format to display the source line number that the prefix was obtained from, together with a preceding "-" to indicate a route that can be suppressed, or a "+" to indicate a shorter-prefix aggregate that was added by
aggregateas an adjacency optimisation. Note that verbose output continues even if -q is selected.
Diagnostics
Aggregate exits 0 on success, and >0 if an error occurs.
Examples
The following list of prefixes:
193.58.204.0/22
193.58.208.0/22
193.193.160.0/22
193.193.168.0/22
193.243.164.0/22
194.126.128.0/22
194.126.132.0/22
194.126.134.0/23
194.151.128.0/19
195.42.240.0/21
195.240.0.0/16
195.241.0.0/16
is optimised as followed by aggregate (output shown using the -v flag):
aggregate: maximum prefix length permitted will be 24
[ 0] + 193.58.204.0/21
[ 1] - 193.58.204.0/22
[ 2] - 193.58.208.0/22
[ 3] 193.193.160.0/22
[ 4] 193.193.168.0/22
[ 5] 193.243.164.0/22
[ 0] + 194.126.128.0/21
[ 6] - 194.126.128.0/22
[ 7] - 194.126.132.0/22
[ 8] - 194.126.134.0/23
[ 9] 194.151.128.0/19
[ 10] 195.42.240.0/21
[ 0] + 195.240.0.0/15
[ 11] - 195.240.0.0/16
[ 12] - 195.241.0.0/16
Note that 193.58.204.0/22 and 193.58.208.0/22 were combined under the single prefix 193.58.204.0/21, and 194.126.134.0/23 was suppressed because it was included in 194.126.132.0/22. The number in square brackets at the beginning of each line indicates the original line number, or zero for new prefixes that were introduced by aggregate.
The output without the -v flag is as follows:
193.58.204.0/21
193.193.160.0/22
193.193.168.0/22
193.243.164.0/22
194.126.128.0/21
194.151.128.0/19
195.42.240.0/21
195.240.0.0/15
Notes
Aggregate also understands the a8.b8.c16 and a8.b24 formats: the address 10.1.2.3 is equivalent to 10.1.515 and 10.66051.
Releases
9 releases since Debian 5.0 (Lenny); the text changed 1 time.