| < draft-ietf-dime-ovli-03.txt | draft-ietf-dime-ovli-04.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: January 4, 2015 B. Campbell | Expires: April 30, 2015 B. Campbell | |||
| Oracle | Oracle | |||
| L. Morand | L. Morand | |||
| Orange Labs | Orange Labs | |||
| July 3, 2014 | October 27, 2014 | |||
| Diameter Overload Indication Conveyance | Diameter Overload Indication Conveyance | |||
| draft-ietf-dime-ovli-03.txt | draft-ietf-dime-ovli-04.txt | |||
| Abstract | Abstract | |||
| This specification documents a Diameter Overload Control (DOC) base | This specification documents a Diameter Overload Control (DOC) base | |||
| solution and the dissemination of the overload report information. | solution and the dissemination of the overload report information. | |||
| Requirements | Requirements | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 41 ¶ | |||
| 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 January 4, 2015. | This Internet-Draft will expire on April 30, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 3 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Overload Control Endpoints (Non normative) . . . . . . . 6 | 3.1. Piggybacking Principle . . . . . . . . . . . . . . . . . 7 | |||
| 3.2. Piggybacking Principle (Non normative) . . . . . . . . . 10 | 3.2. DOIC Capability Announcement . . . . . . . . . . . . . . 8 | |||
| 3.3. DOIC Capability Announcement (Non normative) . . . . . . 11 | 3.3. DOIC Overload Condition Reporting . . . . . . . . . . . . 9 | |||
| 3.4. DOIC Overload Condition Reporting (Non normative) . . . . 12 | 3.4. DOIC Extensibility . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.5. DOIC Extensibility (Non normative) . . . . . . . . . . . 13 | 3.5. Simplified Example Architecture . . . . . . . . . . . . . 11 | |||
| 3.6. Simplified Example Architecture (Non normative) . . . . . 14 | 4. Solution Procedures . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.7. Considerations for Applications Integrating the DOIC | 4.1. Capability Announcement . . . . . . . . . . . . . . . . . 12 | |||
| Solution (Non normative) . . . . . . . . . . . . . . . . 15 | 4.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 12 | |||
| 3.7.1. Application Classification (Non normative) . . . . . 15 | 4.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 12 | |||
| 3.7.2. Application Type Overload Implications (Non | 4.1.3. Agent Behavior . . . . . . . . . . . . . . . . . . . 13 | |||
| normative) . . . . . . . . . . . . . . . . . . . . . 16 | 4.2. Overload Report Processing . . . . . . . . . . . . . . . 14 | |||
| 3.7.3. Request Transaction Classification (Non normative) . 18 | 4.2.1. Overload Control State . . . . . . . . . . . . . . . 14 | |||
| 3.7.4. Request Type Overload Implications (Non normative) . 18 | 4.2.2. Reacting Node Behavior . . . . . . . . . . . . . . . 18 | |||
| 4. Solution Procedures (Normative) . . . . . . . . . . . . . . . 20 | 4.2.3. Reporting Node Behavior . . . . . . . . . . . . . . . 18 | |||
| 4.1. Capability Announcement (Normative) . . . . . . . . . . . 20 | 4.3. Protocol Extensibility . . . . . . . . . . . . . . . . . 20 | |||
| 4.1.1. Reacting Node Behavior (Normative) . . . . . . . . . 20 | 5. Loss Algorithm . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 4.1.2. Reporting Node Behavior (Normative) . . . . . . . . 21 | 5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 4.1.3. Agent Behavior (Normative) . . . . . . . . . . . . . 22 | 5.2. Reporting Node Behavior . . . . . . . . . . . . . . . . . 22 | |||
| 4.2. Overload Report Processing (Normative) . . . . . . . . . 22 | 5.3. Reacting Node Behavior . . . . . . . . . . . . . . . . . 22 | |||
| 4.2.1. Overload Control State (Normative) . . . . . . . . . 22 | 6. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 23 | |||
| 4.2.2. Reacting Node Behavior (Normative) . . . . . . . . . 24 | 6.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 23 | |||
| 4.2.3. Reporting Node Behavior (Normative) . . . . . . . . 26 | 6.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 24 | |||
| 4.2.4. Agent Behavior (Normative) . . . . . . . . . . . . . 26 | 6.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 4.3. Protocol Extensibility (Normative) . . . . . . . . . . . 27 | 6.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 25 | |||
| 5. Loss Algorithm (Normative) . . . . . . . . . . . . . . . . . 28 | 6.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 25 | |||
| 5.1. Overview (Non normative) . . . . . . . . . . . . . . . . 28 | 6.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 25 | |||
| 5.2. Use of OC-Reduction-Percentage AVP . . . . . . . . . . . 29 | 6.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 26 | |||
| 5.3. Reporting Node Behavior (Normative) . . . . . . . . . . . 29 | 6.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 27 | |||
| 5.4. Reacting Node Behavior (Normative) . . . . . . . . . . . 29 | 7. Error Response Codes . . . . . . . . . . . . . . . . . . . . 27 | |||
| 6. Attribute Value Pairs (Normative) . . . . . . . . . . . . . . 30 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 6.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 31 | 8.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 6.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 31 | 8.2. New registries . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 6.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 32 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | |||
| 6.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 33 | 9.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 29 | |||
| 6.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 33 | 9.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 30 | |||
| 6.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 34 | 9.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 30 | |||
| 6.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 35 | 9.4. End-to End-Security Issues . . . . . . . . . . . . . . . 31 | |||
| 6.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 35 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 7. Error Response Codes . . . . . . . . . . . . . . . . . . . . 36 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 32 | |||
| 8.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 36 | 11.2. Informative References . . . . . . . . . . . . . . . . . 32 | |||
| 8.2. New registries . . . . . . . . . . . . . . . . . . . . . 37 | Appendix A. Issues left for future specifications . . . . . . . 33 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 37 | A.1. Additional traffic abatement algorithms . . . . . . . . . 33 | |||
| 9.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 37 | A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 9.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 38 | A.3. New Error Diagnostic AVP . . . . . . . . . . . . . . . . 33 | |||
| 9.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 39 | Appendix B. Deployment Considerations . . . . . . . . . . . . . 34 | |||
| 9.4. End-to End-Security Issues . . . . . . . . . . . . . . . 39 | Appendix C. Requirements Conformance Analysis . . . . . . . . . 34 | |||
| 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 40 | Appendix D. Considerations for Applications Integrating the DOIC | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 | Solution . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 40 | D.1. Application Classification . . . . . . . . . . . . . . . 34 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 41 | D.2. Application Type Overload Implications . . . . . . . . . 35 | |||
| Appendix A. Issues left for future specifications . . . . . . . 41 | D.3. Request Transaction Classification . . . . . . . . . . . 36 | |||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 41 | D.4. Request Type Overload Implications . . . . . . . . . . . 37 | |||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 41 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
| A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . 42 | ||||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
| B.1. Mix of Destination-Realm routed requests and Destination- | ||||
| Host routed requests . . . . . . . . . . . . . . . . . . 42 | ||||
| Appendix C. Restructuring of -02 version of the draft . . . . . 45 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 48 | ||||
| 1. Introduction | 1. Introduction | |||
| This specification defines a base solution for Diameter Overload | This specification defines a base solution for Diameter Overload | |||
| Control (DOC), refered to as Diameter Overload Indication Conveyance | Control (DOC), referred to as Diameter Overload Indication Conveyance | |||
| (DOIC). The requirements for the solution are described and | (DOIC). The requirements for the solution are described and | |||
| discussed in the corresponding design requirements document | discussed in the corresponding design requirements document | |||
| [RFC7068]. Note that the overload control solution defined in this | [RFC7068]. Note that the overload control solution defined in this | |||
| specification does not address all the requirements listed in | specification does not address all the requirements listed in | |||
| [RFC7068]. A number of overload control related features are left | [RFC7068]. A number of overload control related features are left | |||
| for the future specifications. | for the future specifications. See Appendix A for a list of | |||
| extensions that are currently being considered. See Appendix C for | ||||
| an analysis of the conformance to the requirements specified in | ||||
| [RFC7068]. | ||||
| The solution defined in this specification addresses Diameter | The solution defined in this specification addresses Diameter | |||
| overload control between two endpoints (see Section 3.1). | overload control between Diameter nodes that support the DOIC | |||
| Furthermore, the solution is designed to apply to existing and future | solution. Furthermore, the solution which is designed to apply to | |||
| Diameter applications, requires no changes to the Diameter base | existing and future Diameter applications, requires no changes to the | |||
| protocol [RFC6733] and is deployable in environments where some | Diameter base protocol [RFC6733] and is deployable in environments | |||
| Diameter nodes do not implement the Diameter overload control | where some Diameter nodes do not implement the Diameter overload | |||
| solution defined in this specification. | control solution defined in this specification. | |||
| 2. Terminology and Abbreviations | 2. Terminology and Abbreviations | |||
| Abatement | ||||
| Reaction to receipt of an overload report resulting in a reduction | ||||
| in traffic sent to the reporting node. Abatement actions include | ||||
| diversion and throttling. | ||||
| Abatement Algorithm | Abatement Algorithm | |||
| An algorithm requested by reporting nodes and used by reacting | An mechanism requested by reporting nodes and used by reacting | |||
| nodes to reduce the amount of traffic sent during an occurrence of | nodes to reduce the amount of traffic sent during an occurrence of | |||
| overload control. | overload control. | |||
| Throttling | Diversion | |||
| Throttling is the reduction of the number of requests sent to an | Abatement of traffic sent to a reporting node by a reacting node | |||
| entity. Throttling can include a client dropping requests, or an | in response to receipt of an overload report. The abatement is | |||
| agent rejecting requests with appropriate error responses. | achieved by diverting traffic from the reporting node to another | |||
| Clients and agents can also choose to redirect throttled requests | Diameter node that is able to process the request. | |||
| to some other entity or entities capable of handling them. | ||||
| Editor's note: Propose to add a definition of Abatement to include | Host-Routed Request | |||
| both throttling and diversion (redirecting of messages) actions. | ||||
| Then to modify this definition to include just the rejecting of | ||||
| requests and adding a definition of diversion. | ||||
| Reporting Node | The set of 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 some other local knowledge on the part of the reacting | ||||
| node. | ||||
| A Diameter node that generates an overload report. (This may or | Overload Control State (OCS) | |||
| may not be the overloaded node.) | ||||
| Reporting and reacting node internally maintained state describing | ||||
| occurrences of overload control. | ||||
| Overload Report (OLR) | ||||
| Information sent by a reporting node indicating the start, | ||||
| continuation or end of an occurrence of overload control. | ||||
| Reacting Node | Reacting Node | |||
| A Diameter node that consumes and acts upon a report. Note that | A Diameter node that acts upon an overload report. | |||
| "act upon" does not necessarily mean the reacting node applies an | ||||
| abatement algorithm; it might decide to delegate that downstream, | ||||
| in which case it also becomes a "reporting node". | ||||
| Overload Control State (OCS) | Realm-Routed Request | |||
| State describing an occurrence of overload control maintained by | The set of requests that a reacting node does not know the host | |||
| reporting and reacting nodes. | that will service the request. | |||
| Overload Report (OLR) | Reporting Node | |||
| A set of AVPs sent by a reporting node indicating the start or | A Diameter node that generates an overload report. (This may or | |||
| continuation of an occurrence of overload control. | may not be the overloaded node.) | |||
| Throttling | ||||
| Throttling is the reduction of the number of requests sent to an | ||||
| entity. Throttling can include a Diameter Client or Diameter | ||||
| Server dropping requests, or a Diameter Agent rejecting requests | ||||
| with appropriate error responses. In extreme cases reporting | ||||
| nodes can also throttle requests when the requested reductions in | ||||
| traffic does not sufficiently address the overload scenario. | ||||
| 3. Solution Overview | 3. Solution Overview | |||
| The Diameter Overload Information Conveyance (DOIC) mechanism allows | The Diameter Overload Information Conveyance (DOIC) solution allows | |||
| Diameter nodes to request other nodes to perform overload abatement | Diameter nodes to request other nodes to perform overload abatement | |||
| actions, that is, actions to reduce the load offered to the | actions, that is, actions to reduce the load offered to the | |||
| overloaded node or realm. | overloaded node or realm. | |||
| A Diameter node that supports DOIC is known as a "DOIC endpoint". | A Diameter node that supports DOIC is known as a "DOIC node". Any | |||
| Any Diameter node can act as a DOIC endpoint, including clients, | Diameter node can act as a DOIC node, including clients, servers, and | |||
| servers, and agents. DOIC endpoints are further divided into | agents. DOIC nodes are further divided into "Reporting Nodes" and | |||
| "Reporting Nodes" and "Reacting Nodes." A reporting node requests | "Reacting Nodes." A reporting node requests overload abatement by | |||
| overload abatement by sending an Overload Report (OLR) to one or more | sending an Overload Report (OLR) to one or more reacting nodes. | |||
| reacting nodes. | ||||
| A reacting node consumes OLRs, and performs whatever actions are | A reacting node acts upon OLRs, and performs whatever actions are | |||
| needed to fulfill the abatement requests included in the OLRs. A | needed to fulfil the abatement requests included in the OLRs. A | |||
| Reporting node may report overload on its own behalf, or on behalf of | Reporting node may report overload on its own behalf, or on behalf of | |||
| other (typically upstream) nodes. Likewise, a reacting node may | other (typically upstream) nodes. Likewise, a reacting node may | |||
| perform overload abatement on its own behalf, or on behalf of other | perform overload abatement on its own behalf, or on behalf of other | |||
| (typically downstream) nodes. | (typically downstream) nodes. | |||
| A node's role as a DOIC endpoint is independent of its Diameter role. | A node's role as a DOIC node is independent of its Diameter role. | |||
| For example, Diameter relay and proxy agents may act as DOIC | For example, Diameter Relay and Proxy Agents may act as DOIC nodes, | |||
| endpoints, even though they are not endpoints in the Diameter sense. | even though they are not endpoints in the Diameter sense. Since | |||
| Since Diameter enables bi-directional applications, where Diameter | Diameter enables bi-directional applications, where Diameter Servers | |||
| servers can send requests towards Diameter clients, a given Diameter | can send requests towards Diameter Clients, a given Diameter node can | |||
| node can simultaneously act as a reporting node and a reacting node. | simultaneously act as a reporting node and a reacting node. | |||
| Likewise, a relay or proxy agent may act as a reacting node from the | Likewise, a relay or proxy agent may act as a reacting node from the | |||
| perspective of upstream nodes, and a reporting node from the | perspective of upstream nodes, and a reporting node from the | |||
| perspective of downstream nodes. | perspective of downstream nodes. | |||
| DOIC endpoints do not generate new messages to carry DOIC related | DOIC nodes do not generate new messages to carry DOIC related | |||
| information. Rather, they "piggyback" DOIC information over existing | information. Rather, they "piggyback" DOIC information over existing | |||
| Diameter messages by inserting new AVPs into existing Diameter | Diameter messages by inserting new AVPs into existing Diameter | |||
| requests and responses. Nodes indicate support for DOIC, and any | requests and responses. Nodes indicate support for DOIC, and any | |||
| needed DOIC parameters by inserting an OC_Supported_Features AVP | needed DOIC parameters by inserting an OC_Supported_Features AVP | |||
| (Section 6.2) into existing requests and responses. Reporting nodes | (Section 6.2) into existing requests and responses. Reporting nodes | |||
| send OLRs by inserting OC-OLR AVPs (Section 6.3). | send OLRs by inserting OC-OLR AVPs (Section 6.3). | |||
| A given OLR applies to the Diameter realm and application of the | A given OLR applies to the Diameter realm and application of the | |||
| Diameter message that carries it. If a reporting node supports more | Diameter message that carries it. If a reporting node supports more | |||
| than one realm and/or application, it reports independently for each | than one realm and/or application, it reports independently for each | |||
| combination of realm and application. Similarly, OC-Feature-Vector | combination of realm and application. Similarly, the OC-Supported- | |||
| AVPs apply to the realm and application of the enclosing message. | Features AVP applies to the realm and application of the enclosing | |||
| This implies that a node may support DOIC for one application and/or | message. This implies that a node may support DOIC for one | |||
| realm, but not another, and may indicate different DOIC parameters | application and/or realm, but not another, and may indicate different | |||
| for each application and realm for which it supports DOIC. | DOIC parameters for each application and realm for which it supports | |||
| DOIC. | ||||
| Reacting nodes perform overload abatement according to an agreed-upon | Reacting nodes perform overload abatement according to an agreed-upon | |||
| abatement algorithm. An abatement algorithm defines the meaning of | abatement algorithm. An abatement algorithm defines the meaning of | |||
| the parameters of an OLR, and the procedures required for overload | the parameters of an OLR and the procedures required for overload | |||
| abatement. This document specifies a single must-support algorithm, | abatement. This document specifies a single must-support algorithm, | |||
| namely the "loss" algorithm Section 5). Future specifications may | namely the "loss" algorithm (Section 5). Future specifications may | |||
| introduce new algorithms. | introduce new algorithms. | |||
| Overload conditions may vary in scope. For example, a single | Overload conditions may vary in scope. For example, a single | |||
| Diameter node may be overloaded, in which case reacting nodes may | Diameter node may be overloaded, in which case reacting nodes may | |||
| reasonably attempt to send throttled requests to other destinations | reasonably attempt to send requests to other destinations or via | |||
| or via other agents. On the other hand, an entire Diameter realm may | other agents. On the other hand, an entire Diameter realm may be | |||
| be overloaded, in which case such attempts would do harm. DOIC OLRs | overloaded, in which case such attempts would do harm. DOIC OLRs | |||
| have a concept of "report type" (Section 6.6), where the type defines | have a concept of "report type" (Section 6.6), where the type defines | |||
| such behaviors. Report types are extensible. This document defines | such behaviors. Report types are extensible. This document defines | |||
| report types for overload of a specific server, and for overload of | report types for overload of a specific server, and for overload of | |||
| an entire realm. | an entire realm. | |||
| A report of type host is sent to indicate the overload of a specific | ||||
| server for the application-id indicated in the transaction. When | ||||
| receiving an OLR of type host, a reacting node applies overload | ||||
| abatement to what is referred to in this document as host-routed | ||||
| requests. This is the set of requests that the reacting node knows | ||||
| will be served by a particular host, either due to the presence of a | ||||
| Destination-Host AVP, or by some other local knowledge on the part of | ||||
| the reacting node. The reacting node applies overload abatement on | ||||
| those host-routed requests which the reacting node knows will be | ||||
| served by the server that matches the Origin-Host AVP of the received | ||||
| message that contained the received OLR of type host. | ||||
| A report type of realm is sent to indicate the overload of all | ||||
| servers in a realm for the application-id. When receiving an OLR of | ||||
| type realm, a reacting node applies overload abatement to what is | ||||
| referred to in this document as realm-routed requests. This is the | ||||
| set of requests that are not host-routed as defined in the previous | ||||
| paragraph. | ||||
| While a reporting node sends OLRs to "adjacent" reacting nodes, nodes | While a reporting node sends OLRs to "adjacent" reacting nodes, nodes | |||
| that are "adjacent" for DOIC purposes may not be adjacent from a | that are "adjacent" for DOIC purposes may not be adjacent from a | |||
| Diameter, or transport, perspective. For example, one or more | Diameter, or transport, perspective. For example, one or more | |||
| Diameter agents that do not support DOIC may exist between a given | Diameter agents that do not support DOIC may exist between a given | |||
| pair of reporting and reacting nodes, as long as those agents pass | pair of reporting and reacting nodes, as long as those agents pass | |||
| unknown AVPs through unmolested. The report types described in this | unknown AVPs through unchanged. The report types described in this | |||
| document can safely pass through non-supporting agents. This may not | document can safely pass through non-supporting agents. This may not | |||
| be true for report types defined in future specifications. Documents | be true for report types defined in future specifications. Documents | |||
| that introduce new report types MUST describe any limitations on | that introduce new report types MUST describe any limitations on | |||
| their use across non-supporting agents. | their use across non-supporting agents. | |||
| 3.1. Overload Control Endpoints (Non normative) | 3.1. Piggybacking Principle | |||
| The overload control solution can be considered as an overlay on top | ||||
| of an arbitrary Diameter network. The overload control information | ||||
| is exchanged over on a "DOIC association" established between two | ||||
| communication endpoints. The endpoints, namely the "reacting node" | ||||
| and the "reporting node" do not need to be adjacent Diameter peer | ||||
| nodes, nor they need to be the end-to-end Diameter nodes in a typical | ||||
| "client-server" deployment with multiple intermediate Diameter agent | ||||
| nodes in between. The overload control endpoints are the two | ||||
| Diameter nodes that decide to exchange overload control information | ||||
| between each other. How the endpoints are determined is specific to | ||||
| a deployment, a Diameter node role in that deployment and local | ||||
| configuration. | ||||
| The following diagrams illustrate the concept of Diameter Overload | ||||
| Endpoints and how they differ from the standard [RFC6733] defined | ||||
| client, server and agent Diameter nodes. The following is the key to | ||||
| the elements in the diagrams: | ||||
| C Diameter client as defined in [RFC6733]. | ||||
| S Diameter server as defined in [RFC6733]. | ||||
| A Diameter agent, in either a relay or proxy mode, as defined in | ||||
| [RFC6733]. | ||||
| DEP Diameter Overload Endpoint as defined in this document. In the | ||||
| following figures a DEP may terminate two different DOIC | ||||
| associations being a reporter and reactor at the same time. | ||||
| Diameter Session A Diameter session as defined in [RFC6733]. | ||||
| DOIC Association A DOIC association exists between two Diameter | ||||
| Overload Endpoints. One of the endpoints is the overload reporter | ||||
| and the other is the overload reactor. | ||||
| Figure 1 illustrates the most basic configuration where a client is | ||||
| connected directly to a server. In this case, the Diameter session | ||||
| and the DOIC association are both between the client and server. | ||||
| +-----+ +-----+ | ||||
| | C | | S | | ||||
| +-----+ +-----+ | ||||
| | DEP | | DEP | | ||||
| +--+--+ +--+--+ | ||||
| | | | ||||
| | | | ||||
| |{Diameter Session}| | ||||
| | | | ||||
| |{DOIC Association}| | ||||
| | | | ||||
| Figure 1: Basic DOIC deployment | ||||
| In Figure 2 there is an agent that is not participating directly in | ||||
| the exchange of overload reports. As a result, the Diameter session | ||||
| and the DOIC association are still established between the client and | ||||
| the server. | ||||
| +-----+ +-----+ +-----+ | ||||
| | C | | A | | S | | ||||
| +-----+ +--+--+ +-----+ | ||||
| | DEP | | | DEP | | ||||
| +--+--+ | +--+--+ | ||||
| | | | | ||||
| | | | | ||||
| |----------{Diameter Session}---------| | ||||
| | | | | ||||
| |----------{DOIC Association}---------| | ||||
| | | | | ||||
| Figure 2: DOIC deployment with non participating agent | ||||
| Figure 3 illustrates the case where the client does not support | ||||
| Diameter overload. In this case, the DOIC association is between the | ||||
| agent and the server. The agent handles the role of the reactor for | ||||
| overload reports generated by the server. | ||||
| +-----+ +-----+ +-----+ | ||||
| | C | | A | | S | | ||||
| +--+--+ +-----+ +-----+ | ||||
| | | DEP | | DEP | | ||||
| | +--+--+ +--+--+ | ||||
| | | | | ||||
| | | | | ||||
| |----------{Diameter Session}---------| | ||||
| | | | | ||||
| | |{DOIC Association}| | ||||
| | | | | ||||
| Figure 3: DOIC deployment with non-DOIC client and DOIC enabled agent | ||||
| In Figure 4 there is a DOIC association between the client and the | ||||
| agent and a second DOIC association between the agent and the server. | ||||
| One use case requiring this configuration is when the agent is | ||||
| serving as a SFE for a set of servers. | ||||
| +-----+ +-----+ +-----+ | ||||
| | C | | A | | S | | ||||
| +-----+ +-----+ +-----+ | ||||
| | DEP | | DEP | | DEP | | ||||
| +--+--+ +--+--+ +--+--+ | ||||
| | | | | ||||
| | | | | ||||
| |----------{Diameter Session}---------| | ||||
| | | | | ||||
| |{DOIC Association}|{DOIC Association}| | ||||
| | | and/or | ||||
| |----------{DOIC Association}---------| | ||||
| | | | | ||||
| Figure 4: A deployment where all nodes support DOIC | ||||
| Figure 5 illustrates a deployment where some clients support Diameter | ||||
| overload control and some do not. In this case the agent must | ||||
| support Diameter overload control for the non supporting client. It | ||||
| might also need to have a DOIC association with the server, as shown | ||||
| here, to handle overload for a server farm and/or for managing Realm | ||||
| overload. | ||||
| +-----+ +-----+ +-----+ +-----+ | ||||
| | C1 | | C2 | | A | | S | | ||||
| +-----+ +--+--+ +-----+ +-----+ | ||||
| | DEP | | | DEP | | DEP | | ||||
| +--+--+ | +--+--+ +--+--+ | ||||
| | | | | | ||||
| | | | | | ||||
| |-------------------{Diameter Session}-------------------| | ||||
| | | | | | ||||
| | |--------{Diameter Session}-----------| | ||||
| | | | | | ||||
| |---------{DOIC Association}----------|{DOIC Association}| | ||||
| | | | and/or | ||||
| |-------------------{DOIC Association}-------------------| | ||||
| | | | | | ||||
| Figure 5: A deployment with DOIC and non-DOIC supporting clients | ||||
| Editor's note: Propose to remove C1, which is already shown in a | ||||
| previous figure. Have this focus just on the non supporting client | ||||
| scenario. | ||||
| Figure 6 illustrates a deployment where some agents support Diameter | ||||
| overload control and others do not. | ||||
| +-----+ +-----+ +-----+ +-----+ | ||||
| | C | | A | | A | | S | | ||||
| +-----+ +--+--+ +-----+ +-----+ | ||||
| | DEP | | | DEP | | DEP | | ||||
| +--+--+ | +--+--+ +--+--+ | ||||
| | | | | | ||||
| | | | | | ||||
| |-------------------{Diameter Session}-------------------| | ||||
| | | | | | ||||
| | | | | | ||||
| |---------{DOIC Association}----------|{DOIC Association}| | ||||
| | | | and/or | ||||
| |-------------------{DOIC Association}-------------------| | ||||
| | | | | | ||||
| Figure 6: A deployment with DOIC and non-DOIC supporting agents | ||||
| Editor's note: Propose to add a non supporting server scenario. | ||||
| 3.2. Piggybacking Principle (Non normative) | ||||
| The overload control AVPs defined in this specification have been | The overload control AVPs defined in this specification have been | |||
| designed to be piggybacked on top of existing application message | designed to be piggybacked on top of existing application messages. | |||
| exchanges. This is made possible by adding overload control top | This is made possible by adding overload control top-level AVPs, the | |||
| level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as | OC-OLR AVP and the OC-Supported-Features AVP, as optional AVPs into | |||
| optional AVPs into existing commands when the corresponding Command | existing commands when the corresponding Command Code Format (CCF) | |||
| Code Format (CCF) specification allows adding new optional AVPs (see | specification allows adding new optional AVPs (see Section 1.3.4 of | |||
| Section 1.3.4 of [RFC6733]). | [RFC6733]). | |||
| Reacting nodes indicate support for DOIC by including the OC- | Reacting nodes indicate support for DOIC by including the OC- | |||
| Supported-Features AVP all request messages originated or relayed by | Supported-Features AVP in all request messages originated or relayed | |||
| the Diameter 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 Diameter node. Reporting nodes also include overload reports | by the reporting node. Reporting nodes also include overload reports | |||
| using the OC-OLR AVP in answer messages. | using the OC-OLR AVP in answer messages. | |||
| Note: There is no new Diameter application defined to carry | Note: There is no new Diameter application defined to carry | |||
| overload related AVPs. The DOIC AVPs are carried in existing | overload related AVPs. The DOIC AVPs are carried in existing | |||
| Diameter application messages. | Diameter application messages. | |||
| Note that the overload control solution does not have fixed server | Note that the overload control solution does not have fixed server | |||
| and client roles. The endpoint role is determined based on the | and client roles. The DOIC node role is determined based on the | |||
| message type: whether the message is a request (i.e. sent by a | message type: whether the message is a request (i.e. sent by a | |||
| "reacting node") or an answer (i.e. send by a "reporting node"). | "reacting node") or an answer (i.e. send by a "reporting node"). | |||
| Therefore, in a typical "client-server" deployment, the "client" MAY | Therefore, in a typical "client-server" deployment, the Diameter | |||
| report its overload condition to the "server" for any server | Client MAY report its overload condition to the Diameter Server for | |||
| initiated message exchange. An example of such is the server | any Diameter Server initiated message exchange. An example of such | |||
| requesting a re-authentication from a client. | is the Diameter Server requesting a re-authentication from a Diameter | |||
| Client. | ||||
| 3.3. DOIC Capability Announcement (Non normative) | 3.2. DOIC Capability Announcement | |||
| The DOIC solutions supports the ability for Diameter nodes to | The DOIC solution supports the ability for Diameter nodes to | |||
| determine if other nodes in the path of a request support the | determine if other nodes in the path of a request support the | |||
| solution. This capability is refered to as DOIC Capability | solution. This capability is referred to as DOIC Capability | |||
| Announcement (DCA) and is separate from Diameter Capability Exchange. | Announcement (DCA) and is separate from Diameter Capability Exchange. | |||
| The DCA mechanism is built around the piggybacking principle used for | The DCA solution uses the OC-Supported-Features AVPs to indicate the | |||
| transporting Diameter overload AVPs. This includes both DCA AVPs and | ||||
| AVPs associated with Diameter overload reports. This allows for the | ||||
| DCA AVPs to be carried across Diameter nodes that do not support the | ||||
| DOIC solution. | ||||
| The DCA mechanism uses the OC-Supported-Features AVPs to indicate the | ||||
| Diameter overload features supported. | Diameter overload features supported. | |||
| The first node in the path of a Diameter request that supports the | The first node in the path of a Diameter request that supports the | |||
| DOIC solution inserts the OC-Supported-Feature AVP in the request | DOIC solution inserts the OC-Supported-Feature AVP in the request | |||
| message. This includes an indication that it supports the loss | message. This includes an indication that it supports the loss | |||
| overload abatement algorithm defined in this specification (see | overload abatement algorithm defined in this specification (see | |||
| Section 5). This insures that there is at least one commonly | Section 5). This ensures that there is at least one commonly | |||
| supported overload abatement algorithm between the reporting node and | supported overload abatement algorithm between the reporting node and | |||
| the reacting nodes in the path of the request. | the reacting nodes in the path of the request. | |||
| DOIC must support deployments where Diameter Clients and/or | DOIC must support deployments where Diameter Clients and/or | |||
| Diameter servers do not support the DOIC solution. In this | Diameter Servers do not support the DOIC solution. In this | |||
| scenario, it is assumed that Diameter Agents that support the DOIC | scenario, it is assumed that Diameter Agents that support the DOIC | |||
| solution will handle overload abatement for the non supporting | solution will handle overload abatement for the non supporting | |||
| clients. In this case the DOIC agent will insert the OC- | Diameter nodes. In this case the DOIC agent will insert the OC- | |||
| Supporting-Features AVP in requests that do not already contain | Supporting-Features AVP in requests that do not already contain | |||
| one, telling the reporting node that there is a DOIC node that | one, telling the reporting node that there is a DOIC node that | |||
| will handle overload abatement. | will handle overload abatement. | |||
| The reporting node inserts the OC-Supported-Feature AVP in all answer | The reporting node inserts the OC-Supported-Feature AVP in all answer | |||
| messages to requests that contained the OC-Supported-Feature AVP. | messages to requests that contained the OC-Supported-Feature AVP. | |||
| The contents of the reporting node's OC-Supported-Feature AVP | The contents of the reporting node's OC-Supported-Feature AVP | |||
| indicate the set of Diameter overload features supported by the | indicate the set of Diameter overload features supported by the | |||
| reporting node with one exception. | reporting node with one exception. | |||
| The reporting node only includes an indication of support for one | The reporting node only includes an indication of support for one | |||
| overload abatement algorithm. This is the algorithm that the | overload abatement algorithm. This is the algorithm that the | |||
| reporting node intends to use should it enter an overload condition. | reporting node intends to use should it enter an overload condition | |||
| or requests to use while it actually is in an overload condition. | ||||
| Reacting nodes can use the indicated overload abatement algorithm to | Reacting nodes can use the indicated overload abatement algorithm to | |||
| prepare for possible overload reports. | prepare for possible overload reports and must use the indicated | |||
| overload abatement algorithm if traffic reduction is actually | ||||
| requested. | ||||
| Note that the loss algorithm defined in this document is a | Note that the loss algorithm defined in this document is a | |||
| stateless abatement algorithm. As a result it does not require | stateless abatement algorithm. As a result it does not require | |||
| any actions by reacting nodes prior to the receipt of an overload | any actions by reacting nodes prior to the receipt of an overload | |||
| report. Stateful abatement algorithms that base the abatement | report. Stateful abatement algorithms that base the abatement | |||
| logic on a history of request messages sent might require reacting | logic on a history of request messages sent might require reacting | |||
| nodes to maintain state to insure that overload reports can be | nodes to maintain state to ensure that overload reports can be | |||
| properly handled. | properly handled. | |||
| The individual features supported by the DOIC nodes are indicated in | The individual features supported by the DOIC nodes are indicated in | |||
| the OC-Feature-Vector AVP. Any semantics associated with the | the OC-Feature-Vector AVP. Any semantics associated with the | |||
| features will be defined in extension specifications that introduce | features will be defined in extension specifications that introduce | |||
| the features. | the features. | |||
| The DCA mechanism must also support the scenario where the set of | The DCA mechanism must also support the scenario where the set of | |||
| features supported by the sender of a request and by agents in the | features supported by the sender of a request and by agents in the | |||
| path of a request differ. In this case, the agent updates the OC- | path of a request differ. In this case, the agent updates the OC- | |||
| Supported-Feature AVP to reflect the mixture of the two sets of | Supported-Feature AVP to reflect the mixture of the two sets of | |||
| supported features. | supported features. | |||
| The logic to determine the content of the modified OC-Supported- | The logic to determine the content of the modified OC-Supported- | |||
| Feature AVP is out-of-scope for this specification and is left to | Feature AVP is out-of-scope for this specification and is left to | |||
| implementation decisions. Care must be taken in doing so not to | implementation decisions. Care must be taken not to introduce | |||
| introduce interoperability issues for downstream or upstream DOIC | interoperability issues for downstream or upstream DOIC nodes. | |||
| nodes. | ||||
| 3.4. DOIC Overload Condition Reporting (Non normative) | 3.3. DOIC Overload Condition Reporting | |||
| As with DOIC Capability Announcement, Overload Condition Reporting | As with DOIC Capability Announcement, Overload Condition Reporting | |||
| uses new AVPs (Section 6.3) to indicate an overload condition. | uses new AVPs (Section 6.3) to indicate an overload condition. | |||
| The OC-OLR AVP is referred to as an overload report. The OC-OLR AVP | The OC-OLR AVP is referred to as an overload report. The OC-OLR AVP | |||
| includes the type of report, an overload report ID, the length of | includes the type of report, a sequence number, the length of time | |||
| time that the report is valid and abatement algorithm specific AVPs. | that the report is valid and abatement algorithm specific AVPs. | |||
| Two types of overload reports are defined in this document, host | Two types of overload reports are defined in this document, host | |||
| reports and realm reports. | reports and realm reports. | |||
| Host reports apply to traffic that is sent to a specific Diameter | A report of type host is sent to indicate the overload of a specific | |||
| host. The applies to requests that contain the Destination-Host AVP | Diameter node for the application-id indicated in the transaction. | |||
| that contains a DiameterIdentity that matches that of the overload | When receiving an OLR of type host, a reacting node applies overload | |||
| report. These requests are referred to as host-routed requests. A | abatement to what is referred to in this document as host-routed | |||
| host report also applies to realm-routed requests, requests that do | requests. This is the set of requests that the reacting node knows | |||
| not have a Destination-Host AVP, when the selected route for the | will be served by a particular host, either due to the presence of a | |||
| request is a connection to the impacted host. | Destination-Host AVP, or by some other local knowledge on the part of | |||
| the reacting node. The reacting node applies overload abatement on | ||||
| those host-routed requests which the reacting node knows will be | ||||
| served by the server that matches the Origin-Host AVP of the received | ||||
| message that contained the received OLR of type host. | ||||
| Realm reports apply to realm-routed requests for a specific realm as | Realm reports apply to realm-routed requests for a specific realm as | |||
| indicated in the Destination-Realm AVP. | indicated in the Destination-Realm AVP. | |||
| Reporting nodes are responsible for determining the need for a | Reporting nodes are responsible for determining the need for a | |||
| reduction of traffic. The method for making this determination is | reduction of traffic. The method for making this determination is | |||
| implementation specific and depend on the type of overload report | implementation specific and depend on the type of overload report | |||
| being generated. A host report, for instance, will generally be | being generated. A host report, for instance, will generally be | |||
| generated by tracking utilization of resources required by the host | generated by tracking utilization of resources required by the host | |||
| to handle transactions for the the Diameter application. A realm | to handle transactions for the Diameter application. A realm report | |||
| report will generally impact the traffic sent to multiple hosts and, | will generally impact the traffic sent to multiple hosts and, as | |||
| as such, will typically require tracking the capacity of the servers | such, will typically require tracking the capacity of the servers | |||
| able to handle realm-routed requests for the application. | able to handle realm-routed requests for the application. | |||
| Once a reporting node determines the need for a reduction in traffic, | Once a reporting node determines the need for a reduction in traffic, | |||
| it uses the DOIC defined AVPs to report on the condition. These AVPs | it uses the DOIC defined AVPs to report on the condition. These AVPs | |||
| are included in answer messages sent or relayed by the reporting | are included in answer messages sent or relayed by the reporting | |||
| node. The reporting node indicates the overload abatement algorithm | node. The reporting node indicates the overload abatement algorithm | |||
| that is to be used to handle the traffic reduction in the OC- | that is to be used to handle the traffic reduction in the OC- | |||
| Supported-Features AVP. The OC-OLR AVP is used to communicate | Supported-Features AVP. The OC-OLR AVP is used to communicate | |||
| information about the requested reduction. | information about the requested reduction. | |||
| skipping to change at page 13, line 37 ¶ | skipping to change at page 10, line 31 ¶ | |||
| for applying the abatement algorithm to traffic impacted by the | for applying the abatement algorithm to traffic impacted by the | |||
| overload report. The method used for that abatement is dependent on | overload report. The method used for that abatement is dependent on | |||
| the abatement algorithm. The loss abatement algorithm is defined in | the abatement algorithm. The loss abatement algorithm is defined in | |||
| this document (Section 5). Other abatement algorithms can be defined | this document (Section 5). Other abatement algorithms can be defined | |||
| in extensions to the DOIC solutions. | in extensions to the DOIC solutions. | |||
| As the conditions that lead to the generation of the overload report | As the conditions that lead to the generation of the overload report | |||
| change the reporting node can send new overload reports requesting | change the reporting node can send new overload reports requesting | |||
| greater reduction if the condition gets worse or less reduction if | greater reduction if the condition gets worse or less reduction if | |||
| the condition improves. The reporting node sends an overload report | the condition improves. The reporting node sends an overload report | |||
| with a duration of zero to indicate that the overlaod condition has | with a duration of zero to indicate that the overload condition has | |||
| ended and use of the abatement algorithm is no longer needed. | ended and use of the abatement algorithm 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-Validaty-Duration AVP in the overload report and | based on the OC-Validity-Duration AVP in the overload report and | |||
| stops applying the abatement algorithm when the report expires. | stops applying the abatement algorithm when the report expires. | |||
| 3.5. DOIC Extensibility (Non normative) | 3.4. DOIC Extensibility | |||
| The DOIC solutions is designed to be extensible. This extensibility | The DOIC solution is designed to be extensible. This extensibility | |||
| is based on existing Diameter based extensibility mechanisms. | is based on existing Diameter based extensibility mechanisms. | |||
| There are multiple categories of extensions that are expected. This | There are multiple categories of extensions that are expected. This | |||
| includes the definition of new overload abatement algorithms, the | includes the definition of new overload abatement algorithms, the | |||
| definition of new report types and new definitions of the scope of | definition of new report types and new definitions of the scope of | |||
| messages impacted by an overload report. | messages impacted by an overload report. | |||
| The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes | The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes | |||
| to communicate supported features. The specific features supported | to communicate supported features. The specific features supported | |||
| by the DOIC node are indicated in the OC-Feature-Vector AVP. DOIC | by the DOIC node are indicated in the OC-Feature-Vector AVP. DOIC | |||
| skipping to change at page 14, line 9 ¶ | skipping to change at page 11, line 4 ¶ | |||
| There are multiple categories of extensions that are expected. This | There are multiple categories of extensions that are expected. This | |||
| includes the definition of new overload abatement algorithms, the | includes the definition of new overload abatement algorithms, the | |||
| definition of new report types and new definitions of the scope of | definition of new report types and new definitions of the scope of | |||
| messages impacted by an overload report. | messages impacted by an overload report. | |||
| The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes | The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes | |||
| to communicate supported features. The specific features supported | to communicate supported features. The specific features supported | |||
| by the DOIC node are indicated in the OC-Feature-Vector AVP. DOIC | by the DOIC node are indicated in the OC-Feature-Vector AVP. DOIC | |||
| extensions must define new values for the OC-Feature-Vector AVP. | extensions must define new values for the OC-Feature-Vector AVP. | |||
| DOIC extensions also have the ability to add new AVPs to the OC- | DOIC extensions also have the ability to add new AVPs to the OC- | |||
| Supported-Features AVP, if additional information about the new | Supported-Features AVP, if additional information about the new | |||
| feature is required to be communicate. | feature is required. | |||
| Overload abatement algorithms use the OC-OLR AVP to communicate | Reporting nodes use the OC-OLR AVP to communicate overload | |||
| overload occurances. This AVP can also be extended to add new AVPs | occurrences. This AVP can also be extended to add new AVPs allowing | |||
| allowing a reporting nodes to communicate additional information | a reporting nodes to communicate additional information about | |||
| about handling an overload condition. | handling an overload condition. | |||
| If necessary, new extensions can also define new top level AVPs. It | If necessary, new extensions can also define new top-level AVPs. It | |||
| is, however, recommended that DOIC extensions use the OC-Supported- | is, however, recommended that DOIC extensions use the OC-Supported- | |||
| Features and OC-OLR to carry all DOIC related AVPs. | Features and OC-OLR to carry all DOIC related AVPs. | |||
| 3.6. Simplified Example Architecture (Non normative) | 3.5. Simplified Example Architecture | |||
| Figure 7 illustrates the simplified architecture for Diameter | Figure 1 illustrates the simplified architecture for Diameter | |||
| overload information conveyance. See Section 3.1 for more discussion | overload information conveyance. | |||
| and details how different Diameter nodes fit into the architecture | ||||
| from the DOIC point of view. | ||||
| Realm X Same or other Realms | Realm X Same or other Realms | |||
| <--------------------------------------> <----------------------> | <--------------------------------------> <----------------------> | |||
| +--^-----+ : (optional) : | +--^-----+ : (optional) : | |||
| |Diameter| : : | |Diameter| : : | |||
| |Server A|--+ .--. : +---^----+ : .--. | |Server A|--+ .--. : +---^----+ : .--. | |||
| +--------+ | _( `. : |Diameter| : _( `. +---^----+ | +--------+ | _( `. : |Diameter| : _( `. +---^----+ | |||
| +--( )--:-| Agent |-:--( )--|Diameter| | +--( )--:-| Agent |-:--( )--|Diameter| | |||
| +--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | | +--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | | |||
| skipping to change at page 15, line 26 ¶ | skipping to change at page 11, line 44 ¶ | |||
| +---^----+ : : | +---^----+ : : | |||
| End-to-end Overload Indication | End-to-end Overload Indication | |||
| 1) <-----------------------------------------------> | 1) <-----------------------------------------------> | |||
| Diameter Application Y | Diameter Application Y | |||
| Overload Indication A Overload Indication A' | Overload Indication A Overload Indication A' | |||
| 2) <----------------------> <----------------------> | 2) <----------------------> <----------------------> | |||
| standard base protocol standard base protocol | standard base protocol standard base protocol | |||
| Figure 7: Simplified architecture choices for overload indication | Figure 1: Simplified architecture choices for overload indication | |||
| delivery | delivery | |||
| In Figure 7, the Diameter overload indication can be conveyed (1) | In Figure 1, the Diameter overload indication can be conveyed (1) | |||
| end-to-end between servers and clients or (2) between servers and | end-to-end between servers and clients or (2) between servers and | |||
| Diameter agent inside the realm and then between the Diameter agent | Diameter agent inside the realm and then between the Diameter agent | |||
| and the clients when the Diameter agent acting as back-to-back-agent | and the clients. | |||
| for DOIC purposes. | ||||
| 3.7. Considerations for Applications Integrating the DOIC Solution (Non | ||||
| normative) | ||||
| THis section outlines considerations to be taken into account when | ||||
| integrating the DOIC solution into Diameter applications. | ||||
| 3.7.1. Application Classification (Non normative) | ||||
| The following is a classification of Diameter applications and | ||||
| requests. This discussion is meant to document factors that play | ||||
| into decisions made by the Diameter identity responsible for handling | ||||
| overload reports. | ||||
| Section 8.1 of [RFC6733] defines two state machines that imply two | ||||
| types of applications, session-less and session-based applications. | ||||
| The primary difference between these types of applications is the | ||||
| lifetime of Session-Ids. | ||||
| For session-based applications, the Session-Id is used to tie | ||||
| multiple requests into a single session. | ||||
| In session-less applications, the lifetime of the Session-Id is a | ||||
| single Diameter transaction, i.e. the session is implicitly | ||||
| terminated after a single Diameter transaction and a new Session-Id | ||||
| is generated for each Diameter request. | ||||
| For the purposes of this discussion, session-less applications are | ||||
| further divided into two types of applications: | ||||
| Stateless applications: | ||||
| Requests within a stateless application have no relationship to | ||||
| each other. The 3GPP defined S13 application is an example of a | ||||
| stateless application [S13], --> where only a Diameter command is | ||||
| defined between a client and a server and no state is maintained | ||||
| between two consecutive transactions. | ||||
| Pseudo-session applications: | ||||
| Applications that do not rely on the Session-Id AVP for | ||||
| correlation of application messages related to the same session | ||||
| but use other session-related information in the Diameter requests | ||||
| for this purpose. The 3GPP defined Cx application [Cx] is an | ||||
| example of a pseudo-session application. | ||||
| The Credit-Control application defined in [RFC4006] is an example of | ||||
| a Diameter session-based application. | ||||
| The handling of overload reports must take the type of application | ||||
| into consideration, as discussed in Section 3.7.2. | ||||
| 3.7.2. Application Type Overload Implications (Non normative) | ||||
| This section discusses considerations for mitigating overload | ||||
| reported by a Diameter entity. This discussion focuses on the type | ||||
| of application. Section 3.7.3 discusses considerations for handling | ||||
| various request types when the target server is known to be in an | ||||
| overloaded state. | ||||
| These discussions assume that the strategy for mitigating the | ||||
| reported overload is to reduce the overall workload sent to the | ||||
| overloaded entity. The concept of applying overload treatment to | ||||
| requests targeted for an overloaded Diameter entity is inherent to | ||||
| this discussion. The method used to reduce offered load is not | ||||
| specified here but could include routing requests to another Diameter | ||||
| entity known to be able to handle them, or it could mean rejecting | ||||
| certain requests. For a Diameter agent, rejecting requests will | ||||
| usually mean generating appropriate Diameter error responses. For a | ||||
| Diameter client, rejecting requests will depend upon the application. | ||||
| For example, it could mean giving an indication to the entity | ||||
| requesting the Diameter service that the network is busy and to try | ||||
| again later. | ||||
| Stateless applications: | ||||
| By definition there is no relationship between individual requests | ||||
| in a stateless application. As a result, when a request is sent | ||||
| or relayed to an overloaded Diameter entity - either a Diameter | ||||
| Server or a Diameter Agent - the sending or relaying entity can | ||||
| choose to apply the overload treatment to any request targeted for | ||||
| the overloaded entity. | ||||
| Pseudo-session applications: | ||||
| For pseudo-session applications, there is an implied ordering of | ||||
| requests. As a result, decisions about which requests towards an | ||||
| overloaded entity to reject could take the command code of the | ||||
| request into consideration. This generally means that | ||||
| transactions later in the sequence of transactions should be given | ||||
| more favorable treatment than messages earlier in the sequence. | ||||
| This is because more work has already been done by the Diameter | ||||
| network for those transactions that occur later in the sequence. | ||||
| Rejecting them could result in increasing the load on the network | ||||
| as the transactions earlier in the sequence might also need to be | ||||
| repeated. | ||||
| Session-based applications: | ||||
| Overload handling for session-based applications must take into | ||||
| consideration the work load associated with setting up and | ||||
| maintaining a session. As such, the entity sending requests | ||||
| towards an overloaded Diameter entity for a session-based | ||||
| application might tend to reject new session requests prior to | ||||
| rejecting intra-session requests. In addition, session ending | ||||
| requests might be given a lower probability of being rejected as | ||||
| rejecting session ending requests could result in session status | ||||
| being out of sync between the Diameter clients and servers. | ||||
| Application designers that would decide to reject mid-session | ||||
| requests will need to consider whether the rejection invalidates | ||||
| the session and any resulting session clean-up procedures. | ||||
| 3.7.3. Request Transaction Classification (Non normative) | ||||
| Independent Request: | ||||
| An independent request is not correlated to any other requests | ||||
| and, as such, the lifetime of the session-id is constrained to an | ||||
| individual transaction. | ||||
| Session-Initiating Request: | ||||
| A session-initiating request is the initial message that | ||||
| establishes a Diameter session. The ACR message defined in | ||||
| [RFC6733] is an example of a session-initiating request. | ||||
| Correlated Session-Initiating Request: | ||||
| There are cases when multiple session-initiated requests must be | ||||
| correlated and managed by the same Diameter server. It is notably | ||||
| the case in the 3GPP PCC architecture [PCC], where multiple | ||||
| apparently independent Diameter application sessions are actually | ||||
| correlated and must be handled by the same Diameter server. | ||||
| Intra-Session Request: | ||||
| An intra session request is a request that uses the same Session- | ||||
| Id than the one used in a previous request. An intra session | ||||
| request generally needs to be delivered to the server that handled | ||||
| the session creating request for the session. The STR message | ||||
| defined in [RFC6733] is an example of an intra-session requests. | ||||
| Pseudo-Session Requests: | ||||
| Pseudo-session requests are independent requests and do not use | ||||
| the same Session-Id but are correlated by other session-related | ||||
| information contained in the request. There exists Diameter | ||||
| applications that define an expected ordering of transactions. | ||||
| This sequencing of independent transactions results in a pseudo | ||||
| session. The AIR, MAR and SAR requests in the 3GPP defined Cx | ||||
| [Cx] application are examples of pseudo-session requests. | ||||
| 3.7.4. Request Type Overload Implications (Non normative) | ||||
| The request classes identified in Section 3.7.3 have implications on | ||||
| decisions about which requests should be throttled first. The | ||||
| following list of request treatment regarding throttling is provided | ||||
| as guidelines for application designers when implementing the | ||||
| Diameter overload control mechanism described in this document. The | ||||
| exact behavior regarding throttling is a matter of local policy, | ||||
| unless specifically defined for the application. | ||||
| Independent requests: | ||||
| Independent requests can be given equal treatment when making | ||||
| throttling decisions. | ||||
| Session-initiating requests: | ||||
| Session-initiating requests represent more work than independent | ||||
| or intra-session requests. Moreover, session-initiating requests | ||||
| are typically followed by other session-related requests. As | ||||
| such, as the main objective of the overload control is to reduce | ||||
| the total number of requests sent to the overloaded entity, | ||||
| throttling decisions might favor allowing intra-session requests | ||||
| over session-initiating requests. Individual session-initiating | ||||
| requests can be given equal treatment when making throttling | ||||
| decisions. | ||||
| Correlated session-initiating requests: | ||||
| A Request that results in a new binding, where the binding is used | ||||
| for routing of subsequent session-initiating requests to the same | ||||
| server, represents more work load than other requests. As such, | ||||
| these requests might be throttled more frequently than other | ||||
| request types. | ||||
| Pseudo-session requests: | ||||
| Throttling decisions for pseudo-session requests can take into | ||||
| consideration where individual requests fit into the overall | ||||
| sequence of requests within the pseudo session. Requests that are | ||||
| earlier in the sequence might be throttled more aggressively than | ||||
| requests that occur later in the sequence. | ||||
| Intra-session requests | ||||
| There are two classes of intra-sessions requests. The first class | ||||
| consists of requests that terminate a session. The second one | ||||
| contains the set of requests that are used by the Diameter client | ||||
| and server to maintain the ongoing session state. Session | ||||
| terminating requests should be throttled less aggressively in | ||||
| order to gracefully terminate sessions, allow clean-up of the | ||||
| related resources (e.g. session state) and get rid of the need for | ||||
| other intra-session requests, reducing the session management | ||||
| impact on the overloaded entity. The default handling of other | ||||
| intra-session requests might be to treat them equally when making | ||||
| throttling decisions. There might also be application level | ||||
| considerations whether some request types are favored over others. | ||||
| 4. Solution Procedures (Normative) | 4. Solution Procedures | |||
| This section outlines the normative behavior associated with the DOIC | This section outlines the normative behavior associated with the DOIC | |||
| solution. | solution. | |||
| 4.1. Capability Announcement (Normative) | 4.1. Capability Announcement | |||
| This section defines DOIC Capability Announcement (DCA) behavior. | This section defines DOIC Capability Announcement (DCA) behavior. | |||
| The DCA procedures are used to indicate support for DOIC and support | 4.1.1. Reacting Node Behavior | |||
| for DOIC features. The DOIC features include overload abatement | ||||
| algorithms supported. It might also include new report types or | ||||
| other extensions documented in the future. | ||||
| Diameter nodes indicate support for DOIC by including the OC- | ||||
| Supported-Features AVP in messages sent or handled by the node. | ||||
| Diameter agents that support DOIC MUST ensure that all messages have | ||||
| the OC-Supporting-Features AVP. If a message handled by the DOIC | ||||
| agent does not include the OC-Supported-Features AVP then the DOIC | ||||
| agent inserts the AVP. If the message already has the AVP then the | ||||
| agent either leaves it unchanged in the relayed message or modifies | ||||
| it to reflect a mixed set of DOIC features. | ||||
| 4.1.1. Reacting Node Behavior (Normative) | ||||
| A reacting node MUST include the OC-Supported-Features AVP in all | A reacting node MUST include the OC-Supported-Features AVP in all | |||
| request messages. | request messages. | |||
| A reacting node MUST include the OC-Feature-Vector AVP with an | A reacting node MAY include the OC-Feature-Vector AVP with an | |||
| indication of the loss algorithm. | indication of the loss algorithm. A reacting node MUST include the | |||
| OC-Feature-Vector AVP to indicate support for abatement algorithms in | ||||
| addition to the loss algorithm. | ||||
| A reacting node SHOULD indicate support for all other DOIC features | A reacting node SHOULD indicate support for all other DOIC features | |||
| it supports. | it supports. | |||
| Not all DOIC features will necessarily apply to all transactions. | ||||
| For instance, there may be a future extension that only applies to | ||||
| session based applications. A reacting node that supports this | ||||
| extension can choose to not include it for non session based | ||||
| applications. | ||||
| An OC-Supported-Features AVP in answer messages indicates there is a | An OC-Supported-Features AVP in answer messages indicates there is a | |||
| reporting node for the transaction. The reacting node MAY take | reporting node for the transaction. The reacting node MAY take | |||
| action based on the features indicated in the OC-Feature-Vector AVP. | action based on the features indicated in the OC-Feature-Vector AVP. | |||
| Note that the loss abatement algorithm is the only feature | Note that the loss abatement algorithm is the only feature | |||
| described in this document and it does not require action to be | described in this document and it does not require action to be | |||
| taken by the reacting node except when the answer message also has | taken when there is an active overload report. This behavior is | |||
| an overload report. This behavior is described in Section 4.2 and | described in Section 4.2 and Section 5. | |||
| Section 5. | ||||
| 4.1.2. Reporting Node Behavior (Normative) | 4.1.2. Reporting Node Behavior | |||
| Upon receipt of a request message, a reporting node determines if | Upon receipt of a request message, a reporting node determines if | |||
| there is a reacting node for the transaction based on the presence of | there is a reacting node for the transaction based on the presence of | |||
| the OC-Supported-Features AVP. | the OC-Supported-Features AVP. | |||
| If the request message contains an OC-Supported-Features AVP then the | ||||
| reporting node MUST include the OC-Supported-Features AVP in the | ||||
| answer message for that transaction. | ||||
| The reporting node MUST NOT include the OC-Supported-Features AVP, | ||||
| OC-OLR AVP or any other overload control AVPs defined in extension | ||||
| drafts in response messages for transactions where the request | ||||
| message does not include the OC-Supported-Features AVP. Lack of the | ||||
| OC-Supported-Features AVP in the request message indicates that there | ||||
| is no reacting node for the transaction. | ||||
| Based on the content of the OC-Supported-Features AVP in the request | Based on the content of the OC-Supported-Features AVP in the request | |||
| message, the reporting node knows what overload control functionality | message, the reporting node knows what overload control functionality | |||
| supported by reacting node(s). The reporting node then acts | is supported by the reacting node. The reporting node then acts | |||
| accordingly for the subsequent answer messages it initiates. | accordingly for the subsequent answer messages it initiates. | |||
| If the reqeust message contains an OC-Supported-Features AVP then the | ||||
| reporting node MUST include the OC-Supported-Features AVP in the | ||||
| answer message for that transaction. | ||||
| The reporting node MUST indicate support for one and only one | The reporting node MUST indicate support for one and only one | |||
| abatement algorithm in the OC-Feature-Vector AVP. The abatement | abatement algorithm in the OC-Feature-Vector AVP. The abatement | |||
| algorithm included MUST be from the set of abatement algorithms | algorithm included MUST be from the set of abatement algorithms | |||
| contained in the request messages OC-Supported-Features AVP. The | contained in the request message's OC-Supported-Features AVP. The | |||
| abatement algorithm included indicates the abatement algorithm the | abatement algorithm included MUST indicate the abatement algorithm | |||
| reporting node wants the reacting node to use when the reporting node | the reporting node wants the reacting node to use when the reporting | |||
| enters an overload condition. | node enters an overload condition. | |||
| The reporting node MUST NOT change the selected algorithm during a | For an ongoing overload state, a reacting node MUST keep the | |||
| period of time that it is in an overload condition and, as a result, | algorithm that was selected by the reporting node in further requests | |||
| is sending OC-OLR AVPs in answer messages. | towards the reporting node. The reporting node SHOULD NOT change the | |||
| selected algorithm during a period of time that it is in an overload | ||||
| condition and, as a result, is sending OC-OLR AVPs in answer | ||||
| messages. | ||||
| The reporting node SHOULD indicate support for other DOIC features it | The reporting node SHOULD indicate support for other DOIC features | |||
| supports and that apply to the transaction. | defined in extension drafts that it supports and that apply to the | |||
| transaction. | ||||
| Note that not all DOIC features will apply to all Diameter | Note that not all DOIC features will apply to all Diameter | |||
| applications or deployment scenarios. The features included in | applications or deployment scenarios. The features included in | |||
| the OC-Feature-Vector AVP is based on local reporting node policy. | the OC-Feature-Vector AVP are based on local reporting node | |||
| policy. | ||||
| The reporting node MUST NOT include the OC-Supported-Features AVP, | 4.1.3. Agent Behavior | |||
| OC-OLR AVP or any other overload control AVPs defined in extension | ||||
| drafts in response messages for transactions where the request | Diameter agents that support DOIC MUST ensure that all messages have | |||
| message does not include the OC-Supported-Features AVP. Lack of the | the OC-Supporting-Features AVP. If a message handled by the DOIC | |||
| OC-Supported-Features AVP in the request message indicates that there | agent does not include the OC-Supported-Features AVP then the DOIC | |||
| is no reacting node for the transaction. | agent inserts the AVP. If the message already has the AVP then the | |||
| agent either leaves it unchanged in the relayed message or modifies | ||||
| it to reflect a mixed set of DOIC features. | ||||
| An agent MAY modify the OC-Supported-Features AVP carried in answer | An agent MAY modify the OC-Supported-Features AVP carried in answer | |||
| messages. | messages. | |||
| 4.1.3. Agent Behavior (Normative) | For instance, if the agent supports a superset of the features | |||
| reported by the reacting node then the agent might choose, based | ||||
| on local policy, to advertise that superset of features to the | ||||
| reporting node. | ||||
| Editor's note -- Need to add this section. | If the agent modifies the OC-Supported-Features AVP sent to the | |||
| reporting node then it might also need to modify the OC-Supported- | ||||
| Features AVP sent to a reacting node in the subsequent answer | ||||
| message, as it cannot send an indication of support for features | ||||
| that are not supported by the reacting node. | ||||
| 4.2. Overload Report Processing (Normative) | Editor's note: There is an open issue on the wording around agent | |||
| behavior in this case that needs to be resolved prior to finishing | ||||
| this document. | ||||
| 4.2.1. Overload Control State (Normative) | 4.2. Overload Report Processing | |||
| Both reacting and reporting nodes maintain an overload control state | 4.2.1. Overload Control State | |||
| (OCS) for each endpoint (a host or a realm) they communicate with and | ||||
| both endpoints have announced support for DOIC. See Sections 6.1 and | Both reacting and reporting nodes maintain Overload Control State | |||
| 4.1 for discussion about how the support for DOIC is determined. | (OCS) for active overload conditions. | |||
| 4.2.1.1. Overload Control State for Reacting Nodes | 4.2.1.1. Overload Control State for Reacting Nodes | |||
| A reacting node maintains the following OCS per supported Diameter | A reacting node SHOULD maintain the following OCS per supported | |||
| application: | Diameter application: | |||
| o A host-type Overload Control State for each Destination-Host | o A host-type OCS entry for each Destination-Host to which it sends | |||
| towards which it sends host-type requests and | host-type requests and | |||
| o A realm-type Overload Control State for each Destination-Realm | o A realm-type OCS entry for each Destination-Realm to which it | |||
| towards which it sends realm-type requests. | sends realm-type requests. | |||
| A host-type Overload Control State may be identified by the pair of | A host-type OCS entry is identified by the pair of Application-Id and | |||
| Application-Id and Destination-Host. A realm-type Overload Control | Host-Id. | |||
| State may be identified by the pair of Application-Id and | ||||
| Destination-Realm. The host-type/realm-type Overload Control State | A realm-type OCS entry is identified by the pair of Application-Id | |||
| for a given pair of Application and Destination-Host / Destination- | and Realm-Id. | |||
| Realm could include the following information: | ||||
| The host-type and realm-type OCS entries MAY include the following | ||||
| information (the actual information stored is an implementation | ||||
| decision): | ||||
| o Sequence number (as received in OC-OLR) | o Sequence number (as received in OC-OLR) | |||
| o Time of expiry (derived from OC-Validity-Duration AVP received in | ||||
| the OC-OLR AVP and time of reception of the message carrying OC- | ||||
| OLR AVP) | ||||
| o Time of expiry (deviated from validity duration as received in OC- | o Selected Abatement Algorithm (as received in OC-Supported-Features | |||
| OLR and time of reception) | AVP) | |||
| o Selected Abatement Algorithm (as received in OC-Supported- | o Abatement Algorithm specific input data (as received within the | |||
| Features) | OC-OLR AVP, for example, OC-Reduction-Percentage for the Loss | |||
| abatement algorithm) | ||||
| o Algorithm specific input data (as received within OC-OLR, e.g. | 4.2.1.2. Overload Control State for Reporting Nodes | |||
| Reduction Percentage for Loss) | ||||
| 4.2.1.2. Overload Control States for Reporting Nodes | A reporting node SHOULD maintain OCS entries per supported Diameter | |||
| application, per supported (and eventually selected) Abatement | ||||
| Algorithm and per report-type. | ||||
| A reporting node maintains per supported Diameter application and per | An OCS entry is identified by the pair of Application-Id and | |||
| supported (and eventually selected) Abatement Algorithm an Overload | Abatement Algorithm. | |||
| Control State. | ||||
| An Overload Control State may be identified by the pair of | The OCS entry for a given pair of Application and Abatement Algorithm | |||
| Application-Id and supported Abatement Algorithm. | MAY include the information (the actual information stored is an | |||
| implementation decision): | ||||
| The Overload Control State for a given pair of Application and | o Report type | |||
| Abatement Algorithm could include the information: | ||||
| o Sequence number | o Sequence number | |||
| o Validity Duration and Expiry Time | o Validity Duration | |||
| o Algorithm specific input data (e.g. Reduction Percentage for | o Expiration Time | |||
| Loss) | ||||
| Overload Control States for reporting nodes containing a validity | o Algorithm specific input data (for example, the Reduction | |||
| duration of 0 sec. should not expire before any previously sent | Percentage for the Loss Abatement Algorithm) | |||
| (stale) OLR has timed out at any reacting node. | ||||
| Editor's note: This statement is unclear and contradictory with other | 4.2.1.3. Reacting Node Maintenance of Overload Control State | |||
| statements. A validity timer of zero seconds indicates that the | ||||
| overload condition has ended and abatement is no longer requested. | ||||
| 4.2.1.3. Maintaining Overload Control State | When a reacting node receives an OC-OLR AVP, it MUST determine if it | |||
| is for an existing or new overload condition. | ||||
| Reacting nodes create a host-type OCS identified by OCS-Id = (app- | For the remainder of this section the term OLR referres to the | |||
| id,host-id) when receiving an answer message of application app-id | combination of the contents of the received OC-OLR AVP and the | |||
| containing an Orig-Host of host-id and a host-type OC-OLR AVP unless | abatement algorithm indicated in the received OC-Supported- | |||
| such host-type OCS already exists. | Features AVP. | |||
| Reacting nodes create a realm-type OCS identified by OCS-Id = (app- | The OLR is for an existing overload condition if the reacting node | |||
| id,realm-id) when receiving an answer message of application app-id | has an OCS that matches the received OLR. | |||
| containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP | ||||
| unless such realm type OCS already exists. | ||||
| Reacting nodes delete an OCS when it expires (i.e. when current time | For a host report-type this means it matches the app-id and host-id | |||
| minus reception time is greater than validity duration). | in an existing host OCS entry. | |||
| Editor's note: Reacting nodes also delete on OCS with an updated OLR | For a realm report-type this means it matches the app-id and realm-id | |||
| is received with a validity duration of zero. | in an existing realm OCS entry. | |||
| Reacting nodes update the host-type OCS identified by OCS-Id = (app- | If the OLR is for an existing overload condition then it MUST | |||
| id,host-id) when receiving an answer message of application app-id | determine if the OLR is a retransmission or an update to the existing | |||
| containing an Orig-Host of host-id and a host-type OC-OLR AVP with a | OLR. | |||
| sequence number higher than the stored sequence number. | ||||
| Reacting nodes update the realm-type OCS identified by OCS-Id = (app- | If the sequence number for the received OLR is greater than the | |||
| id,realm-id) when receiving an answer message of application app-id | sequence number stored in the matching OCS entry then the reacting | |||
| containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with | node MUST update the matching OCS entry. | |||
| a sequence number higher than the stored sequence number. | ||||
| Reacting nodes do not delete an OCS when receiving an answer message | If the sequence number for the received OLR is less than or equal to | |||
| that does not contain an OC-OLR AVP (i.e. absence of OLR means "no | the sequence number in the matching OCS entry then the reacting node | |||
| change"). | MUST silently ignore the received OLR. The matching OCS MUST NOT be | |||
| updated in this case. | ||||
| Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg) | If the received OLR is for a new overload condition then the reacting | |||
| when receiving a request of application app-id containing an OC- | node MUST generate a new OCS entry for the overload condition. | |||
| Supported-Features AVP indicating support of the Abatement Algorithm | ||||
| Alg (which the reporting node selects) while being overloaded, unless | ||||
| such OCS already exists. | ||||
| Reporting nodes delete an OCS when it expires. | For a host report-type this means it creates on OCS entry with the | |||
| app-id of the application-id in the received message and host-id of | ||||
| the Origin-Host in the received message. | ||||
| Editor's note: Reporting nodes should send updated overload reports | Note: This solution assumes that the Origin-Host AVP in the answer | |||
| with a validity duration of zero for a period of time after an OCS | message included by the reporting node is not changed along the | |||
| expires or is removed due to the overload condition ending. | path to the reacting node. | |||
| Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg) | For a realm report-type this means it creates on OCS entry with the | |||
| when they detect the need to modify the requested amount of | app-id of the application-id in the received message and realm-id of | |||
| application app-id traffic reduction. | the Origin-Realm in the received message. | |||
| 4.2.2. Reacting Node Behavior (Normative) | If the received OLR contains a validity duration of zero ("0") then | |||
| the reacting node MUST update the OCS entry as being expired. | ||||
| Once a reacting node receives an OC-OLR AVP from a reporting node, it | Note that it is not necessarily appropriate to delete the OCS | |||
| applies traffic abatement based on the selected algorithm with the | entry, as there is recommended behavior that the reacting node | |||
| reporting node and the current overload condition. The reacting node | slowly returns to full traffic when ending an overload abatement | |||
| learns the reporting node supported abatement algorithms directly | period. | |||
| from the received answer message containing the OC-Supported-Features | ||||
| AVP. | ||||
| The received OC-Supported-Features AVP does not change the existing | The reacting node does not delete an OCS when receiving an answer | |||
| overload condition and/or traffic abatement algorithm settings if the | message that does not contain an OC-OLR AVP (i.e. absence of OLR | |||
| OC-Sequence-Number AVP contains a value that is equal to the | means "no change"). | |||
| previously received/recorded value. If the OC-Supported-Features AVP | ||||
| is received for the first time for the reporting node or the OC- | ||||
| Sequence-Number AVP value is less than the previously received/ | ||||
| recorded value (and is outside the valid overflow window), then the | ||||
| sequence number is stale (e.g. an intentional or unintentional | ||||
| replay) and SHOULD be silently discarded. | ||||
| As described in Section 6.3, the OC-OLR AVP contains the necessary | 4.2.1.4. Reporting Node Maintenance of Overload Control State | |||
| information for the overload condition on the reporting node. | ||||
| From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting | A reporting node SHOULD create a new OCS entry when entering an | |||
| node learns whether the overload condition report concerns a specific | overload condition. | |||
| host (as identified by the Origin-Host AVP of the answer message | ||||
| containing the OC-OLR AVP) or the entire realm (as identified by the | ||||
| Origin-Realm AVP of the answer message containing the OC-OLR AVP). | ||||
| The reacting node learns the Diameter application to which the | ||||
| overload report applies from the Application-ID of the answer message | ||||
| containing the OC-OLR AVP. The reacting node MUST use this | ||||
| information as an input for its traffic abatement algorithm. The | ||||
| idea is that the reacting node applies different handling of the | ||||
| traffic abatement, whether sent request messages are targeted to a | ||||
| specific host (identified by the Diameter-Host AVP in the request) or | ||||
| to any host in a realm (when only the Destination-Realm AVP is | ||||
| present in the request). Note that future specifications MAY define | ||||
| new OC-Report-Type AVP values that imply different handling of the | ||||
| OC-OLR AVP. For example, in a form of new additional AVPs inside the | ||||
| Grouped OC-OLR AVP that would define report target in a finer | ||||
| granularity than just a host. | ||||
| Editor's note: The above behavior for Realm reports is | If the reporting node knows through absence of the OC-Supported- | |||
| inconsistent with the definition of realm reports in section | Features AVP in received messages that there are no reacting nodes | |||
| Section 6.6. | supporting DOIC then the reporting node can choose to not create | |||
| OCS entries. | ||||
| If the OC-OLR AVP is received for the first time, the reacting node | When generating a new OCS entry the sequence number MAY be set to any | |||
| MUST create overload control state associated with the related realm | value if there is no unexpired overload report for previous overload | |||
| or a specific host in the realm identified in the message carrying | conditions sent to any reacting node for the same application and | |||
| the OC-OLR AVP, as described in Section 4.2.1. | report-type. | |||
| If the value of the OC-Sequence-Number AVP contained in the received | When generating sequence numbers for new overload conditions, the new | |||
| OC-OLR AVP is equal to or less than the value stored in an existing | sequence number MUST be greater than any sequence number in an active | |||
| overload control state, the received OC-OLR AVP SHOULD be silently | (unexpired) overload report previously sent by the reporting node. | |||
| discarded. If the value of the OC-Sequence-Number AVP contained in | This property MUST hold over a reboot of the reporting node. | |||
| the received OC-OLR AVP is greater than the value stored in an | ||||
| existing overload control state or there is no previously recorded | ||||
| sequence number, the reacting node MUST update the overload control | ||||
| state associated with the realm or the specific node in the realm. | ||||
| When an overload control state is created or updated, the reacting | The reporting node MUST update an OCS entry when it needs to adjust | |||
| node MUST apply the traffic abatement requested in the OC-OLR AVP | the validity duration of the overload condition at reacting nodes. | |||
| using the algorithm announced in the OC-Supported-Features AVP | ||||
| contained in the received answer message along with the OC-OLR AVP. | ||||
| The validity duration of the overload information contained in the | For instance, if the reporting node wishes to instruct reacting | |||
| OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration | nodes to continue overload abatement for a longer period of time | |||
| AVP or is implicitly equals to the default value (5 seconds) if the | that originally communicated. This also applies if the reporting | |||
| OC-Validity-Duration AVP is absent. The reacting node MUST maintain | node wishes to shorten the period of time that overload abatement | |||
| the validity duration in the overload control state. Once the | is to continue. | |||
| validity duration times out, the reacting node MUST assume the | ||||
| overload condition reported in a previous OC-OLR AVP has ended. | ||||
| A value of zero ("0") received in the OC-Validity-Duration in an | A reporting node MUST NOT update the abatement algorithm in an active | |||
| updated overload report indicates that the overload condition has | OCS entry. | |||
| ended and that the overload state is no longer valid. | ||||
| In the case that the validity duration expires or is explicitly | A reporting node MUST update an OCS entry when it wishes to adjust | |||
| signaled as being no longer valid the state associated with the | any abatement algorithm specific parameters, including the reduction | |||
| overload report MUST be removed and any abatement associated with the | percentage used for the Loss abatement algorithm. | |||
| overload report MUST be ended in a controlled fashion. After | ||||
| removing the overload state the sequence number MUST NOT be used for | ||||
| future comparisons of sequence numbers. | ||||
| 4.2.3. Reporting Node Behavior (Normative) | For instance, if the reporting node wishes to change the reduction | |||
| percentage either higher, if the overload condition has worsened, | ||||
| or lower, if the overload condition has improved, then the | ||||
| reporting node would update the appropriate OCS entry. | ||||
| A reporting node is a Diameter node inserting an OC-OLR AVP in a | The reporting node MUST update the sequence number associated with | |||
| Diameter message in order to inform a reacting node about an overload | the OCS entry anytime the contents of the OCS entry are changed. | |||
| condition and request Diameter traffic abatement. | This will result in a new sequence number being sent to reacting | |||
| nodes, instructing the reacting nodes to process the OC-OLR AVP. | ||||
| The operation on the reporting node is straight forward. The | A reporting node SHOULD update an OCS entry with a validity duration | |||
| reporting node learns the capabilities of the reacting node when it | of zero ("0") when the overload condition ends. | |||
| receives the OC-Supported-Features AVP as part of any Diameter | ||||
| request message. If the reporting node shares at least one common | ||||
| feature with the reacting node, then the DOIC can be enabled between | ||||
| these two endpoints. See Section 4.1 for further discussion on the | ||||
| capability and feature announcement between two endpoints. | ||||
| When a traffic reduction is required due to an overload condition and | If the reporting node knows that the OCS entries in the reacting | |||
| the overload control solution is supported by the sender of the | nodes are near expiration then the reporting node can decide to | |||
| Diameter request, the reporting node MUST include an OC-Supported- | delete the OCS entry. | |||
| Features AVP and an OC-OLR AVP in the corresponding Diameter answer. | ||||
| The OC-OLR AVP contains the required traffic reduction and the OC- | The reporting node MUST keep an OCS entry with a validity duration of | |||
| Supported-Features AVP indicates the traffic abatement algorithm to | zero ("0") for a period of time long enough to ensure that any non- | |||
| apply. This algorithm MUST be one of the algorithms advertised by | expired reacting node's OCS entry created as a result of the overload | |||
| the request sender. | condition in the reporting node is deleted. | |||
| 4.2.2. Reacting Node Behavior | ||||
| When a reacting node sends a request it MUST determine if that | ||||
| request matches an active OCS. | ||||
| If the request matches and active OCS then the reacting node MUST | ||||
| apply abatement treatment on the request. The abatement treatment | ||||
| applied depends on the abatement algorithm stored in the OCS. | ||||
| For the Loss abatement algorithm defined in this specification, see | ||||
| Section 5 for the abatement logic applied. | ||||
| If the abatement treatment results in throttling of the request and | ||||
| if the reacting node is an agent then the agent MUST send an | ||||
| appropriate error as defined in section Section 7. | ||||
| In the case that the OCS entry validity duration expires or has a | ||||
| validity duration of zero ("0"), meaning that it the reporting node | ||||
| has explicitly signaled the end of the overload condition then | ||||
| abatement associated with the overload abatement MUST be ended in a | ||||
| controlled fashion. | ||||
| 4.2.3. Reporting Node Behavior | ||||
| The operation on the reporting node is straight forward. | ||||
| If there is an active OCS entry then the reporting node SHOULD | ||||
| include the OC-OLR AVP in all answer messages to requests that | ||||
| contain the OC-Supported-Features AVP and that match the active OCS | ||||
| entry. | ||||
| A request matches if the application-id in the request matches the | ||||
| application-id in any active OCS entry and if the report-type in | ||||
| the OCS entry matches a report-type supported by the reporting | ||||
| node as indicated in the OC-Supported-Features AVP. | ||||
| The contents of the OC-OLR AVP MUST contain all information necessary | ||||
| for the abatement algorithm indicated in the OC-Supported-Features | ||||
| AVP that is also included in the answer message. | ||||
| A reporting node MAY choose to not resend an overload report to a | ||||
| reacting node if it can guarantee that this overload report is | ||||
| already active in the reacting node. | ||||
| Note - In some cases (e.g. when there are one or more agents in | ||||
| the path between reporting and reacting nodes, or when overload | ||||
| reports are discarded by reacting nodes) the reporting node may | ||||
| not be able to guarantee that the reacting node has received the | ||||
| report. | ||||
| A reporting node MUST NOT send overload reports of a type that has | ||||
| not been advertised as supported by the reacting node. | ||||
| Note that a reacting node advertises support for the host and | ||||
| realm report types by including the OC-Supported-Features AVP in | ||||
| the request. Support for other report types must be explicitly | ||||
| indicated by new feature bits in the OC-Feature-Vector AVP. | ||||
| A reporting node MAY rely on the OC-Validity-Duration AVP values for | A reporting node MAY rely on the OC-Validity-Duration AVP values for | |||
| the implicit overload control state cleanup on the reacting node. | the implicit overload control state cleanup on the reacting node. | |||
| However, it is RECOMMENDED that the reporting node always explicitly | However, it is RECOMMENDED that the reporting node always explicitly | |||
| indicates the end of a overload condition. | indicates the end of a overload condition. | |||
| The reporting node SHOULD indicate the end of an overload occurrence | The reporting node SHOULD indicate the end of an overload occurrence | |||
| by sending a new OLR with OC-Validity-Duration set to a value of zero | by sending a new OLR with OC-Validity-Duration set to a value of zero | |||
| ("0"). The reporting node SHOULD insure that all reacting nodes | ("0"). The reporting node SHOULD ensure that all reacting nodes | |||
| receive the updated overload report. | receive the updated overload report. | |||
| 4.2.4. Agent Behavior (Normative) | All OLRs sent have an expiration time calculated by adding the | |||
| validity-duration contained in the OLR to the time the message was | ||||
| sent. Transit time for the OLR can be safely ignored. The | ||||
| reporting node can ensure that all reacting nodes have received | ||||
| the OLR by continuing to send it in answer messages until the | ||||
| expiration time for all OLRs sent for that overload condition have | ||||
| expired. | ||||
| Editor's note -- Need to add this section. | When a reporting node sends an OLR, it effectively delegates any | |||
| necessary throttling to downstream nodes. Therefore, the reporting | ||||
| node SHOULD NOT apply throttling to the set of messages to which the | ||||
| OLR applies. That is, the same candidate set of messages SHOULD NOT | ||||
| be throttled multiple times. | ||||
| 4.3. Protocol Extensibility (Normative) | However, when the reporting node sends and OLR downstream, it MAY | |||
| still be responsible to apply other abatement methods such as | ||||
| diversion. The reporting node might also need to throttle requests | ||||
| for reasons other then overload. For example, an agent or server | ||||
| might have a configured rate limit for each client, and throttle | ||||
| requests that exceed that limit, even if such requests had already | ||||
| been candidates for throttling by downstream nodes. | ||||
| This document assumes that there is a single source for realm-reports | ||||
| for a given realm, or that if multiple nodes can send realm reports, | ||||
| that each such node has full knowledge of the overload state of the | ||||
| entire realm. A reacting node cannot distinguish between receiving | ||||
| realm-reports from a single node, or from multiple nodes. | ||||
| Editor's Note: There is not yet consensus on the above two | ||||
| paragraphs. Two alternatives are under consideration -- | ||||
| synchronization of sequence numbers and attribution of reports. | ||||
| If no consensus is reached then it will be left to be addressed as | ||||
| an extension. | ||||
| 4.3. Protocol Extensibility | ||||
| The overload control solution can be extended, e.g. with new traffic | The overload control solution can be extended, e.g. with new traffic | |||
| abatement algorithms, new report types or other new functionality. | abatement algorithms, new report types or other new functionality. | |||
| When defining a new extension a new feature bit MUST be defined for | When defining a new extension a new feature bit MUST be defined for | |||
| the OC-Feature-Vector. This feature bit is used to communicate | the OC-Feature-Vector. This feature bit is used to communicate | |||
| support for the new feature. | support for the new feature. | |||
| The extention may also define new AVPs for use in DOIC Capability | The extension MAY define new AVPs for use in DOIC Capability | |||
| Anouncement and for use in DOIC Overload reporting. These new AVP | Announcement and for use in DOIC Overload reporting. These new AVPs | |||
| should be defined to be extensions to the OC-Supported-Features and | SHOULD be defined to be extensions to the OC-Supported-Features and | |||
| OC-OLR AVPs defined in this document. | OC-OLR AVPs defined in this document. | |||
| It should be noted that [RFC6733] defined Grouped AVP extension | It should be noted that [RFC6733] defined Grouped AVP extension | |||
| mechanisms apply. This allows, for example, defining a new feature | mechanisms apply. This allows, for example, defining a new feature | |||
| that is mandatory to be understood even when piggybacked on an | that is mandatory to be understood even when piggybacked on an | |||
| existing applications. More specifically, the sub-AVPs inside the | existing application. | |||
| OC-Supported-Features and OC-OLR AVP MAY have the M-bit set. | ||||
| However, when overload control AVPs are piggybacked on top of an | ||||
| existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED. | ||||
| The handling of feature bits in the OC-Feature-Vector AVP that are | The handling of feature bits in the OC-Feature-Vector AVP that are | |||
| not associated with overload abatement algorithms MUST be specified | not associated with overload abatement algorithms MUST be specified | |||
| by the extensions that define the features. | by the extensions that define the features. | |||
| When defining new report type values, the corresponding specification | When defining new report type values, the corresponding specification | |||
| MUST define the semantics of the new report types and how they affect | MUST define the semantics of the new report types and how they affect | |||
| the OC-OLR AVP handling. The specification MUST also reserve a | the OC-OLR AVP handling. The specification MUST also reserve a | |||
| corresponding new feature, see the OC-Supported-Features and OC- | corresponding new feature bit in the OC-Feature-Vector AVP. | |||
| Feature-Vector AVPs. | ||||
| The OC-OLR AVP can be expanded with optional sub-AVPs only if a | The OC-OLR AVP can be expanded with optional sub-AVPs only if a | |||
| legacy implementation can safely ignore them without breaking | legacy DOIC implementation can safely ignore them without breaking | |||
| backward compatibility for the given OC-Report-Type AVP value implied | backward compatibility for the given OC-Report-Type AVP value. If | |||
| report handling semantics. If the new sub-AVPs imply new semantics | the new sub-AVPs imply new semantics for handling the indicated | |||
| for handling the indicated report type, then a new OC-Report-Type AVP | report type, then a new OC-Report-Type AVP value MUST be defined. | |||
| value MUST be defined. | ||||
| New features (feature bits in the OC-Feature-Vector AVP) and report | New features (feature bits in the OC-Feature-Vector AVP) and report | |||
| types (in the OC-Report-Type AVP) MUST be registered with IANA. As | types (in the OC-Report-Type AVP) MUST be registered with IANA. As | |||
| with any Diameter specification, new AVPs MUST also be registered | with any Diameter specification, new AVPs MUST also be registered | |||
| with IANA. See Section 8 for the required procedures. | with IANA. See Section 8 for the required procedures. | |||
| 5. Loss Algorithm (Normative) | 5. Loss Algorithm | |||
| This section documents the Diameter overload loss abatement | This section documents the Diameter overload loss abatement | |||
| algorithm. | algorithm. | |||
| 5.1. Overview (Non normative) | 5.1. Overview | |||
| The DOIC specification supports the ability for multiple overload | The DOIC specification supports the ability for multiple overload | |||
| abatement algorithms to be specified. The abatement algorithm used | abatement algorithms to be specified. The abatement algorithm used | |||
| for any instance of overload is determined by the Diameter Overload | for any instance of overload is determined by the Diameter Overload | |||
| Capability Announcement process documented in Section 4.1. | Capability Announcement process documented in Section 4.1. | |||
| The loss algorithm described in this section is the default algorithm | The loss algorithm described in this section is the default algorithm | |||
| that must be supported by all Diameter nodes that support DOIC. | that must be supported by all Diameter nodes that support DOIC. | |||
| The loss algorithm is designed to be a straightforward and stateless | The loss algorithm is designed to be a straightforward and stateless | |||
| skipping to change at page 28, line 32 ¶ | skipping to change at page 21, line 37 ¶ | |||
| request a percentage reduction in the amount of traffic sent. The | request a percentage reduction in the amount of traffic sent. The | |||
| traffic impacted by the requested reduction depends on the type of | traffic impacted by the requested reduction depends on the type of | |||
| overload report. | overload report. | |||
| Reporting nodes use a strategy of applying abatement logic to the | Reporting nodes use a strategy of applying abatement logic to the | |||
| requested percentage of request messages sent (or handled in the case | requested percentage of request messages sent (or handled in the case | |||
| of agents) by the reacting node that are impacted by the overload | of agents) by the reacting node that are impacted by the overload | |||
| report. | report. | |||
| From a conceptual level, the logic at the reacting node could be | From a conceptual level, the logic at the reacting node could be | |||
| outlined as follows. In this discussion assume that the reacting | outlined as follows. | |||
| node is also the sending node. | ||||
| 1. An overload report is received and the associated overload state | 1. An overload report is received and the associated overload state | |||
| is saved by the reacting node. | is either saved or updated (if required) by the reacting node. | |||
| 2. A new Diameter request is generated by the application running on | 2. A new Diameter request is generated by the application running on | |||
| the reacting node. | the reacting node. | |||
| 3. The reacting node determines that an active overload report | 3. The reacting node determines that an active overload report | |||
| applies to the request. | applies to the request, as indicated by the corresponding OCS | |||
| entry. | ||||
| 4. The reacting node determines if abatement should be applied to | 4. The reacting node determines if abatement should be applied to | |||
| the request. One approach that could be taken would be to select | the request. One approach that could be taken for each request | |||
| a random number between 1 and 100. If the random number is less | is to select a random number between 1 and 100. If the random | |||
| than the indicated reduction percentage then the request is given | number is less than the indicated reduction percentage then the | |||
| abatement treatment, otherwise the request is given normal | request is given abatement treatment, otherwise the request is | |||
| routing treatment. | given normal routing treatment. | |||
| 5.2. Use of OC-Reduction-Percentage AVP | ||||
| A reporting node using the loss algorithm must use the OC-Reduction- | ||||
| Percentage AVP (Section 6.7 to indicated the desired percentage of | ||||
| traffic reduction.) | ||||
| Editor's note: The above duplicates what is in the OC-Reduction- | ||||
| Percentage AVP section can probably be removed. | ||||
| 5.3. Reporting Node Behavior (Normative) | 5.2. Reporting Node Behavior | |||
| The method a reporting nodes uses to determine the amount of traffic | The method a reporting nodes uses to determine the amount of traffic | |||
| reduction required to address an overload condition is an | reduction required to address an overload condition is an | |||
| implementation decision. | implementation decision. | |||
| When a reporting node that has selected the loss abatement algorithm | When a reporting node that has selected the loss abatement algorithm | |||
| determines the need to request a traffic reduction it must include an | determines the need to request a traffic reduction it includes an OC- | |||
| OC-OLR AVP in all response messages. | OLR AVP in response messages as described in Section 4.2.3. | |||
| The reporting node must indicate a percentage reduction in the OC- | The reporting node MUST indicate a percentage reduction in the OC- | |||
| Reduction-Percentage AVP. | Reduction-Percentage AVP. | |||
| The reporting node may change the reduction percentage in subsequent | The reporting node MAY change the reduction percentage in subsequent | |||
| overload reports. When doing so the reporting node must conform to | overload reports. When doing so the reporting node must conform to | |||
| overload report handing specified in Section 4.2.3. | overload report handing specified in Section 4.2.3. | |||
| When the reporting node determines it no longer needs a reduction in | When the reporting node determines it no longer needs a reduction in | |||
| traffic the reporting node should send an overload report indicating | traffic the reporting node SHOULD send an overload report indicating | |||
| the overload report is no longer valid, as specified in | the overload report is no longer valid, as specified in | |||
| Section 4.2.3. | Section 4.2.3. | |||
| 5.4. Reacting Node Behavior (Normative) | 5.3. Reacting Node Behavior | |||
| The method a reacting node uses to determine which request messages | The method a reacting node uses to determine which request messages | |||
| are given abatement treatment is an implementation decision. | are given abatement treatment is an implementation decision. | |||
| When receiving an OC-OLR in an answer message where the algorithm | When receiving an OC-OLR in an answer message where the algorithm | |||
| indicated in the OC-Supported-Features AVP is the loss algorithm, the | indicated in the OC-Supported-Features AVP is the loss algorithm, the | |||
| reacting node must attempt to apply abatement treatment to the | reacting node MUST apply abatement treatment to the requested | |||
| requested percentage of request messages sent. | percentage of request messages sent. | |||
| Note: the loss algorithm is a stateless algorithm. As a result, | Note: the loss algorithm is a stateless algorithm. As a result, | |||
| the reacting node does not guarantee that there will be an | the reacting node does not guarantee that there will be an | |||
| absolute reduction in traffic sent. Rather, it guarantees that | absolute reduction in traffic sent. Rather, it guarantees that | |||
| the requested percentage of new requests will be given abatement | the requested percentage of new requests will be given abatement | |||
| treatment. | treatment. | |||
| When applying overload abatement treatment for the load abatement | ||||
| algorithm, the reacting node MUST abate, either by throttling or | ||||
| diversion, the requested percentage of requests that would have | ||||
| otherwise been sent to the reporting host or realm. | ||||
| If reacting node comes out of the 100 percent traffic reduction as a | If reacting node comes out of the 100 percent traffic reduction as a | |||
| result of the overload report timing out, the following concerns are | result of the overload report timing out, the following concerns are | |||
| RECOMMENDED to be applied. The reacting node sending the traffic | RECOMMENDED to be applied. The reacting node sending the traffic | |||
| should be conservative and, for example, first send "probe" messages | should be conservative and, for example, first send "probe" messages | |||
| to learn the overload condition of the overloaded node before | to learn the overload condition of the overloaded node before | |||
| converging to any traffic amount/rate decided by the sender. Similar | converging to any traffic amount/rate decided by the sender. Similar | |||
| concerns apply in all cases when the overload report times out unless | concerns apply in all cases when the overload report times out unless | |||
| the previous overload report stated 0 percent reduction. | the previous overload report stated 0 percent reduction. | |||
| Editor's note: Need to add additional guidance to slowly increase | If the reacting node does not receive an OLR in messages sent to the | |||
| the rate of traffic sent to avoid a sudden spike in traffic, as | formerly overloaded node then the reacting node SHOULD slowly | |||
| the spike in traffic could result in oscillation of the need for | ||||
| overload control. | ||||
| If the reacting node does not receive a an OLR in messages sent to | ||||
| the formally overloaded node then the reacting node should slowly | ||||
| increase the rate of traffic sent to the overloaded node. | increase the rate of traffic sent to the overloaded node. | |||
| It is suggested that the reacting node decrease the amount of traffic | It is suggested that the reacting node decrease the amount of traffic | |||
| given abatement treatment by 20% each second until the reduction is | given abatement treatment by 20% each second until the reduction is | |||
| completely removed and no traffic is given abatement treatment. | completely removed and no traffic is given abatement treatment. | |||
| The goal of this behavior is to reduce the probability of overload | The goal of this behavior is to reduce the probability of overload | |||
| condition thrashing where an immediate transition from 100% | condition thrashing where an immediate transition from 100% | |||
| reduction to 0% reduction results in the reporting node moving | reduction to 0% reduction results in the reporting node moving | |||
| quickly back into an overload condition. | quickly back into an overload condition. | |||
| 6. Attribute Value Pairs (Normative) | 6. Attribute Value Pairs | |||
| This section describes the encoding and semantics of the Diameter | This section describes the encoding and semantics of the Diameter | |||
| Overload Indication Attribute Value Pairs (AVPs) defined in this | Overload Indication Attribute Value Pairs (AVPs) defined in this | |||
| document. | document. | |||
| When added to existing commands, both OC-Feature-Vector and OC-OLR | ||||
| AVPs SHOULD have the M-bit flag cleared to avoid backward | ||||
| compatibility issues. | ||||
| A new application specification can incorporate the overload control | A new application specification can incorporate the overload control | |||
| mechanism specified in this document by making it mandatory to | mechanism specified in this document by making it mandatory to | |||
| implement for the application and referencing this specification | implement for the application and referencing this specification | |||
| normatively. In such a case, the OC-Feature-Vector and OC-OLR AVPs | normatively. It is the responsibility of the Diameter application | |||
| reused in newly defined Diameter applications SHOULD have the M-bit | designers to define how overload control mechanisms works on that | |||
| flag set. However, it is the responsibility of the Diameter | application. | |||
| application designers to define how overload control mechanisms works | ||||
| on that application. | ||||
| 6.1. OC-Supported-Features AVP | 6.1. OC-Supported-Features AVP | |||
| The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and | The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and | |||
| serves for two purposes. First, it announces a node's support for | serves two purposes. First, it announces a node's support for the | |||
| the DOIC 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 message a DOIC | Features AVP MUST be included in every Diameter request message a | |||
| supporting node sends. | DOIC supporting node sends. | |||
| OC-Supported-Features ::= < AVP Header: TBD1 > | OC-Supported-Features ::= < AVP Header: TBD1 > | |||
| [ OC-Feature-Vector ] | [ OC-Feature-Vector ] | |||
| * [ AVP ] | * [ AVP ] | |||
| The OC-Feature-Vector sub-AVP is used to announce the DOIC features | The OC-Feature-Vector sub-AVP is used to announce the DOIC features | |||
| supported by the endpoint, in the form of a flag bits field in which | supported by the DOIC node, in the form of a flag bits field in which | |||
| each bit announces one feature or capability supported by the node | each bit announces one feature or capability supported by the node | |||
| (see Section 6.2). The absence of the OC-Feature-Vector AVP | (see Section 6.2). The absence of the OC-Feature-Vector AVP | |||
| indicates that only the default traffic abatement algorithm described | indicates that only the default traffic abatement algorithm described | |||
| in this specification is supported. | in this specification is supported. | |||
| A reacting node includes this AVP to indicate its capabilities to a | ||||
| reporting node. For example, the endpoint (reacting node) may | ||||
| indicate which (future defined) traffic abatement algorithms it | ||||
| supports in addition to the default. | ||||
| During the message exchange the overload control endpoints express | ||||
| their common set of supported capabilities. The reacting node | ||||
| includes the OC-Supported-Features AVP that announces what it | ||||
| supports. The reporting node that sends the answer also includes the | ||||
| OC-Supported-Features AVP that describes the capabilities it | ||||
| supports. The set of capabilities advertised by the reporting node | ||||
| depends on local policies. At least one of the announced | ||||
| capabilities MUST match. If there is no single matching capability | ||||
| the reacting node MUST act as if it does not implement DOIC and cease | ||||
| inserting any DOIC related AVPs into any Diameter messages with this | ||||
| specific reacting node. | ||||
| Editor's note: The last sentence conflicts with the last sentence | ||||
| two paragraphs up. In reality, there will always be at least one | ||||
| matching capability as all nodes supporting DOIC must support the | ||||
| loss algorithm. Suggest removing the last sentence. | ||||
| 6.2. OC-Feature-Vector AVP | 6.2. OC-Feature-Vector AVP | |||
| The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and | The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and | |||
| contains a 64 bit flags field of announced capabilities of an | contains a 64 bit flags field of announced capabilities of a DOIC | |||
| overload control endpoint. The value of zero (0) is reserved. | node. The value of zero (0) is reserved. | |||
| The following capabilities are defined in this document: | The following capabilities are defined in this document: | |||
| OLR_DEFAULT_ALGO (0x0000000000000001) | OLR_DEFAULT_ALGO (0x0000000000000001) | |||
| When this flag is set by the overload control endpoint it means | When this flag is set by the DOIC node it means that the default | |||
| that the default traffic abatement (loss) algorithm is supported. | traffic abatement (loss) algorithm is supported. | |||
| 6.3. OC-OLR AVP | 6.3. OC-OLR AVP | |||
| The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the | The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the | |||
| necessary information to convey an overload report. The OC-OLR AVP | information necessary to convey an overload report on an overload | |||
| does not explicitly contain all information needed by the reacting | condition at the reporting node. The OC-OLR AVP does not explicitly | |||
| node to decide whether a subsequent request must undergo a throttling | contain all information needed by the reacting node to decide whether | |||
| process with the received reduction percentage. The value of the OC- | a subsequent request must undergo a throttling process with the | |||
| Report-Type AVP within the OC-OLR AVP indicates which implicit | received reduction percentage. The value of the OC-Report-Type AVP | |||
| information is relevant for this decision (see Section 6.6). The | within the OC-OLR AVP indicates which implicit information is | |||
| application the OC-OLR AVP applies to is the same as the Application- | relevant for this decision (see Section 6.6). The application the | |||
| Id found in the Diameter message header. The identity the OC-OLR AVP | OC-OLR AVP applies to is the same as the Application-Id found in the | |||
| concerns is determined from the Origin-Host AVP (and Origin-Realm AVP | Diameter message header. The host or realm the OC-OLR AVP concerns | |||
| as well) found from the encapsulating Diameter command. The OC-OLR | is determined from the Origin-Host AVP and/or Origin-Realm AVP found | |||
| AVP is intended to be sent only by a reporting node. | in the encapsulating Diameter command. The OC-OLR AVP is intended to | |||
| be sent only by a reporting node. | ||||
| OC-OLR ::= < AVP Header: TBD2 > | OC-OLR ::= < AVP Header: TBD2 > | |||
| < OC-Sequence-Number > | < OC-Sequence-Number > | |||
| < OC-Report-Type > | < OC-Report-Type > | |||
| [ OC-Reduction-Percentage ] | [ OC-Reduction-Percentage ] | |||
| [ OC-Validity-Duration ] | [ OC-Validity-Duration ] | |||
| * [ AVP ] | * [ AVP ] | |||
| The OC-Validity-Duration AVP indicates the validity time of the | ||||
| overload report associated with a specific sequence number, measured | ||||
| after reception of the OC-OLR AVP. The validity time MUST NOT be | ||||
| updated after reception of subsequent OC-OLR AVPs with the same | ||||
| sequence number. The default value for the OC-Validity-Duration AVP | ||||
| value is 5 (i.e., 5 seconds). When the OC-Validity-Duration AVP is | ||||
| not present in the OC-OLR AVP, the default value applies. | ||||
| Note that if a Diameter command were to contain multiple OC-OLR AVPs | Note that if a Diameter command were to contain multiple OC-OLR AVPs | |||
| they all MUST have different OC-Report-Type AVP value. OC-OLR AVPs | they all MUST have different OC-Report-Type AVP value. OC-OLR AVPs | |||
| with unknown values SHOULD be silently discarded and the event SHOULD | with unknown values SHOULD be silently discarded by reacting nodes | |||
| be logged. | and the event SHOULD be logged. | |||
| Editor's note: Need to specify what happens when two reports of | ||||
| the same type are received. | ||||
| 6.4. OC-Sequence-Number AVP | 6.4. OC-Sequence-Number AVP | |||
| The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64. | The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64. | |||
| Its usage in the context of overload control is described in | Its usage in the context of overload control is described in | |||
| Section 4.2. | Section 4.2. | |||
| From the functionality point of view, the OC-Sequence-Number AVP MUST | From the functionality point of view, the OC-Sequence-Number AVP MUST | |||
| be used as a non-volatile increasing counter between two overload | be used as a non-volatile increasing counter for a sequence of | |||
| control endpoints. The sequence number is only required to be unique | overload reports between two DOIC nodes for the same overload | |||
| between two overload control endpoints. Sequence numbers are treated | occurrence. The sequence number is only required to be unique | |||
| in a uni-directional manner, i.e. two sequence numbers on each | between two DOIC nodes. Sequence numbers are treated in a uni- | |||
| direction between two endpoints are not related or correlated. | directional manner, i.e. two sequence numbers on each direction | |||
| between two DOIC nodes are not related or correlated. | ||||
| When generating sequence numbers, the new sequence number MUST be | ||||
| greater than any sequence number in an active overload report | ||||
| previously sent by the reporting node. This property MUST hold over | ||||
| a reboot of the reporting node. | ||||
| 6.5. OC-Validity-Duration AVP | 6.5. OC-Validity-Duration AVP | |||
| The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32 | The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32 | |||
| and indicates in seconds the validity time of the overload report. | and indicates in milliseconds the validity time of the overload | |||
| The number of seconds is measured after reception of the first OC-OLR | report. The number of milliseconds is measured after reception of | |||
| AVP with a given value of OC-Sequence-Number AVP. The default value | the first OC-OLR AVP with a given value of OC-Sequence-Number AVP. | |||
| for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds). When the | The default value for the OC-Validity-Duration AVP is 5000 (i.e., 5 | |||
| OC-Validity-Duration AVP is not present in the OC-OLR AVP, the | seconds). When the OC-Validity-Duration AVP is not present in the | |||
| default value applies. Validity duration with values above 86400 | OC-OLR AVP, the default value applies. Validity duration with values | |||
| (i.e.; 24 hours) MUST NOT be used. Invalid duration values are | above 86400 (i.e.; 24 hours) MUST NOT be used. Invalid duration | |||
| treated as if the OC-Validity-Duration AVP were not present and | values are treated as if the OC-Validity-Duration AVP were not | |||
| result in the default value being used. | present and result in the default value being used. | |||
| Editor's note: There is an open discussion on whether to have an | ||||
| upper limit on the OC-Validity-Duration value, beyond that which can | ||||
| be indicated by an Unsigned32. | ||||
| A timeout of the overload report has specific concerns that need to | A timeout of the overload report has specific concerns that need to | |||
| be taken into account by the endpoint acting on the earlier received | be taken into account by the DOIC node acting on the earlier received | |||
| overload report(s). Section 6.7 discusses the impacts of timeout in | overload report(s). Section 6.7 discusses the impacts of timeout in | |||
| the scope of the traffic abatement algorithms. | the scope of the traffic abatement algorithms. | |||
| When a reporting node has recovered from overload, it SHOULD | ||||
| invalidate any existing overload reports in a timely matter. This | ||||
| can be achieved by sending an updated overload report (meaning the | ||||
| OLR contains a new sequence number) with the OC-Validity-Duration AVP | ||||
| value set to zero ("0"). If the overload report is about to expire | ||||
| naturally, the reporting node MAY choose to simply let it do so. | ||||
| A reacting node MUST invalidate and remove an overload report that | ||||
| expires without an explicit overload report containing an OC- | ||||
| Validity-Duration value set to zero ("0"). | ||||
| 6.6. OC-Report-Type AVP | 6.6. OC-Report-Type AVP | |||
| The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated. The | The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated. The | |||
| value of the AVP describes what the overload report concerns. The | value of the AVP describes what the overload report concerns. The | |||
| following values are initially defined: | following values are initially defined: | |||
| 0 A host report. The overload treatment should apply to requests | 0 A host report. The overload treatment should apply to requests | |||
| for which all of the following conditions are true: | for which all of the following conditions are true: | |||
| Either the Destination-Host AVP is present in the request and its | Either the Destination-Host AVP is present in the request and its | |||
| value matches the value of the Origin-Host AVP of the received | value matches the value of the Origin-Host AVP of the received | |||
| message that contained the OC-OLR AVP; or the Destination-Host is | message that contained the OC-OLR AVP; or the Destination-Host is | |||
| not present in the request but the value of peer identity | not present in the request but the value of the peer identity | |||
| associated with the connection used to send the request matches | associated with the connection used to send the request matches | |||
| the value of the Origin-Host AVP of the received message that | the value of the Origin-Host AVP of the received message that | |||
| contained the OC-OLR AVP. | contained the OC-OLR AVP. | |||
| The value of the Destination-Realm AVP in the request matches the | The value of the Destination-Realm AVP in the request matches the | |||
| value of the Origin-Realm AVP of the received message that | value of the Origin-Realm AVP of the received message that | |||
| contained the OC-OLR AVP. | contained the OC-OLR AVP. | |||
| The value of the Application-ID in the Diameter Header of the | The value of the Application-ID in the Diameter Header of the | |||
| request matches the value of the Application-ID of the Diameter | request matches the value of the Application-ID of the Diameter | |||
| Header of the received message that contained the OC-OLR AVP. | Header of the received message that contained the OC-OLR AVP. | |||
| 1 A realm report. The overload treatment should apply to requests | 1 A realm report. The overload treatment should apply to requests | |||
| for which all of the following conditions are true: | for which all of the following conditions are true: | |||
| The Destination-Host AVP is absent in the request. | The Destination-Host AVP is absent in the requestand the value of | |||
| the peer identity associated with the connection used to send the | ||||
| request does not match a server that could serve the request. | ||||
| The value of the Destination-Realm AVP in the request matches the | The value of the Destination-Realm AVP in the request matches the | |||
| value of the Origin-Realm AVP of the received message that | value of the Origin-Realm AVP of the received message that | |||
| contained the OC-OLR AVP. | contained the OC-OLR AVP. | |||
| The value of the Application-ID in the Diameter Header of the | The value of the Application-ID in the Diameter Header of the | |||
| request matches the value of the Application-ID of the Diameter | request matches the value of the Application-ID of the Diameter | |||
| Header of the received message that contained the OC-OLR AVP. | Header of the received message that contained the OC-OLR AVP. | |||
| Editor's note: There is still an open issue on the definition of | ||||
| Realm reports and whether what report types should be supported. | ||||
| There is consensus that host reports should be supported. There | ||||
| is discussion on Realm reports and Realm-Routed-Request reports. | ||||
| The above definition applies to Realm-Routed-Request reports where | ||||
| Realm reports are defined to apply to all requests that match the | ||||
| realm, independent of the presence, absence or value of the | ||||
| Destination-Host AVP. | ||||
| The default value of the OC-Report-Type AVP is 0 (i.e. the host | ||||
| report). | ||||
| The OC-Report-Type AVP is envisioned to be useful for situations | The OC-Report-Type AVP is envisioned to be useful for situations | |||
| where a reacting node needs to apply different overload treatments | where a reacting node needs to apply different overload treatments | |||
| for different "types" of overload. For example, the reacting node(s) | for different overload contexts. For example, the reacting node(s) | |||
| might need to throttle differently requests sent to a specific server | might need to throttle differently requests sent to a specific server | |||
| (identified by the Destination-Host AVP in the request) and requests | (identified by the Destination-Host AVP in the request) and requests | |||
| that can be handled by any server in a realm. The example in | that can be handled by any server in a realm. | |||
| Appendix B.1 illustrates this usage. | ||||
| 6.7. OC-Reduction-Percentage AVP | 6.7. OC-Reduction-Percentage AVP | |||
| The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32 | The OC-Reduction-Percentage AVP (AVP code TBD8) is type of 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 other endpoint to apply any traffic abatement. | has no need for the reacting node to apply any traffic abatement. | |||
| The default value of the OC-Reduction-Percentage AVP is 0. When the | The default value of the OC-Reduction-Percentage AVP is 0. When the | |||
| OC-Reduction-Percentage AVP is not present in the overload report, | OC-Reduction-Percentage AVP is not present in the overload report, | |||
| the default value applies. | the default value applies. | |||
| 6.8. Attribute Value Pair flag rules | 6.8. Attribute Value Pair flag rules | |||
| +---------+ | +---------+ | |||
| |AVP flag | | |AVP flag | | |||
| |rules | | |rules | | |||
| +----+----+ | +----+----+ | |||
| AVP Section | |MUST| | AVP Section | |MUST| | |||
| Attribute Name Code Defined Value Type |MUST| NOT| | Attribute Name Code Defined Value Type |MUST| NOT| | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Supported-Features TBD1 x.x Grouped | | V | | |OC-Supported-Features TBD1 x.x Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-OLR TBD2 x.x Grouped | | V | | |OC-OLR TBD2 x.x Grouped | | V | | |||
| skipping to change at page 36, line 39 ¶ | skipping to change at page 27, line 48 ¶ | |||
| command within that application that includes the AVP. | command within that application that includes the AVP. | |||
| The Diameter overload control AVPs SHOULD always be sent with the | The Diameter overload control AVPs SHOULD always be sent with the | |||
| M-bit cleared when used within existing Diameter applications to | M-bit cleared when used within existing Diameter applications to | |||
| avoid backward compatibility issues. Otherwise, when reused in newly | avoid backward compatibility issues. Otherwise, when reused in newly | |||
| defined Diameter applications, the DOC related AVPs SHOULD have the | defined Diameter applications, the DOC related AVPs SHOULD have the | |||
| M-bit set. | M-bit set. | |||
| 7. Error Response Codes | 7. Error Response Codes | |||
| Editor's note: This section depends on resolution of issue #27. | When a DOIC node rejects a Diameter request due to overload, the DOIC | |||
| node MUST select an appropriate error response code. This | ||||
| determination is made based on the probability of the request | ||||
| succeeding if retried on a different path. | ||||
| A reporting node rejecting a Diameter request due to an overload | ||||
| condition SHOULD send a DIAMETER-TOO-BUSY error response, if it can | ||||
| assume that the same request may succeed on a different path. | ||||
| If a reporting node knows or assumes that the same request will not | ||||
| succeed on a different path, DIAMETER_UNABLE_TO_COMPLY error response | ||||
| SHOULD be used. Retrying would consume valuable resources during an | ||||
| occurrence of overload. | ||||
| For instance, if the request arrived at the reporting node without | ||||
| a Destination-Host AVP then the reporting node might determine | ||||
| that there is an alternative Diameter node that could successfully | ||||
| process the request and that retrying the transaction would not | ||||
| negatively impact the reporting node. DIAMETER_TOO_BUSY would be | ||||
| sent in this case. | ||||
| For instance, if the request arrived at the reporting node with a | ||||
| Destination-Host AVP populated with its own Diameter identity then | ||||
| the reporting node can assume that retrying the request would | ||||
| result in it coming to the same reporting node. | ||||
| DIAMETER_UNABLE_TO_COMPLY would be sent in this case. | ||||
| A second example is when an agent that supports the DOIC solution | ||||
| is performing the role of a reacting node for a non supporting | ||||
| client. Requests that are rejected as a result of DOIC throttling | ||||
| by the agent in this scenario would generally be rejected with a | ||||
| DIAMETER_UNABLE_TO_COMPLY response code. | ||||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 8.1. AVP codes | 8.1. AVP codes | |||
| New AVPs defined by this specification are listed in Section 6. All | New AVPs defined by this specification are listed in Section 6. All | |||
| AVP codes allocated from the 'Authentication, Authorization, and | AVP codes allocated from the 'Authentication, Authorization, and | |||
| Accounting (AAA) Parameters' AVP Codes registry. | Accounting (AAA) Parameters' AVP Codes registry. | |||
| 8.2. New registries | 8.2. New registries | |||
| Three new registries are needed under the 'Authentication, | Two new registries are needed under the 'Authentication, | |||
| Authorization, and Accounting (AAA) Parameters' registry. | Authorization, and Accounting (AAA) Parameters' registry. | |||
| Section 6.2 defines a new "Overload Control Feature Vector" registry | Section 6.2 defines a new "Overload Control Feature Vector" registry | |||
| including the initial assignments. New values can be added into the | including the initial assignments. New values can be added into the | |||
| registry using the Specification Required policy [RFC5226]. See | registry using the Specification Required policy [RFC5226]. See | |||
| Section 6.2 for the initial assignment in the registry. | Section 6.2 for the initial assignment in the registry. | |||
| Section 6.6 defines a new "Overload Report Type" registry with its | Section 6.6 defines a new "Overload Report Type" registry with its | |||
| initial assignments. New types can be added using the Specification | initial assignments. New types can be added using the Specification | |||
| Required policy [RFC5226]. | Required policy [RFC5226]. | |||
| skipping to change at page 38, line 33 ¶ | skipping to change at page 30, line 23 ¶ | |||
| A similar attack involves an otherwise authorized Diameter node that | A similar attack involves an otherwise authorized Diameter node that | |||
| sends an inappropriate overload report. For example, a server for | sends an inappropriate overload report. For example, a server for | |||
| the realm "example.com" might send an overload report indicating that | the realm "example.com" might send an overload report indicating that | |||
| a competitor's realm "example.net" is overloaded. If other nodes act | a competitor's realm "example.net" is overloaded. If other nodes act | |||
| on the report, they may falsely believe that "example.net" is | on the report, they may falsely believe that "example.net" is | |||
| overloaded, effectively reducing that realm's capacity. Therefore, | overloaded, effectively reducing that realm's capacity. Therefore, | |||
| it's critical that nodes validate that an overload report received | it's critical that nodes validate that an overload report received | |||
| from a peer actually falls within that peer's responsibility before | from a peer actually falls within that peer's responsibility before | |||
| acting on the report or forwarding the report to other peers. For | acting on the report or forwarding the report to other peers. For | |||
| example, an overload report from an peer that applies to a realm not | example, an overload report from a peer that applies to a realm not | |||
| handled by that peer is suspect. | handled by that peer is suspect. | |||
| An attacker might use the information in an overload report to assist | An attacker might use the information in an overload report to assist | |||
| in certain attacks. For example, an attacker could use information | in certain attacks. For example, an attacker could use information | |||
| about current overload conditions to time a DoS attack for maximum | about current overload conditions to time a DoS attack for maximum | |||
| effect, or use subsequent overload reports as a feedback mechanism to | effect, or use subsequent overload reports as a feedback mechanism to | |||
| learn the results of a previous or ongoing attack. | learn the results of a previous or ongoing attack. | |||
| 9.2. Denial of Service Attacks | 9.2. Denial of Service Attacks | |||
| skipping to change at page 41, line 51 ¶ | skipping to change at page 33, line 44 ¶ | |||
| This specification describes only means for a simple loss based | This specification describes only means for a simple loss based | |||
| algorithm. Future algorithms can be added using the designed | algorithm. Future algorithms can be added using the designed | |||
| solution extension mechanism. The new algorithms need to be | solution extension mechanism. The new algorithms need to be | |||
| registered with IANA. See Sections 6.1 and 8 for the required IANA | registered with IANA. See Sections 6.1 and 8 for the required IANA | |||
| steps. | steps. | |||
| A.2. Agent Overload | A.2. Agent Overload | |||
| This specification focuses on Diameter endpoint (server or client) | This specification focuses on Diameter endpoint (server or client) | |||
| overload. A separate extension will be required to outline the | overload. A separate extension will be required to outline the | |||
| handling the case of agent overload. | handling of the case of agent overload. | |||
| A.3. DIAMETER_TOO_BUSY clarifications | A.3. New Error Diagnostic AVP | |||
| The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is | The proposal was made to add a new Error Diagnostic AVP to supplement | |||
| somewhat under specified. For example, there is no information how | the error responces to be able to indicate that overload was the | |||
| long the specific Diameter node is willing to be unavailable. A | reason for the rejection of the message. | |||
| specification updating [RFC6733] should clarify the handling of | ||||
| DIAMETER_TOO_BUSY from the error answer initiating Diameter node | ||||
| point of view and from the original request initiating Diameter node | ||||
| point of view. Further, the inclusion of possible additional | ||||
| information providing AVPs should be discussed and possible be | ||||
| recommended to be used. | ||||
| Appendix B. Examples | Appendix B. Deployment Considerations | |||
| B.1. Mix of Destination-Realm routed requests and Destination-Host | Non supporting agents | |||
| routed requests | ||||
| Diameter allows a client to optionally select the destination server | Due to the way that realm-routed requests are handled in Diameter | |||
| of a request, even if there are agents between the client and the | networks, with the server selection for the request done by an | |||
| server. The client does this using the Destination-Host AVP. In | agent, it is recommended that deployments enable all agents that | |||
| cases where the client does not care if a specific server receives | do server selection to support the DOIC solution prior to enabling | |||
| the request, it can omit Destination-Host and route the request using | the DOIC solution in the Diameter network. | |||
| the Destination-Realm and Application Id, effectively letting an | ||||
| agent select the server. | ||||
| Clients commonly send mixtures of Destination-Host and Destination- | Topology hiding interactions | |||
| Realm routed requests. For example, in an application that uses user | ||||
| sessions, a client typically won't care which server handles a | ||||
| session-initiating requests. But once the session is initiated, the | ||||
| client will send all subsequent requests in that session to the same | ||||
| server. Therefore it would send the initial request with no | ||||
| Destination-Host AVP. If it receives a successful answer, the client | ||||
| would copy the Origin-Host value from the answer message into a | ||||
| Destination-Host AVP in each subsequent request in the session. | ||||
| An agent has very limited options in applying overload abatement to | There exist proxies that implement what is referred to as Topology | |||
| requests that contain Destination-Host AVPs. It typically cannot | Hiding. This can include cases where the agent modifies the | |||
| route the request to a different server than the one identified in | Origin-Host in answer messages. The behavior of the DOIC solution | |||
| Destination-Host. It's only remaining options are to throttle such | is not well understood when this happens. As such, the DOIC | |||
| requests locally, or to send an overload report back towards the | solution does not address this scenario. | |||
| client so the client can throttle the requests. The second choice is | ||||
| usually more efficient, since it prevents any throttled requests from | ||||
| being sent in the first place, and removes the agent's need to send | ||||
| errors back to the client for each dropped request. | ||||
| On the other hand, an agent has much more leeway to apply overload | Appendix C. Requirements Conformance Analysis | |||
| abatement for requests that do not contain Destination-Host AVPs. If | ||||
| the agent has multiple servers in its peer table for the given realm | ||||
| and application, it can route such requests to other, less overloaded | ||||
| servers. | ||||
| If the overload severity increases, the agent may reach a point where | This section contains the result of an analysis of the DOIC solutions | |||
| there is not sufficient capacity across all servers to handle even | conformance to the requirements defined in [RFC7068]. | |||
| realm-routed requests. In this case, the realm itself can be | ||||
| considered overloaded. The agent may need the client to throttle | ||||
| realm-routed requests in addition to Destination-Host routed | ||||
| requests. The overload severity may be different for each server, | ||||
| and the severity for the realm at is likely to be different than for | ||||
| any specific server. Therefore, an agent may need to forward, or | ||||
| originate, multiple overload reports with differing ReportType and | ||||
| Reduction-Percentage values. | ||||
| Figure 8 illustrates such a mixed-routing scenario. In this example, | To be completed. | |||
| the servers S1, S2, and S3 handle requests for the realm "realm". | ||||
| Any of the three can handle requests that are not part of a user | ||||
| session (i.e. routed by Destination-Realm). But once a session is | ||||
| established, all requests in that session must go to the same server. | ||||
| Client Agent S1 S2 S3 | Appendix D. Considerations for Applications Integrating the DOIC | |||
| | | | | | | Solution | |||
| |(1) Request (DR:realm) | | | ||||
| |-------->| | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |Agent selects S1 | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |(2) Request (DR:realm) | | ||||
| | |-------->| | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | |S1 overloaded, returns OLR | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |(3) Answer (OR:realm,OH:S1,OLR:RT=DH) | ||||
| | |<--------| | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |sees OLR,routes DR traffic to S2&S3 | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |(4) Answer (OR:realm,OH:S1, OLR:RT=DH) | | ||||
| |<--------| | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |Client throttles requests with DH:S1 | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |(5) Request (DR:realm) | | | ||||
| |-------->| | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |Agent selects S2 | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |(6) Request (DR:realm) | | ||||
| | |------------------>| | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | |S2 is overloaded... | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |(7) Answer (OH:S2, OLR:RT=DH)| | ||||
| | |<------------------| | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |Agent sees OLR, realm now overloaded | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R) | ||||
| |<--------| | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |Client throttles DH:S1, DH:S2, and DR:realm | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| Figure 8: Mix of Destination-Host and Destination-Realm Routed | This section outlines considerations to be taken into account when | |||
| Requests | integrating the DOIC solution into Diameter applications. | |||
| 1. The client sends a request with no Destination-Host AVP (that is, | D.1. Application Classification | |||
| a Destination-Realm routed request.) | ||||
| 2. The agent follows local policy to select a server from its peer | The following is a classification of Diameter applications and | |||
| table. In this case, the agent selects S2 and forwards the | request types. This discussion is meant to document factors that | |||
| request. | play into decisions made by the Diameter identity responsible for | |||
| handling overload reports. | ||||
| 3. S1 is overloaded. It sends a answer indicating success, but also | Section 8.1 of [RFC6733] defines two state machines that imply two | |||
| includes an overload report. Since the overload report only | types of applications, session-less and session-based applications. | |||
| applies to S1, the ReportType is "Destination-Host". | The primary difference between these types of applications is the | |||
| lifetime of Session-Ids. | ||||
| 4. The agent sees the overload report, and records that S1 is | For session-based applications, the Session-Id is used to tie | |||
| overloaded by the value in the Reduction-Percentage AVP. It | multiple requests into a single session. | |||
| begins diverting the indicated percentage of realm-routed traffic | ||||
| from S1 to S2 and S3. Since it can't divert Destination-Host | ||||
| routed traffic, it forwards the overload report to the client. | ||||
| This effectively delegates the throttling of traffic with | ||||
| Destination-Host:S1 to the client. | ||||
| 5. The client sends another Destination-Realm routed request. | The Credit-Control application defined in [RFC4006] is an example of | |||
| a Diameter session-based application. | ||||
| 6. The agent selects S2, and forwards the request. | In session-less applications, the lifetime of the Session-Id is a | |||
| single Diameter transaction, i.e. the session is implicitly | ||||
| terminated after a single Diameter transaction and a new Session-Id | ||||
| is generated for each Diameter request. | ||||
| 7. It turns out that S2 is also overloaded, perhaps due to all that | For the purposes of this discussion, session-less applications are | |||
| traffic it took over for S1. S2 returns an successful answer | further divided into two types of applications: | |||
| containing an overload report. Since this report only applies to | ||||
| S2, the ReportType is "Destination-Host". | ||||
| 8. The agent sees that S2 is also overloaded by the value in | Stateless applications: | |||
| Reduction-Percentage. This value is probably different than the | ||||
| value from S1's report. The agent diverts the remaining traffic | ||||
| to S3 as best as it can, but it calculates that the remaining | ||||
| capacity across all three servers is no longer sufficient to | ||||
| handle all of the realm-routed traffic. This means the realm | ||||
| itself is overloaded. The realm's overload percentage is most | ||||
| likely different than that for either S1 or S2. The agent | ||||
| forward's S2's report back to the client in the Diameter answer. | ||||
| Additionally, the agent generates a new report for the realm of | ||||
| "realm", and inserts that report into the answer. The client | ||||
| throttles requests with Destination-Host:S1 at one rate, requests | ||||
| with Destination-Host:S2 at another rate, and requests with no | ||||
| Destination-Host AVP at yet a third rate. (Since S3 has not | ||||
| indicated overload, the client does not throttle requests with | ||||
| Destination-Host:S3.) | ||||
| Appendix C. Restructuring of -02 version of the draft | Requests within a stateless application have no relationship to | |||
| each other. The 3GPP defined S13 application is an example of a | ||||
| stateless application [S13], where only a Diameter command is | ||||
| defined between a client and a server and no state is maintained | ||||
| between two consecutive transactions. | ||||
| This section captures the initial plan for restructuring the DOIC | Pseudo-session applications: | |||
| specification from the -02 version to the new -03 version. | ||||
| 1. Introduction (non normative) | Applications that do not rely on the Session-Id AVP for | |||
| -- Existing Text from section 1. -- | correlation of application messages related to the same session | |||
| 2. Terminology and Abbreviations (non normative) | but use other session-related information in the Diameter requests | |||
| -- Existing Text from section 2. -- | for this purpose. The 3GPP defined Cx application [Cx] is an | |||
| 3. Solution Overview (Non normative) | example of a pseudo-session application. | |||
| -- Existing text from section 3. -- | ||||
| 3.1 Overload Control Endpoints (Non normative) | ||||
| -- New text leveraging text from existing section 5.1 -- | ||||
| 3.2 Piggybacking Principle (Non normative) | ||||
| -- Existing text from existing section 5.2, with enhancements -- | ||||
| 3.3 DOIC Capability Discovery (Non normative) | ||||
| -- New text leveraging text from existing section 5.3 -- | ||||
| 3.4 DOIC Overload Condition Reporting (Non normative) | ||||
| -- New text -- | ||||
| 3.5 DOIC Extensibility (Non normative) | ||||
| -- New text leveraging text from existing Section 5.4 -- | ||||
| 3.5 Simplified Example Architecture (Non normative) | ||||
| -- Existing text from section 3.1.6, with enhancements -- | ||||
| 3.6 Considerations for Applications Integrating the DOIC Solution (Non normative) | ||||
| -- New text -- | ||||
| 3.6.1. Application Classification (Non normative) | ||||
| -- Existing text from section 3.1.1 -- | ||||
| 3.6.2. Application Type Overload Implications (Non normative) | ||||
| -- Existing text from section 3.1.2 -- | ||||
| 3.6.3. Request Transaction Classification (Non normative) | ||||
| -- Existing text from section 3.1.3 -- | ||||
| 3.6.4. Request Type Overload Implications (Non normative) | ||||
| -- Existing text from section 3.1.4 -- | ||||
| 4. Solution Procedures (Normative) | ||||
| 4.1 Capability Announcement (Normative) | ||||
| -- Existing text from section 5.3 -- | ||||
| 4.1.1. Reacting Node Behavior (Normative) | ||||
| -- Existing text from section 5.3.1 -- | ||||
| 4.1.2. Reporting Node Behavior (Normative) | ||||
| -- Existing text from section 5.3.2 -- | ||||
| 4.1.3. Agent Behavior (Normative) | ||||
| -- Existing text from section 5.3.3 -- | ||||
| 4.2. Overload Report Processing (Normative) | ||||
| 4.2.1. Overload Control State (Normative) | ||||
| -- Existing text from section 5.5.1 -- | ||||
| 4.2.2. Reacting Node Behavior (Normative) | ||||
| -- Existing text from section 5.5.2 -- | ||||
| 4.2.3. Reporting Node Behavior (Normative) | ||||
| -- Existing text from section 5.5.3 -- | ||||
| 4.2.4. Agent Behavior (Normative) | ||||
| -- Existing text from section 5.5.4 -- | ||||
| 4.3. Protocol Extensibility (Normative) | ||||
| -- Existing text from section 5.4 -- | ||||
| 5. Loss Algorithm (Normative) | ||||
| -- New text pulling from information spread through the document -- | ||||
| 5.1. Overview (Non normative) | ||||
| -- New text pulling from information spread through the document -- | ||||
| 5.2. Reporting Node Behavior (Normative) | ||||
| -- New text pulling from information spread through the document -- | ||||
| 5.3. Reacting Node Behavior (Normative) | ||||
| -- New text pulling from information spread through the document -- | ||||
| 6. Attribute Value Pairs (Normative) | ||||
| -- Existing text from section 4. -- | ||||
| 6.1. OC-Supported-Features AVP | ||||
| -- Existing text from section 4.1 -- | ||||
| 6.2. OC-Feature-Vector AVP | ||||
| -- Existing text from section 4.2 -- | ||||
| 6.3. OC-OLR AVP | ||||
| -- Existing text from section 4.3 -- | ||||
| 6.4. OC-Sequence-Number AVP | ||||
| -- Existing text from section 4.4 -- | ||||
| 6.5. OC-Validity-Duration AVP | ||||
| -- Existing text from section 4.5 -- | ||||
| 6.6. OC-Report-Type AVP | ||||
| -- Existing text from section 4.6 -- | ||||
| 6.7. OC-Reduction-Percentage AVP | ||||
| -- Existing text from section 4.7 -- | ||||
| 6.8. Attribute Value Pair flag rules | ||||
| -- Existing text from section 4.8 -- | ||||
| 7. Error Response Codes | ||||
| -- New text based on resolution of issue -- | ||||
| 8. IANA Considerations | ||||
| -- Existing text from section 7. -- | ||||
| 8.1. AVP codes | ||||
| -- Existing text from section 7.1 -- | ||||
| 8.2. New registries | ||||
| -- Existing text from section 7.2 -- | ||||
| 9. Security Considerations | ||||
| -- Existing text from section 8. -- | ||||
| 9.1. Potential Threat Modes | ||||
| -- Existing text from section 8.1 -- | ||||
| 9.2. Denial of Service Attacks | ||||
| -- Existing text from section 8.2 -- | ||||
| 9.3. Non-Compliant Nodes | ||||
| -- Existing text from section 8.3 -- | ||||
| 9.4. End-to End-Security Issues | ||||
| -- Existing text from section 8.4 -- | ||||
| 10. Contributors | ||||
| 11. References | ||||
| 11.1. Normative References | ||||
| 11.2. Informative References | ||||
| Appendix A. Issues left for future specifications | ||||
| A.1. Additional traffic abatement algorithms | ||||
| A.2. Agent Overload | ||||
| A.3. DIAMETER_TOO_BUSY clarifications | ||||
| A.4. Per reacting node reports | ||||
| Appendix B. Examples | ||||
| B.1. Mix of Destination-Realm routed requests and Destination- | ||||
| Host routed requests | ||||
| Authors' Addresses | ||||
| Authors' Addresses | The handling of overload reports must take the type of application | |||
| into consideration, as discussed in Appendix D.2. | ||||
| D.2. Application Type Overload Implications | ||||
| This section discusses considerations for mitigating overload | ||||
| reported by a Diameter entity. This discussion focuses on the type | ||||
| of application. Appendix D.3 discusses considerations for handling | ||||
| various request types when the target server is known to be in an | ||||
| overloaded state. | ||||
| These discussions assume that the strategy for mitigating the | ||||
| reported overload is to reduce the overall workload sent to the | ||||
| overloaded entity. The concept of applying overload treatment to | ||||
| requests targeted for an overloaded Diameter entity is inherent to | ||||
| this discussion. The method used to reduce offered load is not | ||||
| specified here but could include routing requests to another Diameter | ||||
| entity known to be able to handle them, or it could mean rejecting | ||||
| certain requests. For a Diameter agent, rejecting requests will | ||||
| usually mean generating appropriate Diameter error responses. For a | ||||
| Diameter client, rejecting requests will depend upon the application. | ||||
| For example, it could mean giving an indication to the entity | ||||
| requesting the Diameter service that the network is busy and to try | ||||
| again later. | ||||
| Stateless applications: | ||||
| By definition there is no relationship between individual requests | ||||
| in a stateless application. As a result, when a request is sent | ||||
| or relayed to an overloaded Diameter entity - either a Diameter | ||||
| Server or a Diameter Agent - the sending or relaying entity can | ||||
| choose to apply the overload treatment to any request targeted for | ||||
| the overloaded entity. | ||||
| Pseudo-session applications: | ||||
| For pseudo-session applications, there is an implied ordering of | ||||
| requests. As a result, decisions about which requests towards an | ||||
| overloaded entity to reject could take the command code of the | ||||
| request into consideration. This generally means that | ||||
| transactions later in the sequence of transactions should be given | ||||
| more favorable treatment than messages earlier in the sequence. | ||||
| This is because more work has already been done by the Diameter | ||||
| network for those transactions that occur later in the sequence. | ||||
| Rejecting them could result in increasing the load on the network | ||||
| as the transactions earlier in the sequence might also need to be | ||||
| repeated. | ||||
| Session-based applications: | ||||
| Overload handling for session-based applications must take into | ||||
| consideration the work load associated with setting up and | ||||
| maintaining a session. As such, the entity sending requests | ||||
| towards an overloaded Diameter entity for a session-based | ||||
| application might tend to reject new session requests prior to | ||||
| rejecting intra-session requests. In addition, session ending | ||||
| requests might be given a lower probability of being rejected as | ||||
| rejecting session ending requests could result in session status | ||||
| being out of sync between the Diameter clients and servers. | ||||
| Application designers that would decide to reject mid-session | ||||
| requests will need to consider whether the rejection invalidates | ||||
| the session and any resulting session clean-up procedures. | ||||
| D.3. Request Transaction Classification | ||||
| Independent Request: | ||||
| An independent request is not correlated to any other requests | ||||
| and, as such, the lifetime of the session-id is constrained to an | ||||
| individual transaction. | ||||
| Session-Initiating Request: | ||||
| A session-initiating request is the initial message that | ||||
| establishes a Diameter session. The ACR message defined in | ||||
| [RFC6733] is an example of a session-initiating request. | ||||
| Correlated Session-Initiating Request: | ||||
| There are cases when multiple session-initiated requests must be | ||||
| correlated and managed by the same Diameter server. It is notably | ||||
| the case in the 3GPP PCC architecture [PCC], where multiple | ||||
| apparently independent Diameter application sessions are actually | ||||
| correlated and must be handled by the same Diameter server. | ||||
| Intra-Session Request: | ||||
| An intra session request is a request that uses the same Session- | ||||
| Id than the one used in a previous request. An intra session | ||||
| request generally needs to be delivered to the server that handled | ||||
| the session creating request for the session. The STR message | ||||
| defined in [RFC6733] is an example of an intra-session requests. | ||||
| Pseudo-Session Requests: | ||||
| Pseudo-session requests are independent requests and do not use | ||||
| the same Session-Id but are correlated by other session-related | ||||
| information contained in the request. There exists Diameter | ||||
| applications that define an expected ordering of transactions. | ||||
| This sequencing of independent transactions results in a pseudo | ||||
| session. The AIR, MAR and SAR requests in the 3GPP defined Cx | ||||
| [Cx] application are examples of pseudo-session requests. | ||||
| D.4. Request Type Overload Implications | ||||
| The request classes identified in Appendix D.3 have implications on | ||||
| decisions about which requests should be throttled first. The | ||||
| following list of request treatment regarding throttling is provided | ||||
| as guidelines for application designers when implementing the | ||||
| Diameter overload control mechanism described in this document. The | ||||
| exact behavior regarding throttling is a matter of local policy, | ||||
| unless specifically defined for the application. | ||||
| Independent requests: | ||||
| Independent requests can generally be given equal treatment when | ||||
| making throttling decisions, unless otherwise indicated by | ||||
| application requirements or local policy. | ||||
| Session-initiating requests: | ||||
| Session-initiating requests often represent more work than | ||||
| independent or intra-session requests. Moreover, session- | ||||
| initiating requests are typically followed by other session- | ||||
| related requests. Since the main objective of the overload | ||||
| control is to reduce the total number of requests sent to the | ||||
| overloaded entity, throttling decisions might favor allowing | ||||
| intra-session requests over session-initiating requests. In the | ||||
| absence of local policies or application specific requirements to | ||||
| the contrary, Individual session-initiating requests can be given | ||||
| equal treatment when making throttling decisions. | ||||
| Correlated session-initiating requests: | ||||
| A Request that results in a new binding, where the binding is used | ||||
| for routing of subsequent session-initiating requests to the same | ||||
| server, represents more work load than other requests. As such, | ||||
| these requests might be throttled more frequently than other | ||||
| request types. | ||||
| Pseudo-session requests: | ||||
| Throttling decisions for pseudo-session requests can take into | ||||
| consideration where individual requests fit into the overall | ||||
| sequence of requests within the pseudo session. Requests that are | ||||
| earlier in the sequence might be throttled more aggressively than | ||||
| requests that occur later in the sequence. | ||||
| Intra-session requests: | ||||
| There are two types of intra-sessions requests, requests that | ||||
| terminate a session and the remainder of intra-session requests. | ||||
| Implementors and operators may choose to throttle session- | ||||
| terminating requests less aggressively in order to gracefully | ||||
| terminate sessions, allow clean-up of the related resources (e.g. | ||||
| session state) and avoid the need for additional intra-session | ||||
| requests. Favoring session-termination requests may reduce the | ||||
| session management impact on the overloaded entity. The default | ||||
| handling of other intra-session requests might be to treat them | ||||
| equally when making throttling decisions. There might also be | ||||
| application level considerations whether some request types are | ||||
| favored over others. | ||||
| Authors' Addresses | ||||
| Jouni Korhonen (editor) | Jouni Korhonen (editor) | |||
| Broadcom | Broadcom | |||
| Porkkalankatu 24 | Porkkalankatu 24 | |||
| Helsinki FIN-00180 | Helsinki FIN-00180 | |||
| Finland | Finland | |||
| Email: jouni.nospam@gmail.com | Email: jouni.nospam@gmail.com | |||
| Steve Donovan (editor) | Steve Donovan (editor) | |||
| Oracle | Oracle | |||
| End of changes. 204 change blocks. | ||||
| 1226 lines changed or deleted | 853 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/ | ||||