INTERNET DRAFT                                         Wolfgang Fritsche
Expires May 1998                                                    IABG
                                                         Hartmut Seifert
                                                                    IABG
                                                         3 November 1997


     Dynamical routing (unicast and multicast)for the IPv6 protocol

                 <draft-fritsche-ipv6-multicast-02.txt>


Status of this Memo

   This document is an Internet-Draft.  Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its
   areas, and its working groups.  Note that other groups may also
   distribute working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsoleted by other
   documents at any time.  It is inappropriate to use Internet-
   Drafts as reference material or to cite them other than as
   "work in progress."

   To view the entire list of current Internet-Drafts, please check
   the "1id-abstracts.txt" listing contained in the Internet-Drafts
   Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
   (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East
   Coast), or ftp.isi.edu (US West Coast).


Abstract

   Future communication networks will be based more and more on a
   dynamically changing network topology.  Therefore it is advantageous,
   to have routing mechanisms, which will dynamically adapt their
   routing decisions to these topology changes.  This document describes
   a set of network protocols, which realize such a dynamical routing of
   unicast and multicast packets within communication networks based on
   IPv6.  All used routing algorithms will be immediately executed at
   the occurrence of any topology changes and will therefore have
   already complete routing information at the receipt of data packets.

   For the unicasting the Shortest Path First (SPF) routing algorithm
   has be chosen.  This algorithm calculates the shortest, and therefore
   the optimal routing paths within the routing area, by which it is
   sufficient for a router, to compute a single routing tree for the
   whole area.

   For the multicasting the Minimum Spanning Tree (MST) routing
   algorithm has been chosen.  This distributed algorithm prevents the
   occurrence of endless routing loops, offers for distributed Address
   Groups nearly optimal results in saving network bandwidth, and needs
   also only a single routing tree for the whole area. This version 02
   of the draft mainly corrects some minor errors of version 01.

Fritsche, Seifert       Expires May 1998                        [Page 1]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


Table of Contents

1        Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2        Terminology  . . . . . . . . . . . . . . . . . . . . . . . . 8
3        Neighbour Discovery for IPv6 . . . . . . . . . . . . . . . . 9
3.1      Introduction . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2      ICMPv6 Neighbour Discovery message formats . . . . . . . .  10
3.2.1    Router Solicitation Message Format . . . . . . . . . . . .  10
3.2.2    Router Advertisement Message Format  . . . . . . . . . . .  11
3.2.3    Neighbour Solicitation Message Format  . . . . . . . . . .  14
3.2.4    Host Advertisement Message Format  . . . . . . . . . . . .  15
3.2.5    Redirect Message Format  . . . . . . . . . . . . . . . . .  17
3.2.6    Options Formats  . . . . . . . . . . . . . . . . . . . . .  18
3.2.6.1  Source / Target Link-Layer Address . . . . . . . . . . . .  19
3.2.6.2  Prefix Information . . . . . . . . . . . . . . . . . . . .  20
3.2.6.3  Redirected Header  . . . . . . . . . . . . . . . . . . . .  21
3.2.6.4  MTU  . . . . . . . . . . . . . . . . . . . . . . . . . . .  22
3.2.6.5  LSA information  . . . . . . . . . . . . . . . . . . . . .  23
3.3      Validation of the used ICMPv6 messages . . . . . . . . . .  23
3.3.1    Validation of Router Solicitations . . . . . . . . . . . .  24
3.3.2    Validation of Router Advertisements  . . . . . . . . . . .  24
3.3.3    Validation of Neighbour Solicitations  . . . . . . . . . .  25
3.3.4    Validation of Host Advertisements  . . . . . . . . . . . .  25
3.3.5    Validation of Redirect Messages  . . . . . . . . . . . . .  26
3.4      Functions of the Neighbour Discovery . . . . . . . . . . .  27
3.4.1    Router Discovery . . . . . . . . . . . . . . . . . . . . .  27
3.4.2    Stateless Address Autoconfiguration  . . . . . . . . . . .  27
3.4.3    Neighbour Detection  . . . . . . . . . . . . . . . . . . .  29
3.4.4    Neighbour Unreachability Detection . . . . . . . . . . . .  30
3.4.5    Redirect . . . . . . . . . . . . . . . . . . . . . . . . .  31
3.5      Neighbour Discovery on non-multicast-capable links . . . .  31
4        Dynamical routing of unicast packets in IPv6 . . . . . . .  33
4.1      Introduction . . . . . . . . . . . . . . . . . . . . . . .  33
4.2      ICMPv6 Routing Information message formats . . . . . . . .  35
4.2.1    Link State Advertisement Message Format  . . . . . . . . .  35
4.2.2    Options Formats  . . . . . . . . . . . . . . . . . . . . .  37
4.2.2.1  Router Neighbours  . . . . . . . . . . . . . . . . . . . .  38
4.2.2.2  Host Neighbours  . . . . . . . . . . . . . . . . . . . . .  39
4.3      Validation of the used ICMPv6 messages . . . . . . . . . .  40
4.3.1    Validation of Link State Advertisements  . . . . . . . . .  40
4.4      Functions for the Routing Information distribution . . . .  41
4.4.1    Sending Link State Advertisements  . . . . . . . . . . . .  41
4.4.2    Receiving Link State Advertisements  . . . . . . . . . . .  43
4.4.3    Ageing of Routing Information . . . . . . . . . . . . . . . 45
4.5      Routing Information on non-multicast-capable links . . . .  45
4.6      Unicast Routing Algorithm  . . . . . . . . . . . . . . . .  47
4.6.1    Introduction . . . . . . . . . . . . . . . . . . . . . . .  47
4.6.2    Overview of the algorithm  . . . . . . . . . . . . . . . .  48
4.6.3    Steps of the algorithm . . . . . . . . . . . . . . . . . .  49
5        Dynamical routing of multicast packets in IPv6 . . . . . .  51
5.1      Introduction . . . . . . . . . . . . . . . . . . . . . . .  51
5.2      Functions needed for multicasting in IPv6  . . . . . . . .  53


Fritsche, Seifert       Expires May 1998                        [Page 2]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


5.2.1    Overview . . . . . . . . . . . . . . . . . . . . . . . . .  53
5.2.2    Create Address Group Function  . . . . . . . . . . . . . .  53
5.2.2.1  Create Address Group Function for hosts  . . . . . . . . .  53
5.2.2.2  Create Address Group Function for routers  . . . . . . . .  54
5.2.3    Modify Address Group Function  . . . . . . . . . . . . . .  54
5.2.3.1  Modify Address Group Function for hosts  . . . . . . . . .  55
5.2.3.2  Modify Address Group Function for routers  . . . . . . . .  55
5.2.4    Delete Address Group Function  . . . . . . . . . . . . . .  55
5.2.4.1  Delete Address Group Function for hosts  . . . . . . . . .  56
5.2.4.2  Delete Address Group Function for routers  . . . . . . . .  56
5.2.5    Join Address Group Function  . . . . . . . . . . . . . . .  57
5.2.5.1  Join Address Group Function for hosts  . . . . . . . . . .  57
5.2.5.2  Join Address Group Function for routers  . . . . . . . . .  57
5.2.6    Leave Address Group Function . . . . . . . . . . . . . . .  58
5.2.6.1  Leave Address Group Function for hosts . . . . . . . . . .  58
5.2.6.2  Leave Address Group Function for routers . . . . . . . . .  59
5.2.7    Record Host Group Membership Query Function  . . . . . . .  59
5.2.8    Record Router Group Membership Report Function . . . . . .  60
5.2.9    Record Router Group Distribution Message Function  . . . .  61
5.2.10   Summary  . . . . . . . . . . . . . . . . . . . . . . . . .  62
5.3      ICMPv6 Informational Group Messages  . . . . . . . . . . .  64
5.3.1    Host Group Membership Query  . . . . . . . . . . . . . . .  64
5.3.2    Router Group Membership Report . . . . . . . . . . . . . .  66
5.3.3    Router Group Distribution Message  . . . . . . . . . . . .  68
5.4      Multicast Routing Algorithm  . . . . . . . . . . . . . . .  70
5.4.1    Introduction . . . . . . . . . . . . . . . . . . . . . . .  70
5.4.2    Description of the algorithm . . . . . . . . . . . . . . .  71
5.4.2.1  Tiebreaker for unequivocal link metrics  . . . . . . . . .  71
5.4.2.2  Overview . . . . . . . . . . . . . . . . . . . . . . . . .  72
5.4.2.3  Steps of the algorithm . . . . . . . . . . . . . . . . . .  73
5.4.3    Time of the algorithm execution  . . . . . . . . . . . . .  74
5.4.4    Complexity of the algorithm  . . . . . . . . . . . . . . .  74
5.4.5    Resume . . . . . . . . . . . . . . . . . . . . . . . . . .  75
5.4.6    Example  . . . . . . . . . . . . . . . . . . . . . . . . .  75
5.5      Routing of packets addressed to a group  . . . . . . . . .  78
5.5.1    Acceptance of multicast packets  . . . . . . . . . . . . .  79
5.5.2    Determination of the forwarding adjacencies  . . . . . . .  79
5.5.3    Forwarding of multicast packets  . . . . . . . . . . . . .  81
6        Routing beyond the routing area  . . . . . . . . . . . . .  82
6.1      Unicast routing beyond the routing area  . . . . . . . . .  82
6.2      Multicast routing beyond the multicast routing area  . . .  84
7        Quality of service aspects in dynamical routing  . . . . .  86
8        Security Considerations  . . . . . . . . . . . . . . . . .  87
9        References . . . . . . . . . . . . . . . . . . . . . . . .  87
10       Author's Addresses . . . . . . . . . . . . . . . . . . . .  88









Fritsche, Seifert       Expires May 1998                        [Page 3]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


1 Introduction

   Future communication networks will change more and more from a static
   topology to a dynamically changing topology.  This effect becomes
   obviously by considering the following examples:
   - In the last time the interconnection of different network
     architectures has a high significance in the modern world of
     communication.  To these architectures also belong radio networks,
     which enable the communication with mobile users and routers.
     Since these users and routers will permanently change their
     geographical location, the network topology will also change.
   - Even on non-radio networks there is often the demand to disconnect
     from the communication network and to access it again at a
     different location.
   - Since the number of communication network users is rapidly
     increasing, it is necessary to permanently adapt the network
     architecture to the newly arising demands.  Examples would be the
     adding of network servers and more efficiently routers, the
     connection of new network parts and also the connection of new
     network users itself.
   - It is obviously, that not all parts of a communication network, for
     example routers and especially hosts, are available the whole time.

   The increase of networks with changing topologies causes a more
   difficult administration of these networks.  It is necessary, to be
   always informed, which resources and users are available at a certain
   point of time, and at which access point of the network they can be
   reached.  To deal with these high demands of a dynamically changing
   network topology requires a dynamical mechanism of detecting any
   changes within the network, and also dynamical routing algorithms,
   which make use of the collected topology information.

   The intention of this document is to specify a complete set of
   network protocols, which execute the dynamical routing administration
   of communication networks running IPv6.  In more detail it describes
   mechanisms how to collect and dynamically update information about
   the own environment within the network, how to distribute this
   information within the routing area and how to use it for dynamical
   routing algorithms, which can be applied especially for the intra-
   domain-routing of IPv6 data packets destined to an unicast or
   multicast IPv6 network address residing within the routing area.

   Since routing algorithms always need certain information about the
   network topology for the calculation of their routes, the problem of
   the dynamical collection of this information has to be solved first.
   For this purpose this document basically uses the functionality
   defined RFC 1970 'Neighbor Discovery for IP Version 6 (IPv6)' [3] and
   performs modifications where necessary.  In more detail between
   neighbouring routers and hosts a kind of life messages has to be
   exchanged periodically.  By receiving these life messages each node
   is informed about all its reachable neighbours.  Missing life
   messages of certain neighbours enables a node to dynamically


Fritsche, Seifert       Expires May 1998                        [Page 4]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   recognize the unreachability of these neighbours.  The time interval
   for the periodical retransmission of the life messages has to be
   chosen very carefully.  A too short interval produces a lot of
   control information on the network, a too long interval decreases the
   dynamic of the detection of any changes.  The Neighbour Discovery
   mechanism is specified in chapter 3 of this document.

   The life messages mentioned above are only exchanged between
   neighbouring nodes, that is using this mechanism enables each node to
   collect information about all its reachable neighbouring nodes on all
   its connected network links.  Since for the execution of routing
   algorithms routers have to be informed about the topology of the
   whole routing area, and not only about the topology in their own
   environment, it is necessary, to distribute the local information
   collected in the Neighbour Discovery mechanism among all routers
   within the routing area.  For this purpose all routers in one area
   periodically exchange their local information using so called Link
   State Advertisements.  For choosing the time interval for the
   periodical retransmission of these advertisements also a compromise
   between dynamic and costs has to be found.  The distribution of the
   locally collected routing information is closer described in chapter
   4.

   Using the Neighbour Discovery mechanism and the distribution of the
   collected information within the routing area enables now each router
   to build up a detailed picture of the network topology within the own
   routing area.  Based on this information the routers can execute
   suitable routing algorithms.  The hosts have only the detailed
   information about their own local environment, that is about all
   reachable neighbouring nodes, but this information is sufficient for
   hosts to locate a neighbouring router, which will route their data
   packets.  Because of the periodical exchanged routing information the
   dynamical routing mechanism specified in this document is especially
   suitable for intra-domain-routing within domains, which show the
   characteristics of a dynamical changing network topology.  With some
   minor modifications the mechanisms specified herein can also be used
   for inter-domain-routing.  Chapter 6 shortly discusses these aspects.

   Having solved the problem of the collection and distribution of the
   information about the local environment this document specifies the
   use of it within dynamical routing algorithms.  Since the routing of
   data packets destined for unicast and multicast addresses have
   different demands to the routing algorithm, each router has to run an
   own algorithm for unicasting and multicasting.  The results of these
   both algorithms are stored in the routers unicast and multicast
   forwarding database.  If a router receives an IPv6 data packet, it
   first checks by examining the destination address, if the destination
   is an unicast or a multicast address.  After this check it looks up
   the next hop for the packet in the respective forwarding database and
   forwards the packet.




Fritsche, Seifert       Expires May 1998                        [Page 5]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   For the unicast routing algorithm this document specifies an
   implementation of Dijkstra's Shortest Path First (SPF) algorithm.
   Executing this algorithm each router constructs a routing tree with
   itself as root and all reachable nodes within the routing area as
   leaves.  This algorithm has be chosen, since
   - routing along the SPF routing tree guarantees, that each node
     within the routing area will be reached on the shortest possible
     way, that is an optimal routing is performed,
   - routing along the SPF routing tree guarantees, that no endless
     routing loops will occur,
   - it is sufficient for routers to construct a single routing tree for
     the whole routing area, what means less time has to be spent for
     the calculation, and
   - it can be run immediately at the occurrence of new information
     about the network topology, that is at the receipt of data packets
     the algorithm is already finished and its results can be used for
     routing the packets without any delay.
   A closer specification of the unicast routing algorithm is contained
   in chapter 4.

   Before having a more detailed look to a suitable routing algorithm
   for multicasting, the principle of Address Groups shall be shortly
   explained.  Within the routing area more nodes can be summarized
   within an Address Group.  Each of these Address Groups can be
   identified by a different multicast IPv6 address, that is data
   packets addressed to all members of such a group have to use the
   multicast address as destination address in the IPv6 header.  To
   execute a proper routing of multicast packets, the information about
   the composition of such Address Groups has to be distributed among
   all router within the routing area.  Since it is allowed for nodes to
   join or to leave Address Groups, also this Address Group modification
   information has to be dynamically distributed.  To save as much
   network bandwidth as possible, the information about Address Groups
   is distributed by event, and not periodically, that is there is only
   information distributed, if there was really a modification.  The
   dynamical generation, modification and deletion of such Address
   Groups is described in chapter 5 and makes some modifications to RFC
   1885 'Internet Control Message Protocol (ICMPv6) for the Internet
   Protocol Version 6 (IPv6)'.

   The main intention of multicasting in this paper is the saving of
   often limited and expensive network bandwidth.  The idea behind this
   is to send a data packet destined for a group of N receivers not N
   times as an unicast packet, but one time as a multicast packet.  Each
   router, which receives such a multicast packet, shall examine, if it
   is necessary for reaching all receivers to send a copy of the packet
   on more links.  On this way the packet is only transmitted on the
   network links from the source to all receivers and contrary to
   unicasting separately one packet to each receiver it is guaranteed,
   that on no link more than one copy of the packet is transmitted.




Fritsche, Seifert       Expires May 1998                        [Page 6]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   The selection of a suitable algorithm, which generates a routing tree
   for multicast packets, is much more difficult than for unicasting.
   Using for example the SPF algorithm also for multicasting would
   demonstrable result in the occurrence of endless routing loops.  It
   can be shown, that this loops will not occur, if each router in the
   routing area constructs an identical routing tree.  The algorithm
   chosen in this document is the Minimum Spanning Tree (MST) routing
   algorithm, which contains all reachable nodes of the routing area.
   For the following reasons this algorithm is quite suitable for
   multicasting on networks with dynamical topology changes:
   - The MST avoids the occurrence of endless loops during the routing
     of multicast packets.
   - The MST algorithm needs for its routing tree calculation only the
     information, which is also used by the SPF algorithm, that is there
     is no additional control information to be distributed over the
     network.
   - The MST algorithm can be run immediately at the occurrence of new
     information about the network topology, that is at the receipt of
     data packets the algorithm is already finished and its results can
     be used for routing the packet without any delay.  Other routing
     algorithms, like the Multicast Open Shortest Path First (MOSPF)
     algorithm start the tree calculation first at the occurrence of
     data packets.
   - The execution of the MST is distributed equally over the routing
     area, that is each router constructs independently the same MST.
     Therefore there are no routers with special functionality, like the
     group's core router in the Core Based Trees (CBT) multicasting or
     the rendezvous points in the Protocol Independent Multicasting
     (PIM).  The disadvantage of those special routers are the
     difficulties for the election of them, and the problems occurring
     if such a special router breaks down.
   - The MST algorithm is a shared based tree algorithm, which also has
     the advantage that each router only has to construct a single
     routing tree for the whole routing area.  This is much less
     expenditure as it is needed within source based tree algorithms,
     for example the MOSPF algorithm, where a separate routing tree is
     calculated for each (source ; Address Group) pair.
   - There are no periodical messages to be exchanged for keeping the
     forwarding information received from the calculation of the MST.
     For this purpose the CBT algorithm needs to exchange periodically
     the so called ECHO REQUEST messages, the Distance Vector Multicast
     Routing Protocol (DVMRP) algorithm has to send its periodical prune
     messages.
   - Multicast data packets are transmitted along the MST only on those
     links, which are absolutely necessary to reach all receivers.
     Within the (DVMRP) algorithm data packets to new multicast groups
     are flooded on all links until the occurrence of prune messages
     build up the multicast routing tree.






Fritsche, Seifert       Expires May 1998                        [Page 7]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


2 Terminology

   IPv6               Internet Protocol Version 6.  The detailed
                      description of this protocol is contained in [1].
   ICMPv6             Internet Message Control Protocol for the Internet
                      Protocol Version 6.  The detailed description of
                      this protocol is contained in [2].
   node               A device that implements IP.
   router             A node that forwards IP packets not explicitly
                      addressed to itself.
   host               Any node that is not a router.
   link               A communication facility or medium over which
                      nodes can communicate at the link layer, i.e.,
                      immediately below IP.  Examples are Ethernets
                      (simple or bridged), PPP links, Frame Relay, or
                      ATM networks as well as internet (or higher) layer
                      tunnels, such as tunnels over IPv4 or IPv6 itself.
   circuit            Used as a synonym for link.
   interface          A node's attachment to a link.
   neighbours         Nodes attached to the same link.
   adjacencies        Used as a synonym for neighbours.
   address            An IP-layer identifier for an interface or a set
                      of interfaces.  In the latter case an address can
                      be an IP-layer identifier for a single node.
   unicast address    An identifier for a single interface or node.  A
                      packet sent to a unicast address is delivered to
                      the interface or node identified by that address.
   multicast address  An IP-layer identifier for a set of interfaces
                      (typically belonging to different nodes) or nodes.
                      A packet sent to a multicast address is delivered
                      to all interfaces or nodes identified by that
                      address.
   Address Group      A set of interfaces or nodes belonging to a
                      particular multicast address.
   packet             An IP header plus payload.
   unicast packet     A packet, which destination address is a unicast
                      address.
   multicast packet   A packet, which destination address is a multicast
                      address.















Fritsche, Seifert       Expires May 1998                        [Page 8]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


3  Neighbour Discovery for IPv6


3.1  Introduction

   Before executing a routing algorithm, the necessary information for
   this algorithm has to be collected by the router.  This can be done
   in two main steps:

   - First each node has to use a mechanism to dynamically discover its
     own environment.  This step is closer described in the remaining
     part of this chapter.
   - Second each router has to distribute the collected knowledge about
     its own environment to the other routers of the routing area.  This
     enables each router to dynamically  generate a clear picture of the
     present network structure and to localise all nodes connected to
     this network. This distribution is described in the next chapter.

   In order to react on changes in the network topology or in a single
   node's state the information listed above has to be updated
   dynamically.

   [3] contains already a proposal, how the nodes could collect
   information about their environment.  This proposal would be
   sufficient for hosts, since the Router Advertisements specified in
   [3] are sent periodically to the multicast address of all nodes on a
   particular link.  Using this advertisements each node can exactly
   determine, which router would be available at a certain point of
   time.  Nevertheless a router could break down unforeseen without
   being able to inform the attached nodes about this event.  In this
   case all of its neighbours will notice this by stopping receiving the
   periodical advertisements of this router.

   Using the routing algorithm of this proposal a similar possibility
   would be also advantageous for routers, that is host should also
   distribute periodical messages.  For this purpose the Neighbour
   Advertisements in [3] are used as so called Host Advertisements,
   which are transmitted periodically to all nodes on a particular link.
   This enables routers to keep dynamically track of all neighbouring
   nodes, routers and hosts, connected to one of their attached links.

   This information about the local environment is then distributed by a
   router in so called Link State Advertisements (LSAs) to all other
   routers of the routing area.  These other routers have to be able to
   assign a received LSA unequivocally to a single router.  This can be
   done using the IPv6 address, on behalf of which the router has sent
   its LSAs.  Since a router could easily have more IPv6 addresses
   assigned, there must be a way for its neighbouring routers to detect,
   which of these addresses it will use for LSAs.  In the newly added
   option LSA information contained in Router Advertisements each router
   can inform its neighbours about the proper IPv6 address.



