RFC 2750 PROPOSED STANDARD QOS · RSVP · POLICY

RSVP Policy Control: RSVP Extensions for Policy Control

How RSVP carries policy information in POLICY_DATA objects so admission control can consider more than free bandwidth.

On rfc-editor.org ↗
PUBLISHED
January 2000
AUTHORS
S. Herzog
STREAM
IETF
BUILDS ON
RFC 2205 — RSVP
POLICY_DATA OBJECT
Class 14, C-Type 1
POLICY FAILURE ERROR CODE
02 in ERROR_SPEC (class 6)
STANDARD P-TYPES
0-49151 (IETF Consensus)
VENDOR-SPECIFIC P-TYPES
49152-53247 (First Come First Serve)
PRIVATE-USE P-TYPES
53248-65535
MESSAGES UNDER POLICY CONTROL
Path, Resv, PathErr, ResvErr
DOI
10.17487/RFC2750

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                           S. Herzog
Request for Comments: 2750                                      IPHighway
Updates: 2205                                                January 2000
Category: Standards Track


                   RSVP Extensions for Policy Control

Status of this Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

Abstract

   This memo presents a set of extensions for supporting generic policy
   based admission control in RSVP. It should be perceived as an
   extension to the RSVP functional specifications [RSVP]

   These extensions include the standard format of POLICY_DATA objects,
   and a description of RSVP's handling of policy events.

   This document does not advocate particular policy control mechanisms;
   however, a Router/Server Policy Protocol description for these
   extensions can be found in [RAP, COPS, COPS-RSVP].

Table of Contents

   1 Introduction.......................................................2
   2 A Simple Scenario..................................................3
   3 Policy Data Objects................................................3
   3.1  Base Format.....................................................4
   3.2  Options.........................................................4
   3.3  Policy Elements.................................................7
   3.4  Purging Policy State............................................7
   4 Processing Rules...................................................8
   4.1  Basic Signaling.................................................8
   4.2  Default Handling for PIN nodes..................................8
   4.3  Error Signaling.................................................9
   5 IANA Considerations................................................9
   6 Security Considerations............................................9
   7 References........................................................10
   8 Acknowledgments...................................................10
   9 Author Information................................................10
   Appendix A: Policy Error Codes......................................11
   Appendix B: INTEGRITY computation for POLICY_DATA objects...........12
   Full Copyright Statement ...........................................13

1  Introduction

   RSVP, by definition, discriminates between users, by providing some
   users with better service at the expense of others. Therefore, it is
   reasonable to expect that RSVP be accompanied by mechanisms for
   controlling and enforcing access and usage policies. Version 1 of the
   RSVP Functional Specifications [RSVP] left a placeholder for policy
   support in the form of POLICY_DATA object.

   The current RSVP Functional Specification describes the interface to
   admission (traffic) control that is based "only" on resource
   availability. In this document we describe a set of extensions to
   RSVP for supporting policy based admission control as well. The scope
   of this document is limited to these extensions and does not advocate
   specific architectures for policy based controls.

   For the purpose of this document we do not differentiate between
   Policy Decision Point (PDP) and Local Decision Point (LDPs) as
   described in [RAP]. The term PDP should be assumed to include LDP as
   well.

2  A Simple Scenario

   It is generally assumed that policy enforcement (at least in its
   initial stages) is likely to concentrate on border nodes between
   autonomous systems.

   Figure 1 illustrates a simple autonomous domain with two boundary
   nodes (A, C) which represent PEPs controlled by PDPs. A core node (B)
   represents an RSVP capable policy ignorant node (PIN) with
   capabilities limited to default policy handling (Section 4.2).


                     PDP1                        PDP2
                      |                           |
                      |                           |
                    +---+         +---+         +---+
                    | A +---------+ B +---------+ C |
                    +---+         +---+         +---+
                     PEP2          PIN           PEP2

                   Figure 1: Autonomous Domain scenario

   Here, policy objects transmitted across the domain traverse an
   intermediate PIN node (B) that is allowed to process RSVP message but
   considered non-trusted for handling policy information.

   This document describes processing rules for both PEP as well as PIN
   nodes.

