aggregate

AGGREGATE(1)                 General Commands Manual                AGGREGATE(1)



NAME
       aggregate - optimise a list of route prefixes to help make nice short
       filters


SYNOPSIS
       aggregate [-m max-length] [-o max-opt-length] [-p default-length] [-q]
       [-t] [-v]


DESCRIPTION
       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 aggregate never 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
              aggregate as 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

SEE ALSO
       aggregate-ios(1)

HISTORY
       Aggregate was written by Joe Abley <jabley@mfnx.net>, and has been
       reasonably well tested. It is suitable for reducing customer prefix
       filters for production use without extensive hand-proving of results.

       Autoconf bits were donated by Michael Shields <michael.shields@mfn.com>.
       The -t option was suggested by Robin Johnson <robbat2@fermi.orbis-
       terrarum.net>, and the treatment of leading zeros on octet parsing was
       changed following comments from Arnold Nipper <arnold@nipper.de>.

       An early version of aggregate would attempt to combine adjacent prefixes
       regardless of whether the first prefix lay on an appropriate bit boundary
       or not (pointed out with great restraint by Robert Noland
       <rnoland@2hip.net>).

BUGS
       Common unix parsing of IPv4 addresses understands the representation of
       individual octets in octal or hexadecimal, following a "0" or "0x"
       prefix, respectively. That convention has been deliberately disabled
       here, since resources such as the IRR do not follow the convention, and
       confusion can result.

       For extremely sensitive applications, judicious use of the -v option
       together with a pencil and paper is probably advisable.




Joe Abley                        2001 November 2                    AGGREGATE(1)