Fritsche, Seifert       Expires May 1998                        [Page 9]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   These are the main modifications concerning the routing algorithm,
   which have been done in the Neighbour Discovery mechanism of [3].
   The next section contains the detailed format of all used ICMPv6
   packets.  In 3.4 the modified Neighbour Discovering functions using
   these ICMPv6 packet are shortly summarized.  For the detailed
   description [3] and [4] can often be used as reference, if no
   modification affects the respective functionality.  The whole
   Neighbour Discovering mechanism is restricted to multicast-capable
   subnetworks, like IEEE 802 links.  Section 3.5 discusses the
   possibilities of using a restricted mechanism on non-multicast-
   capable links, for example certain WAN links, without adding new
   functionality or ICMPv6 packet formats.


3.2 ICMPv6 Neighbour Discovery message formats


3.2.1 Router Solicitation Message Format

   Hosts send out Router Solicitations in order to prompt routers to
   generate Router Advertisements quickly.

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |           Checksum            |
   +---------------+---------------+-------------------------------+
   |                           Reserved                            |
   +---------------------------------------------------------------+
   |                            Options                            |


   IPv6 Fields:

   Source Address:        An IPv6 address assigned to the sending
                          interface, or the unspecified address, if no
                          address is assigned to the sending interface.
   Destination Address:   Typically the all-routers multicast address.
   Hop Limit:             255
   Priority:              15
   Authentication Header: If a Security Association for the IP
                          Authentication Header exists between the
                          source and the destination address, then the
                          source shall include this header.

   ICMPv6 Fields:

   Type:                  133 - Router Solicitation Message
   Code:                  0
   Checksum:              The ICMPv6 checksum. See [2].
   Reserved:              This field is unused.  It must be initialised
                          to zero by the sender and must be ignored by


Fritsche, Seifert       Expires May 1998                       [Page 10]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          the receiver.

   Valid Options:

   Source link-layer address:
                          The link-layer address of the sender, if
                          known.

   Future versions of this protocol may define new option types.
   Receivers must silently ignore any options they do not recognize and
   continue processing the message.


3.2.2 Router Advertisement Message Format

   Routers send out Router Advertisement messages periodically, in
   response to an other Router or Host Advertisement message generated
   by a newly detected node, or in the case, that a router expects some
   of its interface addresses becoming unreachable.  Finally a Router
   Advertisement is sent in response to a Router or Neighbour
   Solicitation message.

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |           Checksum            |  +---------------+-+-+-+---------+-------------------------------+
   | Cur Hop Limit |M|O|S|Reserved |        Router Lifetime        |
   +---------------+-+-+-+---------+-------------------------------+
   |                         Retrans Timer                         |
   +---------------------------------------------------------------+
   |                         Holding Time                          |
   +---------------------------------------------------------------+
   |                            Options                            |


   IPv6 Fields:

   Source Address:        128-bit IPv6 address of the originator of the
                          packet.  If all interfaces of the router have
                          assigned one single IPv6 address, that is an
                          address is not assigned to each interface, but
                          to the router as whole, this address shall be
                          used.
   Destination Address:   If this message is sent periodically due to
                          expiration of the local Router Advertisement
                          transmission timer or in response to a Router
                          or Neighbour Solicitation message containing
                          the unspecified address as Source Address,
                          this field contains the all-nodes multicast
                          address. If it is sent in response to a
                          previously received Router or Host


Fritsche, Seifert       Expires May 1998                       [Page 11]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          Advertisement message or to a Router or
                          Neighbour Solicitation message containing a
                          unicast Source Address different from the
                          unspecified address, this field contains the
                          IPv6 address specified as Source Address in
                          the respective message.
   Hop Limit:             255
   Priority:              15
   Authentication Header: If a Security Association for the IP
                          Authentication Header exists between the
                          source and the destination address, then the
                          source shall include this header.

   ICMPv6 Fields:

   Type:                  134 - Router Advertisement Message
   Code:                  0
   Checksum:              The ICMPv6 checksum. See [2].
   Cur Hop Limit:         8-bit unsigned integer.  This field is
                          examined only by hosts receiving this message.
                          It specifies the default value that should be
                          placed in the Hop Count field of the IPv6
                          header for outgoing IP packets.  A value of
                          zero means unspecified (by this router).
   M:                     1-bit Managed address configuration flag.
                          This bit is examined only by hosts receiving
                          this message.  When set, hosts use the
                          administered (stateful) protocol for address
                          autoconfiguration in addition to any addresses
                          autoconfigured using stateless address
                          autoconfiguration.  The use of this flag is
                          described in [4].
   O:                     1-bit Other stateful configuration flag.  This
                          bit is examined only by hosts receiving this
                          message.  When set, hosts use the administered
                          (stateful) protocol for autoconfiguration of
                          other (non-address) information.  The use of
                          this flag is described in [4].
   S:                     Solicited Flag.  When set, the S-bit indicates
                          that the advertisement was sent in response to
                          a Neighbour Solicitation.
   Reserved:              A 6-bit unused field.  It must be initialised
                          to zero by the sender and must be ignored by
                          the receiver.
   Router Lifetime:       16-bit unsigned integer.  This field is
                          examined only by hosts receiving this message
                          and shall be interpreted as the lifetime
                          associated with the default router in units of
                          seconds.  The maximum value corresponds to
                          18.2 hours.  A lifetime of 0 indicates, that
                          the router is not a default router and should
                          not appear on the default router list. The


Fritsche, Seifert       Expires May 1998                       [Page 12]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          router lifetime applies only to the router's
                          usefulness as a default router; it does not
                          apply to information contained in other
                          message fields or options.  Options that need
                          limits for their information include their own
                          lifetime fields.
   Retrans Timer:         32-bit unsigned integer.  The time, in
                          milliseconds, which shall be waited by hosts
                          for example between retransmission of
                          Neighbour Solicitation messages for Neighbour
                          Unreachability Detection.  This value is also
                          used for separating the transmission of
                          Neighbour Solicitation messages for the
                          detection of duplicate addresses.  A value of
                          zero means unspecified (by this router).
   Holding Time:          32-bit unsigned integer.  The time, in
                          seconds, how long the router shall be seen as
                          reachable by its connected neighbours, which
                          have received this message.  If during this
                          period no next Router Advertisement message is
                          received from the respective router, it shall
                          be deleted from the adjacency databases of its
                          neighbours.  Therefore it is recommendable for
                          routers, to set this value at least two times
                          the value for the retransmission interval.  In
                          this case the loss of a single Router
                          Advertisement message wouldn't cause the
                          deletion of the router from its neighbour's
                          adjacency databases.

   Valid Options:

   Source link-layer address:
                          The link-layer address of the interface from
                          which the Router Advertisement is sent.  This
                          is only used on link layers that have
                          addresses.  This option can, but shall not be
                          omitted in messages sent in response to a
                          previously received Neighbour Solicitation
                          message, which is used for Neighbour
                          Unreachability Detection.  In all other cases
                          this option must be present.
   MTU:                   Shall be sent on links that have a variable
                          MTU.  It may be also sent on other links.
   Prefix Information:    These options specify the prefixes that are
                          on-link and/or are used for address
                          autoconfiguration.  A router should include
                          all its on-link prefixes (except the link-
                          local prefix) so that multihomed hosts have
                          complete prefix information about on-link
                          destinations for the links to which they
                          attach.  If complete information is lacking, a


Fritsche, Seifert       Expires May 1998                       [Page 13]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          multihomed host may not be able to chose the
                          correct outgoing interface when sending
                          traffic to its neighbours.
   LSA information:       This option is examined only by routers
                          receiving this message and specifies the IPv6
                          address, on behalf of which the router will
                          generate Link State Advertisements.  This
                          option can be omitted only, if this IPv6
                          address is the same as the one used as Source
                          Address for this packet.

   Future versions of this protocol may define new option types.
   Receivers must silently ignore any options they do not recognize and
   continue processing the message.


3.2.3 Neighbour Solicitation Message Format

   Hosts send Neighbour Solicitations during their stateless address
   autoconfiguration process to check, whether any other node already
   uses this tentative address.  Also all nodes use Neighbour
   Solicitations for the execution of the Neighbour Unreachability
   Detection function.

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |           Checksum            |
   +---------------+---------------+-------------------------------+
   |                           Reserved                            |
   +---------------------------------------------------------------+
   |                            Options                            |


   IPv6 Fields:

   Source Address:        If used for Duplicate Address Detection this
                          field contains the unspecified address, since
                          only hosts having no address assigned to their
                          interface are allowed to send this message for
                          the purpose of checking, whether the
                          tentative address exists already.  Else if
                          used for the execution of the Neighbour
                          Unreachability Detection function, the IPv6
                          address of the sending interface shall be
                          used.
   Destination Address:   If used for Duplicate Address Detection this
                          field contains the tentative address the host
                          wants to use for this interface.  This must
                          not be a multicast address.  Else it contains
                          the address of the peer node, for which the
                          Neighbour Unreachability Detection function is


Fritsche, Seifert       Expires May 1998                       [Page 14]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          executed.
   Hop Limit:             255
   Priority:              15
   Authentication Header: If a Security Association for the IP
                          Authentication Header exists between the
                          source and the destination address, then the
                          source shall include this header.

   ICMPv6 Fields:

   Type:                  135 - Neighbour Solicitation Message
   Code:                  0
   Checksum:              The ICMPv6 checksum. See [2].
   Reserved:              This field is unused.  It must be initialised
                          to zero by the sender and must be ignored by
                          the receiver.

   Valid Options:

   Source link-layer address:
                          The link-layer address of the sender.  On link
                          layers that have addresses this option must be
                          included.

   Future versions of this protocol may define new option types.
   Receivers must silently ignore any options they do not recognize and
   continue processing the message.


3.2.4 Host Advertisement Message Format

   A host sends Host Advertisements periodically, in response to an
   other Router or Host Advertisement message generated by a newly
   detected node, or in the case, that a host expects some of its
   interface addresses becoming unreachable.  Finally a Host
   Advertisement is sent in response to a Neighbour Solicitation
   message.

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |           Checksum            |
   +-+-------------+---------------+-------------------------------+
   |S|  Reserved   |                  Holding Time                 |
   +-+-------------+-----------------------------------------------+
   |                            Options                            |


  IPv6 Fields:

   Source Address:        128-bit IPv6 address of the interface from
                          which the advertisement is sent.  If all


Fritsche, Seifert       Expires May 1998                       [Page 15]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          interfaces of the host have assigned one
                          single IPv6 address, that is an address is not
                          assigned to each interface, but to the host as
                          whole, this address shall be used.
   Destination Address:   If this message is sent periodically due to
                          expiration of the local Host Advertisement
                          transmission timer or in response to a
                          Neighbour Solicitation message containing the
                          unspecified address as Source Address, this
                          field contains the all-nodes multicast
                          address.  If it is sent in response to a
                          previously received Router or Host
                          Advertisement message or to a Neighbour
                          Solicitation message containing a unicast
                          Source Address different from the unspecified
                          address, this field contains the IPv6 address
                          specified as Source Address in the respective
                          message.
   Hop Limit:             255
   Priority:              15
   Authentication Header: If a Security Association for the IP
                          Authentication Header exists between the
                          source and the destination address, then the
                          source shall include this header.

   ICMPv6 Fields:

   Type:                  136 - Host Advertisement Message
   Code:                  0
   Checksum:              The ICMPv6 checksum. See [2].
   S:                     Solicited Flag.  When set, the S-bit indicates
                          that the advertisement was sent in response to
                          a Neighbour Solicitation.
   Reserved:              This field is unused.  It must be initialised
                          to zero by the sender and must be ignored by
                          the receiver.
   Holding Time:          24-bit unsigned integer.  The time, in
                          seconds, how long the host shall be seen as
                          reachable by its connected neighbours, which
                          have received this message.  If during this
                          period no next Host Advertisement message is
                          received from the respective host, it shall be
                          deleted from the adjacency databases of its
                          neighbours.  Therefore it is recommendable for
                          hosts, to set this value at least two times
                          the value for the retransmission interval.  In
                          this case the loss of a single Host
                          Advertisement message wouldn't cause the
                          deletion of the host from its neighbour's
                          adjacency databases.

   Valid Options:


Fritsche, Seifert       Expires May 1998                       [Page 16]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Source link-layer address:
                          The link-layer address of the sender.  On link
                          layers that have addresses this option must be
                          included.

   Future versions of this protocol may define new option types.
   Receivers must silently ignore any options they do not recognize and
   continue processing the message.


3.2.5 Redirect Message Format

   Routers send Redirect packets to inform a host of a better first-hop
   node on the path to a destination.  Hosts can be redirected to a
   better first-hop router, but can also be informed by a redirect that
   the destination is in fact a neighbour.  The latter is accomplished
   by setting the ICMPv6 Target Address equal to the ICMPv6 Destination
   Address.

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |           Checksum            |
   +---------------+---------------+-------------------------------+
   |                           Reserved                            |
   +---------------------------------------------------------------+
   |                                                               |
   |                         Target Address                        |
   |                                                               |
   |                                                               |
   +---------------------------------------------------------------+
   +---------------------------------------------------------------+
   |                                                               |
   |                       Destination Address                     |
   |                                                               |
   |                                                               |
   +---------------------------------------------------------------+
   |                            Options                            |


   IPv6 Fields:

   Source Address:        Must be the IPv6 link-local address assigned
                          to the interface from which this message is
                          sent.
   Destination Address:   The Source Address of the packet that
                          triggered the redirect.
   Hop Limit:             255
   Priority:              15
   Authentication Header: If a Security Association for the IP
                          Authentication Header exists between the
                          source and the destination address, then the


Fritsche, Seifert       Expires May 1998                       [Page 17]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          source shall include this header.

   ICMPv6 Fields:

   Type:                  137 - Redirect Message
   Code:                  0
   Checksum:              The ICMPv6 checksum. See [2].
   Reserved:              This field is unused.  It must be initialised
                          to zero by the sender and must be ignored by
                          the receiver.
   Target Address:        An IPv6 address, that is a better first hop to
                          use for the ICMPv6 Destination Address.  If
                          the target is the actual endpoint of
                          communication, i.e., the destination is a
                          neighbour, the Target Address field must
                          contain the same value as the ICMPv6
                          Destination Address field.  Otherwise the
                          target is a better first-hop router and the
                          Target Address must be the router's link-local
                          address so that hosts can uniquely identify
                          routers.
   Destination Address:   The IPv6 address of the destination which is
                          redirected to the target.  This address must
                          not be a multicast address.

   Valid Options:

   Target link-layer address:
                          The link-layer address for the target.  It
                          should be included (if known).  Note that on
                          NBMA links, hosts may rely on the presence of
                          the Target Link-Layer Address option in
                          Redirect messages as the means for determining
                          the link-layer addresses of neighbours.  In
                          such cases, the option must be included in
                          Redirect messages.
   Redirected Header:     As much as possible of the IP packet that
                          triggered the sending of the Redirect without
                          making the redirect packet exceed 576 octets.

   Future versions of this protocol may define new option types.
   Receivers must silently ignore any options they do not recognize and
   continue processing the message.


3.2.6 Options Formats

   Neighbour Discovery messages include zero or more options, some of
   which may appear multiple times in the same message.  All options are
   of the form:




Fritsche, Seifert       Expires May 1998                       [Page 18]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |    Length     |              ...              |
   +---------------+---------------+-------------------------------+
   |                              ...                              |


   Fields:

      Type:               8-bit identifier of the type of option.  The
                          options defined here for Neighbour Discovery
                          ICMPv6 messages are:

                          Option Name                      Type

                          Source Link-Layer Address        1
                          Target Link-Layer Address        2
                          Prefix Information               3
                          Redirected Header                4
                          MTU                              5
                          LSA information                  6

      Length:             8-bit unsigned integer.  The length of the
                          option in units of 8 octets.  The value 0 is
                          invalid.  Nodes must silently discard a
                          Neighbour Discovery packet that contains an
                          option with length zero.


3.2.6.1 Source / Target Link-Layer Address

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |    Length     |      Link-Layer Address       |
   +---------------+---------------+-------------------------------+


   Fields:

      Type:               1   Source Link-Layer Address
                          2   Target Link-Layer Address
      Length:             The length of the option in units of 8 octets.
                          For example, the length for IEEE 802 addresses
                          is 1 (one octet for the Type field, one octet
                          for the Length field, and six octets for the
                          IEEE 802 address).
      Link-Layer Address: The variable length link-layer address.  The
                          content and format of this field (including
                          byte and bit ordering)is expected to be
                          specified in specific documents that describe


Fritsche, Seifert       Expires May 1998                       [Page 19]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          how IPv6 operates over different link layers.
      Description:        The Source Link-Layer Address option contains
                          the link-layer address of the sender of the
                          packet.  It is used in the Neighbour
                          Solicitation, Router Solicitation, Host
                          Advertisement and Router Advertisement
                          packets.
                          The Target Link-Layer Address option contains
                          the link-layer address of the target.  It is
                          used only in Redirect packets.
                          These options must be silently ignored for
                          other Neighbour Discovery messages.


3.2.6.2 Prefix Information

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+---------------+-+-+-----------+
   |     Type      |    Length     | Prefix Length |L|A| Reserved1 |
   +---------------+---------------+---------------+-+-+-----------+
   |                        Valid Lifetime                         |
   +---------------------------------------------------------------+
   |                      Preferred Lifetime                       |
   +---------------------------------------------------------------+
   |                           Reserved2                           |
   +---------------------------------------------------------------+
   |                                                               |
   |                            Prefix                             |
   |                                                               |
   |                                                               |
   +---------------------------------------------------------------+


   Fields:

      Type:               3
      Length:             4
      Prefix Length:      8-bit unsigned integer.  The number of leading
                          bits in the Prefix that are valid.  The value
                          ranges from 0 to 128.
      L:                  1-bit on-link flag.  When set, indicates that
                          this prefix can be used for on-link
                          determination.  When not set the advertisement
                          makes no statement about on-link or off-link
                          properties of the prefix.  For instance, the
                          prefix might be used for address configuration
                          with some of the addresses belonging to the
                          prefix being on-link and others being off-
                          link.
      A:                  1-bit autonomous address-configuration flag.
                          When set indicates that this prefix can be


Fritsche, Seifert       Expires May 1998                       [Page 20]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          used for autonomous address configuration as
                          specified in [4].
      Reserved1:          6-bit unused field.  It must be initialised to
                          zero by the sender and must be ignored by the
                          receiver.
      Valid Lifetime:     32-bit unsigned integer.  The length of time
                          in seconds (relative to the time the packet is
                          sent) that the prefix is valid for the purpose
                          of on-link determination.  A value of all one
                          bits (0xffffffff) represents infinity.  The
                          Valid Lifetime is also used by [4].
      Preferred Lifetime: 32-bit unsigned integer.  The length of time
                          in seconds (relative to the time the packet is
                          sent) that addresses generated from the prefix
                          via stateless address autoconfiguration remain
                          preferred [4].  A value of all one bits
                          (0xffffffff) represents infinity.  See [4].
      Reserved2:          This field is unused.  It must be initialised
                          to zero by the sender and must be ignored by
                          the receiver.
      Prefix:             An IPv6 address or a prefix of an IPv6
                          address.  The Prefix Length field contains the
                          number of valid leading bits in the prefix.
                          The bits in the prefix after the prefix length
                          are reserved and must be initialised to zero
                          by the sender and ignored by the receiver.  A
                          router should not send a prefix option for the
                          link-local prefix and a host should ignore
                          such a prefix option.
      Description:        The Prefix Information option provide hosts
                          with on-link prefixes and prefixes for Address
                          Autoconfiguration.
                          The Prefix Information option appears in
                          Router Advertisement packets and must be
                          silently ignored for other messages.


3.2.6.3 Redirected Header

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |    Length     |            Reserved           |
   +---------------+---------------+-------------------------------+
   |                           Reserved                            |
   +---------------------------------------------------------------+
   |                                                               |
   |                      IPv6 header + data                       |
   |                              ...                              |
   +---------------------------------------------------------------|




Fritsche, Seifert       Expires May 1998                       [Page 21]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Fields:

      Type:               4
      Length:             The length of the option in units of 8 octets.
      Reserved:           These fields are unused.  They must be
                          initialised to zero by the sender and must be
                          ignored by the receiver.
      IP header + data:   The original packet truncated to ensure that
                          the size of the redirect message does not
                          exceed 576 octets.
      Description:        The Redirected Header option is used in
                          Redirect messages and contains all or part of
                          the packet that is being redirected.
                          This option must be silently ignored for other
                          Neighbour Discovery messages.


3.2.6.4 MTU

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |    Length     |            Reserved           |
   +---------------+---------------+-------------------------------+
   |                              MTU                              |
   +---------------------------------------------------------------+


   Fields:

      Type:               5
      Length:             1
      Reserved:           This field is unused.  It must be initialised
                          to zero by the sender and must be ignored by
                          the receiver.
      MTU:                32-bit unsigned integer.  The recommended MTU
                          for the link.
      Description:        The MTU option is used in Router Advertisement
                          messages to insure that all nodes on a link
                          use the same MTU value in those cases where
                          the link MTU is not well known.
                          This option must be silently ignored for other
                          Neighbour Discovery messages.
                          In configurations in which heterogeneous
                          technologies are bridged together, the maximum
                          supported MTU may differ from one segment to
                          another.  If the bridges do not generate ICMP
                          Packet Too Big messages, communicating nodes
                          will be unable to use Path MTU to dynamically
                          determine the appropriate MTU on a per-
                          neighbour basis.  In such cases, routers use
                          the MTU option to specify an MTU value