3  Policy Data Objects

   POLICY_DATA objects are carried by RSVP messages and contain policy
   information. All policy-capable nodes (at any location in the
   network) can generate, modify, or remove policy objects, even when
   senders or receivers do not provide, and may not even be aware of
   policy data objects.

   The exchange of POLICY_DATA objects between policy-capable nodes
   along the data path, supports the generation of consistent end-to-end
   policies. Furthermore, such policies can be successfully deployed
   across multiple administrative domains when border nodes manipulate
   and translate POLICY_DATA objects according to established sets of
   bilateral agreements.

   The following extends section A.13 in [RSVP].

3.1 Base Format

   POLICY_DATA class=14

   o   Type 1 POLICY_DATA object: Class=14, C-Type=1

       +-------------+-------------+-------------+-------------+
       |  Length                   | POLICY_DATA |      1      |
       +---------------------------+-------------+-------------+
       |  Data Offset              | 0 (reserved)              |
       +---------------------------+-------------+-------------+
       |                                                       |
       // Option List                                         //
       |                                                       |
       +-------------------------------------------------------+
       |                                                       |
       // Policy Element List                                 //
       |                                                       |
       +-------------------------------------------------------+

       Data Offset: 16 bits

           The offset in bytes of the data portion (from the first
           byte of the object header).

       Reserved: 16 bits

            Always 0.

       Option List: Variable length

           The list of options and their usage is defined in Section
           3.2.

   Policy Element List: Variable length

           The contents of policy elements is opaque to RSVP. See more
           details in Section 3.3.

3.2 Options

   This section describes a set of options that may appear in
   POLICY_DATA objects. All policy options appear as RSVP objects but
   their semantic is modified when used as policy data options.

   FILTER_SPEC object (list) or SCOPE object

   These objects describe the set of senders associated with the
   POLICY_DATA object. If none is provided, the policy information is
   assumed to be associated with all the flows of the session. These two
   types of objects are mutually exclusive, and cannot be mixed.

   In Packed FF Resv messages, this FILTER_SPEC option provides
   association between a reserved flow and its POLICY_DATA objects.

   In WF or SE styles, this option preserves the original
   flow/POLICY_DATA association as formed by PDPs, even across RSVP
   capable PINs. Such preservation is required since PIN nodes may
   change the list of reserved flows on a per-hop basis, irrespective of
   legitimate Edge-to-Edge PDP policy considerations.

   Last, the SCOPE object should be used to prevent "policy loops" in a
   manner similar to the one described in [RSVP], Section 3.4. When PIN
   nodes are part of a WF reservation path, the RSVP SCOPE object is
   unable to prevent policy loops and the separate policy SCOPE object
   is required.

   Note: using the SCOPE option may have significant impact on scaling
   and size of POLICY_DATA objects.

   Originating RSVP_HOP

   The RSVP_HOP object identifies the neighbor/peer policy-capable node
   that constructed the policy object. When policy is enforced at border
   nodes, peer policy nodes may be several RSVP hops away from each
   other and the originating RSVP_HOP is the basis for the mechanism
   that allows them to recognize each other and communicate safely and
   directly.

   If no RSVP_HOP object is present, the policy data is implicitly
   assumed to have been constructed by the RSVP_HOP indicated in the
   RSVP message itself (i.e., the neighboring RSVP node is policy-
   capable).

   Destination RSVP_HOP

   A second RSVP_HOP object may follow the originating RSVP_HOP object.
   This second RSVP_HOP identifies the destination policy node. This is
   used to ensure the POLICY_DATA object is delivered to targeted policy
   nodes. It may be used to emulate unicast delivery in multicast Path
   messages. It may also help prevent using a policy object in other
   parts of the network (replay attack).

   On the receiving side, a policy node should ignore any POLICY_DATA
   that includes a destination RSVP_HOP that doesn't match its own IP
   address.

   INTEGRITY Object

   Figure 1 (Section 2) provides an example where POLICY_DATA objects
   are transmitted between boundary nodes while traversing non-secure
   PIN nodes. In this scenario, the RSVP integrity mechanism becomes
   ineffective since it places policy trust with intermediate PIN nodes
   (which are trusted to perform RSVP signaling but not to perform
   policy decisions or manipulations).

   The INTEGRITY object option inside POLICY_DATA object creates direct
   secure communications between non-neighboring PEPs (and their
   controlling PDPs) without involving PIN nodes.

   This option can be used at the discretion of PDPs, and is computed in
   a manner described in Appendix B.

   Policy Refresh TIME_VALUES (PRT)

   The Policy Refresh TIME_VALUES (PRT) option is used to slow policy
   refresh frequency for policies that have looser timing constraints
   relative to RSVP. If the PRT option is present, policy refreshes can
   be withheld as long as at least one refresh is sent before the policy
   refresh timer expires. A minimal value for PRT is R; lower values are
   assumed to be R (neither error nor warning should be triggered).

   To simplify RSVP processing, time values are not based directly on
   the PRT value, but on a Policy Refresh Multiplier N computed as
   N=Floor(PRT/R). Refresh and cleanup rules are derived from [RSVP]
   Section 3.7 assuming the refresh period for PRT POLICY DATA is R'
   computed as R'=N*R.  In effect, both the refresh and the state
   cleanup are slowed by a factor of N).

   The refresh multiplier applies to no-change periodic refreshes only
   (rather than updates). For example, a policy being refreshed at time
   T, T+N, T+2N,... may encounter a route change detected at T+X. In
   this case, the event would force an immediate policy update and would
   reset srfresh times to T+X+N, T+X+2N,...

   When network nodes restart, RSVP messages between PRT policy
   refreshes may be rejected since they arrive without necessary
   POLICY_DATA objects.  This error situation would clear with the next
   periodic policy refresh or with a policy update triggered by ResvErr
   or PathErr messages.

   This option is especially useful to combine strong (high overhead)
   and weak (low overhead) authentication certificates as policy data.
   In such schemes the weak certificate can support admitting a
   reservation only for a limited time, after which the strong
   certificate is required.

   This approach may reduce the overhead of POLICY_DATA processing.
   Strong certificates could be transmitted less frequently, while weak
   certificates are included in every RSVP refresh.

