#### ASpath-tree v.4.2 - Released on Thu APR 17 2003, h.16:58:12
#### File: readme.txt Last modified on Thu APR 17 2003, h.16:45:39

ASpath-tree README file

In this file:
  - What is it?
  - Software availability
  - Installation
  - Configuration
  - Expected inputs
  - Running the script
  - How it works

-----------
What is it?
-----------

ASpath-tree is a tool to perform IPv6 network operation analysis based
on the snapshot of the BGP routing table on IPv6 routers running BGP.
Originally designed to be used by an IPv6 site involved in the
experimentation of the BGP protocol inside the 6Bone network, it now
supports a set of features useful within any operational IPv6 network
which makes use of BGP.
Based on a single snapshot of the IPv6 BGP table, ASpath-tree
automatically generates a set of html pages providing a graphical view
of the routing paths towards the other IPv6 connected domains.
Additionally it provides pages for the detection of anomalous route
entries announced through BGP (invalid prefixes and unaggregated
prefixes), anomalous AS numbers (i.e. reserved or private) in use and
a set of summary information such as:
- the number of route entries (valid/total/suppressed/damped/history)
- the number of AS in table (total, originating only,
  originating/transit, transit only, private and reserved)
- the number of active AS paths
- the number of active BGP neighbours (i.e. announcing routing
  information)
- an analysis of the network size, in terms of AS distances
- the number of circulating prefixes (total, 6Bone pTLAs, sTLAs, 6to4,
  others)
Based on repeated snapshots of the IPv6 BGP table at different points
in time, ASpath-tree automatically generates html pages reporting on
BGP routing stability (last 24 hours) for:
- 6Bone pTLAs
- RIR's assigned sTLAs

An example of the html pages generated using the software tool
provided with this distribution can be found at the following URL:
http://net-stats.ipv6.tilab.com/bgp/index.html
These pages show the BGP routing tree from TILAB to the IPv6 domains
it is connected to and they are automatically updated every 5 min.

---------------------
Software Availability
---------------------