Fritsche, Seifert       Expires May 1998                       [Page 22]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          supported by all segments.


3.2.6.5 LSA information

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |    Length     |            Reserved           |
   +---------------+---------------+-------------------------------+
   |                           Reserved                            |
   +---------------------------------------------------------------+
   |                                                               |
   |                       LSA IPv6 Address                        |
   |                              ...                              |
   +---------------------------------------------------------------|


   Fields:

      Type:               6
      Length:             3
      Reserved:           These fields are unused.  They must be
                          initialised to zero by the sender and must be
                          ignored by the receiver.
      LSA IPv6 Address:   The LSA information option is present only in
                          Router Advertisement messages.  It informs
                          other routers receiving this advertisement, on
                          behalf of which IPv6 address this router will
                          generate its Link State Advertisements.
                          If a router uses more than one IPv6 address on
                          its interfaces, this knowledge is necessary
                          for the neighbouring routers in the routing
                          area to assign the proper LSAs to this router
                          during the execution of the routing algorithm.
                          If a router has assigned only one IPv6
                          address, this option doesn't have to be
                          present, since this single address must be
                          contained in the Source Address field of the
                          Router Advertisement.
                          This option must be silently ignored for other
                          Neighbour Discovery messages.


3.3 Validation of the used ICMPv6 messages

   This section describes the vality checks, which have to be executed
   by the nodes receiving those Neighbour Discovery messages.






Fritsche, Seifert       Expires May 1998                       [Page 23]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


3.3.1 Validation of Router Solicitations

   Hosts must silently discard any received Router Solicitation
   Messages. A router must silently discard any received Router
   Solicitation messages that do not satisfy all of the following
   validity checks:
   - The IP Hop Limit field has a value of 255, i.e., the packet could
     not possibly have been forwarded by a router.
   - If the message includes an IPv6 Authentication Header, the message
     authenticates correctly.
   - ICMPv6 Checksum is valid.
   - ICMPv6 Code is 0.
   - ICMPv6 length (derived from the IPv6 length) is 8 or more octets.
   - All included options have a length that is greater than zero.

   The contents of the Reserved field, and of any unrecognized options,
   must be ignored.  Future, backward-compatible changes to the protocol
   may specify the contents of the Reserved field or add new options;
   backward-incompatible changes may use different Code values.

   The contents of any defined options that are not specified to be used
   with Router Solicitation messages must be ignored and the packet
   processed as normal.  The only defined option that may appear is the
   Source Link-Layer Address option.

   A solicitation that passes the validity checks is called a "valid
   solicitation".


3.3.2 Validation of Router Advertisements

   A node must silently discard any received Router Advertisement
   messages that do not satisfy all of the following validity checks:
   - IPv6 Source Address is an unicast address.  Routers must use as the
     source for Router Advertisements and Redirect messages the address
     of their sending interface or, if all interfaces have the same
     address, that is an address is not assigned to each interface, but
     to the router as whole, the address assigned to the router as
     whole.  This enables hosts to uniquely identify routers.
   - The IPv6 Hop Limit field has a value of 255, i.e., the packet could
     not possibly have been forwarded by a router.
   - If the message includes an IPv6 Authentication Header, the message
     authenticates correctly.
   - ICMPv6 Checksum is valid.
   - ICMPv6 Code is 0.
   - ICMPv6 length (derived from the IPv6 length) is 16 or more octets.
   - All included options have a length that is greater than zero.

   The contents of the Reserved field, and of any unrecognized options,
   must be ignored.  Future, backward-compatible changes to the
   protocol may specify the contents of the Reserved field or add new
   options; backward-incompatible changes may use different Code values.


Fritsche, Seifert       Expires May 1998                       [Page 24]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   The contents of any defined options that are not specified to be used
   with Router Advertisement messages must be ignored and the packet
   processed as normal.  The only defined options that may appear are
   the Source Link-Layer Address, Prefix Information, LSA information
   and MTU options.

   An advertisement that passes the validity checks is called a "valid
   advertisement".


3.3.3 Validation of Neighbour Solicitations

   A node must silently discard any received Neighbour Solicitation
   messages that do not satisfy all of the following validity checks:
   - The IPv6 Hop Limit field has a value of 255, i.e., the packet could
     not possibly have been forwarded by a router.
   - If the message includes an IPv6 Authentication Header, the message
     authenticates correctly.
   - IPv6 Destination Address must not be a multicast address.
   - ICMPv6 Checksum is valid.
   - ICMPv6 Code is 0.
   - ICMPv6 length (derived from the IPv6 length) is 8 or more octets.
   - All included options have a length that is greater than zero.

   The contents of the Reserved field, and of any unrecognized options,
   must be ignored.  Future, backward-compatible changes to the protocol
   may specify the contents of the Reserved field or add new options;
   backward-incompatible changes may use different Code values.

   The contents of any defined options that are not specified to be used
   with Neighbour Solicitation messages must be ignored and the packet
   processed as normal.  The only defined option that may appear is the
   Source Link-Layer Address option.

   A Neighbour Solicitation that passes the validity checks is called a
   "valid solicitation".


3.3.4 Validation of Host Advertisements

   A node must silently discard any received Host Advertisement messages
   that do not satisfy all of the following validity checks:
   - The IPv6 Hop Limit field has a value of 255, i.e., the packet could
     not possibly have been forwarded by a router.
   - If the message includes an IPv6 Authentication Header, the message
     authenticates correctly.
   - ICMPv6 Checksum is valid.
   - ICMPv6 Code is 0.
   - ICMPv6 length (derived from the IPv6 length) is 8 or more octets.
   - All included options have a length that is greater than zero.

   The contents of the Reserved field, and of any unrecognized options,


Fritsche, Seifert       Expires May 1998                       [Page 25]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   must be ignored.  Future, backward-compatible changes to the protocol
   may specify the contents of the Reserved field or add new options;
   backward-incompatible changes may use different Code values.

   The contents of any defined options that are not specified to be used
   with Host Advertisement messages must be ignored and the packet
   processed as normal.  The only defined option that may appear is the
   Source Link-Layer Address option.

   A Host Advertisement that passes the validity checks is called a
   "valid advertisement".


3.3.5 Validation of Redirect Messages

   A host must silently discard any received Redirect message that does
   not satisfy all of the following validity checks:
   - IPv6 Source Address is an unicast address.  Routers must use as the
     source for Router Advertisements and Redirect messages the address
     of their sending interface or, if all interfaces have the same
     address, that is an address is not assigned to each interface, but
     to the router as whole, the address assigned to the router as
     whole.  This enables hosts to uniquely identify routers.
   - The IPv6 Hop Limit field has a value of 255, i.e., the packet could
     not possibly have been forwarded by a router.
   - If the message includes an IPv6 Authentication Header, the message
     authenticates correctly.
   - ICMPv6 Checksum is valid.
   - ICMPv6 Code is 0.
   - ICMPv6 length (derived from the IPv6 length) is 40 or more octets.
   - The IPv6 Source Address of the Redirect is the same as the current
     first-hop router for the specified ICMPv6 Destination Address.
   - The ICMPv6 Destination Address field in the redirect message does
     not contain a multicast address.
   - The ICMPv6 Target Address is either an address of a router
     interface on that link (when redirected to a router) or the same as
     the ICMPv6 Destination Address (when redirected to a destination
     connected to this link).
   - All included options have a length that is greater than zero.

   The contents of the Reserved field, and of any unrecognized options
   must be ignored.  Future, backward-compatible changes to the protocol
   may specify the contents of the Reserved field or add new options;
   backward-incompatible changes may use different Code values.

   The contents of any defined options that are not specified to be used
   with Redirect messages must be ignored and the packet processed as
   normal.  The only defined options that may appear are the Target
   Link-Layer Address option and the Redirected Header option.

   A host must not consider a redirect invalid just because the Target
   Address of the redirect is not covered under one of the link's


Fritsche, Seifert       Expires May 1998                       [Page 26]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   prefixes.  Part of the semantics of the Redirect message is that the
   Target Address is connected to the link.

   A redirect that passes the validity checks is called a "valid
   redirect".


3.4 Functions of the Neighbour Discovery

   This section will shortly summarize the functionality of the modified
   Neighbour Discovery mechanism.  The functions described herein can
   only be applied on multicast-capable links.


3.4.1 Router Discovery

   Hosts, which newly connect to a subnetwork, can send Router
   Solicitations to the all-router multicast address.  Using this
   mechanism the hosts don't have to wait for the periodically sent
   Router Advertisements, but can explicitly ask the connected routers
   to send their advertisements earlier.  The Source Address of these
   solicitations must be the unspecified address for hosts, which havn't
   already configured an IPv6 address for their interfaces.  All other
   hosts must use the address assigned to the sending interface.

   If a router receives a Router Solicitation message, it shall send out
   its normally periodically retransmitted Router Advertisement.  Since
   sending many Router Advertisements simultaneously can cause a burst
   on the subnetwork, each router shall randomly delay its own
   advertisement.

   In order to receive these advertisements, the host generating the
   Router Solicitations previously joins the all-nodes multicast address
   on all multicast-capable interfaces.  Receiving the information
   contained in the Router Advertisements the host is informed about the
   relevant parameters on that link.  If it has not already configured
   IPv6 addresses for its interfaces, it can now continue with the
   stateless address autoconfiguration.  Once a host receives solicited
   Router Advertisements, it has to stop sending Router Solicitations.

   If no advertisements have been received by the host after
   transmission of MAX_RTR_SOLICITATIONS [3], the host concludes, that
   there is no router present on the link.  In this case the host must
   attempt to use stateful autoconfiguration to obtain addresses and
   other configuration information.  Nevertheless the host will continue
   listening for Router Advertisements for the case, that a router
   appears on the link.


3.4.2 Stateless Address Autoconfiguration

   A host, which has newly connected to a link and has already received


Fritsche, Seifert       Expires May 1998                       [Page 27]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Router Advertisements, can initiate the stateless address
   autoconfiguration for its interface on that link.  Before it assigns
   a tentative IPv6 address derived from the respective prefixes
   contained in the Router Advertisements to its interface, it has to
   make sure, that no duplicate address exists already on that link.  It
   is recommended, that for each assigned unicast address, regardless
   whether it is obtained through stateless, stateful or manual
   configuration, this check is executed.

   This is done by sending up to DupAddrDetectTransmits [3] Neighbour
   Solicitations destined for the tentative address on the interface to
   be configured.  The solicitation shall be separated by Retrans Timer  milliseconds, and their Source Addresses have to be the unspecified
   address.

   If the tentative address exists already on the link, the respective
   node will receive these solicitations.  If this node is a router, it
   must send immediately a Router Advertisement message for the
   tentative address, if the node is a host, a Host Advertisement
   message has to be transmitted.  Both advertisements have to be
   destined for the all-node multicast address, and have to set their
   Solicited Flag.

   A host executing the Duplicate Address Detection by sending Neighbour
   Solicitation messages has to receive on that interface all Router and
   Host Advertisement messages addressed to the all-node multicast
   address.  If it receives one solicited advertisement, which Source
   Address is equal to the tentative address of the host's interface,
   the host can be sure, that the tentative address is already in use on
   that link.  In this case the host has to use an other mechanism for
   the configuration of its interface address, for example a manual
   configuration.

   In order to detect even other hosts executing simultaneously the
   Duplicate Address Detection for the same tentative address, a host
   receives during this process also Neighbour Solicitation messages
   destined for the tentative address it wants to use for its interface.
   If it detects on this way, that another host is also trying to use
   this address, the host has to use an other mechanism for the address
   configuration.

   If after DupAddrDetectTransmits sent Neighbour Solicitations no
   duplicate address is indicated by the receipt of the respective
   Neighbour Solicitations or Router or Host Advertisements, the host
   can assign this address to its interface.  If this address has been
   configured by stateless address autoconfiguration, that is it is
   composed of a prefix distributed by Router Advertisements and an
   appended locally used token, all addresses generated from the same
   token will also be unique.  This shall be true, since subnet prefixes
   are assumed to be assigned correctly.  Therefore the uniqueness of an
   IPv6 address depends only on the uniqueness of the used token, what
   means, if one address generated from this token is unique, all other


Fritsche, Seifert       Expires May 1998                       [Page 28]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   addresses generated from the same token are also unique.

   Nevertheless it shall be mentioned, that this mechanism of Duplicate
   Address Detection is not completely reliable.  In the case of a
   partitioned link during the execution of this mechanism, a
   duplicate address in the other partition cannot be detected.
   Therefore a host after having an address assigned to one of its
   interfaces shall continue looking for indications of existing
   duplicate addresses.  Such an indication could be for example a
   received Host Advertisement containing a Source Address assigned to
   one of its own interfaces.


3.4.3 Neighbour Detection

   This functionality is newly added in this proposal.  Having an
   address assigned to one of their interfaces, router send periodically
   Router Advertisements, and hosts Host Advertisements on this
   interface.  Both advertisements are addressed to the all-node
   multicast address and contain as Source Address the address of the
   respective interface.  The Holding Time of these advertisements
   specifies, how long this message shall cause the sender to be seen as
   reachable neighbour at the receiving nodes.

   Using this method each node can build up a local database, in the
   following referred to as adjacency database, which contains the IPv6
   addresses and also the link-layer addresses of all connected nodes on
   a particular link.  Additionally the information is provided, if the
   neighbour is a router or a host.  If a router receives a Router
   Advertisement from a neighbouring router, and the advertisement
   contains a LSA information option, the receiving router will also
   store the IPv6 address contained in this option in its local
   adjacency database.  This address is also assigned to an interface of
   the neighbouring router and is later used for the execution of the
   routing algorithm.  Storing the Holding Time with each database entry
   enables the detection of a node becoming unreachable.  In this case
   no next advertisement has been received from the node within the
   specified Holding Time.

   Here the considerations done in chapter 1 become more clearly.
   Sending of periodical signs of life by the single nodes, here in form
   of Router and Host Advertisement messages, is the only way a node can
   keep track with the state of its neighbours.  On that way all changes
   of any neighbours are automatically recognized at the latest within
   the next Holding Time seconds.  This is an absolutely necessary
   requirement for the implementation of a dynamical routing algorithm.
   It is obviously, that the more often those advertisements are sent,
   the more dynamical is the distribution of any changes of the
   respective neighbours, but also the more bandwidth and therefore
   costs are needed for the distribution of this control information. It
   is up to the network administrator to find a suitable compromise of
   dynamic and costs on each particular link.


Fritsche, Seifert       Expires May 1998                       [Page 29]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   There is also a mechanism defined, which enables a newly connected
   host to get the life signs of its neighbours before the expiration of
   their retransmission timers.  As mentioned above a newly connected
   node starts, after having configured its interface address, the
   periodical transmission of advertisements.  Receiving the first
   advertisement of such a new node the neighbours will send back their
   own advertisements explicitly to the Source Address of this node
   instead to the all-nodes multicast address.  To avoid a burst of
   advertisements sent by all neighbours of the new node at the same
   time, each message shall be randomly delayed.

   Finally a node, which knows, that some of its interface addresses
   will be unreachable the next time, shall send advertisements for
   these addresses with the respective Holding Time set to the time the
   interface will still be reachable.  This causes a deletion of the
   interface in the adjacency databases of all neighbours exactly at the
   time the interface would become unavailable, and not at the time the
   Holding Timer of the periodical advertisements sent by the interface
   would normally expire.

   In both cases described at last, advertisements are sent triggered by
   an event (new node or an address becoming unreachable), and not by
   expiration of the retransmission timer.  Sending advertisements for
   these events improves the dynamic of the information distribution
   without the necessity to decrease the time between periodical
   retransmission.


3.4.4 Neighbour Unreachability Detection

   Using the Neighbour Detection functionality each node on the link is
   informed by the receipt of periodical advertisements, from which
   neighbour nodes itself can be reached, but it doesn't know, if itself
   can also reach these neighbours.  The Neighbour Detection
   functionality provides only a statement about unidirectional
   reachability.  In most cases this information is enough, like for the
   execution of a routing algorithm.  Sometimes, for example if a node
   supposes, that its data packets don't reach a neighbour, although
   this neighbour is stored as reachable in the local adjacency
   database, it could be helpful to have a mean to examine the
   bi-directional reachability between two nodes.  This is done by the
   Neighbour Unreachability Detection function.

   A node, which executes this function, sends Neighbour Solicitation
   messages to the respective peer node.  The Destination Address of
   these solicitations is set to the peer node's unicast address and the
   Source Address is set to the unicast address configured for the
   sending interface.  If the peer node receives a solicitation
   containing a Source Address other than the unspecified address, it
   sends back an own advertisement addressed to the unicast address of
   the initiator of the Neighbour Unreachability Detection instead of
   the all-nodes multicast address.  The Solicitation Flag of this


Fritsche, Seifert       Expires May 1998                       [Page 30]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   advertisement must be set.  If this response is received at the
   initiator node, it knows, that there exists a bi-directional
   reachability between itself and the checked peer node.


3.4.5 Redirect

   This functionality remains as specified in [3].

   Redirect messages are sent by routers to redirect a host to a better
   first-hop router for a specific destination or to inform hosts that a
   destination is in fact a neighbour (i.e., connected to the same
   link).  The latter is accomplished by having the ICMPv6 Target
   Address be equal to the ICMPv6 Destination Address in the respective
   Redirect message.


3.5 Neighbour Discovery on non-multicast-capable links

   The functions specified in the previous section, are not fully
   applicable on subnetworks without multicast-capabilities.  For
   example by executing the Router Discovery function a host sends
   Router Solicitations to the all-router multicast address.  Such an
   address doesn't exist on non-multicast-capable networks , what is
   easy to understand, since for example the group consisting of all
   routers connected to a non-multicast-capable WAN link would be much
   larger than a group on an IEEE 802 link, and addressing of such large
   groups would significantly decrease the available bandwidth of the
   network. Therefore some modifications have to be done to implement
   the Neighbour Discovery mechanism.

   Because of the lack of multicast addresses a newly connected host has
   no chance to receive configuration information from a router.  This
   means that the Router Discovery function and therefore also the
   Stateless Address Autoconfiguration functions are not applicable.
   The necessary parameters and interface addresses of a new node have
   to be configured manually.

   Connected to the link the new node have no information, to which
   possible neighbours it shall send its advertisements.  Setting the
   Destination Address to a multicast address isn't possible on these
   networks, and information about unicast interface addresses of
   neighbouring nodes cannot be received from their advertisements,
   since these advertisements are not transmitted to the momentary still
   unknown new node.  Therefore also this problem can be solved only by
   a manual configuration.

   Each node must have a list of all neighbour nodes, which are possibly
   reachable over the link.  For each neighbour the list has to contain
   its IPv6 address along with its link-layer address on the respective
   link.  If a node is now newly connected to the link, it sends its own
   advertisement to each of the neighbours contained in this list.  The


Fritsche, Seifert       Expires May 1998                       [Page 31]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Source Address of the advertisement is the address of the sending
   interface, and the Destination Address is set to the IPv6 address
   specified for the respective neighbour in the list.  For each
   addressed neighbour an entry in the new node's adjacency database is
   created and marked as "initialising".

   If one of the neighbour nodes receive in this way the advertisement
   of the new node, the new node is stored as reachable neighbour in the
   neighbouring node's adjacency database and an own advertisement is
   sent back to the address contained in the Source Address field of the
   received message.  If this returned advertisement reaches the newly
   connected node, the peer node marked as "initialialising" in the
   local adjacency database is now stored as reachable neighbour.

   Once this handshake has been executed successfully, advertisements
   can be exchanged periodically between these both nodes in the same
   way, as it is done on multicast-capable links.  The only difference
   is, that on non-multicast-capable links also the periodically
   exchanged advertisements have to be addressed to an unicast address
   instead of a multicast address.

   The advantage of this modification is, that the Neighbour
   Unreachability Detection function is not longer needed on those
   circuits, since exchanging the advertisements in pairs always
   guarantees a bi-directional reachability between the peer nodes.
   Unfortunately this method uses more bandwidth than the one on
   multicast-capable circuits, since now a host has to send one
   advertisement periodically to each neighbour compared with sending
   altogether only one advertisement periodically to a multicast
   address.  This disadvantage can be lessened by using longer
   retransmission intervals on those links, but of course this will also
   decrease the dynamic of the routing algorithm.

   Summarizing all these aspects this is a suitable mechanism to deal
   with the difficulties on non-multicast-capable links, and it offers
   an appropriate solution for the integration of those links into the
   dynamical routing area.

















Fritsche, Seifert       Expires May 1998                       [Page 32]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


4 Dynamical routing of unicast packets in IPv6


4.1 Introduction

   After having a suitable mechanism of dynamically discovering the own
   neighbours, there are still two problems to be solved before a router
   is able to execute its routing algorithm.  One of these aspects has
   already be mentioned in the previous chapter.  Each router is now
   able to produce a detailed picture of the network in its own
   environment, but it still has no information about the constellation
   of the routing area on links, to which it has no connection.

   Therefore each router has to exchange with all other routers of the
   routing area the information, which it has locally collected about
   its own environment.  For this purpose ICMPv6 packets called Link
   State Advertisements are used.  These packets contain all nodes,
   routers and hosts, which are neighbours of the router generating the
   LSA, that is all nodes, which are contained in the local adjacency
   database.  Additionally each of those nodes is marked as router or
   host.

   These Link State Advertisements are exchanged both, periodically and
   triggered by events.  The periodical transmission ensures, that in
   the case of the loss of a certain LSA the contents of this packet is
   retransmitted.  The transmission triggered by events helps to improve
   the dynamic of the distribution of routing information, since for
   example in the case of a new router has been detected on a link, all
   routing information could be sent immediately to this new node
   without waiting for the expiration of the retransmission timer.

   The distribution mechanism of Link State Advertisements is flooding,
   that means a router receiving a LSA will send the LSA to all its
   neighbouring routers except to these ones, which are located on the
   link from which the LSA has been received.  This link is excluded
   from the transmission list, since the router supposes, that the
   preceding router has already flooded the LSA on that link.  Each
   router stores each received LSA in a local database, the so called
   Link State database.  The contents of this database is later used
   during the execution of the routing algorithm.

   If there are loops present on a network, LSAs could theoretically be
   forwarded infinitely on this loops until the Hop Limit value of the
   IPv6 packet reaches zero.  In practice this undesirable effect is
   avoided by the use of a Sequence Number present in each LSA.  This
   number represents the topicality of the respective LSA.  If the LSA
   is generated the first time, the originating router sets this number
   to 1.  Each time the LSA is retransmitted, the value is increased by
   1, that is the higher the Sequence Number the newer is the LSA.  If a
   router receives a LSA with a Sequence Number lower or equal to the
   number of the already stored LSA version, it will not further forward
   this LSA, since if there is already a newer or the same version of


