| < draft-ietf-dime-ovli-04.txt | draft-ietf-dime-ovli-05.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: April 30, 2015 B. Campbell | Expires: June 6, 2015 B. Campbell | |||
| Oracle | Oracle | |||
| L. Morand | L. Morand | |||
| Orange Labs | Orange Labs | |||
| October 27, 2014 | December 3, 2014 | |||
| Diameter Overload Indication Conveyance | Diameter Overload Indication Conveyance | |||
| draft-ietf-dime-ovli-04.txt | draft-ietf-dime-ovli-05.txt | |||
| Abstract | Abstract | |||
| This specification documents a Diameter Overload Control (DOC) base | This specification defines a base solution for Diameter overload | |||
| solution and the dissemination of the overload report information. | control, referred to as Diameter Overload Indication Conveyance | |||
| (DOIC). | ||||
| Requirements | Requirements | |||
| 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]. | |||
| 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 41 ¶ | skipping to change at page 1, line 42 ¶ | |||
| 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 April 30, 2015. | This Internet-Draft will expire on June 6, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 3 | 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Piggybacking Principle . . . . . . . . . . . . . . . . . 7 | 3.1. Piggybacking . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.2. DOIC Capability Announcement . . . . . . . . . . . . . . 8 | 3.2. DOIC Capability Announcement . . . . . . . . . . . . . . 8 | |||
| 3.3. DOIC Overload Condition Reporting . . . . . . . . . . . . 9 | 3.3. DOIC Overload Condition Reporting . . . . . . . . . . . . 9 | |||
| 3.4. DOIC Extensibility . . . . . . . . . . . . . . . . . . . 10 | 3.4. DOIC Extensibility . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.5. Simplified Example Architecture . . . . . . . . . . . . . 11 | 3.5. Simplified Example Architecture . . . . . . . . . . . . . 12 | |||
| 4. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12 | 4. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 4.1. Capability Announcement . . . . . . . . . . . . . . . . . 12 | 4.1. Capability Announcement . . . . . . . . . . . . . . . . . 12 | |||
| 4.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 12 | 4.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 13 | |||
| 4.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 12 | 4.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 13 | |||
| 4.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 13 | 4.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.2. Overload Report Processing . . . . . . . . . . . . . . . 14 | 4.2. Overload Report Processing . . . . . . . . . . . . . . . 15 | |||
| 4.2.1. Overload Control State . . . . . . . . . . . . . . . 14 | 4.2.1. Overload Control State . . . . . . . . . . . . . . . 15 | |||
| 4.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 18 | 4.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 19 | |||
| 4.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 18 | 4.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 20 | |||
| 4.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 20 | 4.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 21 | |||
| 5. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 21 | 5. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 21 | 5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 22 | 5.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 23 | |||
| 5.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 22 | 5.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 24 | |||
| 6. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 23 | 6. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 25 | |||
| 6.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 23 | 6.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 25 | |||
| 6.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 24 | 6.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 25 | |||
| 6.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 24 | 6.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 6.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 25 | 6.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 26 | |||
| 6.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 25 | 6.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 27 | |||
| 6.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 25 | 6.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 27 | |||
| 6.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 26 | 6.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 27 | |||
| 6.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27 | 6.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27 | |||
| 7. Error Response Codes . . . . . . . . . . . . . . . . . . . . 27 | 7. Error Response Codes . . . . . . . . . . . . . . . . . . . . 28 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 8.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 28 | 8.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 8.2. New registries . . . . . . . . . . . . . . . . . . . . . 28 | 8.2. New registries . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | |||
| 9.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 29 | 9.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 30 | |||
| 9.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 30 | 9.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 31 | |||
| 9.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 30 | 9.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 32 | |||
| 9.4. End-to End-Security Issues . . . . . . . . . . . . . . . 31 | 9.4. End-to End-Security Issues . . . . . . . . . . . . . . . 32 | |||
| 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 32 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 32 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 34 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 32 | 11.2. Informative References . . . . . . . . . . . . . . . . . 34 | |||
| Appendix A. Issues left for future specifications . . . . . . . 33 | Appendix A. Issues left for future specifications . . . . . . . 34 | |||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 33 | A.1. Additional traffic abatement algorithms . . . . . . . . . 35 | |||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 33 | A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 35 | |||
| A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 33 | A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 35 | |||
| Appendix B. Deployment Considerations . . . . . . . . . . . . . 34 | Appendix B. Deployment Considerations . . . . . . . . . . . . . 35 | |||
| Appendix C. Requirements Conformance Analysis . . . . . . . . . 34 | Appendix C. Requirements Conformance Analysis . . . . . . . . . 35 | |||
| C.1. Deferred Requirements . . . . . . . . . . . . . . . . . . 36 | ||||
| C.2. Detection of non-supporting Intermediaries . . . . . . . 36 | ||||
| C.3. Implicit Application Indication . . . . . . . . . . . . . 36 | ||||
| C.4. Stateless Operation . . . . . . . . . . . . . . . . . . . 37 | ||||
| C.5. No New Vulnerabilities . . . . . . . . . . . . . . . . . 37 | ||||
| C.6. Detailed Requirements . . . . . . . . . . . . . . . . . . 37 | ||||
| C.6.1. General . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
| C.6.2. Performance . . . . . . . . . . . . . . . . . . . . . 39 | ||||
| C.6.3. Heterogeneous Support for Solution . . . . . . . . . 41 | ||||
| C.6.4. Granular Control . . . . . . . . . . . . . . . . . . 43 | ||||
| C.6.5. Priority and Policy . . . . . . . . . . . . . . . . . 43 | ||||
| C.6.6. Security . . . . . . . . . . . . . . . . . . . . . . 44 | ||||
| C.6.7. Flexibility and Extensibility . . . . . . . . . . . . 45 | ||||
| Appendix D. Considerations for Applications Integrating the DOIC | Appendix D. Considerations for Applications Integrating the DOIC | |||
| Solution . . . . . . . . . . . . . . . . . . . . . . 34 | Solution . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| D.1. Application Classification . . . . . . . . . . . . . . . 34 | D.1. Application Classification . . . . . . . . . . . . . . . 47 | |||
| D.2. Application Type Overload Implications . . . . . . . . . 35 | D.2. Application Type Overload Implications . . . . . . . . . 48 | |||
| D.3. Request Transaction Classification . . . . . . . . . . . 36 | D.3. Request Transaction Classification . . . . . . . . . . . 49 | |||
| D.4. Request Type Overload Implications . . . . . . . . . . . 37 | D.4. Request Type Overload Implications . . . . . . . . . . . 50 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 1. Introduction | 1. Introduction | |||
| This specification defines a base solution for Diameter Overload | This specification defines a base solution for Diameter overload | |||
| Control (DOC), referred to as Diameter Overload Indication Conveyance | control, referred to as Diameter Overload Indication Conveyance | |||
| (DOIC). The requirements for the solution are described and | (DOIC), based on the requirements identified in [RFC7068]. | |||
| discussed in the corresponding design requirements document | ||||
| [RFC7068]. Note that the overload control solution defined in this | ||||
| specification does not address all the requirements listed in | ||||
| [RFC7068]. A number of overload control related features are left | ||||
| for the future specifications. See Appendix A for a list of | ||||
| extensions that are currently being considered. See Appendix C for | ||||
| an analysis of the conformance to the requirements specified in | ||||
| [RFC7068]. | ||||
| The solution defined in this specification addresses Diameter | This specification addresses Diameter overload control between | |||
| overload control between Diameter nodes that support the DOIC | Diameter nodes that support the DOIC solution. The solution, which | |||
| solution. Furthermore, the solution which is designed to apply to | is designed to apply to existing and future Diameter applications, | |||
| existing and future Diameter applications, requires no changes to the | requires no changes to the Diameter base protocol [RFC6733] and is | |||
| Diameter base protocol [RFC6733] and is deployable in environments | deployable in environments where some Diameter nodes do not implement | |||
| where some Diameter nodes do not implement the Diameter overload | the Diameter overload control solution defined in this specification. | |||
| control solution defined in this specification. | ||||
| Note that the overload control solution defined in this specification | ||||
| does not address all the requirements listed in [RFC7068]. A number | ||||
| of overload control related features are left for future | ||||
| specifications. See Appendix A for a list of extensions that are | ||||
| currently being considered. See Appendix C for an analysis of | ||||
| conformance to the requirements specified in [RFC7068]. | ||||
| 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 mechanism requested by reporting nodes and used by reacting | A mechanism requested by reporting nodes and used by reacting | |||
| nodes to reduce the amount of traffic sent during an occurrence of | nodes to reduce the amount of traffic sent during an occurrence of | |||
| overload control. | overload control. | |||
| Diversion | Diversion | |||
| Abatement of traffic sent to a reporting node by a reacting node | A mechanism used for overload abatement by selecting a different | |||
| in response to receipt of an overload report. The abatement is | path for requests. | |||
| achieved by diverting traffic from the reporting node to another | ||||
| Diameter node that is able to process the request. | ||||
| Host-Routed Request | Host-Routed Requests | |||
| The set of requests that a reacting node knows will be served by a | Requests that a reacting node knows will be served by a particular | |||
| particular host, either due to the presence of a Destination-Host | host, either due to the presence of a Destination-Host AVP, or by | |||
| AVP, or by some other local knowledge on the part of the reacting | some other local knowledge on the part of the reacting node. | |||
| node. | ||||
| Overload Control State (OCS) | Overload Control State (OCS) | |||
| Reporting and reacting node internally maintained state describing | Reporting and reacting node internally maintained state describing | |||
| occurrences of overload control. | occurrences of overload control. | |||
| Overload Report (OLR) | Overload Report (OLR) | |||
| Information sent by a reporting node indicating the start, | Overload control information for a particular overload occurrence | |||
| continuation or end of an occurrence of overload control. | sent by a reporting node. | |||
| Reacting Node | Reacting Node | |||
| A Diameter node that acts upon an overload report. | A Diameter node that acts upon an overload report. | |||
| Realm-Routed Request | Realm-Routed Requests | |||
| Requests that a reacting node does not know the host that will | ||||
| The set of requests that a reacting node does not know the host | service the request. | |||
| that will 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 | |||
| Throttling is the reduction of the number of requests sent to an | A mechanism for overload abatement that limits the number of | |||
| entity. Throttling can include a Diameter Client or Diameter | requests sent by the DIOC reacting node. Throttling can include a | |||
| Server dropping requests, or a Diameter Agent rejecting requests | Diameter Client not sending requests, or a Diameter Agent or | |||
| with appropriate error responses. In extreme cases reporting | Server rejecting requests with appropriate error responses. In | |||
| nodes can also throttle requests when the requested reductions in | both cases the result of the throttling is a permanent rejection | |||
| traffic does not sufficiently address the overload scenario. | of the transaction. | |||
| 3. Solution Overview | 3. Solution Overview | |||
| The Diameter Overload Information Conveyance (DOIC) solution allows | The Diameter Overload Information Conveyance (DOIC) solution allows | |||
| Diameter nodes to request other nodes to perform overload abatement | Diameter nodes to request other Diameter nodes to perform overload | |||
| 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 clients, servers, and | Diameter node can act as a DOIC node, including Diameter Clients, | |||
| agents. DOIC nodes are further divided into "Reporting Nodes" and | Diameter Servers, and Diameter Agents. DOIC nodes are further | |||
| "Reacting Nodes." A reporting node requests overload abatement by | divided into "Reporting Nodes" and "Reacting Nodes." A reporting | |||
| sending an Overload Report (OLR) to one or more reacting nodes. | node requests overload abatement by sending Overload Reports (OLR). | |||
| A reacting node acts upon OLRs, and performs whatever actions are | A reacting node acts upon OLRs, and performs whatever actions are | |||
| needed to fulfil the abatement requests included in the OLRs. A | needed to fulfill the abatement requests included in the OLRs. A | |||
| Reporting node may report overload on its own behalf, or on behalf of | Reporting node may report overload on its own behalf, or on behalf of | |||
| other (typically upstream) nodes. Likewise, a reacting node may | other nodes. Likewise, a reacting node may perform overload | |||
| perform overload abatement on its own behalf, or on behalf of other | abatement on its own behalf, or on behalf of other nodes. | |||
| (typically downstream) nodes. | ||||
| A node's role as a DOIC node is independent of its Diameter role. | A Diameter node's role as a DOIC node is independent of its Diameter | |||
| For example, Diameter Relay and Proxy Agents may act as DOIC nodes, | role. For example, Diameter Agents may act as DOIC nodes, even | |||
| even though they are not endpoints in the Diameter sense. Since | though they are not endpoints in the Diameter sense. Since Diameter | |||
| Diameter enables bi-directional applications, where Diameter Servers | enables bi-directional applications, where Diameter Servers can send | |||
| can send requests towards Diameter Clients, a given Diameter node can | requests towards Diameter Clients, a given Diameter node can | |||
| simultaneously act as a reporting node and a reacting node. | simultaneously act as both a reporting node and a reacting node. | |||
| Likewise, a relay or proxy agent may act as a reacting node from the | Likewise, a Diameter Agent may act as a reacting node from the | |||
| perspective of upstream nodes, and a reporting node from the | perspective of upstream nodes, and a reporting node from the | |||
| perspective of downstream nodes. | perspective of downstream nodes. | |||
| DOIC nodes do not generate new messages to carry DOIC related | DOIC nodes do not generate new messages to carry DOIC related | |||
| information. Rather, they "piggyback" DOIC information over existing | information. Rather, they "piggyback" DOIC information over existing | |||
| Diameter messages by inserting new AVPs into existing Diameter | Diameter messages by inserting new AVPs into existing Diameter | |||
| requests and responses. Nodes indicate support for DOIC, and any | requests and responses. Nodes indicate support for DOIC, and any | |||
| needed DOIC parameters by inserting an OC_Supported_Features AVP | needed DOIC parameters, by inserting an OC-Supported-Features AVP | |||
| (Section 6.2) into existing requests and responses. Reporting nodes | (Section 6.2) into existing requests and responses. Reporting nodes | |||
| send OLRs by inserting OC-OLR AVPs (Section 6.3). | send OLRs by inserting OC-OLR AVPs (Section 6.3). | |||
| A given OLR applies to the Diameter realm and application of the | A given OLR applies to the Diameter realm and application of the | |||
| Diameter message that carries it. If a reporting node supports more | Diameter message that carries it. If a reporting node supports more | |||
| than one realm and/or application, it reports independently for each | than one realm and/or application, it reports independently for each | |||
| combination of realm and application. Similarly, the OC-Supported- | combination of realm and application. Similarly, the OC-Supported- | |||
| Features AVP applies to the realm and application of the enclosing | Features AVP applies to the realm and application of the enclosing | |||
| message. This implies that a node may support DOIC for one | message. This implies that a node may support DOIC for one | |||
| application and/or realm, but not another, and may indicate different | application and/or realm, but not another, and may indicate different | |||
| DOIC parameters for each application and realm for which it supports | DOIC parameters for each application and realm for which it supports | |||
| DOIC. | DOIC. | |||
| Reacting nodes perform overload abatement according to an agreed-upon | Reacting nodes perform overload abatement according to an agreed-upon | |||
| abatement algorithm. An abatement algorithm defines the meaning of | abatement algorithm. An abatement algorithm defines the meaning of | |||
| the parameters of an OLR and the procedures required for overload | some of the parameters of an OLR and the procedures required for | |||
| abatement. This document specifies a single must-support algorithm, | overload abatement. An overload abatement algorithm separates | |||
| namely the "loss" algorithm (Section 5). Future specifications may | Diameter requests into two sets. The first set contains the requests | |||
| introduce new algorithms. | that are to undergo overload abatement treatment of either throttling | |||
| or diversion. The second set contains the requests that are to be | ||||
| given normal routing treatment. This document specifies a single | ||||
| must-support algorithm, namely the "loss" algorithm (Section 5). | ||||
| Future specifications may introduce new algorithms. | ||||
| Overload conditions may vary in scope. For example, a single | Overload conditions may vary in scope. For example, a single | |||
| Diameter node may be overloaded, in which case reacting nodes may | Diameter node may be overloaded, in which case reacting nodes may | |||
| reasonably attempt to send requests to other destinations or via | attempt to send requests to other destinations. On the other hand, | |||
| other agents. On the other hand, an entire Diameter realm may be | an entire Diameter realm may be overloaded, in which case such | |||
| overloaded, in which case such attempts would do harm. DOIC OLRs | attempts would do harm. DOIC OLRs have a concept of "report type" | |||
| have a concept of "report type" (Section 6.6), where the type defines | (Section 6.6), where the type defines such behaviors. Report types | |||
| such behaviors. Report types are extensible. This document defines | are extensible. This document defines report types for overload of a | |||
| report types for overload of a specific server, and for overload of | specific host, and for overload of an entire realm. | |||
| an entire realm. | ||||
| A report of type host is sent to indicate the overload of a specific | A report of type "HOST_REPORT" is sent to indicate the overload of a | |||
| server for the application-id indicated in the transaction. When | specific host, identified by the Origin-Host AVP of the message | |||
| receiving an OLR of type host, a reacting node applies overload | containing the OLR, for the application-id indicated in the | |||
| abatement to what is referred to in this document as host-routed | transaction. When receiving an OLR of type "HOST_REPORT", a reacting | |||
| requests. This is the set of requests that the reacting node knows | node applies overload abatement treatment to the host-routed requests | |||
| will be served by a particular host, either due to the presence of a | identified by the overload abatement algorithm (see definition in | |||
| Destination-Host AVP, or by some other local knowledge on the part of | Section 2) sent for this application to the overloaded host. | |||
| the reacting node. The reacting node applies overload abatement on | ||||
| those host-routed requests which the reacting node knows will be | ||||
| served by the server that matches the Origin-Host AVP of the received | ||||
| message that contained the received OLR of type host. | ||||
| A report type of realm is sent to indicate the overload of all | A report of type "REALM_REPORT" is sent to indicate the overload of a | |||
| servers in a realm for the application-id. When receiving an OLR of | realm for the application-id indicated in the transaction. The | |||
| type realm, a reacting node applies overload abatement to what is | overloaded realm is identified by the Destination-Realm AVP of the | |||
| referred to in this document as realm-routed requests. This is the | message containing the OLR. When receiving an OLR of type | |||
| set of requests that are not host-routed as defined in the previous | "REALM_REPORT", a reacting node applies overload abatement treatment | |||
| paragraph. | to realm-routed requests identified by the overload abatement | |||
| algorithm (see definition in Section 2) sent for this application to | ||||
| the overloaded realm. | ||||
| While a reporting node sends OLRs to "adjacent" reacting nodes, nodes | While a reporting node sends OLRs to "adjacent" reacting nodes, nodes | |||
| that are "adjacent" for DOIC purposes may not be adjacent from a | that are "adjacent" for DOIC purposes may not be adjacent from a | |||
| Diameter, or transport, perspective. For example, one or more | Diameter, or transport, perspective. For example, one or more | |||
| Diameter agents that do not support DOIC may exist between a given | Diameter agents that do not support DOIC may exist between a given | |||
| pair of reporting and reacting nodes, as long as those agents pass | pair of reporting and reacting nodes, as long as those agents pass | |||
| unknown AVPs through unchanged. The report types described in this | unknown AVPs through unchanged. The report types described in this | |||
| document can safely pass through non-supporting agents. This may not | document can safely pass through non-supporting agents. This may not | |||
| be true for report types defined in future specifications. Documents | be true for report types defined in future specifications. | |||
| that introduce new report types MUST describe any limitations on | ||||
| their use across non-supporting agents. | ||||
| 3.1. Piggybacking Principle | 3.1. Piggybacking | |||
| The overload control AVPs defined in this specification have been | There is no new Diameter application defined to carry overload | |||
| designed to be piggybacked on top of existing application messages. | related AVPs. The overload control AVPs defined in this | |||
| This is made possible by adding overload control top-level AVPs, the | specification have been designed to be piggybacked on top of existing | |||
| OC-OLR AVP and the OC-Supported-Features AVP, as optional AVPs into | application messages. This is made possible by adding overload | |||
| existing commands when the corresponding Command Code Format (CCF) | control AVPs, the OC-OLR AVP and the OC-Supported-Features AVP, as | |||
| specification allows adding new optional AVPs (see Section 1.3.4 of | optional AVPs into existing commands when the corresponding Command | |||
| [RFC6733]). | Code Format (CCF) specification allows adding new optional AVPs (see | |||
| Section 1.3.4 of [RFC6733]). | ||||
| Reacting nodes indicate support for DOIC by including the OC- | Reacting nodes indicate support for DOIC by including the OC- | |||
| Supported-Features AVP in all request messages originated or relayed | Supported-Features AVP in all request messages originated or relayed | |||
| by the reacting node. | by the reacting node. | |||
| Reporting nodes indicate support for DOIC by including the OC- | Reporting nodes indicate support for DOIC by including the OC- | |||
| Supported-Features AVP in all answer messages originated or relayed | Supported-Features AVP in all answer messages originated or relayed | |||
| by the reporting node. Reporting nodes also include overload reports | by the reporting node that are in response to a request that | |||
| using the OC-OLR AVP in answer messages. | contained the OC-Supported-Features AVP. Reporting nodes also | |||
| include overload reports using the OC-OLR AVP in answer messages. | ||||
| Note: There is no new Diameter application defined to carry | ||||
| overload related AVPs. The DOIC AVPs are carried in existing | ||||
| Diameter application messages. | ||||
| Note that the overload control solution does not have fixed server | Note that the overload control solution does not have fixed server | |||
| and client roles. The DOIC node role is determined based on the | and client roles. The DOIC node role is determined based on the | |||
| message type: whether the message is a request (i.e. sent by a | message type: whether the message is a request (i.e. sent by a | |||
| "reacting node") or an answer (i.e. send by a "reporting node"). | "reacting node") or an answer (i.e. send by a "reporting node"). | |||
| Therefore, in a typical "client-server" deployment, the Diameter | Therefore, in a typical "client-server" deployment, the Diameter | |||
| Client MAY report its overload condition to the Diameter Server for | Client MAY report its overload condition to the Diameter Server for | |||
| any Diameter Server initiated message exchange. An example of such | any Diameter Server initiated message exchange. An example of such | |||
| is the Diameter Server requesting a re-authentication from a Diameter | is the Diameter Server requesting a re-authentication from a Diameter | |||
| Client. | Client. | |||
| 3.2. DOIC Capability Announcement | 3.2. DOIC Capability Announcement | |||
| The DOIC solution supports the ability for Diameter nodes to | The DOIC solution supports the ability for Diameter nodes to | |||
| determine if other nodes in the path of a request support the | determine if other nodes in the path of a request support the | |||
| solution. This capability is referred to as DOIC Capability | solution. This capability is referred to as DOIC Capability | |||
| Announcement (DCA) and is separate from Diameter Capability Exchange. | Announcement (DCA) and is separate from Diameter Capability Exchange. | |||
| The DCA solution uses the OC-Supported-Features AVPs to indicate the | The DCA mechanism uses the OC-Supported-Features AVPs to indicate the | |||
| Diameter overload features supported. | Diameter overload features supported. | |||
| The first node in the path of a Diameter request that supports the | The first node in the path of a Diameter request that supports the | |||
| DOIC solution inserts the OC-Supported-Feature AVP in the request | DOIC solution inserts the OC-Supported-Features AVP in the request | |||
| message. This includes an indication that it supports the loss | message. | |||
| overload abatement algorithm defined in this specification (see | ||||
| Section 5). This ensures that there is at least one commonly | ||||
| supported overload abatement algorithm between the reporting node and | ||||
| the reacting nodes in the path of the request. | ||||
| DOIC must support deployments where Diameter Clients and/or | Note: As discussed elsewhere in the document, agents in the path | |||
| Diameter Servers do not support the DOIC solution. In this | of the request can modify the OC-Supported-Features AVP. | |||
| scenario, it is assumed that Diameter Agents that support the DOIC | ||||
| solution will handle overload abatement for the non supporting | ||||
| Diameter nodes. In this case the DOIC agent will insert the OC- | ||||
| Supporting-Features AVP in requests that do not already contain | ||||
| one, telling the reporting node that there is a DOIC node that | ||||
| will handle overload abatement. | ||||
| The reporting node inserts the OC-Supported-Feature AVP in all answer | Note: The DOIC solution must support deployments where Diameter | |||
| messages to requests that contained the OC-Supported-Feature AVP. | Clients and/or Diameter Servers do not support the DOIC solution. | |||
| The contents of the reporting node's OC-Supported-Feature AVP | In this scenario, Diameter Agents that support the DOIC solution | |||
| indicate the set of Diameter overload features supported by the | may handle overload abatement for the non supporting Diameter | |||
| reporting node with one exception. | nodes. In this case the DOIC agent will insert the OC-Supported- | |||
| Features AVP in requests that do not already contain one, telling | ||||
| the reporting node that there is a DOIC node that will handle | ||||
| overload abatement. For transactions where there was an OC- | ||||
| Supporting-Features AVP in the request, the agent will insert the | ||||
| OC-Supported-Features AVP in answers, telling the reacting node | ||||
| that there is a reporting node. | ||||
| The reporting node only includes an indication of support for one | The OC-Feature-Vector AVP will contain an indication of support for | |||
| overload abatement algorithm. This is the algorithm that the | the loss overload abatement algorithm defined in this specification | |||
| reporting node intends to use should it enter an overload condition | (see Section 5). This ensures that there is at least one commonly | |||
| or requests to use while it actually is in an overload condition. | supported overload abatement algorithm between the reporting node and | |||
| the reacting node(s) in the path of the request. | ||||
| The reporting node inserts the OC-Supported-Features AVP in all | ||||
| answer messages to requests that contained the OC-Supported-Features | ||||
| AVP. The contents of the reporting node's OC-Supported-Features AVP | ||||
| indicate the set of Diameter overload features supported by the | ||||
| reporting node. This specification defines one exception - the | ||||
| reporting node only includes an indication of support for one | ||||
| overload abatement algorithm, independent of the number of overload | ||||
| abatement algorithms actually supported by the reacting node. The | ||||
| overload abatement algorithm indicated is the algorithm that the | ||||
| reporting node intends to use should it enter an overload condition. | ||||
| Reacting nodes can use the indicated overload abatement algorithm to | Reacting nodes can use the indicated overload abatement algorithm to | |||
| prepare for possible overload reports and must use the indicated | prepare for possible overload reports and must use the indicated | |||
| overload abatement algorithm if traffic reduction is actually | overload abatement algorithm if traffic reduction is actually | |||
| 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 to ensure that overload reports can be | nodes to maintain state in advance of receiving an overload report | |||
| properly handled. | to ensure that the overload reports can be properly handled. | |||
| Reporting nodes are allowed to 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 individual features supported by the DOIC nodes are indicated in | The individual features supported by the DOIC nodes are indicated in | |||
| the OC-Feature-Vector AVP. Any semantics associated with the | the OC-Feature-Vector AVP. Any semantics associated with the | |||
| features will be defined in extension specifications that introduce | features will be defined in extension specifications that introduce | |||
| the features. | the features. | |||
| The DCA mechanism must also support 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 updates the OC- | path of a request differ. In this case, the agent updates the OC- | |||
| Supported-Feature 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. | |||
| The logic to determine the content of the modified OC-Supported- | Note: The logic to determine the content of the modified OC- | |||
| Feature AVP is out-of-scope for this specification and is left to | Supported-Features AVP is out-of-scope for this specification and | |||
| implementation decisions. Care must be taken not to introduce | is left to implementation decisions. Care must be taken not to | |||
| interoperability issues for downstream or upstream DOIC nodes. | introduce interoperability issues for downstream or upstream DOIC | |||
| nodes. | ||||
| 3.3. DOIC Overload Condition Reporting | 3.3. DOIC Overload Condition Reporting | |||
| As with DOIC Capability Announcement, Overload Condition Reporting | As with DOIC capability announcement, overload condition reporting | |||
| uses new AVPs (Section 6.3) to indicate an overload condition. | uses new AVPs (Section 6.3) to indicate an overload condition. | |||
| The OC-OLR AVP is referred to as an overload report. The OC-OLR AVP | The OC-OLR AVP is referred to as an overload report. The OC-OLR AVP | |||
| includes the type of report, a sequence number, the length of time | includes the type of report, a sequence number, the length of time | |||
| that the report is valid and abatement algorithm specific AVPs. | that the report is valid and abatement algorithm specific AVPs. | |||
| Two types of overload reports are defined in this document, host | Two types of overload reports are defined in this document, host | |||
| reports and realm reports. | reports and realm reports. | |||
| A report of type host is sent to indicate the overload of a specific | A report of type "HOST_REPORT" is sent to indicate the overload of a | |||
| Diameter node for the application-id indicated in the transaction. | specific Diameter node for the application-id indicated in the | |||
| When receiving an OLR of type host, a reacting node applies overload | transaction. When receiving an OLR of type host, a reacting node | |||
| abatement to what is referred to in this document as host-routed | applies overload abatement to what is referred to in this document as | |||
| requests. This is the set of requests that the reacting node knows | host-routed requests. The reacting node applies overload abatement | |||
| will be served by a particular host, either due to the presence of a | on those host-routed requests which the reacting node knows will be | |||
| Destination-Host AVP, or by some other local knowledge on the part of | ||||
| the reacting node. The reacting node applies overload abatement on | ||||
| those host-routed requests which the reacting node knows will be | ||||
| served by the server that matches the Origin-Host AVP of the received | served by the server that matches the Origin-Host AVP of the received | |||
| message that contained the received OLR of type host. | message that contained the received OLR of type host. | |||
| Realm reports apply to realm-routed requests for a specific realm as | A report of type "REALM_REPORT" applies to realm-routed requests for | |||
| indicated in the Destination-Realm AVP. | a specific realm as indicated in the Destination-Realm AVP. | |||
| This document assumes that there is a single source for realm-reports | ||||
| for a given realm, or that if multiple nodes can send realm reports, | ||||
| that each such node has full knowledge of the overload state of the | ||||
| entire realm. A reacting node cannot distinguish between receiving | ||||
| realm-reports from a single node, or from multiple nodes. | ||||
| Note: Known issues exist if multiple sources for overload reports | ||||
| which apply to the same Diameter entity exist. Reacting nodes | ||||
| have no way of determining the source and, as such, will treat | ||||
| them as coming from a single source. Variance in sequence numbers | ||||
| between the two sources can then cause incorrect overload | ||||
| abatement treatment to be applied for indeterminate periods of | ||||
| 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 depend on the type of overload report | |||
| being generated. A host report, for instance, will generally be | being generated. A host-report, for instance, will generally be | |||
| generated by tracking utilization of resources required by the host | generated by tracking utilization of resources required by the host | |||
| to handle transactions for the Diameter application. A realm report | to handle transactions for the Diameter application. A realm-report | |||
| will generally impact the traffic sent to multiple hosts and, as | generally impacts the traffic sent to multiple hosts and, as such, | |||
| such, will typically require tracking the capacity of the servers | requires tracking the capacity all servers for realm-routed requests | |||
| able to handle realm-routed requests for the application. | for the 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, are responsible | Reacting nodes, upon receipt of an overload report, are responsible | |||
| for applying the abatement algorithm to traffic impacted by the | for applying the overload abatement algorithm to traffic impacted by | |||
| overload report. The method used for that abatement is dependent on | the overload report. The method used to determine the requests that | |||
| the abatement algorithm. The loss abatement algorithm is defined in | are to receive overload abatement treatment is dependent on the | |||
| this document (Section 5). Other abatement algorithms can be defined | abatement algorithm. The loss abatement algorithm is defined in this | |||
| in extensions to the DOIC solutions. | document (Section 5). Other abatement algorithms can be defined in | |||
| extensions to the DOIC solutions. | ||||
| Two types of overload abatement treatment are defined, diversion and | ||||
| throttling. Reacting nodes are responsible for determining which | ||||
| 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 | |||
| ended and use of the abatement algorithm is no longer needed. | ended and need for use of the abatement algorithm to reduce traffic | |||
| sent is no longer needed. | ||||
| The reacting node also determines when the overload report expires | The reacting node also determines when the overload report expires | |||
| based on the OC-Validity-Duration AVP in the overload report and | based on the OC-Validity-Duration AVP in the overload report and | |||
| stops applying the abatement algorithm when the report expires. | stops applying the abatement algorithm when the report expires. | |||
| 3.4. DOIC Extensibility | 3.4. DOIC Extensibility | |||
| The DOIC solution is designed to be extensible. This extensibility | The DOIC solution is designed to be extensible. This extensibility | |||
| is based on existing Diameter based extensibility mechanisms. | is based on existing Diameter based extensibility mechanisms, along | |||
| with the DOIC capability announcement mechanism. | ||||
| There are multiple categories of extensions that are expected. This | There are multiple categories of extensions that are expected. This | |||
| includes the definition of new overload abatement algorithms, the | includes the definition of new overload abatement algorithms, the | |||
| definition of new report types and new definitions of the scope 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. | |||
| The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes | The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes | |||
| to communicate supported features. The specific features supported | to communicate supported features. The specific features supported | |||
| by the DOIC node are indicated in the OC-Feature-Vector AVP. DOIC | by the DOIC node are indicated in the OC-Feature-Vector AVP. DOIC | |||
| extensions must define new values for the OC-Feature-Vector AVP. | extensions that require new normative behavior define new values for | |||
| the OC-Feature-Vector AVP. DOIC extensions also have the ability to | ||||
| DOIC extensions also have the ability to add new AVPs to the OC- | add new AVPs to the OC-Supported-Features AVP, if additional | |||
| Supported-Features AVP, if additional information about the new | information about the new feature is required. | |||
| feature is required. | ||||
| Reporting nodes use the OC-OLR AVP to communicate overload | Reporting nodes use the OC-OLR AVP to communicate overload | |||
| occurrences. This AVP can also be extended to add new AVPs allowing | occurrences. This AVP can also be extended to add new AVPs allowing | |||
| a reporting nodes to communicate additional information about | reporting nodes to communicate additional information about handling | |||
| handling an overload condition. | an overload condition. | |||
| If necessary, new extensions can also define new top-level AVPs. It | If necessary, new extensions can also define new AVPs that are not | |||
| is, however, recommended that DOIC extensions use the OC-Supported- | part of the OC-Supported-Features and OC-OLR group AVPs. It is, | |||
| Features and OC-OLR to carry all DOIC related AVPs. | however, recommended that DOIC extensions use the OC-Supported- | |||
| Features AVP and OC-OLR AVP to carry all DOIC related AVPs. | ||||
| 3.5. Simplified Example Architecture | 3.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) : | |||
| skipping to change at page 11, line 42 ¶ | skipping to change at page 12, line 29 ¶ | |||
| |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) <----------------------> <----------------------> | |||
| standard base protocol standard base protocol | Diameter Application Y Diameter Application Y | |||
| Figure 1: Simplified architecture choices for overload indication | Figure 1: Simplified architecture choices for overload indication | |||
| delivery | delivery | |||
| In Figure 1, the Diameter overload indication can be conveyed (1) | In Figure 1, the Diameter overload indication can be conveyed (1) | |||
| end-to-end between servers and clients or (2) between servers and | end-to-end between servers and clients or (2) between servers and | |||
| Diameter agent inside the realm and then between the Diameter agent | Diameter agent inside the realm and then between the Diameter agent | |||
| and the clients. | and the clients. | |||
| 4. Solution Procedures | 4. Solution Procedures | |||
| This section outlines the normative behavior associated with the DOIC | This section outlines the normative behavior for the DOIC solution. | |||
| solution. | ||||
| 4.1. Capability Announcement | 4.1. Capability Announcement | |||
| This section defines DOIC Capability Announcement (DCA) behavior. | This section defines DOIC Capability Announcement (DCA) behavior. | |||
| 4.1.1. Reacting Node Behavior | 4.1.1. Reacting Node Behavior | |||
| A reacting node MUST include the OC-Supported-Features AVP in all | A reacting node MUST include the OC-Supported-Features AVP in all | |||
| request messages. | requests. It MAY include the OC-Feature-Vector AVP. If it does so, | |||
| it MUST indicate support for the "loss" algorithm. If the reacting | ||||
| A reacting node MAY include the OC-Feature-Vector AVP with an | node is configured to support features (including other algorithms) | |||
| indication of the loss algorithm. A reacting node MUST include the | in addition to the loss algorithm, it MUST indicate such support in | |||
| OC-Feature-Vector AVP to indicate support for abatement algorithms in | an OC-Feature-Vector AVP. | |||
| addition to the loss algorithm. | ||||
| A reacting node SHOULD indicate support for all other DOIC features | ||||
| it supports. | ||||
| Not all DOIC features will necessarily apply to all transactions. | ||||
| For instance, there may be a future extension that only applies to | ||||
| session based applications. A reacting node that supports this | ||||
| extension can choose to not include it for non session based | ||||
| applications. | ||||
| 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 based on the features indicated in the OC-Feature-Vector AVP. | action, for example creating state for some stateful abatement | |||
| algorithm, based on the features indicated in the OC-Feature-Vector | ||||
| AVP. | ||||
| Note that the loss abatement algorithm is the only feature | Note: The loss abatement algorithm does not require stateful | |||
| described in this document and it does not require action to be | behavior when there is no active overload report. This behavior | |||
| taken when there is an active overload report. This behavior is | is described in Section 4.2 and Section 5. | |||
| described in Section 4.2 and Section 5. | ||||
| 4.1.2. Reporting Node Behavior | 4.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. | the OC-Supported-Features AVP in the request message. | |||
| If the request message contains an OC-Supported-Features AVP then the | 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. | |||
| The reporting node MUST NOT include the OC-Supported-Features AVP, | A reporting node MUST NOT include the OC-Supported-Features AVP, OC- | |||
| OC-OLR AVP or any other overload control AVPs defined in extension | OLR AVP or any other overload control AVPs defined in extension | |||
| drafts in response messages for transactions where the request | drafts in response messages for transactions where the request | |||
| message does not include the OC-Supported-Features AVP. Lack of the | message does not include the OC-Supported-Features AVP. Lack of the | |||
| OC-Supported-Features AVP in the request message indicates that there | OC-Supported-Features AVP in the request message indicates that there | |||
| is no reacting node for the transaction. | is no reacting node for the transaction. | |||
| Based on the content of the OC-Supported-Features AVP in the request | A reporting node knows what overload control functionality is | |||
| message, the reporting node knows what overload control functionality | supported by the reacting node based on the content of the OC- | |||
| is supported by the reacting node. The reporting node then acts | Feature-Vector AVP in the request message. | |||
| accordingly for the subsequent answer messages it initiates. | ||||
| The reporting node MUST indicate support for one and only one | A reporting node MUST indicate support for one and only one abatement | |||
| abatement algorithm in the OC-Feature-Vector AVP. The abatement | algorithm in the OC-Feature-Vector AVP. The abatement algorithm | |||
| algorithm included MUST be from the set of abatement algorithms | selected MUST indicate the abatement algorithm the reporting node | |||
| contained in the request message's OC-Supported-Features AVP. The | wants the reacting node to use when the reporting node enters an | |||
| abatement algorithm included MUST indicate the abatement algorithm | overload condition. | |||
| the reporting node wants the reacting node to use when the reporting | ||||
| node enters an overload condition. | ||||
| For an ongoing overload state, a reacting node MUST keep the | The abatement algorithm selected MUST be from the set of abatement | |||
| algorithm that was selected by the reporting node in further requests | algorithms contained in the request message's OC-Feature-Vector AVP. | |||
| towards the reporting node. The reporting node SHOULD NOT change the | ||||
| selected algorithm during a period of time that it is in an overload | A reporting node that selects the loss algorithm may do so by | |||
| condition and, as a result, is sending OC-OLR AVPs in answer | including the OC-Feature-Vector AVP with an explicit indication of | |||
| 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 | ||||
| an explicit indication of the selected algorithm. | ||||
| For an ongoing overload condition, a reporting node MUST NOT change | ||||
| the selected algorithm during the period of time that it is in an | ||||
| overload condition and, as a result, is sending OC-OLR AVPs in answer | ||||
| messages. | messages. | |||
| 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. | transaction. | |||
| Note that 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. | |||
| 4.1.3. Agent Behavior | 4.1.3. Agent Behavior | |||
| Diameter agents that support DOIC MUST ensure that all messages have | Diameter Agents that support DOIC SHOULD ensure that all messages | |||
| the OC-Supporting-Features AVP. If a message handled by the DOIC | relayed by the agent contain the OC-Supported-Features AVP. | |||
| agent does not include the OC-Supported-Features AVP then the DOIC | ||||
| agent inserts the AVP. If the message already has the AVP then the | ||||
| agent either leaves it unchanged in the relayed message or modifies | ||||
| it to reflect a mixed set of DOIC features. | ||||
| An agent MAY modify the OC-Supported-Features AVP carried in answer | A Diameter Agent SHOULD take on reacting node behavior for Diameter | |||
| messages. | endpoints that do not support the DOIC solution. A Diameter Agent | |||
| detects that a Diameter endpoint does not support DOIC reacting node | ||||
| behavior when there is no OC-Supported-Features AVP in a request | ||||
| message. | ||||
| For a Diameter Agent to be a reacting node for a non supporting | ||||
| Diameter endpoint, the Diameter Agent MUST include the OC-Supported- | ||||
| Features AVP in request messages it receives that do not contain the | ||||
| OC-Supported-Features AVP. | ||||
| A Diameter Agent SHOULD take on reporting node behavior for Diameter | ||||
| endpoints that do not support the DOIC solution. A Diameter Agent | ||||
| detects that a Diameter endpoint does not support DOIC reporting node | ||||
| behavior when there is no OC-Supported-Features AVP in an answer | ||||
| message for a transaction that contained the OC-Supported-Features | ||||
| AVP in the request message. | ||||
| For a Diameter Agent to take on reporting node behavior for a non | ||||
| supporting Diameter endpoint the Diameter Agent MUST include the OC- | ||||
| Supported-Features AVP in answer messages it receives that do not | ||||
| contain the OC-Supported-Features AVP. | ||||
| As with a Diameter endpoint taking on reporting node behavior, a | ||||
| Diameter Agent MUST only include the OC-Supported-Features AVP in | ||||
| answer messages for transactions where the request message received | ||||
| by the Diameter Agent had an OC-Supported-Features AVP. | ||||
| If a request message already has the OC-Supported-Features AVP then a | ||||
| Diameter Agent MAY leave it unchanged in the relayed message or MAY | ||||
| modify it to reflect the features appropriate for the transaction. | ||||
| For instance, if the agent supports a superset of the features | For instance, if the agent supports a superset of the features | |||
| reported by the reacting node then the agent might choose, based | reported by the reacting node then the agent might choose, based | |||
| on local policy, to advertise that superset of features to the | on local policy, to advertise that superset of features to the | |||
| reporting node. | reporting node. | |||
| If the agent modifies the OC-Supported-Features AVP sent to the | If the Diameter Agent changes the OC-Supported-Features AVP in a | |||
| reporting node then it might also need to modify the OC-Supported- | request message then it is likely it will also need to modify the OC- | |||
| Features AVP sent to a reacting node in the subsequent answer | Supported-Features AVP in the answer message for the transaction. As | |||
| message, as it cannot send an indication of support for features | such, a Diameter Agent MAY modify the OC-Supported-Features AVP | |||
| that are not supported by the reacting node. | carried in answer messages. | |||
| Editor's note: There is an open issue on the wording around agent | When making changes to the OC-Supported-Features AVP the Diameter | |||
| behavior in this case that needs to be resolved prior to finishing | Agent needs to ensure that there is no ambiguity in DOIC behavior for | |||
| this document. | both upstream and downstream DOIC nodes. | |||
| 4.2. Overload Report Processing | 4.2. Overload Report Processing | |||
| 4.2.1. Overload Control State | 4.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. | (OCS) for active overload conditions. The following sections define | |||
| behavior associated with that OCS. | ||||
| 4.2.1.1. Overload Control State for Reacting Nodes | 4.2.1.1. Overload Control State for Reacting Nodes | |||
| A reacting node SHOULD maintain the following OCS per supported | A reacting node SHOULD maintain the following OCS per supported | |||
| Diameter application: | Diameter 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 | |||
| Host-Id. | 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-d and | |||
| and Realm-Id. | realm. | |||
| The host-type and realm-type OCS entries MAY include the following | The host-type and realm-type OCS entries MAY 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 OC-Supported-Features | o Selected Abatement Algorithm (as received in the OC-Supported- | |||
| AVP) | Features AVP) | |||
| o Abatement Algorithm specific input data (as received within the | o Abatement Algorithm specific input data (as received in the OC-OLR | |||
| OC-OLR AVP, for example, OC-Reduction-Percentage for the Loss | AVP, for example, OC-Reduction-Percentage for the Loss abatement | |||
| abatement algorithm) | algorithm) | |||
| 4.2.1.2. Overload Control State for Reporting Nodes | 4.2.1.2. Overload Control State for Reporting Nodes | |||
| A reporting node SHOULD maintain OCS entries per supported Diameter | A reporting node SHOULD maintain 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 pair of Application-Id and | An OCS entry is identified by the tuple of Application-Id, Report- | |||
| Abatement Algorithm. | Type and Abatement Algorithm and MAY include the following | |||
| information (the actual information stored is an implementation | ||||
| The OCS entry for a given pair of Application and Abatement Algorithm | decision): | |||
| MAY include the information (the actual information stored is an | ||||
| implementation decision): | ||||
| o Report type | ||||
| 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) | |||
| 4.2.1.3. Reacting Node Maintenance of Overload Control State | 4.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. | |||
| For the remainder of this section the term OLR referres 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. | |||
| The OLR is for an existing overload condition if the reacting node | When receiving an answer message with multiple OLRs or different | |||
| has an OCS that matches the received OLR. | types, a reporting node MUST process each received OLR. | |||
| For a host report-type this means it matches the app-id and host-id | When receiving an OC-OLR AVPs with unknown values, a reacting node | |||
| in an existing host OCS entry. | SHOULD be silently discarded by reacting nodes and the event SHOULD | |||
| be logged. | ||||
| For a realm report-type this means it matches the app-id and realm-id | The OLR is for an existing overload condition if a reacting node has | |||
| in an existing realm OCS entry. | an OCS that matches the received OLR. | |||
| If the OLR is for an existing overload condition then it MUST | For a host-report this means it matches the application-id and the | |||
| determine if the OLR is a retransmission or an update to the existing | host's DiameterIdentity in an existing host OCS entry. | |||
| OLR. | ||||
| For a realm-report this means it matches the application-id and the | ||||
| realm in an existing realm OCS entry. | ||||
| If the OLR is for an existing overload condition then a reacting node | ||||
| MUST determine if the OLR is a retransmission or an update to the | ||||
| existing OLR. | ||||
| If the sequence number for the received OLR is greater than the | If the sequence number for the received OLR is greater than the | |||
| sequence number stored in the matching OCS entry then the reacting | sequence number stored in the matching OCS entry then a reacting node | |||
| node MUST update the matching OCS entry. | MUST update the matching OCS entry. | |||
| If the sequence number for the received OLR is less than or equal to | If the sequence number for the received OLR is less than or equal to | |||
| the sequence number in the matching OCS entry then the reacting node | the sequence number in the matching OCS entry then a reacting node | |||
| MUST silently ignore the received OLR. The matching OCS MUST NOT be | MUST silently ignore the received OLR. The matching OCS MUST NOT be | |||
| updated in this case. | updated in this case. | |||
| If the received OLR is for a new overload condition then the reacting | If the received OLR is for a new overload condition then a reacting | |||
| node MUST generate a new OCS entry for the overload condition. | node MUST generate a new OCS entry for the overload condition. | |||
| For a host report-type this means it creates on OCS entry with the | For a host-report this means a reacting node creates on OCS entry | |||
| app-id of the application-id in the received message and host-id of | with the application-id in the received message and DiameterIdentity | |||
| the Origin-Host in the received message. | of the Origin-Host in the received message. | |||
| Note: This solution assumes that the Origin-Host AVP in the answer | Note: This solution assumes that the Origin-Host AVP in the answer | |||
| message included by the reporting node is not changed along the | message included by the reporting node is not changed along the | |||
| path to the reacting node. | path to the reacting node. | |||
| For a realm report-type this means it creates on OCS entry with the | For a realm-report this means a reacting node creates on OCS entry | |||
| app-id of the application-id in the received message and realm-id of | with the application-id in the received message and realm of the | |||
| the Origin-Realm in the received message. | Origin-Realm in the received message. | |||
| If the received OLR contains a validity duration of zero ("0") then | If the received OLR contains a validity duration of zero ("0") then a | |||
| the reacting node MUST update the OCS entry as being expired. | reacting node MUST update the OCS entry as being expired. | |||
| Note that it is not necessarily appropriate to delete the OCS | Note: It is not necessarily appropriate to delete the OCS entry, | |||
| entry, as there is recommended behavior that the reacting node | as there is recommended behavior that the reacting node slowly | |||
| slowly returns to full traffic when ending an overload abatement | returns to full traffic when ending an overload abatement period. | |||
| period. | ||||
| The reacting node does not delete an OCS when receiving an answer | The reacting node does not delete an OCS when receiving an answer | |||
| message that does not contain an OC-OLR AVP (i.e. absence of OLR | message that does not contain an OC-OLR AVP (i.e. absence of OLR | |||
| means "no change"). | means "no change"). | |||
| 4.2.1.4. Reporting Node Maintenance of Overload Control State | 4.2.1.4. Reporting Node Maintenance of Overload Control State | |||
| A reporting node SHOULD create a new OCS entry when entering an | A reporting node SHOULD create a new OCS entry when entering an | |||
| overload condition. | overload condition. | |||
| If the reporting node knows through absence of the OC-Supported- | Note: If a reporting node knows through absence of the OC- | |||
| Features AVP in received messages that there are no reacting nodes | Supported-Features AVP in received messages that there are no | |||
| supporting DOIC then the reporting node can choose to not create | reacting nodes supporting DOIC then the reporting node can choose | |||
| OCS entries. | to not create OCS entries. | |||
| When generating a new OCS entry the sequence number MAY be set to any | When generating a new OCS entry the sequence number SHOULD be set to | |||
| value if there is no unexpired overload report for previous overload | zero ("0"). | |||
| conditions sent to any reacting node for the same application and | ||||
| report-type. | ||||
| 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 previously sent by the reporting node. | (unexpired) overload report for the same application and report-type | |||
| This property MUST hold over a reboot of the reporting node. | previously sent by the reporting node. This property MUST hold over | |||
| a reboot of the reporting node. | ||||
| The reporting node MUST update an OCS entry when it needs to adjust | Note: One way of addressing this over a reboot of a reporting node | |||
| the validity duration of the overload condition at reacting nodes. | is to use a time stamp for the first overload condition that | |||
| occurs after the report and to start using sequence numbers of | ||||
| zero for subsequent overload conditions. | ||||
| For instance, if the reporting node wishes to instruct reacting | A reporting node MUST update an OCS entry when it needs to adjust the | |||
| validity duration of the overload condition at reacting nodes. | ||||
| 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 | |||
| that 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 | A reporting node MUST NOT update the abatement algorithm in an active | |||
| OCS entry. | 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 the reduction | any abatement algorithm specific parameters, including the reduction | |||
| percentage used for the Loss abatement algorithm. | percentage used for the Loss abatement algorithm. | |||
| For instance, if the 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. | |||
| The reporting node MUST update the sequence number associated with | A reporting node MUST update the sequence number associated with the | |||
| the OCS entry anytime the contents of the OCS entry are changed. | OCS entry anytime the contents of the OCS entry are changed. This | |||
| This will result in a new sequence number being sent to reacting | will result in a new sequence number being sent to reacting nodes, | |||
| nodes, instructing the reacting nodes to process the OC-OLR AVP. | instructing reacting nodes to process the OC-OLR AVP. | |||
| A reporting node SHOULD update an OCS entry with a validity duration | A reporting node SHOULD update an OCS entry with a validity duration | |||
| of zero ("0") when the overload condition ends. | of zero ("0") when the overload condition ends. | |||
| If the reporting node knows that the OCS entries in the reacting | Note: If a reporting node knows that the OCS entries in the | |||
| nodes are near expiration then the reporting node can decide to | reacting nodes are near expiration then the reporting node might | |||
| delete the OCS entry. | decide not to send an OLR with a validity duration of zero. | |||
| The reporting node MUST keep an OCS entry with a validity duration of | A reporting node MUST keep an OCS entry with a validity duration of | |||
| zero ("0") for a period of time long enough to ensure that any non- | zero ("0") for a period of time long enough to ensure that any non- | |||
| expired reacting node's OCS entry created as a result of the overload | expired reacting node's OCS entry created as a result of the overload | |||
| condition in the reporting node is deleted. | condition in the reporting node is deleted. | |||
| 4.2.2. Reacting Node Behavior | 4.2.2. Reacting Node Behavior | |||
| When a reacting node sends a request it MUST determine if that | When a reacting node sends a request it MUST determine if that | |||
| request matches an active OCS. | request matches an active OCS. | |||
| If the request matches and active OCS then the reacting node MUST | If the request matches an active OCS then the reacting node MUST use | |||
| apply abatement treatment on the request. The abatement treatment | the overload abatement algorithm indicated in the OCS to determine if | |||
| applied depends on the abatement algorithm stored in the OCS. | the request is to receive overload abatement treatment. | |||
| For the Loss abatement algorithm defined in this specification, see | For the Loss abatement algorithm defined in this specification, see | |||
| Section 5 for the abatement logic applied. | Section 5 for the overload abatement algorithm logic applied. | |||
| If the abatement treatment results in throttling of the request and | If the overload abatement algorithm selects the request for overload | |||
| if the reacting node is an agent then the agent MUST send an | abatement treatment then the reacting node MUST apply overload | |||
| appropriate error as defined in section Section 7. | abatement treatment on the request. The abatement treatment applied | |||
| depends on the context of the request. | ||||
| In the case that the OCS entry validity duration expires or has a | If the request is a host-routed request then the reacting node SHOULD | |||
| validity duration of zero ("0"), meaning that it the reporting node | apply throttling abatement treatment to the request. | |||
| has explicitly signaled the end of the overload condition then | ||||
| If the request is a realm-routed request then the reacting node | ||||
| SHOULD apply diversion abatement treatment to the request. | ||||
| If the overload abatement treatment results in throttling of the | ||||
| request and if the reacting node is an agent then the agent MUST send | ||||
| an appropriate error as defined in Section 7. | ||||
| The behavior of reacting nodes that are Diameter endpoints when | ||||
| throttling requests depends on the application and is outside the | ||||
| scope of this specification. | ||||
| In the case that the OCS entry indicated no traffic was to be sent to | ||||
| the overloaded entity and the validity duration expires or has a | ||||
| validity duration of zero ("0"), meaning that the reporting node has | ||||
| explicitly signaled the end of the overload condition then overload | ||||
| abatement associated with the overload abatement MUST be ended in a | abatement associated with the overload abatement MUST be ended in a | |||
| controlled fashion. | controlled fashion. | |||
| 4.2.3. Reporting Node Behavior | 4.2.3. Reporting Node Behavior | |||
| The operation on the reporting node is straight forward. | If there is an active OCS entry then a reporting node SHOULD include | |||
| the OC-OLR AVP in all answer messages to requests that contain the | ||||
| If there is an active OCS entry then the reporting node SHOULD | OC-Supported-Features AVP and that match the active OCS entry. | |||
| include the OC-OLR AVP in all answer messages to requests that | ||||
| contain the OC-Supported-Features AVP and that match the active OCS | ||||
| entry. | ||||
| A request matches if the application-id in the request matches the | Note: A request matches if the application-id in the request | |||
| application-id in any active OCS entry and if the report-type in | matches the application-id in any active OCS entry and if the | |||
| the OCS entry matches a report-type supported by the reporting | report-type in the OCS entry matches a report-type supported by | |||
| node as indicated in the OC-Supported-Features AVP. | the reporting node as indicated in the OC-Supported-Features AVP. | |||
| The contents of the OC-OLR AVP MUST contain all information necessary | The contents of the OC-OLR AVP depend on the selected algorithm. | |||
| for the abatement algorithm indicated in the OC-Supported-Features | ||||
| AVP that is also included in the answer message. | ||||
| A reporting node MAY choose to not resend an overload report to a | A reporting node MAY choose to not resend an overload report to a | |||
| reacting node if it can guarantee that this overload report is | reacting node if it can guarantee that this overload report is | |||
| already active in the reacting node. | already active in the reacting node. | |||
| Note - In some cases (e.g. when there are one or more agents in | Note: In some cases (e.g. when there are one or more agents in the | |||
| the path between reporting and reacting nodes, or when overload | path between reporting and reacting nodes, or when overload | |||
| reports are discarded by reacting nodes) the reporting node may | reports are discarded by reacting nodes) a reporting node may not | |||
| not be able to guarantee that the reacting node has received the | be able to guarantee that the reacting node has received the | |||
| report. | report. | |||
| A reporting node MUST NOT send overload reports of a type that has | A reporting node MUST NOT send overload reports of a type that has | |||
| not been advertised as supported by the reacting node. | not been advertised as supported by the reacting node. | |||
| Note that a reacting node advertises support for the host and | Note: A reacting node implicitly advertises support for the host | |||
| realm report types by including the OC-Supported-Features AVP in | and realm report types by including the OC-Supported-Features AVP | |||
| the request. Support for other report types must be explicitly | in the request. Support for other report types will be explicitly | |||
| indicated by new feature bits in the OC-Feature-Vector AVP. | indicated by new feature bits in the OC-Feature-Vector AVP. | |||
| A reporting node MAY rely on the OC-Validity-Duration AVP values for | A reporting node MAY rely on the OC-Validity-Duration AVP values for | |||
| the implicit overload control state cleanup on the reacting node. | the implicit overload control state cleanup on the reacting node. | |||
| However, it is RECOMMENDED that the reporting node always explicitly | ||||
| indicates the end of a overload condition. | ||||
| The reporting node SHOULD indicate the end of an overload occurrence | A reporting node SHOULD explicitly indicate the end of an overload | |||
| by sending a new OLR with OC-Validity-Duration set to a value of zero | occurrence by sending a new OLR with OC-Validity-Duration set to a | |||
| ("0"). The reporting node SHOULD ensure that all reacting nodes | value of zero ("0"). The reporting node SHOULD ensure that all | |||
| receive the updated overload report. | reacting nodes receive the updated overload report. | |||
| All OLRs sent have an expiration time calculated by adding the | Note: All OLRs sent have an expiration time calculated by adding | |||
| validity-duration contained in the OLR to the time the message was | the validity-duration contained in the OLR to the time the message | |||
| sent. Transit time for the OLR can be safely ignored. The | was sent. Transit time for the OLR can be safely ignored. The | |||
| reporting node can ensure that all reacting nodes have received | reporting node can ensure that all reacting nodes have received | |||
| the OLR by continuing to send it in answer messages until the | the OLR by continuing to send it in answer messages until the | |||
| expiration time for all OLRs sent for that overload condition have | expiration time for all OLRs sent for that overload condition have | |||
| expired. | expired. | |||
| When a reporting node sends an OLR, it effectively delegates any | When a reporting node sends an OLR, it effectively delegates any | |||
| necessary throttling to downstream nodes. Therefore, the reporting | necessary throttling to downstream nodes. If the reporting node also | |||
| node SHOULD NOT apply throttling to the set of messages to which the | locally throttles the same set of messages, the overall number of | |||
| OLR applies. That is, the same candidate set of messages SHOULD NOT | throttled requests may be higher than intended. Therefore, before | |||
| be throttled multiple times. | applying local message throttling, a reporting node needs to check if | |||
| these messages match existing OCS entries, indicating that these | ||||
| messages have survived throttling applied by downstream nodes that | ||||
| have received the related OLR. | ||||
| However, when the reporting node sends and OLR downstream, it MAY | However, even if the set of messages match existing OCS entries, the | |||
| still be responsible to apply other abatement methods such as | reporting node can still apply other abatement methods such as | |||
| diversion. The reporting node might also need to throttle requests | diversion. The reporting node might also need to throttle requests | |||
| for reasons other then overload. For example, an agent or server | for reasons other than overload. For example, an agent or server | |||
| might have a configured rate limit for each client, and throttle | might have a configured rate limit for each client, and throttle | |||
| requests that exceed that limit, even if such requests had already | requests that exceed that limit, even if such requests had already | |||
| been candidates for throttling by downstream nodes. | been candidates for throttling by downstream nodes. The reporting | |||
| node also has the option to send new OLRs requesting greater | ||||
| This document assumes that there is a single source for realm-reports | reductions in traffic, reducing the need for local throttling. | |||
| for a given realm, or that if multiple nodes can send realm reports, | ||||
| that each such node has full knowledge of the overload state of the | ||||
| entire realm. A reacting node cannot distinguish between receiving | ||||
| realm-reports from a single node, or from multiple nodes. | ||||
| Editor's Note: There is not yet consensus on the above two | A reporting node SHOULD decrease requested overload abatement | |||
| paragraphs. Two alternatives are under consideration -- | treatment in a controlled fashion to avoid oscillations in traffic. | |||
| synchronization of sequence numbers and attribution of reports. | ||||
| If no consensus is reached then it will be left to be addressed as | ||||
| an extension. | ||||
| 4.3. Protocol Extensibility | 4.3. Protocol Extensibility | |||
| The overload control solution can be extended, e.g. with new traffic | The DOIC solution can be extended. Types of potential extensions | |||
| abatement algorithms, new report types or other new functionality. | include new traffic abatement algorithms, new report types or other | |||
| new functionality. | ||||
| When defining a new extension a new feature bit MUST be defined for | When defining a new extension that requires new normative behavior, | |||
| the OC-Feature-Vector. This feature bit is used to communicate | the specification MUST define a new feature for the OC-Feature- | |||
| support for the new feature. | Vector. This feature bit is used to communicate support for the new | |||
| feature. | ||||
| The extension MAY define new AVPs for use in DOIC Capability | The extension MAY define new AVPs for use in DOIC Capability | |||
| Announcement and for use in DOIC Overload reporting. These new AVPs | Announcement and for use in DOIC Overload reporting. These new AVPs | |||
| SHOULD be defined to be extensions to the OC-Supported-Features and | SHOULD be defined to be extensions to the OC-Supported-Features and | |||
| OC-OLR AVPs defined in this document. | OC-OLR AVPs defined in this document. | |||
| It should be noted that [RFC6733] defined Grouped AVP extension | [RFC6733] defined Grouped AVP extension mechanisms apply. This | |||
| mechanisms apply. This allows, for example, defining a new feature | allows, for example, defining a new feature that is mandatory to be | |||
| that is mandatory to be understood even when piggybacked on an | understood even when piggybacked on an existing application. | |||
| existing application. | ||||
| The handling of feature bits in the OC-Feature-Vector AVP that are | The handling of feature bits in the OC-Feature-Vector AVP that are | |||
| not associated with overload abatement algorithms MUST be specified | not associated with overload abatement algorithms MUST be specified | |||
| by the extensions that define the features. | by the extensions that define the features. | |||
| 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 specification MUST also reserve a | the OC-OLR AVP handling. The specification MUST also reserve a | |||
| corresponding new feature bit in the OC-Feature-Vector AVP. | corresponding new feature bit in the OC-Feature-Vector AVP. | |||
| The OC-OLR AVP can be expanded with optional sub-AVPs only if a | The OC-OLR AVP can be expanded with optional sub-AVPs only if a | |||
| legacy DOIC implementation can safely ignore them without breaking | legacy DOIC implementation can safely ignore them without breaking | |||
| backward compatibility for the given OC-Report-Type AVP value. If | backward compatibility for the given OC-Report-Type AVP value. If | |||
| the new sub-AVPs imply new semantics for handling the indicated | the new sub-AVPs imply new semantics for handling the indicated | |||
| report type, then a new OC-Report-Type AVP value MUST be defined. | report type, then a new OC-Report-Type AVP value MUST be defined. | |||
| Documents that introduce new report types MUST describe any | ||||
| limitations on their use across non-supporting agents. | ||||
| 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. As | types (in the OC-Report-Type AVP) MUST be registered with IANA. As | |||
| with any Diameter specification, new AVPs MUST also be registered | with any Diameter specification, RFC6733 requires all new AVPs to be | |||
| with IANA. See Section 8 for the required procedures. | registered with IANA. See Section 8 for the required procedures. | |||
| 5. Loss Algorithm | 5. Loss Algorithm | |||
| This section documents the Diameter overload loss abatement | This section documents the Diameter overload loss abatement | |||
| algorithm. | algorithm. | |||
| 5.1. Overview | 5.1. Overview | |||
| The DOIC specification supports the ability for multiple overload | The DOIC specification supports the ability for multiple overload | |||
| abatement algorithms to be specified. The abatement algorithm used | abatement algorithms to be specified. The abatement algorithm used | |||
| skipping to change at page 21, line 39 ¶ | skipping to change at page 23, line 15 ¶ | |||
| overload report. | overload report. | |||
| Reporting nodes use a strategy of applying abatement logic to the | Reporting nodes use a strategy of applying abatement logic to the | |||
| requested percentage of request messages sent (or handled in the case | requested percentage of request messages sent (or handled in the case | |||
| of agents) by the reacting node that are impacted by the overload | of agents) by the reacting node that are impacted by the overload | |||
| report. | report. | |||
| From a conceptual level, the logic at the reacting node could be | From a conceptual level, the logic at the reacting node could be | |||
| outlined as follows. | outlined as follows. | |||
| 1. An overload report is received and the associated overload state | 1. An overload report is received and the associated OCS is either | |||
| is either saved or updated (if required) by the reacting node. | saved or updated (if required) by the reacting node. | |||
| 2. A new Diameter request is generated by the application running on | 2. A new Diameter request is generated by the application running on | |||
| the reacting node. | the reacting node. | |||
| 3. The reacting node determines that an active overload report | 3. The reacting node determines that an active overload report | |||
| applies to the request, as indicated by the corresponding OCS | applies to the request, as indicated by the corresponding OCS | |||
| entry. | entry. | |||
| 4. The reacting node determines if abatement should be applied to | 4. The reacting node determines if overload abatement treatment | |||
| the request. One approach that could be taken for each request | should be applied to the request. One approach that could be | |||
| is to select a random number between 1 and 100. If the random | taken for each request is to select a random number between 1 and | |||
| number is less than the indicated reduction percentage then the | 100. If the random number is less than the indicated reduction | |||
| request is given abatement treatment, otherwise the request is | percentage then the request is given abatement treatment, | |||
| given normal routing treatment. | otherwise the request is given normal routing treatment. | |||
| 5.2. Reporting Node Behavior | 5.2. Reporting Node Behavior | |||
| The method a reporting nodes uses to determine the amount of traffic | The method a reporting node uses to determine the amount of traffic | |||
| reduction required to address an overload condition is an | reduction required to address an overload condition is an | |||
| implementation decision. | implementation decision. | |||
| When a reporting node that has selected the loss abatement algorithm | When a reporting node that has selected the loss abatement algorithm | |||
| determines the need to request a traffic reduction it includes an OC- | determines the need to request a reduction in traffic, it includes an | |||
| OLR AVP in response messages as described in Section 4.2.3. | OC-OLR AVP in response messages as described in Section 4.2.3. | |||
| The reporting node MUST indicate a percentage reduction in the OC- | When sending the OC-OLR AVP, the reporting node MUST indicate a | |||
| Reduction-Percentage AVP. | percentage reduction in the OC-Reduction-Percentage AVP. | |||
| The reporting node MAY change the reduction percentage in subsequent | The reporting node MAY change the reduction percentage in subsequent | |||
| overload reports. When doing so the reporting node must conform to | overload reports. When doing so the reporting node must conform to | |||
| overload report handing specified in Section 4.2.3. | overload report handing specified in Section 4.2.3. | |||
| When the reporting node determines it no longer needs a reduction in | ||||
| traffic the reporting node SHOULD send an overload report indicating | ||||
| the overload report is no longer valid, as specified in | ||||
| Section 4.2.3. | ||||
| 5.3. Reacting Node Behavior | 5.3. Reacting Node Behavior | |||
| The method a reacting node uses to determine which request messages | The method a reacting node uses to determine which request messages | |||
| are given abatement treatment is an implementation decision. | are given abatement treatment is an implementation decision. | |||
| When receiving an OC-OLR in an answer message where the algorithm | When receiving an OC-OLR in an answer message where the algorithm | |||
| 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 load abatement | When applying overload abatement treatment for the load abatement | |||
| algorithm, the reacting node MUST abate, either by throttling or | algorithm, the reacting node MUST abate the requested percentage of | |||
| diversion, the requested percentage of requests that would have | requests that would have otherwise been sent to the reporting host or | |||
| otherwise been sent to the reporting host or realm. | 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 concerns are | result of the overload report timing out, the following concerns are | |||
| RECOMMENDED to be applied. The reacting node sending the traffic | RECOMMENDED to be applied. The reacting node sending the traffic | |||
| should be conservative and, for example, first send "probe" messages | should be conservative and, for example, first send "probe" messages | |||
| to learn the overload condition of the overloaded node before | to learn the overload condition of the overloaded node before | |||
| converging to any traffic amount/rate decided by the sender. Similar | converging to any traffic amount/rate decided by the sender. Similar | |||
| concerns apply in all cases when the overload report times out unless | concerns apply in all cases when the overload report times out unless | |||
| the previous overload report stated 0 percent reduction. | the previous overload report stated 0 percent reduction. | |||
| If the reacting node does not receive an OLR in messages sent to the | If the reacting node does not receive an OLR in messages sent to the | |||
| formerly overloaded node then the reacting node SHOULD slowly | formerly overloaded node then the reacting node SHOULD slowly | |||
| increase the rate of traffic sent to the overloaded node. | increase the rate of traffic sent to the overloaded node. | |||
| It is suggested that the reacting node decrease the amount of traffic | When an active overload report expires, it is suggested that the | |||
| given abatement treatment by 20% each second until the reduction is | reacting node progressively decrease the amount of traffic given | |||
| completely removed and no traffic is given abatement treatment. | abatement treatment, until the reduction is completely removed and no | |||
| traffic is given abatement treatment. | ||||
| 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. | |||
| 6. Attribute Value Pairs | 6. 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 | |||
| skipping to change at page 23, line 39 ¶ | skipping to change at page 25, line 20 ¶ | |||
| A new application specification can incorporate the overload control | A new application specification can incorporate the overload control | |||
| mechanism specified in this document by making it mandatory to | mechanism specified in this document by making it mandatory to | |||
| implement for the application and referencing this specification | implement for the application and referencing this specification | |||
| normatively. It is the responsibility of the Diameter application | normatively. It is the responsibility of the Diameter application | |||
| designers to define how overload control mechanisms works on that | designers to define how overload control mechanisms works on that | |||
| application. | application. | |||
| 6.1. OC-Supported-Features AVP | 6.1. OC-Supported-Features AVP | |||
| The OC-Supported-Features AVP (AVP code TBD1) is type of 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 | |||
| DOIC solution in general. Second, it contains the description of the | DOIC solution in general. Second, it contains the description of the | |||
| supported DOIC features of the sending node. The OC-Supported- | supported DOIC features of the sending node. The OC-Supported- | |||
| Features AVP MUST be included in every Diameter request message a | Features AVP MUST be included in every Diameter request message a | |||
| DOIC supporting node sends. | DOIC supporting node sends. | |||
| OC-Supported-Features ::= < AVP Header: TBD1 > | OC-Supported-Features ::= < AVP Header: TBD1 > | |||
| [ OC-Feature-Vector ] | [ OC-Feature-Vector ] | |||
| * [ AVP ] | * [ AVP ] | |||
| The OC-Feature-Vector sub-AVP is used to announce the DOIC features | The OC-Feature-Vector sub-AVP is used to announce the DOIC features | |||
| supported by the DOIC node, in the form of a flag bits field in which | supported by the DOIC node, in the form of a flag-bits field in which | |||
| each bit announces one feature or capability supported by the node | each bit announces one feature or capability supported by the node | |||
| (see Section 6.2). The absence of the OC-Feature-Vector AVP | (see Section 6.2). The absence of the OC-Feature-Vector AVP | |||
| indicates that only the default traffic abatement algorithm described | indicates that only the default traffic abatement algorithm described | |||
| in this specification is supported. | in this specification is supported. | |||
| 6.2. OC-Feature-Vector AVP | 6.2. OC-Feature-Vector AVP | |||
| The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and | The OC-Feature-Vector AVP (AVP code TBD6) is of type Unsigned64 and | |||
| contains a 64 bit flags field of announced capabilities of a DOIC | contains a 64 bit flags field of announced capabilities of a DOIC | |||
| node. The value of zero (0) is reserved. | node. The value of zero (0) is reserved. | |||
| The OC-Feature-Vector sub-AVP is used to announce the DOIC features | ||||
| supported by the DOIC node, in the form of a flag-bits field in which | ||||
| each bit announces one feature or capability supported by the node | ||||
| (see Section 6.2). The absence of the OC-Feature-Vector AVP | ||||
| indicates that only the default traffic abatement algorithm described | ||||
| in this specification is supported. | ||||
| The following capabilities are defined in this document: | The following capabilities are defined in this document: | |||
| OLR_DEFAULT_ALGO (0x0000000000000001) | OLR_DEFAULT_ALGO (0x0000000000000001) | |||
| When this flag is set by the DOIC node it means that the default | When this flag is set by the a DOIC reacting node it means that | |||
| traffic abatement (loss) algorithm is supported. | the default traffic abatement (loss) algorithm is supported. When | |||
| this flag is set by a DOIC reporting node it means that the loss | ||||
| algorithm will be used for requested overload abatement. | ||||
| 6.3. OC-OLR AVP | 6.3. OC-OLR AVP | |||
| The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the | The OC-OLR AVP (AVP code TBD2) is of type Grouped and contains the | |||
| information necessary to convey an overload report on an overload | information necessary to convey an overload report on an overload | |||
| condition at the reporting node. The OC-OLR AVP does not explicitly | condition at the reporting node. The OC-OLR AVP does not explicitly | |||
| contain all information needed by the reacting node to decide whether | contain all information needed by the reacting node to decide whether | |||
| a subsequent request must undergo a throttling process with the | a subsequent request must undergo abatement using the received | |||
| received reduction percentage. The value of the OC-Report-Type AVP | reduction percentage. The value of the OC-Report-Type AVP within the | |||
| within the OC-OLR AVP indicates which implicit information is | OC-OLR AVP indicates which implicit information is relevant for this | |||
| relevant for this decision (see Section 6.6). The application the | decision (see Section 6.6). The application the OC-OLR AVP applies | |||
| OC-OLR AVP applies to is the same as the Application-Id found in the | to is the same as the Application-Id found in the Diameter message | |||
| Diameter message header. The host or realm the OC-OLR AVP concerns | header. The host or realm the OC-OLR AVP concerns is determined from | |||
| is determined from the Origin-Host AVP and/or Origin-Realm AVP found | the Origin-Host AVP and/or Origin-Realm AVP found in the | |||
| in the encapsulating Diameter command. The OC-OLR AVP is intended to | encapsulating Diameter command. The OC-OLR AVP is intended to be | |||
| be sent only by a reporting node. | sent only by a reporting node. | |||
| OC-OLR ::= < AVP Header: TBD2 > | OC-OLR ::= < AVP Header: TBD2 > | |||
| < OC-Sequence-Number > | < OC-Sequence-Number > | |||
| < OC-Report-Type > | < OC-Report-Type > | |||
| [ OC-Reduction-Percentage ] | [ OC-Reduction-Percentage ] | |||
| [ OC-Validity-Duration ] | [ OC-Validity-Duration ] | |||
| * [ AVP ] | * [ AVP ] | |||
| Note that if a Diameter command were to contain multiple OC-OLR AVPs | ||||
| they all MUST have different OC-Report-Type AVP value. OC-OLR AVPs | ||||
| with unknown values SHOULD be silently discarded by reacting nodes | ||||
| and the event SHOULD be logged. | ||||
| 6.4. OC-Sequence-Number AVP | 6.4. OC-Sequence-Number AVP | |||
| The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64. | The OC-Sequence-Number AVP (AVP code TBD3) is of type Unsigned64. | |||
| Its usage in the context of overload control is described in | Its usage in the context of overload control is described in | |||
| Section 4.2. | Section 4.2. | |||
| From the functionality point of view, the OC-Sequence-Number AVP MUST | From the functionality point of view, the OC-Sequence-Number AVP is | |||
| be used as a non-volatile increasing counter for a sequence of | used as a non-volatile increasing counter for a sequence of overload | |||
| overload reports between two DOIC nodes for the same overload | reports between two DOIC nodes for the same overload occurrence. The | |||
| occurrence. The sequence number is only required to be unique | sequence number is only required to be unique between two DOIC nodes. | |||
| between two DOIC nodes. Sequence numbers are treated in a uni- | Sequence numbers are treated in a uni-directional manner, i.e. two | |||
| directional manner, i.e. two sequence numbers on each direction | sequence numbers on each direction between two DOIC nodes are not | |||
| between two DOIC nodes are not related or correlated. | related or correlated. | |||
| 6.5. OC-Validity-Duration AVP | 6.5. OC-Validity-Duration AVP | |||
| The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32 | The OC-Validity-Duration AVP (AVP code TBD4) is of type Unsigned32 | |||
| and indicates in milliseconds the validity time of the overload | and indicates in milliseconds the validity time of the overload | |||
| report. The number of milliseconds is measured after reception of | report. The number of milliseconds is measured after reception of | |||
| the first OC-OLR AVP with a given value of OC-Sequence-Number AVP. | the first OC-OLR AVP with a given value of OC-Sequence-Number AVP. | |||
| The default value for the OC-Validity-Duration AVP is 5000 (i.e., 5 | The default value for the OC-Validity-Duration AVP is 30000 (i.e.; 30 | |||
| seconds). When the OC-Validity-Duration AVP is not present in the | seconds). When the OC-Validity-Duration AVP is not present in the | |||
| OC-OLR AVP, the default value applies. Validity duration with values | OC-OLR AVP, the default value applies. | |||
| above 86400 (i.e.; 24 hours) MUST NOT be used. Invalid duration | ||||
| values are treated as if the OC-Validity-Duration AVP were not | ||||
| present and result in the default value being used. | ||||
| Editor's note: There is an open discussion on whether to have an | ||||
| upper limit on the OC-Validity-Duration value, beyond that which can | ||||
| be indicated by an Unsigned32. | ||||
| A timeout of the overload report has specific concerns that need to | ||||
| be taken into account by the DOIC node acting on the earlier received | ||||
| overload report(s). Section 6.7 discusses the impacts of timeout in | ||||
| the scope of the traffic abatement algorithms. | ||||
| 6.6. OC-Report-Type AVP | 6.6. OC-Report-Type AVP | |||
| The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated. The | The OC-Report-Type AVP (AVP code TBD5) 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: | |||
| 0 A host report. The overload treatment should apply to requests | HOST_REPORT 0 The overload report is for a host. Overload abatement | |||
| for which all of the following conditions are true: | treatment applies to host-routed requests. | |||
| Either the Destination-Host AVP is present in the request and its | ||||
| value matches the value of the Origin-Host AVP of the received | ||||
| message that contained the OC-OLR AVP; or the Destination-Host is | ||||
| not present in the request but the value of the peer identity | ||||
| associated with the connection used to send the request matches | ||||
| the value of the Origin-Host AVP of the received message that | ||||
| contained the OC-OLR AVP. | ||||
| The value of the Destination-Realm AVP in the request matches the | ||||
| value of the Origin-Realm AVP of the received message that | ||||
| contained the OC-OLR AVP. | ||||
| The value of the Application-ID in the Diameter Header of the | ||||
| request matches the value of the Application-ID of the Diameter | ||||
| Header of the received message that contained the OC-OLR AVP. | ||||
| 1 A realm report. The overload treatment should apply to requests | ||||
| for which all of the following conditions are true: | ||||
| The Destination-Host AVP is absent in the requestand the value of | ||||
| the peer identity associated with the connection used to send the | ||||
| request does not match a server that could serve the request. | ||||
| The value of the Destination-Realm AVP in the request matches the | ||||
| value of the Origin-Realm AVP of the received message that | ||||
| contained the OC-OLR AVP. | ||||
| The value of the Application-ID in the Diameter Header of the | ||||
| request matches the value of the Application-ID of the Diameter | ||||
| Header of the received message that contained the OC-OLR AVP. | ||||
| The OC-Report-Type AVP is envisioned to be useful for situations | REALM_REPORT 1 The overload report is for a realm. Overload | |||
| where a reacting node needs to apply different overload treatments | abatement treatment applies to realm-routed requests. | |||
| for different overload contexts. For example, the reacting node(s) | ||||
| might need to throttle differently requests sent to a specific server | ||||
| (identified by the Destination-Host AVP in the request) and requests | ||||
| that can be handled by any server in a realm. | ||||
| 6.7. OC-Reduction-Percentage AVP | 6.7. OC-Reduction-Percentage AVP | |||
| The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32 | The OC-Reduction-Percentage AVP (AVP code TBD8) is of type Unsigned32 | |||
| and describes the percentage of the traffic that the sender is | and describes the percentage of the traffic that the sender is | |||
| requested to reduce, compared to what it otherwise would send. The | requested to reduce, compared to what it otherwise would send. The | |||
| OC-Reduction-Percentage AVP applies to the default (loss) algorithm | OC-Reduction-Percentage AVP applies to the default (loss) algorithm | |||
| specified in this specification. However, the AVP can be reused for | specified in this specification. However, the AVP can be reused for | |||
| future abatement algorithms, if its semantics fit into the new | future abatement algorithms, if its semantics fit into the new | |||
| algorithm. | algorithm. | |||
| The value of the Reduction-Percentage AVP is between zero (0) and one | The value of the Reduction-Percentage AVP is between zero (0) and one | |||
| hundred (100). Values greater than 100 are ignored. The value of | hundred (100). Values greater than 100 are ignored. The value of | |||
| 100 means that all traffic is to be throttled, i.e. the reporting | 100 means that all traffic is to be throttled, i.e. the reporting | |||
| skipping to change at page 27, line 12 ¶ | skipping to change at page 28, line 4 ¶ | |||
| hundred (100). Values greater than 100 are ignored. The value of | hundred (100). Values greater than 100 are ignored. The value of | |||
| 100 means that all traffic is to be throttled, i.e. the reporting | 100 means that all traffic is to be throttled, i.e. the reporting | |||
| node is under a severe load and ceases to process any new messages. | node is under a severe load and ceases to process any new messages. | |||
| The value of 0 means that the reporting node is in a stable state and | The value of 0 means that the reporting node is in a stable state and | |||
| has no need for the reacting node to apply any traffic abatement. | has no need for the reacting node to apply any traffic abatement. | |||
| The default value of the OC-Reduction-Percentage AVP is 0. When the | The default value of the OC-Reduction-Percentage AVP is 0. When the | |||
| OC-Reduction-Percentage AVP is not present in the overload report, | OC-Reduction-Percentage AVP is not present in the overload report, | |||
| the default value applies. | the default value applies. | |||
| 6.8. Attribute Value Pair flag rules | 6.8. Attribute Value Pair flag rules | |||
| +---------+ | +---------+ | |||
| |AVP flag | | |AVP flag | | |||
| |rules | | |rules | | |||
| +----+----+ | +----+----+ | |||
| AVP Section | |MUST| | AVP Section | |MUST| | |||
| Attribute Name Code Defined Value Type |MUST| NOT| | Attribute Name Code Defined Value Type |MUST| NOT| | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Supported-Features TBD1 x.x Grouped | | V | | |OC-Supported-Features TBD1 6.1 Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-OLR TBD2 x.x Grouped | | V | | |OC-OLR TBD2 6.3 Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Sequence-Number TBD3 x.x Unsigned64 | | V | | |OC-Sequence-Number TBD3 6.4 Unsigned64 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Validity-Duration TBD4 x.x Unsigned32 | | V | | |OC-Validity-Duration TBD4 6.5 Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Report-Type TBD5 x.x Enumerated | | V | | |OC-Report-Type TBD5 6.6 Enumerated | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Reduction | | | | |OC-Reduction | | | | |||
| | -Percentage TBD8 x.x Unsigned32 | | V | | | -Percentage TBD8 6.7 Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Feature-Vector TBD6 x.x Unsigned64 | | V | | |OC-Feature-Vector TBD6 6.2 Unsigned64 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| As described in the Diameter base protocol [RFC6733], the M-bit | As described in the Diameter base protocol [RFC6733], the M-bit usage | |||
| setting for a given AVP is relevant to an application and each | for a given AVP in a given command may be defined by the | |||
| command within that application that includes the AVP. | application.. | |||
| The Diameter overload control AVPs SHOULD always be sent with the | ||||
| M-bit cleared when used within existing Diameter applications to | ||||
| avoid backward compatibility issues. Otherwise, when reused in newly | ||||
| defined Diameter applications, the DOC related AVPs SHOULD have the | ||||
| M-bit set. | ||||
| 7. Error Response Codes | 7. 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. | |||
| 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 | |||
| skipping to change at page 28, line 23 ¶ | skipping to change at page 29, line 7 ¶ | |||
| 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 | |||
| a Destination-Host AVP then the reporting node might determine | a Destination-Host AVP then the reporting node might determine | |||
| that there is an alternative Diameter node that could successfully | that there is an alternative Diameter node that could successfully | |||
| process the request and that retrying the transaction would not | process the request and that retrying the transaction would not | |||
| negatively impact the reporting node. DIAMETER_TOO_BUSY would be | negatively impact the reporting node. DIAMETER_TOO_BUSY would be | |||
| sent in this case. | sent in this case. | |||
| For instance, if the request arrived at the reporting node with a | If the request arrived at the reporting node with a Destination- | |||
| Destination-Host AVP populated with its own Diameter identity then | Host AVP populated with its own Diameter identity then the | |||
| the reporting node can assume that retrying the request would | reporting node can assume that retrying the request would result | |||
| result in it coming to the same reporting node. | in it coming to the same reporting node. | |||
| DIAMETER_UNABLE_TO_COMPLY would be sent in this case. | DIAMETER_UNABLE_TO_COMPLY would be sent in this case. | |||
| A second example is when an agent that supports the DOIC solution | A second example is when an agent that supports the DOIC solution | |||
| is performing the role of a reacting node for a non supporting | is performing the role of a reacting node for a non supporting | |||
| client. Requests that are rejected as a result of DOIC throttling | client. Requests that are rejected as a result of DOIC throttling | |||
| by the agent in this scenario would generally be rejected with a | by the agent in this scenario would generally be rejected with a | |||
| DIAMETER_UNABLE_TO_COMPLY response code. | DIAMETER_UNABLE_TO_COMPLY response code. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 8.1. AVP codes | 8.1. AVP codes | |||
| New AVPs defined by this specification are listed in Section 6. All | New AVPs defined by this specification are listed in Section 6. All | |||
| AVP codes allocated from the 'Authentication, Authorization, and | AVP codes are allocated from the 'Authentication, Authorization, and | |||
| Accounting (AAA) Parameters' AVP Codes registry. | Accounting (AAA) Parameters' AVP Codes registry. | |||
| 8.2. New registries | 8.2. New registries | |||
| Two new registries are needed under the 'Authentication, | Two new registries are needed under the 'Authentication, | |||
| Authorization, and Accounting (AAA) Parameters' registry. | Authorization, and Accounting (AAA) Parameters' registry. | |||
| Section 6.2 defines a new "Overload Control Feature Vector" registry | A new "Overload Control Feature Vector" registry is required. The | |||
| including the initial assignments. New values can be added into the | registry must contain the following: | |||
| registry using the Specification Required policy [RFC5226]. See | ||||
| Section 6.2 for the initial assignment in the registry. | ||||
| Section 6.6 defines a new "Overload Report Type" registry with its | Feature Vector Value | |||
| initial assignments. New types can be added using the Specification | ||||
| Required policy [RFC5226]. | Specification - the specification that defines the new value. | |||
| See Section 6.2 for the initial Feature Vector Value in the registry. | ||||
| This specification is the specification defining the value. New | ||||
| values can be added into the registry using the Specification | ||||
| Required policy. [RFC5226]. | ||||
| A new "Overload Report Type" registry is required. The registry must | ||||
| contain the following: | ||||
| Report Type Value | ||||
| Specification - the specification that defines the new value. | ||||
| See Section 6.2 for the initial assignment in the registry. New | ||||
| types can be added using the Specification Required policy [RFC5226]. | ||||
| 9. Security Considerations | 9. Security Considerations | |||
| This mechanism gives Diameter nodes the ability to request that | DOIC gives Diameter nodes the ability to request that downstream | |||
| downstream nodes send fewer Diameter requests. Nodes do this by | nodes send fewer Diameter requests. Nodes do this by exchanging | |||
| exchanging overload reports that directly affect this reduction. | overload reports that directly effect this reduction. This exchange | |||
| This exchange is potentially subject to multiple methods of attack, | is potentially subject to multiple methods of attack, and has the | |||
| and has the potential to be used as a Denial-of-Service (DoS) attack | potential to be used as a Denial-of-Service (DoS) attack vector. | |||
| vector. | ||||
| Overload reports may contain information about the topology and | Overload reports may contain information about the topology and | |||
| current status of a Diameter network. This information is | current status of a Diameter network. This information is | |||
| potentially sensitive. Network operators may wish to control | potentially sensitive. Network operators may wish to control | |||
| disclosure of overload reports to unauthorized parties to avoid its | disclosure of overload reports to unauthorized parties to avoid its | |||
| use for competitive intelligence or to target attacks. | use for competitive intelligence or to target attacks. | |||
| Diameter does not include features to provide end-to-end | Diameter does not include features to provide end-to-end | |||
| authentication, integrity protection, or confidentiality. This may | authentication, integrity protection, or confidentiality. This may | |||
| cause complications when sending overload reports between non- | cause complications when sending overload reports between non- | |||
| adjacent nodes. | adjacent nodes. | |||
| 9.1. Potential Threat Modes | 9.1. Potential Threat Modes | |||
| The Diameter protocol involves transactions in the form of requests | The Diameter protocol involves transactions in the form of requests | |||
| and answers exchanged between clients and servers. These clients and | and answers exchanged between clients and servers. These clients and | |||
| servers may be peers, that is,they may share a direct transport (e.g. | servers may be peers, that is, they may share a direct transport | |||
| TCP or SCTP) connection, or the messages may traverse one or more | (e.g. TCP or SCTP) connection, or the messages may traverse one or | |||
| intermediaries, known as Diameter Agents. Diameter nodes use TLS, | more intermediaries, known as Diameter Agents. Diameter nodes use | |||
| DTLS, or IPSec to authenticate peers, and to provide confidentiality | TLS, DTLS, or IPsec to authenticate peers, and to provide | |||
| and integrity protection of traffic between peers. Nodes can make | confidentiality and integrity protection of traffic between peers. | |||
| authorization decisions based on the peer identities authenticated at | Nodes can make authorization decisions based on the peer identities | |||
| the transport layer. | authenticated at the transport layer. | |||
| When agents are involved, this presents an effectively hop-by-hop | When agents are involved, this presents an effectively transitive | |||
| trust model. That is, a Diameter client or server can authorize an | trust model. That is, a Diameter client or server can authorize an | |||
| agent for certain actions, but it must trust that agent to make | agent for certain actions, but it must trust that agent to make | |||
| appropriate authorization decisions about its peers, and so on. | appropriate authorization decisions about its peers, and so on. | |||
| Since confidentiality and integrity protection occurs at the | Since confidentiality and integrity protection occurs at the | |||
| transport layer. Agents can read, and perhaps modify, any part of a | transport layer, agents can read, and perhaps modify, any part of a | |||
| Diameter message, including an overload report. | Diameter message, including an overload report. | |||
| There are several ways an attacker might attempt to exploit the | There are several ways an attacker might attempt to exploit the | |||
| overload control mechanism. An unauthorized third party might inject | overload control mechanism. An unauthorized third party might inject | |||
| an overload report into the network. If this third party is upstream | an overload report into the network. If this third party is upstream | |||
| of an agent, and that agent fails to apply proper authorization | of an agent, and that agent fails to apply proper authorization | |||
| policies, downstream nodes may mistakenly trust the report. This | policies, downstream nodes may mistakenly trust the report. This | |||
| attack is at least partially mitigated by the assumption that nodes | attack is at least partially mitigated by the assumption that nodes | |||
| include overload reports in Diameter answers but not in requests. | include overload reports in Diameter answers but not in requests. | |||
| This requires an attacker to have knowledge of the original request | This requires an attacker to have knowledge of the original request | |||
| in order to construct a response. Therefore, implementations SHOULD | in order to construct an answer. Such an answer would also need to | |||
| validate that an answer containing an overload report is a properly | arrive at a Diameter node via a protected transport connection. | |||
| constructed response to a pending request prior to acting on the | Therefore, implementations MUST validate that an answer containing an | |||
| overload report. | overload report is a properly constructed response to a pending | |||
| request prior to acting on the overload report, and that the answer | ||||
| was received via an appropriate transport connection. | ||||
| A similar attack involves an otherwise authorized Diameter node that | A similar attack involves a compromised but otherwise authorized node | |||
| sends an inappropriate overload report. For example, a server for | that sends an inappropriate overload report. For example, a server | |||
| the realm "example.com" might send an overload report indicating that | for the realm "example.com" might send an overload report indicating | |||
| a competitor's realm "example.net" is overloaded. If other nodes act | that a competitor's realm "example.net" is overloaded. If other | |||
| on the report, they may falsely believe that "example.net" is | nodes act on the report, they may falsely believe that "example.net" | |||
| overloaded, effectively reducing that realm's capacity. Therefore, | is overloaded, effectively reducing that realm's capacity. | |||
| it's critical that nodes validate that an overload report received | Therefore, it's critical that nodes validate that an overload report | |||
| from a peer actually falls within that peer's responsibility before | received from a peer actually falls within that peer's responsibility | |||
| acting on the report or forwarding the report to other peers. For | before acting on the report or forwarding the report to other peers. | |||
| example, an overload report from a peer that applies to a realm not | For example, an overload report from a peer that applies to a realm | |||
| handled by that peer is suspect. | not handled by that peer is suspect. | |||
| An attacker might use the information in an overload report to assist | This attack is partially mitigated by the fact that the | |||
| in certain attacks. For example, an attacker could use information | application, as well as host and realm, for a given OLR is | |||
| about current overload conditions to time a DoS attack for maximum | determined implicitly by respective AVPs in the enclosing answer. | |||
| effect, or use subsequent overload reports as a feedback mechanism to | If a reporting node modifies any of those AVPs, the enclosing | |||
| learn the results of a previous or ongoing attack. | transaction will also be affected. | |||
| 9.2. Denial of Service Attacks | 9.2. Denial of Service Attacks | |||
| Diameter overload reports can cause a node to cease sending some or | Diameter overload reports, especially realm-reports, can cause a node | |||
| all Diameter requests for an extended period. This makes them a | to cease sending some or all Diameter requests for an extended | |||
| tempting vector for DoS tacks. Furthermore, since Diameter is almost | period. This makes them a tempting vector for DoS attacks. | |||
| always used in support of other protocols, a DoS attack on Diameter | Furthermore, since Diameter is almost always used in support of other | |||
| is likely to impact those protocols as well. Therefore, Diameter | protocols, a DoS attack on Diameter is likely to impact those | |||
| nodes MUST NOT honor or forward overload reports from unauthorized or | protocols as well. Therefore, Diameter nodes MUST NOT honor or | |||
| otherwise untrusted sources. | forward OLRs received from peers that are not trusted to send them. | |||
| 9.3. Non-Compliant Nodes | An attacker might use the information in an OLR to assist in DoS | |||
| attacks. For example, an attacker could use information about | ||||
| current overload conditions to time an attack for maximum effect, or | ||||
| use subsequent overload reports as a feedback mechanism to learn the | ||||
| results of a previous or ongoing attack. Operators need the ability | ||||
| to ensure that OLRs are not leaked to untrusted parties. | ||||
| When a Diameter node sends an overload report, it cannot assume that | 9.3. Non-Compliant Nodes | |||
| all nodes will comply. A non-compliant node might continue to send | ||||
| requests with no reduction in load. Requirement 28 [RFC7068] | ||||
| indicates that the overload control solution cannot assume that all | ||||
| Diameter nodes in a network are necessarily trusted, and that | ||||
| malicious nodes not be allowed to take advantage of the overload | ||||
| control mechanism to get more than their fair share of service. | ||||
| In the absence of an overload control mechanism, Diameter nodes need | In the absence of an overload control mechanism, Diameter nodes need | |||
| to implement strategies to protect themselves from floods of | to implement strategies to protect themselves from floods of | |||
| requests, and to make sure that a disproportionate load from one | requests, and to make sure that a disproportionate load from one | |||
| source does not prevent other sources from receiving service. For | source does not prevent other sources from receiving service. For | |||
| example, a Diameter server might reject a certain percentage of | example, a Diameter server might throttle a certain percentage of | |||
| requests from sources that exceed certain limits. Overload control | requests from sources that exceed certain limits. Overload control | |||
| can be thought of as an optimization for such strategies, where | can be thought of as an optimization for such strategies, where | |||
| downstream nodes never send the excess requests in the first place. | downstream nodes never send the excess requests in the first place. | |||
| However, the presence of an overload control mechanism does not | However, the presence of an overload control mechanism does not | |||
| remove the need for these other protection strategies. | remove the need for these other protection strategies. | |||
| When a Diameter node sends an overload report, it cannot assume that | ||||
| all nodes will comply, even if they indicate support for DOIC. A | ||||
| non-compliant node might continue to send requests with no reduction | ||||
| in load. Such non-compliance could be done accidentally, or | ||||
| maliciously to gain an unfair advantage over compliant nodes. | ||||
| Requirement 28 [RFC7068] indicates that the overload control solution | ||||
| cannot assume that all Diameter nodes in a network are trusted, and | ||||
| that malicious nodes not be allowed to take advantage of the overload | ||||
| control mechanism to get more than their fair share of service. | ||||
| 9.4. End-to End-Security Issues | 9.4. End-to End-Security Issues | |||
| The lack of end-to-end security features makes it far more difficult | The lack of end-to-end integrity features makes it difficult to | |||
| to establish trust in overload reports that originate from non- | establish trust in overload reports received from non-adjacent nodes. | |||
| adjacent nodes. Any agents in the message path may insert or modify | Any agents in the message path may insert or modify overload reports. | |||
| overload reports. Nodes must trust that their adjacent peers perform | Nodes must trust that their adjacent peers perform proper checks on | |||
| proper checks on overload reports from their peers, and so on, | overload reports from their peers, and so on, creating a transitive- | |||
| creating a transitive-trust requirement extending for potentially | trust requirement extending for potentially long chains of nodes. | |||
| long chains of nodes. Network operators must determine if this | Network operators must determine if this transitive trust requirement | |||
| transitive trust requirement is acceptable for their deployments. | is acceptable for their deployments. Nodes supporting Diameter | |||
| Nodes supporting Diameter overload control MUST give operators the | overload control MUST give operators the ability to select which | |||
| ability to select which peers are trusted to deliver overload | peers are trusted to deliver overload reports, and whether they are | |||
| reports, and whether they are trusted to forward overload reports | trusted to forward overload reports from non-adjacent nodes. DOIC | |||
| from non-adjacent nodes. | nodes MUST strip DOIC AVPs from messages received from peers that are | |||
| not trusted for DOIC purposes. | ||||
| The lack of end-to-end confidentiality protection means that any | The lack of end-to-end confidentiality protection means that any | |||
| Diameter agent in the path of an overload report can view the | Diameter agent in the path of an overload report can view the | |||
| contents of that report. In addition to the requirement to select | contents of that report. In addition to the requirement to select | |||
| which peers are trusted to send overload reports, operators MUST be | which peers are trusted to send overload reports, operators MUST be | |||
| able to select which peers are authorized to receive reports. A node | able to select which peers are authorized to receive reports. A node | |||
| MUST not send an overload report to a peer not authorized to receive | MUST not send an overload report to a peer not authorized to receive | |||
| it. Furthermore, an agent MUST remove any overload reports that | it. Furthermore, an agent MUST remove any overload reports that | |||
| might have been inserted by other nodes before forwarding a Diameter | might have been inserted by other nodes before forwarding a Diameter | |||
| message to a peer that is not authorized to receive overload reports. | message to a peer that is not authorized to receive overload reports. | |||
| A DOIC node cannot always automatically detect that a peer also | ||||
| supports DOIC. For example, a node might have a peer that is a | ||||
| non-supporting agent. If nodes on the other side of that agent | ||||
| send OC-Supported-Features AVPs, the agent is likely to forward | ||||
| them as unknown AVPs. Messages received across the non-supporting | ||||
| agent may be indistinguishable from messages received across a | ||||
| DOIC supporting agent, giving the false impression that the non- | ||||
| supporting agent actually supports DOIC. This complicates the | ||||
| transitive-trust nature of DOIC. Operators need to be careful to | ||||
| avoid situations where a non-supporting agent is mistakenly | ||||
| trusted to enforce DOIC related authorization policies. | ||||
| At the time of this writing, the DIME working group is studying | At the time of this writing, the DIME working group is studying | |||
| requirements for adding end-to-end security | requirements for adding end-to-end security features | |||
| [I-D.ietf-dime-e2e-sec-req] features to Diameter. These features, | [I-D.ietf-dime-e2e-sec-req] to Diameter. These features, when they | |||
| when they become available, might make it easier to establish trust | become available, might make it easier to establish trust in non- | |||
| in non-adjacent nodes for overload control purposes. Readers should | adjacent nodes for overload control purposes. Readers should be | |||
| be reminded, however, that the overload control mechanism encourages | reminded, however, that the overload control mechanism encourages | |||
| Diameter agents to modify AVPs in, or insert additional AVPs into, | Diameter agents to modify AVPs in, or insert additional AVPs into, | |||
| existing messages that are originated by other nodes. If end-to-end | existing messages that are originated by other nodes. If end-to-end | |||
| security is enabled, there is a risk that such modification could | security is enabled, there is a risk that such modification could | |||
| violate integrity protection. The details of using any future | violate integrity protection. The details of using any future | |||
| Diameter end-to-end security mechanism with overload control will | Diameter end-to-end security mechanism with overload control will | |||
| require careful consideration, and are beyond the scope of this | require careful consideration, and are beyond the scope of this | |||
| document. | document. | |||
| 10. Contributors | 10. Contributors | |||
| skipping to change at page 33, line 30 ¶ | skipping to change at page 34, line 52 ¶ | |||
| [RFC7068] McMurry, E. and B. Campbell, "Diameter Overload Control | [RFC7068] McMurry, E. and B. Campbell, "Diameter Overload Control | |||
| Requirements", RFC 7068, November 2013. | Requirements", RFC 7068, November 2013. | |||
| [S13] 3GPP, , "ETSI TS 129 272 V11.9.0", December 2012. | [S13] 3GPP, , "ETSI TS 129 272 V11.9.0", December 2012. | |||
| Appendix A. Issues left for future specifications | Appendix A. Issues left for future specifications | |||
| The base solution for the overload control does not cover all | The base solution for the overload control does not cover all | |||
| possible use cases. A number of solution aspects were intentionally | possible use cases. A number of solution aspects were intentionally | |||
| left for future specification and protocol work. | left for future specification and protocol work. The following sub- | |||
| sections define some of the potential extensions to the DOIC | ||||
| solution. | ||||
| A.1. Additional traffic abatement algorithms | A.1. Additional traffic abatement algorithms | |||
| This specification describes only means for a simple loss based | This specification describes only means for a simple loss based | |||
| algorithm. Future algorithms can be added using the designed | algorithm. Future algorithms can be added using the designed | |||
| solution extension mechanism. The new algorithms need to be | solution extension mechanism. The new algorithms need to be | |||
| registered with IANA. See Sections 6.1 and 8 for the required IANA | registered with IANA. See Sections 6.1 and 8 for the required IANA | |||
| steps. | steps. | |||
| A.2. Agent Overload | A.2. Agent Overload | |||
| This specification focuses on Diameter endpoint (server or client) | This specification focuses on Diameter endpoint (server or client) | |||
| overload. A separate extension will be required to outline the | overload. A separate extension will be required to outline the | |||
| handling of the case of agent overload. | handling of the case of agent overload. | |||
| A.3. New Error Diagnostic AVP | A.3. New Error Diagnostic AVP | |||
| The proposal was made to add a new Error Diagnostic AVP to supplement | This specification indicates the use of existing error messages when | |||
| the error responces to be able to indicate that overload was the | nodes reject requests due to overload. The DIME working group is | |||
| reason for the rejection of the message. | considering defining additional error codes or AVPs to indicate that | |||
| overload was the reason for the rejection of the message. | ||||
| Appendix B. Deployment Considerations | Appendix B. Deployment Considerations | |||
| Non supporting agents | Non Supporting Agents | |||
| Due to the way that realm-routed requests are handled in Diameter | Due to the way that realm-routed requests are handled in Diameter | |||
| networks, with the server selection for the request done by an | networks with the server selection for the request done by an | |||
| agent, it is recommended that deployments enable all agents that | agent, network operators should enable DOIC at agents that perform | |||
| do server selection to support the DOIC solution prior to enabling | server selection first. | |||
| the DOIC solution in the Diameter network. | ||||
| Topology hiding interactions | Topology Hiding Interactions | |||
| There exist proxies that implement what is referred to as Topology | There exist proxies that implement what is referred to as Topology | |||
| Hiding. This can include cases where the agent modifies the | Hiding. This can include cases where the agent modifies the | |||
| Origin-Host in answer messages. The behavior of the DOIC solution | Origin-Host in answer messages. The behavior of the DOIC solution | |||
| is not well understood when this happens. As such, the DOIC | is not well understood when this happens. As such, the DOIC | |||
| solution does not address this scenario. | solution does not address this scenario. | |||
| Appendix C. Requirements Conformance Analysis | Appendix C. Requirements Conformance Analysis | |||
| This section contains the result of an analysis of the DOIC solutions | This section contains the result of an analysis of the DOIC solutions | |||
| conformance to the requirements defined in [RFC7068]. | conformance to the requirements defined in [RFC7068]. | |||
| To be completed. | C.1. Deferred Requirements | |||
| The 3GPP has adopted an early version of this document as normative | ||||
| references in various Diameter related specifications to support the | ||||
| overload control mechanism in their release 12 framework. The DIME | ||||
| working group has therefore decided to defer certain requirements in | ||||
| order to complete the design of an extensible, generic solution | ||||
| before the deadline scheduled by the 3GPP for the completion of the | ||||
| release 12 protocol work by the end of 2014. The deferred work | ||||
| includes the following: | ||||
| o Agent Overload - The ability for an agent to report an overload | ||||
| condition of the agent itself. | ||||
| o Load Information - The ability for a node to report its load level | ||||
| when not overloaded. | ||||
| At the time of this writing, DIME has begun separate work efforts for | ||||
| these requirements. | ||||
| C.2. Detection of non-supporting Intermediaries | ||||
| The DOIC mechanism as currently defined does not allow supporting | ||||
| nodes to automatically determine whether OC-Supported-Features or OC- | ||||
| OLR AVPs are originated by a peer node, or by a non-peer node and | ||||
| sent across a non-supporting peer. This makes it impossible to | ||||
| detect the presence of non-supporting nodes between supporting nodes, | ||||
| except by configuration. The working group determined that such a | ||||
| configuration requirement is acceptable. | ||||
| This limits full compliance with certain requirements related to the | ||||
| limitation of new configuration, deployment in environments with | ||||
| mixed support, operating across non-supporting agents, and | ||||
| authorization. | ||||
| C.3. Implicit Application Indication | ||||
| The working group elected to determine the application for an | ||||
| overload report from that of the enclosing message. This prevents | ||||
| sending an OLR for an application when there are no transactions for | ||||
| that application. | ||||
| As a consequence, DOIC does not comply with the requirement to be | ||||
| able to report overload information across quiescent connections. | ||||
| DOIC does not fully comply with requirements to operate on up-to-date | ||||
| information, since if an OLR causes all transactions to stop for an | ||||
| application, the only way traffic will resume is for the OLR to | ||||
| expire. | ||||
| C.4. Stateless Operation | ||||
| RFC7068 explicitly discourages the sending of OLRs in every answer | ||||
| message, as part of the requirement to avoid additional work for | ||||
| overloaded nodes. DOIC recommends exactly that behavior during | ||||
| active overload conditions. The working group determined that doing | ||||
| otherwise would reduce reliability and increase statefulness. (Note | ||||
| that DOIC does allow nodes to avoid sending OLRs in every answer if | ||||
| they have some other method of ensuring that OLRs get to all relevant | ||||
| reacting nodes.) | ||||
| C.5. No New Vulnerabilities | ||||
| The working group believes that DOIC is compliant with the | ||||
| requirement to avoid introducing new vulnerabilities. However, this | ||||
| requirement may warrant an early security expert review. | ||||
| C.6. Detailed Requirements | ||||
| [RFC Editor: Please remove this section and subsections prior to | ||||
| publication as an RFC.] | ||||
| C.6.1. General | ||||
| REQ 1: The solution MUST provide a communication method for Diameter | ||||
| nodes to exchange load and overload information. | ||||
| *Partially Compliant*. The mechanism uses new AVPs | ||||
| piggybacked on existing Diameter messages to exchange | ||||
| overload information. It does not currently support "load" | ||||
| information or the ability to report overload of an agent. | ||||
| These have been left for future extensions. | ||||
| REQ 2: The solution MUST allow Diameter nodes to support overload | ||||
| control regardless of which Diameter applications they | ||||
| support. Diameter clients and agents must be able to use the | ||||
| received load and overload information to support graceful | ||||
| behavior during an overload condition. Graceful behavior | ||||
| under overload conditions is best described by REQ 3. | ||||
| *Partially Compliant*. The DOIC AVPs can be used in any | ||||
| application that allows the extension of AVPs. However, | ||||
| "load" information is not currently supported. | ||||
| REQ 3: The solution MUST limit the impact of overload on the overall | ||||
| useful throughput of a Diameter server, even when the | ||||
| incoming load on the network is far in excess of its | ||||
| capacity. The overall useful throughput under load is the | ||||
| ultimate measure of the value of a solution. | ||||
| *Compliant*. DOIC provides information that nodes can use to | ||||
| reduce the impact of overload. | ||||
| REQ 4: Diameter allows requests to be sent from either side of a | ||||
| connection, and either side of a connection may have need to | ||||
| provide its overload status. The solution MUST allow each | ||||
| side of a connection to independently inform the other of its | ||||
| overload status. | ||||
| *Compliant*. DOIC AVPs can be included regardless of | ||||
| transaction "direction" | ||||
| REQ 5: Diameter allows nodes to determine their peers via dynamic | ||||
| discovery or manual configuration. The solution MUST work | ||||
| consistently without regard to how peers are determined. | ||||
| *Compliant*. DOIC contains no assumptions about how peers are | ||||
| discovered. | ||||
| REQ 6: The solution designers SHOULD seek to minimize the amount of | ||||
| new configuration required in order to work. For example, it | ||||
| is better to allow peers to advertise or negotiate support | ||||
| for the solution, rather than to require that this knowledge | ||||
| to be configured at each node. | ||||
| *Partially Compliant*. Most DOIC parameters are advertised | ||||
| using the DOIC capability announcement mechanism. However, | ||||
| there are some situations where configuration is required. | ||||
| For example, a DOIC node detect the fact that a peer may not | ||||
| support DOIC when nodes on the other side of the non- | ||||
| supporting node do support DOIC without configuration. | ||||
| C.6.2. Performance | ||||
| REQ 7: The solution and any associated default algorithm(s) MUST | ||||
| ensure that the system remains stable. At some point after | ||||
| an overload condition has ended, the solution MUST enable | ||||
| capacity to stabilize and become equal to what it would be in | ||||
| the absence of an overload condition. Note that this also | ||||
| requires that the solution MUST allow nodes to shed load | ||||
| without introducing non-converging oscillations during or | ||||
| after an overload condition. | ||||
| *Compliant*. The specification offers guidance that | ||||
| implementations should apply hysteresis when recovering from | ||||
| overload, and avoid sudden ramp ups in offered load when | ||||
| recovering. | ||||
| REQ 8: Supporting nodes MUST be able to distinguish current overload | ||||
| information from stale information. | ||||
| *Partially Compliant*. DOIC overload reports are "soft | ||||
| state", that is they expire after an indicated period. DOIC | ||||
| nodes may also send reports that end existing overload | ||||
| conditions. DOIC requires reporting nodes to ensure that all | ||||
| relevant reacting nodes receive overload reports. | ||||
| However, since DOIC does not allow reporting nodes to send | ||||
| OLRs in watchdog messages, if an overload condition results | ||||
| in zero offered load, the reporting node cannot update the | ||||
| condition until the expiration of the original OLR. | ||||
| REQ 9: The solution MUST function across fully loaded as well as | ||||
| quiescent transport connections. This is partially derived | ||||
| from the requirement for stability in REQ 7. | ||||
| *Not Compliant*. DOIC does not allow OLRs to be sent over | ||||
| quiescent transport connections. This is due to the fact | ||||
| that OLRs cannot be sent outside of the application to which | ||||
| they apply. | ||||
| REQ 10: Consumers of overload information MUST be able to determine | ||||
| when the overload condition improves or ends. | ||||
| *Partially Compliant*. (See response to previous two | ||||
| requirements.) | ||||
| REQ 11: The solution MUST be able to operate in networks of different | ||||
| sizes. | ||||
| *Compliant*. DOIC makes no assumptions about the size of the | ||||
| network. DOIC can operate purely between clients and | ||||
| servers, or across agents. | ||||
| REQ 12: When a single network node fails, goes into overload, or | ||||
| suffers from reduced processing capacity, the solution MUST | ||||
| make it possible to limit the impact of the affected node on | ||||
| other nodes in the network. This helps to prevent a small- | ||||
| scale failure from becoming a widespread outage. | ||||
| *Partially Compliant*. DOIC allows overload reports for an | ||||
| entire realm, where abated traffic will not be redirected | ||||
| towards another server. But in situations where nodes choose | ||||
| to divert traffic to other nodes, DOIC offers no way of | ||||
| knowing whether the new recipients can handle the traffic if | ||||
| they have not already indicated overload. This may be | ||||
| mitigated with the use of a future "load" extension, or with | ||||
| the use of proprietary dynamic load-balancing mechanisms. | ||||
| REQ 13: The solution MUST NOT introduce substantial additional work | ||||
| for a node in an overloaded state. For example, a | ||||
| requirement for an overloaded node to send overload | ||||
| information every time it received a new request would | ||||
| introduce substantial work. | ||||
| *Not Compliant*. DOIC does in fact encourage an overloaded | ||||
| node to send an OLR in every response. The working group | ||||
| that other mechanisms to ensure that every relevant node | ||||
| receives an OLR would create even more work. [Note: This | ||||
| needs discussion.] | ||||
| REQ 14: Some scenarios that result in overload involve a rapid | ||||
| increase of traffic with little time between normal levels | ||||
| and levels that induce overload. The solution SHOULD provide | ||||
| for rapid feedback when traffic levels increase. | ||||
| *Compliant*. The piggyback mechanism allows OLRs to be sent | ||||
| at the same rate as application traffic. | ||||
| REQ 15: The solution MUST NOT interfere with the congestion control | ||||
| mechanisms of underlying transport protocols. For example, a | ||||
| solution that opened additional TCP connections when the | ||||
| network is congested would reduce the effectiveness of the | ||||
| underlying congestion control mechanisms. | ||||
| *Compliant*. DOIC does not require or recommend changes in | ||||
| the handling of transport protocols or connections. | ||||
| C.6.3. Heterogeneous Support for Solution | ||||
| REQ 16: The solution is likely to be deployed incrementally. The | ||||
| solution MUST support a mixed environment where some, but not | ||||
| all, nodes implement it. | ||||
| *Partially Compliant*. DOIC works with most mixed-deployment | ||||
| scenarios. However, it cannot work across a non-supporting | ||||
| proxy that modifies Origin-Host AVPs in answer messages. | ||||
| DOIC will have limited impact in networks where the nodes | ||||
| that perform server selections do not support the mechanism. | ||||
| REQ 17: In a mixed environment with nodes that support the solution | ||||
| and nodes that do not, the solution MUST NOT result in | ||||
| materially less useful throughput during overload as would | ||||
| have resulted if the solution were not present. It SHOULD | ||||
| result in less severe overload in this environment. | ||||
| *Compliant*. In most mixed-support deployment, DOIC will | ||||
| offer at least some value, and will not make things worse. | ||||
| REQ 18: In a mixed environment of nodes that support the solution and | ||||
| nodes that do not, the solution MUST NOT preclude elements | ||||
| that support overload control from treating elements that do | ||||
| not support overload control in an equitable fashion relative | ||||
| to those that do. Users and operators of nodes that do not | ||||
| support the solution MUST NOT unfairly benefit from the | ||||
| solution. The solution specification SHOULD provide guidance | ||||
| to implementers for dealing with elements not supporting | ||||
| overload control. | ||||
| *Compliant*. DOIC provides mechanisms to abate load from non- | ||||
| supporting sources. Furthermore, it recommends that | ||||
| reporting nodes will still need to be able to apply whatever | ||||
| protections they would ordinarily apply if DOIC were not in | ||||
| use. | ||||
| REQ 19: It MUST be possible to use the solution between nodes in | ||||
| different realms and in different administrative domains. | ||||
| *Partially Compliant*. DOIC allows sending OLRs across | ||||
| administrative domains, and potentially to nodes in other | ||||
| realms. However, an OLR cannot indicate overload for realms | ||||
| other than the one in the Origin-Realm AVP of the containing | ||||
| answer. | ||||
| REQ 20: Any explicit overload indication MUST be clearly | ||||
| distinguishable from other errors reported via Diameter. | ||||
| *Compliant*. DOIC sends explicit overload indication in | ||||
| overload reports. It does not depend on error result codes. | ||||
| REQ 21: In cases where a network node fails, is so overloaded that it | ||||
| cannot process messages, or cannot communicate due to a | ||||
| network failure, it may not be able to provide explicit | ||||
| indications of the nature of the failure or its levels of | ||||
| overload. The solution MUST result in at least as much | ||||
| useful throughput as would have resulted if the solution were | ||||
| not in place. | ||||
| *Compliant*. DOIC overload reports have the primary effect of | ||||
| suppressing message retries in overload conditions. DOIC | ||||
| recommends that messages never be silently dropped if at all | ||||
| possible. | ||||
| C.6.4. Granular Control | ||||
| REQ 22: The solution MUST provide a way for a node to throttle the | ||||
| amount of traffic it receives from a peer node. This | ||||
| throttling SHOULD be graded so that it can be applied | ||||
| gradually as offered load increases. Overload is not a | ||||
| binary state; there may be degrees of overload. | ||||
| *Compliant*. The "loss" algorithm expresses a percentage | ||||
| reduction. | ||||
| REQ 23: The solution MUST provide sufficient information to enable a | ||||
| load-balancing node to divert messages that are rejected or | ||||
| otherwise throttled by an overloaded upstream node to other | ||||
| upstream nodes that are the most likely to have sufficient | ||||
| capacity to process them. | ||||
| *Not Compliant*. DOIC provides no built in mechanism to | ||||
| determine the best place to divert messages that would | ||||
| otherwise be throttled. This can be accomplished with a | ||||
| future "load" extension, or with proprietary load balancing | ||||
| mechanisms. | ||||
| REQ 24: The solution MUST provide a mechanism for indicating load | ||||
| levels, even when not in an overload condition, to assist | ||||
| nodes in making decisions to prevent overload conditions from | ||||
| occurring. | ||||
| *Not Compliant*. "Load" information has been left for a | ||||
| future extension. | ||||
| C.6.5. Priority and Policy | ||||
| REQ 25: The base specification for the solution SHOULD offer general | ||||
| guidance on which message types might be desirable to send or | ||||
| process over others during times of overload, based on | ||||
| application-specific considerations. For example, it may be | ||||
| more beneficial to process messages for existing sessions | ||||
| ahead of new sessions. Some networks may have a requirement | ||||
| to give priority to requests associated with emergency | ||||
| sessions. Any normative or otherwise detailed definition of | ||||
| the relative priorities of message types during an overload | ||||
| condition will be the responsibility of the application | ||||
| specification. | ||||
| *Compliant*. The specification offers guidance on how | ||||
| requests might be prioritized for different types of | ||||
| applications. | ||||
| REQ 26: The solution MUST NOT prevent a node from prioritizing | ||||
| requests based on any local policy, so that certain requests | ||||
| are given preferential treatment, given additional | ||||
| retransmission, not throttled, or processed ahead of others. | ||||
| *Compliant*. Nothing in the specification prevents | ||||
| application-specific, implementation-specific, or local | ||||
| policies. | ||||
| C.6.6. Security | ||||
| REQ 27: The solution MUST NOT provide new vulnerabilities to | ||||
| malicious attack or increase the severity of any existing | ||||
| vulnerabilities. This includes vulnerabilities to DoS and | ||||
| DDoS attacks as well as replay and man-in-the-middle attacks. | ||||
| Note that the Diameter base specification [RFC6733] lacks | ||||
| end-to-end security and this must be considered (see the | ||||
| Security Considerations in [RFC7068]). Note that this | ||||
| requirement was expressed at a high level so as to not | ||||
| preclude any particular solution. It is expected that the | ||||
| solution will address this in more detail. | ||||
| *Compliant*. The working group is not aware of any such | ||||
| vulnerabilities. [This may need further analysis.] | ||||
| REQ 28: The solution MUST NOT depend on being deployed in | ||||
| environments where all Diameter nodes are completely trusted. | ||||
| It SHOULD operate as effectively as possible in environments | ||||
| where other nodes are malicious; this includes preventing | ||||
| malicious nodes from obtaining more than a fair share of | ||||
| service. Note that this does not imply any responsibility on | ||||
| the solution to detect, or take countermeasures against, | ||||
| malicious nodes. | ||||
| *Partially Compliant*. Since all Diameter security is | ||||
| currently at the transport layer, nodes must trust immediate | ||||
| peers to enforce trust policies. However, there are | ||||
| situations where a DOIC node cannot determine if an immediate | ||||
| peer supports DOIC. The authors recommend an expert security | ||||
| review. | ||||
| REQ 29: It MUST be possible for a supporting node to make | ||||
| authorization decisions about what information will be sent | ||||
| to peer nodes based on the identity of those nodes. This | ||||
| allows a domain administrator who considers the load of their | ||||
| nodes to be sensitive information to restrict access to that | ||||
| information. Of course, in such cases, there is no | ||||
| expectation that the solution itself will help prevent | ||||
| overload from that peer node. | ||||
| *Partially Compliant*. (See response to previous | ||||
| requirement.) | ||||
| REQ 30: The solution MUST NOT interfere with any Diameter-compliant | ||||
| method that a node may use to protect itself from overload | ||||
| from non-supporting nodes or from denial-of-service attacks. | ||||
| *Compliant*. The specification recommends that any such | ||||
| protection mechanism needed without DOIC should continue to | ||||
| be employed with DOIC. | ||||
| C.6.7. Flexibility and Extensibility | ||||
| REQ 31: There are multiple situations where a Diameter node may be | ||||
| overloaded for some purposes but not others. For example, | ||||
| this can happen to an agent or server that supports multiple | ||||
| applications, or when a server depends on multiple external | ||||
| resources, some of which may become overloaded while others | ||||
| are fully available. The solution MUST allow Diameter nodes | ||||
| to indicate overload with sufficient granularity to allow | ||||
| clients to take action based on the overloaded resources | ||||
| without unreasonably forcing available capacity to go unused. | ||||
| The solution MUST support specification of overload | ||||
| information with granularities of at least "Diameter node", | ||||
| "realm", and "Diameter application" and MUST allow | ||||
| extensibility for others to be added in the future. | ||||
| *Partially Compliant*. All DOIC overload reports are scoped | ||||
| to the specific application and realm. Inside that scope, | ||||
| overload can be reported at the specific server or whole | ||||
| realm scope. As currently specified, DOIC cannot indicate | ||||
| local overload for an agent. At the time of this writing, | ||||
| the DIME working group has plans to work on an agent-overload | ||||
| extension. | ||||
| DOIC allows new "scopes" through the use of extended report | ||||
| types. | ||||
| REQ 32: The solution MUST provide a method for extending the | ||||
| information communicated and the algorithms used for overload | ||||
| control. | ||||
| *Compliant*. DOIC allows new report types and abatement | ||||
| algorithms to be created. These may be indicated using the | ||||
| OC-Supported-Features AVP. | ||||
| REQ 33: The solution MUST provide a default algorithm that is | ||||
| mandatory to implement. | ||||
| *Compliant*. The "loss" algorithm is mandatory to implement. | ||||
| REQ 34: The solution SHOULD provide a method for exchanging overload | ||||
| and load information between elements that are connected by | ||||
| intermediaries that do not support the solution. | ||||
| *Partially Compliant*. DOIC information can traverse non- | ||||
| supporting agents, as long as those agents do not modify | ||||
| certain AVPs. (e.g., Origin-Host). DOIC does not provide a | ||||
| way for supporting nodes to detect such modification. | ||||
| Appendix D. Considerations for Applications Integrating the DOIC | Appendix D. Considerations for Applications Integrating the DOIC | |||
| Solution | Solution | |||
| This section outlines considerations to be taken into account when | This section outlines considerations to be taken into account when | |||
| integrating the DOIC solution into Diameter applications. | integrating the DOIC solution into Diameter applications. | |||
| D.1. Application Classification | D.1. Application Classification | |||
| The following is a classification of Diameter applications and | The following is a classification of Diameter applications and | |||
| skipping to change at page 35, line 13 ¶ | skipping to change at page 47, line 31 ¶ | |||
| a Diameter session-based application. | a Diameter session-based application. | |||
| In session-less applications, the lifetime of the Session-Id is a | In session-less applications, the lifetime of the Session-Id is a | |||
| single Diameter transaction, i.e. the session is implicitly | single Diameter transaction, i.e. the session is implicitly | |||
| terminated after a single Diameter transaction and a new Session-Id | terminated after a single Diameter transaction and a new Session-Id | |||
| is generated for each Diameter request. | is generated for each Diameter request. | |||
| For the purposes of this discussion, session-less applications are | For the purposes of this discussion, session-less applications are | |||
| further divided into two types of applications: | further divided into two types of applications: | |||
| Stateless applications: | Stateless Applications: | |||
| Requests within a stateless application have no relationship to | Requests within a stateless application have no relationship to | |||
| each other. The 3GPP defined S13 application is an example of a | each other. The 3GPP defined S13 application is an example of a | |||
| stateless application [S13], where only a Diameter command is | stateless application [S13], where only a Diameter command is | |||
| defined between a client and a server and no state is maintained | defined between a client and a server and no state is maintained | |||
| between two consecutive transactions. | between two consecutive transactions. | |||
| Pseudo-session applications: | Pseudo-Session Applications: | |||
| Applications that do not rely on the Session-Id AVP for | Applications that do not rely on the Session-Id AVP for | |||
| correlation of application messages related to the same session | correlation of application messages related to the same session | |||
| but use other session-related information in the Diameter requests | but use other session-related information in the Diameter requests | |||
| for this purpose. The 3GPP defined Cx application [Cx] is an | for this purpose. The 3GPP defined Cx application [Cx] is an | |||
| example of a pseudo-session application. | example of a pseudo-session application. | |||
| The handling of overload reports must take the type of application | The handling of overload reports must take the type of application | |||
| into consideration, as discussed in Appendix D.2. | into consideration, as discussed in Appendix D.2. | |||
| skipping to change at page 36, line 5 ¶ | skipping to change at page 48, line 27 ¶ | |||
| this discussion. The method used to reduce offered load is not | this discussion. The method used to reduce offered load is not | |||
| specified here but could include routing requests to another Diameter | specified here but could include routing requests to another Diameter | |||
| entity known to be able to handle them, or it could mean rejecting | entity known to be able to handle them, or it could mean rejecting | |||
| certain requests. For a Diameter agent, rejecting requests will | certain requests. For a Diameter agent, rejecting requests will | |||
| usually mean generating appropriate Diameter error responses. For a | usually mean generating appropriate Diameter error responses. For a | |||
| Diameter client, rejecting requests will depend upon the application. | Diameter client, rejecting requests will depend upon the application. | |||
| For example, it could mean giving an indication to the entity | For example, it could mean giving an indication to the entity | |||
| requesting the Diameter service that the network is busy and to try | requesting the Diameter service that the network is busy and to try | |||
| again later. | again later. | |||
| Stateless applications: | Stateless Applications: | |||
| By definition there is no relationship between individual requests | By definition there is no relationship between individual requests | |||
| in a stateless application. As a result, when a request is sent | in a stateless application. As a result, when a request is sent | |||
| or relayed to an overloaded Diameter entity - either a Diameter | or relayed to an overloaded Diameter entity - either a Diameter | |||
| Server or a Diameter Agent - the sending or relaying entity can | Server or a Diameter Agent - the sending or relaying entity can | |||
| choose to apply the overload treatment to any request targeted for | choose to apply the overload treatment to any request targeted for | |||
| the overloaded entity. | the overloaded entity. | |||
| Pseudo-session applications: | Pseudo-Session Applications: | |||
| For pseudo-session applications, there is an implied ordering of | For pseudo-session applications, there is an implied ordering of | |||
| requests. As a result, decisions about which requests towards an | requests. As a result, decisions about which requests towards an | |||
| overloaded entity to reject could take the command code of the | overloaded entity to reject could take the command code of the | |||
| request into consideration. This generally means that | request into consideration. This generally means that | |||
| transactions later in the sequence of transactions should be given | transactions later in the sequence of transactions should be given | |||
| more favorable treatment than messages earlier in the sequence. | more favorable treatment than messages earlier in the sequence. | |||
| This is because more work has already been done by the Diameter | This is because more work has already been done by the Diameter | |||
| network for those transactions that occur later in the sequence. | network for those transactions that occur later in the sequence. | |||
| Rejecting them could result in increasing the load on the network | Rejecting them could result in increasing the load on the network | |||
| as the transactions earlier in the sequence might also need to be | as the transactions earlier in the sequence might also need to be | |||
| repeated. | repeated. | |||
| Session-based applications: | Session-Based Applications: | |||
| Overload handling for session-based applications must take into | Overload handling for session-based applications must take into | |||
| consideration the work load associated with setting up and | consideration the work load associated with setting up and | |||
| maintaining a session. As such, the entity sending requests | maintaining a session. As such, the entity sending requests | |||
| towards an overloaded Diameter entity for a session-based | towards an overloaded Diameter entity for a session-based | |||
| application might tend to reject new session requests prior to | application might tend to reject new session requests prior to | |||
| rejecting intra-session requests. In addition, session ending | rejecting intra-session requests. In addition, session ending | |||
| requests might be given a lower probability of being rejected as | requests might be given a lower probability of being rejected as | |||
| rejecting session ending requests could result in session status | rejecting session ending requests could result in session status | |||
| being out of sync between the Diameter clients and servers. | being out of sync between the Diameter clients and servers. | |||
| Application designers that would decide to reject mid-session | Application designers that would decide to reject mid-session | |||
| requests will need to consider whether the rejection invalidates | requests will need to consider whether the rejection invalidates | |||
| the session and any resulting session clean-up procedures. | the session and any resulting session cleanup procedures. | |||
| D.3. Request Transaction Classification | D.3. Request Transaction Classification | |||
| Independent Request: | Independent Request: | |||
| An independent request is not correlated to any other requests | An independent request is not correlated to any other requests | |||
| and, as such, the lifetime of the session-id is constrained to an | and, as such, the lifetime of the session-id is constrained to an | |||
| individual transaction. | individual transaction. | |||
| Session-Initiating Request: | Session-Initiating Request: | |||
| skipping to change at page 37, line 19 ¶ | skipping to change at page 49, line 42 ¶ | |||
| Correlated Session-Initiating Request: | Correlated Session-Initiating Request: | |||
| There are cases when multiple session-initiated requests must be | There are cases when multiple session-initiated requests must be | |||
| correlated and managed by the same Diameter server. It is notably | correlated and managed by the same Diameter server. It is notably | |||
| the case in the 3GPP PCC architecture [PCC], where multiple | the case in the 3GPP PCC architecture [PCC], where multiple | |||
| apparently independent Diameter application sessions are actually | apparently independent Diameter application sessions are actually | |||
| correlated and must be handled by the same Diameter server. | correlated and must be handled by the same Diameter server. | |||
| Intra-Session Request: | Intra-Session Request: | |||
| An intra session request is a request that uses the same Session- | An intra-session request is a request that uses the same Session- | |||
| Id than the one used in a previous request. An intra session | Id than the one used in a previous request. An intra-session | |||
| request generally needs to be delivered to the server that handled | request generally needs to be delivered to the server that handled | |||
| the session creating request for the session. The STR message | the session creating request for the session. The STR message | |||
| defined in [RFC6733] is an example of an intra-session requests. | defined in [RFC6733] is an example of an intra-session request. | |||
| Pseudo-Session Requests: | Pseudo-Session Requests: | |||
| Pseudo-session requests are independent requests and do not use | Pseudo-session requests are independent requests and do not use | |||
| the same Session-Id but are correlated by other session-related | the same Session-Id but are correlated by other session-related | |||
| information contained in the request. There exists Diameter | information contained in the request. There exists Diameter | |||
| applications that define an expected ordering of transactions. | applications that define an expected ordering of transactions. | |||
| This sequencing of independent transactions results in a pseudo | This sequencing of independent transactions results in a pseudo | |||
| session. The AIR, MAR and SAR requests in the 3GPP defined Cx | session. The AIR, MAR and SAR requests in the 3GPP defined Cx | |||
| [Cx] application are examples of pseudo-session requests. | [Cx] application are examples of pseudo-session requests. | |||
| skipping to change at page 37, line 45 ¶ | skipping to change at page 50, line 19 ¶ | |||
| D.4. Request Type Overload Implications | D.4. Request Type Overload Implications | |||
| The request classes identified in Appendix D.3 have implications on | The request classes identified in Appendix D.3 have implications on | |||
| decisions about which requests should be throttled first. The | decisions about which requests should be throttled first. The | |||
| following list of request treatment regarding throttling is provided | following list of request treatment regarding throttling is provided | |||
| as guidelines for application designers when implementing the | as guidelines for application designers when implementing the | |||
| Diameter overload control mechanism described in this document. The | Diameter overload control mechanism described in this document. The | |||
| exact behavior regarding throttling is a matter of local policy, | exact behavior regarding throttling is a matter of local policy, | |||
| unless specifically defined for the application. | unless specifically defined for the application. | |||
| Independent requests: | Independent Requests: | |||
| Independent requests can generally be given equal treatment when | Independent requests can generally be given equal treatment when | |||
| making throttling decisions, unless otherwise indicated by | making throttling decisions, unless otherwise indicated by | |||
| application requirements or local policy. | application requirements or local policy. | |||
| Session-initiating requests: | Session-Initiating Requests: | |||
| Session-initiating requests often represent more work than | Session-initiating requests often represent more work than | |||
| independent or intra-session requests. Moreover, session- | independent or intra-session requests. Moreover, session- | |||
| initiating requests are typically followed by other session- | initiating requests are typically followed by other session- | |||
| related requests. Since the main objective of the overload | related requests. Since the main objective of the overload | |||
| control is to reduce the total number of requests sent to the | control is to reduce the total number of requests sent to the | |||
| overloaded entity, throttling decisions might favor allowing | overloaded entity, throttling decisions might favor allowing | |||
| intra-session requests over session-initiating requests. In the | intra-session requests over session-initiating requests. In the | |||
| absence of local policies or application specific requirements to | absence of local policies or application specific requirements to | |||
| the contrary, Individual session-initiating requests can be given | the contrary, Individual session-initiating requests can be given | |||
| equal treatment when making throttling decisions. | equal treatment when making throttling decisions. | |||
| Correlated session-initiating requests: | Correlated Session-Initiating Requests: | |||
| A Request that results in a new binding, where the binding is used | A Request that results in a new binding, where the binding is used | |||
| for routing of subsequent session-initiating requests to the same | for routing of subsequent session-initiating requests to the same | |||
| server, represents more work load than other requests. As such, | server, represents more work load than other requests. As such, | |||
| these requests might be throttled more frequently than other | these requests might be throttled more frequently than other | |||
| request types. | request types. | |||
| Pseudo-session requests: | Pseudo-Session Requests: | |||
| Throttling decisions for pseudo-session requests can take into | Throttling decisions for pseudo-session requests can take into | |||
| consideration where individual requests fit into the overall | consideration where individual requests fit into the overall | |||
| sequence of requests within the pseudo session. Requests that are | sequence of requests within the pseudo session. Requests that are | |||
| earlier in the sequence might be throttled more aggressively than | earlier in the sequence might be throttled more aggressively than | |||
| requests that occur later in the sequence. | requests that occur later in the sequence. | |||
| Intra-session requests: | Intra-Session Requests: | |||
| There are two types of intra-sessions requests, requests that | There are two types of intra-sessions requests, requests that | |||
| terminate a session and the remainder of intra-session requests. | terminate a session and the remainder of intra-session requests. | |||
| Implementors and operators may choose to throttle session- | Implementers and operators may choose to throttle session- | |||
| terminating requests less aggressively in order to gracefully | terminating requests less aggressively in order to gracefully | |||
| terminate sessions, allow clean-up of the related resources (e.g. | terminate sessions, allow cleanup of the related resources (e.g. | |||
| session state) and avoid the need for additional intra-session | session state) and avoid the need for additional intra-session | |||
| requests. Favoring session-termination requests may reduce the | requests. Favoring session-termination requests may reduce the | |||
| session management impact on the overloaded entity. The default | session management impact on the overloaded entity. The default | |||
| handling of other intra-session requests might be to treat them | handling of other intra-session requests might be to treat them | |||
| equally when making throttling decisions. There might also be | equally when making throttling decisions. There might also be | |||
| application level considerations whether some request types are | application level considerations whether some request types are | |||
| favored over others. | favored over others. | |||
| Authors' Addresses | Authors' Addresses | |||
| Jouni Korhonen (editor) | Jouni Korhonen (editor) | |||
| Broadcom | Broadcom | |||
| Porkkalankatu 24 | Porkkalankatu 24 | |||
| Helsinki FIN-00180 | Helsinki FIN-00180 | |||
| Finland | Finland | |||
| Email: jouni.nospam@gmail.com | Email: jouni.nospam@gmail.com | |||
| Steve Donovan (editor) | Steve Donovan (editor) | |||
| Oracle | Oracle | |||
| End of changes. 202 change blocks. | ||||
| 655 lines changed or deleted | 1167 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||