This software was developed inside the Telecom Italia Lab (TILAB,
formerly CSELT)'s IPv6 laboratory and it is made up of a collection of
Perl (http://www.cpan.org) scripts. It was tested on several Solaris
(up to 8) and FreeBSD (up to 4.5) platforms and it should work
without problems on any Unix platform (Linux, etc.) with
Perl (version equal or greater than 5.0) installed.

The IPv6 BGP tables of external routers are obtained using rsh or telnet
commands. The current release works with cisco routers, zebra routers
and juniper routers running IPv6 capable software versions.

The ASpath-tree tool is freely available accepting the terms and
condition of the DISCLAIMER Notice included in the distribution file.
If you find it useful just install ASpath-tree, and make the generated
html pages available over the Internet. This will be of great help to
the other IPv6 network's managers. We will appreciate any feedback
you can have and if you can inform us about the URL of your
ASpath-tree pages. Just send an e-mail to <ipv6@tilab.com>.
We will add a link to your pages at
             http://net-stats.ipv6.tilab.com/links.html

------------
Installation
------------

Unzip and extract files from the ASpath-tree distribution file.
Current ASpath-tree distribution (ASpath-tree-v4.2.tar.gz) includes
the following files and directories:

ASpath-tree-v4.2/data/6bone.db
ASpath-tree-v4.2/data/rirs.db
ASpath-tree-v4.2/etc/ASpath-tree.config
ASpath-tree-v4.2/lib/ASmain.pl
ASpath-tree-v4.2/lib/bgp-tree-changes.pl
ASpath-tree-v4.2/lib/bgp-tree.pl
ASpath-tree-v4.2/lib/create-homepage.pl
ASpath-tree-v4.2/lib/elaborate-aspaths.pl
ASpath-tree-v4.2/lib/getbgptable.pl
ASpath-tree-v4.2/lib/history.pl
ASpath-tree-v4.2/lib/ipv6prefix.pl
ASpath-tree-v4.2/lib/odd-as.pl
ASpath-tree-v4.2/lib/odd-routes.pl
ASpath-tree-v4.2/lib/route-stability.pl
ASpath-tree-v4.2/lib/utility.pl
ASpath-tree-v4.2/log/
ASpath-tree-v4.2/history/
ASpath-tree-v4.2/htdocs/
ASpath-tree-v4.2/htdocs/icons/bnew.gif
ASpath-tree-v4.2/htdocs/icons/bold.gif
ASpath-tree-v4.2/htdocs/icons/e.gif
ASpath-tree-v4.2/htdocs/icons/h.gif
ASpath-tree-v4.2/htdocs/icons/l.gif
ASpath-tree-v4.2/htdocs/icons/p.gif
ASpath-tree-v4.2/htdocs/icons/t.gif
ASpath-tree-v4.2/htdocs/icons/v.gif
ASpath-tree-v4.2/update-rtree
ASpath-tree-v4.2/readme.txt
ASpath-tree-v4.2/changes.txt
ASpath-tree-v4.2/DISCLAIMER

-------------
Configuration
-------------

The configuration of ASpath-tree includes two steps:
- give access to the target router (cisco, juniper or zebra)
- configure the executable script and customize the configuration file
  etc/ASpath-tree.config

Configuring the target router
-----------------------------

CISCO
-----
The cisco router must be configured to accept rsh commands or telnet
access from the workstation which is running the ASpath-tree
scripts. The administrator of the cisco router must perform the
following configurations:

Option 1: rsh collection
------------------------
The router must be configured to accept rsh commands coming from the
remote workstation which is running the ASpath-tree scripts in the
following way:

  ip rcmd remote-host <router-username> <remote-ip-address> <remote-
  username>
  ip rcmd rsh-enable

where:

<router-username>   is the name of the rsh user enabled on the cisco
                    router
<remote-ip-address> is the IP address of the workstation (client)
                    running the ASpath-tree scripts
<remote-username>   is the username on the client workstation which is
                    allowed to remotely execute commands on the router

For example if the cisco router is configured as follows

  ip rcmd remote-host router1 194.100.100.100 root
  ip rcmd rsh-enable

it is possible to retrieve the whole BGP routing table available
on the router whenever logged as root on the workstation with
IP address 194.100.100.100.
The rsh command to be used is:

  rsh <router-address> -l <router-username> "show bgp ipv6"

This is exactly the rsh command which is used by the ASpath-tree
scripts to collect the routing information available on the cisco
router.

Option 2: telnet collection
---------------------------
The router must be configured to accept telnet commands coming from the
remote workstation which is running the ASpath-tree scripts.

<router-username> is the name of the telnet user enabled to show the bgp
table on the cisco router.

<router-username-password> is the corresponding password of the telnet user
enabled to show the bgp table on the cisco router.

Consult the Cisco documentations, how to configure such a settings.

If you configure ROUTERUSERPWD then the telnet option automatically selected.


JUNIPER
-------

Option 1: rsh collection
------------------------

The juniper router must be configured to accept rsh commands from the
workstation which is running the ASpath-tree scripts. In the case of
juniper, you have first to enable the rsh service on the router, then
to set the permission to receive rsh commands from the ASpath-tree WS.
Let's assume you have configured a user on your juniper with enough
privileges (you can choose the "root" user, the commands suggested
will sligthly change); to enable the rsh service, use the following
commands:

user@juniper> configure
user@juniper# set system services rsh
user@juniper# commit

Then, enter the shell mode and add to the user .rhosts file
the IP address of the WS hosting ASpath-tree. Assuming that this
IP address is 194.100.100.100, you can type:

user@juniper> start shell
% cd ~user/
% echo 194.100.100.100 >./rhosts

The rsh command to be used on the workstation is:

rsh <router-address> -l <router-username> "show route terse table
inet6 protocol bgp"

where:
<router-username> is the username on the juniper router ("user" above)
<router_address>  is the IP address of the juniper router

This is exactly the rsh command used by the ASpath-tree scripts to
collect the routing information available on the juniper router.

Option 2: telnet collection
---------------------------

configure an user <router-username> with password <router-password on
the Juniper router with view permisssion. Consult your Juniper
documentation about that.

ZEBRA
-----
To use ASpath-tree with zebra routers, the "vtysh" CLI emulator must
be installed.
To do this, install the zebra software (http://www.zebra.org) with the
option to enable "vtysh"; in the first step of the zebra software
installation, from the zebra distribution home directory, execute

./configure --enable-vtysh

If ASpath-tree scripts run on a remote workstation, then configure the
daemon "rshd" on the zebra router in order to accept rsh commands
coming from ASpath-tree (how to do that is OS dependent, we do not
enter here into these details).
Otherwise, if the ASpath-tree scripts run on the zebra router itself,
there is no need of issuing rsh commands [ just set "LOCAL = 1" in the
ASpath-tree.config file, and the ASpath-tree scripts will know how to
behave ].

The command to be executed is then
- vtysh -e 'show ipv6 bgp' [same WS for zebra and ASpath-tree]
- rsh -l <router-username> <router_address> "vtysh -e 'show ipv6 bgp'"
                           [ASpath-tree on a remote WS]
  where:
  <router-username> is the username on the zebra router associated to
                    the user that is enabled to execute the "vtysh"
                    command
  <router_address>  is the IP address of the zebra router

These are exactly the commands used by the ASpath-tree scripts to
collect the routing information available on the zebra router.

Configuring ASpath-tree
-----------------------

To configure the ASpath-tree scripts

1) edit the first line of the script "update-rtree" and insert the
   correct path to the perl interpreter installed on your system
2) edit the configuration file HOMEDIR/etc/ASpath-tree.config.

