INTERNET DRAFT                                         Seisho Yasukawa
draft-yasukawa-mpls-rsvp-multicast-00.txt                 Masanori Uga
Expires: December 2002                                  Hisashi Kojima
                                                         Koji Sugisono
                                                                   NTT
                                                             June 2002



               

Extended RSVP-TE for Multicast LSP Tunnels

<draft-yasukawa-mpls-rsvp-multicast-00.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. Yasukawa, Uga, Kojima, Sugisono [Page 1]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 Table of Contents 1. Introduction ................................................... 3 2. Terminology .................................................... 3 3. Architecture ................................................... 5 3.1 Multicast LSP tunnels ...................................... 5 3.2 Multicast LSP topology ..................................... 7 3.3 Calculation of multicast tree route ........................ 7 3.4 Multicast LSP establishment, teardown, and modification mechanisms ................................................. 8 3.5 Basic operation of multicast LSP tunnels ................... 9 3.6 Multicast session ..........................................11 3.6.1 Multicast session object ..............................11 3.6.2 MULTICAST_LSP_TUNNEL_IPv4 session object ..............11 3.6.3 MULTICAST_LSP_TUNNEL_IPv6 session object ..............11 3.7 Explicit routing ...........................................11 3.7.1 Tree Explicit Route Object (TERO) .....................11 3.7.2 Tree Record Route Object (TRRO) .......................15 4. Sender-initiated multicast LSP establishment ...................18 4.1 Sender-initiated Multicast LSP establishment mechanism .....18 4.2 Process of sender-initiated multicast LSP establishment ....19 4.3 Teardown mechanism .........................................20 4.4 Path/Resv error ............................................20 4.5 Message format .............................................21 4.5.1 Path message format ...................................21 4.5.2 Resv message format ...................................21 4.5.3 PathTear message format ...............................22 4.5.4 PathErr message format ................................22 4.5.5 ResvErr Message format ................................22 5. Sender-initiated grafting/pruning mechanism ....................23 5.1 Sender-initiated grafting mechanism ........................23 5.2 Sender-initiated pruning mechanism .........................26 6. Leaf-initiated multicast LSP establishment .....................28 6.1 Leaf-initiated joining mechanism ...........................28 6.2 Join Error .................................................30 6.3 Leave-initiated leaving mechanism ..........................31 6.4 Message format .............................................32 6.4.1 Join message format ...................................32 6.4.2 JoinNotify message format .............................32 6.4.3 JoinErr message format ................................33 6.4.4 Leave message format ..................................33 6.4.5 LeaveNotify Message ...................................33 7. Multi-point to multi-point multicasting ........................33 7.1 MPLS Rendezvous Point (MRP) ................................33 7.2 Add mechanism ..............................................34 7.3 Add message format .........................................35 8.Application for Traffic Engineering .............................36 8.1 Rerouting Traffic Engineered Multicast Tunnels .............36 Yasukawa, Uga, Kojima, Sugisono [Page 2]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 8.2 Re-establishment of subtree ................................37 9. Security Considerations ........................................37 10. References ....................................................37 AUTHORS' ADDRESSES ................................................38

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 these 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, multipoint-to-multipoint, topologies. This document describes how to establish point-to-multipoint and multipoint-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 function in order to adapt to dynamic changes in the LSP tree topology. This MPLS architecture[10] is very flexible and can be expanded to carry protocols other than IP multicasting, e.g., Ethernet, PPP, and SONET/SDH, but this document only defines IP multicasting (IPv4 and IPv6) as a forwarding equivalence class object (FEC).

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], [2], [3] and [4]. Yasukawa, Uga, Kojima, Sugisono [Page 3]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 Multicast LSP: A label switched path that has more than one egress label switching router 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/prune node: An LSR that receives a Graft/Prune message from a sender LSR and has the responsibility to add/delete the downstream subtree specified in the message. MPLS Rendezvous Point (MRP): The node binding inputs point-to-point LSP and outputs point-to- multipoint LSP. It is mainly used to support multipoint-to- multipoint topology. 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. Tree Record Route Object (TRRO): An extended RRO for recording the route along which each merged Yasukawa, Uga, Kojima, Sugisono [Page 4]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 message has traveled.

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. Therefore, the SENDER_TEMPLATE (or FILTER_SPEC) object together with this SESSION object uniquely identify a multicast LSP tunnel. To identify the leaf and topology of this multicast LSP tunnel, TREE_EXPLICIT_ROUTE object and TREE_RECORD_ROUTE object are also defined. It is very useful to associate sets of LSP tunnels 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). The TE tunnel is uniquely defined by the SESSION object.

3.2 Multicast LSP topology

