One document matched: draft-ietf-soc-overload-control-02.txt
Differences from draft-ietf-soc-overload-control-01.txt
SOC Working Group V. Gurbani, Ed.
Internet-Draft Bell Laboratories, Alcatel-Lucent
Intended status: Standards Track V. Hilt
Expires: September 1, 2011 Bell Labs/Alcatel-Lucent
H. Schulzrinne
Columbia University
February 28, 2011
Session Initiation Protocol (SIP) Overload Control
draft-ietf-soc-overload-control-02
Abstract
Overload occurs in Session Initiation Protocol (SIP) networks when
SIP servers have insufficient resources to handle all SIP messages
they receive. Even though the SIP protocol provides a limited
overload control mechanism through its 503 (Service Unavailable)
response code, SIP servers are still vulnerable to overload. This
document defines an overload control mechanism for SIP.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 1, 2011.
Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
Gurbani, et al. Expires September 1, 2011 [Page 1]
Internet-Draft Overload Control February 2011
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Overview of operations . . . . . . . . . . . . . . . . . . . . 4
4. Via Header Parameters for Overload Control . . . . . . . . . . 5
4.1. The oc paramater . . . . . . . . . . . . . . . . . . . . . 5
4.2. The oc-algo parameter . . . . . . . . . . . . . . . . . . 6
4.3. The oc-validity parameter . . . . . . . . . . . . . . . . 7
4.4. The oc-seq parameter . . . . . . . . . . . . . . . . . . . 7
5. Creating and updating the overload control parameters . . . . 8
6. Determining the 'oc' Parameter Value . . . . . . . . . . . . . 9
7. Processing the Overload Control Parameters . . . . . . . . . . 10
8. Using the Overload Control Parameter Values . . . . . . . . . 10
9. Forwarding the overload control parameters . . . . . . . . . . 11
10. Self-Limiting . . . . . . . . . . . . . . . . . . . . . . . . 11
11. Responding to an Overload Indication . . . . . . . . . . . . . 12
11.1. Message prioritization at the hop before the
overloaded server . . . . . . . . . . . . . . . . . . . . 12
11.2. Rejecting requests at an overloaded server . . . . . . . . 13
12. 100-Trying provisional response and overload control
parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 13
13. Relationship with other IETF SIP load control efforts . . . . 14
14. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
15. Design Considerations . . . . . . . . . . . . . . . . . . . . 14
15.1. SIP Mechanism . . . . . . . . . . . . . . . . . . . . . . 15
15.1.1. SIP Response Header . . . . . . . . . . . . . . . . . 15
15.1.2. SIP Event Package . . . . . . . . . . . . . . . . . . 15
15.2. Backwards Compatibility . . . . . . . . . . . . . . . . . 16
16. Security Considerations . . . . . . . . . . . . . . . . . . . 17
17. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
18.1. Normative References . . . . . . . . . . . . . . . . . . . 18
18.2. Informative References . . . . . . . . . . . . . . . . . . 19
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 19
Appendix B. RFC5390 requirements . . . . . . . . . . . . . . . . 19
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 25
Gurbani, et al. Expires September 1, 2011 [Page 2]
Internet-Draft Overload Control February 2011
1. Introduction
As with any network element, a Session Initiation Protocol (SIP)
[RFC3261] server can suffer from overload when the number of SIP
messages it receives exceeds the number of messages it can process.
Overload can pose a serious problem for a network of SIP servers.
During periods of overload, the throughput of a network of SIP
servers can be significantly degraded. In fact, overload may lead to
a situation in which the throughput drops down to a small fraction of
the original processing capacity. This is often called congestion
collapse.
Overload is said to occur if a SIP server does not have sufficient
resources to process all incoming SIP messages. These resources may
include CPU processing capacity, memory, network bandwidth, input/
output, or disk resources.
For overload control, we only consider failure cases where SIP
servers are unable to process all SIP requests due to resource
constraints. There are other cases where a SIP server can
successfully process incoming requests but has to reject them due to
failure conditions unrelated to the SIP server being overloaded. For
example, a PSTN gateway that runs out of trunks but still has plenty
of capacity to process SIP messages should reject incoming INVITEs
using a 488 (Not Acceptable Here) response [RFC4412]. Similarly, a
SIP registrar that has lost connectivity to its registration database
but is still capable of processing SIP requests should reject
REGISTER requests with a 500 (Server Error) response [RFC3261].
Overload control does not apply to these cases and SIP provides
appropriate response codes for them.
The SIP protocol provides a limited mechanism for overload control
through its 503 (Service Unavailable) response code. However, this
mechanism cannot prevent overload of a SIP server and it cannot
prevent congestion collapse. In fact, the use of the 503 (Service
Unavailable) response code may cause traffic to oscillate and to
shift between SIP servers and thereby worsen an overload condition.
A detailed discussion of the SIP overload problem, the problems with
the 503 (Service Unavailable) response code and the requirements for
a SIP overload control mechanism can be found in [RFC5390].
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
Gurbani, et al. Expires September 1, 2011 [Page 3]
Internet-Draft Overload Control February 2011
The normative statements in this specification as they apply to SIP
clients and SIP servers assume that both the SIP clients and SIP
servers support this specification. If, for instance, only a SIP
client supports this specification and not the SIP server, then
follows that the normative statements in this specification pertinent
to the behavior of a SIP server do not apply to the server that does
not support this specification.
3. Overview of operations
We now explain the overview of how the overload control mechanism
operates by introducing the overload control parameters. Section 4
provides more details and normative behavior on the parameters listed
below.
Because overload control is best performed hop-by-hop, the Via
parameter is attractive since it allows two adjacent SIP entities to
indicate support for, and exchange information associated with
overload control. Additional advantages of this choice are discussed
in Section 15.1.1. An alternative mechanism using SIP event packages
was also considered, and the characteristics of that choice are
further outlined in Section 15.1.2.
This document defines four new parameters for the SIP Via header for
overload control. These parameters provide a SIP mechanism for
conveying overload control information between adjacent SIP
entities.) These parameters are:
1. oc: This parameter serves a dual purpose; when inserted by a SIP
client in a request going downstream, the parameter indicates
that the SIP client supports overload control. When the
downstream SIP server sends a response, the downstream SIP server
will add a value to the parameter that indicates a loss rate (in
percentage) by which the requests arriving at the downstream SIP
server should be reduced.
2. oc-algo: This parameter serves a dual purpose: when inserted by a
SIP client in a request going downstream, the parameter contains
a comma-separated list of the class of overload control algorithm
supported by the SIP client. When the downstream SIP server
sends a response, the downstream SIP server will pick one
overload control algorithm from the list and will pare the list
down to include the one chosen algorithm. In this manner, the
upstream SIP client and the downstream SIP server can negotiate
the specific class of algorithm that is utilized for overload
control.
Gurbani, et al. Expires September 1, 2011 [Page 4]
Internet-Draft Overload Control February 2011
3. oc-validity: Inserted by the SIP server sending a response
upstream. This parameter contains a value that indicates the
time (in millisecond resolution) that the load reduction
specified by the "oc" parameter should be in effect.
4. oc-seq: Inserted by the SIP server sending a response upstream.
This parameter contains a value that indicates the sequence
number associated with the "oc" parameter defined above.
Consider a SIP client, P1, which is sending requests to another
downstream SIP server, P2. The following snippets of SIP messages
demonstrate how the overload control parameters work.
INVITE sips:user@example.com SIP/2.0
Via: SIP/2.0/TLS p1.example.net;
branch=z9hG4bK2d4790.1;received=192.0.2.111;oc;
oc-algo="loss,rate"
...
SIP/2.0 100 Trying
Via: SIP/2.0/TLS p1.example.net;
branch=z9hG4bK2d4790.1;received=192.0.2.111;
oc=20;oc-algo="loss";oc-validity=500;
oc-seq=1282321615.781
...
In the messages above, the first line is sent by P1 to P2. This line
is a SIP request; because P1 supports overload control, it inserts
the "oc" parameter in the topmost Via header that it created.
The second line --- a SIP response --- shows the topmost Via header
amended by P2 according to this specification and sent to P1.
Because P2 also supports overload control, it sends back further
overload control parameters towards P1 requesting that P1 reduce the
incoming traffic by 20% for 500ms. P2 updates the "oc" parameter to
add a value and inserts the remaining two parameters, "oc-validity"
and "oc-seq".
4. Via Header Parameters for Overload Control
4.1. The oc paramater
This parameter is inserted by the SIP client and updated by the SIP
server.
A SIP client MUST add an "oc" parameter to the topmost Via header it
inserts into the SIP request. This provides an indication to
downstream neighbors that this server supports overload control.
Gurbani, et al. Expires September 1, 2011 [Page 5]
Internet-Draft Overload Control February 2011
When inserted into a request by a SIP client to indicate support for
overload control, there MUST NOT be a value associated with the
parameter.
The downstream server MUST add a value to the "oc" parameter in the
response going upstream; this value indicates a loss rate (in
percentage) by which the requests arriving at the downstream server
should be reduced.
When adding a value to the "oc" parameter, the downstream server MUST
restrain that value to a number between 0 and 100. This value
describes the percentage by which the traffic (SIP requests) destined
to the SIP server should be reduced. The default value for this
parameter is 0.
When a SIP client receives a response with the value in the "oc"
parameter filled in, it SHOULD reduce, in terms of a percentage, the
number of requests going downstream to the SIP server from which it
received the response (see Section 11 for pertinent discussion on
traffic reduction).
4.2. The oc-algo parameter
This parameter is inserted by the SIP client and updated by the SIP
server.
A SIP client MAY add an "oc-algo" parameter to the topmost Via header
it inserts into the SIP request. This parameter contains a comma-
separated list of a class of overload control algorithms. Currently,
three classes of overload control algorithms are known: loss-based,
rate-based, and window-based. This document supports overload
control through a loss-based mechanism, therefore the single
mandatory to implement class of overload control algorithm is loss-
based. All implementations that support overload control MUST
implement a loss-based overload control mechanism.
If a SIP client only supports the loss-based overload control
mechanism, then the "oc-algo" parameter can be omitted. When a SIP
server receives a request without an "oc-algo" parameter, it MUST NOT
add the parameter in the response going upstream as the absence of
the parameter in the request implied that the upstream SIP client
only supported a loss-based overload control mechanism.
If a SIP client supports multiple class of overload control
algorithms, then it will insert a comma-separated list in the "oc-
algo" parameter value. Each element in the comma-separated list
corresponds to the class of overload control algorithms supported by
the SIP client. Currently, three classes of overload control
Gurbani, et al. Expires September 1, 2011 [Page 6]
Internet-Draft Overload Control February 2011
algorithms are known: loss-based, rate-based, and window-based. When
a downstream SIP server receives a request with a choice of overload
control algorithms specified in the "oc-algo" parameter value, it
MUST choose one algorithm from the list and MUST pare the list down
to include the one chosen algorithm. The pared down list consisting
of the chosen algorithm MUST be returned to the upstream SIP client
in the response.
It is RECOMMENDED that once an upstream SIP client and a downstream
SIP server have converged to a mutually agreeable class of overload
control algorithm, the agreed upon class stays in effect for a non-
trivial duration of time. That is, the adjacent peers MUST NOT
renegotiate the overload control algorithm class per transaction, or
per request-response message exchange. A rapid renegotiation of the
overload control algorithm will not benefit the client or the server
as such flapping does not allow the chosen algorithm to measure and
fine tune its behavior over a period of time.
Exigent realities of deployments of SIP clients and servers
necessitate that the overload control algorithm be renegotiated upon
a system reboot or a software upgrade, however, frequent
renegotiations of the overload control algorithm MUST be avoided.
Renegotiation, when desired, is simply accomplished by the SIP client
sending a fresh "oc-algo" parameter in a request going downstream.
The downstream server, as before, MUST choose one algorithm from the
list and MUST pare the list down to include the one chosen algorithm.
The pared down list consisting of the chosen algorithm MUST be
returned to the upstream SIP client in the response and stays in
effect until the next renegotiation.
4.3. The oc-validity parameter
This parameter is inserted by the SIP server.
This parameter contains a value that indicates an interval of time
(measured in milliseconds) that the load reduction specified value of
the "oc" parameter should be in effect. The default value of the
"oc-validity" parameter is 500 (millisecond).
The "oc-validity" parameter can only be present in a Via header in
conjunction with an "oc" parameter.
4.4. The oc-seq parameter
This parameter is inserted by the SIP server.
This parameter contains a value that indicates the sequence number
associated with the "oc" parameter. Some implementations may be
Gurbani, et al. Expires September 1, 2011 [Page 7]
Internet-Draft Overload Control February 2011
capable of updating the overload control information before the
validity period specified by the "oc-validity" parameter expires.
Such implementations MUST have an increasing value in the "oc-seq"
parameter for each response sent to the upstream SIP client. This is
to allow the upstream SIP client to properly collate out-of-order
responses.
5. Creating and updating the overload control parameters
A SIP server can provide overload control feedback to its upstream
neighbors by providing a value for the "oc" parameter to the topmost
Via header field of a SIP response. The topmost Via header is
determined after the SIP server has removed its own Via header; i.e.,
it is the Via header that was generated by the upstream neighbor.
Since the topmost Via header of a response will be removed by an
upstream neighbor after processing it, overload control feedback
contained in the "oc" parameter will not travel beyond the upstream
SIP client. A Via header parameter therefore provides hop-by-hop
semantics for overload control feedback (see
[I-D.ietf-soc-overload-design]) even if the next hop neighbor does
not support this specification.
The "oc" parameter can be used in all response types, including
provisional, success and failure responses (please see Section 12 for
special consideration on transporting overload control parameters in
a 100-Trying response). A SIP server MAY update the "oc" parameter
in all responses it is sending. A SIP server MUST update the "oc"
parameter to responses when the transmission of overload control
feedback is required by the overload control algorithm to limit the
traffic received by the server. I.e., a SIP server MUST update the
"oc" parameter when the overload control algorithm sets the value of
an "oc" parameter to a value different than the default value.
A SIP server that has updated the "oc" parameter to Via header SHOULD
also add a "oc-validity" parameter to the same Via header. The "oc-
validity" parameter defines the time in milliseconds during which the
content (i.e., the overload control feedback) of the "oc" parameter
is valid. The default value of the "oc-validity" parameter is 500
(millisecond). A SIP server SHOULD use a shorter "oc-validity" time
if its overload status varies quickly and MAY use a longer "oc-
validity" time if this status is more stable. If the "oc-validity"
parameter is not present, its default value is used. The "oc-
validity" parameter MUST NOT be used in a Via header that did not
originally contain an "oc" parameter when received. Furthermore,
when a SIP server receives a request with the topmost Via header
containing only an "oc-validity" parameter without the accompanying
Gurbani, et al. Expires September 1, 2011 [Page 8]
Internet-Draft Overload Control February 2011
"oc" parameter. it MUST ignore the "oc-validity" parameter.
When a SIP server retransmits a response, it SHOULD use the "oc"
parameter value and "oc-validity" parameter value consistent with the
overload state at the time the retransmitted response is sent. This
implies that the values in the "oc" and "oc-validity" parameters may
be different then the ones used in previous retransmissions of the
response. Due to the fact that responses sent over UDP may be
subject to delays in the network and arrive out of order, the "oc-
seq" parameter aids in detecting a stale "oc" parameter value.
Implementations that are capable of updating the "oc" and "oc-
validity" parameter values for retransmissions MUST insert the "oc-
seq" parameter. The value of this parameter MUST be a set of numbers
drawn from an increasing sequence.
Implementations that are not capable of updating the "oc" and "oc-
validity" parameter values for retransmissions --- or implementations
that do not want to do so because they will have to regenerate the
message to be retransmitted --- MUST still insert a "oc-seq"
parameter in the first response associated with a transaction;
however, they do not have to update the value in subsequent
retransmissions.
The "oc-validity" and "oc-seq" Via header parameters are only defined
in SIP responses and MUST NOT be used in SIP requests. These
parameters are only useful to the upstream neighbor of a SIP server
(i.e., the entity that is sending requests to the SIP server) since
this is the entity that can offload traffic by redirecting/rejecting
new requests. If requests are forwarded in both directions between
two SIP servers (i.e., the roles of upstream/downstream neighbors
change), there are also responses flowing in both directions. Thus,
both SIP servers can exchange overload information.
Since overload control protects a SIP server from overload, it is
RECOMMENDED that a SIP server use the mechanisms described in this
specification. However, if a SIP server wanted to limit its overload
control capability for privacy reasons, it MAY decide to perform
overload control only for requests that are received on a secure
transport channel, such as TLS. This enables a SIP server to protect
overload control information and ensure that it is only visible to
trusted parties.
6. Determining the 'oc' Parameter Value
The value of the "oc" parameter is determined by an overload control
algorithm (see [I-D.ietf-soc-overload-design]). This specification
Gurbani, et al. Expires September 1, 2011 [Page 9]
Internet-Draft Overload Control February 2011
does not mandate the use of a specific overload control algorithm.
However, the output of an overload control algorithm MUST be
compliant to the semantics of this Via header parameter.
The "oc" parameter value specifies the percentage by which the load
forwarded to this SIP server should be reduced. Possible values
range from 0 (the traffic forwarded is reduced by 0%, i.e., all
traffic is forwarded) to 100 (the traffic forwarded is reduced by
100%, i.e., no traffic forwarded). The default value of this
parameter is 0.
7. Processing the Overload Control Parameters
A SIP client compliant to this specification SHOULD remove "oc", "oc-
validity" and "oc-seq" parameters from all Via headers of a response
received, except for the topmost Via header. This prevents overload
control parameters that were accidentally or maliciously inserted
into Via headers by a downstream SIP server from traveling upstream.
A SIP client maintains the "oc" parameter values received along with
the address and port number of the SIP servers from which they were
received for the duration specified in the "oc-validity" parameter or
the default duration. Each time a SIP client receives a response
with an "oc" parameter from a downstream SIP server, it overwrites
the "oc" value it has currently stored for this server with the new
value received. The SIP client restarts the validity period of an
"oc" parameter each time a response with an "oc" parameter is
received from this server. A stored "oc" parameter value MUST be
discarded once it has reached the end of its validity.
8. Using the Overload Control Parameter Values
A SIP client compliant to this specification MUST honor overload
control values it receives from downstream neighbors. The SIP client
MUST NOT forward more requests to a SIP server than allowed by the
current "oc" parameter value from a particular downstream server.
When forwarding a SIP request, a SIP client uses the SIP procedures
of [RFC3263] to determine the next hop SIP server. The procedures of
[RFC3263] take as input a SIP URI, extract the domain portion of that
URI for use as a lookup key, and query the Domain Name Service (DNS)
to obtain an ordered set of one or more IP addresses with a port
number and transport corresponding to each IP address in this set
(the "Expected Output").
After selecting a specific SIP server from the Expected Output, the
Gurbani, et al. Expires September 1, 2011 [Page 10]
Internet-Draft Overload Control February 2011
SIP client MUST determine if it already has overload control
parameter values for the server chosen from the Expected Output. If
the SIP client has a non-expired "oc" parameter value for the server
chosen from the Expected Output, and this chosen server is operating
in overload control mode. Thus, the SIP client MUST determine if it
can or cannot forward the current request to the SIP server depending
on the nature of the request and the prevailing overload conditions.
The particular algorithm used to determine whether or not to forward
a particular SIP request is a matter of local policy, and may take
into account a variety of prioritization factors. However, this
local policy SHOULD generate the same number and rate of SIP requests
as the default algorithm (to be determined), which treats all
requests as equal.
In the absence of a different local policy, the SIP client SHOULD use
the following default algorithm to determine if it can forward the
request downstream (TODO: Need to devise an algorithm. The original
simple algorithm based on random number generation does not suffice
for all cases.)
9. Forwarding the overload control parameters
A SIP client MAY forward the content of an "oc" parameter it has
received from a downstream neighbor on to its upstream neighbor.
However, forwarding the content of the "oc" parameter is generally
NOT RECOMMENDED and should only be performed if permitted by the
configuration of SIP servers. For example, a SIP server that only
relays messages between exactly two SIP servers may forward an "oc"
parameter. The "oc" parameter is forwarded by copying it from the
Via in which it was received into the next Via header (i.e., the Via
header that will be on top after processing the response). If an
"oc-validity" parameter is present, MUST be copied along with the
"oc" parameter.
10. Self-Limiting
In some cases, a SIP client may not receive a response from a
downstream server after sending a request. RFC3261 [RFC3261] defines
that when a timeout error is received from the transaction layer, it
MUST be treated as if a 408 (Request Timeout) status code has been
received. If a fatal transport error is reported by the transport
layer, it MUST be treated as a 503 (Service Unavailable) status code.
In the event of repeated timeouts or fatal transport errors, the SIP
client MUST stop sending requests to this server. The SIP client
Gurbani, et al. Expires September 1, 2011 [Page 11]
Internet-Draft Overload Control February 2011
SHOULD occasionally forward a single request to probe if the
downstream server is alive. Once a SIP client has successfully
transmitted a request to the downstream server, the SIP client can
resume normal traffic rates. It should, of course, honor any "oc"
parameters it may receive subsequent to resuming normal traffic
rates.
OPEN ISSUE: If a downstream neighbor does not respond to a request
at all, the upstream SIP client will stop sending requests to the
downstream neighbor. The upstream SIP client will periodically
forward a single request to probe the health of its downstream
neighbor. It has been suggested --- see http://www.ietf.org/
mail-archive/web/sip-overload/current/msg00229.html --- that we
have a notification mechanism in place for the downstream neighbor
to signal to the upstream SIP client that it is ready to receive
requests. This notification scheme has advantages, but comes with
obvious disadvantages as well. Need some more discussion around
this.
11. Responding to an Overload Indication
A SIP client can receive overload control feedback indicating that it
needs to reduce the traffic it sends to its downstream server. The
client can accomplish this task by sending some of the requests that
would have gone to the overloaded element to a different destination.
It needs to ensure, however, that this destination is not in overload
and capable of processing the extra load. A client can also buffer
requests in the hope that the overload condition will resolve quickly
and the requests still can be forwarded in time. In many cases,
however, it will need to reject these requests.
11.1. Message prioritization at the hop before the overloaded server
During an overload condition, a SIP client needs to prioritize
requests and select those requests that need to be rejected or
redirected. While this selection is largely a matter of local
policy, certain heuristics can be suggested. One, during overload
control, the SIP client should preserve existing dialogs as much as
possible. This suggests that mid-dialog requests MAY be given
preferential treatment. Similarly, requests that result in releasing
resources (such as a BYE) MAY also be given preferential treatment.
A SIP client SHOULD honor the local policy for prioritizing SIP
requests such as policies based on the content of the Resource-
Priority header (RPH, RFC4412 [RFC4412]). Specific (namespace.value)
RPH contents may indicate high priority requests that should be
preserved as much as possible during overload. The RPH contents can
Gurbani, et al. Expires September 1, 2011 [Page 12]
Internet-Draft Overload Control February 2011
also indicate a low-priority request that is eligible to be dropped
during times of overload. Other indicators, such as the SOS URN
[RFC5031] indicating an emergency request, may also be used for
prioritization.
Local policy could also include giving precedence to mid-dialog SIP
requests (re-INVITEs, UPDATEs, BYEs etc.) in times of overload. A
local policy can be expected to combine both the SIP request type and
the prioritization markings, and SHOULD be honored when overload
conditions prevail.
A SIP client SHOULD honor user-level load control filters installed
by signaling neighbors [I-D.ietf-soc-load-control-event-package] by
sending the SIP messages that matched the filter downstream.
11.2. Rejecting requests at an overloaded server
If the upstream SIP client to the overloaded server does not support
overload control, it will continue to direct requests to the
overloaded server. Thus, the overloaded server must bear the cost of
rejecting some session requests as well as the cost of processing
other requests to completion. It would be fair to devote the same
amount of processing at the overloaded server to the combination of
rejection and processing as the overloaded server would devote to
processing requests from an upstream SIP client that supported
overload control. This is to ensure that SIP servers that do not
support this specification don't receive an unfair advantage over
those that do.
A SIP server that is under overload and has started to throttle
incoming traffic MUST reject this request with a "503 (Service
Unavailable)" response without Retry-After header to reject a
fraction of requests from upstream neighbors that do not support
overload control.
12. 100-Trying provisional response and overload control parameters
The overload control information sent from a SIP server to a client
is transported in the responses. While implementations can insert
overload control information in any response, special attention
should be accorded to overload control information transported in a
100-Trying response.
Traditionally, the 100-Trying response has been used in SIP to quench
retransmissions. In some implementations, the 100-Trying message may
not be generated by the transaction user (TU) nor consumed by the TU.
In these implementations, the 100-Trying response is generated at the
Gurbani, et al. Expires September 1, 2011 [Page 13]
Internet-Draft Overload Control February 2011
transaction layer and sent to the upstream SIP client. At the
receiving SIP client, the 100-Trying is consumed at the transaction
layer by inhibiting the retransmission of the corresponding request.
Consequently, implementations that insert overload control
information in the 100-Trying cannot assume that the upstream SIP
client passed the overload control information in the 100-Trying to
their corresponding TU. For this reason, implementations that insert
overload control information in the 100-Trying MUST re-insert the
same (or updated) overload control information in the first non-100
response being sent to the upstream SIP client.
13. Relationship with other IETF SIP load control efforts
The overload control mechanism described in this document is reactive
in nature and apart from message prioritization directives listed in
Section 11.1 the mechanisms described in this draft will not
discriminate requests based on user identity, filtering action and
arrival time. SIP networks that require pro-active overload control
mechanisms can upload user-level load control filters as described in
[I-D.ietf-soc-load-control-event-package].
14. Syntax
This specification extends the existing definition of the Via header
field parameters of [RFC3261] as follows:
via-params = via-ttl / via-maddr
/ via-received / via-branch
/ oc / oc-validity
/ oc-seq / oc-algo / via-extension
oc = "oc" [EQUAL 0-100]
oc-validity = "oc-validity" [EQUAL delta-ms]
oc-seq = "oc-seq" EQUAL 1*12DIGIT "." 1*5DIGIT
oc-algo = "oc-algo" EQUAL DQUOTE algo-list *(COMMA algo-list)
DQUOTE
algo-list = "loss" / *(other-algo)
other-algo = %x41-5A / %x61-7A / %x30-39
15. Design Considerations
This section discusses specific design considerations for the
mechanism described in this document. General design considerations
for SIP overload control can be found in
Gurbani, et al. Expires September 1, 2011 [Page 14]
Internet-Draft Overload Control February 2011
[I-D.ietf-soc-overload-design].
15.1. SIP Mechanism
A SIP mechanism is needed to convey overload feedback from the
receiving to the sending SIP entity. A number of different
alternatives exist to implement such a mechanism.
15.1.1. SIP Response Header
Overload control information can be transmitted using a new Via
header field parameter for overload control. A SIP server can add
this header parameter to the responses it is sending upstream to
provide overload control feedback to its upstream neighbors. This
approach has the following characteristics:
o A Via header parameter is light-weight and creates very little
overhead. It does not require the transmission of additional
messages for overload control and does not increase traffic or
processing burdens in an overload situation.
o Overload control status can frequently be reported to upstream
neighbors since it is a part of a SIP response. This enables the
use of this mechanism in scenarios where the overload status needs
to be adjusted frequently. It also enables the use of overload
control mechanisms that use regular feedback such as window-based
overload control.
o With a Via header parameter, overload control status is inherent
in SIP signaling and is automatically conveyed to all relevant
upstream neighbors, i.e., neighbors that are currently
contributing traffic. There is no need for a SIP server to
specifically track and manage the set of current upstream or
downstream neighbors with which it should exchange overload
feedback.
o Overload status is not conveyed to inactive senders. This avoids
the transmission of overload feedback to inactive senders, which
do not contribute traffic. If an inactive sender starts to
transmit while the receiver is in overload it will receive
overload feedback in the first response and can adjust the amount
of traffic forwarded accordingly.
o A SIP server can limit the distribution of overload control
information by only inserting it into responses to known upstream
neighbors. A SIP server can use transport level authentication
(e.g., via TLS) with its upstream neighbors.
15.1.2. SIP Event Package
Overload control information can also be conveyed from a receiver to
a sender using a new event package. Such an event package enables a
Gurbani, et al. Expires September 1, 2011 [Page 15]
Internet-Draft Overload Control February 2011
sending entity to subscribe to the overload status of its downstream
neighbors and receive notifications of overload control status
changes in NOTIFY requests. This approach has the following
characteristics:
o Overload control information is conveyed decoupled from SIP
signaling. It enables an overload control manager, which is a
separate entity, to monitor the load on other servers and provide
overload control feedback to all SIP servers that have set up
subscriptions with the controller.
o With an event package, a receiver can send updates to senders that
are currently inactive. Inactive senders will receive a
notification about the overload and can refrain from sending
traffic to this neighbor until the overload condition is resolved.
The receiver can also notify all potential senders once they are
permitted to send traffic again. However, these notifications do
generate additional traffic, which adds to the overall load.
o A SIP entity needs to set up and maintain overload control
subscriptions with all upstream and downstream neighbors. A new
subscription needs to be set up before/while a request is
transmitted to a new downstream neighbor. Servers can be
configured to subscribe at boot time. However, this would require
additional protection to avoid the avalanche restart problem for
overload control. Subscriptions need to be terminated when they
are not needed any more, which can be done, for example, using a
timeout mechanism.
o A receiver needs to send NOTIFY messages to all subscribed
upstream neighbors in a timely manner when the control algorithm
requires a change in the control variable (e.g., when a SIP server
is in an overload condition). This includes active as well as
inactive neighbors. These NOTIFYs add to the amount of traffic
that needs to be processed. To ensure that these requests will
not be dropped due to overload, a priority mechanism needs to be
implemented in all servers these request will pass through.
o As overload feedback is sent to all senders in separate messages,
this mechanism is not suitable when frequent overload control
feedback is needed.
o A SIP server can limit the set of senders that can receive
overload control information by authenticating subscriptions to
this event package.
o This approach requires each proxy to implement user agent
functionality (UAS and UAC) to manage the subscriptions.
15.2. Backwards Compatibility
An new overload control mechanism needs to be backwards compatible so
that it can be gradually introduced into a network and functions
properly if only a fraction of the servers support it.
Gurbani, et al. Expires September 1, 2011 [Page 16]
Internet-Draft Overload Control February 2011
Hop-by-hop overload control (see [I-D.ietf-soc-overload-design]) has
the advantage that it does not require that all SIP entities in a
network support it. It can be used effectively between two adjacent
SIP servers if both servers support overload control and does not
depend on the support from any other server or user agent. The more
SIP servers in a network support hop-by-hop overload control, the
better protected the network is against occurrences of overload.
A SIP server may have multiple upstream neighbors from which only
some may support overload control. If a server would simply use this
overload control mechanism, only those that support it would reduce
traffic. Others would keep sending at the full rate and benefit from
the throttling by the servers that support overload control. In
other words, upstream neighbors that do not support overload control
would be better off than those that do.
A SIP server should therefore use 5xx responses towards upstream
neighbors that do not support overload control. The server should
reject the same amount of requests with 5xx responses that would be
otherwise be rejected/redirected by the upstream neighbor if it would
support overload control. If the load condition on the server does
not permit the creation of 5xx responses, the server should drop all
requests from servers that do not support overload control.
16. Security Considerations
Overload control mechanisms can be used by an attacker to conduct a
denial-of-service attack on a SIP entity if the attacker can pretend
that the SIP entity is overloaded. When such a forged overload
indication is received by an upstream SIP client, it will stop
sending traffic to the victim. Thus, the victim is subject to a
denial-of-service attack.
An attacker can create forged overload feedback by inserting itself
into the communication between the victim and its upstream neighbors.
The attacker would need to add overload feedback indicating a high
load to the responses passed from the victim to its upstream
neighbor. Proxies can prevent this attack by communicating via TLS.
Since overload feedback has no meaning beyond the next hop, there is
no need to secure the communication over multiple hops.
Another way to conduct an attack is to send a message containing a
high overload feedback value through a proxy that does not support
this extension. If this feedback is added to the second Via headers
(or all Via headers), it will reach the next upstream proxy. If the
attacker can make the recipient believe that the overload status was
created by its direct downstream neighbor (and not by the attacker
Gurbani, et al. Expires September 1, 2011 [Page 17]
Internet-Draft Overload Control February 2011
further downstream) the recipient stops sending traffic to the
victim. A precondition for this attack is that the victim proxy does
not support this extension since it would not pass through overload
control feedback otherwise.
A malicious SIP entity could gain an advantage by pretending to
support this specification but never reducing the amount of traffic
it forwards to the downstream neighbor. If its downstream neighbor
receives traffic from multiple sources which correctly implement
overload control, the malicious SIP entity would benefit since all
other sources to its downstream neighbor would reduce load.
The solution to this problem depends on the overload control
method. For rate-based and window-based overload control, it is
very easy for a downstream entity to monitor if the upstream
neighbor throttles traffic forwarded as directed. For percentage
throttling this is not always obvious since the load forwarded
depends on the load received by the upstream neighbor.
17. IANA Considerations
This specification defines four new Via header parameters as detailed
below in the "Header Field Parameter and Parameter Values" sub-
registry as per the registry created by [RFC3968]. The required
information is:
Header Field Parameter Name Predefined Values Reference
__________________________________________________________
Via oc Yes RFCXXXX
Via oc-validity Yes RFCXXXX
Via oc-seq Yes RFCXXXX
Via oc-algo Yes RFCXXXX
RFC XXXX [NOTE TO RFC-EDITOR: Please replace with final RFC
number of this specification.]
18. References
18.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
Gurbani, et al. Expires September 1, 2011 [Page 18]
Internet-Draft Overload Control February 2011
June 2002.
[RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation
Protocol (SIP): Locating SIP Servers", RFC 3263,
June 2002.
[RFC3968] Camarillo, G., "The Internet Assigned Number Authority
(IANA) Header Field Parameter Registry for the Session
Initiation Protocol (SIP)", BCP 98, RFC 3968,
December 2004.
[RFC4412] Schulzrinne, H. and J. Polk, "Communications Resource
Priority for the Session Initiation Protocol (SIP)",
RFC 4412, February 2006.
18.2. Informative References
[I-D.ietf-soc-load-control-event-package]
Shen, C., Schulzrinne, H., and A. Koike, "A Session
Initiation Protocol (SIP) Load Control Event Package",
draft-ietf-soc-load-control-event-package-00 (work in
progress), January 2011.
[I-D.ietf-soc-overload-design]
Hilt, V., Noel, E., Shen, C., and A. Abdelal, "Design
Considerations for Session Initiation Protocol (SIP)
Overload Control", draft-ietf-soc-overload-design-04 (work
in progress), December 2010.
[RFC5031] Schulzrinne, H., "A Uniform Resource Name (URN) for
Emergency and Other Well-Known Services", RFC 5031,
January 2008.
[RFC5390] Rosenberg, J., "Requirements for Management of Overload in
the Session Initiation Protocol", RFC 5390, December 2008.
Appendix A. Acknowledgements
Many thanks to Bruno Chatras, Keith Drage, Janet Gunn, Rich Terpstra,
Daryl Malas, R. Parthasarathi, Antoine Roly, Jonathan Rosenberg,
Charles Shen, Rahul Srivastava, Padma Valluri, Shaun Bharrat, and
Paul Kyzivat for their contributions to this specification.
Appendix B. RFC5390 requirements
Table 1 provides a summary how this specification fulfills the
Gurbani, et al. Expires September 1, 2011 [Page 19]
Internet-Draft Overload Control February 2011
requirements of [RFC5390]. A more detailed view on how each
requirements is fulfilled is provided after the table.
+-------------+-------------------+
| Requirement | Meets requirement |
+-------------+-------------------+
| REQ 1 | Yes |
| REQ 2 | Yes |
| REQ 3 | Partially |
| REQ 4 | Partially |
| REQ 5 | Partially |
| REQ 6 | Not applicable |
| REQ 7 | Yes |
| REQ 8 | Partially |
| REQ 9 | Yes |
| REQ 10 | Yes |
| REQ 11 | Yes |
| REQ 12 | Yes |
| REQ 13 | Yes |
| REQ 14 | Yes |
| REQ 15 | Yes |
| REQ 16 | Yes |
| REQ 17 | Partially |
| REQ 18 | Yes |
| REQ 19 | Yes |
| REQ 20 | Yes |
| REQ 21 | Yes |
| REQ 22 | Yes |
| REQ 23 | Yes |
+-------------+-------------------+
Summary of meeting requirements in RFC5390
Table 1
REQ 1: The overload mechanism shall strive to maintain the overall
useful throughput (taking into consideration the quality-of-service
needs of the using applications) of a SIP server at reasonable
levels, even when the incoming load on the network is far in excess
of its capacity. The overall throughput under load is the ultimate
measure of the value of an overload control mechanism.
Meeting REQ 1: Yes, the overload control mechanism allows an
overloaded SIP server to maintain a reasonable level of throughput as
it enters into congestion mode by requesting the upstream clients to
reduce traffic destined downstream.
REQ 2: When a single network element fails, goes into overload, or
Gurbani, et al. Expires September 1, 2011 [Page 20]
Internet-Draft Overload Control February 2011
suffers from reduced processing capacity, the mechanism should strive
to limit the impact of this on other elements in the network. This
helps to prevent a small-scale failure from becoming a widespread
outage.
Meeting REQ 2: Yes. When a SIP server enters overload mode, it will
request the upstream clients to throttle the traffic destined to it.
As a consequence of this, the overloaded SIP server will itself
generate proportionally less downstream traffic, thereby limiting the
impact on other elements in the network.
REQ 3: The mechanism should seek to minimize the amount of
configuration required in order to work. For example, it is better
to avoid needing to configure a server with its SIP message
throughput, as these kinds of quantities are hard to determine.
Meeting REQ 3: Partially. On the server side, the overload condition
is determined monitoring S (c.f., Section 4 of
[I-D.ietf-soc-overload-design]) and reporting a load feedback F as a
value to the "oc" parameter. On the client side, a throttle T is
applied to requests going downstream based on F. This specification
does not prescribe any value for S, nor a particular value for F. The
"oc-algo" parameter allows for automatic convergence to a particular
class of overload control algorithm. There are suggested default
values for the "oc-validity" parameter.
REQ 4: The mechanism must be capable of dealing with elements that do
not support it, so that a network can consist of a mix of elements
that do and don't support it. In other words, the mechanism should
not work only in environments where all elements support it. It is
reasonable to assume that it works better in such environments, of
course. Ideally, there should be incremental improvements in overall
network throughput as increasing numbers of elements in the network
support the mechanism.
Meeting REQ 4: Partially. The mechanism is designed to reduce
congestion when a pair of communicating entities support it. If a
downstream overloaded SIP server does not respond to a request in
time, a SIP client conformant to this specification will attempt to
reduce traffic destined towards the non-responsive server as outlined
in Section 10.
REQ 5: The mechanism should not assume that it will only be deployed
in environments with completely trusted elements. It should seek to
operate as effectively as possible in environments where other
elements are malicious; this includes preventing malicious elements
from obtaining more than a fair share of service.
Gurbani, et al. Expires September 1, 2011 [Page 21]
Internet-Draft Overload Control February 2011
Meeting REQ 5: Partially. Since overload control information is
shared between a pair of communicating entities, a confidential and
authenticated channel can be used for this communication. However,
if such a channel is not available, then the security ramifications
outlined in Section 16 apply.
REQ 6: When overload is signaled by means of a specific message, the
message must clearly indicate that it is being sent because of
overload, as opposed to other, non overload-based failure conditions.
This requirement is meant to avoid some of the problems that have
arisen from the reuse of the 503 response code for multiple purposes.
Of course, overload is also signaled by lack of response to requests.
This requirement applies only to explicit overload signals.
Meeting REQ 6: Not applicable. Overload control information is
signaled as part of the Via header and not in a new header.
REQ 7: The mechanism shall provide a way for an element to throttle
the amount of traffic it receives from an upstream element. This
throttling shall be graded so that it is not all- or-nothing as with
the current 503 mechanism. This recognizes the fact that "overload"
is not a binary state and that there are degrees of overload.
Meeting REQ 7: Yes, please see Section 8 and Section 11.
REQ 8: The mechanism shall ensure that, when a request was not
processed successfully due to overload (or failure) of a downstream
element, the request will not be retried on another element that is
also overloaded or whose status is unknown. This requirement derives
from REQ 1.
Meeting REQ 8: Partially. A SIP client that has overload information
from multiple downstream servers will not retry the request on
another element. However, if a SIP client does not know the overload
status of a downstream server, it may send the request to that
server.
REQ 9: That a request has been rejected from an overloaded element
shall not unduly restrict the ability of that request to be submitted
to and processed by an element that is not overloaded. This
requirement derives from REQ 1.
Meeting REQ 9: Yes, a SIP client conformant to this specification
will send the request to a different element.
REQ 10: The mechanism should support servers that receive requests
from a large number of different upstream elements, where the set of
upstream elements is not enumerable.
Gurbani, et al. Expires September 1, 2011 [Page 22]
Internet-Draft Overload Control February 2011
Meeting REQ 10: Yes, there are no constraints on the number of
upstream clients.
REQ 11: The mechanism should support servers that receive requests
from a finite set of upstream elements, where the set of upstream
elements is enumerable.
Meeting REQ 11: Yes, there are no constraints on the number of
upstream clients.
REQ 12: The mechanism should work between servers in different
domains.
Meeting REQ 12: Yes, there are no inherent limitations on using
overload control between domains.
REQ 13: The mechanism must not dictate a specific algorithm for
prioritizing the processing of work within a proxy during times of
overload. It must permit a proxy to prioritize requests based on any
local policy, so that certain ones (such as a call for emergency
services or a call with a specific value of the Resource-Priority
header field [RFC4412]) are given preferential treatment, such as not
being dropped, being given additional retransmission, or being
processed ahead of others.
Meeting REQ 13: Yes, please see Section 11.
REQ 14: REQ 14: The mechanism should provide unambiguous directions
to clients on when they should retry a request and when they should
not. This especially applies to TCP connection establishment and SIP
registrations, in order to mitigate against avalanche restart.
Meeting REQ 14: Yes, Section 10 provides normative behavior on when
to retry a request after repeated timeouts and fatal transport errors
resulting from communications with a non-responsive downstream SIP
server.
REQ 15: In cases where a network element fails, is so overloaded that
it cannot process messages, or cannot communicate due to a network
failure or network partition, it will not be able to provide explicit
indications of the nature of the failure or its levels of congestion.
The mechanism must properly function in these cases.
Meeting REQ 15: Yes, Section 10 provides normative behavior on when
to retry a request after repeated timeouts and fatal transport errors
resulting from communications with a non-responsive downstream SIP
server.
Gurbani, et al. Expires September 1, 2011 [Page 23]
Internet-Draft Overload Control February 2011
REQ 16: The mechanism should attempt to minimize the overhead of the
overload control messaging.
Meeting REQ 16: Yes, overload control messages are sent in the
topmost Via header, which is always processed by the SIP elements.
REQ 17: The overload mechanism must not provide an avenue for
malicious attack, including DoS and DDoS attacks.
Meeting REQ 17: Partially. Since overload control information is
shared between a pair of communicating entities, a confidential and
authenticated channel can be used for this communication. However,
if such a channel is not available, then the security ramifications
outlined in Section 16 apply.
REQ 18: The overload mechanism should be unambiguous about whether a
load indication applies to a specific IP address, host, or URI, so
that an upstream element can determine the load of the entity to
which a request is to be sent.
Meeting REQ 18: Yes, please see discussion in Section 8.
REQ 19: The specification for the overload mechanism should give
guidance on which message types might be desirable to process over
others during times of overload, based on SIP-specific
considerations. For example, it may be more beneficial to process a
SUBSCRIBE refresh with Expires of zero than a SUBSCRIBE refresh with
a non-zero expiration (since the former reduces the overall amount of
load on the element), or to process re-INVITEs over new INVITEs.
Meeting REQ 19: Yes, please see Section 11.
REQ 20: In a mixed environment of elements that do and do not
implement the overload mechanism, no disproportionate benefit shall
accrue to the users or operators of the elements that do not
implement the mechanism.
Meeting REQ 20: Yes, an element that does not implement overload
control does not receive any measure of extra benefit.
REQ 21: The overload mechanism should ensure that the system remains
stable. When the offered load drops from above the overall capacity
of the network to below the overall capacity, the throughput should
stabilize and become equal to the offered load.
Meeting REQ 21: Yes, the overload control mechanism described in this
draft ensures the stability of the system.
Gurbani, et al. Expires September 1, 2011 [Page 24]
Internet-Draft Overload Control February 2011
REQ 22: It must be possible to disable the reporting of load
information towards upstream targets based on the identity of those
targets. This allows a domain administrator who considers the load
of their elements to be sensitive information, to restrict access to
that information. Of course, in such cases, there is no expectation
that the overload mechanism itself will help prevent overload from
that upstream target.
Meeting REQ 22: Yes, an operator of a SIP server can configure the
SIP server to only report overload control information for requests
received over a confidential channel, for example. However, note
that this requirement is in conflict with REQ 3, as it introduces a
modicum of extra configuration.
REQ 23: It must be possible for the overload mechanism to work in
cases where there is a load balancer in front of a farm of proxies.
Meeting REQ 23: Yes. Depending on the type of load balancer, this
requirement is met. A load balancer fronting a farm of SIP proxies
could be a SIP-aware load balancer or one that is not SIP-aware. If
the load balancer is SIP-aware, it can make conscious decisions on
throttling outgoing traffic towards the individual server in the farm
based on the overload control parameters returned by the server. On
the other hand, if the load balancer is not SIP-aware, then there are
other strategies to perform overload control. Section 6 of
[I-D.ietf-soc-overload-design] documents some of these strategies in
more detail (see discussion related to Figure 3(a) in Section 6).
Authors' Addresses
Vijay K. Gurbani (editor)
Bell Laboratories, Alcatel-Lucent
1960 Lucent Lane, Rm 9C-533
Naperville, IL 60563
USA
Email: vkg@bell-labs.com
Volker Hilt
Bell Labs/Alcatel-Lucent
791 Holmdel-Keyport Rd
Holmdel, NJ 07733
USA
Email: volkerh@bell-labs.com
Gurbani, et al. Expires September 1, 2011 [Page 25]
Internet-Draft Overload Control February 2011
Henning Schulzrinne
Columbia University/Department of Computer Science
450 Computer Science Building
New York, NY 10027
USA
Phone: +1 212 939 7004
Email: hgs@cs.columbia.edu
URI: http://www.cs.columbia.edu
Gurbani, et al. Expires September 1, 2011 [Page 26]
| PAFTECH AB 2003-2026 | 2026-04-24 08:26:05 |