INTERNET DRAFT                                         Seisho Yasukawa
draft-yasukawa-mpls-rsvp-multicast-01.txt                 Masanori Uga
Expires: May 2003                                       Hisashi Kojima
                                                         Koji Sugisono
                                                                   NTT
                                                         Alan Kullberg
                                                      Netplane Systems
                                                           Markus Jork
                                                         Avici Systems
                                                 Dimitri Papadimitriou
                                                               Alcatel


                                                         November 2002



               Extended RSVP-TE for Multicast LSP Tunnels
              <draft-yasukawa-mpls-rsvp-multicast-01.txt>


Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   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."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.


0. Summary for Sub-IP Area

   (This section to be removed before publication.)

0.1. Summary



Yasukawa, et. al.                                               [Page 1]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   This document specifies extensions and mechanisms to RSVP-TE
   in support of MPLS point to multipoint LSPs.

0.2. Where does it fit in the Picture of the Sub-IP Work

   This work fits squarely in the MPLS box.

0.3. Why is it Targeted at this WG

   This draft is targeted at the MPLS WG, because this draft specifies
   the extensions to RSVP-TE signalling protocol in support of MPLS
   point to multipoint LSPs creation/deletion and Leaf initiated
   Join/Leave signalling.

0.4. Justification

   In this draft the protocol extensions will be defined allowing the
   creation and deletion of multicast trees by other means than pure
   multicast routing protocols.  The reasons for enabling this are:

   1. Some network operators don't inject BGP routes into their backbone
   (e.g. they create a full mesh of LSPs).  The result is that SSM
   can not be deployed, because the intermediate nodes in the network do
   not know where to send the PIM-SM Join messages to (if the source is
   in another AS).

   2. Some applications of multicast do not require very dynamic trees,
   e.g. content distribution to proxy servers or subtrees in backbone
   networks.  For these applications it becomes worthwhile to create
   more optimal distribution trees.  Multicast trees constructed by
   multicast routing protocols are not optimal because:

   a. These trees are only shortest path if the paths are symmetric.
   This is a false assumption in the current Internet.

   b. Shortest-path trees themselves are non-optimal.  On the other
   hand the calculation of an optimal Steiner trees is known to be an
   NP-complete problem requiring the usage of heuristics.

   3. In a next step - similar to unicast traffic engineering [RFC-2702]
   - an MPLS multicast tree (a point-to-multipoint LSP) can be built
   which is automatically computed by a suitable entity based on QoS and
   policy requirements, taking into consideration the network state.  In
   this case an IGP is needed.  Both, OSPF [OSPF-TE] and IS-IS [ISIS-TE]
   can be used for this purpose. The LSA information is flooded
   throughout an AS, the point-to-multipoint tree is then calculated
   based on the adequate topology.




Yasukawa, et. al.                                               [Page 2]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


0.5. Related I-d's

- draft-poj-optical-multicast-02.txt (expired)

  This i-d addresses the specifics of optical point-to-multipoint
  connection, while focusing on non-packet environments only this
  i-d is the early precursor of the Tree ERO object and the related
  mechanisms developed in the present i-d.

- draft-ooms-mpls-multicast-te-01.txt (expired)

  This i-d describes 2 ways of building a multicast traffic-engineered
  tree: root-initiated tree and leaf-initiated tree. It also proposed
  defines extensions to MPLS (CR-LDP) signalling for setting up and
  tearing down traffic engineered multicast trees.

- draft-cheng-mpls-rsvp-multicast-er-00.txt (expired)

  This i-d introduces the RSVP-TE's explicit route capability in
  support of multicast applications and more generally to point-to
  multipoint LSPs. The proposed mechanisms were also intended for
  point-to multipoint applications in non-packet LSP capable
  networks. First i-d having clarified the processing of the Tree
  ERO object and initiate corresponding RSVP-TE message processing.

- draft-chung-mpls-rsvp-multicasting-00.txt (expired)

  This i-d addresses extensions to the Resource Reservation Protocol
  (RSVP) to support MPLS multicast. The concepts developed are in
  accordance to the traffic engineering (TE) attributes provided in
  the MPLS-TE specifications. This i-d introduces the concept of
  Leaf initiated Join/Leave procedures using RSVP-TE.



















Yasukawa, et. al.                                               [Page 3]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Table of Contents

   1. Introduction ................................................... 5
   2. Terminology .................................................... 5
   3. Architecture ................................................... 7
      3.1 Multicast LSP tunnels ...................................... 7
      3.2 Multicast LSP topology ..................................... 7
      3.3 Calculation of multicast tree route ........................10
      3.4 Multicast LSP establishment, teardown, and modification
          mechanisms .................................................11
      3.5 Basic operation of multicast LSP tunnels ...................12
      3.6 Multicast session ..........................................14
         3.6.1 Multicast session object ..............................14
         3.6.2 MULTICAST_LSP_TUNNEL_IPv4 session object ..............14
         3.6.3 MULTICAST_LSP_TUNNEL_IPv6 session object ..............15
      3.7 Explicit routing ...........................................15
         3.7.1 Tree Explicit Route Object (TERO) .....................15
         3.7.2 Tree Record Route Object (TRRO) .......................20
         3.7.3 Message Size ..........................................24
      3.8 Multicast Notify Message ...................................24
   4. Sender-initiated multicast LSP establishment ...................24
      4.1 Sender-initiated Multicast LSP establishment mechanism .....24
      4.2 Processing of TERO and TRRO for sender-initiated
          multicast LSP establishment ................................25
      4.3 Teardown mechanism .........................................27
      4.4 Path/Resv error ............................................27
      4.5 Message format .............................................27
         4.5.1 Path message format ...................................27
         4.5.2 Resv message format ...................................28
         4.5.3 Other RSVP message formats.............................28
   5. Sender-initiated grafting/pruning mechanism ....................28
      5.1 Sender-initiated grafting mechanism ........................29
      5.2 Graft Error ................................................30
      5.3 Sender-initiated pruning mechanism .........................32
   6. Leaf-initiated multicast LSP establishment .....................33
      6.1 Leaf-initiated joining mechanism ...........................33
      6.2 Join Error .................................................34
      6.3 Leaf-initiated leaving mechanism ...........................35
      6.4 Leave Error ................................................36
      6.5 Message formats ............................................37
         6.5.1 Join message format ...................................38
         6.5.2 JoinErr message format ................................38
         6.5.3 Leave message format ..................................39
         6.5.4 LeaveErr message format ...............................40
   7. Error Handling and Error Codes .................................40
      7.1 Error Handling at Branch Node ..............................40
      7.2 Error Handling at Non-Branch Node ..........................41
      7.3 Error During Resv Processing ...............................41



Yasukawa, et. al.                                               [Page 4]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


      7.4 Error Codes and Error Value Sub-Codes ......................42
   8. Use of Refresh Reduction .......................................42
   9. Application for Traffic Engineering ............................42
      9.1 Rerouting Traffic Engineered Multicast Tunnels .............42
      9.2 Re-establishment of subtree ................................43
   10. Security Considerations........................................43
   11. References ....................................................44
   12. Author's Addresses ............................................45

1. Introduction

   Multicast technology will become increasingly important with the
   dissemination of new applications such as contents delivery services
   and video conferences, which require much more bandwidth and stricter
   QoS than conventional applications. From the service providers'
   perspective, traffic engineering (TE) functions will be needed to
   handle the large amount of multicast traffic.

   This document defines some protocol extensions to the existing RSVP-
   TE[1] in order to establish a multicast label switched path (LSP).
   The use of label switching routers (LSRs) with the protocol
   extensions defined in this document allows service providers to offer
   unicast and multicast multiprotocol label switching (MPLS) services
   in the same service network.

   This protocol assumes a variable LSP topology, e.g., point-to-
   multipoint topologies. This document describes how to establish and
   maintain point-to-multipoint LSPs as the most basic multicast
   topology.  It defines two ways of constructing a point-to-multipoint
   LSP: sender-initiated LSP setup and leaf-initiated LSP setup. Each
   method has an LSP modification capability in order to adapt to
   dynamic changes in the LSP tree topology.

   The establishment of multipoint-to-multipoint LSPs is a subject for
   future study.

   This protocol is very flexible and can be used to carry protocols
   other than IP multicasting, e.g., Ethernet, PPP, and SONET/SDH.  No
   assumption is made about the format of the data to be carried in the
   signaled LSP.

2. Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC2119 [5].

   The reader is assumed to be familiar with the terminology in [1],



Yasukawa, et. al.                                               [Page 5]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   [2], [3] and [4].

   Multicast LSP:

      A label switched path that has more than one egress label
      switching router

   sender node:
      Headend of the multicast LSP. It controls the multicast LSP layout
      and places traffic onto it by pushing a label.

   Branch LSR:

      A label switching router (LSR) that has more than one downstream
      LSR. A branch LSR receives a single MPLS frame, makes a duplicate
      of it, and sends each to downstream interfaces.

   join leaf node:

      A leaf node trying to join a multicast LSP.

   leave leaf node:

      A leaf node trying to leave a multicast LSP that it has joined

   graft node:

      An LSR that is already a member of the multicast tree and is in
      process of signaling a new subtree.

   prune node:

      An LSR that is already a member of the multicast tree and is in
      process of tearing down an existing subtree.

   Explicit Route Object (ERO):

      An object specifying the explicit path of the message including
      the object.

   Tree Explicit Route Object (TERO):

      An extended ERO for describing the multicast tree topology.

   Record Route Object (RRO):

      An object recording the information of route through which the
      message including the object has passed.



