| < draft-ietf-dime-ovli-05.txt | draft-ietf-dime-ovli-06.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: June 6, 2015 B. Campbell | Expires: July 12, 2015 B. Campbell | |||
| Oracle | Oracle | |||
| L. Morand | L. Morand | |||
| Orange Labs | Orange Labs | |||
| December 3, 2014 | January 8, 2015 | |||
| Diameter Overload Indication Conveyance | Diameter Overload Indication Conveyance | |||
| draft-ietf-dime-ovli-05.txt | draft-ietf-dime-ovli-06.txt | |||
| Abstract | Abstract | |||
| This specification defines a base solution for Diameter overload | This specification defines a base solution for Diameter overload | |||
| control, referred to as Diameter Overload Indication Conveyance | control, referred to as Diameter Overload Indication Conveyance | |||
| (DOIC). | (DOIC). | |||
| Requirements | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | ||||
| 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 | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 June 6, 2015. | This Internet-Draft will expire on July 12, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2015 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| 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 . . . . . . . . . . . . . . . . 4 | 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Conventions Used in This Document . . . . . . . . . . . . . . 5 | |||
| 3.1. Piggybacking . . . . . . . . . . . . . . . . . . . . . . 7 | 4. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. DOIC Capability Announcement . . . . . . . . . . . . . . 8 | 4.1. Piggybacking . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.3. DOIC Overload Condition Reporting . . . . . . . . . . . . 9 | 4.2. DOIC Capability Announcement . . . . . . . . . . . . . . 7 | |||
| 3.4. DOIC Extensibility . . . . . . . . . . . . . . . . . . . 11 | 4.3. DOIC Overload Condition Reporting . . . . . . . . . . . . 9 | |||
| 3.5. Simplified Example Architecture . . . . . . . . . . . . . 12 | 4.4. DOIC Extensibility . . . . . . . . . . . . . . . . . . . 11 | |||
| 4. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12 | 4.5. Simplified Example Architecture . . . . . . . . . . . . . 11 | |||
| 4.1. Capability Announcement . . . . . . . . . . . . . . . . . 12 | 5. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 4.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 13 | 5.1. Capability Announcement . . . . . . . . . . . . . . . . . 12 | |||
| 4.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 13 | 5.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 13 | |||
| 4.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 14 | 5.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 13 | |||
| 4.2. Overload Report Processing . . . . . . . . . . . . . . . 15 | 5.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.2.1. Overload Control State . . . . . . . . . . . . . . . 15 | 5.2. Overload Report Processing . . . . . . . . . . . . . . . 15 | |||
| 4.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 19 | 5.2.1. Overload Control State . . . . . . . . . . . . . . . 15 | |||
| 4.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 20 | 5.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 19 | |||
| 4.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 21 | 5.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 20 | |||
| 5. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 22 | 5.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 21 | |||
| 5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 22 | 6. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 23 | 6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 24 | 6.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 23 | |||
| 6. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 25 | 6.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 24 | |||
| 6.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 25 | 7. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 24 | |||
| 6.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 25 | 7.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 25 | |||
| 6.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 26 | 7.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 25 | |||
| 6.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 26 | 7.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 6.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 27 | 7.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 26 | |||
| 6.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 27 | 7.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 26 | |||
| 6.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 27 | 7.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 26 | |||
| 6.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27 | 7.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 27 | |||
| 7. Error Response Codes . . . . . . . . . . . . . . . . . . . . 28 | 7.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 8. Error Response Codes . . . . . . . . . . . . . . . . . . . . 28 | |||
| 8.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 29 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 8.2. New registries . . . . . . . . . . . . . . . . . . . . . 29 | 9.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | 9.2. New registries . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 30 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | |||
| 9.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 31 | 10.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 29 | |||
| 9.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 32 | 10.2. Denial of Service Attacks . . . . . . . . . . . . . . . 31 | |||
| 9.4. End-to End-Security Issues . . . . . . . . . . . . . . . 32 | 10.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . 31 | |||
| 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 33 | 10.4. End-to End-Security Issues . . . . . . . . . . . . . . . 31 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 34 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 34 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 33 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 33 | ||||
| Appendix A. Issues left for future specifications . . . . . . . 34 | Appendix A. Issues left for future specifications . . . . . . . 34 | |||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 35 | A.1. Additional traffic abatement algorithms . . . . . . . . . 34 | |||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 35 | A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 34 | |||
| A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 35 | A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 34 | |||
| Appendix B. Deployment Considerations . . . . . . . . . . . . . 35 | Appendix B. Deployment Considerations . . . . . . . . . . . . . 34 | |||
| Appendix C. Requirements Conformance Analysis . . . . . . . . . 35 | Appendix C. Requirements Conformance Analysis . . . . . . . . . 35 | |||
| C.1. Deferred Requirements . . . . . . . . . . . . . . . . . . 36 | C.1. Deferred Requirements . . . . . . . . . . . . . . . . . . 35 | |||
| C.2. Detection of non-supporting Intermediaries . . . . . . . 36 | C.2. Detection of non-supporting Intermediaries . . . . . . . 35 | |||
| C.3. Implicit Application Indication . . . . . . . . . . . . . 36 | C.3. Implicit Application Indication . . . . . . . . . . . . . 36 | |||
| C.4. Stateless Operation . . . . . . . . . . . . . . . . . . . 37 | C.4. Stateless Operation . . . . . . . . . . . . . . . . . . . 36 | |||
| C.5. No New Vulnerabilities . . . . . . . . . . . . . . . . . 37 | C.5. No New Vulnerabilities . . . . . . . . . . . . . . . . . 36 | |||
| C.6. Detailed Requirements . . . . . . . . . . . . . . . . . . 37 | C.6. Detailed Requirements . . . . . . . . . . . . . . . . . . 36 | |||
| C.6.1. General . . . . . . . . . . . . . . . . . . . . . . . 37 | C.6.1. General . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| C.6.2. Performance . . . . . . . . . . . . . . . . . . . . . 39 | C.6.2. Performance . . . . . . . . . . . . . . . . . . . . . 38 | |||
| C.6.3. Heterogeneous Support for Solution . . . . . . . . . 41 | C.6.3. Heterogeneous Support for Solution . . . . . . . . . 40 | |||
| C.6.4. Granular Control . . . . . . . . . . . . . . . . . . 43 | C.6.4. Granular Control . . . . . . . . . . . . . . . . . . 42 | |||
| C.6.5. Priority and Policy . . . . . . . . . . . . . . . . . 43 | C.6.5. Priority and Policy . . . . . . . . . . . . . . . . . 43 | |||
| C.6.6. Security . . . . . . . . . . . . . . . . . . . . . . 44 | C.6.6. Security . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| C.6.7. Flexibility and Extensibility . . . . . . . . . . . . 45 | C.6.7. Flexibility and Extensibility . . . . . . . . . . . . 44 | |||
| Appendix D. Considerations for Applications Integrating the DOIC | Appendix D. Considerations for Applications Integrating the DOIC | |||
| Solution . . . . . . . . . . . . . . . . . . . . . . 46 | Solution . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| D.1. Application Classification . . . . . . . . . . . . . . . 47 | D.1. Application Classification . . . . . . . . . . . . . . . 46 | |||
| D.2. Application Type Overload Implications . . . . . . . . . 48 | D.2. Application Type Overload Implications . . . . . . . . . 47 | |||
| D.3. Request Transaction Classification . . . . . . . . . . . 49 | D.3. Request Transaction Classification . . . . . . . . . . . 48 | |||
| D.4. Request Type Overload Implications . . . . . . . . . . . 50 | D.4. Request Type Overload Implications . . . . . . . . . . . 49 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 51 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
| 1. Introduction | 1. Introduction | |||
| This specification defines a base solution for Diameter overload | This specification defines a base solution for Diameter overload | |||
| control, referred to as Diameter Overload Indication Conveyance | control, referred to as Diameter Overload Indication Conveyance | |||
| (DOIC), based on the requirements identified in [RFC7068]. | (DOIC), based on the requirements identified in [RFC7068]. | |||
| This specification addresses Diameter overload control between | This specification addresses Diameter overload control between | |||
| Diameter nodes that support the DOIC solution. The solution, which | Diameter nodes that support the DOIC solution. The solution, which | |||
| is designed to apply to existing and future Diameter applications, | is designed to apply to existing and future Diameter applications, | |||
| requires no changes to the Diameter base protocol [RFC6733] and is | requires no changes to the Diameter base protocol [RFC6733] and is | |||
| deployable in environments where some Diameter nodes do not implement | deployable in environments where some Diameter nodes do not implement | |||
| the Diameter overload control solution defined in this specification. | the Diameter overload control solution defined in this specification. | |||
| A new application specification can incorporate the overload control | ||||
| mechanism specified in this document by making it mandatory to | ||||
| implement for the application and referencing this specification | ||||
| normatively. It is the responsibility of the Diameter application | ||||
| designers to define how overload control mechanisms works on that | ||||
| application. | ||||
| Note that the overload 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 | does not address all the requirements listed in [RFC7068]. A number | |||
| of overload control related features are left for future | of overload control related features are left for future | |||
| specifications. See Appendix A for a list of extensions that are | specifications. See Appendix A for a list of extensions that are | |||
| currently being considered. See Appendix C for an analysis of | currently being considered. See Appendix C for an analysis of | |||
| conformance to the requirements specified in [RFC7068]. | 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 | |||
| A mechanism requested by reporting nodes and used by reacting | An extensible mechanism requested by reporting nodes and used by | |||
| nodes to reduce the amount of traffic sent during an occurrence of | reacting nodes to reduce the amount of traffic sent during an | |||
| overload control. | occurrence of overload control. | |||
| Diversion | Diversion | |||
| A mechanism used for overload abatement by selecting a different | An overload abatement mechanism, where the reacting node selects | |||
| path for requests. | alternate destinations or paths for for requests. | |||
| Host-Routed Requests | Host-Routed Requests | |||
| Requests that a reacting node knows will be served by a particular | Requests that a reacting node knows will be served by a particular | |||
| host, either due to the presence of a Destination-Host AVP, or by | host, either due to the presence of a Destination-Host AVP, or by | |||
| some other local knowledge on the part of the reacting node. | some other local knowledge on the part of the reacting node. | |||
| Overload Control State (OCS) | Overload Control State (OCS) | |||
| Reporting and reacting node internally maintained state describing | Internal state maintained by a reporting or reacting node | |||
| occurrences of overload control. | describing occurrences of overload control. | |||
| Overload Report (OLR) | Overload Report (OLR) | |||
| Overload control information for a particular overload occurrence | Overload control information for a particular overload occurrence | |||
| sent by a reporting node. | 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 Requests | Realm-Routed Requests | |||
| Requests that a reacting node does not know the host that will | Requests that a reacting node does not know which host will | |||
| service the request. | service the request. | |||
| Reporting Node | Reporting Node | |||
| A Diameter node that generates an overload report. (This may or | A Diameter node that generates an overload report. (This may or | |||
| may not be the overloaded node.) | may not be the overloaded node.) | |||
| Throttling | Throttling | |||
| A mechanism for overload abatement that limits the number of | A mechanism for overload abatement that limits the number of | |||
| requests sent by the DIOC reacting node. Throttling can include a | requests sent by the DIOC reacting node. Throttling can include a | |||
| Diameter Client not sending requests, or a Diameter Agent or | Diameter Client choosing to not send requests, or a Diameter Agent | |||
| Server rejecting requests with appropriate error responses. In | or Server rejecting requests with appropriate error responses. In | |||
| both cases the result of the throttling is a permanent rejection | both cases the result of the throttling is a permanent rejection | |||
| of the transaction. | of the transaction. | |||
| 3. Solution Overview | 3. Conventions Used in This Document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | ||||
| 4. Solution Overview | ||||
| The Diameter Overload Information Conveyance (DOIC) solution allows | The Diameter Overload Information Conveyance (DOIC) solution allows | |||
| Diameter nodes to request other Diameter nodes to perform overload | Diameter nodes to request other Diameter nodes to perform overload | |||
| abatement actions, that is, actions to reduce the load offered to the | abatement actions, that is, actions to reduce the load offered to the | |||
| overloaded node or realm. | overloaded node or realm. | |||
| A Diameter node that supports DOIC is known as a "DOIC node". Any | A Diameter node that supports DOIC is known as a "DOIC node". Any | |||
| Diameter node can act as a DOIC node, including Diameter Clients, | Diameter node can act as a DOIC node, including Diameter Clients, | |||
| Diameter Servers, and Diameter Agents. DOIC nodes are further | Diameter Servers, and Diameter Agents. DOIC nodes are further | |||
| divided into "Reporting Nodes" and "Reacting Nodes." A reporting | divided into "Reporting Nodes" and "Reacting Nodes." A reporting | |||
| skipping to change at page 6, line 10 ¶ | skipping to change at page 6, line 16 ¶ | |||
| Likewise, a Diameter 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 7.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 7.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 | |||
| some of the parameters of an OLR and the procedures required for | some of the parameters of an OLR and the procedures required for | |||
| overload abatement. An overload abatement algorithm separates | overload abatement. An overload abatement algorithm separates | |||
| Diameter requests into two sets. The first set contains the requests | Diameter requests into two sets. The first set contains the requests | |||
| that are to undergo overload abatement treatment of either throttling | that are to undergo overload abatement treatment of either throttling | |||
| or diversion. The second set contains the requests that are to be | or diversion. The second set contains the requests that are to be | |||
| given normal routing treatment. This document specifies a single | given normal routing treatment. This document specifies a single | |||
| must-support algorithm, namely the "loss" algorithm (Section 5). | must-support algorithm, namely the "loss" algorithm (Section 6). | |||
| Future specifications may introduce new algorithms. | 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 | |||
| attempt to send requests to other destinations. On the other hand, | attempt to send requests to other destinations. On the other hand, | |||
| an entire Diameter realm may be overloaded, in which case such | an entire Diameter realm may be overloaded, in which case such | |||
| attempts would do harm. DOIC OLRs have a concept of "report type" | attempts would do harm. DOIC OLRs have a concept of "report type" | |||
| (Section 6.6), where the type defines such behaviors. Report types | (Section 7.6), where the type defines such behaviors. Report types | |||
| are extensible. This document defines report types for overload of a | are extensible. This document defines report types for overload of a | |||
| specific host, and for overload of an entire realm. | specific host, and for overload of an entire realm. | |||
| A report of type "HOST_REPORT" is sent to indicate the overload of a | DOIC works through non supporting Diameter Agents that properly pass | |||
| specific host, identified by the Origin-Host AVP of the message | unknown AVPs unchanged. | |||
| containing the OLR, for the application-id indicated in the | ||||
| transaction. When receiving an OLR of type "HOST_REPORT", a reacting | ||||
| node applies overload abatement treatment to the host-routed requests | ||||
| identified by the overload abatement algorithm (see definition in | ||||
| Section 2) sent for this application to the overloaded host. | ||||
| A report of type "REALM_REPORT" is sent to indicate the overload of a | ||||
| realm for the application-id indicated in the transaction. The | ||||
| overloaded realm is identified by the Destination-Realm AVP of the | ||||
| message containing the OLR. When receiving an OLR of type | ||||
| "REALM_REPORT", a reacting node applies overload abatement treatment | ||||
| 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 | ||||
| that are "adjacent" for DOIC purposes may not be adjacent from a | ||||
| Diameter, or transport, perspective. For example, one or more | ||||
| Diameter agents that do not support DOIC may exist between a given | ||||
| pair of reporting and reacting nodes, as long as those agents pass | ||||
| unknown AVPs through unchanged. The report types described in this | ||||
| document can safely pass through non-supporting agents. This may not | ||||
| be true for report types defined in future specifications. | ||||
| 3.1. Piggybacking | 4.1. Piggybacking | |||
| There is no new Diameter application defined to carry overload | There is no new Diameter application defined to carry overload | |||
| related AVPs. The overload control AVPs defined in this | related AVPs. The overload control AVPs defined in this | |||
| specification have been designed to be piggybacked on top of existing | specification have been designed to be piggybacked on top of existing | |||
| application messages. This is made possible by adding overload | application messages. This is made possible by adding the optional | |||
| control AVPs, the OC-OLR AVP and the OC-Supported-Features AVP, as | overload control AVPs OC-OLR and OC-Supported-Features into existing | |||
| optional AVPs into existing commands when the corresponding Command | commands. | |||
| 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 that are in response to a request that | by the reporting node that are in response to a request that | |||
| contained the OC-Supported-Features AVP. Reporting nodes also | contained the OC-Supported-Features AVP. Reporting nodes may include | |||
| include overload reports using the OC-OLR AVP in answer messages. | overload reports using the OC-OLR AVP in answer 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. sent 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 | 4.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 mechanism 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-Features AVP in the request | DOIC solution inserts the OC-Supported-Features AVP in the request | |||
| message. | message. | |||
| The individual features supported by the DOIC nodes are indicated in | ||||
| the OC-Feature-Vector AVP. Any semantics associated with the | ||||
| features will be defined in extension specifications that introduce | ||||
| the features. | ||||
| Note: As discussed elsewhere in the document, agents in the path | Note: As discussed elsewhere in the document, agents in the path | |||
| of the request can modify the OC-Supported-Features AVP. | of the request can modify the OC-Supported-Features AVP. | |||
| Note: The DOIC solution must support deployments where Diameter | Note: The DOIC solution must support deployments where Diameter | |||
| Clients and/or Diameter Servers do not support the DOIC solution. | Clients and/or Diameter Servers do not support the DOIC solution. | |||
| In this scenario, Diameter Agents that support the DOIC solution | In this scenario, Diameter Agents that support the DOIC solution | |||
| may handle overload abatement for the non supporting Diameter | may handle overload abatement for the non supporting Diameter | |||
| nodes. In this case the DOIC agent will insert the OC-Supported- | nodes. In this case the DOIC agent will insert the OC-Supported- | |||
| Features AVP in requests that do not already contain one, telling | Features AVP in requests that do not already contain one, telling | |||
| the reporting node that there is a DOIC node that will handle | the reporting node that there is a DOIC node that will handle | |||
| overload abatement. For transactions where there was an OC- | overload abatement. For transactions where there was an OC- | |||
| Supporting-Features AVP in the request, the agent will insert the | Supporting-Features AVP in the request, the agent will insert the | |||
| OC-Supported-Features AVP in answers, telling the reacting node | OC-Supported-Features AVP in answers, telling the reacting node | |||
| that there is a reporting node. | that there is a reporting node. | |||
| The OC-Feature-Vector AVP will contain an indication of support for | The OC-Feature-Vector AVP will always contain an indication of | |||
| the loss overload abatement algorithm defined in this specification | support for the loss overload abatement algorithm defined in this | |||
| (see Section 5). This ensures that there is at least one commonly | specification (see Section 6). This ensures that a reporting node | |||
| supported overload abatement algorithm between the reporting node and | always supports at least one of the advertized abatement algorithms | |||
| the reacting node(s) in the path of the request. | received in a request messages. | |||
| The reporting node inserts the OC-Supported-Features AVP in all | The reporting node inserts the OC-Supported-Features AVP in all | |||
| answer messages to requests that contained the OC-Supported-Features | answer messages to requests that contained the OC-Supported-Features | |||
| AVP. The contents of the reporting node's OC-Supported-Features AVP | AVP. The contents of the reporting node's OC-Supported-Features AVP | |||
| indicate the set of Diameter overload features supported by the | indicate the set of Diameter overload features supported by the | |||
| reporting node. This specification defines one exception - the | reporting node. This specification defines one exception - the | |||
| reporting node only includes an indication of support for one | reporting node only includes an indication of support for one | |||
| overload abatement algorithm, independent of the number of overload | overload abatement algorithm, independent of the number of overload | |||
| abatement algorithms actually supported by the reacting node. The | abatement algorithms actually supported by the reacting node. The | |||
| overload abatement algorithm indicated is the algorithm that the | overload abatement algorithm indicated is the algorithm that the | |||
| skipping to change at page 9, line 15 ¶ | skipping to change at page 8, line 49 ¶ | |||
| requested. | requested. | |||
| Note that the loss algorithm defined in this document is a | Note that the loss algorithm defined in this document is a | |||
| stateless abatement algorithm. As a result it does not require | stateless abatement algorithm. As a result it does not require | |||
| any actions by reacting nodes prior to the receipt of an overload | any actions by reacting nodes prior to the receipt of an overload | |||
| report. Stateful abatement algorithms that base the abatement | report. Stateful abatement algorithms that base the abatement | |||
| logic on a history of request messages sent might require reacting | logic on a history of request messages sent might require reacting | |||
| nodes to maintain state in advance of receiving an overload report | nodes to maintain state in advance of receiving an overload report | |||
| to ensure that the overload reports can be properly handled. | to ensure that the overload reports can be properly handled. | |||
| Reporting nodes are allowed to change the overload abatement | Reporting nodes can change the overload abatement algorithm indicated | |||
| algorithm indicated in the OC-Feature-Vector AVP if the reporting | in the OC-Feature-Vector AVP if the reporting node is not currently | |||
| node is not currently in an overload condition and sending overload | in an overload condition and sending overload reports. The reporting | |||
| reports. The reporting node is not allowed to change the overload | node is not allowed to change the overload abatement algorithm while | |||
| abatement algorithm while the reporting node is in an overload | the reporting node is in an overload condition. | |||
| condition. | ||||
| The individual features supported by the DOIC nodes are indicated in | ||||
| the OC-Feature-Vector AVP. Any semantics associated with the | ||||
| features will be defined in extension specifications that introduce | ||||
| the features. | ||||
| The DCA mechanism must also allow the scenario where the set of | The DCA mechanism must also allow the scenario where the set of | |||
| features supported by the sender of a request and by agents in the | features supported by the sender of a request and by agents in the | |||
| path of a request differ. In this case, the agent updates the OC- | path of a request differ. In this case, the agent can update the OC- | |||
| Supported-Features AVP to reflect the mixture of the two sets of | Supported-Features AVP to reflect the mixture of the two sets of | |||
| supported features. | supported features. | |||
| Note: The logic to determine the content of the modified OC- | Note: The logic to determine if the content of the OC-Supported- | |||
| Supported-Features AVP is out-of-scope for this specification and | Features AVP should be changed is out-of-scope for this document, | |||
| is left to implementation decisions. Care must be taken not to | as is the logic to determine the content of a modified OC- | |||
| introduce interoperability issues for downstream or upstream DOIC | Supported-Features AVP. These are left to implementation | |||
| nodes. | decisions. Care must be taken not to introduce interoperability | |||
| issues for downstream or upstream DOIC nodes. | ||||
| 3.3. DOIC Overload Condition Reporting | 4.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 7.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_REPORT" is sent to indicate the overload of a | A report of type "HOST_REPORT" is sent to indicate the overload of a | |||
| specific Diameter node for the application-id indicated in the | specific host, identified by the Origin-Host AVP of the message | |||
| transaction. When receiving an OLR of type host, a reacting node | containing the OLR, for the application-id indicated in the | |||
| applies overload abatement to what is referred to in this document as | transaction. When receiving an OLR of type "HOST_REPORT", a reacting | |||
| host-routed requests. The reacting node applies overload abatement | node applies overload abatement treatment to the host-routed requests | |||
| on those host-routed requests which the reacting node knows will be | identified by the overload abatement algorithm (see definition in | |||
| served by the server that matches the Origin-Host AVP of the received | Section 2) sent for this application to the overloaded host. | |||
| message that contained the received OLR of type host. | ||||
| A report of type "REALM_REPORT" applies to realm-routed requests for | A report of type "REALM_REPORT" is sent to indicate the overload of a | |||
| a specific realm as indicated in the Destination-Realm AVP. | realm for the application-id indicated in the transaction. The | |||
| overloaded realm is identified by the Destination-Realm AVP of the | ||||
| message containing the OLR. When receiving an OLR of type | ||||
| "REALM_REPORT", a reacting node applies overload abatement treatment | ||||
| to realm-routed requests identified by the overload abatement | ||||
| algorithm (see definition in Section 2) sent for this application to | ||||
| the overloaded realm. | ||||
| This document assumes that there is a single source for realm-reports | 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, | 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 | that each such node has full knowledge of the overload state of the | |||
| entire realm. A reacting node cannot distinguish between receiving | entire realm. A reacting node cannot distinguish between receiving | |||
| realm-reports from a single node, or from multiple nodes. | realm-reports from a single node, or from multiple nodes. | |||
| Note: Known issues exist if multiple sources for overload reports | Note: Known issues exist if multiple sources for overload reports | |||
| which apply to the same Diameter entity exist. Reacting nodes | which apply to the same Diameter entity exist. Reacting nodes | |||
| have no way of determining the source and, as such, will treat | have no way of determining the source and, as such, will treat | |||
| them as coming from a single source. Variance in sequence numbers | them as coming from a single source. Variance in sequence numbers | |||
| between the two sources can then cause incorrect overload | between the two sources can then cause incorrect overload | |||
| abatement treatment to be applied for indeterminate periods of | abatement treatment to be applied for indeterminate periods of | |||
| time. | time. | |||
| Reporting nodes are responsible for determining the need for a | Reporting nodes are responsible for determining the need for a | |||
| reduction of traffic. The method for making this determination is | reduction of traffic. The method for making this determination is | |||
| implementation specific and depend on the type of overload report | implementation specific and depend on the type of overload report | |||
| being generated. A host-report, for instance, will generally be | being generated. A host-report might be generated by tracking use of | |||
| generated by tracking utilization of resources required by the host | resources required by the host to handle transactions for the | |||
| to handle transactions for the Diameter application. A realm-report | Diameter application. A realm-report generally impacts the traffic | |||
| generally impacts the traffic sent to multiple hosts and, as such, | sent to multiple hosts and, as such, requires tracking the capacity | |||
| requires tracking the capacity all servers for realm-routed requests | of all servers able to handle realm- routed requests for the | |||
| for the application and realm. | application and realm. | |||
| Once a reporting node determines the need for a reduction in traffic, | Once a reporting node determines the need for a reduction in traffic, | |||
| it uses the DOIC defined AVPs to report on the condition. These AVPs | it uses the DOIC defined AVPs to report on the condition. These AVPs | |||
| are included in answer messages sent or relayed by the reporting | are included in answer messages sent or relayed by the reporting | |||
| node. The reporting node indicates the overload abatement algorithm | node. The reporting node indicates the overload abatement algorithm | |||
| that is to be used to handle the traffic reduction in the OC- | that is to be used to handle the traffic reduction in the OC- | |||
| Supported-Features AVP. The OC-OLR AVP is used to communicate | Supported-Features AVP. The OC-OLR AVP is used to communicate | |||
| information about the requested reduction. | information about the requested reduction. | |||
| Reacting nodes, upon receipt of an overload report, are responsible | Reacting nodes, upon receipt of an overload report, applying the | |||
| for applying the overload abatement algorithm to traffic impacted by | overload abatement algorithm to traffic impacted by the overload | |||
| the overload report. The method used to determine the requests that | report. The method used to determine the requests that are to | |||
| are to receive overload abatement treatment is dependent on the | receive overload abatement treatment is dependent on the abatement | |||
| abatement algorithm. The loss abatement algorithm is defined in this | algorithm. The loss abatement algorithm is defined in this document | |||
| document (Section 5). Other abatement algorithms can be defined in | (Section 6). Other abatement algorithms can be defined in extensions | |||
| extensions to the DOIC solutions. | to the DOIC solutions. | |||
| Two types of overload abatement treatment are defined, diversion and | Two types of overload abatement treatment are defined, diversion and | |||
| throttling. Reacting nodes are responsible for determining which | throttling. Reacting nodes are responsible for determining which | |||
| treatment is appropriate for individual requests. | treatment is appropriate for individual requests. | |||
| As the conditions that lead to the generation of the overload report | As the conditions that lead to the generation of the overload report | |||
| change the reporting node can send new overload reports requesting | change the reporting node can send new overload reports requesting | |||
| greater reduction if the condition gets worse or less reduction if | greater reduction if the condition gets worse or less reduction if | |||
| the condition improves. The reporting node sends an overload report | the condition improves. The reporting node sends an overload report | |||
| with a duration of zero to indicate that the overload condition has | with a duration of zero to indicate that the overload condition has | |||
| ended and need for use of the abatement algorithm to reduce traffic | ended and abatement is no longer needed. | |||
| 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 | 4.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, along | is based on existing Diameter based extensibility mechanisms, along | |||
| with the DOIC capability announcement mechanism. | 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 the definition of new scopes of | definition of new report types and the definition of new scopes of | |||
| messages impacted by an overload report. | messages impacted by an overload report. | |||
| The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes | A DOIC node communicates supported features by including them in the | |||
| to communicate supported features. The specific features supported | OC-Feature-Vector AVP, as a sub-AVP of OC-Supported-Features. Any | |||
| by the DOIC node are indicated in the OC-Feature-Vector AVP. DOIC | non-backwards compatible DOIC extensions define new values for the | |||
| extensions that require new normative behavior define new values for | OC-Feature-Vector AVP. DOIC extensions also have the ability to add | |||
| the OC-Feature-Vector AVP. DOIC extensions also have the ability to | new AVPs to the OC-Supported-Features AVP, if additional information | |||
| add new AVPs to the OC-Supported-Features AVP, if additional | about the new feature is required. | |||
| information about the new feature is required. | ||||
| Reporting nodes use the OC-OLR AVP to communicate overload | Overload reports can be also extended by adding new sub-AVPs to the | |||
| occurrences. This AVP can also be extended to add new AVPs allowing | OC-OLR AVP, allowing reporting nodes to communicate additional | |||
| reporting nodes to communicate additional information about handling | information about handling an overload condition. | |||
| an overload condition. | ||||
| If necessary, new extensions can also define new AVPs that are not | If necessary, new extensions can also define new AVPs that are not | |||
| part of the OC-Supported-Features and OC-OLR group AVPs. It is, | part of the OC-Supported-Features and OC-OLR group AVPs. It is, | |||
| however, recommended that DOIC extensions use the OC-Supported- | however, recommended that DOIC extensions use the OC-Supported- | |||
| Features AVP and OC-OLR AVP to carry all DOIC related AVPs. | Features AVP and OC-OLR AVP to carry all DOIC related AVPs. | |||
| 3.5. Simplified Example Architecture | 4.5. Simplified Example Architecture | |||
| Figure 1 illustrates the simplified architecture for Diameter | Figure 1 illustrates the simplified architecture for Diameter | |||
| overload information conveyance. | overload information conveyance. | |||
| Realm X Same or other Realms | Realm X Same or other Realms | |||
| <--------------------------------------> <----------------------> | <--------------------------------------> <----------------------> | |||
| +--^-----+ : (optional) : | +--^-----+ : (optional) : | |||
| |Diameter| : : | |Diameter| : : | |||
| |Server A|--+ .--. : +---^----+ : .--. | |Server A|--+ .--. : +---^----+ : .--. | |||
| skipping to change at page 12, line 39 ¶ | skipping to change at page 12, line 34 ¶ | |||
| Diameter Application Y Diameter Application Y | Diameter Application Y Diameter Application Y | |||
| Figure 1: Simplified architecture choices for overload indication | Figure 1: Simplified architecture choices for overload indication | |||
| 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 | 5. Solution Procedures | |||
| This section outlines the normative behavior for the DOIC solution. | This section outlines the normative behavior for the DOIC solution. | |||
| 4.1. Capability Announcement | 5.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 | Note: This specification assumes that changes in DOIC node | |||
| capabilities are relatively rare events that occur as a result of | ||||
| administrative action. Reacting nodes ought to minimize changes | ||||
| that force the reporting node to change the features being used, | ||||
| especially during active overload conditions. But even if | ||||
| reacting nodes avoid such changes, reporting nodes still have to | ||||
| be prepared for them to occur. For example, differing | ||||
| capabilities between multiple reacting nodes may still force a | ||||
| reporting node to select different features on a per-transaction | ||||
| basis. | ||||
| 5.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 | |||
| requests. It MAY include the OC-Feature-Vector AVP. If it does so, | requests. It MAY include the OC-Feature-Vector AVP, as a sub-avp of | |||
| it MUST indicate support for the "loss" algorithm. If the reacting | OC-Supported-Features. If it does so, it MUST indicate support for | |||
| node is configured to support features (including other algorithms) | the "loss" algorithm. If the reacting node is configured to support | |||
| in addition to the loss algorithm, it MUST indicate such support in | features (including other algorithms) in addition to the loss | |||
| an OC-Feature-Vector AVP. | algorithm, it MUST indicate such support in an OC-Feature-Vector AVP. | |||
| An OC-Supported-Features AVP in answer messages indicates there is a | An OC-Supported-Features AVP in answer messages indicates there is a | |||
| reporting node for the transaction. The reacting node MAY take | reporting node for the transaction. The reacting node MAY take | |||
| action, for example creating state for some stateful abatement | action, for example creating state for some stateful abatement | |||
| algorithm, based on the features indicated in the OC-Feature-Vector | algorithm, based on the features indicated in the OC-Feature-Vector | |||
| AVP. | AVP. | |||
| Note: The loss abatement algorithm does not require stateful | Note: The loss abatement algorithm does not require stateful | |||
| behavior when there is no active overload report. This behavior | behavior when there is no active overload report. | |||
| is described in Section 4.2 and Section 5. | ||||
| 4.1.2. Reporting Node Behavior | 5.1.2. Reporting Node Behavior | |||
| Upon receipt of a request message, a reporting node determines if | Upon receipt of a request message, a reporting node determines if | |||
| there is a reacting node for the transaction based on the presence of | there is a reacting node for the transaction based on the presence of | |||
| the OC-Supported-Features AVP in the request message. | the OC-Supported-Features AVP in the request message. | |||
| If the request message contains an OC-Supported-Features AVP then a | If the request message contains an OC-Supported-Features AVP then a | |||
| reporting node MUST include the OC-Supported-Features AVP in the | reporting node MUST include the OC-Supported-Features AVP in the | |||
| answer message for that transaction. | answer message for that transaction. | |||
| Note: Capability announcement is done on a per transaction basis. | ||||
| The reporting node cannot assume that the capabilities announced | ||||
| by a reacting node will be the same between transactions. | ||||
| A reporting node MUST NOT include the OC-Supported-Features AVP, OC- | A reporting node MUST NOT include the OC-Supported-Features AVP, 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. | |||
| A reporting node knows what overload control functionality is | A reporting node knows what overload control functionality is | |||
| supported by the reacting node based on the content of the OC- | supported by the reacting node based on the content or absence of the | |||
| Feature-Vector AVP in the request message. | OC-Feature-Vector AVP within the OC-Supported-Features AVP in the | |||
| request message. | ||||
| A reporting node MUST indicate support for one and only one abatement | A reporting node MUST indicate support for one and only one abatement | |||
| algorithm in the OC-Feature-Vector AVP. The abatement algorithm | algorithm in the OC-Feature-Vector AVP. The abatement algorithm | |||
| selected MUST indicate the abatement algorithm the reporting node | selected MUST indicate the abatement algorithm the reporting node | |||
| wants the reacting node to use when the reporting node enters an | wants the reacting node to use when the reporting node enters an | |||
| overload condition. | overload condition. | |||
| The abatement algorithm selected MUST be from the set of abatement | The abatement algorithm selected MUST be from the set of abatement | |||
| algorithms contained in the request message's OC-Feature-Vector AVP. | algorithms contained in the request message's OC-Feature-Vector AVP. | |||
| A reporting node that selects the loss algorithm may do so by | A reporting node that selects the loss algorithm may do so by | |||
| including the OC-Feature-Vector AVP with an explicit indication of | including the OC-Feature-Vector AVP with an explicit indication of | |||
| the loss algorithm, or it MAY omit OC-Feature-Vector. If it selects | the loss algorithm, or it MAY omit OC-Feature-Vector. If it selects | |||
| a different algorithm, it MUST include the OC-Feature-Vector AVP with | a different algorithm, it MUST include the OC-Feature-Vector AVP with | |||
| an explicit indication of the selected algorithm. | an explicit indication of the selected algorithm. | |||
| For an ongoing overload condition, a reporting node MUST NOT change | A reporting node MUST NOT change the selected algorithm during the | |||
| the selected algorithm during the period of time that it is in an | period of time that starts when entering an overload condition and | |||
| overload condition and, as a result, is sending OC-OLR AVPs in answer | ends when the associated OCS becomes invalid in all reacting nodes. | |||
| messages. | ||||
| The reporting node MAY change the overload abatement algorithm | The reporting node MAY change the overload abatement algorithm | |||
| indicated in the OC-Supported-Features AVP at any time as long as no | indicated in the OC-Supported-Features AVP at any time as long as no | |||
| previously sent OLRs may be active. | 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. It does so using the OC-Feature-Vector AVP. | |||
| Note: Not all DOIC features will apply to all Diameter | Note: Not all DOIC features will apply to all Diameter | |||
| applications or deployment scenarios. The features included in | applications or deployment scenarios. The features included in | |||
| the OC-Feature-Vector AVP are based on local reporting node | the OC-Feature-Vector AVP are based on local reporting node | |||
| policy. | policy. | |||
| 4.1.3. Agent Behavior | 5.1.3. Agent Behavior | |||
| Diameter Agents that support DOIC SHOULD ensure that all messages | Diameter Agents that support DOIC MAY ensure that all messages | |||
| relayed by the agent contain the OC-Supported-Features AVP. | relayed by the agent contain the OC-Supported-Features AVP. | |||
| A Diameter Agent SHOULD take on reacting node behavior for Diameter | A Diameter Agent SHOULD take on reacting node behavior for Diameter | |||
| endpoints that do not support the DOIC solution. A Diameter Agent | endpoints that do not support the DOIC solution. A Diameter Agent | |||
| detects that a Diameter endpoint does not support DOIC reacting node | detects that a Diameter endpoint does not support DOIC reacting node | |||
| behavior when there is no OC-Supported-Features AVP in a request | behavior when there is no OC-Supported-Features AVP in a request | |||
| message. | message. | |||
| For a Diameter Agent to be a reacting node for a non supporting | For a Diameter Agent to be a reacting node for a non supporting | |||
| Diameter endpoint, the Diameter Agent MUST include the OC-Supported- | Diameter endpoint, the Diameter Agent MUST include the OC-Supported- | |||
| Features AVP in request messages it receives that do not contain the | Features AVP in request messages it relays that do not contain the | |||
| OC-Supported-Features AVP. | OC-Supported-Features AVP. | |||
| A Diameter Agent SHOULD take on reporting node behavior for Diameter | A Diameter Agent MAY take on reporting node behavior for Diameter | |||
| endpoints that do not support the DOIC solution. A Diameter Agent | endpoints that do not support the DOIC solution. The Diameter Agent | |||
| detects that a Diameter endpoint does not support DOIC reporting node | MUST have visibility to all traffic destined for the non supporting | |||
| behavior when there is no OC-Supported-Features AVP in an answer | host in order to become the reporting node for the Diameter endpoint. | |||
| message for a transaction that contained the OC-Supported-Features | A Diameter Agent detects that a Diameter endpoint does not support | |||
| AVP in the request message. | DOIC reporting node behavior when there is no OC-Supported-Features | |||
| AVP in an answer message for a transaction that contained the OC- | ||||
| For a Diameter Agent to take on reporting node behavior for a non | Supported-Features AVP in the request message. | |||
| 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 | If a request already has the OC-Supported-Features AVP, a Diameter | |||
| Diameter Agent MAY leave it unchanged in the relayed message or MAY | agent MAY modify it to reflect the features appropriate for the | |||
| modify it to reflect the features appropriate for the transaction. | transaction. Otherwise, the agent relays the OC-Supported-Features | |||
| AVP without change. | ||||
| 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 Diameter Agent changes the OC-Supported-Features AVP in a | If the Diameter Agent changes the OC-Supported-Features AVP in a | |||
| request message then it is likely it will also need to modify the OC- | request message then it is likely it will also need to modify the OC- | |||
| Supported-Features AVP in the answer message for the transaction. As | Supported-Features AVP in the answer message for the transaction. A | |||
| such, a Diameter Agent MAY modify the OC-Supported-Features AVP | Diameter Agent MAY modify the OC-Supported-Features AVP carried in | |||
| carried in answer messages. | answer messages. | |||
| When making changes to the OC-Supported-Features AVP the Diameter | When making changes to the OC-Supported-Features or OC-OLR AVPs, the | |||
| Agent needs to ensure that there is no ambiguity in DOIC behavior for | Diameter Agent needs to ensure consistency in its behavior with both | |||
| both upstream and downstream DOIC nodes. | upstream and downstream DOIC nodes. | |||
| 4.2. Overload Report Processing | 5.2. Overload Report Processing | |||
| 4.2.1. Overload Control State | 5.2.1. Overload Control State | |||
| Both reacting and reporting nodes maintain Overload Control State | Both reacting and reporting nodes maintain Overload Control State | |||
| (OCS) for active overload conditions. The following sections define | (OCS) for active overload conditions. The following sections define | |||
| behavior associated with that OCS. | behavior associated with that OCS. | |||
| 4.2.1.1. Overload Control State for Reacting Nodes | 5.2.1.1. Overload Control State for Reacting Nodes | |||
| A reacting node SHOULD maintain the following OCS per supported | A reacting node 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 | |||
| the node's DiameterIdentity. | the node's DiameterIdentity. | |||
| A realm-type OCS entry is identified by the pair of application-d and | A realm-type OCS entry is identified by the pair of application-id | |||
| realm. | and 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 the OC-Supported- | o Selected Abatement Algorithm (as received in the OC-Supported- | |||
| Features AVP) | Features AVP) | |||
| o Abatement Algorithm specific input data (as received in the OC-OLR | o Abatement Algorithm specific input data (as received in the OC-OLR | |||
| AVP, for example, OC-Reduction-Percentage for the Loss abatement | AVP, for example, OC-Reduction-Percentage for the Loss abatement | |||
| algorithm) | algorithm) | |||
| 4.2.1.2. Overload Control State for Reporting Nodes | 5.2.1.2. Overload Control State for Reporting Nodes | |||
| A reporting node SHOULD maintain OCS entries per supported Diameter | A reporting node 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 tuple of Application-Id, Report- | An OCS entry is identified by the tuple of Application-Id, Report- | |||
| Type and Abatement Algorithm and MAY include the following | Type and Abatement Algorithm and 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 | 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 | 5.2.1.3. Reacting Node Maintenance of Overload Control State | |||
| When a reacting node receives an OC-OLR AVP, it MUST determine if it | When a reacting node receives an OC-OLR AVP, it MUST determine if it | |||
| is for an existing or new overload condition. | is for an existing or new overload condition. | |||
| Note: For the remainder of this section the term OLR refers to the | Note: For the remainder of this section the term OLR refers to the | |||
| combination of the contents of the received OC-OLR AVP and the | combination of the contents of the received OC-OLR AVP and the | |||
| abatement algorithm indicated in the received OC-Supported- | abatement algorithm indicated in the received OC-Supported- | |||
| Features AVP. | Features AVP. | |||
| When receiving an answer message with multiple OLRs or different | When receiving an answer message with multiple OLRs of different | |||
| types, a reporting node MUST process each received OLR. | supported report types, a reacting node MUST process each received | |||
| OLR. | ||||
| When receiving an OC-OLR AVPs with unknown values, a reacting node | When receiving an answer message with multiple OLRs and multiple of | |||
| SHOULD be silently discarded by reacting nodes and the event SHOULD | the OLRs are of the same supported report types, a reacting node | |||
| be logged. | SHOULD ignore the duplicated OLRs. | |||
| A reacting node SHOULD ignore an OC-OLR with a OC-Report-Type AVP | ||||
| that contains an unrecognized value. | ||||
| The OLR is for an existing overload condition if a reacting node has | The OLR is for an existing overload condition if a reacting node has | |||
| an OCS that matches the received OLR. | an OCS that matches the received OLR. | |||
| For a host-report this means it matches the application-id and the | For a host-report this means it matches the application-id and the | |||
| host's DiameterIdentity in an existing host OCS entry. | host's DiameterIdentity in an existing host OCS entry. | |||
| For a realm-report this means it matches the application-id and the | For a realm-report this means it matches the application-id and the | |||
| realm in an existing realm OCS entry. | realm in an existing realm OCS entry. | |||
| skipping to change at page 18, line 16 ¶ | skipping to change at page 18, line 20 ¶ | |||
| reacting node MUST update the OCS entry as being expired. | reacting node MUST update the OCS entry as being expired. | |||
| Note: It is not necessarily appropriate to delete the OCS entry, | Note: It is not necessarily appropriate to delete the OCS entry, | |||
| as there is recommended behavior that the reacting node slowly | as there is recommended behavior that the reacting node slowly | |||
| returns to full traffic when ending an overload abatement period. | returns to full traffic when ending an overload abatement 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 | 5.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. | |||
| Note: If a reporting node knows through absence of the OC- | Note: If a reporting node knows through absence of the OC- | |||
| Supported-Features AVP in received messages that there are no | Supported-Features AVP in received messages that there are no | |||
| reacting nodes supporting DOIC then the reporting node can choose | reacting nodes supporting DOIC then the reporting node can choose | |||
| to not create OCS entries. | to not create OCS entries. | |||
| When generating a new OCS entry the sequence number SHOULD be set to | When generating a new OCS entry the sequence number SHOULD be set to | |||
| skipping to change at page 19, line 6 ¶ | skipping to change at page 19, line 9 ¶ | |||
| For instance, if a reporting node wishes to instruct reacting | For instance, if a reporting node wishes to instruct reacting | |||
| nodes to continue overload abatement for a longer period of time | nodes to continue overload abatement for a longer period of time | |||
| than originally communicated. This also applies if the reporting | than originally communicated. This also applies if the reporting | |||
| node wishes to shorten the period of time that overload abatement | node wishes to shorten the period of time that overload abatement | |||
| is to continue. | is to continue. | |||
| A reporting node MUST NOT update the abatement algorithm in an active | 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, for example, | |||
| percentage used for the Loss abatement algorithm. | the reduction percentage used for the Loss abatement algorithm. | |||
| For instance, if a reporting node wishes to change the reduction | For instance, if a reporting node wishes to change the reduction | |||
| percentage either higher, if the overload condition has worsened, | percentage either higher, if the overload condition has worsened, | |||
| or lower, if the overload condition has improved, then the | or lower, if the overload condition has improved, then the | |||
| reporting node would update the appropriate OCS entry. | reporting node would update the appropriate OCS entry. | |||
| A reporting node MUST update the sequence number associated with the | A reporting node MUST increment the sequence number associated with | |||
| OCS entry anytime the contents of the OCS entry are changed. This | the OCS entry anytime the contents of the OCS entry are changed. | |||
| will result in a new sequence number being sent to reacting nodes, | This will result in a new sequence number being sent to reacting | |||
| instructing reacting nodes to process the OC-OLR AVP. | nodes, 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. | |||
| Note: If a reporting node knows that the OCS entries in the | Note: If a reporting node knows that the OCS entries in the | |||
| reacting nodes are near expiration then the reporting node might | reacting nodes are near expiration then the reporting node might | |||
| decide not to send an OLR with a validity duration of zero. | decide not to send an OLR with a validity duration of zero. | |||
| A 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 | 5.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 an active OCS then the reacting node MUST use | If the request matches an active OCS then the reacting node MUST use | |||
| the overload abatement algorithm indicated in the OCS to determine if | the overload abatement algorithm indicated in the OCS to determine if | |||
| the request is to receive overload abatement treatment. | 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 overload abatement algorithm logic applied. | Section 6 for the overload abatement algorithm logic applied. | |||
| If the overload abatement algorithm selects the request for overload | If the overload abatement algorithm selects the request for overload | |||
| abatement treatment then the reacting node MUST apply overload | abatement treatment then the reacting node MUST apply overload | |||
| abatement treatment on the request. The abatement treatment applied | abatement treatment on the request. The abatement treatment applied | |||
| depends on the context of the request. | depends on the context of the request. | |||
| If the request is a host-routed request then the reacting node SHOULD | If diversion abatement treatment is possible (i.e. a different path | |||
| apply throttling abatement treatment to the request. | for the request can be selected where the overloaded node is not part | |||
| of the different path), then the reacting node SHOULD apply diversion | ||||
| If the request is a realm-routed request then the reacting node | abatement treatment to the request. Otherwise the reacting node | |||
| SHOULD apply diversion abatement treatment to the request. | SHOULD apply throttling abatement treatment to the request. | |||
| If the overload abatement treatment results in throttling of the | If the overload abatement treatment results in throttling of the | |||
| request and if the reacting node is an agent then the agent MUST send | request and if the reacting node is an agent then the agent MUST send | |||
| an appropriate error as defined in Section 7. | an appropriate error as defined in Section 8. | |||
| The behavior of reacting nodes that are Diameter endpoints when | Diameter endpoints that throttle requests need to do so according to | |||
| throttling requests depends on the application and is outside the | the rules of the client application. Those rules will vary by | |||
| scope of this specification. | application, and are beyond the scope of this document. | |||
| In the case that the OCS entry indicated no traffic was to be sent to | In the case that the OCS entry indicated no traffic was to be sent to | |||
| the overloaded entity and the validity duration expires or has a | the overloaded entity and the validity duration expires then overload | |||
| validity duration of zero ("0"), meaning that the reporting node has | abatement associated with the overload report MUST be ended in a | |||
| explicitly signaled the end of the overload condition then overload | ||||
| abatement associated with the overload abatement MUST be ended in a | ||||
| controlled fashion. | controlled fashion. | |||
| 4.2.3. Reporting Node Behavior | 5.2.3. Reporting Node Behavior | |||
| If there is an active OCS entry then a reporting node SHOULD include | 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 | the OC-OLR AVP in all answers to requests that contain the OC- | |||
| OC-Supported-Features AVP and that match the active OCS entry. | Supported-Features AVP and that match the active OCS entry. | |||
| Note: A request matches if the application-id in the request | Note: A request matches if the application-id in the request | |||
| matches the application-id in any active OCS entry and if the | matches the application-id in any active OCS entry and if the | |||
| report-type in the OCS entry matches a report-type supported by | report-type in the OCS entry matches a report-type supported by | |||
| the reporting 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 depend on the selected algorithm. | The contents of the OC-OLR AVP depend on the selected algorithm. | |||
| 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 | |||
| skipping to change at page 20, line 51 ¶ | skipping to change at page 21, line 5 ¶ | |||
| 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: A reacting node implicitly advertises support for the host | Note: A reacting node implicitly advertises support for the host | |||
| and realm report types by including the OC-Supported-Features AVP | and realm report types by including the OC-Supported-Features AVP | |||
| in the request. Support for other report types will 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 | ||||
| the implicit overload control state cleanup on the reacting node. | ||||
| A reporting node SHOULD explicitly indicate the end of an overload | A reporting node SHOULD explicitly indicate the end of an overload | |||
| occurrence by sending a new OLR with OC-Validity-Duration set to a | occurrence by sending a new OLR with OC-Validity-Duration set to a | |||
| value of zero ("0"). The reporting node SHOULD ensure that all | value of zero ("0"). The reporting node SHOULD ensure that all | |||
| reacting nodes receive the updated overload report. | reacting nodes receive the updated overload report. | |||
| A reporting node MAY rely on the OC-Validity-Duration AVP values for | ||||
| the implicit overload control state cleanup on the reacting node. | ||||
| Note: All OLRs sent have an expiration time calculated by adding | Note: All OLRs sent have an expiration time calculated by adding | |||
| the validity-duration contained in the OLR to the time the message | the validity-duration contained in the OLR to the time the message | |||
| was 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. If the reporting node also | necessary throttling to downstream nodes. If the reporting node also | |||
| skipping to change at page 21, line 40 ¶ | skipping to change at page 21, line 43 ¶ | |||
| for reasons other than 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. The reporting | been candidates for throttling by downstream nodes. The reporting | |||
| node also has the option to send new OLRs requesting greater | node also has the option to send new OLRs requesting greater | |||
| reductions in traffic, reducing the need for local throttling. | reductions in traffic, reducing the need for local throttling. | |||
| A reporting node SHOULD decrease requested overload abatement | A reporting node SHOULD decrease requested overload abatement | |||
| treatment in a controlled fashion to avoid oscillations in traffic. | treatment in a controlled fashion to avoid oscillations in traffic. | |||
| 4.3. Protocol Extensibility | For example, it might wait some period of time after overload ends | |||
| before terminating the OLR, or it might send a series of OLRs | ||||
| indicating progressively less overload severity. | ||||
| 5.3. Protocol Extensibility | ||||
| The DOIC solution can be extended. Types of potential extensions | The DOIC solution can be extended. Types of potential extensions | |||
| include new traffic abatement algorithms, new report types or other | include new traffic abatement algorithms, new report types or other | |||
| new functionality. | new functionality. | |||
| When defining a new extension that requires new normative behavior, | When defining a new extension that requires new normative behavior, | |||
| the specification MUST define a new feature for the OC-Feature- | the specification MUST define a new feature for the OC-Feature- | |||
| Vector. This feature bit is used to communicate support for the new | Vector. This feature bit is used to communicate support for the new | |||
| feature. | 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 or | |||
| OC-OLR AVPs defined in this document. | OC-OLR AVPs defined in this document. | |||
| [RFC6733] defined Grouped AVP extension mechanisms apply. This | [RFC6733] defined Grouped AVP extension mechanisms apply. This | |||
| allows, for example, defining a new feature that is mandatory to be | allows, for example, defining a new feature that is mandatory to be | |||
| understood even when piggybacked on an existing application. | understood even when piggybacked on an existing application. | |||
| The handling of feature bits in the OC-Feature-Vector AVP that are | ||||
| not associated with overload abatement algorithms MUST be specified | ||||
| 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. | |||
| 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. | |||
| the new sub-AVPs imply new semantics for handling the indicated | ||||
| report type, then a new OC-Report-Type AVP value MUST be defined. | ||||
| Documents that introduce new report types MUST describe any | Documents that introduce new report types MUST describe any | |||
| limitations on their use across non-supporting agents. | limitations on their use across non-supporting agents. | |||
| As with any Diameter specification, RFC6733 requires all new AVPs to | ||||
| be registered with IANA. See Section 9 for the required procedures. | ||||
| New features (feature bits in the OC-Feature-Vector AVP) and report | New features (feature bits in the OC-Feature-Vector AVP) and report | |||
| types (in the OC-Report-Type AVP) MUST be registered with IANA. As | types (in the OC-Report-Type AVP) MUST be registered with IANA. | |||
| with any Diameter specification, RFC6733 requires all new AVPs to be | ||||
| registered with IANA. See Section 8 for the required procedures. | ||||
| 5. Loss Algorithm | 6. Loss Algorithm | |||
| This section documents the Diameter overload loss abatement | This section documents the Diameter overload loss abatement | |||
| algorithm. | algorithm. | |||
| 5.1. Overview | 6.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 | |||
| for any instance of overload is determined by the Diameter Overload | for any instance of overload is determined by the Diameter Overload | |||
| Capability Announcement process documented in Section 4.1. | Capability Announcement process documented in Section 5.1. | |||
| The loss algorithm described in this section is the default algorithm | The loss algorithm described in this section is the default algorithm | |||
| that must be supported by all Diameter nodes that support DOIC. | that must be supported by all Diameter nodes that support DOIC. | |||
| The loss algorithm is designed to be a straightforward and stateless | The loss algorithm is designed to be a straightforward and stateless | |||
| overload abatement algorithm. It is used by reporting nodes to | overload abatement algorithm. It is used by reporting nodes to | |||
| request a percentage reduction in the amount of traffic sent. The | request a percentage reduction in the amount of traffic sent. The | |||
| traffic impacted by the requested reduction depends on the type of | traffic impacted by the requested reduction depends on the type of | |||
| overload report. | overload report. | |||
| Reporting nodes use a strategy of applying abatement logic to the | Reporting nodes request the stateless reduction of the number of | |||
| requested percentage of request messages sent (or handled in the case | requests by an indicated percentage. This percentage reduction is in | |||
| of agents) by the reacting node that are impacted by the overload | comparison to the number of messages the node otherwise would send, | |||
| report. | regardless of how many requests the node might have sent in the past. | |||
| 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 OCS is either | 1. An overload report is received and the associated OCS 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 overload abatement treatment | 4. The reacting node determines if overload abatement treatment | |||
| should be applied to the request. One approach that could be | should be applied to the request. One approach that could be | |||
| taken for each request is to select a random number between 1 and | taken for each request is to select a random number between 1 and | |||
| 100. If the random number is less than the indicated reduction | 100. If the random number is less than or equal to the indicated | |||
| percentage then the request is given abatement treatment, | reduction percentage then the request is given abatement | |||
| otherwise the request is given normal routing treatment. | treatment, otherwise the request is given normal routing | |||
| treatment. | ||||
| 5.2. Reporting Node Behavior | 6.2. Reporting Node Behavior | |||
| The method a reporting node 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 reduction in traffic, it includes an | determines the need to request a reduction in traffic, it includes an | |||
| OC-OLR AVP in response messages as described in Section 4.2.3. | OC-OLR AVP in answer messages as described in Section 5.2.3. | |||
| When sending the OC-OLR AVP, the reporting node MUST indicate a | When sending the OC-OLR AVP, the reporting node MUST indicate a | |||
| percentage reduction in the OC-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 5.2.3. | |||
| 5.3. Reacting Node Behavior | 6.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 loss abatement | |||
| algorithm, the reacting node MUST abate the requested percentage of | algorithm, the reacting node MUST abate the requested percentage of | |||
| requests that would have otherwise been sent to the reporting host or | requests that would have 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 procedures | |||
| RECOMMENDED to be applied. The reacting node sending the traffic | are 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 | ||||
| formerly overloaded node then the reacting node SHOULD slowly | ||||
| increase the rate of traffic sent to the overloaded node. | ||||
| When an active overload report expires, it is suggested that the | ||||
| reacting node progressively decrease the amount of traffic given | ||||
| 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 | If the reacting node does not receive an OLR in answers received from | |||
| the formerly overloaded node then the reacting node SHOULD slowly | ||||
| increase the rate of traffic sent to the overloaded node. | ||||
| 7. Attribute Value Pairs | ||||
| This section describes the encoding and semantics of the Diameter | This section describes the encoding and semantics of the Diameter | |||
| Overload Indication Attribute Value Pairs (AVPs) defined in this | Overload Indication Attribute Value Pairs (AVPs) defined in this | |||
| document. | document. | |||
| A new application specification can incorporate the overload control | 7.1. OC-Supported-Features AVP | |||
| mechanism specified in this document by making it mandatory to | ||||
| implement for the application and referencing this specification | ||||
| normatively. It is the responsibility of the Diameter application | ||||
| designers to define how overload control mechanisms works on that | ||||
| application. | ||||
| 6.1. OC-Supported-Features AVP | ||||
| The OC-Supported-Features AVP (AVP code TBD1) is of type Grouped and | The OC-Supported-Features AVP (AVP code TBD1) is of type Grouped and | |||
| serves two purposes. First, it announces a node's support for the | serves two purposes. First, it announces a node's support for the | |||
| 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 | 7.2. OC-Feature-Vector AVP | |||
| 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. | ||||
| 6.2. OC-Feature-Vector AVP | ||||
| The OC-Feature-Vector AVP (AVP code TBD6) is of type Unsigned64 and | The OC-Feature-Vector AVP (AVP code TBD2) 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 | 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 | The absence of the OC-Feature-Vector AVP in request messages | |||
| 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. The absence of the OC- Feature- | |||
| Vector AVP in answer messages indicates that the default traffic | ||||
| abatement algorithm described in this specification is selected | ||||
| (while other traffic abatement algorithms may be supported), and no | ||||
| features other than abatement algorithms are 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 a DOIC reacting node it means that | When this flag is set by the a DOIC reacting node it means that | |||
| the default traffic abatement (loss) algorithm is supported. When | the default traffic abatement (loss) algorithm is supported. When | |||
| this flag is set by a DOIC reporting node it means that the loss | this flag is set by a DOIC reporting node it means that the loss | |||
| algorithm will be used for requested overload abatement. | algorithm will be used for requested overload abatement. | |||
| 6.3. OC-OLR AVP | 7.3. OC-OLR AVP | |||
| The OC-OLR AVP (AVP code TBD2) is of type Grouped and contains the | The OC-OLR AVP (AVP code TBD3) 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 application the OC-OLR AVP | |||
| contain all information needed by the reacting node to decide whether | applies to is the same as the Application-Id found in the Diameter | |||
| a subsequent request must undergo abatement using the received | message header. The host or realm the OC-OLR AVP concerns is | |||
| reduction percentage. The value of the OC-Report-Type AVP within the | determined from the Origin-Host AVP and/or Origin-Realm AVP found in | |||
| OC-OLR AVP indicates which implicit information is relevant for this | the encapsulating Diameter command. The OC-OLR AVP is intended to be | |||
| decision (see Section 6.6). The application the OC-OLR AVP applies | ||||
| to is the same as the Application-Id found in the Diameter message | ||||
| header. The host or realm the OC-OLR AVP concerns is determined from | ||||
| the Origin-Host AVP and/or Origin-Realm AVP found in the | ||||
| encapsulating Diameter command. The OC-OLR AVP is intended to 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 ] | |||
| 6.4. OC-Sequence-Number AVP | 7.4. OC-Sequence-Number AVP | |||
| The OC-Sequence-Number AVP (AVP code TBD3) is of type Unsigned64. | The OC-Sequence-Number AVP (AVP code TBD4) 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 5.2. | |||
| From the functionality point of view, the OC-Sequence-Number AVP is | From the functionality point of view, the OC-Sequence-Number AVP is | |||
| used as a non-volatile increasing counter for a sequence of overload | used as a non-volatile increasing counter for a sequence of overload | |||
| reports between two DOIC nodes for the same overload occurrence. The | reports between two DOIC nodes for the same overload occurrence. | |||
| sequence number is only required to be unique between two DOIC nodes. | ||||
| Sequence numbers are treated in a uni-directional manner, i.e. two | Sequence numbers are treated in a uni-directional manner, i.e. two | |||
| sequence numbers on each direction between two DOIC nodes are not | sequence numbers on each direction between two DOIC nodes are not | |||
| related or correlated. | related or correlated. | |||
| 6.5. OC-Validity-Duration AVP | 7.5. OC-Validity-Duration AVP | |||
| The OC-Validity-Duration AVP (AVP code TBD4) is of type Unsigned32 | The OC-Validity-Duration AVP (AVP code TBD5) is of type Unsigned32 | |||
| and indicates in milliseconds the validity time of the overload | and indicates in seconds the validity time of the overload report. | |||
| report. The number of milliseconds is measured after reception of | The number of mseconds is measured after reception of the first OC- | |||
| the first OC-OLR AVP with a given value of OC-Sequence-Number AVP. | OLR AVP with a given value of OC-Sequence-Number AVP. The default | |||
| The default value for the OC-Validity-Duration AVP is 30000 (i.e.; 30 | value for the OC-Validity-Duration AVP is 30 seconds. When the OC- | |||
| seconds). When the OC-Validity-Duration AVP is not present in the | Validity-Duration AVP is not present in the OC-OLR AVP, the default | |||
| OC-OLR AVP, the default value applies. | value applies. The maximum value for the OC-Validity-Duration AVP is | |||
| 86,400 seconds (24 hours). | ||||
| 6.6. OC-Report-Type AVP | 7.6. OC-Report-Type AVP | |||
| The OC-Report-Type AVP (AVP code TBD5) is of type Enumerated. The | The OC-Report-Type AVP (AVP code TBD6) is of type Enumerated. The | |||
| value of the AVP describes what the overload report concerns. The | value of the AVP describes what the overload report concerns. The | |||
| following values are initially defined: | following values are initially defined: | |||
| HOST_REPORT 0 The overload report is for a host. Overload abatement | HOST_REPORT 0 The overload report is for a host. Overload abatement | |||
| treatment applies to host-routed requests. | treatment applies to host-routed requests. | |||
| REALM_REPORT 1 The overload report is for a realm. Overload | REALM_REPORT 1 The overload report is for a realm. Overload | |||
| abatement treatment applies to realm-routed requests. | abatement treatment applies to realm-routed requests. | |||
| 6.7. OC-Reduction-Percentage AVP | 7.7. OC-Reduction-Percentage AVP | |||
| The OC-Reduction-Percentage AVP (AVP code TBD8) is of type Unsigned32 | The OC-Reduction-Percentage AVP (AVP code TBD7) 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 | |||
| 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 | ||||
| OC-Reduction-Percentage AVP is not present in the overload report, | ||||
| the default value applies. | ||||
| 6.8. Attribute Value Pair flag rules | 7.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 6.1 Grouped | | V | | |OC-Supported-Features TBD1 6.1 Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-OLR TBD2 6.3 Grouped | | V | | |OC-Feature-Vector TBD2 6.2 Unsigned64 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Sequence-Number TBD3 6.4 Unsigned64 | | V | | |OC-OLR TBD3 6.3 Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Validity-Duration TBD4 6.5 Unsigned32 | | V | | |OC-Sequence-Number TBD4 6.4 Unsigned64 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Report-Type TBD5 6.6 Enumerated | | V | | |OC-Validity-Duration TBD5 6.5 Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Reduction | | | | |OC-Report-Type TBD6 6.6 Enumerated | | V | | |||
| | -Percentage TBD8 6.7 Unsigned32 | | V | | ||||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Feature-Vector TBD6 6.2 Unsigned64 | | V | | |OC-Reduction | | | | |||
| | -Percentage TBD7 6.7 Unsigned32 | | V | | ||||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| As described in the Diameter base protocol [RFC6733], the M-bit usage | As described in the Diameter base protocol [RFC6733], the M-bit usage | |||
| for a given AVP in a given command may be defined by the | for a given AVP in a given command may be defined by the application. | |||
| application.. | ||||
| 7. Error Response Codes | 8. Error Response Codes | |||
| When a DOIC node rejects a Diameter request due to overload, the DOIC | When a DOIC node rejects a Diameter request due to overload, the DOIC | |||
| node MUST select an appropriate error response code. This | node MUST select an appropriate error response code. This | |||
| determination is made based on the probability of the request | determination is made based on the probability of the request | |||
| succeeding if retried on a different path. | succeeding if retried on a different path. | |||
| A reporting node rejecting a Diameter request due to an overload | A reporting node rejecting a Diameter request due to an overload | |||
| condition SHOULD send a DIAMETER-TOO-BUSY error response, if it can | condition SHOULD send a DIAMETER_TOO_BUSY error response, if it can | |||
| assume that the same request may succeed on a different path. | assume that the same request may succeed on a different path. | |||
| If a reporting node knows or assumes that the same request will not | If a reporting node knows or assumes that the same request will not | |||
| succeed on a different path, DIAMETER_UNABLE_TO_COMPLY error response | succeed on a different path, DIAMETER_UNABLE_TO_COMPLY error response | |||
| SHOULD be used. Retrying would consume valuable resources during an | SHOULD be used. Retrying would consume valuable resources during an | |||
| occurrence of overload. | occurrence of overload. | |||
| For instance, if the request arrived at the reporting node without | For instance, if the request arrived at the reporting node without | |||
| 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 | |||
| skipping to change at page 29, line 19 ¶ | skipping to change at page 28, line 40 ¶ | |||
| reporting node can assume that retrying the request would result | reporting node can assume that retrying the request would 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 | 9. IANA Considerations | |||
| 8.1. AVP codes | 9.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 7. All | |||
| AVP codes are 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 | 9.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. | |||
| A new "Overload Control Feature Vector" registry is required. The | A new "Overload Control Feature Vector" registry is required. The | |||
| registry must contain the following: | registry must contain the following: | |||
| Feature Vector Value | Feature Vector Value | |||
| Specification - the specification that defines the new value. | Specification - the specification that defines the new value. | |||
| See Section 6.2 for the initial Feature Vector Value in the registry. | See Section 7.2 for the initial Feature Vector Value in the registry. | |||
| This specification is the specification defining the value. New | This specification is the specification defining the value. New | |||
| values can be added into the registry using the Specification | values can be added into the registry using the Specification | |||
| Required policy. [RFC5226]. | Required policy. [RFC5226]. | |||
| A new "Overload Report Type" registry is required. The registry must | A new "Overload Report Type" registry is required. The registry must | |||
| contain the following: | contain the following: | |||
| Report Type Value | Report Type Value | |||
| Specification - the specification that defines the new value. | Specification - the specification that defines the new value. | |||
| See Section 6.2 for the initial assignment in the registry. New | See Section 7.6 for the initial assignment in the registry. New | |||
| types can be added using the Specification Required policy [RFC5226]. | types can be added using the Specification Required policy [RFC5226]. | |||
| 9. Security Considerations | 10. Security Considerations | |||
| DOIC gives Diameter nodes the ability to request that downstream | DOIC gives Diameter nodes the ability to request that downstream | |||
| nodes send fewer Diameter requests. Nodes do this by exchanging | nodes send fewer Diameter requests. Nodes do this by exchanging | |||
| overload reports that directly effect this reduction. This exchange | overload reports that directly effect this reduction. This exchange | |||
| is potentially subject to multiple methods of attack, and has the | is potentially subject to multiple methods of attack, and has the | |||
| potential to be used as a Denial-of-Service (DoS) attack vector. | potential to be used as a Denial-of-Service (DoS) attack 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 | 10.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 | servers may be peers, that is, they may share a direct transport | |||
| (e.g. TCP or SCTP) connection, or the messages may traverse one or | (e.g. TCP or SCTP) connection, or the messages may traverse one or | |||
| more intermediaries, known as Diameter Agents. Diameter nodes use | more intermediaries, known as Diameter Agents. Diameter nodes use | |||
| TLS, DTLS, or IPsec to authenticate peers, and to provide | TLS, DTLS, or IPsec to authenticate peers, and to provide | |||
| confidentiality and integrity protection of traffic between peers. | confidentiality and integrity protection of traffic between peers. | |||
| Nodes can make authorization decisions based on the peer identities | Nodes can make authorization decisions based on the peer identities | |||
| authenticated at the transport layer. | authenticated at the transport layer. | |||
| skipping to change at page 31, line 31 ¶ | skipping to change at page 31, line 5 ¶ | |||
| before acting on the report or forwarding the report to other peers. | before acting on the report or forwarding the report to other peers. | |||
| For example, an overload report from a peer that applies to a realm | For example, an overload report from a peer that applies to a realm | |||
| not handled by that peer is suspect. | not handled by that peer is suspect. | |||
| This attack is partially mitigated by the fact that the | This attack is partially mitigated by the fact that the | |||
| application, as well as host and realm, for a given OLR is | application, as well as host and realm, for a given OLR is | |||
| determined implicitly by respective AVPs in the enclosing answer. | determined implicitly by respective AVPs in the enclosing answer. | |||
| If a reporting node modifies any of those AVPs, the enclosing | If a reporting node modifies any of those AVPs, the enclosing | |||
| transaction will also be affected. | transaction will also be affected. | |||
| 9.2. Denial of Service Attacks | 10.2. Denial of Service Attacks | |||
| Diameter overload reports, especially realm-reports, can cause a node | Diameter overload reports, especially realm-reports, can cause a node | |||
| to cease sending some or all Diameter requests for an extended | to cease sending some or all Diameter requests for an extended | |||
| period. This makes them a tempting vector for DoS attacks. | period. This makes them a tempting vector for DoS attacks. | |||
| Furthermore, since Diameter is almost always used in support of other | Furthermore, since Diameter is almost always used in support of other | |||
| protocols, a DoS attack on Diameter is likely to impact those | protocols, a DoS attack on Diameter is likely to impact those | |||
| protocols as well. Therefore, Diameter nodes MUST NOT honor or | protocols as well. Therefore, Diameter nodes MUST NOT honor or | |||
| forward OLRs received from peers that are not trusted to send them. | forward OLRs received from peers that are not trusted to send them. | |||
| An attacker might use the information in an OLR to assist in DoS | An attacker might use the information in an OLR to assist in DoS | |||
| attacks. For example, an attacker could use information about | attacks. For example, an attacker could use information about | |||
| current overload conditions to time an attack for maximum effect, or | current overload conditions to time an attack for maximum effect, or | |||
| use subsequent overload reports as a feedback mechanism to learn the | use subsequent overload reports as a feedback mechanism to learn the | |||
| results of a previous or ongoing attack. Operators need the ability | results of a previous or ongoing attack. Operators need the ability | |||
| to ensure that OLRs are not leaked to untrusted parties. | to ensure that OLRs are not leaked to untrusted parties. | |||
| 9.3. Non-Compliant Nodes | 10.3. Non-Compliant Nodes | |||
| 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 throttle 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 | |||
| skipping to change at page 32, line 28 ¶ | skipping to change at page 31, line 45 ¶ | |||
| When a Diameter node sends an overload report, it cannot assume that | When a Diameter node sends an overload report, it cannot assume that | |||
| all nodes will comply, even if they indicate support for DOIC. A | all nodes will comply, even if they indicate support for DOIC. A | |||
| non-compliant node might continue to send requests with no reduction | non-compliant node might continue to send requests with no reduction | |||
| in load. Such non-compliance could be done accidentally, or | in load. Such non-compliance could be done accidentally, or | |||
| maliciously to gain an unfair advantage over compliant nodes. | maliciously to gain an unfair advantage over compliant nodes. | |||
| Requirement 28 [RFC7068] indicates that the overload control solution | Requirement 28 [RFC7068] indicates that the overload control solution | |||
| cannot assume that all Diameter nodes in a network are trusted, and | cannot assume that all Diameter nodes in a network are trusted, and | |||
| that malicious nodes not be allowed to take advantage of the overload | that malicious nodes not be allowed to take advantage of the overload | |||
| control mechanism to get more than their fair share of service. | control mechanism to get more than their fair share of service. | |||
| 9.4. End-to End-Security Issues | 10.4. End-to End-Security Issues | |||
| The lack of end-to-end integrity features makes it difficult to | The lack of end-to-end integrity features makes it difficult to | |||
| establish trust in overload reports received from non-adjacent nodes. | establish trust in overload reports received from non-adjacent nodes. | |||
| Any agents in the message path may insert or modify overload reports. | Any agents in the message path may insert or modify overload reports. | |||
| Nodes must trust that their adjacent peers perform proper checks on | Nodes must trust that their adjacent peers perform proper checks on | |||
| overload reports from their peers, and so on, creating a transitive- | overload reports from their peers, and so on, creating a transitive- | |||
| trust requirement extending for potentially long chains of nodes. | trust requirement extending for potentially long chains of nodes. | |||
| Network operators must determine if this transitive trust requirement | Network operators must determine if this transitive trust requirement | |||
| is acceptable for their deployments. Nodes supporting Diameter | is acceptable for their deployments. Nodes supporting Diameter | |||
| overload control MUST give operators the ability to select which | overload control MUST give operators the ability to select which | |||
| peers are trusted to deliver overload reports, and whether they are | peers are trusted to deliver overload reports, and whether they are | |||
| trusted to forward overload reports from non-adjacent nodes. DOIC | trusted to forward overload reports from non-adjacent nodes. DOIC | |||
| nodes MUST strip DOIC AVPs from messages received from peers that are | nodes MUST strip DOIC AVPs from messages received from peers that are | |||
| not trusted for DOIC purposes. | 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 | A DOIC node cannot always automatically detect that a peer also | |||
| supports DOIC. For example, a node might have a peer that is a | 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 | non-supporting agent. If nodes on the other side of that agent | |||
| send OC-Supported-Features AVPs, the agent is likely to forward | send OC-Supported-Features AVPs, the agent is likely to forward | |||
| them as unknown AVPs. Messages received across the non-supporting | them as unknown AVPs. Messages received across the non-supporting | |||
| agent may be indistinguishable from messages received across a | agent may be indistinguishable from messages received across a | |||
| skipping to change at page 33, line 31 ¶ | skipping to change at page 33, line 5 ¶ | |||
| adjacent nodes for overload control purposes. Readers should be | adjacent nodes for overload control purposes. Readers should 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 | 11. Contributors | |||
| The following people contributed substantial ideas, feedback, and | The following people contributed substantial ideas, feedback, and | |||
| discussion to this document: | discussion to this document: | |||
| o Eric McMurry | o Eric McMurry | |||
| o Hannes Tschofenig | o Hannes Tschofenig | |||
| o Ulrich Wiehe | o Ulrich Wiehe | |||
| o Jean-Jacques Trottin | o Jean-Jacques Trottin | |||
| o Maria Cruz Bartolome | o Maria Cruz Bartolome | |||
| o Martin Dolly | o Martin Dolly | |||
| o Nirav Salot | o Nirav Salot | |||
| o Susan Shishufeng | o Susan Shishufeng | |||
| 11. References | 12. References | |||
| 11.1. Normative References | 12.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
| May 2008. | May 2008. | |||
| [RFC5905] Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network | ||||
| Time Protocol Version 4: Protocol and Algorithms | ||||
| Specification", RFC 5905, June 2010. | ||||
| [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | |||
| "Diameter Base Protocol", RFC 6733, October 2012. | "Diameter Base Protocol", RFC 6733, October 2012. | |||
| 11.2. Informative References | 12.2. Informative References | |||
| [Cx] 3GPP, , "ETSI TS 129 229 V11.4.0", August 2013. | [Cx] 3GPP, , "ETSI TS 129 229 V11.4.0", August 2013. | |||
| [I-D.ietf-dime-e2e-sec-req] | [I-D.ietf-dime-e2e-sec-req] | |||
| Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay, | Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay, | |||
| "Diameter AVP Level Security: Scenarios and Requirements", | "Diameter AVP Level Security: Scenarios and Requirements", | |||
| draft-ietf-dime-e2e-sec-req-00 (work in progress), | draft-ietf-dime-e2e-sec-req-01 (work in progress), October | |||
| September 2013. | 2013. | |||
| [PCC] 3GPP, , "ETSI TS 123 203 V11.12.0", December 2013. | [PCC] 3GPP, , "ETSI TS 123 203 V11.12.0", December 2013. | |||
| [RFC4006] Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J. | [RFC4006] Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J. | |||
| Loughney, "Diameter Credit-Control Application", RFC 4006, | Loughney, "Diameter Credit-Control Application", RFC 4006, | |||
| August 2005. | August 2005. | |||
| [RFC5729] Korhonen, J., Jones, M., Morand, L., and T. Tsou, | ||||
| "Clarifications on the Routing of Diameter Requests Based | ||||
| on the Username and the Realm", RFC 5729, December 2009. | ||||
| [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. The following sub- | left for future specification and protocol work. The following sub- | |||
| sections define some of the potential extensions to the DOIC | sections define some of the potential extensions to the DOIC | |||
| solution. | 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 7.1 and 9 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 | |||
| End of changes. 154 change blocks. | ||||
| 404 lines changed or deleted | 366 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/ | ||||