In the configuration file the following variables need to be
customized:

HOMEDIR      is the full path to the directory where you have
             installed the ASpath-tree scripts. It is the directory
             where the "update-rtree" script is located.

ROUTER       is the type of router you are using. Allowed values are
             "CISCO", "JUNIPER", "ZEBRA" and "ZEBRA93" (for zebra
             versions
             093x or newer, where the format of the IPv6 BGP is
             changed).
             Default value is "CISCO".

LOCAL        is a flag to be set (e.g. = 1) if ASpath-tree runs
             locally on the router (possible with zebra routers). When
             LOCAL is set, setting RSHDIR, ROUTERADDR and ROUTERUSER
             become useless.

RSHDIR       is the full path to the directory where the rsh command
             is installed on the WS hosting ASpath-tree

ROUTERADDR   is the IP address of the cisco router from which the
             IPv6 BGP routing table has to be retrieved; it can be an
             IPv6 address if both the WS hosting ASpath-tree and the
             router have IPv6 capable rsh implementations.

ROUTERUSER   is the username on the router that you have to use to
             run remote rsh commands or telnet.

ROUTERUSERPASS
             is an optional parameter to use for telnet collection. If you
             configure this parameter telnet mode will be used automatically.
             DO NOT SPECIFY this parameter if you use RSH collection.

HTMLDIR      is the full path to the directory where the generated
             html files have to be placed. If you do not specify this
             option the html files are stored under the htdocs/
             directory which comes with the distribution.

CONTACTNAME  is the name of a contact person (or group) to be placed
             at the bottom of the html pages created by the
             ASpath-tree scripts

CONTACTMAIL  is the e-mail address of the contact person.
             It is placed at the bottom of the generated html pages
             as the link associated to the contactname.

SITENAME     is the name of your IPv6 site. It is used as the root of
             the BGP routing tree displayed by the html pages
             generated by the script.

SITEPICTURE  is the name of the image file (for instance a logo
             representing your IPv6 site) to be placed at the
             top-left corner of the generated html pages. The image
             file must be present in the icons/ subdirectory of the
             HTMLDIR. If you do not specify this option no image is
             displayed.