This multicast MPLS protocol supports point-to-multipoint and multipoint-to-multipoint LSP tunnels establishment, teardown, and modification mechanisms. A point-to-multipoint LSP can handle i) (S,G) multicast traffic, ii) ({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. Yasukawa, Uga, Kojima, Sugisono [Page 5]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 +----+ | S | +----+ | G | S: Sender V N: Node +---+ L: Leaf node | N | +---+ (S,G) | | +---+ +---+ | | +---+ +---+ | N | | N | +---+ +---+ || || || || +-++-+ +-++-+ | | | | V V V V +---++---+ +---++---+ | L || L | | L || L | +---++---+ +---++---+ +----+ +----+ | S1 | | Sn | +----+ +----+ G| |G +--+ +--+ | | S: Sender V V N: Node +---+ L: Leaf node | N | +---+ (*,G),({S}),G) | | +---+ +---+ | | +---+ +---+ | N | | N | +---+ +---+ || || +-++-+ +-++-+ | | | | V V V V +---++---+ +---++---+ | L || L | | L || L | +---++---+ +---++---+ Yasukawa, Uga, Kojima, Sugisono [Page 6]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 +----+ +----+ | S1 | | Sn | +----+ +----+ G1| |Gn +--+ +--+ | | S: Sender V V N: Node +---+ L: Leaf node | N | +---+ ({S},{G}),(*,*) || || +---+| |+---+ |+---+ +---+| || || +---+ +---+ | N | | N | +---+ +---+ || || || || ++| |++ ++| |++ |++ ++| |++ ++| || || || || VV VV VV VV +---++---+ +---++---+ | L || L | | L || L | +---++---+ +---++---+ Figure 1: Multicast traffic type This protocol can also establish an multipoint-to-multipoint LSP tunnel by combining several point-to-point LSP tunnels and a single point-to-multipoint LSP tunnel at an MPLS rendezvous point (MRP). The MRP binds point-to-point LSP tunnels and a point-to-multipoint LSP tunnel. Therefore, data traffic is forwarded from sender nodes to leaf nodes in this multipoint-to-multipoint LSP tunnel.

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]. Though the first method is suitable to achieve traffic engineering, the calculation load concentrates on the sender node or NMS. The second method can use the existing multicast routing protocol, but it is necessary to establish a method for cooperating with this protocol. This cooperation is a topic for further study. This draft assumes the first method is used. Yasukawa, Uga, Kojima, Sugisono [Page 7]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002

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. Nodes except for sender nodes can establish and modify a multicast LSP tunnel optimally according to the client's content viewing status. 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 invoke this process and grafts 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 implement 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 near to root 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, this protocol implements a partial multicast LSP tunnel modification mechanism in both the sender- and leaf-initiated mechanisms. Yasukawa, Uga, Kojima, Sugisono [Page 8]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 The features supported by this multicast MPLS protocol 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. This protocol uses 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. +--------+ | Sender | +--------+ Function 1 || | Sender-initiated VV | M-LSP establishment +---+ | A | +---+ | | ^ +---+ +---+ | | | | +---+ +---+ | 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 mechanism of this protocol, which is an extension of the conventional RSVP-TE protocol. Figure 3 shows the basic sender-initiated multicast LSP tunnel establishment mechanism. Yasukawa, Uga, Kojima, Sugisono [Page 9]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 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 an 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 using this TERO information until the destination leaf node is 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 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 Yasukawa, Uga, Kojima, Sugisono [Page 10]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 (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 mode.

3.6 Multicast session

3.6.1 Multicast session object

The SESSION object defined by RSVP-TE is not used 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.7 Explicit routing

3.7.1 Tree Explicit Route Object (TERO)

