| < draft-ietf-dime-ovli-01.txt | draft-ietf-dime-ovli-02.txt > | |||
|---|---|---|---|---|
| Diameter Maintenance and Extensions J. Korhonen, Ed. | Diameter Maintenance and Extensions (DIME) J. Korhonen, Ed. | |||
| (DIME) Broadcom | Internet-Draft Broadcom | |||
| Internet-Draft S. Donovan | Intended status: Standards Track S. Donovan, Ed. | |||
| Intended status: Standards Track B. Campbell | Expires: September 28, 2014 B. Campbell | |||
| Expires: June 20, 2014 Oracle | Oracle | |||
| L. Morand | L. Morand | |||
| Orange Labs | Orange Labs | |||
| December 17, 2013 | March 27, 2014 | |||
| Diameter Overload Indication Conveyance | Diameter Overload Indication Conveyance | |||
| draft-ietf-dime-ovli-01.txt | draft-ietf-dime-ovli-02.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 | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| Status of this Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on June 20, 2014. | This Internet-Draft will expire on September 28, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 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 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 3 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. Architectural Assumptions . . . . . . . . . . . . . . . . 5 | 3.1. Architectural Assumptions . . . . . . . . . . . . . . . . 6 | |||
| 3.1.1. Application Classification . . . . . . . . . . . . . . 5 | 3.1.1. Application Classification . . . . . . . . . . . . . 6 | |||
| 3.1.2. Application Type Overload Implications . . . . . . . . 6 | 3.1.2. Application Type Overload Implications . . . . . . . 7 | |||
| 3.1.3. Request Transaction Classification . . . . . . . . . . 8 | 3.1.3. Request Transaction Classification . . . . . . . . . 8 | |||
| 3.1.4. Request Type Overload Implications . . . . . . . . . . 9 | 3.1.4. Request Type Overload Implications . . . . . . . . . 9 | |||
| 3.1.5. Diameter Agent Behaviour . . . . . . . . . . . . . . . 10 | 3.1.5. Diameter Agent Behavior . . . . . . . . . . . . . . . 10 | |||
| 3.1.6. Simplified Example Architecture . . . . . . . . . . . 11 | 3.1.6. Simplified Example Architecture . . . . . . . . . . . 11 | |||
| 3.2. Conveyance of the Overload Indication . . . . . . . . . . 11 | 3.2. Conveyance of the Overload Indication . . . . . . . . . . 12 | |||
| 3.2.1. DOIC Capability Discovery . . . . . . . . . . . . . . 12 | 3.2.1. DOIC Capability Discovery . . . . . . . . . . . . . . 12 | |||
| 3.3. Overload Condition Indication . . . . . . . . . . . . . . 12 | 3.3. Overload Condition Indication . . . . . . . . . . . . . . 13 | |||
| 4. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 12 | 4. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 13 | 4.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 13 | |||
| 4.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 14 | 4.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 14 | |||
| 4.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 4.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . . 15 | 4.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . 16 | |||
| 4.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . . 15 | 4.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . 16 | |||
| 4.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . . 16 | 4.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . 17 | |||
| 4.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 16 | 4.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 18 | |||
| 4.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 17 | 4.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 19 | |||
| 5. Overload Control Operation . . . . . . . . . . . . . . . . . . 18 | 5. Overload Control Operation . . . . . . . . . . . . . . . . . 19 | |||
| 5.1. Overload Control Endpoints . . . . . . . . . . . . . . . . 18 | 5.1. Overload Control Endpoints . . . . . . . . . . . . . . . 19 | |||
| 5.2. Piggybacking Principle . . . . . . . . . . . . . . . . . . 21 | 5.2. Piggybacking Principle . . . . . . . . . . . . . . . . . 23 | |||
| 5.3. Capability Announcement . . . . . . . . . . . . . . . . . 22 | 5.3. Capability Announcement . . . . . . . . . . . . . . . . . 24 | |||
| 5.3.1. Reacting Node Endpoint Considerations . . . . . . . . 22 | 5.3.1. Reacting Node Endpoint Considerations . . . . . . . . 24 | |||
| 5.3.2. Reporting Node Endpoint Considerations . . . . . . . . 23 | 5.3.2. Reporting Node Endpoint Considerations . . . . . . . 24 | |||
| 5.4. Protocol Extensibility . . . . . . . . . . . . . . . . . . 23 | 5.3.3. Agent Considerations . . . . . . . . . . . . . . . . 25 | |||
| 5.5. Overload Report Processing . . . . . . . . . . . . . . . . 24 | 5.4. Protocol Extensibility . . . . . . . . . . . . . . . . . 25 | |||
| 5.5.1. Overload Control State . . . . . . . . . . . . . . . . 24 | 5.5. Overload Report Processing . . . . . . . . . . . . . . . 26 | |||
| 5.5.2. Reacting Node Considerations . . . . . . . . . . . . . 24 | 5.5.1. Overload Control State . . . . . . . . . . . . . . . 26 | |||
| 5.5.3. Reporting Node Considerations . . . . . . . . . . . . 27 | 5.5.2. Reacting Node Considerations . . . . . . . . . . . . 28 | |||
| 6. Transport Considerations . . . . . . . . . . . . . . . . . . . 27 | 5.5.3. Reporting Node Considerations . . . . . . . . . . . . 30 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | 5.5.4. Agent Considerations . . . . . . . . . . . . . . . . 31 | |||
| 7.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 28 | 6. Transport Considerations . . . . . . . . . . . . . . . . . . 31 | |||
| 7.2. New registries . . . . . . . . . . . . . . . . . . . . . . 28 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 7.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | 7.2. New registries . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 8.1. Potential Threat Modes . . . . . . . . . . . . . . . . . . 28 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | |||
| 8.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 30 | 8.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 32 | |||
| 8.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 30 | 8.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 33 | |||
| 8.4. End-to End-Security Issues . . . . . . . . . . . . . . . . 30 | 8.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 33 | |||
| 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 31 | 8.4. End-to End-Security Issues . . . . . . . . . . . . . . . 34 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . . 32 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . . 32 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 35 | |||
| Appendix A. Issues left for future specifications . . . . . . . . 33 | 10.2. Informative References . . . . . . . . . . . . . . . . . 35 | |||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 33 | Appendix A. Issues left for future specifications . . . . . . . 36 | |||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . . 33 | A.1. Additional traffic abatement algorithms . . . . . . . . . 36 | |||
| A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . . 33 | A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 36 | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 33 | A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . 36 | |||
| B.1. Mix of Destination-Realm routed requests and | Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| Destination-Host routed requests . . . . . . . . . . . . . 33 | B.1. Mix of Destination-Realm routed requests and Destination- | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 37 | Host routed requests . . . . . . . . . . . . . . . . . . 37 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 | ||||
| 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). 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. | |||
| skipping to change at page 4, line 25 ¶ | skipping to change at page 3, line 43 ¶ | |||
| The solution defined in this specification addresses the Diameter | The solution defined in this specification addresses the Diameter | |||
| overload control between two endpoints (see Section 5.1). | overload control between two endpoints (see Section 5.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 | |||
| Server Farm | Abatement Algorithm | |||
| A set of Diameter servers that can handle any request for a given | ||||
| set of Diameter applications. While these servers support the | ||||
| same set of applications, they do not necessarily all have the | ||||
| same capacity. An individual server farm might also support a | ||||
| subset of the users for a Diameter Realm. A server farm may host | ||||
| a single or multiple realms. | ||||
| Diameter Routing: | ||||
| Diameter Routing between non-adjacent nodes relies on the | ||||
| Destination-Realm AVP to determine the Diameter realm in which the | ||||
| request needs to be processed. A Destination-Host AVP may also be | ||||
| present in the request to address a specific server inside the | ||||
| Diameter realm. This function is defined in [RFC6733]. However, | ||||
| it is possible to enhance the routing decisions with application | ||||
| level knowledge as it done in 3GPP PCC [3GPP.23.203] and NAI-based | ||||
| source routing [RFC5729]. | ||||
| Diameter layer Load Balancing: | ||||
| Diameter layer load balancing allows Diameter requests to be | ||||
| distributed across the set of servers. Definition of this | ||||
| function is outside the scope of this document. | ||||
| Topology Hiding: | ||||
| Topology Hiding is loosely defined as ensuring that no Diameter | An algorithm requested by reporting nodes and used by reacting | |||
| topology information about a Diameter network can be discovered | nodes to reduce the amount of traffic sent to the reporting node | |||
| from Diameter messages sent outside a predefined boundary | during an occurrence of overload control. | |||
| (typically an administrative domain). This includes obfuscating | ||||
| identifiers and address information of Diameter entities in the | ||||
| Diameter network. It can also include hiding the number of | ||||
| various Diameter entities in the Diameter network. Identifying | ||||
| information can occur in many Diameter Attribute-Value Pairs | ||||
| (AVPs), including Origin-Host, Destination-Host, Route-Record, | ||||
| Proxy-Info, Session-ID and other AVPs. | ||||
| 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. | |||
| 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 actually 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, | |||
| in which case it also becomes a "reporting node". | in which case it also becomes a "reporting node". | |||
| OLR Overload Report. | Overload Control State (OCS) | |||
| State describing an occurrence of overload control maintained by | ||||
| reporting and reacting nodes. | ||||
| Overload Report (OLR) | ||||
| A set of AVPs sent by a reporting node indicating the start or | ||||
| continuation of an occurrence of overload control. | ||||
| 3. Solution Overview | 3. Solution Overview | |||
| The Diameter Overload Information Conveyance (DOIC) mechanism allows | ||||
| Diameter nodes to request other nodes to perform overload abatement | ||||
| actions, that is, actions to reduce the load offered to the | ||||
| overloaded node or realm. | ||||
| A Diameter node that supports DOIC is known as a "DOIC endpoint". | ||||
| Any Diameter node can act as a DOIC endpoint, including clients, | ||||
| servers, and agents. DOIC endpoints are further divided into | ||||
| "Reporting Nodes" and "Reacting Nodes." A reporting node requests | ||||
| overload abatement by sending an Overload Report (OLR) to one or more | ||||
| reacting nodes. | ||||
| A reacting node consumes OLRs, and performs whatever actions are | ||||
| needed to fulfill the abatement requests included in the OLRs. A | ||||
| Reporting node may report overload on its own behalf, or on behalf of | ||||
| other (typically upstream) nodes. Likewise, a reacting node may | ||||
| perform overload abatement on its own behalf, or on behalf of other | ||||
| (typically downstream) nodes. | ||||
| 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 | ||||
| endpoints, even though they are not endpoints in the Diameter sense. | ||||
| Since Diameter enables bi-directional applications, where Diameter | ||||
| servers can send requests towards Diameter clients, a given Diameter | ||||
| node can simultaneously act as a reporting node and reacting node. | ||||
| 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 downstream nodes. | ||||
| DOIC endpoints do not generate new messages to carry DOIC related | ||||
| information. Rather, they "piggyback" DOIC information over existing | ||||
| Diameter messages by inserting new AVPs into existing Diameter | ||||
| requests and responses. Nodes indicate support for DOIC, and any | ||||
| needed DOIC parameters by inserting an OC_Supported_Features AVP | ||||
| (Section 4.1) into existing requests and responses. Reporting nodes | ||||
| send OLRs by inserting OC-OLR AVPs. (Section 4.3) | ||||
| A given OLR applies to the Diameter realm and application of the | ||||
| Diameter message that carries it. If a reporting node supports more | ||||
| than one realm and/or application, it reports independently for each | ||||
| combination of realm and application. Similarly, OC-Feature-Vector | ||||
| AVPs apply to the realm and application of the enclosing message. | ||||
| This implies that a node may support DOIC for one application and/or | ||||
| realm, but not another, and may indicate different DOIC parameters | ||||
| for each application and realm for which it supports DOIC. | ||||
| Reacting nodes perform overload abatement according to an agreed-upon | ||||
| abatement algorithm. An abatement algorithm defines the meaning of | ||||
| the parameters of an OLR, and the procedures required for overload | ||||
| abatement. This document specifies a single must-support algorithm, | ||||
| namely the "loss" algorithm [ref?]. Future specifications may | ||||
| 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 | ||||
| Diameter node may be overloaded, in which case reacting nodes may | ||||
| reasonably attempt to send throttled requests to other destinations | ||||
| 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 | ||||
| have a concept of "report type" (Section 4.6), where the type defines | ||||
| such behaviors. Report types are extensible. This document defines | ||||
| report types for overload of a specific server, and for overload of | ||||
| an entire realm. | ||||
| While a reporting node sends OLRs to "adjacent" reacting nodes, nodes | ||||
| that are "adjacent" for DOIC purposes may not be adjacent from a | ||||
| Diameter, or transport, perspective. For example, one or more | ||||
| Diameter agents that do not support DOIC may exist between a given | ||||
| pair of reporting and reacting nodes, as long as those agents pass | ||||
| unknown AVPs through unmolested. The report types described in this | ||||
| document can safely pass through non-supporting agents. This may not | ||||
| be true for report types defined in future specifications. Documents | ||||
| that introduce new report types MUST describe any limitations on | ||||
| their use across non-supporting agents. | ||||
| 3.1. Architectural Assumptions | 3.1. Architectural Assumptions | |||
| This section describes the high-level architectural and semantic | This section describes the high-level architectural and semantic | |||
| assumptions that underlie the Diameter Overload Control Mechanism. | assumptions that underlie the Diameter Overload Control Mechanism. | |||
| 3.1.1. Application Classification | 3.1.1. Application Classification | |||
| 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 | |||
| skipping to change at page 6, line 26 ¶ | skipping to change at page 6, line 50 ¶ | |||
| terminated after a single Diameter transaction and a new Session-Id | terminated after a single Diameter transaction and a new Session-Id | |||
| is generated for each Diameter request. | is generated for each Diameter request. | |||
| For the purposes of this discussion, session-less applications are | For the purposes of this discussion, session-less applications are | |||
| further divided into two types of applications: | further divided into two types of applications: | |||
| Stateless applications: | Stateless applications: | |||
| Requests within a stateless application have no relationship to | Requests within a stateless application have no relationship to | |||
| each other. The 3GPP defined S13 application is an example of a | each other. The 3GPP defined S13 application is an example of a | |||
| stateless application [3GPP.29.272], where only a Diameter command | stateless application [S13], --> where only a Diameter command is | |||
| is defined between a client and a server and no state is | defined between a client and a server and no state is maintained | |||
| maintained between two consecutive transactions. | between two consecutive transactions. | |||
| Pseudo-session applications: | Pseudo-session applications: | |||
| Applications that do not rely on the Session-Id AVP for | Applications that do not rely on the Session-Id AVP for | |||
| correlation of application messages related to the same session | correlation of application messages related to the same session | |||
| but use other session-related information in the Diameter requests | but use other session-related information in the Diameter requests | |||
| for this purpose. The 3GPP defined Cx application [3GPP.29.229] | for this purpose. The 3GPP defined Cx application [Cx] is an | |||
| 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.1.2. | |||
| 3.1.2. Application Type Overload Implications | 3.1.2. Application Type Overload Implications | |||
| This section discusses considerations for mitigating overload | This section discusses considerations for mitigating overload | |||
| skipping to change at page 8, line 27 ¶ | skipping to change at page 8, line 52 ¶ | |||
| Session-Initiating Request: | Session-Initiating Request: | |||
| A session-initiating request is the initial message that | A session-initiating request is the initial message that | |||
| establishes a Diameter session. The ACR message defined in | establishes a Diameter session. The ACR message defined in | |||
| [RFC6733] is an example of a session-initiating request. | [RFC6733] is an example of a session-initiating request. | |||
| Correlated Session-Initiating Request: | Correlated Session-Initiating Request: | |||
| There are cases when multiple session-initiated requests must be | There are cases when multiple session-initiated requests must be | |||
| correlated and managed by the same Diameter server. It is notably | correlated and managed by the same Diameter server. It is notably | |||
| the case in the 3GPP PCC architecture [3GPP.23.203], where | the case in the 3GPP PCC architecture [PCC], where multiple | |||
| multiple apparently independent Diameter application sessions are | apparently independent Diameter application sessions are actually | |||
| actually correlated and must be handled by the same Diameter | correlated and must be handled by the same Diameter server. | |||
| server. | ||||
| Intra-Session Request: | Intra-Session Request: | |||
| An intra session request is a request that uses the same | An intra session request is a request that uses the same Session- | |||
| Session-Id than the one used in a previous request. An intra | Id than the one used in a previous request. An intra session | |||
| session request generally needs to be delivered to the server that | request generally needs to be delivered to the server that handled | |||
| handled the session creating request for the session. The STR | the session creating request for the session. The STR message | |||
| message defined in [RFC6733] is an example of an intra-session | defined in [RFC6733] is an example of an intra-session requests. | |||
| requests. | ||||
| 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 | |||
| application are examples of pseudo-session requests. | [Cx] application are examples of pseudo-session requests. | |||
| 3.1.4. Request Type Overload Implications | 3.1.4. Request Type Overload Implications | |||
| The request classes identified in Section 3.1.3 have implications on | The request classes identified in Section 3.1.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. | Diameter overload control mechanism described in this document. The | |||
| Exact behavior regarding throttling must be defined per application. | exact behavior regarding throttling is a matter of local policy, | |||
| 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 | |||
| throttling decisions. | throttling decisions. | |||
| Session-initiating requests: | Session-initiating requests: | |||
| Session-initiating requests represent more work than independent | Session-initiating requests represent more work than independent | |||
| or intra-session requests. Moreover, session-initiating requests | or intra-session requests. Moreover, session-initiating requests | |||
| are typically followed by other related session-related requests. | are typically followed by other session-related requests. As | |||
| As such, as the main objective of the overload control is to | such, as the main objective of the overload control is to reduce | |||
| reduce the total number of requests sent to the overloaded entity, | the total number of requests sent to the overloaded entity, | |||
| throttling decisions might favor allowing intra-session requests | throttling decisions might favor allowing intra-session requests | |||
| over session-initiating requests. Individual session-initiating | over session-initiating requests. Individual session-initiating | |||
| requests can be given equal treatment when making throttling | requests can be given equal treatment when making throttling | |||
| decisions. | decisions. | |||
| Correlated session-initiating requests: | Correlated session-initiating requests: | |||
| A Request that results in a new binding, where the binding is used | A Request that results in a new binding, where the binding is used | |||
| for routing of subsequent session-initiating requests to the same | for routing of subsequent session-initiating requests to the same | |||
| server, represents more work load than other requests. As such, | server, represents more work load than other requests. As such, | |||
| skipping to change at page 10, line 13 ¶ | skipping to change at page 10, line 36 ¶ | |||
| 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 Behaviour | 3.1.5. Diameter Agent Behavior | |||
| Editor's note: This section needs to be revisited once definition of | ||||
| DOIC endpoints is finalized. | ||||
| In the context of the Diameter Overload Indication Conveyance (DOIC) | In the context of the Diameter Overload Indication Conveyance (DOIC) | |||
| and reacting to the overload information, the functional behaviour of | and reacting to the overload information, the functional behavior of | |||
| Diameter agents in front of servers, especially Diameter proxies, | Diameter agents in front of servers, especially Diameter proxies, | |||
| needs to be common. This is important because agents may actively | needs to be common. This is important because agents may actively | |||
| participate in the handling of an overload conditions. For example, | participate in the handling of an overload conditions. For example, | |||
| they may make intelligent next hop selection decisions based on | they may make intelligent next hop selection decisions based on | |||
| overload conditions, or aggregate overload information to be | overload conditions, or aggregate overload information to be | |||
| disseminated downstream. Diameter agents may have other deployment | disseminated downstream. Diameter agents may have other deployment | |||
| related tasks that are not defined in the Diameter base protocol | related tasks that are not defined in the Diameter base protocol | |||
| [RFC6733]. These include, among other tasks, topology hiding, or | [RFC6733]. These include, among other tasks, topology hiding, or | |||
| agent acting as a Server Front End (SFE) for a farm of Diameter | agent acting as a Server Front End (SFE) for a farm of Diameter | |||
| servers. | servers. | |||
| skipping to change at page 11, line 15 ¶ | skipping to change at page 12, line 8 ¶ | |||
| 3.1.6. Simplified Example Architecture | 3.1.6. Simplified Example Architecture | |||
| Figure 1 illustrates the simplified architecture for Diameter | Figure 1 illustrates the simplified architecture for Diameter | |||
| overload information conveyance. See Section 5.1 for more discussion | overload information conveyance. See Section 5.1 for more discussion | |||
| and details how different Diameter nodes fit into the architecture | and details how different Diameter nodes fit into the architecture | |||
| from the DOIC point of view. | from the DOIC point of view. | |||
| Realm X Same or other Realms | Realm X Same or other Realms | |||
| <--------------------------------------> <----------------------> | <--------------------------------------> <----------------------> | |||
| +--^-----+ : (optional) : | +--^-----+ : (optional) : | |||
| |Diameter| : : | |Diameter| : : | |||
| |Server A|--+ .--. : +---^----+ : .--. | |Server A|--+ .--. : +---^----+ : .--. | |||
| +--------+ | _( `. : |Diameter| : _( `. +---^----+ | +--------+ | _( `. : |Diameter| : _( `. +---^----+ | |||
| +--( )--:-| Agent |-:--( )--|Diameter| | +--( )--:-| Agent |-:--( )--|Diameter| | |||
| +--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | | +--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | | |||
| |Diameter|--+ `--(___.-' : : `--(___.-' +-----^--+ | |Diameter|--+ `--(___.-' : : `--(___.-' +-----^--+ | |||
| |Server B| : : | |Server B| : : | |||
| +---^----+ : : | +---^----+ : : | |||
| End-to-end Overload Indication | End-to-end Overload Indication | |||
| 1) <-----------------------------------------------> | 1) <-----------------------------------------------> | |||
| Diameter Application Y | Diameter Application Y | |||
| Overload Indication A Overload Indication A' | Overload Indication A Overload Indication A' | |||
| 2) <----------------------> <----------------------> | 2) <----------------------> <----------------------> | |||
| standard base protocol standard base protocol | standard base protocol standard base protocol | |||
| Figure 1: Simplified architecture choices for overload indication | Figure 1: Simplified architecture choices for overload indication | |||
| delivery | delivery | |||
| In Figure 1, the Diameter overload indication can be conveyed (1) | In Figure 1, the Diameter overload indication can be conveyed (1) | |||
| end-to-end between servers and clients or (2) between servers and | end-to-end between servers and clients or (2) between servers and | |||
| Diameter agent inside the realm and then between the Diameter agent | Diameter agent inside the realm and then between the Diameter agent | |||
| and the clients when the Diameter agent acting as back-to-back-agent | and the clients when the Diameter agent acting as back-to-back-agent | |||
| for DOIC purposes. | for DOIC purposes. | |||
| skipping to change at page 12, line 13 ¶ | skipping to change at page 13, line 5 ¶ | |||
| features. | features. | |||
| 3.2.1. DOIC Capability Discovery | 3.2.1. DOIC Capability Discovery | |||
| Support of DOIC may be specified as part of the functionality | Support of DOIC may be specified as part of the functionality | |||
| supported by a new Diameter application. In this way, support of the | supported by a new Diameter application. In this way, support of the | |||
| considered Diameter application (discovered during capabilities | considered Diameter application (discovered during capabilities | |||
| exchange phase as defined in Diameter base protocol [RFC6733]) | exchange phase as defined in Diameter base protocol [RFC6733]) | |||
| indicates implicit support of the DOIC mechanism. | indicates implicit support of the DOIC mechanism. | |||
| Editor's Note: This method does not work in general when agents are | ||||
| part of the deployment. | ||||
| When the DOIC mechanism is introduced in existing Diameter | When the DOIC mechanism is introduced in existing Diameter | |||
| applications, a specific capability discovery mechanism is required. | applications, a specific capability discovery mechanism is required. | |||
| The "DOIC capability discovery mechanism" is based on the presence of | The "DOIC capability discovery mechanism" is based on the presence of | |||
| specific optional AVPs in the Diameter messages, such as the OC- | specific optional AVPs in the Diameter messages, such as the OC- | |||
| Supported-Features AVP (see Section 4.1). Although the OC-Supported- | Supported-Features AVP (see Section 4.1). Although the OC-Supported- | |||
| Features AVP can be used to advertise a certain set of new or | Features AVP can be used to advertise a certain set of new or | |||
| existing Diameter overload control capabilities, it is not a | existing Diameter overload control capabilities, it is not a | |||
| versioning solution per se, however, it can be used to achieve the | versioning solution per se, however, it can be used to achieve the | |||
| same result. | same result. | |||
| skipping to change at page 13, line 8 ¶ | skipping to change at page 13, line 49 ¶ | |||
| 4. Attribute Value Pairs | 4. Attribute Value Pairs | |||
| This section describes the encoding and semantics of the Diameter | This section describes the encoding and semantics of the Diameter | |||
| Overload Indication Attribute Value Pairs (AVPs) defined in this | Overload Indication Attribute Value Pairs (AVPs) defined in this | |||
| document. | document. | |||
| 4.1. OC-Supported-Features AVP | 4.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 node's support for the | serves for two purposes. First, it announces a node's support for | |||
| 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 SHOULD be included into every Diameter message a DOIC | Features AVP MUST be included in every Diameter message a DOIC | |||
| supporting node sends (and intends to use for DOIC purposes). | supporting node sends. | |||
| OC-Supported-Features ::= < AVP Header: TBD1 > | ||||
| < OC-Sequence-Number > | ||||
| [ OC-Feature-Vector ] | ||||
| * [ AVP ] | ||||
| The OC-Sequence-Number AVP is used to indicate whether the contents | OC-Supported-Features ::= < AVP Header: TBD1 > | |||
| of the OC-Supported-Features AVP has changed since last time the node | [ OC-Feature-Vector ] | |||
| included the OC-Supported-Features AVP (see Section 4.4). Although | * [ AVP ] | |||
| sending the OC-Sequence-Number AVP is mandatory in the OC-Supported- | ||||
| Features AVP, the receiving node MAY always choose to ignore the | ||||
| sequence number if it can determine the feature support changes | ||||
| otherwise. | ||||
| The OC-Feature-Vector sub-AVP is used to announced 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 4.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 mutually. If there is no single matching | capabilities MUST match. If there is no single matching capability | |||
| capability the reacting node MUST act as if it does not implement | the reacting node MUST act as if it does not implement DOIC and cease | |||
| DOIC and cease inserting any DOIC related AVPs into any Diameter | inserting any DOIC related AVPs into any Diameter messages with this | |||
| messages with this specific reacting node. | specific reacting node. | |||
| Editor's note: The last sentence conflicts with the last sentence two | ||||
| paragraphs up. In reality, there will always be at least one | ||||
| matching capability as all nodes supporting DOIC must support the | ||||
| loss algorithm. Suggest removing the last sentence. | ||||
| 4.2. OC-Feature-Vector AVP | 4.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) | |||
| skipping to change at page 14, line 14 ¶ | skipping to change at page 15, line 4 ¶ | |||
| 4.2. OC-Feature-Vector AVP | 4.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 | 4.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 contain explicit information to which application it applies | does not explicitly contain all information needed by the reacting | |||
| to and who inserted the AVP or whom the specific OC-OLR AVP concerns | node to decide whether a subsequent request must undergo a throttling | |||
| to. Both these information is implicitly learned from the | process with the received reduction percentage. The value of the OC- | |||
| encapsulating Diameter message/command. The application the OC-OLR | Report-Type AVP within the OC-OLR AVP indicates which implicit | |||
| AVP applies to is the same as the Application-Id found in the | information is relevant for this decision (see Section 4.6). The | |||
| Diameter message header. The identity the OC-OLR AVP concerns is | application the OC-OLR AVP applies to is the same as the Application- | |||
| determined from the Origin-Host AVP (and Origin-Realm AVP as well) | Id found in the Diameter message header. The identity the OC-OLR AVP | |||
| found from the encapsulating Diameter command. The OC-OLR AVP is | concerns is determined from the Origin-Host AVP (and Origin-Realm AVP | |||
| intended to be sent only by a reporting node. | as well) found from the encapsulating Diameter command. The OC-OLR | |||
| AVP is intended to be sent only by a reporting node. | ||||
| OC-OLR ::= < AVP Header: TBD2 > | OC-OLR ::= < AVP Header: TBD2 > | |||
| < OC-Sequence-Number > | < OC-Sequence-Number > | |||
| [ OC-Report-Type ] | < OC-Report-Type > | |||
| [ OC-Reduction-Percentage ] | [ OC-Reduction-Percentage ] | |||
| [ OC-Validity-Duration ] | [ OC-Validity-Duration ] | |||
| * [ AVP ] | * [ AVP ] | |||
| The Sequence-Number AVP indicates the "freshness" of the OC-OLR AVP. | The OC-Validity-Duration AVP indicates the validity time of the | |||
| It is possible to replay the same OC-OLR AVP multiple times between | overload report associated with a specific sequence number, measured | |||
| the overload control endpoints, however, when the OC-OLR AVP content | after reception of the OC-OLR AVP. The validity time MUST NOT be | |||
| changes or sending endpoint otherwise wants the receiving endpoint to | updated after reception of subsequent OC-OLR AVPs with the same | |||
| update its overload control information, then the OC-Sequence-Number | sequence number. The default value for the OC-Validity-Duration AVP | |||
| AVP MUST contain a new greater value than the previously received. | value is 5 (i.e., 5 seconds). When the OC-Validity-Duration AVP is | |||
| The receiver SHOULD discard an OC-OLR AVP with a sequence number that | not present in the OC-OLR AVP, the default value applies. | |||
| is less than previously received one. | ||||
| 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 | ||||
| same type are received. | ||||
| The OC-OLR AVP can be expanded with optional sub-AVPs only if a | The OC-OLR AVP can be expanded with optional sub-AVPs only if a | |||
| legacy implementation can safely ignore them without breaking | legacy implementation can safely ignore them without breaking | |||
| backward compatibility for the given OC-Report-Type AVP value implied | backward compatibility for the given OC-Report-Type AVP value implied | |||
| report handling semantics. If the new sub-AVPs imply new semantics | 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 | for the report handling, then a new OC-Report-Type AVP value MUST be | |||
| defined. | defined. | |||
| 4.4. OC-Sequence-Number AVP | 4.4. OC-Sequence-Number AVP | |||
| The OC-Sequence-Number AVP (AVP code TBD3) is type of Time. Its | The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64. | |||
| usage in the context of the overload control is described in Sections | Its usage in the context of overload control is described in | |||
| 4.1 and 4.3. | Section 4.3. | |||
| 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 (neglecting the fact that the contents of the AVP | control endpoints. The sequence number is only required to be unique | |||
| is a 64-bit NTP timestamp [RFC5905]). The sequence number is only | between two overload control endpoints. Sequence numbers are treated | |||
| required to be unique between two overload control endpoints. | in a uni-directional manner, i.e. two sequence numbers on each | |||
| Sequence numbers are treated in uni-directional manner, i.e. two | direction between two endpoints are not related or correlated. | |||
| sequence numbers on each 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 previously seen between two | greater than any sequence number in an active overload report | |||
| endpoints within a time window that tolerates the wraparound of the | previously sent by the reporting node. This property MUST hold over | |||
| NTP timestamp (i.e. approximately 68 years). | a reboot of the reporting node. | |||
| 4.5. OC-Validity-Duration AVP | 4.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 describes the number of seconds the "new and fresh" OC-OLR AVP | and indicates in seconds the validity time of the overload report. | |||
| and its content is valid since the reception of the new OC-OLR AVP. | The number of seconds is measured after reception of the first OC-OLR | |||
| The default value for the OC-Validity-Duration AVP value is 5 (i.e., | AVP with a given value of OC-Sequence-Number AVP. The default value | |||
| 5 seconds). When the OC-Validity-Duration AVP is not present in the | for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds). When the | |||
| OC-OLR AVP, the default value applies. Validity duration values 0 | OC-Validity-Duration AVP is not present in the OC-OLR AVP, the | |||
| (i.e., 0 seconds) and above 86400 (i.e., 24 hours) MUST NOT be used. | default value applies. Validity duration with values above 86400 | |||
| Invalid validity duration values are treated as if the OC-Validity- | (i.e.; 24 hours) MUST NOT be used. Invalid duration values are | |||
| Duration AVP were not present. | treated as if the OC-Validity-Duration AVP were not present and | |||
| 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 4.7 discusses the impacts of timeout in | |||
| the scope of the traffic abatement algorithms. | the scope of the traffic abatement algorithms. | |||
| As a general guidance for implementations it is RECOMMENDED never to | When a reporting node has recovered from overload, it SHOULD | |||
| let any overload report to timeout. Following to this rule, an | invalidate any existing overload reports in a timely matter. This | |||
| overload endpoint should explicitly signal the end of overload | can be achieved by sending an updated overload report (meaning the | |||
| condition and not rely on the expiration of the validity time of the | OLR contains a new sequence number) with the OC-Validity-Duration AVP | |||
| overload report in the reacting node. This leaves no need for the | value set to zero ("0"). If the overload report is about to expire | |||
| reacting node to reason or guess the overload condition of the | naturally, the reporting node MAY choose to simply let it do so. | |||
| reporting node. | ||||
| A reacting node MUST invalidate and remove an overload report that | ||||
| expires without an explicit overload report containing an OC- | ||||
| Validity-Duration value set to zero ("0"). | ||||
| 4.6. OC-Report-Type AVP | 4.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 | |||
| the reacting node knows that will reach the overloaded node. For | for which all of the following conditions are true: | |||
| example, requests with a Destination-Host AVP indicating the | ||||
| endpoint. The reacting node learns the "host" implicitly from the | ||||
| Origin-Host AVP of the received message that contained the OC-OLR | ||||
| AVP. | ||||
| 1 A realm report. The overload treatment should apply to all | The Destination-Host AVP is present in the request and its value | |||
| requests bound for the overloaded realm. The reacting node learns | matches the value of the Origin-Host AVP of the received message | |||
| the "realm" implicitly from the Origin-Realm AVP of the received | that contained the OC-OLR AVP. | |||
| message that contained the OC-OLR AVP. | ||||
| The value of the Destination-Realm AVP in the request matches the | ||||
| value of the Origin-Realm AVP of the received message that | ||||
| contained the OC-OLR AVP. | ||||
| The value of the Application-ID in the Diameter Header of the | ||||
| request matches the value of the Application-ID of the Diameter | ||||
| Header of the received message that contained the OC-OLR AVP. | ||||
| 1 A realm report. The overload treatment should apply to requests | ||||
| for which all of the following conditions are true: | ||||
| The Destination-Host AVP is absent in the request. | ||||
| The value of the Destination-Realm AVP in the request matches the | ||||
| value of the Origin-Realm AVP of the received message that | ||||
| contained the OC-OLR AVP. | ||||
| The value of the Application-ID in the Diameter Header of the | ||||
| request matches the value of the Application-ID of the Diameter | ||||
| Header of the received message that contained the OC-OLR AVP. | ||||
| Editor's note: There is still an open issue on the definition of | ||||
| Realm reports and whether what report types should be supported. | ||||
| There is consensus that host reports should be supported. There is | ||||
| discussion on Realm reports and Realm-Routed-Request reports. The | ||||
| above definition applies to Realm-Routed-Request reports where Realm | ||||
| reports are defined to apply to all requests that match the realm, | ||||
| independent of the presence, absence or value of the Destination-Host | ||||
| AVP. | ||||
| The default value of the OC-Report-Type AVP is 0 (i.e. the host | 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 | |||
| skipping to change at page 16, line 47 ¶ | skipping to change at page 18, line 20 ¶ | |||
| When defining new report type values, the corresponding specification | When defining new report type values, the corresponding specification | |||
| MUST define the semantics of the new report types and how they affect | MUST define the semantics of the new report types and how they affect | |||
| the OC-OLR AVP handling. The specification MUST also reserve a | the OC-OLR AVP handling. The specification MUST also reserve a | |||
| corresponding new feature, see the OC-Supported-Features and OC- | corresponding new feature, see the OC-Supported-Features and OC- | |||
| Feature-Vector AVPs. | Feature-Vector AVPs. | |||
| 4.7. OC-Reduction-Percentage AVP | 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 have sent. | requested to reduce, compared to what it otherwise would send. The | |||
| The OC-Reduction-Percentage AVP applies to the default (loss like) | OC-Reduction-Percentage AVP applies to the default (loss) algorithm | |||
| algorithm specified in this specification. However, the AVP can be | specified in this specification. However, the AVP can be reused for | |||
| reused for future abatement algorithms, if its semantics fit into the | future abatement algorithms, if its semantics fit into the new | |||
| 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 interpreted as 100. The | hundred (100). Values greater than 100 are ignored. The value of | |||
| value of 100 means that no traffic is expected, 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 requests to 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 | If an overload control endpoint comes out of the 100 percent traffic | |||
| reduction as a result of the overload report timing out, the | reduction as a result of the overload report timing out, the | |||
| following concerns are RECOMMENDED to be applied. The reacting node | following concerns are RECOMMENDED to be applied. The reacting node | |||
| sending the traffic should be conservative and, for example, first | sending the traffic should be conservative and, for example, first | |||
| send "probe" messages to learn the overload condition of the | send "probe" messages to learn the overload condition of the | |||
| overloaded node before converging to any traffic amount/rate decided | overloaded node before converging to any traffic amount/rate decided | |||
| by the sender. Similar concerns apply in all cases when the overload | by the sender. Similar concerns apply in all cases when the overload | |||
| report times out unless the previous overload report stated 0 percent | report times out unless the previous overload report stated 0 percent | |||
| reduction. | 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 | 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 | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Sequence-Number TBD3 x.x Time | | V | | |OC-Sequence-Number TBD3 x.x Unsigned64 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Validity-Duration TBD4 x.x Unsigned32 | | V | | |OC-Validity-Duration TBD4 x.x Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Report-Type TBD5 x.x Enumerated | | V | | |OC-Report-Type TBD5 x.x Enumerated | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Reduction | | | | |OC-Reduction | | | | |||
| | -Percentage TBD8 x.x Unsigned32 | | V | | | -Percentage TBD8 x.x Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Feature-Vector TBD6 x.x Unsigned64 | | V | | |OC-Feature-Vector TBD6 x.x Unsigned64 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| 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 | 5. Overload Control Operation | |||
| Editor's note: The concept of endpoints requires additional thought | ||||
| and specification. | ||||
| 5.1. Overload Control Endpoints | 5.1. Overload Control Endpoints | |||
| The overload control solution can be considered as an overlay on top | The overload control solution can be considered as an overlay on top | |||
| of an arbitrary Diameter network. The overload control information | of an arbitrary Diameter network. The overload control information | |||
| is exchanged over on a "DOIC association" established between two | is exchanged over on a "DOIC association" established between two | |||
| communication endpoints. The endpoints, namely the "reacting node" | communication endpoints. The endpoints, namely the "reacting node" | |||
| and the "reporting node" do not need to be adjacent Diameter peer | 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 | nodes, nor they need to be the end-to-end Diameter nodes in a typical | |||
| "client-server" deployment with multiple intermediate Diameter agent | "client-server" deployment with multiple intermediate Diameter agent | |||
| nodes in between. The overload control endpoints are the two | nodes in between. The overload control endpoints are the two | |||
| skipping to change at page 19, line 9 ¶ | skipping to change at page 20, line 38 ¶ | |||
| Diameter Session A Diameter session as defined in [RFC6733]. | Diameter Session A Diameter session as defined in [RFC6733]. | |||
| DOIC Association A DOIC association exists between two Diameter | DOIC Association A DOIC association exists between two Diameter | |||
| Overload End-Points. One of the end-points is the overload | Overload End-Points. One of the end-points is the overload | |||
| reporter and the other is the overload reactor. | reporter and the other is the overload reactor. | |||
| Figure 2 illustrates the most basic configuration where a client is | Figure 2 illustrates the most basic configuration where a client is | |||
| connected directly to a server. In this case, the Diameter session | connected directly to a server. In this case, the Diameter session | |||
| and the DOIC association are both between the client and server. | and the DOIC association are both between the client and server. | |||
| +-----+ +-----+ | +-----+ +-----+ | |||
| | C | | S | | | C | | S | | |||
| +-----+ +-----+ | +-----+ +-----+ | |||
| | DEP | | DEP | | | DEP | | DEP | | |||
| +--+--+ +--+--+ | +--+--+ +--+--+ | |||
| | | | | | | |||
| | | | | | | |||
| |{Diameter Session}| | |{Diameter Session}| | |||
| | | | | | | |||
| |{DOIC Association}| | |{DOIC Association}| | |||
| | | | | | | |||
| Figure 2: Basic DOIC deployment | Figure 2: Basic DOIC deployment | |||
| In Figure 3 there is an agent that is not participating directly in | In Figure 3 there is an agent that is not participating directly in | |||
| the exchange of overload reports. As a result, the Diameter session | the exchange of overload reports. As a result, the Diameter session | |||
| and the DOIC association are still established between the client and | and the DOIC association are still established between the client and | |||
| the server. | the server. | |||
| +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ | |||
| | C | | A | | S | | | C | | A | | S | | |||
| +-----+ +--+--+ +-----+ | +-----+ +--+--+ +-----+ | |||
| | DEP | | | DEP | | | DEP | | | DEP | | |||
| +--+--+ | +--+--+ | +--+--+ | +--+--+ | |||
| | | | | | | | | |||
| | | | | | | | | |||
| |----------{Diameter Session}---------| | |----------{Diameter Session}---------| | |||
| | | | | | | | | |||
| |----------{DOIC Association}---------| | |----------{DOIC Association}---------| | |||
| | | | | | | | | |||
| Figure 3: DOIC deployment with non participating agent | Figure 3: DOIC deployment with non participating agent | |||
| Figure 4 illustrates the case where the client does not support | Figure 4 illustrates the case where the client does not support | |||
| Diameter overload. In this case, the DOIC association is between the | Diameter overload. In this case, the DOIC association is between the | |||
| agent and the server. The agent handles the role of the reactor for | agent and the server. The agent handles the role of the reactor for | |||
| overload reports generated by the server. | overload reports generated by the server. | |||
| +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ | |||
| | C | | A | | S | | | C | | A | | S | | |||
| +--+--+ +-----+ +-----+ | +--+--+ +-----+ +-----+ | |||
| | | DEP | | DEP | | | | DEP | | DEP | | |||
| | +--+--+ +--+--+ | | +--+--+ +--+--+ | |||
| | | | | | | | | |||
| | | | | | | | | |||
| |----------{Diameter Session}---------| | |----------{Diameter Session}---------| | |||
| | | | | | | | | |||
| | |{DOIC Association}| | | |{DOIC Association}| | |||
| | | | | | | | | |||
| Figure 4: DOIC deployment with non-DOIC client and DOIC enabled agent | 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 | 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. | agent and a second DOIC association between the agent and the server. | |||
| One use case requiring this configuration is when the agent is | One use case requiring this configuration is when the agent is | |||
| serving as a SFE for a set of servers. | serving as a SFE for a set of servers. | |||
| +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ | |||
| | C | | A | | S | | | C | | A | | S | | |||
| +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ | |||
| | DEP | | DEP | | DEP | | | DEP | | DEP | | DEP | | |||
| +--+--+ +--+--+ +--+--+ | +--+--+ +--+--+ +--+--+ | |||
| | | | | | | | | |||
| | | | | | | | | |||
| |----------{Diameter Session}---------| | |----------{Diameter Session}---------| | |||
| | | | | | | | | |||
| |{DOIC Association}|{DOIC Association}| | |{DOIC Association}|{DOIC Association}| | |||
| | | and/or | | | and/or | |||
| |----------{DOIC Association}---------| | |----------{DOIC Association}---------| | |||
| | | | | | | | | |||
| Figure 5: A deployment where all nodes support DOIC | Figure 5: A deployment where all nodes support DOIC | |||
| Figure 6 illustrates a deployment where some clients support Diameter | Figure 6 illustrates a deployment where some clients support Diameter | |||
| overload control and some do not. In this case the agent must | overload control and some do not. In this case the agent must | |||
| support Diameter overload control for the non supporting client. It | support Diameter overload control for the non supporting client. It | |||
| might also need to have a DOIC association with the server, as shown | 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 | here, to handle overload for a server farm and/or for managing Realm | |||
| overload. | overload. | |||
| +-----+ +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ +-----+ | |||
| | C1 | | C2 | | A | | S | | | C1 | | C2 | | A | | S | | |||
| +-----+ +--+--+ +-----+ +-----+ | +-----+ +--+--+ +-----+ +-----+ | |||
| | DEP | | | DEP | | DEP | | | DEP | | | DEP | | DEP | | |||
| +--+--+ | +--+--+ +--+--+ | +--+--+ | +--+--+ +--+--+ | |||
| | | | | | | | | | | |||
| | | | | | | | | | | |||
| |-------------------{Diameter Session}-------------------| | |-------------------{Diameter Session}-------------------| | |||
| | | | | | | | | | | |||
| | |--------{Diameter Session}-----------| | | |--------{Diameter Session}-----------| | |||
| | | | | | | | | | | |||
| |---------{DOIC Association}----------|{DOIC Association}| | |---------{DOIC Association}----------|{DOIC Association}| | |||
| | | | and/or | | | | and/or | |||
| |-------------------{DOIC Association}-------------------| | |-------------------{DOIC Association}-------------------| | |||
| | | | | | | | | | | |||
| Figure 6: A deployment with DOIC and non-DOIC supporting clients | Figure 6: A deployment with DOIC and non-DOIC supporting clients | |||
| Figure 7 illustrates a deployment where some agents support Diameter | Figure 7 illustrates a deployment where some agents support Diameter | |||
| overload control and others do not. | overload control and others do not. | |||
| +-----+ +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ +-----+ | |||
| | C | | A | | A | | S | | | C | | A | | A | | S | | |||
| +-----+ +--+--+ +-----+ +-----+ | +-----+ +--+--+ +-----+ +-----+ | |||
| | DEP | | | DEP | | DEP | | | DEP | | | DEP | | DEP | | |||
| +--+--+ | +--+--+ +--+--+ | +--+--+ | +--+--+ +--+--+ | |||
| | | | | | | | | | | |||
| | | | | | | | | | | |||
| |-------------------{Diameter Session}-------------------| | |-------------------{Diameter Session}-------------------| | |||
| | | | | | | | | | | |||
| | | | | | | | | | | |||
| |---------{DOIC Association}----------|{DOIC Association}| | |---------{DOIC Association}----------|{DOIC Association}| | |||
| | | | and/or | | | | and/or | |||
| |-------------------{DOIC Association}-------------------| | |-------------------{DOIC Association}-------------------| | |||
| | | | | | | | | | | |||
| Figure 7: A deployment with DOIC and non-DOIC supporting agents | Figure 7: A deployment with DOIC and non-DOIC supporting agents | |||
| 5.2. Piggybacking Principle | 5.2. Piggybacking Principle | |||
| The overload control AVPs defined in this specification have been | The overload control AVPs defined in this specification have been | |||
| designed to be piggybacked on top of existing application message | designed to be piggybacked on top of existing application message | |||
| exchanges. This is made possible by adding overload control top | exchanges. This is made possible by adding overload control top | |||
| level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as | level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as | |||
| optional AVPs into existing commands when the corresponding Command | optional AVPs into existing commands when the corresponding Command | |||
| skipping to change at page 22, line 32 ¶ | skipping to change at page 24, line 11 ¶ | |||
| "reacting node") or an answer (i.e. send by a "reporting node"). | "reacting node") or an answer (i.e. send by a "reporting node"). | |||
| Therefore, in a typical "client-server" deployment, the "client" MAY | Therefore, in a typical "client-server" deployment, the "client" MAY | |||
| report its overload condition to the "server" for any server | report its overload condition to the "server" for any server | |||
| initiated message exchange. An example of such is the server | initiated message exchange. An example of such is the server | |||
| requesting a re-authentication from a client. | requesting a re-authentication from a client. | |||
| 5.3. Capability Announcement | 5.3. Capability Announcement | |||
| Since the overload control solution relies on the piggybacking | Since the overload control solution relies on the piggybacking | |||
| principle for the overload reporting and the overload control | principle for the overload reporting and the overload control | |||
| endpoint are likely not adjacent peers, finding out whether the other | endpoint are not adjacent peers, finding out whether the other | |||
| endpoint supports the overload control or what is the common traffic | endpoint supports overload control or the common traffic abatement | |||
| abatement algorithm to apply for the traffic. The approach defined | algorithm to apply for the traffic. The approach defined in this | |||
| in this specification for the end-to-end capability announcement | specification for end-to-end capability announcement relies on the | |||
| relies on the exchange of the OC-Supported-Features between the | exchange of the OC-Supported-Features AVPs between the endpoints. | |||
| endpoints. The feature announcement solution also works when carried | The feature announcement solution also works when carried out on | |||
| out on existing applications. For the newly defined application the | existing applications. For the newly defined applications the | |||
| negotiation can be more exact based on the application specification. | negotiation can be more exact based on the application specification. | |||
| The announced set of capabilities MUST NOT change during the life | ||||
| time of the Diameter session (or transaction in case of non-session | Editor's note: Suggest removing the reference to the feature | |||
| maintaining applications). | announcement solution. | |||
| 5.3.1. Reacting Node Endpoint Considerations | 5.3.1. Reacting Node Endpoint Considerations | |||
| The basic principle is that the request message initiating endpoint | The basic principle is that the request message initiating endpoint | |||
| (i.e. the "reacting node") announces its support for the overload | (i.e. the "reacting node") announces its support for the overload | |||
| control mechanism by including in the request message the OC- | control mechanism by including in the request message the OC- | |||
| Supported-Features AVP with those capabilities it supports and is | Supported-Features AVP with the capabilities it supports and is | |||
| willing to use for this Diameter session (or transaction in a case of | willing to use for this Diameter transaction. The lifetime of a | |||
| a non-session state maintaining applications, see Section 3.1.2 for | capability announcement is limited to a single transaction. As a | |||
| more details on Diameter sessions). It is RECOMMENDED that the | result, the reacting node MUST include the capability announcement in | |||
| request message initiating endpoint includes the capability | all request messages. | |||
| announcement into every request regardless it has had prior message | ||||
| exchanges with the give remote endpoint. In a case of a Diameter | ||||
| session maintaining application, sending the OC-Supported-Features | ||||
| AVP in every message is not really necessary after the initial | ||||
| capability announcement or until there is a change in supported | ||||
| features. | ||||
| Once the endpoint that initiated the request message receives an | Once the endpoint that initiated the request message receives an | |||
| answer message from the remote endpoint, it can detect from the | answer message from the remote endpoint, it can detect from the | |||
| received answer message whether the remote endpoint supports the | received answer message whether the remote endpoint supports the | |||
| overload control solution and in a case it does, what features are | overload control solution and in a case it does, what features are | |||
| supported. The support for the overload control solution is based on | supported. The support for the overload control solution is based on | |||
| the presence of the OC-Supported-Features AVP in the Diameter answer | the presence of the OC-Supported-Features AVP in the Diameter answer. | |||
| for existing application. | ||||
| 5.3.2. Reporting Node Endpoint Considerations | 5.3.2. Reporting Node Endpoint Considerations | |||
| When a remote endpoint (i.e. a "reporting node") receives a request | When a remote endpoint (i.e. a "reporting node") receives a request | |||
| message, it can detect whether the request message initiating | message, it can detect whether the request message initiating | |||
| endpoint supports the overload control solution based on the presence | endpoint supports the overload control solution based on the presence | |||
| of the OC-Supported-Features AVP. For the newly defined applications | of the OC-Supported-Features AVP. For the newly defined applications | |||
| the overload control solution support can be part of the application | the overload control solution support can be part of the application | |||
| specification. Based on the content of the OC-Supported-Features AVP | specification. Based on the content of the OC-Supported-Features AVP | |||
| the request message receiving endpoint knows what overload control | the request message receiving endpoint knows what overload control | |||
| functionality the other endpoint supports and then act accordingly | functionality the other endpoint supports and then acts accordingly | |||
| for the subsequent answer messages it initiates. The answer message | for the subsequent answer messages it initiates. The reporting node | |||
| initiating endpoint MAY announce as many supported capabilities as it | MUST include the OC-Supported-Features AVP in all response messages | |||
| has (the announced set is a subject to local policy and | for transactions where the request message included the OC-Supported- | |||
| configuration). However, at least one of the announced capabilities | Features AVP. The reporting node MUST announce support of the single | |||
| MUST be the same as received in the request message. | 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. | ||||
| The answer message initiating endpoint MUST NOT include any overload | Note: There will always be at least one algorithm supported by both | |||
| control solution defined AVPs into its answer messages if the request | the reacting and reporting nodes as all nodes that support DOIC must | |||
| message initiating endpoint has not indicated support at the | support the loss algorithm defined in this document. | |||
| beginning of the created session (or transaction in a case of non- | ||||
| session state maintaining applications). The same also applies if | The handling of feature bits in the OC-Feature-Vector AVP that are | |||
| none of the announced capabilities match between the two endpoints. | 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 | 5.4. Protocol Extensibility | |||
| The overload control solution can be extended, e.g. with new traffic | The overload control solution can be extended, e.g. with new traffic | |||
| abatement algorithms or new functionality. The new features and | abatement algorithms, new report types or other new functionality. | |||
| algorithms MUST be registered with the IANA and for the possible use | The new features and algorithms MUST be registered with the IANA and | |||
| with the OC-Supported-Features for announcing the support for the new | for use with the OC-Supported-Features for announcing the support for | |||
| features (see Section 7 for the required procedures). | the new features (see Section 7 for the required procedures). | |||
| It should be noted that [RFC6733] defined Grouped AVP extension | It should be noted that [RFC6733] defined Grouped AVP extension | |||
| mechanisms also apply. This allows, for example, defining a new | mechanisms also apply. This allows, for example, defining a new | |||
| feature that is mandatory to understand even when piggybacked on an | feature that is mandatory to understand even when piggybacked on an | |||
| existing applications. More specifically, the sub-AVPs inside the | existing applications. More specifically, the sub-AVPs inside the | |||
| OC-OLR AVP MAY have the M-bit set. However, when overload control | OC-OLR AVP MAY have the M-bit set. However, when overload control | |||
| AVPs are piggybacked on top of an existing applications, setting | AVPs are piggybacked on top of an existing applications, setting | |||
| M-bit in sub-AVPs is NOT RECOMMENDED. | M-bit in sub-AVPs is NOT RECOMMENDED. | |||
| 5.5. Overload Report Processing | 5.5. Overload Report Processing | |||
| 5.5.1. Overload Control State | 5.5.1. Overload Control State | |||
| Both reacting and reporting nodes maintain an overload condition | Both reacting and reporting nodes maintain an overload control state | |||
| state for each endpoint (a host or a realm) they communicate with and | (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 | both endpoints have announced support for DOIC. See Sections 4.1 and | |||
| 5.3 for discussion about how the support for DOIC is determined. The | 5.3 for discussion about how the support for DOIC is determined. | |||
| overload condition state SHOULD be able to make a difference between | ||||
| a realm and a specific host in that realm. | ||||
| The overload condition state could include the following information | 5.5.1.1. Overload Control State for Reacting Nodes | |||
| (per host or realm): | ||||
| o The endpoint information (Diameter identity of the realm and/or | A reacting node maintains the following OCS per supported Diameter | |||
| host, application identifier, etc) | application: | |||
| o Reduction percentage | o A host-type Overload Control State for each Destination-Host | |||
| towards which it sends host-type requests and | ||||
| o Validity period timer | 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 Sequence number | |||
| o Supported/selected traffic abatement algorithm | o Validity Duration and Expiry Time | |||
| The overload control state information SHOULD be maintained as long | o Algorithm specific input data (e.g. Reduction Percentage for Loss) | |||
| as the other endpoint is known to support DOIC (based on the presence | ||||
| of the DOIC AVPs or by a future application specification). | 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 | 5.5.2. Reacting Node Considerations | |||
| Once a reacting node receives an OC-OLR AVP from a reporting node, it | Once a reacting node receives an OC-OLR AVP from a reporting node, it | |||
| applies the traffic abatement based on the commonly supported | applies traffic abatement based on the selected algorithm with the | |||
| algorithm with the reporting node and the current overload condition. | reporting node and the current overload condition. The reacting node | |||
| The reacting node learns the reporting node supported abatement | learns the reporting node supported abatement algorithms directly | |||
| algorithms directly from the received answer message containing the | from the received answer message containing the OC-Supported-Features | |||
| OC-Supported-Features AVP or indirectly remembering the previously | AVP. | |||
| used traffic abatement algorithm with the given reporting node. | ||||
| The received OC-Supported-Features AVP does not change the existing | The received OC-Supported-Features AVP does not change the existing | |||
| overload condition and/or traffic abatement algorithm settings if the | overload condition and/or traffic abatement algorithm settings if the | |||
| OC-Sequence-Number AVP contains a value that is equal to the | OC-Sequence-Number AVP contains a value that is equal to the | |||
| previously received/recorded one. If the OC-Supported-Features AVP | previously received/recorded value. If the OC-Supported-Features AVP | |||
| is received for the first time for the reporting node or the OC- | is received for the first time for the reporting node or the OC- | |||
| Sequence-Number AVP value is less than the previously received/ | Sequence-Number AVP value is less than the previously received/ | |||
| recorded one (and is outside the valid overflow window), then either | recorded value (and is outside the valid overflow window), then the | |||
| the sequence number is stale (e.g. an intentional or unintentional | sequence number is stale (e.g. an intentional or unintentional | |||
| replay) and SHOULD be silently discarded. | replay) and SHOULD be silently discarded. | |||
| The OC-OLR AVP contains the necessary information of the overload | ||||
| condition on the reporting node. Similarly to the OC-Supported- | ||||
| Features's sequence numbering, the OC-OLR AVP also has the OC- | ||||
| Sequence-Number AVP and its handling is similar to the one in the OC- | ||||
| Supported-Features AVP. The reacting node MUST update its overload | ||||
| condition state whenever receiving the OC-OLR AVP for the first time | ||||
| or the OC-Sequence-Number sub-AVP indicates a change in the OC-OLR | ||||
| AVP. | ||||
| As described in Section 4.3, the OC-OLR AVP contains the necessary | As described in Section 4.3, the OC-OLR AVP contains the necessary | |||
| information of the overload condition on the reporting node. | information for the overload condition on the reporting node. | |||
| From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting | From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting | |||
| node learns whether the overload condition report concerns a specific | node learns whether the overload condition report concerns a specific | |||
| host (as identified by the Origin-Host AVP of the answer message | 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 | 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). | Origin-Realm AVP of the answer message containing the OC-OLR AVP). | |||
| The reacting node learns the Diameter application to which the | The reacting node learns the Diameter application to which the | |||
| overload report applies from the Application-ID of the answer message | overload report applies from the Application-ID of the answer message | |||
| containing the OC-OLR AVP. The reacting node MUST use this | containing the OC-OLR AVP. The reacting node MUST use this | |||
| information as an input for its traffic abatement algorithm. The | information as an input for its traffic abatement algorithm. The | |||
| idea is that the reacting node applies different handling of the | idea is that the reacting node applies different handling of the | |||
| traffic abatement, whether sent request messages are targeted to a | traffic abatement, whether sent request messages are targeted to a | |||
| specific host (identified by the Diameter-Host AVP in the request) or | 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 | to any host in a realm (when only the Destination-Realm AVP is | |||
| present in the request). Note that future specifications MAY define | present in the request). Note that future specifications MAY define | |||
| new OC-Report-Type AVP values that imply different handling of the | 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 | 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 | Grouped OC-OLR AVP that would define report target in a finer | |||
| granularity than just a host. | 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 | In the context of this specification and the default traffic | |||
| abatement algorithm, the OC-Reduction-Percentage AVP value MUST be | abatement algorithm, the OC-Reduction-Percentage AVP value MUST be | |||
| interpreted in the following way: | interpreted in the following way: | |||
| value == 0 | value == 0 | |||
| Indicates explicitly the end of overload condition and the | Indicates that no traffic reduction has been requested. As a | |||
| reacting node SHOULD NOT apply the traffic abatement algorithm | result the overload state, including the sequence number, MUST NOT | |||
| procedures anymore for the given reporting node (or realm). | 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 | value == 100 | |||
| Indicates that the reporting node (or realm) does not want to | Indicates that the reporting node (or realm) does not want to | |||
| receive any traffic from the reacting node for the application the | receive any traffic from the reacting node for the application the | |||
| report concerns. The reacting node MUST do all measure not to | report concerns. The reacting node MUST not send traffic to the | |||
| send traffic to the reporting node (or realm) as long as the | reporting node (or realm) as long as the overload condition | |||
| overload condition changes or expires. | changes or expires. | |||
| 0 < value < 100 | 0 < value < 100 | |||
| Indicates that the reporting node urges the reacting node to | Indicates that the reporting node urges the reacting node to | |||
| reduce its traffic by a given percentage. For example if the | reduce its traffic by a given percentage. For example if an OC- | |||
| reacting node has been sending 100 packets per second to the | Reduction-Percentage value of 10 has been received, the reacting | |||
| reporting node, then a reception of OC-Reduction-Percentage value | node which would otherwise send 100 requests MUST only send 90 | |||
| of 10 would mean that from now on the reacting node MUST only send | requests to the reporting node. How the reacting node achieves | |||
| 90 packets per second. How the reacting node achieves the "true | the "true reduction" in transactions leading to the sent request | |||
| reduction" transactions leading to the sent request messages is up | messages is up to the implementation. The reacting node MAY | |||
| to the implementation. The reacting node MAY simply drop every | simply drop every 10th request from its output queue and let the | |||
| 10th packet from its output queue and let the generic application | generic application logic try to recover from it. | |||
| logic try to recover from it. | ||||
| If the OC-OLR AVP is received for the first time, the reacting node | If the OC-OLR AVP is received for the first time, the reacting node | |||
| MUST create an overload condition state associated with the related | MUST create overload control state associated with the related realm | |||
| realm or a specific host in the realm identified in the message | or a specific host in the realm identified in the message carrying | |||
| carrying the OC-OLR AVP, as described in Section 5.5.1. | the OC-OLR AVP, as described in Section 5.5.1. | |||
| If the value of the OC-Sequence-Number AVP contained in the received | 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 | OC-OLR AVP is equal to or less than the value stored in an existing | |||
| overload condition state, the received OC-OLR AVP SHOULD be silently | overload control state, the received OC-OLR AVP SHOULD be silently | |||
| discarded. If the value of the OC-Sequence-Number AVP contained in | 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 | the received OC-OLR AVP is greater than the value stored in an | |||
| existing overload condition state or there is no previously recorded | existing overload control state or there is no previously recorded | |||
| sequence number, the reacting node MUST update the overload condition | sequence number, the reacting node MUST update the overload control | |||
| state associated with the realm or the specific node is the realm. | state associated with the realm or the specific node in the realm. | |||
| When an overload condition state is created or updated, the reacting | When an overload control state is created or updated, the reacting | |||
| node MUST apply the traffic abatement requested in the OC-OLR AVP | node MUST apply the traffic abatement requested in the OC-OLR AVP | |||
| using the algorithm announced in the OC-Supported-Features AVP | using the algorithm announced in the OC-Supported-Features AVP | |||
| contained in the received answer message along with the OC-OLR AVP. | contained in the received answer message along with the OC-OLR AVP. | |||
| The validity duration of the overload information contained in the | The validity duration of the overload information contained in the | |||
| OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration | 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 | AVP or is implicitly equals to the default value (5 seconds) if the | |||
| OC-Validity-Duration AVP is absent of the OC-OLR AVP. The reacting | OC-Validity-Duration AVP is absent. The reacting node MUST maintain | |||
| node MUST maintain the validity duration in the overload condition | the validity duration in the overload control state. Once the | |||
| state. Once the validity duration times out, the reacting node MUST | validity duration times out, the reacting node MUST assume the | |||
| assume the overload condition reported in a previous OC-OLR AVP has | overload condition reported in a previous OC-OLR AVP has ended. | |||
| 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 | 5.5.3. Reporting Node Considerations | |||
| A reporting node is a Diameter node inserting an OC-OLR AVP in a | 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 | Diameter message in order to inform a reacting node about an overload | |||
| condition and request Diameter traffic abatement. | condition and request Diameter traffic abatement. | |||
| The operation on the reporting node is rather straight forward. The | The operation on the reporting node is straight forward. The | |||
| reporting node learns the capabilities of the reacting node when it | reporting node learns the capabilities of the reacting node when it | |||
| receives the OC-Supported-Features AVP as part of any Diameter | receives the OC-Supported-Features AVP as part of any Diameter | |||
| request message. If the reporting node shares at least one common | request message. If the reporting node shares at least one common | |||
| feature with the reacting node, then the DOIC can be enabled between | feature with the reacting node, then the DOIC can be enabled between | |||
| these two endpoints. See Section 5.3 for further discussion on the | these two endpoints. See Section 5.3 for further discussion on the | |||
| capability and feature announcement between two endpoints. | capability and feature announcement between two endpoints. | |||
| When a traffic reduction is required due to an overload condition and | When a traffic reduction is required due to an overload condition and | |||
| the overload control solution is supported by the sender of the | the overload control solution is supported by the sender of the | |||
| Diameter request, the reporting node MUST include an OC-Supported- | Diameter request, the reporting node MUST include an OC-Supported- | |||
| Features AVP and an OC-OLR AVP in the corresponding Diameter answer. | Features AVP and an OC-OLR AVP in the corresponding Diameter answer. | |||
| The OC-OLR AVP contains the required traffic reduction and the OC- | The OC-OLR AVP contains the required traffic reduction and the OC- | |||
| Supported-Features AVP indicates the traffic abatement algorithm to | Supported-Features AVP indicates the traffic abatement algorithm to | |||
| apply. This algorithm MUST be one of the algorithms advertised by | apply. This algorithm MUST be one of the algorithms advertised by | |||
| the request sender. | the request sender. | |||
| A reporting node MAY rely on the OC-Validity-Duration AVP values for | A reporting node MAY rely on the OC-Validity-Duration AVP values for | |||
| the implicit overload condition state cleanup on the reacting node. | the implicit overload control state cleanup on the reacting node. | |||
| However, it is RECOMMENDED that the reporting node always explicitly | However, it is RECOMMENDED that the reporting node always explicitly | |||
| indicates the end of a overload condition. | indicates the end of a overload condition. | |||
| The reporting node SHOULD indicate the end of an overload occurrence | ||||
| 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 | 6. Transport Considerations | |||
| In order to reduce overload control introduced additional AVP and | In order to reduce overload control introduced additional AVP and | |||
| message processing it might be desirable/beneficial to signal whether | message processing it might be desirable/beneficial to signal whether | |||
| the Diameter command carries overload control information that should | the Diameter command carries overload control information that should | |||
| be of interest of an overload aware Diameter node. | be of interest of an overload aware Diameter node. | |||
| Should such indication be include is not part of this specification. | Should such indication be include is not part of this specification. | |||
| It has not either been concluded at what layer such possible | It has not either been concluded at what layer such possible | |||
| indication should be. Obvious candidates include transport layer | indication should be. Obvious candidates include transport layer | |||
| skipping to change at page 32, line 4 ¶ | skipping to change at page 35, line 27 ¶ | |||
| 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 | 10. References | |||
| 10.1. Normative References | 10.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 | 10.2. Informative References | |||
| [3GPP.23.203] | [Cx] 3GPP, , "ETSI TS 129 229 V11.4.0", August 2013. | |||
| 3GPP, "Policy and charging control architecture", 3GPP | ||||
| TS 23.203 10.9.0, September 2013. | ||||
| [3GPP.29.229] | ||||
| 3GPP, "Cx and Dx interfaces based on the Diameter | ||||
| protocol; Protocol details", 3GPP TS 29.229 10.5.0, | ||||
| March 2013. | ||||
| [3GPP.29.272] | ||||
| 3GPP, "Evolved Packet System (EPS); Mobility Management | ||||
| Entity (MME) and Serving GPRS Support Node (SGSN) related | ||||
| interfaces based on Diameter protocol", 3GPP TS 29.272 | ||||
| 10.8.0, June 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. | ||||
| [RFC4006] Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J. | [RFC4006] Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J. | |||
| Loughney, "Diameter Credit-Control Application", RFC 4006, | Loughney, "Diameter Credit-Control Application", RFC 4006, | |||
| August 2005. | August 2005. | |||
| [RFC5729] Korhonen, J., Jones, M., Morand, L., and T. Tsou, | [RFC5729] Korhonen, J., Jones, M., Morand, L., and T. Tsou, | |||
| "Clarifications on the Routing of Diameter Requests Based | "Clarifications on the Routing of Diameter Requests Based | |||
| on the Username and the Realm", RFC 5729, December 2009. | on the Username and the Realm", RFC 5729, December 2009. | |||
| [RFC7068] McMurry, E. and B. Campbell, "Diameter Overload Control | [RFC7068] McMurry, E. and B. Campbell, "Diameter Overload Control | |||
| Requirements", RFC 7068, November 2013. | Requirements", RFC 7068, November 2013. | |||
| [S13] 3GPP, , "ETSI TS 129 272 V11.9.0", December 2012. | ||||
| Appendix A. Issues left for future specifications | Appendix A. Issues left for future specifications | |||
| The base solution for the overload control does not cover all | The base solution for the overload control does not cover all | |||
| possible use cases. A number of solution aspects were intentionally | possible use cases. A number of solution aspects were intentionally | |||
| left for future specification and protocol work. | left for future specification and protocol work. | |||
| 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 | |||
| skipping to change at page 33, line 28 ¶ | skipping to change at page 36, line 42 ¶ | |||
| 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 end-point (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] behaviour 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 | |||
| point of view and from the original request initiating Diameter node | point of view and from the original request initiating Diameter node | |||
| point of view. Further, the inclusion of possible additional | point of view. Further, the inclusion of possible additional | |||
| information providing AVPs should be discussed and possible be | information providing AVPs should be discussed and possible be | |||
| recommended to be used. | recommended to be used. | |||
| Appendix B. Examples | Appendix B. Examples | |||
| skipping to change at page 34, line 48 ¶ | skipping to change at page 38, line 13 ¶ | |||
| any specific server. Therefore, an agent may need to forward, or | any specific server. Therefore, an agent may need to forward, or | |||
| originate, multiple overload reports with differing ReportType and | originate, multiple overload reports with differing ReportType and | |||
| Reduction-Percentage values. | Reduction-Percentage values. | |||
| Figure 8 illustrates such a mixed-routing scenario. In this example, | Figure 8 illustrates such a mixed-routing scenario. In this example, | |||
| the servers S1, S2, and S3 handle requests for the realm "realm". | the servers S1, S2, and S3 handle requests for the realm "realm". | |||
| Any of the three can handle requests that are not part of a user | Any of the three can handle requests that are not part of a user | |||
| session (i.e. routed by Destination-Realm). But once a session is | session (i.e. routed by Destination-Realm). But once a session is | |||
| established, all requests in that session must go to the same server. | established, all requests in that session must go to the same server. | |||
| Client Agent S1 S2 S3 | Client Agent S1 S2 S3 | |||
| | | | | | | | | | | | | |||
| |(1) Request (DR:realm) | | | |(1) Request (DR:realm) | | | |||
| |-------->| | | | | |-------->| | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | |Agent selects S1 | | | | |Agent selects S1 | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | |(2) Request (DR:realm) | | | |(2) Request (DR:realm) | | |||
| | |-------->| | | | | |-------->| | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | |S1 overloaded, returns OLR | | | |S1 overloaded, returns OLR | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | |(3) Answer (OR:realm,OH:S1,OLR:RT=DH) | | |(3) Answer (OR:realm,OH:S1,OLR:RT=DH) | |||
| | |<--------| | | | | |<--------| | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | |sees OLR,routes DR traffic to S2&S3 | | |sees OLR,routes DR traffic to S2&S3 | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| |(4) Answer (OR:realm,OH:S1, OLR:RT=DH) | | |(4) Answer (OR:realm,OH:S1, OLR:RT=DH) | | |||
| |<--------| | | | | |<--------| | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| |Client throttles requests with DH:S1 | | |Client throttles requests with DH:S1 | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| |(5) Request (DR:realm) | | | |(5) Request (DR:realm) | | | |||
| |-------->| | | | | |-------->| | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | |Agent selects S2 | | | | |Agent selects S2 | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | |(6) Request (DR:realm) | | | |(6) Request (DR:realm) | | |||
| | |------------------>| | | | |------------------>| | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | |S2 is overloaded... | | | | |S2 is overloaded... | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | |(7) Answer (OH:S2, OLR:RT=DH)| | | |(7) Answer (OH:S2, OLR:RT=DH)| | |||
| | |<------------------| | | | |<------------------| | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | |Agent sees OLR, realm now overloaded | | |Agent sees OLR, realm now overloaded | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| |(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R) | |(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R) | |||
| |<--------| | | | | |<--------| | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| |Client throttles DH:S1, DH:S2, and DR:realm | |Client throttles DH:S1, DH:S2, and DR:realm | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| Figure 8: Mix of Destination-Host and Destination-Realm Routed | Figure 8: Mix of Destination-Host and Destination-Realm Routed | |||
| Requests | Requests | |||
| 1. The client sends a request with no Destination-Host AVP (that is, | 1. The client sends a request with no Destination-Host AVP (that is, | |||
| a Destination-Realm routed request.) | a Destination-Realm routed request.) | |||
| 2. The agent follows local policy to select a server from its peer | 2. The agent follows local policy to select a server from its peer | |||
| table. In this case, the agent selects S2 and forwards the | table. In this case, the agent selects S2 and forwards the | |||
| request. | request. | |||
| skipping to change at page 37, line 31 ¶ | skipping to change at page 41, line 4 ¶ | |||
| 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 | ||||
| Oracle | Oracle | |||
| 17210 Campbell Road | 7460 Warren Parkway | |||
| Dallas, Texas 75254 | Frisco, Texas 75034 | |||
| United States | United States | |||
| Email: srdonovan@usdonovans.com | Email: srdonovan@usdonovans.com | |||
| Ben Campbell | Ben Campbell | |||
| Oracle | Oracle | |||
| 17210 Campbell Road | 7460 Warren Parkway | |||
| Dallas, Texas 75254 | Frisco, Texas 75034 | |||
| United States | United States | |||
| Email: ben@nostrum.com | Email: ben@nostrum.com | |||
| Lionel Morand | Lionel Morand | |||
| Orange Labs | Orange Labs | |||
| 38/40 rue du General Leclerc | 38/40 rue du General Leclerc | |||
| Issy-Les-Moulineaux Cedex 9 92794 | Issy-Les-Moulineaux Cedex 9 92794 | |||
| France | France | |||
| Phone: +33145296257 | Phone: +33145296257 | |||
| Email: lionel.morand@orange.com | Email: lionel.morand@orange.com | |||
| End of changes. 96 change blocks. | ||||
| 520 lines changed or deleted | 700 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/ | ||||