| < draft-ietf-dime-ovli-02.txt | draft-ietf-dime-ovli-03.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: September 28, 2014 B. Campbell | Expires: January 4, 2015 B. Campbell | |||
| Oracle | Oracle | |||
| L. Morand | L. Morand | |||
| Orange Labs | Orange Labs | |||
| March 27, 2014 | July 3, 2014 | |||
| Diameter Overload Indication Conveyance | Diameter Overload Indication Conveyance | |||
| draft-ietf-dime-ovli-02.txt | draft-ietf-dime-ovli-03.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 September 28, 2014. | This Internet-Draft will expire on January 4, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 3 | 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. Architectural Assumptions . . . . . . . . . . . . . . . . 6 | 3.1. Overload Control Endpoints (Non normative) . . . . . . . 6 | |||
| 3.1.1. Application Classification . . . . . . . . . . . . . 6 | 3.2. Piggybacking Principle (Non normative) . . . . . . . . . 10 | |||
| 3.1.2. Application Type Overload Implications . . . . . . . 7 | 3.3. DOIC Capability Announcement (Non normative) . . . . . . 11 | |||
| 3.1.3. Request Transaction Classification . . . . . . . . . 8 | 3.4. DOIC Overload Condition Reporting (Non normative) . . . . 12 | |||
| 3.1.4. Request Type Overload Implications . . . . . . . . . 9 | 3.5. DOIC Extensibility (Non normative) . . . . . . . . . . . 13 | |||
| 3.1.5. Diameter Agent Behavior . . . . . . . . . . . . . . . 10 | 3.6. Simplified Example Architecture (Non normative) . . . . . 14 | |||
| 3.1.6. Simplified Example Architecture . . . . . . . . . . . 11 | 3.7. Considerations for Applications Integrating the DOIC | |||
| 3.2. Conveyance of the Overload Indication . . . . . . . . . . 12 | Solution (Non normative) . . . . . . . . . . . . . . . . 15 | |||
| 3.2.1. DOIC Capability Discovery . . . . . . . . . . . . . . 12 | 3.7.1. Application Classification (Non normative) . . . . . 15 | |||
| 3.3. Overload Condition Indication . . . . . . . . . . . . . . 13 | 3.7.2. Application Type Overload Implications (Non | |||
| 4. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 13 | normative) . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 13 | 3.7.3. Request Transaction Classification (Non normative) . 18 | |||
| 4.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 14 | 3.7.4. Request Type Overload Implications (Non normative) . 18 | |||
| 4.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 15 | 4. Solution Procedures (Normative) . . . . . . . . . . . . . . . 20 | |||
| 4.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 16 | 4.1. Capability Announcement (Normative) . . . . . . . . . . . 20 | |||
| 4.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 16 | 4.1.1. Reacting Node Behavior (Normative) . . . . . . . . . 20 | |||
| 4.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 17 | 4.1.2. Reporting Node Behavior (Normative) . . . . . . . . 21 | |||
| 4.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 18 | 4.1.3. Agent Behavior (Normative) . . . . . . . . . . . . . 22 | |||
| 4.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 19 | 4.2. Overload Report Processing (Normative) . . . . . . . . . 22 | |||
| 5. Overload Control Operation . . . . . . . . . . . . . . . . . 19 | 4.2.1. Overload Control State (Normative) . . . . . . . . . 22 | |||
| 5.1. Overload Control Endpoints . . . . . . . . . . . . . . . 19 | 4.2.2. Reacting Node Behavior (Normative) . . . . . . . . . 24 | |||
| 5.2. Piggybacking Principle . . . . . . . . . . . . . . . . . 23 | 4.2.3. Reporting Node Behavior (Normative) . . . . . . . . 26 | |||
| 5.3. Capability Announcement . . . . . . . . . . . . . . . . . 24 | 4.2.4. Agent Behavior (Normative) . . . . . . . . . . . . . 26 | |||
| 5.3.1. Reacting Node Endpoint Considerations . . . . . . . . 24 | 4.3. Protocol Extensibility (Normative) . . . . . . . . . . . 27 | |||
| 5.3.2. Reporting Node Endpoint Considerations . . . . . . . 24 | 5. Loss Algorithm (Normative) . . . . . . . . . . . . . . . . . 28 | |||
| 5.3.3. Agent Considerations . . . . . . . . . . . . . . . . 25 | 5.1. Overview (Non normative) . . . . . . . . . . . . . . . . 28 | |||
| 5.4. Protocol Extensibility . . . . . . . . . . . . . . . . . 25 | 5.2. Use of OC-Reduction-Percentage AVP . . . . . . . . . . . 29 | |||
| 5.5. Overload Report Processing . . . . . . . . . . . . . . . 26 | 5.3. Reporting Node Behavior (Normative) . . . . . . . . . . . 29 | |||
| 5.5.1. Overload Control State . . . . . . . . . . . . . . . 26 | 5.4. Reacting Node Behavior (Normative) . . . . . . . . . . . 29 | |||
| 5.5.2. Reacting Node Considerations . . . . . . . . . . . . 28 | 6. Attribute Value Pairs (Normative) . . . . . . . . . . . . . . 30 | |||
| 5.5.3. Reporting Node Considerations . . . . . . . . . . . . 30 | 6.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 31 | |||
| 5.5.4. Agent Considerations . . . . . . . . . . . . . . . . 31 | 6.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 31 | |||
| 6. Transport Considerations . . . . . . . . . . . . . . . . . . 31 | 6.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 | 6.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 33 | |||
| 7.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 31 | 6.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 33 | |||
| 7.2. New registries . . . . . . . . . . . . . . . . . . . . . 31 | 6.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 34 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | 6.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 35 | |||
| 8.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 32 | 6.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 35 | |||
| 8.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 33 | 7. Error Response Codes . . . . . . . . . . . . . . . . . . . . 36 | |||
| 8.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 33 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 8.4. End-to End-Security Issues . . . . . . . . . . . . . . . 34 | 8.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 35 | 8.2. New registries . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 37 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 35 | 9.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 37 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 35 | 9.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 38 | |||
| Appendix A. Issues left for future specifications . . . . . . . 36 | 9.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 39 | |||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 36 | 9.4. End-to End-Security Issues . . . . . . . . . . . . . . . 39 | |||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 36 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . 36 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 37 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 40 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 41 | ||||
| Appendix A. Issues left for future specifications . . . . . . . 41 | ||||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 41 | ||||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 41 | ||||
| A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . 42 | ||||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
| B.1. Mix of Destination-Realm routed requests and Destination- | B.1. Mix of Destination-Realm routed requests and Destination- | |||
| Host routed requests . . . . . . . . . . . . . . . . . . 37 | Host routed requests . . . . . . . . . . . . . . . . . . 42 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 | 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). The requirements for the solution are described and | Control (DOC), refered to as Diameter Overload Indication Conveyance | |||
| (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. | |||
| The solution defined in this specification addresses the Diameter | The solution defined in this specification addresses Diameter | |||
| overload control between two endpoints (see Section 5.1). | overload control between two endpoints (see Section 3.1). | |||
| Furthermore, the solution is designed to apply to existing and future | Furthermore, the solution is designed to apply to existing and future | |||
| Diameter applications, requires no changes to the Diameter base | Diameter applications, requires no changes to the Diameter base | |||
| protocol [RFC6733] and is deployable in environments where some | protocol [RFC6733] and is deployable in environments where some | |||
| Diameter nodes do not implement the Diameter overload control | Diameter nodes do not implement the Diameter overload control | |||
| solution defined in this specification. | solution defined in this specification. | |||
| 2. Terminology and Abbreviations | 2. Terminology and Abbreviations | |||
| Abatement Algorithm | Abatement Algorithm | |||
| An algorithm requested by reporting nodes and used by reacting | An algorithm requested by reporting nodes and used by reacting | |||
| nodes to reduce the amount of traffic sent to the reporting node | nodes to reduce the amount of traffic sent during an occurrence of | |||
| during an occurrence of overload control. | overload control. | |||
| Throttling: | Throttling | |||
| Throttling is the reduction of the number of requests sent to an | Throttling is the reduction of the number of requests sent to an | |||
| entity. Throttling can include a client dropping requests, or an | entity. Throttling can include a client dropping requests, or an | |||
| agent rejecting requests with appropriate error responses. | agent rejecting requests with appropriate error responses. | |||
| Clients and agents can also choose to redirect throttled requests | Clients and agents can also choose to redirect throttled requests | |||
| to some other entity or entities capable of handling them. | to some other entity or entities capable of handling them. | |||
| Editor's note: Propose to add a definition of Abatement to include | ||||
| 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 | Reporting Node | |||
| A Diameter node that generates an overload report. (This may or | A Diameter node that generates an overload report. (This may or | |||
| may not be the overloaded node.) | may not be the overloaded node.) | |||
| Reacting Node | Reacting Node | |||
| A Diameter node that consumes and acts upon a report. Note that | A Diameter node that consumes and acts upon a report. Note that | |||
| "act upon" does not necessarily mean the reacting node applies an | "act upon" does not necessarily mean the reacting node applies an | |||
| abatement algorithm; it might decide to delegate that downstream, | abatement algorithm; it might decide to delegate that downstream, | |||
| skipping to change at page 5, line 10 ¶ | skipping to change at page 5, line 26 ¶ | |||
| 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 endpoint 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 | |||
| endpoints, even though they are not endpoints in the Diameter sense. | endpoints, even though they are not endpoints in the Diameter sense. | |||
| Since Diameter enables bi-directional applications, where Diameter | Since Diameter enables bi-directional applications, where Diameter | |||
| servers can send requests towards Diameter clients, a given Diameter | servers can send requests towards Diameter clients, a given Diameter | |||
| node can simultaneously act as a reporting node and reacting node. | node can 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 endpoints 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 4.1) 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 4.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, OC-Feature-Vector | |||
| AVPs apply to the realm and application of the enclosing message. | AVPs apply to the realm and application of the enclosing message. | |||
| This implies that a node may support DOIC for one application and/or | This implies that a node may support DOIC for one application and/or | |||
| realm, but not another, and may indicate different DOIC parameters | realm, but not another, and may indicate different DOIC parameters | |||
| for each application and realm for which it supports DOIC. | 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 [ref?]. Future specifications may | namely the "loss" algorithm Section 5). Future specifications may | |||
| introduce new algorithms. | introduce new algorithms. | |||
| Editor's note: The need to restructure the document to contain a | ||||
| section that describes the loss algorithm. This likely means | ||||
| separating the description of the mechanisms for reporting the need | ||||
| for overload control from the description of the loss algorithm. | ||||
| 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 throttled requests to other destinations | |||
| or via other agents. On the other hand, an entire Diameter realm may | or via other agents. On the other hand, an entire Diameter realm may | |||
| be overloaded, in which case such attempts would do harm. DOIC OLRs | be overloaded, in which case such attempts would do harm. DOIC OLRs | |||
| have a concept of "report type" (Section 4.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. | |||
| 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 unmolested. 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. Architectural Assumptions | 3.1. Overload Control Endpoints (Non normative) | |||
| This section describes the high-level architectural and semantic | The overload control solution can be considered as an overlay on top | |||
| assumptions that underlie the Diameter Overload Control Mechanism. | 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. | ||||
| 3.1.1. Application Classification | 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 | ||||
| designed to be piggybacked on top of existing application message | ||||
| exchanges. This is made possible by adding overload control top | ||||
| level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as | ||||
| optional AVPs into existing commands when the corresponding Command | ||||
| Code Format (CCF) specification allows adding new optional AVPs (see | ||||
| Section 1.3.4 of [RFC6733]). | ||||
| Reacting nodes indicate support for DOIC by including the OC- | ||||
| Supported-Features AVP all request messages originated or relayed by | ||||
| the Diameter node. | ||||
| Reporting nodes indicate support for DOIC by including the OC- | ||||
| Supported-Features AVP in all answer messages originated or relayed | ||||
| by the Diameter node. Reporting nodes also include overload reports | ||||
| using the OC-OLR AVP in answer messages. | ||||
| Note: There is no new Diameter application defined to carry | ||||
| overload related AVPs. The DOIC AVPs are carried in existing | ||||
| Diameter application messages. | ||||
| Note that the overload control solution does not have fixed server | ||||
| and client roles. The endpoint role is determined based on the | ||||
| 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"). | ||||
| Therefore, in a typical "client-server" deployment, the "client" MAY | ||||
| report its overload condition to the "server" for any server | ||||
| initiated message exchange. An example of such is the server | ||||
| requesting a re-authentication from a client. | ||||
| 3.3. DOIC Capability Announcement (Non normative) | ||||
| The DOIC solutions supports the ability for Diameter nodes to | ||||
| determine if other nodes in the path of a request support the | ||||
| solution. This capability is refered to as DOIC Capability | ||||
| Announcement (DCA) and is separate from Diameter Capability Exchange. | ||||
| The DCA mechanism is built around the piggybacking principle used for | ||||
| 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. | ||||
| The first node in the path of a Diameter request that supports the | ||||
| DOIC solution inserts the OC-Supported-Feature AVP in the request | ||||
| message. This includes an indication that it supports the loss | ||||
| overload abatement algorithm defined in this specification (see | ||||
| Section 5). This insures that there is at least one commonly | ||||
| supported overload abatement algorithm between the reporting node and | ||||
| the reacting nodes in the path of the request. | ||||
| DOIC must support deployments where Diameter Clients and/or | ||||
| Diameter servers do not support the DOIC solution. In this | ||||
| scenario, it is assumed that Diameter Agents that support the DOIC | ||||
| solution will handle overload abatement for the non supporting | ||||
| clients. In this case the DOIC agent will insert the OC- | ||||
| Supporting-Features AVP in requests that do not already contain | ||||
| one, telling the reporting node that there is a DOIC node that | ||||
| will handle overload abatement. | ||||
| The reporting node inserts the OC-Supported-Feature AVP in all answer | ||||
| messages to requests that contained the 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 | ||||
| reporting node with one exception. | ||||
| The reporting node only includes an indication of support for one | ||||
| overload abatement algorithm. This is the algorithm that the | ||||
| reporting node intends to use should it enter an overload condition. | ||||
| Reacting nodes can use the indicated overload abatement algorithm to | ||||
| prepare for possible overload reports. | ||||
| Note that the loss algorithm defined in this document is a | ||||
| stateless abatement algorithm. As a result it does not require | ||||
| any actions by reacting nodes prior to the receipt of an overload | ||||
| report. Stateful abatement algorithms that base the abatement | ||||
| logic on a history of request messages sent might require reacting | ||||
| nodes to maintain state to insure that overload reports can be | ||||
| properly handled. | ||||
| The individual features supported by the DOIC nodes are indicated in | ||||
| the OC-Feature-Vector AVP. Any semantics associated with the | ||||
| features will be defined in extension specifications that introduce | ||||
| the features. | ||||
| The DCA mechanism must also support the scenario where the set of | ||||
| 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- | ||||
| Supported-Feature AVP to reflect the mixture of the two sets of | ||||
| supported features. | ||||
| The logic to determine the content of the modified OC-Supported- | ||||
| Feature AVP is out-of-scope for this specification and is left to | ||||
| implementation decisions. Care must be taken in doing so not to | ||||
| introduce interoperability issues for downstream or upstream DOIC | ||||
| nodes. | ||||
| 3.4. DOIC Overload Condition Reporting (Non normative) | ||||
| As with DOIC Capability Announcement, Overload Condition Reporting | ||||
| 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 | ||||
| includes the type of report, an overload report ID, the length of | ||||
| time that the report is valid and abatement algorithm specific AVPs. | ||||
| Two types of overload reports are defined in this document, host | ||||
| reports and realm reports. | ||||
| Host reports apply to traffic that is sent to a specific Diameter | ||||
| host. The applies to requests that contain the Destination-Host AVP | ||||
| that contains a DiameterIdentity that matches that of the overload | ||||
| report. These requests are referred to as host-routed requests. A | ||||
| host report also applies to realm-routed requests, requests that do | ||||
| not have a Destination-Host AVP, when the selected route for the | ||||
| request is a connection to the impacted host. | ||||
| Realm reports apply to realm-routed requests for a specific realm as | ||||
| indicated in the Destination-Realm AVP. | ||||
| Reporting nodes are responsible for determining the need for a | ||||
| reduction of traffic. The method for making this determination is | ||||
| implementation specific and depend on the type of overload report | ||||
| being generated. A host report, for instance, will generally be | ||||
| generated by tracking utilization of resources required by the host | ||||
| to handle transactions for the the Diameter application. A realm | ||||
| report will generally impact the traffic sent to multiple hosts and, | ||||
| as such, will typically require tracking the capacity of the servers | ||||
| able to handle realm-routed requests for the application. | ||||
| 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 | ||||
| are included in answer messages sent or relayed by the reporting | ||||
| node. The reporting node indicates the overload abatement algorithm | ||||
| that is to be used to handle the traffic reduction in the OC- | ||||
| Supported-Features AVP. The OC-OLR AVP is used to communicate | ||||
| information about the requested reduction. | ||||
| Reacting nodes, upon receipt of an overload report, are responsible | ||||
| for applying the abatement algorithm to traffic impacted by the | ||||
| overload report. The method used for that abatement is dependent on | ||||
| the abatement algorithm. The loss abatement algorithm is defined in | ||||
| this document (Section 5). Other abatement algorithms can be defined | ||||
| in extensions to the DOIC solutions. | ||||
| As the conditions that lead to the generation of the overload report | ||||
| change the reporting node can send new overload reports requesting | ||||
| greater reduction if the condition gets worse or less reduction if | ||||
| the condition improves. The reporting node sends an overload report | ||||
| with a duration of zero to indicate that the overlaod condition has | ||||
| ended and use of the abatement algorithm is no longer needed. | ||||
| The reacting node also determines when the overload report expires | ||||
| based on the OC-Validaty-Duration AVP in the overload report and | ||||
| stops applying the abatement algorithm when the report expires. | ||||
| 3.5. DOIC Extensibility (Non normative) | ||||
| The DOIC solutions is designed to be extensible. This extensibility | ||||
| is based on existing Diameter based extensibility mechanisms. | ||||
| There are multiple categories of extensions that are expected. This | ||||
| includes the definition of new overload abatement algorithms, the | ||||
| definition of new report types and new definitions of the scope of | ||||
| messages impacted by an overload report. | ||||
| The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes | ||||
| to communicate supported features. The specific features supported | ||||
| by the DOIC node are indicated in the OC-Feature-Vector AVP. DOIC | ||||
| extensions must define new values for the OC-Feature-Vector AVP. | ||||
| DOIC extensions also have the ability to add new AVPs to the OC- | ||||
| Supported-Features AVP, if additional information about the new | ||||
| feature is required to be communicate. | ||||
| Overload abatement algorithms use the OC-OLR AVP to communicate | ||||
| overload occurances. This AVP can also be extended to add new AVPs | ||||
| allowing a reporting nodes to communicate additional information | ||||
| about handling an overload condition. | ||||
| If necessary, new extensions can also define new top level AVPs. It | ||||
| is, however, recommended that DOIC extensions use the OC-Supported- | ||||
| Features and OC-OLR to carry all DOIC related AVPs. | ||||
| 3.6. Simplified Example Architecture (Non normative) | ||||
| Figure 7 illustrates the simplified architecture for Diameter | ||||
| overload information conveyance. See Section 3.1 for more discussion | ||||
| and details how different Diameter nodes fit into the architecture | ||||
| from the DOIC point of view. | ||||
| Realm X Same or other Realms | ||||
| <--------------------------------------> <----------------------> | ||||
| +--^-----+ : (optional) : | ||||
| |Diameter| : : | ||||
| |Server A|--+ .--. : +---^----+ : .--. | ||||
| +--------+ | _( `. : |Diameter| : _( `. +---^----+ | ||||
| +--( )--:-| Agent |-:--( )--|Diameter| | ||||
| +--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | | ||||
| |Diameter|--+ `--(___.-' : : `--(___.-' +-----^--+ | ||||
| |Server B| : : | ||||
| +---^----+ : : | ||||
| End-to-end Overload Indication | ||||
| 1) <-----------------------------------------------> | ||||
| Diameter Application Y | ||||
| Overload Indication A Overload Indication A' | ||||
| 2) <----------------------> <----------------------> | ||||
| standard base protocol standard base protocol | ||||
| Figure 7: Simplified architecture choices for overload indication | ||||
| delivery | ||||
| In Figure 7, the Diameter overload indication can be conveyed (1) | ||||
| end-to-end between servers and clients or (2) between servers and | ||||
| Diameter agent inside the realm and then between the Diameter agent | ||||
| and the clients when the Diameter agent acting as back-to-back-agent | ||||
| 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 | The following is a classification of Diameter applications and | |||
| requests. This discussion is meant to document factors that play | requests. This discussion is meant to document factors that play | |||
| into decisions made by the Diameter identity responsible for handling | into decisions made by the Diameter identity responsible for handling | |||
| overload reports. | overload reports. | |||
| Section 8.1 of [RFC6733] defines two state machines that imply two | Section 8.1 of [RFC6733] defines two state machines that imply two | |||
| types of applications, session-less and session-based applications. | types of applications, session-less and session-based applications. | |||
| The primary difference between these types of applications is the | The primary difference between these types of applications is the | |||
| lifetime of Session-Ids. | lifetime of Session-Ids. | |||
| For session-based applications, the Session-Id is used to tie | For session-based applications, the Session-Id is used to tie | |||
| multiple requests into a single session. | multiple requests into a single session. | |||
| In session-less applications, the lifetime of the Session-Id is a | In session-less applications, the lifetime of the Session-Id is a | |||
| single Diameter transaction, i.e. the session is implicitly | single Diameter transaction, i.e. the session is implicitly | |||
| terminated after a single Diameter transaction and a new Session-Id | terminated after a single Diameter transaction and a new Session-Id | |||
| is generated for each Diameter request. | is generated for each Diameter request. | |||
| skipping to change at page 7, line 19 ¶ | skipping to change at page 16, line 39 ¶ | |||
| Applications that do not rely on the Session-Id AVP for | Applications that do not rely on the Session-Id AVP for | |||
| correlation of application messages related to the same session | correlation of application messages related to the same session | |||
| but use other session-related information in the Diameter requests | but use other session-related information in the Diameter requests | |||
| for this purpose. The 3GPP defined Cx application [Cx] is an | for this purpose. The 3GPP defined Cx application [Cx] is an | |||
| example of a pseudo-session application. | example of a pseudo-session application. | |||
| The Credit-Control application defined in [RFC4006] is an example of | The Credit-Control application defined in [RFC4006] is an example of | |||
| a Diameter session-based application. | a Diameter session-based application. | |||
| The handling of overload reports must take the type of application | The handling of overload reports must take the type of application | |||
| into consideration, as discussed in Section 3.1.2. | into consideration, as discussed in Section 3.7.2. | |||
| 3.1.2. Application Type Overload Implications | 3.7.2. Application Type Overload Implications (Non normative) | |||
| This section discusses considerations for mitigating overload | This section discusses considerations for mitigating overload | |||
| reported by a Diameter entity. This discussion focuses on the type | reported by a Diameter entity. This discussion focuses on the type | |||
| of application. Section 3.1.3 discusses considerations for handling | of application. Section 3.7.3 discusses considerations for handling | |||
| various request types when the target server is known to be in an | various request types when the target server is known to be in an | |||
| overloaded state. | overloaded state. | |||
| These discussions assume that the strategy for mitigating the | These discussions assume that the strategy for mitigating the | |||
| reported overload is to reduce the overall workload sent to the | reported overload is to reduce the overall workload sent to the | |||
| overloaded entity. The concept of applying overload treatment to | overloaded entity. The concept of applying overload treatment to | |||
| requests targeted for an overloaded Diameter entity is inherent to | requests targeted for an overloaded Diameter entity is inherent to | |||
| this discussion. The method used to reduce offered load is not | this discussion. The method used to reduce offered load is not | |||
| specified here but could include routing requests to another Diameter | specified here but could include routing requests to another Diameter | |||
| entity known to be able to handle them, or it could mean rejecting | entity known to be able to handle them, or it could mean rejecting | |||
| skipping to change at page 8, line 34 ¶ | skipping to change at page 18, line 5 ¶ | |||
| towards an overloaded Diameter entity for a session-based | towards an overloaded Diameter entity for a session-based | |||
| application might tend to reject new session requests prior to | application might tend to reject new session requests prior to | |||
| rejecting intra-session requests. In addition, session ending | rejecting intra-session requests. In addition, session ending | |||
| requests might be given a lower probability of being rejected as | requests might be given a lower probability of being rejected as | |||
| rejecting session ending requests could result in session status | rejecting session ending requests could result in session status | |||
| being out of sync between the Diameter clients and servers. | being out of sync between the Diameter clients and servers. | |||
| Application designers that would decide to reject mid-session | Application designers that would decide to reject mid-session | |||
| requests will need to consider whether the rejection invalidates | requests will need to consider whether the rejection invalidates | |||
| the session and any resulting session clean-up procedures. | the session and any resulting session clean-up procedures. | |||
| 3.1.3. Request Transaction Classification | 3.7.3. Request Transaction Classification (Non normative) | |||
| Independent Request: | Independent Request: | |||
| An independent request is not correlated to any other requests | An independent request is not correlated to any other requests | |||
| and, as such, the lifetime of the session-id is constrained to an | and, as such, the lifetime of the session-id is constrained to an | |||
| individual transaction. | individual transaction. | |||
| Session-Initiating Request: | Session-Initiating Request: | |||
| A session-initiating request is the initial message that | A session-initiating request is the initial message that | |||
| skipping to change at page 9, line 25 ¶ | skipping to change at page 18, line 45 ¶ | |||
| Pseudo-Session Requests: | Pseudo-Session Requests: | |||
| Pseudo-session requests are independent requests and do not use | Pseudo-session requests are independent requests and do not use | |||
| the same Session-Id but are correlated by other session-related | the same Session-Id but are correlated by other session-related | |||
| information contained in the request. There exists Diameter | information contained in the request. There exists Diameter | |||
| applications that define an expected ordering of transactions. | applications that define an expected ordering of transactions. | |||
| This sequencing of independent transactions results in a pseudo | This sequencing of independent transactions results in a pseudo | |||
| session. The AIR, MAR and SAR requests in the 3GPP defined Cx | session. The AIR, MAR and SAR requests in the 3GPP defined Cx | |||
| [Cx] application are examples of pseudo-session requests. | [Cx] application are examples of pseudo-session requests. | |||
| 3.1.4. Request Type Overload Implications | 3.7.4. Request Type Overload Implications (Non normative) | |||
| The request classes identified in Section 3.1.3 have implications on | The request classes identified in Section 3.7.3 have implications on | |||
| decisions about which requests should be throttled first. The | decisions about which requests should be throttled first. The | |||
| following list of request treatment regarding throttling is provided | following list of request treatment regarding throttling is provided | |||
| as guidelines for application designers when implementing the | as guidelines for application designers when implementing the | |||
| Diameter overload control mechanism described in this document. The | Diameter overload control mechanism described in this document. The | |||
| exact behavior regarding throttling is a matter of local policy, | exact behavior regarding throttling is a matter of local policy, | |||
| unless specifically defined for the application. | unless specifically defined for the application. | |||
| Independent requests: | Independent requests: | |||
| Independent requests can be given equal treatment when making | Independent requests can be given equal treatment when making | |||
| skipping to change at page 10, line 36 ¶ | skipping to change at page 20, line 7 ¶ | |||
| and server to maintain the ongoing session state. Session | and server to maintain the ongoing session state. Session | |||
| terminating requests should be throttled less aggressively in | terminating requests should be throttled less aggressively in | |||
| order to gracefully terminate sessions, allow clean-up of the | order to gracefully terminate sessions, allow clean-up of the | |||
| related resources (e.g. session state) and get rid of the need for | related resources (e.g. session state) and get rid of the need for | |||
| other intra-session requests, reducing the session management | other intra-session requests, reducing the session management | |||
| impact on the overloaded entity. The default handling of other | impact on the overloaded entity. The default handling of other | |||
| intra-session requests might be to treat them equally when making | intra-session requests might be to treat them equally when making | |||
| throttling decisions. There might also be application level | throttling decisions. There might also be application level | |||
| considerations whether some request types are favored over others. | considerations whether some request types are favored over others. | |||
| 3.1.5. Diameter Agent Behavior | 4. Solution Procedures (Normative) | |||
| Editor's note: This section needs to be revisited once definition of | This section outlines the normative behavior associated with the DOIC | |||
| DOIC endpoints is finalized. | solution. | |||
| In the context of the Diameter Overload Indication Conveyance (DOIC) | 4.1. Capability Announcement (Normative) | |||
| and reacting to the overload information, the functional behavior of | ||||
| Diameter agents in front of servers, especially Diameter proxies, | ||||
| needs to be common. This is important because agents may actively | ||||
| participate in the handling of an overload conditions. For example, | ||||
| they may make intelligent next hop selection decisions based on | ||||
| overload conditions, or aggregate overload information to be | ||||
| disseminated downstream. Diameter agents may have other deployment | ||||
| related tasks that are not defined in the Diameter base protocol | ||||
| [RFC6733]. These include, among other tasks, topology hiding, or | ||||
| agent acting as a Server Front End (SFE) for a farm of Diameter | ||||
| servers. | ||||
| Since the solution defined in this specification must not break the | This section defines DOIC Capability Announcement (DCA) behavior. | |||
| Diameter base protocol [RFC6733] at any time, great care has to be | ||||
| taken not to assume functionality from the Diameter agents that would | ||||
| break base protocol behavior, or to assume agent functionality beyond | ||||
| the Diameter base protocol. Effectively this means the following | ||||
| from a Diameter agent: | ||||
| o If a Diameter agent presents itself as the "end node", as an agent | The DCA procedures are used to indicate support for DOIC and support | |||
| acting as an topology hiding SFE, the agent is the final | for DOIC features. The DOIC features include overload abatement | |||
| destination of requests initiated by Diameter clients, the | algorithms supported. It might also include new report types or | |||
| original source for the corresponding answers and server-initiated | other extensions documented in the future. | |||
| requests. As a consequence, the DOIC mechanism MUST NOT leak | ||||
| information of the Diameter nodes behind it. This requirement | ||||
| means that such a Diameter agent acts as a back-to-back-agent for | ||||
| DOIC purposes. How the Diameter agent in this case appears to the | ||||
| Diameter servers in the farm, is specific to the implementation | ||||
| and deployment within the realm the Diameter agent is deployed. | ||||
| o If the Diameter agent does not impersonate the servers behind it, | Diameter nodes indicate support for DOIC by including the OC- | |||
| the Diameter dialogue is established between clients and servers | Supported-Features AVP in messages sent or handled by the node. | |||
| and any overload information received by a client would be from | ||||
| the server identified by the Origin-Host identity contained in the | ||||
| Diameter message. | ||||
| 3.1.6. Simplified Example Architecture | 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. | ||||
| Figure 1 illustrates the simplified architecture for Diameter | 4.1.1. Reacting Node Behavior (Normative) | |||
| overload information conveyance. See Section 5.1 for more discussion | ||||
| and details how different Diameter nodes fit into the architecture | ||||
| from the DOIC point of view. | ||||
| Realm X Same or other Realms | A reacting node MUST include the OC-Supported-Features AVP in all | |||
| <--------------------------------------> <----------------------> | request messages. | |||
| +--^-----+ : (optional) : | A reacting node MUST include the OC-Feature-Vector AVP with an | |||
| |Diameter| : : | indication of the loss algorithm. | |||
| |Server A|--+ .--. : +---^----+ : .--. | ||||
| +--------+ | _( `. : |Diameter| : _( `. +---^----+ | ||||
| +--( )--:-| Agent |-:--( )--|Diameter| | ||||
| +--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | | ||||
| |Diameter|--+ `--(___.-' : : `--(___.-' +-----^--+ | ||||
| |Server B| : : | ||||
| +---^----+ : : | ||||
| End-to-end Overload Indication | A reacting node SHOULD indicate support for all other DOIC features | |||
| 1) <-----------------------------------------------> | it supports. | |||
| Diameter Application Y | ||||
| Overload Indication A Overload Indication A' | An OC-Supported-Features AVP in answer messages indicates there is a | |||
| 2) <----------------------> <----------------------> | reporting node for the transaction. The reacting node MAY take | |||
| standard base protocol standard base protocol | action based on the features indicated in the OC-Feature-Vector AVP. | |||
| Figure 1: Simplified architecture choices for overload indication | Note that the loss abatement algorithm is the only feature | |||
| delivery | described in this document and it does not require action to be | |||
| taken by the reacting node except when the answer message also has | ||||
| an overload report. This behavior is described in Section 4.2 and | ||||
| Section 5. | ||||
| In Figure 1, the Diameter overload indication can be conveyed (1) | 4.1.2. Reporting Node Behavior (Normative) | |||
| end-to-end between servers and clients or (2) between servers and | ||||
| Diameter agent inside the realm and then between the Diameter agent | ||||
| and the clients when the Diameter agent acting as back-to-back-agent | ||||
| for DOIC purposes. | ||||
| 3.2. Conveyance of the Overload Indication | Upon receipt of a request message, a reporting node determines if | |||
| there is a reacting node for the transaction based on the presence of | ||||
| the OC-Supported-Features AVP. | ||||
| The following sections describe new Diameter AVPs used for sending | Based on the content of the OC-Supported-Features AVP in the request | |||
| overload reports, and for declaring support for certain DOIC | message, the reporting node knows what overload control functionality | |||
| features. | supported by reacting node(s). The reporting node then acts | |||
| accordingly for the subsequent answer messages it initiates. | ||||
| 3.2.1. DOIC Capability Discovery | 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. | ||||
| Support of DOIC may be specified as part of the functionality | The reporting node MUST indicate support for one and only one | |||
| supported by a new Diameter application. In this way, support of the | abatement algorithm in the OC-Feature-Vector AVP. The abatement | |||
| considered Diameter application (discovered during capabilities | algorithm included MUST be from the set of abatement algorithms | |||
| exchange phase as defined in Diameter base protocol [RFC6733]) | contained in the request messages OC-Supported-Features AVP. The | |||
| indicates implicit support of the DOIC mechanism. | abatement algorithm included indicates the abatement algorithm the | |||
| reporting node wants the reacting node to use when the reporting node | ||||
| enters an overload condition. | ||||
| Editor's Note: This method does not work in general when agents are | The reporting node MUST NOT change the selected algorithm during a | |||
| part of the deployment. | period of time that it is in an overload condition and, as a result, | |||
| is sending OC-OLR AVPs in answer messages. | ||||
| When the DOIC mechanism is introduced in existing Diameter | The reporting node SHOULD indicate support for other DOIC features it | |||
| applications, a specific capability discovery mechanism is required. | supports and that apply to the transaction. | |||
| The "DOIC capability discovery mechanism" is based on the presence of | ||||
| specific optional AVPs in the Diameter messages, such as the OC- | ||||
| Supported-Features AVP (see Section 4.1). Although the OC-Supported- | ||||
| Features AVP can be used to advertise a certain set of new or | ||||
| existing Diameter overload control capabilities, it is not a | ||||
| versioning solution per se, however, it can be used to achieve the | ||||
| same result. | ||||
| From the Diameter overload control functionality point of view, the | Note that not all DOIC features will apply to all Diameter | |||
| "Reacting node" is the requester of the overload report information | applications or deployment scenarios. The features included in | |||
| and the "Reporting node" is the provider of the overload report. The | the OC-Feature-Vector AVP is based on local reporting node policy. | |||
| OC-Supported-Features AVP in the request message is always | ||||
| interpreted as an announcement of "DOIC supported capabilities". The | ||||
| OC-Supported-Features AVP in the answer is also interpreted as a | ||||
| report of "DOIC supported capabilities" and at least one of supported | ||||
| capabilities MUST be common with the "Reacting node" (see | ||||
| Section 4.1). | ||||
| 3.3. Overload Condition Indication | 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. | ||||
| Diameter nodes can request a reduction in offered load by indicating | An agent MAY modify the OC-Supported-Features AVP carried in answer | |||
| an overload condition in the form of an overload report. The | messages. | |||
| overload report contains information about how much load should be | ||||
| reduced, and may contain other information about the overload | ||||
| condition. This information is conveyed in Diameter Attribute Value | ||||
| Pairs (AVPs). | ||||
| Certain new AVPs may also be used to declare certain DOIC | 4.1.3. Agent Behavior (Normative) | |||
| capabilities and extensions. | ||||
| 4. Attribute Value Pairs | Editor's note -- Need to add this section. | |||
| 4.2. Overload Report Processing (Normative) | ||||
| 4.2.1. Overload Control State (Normative) | ||||
| Both reacting and reporting nodes maintain an 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 | ||||
| 4.1 for discussion about how the support for DOIC is determined. | ||||
| 4.2.1.1. Overload Control State for Reacting Nodes | ||||
| A reacting node maintains the following OCS per supported Diameter | ||||
| application: | ||||
| o A host-type Overload Control State for each Destination-Host | ||||
| towards which it sends host-type requests and | ||||
| o A realm-type Overload Control State for each Destination-Realm | ||||
| towards which it sends realm-type requests. | ||||
| A host-type Overload Control State may be identified by the pair of | ||||
| Application-Id and Destination-Host. A realm-type Overload Control | ||||
| State may be identified by the pair of Application-Id and | ||||
| Destination-Realm. The host-type/realm-type Overload Control State | ||||
| for a given pair of Application and Destination-Host / Destination- | ||||
| Realm could include the following information: | ||||
| o Sequence number (as received in OC-OLR) | ||||
| o Time of expiry (deviated from validity duration as received in OC- | ||||
| OLR and time of reception) | ||||
| o Selected Abatement Algorithm (as received in OC-Supported- | ||||
| Features) | ||||
| o Algorithm specific input data (as received within OC-OLR, e.g. | ||||
| Reduction Percentage for Loss) | ||||
| 4.2.1.2. Overload Control States for Reporting Nodes | ||||
| A reporting node maintains per supported Diameter application and per | ||||
| supported (and eventually selected) Abatement Algorithm an Overload | ||||
| Control State. | ||||
| An Overload Control State may be identified by the pair of | ||||
| Application-Id and supported Abatement Algorithm. | ||||
| The Overload Control State for a given pair of Application and | ||||
| Abatement Algorithm could include the information: | ||||
| o Sequence number | ||||
| o Validity Duration and Expiry Time | ||||
| o Algorithm specific input data (e.g. Reduction Percentage for | ||||
| Loss) | ||||
| Overload Control States for reporting nodes containing a validity | ||||
| duration of 0 sec. should not expire before any previously sent | ||||
| (stale) OLR has timed out at any reacting node. | ||||
| Editor's note: This statement is unclear and contradictory with other | ||||
| 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 | ||||
| Reacting nodes create a host-type OCS identified by OCS-Id = (app- | ||||
| id,host-id) when receiving an answer message of application app-id | ||||
| containing an Orig-Host of host-id and a host-type OC-OLR AVP unless | ||||
| such host-type OCS already exists. | ||||
| Reacting nodes create a realm-type OCS identified by OCS-Id = (app- | ||||
| id,realm-id) when receiving an answer message of application app-id | ||||
| 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 | ||||
| minus reception time is greater than validity duration). | ||||
| Editor's note: Reacting nodes also delete on OCS with an updated OLR | ||||
| is received with a validity duration of zero. | ||||
| Reacting nodes update the host-type OCS identified by OCS-Id = (app- | ||||
| id,host-id) when receiving an answer message of application app-id | ||||
| containing an Orig-Host of host-id and a host-type OC-OLR AVP with a | ||||
| sequence number higher than the stored sequence number. | ||||
| Reacting nodes update the realm-type OCS identified by OCS-Id = (app- | ||||
| id,realm-id) when receiving an answer message of application app-id | ||||
| containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with | ||||
| a sequence number higher than the stored sequence number. | ||||
| Reacting nodes do not delete an OCS when receiving an answer message | ||||
| that does not contain an OC-OLR AVP (i.e. absence of OLR means "no | ||||
| change"). | ||||
| Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg) | ||||
| when receiving a request of application app-id containing an OC- | ||||
| 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. | ||||
| Editor's note: Reporting nodes should send updated overload reports | ||||
| with a validity duration of zero for a period of time after an OCS | ||||
| expires or is removed due to the overload condition ending. | ||||
| Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg) | ||||
| when they detect the need to modify the requested amount of | ||||
| application app-id traffic reduction. | ||||
| 4.2.2. Reacting Node Behavior (Normative) | ||||
| Once a reacting node receives an OC-OLR AVP from a reporting node, it | ||||
| applies traffic abatement based on the selected algorithm with the | ||||
| reporting node and the current overload condition. The reacting node | ||||
| learns the reporting node supported abatement algorithms directly | ||||
| from the received answer message containing the OC-Supported-Features | ||||
| AVP. | ||||
| The received OC-Supported-Features AVP does not change the existing | ||||
| overload condition and/or traffic abatement algorithm settings if the | ||||
| OC-Sequence-Number AVP contains a value that is equal to the | ||||
| 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 | ||||
| information for the overload condition on the reporting node. | ||||
| From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting | ||||
| node learns whether the overload condition report concerns a specific | ||||
| 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 | ||||
| inconsistent with the definition of realm reports in section | ||||
| Section 6.6. | ||||
| If the OC-OLR AVP is received for the first time, the reacting node | ||||
| MUST create overload control state associated with the related realm | ||||
| or a specific host in the realm identified in the message carrying | ||||
| the OC-OLR AVP, as described in Section 4.2.1. | ||||
| If the value of the OC-Sequence-Number AVP contained in the received | ||||
| OC-OLR AVP is equal to or less than the value stored in an existing | ||||
| overload control state, the received OC-OLR AVP SHOULD be silently | ||||
| discarded. If the value of the OC-Sequence-Number AVP contained in | ||||
| 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 | ||||
| node MUST apply the traffic abatement requested in the OC-OLR AVP | ||||
| 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 | ||||
| OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration | ||||
| AVP or is implicitly equals to the default value (5 seconds) if the | ||||
| OC-Validity-Duration AVP is absent. The reacting node MUST maintain | ||||
| the validity duration in the overload control state. Once the | ||||
| 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 | ||||
| updated overload report indicates that the overload condition has | ||||
| ended and that the overload state is no longer valid. | ||||
| In the case that the validity duration expires or is explicitly | ||||
| signaled as being no longer valid the state associated with the | ||||
| overload report MUST be removed and any abatement associated with the | ||||
| 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) | ||||
| A reporting node is a Diameter node inserting an OC-OLR AVP in a | ||||
| Diameter message in order to inform a reacting node about an overload | ||||
| condition and request Diameter traffic abatement. | ||||
| The operation on the reporting node is straight forward. The | ||||
| reporting node learns the capabilities of the reacting node when it | ||||
| 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 | ||||
| the overload control solution is supported by the sender of the | ||||
| Diameter request, the reporting node MUST include an OC-Supported- | ||||
| Features AVP and an OC-OLR AVP in the corresponding Diameter answer. | ||||
| The OC-OLR AVP contains the required traffic reduction and the OC- | ||||
| Supported-Features AVP indicates the traffic abatement algorithm to | ||||
| apply. This algorithm MUST be one of the algorithms advertised by | ||||
| the request sender. | ||||
| A reporting node MAY rely on the OC-Validity-Duration AVP values for | ||||
| the implicit overload control state cleanup on the reacting node. | ||||
| However, it is RECOMMENDED that the reporting node always explicitly | ||||
| indicates the end of a overload condition. | ||||
| The reporting node SHOULD indicate the end of an overload occurrence | ||||
| 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 | ||||
| receive the updated overload report. | ||||
| 4.2.4. Agent Behavior (Normative) | ||||
| Editor's note -- Need to add this section. | ||||
| 4.3. Protocol Extensibility (Normative) | ||||
| The overload control solution can be extended, e.g. with new traffic | ||||
| abatement algorithms, new report types or other new functionality. | ||||
| When defining a new extension a new feature bit MUST be defined for | ||||
| the OC-Feature-Vector. This feature bit is used to communicate | ||||
| support for the new feature. | ||||
| The extention may also define new AVPs for use in DOIC Capability | ||||
| Anouncement and for use in DOIC Overload reporting. These new AVP | ||||
| should be defined to be extensions to the OC-Supported-Features and | ||||
| OC-OLR AVPs defined in this document. | ||||
| It should be noted that [RFC6733] defined Grouped AVP extension | ||||
| mechanisms apply. This allows, for example, defining a new feature | ||||
| that is mandatory to be understood even when piggybacked on an | ||||
| existing applications. More specifically, the sub-AVPs inside the | ||||
| 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 | ||||
| not associated with overload abatement algorithms MUST be specified | ||||
| by the extensions that define the features. | ||||
| When defining new report type values, the corresponding specification | ||||
| MUST define the semantics of the new report types and how they affect | ||||
| the OC-OLR AVP handling. The specification MUST also reserve a | ||||
| corresponding new feature, see the OC-Supported-Features and OC- | ||||
| Feature-Vector AVPs. | ||||
| The OC-OLR AVP can be expanded with optional sub-AVPs only if a | ||||
| legacy implementation can safely ignore them without breaking | ||||
| backward compatibility for the given OC-Report-Type AVP value implied | ||||
| report handling semantics. If the new sub-AVPs imply new semantics | ||||
| for handling the indicated report type, then a new OC-Report-Type AVP | ||||
| value MUST be defined. | ||||
| 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 | ||||
| with any Diameter specification, new AVPs MUST also be registered | ||||
| with IANA. See Section 8 for the required procedures. | ||||
| 5. Loss Algorithm (Normative) | ||||
| This section documents the Diameter overload loss abatement | ||||
| algorithm. | ||||
| 5.1. Overview (Non normative) | ||||
| The DOIC specification supports the ability for multiple overload | ||||
| abatement algorithms to be specified. The abatement algorithm used | ||||
| for any instance of overload is determined by the Diameter Overload | ||||
| Capability Announcement process documented in Section 4.1. | ||||
| The loss algorithm described in this section is the default algorithm | ||||
| that must be supported by all Diameter nodes that support DOIC. | ||||
| The loss algorithm is designed to be a straightforward and stateless | ||||
| overload abatement algorithm. It is used by reporting nodes to | ||||
| request a percentage reduction in the amount of traffic sent. The | ||||
| traffic impacted by the requested reduction depends on the type of | ||||
| overload report. | ||||
| Reporting nodes use a strategy of applying abatement logic to the | ||||
| requested percentage of request messages sent (or handled in the case | ||||
| of agents) by the reacting node that are impacted by the overload | ||||
| report. | ||||
| From a conceptual level, the logic at the reacting node could be | ||||
| outlined as follows. In this discussion assume that the reacting | ||||
| node is also the sending node. | ||||
| 1. An overload report is received and the associated overload state | ||||
| is saved by the reacting node. | ||||
| 2. A new Diameter request is generated by the application running on | ||||
| the reacting node. | ||||
| 3. The reacting node determines that an active overload report | ||||
| applies to the request. | ||||
| 4. The reacting node determines if abatement should be applied to | ||||
| the request. One approach that could be taken would be to select | ||||
| a random number between 1 and 100. If the random number is less | ||||
| than the indicated reduction percentage then the request is given | ||||
| abatement treatment, otherwise the request is 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) | ||||
| The method a reporting nodes uses to determine the amount of traffic | ||||
| reduction required to address an overload condition is an | ||||
| implementation decision. | ||||
| When a reporting node that has selected the loss abatement algorithm | ||||
| determines the need to request a traffic reduction it must include an | ||||
| OC-OLR AVP in all response messages. | ||||
| The reporting node must indicate a percentage reduction in the OC- | ||||
| Reduction-Percentage AVP. | ||||
| The reporting node may change the reduction percentage in subsequent | ||||
| overload reports. When doing so the reporting node must conform to | ||||
| overload report handing specified in Section 4.2.3. | ||||
| When the reporting node determines it no longer needs a reduction in | ||||
| traffic the reporting node should send an overload report indicating | ||||
| the overload report is no longer valid, as specified in | ||||
| Section 4.2.3. | ||||
| 5.4. Reacting Node Behavior (Normative) | ||||
| The method a reacting node uses to determine which request messages | ||||
| are given abatement treatment is an implementation decision. | ||||
| When receiving an OC-OLR in an answer message where the algorithm | ||||
| indicated in the OC-Supported-Features AVP is the loss algorithm, the | ||||
| reacting node must attempt to apply abatement treatment to the | ||||
| requested percentage of request messages sent. | ||||
| Note: the loss algorithm is a stateless algorithm. As a result, | ||||
| the reacting node does not guarantee that there will be an | ||||
| absolute reduction in traffic sent. Rather, it guarantees that | ||||
| the requested percentage of new requests will be given abatement | ||||
| treatment. | ||||
| If reacting node comes out of the 100 percent traffic reduction as a | ||||
| result of the overload report timing out, the following concerns are | ||||
| RECOMMENDED to be applied. The reacting node sending the traffic | ||||
| should be conservative and, for example, first send "probe" messages | ||||
| to learn the overload condition of the overloaded node before | ||||
| converging to any traffic amount/rate decided by the sender. Similar | ||||
| concerns apply in all cases when the overload report times out unless | ||||
| the previous overload report stated 0 percent reduction. | ||||
| Editor's note: Need to add additional guidance to slowly increase | ||||
| the rate of traffic sent to avoid a sudden spike in traffic, as | ||||
| 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. | ||||
| It is suggested that the reacting node decrease the amount of traffic | ||||
| given abatement treatment by 20% each second until the reduction is | ||||
| completely removed and no traffic is given abatement treatment. | ||||
| The goal of this behavior is to reduce the probability of overload | ||||
| condition thrashing where an immediate transition from 100% | ||||
| reduction to 0% reduction results in the reporting node moving | ||||
| quickly back into an overload condition. | ||||
| 6. Attribute Value Pairs (Normative) | ||||
| 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. | |||
| 4.1. OC-Supported-Features AVP | 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 | ||||
| mechanism specified in this document by making it mandatory to | ||||
| implement for the application and referencing this specification | ||||
| normatively. In such a case, the OC-Feature-Vector and OC-OLR AVPs | ||||
| reused in newly defined Diameter applications SHOULD have the M-bit | ||||
| flag set. However, it is the responsibility of the Diameter | ||||
| application designers to define how overload control mechanisms works | ||||
| on that application. | ||||
| 6.1. OC-Supported-Features AVP | ||||
| The OC-Supported-Features AVP (AVP code TBD1) is 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 for two purposes. First, it announces a node's support for | |||
| the DOIC in general. Second, it contains the description of the | the DOIC 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 message a DOIC | |||
| supporting node sends. | 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 endpoint, 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 4.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 | A reacting node includes this AVP to indicate its capabilities to a | |||
| reporting node. For example, the endpoint (reacting node) may | reporting node. For example, the endpoint (reacting node) may | |||
| indicate which (future defined) traffic abatement algorithms it | indicate which (future defined) traffic abatement algorithms it | |||
| supports in addition to the default. | supports in addition to the default. | |||
| During the message exchange the overload control endpoints express | During the message exchange the overload control endpoints express | |||
| their common set of supported capabilities. The reacting node | their common set of supported capabilities. The reacting node | |||
| includes the OC-Supported-Features AVP that announces what it | includes the OC-Supported-Features AVP that announces what it | |||
| supports. The reporting node that sends the answer also includes the | supports. The reporting node that sends the answer also includes the | |||
| OC-Supported-Features AVP that describes the capabilities it | OC-Supported-Features AVP that describes the capabilities it | |||
| supports. The set of capabilities advertised by the reporting node | supports. The set of capabilities advertised by the reporting node | |||
| depends on local policies. At least one of the announced | depends on local policies. At least one of the announced | |||
| capabilities MUST match. If there is no single matching capability | capabilities MUST match. If there is no single matching capability | |||
| the reacting node MUST act as if it does not implement DOIC and cease | 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 | inserting any DOIC related AVPs into any Diameter messages with this | |||
| specific reacting node. | specific reacting node. | |||
| Editor's note: The last sentence conflicts with the last sentence two | Editor's note: The last sentence conflicts with the last sentence | |||
| paragraphs up. In reality, there will always be at least one | two paragraphs up. In reality, there will always be at least one | |||
| matching capability as all nodes supporting DOIC must support the | matching capability as all nodes supporting DOIC must support the | |||
| loss algorithm. Suggest removing the last sentence. | loss algorithm. Suggest removing the last sentence. | |||
| 4.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 an | |||
| overload control endpoint. The value of zero (0) is reserved. | overload control endpoint. 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 overload control endpoint it means | |||
| that the default traffic abatement (loss) algorithm is supported. | that the default traffic abatement (loss) algorithm is supported. | |||
| 4.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 | necessary information to convey an overload report. The OC-OLR AVP | |||
| does not explicitly contain all information needed by the reacting | does not explicitly contain all information needed by the reacting | |||
| node to decide whether a subsequent request must undergo a throttling | node to decide whether a subsequent request must undergo a throttling | |||
| process with the received reduction percentage. The value of the OC- | process with the received reduction percentage. The value of the OC- | |||
| Report-Type AVP within the OC-OLR AVP indicates which implicit | Report-Type AVP within the OC-OLR AVP indicates which implicit | |||
| information is relevant for this decision (see Section 4.6). The | information is relevant for this decision (see Section 6.6). The | |||
| application the OC-OLR AVP applies to is the same as the Application- | application the OC-OLR AVP applies to is the same as the Application- | |||
| Id found in the Diameter message header. The identity the OC-OLR AVP | Id found in the Diameter message header. The identity the OC-OLR AVP | |||
| concerns is determined from the Origin-Host AVP (and Origin-Realm AVP | concerns is determined from the Origin-Host AVP (and Origin-Realm AVP | |||
| as well) found from the encapsulating Diameter command. The OC-OLR | as well) found from the encapsulating Diameter command. The OC-OLR | |||
| AVP is intended to be sent only by a reporting node. | 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 ] | |||
| skipping to change at page 15, line 42 ¶ | skipping to change at page 32, line 47 ¶ | |||
| updated after reception of subsequent OC-OLR AVPs with the same | updated after reception of subsequent OC-OLR AVPs with the same | |||
| sequence number. The default value for the OC-Validity-Duration AVP | 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 | 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. | 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 and the event SHOULD | |||
| be logged. | be logged. | |||
| Editor's note: Need to specify what happens when two reports of the | Editor's note: Need to specify what happens when two reports of | |||
| same type are received. | the same type are received. | |||
| The OC-OLR AVP can be expanded with optional sub-AVPs only if a | ||||
| legacy implementation can safely ignore them without breaking | ||||
| backward compatibility for the given OC-Report-Type AVP value implied | ||||
| report handling semantics. If the new sub-AVPs imply new semantics | ||||
| for the report handling, then a new OC-Report-Type AVP value MUST be | ||||
| defined. | ||||
| 4.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.3. | 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 between two overload | |||
| control endpoints. The sequence number is only required to be unique | control endpoints. The sequence number is only required to be unique | |||
| between two overload control endpoints. Sequence numbers are treated | between two overload control endpoints. Sequence numbers are treated | |||
| in a uni-directional manner, i.e. two sequence numbers on each | in a uni-directional manner, i.e. two sequence numbers on each | |||
| direction between two endpoints are not related or correlated. | direction between two endpoints are not related or correlated. | |||
| When generating sequence numbers, the new sequence number MUST be | When generating sequence numbers, the new sequence number MUST be | |||
| greater than any sequence number in an active overload report | greater than any sequence number in an active overload report | |||
| previously sent by the reporting node. This property MUST hold over | previously sent by the reporting node. This property MUST hold over | |||
| a reboot of the reporting node. | a reboot of the reporting node. | |||
| 4.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 seconds the validity time of the overload report. | |||
| The number of seconds is measured after reception of the first OC-OLR | The number of seconds is measured after reception of the first OC-OLR | |||
| AVP with a given value of OC-Sequence-Number AVP. The default value | AVP with a given value of OC-Sequence-Number AVP. The default value | |||
| for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds). When the | for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds). When the | |||
| OC-Validity-Duration AVP is not present in the OC-OLR AVP, the | OC-Validity-Duration AVP is not present in the OC-OLR AVP, the | |||
| default value applies. Validity duration with values above 86400 | default value applies. Validity duration with values above 86400 | |||
| (i.e.; 24 hours) MUST NOT be used. Invalid duration values are | (i.e.; 24 hours) MUST NOT be used. Invalid duration values are | |||
| treated as if the OC-Validity-Duration AVP were not present and | treated as if the OC-Validity-Duration AVP were not present and | |||
| result in the default value being used. | result in the default value being used. | |||
| 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 endpoint acting on the earlier received | |||
| overload report(s). Section 4.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 | When a reporting node has recovered from overload, it SHOULD | |||
| invalidate any existing overload reports in a timely matter. This | invalidate any existing overload reports in a timely matter. This | |||
| can be achieved by sending an updated overload report (meaning the | can be achieved by sending an updated overload report (meaning the | |||
| OLR contains a new sequence number) with the OC-Validity-Duration AVP | 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 | 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. | naturally, the reporting node MAY choose to simply let it do so. | |||
| A reacting node MUST invalidate and remove an overload report that | A reacting node MUST invalidate and remove an overload report that | |||
| expires without an explicit overload report containing an OC- | expires without an explicit overload report containing an OC- | |||
| Validity-Duration value set to zero ("0"). | Validity-Duration value set to zero ("0"). | |||
| 4.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: | |||
| The Destination-Host AVP is present in the request and its value | Either the Destination-Host AVP is present in the request and its | |||
| matches the value of the Origin-Host AVP of the received message | value matches the value of the Origin-Host AVP of the received | |||
| that contained the OC-OLR AVP. | message that contained the OC-OLR AVP; or the Destination-Host is | |||
| not present in the request but the value of peer identity | ||||
| associated with the connection used to send the request matches | ||||
| the value of the Origin-Host AVP of the received message that | ||||
| contained the OC-OLR AVP. | ||||
| The value of the Destination-Realm AVP in the request matches the | 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 | |||
| skipping to change at page 17, line 39 ¶ | skipping to change at page 34, line 43 ¶ | |||
| The Destination-Host AVP is absent in the request. | The Destination-Host AVP is absent in 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 | Editor's note: There is still an open issue on the definition of | |||
| Realm reports and whether what report types should be supported. | Realm reports and whether what report types should be supported. | |||
| There is consensus that host reports should be supported. There is | There is consensus that host reports should be supported. There | |||
| discussion on Realm reports and Realm-Routed-Request reports. The | is discussion on Realm reports and Realm-Routed-Request reports. | |||
| above definition applies to Realm-Routed-Request reports where Realm | The above definition applies to Realm-Routed-Request reports where | |||
| reports are defined to apply to all requests that match the realm, | Realm reports are defined to apply to all requests that match the | |||
| independent of the presence, absence or value of the Destination-Host | realm, independent of the presence, absence or value of the | |||
| AVP. | Destination-Host AVP. | |||
| The default value of the OC-Report-Type AVP is 0 (i.e. the host | The default value of the OC-Report-Type AVP is 0 (i.e. the host | |||
| report). | 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 "types" of overload. 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. The example in | |||
| Appendix B.1 illustrates this usage. | Appendix B.1 illustrates this usage. | |||
| When defining new report type values, the corresponding specification | 6.7. OC-Reduction-Percentage AVP | |||
| MUST define the semantics of the new report types and how they affect | ||||
| the OC-OLR AVP handling. The specification MUST also reserve a | ||||
| corresponding new feature, see the OC-Supported-Features and OC- | ||||
| Feature-Vector AVPs. | ||||
| 4.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 other endpoint 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. | |||
| If an overload control endpoint comes out of the 100 percent traffic | 6.8. Attribute Value Pair flag rules | |||
| reduction as a result of the overload report timing out, the | ||||
| following concerns are RECOMMENDED to be applied. The reacting node | ||||
| sending the traffic should be conservative and, for example, first | ||||
| send "probe" messages to learn the overload condition of the | ||||
| overloaded node before converging to any traffic amount/rate decided | ||||
| by the sender. Similar concerns apply in all cases when the overload | ||||
| report times out unless the previous overload report stated 0 percent | ||||
| reduction. | ||||
| Editor's note: Need to add additional guidance to slowly increase the | ||||
| rate of traffic sent to avoid a sudden spike in traffic, as the spike | ||||
| in traffic could result in oscillation of the need for overload | ||||
| control. | ||||
| 4.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 19, line 40 ¶ | skipping to change at page 36, line 37 ¶ | |||
| As described in the Diameter base protocol [RFC6733], the M-bit | As described in the Diameter base protocol [RFC6733], the M-bit | |||
| setting for a given AVP is relevant to an application and each | setting for a given AVP is relevant to an application and each | |||
| 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. | |||
| 5. Overload Control Operation | 7. Error Response Codes | |||
| Editor's note: The concept of endpoints requires additional thought | ||||
| and specification. | ||||
| 5.1. Overload Control Endpoints | ||||
| 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 | ||||
| End-Points 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 End-Point 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 End-Points. One of the end-points is the overload | ||||
| reporter and the other is the overload reactor. | ||||
| Figure 2 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 2: Basic DOIC deployment | ||||
| In Figure 3 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 3: DOIC deployment with non participating agent | ||||
| Figure 4 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 4: DOIC deployment with non-DOIC client and DOIC enabled agent | ||||
| In Figure 5 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 5: A deployment where all nodes support DOIC | ||||
| Figure 6 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 6: A deployment with DOIC and non-DOIC supporting clients | ||||
| Figure 7 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 7: A deployment with DOIC and non-DOIC supporting agents | ||||
| 5.2. Piggybacking Principle | ||||
| The overload control AVPs defined in this specification have been | ||||
| designed to be piggybacked on top of existing application message | ||||
| exchanges. This is made possible by adding overload control top | ||||
| level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as | ||||
| optional AVPs into existing commands when the corresponding Command | ||||
| Code Format (CCF) specification allows adding new optional AVPs (see | ||||
| Section 1.3.4 of [RFC6733]). | ||||
| 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 | ||||
| mechanism specified in this document by making it mandatory to | ||||
| implement for the application and referencing this specification | ||||
| normatively. In such a case, the OC-Feature-Vector and OC-OLR AVPs | ||||
| reused in newly defined Diameter applications SHOULD have the M-bit | ||||
| flag set. However, it is the responsibility of the Diameter | ||||
| application designers to define how overload control mechanisms works | ||||
| on that application. | ||||
| Note that the overload control solution does not have fixed server | ||||
| and client roles. The endpoint role is determined based on the | ||||
| 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"). | ||||
| Therefore, in a typical "client-server" deployment, the "client" MAY | ||||
| report its overload condition to the "server" for any server | ||||
| initiated message exchange. An example of such is the server | ||||
| requesting a re-authentication from a client. | ||||
| 5.3. Capability Announcement | ||||
| Since the overload control solution relies on the piggybacking | ||||
| principle for the overload reporting and the overload control | ||||
| endpoint are not adjacent peers, finding out whether the other | ||||
| endpoint supports overload control or the common traffic abatement | ||||
| algorithm to apply for the traffic. The approach defined in this | ||||
| specification for end-to-end capability announcement relies on the | ||||
| exchange of the OC-Supported-Features AVPs between the endpoints. | ||||
| The feature announcement solution also works when carried out on | ||||
| existing applications. For the newly defined applications the | ||||
| negotiation can be more exact based on the application specification. | ||||
| Editor's note: Suggest removing the reference to the feature | ||||
| announcement solution. | ||||
| 5.3.1. Reacting Node Endpoint Considerations | ||||
| The basic principle is that the request message initiating endpoint | ||||
| (i.e. the "reacting node") announces its support for the overload | ||||
| control mechanism by including in the request message the OC- | ||||
| Supported-Features AVP with the capabilities it supports and is | ||||
| willing to use for this Diameter transaction. The lifetime of a | ||||
| capability announcement is limited to a single transaction. As a | ||||
| result, the reacting node MUST include the capability announcement in | ||||
| all request messages. | ||||
| Once the endpoint that initiated the request message receives an | ||||
| answer message from the remote endpoint, it can detect from the | ||||
| received answer message whether the remote endpoint supports the | ||||
| overload control solution and in a case it does, what features are | ||||
| supported. The support for the overload control solution is based on | ||||
| the presence of the OC-Supported-Features AVP in the Diameter answer. | ||||
| 5.3.2. Reporting Node Endpoint Considerations | ||||
| When a remote endpoint (i.e. a "reporting node") receives a request | ||||
| message, it can detect whether the request message initiating | ||||
| endpoint supports the overload control solution based on the presence | ||||
| of the OC-Supported-Features AVP. For the newly defined applications | ||||
| the overload control solution support can be part of the application | ||||
| specification. Based on the content of the OC-Supported-Features AVP | ||||
| the request message receiving endpoint knows what overload control | ||||
| functionality the other endpoint supports and then acts accordingly | ||||
| for the subsequent answer messages it initiates. The reporting node | ||||
| MUST include the OC-Supported-Features AVP in all response messages | ||||
| for transactions where the request message included the OC-Supported- | ||||
| Features AVP. The reporting node MUST announce support of the single | ||||
| algorithm that the reporting node will request the reacting node to | ||||
| use to mitigate overload instances. The reporting node MUST NOT | ||||
| change the selected algorithm during a period of time that it is in | ||||
| an overload state and, as a result, is sending OC-OLR AVPs in answer | ||||
| messages. | ||||
| Note: There will always be at least one algorithm supported by both | ||||
| the reacting and reporting nodes as all nodes that support DOIC must | ||||
| support the loss algorithm defined in this document. | ||||
| The handling of feature bits in the OC-Feature-Vector AVP that are | ||||
| not associated with overload abatement algorithms MUST be specified | ||||
| by the extensions that define the features. | ||||
| 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 the | ||||
| sender of the request message does not support DOIC. | ||||
| 5.3.3. Agent Considerations | ||||
| Editor's note -- Need to add this section. | ||||
| 5.4. Protocol Extensibility | ||||
| The overload control solution can be extended, e.g. with new traffic | ||||
| abatement algorithms, new report types or other new functionality. | ||||
| The new features and algorithms MUST be registered with the IANA and | ||||
| for use with the OC-Supported-Features for announcing the support for | ||||
| the new features (see Section 7 for the required procedures). | ||||
| It should be noted that [RFC6733] defined Grouped AVP extension | ||||
| mechanisms also apply. This allows, for example, defining a new | ||||
| feature that is mandatory to understand even when piggybacked on an | ||||
| existing applications. More specifically, the sub-AVPs inside the | ||||
| 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. | ||||
| 5.5. Overload Report Processing | ||||
| 5.5.1. Overload Control State | ||||
| Both reacting and reporting nodes maintain an 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 4.1 and | ||||
| 5.3 for discussion about how the support for DOIC is determined. | ||||
| 5.5.1.1. Overload Control State for Reacting Nodes | ||||
| A reacting node maintains the following OCS per supported Diameter | ||||
| application: | ||||
| o A host-type Overload Control State for each Destination-Host | ||||
| towards which it sends host-type requests and | ||||
| o A realm-type Overload Control State for each Destination-Realm | ||||
| towards which it sends realm-type requests. | ||||
| A host-type Overload Control State may be identified by the pair of | ||||
| Application-Id and Destination-Host. A realm-type Overload Control | ||||
| State may be identified by the pair of Application-Id and | ||||
| Destination-Realm. The host-type/realm-type Overload Control State | ||||
| for a given pair of Application and Destination-Host / Destination- | ||||
| Realm could include the following information: | ||||
| o Sequence number (as received in OC-OLR) | ||||
| o Time of expiry (deviated from validity duration as received in OC- | ||||
| OLR and time of reception) | ||||
| o Selected Abatement Algorithm (as received in OC-Supported- | ||||
| Features) | ||||
| o Algorithm specific input data (as received within OC-OLR, e.g. | ||||
| Reduction Percentage for Loss) | ||||
| 5.5.1.2. Overload Control States for Reporting Nodes | ||||
| A reporting node maintains per supported Diameter application and per | ||||
| supported (and eventually selected) Abatement Algorithm an Overload | ||||
| Control State. | ||||
| An Overload Control State may be identified by the pair of | ||||
| Application-Id and supported Abatement Algorithm. | ||||
| The Overload Control State for a given pair of Application and | ||||
| Abatement Algorithm could include the information: | ||||
| o Sequence number | ||||
| o Validity Duration and Expiry Time | ||||
| o Algorithm specific input data (e.g. Reduction Percentage for Loss) | ||||
| Overload Control States for reporting nodes containing a validity | ||||
| duration of 0 sec. should not expire before any previously sent | ||||
| (stale) OLR has timed out at any reacting node. | ||||
| 5.5.1.3. Maintaining Overload Control State | ||||
| Reacting nodes create a host-type OCS identified by OCS-Id = (app-id | ||||
| ,host-id) when receiving an answer message of application app-id | ||||
| containing an Orig-Host of host-id and a host-type OC-OLR AVP unless | ||||
| such host-type OCS already exists. | ||||
| Reacting nodes create a realm-type OCS identified by OCS-Id = (app-id | ||||
| ,realm-id) when receiving an answer message of application app-id | ||||
| 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 | ||||
| minus reception time is greater than validity duration). | ||||
| Reacting nodes update the host-type OCS identified by OCS-Id = (app- | ||||
| id,host-id) when receiving an answer message of application app-id | ||||
| containing an Orig-Host of host-id and a host-type OC-OLR AVP with a | ||||
| sequence number higher than the stored sequence number. | ||||
| Reacting nodes update the realm-type OCS identified by OCS-Id = (app- | ||||
| id,realm-id) when receiving an answer message of application app-id | ||||
| containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with | ||||
| a sequence number higher than the stored sequence number. | ||||
| Reacting nodes do not delete an OCS when receiving an answer message | ||||
| that does not contain an OC-OLR AVP (i.e. absence of OLR means "no | ||||
| change"). | ||||
| Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg) | ||||
| when receiving a request of application app-id containing an OC- | ||||
| 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. | ||||
| Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg) | ||||
| when they detect the need to modify the requested amount of | ||||
| application app-id traffic reduction. | ||||
| 5.5.2. Reacting Node Considerations | ||||
| Once a reacting node receives an OC-OLR AVP from a reporting node, it | ||||
| applies traffic abatement based on the selected algorithm with the | ||||
| reporting node and the current overload condition. The reacting node | ||||
| learns the reporting node supported abatement algorithms directly | ||||
| from the received answer message containing the OC-Supported-Features | ||||
| AVP. | ||||
| The received OC-Supported-Features AVP does not change the existing | ||||
| overload condition and/or traffic abatement algorithm settings if the | ||||
| OC-Sequence-Number AVP contains a value that is equal to the | ||||
| 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 4.3, the OC-OLR AVP contains the necessary | ||||
| information for the overload condition on the reporting node. | ||||
| From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting | ||||
| node learns whether the overload condition report concerns a specific | ||||
| 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 inconsistent | ||||
| with the definition of realm reports in section Section 4.6. | ||||
| In the context of this specification and the default traffic | ||||
| abatement algorithm, the OC-Reduction-Percentage AVP value MUST be | ||||
| interpreted in the following way: | ||||
| value == 0 | ||||
| Indicates that no traffic reduction has been requested. As a | ||||
| result the overload state, including the sequence number, MUST NOT | ||||
| be removed and future overload reports of the same type from the | ||||
| same reporting node must follow the rules for new sequence | ||||
| numbers. | ||||
| value == 100 | ||||
| Indicates that the reporting node (or realm) does not want to | ||||
| receive any traffic from the reacting node for the application the | ||||
| report concerns. The reacting node MUST not send traffic to the | ||||
| reporting node (or realm) as long as the overload condition | ||||
| changes or expires. | ||||
| 0 < value < 100 | ||||
| Indicates that the reporting node urges the reacting node to | ||||
| reduce its traffic by a given percentage. For example if an OC- | ||||
| Reduction-Percentage value of 10 has been received, the reacting | ||||
| node which would otherwise send 100 requests MUST only send 90 | ||||
| requests to the reporting node. How the reacting node achieves | ||||
| the "true reduction" in transactions leading to the sent request | ||||
| messages is up to the implementation. The reacting node MAY | ||||
| simply drop every 10th request from its output queue and let the | ||||
| generic application logic try to recover from it. | ||||
| If the OC-OLR AVP is received for the first time, the reacting node | ||||
| MUST create overload control state associated with the related realm | ||||
| or a specific host in the realm identified in the message carrying | ||||
| the OC-OLR AVP, as described in Section 5.5.1. | ||||
| If the value of the OC-Sequence-Number AVP contained in the received | ||||
| OC-OLR AVP is equal to or less than the value stored in an existing | ||||
| overload control state, the received OC-OLR AVP SHOULD be silently | ||||
| discarded. If the value of the OC-Sequence-Number AVP contained in | ||||
| 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 | ||||
| node MUST apply the traffic abatement requested in the OC-OLR AVP | ||||
| 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 | ||||
| OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration | ||||
| AVP or is implicitly equals to the default value (5 seconds) if the | ||||
| OC-Validity-Duration AVP is absent. The reacting node MUST maintain | ||||
| the validity duration in the overload control state. Once the | ||||
| 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 | ||||
| updated overload report indicates that the overload condition has | ||||
| ended and that the overload state is no longer valid. | ||||
| In the case that the validity duration expires or is explicitly | ||||
| signaled as being no longer valid the state associated with the | ||||
| overload report MUST be removed and any abatement associated with the | ||||
| 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. | ||||
| 5.5.3. Reporting Node Considerations | ||||
| A reporting node is a Diameter node inserting an OC-OLR AVP in a | ||||
| Diameter message in order to inform a reacting node about an overload | ||||
| condition and request Diameter traffic abatement. | ||||
| The operation on the reporting node is straight forward. The | ||||
| reporting node learns the capabilities of the reacting node when it | ||||
| 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 5.3 for further discussion on the | ||||
| capability and feature announcement between two endpoints. | ||||
| When a traffic reduction is required due to an overload condition and | ||||
| the overload control solution is supported by the sender of the | ||||
| Diameter request, the reporting node MUST include an OC-Supported- | ||||
| Features AVP and an OC-OLR AVP in the corresponding Diameter answer. | ||||
| The OC-OLR AVP contains the required traffic reduction and the OC- | ||||
| Supported-Features AVP indicates the traffic abatement algorithm to | ||||
| apply. This algorithm MUST be one of the algorithms advertised by | ||||
| the request sender. | ||||
| A reporting node MAY rely on the OC-Validity-Duration AVP values for | ||||
| the implicit overload control state cleanup on the reacting node. | ||||
| However, it is RECOMMENDED that the reporting node always explicitly | ||||
| indicates the end of a overload condition. | ||||
| The reporting node SHOULD indicate the end of an overload occurrence | ||||
| 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 | ||||
| receive the updated overload report. | ||||
| 5.5.4. Agent Considerations | ||||
| Editor's note -- Need to add this section. | ||||
| 6. Transport Considerations | ||||
| In order to reduce overload control introduced additional AVP and | ||||
| message processing it might be desirable/beneficial to signal whether | ||||
| the Diameter command carries overload control information that should | ||||
| be of interest of an overload aware Diameter node. | ||||
| Should such indication be include is not part of this specification. | Editor's note: This section depends on resolution of issue #27. | |||
| It has not either been concluded at what layer such possible | ||||
| indication should be. Obvious candidates include transport layer | ||||
| protocols (e.g., SCTP PPID or TCP flags) or Diameter command header | ||||
| flags. | ||||
| 7. IANA Considerations | 8. IANA Considerations | |||
| 7.1. AVP codes | 8.1. AVP codes | |||
| New AVPs defined by this specification are listed in Section 4. 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. | |||
| 7.2. New registries | 8.2. New registries | |||
| Three new registries are needed under the 'Authentication, | Three new registries are needed under the 'Authentication, | |||
| Authorization, and Accounting (AAA) Parameters' registry. | Authorization, and Accounting (AAA) Parameters' registry. | |||
| Section 4.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 4.2 for the initial assignment in the registry. | Section 6.2 for the initial assignment in the registry. | |||
| Section 4.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]. | |||
| 8. Security Considerations | 9. Security Considerations | |||
| This mechanism gives Diameter nodes the ability to request that | This mechanism gives Diameter nodes the ability to request that | |||
| downstream nodes send fewer Diameter requests. Nodes do this by | downstream nodes send fewer Diameter requests. Nodes do this by | |||
| exchanging overload reports that directly affect this reduction. | exchanging overload reports that directly affect this reduction. | |||
| This exchange is potentially subject to multiple methods of attack, | This exchange is potentially subject to multiple methods of attack, | |||
| and has the potential to be used as a Denial-of-Service (DoS) attack | and has the potential to be used as a Denial-of-Service (DoS) attack | |||
| vector. | vector. | |||
| Overload reports may contain information about the topology and | Overload reports may contain information about the topology and | |||
| current status of a Diameter network. This information is | current status of a Diameter network. This information is | |||
| potentially sensitive. Network operators may wish to control | potentially sensitive. Network operators may wish to control | |||
| disclosure of overload reports to unauthorized parties to avoid its | disclosure of overload reports to unauthorized parties to avoid its | |||
| use for competitive intelligence or to target attacks. | use for competitive intelligence or to target attacks. | |||
| Diameter does not include features to provide end-to-end | Diameter does not include features to provide end-to-end | |||
| authentication, integrity protection, or confidentiality. This may | authentication, integrity protection, or confidentiality. This may | |||
| cause complications when sending overload reports between non- | cause complications when sending overload reports between non- | |||
| adjacent nodes. | adjacent nodes. | |||
| 8.1. Potential Threat Modes | 9.1. Potential Threat Modes | |||
| The Diameter protocol involves transactions in the form of requests | The Diameter protocol involves transactions in the form of requests | |||
| and answers exchanged between clients and servers. These clients and | and answers exchanged between clients and servers. These clients and | |||
| servers may be peers, that is,they may share a direct transport (e.g. | servers may be peers, that is,they may share a direct transport (e.g. | |||
| TCP or SCTP) connection, or the messages may traverse one or more | TCP or SCTP) connection, or the messages may traverse one or more | |||
| intermediaries, known as Diameter Agents. Diameter nodes use TLS, | intermediaries, known as Diameter Agents. Diameter nodes use TLS, | |||
| DTLS, or IPSec to authenticate peers, and to provide confidentiality | DTLS, or IPSec to authenticate peers, and to provide confidentiality | |||
| and integrity protection of traffic between peers. Nodes can make | and integrity protection of traffic between peers. Nodes can make | |||
| authorization decisions based on the peer identities authenticated at | authorization decisions based on the peer identities authenticated at | |||
| the transport layer. | the transport layer. | |||
| skipping to change at page 33, line 29 ¶ | skipping to change at page 38, line 42 ¶ | |||
| 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 an 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. | |||
| 8.2. Denial of Service Attacks | 9.2. Denial of Service Attacks | |||
| Diameter overload reports can cause a node to cease sending some or | Diameter overload reports can cause a node to cease sending some or | |||
| all Diameter requests for an extended period. This makes them a | all Diameter requests for an extended period. This makes them a | |||
| tempting vector for DoS tacks. Furthermore, since Diameter is almost | tempting vector for DoS tacks. Furthermore, since Diameter is almost | |||
| always used in support of other protocols, a DoS attack on Diameter | always used in support of other protocols, a DoS attack on Diameter | |||
| is likely to impact those protocols as well. Therefore, Diameter | is likely to impact those protocols as well. Therefore, Diameter | |||
| nodes MUST NOT honor or forward overload reports from unauthorized or | nodes MUST NOT honor or forward overload reports from unauthorized or | |||
| otherwise untrusted sources. | otherwise untrusted sources. | |||
| 8.3. Non-Compliant Nodes | 9.3. Non-Compliant Nodes | |||
| When a Diameter node sends an overload report, it cannot assume that | When a Diameter node sends an overload report, it cannot assume that | |||
| all nodes will comply. A non-compliant node might continue to send | all nodes will comply. A non-compliant node might continue to send | |||
| requests with no reduction in load. Requirement 28 [RFC7068] | requests with no reduction in load. Requirement 28 [RFC7068] | |||
| indicates that the overload control solution cannot assume that all | indicates that the overload control solution cannot assume that all | |||
| Diameter nodes in a network are necessarily trusted, and that | Diameter nodes in a network are necessarily trusted, and that | |||
| malicious nodes not be allowed to take advantage of the overload | malicious nodes not be allowed to take advantage of the overload | |||
| control mechanism to get more than their fair share of service. | control mechanism to get more than their fair share of service. | |||
| In the absence of an overload control mechanism, Diameter nodes need | In the absence of an overload control mechanism, Diameter nodes need | |||
| to implement strategies to protect themselves from floods of | to implement strategies to protect themselves from floods of | |||
| requests, and to make sure that a disproportionate load from one | requests, and to make sure that a disproportionate load from one | |||
| source does not prevent other sources from receiving service. For | source does not prevent other sources from receiving service. For | |||
| example, a Diameter server might reject a certain percentage of | example, a Diameter server might reject a certain percentage of | |||
| requests from sources that exceed certain limits. Overload control | requests from sources that exceed certain limits. Overload control | |||
| can be thought of as an optimization for such strategies, where | can be thought of as an optimization for such strategies, where | |||
| downstream nodes never send the excess requests in the first place. | downstream nodes never send the excess requests in the first place. | |||
| However, the presence of an overload control mechanism does not | However, the presence of an overload control mechanism does not | |||
| remove the need for these other protection strategies. | remove the need for these other protection strategies. | |||
| 8.4. End-to End-Security Issues | 9.4. End-to End-Security Issues | |||
| The lack of end-to-end security features makes it far more difficult | The lack of end-to-end security features makes it far more difficult | |||
| to establish trust in overload reports that originate from non- | to establish trust in overload reports that originate from non- | |||
| adjacent nodes. Any agents in the message path may insert or modify | adjacent nodes. Any agents in the message path may insert or modify | |||
| overload reports. Nodes must trust that their adjacent peers perform | overload reports. Nodes must trust that their adjacent peers perform | |||
| proper checks on overload reports from their peers, and so on, | proper checks on overload reports from their peers, and so on, | |||
| creating a transitive-trust requirement extending for potentially | creating a transitive-trust requirement extending for potentially | |||
| long chains of nodes. Network operators must determine if this | long chains of nodes. Network operators must determine if this | |||
| transitive trust requirement is acceptable for their deployments. | transitive trust requirement is acceptable for their deployments. | |||
| Nodes supporting Diameter overload control MUST give operators the | Nodes supporting Diameter overload control MUST give operators the | |||
| skipping to change at page 34, line 38 ¶ | skipping to change at page 40, line 4 ¶ | |||
| contents of that report. In addition to the requirement to select | contents of that report. In addition to the requirement to select | |||
| which peers are trusted to send overload reports, operators MUST be | which peers are trusted to send overload reports, operators MUST be | |||
| able to select which peers are authorized to receive reports. A node | able to select which peers are authorized to receive reports. A node | |||
| MUST not send an overload report to a peer not authorized to receive | MUST not send an overload report to a peer not authorized to receive | |||
| it. Furthermore, an agent MUST remove any overload reports that | it. Furthermore, an agent MUST remove any overload reports that | |||
| might have been inserted by other nodes before forwarding a Diameter | might have been inserted by other nodes before forwarding a Diameter | |||
| message to a peer that is not authorized to receive overload reports. | message to a peer that is not authorized to receive overload reports. | |||
| At the time of this writing, the DIME working group is studying | At the time of this writing, the DIME working group is studying | |||
| requirements for adding end-to-end security | requirements for adding end-to-end security | |||
| [I-D.ietf-dime-e2e-sec-req] features to Diameter. These features, | [I-D.ietf-dime-e2e-sec-req] features to Diameter. These features, | |||
| when they become available, might make it easier to establish trust | when they become available, might make it easier to establish trust | |||
| in non-adjacent nodes for overload control purposes. Readers should | in non-adjacent nodes for overload control purposes. Readers should | |||
| be reminded, however, that the overload control mechanism encourages | be reminded, however, that the overload control mechanism encourages | |||
| Diameter agents to modify AVPs in, or insert additional AVPs into, | Diameter agents to modify AVPs in, or insert additional AVPs into, | |||
| existing messages that are originated by other nodes. If end-to-end | existing messages that are originated by other nodes. If end-to-end | |||
| security is enabled, there is a risk that such modification could | security is enabled, there is a risk that such modification could | |||
| violate integrity protection. The details of using any future | violate integrity protection. The details of using any future | |||
| Diameter end-to-end security mechanism with overload control will | Diameter end-to-end security mechanism with overload control will | |||
| require careful consideration, and are beyond the scope of this | require careful consideration, and are beyond the scope of this | |||
| document. | document. | |||
| 9. Contributors | 10. Contributors | |||
| The following people contributed substantial ideas, feedback, and | The following people contributed substantial ideas, feedback, and | |||
| discussion to this document: | discussion to this document: | |||
| o Eric McMurry | o Eric McMurry | |||
| o Hannes Tschofenig | o Hannes Tschofenig | |||
| o Ulrich Wiehe | o Ulrich Wiehe | |||
| o Jean-Jacques Trottin | o Jean-Jacques Trottin | |||
| o Maria Cruz Bartolome | o Maria Cruz Bartolome | |||
| o Martin Dolly | o Martin Dolly | |||
| o Nirav Salot | o Nirav Salot | |||
| o Susan Shishufeng | o Susan Shishufeng | |||
| 10. References | 11. References | |||
| 10.1. Normative References | 11.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
| May 2008. | May 2008. | |||
| [RFC5905] Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network | [RFC5905] Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network | |||
| Time Protocol Version 4: Protocol and Algorithms | Time Protocol Version 4: Protocol and Algorithms | |||
| Specification", RFC 5905, June 2010. | Specification", RFC 5905, June 2010. | |||
| [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | |||
| "Diameter Base Protocol", RFC 6733, October 2012. | "Diameter Base Protocol", RFC 6733, October 2012. | |||
| 10.2. Informative References | 11.2. Informative References | |||
| [Cx] 3GPP, , "ETSI TS 129 229 V11.4.0", August 2013. | [Cx] 3GPP, , "ETSI TS 129 229 V11.4.0", August 2013. | |||
| [I-D.ietf-dime-e2e-sec-req] | [I-D.ietf-dime-e2e-sec-req] | |||
| Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay, | Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay, | |||
| "Diameter AVP Level Security: Scenarios and Requirements", | "Diameter AVP Level Security: Scenarios and Requirements", | |||
| draft-ietf-dime-e2e-sec-req-00 (work in progress), | draft-ietf-dime-e2e-sec-req-00 (work in progress), | |||
| September 2013. | September 2013. | |||
| [PCC] 3GPP, , "ETSI TS 123 203 V11.12.0", December 2013. | [PCC] 3GPP, , "ETSI TS 123 203 V11.12.0", December 2013. | |||
| skipping to change at page 36, line 31 ¶ | skipping to change at page 41, line 44 ¶ | |||
| The base solution for the overload control does not cover all | The base solution for the overload control does not cover all | |||
| possible use cases. A number of solution aspects were intentionally | possible use cases. A number of solution aspects were intentionally | |||
| left for future specification and protocol work. | left for future specification and protocol work. | |||
| A.1. Additional traffic abatement algorithms | A.1. Additional traffic abatement algorithms | |||
| This specification describes only means for a simple loss based | This specification describes only means for a simple loss based | |||
| algorithm. Future algorithms can be added using the designed | algorithm. Future algorithms can be added using the designed | |||
| solution extension mechanism. The new algorithms need to be | solution extension mechanism. The new algorithms need to be | |||
| registered with IANA. See Sections 4.1 and 7 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 end-point (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 the case of agent overload. | |||
| A.3. DIAMETER_TOO_BUSY clarifications | A.3. DIAMETER_TOO_BUSY clarifications | |||
| The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is | The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is | |||
| somewhat under specified. For example, there is no information how | somewhat under specified. For example, there is no information how | |||
| long the specific Diameter node is willing to be unavailable. A | long the specific Diameter node is willing to be unavailable. A | |||
| specification updating [RFC6733] should clarify the handling of | specification updating [RFC6733] should clarify the handling of | |||
| DIAMETER_TOO_BUSY from the error answer initiating Diameter node | DIAMETER_TOO_BUSY from the error answer initiating Diameter node | |||
| skipping to change at page 40, line 36 ¶ | skipping to change at page 45, line 47 ¶ | |||
| likely different than that for either S1 or S2. The agent | likely different than that for either S1 or S2. The agent | |||
| forward's S2's report back to the client in the Diameter answer. | forward's S2's report back to the client in the Diameter answer. | |||
| Additionally, the agent generates a new report for the realm of | Additionally, the agent generates a new report for the realm of | |||
| "realm", and inserts that report into the answer. The client | "realm", and inserts that report into the answer. The client | |||
| throttles requests with Destination-Host:S1 at one rate, requests | throttles requests with Destination-Host:S1 at one rate, requests | |||
| with Destination-Host:S2 at another rate, and requests with no | with Destination-Host:S2 at another rate, and requests with no | |||
| Destination-Host AVP at yet a third rate. (Since S3 has not | Destination-Host AVP at yet a third rate. (Since S3 has not | |||
| indicated overload, the client does not throttle requests with | indicated overload, the client does not throttle requests with | |||
| Destination-Host:S3.) | Destination-Host:S3.) | |||
| Appendix C. Restructuring of -02 version of the draft | ||||
| This section captures the initial plan for restructuring the DOIC | ||||
| specification from the -02 version to the new -03 version. | ||||
| 1. Introduction (non normative) | ||||
| -- Existing Text from section 1. -- | ||||
| 2. Terminology and Abbreviations (non normative) | ||||
| -- Existing Text from section 2. -- | ||||
| 3. Solution Overview (Non normative) | ||||
| -- 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 | 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 | |||
| 7460 Warren Parkway | 7460 Warren Parkway | |||
| Frisco, Texas 75034 | Frisco, Texas 75034 | |||
| United States | United States | |||
| Email: srdonovan@usdonovans.com | Email: srdonovan@usdonovans.com | |||
| Ben Campbell | Ben Campbell | |||
| Oracle | Oracle | |||
| End of changes. 92 change blocks. | ||||
| 812 lines changed or deleted | 1130 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/ | ||||