3.7.1.1 Overview
Yasukawa, Uga, Kojima, Sugisono [Page 11]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 Explicit routing is the main function of RSVP-TE. RSVP-TE defines an ERO to show the explicit route. ERO is 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. Therefore, we define a 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. Nodes other than message initiators MUST NOT delete the contents of TERO. Each node MAY record the whole topology of the multicast tree from TERO. 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 the above figure 4, TERO is encoded as follows: A | +----+----+ | | | B I J | | +---+---+ +-+-+ | | | | | C F G K L | | +-+-+ | | | | D E H 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)} Figure 4: TERO corresponding to a multicast tree
3.7.1.2 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. Multicast routing algorithm such as PIM-SM[8] and MOSPF[9] 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 Yasukawa, Uga, Kojima, Sugisono [Page 12]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 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 TERO. 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.
3.7.1.3 Object format
Class = TREE_EXPLICIT_ROUTE 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 Yasukawa, Uga, Kojima, Sugisono [Page 13]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 C-Type = IPv4_PREFIX 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 (17) | Length | IPv4 address (4 bytes) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4 address (continued) | Prefix length | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Distance | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ C-Type = IPv6_PREFIX 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 (18) | Length | IPv6 address (16 bytes) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv6 address (continued) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv6 address (continued) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv6 address (continued) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv6 address (continued) | Prefix length | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Tree depth | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 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 IPv6 address Length The Length contains the total length of the subobject in bytes, including the Type and Length fields. Yasukawa, Uga, Kojima, Sugisono [Page 14]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 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. Prefix length Length in bits of the IPv4/6 prefix Distance The distance from sender node to the node specified by the subobject. The value of distance between neighboring nodes specified in TERO is 1.

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 root node of the multicast tree related to the Resv message, 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, Uga, Kojima, Sugisono [Page 15]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 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_EXPLICIT_ROUTE 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
C-Type = IPv4_PREFIX 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 (17) | Length | IPv4 address (4 bytes) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4 address (continued) | Prefix length | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Tree depth | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Yasukawa, Uga, Kojima, Sugisono [Page 16]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 C-Type = IPv6_PREFIX 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 (18) | Length | IPv6 address (16 bytes) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv6 address (continued) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv6 address (continued) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv6 address (continued) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv6 address (continued) | Prefix length | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Tree depth | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type 0x01 IPv4 address 0x02 IPv6 address Length The Length contains the total length of the subobject in bytes, including the Type and Length fields. IPv4/6 address A 32/128-bit unicast, host address. Prefix length 32 Flags 0x01 Local protection available This flag indicates that the link downstream of this node isprotected via a local repair mechanism. 0x02 Local protection in use This flag indicates that a local repair mechanism is used to maintain this tunnel. Yasukawa, Uga, Kojima, Sugisono [Page 17]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 Distance The distance from sender node to the node specified by the subobject. The value of distance between neighboring nodes specified in TERO is 1.

4. Sender-initiated multicast LSP establishment

4.1 Sender-initiated

Multicast LSP establishment mechanism The sender node initiates a Path message based on the multicast tree calculation result and establishes the multicast tree using the Path message with TERO. The Path message MUST include SESSION object, LABEL_REQUEST object, SENDER_TEMPLATE and TERO. The sender node sends a Path message to the leaf nodes after initiating it. It is forwarded along the nodes described by TERO and is copied by each branch node. Each node records the information about SESSION object and SENDER_TEMPLATE object as the multicast tree state. If a leaf node receives the Path message, it initiates a Resv message that MUST include SESSION object, FILTER_SPCE and LABEL object and sends it to the sender node. The Resv message is sent back upstream towards the sender node, following the reverse path of the TERO. A LABEL object included in the Resv message is used for label binding. When the sender node receives the Resv messages, the establishment of the multicast LSP is finished. The Resv messages from all leaf nodes should not arrive at the sender node at the same time to enable a large-scale multicast tree to be constructed. So the Resv messages SHOULD be merged at the branch node. 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. Yasukawa, Uga, Kojima, Sugisono [Page 18]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 +---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 Process of sender-initiated multicast LSP establishment

A node that receives a Path message refers to the SESSION object and SENDER_TEMPLATE. The node evaluates whether the Path message is a message for first LSP establishment or a refresh message by referring to them. After recording the necessary information in path state block, the node evaluates TERO. The node searches for a subobject whose address is the same as that of the node. If the node detects a subobject in TERO, it gets the address of the next-hop node. Then the node sends a Path message with this address as the destination address. Thus, the destination address of a Path message is a unicast address. If the node is a branch node, it gets multiple addresses of next-hop nodes from TERO. Therefore, the branch node sends multiple Path messages to downstream nodes. Either the intermediate node or the leaf node may calculate the Yasukawa, Uga, Kojima, Sugisono [Page 19]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 multicast tree route in order to decentralize this calculation. So all nodes belonging to the same multicast group need to have information about the whole multicast tree topology in order to prevent intersection of multicast tree. Each node MUST NOT delete the TERO subobjects that specify nodes on the explicitly routed path in order to get the whole multicast tree topology information. Each node MAY record the whole multicast tree topology from TERO. In this way, all nodes can have the same information about the whole multicast tree topology. 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. The branch node that sent multiple Path messages forwards Resv messages upstream after receiving those for each Path message. The branch node that sent multiple Path messages to downstream leaf nodes forwards a Resv message upstream only after it receives all the Resv messages from downstream nodes to whom it send a Path message. When Resv messages are merged, a new TRRO is made using TRROs included in the those received Resv messages. This new TRRO expresses the multicast subtree. The branch node that merges Resv message is 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. Prune and Leave messages are defined in this protocol. PathTear messages are initiated not only by the sender node but also by the branch node that receives a Prune or Leave message. The processes of the Prune and Leave messages are described in sections 5.2 and 6.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. Yasukawa, Uga, Kojima, Sugisono [Page 20]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002