3.3 Policy Elements

   The content of policy elements is opaque to RSVP; their internal
   format is understood by policy peers e.g. an RSVP Local Decision
   Point (LDP) or a Policy Decision Point (PDP) [RAP]. A registry of
   policy element codepoints and their meaning is maintained by [IANA-
   CONSIDERATIONS] (also see Section 5).

   Policy Elements have the following format:

   +-------------+-------------+-------------+-------------+
   |  Length                   |   P-Type                  |
   +---------------------------+---------------------------+
   |                                                       |
   // Policy information  (Opaque to RSVP)                //
   |                                                       |
   +-------------------------------------------------------+

3.4 Purging Policy State

   Policy state expires in the granularity of Policy Elements
   (POLICY_DATA objects are mere containers and do not expire as such).

   Policy elements expire in the exact manner and time as the RSVP state
   received in the same message (see [RSVP] Section 3.7).  PRT
   controlled state expires N times slower (see Section 3.2).

   Only one policy element of a certain P-Type can be active at any
   given time. Therefore, policy elements are instantaneously replaced
   when another policy element of the same P-Type is received from the
   same PDP (previous or next policy RSVP_HOP). An empty policy element
   of a certain P-Type is used to delete (rather than a replace) all
   policy state of the same P-Type.

4  Processing Rules

   These sections describe the minimal required policy processing rules
   for RSVP.

4.1 Basic Signaling

   This memo mandates enforcing policy control for Path, Resv, PathErr,
   and ResvErr messages only. PathTear and ResvTear are assumed not to
   require policy control based on two main presumptions. First, that
   Integrity verification [MD5] guarantee that the Tear is received from
   the same node that sent the installed reservation, and second, that
   it is functionally equivalent to that node holding-off refreshes for
   this reservation.

4.2 Default Handling for PIN nodes

   Figure 1 illustrates an example of where policy data objects traverse
   PIN nodes in transit from one PEP to another.

   A PIN node is required at a minimum to forward the received
   POLICY_DATA objects in the appropriate outgoing messages according to
   the following rules:

   o    POLICY_DATA objects are to be forwarded as is, without any
        modifications.

   o    Multicast merging (splitting) nodes:

        In the upstream direction:

           When multiple POLICY_DATA objects arrive from downstream, the
           RSVP node should concatenate all of them (as a list of the
           original POLICY_DATA objects) and forward them with the
           outgoing (upstream) message.

        On the downstream direction:

           When a single incoming POLICY_DATA object arrives from
           upstream, it should be forwarded (copied) to all downstream
           branches of the multicast tree.

   The same rules apply to unrecognized policies (sub-objects) within
   the POLICY_DATA object. However, since this can only occur in a
   policy-capable node, it is the responsibility of the PDP and not
   RSVP.