Yasukawa, et. al.                                               [Page 6]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Tree Record Route Object (TRRO):

      An extended RRO for recording the route along which each merged
      message has traveled.

   Subtree:

      A subtree is a portion of a multicast tree starting at a
      particular node that is a member of the multicast tree and
      includes ALL nodes downstream of that node that are also members
      of the multicast tree.

3. Architecture

3.1 Multicast LSP tunnels

   This protocol defines "multicast flow" by a label that is assigned to
   a set of packets at the ingress node of a point-to-multipoint LSP.
   Such a point-to-multipoint LSP is referred to as a "multicast LSP
   tunnel" because the traffic through it is opaque to intermediate
   nodes along the LSP.  To enable the identification and association of
   such multicast LSP tunnels, new MULTICAST_LSP_TUNNEL session objects
   are defined. Each session object carries the sender node address of a
   point-to-multipoint LSP and its tunnel ID. The sender node address is
   more preferable than destination (leaf) node addresses to identify a
   multicast LSP tunnel because frequent topological changes may occur
   and destination node addresses are not stable in this tunnel.

   And to express the leaf nodes and topology of this multicast LSP
   tunnel, TREE_EXPLICIT_ROUTE object and TREE_RECORD_ROUTE object are
   also defined. This protocol uses conventional SENDER_TEMPLATE
   (or FILTER_SPEC) object to convey sender node address and LSP ID.
   Therefore, the MULTICAST_LSP_TUNNEL session object together with the
   SENDER_TEMPLATE object uniquely identify a multicast LSP tunnel.

   It is very useful to associate sets of LSP tunnels which share the
   same sender node in a multicast application. This can be useful
   during rerouting operations or to spread a traffic trunk over
   multiple multicast paths [1]. In traffic engineering such sets are
   called multicast traffic engineered tunnels (multicast TE tunnels).
   As same as unicast TE tunnels, these multicast TE tunnels is uniquely
   identified by the SESSION objects.

3.2 Multicast LSP topology

   The proposed RSVP-TE extensions support point-to-multipoint LSP
   tunnel establishment, teardown, and modification mechanisms. A
   point-to-multipoint LSP can handle i) (S,G) multicast traffic, ii)



Yasukawa, et. al.                                               [Page 7]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   ({S},G), (*,G) multicast traffic, and iii) ({S},{G}) multicast
   traffic. (S,G) represents a single sender node with source address S
   transmitting multicast traffic to a multicast group G. The ({S},G)
   represents several sender nodes with source addresses {S}
   transmitting multicast traffic to a multicast group G. The (*,G)
   represents arbitrary sender nodes transmitting multicast traffic to a
   multicast group G. The ({S},{G}) represents several sender nodes with
   source addresses {S} transmitting multicast traffic to multicast
   groups {G}. Traffic that shares the same multicast distribution
   topology and is treated in the same forwarding manner is defined as
   belonging to the same FEC.

                        +----+
                        |  S |
                        +----+
                           | G
                           |          S : Source
                           V          SN: Sender Node
                         +---+        L : Leaf node
                         | SN|
                         +---+
                  (S,G)   | |
                      +---+ +---+
                      |         |
                    +---+     +---+
                    | N |     | N |
                    +---+     +---+
                     ||         ||
                     ||         ||
                   +-++-+     +-++-+
                   |    |     |    |
                   V    V     V    V
                 +---++---+ +---++---+
                 | L || L | | L || L |
                 +---++---+ +---++---+
















Yasukawa, et. al.                                               [Page 8]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


                     +----+ +----+
                     | S1 | | Sn |
                     +----+ +----+
                      G|       |G
                       +--+ +--+
                          | |         S : Source
                          V V         SN: Sender Node
                         +---+        L : Leaf node
                         | SN|
                         +---+
           (*,G),({S}),G) | |
                      +---+ +---+
                      |         |
                    +---+     +---+
                    | N |     | N |
                    +---+     +---+
                     ||         ||
                   +-++-+     +-++-+
                   |    |     |    |
                   V    V     V    V
                 +---++---+ +---++---+
                 | L || L | | L || L |
                 +---++---+ +---++---+




























Yasukawa, et. al.                                               [Page 9]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


                     +----+ +----+
                     | S1 | | Sn |
                     +----+ +----+
                     G1|       |Gn
                       +--+ +--+
                          | |         S : Source
                          V V         SN: Sender Node
                         +---+        L : Leaf node
                         | SN|
                         +---+
         ({S},{G}),(*,*) || ||
                     +---+| |+---+
                     |+---+ +---+|
                     ||         ||
                    +---+     +---+
                    | N |     | N |
                    +---+     +---+
                    || ||     || ||
                   ++| |++   ++| |++
                   |++ ++|   |++ ++|
                   ||   ||   ||   ||
                   VV   VV   VV   VV
                 +---++---+ +---++---+
                 | L || L | | L || L |
                 +---++---+ +---++---+

            Figure 1: Multicast traffic type

3.3 Calculation of multicast tree route

   There are two methods of calculating the multicast tree route. It can
   be calculated by: i) the sender node or the network management system
   (NMS) and ii) a IP multicast routing protocol such as PIM-SM[8].
   The first method is suitable to achieve traffic engineering because
   we can control multicast LSP topology independent to existing IP
   routing protocol. This means that we can setup multicast LSP and
   control its topology within a unicast IP network without using a
   complicated IP multicast routing protocol. Multicast CSPF [13]
   calculation at a sender node using a conventional unicast routing
   with TE extension [14] is one of the example.

   On the other hand, the second method is suitable to easy
   implementation. But it is necessary to establish a method for
   cooperating with multicast routing protocol. And it is not easy to
   control multicast LSP topology because conventional IP multicast
   routing protocol such as PIM-SM frequently changes its multicast
   route. And it is difficult to convey a several multicast traffic that
   has different multicast group addresses in a single multicast LSP



Yasukawa, et. al.                                              [Page 10]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   because it is setup per group address basis.

   This draft assume the first method for multicast tree calculation and
   the second method is a topic for further study.

3.4 Multicast LSP establishment, teardown, and modification mechanisms

   This multicast MPLS protocol can be applied to various multicast
   applications because it supports both sender-initiated and leaf-
   initiated multicast LSP tunnel establishment mechanisms.  It is
   preferable for multicast sender nodes to start traffic distribution
   only after they have confirmed the establishment of an end-to-end
   LSP. For this, we can use the sender-initiated multicast LSP tunnel
   establishment mechanism. This mechanism is also preferable when
   establishing a QoS-capable multicast LSP tunnel because the single
   sender node can calculate the optimum multicast LSP tunnel using QoS
   information.

   On the other hand, some applications need a leaf-initiated multicast
   LSP tunnel establishment mechanism.  A leaf node that implements
   IGMP[6,7] protocol in addition to this multicast MPLS protocol can
   dynamically invoke the multicast LSP tunnel setup mechanism according
   to the multicast client's content viewing status. If all the clients
   accommodated at the leaf node stop receiving multicast traffic from
   this node (e.g., all clients send a IGMP leave message to the leaf
   node), the leaf node invokes this process and requests to tear down
   unnecessary multicast LSP tunnels. If a client accommodated at the
   leaf node starts receiving multicast traffic from this node (e.g., a
   client who wants to receive this multicast data sends an IGMP Join
   message to the leaf node), the leaf node invokes this process to
   graft the necessary multicast LSP tunnel.

   We must assume the co-existence of both applications in this
   multicast MPLS network. Therefore, the multicast MPLS protocol
   supports both sender- and leaf-initiated multicast LSP
   tunnel establishment mechanisms, and these mechanisms must work in an
   interoperable manner.

   Traffic engineering is more important in a multicast network
   environment than a unicast one. Frequent topological changes may
   occur in a multicast LSP tunnel because it has many leaf nodes and a
   more complex transmission topology. We need a more reliable tunnel
   re-establishment mechanism in a multicast network environment because
   the nodes nearer the sender node need greater reliability than ones
   placed at leaf neighbors. For these demands, a partial multicast LSP
   tunnel modification mechanism (subtree expansion and reduction
   mechanism) is necessary because total multicast LSP tunnel
   re-establishment is not efficient in a multicast network. Therefore,