Fritsche, Seifert       Expires May 1998                       [Page 33]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   this LSA stored, the stored version has been already forwarded at the
   time it was received.  On this way the creation of infinite loops
   during the flooding of LSAs is successfully prevented.

   Each LSA also contains a Holding Time field.  The use of this field
   is similar to the use of the Holding Time in Router and Host
   Advertisements.  All routers decrement continuously the Holding Time
   of all LSAs stored in their local Link State database.  If a Holding
   Timer expires before a new version of the respective LSA has been
   received, the stored LSA is deleted from the database and its
   contents will not be used in the next execution of the routing
   algorithm.  Therefore a router has to make sure, that it retransmits
   its LSAs before their Holding Times expire in the databases of the
   other routers.  To be sure, that even in the case, that a single
   retransmitted LSA gets lost, all other routers still keep the
   contents of this LSA in their databases, it is recommendable, to set
   the Holding Time to at least two times the retransmission interval
   for the own LSAs.

   To easy indicate to the other routers, that a LSA is retransmitted
   unchanged, or that its contents have really changed, each LSA
   contains a so called Change flag.  If this flag is set to 1, each
   receiving router knows, that it has to replace completely the stored
   LSA version with the received one.  If the flag is set to zero, and
   the Sequence Number of the received LSA is equal to the Sequence
   Number of the stored LSA version increased by 1, that is the router
   has continuously received all generated LSA versions, the receiving
   router only has to reset the Holding Time and update the Sequence
   Number.  If there is one LSA version missing, the router has to
   compare the contents of the stored and the received LSA and to decide
   after that, if the contents have really changed.

   The second problem to be solved is the definition of a metric.  A
   dynamical routing algorithm can only be used efficiently, if each of
   the links in the routing area has assigned at least one metric.
   Evaluating this metric an algorithm can select the best path in the
   network from a given source to a given destination.  Since the
   chosen path is only optimal with regard to the used metric, it is an
   important consideration to define, what physical size a used metric
   shall represent.  Some examples could be metrics, which represent the
   different costs on the links or the bit error probabilities.  In this
   case an algorithm would be able, to select the way from a source to a
   destination with the lowest costs or the lowest probability of
   delivering an incorrect packet.

   If there are more metrics in use on a network the routing algorithm
   has to be run separately for each metric.  Also there must be an
   unequivocally indicator with an IPv6 packet, which determines, which
   metric should be used for routing this packet.  See chapter 7 for a
   closer look on this aspect.

   The next section defines the packet format, which is used for the


Fritsche, Seifert       Expires May 1998                       [Page 34]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   distribution of routing information between the routers of a single
   routing area.


4.2 ICMPv6 Routing Information message formats


4.2.1 Link State Advertisement Message Format

   Routers belonging to the same routing area exchange among
   themselves within Link State Advertisements the dynamically collected
   routing information of their connected links.

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |            Checksum           |
   +---------------+---------------+-------------------------------+
   |                          Holding Time                         |
   +---------------------------------------------------------------+
   |                        Sequence Number                        |
   +-------------------------------+-+-------------+---------------+
   |                               |C|  Reserved   |   Reserved    |
   +-------------------------------+-+-------------+---------------|
   |                            Options                            |


   IPv6 Fields:

      Source Address:     The IPv6 address on behalf of which the router
                          will generate all its Link State
                          Advertisements.  This address has been told
                          all the neighbouring routers by the LSA
                          information option contained in the Router
                          Advertisements (this option is only present,
                          if this address differs from the Source
                          Address of the advertisements).  The
                          respective address must be a unicast address
                          and valid the whole lifetime of the router to
                          ensure an unequivocally identification of the
                          LSAs belonging to a particular router.
      Destination Address:Either the all-routers multicast address, or
                          the unicast address of a particular router on
                          a connected link.
      Hop Limit:          Set to 255 by the originator of the Link State
                          Advertisement.  This value is decremented by 1
                          at each router, which forwards the packet.
      Priority:           15
      Authentication Header:If a Security Association for the IP
                          Authentication Header exists between the
                          source and the destination address, then the
                          source shall include this header.


Fritsche, Seifert       Expires May 1998                       [Page 35]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   ICMPv6 Fields:

      Type:               138 - Link State Advertisement Message
      Code:               0
      Checksum:           The ICMPv6 checksum. See [2].
      Holding Time:       32-bit unsigned integer.  The time, in
                          seconds, how long a router receiving a Link
                          State Advertisement shall store its contents
                          in its Link State database.  If during this
                          period no newer Link State Advertisement
                           message, that is a Link State Advertisement
                           with the same LSA Number, but with a higher
                           Sequence Number, is received from the same
                           router, then the router shall delete the LSA
                           from its local Link State database. Therefore
                           it is recommendable for routers, to set this
                           value to at least two times the value for the
                           retransmission interval of Link State
                           Advertisements.  In the case of the loss of a
                           single advertisement its contents wouldn't be
                           deleted from the Link State databases of the
                           other routers.
      Sequence Number:     32-bit unsigned integer.  This number is used
                           to identify the topicality of a single Link
                           State Advertisement.  If there are two LSAs
                           from the same router with the same LSA Number
                           the LSA with the higher Sequence Number is
                           seen as newer.  A router, which generates a
                           certain LSA for the first time, shall set the
                           Sequence Number of this LSA to 1.  Each time
                           the router either periodically retransmits
                           this LSA or updates the contents of the LSA,
                           it shall increase the Sequence Number by 1.
                           This ensures, that all other routers
                           receiving this LSA detect, that it is a newer
                           version.
      LSA Number:          16-bit unsigned integer.  Probably not all
                           local routing information of a router will
                           fit into a single Link State Advertisement,
                           but has to be distributed in more LSAs.  To
                           unequivocally identify a certain LSA of its
                           locally generated set, the originating router
                           assigns a number to each advertisement.
                           Therefore the Source Address of a LSA and its
                           LSA Number both together identify a single
                           LSA unequivocally in the whole network.
      C:                   Change flag.  This flag set to 1 means, that
                           the contents of this Link State Advertisement
                           have been modified by the originating router.
                           If a router receives a newer LSA with the
                           Change flag set to one, it can replace the
                           stored contents of this LSA with the received


Fritsche, Seifert       Expires May 1998                       [Page 36]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                           ones without first comparing both packets,
                           else it shall only reset the Holding Time and
                           update the Sequence Number.  If the Sequence
                           Number of a received LSA is more than 1
                           higher than the one stored in the local Link
                           State database, that is one LSA version
                           didn't reach this router, the receiving
                           router always has to compare both contents to
                           decide, if they have changed.  This is
                           necessary, since the router has no knowledge,
                           if the Change flag of the missing LSA has
                           been set or not.
      Reserved:            These fields are unused.  They must be
                           initialised to zero by the sender and must be
                           ignored by the receiver.

   Valid Options:

      Router Neighbours:  If the router originating the Link State
                          Advertisement has neighbouring routers on one
                          of its connected links, and the information
                          about these adjacencies shall be distributed
                          within this LSA, the Router Neighbours option
                          has to be present.  This option can appear
                          several times within one LSA.
      Host Neighbours:    If the router originating the Link State
                          Advertisement has neighbouring hosts on one of
                          its connected links, and the information about
                          these adjacencies shall be distributed within
                          this LSA, the Host Neighbours option has to be
                          present.  This option can appear several times
                          within one LSA.

   Future versions of this protocol may define new option types.
   Receivers must silently ignore any options they do not recognize and
   continue processing the message.


4.2.2 Options Formats

   Routing Information messages include zero or more options, some of
   which may appear multiple times in the same message.  Like in
   Neighbour Discovery messages also in Routing Information messages all
   options are of the form:

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |    Length     |              ...              |
   +---------------+---------------+-------------------------------+
   |                              ...                              |



Fritsche, Seifert       Expires May 1998                       [Page 37]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Fields:

      Type:               8-bit identifier of the type of option.  The
                          options defined here for Routing Information
                          ICMPv6 messages are:

                          Option Name                 Type

                          Router Neighbours           7
                          Host Neighbours             8

      Length:             8-bit unsigned integer.  The length of the
                          option in units of 8 octets.  The value 0 is
                          invalid.  Nodes must silently discard a
                          Routing Information packet that contains an
                          option with length zero.


4.2.2.1 Router Neighbours

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+---------------+---------------+
   |     Type      |    Length     |Num. of Routers|   Reserved    |
   +-+-------------+-+-------------+-+-------------+-+-------------+
   |S|  metric_1   |S|  metric_2...|S|  metric_3   |S|  metric_4   |
   +-+-------------+-+-------------+-+-------------+-+-------------+
   |                                                               |
   |                           Router_1                            |
   |                                                               |
   |                                                               |
   +---------------------------------------------------------------+
   |                                                               |
   |                           Router_2                            |


   Fields:

      Type:               7
      Length:             The length of the option in units of 8 octets.
                          There must be at least one router present in
                          this option.  Therefore the minimal value for
                          this field is 3.
      Number of Routers:  8-bit unsigned integer.  The value of this
                          field specifies the number    of routers
                          contained in this option.
      Reserved:           This field is unused.  It must be initialised
                          to zero by the sender and must be ignored by
                          the receiver.
      S:                  Supported flag.  If this flag is set to 1, the
                          router originating this Link State
                          Advertisement supports the following metric


Fritsche, Seifert       Expires May 1998                       [Page 38]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          for the neighbouring routers contained in this
                          option, else not.
      metric_i:           If the Supported flag assigned to this metric
                          is set to one, metric_i with i =1, 2, 3, 4
                          contains a 7-bit unsigned integer, which
                          specifies the metric value, over which all
                          routers contained in this option are reachable
                          from the router originating the respective
                          Link State Advertisement.  It is not defined
                          in this document, which physical sizes shall
                          be represented by metric_i.  One possibility
                          could be default metric, delay metric, cost
                          metric and error metric.  It only has to be
                          guaranteed, that all router in the routing
                          area use the same metric interpretation.
      Router_i:           This option contains the IPv6 addresses of the
                          respective neighbouring routers, on behalf of
                          which these routers will distribute their Link
                          State Advertisements.  These addresses are
                          contained in the LSA information option of the
                          Router Advertisements of these neighbours, or,
                          if this option is not present, they are the
                          same addresses, which are contained as Source
                          Addresses in the Router Advertisements and
                          which are stored in the local adjacency
                          database.  All routers listed here are
                          reachable from this node over the metrics
                          specified in this option.
                          Also a router lists herein all IPv6 unicast
                          addresses, which itself has assigned to any of
                          its interfaces.  Since these are local
                          addresses, all metric values have to be zero.


4.2.2.2 Host Neighbours

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+---------------+---------------+
   |     Type      |    Length     | Num. of Hosts |   Reserved    |
   +-+-------------+-+-------------+-+-------------+-+-------------+
   |S|  metric_1   |S|  metric_2...|S|  metric_3   |S|  metric_4   |
   +-+-------------+-+-------------+-+-------------+-+-------------+
   |                                                               |
   |                            Host_1                             |
   |                                                               |
   |                                                               |
   +---------------------------------------------------------------+
   |                                                               |
   |                            Host_2                            |




Fritsche, Seifert       Expires May 1998                       [Page 39]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Fields:

      Type:               8
      Length:             The length of the option in units of 8 octets.
                          There must be at least one host present in
                          this option.  Therefore the minimal value for
                          this field is 3.
      Number of Hosts:    8-bit unsigned integer.  The value of this
                          field specifies the number of hosts contained
                          in this option.
      Reserved:           This field is unused.  It must be initialised
                          to zero by the sender and must be ignored by
                          the receiver.
      S:                  Supported flag.  If this flag is set to 1, the
                          router originating this Link State
                          Advertisement supports the following metric
                          for the neighbouring hosts contained in this
                          option, else not.
      metric_i:           If the Supported flag assigned to this metric
                          is set to one, metric_i with i =1, 2, 3, 4
                          contains a 7-bit unsigned integer, which
                          specifies the metric value, over which all
                          hosts contained in this option are reachable
                          from the router originating the respective
                          Link State Advertisement.  It is not defined
                          in this document, which physical sizes shall
                          be represented by metric_i.  One possibility
                          could be default metric, delay metric, cost
                          metric and error metric.  It only has to be
                          guaranteed, that all router in the routing
                          area use the same metric interpretation.
      Host_i:             The IPv6 addresses of the respective
                          neighbouring hosts.  These are the same
                          addresses, which are contained as Source
                          Addresses in the Host Advertisements from
                          these neighbours and which are stored in the
                          local adjacency database.  All hosts listed
                          here are reachable from this node over the
                          metrics specified in this option.


4.3 Validation of the used ICMPv6 messages

   This section describes the vality checks, which have to be executed
   by the nodes receiving those Routing Information messages.


4.3.1 Validation of Link State Advertisements

   A router must silently discard any received Link State Advertisement
   message that does not satisfy all of the following validity checks:
   - IPv6 Source Address is an unicast address.  Routers must use as the


Fritsche, Seifert       Expires May 1998                       [Page 40]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


     source the IPv6 address, which they specify in the LSA information
     option of their Router Advertisements.  This enables all other
     routers in the routing area to uniquely assign a received LSA to
     the originating router.
   - The IPv6 Hop Limit field has a value of 255 or lower.  Each time a
     router forwards a Link State Advertisement, this field is
     decremented by 1.  If a router receives a LSA with this value set
     to zero, the packet isn't further forwarded.
   - If the message includes an IPv6 Authentication Header, the message
     authenticates correctly.
   - ICMPv6 Checksum is valid.
   - ICMPv6 Code is 0.
   - ICMPv6 length (derived from the IPv6 length) is 16 or more octets.
   - All included options have a length that is greater than zero.

   The contents of the Reserved field, and of any unrecognized options
   must be ignored. Future, backward-compatible changes to the protocol
   may specify the contents of the Reserved field or add new options;
   backward-incompatible changes may use different Code values.

   The contents of any defined options that are not specified to be used
   with Link State Advertisement messages must be ignored and the packet
   processed as normal.  The only defined options that may appear are
   the Router Neighbours option and the Host Neighbours option.

   A Link State Advertisement that passes the validity checks is called
   a "valid advertisement".


4.4 Functions for the Routing Information distribution

   This section will shortly summarize the functionality of the defined
   Routing Information distribution mechanism.  The functions described
   herein can only be applied on multicast-capable links.


4.4.1 Sending Link State Advertisements

   Each router in the routing area has to execute this function.  For
   this purpose the router first has to locally determine, on behalf of
   which of the IPv6 addresses assigned to its interfaces it will
   generate and distribute Link State Advertisements.  The chosen
   address has to be existent for the whole lifetime of the router.
   After that the router will inform all its neighbours about its
   selection by including the selected IPv6 address in the LSA
   information option of its Router Advertisements.  If this option
   isn't present in an advertisement, a receiving neighbouring router
   supposes, that the originating router will generate LSAs on behalf of
   the address contained as Source Address in the advertisement.

   Once a router has selected one of its IPv6 addresses, this address
   has to be used as Source Address in each LSA the router generates.


Fritsche, Seifert       Expires May 1998                       [Page 41]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   The reason for the use of Link State Advertisements is the need of a
   possibility to distribute the information collected by a router about
   the own local environment.  Therefore a LSA has to contain all
   reachable neighbour addresses of a router, the metric over which they
   are reachable and the information, if the address resides in a host
   or in a router.  In detail the following addresses have to be
   distributed in LSAs:
   - All reachable IPv6 interface addresses of neighbouring hosts.  A
     router is informed about these addresses by the receipt of Host
     Advertisement messages on its connected links and will have stored
     them in the local adjacency database.  They are marked as host
     addresses by including them in the Host Neighbours option of a LSA.
     The metric values for these addresses could be specified separately
     for each of them or there is a single set of metrics assigned to
     all addresses reachable from the router on a particular link.
   - All own IPv6 addresses assigned to any of the router's interfaces.
     This set consists of all unicast addresses, for which the router
     will receive IPv6 packets, and for which it will send Router
     Advertisements to its connected neighbours.  One of these addresses
     is the address on behalf of which the router generates its LSAs.
     They are marked as router addresses by including them in the Router
     Neighbours option of a LSA.  The metric values for these addresses
     are all set to 0, since they are direct reachable within the router
     itself.
   - All IPv6 addresses, on behalf of which neighbouring routers will
     generate their Link State Advertisements.  A router is informed
     about these addresses by examining the LSA information option
     contained in the received Router Advertisements of its neighbouring
     routers, or, in the absence of this option, by using the address
     contained in the Source Address field of these advertisements.  It
     is not necessary to include in the own LSAs all reachable IPv6
     addresses of a neighbouring router, because this information is
     already present in the LSAs of this neighbour.  Therefore it is
     sufficient, to include only the one address of the neighbouring
     router, which unequivocally helps to locate the LSAs generated from
     this neighbour.  This address is exactly the one distributed in the
     LSA information option of the neighbour's Router Advertisements.
     The metric values for these addresses could be specified separately
     for each of them or there is a single set of metrics assigned to
     all addresses reachable from the router on a particular link.

   If not all of these addresses fit into a single Link State
   Advertisement, the router has to generate more of them, which can all
   be distinguished by having a different value for the LSA Number
   assigned.  If the router retransmits a LSA, the value for the LSA
   Number has to remain unchanged.  Each of the addresses contained in
   the preceding LSA version , which is still reachable by the router,
   also have to be present in any retransmitted LSA version.  Newly
   discovered addresses have to be added to a LSA, which has still
   enough space for an additional Neighbour option.  If all existing
   LSAs are already full, a new LSA having a still unused LSA Number
   assigned, has to be generated.  If there was a change in the contents


Fritsche, Seifert       Expires May 1998                       [Page 42]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   of a LSA or if the LSA is transmitted the first time, the router has
   to set the Change flag to 1, else this flag shall be 0.

   To mark its actual version, a LSA contains a Sequence Number.  This
   number is set to 1, if the LSA is transmitted the first time.  Each
   time it is retransmitted, this number has to be increased by 1, that
   is the higher the Sequence Number of a LSA the newer is its contents.
   Therefore it is important, that all routers keep track with the
   Sequence Numbers of all LSAs they receive, since this is the only
   possibility to determine, if the received LSA version shall replace
   the stored one or not.

   In the following circumstances a router has to transmit its locally
   generated LSAs:
   - If a node starts to act as a router, it has to generate and
     transmit own LSAs containing all its reachable neighbour addresses.
     Each time the retransmission timer of these LSAs expires, the
     router has to flood all of them on each connected circuit.  This
     flooding could be done either by addressing the LSAs to the
     all-router multicast address on a circuit, where this is possible,
     or by sending the LSAs separately to each reachable address on the
     circuit, which resides in a neighbouring router.
   - If the contents of a single LSA change, that is for example a new
     neighbour is included in this LSA or the metric of an already
     existing neighbour has changed, this LSA has to be flooded on all
     circuits.
   - If a router knows, that it will stop acting as a router in some
     time, it shall flood all its LSAs with the Holding Time set to its
     remaining lifetime.  This mechanism accelerates the deletion of
     LSAs generated by a not longer existent router in the databases of
     the other routers.

   Additionally a router, which discovers a new neighbouring router, has
   to send all stored LSAs, that is the own LSAs and the ones generated
   by other routers, to this new adjacency in order to enable a fast
   synchronisation of the new node.  In this case and in some of the
   cases listed above it could be advantageous to delay the immediate
   transmission of LSAs in order to avoid bursts on the particular
   circuits.  A detailed mechanism for delaying these transmissions is
   not scope of this document.

   To avoid unnecessary sending of LSAs, a router can decide to transmit
   a LSA only on those circuits, on which it has already discovered
   reachable router adjacencies.


4.4.2 Receiving Link State Advertisements

   A router receiving a Link State Advertisement first has to execute
   the validation checks for this message.  If it has received a valid
   advertisement, it has to examine, if the LSA contains newer
   information than the one stored in the local Link State database.