4.3 Error Signaling

   Policy errors are reported by either ResvErr or PathErr messages with
   a policy failure error code in the ERROR_SPEC object. Policy error
   message must include a POLICY_DATA object; the object contains
   details of the error type and reason in a P-Type specific format (See
   Section 3.3).

   If a multicast reservation fails due to policy reasons, RSVP should
   not attempt to discover which reservation caused the failure (as it
   would do for Blockade State). Instead, it should attempt to deliver
   the policy ResvErr to ALL downstream hops, and have the PDP (or LDP)
   decide where messages should be sent. This mechanism allows the PDP
   to limit the error distribution by deciding which "culprit" next-hops
   should be informed. It also allows the PDP to prevent further
   distribution of ResvErr or PathErr messages by performing local
   repair (e.g. substituting the failed POLICY_DATA object with a
   different one).

   Error codes are described in Appendix Appendix A.

5  IANA Considerations

   RSVP Policy Elements (P-Types)

   Following the policies outlined in [IANA-CONSIDERATIONS],numbers
   0-49151 are allocated as standard policy elements by IETF Consensus
   action, numbers in the range 49152-53247 are allocated as vendor
   specific (one per vendor) by First Come First Serve, and numbers
   53248-65535 are reserved for private use and are not assigned by
   IANA.

6  Security Considerations

   This memo describes the use of POLICY_DATA objects to carry policy-
   related information between RSVP nodes. Two security mechanisms can
   be optionally used to ensure the integrity of the carried
   information. The first mechanism relies on RSVP integrity [MD5] to
   provide a chain of trust when all RSVP nodes are policy capable. The
   second mechanism relies on the INTEGRITY object within the
   POLICY_DATA object to guarantee integrity between non-neighboring
   RSVP PEPs (see Sections 2 and 3.2).

7  References

   [RAP]                 Yavatkar, R., Pendarakis, D. and R. Guerin, "A
                         Framework for Policy Based Admission Control",
                         RFC 2753, January 2000.

   [COPS]                Boyle, J., Cohen, R., Durham, D., Herzog, S.,
                         Raja, R. and A. Sastry, "The COPS (Common Open
                         Policy Service) Protocol", RFC 2748, January
                         2000.

   [COPS-RSVP]           Boyle, J., Cohen, R., Durham, D., Herzog, S.,
                         Raja, R. and A. Sastry, "COPS Usage for RSVP",
                         RFC 2749, January 2000.

   [RSVP]                Braden, R., Ed., Zhang, L., Berson, S., Herzog,
                         S. and S. Jamin, "Resource ReSerVation Protocol
                         (RSVP) - Functional Specification", RFC 2205,
                         September 1997.

   [MD5]                 Baker, F., Lindell B. and M. Talwar, "RSVP
                         Cryptographic Authentication", RFC 2747,
                         January 2000.

   [IANA-CONSIDERATIONS] Alvestrand, H. and T. Narten, "Guidelines for
                         Writing an IANA Considerations Section in
                         RFCs", BCP 26, RFC 2434, October 1998.

8  Acknowledgments

   This document incorporates inputs from Lou Berger, Bob Braden,
   Deborah Estrin, Roch Guerin, Timothy O'Malley, Dimitrios Pendarakis,
   Raju Rajan, Scott Shenker, Andrew Smith, Raj Yavatkar, and many
   others.

9  Author Information

   Shai Herzog
   IPHighway, Inc.
   55 New York Avenue
   Framingham, MA 01701

   Phone: (508) 620-1141
   EMail: herzog@iphighway.com

