draft-ietf-mpls-rsvp-lsp-tunnel-00.txt   draft-ietf-mpls-rsvp-lsp-tunnel-01.txt 
Network Working Group Daniel O. Awduche Network Working Group Daniel O. Awduche
Internet Draft UUNET Worldcom, Inc. Internet Draft UUNET Worldcom, Inc.
Expiration Date: May 1999 Expiration Date: August 1999
Lou Berger Lou Berger
FORE Systems, Inc. FORE Systems, Inc.
Der-Hwa Gan Der-Hwa Gan
Juniper Networks, Inc. Juniper Networks, Inc.
Tony Li Tony Li
Juniper Networks, Inc. Juniper Networks, Inc.
George Swallow George Swallow
Cisco Systems, Inc. Cisco Systems, Inc.
Vijay Srinivasan Vijay Srinivasan
Torrent Networks, Inc. Torrent Networks, Inc.
November 1998 February 1999
Extensions to RSVP for LSP Tunnels Extensions to RSVP for LSP Tunnels
draft-ietf-mpls-rsvp-lsp-tunnel-00.txt draft-ietf-mpls-rsvp-lsp-tunnel-01.txt
Status of this Memo Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working 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, documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts. working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
To view the entire list of current Internet-Drafts, please check the To view the current status of any Internet-Draft, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow "1id-abstracts.txt" listing contained in an Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Directory, see http://www.ietf.org/shadow.html.
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 Abstract
This document describes the use of RSVP, including all the necessary This document describes the use of RSVP, including all the necessary
extensions, to establish label-switched paths (LSPs) in MPLS. Since extensions, to establish label-switched paths (LSPs) in MPLS. Since
the flow along an LSP is completely identified by the label applied the flow along an LSP is completely identified by the label applied
at the ingress node of the path, these paths may be treated as at the ingress node of the path, these paths may be treated as
tunnels. A key application of LSP tunnels is traffic engineering tunnels. A key application of LSP tunnels is traffic engineering
with MPLS as specified in [3]. with MPLS as specified in [3].
skipping to change at page 3, line 19 skipping to change at page 3, line 19
1.2 Background ............................................. 6 1.2 Background ............................................. 6
2 Overview .............................................. 8 2 Overview .............................................. 8
2.1 LSP Tunnels ............................................ 8 2.1 LSP Tunnels ............................................ 8
2.2 Operation of LSP Tunnels ............................... 8 2.2 Operation of LSP Tunnels ............................... 8
2.3 Service Classes ........................................ 10 2.3 Service Classes ........................................ 10
2.4 Reservation Styles ..................................... 10 2.4 Reservation Styles ..................................... 10
2.4.1 Fixed Filter (FF) Style ................................ 11 2.4.1 Fixed Filter (FF) Style ................................ 11
2.4.2 Wildcard Filter (WF) Style ............................. 11 2.4.2 Wildcard Filter (WF) Style ............................. 11
2.4.3 Shared Explicit (SE) Style ............................. 12 2.4.3 Shared Explicit (SE) Style ............................. 12
2.5 Rerouting LSP Tunnels .................................. 12 2.5 Rerouting LSP Tunnels .................................. 12
3 RSVP Message Formats ................................... 13 3 LSP Tunnel related Message Formats ..................... 13
3.1 Path Message ........................................... 14 3.1 Path Message ........................................... 14
3.2 Resv Message ........................................... 14 3.2 Resv Message ........................................... 14
4 Objects ................................................ 15 4 LSP Tunnel related Objects ............................. 15
4.1 Label Object ........................................... 15 4.1 Label Object ........................................... 15
4.1.1 Handling Label Objects in Resv messages ................ 16 4.1.1 Handling Label Objects in Resv messages ................ 16
4.1.2 Non-support of the Label Object ........................ 16 4.1.2 Non-support of the Label Object ........................ 17
4.2 Label Request Object ................................... 17 4.2 Label Request Object ................................... 17
4.2.1 Handling of LABEL_REQUEST .............................. 20 4.2.1 Handling of LABEL_REQUEST .............................. 20
4.2.2 Non-support of the Label Request Object ................ 21 4.2.2 Non-support of the Label Request Object ................ 21
4.3 Explicit Route Object .................................. 22 4.3 Explicit Route Object .................................. 21
4.3.1 Applicability .......................................... 22 4.3.1 Applicability .......................................... 22
4.3.2 Semantics of the Explicit Route Object ................. 23 4.3.2 Semantics of the Explicit Route Object ................. 22
4.3.3 Subobjects ............................................. 24 4.3.3 Subobjects ............................................. 23
4.3.4 Processing of the Explicit Route Object ................ 27 4.3.4 Processing of the Explicit Route Object ................ 27
4.3.5 Loops .................................................. 29 4.3.5 Loops .................................................. 29
4.3.6 Non-support of the Explicit Route Object ............... 29 4.3.6 Non-support of the Explicit Route Object ............... 29
4.4 Record Route Object .................................... 30 4.4 Record Route Object .................................... 30
4.4.1 Subobjects ............................................. 30 4.4.1 Subobjects ............................................. 30
4.4.2 Applicability .......................................... 32 4.4.2 Applicability .......................................... 33
4.4.3 Handling RRO ........................................... 33 4.4.3 Handling RRO ........................................... 33
4.4.4 Loop Detection ......................................... 34 4.4.4 Loop Detection ......................................... 34
4.4.5 Non-support of RRO ..................................... 34 4.4.5 Non-support of RRO ..................................... 35
4.5 Error Subcodes for ERO and RRO ......................... 35 4.5 Error Subcodes for ERO and RRO ......................... 35
4.6 Session, Sender Template, and Filter Spec Objects ...... 35 4.6 Session, Sender Template, and Filter Spec Objects ...... 36
4.6.1 Session Object ......................................... 36 4.6.1 Session Object ......................................... 36
4.6.2 Sender Template Object ................................. 36 4.6.2 Sender Template Object ................................. 37
4.6.3 Filter Specification Object ............................ 37 4.6.3 Filter Specification Object ............................ 37
4.6.4 Reroute Procedure ...................................... 37 4.6.4 Reroute Procedure ...................................... 38
4.7 Session Attribute Object ............................... 38 4.7 Session Attribute Object ............................... 39
5 Refresh Related Extensions ............................. 41 4.8 Flowspec Object for Class-of-Service Service .......... 41
5.1 RSVP Aggregate Message ................................. 42 5 Refresh Related Extensions ............................. 42
5.1.1 Aggregate Header ....................................... 42 5.1 RSVP Aggregate Message ................................. 43
5.1.2 Message Formats ........................................ 43 5.1.1 Aggregate Header ....................................... 43
5.1.3 Sending RSVP Aggregate Messages ........................ 43 5.1.2 Message Formats ........................................ 44
5.1.4 Receiving RSVP Aggregate Messages ...................... 44 5.1.3 Sending RSVP Aggregate Messages ........................ 45
5.1.5 Forwarding RSVP Aggregate Messages ..................... 45 5.1.4 Receiving RSVP Aggregate Messages ...................... 46
5.1.6 Aggregate-Capable Bit .................................. 45 5.1.5 Forwarding RSVP Aggregate Messages ..................... 46
5.2 MESSAGE_ID Extension ................................... 46 5.1.6 Aggregate-Capable Bit .................................. 47
5.2.1 MESSAGE_ID Object ...................................... 47 5.2 MESSAGE_ID Extension ................................... 47
5.2.2 Ack Message Format ..................................... 48 5.2.1 MESSAGE_ID Object ...................................... 48
5.2.3 MESSAGE_ID Object Usage ................................ 49 5.2.2 Ack Message Format ..................................... 49
5.2.4 MESSAGE_ID ACK Object Usage ............................ 50 5.2.3 MESSAGE_ID Object Usage ................................ 50
5.2.5 Multicast Considerations ............................... 51 5.2.4 MESSAGE_ID ACK Object Usage ............................ 51
5.2.6 Compatibility .......................................... 52 5.2.5 Multicast Considerations ............................... 52
5.3 Hello Extension ........................................ 52 5.2.6 Compatibility .......................................... 53
5.3.1 Hello and Hello Ack Message Formats .................... 54 5.3 Hello Extension ........................................ 53
5.3.2 STATE_SET Object ....................................... 54 5.3.1 Hello Message Format ................................... 54
5.3.2 HELLO Object ........................................... 55
5.3.3 Hello Message Usage .................................... 55 5.3.3 Hello Message Usage .................................... 55
5.3.4 Compatibility .......................................... 55 5.3.4 Compatibility .......................................... 56
6 Acknowledgments ........................................ 56 6 Acknowledgments ........................................ 56
7 References ............................................. 56 7 References ............................................. 57
8 Authors' Addresses ..................................... 57 8 Authors' Addresses ..................................... 58
1. Introduction and Background 1. Introduction and Background
1.1. Introduction 1.1. Introduction
This document is a specification of extensions to RSVP for This document is a specification of extensions to RSVP for
establishing label switched paths (LSPs) in Multi-protocol Label establishing label switched paths (LSPs) in Multi-protocol Label
Switching (MPLS) networks. Several of the new features described in Switching (MPLS) networks. Several of the new features described in
this document were motivated by the requirements for traffic this document were motivated by the requirements for traffic
engineering over MPLS (see [3]). In particular, the extended RSVP engineering over MPLS (see [3]). In particular, the extended RSVP
skipping to change at page 6, line 34 skipping to change at page 6, line 34
Switching [2] can associate labels with RSVP flows. When MPLS and Switching [2] can associate labels with RSVP flows. When MPLS and
RSVP are combined, the definition of a flow can be made more RSVP are combined, the definition of a flow can be made more
flexible. Once a label switched path (LSP) is established, the flexible. Once a label switched path (LSP) is established, the
traffic through the path is defined by the label applied at the traffic through the path is defined by the label applied at the
ingress node of the LSP. The mapping of label to traffic can be ingress node of the LSP. The mapping of label to traffic can be
accomplished using a number of different criteria. The set of accomplished using a number of different criteria. The set of
packets that are assigned the same label value by a specific node are packets that are assigned the same label value by a specific node are
said to belong to the same forwarding equivalence class (FEC) (see said to belong to the same forwarding equivalence class (FEC) (see
[2]), and effectively define the "RSVP flow." When traffic is mapped [2]), and effectively define the "RSVP flow." When traffic is mapped
onto a label-switched path in this way, we call the LSP an "LSP onto a label-switched path in this way, we call the LSP an "LSP
Tunnel". Tunnel". When labels are associated with traffic flows, it becomes
possible for a router to identify the appropriate reservation state
When labels are associated with traffic flows, it becomes possible for a packet based on the packet's label value.
for a router to identify the appropriate reservation state for a
packet based on the packet's label value. This approach greatly
simplifies packet classification and improves network performance
because a single label lookup identifies both packet forwarding
information and packet reservation state.
The signaling protocol model uses downstream-on-demand label The signaling protocol model uses downstream-on-demand label
distribution. A request to bind labels to a specific LSP tunnel is distribution. A request to bind labels to a specific LSP tunnel is
initiated by an ingress node through the RSVP Path message. For this initiated by an ingress node through the RSVP Path message. For this
purpose, the RSVP Path message is augmented with a LABEL_REQUEST purpose, the RSVP Path message is augmented with a LABEL_REQUEST
object. Labels are allocated downstream and distributed (propagated object. Labels are allocated downstream and distributed (propagated
upstream) by means of the RSVP Resv message. For this purpose, the upstream) by means of the RSVP Resv message. For this purpose, the
RSVP Resv message is extended with a special LABEL object. Label RSVP Resv message is extended with a special LABEL object. Label
stacking is also supported. The procedures for label allocation, stacking is also supported. The procedures for label allocation,
distribution, binding, and stacking are described in subsequent distribution, binding, and stacking are described in subsequent
skipping to change at page 10, line 23 skipping to change at page 10, line 23
Label Map" (ILM), which is used to map incoming labeled packets to a Label Map" (ILM), which is used to map incoming labeled packets to a
"Next Hop Label Forwarding Entry" (NHLFE), see [2]. "Next Hop Label Forwarding Entry" (NHLFE), see [2].
When the Resv message propagates upstream to the sender node, a When the Resv message propagates upstream to the sender node, a
label-switched path is effectively established. label-switched path is effectively established.
2.3. Service Classes 2.3. Service Classes
This document does not restrict the type of Integrated Service This document does not restrict the type of Integrated Service
requests for reservations. However, an implementation should support requests for reservations. However, an implementation should support
the Controlled-Load service [4]. the Controlled-Load service [4] and the Class-of-Service service, see
Section 4.8.
An LSP may not need bandwidth reservations or QoS guarantees. Such
LSPs can be used to deliver best-effort traffic, even if RSVP is used
for setting up LSPs. When resources do not have 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.4. Reservation Styles 2.4. Reservation Styles
The receiver node can select from among a set of possible reservation The receiver node can select from among a set of possible reservation
styles for each session, and each RSVP session must have a particular styles for each session, and each RSVP session must have a particular
style. Senders have no influence on the choice of reservation style. style. Senders have no influence on the choice of reservation style.
The receiver can choose different reservation styles for different The receiver can choose different reservation styles for different
LSPs. LSPs.
An RSVP session can result in one or more LSPs, depending on the An RSVP session can result in one or more LSPs, depending on the
skipping to change at page 12, line 9 skipping to change at page 12, line 9
Furthermore, because of the merging rules of WF, EXPLICIT_ROUTE Furthermore, because of the merging rules of WF, EXPLICIT_ROUTE
objects cannot be used with WF reservations. As a result of this objects cannot be used with WF reservations. As a result of this
issue and the lack of applicability to traffic engineering, use of WF issue and the lack of applicability to traffic engineering, use of WF
is not considered in this document. is not considered in this document.
2.4.3. Shared Explicit (SE) Style 2.4.3. Shared Explicit (SE) Style
The Shared Explicit (SE) style allows a receiver to explicitly The Shared Explicit (SE) style allows a receiver to explicitly
specify the senders to be included in a reservation. There is a specify the senders to be included in a reservation. There is a
single reservation on a link for all the senders listed. single reservation on a link for all the senders listed. Because
each sender is explicitly listed in the Resv message, different
labels may be assigned to different senders, thereby creating
separate LSPs.
Because each sender is explicitly listed in the Resv message, SE style reservations can be provided using multipoint-to-point
separate labels may be assigned to each sender, thereby creating label-switched-path or LSP per sender. Multipoint-to-point LSPs may
separate LSPs for each sender. be used when path messages do not carry the EXPLICIT_ROUTE object, or
when Path messages have identical EXPLICIT_ROUTE objects. In either
of these cases a common label may be assigned.
Having separate LSPs for each sender ensures compatibility with the Path messages from different senders can each carry their own ERO,
EXPLICIT_ROUTE object. Path messages from different senders can and the paths taken by the senders can converge and diverge at any
carry their own ERO, and the paths taken by the senders can converge point in the network topology. When Path messages have differing
and diverge at any point in the network topology. EXPLICIT_ROUTE objects, separate LSPs for each EXPLICIT_ROUTE object
must be established.
2.5. Rerouting LSP Tunnels 2.5. Rerouting LSP Tunnels
One of the requirements for Traffic Engineering is the capability to One of the requirements for Traffic Engineering is the capability to
reroute an established LSP tunnel under a number of conditions, based reroute an established LSP tunnel under a number of conditions, based
on administrative policy. For example, in some contexts, an on administrative policy. For example, in some contexts, an
administrative policy may dictate that a given LSP tunnel is to be administrative policy may dictate that a given LSP tunnel is to be
rerouted when a more "optimal" route becomes available. Another rerouted when a more "optimal" route becomes available. Another
important context when LSP tunnel reroute is usually required is upon important context when LSP tunnel reroute is usually required is upon
failure of a resource along the tunnel's established path. Under failure of a resource along the tunnel's established path. Under
skipping to change at page 13, line 32 skipping to change at page 13, line 37
define the new path. Thereafter the node sends a new Path Message define the new path. Thereafter the node sends a new Path Message
using the original SESSION object and the new SENDER_TEMPLATE and using the original SESSION object and the new SENDER_TEMPLATE and
ERO. It continues to use the old LSP and refresh the old Path ERO. It continues to use the old LSP and refresh the old Path
message. On links that are not held in common, the new Path message message. On links that are not held in common, the new Path message
is treated as a conventional new LSP tunnel setup. On links held in is treated as a conventional new LSP tunnel setup. On links held in
common, the shared SESSION object and SE style allow the LSP to be common, the shared SESSION object and SE style allow the LSP to be
established sharing resources with the old LSP. Once the sender established sharing resources with the old LSP. Once the sender
receives a Resv message for the new LSP, it can transition traffic to receives a Resv message for the new LSP, it can transition traffic to
it and tear down the old LSP. it and tear down the old LSP.
3. RSVP Message Formats 3. LSP Tunnel related Message Formats
Five new objects are defined in this document: Five new objects are defined in this section:
Object name Applicable RSVP messages Object name Applicable RSVP messages
--------------- ------------------------ --------------- ------------------------
LABEL_REQUEST Path LABEL_REQUEST Path
LABEL Resv LABEL Resv
EXPLICIT_ROUTE Path EXPLICIT_ROUTE Path
RECORD_ROUTE Path, Resv RECORD_ROUTE Path, Resv
SESSION_ATTRIBUTE Path SESSION_ATTRIBUTE Path
New C-Types are also assigned for the SESSION, SENDER_TEMPLATE, and New C-Types are also assigned for the SESSION, SENDER_TEMPLATE,
FILTER_SPEC objects. FILTER_SPEC, FLOWSPEC objects.
Detailed descriptions of the new objects are given in later sections. Detailed descriptions of the new objects are given in later sections.
All new objects are optional with respect to RSVP. An implementation All new objects are optional with respect to RSVP. An implementation
can choose to support a subset of objects. However, the can choose to support a subset of objects. However, the
LABEL_REQUEST and LABEL objects are mandatory with respect to this LABEL_REQUEST and LABEL objects are mandatory with respect to this
specification. specification.
The LABEL and RECORD_ROUTE objects, are sender specific. They must The LABEL and RECORD_ROUTE objects, are sender specific. They must
immediately follow either the SENDER_TEMPLATE in Path messages, or immediately follow either the SENDER_TEMPLATE in Path messages, or
the FILTER_SPEC in Resv messages. the FILTER_SPEC in Resv messages.
skipping to change at page 15, line 15 skipping to change at page 15, line 22
<SE filter spec list> ::= <SE filter spec> <SE filter spec list> ::= <SE filter spec>
| <SE filter spec list> <SE filter spec> | <SE filter spec list> <SE filter spec>
<SE filter spec> ::= <FILTER_SPEC> <LABEL> [ <RECORD_ROUTE> ] <SE filter spec> ::= <FILTER_SPEC> <LABEL> [ <RECORD_ROUTE> ]
Note: LABEL and RECORD_ROUTE (if present), are bound to the Note: LABEL and RECORD_ROUTE (if present), are bound to the
preceding FILTER_SPEC. No more than one LABEL and/or preceding FILTER_SPEC. No more than one LABEL and/or
RECORD_ROUTE may follow each FILTER_SPEC. RECORD_ROUTE may follow each FILTER_SPEC.
4. Objects 4. LSP Tunnel related Objects
4.1. Label Object 4.1. Label Object
Labels may be carried in Resv messages. For the FF and SE styles, a Labels may be carried in Resv messages. For the FF and SE styles, a
label is associated with each sender. The label for a sender must label is associated with each sender. The label for a sender must
immediately follow the FILTER_SPEC for that sender in the Resv immediately follow the FILTER_SPEC for that sender in the Resv
message. message.
The LABEL object has the following format: The LABEL object has the following format:
LABEL class = 16, C_Type = 1 LABEL class = 16, C_Type = 1
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
// (Object contents) // // (Object contents) //
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| (top label) | | (top label) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The contents of a LABEL object are a stack of labels, where each The contents of a LABEL object are a stack of labels, where each
label is encoded right aligned in 4 octets. The top of the stack is label is encoded right aligned in 4 octets. The top of the stack is
in the right 4 octets of the object contents. A LABEL object that in the right 4 octets of the object contents. A LABEL object that
contains no labels is illegal. contains no labels is illegal.
Each label is an unsigned integer in the range 0 through 1048575. Each label is an unsigned integer in the range 0 through 1048575.
The decision concerning whether to create a label stack with more The decision concerning whether to create a label stack with more
than one label, when to push a new label, and when to pop the label than one label, when to push a new label, and when to pop the label
stack are to be specified in a separate document. For stack is not addressed in this document. For implementations that do
implementations that do not support a label stack, only the top label not support a label stack, only the top label is examined. The rest
is examined. The rest of the label stack should be passed through of the label stack should be passed through unchanged. Such
unchanged. Such implementations are required to generate a label implementations are required to generate a label stack of depth 1
stack of depth 1 when initiating the first LABEL. when initiating the first LABEL.
4.1.1. Handling Label Objects in Resv messages 4.1.1. Handling Label Objects in Resv messages
A router uses the top label carried in the LABEL object as the A router uses the top label carried in the LABEL object as the
outgoing label associated with the sender. The router allocates a outgoing label associated with the sender. The router allocates a
new label and binds it to the incoming interface of this new label and binds it to the incoming interface of this
session/sender. This is the same interface that the router uses to session/sender. This is the same interface that the router uses to
forward Resv messages to the previous hops. forward Resv messages to the previous hops.
In MPLS a node may support multiple label spaces, perhaps associating In MPLS a node may support multiple label spaces, perhaps associating
skipping to change at page 16, line 39 skipping to change at page 16, line 45
Labels received in Resv messages on different interfaces are always Labels received in Resv messages on different interfaces are always
considered to be different even if the label value is the same. considered to be different even if the label value is the same.
To construct a new LABEL object, the router replaces the top label To construct a new LABEL object, the router replaces the top label
(from the received Resv message) with the locally allocated new (from the received Resv message) with the locally allocated new
label. The router then sends the new LABEL object as part of the label. The router then sends the new LABEL object as part of the
Resv message to the previous hop. The LABEL object should be kept in Resv message to the previous hop. The LABEL object should be kept in
the Reservation State Block. It is then used in the next Resv the Reservation State Block. It is then used in the next Resv
refresh event for formatting the Resv message. refresh event for formatting the Resv message.
A router can decide to send a Resv message before its refresh timers A router is expected to send a Resv message before its refresh timers
expire if the contents of the LABEL object change. expire if the contents of the LABEL object change.
4.1.2. Non-support of the Label Object 4.1.2. Non-support of the Label Object
Under normal circumstances, a node should never receive a LABEL Under normal circumstances, a node should never receive a LABEL
object in a Resv message unless it had included a LABEL_REQUEST object in a Resv message unless it had included a LABEL_REQUEST
object in the corresponding Path message. However, an RSVP router object in the corresponding Path message. However, an RSVP router
that does not recognize the LABEL object sends a ResvErr with the that does not recognize the LABEL object sends a ResvErr with the
error code "Unknown object class" toward the receiver. This causes error code "Unknown object class" toward the receiver. This causes
the reservation to fail. the reservation to fail.
RSVP is designed to cope gracefully with non-RSVP routers anywhere RSVP is designed to cope gracefully with non-RSVP routers anywhere
between senders and receivers. However, non-RSVP routers cannot between senders and receivers. However, obviously, non-RSVP routers
receive label-switched packets conveyed in PATH or RESV messages. cannot convey labels via RSVP. This means that if a router has a
This means that if a router has a neighbor that is not RSVP capable, neighbor that is not RSVP capable, the router must not advertise the
the router must not advertise the LABEL object when sending messages LABEL object when sending messages that pass through the non-RSVP
that pass through the non-RSVP router. The RSVP specification [1] router. The RSVP specification [1] describes how routers can
describes how routers can determine the presence of non-RSVP routers. determine the presence of non-RSVP routers.
4.2. Label Request Object 4.2. Label Request Object
The LABEL_REQUEST object formats are shown below. Currently there The LABEL_REQUEST object formats are shown below. Currently there
three possible C_Types. Type 1 is a Label Request without label three possible C_Types. Type 1 is a Label Request without label
range. Type 2 is a label request with an ATM label range. Type 3 is range. Type 2 is a label request with an ATM label range. Type 3 is
a label request with a Frame Relay label range. a label request with a Frame Relay label range.
Label Request without Label Range Label Request without Label Range
class = 19, C_Type = 1 (need to get an official class num from class = 19, C_Type = 1 (need to get an official class num from
the IANA) the IANA)
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | L3PID | | Reserved | L3PID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reserved Reserved
This field is reserved. It must be set to zero on transmis- This field is reserved. It must be set to zero on transmis-
sion and must be ignored on receipt. sion and must be ignored on receipt.
L3PID L3PID
skipping to change at page 18, line 13 skipping to change at page 18, line 13
Standard Ethertype values are used. Standard Ethertype values are used.
Label Request with ATM Label Range Label Request with ATM Label Range
class = 19, C_Type = 2 (need to get an official class num from class = 19, C_Type = 2 (need to get an official class num from
the IANA) the IANA)
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | L3PID | | Reserved | L3PID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Res | Minimum VPI | Minimum VCI | | Res | Minimum VPI | Minimum VCI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Res | Maximum VPI | Maximum VCI | | Res | Maximum VPI | Maximum VCI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reserved (Res) Reserved (Res)
This field is reserved. It must be set to zero on transmis- This field is reserved. It must be set to zero on transmis-
skipping to change at page 19, line 25 skipping to change at page 19, line 23
right justified in this field and preceding bits should be set right justified in this field and preceding bits should be set
to zero. to zero.
Label Request with Frame Relay Label Range Label Request with Frame Relay Label Range
class = 19, C_Type = 3 (need to get an official class num from class = 19, C_Type = 3 (need to get an official class num from
the IANA) the IANA)
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | L3PID | | Reserved | L3PID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |DLI| Minimum DLCI | | Reserved |DLI| Minimum DLCI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Maximum DLCI | | Reserved | Maximum DLCI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reserved Reserved
This field is reserved. It must be set to zero on transmis- This field is reserved. It must be set to zero on transmis-
skipping to change at page 21, line 28 skipping to change at page 21, line 23
An RSVP router that does not recognize the LABEL_REQUEST object sends An RSVP router that does not recognize the LABEL_REQUEST object sends
a PathErr with the error code "Unknown object class" toward the a PathErr with the error code "Unknown object class" toward the
sender. An RSVP router that recognizes the LABEL_REQUEST object but sender. An RSVP router that recognizes the LABEL_REQUEST object but
does not recognize the C_Type send a PathErr with the error code does not recognize the C_Type send a PathErr with the error code
"Unknown object C_Type" toward the sender. This causes the path "Unknown object C_Type" toward the sender. This causes the path
setup to fail. The sender should notify management that a LSP cannot setup to fail. The sender should notify management that a LSP cannot
be established and possibly take action to continue the reservation be established and possibly take action to continue the reservation
without the LABEL_REQUEST. without the LABEL_REQUEST.
RSVP is designed to cope gracefully with non-RSVP routers anywhere RSVP is designed to cope gracefully with non-RSVP routers anywhere
between the sender and the receiver. However, non-RSVP routers cannot between senders and receivers. However, obviously, non-RSVP routers
receive label-switched packets. This means that if a router has a cannot convey labels via RSVP. This means that if a router has a
neighbor that is not RSVP capable, the router must not advertise neighbor that is not RSVP capable, the router must not advertise the
LABEL_REQUEST objects when sending messages that pass through the LABEL_REQUEST object when sending messages that pass through the
non-RSVP routers. The router should send a PathErr back to the non-RSVP routers. The router should send a PathErr back to the
sender, with the error code "Routing problem" and the subcode "MPLS sender, with the error code "Routing problem" and the subcode "MPLS
being negotiated, but a non-RSVP capable router stands in the path." being negotiated, but a non-RSVP capable router stands in the path."
See [1] for a description of how routers can determine the presence See [1] for a description of how routers can determine the presence
of non-RSVP routers. of non-RSVP routers.
4.3. Explicit Route Object 4.3. Explicit Route Object
As stated earlier, explicit routes are to be specified through a new As stated earlier, explicit routes are to be specified through a new
EXPLICIT_ROUTE object (ERO) in RSVP Path messages. The EXPLICIT_ROUTE object (ERO) in RSVP Path messages. The
EXPLICIT_ROUTE object has the following format: EXPLICIT_ROUTE object has the following format:
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
// (Object contents) // // (Object contents) //
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Class-Num Class-Num
The Class-Num for an EXPLICIT_ROUTE object is 18 (need to get The Class-Num for an EXPLICIT_ROUTE object is 20 (need to get
an official one from the IANA with the high order two bits set an official one from the IANA with the form 0bbbbbbb to ensure
to 11) that non-supporting implementations reject the message.)
C-Type C-Type
The C-Type for an EXPLICIT_ROUTE object is 2 (need to get an The C-Type for an EXPLICIT_ROUTE object is 1 (need to get an
official one from the IANA) official one from the IANA)
If a Path message contains multiple EXPLICIT_ROUTE objects, only the If a Path message contains multiple EXPLICIT_ROUTE objects, only the
first object is meaningful. Subsequent EXPLICIT_ROUTE objects may be first object is meaningful. Subsequent EXPLICIT_ROUTE objects may be
ignored and should not be propagated. ignored and should not be propagated.
4.3.1. Applicability 4.3.1. Applicability
The EXPLICIT_ROUTE object is intended to be used only for unicast The EXPLICIT_ROUTE object is intended to be used only for unicast
situations. Applications of explicit routing to multicast are a situations. Applications of explicit routing to multicast are a
topic for further research. topic for further research.
The EXPLICIT_ROUTE object is to be used only when all routers along The EXPLICIT_ROUTE object is to be used only when all routers along
the explicit route support RSVP and the EXPLICIT_ROUTE object. The the explicit route support RSVP and the EXPLICIT_ROUTE object. The
mechanisms for determining, a priori, that such support is present EXPLICIT_ROUTE object is assigned a class value of the form 0bbbbbbb.
are beyond the scope of this document. RSVP routers that do not support the object will therefor response
with an "Unknown Object Class" error.
4.3.2. Semantics of the Explicit Route Object 4.3.2. Semantics of the Explicit Route Object
An explicit route is a particular path in the network topology. An explicit route is a particular path in the network topology.
Typically, the explicit route is determined by a node, with the Typically, the explicit route is determined by a node, with the
intent of directing traffic along that path. intent of directing traffic along that path.
An explicit route is described as a list of groups of nodes along the An explicit route is described as a list of groups of nodes along the
explicit route. Certain operations to be performed along the path explicit route. Certain operations to be performed along the path
can also be encoded in the EXPLICIT_ROUTE object. can also be encoded in the EXPLICIT_ROUTE object.
skipping to change at page 28, line 19 skipping to change at page 28, line 15
subobject, the message is also in error and the system should return subobject, the message is also in error and the system should return
a "Bad EXPLICIT_ROUTE object" error. a "Bad EXPLICIT_ROUTE object" error.
2) If there is no second subobject, this indicates the end of the 2) If there is no second subobject, this indicates the end of the
explicit route. The EXPLICIT_ROUTE object should be removed from the explicit route. The EXPLICIT_ROUTE object should be removed from the
Path message. This node may or may not be the end of the path. Path message. This node may or may not be the end of the path.
Processing continues with section 4.3.4.2, where a new EXPLICIT_ROUTE Processing continues with section 4.3.4.2, where a new EXPLICIT_ROUTE
object may be added to the Path message. object may be added to the Path message.
3) Next, the node evaluates the second subobject. If the subobject 3) Next, the node evaluates the second subobject. If the subobject
is an operation subobject, the node records the subobject, deletes it is an operation subobject, the node pops the subobject from the
from the EXPLICIT_ROUTE object and continues processing with step 2, EXPLICIT ROUTE object , records the subobject, and continues
above. Note that this changes the third subobject into the second processing with step 2, above. Note that this changes the third
subobject in subsequent processing. The precise operations to be subobject into the second subobject (hence "pop") in subsequent
performed by this node must be defined by the operation subobject. processing. The precise operations to be performed by this node must
be defined by the operation subobject.
4) If the node is also a part of the abstract node described by the 4) If the node is also a part of the abstract node described by the
second subobject, then the node deletes the first subobject and second subobject, then the node deletes the first subobject and
continues processing with step 2, above. Note that this makes the continues processing with step 2, above. Note that this makes the
second subobject into the first subobject of the next iteration. second subobject into the first subobject of the next iteration and
allows the node to identify the next abstract node on the path of the
message after possible repeated application(s) of steps 2-4.
5) The node determines whether it is topologically adjacent to the 5) Abstract Node Border Case: The node determines whether it is
abstract node described by the second subobject. If so, the node topologically adjacent to the abstract node described by the second
selects a particular next hop which is a member of the abstract node. subobject. If so, the node selects a particular next hop which is a
The node then deletes the first subobject and continues processing member of the abstract node. The node then deletes the first
with section 4.3.4.2. subobject and continues processing with section 4.3.4.2.
6) Otherwise, the node selects a next hop within the abstract node of 6) Interior of the Abstract Node Case: Otherwise, the node selects a
the first subobject that is along the path to the abstract node of next hop within the abstract node of the first subobject (which the
the second subobject. If no such path exists then there are two node belongs to) that is along the path to the abstract node of the
cases: second subobject (which is the next abstract node). If no such path
exists then there are two cases:
6a) If the second subobject is a strict subobject, there is an error 6a) If the second subobject is a strict subobject, there is an error
and the node should return a "Bad strict node" error. and the node should return a "Bad strict node" error.
6b) Otherwise, if the second subobject is a loose subobject, the node 6b) Otherwise, if the second subobject is a loose subobject, the node
selects any next hop that is along the path to the next abstract selects any next hop that is along the path to the next abstract
node. If no path exists, there is an error, and the node should node. If no path exists, there is an error, and the node should
return a "Bad loose node" error. return a "Bad loose node" error.
7) Finally, the node replaces the first subobject with any subobject 7) Finally, the node replaces the first subobject with any subobject
skipping to change at page 30, line 12 skipping to change at page 30, line 12
action to continue the reservation without the EXPLICIT_ROUTE or via action to continue the reservation without the EXPLICIT_ROUTE or via
a different explicit route. a different explicit route.
4.4. Record Route Object 4.4. Record Route Object
The format of the RECORD_ROUTE object (RRO) is as follows: The format of the RECORD_ROUTE object (RRO) is as follows:
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
// (Subobjects) // // (Subobjects) //
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Class-Num Class-Num
The Class-Num for a RECORD_ROUTE object is 194 (need to get an The Class-Num for a RECORD_ROUTE object is 21 (need to get an
official one from the IANA with the high order two bits set to official one from the IANA with the form 0bbbbbbb to ensure
11) that non-supporting implementations reject the message.)
C-Type C-Type
The C-Type for a RECORD_ROUTE object is 1 (need to get an offi- The C-Type for a RECORD_ROUTE object is 1 (need to get an offi-
cial one from the IANA) cial one from the IANA)
The RRO can be present in both RSVP Path and Resv messages. If a The RRO can be present in both RSVP Path and Resv messages. If a
message contains multiple RROs, only the first RRO is meaningful. message contains multiple RROs, only the first RRO is meaningful.
Subsequent RROs can be ignored and should not be propagated. Subsequent RROs can be ignored and should not be propagated.
skipping to change at page 31, line 12 skipping to change at page 31, line 12
Two kinds of subobjects are currently defined. Two kinds of subobjects are currently defined.
4.4.1.1. Subobject 1: IPv4 address 4.4.1.1. Subobject 1: IPv4 address
0 1 2 3 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 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | IPv4 address (4 bytes) | | Type | Length | IPv4 address (4 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 address (continued) | Mask | Padding | | IPv4 address (continued) | Mask | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Type
0x81 IPv4 address 0x81 IPv4 address
IPv4 address IPv4 address
A 32-bit unicast, host address. Any network-reachable A 32-bit unicast, host address. Any network-reachable
interface address is allowed here. Illegal addresses, interface address is allowed here. Illegal addresses,
skipping to change at page 31, line 35 skipping to change at page 31, line 35
Length Length
The Length contains the total length of the subobject in The Length contains the total length of the subobject in
bytes, including the Type and Length fields. The Length bytes, including the Type and Length fields. The Length
is always 8. is always 8.
Mask Mask
32 32
Padding Flags
Zero on transmission. Ignored on receipt. 0x01 Fast Re-Route Tunnel in place
Indicates that the link downstream of this node is
protected via a fast reroute tunnel
0x02 Fast Re-Route Tunnel in use
Indicates that a fast reroute tunnel is in use to
maintain this tunnel (usually in the face a an outage
of the link it was previously routed over
4.4.1.2. Subobject 2: IPv6 address 4.4.1.2. Subobject 2: IPv6 address
0 1 2 3 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 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | IPv6 address (16 bytes) | | Type | Length | IPv6 address (16 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv6 address (continued) | | IPv6 address (continued) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv6 address (continued) | | IPv6 address (continued) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv6 address (continued) | | IPv6 address (continued) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv6 address (continued) | Mask | Padding | | IPv6 address (continued) | Mask | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Type
0x82 IPv6 address 0x82 IPv6 address
Length Length
The Length contains the total length of the subobject in The Length contains the total length of the subobject in
bytes, including the Type and Length fields. The Length bytes, including the Type and Length fields. The Length
is always 20. is always 20.
IPv6 address IPv6 address
A 128-bit unicast host address. A 128-bit unicast host address.
Mask Mask
128 128
Padding Flags
Zero on transmission. Ignored on receipt. 0x01 Fast Re-Route Tunnel in place
Indicates that the link downstream of this node is
protected via a fast reroute tunnel
0x02 Fast Re-Route Tunnel in use
Indicates that a fast reroute tunnel is in use to
maintain this tunnel (usually in the face a an outage
of the link it was previously routed over
4.4.2. Applicability 4.4.2. Applicability
Only the procedures for use in unicast sessions are defined here. Only the procedures for use in unicast sessions are defined here.
There are three possible uses of RRO in RSVP. First, an RRO can There are three possible uses of RRO in RSVP. First, an RRO can
function as a loop detection mechanism to discover L3 routing loops, function as a loop detection mechanism to discover L3 routing loops,
or loops inherent in the explicit route. The exact procedure for or loops inherent in the explicit route. The exact procedure for
doing so is described later in this document. doing so is described later in this document.
skipping to change at page 34, line 44 skipping to change at page 35, line 7
detected," and drops the Path message. Until the loop is eliminated, detected," and drops the Path message. Until the loop is eliminated,
this session is not suitable for forwarding data packets. How the this session is not suitable for forwarding data packets. How the
loop eliminated is beyond the scope of this document. loop eliminated is beyond the scope of this document.
For Resv messages containing a forwarding loop, the router simply For Resv messages containing a forwarding loop, the router simply
drops the message. Resv messages should not loop if Path messages do drops the message. Resv messages should not loop if Path messages do
not loop. not loop.
4.4.5. Non-support of RRO 4.4.5. Non-support of RRO
An RSVP router that does not recognize the RRO forwards it unchanged. The RRO object is to be used only when all routers along the path
This has no impact on the reservation. The presence of non-RSVP support RSVP and the RRO object. The RRO object is assigned a class
routers anywhere between senders and receivers has no impact on the value of the form 0bbbbbbb. RSVP routers that do not support the
object either. The worst result is that the RRO does not reflect the object will therefor response with an "Unknown Object Class" error.
full path information.
4.5. Error Subcodes for ERO and RRO 4.5. Error Subcodes for ERO and RRO
In the processing described above, certain errors must be reported as In the processing described above, certain errors must be reported as
part of a "Routing Problem" PathErr message. The value of the part of a "Routing Problem" PathErr message. The value of the
"Routing Problem" error code is 24 (TBD). "Routing Problem" error code is 24 (TBD).
The following defines the subcodes for the routing problem PathErr The following defines the subcodes for the routing problem PathErr
message: message:
skipping to change at page 36, line 12 skipping to change at page 36, line 18
FILTER_SPEC objects. The LSP_TUNNEL_IPv4 objects have the following FILTER_SPEC objects. The LSP_TUNNEL_IPv4 objects have the following
format: format:
4.6.1. Session Object 4.6.1. Session Object
Class = SESSION, C-Type = LSP_TUNNEL_IPv4 (7) Class = SESSION, C-Type = LSP_TUNNEL_IPv4 (7)
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 tunnel end point address | | IPv4 tunnel end point address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Must be zero | Tunnel ID | | Must be zero | Tunnel ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Extended Tunnel ID | | Extended Tunnel ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv4 tunnel end point address IPv4 tunnel end point address
IPv4 address of the destination node for the tunnel. IPv4 address of the destination node for the tunnel.
skipping to change at page 36, line 45 skipping to change at page 37, line 12
source-destination pair may place their IPv4 address here as a source-destination pair may place their IPv4 address here as a
globally unique identifier. globally unique identifier.
4.6.2. Sender Template Object 4.6.2. Sender Template Object
Class = SENDER_TEMPLATE, C-Type = LSP_TUNNEL_IPv4 (7) Class = SENDER_TEMPLATE, C-Type = LSP_TUNNEL_IPv4 (7)
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 tunnel sender address | | IPv4 tunnel sender address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Must be zero | LSP ID | | Must be zero | LSP ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv4 tunnel sender address IPv4 tunnel sender address
IPv4 address for a sender node IPv4 address for a sender node
LSP ID LSP ID
A 16-bit identifier used in the SENDER_TEMPLATE and the A 16-bit identifier used in the SENDER_TEMPLATE and the
FILTER_SPEC that can be changed to allow a sender to share FILTER_SPEC that can be changed to allow a sender to share
resources with itself. resources with itself.
skipping to change at page 37, line 21 skipping to change at page 37, line 34
FILTER_SPEC that can be changed to allow a sender to share FILTER_SPEC that can be changed to allow a sender to share
resources with itself. resources with itself.
4.6.3. Filter Specification Object 4.6.3. Filter Specification Object
Class = FILTER SPECIFICATION, C-Type = LSP_TUNNEL_IPv4 (7) Class = FILTER SPECIFICATION, C-Type = LSP_TUNNEL_IPv4 (7)
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 tunnel sender address | | IPv4 tunnel sender address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Must be zero | LSP ID | | Must be zero | LSP ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv4 tunnel sender address IPv4 tunnel sender address
IPv4 address for a sender node IPv4 address for a sender node
LSP ID LSP ID
skipping to change at page 37, line 45 skipping to change at page 38, line 12
FILTER_SPEC that can be changed to allow a sender to share FILTER_SPEC that can be changed to allow a sender to share
resources with itself. resources with itself.
4.6.4. Reroute Procedure 4.6.4. Reroute Procedure
This section describes how to setup a tunnel that is capable of This section describes how to setup a tunnel that is capable of
maintaining resource reservations (without double counting) while it maintaining resource reservations (without double counting) while it
is being rerouted or while it is attempting to increase its is being rerouted or while it is attempting to increase its
bandwidth. In the initial Path message, the source node forms a bandwidth. In the initial Path message, the source node forms a
SESSION object, assigns a Tunnel_ID, and places its IPv4 address in SESSION object, assigns a Tunnel_ID, and places its IPv4 address in
the Extended_Tunnel_ID. It also forms a SENDER_TEMPLATE and assigns the LSP_ID. It also forms a SENDER_TEMPLATE and assigns a LSP_ID.
a Tunnel_Path_ID. Tunnel setup then proceeds according to the normal Tunnel setup then proceeds according to the normal procedure.
procedure.
On receipt of the Path message, the destination node sends a Resv On receipt of the Path message, the destination node sends a Resv
message with the STYLE Shared Explicit to the source. message with the STYLE Shared Explicit to the source.
[Note: I think we should add a flag to the SESSION_ATTRIBUTE for the [Note: I think we should add a flag to the SESSION_ATTRIBUTE for the
source to indicate that it wishes the SE style.] source to indicate that it wishes the SE style.]
When a source node with an established path wants to change that When a source node with an established path wants to change that
path, it forms a new Path message as follows. The existing SESSION path, it forms a new Path message as follows. The existing SESSION
object is used. In particular the Tunnel_ID and Extended_Tunnel_ID object is used. In particular the Tunnel_ID and Extended_Tunnel_ID
are unchanged. The source node picks a new Tunnel_Path_ID to form a are unchanged. The source node picks a new LSP_ID to form a new
new SENDER_TEMPLATE. It creates an EXPLICIT_ROUTE object for the new SENDER_TEMPLATE. It creates an EXPLICIT_ROUTE object for the new
route. The new Path message is sent. The source node refreshes both route. The new Path message is sent. The source node refreshes both
the old and new path messages the old and new path messages
The destination node responds with a Resv message with an SE flow The destination node responds with a Resv message with an SE flow
descriptor formatted as: descriptor formatted as:
<FLOW_SPEC><old_FILTER_SPEC><old_LABEL_OBJECT><new_FILTER_SPEC> <FLOWSPEC><old_FILTER_SPEC><old_LABEL_OBJECT><new_FILTER_SPEC>
<new_LABEL_OBJECT> <new_LABEL_OBJECT>
(Note that if the PHOPs are different, then two messages are sent (Note that if the PHOPs are different, then two messages are sent
each with the appropriate FILTER_SPEC and LABEL_OBJECT.) each with the appropriate FILTER_SPEC and LABEL_OBJECT.)
When the Source node receives the Resv Message(s), it may begin using When the Source node receives the Resv Message(s), it may begin using
the new route. It should send a PathTear message for the old route. the new route. It should send a PathTear message for the old route.
4.7. Session Attribute Object 4.7. Session Attribute Object
The format of the SESSION_ATTRIBUTE object is as follows: The format of the SESSION_ATTRIBUTE object is as follows:
0 1 2 3 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 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 (bytes) | Class-Num | C-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Setup Prio | Holding Prio | Flags | Name Length | | Setup Prio | Holding Prio | Flags | Name Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
// Session Name (NULL padded display string) // // Session Name (NULL padded display string) //
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Class-Num Class-Num
The Class-Num indicates that the object is 207. (TBD) The Class-Num indicates that the object is 207. (TBD)
skipping to change at page 39, line 25 skipping to change at page 39, line 44
detour path for fast service restoration. detour path for fast service restoration.
0x02 = Merging permitted 0x02 = Merging permitted
This flag permits transit routers to merge this session This flag permits transit routers to merge this session
with other RSVP sessions for the purpose of reducing with other RSVP sessions for the purpose of reducing
resource overhead on downstream transit routers, thereby resource overhead on downstream transit routers, thereby
providing better network scalability. providing better network scalability.
0x04 = Tunnel head may reroute 0x04 = Tunnel head may reroute
This flag indicates that the head end of the tunnel may This flag indicates that the head end of the tunnel may
choose choose to reroute this tunnel without tearing it down.
to reroute this tunnel without tearing it down. A tunnel A tunnel tail SHOULD use the SE Style when responding
tail with a Resv message.
SHOULD use the SE Style when responding with a Resv message.
Setup Priority Setup Priority
The priority of the session with respect to taking resources, The priority of the session with respect to taking resources,
in the range of 0 to 7. The value 0 is the highest priority. in the range of 0 to 7. The value 0 is the highest priority.
The Setup Priority is used in deciding whether this session can The Setup Priority is used in deciding whether this session can
preempt another session. preempt another session.
Holding Priority Holding Priority
The priority of the session with respect to holding resources, The priority of the session with respect to holding resources,
in the range of 0 to 7. The value 0 is the highest priority. in the range of 0 to 7. The value 0 is the highest priority.
Holding Priority is used in deciding whether this session can Holding Priority is used in deciding whether this session can
be preempted by another session. be preempted by another session.
Name Length Name Length
The length of the display string before padding, in bytes. The length of the display string before padding, in bytes.
Session Name Session Name
skipping to change at page 41, line 16 skipping to change at page 41, line 38
displayable characters. The Length must always be a multiple of 4 displayable characters. The Length must always be a multiple of 4
and must be at least 8. For an object length that is not a multiple and must be at least 8. For an object length that is not a multiple
of 4, the object is padded with trailing NULL characters. The Name of 4, the object is padded with trailing NULL characters. The Name
Length field contains the actual string length. Length field contains the actual string length.
All RSVP routers, whether they support the SESSION_ATTRIBUTE object All RSVP routers, whether they support the SESSION_ATTRIBUTE object
or not, shall forward the object unmodified. The presence of non- or not, shall forward the object unmodified. The presence of non-
RSVP routers anywhere between senders and receivers has no impact on RSVP routers anywhere between senders and receivers has no impact on
this object. this object.
4.8. Flowspec Object for Class-of-Service Service
An LSP may not need bandwidth reservations or QoS guarantees. Such
LSPs can be used to deliver best-effort traffic, even if RSVP is used
for setting up LSPs. When resources do not have to be allocated to
the LSP, the Class-of-Service service should be used.
The Class-of-Service FLOWSPEC allows indication of a Class of Service
(CoS) value that should be used when handling data packets associated
with the request.
The format of the Class-of-Service FLOWSPEC object is:
Class-of-Service flowspec object: Class = 9, C-Type = 3 (TBA)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | CoS | Maximum Packet Size [M] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reserved
This field is reserved. It must be set to zero on transmission
and must be ignored on receipt.
CoS
Indicates the Class of Service (CoS) of the data traffic asso-
ciated with the request. A value of zero (0) indicates that
associated traffic is "Best-Effort". Specifically no service
assurances are being requested from the network. The intent is
to enable networks to support the IP ToS Octet as defined in
RFC1349 [7]. It is noted that there is ongoing work within the
IETF to update the use of the IP ToS Octet.
M
The maximum packet size parameter [M] should be set to the
value of the smallest path MTU. This parameter is set in Resv
messages by the reliever based on information in arriving RSVP
ADSPEC objects. This parameter is ignored when the object is
contained in Path messages.
5. Refresh Related Extensions 5. Refresh Related Extensions
The resource requirement (in terms of cpu processing and memory) for The resource requirement (in terms of cpu processing and memory) for
running RSVP on a router increases proportionally with the number of running RSVP on a router increases proportionally with the number of
sessions. Supporting a large number of sessions can present scaling sessions. Supporting a large number of sessions can present scaling
problems. problems.
This section describes an approach to help alleviate one of the This section describes an approach to help alleviate one of the
scaling issues. RSVP Path and Resv messages must be periodically scaling issues. RSVP Path and Resv messages must be periodically
refreshed to maintain state. The approach described here simply refreshed to maintain state. The approach described here simply
skipping to change at page 41, line 43 skipping to change at page 43, line 14
An aggregate message is proposed which can reduce R for faster An aggregate message is proposed which can reduce R for faster
detection of connectivity problems and still reduce overhead by an detection of connectivity problems and still reduce overhead by an
order of magnitude. order of magnitude.
A Message_ID object is defined to reduce refresh message processing A Message_ID object is defined to reduce refresh message processing
by allowing the receiver to immediately identify an unchanged by allowing the receiver to immediately identify an unchanged
message. A Message_ACK object is defined which used in combination message. A Message_ACK object is defined which used in combination
with the Message_ID object may suppress refreshes altogether. with the Message_ID object may suppress refreshes altogether.
The described approach also addresses issues of latency and
reliability of RSVP Signaling. The latency and reliability problem
occurs when a non-refresh RSVP message is lost in transmission.
Standard RSVP [RFC2205] maintains state via the generation of RSVP
refresh messages. In the face of transmission loss of RSVP messages,
the end-to-end latency of RSVP signaling is tied to the refresh
interval of the node(s) experiencing the loss. When end-to-end
signaling is limited by the refresh interval, the establishment or
change of a reservation may be beyond the range of what is acceptable
for some some applications.
Finally, a hello protocol is defined to allow detection of the loss Finally, a hello protocol is defined to allow detection of the loss
of a neighbor. of a neighbor node or it's RSVP state information.
5.1. RSVP Aggregate Message 5.1. RSVP Aggregate Message
An RSVP aggregate message consists of an aggregate header followed by An RSVP aggregate message consists of an aggregate header followed by
a body consisting of a variable number of standard RSVP messages. a body consisting of a variable number of standard RSVP messages.
The following subsections define the formats of the aggregate header The following subsections define the formats of the aggregate header
and the rules for including standard RSVP messages as part of the and the rules for including standard RSVP messages as part of the
message. message.
5.1.1. Aggregate Header 5.1.1. Aggregate Header
skipping to change at page 46, line 9 skipping to change at page 47, line 30
0x01: Aggregate capable 0x01: Aggregate capable
If set, indicates to RSVP neighbors that this node is willing If set, indicates to RSVP neighbors that this node is willing
and capable of receiving aggregate messages. This bit is and capable of receiving aggregate messages. This bit is
meaningful only between adjacent RSVP neighbors. meaningful only between adjacent RSVP neighbors.
5.2. MESSAGE_ID Extension 5.2. MESSAGE_ID Extension
Within the MESSAGE_ID Class there are two object types defined. The Within the MESSAGE_ID Class there are two object types defined. The
two object types are the MESSAGE_ID object and the MESSAGE_ID ACK two object types are the MESSAGE_ID object and the MESSAGE_ID ACK
object. The MESSAGE_ID Class is used to support acknowledgments and object. The MESSAGE_ID Class is used to support acknowledgments and,
to indicate when refresh messages are not needed after an when used in conjunction with the Hello Extension described in
acknowledgment. When refreshes are normally generated, the Section 5.3, to indicate when refresh messages are not needed after
an acknowledgment. When refreshes are normally generated, the
MESSAGE_ID object can also be used to simply provide a shorthand MESSAGE_ID object can also be used to simply provide a shorthand
indication of when a message represents new state. Such information indication of when a message represents new state. Such information
can be used on the receiving node to reduce refresh processing can be used on the receiving node to reduce refresh processing
requirements. requirements.
Message identification and acknowledgment is done on a hop-by-hop Message identification and acknowledgment is done on a hop-by-hop
basis. Acknowledgment is handled independent of SESSION or message basis. Acknowledgment is handled independent of SESSION or message
type. Both types of MESSAGE_ID objects contain a message identifier. type. Both types of MESSAGE_ID objects contain a message identifier.
The identifier MUST be unique on a per source IP address basis across The identifier MUST be unique on a per source IP address basis across
messages sent by an RSVP node and received by a particular node. No messages sent by an RSVP node and received by a particular node. No
more than one MESSAGE_ID object may be included in an RSVP message. more than one MESSAGE_ID object may be included in an RSVP message.
Each message containing an MESSAGE_ID object may be acknowledged via Each message containing an MESSAGE_ID object may be acknowledged via
a MESSAGE_ID ACK object. MESSAGE_ID ACK objects may be sent a MESSAGE_ID ACK object. MESSAGE_ID ACK objects may be sent
piggybacked in unrelated RSVP messages or in RSVP ACK messages piggybacked in unrelated RSVP messages or in RSVP ACK messages
Either type of MESSAGE_ID object contained in an aggregate sub- Either type of MESSAGE_ID object may be included in an aggregate
message. When so included the object is treated as if it were sub-message. When included, the object is treated as if it were
contained in a standard, unaggregated, RSVP message. Only one contained in a standard, unaggregated, RSVP message. Only one
MESSAGE_ID object MAY be included in a (sub)message and it MUST MESSAGE_ID object MAY be included in a (sub)message and it MUST
follow any present MESSAGE_ID ACK objects. When no MESSAGE_ID ACK follow any present MESSAGE_ID ACK objects. When no MESSAGE_ID ACK
objects are present, the MESSAGE_ID object MUST immediately follow objects are present, the MESSAGE_ID object MUST immediately follow
the INTEGRITY object. When no INTEGRITY object is present, the the INTEGRITY object. When no INTEGRITY object is present, the
MESSAGE_ID object MUST immediately follow the the (sub)message MESSAGE_ID object MUST immediately follow the (sub)message header.
header.
When present, one or more MESSAGE_ID ACK objects MUST immediately When present, one or more MESSAGE_ID ACK objects MUST immediately
follow the INTEGRITY object. When no INTEGRITY object is present, follow the INTEGRITY object. When no INTEGRITY object is present,
the MESSAGE_ID ACK objects MUST immediately follow the the the MESSAGE_ID ACK objects MUST immediately follow the the
(sub)message header. An MESSAGE_ID ACK object may only be included (sub)message header. An MESSAGE_ID ACK object may only be included
in a message when the message's IP destination address matches the in a message when the message's IP destination address matches the
unicast address of the node that generated the message(s) being unicast address of the node that generated the message(s) being
acknowledged. acknowledged.
5.2.1. MESSAGE_ID Object 5.2.1. MESSAGE_ID Object
MESSAGE_ID Class = TBD. (Value TBD of form 10bbbbbb) MESSAGE_ID Class = 166 (Value to be assigned by IANA of form
10bbbbbb)
MESSAGE_ID object MESSAGE_ID object
Class = MESSAGE_ID Class, C_Type = 1 Class = MESSAGE_ID Class, C_Type = 1
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Message ID | | Flags | Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flags: 8 bits Flags: 8 bits
0x08 = ACK_Desired flag 0x80 = ACK_Desired flag
Indicates that the sender is willing to accept a message Indicates that the sender is willing to accept a message
acknowledgment. Acknowledgments MUST be silently ignored acknowledgment. Acknowledgments MUST be silently ignored
when they are sent in response to messages whose when they are sent in response to messages whose
ACK_Desired flag is not set. This flag MUST be set when ACK_Desired flag is not set. This flag MUST be set when
the Last_Refresh flag is set. the Last_Refresh flag is set.
0x04 = Last_Refresh flag 0x40 = Last_Refresh flag
Used in Resv and Path refresh messages to indicate that the Used in Resv and Path refresh messages to indicate that the
sender has received a previously sent ACK and will not be sender will not be sending further refreshes. When set,
sending further refreshes. When set, the ACK_Desired flag the ACK_Desired flag MUST also be set. This flag MUST NOT
MUST also be set. This flag MUST NOT be set when the be set when the HELLO messages are not being exchanged with
message has not been previously acknowledged. the neighboring RSVP node.
Message ID: 24 bits Message ID: 24 bits
a 24-bit identifier. When combined with the message a 24-bit identifier. When combined with the message
generator's IP address, uniquely identifies a message. generator's IP address, uniquely identifies a message.
MESSAGE_ID ACK object MESSAGE_ID ACK object
Class = MESSAGE_ID Class, C_Type = 2 Class = MESSAGE_ID Class, C_Type = 2
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ACK Flags | Message ID | | Reserved | Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reserved
ACK Flags: 8 bits This field is reserved. It must be set to zero on transmis-
sion and must be ignored on receipt.
0x08 = No_Refresh flag
Indicates that refreshes are not required and SHOULD NOT be
sent for the associated message. The associated message is
indicated by the Message ID.
Message ID: 24 bits Message ID: 24 bits
a 24-bit identifier. When combined with the message a 24-bit identifier. When combined with the message
generator's IP address, uniquely identifies a message. generator's IP address, uniquely identifies a message.
5.2.2. Ack Message Format 5.2.2. Ack Message Format
Ack messages carry one or more MESSAGE_ID ACK objects. They MUST NOT Ack messages carry one or more MESSAGE_ID ACK objects. They MUST NOT
contain any MESSAGE_ID objects. Ack messages are sent hop-by-hop contain any MESSAGE_ID objects. Ack messages are sent hop-by-hop
skipping to change at page 48, line 40 skipping to change at page 49, line 42
Ack messages carry one or more MESSAGE_ID ACK objects. They MUST NOT Ack messages carry one or more MESSAGE_ID ACK objects. They MUST NOT
contain any MESSAGE_ID objects. Ack messages are sent hop-by-hop contain any MESSAGE_ID objects. Ack messages are sent hop-by-hop
between RSVP nodes. The IP destination address of an Ack message is between RSVP nodes. The IP destination address of an Ack message is
the unicast address of the node, that generated the message(s) being the unicast address of the node, that generated the message(s) being
acknowledged. For Path, PathTear, Resv, and RervErr messages this is acknowledged. For Path, PathTear, Resv, and RervErr messages this is
taken from the RSVP_HOP Object. For PathErr and ResvErr messages taken from the RSVP_HOP Object. For PathErr and ResvErr messages
this is taken from the message's source address. The IP source this is taken from the message's source address. The IP source
address is an address of the node that sends the Ack message. address is an address of the node that sends the Ack message.
The Ack message format is as follows: The Ack message format is as follows:
<ACK Message> ::= <Common Header> [ <INTEGRITY> ] <ACK Message> ::= <Common Header> [ <INTEGRITY> ]
<MESSAGE_ID ACK> <MESSAGE_ID ACK>
[ <MESSAGE_ID ACK> ... ] [ <MESSAGE_ID ACK> ... ]
For Ack messages, the Msg Type field of the Common Header MUST be set For Ack messages, the Msg Type field of the Common Header MUST be set
to <TO_BE_ASSIGNED>. to 13 <TO_BE_ASSIGNED>.
5.2.3. MESSAGE_ID Object Usage 5.2.3. MESSAGE_ID Object Usage
The MESSAGE_ID object may be included in any RSVP message other than The MESSAGE_ID object may be included in any RSVP message other than
the Ack message. The MESSAGE_ID object is always generated and the Ack message. The MESSAGE_ID object is always generated and
processed hop-by-hop. The IP address of the object generator is processed hop-by-hop. The IP address of the object generator is
represented in a per RSVP message type specific fashion. For Path represented in a per RSVP message type specific fashion. For Path
and PathTear messages the generator's IP address is contained in the and PathTear messages the generator's IP address is contained in the
RSVP_HOP. For Resv, ResvTear, PathErr, ResvErr, ResvConf and RSVP_HOP. For Resv, ResvTear, PathErr, ResvErr, ResvConf and
Aggregate messages the generator's IP address is the source address Aggregate messages the generator's IP address is the source address
skipping to change at page 49, line 40 skipping to change at page 50, line 42
ordered. ordered.
The ACK_Desired flag is set when the MESSAGE_ID object generator is The ACK_Desired flag is set when the MESSAGE_ID object generator is
capable of accepting MESSAGE_ID ACK objects. Such information can be capable of accepting MESSAGE_ID ACK objects. Such information can be
used to ensure reliable delivery of error and confirm messages and to used to ensure reliable delivery of error and confirm messages and to
support fast refreshes in the face of network loss. Nodes setting support fast refreshes in the face of network loss. Nodes setting
the ACK_Desired flag SHOULD retransmit unacknowledged messages at a the ACK_Desired flag SHOULD retransmit unacknowledged messages at a
faster interval than the standard refresh time until the message is faster interval than the standard refresh time until the message is
acknowledged or a "fast" retry limit is reached. acknowledged or a "fast" retry limit is reached.
The Last_Refresh flag is set in Path and Resv messages when the
MESSAGE_ID object generator is exchanging Hello messages, described
in Section 5.3, with the next hop RSVP node. Note that the next hop
node may not be known for some Path messages. When a refresh message
with the Last_Refresh flag set is generated, normal refresh
generation MUST continue until the message containing the
Last_Refresh flag is acknowledged. Although messages removing state
advertised in such messages MUST be retransmit until acknowledged to
cover certain packet loss conditions. Messages removing state include
PathTear and ResvTear.
Nodes receiving messages containing MESSAGE_ID objects SHOULD use the Nodes receiving messages containing MESSAGE_ID objects SHOULD use the
information in the objects to aid in determining if an message information in the objects to aid in determining if an message
represents new state or a state refresh. Note that state is only represents new state or a state refresh. Note that state is only
refreshed in Path and Resv messages. If a Path or Resv message refreshed in Path and Resv messages. If a Path or Resv message
contains the same Message ID value that was used in the most recently contains the same Message ID value that was used in the most recently
received message for the same session and, for path messages, received message for the same session and, for path messages,
SENDER_TEMPLATE then the receiver SHOULD treat the message as a state SENDER_TEMPLATE then the receiver SHOULD treat the message as a state
refresh. If the Message ID value differs from the most recently refresh. If the Message ID value differs from the most recently
received value, the receiver MUST fully processes the message. received value, the receiver MUST fully processes the message.
Nodes receiving a message containing a MESSAGE_ID object with the Nodes receiving a message containing a MESSAGE_ID object with the
ACK_Desired flag set, SHOULD respond with a MESSAGE_ID ACK object. ACK_Desired flag set, SHOULD respond with a MESSAGE_ID ACK object.
If a node has ever responded with a MESSAGE_ID ACK object, it MUST If a node supports the Hello extension it MUST also check the
also check the Last_Refresh flag of received Resv and Path messages. Last_Refresh flag of received Resv and Path messages. If the flag is
If the flag is set, the receiver MUST NOT timeout state associated set, the receiver MUST NOT timeout state associated with associated
with associated message. The receiver MUST also be prepared to message. The receiver MUST also be prepared to properly process
properly process refresh messages. refresh messages.
5.2.4. MESSAGE_ID ACK Object Usage 5.2.4. MESSAGE_ID ACK Object Usage
The MESSAGE_ID ACK object is used to acknowledge receipt of messages The MESSAGE_ID ACK object is used to acknowledge receipt of messages
containing MESSAGE_ID objects that were sent with the ACK_Desired containing MESSAGE_ID objects that were sent with the ACK_Desired
flag set. The Message ID field of a MESSAGE_ID ACK object MUST have flag set. The Message ID field of a MESSAGE_ID ACK object MUST have
the same value as was received. A MESSAGE_ID ACK object MUST NOT be the same value as was received. A MESSAGE_ID ACK object MUST NOT be
generated in response to a received MESSAGE_ID object when the generated in response to a received MESSAGE_ID object when the
ACK_Desired flag is not set. ACK_Desired flag is not set.
A MESSAGE_ID ACK object may be sent in any RSVP message that has an A MESSAGE_ID ACK object may be sent in any RSVP message that has an
IP destination address matching the generator of the associated IP destination address matching the generator of the associated
MESSAGE_ID object. The MESSAGE_ID ACK object will not typically be MESSAGE_ID object. The MESSAGE_ID ACK object will not typically be
included in the non hop-by-hop Path, PathTear and ResvConf messages. included in the non hop-by-hop Path, PathTear and ResvConf messages.
When no appropriate message is available, one or more MESSAGE_ID ACK When no appropriate message is available, one or more MESSAGE_ID ACK
objects SHOULD be sent in an Ack message. Implementations SHOULD objects SHOULD be sent in an Ack message. Implementations SHOULD
include MESSAGE_ID ACK objects in standard RSVP messages when include MESSAGE_ID ACK objects in standard RSVP messages when
possible. possible.
The No_Refresh flag is set to indicate that the receiver does not Upon receiving a MESSAGE_ID ACK object for a message generated with
desire refreshes for the message being acknowledged. (Note that the No_Refresh flag set, normal refresh generation SHOULD be disabled
state is only refreshed in Path and Resv messages.) Receivers SHOULD for the associated state. When normal refresh generation is
set this flag when acknowledging receipt of Path or Resv messages and suppressed for Path and Resv state, special care must be taken to
when the receiver has some mechanism to determine when the generator remove such state. Particularly in the case of possible packet loss.
looses it's state, e.g. the mechanism described in Section 5.4. When To ensure such state is removed, once a node generates a Path or Resv
a receiver sets this flag, the receiver MUST continue to timeout refresh message containing a MESSAGE_ID object with the No_Refresh
state associated with acknowledged message. The receiver may only flag set, the node MUST retransmit until acknowledged all messages
stop timing out state after it receives a refresh message with the removing such state. Messages removing state include PathTear and
Last_Refresh flag set, see Section 5.2.3. ResvTear.
Upon receiving a MESSAGE_ID ACK object with the No_Refresh flag set,
a refresh message with the Last_Refresh flag set SHOULD be generated.
If a refresh message with the Last_Refresh flag set is generate, then
normal refresh generation MUST continue until the message containing
the Last_Refresh flag is acknowledged. Once an acknowledgment is
received, normal refresh generation SHOULD be disabled for the
associated state.
When normal refresh generation is suppressed for Path and Resv state,
special care must be taken to remove such state. Particularly in the
case of possible packet loss. To ensure such state is removed, once
a node generates a Path or Resv refresh message containing a
MESSAGE_ID object with the Last_Refresh flag set, the node MUST
retransmit until acknowledged all messages removing such state.
Messages removing state include PathTear and ResvTear.
5.2.5. Multicast Considerations 5.2.5. Multicast Considerations
Path and PathTear messages may be sent to IP multicast destination Path and PathTear messages may be sent to IP multicast destination
addresses. When the destination is multicast, it is possible that a addresses. When the destination is multicast, it is possible that a
single message containing a single MESSAGE_ID object will be received single message containing a single MESSAGE_ID object will be received
by multiple RSVP next-hops. When the ACK_Desired flag is set in this by multiple RSVP next-hops. When the ACK_Desired flag is set in this
case, acknowledgment processing is more complex. There are a number case, acknowledgment processing is more complex. There are a number
of issues, ACK implosion, number acknowledgments to be expected and of issues including ACK implosion, number acknowledgments to be
handling new receivers. expected and handling new receivers.
ACK implosion occurs when each receiver responds to the MESSAGE_ID ACK implosion occurs when each receiver responds to the MESSAGE_ID
object at approximately the same time. This can lead to a object at approximately the same time. This can lead to a
potentially large number of MESSAGE_ID ACK objects simultaneously potentially large number of MESSAGE_ID ACK objects simultaneously
delivered to the message generator. To address this case, the delivered to the message generator. To address this case, the
receiver MUST wait a random interval prior to acknowledging a receiver MUST wait a random interval prior to acknowledging a
MESSAGE_ID object received in a message destined to a multicast MESSAGE_ID object received in a message destined to a multicast
address. The random interval SHOULD be between zero (0) and a address. The random interval SHOULD be between zero (0) and a
configured maximum time. The configured maximum SHOULD be set in configured maximum time. The configured maximum SHOULD be set in
proportion to the refresh and "fast" retransmission interval. proportion to the refresh and "fast" retransmission interval.
skipping to change at page 52, line 14 skipping to change at page 53, line 14
next-hops is not possible, the message generator SHOULD only expect a next-hops is not possible, the message generator SHOULD only expect a
single response and MUST ignore the No_Refresh flag of MESSAGE_ID Ack single response and MUST ignore the No_Refresh flag of MESSAGE_ID Ack
objects. The result of this behavior will be special retransmission objects. The result of this behavior will be special retransmission
handling until the message is delivered to at least one next-hop, handling until the message is delivered to at least one next-hop,
then followed by standard RSVP refreshes. Standard refresh messages then followed by standard RSVP refreshes. Standard refresh messages
will synchronize state with any next-hops that don't receive the will synchronize state with any next-hops that don't receive the
original message. original message.
There is one additional minor issue with multiple next-hops. The There is one additional minor issue with multiple next-hops. The
issue is handling a combination of standard-refresh and non-refresh issue is handling a combination of standard-refresh and non-refresh
next-hops. In the case some MESSAGE_ID Ack objects for the same next-hops, i.e. Hello messages are being exchanged with some
message are received with the No_Refresh flag set and other objects neighboring nodes but not with others. When this case occurs,
are received with the No_Refresh flag clear. When this case occurs, refreshes MUST be generated per standard RSVP and the Last_Refresh
refreshes MUST be generated per standard RSVP. flag MUST NOT be set.
5.2.6. Compatibility 5.2.6. Compatibility
There are no backward compatibility issues raised by the MESSAGE_ID There are no backward compatibility issues raised by the MESSAGE_ID
Class. The MESSAGE_ID Class has an assigned value whose form is Class. The MESSAGE_ID Class has an assigned value whose form is
10bbbbbb. Per RSVP [1], classes with values of this form must be 10bbbbbb. Per RSVP [1], classes with values of this form must be
ignored and not forwarded by nodes not supporting the class. When ignored and not forwarded by nodes not supporting the class. When
the receiver of a MESSAGE_ID object does not support the class, the the receiver of a MESSAGE_ID object does not support the class, the
object will be silently ignored. The generator of the MESSAGE_ID object will be silently ignored. The generator of the MESSAGE_ID
object will not see any acknowledgments and therefore refresh object will not see any acknowledgments and therefore refresh
messages per standard RSVP. Lastly, since the MESSAGE_ID ACK object messages per standard RSVP. Lastly, since the MESSAGE_ID ACK object
can only be issued in response to the MESSAGE_ID object, there are no can only be issued in response to the MESSAGE_ID object, there are no
possible issues with this object or Ack messages. possible issues with this object or Ack messages.
Implementations supporting the MESSAGE_ID extension MUST also support
the Hello extension.
5.3. Hello Extension 5.3. Hello Extension
The RSVP Hello extension enables RSVP nodes to detect a loss of a The RSVP Hello extension enables RSVP nodes to detect a loss of a
neighboring node's state information. In standard RSVP, such neighboring node's state information. In standard RSVP, such
detection occurs as a consequence of RSVP's soft state model. When detection occurs as a consequence of RSVP's soft state model. When
refresh message generation is disabled via the previously discussed refresh message generation is disabled via the previously discussed
No_Refresh flag processing, some other mechanism is needed to address No_Refresh flag processing, the Hello extension is needed to address
this failure case. In many configurations, it may be possible to this failure case. The Hello extensions is not intended to provide a
leverage existing neighbor-to-neighbor failure detection mechanisms. link failure detection mechanism, particularly in the case of
One example mechanism is routing protocol peering state. multiple parallel unnumbered links.
The extension described in this section supports cases where there is The Hello extension is specifically designed so that one side can use
no other neighbor-to-neighbor failure detection mechanism available. the mechanism while the other side does not. Neighbor RSVP state
The extension is specifically designed so that one side can use the
mechanism while the other side does not. Neighbor RSVP state
tracking may be initiated at any time. This includes when neighbors tracking may be initiated at any time. This includes when neighbors
first learn about each other, or just when neighbors are sharing Resv first learn about each other, or just when neighbors are sharing Resv
or Path state. All implementations supporting the MESSAGE_ID ACK or Path state. All implementations supporting the MESSAGE_ID ACK
object MUST also support the Hello Extension. Such implementations object MUST also support the Hello Extension. Such implementations
are not required to initiate Hello processing but they MUST be able SHOULD initiate Hello processing and MUST be able to respond to Hello
to respond to Hello messages. messages.
The Hello extension is composed of a Hello message, a Hello ACK
message and a STATE_SET object. The Hello and Hello ACK messages
have identical format and only differ in that a Hello ACK message is
generate in response to a Hello message. Multiple STATE_SET objects
may appear in a Hello or Hello ACK message. These objects are used
to indicate what set of state is being refreshed.
For Path State, a set consists of all the state with the same PHOP
object. For Reservations State, a consists of all the state for which
the associated Path messages have the same PHOP. These PHOP values
are the values used in the STATE_SET objects. Thus sending a
STATE_SET object with a locally generated PHOP refreshes all Path
State sent with that PHOP object. Sending a STATE_SET object with a
received PHOP refreshes all Reservation State associated with Path
messages sent by a neighbor node with that PHOP.
Hello processing between two neighbors supports independent selection The Hello extension is composed of a Hello message, a HELLO REQUEST
of, typically configured, failure detection intervals. Each neighbor object and a HELLO ACK object. Hello processing between two
can autonomously issue HELLO messages. Each HELLO messages is neighbors supports independent selection of, typically configured,
answered by an acknowledgment. Hellos also contain enough failure detection intervals. Each neighbor can autonomously issue
information so that one neighbor can suppress issuing hello HELLO REQUEST objects. Each request is answered by an
generation and still perform neighbor failure detection. acknowledgment. Hellos also contain enough information so that one
neighbor can suppress issuing hello requests and still perform
neighbor failure detection.
Neighbor state tracking is accomplished by collecting and storing a Neighbor state tracking is accomplished by collecting and storing a
state "instance" value per State Set. If a change in value is seen, neighbor's state "instance" value. If a change in value is seen,
then the neighbor is presumed to have reset that portion of it's RSVP then the neighbor is presumed to have reset it's RSVP state. The
state. HELLO messages provide a mechanism for polling for and HELLO objects provide a mechanism for polling for and providing an
providing one or more RSVP state instance values. A poll request RSVP state instance value. A poll request also includes the sender's
also includes the sender's instance value(s). This allows the instance value. This allows the receiver of a poll to optionally
receiver of a poll to optionally treat the poll as an implicit poll treat the poll as an implicit poll response. This optional handling
response. This optional handling is an optimization that can reduce is an optimization that can reduce the total number of polls and
the total number of polls and responses processed by a pair of responses processed by a pair of neighbors. In all cases, when both
neighbors. In all cases, when both sides support the optimization sides support the optimization the result will be only one set of
the result will be only one set of polls and responses per failure polls and responses per failure detection interval. Depending on
detection interval. Depending on selected intervals, the same selected intervals, the same benefit can occur even when only one
benefit can occur even when only one neighbor supports the neighbor supports the optimization.
optimization.
5.3.1. Hello and Hello Ack Message Formats 5.3.1. Hello Message Format
Hello and Hello Ack Messages are always sent between two RSVP Hello Messages are always sent between two RSVP neighbors. The IP
neighbors. The IP source address is the IP address of the sending source address is the IP address of the sending node. The IP
node. The IP destination address is the IP address of the neighbor destination address is the IP address of the neighbor node.
node.
The Hello and Hello Ack message formats are as follows: The Hello message format is as follows:
<Hello Message> ::= <Common Header> [ <INTEGRITY> ] <Hello Message> ::= <Common Header> [ <INTEGRITY> ]
<STATE_SET List> <HELLO>
<STATE_SET List> ::= <STATE_SET> [ <STATE_SET List> ]
For Hello messages, the Msg Type field of the Common Header MUST be For Hello messages, the Msg Type field of the Common Header MUST be
set to <TO_BE_ASSIGNED>. set to 14 <TO_BE_ASSIGNED>.
For Hello Ack messages, the Msg Type field of the Common Header MUST 5.3.2. HELLO Object
be set to <TO_BE_ASSIGNED>.
5.3.2. STATE_SET Object HELLO Class = 22 (Value to be assigned by IANA of form 0bbbbbbb)
Class = TBD, C_Type = 1 (Class of form 0bbbbbbb) HELLO REQUEST object
Class = HELLO Class, C_Type = 1
0 1 2 3 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 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 Previous Hop Address | | Instance |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Logical Interface Handle |
HELLO ACK object
Class = HELLO Class, C_Type = 2
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Instance | | Instance |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Instance: 32 bits Instance: 32 bits
a 32 bit value that represents the sender's RSVP agent's state. a 32 bit value that represents the sender's RSVP agent's state.
This value must change when the agent is reset or the node This value must change when the agent is reset or the node
reboots and otherwise remain the same. This field MUST NOT be reboots and otherwise remains the same. This field MUST NOT be
set to zero (0). set to zero (0).
5.3.3. Hello Message Usage 5.3.3. Hello Message Usage
A Hello message MUST be generated for each neighbor who's state is A Hello message containing a HELLO REQUEST object MUST be generated
being tracked. When generating a Hello message, the sender fills in for each neighbor who's state is being tracked. When generating a
the Instance field with a value representing it's RSVP agent state message containing a HELLO REQUEST object, the sender fills in the
for each state set. Each instance value MUST NOT change while the Instance field with a value representing it's RSVP agent state. This
agent is maintaining any RSVP state. The generation of a message value MUST NOT change while the agent is maintaining any RSVP state.
SHOULD be skipped when a Hello message is received from the The generation of a message SHOULD be skipped when a HELLO REQUEST
destination node within the failure detection interval. object was received from the destination node within the failure
detection interval.
On receipt of a Hello message, the receiver MUST generate a Hello Ack On receipt of a message containing a HELLO REQUEST object, the
message. The receiver SHOULD also verify that each of the neighbor's receiver MUST generate a Hello message containing a HELLO ACK object.
state set list has not changed. This is done by comparing the The receiver SHOULD also verify that the neighbor has not reset.
received state set list with the previously received state set list.
If any state set values differ or are omitted, than each state set
omitted or with a different instance value has reset and all state in
that state set MUST be "expired" and cleaned up per standard RSVP
processing.
On receipt of a Hello Ack message, the receiver MUST verify that the This is done by comparing the sender's Instance field value with the
state set list has not changed. This is done by comparing the previously received value. If the value differs, than the neighbor
received state set list with the previously received state set list. has reset and all state associated with the neighbor MUST be
If any state set values differ or are omitted, than each state set "expired" and cleaned up per standard RSVP processing.
omitted or with a different instance value has reset and all state in
that state set MUST be "expired" and cleaned up per standard RSVP On receipt of a message containing a HELLO ACK object, the receiver
processing. MUST verify that the neighbor has not reset. This is done by
comparing the sender's Instance field value with the previously
received value. If the value differs, than the neighbor has reset
and all state associated with the neighbor MUST be "expired" and
cleaned up per standard RSVP processing.
5.3.4. Compatibility 5.3.4. Compatibility
The Hello extension is fully backwards compatible. The Hello class The Hello extension is fully backwards compatible. The Hello class
is assigned a class value of the form 0bbbbbbb. Depending on the is assigned a class value of the form 0bbbbbbb. Depending on the
implementation, implementations that don't support the extension will implementation, implementations that don't support the extension will
either silently discard Hello messages or will respond with an either silently discard Hello messages or will respond with an
"Unknown Object Class" error. In either case the sender will fail to "Unknown Object Class" error. In either case the sender will fail to
see an acknowledgment for the issued Hello. When a Hello sender does see an acknowledgment for the issued Hello. When a Hello sender does
not receive an acknowledgment, it MUST NOT send MESSAGE_ID ACK not receive an acknowledgment, it MUST NOT send MESSAGE_ID ACK
objects with the No_Refresh flag set to the corresponding RSVP objects with the No_Refresh flag set to the corresponding RSVP
neighbor. This restriction will preclude neighbors from getting out neighbor. This restriction will preclude neighbors from getting out
of RSVP state synchronization. of RSVP state synchronization.
Implementations supporting the Hello extension MUST also support the
MESSAGE_ID extension.
6. Acknowledgments 6. Acknowledgments
This document contains ideas as well as text that have appeared in This document contains ideas as well as text that have appeared in
previous Internet Drafts. The authors of the current draft wish to previous Internet Drafts. The authors of the current draft wish to
thank the authors of those drafts. They are Steven Blake, Bruce thank the authors of those drafts. They are Steven Blake, Bruce
Davie, Roch Guerin, Sanjay Kamat, Yakov Rekhter, Eric Rosen, and Arun Davie, Roch Guerin, Sanjay Kamat, Yakov Rekhter, Eric Rosen, and Arun
Viswanathan. We also wish to than Yoram Bernet for his comments on Viswanathan. We also wish to thank Bora Akyol, Yoram Bernet and Alex
this draft. Mondrus for their comments on this draft.
7. References 7. References
[1] Braden, R. et al. Resource ReSerVation Protocol (RSVP) -- [1] Braden, R. et al., "Resource ReSerVation Protocol (RSVP) --
Version 1, Functional Specification, RFC 2205, September 1997. Version 1, Functional Specification", RFC 2205, September 1997.
[2] Rosen, E. et al. A Proposed Architecture for MPLS, Internet [2] Rosen, E. et al., "A Proposed Architecture for MPLS", Internet
Draft, draft-ietf-mpls-arch-02.txt, July 1998. Draft, draft-ietf-mpls-arch-02.txt, July 1998.
[3] Awduche, D. et al. Requirements for Traffic Engineering over MPLS, [3] Awduche, D. et al. "Requirements for Traffic Engineering over MPLS",
Internet Draft, draft-ietf-mpls-traffic-eng-00.txt, October 1998. Internet Draft, draft-ietf-mpls-traffic-eng-00.txt, October 1998.
[4] Wroclawski, J. Specification of the Controlled-Load Network [4] Wroclawski, J., "Specification of the Controlled-Load Network
Element Service, RFC 2211, September 1997. Element Service", RFC 2211, September 1997.
[5] Rosen, E. MPLS Label Stack Encoding. Internet Draft, [5] Rosen, E., "MPLS Label Stack Encoding", Internet Draft,
draft-ietf-mpls-label-encaps-03.txt, September 1998. draft-ietf-mpls-label-encaps-03.txt, September 1998.
[6] Bradner, S., "Key words for use in RFCs to Indicate Requirement [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels," RFC 2119, March 1997. Levels", RFC 2119, March 1997.
[7] Almquist, P., "Type of Service in the Internet Protocol Suite",
RFC 1349, July 1992.
8. Authors' Addresses 8. Authors' Addresses
Daniel O. Awduche Daniel O. Awduche
UUNET Worldcom UUNET Worldcom
3060 Williams Drive 3060 Williams Drive
Fairfax, VA 22031 Fairfax, VA 22031
Voice: +1 703 208 5277 Voice: +1 703 208 5277
Email: awduche@uu.net Email: awduche@uu.net
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/