rfc-7200

A Session Initiation Protocol (SIP) Load-Control Event Package

C. Shen, H. Schulzrinne, A. Koike
date2014-04 streamIETF arearai wgsoc statusPROPOSED STANDARD pages44 canonicalhttps://www.rfc-editor.org/rfc/rfc7200 doi10.17487/RFC7200 errataview
This specification defines a load-control event package for the Session Initiation Protocol (SIP). It allows SIP entities to distribute load-filtering policies to other SIP entities in the network. The load-filtering policies contain rules to throttle calls from a specific user or based on their source or destination domain, telephone number prefix. The mechanism helps to prevent signaling overload and complements feedback-based SIP overload control efforts.

Extracted elements (31)

design-rationale §1

Load filtering is proposed as a complementary mechanism to feedback-based SIP overload control. Feedback control is reactive and affects all calls equally; load filtering is proactive and most applicable when a traffic surge and its source/destination distribution can be predicted in advance, enabling targeted rate-limiting close to originating user agents.

sip, realtime

design-rationale §5.3.1

The <many-tel> and <except-tel> sub-elements were introduced rather than reusing or redefining the "domain" attribute in RFC 4745's <many>/<except> elements, because adding attributes to those elements is not permitted and redefining "domain" would create backward-compatibility issues.

sip, realtime

design-rationale §5.3.3

The <target-sip-entity> element exists to allow a load-filtering server with multiple routing paths to apply a received policy only to requests destined for the specific overloaded entity, avoiding unnecessary throttling of calls that can be routed through non-overloaded alternatives.

sip, realtime

interoperability-note §5.3.1

Before evaluating <call-identity> conditions, the subscriber shall convert URIs received in SIP header fields to canonical form per RFC 3261, except that the "phone-context" parameter of 'tel' URIs shall not be removed if present. Visual separators (e.g., "-") in 'tel' URIs are not used for URI comparison per RFC 3966.

sip, realtime

interoperability-note §4.9

Forking is not expected for this event package because subscriptions are addressed to clearly defined neighboring SIP entities. In the unlikely case forking does occur, only the first potential dialog-establishing message may create a dialog, per RFC 6665 Section 5.4.9.

sip, realtime

interoperability-note §D.1

When multiple rules in a ruleset define actions that match the same method, call identity, and validity period, a "first-match-wins" principle applies. Later rules matching the same request are not evaluated.

sip, realtime

normative-requirement §4.7 MUST

A notifier MUST send a NOTIFY request with its current load-filtering policy to the subscriber upon successfully accepting or refreshing a subscription. If no policy exists, the notifier SHOULD send a NOTIFY without a body, but the Content-Type header MUST still indicate the correct body format.

sip, realtime

normative-requirement §5.4 MUST

Any "drop" action applied to an unreliable transport (e.g., UDP) MUST be treated as if it were "reject", because dropping silently over UDP causes retransmissions that worsen overload.

sip, udp, realtime

normative-requirement §4.11 MUST

For each NOTIFY transaction, a version number that increases by exactly one MUST be included in the NOTIFY request body when the body is present. Versions MUST be representable using a non-negative 32-bit integer. If a subscriber receives a NOTIFY with a version gap greater than one, it must resend a SUBSCRIBE to force a full state snapshot.

sip, realtime

normative-requirement §4.6 MUST

If the identity of the subscriber sending the SUBSCRIBE request is not allowed to receive load-filtering policies, the notifier MUST return a 403 "Forbidden" response.

sip, security

normative-requirement §5.4 RECOMMENDED

In static load-filtering policy configuration, using the <rate> sub-element is RECOMMENDED over <percent> or <win> because it is hard to enforce percentage-rate or window-based filtering when incoming load from upstream or reactions from downstream are uncertain.

sip, realtime

normative-requirement §5.3.2 MUST NOT

Non-initial requests such as ACK, BYE, and CANCEL MUST NOT be subjected to load filtering. Additionally, SUBSCRIBE requests are not filtered if the event-type header indicates the load-control event package itself.

sip, realtime

normative-requirement §4.4 RECOMMENDED

Subscribers and notifiers are RECOMMENDED to explicitly negotiate appropriate subscription duration when knowledge about the mutual signaling relationship is available. The default expiration time is one hour.

sip, realtime

normative-requirement §3.4 MUST

This specification MUST be applied inside a Trust Domain — a set of SIP entities that agree on security mechanisms, membership determination, SIP compliance, RFC 6665 compliance, and compliance to this specification. Load filtering is only effective if all neighbors participate.