Yasukawa, et. al.                                              [Page 11]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   the proposed RSVP-TE extensions implement a partial multicast LSP
   tunnel modification mechanism.

   The features supported by the proposed RSVP-TE extensions are
   summarized below. The sender-initiated multicast LSP tunnel
   establishment mechanism has i) multicast LSP tunnel establishment and
   teardown mechanisms and ii) partial multicast LSP (subtree LSP)
   tunnel establishment, teardown, and modification mechanisms.  The
   leaf-initicated multicast LSP tunnel establishment mechanisms has
   iii)leaf LSP tunnel establishment, teardown mechanism.

   The proposed RSVP-TE extensions use an interoperable architecture
   between the sender- and leaf-initiated multicast LSP tunnel
   establishment mechanisms, so both mechanisms can modify a multicast
   LSP tunnel established by either mechanism.

                                +---+
                                |   |
                                +---+
     Function 1                   |
      Sender-initiated            |
      M-LSP establishment       +---+
                             || | A |
                             VV +---+
                                 | |        ^
                             +---+ +---+    |
                             |         |    |
                           +---+     +---+  | Function 3
                           | B |     | C |  |  Leaf initiated
                           +---+     +---+  |  M-LSP Join/Leave
     Function 2         |    ||        ||   |
      Sender-initiated  |  +-++-+    +-++-+ |
      M-LSP Graft/Prune |  |    |    |    | |
                        v  V    V    V    V
                         +---++---+ +---++---+
                         | D || E | | F || G |
                         +---++---+ +---++---+
                          ^    ^     ^    ^
                          |    |     |    |
                        +--+ +--+   +--+ +--+
                        |  | |  |   |  | |  |
                        +--+ +--+   +--+ +--+

             Figure 2: Function supported by this protocol

3.5 Basic operation of multicast LSP tunnels

   This paragraph explains the basic multicast LSP tunnel establishment



Yasukawa, et. al.                                              [Page 12]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   mechanism. Figure 3 shows the basic sender-initiated multicast LSP
   tunnel establishment mechanism.

      Path Message
      (SESSION, SENDER_TEMPLATE, LABEL_REQUEST, TERO, *RRO)
      Resv Message
      (SESSION, FILTER_SPEC, LABEL, STYLE, TRRO)
                      Path      Path      Path
                     ----->    ----->    ----->    .
     Ingress LSR     <-----    <-----    <-----    .
      (Sender)        Resv      Resv      Resv     .
                +---+      +---+      +---+      +---+
                | S |------| N |------| N |------| N |.....
                +---+      +---+      +---+      +---+
                            ^|          ^|
                        Resv||Path  Resv||Path
                            ||          ||
                            |V          ||   Path
                          +---+         ||  ----->
                          | N |.....    ||  <-----     Egress LSR
                          +---+         |V   Resv        (Leaf)
                            .         +---+     +---+
                            .         | N |-----| L |
                            .         +---+     +---+
                                        .
                                        .
                                        .
       Figure 3: Fundamental Multicast LSP establish mechanism

   To create a multicast LSP tunnel, the sender node creates a Path
   message with a TERO in addition to a LABEL_REQUEST object, a SESSION
   object, and a SENDER_TEMPLATE object. The TERO includes multicast
   tree information to set. The Path message is forwarded towards its
   destination along a multicast path specified by the TERO. Each
   intermediate node along the path records the TERO, SESSION object,
   and SENDER_TEMPLATE object in its path state block. An intermediate
   branch node copies the Path message to each next hop node specified
   in the TERO until the destination leaf nodes are reached.

   When the Path message reaches the destination leaf node, the leaf
   node responds to a LABEL_REQUEST by including a LABEL object in its
   response Resv message. Then the Resv message is sent back upstream
   toward the sender node, following the path state created by the Path
   message in reverse order.

   Each node that receives a Resv message containing a LABEL object uses
   that label for outgoing traffic associated with this tunnel. If the
   node is a branch node, it waits for all the Resv massages coming from



Yasukawa, et. al.                                              [Page 13]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   downstream leaf nodes. After receiving all the Resv messages, it
   allocates a new label and places it in the corresponding LABEL object
   of the Resv message, which it sends upstream to the previous hop
   (PHOP). Finally, the merged Resv message propagates upstream to the
   sender node. Thus, a multicast LSP is established. This label
   assignment is performed in downstream on-demand ordered control mode.

3.6 Multicast session

3.6.1 Multicast session object

   The new SESSION object is defined for multicasting.

   To identify a multicast tunnel, MULTICAST_LSP_TUNNEL_IPv4 and
   MULTICAST_LSP_TUNNEL_IPv6 are added to the SESSION object as new C-
   Types. They each have a tunnel sender address and  Tunnel ID.

3.6.2 MULTICAST_ LSP_TUNNEL_IPv4 session objects

      Class = SESSION, C-Type = MULTICAST_ LSP_TUNNEL_IPv4

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                IPv4 tunnel sender address                     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         MUST be zero          |            Tunnel ID          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      IPv4 tunnel sender address

         IPv4 address of the tunnel sender

      Tunnel ID

         A 16-bit identifier used in the SESSION that remains constant
         over the life of the tunnel.














Yasukawa, et. al.                                              [Page 14]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


3.6.3 MULTICAST_LSP_TUNNEL_IPv6 session objects

      Class = SESSION, C-Type = MULTICAST_LSP_TUNNEL_ IPv6

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                   IPv6 tunnel sender address                  |
      +                                                               +
      |                            (16 bytes)                         |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  MUST be zero                 |            Tunnel ID          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      IPv6 tunnel sender address

         IPv6 address of the tunnel sender

      Tunnel ID

         A 16-bit identifier used in the SESSION that remains constant
         over the life of the tunnel.

3.7 Explicit routing

3.7.1 Tree Explicit Route Object (TERO)

3.7.1.1 Overview

   Explicit routing is the main function of RSVP-TE. RSVP-TE defines an
   ERO to describe the explicit route of the tunnel.  An ERO is defined
   as a list of subobjects. Each subobject represents information about
   nodes composing the data path.  For multicasting, the path topology
   is a tree. So we extend ERO to express a multicast tree and define a
   new Tree Explicit Route Object (TERO).

   TERO is included in a message concerning path establishment like the
   Path message. It specifies nodes of a tree in which the message is
   traversed. In particular, TERO of a Path message initiated by the
   sender node contains the whole topology of the multicast tree.

   Before a node sends a TERO in an outgoing PATH message, it MUST split
   the TERO such that only hops describing the subtree towards which the
   PATH is sent are included in the TERO.  The result is that downstream



Yasukawa, et. al.                                              [Page 15]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   nodes do not have a complete picture of the multicast tree.  Instead,
   each node receives a TERO containing a subtree with the receiving
   node as the root of that subtree.  By not sending the entire TERO
   downstream, downstream nodes will use less memory for storing the
   state information for the LSP.

   TERO is also a list of subobjects. Each subobject shows information
   about a node on the multicast tree. To describe the tree topology,
   each subobject should be sorted to be able to show link connectivity.
   For this purpose, the subobjects are arranged in depth-first-order
   and have a number of hops from the sender node.  For the multicast
   tree shown in figure 4 below, the TERO is encoded as follows:

      T={A(0),B(1),C(2),D(3),E(3),F(2),G(2),H(3),I(1),J(1),K(2),L(2)}
         Distance in parentheses.


                        A
                        |
                   +----+----+
                   |    |    |
                   B    I    J
                   |         |
               +---+---+   +-+-+
               |   |   |   |   |
               C   F   G   K   L
               |       |
             +-+-+     |
             |   |     |
             D   E     H



   Figure 4: TERO corresponding to a multicast tree

3.7.1.2 Data Terminating Nodes

   In some cases, a multicast tree may be calculated that contains a
   branch node that must also behave as a leaf node with respect to the
   dataplane (i.e., in the case of locally attached client nodes).
   Allowing for a node to be both a branch and leaf at the same time may
   enable calculation of otherwise impossible and/or more optimal trees.

   In order for a node in the tree to know to terminate the data locally
   as well as forward the data to other downstream nodes, an explicit
   designator is placed in the TERO hop object.  When set, a node SHOULD
   terminate data locally and also send it downstream.




Yasukawa, et. al.                                              [Page 16]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


3.7.1.3 Strict and loose explicit routes

   Two kinds of explicit route are prepared. In a strict explicit route,
   the nodes composing the route are specified strictly. A loose
   explicit route allows an external routing algorithm to decide the
   route between specified nodes. Unicast routing algorithm such as
   OSPF[15] and IS-IS[16] are examples of such algorithms. These routes
   are selected at each link of the tree. The protocol allows a mixture
   of strict and loose explicit routes in the same multicast tree, so
   TERO should show where the strict and loose explicit routes are. The
   information should relate to nodes described by subobjects. As the
   information satisfying this condition, the input link status is used
   to specify strict and loose explicit routes in point-to-multipoint
   trees. In the case of a multicast point-to-multipoint tunnel, the
   attribute of an input link relates to each node uniquely. So as the
   information satisfying this condition, the input link status is used
   to specify strict and loose explicit routes in a point-to-multipoint
   tunnel. The L bit in a subobject of TERO shows the input link status
   of the node. If the L bit shows loose, the input link belongs to a
   loose explicit route. Otherwise, it belongs to a strict explicit
   route.

   This protocol allows the insertion of additional subobjects. In a
   loose explicit route, the edge nodes of the route indicated as a
   loose explicit route may know the topology of the network around the
   loose explicit route. The edge node may calculate the route and
   specify the route with TEROs. In this case, the edge node inserts the
   calculated route into the TERO of messages related to the loose
   explicit route.

   Consider the number of hops from the sender node to a node. It is
   counted based on the TERO. If intermediate nodes between a leaf node
   and the sender node belong to a strict explicit route, they are
   specified in TERO and the leaf node can count the number of hops.
   When loose explicit routes are part of a multicast tree, the sender
   node cannot count the number of hops. Because nodes on a loose
   explicit route are not specified, sender nodes cannot count the
   number of hops in the loose explicit route. So they cannot calculate
   the relevant number of hops of the tree nodes. Therefore, the
   protocol defines the number of hops between the edges of an loose
   explicit route as 1. This definition satisfies the demand for TERO;
   using this definition, TERO can show the tree topology and node
   connectivity.

   The distance field in TERO hops is always relative to the sender
   node.  This is true in ALL messages in which a TERO can appear.





