draft-ietf-dime-ovli-06.txt   draft-ietf-dime-ovli-07.txt 
Diameter Maintenance and Extensions (DIME) J. Korhonen, Ed. Diameter Maintenance and Extensions (DIME) J. Korhonen, Ed.
Internet-Draft Broadcom Internet-Draft Broadcom
Intended status: Standards Track S. Donovan, Ed. Intended status: Standards Track S. Donovan, Ed.
Expires: July 12, 2015 B. Campbell Expires: July 30, 2015 B. Campbell
Oracle Oracle
L. Morand L. Morand
Orange Labs Orange Labs
January 8, 2015 January 26, 2015
Diameter Overload Indication Conveyance Diameter Overload Indication Conveyance
draft-ietf-dime-ovli-06.txt draft-ietf-dime-ovli-07.txt
Abstract Abstract
This specification defines a base solution for Diameter overload This specification defines a base solution for Diameter overload
control, referred to as Diameter Overload Indication Conveyance control, referred to as Diameter Overload Indication Conveyance
(DOIC). (DOIC).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 36 skipping to change at page 1, line 36
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on July 12, 2015. This Internet-Draft will expire on July 30, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 27 skipping to change at page 2, line 27
4.5. Simplified Example Architecture . . . . . . . . . . . . . 11 4.5. Simplified Example Architecture . . . . . . . . . . . . . 11
5. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12 5. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12
5.1. Capability Announcement . . . . . . . . . . . . . . . . . 12 5.1. Capability Announcement . . . . . . . . . . . . . . . . . 12
5.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 13 5.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 13
5.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 13 5.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 13
5.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 14 5.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 14
5.2. Overload Report Processing . . . . . . . . . . . . . . . 15 5.2. Overload Report Processing . . . . . . . . . . . . . . . 15
5.2.1. Overload Control State . . . . . . . . . . . . . . . 15 5.2.1. Overload Control State . . . . . . . . . . . . . . . 15
5.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 19 5.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 19
5.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 20 5.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 20
5.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 21 5.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 22
6. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 22 6. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 22
6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 22 6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 23
6.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 23 6.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 23
6.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 24 6.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 24
7. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 24 7. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 24
7.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 25 7.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 25
7.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 25 7.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 25
7.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 25 7.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 25
7.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 26 7.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 26
7.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 26 7.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 26
7.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 26 7.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 26
7.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 27 7.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 27
7.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27 7.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27
8. Error Response Codes . . . . . . . . . . . . . . . . . . . . 28 8. Error Response Codes . . . . . . . . . . . . . . . . . . . . 28
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
9.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 28 9.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 28
9.2. New registries . . . . . . . . . . . . . . . . . . . . . 28 9.2. New registries . . . . . . . . . . . . . . . . . . . . . 29
10. Security Considerations . . . . . . . . . . . . . . . . . . . 29 10. Security Considerations . . . . . . . . . . . . . . . . . . . 29
10.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 29 10.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 30
10.2. Denial of Service Attacks . . . . . . . . . . . . . . . 31 10.2. Denial of Service Attacks . . . . . . . . . . . . . . . 31
10.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . 31 10.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . 31
10.4. End-to End-Security Issues . . . . . . . . . . . . . . . 31 10.4. End-to End-Security Issues . . . . . . . . . . . . . . . 32
11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 33 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 33
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 33
12.1. Normative References . . . . . . . . . . . . . . . . . . 33 12.1. Normative References . . . . . . . . . . . . . . . . . . 33
12.2. Informative References . . . . . . . . . . . . . . . . . 33 12.2. Informative References . . . . . . . . . . . . . . . . . 33
Appendix A. Issues left for future specifications . . . . . . . 34 Appendix A. Issues left for future specifications . . . . . . . 34
A.1. Additional traffic abatement algorithms . . . . . . . . . 34 A.1. Additional traffic abatement algorithms . . . . . . . . . 34
A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 34 A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 34
A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 34 A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 34
Appendix B. Deployment Considerations . . . . . . . . . . . . . 34 Appendix B. Deployment Considerations . . . . . . . . . . . . . 34
Appendix C. Requirements Conformance Analysis . . . . . . . . . 35 Appendix C. Requirements Conformance Analysis . . . . . . . . . 35
skipping to change at page 4, line 22 skipping to change at page 4, line 22
2. Terminology and Abbreviations 2. Terminology and Abbreviations
Abatement Abatement
Reaction to receipt of an overload report resulting in a reduction Reaction to receipt of an overload report resulting in a reduction
in traffic sent to the reporting node. Abatement actions include in traffic sent to the reporting node. Abatement actions include
diversion and throttling. diversion and throttling.
Abatement Algorithm Abatement Algorithm
An extensible mechanism requested by reporting nodes and used by An extensible method requested by reporting nodes and used by
reacting nodes to reduce the amount of traffic sent during an reacting nodes to reduce the amount of traffic sent during an
occurrence of overload control. occurrence of overload control.
Diversion Diversion
An overload abatement mechanism, where the reacting node selects An overload abatement treatment where the reacting node selects
alternate destinations or paths for for requests. alternate destinations or paths for requests.
Host-Routed Requests Host-Routed Requests
Requests that a reacting node knows will be served by a particular Requests that a reacting node knows will be served by a particular
host, either due to the presence of a Destination-Host AVP, or by host, either due to the presence of a Destination-Host AVP, or by
some other local knowledge on the part of the reacting node. some other local knowledge on the part of the reacting node.
Overload Control State (OCS) Overload Control State (OCS)
Internal state maintained by a reporting or reacting node Internal state maintained by a reporting or reacting node
skipping to change at page 5, line 14 skipping to change at page 5, line 14
Requests that a reacting node does not know which host will Requests that a reacting node does not know which host will
service the request. service the request.
Reporting Node Reporting Node
A Diameter node that generates an overload report. (This may or A Diameter node that generates an overload report. (This may or
may not be the overloaded node.) may not be the overloaded node.)
Throttling Throttling
A mechanism for overload abatement that limits the number of An abatement treatment that limits the number of requests sent by
requests sent by the DIOC reacting node. Throttling can include a the DIOC reacting node. Throttling can include a Diameter Client
Diameter Client choosing to not send requests, or a Diameter Agent choosing to not send requests, or a Diameter Agent or Server
or Server rejecting requests with appropriate error responses. In rejecting requests with appropriate error responses. In both
both cases the result of the throttling is a permanent rejection cases the result of the throttling is a permanent rejection of the
of the transaction. transaction.
3. Conventions Used in This Document 3. Conventions Used in This Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
RFC 2119 [RFC2119] interpretation does not apply for the above listed
words when they are not used in all-caps format.
4. Solution Overview 4. Solution Overview
The Diameter Overload Information Conveyance (DOIC) solution allows The Diameter Overload Information Conveyance (DOIC) solution allows
Diameter nodes to request other Diameter nodes to perform overload Diameter nodes to request other Diameter nodes to perform overload
abatement actions, that is, actions to reduce the load offered to the abatement actions, that is, actions to reduce the load offered to the
overloaded node or realm. overloaded node or realm.
A Diameter node that supports DOIC is known as a "DOIC node". Any A Diameter node that supports DOIC is known as a "DOIC node". Any
Diameter node can act as a DOIC node, including Diameter Clients, Diameter node can act as a DOIC node, including Diameter Clients,
Diameter Servers, and Diameter Agents. DOIC nodes are further Diameter Servers, and Diameter Agents. DOIC nodes are further
skipping to change at page 8, line 49 skipping to change at page 9, line 5
requested. requested.
Note that the loss algorithm defined in this document is a Note that the loss algorithm defined in this document is a
stateless abatement algorithm. As a result it does not require stateless abatement algorithm. As a result it does not require
any actions by reacting nodes prior to the receipt of an overload any actions by reacting nodes prior to the receipt of an overload
report. Stateful abatement algorithms that base the abatement report. Stateful abatement algorithms that base the abatement
logic on a history of request messages sent might require reacting logic on a history of request messages sent might require reacting
nodes to maintain state in advance of receiving an overload report nodes to maintain state in advance of receiving an overload report
to ensure that the overload reports can be properly handled. to ensure that the overload reports can be properly handled.
Reporting nodes can change the overload abatement algorithm indicated
in the OC-Feature-Vector AVP if the reporting node is not currently
in an overload condition and sending overload reports. The reporting
node is not allowed to change the overload abatement algorithm while
the reporting node is in an overload condition.
The DCA mechanism must also allow the scenario where the set of The DCA mechanism must also allow the scenario where the set of
features supported by the sender of a request and by agents in the features supported by the sender of a request and by agents in the
path of a request differ. In this case, the agent can update the OC- path of a request differ. In this case, the agent can update the OC-
Supported-Features AVP to reflect the mixture of the two sets of Supported-Features AVP to reflect the mixture of the two sets of
supported features. supported features.
Note: The logic to determine if the content of the OC-Supported- Note: The logic to determine if the content of the OC-Supported-
Features AVP should be changed is out-of-scope for this document, Features AVP should be changed is out-of-scope for this document,
as is the logic to determine the content of a modified OC- as is the logic to determine the content of a modified OC-
Supported-Features AVP. These are left to implementation Supported-Features AVP. These are left to implementation
skipping to change at page 10, line 17 skipping to change at page 10, line 15
Note: Known issues exist if multiple sources for overload reports Note: Known issues exist if multiple sources for overload reports
which apply to the same Diameter entity exist. Reacting nodes which apply to the same Diameter entity exist. Reacting nodes
have no way of determining the source and, as such, will treat have no way of determining the source and, as such, will treat
them as coming from a single source. Variance in sequence numbers them as coming from a single source. Variance in sequence numbers
between the two sources can then cause incorrect overload between the two sources can then cause incorrect overload
abatement treatment to be applied for indeterminate periods of abatement treatment to be applied for indeterminate periods of
time. time.
Reporting nodes are responsible for determining the need for a Reporting nodes are responsible for determining the need for a
reduction of traffic. The method for making this determination is reduction of traffic. The method for making this determination is
implementation specific and depend on the type of overload report implementation specific and depends on the type of overload report
being generated. A host-report might be generated by tracking use of being generated. A host-report might be generated by tracking use of
resources required by the host to handle transactions for the resources required by the host to handle transactions for the
Diameter application. A realm-report generally impacts the traffic Diameter application. A realm-report generally impacts the traffic
sent to multiple hosts and, as such, requires tracking the capacity sent to multiple hosts and, as such, requires tracking the capacity
of all servers able to handle realm- routed requests for the of all servers able to handle realm-routed requests for the
application and realm. application and realm.
Once a reporting node determines the need for a reduction in traffic, Once a reporting node determines the need for a reduction in traffic,
it uses the DOIC defined AVPs to report on the condition. These AVPs it uses the DOIC defined AVPs to report on the condition. These AVPs
are included in answer messages sent or relayed by the reporting are included in answer messages sent or relayed by the reporting
node. The reporting node indicates the overload abatement algorithm node. The reporting node indicates the overload abatement algorithm
that is to be used to handle the traffic reduction in the OC- that is to be used to handle the traffic reduction in the OC-
Supported-Features AVP. The OC-OLR AVP is used to communicate Supported-Features AVP. The OC-OLR AVP is used to communicate
information about the requested reduction. information about the requested reduction.
Reacting nodes, upon receipt of an overload report, applying the Reacting nodes, upon receipt of an overload report, apply the
overload abatement algorithm to traffic impacted by the overload overload abatement algorithm to traffic impacted by the overload
report. The method used to determine the requests that are to report. The method used to determine the requests that are to
receive overload abatement treatment is dependent on the abatement receive overload abatement treatment is dependent on the abatement
algorithm. The loss abatement algorithm is defined in this document algorithm. The loss abatement algorithm is defined in this document
(Section 6). Other abatement algorithms can be defined in extensions (Section 6). Other abatement algorithms can be defined in extensions
to the DOIC solutions. to the DOIC solution.
Two types of overload abatement treatment are defined, diversion and Two types of overload abatement treatment are defined, diversion and
throttling. Reacting nodes are responsible for determining which throttling. Reacting nodes are responsible for determining which
treatment is appropriate for individual requests. treatment is appropriate for individual requests.
As the conditions that lead to the generation of the overload report As the conditions that lead to the generation of the overload report
change the reporting node can send new overload reports requesting change the reporting node can send new overload reports requesting
greater reduction if the condition gets worse or less reduction if greater reduction if the condition gets worse or less reduction if
the condition improves. The reporting node sends an overload report the condition improves. The reporting node sends an overload report
with a duration of zero to indicate that the overload condition has with a duration of zero to indicate that the overload condition has
skipping to change at page 11, line 27 skipping to change at page 11, line 23
definition of new report types and the definition of new scopes of definition of new report types and the definition of new scopes of
messages impacted by an overload report. messages impacted by an overload report.
A DOIC node communicates supported features by including them in the A DOIC node communicates supported features by including them in the
OC-Feature-Vector AVP, as a sub-AVP of OC-Supported-Features. Any OC-Feature-Vector AVP, as a sub-AVP of OC-Supported-Features. Any
non-backwards compatible DOIC extensions define new values for the non-backwards compatible DOIC extensions define new values for the
OC-Feature-Vector AVP. DOIC extensions also have the ability to add OC-Feature-Vector AVP. DOIC extensions also have the ability to add
new AVPs to the OC-Supported-Features AVP, if additional information new AVPs to the OC-Supported-Features AVP, if additional information
about the new feature is required. about the new feature is required.
Overload reports can be also extended by adding new sub-AVPs to the Overload reports can also be extended by adding new sub-AVPs to the
OC-OLR AVP, allowing reporting nodes to communicate additional OC-OLR AVP, allowing reporting nodes to communicate additional
information about handling an overload condition. information about handling an overload condition.
If necessary, new extensions can also define new AVPs that are not If necessary, new extensions can also define new AVPs that are not
part of the OC-Supported-Features and OC-OLR group AVPs. It is, part of the OC-Supported-Features and OC-OLR group AVPs. It is,
however, recommended that DOIC extensions use the OC-Supported- however, recommended that DOIC extensions use the OC-Supported-
Features AVP and OC-OLR AVP to carry all DOIC related AVPs. Features AVP and OC-OLR AVP to carry all DOIC related AVPs.
4.5. Simplified Example Architecture 4.5. Simplified Example Architecture
Figure 1 illustrates the simplified architecture for Diameter Figure 1 illustrates the simplified architecture for Diameter
overload information conveyance. overload information conveyance.
Realm X Same or other Realms Realm X Same or other Realms
<--------------------------------------> <----------------------> <--------------------------------------> <---------------------->
+--^-----+ : (optional) : +--------+ : (optional) :
|Diameter| : : |Diameter| : :
|Server A|--+ .--. : +---^----+ : .--. |Server A|--+ .--. : +--------+ : .--.
+--------+ | _( `. : |Diameter| : _( `. +---^----+ +--------+ | _( `. : |Diameter| : _( `. +--------+
+--( )--:-| Agent |-:--( )--|Diameter| +--( )--:-| Agent |-:--( )--|Diameter|
+--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | +--------+ | ( ` . ) ) : +--------+ : ( ` . ) ) | Client |
|Diameter|--+ `--(___.-' : : `--(___.-' +-----^--+ |Diameter|--+ `--(___.-' : : `--(___.-' +--------+
|Server B| : : |Server B| : :
+---^----+ : : +--------+ : :
End-to-end Overload Indication End-to-end Overload Indication
1) <-----------------------------------------------> 1) <----------------------------------------------->
Diameter Application Y Diameter Application Y
Overload Indication A Overload Indication A' Overload Indication A Overload Indication A'
2) <----------------------> <----------------------> 2) <----------------------> <---------------------->
Diameter Application Y Diameter Application Y Diameter Application Y Diameter Application Y
Figure 1: Simplified architecture choices for overload indication Figure 1: Simplified architecture choices for overload indication
skipping to change at page 13, line 25 skipping to change at page 13, line 25
An OC-Supported-Features AVP in answer messages indicates there is a An OC-Supported-Features AVP in answer messages indicates there is a
reporting node for the transaction. The reacting node MAY take reporting node for the transaction. The reacting node MAY take
action, for example creating state for some stateful abatement action, for example creating state for some stateful abatement
algorithm, based on the features indicated in the OC-Feature-Vector algorithm, based on the features indicated in the OC-Feature-Vector
AVP. AVP.
Note: The loss abatement algorithm does not require stateful Note: The loss abatement algorithm does not require stateful
behavior when there is no active overload report. behavior when there is no active overload report.
Reacting nodes need to be prepared for the reporting node to change
selected algorithms. This can happen at any time, including when the
reporting node has sent an active overload report. The reacting node
can minimize the potential for changes by modifying the advertised
abatement algorithms sent to an overloaded reporting node to the
currently selected algorithm and loss (or just loss if it is the
currently selected algorithm). This has the effect of limiting the
potential change in abatement algorithm from the currently selected
algorithm to loss, avoiding changes to more complex abatement
algorithms that require state to operate properly.
5.1.2. Reporting Node Behavior 5.1.2. Reporting Node Behavior
Upon receipt of a request message, a reporting node determines if Upon receipt of a request message, a reporting node determines if
there is a reacting node for the transaction based on the presence of there is a reacting node for the transaction based on the presence of
the OC-Supported-Features AVP in the request message. the OC-Supported-Features AVP in the request message.
If the request message contains an OC-Supported-Features AVP then a If the request message contains an OC-Supported-Features AVP then a
reporting node MUST include the OC-Supported-Features AVP in the reporting node MUST include the OC-Supported-Features AVP in the
answer message for that transaction. answer message for that transaction.
skipping to change at page 14, line 20 skipping to change at page 14, line 29
The abatement algorithm selected MUST be from the set of abatement The abatement algorithm selected MUST be from the set of abatement
algorithms contained in the request message's OC-Feature-Vector AVP. algorithms contained in the request message's OC-Feature-Vector AVP.
A reporting node that selects the loss algorithm may do so by A reporting node that selects the loss algorithm may do so by
including the OC-Feature-Vector AVP with an explicit indication of including the OC-Feature-Vector AVP with an explicit indication of
the loss algorithm, or it MAY omit OC-Feature-Vector. If it selects the loss algorithm, or it MAY omit OC-Feature-Vector. If it selects
a different algorithm, it MUST include the OC-Feature-Vector AVP with a different algorithm, it MUST include the OC-Feature-Vector AVP with
an explicit indication of the selected algorithm. an explicit indication of the selected algorithm.
A reporting node MUST NOT change the selected algorithm during the
period of time that starts when entering an overload condition and
ends when the associated OCS becomes invalid in all reacting nodes.
The reporting node MAY change the overload abatement algorithm
indicated in the OC-Supported-Features AVP at any time as long as no
previously sent OLRs may be active.
The reporting node SHOULD indicate support for other DOIC features The reporting node SHOULD indicate support for other DOIC features
defined in extension drafts that it supports and that apply to the defined in extension drafts that it supports and that apply to the
transaction. It does so using the OC-Feature-Vector AVP. transaction. It does so using the OC-Feature-Vector AVP.
Note: Not all DOIC features will apply to all Diameter Note: Not all DOIC features will apply to all Diameter
applications or deployment scenarios. The features included in applications or deployment scenarios. The features included in
the OC-Feature-Vector AVP are based on local reporting node the OC-Feature-Vector AVP are based on local reporting node
policy. policy.
5.1.3. Agent Behavior 5.1.3. Agent Behavior
Diameter Agents that support DOIC MAY ensure that all messages Diameter Agents that support DOIC can ensure that all messages
relayed by the agent contain the OC-Supported-Features AVP. relayed by the agent contain the OC-Supported-Features AVP.
A Diameter Agent SHOULD take on reacting node behavior for Diameter A Diameter Agent MAY take on reacting node behavior for Diameter
endpoints that do not support the DOIC solution. A Diameter Agent endpoints that do not support the DOIC solution. A Diameter Agent
detects that a Diameter endpoint does not support DOIC reacting node detects that a Diameter endpoint does not support DOIC reacting node
behavior when there is no OC-Supported-Features AVP in a request behavior when there is no OC-Supported-Features AVP in a request
message. message.
For a Diameter Agent to be a reacting node for a non supporting For a Diameter Agent to be a reacting node for a non supporting
Diameter endpoint, the Diameter Agent MUST include the OC-Supported- Diameter endpoint, the Diameter Agent MUST include the OC-Supported-
Features AVP in request messages it relays that do not contain the Features AVP in request messages it relays that do not contain the
OC-Supported-Features AVP. OC-Supported-Features AVP.
skipping to change at page 15, line 42 skipping to change at page 15, line 44
upstream and downstream DOIC nodes. upstream and downstream DOIC nodes.
5.2. Overload Report Processing 5.2. Overload Report Processing
5.2.1. Overload Control State 5.2.1. Overload Control State
Both reacting and reporting nodes maintain Overload Control State Both reacting and reporting nodes maintain Overload Control State
(OCS) for active overload conditions. The following sections define (OCS) for active overload conditions. The following sections define
behavior associated with that OCS. behavior associated with that OCS.
The contents of the OCS in the reporting node and in the reacting
node represent logical constructs. The actual internal physical
structure of the state included in the OCS is an implementation
decision.
5.2.1.1. Overload Control State for Reacting Nodes 5.2.1.1. Overload Control State for Reacting Nodes
A reacting node SHOULD maintain the following OCS per supported A reacting node maintains the following OCS per supported Diameter
Diameter application: application:
o A host-type OCS entry for each Destination-Host to which it sends o A host-type OCS entry for each Destination-Host to which it sends
host-type requests and host-type requests and
o A realm-type OCS entry for each Destination-Realm to which it o A realm-type OCS entry for each Destination-Realm to which it
sends realm-type requests. sends realm-type requests.
A host-type OCS entry is identified by the pair of application-id and A host-type OCS entry is identified by the pair of application-id and
the node's DiameterIdentity. the node's DiameterIdentity.
A realm-type OCS entry is identified by the pair of application-id A realm-type OCS entry is identified by the pair of application-id
and realm. and realm.
The host-type and realm-type OCS entries MAY include the following The host-type and realm-type OCS entries include the following
information (the actual information stored is an implementation information (the actual information stored is an implementation
decision): decision):
o Sequence number (as received in OC-OLR) o Sequence number (as received in OC-OLR)
o Time of expiry (derived from OC-Validity-Duration AVP received in o Time of expiry (derived from OC-Validity-Duration AVP received in
the OC-OLR AVP and time of reception of the message carrying OC- the OC-OLR AVP and time of reception of the message carrying OC-
OLR AVP) OLR AVP)
o Selected Abatement Algorithm (as received in the OC-Supported- o Selected Abatement Algorithm (as received in the OC-Supported-
Features AVP) Features AVP)
o Abatement Algorithm specific input data (as received in the OC-OLR o Abatement Algorithm specific input data (as received in the OC-OLR
AVP, for example, OC-Reduction-Percentage for the Loss abatement AVP, for example, OC-Reduction-Percentage for the Loss abatement
algorithm) algorithm)
5.2.1.2. Overload Control State for Reporting Nodes 5.2.1.2. Overload Control State for Reporting Nodes
A reporting node SHOULD maintain OCS entries per supported Diameter A reporting node maintains OCS entries per supported Diameter
application, per supported (and eventually selected) Abatement application, per supported (and eventually selected) Abatement
Algorithm and per report-type. Algorithm and per report-type.
An OCS entry is identified by the tuple of Application-Id, Report- An OCS entry is identified by the tuple of Application-Id, Report-
Type and Abatement Algorithm and MAY include the following Type and Abatement Algorithm and includes the following information
information (the actual information stored is an implementation (the actual information stored is an implementation decision):
decision):
o Sequence number o Sequence number
o Validity Duration o Validity Duration
o Expiration Time o Expiration Time
o Algorithm specific input data (for example, the Reduction o Algorithm specific input data (for example, the Reduction
Percentage for the Loss Abatement Algorithm) Percentage for the Loss Abatement Algorithm)
5.2.1.3. Reacting Node Maintenance of Overload Control State 5.2.1.3. Reacting Node Maintenance of Overload Control State
When a reacting node receives an OC-OLR AVP, it MUST determine if it When a reacting node receives an OC-OLR AVP, it MUST determine if it
is for an existing or new overload condition. is for an existing or new overload condition.
skipping to change at page 17, line 14 skipping to change at page 17, line 23
Note: For the remainder of this section the term OLR refers to the Note: For the remainder of this section the term OLR refers to the
combination of the contents of the received OC-OLR AVP and the combination of the contents of the received OC-OLR AVP and the
abatement algorithm indicated in the received OC-Supported- abatement algorithm indicated in the received OC-Supported-
Features AVP. Features AVP.
When receiving an answer message with multiple OLRs of different When receiving an answer message with multiple OLRs of different
supported report types, a reacting node MUST process each received supported report types, a reacting node MUST process each received
OLR. OLR.
When receiving an answer message with multiple OLRs and multiple of
the OLRs are of the same supported report types, a reacting node
SHOULD ignore the duplicated OLRs.
A reacting node SHOULD ignore an OC-OLR with a OC-Report-Type AVP
that contains an unrecognized value.
The OLR is for an existing overload condition if a reacting node has The OLR is for an existing overload condition if a reacting node has
an OCS that matches the received OLR. an OCS that matches the received OLR.
For a host-report this means it matches the application-id and the For a host-report this means it matches the application-id and the
host's DiameterIdentity in an existing host OCS entry. host's DiameterIdentity in an existing host OCS entry.
For a realm-report this means it matches the application-id and the For a realm-report this means it matches the application-id and the
realm in an existing realm OCS entry. realm in an existing realm OCS entry.
If the OLR is for an existing overload condition then a reacting node If the OLR is for an existing overload condition then a reacting node
skipping to change at page 18, line 41 skipping to change at page 18, line 45
zero ("0"). zero ("0").
When generating sequence numbers for new overload conditions, the new When generating sequence numbers for new overload conditions, the new
sequence number MUST be greater than any sequence number in an active sequence number MUST be greater than any sequence number in an active
(unexpired) overload report for the same application and report-type (unexpired) overload report for the same application and report-type
previously sent by the reporting node. This property MUST hold over previously sent by the reporting node. This property MUST hold over
a reboot of the reporting node. a reboot of the reporting node.
Note: One way of addressing this over a reboot of a reporting node Note: One way of addressing this over a reboot of a reporting node
is to use a time stamp for the first overload condition that is to use a time stamp for the first overload condition that
occurs after the report and to start using sequence numbers of occurs after the report and to start using sequences beginning
zero for subsequent overload conditions. with zero for subsequent overload conditions.
A reporting node MUST update an OCS entry when it needs to adjust the A reporting node MUST update an OCS entry when it needs to adjust the
validity duration of the overload condition at reacting nodes. validity duration of the overload condition at reacting nodes.
For instance, if a reporting node wishes to instruct reacting For instance, if a reporting node wishes to instruct reacting
nodes to continue overload abatement for a longer period of time nodes to continue overload abatement for a longer period of time
than originally communicated. This also applies if the reporting than originally communicated. This also applies if the reporting
node wishes to shorten the period of time that overload abatement node wishes to shorten the period of time that overload abatement
is to continue. is to continue.
A reporting node MUST NOT update the abatement algorithm in an active
OCS entry.
A reporting node MUST update an OCS entry when it wishes to adjust A reporting node MUST update an OCS entry when it wishes to adjust
any abatement algorithm specific parameters, including, for example, any abatement algorithm specific parameters, including, for example,
the reduction percentage used for the Loss abatement algorithm. the reduction percentage used for the Loss abatement algorithm.
For instance, if a reporting node wishes to change the reduction For instance, if a reporting node wishes to change the reduction
percentage either higher, if the overload condition has worsened, percentage either higher, if the overload condition has worsened,
or lower, if the overload condition has improved, then the or lower, if the overload condition has improved, then the
reporting node would update the appropriate OCS entry. reporting node would update the appropriate OCS entry.
A reporting node MUST increment the sequence number associated with A reporting node MUST increment the sequence number associated with
skipping to change at page 20, line 5 skipping to change at page 20, line 8
Section 6 for the overload abatement algorithm logic applied. Section 6 for the overload abatement algorithm logic applied.
If the overload abatement algorithm selects the request for overload If the overload abatement algorithm selects the request for overload
abatement treatment then the reacting node MUST apply overload abatement treatment then the reacting node MUST apply overload
abatement treatment on the request. The abatement treatment applied abatement treatment on the request. The abatement treatment applied
depends on the context of the request. depends on the context of the request.
If diversion abatement treatment is possible (i.e. a different path If diversion abatement treatment is possible (i.e. a different path
for the request can be selected where the overloaded node is not part for the request can be selected where the overloaded node is not part
of the different path), then the reacting node SHOULD apply diversion of the different path), then the reacting node SHOULD apply diversion
abatement treatment to the request. Otherwise the reacting node abatement treatment to the request. The reacting node MUST apply
SHOULD apply throttling abatement treatment to the request. throttling abatement treatment to requests identified for abatement
treatment when diversion treatment is not possible or was not
applied.
Note: This only addresses the case where there are two defined
abatement treatments, diversion and throttling. Any extension
that defines a new abatement treatment must also defined the
interaction of the new abatement treatment with existing
treatments.
If the overload abatement treatment results in throttling of the If the overload abatement treatment results in throttling of the
request and if the reacting node is an agent then the agent MUST send request and if the reacting node is an agent then the agent MUST send
an appropriate error as defined in Section 8. an appropriate error as defined in Section 8.
Diameter endpoints that throttle requests need to do so according to Diameter endpoints that throttle requests need to do so according to
the rules of the client application. Those rules will vary by the rules of the client application. Those rules will vary by
application, and are beyond the scope of this document. application, and are beyond the scope of this document.
In the case that the OCS entry indicated no traffic was to be sent to In the case that the OCS entry indicated no traffic was to be sent to
skipping to change at page 22, line 23 skipping to change at page 22, line 33
OC-OLR AVPs defined in this document. OC-OLR AVPs defined in this document.
[RFC6733] defined Grouped AVP extension mechanisms apply. This [RFC6733] defined Grouped AVP extension mechanisms apply. This
allows, for example, defining a new feature that is mandatory to be allows, for example, defining a new feature that is mandatory to be
understood even when piggybacked on an existing application. understood even when piggybacked on an existing application.
When defining new report type values, the corresponding specification When defining new report type values, the corresponding specification
MUST define the semantics of the new report types and how they affect MUST define the semantics of the new report types and how they affect
the OC-OLR AVP handling. the OC-OLR AVP handling.
The OC-OLR AVP can be expanded with optional sub-AVPs only if a The OC-Supported-Feature and OC-OLR AVPs can be expanded with
legacy DOIC implementation can safely ignore them without breaking optional sub-AVPs only if a legacy DOIC implementation can safely
backward compatibility for the given OC-Report-Type AVP value. ignore them without breaking backward compatibility for the given OC-
Report-Type AVP value. Any new sub-AVPs MUST NOT require that the
M-bit be set.
Documents that introduce new report types MUST describe any Documents that introduce new report types MUST describe any
limitations on their use across non-supporting agents. limitations on their use across non-supporting agents.
As with any Diameter specification, RFC6733 requires all new AVPs to As with any Diameter specification, RFC6733 requires all new AVPs to
be registered with IANA. See Section 9 for the required procedures. be registered with IANA. See Section 9 for the required procedures.
New features (feature bits in the OC-Feature-Vector AVP) and report New features (feature bits in the OC-Feature-Vector AVP) and report
types (in the OC-Report-Type AVP) MUST be registered with IANA. types (in the OC-Report-Type AVP) MUST be registered with IANA.
6. Loss Algorithm 6. Loss Algorithm
skipping to change at page 24, line 21 skipping to change at page 24, line 32
indicated in the OC-Supported-Features AVP is the loss algorithm, the indicated in the OC-Supported-Features AVP is the loss algorithm, the
reacting node MUST apply abatement treatment to the requested reacting node MUST apply abatement treatment to the requested
percentage of request messages sent. percentage of request messages sent.
Note: The loss algorithm is a stateless algorithm. As a result, Note: The loss algorithm is a stateless algorithm. As a result,
the reacting node does not guarantee that there will be an the reacting node does not guarantee that there will be an
absolute reduction in traffic sent. Rather, it guarantees that absolute reduction in traffic sent. Rather, it guarantees that
the requested percentage of new requests will be given abatement the requested percentage of new requests will be given abatement
treatment. treatment.
When applying overload abatement treatment for the loss abatement
algorithm, the reacting node MUST abate the requested percentage of
requests that would have otherwise been sent to the reporting host or
realm.
If reacting node comes out of the 100 percent traffic reduction as a If reacting node comes out of the 100 percent traffic reduction as a
result of the overload report timing out, the following procedures result of the overload report timing out, the reacting node sending
are RECOMMENDED to be applied. The reacting node sending the traffic the traffic SHOULD be conservative and, for example, first send
should be conservative and, for example, first send "probe" messages "probe" messages to learn the overload condition of the overloaded
to learn the overload condition of the overloaded node before node before converging to any traffic amount/rate decided by the
converging to any traffic amount/rate decided by the sender. Similar sender. Similar concerns apply in all cases when the overload report
concerns apply in all cases when the overload report times out unless times out unless the previous overload report stated 0 percent
the previous overload report stated 0 percent reduction. reduction.
The goal of this behavior is to reduce the probability of overload The goal of this behavior is to reduce the probability of overload
condition thrashing where an immediate transition from 100% condition thrashing where an immediate transition from 100%
reduction to 0% reduction results in the reporting node moving reduction to 0% reduction results in the reporting node moving
quickly back into an overload condition. quickly back into an overload condition.
If the reacting node does not receive an OLR in answers received from
the formerly overloaded node then the reacting node SHOULD slowly
increase the rate of traffic sent to the overloaded node.
7. Attribute Value Pairs 7. Attribute Value Pairs
This section describes the encoding and semantics of the Diameter This section describes the encoding and semantics of the Diameter
Overload Indication Attribute Value Pairs (AVPs) defined in this Overload Indication Attribute Value Pairs (AVPs) defined in this
document. document.
7.1. OC-Supported-Features AVP 7.1. OC-Supported-Features AVP
The OC-Supported-Features AVP (AVP code TBD1) is of type Grouped and The OC-Supported-Features AVP (AVP code TBD1) is of type Grouped and
serves two purposes. First, it announces a node's support for the serves two purposes. First, it announces a node's support for the
skipping to change at page 26, line 31 skipping to change at page 26, line 31
used as a non-volatile increasing counter for a sequence of overload used as a non-volatile increasing counter for a sequence of overload
reports between two DOIC nodes for the same overload occurrence. reports between two DOIC nodes for the same overload occurrence.
Sequence numbers are treated in a uni-directional manner, i.e. two Sequence numbers are treated in a uni-directional manner, i.e. two
sequence numbers on each direction between two DOIC nodes are not sequence numbers on each direction between two DOIC nodes are not
related or correlated. related or correlated.
7.5. OC-Validity-Duration AVP 7.5. OC-Validity-Duration AVP
The OC-Validity-Duration AVP (AVP code TBD5) is of type Unsigned32 The OC-Validity-Duration AVP (AVP code TBD5) is of type Unsigned32
and indicates in seconds the validity time of the overload report. and indicates in seconds the validity time of the overload report.
The number of mseconds is measured after reception of the first OC- The number of seconds is measured after reception of the first OC-OLR
OLR AVP with a given value of OC-Sequence-Number AVP. The default AVP with a given value of OC-Sequence-Number AVP. The default value
value for the OC-Validity-Duration AVP is 30 seconds. When the OC- for the OC-Validity-Duration AVP is 30 seconds. When the OC-
Validity-Duration AVP is not present in the OC-OLR AVP, the default Validity-Duration AVP is not present in the OC-OLR AVP, the default
value applies. The maximum value for the OC-Validity-Duration AVP is value applies. The maximum value for the OC-Validity-Duration AVP is
86,400 seconds (24 hours). 86,400 seconds (24 hours).
7.6. OC-Report-Type AVP 7.6. OC-Report-Type AVP
The OC-Report-Type AVP (AVP code TBD6) is of type Enumerated. The The OC-Report-Type AVP (AVP code TBD6) is of type Enumerated. The
value of the AVP describes what the overload report concerns. The value of the AVP describes what the overload report concerns. The
following values are initially defined: following values are initially defined:
skipping to change at page 28, line 12 skipping to change at page 28, line 12
As described in the Diameter base protocol [RFC6733], the M-bit usage As described in the Diameter base protocol [RFC6733], the M-bit usage
for a given AVP in a given command may be defined by the application. for a given AVP in a given command may be defined by the application.
8. Error Response Codes 8. Error Response Codes
When a DOIC node rejects a Diameter request due to overload, the DOIC When a DOIC node rejects a Diameter request due to overload, the DOIC
node MUST select an appropriate error response code. This node MUST select an appropriate error response code. This
determination is made based on the probability of the request determination is made based on the probability of the request
succeeding if retried on a different path. succeeding if retried on a different path.
Note: This only applies for DOIC nodes that are not the originator
of the request.
A reporting node rejecting a Diameter request due to an overload A reporting node rejecting a Diameter request due to an overload
condition SHOULD send a DIAMETER_TOO_BUSY error response, if it can condition SHOULD send a DIAMETER_TOO_BUSY error response, if it can
assume that the same request may succeed on a different path. assume that the same request may succeed on a different path.
If a reporting node knows or assumes that the same request will not If a reporting node knows or assumes that the same request will not
succeed on a different path, DIAMETER_UNABLE_TO_COMPLY error response succeed on a different path, DIAMETER_UNABLE_TO_COMPLY error response
SHOULD be used. Retrying would consume valuable resources during an SHOULD be used. Retrying would consume valuable resources during an
occurrence of overload. occurrence of overload.
For instance, if the request arrived at the reporting node without For instance, if the request arrived at the reporting node without
 End of changes. 43 change blocks. 
89 lines changed or deleted 86 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/