Appendix A: Policy Error Codes

   This Appendix extends the list of error codes described in Appendix B
   of [RSVP].

   Note that Policy Element specific errors are reported as described in
   Section 4.3 and cannot be reported through RSVP (using this
   mechanism). However, this mechanism provides a simple, less secure
   mechanism for reporting generic policy errors. Most likely the two
   would be used in concert such that a generic error code is provided
   by RSVP, while Policy Element specific errors are encapsulated in a
   return POLICY_DATA object (as in Section 4.3).

   ERROR_SPEC class = 6

   Error Code = 02: Policy Control failure

   Error Value: 16 bit

   0 = ERR_INFO    : Information reporting
   1 = ERR_WARN    : Warning
   2 = ERR_UNKNOWN : Reason unknown
   3 = ERR_REJECT  : Generic Policy Rejection
   4 = ERR_EXCEED  : Quota or Accounting violation
   5 = ERR_PREEMPT : Flow was preempted
   6 = ERR_EXPIRED : Previously installed policy expired (not
   refreshed)
   7 = ERR_REPLACED: Previous policy data was replaced & caused
   rejection
   8 = ERR_MERGE   : Policies could not be merged (multicast)
   9 = ERR_PDP     : PDP down or non functioning
   10= ERR_SERVER  : Third Party Server (e.g., Kerberos) unavailable
   11= ERR_PD_SYNTX: POLICY_DATA object has bad syntax
   12= ERR_PD_INTGR: POLICY_DATA object failed Integrity Check
   13= ERR_PE_BAD  : POLICY_ELEMENT object has bad syntax
   14= ERR_PD_MISS : Mandatory PE Missing (Empty PE is in the PD
   object)
   15= ERR_NO_RSC  : PEP Out of resources to handle policies.
   16= ERR_RSVP    : PDP encountered bad RSVP objects or syntax
   17= ERR_SERVICE : Service type was rejected
   18= ERR_STYLE   : Reservation Style was rejected
   19= ERR_FL_SPEC : FlowSpec was rejected (too large)

   Values between 2^15 and 2^16-1 can be used for site and/or vendor
   error values.

Appendix B: INTEGRITY computation for POLICY_DATA objects

   Computation of the INTEGRITY option is based on the rules set forth
   in [MD5], with the following modifications:

   Section 4.1:

   Rather than computing digest for an RSVP message, a digest is
   computed for a POLICY_DATA object in the following manner:

   (1)  The INTEGRITY object is inserted in the appropriate place in
        the POLICY_DATA object, and its location in the message is
        remembered for later use.

   (2)  The PDP, at its discretion, and based on destination PEP/PDP
        or other criteria, selects an Authentication Key and the hash
        algorithm to be used.

   (3)  A copy of RSVP SESSION object is temporarily appended to the
        end of the PD object (for the computation purposes only,
        without changing the length of the POLICY_DATA object). The
        flags field of the SESSION object is set to 0. This
        concatenation is considered as the message for which a digest
        is to be computed.

   (4)  The rest of the steps in Section 4.1 ((4)..(9)) remain
        unchanged when computed over the concatenated message.

   Note: When the computation is complete, the SESSION object is ignored
   and is not part of the POLICY_DATA object.

   Other Provisions:

   The processing of a received POLICY_DATA object as well as a
   challenge-response INTEGRITY object inside a POLICY_DATA object is
   performed in the manner described in [MD5]. This processing is
   subject to the modified computation algorithm as described in the
   beginning of this appendix (for Section 4.1 of [MD5]).

Full Copyright Statement

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

AI ELI5

On this page
PROBLEMRSVP gives some users better service than others, yet the base RSVP admission control looks only at resource availability, with no standard way to carry access or usage policy.
MECHANISMRFC 2750 defines the format of the POLICY_DATA object and its options, rules for how RSVP nodes forward, refresh, expire and report errors on policy data, and an optional INTEGRITY object for policy nodes that are not neighbors.
WHY IT MATTERSRSVP messages can carry opaque policy elements between policy-capable nodes, even across nodes that know nothing about policy. The RFC is a Proposed Standard that updates RFC 2205.

§1Why RSVP Needs Policy Control

RSVP by definition discriminates between users by giving some better service at the expense of others, so it is reasonable to expect mechanisms that control and enforce access and usage policies. Version 1 of the RSVP functional specification left a placeholder for this: the POLICY_DATA object. Its admission control interface, however, is based only on resource availability.

