Man Linux: Main Page and Category List

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.