| < draft-ietf-dime-ovli-08.txt | draft-ietf-dime-ovli-09.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: August 8, 2015 B. Campbell | Expires: February 7, 2016 B. Campbell | |||
| Oracle | Oracle | |||
| L. Morand | L. Morand | |||
| Orange Labs | Orange Labs | |||
| February 4, 2015 | August 6, 2015 | |||
| Diameter Overload Indication Conveyance | Diameter Overload Indication Conveyance | |||
| draft-ietf-dime-ovli-08.txt | draft-ietf-dime-ovli-09.txt | |||
| Abstract | Abstract | |||
| This specification defines a base solution for Diameter overload | This specification defines a base solution for Diameter overload | |||
| control, referred to as Diameter Overload Indication Conveyance | control, referred to as Diameter Overload Indication Conveyance | |||
| (DOIC). | (DOIC). | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on August 8, 2015. | This Internet-Draft will expire on February 7, 2016. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| 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 . . . . . . . . . . . . . . . . 3 | |||
| 3. Conventions Used in This Document . . . . . . . . . . . . . . 5 | 3. Conventions Used in This Document . . . . . . . . . . . . . . 5 | |||
| 4. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.1. Piggybacking . . . . . . . . . . . . . . . . . . . . . . 7 | 4.1. Piggybacking . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.2. DOIC Capability Announcement . . . . . . . . . . . . . . 7 | 4.2. DOIC Capability Announcement . . . . . . . . . . . . . . 7 | |||
| 4.3. DOIC Overload Condition Reporting . . . . . . . . . . . . 9 | 4.3. DOIC Overload Condition Reporting . . . . . . . . . . . . 9 | |||
| 4.4. DOIC Extensibility . . . . . . . . . . . . . . . . . . . 11 | 4.4. DOIC Extensibility . . . . . . . . . . . . . . . . . . . 11 | |||
| 4.5. Simplified Example Architecture . . . . . . . . . . . . . 11 | 4.5. Simplified Example Architecture . . . . . . . . . . . . . 11 | |||
| 5. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12 | 5. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.1. Capability Announcement . . . . . . . . . . . . . . . . . 12 | 5.1. Capability Announcement . . . . . . . . . . . . . . . . . 12 | |||
| 5.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 13 | 5.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 13 | |||
| 5.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 13 | 5.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 13 | |||
| 5.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 14 | 5.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.2. Overload Report Processing . . . . . . . . . . . . . . . 15 | 5.2. Overload Report Processing . . . . . . . . . . . . . . . 15 | |||
| 5.2.1. Overload Control State . . . . . . . . . . . . . . . 15 | 5.2.1. Overload Control State . . . . . . . . . . . . . . . 15 | |||
| 5.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 19 | 5.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 19 | |||
| 5.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 20 | 5.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 20 | |||
| 5.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 22 | 5.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 22 | |||
| 6. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 22 | 6. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 23 | 6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 6.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 23 | 6.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 24 | |||
| 6.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 24 | 6.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 24 | |||
| 7. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 24 | 7. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 25 | |||
| 7.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 25 | 7.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 25 | |||
| 7.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 25 | 7.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 25 | |||
| 7.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 25 | 7.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 7.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 26 | 7.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 26 | |||
| 7.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 26 | 7.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 26 | |||
| 7.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 26 | 7.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 27 | |||
| 7.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 27 | 7.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 27 | |||
| 7.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27 | 7.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27 | |||
| 8. Error Response Codes . . . . . . . . . . . . . . . . . . . . 28 | 8. Error Response Codes . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 9.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 28 | 9.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 9.2. New registries . . . . . . . . . . . . . . . . . . . . . 29 | 9.2. New registries . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | |||
| 10.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 30 | 10.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 30 | |||
| 10.2. Denial of Service Attacks . . . . . . . . . . . . . . . 31 | 10.2. Denial of Service Attacks . . . . . . . . . . . . . . . 31 | |||
| 10.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . 31 | 10.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . 32 | |||
| 10.4. End-to End-Security Issues . . . . . . . . . . . . . . . 32 | 10.4. End-to End-Security Issues . . . . . . . . . . . . . . . 32 | |||
| 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 33 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 33 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 34 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 33 | 12.2. Informative References . . . . . . . . . . . . . . . . . 34 | |||
| Appendix A. Issues left for future specifications . . . . . . . 34 | Appendix A. Issues left for future specifications . . . . . . . 35 | |||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 34 | A.1. Additional traffic abatement algorithms . . . . . . . . . 35 | |||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 34 | A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 35 | |||
| A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 34 | A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 35 | |||
| Appendix B. Deployment Considerations . . . . . . . . . . . . . 34 | Appendix B. Deployment Considerations . . . . . . . . . . . . . 35 | |||
| Appendix C. Requirements Conformance Analysis . . . . . . . . . 35 | Appendix C. Considerations for Applications Integrating the DOIC | |||
| C.1. Deferred Requirements . . . . . . . . . . . . . . . . . . 35 | Solution . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| C.2. Detection of non-supporting Intermediaries . . . . . . . 35 | C.1. Application Classification . . . . . . . . . . . . . . . 36 | |||
| C.3. Implicit Application Indication . . . . . . . . . . . . . 36 | C.2. Application Type Overload Implications . . . . . . . . . 37 | |||
| C.4. Stateless Operation . . . . . . . . . . . . . . . . . . . 36 | C.3. Request Transaction Classification . . . . . . . . . . . 38 | |||
| C.5. No New Vulnerabilities . . . . . . . . . . . . . . . . . 36 | C.4. Request Type Overload Implications . . . . . . . . . . . 39 | |||
| C.6. Detailed Requirements . . . . . . . . . . . . . . . . . . 36 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| C.6.1. General . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
| C.6.2. Performance . . . . . . . . . . . . . . . . . . . . . 38 | ||||
| C.6.3. Heterogeneous Support for Solution . . . . . . . . . 40 | ||||
| C.6.4. Granular Control . . . . . . . . . . . . . . . . . . 42 | ||||
| C.6.5. Priority and Policy . . . . . . . . . . . . . . . . . 43 | ||||
| C.6.6. Security . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
| C.6.7. Flexibility and Extensibility . . . . . . . . . . . . 44 | ||||
| Appendix D. Considerations for Applications Integrating the DOIC | ||||
| Solution . . . . . . . . . . . . . . . . . . . . . . 46 | ||||
| D.1. Application Classification . . . . . . . . . . . . . . . 46 | ||||
| D.2. Application Type Overload Implications . . . . . . . . . 47 | ||||
| D.3. Request Transaction Classification . . . . . . . . . . . 48 | ||||
| D.4. Request Type Overload Implications . . . . . . . . . . . 49 | ||||
| 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, | |||
| skipping to change at page 4, line 9 ¶ | skipping to change at page 3, line 43 ¶ | |||
| mechanism specified in this document by making it mandatory to | mechanism specified in this document by making it mandatory to | |||
| implement for the application and referencing this specification | implement for the application and referencing this specification | |||
| normatively. It is the responsibility of the Diameter application | normatively. It is the responsibility of the Diameter application | |||
| designers to define how overload control mechanisms works on that | designers to define how overload control mechanisms works on that | |||
| application. | application. | |||
| 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. | |||
| 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 | |||
| skipping to change at page 4, line 34 ¶ | skipping to change at page 4, line 19 ¶ | |||
| occurrence of overload control. | occurrence of overload control. | |||
| Diversion | Diversion | |||
| An overload abatement treatment where the reacting node selects | An overload abatement treatment where the reacting node selects | |||
| alternate destinations or paths for requests. | alternate destinations or paths for requests. | |||
| Host-Routed Requests | Host-Routed Requests | |||
| Requests that a reacting node knows will be served by a particular | Requests that a reacting node knows will be served by a particular | |||
| host, either due to the presence of a Destination-Host AVP, or by | host, either due to the presence of a Destination-Host Attribute | |||
| some other local knowledge on the part of the reacting node. | Value Pair (AVP), or by some other local knowledge on the part of | |||
| the reacting node. | ||||
| Overload Control State (OCS) | Overload Control State (OCS) | |||
| Internal state maintained by a reporting or reacting node | Internal state maintained by a reporting or reacting node | |||
| describing 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. | |||
| skipping to change at page 5, line 4 ¶ | skipping to change at page 4, line 38 ¶ | |||
| 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 which host will | Requests that a reacting node does not know which host will | |||
| service the request. | service the request. | |||
| Reporting Node | Reporting Node | |||
| A Diameter node that generates an overload report. (This may or | A Diameter node that generates an overload report. (This may or | |||
| may not be the overloaded node.) | may not be the overloaded node.) | |||
| Throttling | Throttling | |||
| An abatement treatment that limits the number of requests sent by | An abatement treatment that limits the number of requests sent by | |||
| the DIOC reacting node. Throttling can include a Diameter Client | the reacting node. Throttling can include a Diameter Client | |||
| choosing to not send requests, or a Diameter Agent or Server | choosing to not send requests, or a Diameter Agent or Server | |||
| rejecting requests with appropriate error responses. In both | rejecting requests with appropriate error responses. In both | |||
| cases the result of the throttling is a permanent rejection of the | cases the result of the throttling is a permanent rejection of the | |||
| transaction. | transaction. | |||
| 3. Conventions Used in This Document | 3. Conventions Used in This Document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| skipping to change at page 7, line 29 ¶ | skipping to change at page 7, line 17 ¶ | |||
| 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 may include | contained the OC-Supported-Features AVP. Reporting nodes may 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. sent 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. | |||
| 4.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 | |||
| skipping to change at page 8, line 13 ¶ | skipping to change at page 7, line 50 ¶ | |||
| the OC-Feature-Vector AVP. Any semantics associated with the | the OC-Feature-Vector AVP. Any semantics associated with the | |||
| features will be defined in extension specifications that introduce | features will be defined in extension specifications that introduce | |||
| the features. | the features. | |||
| 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 always contain an indication of | The OC-Feature-Vector AVP will always contain an indication of | |||
| support for the loss overload abatement algorithm defined in this | support for the loss overload abatement algorithm defined in this | |||
| skipping to change at page 9, line 16 ¶ | skipping to change at page 8, line 50 ¶ | |||
| features supported by the sender of a request and by agents in the | features supported by the sender of a request and by agents in the | |||
| path of a request differ. In this case, the agent can update the OC- | path of a request differ. In this case, the agent can update the OC- | |||
| Supported-Features AVP to reflect the mixture of the two sets of | Supported-Features AVP to reflect the mixture of the two sets of | |||
| supported features. | supported features. | |||
| Note: The logic to determine if the content of the OC-Supported- | Note: The logic to determine if the content of the OC-Supported- | |||
| Features AVP should be changed is out-of-scope for this document, | Features AVP should be changed is out-of-scope for this document, | |||
| as is the logic to determine the content of a modified OC- | as is the logic to determine the content of a modified OC- | |||
| Supported-Features AVP. These are left to implementation | Supported-Features AVP. These are left to implementation | |||
| decisions. Care must be taken not to introduce interoperability | decisions. Care must be taken not to introduce interoperability | |||
| issues for downstream or upstream DOIC nodes. | issues for downstream or upstream DOIC nodes. As such, the agent | |||
| must act as a fully compliant reporting node to the downstream | ||||
| reacting node and as a fully compliant reacting node to the | ||||
| upstream reporting node. | ||||
| 4.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 7.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. | |||
| skipping to change at page 11, line 5 ¶ | skipping to change at page 10, line 43 ¶ | |||
| 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 abatement is no longer needed. | ended and abatement 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. | |||
| Note that erroneous overload reports can be used for DoS attacks. | ||||
| This includes the ability to indicate that a significant reduction in | ||||
| traffic, up to and including a request for no traffic, should be sent | ||||
| to a reporting node. As such, care should be taken to verify the | ||||
| sender of overload reports. | ||||
| 4.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. | |||
| skipping to change at page 14, line 14 ¶ | skipping to change at page 14, line 14 ¶ | |||
| 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 or absence of the | supported by the reacting node based on the content or absence of the | |||
| OC-Feature-Vector AVP within the OC-Supported-Features AVP in the | OC-Feature-Vector AVP within the OC-Supported-Features AVP in the | |||
| request message. | request message. | |||
| A reporting node MUST indicate support for one and only one abatement | A reporting node MUST A reporting node MUST select a single 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 | |||
| skipping to change at page 14, line 49 ¶ | skipping to change at page 14, line 49 ¶ | |||
| Diameter Agents that support DOIC can ensure that all messages | Diameter Agents that support DOIC can ensure that all messages | |||
| relayed by the agent contain the OC-Supported-Features AVP. | relayed by the agent contain the OC-Supported-Features AVP. | |||
| A Diameter Agent MAY take on reacting node behavior for Diameter | A Diameter Agent MAY take on reacting node behavior for Diameter | |||
| endpoints that do not support the DOIC solution. A Diameter Agent | endpoints that do not support the DOIC solution. A Diameter Agent | |||
| detects that a Diameter endpoint does not support DOIC reacting node | detects that a Diameter endpoint does not support DOIC reacting node | |||
| behavior when there is no OC-Supported-Features AVP in a request | behavior when there is no OC-Supported-Features AVP in a request | |||
| message. | message. | |||
| For a Diameter Agent to be a reacting node for a non supporting | For a Diameter Agent to be a reacting node for a non-supporting | |||
| Diameter endpoint, the Diameter Agent MUST include the OC-Supported- | Diameter endpoint, the Diameter Agent MUST include the OC-Supported- | |||
| Features AVP in request messages it relays that do not contain the | Features AVP in request messages it relays that do not contain the | |||
| OC-Supported-Features AVP. | OC-Supported-Features AVP. | |||
| A Diameter Agent MAY 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. The Diameter Agent | endpoints that do not support the DOIC solution. The Diameter Agent | |||
| MUST have visibility to all traffic destined for the non supporting | MUST have visibility to all traffic destined for the non-supporting | |||
| host in order to become the reporting node for the Diameter endpoint. | host in order to become the reporting node for the Diameter endpoint. | |||
| A Diameter Agent detects that a Diameter endpoint does not support | A Diameter Agent detects that a Diameter endpoint does not support | |||
| DOIC reporting node behavior when there is no OC-Supported-Features | DOIC reporting node behavior when there is no OC-Supported-Features | |||
| AVP in an answer message for a transaction that contained the OC- | AVP in an answer message for a transaction that contained the OC- | |||
| Supported-Features AVP in the request message. | Supported-Features AVP in the request message. | |||
| If a request already has the OC-Supported-Features AVP, a Diameter | If a request already has the OC-Supported-Features AVP, a Diameter | |||
| agent MAY modify it to reflect the features appropriate for the | agent MAY modify it to reflect the features appropriate for the | |||
| transaction. Otherwise, the agent relays the OC-Supported-Features | transaction. Otherwise, the agent relays the OC-Supported-Features | |||
| AVP without change. | AVP without change. | |||
| skipping to change at page 17, line 45 ¶ | skipping to change at page 17, line 45 ¶ | |||
| If the sequence number for the received OLR is greater than the | If the sequence number for the received OLR is greater than the | |||
| sequence number stored in the matching OCS entry then a reacting node | sequence number stored in the matching OCS entry then a reacting node | |||
| MUST update the matching OCS entry. | MUST update the matching OCS entry. | |||
| If the sequence number for the received OLR is less than or equal to | If the sequence number for the received OLR is less than or equal to | |||
| the sequence number in the matching OCS entry then a reacting node | the sequence number in the matching OCS entry then a reacting node | |||
| MUST silently ignore the received OLR. The matching OCS MUST NOT be | MUST silently ignore the received OLR. The matching OCS MUST NOT be | |||
| updated in this case. | updated in this case. | |||
| If the reacting node determines that the sequence number has rolled | ||||
| over then the reacting node MUST update the matching OCS entry. This | ||||
| can be determined by recognizing that the number has changed from | ||||
| something close to the maximum value in the OC-Sequence-Number AVP to | ||||
| something close to the minimum value in the OC-Sequence-Number AVP. | ||||
| If the received OLR is for a new overload condition then a reacting | If the received OLR is for a new overload condition then a reacting | |||
| node MUST generate a new OCS entry for the overload condition. | node MUST generate a new OCS entry for the overload condition. | |||
| For a host-report this means a reacting node creates on OCS entry | For a host-report this means a reacting node creates on OCS entry | |||
| with the application-id in the received message and DiameterIdentity | with the application-id in the received message and DiameterIdentity | |||
| of the Origin-Host in the received message. | of the Origin-Host in the received message. | |||
| Note: This solution assumes that the Origin-Host AVP in the answer | Note: This solution assumes that the Origin-Host AVP in the answer | |||
| message included by the reporting node is not changed along the | message included by the reporting node is not changed along the | |||
| path to the reacting node. | path to the reacting node. | |||
| skipping to change at page 18, line 21 ¶ | skipping to change at page 18, line 28 ¶ | |||
| Origin-Realm in the received message. | Origin-Realm in the received message. | |||
| If the received OLR contains a validity duration of zero ("0") then a | If the received OLR contains a validity duration of zero ("0") then a | |||
| 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"). | |||
| 5.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 | |||
| skipping to change at page 20, line 5 ¶ | skipping to change at page 20, line 13 ¶ | |||
| 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 6 for the overload abatement algorithm logic applied. | Section 6 for the overload abatement algorithm logic applied. | |||
| If the overload abatement algorithm selects the request for overload | If the overload abatement algorithm selects the request for overload | |||
| abatement treatment then the reacting node MUST apply overload | abatement treatment then the reacting node MUST apply overload | |||
| abatement treatment on the request. The abatement treatment applied | abatement treatment on the request. The abatement treatment applied | |||
| depends on the context of the request. | depends on the context of the request. | |||
| If diversion abatement treatment is possible (i.e. a different path | If diversion abatement treatment is possible (i.e., a different path | |||
| for the request can be selected where the overloaded node is not part | for the request can be selected where the overloaded node is not part | |||
| of the different path), then the reacting node SHOULD apply diversion | of the different path), then the reacting node SHOULD apply diversion | |||
| abatement treatment to the request. The reacting node MUST apply | abatement treatment to the request. The reacting node MUST apply | |||
| throttling abatement treatment to requests identified for abatement | throttling abatement treatment to requests identified for abatement | |||
| treatment when diversion treatment is not possible or was not | treatment when diversion treatment is not possible or was not | |||
| applied. | applied. | |||
| Note: This only addresses the case where there are two defined | Note: This only addresses the case where there are two defined | |||
| abatement treatments, diversion and throttling. Any extension | abatement treatments, diversion and throttling. Any extension | |||
| that defines a new abatement treatment must also defined the | that defines a new abatement treatment must also define the | |||
| interaction of the new abatement treatment with existing | interaction of the new abatement treatment with existing | |||
| treatments. | treatments. | |||
| If the overload abatement treatment results in throttling of the | If the overload abatement treatment results in throttling of the | |||
| request and if the reacting node is an agent then the agent MUST send | request and if the reacting node is an agent then the agent MUST send | |||
| an appropriate error as defined in Section 8. | an appropriate error as defined in Section 8. | |||
| Diameter endpoints that throttle requests need to do so according to | Diameter endpoints that throttle requests need to do so according to | |||
| the rules of the client application. Those rules will vary by | the rules of the client application. Those rules will vary by | |||
| application, and are beyond the scope of this document. | application, and are beyond the scope of this document. | |||
| skipping to change at page 20, line 49 ¶ | skipping to change at page 21, line 9 ¶ | |||
| 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 | |||
| already active in the reacting node. | already active in the reacting node. | |||
| Note: In some cases (e.g. when there are one or more agents in the | Note: In some cases (e.g., when there are one or more agents in | |||
| path between reporting and reacting nodes, or when overload | the path between reporting and reacting nodes, or when overload | |||
| reports are discarded by reacting nodes) a reporting node may not | reports are discarded by reacting nodes) a reporting node may not | |||
| be able to guarantee that the reacting node has received the | be able to guarantee that the reacting node has received the | |||
| report. | report. | |||
| A reporting node MUST NOT send overload reports of a type that has | A reporting node MUST NOT send overload reports of a type that has | |||
| not been advertised as supported by the reacting node. | not been advertised as supported by the reacting node. | |||
| Note: 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 | |||
| skipping to change at page 22, line 16 ¶ | skipping to change at page 22, line 23 ¶ | |||
| before terminating the OLR, or it might send a series of OLRs | before terminating the OLR, or it might send a series of OLRs | |||
| indicating progressively less overload severity. | indicating progressively less overload severity. | |||
| 5.3. Protocol Extensibility | 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 or | 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. | |||
| When defining new report type values, the corresponding specification | When defining new report type values, the corresponding specification | |||
| MUST define the semantics of the new report types and how they affect | must define the semantics of the new report types and how they affect | |||
| the OC-OLR AVP handling. | the OC-OLR AVP handling. | |||
| The OC-Supported-Feature and OC-OLR AVPs can be expanded with | The OC-Supported-Feature and OC-OLR AVPs can be expanded with | |||
| optional sub-AVPs only if a legacy DOIC implementation can safely | optional sub-AVPs only if a legacy DOIC implementation can safely | |||
| ignore them without breaking backward compatibility for the given OC- | ignore them without breaking backward compatibility for the given OC- | |||
| Report-Type AVP value. Any new sub-AVPs MUST NOT require that the | Report-Type AVP value. Any new sub-AVPs must not require that the | |||
| M-bit be set. | M-bit be set. | |||
| Documents that introduce new report types MUST describe any | Documents that introduce new report types must describe any | |||
| limitations on their use across non-supporting agents. | limitations on their use across non-supporting agents. | |||
| As with any Diameter specification, RFC6733 requires all new AVPs to | As with any Diameter specification, RFC6733 requires all new AVPs to | |||
| be registered with IANA. See Section 9 for the required procedures. | be registered with IANA. See Section 9 for the required procedures. | |||
| New features (feature bits in the OC-Feature-Vector AVP) and report | New features (feature bits in the OC-Feature-Vector AVP) and report | |||
| types (in the OC-Report-Type AVP) MUST be registered with IANA. | types (in the OC-Report-Type AVP) MUST be registered with IANA. | |||
| 6. Loss Algorithm | 6. Loss Algorithm | |||
| This section documents the Diameter overload loss abatement | This section documents the Diameter overload loss abatement | |||
| algorithm. | algorithm. | |||
| 6.1. Overview | 6.1. Overview | |||
| skipping to change at page 23, line 41 ¶ | skipping to change at page 23, line 49 ¶ | |||
| 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 uniformly selected random | |||
| 100. If the random number is less than or equal to the indicated | number between 1 and 100. If the random number is less than or | |||
| reduction percentage then the request is given abatement | equal to the indicated reduction percentage then the request is | |||
| treatment, otherwise the request is given normal routing | given abatement treatment, otherwise the request is given normal | |||
| treatment. | routing treatment. | |||
| 6.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 answer messages as described in Section 5.2.3. | OC-OLR AVP in answer messages as described in Section 5.2.3. | |||
| skipping to change at page 24, line 32 ¶ | skipping to change at page 24, line 40 ¶ | |||
| 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. | |||
| If reacting node comes out of the 100 percent traffic reduction as a | If reacting node comes out of the 100 percent traffic reduction, | |||
| result of the overload report timing out, the reacting node sending | meaning it has received an OLR indicating that no traffic should be | |||
| the traffic SHOULD be conservative and, for example, first send | sent, as a result of the overload report timing out the reacting node | |||
| "probe" messages to learn the overload condition of the overloaded | sending the traffic SHOULD be conservative and, for example, first | |||
| node before converging to any traffic amount/rate decided by the | send "probe" messages to learn the overload condition of the | |||
| sender. Similar concerns apply in all cases when the overload report | overloaded node before converging to any traffic amount/rate decided | |||
| times out unless the previous overload report stated 0 percent | by the sender. Similar concerns apply in all cases when the overload | |||
| report times out unless the previous overload report stated 0 percent | ||||
| reduction. | reduction. | |||
| The goal of this behavior is to reduce the probability of overload | The goal of this behavior is to reduce the probability of overload | |||
| condition thrashing where an immediate transition from 100% | condition thrashing where an immediate transition from 100% | |||
| reduction to 0% reduction results in the reporting node moving | reduction to 0% reduction results in the reporting node moving | |||
| quickly back into an overload condition. | quickly back into an overload condition. | |||
| 7. Attribute Value Pairs | 7. Attribute Value Pairs | |||
| This section describes the encoding and semantics of the Diameter | This section describes the encoding and semantics of the Diameter | |||
| Overload Indication Attribute Value Pairs (AVPs) defined in this | Overload Indication Attribute Value Pairs (AVPs) defined in this | |||
| document. | document. | |||
| Refer to section 4 of [RFC6733] for more information on AVPs and AVP | ||||
| data types. | ||||
| 7.1. OC-Supported-Features AVP | 7.1. OC-Supported-Features AVP | |||
| The OC-Supported-Features AVP (AVP code TBD1) is of type Grouped and | The OC-Supported-Features AVP (AVP code TBD1) is of type Grouped and | |||
| serves two purposes. First, it announces a node's support for the | serves two purposes. First, it announces a node's support for the | |||
| 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 > | |||
| skipping to change at page 26, line 23 ¶ | skipping to change at page 26, line 36 ¶ | |||
| 7.4. OC-Sequence-Number AVP | 7.4. OC-Sequence-Number AVP | |||
| The OC-Sequence-Number AVP (AVP code TBD4) 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 5.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. | reports between two DOIC nodes for the same overload occurrence. | |||
| Sequence numbers are treated in a uni-directional manner, i.e. two | Sequence numbers are treated in a uni-directional manner, i.e., two | |||
| sequence numbers on each direction between two DOIC nodes are not | sequence numbers on each direction between two DOIC nodes are not | |||
| related or correlated. | related or correlated. | |||
| 7.5. OC-Validity-Duration AVP | 7.5. OC-Validity-Duration AVP | |||
| The OC-Validity-Duration AVP (AVP code TBD5) is of type Unsigned32 | The OC-Validity-Duration AVP (AVP code TBD5) is of type Unsigned32 | |||
| and indicates in seconds the validity time of the overload report. | and indicates in seconds the validity time of the overload report. | |||
| The number of seconds is measured after reception of the first OC-OLR | The number of seconds is measured after reception of the first OC-OLR | |||
| AVP with a given value of OC-Sequence-Number AVP. The default value | AVP with a given value of OC-Sequence-Number AVP. The default value | |||
| for the OC-Validity-Duration AVP is 30 seconds. When the OC- | for the OC-Validity-Duration AVP is 30 seconds. When the OC- | |||
| Validity-Duration AVP is not present in the OC-OLR AVP, the default | Validity-Duration AVP is not present in the OC-OLR AVP, the default | |||
| value applies. The maximum value for the OC-Validity-Duration AVP is | value applies. The maximum value for the OC-Validity-Duration AVP is | |||
| 86,400 seconds (24 hours). | 86,400 seconds (24 hours). If the value received in the OC-Validity- | |||
| Duration is greater than the maximum value then the default value | ||||
| applies. | ||||
| 7.6. OC-Report-Type AVP | 7.6. OC-Report-Type AVP | |||
| The OC-Report-Type AVP (AVP code TBD6) is of type Enumerated. The | The OC-Report-Type AVP (AVP code TBD6) is of type Enumerated. The | |||
| value of the AVP describes what the overload report concerns. The | value of the AVP describes what the overload report concerns. The | |||
| following values are initially defined: | following values are initially defined: | |||
| 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. | |||
| skipping to change at page 27, line 17 ¶ | skipping to change at page 27, line 31 ¶ | |||
| The OC-Reduction-Percentage AVP (AVP code TBD7) 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. | |||
| 7.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 7.1 Grouped | | V | | |OC-Supported-Features TBD1 7.1 Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Feature-Vector TBD2 7.2 Unsigned64 | | V | | |OC-Feature-Vector TBD2 7.2 Unsigned64 | | V | | |||
| skipping to change at page 28, line 38 ¶ | skipping to change at page 29, line 16 ¶ | |||
| negatively impact the reporting node. DIAMETER_TOO_BUSY would be | negatively impact the reporting node. DIAMETER_TOO_BUSY would be | |||
| sent in this case. | sent in this case. | |||
| If the request arrived at the reporting node with a Destination- | If the request arrived at the reporting node with a Destination- | |||
| Host AVP populated with its own Diameter identity then the | Host AVP populated with its own Diameter identity then the | |||
| 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. | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| 9.1. AVP codes | 9.1. AVP codes | |||
| New AVPs defined by this specification are listed in Section 7. 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. | |||
| 9.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 Name | ||||
| Feature Vector Value | Feature Vector Value | |||
| Specification - the specification that defines the new value. | Specification - the specification that defines the new value. | |||
| See Section 7.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 Name | ||||
| Report Type Value | Report Type Value | |||
| Specification - the specification that defines the new value. | Specification - the specification that defines the new value. | |||
| See Section 7.6 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]. | |||
| 10. 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. For | |||
| instance, a series of injected realm OLRs with a requested reduction | ||||
| percentage of 100% could be used to completely eliminate any traffic | ||||
| from being sent to that realm. | ||||
| 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. | |||
| 10.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. | |||
| When agents are involved, this presents an effectively transitive | When agents are involved, this presents an effectively transitive | |||
| trust model. That is, a Diameter client or server can authorize an | trust model. That is, a Diameter client or server can authorize an | |||
| agent for certain actions, but it must trust that agent to make | agent for certain actions, but it must trust that agent to make | |||
| appropriate authorization decisions about its peers, and so on. | appropriate authorization decisions about its peers, and so on. | |||
| skipping to change at page 30, line 50 ¶ | skipping to change at page 31, line 30 ¶ | |||
| A similar attack involves a compromised but otherwise authorized node | A similar attack involves a compromised but otherwise authorized node | |||
| that sends an inappropriate overload report. For example, a server | that sends an inappropriate overload report. For example, a server | |||
| for the realm "example.com" might send an overload report indicating | for the realm "example.com" might send an overload report indicating | |||
| that a competitor's realm "example.net" is overloaded. If other | that a competitor's realm "example.net" is overloaded. If other | |||
| nodes act on the report, they may falsely believe that "example.net" | nodes act on the report, they may falsely believe that "example.net" | |||
| is overloaded, effectively reducing that realm's capacity. | is overloaded, effectively reducing that realm's capacity. | |||
| Therefore, it's critical that nodes validate that an overload report | Therefore, it's critical that nodes validate that an overload report | |||
| received from a peer actually falls within that peer's responsibility | received from a peer actually falls within that peer's responsibility | |||
| 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 may require out-of-band, | |||
| non Diameter agreements and/or mechanisms. | ||||
| 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. | |||
| 10.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. In the worst case, where the Diameter application | |||
| forward OLRs received from peers that are not trusted to send them. | is being used for access control into an IP network, a coordinated | |||
| DOS attack could result in the blockage of all traffic into that | ||||
| network. Therefore, Diameter nodes MUST NOT honor or 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. | |||
| 10.3. Non-Compliant Nodes | 10.3. Non-Compliant Nodes | |||
| skipping to change at page 31, line 47 ¶ | skipping to change at page 32, line 31 ¶ | |||
| downstream nodes never send the excess requests in the first place. | downstream nodes never send the excess requests in the first place. | |||
| However, the presence of an overload control mechanism does not | However, the presence of an overload control mechanism does not | |||
| remove the need for these other protection strategies. | remove the need for these other protection strategies. | |||
| When a Diameter node sends an overload report, it cannot assume that | 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. It | |||
| that malicious nodes not be allowed to take advantage of the overload | also requires that malicious nodes not be allowed to take advantage | |||
| control mechanism to get more than their fair share of service. | of the overload control mechanism to get more than their fair share | |||
| of service. | ||||
| 10.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 | |||
| skipping to change at page 32, line 43 ¶ | skipping to change at page 33, line 27 ¶ | |||
| 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 | |||
| DOIC supporting agent, giving the false impression that the non- | DOIC supporting agent, giving the false impression that the non- | |||
| supporting agent actually supports DOIC. This complicates the | supporting agent actually supports DOIC. This complicates the | |||
| transitive-trust nature of DOIC. Operators need to be careful to | transitive-trust nature of DOIC. Operators need to be careful to | |||
| avoid situations where a non-supporting agent is mistakenly | avoid situations where a non-supporting agent is mistakenly | |||
| trusted to enforce DOIC related authorization policies. | trusted to enforce DOIC related authorization policies. | |||
| At the time of this writing, the DIME working group is studying | It is expected that work on end-to-end Diameter security might make | |||
| requirements for adding end-to-end security features | it easier to establish trust in non-adjacent nodes for overload | |||
| [I-D.ietf-dime-e2e-sec-req] to Diameter. These features, when they | control purposes. Readers should be reminded, however, that the | |||
| become available, might make it easier to establish trust in non- | overload control mechanism allows Diameter agents to modify AVPs in, | |||
| adjacent nodes for overload control purposes. Readers should be | or insert additional AVPs into, existing messages that are originated | |||
| reminded, however, that the overload control mechanism encourages | by other nodes. If end-to-end security is enabled, there is a risk | |||
| Diameter agents to modify AVPs in, or insert additional AVPs into, | that such modification could violate integrity protection. The | |||
| existing messages that are originated by other nodes. If end-to-end | details of using any future Diameter end-to-end security mechanism | |||
| security is enabled, there is a risk that such modification could | with overload control will require careful consideration, and are | |||
| violate integrity protection. The details of using any future | beyond the scope of this document. | |||
| Diameter end-to-end security mechanism with overload control will | ||||
| require careful consideration, and are beyond the scope of this | ||||
| document. | ||||
| 11. 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 | |||
| skipping to change at page 33, line 22 ¶ | skipping to change at page 34, line 4 ¶ | |||
| 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 | |||
| 12. References | 12. References | |||
| 12.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, | |||
| DOI 10.17487/RFC2119, March 1997, | ||||
| <http://www.rfc-editor.org/info/rfc2119>. | ||||
| [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. | DOI 10.17487/RFC5226, May 2008, | |||
| <http://www.rfc-editor.org/info/rfc5226>. | ||||
| [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | [RFC6733] Fajardo, V., Ed., Arkko, J., Loughney, J., and G. Zorn, | |||
| "Diameter Base Protocol", RFC 6733, October 2012. | Ed., "Diameter Base Protocol", RFC 6733, | |||
| DOI 10.17487/RFC6733, October 2012, | ||||
| <http://www.rfc-editor.org/info/rfc6733>. | ||||
| 12.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-01 (work in progress), October | draft-ietf-dime-e2e-sec-req-01 (work in progress), October | |||
| 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. | DOI 10.17487/RFC4006, August 2005, | |||
| <http://www.rfc-editor.org/info/rfc4006>. | ||||
| [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, DOI 10.17487/RFC7068, November | |||
| 2013, <http://www.rfc-editor.org/info/rfc7068>. | ||||
| [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. | |||
| skipping to change at page 34, line 41 ¶ | skipping to change at page 35, line 30 ¶ | |||
| 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 | |||
| This specification indicates the use of existing error messages when | This specification indicates the use of existing error messages when | |||
| nodes reject requests due to overload. The DIME working group is | nodes reject requests due to overload. There is an expectation that | |||
| considering defining additional error codes or AVPs to indicate that | additional error codes or AVPs will be defined in a separate | |||
| overload was the reason for the rejection of the message. | specification to indicate that overload was the reason for the | |||
| rejection of the message. | ||||
| Appendix B. Deployment Considerations | Appendix B. Deployment Considerations | |||
| Non Supporting Agents | Non-Supporting Agents | |||
| Due to the way that realm-routed requests are handled in Diameter | Due to the way that realm-routed requests are handled in Diameter | |||
| networks with the server selection for the request done by an | networks with the server selection for the request done by an | |||
| agent, network operators should enable DOIC at agents that perform | agent, network operators should enable DOIC at agents that perform | |||
| server selection first. | server selection first. | |||
| Topology Hiding Interactions | Topology Hiding Interactions | |||
| There exist proxies that implement what is referred to as Topology | There exist proxies that implement what is referred to as Topology | |||
| Hiding. This can include cases where the agent modifies the | Hiding. This can include cases where the agent modifies the | |||
| Origin-Host in answer messages. The behavior of the DOIC solution | Origin-Host in answer messages. The behavior of the DOIC solution | |||
| is not well understood when this happens. As such, the DOIC | is not well understood when this happens. As such, the DOIC | |||
| solution does not address this scenario. | solution does not address this scenario. | |||
| Appendix C. Requirements Conformance Analysis | Inter Realm/Administrative Domain Considerations | |||
| There are likely to be special considerations for handling DOIC | ||||
| This section contains the result of an analysis of the DOIC solutions | signaling across administrative boundaries. This includes | |||
| conformance to the requirements defined in [RFC7068]. | considerations for whether or not information included in the DOIC | |||
| signaling should be sent across those boundaries. In addition | ||||
| C.1. Deferred Requirements | consideration should be taken as to whether or not a reacting node | |||
| in one realm can be trusted to implement the requested overload | ||||
| The 3GPP has adopted an early version of this document as normative | abatement handling for overload reports received from a separately | |||
| references in various Diameter related specifications to support the | administered realm. | |||
| overload control mechanism in their release 12 framework. The DIME | ||||
| working group has therefore decided to defer certain requirements in | ||||
| order to complete the design of an extensible, generic solution | ||||
| before the deadline scheduled by the 3GPP for the completion of the | ||||
| release 12 protocol work by the end of 2014. The deferred work | ||||
| includes the following: | ||||
| o Agent Overload - The ability for an agent to report an overload | ||||
| condition of the agent itself. | ||||
| o Load Information - The ability for a node to report its load level | ||||
| when not overloaded. | ||||
| At the time of this writing, DIME has begun separate work efforts for | ||||
| these requirements. | ||||
| C.2. Detection of non-supporting Intermediaries | ||||
| The DOIC mechanism as currently defined does not allow supporting | ||||
| nodes to automatically determine whether OC-Supported-Features or OC- | ||||
| OLR AVPs are originated by a peer node, or by a non-peer node and | ||||
| sent across a non-supporting peer. This makes it impossible to | ||||
| detect the presence of non-supporting nodes between supporting nodes, | ||||
| except by configuration. The working group determined that such a | ||||
| configuration requirement is acceptable. | ||||
| This limits full compliance with certain requirements related to the | ||||
| limitation of new configuration, deployment in environments with | ||||
| mixed support, operating across non-supporting agents, and | ||||
| authorization. | ||||
| C.3. Implicit Application Indication | ||||
| The working group elected to determine the application for an | ||||
| overload report from that of the enclosing message. This prevents | ||||
| sending an OLR for an application when there are no transactions for | ||||
| that application. | ||||
| As a consequence, DOIC does not comply with the requirement to be | ||||
| able to report overload information across quiescent connections. | ||||
| DOIC does not fully comply with requirements to operate on up-to-date | ||||
| information, since if an OLR causes all transactions to stop for an | ||||
| application, the only way traffic will resume is for the OLR to | ||||
| expire. | ||||
| C.4. Stateless Operation | ||||
| RFC7068 explicitly discourages the sending of OLRs in every answer | ||||
| message, as part of the requirement to avoid additional work for | ||||
| overloaded nodes. DOIC recommends exactly that behavior during | ||||
| active overload conditions. The working group determined that doing | ||||
| otherwise would reduce reliability and increase statefulness. (Note | ||||
| that DOIC does allow nodes to avoid sending OLRs in every answer if | ||||
| they have some other method of ensuring that OLRs get to all relevant | ||||
| reacting nodes.) | ||||
| C.5. No New Vulnerabilities | ||||
| The working group believes that DOIC is compliant with the | ||||
| requirement to avoid introducing new vulnerabilities. However, this | ||||
| requirement may warrant an early security expert review. | ||||
| C.6. Detailed Requirements | ||||
| [RFC Editor: Please remove this section and subsections prior to | ||||
| publication as an RFC.] | ||||
| C.6.1. General | ||||
| REQ 1: The solution MUST provide a communication method for Diameter | ||||
| nodes to exchange load and overload information. | ||||
| *Partially Compliant*. The mechanism uses new AVPs | ||||
| piggybacked on existing Diameter messages to exchange | ||||
| overload information. It does not currently support "load" | ||||
| information or the ability to report overload of an agent. | ||||
| These have been left for future extensions. | ||||
| REQ 2: The solution MUST allow Diameter nodes to support overload | ||||
| control regardless of which Diameter applications they | ||||
| support. Diameter clients and agents must be able to use the | ||||
| received load and overload information to support graceful | ||||
| behavior during an overload condition. Graceful behavior | ||||
| under overload conditions is best described by REQ 3. | ||||
| *Partially Compliant*. The DOIC AVPs can be used in any | ||||
| application that allows the extension of AVPs. However, | ||||
| "load" information is not currently supported. | ||||
| REQ 3: The solution MUST limit the impact of overload on the overall | ||||
| useful throughput of a Diameter server, even when the | ||||
| incoming load on the network is far in excess of its | ||||
| capacity. The overall useful throughput under load is the | ||||
| ultimate measure of the value of a solution. | ||||
| *Compliant*. DOIC provides information that nodes can use to | ||||
| reduce the impact of overload. | ||||
| REQ 4: Diameter allows requests to be sent from either side of a | ||||
| connection, and either side of a connection may have need to | ||||
| provide its overload status. The solution MUST allow each | ||||
| side of a connection to independently inform the other of its | ||||
| overload status. | ||||
| *Compliant*. DOIC AVPs can be included regardless of | ||||
| transaction "direction" | ||||
| REQ 5: Diameter allows nodes to determine their peers via dynamic | ||||
| discovery or manual configuration. The solution MUST work | ||||
| consistently without regard to how peers are determined. | ||||
| *Compliant*. DOIC contains no assumptions about how peers are | ||||
| discovered. | ||||
| REQ 6: The solution designers SHOULD seek to minimize the amount of | ||||
| new configuration required in order to work. For example, it | ||||
| is better to allow peers to advertise or negotiate support | ||||
| for the solution, rather than to require that this knowledge | ||||
| to be configured at each node. | ||||
| *Partially Compliant*. Most DOIC parameters are advertised | ||||
| using the DOIC capability announcement mechanism. However, | ||||
| there are some situations where configuration is required. | ||||
| For example, a DOIC node detect the fact that a peer may not | ||||
| support DOIC when nodes on the other side of the non- | ||||
| supporting node do support DOIC without configuration. | ||||
| C.6.2. Performance | ||||
| REQ 7: The solution and any associated default algorithm(s) MUST | ||||
| ensure that the system remains stable. At some point after | ||||
| an overload condition has ended, the solution MUST enable | ||||
| capacity to stabilize and become equal to what it would be in | ||||
| the absence of an overload condition. Note that this also | ||||
| requires that the solution MUST allow nodes to shed load | ||||
| without introducing non-converging oscillations during or | ||||
| after an overload condition. | ||||
| *Compliant*. The specification offers guidance that | ||||
| implementations should apply hysteresis when recovering from | ||||
| overload, and avoid sudden ramp ups in offered load when | ||||
| recovering. | ||||
| REQ 8: Supporting nodes MUST be able to distinguish current overload | ||||
| information from stale information. | ||||
| *Partially Compliant*. DOIC overload reports are "soft | ||||
| state", that is they expire after an indicated period. DOIC | ||||
| nodes may also send reports that end existing overload | ||||
| conditions. DOIC requires reporting nodes to ensure that all | ||||
| relevant reacting nodes receive overload reports. | ||||
| However, since DOIC does not allow reporting nodes to send | ||||
| OLRs in watchdog messages, if an overload condition results | ||||
| in zero offered load, the reporting node cannot update the | ||||
| condition until the expiration of the original OLR. | ||||
| REQ 9: The solution MUST function across fully loaded as well as | ||||
| quiescent transport connections. This is partially derived | ||||
| from the requirement for stability in REQ 7. | ||||
| *Not Compliant*. DOIC does not allow OLRs to be sent over | ||||
| quiescent transport connections. This is due to the fact | ||||
| that OLRs cannot be sent outside of the application to which | ||||
| they apply. | ||||
| REQ 10: Consumers of overload information MUST be able to determine | ||||
| when the overload condition improves or ends. | ||||
| *Partially Compliant*. (See response to previous two | ||||
| requirements.) | ||||
| REQ 11: The solution MUST be able to operate in networks of different | ||||
| sizes. | ||||
| *Compliant*. DOIC makes no assumptions about the size of the | ||||
| network. DOIC can operate purely between clients and | ||||
| servers, or across agents. | ||||
| REQ 12: When a single network node fails, goes into overload, or | ||||
| suffers from reduced processing capacity, the solution MUST | ||||
| make it possible to limit the impact of the affected node on | ||||
| other nodes in the network. This helps to prevent a small- | ||||
| scale failure from becoming a widespread outage. | ||||
| *Partially Compliant*. DOIC allows overload reports for an | ||||
| entire realm, where abated traffic will not be redirected | ||||
| towards another server. But in situations where nodes choose | ||||
| to divert traffic to other nodes, DOIC offers no way of | ||||
| knowing whether the new recipients can handle the traffic if | ||||
| they have not already indicated overload. This may be | ||||
| mitigated with the use of a future "load" extension, or with | ||||
| the use of proprietary dynamic load-balancing mechanisms. | ||||
| REQ 13: The solution MUST NOT introduce substantial additional work | ||||
| for a node in an overloaded state. For example, a | ||||
| requirement for an overloaded node to send overload | ||||
| information every time it received a new request would | ||||
| introduce substantial work. | ||||
| *Not Compliant*. DOIC does in fact encourage an overloaded | ||||
| node to send an OLR in every response. The working group | ||||
| that other mechanisms to ensure that every relevant node | ||||
| receives an OLR would create even more work. [Note: This | ||||
| needs discussion.] | ||||
| REQ 14: Some scenarios that result in overload involve a rapid | ||||
| increase of traffic with little time between normal levels | ||||
| and levels that induce overload. The solution SHOULD provide | ||||
| for rapid feedback when traffic levels increase. | ||||
| *Compliant*. The piggyback mechanism allows OLRs to be sent | ||||
| at the same rate as application traffic. | ||||
| REQ 15: The solution MUST NOT interfere with the congestion control | ||||
| mechanisms of underlying transport protocols. For example, a | ||||
| solution that opened additional TCP connections when the | ||||
| network is congested would reduce the effectiveness of the | ||||
| underlying congestion control mechanisms. | ||||
| *Compliant*. DOIC does not require or recommend changes in | ||||
| the handling of transport protocols or connections. | ||||
| C.6.3. Heterogeneous Support for Solution | ||||
| REQ 16: The solution is likely to be deployed incrementally. The | ||||
| solution MUST support a mixed environment where some, but not | ||||
| all, nodes implement it. | ||||
| *Partially Compliant*. DOIC works with most mixed-deployment | ||||
| scenarios. However, it cannot work across a non-supporting | ||||
| proxy that modifies Origin-Host AVPs in answer messages. | ||||
| DOIC will have limited impact in networks where the nodes | ||||
| that perform server selections do not support the mechanism. | ||||
| REQ 17: In a mixed environment with nodes that support the solution | ||||
| and nodes that do not, the solution MUST NOT result in | ||||
| materially less useful throughput during overload as would | ||||
| have resulted if the solution were not present. It SHOULD | ||||
| result in less severe overload in this environment. | ||||
| *Compliant*. In most mixed-support deployment, DOIC will | ||||
| offer at least some value, and will not make things worse. | ||||
| REQ 18: In a mixed environment of nodes that support the solution and | ||||
| nodes that do not, the solution MUST NOT preclude elements | ||||
| that support overload control from treating elements that do | ||||
| not support overload control in an equitable fashion relative | ||||
| to those that do. Users and operators of nodes that do not | ||||
| support the solution MUST NOT unfairly benefit from the | ||||
| solution. The solution specification SHOULD provide guidance | ||||
| to implementers for dealing with elements not supporting | ||||
| overload control. | ||||
| *Compliant*. DOIC provides mechanisms to abate load from non- | ||||
| supporting sources. Furthermore, it recommends that | ||||
| reporting nodes will still need to be able to apply whatever | ||||
| protections they would ordinarily apply if DOIC were not in | ||||
| use. | ||||
| REQ 19: It MUST be possible to use the solution between nodes in | ||||
| different realms and in different administrative domains. | ||||
| *Partially Compliant*. DOIC allows sending OLRs across | ||||
| administrative domains, and potentially to nodes in other | ||||
| realms. However, an OLR cannot indicate overload for realms | ||||
| other than the one in the Origin-Realm AVP of the containing | ||||
| answer. | ||||
| REQ 20: Any explicit overload indication MUST be clearly | ||||
| distinguishable from other errors reported via Diameter. | ||||
| *Compliant*. DOIC sends explicit overload indication in | ||||
| overload reports. It does not depend on error result codes. | ||||
| REQ 21: In cases where a network node fails, is so overloaded that it | ||||
| cannot process messages, or cannot communicate due to a | ||||
| network failure, it may not be able to provide explicit | ||||
| indications of the nature of the failure or its levels of | ||||
| overload. The solution MUST result in at least as much | ||||
| useful throughput as would have resulted if the solution were | ||||
| not in place. | ||||
| *Compliant*. DOIC overload reports have the primary effect of | ||||
| suppressing message retries in overload conditions. DOIC | ||||
| recommends that messages never be silently dropped if at all | ||||
| possible. | ||||
| C.6.4. Granular Control | ||||
| REQ 22: The solution MUST provide a way for a node to throttle the | ||||
| amount of traffic it receives from a peer node. This | ||||
| throttling SHOULD be graded so that it can be applied | ||||
| gradually as offered load increases. Overload is not a | ||||
| binary state; there may be degrees of overload. | ||||
| *Compliant*. The "loss" algorithm expresses a percentage | ||||
| reduction. | ||||
| REQ 23: The solution MUST provide sufficient information to enable a | ||||
| load-balancing node to divert messages that are rejected or | ||||
| otherwise throttled by an overloaded upstream node to other | ||||
| upstream nodes that are the most likely to have sufficient | ||||
| capacity to process them. | ||||
| *Not Compliant*. DOIC provides no built in mechanism to | ||||
| determine the best place to divert messages that would | ||||
| otherwise be throttled. This can be accomplished with a | ||||
| future "load" extension, or with proprietary load balancing | ||||
| mechanisms. | ||||
| REQ 24: The solution MUST provide a mechanism for indicating load | ||||
| levels, even when not in an overload condition, to assist | ||||
| nodes in making decisions to prevent overload conditions from | ||||
| occurring. | ||||
| *Not Compliant*. "Load" information has been left for a | ||||
| future extension. | ||||
| C.6.5. Priority and Policy | ||||
| REQ 25: The base specification for the solution SHOULD offer general | ||||
| guidance on which message types might be desirable to send or | ||||
| process over others during times of overload, based on | ||||
| application-specific considerations. For example, it may be | ||||
| more beneficial to process messages for existing sessions | ||||
| ahead of new sessions. Some networks may have a requirement | ||||
| to give priority to requests associated with emergency | ||||
| sessions. Any normative or otherwise detailed definition of | ||||
| the relative priorities of message types during an overload | ||||
| condition will be the responsibility of the application | ||||
| specification. | ||||
| *Compliant*. The specification offers guidance on how | ||||
| requests might be prioritized for different types of | ||||
| applications. | ||||
| REQ 26: The solution MUST NOT prevent a node from prioritizing | ||||
| requests based on any local policy, so that certain requests | ||||
| are given preferential treatment, given additional | ||||
| retransmission, not throttled, or processed ahead of others. | ||||
| *Compliant*. Nothing in the specification prevents | ||||
| application-specific, implementation-specific, or local | ||||
| policies. | ||||
| C.6.6. Security | ||||
| REQ 27: The solution MUST NOT provide new vulnerabilities to | ||||
| malicious attack or increase the severity of any existing | ||||
| vulnerabilities. This includes vulnerabilities to DoS and | ||||
| DDoS attacks as well as replay and man-in-the-middle attacks. | ||||
| Note that the Diameter base specification [RFC6733] lacks | ||||
| end-to-end security and this must be considered (see the | ||||
| Security Considerations in [RFC7068]). Note that this | ||||
| requirement was expressed at a high level so as to not | ||||
| preclude any particular solution. It is expected that the | ||||
| solution will address this in more detail. | ||||
| *Compliant*. The working group is not aware of any such | ||||
| vulnerabilities. [This may need further analysis.] | ||||
| REQ 28: The solution MUST NOT depend on being deployed in | ||||
| environments where all Diameter nodes are completely trusted. | ||||
| It SHOULD operate as effectively as possible in environments | ||||
| where other nodes are malicious; this includes preventing | ||||
| malicious nodes from obtaining more than a fair share of | ||||
| service. Note that this does not imply any responsibility on | ||||
| the solution to detect, or take countermeasures against, | ||||
| malicious nodes. | ||||
| *Partially Compliant*. Since all Diameter security is | ||||
| currently at the transport layer, nodes must trust immediate | ||||
| peers to enforce trust policies. However, there are | ||||
| situations where a DOIC node cannot determine if an immediate | ||||
| peer supports DOIC. The authors recommend an expert security | ||||
| review. | ||||
| REQ 29: It MUST be possible for a supporting node to make | ||||
| authorization decisions about what information will be sent | ||||
| to peer nodes based on the identity of those nodes. This | ||||
| allows a domain administrator who considers the load of their | ||||
| nodes to be sensitive information to restrict access to that | ||||
| information. Of course, in such cases, there is no | ||||
| expectation that the solution itself will help prevent | ||||
| overload from that peer node. | ||||
| *Partially Compliant*. (See response to previous | ||||
| requirement.) | ||||
| REQ 30: The solution MUST NOT interfere with any Diameter-compliant | ||||
| method that a node may use to protect itself from overload | ||||
| from non-supporting nodes or from denial-of-service attacks. | ||||
| *Compliant*. The specification recommends that any such | ||||
| protection mechanism needed without DOIC should continue to | ||||
| be employed with DOIC. | ||||
| C.6.7. Flexibility and Extensibility | ||||
| REQ 31: There are multiple situations where a Diameter node may be | ||||
| overloaded for some purposes but not others. For example, | ||||
| this can happen to an agent or server that supports multiple | ||||
| applications, or when a server depends on multiple external | ||||
| resources, some of which may become overloaded while others | ||||
| are fully available. The solution MUST allow Diameter nodes | ||||
| to indicate overload with sufficient granularity to allow | ||||
| clients to take action based on the overloaded resources | ||||
| without unreasonably forcing available capacity to go unused. | ||||
| The solution MUST support specification of overload | ||||
| information with granularities of at least "Diameter node", | ||||
| "realm", and "Diameter application" and MUST allow | ||||
| extensibility for others to be added in the future. | ||||
| *Partially Compliant*. All DOIC overload reports are scoped | ||||
| to the specific application and realm. Inside that scope, | ||||
| overload can be reported at the specific server or whole | ||||
| realm scope. As currently specified, DOIC cannot indicate | ||||
| local overload for an agent. At the time of this writing, | ||||
| the DIME working group has plans to work on an agent-overload | ||||
| extension. | ||||
| DOIC allows new "scopes" through the use of extended report | ||||
| types. | ||||
| REQ 32: The solution MUST provide a method for extending the | ||||
| information communicated and the algorithms used for overload | ||||
| control. | ||||
| *Compliant*. DOIC allows new report types and abatement | ||||
| algorithms to be created. These may be indicated using the | ||||
| OC-Supported-Features AVP. | ||||
| REQ 33: The solution MUST provide a default algorithm that is | ||||
| mandatory to implement. | ||||
| *Compliant*. The "loss" algorithm is mandatory to implement. | ||||
| REQ 34: The solution SHOULD provide a method for exchanging overload | ||||
| and load information between elements that are connected by | ||||
| intermediaries that do not support the solution. | ||||
| *Partially Compliant*. DOIC information can traverse non- | ||||
| supporting agents, as long as those agents do not modify | ||||
| certain AVPs. (e.g., Origin-Host). DOIC does not provide a | ||||
| way for supporting nodes to detect such modification. | ||||
| Appendix D. Considerations for Applications Integrating the DOIC | Appendix C. Considerations for Applications Integrating the DOIC | |||
| Solution | Solution | |||
| This section outlines considerations to be taken into account when | This section outlines considerations to be taken into account when | |||
| integrating the DOIC solution into Diameter applications. | integrating the DOIC solution into Diameter applications. | |||
| D.1. Application Classification | C.1. Application Classification | |||
| The following is a classification of Diameter applications and | The following is a classification of Diameter applications and | |||
| request types. This discussion is meant to document factors that | request types. This discussion is meant to document factors that | |||
| play into decisions made by the Diameter identity responsible for | play into decisions made by the Diameter entity responsible for | |||
| handling overload reports. | handling overload reports. | |||
| Section 8.1 of [RFC6733] defines two state machines that imply two | Section 8.1 of [RFC6733] defines two state machines that imply two | |||
| types of applications, session-less and session-based applications. | types of applications, session-less and session-based applications. | |||
| The primary difference between these types of applications is the | The primary difference between these types of applications is the | |||
| lifetime of Session-Ids. | lifetime of Session-Ids. | |||
| For session-based applications, the Session-Id is used to tie | For session-based applications, the Session-Id is used to tie | |||
| multiple requests into a single session. | multiple requests into a single session. | |||
| The Credit-Control application defined in [RFC4006] is an example of | The Credit-Control application defined in [RFC4006] is an example of | |||
| a Diameter session-based application. | a Diameter session-based application. | |||
| In session-less applications, the lifetime of the Session-Id is a | In session-less applications, the lifetime of the Session-Id is a | |||
| single Diameter transaction, i.e. the session is implicitly | single Diameter transaction, i.e., the session is implicitly | |||
| terminated after a single Diameter transaction and a new Session-Id | terminated after a single Diameter transaction and a new Session-Id | |||
| is generated for each Diameter request. | is generated for each Diameter request. | |||
| For the purposes of this discussion, session-less applications are | For the purposes of this discussion, session-less applications are | |||
| further divided into two types of applications: | further divided into two types of applications: | |||
| Stateless Applications: | Stateless Applications: | |||
| Requests within a stateless application have no relationship to | Requests within a stateless application have no relationship to | |||
| each other. The 3GPP defined S13 application is an example of a | each other. The 3GPP defined S13 application is an example of a | |||
| skipping to change at page 47, line 6 ¶ | skipping to change at page 37, line 14 ¶ | |||
| Pseudo-Session Applications: | Pseudo-Session Applications: | |||
| Applications that do not rely on the Session-Id AVP for | Applications that do not rely on the Session-Id AVP for | |||
| correlation of application messages related to the same session | correlation of application messages related to the same session | |||
| but use other session-related information in the Diameter requests | but use other session-related information in the Diameter requests | |||
| for this purpose. The 3GPP defined Cx application [Cx] is an | for this purpose. The 3GPP defined Cx application [Cx] is an | |||
| example of a pseudo-session application. | example of a pseudo-session application. | |||
| The handling of overload reports must take the type of application | The handling of overload reports must take the type of application | |||
| into consideration, as discussed in Appendix D.2. | into consideration, as discussed in Appendix C.2. | |||
| D.2. Application Type Overload Implications | C.2. Application Type Overload Implications | |||
| This section discusses considerations for mitigating overload | This section discusses considerations for mitigating overload | |||
| reported by a Diameter entity. This discussion focuses on the type | reported by a Diameter entity. This discussion focuses on the type | |||
| of application. Appendix D.3 discusses considerations for handling | of application. Appendix C.3 discusses considerations for handling | |||
| various request types when the target server is known to be in an | various request types when the target server is known to be in an | |||
| overloaded state. | overloaded state. | |||
| These discussions assume that the strategy for mitigating the | These discussions assume that the strategy for mitigating the | |||
| reported overload is to reduce the overall workload sent to the | reported overload is to reduce the overall workload sent to the | |||
| overloaded entity. The concept of applying overload treatment to | overloaded entity. The concept of applying overload treatment to | |||
| requests targeted for an overloaded Diameter entity is inherent to | requests targeted for an overloaded Diameter entity is inherent to | |||
| this discussion. The method used to reduce offered load is not | this discussion. The method used to reduce offered load is not | |||
| specified here but could include routing requests to another Diameter | specified here but could include routing requests to another Diameter | |||
| entity known to be able to handle them, or it could mean rejecting | entity known to be able to handle them, or it could mean rejecting | |||
| skipping to change at page 48, line 20 ¶ | skipping to change at page 38, line 27 ¶ | |||
| towards an overloaded Diameter entity for a session-based | towards an overloaded Diameter entity for a session-based | |||
| application might tend to reject new session requests prior to | application might tend to reject new session requests prior to | |||
| rejecting intra-session requests. In addition, session ending | rejecting intra-session requests. In addition, session ending | |||
| requests might be given a lower probability of being rejected as | requests might be given a lower probability of being rejected as | |||
| rejecting session ending requests could result in session status | rejecting session ending requests could result in session status | |||
| being out of sync between the Diameter clients and servers. | being out of sync between the Diameter clients and servers. | |||
| Application designers that would decide to reject mid-session | Application designers that would decide to reject mid-session | |||
| requests will need to consider whether the rejection invalidates | requests will need to consider whether the rejection invalidates | |||
| the session and any resulting session cleanup procedures. | the session and any resulting session cleanup procedures. | |||
| D.3. Request Transaction Classification | C.3. Request Transaction Classification | |||
| Independent Request: | Independent Request: | |||
| An independent request is not correlated to any other requests | An independent request is not correlated to any other requests | |||
| and, as such, the lifetime of the session-id is constrained to an | and, as such, the lifetime of the session-id is constrained to an | |||
| individual transaction. | individual transaction. | |||
| Session-Initiating Request: | Session-Initiating Request: | |||
| A session-initiating request is the initial message that | A session-initiating request is the initial message that | |||
| skipping to change at page 49, line 13 ¶ | skipping to change at page 39, line 21 ¶ | |||
| Pseudo-Session Requests: | Pseudo-Session Requests: | |||
| Pseudo-session requests are independent requests and do not use | Pseudo-session requests are independent requests and do not use | |||
| the same Session-Id but are correlated by other session-related | the same Session-Id but are correlated by other session-related | |||
| information contained in the request. There exists Diameter | information contained in the request. There exists Diameter | |||
| applications that define an expected ordering of transactions. | applications that define an expected ordering of transactions. | |||
| This sequencing of independent transactions results in a pseudo | This sequencing of independent transactions results in a pseudo | |||
| session. The AIR, MAR and SAR requests in the 3GPP defined Cx | session. The AIR, MAR and SAR requests in the 3GPP defined Cx | |||
| [Cx] application are examples of pseudo-session requests. | [Cx] application are examples of pseudo-session requests. | |||
| D.4. Request Type Overload Implications | C.4. Request Type Overload Implications | |||
| The request classes identified in Appendix D.3 have implications on | The request classes identified in Appendix C.3 have implications on | |||
| decisions about which requests should be throttled first. The | decisions about which requests should be throttled first. The | |||
| following list of request treatment regarding throttling is provided | following list of request treatment regarding throttling is provided | |||
| as guidelines for application designers when implementing the | as guidelines for application designers when implementing the | |||
| Diameter overload control mechanism described in this document. The | Diameter overload control mechanism described in this document. The | |||
| exact behavior regarding throttling is a matter of local policy, | exact behavior regarding throttling is a matter of local policy, | |||
| unless specifically defined for the application. | unless specifically defined for the application. | |||
| Independent Requests: | Independent Requests: | |||
| Independent requests can generally be given equal treatment when | Independent requests can generally be given equal treatment when | |||
| skipping to change at page 50, line 17 ¶ | skipping to change at page 40, line 25 ¶ | |||
| sequence of requests within the pseudo session. Requests that are | sequence of requests within the pseudo session. Requests that are | |||
| earlier in the sequence might be throttled more aggressively than | earlier in the sequence might be throttled more aggressively than | |||
| requests that occur later in the sequence. | requests that occur later in the sequence. | |||
| Intra-Session Requests: | Intra-Session Requests: | |||
| There are two types of intra-sessions requests, requests that | There are two types of intra-sessions requests, requests that | |||
| terminate a session and the remainder of intra-session requests. | terminate a session and the remainder of intra-session requests. | |||
| Implementers and operators may choose to throttle session- | Implementers and operators may choose to throttle session- | |||
| terminating requests less aggressively in order to gracefully | terminating requests less aggressively in order to gracefully | |||
| terminate sessions, allow cleanup of the related resources (e.g. | terminate sessions, allow cleanup of the related resources (e.g., | |||
| session state) and avoid the need for additional intra-session | session state) and avoid the need for additional intra-session | |||
| requests. Favoring session-termination requests may reduce the | requests. Favoring session-termination requests may reduce the | |||
| session management impact on the overloaded entity. The default | session management impact on the overloaded entity. The default | |||
| handling of other intra-session requests might be to treat them | handling of other intra-session requests might be to treat them | |||
| equally when making throttling decisions. There might also be | equally when making throttling decisions. There might also be | |||
| application level considerations whether some request types are | application level considerations whether some request types are | |||
| favored over others. | favored over others. | |||
| Authors' Addresses | Authors' Addresses | |||
| End of changes. 73 change blocks. | ||||
| 581 lines changed or deleted | 158 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/ | ||||