Yasukawa, et. al.                                              [Page 17]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


3.7.1.4 Object format

   Class = TREE_EXPLICIT_ROUTE, C_Type = 1

     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    //                         (Subobjects)                        //
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Subobject format

   Type = IPv4_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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |L|  Type (1)   |     Length    |T|   Distance  |   Sequence    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     IPv4 address (4 bytes)                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type = UNNUMBERED_INTERFACE

     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |L|  Type (2)   |     Length    |T|   Distance  |   Sequence    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                           Router ID                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Interface ID (32 bits)                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
















Yasukawa, et. al.                                              [Page 18]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Type = IPv6_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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |L|  Type (3)   |     Length    |T|   Distance  |   Sequence    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   IPv6 address (16 bytes)                                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   IPv6 address (continued)                                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   IPv6 address (continued)                                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   IPv6 address (continued)                                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   L

      The L bit is an attribute of the subobject.  The L bit is set if
      the route of a path between the node specified by this subobject
      and its upstream node is not specified (Loose explicit route). If
      the bit is not set, the route of a path is specified explicitly
      (Strict explicit route).

   Type

      0x01  IPv4 address
      0x02  Unnumbered Interface ID
      0x03  IPv6 address

   Length

      The Length contains the total length of the subobject in bytes,
      including the Type and Length fields.

   IPv4/6 address

      An IPv4/6 address of node corresponding to the subobject. In the
      case that the node has several IP addresses, the address of input
      interface should be specified.

   Router ID

      The Router ID of the node corresponding to the subobject.

   Unnumbered Interface ID

      The unnumbered interface ID [11].



Yasukawa, et. al.                                              [Page 19]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Distance

      The distance from the sender node to the node specified by the
      subobject. The value of distance between neighboring nodes
      specified in TERO is 1.

   T

      The T bit (terminating node) is set to 1 to indicate that the node
      in this hop is a data terminating node and has locally attached
      clients (receivers of the data).  This bit MUST be set for any of
      the leaf nodes listed in the TERO.

   Sequence

      The sequence number associated with this TERO hop.


3.7.2 Tree Record Route Object (TRRO)

   Record Route Object (RRO) is a list of subobjects describing a node.
   Each subobject is sorted to show the order in which the message went
   through the nodes.  In multicast communication, some messages SHOULD
   be merged into a new message to integrate the information that each
   message conveys. In this case, RRO shows all the nodes through which
   each message traveled. So RRO should be able to represent the tree
   structure in multicasting. We call the extended RRO a TRRO.

   When messages are merged at a branch node, their TRROs also are
   merged. Each TRRO shows the topology information of the downstream
   subtree. The merged TRRO is a series of downstream TRROs. The
   subobject specifying the branch node is inserted at the top of the
   series. So the merged TRRO shows the subtree whose root is the branch
   node. In the case of a Resv message, when the message arrives at the
   sender node of the multicast tree, TRRO shows the current topology of
   the multicast tree. To represent the tree topology, the subobjects of
   TRRO are sorted in depth-first-order and they have information about
   the number of hops from the sender node as the case of TERO. The
   topology information may be sent to all nodes composing the multicast
   tree by refreshing the Path message.











Yasukawa, et. al.                                              [Page 20]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


                                 |
          +----------------------|----------------------+
          |  Multicast           |                      |
          |  tree T              N                      |
          |                      |                      |
          |       +--------------+--------------+       |
          |       |              |              |       |
          | +-----------+  +-----------+  +-----------+ |
          | | Subtree 1 |  | Subtree 2 |  | Subtree n | |
          | +-----------+  +-----------+  +-----------+ |
          +---------------------------------------------+
                     T = {R(0),T1,T2,...,Tn}
                     Ti = {TRRO describing subtree i}

                      Figure 5 Merged TRRO

3.7.2.1 Object format

   Class = TREE_RECORD_ROUTE, C_Type = 1

     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    //                         (Subobjects)                        //
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.7.2.2 Subobject format

   Type = IPv4_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 (1)   |     Length    |T|   Distance  |     Flags     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      IPv4 address  (4 bytes)                  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+












Yasukawa, et. al.                                              [Page 21]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Type = UNNUMBERED_INTERFACE

     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 (2)   |     Length    |T|   Distance  |     Flags     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                           Router ID                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Interface ID (32 bits)                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type = IPv6_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 (3)   |     Length    |T|  Distance   |     Flags     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   IPv6 address (16 bytes)                                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   IPv6 address (continued)                                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   IPv6 address (continued)                                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   IPv6 address (continued)                                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type

      0x01  IPv4 address
      0x02  Unnumbered Interface ID
      0x03  IPv6 address

   Length

      The Length contains the total length of the subobject in bytes,
      including the Type and Length fields.

   T

      The T bit (terminating node) is set to 1 to indicate that the node
      in this hop is a data terminating node and has locally attached
      clients (receivers of the data).  This bit MUST be set for any of
      the leaf nodes listed in the TRRO.

   Distance




Yasukawa, et. al.                                              [Page 22]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


      The distance from sender node to the node specified by the
      subobject. The value of distance between neighboring nodes
      specified in TRRO is 1.

   Flags

      0x01  Local protection available

            Indicates that the link downstream of this node is
            protected via a local repair mechanism.  This flag can
            only be set if the Local protection flag was set in the
            SESSION_ATTRIBUTE object of the corresponding Path
            message.

      0x02  Local protection in use

            Indicates that a local repair mechanism is in use to
            maintain this tunnel (usually in the face of an outage
            of the link it was previously routed over).

      0x04  Bandwidth protection

            The PLR will set this when the protected LSP has a backup
            path which provides the desired bandwidth, which is that in
            the FAST_REROUTE object or the bandwidth of the protected
            LSP, if no FAST_REROUTE object was included.  The PLR may
            set this whenever the desired bandwidth is guaranteed; the
            PLR MUST set this flag when the desired bandwidth is
            guaranteed and the "bandwidth protection desired" flag was
            set in the SESSION_ATTRIBUTE object.

      0x08  Node protection

            When set, this indicates that the PLR has a backup path
            providing protection against link and node failure on the
            corresponding path section. In case the PLR could only setup
            a link-protection backup path, the "Local protection
            available" bit will be set but the "Node protection" bit
            will be cleared.

   IPv4/6 address

      A 32/128-bit unicast, host address.

   Router ID

      The Router ID of the node corresponding to the subobject.




Yasukawa, et. al.                                              [Page 23]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Unnumbered Interface ID

      The unnumbered interface ID [11].

3.7.3 Message Size

   The introduction of the TERO and TRRO objects has increased the
   likelihood that a message carrying either of these objects may exceed
   the link MTU. If a message exceeds the link MTU, then IP
   fragmentation and reassembly MUST be used in sending the message to
   it's destination.

3.8 Multicast Notify Message

   The Multicast Notify message is used to convey information to non-
   adjacent nodes about multicast tree operations.  Other sections of
   this document specify when it is appropriate to send the Multicast
   Notify message.

   The contents of the Multicast Notify message is as follows:
   <MulticastNotify Message>::=<Common Header>
                               <SESSION>
                               <SENDER_TEMPLATE>
                               <MULTICAST_NOTIFY>

   The MULTICAST_NOTIFY object has 3 different C-Types as follows:

     1 - MulticastErr
     2 - JoinErr
     3 - LeaveErr

   The details of the contents of the MULTICAST_NOTIFY object for each
   of these C-Types are described in other sections of this document.


4. Sender-initiated multicast LSP establishment

4.1 Sender-initiated Multicast LSP establishment mechanism

   The sender node initiates a Path message with a TERO including
   a multicast tree topology to be established. This Path message is
   forwarded along the path described in the TERO and duplicated by
   each branch node. Each node receiving the Path message records the
   multicast tree state described in the SESSION object and the
   SENDER_TEMPLATE object. A leaf node which receives a Path message
   responds to it by sending a Resv message including a LABEL and a TRRO
   object. A Resv message is sent back upstream towards the sender node
   on a hop-by-hop basis according to the recorded multicast tree state