RFC 2750 describes extensions for policy based admission control. Its scope is limited to the extensions; it does not advocate a specific architecture for policy based controls. A router and policy server protocol for these extensions is described in other RFCs, including COPS (RFC 2748) and COPS usage for RSVP (RFC 2749). The document treats a Policy Decision Point (PDP) as including a Local Decision Point.

A line for a ride at a fair should let some people in and keep others out based on rules. This RFC adds a way to write those rules on the ticket.

§2A Simple Scenario: PEPs and PINs

The RFC assumes policy enforcement will first concentrate on border nodes between autonomous systems. Its example domain has two boundary nodes (A and C) that act as policy enforcement points controlled by PDPs, and a core node (B) in between. Node B is a policy ignorant node (PIN): it can process RSVP messages, but it is not trusted to handle policy information.

Policy objects cross the domain by passing through the PIN. The document describes processing rules for both enforcement nodes and PIN nodes.

Two guards stand at the doors of a building and check the rules. The hallway in between has people who pass notes along but are not trusted to read or change them.

THE SIMPLE SCENARIO: PEP, PIN, PEP
  1. PDP1 and PDP2Policy decision points that control the border nodes
  2. Node A and Node C (PEPs)Boundary nodes that enforce policy and handle POLICY_DATA
  3. Node B (PIN)Policy ignorant core node; forwards POLICY_DATA unmodified

§3The POLICY_DATA Object

POLICY_DATA objects ride inside RSVP messages. Any policy-capable node can generate, modify or remove them, even when senders and receivers do not provide them and may not know they exist. Exchanging them between policy-capable nodes along the data path supports consistent end-to-end policy, including across administrative domains when border nodes translate objects under bilateral agreements.

The object is class 14, C-Type 1. After the usual length and class fields come a 16-bit Data Offset, giving the offset in bytes of the data portion from the first byte of the object header, and a 16-bit reserved field that is always 0. These are followed by an option list and a policy element list.

Policy elements have a length, a P-Type and opaque policy information. Their contents are opaque to RSVP and are understood only by policy peers such as a PDP.

The object is an envelope with a small label on the front saying where the contents start. Inside are optional extras and the actual rules, which only the right office can read.

POLICY_DATA OBJECT, CLASS 14, C-TYPE 1 (FROM RFC 2750)
POLICY_DATA object (Type 1)
FieldNameSizeValueDescription
LENGTHLength2 bytesLength of the object.
CLASSPOLICY_DATA1 byte14Object class, 14.
CTYPEC-Type1 byte1Object type, 1.
DATA-OFFSETData Offset2 bytesOffset in bytes of the data portion from the first byte of the object header.
RESERVEDReserved2 bytes0Always 0.

§4Options Inside POLICY_DATA

All options are RSVP objects whose meaning is adjusted when used as policy data options.

  • FILTER_SPEC list or SCOPE: names the senders the policy applies to. If neither is present, the policy covers all flows of the session. The two are mutually exclusive. The SCOPE option helps prevent policy loops but may greatly affect the size of the object.
  • Originating RSVP_HOP: identifies the policy-capable peer that built the object, which may be several RSVP hops away. If absent, the sender named in the RSVP message is assumed.
  • Destination RSVP_HOP: a second RSVP_HOP that names the target policy node. A node SHOULD ignore policy data whose destination does not match its own IP address. The RFC notes this can help prevent replay of a policy object elsewhere.
  • INTEGRITY: lets non-neighboring policy nodes secure policy data without involving the PINs in between.
  • Policy Refresh TIME_VALUES (PRT): slows policy refreshes when policy has looser timing needs than RSVP.

For PRT, the minimal value is R, and lower values are treated as R. A multiplier is computed as N=Floor(PRT/R), giving a policy refresh period of R'=N*R, so refresh and cleanup are both slowed by a factor of N. It applies to no-change periodic refreshes only; a route change forces an immediate update. A weak certificate can be sent with every refresh and a strong certificate less often.

The envelope can have optional stickers. One lists who the rule is about, one says who wrote it and who it is for, one is a tamper seal, and one says how often to repeat the reminder.

