From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc4412.txt | 2019 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2019 insertions(+) create mode 100644 doc/rfc/rfc4412.txt (limited to 'doc/rfc/rfc4412.txt') diff --git a/doc/rfc/rfc4412.txt b/doc/rfc/rfc4412.txt new file mode 100644 index 0000000..efd8998 --- /dev/null +++ b/doc/rfc/rfc4412.txt @@ -0,0 +1,2019 @@ + + + + + + +Network Working Group H. Schulzrinne +Request for Comments: 4412 Columbia U. +Category: Standards Track J. Polk + Cisco Systems + February 2006 + + + Communications Resource Priority for + the Session Initiation Protocol (SIP) + +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 (2006). + +Abstract + + This document defines two new Session Initiation Protocol (SIP) + header fields for communicating resource priority, namely, + "Resource-Priority" and "Accept-Resource-Priority". The + "Resource-Priority" header field can influence the behavior of SIP + user agents (such as telephone gateways and IP telephones) and SIP + proxies. It does not directly influence the forwarding behavior of + IP routers. + +Table of Contents + + 1. Introduction ....................................................3 + 2. Terminology .....................................................6 + 3. The Resource-Priority and Accept-Resource-Priority SIP + Header Fields ...................................................6 + 3.1. The 'Resource-Priority' Header Field .......................6 + 3.2. The 'Accept-Resource-Priority' Header Field ................8 + 3.3. Usage of the 'Resource-Priority' and + 'Accept-Resource-Priority' .................................8 + 3.4. The 'resource-priority' Option Tag .........................9 + 4. Behavior of SIP Elements That Receive Prioritized Requests ......9 + 4.1. Introduction ...............................................9 + 4.2. General Rules ..............................................9 + 4.3. Usage of Require Header with Resource-Priority ............10 + 4.4. OPTIONS Request with Resource-Priority ....................10 + + + +Schulzrinne & Polk Standards Track [Page 1] + +RFC 4412 SIP Resource Priority February 2006 + + + 4.5. Approaches for Preferential Treatment of Requests .........11 + 4.5.1. Preemption .........................................11 + 4.5.2. Priority Queueing ..................................12 + 4.6. Error Conditions ..........................................12 + 4.6.1. Introduction .......................................12 + 4.6.2. No Known Namespace or Priority Value ...............13 + 4.6.3. Authentication Failure .............................13 + 4.6.4. Authorization Failure ..............................14 + 4.6.5. Insufficient Resources .............................14 + 4.6.6. Busy ...............................................14 + 4.7. Element-Specific Behaviors ................................15 + 4.7.1. User Agent Client Behavior .........................15 + 4.7.2. User Agent Server Behavior .........................15 + 4.7.3. Proxy Behavior .....................................16 + 5. Third-Party Authentication .....................................17 + 6. Backwards Compatibility ........................................17 + 7. Examples .......................................................17 + 7.1. Simple Call ...............................................18 + 7.2. Receiver Does Not Understand Namespace ....................19 + 8. Handling Multiple Concurrent Namespaces ........................21 + 8.1. General Rules .............................................21 + 8.2. Examples of Valid Orderings ...............................21 + 8.3. Examples of Invalid Orderings .............................22 + 9. Registering Namespaces .........................................23 + 10. Namespace Definitions .........................................24 + 10.1. Introduction .............................................24 + 10.2. The "DSN" Namespace ......................................24 + 10.3. The "DRSN" Namespace .....................................25 + 10.4. The "Q735" Namespace .....................................25 + 10.5. The "ETS" Namespace ......................................26 + 10.6. The "WPS" Namespace ......................................26 + 11. Security Considerations .......................................27 + 11.1. General Remarks ..........................................27 + 11.2. Authentication and Authorization .........................27 + 11.3. Confidentiality and Integrity ............................28 + 11.4. Anonymity ................................................29 + 11.5. Denial-of-Service Attacks ................................29 + 12. IANA Considerations ...........................................30 + 12.1. Introduction .............................................30 + 12.2. IANA Registration of 'Resource-Priority' and + 'Accept-Resource-Priority' Header Fields .................30 + 12.3. IANA Registration for Option Tag resource-priority .......31 + 12.4. IANA Registration for Response Code 417 ..................31 + 12.5. IANA Resource-Priority Namespace Registration ............31 + 12.6. IANA Priority-Value Registrations ........................32 + 13. Acknowledgements ..............................................32 + 14. References ....................................................33 + + + + +Schulzrinne & Polk Standards Track [Page 2] + +RFC 4412 SIP Resource Priority February 2006 + + +1. Introduction + + During emergencies, communications resources (including telephone + circuits, IP bandwidth, and gateways between the circuit-switched and + IP networks) may become congested. Congestion can occur due to heavy + usage, loss of resources caused by the natural or man-made disaster, + and attacks on the network during man-made emergencies. This + congestion may make it difficult for persons charged with emergency + assistance, recovery, or law enforcement to coordinate their efforts. + As IP networks become part of converged or hybrid networks, along + with public and private circuit-switched (telephone) networks, it + becomes necessary to ensure that these networks can assist during + such emergencies. + + Also, users may want to interrupt their lower-priority communications + activities and dedicate their end-system resources to the high- + priority communications attempt if a high-priority communications + request arrives at their end system. + + There are many IP-based services that can assist during emergencies. + This memo only covers real-time communications applications involving + the Session Initiation Protocol (SIP) [RFC3261], including voice- + over-IP, multimedia conferencing, instant messaging, and presence. + + SIP applications may involve at least five different resources that + may become scarce and congested during emergencies. These resources + include gateway resources, circuit-switched network resources, IP + network resources, receiving end-system resources, and SIP proxy + resources. IP network resources are beyond the scope of SIP + signaling and are therefore not considered here. + + Even if the resources at the SIP element itself are not scarce, a SIP + gateway may mark outgoing calls with an indication of priority, e.g., + on an ISUP (ISDN User Part) IAM (Initial Address Message) originated + by a SIP gateway with the Public Switched Telephone Network (PSTN). + + In order to improve emergency response, it may become necessary to + prioritize access to SIP-signaled resources during periods of + emergency-induced resource scarcity. We call this "resource + prioritization". The mechanism itself may well be in place at all + times, but may only materially affect call handling during times of + resource scarcity. + + Currently, SIP does not include a mechanism that allows a request + originator to indicate to a SIP element that it wishes the request to + invoke such resource prioritization. To address this need, this + document adds a SIP protocol element that labels certain SIP + requests. + + + +Schulzrinne & Polk Standards Track [Page 3] + +RFC 4412 SIP Resource Priority February 2006 + + + This document defines (Section 3) two new SIP header fields for + communications resource priority, called 'Resource-Priority' and + 'Accept-Resource-Priority'. The 'Resource-Priority' header field MAY + be used by SIP user agents, including Public Switched Telephone + Network (PSTN) gateways and terminals, and SIP proxy servers to + influence their treatment of SIP requests, including the priority + afforded to PSTN calls. For PSTN gateways, the behavior translates + into analogous schemes in the PSTN, for example, the ITU + Recommendation Q.735.3 [Q.735.3] prioritization mechanism, in both + the PSTN-to-IP and IP-to-PSTN directions. ITU Recommendation I.255.3 + [I.255.3] is another example. + + A SIP request with a 'Resource-Priority' indication can be treated + differently in these situations: + + 1. The request can be given elevated priority for access to PSTN + gateway resources, such as trunk circuits. + + 2. The request can interrupt lower-priority requests at a user + terminal, such as an IP phone. + + 3. The request can carry information from one multi-level priority + domain in the telephone network (e.g., using the facilities of + Q.735.3 [Q.735.3]) to another, without the SIP proxies themselves + inspecting or modifying the header field. + + 4. In SIP proxies and back-to-back user agents, requests of higher + priorities may displace existing signaling requests or bypass + PSTN gateway capacity limits in effect for lower priorities. + + This header field is related to, but differs in semantics from, the + 'Priority' header field ([RFC3261], Section 20.26). The 'Priority' + header field describes the importance that the SIP request should + have for the receiving human or its agent. For example, that header + may be factored into decisions about call routing to mobile devices + and assistants and about call acceptance when the call destination is + busy. The 'Priority' header field does not affect the usage of PSTN + gateway or proxy resources, for example. In addition, any User Agent + Client (UAC) can assert any 'Priority' value, and usage of 'Resource- + Priority' header field values is subject to authorization. + + While the 'Resource-Priority' header field does not directly + influence the forwarding behavior of IP routers or the use of + communications resources such as packet forwarding priority, + procedures for using this header field to cause such influence may be + defined in other documents. + + + + + +Schulzrinne & Polk Standards Track [Page 4] + +RFC 4412 SIP Resource Priority February 2006 + + + Existing implementations of RFC 3261 that do not participate in the + resource priority mechanism follow the normal rules of RFC 3261, + Section 8.2.2: "If a UAS does not understand a header field in a + request (that is, the header field is not defined in this + specification or in any supported extension), the server MUST ignore + that header field and continue processing the message". Thus, the + use of this mechanism is wholly invisible to existing implementations + unless the request includes the Require header field with the + resource-priority option tag. + + The mechanism described here can be used for emergency preparedness + in emergency telecommunications systems, but is only a small part of + an emergency preparedness network and is not restricted to such use. + + The mechanism aims to satisfy the requirements in [RFC3487]. It is + structured so that it works in all SIP and Real-Time Transport + Protocol (RTP) [RFC3550] transparent networks, defined in [RFC3487]. + In such networks, all network elements and SIP proxies let valid SIP + requests pass through unchanged. This is important since it is + likely that this mechanism will often be deployed in networks where + the edge networks are unaware of the resource priority mechanism and + provide no special privileges to such requests. The request then + reaches a PSTN gateway or set of SIP elements that are aware of the + mechanism. + + For conciseness, we refer to SIP proxies and user agents (UAs) that + act on the 'Resource-Priority' header field as RP actors. + + It is likely to be common that the same SIP element will handle + requests that bear the 'Resource-Priority' header fields and those + that do not. + + Government entities and standardization bodies have developed several + different priority schemes for their networks. Users would like to + be able to obtain authorized priority handling in several of these + networks, without changing SIP clients. Also, a single call may + traverse SIP elements that are run by different administrations and + subject to different priority mechanisms. Since there is no global + ordering among those priorities, we allow each request to contain + more than one priority value drawn from these different priority + lists, called a namespace in this document. Typically, each SIP + element only supports one such namespace, but we discuss what happens + if an element needs to support multiple namespaces in Section 8. + + Since gaining prioritized access to resources offers opportunities to + deny service to others, it is expected that all such prioritized + calls are subject to authentication and authorization, using standard + SIP security (Section 11) or other appropriate mechanisms. + + + +Schulzrinne & Polk Standards Track [Page 5] + +RFC 4412 SIP Resource Priority February 2006 + + + The remainder of this document is structured as follows. After + defining terminology in Section 2, we define the syntax for the two + new SIP header fields in Section 3 and then describe protocol + behavior in Section 4. The two principal mechanisms for + differentiated treatment of SIP requests (namely, preemption and + queueing) are described in Section 4.5. Error conditions are covered + in Section 4.6. Sections 4.7.1 through 4.7.3 detail the behavior of + specific SIP elements. Third-party authentication is briefly + summarized in Section 5. Section 6 describes how this feature + affects existing systems that do not support it. + + Since calls may traverse multiple administrative domains with + different namespaces or multiple elements with the same namespace, it + is strongly suggested that all such domains and elements apply the + same algorithms for the same namespace, as otherwise the end-to-end + experience of privileged users may be compromised. + + Protocol examples are given in Section 7. Section 8 discusses what + happens if a request contains multiple namespaces or an element can + handle more than one namespace. Section 9 enumerates the information + that namespace registrations need to provide. Section 10 defines the + properties of five namespaces that are registered through this + document. Security issues are considered in Section 11, but this + document does not define new security mechanisms. Section 12 + discusses IANA considerations and registers parameters related to + this document. + +2. Terminology + + In this document, the key words "MUST", "MUST NOT", "REQUIRED", + "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", + and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 + [RFC2119], and indicate requirement levels for compliant + implementations. + +3. The Resource-Priority and Accept-Resource-Priority SIP Header Fields + + This section defines the 'Resource-Priority' and + 'Accept-Resource-Priority' SIP header field syntax. Behavior is + described in Section 4. + +3.1. The 'Resource-Priority' Header Field + + The 'Resource-Priority' request header field marks a SIP request as + desiring prioritized access to resources, as described in the + introduction. + + + + + +Schulzrinne & Polk Standards Track [Page 6] + +RFC 4412 SIP Resource Priority February 2006 + + + There is no protocol requirement that all requests within a SIP + dialog or session use the 'Resource-Priority' header field. Local + administrative policy MAY mandate the inclusion of the + 'Resource-Priority' header field in all requests. Implementations of + this specification MUST allow inclusion to be either by explicit user + request or automatic for all requests. + + The syntax of the 'Resource-Priority' header field is described + below. The "token-nodot" production is copied from [RFC3265]. + + Resource-Priority = "Resource-Priority" HCOLON + r-value *(COMMA r-value) + r-value = namespace "." r-priority + namespace = token-nodot + r-priority = token-nodot + token-nodot = 1*( alphanum / "-" / "!" / "%" / "*" + / "_" / "+" / "`" / "'" / "~" ) + + An example 'Resource-Priority' header field is shown below: + + Resource-Priority: dsn.flash + + The 'r-value' parameter in the 'Resource-Priority' header field + indicates the resource priority desired by the request originator. + Each resource value (r-value) is formatted as 'namespace' '.' + 'priority value'. The value is drawn from the namespace identified + by the 'namespace' token. Namespaces and priorities are case- + insensitive ASCII tokens that do not contain periods. Thus, + "dsn.flash" and "DSN.Flash", for example, are equivalent. Each + namespace has at least one priority value. Namespaces and priority + values within each namespace MUST be registered with IANA + (Section 12). Initial namespace registrations are described in + Section 12.5. + + Since a request may traverse multiple administrative domains with + multiple different namespaces, it is necessary to be able to + enumerate several different namespaces within the same message. + However, a particular namespace MUST NOT appear more than once in the + same SIP message. These may be expressed equivalently as either + comma-separated lists within a single header field, as multiple + header fields, or as some combination. The ordering of 'r-values' + within the header field has no significance. Thus, for example, the + following three header snippets are equivalent: + + Resource-Priority: dsn.flash, wps.3 + + Resource-Priority: wps.3, dsn.flash + + + + +Schulzrinne & Polk Standards Track [Page 7] + +RFC 4412 SIP Resource Priority February 2006 + + + Resource-Priority: wps.3 + Resource-Priority: dsn.flash + +3.2. The 'Accept-Resource-Priority' Header Field + + The 'Accept-Resource-Priority' response header field enumerates the + resource values (r-values) a SIP user agent server is willing to + process. (This does not imply that a call with such values will find + sufficient resources and succeed.) The syntax of the 'Accept- + Resource-Priority' header field is as follows: + + Accept-Resource-Priority = "Accept-Resource-Priority" HCOLON + [r-value *(COMMA r-value)] + + An example is given below: + + Accept-Resource-Priority: dsn.flash-override, + dsn.flash, dsn.immediate, dsn.priority, dsn.routine + + Some administrative domains MAY choose to disable the use of the + 'Accept-Resource-Priority' header for revealing too much information + about that domain in responses. However, this behavior is NOT + RECOMMENDED, as this header field aids in troubleshooting. + +3.3. Usage of the 'Resource-Priority' and 'Accept-Resource-Priority' + Header Fields + + The following table extends the values in Table 2 of RFC 3261 + [RFC3261]. (The PRACK method, labeled as PRA, is defined in + [RFC3262], the SUBSCRIBE (labeled SUB) and NOTIFY (labeled NOT) + methods in [RFC3265], the UPDATE (UPD) method in [RFC3311], the + MESSAGE (MSG) method in [RFC3428], the REFER (REF) method in + [RFC3515], the INFO (INF) method in [RFC2976], and the PUBLISH (PUB) + method in [RFC3903].) + + Header field where proxy INV ACK CAN BYE REG OPT PRA + ---------------------------------------------------------------- + Resource-Priority R amdr o o o o o o o + Accept-Resource-Priority 200 amdr o - o o o o o + Accept-Resource-Priority 417 amdr o - o o o o o + + Header field where proxy SUB NOT UPD MSG REF INF PUB + ---------------------------------------------------------------- + Resource-Priority R amdr o o o o o o o + Accept-Resource-Priority 200 amdr o o o o o o o + Accept-Resource-Priority 417 amdr o o o o o o o + + + + + +Schulzrinne & Polk Standards Track [Page 8] + +RFC 4412 SIP Resource Priority February 2006 + + + Other request methods MAY define their own handling rules; unless + otherwise specified, recipients MAY ignore these header fields. + +3.4. The 'resource-priority' Option Tag + + This document also defines the "resource-priority" option tag. The + behavior is described in Section 4.3, and the IANA registration is in + Section 12.3. + +4. Behavior of SIP Elements That Receive Prioritized Requests + +4.1. Introduction + + All SIP user agents and proxy servers that support this specification + share certain common behavior, which we describe below in + Section 4.2. The behavior when a 'resource-priority' option tag is + encountered in a 'Require' header field is described in Section 4.3. + Section 4.4 describes the treatment of OPTIONS requests. The two + fundamental resource contention resolution mechanisms, preemption and + queueing, are described in Section 4.5. Section 4.6 explains what + happens when requests fail. Behavior specific to user agent clients, + servers, and proxy servers is covered in Section 4.7. + +4.2. General Rules + + The 'Resource-Priority' header field is potentially applicable to all + SIP request messages. At a minimum, implementations of the following + request types MUST support the Resource-Priority header to be in + compliance with this specification: + + o INVITE [RFC3261] + + o ACK [RFC3261] + + o PRACK [RFC3262] + + o UPDATE [RFC3311] + + o REFER [RFC3515] + + Implementations SHOULD support the 'Resource-Priority' header field + in the following request types: + + o MESSAGE [RFC3428] + + o SUBSCRIBE [RFC3265] + + o NOTIFY [RFC3265] + + + +Schulzrinne & Polk Standards Track [Page 9] + +RFC 4412 SIP Resource Priority February 2006 + + + Note that this does not imply that all implementations have to + support all request methods listed. + + If a SIP element receives the 'Resource-Priority' header field in a + request other than those listed above, the header MAY be ignored, + according to the rules of [RFC3261]. + + In short, an RP actor performs the following steps when receiving a + prioritized request. Error behavior is described in Section 4.6. + + 1. If the RP actor recognizes none of the name spaces, it treats the + request as if it had no 'Resource-Priority' header field. + + 2. It ascertains that the request is authorized according to local + policy to use the priority levels indicated. If the request is + not authorized, it rejects it. Examples of authorization + policies are discussed in Security Considerations (Section 11). + + 3. If the request is authorized and resources are available (no + congestion), it serves the request as usual. If the request is + authorized but resources are not available (congestion), it + either preempts other current sessions or inserts the request + into a priority queue, as described in Section 4.5. + +4.3. Usage of Require Header with Resource-Priority + + Following standard SIP behavior, if a SIP request contains the + 'Require' header field with the 'resource-priority' option tag, a SIP + user agent MUST respond with a 420 (Bad Extension) if it does not + support the SIP extensions described in this document. It then lists + "resource-priority" in the 'Unsupported' header field included in the + response. + + The use of the 'resource-priority' option tag in 'Proxy-Require' + header field is NOT RECOMMENDED. + +4.4. OPTIONS Request with Resource-Priority + + An OPTIONS request can be used to determine if an element supports + the mechanism. A compliant implementation SHOULD return an 'Accept- + Resource-Priority' header field in OPTIONS responses enumerating all + valid resource values, but an RP actor MAY be configured not to + return such values or only to return them to authorized requestors. + + Following standard SIP behavior, OPTIONS responses MUST include the + 'Supported' header field that includes the 'resource-priority' option + tag. + + + + +Schulzrinne & Polk Standards Track [Page 10] + +RFC 4412 SIP Resource Priority February 2006 + + + According to RFC 3261, Section 11, proxies that receive a request + with a 'Max-Forwards' header field value of zero MAY answer the + OPTIONS request, allowing a UAC to discover the capabilities of both + proxy and user agent servers. + +4.5. Approaches for Preferential Treatment of Requests + + SIP elements may use the resource priority mechanism to modify a + variety of behaviors, such as routing requests, authentication + requirements, override of network capacity controls, or logging. The + resource priority mechanism may influence the treatment of the + request itself, the marking of outbound PSTN calls at a gateway, or + of the session created by the request. (Here, we use the terms + session and call interchangeably, both implying a continuous data + stream between two or more parties. Sessions are established by SIP + dialogs.) + + Below, we define two common algorithms, namely, preemption and + priority queueing. Preemption applies only to sessions created by + SIP requests, while both sessions and request handling can be subject + to priority queueing. Both algorithms can sometimes be combined in + the same element, although none of the namespaces described in this + document do this. Algorithms can be defined for each namespace or, + in some cases, can be specific to an administrative domain. Other + behavior, such as request routing or network management controls, is + not defined by this specification. + + Naturally, only SIP elements that understand this mechanism and the + namespace and resource value perform these algorithms. Section 4.6.2 + discusses what happens if an RP actor does not understand priority + values contained in a request. + +4.5.1. Preemption + + An RP actor following a preemption policy may disrupt an existing + session to make room for a higher-priority incoming session. Since + sessions may require different amounts of bandwidth or a different + number of circuits, a single higher-priority session may displace + more than one lower-priority session. Unless otherwise noted, + requests do not preempt other requests of equal priority. As noted + above, the processing of SIP requests itself is not preempted. Thus, + since proxies do not manage sessions, they do not perform preemption. + + [RFC4411] contains more details and examples of this behavior. + + UAS behavior for preemption is discussed in Section 4.7.2.1. + + + + + +Schulzrinne & Polk Standards Track [Page 11] + +RFC 4412 SIP Resource Priority February 2006 + + +4.5.2. Priority Queueing + + In a priority queueing policy, requests that find no available + resources are queued to the queue assigned to the priority value. + Unless otherwise specified, requests are queued in first-come, first- + served order. Each priority value may have its own queue, or several + priority values may share a single queue. If a resource becomes + available, the RP actor selects the request from the highest-priority + non-empty queue according to the queue service policy. For first- + come, first-served policies, the request from that queue that has + been waiting the longest is served. Each queue can hold a finite + number of pending requests. If the per-priority-value queue for a + newly arriving request is full, the request is rejected immediately, + with the status codes specified in Section 4.6.5 and Section 4.6.6. + In addition, a priority queueing policy MAY impose a waiting time + limit for each priority class, whereby requests that exceed a + specified waiting time are ejected from the queue and a 408 (Request + Timeout) failure response is returned to the requestor. + + Finally, an RP actor MAY impose a global queue size limit summed + across all queues and drop waiting lower-priority requests with a 408 + (Request Timeout) failure response. This does not imply preemption, + since the session has not been established yet. + + UAS behavior for queueing is discussed in Section 4.7.2.2. + +4.6. Error Conditions + +4.6.1. Introduction + + In this section, we describe the error behavior that is shared among + multiple types of RP actors (including various instances of UAS such + as trunk gateways, line gateways, and IP phones) and proxies. + + A request containing a resource priority indication can fail for four + reasons: + + o the RP actor does not understand the priority value + (Section 4.6.2), + + o the requestor is not authenticated (Section 4.6.3), + + o an authenticated requestor is not authorized to make such a + request (Section 4.6.4), or + + o there are insufficient resources for an authorized request + (Section 4.6.5). + + + + +Schulzrinne & Polk Standards Track [Page 12] + +RFC 4412 SIP Resource Priority February 2006 + + + We treat these error cases in the order that they typically arise in + the processing of requests with Resource-Priority headers. However, + this order is not mandated. For example, an RP actor that knows that + a particular resource value cannot be served or queued MAY, as a + matter of local policy, forgo authorization, since it would only add + processing load without changing the outcome. + +4.6.2. No Known Namespace or Priority Value + + If an RP actor does not understand any of the resource values in the + request, the treatment depends on the presence of the 'Require' + 'resource-priority' option tag: + + 1. Without the option tag, the RP actor treats the request as if it + contained no 'Resource-Priority' header field and processes it + with default priority. Resource values that are not understood + MUST NOT be modified or deleted. + + 2. With the option tag, it MUST reject the request with a 417 + (Unknown Resource-Priority) response code. + + Making case (1) the default is necessary since otherwise there would + be no way to successfully complete any calls in the case where a + proxy on the way to the UAS shares no common namespaces with the UAC, + but the UAC and UAS do have such a namespace in common. + + In general, as noted, a SIP request can contain more than one + 'Resource-Priority' header field. This is necessary if a request + needs to traverse different administrative domains, each with its own + set of valid resource values. For example, the ETS namespace might + be enabled for United States government networks that also support + the DSN and/or DRSN namespaces for most individuals in those domains. + + A 417 (Unknown Resource-Priority) response MAY, according to local + policy, include an 'Accept-Resource-Priority' header field + enumerating the acceptable resource values. + +4.6.3. Authentication Failure + + If the request is not authenticated, a 401 (Unauthorized) or 407 + (Proxy Authentication Required) response is returned in order to + allow the requestor to insert appropriate credentials. + + + + + + + + + +Schulzrinne & Polk Standards Track [Page 13] + +RFC 4412 SIP Resource Priority February 2006 + + +4.6.4. Authorization Failure + + If the RP actor receives an authenticated request with a namespace + and priority value it recognizes but the originator is not authorized + for that level of service, the element MUST return a 403 (Forbidden) + response. + +4.6.5. Insufficient Resources + + Insufficient resource conditions can occur on proxy servers and user + agent servers, typically trunk gateways, if an RP actor receives an + authorized request, has insufficient resources, and the request + neither preempts another session nor is queued. A request can fail + because the RP actor has either insufficient processing capacity to + handle the SIP request or insufficient bandwidth or trunk capacity to + establish the requested session for session-creating SIP requests. + + If the request fails because the RP actor cannot handle the signaling + load, the RP actor responds with 503 (Service Unavailable). + + If there is not enough bandwidth, or if there is an insufficient + number of trunks, a 488 (Not Acceptable Here) response indicates that + the RP actor is rejecting the request due to media path availability, + such as insufficient gateway resources. In that case, [RFC3261] + advises that a 488 response SHOULD include a 'Warning' header field + with a reason for the rejection; warning code 370 (Insufficient + Bandwidth) is typical. + + For systems implementing queueing, if the request is queued, the UAS + will return 408 (Request Timeout) if the request exceeds the maximum + configured waiting time in the queue. + +4.6.6. Busy + + Resource contention also occurs when a call request arrives at a UAS + that is unable to accept another call, because the UAS either has + just one line appearance or has active calls on all line appearances. + If the call request indicates an equal or lower priority value when + compared to all active calls present on the UAS, the UAS returns a + 486 (Busy here) response. + + If the request is queued instead, the UAS will return a 408 (Request + Timeout) if the request exceeds the maximum configured waiting time + in the device queue. + + If a proxy gets 486 (Busy Here) responses on all branches, it can + then return a 600 (Busy Everywhere) response to the caller. + + + + +Schulzrinne & Polk Standards Track [Page 14] + +RFC 4412 SIP Resource Priority February 2006 + + +4.7. Element-Specific Behaviors + +4.7.1. User Agent Client Behavior + + SIP UACs supporting this specification MUST be able to generate the + 'Resource-Priority' header field for requests that require elevated + resource access priority. As stated previously, the UAC SHOULD be + able to generate more than one resource value in a single SIP + request. + + Upon receiving a 417 (Unknown Resource-Priority) response, the UAC + MAY attempt a subsequent request with the same or different resource + value. If available, it SHOULD choose authorized resource values + from the set of values returned in the 'Accept-Resource-Priority' + header field. + +4.7.1.1. User Agent Client Behavior with a Preemption Algorithm + + A UAC that requests a priority value that may cause preemption MUST + understand a Reason header field in the BYE request explaining why + the session was terminated, as discussed in [RFC4411]. + +4.7.1.2. User Agent Client Behavior with a Queueing Policy + + By standard SIP protocol rules, a UAC MUST be prepared to receive a + 182 (Queued) response from an RP actor that is currently at capacity, + but that has put the original request into a queue. A UAC MAY + indicate this queued status to the user by some audio or visual + indication to prevent the user from interpreting the call as having + failed. + +4.7.2. User Agent Server Behavior + + The precise effect of the 'Resource-Priority' indication depends on + the type of UAS, the namespace, and local policy. + +4.7.2.1. User Agent Servers and Preemption Algorithm + + A UAS compliant with this specification MUST terminate a session + established with a valid namespace and lower-priority value in favor + of a new session set up with a valid namespace and higher relative + priority value, unless local policy has some form of call-waiting + capability enabled. If a session is terminated, the BYE method is + used with a 'Reason' header field indicating why and where the + preemption took place. + + Implementors have a number of choices in how to implement preemption + at IP phones with multiple line presences, i.e., with devices that + + + +Schulzrinne & Polk Standards Track [Page 15] + +RFC 4412 SIP Resource Priority February 2006 + + + can handle multiple simultaneous sessions. Naturally, if that device + has exhausted the number of simultaneous sessions, one of the + sessions needs to be replaced. If the device has spare sessions, an + implementation MAY choose to alert the callee to the arrival of a + higher-priority call. Details may also be set by local or namespace + policy. + + [RFC4411] provides additional information in the case of purposeful + or administrative termination of a session by including the Reason + header in the BYE message that states why the BYE was sent (in this + case, a preemption event). The mechanisms in that document allow + indication of where the termination occurred ('at the UA', 'within a + reservation', 'at a IP/PSTN gateway') and include call flow examples + of each reason. + +4.7.2.2. User Agent Servers and Queue-Based Policy + + A UAS compliant with this specification SHOULD generate a 182 + (Queued) response if that element's resources are busy, until it is + able to handle the request and provide a final response. The + frequency of such provisional messages is governed by [RFC3261]. + +4.7.3. Proxy Behavior + + SIP proxies MAY ignore the 'Resource-Priority' header field. SIP + proxies MAY reject any unauthenticated request bearing that header + field. + + When the 'Require' header field is included in a message, it ensures + that in parallel forking, only branches that support the resource- + priority mechanism succeed. + + If S/MIME encapsulation is used according to Section 23 of RFC 3261, + special considerations apply. As tabulated in Section 3.3, the + 'Resource-Priority' header field can be modified by proxies and thus + is exempted from the integrity checking described in Section 23.4.1.1 + of RFC 3261. Since it may need to be inspected or modified by + proxies, the header field MUST also be placed in the "outer" message + if the UAC would like proxy servers to be able to act on the header + information. Similar considerations apply if parts of the message + are integrity protected or encrypted as described in [RFC3420]. + + If S/MIME is not used, or if the 'Resource-Priority' header field is + in the "outer" header, SIP proxies MAY downgrade or upgrade the + 'Resource-Priority' of a request or insert a new 'Resource-Priority' + header if allowed by local policy. + + + + + +Schulzrinne & Polk Standards Track [Page 16] + +RFC 4412 SIP Resource Priority February 2006 + + + If a stateful proxy has authorized a particular resource priority + level, and if it offers differentiated treatment to responses + containing resource priority levels, the proxy SHOULD ignore any + higher value contained in responses, to prevent colluding user agents + from artificially raising the priority level. + + A SIP proxy MAY use the 'Resource-Priority' indication in its routing + decisions, e.g., to retarget to a SIP node or SIP URI that is + reserved for a particular resource priority. + + There are no special considerations for proxies when forking requests + containing a resource priority indication. + + Otherwise, the proxy behavior is the same as for user agent servers + described in Section 4.7.2. + +5. Third-Party Authentication + + In some cases, the RP actor may not be able to authenticate the + requestor or determine whether an authenticated user is authorized to + make such a request. In these circumstances, the SIP entity may + avail itself of general SIP mechanisms that are not specific to this + application. The authenticated identity management mechanism + [RFC3893] allows a third party to verify the identity of the + requestor and to certify this towards an RP actor. In networks with + mutual trust, the SIP-asserted identity mechanism [RFC3325] can help + the RP actor determine the identity of the requestor. + +6. Backwards Compatibility + + The resource priority mechanism described in this document is fully + backwards compatible with SIP systems following [RFC3261]. Systems + that do not understand the mechanism can only deliver standard, not + elevated, service priority. User agent servers and proxies can + ignore any 'Resource-Priority' header field just like any other + unknown header field and then treat the request like any other + request. Naturally, the request may still succeed. + +7. Examples + + The SDP message body and the BYE and ACK exchanges are the same as in + RFC 3665 [RFC3665] and are omitted for brevity. + + + + + + + + + +Schulzrinne & Polk Standards Track [Page 17] + +RFC 4412 SIP Resource Priority February 2006 + + +7.1. Simple Call + + User A User B + | | + | INVITE F1 | + |----------------------->| + | 180 Ringing F2 | + |<-----------------------| + | | + | 200 OK F3 | + |<-----------------------| + | ACK F4 | + |----------------------->| + | Both Way RTP Media | + |<======================>| + | | + + In this scenario, User A completes a call to User B directly. The + call from A to B is marked with a resource priority indication. + + F1 INVITE User A -> User B + + INVITE sip:UserB@biloxi.example.com SIP/2.0 + Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 + Max-Forwards: 70 + From: BigGuy ;tag=9fxced76sl + To: LittleGuy + Call-ID: 3848276298220188511@atlanta.example.com + CSeq: 1 INVITE + Resource-Priority: dsn.flash + Contact: + Content-Type: application/sdp + Content-Length: ... + + ... + + F2 180 Ringing User B -> User A + + SIP/2.0 180 Ringing + Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 + ;received=192.0.2.101 + From: BigGuy ;tag=9fxced76sl + To: LittleGuy ;tag=8321234356 + Call-ID: 3848276298220188511@atlanta.example.com + CSeq: 1 INVITE + Contact: + Content-Length: 0 + + + + +Schulzrinne & Polk Standards Track [Page 18] + +RFC 4412 SIP Resource Priority February 2006 + + + F3 200 OK User B -> User A + + SIP/2.0 200 OK + Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 + ;received=192.0.2.101 + From: BigGuy ;tag=9fxced76sl + To: LittleGuy ;tag=8321234356 + Call-ID: 3848276298220188511@atlanta.example.com + CSeq: 1 INVITE + Contact: + Content-Type: application/sdp + Content-Length: ... + + ... + +7.2. Receiver Does Not Understand Namespace + + In this example, the receiving UA does not understand the "dsn" + namespace and thus returns a 417 (Unknown Resource-Priority) status + code. We omit the message details for messages F5 through F7, since + they are essentially the same as in the first example. + + User A User B + | | + | INVITE F1 | + |----------------------->| + | 417 R-P failed F2 | + |<-----------------------| + | ACK F3 | + |----------------------->| + | | + | INVITE F4 | + |----------------------->| + | 180 Ringing F5 | + |<-----------------------| + | 200 OK F6 | + |<-----------------------| + | ACK F7 | + |----------------------->| + | | + | Both Way RTP Media | + |<======================>| + + + + + + + + + +Schulzrinne & Polk Standards Track [Page 19] + +RFC 4412 SIP Resource Priority February 2006 + + + F1 INVITE User A -> User B + + INVITE sip:UserB@biloxi.example.com SIP/2.0 + Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 + Max-Forwards: 70 + From: BigGuy ;tag=9fxced76sl + To: LittleGuy + Call-ID: 3848276298220188511@atlanta.example.com + CSeq: 1 INVITE + Require: resource-priority + Resource-Priority: dsn.flash + Contact: + + Content-Type: application/sdp + Content-Length: ... + + ... + + F2 417 Resource-Priority failed User B -> User A + + SIP/2.0 417 Unknown Resource-Priority + Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 + ;received=192.0.2.101 + From: BigGuy ;tag=9fxced76sl + To: LittleGuy ;tag=8321234356 + Call-ID: 3848276298220188511@atlanta.example.com + CSeq: 1 INVITE + Accept-Resource-Priority: q735.0, q735.1, q735.2, q735.3, q735.4 + Contact: + Content-Type: application/sdp + Content-Length: 0 + + F3 ACK User A -> User B + + ACK sip:UserB@biloxi.example.com SIP/2.0 + Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bd5 + Max-Forwards: 70 + From: BigGuy ;tag=9fxced76sl + To: LittleGuy ;tag=8321234356 + Call-ID: 3848276298220188511@atlanta.example.com + CSeq: 1 ACK + Content-Length: 0 + + + + + + + + + +Schulzrinne & Polk Standards Track [Page 20] + +RFC 4412 SIP Resource Priority February 2006 + + + F4 INVITE User A -> User B + + INVITE sip:UserB@biloxi.example.com SIP/2.0 + Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 + Max-Forwards: 70 + From: BigGuy ;tag=9fxced76sl + To: LittleGuy + Call-ID: 3848276298220188511@atlanta.example.com + CSeq: 2 INVITE + Require: resource-priority + Resource-Priority: q735.3 + Contact: + + Content-Type: application/sdp + Content-Length: ... + ... + +8. Handling Multiple Concurrent Namespaces + +8.1. General Rules + + A single SIP request MAY contain resource values from multiple + namespaces. As noted earlier, an RP actor disregards all namespaces + it does not recognize. This specification only addresses the case + where an RP actor then selects one of the remaining resource values + for processing, usually choosing the one with the highest relative + priority. + + If an RP actor understands multiple namespaces, it MUST create a + local total ordering across all resource values from these + namespaces, maintaining the relative ordering within each namespace. + It is RECOMMENDED that the same ordering be used across an + administrative domain. However, there is no requirement that such + ordering be the same across all administrative domains. + +8.2. Examples of Valid Orderings + + Below are a set of examples of an RP actor that supports two + namespaces, foo and bar. Foo's priority-values are 3 (highest), then + 2, and then 1 (lowest), and bar's priority-values are C (highest), + then B, and then A (lowest). + + + + + + + + + + +Schulzrinne & Polk Standards Track [Page 21] + +RFC 4412 SIP Resource Priority February 2006 + + + Below are five lists of acceptable priority orders the SIP element + may use: + + Foo.3 Foo.3 Bar.C (highest priority) + Foo.2 Bar.C Foo.3 + Foo.1 or Foo.2 or Foo.2 + Bar.C Bar.B Foo.1 + Bar.B Foo.1 Bar.B + Bar.A Bar.A Bar.A (lowest priority) + + + Bar.C (highest priority) + Foo.3 Bar.B (both treated with equal priority (FIFO)) + or Foo.2 Bar.A (both treated with equal priority (FIFO)) + Foo.1 (lowest priority) + + + Bar.C (highest priority) + Foo.3 + or Foo.2 + Foo.1 (lowest priority) + + In the last example above, Bar.A and Bar.B are ignored. + +8.3. Examples of Invalid Orderings + + Based on the priority order of the namespaces above, the following + combinations are examples of orderings that are NOT acceptable and + MUST NOT be configurable: + + Example 1 Example 2 Example 3 + --------- --------- --------- + Foo.3 Foo.3 Bar.C + Foo.2 Bar.A Foo.1 + Foo.1 or Foo.2 or Foo.3 + Bar.C Bar.B Foo.2 + Bar.A Foo.1 Bar.A + Bar.B Bar.C Bar.B + + Example 4 + --------- + Bar.C + Foo.1 Bar.B + or Foo.3 Bar.A + Foo.2 + + + + + + +Schulzrinne & Polk Standards Track [Page 22] + +RFC 4412 SIP Resource Priority February 2006 + + + These examples are invalid since the following global orderings are + not consistent with the namespace-internal order: + + o In Example 1, Bar.A is ordered higher than Bar.B. + + o In Example 2, Bar.A is ordered higher than Bar.B and Bar.C. + + o In Example 3, Foo.1 is ordered higher than Foo.2 and Foo.3. + + o In Example 4, Foo.1 is ordered higher than Foo.3 and Foo.2. + +9. Registering Namespaces + + Organizations considering the use of the Resource-Priority header + field should investigate whether an existing combination of namespace + and priority-values meets their needs. For example, emergency first + responders around the world are discussing utilizing this mechanism + for preferential treatment in future networks. Jurisdictions SHOULD + attempt to reuse existing IANA registered namespaces where possible, + as a goal of this document is not to have unique namespaces per + jurisdiction serving the same purpose, with the same usage of + priority levels. This will greatly increase interoperability and + reduce development time, and probably reduce future confusion if + there is ever a need to map one namespace to another in an + interworking function. + + Below, we describe the steps necessary to register a new namespace. + + A new namespace MUST be defined in a Standards Track RFC, following + the 'Standards Action' policy in [RFC2434], and MUST include the + following facets: + + o It must define the namespace label, a unique namespace label + within the IANA registry for the SIP Resource-Priority header + field. + + o It must enumerate the priority levels (i.e., 'r-priority' values) + the namespace is using. Note that only finite lists are + permissible, not unconstrained integers or tokens, for example. + + o The priority algorithm (Section 4.5), identifying whether the + namespace is to be used with priority queueing ("queue") or + preemption ("preemption"). If queueing is used, the namespace MAY + indicate whether normal-priority requests are queued. If there is + a new "intended algorithm" other than preemption or priority + queueing, the algorithm must be described, taking into account all + RP actors (UAC, UAS, proxies). + + + + +Schulzrinne & Polk Standards Track [Page 23] + +RFC 4412 SIP Resource Priority February 2006 + + + o A namespace may either reference an existing list of priority + values or define a new finite list of priority values in relative + priority order for IANA registration within the sip-parameters + Resource-Priority priority-values registry. New priority-values + SHOULD NOT be added to a previously IANA-registered list + associated with a particular namespace, as this may cause + interoperability problems. Unless otherwise specified, it is + assumed that all priority values confer higher priority than + requests without a priority value. + + o Any new SIP response codes unique to this new namespace need to be + explained and registered. + + o The reference document must specify and describe any new Warning + header field warn-codes (RFC 3261, Section 27.2). + + o The document needs to specify a new row for the following table + that summarizes the features of the namespace and is included into + IANA Resource-Priority Namespace registration: + + Intended New New resp. + Namespace Levels algorithm warn-code code Reference + --------- ------ ---------------- --------- -------- --------- +