Fritsche, Seifert       Expires May 1998                       [Page 43]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   This would be true in the following cases:
   - There is no version of a Link State Advertisement from the same
     Source Address with the same LSA Number stored in the local
     database.  If the Holding Time of the LSA is 0, the router shall
     discard the advertisement.  Else the router has to store a copy of
     this advertisement along with the specified Source Address in its
     database and flood the received LSA on all connected circuits
     except the one, from which it has been received.
   - There is already a version of a LSA from the same Source Address
     with the same LSA Number stored in the local database, the Sequence
     Number of the received version is higher than the one of the
     stored, and the Holding Time of the received LSA is 0.  The router
     shall flood the received LSA on all connected circuits except the
     one, from which it has been received.  Afterwards it shall delete
     the stored LSA version.
   - There is already a version of a LSA from the same Source Address
     with the same LSA Number stored in the local database, and the
     Sequence Number of the received version is equal to the number of
     the stored version increased by 1.  If the Change flag of the
     received version is set to one, the router has to replace the
     stored LSA with the received one, else it only has to replace the
     Holding Time and the Sequence Number of the stored LSA with the one
     contained in the received version.  Independent from the value of
     the Change flag the router has to flood the received LSA on all
     connected circuits except the one, from which it has been received.
   - There is already a version of a LSA from the same Source Address
     with the same LSA Number stored in the local database, and the
     Sequence Number of the received version is higher than the number
     of the stored version increased by 1.  In this case the router has
     to compare the contents of the options part of both LSA versions
     octet for octet.  If it has changed, the router has to replace the
     stored LSA with the received one, else it only has to replace the
     Holding Time and the Sequence Number of the stored LSA with the one
     contained in the received version.  Independent from the result of
     the comparison the router has to flood the received LSA on all
     connected circuits except the one, from which it has been received.

   In all other cases the Sequence Number of the stored version is equal
   or higher than the one of the received LSA, that is the received
   version contains no newer information.  Therefore a router has to
   discard the LSA.

   If the Sequence Number of the stored LSA is really higher, a router
   can decide to flood a copy of its stored newer information on the
   circuit, on which the older LSA version has been received.

   If a LSA has been forwarded by a router, the Hop Limit field has to
   be decremented and the Destination Address shall be modified
   appropriately.  Also the router shall decrement the Holding Time of
   the LSA by the amount of time in seconds, which is estimated to be
   needed by the LSA on its way from this router to the next hop.  All
   other contents of the LSA have to remain unchanged.


Fritsche, Seifert       Expires May 1998                       [Page 44]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   To avoid unnecessary sending of LSAs, a router can decide to transmit
   a LSA only on those circuits, on which it has already discovered
   reachable router adjacencies.

4.4.3 Ageing of Routing Information

   Every router decrements continuously the Holding Times of all LSAs
   stored in its local Link State database, which it has received from
   the neighbouring routers.  If the Holding Time of a single LSA
   becomes zero, the router shall increment the Sequence Number of this
   LSA by 1 and flood the advertisement on all connected circuits.
  After this procedure the LSA shall be deleted from the local database.

   This mechanism helps to synchronize the deletion of LSAs throughout
   the routing area.


4.5 Routing Information on non-multicast-capable links

   For the distribution of Routing Information on non-multicast-capable
   links the mechanism described in the previous section has to be
   modified a little bit.  This section discusses one possibility, which
   would realize this.

   Since there is no all-routers multicast address on these links, the
   flooding of a Link State Advertisement means the transmission of a
   copy of the respective LSA to each router on the link, which is
   stored as reachable neighbour in the local adjacency database.  As
   Destination Address of the LSA the IPv6 address of the neighbouring
   router on that link shall be used.  These addresses have to be
   specified in a manual configured list as described above in
   "Neighbour Discovery on non-multicast-capable links".

   A second modification affects the periodical retransmission of LSAs.
   If there are for example some routers of the routing area connected
   over non-multicast-capable links, each periodically retransmitted LSA
   from any router in the area also has to be transmitted over these
   links.  In an area with a large number of routers this would cause
   these links to remain permanently in the busy state and to produce
   therefore monetary costs, even in the case, if there were no topology
   changes in the routing area and the transmitted LSAs contain no new
   information.

   One way to avoid these unnecessary costs is to transmit a LSA over a
   non-multicast-capable link only in the case, if the information
   contained in the LSA is really new, that is LSAs are transmitted over
   these links only triggered by event and not periodically.  Such an
   event occurs, if
   - a LSA is transmitted for the first time, that is the LSA isn't
     already stored in the local Link State database, and the Holding
     Time isn't 0.
   - the Sequence Number of the LSA is equal to the Sequence Number of


Fritsche, Seifert       Expires May 1998                       [Page 45]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


     the already stored version increased by 1, and the Change flag is
     1.
   - the Sequence Number of the LSA is higher than the Sequence Number
     of the already stored version increased by 1, and the contents of
     the LSA have really changed.

   Using this mechanism the Holding Time of a LSA, which has been
   transmitted at least one time over a non-multicast-capable link,
   could mistakenly expire, because only versions of the LSA, which
   contain really new information, will be retransmitted over the
   non-multicast-capable links and cause a resetting of the Holding
   Time.

   To avoid this effect each LSA, which has been at least one time
   transmitted over a nonmulticast-capable link, must be marked.  A
   router must not decrement the Holding Time of any marked LSA, which
   is stored in its local database.  Such a LSA can only be deleted from
   a database by receiving explicitly a version of this LSA with higher
   Sequence Number and a Holding Time set to 0.

   Nevertheless there remains a problem, if the explicit deletion of a
   LSA, that is the advertisement with the Holding Time set to 0, cannot
   be received in particular parts of the routing area.  This effect can
   occur in a temporary partitioned network.  If in the temporary
   unreachable part the expired LSA was marked as transmitted over
   non-multicast-capable links, the Holding Time will not be locally
   decremented.  Since the explicit deletion has not been received, this
   LSA mistakenly remains in the respective databases.

   The probability of this unwanted effect is very low for networks with
   not too high transmission errors.  To remove also these residual
   errors, it would be possible, that some of the periodically
   retransmitted LSAs of a router are also transmitted over
   nonmulticast-capable links, independent if they contain new
   information or not.  For example a router could mark a retransmitted
   LSA version each Nth retransmission interval.  Other routers
   receiving these marked versions must flood them also on non-multicast
   capable links.  Therefore routers having LSAs stored in their
   databases, which have been at least one time transmitted over a
   non-multicast-capable link, can now also use the Holding Time field
   of these advertisements.  The only modification is, that these LSAs
   are only allowed to be deleted from the database, if the Holding
   Timer has expired the Nth time without receiving a new version of
   the LSA.

   Summarizing all these aspects there is also a way for the
   distribution of Routing Information on non-multicast-capable links
   using the same ICMPv6 packet formats and very similar procedures as
   for multicast-capable links.  Therefore each node in the routing
   area, independent over which kind of link it is connected to the
   network, will be able to store the same dynamically updated
   information about the routing area.  This condition is absolutely


Fritsche, Seifert       Expires May 1998                       [Page 46]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   necessary for the use of efficient dynamical routing algorithms.


4.6 Unicast Routing Algorithm


4.6.1 Introduction

   The algorithm used herein for the calculation of a routing tree for
   IPv6 unicast addresses was invented by Dijkstra and is called
   "shortest path first" (SPF) algorithm.  The algorithm uses the
   information obtained from the Neighbour Discovery and stored in the
   adjacency database and also the information obtained from the Routing
   Information distribution and stored in the Link State database.  It
   is executed separately from each router and for each supported
   routing metric.  As result it offers a so called forwarding database
   for the executing router.  This database contains for each reachable
   IPv6 address residing in a router or a host of the routing area the
   next hop, which shall be used by the executing router to transmit a
   data packet on the shortest path to this node.

   Normally the original SPF algorithm does not support load splitting
   over multiple paths, but on demand it can be modified to permit load
   splitting by identifying a set of equal cost paths to each
   destination node rather than a single least cost path.

   During the execution of the algorithm the following two databases are
   used:
   - PATHS: This represents an acyclic directed graph of shortest paths
     from the router S performing the calculation.  It is stored as a
     set of triples of the form <N, d(N), Adj(N)>, where
       o N is a reachable IPv6 unicast address residing in the routing
         area. This could be the address of a whole node, or of a single
         interface of a node.
       o d(N) is N's distance from S, that is the total metric from S to
         N.
       o Adj(N) is the reachable adjacency, that S may use for
         forwarding to N.  Adj(N) has to be the node N itself, or it has
         to be another router, since host adjacencies cannot be used for
         forwarding to other destinations.  At this place it would be
         also possible, to store a set of reachable adjacencies to be
         used from S for reaching N with the same costs.
       If a node is placed on PATHS, the path designated by its position
       in the graph is guaranteed to be a shortest path.  Therefore
       PATHS can be used after finishing the execution of the routing
       algorithm as forwarding database.
   - TENT: This is a list of triples of the form <N, d(N), Adj(N)>,
     where N, d(N), Adj(N) are as defined above for PATHS.
       TENT can intuitively be thought of as tentative placement of a
       node in PATHS.  In other words, the triple <N, x, A> in TENT
       means that if N were placed in PATHS, d(N) would be x, but N
       cannot be placed in PATHS until it is guaranteed, that no path


Fritsche, Seifert       Expires May 1998                       [Page 47]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


       shorter than x exists.

   This algorithm is a quite good solution for routing unicast packets,
   because
   - it is a dynamical routing algorithm,
   - the calculation of the routing algorithm is not centralized,
   - it avoids the generation of infinite loops during the routing of
     unicast packets,
   - it doesn't have a too high computing complexity, and
   - it calculates the optimal (shortest) path from a source to a
     destination for a given metric.


4.6.2 Overview of the algorithm

   The basic algorithm, which builds PATHS from scratch, starts by
   putting all unicast addresses of the node doing the computation on
   PATHS, since there could be no shorter path to SELF.  TENT is then
   preloaded from the local adjacency database.

   Note, that a node is not placed in PATHS unless no shorter path to
   that node exists.  When a node N is placed in PATHS, the path to each
   neighbour M of N, through N, is examined, as the path to N plus the
   link from N to M.  If <M, *, *> is already in PATHS, this new paths
   will be longer, and thus ignored.

   If <M, *, *> is in TENT, and the new path is shorter, the old entry
   is removed from TENT and the new path is placed in TENT.  If the new
   path has the same length as the one in TENT, or if it is longer, the
   old entry shall be kept unchanged in TENT.  If load splitting would
   be supported, and there would be a path with equal length in TENT,
   then the set of possible adjacencies to M {Adj(M)} would be the union
   of the old set in TENT and the new set {Adj(N)}.  If M is not in
   TENT, the path is now added to TENT.

   Next the algorithm finds the triple <N, x, Adj(N)> in TENT, with
   minimal x.  For this step it is recommendable, to keep the entries of
   TENT stored in a sorted order, starting with the entry with the
   lowest distance x.

   N is placed in PATHS.  Here the executing router knows, that no path
   to N can be shorter than x at this point, because all paths through
   nodes already in PATHS have already been considered, and paths
   through nodes in TENT will have to be greater than x, because x is
   minimal in TENT.

   When TENT is empty, PATHS is complete and can be used as forwarding
   database.






Fritsche, Seifert       Expires May 1998                       [Page 48]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


4.6.3 Steps of the algorithm

   There are three main steps of the algorithm separable:
   o Initialisation (Step 0)
   o Evaluation of the LSAs (Step 1)
   o Selection of the shortest distance (Step 2).

   In the following the single steps are described in more detail.
   Step 0:
   a) Initialise TENT and PATHS as empty.
   b) Add <SELF, 0, W> to PATHS, where SELF are the IPv6 addresses of
      the computing router and W is a special value indicating traffic
      to SELF is passed up to the Transport Layer.
   c) Now pre-load TENT with all neighbour nodes N of SELF.  This could
      be done by reading the local adjacency database.  If the node N is
      a router, the IPv6 address on behalf of which N will generate its
      LSAs (contained as LSA information option in the Router
      Advertisements of N) is stored for N.  If N is a host, the Source
      Address of the Host Advertisements, which caused the creation of
      the adjacency, is used.  The distance x to the neighbour N is the
      metric stored with the respective adjacency.  Adj(N) is the
      adjacency itself to the neighbour node N, that is the adjacency,
      which has been stored in the adjacency database as result of the
      receipt of an advertisement.  Each entry made to TENT must be
      marked as being either a router or a host to enable the check at
      the end of Step 2 to be made correctly.
   d) If a neighbour node is already in TENT, compare the distance of
      the old and the new entry and keep only the entry with the shorter
      distance.
   e) If a neighbour node is not in TENT, then place it now.
   f) If all neighbour nodes contained in the local adjacency database
      are examined, go to Step 2.

   Step 1:
   a) Now examine all neighbour nodes N listed in all LSAs of P, the
      node just placed in PATHS (P has been placed in PATHS during the
      last execution of Step 2).  The distance x of a node N to the
      executing router SELF is the metric of the link from P to N plus
      the distance from SELF to P.  The adjacency to N, Adj(N), is the
      same as the one to P, Adj(P), because N could be reached from the
      computing router over P.
   b) If a neighbour node is already in PATHS, then do nothing.
   c) If a neighbour node is already in TENT, compare the distances of
      the old and the new entry and keep only the entry with the shorter
      distance.
   d) If a neighbour node is not in TENT, then place it now.

   Step 2:
   a) If TENT is empty, then stop the computation (now all reachable
      nodes of the routing area are placed in PATHS).
   b) Else find the element <P, x, Adj(P)> for which the distance x from
      the executing router SELF is the shortest among all entries in


Fritsche, Seifert       Expires May 1998                       [Page 49]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


      TENT.
   c) Remove P from TENT.
   d) Add <P, d(N), Adj(P)> to PATHS, with d(n) = x.
   e) If the node just added to PATHS was a host, then go back to Step
      2, else go to Step 1.  In the second case of e) a router has been
      added to PATHS.  Before searching the next nearest node to the
      executing router, the adjacencies of the just added router P have
      to be examined by checking P's LSAs.

   When the algorithm is finished, PATHS can be used as a unicast
   forwarding database containing all the nodes of the routing area,
   which are reachable from the computing router.










































Fritsche, Seifert       Expires May 1998                       [Page 50]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


5 Dynamical routing of multicast packets in IPv6


5.1 Introduction

   The main goal for the use of multicasting in a network is to save
   bandwidth when transmitting data from a source to a group of
   receivers.  Using unicasting the source would have to transmit a
   single copy of each data packet to each of the receivers.  Many of
   these copies probably would be transmitted unnecessarily over the
   same circuits.

   This waste of bandwidth can be avoided, if the data is addressed to
   a multicast address instead of a set of unicast addresses.  Each
   router, which receives such a multicast packet, has to decide
   locally, if the data has to be sent over only one circuit towards
   the intended receivers, or if the packet has to be copied and
   transmitted over more circuits.  This method guarantees, that on each
   circuit only one copy of a packet with the same content is
   transmitted.

   To do this local decision, each router has to be informed about the
   contents of a multicast address, that is it has to know exactly,
   which set of IPv6 unicast addresses are member of an Address Group
   specified by a particular multicast address.

   This proposal defines three ICMPv6 packet formats, which can be used
   for the modification of these Address Groups and their distribution
   over the network.  These are Host Group Membership Queries, which are
   used to send group information from hosts to routers, Router Group
   Membership Reports, which transmit group information from routers to
   hosts, and Router Group Distribution Messages, which distribute group
   information among the routers themselves.  The exact format of these
   packets and their use is described in detail later in this chapter.
   All those packets aren't transmitted periodically, but only by event,
   that is there must be a modification of an Address Group.  This is
   done in order to use not to much of the bandwidth saved by
   multicasting for additional necessary control information.

   Also this proposal defines two different modes of distributing group
   information, the mandatory and the optional mode.

   In the mandatory mode hosts have only the possibility, to join or to
   leave an existing Address Group.  They are not informed by means of
   this proposal about the Address Groups existing at a particular
   moment and their members, that is hosts don't store group information
   in a local database.  This knowledge is only present in routers.
   Also Host Group Membership Queries, Router Group Membership Reports
   and Router Group Distribution Messages don't carry the new complete
   composition of a modified Address Group, but only the changes between
   the new and the old group version.  Executing the mandatory mode
   restricts the security aspects of hosts, since they have no


Fritsche, Seifert       Expires May 1998                       [Page 51]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   information about the possible receivers of a packet destined for a
   multicast address.  Additionally this mode increases the risk of
   different group information stored in the group databases of the
   routers.  If there is one time a difference in a group composition
   between two databases, this difference probably will continue, since
   all following ICMPv6 packets referring to this particular group
   contain only new modifications, but no complete composition of the
   Address Group itself.  The advantage of the mandatory mode is, that
   only this information is exchanged, which is absolutely necessary
   for enabling the correct routing of multicast packets, and therefore
   the maximum amount of bandwidth is saved.

   In the optional mode hosts and routers have the same possibilities of
   modifying Address Groups.  Host Group Membership Queries, Router
   Group Membership Reports and Router Group Distribution Messages
   always contain a complete composition of the modified Address Group,
   what enables a synchronisation of all group databases referring to
   the Address Group specified in the respective ICMPv6 packet.  Also
   routers exchange with hosts the same group information as among
   themselves.  Therefore hosts are fully informed about all existing
   Address Groups and their composition, and know exactly, which group
   of receivers a multicast packet probably will receive.

   To provide the interoperability between nodes exchanging ICMPv6 group
   information it has to be guaranteed, that all nodes participating in
   this exchange support the same mode.

   To mark in an ICMPv6 group information packet, if it contains a
   complete group composition, or only one or more changes of an already
   existing Address Group, a so called Modification Flag is present in
   each packet.  This flag can have one of the following values:

   - 0: 0 means, that the respective ICMPv6 packet contains a complete
     group composition.  In the optional mode only packets with the
     Modification Flag set to this value are exchanged.

   - 1: 1 means, that the respective ICMPv6 packet contains one or more
     IPv6 addresses, which want to join to an existing Address Group.
     In the mandatory mode between hosts and routers only packets with
     the Modification Flag set to 1 or 2 are exchanged.  Routers
     exchange in this mode among themselves also packets with the
     Modification Flag set to 0 for the creation of new Address Groups
     and the deletion of existing ones, but they do not use this flag
     set to zero for the modification of existing groups.

   - 2: 2 means, that the respective ICMPv6 packet contains one or more
     IPv6 addresses, which want to leave an existing Address Group.  In
     the mandatory mode between hosts and routers only packets with the
     Modification Flag set to 1 or 2 are exchanged.  Routers exchange in
     this mode among themselves also packets with the Modification Flag
     set to 0 for the creation of new Address Groups and the deletion of
     existing ones, but they do not use this flag set to zero for the


Fritsche, Seifert       Expires May 1998                       [Page 52]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


     modification of existing groups.


5.2 Functions needed for multicasting in IPv6


5.2.1 Overview

   This section lists the new functions needed by routers and hosts to
   support the distribution of Address Group information.  As mentioned
   above, the distribution takes place by exchanging ICMPv6 packets
   between nodes, which contain information about a particular Address
   Group.  The format of these control packets is specified in the next
   section.  Each packet contains the IPv6 Multicast Address of the
   group, to which this information refers, and a Sequence Number, which
   indicates the topicality of the information, that is information with
   higher Sequence Number replaces information with lower one.  Also
   each control packet includes a Modification Flag, which specifies, if
   there is a complete composition of an Address Group present in a
   control packet (Modification Flag is 0), or only a part of group
   members, which newly joined (Modification Flag is 1) or left
   (Modification Flag is 2) an existing group.

   Which of the functions described in this chapter are supported by
   routers and hosts depends on the respective mode, in which the
   distribution of multicast information is executed in a particular
   node.

   All nodes in the area, in which Group Address information shall be
   distributed, have to do this in the same mode.  If a node receives
   control packets indicating, that the originator supports an other
   mode, it shall discard these information.


5.2.2 Create Address Group Function

   This function is executed by hosts supporting the optional mode and
   by routers supporting either the optional or the mandatory mode.  If
   a node is informed about the new generation of an Address Group, it
   distributes the information over its connected subnetworks by
   executing the Create Address Group Function.  A creation of a new
   group is detected, either if information about an Address Group,
   which isn't locally stored, has been received from an other node, and
   this group isn't empty, or if the group creation is initiated
   explicitly by the local management.


5.2.2.1 Create Address Group Function for hosts

   If a host receives by means of its management the information about
   the generation of a new Address Group, it transmits the group
   composition using a Host Group Membership Query to one of its


Fritsche, Seifert       Expires May 1998                       [Page 53]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   connected routers.  In this query the Sequence Number is set to 1 and
   the packet contains the complete composition of the group, why the
   Modification Flag is set to 0.  The Number of Group Members field
   contains the number of all members of this Address Group.

   The transmitted Host Group Membership Query will be acknowledged by a
   Router Group Membership Report from the addressed router with the
   same informational contents.


5.2.2.2 Create Address Group Function for routers

   A router can be informed about a newly generated group by means of
   its management, by the receipt of a Router Group Distribution Message
   or in the optional mode also by the receipt of a Host Group
   Membership Query.

   Supporting the mandatory mode a router distributes this information
   to all its connected neighbour routers by Router Group Distribution
   Messages.  If the router itself has received the information by an
   other Router Group Distribution Message, it doesn't send back a
   message to the originating router.

   Supporting the optional mode a router additionally distributes the
   newly created Address Group to all its connected hosts using Router
   Group Membership Reports.  If the router itself was informed about
   the group by a Host Group Membership Query, the return of a Router
   Group Membership Report with the same contents also back to the
   originator of the query can be seen as an acknowledgement.

   In Router Group Distribution Messages as well as in Router Group
   Membership Reports the Sequence Number is set to 1 and the packet
   contains the complete composition of the group, why the Modification
   Flag is set to 0.  The Number of Group Members field contains the
   number of all members of this Address Group.


5.2.3 Modify Address Group Function

   This function is executed by hosts and routers supporting the
   optional mode.  If a node is informed about the modification of an
   already stored Address Group, it distributes the information over its
   connected subnetworks by executing the Modify Address Group Function.
   A modification of an existing group is detected, either if the
   Sequence Number of a stored group version is lower than the Sequence
   Number of a newly received group version from an other node, and this
   new group version isn't empty, or if the group modification is
   initiated explicitly by the local management.






Fritsche, Seifert       Expires May 1998                       [Page 54]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


5.2.3.1 Modify Address Group Function for hosts

   If a host receives by means of its management the information about
   the modification of an already stored Address Group, it transmits the
   modified group composition using a Host Group Membership Query to
   one of its connected routers.  In this query the Sequence Number is
   set to the value of the Sequence Number locally stored for this group
   increased by 1, and the packet contains the complete composition of
   the group, why the Modification Flag is set to 0.  The Number of
   Group Members field contains the number of all members of this
   modified Address Group.

   The transmitted Host Group Membership Query will be acknowledged by a
   Router Group Membership Report from the addressed router with the
   same informational contents.