OPTIONS THAT MAY APPEAR IN POLICY_DATA
  • FILTER_SPEC or SCOPEWhich senders the policy applies to; mutually exclusive.
  • Originating RSVP_HOPThe policy peer that built the object.
  • Destination RSVP_HOPThe policy node the object is meant for.
  • INTEGRITYProtects policy data between non-neighboring policy nodes.
  • PRTSlows policy refresh to every N times the RSVP period.

§5State, Forwarding and Errors

Policy state expires per policy element, because POLICY_DATA objects are only containers. Elements expire at the same time as the RSVP state received in the same message, except that PRT controlled state expires N times slower. Only one element of a given P-Type can be active at a time, so a new one from the same PDP replaces the old one. An empty element of a P-Type deletes all policy state of that type.

The memo mandates policy control for Path, Resv, PathErr and ResvErr messages only. PathTear and ResvTear are exempt, because integrity verification makes sure a Tear comes from the node that installed the reservation, and a Tear is equivalent to withholding refreshes.

A PIN MUST forward received POLICY_DATA objects unmodified. At multicast merge points it should concatenate multiple objects from downstream when sending upstream, and copy a single object from upstream to all downstream branches.

Policy errors are reported in ResvErr or PathErr messages with a policy failure code in the ERROR_SPEC object, and the error message must include a POLICY_DATA object with the details. For a failed multicast reservation, RSVP should deliver the policy ResvErr to all downstream hops and let the PDP decide where it goes, rather than looking for the culprit as it does for Blockade State.

Notes expire when the reservation does, and a new note of the same kind replaces the old one. Middle stops pass notes along untouched, and if something goes wrong the answer comes back with an explanation.

§6Policy Error Codes

Appendix A extends the RSVP error list. It defines Error Code 02, Policy Control failure, in the ERROR_SPEC object (class 6), with a 16-bit error value. Values include generic rejection, quota or accounting violation, preemption, expiry of an unrefreshed policy, a failed integrity check and a PDP that is down.

Values between 2^15 and 2^16-1 are available for site or vendor use. Errors specific to a policy element are carried back inside a POLICY_DATA object, while the RSVP error code gives a simple, less secure way to report generic policy errors. The two are likely to be used together.

When a request is turned down, the reply carries a number saying why. Examples are over the limit, kicked out by someone more important, or the rule-keeper is not answering.

SELECTED POLICY CONTROL ERROR VALUES (ERROR CODE 02)
  • 0ERR_INFO — Information reporting.
  • 1ERR_WARN — Warning.
  • 2ERR_UNKNOWN — Reason unknown.
  • 3ERR_REJECT — Generic policy rejection.
  • 4ERR_EXCEED — Quota or accounting violation.
  • 5ERR_PREEMPT — Flow was preempted.
  • 6ERR_EXPIRED — Previously installed policy expired (not refreshed).
  • 9ERR_PDP — PDP down or non functioning.
  • 12ERR_PD_INTGR — POLICY_DATA object failed integrity check.
  • 19ERR_FL_SPEC — FlowSpec was rejected (too large).

§7Integrity and Security

Two optional mechanisms protect the integrity of policy data. The first uses RSVP integrity (RFC 2747) to build a chain of trust when every RSVP node is policy capable. The second uses the INTEGRITY object inside POLICY_DATA to protect data between non-neighboring policy enforcement points, which matters when PINs are trusted for RSVP signaling but not for policy.

Appendix B explains the computation. The digest is calculated over the POLICY_DATA object with a copy of the RSVP SESSION object temporarily appended, with the SESSION flags set to 0. The PDP chooses the key and hash algorithm. The appended session is not kept as part of the object, and the remaining steps follow RFC 2747.

A sealed stamp on the note lets the two guards check that nobody in the hallway changed it, even though the hallway passed it along.

§8IANA Registry for Policy Elements

IANA keeps a registry of RSVP policy elements, identified by P-Type. Numbers 0-49151 are standard policy elements allocated by IETF Consensus. Numbers 49152-53247 are vendor specific, one per vendor, allocated first come first served. Numbers 53248-65535 are reserved for private use and are not assigned by IANA.

Every kind of rule note gets a number. Some numbers are for official kinds, some are handed out to companies, and some are left free for anyone to use privately.

§9References