sip, security, realtime

normative-requirement §4.10 RECOMMENDED

To avoid NOTIFY requests themselves overloading the system, it is RECOMMENDED that the notifier not generate notifications at a rate higher than once per second.

sip, realtime

normative-requirement §4.8 MUST

Upon receipt of a NOTIFY with Subscription-State "terminated", subscribers MUST also terminate previously received load-filtering policies from that notifier. The subscriber MUST discard unknown bodies.

sip, realtime

normative-requirement §5.4 MUST

When the "redirect" alt-action is used in an <accept> element, an "alt-target" attribute MUST be defined, specifying one URI or a list of URIs where the request should be redirected via a 300-class response.

sip, realtime

protocol-element §5.4

The <accept> action element specifies the acceptable load via one of three sub-elements: <rate> (maximum requests/second), <percent> (fraction of requests to accept), or <win> (window size for window-based control). An optional "alt-action" attribute ("reject", "redirect", or "drop") governs what happens to excess requests.

sip, realtime

protocol-element §5.3.1

The <call-identity> condition element and its sub-element <sip> identify requests to filter by SIP header fields: <from>, <to>, <request-uri>, and <p-asserted-identity>. Multiple <sip> sub-elements are OR-combined; multiple header-field sub-elements within <sip> are AND-combined.

sip, realtime

protocol-element §4.1

The load-control event package name is "load-control", carried in the Event and Allow-Events SIP header fields per RFC 6665. It distributes load-filtering policies from notifiers (servers experiencing or anticipating overload) to subscribers (upstream load-filtering servers).

sip, realtime

protocol-element §5.3.1

The <many-tel> and <except-tel> sub-elements extend the RFC 4745 identity model to support grouping of 'tel' URIs by a "prefix" attribute (common leading digits for global numbers, or phone-context value for local numbers), analogous to the "domain" attribute for SIP URIs.

sip, realtime, voip

protocol-element §5.3.2

The <method> condition element restricts load-filtering actions to a specific SIP method (INVITE, MESSAGE, REGISTER, SUBSCRIBE, OPTIONS, or PUBLISH). When omitted, filtering applies to all applicable initial requests.

sip, realtime

protocol-element §5.3.3

The <target-sip-entity> condition element contains the URI of the entity that initiated the load-filtering policy (generally the notifier). It allows a filtering server with multiple routing paths to apply a policy only to requests destined for the specific overloaded entity rather than all matching requests.

sip, realtime

registry §8.2

This document registers the "application/load-control+xml" media type with IANA per RFC 6838. No required parameters; optional charset parameter same as application/xml (RFC 3023); file extension .xml.

sip, registry, realtime

registry §8.1

This document registers the "load-control" SIP event package with IANA per RFC 6665 registration procedures.

sip, registry, realtime

registry §8.3

This document registers the XML namespace "urn:ietf:params:xml:ns:load-control" and the XML schema "urn:ietf:params:xml:schema:load-control" with the IETF XML Registry per RFC 3688.

sip, registry, realtime

security-consideration §7

If notifiers can be spoofed, attackers can send fake notifications instructing subscribers to throttle all traffic, causing denial-of-service. Therefore, the load-filtering mechanism MUST be used within a Trust Domain. If a legitimate notifier within the domain is itself compromised, additional detection mechanisms are needed.

sip, security, realtime

security-consideration §7

The "redirect" action can facilitate a reflection DoS attack: an attacker spoofing a central server's address could send NOTIFY bodies instructing proxy servers to redirect all calls to a victim outside the Trust Domain. Mitigation requires the Trust Domain to agree on permitted redirect destinations in advance, as specified in Section 3.4.

sip, security, realtime

security-consideration §7 SHOULD

When identity fields in load-filtering conditions represent the source of a request (e.g., <from> or <p-asserted-identity>), they SHOULD be authenticated and authorized; when they represent the destination, authentication and authorization is optional.

sip, security, realtime

wire-format §4.5

The default NOTIFY body format for this event package is "application/load-control+xml". When a NOTIFY body is present but the SUBSCRIBE request carries no Accept header, the body MUST conform to this media type.

sip, realtime

wire-format §6

The load-control document is an XML document conforming to the namespace "urn:ietf:params:xml:ns:load-control", extending RFC 4745 Common Policy. The <ruleset> element carries mandatory "version" (non-negative 32-bit integer) and "state" ("full" or "partial") attributes to support ordered delivery and delta updates.

sip, realtime, json