Yasukawa, et. al.                                              [Page 24]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   in each intermediate node.

   The Resv messages from all downstream nodes MUST be merged at the
   branch node. When the sender node receives the Resv messages, the
   establishment of the multicast LSP is completed. Figure 6 shows the
   sequence of multicast LSP establishment events. Node B, which is the
   branch node for the nodes C, D, and E, merges the Resv messages.
   After this merging, the node B initiates a Resv message and sends it
   upstream.

                   +---node--**
                   |     (C)
                   +---------node--**
                   |            (D)
  Content          |                                        (leaf)
  Servers--sender--node----------------node---------------node--client
           (A)    (B)                  (E)                (F)
            |      |      |      |      |                  |      |
            | Path(TERO)  |      |      |                  |      |
            |----->|      |      |      |                  |      |
            |      | Path(TERO)  |      |                  |      |
            |      |----->|      |      |                  |      |
            |      |    Path(TERO)      |                  |      |
            |      |------------>|      |                  |      |
            |      |       Path(TERO)   |                  |      |
            |      |------------------->|                  |      |
            |      |      |      |      |    Path(TERO)    |      |
            |      |      |      |      |----------------->|      |
            |      |      |      |      |    Resv(TRRO)    |      |
            |      | Resv(TRRO)  |      |<-----------------|      |
            |      |<-----|      |      |                  |      |
            |      |    Resv(TRRO)      |                  |      |
            |      |<------------|      |                  |      |
            |      |      |Resv(TRRO)   |                  |      |
            |      |<-------------------|                  |      |
            | Resv(TRRO)  |      |      |                  |      |
            |<-----|      |      |      |                  |      |
            |      |      |      |      |                  |      |

        Figure 6 Sequence of sender-initiated multicast LSP
                 establishment events

4.2 Processing of TERO and TRRO for sender-initiated multicast LSP
    establishment

   A node that receives a Path message refers to the SESSION object and
   SENDER_TEMPLATE.  The node determines whether the Path message is for
   an existing LSP or a new LSP.



Yasukawa, et. al.                                              [Page 25]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   If the Path message is for a new LSP, then the following procedure
   applies.  The node verifies that the first subobject (hop) in the
   TERO is an address or interface belonging to this node.  If not, then
   an appropriate error message MUST be sent upstream.  The specific
   error message to send is described elsewhere in this document.  The
   error to return is "Bad EXPLICIT_ROUTE object", as specified in RFC
   3209 [1].  If the TERO contains only one hop, then this node is a
   leaf node and sends a Resv message upstream.  Otherwise, the TERO is
   processed to locate all hops with a distance that is 1 greater than
   the distance value contained in the first TERO hop.  For each such
   hop, a unicast Path message MUST be sent to the node specified by the
   TERO hop.

   If the Path message is for an existing LSP, then the following
   procedure applies.  If the first subobject in the TERO contains the
   same sequence number as in the previously received Path message, then
   the entire TERO is treated as if no change has occurred and
   processing ends.  Otherwise, the TERO is processed as follows.
   Locate each hop in the TERO with a distance that is 1 greater than
   the distance value contained in the first TERO hop and add it to a
   next hop list.  If there are any downstream nodes for which this node
   holds path state that do NOT appear in the next hop list, then a
   PathTear message MUST be sent immediately to that node.  Then, for
   each hop in the next hop list, if there is no path state for this
   next hop, then a unicast Path message MUST be sent to the node
   specified by the TERO hop.  Otherwise (path state is found), if the
   new sequence number is different than the sequence number previously
   recorded in the path state, then a unicast Path trigger message MUST
   be sent to the node specified by the TERO hop.

   Note that the TERO in each outgoing Path message MUST contain just
   the subtree with the next hop node as the root node of that subtree.

   Each node that receives a Resv message containing a LABEL object uses
   that label for outgoing traffic associated with this LSP tunnel. If
   the node is not the sender node, it allocates a new label and places
   that label in the corresponding LABEL object of the Resv message,
   which it sends upstream to the PHOP.  A branch node that sends
   multiple Path messages to downstream nodes MUST forward a Resv
   message upstream ONLY after it receives a reply, whether positive
   (Resv) or negative (PathErr), from ALL downstream nodes to whom it
   sent a Path message. In order to handle non-reply from downstream
   nodes, a node MAY start a response timer upon sending outgoing PATH
   messages.  If the response timer expires, then each outgoing PATH
   message for which no reply was received is treated the same as if a
   PathErr message had been received.

   See section "Error Handling and Error Codes" for a description of



Yasukawa, et. al.                                              [Page 26]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   how to handle received PathErr messages.

   When Resv messages are merged, a new TRRO is made using TRROs
   included in the received Resv messages. This new TRRO expresses
   the multicast subtree. The branch node that merges Resv messages is
   the root node of multicast subtree. The TRRO of the Resv messages is
   needed to detect loops on the multicast tree. The node SHOULD record
   information of TRRO.

4.3 Teardown mechanism

   A multicast LSP tunnel is explicitly torn down by a PathTear message.
   The PathTear message must be routed exactly like the corresponding
   Path message. The PathTear message is copied by each branch node and
   is forwarded downstream to delete the corresponding path state.
   PathTear messages are initiated not only by the sender node but also
   by the branch node that receives a Path message with a TERO from
   which downstream nodes have been removed.

   The process of pruning nodes from an existing multicast tree is
   described in section 5.3.

4.4 Path/Resv error

   During the multicast LSP establishment described in section 4.1 and
   4.2, various errors may occur. The main reasons are bandwidth
   allocation failures and unknown next hops specified by TERO.  If a
   node does not support a new object or new C-type defined by this
   protocol, it sends error messages indicating "unknown object class"
   error or an "Unknown object C-Type". A node that initiates a ResvErr
   message SHOULD send ResvErr messages to all leaf nodes that are
   affected by the error.

4.5 Message format

4.5.1 Path message format

   TERO is added to the Path message.  Note that a new C-Type is added
   to SESSION object.












Yasukawa, et. al.                                              [Page 27]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   <Path Message> ::= <Common Header> [ <INTEGRITY> ]
                                        <SESSION>
                                        <RSVP_HOP>
                                        <TIME_VALUES>
                                        <TREE_EXPLICIT_ROUTE>
                                        <LABEL_REQUEST>
                                        [ <SESSION_ATTRIBUTE> ]
                                        [ <POLICY_DATA> ... ]
                                        <sender descriptor>

   <sender descriptor> ::=  <SENDER_TEMPLATE> <SENDER_TSPEC>
                                             [ <ADSPEC> ]
                                             [ <RECORD_ROUTE> ]

4.5.2 Resv message format

   TRRO is added to the Resv message.  Note that a new C-Type is added
   to SESSION object.

   <Resv Message> ::= <Common Header> [ <INTEGRITY> ]
                                       <SESSION><RSVP_HOP>
                                       <TIME_VALUES>
                                       [ <RESV_CONFIRM> ]  [ <SCOPE> ]
                                       [ <POLICY_DATA> ... ]
                                       <STYLE> <flow descriptor list>

   <flow descriptor list> ::= <FF flow descriptor list>
                                          | <SE flow descriptor>

   <FF flow descriptor list> ::= <FLOWSPEC> <FILTER_SPEC>
                                  <LABEL> [ <TREE_RECORD_ROUTE> ]
                                          | <FF flow descriptor list>
                                  <FF flow descriptor>

   <FF flow descriptor> ::= [ <FLOWSPEC> ] <FILTER_SPEC>
                            <LABEL>[ <TREE_RECORD_ROUTE> ]

   <SE flow descriptor> ::= <FLOWSPEC> <SE filter spec list>

   <SE filter spec list> ::= <SE filter spec>
                             | <SE filter spec list> <SE filter spec>

   <SE filter spec> ::= <FILTER_SPEC> <LABEL> [ <TREE_RECORD_ROUTE> ]

4.5.3 Other RSVP message formats

   With the exception of a new C-Type for the Session object, there is
   no change in the format of PathTear, PathErr, ResvErr and ResvConf.



Yasukawa, et. al.                                              [Page 28]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


5. Sender-initiated grafting/pruning mechanism

   This section describes maintenance of an existing multicast tree.
   All setup and teardown of a multicast tree or subtree is controlled
   by the sender node.  Changes to be made are signaled to downstream
   nodes by making changes in the outgoing TERO object.  To add (graft)
   a subtree to a multicast tree, new hops are added to the TERO.  To
   remove (prune) a subtree from an existing multicast tree, hops are
   removed from the TERO.

   The basis for choosing the mechanism for determining that a change to
   the multicast tree is requested is that the TERO object can grow
   quite large as the number of levels and number of branches at each
   level increases.   For instance, using all IPv4 hops, The TERO object
   for a tree with 5 levels and 3 branches at each node is about 2900
   octets.  With 5 levels and 5 branches per node, the TERO grows to
   about 31000 octets.  If for each refresh Path message the entire TERO
   were compared for changes, the amount of time spent processing the
   Path message could be quite long.

   With this in mind, the sequence field is included in each TERO hop
   subobject.  When a tree topology change is required, the sender node
   changes the outgoing TERO and puts a new sequence number in each TERO
   hop along the series of hops towards the graft or prune node.  This
   enables each downstream node to quickly determine whether the entire
   TERO needs to be checked for specific changes.

