| < draft-ietf-dime-ovli-00.txt | draft-ietf-dime-ovli-01.txt > | |||
|---|---|---|---|---|
| Diameter Maintenance and Extensions J. Korhonen, Ed. | Diameter Maintenance and Extensions J. Korhonen, Ed. | |||
| (DIME) Broadcom | (DIME) Broadcom | |||
| Internet-Draft S. Donovan | Internet-Draft S. Donovan | |||
| Intended status: Standards Track B. Campbell | Intended status: Standards Track B. Campbell | |||
| Expires: May 26, 2014 Oracle | Expires: June 20, 2014 Oracle | |||
| November 22, 2013 | L. Morand | |||
| Orange Labs | ||||
| December 17, 2013 | ||||
| Diameter Overload Indication Conveyance | Diameter Overload Indication Conveyance | |||
| draft-ietf-dime-ovli-00.txt | draft-ietf-dime-ovli-01.txt | |||
| Abstract | Abstract | |||
| This specification documents a Diameter Overload Control (DOC) base | This specification documents a Diameter Overload Control (DOC) base | |||
| solution and the dissemination of the overload report information. | solution and the dissemination of the overload report information. | |||
| Requirements | Requirements | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 41 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on May 26, 2014. | This Internet-Draft will expire on June 20, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 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 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Architectural Assumptions . . . . . . . . . . . . . . . . 6 | 3.1. Architectural Assumptions . . . . . . . . . . . . . . . . 5 | |||
| 3.1.1. Application Classification . . . . . . . . . . . . . . 7 | 3.1.1. Application Classification . . . . . . . . . . . . . . 5 | |||
| 3.1.2. Application Type Overload Implications . . . . . . . . 8 | 3.1.2. Application Type Overload Implications . . . . . . . . 6 | |||
| 3.1.3. Request Transaction Classification . . . . . . . . . . 9 | 3.1.3. Request Transaction Classification . . . . . . . . . . 8 | |||
| 3.1.4. Request Type Overload Implications . . . . . . . . . . 10 | 3.1.4. Request Type Overload Implications . . . . . . . . . . 9 | |||
| 3.1.5. Diameter Deployment Scenarios . . . . . . . . . . . . 11 | 3.1.5. Diameter Agent Behaviour . . . . . . . . . . . . . . . 10 | |||
| 3.1.6. Diameter Agent Behaviour . . . . . . . . . . . . . . . 12 | 3.1.6. Simplified Example Architecture . . . . . . . . . . . 11 | |||
| 3.1.7. Simplified Example Architecture . . . . . . . . . . . 13 | 3.2. Conveyance of the Overload Indication . . . . . . . . . . 11 | |||
| 3.2. Conveyance of the Overload Indication . . . . . . . . . . 14 | 3.2.1. DOIC Capability Discovery . . . . . . . . . . . . . . 12 | |||
| 3.2.1. Negotiation and Versioning . . . . . . . . . . . . . . 14 | 3.3. Overload Condition Indication . . . . . . . . . . . . . . 12 | |||
| 3.2.2. Transmission of the Attribute Value Pairs . . . . . . 14 | 4. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.3. Overload Condition Indication . . . . . . . . . . . . . . 15 | 4.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 13 | |||
| 4. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 15 | 4.2. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 14 | |||
| 4.1. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 15 | 4.3. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.2. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . . 16 | 4.4. OC-Sequence-Number AVP . . . . . . . . . . . . . . . . . . 15 | |||
| 4.3. TimeStamp AVP . . . . . . . . . . . . . . . . . . . . . . 17 | 4.5. OC-Validity-Duration AVP . . . . . . . . . . . . . . . . . 15 | |||
| 4.4. ValidityDuration AVP . . . . . . . . . . . . . . . . . . . 17 | 4.6. OC-Report-Type AVP . . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.5. ReportType AVP . . . . . . . . . . . . . . . . . . . . . . 17 | 4.7. OC-Reduction-Percentage AVP . . . . . . . . . . . . . . . 16 | |||
| 4.6. Reduction-Percentage AVP . . . . . . . . . . . . . . . . . 18 | 4.8. Attribute Value Pair flag rules . . . . . . . . . . . . . 17 | |||
| 4.7. 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 . . . . . . . . . . . . . . . . . 23 | 5.3.1. Reacting Node Endpoint Considerations . . . . . . . . 22 | |||
| 5.3.1. Request Message Initiator Endpoint Considerations . . 24 | 5.3.2. Reporting Node Endpoint Considerations . . . . . . . . 23 | |||
| 5.3.2. Answer Message Initiating Endpoint Considerations . . 24 | 5.4. Protocol Extensibility . . . . . . . . . . . . . . . . . . 23 | |||
| 5.4. Protocol Extensibility . . . . . . . . . . . . . . . . . . 25 | 5.5. Overload Report Processing . . . . . . . . . . . . . . . . 24 | |||
| 5.5. Overload Report Processing . . . . . . . . . . . . . . . . 25 | 5.5.1. Overload Control State . . . . . . . . . . . . . . . . 24 | |||
| 5.5.1. Sender Endpoint Considerations . . . . . . . . . . . . 25 | 5.5.2. Reacting Node Considerations . . . . . . . . . . . . . 24 | |||
| 5.5.2. Receiver Endpoint Considerations . . . . . . . . . . . 25 | 5.5.3. Reporting Node Considerations . . . . . . . . . . . . 27 | |||
| 6. Transport Considerations . . . . . . . . . . . . . . . . . . . 25 | 6. Transport Considerations . . . . . . . . . . . . . . . . . . . 27 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 7.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 26 | 7.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 7.2. New registries . . . . . . . . . . . . . . . . . . . . . . 26 | 7.2. New registries . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | ||||
| 8.1. Potential Threat Modes . . . . . . . . . . . . . . . . . . 27 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | |||
| 8.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 28 | 8.1. Potential Threat Modes . . . . . . . . . . . . . . . . . . 28 | |||
| 8.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 28 | 8.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 30 | |||
| 8.4. End-to End-Security Issues . . . . . . . . . . . . . . . . 28 | 8.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 30 | |||
| 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 8.4. End-to End-Security Issues . . . . . . . . . . . . . . . . 30 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 30 | 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . . 30 | 10.1. Normative References . . . . . . . . . . . . . . . . . . . 32 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . . 31 | 10.2. Informative References . . . . . . . . . . . . . . . . . . 32 | |||
| Appendix A. Issues left for future specifications . . . . . . . . 31 | Appendix A. Issues left for future specifications . . . . . . . . 33 | |||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 31 | A.1. Additional traffic abatement algorithms . . . . . . . . . 33 | |||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . . 31 | A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . . 31 | A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . . 33 | |||
| Appendix B. Conformance to Requirements . . . . . . . . . . . . . 32 | Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| Appendix C. Examples . . . . . . . . . . . . . . . . . . . . . . 41 | B.1. Mix of Destination-Realm routed requests and | |||
| C.1. 3GPP S6a interface overload indication . . . . . . . . . . 41 | Destination-Host routed requests . . . . . . . . . . . . . 33 | |||
| C.2. 3GPP PCC interfaces overload indication . . . . . . . . . 41 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| C.3. Mix of Destination-Realm routed requests and | ||||
| Destination-Host reouted requests . . . . . . . . . . . . 41 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 41 | ||||
| 1. Introduction | 1. Introduction | |||
| This specification defines a base solution for the 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 | |||
| [I-D.ietf-dime-overload-reqs]. Note that the overload control | [RFC7068]. Note that the overload control solution defined in this | |||
| solution defined in this specification does not address all the | specification does not address all the requirements listed in | |||
| requirements listed in [I-D.ietf-dime-overload-reqs]. A number of | [RFC7068]. A number of overload control related features are left | |||
| overload control related features are left for the future | for the future specifications. | |||
| specifications. See Appendix A for more detailed discussion on | ||||
| those. | ||||
| 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 | Server Farm | |||
| A set of Diameter servers that can handle any request for a given | A set of Diameter servers that can handle any request for a given | |||
| set of Diameter applications. While these servers support the | set of Diameter applications. While these servers support the | |||
| same set of applications, they do not necessarily all have the | same set of applications, they do not necessarily all have the | |||
| same capacity. An individual server farm might also support a | same capacity. An individual server farm might also support a | |||
| subset of the users for a Diameter Realm. | subset of the users for a Diameter Realm. A server farm may host | |||
| a single or multiple realms. | ||||
| [OpenIssue: Is a server farm assumed to support a single realm? | ||||
| That is, does it support a set of applications in a single realm?] | ||||
| Server Front End | ||||
| A Server Front End (SFE) is a role that can be performed by a | ||||
| Diameter agent -- either a relay or a proxy -- that sits between | ||||
| Diameter clients and a Server Farm. An SFE can perform various | ||||
| functions for the server farm it sits in front of. This includes | ||||
| some or all of the following functions: | ||||
| * Diameter Routing | ||||
| * Diameter layer load balancing | ||||
| * Load Management | ||||
| * Overload Management | ||||
| * Topology Hiding | ||||
| * Server Farm Identity Management | ||||
| [OpenIssue: We used the concept of a server farm and SFE for | ||||
| internal discussions. Do we still need those concepts to explain | ||||
| the mechanism? It doesn't seem like we use them much.] | ||||
| Diameter Routing: | Diameter Routing: | |||
| Diameter Routing determines the destination of Diameter messages | Diameter Routing between non-adjacent nodes relies on the | |||
| addressed to either a Diameter Realm and Application in general, | Destination-Realm AVP to determine the Diameter realm in which the | |||
| or to a specific server using Destination-Host. This function is | request needs to be processed. A Destination-Host AVP may also be | |||
| defined in [RFC6733]. Application level routing specifications | present in the request to address a specific server inside the | |||
| that expand on [RFC6733] also exist. | 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: | |||
| Diameter layer load balancing allows Diameter requests to be | Diameter layer load balancing allows Diameter requests to be | |||
| distributed across the set of servers. Definition of this | distributed across the set of servers. Definition of this | |||
| function is outside the scope of this document. | function is outside the scope of this document. | |||
| Load Management: | ||||
| This functionality ensures that the consolidated load state for | ||||
| the server farm is collected, and processed. The exact algorithm | ||||
| for computing the load at the SFE is implementation specific but | ||||
| enough semantic of the conveyed load information needs to be | ||||
| specified so that deterministic behavior can be ensured. | ||||
| Overload Management: | ||||
| The SFE is the entity that understands the consolidated overload | ||||
| state for the server farm. Just as it is outside the scope of | ||||
| this document to specify how a Diameter server calculates its | ||||
| overload state, it is also outside the scope of this document to | ||||
| specify how an SFE calculates the overload state for the set of | ||||
| servers. This document describes how the SFE communicates | ||||
| Overload information to Diameter Clients. | ||||
| Topology Hiding: | Topology Hiding: | |||
| Topology Hiding is loosely defined as ensuring that no Diameter | Topology Hiding is loosely defined as ensuring that no Diameter | |||
| topology information about the server farm can be discovered from | topology information about a Diameter network can be discovered | |||
| Diameter messages sent outside a predefined boundary (typically an | from Diameter messages sent outside a predefined boundary | |||
| administrative domain). This includes obfuscating identifiers and | (typically an administrative domain). This includes obfuscating | |||
| address information of Diameter entities in the server farm. It | identifiers and address information of Diameter entities in the | |||
| can also include hiding the number of various Diameter entities in | Diameter network. It can also include hiding the number of | |||
| the server farm. Identifying information can occur in many | various Diameter entities in the Diameter network. Identifying | |||
| Diameter Attribute-Value Pairs (AVPs), including Origin-Host, | information can occur in many Diameter Attribute-Value Pairs | |||
| Destination-Host, Route-Record, Proxy-Info, Session-ID and other | (AVPs), including Origin-Host, Destination-Host, Route-Record, | |||
| AVPs. | Proxy-Info, Session-ID and other AVPs. | |||
| Server Farm Identity Management: | ||||
| Server Farm Identity Management (SFIM) is a mechanism that can be | ||||
| used by the SFE to present a single Diameter identity that can be | ||||
| used by clients to send Diameter requests to the server farm. | ||||
| This requires that the SFE modifies Origin-Host information in | ||||
| answers coming from servers in the server farm. An agent that | ||||
| performs SFIM appears as a server from the client's perspective. | ||||
| 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 | |||
| skipping to change at page 6, line 40 ¶ | skipping to change at page 5, line 38 ¶ | |||
| 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 actually 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 Oveload Report. | OLR Overload Report. | |||
| 3. Solution Overview | 3. Solution Overview | |||
| 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 underly 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 | |||
| overload reports. | overload reports. | |||
| Section 8.1 of [RFC6733] defines two state machines that imply two | Section 8.1 of [RFC6733] defines two state machines that imply two | |||
| types of applications, session-less and session-based. The primary | types of applications, session-less and session-based applications. | |||
| differentiator between these types of applications is the lifetime of | The primary difference between these types of applications is the | |||
| Session-IDs. | lifetime of Session-Ids. | |||
| For session-based applications, the session-id is used to tie | For session-based applications, the Session-Id is used to tie | |||
| multiple requests into a single session. | multiple requests into a single session. | |||
| In session-less applications, the lifetime of the session-id is a | In session-less applications, the lifetime of the Session-Id is a | |||
| single Diameter transaction. | single Diameter transaction, i.e. the session is implicitly | |||
| terminated after a single Diameter transaction and a new Session-Id | ||||
| The 3GPP-defined S6a application is an example of a session-less | is generated for each Diameter request. | |||
| application. The following, copied from section 7.1.4 of 29.272, | ||||
| explicitly states that sessions are implicitly terminated and that | ||||
| the server does not maintain session state: | ||||
| "Between the MME and the HSS and between the SGSN and the HSS and | ||||
| between the MME and the EIR, Diameter sessions shall be implicitly | ||||
| terminated. An implicitly terminated session is one for which the | ||||
| server does not maintain state information. The client shall not | ||||
| send any re-authorization or session termination requests to the | ||||
| server. | ||||
| The Diameter base protocol includes the Auth-Session-State AVP as | ||||
| the mechanism for the implementation of implicitly terminated | ||||
| sessions. | ||||
| The client (server) shall include in its requests (responses) the | ||||
| Auth-Session-State AVP set to the value NO_STATE_MAINTAINED (1), | ||||
| as described in [RFC6733]. As a consequence, the server shall not | ||||
| maintain any state information about this session and the client | ||||
| shall not send any session termination request. Neither the | ||||
| Authorization-Lifetime AVP nor the Session-Timeout AVP shall be | ||||
| present in requests or responses." | ||||
| 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: Requests within a stateless application have | Stateless applications: | |||
| no relationship to each other. The 3GPP defined S13 application | ||||
| is an example of a stateless application. | ||||
| Pseudo-session applications: While this class of application does | Requests within a stateless application have no relationship to | |||
| not use the Diameter Session-ID AVP to correlate requests, there | each other. The 3GPP defined S13 application is an example of a | |||
| is an implied ordering of transactions defined by the application. | stateless application [3GPP.29.272], where only a Diameter command | |||
| The 3GPP defined Cx application [reference] is an example of a | is defined between a client and a server and no state is | |||
| pseudo-session application. | maintained between two consecutive transactions. | |||
| [OpenIssue: Do we assume that all requests in a pseudo-session | Pseudo-session applications: | |||
| typically need to go to the same server?] | ||||
| The accounting application defined in [RFC6733] and the Credit- | Applications that do not rely on the Session-Id AVP for | |||
| Control application defined in [RFC4006] are examples of Diameter | correlation of application messages related to the same session | |||
| session-based applications. | but use other session-related information in the Diameter requests | |||
| for this purpose. The 3GPP defined Cx application [3GPP.29.229] | ||||
| is an example of a pseudo-session application. | ||||
| The Credit-Control application defined in [RFC4006] is an example of | ||||
| a Diameter session-based application. | ||||
| The handling of overload reports must take the type of application | 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 | |||
| reported by a Diameter entity. This discussion focuses on the type | reported by a Diameter entity. This discussion focuses on the type | |||
| of application. Section 3.1.3 discusses considerations for handling | of application. Section 3.1.3 discusses considerations for handling | |||
| various request types when the target server is known to be in an | various request types when the target server is known to be in an | |||
| overloaded state. Section 3.1.5 discusses considerations for | overloaded state. | |||
| handling overload conditions based on the network deployment | ||||
| scenario. | ||||
| These discussions assume that the strategy for mitigating the | These discussions assume that the strategy for mitigating the | |||
| reported overload is to reduce the overall workload sent to the | reported overload is to reduce the overall workload sent to the | |||
| overloaded entity. The concept of applying overload treatment to | overloaded entity. The concept of applying overload treatment to | |||
| requests targeted for an overloaded Diameter entity is inherent to | requests targeted for an overloaded Diameter entity is inherent to | |||
| this discussion. The method used to reduce offered load is not | this discussion. The method used to reduce offered load is not | |||
| specified here but could include routing requests to another Diameter | specified here but could include routing requests to another Diameter | |||
| entity known to be able to handle them, or it could mean rejecting | entity known to be able to handle them, or it could mean rejecting | |||
| certain requests. For a Diameter agent, rejecting requests will | certain requests. For a Diameter agent, rejecting requests will | |||
| usually mean generating appropriate Diameter error responses. For a | usually mean generating appropriate Diameter error responses. For a | |||
| Diameter client, rejecting requests will depend upon the application. | Diameter client, rejecting requests will depend upon the application. | |||
| For example, it could mean giving an indication to the entity | For example, it could mean giving an indication to the entity | |||
| requesting the Diameter service that the network is busy and to try | requesting the Diameter service that the network is busy and to try | |||
| again later. | again later. | |||
| Stateless applications: By definition there is no relationship | Stateless applications: | |||
| between individual requests in a stateless application. As a | ||||
| result, when a request is sent or relayed to an overloaded | ||||
| Diameter entity - either a Diameter Server or a Diameter Agent - | ||||
| the sending or relaying entity can choose to apply the overload | ||||
| treatment to any request targeted for the overloaded entity. | ||||
| Pseudo-stateful applications: Pseudo stateful applications are also | By definition there is no relationship between individual requests | |||
| stateless applications in that there is no session Diameter state | in a stateless application. As a result, when a request is sent | |||
| maintained between transactions. There is, however, an implied | or relayed to an overloaded Diameter entity - either a Diameter | |||
| ordering of requests. As a result, decisions about which | Server or a Diameter Agent - the sending or relaying entity can | |||
| transactions to reject as a result of an overloaded entity could | choose to apply the overload treatment to any request targeted for | |||
| take the command-code of the request into consideration. This | the overloaded entity. | |||
| generally means that transactions later in the sequence of | ||||
| transactions should be given more favorable treatment than | ||||
| messages earlier in the sequence. This is because more work has | ||||
| already been done by the Diameter network for those transactions | ||||
| that occur later in the sequence. Rejecting them could result in | ||||
| increasing the load on the network as the transactions earlier in | ||||
| the sequence might also need to be repeated. | ||||
| Stateful applications: Overload handling for stateful applications | Pseudo-session applications: | |||
| must take into consideration the work associated with setting up | ||||
| an maintaining a session. As such, the entity handling overload | For pseudo-session applications, there is an implied ordering of | |||
| of a Diameter entity for a stateful application might tend to | requests. As a result, decisions about which requests towards an | |||
| reject new session requests before rejecting intra-session | overloaded entity to reject could take the command code of the | |||
| requests. In addition, session ending requests might be given a | request into consideration. This generally means that | |||
| lower priority of being rejected as rejecting session ending | transactions later in the sequence of transactions should be given | |||
| requests could result in session status being out of sync between | more favorable treatment than messages earlier in the sequence. | |||
| the Diameter clients and servers. Nodes that reject mid-session | This is because more work has already been done by the Diameter | |||
| network for those transactions that occur later in the sequence. | ||||
| Rejecting them could result in increasing the load on the network | ||||
| as the transactions earlier in the sequence might also need to be | ||||
| repeated. | ||||
| Session-based applications: | ||||
| Overload handling for session-based applications must take into | ||||
| consideration the work load associated with setting up and | ||||
| maintaining a session. As such, the entity sending requests | ||||
| towards an overloaded Diameter entity for a session-based | ||||
| application might tend to reject new session requests prior to | ||||
| rejecting intra-session requests. In addition, session ending | ||||
| requests might be given a lower probability of being rejected as | ||||
| rejecting session ending requests could result in session status | ||||
| being out of sync between the Diameter clients and servers. | ||||
| Application designers that would decide to reject mid-session | ||||
| requests will need to consider whether the rejection invalidates | requests will need to consider whether the rejection invalidates | |||
| the session, and any session clean-up that may be required. | the session and any resulting session clean-up procedures. | |||
| 3.1.3. Request Transaction Classification | 3.1.3. Request Transaction Classification | |||
| Independent Request: An independent request is not a part of a | Independent Request: | |||
| Diameter session and, as such, the lifetime of the session-id is | ||||
| constrained to an individual transaction. | ||||
| Session-Initiating Request: A session-initiating request is the | An independent request is not correlated to any other requests | |||
| initial message that establishes a Diameter session. The ACR | and, as such, the lifetime of the session-id is constrained to an | |||
| message defined in [RFC6733] is an example of a session-initiating | individual transaction. | |||
| request. | ||||
| Correlated Session-Initiating Request: There are cases, most notably | Session-Initiating Request: | |||
| in the 3GPP PCC architecture, where multiple Diameter sessions are | ||||
| correlated and must be handled by the same Diameter server. This | ||||
| is a special case of a Session-Initiating Request. Gx CCR-I | ||||
| requests and Rx AAR messages are examples of correlated session- | ||||
| initiating requests. | ||||
| [OpenIssue: The previous paragraph needs references.] | A session-initiating request is the initial message that | |||
| establishes a Diameter session. The ACR message defined in | ||||
| [RFC6733] is an example of a session-initiating request. | ||||
| Intra-Session Request: An intra session request is a request that | Correlated Session-Initiating Request: | |||
| uses a session-id for an already established request. An intra | ||||
| There are cases when multiple session-initiated requests must be | ||||
| correlated and managed by the same Diameter server. It is notably | ||||
| the case in the 3GPP PCC architecture [3GPP.23.203], where | ||||
| multiple apparently independent Diameter application sessions are | ||||
| actually correlated and must be handled by the same Diameter | ||||
| server. | ||||
| Intra-Session Request: | ||||
| An intra session request is a request that uses the same | ||||
| Session-Id than the one used in a previous request. An intra | ||||
| session request generally needs to be delivered to the server that | session request generally needs to be delivered to the server that | |||
| handled the session creating request for the session. The STR | handled the session creating request for the session. The STR | |||
| message defined in [RFC6733] is an example of an intra-session | message defined in [RFC6733] is an example of an intra-session | |||
| requests. CCR-U and CCR-T requests defined in [RFC4006] are | requests. | |||
| further examples of intra-session requests. | ||||
| Pseudo-Session Requests: Pseudo session requests are independent | Pseudo-Session Requests: | |||
| requests and, as such, the request transactions are not tied | ||||
| together using the Diameter session-id. There exist Diameter | Pseudo-session requests are independent requests and do not use | |||
| the same Session-Id but are correlated by other session-related | ||||
| information contained in the request. There exists Diameter | ||||
| applications that define an expected ordering of transactions. | 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. | 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. | decisions about which requests should be throttled first. The | |||
| following list of request treatment regarding throttling is provided | ||||
| Independent requests: Independent requests can be given equal | as guidelines for application designers when implementing the | |||
| treatment when making throttling decisions. | Diameter overload control mechanism described in this document. | |||
| Exact behavior regarding throttling must be defined per application. | ||||
| Session-creating requests: Session-creating requests represent more | ||||
| work than independent or intra-session requests. As such, | ||||
| throttling decisions might favor intra-session requests over | ||||
| session-creating requests. Individual session-creating requests | ||||
| can be given equal treatment when making throttling decisions. | ||||
| Correlated session-creating requests: A Request that results in a | ||||
| new binding, where the binding is used for routing of subsequent | ||||
| session-creating requests, represents more work than other | ||||
| requests. As such, these requests might be throttled more | ||||
| frequently than other request types. | ||||
| Pseudo-session requests: Throttling decisions for pseudo-session | ||||
| requests can take where individual requests fit into the overall | ||||
| sequence of requests within the pseudo session. Requests that are | ||||
| earlier in the sequence might be throttled more aggressively than | ||||
| requests that occur later in the sequence. | ||||
| Intra-session requests There are two classes of intra-sessions | ||||
| requests. The first is a request that ends a session. The second | ||||
| is a request that is used to convey session related state between | ||||
| the Diameter client and server. Session ending request should be | ||||
| throttled less aggressively in order to keep session state | ||||
| consistent between the client and server, and possibly reduce the | ||||
| sessions impact on the overloaded entity. The default handling of | ||||
| other intra-session requests might be to treat them equally when | ||||
| making throttling decisions. There might also be application | ||||
| level considerations whether some request types are favored over | ||||
| others. | ||||
| 3.1.5. Diameter Deployment Scenarios | ||||
| This section discusses various Diameter network deployment scenarios | ||||
| and the implications of those deployment models on handling of | ||||
| overload reports. | ||||
| The scenarios vary based on the following: | ||||
| o The presence or absence of Diameter agents | ||||
| o Which Diameter entities support the DOC extension | ||||
| o The amount of the network topology understood by Diameter clients | ||||
| o The complexity of the Diameter server deployment for a Diameter | ||||
| application | ||||
| o Number of Diameter applications supported by Diameter clients and | ||||
| Diameter servers | ||||
| Without consideration for which elements support the DOC extension, | ||||
| the following is a representative list of deployment scenarios: | ||||
| o Client --- Server | ||||
| o Client --- Multiple equivalent servers | ||||
| o Client --- Agent --- Multiple equivalent servers | ||||
| o Client --- Agent [ --- Agent ] --- Partitioned server | ||||
| o Client --- Edge Agent [ --- Edge Agent] --- { Multiple Equivalent | ||||
| Servers | Partitioned Servers } | ||||
| o Client --- Session Correlating Agent --- Multiple Equivalent | ||||
| Servers | ||||
| [OpenIssue: Do the "multiple equivalent servers" cases change for | ||||
| session-stateful applications? Do we need to distinguish equivalence | ||||
| for session-initiation requests vs intra-session requests?] | ||||
| The following is a list of representative DOC deployment scenarios: | Independent requests: | |||
| o Direct connection between a DOC client and a DOC server | Independent requests can be given equal treatment when making | |||
| throttling decisions. | ||||
| o DOC client --- non-DOC agent --- DOC server | Session-initiating requests: | |||
| o DOC client --- DOC agent --- DOC server | Session-initiating requests represent more work than independent | |||
| or intra-session requests. Moreover, session-initiating requests | ||||
| are typically followed by other related session-related requests. | ||||
| As such, as the main objective of the overload control is to | ||||
| reduce the total number of requests sent to the overloaded entity, | ||||
| throttling decisions might favor allowing intra-session requests | ||||
| over session-initiating requests. Individual session-initiating | ||||
| requests can be given equal treatment when making throttling | ||||
| decisions. | ||||
| o Non-DOC client --- DOC agent --- DOC server | Correlated session-initiating requests: | |||
| o Non-DOC client --- DOC agent --- Mix of DOC and non-DOC servers | A Request that results in a new binding, where the binding is used | |||
| for routing of subsequent session-initiating requests to the same | ||||
| server, represents more work load than other requests. As such, | ||||
| these requests might be throttled more frequently than other | ||||
| request types. | ||||
| o DOC client --- agent --- Partitioned/Segmented DOC server | Pseudo-session requests: | |||
| o DOC client --- agent --- agent --- Partitioned/Segmented DOC | Throttling decisions for pseudo-session requests can take into | |||
| server | consideration where individual requests fit into the overall | |||
| sequence of requests within the pseudo session. Requests that are | ||||
| earlier in the sequence might be throttled more aggressively than | ||||
| requests that occur later in the sequence. | ||||
| o DOC client --- edge agent --- edge agent --- DOC server | Intra-session requests | |||
| [OpenIssue: In the last 3 list entries, are the agents DOC or non- | There are two classes of intra-sessions requests. The first class | |||
| DOC?] | consists of requests that terminate a session. The second one | |||
| contains the set of requests that are used by the Diameter client | ||||
| and server to maintain the ongoing session state. Session | ||||
| terminating requests should be throttled less aggressively in | ||||
| order to gracefully terminate sessions, allow clean-up of the | ||||
| related resources (e.g. session state) and get rid of the need for | ||||
| other intra-session requests, reducing the session management | ||||
| impact on the overloaded entity. The default handling of other | ||||
| intra-session requests might be to treat them equally when making | ||||
| throttling decisions. There might also be application level | ||||
| considerations whether some request types are favored over others. | ||||
| 3.1.6. Diameter Agent Behaviour | 3.1.5. Diameter Agent Behaviour | |||
| 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 behaviour 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, and | [RFC6733]. These include, among other tasks, topology hiding, or | |||
| acting as a server front end for a server farm of real Diameter | agent acting as a Server Front End (SFE) for a farm of Diameter | |||
| servers. | servers. | |||
| Since the solution defined in this specification must not break the | Since the solution defined in this specification must not break the | |||
| Diameter base protocol [RFC6733] at any time, great care has to be | Diameter base protocol [RFC6733] at any time, great care has to be | |||
| taken not to assume functionality from the Diameter agents that would | taken not to assume functionality from the Diameter agents that would | |||
| break base protocol behavior, or to assume agent functionality beyond | break base protocol behavior, or to assume agent functionality beyond | |||
| the Diameter base protocol. Effectively this means the following | the Diameter base protocol. Effectively this means the following | |||
| from a Diameter agent: | from a Diameter agent: | |||
| o If a Diameter agent presents itself as the "end node", perhaps | o If a Diameter agent presents itself as the "end node", as an agent | |||
| acting as an topology hiding SFE, the DOC mechanism MUST NOT leak | acting as an topology hiding SFE, the agent is the final | |||
| information of the Diameter nodes behind it. From the Diameter | destination of requests initiated by Diameter clients, the | |||
| client point of view the final destination to its requests and the | original source for the corresponding answers and server-initiated | |||
| original source for the answers MUST be the Diameter agent. This | requests. As a consequence, the DOIC mechanism MUST NOT leak | |||
| requirement means that such a Diameter agent acts as a back-to- | information of the Diameter nodes behind it. This requirement | |||
| back-agent for DOC purposes. How the agent in this case appears | means that such a Diameter agent acts as a back-to-back-agent for | |||
| to the Diameter nodes it is representing (i.e. the real Diameter | DOIC purposes. How the Diameter agent in this case appears to the | |||
| servers), is an implementation and a deployment specific within | Diameter servers in the farm, is specific to the implementation | |||
| the realm the Diameter agent is deployed. | and deployment within the realm the Diameter agent is deployed. | |||
| o This requirement also implies that if the Diameter agent does not | ||||
| impersonate the servers behind it, the Diameter dialogue is | ||||
| established between clients and servers and any overload | ||||
| information received by a client would be from a given server | ||||
| identified by the Origin-Host identity. | ||||
| [OpenIssue: We've discussed multiple situations where an agent might | o If the Diameter agent does not impersonate the servers behind it, | |||
| insert an OLR. I don't think we mean to force them to always perform | the Diameter dialogue is established between clients and servers | |||
| topology hiding or SFIM in order to do so. We cannot assume that an | and any overload information received by a client would be from | |||
| OLR is always "from" or "about" the Origin-Host. Also, the section | the server identified by the Origin-Host identity contained in the | |||
| seems to assume that topology hiding agents act as b2b overload | Diameter message. | |||
| agents, but non-topology hiding agents never do. It don't think | ||||
| that's the right abstraction. It's possible that topology-hiding | ||||
| agents must do this, but I don't think we can preclude non-topology | ||||
| hiding agents from also doing it, at least some of the time.] | ||||
| 3.1.7. 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 control. See Section 5.1 for more discussion and details | overload information conveyance. See Section 5.1 for more discussion | |||
| how different Diameter nodes fit into the architecture from the DOIC | and details how different Diameter nodes fit into the architecture | |||
| point of view. | from the DOIC point of view. | |||
| Realm X 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 | ||||
| 1) <-----------------------------------------------> | ||||
| Diameter Application Y | ||||
| Overload Indication A Overload Indication A' | Overload Indication A Overload Indication A' | |||
| 1) <----------------------> <----------------------> | 2) <----------------------> <----------------------> | |||
| standard base protocol standard base protocol | standard base protocol standard base protocol | |||
| End-to-end Overload Indication | ||||
| 2) <-----------------------------------------------> | ||||
| 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) | ||||
| end-to-end between servers and clients or (2) between servers and | ||||
| Diameter agent inside the realm and then between the Diameter agent | ||||
| and the clients when the Diameter agent acting as back-to-back-agent | ||||
| for DOIC purposes. | ||||
| 3.2. Conveyance of the Overload Indication | 3.2. Conveyance of the Overload Indication | |||
| The following features describe new Diameter AVPs used for sending | The following sections describe new Diameter AVPs used for sending | |||
| overload reports, and for declaring support for certain DOC features. | overload reports, and for declaring support for certain DOIC | |||
| features. | ||||
| 3.2.1. Negotiation and Versioning | 3.2.1. DOIC Capability Discovery | |||
| Since the Diameter overload control mechanism is also designed to | Support of DOIC may be specified as part of the functionality | |||
| work over existing application (i.e., the piggybacking principle), a | supported by a new Diameter application. In this way, support of the | |||
| proper negotiation is hard to accomplish. The "capability | considered Diameter application (discovered during capabilities | |||
| negotiation" is based on the existense of specific non-mandatory APV, | exchange phase as defined in Diameter base protocol [RFC6733]) | |||
| such as the OC-Feature-Vector AVP (see Section 4.1. Although the OC- | indicates implicit support of the DOIC mechanism. | |||
| Feature-Vector AVP can be used to advertise a certain set of new or | ||||
| When the DOIC mechanism is introduced in existing Diameter | ||||
| applications, a specific capability discovery mechanism is required. | ||||
| The "DOIC capability discovery mechanism" is based on the presence of | ||||
| specific optional AVPs in the Diameter messages, such as the OC- | ||||
| Supported-Features AVP (see Section 4.1). Although the OC-Supported- | ||||
| Features AVP can be used to advertise a certain set of new or | ||||
| existing Diameter overload control capabilities, it is not a | 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. | |||
| 3.2.2. Transmission of the Attribute Value Pairs | ||||
| The Diameter overload control APVs SHOULD always be sent as an | ||||
| optional AVPs. This requirement stems from the fact that | ||||
| piggybacking overload control information on top of existing | ||||
| application cannot really use AVPs with the M-bit set. However, | ||||
| there are certain exceptions as explained in Section 5.4. | ||||
| From the Diameter overload control functionality point of view, the | From the Diameter overload control functionality point of view, the | |||
| "Reacting node" is always the requester of the overload report | "Reacting node" is the requester of the overload report information | |||
| information and the "Reporting node" is the provider of the overload | and the "Reporting node" is the provider of the overload report. The | |||
| report. The overload report or the capability information in the | OC-Supported-Features AVP in the request message is always | |||
| request message is always interpreted as an announcement of a | interpreted as an announcement of "DOIC supported capabilities". The | |||
| "capability". The overload report and the capability information in | OC-Supported-Features AVP in the answer is also interpreted as a | |||
| the answer is always interpreted as a report of supported commond | report of "DOIC supported capabilities" and at least one of supported | |||
| functionality and as a status report of an overload condition (of a | capabilities MUST be common with the "Reacting node" (see | |||
| node). | Section 4.1). | |||
| 3.3. Overload Condition Indication | 3.3. Overload Condition Indication | |||
| Diameter nodes can request a reduction in offered load by indicating | Diameter nodes can request a reduction in offered load by indicating | |||
| an overload condition in the form of an overload report. The | an overload condition in the form of an overload report. The | |||
| overload report contains information about how much load should be | overload report contains information about how much load should be | |||
| reduced, and may contain other information about the overload | reduced, and may contain other information about the overload | |||
| condition. This information is encoded in Diameter Attribute Value | condition. This information is conveyed in Diameter Attribute Value | |||
| Pairs (AVPs). | Pairs (AVPs). | |||
| Certain new AVPs may also be used to declare certain DOIC | Certain new AVPs may also be used to declare certain DOIC | |||
| capabilities and extensions. | capabilities and extensions. | |||
| 4. Attribute Value Pairs | 4. Attribute Value Pairs | |||
| This section describes the encoding and semantics of Overload | This section describes the encoding and semantics of the Diameter | |||
| Indication Attribute Value Pairs (AVPs). | Overload Indication Attribute Value Pairs (AVPs) defined in this | |||
| document. | ||||
| 4.1. OC-Feature-Vector AVP | 4.1. OC-Supported-Features AVP | |||
| The OC-Feature-Vector AVP (AVP code TBD1) is type of Unsigned64 and | The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and | |||
| contains a 64 bit flags field of announced capabilities of an | serves for two purposes. First, it announces node's support for the | |||
| overload control endpoint. Sending or receiving the OC-Feature- | DOIC in general. Second, it contains the description of the | |||
| Vector AVP with the value 0 indicates that the endpoint only support | supported DOIC features of the sending node. The OC-Supported- | |||
| the capabilities defined in this specification. | Features AVP SHOULD be included into every Diameter message a DOIC | |||
| supporting node sends (and intends to use for DOIC purposes). | ||||
| An overload control endpoint (a reacting node) includes this AVP to | OC-Supported-Features ::= < AVP Header: TBD1 > | |||
| indicate its capabilities to the other overload control endpoint (the | < OC-Sequence-Number > | |||
| reporting node). For example, the endpoint (reacting node) may | [ OC-Feature-Vector ] | |||
| * [ AVP ] | ||||
| The OC-Sequence-Number AVP is used to indicate whether the contents | ||||
| of the OC-Supported-Features AVP has changed since last time the node | ||||
| included the OC-Supported-Features AVP (see Section 4.4). Although | ||||
| 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 | ||||
| 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 | ||||
| (see Section 4.2). The absence of the OC-Feature-Vector AVP | ||||
| indicates that only the default traffic abatement algorithm described | ||||
| in this specification is supported. | ||||
| A reacting node includes this AVP to indicate its capabilities to a | ||||
| reporting node. For example, the endpoint (reacting node) may | ||||
| indicate which (future defined) traffic abatement algorithms it | 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 endpoint sending a | their common set of supported capabilities. The reacting node | |||
| request (the reacting node) includes the OC-Feature-Vector AVP with | includes the OC-Supported-Features AVP that announces what it | |||
| those flags set that correspond what it supports. The endpoint that | supports. The reporting node that sends the answer also includes the | |||
| sends the answer (the reporting node) also includes the OC-Feature- | OC-Supported-Features AVP that describes the capabilities it | |||
| Vector AVP with flags set to describe the capabilities it both | supports. The set of capabilities advertised by the reporting node | |||
| supports and agrees with the request sender (e.g., based on the local | depends on local policies. At least one of the announced | |||
| policy and/or configuration). The answer sending endpoint (the | capabilities MUST match mutually. If there is no single matching | |||
| reporting node) does not need to advertise those capabilities it is | capability the reacting node MUST act as if it does not implement | |||
| not going to use with the request sending endpoint (the reacting | DOIC and cease inserting any DOIC related AVPs into any Diameter | |||
| node). | messages with this specific reacting node. | |||
| This specification does not define any additional capability flag. | 4.2. OC-Feature-Vector AVP | |||
| The implicity capability (all flags set to zero) indicates the | ||||
| support for this specification only. | ||||
| 4.2. OC-OLR AVP | The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and | |||
| contains a 64 bit flags field of announced capabilities of an | ||||
| overload control endpoint. The value of zero (0) is reserved. | ||||
| The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the | The following capabilities are defined in this document: | |||
| necessary information to convey an overload report. OC-OLR may also | ||||
| be used to convey additional information about an extension that is | ||||
| declared in the OC-Feature-Vector AVP. | ||||
| The OC-OLR AVP does not contain explicit information to which | OLR_DEFAULT_ALGO (0x0000000000000001) | |||
| application it applies to and who inserted the AVP or whom the | ||||
| specific OC-OLR AVP concerns to. Both these information is | When this flag is set by the overload control endpoint it means | |||
| implicitly learned from the encapsulating Diameter message/command. | that the default traffic abatement (loss) algorithm is supported. | |||
| The application the OC-OLR AVP applies to is the same as the | ||||
| Application-Id found in the Diameter message header. The identity | 4.3. OC-OLR AVP | |||
| the OC-OLR AVP concerns is determined from the Origin-Host AVP found | ||||
| from the encapsulating Diameter command. | 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 | ||||
| does not contain explicit information to which application it applies | ||||
| to and who inserted the AVP or whom the specific OC-OLR AVP concerns | ||||
| to. Both these information is implicitly learned from the | ||||
| encapsulating Diameter message/command. The application the OC-OLR | ||||
| AVP applies to is the same as the Application-Id found in the | ||||
| Diameter message header. The identity the OC-OLR AVP concerns is | ||||
| determined from the Origin-Host AVP (and Origin-Realm AVP 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 > | |||
| < TimeStamp > | < OC-Sequence-Number > | |||
| [ Reduction-Percentage ] | [ OC-Report-Type ] | |||
| [ ValidityDuration ] | [ OC-Reduction-Percentage ] | |||
| [ ReportType ] | [ OC-Validity-Duration ] | |||
| * [ AVP ] | * [ AVP ] | |||
| The TimeStamp AVP indicates when the original OC-OLR AVP with the | The Sequence-Number AVP indicates the "freshness" of the OC-OLR AVP. | |||
| current content was created. It is possible to replay the same OC- | It is possible to replay the same OC-OLR AVP multiple times between | |||
| OLR AVP multiple times between the overload endpoints, however, when | the overload control endpoints, however, when the OC-OLR AVP content | |||
| the OC-OLR AVP content changes or the other information sending | changes or sending endpoint otherwise wants the receiving endpoint to | |||
| endpoint wants the receiving endpoint to update its overload control | update its overload control information, then the OC-Sequence-Number | |||
| information, then the TimeStamp AVP MUST contain a new value. | AVP MUST contain a new greater value than the previously received. | |||
| The receiver SHOULD discard an OC-OLR AVP with a sequence number that | ||||
| is less than previously received one. | ||||
| [OpenIssue: Is this necessarily a timestamp, or is it just a sequence | Note that if a Diameter command were to contain multiple OC-OLR AVPs | |||
| number that can be implemented as a timestamp? Is this timestamp | they all MUST have different OC-Report-Type AVP value. OC-OLR AVPs | |||
| used to calculate expiration time? (propose no.). We should also | with unknown values SHOULD be silently discarded and the event SHOULD | |||
| consider whether either a timestamp or sequence number is needed for | be logged. | |||
| protection against replay attacks.] | ||||
| 4.3. TimeStamp AVP | The OC-OLR AVP can be expanded with optional sub-AVPs only if a | |||
| legacy implementation can safely ignore them without breaking | ||||
| backward compatibility for the given OC-Report-Type AVP value implied | ||||
| report handling semantics. If the new sub-AVPs imply new semantics | ||||
| for the report handling, then a new OC-Report-Type AVP value MUST be | ||||
| defined. | ||||
| The TimeStamp AVP (AVP code TBD3) is type of Time. Its usage in the | 4.4. OC-Sequence-Number AVP | |||
| context of the overload control is described in Section 4.2. From | ||||
| the functionality point of view, the TimeStamp AVP is merely used as | ||||
| a non-volatile increasing counter between two overload control | ||||
| endpoints. | ||||
| 4.4. ValidityDuration AVP | The OC-Sequence-Number AVP (AVP code TBD3) is type of Time. Its | |||
| usage in the context of the overload control is described in Sections | ||||
| 4.1 and 4.3. | ||||
| The ValidityDuration AVP (AVP code TBD4) is type of Unsigned32 and | From the functionality point of view, the OC-Sequence-Number AVP MUST | |||
| describes the number of seconds the OC-OLR AVP and its content is | be used as a non-volatile increasing counter between two overload | |||
| valid since the creation of the OC-OLR AVP (as indicated by the | control endpoints (neglecting the fact that the contents of the AVP | |||
| TimeStamp AVP). | is a 64-bit NTP timestamp [RFC5905]). The sequence number is only | |||
| required to be unique between two overload control endpoints. | ||||
| Sequence numbers are treated in uni-directional manner, i.e. two | ||||
| sequence numbers on each direction between two endpoints are not | ||||
| related or correlated. | ||||
| When generating sequence numbers, the new sequence number MUST be | ||||
| greater than any sequence number previously seen between two | ||||
| endpoints within a time window that tolerates the wraparound of the | ||||
| NTP timestamp (i.e. approximately 68 years). | ||||
| 4.5. OC-Validity-Duration AVP | ||||
| 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 its content is valid since the reception of the new OC-OLR AVP. | ||||
| The default value for the OC-Validity-Duration AVP value is 5 (i.e., | ||||
| 5 seconds). When the OC-Validity-Duration AVP is not present in the | ||||
| OC-OLR AVP, the default value applies. Validity duration values 0 | ||||
| (i.e., 0 seconds) and above 86400 (i.e., 24 hours) MUST NOT be used. | ||||
| Invalid validity duration values are treated as if the OC-Validity- | ||||
| Duration AVP were not present. | ||||
| 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.6 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 | As a general guidance for implementations it is RECOMMENDED never to | |||
| let any overload report to timeout. Rather, an overload endpoint | let any overload report to timeout. Following to this rule, an | |||
| should explicitly signal, e.g. the end of overload condition. This | overload endpoint should explicitly signal the end of overload | |||
| leaves no need for the other overload endpoint to reason or guess the | condition and not rely on the expiration of the validity time of the | |||
| condition the other endpoint is at. | overload report in the reacting node. This leaves no need for the | |||
| reacting node to reason or guess the overload condition of the | ||||
| reporting node. | ||||
| 4.5. ReportType AVP | 4.6. OC-Report-Type AVP | |||
| The ReportType AVP (AVP code TBD5) is type of Enumerated. The value | The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated. The | |||
| 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 Reserved. | 0 A host report. The overload treatment should apply to requests | |||
| the reacting node knows that will reach the overloaded node. For | ||||
| 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 Destination-Host report. The overload treatment should apply to | 1 A realm report. The overload treatment should apply to all | |||
| requests that the sender knows will reach the overloaded server. | requests bound for the overloaded realm. The reacting node learns | |||
| For example, requests with a Destination-Host AVP indicating the | the "realm" implicitly from the Origin-Realm AVP of the received | |||
| server. | message that contained the OC-OLR AVP. | |||
| 2 Realm (aggregated) report. The overload treatment should apply to | The default value of the OC-Report-Type AVP is 0 (i.e. the host | |||
| all requests bound for the overloaded realm. | report). | |||
| The ReportType AVP is envisioned to be useful for situations where a | The OC-Report-Type AVP is envisioned to be useful for situations | |||
| reacting node needs to apply different overload treatments for | where a reacting node needs to apply different overload treatments | |||
| 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 requests that are targeted to a specific | might need to throttle differently requests sent to a specific server | |||
| server by the presence of a Destination-Host AVP than for requests | (identified by the Destination-Host AVP in the request) and requests | |||
| that can be handled by any server in a realm. The example in | that can be handled by any server in a realm. The example in | |||
| Appendix C.3 illustrates this usage. | Appendix B.1 illustrates this usage. | |||
| [OpenIssue: There is an ongoing discussion about whether the | When defining new report type values, the corresponding specification | |||
| ReportType AVP is the right way to solve that issue, and whether it's | MUST define the semantics of the new report types and how they affect | |||
| needed at all.] | the OC-OLR AVP handling. The specification MUST also reserve a | |||
| corresponding new feature, see the OC-Supported-Features and OC- | ||||
| Feature-Vector AVPs. | ||||
| 4.6. Reduction-Percentage AVP | 4.7. OC-Reduction-Percentage AVP | |||
| The 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 have sent. | |||
| The OC-Reduction-Percentage AVP applies to the default (loss like) | ||||
| algorithm specified in this specification. However, the AVP can be | ||||
| reused for future abatement algorithms, if its semantics fit into the | ||||
| new 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 interpreted as 100. The | |||
| value of 100 means that no traffic is expected, i.e. the sender of | value of 100 means that no traffic is expected, i.e. the reporting | |||
| the information is under a severe load and ceases to process any new | node is under a severe load and ceases to process any new messages. | |||
| messages. The value of 0 means that the sender of the information is | The value of 0 means that the reporting node is in a stable state and | |||
| in a stable state and has no requests to the other endpoint to apply | has no requests to the other endpoint to apply any traffic abatement. | |||
| any traffic abatement. | The default value of the OC-Reduction-Percentage AVP is 0. When the | |||
| OC-Reduction-Percentage AVP is not present in the overload report, | ||||
| [Open Issue: We should consider an algorithm independent way to end | the default value applies. | |||
| an overload condition. Perhaps setting the validitytime to zero? | ||||
| Counter comment; since the abatement is based on a specific | ||||
| algorithm, it is natural to indicate that from the abatement | ||||
| algorithm point of view status quo has been reached.] | ||||
| 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 endpoint | 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 few "probe" messages to learn the overload condition of the | send "probe" messages to learn the overload condition of the | |||
| other endpoint before converging to any traffic amount/rate decided | overloaded node before converging to any traffic amount/rate decided | |||
| by the sender. Similar concerns actually apply in all cases when the | by the sender. Similar concerns apply in all cases when the overload | |||
| overload report times out unless the previous overload report stated | report times out unless the previous overload report stated 0 percent | |||
| 0 percent reduction. | reduction. | |||
| [Open Issue: It is still open whether we need an AVP to indicate the | ||||
| exact used traffic abatement algorithm. Currently it assumed that | ||||
| the reacting node is able to figure out what to do based on the | ||||
| Reducttion-Percentage AVP and possible other embedded information | ||||
| inside the OC-OLR AVP.] | ||||
| 4.7. 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-Feature-Vector TBD1 x.x Unsigned64 | | V | | |OC-Supported-Features TBD1 x.x Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-OLR TBD2 x.x Grouped | | V | | |OC-OLR TBD2 x.x Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |TimeStamp TBD3 x.x Time | | V | | |OC-Sequence-Number TBD3 x.x Time | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |ValidityPeriod TBD4 x.x Unsigned32 | | V | | |OC-Validity-Duration TBD4 x.x Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |ReportType TBD5 x.x Enumerated | | V | | |OC-Report-Type TBD5 x.x Enumerated | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |Reduction | | | | |OC-Reduction | | | | |||
| | -Percentage TBD8 x.x Unsigned32 | | V | | | -Percentage TBD8 x.x Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Feature-Vector TBD6 x.x Unsigned64 | | V | | ||||
| +--------------------------------------------------+----+----+ | ||||
| As described in the Diameter base protocol [RFC6733], the M-bit | ||||
| setting for a given AVP is relevant to an application and each | ||||
| command within that application that includes the AVP. | ||||
| The Diameter overload control AVPs SHOULD always be sent with the | ||||
| M-bit cleared when used within existing Diameter applications to | ||||
| avoid backward compatibility issues. Otherwise, when reused in newly | ||||
| defined Diameter applications, the DOC related AVPs SHOULD have the | ||||
| M-bit set. | ||||
| 5. Overload Control Operation | 5. Overload Control Operation | |||
| 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" between two communicatin | is exchanged over on a "DOIC association" established between two | |||
| endpoints. The endpoints, namely the "reacting node" and the | communication endpoints. The endpoints, namely the "reacting node" | |||
| "reporting node" do not need to be adjacent Diameter peer nodes, nor | and the "reporting node" do not need to be adjacent Diameter peer | |||
| they need to be the end-to-end Diameter nodes in a typical "client- | nodes, nor they need to be the end-to-end Diameter nodes in a typical | |||
| server" deployment with multiple intermediate Diameter agent nodes in | "client-server" deployment with multiple intermediate Diameter agent | |||
| between. The overload control endpoint are the two Diameter nodes | nodes in between. The overload control endpoints are the two | |||
| that decide to exchange overload control information between each | Diameter nodes that decide to exchange overload control information | |||
| other. How the endpoints are determined is specific to a deployment, | between each other. How the endpoints are determined is specific to | |||
| a Diameter node role in that deployment and local configuration. | a deployment, a Diameter node role in that deployment and local | |||
| configuration. | ||||
| The following diagrams illustrate the concept of Diameter Overload | The following diagrams illustrate the concept of Diameter Overload | |||
| End-Points and how they differ from the standard [RFC6733] defined | End-Points and how they differ from the standard [RFC6733] defined | |||
| client, server and agent Diameter nodes. The following is the key to | client, server and agent Diameter nodes. The following is the key to | |||
| the elements in the diagrams: | the elements in the diagrams: | |||
| C Diameter client as defined in [RFC6733]. | C Diameter client as defined in [RFC6733]. | |||
| S Diameter server as defined in [RFC6733]. | S Diameter server as defined in [RFC6733]. | |||
| skipping to change at page 20, line 23 ¶ | skipping to change at page 19, line 6 ¶ | |||
| following figures a DEP may terminate two different DOIC | following figures a DEP may terminate two different DOIC | |||
| associations being a reporter and reactor at the same time. | associations being a reporter and reactor at the same time. | |||
| 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 session and | connected directly to a server. In this case, the Diameter session | |||
| 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 DOIC association | the exchange of overload reports. As a result, the Diameter session | |||
| is still between the client and the server. | and the DOIC association are still established between the client and | |||
| the server. | ||||
| +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ | |||
| | C | | A | | S | | | C | | A | | S | | |||
| +-----+ +--+--+ +-----+ | +-----+ +--+--+ +-----+ | |||
| | DEP | | | DEP | | | DEP | | | DEP | | |||
| +--+--+ | +--+--+ | +--+--+ | +--+--+ | |||
| | | | | | | | | |||
| | | | | | | | | |||
| |----------{Diameter Session}---------| | |----------{Diameter Session}---------| | |||
| | | | | | | | | |||
| skipping to change at page 21, line 41 ¶ | skipping to change at page 20, line 22 ¶ | |||
| |----------{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/SFIM 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 | ||||
| |----------{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. | |||
| skipping to change at page 22, line 38 ¶ | skipping to change at page 21, line 17 ¶ | |||
| +-----+ +--+--+ +-----+ +-----+ | +-----+ +--+--+ +-----+ +-----+ | |||
| | DEP | | | DEP | | DEP | | | DEP | | | DEP | | DEP | | |||
| +--+--+ | +--+--+ +--+--+ | +--+--+ | +--+--+ +--+--+ | |||
| | | | | | | | | | | |||
| | | | | | | | | | | |||
| |-------------------{Diameter Session}-------------------| | |-------------------{Diameter Session}-------------------| | |||
| | | | | | | | | | | |||
| | |--------{Diameter Session}-----------| | | |--------{Diameter Session}-----------| | |||
| | | | | | | | | | | |||
| |---------{DOIC Association}----------|{DOIC Association}| | |---------{DOIC Association}----------|{DOIC Association}| | |||
| | | | and/or | ||||
| |-------------------{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 | ||||
| |-------------------{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 solution defined AVPs are essentially | The overload control AVPs defined in this specification have been | |||
| piggybacked on top of existing application message exchanges. This | designed to be piggybacked on top of existing application message | |||
| is made possible by adding overload control top level AVPs, the OC- | exchanges. This is made possible by adding overload control top | |||
| OLR AVP and the OC-Feature-Vector AVP into existing commands (this | level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as | |||
| has an assumption that the application CCF allows adding new AVPs | optional AVPs into existing commands when the corresponding Command | |||
| into the Diameter messages. | Code Format (CCF) specification allows adding new optional AVPs (see | |||
| Section 1.3.4 of [RFC6733]). | ||||
| In a case of newly defined Diameter applications, it is RECOMMENDED | When added to existing commands, both OC-Feature-Vector and OC-OLR | |||
| to add and defined how overload control mechanisms works on that | AVPs SHOULD have the M-bit flag cleared to avoid backward | |||
| application. using OC-Feature-Vector and OC-OLR AVPs in a non- | compatibility issues. | |||
| mandatory manner is intended only existing applications. | ||||
| A new application specification can incorporate the overload control | ||||
| mechanism specified in this document by making it mandatory to | ||||
| implement for the application and referencing this specification | ||||
| normatively. In such a case, the OC-Feature-Vector and OC-OLR AVPs | ||||
| reused in newly defined Diameter applications SHOULD have the M-bit | ||||
| flag set. However, it is the responsibility of the Diameter | ||||
| application designers to define how overload control mechanisms works | ||||
| on that application. | ||||
| Note that the overload control solution does not have fixed server | Note that the overload control solution does not have fixed server | |||
| and client roles. The endpoint role is determined based on the sent | and client roles. The endpoint role is determined based on the | |||
| message type: whether the message is a request (i.e. sent by a | message type: whether the message is a request (i.e. sent by a | |||
| "reacting node") or an answer (i.e. send by a "reporting node"). | "reacting node") or an answer (i.e. send by a "reporting node"). | |||
| Therefore, in a typical "client-server" deployment, the "client" MAY | Therefore, in a typical "client-server" deployment, the "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 likely not adjacent peers, finding out whether the other | |||
| endpoint supports the overload control or what is the common traffic | endpoint supports the overload control or what is the common traffic | |||
| abatement algorithm to apply for the traffic. The approach defined | abatement algorithm to apply for the traffic. The approach defined | |||
| in this specification for the end-to-end capability capability | in this specification for the end-to-end capability announcement | |||
| announcement relies on the exchange of the OC-Feature-Vector between | relies on the exchange of the OC-Supported-Features between the | |||
| the endpoints. The feature announcement solution also works when | endpoints. The feature announcement solution also works when carried | |||
| carried out on existing applications. For the newly defined | out on existing applications. For the newly defined application the | |||
| application the negotiation can be more exact based on the | negotiation can be more exact based on the application specification. | |||
| application specification. The announced set of capabilities MUST | The announced set of capabilities MUST NOT change during the life | |||
| NOT change during the life time of the Diameter session (or | time of the Diameter session (or transaction in case of non-session | |||
| transaction in a case of non-session maintaining applications). | maintaining applications). | |||
| 5.3.1. Request Message Initiator 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-Feature- | control mechanism by including in the request message the OC- | |||
| Vector AVP with those capability flag bits set that it supports and | Supported-Features AVP with those capabilities it supports and is | |||
| is willing to use for this Diameter session (or transaction in a case | willing to use for this Diameter session (or transaction in a case of | |||
| of a non-session state maintaining applications). In a case of | a non-session state maintaining applications, see Section 3.1.2 for | |||
| session maintaining applications the request message initiating | more details on Diameter sessions). It is RECOMMENDED that the | |||
| endpoint does not need to do the capability announcement more than | request message initiating endpoint includes the capability | |||
| once for the lifetime of the Diameter session. In a case of non- | announcement into every request regardless it has had prior message | |||
| session maintaining applications, it is RECOMMENDED that the request | exchanges with the give remote endpoint. In a case of a Diameter | |||
| message initiating endpoint includes the capability announcement into | session maintaining application, sending the OC-Supported-Features | |||
| every request regardless it has had prior message exchanges with the | AVP in every message is not really necessary after the initial | |||
| give remote endpoint. | capability announcement or until there is a change in supported | |||
| features. | ||||
| [OpenIssue: We need to think about the lifetime of a capabilities | ||||
| declaration. It's probably not the same as for a session. We have | ||||
| had proposals that the feature vector needs to go into every request | ||||
| sent by an OC node. For peer to peer cases, this can be associated | ||||
| with connection lifetime, but it's more complex for non-adjacent OC | ||||
| support.] | ||||
| 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-Feature-Vector AVP in the Diameter answer for | the presence of the OC-Supported-Features AVP in the Diameter answer | |||
| existing application. For the newly defined applications the support | for existing application. | |||
| for the overload control MAY already be part of the application | ||||
| specification. Based on capability knowledge the request message | ||||
| initiating endpoint can select the preferred common traffic abatement | ||||
| algorithm and act accordingly for the subsequent message exchanges. | ||||
| 5.3.2. Answer Message Initiating 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 in can detect whether the request message initiating endpoint | message, it can detect whether the request message initiating | |||
| has support for the overload control solution based on the presence | endpoint supports the overload control solution based on the presence | |||
| of the OC-Feature-Vector AVP. For the newly defined applications the | of the OC-Supported-Features AVP. For the newly defined applications | |||
| 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-Feature-Vector AVP the | specification. Based on the content of the OC-Supported-Features AVP | |||
| 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 act accordingly | |||
| for the subsequent answer messages it initiates. It is RECOMMENDED | for the subsequent answer messages it initiates. The answer message | |||
| that the answer message initiating endpoint selects one common | initiating endpoint MAY announce as many supported capabilities as it | |||
| traffic abatement algorithm even if it would support multiple. The | has (the announced set is a subject to local policy and | |||
| answer message initiating endpoint MUST NOT include any overload | configuration). However, at least one of the announced capabilities | |||
| MUST be the same as received in the request message. | ||||
| The answer message initiating endpoint MUST NOT include any overload | ||||
| control solution defined AVPs into its answer messages if the request | control solution defined AVPs into its answer messages if the request | |||
| message initiating endpoint has not indicated support at the | message initiating endpoint has not indicated support at the | |||
| beginning of the the created session (or transaction in a case of | beginning of the created session (or transaction in a case of non- | |||
| non-session state maintaining applications). | session state maintaining applications). The same also applies if | |||
| none of the announced capabilities match between the two endpoints. | ||||
| 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 or new functionality. The new features and | |||
| algorithms MUST be registered with the IANA and for the ppossible use | algorithms MUST be registered with the IANA and for the possible use | |||
| with the OC-Feature-Vector for announcing the support for the new | with the OC-Supported-Features for announcing the support for the new | |||
| features (see Section 7 for the required procedures). | 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. Sender Endpoint Considerations | 5.5.1. Overload Control State | |||
| 5.5.2. Receiver Endpoint Considerations | Both reacting and reporting nodes maintain an overload condition | |||
| state for each endpoint (a host or a realm) they communicate with and | ||||
| both endpoints have announced support for DOIC. See Sections 4.1 and | ||||
| 5.3 for discussion about how the support for DOIC is determined. The | ||||
| overload condition state SHOULD be able to make a difference between | ||||
| a realm and a specific host in that realm. | ||||
| [OpenIssue: did we now agree that e.g. a server can refrain sending | The overload condition state could include the following information | |||
| OLR in answers based on some magical algorithm? (Note: We seem to | (per host or realm): | |||
| have consensus that a server MAY repeat OLRs in subsequent messages, | ||||
| but is not required to do so, based on local policy.)] | o The endpoint information (Diameter identity of the realm and/or | |||
| host, application identifier, etc) | ||||
| o Reduction percentage | ||||
| o Validity period timer | ||||
| o Sequence number | ||||
| o Supported/selected traffic abatement algorithm | ||||
| The overload control state information SHOULD be maintained as long | ||||
| as the other endpoint is known to support DOIC (based on the presence | ||||
| of the DOIC AVPs or by a future application specification). | ||||
| 5.5.2. Reacting Node Considerations | ||||
| Once a reacting node receives an OC-OLR AVP from a reporting node, it | ||||
| applies the traffic abatement based on the commonly supported | ||||
| algorithm with the reporting node and the current overload condition. | ||||
| The reacting node learns the reporting node supported abatement | ||||
| algorithms directly from the received answer message containing the | ||||
| OC-Supported-Features AVP or indirectly remembering the previously | ||||
| used traffic abatement algorithm with the given reporting node. | ||||
| The received OC-Supported-Features AVP does not change the existing | ||||
| overload condition and/or traffic abatement algorithm settings if the | ||||
| OC-Sequence-Number AVP contains a value that is equal to the | ||||
| previously received/recorded one. If the OC-Supported-Features AVP | ||||
| is received for the first time for the reporting node or the OC- | ||||
| Sequence-Number AVP value is less than the previously received/ | ||||
| recorded one (and is outside the valid overflow window), then either | ||||
| the sequence number is stale (e.g. an intentional or unintentional | ||||
| 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 | ||||
| information of the overload condition on the reporting node. | ||||
| From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting | ||||
| node learns whether the overload condition report concerns a specific | ||||
| host (as identified by the Origin-Host AVP of the answer message | ||||
| containing the OC-OLR AVP) or the entire realm (as identified by the | ||||
| Origin-Realm AVP of the answer message containing the OC-OLR AVP). | ||||
| The reacting node learns the Diameter application to which the | ||||
| overload report applies from the Application-ID of the answer message | ||||
| containing the OC-OLR AVP. The reacting node MUST use this | ||||
| information as an input for its traffic abatement algorithm. The | ||||
| idea is that the reacting node applies different handling of the | ||||
| traffic abatement, whether sent request messages are targeted to a | ||||
| specific host (identified by the Diameter-Host AVP in the request) or | ||||
| to any host in a realm (when only the Destination-Realm AVP is | ||||
| present in the request). Note that future specifications MAY define | ||||
| new OC-Report-Type AVP values that imply different handling of the | ||||
| OC-OLR AVP. For example, in a form of new additional AVPs inside the | ||||
| Grouped OC-OLR AVP that would define report target in a finer | ||||
| granularity than just a host. | ||||
| In the context of this specification and the default traffic | ||||
| abatement algorithm, the OC-Reduction-Percentage AVP value MUST be | ||||
| interpreted in the following way: | ||||
| value == 0 | ||||
| Indicates explicitly the end of overload condition and the | ||||
| reacting node SHOULD NOT apply the traffic abatement algorithm | ||||
| procedures anymore for the given reporting node (or realm). | ||||
| value == 100 | ||||
| Indicates that the reporting node (or realm) does not want to | ||||
| receive any traffic from the reacting node for the application the | ||||
| report concerns. The reacting node MUST do all measure not to | ||||
| send traffic to the reporting node (or realm) as long as the | ||||
| overload condition changes or expires. | ||||
| 0 < value < 100 | ||||
| Indicates that the reporting node urges the reacting node to | ||||
| reduce its traffic by a given percentage. For example if the | ||||
| reacting node has been sending 100 packets per second to the | ||||
| reporting node, then a reception of OC-Reduction-Percentage value | ||||
| of 10 would mean that from now on the reacting node MUST only send | ||||
| 90 packets per second. How the reacting node achieves the "true | ||||
| reduction" transactions leading to the sent request messages is up | ||||
| to the implementation. The reacting node MAY simply drop every | ||||
| 10th packet from its output queue and let the generic application | ||||
| logic try to recover from it. | ||||
| If the OC-OLR AVP is received for the first time, the reacting node | ||||
| MUST create an overload condition state associated with the related | ||||
| realm or a specific host in the realm identified in the message | ||||
| carrying the OC-OLR AVP, as described in Section 5.5.1. | ||||
| If the value of the OC-Sequence-Number AVP contained in the received | ||||
| OC-OLR AVP is equal to or less than the value stored in an existing | ||||
| overload condition state, the received OC-OLR AVP SHOULD be silently | ||||
| discarded. If the value of the OC-Sequence-Number AVP contained in | ||||
| the received OC-OLR AVP is greater than the value stored in an | ||||
| existing overload condition state or there is no previously recorded | ||||
| sequence number, the reacting node MUST update the overload condition | ||||
| state associated with the realm or the specific node is the realm. | ||||
| When an overload condition state is created or updated, the reacting | ||||
| node MUST apply the traffic abatement requested in the OC-OLR AVP | ||||
| using the algorithm announced in the OC-Supported-Features AVP | ||||
| contained in the received answer message along with the OC-OLR AVP. | ||||
| The validity duration of the overload information contained in the | ||||
| OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration | ||||
| AVP or is implicitly equals to the default value (5 seconds) if the | ||||
| OC-Validity-Duration AVP is absent of the OC-OLR AVP. The reacting | ||||
| node MUST maintain the validity duration in the overload condition | ||||
| state. Once the validity duration times out, the reacting node MUST | ||||
| assume the overload condition reported in a previous OC-OLR AVP has | ||||
| ended. | ||||
| 5.5.3. Reporting Node Considerations | ||||
| A reporting node is a Diameter node inserting an OC-OLR AVP in a | ||||
| Diameter message in order to inform a reacting node about an overload | ||||
| condition and request Diameter traffic abatement. | ||||
| The operation on the reporting node is rather straight forward. The | ||||
| reporting node learns the capabilities of the reacting node when it | ||||
| receives the OC-Supported-Features AVP as part of any Diameter | ||||
| request message. If the reporting node shares at least one common | ||||
| feature with the reacting node, then the DOIC can be enabled between | ||||
| these two endpoints. See Section 5.3 for further discussion on the | ||||
| capability and feature announcement between two endpoints. | ||||
| When a traffic reduction is required due to an overload condition and | ||||
| the overload control solution is supported by the sender of the | ||||
| Diameter request, the reporting node MUST include an OC-Supported- | ||||
| Features AVP and an OC-OLR AVP in the corresponding Diameter answer. | ||||
| The OC-OLR AVP contains the required traffic reduction and the OC- | ||||
| Supported-Features AVP indicates the traffic abatement algorithm to | ||||
| apply. This algorithm MUST be one of the algorithms advertised by | ||||
| the request sender. | ||||
| A reporting node MAY rely on the OC-Validity-Duration AVP values for | ||||
| the implicit overload condition state cleanup on the reacting node. | ||||
| However, it is RECOMMENDED that the reporting node always explicitly | ||||
| indicates the end of a overload condition. | ||||
| 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 | |||
| skipping to change at page 26, line 24 ¶ | skipping to change at page 28, line 18 ¶ | |||
| New AVPs defined by this specification are listed in Section 4. All | New AVPs defined by this specification are listed in Section 4. All | |||
| AVP codes allocated from the 'Authentication, Authorization, and | AVP codes allocated from the 'Authentication, Authorization, and | |||
| Accounting (AAA) Parameters' AVP Codes registry. | Accounting (AAA) Parameters' AVP Codes registry. | |||
| 7.2. New registries | 7.2. New registries | |||
| Three new registries are needed under the 'Authentication, | Three new registries are needed under the 'Authentication, | |||
| Authorization, and Accounting (AAA) Parameters' registry. | Authorization, and Accounting (AAA) Parameters' registry. | |||
| Section 4.1 defines a new "Overload Control Feature Vector" registry | Section 4.2 defines a new "Overload Control Feature Vector" registry | |||
| including the initial assignments. New values can be added into the | including the initial assignments. New values can be added into the | |||
| registry using the Specification Required policy [RFC5226]. | registry using the Specification Required policy [RFC5226]. See | |||
| Section 4.2 for the initial assignment in the registry. | ||||
| Section 4.5 defines a new "Overload Report Type" registry with its | Section 4.6 defines a new "Overload Report Type" registry with its | |||
| initial assignments. New types can be added using the Specification | initial assignments. New types can be added using the Specification | |||
| Required policy [RFC5226]. | Required policy [RFC5226]. | |||
| 8. Security Considerations | 8. Security Considerations | |||
| This mechanism gives Diameter nodes the ability to request that | This mechanism gives Diameter nodes the ability to request that | |||
| downstream nodes send fewer Diameter requests. Nodes do this by | downstream nodes send fewer Diameter requests. Nodes do this by | |||
| exchanging overload reports that directly affect this reduction. | exchanging overload reports that directly affect this reduction. | |||
| This exchange is potentially subject to multiple methods of attack, | This exchange is potentially subject to multiple methods of attack, | |||
| and has the potential to be used as a Denial-of-Service (DoS) attack | and has the potential to be used as a Denial-of-Service (DoS) attack | |||
| skipping to change at page 28, line 22 ¶ | skipping to change at page 30, line 19 ¶ | |||
| tempting vector for DoS tacks. Furthermore, since Diameter is almost | tempting vector for DoS tacks. Furthermore, since Diameter is almost | |||
| always used in support of other protocols, a DoS attack on Diameter | always used in support of other protocols, a DoS attack on Diameter | |||
| is likely to impact those protocols as well. Therefore, Diameter | is likely to impact those protocols as well. Therefore, Diameter | |||
| nodes MUST NOT honor or forward overload reports from unauthorized or | nodes MUST NOT honor or forward overload reports from unauthorized or | |||
| otherwise untrusted sources. | otherwise untrusted sources. | |||
| 8.3. Non-Compliant Nodes | 8.3. Non-Compliant Nodes | |||
| When a Diameter node sends an overload report, it cannot assume that | When a Diameter node sends an overload report, it cannot assume that | |||
| all nodes will comply. A non-compliant node might continue to send | all nodes will comply. A non-compliant node might continue to send | |||
| requests with no reduction in load. Requirement 28 | requests with no reduction in load. Requirement 28 [RFC7068] | |||
| [I-D.ietf-dime-overload-reqs] indicates that the overload control | indicates that the overload control solution cannot assume that all | |||
| solution cannot assume that all Diameter nodes in a network are | Diameter nodes in a network are necessarily trusted, and that | |||
| necessarily trusted, and that malicious nodes not be allowed to take | malicious nodes not be allowed to take advantage of the overload | |||
| advantage of the overload control mechanism to get more than their | control mechanism to get more than their fair share of service. | |||
| fair share of service. | ||||
| In the absence of an overload control mechanism, Diameter nodes need | In the absence of an overload control mechanism, Diameter nodes need | |||
| to implement strategies to protect themselves from floods of | to implement strategies to protect themselves from floods of | |||
| requests, and to make sure that a disproportionate load from one | requests, and to make sure that a disproportionate load from one | |||
| source does not prevent other sources from receiving service. For | source does not prevent other sources from receiving service. For | |||
| example, a Diameter server might reject a certain percentage of | example, a Diameter server might reject a certain percentage of | |||
| requests from sources that exceed certain limits. Overload control | requests from sources that exceed certain limits. Overload control | |||
| can be thought of as an optimization for such strategies, where | can be thought of as an optimization for such strategies, where | |||
| downstream nodes never send the excess requests in the first place. | downstream nodes never send the excess requests in the first place. | |||
| However, the presence of an overload control mechanism does not | However, the presence of an overload control mechanism does not | |||
| skipping to change at page 29, line 7 ¶ | skipping to change at page 30, line 51 ¶ | |||
| overload reports. Nodes must trust that their adjacent peers perform | overload reports. Nodes must trust that their adjacent peers perform | |||
| proper checks on overload reports from their peers, and so on, | proper checks on overload reports from their peers, and so on, | |||
| creating a transitive-trust requirement extending for potentially | creating a transitive-trust requirement extending for potentially | |||
| long chains of nodes. Network operators must determine if this | long chains of nodes. Network operators must determine if this | |||
| transitive trust requirement is acceptable for their deployments. | transitive trust requirement is acceptable for their deployments. | |||
| Nodes supporting Diameter overload control MUST give operators the | Nodes supporting Diameter overload control MUST give operators the | |||
| ability to select which peers are trusted to deliver overload | ability to select which peers are trusted to deliver overload | |||
| reports, and whether they are trusted to forward overload reports | reports, and whether they are trusted to forward overload reports | |||
| from non-adjacent nodes. | from non-adjacent nodes. | |||
| [OpenIssue: This requires that a responding node be able to tell a | ||||
| peer-generated OLR from one generated by a non-adjacent node. One | ||||
| way of doing this would be to include the identity of the node that | ||||
| generated the report as part of the OLR] | ||||
| [OpenIssue: Do we need further language about what rules an agent | ||||
| should apply before forwarding an OLR?] | ||||
| The lack of end-to-end protection creates a tension between two | ||||
| requirements from the overload control requirements document. | ||||
| [I-D.ietf-dime-overload-reqs] Requirement 34 requires the ability | ||||
| to send overload reports across intermediaries (i.e. agents) that | ||||
| do not support overload control mechanism. Requirement 27 forbids | ||||
| the mechanism from adding new vulnerabilities or increasing the | ||||
| severity of existing ones. A non-supporting agent will most | ||||
| likely forward overload reports without inspecting them or | ||||
| applying any sort of validation or authorization. This makes the | ||||
| transitive trust issue considerably more of a problem. Without | ||||
| the ability to authenticate and integrity protect overload reports | ||||
| across a non-supporting agent, the mechanism cannot comply with | ||||
| both requirements. | ||||
| [OpenIssue: What do we want to do about this? Req27 is a | ||||
| normative MUST, while Req34 is "merely" a SHOULD. This would seem | ||||
| to imply that 27 has to take precedent. Can we say that overload | ||||
| reports MUST NOT be sent to and/or accepted from non-supporting | ||||
| agents until such time we can use end-to-end security?] | ||||
| The lack of end-to-end confidentiality protection means that any | The lack of end-to-end confidentiality protection means that any | |||
| Diameter agent in the path of an overload report can view the | Diameter agent in the path of an overload report can view the | |||
| contents of that report. In addition to the requirement to select | contents of that report. In addition to the requirement to select | |||
| which peers are trusted to send overload reports, operators MUST be | which peers are trusted to send overload reports, operators MUST be | |||
| able to select which peers are authorized to receive reports. A node | able to select which peers are authorized to receive reports. A node | |||
| MUST not send an overload report to a peer not authorized to receive | MUST not send an overload report to a peer not authorized to receive | |||
| it. Furthermore, an agent MUST remove any overload reports that | it. Furthermore, an agent MUST remove any overload reports that | |||
| might have been inserted by other nodes before forwarding a Diameter | might have been inserted by other nodes before forwarding a Diameter | |||
| message to a peer that is not authorized to receive overload reports. | message to a peer that is not authorized to receive overload reports. | |||
| At the time of this writing, the DIME working group is studying | At the time of this writing, the DIME working group is studying | |||
| requirements for adding end-to-end security | requirements for adding end-to-end security | |||
| [I-D.ietf-dime-e2e-sec-req] features to Diameter. These features, | [I-D.ietf-dime-e2e-sec-req] features to Diameter. These features, | |||
| when they become available, might make it easier to establish | when they become available, might make it easier to establish trust | |||
| trust in non-adjacent nodes for overload control purposes. | in non-adjacent nodes for overload control purposes. Readers should | |||
| Readers should be reminded, however, that the overload control | be reminded, however, that the overload control mechanism encourages | |||
| mechanism encourages Diameter agents to modify AVPs in, or insert | Diameter agents to modify AVPs in, or insert additional AVPs into, | |||
| additional AVPs into, existing messages that are originated by | existing messages that are originated by other nodes. If end-to-end | |||
| other nodes. If end-to-end security is enabled, there is a risk | security is enabled, there is a risk that such modification could | |||
| that such modification could violate integrity protection. The | violate integrity protection. The details of using any future | |||
| details of using any future Diameter end-to-end security mechanism | Diameter end-to-end security mechanism with overload control will | |||
| with overload control will require careful consideration, and are | require careful consideration, and are beyond the scope of this | |||
| beyond the scope of this document. | document. | |||
| 9. Contributors | 9. Contributors | |||
| The following people contributed substantial ideas, feedback, and | The following people contributed substantial ideas, feedback, and | |||
| discussion to this document: | discussion to this document: | |||
| o Eric McMurry | o Eric McMurry | |||
| o Hannes Tschofenig | o Hannes Tschofenig | |||
| o Ulrich Wiehe | o Ulrich Wiehe | |||
| o Jean-Jacques Trottin | o Jean-Jacques Trottin | |||
| o Lionel Morand | ||||
| 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. Acknowledgements | 10. References | |||
| 10.1. Normative References | ||||
| ... | ||||
| 11. References | ||||
| 11.1. Normative References | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
| May 2008. | May 2008. | |||
| [RFC5905] Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network | ||||
| Time Protocol Version 4: Protocol and Algorithms | ||||
| Specification", RFC 5905, June 2010. | ||||
| [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | |||
| "Diameter Base Protocol", RFC 6733, October 2012. | "Diameter Base Protocol", RFC 6733, October 2012. | |||
| 11.2. Informative References | 10.2. Informative References | |||
| [3GPP.23.203] | ||||
| 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. | |||
| [I-D.ietf-dime-overload-reqs] | ||||
| McMurry, E. and B. Campbell, "Diameter Overload Control | ||||
| Requirements", draft-ietf-dime-overload-reqs-13 (work in | ||||
| progress), September 2013. | ||||
| [RFC4006] Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J. | [RFC4006] Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J. | |||
| Loughney, "Diameter Credit-Control Application", RFC 4006, | Loughney, "Diameter Credit-Control Application", RFC 4006, | |||
| August 2005. | August 2005. | |||
| [RFC5729] Korhonen, J., Jones, M., Morand, L., and T. Tsou, | ||||
| "Clarifications on the Routing of Diameter Requests Based | ||||
| on the Username and the Realm", RFC 5729, December 2009. | ||||
| [RFC7068] McMurry, E. and B. Campbell, "Diameter Overload Control | ||||
| Requirements", RFC 7068, November 2013. | ||||
| 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 31, line 48 ¶ | skipping to change at page 33, line 29 ¶ | |||
| 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] behaviour in a case of DIAMETER_TOO_BUSY is | |||
| somewhat underspecified. 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 APVs 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. Conformance to Requirements | Appendix B. Examples | |||
| The following section analyses, which Diameter Overload Control | B.1. Mix of Destination-Realm routed requests and Destination-Host | |||
| requirements [I-D.ietf-dime-overload-reqs] are met by this | routed requests | |||
| specification. | ||||
| Key: | Diameter allows a client to optionally select the destination server | |||
| of a request, even if there are agents between the client and the | ||||
| server. The client does this using the Destination-Host AVP. In | ||||
| cases where the client does not care if a specific server receives | ||||
| the request, it can omit Destination-Host and route the request using | ||||
| the Destination-Realm and Application Id, effectively letting an | ||||
| agent select the server. | ||||
| S - Supported | Clients commonly send mixtures of Destination-Host and Destination- | |||
| Realm routed requests. For example, in an application that uses user | ||||
| sessions, a client typically won't care which server handles a | ||||
| session-initiating requests. But once the session is initiated, the | ||||
| client will send all subsequent requests in that session to the same | ||||
| server. Therefore it would send the initial request with no | ||||
| Destination-Host AVP. If it receives a successful answer, the client | ||||
| would copy the Origin-Host value from the answer message into a | ||||
| Destination-Host AVP in each subsequent request in the session. | ||||
| P - Partial | An agent has very limited options in applying overload abatement to | |||
| requests that contain Destination-Host AVPs. It typically cannot | ||||
| route the request to a different server than the one identified in | ||||
| Destination-Host. It's only remaining options are to throttle such | ||||
| requests locally, or to send an overload report back towards the | ||||
| client so the client can throttle the requests. The second choice is | ||||
| usually more efficient, since it prevents any throttled requests from | ||||
| being sent in the first place, and removes the agent's need to send | ||||
| errors back to the client for each dropped request. | ||||
| N - Not supported | On the other hand, an agent has much more leeway to apply overload | |||
| abatement for requests that do not contain Destination-Host AVPs. If | ||||
| the agent has multiple servers in its peer table for the given realm | ||||
| and application, it can route such requests to other, less overloaded | ||||
| servers. | ||||
| +------+----+-------------------------------------------------------+ | If the overload severity increases, the agent may reach a point where | |||
| | Rqmt | S/ | Notes | | there is not sufficient capacity across all servers to handle even | |||
| | # | P/ | | | realm-routed requests. In this case, the realm itself can be | |||
| | | N | | | considered overloaded. The agent may need the client to throttle | |||
| +------+----+-------------------------------------------------------+ | realm-routed requests in addition to Destination-Host routed | |||
| | REQ | P | The DOIC solution only addresses overload | | requests. The overload severity may be different for each server, | |||
| | 1 | | information. Load information is left as future | | and the severity for the realm at is likely to be different than for | |||
| | | | work. In addition, the DOIC solution does not | | any specific server. Therefore, an agent may need to forward, or | |||
| | | | address agent overload scenarios. | | originate, multiple overload reports with differing ReportType and | |||
| | | | - | | Reduction-Percentage values. | |||
| | REQ | P | The DOIC solution supports overload reports that | | ||||
| | 2 | | implicitly indicate the application impacted by the | | ||||
| | | | report. The DOIC solution does not support reporting | | ||||
| | | | load information. The DOIC solution is thought to | | ||||
| | | | support graceful behavior. Allowing an application | | ||||
| | | | specific capabilities negotiation mechanism violates | | ||||
| | | | application-independence. Suggested different | | ||||
| | | | wording: The DOIC solution supports overload reports | | ||||
| | | | that are applicable to any Diameter application. The | | ||||
| | | | DOIC solution does not support reporting load | | ||||
| | | | information. The DOIC solution allows to support | | ||||
| | | | graceful behavior; this will be enhanced when the | | ||||
| | | | Load information will be defined. Comment: Can we | | ||||
| | | | removed the words "is thought"? | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution is thought to address this | | ||||
| | 3 | | requirement. Comment: Can we removed the words "is | | ||||
| | | | thought"? | | ||||
| | | | - | | ||||
| | REQ | P | The DOIC solution does allow for both both a Diameter | | ||||
| | 4 | | server and a Diameter client to send overload | | ||||
| | | | reports. The DOIC solution only addresses Diameter | | ||||
| | | | end-point (server and client) overload. Agent | | ||||
| | | | overload is being addressed in a separate draft. | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution does not depend on how the | | ||||
| | 5 | | end-points are discovered. Comment: it might be | | ||||
| | | | worth working through at least one use case showing | | ||||
| | | | DNS based dynamic peer discovery to make sure we | | ||||
| | | | haven't missed anything. | | ||||
| | | | - | | ||||
| | REQ | ? | Need to update text as some configuation is required. | | ||||
| | 6 | | Need to determin if the current discussion on | | ||||
| | | | overload application id increases the amount of | | ||||
| | | | configuration which would change this to a N. | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution supports the loss algorithm, which | | ||||
| | 7 | | is expected to address this requirement. There is | | ||||
| | | | concern about the ability to address oscillations. | | ||||
| | | | Wording is included for how a reacting node starts to | | ||||
| | | | increase traffic after an overload report expires to | | ||||
| | | | address this concern. Suggested different wording: | | ||||
| | | | The DOIC solution supports a baseline mechanism | | ||||
| | | | relying on traffic reduction percentage that is a | | ||||
| | | | loss algorithm, which allows to address this | | ||||
| | | | requirement. Oscillations are avoided or quite | | ||||
| | | | minimized by sending successive OLR reports with the | | ||||
| | | | values to converge to the optimal traffic or to | | ||||
| | | | smoothly come back to normal traffic conditions when | | ||||
| | | | overload decreases and ends. | | ||||
| | | | - | | ||||
| | REQ | ? | The DOIC solution supports a timestamp which is meant | | ||||
| | 8 | | to serve as a report version indication to address | | ||||
| | | | this requirement. Comment: The use of the timestamp | | ||||
| | | | is under discussion. | | ||||
| | | | - | | ||||
| | REQ | ? | The DOIC solution uses a piggybacking strategy for | | ||||
| | 9 | | carrying overload reports, which scales lineraly with | | ||||
| | | | the amount of traffic. As such, the first part of | | ||||
| | | | the requirement is addressed. The DOIC solution does | | ||||
| | | | not support a mechanism for sending overload reports | | ||||
| | | | over a quiescent transport connections or, more | | ||||
| | | | generally, to Diameter nodes that are not producing | | ||||
| | | | traffic. Suggested different wording: The DOIC | | ||||
| | | | solution uses a piggybacking strategy for carrying | | ||||
| | | | overload reports. As such, the first part of the | | ||||
| | | | requirement is addressed. For a connection that has | | ||||
| | | | become quiescent due to OLRs with a 100% traffic | | ||||
| | | | reduction, the validity timer allows to handle this | | ||||
| | | | case. Other cases of quiescent connections are | | ||||
| | | | outside the scope of Diameter overload (e.g. their | | ||||
| | | | handling may be done through the watch dog of the | | ||||
| | | | Diameter base protocol). | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution supports two methods for managing | | ||||
| | 10 | | the length of an overload condition. First, all | | ||||
| | | | overload reports must contain a duration indication, | | ||||
| | | | after which the node reacting to the report can | | ||||
| | | | consider the overload condition as ended. Secondly, | | ||||
| | | | the solution supports the method for the node | | ||||
| | | | originating the overload report to explicitly | | ||||
| | | | communicate that the condition has ended. This | | ||||
| | | | latter mechanism depends on traffic to be sent from | | ||||
| | | | the reacting node and, as such, can not be depended | | ||||
| | | | upon in all circumstances. | | ||||
| | | | - | | ||||
| | REQ | ? | The DOIC solution works well for small network | | ||||
| | 11 | | configurations and for network configurations with a | | ||||
| | | | single Diameter agent hop. More analysis is required | | ||||
| | | | to determine how well the DOIC solution handles very | | ||||
| | | | large Diameter network with partitioned or segmented | | ||||
| | | | server farms requiring multiple hops through Diameter | | ||||
| | | | agents. | | ||||
| | | | - | | ||||
| | REQ | P | The DOIC solution focuses on Diameter end-point | | ||||
| | 12 | | overload and meets this requirement for those | | ||||
| | | | Diameter nodes. The DOIC solution does not address | | ||||
| | | | Diameter Agent overload and does not meet this | | ||||
| | | | requirement for those Diameter nodes. | | ||||
| | | | - | | ||||
| | REQ | ? | The DOIC solution requires including of the overload | | ||||
| | 13 | | report in all answer messages in some situations. It | | ||||
| | | | is not agreed, however, that this constitutes | | ||||
| | | | substantial work. This can also be mitigated by the | | ||||
| | | | sender of the overload report keeping state to record | | ||||
| | | | who has received overload reports. It is left to | | ||||
| | | | implementation decisions as to which approach is | | ||||
| | | | taken -- send in all messages or send once with a | | ||||
| | | | record of who has received the report. Another way | | ||||
| | | | is to let the request sender (reacting node) insert | | ||||
| | | | information in the request to say whether a | | ||||
| | | | throttling is actually performed. The reporting node | | ||||
| | | | then can base its decision on information received in | | ||||
| | | | the request; no need for keeping state to record who | | ||||
| | | | has received overload reports. The DOIC solution | | ||||
| | | | also requires capabilities negotiation in every | | ||||
| | | | request and response message, which increases the | | ||||
| | | | baseline work required for any node supporting the | | ||||
| | | | DOIC solution. Suggested additional text: It does | | ||||
| | | | not, however, require that the information be | | ||||
| | | | recalculated or updated with each message. The | | ||||
| | | | update frequency is up to the implementation, and | | ||||
| | | | each implementation can make decisions on balancing | | ||||
| | | | the update of overload information along with its | | ||||
| | | | other priorities. It is expected that using a | | ||||
| | | | periodically updated OLR report added to all messages | | ||||
| | | | sent to overload control endpoints will not add | | ||||
| | | | substantial additional work. Piggyback base | | ||||
| | | | transport also does not require composition, sending, | | ||||
| | | | or parsing of new Diameter messages for the purpose | | ||||
| | | | of conveying overload control information. There is | | ||||
| | | | still discussion on the substantial additional work | | ||||
| | | | due to have OLR in each answer message. | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution uses the piggybacking method to | | ||||
| | 14 | | deliver overload report, which scales lineraly with | | ||||
| | | | the amount of traffic. This allows for immediate | | ||||
| | | | feedback to any node generating traffic toward | | ||||
| | | | another overloaded node. | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution does not interfere with transport | | ||||
| | 15 | | protocols. | | ||||
| | | | - | | ||||
| | REQ | ? | The DOIC solution allows for a mixed network of | | ||||
| | 16 | | supporting and non supporting Diameter end-points. | | ||||
| | | | It isn't clear how realm overload is handled in a | | ||||
| | | | network with agents that do not support the DOIC | | ||||
| | | | solution. Suggested additional wording: Evaluation | | ||||
| | | | of Realm overload may require a DA supporting DOIC, | | ||||
| | | | if the realm overload is not evaluated by the client. | | ||||
| | | | Realm overload handling is still under discussion. | | ||||
| | | | - | | ||||
| | REQ | ? | Suggested wording: The DOIC solution addresses this | | ||||
| | 17 | | requirement through the loss algorithm (DOIC baseline | | ||||
| | | | mechanism) with the following possibilities. A DA | | ||||
| | | | supporting DOIC can act on behalf of clients not | | ||||
| | | | supporting DOIC. A reporting node is also aware of | | ||||
| | | | the nodes not supporting the DOIC as there is no | | ||||
| | | | advertisement of the DOIC support. It may then apply | | ||||
| | | | a particular throttling of the requests coming from | | ||||
| | | | these non supporting DOIC clients. | | ||||
| | | | - | | ||||
| | REQ | ? | It isn't clear yet that if this requirement is | | ||||
| | 18 | | addressed. There has been a proposal to mark | | ||||
| | | | messages that survived overload throttling as one | | ||||
| | | | method for an overloaded node to address fairness but | | ||||
| | | | this proposal is not yet part of the solution. It is | | ||||
| | | | also possible that the overloaded node could use | | ||||
| | | | state gathered as part of the capability | | ||||
| | | | advertisement mechanism to know if the sending node | | ||||
| | | | supports the DOIC solution and if not, to apply a | | ||||
| | | | particular throttling of the requests coming from | | ||||
| | | | these non supporting DOIC clients. | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution supports the ability for the | | ||||
| | 19 | | overloaded node and the reacting node to be in | | ||||
| | | | different administrative domains. | | ||||
| | | | - | | ||||
| | REQ | ? | This mechanism is still under discussion. Comment 1: | | ||||
| | 20 | | I think this is a "S". OLRs are clearly | | ||||
| | | | distinguishable from any error code. The fact that | | ||||
| | | | an agent would need to send errors if it throttles is | | ||||
| | | | not an overload indication per se. It needs to do | | ||||
| | | | that even without DoC. OTOH, if we apply some DOC | | ||||
| | | | related fix to TOO_BUSY, we probably need a new code. | | ||||
| | | | Comment 2: New AVPs conveys overload control | | ||||
| | | | information, and this is transported on existing | | ||||
| | | | answer messages, so distinguishable from Diameter | | ||||
| | | | errors. | | ||||
| | | | - | | ||||
| | REQ | S | The inability for a node to send overload reports | | ||||
| | 21 | | will result in equivalent through put to a network | | ||||
| | | | that does not support the DOIC solution. | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution gives this node generating the | | ||||
| | 22 | | overload report the ability to control the amount of | | ||||
| | | | throttling done by the reacting node using the | | ||||
| | | | reduction percentage parameter in the overload | | ||||
| | | | report. | | ||||
| | | | - | | ||||
| | REQ | ? | Initial text: The DOIC mechanism supports two | | ||||
| | 23 | | abatement strategies by reacting nodes, routing to an | | ||||
| | | | alternative node or dropping traffic. The routing to | | ||||
| | | | an alternative node will be enhanced when the Load | | ||||
| | | | extension is defined. Comment: This is a N. There's | | ||||
| | | | no good way to determine which nodes are likely to | | ||||
| | | | have sufficient capacity without some sort of load | | ||||
| | | | metric for non-overloaded nodes. | | ||||
| | | | - | | ||||
| | REQ | N | The DOIC solution does not address delivering load | | ||||
| | 24 | | information. | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution contains some guideance. | | ||||
| | 25 | | | | ||||
| | | | - | | ||||
| | REQ | S | The DOIC solution does not constrain a nodes ability | | ||||
| | 26 | | to determine which requests are trottled. | | ||||
| | | | - | | ||||
| | REQ | ? | Initial text: The DOIC solution does add a new line | | ||||
| | 27 | | of attack in the ability for a malicious entity to | | ||||
| | | | insert overload reports that would reduce or | | ||||
| | | | eliminate traffic. This, however, is no worse than | | ||||
| | | | an attacker that would assert erroneous error | | ||||
| | | | responses such as a TOO BUSY response. It is | | ||||
| | | | recognized that the end-to-end security solution | | ||||
| | | | currently being worked on by the DIME working group | | ||||
| | | | is needed to close these types of vulurabilities. | | ||||
| | | | Comment: Sending a malicious OLR with a type of | | ||||
| | | | "realm" will have considerably more impact than a | | ||||
| | | | TOO_BUSY. Personally, I don't think we can achieve | | ||||
| | | | this requirement without either being hop-by-hop or | | ||||
| | | | requiring e2e security. We probably need further | | ||||
| | | | analysis of the security implications of the | | ||||
| | | | capabilities negotiation as well. Suggested | | ||||
| | | | additional verbage: An OLR only relates to the | | ||||
| | | | traffic between a reporting node and a reacting node | | ||||
| | | | and can effectively block the traffic from a client | | ||||
| | | | which would be an important impact. Nevertheless | | ||||
| | | | OLRs are regularly sent in all answers, so a | | ||||
| | | | malicious OLR will have a short transient effect, as | | ||||
| | | | quickly overridden by a new OLR. To have a | | ||||
| | | | significant impact would require a continuous flow of | | ||||
| | | | answers with malicious OLRs. There is the exception | | ||||
| | | | of the OLR with a value of 100% reduction traffic | | ||||
| | | | which has a higher vulnerability and the use of which | | ||||
| | | | should be avoided when possible. In addition such | | ||||
| | | | malicious OLRs must be in answers, which means the | | ||||
| | | | capability to insert the malicious OLR in an existing | | ||||
| | | | answer rather than to create an answer which is much | | ||||
| | | | less easy than to create a request. To have a | | ||||
| | | | network wide applicability would request to generate | | ||||
| | | | malicious OLRs messages towards all reacting nodes. | | ||||
| | | | It can be considered that the baseline mechanism | | ||||
| | | | offer a relevant level of security. Further analysis | | ||||
| | | | with a security expertise would be beneficial. | | ||||
| | | | - | | ||||
| | REQ | ? | See REQ 18 and REQ 27. Suggested additional verbage: | | ||||
| | 28 | | Guidance may be provided for detection of non | | ||||
| | | | compliant/abnormal use of OLRs, not only by endpoints | | ||||
| | | | but also by intermediate DA that can be aware of | | ||||
| | | | OLRs, an example being edge DAs with external | | ||||
| | | | networks. Further analysis with a security expertise | | ||||
| | | | would be beneficial. | | ||||
| | | | - | | ||||
| | REQ | ? | This requirement is not explicitly addressed by the | | ||||
| | 29 | | DOIC solution. There is nothing in the DOIC solution | | ||||
| | | | that would prevent the goals of this requirement from | | ||||
| | | | being achieved. Non-adjacent DOIC without e2e | | ||||
| | | | security could be an issue here. | | ||||
| | | | - | | ||||
| | REQ | ? | It isn't clear how a solution would interfere. | | ||||
| | 30 | | Suggested wording: A node can have methods on how to | | ||||
| | | | protect from overload from nodes non supporting DOIC. | | ||||
| | | | The DOIC mechanism used with DOIC supporting nodes | | ||||
| | | | will not interfere with the appliance of these | | ||||
| | | | methods. There is the remark that the use of these | | ||||
| | | | methods may impact the global overload of the node | | ||||
| | | | and the evaluation of the traffic reduction that the | | ||||
| | | | reporting node will send in OLRs. If a node has | | ||||
| | | | methods to protect against denial of service attacks, | | ||||
| | | | the use of DOIC will not interfere with them. A | | ||||
| | | | denial of service attack concerning the DOIC itself | | ||||
| | | | is addressed in REQ 27. | | ||||
| | | | - | | ||||
| | REQ | ? | Initial text with an S: The DOIC solution addresses | | ||||
| | 31 | | node and realm directly. The application to which a | | ||||
| | | | report applies is implicitly determined based on the | | ||||
| | | | application level message carrying the report. Note | | ||||
| | | | that there is no way with DOIC for an overloaded node | | ||||
| | | | to communicate multiple nodes, realms or applications | | ||||
| | | | in a single overload report. So the inverse of this | | ||||
| | | | requirement is not supported. Comment: The inverse | | ||||
| | | | is also not _required_ :-) But I think we are "P" | | ||||
| | | | here, in that we don't support "node" per se. we do | | ||||
| | | | support "server." "Node" includes agents. (I also | | ||||
| | | | interpreted this to mean that each granularity needed | | ||||
| | | | to be supported independently--that is, a potential | | ||||
| | | | to say "all traffic to a realm" or "all traffic to a | | ||||
| | | | host" independently of application.) | | ||||
| | | | - | | ||||
| | REQ | ? | Initial text with an S: The DOIC solution supports | | ||||
| | 32 | | extensibility of both the information communicated | | ||||
| | | | and in the definition of new overload abatement | | ||||
| | | | algorithms. Comment 1: Recent discussions have made | | ||||
| | | | this a ?. It can be changed to S/N/P once these | | ||||
| | | | discussions come to a conclusion and new text is | | ||||
| | | | added to the draft. Comment 2: Suggested wording - | | ||||
| | | | The DOIC solution supports extensibility of both the | | ||||
| | | | information communicated and in the definition of new | | ||||
| | | | overload abatement algorithms or strategies. It | | ||||
| | | | should be noted that, according to the applications | | ||||
| | | | or to reacting node implementations, many algorithms | | ||||
| | | | may be applied on top of the DOIC baseline solution | | ||||
| | | | (without contradicting it), e.g. regarding which type | | ||||
| | | | of request to throttle, prioritized messages | | ||||
| | | | handling, mapping of the reduction % to an internal | | ||||
| | | | algorithm (eg 1 message out of ten etc..) but such | | ||||
| | | | algorithms are out of scope of DOIC. | | ||||
| | | | - | | ||||
| | REQ | ? | Initial text with P: The DOIC solution currently | | ||||
| | 33 | | defines the loss algorithm as the default algorithm. | | ||||
| | | | It does not specify it as mandatory to implement. | | ||||
| | | | Comment 1: Then I think that's a "n". The MTI part | | ||||
| | | | is the crux of the requirement. Comment 2: Suggested | | ||||
| | | | wording: In the DOIC baseline solution, the reacting | | ||||
| | | | node has to apply the received Reduction-Percentage, | | ||||
| | | | and for achieving this, the reacting node can do | | ||||
| | | | requests rerouting (when it is possible) or | | ||||
| | | | drop/reject requests. This DOIC baseline solution is | | ||||
| | | | a loss algorithm and DOIC should not require further | | ||||
| | | | specification. The answer to REQ32 indicates the | | ||||
| | | | possibility to add other algorithms on top of the | | ||||
| | | | DOIC baseline solution. The DOIC solution currently | | ||||
| | | | defines this loss algorithm as the default algorithm. | | ||||
| | | | It is still under discussion to make it as mandatory | | ||||
| | | | to implement. | | ||||
| | | | - | | ||||
| | REQ | P | The ability to communicate overload reports between | | ||||
| | 34 | | supporting Diameter nodes does not require agents to | | ||||
| | | | support the DOIC solution. Load information exchange | | ||||
| | | | is not currently defined. | | ||||
| +------+----+-------------------------------------------------------+ | ||||
| Table 1 | Figure 8 illustrates such a mixed-routing scenario. In this example, | |||
| the servers S1, S2, and S3 handle requests for the realm "realm". | ||||
| Any of the three can handle requests that are not part of a user | ||||
| session (i.e. routed by Destination-Realm). But once a session is | ||||
| established, all requests in that session must go to the same server. | ||||
| Appendix C. Examples | Client Agent S1 S2 S3 | |||
| | | | | | | ||||
| |(1) Request (DR:realm) | | | ||||
| |-------->| | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |Agent selects S1 | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |(2) Request (DR:realm) | | ||||
| | |-------->| | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | |S1 overloaded, returns OLR | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |(3) Answer (OR:realm,OH:S1,OLR:RT=DH) | ||||
| | |<--------| | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |sees OLR,routes DR traffic to S2&S3 | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |(4) Answer (OR:realm,OH:S1, OLR:RT=DH) | | ||||
| |<--------| | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |Client throttles requests with DH:S1 | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |(5) Request (DR:realm) | | | ||||
| |-------->| | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |Agent selects S2 | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |(6) Request (DR:realm) | | ||||
| | |------------------>| | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | |S2 is overloaded... | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |(7) Answer (OH:S2, OLR:RT=DH)| | ||||
| | |<------------------| | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | |Agent sees OLR, realm now overloaded | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R) | ||||
| |<--------| | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| |Client throttles DH:S1, DH:S2, and DR:realm | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| | | | | | | ||||
| C.1. 3GPP S6a interface overload indication | Figure 8: Mix of Destination-Host and Destination-Realm Routed | |||
| Requests | ||||
| [TBD: Would cover S6a MME-HSS communication with several topology | 1. The client sends a request with no Destination-Host AVP (that is, | |||
| choices (such as with or without DRA, and with "generic" agents).] | a Destination-Realm routed request.) | |||
| C.2. 3GPP PCC interfaces overload indication | 2. The agent follows local policy to select a server from its peer | |||
| table. In this case, the agent selects S2 and forwards the | ||||
| request. | ||||
| [TBD: Would cover Gx/Rx and maybe S9..] | 3. S1 is overloaded. It sends a answer indicating success, but also | |||
| includes an overload report. Since the overload report only | ||||
| applies to S1, the ReportType is "Destination-Host". | ||||
| C.3. Mix of Destination-Realm routed requests and Destination-Host | 4. The agent sees the overload report, and records that S1 is | |||
| reouted requests | overloaded by the value in the Reduction-Percentage AVP. It | |||
| begins diverting the indicated percentage of realm-routed traffic | ||||
| from S1 to S2 and S3. Since it can't divert Destination-Host | ||||
| routed traffic, it forwards the overload report to the client. | ||||
| This effectively delegates the throttling of traffic with | ||||
| Destination-Host:S1 to the client. | ||||
| [TBD: Add example showing the use of Destination-Host type OLRs and | 5. The client sends another Destination-Realm routed request. | |||
| Realm type OLRs.] | ||||
| 6. The agent selects S2, and forwards the request. | ||||
| 7. It turns out that S2 is also overloaded, perhaps due to all that | ||||
| traffic it took over for S1. S2 returns an successful answer | ||||
| containing an overload report. Since this report only applies to | ||||
| S2, the ReportType is "Destination-Host". | ||||
| 8. The agent sees that S2 is also overloaded by the value in | ||||
| Reduction-Percentage. This value is probably different than the | ||||
| value from S1's report. The agent diverts the remaining traffic | ||||
| to S3 as best as it can, but it calculates that the remaining | ||||
| capacity across all three servers is no longer sufficient to | ||||
| handle all of the realm-routed traffic. This means the realm | ||||
| itself is overloaded. The realm's overload percentage is most | ||||
| likely different than that for either S1 or S2. The agent | ||||
| forward's S2's report back to the client in the Diameter answer. | ||||
| Additionally, the agent generates a new report for the realm of | ||||
| "realm", and inserts that report into the answer. The client | ||||
| throttles requests with Destination-Host:S1 at one rate, requests | ||||
| with Destination-Host:S2 at another rate, and requests with no | ||||
| Destination-Host AVP at yet a third rate. (Since S3 has not | ||||
| indicated overload, the client does not throttle requests with | ||||
| Destination-Host:S3.) | ||||
| 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 | |||
| skipping to change at line 1803 ¶ | skipping to change at page 38, line 4 ¶ | |||
| Email: srdonovan@usdonovans.com | Email: srdonovan@usdonovans.com | |||
| Ben Campbell | Ben Campbell | |||
| Oracle | Oracle | |||
| 17210 Campbell Road | 17210 Campbell Road | |||
| Dallas, Texas 75254 | Dallas, Texas 75254 | |||
| United States | United States | |||
| Email: ben@nostrum.com | Email: ben@nostrum.com | |||
| Lionel Morand | ||||
| Orange Labs | ||||
| 38/40 rue du General Leclerc | ||||
| Issy-Les-Moulineaux Cedex 9 92794 | ||||
| France | ||||
| Phone: +33145296257 | ||||
| Email: lionel.morand@orange.com | ||||
| End of changes. 153 change blocks. | ||||
| 1024 lines changed or deleted | 922 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/ | ||||