WHOISLINK    is the URL for the 6Bone whois service. The default value
             for this parameter is
             http://whois.6bone.net/cgi-bin/whois
             [it changed many times in the last few years, we think it
             is worth to have the flexibility to configure this here]

FILTEROUT    is a flag to control which routes are filtered out from
             the output of ASpath-tree. Deafult is none. Value 1
             excludes all suppressed routes, value 2 excludes only the
             suppressed routes learned through iBGP

CHANGESFLAG  is a flag that enables the display of tree changes pages
             (set to 1 allows the display)

MORETREES    is a flag that enables the display of 6bone backbone and
             "2001" tree pages (set to 1 allows the display)

RIPEWHOISCLIENT is the full path to the executable file of the RIPE
                whois client distribution installed on the WS hosting
                ASpath-tree. This parameter is needed only if you want
                to update via ASpath-tree the information available on
                whois DBs connected to the Internet.

The HTMLDIR parameter is useful to allow ASpath-tree to work without
changing the files accessible through the web until the script
termination. In fact, the last operation of ASpath-tree is a copy/move
of the produced output files to HTMLDIR. This minimizes the
possibility you could find broken links during ASpath-tree executions.
If you set this parameter, be sure that the target directory exists
and it is not a soft link to the htdocs directory within the ASpath-
tree HOMEDIR.

If you would like to run update-rtree without any command-line option,
copy or move your customized ASpath-tree.config file to /etc.

---------------
Expected inputs
---------------

In its default operation, ASpath-tree receives on input:
- the IPv6 BGP table coming from a router (a new snapshot at every
  execution);
- some information coming from public whois databases available on the
  Internet, to allow names to numbers associations .

To speed up ASpath-tree executions, the latter information is stored
into local files inside the HOMEDIR/data directory. These files,
expected as input to ASpath-tree, are:
- 6bone.db: this can be a full dump of the 6bone database, that can be
  downloaded from
                 ftp://whois.6bone.net/6bone/6bone.db.gz
  Just unzip this file and it is ready.
  Alternatively it can be a dump of the result to a query like
    whois3 -h whois.6bone.net -r -T inet6num,ipv6-site -M 3ffe::/16
  [where a whois client with RIPE extensions is used]

- rirs.db: this can a merged dump of the results to many queries
  issued to the whois dbs made available by the RIRs. For example:
    whois3 -h whois.ripe.net -s ARIN,RIPE,APNIC -r -T inet6num -M
           2001::/16
  to get all the assignements of official IPv6 addresses
  and
    whois3 -h whois.ripe.net -s ARIN,RIPE,APNIC -r -T aut-num ASxxxxx
  to get the information about the assignement of AS number ASxxxxx
  [RIPE extensions to whois client required to perform these commands]

The files described above are provided within the ASpath-tree
distribution, but they are updated on the date the distribution
file has been created. They have to be periodically updated if you
want the ASpath-tree scripts to provide reliable and useful
information.

