draft-ietf-mpls-rsvp-lsp-tunnel-01.txt   draft-ietf-mpls-rsvp-lsp-tunnel-02.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: August 1999 Expiration Date: September 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.
February 1999 March 1999
Extensions to RSVP for LSP Tunnels Extensions to RSVP for LSP Tunnels
draft-ietf-mpls-rsvp-lsp-tunnel-01.txt draft-ietf-mpls-rsvp-lsp-tunnel-02.txt
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. Internet-Drafts are working 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
skipping to change at page 2, line ? skipping to change at page 3, line 5
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].
We propose several additional objects that extend RSVP, allowing the We propose several additional objects that extend RSVP, allowing the
establishment of explicitly routed label switched paths using RSVP as establishment of explicitly routed label switched paths using RSVP as
a signaling protocol. The result is the instantiation of label- a signaling protocol. The result is the instantiation of label-
switched tunnels which can be automatically routed away from network switched tunnels which can be automatically routed away from network
failures, congestion, and bottlenecks. failures, congestion, and bottlenecks.
Finally, we propose a number of mechanisms to reduce the refresh
overhead of RSVP. The extensions can be used to reduce processing
requirements of refresh messages, eliminate the state synchronization
latency incurred when an RSVP message is lost and, when desired,
eliminate the generation of refresh messages. An extension to
support detection of when an RSVP neighbor resets its state is also
presented. These extension present no backwards compatibility
issues.
Contents Contents
1 Introduction and Background ............................ 5 1 Introduction and Background ............................ 5
1.1 Introduction ........................................... 5 1.1 Introduction ........................................... 5
1.2 Background ............................................. 6 1.2 Background ............................................. 6
2 Overview .............................................. 8 2 Overview .............................................. 7
2.1 LSP Tunnels ............................................ 8 2.1 LSP Tunnels ............................................ 7
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 ................................ 10
2.4.2 Wildcard Filter (WF) Style ............................. 11 2.4.2 Wildcard Filter (WF) Style ............................. 10
2.4.3 Shared Explicit (SE) Style ............................. 12 2.4.3 Shared Explicit (SE) Style ............................. 11
2.5 Rerouting LSP Tunnels .................................. 12 2.5 Rerouting LSP Tunnels .................................. 12
3 LSP Tunnel related 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 LSP Tunnel related 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 ........................ 17 4.1.2 Non-support of the Label Object ........................ 16
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 .................................. 21 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 ................. 22 4.3.2 Semantics of the Explicit Route Object ................. 22
4.3.3 Subobjects ............................................. 23 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 .................................... 29
4.4.1 Subobjects ............................................. 30 4.4.1 Subobjects ............................................. 30
4.4.2 Applicability .......................................... 33 4.4.2 Applicability .......................................... 32
4.4.3 Handling RRO ........................................... 33 4.4.3 Handling RRO ........................................... 32
4.4.4 Loop Detection ......................................... 34 4.4.4 Loop Detection ......................................... 33
4.4.5 Non-support of RRO ..................................... 35 4.4.5 Non-support of RRO ..................................... 34
4.5 Error Subcodes for ERO and RRO ......................... 35 4.5 Error Subcodes for ERO and RRO ......................... 34
4.6 Session, Sender Template, and Filter Spec Objects ...... 36 4.6 Session, Sender Template, and Filter Spec Objects ...... 35
4.6.1 Session Object ......................................... 36 4.6.1 Session Object ......................................... 35
4.6.2 Sender Template Object ................................. 37 4.6.2 Sender Template Object ................................. 36
4.6.3 Filter Specification Object ............................ 37 4.6.3 Filter Specification Object ............................ 37
4.6.4 Reroute Procedure ...................................... 38 4.6.4 Reroute Procedure ...................................... 37
4.7 Session Attribute Object ............................... 39 4.7 Session Attribute Object ............................... 38
4.8 Flowspec Object for Class-of-Service Service .......... 41 4.8 Flowspec Object for Class-of-Service Service .......... 41
5 Refresh Related Extensions ............................. 42 5 Acknowledgments ........................................ 42
5.1 RSVP Aggregate Message ................................. 43 6 References ............................................. 42
5.1.1 Aggregate Header ....................................... 43 7 Authors' Addresses ..................................... 43
5.1.2 Message Formats ........................................ 44
5.1.3 Sending RSVP Aggregate Messages ........................ 45
5.1.4 Receiving RSVP Aggregate Messages ...................... 46
5.1.5 Forwarding RSVP Aggregate Messages ..................... 46
5.1.6 Aggregate-Capable Bit .................................. 47
5.2 MESSAGE_ID Extension ................................... 47
5.2.1 MESSAGE_ID Object ...................................... 48
5.2.2 Ack Message Format ..................................... 49
5.2.3 MESSAGE_ID Object Usage ................................ 50
5.2.4 MESSAGE_ID ACK Object Usage ............................ 51
5.2.5 Multicast Considerations ............................... 52
5.2.6 Compatibility .......................................... 53
5.3 Hello Extension ........................................ 53
5.3.1 Hello Message Format ................................... 54
5.3.2 HELLO Object ........................................... 55
5.3.3 Hello Message Usage .................................... 55
5.3.4 Compatibility .......................................... 56
6 Acknowledgments ........................................ 56
7 References ............................................. 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 Section 2.9 of the MPLS architecture [2] defines a label distribution
establishing label switched paths (LSPs) in Multi-protocol Label protocol as a set of procedures by which one Label Switched Router
Switching (MPLS) networks. Several of the new features described in (LSR) informs another of the meaning of labels used to forward
this document were motivated by the requirements for traffic traffic between and through them. The MPLS architecture does not
engineering over MPLS (see [3]). In particular, the extended RSVP assume a single label distribution protocol. This document is a
protocol supports the instantiation of explicitly routed LSPs, with specification of extensions to RSVP for establishing label switched
or without resource reservations. It also supports smooth rerouting paths (LSPs) in Multi-protocol Label Switching (MPLS) networks.
of LSPs, preemption, loop detection, and a fast reroute option to
allow expedited service restoration under fault conditions. Several of the new features described in this document were motivated
by the requirements for traffic engineering over MPLS (see [3]). In
particular, the extended RSVP protocol supports the instantiation of
explicitly routed LSPs, with or without resource reservations. It
also supports smooth rerouting of LSPs, preemption, and loop
detection.
Since the traffic that flows along a label-switched path is defined Since the traffic that flows along a label-switched path is defined
by the label applied at the ingress node of the LSP, these paths can by the label applied at the ingress node of the LSP, these paths can
be treated as tunnels. When an LSP is used in this way we refer to be treated as tunnels. When an LSP is used in this way we refer to
it as an LSP tunnel. it as an LSP tunnel.
LSP tunnels allow the implementation of a variety of policies related LSP tunnels allow the implementation of a variety of policies related
to network performance optimization. For example, LSP tunnels can be to network performance optimization. For example, LSP tunnels can be
automatically or manually routed away from network failures, automatically or manually routed away from network failures,
congestion, and bottlenecks. Furthermore, multiple parallel LSP congestion, and bottlenecks. Furthermore, multiple parallel LSP
tunnels can be established between two nodes, and traffic between the tunnels can be established between two nodes, and traffic between the
two nodes can be mapped onto the LSP tunnels according to local two nodes can be mapped onto the LSP tunnels according to local
policy. Although traffic engineering (that is, performance policy. Although traffic engineering (that is, performance
optimization of operational networks) is expected to be an important optimization of operational networks) is expected to be an important
application of this specification, the extended RSVP protocol can be application of this specification, the extended RSVP protocol can be
used in a much wider context. used in a much wider context.
The purpose of this document is to describe the use of RSVP to The purpose of this document is to describe the use of RSVP to
establish LSP tunnels. The intent is to fully describe all the establish LSP tunnels. The intent is to fully describe all the
objects, packet formats, and procedures required to realize objects, packet formats, and procedures required to realize
interoperable implementations. interoperable implementations. A few new objects are also defined
that enhance management and diagnostics of LSP tunnels.
All objects described in this specification are optional with respect All objects described in this specification are optional with respect
to RSVP. This document discusses what happens when an object to RSVP. This document discusses what happens when an object
described here is not supported by a node. described here is not supported by a node.
Resilience and scalability are very important considerations in this
specification. When an LSP tunnel fails, a significant amount of data
can be lost. As a result, failure notification and service
restoration should be fast and reliable. Accordingly, a number of
features are provided to facilitate smooth reroute of LSP tunnels,
fast reroute of LSP tunnels through intermediate detour paths under
faults, and fast and reliable LSP tunnel teardown. A few new objects
are also defined that enhance management and diagnostics of LSP
tunnels.
Several new RSVP objects and messages are used to reduced processing
requirements related to RSVP refresh messages and address the latency
and reliability of RSVP Signaling. First, an aggregate message is
proposed to reduce the message handing load. Second tokens are added
as a short hand method of identifying state. Third, procedures to
suppress refreshes are defined. Last a Hello protocol is defined to
detect loss of a neighbor's state.
These extensions may be used in part in combination. They may be
useful in other RSVP environments and may be supported independent of
other MPLS related RSVP extensions.
Throughout this document, the discussion will be restricted to Throughout this document, the discussion will be restricted to
unicast label switched paths. Multicast LSPs are left for further unicast label switched paths. Multicast LSPs are left for further
study. study.
1.2. Background 1.2. Background
Hosts and routers that support both RSVP [1] and Multi-Protocol Label Hosts and routers that support both RSVP [1] and Multi-Protocol Label
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
skipping to change at page 7, line 28 skipping to change at page 7, line 11
itself, through the MPLS network, to an egress node. Explicit itself, through the MPLS network, to an egress node. Explicit
routing can be used to optimize the utilization of network resources routing can be used to optimize the utilization of network resources
and enhance traffic oriented performance characteristics. and enhance traffic oriented performance characteristics.
The concept of explicitly routed label switched paths can be The concept of explicitly routed label switched paths can be
generalized through the notion of abstract nodes. An abstract node is generalized through the notion of abstract nodes. An abstract node is
a group of nodes whose internal topology is opaque to the ingress a group of nodes whose internal topology is opaque to the ingress
node of the LSP. An abstract node is said to be trivial if it is a node of the LSP. An abstract node is said to be trivial if it is a
singleton, that is if it contains only one physical node. Using this singleton, that is if it contains only one physical node. Using this
concept of abstraction, an explicitly routed LSP can be specified as concept of abstraction, an explicitly routed LSP can be specified as
a sequence of IP prefixes with subnet masks or a sequence of a sequence of IP prefixes or a sequence of Autonomous Systems.
Autonomous Systems.
The signaling protocol model supports the specification of an The signaling protocol model supports the specification of an
explicit path as a sequence of strict and loose routes. The explicit path as a sequence of strict and loose routes. The
combination of abstract nodes, and strict and loose routes combination of abstract nodes, and strict and loose routes
significantly enhances the flexibility of path definitions. significantly enhances the flexibility of path definitions.
An advantage of using RSVP to establish LSP tunnels is that it An advantage of using RSVP to establish LSP tunnels is that it
enables the allocation of resources along the path. For example, enables the allocation of resources along the path. For example,
bandwidth can be allocated to an LSP tunnel using standard RSVP bandwidth can be allocated to an LSP tunnel using standard RSVP
reservations and Integrated Services service classes [4]. reservations and Integrated Services service classes [4].
skipping to change at page 9, line 25 skipping to change at page 9, line 4
node discovers a better route, the sender can dynamically reroute the node discovers a better route, the sender can dynamically reroute the
session by simply changing the EXPLICIT_ROUTE object. If problems session by simply changing the EXPLICIT_ROUTE object. If problems
are encountered with an EXPLICIT_ROUTE object, either because it are encountered with an EXPLICIT_ROUTE object, either because it
causes a routing loop or because some intermediate routers do not causes a routing loop or because some intermediate routers do not
support it, the sender node is notified. support it, the sender node is notified.
By adding a RECORD_ROUTE object to the Path message, the sender node By adding a RECORD_ROUTE object to the Path message, the sender node
can receive information about the actual route that the LSP tunnel can receive information about the actual route that the LSP tunnel
traverses. The sender node can also use this object to request traverses. The sender node can also use this object to request
notification from the network concerning changes to the routing path. notification from the network concerning changes to the routing path.
The RECORD_ROUTE object is analogous to a path vector, and hence can The RECORD_ROUTE object is analogous to a path vector, and hence can
be used for loop detection. be used for loop detection.
Finally, a SESSION_ATTRIBUTE object can be added to Path messages to Finally, a SESSION_ATTRIBUTE object can be added to Path messages to
aid in session identification and diagnostics. Additional control aid in session identification and diagnostics. Additional control
information, such as preemption, priority, and fast-reroute, are also information, such as preemption, priority, and local-protection, are
included in this object. also included in this object.
When the EXPLICIT_ROUTE object (ERO) is present, the Path message is When the EXPLICIT_ROUTE object (ERO) is present, the Path message is
forwarded towards its destination along a path specified by the ERO. forwarded towards its destination along a path specified by the ERO.
Each node along the path records the ERO in its path state block. Each node along the path records the ERO in its path state block.
Nodes may also modify the ERO before forwarding the Path message. In Nodes may also modify the ERO before forwarding the Path message. In
this case the modified ERO should be stored in the path state block. this case the modified ERO should be stored in the path state block.
The LABEL_REQUEST object requests intermediate routers and receiver The LABEL_REQUEST object requests intermediate routers and receiver
nodes to provide a label binding for the session. If a node is nodes to provide a label binding for the session. If a node is
incapable of providing a label binding, it sends a PathErr message incapable of providing a label binding, it sends a PathErr message
skipping to change at page 13, line 16 skipping to change at page 12, line 43
transitioned to the new LSP tunnel, and reservations should not be transitioned to the new LSP tunnel, and reservations should not be
counted twice because this might cause Admission Control to reject counted twice because this might cause Admission Control to reject
the new LSP tunnel. the new LSP tunnel.
The combination of the LSP_TUNNEL_IPv4 SESSION object and the SE The combination of the LSP_TUNNEL_IPv4 SESSION object and the SE
reservation style naturally achieves smooth transitions. The basic reservation style naturally achieves smooth transitions. The basic
idea is that the old and new LSP tunnels share resources along links idea is that the old and new LSP tunnels share resources along links
which they have in common. The LSP_TUNNEL_IPv4 SESSION object is used which they have in common. The LSP_TUNNEL_IPv4 SESSION object is used
to narrow the scope of the RSVP session to the particular tunnel in to narrow the scope of the RSVP session to the particular tunnel in
question. To uniquely identify a tunnel, we use the combination of question. To uniquely identify a tunnel, we use the combination of
the destination IP address, a Tunnel ID, and the sender's IP address, the destination IP address (an address of the node which is the
which is placed in the Extended Tunnel ID field. egress of the tunnel), a Tunnel ID, and the tunnel ingress node's IP
address, which is placed in the Extended Tunnel ID field.
During the reroute operation, the source needs to appear as two During the reroute operation, the tunnel ingress needs to appear as
different sources to RSVP. This is achieved by the inclusion of an two different senders to the RSVP session. This is achieved by the
"LSP ID", which is carried in the SENDER_TEMPLATE and FILTER_SPEC inclusion of an "LSP ID", which is carried in the SENDER_TEMPLATE and
objects. Since the semantics of these objects are changed, a new C- FILTER_SPEC objects. Since the semantics of these objects are
Type is assigned. changed, a new C-Type is assigned.
To effect a reroute, the source node picks a new LSP ID and forms a To effect a reroute, the ingress node picks a new LSP ID and forms a
new SENDER_TEMPLATE. The source node then creates a new ERO to new SENDER_TEMPLATE. The ingress node then creates a new ERO to
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 ingress
receives a Resv message for the new LSP, it can transition traffic to node receives a Resv message for the new LSP, it can transition
it and tear down the old LSP. traffic to it and tear down the old LSP.
3. LSP Tunnel related Message Formats 3. LSP Tunnel related Message Formats
Five new objects are defined in this section: 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
skipping to change at page 15, line 4 skipping to change at page 14, line 32
3.2. Resv Message 3.2. Resv Message
The format of the Resv message is as follows: The format of the Resv message is as follows:
<Resv Message> ::= <Common Header> [ <INTEGRITY> ] <Resv Message> ::= <Common Header> [ <INTEGRITY> ]
<SESSION> <RSVP_HOP> <SESSION> <RSVP_HOP>
<TIME_VALUES> <TIME_VALUES>
[ <RESV_CONFIRM> ] [ <SCOPE> ] [ <RESV_CONFIRM> ] [ <SCOPE> ]
[ <POLICY_DATA> ... ] [ <POLICY_DATA> ... ]
<STYLE> <flow descriptor list> <STYLE> <flow descriptor list>
<FF flow descriptor list> ::= <FLOWSPEC> <FILTER_SPEC> <LABEL>
[ <RECORD_ROUTE> ] <flow descriptor list> ::= <FF flow descriptor list>
| <SE filter spec list
<FF flow descriptor list> ::= <FF flow descriptor>
| <FF flow descriptor list> <FF flow descriptor> | <FF flow descriptor list> <FF flow descriptor>
<FF flow descriptor> ::= [ <FLOWSPEC> ] <FILTER_SPEC> <LABEL> <FF flow descriptor> ::= [ <FLOWSPEC> ] <FILTER_SPEC> <LABEL>
[ <RECORD_ROUTE> ] [ <RECORD_ROUTE> ]
<SE flow descriptor> ::= <FLOWSPEC> <SE filter spec list> <SE flow descriptor> ::= <FLOWSPEC> <SE filter spec list>
<SE filter spec list> ::= <SE filter spec> <SE filter spec list> ::= <SE filter spec>
| <SE filter spec 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.
skipping to change at page 17, line 14 skipping to change at page 17, line 5
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
between senders and receivers. However, obviously, non-RSVP routers
cannot convey labels via RSVP. This means that if a router has a
neighbor that is not RSVP capable, the router must not advertise the
LABEL object when sending messages that pass through the non-RSVP
router. The RSVP specification [1] describes how routers can
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
skipping to change at page 25, line 10 skipping to change at page 24, line 31
other network nodes that are not part of the strict node or its other network nodes that are not part of the strict node or its
preceding abstract node. preceding abstract node.
The L bit has no meaning in operation subobjects. The L bit has no meaning in operation subobjects.
4.3.3.2. Subobject 1: IPv4 prefix 4.3.3.2. Subobject 1: IPv4 prefix
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) | |L| Type | Length | IPv4 address (4 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 address (continued) | Mask | Padding | | IPv4 address (continued) | Prefix Length | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type L
0x81 IPv4 address The L bit is an attribute of the subobject. The L bit is set
if the subobject represents a loose hop in the explicit route.
If the bit is not set, the subobject represents a strict hop in
the explicit route.
IPv4 address Type
An IPv4 address. This address is treated as a prefix based on 0x01 IPv4 address
the mask value below. Bits beyond the mask are ignored and
should be set to zero.
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 IPv4 address
An IPv4 address. This address is treated as a prefix based on
the prefix length value below. Bits beyond the prefix are
ignored on receipt and should be set to zero on transmission.
Prefix length
Length in bits of the IPv4 prefix Length in bits of the IPv4 prefix
Padding Padding
Zero on transmission. Ignored on receipt. Zero on transmission. Ignored on receipt.
The contents of an IPv4 prefix subobject are a 4-octet IPv4 address, The contents of an IPv4 prefix subobject are a 4-octet IPv4 address,
a 1-octet prefix length, and a 1-octet pad. The abstract node a 1-octet prefix length, and a 1-octet pad. The abstract node
represented by this subobject is the set of nodes that have an IP represented by this subobject is the set of nodes that have an IP
address which lies within this prefix. Note that a prefix length of address which lies within this prefix. Note that a prefix length of
32 indicates a single IPv4 node. 32 indicates a single IPv4 node.
4.3.3.3. Subobject 2: IPv6 Prefix 4.3.3.3. Subobject 2: IPv6 Prefix
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) | |L| 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) | Prefix Length | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type L
0x82 IPv6 address The L bit is an attribute of the subobject. The L bit is set
if the subobject represents a loose hop in the explicit route.
If the bit is not set, the subobject represents a strict hop in
the explicit route.
Type
0x02 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
An IPv6 address. This address is treated as a prefix based on An IPv6 address. This address is treated as a prefix based on
the mask value below. Bits beyond the mask are ignored and the prefix length value below. Bits beyond the prefix are
should be set to zero. ignored on receipt and should be set to zero on transmission.
Mask Prefix Length
Length in bits of the IPv6 prefix. Length in bits of the IPv6 prefix.
Padding Padding
Zero on transmission. Ignored on receipt. Zero on transmission. Ignored on receipt.
The contents of an IPv6 prefix subobject are a 16-octet IPv6 address, The contents of an IPv6 prefix subobject are a 16-octet IPv6 address,
a 1-octet prefix length, and a 1-octet pad. The abstract node a 1-octet prefix length, and a 1-octet pad. The abstract node
represented by this subobject is the set of nodes that have an IP represented by this subobject is the set of nodes that have an IP
skipping to change at page 30, line 25 skipping to change at page 29, line 46
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Class-Num Class-Num
The Class-Num for a RECORD_ROUTE object is 21 (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 form 0bbbbbbb to ensure official one from the IANA with the form 0bbbbbbb to ensure
that non-supporting implementations reject the message.) 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
cial one from the IANA) official 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.
4.4.1. Subobjects 4.4.1. Subobjects
The contents of a RECORD_ROUTE object are a series of variable-length The contents of a RECORD_ROUTE object are a series of variable-length
data items called subobjects. Each subobject has its own Length data items called subobjects. Each subobject has its own Length
field. The length contains the total length of the subobject in field. The length contains the total length of the subobject in
bytes, including the Type and Length fields. The length must always bytes, including the Type and Length fields. The length must always
skipping to change at page 31, line 12 skipping to change at page 30, line 32
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 | Flags | | IPv4 address (continued) | Prefix Length | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Type
0x81 IPv4 address 0x01 IPv4 address
IPv4 address
A 32-bit unicast, host address. Any network-reachable
interface address is allowed here. Illegal addresses,
such as loopback addresses, should not be used.
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 IPv4 address
A 32-bit unicast, host address. Any network-reachable
interface address is allowed here. Illegal addresses,
such as loopback addresses, should not be used.
Prefix length
32 32
Flags Flags
0x01 Fast Re-Route Tunnel in place 0x01 Local protection available
Indicates that the link downstream of this node is Indicates that the link downstream of this node is
protected via a fast reroute tunnel protected via a local repair mechanism
0x02 Fast Re-Route Tunnel in use 0x02 Local protection in use
Indicates that a fast reroute tunnel is in use to Indicates that a local repair mechanism is in use to
maintain this tunnel (usually in the face a an outage maintain this tunnel (usually in the face a an outage
of the link it was previously routed over 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 | Flags | | IPv6 address (continued) | Prefix Length | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Type
0x82 IPv6 address 0x02 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 Prefix length
128 128
Flags Flags
0x01 Fast Re-Route Tunnel in place 0x01 Local protection available
Indicates that the link downstream of this node is Indicates that the link downstream of this node is
protected via a fast reroute tunnel protected via a local repair mechanism
0x02 Fast Re-Route Tunnel in use 0x02 Local protection in use
Indicates that a fast reroute tunnel is in use to Indicates that a local repair mechanism is in use to
maintain this tunnel (usually in the face a an outage maintain this tunnel (usually in the face a an outage
of the link it was previously routed over 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.
Second, an RRO collects up-to-date detailed path information hop-by- Second, an RRO collects up-to-date detailed path information hop-by-
hop about RSVP sessions, providing valuable information to the sender hop about RSVP sessions, providing valuable information to the sender
or receiver. Any path change (due to network topology changes) is or receiver. Any path change (due to network topology changes) will
quickly reported. be reported.
Third, RRO syntax is designed so that, with minor changes, the whole Third, RRO syntax is designed so that, with minor changes, the whole
object can be used as input to the EXPLICIT_ROUTE object. This is object can be used as input to the EXPLICIT_ROUTE object. This is
useful if the sender receives RRO from the receiver in a Resv useful if the sender receives RRO from the receiver in a Resv
message, applies it to EXPLICIT_ROUTE object in the next Path message message, applies it to EXPLICIT_ROUTE object in the next Path message
in order to "pin down session path". in order to "pin down session path".
4.4.3. Handling RRO 4.4.3. Handling RRO
Typically, a node initiates an RSVP session by adding the RRO to the Typically, a node initiates an RSVP session by adding the RRO to the
skipping to change at page 36, line 24 skipping to change at page 36, line 4
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 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 egress node for the tunnel.
Tunnel ID Tunnel ID
A 16-bit identifier used in the SESSION that remains constant A 16-bit identifier used in the SESSION that remains constant
over the life of the tunnel. over the life of the tunnel.
Extended Tunnel ID Extended Tunnel ID
A 32-bit identifier used in the SESSION that remains constant A 32-bit identifier used in the SESSION that remains constant
over the life of the tunnel. Normally set to all zeros. over the life of the tunnel. Normally set to all zeros.
Source nodes that wish to narrow the scope of a SESSION to the Ingress nodes that wish to narrow the scope of a SESSION to the
source-destination pair may place their IPv4 address here as a ingress-egress 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 tunnel sender address | | IPv4 tunnel sender address |
skipping to change at page 38, line 10 skipping to change at page 37, line 32
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.
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 ingress 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 LSP_ID. It also forms a SENDER_TEMPLATE and assigns a LSP_ID. the Extended_Tunnel_ID It also forms a SENDER_TEMPLATE and assigns a
Tunnel setup then proceeds according to the normal procedure. LSP_ID. Tunnel setup then proceeds according to the normal procedure.
On receipt of the Path message, the destination node sends a Resv
message with the STYLE Shared Explicit to the source.
[Note: I think we should add a flag to the SESSION_ATTRIBUTE for the On receipt of the Path message, the egress node sends a Resv message
source to indicate that it wishes the SE style.] with the STYLE Shared Explicit toward the ingress node.
When a source node with an established path wants to change that When an ingress 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 LSP_ID to form a new are unchanged. The ingress node picks a new LSP_ID to form a 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 ingress node refreshes
the old and new path messages both the old and new path messages
The destination node responds with a Resv message with an SE flow The egress node responds with a Resv message with an SE flow
descriptor formatted as: descriptor formatted as:
<FLOWSPEC><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 ingress node receives the Resv Message(s), it may begin
the new route. It should send a PathTear message for the old route. using 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Setup Prio | Holding Prio | Flags | Name Length | | Setup Prio | Holding Prio | Flags | Name Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 39, line 29 skipping to change at page 39, line 7
Class-Num Class-Num
The Class-Num indicates that the object is 207. (TBD) The Class-Num indicates that the object is 207. (TBD)
C-Type C-Type
The C-Type is 7. The C-Type is 7.
Flags Flags
0x01 = Fast-reroute 0x01 = Local protection
This flag permits transit routers to pre-compute and This flag permits transit routers to use a local repair
pre-establish detour paths for this session. When a mechanism which may result in violation of the explicit
fault is detected on an adjacent downstream link or node, route object. When a fault is detected on an adjacent
a transit router can reroute traffic onto the downstream link or node, a transit router can reroute
detour path for fast service restoration. traffic 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 = Ingress node may reroute
This flag indicates that the head end of the tunnel may This flag indicates that the tunnel ingress node may
choose to reroute this tunnel without tearing it down. choose to reroute this tunnel without tearing it down.
A tunnel tail SHOULD use the SE Style when responding A tunnel egress node SHOULD use the SE Style when
with a Resv message. 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
skipping to change at page 41, line 14 skipping to change at page 40, line 36
is in use by lower priority sessions, then lower priority sessions is in use by lower priority sessions, then lower priority sessions
(beginning with the lowest priority) can be pre-empted to free the (beginning with the lowest priority) can be pre-empted to free the
necessary bandwidth. necessary bandwidth.
When pre-emption is supported, each pre-empted reservation triggers a When pre-emption is supported, each pre-empted reservation triggers a
TC_Preempt() upcall to local clients, passing a subcode that TC_Preempt() upcall to local clients, passing a subcode that
indicates the reason. A ResvErr and/or PathErr with the code "Policy indicates the reason. A ResvErr and/or PathErr with the code "Policy
Control failure" should be sent toward the downstream receivers and Control failure" should be sent toward the downstream receivers and
upstream senders. upstream senders.
The support of fast-reroute is optional. A node may recognize the The support of local-protection is optional. A node may recognize
fast-reroute Flag but may be unable to perform the requested the local-protection Flag but may be unable to perform the requested
operation. In this case, the node should pass the information operation. In this case, the node should pass the information
downstream unchanged. downstream unchanged.
The support of merging is optional. A node may recognize the Merge The support of merging is optional. A node may recognize the Merge
Flag but may be unable to perform the requested operation. In this Flag but may be unable to perform the requested operation. In this
case, the node should pass the information downstream unchanged. case, the node should pass the information downstream unchanged.
If a Path message contains multiple SESSION_ATTRIBUTE objects, only If a Path message contains multiple SESSION_ATTRIBUTE objects, only
the first SESSION_ATTRIBUTE object is meaningful. Subsequent the first SESSION_ATTRIBUTE object is meaningful. Subsequent
SESSION_ATTRIBUTE objects can be ignored and need not be forwarded. SESSION_ATTRIBUTE objects can be ignored and need not be forwarded.
skipping to change at page 42, line 14 skipping to change at page 41, line 33
Class-of-Service flowspec object: Class = 9, C-Type = 3 (TBA) Class-of-Service flowspec object: Class = 9, C-Type = 3 (TBA)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | CoS | Maximum Packet Size [M] | | Reserved | CoS | Maximum Packet Size [M] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reserved Reserved
This field is reserved. It must be set to zero on transmission This field is reserved. It must be set to zero on transmission
and must be ignored on receipt. and must be ignored on receipt.
CoS CoS
Indicates the Class of Service (CoS) of the data traffic asso-
ciated with the request. A value of zero (0) indicates that Indicates the Class of Service (CoS) of the data traffic
associated traffic is "Best-Effort". Specifically no service associated with the request. A value of zero (0) indicates
assurances are being requested from the network. The intent is that associated traffic is "Best-Effort". Specifically no
to enable networks to support the IP ToS Octet as defined in service assurances are being requested from the network. The
RFC1349 [7]. It is noted that there is ongoing work within the intent is to enable networks to support the IP ToS Octet as
IETF to update the use of the IP ToS Octet. defined in RFC1349 [7]. It is noted that there is ongoing work
within the IETF to update the use of the IP ToS Octet. In
particular, RFC2474 [8], obsoletes RFC1349. However at this
time the new uses of this field (now termed the DS byte) are
still being defined.
M M
The maximum packet size parameter [M] should be set to the The maximum packet size parameter [M] should be set to the
value of the smallest path MTU. This parameter is set in Resv value of the smallest path MTU. This parameter is set in Resv
messages by the reliever based on information in arriving RSVP messages by the reliever based on information in arriving RSVP
ADSPEC objects. This parameter is ignored when the object is ADSPEC objects. This parameter is ignored when the object is
contained in Path messages. contained in Path messages.
5. Refresh Related Extensions 5. Acknowledgments
The resource requirement (in terms of cpu processing and memory) for
running RSVP on a router increases proportionally with the number of
sessions. Supporting a large number of sessions can present scaling
problems.
This section describes an approach to help alleviate one of the
scaling issues. RSVP Path and Resv messages must be periodically
refreshed to maintain state. The approach described here simply
reduces the volume of messages which must be periodically sent and
received.
One way to address the refresh volume problem is to increase the
refresh timer R. Increasing the value of R provides linear
improvement on transmission overhead, but at the cost of increasing
refresh timeout.
An aggregate message is proposed which can reduce R for faster
detection of connectivity problems and still reduce overhead by an
order of magnitude.
A Message_ID object is defined to reduce refresh message processing
by allowing the receiver to immediately identify an unchanged
message. A Message_ACK object is defined which used in combination
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
of a neighbor node or it's RSVP state information.
5.1. RSVP Aggregate Message
An RSVP aggregate message consists of an aggregate header followed by
a body consisting of a variable number of standard RSVP messages.
The following subsections define the formats of the aggregate header
and the rules for including standard RSVP messages as part of the
message.
5.1.1. Aggregate Header
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vers | Flags | Msg type | RSVP checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Send_TTL | (Reserved) | RSVP length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The format of the aggregate header is identical to the format of the
RSVP common header [1]. The fields in the header are as follows:
Vers: 4 bits
Protocol version number. This is version 1.
Flags: 4 bits
0x01: Aggregate capable
If set, indicates to RSVP neighbors that this node is willing
and capable of receiving aggregate messages. This bit is
meaningful only between adjacent RSVP neighbors.
0x02-0x08: Reserved
Msg type: 8 bits
12 = Aggregate
RSVP checksum: 16 bits
The one's complement of the one's complement sum of the entire
message, with the checksum field replaced by zero for the pur-
pose of computing the checksum. An all-zero value means that
no checksum was transmitted. Because individual submessages
carry their own checksum as well as the INTEGRITY object for
authentication, this field MAY be set to zero.
Send_TTL: 8 bits
The IP TTL value with which the message was sent. This is used
by RSVP to detect a non-RSVP hop by comparing the IP TTL that
an Aggregate message sent to the TTL in the received message.
RSVP length: 16 bits
The total length of this RSVP aggregate message in bytes, in-
cluding the aggregate header and the submessages that follow.
5.1.2. Message Formats
An RSVP aggregate message must contain at least one submessage. A
submessage is one of the RSVP Path, PathTear, PathErr, Resv,
ResvTear, ResvErr, or ResvConf messages.
Empty RSVP aggregate messages should not be sent. It is illegal to
include another RSVP aggregate message as a submessage.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vers | Flags | 12 | RSVP checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Send_TTL | (Reserved) | RSVP length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// First submessage //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// More submessage... //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
5.1.3. Sending RSVP Aggregate Messages
RSVP Aggregate messages are sent hop by hop between RSVP-capable
neighbors as "raw" IP datagrams with protocol number 46. Raw IP
datagrams are also intended to be used between an end system and the
first/last hop router, although it is also possible to encapsulate
RSVP messages as UDP datagrams for end-system communication that
cannot perform raw network I/O.
RSVP Aggregate messages should not be used if the next-hop RSVP
neighbor does not support RSVP Aggregate messages. Methods for
discovering such information include: (1) manual configuration and
(2) observing the Aggregate-capable bit (see the description that
follows) in the received RSVP messages.
Support for RSVP Aggregate messages is optional. While message
aggregation might help in scaling RSVP, and in reducing processing
overhead and bandwidth consumption, a node is not required to
transmit every standard RSVP message in an Aggregate message. A node
must always be ready to receive standard RSVP messages.
The IP source address is local to the system that originated the
Aggregate message. The IP destination address is the next-hop node
for which the submessages are intended. These addresses need not be
identical to those used if the submessages were sent as standard RSVP
messages.
For example, the IP source address of Path and PathTear messages is
the address of the sender it describes, while the IP destination
address is the DestAddress for the session. These end-to-end
addresses are overridden by hop-by-hop addresses while encapsulated
in an Aggregate message. These addresses can easily be restored from
the SENDER_TEMPLATE and SESSION objects within Path and PathTear
messages. For Path and PathTear messages, the next-hop node can be
learned by looking up DestAddress in the forwarding table.
RSVP Aggregate messages do not require the Router Alert IP option
[RFC 2113] in their IP headers. This is because Aggregate messages
are addressed directly to RSVP neighbors.
Each RSVP Aggregate message must occupy exactly one IP datagram. If
it exceeds the MTU, the datagram is fragmented by IP and reassembled
at the recipient node. A single RSVP Aggregate message cannot exceed
the maximum IP datagram size, which is approximately 64K bytes.
5.1.4. Receiving RSVP Aggregate Messages
If the local system does not recognize or does not wish to accept an
Aggregate message, the received messages shall be discarded without
further analysis.
The receiver next compares the IP TTL with which an Aggregate message
is sent to the TTL with which it is received. If a non-RSVP hop is
detected, the number of non-RSVP hops is recorded. It is used later
in processing of sub-messages.
Next, the receiver verifies the version number and checksum of the
RSVP aggregate message and discards the message if any mismatch is
found.
The receiver then starts decapsulating individual sub-messages. Each
sub-message has its own complete message length and authentication
information. Each sub-message is processed according to procedures
specified in RFC 2209.
5.1.5. Forwarding RSVP Aggregate Messages
When an RSVP router receives an Aggregate messages which is not
addressed to one of it's IP addresses, it SHALL forward the message.
Non-RSVP routers should treat RSVP Aggregate messages as any other IP
datagram.
When individual submessages are being forwarded, they can be
encapsulated in another aggregate message before sending to the
next-hop neighbor. The Send_TTL field in the submessages should be
decremented properly before transmission.
5.1.6. Aggregate-Capable Bit
To support message aggregation, an additional capability bit is added
to the common RSVP header, which is defined in RFC2205 [1].
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vers | Flags | Msg Type | RSVP Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Send_TTL | (Reserved) | RSVP Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flags: 4 bits
0x01: Aggregate capable
If set, indicates to RSVP neighbors that this node is willing
and capable of receiving aggregate messages. This bit is
meaningful only between adjacent RSVP neighbors.
5.2. MESSAGE_ID Extension
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
object. The MESSAGE_ID Class is used to support acknowledgments and,
when used in conjunction with the Hello Extension described in
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
indication of when a message represents new state. Such information
can be used on the receiving node to reduce refresh processing
requirements.
Message identification and acknowledgment is done on a hop-by-hop
basis. Acknowledgment is handled independent of SESSION or message
type. Both types of MESSAGE_ID objects contain a message identifier.
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
more than one MESSAGE_ID object may be included in an RSVP message.
Each message containing an MESSAGE_ID object may be acknowledged via
a MESSAGE_ID ACK object. MESSAGE_ID ACK objects may be sent
piggybacked in unrelated RSVP messages or in RSVP ACK messages
Either type of MESSAGE_ID object may be included in an aggregate
sub-message. When included, the object is treated as if it were
contained in a standard, unaggregated, RSVP message. Only one
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
objects are present, the MESSAGE_ID object MUST immediately follow
the INTEGRITY object. When no INTEGRITY object is present, the
MESSAGE_ID object MUST immediately follow the (sub)message header.
When present, one or more MESSAGE_ID ACK objects MUST immediately
follow the INTEGRITY object. When no INTEGRITY object is present,
the MESSAGE_ID ACK objects MUST immediately follow the the
(sub)message header. An MESSAGE_ID ACK object may only be included
in a message when the message's IP destination address matches the
unicast address of the node that generated the message(s) being
acknowledged.
5.2.1. MESSAGE_ID Object
MESSAGE_ID Class = 166 (Value to be assigned by IANA of form
10bbbbbb)
MESSAGE_ID object
Class = MESSAGE_ID Class, C_Type = 1
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flags: 8 bits
0x80 = ACK_Desired flag
Indicates that the sender is willing to accept a message
acknowledgment. Acknowledgments MUST be silently ignored
when they are sent in response to messages whose
ACK_Desired flag is not set. This flag MUST be set when
the Last_Refresh flag is set.
0x40 = Last_Refresh flag
Used in Resv and Path refresh messages to indicate that the
sender will not be sending further refreshes. When set,
the ACK_Desired flag MUST also be set. This flag MUST NOT
be set when the HELLO messages are not being exchanged with
the neighboring RSVP node.
Message ID: 24 bits
a 24-bit identifier. When combined with the message
generator's IP address, uniquely identifies a message.
MESSAGE_ID ACK object
Class = MESSAGE_ID 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reserved
This field is reserved. It must be set to zero on transmis-
sion and must be ignored on receipt.
Message ID: 24 bits
a 24-bit identifier. When combined with the message
generator's IP address, uniquely identifies a message.
5.2.2. Ack Message Format
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
between RSVP nodes. The IP destination address of an Ack message is
the unicast address of the node, that generated the message(s) being
acknowledged. For Path, PathTear, Resv, and RervErr messages this is
taken from the RSVP_HOP Object. For PathErr and ResvErr messages
this is taken from the message's source address. The IP source
address is an address of the node that sends the Ack message.
The Ack message format is as follows:
<ACK Message> ::= <Common Header> [ <INTEGRITY> ]
<MESSAGE_ID ACK>
[ <MESSAGE_ID ACK> ... ]
For Ack messages, the Msg Type field of the Common Header MUST be set
to 13 <TO_BE_ASSIGNED>.
5.2.3. MESSAGE_ID Object Usage
The MESSAGE_ID object may be included in any RSVP message other than
the Ack message. The MESSAGE_ID object is always generated and
processed hop-by-hop. The IP address of the object generator is
represented in a per RSVP message type specific fashion. For Path
and PathTear messages the generator's IP address is contained in the
RSVP_HOP. For Resv, ResvTear, PathErr, ResvErr, ResvConf and
Aggregate messages the generator's IP address is the source address
in the IP header.
The Message ID field contains a generator selected value. This
value, when combined with the generator's IP address, identifies a
particular RSVP message and the specific state information it
represents. When a node is sending a refresh message with a
MESSAGE_ID object, it SHOULD use the same Message ID value that was
used in the RSVP message that first advertised the state being
refreshed. When a node is sending a message that represents new or
changed state, the Message ID value MUST have a value that is not
otherwise in use. A value is considered to be in use when it has
been used in the most recent advertisement or refresh of any state
using the associated IP address. Care must also be taken to avoid
reuse of a previously used value during times of network loss. At
such times, the use of new values may not be noticed by receivers.
There is no requirement for Message ID values to be increasing or
ordered.
The ACK_Desired flag is set when the MESSAGE_ID object generator is
capable of accepting MESSAGE_ID ACK objects. Such information can be
used to ensure reliable delivery of error and confirm messages and to
support fast refreshes in the face of network loss. Nodes setting
the ACK_Desired flag SHOULD retransmit unacknowledged messages at a
faster interval than the standard refresh time until the message is
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
information in the objects to aid in determining if an message
represents new state or a state refresh. Note that state is only
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
received message for the same session and, for path messages,
SENDER_TEMPLATE then the receiver SHOULD treat the message as a state
refresh. If the Message ID value differs from the most recently
received value, the receiver MUST fully processes the message.
Nodes receiving a message containing a MESSAGE_ID object with the
ACK_Desired flag set, SHOULD respond with a MESSAGE_ID ACK object.
If a node supports the Hello extension it MUST also check the
Last_Refresh flag of received Resv and Path messages. If the flag is
set, the receiver MUST NOT timeout state associated with associated
message. The receiver MUST also be prepared to properly process
refresh messages.
5.2.4. MESSAGE_ID ACK Object Usage
The MESSAGE_ID ACK object is used to acknowledge receipt of messages
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
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
ACK_Desired flag is not set.
A MESSAGE_ID ACK object may be sent in any RSVP message that has an
IP destination address matching the generator of the associated
MESSAGE_ID object. The MESSAGE_ID ACK object will not typically be
included in the non hop-by-hop Path, PathTear and ResvConf messages.
When no appropriate message is available, one or more MESSAGE_ID ACK
objects SHOULD be sent in an Ack message. Implementations SHOULD
include MESSAGE_ID ACK objects in standard RSVP messages when
possible.
Upon receiving a MESSAGE_ID ACK object for a message generated with
the No_Refresh flag set, 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 No_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
Path and PathTear messages may be sent to IP multicast destination
addresses. When the destination is multicast, it is possible that a
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
case, acknowledgment processing is more complex. There are a number
of issues including ACK implosion, number acknowledgments to be
expected and handling new receivers.
ACK implosion occurs when each receiver responds to the MESSAGE_ID
object at approximately the same time. This can lead to a
potentially large number of MESSAGE_ID ACK objects simultaneously
delivered to the message generator. To address this case, the
receiver MUST wait a random interval prior to acknowledging a
MESSAGE_ID object received in a message destined to a multicast
address. The random interval SHOULD be between zero (0) and a
configured maximum time. The configured maximum SHOULD be set in
proportion to the refresh and "fast" retransmission interval.
A more fundamental issue is the number of acknowledgments that the
upstream node, the message generator, should expect. The number of
acknowledgments that should be expected is the same as the number of
RSVP next-hops. In the router-to-router case, the number of next-
hops can usually be obtained from routing. When hosts are either the
upstream node or the next-hops, the number of next-hops will
typically not be readily available. When the number of next-hops is
not known, the message generator SHOULD only expect a single response
and MUST ignore the No_Refresh flag of MESSAGE_ID Ack objects. The
result of this behavior will be special retransmission handling until
the message is delivered to at least one next-hop, then followed by
standard RSVP refreshes. Standard refresh messages will synchronize
state with any next-hops that don't receive the original message.
Another issue is handling new (host or router) receivers. It is
possible that after sending a Path message and handling of expected
number of acknowledgments that a new receiver joins the group. In
this case a new Path message must be sent to the new receiver. When
normal refresh processing is occurring, there is no issue. When
normal refresh processing is suppressed, a path message must still be
generated. In the router-to-router case, the identification of new
next-hops can usually be obtained from routing. When hosts are
either the upstream node or the next-hops, the identification of new
next-hops will typically not be possible. When identification of new
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
objects. The result of this behavior will be special retransmission
handling until the message is delivered to at least one next-hop,
then followed by standard RSVP refreshes. Standard refresh messages
will synchronize state with any next-hops that don't receive the
original message.
There is one additional minor issue with multiple next-hops. The
issue is handling a combination of standard-refresh and non-refresh
next-hops, i.e. Hello messages are being exchanged with some
neighboring nodes but not with others. When this case occurs,
refreshes MUST be generated per standard RSVP and the Last_Refresh
flag MUST NOT be set.
5.2.6. Compatibility
There are no backward compatibility issues raised by the MESSAGE_ID
Class. The MESSAGE_ID Class has an assigned value whose form is
10bbbbbb. Per RSVP [1], classes with values of this form must be
ignored and not forwarded by nodes not supporting the class. When
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 not see any acknowledgments and therefore refresh
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
possible issues with this object or Ack messages.
Implementations supporting the MESSAGE_ID extension MUST also support
the Hello extension.
5.3. Hello Extension
The RSVP Hello extension enables RSVP nodes to detect a loss of a
neighboring node's state information. In standard RSVP, such
detection occurs as a consequence of RSVP's soft state model. When
refresh message generation is disabled via the previously discussed
No_Refresh flag processing, the Hello extension is needed to address
this failure case. The Hello extensions is not intended to provide a
link failure detection mechanism, particularly in the case of
multiple parallel unnumbered links.
The Hello 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
first learn about each other, or just when neighbors are sharing Resv
or Path state. All implementations supporting the MESSAGE_ID ACK
object MUST also support the Hello Extension. Such implementations
SHOULD initiate Hello processing and MUST be able to respond to Hello
messages.
The Hello extension is composed of a Hello message, a HELLO REQUEST
object and a HELLO ACK object. Hello processing between two
neighbors supports independent selection of, typically configured,
failure detection intervals. Each neighbor can autonomously issue
HELLO REQUEST objects. Each request is answered by an
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's state "instance" value. If a change in value is seen,
then the neighbor is presumed to have reset it's RSVP state. The
HELLO objects provide a mechanism for polling for and providing an
RSVP state instance value. A poll request also includes the sender's
instance value. This allows the receiver of a poll to optionally
treat the poll as an implicit poll response. This optional handling
is an optimization that can reduce the total number of polls and
responses processed by a pair of neighbors. In all cases, when both
sides support the optimization the result will be only one set of
polls and responses per failure detection interval. Depending on
selected intervals, the same benefit can occur even when only one
neighbor supports the optimization.
5.3.1. Hello Message Format
Hello Messages are always sent between two RSVP neighbors. The IP
source address is the IP address of the sending node. The IP
destination address is the IP address of the neighbor node.
The Hello message format is as follows:
<Hello Message> ::= <Common Header> [ <INTEGRITY> ]
<HELLO>
For Hello messages, the Msg Type field of the Common Header MUST be
set to 14 <TO_BE_ASSIGNED>.
5.3.2. HELLO Object
HELLO Class = 22 (Value to be assigned by IANA of form 0bbbbbbb)
HELLO REQUEST object
Class = HELLO Class, C_Type = 1
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Instance |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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: 32 bits
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
reboots and otherwise remains the same. This field MUST NOT be
set to zero (0).
5.3.3. Hello Message Usage
A Hello message containing a HELLO REQUEST object MUST be generated
for each neighbor who's state is being tracked. When generating a
message containing a HELLO REQUEST object, the sender fills in the
Instance field with a value representing it's RSVP agent state. This
value MUST NOT change while the agent is maintaining any RSVP state.
The generation of a message SHOULD be skipped when a HELLO REQUEST
object was received from the destination node within the failure
detection interval.
On receipt of a message containing a HELLO REQUEST object, the
receiver MUST generate a Hello message containing a HELLO ACK object.
The receiver SHOULD also 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.
On receipt of a message containing a HELLO ACK object, the receiver
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
The Hello extension is fully backwards compatible. The Hello class
is assigned a class value of the form 0bbbbbbb. Depending on the
implementation, implementations that don't support the extension will
either silently discard Hello messages or will respond with an
"Unknown Object Class" error. In either case the sender will fail to
see an acknowledgment for the issued Hello. When a Hello sender does
not receive an acknowledgment, it MUST NOT send MESSAGE_ID ACK
objects with the No_Refresh flag set to the corresponding RSVP
neighbor. This restriction will preclude neighbors from getting out
of RSVP state synchronization.
Implementations supporting the Hello extension MUST also support the
MESSAGE_ID extension.
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 thank Bora Akyol, Yoram Bernet and Alex Viswanathan. We also wish to thank Bora Akyol, Yoram Bernet and Alex
Mondrus for their comments on this draft. Mondrus for their comments on this draft.
7. References 6. 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., "Multiprotocol Label Switching Architeture",
Draft, draft-ietf-mpls-arch-02.txt, July 1998. Internet Draft, draft-ietf-mpls-arch-04.txt, February 1999.
[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", [7] Almquist, P., "Type of Service in the Internet Protocol Suite",
RFC 1349, July 1992. RFC 1349, July 1992.
8. Authors' Addresses [8] Nichols, K. et al., "Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers", RFC 2474, December 1998.
7. 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
Lou Berger Lou Berger
FORE Systems FORE Systems
 End of changes. 

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