5.2.3.2 Modify Address Group Function for routers

   Only a router supporting the optional mode can be informed about a
   modified group by means of its management, by the receipt of a Router
   Group Distribution Message or by the receipt of a Host Group
   Membership Query.

   A router distributes this information to all its connected neighbour
   routers by Router Group Distribution Messages.  If the router itself
   has received the information by an other Router Group Distribution
   Message, it doesn't send back a message to the originating router.

   Additionally a router transmits the modified Address Group to all its
   connected hosts using Router Group Membership Reports.  If the router
   itself was informed about the modification by a Host Group Membership
   Query, the return of a Router Group Membership Report with the same
   contents also back to the originator of the query can be seen as an
   acknowledgement.

   In Router Group Distribution Messages as well as in Router Group
   Membership Reports the Sequence Number is set to the new value of the
   Sequence Number or, in the case of group modification by the local
   management, to the value locally stored for the old group version
   increased by 1.  The packet contains the complete new composition of
   the group, why the Modification Flag is set to 0.  The Number of
   Group Members field contains the number of all members of this
   Address Group.


5.2.4 Delete Address Group Function

   This function is executed by hosts supporting the optional mode and
   by routers supporting either the optional or the mandatory mode.  If
   a node is informed about the deletion of an Address Group, it
   distributes the information over its connected subnetworks by


Fritsche, Seifert       Expires May 1998                       [Page 55]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   executing the Delete Address Group Function.  A deletion of a group
   is detected, either if the Sequence Number of a stored group version
   is lower than the Sequence Number of a newly received group version
   from an other node, and the new group version is empty, or if the
   group deletion is initiated explicitly by the local management.


5.2.4.1 Delete Address Group Function for hosts

   If a host receives by means of its management the information about
   the deletion of an already stored Address Group, it transmits the
   information about this event using a Host Group Membership Query to
   one of its connected routers.  In this query the Sequence Number is
   set to the value of the Sequence Number locally stored for this group
   increased by 1, and the packet contains the complete composition of
   the group, why the Modification Flag is set to 0.  Of course, in this
   case the group composition consists only of the IPv6 Multicast
   Address of the Address Group.  The Number of Group Members field
   contains the number of all members of the deleted group, that is here
   zero.

   The transmitted Host Group Membership Query will be acknowledged by a
   Router Group Membership Report from the addressed router with the
   same informational contents.


5.2.4.2 Delete Address Group Function for routers

   A router can be informed about a deleted group by means of its
   management, by the receipt of a Router Group Distribution Message or
   in the optional mode also by the receipt of a Host Group Membership
   Query.

   Supporting the mandatory mode a router distributes this information
   to all its connected neighbour routers by Router Group Distribution
   Messages.  If the router itself has received the information by an
   other Router Group Distribution Message, it doesn't send back a
   message to the originating router.

   Supporting the optional mode a router additionally distributes the
   information about the deleted Address Group to all its connected
   hosts using Router Group Membership Reports.  If the router itself
   was informed about the deletion by a Host Group Membership Query, the
   return of a Router Group Membership Report with the same contents
   also back to the originator of the query can be seen as an
   acknowledgement.

   In Router Group Distribution Messages as well as in Router Group
   Membership Reports the Sequence Number is set to the new value of the
   Sequence Number or, in the case of group modification by the local
   management, to the value locally stored for the old group version
   increased by 1.  The packet contains the complete composition of the


Fritsche, Seifert       Expires May 1998                       [Page 56]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   group, why the Modification Flag is set to 0.  Of course, in this
   case the group composition consists only of the IPv6 Multicast
   Address of the Address Group.  The Number of Group Members field
   contains the number of all members of this Address Group, that is
   here zero.


5.2.5 Join Address Group Function

   This function is executed only by routers and hosts supporting the
   mandatory mode.  If a node has the information about some IPv6
   addresses, which want to join to an existing Address Group, it
   distributes the information over its connected subnetworks by
   executing the Join Address Group Function.  The joining to a group is
   detected, either if the Sequence Number of a stored group version is
   lower than the Sequence Number of a newly received Router Group
   Distribution Message from an other router about some new IPv6
   addresses, which want to become member of the stored group, or if a
   Host Group Membership Query has been received containing one or more
   joining group members (in this case the Sequence Number is not
   important, since hosts have no knowledge about the actual value in
   this mode), or finally if the group joining is initiated explicitly
   by the local management.


5.2.5.1 Join Address Group Function for hosts

   If a host receives by means of its management the information about
   some IPv6 addresses, which want to join to an already stored Address
   Group, it transmits the information about this event using a Host
   Group Membership Query to one of its connected routers.  In this
   query the Sequence Number is set to zero, since hosts don't store any
   information about groups in the mandatory mode.  The packet contains
   only the IPv6 addresses of the joining group members, why the
   Modification Flag is set to 1.  Of course, additionally the IPv6
   Multicast Address itself is present like in any Host Group Membership
   Query.  The Number of Group Members field contains the number of all
   members, which are newly added to the respective group.

   The transmitted Host Group Membership Query will be acknowledged by a
   Router Group Membership Report from the addressed router with the
   same informational contents.


5.2.5.2 Join Address Group Function for routers

   A router can be informed about one or more IPv6 addresses, which want
   to join to an already stored Address Group, by means of its
   management, by the receipt of a Router Group Distribution Message or
   by the receipt of a Host Group Membership Query.

   A router distributes this information to all its connected neighbour


Fritsche, Seifert       Expires May 1998                       [Page 57]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   routers by Router Group Distribution Messages.  If the router itself
   has received the information by an other Router Group Distribution
   Message, it doesn't send back a message to the originating router.

   If the router has received the information by a Host Group Membership
   Query, it additionally transmits the information about the newly
   joining group members back to the originator of the query using a
   Router Group Membership Report, what can be seen as an
   acknowledgement.  In all other cases hosts are not informed about new
   members, since in the mandatory mode a host doesn't store any group
   information.

   In Router Group Distribution Messages the Sequence Number is set to
   the new value of the Sequence Number or, in the case of initiating
   the joining of new group members by the local management, to the
   value locally stored for the old group version increased by 1.  In
   Router Group Membership Reports the Sequence Number is set to zero,
   since it is not used from hosts.  The distribution message and the
   membership report packets contain only the IPv6 addresses of the
   joining group members, why the Modification Flag is set to 1.  Of
   course, additionally the IPv6 Multicast Address itself is present
   like in any packet.  The Number of Group Members field contains the
   number of all members, which are newly added to the respective group.


5.2.6 Leave Address Group Function

   This function is executed only by routers and hosts supporting the
   mandatory mode.  If a node has the information about some IPv6
   addresses, which want to leave an existing Address Group, it
   distributes the information over its connected subnetworks by
   executing the Leave Address Group Function.  The leaving from a group
   is detected, either if the Sequence Number of a stored group version
   is lower than the Sequence Number of a newly received Router Group
   Distribution Message from an other router about some IPv6 addresses,
   which want to leave the stored group, or if a Host Group Membership
   Query has been received containing one or more leaving group members
   (in this case the Sequence Number is not important, since hosts have
   no knowledge about the actual value in this mode), or finally if the
   group leaving is initiated explicitly by the local management.


5.2.6.1 Leave Address Group Function for hosts

   If a host receives by means of its management the information about
   some IPv6 addresses, which want to leave an already stored Address
   Group, it transmits the information about this event using a Host
   Group Membership Query to one of its connected routers.  In this
   query the Sequence Number is set to zero, since hosts don't store any
   information about groups in the mandatory mode.  The packet contains
   only the IPv6 addresses of the leaving group members, why the
   Modification Flag is set to 2.  Of course, additionally the IPv6


Fritsche, Seifert       Expires May 1998                       [Page 58]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Multicast Address itself is present like in any Host Group Membership
   Query.  The Number of Group Members field contains the number of all
   members, which want to leave the respective group.

   The transmitted Host Group Membership Query will be acknowledged by a
   Router Group Membership Report from the addressed router with the
   same informational contents.


5.2.6.2 Leave Address Group Function for routers

   A router can be informed about one or more IPv6 addresses, which want
   to leave an already stored Address Group, by means of its management,
   by the receipt of a Router Group Distribution Message or by the
   receipt of a Host Group Membership Query.

   A router distributes this information to all its connected neighbour
   routers by Router Group Distribution Messages.  If the router itself
   has received the information by an other Router Group Distribution
   Message, it doesn't send back a message to the originating router.

   If the router has received the information by a Host Group Membership
   Query, it additionally transmit the information about the leaving
   group members back to the originator of the query using a Router
   Group Membership Report, what can be seen as an acknowledgement.  In
   all other cases hosts are not informed about leaving members, since
   in the mandatory mode a host doesn't store any group information.

   In Router Group Distribution Messages the Sequence Number is set to
   the new value of the Sequence Number or, in the case of initiating
   the leaving of group members by the local management, to the value
   locally stored for the old group version increased by 1.  In Router
   Group Membership Reports the Sequence Number is set to zero, since it
   is not used from hosts.  The distribution message and the membership
   report packets contain only the IPv6 addresses of the leaving group
   members, why the Modification Flag is set to 2.  Of course,
   additionally the IPv6 Multicast Address itself is present like in any
   packet.  The Number of Group Members field contains the number of all
   members, which want to leave the respective group.


5.2.7 Record Host Group Membership Query Function

   The Record Host Group Membership Query function is executed only from
   routers.  It receives the group information, which is distributed
   from hosts within Host Group Membership Queries, and updates the
   information in the local group database.

   A query is only processed by a router, if it was generated from a
   host supporting the same mode as the router.  This condition is kept
   in the following two cases:
   - The router supports the mandatory mode, and the received query


Fritsche, Seifert       Expires May 1998                       [Page 59]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


     contains information about one or more IPv6 addresses joining or
     leaving a locally stored Address Group, that is the Modification
     Flag of the query is set to 1 or 2.
   - The router supports the optional mode, and the received query
     contains information about the creation, the modification or the
     deletion of an Address Group, that is the Modification Flag is set
     to 0.

   If no one of these both conditions is kept, the query will be
   discarded without further action.

   If the router decides to process the query, it checks in the next
   step, whether the group information contained in this packet is newer
   than the one stored in the local group database.  This applies in the
   following four cases:
   - The query contains information about the creation of a group, which
     isn't already stored in the local group database.
   - The query contains information about the modification or deletion
     of an already locally stored group, and the Sequence Number of the
     query is higher than the one stored for this group.
   - The query contains information about one or more IPv6  addresses,
     which want to join to a locally stored Address Group.  If the
     addresses are already members of this group, the query isn't
     further processed.
   - The query contains information about one or more IPv6 addresses,
     which want to leave a locally stored Address Group.  If the
     addresses aren't member of this group, the query isn't further
     processed.

   If no one of these four conditions is kept, the query will be
   discarded without further action.

   Otherwise this new group composition information is locally stored in
   the group database.  If the router supports the mandatory mode, the
   query is acknowledged by sending a Router Group Membership Report
   with the same contents back to the host, which generated the query,
   and a Router Group Distribution Message containing the joining or
   leaving members is sent to all connected neighbouring routers.  If
   the router supports the optional mode, a Router Group Membership
   Report with the same contents is sent to all hosts on the subnetwork
   the query was received, and a Router Group Distribution Message
   containing the complete new group composition is sent to all
   connected neighbouring routers.  In this way also the host, which has
   generated the query, receives a copy of the Router Group Membership
   Report as an acknowledgement.


5.2.8 Record Router Group Membership Report Function

   The Record Router Group Membership Report function is executed only
   from hosts.  It receives the group composition information, which is
   distributed from routers within Router Group Membership Reports, and


Fritsche, Seifert       Expires May 1998                       [Page 60]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   updates the information in the local group database.

   A report is only processed by a host, if it was generated from a
   router supporting the same mode as the host.  This condition is kept
   in the following two cases:
   - The host supports the mandatory mode, and the received report
     contains information about one or more IPv6 addresses joining or
     leaving a locally stored Address Group, that is the Modification
     Flag of the report is set to 1 or 2.  This report has been sent by
     the router as an acknowledgement for a previously sent Host Group
     Membership Query.
   - The host supports the optional mode, and the received report
     contains information about the creation, the modification or the
     deletion of an Address Group, that is the Modification Flag is set
     to 0.

   If no one of these both condition is kept, the report will be
   discarded without further action.

   If the host decides to process the report, it checks in the next
   step, if the group composition information contained in this packet
   is newer than the one stored in the local group database.  This is
   only possible, if the host supports the optional mode.  In the
   mandatory mode such reports contain never new group composition
   information, but an acknowledgement for a previously sent Host Group
   Membership Query.  Therefore only in the following two cases newer
   group composition information is received:
   - The report contains information about the creation of a group,
     which isn't already stored in the local group database.
   - The report contains information about the modification or deletion
     of an already locally stored group, and the Sequence Number of the
     report is higher than the one stored for this group.

   If no one of these both conditions is kept, the report will be
   discarded without further action.

   Otherwise this new group composition information is locally stored in
   the group database.


5.2.9 Record Router Group Distribution Message Function

   The Record Router Group Distribution Message function is executed
   only from routers.  It receives the group information, which is
   distributed from other routers within Router Group Distribution
   Messages, and updates the information in the local group database.

   A message is only processed by a router, if it was generated from an
   other router supporting the same mode.  This condition is kept in the
   following two cases:
   - The receiving router supports the mandatory mode, and the received
     message contains either information about one or more IPv6


Fritsche, Seifert       Expires May 1998                       [Page 61]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


     addresses joining or leaving a locally stored Address Group, that
     is the Modification Flag of the message is set to 1 or 2, or it
     contains information about the creation or the deletion of an
     Address Group, that is the Modification Flag is 0.
   - The receiving router supports the optional mode, and the received
     message contains information about the creation, the modification
     or the deletion of an Address Group, that is the Modification Flag
    is set to 0.

   If no one of these both conditions is kept, the message will be
   discarded without further action.

   If the router decides to process the message, it checks in the next
   step, whether the group information contained in this packet is newer
   than the one stored in the local group database.  This applies in the
   following four cases:
   - The message contains information about the creation of a group,
     which isn't already stored in the local group database.
   - The message contains information about the modification or deletion
     of an already locally stored group, and the Sequence Number of the
     message is higher than the one stored for this group.
   - The message contains information about one or more IPv6 addresses,
     which want to join to a locally stored Address Group, and the
     Sequence Number of the message is higher than the one stored for
     this group.
   - The message contains information about one or more IPv6 addresses,
     which want to leave a locally stored Address Group, and the
     Sequence Number of the message is higher than the one stored for
     this group.

   If no one of these four conditions is kept, the message will be
   discarded without further action.

   Otherwise this new group composition information is locally stored in
   the group database.  If the router supports the mandatory mode, this
   message is further forwarded to all neighbouring routers except the
   one it was received from, that is there is no acknowledgement
   mechanism for Router Group Distribution Messages.  If the router
   supports the optional mode, additionally a Router Group Membership
   Report containing the modifications of the Address Group is sent to
   all hosts connected to the router.


5.2.10 Summary

   Finally the following two tables shall give an overview, which of the
   functions specified above have to be executed by routers and hosts in
   each of the two possible modes.






Fritsche, Seifert       Expires May 1998                       [Page 62]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   +-------------------------------------------------------------------+
   |    Functionality     |  Mode   |Modification| Contents of packet  |
   |                      |         |    Flag    |                     |
   +----------------------+---------+------------+---------------------+
   |Create Address Group  |Mandatory|     0      |Multicast Address and|
   |                      |Optional |            |IPv6 addresses of all|
   |                      |         |            |       members       |
   |Modify Address Group  |Optional |     0      |Multicast Address and|
   |                      |         |            |IPv6 addresses of all|
   |                      |         |            |       members       |
   |Delete Address Group  |Mandatory|     0      |  Multicast Address  |
   |                      |Optional |            |                     |
   |Join Address Group    |Mandatory|     1      |Multicast Address and|
   |                      |         |            |IPv6 addresses of all|
   |                      |         |            |    added members    |
   |Leave Address Group   |Mandatory|     2      |Multicast Address and|
   |                      |         |            |IPv6 addresses of all|
   |                      |         |            |    added members    |
   |Record Host Group     |Mandatory|    ---     |         ---         |
   |Membership Query      |Optional |            |                     |
   |Record Router Group   |Mandatory|    ---     |         ---         |
   |Distribution Message  |Optional |            |                     |
   +----------------------+---------+------------+---------------------+

                 Table: Functionality supported by routers




   +-------------------------------------------------------------------+
   |    Functionality     |  Mode   |Modification| Contents of packet  |
   |                      |         |    Flag    |                     |
   +----------------------+---------+------------+---------------------+
   |Create Address Group  |Optional |     0      |Multicast Address and|
   |                      |         |            |IPv6 addresses of all|
   |                      |         |            |       members       |
   |Modify Address Group  |Optional |     0      |Multicast Address and|
   |                      |         |            |IPv6 addresses of all|
   |                      |         |            |       members       |
   |Delete Address Group  |Optional |     0      |  Multicast Address  |
   |Join Address Group    |Mandatory|     1      |Multicast Address and|
   |                      |         |            |IPv6 addresses of all|
   |                      |         |            |    added members    |
   |Leave Address Group   |Mandatory|     2      |Multicast Address and|
   |                      |         |            |IPv6 addresses of all|
   |                      |         |            |    added members    |
   |Record Router Group   |Mandatory|    ---     |         ---         |
   |Membership Report     |Optional |            |                     |
   +----------------------+---------+------------+---------------------+

                  Table: Functionality supported by hosts



Fritsche, Seifert       Expires May 1998                       [Page 63]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


5.3 ICMPv6 Informational Group Messages

   This section defines the encoding of the three ICMPv6 packets, which
   are used for the distribution of group information.


5.3.1 Host Group Membership Query

   Host Group Membership Queries are used by hosts to advertise to one
   of their connected routers, that they want to modify an Address
   Group.  These queries aren't sent periodically, but by an event.  A
   host can execute two different modes of Group Address modification:
   - Mandatory mode: In this mode a host can only advertise to a router
     by using these queries, that it will join or leave an Address
     Group.
   - Optional mode: In this mode a host can advertise to a router by
     using these queries, that it will create, delete or completely
     modify an Address Group.  These queries can also be used for
     transmitting all stored Address Group information to newly
     connected routers.

   Which host is authenticated to execute which Address Group
   modifications is not scope of this proposal.

   The following figure shows the format of a Host Group Membership
   Query:

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |            Checksum           |
   +---------------+---------------+-------------------------------+
   | Modific. Flag |    Unused     |             Unused            |
   +---------------+---------------+-------------------------------+
   |                        Sequence Number                        |
   +---------------------------------------------------------------+
   |                    Number of Group Members                    |
   +---------------------------------------------------------------+
   |                       Multicast Address                       |
   +---------------------------------------------------------------+
   |                    Address of Group Member                    |
   +---------------------------------------------------------------+
                                  ...
   +---------------------------------------------------------------+
   |                    Address of Group Member                    |
   +---------------------------------------------------------------+


   IPv6 Fields:

      Source Address:     128-bit address of the originator of the
                          packet.


Fritsche, Seifert       Expires May 1998                       [Page 64]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


      Destination Address: 128-bit address of the "nearest" router
                          attached to the link, over which this query is
                          transmitted.  The nearest router is always the
                          one reachable with the lowest metric.  If two
                          routers are reachable with the same metric,
                          the query messages shall be transmitted to the
                          one with the numerically lower IPv6 address.
      Hop Limit:          255
      Priority:           15
      Authentication Header: If a Security Association for the IP
                          Authentication Header exists between the
                          source and the destination address, then the
                          source shall include this header.

   ICMPv6 Fields:

      Type:               130 - Group Membership Information
      Code:               1 - Host Group Membership Query
      Modification Flag:  The Modification Flag describes the kind of
                          modification of an Address Group.  This flag
                          can have one of the following three values:

                          0: This message contains a complete
                             composition of the Address Group specified
                             by the Multicast Address, that is an
                             Address Group is newly created, completely
                             modified or deleted (optional mode).
                          1: This message contains only the addresses of
                             one host, which wants to become a member of
                             the Address Group specified by the
                             Multicast Address (mandatory mode).
                          2: This message contains only the addresses of
                             one host, which wants to leave the Address
                             Group specified by the Multicast Address
                             (mandatory mode).

   Sequence Number:       This number describes the topicality of the
                          group modification contained in this Host
                          Group Membership Query.  Information with
                          higher Sequence Numbers replace information
                          with lower ones.  If a host supports the
                          mandatory mode, it has no information about
                          the composition of an Address Group.
                          Therefore it will set this field to zero.
   Number of Group Members: Running the optional mode this field
                          contains the number of all members of the
                          Address Group.
                          In the mandatory mode it contains only the
                          number of the members, which shall be added or
                          deleted from the Address Group.
   Multicast Address:     The IPv6 Multicast Address of the Address
                          Group, to which this Host Group Membership


Fritsche, Seifert       Expires May 1998                       [Page 65]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          Query refers.
   Address of Group Member: In the optional mode the Host Group
                          Membership Query contains the IPv6 addresses
                          of all members of the Address Group.
                          In the mandatory mode only the addresses of
                          those members are contained, which are newly
                          added or deleted from the respective group.