6bone.db and rirs.db are text files that can be produced in many ways.
Since version 4.0, ASpath-tree offers the possibility to generate
updated versions of these files by querying the 6bone and RIPE whois
dbs. To do that, you must have:
- a whois client with RIPE extensions installed on the WS hosting
  ASpath-tree (downolad latest version from
                    ftp://ftp.ripe.net/ripe/tools);
- set the RIPEWHOISCLIENT ASpath-tree variable with the full path to
  your whois client executable file;
- the possibility to perform direct whois queries on the Internet.

To update automatically the files 6bone.db and rirs.db, simply run
   ./update-rtree -u
from the home directory of the ASpath-tree distribution.

WARNING: we advise you not to cron this command. A failure in the
query (the connection to the Internet not working properly, whois
servers out of order, etc) leads to the loss of any information you
previously used. So, it is better to execute under human control this
command, and to check the content of the 6bone.db and rirs.db files
that are produced.

If you think the update was not succesful, you have a chance to
recover the files you used before the attempted update by simply
executing the command
   ./update-rtree -r

At the next regular ASpath-tree execution (i.e. without input
parameters) the information in use will not be lost.

------------------
Running the script
------------------
The script to be executed is update-rtree, that is located in the
HOMEDIR.

Usage:
update-rtree [-u|r] [-d] [-h] [-f <filename>]

      no input parameters: normal ASpath-tree behaviour
   -u update local information bases with whois queries over the
      Internet
   -r recover previously used local information bases
   -d enable printing and logging for debugging
   -f <filename> Configuration file (default is
      /etc/ASpath-tree.config)
   -h help in line

Running update-rtree without any command-line option implies that:
- a configuration file named ASpath-tree.config is expected to be
  found in the /etc directory.
- ASpath-tree reads an IPv6 BGP table snapshot from router and
  elaborates on this snapshot
that is the default ASpath-tree operation.
After the script execution is terminated, you can see the results
using a web browser and opening page "bgp.html" in the HTMLDIR (or
HOMEDIR/htdocs, if HTMLDIR is not set) directory.

With the "-f" option you can specify an alternate location/name for
the configuration file.
The option "-d" can be used for debugging; it produces various log
files in the HOMEDIR/log directory and enables printing on the
standard output.
Options "-u" and "-r" change ASpath-tree default operation and are
described in detail in section Expected input.

Run the script "update-rtree" but do not forget that ASpath-tree was
designed to provide information concerning IPv6 BGP routing stability
during the last 24 hours. In order to obtain reliable results the main
script "update-rtree" should be executed on a regular basis.
For this reason we suggest to place a call to "update-rtree" in the
crontab of the machine where ASpath-tree is installed. We suggest
to configure everything in order for the script to be automatically
executed every 5 min. In order to do that you can add to your crontab
file (which can be edited with the "crontab -e" command) a line like:

.........
0,5,10,15,20,25,30,35,40,45,50,55 0-23 * * * HOMEDIR/update-rtree >
/dev/null 2>&1
.........

If you prefer the script can also be executed less frequently (e.g.
every 10 or 15 min.) but obviously the fewer samples you take every
hour the less reliable is the routing stability information provided
by the script.

------------
How it works
------------

This section provides some information about the following ASpath-tree
operations:

- build numbers to names associations and xTLA tables
- take a snapshot and parse the IPv6 BGP table
- classify IPv6 prefixes and AS numbers
- update 24 hour history
- create HTML pages

Building numbers to names associations and xTLA tables
------------------------------------------------------

Every time the files 6bone.db and/or rirs.db described in section
Expected inputs are updated, ASpath-tree produces four simpler files
to be directly used at any next execution. These simpler files, stored
under HOMEDIR/data, are:

- ipv6_prefix.table: text file containing a two columns table; the
  first column lists "sitenames", that are the names of organizations
  extracted from *.db files; the second column lists the prefixes (if
  more than one for each sitename, they are separated by blanks)
  associated to sitenames.
  This file is built elaborating both 6bone.db and rirs.db.
  For example:

  Sitename                 Prefixes
  ----------------------  --------------------------------------------
  .........
  APAN-KR                 3FFE:8040::/28
  APC-DSLF                2001:0240:0035::/48
  APHIX                   3FFE:2F00:0060::/48 3FFE:2F00:0060:FFF0::/64
  APII                    3FFE:0501:1844::/48 2001:0200:012D::/48
  APNIC                   3FFE:0C00:800F::/48 3FFE:0C00:F008::/48
  .........

- ptla_prefix.table: text file containing a two columns table; the
  first column lists "pTLA owners", while the second column lists the
  prefixes associated to pTLA owners.
  This file is built elaborating 6bone.db.
  For example:
  pTLA owner              Prefixes
  ----------------------  --------------------------------------------
  .........
  IFB                     3FFE:0E00::/24
  DISN-LES-6BONE          3FFE:0F00::/24
  TILAB                   3FFE:1000::/24
  UUNET-UK                3FFE:1100::/24
  DIGITAL-CA              3FFE:1200::/24
  .........

- stla_prefix.table: text file containing a two columns table; the
  first column lists "sTLA owners", while the second column lists the
  prefixes associated to sTLA owners. This file is built elaborating
  rirs.db.
  For example:
  sTLA owner              Prefixes
  ----------------------  --------------------------------------------
  .........
  BE-BELNET-20001101      2001:06A8::/35
  SE-SUNET-20001218       2001:06B0::/32
  IT-CSELT-20001221       2001:06B8::/32
  SE-TELIANET-20010102    2001:06C0::/35
  DK-TELEDANMARK-20010131 2001:06C8::/35
  .........

- as.table: text file containing a simple two columns table; the first
  column lists AS numbers while the second column lists the associated
  names of organizations extracted from *.db files. This file is built
  elaborating both 6bone.db and rirs.db.
  For example:
  AS number  Associated Names
  ---------  -------------------------------------------------------
  .........
  AS18       UTEXAS
  AS22       DISN-LES-6BONE
  AS33       SNEW-CA GRAVATT-CA NELGIN-NU ICOMM CONFUSION DIGITAL-CA
  AS48       NRL
  AS49       NIST
  .........

  To build this file, ASpath-tree applies the following rules:
  [for each AS number]
  - if AS number is found in file force.as.name, use "Associated name"
    in this file (eventually overwriting any other association)
  - else if the AS number is found in 6bone.db, use 6Bone "sitename"
    (multiple sitenames are all listed)
  - else if the AS number is found in rirs.db, use "as-name"
    registered by RIRs
  - else skip AS number
  In fact, the ASpath-tree user is given the possibility to force AS
  number to custom name associations, by manually editing the file
  force.as.name (same format and location as as.table). A change in
  the force.as.name file will cause the next execution of ASpath-tree
  to produce a new as.table file.

ipv6-prefix.table, ptla-prefix.table, stla-prefix.table and as.table
files can be also edited and filled manually (it is easy to do it).
But, be carefull, if you change any of 6bone.db, rirs.db and
force.as.name files, at the next ASpath-tree execution, you loose all
the information you have manually edited on the above files.

Parsing the IPv6 BGP table
--------------------------

ASpath-tree elaborates on the IPv6 BGP table got from IPv6 routers
running BGP. The input IPv6 BGP table format is the same of the
display on the console screen when issuing the proper command on the
command line.
An ad hoc parser is available for each of the supported router
platforms.

Parsing a snapshot of the IPv6 BGP table, ASpath-tree looks for the
following information:
[for each destination prefix entry]
- all known paths (next hops and eventually AS paths)
- flags indicating each path status
- if the prefix is a local prefix learned from a configured local
  interface of the router
By performing this parsing function, ASpath-tree counts:
- the total paths
- the paths with the same status flag
- AS numbers not seen before
and it determines the "best" path, i.e. the path that is selected to
install a routing entry into the router's routing table.
Within each best path, ASpath-tree looks for the following
information:
- the AS path
- the origin code
- AS numbers not seen before within "best" paths
As a result, a set of counters and a table listing all the "best"
paths, including the prefix, the AS path and the flags are extracted.
Basically, sorting this last table by AS path and grouping the
prefixes that share the same AS path, you get a structure that allows
the tree representation provided by ASpath-tree.

The BGP table provides several information, but not all you can expect
to know about BGP routing. For instance, just looking at the BGP table
you cannot determine which prefixes you are announcing to which
neighbour, if you are performing routing aggregation and so on. These
are dependent on your policies and the information about your policies
is not present within the BGP table.
For this reason, ASpath-tree can be useful to show the routing
information that you receive from external networks, but not the
routing information you advertise.

Having this point in mind, ASpath-tree filters out from its output
pages all the local prefixes, i.e. those prefixes learned from a
configured local interface of the router. Additionally ASpath-tree
hides all the information related to your own network configuration:
it does not display next hop information and, in case you are using
an AS set configuration, it hides AS numbers of the configured AS set.

Another tricky point is related to the possible usage of BGP for
peering with both "peer" or upstream ISPs and "customers" or leaf
networks, that are numbered with addresses belonging to the address
space assigned to your organization. Best practice here suggests to
announce the reachability of your customer networks towards "peers",
using a single aggregated address prefix.
In this case, you may not want to show on the ASpath-tree output pages
the routing information related to your "customers" that are not
redistributed towards your "peers".
To fix this, ASpath-tree can offer the option to filter out all
the suppressed routes (meaning the routes that are received but not
advertised because aggregated in a less specific route) from its
output pages. You can do this by setting "FILTEROUT = 1" in the
ASpath-tree configuration file.

This filtering option has the inconvenience that a route to a prefix
belonging to your assigned address space and advertised for any reason
by an external network is not detected by ASpath-tree, and you loose
the possibility to discover some routing misconfiguration linked to
your address space. To fix this, there is a chance in the case that
your routing architecture is as following

              (A)            (B)
            \+---+  iBGP    +---+/
    eBGP    -| R |----------| R |- eBGP
   "Peers"  /+---+          +---+\ "customers"

(i.e. you use different routers for peering with "peers" and
"customers")

and the target router for ASpath-tree is router (A). In this case,
you can filter out all suppressed routes learned through iBGP, still
allowing the display of routing anomalies related to your assigned
prefix coming from "peers". You can do this by setting
"FILTEROUT = 2" in the ASpath-tree configuration file.

NOTE that the above FILTEROUT settings can work only if the router
platform you are using provides a flag to mark "suppressed" or
"aggregated" routes within the IPv6 BGP table. If this is not case,
the FILTEROUT settings become useless.

Classifying IPv6 prefixes and AS numbers
----------------------------------------

IPv6 prefixes are classified as following:

- 6bone pTLA prefixes (acording to 6Bone pTLA's assignement rules)
- prefixes assigned by RIRs (prefixes included in 2001::/16 with
  prefix lenght in range [29,35])
- unaggregated prefixes (6bone prefixes longer than pTLA prefixes,
  official addresses longer than /35)
- 6to4 prefix
- 6to4 prefixes longer than /16
- invalid prefixes (prefixes not matching any of the above)

This classification is used to count prefixes and to highlight odd
routes in the IPv6 BGP table.
AS numbers are classified accordingly to RFC1930 in order to count and
highlight "reserved/private" AS numbers in use.

Updating history
----------------

At each run of ASpath-tree, some status or historical information are
stored on text files, such as:
- the last run time
- the list of peer ASs with the time stamp they were found on the BGP
  table for the last time
- the list of prefixes/AS paths with the delta time since they were
  found on the BGP table for the first time and number of ASpath-tree
  executions since there
This information is used to highlight changes in the routing table and
to provide details on each routing entry.

If the CHANGESFLAG parameter is set, the following additional
information is stored:
- the time of the last change detected on the BGP table
- the AS paths list found when a change is detected on the BGP table
in order to produce a "last changes" tree highlighting lost&new
branches.

For pTLAs listed in ptla-prefix.table and sTLAs listed in stla-
prefix.table, ASpath-tree keeps detailed information about their
reachability during the last 24 hours. This information is stored in
text files, one for each prefix, that contain lists of "runtime/AS
path", and is used to provide a routing stability analysis for the
assigned top level aggregators.

Creating HTML pages
-------------------

ASpath-tree produces the following main HTML pages:

   bgp.html:         home page, that is a summary page from which all
                     the other html pages generated by ASpath-tree can
                     be accessed.

   bgp-page-backbone.html:  displays the BGP routing tree towards
                            the 6Bone backbone (only the AS paths to
                            pTLA prefixes are displayed). In addition
                            every pTLAs whose prefix is not present in
                            the BGP table is listed at the bottom of
                            the page.

   odd-routes.html:  displays all the invalid prefixes advertised
                     inside the IPv6 BGP cloud.
                     Invalid prefixes are prefixes outside of the
                     6Bone range, the sTLA range and the 6to4 range.

   odd-routes1.html: displays all the unaggregated prefixes currently
                     advertised inside the IPv6 BGP cloud.
                     Unaggregated prefixes are valid prefixes longer
                     that pTLA or sTLA prefixes.
                     In this page, anomalous prefixes are sorted by
                     origin AS.

   odd-routes2.html: displays all the unaggregated prefixes currently
                     advertised inside the IPv6 BGP cloud.
                     Unaggregated prefixes are valid prefixes longer
                     that pTLA or sTLA prefixes.
                     In this page, anomalous prefixes are sorted by
                     owner pTLA/sTLA.

   odd-as.html:      displays the AS paths where private or reserved
                     AS numbers occur.

   ptla-stability.html: displays a summary of the BGP routing
                        stability in the 6bone backbone during the
                        last 24 hours. For each assigned pTLA, figures
                        representing instability and unavailability of
                        the correspondent route entry in the BGP
                        routing table are provided.
                        Instability is calculated as the ratio between
                        the number of times there was a detection of
                        AS Path change for the specific route and the
                        number of look-ups in the 24 hours.
                        Unavailability is calculated as the ratio
                        between the number of times the route was not
                        present and the number of look-ups in the 24
                        hours.

  200x-stability.html:  the same as ptla-stability, but for sTLAs.

All the above html files are saved in the directory HOMEDIR/htdocs/

ASpath-tree also produces a number of small html pages, namely:
- "detail" pages (which can be accessed selecting the links placed at
  the end of every branch of the displayed BGP trees) with a detailed
  view of the prefixes announced through the specific AS path.
  These html pages are saved in the directory HOMEDIR/htdocs/details/
- "24 hours stability" pages (which can be accessed selecting the
  links placed within details pages, 200x-stability.html and
  ptla-stability.html) with detailed stability information for each
  pTLA and sTLA.
  These html pages are saved in the directory
  HOMEDIR/htdocs/24h_history/

If the MORETREES parameter is set, two additional pages are produced:
  bgp-page-backbone.html  displays the BGP4+ routing tree towards the
                          6Bone backbone (only the AS paths to pTLA
                          prefixes are displayed). In addition every
                          pTLAs whose prefix is not present in the
                          BGP4+ table is listed at the bottom of the
                          page.
  bgp-page-otherIANA.html shows the BGP4+ routing tree for the other
                          IANA assigned prefixes collected from the
                          BGP4+ routing table.

Finally, ASpath-tree produces (if the parameter CHANGESFLAG is set) a
graphical view of the last changes occurred with respect to current
bgp-page-complete.html report. New branches (highlighted in green
boxes) and lost branches (highlighted in grey boxes) are displayed in
page bgp-page-complete-changes.html, that is stored in the
HOMEDIR/htdocs/changes/ directory and it is accessible through a link
on the bottom of the bgp-page-complete.html page.

If the MORETREES parameter is simultaneously set, the analogous pages
bgp-page-backbone-changes.html and bgp-page-otherIANA-changes.html are
also produced.

If the HTMLDIR parameter is set, all files and folders saved in
HOMEDIR/htdocs/ are then copied or moved to HTMLDIR.

        ----------------------------------------------------
        Raffaele D'Albenzio, Ivano Guardini and Paolo Fasano
        <ipv6@tilab.com>
        ----------------------------------------------------
	Telnet modul addition
        Janos Mohacsi <mohacsi@niif.hu> - 6NET project
	----------------------------------------------------

#### ASpath-tree v.4.2 - Released on Thu APR 17 2003, h.16:58:12
#### File: readme.txt Last modified on Thu APR 17 2003, h.16:45:39
