rfc-4412

Communications Resource Priority for the Session Initiation Protocol (SIP)

H. Schulzrinne, J. Polk
date2006-02 streamIETF arearai wgsip statusPROPOSED STANDARD pages36 canonicalhttps://www.rfc-editor.org/rfc/rfc4412 doi10.17487/RFC4412
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. [STANDARDS-TRACK]

updated by

Extracted elements (28)

design-rationale §1

Multiple namespaces per request are permitted because a single call may traverse SIP elements run by different administrations subject to different priority schemes, and there is no global ordering among those schemes. Each SIP element only processes the namespace(s) it understands and ignores others, enabling transparent end-to-end delivery.

sip, realtime

design-rationale §1

The Resource-Priority header field differs from the existing SIP Priority header in that Priority describes importance to the receiving human or agent, while Resource-Priority influences consumption of gateway, proxy, and PSTN trunk resources. Additionally, any UAC can assert any Priority value freely, whereas Resource-Priority use is subject to authentication and authorization.

sip, realtime

design-rationale §4.6.2

Unrecognized namespaces without Require are silently passed through (not rejected) by default so that calls can succeed when a transit proxy shares no common namespace with the UAC and UAS but the UAC and UAS themselves do share a namespace. Requiring support at every hop would make end-to-end priority impossible in mixed networks.

sip, realtime

interoperability-note §4.7.3

If S/MIME encapsulation is used, the Resource-Priority header MUST also be placed in the outer message if the UAC wants proxy servers to act on it, since proxies need to inspect or modify it. The header is classified as proxy-modifiable and is exempted from S/MIME integrity checking per RFC 3261 Section 23.4.1.1.

sip, security, realtime

interoperability-note §6

The mechanism is fully backwards compatible with RFC 3261 implementations: UASes and proxies that do not understand Resource-Priority will ignore it per RFC 3261 Section 8.2.2 and deliver standard (non-elevated) service priority. The mechanism is invisible to existing implementations unless Require: resource-priority is included.

sip, realtime

normative-requirement §3.1 MUST NOT

A particular namespace MUST NOT appear more than once in the same SIP message. Multiple different namespaces may coexist in the same request to traverse different administrative domains.

sip, realtime

normative-requirement §4.7.3 SHOULD

A stateful proxy that has authorized a particular resource priority level SHOULD ignore any higher value in responses to prevent colluding user agents from artificially raising the priority level.

sip, security, realtime

normative-requirement §4.7.2.1 MUST

A UAS compliant with this specification MUST terminate a session established with a lower-priority value in favor of a new session with a higher relative priority value (preemption), unless local policy has call-waiting enabled. Termination uses BYE with a Reason header field.

sip, realtime

normative-requirement §4.7.2.2 SHOULD

A UAS implementing queueing SHOULD generate a 182 (Queued) response if its resources are busy, continuing until it can provide a final response. A UAC MUST be prepared to receive a 182 response from an RP actor that has queued the request.

sip, realtime

normative-requirement §11.1 MUST

All user agents and proxy servers supporting this extension MUST implement SIP over TLS (RFC 3546), the 'sips' URI scheme, and Digest Authentication (RFC 2617). UAs SHOULD also implement S/MIME (RFC 3851) to allow signing and verification of requests.

sip, security, tls, realtime

normative-requirement §4.2 MUST

At a minimum, implementations MUST support the Resource-Priority header in INVITE, ACK, PRACK, UPDATE, and REFER requests to be compliant with this specification. Support for MESSAGE, SUBSCRIBE, and NOTIFY is SHOULD.

sip, realtime

normative-requirement §4.3 MUST

If a SIP request contains Require: resource-priority, a UAS that does not support this extension MUST respond with 420 (Bad Extension) and list 'resource-priority' in the Unsupported header field. Use of resource-priority in Proxy-Require is NOT RECOMMENDED.

sip, realtime

normative-requirement §4.6.4 MUST

If an authenticated requestor is not authorized for the requested namespace and priority level, the RP actor MUST return a 403 (Forbidden) response.

sip, security, realtime

normative-requirement §8.1 MUST

If an RP actor supports multiple namespaces, it MUST create a local total ordering across all resource values from those namespaces, maintaining relative ordering within each namespace. It is RECOMMENDED that the same ordering be used across an administrative domain.