5.1 Sender-initiated grafting mechanism

   The grafting mechanism supports grafting of a partial multicast tree
   (subtree) onto an established multicast tree.  We define the node
   that performs subtree establishment as a graft node.

   The sender node initiates grafting by sending an updated TERO in the
   outgoing Path message towards the graft node.  Each TERO hop object
   along the path towards the graft node MUST have it's sequence number
   set to a value that is 1 greater than the value previously sent in
   the first hop object in the TERO.

   The processing of the TERO object at each node is as described in
   section "Processing of TERO and TRRO for sender-initiated multicast
   LSP establishment".

   For example, refer to figure 4.  Assume all nodes in the figure are
   members of the multicast tree except D & E, and that the current
   sequence number in all TERO hops is 23.  Now, in order to graft nodes
   D & E into the tree, the following TERO would be sent by node A to
   node B:



Yasukawa, et. al.                                              [Page 29]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


      {B(1,24),C(2,24),D(3,24),E(3,24),F(2,23),G(2,23),H(3,23)}

         where N(d,s) means
            Node = N
            distance = d
            sequence = s

   Figure 7 shows the message sequence of the proposed grafting process.


                  +--node--client
                  |  (C)
                  +-----node-client +----------node--client
                  |      (D)        |          (F)
 Content          |                 |                   (Leaf)
 Servers--Sender--node-------------node---------------node--client
          (A)    (B)               (E)                (G)
           |      |   |   |         |           |      |      |
           |      |   |   |         |           |      |      |
           |Path(TERO)|   |         |           |      |      |
           |----->|   |   |         |           |      |      |
           |      | Path(TERO)      |           |      |      |
           |      |---------------->|           |      |      |
           |      |   |   |         |  Path(TERO)      |      |
           |      |   |   |         |----------------->|      |
           |      |   |   |         |  Path(TERO)      |      |
           |      |   |   |         |---------->|      |      |
           |      |   |   |         |  Resv(TRRO)      |      |
           |      |   |   |         |<-----------------|      |
           |      |   |   |         |  Resv(TRRO)      |      |
           |      | Resv(TRRO)      |<----------|      |      |
           |      |<----------------|           |      |      |
           |Resv(TRRO)|   |         |           |      |      |
           |<-----|   |   |         |           |      |      |
           |      |   |   |         |           |      |      |

           Original TERO = {A(1),B(1),C(1),D(1)}
           Modified TERO = {A(2),B(2),C(1),D(1),E(2),F(2),G(2)}
             Sequence number in parentheses.

                    Figure 7: Sequence of graft process

5.2 Graft Error

   Figure 8 shows the error message sequence of the grafting process. In
   this example, part of the expanded tree tunnel cannot be established
   for some reason, such as a resource error or label assignment error.
   Each node that cannot establish an LSP MUST send a PathErr message



Yasukawa, et. al.                                              [Page 30]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   that includes the error code to the graft node.

   See section "Error Handling and Error Codes" for a description of how
   to handle received PathErr messages.

                  +--node--client   +----node--client
                  |  (C)            |     (H)
                  +-----node-client +-----------node--client
                  |      (D)        |            (G)
 Content          |                 |                     (Leaf)
 Servers--Sender--node------------node-----------------node--client
          (A)    (B)               (E)                  (F)
           |      |   |   |         |      |      |      |      |
           |Path(TERO)|   |         |      |      |      |      |
           |----->|   |   |         |      |      |      |      |
           |      |Path(TERO)       |      |      |      |      |
           |      |---------------->|      |      |      |      |
           |      |   |   |         |Path(TERO)   |      |      |
           |      |   |   |         |------------------->|      |
           |      |   |   |         |Path(TERO)   |      |      |
           |      |   |   |         |------------>|      |      |
           |      |   |   |         |Path(TERO)   |      |      |
           |      |   |   |         |----->|      |      |      |
           |      |   |   |         |   Resv(TRRO)|      |      |
           |      |   |   |         |<-------------------|      |
           |      |   |   |         |   PathErr   |      |      |
           |      |   |   |         |<------------|      |      |
           |      |   |   |         |   PathErr   |      |      |
           |      | Resv(TRRO)      |<-----|      |      |      |
        Resv(TRRO)|<----------------|      |      |      |      |
           |<-----|   |   |         |      |      |      |      |
           |      | MulticastErr    |      |      |      |      |
           |<-----------------------|      |      |      |      |
           |      | MulticastErr    |      |      |      |      |
           |<-----------------------|      |      |      |      |
           |      |   |   |         |      |      |      |      |

           Original TERO = {A(1),B(1),C(1),D(1)}
           Modified TERO = {A(2),B(2),C(1),D(1),E(2),F(2),G(2),H(2)}
             Sequence number in parentheses.

                  Figure 8: Sequence of graft error process

   A node supporting this multicast mechanism MUST support the graft
   mechanism described in this section.  When a graft
   node that is requested to perform a grafting process detects some
   error in this message, it SHOULD send a MulticastErr message that
   includes the error code to the sender node.  The following are



Yasukawa, et. al.                                              [Page 31]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   examples of errors:
       - No route available toward destination (from RFC 3209 [1])
         a portion of or the whole subtree setup failed because no route
         was available

5.3 Sender-initiated pruning mechanism

   The pruning mechanism supports pruning of unnecessary multicast
   subtree tunnels from an established multicast tree tunnel. It allows
   an intermediate node to prune unnecessary multicast subtree tunnels.
   We define the node that performs the pruning as a prune node.

   The sender nodes initiates pruning by sending an updated TERO in the
   outgoing Path message towards the prune node.  Each TERO hop object
   along the path towards the prune node MUST have it's sequence number
   set to a value that is 1 greater than the value previously sent in
   the first hop object in the TERO.

   The processing of the TERO object at each node is as described in
   section "Processing of TERO and TRRO for sender-initiated multicast
   LSP establishment".

   For example, refer to figure 4.  Assume all nodes in the figure are
   members of the multicast tree, and that the current sequence number
   in all TERO hops is 23.  Now, in order to prune node D from the tree,
   the following TERO would be sent by node A to node B:

      {B(1,24),C(2,24),E(3,23),F(2,23),G(2,23),H(3,23)}

         where N(d,s) means
            Node = N
            distance = d
            sequence = s

   Note that node D does not appear in the TERO.  Once node C receives
   the TERO, node C sends a PathTear message to node D since path state
   is held by node C for node D.

   Figure 9 shows the message sequence of the pruning process.












Yasukawa, et. al.                                              [Page 32]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


                  +---node--client     +----node--client
                  |    (C)             |     (H)
                  +--------node-client +-----------node--client
                  |         (D)        |            (G)
 Content          |                    |                     (Leaf)
 Servers--Sender--node----------------node----------------node--client
          (A)    (B)                  (E)                  (F)
           |Path(TERO)  |    |         |      |      |      |      |
           |----->|     |    |         |      |      |      |      |
           |      |Path Tear |         |      |      |      |      |
           |      |------------------->|      |      |      |      |
           |Resv(TRRO)  |    |         |      |      |      |      |
           |<-----|     |    |         |      |      |      |      |
           |      |     |    |         |Path Tear    |      |      |
           |      |     |    |         |------------------->|      |
           |      |     |    |         |Path Tear    |      |      |
           |      |     |    |         |------------>|      |      |
           |      |     |    |         |Path Tear    |      |      |
           |      |     |    |         |----->|      |      |      |

           Original TERO = {A(1),B(1),C(1),D(1),E(1),F(1),G(1),H(1)}
           Modified TERO = {A(2),B(2),C(1),D(1)}
             Sequence number in parentheses.

                Figure 9: Sequence of prune process


6. Leaf-initiated multicast LSP establishment

6.1 Leaf-initiated joining mechanism

   A leaf node wishing to join a multicast tree sends a Join message
   corresponding to the tree. Here, we call the node a join leaf node. A
   Join message is a trigger for establishing a QoS path requested by a
   join leaf node.

   The Join message is addressed to the sender node.  The Router Alert
   option MUST be disabled.  Therefore, the Join message is sent as a
   hop-by-hop routed IP datagram until reaching the sender node.

   A Join message has no specifications about the QoS parameters of the
   expanded path, i.e., there is no SenderTSpec object in the Join
   message.  The sender node knows the QoS parameters because it has
   already included them in the Path message for setting up the tree.
   Therefore, the join leaf node inherits the same QoS parameters as
   every other node in the tree.

   The process of expanded path establishment is as follows. The leaf



Yasukawa, et. al.                                              [Page 33]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   node wishing to join a multicast tree sends a Join message to the
   sender node.  After the sender node receives the message, it checks
   that it is in fact the sender node for the specified tunnel.  If not,
   it sends a JoinErr message to the join leaf node.  Otherwise, the
   sender node calculates a path to reach the leaf node.  If no such
   path can be calculated, a JoinErr message is sent to the leaf node.
   Otherwise, the sender node sends out an updated TERO in the outgoing
   Path message towards the joining leaf node.  Each TERO hop object
   along the path towards the leaf node MUST have it's sequence number
   set to a value that is 1 greater than the value previously sent in
   the first hop object in the TERO.

   The processing of the TERO object at each node is as described in
   section "Processing of TERO and TRRO for sender-initiated multicast
   LSP establishment".

                   :
                   :
                   +---......
 Content           |                                          (leaf)
 Servers--Sender--node----------------node-----------------node--client
           (A)    (E)                  (F)                  (G)
            |      |        Join        |                    |     |
            |<-----------------------------------------------|     |
            | Path(TERO)                |                    |     |
            |----->|                    |                    |     |
            |      |   Path(TERO)       |                    |     |
            |      |------------------->| Path(TERO)         |     |
            |      |                    |------------------->|     |
            |      |                    | Resv(TRRO)         |     |
            |      |   Resv(TRRO)       |<-------------------|     |
            |      |<-------------------|                    |     |
            | Resv(TRRO)                |                    |     |
            |<-----|                    |                    |     |
            |      |                    |                    |     |

           Original TERO = {A(1),E(1), ... ,F(1)}
           Modified TERO = {A(2),E(2), ... ,F(2),G(2)}
             Sequence number in parentheses.

                  Figure 10: Sequence of join process