4.5 Message format

4.5.1 Path message format

TERO is added to the Resv message. Note that a new C-Type is added to SESSION object. <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. Yasukawa, Uga, Kojima, Sugisono [Page 21]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 <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 PathTear message format

Note that a new C-Type is added to SESSION object. <PathTear Message> ::= <Common Header> [ <INTEGRITY> ] <SESSION> <RSVP_HOP> [ <sender descriptor> ] <sender descriptor> ::= (see earlier definition)

4.5.4 PathErr message format

Note that a new C-Type is added to SESSION object. <PathErr message> ::= <Common Header> [ <INTEGRITY> ] < SESSION > <ERROR_SPEC> [ <POLICY_DATA> ...] [ <sender descriptor> ] <sender descriptor> ::= (see earlier definition)

4.5.5 ResvErr Message format

Yasukawa, Uga, Kojima, Sugisono [Page 22]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 Note that a new C-Type is added to SESSION object. <ResvErr Message> ::= <Common Header> [ <INTEGRITY> ] < SESSION > <RSVP_HOP> <ERROR_SPEC> [ <SCOPE> ] [ <POLICY_DATA> ...] <STYLE>[<error flow descriptor>]

5. Sender-initiated grafting/pruning mechanism

5.1 Sender-initiated grafting mechanism

The grafting mechanism supports to graft a partial multicast tree (subtree) onto an established multicast tree. It allows an intermediate node to graft (add) a subtree in order to scale up the performance of the grafting process. We define the node that performs subtree establishment as a graft node. The sender node sends a Graft message that includes partial multicast information to the graft node. The intermediate node placed between the sender node and this graft node SHOULD NOT process this Graft message and SHOULD only relay it to the graft node. The graft node that receives this message MUST extract TERO information from it and perform a partial multicast grafting process by sending a Path message and receiving a Resv message. This grafting process is initiated not only by the sender node but also by the NMS. Yasukawa, Uga, Kojima, Sugisono [Page 23]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 +----node--** | (C) +-----------node--** +---------node-----client | (D) | (F) Content | | (Leaf) Servers--Sender--node----------------node---------------node--client (A) (B) (E) (G) | | | | | | | | | | Graft(TERO) | | | | | |-------------------------->| | | | | | | | | Path(TERO) | | | | | | |----------------->| | | | | | | Path(TERO) | | | | | | |---------->| | | | | | | | Resv(TRRO) | | | | | | |<-----------------| | | | | | | Resv(TRRO) | | | | GraftNotify(TRRO) |<----------| | | |<------------ <------------| | | | | | | | | | | | Figure 7: Sequence of graft process Figure 7 shows the message sequence of the proposed grafting process. Sender node A sends a graft message to graft node E to establish a subtree tunnel from node E. Graft node E gets grafting tree information by extracting TERO information from the Graft message. Then graft node E sends Path messages that include the same TERO object to set up an expanded tree. In this example, graft node E sends Path messages to leaf nodes F and G. After confirming the establishment of the expanded tree by receiving Resv messages, the graft node MUST send a GraftNotify message to the sender node to report the result of the grafting process. The GraftNotify message carries expanded tree tunnel information by including a TRRO that collects individual tree setup information carried by the Resv messages. The GraftNotify message SHOULD NOT be processed and SHOULD only be relayed by the intermediate node placed between the graft node and sender node. 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 SHOULD send a PathErr message that includes the error code to the graft node. The graft node that receives these PathErr messages SHOULD extract the error codes and collect this information into a GraftErr message and SHOULD send this message to the graft initiator (sender node). Yasukawa, Uga, Kojima, Sugisono [Page 24]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 +----node--** +----node-----client | (C) | (H) +----------node--** +-----------node-----client | (D) | (G) Content | | (Leaf) Servers--Sender--node---------------node-----------------node--client (A) (B) (E) (F) | | | | | | | | | | | Graft(TERO) | | | | | | |-------------------------->| | | | | | | | | |Path(TERO) | | | | | | | |------------------->| | | | | | |Path(TERO) | | | | | | | |------------>| | | | | | | |Path(TERO) | | | | | | | |----->| | | | | | | | | | Resv(TRRO) | | | | | | |<-------------------| | | | | | | PathErr | | | | | | | |<------------| | | | | | | | PathErr | | | | | GraftNotify(TRRO) |<-----| | | | |<------------ <------------| | | | | | | GraftErr | | | | | | |<--------------------------| | | | | | | | | | | | | | | | | | | | | | | Figure 8: Sequence of graft error process When a node requested to perform the grafting process does not support this mechanism, this node SHOULD send an error message including the unknown class object to inform the graft initiator (sender node) of the lack of support for this mechanism. When a graft node that is requested to perform a grafting process detects some error in this message, it SHOULD send a GraftErr message that includes the error code to the graft initiator (sender node). The following are examples of errors. One example is where a requested expanded multicast tree tunnel already exists below the graft node. The other example is that establishment of requested subtree tunnel is impossible in principle because TERO shows nodes that do not exist. Graft, GraftNotify, and GraftErr messages are introduced for the graft process. The Graft message is utilized to expand a subtree tunnel at a graft node. This message has the following format. It MUST include a SESSION object and SENDER_TEMPLATE object to specify the target multicast session. And it MUST include a TERO to describe Yasukawa, Uga, Kojima, Sugisono [Page 25]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 the expanded multicast tree tunnel information. <Graft Message> ::= <Common Header> [ <INTEGRITY> ] <SESSION > <RSVP_HOP> <TIME_VALUES> <TREE_EXPLICIT_ROUTE> [ <SESSION_ATTRIBUTE> ] [ <POLICY_DATA> ... ] <sender descriptor> <sender descriptor> ::= <see earlier definition> The GraftNotify message is utilized by the graft node to notify the graft initiator (sender node) of the results of the grafting process. This message MUST include a TRRO to describe the expanded multicast tree tunnel information. <GraftNotify Message> ::= <Common Header> [ <INTEGRITY> ] < SESSION > <RSVP_HOP> [ <RESV_CONFIRM> ] [ <SCOPE> ] [ <POLICY_DATA> ... ] <STYLE> <flow descriptor list> <flow descriptor list> ::= < see earlier definition> The GraftErr message is utilized by the graft node to explain the reason for the error to the graft initiator. The GraftErr message shows the converged error information carried by PathErr messages that is addressed to the graft node. This message has the following format. Error information is carried by the ERROR_SPEC object. <GraftErr Message>::=<Common Header>[<INTEGRITY>] < SESSION ><ERROR_SPEC> [<POLICY_DATA>....] <sender descriptor> <sender descriptor> ::= (see earlier definition)

