MPLS & RSVP Working Groups Daniel Awduche Internet Draft UUNET Technologies, Inc. Expiration Date: February 1999 Der-Hwa Gan Juniper Networks, Inc. Tony Li Juniper Networks, Inc. George Swallow Cisco Systems, Inc. Vijay Srinivasan Torrent Networks, Inc. August 1998 Extensions to RSVP for Traffic Engineering draft-swallow-mpls-rsvp-trafeng-00.txt Status of this Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." To view the entire list of current Internet-Drafts, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). Abstract This document describes the use of RSVP, including all the necessary extensions, to support traffic engineering with MPLS as specified in [6]. Swallow, editor [Page 1] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 We propose several additional objects that extend RSVP, allowing the establishment of explicitly routed label switched paths (LSPs), using RSVP as a signaling protocol. The result is the instantiation of label-switched sessions which can be automatically routed away from network failures, congestion, and bottlenecks. Swallow, editor [Page 2] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 Contents 1 Introduction ........................................... 4 2 Overview of operation .................................. 5 2.1 Service Classes ........................................ 6 2.2 Reservation styles ..................................... 6 2.2.1 Fixed Filter (FF) style ................................ 7 2.2.2 Wildcard Filter (WF) style ............................. 7 2.2.3 Shared Explicit (SE) style ............................. 8 2.3 LSP Tunnels ............................................ 8 2.4 Rerouting LSP Tunnels .................................. 9 3 RSVP Message Formats ................................... 10 3.1 Path message ........................................... 10 3.2 Resv message ........................................... 11 4 Objects ................................................ 11 4.1 Label Object ........................................... 11 4.1.1 Handling Label Objects in Resv messages ................ 12 4.1.2 Non-support of the Label Object ........................ 13 4.2 Label Request Object ................................... 13 4.2.1 Handling of LABEL_REQUEST .............................. 14 4.2.2 Non-support of the Label Request Object ................ 14 4.3 Explicit Route Object .................................. 15 4.3.1 Subobjects ............................................. 15 4.3.2 Applicability .......................................... 16 4.3.3 Semantics of the Explicit Route Object ................. 16 4.3.4 Strict and Loose subobjects ............................ 17 4.3.5 Loops .................................................. 18 4.3.6 Subobject semantics .................................... 18 4.3.7 Processing of the Explicit Route Object ................ 20 4.3.8 Non-support of the Explicit Route Object ............... 21 4.4 Record Route Object .................................... 22 4.4.1 Subobjects ............................................. 22 4.4.2 Applicability .......................................... 24 4.4.3 Handling RRO ........................................... 25 4.4.4 Loop Detection ......................................... 26 4.4.5 Non-support of RRO ..................................... 26 4.5 Error subcodes for ERO and RRO ......................... 27 4.6 Session, Sender Template, and Filter Spec Objects ...... 27 4.6.1 Session Object ......................................... 27 4.6.2 Sender Template Object ................................. 28 4.6.3 Filter Specification Object ............................ 29 4.6.4 Reroute procedure ...................................... 29 4.7 Session Attribute Object ............................... 30 5 RSVP Aggregate Message ................................. 33 5.1 Aggregate Header ....................................... 33 5.2 Message Formats ........................................ 35 Swallow, editor [Page 3] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 5.3 Sending RSVP Aggregate Messages ........................ 35 5.4 Receiving RSVP Aggregate Messages ...................... 36 5.5 Forwarding RSVP Aggregate Messages ..................... 37 5.6 Aggregate-capable bit .................................. 37 6 Tear Confirm ........................................... 37 7 Security Considerations ................................ 39 8 Acknowledgments ........................................ 39 9 References ............................................. 39 1. Introduction For hosts and routers that support both RSVP [1] and Multi-Protocol Label Switching [2], it is possible to associate labels with RSVP flows [4]. The result is that a router can identify the appropriate reservation state for a packet based on its label value, thus greatly simplifying packet classification. This design also improves network performance because the same label lookup identifies forwarding information of the packet. Using RSVP to establish label switched paths (LSPs) clearly enables the allocation of resources to an LSP. For example, you can allocate bandwidth to an LSP using standard RSVP reservations and Integrated Services service classes [7]. While this is useful, reservations are not required. An LSP can also be established to carry best-effort traffic without a resource reservation. It is possible to add explicit routing capability on top of label- switched RSVP flows [3] [5] by adding a simple EXPLICIT_ROUTE object to RSVP. By using this object, the paths taken by label-switched RSVP flows can be predetermined, independent of conventional IP routing. The hops in the path can be manually configured, or computed automatically based on the QoS requirements of the flow and the current network load. The purpose of this document is to organize all the objects from [3], [4], and [5] into a single document that fully describes all the procedures and packet formats so that interoperable implementations are possible. A few new objects are also suggested for enhancing management and diagnostics of LSPs. All objects described are optional, and this document describes what happens when an object is not supported by a node. Finally, an RSVP aggregate message is proposed to help alleviate one of the RSVP scaling issues: how to efficiently handle large number of Swallow, editor [Page 4] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 RSVP messages that are periodically transmitted between neighbors. The document concentrates on unicast LSPs. Explicitly routed multicast LSPs are left for further study. 2. Overview of operation When an RSVP flow originates in or crosses an MPLS domain, the flow may be label switched. To initiate label switching, the first MPLS node inserts a LABEL_REQUEST object into the Path message. The LABEL_REQUEST object indicates that a label binding for this path is requested, and also provides an indication of the network layer protocol that is to be carried over this path. The reason for this is that the network layer protocol sent down an LSP cannot be assumed to be IPv4, and cannot be deduced from the L2 header, which simply identifies the higher layer protocol as being MPLS. If the sender node has prior knowledge of an alternative route that has better likelihood of meeting the flow's QoS requirement or that makes more efficient use of network resources, the node can decide to reroute some of its sessions. To do this, the node adds an EXPLICIT_ROUTE object to the Path message. If, during a session, the sender node finds a better route, the session can be rerouted on the fly by simply changing the EXPLICIT_ROUTE object. If there are problems with an EXPLICIT_ROUTE object, either because it causes a routing loop or some intermediate routers do not support it, the sender node is notified. If the RECORD_ROUTE object is added to Path messages, the sender node can receive information about the exact routing path and can prompt for notifications from the network if the routing path changes for any reason. Finally, a SESSION_ATTRIBUTE object can be added to Path messages for aiding in session identification and diagnostics. Additional control information, such as preemption, priority, and fast-reroute, is also included in this object. When the EXPLICIT_ROUTE object (ERO) is present, the Path message is forwarded towards its destination along a path specified by the ERO. Each node along the path records the ERO in its path state block. Nodes may also modify the ERO before forwarding the Path message, in which case the modified ERO should be stored in the path state block. The LABEL_REQUEST object requests intermediate routers and receiving Swallow, editor [Page 5] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 nodes to provide a label binding for the session. If a node is incapable of providing a label binding it sends a PathErr message with an "unknown object class" error. If the LABEL_REQUEST object is not supported end to end, the sender node will be notified by the first node which lacks the support. The destination node includes a LABEL object in its response Resv message. The LABEL object is inserted in the filter spec list immediately following the filter spec to which it pertains. When the LABEL object propagates upstream to the sender node, a label-switched path is already set up for use. The Resv message is sent back towards the sender. A node that receives a Resv message containing a label uses that label for outgoing traffic on this path. It also allocates a new label and places that label in the corresponding LABEL object of the Resv message before sending it upstream. This is the label that this node will use for incoming traffic on this path. This label now serves as shorthand for the Filter Spec. 2.1. Service Classes This document does not restrict the type of Integrated Service requested on a reservations. However, an implementation should always be ready to accept the Controlled-Load service [7]. An LSP may not need a bandwidth reservation or a QoS guarantee. Such LSPs can be used to deliver best-effort traffic, even if RSVP is used for setting up LSPs. When no resources need to be allocated to the LSP, the Sender_TSpec in the Path message can specify a token bucket rate of zero and a token bucket size of zero. The corresponding FLOWSPEC (in the Resv message) should carry a zero rate and size as well. LSPs with no bandwidth reservation are not subject to Admission Control and do not require traffic policing. 2.2. Reservation styles The receiver node can select from among a set of possible reservation styles for each session, and each RSVP session must have a particular style. Senders have no influence on the choice of reservation style. The receiver can choose different reservation styles for different LSPs. An RSVP session is identified by a unique (destination address, protocol, destination port) tuple. An RSVP session can create one or more LSPs, depending on the Swallow, editor [Page 6] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 reservation style chosen. Some reservation styles, such as FF, dedicate a particular reservation to an individual sender node. Other reservation styles, such as WF and SE, can share a reservation among several sender nodes. The following sections discuss the different reservation styles and their advantages and disadvantages. 2.2.1. Fixed Filter (FF) style The Fixed Filter (FF) reservation style creates a distinct reservation for traffic from each sender that is not shared by other senders. This style is common for applications in which traffic from each sender is likely to be concurrent and independent. The total amount of reserved bandwidth on a link for sessions using FF is the sum of the reservations for the individual senders. Because each sender has its own reservation, a unique label and a separate label-switched-path is assigned to each sender. This results in a point-to-point LSP between every sender/receiver pair. Because the network state overhead is proportional to the number of LSPs, having more LSPs means that more network resources are consumed. 2.2.2. Wildcard Filter (WF) style With the Wildcard Filter (WF) reservation style, a single shared reservation is used for all senders. The total reservation on a link remains the same regardless of the number of senders. This style is useful in applications in which not all senders send traffic at the same time. A phone conference, for example, is an application where not all speakers talk at the same time. A single label-switched-path is created for all senders, because all senders to the session are covered by the reservation. On links that senders share, a single label is allocated. If there is only one sender, the LSP looks like normal point-to-point connection. When multiple senders are present, a multipoint-to-point LSP (a reversed tree) is created. This has the advantage of minimizing the number of LSPs (and the memory and CPU resources used for each LSP), allowing the network to scale better. Because of the merging rules, EXPLICIT_ROUTE objects cannot be used with WF reservations. Hence, the use of the WF style should be discouraged in the presence of ERO. Swallow, editor [Page 7] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 2.2.3. Shared Explicit (SE) style Unlike the WF style, where any sender is allowed to share the reservation, the Shared Explicit (SE) style allows a receiver to explicitly specify the senders to be included. There is a single reservation on a link for all the senders listed. Only listed senders can join the reservation. Because each sender is explicitly listed in the Resv message, you can assign separate labels to each sender, therefore creating separate LSPs for each sender. [4] describes the reason why separate LSPs are needed. Having separate LSPs for each sender also eliminates the incompatibility with the EXPLICIT_ROUTE object. Path messages from different senders can carry their own ERO, and the paths taken by the senders can converge and diverge at any point. Unlike the FF style, all SE LSPs share the single reservation. Unlike the WF style, a separate LSP is created for each sender. 2.3. LSP Tunnels When LSPs are used to carry flows, it becomes possible to be more flexible in the definition of a flow. The first node in an LSP can use any of a variety of means to determine which packets will be assigned a particular label. Once that label is assigned, the label becomes the definition of the flow. We refer to such an LSP as an LSP Tunnel due to the opaque nature of the flow. In support of this, a new SESSION object, LSP_TUNNEL_IPv4 is defined. The semantics of this object are that the flow is defined solely on the basis of packets arriving from the PHOP with the particular label value(s) assigned by this node to senders to the session. In fact, the IPv4 appearing in the object name only denotes that the destination address is an IPv4 address. An application of particular interest is traffic engineering. By establishing ER-LSPs a node at the edge of an MPLS domain can control the path which traffic from this node will take through that domain. These capabilities can be used to optimize the utilization of network resources and enhance traffic oriented performance characteristics. Swallow, editor [Page 8] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 2.4. Rerouting LSP Tunnels One of the requirements for Traffic Engineering is the ability to have an LSP tunnel re-routed upon a failure of a resource along its current path. A further requirement is the ability to have the LSP tunnel return to its original path when the failed resource is restored. It is also desirable not to disrupt traffic while rerouting is in progress. The adaptive rerouting requirement calls for establishing a new LSP while keeping the old LSP intact. On links that old and new LSPs share, one wishes to (1) not release resources from the old LSP that one wants to use for the new LSP, and (2) not double-count reservations, because this might cause Admission Control to deny the new LSP. The combination of the LSP_TUNNEL_IPv4 SESSION object and the SE reservation style naturally achieves smooth transitions. The LSP_TUNNEL_IPv4 SESSION object is used to narrow the scope of the RSVP session to the particular tunnel in question. To uniquely identify a tunnel we use the combination of the destination IP address, a Tunnel ID, and the sender's IP address which is placed in the Extended Tunnel ID field. During the reroute operation, the source needs to be able to appear as two different sources to RSVP. This is achieved by the use of a "LSP ID", which is carried in the SENDER_TEMPLATE and FILTER_SPEC objects. Since the semantics of these objects is changed, a new C- Type is assigned. To effect a reroute, the source node picks a new LSP ID and forms a new SENDER_TEMPLATE. It creates a new ERO to define the new path. The node sends a new Path Message using the original SESSION object and the new SENDER_TEMPLATE and ERO. It continues to use the old LSP and refresh the old Path message. On links which are not in common, the new Path message is treated as any new LSP tunnel setup. On links held in common, the shared SESSION object and SE style allow the LSP to be established sharing the same resources. Once the sender receives a Resv message for the new LSP, it is free to begin using it and to tear down the old LSP. Also new C-Types are assigned for the SESSION, SENDER_TEMPLATE, and FILTER_SPEC objects. Detailed descriptions of the new objects are given in later sections. All new objects are optional with respect to RSVP. An implementation Swallow, editor [Page 9] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 3. RSVP Message Formats Five new objects are defined in this document: Object name Applicable RSVP messages --------------- ------------------------ LABEL_REQUEST Path LABEL Resv EXPLICIT_ROUTE Path RECORD_ROUTE Path, Resv SESSION_ATTRIBUTE Path can choose to support some but not other objects. However, the LABEL_REQUEST and LABEL objects are mandatory with respect to this document. The LABEL and RECORD_ROUTE objects, are sender specific. They must immediately follow either the SENDER_TEMPLATE in Path messages, or the FILTER_SPEC in Resv messages. The placement of EXPLICIT_ROUTE, LABEL_REQUEST, and SESSION_ATTRIBUTE objects is simply a suggestion. While it is recommended that an implementation follow this format, the ordering of these objects is not important, so an implementation must be prepared to accept objects in any order. 3.1. Path message The format of the Path message is as follows: ::= [ ] [ ] [ ] [ ... ] [ ] ::= [ ] [ ] [ ] Swallow, editor [Page 10] Internet Draft draft-swallow-mpls-rsvp-trafeng-00.txt August 1998 3.2. Resv message The format of the Resv message is as follows: ::= [ ] [ ] [ ] [ ... ]