6.2 Join Error

   During the Join process described in the previous section, various
   errors may occur. In the Join process, the join leaf node is notified
   of the errors and analyzes them. For this purpose, the JoinErr
   message is defined, which is sent by the sender node to the join leaf



Yasukawa, et. al.                                              [Page 34]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   node. It is sent when the graft node receives a PathErr message or
   detects an internal error.  The JoinErr message is sent addressed to
   the leaf node with the Router Alert option disabled.  The following
   are examples of errors:

      - Node is not sender node of multicast tree
         The receiving node has is the sender node for the specified
         multicast tree
      - No route available toward destination (from RFC 3209 [1])
         The subtree setup failed because no route was available

                   :
                   :
                   +---......
 Content           |                                           (leaf)
 Servers--Sender--node----------------node------------------node--client
           (A)    (E)                  (F)                  (G)
            |      |        Join        |                    |     |
            |<-----------------------------------------------|     |
            |  Path(TERO)               |                    |     |
            |----->|                    |                    |     |
            |  PathErr                  |                    |     |
            |<-----|                    |                    |     |
            |      |      JoinErr       |                    |     |
            |----------------------------------------------->|     |
            |      |                    |                    |     |

           Original TERO = {A(1),E(1), ... ,F(1)}
           Modified TERO = {A(2),E(2), ... ,F(2),G(2)}
             Sequence number in parentheses.

                  Figure 11: Sequence of JoinErr process

6.3 Leaf-initiated leaving mechanism

   A leaf node wishing to leave a multicast tree sends a Leave message
   corresponding to the tree.  Here, we call the node a leave leaf node.
   A Leave message is a trigger for tearing down a portion of a
   multicast tree.

   The Leave message is addressed to the sender node.  The Router Alert
   option MUST be disabled.  Therefore, the Leave message is sent as a
   hop-by-hop routed IP datagram until reaching the sender node.

   The process of leaving is as follows. The leaf node wishing to leave
   a multicast tree sends a Leave message to the sender node.  After the
   sender node receives the message, it checks that it is in fact the
   sender node for the specified tunnel.  If not, it sends a LeaveErr



Yasukawa, et. al.                                              [Page 35]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   message to the leave leaf node.  Otherwise, the sender node removes
   the leave leaf node from the TERO.  If the leave leaf node is not in
   the current TERO, a LeaveErr message is sent to the leaf node.
   Otherwise, the sender node sends out an updated TERO in the outgoing
   Path message towards the leave leaf node.  Each TERO hop object
   along the path towards the leaf node MUST have it's sequence number
   set to a value that is 1 greater than the value previously sent in
   the first hop object in the TERO.

   The processing of the TERO object at each node is as described in
   section "Processing of TERO and TRRO for sender-initiated multicast
   LSP establishment".

                   :
                   :
                   +---......
 Content           |                                           (leaf)
 Servers--Sender--node----------------node------------------node--client
           (A)    (E)                  (F)                  (G)
            |      |        Leave       |                    |     |
            |<-----------------------------------------------|     |
            | Path(TERO)                |                    |     |
            |----->|                    |                    |     |
            |      |   Path(TERO)       |                    |     |
            |      |------------------->| PathTear           |     |
            |      |                    |------------------->|     |
            |      |   Resv(TRRO)       |                    |     |
            |      |<-------------------|                    |     |
            | Resv(TRRO)                |                    |     |
            |<-----|                    |                    |     |
            |      |                    |                    |     |

           Original TERO = {A(1),E(1), ... ,F(1),G(1)}
           Modified TERO = {A(2),E(2), ... ,F(2)}
             Sequence number in parentheses.

                  Figure 12: Sequence of leave process

6.4 Leave Error

   During the leave process described in the previous section, various
   errors may occur. In the leave process, the leave leaf node is
   notified of the errors and analyzes them. For this purpose, the
   LeaveErr message is defined, which is sent by the sender node to the
   leave leaf node. It is sent when the sender node receives an error
   message or detects an internal error.  The LeaveErr message is sent
   addressed to the leaf node with the Router Alert option disabled.
   The following are examples of errors:



Yasukawa, et. al.                                              [Page 36]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


      - Node is not sender node of multicast tree
         The receiving node is not the sender node for the specified
         multicast tree
      - Leaf node not found in TERO
         The sender node could not locate the leaf node in the TERO

                   :
                   :
                   +---......
 Content           |                                           (leaf)
 Servers--Sender--node----------------node------------------node--client
           (A)    (E)                  (F)                  (G)
            |      |       Leave        |                    |     |
            |<-----------------------------------------------|     |
            |      |      LeaveErr      |                    |     |
            |----------------------------------------------->|     |
            |      |                    |                    |     |

           Original TERO = {A(1),E(1), ... ,F(1)}
             Note that G is not a member of the tree.
             Sequence number in parentheses.

                  Figure 13: Sequence of LeaveErr process

6.5 Message formats

   The following sections describe the formats for messages used during
   leaf-initiated join and leave operation.  A new object, LEAF_NODE_ID,
   is introduced to tell upstream nodes the identity of the requesting
   leaf node.  The format of the LEAF_NODE_ID object is as follows:

   Class = LEAF_NODE_ID

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             | Class-Num TBD |   C-Type (1)  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         IPv4 Address                          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+











Yasukawa, et. al.                                              [Page 37]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             | Class-Num TBD |   C-Type (2)  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   IPv6 address (16 bytes)                                     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   IPv6 address (continued)                                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   IPv6 address (continued)                                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   IPv6 address (continued)                                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length

      The Length contains the total length of the subobject in bytes,
      including the Type and Length fields.

   Class-Num

      The Class Number for the LEAF_NODE_ID object.  TBD.

   C-Type

      0x01   IPv4 address
      0x02   IPv6 address

   IPv4/IPv6 Address

      An IPv4 or IPv6 address identifying the leaf node requesting the
      Join or Leave message.

6.5.1 Join message format

   <Join Message>::=<Common Header>
                    <SESSION>
                    <LEAF_NODE_ID>
                    <sender descriptor>

   <sender descriptor>::=(see earlier definition)

6.5.2 JoinErr message format








Yasukawa, et. al.                                              [Page 38]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   The JoinErr message utilizes the MulticastNotify message with a
   MULTICAST_NOTIFY object as follows:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             | Class-Num TBD |   C-Type (2)  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       ErrorSpec Object                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length

      The Length contains the total length of the subobject in bytes,
      including the Type and Length fields.

   Class-Num

      The Class Number for the MULTICAST_NOTIFY object.  TBD.

   C-Type

      2 = JoinErr

   ErrorSpec Object

      The ErrorSpec object either copied from the received PathErr
      message or locally generated.

6.5.3 Leave message format

   <Leave Message>::=<Common Header>
                     <SESSION>
                     <LEAF_NODE_ID>
                     <sender descriptor>

   <sender descriptor>::=(see earlier definition)














Yasukawa, et. al.                                              [Page 39]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


6.5.4 LeaveErr message format

   The LeaveErr message utilizes the MulticastNotify message with a
   MULTICAST_NOTIFY object as follows:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             | Class-Num TBD |   C-Type (3)  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       ErrorSpec Object                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length

      The Length contains the total length of the subobject in bytes,
      including the Type and Length fields.

   Class-Num

      The Class Number for the MULTICAST_NOTIFY object.  TBD.

   C-Type

      3 = LeaveErr

   ErrorSpec Object

      The ErrorSpec object either copied from the received PathErr
      message or locally generated.


7. Error Handling and Error Codes

   This section describes error handling and the values to use for newly
   introduced errors.

   The handling of received PathErr and Resv messages at a branch node
   and at a non-branch node is described in more detail.  Note that the
   following descriptions assume that ALL downstream nodes have
   responded, or that the response timer has expired.

7.1 Error Handling at Branch Node

   If no part of the subtree setup succeeded, (i.e., no Resv messages
   were received), then a single PathErr message with error "Subtree
   setup completely failed" MUST be sent to the PHOP node.




Yasukawa, et. al.                                              [Page 40]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Otherwise (i.e., at least one Resv message was received), a Resv
   message MUST be sent to the PHOP node.  The TRRO object is merged
   from all the received TRRO objects, after which the current node adds
   itself to the TRRO.  Then, for each received PathErr message, a
   MulticastErr message containing the ErrorSpec object copied from the
   PathErr message MUST be sent to the sender node with the Router Alert
   option disabled.

   The MulticastErr message utilizes the MulticastNotify message with a
   MULTICAST_NOTIFY object as follows:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             | Class-Num TBD |   C-Type (1)  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       ErrorSpec Object                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length

      The Length contains the total length of the subobject in bytes,
      including the Type and Length fields.

   Class-Num

      The Class Number for the MULTICAST_NOTIFY object.  TBD.

   C-Type

      1 = MulticastErr

   ErrorSpec Object

      The ErrorSpec object either copied from the received PathErr
      message or locally generated.