5.3.2 Router Group Membership Report

   Router Group Membership Reports are used by routers either to
   advertise to their connected hosts, that an Address Group has been
   modified, or to acknowledge a previously received Host Group
   Membership Query.  These reports aren't sent periodically, but by an
   event.  A router can execute two different modes of Address Group
   modification:
   - Mandatory mode: In this mode a router uses these reports only to
     acknowledge previously received Host Group Membership Queries,
     which contained the information, that a host has joined or left an
     Address Group.  This report is sent only to the originator of the
     Host Group Membership Query.
   - Optional mode: In this mode a router can advertise to all of its
     connected hosts by using these queries, that an Address Group has
     been created, deleted or completely modified.  This modification
     could have been initiated by a router or  a host.  These reports
     can also be used for transmitting all stored Address Group
     information to newly connected hosts.

     The following figure shows the format of a Router Group Membership
     Report:

    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |            Checksum           |
   +---------------+---------------+-------------------------------+
   | Modific. Flag |    Unused     |             Unused            |
   +---------------+---------------+-------------------------------+
   |                        Sequence Number                        |
   +---------------------------------------------------------------+
   |                    Number of Group Members                    |
   +---------------------------------------------------------------+
   |                       Multicast Address                       |
   +---------------------------------------------------------------+
   |                    Address of Group Member                    |
   +---------------------------------------------------------------+
                                  ...
   +---------------------------------------------------------------+
   |                    Address of Group Member                    |
   +---------------------------------------------------------------+



Fritsche, Seifert       Expires May 1998                       [Page 66]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   IPv6 Fields:

      Source Address:     128-bit address of the originator of the
                          packet.
      Destination Address: Running the mandatory mode this Router Group
                           Membership Report is only an acknowledgement
                           for a previously received Host Group
                           Membership Query.  Therefore the Destination
                           Address is copied from the Source Address
                           field of the respective Host Group Membership
                           Query.
                           Running the optional mode, the modification
                           of an Address Group is distributed to all
                           hosts connected to a particular link.
                           Therefore the Destination Address is set to
                           the all-hosts multicast address of this link.
      Hop Limit:           255
      Priority:            15
      Authentication Header: If a Security Association for the IP
                           Authentication Header exists between the
                           source and the destination address, then the
                           source shall include this header.


   ICMPv6 Fields:

      Type:               130 - Group Membership Information
      Code:               2 - Router Group Membership Report
      Modification Flag:  The Modification Flag describes the kind of
                          modification of an Address Group.  This flag
                          can have one of the following three values:

                          0: This message contains a complete
                             composition of the Address Group specified
                             by the Multicast Address, that is an
                             Address Group is newly created, completely
                             modified or deleted (optional mode).
                          1: This message contains only the addresses of
                             one host, which has required to become a
                             member of the Address Group specified by
                             the Multicast Address (mandatory mode).
                          2: This message contains only the addresses of
                             one host, which has required to leave the
                             Address Group specified by the Multicast
                             Address (mandatory mode).

      Sequence Number:    This number describes the topicality of the
                          group modification contained in this Router
                          Group Membership Report.  Information with
                          higher Sequence Numbers replace information
                          with lower ones.  If a router supports the
                          mandatory mode, this field is set to zero,


Fritsche, Seifert       Expires May 1998                       [Page 67]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          since the addressed host has no information
                          about the composition of an Address Group or
                          the actual Sequence Number.
      Number of Group Members: Running the optional mode this field
                          contains the number of all members of the
                          Address Group.
                          In the mandatory mode it contains only the
                          number of the members, which shall be newly
                          added or deleted from the Address Group.
      Multicast Address:  The IPv6 Multicast Address of the Address
                          Group, to which this Router Group Membership
                          Report refers.
      Address of Group Member: In the optional mode the Router Group
                          Membership Report contains the IPv6 addresses
                          of all members of the Address Group.
                          In the mandatory mode only the addresses of
                          those members are contained, which have
                          requested to be newly added or deleted from
                          the respective group.


5.3.3 Router Group Distribution Message

   Router Group Distribution Messages are used among routers to
   distribute Address Group modification information.  These messages
   aren't sent periodically, but by an event.  A router can execute two
   different modes of Address Group modification:
   - Mandatory mode: In this mode a router uses these messages to
     transmit to its connected routers the information, that one or more
     hosts have newly joined or left an Address Group.  Therefore in
     this case the message contains no complete Address Group
     composition, but only the respective hosts.  Also in this mode a
     router can transmit the information, that an Address Group has been
     created or deleted, what requires a message containing a complete
     group composition.
   - Optional mode: In this mode a router uses these messages to
     transmit to its connected routers the information, that an Address
     Group has been created, deleted or completely modified.  Therefore
     in this case the message contains always a complete Address Group
     composition.

   In both modes all stored Address Group information is transmitted to
   newly connected routers.

   The following figure shows the format of a Router Group Distribution
   Message:








Fritsche, Seifert       Expires May 1998                       [Page 68]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


    0               1               2               3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------+---------------+-------------------------------+
   |     Type      |     Code      |            Checksum           |
   +---------------+---------------+-------------------------------+
   | Modific. Flag |    Unused     |             Unused            |
   +---------------+---------------+-------------------------------+
   |                        Sequence Number                        |
   +---------------------------------------------------------------+
   |                    Number of Group Members                    |
   +---------------------------------------------------------------+
   |                       Multicast Address                       |
   +---------------------------------------------------------------+
   |                    Address of Group Member                    |
   +---------------------------------------------------------------+
                                  ...
   +---------------------------------------------------------------+
   |                    Address of Group Member                    |
   +---------------------------------------------------------------+


   IPv6 Fields:

      Source Address:     128-bit address of the originator of the
                          packet.
      Destination Address: Since Router Group Distribution Messages are
                          used to distribute the information of a group
                          composition throughout a routing area, this
                          message is addressed to the all-router
                          multicast address of the link, over which it
                          is transmitted.
      Hop Limit:          255
      Priority:           15
      Authentication Header: If a Security Association for the IP
                          Authentication Header exists between the
                          source and the destination address, then the
                          source shall include this header.

   ICMPv6 Fields:

      Type:               130 - Group Membership Information
      Code:               3 - Router Group Distribution Message
      Modification Flag:  The Modification Flag describes the kind of
                          modification of an Address Group.  This flag
                          can have one of the following three values:

                          0: This message contains a complete
                             composition of the Address Group specified
                             by the Multicast Address, that is an
                             Address Group is newly created or deleted
                             (optional or mandatory mode), or it has
                             been completely modified (optional mode).


Fritsche, Seifert       Expires May 1998                       [Page 69]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


                          1: This message contains only the addresses of
                             one node, which has required to become a
                             member of the Address Group specified by
                             the Multicast Address (mandatory mode).
                          2: This message contains only the addresses of
                             one node, which has required to leave the
                             Address Group specified by the Multicast
                             Address (mandatory mode).

      Sequence Number:    This number describes the topicality of the
                          group modification contained in this Router
                          Group Distribution Message.  Information with
                          higher Sequence Numbers replace information
                          with lower ones.  Since Router Group
                          Distribution Messages are only exchanged
                          between routers, this field is never set to
                          zero, because routers keep track with the
                          respective Sequence Numbers of Address Groups.
      Number of Group Members: Running the optional mode this field
                          contains the number of all members of the
                          Address Group.
                          In the mandatory mode it contains only the
                          number of the members, which shall be newly
                          added or deleted from the Address Group, if
                          the Modification Flag is set to 1 or 2.  If
                          this flag is set to 0 (creation or deletion of
                          an Address Group), this field contains the
                          number of all members.
      Multicast Address:  The IPv6 Multicast Address of the Address
                          Group, to which this Router Group Distribution
                          Message refers.
      Address of Group Member: In the optional mode the Router Group
                          Distribution Message contains the IPv6
                          addresses of all members of the Address Group.
                          In the mandatory mode with the Modification
                          Flag set to 1 or 2 only the addresses of those
                          members are contained, which have requested to
                          be newly added or deleted from the respective
                          group.  If the Modification Flag is set to 0,
                          this field contains the addresses of all
                          members.


5.4 Multicast Routing Algorithm


5.4.1 Introduction

   Since using the unicast routing algorithms like the shortest path
   first SPF for multicast packets can result in packets being forwarded
   on infinite loops, it is necessary to use a separate algorithm for
   this case.  It is possible to guarantee, that no loops will occur


Fritsche, Seifert       Expires May 1998                       [Page 70]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   during the routing of multicast packets, if all routers in a
   multicast routing area construct an identical tree containing all the
   nodes of the area and use this tree for creating their multicast
   forwarding database.

   The tree used in this algorithm is the minimum spanning tree (MST) of
   the multicast routing area.  It would be optimal in saving bandwidth
   if a packet is transmitted to all nodes in the multicast routing
   area.  If the packet is only addressed to a part of all nodes there
   may exists a better tree with regard to saving bandwidth during the
   transmission, but this tree, the MST which only contains the
   originator and all receivers of the packet, has a too high computing
   complexity for bigger networks [5].  Therefore this algorithm is a
   quite good alternative for the optimal algorithm, especially if the
   members of an Address Group are distributed within the multicast
   routing area.

   The MST routing algorithm is based on the available LSA and adjacency
   information.  Therefore the multicast routing area is the area, in
   which routers exchange their Link State Information among each other.
   The routing of multicast packets outside of this multicast routing
   area is shortly discussed in chapter 6, but not scope of this
   proposal.


5.4.2 Description of the algorithm


5.4.2.1 Tiebreaker for unequivocal link metrics

   To ensure that all routers in the multicast routing area construct an
   identical MST, it is required, that all of them have to use the same
   distances for all links.  If there are links with equal distances a
   tiebreaker must be used to get an unequivocal order of the link
   metrics.  In this algorithm the following tiebreaker is used:
   a) Routers are included into the Minimum Spanning Tree before hosts.
   b) The link with the lower metric assigned has the shorter distance.
   c) If there are still two links with equal distances compute the sum
      of the IPv6 addresses of the two nodes connected by the respective
      link.  The link causing the lower sum has the shorter distance.
   d) If there are still two links with equal distances examine the IPv6
      addresses of the two nodes connected by the respective links
      separately.  The link connecting the node with the numerically
      lowest IPv6 address shall have the shorter distance.
   e) If there are still two links with equal distances we have the
      situation that two nodes are connected by more than one link with
      each of them having the same metric.  In this case any link can be
      selected as the one with the shortest distance, because this
      cannot result in the construction of different MSTs by the routers
      of the multicast routing area.  However, this situation will
      probably never appear in real networks.



Fritsche, Seifert       Expires May 1998                       [Page 71]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


5.4.2.2 Overview

   After making sure that all links in the area have different distances
   it is possible for each router to construct a MST in the multicast
   routing area, which is identical with the tree constructed by all
   other routers, and which contains all nodes of the area.  For this
   tree calculation every router needs two databases.  One of them,
   called PATHS, is used after finishing the computation of the tree as
   forwarding database for packets addressed to multicast addresses.
   The entries of this database are couples of the form <N, Adj (N)>,
   with:
   o N: IPv6 address of the node N
        Note: If the IPv6 addresses of all nodes in the multicast
        routing area start with the same prefix, N could consist of the
        rest of the IPv6 address following the prefix.  N has to keep
        only the condition to identify unequivocally a node in the
        multicast routing area.
   o Adj(N): adjacency that the computing router should use for
        forwarding to N.

   The second database, called TENT, is used only during the computation
   of the tree.  The entries of this database are triples of the form
   < N, d(N), Adj (N)> with:
   o N: IPv6 address of the node N
        Note: If the IPv6 addresses of all nodes in the multicast
        routing area start with the same prefix, N could consist of the
        rest of the IPv6 address following the prefix.  N has to keep
        only the condition to identify unequivocally a node in the
        multicast routing area.
   o d(N): shortest possible distance of a single link, which would
        connect the node N to the tree, which already exists at this
        time of the computation.  If the connection of N to the tree
        over a single link is impossible the triple with the IPv6
        address of N is not present in TENT.
   o Adj(N): adjacency that the computing system S should use for
        forwarding to N.

   TENT can intuitively be thought of as a tentative placement of a node
   N in PATHS, but the explicit placement in PATHS can first be done if
   it is sure, that no node has a shorter distance to the tree than N.

   Additionally each node entry in TENT has to be marked as router or
   host and has to keep information about the previous node over which
   it was reached.  Later in the algorithm this information will be used
   to make a correct decision.

   Each computing router in the area starts the algorithm by putting
   first its own IPv6 addresses in PATHS.  TENT is then pre-loaded from
   the local adjacency database of this node.  Afterwards it has to be
   calculated, which node has the shortest distance to the existing tree
   (at this point of time the tree only comprises the computing node
   itself).  This node is then added to PATHS.  If it was a router its


Fritsche, Seifert       Expires May 1998                       [Page 72]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   neighbour nodes are examined by looking at its LSAs.

   This is done until all nodes are placed in PATHS and no one remains
   in TENT.


5.4.2.3 Steps of the algorithm

   There are three main steps of the algorithm separable:
   o Initialisation (Step 0)
   o Evaluation of the LSAs (Step 1)
   o Selection of the shortest distance (Step 2).

   In the following the single steps are described in more detail.
   Step 0:
   a) Initialise TENT and PATHS as empty.
   b) Add <SELF, 0, W> to PATHS, where SELF are the IPv6 addresses of
      the computing router and W is a special value indicating traffic
      to SELF is passed up to the Transport Layer.
   c) Now pre-load TENT with all neighbour nodes N of SELF.  This could
      be done by reading the local adjacency database.  If the node N is
      a router, the IPv6 address on behalf of which N will generate its
      LSAs (contained as LSA information option in the Router
      Advertisements of N) is stored for N.  If N is a host, the Source
      Address of the Host Advertisements, which caused the creation of
      the adjacency, is used.  The distance x to the neighbour N is the
      metric stored with the respective adjacency.  Adj(N) is the
      adjacency itself to the neighbour node N, that is the adjacency,
      which has been stored in the adjacency database as result of the
      receipt of an advertisement.  Each entry made to TENT must be
      marked as being either a router or a host to enable the check at
      the end of Step 2 to be made correctly.
   d) If a neighbour node is already in TENT, compare the distance of
      the old and the new entry and keep only the entry with the shorter
      distance.
   e) If a neighbour node is not in TENT, then place it now.
   f) If all neighbour nodes contained in the local adjacency database
      are examined, go to Step 2.

   Step 1:
   a) Now examine all neighbour nodes N listed in all LSAs of P, the
      node just placed in PATHS (P has been placed in PATHS during the
      last execution of Step 2).  The distance d(N) is the metric of the
      link from P to N and the adjacency to N, Adj(N), is the same as
      the one to P, Adj(P), because N could be reached from the
      computing router over P.
   b) If a neighbour node is already in PATHS, then do nothing.
   c) If a neighbour node is already in TENT, compare the distances of
      the old and the new entry and keep only the entry with the shorter
      distance.
   d) If a neighbour node is not in TENT, then place it now.



Fritsche, Seifert       Expires May 1998                       [Page 73]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Step 2:
   a) If TENT is empty, then stop the computation (now all reachable
      nodes of the multicasting routing area are placed in PATHS).
   b) Else find the element <P, d(P), Adj(P)> for which the distance
      d(P) to the existing tree is the shortest among all entries in
      TENT.
   c) Remove P from TENT.
   d) Add <P, Adj(P)> to PATHS.
   e) If the node just added to PATHS was a host, then go back to Step
      2, else go to Step 1.  In the last case of e) a router has been
      added to PATHS.  Before searching the next nearest node to the
      tree, the adjacencies of the just added router P have to be
      examined by checking P's LSAs).

   When the algorithm is finished, PATHS can be used as a multicast
   forwarding database containing all the nodes of the multicast routing
   area, which are reachable from the computing router.


5.4.3 Time of the algorithm execution

   The algorithm has to be executed if the network topology, the status
   of a node or a metric changes.  This could be detected for example by
   receiving a modified LSA from the router next to the respective
   location.  Therefore a reliable tool examining all received and
   locally generated LSAs is needed, which indicates that a network
   modification has occurred and that this shall result in a new
   execution of the multicast routing algorithm.


5.4.4 Complexity of the algorithm

   To make a fast selection of the node P in TENT having the shortest
   distance d(P) to the existing tree (Step 2 of the algorithm) it is
   useful, to keep TENT sorted with regard to the node's distances to
   the already existing tree.  So if a new node shall be added to TENT,
   the following two steps have to be executed:
   a) Search TENT and check if the node is already present.
   b) Search TENT for the appropriate place to insert the new node or
     the entry of the node with the shorter distance, if there was
     already an entry in TENT.

   These two steps have to be executed one time for each connection of
   two nodes of the network.  So we can approximate the complexity of
   the computation as

                   2 * L   database searching cycles

   where L is the number of connections between nodes within the whole
   multicast routing area and the database comprises at the most V
   entries where V is the number of nodes in the multicast routing area.
   In the most cases the number of entries in TENT will be much more


Fritsche, Seifert       Expires May 1998                       [Page 74]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   smaller than V.  The memory necessary for saving the routing
   information obtained by using this algorithm must only have the size
   of the forwarding database PATHS.  PATHS contains after finishing the
   algorithm at the most V (if all nodes are reachable) couples of an
   IPv6 address and the appropriate forwarding adjacency.


5.4.5 Resume

   Summarizing all its attributes this algorithm is a quite good
   solution for routing multicast packets, because
   - it is a dynamical routing algorithm,
   - the calculation of the routing information is not centralized,
   - it avoids the generation of infinite loops when routing multicast
     packets,
   - it doesn't have a too high computing complexity,
   - it doesn't require the distribution of additional routing
     information than the one distributed already for the SPF routing
     algorithm used for unicast packets, and
   - it is for distributed group members a good approach to the optimal
     algorithm in saving bandwidth.


5.4.6 Example

   The following example should illustrate the execution of the
   algorithm.  The picture shows the structure of a network:

   +-+                                                 +-+
   |6|-------1-------(1)--4--(2)--4--(5)-------1-------|7|
   +-+                 \      |      /|                +-+
                        \     |     / |
                         3    1    1  2
                          \   |   /   |
                           \  |  /    |
                            \ | /     |                +-+
                             (3)--2--(4)-------1-------|8|
                                                       +-+

   Figure : Example for computing the MST algorithm

   The number in brackets represent here routers, the ones in rectangles
   hosts.  Both number are used here as a symbolic representation of the
   nodes IPv6 addresses.  Here each node shall have assigned only one
   IPv6 address.  The entries of TENT are not listed here in a sorted
   order referring to the distances to the existing tree.

   In this example node 4 should be the computing router, but every
   other router would construct the same minimum spanning tree.  The
   large number at each link represents the distance of two nodes
   connected by the respective link.  Additionally a mechanism is needed
   to unequivocally mark the adjacencies of the computing router number


Fritsche, Seifert       Expires May 1998                       [Page 75]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   4 within this example.  This is done by the following numbering
   scheme:

   - the adjacency of router 4 to router 5 shall be adjacency number 1
   - the adjacency of router 4 to host 8 shall be adjacency number 2
   - the adjacency of router 4 to router 3 shall be adjacency number 3

   In the following description of applying the algorithm to this
   example network the parameter m is used to show how many times the
   loop of the algorithm was executed.

   m = 1:
      Step 0:
        PATHS: <4, W>
        TENT: <3, 2, 3>, <5, 2, 1>, <8, 1, 2>
      Step 2:
        Routers are preferred to hosts:
        Router 3 and 5 have the same distance.  The sum of the IPv6
        addresses of node 3 and 4 is 7 and therefore lower than the sum
        of the IPv6 addresses of node 5 and 4 which is 9.  So node 3 is
        selected to be placed on PATHS.
        PATHS: <4, W> <3, 3>
        TENT: <5, 2, 1> <8, 1, 2>
        P = 3 is a router, so continue with Step 1

 m = 2:
      Step 1:
        Node 3 was selected as the node P with shortest distance; 3 was
        removed from TENT and placed in PATHS.  Since node 3 is a
        router, the LSAs of node 3 have to be examined.
        PATHS: <4, W>, <3, 3>
        TENT: <1, 3, 3>, <2, 1, 3>, <5, 1, 3>, <8, 1, 2>
      Step 2:
        Routers are preferred to hosts:
        Router 2 and 5 have the same distance. The sum of the IPv6
        addresses of node 2 and 3 is 5 and therefore lower than the sum
        of the IPv6 addresses of node 3 and 5 which is 8.  So node 2 is
        selected to be placed on PATHS.
        PATHS: <4, W>, <2, 3>, <3, 3>
        TENT: <1, 3, 3>, <5, 1, 3>, <8, 1, 2>
        P = 2 is a router, so continue with Step 1

   m = 3:
      Step 1:
        Node 2 was selected as the node P with shortest distance; 2 was
        removed from TENT and placed in PATHS.  Since node 2 is a
        router, the LSAs of node 2 have to be examined.
        PATHS: <4, W>, <2, 3>, <3, 3>
        TENT: <1, 3, 3>, <5, 1, 3>, <8, 1, 2>
      Step 2:
        Routers are preferred to hosts:
        Selection of node 5 as P, as it has the shortest distance among


Fritsche, Seifert       Expires May 1998                       [Page 76]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


        all routers.
        PATHS: <4, W>, <2, 3>, <3, 3>, <5, 3>
        TENT: <1, 3, 3>, <8, 1, 2>
        P = 5 is a router, so continue with Step 1.

   m = 4:
      Step 1:
        Node 5 was selected as the node P with shortest distance; 5 was
        removed from TENT and placed in PATHS.  Since node 5 is a
        router, the LSAs of node 5 have to be examined.
        PATHS: <4, W>, <2, 3>, <3, 3>, <5, 3>
        TENT: <1, 3, 3>, <7, 1, 3 >, <8, 1, 2>
      Step 2:
        Routers are preferred to hosts:
        Selection of node 1 as P
        PATHS: <4, W>, <1, 3>, <2, 3>, <3, 3>, <5, 3>
        TENT: <7, 1, 3>, <8, 1, 2>
        P = 1 is a router, so continue with Step 1.

   m = 5:
      Step 1:
        Node 1 was selected as the node P; 1 was removed from TENT and
        placed in PATHS.  Since node 1 is a router, the LSAs of node 1
        have to be examined.
        PATHS: <4, W>, <1, 3>, <2, 3>, <3, 3>, <5, 3>
        TENT: <6, 1, 3>, <7, 1, 3>, <8, 1, 2>
      Step 2:
        Nodes 6, 7 and 8 have the same distance.  The sum of the IPv6
        addresses of node 1 and 6 is 7 and therefore lower than the sum
        of the IPv6 addresses of node 5 and 7 which is 12 or the sum of
        the IPv6 addresses of node 4 and 8, which is also 12.  So node 6
        is selected to be placed on PATHS.
        PATHS: <4, W>, <1, 3>, <2, 3>, <3, 3>, <5, 3>, <6, 3>
        TENT: <7, 1, 3>, <8, 1, 2>
        P = 6 is a host, so continue with Step 2

   m = 6:
      Step 2:
        Nodes 7 and 8 have the same distance.  The sum of the IPv6
        addresses of node 5 and 7 is 12, and therefore equal to the sum
        of the IPv6 addresses of node 4 and 8, which is also 12.  So
        node 8 is selected, since node 4 has the lowest IPv6 address
        (see criteria d) of tiebreaker).
        PATHS: <4, W>, <1, 3>, <2, 3>, <3, 3>, <5, 3>, <6, 3>, <8, 2>
        TENT: <7, 1, 3>
        P = 8 is a host, so continue with Step 2

   m = 7:
      Step 2:
        Selection of node 7 as P
        PATHS: <4, W>, <1, 3>, <2, 3>, <3, 3>, <5, 3>, <6, 3>, <7, 3>,
               <8, 2>