5.2 Sender-initiated pruning mechanism

The pruning mechanism supports prune 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 node sends a Prune message that includes information about unnecessary multicast subtrees to prune node. The node placed between the sender node and this prune node SHOULD NOT process this message and SHOULD only relay it to the prune node. The prune node that Yasukawa, Uga, Kojima, Sugisono [Page 26]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 receives this message MUST extract TERO information from it and MUST prune unnecessary multicast subtree tunnels by sending PathTear messages. This pruning process is initiated not only by the sender node but also by NMS. +----node--** +----node-----client | (C) | (H) +-----------node--** +-----------node----client | (D) | (G) Content | | (Leaf) Servers--Sender--node----------------node----------------node--client (A) (B) (E) (F) | | Prune(TERO) | | | | | | |-------------------------->| | | | | | | | | |Path Tear | | | | | | | |------------------->| | | | | | |Path Tear | | | | | | | |------------>| | | | | | | |Path Tear | | | | PruneNotify | |----->| | | | |<--------------------------| | | | | | | | | | | | | | Figure 9: Sequence of graft prune process Figure 9 shows the message sequence of the pruning process. Sender node A sends a Prune message to Prune node E to prune an unnecessary multicast subtree tunnel from node E. Prune node E gets the information about unnecessary the multicast subtree tunnel by extracting TERO information from the Prune message. In this example, graft node E sends PathTear messages to leaf nodes F, G, and H. After it has sent all the PathTear messages, the prune node MUST send a PruneNotify message to the sender node to report the accomplishment of pruning process. The PruneNotify message SHOULD NOT be processed and SHOULD only be relayed by the intermediate node placed between the prune node and sender node. When a node requested to perform pruning does not support this mechanism, this node SHOULD send an error including the unknown class object to notify the prune initiator (sender node) of the lack of support for this mechanism. When a prune node requested to perform pruning detects some error in this message, it SHOULD send a PruneErr message that includes the error reason code to the prune initiator (sender node). The following are examples of errors. One example is where the specified unnecessary multicast subtree tunnel has already been deleted under the pruning node. The other example is that pruning of the unnecessary multicast subtree tunnel is impossible in principle because TERO shows non-existing nodes. Yasukawa, Uga, Kojima, Sugisono [Page 27]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 Prune, PruneNotify, and PruneErr message are introduced to achieve the pruning process. The Prune message is utilized to prune an unnecessary multicast subtree tunnel at a prune node. This message has the following format. It MUST include a SESSION object and SENDER_TEMPLATE to specify the target multicast LSP tunnel Prune. And it MUST include a TERO to describe unnecessary multicast subtree tunnel information. <Prune Message> ::= <Common Header> [ <INTEGRITY> ] <SESSION > <RSVP_HOP> <TREE_EXPLICIT_ROUTE> [ <POLICY_DATA> ... ] <sender descriptor> <sender descriptor> ::= (see earlier definition) The PruneNotify message is utilized by the prune node to notify the prune initiator (sender node) of the results of the pruning process. <PruneNotify Message> ::= <Common Header> [ <INTEGRITY> ] < SESSION > <RSVP_HOP> [ <RESV_CONFIRM> ] [ <SCOPE> ] [ <POLICY_DATA> ... ] <STYLE> <flow descriptor list> <flow descriptor list> ::= <see earlier definition> The PruneErr message is utilized by the prune node to explain the reason for the error to the Prune initiator. It MUST include converged error information. This message has the following format. Error information is carried by the ERROR_SPEC object. <Prune Err Message>::=<Common Header>[<INTEGRITY>] < SESSION ><ERROR_SPEC> [<POLICY_DATA>....] <sender descriptor> <sender descriptor> ::= (see earlier definition)