7.2 Error Handling at Non-Branch Node

   If a PathErr message is received, it MUST be sent to the PHOP without
   altering the ErrorSpec object.  Otherwise, a Resv was received and a
   Resv MUST be sent to the PHOP node.  The TRRO object is generated by
   adding the current node to the TRRO from the received Resv.

7.3 Error During Resv Processing

   A node detecting an error during Resv processing (e.g., traffic
   control failure) MUST treat this as if a PathErr message had been



Yasukawa, et. al.                                              [Page 41]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   received from all affected downstream nodes.  Then, the processing
   follows the procedures in other subsections of this section.

   A node receiving a Resv message with the style object specifying a
   different style than that requested in the Path message MUST treat
   this as an error and proceed as above in this section.

7.4 Error Codes and Error Value Sub-Codes

   The following list extends the basic list of Error Codes and Values
   that are defined in [RFC2205].

    Error Code    Meaning

      TBD         Multicast Problem

                  This Error Code has the following globally-defined
                  Error Value sub-codes:

                   1       Node is not sender node of multicast tree
                   2       Leaf node not found in TERO
                   3       Subtree setup completely failed


8. Use of Refresh Reduction

   The multicast extensions in this document introduce several new
   messages.  These messages are paramount to the successful signaling
   and maintenance of multicast trees.  These messages are sometimes
   transmitted to non-adjacent nodes and are not refreshed in the manner
   that Path and Resv messages are.  If one of these messages is dropped
   in transit, it will then never reach the intended destination node.
   It is therefore important to ensure that these messages are
   successfully received by the intended destination node.

   In order to achieve this goal, timers with retransmission should be
   used.  The refresh reduction extension [12] to RSVP already defines
   such a mechanism.

   Therefore, it is RECOMMENDED that implementations of this multicast
   extension also implement and enable refresh reduction with message
   identifiers and ack_desired.


9. Application for Traffic Engineering

9.1 Rerouting Traffic Engineered Multicast Tunnels




Yasukawa, et. al.                                              [Page 42]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Traffic Engineering supports rerouting of an established TE tunnel.
   The route is decided according to the administrative policy. The
   detection of a more optimal path and network resource failure are
   examples of situations where path rerouting is needed.

   While TE tunnel rerouting is in progress, an important requirement is
   avoiding traffic disruption. A useful solution to this problem is the
   make-before-break concept. In this concept, traffic passes through
   the old path while the new rerouted path is being established. Once
   it has been established, traffic is switched to the new path and the
   old path is torn down. The make-before-break concept supports
   resource sharing of the common part where the old and new path cross.
   This sharing is useful to avoid competition between the resources of
   the two paths. Details of the make-before-break concept are given in
   RFC 3209. In the case of multicasting, there are cases where the
   topology of the area to be rerouted is a tree and there are many
   paths that should be rerouted when path rerouting occurs at once. So
   it is desirable that multiple paths are moved in one rerouting
   mechanism.

   This protocol supports the make-before-break concept for multicast TE
   tunnels.  For this version of this protocol, only sender-initiated
   make-before-break of the entire multicast tree is supported.  Local
   repair using make-before-break is a topic for future study.

9.2 Re-establishment of subtree

   The graft mechanism can also be used re-establish a partial multicast
   LSP when the establishment of the subtree failed. In multicast LSP
   establishment, it sometimes happens that the establishment of the
   subtree fails and the establishment of another part of the tree
   succeeds. It is inefficient in this situation for the whole multicast
   LSP to be torn down by the PathTear message and for the whole
   multicast LSP to be re-established by the Path message. Re-
   establishment of a subtree whose establishment failed can be done
   using the graft mechanism. The sender node or NMS that recognizes
   that the establishment of a subtree failed can re-calculate another
   multicast route that avoids the failure point and can reach the leaf
   nodes. After this re-calculation, the sender node uses the graft
   mechanism with updated TERO for subtree re-establishment. This re-
   establishment does not cause any additional processing in nodes
   except along the path to the failure point, because the graft process
   only affects those nodes.


10. Security Considerations

   Security considerations will be addressed in a future revision of



Yasukawa, et. al.                                              [Page 43]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   this document.


11. References

   [1]  D. Awduche., L. Berger., D. Gan., T. Li., V. Srinivasan,
        G. Swallow, "RSVP-TE: Extensions to RSVP for LSP Tunnels",
        RFC3209, December 2001

   [2]  Braden, R., Zhang, L., Berson, S., Herzog, S. and S. Jamin,
        "Resource ReSerVation Protocol (RSVP) -- Version 1, Functional
        Specification", RFC 2205, September 1997.

   [3]  Rosen, E., Viswanathan, A. and R. Callon, "Multiprotocol Label
        Switching Architecture", RFC 3031, January 2001.

   [4]  Awduche, D., Malcolm, J., Agogbua, J., O'Dell and J. McManus,
        "Requirements for Traffic Engineering over MPLS", RFC 2702,
        September 1999.

   [5]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", BCP 14, RFC 2119, March 1997.

   [6]  W. Fenner, "Internet Group Management Protocol, IGMP, version
        2", RFC 2236, November 1997.

   [7]  Cain, B., "Internet Group Management Protocol, Version
        3", draft-ietf-idmr-igmp-v3-11.txt, May 2002

   [8]  D. Estrin, D. Farinacci, A. Helmy, D. Thaler, S. Deering,
        M. Handley, V. Jacobson, C. Liu, P. Sharma, L. Wei, "Protocol
        Independent Multicast-Sparse Mode (PIM-SM): Protocol
        Specification.", RFC 2362, June 1998.

   [9]  J. Moy, "Multicast Extensions to OSPF", RFC 1584, March 1994

   [10] Lou Berger, et al., "Generalized MPLS - Signaling Functional
        Description", draft-ietf-mpls-generalized-signaling-08.txt,
        April 2002

   [11] Kireeti Kompella, Yakov Rekhter, "Signalling Unnumbered Links in
        RSVP-TE", draft-ietf-mpls-rsvp-unnum-07.txt, July 2002.

   [12] L. Berger, D. Gan, G. Swallow, P. Pan, F. Tommasi, S. Molendini,
        "RSVP Refresh Overhead Reduction Extensions", RFC 2961, April
        2001.

   [13] Eric Mannie ,



Yasukawa, et. al.                                              [Page 44]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


        "Generalized Multi-Protocol Label Switching (GMPLS)
        Architecture", draft-ietf-ccamp-gmpls-architecture-03.txt,
        August 2002

   [14] D. Katz, D. Yeung, K. Kompella,
        "Traffic Engineering Extensions to OSPF Version 2",
        draft-katz-yeung-ospf-traffic-08.txt, September 2002

   [15] J. Moy, "OSPF Version 2", RFC 2328, April 1998

   [16] R. Callon,
       "Use of OSI IS-IS for Routing in TCP/IP and Dual Environments",
        RFC 1195, December 1990


12. Author's Addresses

   Seisho Yasukawa
   NTT Network Service Systems Laboratories, NTT Corporation
   9-11, Midori-Cho 3-Chome
   Musashino-Shi, Tokyo 180-8585 Japan
   Phone: +81 422 59 4769
   EMail: yasukawa.seisho@lab.ntt.co.jp


   Masanori Uga
   NTT Network Service Systems Laboratories, NTT Corporation
   9-11, Midori-Cho 3-Chome
   Musashino-Shi, Tokyo 180-8585 Japan
   Phone: +81 422 59 4804
   EMail: uga.masanori@lab.ntt.co.jp


   Hisashi Kojima
   NTT Network Service Systems Laboratories, NTT Corporation
   9-11, Midori-Cho 3-Chome
   Musashino-Shi, Tokyo 180-8585 Japan
   Phone: +81 422 59 6070
   EMail: kojima.hisashi@lab.ntt.co.jp


   Koji Sugisono
   NTT Network Service Systems Laboratories, NTT Corporation
   9-11, Midori-Cho 3-Chome
   Musashino-Shi, Tokyo 180-8585 Japan
   Phone: +81 422 59 2605
   EMail: sugisono.koji@lab.ntt.co.jp




Yasukawa, et. al.                                              [Page 45]


Internet Draft draft-yasukawa-mpls-rsvp-multicast-01.txt   November 2002


   Alan Kullberg
   Netplane Systems
   8 Technology Drive
   Westborough, MA
   EMail: akullber@netplane.com


   Markus Jork
   Avici Systems
   101 Billerica Avenue
   N. Billerica, MA 01862
   phone: +1 978 964 2142
   EMail: mjork@avici.com


   Dimitri Papadimitriou
   Alcatel
   Francis Wellesplein 1,
   B-2018 Antwerpen, Belgium
   Phone: +32 3 240-8491
   Email: Dimitri.Papadimitriou@alcatel.be






























Yasukawa, et. al.                                              [Page 46]