Internet Draft
Network Working Group Lou Berger
Internet Draft LabN Consulting, LLC
Expiration Date: April 2000
Der-Hwa Gan
Juniper Networks, Inc.
George Swallow
Cisco Systems, Inc.
Ping Pan
Bell Labs, Lucent
October 1999
RSVP Refresh Reduction Extensions
draft-ietf-rsvp-refresh-reduct-01.txt
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Abstract
This document describes a number of mechanisms that 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, refreshing state without the transmission of whole
refresh messages. The same extensions also support reliable RSVP
message delivery. These extension present no backwards compatibility
issues.
Berger, et al. [Page 1]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
Contents
1 Introduction and Background ............................... 3
1.1 Trigger and Refresh Messages .............................. 4
2 RSVP Bundle Message ....................................... 5
2.1 Bundle Header ............................................. 5
2.2 Message Formats ........................................... 6
2.3 Sending RSVP Bundle Messages .............................. 7
2.4 Receiving RSVP Bundle Messages ............................ 8
2.5 Forwarding RSVP Bundle Messages ........................... 8
2.6 Bundle-Capable Bit ........................................ 8
3 MESSAGE_ID Extension ...................................... 9
3.1 MESSAGE_ID Objects ....................................... 10
3.2 MESSAGE_ID_ACK and MESSAGE_ID_NACK Objects ................ 11
3.3 Ack Message Format ........................................ 12
3.4 MESSAGE_ID Object Usage ................................... 12
3.5 MESSAGE_ID_ACK Object and MESSAGE_ID_NACK Object Usage .... 14
3.6 Multicast Considerations .................................. 15
3.6.1 Reference RSVP/Routing Interface .......................... 15
3.7 Compatibility ............................................. 16
4 Summary Refresh Extension ................................. 16
4.1 MESSAGE_ID LIST, SRC_LIST and MCAST_LIST Objects .......... 18
4.2 Srefresh Message Format ................................... 21
4.3 Srefresh Message Usage .................................... 22
4.4 Srefresh NACK ............................................. 25
4.5 Compatibility ............................................. 25
5 Reference Exponential Back-Off Procedures ................. 26
5.1 Outline of Operation ...................................... 26
5.2 Time Parameters ........................................... 27
5.3 Example Retransmission Algorithm .......................... 28
6 Acknowledgments ........................................... 29
7 Security Considerations ................................... 29
8 References ................................................ 29
9 Authors' Addresses ........................................ 30
Berger, et al. [Page 2]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
Changes from previous version
o Integrated feedback from working group chairs.
o No substantive changes were made to how extensions operate.
o Renamed Message_ID field to Message_Identifier.
o Broke MESSAGE_ID class into MESSAGE_ID, MESSAGE_ID_ACK and
MESSAGE_ID_LIST classes.
o Removed some text left over from previous versions and removed
reference to UDP encapsulation.
o Many other editorial and clarification related changes.
1. Introduction and Background
The resource requirements (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 document describes mechanisms to help alleviate one set of
scaling issues. RSVP Path and Resv messages must be periodically
refreshed to maintain state. The approach described effectively
reduces the volume of messages which must be periodically sent and
received, as well as the resources required to process refresh
messages.
The described mechanisms also address 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 applications.
One way to address the refresh volume problem is to increase the
refresh period, "R" as defined in Section 3.7 of [RFC2205].
Increasing the value of R provides linear improvement on transmission
overhead, but at the cost of increasing the time it takes to
synchronize state.
One way to address the latency and reliability of RSVP Signaling is
to decrease the refresh period R. Decreasing the value of R provides
increased probability that state will be installed in the face of
message loss, but at the cost of increasing refresh message rate and
associated processing requirements.
Berger, et al. [Page 3]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
An additional issue is the time to deallocate resources after a tear
message is lost. RSVP does not retransmit ResvTear or PathTear
messages. If the sole tear message transmitted is lost, then
resources will only be deallocated once the "cleanup timer" interval
has passed. This may result in resources being allocated for an
unnecessary period of time. Note that adjusting the refresh period
has no impact on this issues since tear messages are not
retransmitted.
The extensions defined in this document address both the refresh
volume and the reliability issues with mechanisms other than
adjusting refresh rate. A Bundle message is defined to reduce
overall message handling load. A MESSAGE_ID object is defined to
reduce refresh message processing by allowing the receiver to more
readily identify an unchanged message. A MESSAGE_ACK object is
defined which can be used to detect message loss and support reliable
RSVP message delivery. A summary refresh message is defined to
enable refreshing state without the transmission of whole refresh
messages, while maintaining RSVP's ability to indicate when state is
lost or when next hops change.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
1.1. Trigger and Refresh Messages
This document categorizes RSVP messages into two types: trigger and
refresh messages. Trigger messages are those RSVP messages that
advertise state or any other information not previously transmitted.
Trigger messages include messages advertising new state, a route
change that altered the reservation paths, or a reservation
modification by a downstream router. Trigger messages also include
those messages that include changes in non-RSVP processed objects,
such as changes in the Policy or ADSPEC objects.
Refresh messages represent previously advertised state and contain
exactly the same objects and same information as a previously
transmitted message, and are sent over the same path. Only Path and
Resv messages can be refresh messages. Refresh messages are
identical to the corresponding previously transmitted message, with
the exception of the INTEGRITY object, the flags in the MESSAGE_ID
object and the RSVP Checksum. The checksum, the flags and the
INTEGRITY object are allowed to differ in refresh messages.
Berger, et al. [Page 4]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
2. RSVP Bundle Message
An RSVP Bundle message consists of a bundle header followed by a body
consisting of a variable number of standard RSVP messages. A Bundle
message is used to aggregated multiple RSVP messages within a single
PDU. The term "bundling" is used to avoid confusion with RSVP
reservation aggregation. The following subsections define the
formats of the bundle header and the rules for including standard
RSVP messages as part of the message.
2.1. Bundle 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 bundle header is identical to the format of the
RSVP common header [RFC2205]. The fields in the header are as
follows:
Vers: 4 bits
Protocol version number. This is version 1.
Flags: 4 bits
0x01: Bundle capable
If set, indicates to RSVP neighbors that this node is willing
and capable of receiving bundle messages. This bit is
meaningful only between adjacent RSVP neighbors.
0x02-0x08: Reserved
Msg type: 8 bits
12 = Bundle
Berger, et al. [Page 5]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
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
purpose of computing the checksum. An all-zero value means
that no checksum was transmitted. Because individual sub-
messages may carry their own checksum as well as the INTEGRITY
object for authentication, this field MAY be set to zero. If
the checksum is computed, individual sub-messages MAY set their
own checksum 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 a
Bundle message sent to the TTL in the received message.
RSVP length: 16 bits
The total length of this RSVP Bundle message in bytes,
including the bundle header and the sub-messages that follow.
2.2. Message Formats
An RSVP Bundle message must contain at least one sub-message. A sub-
message MAY be any message type except for another Bundle message.
Empty RSVP Bundle messages SHOULD NOT be sent. A Bundle message MUST
NOT include another RSVP Bundle message as a sub-message.
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 sub-message //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// More sub-messages.. //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Berger, et al. [Page 6]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
2.3. Sending RSVP Bundle Messages
Support for RSVP Bundle messages is optional. While message bundling
helps in scaling RSVP, by reducing processing overhead and bandwidth
consumption, a node is not required to transmit every standard RSVP
message in a Bundle message. A node MUST always be ready to receive
standard RSVP messages.
RSVP Bundle messages MAY be sent to RSVP neighbors that support the
message. Methods for discovering such information include: (1)
manual configuration and (2) observing the Bundle-capable bit (see
the description that follows) in the received RSVP messages. RSVP
Bundle messages MUST not be used if the RSVP neighbor does not
support RSVP Bundle messages. If the RSVP neighbor is not known or
changes in next hops cannot be identified via routing, Bundle
messages MUST NOT be sent. Note that when the routing next hop is
not RSVP capable it will typically not be possible to identify
changes in next hop.
RSVP Bundle messages are sent hop by hop between RSVP-capable nodes
as "raw" IP datagrams with protocol number 46. The IP source address
is an address local to the system that originated the Bundle message.
The IP destination address is the RSVP neighbor for which the sub-
messages are intended.
RSVP Bundle messages SHOULD NOT be sent with the Router Alert IP
option in their IP headers. This is because Bundle messages are
addressed directly to RSVP neighbors.
Each RSVP Bundle 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 Bundle message MUST NOT exceed the
maximum IP datagram size, which is approximately 64K bytes.
Implementations may choose to limit each RSVP Bundle message to the
MTU size of the outgoing link, e.g. 1500 bytes.
Any message that will be handled by the RSVP neighbor indicated in a
Bundle Message's destination address may be included in the same
message. This includes all RSVP messages that would be sent out a
point-to-point link. It includes any message, such as a Resv,
addressed to the same destination address. It also includes Path and
PathTear messages when the next hop is know to be the destination and
changes in next hops can be detected. Path and PathTear messages for
multicast sessions MUST NOT be sent in Bundle messages when the
outgoing link is not a point-to-point link or when the next hop is
not Bundle capable.
Berger, et al. [Page 7]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
2.4. Receiving RSVP Bundle Messages
If the local system does not recognize or does not wish to accept an
Bundle message, the received messages shall be discarded without
further analysis.
The receiver next compares the IP TTL with which a Bundle 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 Bundle 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 as if it was received
individually.
2.5. Forwarding RSVP Bundle Messages
When an RSVP router receives a Bundle messages which is not addressed
to one of it's IP addresses, it SHALL forward the message. Non-RSVP
routers will treat RSVP Bundle messages as any other IP datagram.
2.6. Bundle-Capable Bit
To support message bundling, an additional capability bit is added to
the common RSVP header, which is defined in [RFC2205].
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Berger, et al. [Page 8]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
Flags: 4 bits
0x01: Bundle capable
When set, indicates to that this node is willing and capable
of receiving Bundle messages. This bit is meaningful only
between RSVP neighbors.
3. MESSAGE_ID Extension
Three new objects are defined as part of the MESSAGE_ID extension.
The objects are the MESSAGE_ID object, the MESSAGE_ID_ACK object, and
the MESSAGE_ID_NACK objects. The first two objects are used to
support acknowledgments and reliable RSVP message delivery. The last
object is used to support the summary refresh extension described in
Section 4. 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 and MESSAGE_ID_NACK objects
may be sent piggy-backed in unrelated RSVP messages or in RSVP Ack
messages.
All three object types may be included in a bundle sub-message. When
included, the object is treated as if it were contained in a
standard, non-bundled, RSVP message. When present, one or more
MESSAGE_ID_ACK or MESSAGE_ID_NACK objects MUST immediately follow the
INTEGRITY object. When no INTEGRITY object is present, the
MESSAGE_ID_ACK or MESSAGE_ID_NACK objects MUST immediately follow the
message or sub-message header. Only one MESSAGE_ID object MAY be
included in a message or sub-message and it MUST follow any present
MESSAGE_ID_ACK or MESSAGE_ID_NACK objects. When no MESSAGE_ID_ACK or
MESSAGE_ID_NACK 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 message or
sub-message header.
Berger, et al. [Page 9]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
The ordering of the ACK objects are:
[ ]
[ | ... ]
[ ]
3.1. MESSAGE_ID Objects
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 | Epoch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message_Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flags: 8 bits
0x80 = Summary_Capable flag
Indicates that the sender supports the summary refresh
extension. This flag MUST be set if the node supports the
summary refresh extension. See Section 4.5 for description
of handling by receiver.
0x40 = ACK_Desired flag
Indicates that the sender requests the receiver to send an
acknowledgment for the message.
Epoch: 24 bits
A value that indicates when the Message_Identifier sequence has
reset. SHOULD be randomly generated each time a node reboots.
This value MUST NOT be changed during normal operation.
Message_Identifier: 32 bits
When combined with the message generator's IP address, the
Message_Identifier field uniquely identifies a message. This
Berger, et al. [Page 10]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
field is ordered and only decreases in value when the Epoch
changes or the value wraps.
3.2. MESSAGE_ID_ACK and MESSAGE_ID_NACK Objects
MESSAGE_ID_ACK Class = 167 (Value to be assigned by IANA of form
10bbbbbb)
MESSAGE_ID_ACK object
Class = MESSAGE_ID_ACK 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 | Epoch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message_Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flags: 8 bits
0x80 = Summary_Capable flag
Indicates that the sender supports the summary refresh
extension. This flag MUST be set if the node supports the
summary refresh extension. See Section 4.5 for description
of handling by receiver.
Epoch: 24 bits
The Epoch field copied from the message being acknowledged.
Message_Identifier: 32 bits
The Message_Identifier field copied from the message being
acknowledged.
MESSAGE_ID_NACK object
Class = MESSAGE_ID_ACK Class, C_Type = 2
Definition same as MESSAGE_ID_ACK object.
Berger, et al. [Page 11]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
3.3. Ack Message Format
Ack messages carry one or more MESSAGE_ID_ACK or MESSAGE_ID_NACK
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 messages with RSVP_HOP
objects, such as Path and Resv messages, the address is found in the
RSVP_HOP object. For other messages, such as ResvConf and Bundle
messages, the associated IP address is the source address in the IP
header. The IP source address is an address of the node that sends
the Ack message.
The Ack message format is as follows:
::= [ ]
|
[ ... ]
[ ... ]
For Ack messages, the Msg Type field of the Common Header MUST be set
to 13 (This is a suggested value, the permanent value is to be
assigned by IANA).
3.4. 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, i.e.,
the node that creates the object, is represented in a per RSVP
message type specific fashion. For messages with RSVP_HOP objects,
such as Path and Resv messages, the generator's IP address is found
in the RSVP_HOP object. For other messages, such as ResvConf and
Bundle messages, the generator's IP address is the source address in
the IP header. Note that MESSAGE_ID objects can be used in both a
Bundle message and its sub-messages. As is always the case with the
Bundle message, each sub-message is processed as if it was received
individually. This includes processing of MESSAGE_ID objects.
The Epoch field contains a generator selected value. The value is
used to indicate when the sender resets the values used in the
Message_Identifier field. This information is used by the receiver
to detect out of order messages. On startup, a node SHOULD randomly
select a value to be used in the Epoch field. The node SHOULD ensure
that the selected value is not the same as was used when the node was
last operational. The value MUST NOT be changed unless the node or
the RSVP agent is restarted.
Berger, et al. [Page 12]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
The Message_Identifier 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_Identifier value
that was used in the RSVP message that first advertised the state
being refreshed. When a node is sending a trigger message, the
Message_Identifier value MUST have a value that is greater than any
other previously used value. A value is considered to have been used
when it has been sent in any message using the associated IP address.
Note that this 32-bit value MAY wrap.
The ACK_Desired flag is set when the MESSAGE_ID object generator
wants a MESSAGE_ID_ACK object sent in response to the message. 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 more rapid interval than the standard
refresh period until the message is acknowledged or until a "rapid"
retry limit is reached. Rapid retransmission rate SHOULD be based on
well known exponential back-off procedures. See Section 5 for
details on one exponential back-off retransmission approach. Note
that nodes setting the ACK_Desired flag for unicast sessions, do not
need to track the identify of the next hop since all that is expected
is an ACK, not an ACK from a specific next hop. Issues relate to
multicast sessions are covered in a later section. The ACK_Desired
flag will typically be set only in trigger messages. The ACK_Desired
flag MAY be set in refresh messages.
Nodes processing incoming MESSAGE_ID objects SHOULD check to see if a
newly received message is out of order and can be ignored. Out of
order messages SHOULD be ignored, i.e., silently dropped. Out of
order messages can be identified by examining the values in the Epoch
and Message_Identifier fields. To determine ordering, the received
Epoch value must match the value previously received from the message
sender. If the values differ then the receiver MUST NOT treat the
message as out of order. When the Epoch values match and the
Message_Identifier value is less than the largest value previously
received from the sender, then the receiver SHOULD check the value
previously received for the state associated with the message. This
check should be performed for any message that installs or changes
state. (Includes at least: Path, Resv, PathTear, ResvTear, PathErr
and ResvErr.) If no local state information can be associated with
the message, the receiver MUST NOT treat the message as out of order.
If local state can be associated with the message and the received
Message_Identifier value is less than the most recently received
value associated with the state, the message SHOULD be treated as
being out of order.
Berger, et al. [Page 13]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
MESSAGE_ID objects of messages that are not out of order SHOULD be
used to aid in determining if the message represents new state or a
state refresh. Note that state is only refreshed in Path and Resv
messages. If the received Epoch values differs from the value
previously received from the message sender, the message is a trigger
message and the receiver MUST fully processes the message. If a Path
or Resv message contains the same Message_Identifier 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_Identifier value is
greater than the most recently received value, the receiver MUST
fully processes the message. When fully processing a Path or Resv
message, the receiver MUST store the received Message_Identifier
value as part of the local Path or Resv state for future reference.
Nodes receiving a non-out of order message containing a MESSAGE_ID
object with the ACK_Desired flag set, SHOULD respond with a
MESSAGE_ID_ACK object. Note that MESSAGE_ID objects received in
messages containing errors, i.e., are not syntactically valid, MUST
NOT be acknowledged. PathErr and ResvErr messages SHOULD be treated
as implicit acknowledgments.
3.5. MESSAGE_ID_ACK Object and MESSAGE_ID_NACK 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. 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.
The MESSAGE_ID_NACK object is used as part of the summary refresh
extension. The generation and processing of received MESSAGE_ID_NACK
objects is described in further detail in Section 4.4.
MESSAGE_ID_ACK and MESSAGE_ID_NACK objects MAY be sent in any RSVP
message that has an IP destination address matching the generator of
the associated MESSAGE_ID object. This means that the objects 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 objects SHOULD be sent in an Ack message. Implementations
SHOULD include MESSAGE_ID_ACK and MESSAGE_ID_NACK objects in standard
RSVP messages when possible.
Berger, et al. [Page 14]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
3.6. Multicast Considerations
Path and PathTear messages may be sent to IP multicast destination
addresses. When the destination is a multicast address, 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 to be addressed including ACK implosion,
number acknowledgments to be expected and handling of 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 being
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 "rapid" retransmission interval, i.e,
such that the maximum back-off time does not result in
retransmission.
A more fundamental issue is the number of acknowledgments that the
upstream node, i.e., 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. Another case where the
number of RSVP next hops will typically not be known is when there
are non-RSVP routers between the message generator and the RSVP next
hops.
When the number of next hops is not known, the message generator
SHOULD only expect a single response. 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. Refresh messages will synchronize state with any next
hops that don't receive the original message.
3.6.1. Reference RSVP/Routing Interface
When using the MESSAGE_ID extension with multicast sessions it is
preferable for RSVP to obtain the number of next hops from routing
and to be notified when that number changes. The interface between
routing and RSVP is purely an implementation issue. Since RSVP
[RFC2205] describes a reference routing interface, a version of the
Berger, et al. [Page 15]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
RSVP/routing interface updated to provide number of next hop
information is presented. See [RFC2205] for previously defined
parameters and function description.
o Route Query
Mcast_Route_Query( [ SrcAddress, ] DestAddress,
Notify_flag )
-> [ IncInterface, ] OutInterface_list,
NHops_list
o Route Change Notification
Mcast_Route_Change( ) -> [ SrcAddress, ] DestAddress,
[ IncInterface, ] OutInterface_list,
NHops_list
NHops_list provides the number of multicast group members
reachable via each OutInterface_list entry.
3.7. 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 [RFC2205], 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 class
can only be issued in response to the MESSAGE_ID object, there are no
possible issues with this class or Ack messages.
4. Summary Refresh Extension
The summary refresh extension enables the refreshing of RSVP state
without the transmission of standard Path or Resv messages. The
benefits of the described extension are that it reduces the amount of
information that must be transmitted and processed in order to
maintain RSVP state synchronization. Importantly, the described
extension preserves RSVP's ability to handle non-RSVP next hops and
to adjust to changes in routing. This extension cannot be used with
Path or Resv messages that contain any change from previously
transmitted messages, i.e, are trigger messages.
The summary refresh extension builds on the previously defined
MESSAGE_ID extension. Only state that was previously advertised in
Path and Resv messages containing MESSAGE_ID objects can be refreshed
Berger, et al. [Page 16]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
via the summary refresh extension.
The summary refresh extension uses the objects and the ACK message
previously defined as part of the MESSAGE_ID extension, and a new
Srefresh message. The new message carries a list of
Message_Identifier fields corresponding to the Path and Resv trigger
messages that established the state. The Message_Identifier fields
are carried in one of three Srefresh related objects. The three
objects are the MESSAGE_ID LIST object, the MESSAGE_ID SRC_LIST
object, and the MESSAGE_ID MCAST_LIST object.
The MESSAGE_ID LIST object is used to refresh all Resv state, and
Path state of unicast sessions. It is made up of a list of
Message_Identifier fields that were originally advertised in
MESSAGE_ID objects. The other two objects are used to refresh Path
state of multicast sessions. A node receiving a summary refresh for
multicast path state will at times need source and group information.
These two objects provide this information. The objects differ in
the information they contain and how they are sent. Both carry
Message_Identifier fields and corresponding source IP addresses. The
MESSAGE_ID SRC_LIST is sent in messages addressed to the session's
multicast IP address. The MESSAGE_ID MCAST_LIST object adds the
group address and is sent in messages addressed to the RSVP next hop.
The MESSAGE_ID MCAST_LIST may only used on point-to-point links.
An RSVP node receiving an Srefresh message, matches each listed
Message_Identifier field with installed Path or Resv state. All
matching state is updated as if a normal RSVP refresh message has
been received. If matching state cannot be found, then the Srefresh
message sender is notified via a refresh NACK.
A refresh NACK is sent via the MESSAGE_ID_NACK object. As described
in the previous section, the rules for sending a MESSAGE_ID_NACK
object are the same as for sending a MESSAGE_ID_ACK object. This
includes sending MESSAGE_ID_NACK object both piggy-backed in
unrelated RSVP messages or in RSVP ACK messages.
Nodes supporting the described extension can advertise their support
and detect if an RSVP neighbor also supports the extension. This is
accomplished via a flag in the MESSAGE_ID and MESSAGE_ID_ACK objects.
Berger, et al. [Page 17]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
4.1. MESSAGE_ID LIST, SRC_LIST and MCAST_LIST Objects
MESSAGE_ID LIST object
MESSAGE_ID_ACK Class = TBD (Value to be assigned by IANA of form
0bbbbbbb)
Class = MESSAGE_ID_LIST 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 | Epoch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message_Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| : |
// : //
| : |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message_Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flags: 8 bits
No flags are currently defined. This field MUST be zero on
transmission and ignored on receipt.
Epoch: 24 bits
The Epoch field from the MESSAGE_ID object corresponding to the
trigger message that advertised the state being refreshed.
Message_Identifier: 32 bits
The Message_Identifier field from the MESSAGE_ID object
corresponding to the trigger message that advertised the state
being refreshed. A variable number of Message_Identifiers may
be included.
Berger, et al. [Page 18]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
MESSAGE_ID SRC_LIST object
Class = MESSAGE_ID_LIST 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Epoch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source_ |
| Message_Identifier_Tuple |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| : |
// : //
| : |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source_ |
| Message_Identifier_Tuple |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where a Source_Message_Identifier_Tuple consists of:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message_Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source_IP_Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flags: 8 bits
No flags are currently defined. This field MUST be zero on
transmission and ignored on receipt.
Epoch: 24 bits
The Epoch field from the MESSAGE_ID object corresponding to the
trigger message that advertised the state being refreshed.
Message_Identifier: 32 bits
The Message_Identifier field from the MESSAGE_ID object
corresponding to the trigger message that advertised the Path
state being refreshed. A variable number of
Message_Identifiers may be included. Each Message_Identifier
MUST be followed by the source IP address corresponding to the
sender of the Path state being refreshed.
Berger, et al. [Page 19]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
Source_IP_Address: 32 bits
The IP address corresponding to the sender of the Path state
being refreshed.
MESSAGE_ID MCAST_LIST object
Class = MESSAGE_ID_LIST Class, C_Type = 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Epoch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Multicast_ |
| Message_Identifier_ |
| Tuple |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| : |
// : //
| : |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Multicast_ |
| Message_Identifier_ |
| Tuple |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where a Multicast_Message_Identifier_Tuple consists of:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message_Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source_IP_Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination_IP_Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flags: 8 bits
No flags are currently defined. This field MUST be zero on
transmission and ignored on receipt.
Epoch: 24 bits
The Epoch field from the MESSAGE_ID object corresponding to the
trigger message that advertised the state being refreshed.
Berger, et al. [Page 20]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
Message_Identifier: 32 bits
The Message_Identifier field from the MESSAGE_ID object
corresponding to the trigger message that advertised the Path
state being refreshed. A variable number of
Message_Identifiers may be included. Each Message_Identifier
MUST be followed by the source IP address corresponding to the
sender of the Path state being refreshed, and the destination
IP address of the session.
Source_IP_Address: 32 bits
The IP address corresponding to the sender of the Path state
being refreshed.
Destination_IP_Address: 32 bits
The destination IP address corresponding to the session of the
Path state being refreshed.
4.2. Srefresh Message Format
Srefresh messages carry one or more MESSAGE_ID LIST, MESSAGE_ID
SRC_LIST, and MESSAGE_ID MCAST_LIST objects. MESSAGE_ID LIST and
MESSAGE_ID MCAST_LIST objects MAY be carried in the same Srefresh
message. MESSAGE_ID SRC_LIST can not be combined in Srefresh
messages with the other objects. A single Srefresh message MAY
refresh both Path and Resv state.
Srefresh messages carrying Message_Identifier fields corresponding to
Path state are normally sent with a destination IP address equal to
the address carried in the corresponding SESSION objects. The
destination IP address MAY be set to the RSVP next hop when the next
hop is known to be RSVP capable and either (a) the session is unicast
or (b) the outgoing interface is a point-to-point link. Srefresh
messages carrying Message_Identifier fields corresponding to Resv
state MUST be sent with a destination IP address set to the Resv
state's previous hop.
Srefresh messages sent to a multicast destination, MUST contain
MESSAGE_ID SRC_LIST objects and MUST NOT include any MESSAGE_ID LIST
or MESSAGE_ID MCAST_LIST objects. Srefresh messages sent to the RSVP
next hop MAY contain either or both MESSAGE_ID LIST and MESSAGE_ID
MCAST_LIST objects, but MUST NOT include any MESSAGE_ID SRC_LIST
objects.
The source IP address of an Srefresh message is an address of the
Berger, et al. [Page 21]
Internet Draft draft-ietf-rsvp-refresh-reduct-01.txt October 1999
node that generates the message. The source IP address MUST match
the addressed associate with the MESSAGE_ID objects when they were
included in a standard RSVP message. As previously mentioned, the
source address associate with a MESSAGE_ID object is represented in a
per RSVP message type specific fashion. For messages with RSVP_HOP
objects, such as Path and Resv messages, the address is found in the
RSVP_HOP object. For other messages, such as ResvConf and Bundle
messages, the associated IP address is the source address in the IP
header.
Srefresh messages that are addressed to a session's destination IP
address MUST be sent the Router Alert IP option in their IP headers.
Srefresh messages addressed directly to RSVP neighbors SHOULD NOT be
sent with the Router Alert IP option in their IP headers.
Each Srefresh message MUST occupy exactly one IP datagram. If it
exceeds the MTU, the datagram is fragmented by IP and reassembled at
the recipient node. Srefresh messages MAY be sent within an RSVP
aggregate messages. Although this is not expected since Srefresh
messages can carry a list of Message_Identifier fields within a
single object. Implementations may choose to limit each Srefresh
message to the MTU size of the outgoing link, e.g. 1500 bytes.
The Srefresh message format is:
::= [ ]
|