summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc5974.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc5974.txt')
-rw-r--r--doc/rfc/rfc5974.txt5715
1 files changed, 5715 insertions, 0 deletions
diff --git a/doc/rfc/rfc5974.txt b/doc/rfc/rfc5974.txt
new file mode 100644
index 0000000..c741843
--- /dev/null
+++ b/doc/rfc/rfc5974.txt
@@ -0,0 +1,5715 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) J. Manner
+Request for Comments: 5974 Aalto University
+Category: Experimental G. Karagiannis
+ISSN: 2070-1721 University of Twente/Ericsson
+ A. McDonald
+ Roke
+ October 2010
+
+
+ NSIS Signaling Layer Protocol (NSLP) for Quality-of-Service Signaling
+
+Abstract
+
+ This specification describes the NSIS Signaling Layer Protocol (NSLP)
+ for signaling Quality of Service (QoS) reservations in the Internet.
+ It is in accordance with the framework and requirements developed in
+ NSIS. Together with General Internet Signaling Transport (GIST), it
+ provides functionality similar to RSVP and extends it. The QoS NSLP
+ is independent of the underlying QoS specification or architecture
+ and provides support for different reservation models. It is
+ simplified by the elimination of support for multicast flows. This
+ specification explains the overall protocol approach, describes the
+ design decisions made, and provides examples. It specifies object,
+ message formats, and processing rules.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for examination, experimental implementation, and
+ evaluation.
+
+ This document defines an Experimental Protocol for the Internet
+ community. This document is a product of the Internet Engineering
+ Task Force (IETF). It represents the consensus of the IETF
+ community. It has received public review and has been approved for
+ publication by the Internet Engineering Steering Group (IESG). Not
+ all documents approved by the IESG are a candidate for any level of
+ Internet Standard; see Section 2 of RFC 5741.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc5974.
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 1]
+
+RFC 5974 QoS NSLP October 2010
+
+
+Copyright Notice
+
+ Copyright (c) 2010 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
+ 3. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 6
+ 3.1. Overall Approach . . . . . . . . . . . . . . . . . . . . . 6
+ 3.1.1. Protocol Messages . . . . . . . . . . . . . . . . . . 9
+ 3.1.2. QoS Models and QoS Specifications . . . . . . . . . . 10
+ 3.1.3. Policy Control . . . . . . . . . . . . . . . . . . . . 12
+ 3.2. Design Background . . . . . . . . . . . . . . . . . . . . 13
+ 3.2.1. Soft States . . . . . . . . . . . . . . . . . . . . . 13
+ 3.2.2. Sender and Receiver Initiation . . . . . . . . . . . . 13
+ 3.2.3. Protection against Message Re-ordering and
+ Duplication . . . . . . . . . . . . . . . . . . . . . 14
+ 3.2.4. Explicit Confirmations . . . . . . . . . . . . . . . . 14
+ 3.2.5. Reduced Refreshes . . . . . . . . . . . . . . . . . . 14
+ 3.2.6. Summary Refreshes and Summary Tear . . . . . . . . . . 15
+ 3.2.7. Message Scoping . . . . . . . . . . . . . . . . . . . 15
+ 3.2.8. Session Binding . . . . . . . . . . . . . . . . . . . 16
+ 3.2.9. Message Binding . . . . . . . . . . . . . . . . . . . 16
+ 3.2.10. Layering . . . . . . . . . . . . . . . . . . . . . . . 17
+ 3.2.11. Support for Request Priorities . . . . . . . . . . . . 18
+ 3.2.12. Rerouting . . . . . . . . . . . . . . . . . . . . . . 19
+ 3.2.13. Preemption . . . . . . . . . . . . . . . . . . . . . . 24
+ 3.3. GIST Interactions . . . . . . . . . . . . . . . . . . . . 24
+ 3.3.1. Support for Bypassing Intermediate Nodes . . . . . . . 25
+ 3.3.2. Support for Peer Change Identification . . . . . . . . 25
+ 3.3.3. Support for Stateless Operation . . . . . . . . . . . 26
+ 3.3.4. Priority of Signaling Messages . . . . . . . . . . . . 26
+ 3.3.5. Knowledge of Intermediate QoS-NSLP-Unaware Nodes . . . 26
+ 4. Examples of QoS NSLP Operation . . . . . . . . . . . . . . . . 26
+ 4.1. Sender-Initiated Reservation . . . . . . . . . . . . . . . 27
+ 4.2. Sending a Query . . . . . . . . . . . . . . . . . . . . . 28
+
+
+
+Manner, et al. Experimental [Page 2]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ 4.3. Basic Receiver-Initiated Reservation . . . . . . . . . . . 29
+ 4.4. Bidirectional Reservations . . . . . . . . . . . . . . . . 31
+ 4.5. Aggregate Reservations . . . . . . . . . . . . . . . . . . 33
+ 4.6. Message Binding . . . . . . . . . . . . . . . . . . . . . 34
+ 4.7. Reduced-State or Stateless Interior Nodes . . . . . . . . 38
+ 4.7.1. Sender-Initiated Reservation . . . . . . . . . . . . . 38
+ 4.7.2. Receiver-Initiated Reservation . . . . . . . . . . . . 40
+ 4.8. Proxy Mode . . . . . . . . . . . . . . . . . . . . . . . . 41
+ 5. QoS NSLP Functional Specification . . . . . . . . . . . . . . 42
+ 5.1. QoS NSLP Message and Object Formats . . . . . . . . . . . 42
+ 5.1.1. Common Header . . . . . . . . . . . . . . . . . . . . 42
+ 5.1.2. Message Formats . . . . . . . . . . . . . . . . . . . 44
+ 5.1.3. Object Formats . . . . . . . . . . . . . . . . . . . . 47
+ 5.2. General Processing Rules . . . . . . . . . . . . . . . . . 60
+ 5.2.1. State Manipulation . . . . . . . . . . . . . . . . . . 61
+ 5.2.2. Message Forwarding . . . . . . . . . . . . . . . . . . 62
+ 5.2.3. Standard Message Processing Rules . . . . . . . . . . 62
+ 5.2.4. Retransmissions . . . . . . . . . . . . . . . . . . . 62
+ 5.2.5. Rerouting . . . . . . . . . . . . . . . . . . . . . . 63
+ 5.3. Object Processing . . . . . . . . . . . . . . . . . . . . 65
+ 5.3.1. Reservation Sequence Number (RSN) . . . . . . . . . . 65
+ 5.3.2. Request Identification Information (RII) . . . . . . . 66
+ 5.3.3. BOUND-SESSION-ID . . . . . . . . . . . . . . . . . . . 67
+ 5.3.4. REFRESH-PERIOD . . . . . . . . . . . . . . . . . . . . 67
+ 5.3.5. INFO-SPEC . . . . . . . . . . . . . . . . . . . . . . 68
+ 5.3.6. SESSION-ID-LIST . . . . . . . . . . . . . . . . . . . 70
+ 5.3.7. RSN-LIST . . . . . . . . . . . . . . . . . . . . . . . 71
+ 5.3.8. QSPEC . . . . . . . . . . . . . . . . . . . . . . . . 71
+ 5.4. Message Processing Rules . . . . . . . . . . . . . . . . . 72
+ 5.4.1. RESERVE Messages . . . . . . . . . . . . . . . . . . . 72
+ 5.4.2. QUERY Messages . . . . . . . . . . . . . . . . . . . . 77
+ 5.4.3. RESPONSE Messages . . . . . . . . . . . . . . . . . . 78
+ 5.4.4. NOTIFY Messages . . . . . . . . . . . . . . . . . . . 79
+ 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 80
+ 6.1. QoS NSLP Message Type . . . . . . . . . . . . . . . . . . 81
+ 6.2. NSLP Message Objects . . . . . . . . . . . . . . . . . . . 81
+ 6.3. QoS NSLP Binding Codes . . . . . . . . . . . . . . . . . . 82
+ 6.4. QoS NSLP Error Classes and Error Codes . . . . . . . . . . 82
+ 6.5. QoS NSLP Error Source Identifiers . . . . . . . . . . . . 83
+ 6.6. NSLP IDs and Router Alert Option Values . . . . . . . . . 83
+ 7. Security Considerations . . . . . . . . . . . . . . . . . . . 83
+ 7.1. Trust Relationship Model . . . . . . . . . . . . . . . . . 85
+ 7.2. Authorization Model Examples . . . . . . . . . . . . . . . 87
+ 7.2.1. Authorization for the Two-Party Approach . . . . . . . 87
+ 7.2.2. Token-Based Three-Party Approach . . . . . . . . . . . 88
+ 7.2.3. Generic Three-Party Approach . . . . . . . . . . . . . 90
+ 7.3. Computing the Authorization Decision . . . . . . . . . . . 90
+ 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 91
+
+
+
+Manner, et al. Experimental [Page 3]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 91
+ 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 91
+ 10.1. Normative References . . . . . . . . . . . . . . . . . . . 91
+ 10.2. Informative References . . . . . . . . . . . . . . . . . . 91
+ Appendix A. Abstract NSLP-RMF API . . . . . . . . . . . . . . . . 94
+ A.1. Triggers from QOS-NSLP towards RMF . . . . . . . . . . . . 94
+ A.2. Triggers from RMF/QOSM towards QOS-NSLP . . . . . . . . . 96
+ A.3. Configuration Interface . . . . . . . . . . . . . . . . . 99
+ Appendix B. Glossary . . . . . . . . . . . . . . . . . . . . . 100
+
+1. Introduction
+
+ This document defines a Quality of Service (QoS) NSIS Signaling Layer
+ Protocol (NSLP), henceforth referred to as the "QoS NSLP". This
+ protocol establishes and maintains state at nodes along the path of a
+ data flow for the purpose of providing some forwarding resources for
+ that flow. It is intended to satisfy the QoS-related requirements of
+ RFC 3726 [RFC3726]. This QoS NSLP is part of a larger suite of
+ signaling protocols, whose structure is outlined in the NSIS
+ framework [RFC4080]. The abstract NTLP has been developed into a
+ concrete protocol, GIST (General Internet Signaling Transport)
+ [RFC5971]. The QoS NSLP relies on GIST to carry out many aspects of
+ signaling message delivery.
+
+ The design of the QoS NSLP is conceptually similar to RSVP [RFC2205]
+ and uses soft-state peer-to-peer refresh messages as the primary
+ state management mechanism (i.e., state installation/refresh is
+ performed between pairs of adjacent NSLP nodes, rather than in an
+ end-to-end fashion along the complete signaling path). The QoS NSLP
+ extends the set of reservation mechanisms to meet the requirements of
+ RFC 3726 [RFC3726], in particular, support of sender- or receiver-
+ initiated reservations, as well as a type of bidirectional
+ reservation and support of reservations between arbitrary nodes,
+ e.g., edge-to-edge, end-to-access, etc. On the other hand, there is
+ currently no support for IP multicast.
+
+ A distinction is made between the operation of the signaling protocol
+ and the information required for the operation of the Resource
+ Management Function (RMF). This document describes the signaling
+ protocol, whilst [RFC5975] describes the RMF-related information
+ carried in the QSPEC (QoS Specification) object in QoS NSLP messages.
+ This is similar to the decoupling between RSVP and the IntServ
+ architecture [RFC1633]. The QSPEC carries information on resources
+ available, resources required, traffic descriptions, and other
+ information required by the RMF.
+
+
+
+
+
+
+Manner, et al. Experimental [Page 4]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ This document is structured as follows. The overall protocol design
+ is outlined in Section 3.1. The operation and use of the QoS NSLP is
+ described in more detail in the rest of Section 3. Section 4 then
+ clarifies the protocol by means of a number of examples. These
+ sections should be read by people interested in the overall protocol
+ capabilities. The functional specification in Section 5 contains
+ more detailed object and message formats and processing rules and
+ should be the basis for implementers. The subsequent sections
+ describe IANA allocation issues and security considerations.
+
+2. Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119 [RFC2119].
+
+ The terminology defined by GIST [RFC5971] applies to this document.
+
+ In addition, the following terms are used:
+
+ QNE: an NSIS Entity (NE), which supports the QoS NSLP.
+
+ QNI: the first node in the sequence of QNEs that issues a reservation
+ request for a session.
+
+ QNR: the last node in the sequence of QNEs that receives a
+ reservation request for a session.
+
+ P-QNE: Proxy-QNE, a node set to reply to messages with the PROXY
+ scope flag set.
+
+ Session: A session defines an association between a QNI and QNR
+ related to a data flow. Intermediate QNEs on the path, the QNI, and
+ the QNR use the same identifier to refer to the state stored for the
+ association. The same QNI and QNR may have more than one session
+ active at any one time.
+
+ Session Identification (SESSION-ID, SID): This is a cryptographically
+ random and (probabilistically) globally unique identifier of the
+ application-layer session that is associated with a certain flow.
+ Often, there will only be one data flow for a given session, but in
+ mobility/multihoming scenarios, there may be more than one, and they
+ may be differently routed [RFC4080].
+
+ Source or message source: The one of two adjacent NSLP peers that is
+ sending a signaling message (maybe the upstream or the downstream
+ peer). Note that this is not necessarily the QNI.
+
+
+
+
+Manner, et al. Experimental [Page 5]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ QoS NSLP operation state: State used/kept by the QoS NSLP processing
+ to handle messaging aspects.
+
+ QoS reservation state: State used/kept by the Resource Management
+ Function to describe reserved resources for a session.
+
+ Flow ID: This is essentially the Message Routing Information (MRI) in
+ GIST for path-coupled signaling.
+
+ Figure 1 shows the components that have a role in a QoS NSLP
+ signaling session. The flow sender and receiver would in most cases
+ be part of the QNI and QNR nodes. Yet, these may be separate nodes,
+ too.
+
+ QoS NSLP nodes
+ IP address (QoS-unaware NSIS nodes are IP address
+ = Flow not shown) = Flow
+ Source | | | Destination
+ Address | | | Address
+ V V V
+ +--------+ Data +------+ +------+ +------+ +--------+
+ | Flow |-------|------|------|------|-------|------|---->| Flow |
+ | Sender | Flow | | | | | | |Receiver|
+ +--------+ | QNI | | QNE | | QNR | +--------+
+ | | | | | |
+ +------+ +------+ +------+
+ =====================>
+ <=====================
+ Signaling
+ Flow
+
+ Figure 1: Components of the QoS NSLP Architecture
+
+ A glossary of terms and abbreviations used in this document can be
+ found in Appendix B.
+
+3. Protocol Overview
+
+3.1. Overall Approach
+
+ This section presents a logical model for the operation of the QoS
+ NSLP and associated provisioning mechanisms within a single node.
+ The model is shown in Figure 2.
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 6]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ +-----------------+
+ | Local |
+ | Applications or |
+ |Management (e.g.,|
+ | for aggregates) |
+ +-----------------+
+ ^
+ V
+ V
+ +----------+ +----------+ +---------+
+ | QoS NSLP | | Resource | | Policy |
+ |Processing|<<<<<<>>>>>>>|Management|<<<>>>| Control |
+ +----------+ +----------+ +---------+
+ . ^ | * ^
+ | V . * ^
+ +----------+ * ^
+ | NTLP | * ^
+ |Processing| * V
+ +----------+ * V
+ | | * V
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ . . * V
+ | | * .............................
+ . . * . Traffic Control .
+ | | * . +---------+.
+ . . * . |Admission|.
+ | | * . | Control |.
+ +----------+ +------------+ . +---------+.
+ <-.-| Input | | Outgoing |-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.->
+ | Packet | | Interface | .+----------+ +---------+.
+ ===>|Processing|====| Selection |===.| Packet |====| Packet |.==>
+ | | |(Forwarding)| .|Classifier| Scheduler|.
+ +----------+ +------------+ .+----------+ +---------+.
+ .............................
+ <.-.-> = signaling flow
+ =====> = data flow (sender --> receiver)
+ <<<>>> = control and configuration operations
+ ****** = routing table manipulation
+
+ Figure 2: QoS NSLP in a Node
+
+ This diagram shows an example implementation scenario where QoS
+ conditioning is performed on the output interface. However, this
+ does not limit the possible implementations. For example, in some
+ cases, traffic conditioning may be performed on the incoming
+ interface, or it may be split over the input and output interfaces.
+
+
+
+
+
+Manner, et al. Experimental [Page 7]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Also, the interactions with the Policy Control component may be more
+ complex, involving interaction with the Resource Management Function,
+ and the AAA infrastructure.
+
+ From the perspective of a single node, the request for QoS may result
+ from a local application request or from processing an incoming QoS
+ NSLP message. The request from a local application includes not only
+ user applications but also network management and the policy control
+ module. For example, a request could come from multimedia
+ applications, initiate a tunnel to handle an aggregate, interwork
+ with some other reservation protocol (such as RSVP), and contain an
+ explicit teardown triggered by a AAA policy control module. In this
+ sense, the model does not distinguish between hosts and routers.
+
+ Incoming messages are captured during input packet processing and
+ handled by GIST. Only messages related to QoS are passed to the QoS
+ NSLP. GIST may also generate triggers to the QoS NSLP (e.g.,
+ indications that a route change has occurred). The QoS request is
+ handled by the RMF, which coordinates the activities required to
+ grant and configure the resource. It also handles policy-specific
+ aspects of QoS signaling.
+
+ The grant processing involves two local decision modules, 'policy
+ control' and 'admission control'. Policy control determines whether
+ the user is authorized to make the reservation. Admission control
+ determines whether the network of the node has sufficient available
+ resources to supply the requested QoS. If both checks succeed,
+ parameters are set in the packet classifier and in the link-layer
+ interface (e.g., in the packet scheduler) to obtain the desired QoS.
+ Error notifications are passed back to the request originator. The
+ Resource Management Function may also manipulate the forwarding
+ tables at this stage to select (or at least pin) a route; this must
+ be done before interface-dependent actions are carried out (including
+ sending outgoing messages over any new route), and is in any case
+ invisible to the operation of the protocol.
+
+ Policy control is expected to make use of the authentication
+ infrastructure or the authentication protocols external to the node
+ itself. Some discussion can be found in a separate document on
+ authorization issues [qos-auth]. More generally, the processing of
+ policy and Resource Management Functions may be outsourced to an
+ external node, leaving only 'stubs' co-located with the NSLP node;
+ this is not visible to the protocol operation. A more detailed
+ discussion of authentication and authorization can be found in
+ Section 3.1.3.
+
+
+
+
+
+
+Manner, et al. Experimental [Page 8]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Admission control, packet scheduling, and any part of policy control
+ beyond simple authorization have to be implemented using specific
+ definitions for types and levels of QoS. A key assumption is made
+ that the QoS NSLP is independent of the QoS parameters (e.g., IntServ
+ service elements). These are captured in a QoS model and interpreted
+ only by the resource management and associated functions, and are
+ opaque to the QoS NSLP itself. QoS models are discussed further in
+ Section 3.1.2.
+
+ The final stage of processing for a resource request is to indicate
+ to the QoS NSLP protocol processing that the required resources have
+ been configured. The QoS NSLP may generate an acknowledgment message
+ in one direction, and may forward the resource request in the other.
+ Message routing is carried out by the GIST module. Note that while
+ Figure 2 shows a unidirectional data flow, the signaling messages can
+ pass in both directions through the node, depending on the particular
+ message and orientation of the reservation.
+
+3.1.1. Protocol Messages
+
+ The QoS NSLP uses four message types:
+
+ RESERVE: The RESERVE message is the only message that manipulates QoS
+ NSLP reservation state. It is used to create, refresh, modify, and
+ remove such state. The result of a RESERVE message is the same
+ whether a message is received once or many times.
+
+ QUERY: A QUERY message is used to request information about the data
+ path without making a reservation. This functionality can be used to
+ make reservations or to support certain QoS models. The information
+ obtained from a QUERY may be used in the admission control process of
+ a QNE (e.g., in case of measurement-based admission control). Note
+ that a QUERY does not change existing reservation state.
+
+ RESPONSE: The RESPONSE message is used to provide information about
+ the result of a previous QoS NSLP message. This includes explicit
+ confirmation of the state manipulation signaled in the RESERVE
+ message, and the response to a QUERY message or an error code if the
+ QNE or QNR is unable to provide the requested information or if the
+ response is negative. The RESPONSE message does not cause any
+ reservation state to be installed or modified.
+
+ NOTIFY: NOTIFY messages are used to convey information to a QNE.
+ They differ from RESPONSE messages in that they are sent
+ asynchronously and need not refer to any particular state or
+ previously received message. The information conveyed by a NOTIFY
+
+
+
+
+
+Manner, et al. Experimental [Page 9]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ message is typically related to error conditions. Examples would be
+ notification to an upstream peer about state being torn down or
+ notification when a reservation has been preempted.
+
+ QoS NSLP messages are sent peer-to-peer. This means that a QNE
+ considers its adjacent upstream or downstream peer to be the source
+ of each message.
+
+ Each protocol message has a common header which indicates the message
+ type and contains various flag bits. Message formats are defined in
+ Section 5.1.2. Message processing rules are defined in Section 5.4.
+
+ QoS NSLP messages contain three types of objects:
+
+ 1. Control Information: Control information objects carry general
+ information for the QoS NSLP processing, such as sequence numbers
+ or whether a response is required.
+
+ 2. QoS specifications (QSPECs): QSPEC objects describe the actual
+ resources that are required and depend on the QoS model being
+ used. Besides any resource description, they may also contain
+ other control information used by the RMF's processing.
+
+ 3. Policy objects: Policy objects contain data used to authorize the
+ reservation of resources.
+
+ Object formats are defined in Section 5.1.3. Object processing rules
+ are defined in Section 5.3.
+
+3.1.2. QoS Models and QoS Specifications
+
+ The QoS NSLP provides flexibility over the exact patterns of
+ signaling messages that are exchanged. The decoupling of QoS NSLP
+ and QSPEC allows the QoS NSLP to be ignorant about the ways in which
+ traffic, resources, etc., are described, and it can treat the QSPEC
+ as an opaque object. Various QoS models can be designed, and these
+ do not affect the specification of the QoS NSLP protocol. Only the
+ RMF specific to a given QoS model will need to interpret the QSPEC.
+ The Resource Management Function (RMF) reserves resources for each
+ flow.
+
+ The QSPEC fulfills a similar purpose to the TSpec, RSpec, and AdSpec
+ objects used with RSVP and specified in RFC 2205 [RFC2205] and RFC
+ 2210 [RFC2210]. At each QNE, the content of the QSPEC is interpreted
+ by the Resource Management Function and the Policy Control Function
+ for the purposes of traffic and policy control (including admission
+ control and configuration of the packet classifier and scheduler).
+
+
+
+
+Manner, et al. Experimental [Page 10]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The QoS NSLP does not mandate any particular behavior for the RMF,
+ instead providing interoperability at the signaling-protocol level
+ whilst leaving the validation of RMF behavior to contracts external
+ to the protocol itself. The RMF may make use of various elements
+ from the QoS NSLP message, not only the QSPEC object.
+
+ Still, this specification assumes that resource sharing is possible
+ between flows with the same SESSION-ID that originate from the same
+ QNI or between flows with a different SESSION-ID that are related
+ through the BOUND-SESSION-ID object. For flows with the same
+ SESSION-ID, resource sharing is only applicable when the existing
+ reservation is not just replaced (which is indicated by the REPLACE
+ flag in the common header). We assume that the QoS model supports
+ resource sharing between flows. A QoS Model may elect to implement a
+ more general behavior of supporting relative operations on existing
+ reservations, such as ADDING or SUBTRACTING a certain amount of
+ resources from the current reservation. A QoS Model may also elect
+ to allow resource sharing more generally, e.g., between all flows
+ with the same Differentiated Service Code Point (DSCP).
+
+ The QSPEC carries a collection of objects that can describe QoS
+ specifications in a number of different ways. A generic template is
+ defined in [RFC5975] and contains object formats for generally useful
+ elements of the QoS description, which is designed to ensure
+ interoperability when using the basic set of objects. A QSPEC
+ describing the resources requested will usually contain objects that
+ need to be understood by all implementations, and it can also be
+ enhanced with additional objects specific to a QoS model to provide a
+ more exact definition to the RMF, which may be better able to use its
+ specific resource management mechanisms (which may, e.g., be link
+ specific) as a result.
+
+ A QoS Model defines the behavior of the RMF, including inputs and
+ outputs, and how QSPEC information is used to describe resources
+ available, resources required, traffic descriptions, and control
+ information required by the RMF. A QoS Model also describes the
+ minimum set of parameters QNEs should use in the QSPEC when signaling
+ about this QoS Model.
+
+ QoS Models may be local (private to one network), implementation/
+ vendor specific, or global (implementable by different networks and
+ vendors). All QSPECs should follow the design of the QSPEC template.
+
+ The definition of a QoS model may also have implications on how local
+ behavior should be implemented in the areas where the QoS NSLP gives
+ freedom to implementers. For example, it may be useful to identify
+ recommended behavior for how a forwarded RESERVE message relates to a
+ received one, or for when additional signaling sessions should be
+
+
+
+Manner, et al. Experimental [Page 11]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ started based on existing sessions, such as required for aggregate
+ reservations. In some cases, suggestions may be made on whether
+ state that may optionally be retained should be held in particular
+ scenarios. A QoS model may specify reservation preemption, e.g., an
+ incoming resource request may cause removal of an earlier established
+ reservation.
+
+3.1.3. Policy Control
+
+ Getting access to network resources, e.g., network access in general
+ or access to QoS, typically involves some kind of policy control.
+ One example of this is authorization of the resource requester.
+ Policy control for QoS NSLP resource reservation signaling is
+ conceptually organized as illustrated below in Figure 3.
+
+ +-------------+
+ | Policy |
+ | Decision |
+ | Point (PDP) |
+ +------+------+
+ |
+ /-\-----+-----/\
+ //// \\\\
+ || ||
+ | Policy transport |
+ || ||
+ \\\\ ////
+ \-------+------/
+ |
+ +-------------+ QoS signaling +------+------+
+ | Entity |<==============>| QNE = Policy|<=========>
+ | requesting | Data Flow | Enforcement |
+ | resource |----------------|-Point (PEP)-|---------->
+ +-------------+ +-------------+
+
+ Figure 3: Policy Control with the QoS NSLP Signaling
+
+ From the QoS NSLP point of view, the policy control model is
+ essentially a two-party model between neighboring QNEs. The actual
+ policy decision may depend on the involvement of a third entity (the
+ Policy Decision Point, PDP), but this happens outside of the QoS NSLP
+ protocol by means of existing policy infrastructure (Common Open
+ Policy Service (COPS), Diameter, etc.). The policy control model for
+ the entire end-to-end chain of QNEs is therefore one of transitivity,
+ where each of the QNEs exchanges policy information with its QoS NSLP
+ policy peer.
+
+
+
+
+
+Manner, et al. Experimental [Page 12]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The authorization of a resource request often depends on the identity
+ of the entity making the request. Authentication may be required.
+ The GIST channel security mechanisms provide one way of
+ authenticating the QoS NSLP peer that sent the request, and so may be
+ used in making the authorization decision.
+
+ Additional information might also be provided in order to assist in
+ making the authorization decision. This might include alternative
+ methods of authenticating the request.
+
+ The QoS NSLP does not currently contain objects to carry
+ authorization information. At the time of writing, there exists a
+ separate individual work [NSIS-AUTH] that defines this functionality
+ for the QoS NSLP and the NAT and firewall (NATFW) NSLP.
+
+ It is generally assumed that policy enforcement is likely to
+ concentrate on border nodes between administrative domains. This may
+ mean that nodes within the domain are "Policy-Ignorant Nodes" that
+ perform no per-request authentication or authorization, relying on
+ the border nodes to perform the enforcement. In such cases, the
+ policy management between ingress and egress edge of a domain relies
+ on the internal chain of trust between the nodes in the domain. If
+ this is not acceptable, a separate signaling session can be set up
+ between the ingress and egress edge nodes in order to exchange policy
+ information.
+
+3.2. Design Background
+
+ This section presents some of the key functionality behind the
+ specification of the QoS NSLP.
+
+3.2.1. Soft States
+
+ The NSIS protocol suite takes a soft-state approach to state
+ management. This means that reservation state in QNEs must be
+ periodically refreshed. The frequency with which state installation
+ is refreshed is expressed in the REFRESH-PERIOD object. This object
+ contains a value in milliseconds indicating how long the state that
+ is signaled for remains valid. Maintaining the reservation beyond
+ this lifetime can be done by sending a RESERVE message periodically.
+
+3.2.2. Sender and Receiver Initiation
+
+ The QoS NSLP supports both sender-initiated and receiver-initiated
+ reservations. For a sender-initiated reservation, RESERVE messages
+ travel in the same direction as the data flow that is being signaled
+ for (the QNI is at the side of the source of the data flow). For a
+
+
+
+
+Manner, et al. Experimental [Page 13]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ receiver-initiated reservation, RESERVE messages travel in the
+ opposite direction (the QNI is at the side of the receiver of the
+ data flow).
+
+ Note: these definitions follow the definitions in Section 3.3.1 of
+ RFC 4080 [RFC4080]. The main issue is about which node is in charge
+ of requesting and maintaining the resource reservation. In a
+ receiver-initiated reservation, even though the sender sends the
+ initial QUERY, the receiver is still in charge of making the actual
+ resource request and maintaining the reservation.
+
+3.2.3. Protection against Message Re-ordering and Duplication
+
+ RESERVE messages affect the installed reservation state. Unlike
+ NOTIFY, QUERY, and RESPONSE messages, the order in which RESERVE
+ messages are received influences the eventual reservation state that
+ will be stored at a QNE; that is, the most recent RESERVE message
+ replaces the current reservation. Therefore, in order to protect
+ against RESERVE message re-ordering or duplication, the QoS NSLP uses
+ a Reservation Sequence Number (RSN). The RSN has local significance
+ only, i.e., between a QNE and its downstream peers.
+
+3.2.4. Explicit Confirmations
+
+ A QNE may require a confirmation that the end-to-end reservation is
+ in place, or a reply to a query along the path. For such requests,
+ it must be able to keep track of which request each response refers
+ to. This is supported by including a Request Identification
+ Information (RII) object in a QoS NSLP message.
+
+3.2.5. Reduced Refreshes
+
+ For scalability, the QoS NSLP supports an abbreviated form of refresh
+ RESERVE message. In this case, the refresh RESERVE references the
+ reservation using the RSN and the SESSION-ID, and does not include
+ the full reservation specification (including QSPEC). By default,
+ state refresh should be performed with reduced refreshes in order to
+ save bytes during transmission. Stateless QNEs will require full
+ refresh since they do not store the whole reservation information.
+
+ If the stateful QNE does not support reduced refreshes, or there is a
+ mismatch between the local and received RSN, the stateful QNE must
+ reply with a RESPONSE carrying an INFO-SPEC indicating the error.
+ Furthermore, the QNE must stop sending reduced refreshes to this peer
+ if the error indicates that support for this feature is lacking.
+
+
+
+
+
+
+Manner, et al. Experimental [Page 14]
+
+RFC 5974 QoS NSLP October 2010
+
+
+3.2.6. Summary Refreshes and Summary Tear
+
+ For limiting the number of individual messages, the QoS NSLP supports
+ summary refresh and summary tear messages. When sending a refreshing
+ RESERVE for a certain (primary) session, a QNE may include a SESSION-
+ ID-LIST object where the QNE indicates (secondary) sessions that are
+ also refreshed. An RSN-LIST object must also be added. The SESSION-
+ IDs and RSNs are stacked in the objects such that the index in both
+ stacks refer to the same reservation state, i.e., the SESSION-ID and
+ RSN at index i in both objects refers to the same session. If the
+ receiving stateful QNE notices unknown SESSION-IDs or a mismatch with
+ RSNs for a session, it will reply back to the upstream stateful QNE
+ with an error.
+
+ In order to tear down several sessions at once, a QNE may include
+ SESSION-ID-LIST and RSN-LIST objects in a tearing reserve. The
+ downstream stateful QNE must then also tear down the other sessions
+ indicated. The downstream stateful QNE must silently ignore any
+ unknown SESSION-IDs.
+
+ GIST provides a SII-Handle for every downstream session. The SII-
+ Handle identifies a peer and should be the same for all sessions
+ whose downstream peer is the same. The QoS NSLP uses this
+ information to decide whether summary refresh messages can be sent or
+ when a summary tear is possible.
+
+3.2.7. Message Scoping
+
+ A QNE may use local policy when deciding whether to propagate a
+ message or not. For example, the local policy can define/configure
+ that a QNE is, for a particular session, a QNI and/or a QNR. The QoS
+ NSLP also includes an explicit mechanism to restrict message
+ propagation by means of a scoping mechanism.
+
+ For a RESERVE or a QUERY message, two scoping flags limit the part of
+ the path on which state is installed on the downstream nodes that can
+ respond. When the SCOPING flag is set to zero, it indicates that the
+ scope is "whole path" (default). When set to one, the scope is
+ "single hop". When the PROXY scope flag is set, the path is
+ terminated at a pre-defined Proxy QNE (P-QNE). This is similar to
+ the Localized RSVP [lrsvp].
+
+ The propagation of a RESPONSE message is limited by the RII object,
+ which ensures that it is not forwarded back along the path further
+ than the node that requested the RESPONSE.
+
+
+
+
+
+
+Manner, et al. Experimental [Page 15]
+
+RFC 5974 QoS NSLP October 2010
+
+
+3.2.8. Session Binding
+
+ Session binding is defined as the enforcement of a relation between
+ different QoS NSLP sessions (i.e., signaling flows with different
+ SESSION-IDs (SIDs) as defined in GIST [RFC5971]).
+
+ Session binding indicates a unidirectional dependency relation
+ between two or more sessions by including a BOUND-SESSION-ID object.
+ A session with SID_A (the binding session) can express its
+ unidirectional dependency relation to another session with SID_B (the
+ bound session) by including a BOUND-SESSION-ID object containing
+ SID_B in its messages.
+
+ The concept of session binding is used to indicate the unidirectional
+ dependency relation between the end-to-end session and the aggregate
+ session in case of aggregate reservations. In case of bidirectional
+ reservations, it is used to express the unidirectional dependency
+ relation between the sessions used for forward and reverse
+ reservation. Typically, the dependency relation indicated by session
+ binding is purely informative in nature and does not automatically
+ trigger any implicit action in a QNE. A QNE may use the dependency
+ relation information for local resource optimization or to explicitly
+ tear down reservations that are no longer useful. However, by using
+ an explicit binding code (see Section 5.1.3.4), it is possible to
+ formalize this dependency relation, meaning that if the bound session
+ (e.g., session with SID_B) is terminated, the binding session (e.g.,
+ the session with SID_A) must be terminated also.
+
+ A message may include more than one BOUND-SESSION-ID object. This
+ may happen, e.g., in certain aggregation and bidirectional
+ reservation scenarios, where an end-to-end session has a
+ unidirectional dependency relation with an aggregate session and at
+ the same time it has a unidirectional dependency relation with
+ another session used for the reverse path.
+
+3.2.9. Message Binding
+
+ QoS NSLP supports binding of messages in order to allow for
+ expressing dependencies between different messages. The message
+ binding can indicate either a unidirectional or bidirectional
+ dependency relation between two messages by including the MSG-ID
+ object in one message ("binding message") and the BOUND-MSG-ID object
+ in the other message ("bound message"). The unidirectional
+ dependency means that only RESERVE messages are bound to each other
+ whereas a bidirectional dependency means that there is also a
+ dependency for the related RESPONSE messages. The message binding
+ can be used to speed up signaling by starting two signaling exchanges
+ simultaneously that are synchronized later by using message IDs.
+
+
+
+Manner, et al. Experimental [Page 16]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ This can be used as an optimization technique, for example, in
+ scenarios where aggregate reservations are used. Section 4.6
+ provides more details.
+
+3.2.10. Layering
+
+ The QoS NSLP supports layered reservations. Layered reservations may
+ occur when certain parts of the network (domains) implement one or
+ more local QoS models or when they locally apply specific transport
+ characteristics (e.g., GIST unreliable transfer mode instead of
+ reliable transfer mode). They may also occur when several per-flow
+ reservations are locally combined into an aggregate reservation.
+
+3.2.10.1. Local QoS Models
+
+ A domain may have local policies regarding QoS model implementation,
+ i.e., it may map incoming traffic to its own locally defined QoS
+ models. The QSPEC allows this functionality, and the operation is
+ transparent to the QoS NSLP. The use of local QoS models within a
+ domain is performed in the RMF.
+
+3.2.10.2. Local Control Plane Properties
+
+ The way signaling messages are handled is mainly determined by the
+ parameters that are sent over the GIST-NSLP API and by the domain
+ internal configuration. A domain may have a policy to implement
+ local transport behavior. It may, for instance, elect to use an
+ unreliable transport locally in the domain while still keeping end-
+ to-end reliability intact.
+
+ The QoS NSLP supports this situation by allowing two sessions to be
+ set up for the same reservation. The local session has the desired
+ local transport properties and is interpreted in internal QNEs. This
+ solution poses two requirements: the end-to-end session must be able
+ to bypass intermediate nodes, and the egress QNE needs to bind both
+ sessions together. Bypassing intermediate nodes is achieved with
+ GIST. The local session and the end-to-end session are bound at the
+ egress QNE by means of the BOUND-SESSION-ID object.
+
+3.2.10.3. Aggregate Reservations
+
+ In some cases, it is desirable to create reservations for an
+ aggregate, rather than on a per-flow basis, in order to reduce the
+ amount of reservation state needed as well as the processing load for
+ signaling messages. Note that the QoS NSLP does not specify how
+ reservations need to be combined in an aggregate or how end-to-end
+ properties need to be computed, but only provides signaling support
+ for aggregate reservations.
+
+
+
+Manner, et al. Experimental [Page 17]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The essential difference with the layering approaches described in
+ Sections 3.2.10.1 and 3.2.10.2 is that the aggregate reservation
+ needs a MRI that describes all traffic carried in the aggregate
+ (e.g., a DSCP in case of IntServ over Diffserv). The need for a
+ different MRI mandates the use of two different sessions, as
+ described in Section 3.2.10.2 and in the RSVP aggregation solution in
+ RFC 3175 [RFC3175].
+
+ Edge QNEs of the aggregation domain that want to maintain some end-
+ to-end properties may establish a peering relation by sending the
+ end-to-end message transparently over the domain (using the
+ intermediate node bypass capability described above). Updating the
+ end-to-end properties in this message may require some knowledge of
+ the aggregated session (e.g., for updating delay values). For this
+ purpose, the end-to-end session contains a BOUND-SESSION-ID carrying
+ the SESSION-ID of the aggregate session.
+
+3.2.11. Support for Request Priorities
+
+ This specification acknowledges the fact that in some situations,
+ some messages or reservations may be more important than others, and
+ therefore it foresees mechanisms to give these messages or
+ reservations priority.
+
+ Priority of certain signaling messages over others may be required in
+ mobile scenarios when a message loss during call setup is less
+ harmful than during handover. This situation only occurs when GIST
+ or QoS NSLP processing is the congested part or scarce resource.
+
+ Priority of certain reservations over others may be required when QoS
+ resources are oversubscribed. In that case, existing reservations
+ may be preempted in order to make room for new higher-priority
+ reservations. A typical approach to deal with priority and
+ preemption is through the specification of a setup priority and
+ holding priority for each reservation. The Resource Management
+ Function at each QNE then keeps track of the resource consumption at
+ each priority level. Reservations are established when resources, at
+ their setup priority level, are still available. They may cause
+ preemption of reservations with a lower holding priority than their
+ setup priority.
+
+ Support of reservation priority is a QSPEC parameter and therefore
+ outside the scope of this specification. The GIST specification
+ provides a mechanism to support a number of levels of message
+ priority that can be requested over the NSLP-GIST API.
+
+
+
+
+
+
+Manner, et al. Experimental [Page 18]
+
+RFC 5974 QoS NSLP October 2010
+
+
+3.2.12. Rerouting
+
+ The QoS NSLP needs to adapt to route changes in the data path. This
+ assumes the capability to detect rerouting events, create a QoS
+ reservation on the new path, and optionally tear down reservations on
+ the old path.
+
+ From an NSLP perspective, rerouting detection can be performed in two
+ ways. It can either come through NetworkNotification from GIST, or
+ from information seen at the NSLP. In the latter case, the QoS NSLP
+ node is able to detect changes in its QoS NSLP peers by keeping track
+ of a Source Identification Information (SII) handle that provides
+ information similar in nature to the RSVP_HOP object described in RFC
+ 2205 [RFC2205]. When a RESERVE message with an existing SESSION-ID
+ and a different SII is received, the QNE knows its upstream or
+ downstream peer has changed, for sender-oriented and receiver-
+ oriented reservations, respectively.
+
+ Reservation on the new path happens when a RESERVE message arrives at
+ the QNE beyond the point where the old and new paths diverge. If the
+ QoS NSLP suspects that a reroute has occurred, then a full RESERVE
+ message (including the QSPEC) would be sent. A refreshing RESERVE
+ (with no QSPEC) will be identified as an error by a QNE on the new
+ path, which does not have the reservation installed (i.e., it was not
+ on the old path) or which previously had a different previous-hop
+ QNE. It will send back an error message that results in a full
+ RESERVE message being sent. Rapid recovery at the NSLP layer
+ therefore requires short refresh periods. Detection before the next
+ RESERVE message arrives is only possible at the IP layer or through
+ monitoring of GIST peering relations (e.g., by monitoring the Time to
+ Live (TTL), i.e., the number of GIST hops between NSLP peers, or
+ observing the changes in the outgoing interface towards GIST peer).
+ These mechanisms can provide implementation-specific optimizations
+ and are outside the scope of this specification.
+
+ When the QoS NSLP is aware of the route change, it needs to set up
+ the reservation on the new path. This is done by sending a new
+ RESERVE message. If the next QNE is in fact unchanged, then this
+ will be used to refresh/update the existing reservation. Otherwise,
+ it will lead to the reservation being installed on the new path.
+
+ Note that the operation for a receiver-initiated reservation session
+ differs a bit from the above description. If the routing changes in
+ the middle of the path, at some point (i.e., the divergence point)
+ the QNE that notices that its downstream path has changed (indicated
+ by a NetworkNotification from GIST), and it must send a QUERY with
+ the R-flag downstream. The QUERY will be processed as above, and at
+ some point hits a QNE for which the path downstream towards the QNI
+
+
+
+Manner, et al. Experimental [Page 19]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ remains (i.e., the convergence point). This node must then send a
+ full RESERVE upstream to set up the reservation state along the new
+ path. It should not send the QUERY further downstream, since this
+ would have no real use. Similarly, when the QNE that sent the QUERY
+ receives the RESERVE, it should not send the RESERVE further
+ upstream.
+
+ After the reservation on the new path is set up, the branching node
+ may want to tear down the reservation on the old path (sooner than
+ would result from normal soft-state timeout). This functionality is
+ supported by keeping track of the old SII-Handle provided over the
+ GIST API. This handle can be used by the QoS NSLP to route messages
+ explicitly to the next node.
+
+ If the old path is downstream, the QNE can send a tearing RESERVE
+ using the old SII-Handle. If the old path is upstream, the QNE can
+ send a NOTIFY with the code for "Route Change". This is forwarded
+ upstream until it hits a QNE that can issue a tearing RESERVE
+ downstream. A separate document discusses in detail the effect of
+ mobility on the QoS NSLP signaling [NSIS-MOB].
+
+ A QNI or a branch node may wish to keep the reservation on the old
+ branch. For instance, this could be the case when a mobile node has
+ experienced a mobility event and wishes to keep reservation to its
+ old attachment point in case it moves back there. For this purpose,
+ a REPLACE flag is provided in the QoS NSLP common header, which, when
+ not set, indicates that the reservation on the old branch should be
+ kept.
+
+ Note that keeping old reservations affects the resources available to
+ other nodes. Thus, the operator of the access network must make the
+ final decision on whether this behavior is allowed. Also, the QNEs
+ in the access network may add this flag even if the mobile node has
+ not used the flag initially.
+
+ The latency in detecting that a new downstream peer exists or that
+ truncation has happened depends on GIST. The default QUERY message
+ transmission interval is 30 seconds. More details on how NSLPs are
+ able to affect the discovery of new peers or rerouting can be found
+ in the GIST specification.
+
+3.2.12.1. Last Node Behavior
+
+ The design of the QoS NSLP allows reservations to be installed at a
+ subset of the nodes along a path. In particular, usage scenarios
+ include cases where the data flow endpoints do not support the QoS
+ NSLP.
+
+
+
+
+Manner, et al. Experimental [Page 20]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ In the case where the data flow receiver does not support the QoS
+ NSLP, some particular considerations must be given to node discovery
+ and rerouting at the end of the signaling path.
+
+ There are three cases for the last node on the signaling path:
+
+ 1) the last node is the data receiver,
+
+ 2) the last node is a configured proxy for the data receiver, or
+
+ 3) the last node is not the data receiver and is not explicitly
+ configured to act as a signaling proxy on behalf of the data
+ receiver.
+
+ Cases (1) and (2) can be handled by the QoS NSLP itself during the
+ initial path setup, since the QNE knows that it should terminate the
+ signaling. Case (3) requires some assistance from GIST, which
+ provides messages across the API to indicate that no further GIST
+ nodes that support QoS NSLP are present downstream, and that probing
+ of the downstream route change needs to continue once the reservation
+ is installed to detect any changes in this situation.
+
+ Two particular scenarios need to be considered in this third case.
+ In the first, referred to as "Path Extension", rerouting occurs such
+ that an additional QNE is inserted into the signaling path between
+ the old last node and the data receiver, as shown in Figure 4.
+
+ /-------\ Initial route
+ / v
+ /-\
+ /--|B|--\ +-+
+ / \-/ \ |x| = QoS NSLP aware
+ +-+ /-\ +-+
+ ----|A| |D|
+ +-+ \-/ /-\
+ \ +-+ / |x| = QoS NSLP unaware
+ \--|C|--/ \-/
+ +-+
+ \ ^
+ \-------/ Updated route
+
+ Figure 4: Path Extension
+
+ When rerouting occurs, the data path changes from A-B-D to A-C-D.
+ Initially the signaling path ends at A. Despite initially being the
+ last node, node A needs to continue to attempt to send messages
+ downstream to probe for path changes, unless it has been explicitly
+
+
+
+
+Manner, et al. Experimental [Page 21]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ configured as a signaling proxy for the data flow receiver. This is
+ required so that the signaling path change is detected, and C will
+ become the new last QNE.
+
+ In a second case, referred to as "Path Truncation", rerouting occurs
+ such that the QNE that was the last node on the signaling path is no
+ longer on the data path. This is shown in Figure 5.
+
+ /-------\ Initial route
+ / v
+ +-+
+ /--|B|--\ +-+
+ / +-+ \ |x| = QoS NSLP aware
+ +-+ /-\ +-+
+ ----|A| |D|
+ +-+ \-/ /-\
+ \ /-\ / |x| = QoS NSLP unaware
+ \--|C|--/ \-/
+ \-/
+ \ ^
+ \-------/ Updated route
+
+ Figure 5: Path Truncation
+
+ When rerouting occurs, the data path again changes from A-B-D to
+ A-C-D. The signaling path initially ends at B, but this node is not
+ on the new path. In this case, the normal GIST path change detection
+ procedures at A will detect the path change and notify the QoS NSLP.
+ GIST will also notify the signaling application that no downstream
+ GIST nodes supporting the QoS NSLP are present. Node A will take
+ over as the last node on the signaling path.
+
+3.2.12.2. Handling Spurious Route Change Notifications
+
+ The QoS NSLP is notified by GIST (with the NetworkNotification
+ primitive) when GIST believes that a rerouting event may have
+ occurred. In some cases, events that are detected as possible route
+ changes will turn out not to be. The QoS NSLP will not always be
+ able to detect this, even after receiving messages from the 'new'
+ peer.
+
+ As part of the RecvMessage API primitive, GIST provides an SII-Handle
+ that can be used by the NSLP to direct a signaling message to a
+ particular peer. The current SII-Handle will change if the signaling
+ peer changes. However, it is not guaranteed to remain the same after
+ a rerouting event where the peer does not change. Therefore, the QoS
+ NSLP mechanism for reservation maintenance after a route change
+
+
+
+
+Manner, et al. Experimental [Page 22]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ includes robustness mechanisms to avoid accidentally tearing down a
+ reservation in situations where the peer QNE has remained the same
+ after a 'route change' notification from GIST.
+
+ A simple example that illustrates the problem is shown in Figure 6
+ below.
+
+ (1) +-+
+ /-----\ |x| = QoS NSLP aware
+ +-+ /-\ (3) +-+ +-+
+ ----|A| |B|-----|C|----
+ +-+ \-/ +-+ /-\
+ \-----/ |x| = QoS NSLP unaware
+ (2) \-/
+
+ Figure 6: Spurious Reroute Alerting
+
+ In this example, the initial route A-B-C uses links (1) and (3).
+ After link (1) fails, the path is rerouted using links (2) and (3).
+ The set of QNEs along the path is unchanged (it is A-C in both cases,
+ since B does not support the QoS NSLP).
+
+ When the outgoing interface at A has changes, GIST may signal across
+ its API to the NSLP with a NetworkNotification. The QoS NSLP at A
+ will then attempt to repair the path by installing the reservation on
+ the path (2),(3). In this case, however, the old and new paths are
+ the same.
+
+ To install the new reservation, A will send a RESERVE message, which
+ GIST will transport to C (discovering the new next peer as
+ appropriate). The RESERVE also requests a RESPONSE from the QNR.
+ When this RESERVE message is received through the RecvMessage API
+ call from GIST at the QoS NSLP at C, the SII-Handle will be unchanged
+ from its previous communications from A.
+
+ A RESPONSE message will be sent by the QNR, and be forwarded from C
+ to A. This confirms that the reservation was installed on the new
+ path. The SII-Handle passed with the RecvMessage call from GIST to
+ the QoS NSLP will be different to that seen previously, since the
+ interface being used on A has changed.
+
+ At this point, A can attempt to tear down the reservation on the old
+ path. The RESERVE message with the TEAR flag set is sent down the
+ old path by using the GIST explicit routing mechanism and specifying
+ the SII-Handle relating to the 'old' peer QNE.
+
+
+
+
+
+
+Manner, et al. Experimental [Page 23]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ If RSNs were being incremented for each of these RESERVE and RESERVE-
+ with-TEAR messages, the reservation would be torn down at C and any
+ QNEs further along the path. To avoid this, the RSN is used in a
+ special way. The RESERVE down the new path is sent with the new
+ current RSN set to the old RSN plus 2. The RESERVE-with-TEAR down
+ the old path is sent with an RSN set to the new current RSN minus 1.
+ This is the peer from which it was receiving RESERVE messages (see
+ for more details).
+
+3.2.13. Preemption
+
+ The QoS NSLP provides building blocks to implement preemption. This
+ specification does not define how preemption should work, but only
+ provides signaling mechanisms that can be used by QoS models. For
+ example, an INFO-SPEC object can be added to messages to indicate
+ that the signaled session was preempted. A BOUND-SESSION-ID object
+ can carry the Session ID of the flow that caused the preemption of
+ the signaled session. How these are used by QoS models is out of
+ scope of the QoS NSLP specification.
+
+3.3. GIST Interactions
+
+ The QoS NSLP uses GIST for delivery of all its messages. Messages
+ are passed from the NSLP to GIST via an API (defined in Appendix B of
+ [RFC5971]), which also specifies additional information, including an
+ identifier for the signaling application (e.g., 'QoS NSLP'), session
+ identifier, MRI, and an indication of the intended direction (towards
+ data sender or receiver). On reception, GIST provides the same
+ information to the QoS NSLP. In addition to the NSLP message data
+ itself, other meta-data (e.g., session identifier and MRI) can be
+ transferred across this interface.
+
+ The QoS NSLP keeps message and reservation state per session. A
+ session is identified by a Session Identifier (SESSION-ID). The
+ SESSION-ID is the primary index for stored NSLP state and needs to be
+ constant and unique (with a sufficiently high probability) along a
+ path through the network. The QoS NSLP picks a value for Session-ID.
+
+ This value is subsequently used by GIST and the QoS NSLP to refer to
+ this session.
+
+ Currently, the QoS NSLP specification considers mainly the path-
+ coupled MRM. However, extensions may specify how other types of MRMs
+ may be applied in combination with the QoS NSLP.
+
+ When GIST passes the QoS NSLP data to the NSLP for processing, it
+ must also indicate the value of the 'D' (Direction) flag for that
+ message in the MRI.
+
+
+
+Manner, et al. Experimental [Page 24]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The QoS NSLP does not provide any method of interacting with
+ firewalls or Network Address Translators (NATs). It assumes that a
+ basic NAT traversal service is provided by GIST.
+
+3.3.1. Support for Bypassing Intermediate Nodes
+
+ The QoS NSLP may want to restrict the handling of its messages to
+ specific nodes. This functionality is needed to support layering
+ (explained in Section 3.2.10), when only the edge QNEs of a domain
+ process the message. This requires a mechanism at the GIST level
+ (which can be invoked by the QoS NSLP) to bypass intermediate nodes
+ between the edges of the domain.
+
+ The intermediate nodes are bypassed using multiple levels of the
+ router alert option. In that case, internal routers are configured
+ to handle only certain levels of router alerts. This is accomplished
+ by marking this message at the ingress, i.e., modifying the QoS NSLP
+ default NSLPID value to an NSLPID predefined value (see Section 6.6).
+ The egress stops this marking process by reassigning the QoS NSLP
+ default NSLPID value to the original RESERVE message. The exact
+ operation of modifying the NSLPID must be specified in the relevant
+ QoS model specification.
+
+3.3.2. Support for Peer Change Identification
+
+ There are several circumstances where it is necessary for a QNE to
+ identify the adjacent QNE peer, which is the source of a signaling
+ application message. For example, it may be to apply the policy that
+ "state can only be modified by messages from the node that created
+ it" or it might be that keeping track of peer identity is used as a
+ (fallback) mechanism for rerouting detection at the NSLP layer.
+
+ This functionality is implemented in the GIST service interface with
+ SII-handle. As shown in the above example, we assume the SII-
+ handling will support both its own SII and its peer's SII.
+
+ Keeping track of the SII of a certain reservation also provides a
+ means for the QoS NSLP to detect route changes. When a QNE receives
+ a RESERVE referring to existing state but with a different SII, it
+ knows that its upstream peer has changed. It can then use the old
+ SII to initiate a teardown along the old section of the path. This
+ functionality is supported in the GIST service interface when the
+ peer's SII (which is stored on message reception) is passed to GIST
+ upon message transmission.
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 25]
+
+RFC 5974 QoS NSLP October 2010
+
+
+3.3.3. Support for Stateless Operation
+
+ Stateless or reduced-state QoS NSLP operation makes the most sense
+ when some nodes are able to operate in a stateless way at the GIST
+ level as well. Such nodes should not worry about keeping reverse
+ state, message fragmentation and reassembly (at GIST), congestion
+ control, or security associations. A stateless or reduced-state QNE
+ will be able to inform the underlying GIST of this situation. GIST
+ service interface supports this functionality with the Retain-State
+ attribute in the MessageReceived primitive.
+
+3.3.4. Priority of Signaling Messages
+
+ The QoS NSLP will generate messages with a range of performance
+ requirements for GIST. These requirements may result from a
+ prioritization at the QoS NSLP (Section 3.2.11) or from the
+ responsiveness expected by certain applications supported by the QoS
+ NSLP. GIST service interface supports this with the 'priority'
+ transfer attribute.
+
+3.3.5. Knowledge of Intermediate QoS-NSLP-Unaware Nodes
+
+ In some cases, it is useful to know that there are routers along the
+ path where QoS cannot be provided. The GIST service interface
+ supports this by keeping track of IP-TTL and Original-TTL in the
+ RecvMessage primitive. A difference between the two indicates the
+ number of QoS-NSLP-unaware nodes. In this case, the QNE that detects
+ this difference should set the "B" (BREAK) flag. If a QNE receives a
+ QUERY or RESERVE message with the BREAK flag set, and then generates
+ a QUERY, RESERVE, or RESPONSE message, it can set the BREAK flag in
+ those messages. There are however, situations where the egress QNE
+ in a local domain may have some other means to provide QoS [RFC5975].
+ For example, in a local domain that is aware of RMD-QOSM [RFC5977]
+ (or a similar QoS Model) and that uses either NTLP stateless nodes or
+ NSIS-unaware nodes, the end-to-end RESERVE or QUERY message bypasses
+ these NTLP stateless or NSIS-unaware nodes. However, the reservation
+ within the local domain can be signaled by the RMD-QOSM (or a similar
+ QoS Model). In such situations, the "B" (BREAK) flag in the end-to-
+ end RESERVE or QUERY message should not be set by the edges of the
+ local domain.
+
+4. Examples of QoS NSLP Operation
+
+ The QoS NSLP can be used in a number of ways. The examples here give
+ an indication of some of the basic processing. However, they are not
+ exhaustive and do not attempt to cover the details of the protocol
+ processing.
+
+
+
+
+Manner, et al. Experimental [Page 26]
+
+RFC 5974 QoS NSLP October 2010
+
+
+4.1. Sender-Initiated Reservation
+
+ QNI QNE QNE QNR
+ | | | |
+ | RESERVE | | |
+ +--------->| | |
+ | | RESERVE | |
+ | +--------->| |
+ | | | RESERVE |
+ | | +--------->|
+ | | | |
+ | | | RESPONSE |
+ | | |<---------+
+ | | RESPONSE | |
+ | |<---------+ |
+ | RESPONSE | | |
+ |<---------+ | |
+ | | | |
+ | | | |
+
+ Figure 7: Basic Sender-Initiated Reservation
+
+ To make a new reservation, the QNI constructs a RESERVE message
+ containing a QSPEC object, from its chosen QoS model, that describes
+ the required QoS parameters.
+
+ The RESERVE message is passed to GIST, which transports it to the
+ next QNE. There, it is delivered to the QoS NSLP processing, which
+ examines the message. Policy control and admission control decisions
+ are made. The exact processing also takes into account the QoS model
+ being used. The node performs appropriate actions (e.g., installing
+ the reservation) based on the QSPEC object in the message.
+
+ The QoS NSLP then generates a new RESERVE message (usually based on
+ the one received). This is passed to GIST, which forwards it to the
+ next QNE.
+
+ The same processing is performed at further QNEs along the path, up
+ to the QNR. The determination that a node is the QNR may be made
+ directly (e.g., that node is the destination for the data flow), or
+ using GIST functionality to determine that there are no more QNEs
+ between this node and the data flow destination.
+
+ Any node may include a request for a RESPONSE in its RESERVE
+ messages. It does so by including a Request Identification
+ Information (RII) object in the RESERVE message. If the message
+ already includes an RII, an interested QNE must not add a new RII
+ object or replace the old RII object. Instead, it needs to remember
+
+
+
+Manner, et al. Experimental [Page 27]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ the RII value so that it can match a RESPONSE message belonging to
+ the RESERVE. When it receives the RESPONSE, it forwards the RESPONSE
+ upstream towards the RII originating node.
+
+ In this example, the RESPONSE message is forwarded peer-to-peer along
+ the reverse of the path that the RESERVE message took (using GIST
+ path state), and so is seen by all the QNEs on this segment of the
+ path. It is only forwarded as far as the node that requested the
+ RESPONSE originally.
+
+ The reservation can subsequently be refreshed by sending further
+ RESERVE messages containing the complete reservation information, as
+ for the initial reservation. The reservation can also be modified in
+ the same way, by changing the QSPEC data to indicate a different set
+ of resources to reserve.
+
+ The overhead required to perform refreshes can be reduced, in a
+ similar way to that proposed for RSVP in RFC 2961 [RFC2961]. Once a
+ RESPONSE message has been received indicating the successful
+ installation of a reservation, subsequent refreshing RESERVE messages
+ can simply refer to the existing reservation, rather than including
+ the complete reservation specification.
+
+4.2. Sending a Query
+
+ QUERY messages can be used to gather information from QNEs along the
+ path. For example, they can be used to find out what resources are
+ available before a reservation is made.
+
+ In order to perform a query along a path, the QNE constructs a QUERY
+ message. This message includes a QSPEC containing the actual query
+ to be performed at QNEs along the path. It also contains an RII
+ object used to match the response back to the query, and an indicator
+ of the query scope (next node, whole path, proxy). The QUERY message
+ is passed to GIST to forward it along the path.
+
+ A QNE receiving a QUERY message should inspect it and create a new
+ message based on it, with the query objects modified as required.
+ For example, the query may request information on whether a flow can
+ be admitted, and so a node processing the query might record the
+ available bandwidth. The new message is then passed to GIST for
+ further forwarding (unless it knows it is the QNR or is the limit for
+ the scope in the QUERY).
+
+ At the QNR, a RESPONSE message must be generated if the QUERY message
+ includes an RII object. Various objects from the received QUERY
+ message have to be copied into the RESPONSE message. It is then
+ passed to GIST to be forwarded peer-to-peer back along the path.
+
+
+
+Manner, et al. Experimental [Page 28]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Each QNE receiving the RESPONSE message should inspect the RII object
+ to see if it 'belongs' to it (i.e., it was the one that originally
+ created it). If it does not, then it simply passes the message back
+ to GIST to be forwarded upstream.
+
+ If there was an error in processing a RESERVE, instead of an RII, the
+ RESPONSE may carry an RSN. Thus, a QNE must also be prepared to look
+ for an RSN object if no RII was present, and act based on the error
+ code set in the INFO-SPEC of the RESPONSE.
+
+4.3. Basic Receiver-Initiated Reservation
+
+ As described in the NSIS framework [RFC4080], in some signaling
+ applications, a node at one end of the data flow takes responsibility
+ for requesting special treatment -- such as a resource reservation --
+ from the network. Both ends then agree whether sender- or receiver-
+ initiated reservation is to be done. In case of a receiver-initiated
+ reservation, both ends agree whether a "One Pass With Advertising"
+ (OPWA) [opwa95] model is being used. This negotiation can be
+ accomplished using mechanisms that are outside the scope of NSIS.
+
+ To make a receiver-initiated reservation, the QNR constructs a QUERY
+ message, which MUST contain a QSPEC object from its chosen QoS model
+ (see Figure 8). The QUERY must have the RESERVE-INIT flag set. This
+ QUERY message does not need to trigger a RESPONSE message and
+ therefore, the QNI must not include the RII object (Section 5.4.2) in
+ the QUERY message. The QUERY message may be used to gather
+ information along the path, which is carried by the QSPEC object. An
+ example of such information is the "One Pass With Advertising" (OPWA)
+ model [opwa95]. This QUERY message causes GIST reverse-path state to
+ be installed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 29]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ QNR QNE QNE QNI
+ sender receiver
+ | | | |
+ | QUERY | | |
+ +--------->| | |
+ | | QUERY | |
+ | +--------->| |
+ | | | QUERY |
+ | | +--------->|
+ | | | |
+ | | | RESERVE |
+ | | |<---------+
+ | | RESERVE | |
+ | |<---------+ |
+ | RESERVE | | |
+ |<---------+ | |
+ | | | |
+ | RESPONSE | | |
+ +--------->| | |
+ | | RESPONSE | |
+ | +--------->| |
+ | | | RESPONSE |
+ | | +--------->|
+ | | | |
+
+ Figure 8: Basic Receiver-Initiated Reservation
+
+ The QUERY message is transported by GIST to the next downstream QoS
+ NSLP node. There, it is delivered to the QoS NSLP processing, which
+ examines the message. The exact processing also takes into account
+ the QoS model being used and may include gathering information on
+ path characteristics that may be used to predict the end-to-end QoS.
+
+ The QNE generates a new QUERY message (usually based on the one
+ received). This is passed to GIST, which forwards it to the next
+ QNE. The same processing is performed at further QNEs along the
+ path, up to the flow receiver. The receiver detects that this QUERY
+ message carries the RESERVE-INIT flag and by using the information
+ contained in the received QUERY message, such as the QSPEC,
+ constructs a RESERVE message.
+
+ The RESERVE is forwarded peer-to-peer along the reverse of the path
+ that the QUERY message took (using GIST reverse-path state). Similar
+ to the sender-initiated approach, any node may include an RII in its
+ RESERVE messages. The RESPONSE is sent back to confirm that the
+ resources are set up. The reservation can subsequently be refreshed
+ with RESERVE messages in the upstream direction.
+
+
+
+
+Manner, et al. Experimental [Page 30]
+
+RFC 5974 QoS NSLP October 2010
+
+
+4.4. Bidirectional Reservations
+
+ The term "bidirectional reservation" refers to two different cases
+ that are supported by this specification:
+
+ o Binding two sender-initiated reservations together, e.g., one
+ sender-initiated reservation from QNE A to QNE B and another one
+ from QNE B to QNE A (Figure 9).
+
+ o Binding a sender-initiated and a receiver-initiated reservation
+ together, e.g., a sender-initiated reservation from QNE A towards
+ QNE B, and a receiver-initiated reservation from QNE A towards QNE
+ B for the data flow in the opposite direction (from QNE B to QNE
+ A). This case is particularly useful when one end of the
+ communication has all required information to set up both sessions
+ (Figure 10).
+
+ Both ends have to agree on which bidirectional reservation type they
+ need to use. This negotiation can be accomplished using mechanisms
+ that are outside the scope of NSIS.
+
+ The scenario with two sender-initiated reservations is shown in
+ Figure 9. Note that RESERVE messages for both directions may visit
+ different QNEs along the path because of asymmetric routing. Both
+ directions of the flows are bound by inserting the BOUND-SESSION-ID
+ object at the QNI and QNR. RESPONSE messages are optional and not
+ shown in the picture for simplicity.
+
+ A QNE QNE B
+ | | FLOW-1 | |
+ |===============================>|
+ |RESERVE-1 | | |
+ QNI+--------->|RESERVE-1 | |
+ | +-------------------->|QNR
+ | | | |
+ | | FLOW-2 | |
+ |<===============================|
+ | | |RESERVE-2 |
+ | RESERVE-2 |<---------+QNI
+ QNR|<--------------------+ |
+ | | | |
+
+ Figure 9: Bidirectional Reservation for Sender+Sender Scenario
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 31]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The scenario with a sender-initiated and a receiver-initiated
+ reservation is shown in Figure 10. In this case, QNI A sends out two
+ RESERVE messages, one for the sender-initiated and one for the
+ receiver-initiated reservation. Note that the sequence of the two
+ RESERVE messages may be interleaved.
+
+ A QNE QNE B
+ | | FLOW-1 | |
+ |===============================>|
+ |RESERVE-1 | | |
+ QNI+--------->|RESERVE-1 | |
+ | +-------------------->|QNR
+ | | | |
+ | | FLOW-2 | |
+ |<===============================|
+ | | | QUERY-2 |
+ | | QUERY-2 |<---------+QNR
+ QNI|<--------------------+ |
+ | | | |
+ |RESERVE-2 | | |
+ QNI+--------->|RESERVE-2 | |
+ | +-------------------->|QNR
+ | | | |
+
+ Figure 10: Bidirectional Reservation for Sender+Receiver Scenario
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 32]
+
+RFC 5974 QoS NSLP October 2010
+
+
+4.5. Aggregate Reservations
+
+ In order to reduce signaling and per-flow state in the network, the
+ reservations for a number of flows may be aggregated.
+
+ QNI QNE QNE/QNI' QNE' QNR'/QNE QNR
+ aggregator deaggregator
+ | | | | | |
+ | RESERVE | | | | |
+ +--------->| | | | |
+ | | RESERVE | | | |
+ | +--------->| | | |
+ | | | RESERVE | | |
+ | | +-------------------->| |
+ | | | RESERVE' | | |
+ | | +=========>| RESERVE' | |
+ | | | +=========>| RESERVE |
+ | | | | +--------->|
+ | | | | RESPONSE'| |
+ | | | RESPONSE'|<=========+ |
+ | | |<=========+ | |
+ | | | | | RESPONSE |
+ | | | | RESPONSE |<---------+
+ | | |<--------------------+ |
+ | | RESPONSE | | | |
+ | |<---------+ | | |
+ | RESPONSE | | | | |
+ |<---------+ | | | |
+ | | | | | |
+ | | | | | |
+
+ Figure 11: Sender-Initiated Reservation with Aggregation
+
+ An end-to-end per-flow reservation is initiated with the messages
+ shown in Figure 11 as "RESERVE".
+
+ At the aggregator, a reservation for the aggregated flow is initiated
+ (shown in Figure 11 as "RESERVE'"). This may use the same QoS model
+ as the end-to-end reservation but has an MRI identifying the
+ aggregated flow (e.g., tunnel) instead of for the individual flows.
+
+ This document does not specify how the QSPEC of the aggregate session
+ can be derived from the QSPECs of the end-to-end sessions.
+
+ The messages used for the signaling of the individual reservation
+ need to be marked such that the intermediate routers will not inspect
+ them. In the QoS NSLP, the following marking policy is applied; see
+ also RFC 3175.
+
+
+
+Manner, et al. Experimental [Page 33]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ All routers use essentially the same algorithm for which messages
+ they process, i.e., all messages at aggregation level 0. However,
+ messages have their aggregation level incremented on entry to an
+ aggregation region and decremented on exit. In this technique, the
+ interior routers are not required to do any rewriting of the RAO
+ values. However, the aggregating/deaggregating routers must
+ distinguish the interfaces and associated aggregation levels. These
+ routers also perform message rewriting at these boundaries.
+
+ In particular, the Aggregator performs the marking by modifying the
+ QoS NSLP default NSLPID value to an NSLPID predefined value; see
+ Section 6.6. A RAO value is then uniquely derivable from each
+ predefined NSLPID. However, the RAO does not have to have a one-to-
+ one relation to a specific NSLPID.
+
+
+ Aggregator Deaggregator
+
+ +---+ +---+ +---+ +---+
+ |QNI|-----|QNE|-----|QNE|-----|QNR| aggregate
+ +---+ +---+ +---+ +---+ reservation
+
+ +---+ +---+ ..... ..... +---+ +---+
+ |QNI|-----|QNE|-----. .-----. .-----|QNE|-----|QNR| end-to-end
+ +---+ +---+ ..... ..... +---+ +---+ reservation
+
+ Figure 12: Reservation Aggregation
+
+ The deaggregator acts as the QNR for the aggregate reservation.
+ Session binding information carried in the RESERVE message enables
+ the deaggregator to associate the end-to-end and aggregate
+ reservations with one another (using the BOUND-SESSION-ID).
+
+ The key difference between this example and the one shown in
+ Section 4.7.1 is that the flow identifier for the aggregate is
+ expected to be different to that for the end-to-end reservation. The
+ aggregate reservation can be updated independently of the per-flow
+ end-to-end reservations.
+
+4.6. Message Binding
+
+ Section 4.5 sketches the interaction of an aggregated end-to-end flow
+ and an aggregate. For this scenario, and probably others, it is
+ useful to have a method for synchronizing the exchanges of signaling
+ messages of different sessions. This can be used to speed up
+ signaling, because some message exchanges can be started
+ simultaneously and can be processed in parallel until further
+ processing of a message from one particular session depends on
+
+
+
+Manner, et al. Experimental [Page 34]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ another message from a different session. For instance, Figure 11
+ shows a case where inclusion of a new reservation requires that the
+ capacity of the encompassing aggregate be increased first. So the
+ RESERVE (bound message) for the individual flow arriving at the
+ deaggregator should wait until the RESERVE' (binding message) for the
+ aggregate arrived successfully (otherwise, the individual flow cannot
+ be included in the existing aggregate and cannot be admitted).
+ Another alternative would be to increase the aggregate first and then
+ to reserve resources for a set of aggregated individual flows. In
+ this case, the binding and synchronization between the (RESERVE and
+ RESERVE') messages are not needed.
+
+ A message binding may be used (depending an the aggregators policy)
+ as follows: a QNE (aggregator QNI' in Figure 14) generates randomly a
+ 128-bit MSG-ID (same rules apply as for generating a SESSION-ID) and
+ includes it as BOUND-MSG-ID object into the bound signaling message
+ (RESERVE (1) in Figure 13) that should wait for the arrival of a
+ related binding signaling message (RESERVE' (3) in Figure 13) that
+ carries the associated MSG-ID object. The BOUND-SESSION-ID should
+ also be set accordingly. Only one MSG-ID or BOUND-MSG-ID object per
+ message is allowed. If the dependency relation between the two
+ messages is bidirectional, then the Message_Binding_Type flag is SET
+ (value is 1). Otherwise, the Message_Binding_Type flag is UNSET. In
+ most cases, an RII object must be included in order to get a
+ corresponding RESPONSE back.
+
+ Depending on the arrival sequence of the bound signaling message
+ (RESERVE (1) in Figure 13) and the "triggering" binding signaling
+ message (RESERVE' (3) in Figure 13), different situations can be
+ identified:
+
+ o The bound signaling (RESERVE (1)) arrives first. The receiving
+ QNE enqueues (probably after some pre-processing) the signaling
+ (RESERVE (1)) message for the corresponding session. It also
+ starts a MsgIDWait timer in order to discard the message in case
+ the related "triggering" message (RESERVE' in Figure 13) does not
+ arrive. The timeout period for this time SHOULD be set to the
+ default retransmission timeout period (QOSNSLP_REQUEST_RETRY). In
+ case a retransmitted RESERVE message arrives before the timeout,
+ it will simply override the waiting message (i.e., the latter is
+ discarded, and the new message is now waiting with the MsgIDWait
+ timer being reset).
+
+ At the same time, the "triggering" message including a MSG-ID object,
+ carrying the same value as the BOUND-MSG-ID object is sent by the
+ same initiating QNE (QNI' in Figure 13). The intermediate QNE' sees
+ the MSG-ID object, but can determine that it is not the endpoint for
+ the session (QNR') and therefore simply forwards the message after
+
+
+
+Manner, et al. Experimental [Page 35]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ normal processing. The receiving QNE (QNR') as endpoint for the
+ aggregate session (i.e., deaggregator) interprets the MSG-ID object
+ and looks for a corresponding waiting message with a BOUND-MSG-ID of
+ the same value whose waiting condition is satisfied now. Depending
+ on successful processing of the RESERVE' (3), processing of the
+ waiting RESERVE will be resumed, and the MsgIDWait timer will be
+ stopped as soon as the related RESERVE' arrived.
+
+ QNI QNE QNE/QNI' QNE' QNR'/QNE QNR
+ aggregator deaggregator
+ | | | | | |
+ | RESERVE | | | | |
+ +--------->| | | | |
+ | | RESERVE | | | |
+ | +--------->| | | |
+ | | | RESERVE | | |
+ | | | (1) | | |
+ | | +-------------------->| |
+ | | | RESERVE' | | |
+ | | | (2) | | |
+ | | +=========>| RESERVE' | |
+ | | | | (3) | |
+ | | | +=========>| RESERVE |
+ | | | | | (4) |
+ | | | | +--------->|
+ | | | | RESPONSE'| |
+ | | | RESPONSE'|<=========+ |
+ | | |<=========+ | |
+ | | | | | RESPONSE |
+ | | | | RESPONSE |<---------+
+ | | |<--------------------+ |
+ | | RESPONSE | | | |
+ | |<---------+ | | |
+ | RESPONSE | | | | |
+ |<---------+ | | | |
+ | | | | | |
+ | | | | | |
+
+
+ (1): RESERVE: SESSION-ID=F, BOUND-MSG-ID=x, BOUND-SESSION-ID=A
+ (2)+(3): RESERVE': SESSION-ID=A, MSG-ID=x
+ (4): RESERVE: SESSION-ID=F (MSG-ID object was removed)
+
+ Figure 13: Example for Using Message Binding
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 36]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Several further cases have to be considered in this context:
+
+ o "Triggering message" (3) arrives before waiting (bound) message
+ (1): In this case, the processing of the triggering message
+ depends on the value of the Message_Binding_Type flag. If
+ Message_Binding_Type is UNSET (value is 0), then the triggering
+ message can be processed normally, but the MSG-ID and the result
+ (success or failure) should be saved for the waiting message.
+ Thus, the RESPONSE' can be sent by the QNR' immediately. If the
+ waiting message (1) finally arrives at the QNR', it can be
+ detected that the waiting condition was already satisfied because
+ the triggering message already arrived earlier. If
+ Message_Binding_Type is SET (value is 1), then the triggering
+ message interprets the MSG-ID object and looks for the
+ corresponding waiting message with a BOUND-MSG-ID of the same
+ value, which in this case has not yet arrived. It then starts a
+ MsgIDWait timer in order to discard the message in case the
+ related message (RESERVE (1) in Figure 14) does not arrive.
+ Depending on successful processing of the RESERVE (1), processing
+ of the waiting RESERVE' will be resumed, the MsgIDWait timer will
+ be stopped as soon as the related RESERVE arrives and the
+ RESPONSE' can be sent by the QNR' towards the QNI'.
+
+ o The "triggering message" (3) does not arrive at all: this may be
+ due to message loss (which will cause a retransmission by the QNI'
+ if the RII object is included) or due to a reservation failure at
+ an intermediate node (QNE' in the example). The MsgIDWait timeout
+ will then simply discard the waiting message at QNR'. In this
+ case, the QNR' MAY send a RESPONSE message towards the QNI
+ informing it that the synchronization of the two messages has
+ failed.
+
+ o Retransmissions should use the same MSG-ID because usually only
+ one of the two related messages is retransmitted. As mentioned
+ above: retransmissions will only occur if the RII object is set in
+ the RESERVE. If a retransmitted message with a MSG-ID arrives
+ while a bound message with the same MSG-ID is still waiting, the
+ retransmitted message will replace the bound message.
+
+ For a receiving node, there are conceptually two lists indexed by
+ message IDs. One list contains the IDs and results of triggering
+ messages (those carrying a MSG-ID object), the other list contains
+ the IDs and message contents of the bound waiting messages (those who
+ carried a BOUND-MSG-ID). The former list is used when a triggering
+ message arrives before the bound message. The latter list is used
+ when a bound message arrives before a triggering message.
+
+
+
+
+
+Manner, et al. Experimental [Page 37]
+
+RFC 5974 QoS NSLP October 2010
+
+
+4.7. Reduced-State or Stateless Interior Nodes
+
+ This example uses a different QoS model within a domain, in
+ conjunction with GIST and NSLP functionality that allows the interior
+ nodes to avoid storing GIST and QoS NSLP state. As a result, the
+ interior nodes only store the QSPEC-related reservation state or even
+ no state at all. This allows the QoS model to use a form of
+ "reduced-state" operation, where reservation states with a coarser
+ granularity (e.g., per-class) are used, or a "stateless" operation
+ where no QoS NSLP state is needed (or created). This is useful,
+ e.g., for measurement-based admission control schemes.
+
+ The key difference between this example and the use of different QoS
+ models in Section 4.5 is the transport characteristics for the
+ reservation, i.e., GIST can be used in a different way for the edge-
+ to-edge and hop-by-hop sessions. The reduced-state reservation can
+ be updated independently of the per-flow end-to-end reservations.
+
+4.7.1. Sender-Initiated Reservation
+
+ The QNI initiates a RESERVE message (see Figure 14). At the QNEs on
+ the edges of the stateless or reduced-state region, the processing is
+ different and the nodes support two QoS models. At the ingress, the
+ original RESERVE message is forwarded but ignored by the stateless or
+ reduced-state nodes. This is accomplished by marking this message at
+ the ingress, i.e., modifying the QoS NSLP default NSLPID value to an
+ NSLPID predefined value (see Section 4.6). The egress must reassign
+ the QoS NSLP default NSLPID value to the original end-to-end RESERVE
+ message. An example of such operation is given in [RFC5977].
+
+ The egress node is the next QoS-NSLP hop for the end-to-end RESERVE
+ message. Reliable GIST transfer mode can be used between the ingress
+ and egress without requiring GIST state in the interior. At the
+ egress node, the RESERVE message is then forwarded normally.
+
+ At the ingress, a second RESERVE' message is also built (Figure 14).
+ This makes use of a QoS model suitable for a reduced-state or
+ stateless form of operation (such as the RMD per-hop reservation).
+ Since the original RESERVE and the RESERVE' messages are addressed
+ identically, the RESERVE' message also arrives at the same egress QNE
+ that was also traversed by the RESERVE message. Message binding is
+ used to synchronize the messages.
+
+ When processed by interior (stateless) nodes, the QoS NSLP processing
+ exercises its options to not keep state wherever possible, so that no
+ per-flow QoS NSLP state is stored. Some state, e.g., per class, for
+ the QSPEC-related data may be held at these interior nodes. The QoS
+ NSLP also requests that GIST use different transport characteristics
+
+
+
+Manner, et al. Experimental [Page 38]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ (e.g., sending of messages in unreliable GIST transfer mode). It
+ also requests the local GIST processing not to retain messaging
+ association state or reverse message routing state.
+
+ Nodes, such as those in the interior of the stateless or reduced-
+ state domain, that do not retain reservation state cannot send back
+ RESPONSE messages (and so cannot use the refresh reduction
+ extension).
+
+ At the egress node, the RESERVE' message is interpreted in
+ conjunction with the reservation state from the end-to-end RESERVE
+ message (using information carried in the message to correlate the
+ signaling flows). The RESERVE message is only forwarded further if
+ the processing of the RESERVE' message was successful at all nodes in
+ the local domain; otherwise, the end-to-end reservation is regarded
+ as having failed to be installed. This can be realized by using the
+ message binding functionality described in Section 4.6 to synchronize
+ the arrival of the bound signaling message (end-to-end RESERVE) and
+ the binding signaling message (local RESERVE').
+
+ QNE QNE QNE QNE
+ ingress interior interior egress
+ GIST stateful GIST stateless GIST stateless GIST stateful
+ | A B |
+ RESERVE | | | |
+ -------->| RESERVE | | |
+ +--------------------------------------------->|
+ | RESERVE' | | |
+ +-------------->| | |
+ | | RESERVE' | |
+ | +-------------->| |
+ | | | RESERVE' |
+ | | +------------->|
+ | | | RESPONSE' |
+ |<---------------------------------------------+
+ | | | | RESERVE
+ | | | +-------->
+ | | | | RESPONSE
+ | | | |<--------
+ | | | RESPONSE |
+ |<---------------------------------------------+
+ RESPONSE| | | |
+ <--------| | | |
+
+ Figure 14: Sender-Initiated Reservation with Reduced-State Interior
+ Nodes
+
+
+
+
+
+Manner, et al. Experimental [Page 39]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Resource management errors in the example above are reflected in the
+ QSPEC and QoS model processing. For example, if the RESERVE' fails
+ at QNE A, it cannot send an error message back to the ingress QNE.
+ Thus, the RESERVE' is forwarded along the intended path, but the
+ QSPEC includes information for subsequent QNEs telling them an error
+ happened upstream. It is up to the QoS model to determine what to
+ do. Eventually, the RESERVE' will reach the egress QNE, and again,
+ the QoS model then determines the response.
+
+4.7.2. Receiver-Initiated Reservation
+
+ Since NSLP neighbor relationships are not maintained in the reduced-
+ state region, only sender-initiated signaling can be supported within
+ the reduced-state region. If a receiver-initiated reservation over a
+ stateless or reduced-state domain is required, this can be
+ implemented as shown in Figure 15.
+
+ QNE QNE QNE
+ ingress interior egress
+ GIST stateful GIST stateless GIST stateful
+ | | |
+ QUERY | | |
+ -------->| QUERY | |
+ +------------------------------>|
+ | | | QUERY
+ | | +-------->
+ | | | RESERVE
+ | | |<--------
+ | | RESERVE |
+ |<------------------------------+
+ | RESERVE' | RESERVE' |
+ |-------------->|-------------->|
+ | | RESPONSE' |
+ |<------------------------------+
+ RESERVE | | |
+ <--------| | |
+
+ Figure 15: Receiver-Initiated Reservation with Reduced-State Interior
+ Nodes
+
+ The RESERVE message that is received by the egress QNE of the
+ stateless domain is sent transparently to the ingress QNE (known as
+ the source of the QUERY message). When the RESERVE message reaches
+ the ingress, the ingress QNE needs to send a sender-initiated
+ RESERVE' over the stateless domain. The ingress QNE needs to wait
+ for a RESPONSE'. If the RESPONSE' notifies that the reservation was
+ accomplished successfully, then the ingress QNE sends a RESERVE
+ message further upstream.
+
+
+
+Manner, et al. Experimental [Page 40]
+
+RFC 5974 QoS NSLP October 2010
+
+
+4.8. Proxy Mode
+
+ Besides the sender- and receiver-initiated reservations, the QoS NSLP
+ includes a functionality we refer to as Proxy Mode. Here a QNE is
+ set by administrator assignment to work as a proxy QNE (P-QNE) for a
+ certain region, e.g., for an administrative domain. A node
+ initiating the signaling may set the PROXY scope flag to indicate
+ that the signaling is meant to be confined within the area controlled
+ by the proxy, e.g., the local access network.
+
+ The Proxy Mode has two uses. First, it allows the QoS NSLP signaling
+ to be confined to a pre-defined section of the path. Second, it
+ allows a node to make reservations for an incoming data flow.
+
+ For outgoing data flows and sender-initiated reservations, the end
+ host is the QNI, and sends a RESERVE with the PROXY scope flag set.
+ The P-QNE is the QNR; it will receive the RESERVE, notice the PROXY
+ scope flag is set and reply with a RESPONSE (if requested). This
+ operation is the same as illustrated in Figure 7. The receiver-
+ oriented reservation for outgoing flows works the same way as in
+ Figure 8, except that the P-QNE is the QNI.
+
+ For incoming data flows, the end host is the QNI, and it sends a
+ RESERVE towards the data sender with the PROXY scope flag set. Here
+ the end host sets the MRI so that it indicates the end host as the
+ receiver of the data, and sets the D-flag.
+
+ GIST is able to send messages towards the data sender if there is
+ existing message routing state or it is able to use the Upstream
+ Q-mode Encapsulation. In some cases, GIST will be unable to
+ determine the appropriate next hop for the message, and so will
+ indicate a failure to deliver it (by sending an error message). This
+ may occur, for example, if GIST attempts to determine an upstream
+ next hop and there are multiple possible inbound routes that could be
+ used.
+
+ Bidirectional reservations can be used, as discussed in Section 4.4.
+ The P-QNE will be the QNR or QNI for reservations.
+
+ If the PROXY scope flag is set in an incoming QoS NSLP message, the
+ QNE must set the same flag in all QoS NSLP messages it sends that are
+ related to this session.
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 41]
+
+RFC 5974 QoS NSLP October 2010
+
+
+5. QoS NSLP Functional Specification
+
+5.1. QoS NSLP Message and Object Formats
+
+ A QoS NSLP message consists of a common header, followed by a body
+ consisting of a variable number of variable-length, typed "objects".
+ The common header and other objects are encapsulated together in a
+ GIST NSLP-Data object. The following subsections define the formats
+ of the common header and each of the QoS NSLP message types. In the
+ message formats, the common header is denoted as COMMON-HEADER.
+
+ For each QoS NSLP message type, there is a set of rules for the
+ permissible choice of object types. These rules are specified using
+ the Augmented Backus-Naur Form (ABNF) specified in RFC 5234
+ [RFC5234]. The ABNF implies an order for the objects in a message.
+ However, in many (but not all) cases, object order makes no logical
+ difference. An implementation SHOULD create messages with the
+ objects in the order shown here, but MUST accept the objects in any
+ order.
+
+5.1.1. Common Header
+
+ All GIST NSLP-Data objects for the QoS NSLP MUST contain this common
+ header as the first 32 bits of the object (this is not the same as
+ the GIST Common 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Message Type | Message Flags | Generic Flags |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The fields in the common header are as follows:
+
+ Msg Type: 8 bits
+
+ 1 = RESERVE
+
+ 2 = QUERY
+
+ 3 = RESPONSE
+
+ 4 = NOTIFY
+
+ Message-specific flags: 8 bits
+
+ These flags are defined as part of the specification of individual
+ messages, and, thus, are different with each message type.
+
+
+
+Manner, et al. Experimental [Page 42]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Generic flags: 16 bits
+
+ Generic flags have the same meaning for all message types. There
+ exist currently four generic flags: the (next hop) Scoping flag
+ (S), the Proxy scope flag (P), the Acknowledgement Requested flag
+ (A), and the Break flag (B).
+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Reserved |B|A|P|S|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ SCOPING (S) - when set, indicates that the message is scoped and
+ should not travel down the entire path but only as far as the next
+ QNE (scope="next hop"). By default, this flag is not set (default
+ scope="whole path").
+
+ PROXY (P) - when set, indicates that the message is scoped, and
+ should not travel down the entire path but only as far as the P-QNE.
+ By default, this flag is not set.
+
+ ACK-REQ (A) - when set, indicates that the message should be
+ acknowledged by the receiving peer. The flag is only used between
+ stateful peers, and only used with RESERVE and QUERY messages.
+ Currently, the flag is only used with refresh messages. By default,
+ the flag is not set.
+
+ BREAK (B) - when set, indicates that there are routers along the path
+ where QoS cannot be provided.
+
+ The set of appropriate flags depends on the particular message being
+ processed. Any bit not defined as a flag for a particular message
+ MUST be set to zero on sending and MUST be ignored on receiving.
+
+ The ACK-REQ flag is useful when a QNE wants to make sure the messages
+ received by the downstream QNE are truly processed by the QoS NSLP,
+ not just delivered by GIST. This is useful for faster dead peer
+ detection on the NSLP layer. This liveliness test can only be used
+ with refresh RESERVE messages. The ACK-REQ flag must not be set for
+ RESERVE messages that already include an RII object, since a
+ confirmation has already been requested from the QNR. Reliable
+ transmission of messages between two QoS NSLP peers should be handled
+ by GIST, not the NSLP by itself.
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 43]
+
+RFC 5974 QoS NSLP October 2010
+
+
+5.1.2. Message Formats
+
+5.1.2.1. RESERVE
+
+ The format of a RESERVE message is as follows:
+
+ RESERVE = COMMON-HEADER
+ RSN [ RII ] [ REFRESH-PERIOD ] [ *BOUND-SESSION-ID ]
+ [ SESSION-ID-LIST [ RSN-LIST ] ]
+ [ MSG-ID / BOUND-MSG-ID ] [ INFO-SPEC ]
+ [ [ PACKET-CLASSIFIER ] QSPEC ]
+
+ The RSN is the only mandatory object and MUST always be present in
+ all cases. A QSPEC MUST be included in the initial RESERVE sent
+ towards the QNR. A PACKET-CLASSIFIER MAY be provided. If the
+ PACKET-CLASSIFIER is not provided, then the full set of information
+ provided in the GIST MRI for the session should be used for packet
+ classification purposes.
+
+ Subsequent RESERVE messages meant as reduced refreshes, where no
+ QSPEC is provided, MUST NOT include a PACKET-CLASSIFIER either.
+
+ There are no requirements on transmission order, although the above
+ order is recommended.
+
+ Two message-specific flags are defined for use in the common header
+ with the RESERVE message. These are:
+
+ +-+-+-+-+-+-+-+-+
+ |Reserved |T|R|
+ +-+-+-+-+-+-+-+-+
+
+ TEAR (T) - when set, indicates that reservation state and QoS NSLP
+ operation state should be torn down. The former is indicated to the
+ RMF. Depending on the QoS model, the tear message may include a
+ QSPEC to further specify state removal, e.g., for an aggregation, the
+ QSPEC may specify the amount of resources to be removed from the
+ aggregate.
+
+ REPLACE (R) - when set, the flag has two uses. First, it indicates
+ that a RESERVE with different MRI (but same SID) replaces an existing
+ one, so the old one MAY be torn down immediately. This is the
+ default situation. This flag may be unset to indicate a desire from
+ an upstream node to keep an existing reservation on an old branch in
+ place. Second, this flag is also used to indicate whether the
+ reserved resources on the old branch should be torn down or not when
+ a data path change happens. In this case, the MRI is the same and
+ only the route path changes.
+
+
+
+Manner, et al. Experimental [Page 44]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ If the REFRESH-PERIOD is not present, a default value of 30 seconds
+ is assumed.
+
+ If the session of this message is bound to another session, then the
+ RESERVE message MUST include the SESSION-ID of that other session in
+ a BOUND-SESSION-ID object. In the situation of aggregated tunnels,
+ the aggregated session MAY not include the SESSION-ID of its bound
+ sessions in BOUND-SESSION-ID(s).
+
+ The negotiation of whether to perform sender- or receiver-initiated
+ signaling is done outside the QoS NSLP. Yet, in theory, it is
+ possible that a "reservation collision" may occur if the sender
+ believes that a sender-initiated reservation should be performed for
+ a flow, whilst the other end believes that it should be starting a
+ receiver-initiated reservation. If different session identifiers are
+ used, then this error condition is transparent to the QoS NSLP,
+ though it may result in an error from the RMF. Otherwise, the
+ removal of the duplicate reservation is left to the QNIs/QNRs for the
+ two sessions.
+
+ If a reservation is already installed and a RESERVE message is
+ received with the same session identifier from the other direction
+ (i.e., going upstream where the reservation was installed by a
+ downstream RESERVE message, or vice versa), then an error indicating
+ "RESERVE received from wrong direction" MUST be sent in a RESPONSE
+ message to the signaling message source for this second RESERVE.
+
+ A refresh right along the path can be forced by requesting a RESPONSE
+ from the far end (i.e., by including an RII object in the RESERVE
+ message). Without this, a refresh RESERVE would not trigger RESERVE
+ messages to be sent further along the path, as each hop has its own
+ refresh timer.
+
+ A QNE may ask for confirmation of a tear operation by including an
+ RII object. QoS NSLP retransmissions SHOULD be disabled. A QNE
+ sending a tearing RESERVE with an RII included MAY ask GIST to use
+ reliable transport. When the QNE sends out a tearing RESERVE, it
+ MUST NOT send refresh messages anymore.
+
+ If the routing path changed due to mobility and the mobile node's IP
+ address changed, and it sent a Mobile IP binding update, the
+ resulting refresh is a new RESERVE. This RESERVE includes a new MRI
+ and will be propagated end-to-end; there is no need to force end-to-
+ end forwarding by including an RII.
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 45]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Note: It is possible for a host to use this mechanism to constantly
+ force the QNEs on the path to send refreshing RESERVE messages. It
+ may, therefore, be appropriate for QNEs to perform rate-limiting on
+ the refresh messages that they send.
+
+5.1.2.2. QUERY
+
+ The format of a QUERY message is as follows:
+
+ QUERY = COMMON-HEADER
+ [ RII ] [ *BOUND-SESSION-ID ]
+ [ PACKET-CLASSIFIER ] [ INFO-SPEC ] QSPEC [ QSPEC ]
+
+ QUERY messages MUST always include a QSPEC. QUERY messages MAY
+ include a PACKET-CLASSIFIER when the message is used to trigger a
+ receiver-initiated reservation. If a PACKET-CLASSIFIER is not
+ included then the full GIST MRI should be used for packet
+ classification purposes in the subsequent RESERVE. A QUERY message
+ MAY contain a second QSPEC object.
+
+ A QUERY message for requesting information about network resources
+ MUST contain an RII object to match an incoming RESPONSE to the
+ QUERY.
+
+ The QSPEC object describes what is being queried for and may contain
+ objects that gather information along the data path. There are no
+ requirements on transmission order, although the above order is
+ recommended.
+
+ One message-specific flag is defined for use in the common header
+ with the QUERY message. It is:
+
+ +-+-+-+-+-+-+-+-+
+ |Reserved |R|
+ +-+-+-+-+-+-+-+-+
+
+ RESERVE-INIT (R) - when this is set, the QUERY is meant as a trigger
+ for the recipient to make a resource reservation by sending a
+ RESERVE.
+
+ If the session of this message is bound to another session, then the
+ RESERVE message MUST include the SESSION-ID of that other session in
+ a BOUND-SESSION-ID object. In the situation of aggregated tunnels,
+ the aggregated session MAY not include the SESSION-ID of its bound
+ sessions in BOUND-SESSION-ID(s).
+
+
+
+
+
+
+Manner, et al. Experimental [Page 46]
+
+RFC 5974 QoS NSLP October 2010
+
+
+5.1.2.3. RESPONSE
+
+ The format of a RESPONSE message is as follows:
+
+ RESPONSE = COMMON-HEADER
+ [ RII / RSN ] INFO-SPEC [SESSION-ID-LIST [ RSN-LIST ] ]
+ [ QSPEC ]
+
+ A RESPONSE message MUST contain an INFO-SPEC object that indicates
+ the success of a reservation installation or an error condition.
+ Depending on the value of the INFO-SPEC, the RESPONSE MAY also
+ contain a QSPEC object. The value of an RII or an RSN object was
+ provided by some previous QNE. There are no requirements on
+ transmission order, although the above order is recommended.
+
+ No message-specific flags are defined for use in the common header
+ with the RESPONSE message.
+
+5.1.2.4. NOTIFY
+
+ The format of a NOTIFY message is as follows:
+
+ NOTIFY = COMMON-HEADER
+ INFO-SPEC [ QSPEC ]
+
+ A NOTIFY message MUST contain an INFO-SPEC object indicating the
+ reason for the notification. Depending on the INFO-SPEC value, it
+ MAY contain a QSPEC object providing additional information.
+
+ No message-specific flags are defined for use with the NOTIFY
+ message.
+
+5.1.3. Object Formats
+
+ The QoS NSLP uses a Type-Length-Value (TLV) object format similar to
+ that used by GIST. Every object consists of one or more 32-bit words
+ with a one-word header. For convenience, the standard object header
+ is shown here:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |A|B|r|r| Type |r|r|r|r| Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 47]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The value for the Type field comes from the shared NSLP object type
+ space; the various objects are presented in subsequent sections. The
+ Length field is given in units of 32-bit words and measures the
+ length of the Value component of the TLV object (i.e., it does not
+ include the standard header).
+
+ The bits marked 'A' and 'B' are flags used to signal the desired
+ treatment for objects whose treatment has not been defined in the
+ protocol specification (i.e., whose Type field is unknown at the
+ receiver). The following four categories of object have been
+ identified, and are described here.
+
+ AB=00 ("Mandatory"): If the object is not understood, the entire
+ message containing it MUST be rejected, and an error message sent
+ back.
+
+ AB=01 ("Ignore"): If the object is not understood, it MUST be
+ deleted and the rest of the message processed as usual.
+
+ AB=10 ("Forward"): If the object is not understood, it MUST be
+ retained unchanged in any message forwarded as a result of message
+ processing, but not stored locally.
+
+ AB=11 ("Refresh"): If the object is not understood, it should be
+ incorporated into the locally stored QoS NSLP signaling
+ application operational state for this flow/session, forwarded in
+ any resulting message, and also used in any refresh or repair
+ message that is generated locally. The contents of this object
+ does not need to be interpreted, and should only be stored as
+ bytes on the QNE.
+
+ The remaining bits marked 'r' are reserved. These SHALL be set to 0
+ and SHALL be ignored on reception. The extensibility flags AB are
+ similar to those used in the GIST specification. All objects defined
+ in this specification MUST be understood by all QNEs; thus, they MUST
+ have the AB-bits set to "00". A QoS NSLP implementation must
+ recognize objects of the following types: RII, RSN, REFRESH-PERIOD,
+ BOUND-SESSION-ID, INFO-SPEC, and QSPEC.
+
+ The object header is followed by the Value field, which varies for
+ different objects. The format of the Value field for currently
+ defined objects is specified below.
+
+ The object diagrams here use '//' to indicate a variable-sized field.
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 48]
+
+RFC 5974 QoS NSLP October 2010
+
+
+5.1.3.1. Request Identification Information (RII)
+
+ Type: 0x001
+
+ Length: Fixed - 1 32-bit word
+
+ Value: An identifier that MUST be (probabilistically) unique within
+ the context of a SESSION-ID and SHOULD be different every time a
+ RESPONSE is desired. Used by a QNE to match back a RESPONSE to a
+ request in a RESERVE or QUERY 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Request Identification Information (RII) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+5.1.3.2. Reservation Sequence Number (RSN)
+
+ Type: 0x002
+
+ Length: Fixed - 2 32-bit words
+
+ Value: An incrementing sequence number that indicates the order in
+ which state-modifying actions are performed by a QNE, and an epoch
+ identifier to allow the identification of peer restarts. The RSN has
+ local significance only, i.e., between a QNE and its downstream
+ stateful peers. The RSN is not reset when the downstream peer
+ changes.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Reservation Sequence Number (RSN) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Epoch Identifier |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+5.1.3.3. Refresh Period (REFRESH-PERIOD)
+
+ Type: 0x003
+
+ Length: Fixed - 1 32-bit word
+
+ Value: The refresh timeout period R used to generate this message; in
+ milliseconds.
+
+
+
+
+
+Manner, et al. Experimental [Page 49]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Refresh Period (R) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+5.1.3.4. Bound Session ID (BOUND-SESSION-ID)
+
+ Type: 0x004
+
+ Length: Fixed - 5 32-bit words
+
+ Value: contains an 8-bit Binding_Code that indicates the nature of
+ the binding. The rest specifies the SESSION-ID (as specified in GIST
+ [RFC5971]) of the session that MUST be bound to the session
+ associated with the message carrying this object.
+
+ 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 | Binding Code |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ + +
+ | |
+ + Session ID +
+ | |
+ + +
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Currently defined Binding Codes are:
+
+ o 0x01 - Tunnel and end-to-end sessions
+
+ o 0x02 - Bidirectional sessions
+
+ o 0x03 - Aggregate sessions
+
+ o 0x04 - Dependent sessions (binding session is alive only if the
+ other session is also alive)
+
+ o 0x05 - Indicated session caused preemption
+
+ More binding codes may be defined based on the above five atomic
+ binding actions. Note a message may include more than one BOUND-
+ SESSION-ID object. This may be needed in case one needs to define
+ more specifically the reason for binding, or if the session depends
+
+
+
+Manner, et al. Experimental [Page 50]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ on more than one other session (with possibly different reasons).
+ Note that a session with, e.g., SID_A (the binding session), can
+ express its unidirectional dependency relation to another session
+ with, e.g., SID_B (the bound session), by including a
+ BOUND-SESSION-ID object containing SID_B in its messages.
+
+5.1.3.5. Packet Classifier (PACKET-CLASSIFIER)
+
+ Type: 0x005
+
+ Length: Variable
+
+ Value: Contains variable-length MRM-specific data
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // Method-specific classifier data (variable) //
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ At this stage, the QoS NSLP only uses the path-coupled routing MRM.
+ The method-specific classifier data is four bytes long and consists
+ of a set of flags:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |X|Y|P|T|F|S|A|B| Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The flags are:
+
+ X - Source Address and Prefix
+
+ Y - Destination Address and Prefix
+
+ P - Protocol
+
+ T - Diffserv Code Point
+
+ F - Flow Label
+
+ S - SPI
+
+ A - Source Port
+
+ B - Destination Port
+
+
+
+
+Manner, et al. Experimental [Page 51]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The flags indicate which fields from the MRI MUST be used by the
+ packet classifier. This allows a subset of the information in the
+ MRI to be used for identifying the set of packets that are part of
+ the reservation. Flags MUST only be set if the data is present in
+ the MRI (i.e., where there is a corresponding flag in the GIST MRI,
+ the flag can only be set if the corresponding GIST MRI flag is set).
+ It should be noted that some flags in the PACKET-CLASSIFIER (X and Y)
+ relate to data that is always present in the MRI, but are optional to
+ use for QoS NSLP packet classification. The appropriate set of flags
+ set may depend, to some extent, on the QoS model being used.
+
+ As mentioned earlier in this section, the QoS NSLP is currently only
+ defined for use with the Path-Coupled Message Routing Method (MRM) in
+ GIST. Future work may extend the QoS NSLP to additional routing
+ mechanisms. Such MRMs must include sufficient information in the MRI
+ to allow the subset of packets for which QoS is to be provided to be
+ identified. When QoS NSLP is extended to support a new MRM,
+ appropriate method-specific classifier data for the PACKET-CLASSIFIER
+ object MUST be defined.
+
+5.1.3.6. Information Object (INFO-SPEC) and Error Codes
+
+ Type: 0x006
+
+ Length: Variable
+
+ Value: Contains 8 reserved bits, an 8-bit error code, a 4-bit error
+ class, a 4-bit error source identifier type, and an 8-bit error
+ source identifier length (in 32-bit words), an error source
+ identifier, and optionally variable-length error-specific
+ information.
+
+ 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 | Error Code |E-Class|ESI Typ| ESI-Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // Error Source Identifier //
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // Optional error-specific information //
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Class Field:
+
+ The four E-Class bits of the object indicate the error severity
+ class. The currently defined error classes are:
+
+
+
+
+
+Manner, et al. Experimental [Page 52]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ o 1 - Informational
+
+ o 2 - Success
+
+ o 3 - Protocol Error
+
+ o 4 - Transient Failure
+
+ o 5 - Permanent Failure
+
+ o 6 - QoS Model Error
+
+ Error field:
+
+ Within each error severity class, a number of Error Code values are
+ defined.
+
+ o Informational:
+
+ * 0x01 - Unknown BOUND-SESSION-ID: the message refers to an
+ unknown SESSION-ID in its BOUND-SESSION-ID object.
+
+ * 0x02 - Route Change: possible route change occurred on
+ downstream path.
+
+ * 0x03 - Reduced refreshes not supported; full QSPEC required.
+
+ * 0x04 - Congestion situation: Possible congestion situation
+ occurred on downstream path.
+
+ * 0x05 - Unknown SESSION-ID in SESSION-ID-LIST.
+
+ * 0x06 - Mismatching RSN in RSN-LIST.
+
+ o Success:
+
+ * 0x01 - Reservation successful
+
+ * 0x02 - Teardown successful
+
+ * 0x03 - Acknowledgement
+
+ * 0x04 - Refresh successful
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 53]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ o Protocol Error:
+
+ * 0x01 - Illegal message type: the type given in the Message
+ Type field of the common header is unknown.
+
+ * 0x02 - Wrong message length: the length given for the message
+ does not match the length of the message data.
+
+ * 0x03 - Bad flags value: an undefined flag or combination of
+ flags was set in the generic flags.
+
+ * 0x04 - Bad flags value: an undefined flag or combination of
+ flags was set in the message-specific flags.
+
+ * 0x05 - Mandatory object missing: an object required in a
+ message of this type was missing.
+
+ * 0x06 - Illegal object present: an object was present that must
+ not be used in a message of this type.
+
+ * 0x07 - Unknown object present: an object of an unknown type
+ was present in the message.
+
+ * 0x08 - Wrong object length: the length given for the object
+ did not match the length of the object data present.
+
+ * 0x09 - RESERVE received from wrong direction.
+
+ * 0x0a - Unknown object field value: a field in an object had an
+ unknown value.
+
+ * 0x0b - Duplicate object present.
+
+ * 0x0c - Malformed QSPEC.
+
+ * 0x0d - Unknown MRI.
+
+ * 0x0e - Erroneous value in the TLV object's value field.
+
+ * 0x0f - Incompatible QSPEC.
+
+ o Transient Failure:
+
+ * 0x01 - No GIST reverse-path forwarding state
+
+ * 0x02 - No path state for RESERVE, when doing a receiver-
+ oriented reservation
+
+
+
+
+Manner, et al. Experimental [Page 54]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ * 0x03 - RII conflict
+
+ * 0x04 - Full QSPEC required
+
+ * 0x05 - Mismatch synchronization between end-to-end RESERVE and
+ intra-domain RESERVE
+
+ * 0x06 - Reservation preempted
+
+ * 0x07 - Reservation failure
+
+ * 0x08 - Path truncated - Next peer dead
+
+ o Permanent Failure:
+
+ * 0x01 - Internal or system error
+
+ * 0x02 - Authorization failure
+
+ o QoS Model Error:
+
+ This error class can be used by QoS models to add error codes
+ specific to the QoS model being used. All these errors and events
+ are created outside the QoS NSLP itself. The error codes in this
+ class are defined in QoS model specifications. Note that this
+ error class may also include codes that are not purely errors, but
+ rather some non-fatal information.
+
+ Error Source Identifier (ESI)
+
+ The Error Source Identifier is for diagnostic purposes and its
+ inclusion is OPTIONAL. It is suggested that implementations use this
+ for the IP address, host name, or other identifier of the QNE
+ generating the INFO-SPEC to aid diagnostic activities. A QNE SHOULD
+ NOT be used in any purpose other than error logging or being
+ presented to the user as part of any diagnostic information. A QNE
+ SHOULD NOT attempt to send a message to that address.
+
+ If no Error Source Identifier is included, the Error Source
+ Identifier Type field must be zero.
+
+ Currently three Error Source Identifiers have been defined: IPv4,
+ IPv6, and FQDN.
+
+ Error Source Identifier: IPv4
+
+ Error Source Identifier Type: 0x1
+
+
+
+
+Manner, et al. Experimental [Page 55]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 32-bit IPv4 address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Error Source Identifier: IPv6
+
+ Error Source Identifier Type: 0x2
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ + +
+ | |
+ + 128-bit IPv6 address +
+ | |
+ + +
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Error Source Identifier: FQDN in UTF-8
+
+ Error Source Identifier Type: 0x3
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // FQDN //
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ If the length of the FQDN is not a multiple of 32-bits, the field is
+ padded with zero octets to the next 32-bit boundary.
+
+ If a QNE encounters protocol errors, it MAY include additional
+ information, mainly for diagnostic purposes. Additional information
+ MAY be included if the type of an object is erroneous, or a field has
+ an erroneous value.
+
+ If the type of an object is erroneous, the following optional error-
+ specific information may be included at the end of the INFO-SPEC.
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 56]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Object Type Info:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Object Type | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ This object provides information about the type of object that caused
+ the error.
+
+ If a field in an object had an incorrect value, the following
+ Optional error-specific information may be added at the end of the
+ INFO-SPEC.
+
+ Object Value Info:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Rsvd | Real Object Length | Offset |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // Object //
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Real Object Length: Since the length in the original TLV header may
+ be inaccurate, this field provides the actual length of the object
+ (including the TLV Header) included in the error message.
+
+ Offset: Indicates which part of the erroneous object is included.
+ When this field is set to "0", the complete object is included. If
+ Offset is bigger than "0", the erroneous object from offset
+ (calculated from the beginning of the object) to the end of the
+ object is included.
+
+ Object: The invalid TLV object (including the TLV Header).
+
+ This object carries information about a TLV object that was found to
+ be invalid in the original message. An error message may contain
+ more than one Object Value Info object.
+
+5.1.3.7. SESSION-ID List (SESSION-ID-LIST)
+
+ Type: 0x007
+
+ Length: Variable
+
+
+
+
+
+Manner, et al. Experimental [Page 57]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Value: A list of 128-bit SESSION-IDs used in summary refresh and
+ summary tear messages. All SESSION-IDs are concatenated together.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ + +
+ | |
+ + Session ID 1 +
+ | |
+ + +
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ : :
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ + +
+ | |
+ + Session ID n +
+ | |
+ + +
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+5.1.3.8. Reservation Sequence Number (RSN) List (RSN-LIST)
+
+ Type: 0x008
+
+ Length: Variable
+
+ Value: A list of 32-bit Reservation Sequence Number (RSN) values.
+ All RSN are concatenated together.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Epoch Identifier |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Reservation Sequence Number 1 (RSN1) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ : :
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Reservation Sequence Number n (RSNn) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 58]
+
+RFC 5974 QoS NSLP October 2010
+
+
+5.1.3.9. Message ID (MSG-ID)
+
+ Type: 0x009
+
+ Length: Fixed - 5 32-bit words
+
+ Value: contains a 1-bit Message_Binding_Type (D) that indicates the
+ dependency relation of a message binding. The rest specifies a
+ 128-bit randomly generated value that "uniquely" identifies this
+ particular 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | RESERVED |D|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ + +
+ | |
+ + Message ID +
+ | |
+ + +
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The Message Binding Codes are:
+
+ * 0 - Unidirectional binding dependency
+
+ * 1 - Bidirectional binding dependency
+
+5.1.3.10. Bound Message ID (BOUND-MSG-ID)
+
+ Type: 0x00A
+
+ Length: Fixed - 5 32-bit words
+
+ Value: contains a 1-bit Message_Binding_Type (D) that indicates the
+ dependency relation of a message binding. The rest specifies a
+ 128-bit randomly generated value that refers to a Message ID in
+ another message.
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 59]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ 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 |D|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ + +
+ | |
+ + Bound Message ID +
+ | |
+ + +
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The Message Binding Codes are:
+
+ * 0 - Unidirectional binding dependency
+
+ * 1 - Bidirectional binding dependency
+
+5.1.3.11. QoS Specification (QSPEC)
+
+ Type: 0x00B
+
+ Length: Variable
+
+ Value: Variable-length QSPEC (QoS specification) information, which
+ is dependent on the QoS model.
+
+ The contents and encoding rules for this object are specified in
+ other documents. See [RFC5975].
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ // QSPEC Data //
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+5.2. General Processing Rules
+
+ This section provides the general processing rules used by QoS-NSLP.
+ The triggers communicated between RM/QOSM and QoS-NSLP
+ functionalities are given in Appendices Appendix A.1, Appendix A.2,
+ and Appendix A.3.
+
+
+
+
+
+Manner, et al. Experimental [Page 60]
+
+RFC 5974 QoS NSLP October 2010
+
+
+5.2.1. State Manipulation
+
+ The processing of a message and its component objects involves
+ manipulating the QoS NSLP and reservation state of a QNE.
+
+ For each flow, a QNE stores (RMF-related) reservation state that
+ depends on:
+
+ o the QoS model / QSPEC used,
+
+ o the QoS NSLP operation state, which includes non-persistent state
+ (e.g., the API parameters while a QNE is processing a message),
+ and
+
+ o the persistent state, which is kept as long as the session is
+ active.
+
+ The persistent QoS NSLP state is conceptually organized in a table
+ with the following structure. The primary key (index) for the table
+ is the SESSION-ID:
+
+ SESSION-ID
+ A 128-bit identifier.
+
+ The state information for a given key includes:
+
+ Flow ID
+ Based on GIST MRI. Several entries are possible in case of
+ mobility events.
+
+ SII-Handle for each upstream and downstream peer
+ The SII-Handle is a local identifier generated by GIST and passed
+ over the API. It is a handle that allows to refer to a particular
+ GIST next hop. See SII-Handle in [RFC5971] for more information.
+
+ RSN from the upstream peer
+ The RSN is a 32-bit counter.
+
+ The latest local RSN
+ A 32-bit counter.
+
+ List of RII for outstanding responses with processing information.
+ The RII is a 32-bit number.
+
+ State lifetime
+ The state lifetime indicates how long the state that is being
+ signaled for remains valid.
+
+
+
+
+Manner, et al. Experimental [Page 61]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ List of bound sessions
+ A list of BOUND-SESSION-ID 128-bit identifiers for each session
+ bound to this state.
+
+ Scope of the signaling
+ If the Proxy scope is used, a flag is needed to identify all
+ signaling of this session as being scoped.
+
+ Adding the state requirements of all these items gives an upper bound
+ on the state to be kept by a QNE. The need to keep state depends on
+ the desired functionality at the NSLP layer.
+
+5.2.2. Message Forwarding
+
+ QoS NSLP messages are sent peer-to-peer along the path. The QoS NSLP
+ does not have the concept of a message being sent directly to the end
+ of the path. Instead, messages are received by a QNE, which may then
+ send another message (which may be identical to the received message
+ or contain some subset of objects from it) to continue in the same
+ direction (i.e., towards the QNI or QNR) as the message received.
+
+ The decision on whether to generate a message to forward may be
+ affected by the value of the SCOPING or PROXY flags, or by the
+ presence of an RII object.
+
+5.2.3. Standard Message Processing Rules
+
+ If a mandatory object is missing from a message then the receiving
+ QNE MUST NOT propagate the message any further. It MUST construct a
+ RESPONSE message indicating the error condition and send it back to
+ the peer QNE that sent the message.
+
+ If a message contains an object of an unrecognised type, then the
+ behavior depends on the AB extensibility flags.
+
+ If the Proxy scope flag was set in an incoming QoS NSLP message, the
+ QNE must set the same flag in all QoS NSLP messages it sends that are
+ related to this session.
+
+5.2.4. Retransmissions
+
+ Retransmissions may happen end-to-end (e.g., between QNI and QNR
+ using an RII object) or peer-to-peer (between two adjacent QNEs).
+ When a QNE transmits a RESERVE with an RII object set, it waits for a
+ RESPONSE from the responding QNE. QoS NSLP messages for which a
+ response is requested by including an RII object, but that fail to
+ elicit a response are retransmitted. Similarly, a QNE may include
+ the ACK-REQ flag to request confirmation of a refresh message
+
+
+
+Manner, et al. Experimental [Page 62]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ reception from its immediate peer. The retransmitted message should
+ be exactly the same as the original message, e.g., the RSN is not
+ modified with each retransmission.
+
+ The initial retransmission occurs after a QOSNSLP_REQUEST_RETRY wait
+ period. Retransmissions MUST be made with exponentially increasing
+ wait intervals (doubling the wait each time). QoS NSLP messages
+ SHOULD be retransmitted until either a RESPONSE (which might be an
+ error) has been obtained, or until QOSNSLP_RETRY_MAX seconds after
+ the initial transmission. In the latter case, a failure SHOULD be
+ indicated to the signaling application. The default values for the
+ above-mentioned timers are:
+
+ QOSNSLP_REQUEST_RETRY: 2 seconds Wait interval before initial
+ retransmit of the message
+
+ QOSNSLP_RETRY_MAX: 30 seconds Period to retry sending the
+ message before giving up
+
+ Retransmissions SHOULD be disabled for tear messages.
+
+5.2.5. Rerouting
+
+5.2.5.1. Last Node Behavior
+
+ As discussed in Section 3.2.12, some care needs to be taken to handle
+ cases where the last node on the path may change.
+
+ A node that is the last node on the path, but not the data receiver
+ (or an explicitly configured proxy for it), MUST continue to attempt
+ to send messages downstream to probe for path changes. This must be
+ done in order to handle the "Path Extension" case described in
+ Section 5.2.5.1.
+
+ A node on the path, that was not previously the last node, MUST take
+ over as the last node on the signaling path if GIST path change
+ detection identifies that there are no further downstream nodes on
+ the path. This must be done in order to handle the "Path Truncation"
+ case described in Section 5.2.5.1.
+
+5.2.5.2. Avoiding Mistaken Teardown
+
+ In order to handle the spurious route change problem described in
+ Section 3.2.12.2, the RSN must be used in a particular way when
+ maintaining the reservation after a route change is believed to have
+ occurred.
+
+ We assume that the current RSN (RSN[current]) is initially RSN0.
+
+
+
+Manner, et al. Experimental [Page 63]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ When a route change is believed to have occurred, the QNE SHOULD send
+ a RESERVE message, including the full QSPEC. This must contain an
+ RSN which is RSN[current] = RSN0 + 2. It SHOULD include an RII to
+ request a response from the QNR. An SII-Handle MUST NOT be specified
+ when passing this message over the API to GIST, so that the message
+ is correctly routed to the new peer QNE.
+
+ When the QNE receives the RESPONSE message that relates to the
+ RESERVE message sent down the new path, it SHOULD send a RESERVE
+ message with the TEAR flag sent down the old path. To do so, it MUST
+ request GIST to use its explicit routing mechanism, and the QoS NSLP
+ MUST supply an SII-Handle relating to the old peer QNE. When sending
+ this RESERVE message, it MUST contain an RSN that is RSN[current] -
+ 1. (RSN[current] remains unchanged.)
+
+ If the RESPONSE received after sending the RESERVE down the new path
+ contains the code "Refresh successful" in the INFO-SPEC, then the QNE
+ MAY elect not to send the tearing RESERVE, since this indicates that
+ the path is unchanged.
+
+5.2.5.3. Upstream Route Change Notification
+
+ GIST may notify the QoS NSLP that a possible upstream route change
+ has occurred over the GIST API. On receiving such a notification,
+ the QoS NSLP SHOULD send a NOTIFY message with Informational code
+ 0x02 for signaling sessions associated with the identified MRI. If
+ this is sent, it MUST be sent to the old peer using the GIST explicit
+ routing mechanism through the use of the SII-Handle.
+
+ On receiving such a NOTIFY message, the QoS NSLP SHOULD use the
+ InvalidateRoutingState API call to inform GIST that routing state may
+ be out of date. The QoS NSLP SHOULD send a NOTIFY message upstream.
+ The NOTIFY message should be propagated back to the QNI or QNR.
+
+5.2.5.4. Route Change Oscillation
+
+ In some circumstances, a route change may occur, but the path then
+ falls back to the original route.
+
+ After a route change the routers on the old path will continue to
+ refresh the reservation until soft state times out or an explicit
+ TEAR is received.
+
+ After detecting an upstream route change, a QNE SHOULD consider the
+ new upstream peer as current and not fall back to the old upstream
+ peer unless:
+
+
+
+
+
+Manner, et al. Experimental [Page 64]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ o it stops receiving refreshes from the old upstream peer for at
+ least the soft-state timeout period and then starts receiving
+ messages from the old upstream peer again, or
+
+ o it stops receiving refreshes from the new upstream peer for at
+ least the soft-state timeout period.
+
+ GIST routing state keeps track of the latest upstream peer it has
+ seen, and so may spuriously indicate route changes occur when the old
+ upstream peer refreshes its routing state until the state at that
+ node is explicitly torn down or times out.
+
+5.3. Object Processing
+
+ This section presents processing rules for individual QoS NSLP
+ objects.
+
+5.3.1. Reservation Sequence Number (RSN)
+
+ A QNE's own RSN is a sequence number which applies to a particular
+ signaling session (i.e., with a particular SESSION-ID). It MUST be
+ incremented for each new RESERVE message where the reservation for
+ the session changes. The RSN is manipulated using the serial number
+ arithmetic rules from [RFC1982], which also defines wrapping rules
+ and the meaning of 'equals', 'less than', and 'greater than' for
+ comparing sequence numbers in a circular sequence space.
+
+ The RSN starts at zero. It is stored as part of the per-session
+ state, and it carries on incrementing (i.e., it is not reset to zero)
+ when a downstream peer change occurs. (Note that Section 5.2.5.2
+ provides some particular rules for use when a downstream peer
+ changes.)
+
+ The RSN object also contains an Epoch Identifier, which provides a
+ method for determining when a peer has restarted (e.g., due to node
+ reboot or software restart). The exact method for providing this
+ value is implementation defined. Options include storing a serial
+ number that is incremented on each restart, picking a random value on
+ each restart, or using the restart time.
+
+ On receiving a RESERVE message a QNE examines the Epoch Identifier to
+ determine if the peer sending the message has restarted. If the
+ Epoch Identifier is different to that stored for the reservation then
+ the RESERVE message MUST be treated as an updated reservation (even
+ if the RSN is less than the current stored value), and the stored RSN
+ and Epoch Identifier MUST be updated to the new values.
+
+
+
+
+
+Manner, et al. Experimental [Page 65]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ When receiving a RESERVE message, a QNE uses the RSN given in the
+ message to determine whether the state being requested is different
+ to that already stored. If the RSN is equal to that stored for the
+ current reservation, the current state MUST be refreshed. If the RSN
+ is greater than the current stored value, the current reservation
+ MUST be modified appropriately as specified in the QSPEC (provided
+ that admission control and policy control succeed), and the stored
+ RSN value updated to that for the new reservation. If the RSN is
+ greater than the current stored value and the RESERVE was a reduced
+ refresh, the QNE SHOULD send upstream a transient error message "Full
+ QSPEC required". If the RSN is less than the current value, then it
+ indicates an out-of-order message, and the RESERVE message MUST be
+ discarded.
+
+ If the QNE does not store per-session state (and so does not keep any
+ previous RSN values), then it MAY ignore the value of the RSN. It
+ MUST also copy the same RSN into the RESERVE message (if any) that it
+ sends as a consequence of receiving this one.
+
+5.3.2. Request Identification Information (RII)
+
+ A QNE sending QUERY or RESERVE messages may require a response to be
+ sent. It does so by including a Request Identification Information
+ (RII) object. When creating an RII object, the QNE MUST select the
+ value for the RII such that it is probabilistically unique within the
+ given session. A RII object is typically set by the QNI.
+
+ A number of choices are available when implementing this.
+ Possibilities might include using a random value, or a node
+ identifier together with a counter. If the value collides with one
+ selected by another QNE for a different QUERY, then RESPONSE messages
+ may be incorrectly terminated, and may not be passed back to the node
+ that requested them.
+
+ The node that created the RII object MUST remember the value used in
+ the RII in order to match back any RESPONSE it will receive. The
+ node SHOULD use a timer to identify situations where it has taken too
+ long to receive the expected RESPONSE. If the timer expires without
+ receiving a RESPONSE, the node MAY perform a retransmission as
+ discussed in Section 5.2.4. In this case, the QNE MUST NOT generate
+ any RESPONSE or NOTIFY message to notify this error.
+
+ If an intermediate QNE wants to receive a response for an outgoing
+ message, but the message already included an RII when it arrived, the
+ QNE MUST NOT add a new RII object nor replace the old RII object, but
+ MUST simply remember this RII in order to match a later RESPONSE
+ message. When it receives the RESPONSE, it forwards the RESPONSE
+ upstream towards the RII originating node. Note that only the node
+
+
+
+Manner, et al. Experimental [Page 66]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ that originally created the RII can set up a retransmission timer.
+ Thus, if an intermediate QNE decides to use the RII already contained
+ in the message, it MUST NOT set up a retransmission timer, but rely
+ on the retransmission timer set up by the QNE that inserted the RII.
+
+ When receiving a message containing an RII object the node MUST send
+ a RESPONSE if
+
+ o The SCOPING flag is set ('next hop' scope),
+
+ o The PROXY scope flag is set and the QNE is the P-QNE, or
+
+ o This QNE is the last one on the path for the given session.
+
+ and the QNE keeps per-session state for the given session.
+
+ In the rare event that the QNE wants to request a response for a
+ message that already included an RII, and this RII value conflicts
+ with an existing RII value on the QNE, the node should interrupt the
+ processing the message, send an error message upstream to indicate an
+ RII collision, and request a retry with a new RII value.
+
+5.3.3. BOUND-SESSION-ID
+
+ As shown in the examples in Section 4, the QoS NSLP can relate
+ multiple sessions together. It does this by including the SESSION-ID
+ from one session in a BOUND-SESSION-ID object in messages in another
+ session.
+
+ When receiving a message with a BOUND-SESSION-ID object, a QNE MUST
+ copy the BOUND-SESSION-ID object into all messages it sends for the
+ same session. A QNE that stores per-session state MUST store the
+ value of the BOUND-SESSION-ID.
+
+ The BOUND-SESSION-ID is only indicative in nature. However, a QNE
+ implementation may use BOUND-SESSION-ID information to optimize
+ resource allocation, e.g., for bidirectional reservations. When
+ receiving a teardown message (e.g., a RESERVE message with teardown
+ semantics) for an aggregate reservation, the QNE may use this
+ information to initiate a teardown for end-to-end sessions bound to
+ the aggregate. A QoS NSLP implementation MUST be ready to process
+ more than one BOUND-SESSION-ID object within a single message.
+
+5.3.4. REFRESH-PERIOD
+
+ Refresh timer management values are carried by the REFRESH-PERIOD
+ object, which has local significance only. At the expiration of a
+ "refresh timeout" period, each QNE independently examines its state
+
+
+
+Manner, et al. Experimental [Page 67]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ and sends a refreshing RESERVE message to the next QNE peer where it
+ is absorbed. This peer-to-peer refreshing (as opposed to the QNI
+ initiating a refresh that travels all the way to the QNR) allows QNEs
+ to choose refresh intervals as appropriate for their environment.
+ For example, it is conceivable that refreshing intervals in the
+ backbone, where reservations are relatively stable, are much larger
+ than in an access network. The "refresh timeout" is calculated
+ within the QNE and is not part of the protocol; however, it must be
+ chosen to be compatible with the reservation lifetime as expressed by
+ the REFRESH-PERIOD and with an assessment of the reliability of
+ message delivery.
+
+ The details of timer management and timer changes (slew handling and
+ so on) are identical to the ones specified in Section 3.7 of RFC 2205
+ [RFC2205].
+
+ There are two time parameters relevant to each QoS NSLP state in a
+ node: the refresh period R between generation of successive refreshes
+ for the state by the neighbor node, and the local state's lifetime L.
+ Each RESERVE message may contain a REFRESH-PERIOD object specifying
+ the R value that was used to generate this (refresh) message. This R
+ value is then used to determine the value for L when the state is
+ received and stored. The values for R and L may vary from peer to
+ peer.
+
+5.3.5. INFO-SPEC
+
+ The INFO-SPEC object is carried by the RESPONSE and NOTIFY messages,
+ and it is used to report a successful, an unsuccessful, or an error
+ situation. In case of an error situation, the error messages SHOULD
+ be generated even if no RII object is included in the RESERVE or in
+ the QUERY messages. Note that when the TEAR flag is set in the
+ RESERVE message an error situation SHOULD NOT trigger the generation
+ of a RESPONSE message.
+
+ Six classes of INFO-SPEC objects are identified and specified in
+ Section 5.1.3.6. The message processing rules for each class are
+ defined below.
+
+ A RESPONSE message MUST carry INFO-SPEC objects towards the QNI. The
+ RESPONSE message MUST be forwarded unconditionally up to the QNI.
+ The actions that SHOULD be undertaken by the QNI that receives the
+ INFO-SPEC object are specified by the local policy of the QoS model
+ supported by this QNE. The default action is that the QNI that
+ receives the INFO-SPEC object SHOULD NOT trigger any other QoS NSLP
+ procedure.
+
+
+
+
+
+Manner, et al. Experimental [Page 68]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The Informational INFO-SPEC class MUST be generated by a stateful QoS
+ NSLP QNE when an Informational error class is caught. The
+ Informational INFO-SPEC object MUST be carried by a RESPONSE or a
+ NOTIFY message.
+
+ In case of a unidirectional reservation, the Success INFO-SPEC class
+ MUST be generated by a stateful QoS NSLP QNR when a RESERVE message
+ is received and the reservation state installation or refresh
+ succeeded. In case of a bidirectional reservation, the INFO-SPEC
+ object SHOULD be generated by a stateful QoS NSLP QNE when a RESERVE
+ message is received and the reservation state installation or refresh
+ succeeded. The Success INFO-SPEC object MUST be carried by a
+ RESPONSE or a NOTIFY message.
+
+ In case of a unidirectional reservation, the Protocol Error INFO-SPEC
+ class MUST be generated by a stateful QoS NSLP QNE when a RESERVE or
+ QUERY message is received by the QNE and a protocol error is caught.
+ In case of a bidirectional reservation, the Protocol Error INFO-SPEC
+ class SHOULD be generated by a stateful QoS NSLP QNE when a RESERVE
+ or QUERY message is received by the QNE and a protocol error is
+ caught. A RESPONSE message MUST carry this object, which MUST be
+ forwarded unconditionally towards the upstream QNE that generated the
+ RESERVE or QUERY message that triggered the generation of this INFO-
+ SPEC object. The default action for a stateless QoS NSLP QNE that
+ detects such an error is that none of the QoS NSLP objects SHOULD be
+ processed, and the RESERVE or QUERY message SHOULD be forwarded
+ downstream.
+
+ In case of a unidirectional reservation, the Transient Failure INFO-
+ SPEC class MUST be generated by a stateful QoS NSLP QNE when a
+ RESERVE or QUERY message is received by the QNE and one Transient
+ failure error code is caught, or when an event happens that causes a
+ transient error. In case of a bidirectional reservation, the
+ Transient Failure INFO-SPEC class SHOULD be generated by a stateful
+ QoS NSLP QNE when a RESERVE or QUERY message is received by the QNE
+ and one Transient failure error code is caught.
+
+ A RESPONSE message MUST carry this object, which MUST be forwarded
+ unconditionally towards the upstream QNE that generated the RESERVE
+ or QUERY message that triggered the generation of this INFO-SPEC
+ object. The transient RMF-related error MAY also be carried by a
+ NOTIFY message. The default action is that the QNE that receives
+ this INFO-SPEC object SHOULD re-trigger the retransmission of the
+ RESERVE or QUERY message that triggered the generation of the INFO-
+ SPEC object. The default action for a stateless QoS NSLP QNE that
+ detects such an error is that none of the QoS NSLP objects SHOULD be
+ processed and the RESERVE or QUERY message SHOULD be forwarded
+ downstream.
+
+
+
+Manner, et al. Experimental [Page 69]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ In case of a unidirectional reservation, the Permanent Failure INFO-
+ SPEC class MUST be generated by a stateful QoS NSLP QNE when a
+ RESERVE or QUERY message is received by a QNE and an internal or
+ system error occurred, or authorization failed. In case of a
+ bidirectional reservation, the Permanent Failure INFO-SPEC class
+ SHOULD be generated by a stateful QoS NSLP QNE when a RESERVE or
+ QUERY message is received by a QNE and an internal or system error
+ occurred, or authorization failed. A RESPONSE message MUST carry
+ this object, which MUST be forwarded unconditionally towards the
+ upstream QNE that generated the RESERVE or QUERY message that
+ triggered this protocol error. The internal, system, or permanent
+ RMF-related errors MAY also be carried by a NOTIFY message. The
+ default action for a stateless QoS NSLP QNE that detects such an
+ error is that none of the QoS NSLP objects SHOULD be processed and
+ the RESERVE or QUERY message SHOULD be forwarded downstream.
+
+ The QoS-specific error class may be used when errors outside the QoS
+ NSLP itself occur that are related to the particular QoS model being
+ used. The processing rules of these errors are not specified in this
+ document.
+
+5.3.6. SESSION-ID-LIST
+
+ A SESSION-ID-LIST is carried in RESERVE messages. It is used in two
+ cases, to refresh or to tear down the indicated sessions. A SESSION-
+ ID-LIST carries information about sessions that should be refreshed
+ or torn down, in addition to the main (primary) session indicated in
+ the RESERVE.
+
+ If the primary SESSION-ID is not understood, the SESSION-ID-LIST
+ object MUST NOT be processed.
+
+ When a stateful QNE goes through the SESSION-ID-LIST, if it finds one
+ or more unknown SESSION-ID values, it SHOULD construct an
+ informational RESPONSE message back to the upstream stateful QNE with
+ the error code for unknown SESSION-ID in SESSION-ID-LIST, and include
+ all unknown SESSION-IDs in a SESSION-ID-LIST.
+
+ If the RESERVE is a tear, for each session in the SESSION-ID-LIST,
+ the stateful QNE MUST inform the RMF that the reservation is no
+ longer required. RSN values MUST also be interpreted in order to
+ distinguish whether the tear down is valid, or whether it is
+ referring to an old state, and, thus, should be silently discarded.
+
+ If the RESERVE is a refresh, the stateful QNE MUST also process the
+ RSN-LIST object as detailed in the next section.
+
+
+
+
+
+Manner, et al. Experimental [Page 70]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ If the RESERVE is a tear, for each session in the SESSION-ID-LIST,
+ the QNE MUST inform the RMF that the reservation is no longer
+ required. RSN values MUST be interpreted.
+
+ Note that a stateless QNE cannot support summary or single reduced
+ refreshes, and always needs full single refreshes.
+
+5.3.7. RSN-LIST
+
+ An RSN-LIST MUST be carried in RESERVE messages when a QNE wants to
+ perform a refresh or teardown of several sessions with a single NSLP
+ message. The RSN-LIST object MUST be populated with RSN values of
+ the same sessions and in the same order as indicated in the SESSION-
+ ID-LIST. Thus, entries in both objects at position X refer to the
+ same session.
+
+ If the primary session and RSN reference in the RESERVE were not
+ understood, the stateful QNE MUST NOT process the RSN-LIST. Instead,
+ an error RESPONSE SHOULD be sent back to the upstream stateful QNE.
+
+ On receiving an RSN-LIST object, the stateful QNE should check
+ whether the number of items in the SESSION-ID-LIST and RSN-LIST
+ objects match. If there is a mismatch, the stateful QNE SHOULD send
+ back a protocol error indicating a bad value in the object.
+
+ While matching the RSN-LIST values to the SESSION-ID-LIST values, if
+ one or more RSN values in the RSN-LIST are not in synch with the
+ local values, the stateful QNE SHOULD construct an informational
+ RESPONSE message with an error code for RSN mismatch in the RSN-LIST.
+ The stateful QNE MUST include the erroneous SESSION-ID and RSN values
+ in SESSION-ID-LIST and RSN-LIST objects in the RESPONSE.
+
+ If no errors were found in processing the RSN-LIST, the stateful QNE
+ refreshes the reservation states of all sessions -- the primary
+ single session indicated in the refresh, and all sessions in the
+ SESSION-ID-LIST.
+
+ For each successfully processed session in the RESERVE, the stateful
+ QNE performs a refresh of the reservation state. Thus, even if some
+ sessions were not in synch, the remaining sessions in the SESSION-ID-
+ LIST and RSN-LIST are refreshed.
+
+5.3.8. QSPEC
+
+ The contents of the QSPEC depend on the QoS model being used. A
+ template for QSPEC objects can be found in [RFC5975].
+
+
+
+
+
+Manner, et al. Experimental [Page 71]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Upon reception, the complete QSPEC is passed to the Resource
+ Management Function (RMF), along with other information from the
+ message necessary for the RMF processing. A QNE may also receive an
+ INFO-SPEC that includes a partial or full QSPEC. This will also be
+ passed to the RMF.
+
+5.4. Message Processing Rules
+
+ This section provides rules for message processing. Not all possible
+ error situations are considered. A general rule for dealing with
+ erroneous messages is that a node should evaluate the situation
+ before deciding how to react. There are two ways to react to
+ erroneous messages:
+
+ a) Silently drop the message, or
+
+ b) Drop the message, and reply with an error code to the sender.
+
+ The default behavior, in order to protect the QNE from a possible
+ denial-of-service attack, is to silently drop the message. However,
+ if the QNE is able to authenticate the sender, e.g., through GIST,
+ the QNE may send a proper error message back to the neighbor QNE in
+ order to let it know that there is an inconsistency in the states of
+ adjacent QNEs.
+
+5.4.1. RESERVE Messages
+
+ The RESERVE message is used to manipulate QoS reservation state in
+ QNEs. A RESERVE message may create, refresh, modify, or remove such
+ state. A QNE sending a RESERVE MAY require a response to be sent by
+ including a Request Identification Information (RII) object; see
+ Section 5.3.2.
+
+ RESERVE messages MUST only be sent towards the QNR. A QNE that
+ receives a RESERVE message checks the message format. In case of
+ malformed messages, the QNE MAY send a RESPONSE message with the
+ appropriate INFO-SPEC.
+
+ Before performing any state-changing actions, a QNE MUST determine
+ whether the request is authorized. The way to do this check depends
+ on the authorization model being used.
+
+ When the RESERVE is authorized, a QNE checks the COMMON-HEADER flags.
+ If the TEAR flag is set, the message is a tearing RESERVE that
+ indicates complete QoS NSLP state removal (as opposed to a
+ reservation of zero resources). On receiving such a RESERVE message,
+
+
+
+
+
+Manner, et al. Experimental [Page 72]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ the QNE MUST inform the RMF that the reservation is no longer
+ required. The RSN value MUST be processed. After this, there are
+ two modes of operation:
+
+ 1. If the tearing RESERVE did not include an RII, i.e., the QNI did
+ not want a confirmation, the QNE SHOULD remove the QoS NSLP
+ state. It MAY signal to GIST (over the API) that reverse-path
+ state for this reservation is no longer required. Any errors in
+ processing the tearing RESERVE SHOULD NOT be sent back towards
+ the QNI since the upstream QNEs will already have removed their
+ session states; thus, they are unable to do anything to the
+ error.
+
+ 2. If an RII was included, the stateful QNE SHOULD still keep the
+ NSLP operational state until a RESPONSE for the tear going
+ towards the QNI is received. This operational state SHOULD be
+ kept for one refresh interval, after which the NSLP operational
+ state for the session is removed. Depending on the QoS model,
+ the tear message MAY include a QSPEC to further specify state
+ removal. If the QoS model requires a QSPEC, and none is
+ provided, the QNE SHOULD reply with an error message and SHOULD
+ NOT remove the reservation.
+
+ If the tearing RESERVE includes a QSPEC, but none is required by the
+ QoS model, the QNE MAY silently discard the QSPEC and proceed as if
+ it did not exist in the message. In general, a QoS NSLP
+ implementation should carefully consider when an error message should
+ be sent, and when not. If the tearing RESERVE did not include an
+ RII, then the upstream QNE has removed the RMF and NSLP states, and
+ it will not be able to do anything to the error. If an RII was
+ included, the upstream QNE may still have the NSLP operational state,
+ but no RMF state.
+
+ If a QNE receives a tearing RESERVE for a session for which it still
+ has the operational state, but the RMF state was removed, the QNE
+ SHOULD accept the message and forward it downstream as if all is
+ well.
+
+ If the tearing RESERVE includes a SESSION-ID-LIST, the stateful QNE
+ MUST process the object as described earlier in this document, and
+ for each identified session, indicate to the RMF that the reservation
+ is no longer required.
+
+ If a QNE receives a refreshing RESERVE for a session for which it
+ still has the operational state, but the RMF state was removed, the
+ QNE MUST silently drop the message and not forward it downstream.
+
+
+
+
+
+Manner, et al. Experimental [Page 73]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ As discussed in Section 5.2.5.2, to avoid incorrect removal of state
+ after a rerouting event, a node receiving a RESERVE message that has
+ the TEAR flag set and that does not come from the current peer QNE
+ (identified by its SII) MUST be ignored and MUST NOT be forwarded.
+
+ If the QNE has reservations that are bound and dependent to this
+ session (they contain the SESSION-ID of this session in their BOUND-
+ SESSION-ID object and use Binding Code 0x04), it MUST send a NOTIFY
+ message for each of the reservations with an appropriate INFO-SPEC.
+ If the QNE has reservations that are bound, but that they are not
+ dependent to this session (the Binding Code in the BOUND-SESSION-ID
+ object has one of the values: 0x01, 0x02, or 0x03), it MAY send a
+ NOTIFY message for each of the reservations with an appropriate INFO-
+ SPEC. The QNE MAY elect to send RESERVE messages with the TEAR flag
+ set for these reservations.
+
+ The default behavior of a QNE that receives a RESERVE with a
+ SESSION-ID for which it already has state installed but with a
+ different flow ID is to replace the existing reservation (and to tear
+ down the reservation on the old branch if the RESERVE is received
+ with a different SII).
+
+ In some cases, this may not be the desired behavior, so the QNI or a
+ QNE MAY set the REPLACE flag in the common header to zero to indicate
+ that the new session does not replace the existing one.
+
+ A QNE that receives a RESERVE with the REPLACE flag set to zero but
+ with the same SII will indicate REPLACE=0 to the RMF (where it will
+ be used for the resource handling). Furthermore, if the QNE
+ maintains a QoS NSLP state, then it will also add the new flow ID in
+ the QoS NSLP state. If the SII is different, this means that the QNE
+ is a merge point. In that case, in addition to the operations
+ specified above, the value REPLACE=0 is also indicating that a
+ tearing RESERVE SHOULD NOT be sent on the old branch.
+
+ When a QNE receives a RESERVE message with an unknown SESSION-ID and
+ this message contains no QSPEC because it was meant as a refresh,
+ then the node MUST send a RESPONSE message with an INFO-SPEC that
+ indicates a missing QSPEC to the upstream peer ("Full QSPEC
+ required"). The upstream peer SHOULD send a complete RESERVE (i.e.,
+ one containing a QSPEC) on the new path (new SII).
+
+ At a QNE, resource handling is performed by the RMF. For sessions
+ with the REPLACE flag set to zero, we assume that the QoS model
+ includes directions to deal with resource sharing. This may include
+ adding the reservations or taking the maximum of the two or more
+ complex mathematical operations.
+
+
+
+
+Manner, et al. Experimental [Page 74]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ This resource-handling mechanism in the QoS model is also applicable
+ to sessions that have different SESSION-IDs but that are related
+ through the BOUND-SESSION-ID object. Session replacement is not an
+ issue here, but the QoS model may specify whether or not to let the
+ sessions that are bound together share resources on common links.
+
+ Finally, it is possible that a RESERVE is received with no QSPEC at
+ all. This is the case of a reduced refresh. In this case, rather
+ than sending a refreshing RESERVE with the full QSPEC, only the
+ SESSION-ID and the RSN are sent to refresh the reservation. Note
+ that this mechanism just reduces the message size (and probably eases
+ processing). One RESERVE per session is still needed. Such a
+ reduced refresh may further include a SESSION-ID-LIST and RSN-LIST,
+ which indicate further sessions to be refreshed along the primary
+ session. The processing of these objects was described earlier in
+ this document.
+
+ If the REPLACE flag is set, the QNE SHOULD update the reservation
+ state according to the QSPEC contained in the message (if the QSPEC
+ is missing, the QNE SHOULD indicate this error by replying with a
+ RESPONSE containing the corresponding INFO-SPEC "Full QSPEC
+ required"). It MUST update the lifetime of the reservation. If the
+ REPLACE flag is not set, a QNE SHOULD NOT remove the old reservation
+ state if the SII that is passed by GIST over the API is different
+ than the SII that was stored for this reservation. The QNE MAY elect
+ to keep sending refreshing RESERVE messages.
+
+ If a stateful QoS NSLP QNE receives a RESERVE message with the BREAK
+ flag set, then the BREAK flag of newly generated messages (e.g.,
+ RESERVE or RESPONSE) MUST be set. When a stateful QoS NSLP QNE
+ receives a RESERVE message with the BREAK flag not set, then the IP-
+ TTL and Original-TTL values in the GIST RecvMessage primitive MUST be
+ monitored. If they differ, it is RECOMMENDED to set the BREAK flag
+ in newly generated messages (e.g., RESERVE or RESPONSE). In
+ situations where a QNE or a domain is able to provide QoS using other
+ means (see Section 3.3.5), the BREAK flag SHOULD NOT be set.
+
+ If the RESERVE message included an RII, and any of the following are
+ true, the QNE MUST send a RESPONSE message:
+
+ o If the QNE is configured, for a particular session, to be a QNR,
+
+ o the SCOPING flag is set,
+
+ o the Proxy scope flag is set and the QNE is a P-QNE, or
+
+ o the QNE is the last QNE on the path to the destination.
+
+
+
+
+Manner, et al. Experimental [Page 75]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ When a QNE receives a RESERVE message, its processing may involve
+ sending out another RESERVE message.
+
+ If a QNE has received a RESPONSE mandating the use of full refreshes
+ from its downstream peer for a session, the QNE MUST continue to use
+ full refresh messages.
+
+ If the session of this message is bound to another session, then the
+ RESERVE message MUST include the SESSION-ID of that other session in
+ a BOUND-SESSION-ID object. In the situation of aggregated tunnels,
+ the aggregated session MAY not include the SESSION-ID of its bound
+ sessions in BOUND-SESSION-ID(s).
+
+ In case of receiver-initiated reservations, the RESERVE message must
+ follow the same path that has been followed by the QUERY message.
+ Therefore, GIST is informed, over the QoS NSLP/GIST API, to pass the
+ message upstream, i.e., by setting GIST "D" flag; see GIST [RFC5971].
+
+ The QNE MUST create a new RESERVE and send it to its next peer, when:
+
+ - A new resource setup was done,
+
+ - A new resource setup was not done, but the QOSM still defines that
+ a RESERVE must be propagated,
+
+ - The RESERVE is a refresh and includes a new MRI, or
+
+ - If the RESERVE-INIT flag is included in an arrived QUERY.
+
+ If the QNE sent out a refresh RESERVE with the ACK-REQ flag set, and
+ did not receive a RESPONSE from its immediate stateful peer within
+ the retransmission period of QOSNSLP_RETRY_MAX, the QNE SHOULD send a
+ NOTIFY to its immediate upstream stateful peer and indicate "Path
+ truncated - Next peer dead" in the INFO-SPEC. The ACK-REQ flag
+ SHOULD NOT be added to a RESERVE that already include an RII object,
+ since a confirmation from the QNR has already been requested.
+
+ Finally, if a received RESERVE requested acknowledgement through the
+ ACK-REQ flag in the COMMON HEADER flags and the processing of the
+ message was successful, the stateful QNE SHOULD send back a RESPONSE
+ with an INFO-SPEC carrying the acknowledgement success code. The QNE
+ MAY include the ACK-REQ flag in the next refresh message it will send
+ for the session. The use of the ACK-REQ-flag for diagnostic purposes
+ is a policy issue. An acknowledged refresh message can be used to
+ probe the end-to-end path in order to check that it is still intact.
+
+
+
+
+
+
+Manner, et al. Experimental [Page 76]
+
+RFC 5974 QoS NSLP October 2010
+
+
+5.4.2. QUERY Messages
+
+ A QUERY message is used to request information about the data path
+ without making a reservation. This functionality can be used to
+ 'probe' the network for path characteristics or for support of
+ certain QoS models, or to initiate a receiver-initiated reservation.
+
+ A QNE sending a QUERY indicates a request for a response by including
+ a Request Identification Information (RII) object; see Section 5.3.2.
+ A request to initiate a receiver-initiated reservation is done
+ through the RESERVE-INIT flag; see Section 5.1.2.2.
+
+ When a QNE receives a QUERY message the QSPEC is passed to the RMF
+ for processing. The RMF may return a modified QSPEC that is used in
+ any QUERY or RESPONSE message sent out as a result of the QUERY
+ processing.
+
+ When processing a QUERY message, a QNE checks whether the RESERVE-
+ INIT flag is set. If the flag is set, the QUERY is used to install
+ reverse-path state. In this case, if the QNE is not the QNI, it
+ creates a new QUERY message to send downstream. The QSPEC MUST be
+ passed to the RMF where it may be modified by the QoS-model-specific
+ QUERY processing. If the QNE is the QNI, the QNE creates a RESERVE
+ message, which contains a QSPEC received from the RMF and which may
+ be based on the received QSPEC. If this node was not expecting to
+ perform a receiver-initiated reservation, then an error MUST be sent
+ back along the path.
+
+ The QNE MUST generate a RESPONSE message and pass it back along the
+ reverse of the path used by the QUERY if:
+
+ o an RII object is present,
+
+ o the QNE is the QNR,
+
+ o the SCOPING flag is set, or
+
+ o the PROXY scope flag is set, and the QNE is a P-QNE.
+
+ If an RII object is present, and if the QNE is the QNR, the SCOPING
+ flag is set or the PROXY scope flag is set and the QNE is a P-QNE,
+ the QNE MUST generate a RESPONSE message and pass it back along the
+ reverse of the path used by the QUERY.
+
+ In other cases, the QNE MUST generate a QUERY message that is then
+ forwarded further along the path using the same MRI, Session ID, and
+ Direction as provided when the QUERY was received over the GIST API.
+
+
+
+
+Manner, et al. Experimental [Page 77]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ The QSPEC to be used is that provided by the RMF as described
+ previously. When generating a QUERY to send out to pass the query
+ further along the path, the QNE MUST copy the RII object (if present)
+ unchanged into the new QUERY message. A QNE that is also interested
+ in the response to the query keeps track of the RII to identify the
+ RESPONSE when it passes through it.
+
+ Note that QUERY messages with the RESERVE-INIT flag set MUST be
+ answered by the QNR. This feature may be used, e.g., following
+ handovers, to set up new path state in GIST and to request that the
+ other party to send a RESERVE back on this new GIST path.
+
+ If a stateful QoS NSLP QNE receives a QUERY message with the RESERVE-
+ INIT flag and BREAK flag set, then the BREAK flag of newly generated
+ messages (e.g., QUERY, RESERVE, or RESPONSE) MUST be set. When a
+ stateful QoS NSLP QNE receives a QUERY message with the RESERVE-INIT
+ flag set and BREAK flag not set, then the IP-TTL and Original-TTL
+ values in GIST RecvMessage primitive MUST be monitored. If they
+ differ, it is RECOMMENDED to set the BREAK flag in newly generated
+ messages (e.g., QUERY, RESERVE, or RESPONSE). In situations where a
+ QNE or a domain is able to provide QoS using other means (see
+ Section 3.3.5), the BREAK flag SHOULD NOT be set.
+
+ Finally, if a received QUERY requested acknowledgement through the
+ ACK-REQ flag in the COMMON HEADER flags and the processing of the
+ message was successful, the stateful QNE SHOULD send back a RESPONSE
+ with an INFO-SPEC carrying the acknowledgement success code.
+
+5.4.3. RESPONSE Messages
+
+ The RESPONSE message is used to provide information about the result
+ of a previous QoS NSLP message, e.g., confirmation of a reservation
+ or information resulting from a QUERY. The RESPONSE message does not
+ cause any state to be installed, but may cause state(s) to be
+ modified, e.g., if the RESPONSE contains information about an error.
+
+ A RESPONSE message MUST be sent when the QNR processes a RESERVE or
+ QUERY message containing an RII object or if the QNE receives a
+ scoped RESERVE or a scoped QUERY. In this case, the RESPONSE message
+ MUST contain the RII object copied from the RESERVE or the QUERY.
+ Also, if there is an error in processing a received RESERVE, a
+ RESPONSE is sent indicating the nature of the error. In this case,
+ the RII and RSN, if available, MUST be included in the RESPONSE.
+
+ On receipt of a RESPONSE message containing an RII object, the
+ stateful QoS NSLP QNE MUST attempt to match it to the outstanding
+ response requests for that signaling session. If the match succeeds,
+ then the RESPONSE MUST NOT be forwarded further along the path if it
+
+
+
+Manner, et al. Experimental [Page 78]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ contains an Informational or Success INFO-SPEC class. If the QNE did
+ not insert this RII itself, it must forward the RESPONSE to the next
+ peer. Thus, for RESPONSEs indicating success, forwarding should only
+ stop if the QNE inserted the RII by itself. If the RESPONSE carries
+ an INFO-SPEC indicating an error, forwarding SHOULD continue upstream
+ towards the QNI by using RSNs as described in the next paragraph.
+
+ On receipt of a RESPONSE message containing an RSN object, a stateful
+ QoS NSLP QNE MUST compare the RSN to that of the appropriate
+ signaling session. If the match succeeds, then the INFO-SPEC MUST be
+ processed. If the INFO-SPEC object is used to send error
+ notifications then the node MUST use the stored upstream peer RSN
+ value, associated with the same session, and forward the RESPONSE
+ message further along the path towards the QNI.
+
+ If the INFO-SPEC is not used to notify error situations (see above),
+ then if the RESPONSE message carries an RSN, the message MUST NOT be
+ forwarded further along the path.
+
+ If there is no match for RSN, the message SHOULD be silently dropped.
+
+ On receipt of a RESPONSE message containing neither an RII nor an RSN
+ object, the RESPONSE MUST NOT be forwarded further along the path.
+
+ In the typical case, RESPONSE messages do not change the states
+ installed in intermediate QNEs. However, depending on the QoS model,
+ there may be situations where states are affected, e.g.,
+
+ - if the RESPONSE includes an INFO-SPEC describing an error
+ situation resulting in reservations to be removed, or
+
+ - the QoS model allows a QSPEC to define [min,max] limits on the
+ resources requested, and downstream QNEs gave less resources than
+ their upstream nodes, which means that the upstream nodes may
+ release a part of the resource reservation.
+
+ If a stateful QoS NSLP QNE receives a RESPONSE message with the BREAK
+ flag set, then the BREAK flag of newly generated message (e.g.,
+ RESPONSE) MUST be set.
+
+5.4.4. NOTIFY Messages
+
+ NOTIFY messages are used to convey information to a QNE
+ asynchronously. NOTIFY messages do not cause any state to be
+ installed. The decision to remove state depends on the QoS model.
+ The exact operation depends on the QoS model. A NOTIFY message does
+
+
+
+
+
+Manner, et al. Experimental [Page 79]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ not directly cause other messages to be sent. NOTIFY messages are
+ sent asynchronously, rather than in response to other messages. They
+ may be sent in either direction (upstream or downstream).
+
+ A special case of synchronous NOTIFY is when the upstream QNE is
+ asked to use reduced refresh by setting the appropriate flag in the
+ RESERVE. The QNE receiving such a RESERVE MUST reply with a NOTIFY
+ and a proper INFO-SPEC code indicating whether the QNE agrees to use
+ reduced refresh between the upstream QNE.
+
+ The Transient error code 0x07 "Reservation preempted" is sent to the
+ QNI whose resources were preempted. The NOTIFY message carries
+ information to the QNI that one QNE no longer has a reservation for
+ the session. It is up to the QNI to decide what to do based on the
+ QoS model being used. The QNI would normally tear down the preempted
+ reservation by sending a RESERVE with the TEAR flag set using the SII
+ of the preempted reservation. However, the QNI can follow other
+ procedures as specified in its QoS Model. More discussion on
+ preemption can be found in the QSPEC Template [RFC5975] and the
+ individual QoS Model specifications.
+
+6. IANA Considerations
+
+ This section provides guidance to the Internet Assigned Numbers
+ Authority (IANA) regarding registration of values related to the QoS
+ NSLP, in accordance with BCP 26, RFC 5226 [RFC5226].
+
+ Per QoS NSLP, IANA has created a number of new registries:
+
+ - QoS NSLP Message Types
+ - QoS NSLP Binding Codes
+ - QoS NSLP Error Classes
+ - Informational Error Codes
+ - Success Error Codes
+ - Protocol Error Codes
+ - Transient Failure Codes
+ - Permanent Failure Codes
+ - QoS NSLP Error Source Identifiers
+
+ IANA has also registered new values in a number of registries:
+
+ - NSLP Object Types
+ - NSLP Identifiers (under GIST Parameters)
+ - Router Alert Option Values (IPv4 and IPv6)
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 80]
+
+RFC 5974 QoS NSLP October 2010
+
+
+6.1. QoS NSLP Message Type
+
+ The QoS NSLP Message Type is an 8-bit value. This specification
+ defines four QoS NSLP message types, which form the initial contents
+ of this registry: RESERVE (0x01), QUERY (0x02), RESPONSE (0x03), and
+ NOTIFY (0x04).
+
+ The value 0 is reserved. Values 240 to 255 are for Experimental/
+ Private Use. The registration procedure is IETF Review.
+
+ When a new message type is defined, any message flags used with it
+ must also be defined.
+
+6.2. NSLP Message Objects
+
+ A new registry has been created for NSLP Message Objects. This is a
+ 12-bit field (giving values from 0 to 4095). This registry is shared
+ between a number of NSLPs.
+
+ Registration procedures are as follows:
+
+ 0: Reserved
+
+ 1-1023: IETF Review
+
+ 1024-1999: Specification Required
+
+ Allocation policies are as follows:
+
+ 2000-2047: Private/Experimental Use
+
+ 2048-4095: Reserved
+
+ When a new object is defined, the extensibility bits (A/B) must also
+ be defined.
+
+ This document defines eleven new NSLP message objects. These are
+ described in Section 5.1.3: RII (0x001), RSN (0x002), REFRESH-PERIOD
+ (0x003), BOUND-SESSION-ID (0x004), PACKET-CLASSIFIER (0x005), INFO-
+ SPEC (0x006), SESSION-ID-LIST (0x007), RSN-LIST (0x008), MSG-ID
+ (0x009), BOUND-MSG-ID (0x00A), and QSPEC (0x00B).
+
+ Additional values are to be assigned from the IETF Review section of
+ the NSLP Message Objects registry.
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 81]
+
+RFC 5974 QoS NSLP October 2010
+
+
+6.3. QoS NSLP Binding Codes
+
+ A new registry has been created for the 8-bit Binding Codes used in
+ the BOUND-SESSION-ID object. The initial values for this registry
+ are listed in Section 5.1.3.4.
+
+ The registration procedure is IETF Review. Value 0 is reserved.
+ Values 128 to 159 are for Experimental/Private Use. Other values are
+ Reserved.
+
+6.4. QoS NSLP Error Classes and Error Codes
+
+ In addition, Error Classes and Error Codes for the INFO-SPEC object
+ are defined. These are described in Section 5.1.3.6.
+
+ The Error Class is 4 bits in length. The initial values are:
+
+ 0: Reserved
+
+ 1: Informational
+
+ 2: Success
+
+ 3: Protocol Error
+
+ 4: Transient Failure
+
+ 5: Permanent Failure
+
+ 6: QoS Model Error
+
+ 7: Signaling session failure (described in [RFC5973])
+
+ 8-15: Reserved
+
+ Additional values are to be assigned based on IETF Review.
+
+ The Error Code is 8 bits in length. Each Error Code is assigned
+ within a particular Error Class. This requires the creation of a
+ registry for Error Codes in each Error Class. The Error Code 0 in
+ each class is Reserved.
+
+ Policies for the error code registries are as follows:
+
+ 0-63: IETF Review
+
+ 64-127: Specification Required
+
+
+
+
+Manner, et al. Experimental [Page 82]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ 128-191: Experimental/Private Use
+
+ 192-255: Reserved
+
+ The initial assignments for the Error Code registries are given in
+ Section 5.1.3.6. Experimental and Reserved values are relevant to
+ all Error classes.
+
+6.5. QoS NSLP Error Source Identifiers
+
+ Section 5.1.3.6 defines Error Source Identifiers, the type of which
+ is identified by a 4-bit value.
+
+ The value 0 is reserved.
+
+ Values 1-3 are given in Section 5.1.3.6.
+
+ Values 14 and 15 are for Experimental/Private Use.
+
+ The registration procedure is Specification Required.
+
+6.6. NSLP IDs and Router Alert Option Values
+
+ This specification defines an NSLP for use with GIST. Furthermore,
+ it specifies that a number of NSLPID values are used for the support
+ of bypassing intermediary nodes. Consequently, new identifiers must
+ be assigned for them from the GIST NSLP identifier registry. As
+ required by the QoS NSLP, 32 NSLPID values have been assigned,
+ corresponding to QoS NSLP Aggregation Levels 0 to 31.
+
+ The GIST specification also requires that NSLPIDs be associated with
+ specific Router Alert Option (RAO) values (although multiple NSLPIDs
+ may be associated with the same value). For the purposes of the QoS
+ NSLP, each of its NSLPID values should be associated with a different
+ RAO value. A block of 32 new IPv4 RAO values and a block of 32 new
+ IPv6 RAO values have been assigned, corresponding to QoS NSLP
+ Aggregation Levels 0 to 31.
+
+7. Security Considerations
+
+ The security requirement for the QoS NSLP is to protect the signaling
+ exchange for establishing QoS reservations against identified
+ security threats. For the signaling problem as a whole, these
+ threats have been outlined in NSIS threats [RFC4081]; the NSIS
+ framework [RFC4080] assigns a subset of the responsibility to GIST,
+ and the remaining threats need to be addressed by NSLPs. The main
+ issues to be handled can be summarized as:
+
+
+
+
+Manner, et al. Experimental [Page 83]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Authorization:
+
+ The QoS NSLP must assure that the network is protected against
+ theft-of-service by offering mechanisms to authorize the QoS
+ reservation requester. A user requesting a QoS reservation might
+ want proper resource accounting and protection against spoofing
+ and other security vulnerabilities that lead to denial of service
+ and financial loss. In many cases, authorization is based on the
+ authenticated identity. The authorization solution must provide
+ guarantees that replay attacks are either not possible or limited
+ to a certain extent. Authorization can also be based on traits
+ that enable the user to remain anonymous. Support for user
+ identity confidentiality can be accomplished.
+
+ Message Protection:
+
+ Signaling message content should be protected against
+ modification, replay, injection, and eavesdropping while in
+ transit. Authorization information, such as authorization tokens,
+ needs protection. This type of protection at the NSLP layer is
+ necessary to protect messages between NSLP nodes.
+
+ Rate Limitation:
+
+ QNEs should perform rate-limiting on the refresh messages that
+ they send. An attacker could send erroneous messages on purpose,
+ forcing the QNE to constantly reply with an error message.
+ Authentication mechanisms would help in figuring out if error
+ situations should be reported to the sender, or silently ignored.
+ If the sender is authenticated, the QNE should reply promptly.
+
+ Prevention of Denial-of-Service Attacks:
+
+ GIST and QoS NSLP nodes have finite resources (state storage,
+ processing power, bandwidth). The protocol mechanisms in this
+ document try to minimize exhaustion attacks against these
+ resources when performing authentication and authorization for QoS
+ resources.
+
+ To some extent, the QoS NSLP relies on the security mechanisms
+ provided by GIST, which by itself relies on existing authentication
+ and key exchange protocols. Some signaling messages cannot be
+ protected by GIST and hence should be used with care by the QoS NSLP.
+ An API must ensure that the QoS NSLP implementation is aware of the
+ underlying security mechanisms and must be able to indicate which
+ degree of security is provided between two GIST peers. If a level of
+ security protection for QoS NSLP messages that is required goes
+ beyond the security offered by GIST or underlying security
+
+
+
+Manner, et al. Experimental [Page 84]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ mechanisms, additional security mechanisms described in this document
+ must be used. Due to the different usage environments and scenarios
+ where NSIS is used, it is very difficult to make general statements
+ without reducing its flexibility.
+
+7.1. Trust Relationship Model
+
+ This specification is based on a model that requires trust between
+ neighboring NSLP nodes to establish a chain-of-trust along the QoS
+ signaling path. The model is simple to deploy, was used in previous
+ QoS authorization environments (such as RSVP), and seems to provide
+ sufficiently strong security properties. We refer to this model as
+ the New Jersey Turnpike.
+
+ On the New Jersey Turnpike, motorists pick up a ticket at a toll
+ booth when entering the highway. At the highway exit, the ticket is
+ presented and payment is made at the toll booth for the distance
+ driven. For QoS signaling in the Internet, this procedure is roughly
+ similar. In most cases, the data sender is charged for transmitted
+ data traffic where charging is provided only between neighboring
+ entities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 85]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ +------------------+ +------------------+ +------------------+
+ | Network | | Network | | Network |
+ | X | | Y | | Z |
+ | | | | | |
+ | -----------> -----------> |
+ | | | | | |
+ | | | | | |
+ +--------^---------+ +------------------+ +-------+----------+
+ | .
+ | .
+ | v
+ +--+---+ Data Data +--+---+
+ | Node | ==============================> | Node |
+ | A | Sender Receiver | B |
+ +------+ +------+
+
+ Legend:
+
+ ----> Peering relationship that allows neighboring
+ networks/entities to charge each other for the
+ QoS reservation and data traffic
+
+ ====> Data flow
+
+ .... Communication to the end host
+
+ Figure 16: New Jersey Turnpike Model
+
+ The model shown in Figure 16 uses peer-to-peer relationships between
+ different administrative domains as a basis for accounting and
+ charging. As mentioned above, based on the peering relationship, a
+ chain-of-trust is established. There are several issues that come to
+ mind when considering this type of model:
+
+ o The model allows authorization on a request basis or on a per-
+ session basis. Authorization mechanisms are elaborated in
+ Section 7.2. The duration for which the QoS authorization is
+ valid needs to be controlled. Combining the interval with the
+ soft-state interval is possible. Notifications from the networks
+ also seem to be a viable approach.
+
+ o The price for a QoS reservation needs to be determined somehow and
+ communicated to the charged entity and to the network where the
+ charged entity is attached. Protocols providing "Advice of
+ Charge" functionality are out of scope.
+
+
+
+
+
+
+Manner, et al. Experimental [Page 86]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ o This architecture is simple enough to allow a scalable solution
+ (ignoring reverse charging, multicast issues, and price
+ distribution).
+
+ Charging the data sender as performed in the model simplifies
+ security handling by demanding only peer-to-peer security protection.
+ Node A would perform authentication and key establishment. The
+ established security association (together with the session key)
+ would allow the user to protect QoS signaling messages. The identity
+ used during the authentication and key establishment phase would be
+ used by Network X (see Figure 16) to perform the so-called policy-
+ based admission control procedure. In our context, this user
+ identifier would be used to establish the necessary infrastructure to
+ provide authorization and charging. Signaling messages later
+ exchanged between the different networks are then also subject to
+ authentication and authorization. However, the authenticated entity
+ is thereby the neighboring network and not the end host.
+
+ The New Jersey Turnpike model is attractive because of its
+ simplicity. S. Shenker, et al. [shenker] discuss various accounting
+ implications and introduced the edge pricing model. The edge pricing
+ model shows similarity to the model described in this section, with
+ the exception that mobility and the security implications are not
+ addressed.
+
+7.2. Authorization Model Examples
+
+ Various authorization models can be used in conjunction with the QoS
+ NSLP.
+
+7.2.1. Authorization for the Two-Party Approach
+
+ The two-party approach (Figure 17) is conceptually the simplest
+ authorization model.
+
+ +-------------+ QoS request +--------------+
+ | Entity |----------------->| Entity |
+ | requesting | | authorizing |
+ | resource |granted / rejected| resource |
+ | |<-----------------| request |
+ +-------------+ +--------------+
+ ^ ^
+ +...........................+
+ compensation
+
+ Figure 17: Two-Party Approach
+
+
+
+
+
+Manner, et al. Experimental [Page 87]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ In this example, the authorization decision only involves the two
+ entities, or makes use of previous authorization using an out-of-band
+ mechanism to avoid the need for active participation of an external
+ entity during the NSIS protocol execution.
+
+ This type of model may be applicable, e.g., between two neighboring
+ networks (inter-domain signaling) where a long-term contract (or
+ other out-of-band mechanisms) exists to manage charging and provides
+ sufficient information to authorize individual requests.
+
+7.2.2. Token-Based Three-Party Approach
+
+ An alternative approach makes use of tokens, such as those described
+ in RFC 3520 [RFC3520] and RFC 3521 [RFC3521] or used as part of the
+ Open Settlement Protocol [osp]. Authorization tokens are used to
+ associate two different signaling protocols runs (e.g., SIP and NSIS)
+ and their authorization decision with each other. The latter is a
+ form of assertion or trait. As an example, with the authorization
+ token mechanism, some form of authorization is provided by the SIP
+ proxy, which acts as the resource-authorizing entity in Figure 18.
+ If the request is authorized, then the SIP signaling returns an
+ authorization token that can be included in the QoS signaling
+ protocol messages to refer to the previous authorization decision.
+ The tokens themselves may take a number of different forms, some of
+ which may require the entity performing the QoS reservation to query
+ the external state.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 88]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ Authorization
+ Token Request +--------------+
+ +-------------->| Entity C | financial settlement
+ | | authorizing | <..................+
+ | | resource | .
+ | +------+ request | .
+ | | +--------------+ .
+ | | .
+ | |Authorization .
+ | |Token .
+ | | .
+ | | .
+ | | .
+ | | QoS request .
+ +-------------+ + Authz. Token +--------------+ .
+ | Entity |----------------->| Entity B | .
+ | requesting | | performing | .
+ | resource |granted / rejected| QoS | <..+
+ | A |<-----------------| reservation |
+ +-------------+ +--------------+
+
+ Figure 18: Token-Based Three-Party Approach
+
+ For the digital money type of systems (e.g., OSP tokens), the token
+ represents a limited amount of credit. So, new tokens must be sent
+ with later refresh messages once the credit is exhausted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 89]
+
+RFC 5974 QoS NSLP October 2010
+
+
+7.2.3. Generic Three-Party Approach
+
+ Another method is for the node performing the QoS reservation to
+ delegate the authorization decision to a third party, as illustrated
+ in Figure 19. The authorization decision may be performed on a per-
+ request basis, periodically, or on a per-session basis.
+
+ +--------------+
+ | Entity C |
+ | authorizing |
+ | resource |
+ | request |
+ +-----------+--+
+ ^ |
+ QoS | | QoS
+ authz| |authz
+ req.| | res.
+ QoS | v
+ +-------------+ request +--+-----------+
+ | Entity |----------------->| Entity B |
+ | requesting | | performing |
+ | resource |granted / rejected| QoS |
+ | A |<-----------------| reservation |
+ +-------------+ +--------------+
+
+ Figure 19: Three-Party Approach
+
+7.3. Computing the Authorization Decision
+
+ Whenever an authorization decision has to be made there is the
+ question about which information serves as an input to the
+ authorizing entity. The following information items have been
+ mentioned in the past for computing the authorization decision (in
+ addition to the authenticated identity):
+
+ Price
+
+ QoS objects
+
+ Policy rules
+
+ Policy rules take into consideration attributes like time of day,
+ subscription to certain services, membership, etc., when computing an
+ authorization decision.
+
+ The policies used to make the authorization are outside the scope of
+ this document and are implementation/deployment specific.
+
+
+
+
+Manner, et al. Experimental [Page 90]
+
+RFC 5974 QoS NSLP October 2010
+
+
+8. Acknowledgments
+
+ The authors would like to thank Eleanor Hepworth, Ruediger Geib,
+ Roland Bless, Nemeth Krisztian, Markus Ott, Mayi Zoumaro-Djayoon,
+ Martijn Swanink, and Ruud Klaver for their useful comments. Roland,
+ especially, has done deep reviews of the document, making sure the
+ protocol is well defined. Bob Braden provided helpful comments and
+ guidance which were gratefully received.
+
+9. Contributors
+
+ This document combines work from three individual documents. The
+ following authors from these documents also contributed to this
+ document: Robert Hancock (Siemens/Roke Manor Research), Hannes
+ Tschofenig and Cornelia Kappler (Siemens AG), Lars Westberg and
+ Attila Bader (Ericsson), and Maarten Buechli (Dante) and Eric
+ Waegeman (Alcatel). In addition, Roland Bless has contributed
+ considerable amounts of text all along the writing of this
+ specification.
+
+ Sven Van den Bosch was the initial editor of earlier draft versions
+ of this document. Since version 06 of the document, Jukka Manner has
+ taken the editorship. Yacine El Mghazli (Alcatel) contributed text
+ on AAA. Charles Shen and Henning Schulzrinne suggested the use of
+ the reason field in the BOUND-SESSION-ID.
+
+10. References
+
+10.1. Normative References
+
+ [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic",
+ RFC 1982, August 1996.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC5971] Schulzrinne, H. and R. Hancock, "GIST: General Internet
+ Signalling Transport", RFC 5971, October 2010.
+
+ [RFC5975] Ash, G., Bader, A., Kappler, C., and D. Oran, "QSPEC
+ Template for the Quality-of-Service NSIS Signaling Layer
+ Protocol (NSLP)", RFC 5975, October 2010.
+
+10.2. Informative References
+
+ [NSIS-AUTH] Manner, J., Stiemerling, M., Tschofenig, H., and R.
+ Bless, Ed., "Authorization for NSIS Signaling Layer
+ Protocols", Work in Progress, May 2010.
+
+
+
+Manner, et al. Experimental [Page 91]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ [NSIS-MOB] Sanda, T., Fu, X., Jeong, S., Manner, J., and H.
+ Tschofenig, "NSIS Protocols operation in Mobile
+ Environments", Work in Progress, May 2010.
+
+ [RFC1633] Braden, B., Clark, D., and S. Shenker, "Integrated
+ Services in the Internet Architecture: an Overview",
+ RFC 1633, June 1994.
+
+ [RFC2205] Braden, B., Zhang, L., Berson, S., Herzog, S., and S.
+ Jamin, "Resource ReSerVation Protocol (RSVP) -- Version
+ 1 Functional Specification", RFC 2205, September 1997.
+
+ [RFC2210] Wroclawski, J., "The Use of RSVP with IETF Integrated
+ Services", RFC 2210, September 1997.
+
+ [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F.,
+ and S. Molendini, "RSVP Refresh Overhead Reduction
+ Extensions", RFC 2961, April 2001.
+
+ [RFC3175] Baker, F., Iturralde, C., Le Faucheur, F., and B. Davie,
+ "Aggregation of RSVP for IPv4 and IPv6 Reservations",
+ RFC 3175, September 2001.
+
+ [RFC3520] Hamer, L-N., Gage, B., Kosinski, B., and H. Shieh,
+ "Session Authorization Policy Element", RFC 3520,
+ April 2003.
+
+ [RFC3521] Hamer, L-N., Gage, B., and H. Shieh, "Framework for
+ Session Set-up with Media Authorization", RFC 3521,
+ April 2003.
+
+ [RFC3726] Brunner, M., "Requirements for Signaling Protocols",
+ RFC 3726, April 2004.
+
+ [RFC4080] Hancock, R., Karagiannis, G., Loughney, J., and S. Van
+ den Bosch, "Next Steps in Signaling (NSIS): Framework",
+ RFC 4080, June 2005.
+
+ [RFC4081] Tschofenig, H. and D. Kroeselberg, "Security Threats for
+ Next Steps in Signaling (NSIS)", RFC 4081, June 2005.
+
+ [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
+ IANA Considerations Section in RFCs", BCP 26, RFC 5226,
+ May 2008.
+
+ [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", STD 68, RFC 5234, January 2008.
+
+
+
+
+Manner, et al. Experimental [Page 92]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ [RFC5973] Stiemerling, M., Tschofenig, H., Aoun, C., and E.
+ Davies, "NAT/Firewall NSIS Signaling Layer Protocol
+ (NSLP)", RFC 5973, October 2010.
+
+ [RFC5977] Bader, A., Westberg, L., Karagiannis, G., Kappler, C.,
+ Tschofenig, H., and T. Phelan, "RMD-QOSM: The NSIS
+ Quality-of-Service Model for Resource Management in
+ Diffserv", RFC 5977, October 2010.
+
+ [lrsvp] Manner, J. and K. Raatikainen, "Localized QoS Management
+ for Multimedia Applications in Wireless Access
+ Networks", IASTED IMSA, Technical Specification 101 321,
+ p. 193-200, August 2004.
+
+ [opwa95] Breslau, L., "Two Issues in Reservation Establishment",
+ Proc. ACM SIGCOMM '95, Cambridge MA, August 1995.
+
+ [osp] ETSI, "Telecommunications and Internet Protocol
+ Harmonization Over Networks (TIPHON); Open Settlement
+ Protocol (OSP) for Inter-Domain pricing, authorization,
+ and usage exchange", Technical Specification 101 321,
+ version 4.1.1.
+
+ [qos-auth] Tschofenig, H., "QoS NSLP Authorization Issues", Work
+ in Progress, June 2003.
+
+ [shenker] Shenker, S., et al., "Pricing in computer networks:
+ Reshaping the research agenda", Proc. of TPRC 1995,
+ 1995.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 93]
+
+RFC 5974 QoS NSLP October 2010
+
+
+Appendix A. Abstract NSLP-RMF API
+
+ This appendix is purely informational and provides an abstract API
+ between the QoS NSLP and the RMF. It should not be taken as a strict
+ rule for implementors, but rather it helps clarify the interface
+ between the NSLP and RMF.
+
+A.1. Triggers from QOS-NSLP towards RMF
+
+ The QoS-NSLP triggers the RMF/QOSM functionality by using the
+ sendrmf() primitive:
+
+ int sendrmf(sid, nslp_req_type, qspec, authorization_info,
+ NSLP_objects, filter, features_in, GIST_API_triggers,
+ incoming_interface, outgoing_interface)
+
+ o sid: SESSION-ID - The NSIS session identifier
+
+ o nslp_req_type: indicates type of request:
+
+ * RESERVE
+
+ * QUERY
+
+ * RESPONSE
+
+ * NOTIFY
+
+ o qspec: the QSPEC object, if present
+
+ o authorization_info: the AUTH_SESSION object, if present
+
+ o NSLP_objects: data structure that contains a list with received
+ QoS-NSLP objects. This list can be used by, e.g., local
+ applications, network management, or policy control modules:
+
+ * RII
+
+ * RSN
+
+ * BOUND-SESSION-ID list
+
+ * REFRESH-PERIOD
+
+ * SESSION-ID-LIST
+
+ * RSN-LIST
+
+
+
+
+Manner, et al. Experimental [Page 94]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ * INFO-SPEC
+
+ * MSG-ID
+
+ * BOUND-MSG-ID
+
+ o filter: the information for packet filtering, based on the MRI and
+ the PACKET-CLASSIFIER object.
+
+ o features_in: it represents the flags included in the common header
+ of the received QOS-NSLP message, but also additional triggers:
+
+ * BREAK
+
+ * REQUEST REDUCED REFRESHES
+
+ * RESERVE-INIT
+
+ * TEAR
+
+ * REPLACE
+
+ * ACK-REQ
+
+ * PROXY
+
+ * SCOPING
+
+ * synchronization_required: this attribute is set (see Sections
+ Section 4.6 and Section 4.7.1, for example) when the QoS-NSLP
+ functionality supported by a QNE Egress receives a non-tearing
+ RESERVE message that includes a MSG-ID or a BOUND-MSG-ID
+ object, and the BINDING_CODE value of the BOUND-SESSION-ID
+ object is equal to one of the following values:
+
+ + Tunnel and end-to-end sessions
+
+ + Aggregate sessions
+
+ * GIST_API_triggers: it represents the attributes that are
+ provided by GIST to QoS-NSLP via the GIST API:
+
+ + NSLPID
+
+ + Routing-State-Check
+
+ + SII-Handle
+
+
+
+
+Manner, et al. Experimental [Page 95]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ + Transfer-Attributes
+
+ + GIST-Hop-Count
+
+ + IP-TTL
+
+ + IP-Distance
+
+ o incoming_interface: the ID of the incoming interface. Used only
+ when the QNE reserves resources on incoming interface. Default is
+ 0 (no reservations on incoming interface)
+
+ o outgoing_interface: the ID of the outgoing interface. Used only
+ when the QNE reserves resources on outgoing interface. Default is
+ 0 (no reservations on outgoing interface)
+
+A.2. Triggers from RMF/QOSM towards QOS-NSLP
+
+ The RMF triggers the QoS-NSLP functionality using the "recvrmf()" and
+ "config()" primitives to perform either all or a subset of the
+ features listed below.
+
+ The recvrmf() primitive represents either a response to a request
+ that has been sent via the API by the QoS-NSLP or an asynchronous
+ notification. Note that when the RMF/QOSM receives a request via the
+ API from the QoS-NSLP function, one or more "recvrmf()" response
+ primitives can be sent via the API towards QoS-NSLP. In this way,
+ the QOS-NSLP can generate one or more QoS-NSLP messages that can be
+ used, for example, in the situation that the arrival of one end-to-
+ end RESERVE triggers the generation of two (or more) RESERVE
+ messages: an end-to-end RESERVE message and one (or more) intra-
+ domain (local) RESERVE message.
+
+ The config() primitive is used to configure certain features, such as
+ QNE type, stateful or stateless operation, or bypassing of end-to-end
+ messages.
+
+ Note that the selection of the subset of triggers is controlled by
+ the QoS Model.
+
+ int recvrmf(sid, nslp_resp_type, qspec, authorization_info, status,
+ NSLP_objects, filter, features_out, GIST_API_triggers
+ incoming_interface, outgoing_interface)
+
+ o sid: SESSION-ID - The NSIS session identifier
+
+
+
+
+
+
+Manner, et al. Experimental [Page 96]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ o nslp_resp_type: indicates type of response:
+
+ * RESERVE
+
+ * QUERY
+
+ * RESPONSE
+
+ * NOTIFY
+
+ o qspec: the QSPEC object, if present
+
+ o authorization_info: the AUTHO_SESSION object, if present
+
+ o status: boolean that notifies the status of the reservation and
+ can be used by QOS-NSLP to include in the INFO-SPEC object:
+
+ * RESERVATION_SUCCESSFUL
+
+ * TEAR_DOWN_SUCCESSFUL
+
+ * NO RESOURCES
+
+ * RESERVATION_FAILURE
+
+ * RESERVATION_PREEMPTED: reservation was preempted
+
+ * AUTHORIZATION_FAILED: authorizing the request failed
+
+ * MALFORMED_QSPEC: request failed due to malformed qspec
+
+ * SYNCHRONIZATION_FAILED: Mismatch synchronization between an
+ end-to-end RESERVE and an intra-domain RESERVE (see Sections
+ Section 4.6 and Section 4.7.1)
+
+ * CONGESTION_SITUATION: Possible congestion situation occurred on
+ downstream path
+
+ * QoS Model Error
+
+ o NSLP_objects: data structure that contains a list with QoS-NSLP
+ objects that can be used by QoS-NSLP when the QNE is a QNI, QNR,
+ QNI_Ingress, QNR_Ingress, QNI_Egress, or QNR_Egress:
+
+ * RII
+
+ * RSN
+
+
+
+
+Manner, et al. Experimental [Page 97]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ * BOUND-SESSION-ID list
+
+ * REFRESH-PERIOD
+
+ * SESSION-ID-LIST
+
+ * RSN-LIST
+
+ * MSG-ID
+
+ * BOUND-MSG-ID
+
+ o filter: it represents the MRM-related PACKET CLASSIFIER
+
+ o features_out: it represents (among others) the flags that can be
+ used by the QOS-NSLP for newly generated QoS-NSLP messages:
+
+ * BREAK
+
+ * REQUEST REDUCED REFRESHES
+
+ * RESERVE-INIT
+
+ * TEAR
+
+ * REPLACE
+
+ * ACK-REQ
+
+ * PROXY
+
+ * SCOPING
+
+ * BYPASSING - when the outgoing message should be bypassed, then
+ it includes the required bypassing level. Otherwise, it is
+ empty. It can be set only by QNI_Ingress, QNR_Ingress,
+ QNI_Egress, or QNR_Egress. It can be unset only by
+ QNI_Ingress, QNR_Ingress, QNI_Egress, or QNR_Egress.
+
+ * BINDING () - when BINDING is required, then it includes a
+ BOUND-SESSION-ID list. Otherwise, it is empty. It can only be
+ requested by the following QNE types: QNI, QNR, QNI_Ingress,
+ QNR_Ingress, QNI_Egress, or QNR_Egress.
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 98]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ * NEW_SID - it requests to generate a new session with a new
+ SESSION-ID. If the QoS-NSLP generates a new SESSION-ID, then
+ the QoS-NSLP has to return the value of this new SESSION-ID to
+ the RMF/QOSM. It can be requested by a QNI, QNR, QNI_Ingress,
+ QNI_Egress, QNR_Ingress, or QNR_Egress.
+
+ * NEW_RSN - it requests to generate a new RSN. If the QoS-NSLP
+ generates a new RSN, then the QoS-NSLP has to return the value
+ of this new RSN to the RMF/QOSM.
+
+ * NEW_RII - it requests to generate a new RII. If the QoS-NSLP
+ generates a new RII, then the QoS-NSLP has to return the value
+ of this new RII to the RMF/QOSM.
+
+ o GIST_API_triggers: it represents the attributes that are provided
+ to GIST via QoS-NSLP via the GIST API:
+
+ * NSLPID
+
+ * SII-Handle
+
+ * Transfer-Attributes
+
+ * GIST-Hop-Count
+
+ * IP-TTL
+
+ * ROUTING-STATE-CHECK (if set, it requires that GIST create a
+ routing state)
+
+ o incoming_interface: the ID of the incoming interface. Used only
+ when the QNE reserves resources on the incoming interface.
+ Default is 0 (no reservations on the incoming interface).
+
+ o outgoing_interface: the ID of the outgoing interface. Used only
+ when the QNE reserves resources on the outgoing interface.
+ Default is 0 (no reservations on the outgoing interface).
+
+A.3. Configuration Interface
+
+ The config() function is meant for configuring per-session settings,
+ from the RMF towards the NSLP.
+
+ int config(sid, qne_type, state_type, bypassing_type)
+
+ o sid: SESSION-ID - The NSIS session identifier
+
+
+
+
+
+Manner, et al. Experimental [Page 99]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ o qne_type: it defines the type of a QNE
+
+ * QNI
+
+ * QNI_Ingress: the QNE is a QNI and an Ingress QNE
+
+ * QNE: the QNE is not a QNI or QNR
+
+ * QNE_Interior: the QNE is an Interior QNE, but it is not a QNI
+ or QNR
+
+ * QNI_Egress: the QNE is a QNI and an Egress QNE
+
+ * QNR
+
+ * QNR_Ingress: the QNE is a QNR and an Ingress QNE
+
+ * QNR_Egress: the QNE is a QNR and an Egress QNE
+
+ o state_type: it defines if the QNE keeps QoS-NSLP operational
+ states
+
+ * STATEFUL
+
+ * STATELESS
+
+ o bypassing_type: it defines if a QNE bypasses end-to-end messages
+ or not
+
+Appendix B. Glossary
+
+ AAA: Authentication, Authorization, and Accounting
+
+ EAP: Extensible Authentication Protocol
+
+ MRI: Message Routing Information (see [RFC5971])
+
+ NAT: Network Address Translator
+
+ NSLP: NSIS Signaling Layer Protocol (see [RFC4080])
+
+ NTLP: NSIS Transport Layer Protocol (see [RFC4080])
+
+ OPWA: One Pass With Advertising
+
+ OSP: Open Settlement Protocol
+
+ PIN: Policy-Ignorant Node
+
+
+
+Manner, et al. Experimental [Page 100]
+
+RFC 5974 QoS NSLP October 2010
+
+
+ QNE: an NSIS Entity (NE), which supports the QoS NSLP (see Section 2)
+
+ QNI: the first node in the sequence of QNEs that issues a reservation
+ request for a session (see Section 22)
+
+ QNR: the last node in the sequence of QNEs that receives a
+ reservation request for a session (see Section 22)
+
+ QSPEC: Quality-of-Service Specification
+
+ RII: Request Identification Information
+
+ RMD: Resource Management for Diffserv
+
+ RMF: Resource Management Function
+
+ RSN: Reservation Sequence Number
+
+ RSVP: Resource Reservation Protocol (see [RFC2205])
+
+ SII: Source Identification Information
+
+ SIP: Session Initiation Protocol
+
+ SLA: Service Level Agreement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 101]
+
+RFC 5974 QoS NSLP October 2010
+
+
+Authors' Addresses
+
+ Jukka Manner
+ Aalto University
+ Department of Communications and Networking (Comnet)
+ P.O. Box 13000
+ FIN-00076 Aalto
+ Finland
+
+ Phone: +358 9 470 22481
+ EMail: jukka.manner@tkk.fi
+ URI: http://www.netlab.tkk.fi/~jmanner/
+
+
+ Georgios Karagiannis
+ University of Twente/Ericsson
+ P.O. Box 217
+ Enschede 7500 AE
+ The Netherlands
+
+ EMail: karagian@cs.utwente.nl
+
+
+ Andrew McDonald
+ Roke Manor Research Ltd
+ Old Salisbury Lane
+ Romsey, Hampshire S051 0ZN
+ United Kingdom
+
+ EMail: andrew.mcdonald@roke.co.uk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manner, et al. Experimental [Page 102]
+