sip, realtime

normative-requirement §11.3 MUST

If S/MIME encapsulation is used and the Resource-Priority header is included in a signed message fragment, the S/MIME-signed SIP message or fragment MUST contain at minimum the Date, To, From, Call-ID, and Resource-Priority header fields to be considered valid authentication.

sip, security, crypto, realtime

normative-requirement §3.1 MUST

Namespaces and priority values within each namespace MUST be registered with IANA. A new namespace MUST be defined in a Standards Track RFC following the Standards Action policy in RFC 2434.

sip, registry, realtime

normative-requirement §4.6.2 MUST

When an RP actor does not recognize any supplied namespace and the Require: resource-priority option tag is present, it MUST reject the request with a 417 (Unknown Resource-Priority) response.

sip, realtime

protocol-element §4.6.2

A new SIP response code 417 (Unknown Resource-Priority) is defined, returned when an RP actor receives a request with the Require:resource-priority option tag but does not recognize any of the supplied namespaces. A 417 response MAY include an Accept-Resource-Priority header listing valid values.

sip, realtime

protocol-element §4.5.1

Preemption is a resource contention algorithm where an RP actor may disrupt an existing lower-priority session to accommodate a higher-priority incoming session. A single higher-priority session may displace more than one lower-priority session. Requests do not preempt others of equal priority unless the namespace specifies otherwise (e.g., DRSN flash-override-override).

sip, realtime

protocol-element §4.5.2

Priority queueing places requests finding no available resources into per-priority queues served in first-come, first-served order. Full queues cause immediate rejection; queued requests exceeding a waiting time limit are ejected with 408 (Request Timeout). An RP actor MAY impose a global queue size limit dropping lower-priority entries with 408.

sip, realtime

protocol-element §3.4

The 'resource-priority' option tag is defined for use in Require and Supported header fields. When present in Require, it forces recipient compliance; OPTIONS responses from compliant implementations MUST include it in the Supported header field.

sip, realtime

registry §12.5

A new IANA registry 'Resource-Priority Namespaces' in sip-parameters records namespace label, number of priority levels, intended algorithm (preemption or queue), new warn-codes, new response codes, and RFC reference. This document registers five initial namespaces: dsn (5 levels, preemption), drsn (6 levels, preemption), q735 (5 levels, preemption), ets (5 levels, queue), wps (5 levels, queue).

sip, registry, realtime

registry §12.6

A new IANA registry 'Resource-Priority Priority-values' in sip-parameters records the ordered priority values for each namespace. New priority values SHOULD NOT be added to a previously registered namespace list as this may cause interoperability problems.

sip, registry, realtime

security-consideration §11.5

Systems should minimize state, computation, and network resources that an unauthorized user can command, and must not amplify attacks by transmitting packets to unverified network addresses. DoS attacks may target both the network and its authentication/authorization infrastructure during emergencies when the system is already stressed.

sip, security, realtime

security-consideration §11.1

The resource priority mechanism can be abused to obtain scarce resources and deny service to legitimate users, including taking over PSTN gateways or terminating existing sessions at IP phones. Because unauthorized priority access can impact overall system stability rather than just individual calls, authentication and authorization requirements are significantly more stringent than for standard SIP requests.

sip, security, realtime

state-machine §4.2

An RP actor processing a prioritized request follows three steps: (1) if no namespace is recognized, treat as no Resource-Priority header; (2) verify authorization per local policy, rejecting with 401/403 if unauthorized; (3) if authorized and resources are available, serve normally; if resources are congested, either preempt existing sessions or queue the request.

sip, realtime

wire-format §3.2

The 'Accept-Resource-Priority' response header field enumerates the r-values a UAS is willing to process, using the same r-value syntax as Resource-Priority. It is returned in 200 and 417 responses to indicate acceptable resource values to the UAC.

sip, realtime

wire-format §3.1

The 'Resource-Priority' header field encodes one or more r-values, each formatted as 'namespace'.'r-priority' where both tokens are case-insensitive ASCII that do not contain periods. Example: 'Resource-Priority: dsn.flash'. Multiple r-values may appear comma-separated in one header or as multiple header fields; ordering is insignificant.

sip, realtime