Signaled Preemption Priority Policy Element
A small policy element that ranks flows so important reservations can bump less important ones.
Herzog, S., "Signaled Preemption Priority Policy Element", RFC 3181, DOI 10.17487/RFC3181, October 2001, <https://www.rfc-editor.org/info/rfc3181>.
@misc{rfc3181,
series = {Request for Comments},
number = 3181,
howpublished = {RFC 3181},
publisher = {RFC Editor},
doi = {10.17487/RFC3181},
url = {https://www.rfc-editor.org/info/rfc3181},
author = {S. Herzog},
title = {{Signaled Preemption Priority Policy Element}},
pagetotal = 12,
year = 2001,
month = oct,
} RFC text
Contents
Network Working Group S. Herzog
Request for Comments: 3181 PolicyConsulting.Com
Obsoletes: 2751 October 2001
Category: Standards Track
Signaled Preemption Priority Policy Element
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 (2001). All Rights Reserved.
Abstract
This document describes a preemption priority policy element for use
by signaled policy based admission protocols (such as the Resource
ReSerVation Protocol (RSVP) and Common Open Policy Service (COPS).
Preemption priority defines a relative importance (rank) within the
set of flows competing to be admitted into the network. Rather than
admitting flows by order of arrival (First Come First Admitted)
network nodes may consider priorities to preempt some previously
admitted low priority flows in order to make room for a newer, high-
priority flow.
This memo corrects an RSVP POLICY_DATA P-Type codepoint assignment
error in RFC 2751.
Table of Contents
1 Introduction .....................................................2
2 Scope and Applicability ..........................................3
3 Stateless Policy .................................................3
4 Policy Element Format ............................................4
5 Priority Merging Issues ..........................................5
5.1 Priority Merging Strategies ...................................6
5.1.1 Take priority of highest QoS .................................6
5.1.2 Take highest priority ........................................7
5.1.3 Force error on heterogeneous merge ...........................7
5.2 Modifying Priority Elements ...................................7
6 Error Processing .................................................8
7 IANA Considerations ..............................................8
8 Security Considerations ..........................................8
9 References .......................................................9
10 Author's Address ...............................................9
Appendix A: Example ...............................................10
A.1 Computing Merged Priority ....................................10
A.2 Translation (Compression) of Priority Elements ...............11
Full Copyright Statement ..........................................12
1 Introduction
This document describes a preemption priority policy element for use
by signaled policy based admission protocols (such as [RSVP] and
[COPS]).
Traditional Capacity based Admission Control (CAC) indiscriminately
admits new flows until capacity is exhausted (First Come First
Admitted). Policy based Admission Control (PAC) on the other hand
attempts to minimize the significance of order of arrival and use
policy based admission criteria instead.
One of the more popular policy criteria is the rank of importance of
a flow relative to the others competing for admission into a network
node. Preemption Priority takes effect only when a set of flows
attempting admission through a node represents overbooking of
resources such that based on CAC some would have to be rejected.
Preemption priority criteria help the node select the most important
flows (highest priority) for admission, while rejecting the low
priority ones.
Network nodes which support preemption should consider priorities to
preempt some previously admitted low-priority flows in order to make
room for a newer, high-priority flow.
This document describes the format and applicability of the
preemption priority represented as a policy element in [RSVP-EXT].
2 Scope and Applicability
The Framework document for policy-based admission control [RAP]
describes the various components that participate in policy decision
making (i.e., PDP, PEP and LDP). The emphasis of PREEMPTION_PRI
elements is to be simple, stateless, and light-weight such that they
could be implemented internally within a node's LDP (Local Decision
Point).
Certain base assumptions are made in the usage model for
PREEMPTION_PRI elements:
- They are created by PDPs
In a model where PDPs control PEPs at the periphery of the policy
domain (e.g., in border routers), PDPs reduce sets of relevant
policy rules into a single priority criterion. This priority as
expressed in the PREEMPTION_PRI element can then be communicated
to downstream PEPs of the same policy domain, which have LDPs but
no controlling PDP.
- They can be processed by LDPs
PREEMPTION_PRI elements are processed by LDPs of nodes that do not
have a controlling PDP. LDPs may interpret these objects, forward
them as is, or perform local merging to forward an equivalent
merged PREEMPTION_PRI policy element. LDPs must follow the
merging strategy that was encoded by PDPs in the PREEMPTION_PRI
objects. (Clearly, a PDP, being a superset of LDP, may act as an
LDP as well).
- They are enforced by PEPs
PREEMPTION_PRI elements interact with a node's traffic control
module (and capacity admission control) to enforce priorities, and
preempt previously admitted flows when the need arises.
3 Stateless Policy
Signaled Preemption Priority is stateless (does not require past
history or external information to be interpreted). Therefore, when
carried in COPS messages for the outsourcing of policy decisions,
these objects are included as COPS Stateless Policy Data Decision
objects (see [COPS, COPS-RSVP]).
4 Policy Element Format
The format of Policy Data objects is defined in [RSVP-EXT]. A single
Policy Data object may contain one or more policy elements, each
representing a different (and perhaps orthogonal) policy.
The format of preemption priority policy element is as follows:
+-------------+-------------+-------------+-------------+
| Length (12) | P-Type = PREEMPTION_PRI |
+------+------+-------------+-------------+-------------+
| Flags | M. Strategy | Error Code | Reserved(0) |
+------+------+-------------+-------------+-------------+
| Preemption Priority | Defending Priority |
+------+------+-------------+-------------+-------------+
Length: 16 bits
Always 12. The overall length of the policy element, in bytes.
P-Type: 16 bits
PREEMPTION_PRI = 1
This value is registered with IANA, see Section 7.
Flags: 8 bits
Reserved (always 0).
Merge Strategy: 8 bit
1 Take priority of highest QoS: recommended
2 Take highest priority: aggressive
3 Force Error on heterogeneous merge
Reserved: 8 bits
Error code: 8 bits
0 NO_ERROR Value used for regular PREEMPTION_PRI elements
1 PREEMPTION This previously admitted flow was preempted
2 HETEROGENEOUS This element encountered heterogeneous merge
Reserved: 8 bits
Always 0.
Preemption Priority: 16 bit (unsigned)
The priority of the new flow compared with the defending priority
of previously admitted flows. Higher values represent higher
Priority.
Defending Priority: 16 bits (unsigned)
Once a flow was admitted, the preemption priority becomes
irrelevant. Instead, its defending priority is used to compare
with the preemption priority of new flows.
For any specific flow, its preemption priority must always be less
than or equal to the defending priority. A wide gap between
preemption and defending priority provides added stability: moderate
preemption priority makes it harder for a flow to preempt others, but
once it succeeded, the higher defending priority makes it easier for
the flow to avoid preemption itself. This provides a mechanism for
balancing between order dependency and priority.
5 Priority Merging Issues
Consider the case where two RSVP reservations merge:
F1: QoS=High, Priority=Low
F2: QoS=Low, Priority=High
F1+F2= F3: QoS=High, Priority=???
The merged reservation F3 should have QoS=Hi, but what Priority
should it assume? Several negative side-effects have been identified
that may affect such a merger:
Free-Riders:
If F3 assumes Priority=High, then F1 got a free ride, assuming high
priority that was only intended to the low QoS F2. If one associates
costs as a function of QoS and priority, F1 receives an "expensive"
priority without having to "pay" for it.
Denial of Service:
If F3 assumes Priority=Low, the merged flow could be preempted or
fail even though F2 presented high priority.
Denial of service is virtually the inverse of the free-rider problem.
When flows compete for resources, if one flow receives undeserving
high priority it may be able to preempt another deserving flow (hence
one free-rider turns out to be another's denial of service).
Instability:
The combination of preemption priority, killer reservation and
blockade state [RSVP] may increase the instability of admitted flows
where a reservation may be preempted, reinstated, and preempted again
periodically.
5.1 Priority Merging Strategies
In merging situations LDPs may receive multiple preemption elements
and must compute the priority of the merged flow according to the
following rules:
a. Preemption priority and defending priority are merged and computed
separately, irrespective of each other.
b. Participating priority elements are selected.
All priority elements are examined according to their merging
strategy to decide whether they should participate in the merged
result (as specified bellow).
c. The highest priority of all participating priority elements is
computed.
The remainder of this section describes the different merging
strategies the can be specified in the PREEMPTION_PRI element.
5.1.1 Take priority of highest QoS
The PREEMPTION_PRI element would participate in the merged
reservation only if it belongs to a flow that contributed to the
merged QoS level (i.e., that its QoS requirement does not constitute
a subset another reservation.) A simple way to determine whether a
flow contributed to the merged QoS result is to compute the merged
QoS with and without it and to compare the results (although this is
clearly not the most efficient method).
The reasoning for this approach is that the highest QoS flow is the
one dominating the merged reservation and as such its priority should
dominate it as well. This approach is the most amiable to the
prevention of priority distortions such as free-riders and denial of
service.
This is a recommended merging strategy.
5.1.2 Take highest priority
All PREEMPTION_PRI elements participate in the merged reservation.
This strategy disassociates priority and QoS level, and therefore is
highly subject to free-riders and its inverse image, denial of
service.
This is not a recommended method, but may be simpler to implement.
5.1.3 Force error on heterogeneous merge
A PREEMPTION_PRI element may participate in a merged reservation only
if all other flows in the merged reservation have the same QoS level
(homogeneous flows).
The reasoning for this approach assumes that the heterogeneous case
is relatively rare and too complicated to deal with, thus it better
be prohibited.
This strategy lends itself to denial of service, when a single
receiver specifying a non-compatible QoS level may cause denial of
service for all other receivers of the merged reservation.
Note: The determination of heterogeneous flows applies to QoS level
only (FLOWSPEC values), and is a matter for local (LDP) definition.
Other types of heterogeneous reservations (e.g., conflicting
reservation styles) are handled by RSVP and are unrelated to this
PREEMPTION_PRI element.
This is a recommended merging strategy when reservation homogeneity
is coordinated and enforced for the entire multicast tree. It is
more restrictive than Section 5.1.1, but is easier to implement.
5.2 Modifying Priority Elements
When POLICY_DATA objects are protected by integrity, LDPs should not
attempt to modify them. They must be forwarded as-is or else their
security envelope would be invalidated. In other cases, LDPs may
modify and merge incoming PREEMPTION_PRI elements to reduce their
size and number according to the following rule:
Merging is performed for each merging strategy separately.
There is no known algorithm to merge PREEMPTION_PRI element of
different merging strategies without loosing valuable information
that may affect OTHER nodes.
- For each merging strategy, the highest QoS of all participating
PREEMPTION_PRI elements is taken and is placed in an outgoing
PREEMPTION_PRI element of this merging strategy.
- This approach effectively compresses the number of forwarded
PREEMPTION_PRI elements to at most to the number of different
merging strategies, regardless of the number of receivers (See the
example in Appendix A.2).
6 Error Processing
A PREEMPTION_PRI error object is sent back toward the appropriate
receivers when an error involving PREEMPTION_PRI elements occur.
PREEMPTION
When a previously admitted flow is preempted, a copy of the
preempting flow's PREEMPTION_PRI element is sent back toward the PDP
that originated the preempted PREEMPTION_PRI object. This PDP,
having information on both the preempting and the preempted
priorities may construct a higher priority PREEMPTION_PRI element in
an effort to re-instate the preempted flow.
Heterogeneity
When a flow F1 with Heterogeneous Error merging strategy set in its
PREEMPTION_PRI element encounters heterogeneity the PREEMPTION_PRI
element is sent back toward receivers with the Heterogeneity error
code set.
7 IANA Considerations
Following the policies outlined in [IANA-CONSIDERATIONS], Standard
RSVP Policy Elements (P-type values) are assigned by IETF Consensus
action as described in [RSVP-EXT].
P-Type PREEMPTION_PRI is assigned the value 1.
8 Security Considerations
The integrity of PREEMPTION_PRI is guaranteed, as any other policy
element, by the encapsulation into a Policy Data object [RSVP-EXT].
Further security mechanisms are not warranted, especially considering
that preemption priority aims to provide simple and quick guidance to
routers within a trusted zone or at least a single zone (no zone
boundaries are crossed).
9 References
[RFC2751] Herzog, S., "Signaled Preemption Priority
Policy Element", RFC 2751, January 2000.
[RSVP-EXT] Herzog, S., "RSVP Extensions for Policy
Control", RFC 2750, 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.
[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.
[RSVP] Braden, R., Zhang, L., Berson, S., Herzog, S.
and S. Jamin, "Resource ReSerVation Protocol
(RSVP) - Functional Specification", RFC 2205,
September 1997.
[IANA-CONSIDERATIONS] Alvestrand, H. and T. Narten, "Guidelines for
Writing an IANA Considerations Section in
RFCs", BCP 26, RFC 2434, October 1998.
10 Author's Address
Shai Herzog
PolicyConsulting.Com
200 Clove Rd.
New Rochelle, NY 10801
EMail: herzog@policyconsulting.com
Appendix A: Example
The following examples describe the computation of merged priority
elements as well as the translation (compression) of PREEMPTION_PRI
elements.
A.1 Computing Merged Priority
r1
/ QoS=Hi (Pr=3, St=Highest QoS)
/
s1-----A---------B--------r2 QoS=Low (Pr=4, St=Highest PP)
\ \
\ \ QoS=Low (Pr=7, St=Highest QoS)
r4 r3
QoS=Low (Pr=9, St=Error)
Example 1: Merging preemption priority elements
Example one describes a multicast scenario with one sender and four
receivers each with each own PREEMPTION_PRI element definition.
r1, r2 and r3 merge in B. The resulting priority is 4.
Reason: The PREEMPTION_PRI of r3 doesn't participate (since r3 is not
contributing to the merged QoS) and the priority is the highest of
the PREEMPTION_PRI from r1 and r2.
r1, r2, r3 and r4 merge in A. The resulting priority is again 4: r4
doesn't participate because its own QoS=Low is incompatible with the
other (r1) QoS=High. An error PREEMPTION_PRI should be sent back to
r4 telling it that its PREEMPTION_PRI element encountered
heterogeneity.
A.2 Translation (Compression) of Priority Elements
Given this set of participating PREEMPTION_PRI elements, the
following compression can take place at the merging node:
From:
(Pr=3, St=Highest QoS)
(Pr=7, St=Highest QoS)
(Pr=4, St=Highest PP)
(Pr=9, St=Highest PP)
(Pr=6, St=Highest PP)
To:
(Pr=7, St=Highest QoS)
(Pr=9, St=Highest PP)
Full Copyright Statement
Copyright (C) The Internet Society (2001). 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
§1Preemption Priority and Admission Control
Traditional Capacity based Admission Control (CAC) admits new flows until capacity is exhausted, a rule the RFC calls First Come First Admitted. Policy based Admission Control (PAC) tries to reduce the importance of arrival order and uses policy criteria instead. One popular criterion is the rank of a flow relative to others competing for the same node.
Preemption priority only takes effect when the flows trying to get through a node would overbook its resources, so that some would have to be rejected. The priority helps the node choose the most important flows and reject the low-priority ones. Nodes that support preemption should consider priorities to preempt some previously admitted low-priority flows to make room for a newer, high-priority flow.
The document defines the format and applicability of this priority as a policy element carried in the RSVP policy data of RFC 2750, for signaled policy admission protocols such as RSVP and COPS.
Normally the first people in line get the seats. With priorities, a more important person arriving late can take the seat of a less important person, but only when the room is full.
§2Scope and the Usage Model
The policy framework of RFC 2753 describes the parts that take part in policy decisions: the PDP (Policy Decision Point), the PEP (Policy Enforcement Point) and the LDP (Local Decision Point). PREEMPTION_PRI elements are meant to be simple, stateless and light-weight so they can be handled inside a node's LDP.
- Created by PDPs. A PDP reduces its relevant policy rules into a single priority and passes it downstream to PEPs of the same policy domain that have an LDP but no controlling PDP.
- Processed by LDPs. An LDP may interpret an element, forward it as is, or merge locally and forward an equivalent merged element. It must follow the merging strategy the PDP encoded.
- Enforced by PEPs. They work with the node's traffic control module and capacity admission control to enforce priorities and preempt admitted flows when needed.
Because the priority is stateless, needing no past history or outside information to interpret, it is carried in COPS messages as a Stateless Policy Data Decision object.
A boss writes down a rank, helpers along the way pass the rank on, and the doorkeeper uses it to decide who gets in.
§4The Policy Element Format
A Policy Data object, defined in RFC 2750, may hold one or more policy elements, each representing a different policy. The preemption priority element is 12 bytes long and has these fields: Length (always 12), P-Type (PREEMPTION_PRI = 1), Flags (reserved, always 0), Merge Strategy, Error Code, a reserved byte (always 0), Preemption Priority and Defending Priority.
The two priorities are 16-bit unsigned values, and higher values mean higher priority. The preemption priority is how the new flow ranks against the defending priority of flows already admitted. Once a flow is admitted its preemption priority becomes irrelevant and its defending priority is used instead against new arrivals. A flow's preemption priority must always be less than or equal to its defending priority.
A wide gap between the two adds stability. A moderate preemption priority makes it harder for the flow to preempt others, but once it succeeds the higher defending priority makes it harder for the flow to be preempted. This balances order dependency against priority.
You have two numbers. One is how strong you are when asking for a seat. The other is how strong you are when someone tries to take your seat, and it is never smaller than the first.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
LENGTH | Length | 2 bytes | 12 | Overall length of the element in bytes. |
P-TYPE | P-Type | 2 bytes | 1 | Policy element type PREEMPTION_PRI. |
FLAGS | Flags | 1 byte | 0 | Reserved, always 0. |
MERGE-STRATEGY | Merge Strategy | 1 byte | How to merge priorities: 1, 2 or 3. | |
ERROR-CODE | Error Code | 1 byte | 0 NO_ERROR, 1 PREEMPTION, 2 HETEROGENEOUS. | |
RESERVED | Reserved | 1 byte | 0 | Always 0. |
PREEMPTION-PRIORITY | Preemption Priority | 2 bytes | Priority of the new flow against defending priorities. Higher is more important. | |
DEFENDING-PRIORITY | Defending Priority | 2 bytes | Priority used once the flow is admitted. Never below the preemption priority. |
§5Merging Priorities
When two RSVP reservations merge, such as F1 with high QoS and low priority and F2 with low QoS and high priority, the merged reservation has high QoS but an open question: which priority? The RFC names three risks. Free-riders: if the merged flow takes the high priority, F1 gets a priority meant for F2. Denial of service: if it takes the low priority, the flow could be preempted or fail even though F2 asked for high priority. Instability: preemption priority combined with killer reservation and blockade state may cause a reservation to be preempted, reinstated and preempted again periodically.
An LDP computes the merged result in three steps: preemption and defending priority are merged separately; participating elements are selected according to their merge strategy; then the highest priority among the participants is taken.
The three strategies are in the figure below. Strategy 1, taking the priority of the highest QoS, lets an element take part only if its flow contributed to the merged QoS level. It is the recommended strategy and is best at preventing free-riders and denial of service. Strategy 2 lets every element take part; it is not recommended but may be simpler to implement. Strategy 3 allows an element to take part only if all other flows have the same QoS level. It is recommended when reservation homogeneity is coordinated and enforced for the whole multicast tree, and it is more restrictive than strategy 1 but easier to implement.
When two kids share one seat request, someone has to decide which rank counts. Using the rank of the kid who actually needs the big seat is the fairest way.
- 1Highest QoS — Take the priority of the highest QoS; recommended.
- 2Highest priority — Take the highest priority; aggressive, not recommended.
- 3Force error — Force an error on a heterogeneous merge.
§6Modifying Elements and Error Processing
If a POLICY_DATA object is protected by integrity, LDPs should not modify it; they must forward it as is, or its security envelope would be invalid. Otherwise an LDP may merge incoming elements to reduce their size and number. Merging is done separately for each merge strategy, because the RFC knows of no way to merge elements of different strategies without losing information that matters to other nodes. For each strategy the highest value among the participating elements is placed in one outgoing element, so the number of forwarded elements is at most the number of strategies, regardless of the number of receivers.
Errors are sent back as PREEMPTION_PRI error objects. Code 0 is NO_ERROR for regular elements, 1 is PREEMPTION and 2 is HETEROGENEOUS. On preemption, a copy of the preempting flow's element goes back toward the PDP that created the preempted element. That PDP knows both priorities and may build a higher-priority element to try to reinstate the flow. If a flow using the heterogeneous-error strategy meets heterogeneity, its element is sent back toward the receivers with the heterogeneity error code.
Helpers can combine rank notes to save paper, unless the note is sealed. If someone loses their seat, the boss is told who took it, so the boss can write a stronger note.
§8Security, IANA and Status
As with any policy element, the integrity of PREEMPTION_PRI is guaranteed by being encapsulated in a Policy Data object (RFC 2750). The RFC says further security mechanisms are not warranted, because preemption priority gives simple and quick guidance to routers inside a trusted zone, or at least a single zone with no zone boundaries crossed.
For IANA, Standard RSVP Policy Element P-type values are assigned by IETF Consensus action, and P-Type PREEMPTION_PRI is assigned the value 1. The abstract states that this memo corrects an RSVP POLICY_DATA P-Type codepoint assignment error in RFC 2751, which it obsoletes.
The ranks are only shared among helpers inside one trusted club, so the sealed envelope is enough protection.