Fritsche, Seifert       Expires May 1998                       [Page 77]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


        TENT: Empty

   m = 8:
      Step 2:
        TENT is empty, so the algorithm has finished.  All reachable
        nodes are now contained in PATHS.

   The minimum spanning tree constructed by this algorithm has the
   following structure:

   +-+                                                 +-+
   |6|---------------(1)     (2)     (5)---------------|7|
   +-+                 \      |      /                 +-+
                        \     |     /
                         \    |    /
                          \   |   /
                           \  |  /
                            \ | /                      +-+
                             (3)-----(4)---------------|8|
                                                       +-+

   Figure 5: Minimum spanning tree for the given example network

   Since with using the tiebreakers all distances are different, it is
   guaranteed that all routers of the multicast routing area construct
   the same tree.

   Router 4 can now use the database PATHS as multicast forwarding
   database.  For example it would transmit a packet destined for an
   Address Group consisting of the nodes 6 and 7 to the adjacency 3,
   that is the next hop of this packet is node 3.  Node 3 is again a
   router and would have constructed the same MST as router 4.
   Therefore 3 would transmit a copy to router 5 for the destination
   node 7 and also to router 2 for the destination node 6.  Obviously
   this is not absolutely the shortest possible path for example to node
   7 (the path from node 4 straight over node 5 would be shorter), but
   it is the path which every other router expects router 4 to send a
   packets to node 7, and this attribute ensures to avoid the generation
   of loops during routing.


5.5 Routing of packets addressed to a group

   This section describes a mechanism for the routing of data packets
   destined for a multicast address using the MST routing algorithm
   specified above.

   The intention of the introduction of multicast addresses is the
   saving of bandwidth on the network.  Without multicast addresses a
   packet, which should be transmitted to a group of N receiving nodes,
   had to be sent to each of the IPv6 unicast addresses of all group
   members.


Fritsche, Seifert       Expires May 1998                       [Page 78]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Now this packet has only to be sent one time to the appropriate
   multicast address.  To save bandwidth as much as possible, the
   following conditions have to be kept:
   - It has to be ensured, that a packet destined for an Address Group
     is forwarded by a router only on those circuits, which have to be
     used to reach at least one member of the group.
   - It also has to be ensured, that over each circuit connected to a
     router maximum one copy of this packet is sent.
   - Finally the packet shall not be forwarded on the circuit, which
     would be used for the transmission of a packet back to the node
     generating the received multicast packet (backward routing).

   To avoid the introduction of routing loops it is also necessary, that
   each router in the multicast routing area constructs the same routing
   tree used for forwarding multicast packets.  This is done
   successfully by the use of the minimum spanning tree (MST) routing
   algorithm for multicast packets, since there is always exactly one
   MST for each multicast routing area.

   In the following the handling of received multicast packets by a
   router is described in more detail.


5.5.1 Acceptance of multicast packets

   For multicast packets the following additional acceptance tests have
   to be performed:
   - In a received multicast packet the Routing header will not be
     processed.  This header normally is specified by the IPv6 source of
     the packet and contains the partial or complete description of the
     way the packet shall take from the source to the destination node.
     Since multicast packets can, and mostly will be addressed to more
     destination nodes, it would make no sense to use this extension
     header.
   - If the source address of the multicast packet isn't in this
     multicast routing area, the packet has to be discarded.  To avoid
     backward routing, the next hop back to the source of the packet has
     to be excluded from the list of possible forwarding neighbours.  If
     the source address is outside the multicast routing area, this hop
     cannot be determined using the multicast routing algorithm.  This
     problem has to be solved, when in a next step a mechanism is
     specified, which enables the routing of multicast packets beyond
     the border of the multicast routing area.
   - If there is no valid entry stored for the multicast address in the
     own group database, there is no routing of this packet possible.
     In this case the packet also has to be discarded.


5.5.2 Determination of the forwarding adjacencies

   This section specifies a possible way for the determination of these
   adjacencies, to which a router must transmit a copy of a received


Fritsche, Seifert       Expires May 1998                       [Page 79]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   multicast packet in order to receive each member of the respective
   Address Group.  The main goals in doing this are the prevention of
   transmitting more than one copy to the same adjacency and routing
   back a copy to the adjacency, from which the packet was received.

   For this purpose at first a sendlist is allocated by the router,
   which has received a multicast packet.  This list is later used to
   mark all adjacencies, which already have received a copy of the
   respective packet.  Therefore it contains an entry for each adjacency
   of the router.  Each entry is initialised with the value zero, what
   means, that on principle it is allowed, to transmit a copy of the
   multicast packet to this adjacency.  Later some of these entries can
   be set to one, what means, that no copy of the packet shall be sent
   to the appropriate adjacency.

   In the next step the router receiving the multicast packet tries to
   locate, from which of its adjacencies the packet has been received.
   This happens in the way, that the router tries to find out using its
   forwarding database for multicast packets to which adjacency it would
   forward a packet back to the originator of the received one.  Since
   the multicast routing tree is not a directed graph, the router
   assumes, that from the same adjacency the multicast packet also has
   been received.  If this adjacency is a router, it is marked with one
   in the sendlist to prevent backward routing, if it is a host, the
   sendlist entry is not set to one.  This different action between
   routers and hosts is necessary, since routers compute a routing tree
   for multicast packets, but hosts not.  Therefore a host transmits a
   packet addressed to a group to one of its connected routers in order
   to cause the router to execute the appropriate routing of this
   multicast packet.  The router then will also send a copy of the
   packet back to this host, if it is a member of the respective group.
   The multicast destination IPv6 address is substituted in this case
   with the unicast IPv6 address of the host.  Therefore hosts aren't
   required to listen on multicast addresses they have joined, since
   this is done for them by their connected routers.

   If the adjacency, from which the multicast packet has been received,
   is now located, the router has a look on each single member of the
   group.  For each of them it tries to find out using its forwarding
   database for multicast packets, to which adjacency it should forward
   a copy of the packet designed to this member.

   If this adjacency is marked already with one in the sendlist, the
   processing of this group member is interrupted, and it is continued
   with the next member.

   If the adjacency is marked with zero, a copy of this packet is
   forwarded to it, and the appropriate entry in the sendlist is set to
   one after transmission to prevent another copy being transmitted the
   same way.

   By the use of a sendlist it is possible, that each packet addressed


Fritsche, Seifert       Expires May 1998                       [Page 80]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   to a group is only transmitted over those circuits, which are
   absolutely necessary to reach single group members.  In this case the
   maximum possible bandwidth in the application of the MST routing
   algorithm can be saved.


5.5.3 Forwarding of multicast  packets

   For the forwarding of a packet destined for an Address Group three
   cases can be distinguished:
   - If the packet is forwarded to another router, the multicast address
     is used as the destination IPv6 address.  This is necessary,
     because the next router also needs this information to execute the
     routing procedure for multicast addresses.  The Hop Limit field of
     the packet is decremented by 1.
   - If the packet is forwarded to a host, the unicast IPv6 address is
     used instead of the multicast IPv6 address as the destination
     address of the packet.  Doing this address substitution enables a
     host joining multicast addresses without listening explicitly for
     packets destined for these Address Groups.  This work is easily
     done for the hosts by their connected routers.  Applying this
     substitution of the destination IPv6 address a host can't
     distinguish, if a single packet was addressed only to itself, or if
     it was addressed to a certain group, which contains the host as one
     of its members.  The Hop Limit field of the packet is decremented
     by 1.
   - If the packet is forwarded to the local transport layer, that is
     the processing router itself has joined the respective group, the
     multicast destination IPv6 address is also substituted by the
     unicast IPv6 address of this router.  So receivers of the packet
     have the same information about the destination address,
     independently if they are located in hosts or routers.  The Hop
     Limit field doesn't have to be decremented in this case.





















Fritsche, Seifert       Expires May 1998                       [Page 81]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


6 Routing beyond the routing area

   The algorithms proposed in this document for the dynamically routing
   of unicast and multicast packets, are only used within a certain
   area, the routing area or the multicast routing area.  The
   restriction to a limited area is done, because the information used
   for the execution of the algorithms, for example LSAs or Router Group
   Distribution Messages, cannot be exchanged in the whole network.
   This would mean an intolerable high load on the network.  Therefore
   it is necessary, to specify a certain area, in which the detailed
   routing information shall be distributed.

   The specification of such an area can be done in many ways.  For
   example one method would be the use of the assigned IPv6 addresses.
   In this case the administrator shall assign all nodes residing in the
   same area IPv6 addresses, which have all the same prefix.  By the
   means of the Neighbour Discovery a node is informed about the IPv6
   addresses of its neighbours.  Using this information the node can
   decide, if control packets, which shall be distributed only within an
   area, have to be forwarded to a certain neighbour or not.  Another
   method of marking off an area is to inform all routers of the area,
   which also have at least one connection to nodes outside the area,
   that they are area border routers.  Along with this information the
   network administrator has to specify the interfaces of the routers,
   which are connected to neighbours outside the area.  On this way an
   area border router knows exactly, on which of its interfaces it has
   to forward control packets, which shall be distributed only within
   the area.  The advantage of this method is, that the IPv6 addresses
   can be assigned arbitrary, without considering any prefix
   restrictions.

   Although it is necessary to limit the distribution of certain control
   packets to a single area, nevertheless there is often a demand, to
   use the unicast and multicast routing features also beyond the
   borders of single areas.  For this purpose border protocols have to
   be defined.  In the following there is no such protocol specified in
   detail, but mechanisms for possible solutions shall be discussed.


6.1 Unicast routing beyond the routing area

   One way to perform routing of unicast packets beyond routing areas is
   the specification of at least one area border router for each area.
   This border router must have both, a connection to at least one area
   and a connection to the backbone network connecting the different
   areas.  The routers of the backbone network, that is also the area
   border routers, have to exchange among themselves the information,
   which IPv6 addresses are reachable over which area border router.
   For this purpose each border router have to collect this information
   about its own connected areas, and distribute it using control
   packets within the backbone network.  For this mechanism the
   following two aspects shall be considered for the assignment of IPv6


Fritsche, Seifert       Expires May 1998                       [Page 82]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   addresses:
   - The advantage of a totally free assignment of IPv6 addresses within
     a particular area is, that there are no restrictions, which prefix
     has to be used for an unicast address of the area.  Each IPv6
     unicast address, which is not already in use, can be assigned to
     any interface or node.  If a node changes from one area to another,
     it can keep its address and is therefore easily to identify in the
     new area.  The disadvantages of this procedure is the difficult
     administration of the address assignment and the amount of
     information, which has to be distributed within the backbone.
     Since there are no prefixes in use within an area, an area border
     router has to distribute within the backbone the information about
     each single assigned IPv6 address residing in its connected areas.
     For larger areas the amount of this information would become
     intolerable high.
   - If all unicast IPv6 addresses within one area have to use certain
     prefixes, it is not possible for a node changing into another area,
     to keep its old address.  This could cause the difficulty for other
     nodes to identify this node with its newly assigned address.  The
     big advantages of this address assigning procedure are the much
     easier administration of the assigned IPv6 addresses and the less
     amount of information, which has to be exchanged within the
     backbone.  If it is ensured, that an address prefix is exclusively
     used within a single area, it is sufficient for the area border
     routers, to distribute within the backbone all prefixes, which are
     used for the assignment of unicast addresses within its connected
     areas.

   Therefore the routing of a generated unicast packet beyond a single
   area can be separated in three steps:
   - Routing of the packet using the SPF algorithm within the area, in
     which the source of the packet is located.  If the destination of
     the packet isn't located in this area, it has to be forwarded to
     the nearest area border router.  This means, that each router
     within an area has to be informed of each area border router of its
     area.  This information can be distributed by the area border
     routers by setting in their Link State Advertisements a flag, which
     indicates, that they will act as border router.
   - The area border router of the source area will forward the packet
     within the backbone to the nearest border router, which has
     distributed within the backbone the information, that one of its
     connected areas assigns IPv6 unicast addresses matching the
     destination address of the routed unicast packet.  For the routing
     of the unicast packets within the backbone the routers of the
     backbone must also use a routing algorithm suitable for unicasting.
     For this case the SPF algorithm would also be applicable.
   - The border router of the remote area can now forward the unicast
     packet using the SPF algorithm to the destination of the packet.

   The advantage of the method described herein for routing beyond
   routing areas is, that there is no big modification of the protocol
   behaviour necessary within an area.  The only additional information


Fritsche, Seifert       Expires May 1998                       [Page 83]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   to be distributed within the area is the location of routers acting
   as area border routers.  This could be easily done by setting a
   particular flag in the Link State Advertisements of these routers and
   will therefore not use additional bandwidth.  Also a unicast packet
   will not be forwarded automatically to a border router, but only in
   the case, if the destination address of the packet is not present in
   the own area.

   The only condition, that a router can be configured as area border
   router, is, that it has a connection to both, to at least one area
   and to the backbone.

   If more areas together constitute an autonomous system, the routing
   of unicast packets between more autonomous systems can be done in the
   same way as between more areas.  In this case the used protocol is
   called "exterior gateway protocol".


6.2 Multicast routing beyond the multicast routing area

   One possible way to use the dynamical multicast routing also beyond
   the multicast routing area is, to specify in each area at least one
   multicast area border router.  All the border router of the different
   areas are connected by the backbone network.  A multicast area border
   router shall distribute within the backbone the information, from
   which Address Groups members reside in one of its connected areas.
   Since a multicast area border router is connected to both, to the
   backbone and to at least one multicast routing area, it is informed
   by the receipt of Group Distribution Messages about all Address
   Groups, for which nodes in its connected areas have declared an
   interest.  Using this knowledge it can inform all routers connected
   to the backbone, and therefore all area border routers of the
   different multicast routing areas, about the multicast addresses, for
   which nodes of its connected areas have declared an interest.  To
   limit the amount of exchanged control information, it shall only
   distribute the multicast addresses of these Address Groups, but not
   their detailed composition.

   If a multicast area border router receives from a border router of
   another multicast routing area, that this router is connected to an
   area containing nodes, which declare an interest for a multicast
   address also present in its own area, it shall immediately join this
   Address Group in the own area.  This causes data packets, which are
   generated in its area and destined for this multicast address, also
   being forwarded to itself.  These multicast packets it can then
   forward to the border routers of all other multicast routing areas,
   which has distributed in the backbone the information, that they are
   connected to areas containing nodes, which also have declared an
   interest for the respective Address Groups.  Received by these
   border routers, they can forward the multicast packet to the members
   of the Address Group located in their area.



Fritsche, Seifert       Expires May 1998                       [Page 84]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   Therefore the routing of a generated multicast packet beyond a single
   area can be separated in three steps:
   - Routing of the packet using the MST algorithm within the area, in
     which the source of the packet is located.  If there are also
     members of the Address Group outside this area, that is in any
     remote area, the multicast area border router of this area has also
     joined this Address Group and therefore will also receive a copy of
     the packet.
   - The multicast area border router of the source area will forward
     the packet within the backbone to all other border routers, which
     have also joined the Address Group, since there are members of this
     group located in at least one of their connected areas.  For the
     routing of the multicast packets within the backbone the routers of
     the backbone must use a routing algorithm suitable for
     multicasting.  For this case the MST algorithm would also be
     applicable.
   - The border router of these remote areas can now forward the
     multicast packet using the MST algorithm to the members of the
     Address Group, which are located in their connected areas.

   One advantage of the method described herein for routing beyond
   multicast routing areas is, that there is no modification of the
   protocol behaviour necessary within an area.  The nodes of an area
   don't have to know, if there is any area border router present for
   their area, it is sufficient to inform the border router itself about
   this fact.  Also a multicast packet will not be forwarded
   automatically to a border router, this is done only in the case, that
   there are also members of the Address Group in any other area and
   therefore the border router of this area has also joined the
   respective group.

   The routing of a multicast packet within the backbone could happen in
   the same way, as it does within an area, that is the same control
   information and the same routing algorithm can be used.  The only
   difference is, that within the backbone no information about the
   composition of any Address Group is exchanged between the routers.
   They distribute only the multicast addresses, for which any node in
   one of their connected areas has declared an interest.

   The only condition, that a router can be configured as a multicast
   area border router, is, that it has a connection to both, to at least
   one area and to the backbone.

   If more areas together constitute an autonomous system, the routing
   of multicast packets between more autonomous systems can be done in
   the same way as between more areas.  In this case the used protocol
   is called "exterior gateway protocol".







Fritsche, Seifert       Expires May 1998                       [Page 85]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


7 Quality of service aspects in dynamical routing

   For the computation of the routing trees both algorithms, the
   Shortest Path First (SPF) algorithm and the Minimum Spanning Tree
   (MST) algorithm, use a metric for each circuit of the network during
   the execution of the algorithm.  Evaluating this metric it is
   decided, if the respective circuit is included in the routing tree or
   not.  Therefore at least one metric, the default metric, has to be
   specified for each circuit of the network.

   If the default metric is the only available metric, the influence of a
   chosen quality of service for a data packet on the way of this
   packet from the source to its destination(s) is very restricted.  A
   router can only make the decision to route this packet along the tree
   computed with the use of the default metric, or it has to discard the
   packet, since the required quality of service is not represented by
   the use of the default metric.

   Therefore it is recommendable for an efficient use of these routing
   algorithms, to use more metrics for the single links of a network.
   It would be also an advantage, if these metrics represent already
   different quality of service aspects.  For example there could be a
   delay metric derived from the possible transfer rate on a particular
   circuit.  This metric would be a representation of the delay time
   requirements of a packet.  As another metric an error metric could be
   derived from the bit error probability of the single circuits.  This
   metric could be used to represent the security aspects of the
   quality of service requirements.

   Each of those metrics has to be configured manually, or a mechanism
   has to be defined, which allows a router, to derive the values for
   the single metrics automatically.  Since all this metric values are
   distributed in LSAs among all routers within the routing area, a
   change in one specific metric value causes a fast recomputation of
   the respective routing trees.  Therefore changing of the metric
   values can be used by network administrators as an appropriate method
   to influence the routing of IPv6 data packets with a particular aim
   in mind.

   Finally there must be the possibility for a router to decide, which
   metric shall be used for the routing of a data packet.  It is also
   necessary to guarantee, that all routers apply the same routing
   metric.  f this condition isn't kept, the use of different routing
   trees by the single routers can cause the introduction of infinite
   routing loops.

   Looking at the IPv6 protocol [1] there are two possibilities shown
   for deriving the appropriate metric used for routing a single data
   packet.  One way is to use the Flow Label field contained in each
   IPv6 packet.  In this case the source has to inform the router before
   the first transmission of a packet with a particular Flow Label,


Fritsche, Seifert       Expires May 1998                       [Page 86]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


   which special handling the source intends for all packets of this
   flow.  This could be done by a control protocol, such as the resource
   reservation protocol.  Using the information about this special
   handling a router must be able to decide unequivocally, which metric
   is used for those packets.  The other way is to add an option to the
   data packets Hop-by-Hop Header, which carries information about the
   metric to be used for routing this packet.  Since the Hop-by-Hop
   Header must be examined by every node along a packets delivery path,
   it is guaranteed, that each router receives this information.

   The detailed description of these control protocols and Hop-by-Hop
   header options or other possible mechanisms of the determination of
   the appropriate routing metric is not scope of this proposal.


8 Security Considerations

   Security issues are not discussed in this document.


9 References

   [1]  S. Deering, R.Hinden; Internet Protocol, Version 6 (IPv6)
        Specification; RFC 1883; December 1995
   [2]  A. Conta, S. Deering; Internet Control Message Protocol (ICMPv6)
        for the Internet Protocol Version 6 (IPv6) Specification;
        RFC 1885; December 1995
   [3]  T. Narten, E. Nordmark, W. Simpson; Neighbor Discovery for IP
        Version 6 (IPv6); RFC 1970; August 1996
   [4]  S. Thompson, T. Narten; IPv6 Stateless Address
        Autoconfiguration; RFC 1971; August 1996
   [5]   C.-H. Chow; On Multicast Path Finding Algorithms; Proc. of
         Infocom. 1991; pp 1274 - 1283





















Fritsche, Seifert       Expires May 1998                       [Page 87]INTERNET DRAFT        Dynamical routing for IPv6           November 1997


10 Author's Addresses

   Wolfgang Fritsche
   IABG
   Einsteinstr. 20
   85521 Ottobrunn
   Germany

   Phone: +49 89 6088 2897

   EMail: wfritsch@iabg.de



   Hartmut Seifert
   IABG
   Einsteinstr. 20
   85521 Ottobrunn
   Germany

   Phone: +49 89 6088 4021

   EMail: seifert@iabg.de































Fritsche, Seifert       Expires May 1998                       [Page 88]