6. Leaf-initiated multicast LSP establishment

6.1 Leaf-initiated joining mechanism

When a node would like to join a multicast group, it sends Join message corresponding to the group. 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 node expanding a new path to a Yasukawa, Uga, Kojima, Sugisono [Page 28]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 join leaf node is called a graft node, as in the case of grafting. Two types of node can be the destination of a Join message. One is the sender node of the multicast tree. In this case, the graft node is the cross point of the multicast tree and the reverse path from the join leaf node; it is the nearest one to the join leaf node. The other is a node indicated by a Explicit Route object in the Join message. In this case, the graft node is the indicated node. The route of the expanded path is the same one through which the Join message traveled. The nodes that a Join message goes through are recorded in the RRO of the message. Therefore, nodes can detect a path loop from the RRO of the Join message. A Join message has no specifications about the QoS parameters of the expanded path. These parameters are included in the Path/Resv message used for path establishment. The process of expanded path establishment is as follows. The leaf node joining a multicast group sends a Join message to the sender node or graft node. First, we describe the case where the destination of the message is a sender node. The join leaf node sends a Join message through the path that connects to the sender node of the multicast session. The join leaf node MUST put tunnel information in the SESSION and SENDER_TEMPLATE objects of the Join message. To resolve the tunnel ID, LS` ID and tunnel sender address the join leaf node queries the NMS located in the network. The route of the path is either decided by an external routing protocol or is the shortest path between the sender node and join leaf node. As soon as it receives the message, a node on the message's forwarding path checks whether it has tunnel information specified by the message. If there is tunnel information identified by the message, the node becomes a graft node. Next, we describe the case where the graft node is not the sender node of the tree. The Join message is forwarded to the specified graft node. After the graft node receives the message, it checks the path state block and searches the entry about the tunnel. If it cannot find the entry, it sends a JoinErr message to the join leaf node. The JoinErr message is defined in the next section. Otherwise, it becomes the graft node. The graft node is responsible for expanding the QoS path to the Join group. It sends a Path message to allocate the bandwidth of the expanded path. The route of the expanding path is decided by the graft node or join leaf node or NMS. If the join leaf node specifies the route, the specified route is recorded in the ERO of the Join message. The bandwidth allocation finishes when the graft node receives a Resv message from the join leaf node. The QoS parameters for the expanded path are specified in the Path/Resv message. Yasukawa, Uga, Kojima, Sugisono [Page 29]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 After the bandwidth allocation, the graft node notifies the sender node of the multicast tree of the establishment of the QoS path in a JoinNotify message. This message SHOULD NOT be processed at any intermediate nodes. The message is a trigger for changing the topology information of all the nodes. The information MAY be traversed to all nodes composing the multicast tree by the Path refresh process. : : +---...... Content | (leaf) Servers--Sender--node-----------------node-----------------node--client (A) (E) (F) Join (G) | Join |<-------------------| | |<--------------------| | | | Path | | | |-------------------->| Path | | | |------------------->| | | | Resv | | | Resv |<-------------------| | JoinNotify |<--------------------| | | <---------------| | | | | | | | | | | | 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. There are many methods for the join leaf node to collect the information about errors. For this purpose, we define a JoinErr message, which is sent by the graft node to the join leaf node. It is made when the graft node receives a PathErr message, which notifies the Path message initiator (in this case, the graft node) (Figure 11). Yasukawa, Uga, Kojima, Sugisono [Page 30]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 : : +---...... Content | (leaf) Servers--Sender--node----------------node------------------node--client (A) (E) (F) Join (G) | Join |<-------------------| | |<-------------------| | | | Path | | | |------------------->| | | | PathErr | | | |<-------------------| | | | JoinErr | | | |--------------------|------------------->| | Figure 11: Sequence of JoinErr process 6.3 Leave-initiated leaving mechanism A leaf node that wants to leave a multicast group sends a Leave message to request the tearing down of a path. We call such a leaf node a leave leaf node. In this case, the path from the leave leaf node to its nearest upstream branch node is torn down. The branch node is called a prune node and it is responsible for tearing down the QoS path connecting to the leave leaf node. The leave leaf node sends a Leave message to the sender node. The prune node receives the message and processes it. Intermediate nodes below the prune node forward the Leave message upstream. It SHOULD NOT be processed at any intermediate nodes. To be a prune node, a node must be a branch node. A branch node has two or more downstream paths. Nodes in a network have the information of the number of downstream paths for a multicast group. So the node receiving a Leave message checks the number of downstream links and decides whether it is a prune node or not. As soon as it receives the message, the prune node tears down the unnecessary path. In the path tearing process, a PathTear message is used. When the leave leaf node receives a PathTear message, it recognizes the completion of path tearing. Yasukawa, Uga, Kojima, Sugisono [Page 31]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 : : +---...... Content | (leaf) Servers--Sender--node-----------------node----------------node--client (A) (E) (F) Leave (G) | Leave |<-------------------| | |<-------------------| | | | PathTear | | | |------------------->| PathTear | | LeaveNotify | |------------------->| | <---------------| | | | | | | | | | | | Figure 12: Sequence of leave process

6.4 Message format

6.4.1 Join message format

<Join Message>::=<Common Header>[<INTEGRITY>] <SESSION ><RSVP_HOP> [<SCOPE>]<TIME_VALUES> [<EXPLICIT_ROUTE>] [<sender descriptor>] <sender descriptor>::=(see earlier definition) ERO contains the route on which the message is sent. It is a list of subobjects showing node information. The route specified by the object is calculated at leaf node or NMS. This information is used for deciding the route of the Path message sent by the graft node.

6.4.2 JoinNotify message format

<JoinNotify Message>::=<Common Header>[<INTEGRITY>] <SESSION><RSVP_HOP> [<SCOPE>] [<flow descriptor>] <flow descriptor>::=(see earlier definition) Yasukawa, Uga, Kojima, Sugisono [Page 32]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002

6.4.3 JoinErr message format

<JoinErr Message>::=<Common Header>[<INTEGRITY>] < SESSION ><ERROR_SPEC> [<SCOPE>] [<POLICY_DATA>....] <sender descriptor> <sender descriptor>::=(see earlier definition) The ERROR_SPEC object contains the information about the errors. The contents are the location and reason of the error reported by a PathErr message.

6.4.4 Leave message format

<Leave Message>::=<Common Header>[<INTEGRITY>] < SESSION ><RSVP_HOP> [<SCOPE>] [< sender descriptor >] < sender descriptor >::=(see earlier definition)

6.4.5 LeaveNotify Message

<LeaveNotify Message> ::= <Common Header> [ <INTEGRITY> ] < SESSION > <RSVP_HOP> [ <RESV_CONFIRM> ] [ <SCOPE> ] [ <POLICY_DATA> ... ] <STYLE> <flow descriptor list> <flow descriptor list> ::= <see earlier definition>

7. Multi-point to multi-point multicasting

7.1 MPLS Rendezvous Point (MRP)

Supporting multipoint-to-multipoint traffic is important for multicast communication. An example of multipoint-to-multipoint traffic is a video conference. This protocol supports multipoint-to-multipoint LSP tunnels. An MPLS Rendezvous Point (MRP) is defined. This is similar to the rendezvous point of PIM-SM. The MRP receives traffic from the sender node and forwards it to the shared multicast tree. MRP binds multiple unicast LSPs and a multicast LSP. This binding means i) to specify the multicast LSP to bind, ii) to bind new input labels and existing output labels, iii) to swap them, and iv) to forward from multiple Yasukawa, Uga, Kojima, Sugisono [Page 33]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 sender nodes to multiple leaf nodes. Because the MRP relates i) multiple unicast LSPs from the sender nodes to the MRP to ii) a multicast LSP from the MRP to the leaf nodes, this protocol can support multipoint-to-multipoint LSPs. Figure 13 shows a multipoint- to-multipoint LSP tunnel. It shows two unicast LSPs from sender node A and B to MRP and one multicast LSP from MRP to the leaf nodes D, F, and I. If a packet has Label A or B, MRP copies this packet to make three packets and assigns Label C, E, and G to these packets. +------+ +------+ / Node / / Node / / (C) /----/ (D) / +------+ +------+ ^ | Label C| | | | | | +-------+ +------+ Label A +-----+ Label E +------+ +------+ /Content/ /sender/--------->/ MRP /-------->/ Node / / Node / /Servers/----/ (A) /----------/ /---------/ (E) /--/ (F) / +-------+ +------+ +-->+-----+ +------+ +------+ / / | | Label B/ / | |Label G / / | v +-------+ +------+ / +------+ +------+ +--------+ /Content/ /sender/ / / Node / / Node / / Node / /Servers/----/ (B) /----+ / (G) /-----/ (H) /--/ (I) / +-------+ +------+ +------+ +------+ +--------+ Figure 13: Multipoint-to-multipoint LSP tunnel

7.2 Add mechanism

An Add message is defined as a new message. It establishes a unicast LSP from the sender node to the MRP. Moreover, an Add message reports to the MRP that a new sender node has been added. Multiple unicast LSPs from the sender nodes to the MRP and a multicast LSP from the MRP to the leaf nodes are treated as different LSPs. The Tunnel ID and LSP ID of the unicast LSP have different values from those of the multicast LSP. The MRP relates the Tunnel ID and LSP ID of the unicast LSP to those of the multicast LSP. The MRP keeps the multipoint-to-multipoint state by this relationship. An Add message must specify the multicast LSP to bind. To identify a multicast LSP to bind, BIND_SESSION object and BIND_SENDER_TEMPLATE are defined. BIND_SESSION class and BIND_SENDER_TEMPLATE class are added. BIND_SESSION object has the same format as SESSION object. Yasukawa, Uga, Kojima, Sugisono [Page 34]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 BIND_SENDER_TEMPLATE has the same format as SENDER_TEMPLATE. +----node--** | (C) +-----------node--** Content | (D) (leaf) Servers--Sender-----MRP-----------------node------------node--client (A) (E) (F) | Add | | | | | | |---------->| Path | | | | | | |----->| | | | | | | Path | | | | | |------------>| | | | | | Path | | | | | |------------------->| Path | | | | | | |-------------->| | | | Resv | | Resv | | | |<-----| | |<--------------| | | | Resv | | | | | |<------------| | | | | | Resv | | | | | Resv |<-------------------| | | |<----------| | | | | | | Path | | | | | | |---------->| | | | | | | | | | | | | Figure 14: Sequence of Add process

7.3 Add message format

Though the Add message is similar to the Path message, it has two additional functions: i) to notify the MRP that a new sender node has been added and ii) to identify a binding multicast LSP. Yasukawa, Uga, Kojima, Sugisono [Page 35]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 <Add Message> ::= <Common Header> [ <INTEGRITY> ] <SESSION><BIND_SESSION> <RSVP_HOP> <TIME_VALUES> [<TREE_EXPLICIT_ROUTE>] <LABEL_REQUEST> [ <SESSION_ATTRIBUTE> ] [ <POLICY_DATA> ... ] <sender descriptor> <BIND_SENDER_TEMPLATE> <sender descriptor> ::= (see earlier definition)

8. Application for Traffic Engineering

8.1 Rerouting Traffic Engineered Multicast Tunnels

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. When a sender of a multicast reroutes part of the multicast tree, the sender sends Path messages. Each message has route information about a new partial tree in its TERO. While the new path is being established, the root of the paths refreshes Path/Resv messages for the new partial tree to be established and the old partial tree to be rerouted. After completion of the new path, the initiator specifies the route of the old partial tree in the TERO of a PathTear message and sends the message to the old rerouted partial tree. The network resource sharing is achieved by the Shared Explicit reservation style as in the unicast make-before-break concept. So Yasukawa, Uga, Kojima, Sugisono [Page 36]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 this protocol helps to extend the make-before-break concept to multicast TE tunnels.

8.2 Re-establishment of subtree

A Graft message can also be used re-establish a partial multicast LSP when the establishment of the sub-tree failed. In multicast LSP establishment, it sometimes happens that the establishment of the sub-tree 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 sub-tree whose establishment failed can be done using the Graft message. The sender node or NMS that recognizes that the establishment of a sub-tree 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 sends a Graft message with TERO for sub-tree re-establishment. This re- establishment does not cause any additional processing in nodes except for this failure point, because the Graft process only needs additional processes in the failure point. An LSP tunnel can be expanded by the Graft message defined by this protocol. So this protocol can establish LSP tunnels easily and flexibly, even if sub- tree establishment fails.

9. Security Considerations

Security considerations will be addressed in a future revision of this document.

10. 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 Yasukawa, Uga, Kojima, Sugisono [Page 37]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 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 Author's Address 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 Yasukawa, Uga, Kojima, Sugisono [Page 38]

Internet Draft draft-yasukawa-mpls-rsvp-multicast-00.txt June 2002 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, Uga, Kojima, Sugisono [Page 39]