| < draft-docdt-dime-ovli-00.txt | draft-docdt-dime-ovli-01.txt > | |||
|---|---|---|---|---|
| Diameter Maintenance and Extensions (DIME) J. Korhonen, Ed. | Diameter Maintenance and Extensions J. Korhonen, Ed. | |||
| Internet-Draft Broadcom Communications | (DIME) Broadcom Communications | |||
| Intended status: Standards Track S. Donovan | Internet-Draft S. Donovan | |||
| Expires: April 24, 2014 B. Campbell | Intended status: Standards Track B. Campbell | |||
| Oracle | Expires: May 8, 2014 Oracle | |||
| October 21, 2013 | November 4, 2013 | |||
| Diameter Overload Indication Conveyance | Diameter Overload Indication Conveyance | |||
| draft-docdt-dime-ovli-00.txt | draft-docdt-dime-ovli-01.txt | |||
| Abstract | Abstract | |||
| This specification documents a Diameter Overload Information | This specification documents a Diameter Overload Control (DOC) base | |||
| Conveyance (DOIC) base solution and the dissemination of the overload | solution and the dissemination of the overload report information. | |||
| report information. | ||||
| Requirements | Requirements | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| Status of This Memo | Status of this Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on April 24, 2014. | This Internet-Draft will expire on May 8, 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 3 | 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.1. Architectural Assumptions . . . . . . . . . . . . . . . . 6 | 3.1. Architectural Assumptions . . . . . . . . . . . . . . . . 6 | |||
| 3.1.1. Application Classification . . . . . . . . . . . . . 6 | 3.1.1. Application Classification . . . . . . . . . . . . . . 7 | |||
| 3.1.2. Application Type Overload Implications . . . . . . . 7 | 3.1.2. Application Type Overload Implications . . . . . . . . 8 | |||
| 3.1.3. Request Transaction Classification . . . . . . . . . 8 | 3.1.3. Request Transaction Classification . . . . . . . . . . 9 | |||
| 3.1.4. Request Type Overload Implications . . . . . . . . . 9 | 3.1.4. Request Type Overload Implications . . . . . . . . . . 10 | |||
| 3.1.5. Diameter Deployment Scenarios . . . . . . . . . . . . 10 | 3.1.5. Diameter Deployment Scenarios . . . . . . . . . . . . 11 | |||
| 3.1.6. Diameter Agent Behaviour . . . . . . . . . . . . . . 11 | 3.1.6. Diameter Agent Behaviour . . . . . . . . . . . . . . . 12 | |||
| 3.1.7. Simplified Example Architecture . . . . . . . . . . . 12 | 3.1.7. Simplified Example Architecture . . . . . . . . . . . 13 | |||
| 3.2. Conveyance of the Overload Indication . . . . . . . . . . 13 | 3.2. Conveyance of the Overload Indication . . . . . . . . . . 14 | |||
| 3.2.1. Negotiation and Versioning . . . . . . . . . . . . . 13 | 3.2.1. Negotiation and Versioning . . . . . . . . . . . . . . 14 | |||
| 3.2.2. Transmission of the Attribute Value Pairs . . . . . . 13 | 3.2.2. Transmission of the Attribute Value Pairs . . . . . . 14 | |||
| 3.3. Overload Condition Indication . . . . . . . . . . . . . . 14 | 3.3. Overload Condition Indication . . . . . . . . . . . . . . 15 | |||
| 4. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 14 | 4. Attribute Value Pairs . . . . . . . . . . . . . . . . . . . . 15 | |||
| 4.1. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 14 | 4.1. OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . . 15 | |||
| 4.2. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 16 | 4.2. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.3. TimeStamp AVP . . . . . . . . . . . . . . . . . . . . . . 16 | 4.3. TimeStamp AVP . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 4.4. ValidityDuration AVP . . . . . . . . . . . . . . . . . . 17 | 4.4. ValidityDuration AVP . . . . . . . . . . . . . . . . . . . 17 | |||
| 4.5. ReportType AVP . . . . . . . . . . . . . . . . . . . . . 17 | 4.5. ReportType AVP . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 4.6. OC-Algorithm AVP . . . . . . . . . . . . . . . . . . . . 18 | 4.6. Reduction-Percentage AVP . . . . . . . . . . . . . . . . . 18 | |||
| 4.7. Algorithm-ID AVP . . . . . . . . . . . . . . . . . . . . 18 | 4.7. Attribute Value Pair flag rules . . . . . . . . . . . . . 19 | |||
| 4.8. Reduction-Percentage AVP . . . . . . . . . . . . . . . . 19 | 5. Overload Control Operation . . . . . . . . . . . . . . . . . . 19 | |||
| 4.9. Attribute Value Pair flag rules . . . . . . . . . . . . . 19 | 5.1. Overload Control Endpoints . . . . . . . . . . . . . . . . 19 | |||
| 5. Overload Control Operation . . . . . . . . . . . . . . . . . 20 | 5.2. Piggybacking Principle . . . . . . . . . . . . . . . . . . 23 | |||
| 5.1. Overload Control Endpoints . . . . . . . . . . . . . . . 20 | 5.3. Capability Announcement . . . . . . . . . . . . . . . . . 23 | |||
| 5.2. Piggybacking Principle . . . . . . . . . . . . . . . . . 20 | 5.3.1. Request Message Initiator Endpoint Considerations . . 24 | |||
| 5.3. Capability Negotiation . . . . . . . . . . . . . . . . . 21 | 5.3.2. Answer Message Initiating Endpoint Considerations . . 24 | |||
| 5.3.1. Request Message Initiator Endpoint Considerations . . 21 | 5.4. Protocol Extensibility . . . . . . . . . . . . . . . . . . 25 | |||
| 5.3.2. Answer Message Initiating Endpoint Considerations . . 22 | 5.5. Overload Report Processing . . . . . . . . . . . . . . . . 25 | |||
| 5.4. Protocol Extensibility . . . . . . . . . . . . . . . . . 23 | 5.5.1. Sender Endpoint Considerations . . . . . . . . . . . . 25 | |||
| 5.5. Overload Report Processing . . . . . . . . . . . . . . . 23 | 5.5.2. Receiver Endpoint Considerations . . . . . . . . . . . 25 | |||
| 5.5.1. Sender Endpoint Considerations . . . . . . . . . . . 23 | 6. Transport Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
| 5.5.2. Receiver Endpoint Considerations . . . . . . . . . . 23 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 6. Transport Considerations . . . . . . . . . . . . . . . . . . 23 | 7.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | 7.2. New registries . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 7.1. AVP codes . . . . . . . . . . . . . . . . . . . . . . . . 24 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | |||
| 7.2. New registries . . . . . . . . . . . . . . . . . . . . . 24 | 8.1. Potential Threat Modes . . . . . . . . . . . . . . . . . . 27 | |||
| 8.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 28 | ||||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | 8.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 28 | |||
| 8.1. Potential Threat Modes . . . . . . . . . . . . . . . . . 25 | 8.4. End-to End-Security Issues . . . . . . . . . . . . . . . . 28 | |||
| 8.2. Denial of Service Attacks . . . . . . . . . . . . . . . . 26 | 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 8.3. Non-Compliant Nodes . . . . . . . . . . . . . . . . . . . 26 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 8.4. End-to End-Security Issues . . . . . . . . . . . . . . . 26 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 28 | 11.1. Normative References . . . . . . . . . . . . . . . . . . . 30 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 | 11.2. Informative References . . . . . . . . . . . . . . . . . . 31 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 | Appendix A. Issues left for future specifications . . . . . . . . 31 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 28 | A.1. Additional traffic abatement algorithms . . . . . . . . . 31 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 29 | A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| Appendix A. Issues left for future specifications . . . . . . . 29 | A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . . 31 | |||
| A.1. Additional traffic abatement algorithms . . . . . . . . . 29 | Appendix B. Conformance to Requirements . . . . . . . . . . . . . 32 | |||
| A.2. Agent Overload . . . . . . . . . . . . . . . . . . . . . 29 | Appendix C. Examples . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| A.3. DIAMETER_TOO_BUSY clarifications . . . . . . . . . . . . 29 | C.1. 3GPP S6a interface overload indication . . . . . . . . . . 41 | |||
| A.4. Load . . . . . . . . . . . . . . . . . . . . . . . . . . 30 | C.2. 3GPP PCC interfaces overload indication . . . . . . . . . 41 | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 30 | C.3. Mix of Destination-Realm routed requests and | |||
| B.1. 3GPP S6a interface overload indication . . . . . . . . . 30 | Destination-Host reouted requests . . . . . . . . . . . . 41 | |||
| B.2. 3GPP PCC interfaces overload indication . . . . . . . . . 30 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| B.3. Mix of Destination-Realm routed requests and Destination- | ||||
| Host reouted requests . . . . . . . . . . . . . . . . . . 30 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 | ||||
| 1. Introduction | 1. Introduction | |||
| This specification defines a base solution for the Diameter Overload | This specification defines a base solution for the Diameter Overload | |||
| Information Conveyance (DOIC). The requirements for the solution are | Control (DOC). The requirements for the solution are described and | |||
| described and discussed in the corresponding design requirements | discussed in the corresponding design requirements document | |||
| document [I-D.ietf-dime-overload-reqs]. Note that the overload | [I-D.ietf-dime-overload-reqs]. Note that the overload control | |||
| control solution defined in this specification does not address all | solution defined in this specification does not address all the | |||
| the requirements listed in [I-D.ietf-dime-overload-reqs]. A number | requirements listed in [I-D.ietf-dime-overload-reqs]. A number of | |||
| of overload control related features are left for the future | overload control related features are left for the future | |||
| specifications. See Appendix A for more detailed discussion on | specifications. See Appendix A for more detailed discussion on | |||
| those. | those. | |||
| The solution defined in this specification addresses the Diameter | ||||
| overload control between two endpoints (see Section 5.1). | ||||
| Furthermore, the solution is designed to apply to existing and future | ||||
| Diameter applications, requires no changes to the Diameter base | ||||
| protocol [RFC6733] and is deployable in environments where some | ||||
| Diameter nodes do not implement the Diameter overload control | ||||
| 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. | |||
| skipping to change at page 5, line 10 ¶ | skipping to change at page 5, line 46 ¶ | |||
| Overload Management: | Overload Management: | |||
| The SFE is the entity that understands the consolidated overload | The SFE is the entity that understands the consolidated overload | |||
| state for the server farm. Just as it is outside the scope of | state for the server farm. Just as it is outside the scope of | |||
| this document to specify how a Diameter server calculates its | this document to specify how a Diameter server calculates its | |||
| overload state, it is also outside the scope of this document to | overload state, it is also outside the scope of this document to | |||
| specify how an SFE calculates the overload state for the set of | specify how an SFE calculates the overload state for the set of | |||
| servers. This document describes how the SFE communicates | servers. This document describes how the SFE communicates | |||
| Overload information to Diameter Clients. | Overload information to Diameter Clients. | |||
| [OpenIssue: Does this mean the way servers communicate overload | ||||
| info to an SFE is also out of scope? It would be nice if the | ||||
| mechanism is useful for that purpose.] | ||||
| 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 the server farm can be discovered from | |||
| Diameter messages sent outside a predefined boundary (typically an | Diameter messages sent outside a predefined boundary (typically an | |||
| administrative domain). This includes obfuscating identifiers and | administrative domain). This includes obfuscating identifiers and | |||
| address information of Diameter entities in the server farm. It | address information of Diameter entities in the server farm. It | |||
| can also include hiding the number of various Diameter entities in | can also include hiding the number of various Diameter entities in | |||
| the server farm. Identifying information can occur in many | the server farm. Identifying information can occur in many | |||
| Diameter Attribute-Value Pairs (AVPs), including Origin-Host, | Diameter Attribute-Value Pairs (AVPs), including Origin-Host, | |||
| skipping to change at page 6, line 4 ¶ | skipping to change at page 6, line 34 ¶ | |||
| agent rejecting requests with appropriate error responses. | agent rejecting requests with appropriate error responses. | |||
| Clients and agents can also choose to redirect throttled requests | Clients and agents can also choose to redirect throttled requests | |||
| to some other entity or entities capable of handling them. | to some other entity or entities capable of handling them. | |||
| Reporting Node | Reporting Node | |||
| A Diameter node that generates an overload report. (This may or | A Diameter node that generates an overload report. (This may or | |||
| may not be the actually overloaded node.) | may not be the 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. | ||||
| 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 underly 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 entity 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. The primary | |||
| differentiator between these types of applications is the lifetime of | differentiator between these types of applications is the lifetime of | |||
| Session-IDs. | 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. | |||
| skipping to change at page 7, line 20 ¶ | skipping to change at page 8, line 12 ¶ | |||
| 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: Requests within a stateless application have | |||
| no relationship to each other. The 3GPP defined S13 application | no relationship to each other. The 3GPP defined S13 application | |||
| is an example of a stateless application. | is an example of a stateless application. | |||
| Pseudo-session applications: While this class of application does | Pseudo-session applications: While this class of application does | |||
| not use the Diameter Session-ID AVP to correlate requests, there | not use the Diameter Session-ID AVP to correlate requests, there | |||
| is an implied ordering of transactions defined by the application. | is an implied ordering of transactions defined by the application. | |||
| Transactions in a pseudo-session typically need to be handled by | The 3GPP defined Cx application [reference] is an example of a | |||
| the same server. The 3GPP defined Cx application [reference] is | pseudo-session application. | |||
| an example of a pseudo-session application. | ||||
| [OpenIssue: Do we assume that all requests in a pseudo-session | ||||
| typically need to go to the same server?] | ||||
| The accounting application defined in [RFC6733] and the Credit- | The accounting application defined in [RFC6733] and the Credit- | |||
| Control application defined in [RFC4006] are examples of Diameter | Control application defined in [RFC4006] are examples of Diameter | |||
| session-based applications. | session-based applications. | |||
| 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 | |||
| skipping to change at page 8, line 30 ¶ | skipping to change at page 9, line 28 ¶ | |||
| generally means that transactions later in the sequence of | generally means that transactions later in the sequence of | |||
| transactions should be given more favorable treatment than | transactions should be given more favorable treatment than | |||
| messages earlier in the sequence. This is because more work has | messages earlier in the sequence. This is because more work has | |||
| already been done by the Diameter network for those transactions | already been done by the Diameter network for those transactions | |||
| that occur later in the sequence. Rejecting them could result in | that occur later in the sequence. Rejecting them could result in | |||
| increasing the load on the network as the transactions earlier in | increasing the load on the network as the transactions earlier in | |||
| the sequence might also need to be repeated. | the sequence might also need to be repeated. | |||
| Stateful applications: Overload handling for stateful applications | Stateful applications: Overload handling for stateful applications | |||
| must take into consideration the work associated with setting up | must take into consideration the work associated with setting up | |||
| an maintaining a session. As such, the Diameter entity handling | an maintaining a session. As such, the entity handling overload | |||
| overload for a stateful application might tend to reject new | of a Diameter entity for a stateful application might tend to | |||
| session requests before rejecting intra-session requests. In | reject new session requests before rejecting intra-session | |||
| addition, session ending requests might be given a lower chance of | requests. In addition, session ending requests might be given a | |||
| being rejected, since rejecting session ending requests could | lower priority of being rejected as rejecting session ending | |||
| result in session status being out of sync between the Diameter | requests could result in session status being out of sync between | |||
| clients and servers, while successful execution might actually | the Diameter clients and servers. Nodes that reject mid-session | |||
| free up resources. Nodes that reject mid-session requests will | requests will need to consider whether the rejection invalidates | |||
| need to consider whether the rejection invalidates the session, | the session, and any session clean-up that may be required. | |||
| and any session clean-up that may be required. | ||||
| 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: An independent request is not a part of a | |||
| Diameter session and, as such, the lifetime of the session-id is | Diameter session and, as such, the lifetime of the session-id is | |||
| constrained to an individual transaction. | constrained to an individual transaction. | |||
| Session-Initiating Request: A session-initiating request is the | Session-Initiating Request: A session-initiating request is the | |||
| initial message that establishes a Diameter session. The ACR | initial message that establishes a Diameter session. The ACR | |||
| message defined in [RFC6733] is an example of a session-initiating | message defined in [RFC6733] is an example of a session-initiating | |||
| skipping to change at page 9, line 14 ¶ | skipping to change at page 10, line 9 ¶ | |||
| Correlated Session-Initiating Request: There are cases, most notably | Correlated Session-Initiating Request: There are cases, most notably | |||
| in the 3GPP PCC architecture, where multiple Diameter sessions are | in the 3GPP PCC architecture, where multiple Diameter sessions are | |||
| correlated and must be handled by the same Diameter server. This | correlated and must be handled by the same Diameter server. This | |||
| is a special case of a Session-Initiating Request. Gx CCR-I | is a special case of a Session-Initiating Request. Gx CCR-I | |||
| requests and Rx AAR messages are examples of correlated session- | requests and Rx AAR messages are examples of correlated session- | |||
| initiating requests. | initiating requests. | |||
| [OpenIssue: The previous paragraph needs references.] | [OpenIssue: The previous paragraph needs references.] | |||
| Intra-Session Request: An intra-session request is a request that | Intra-Session Request: An intra session request is a request that | |||
| uses a session-id for an already established session. An intra | uses a session-id for an already established 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. CCR-U and CCR-T requests defined in [RFC4006] are | |||
| further examples of intra-session requests. | further examples of intra-session requests. | |||
| Pseudo-Session Requests: Pseudo session requests are independent | Pseudo-Session Requests: Pseudo session requests are independent | |||
| requests and, as such, the request transactions are not tied | requests and, as such, the request transactions are not tied | |||
| together using the Diameter session-id. There exist Diameter | together using the Diameter session-id. There exist 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. | |||
| [OpenIssue: This section offers discusses priorities around | ||||
| throttling of requests. Should we also discuss considerations for | ||||
| diverting requests non-overloaded destinations?] | ||||
| 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. | |||
| Independent requests: Independent requests can be given equal | Independent requests: Independent requests can be given equal | |||
| treatment when making throttling decisions. | treatment when making throttling decisions. | |||
| Session-creating requests: Session-creating requests represent more | Session-creating requests: Session-creating requests represent more | |||
| work than independent or intra-session requests. As such, | work than independent or intra-session requests. As such, | |||
| skipping to change at page 10, line 33 ¶ | skipping to change at page 11, line 27 ¶ | |||
| 3.1.5. Diameter Deployment Scenarios | 3.1.5. Diameter Deployment Scenarios | |||
| This section discusses various Diameter network deployment scenarios | This section discusses various Diameter network deployment scenarios | |||
| and the implications of those deployment models on handling of | and the implications of those deployment models on handling of | |||
| overload reports. | overload reports. | |||
| The scenarios vary based on the following: | The scenarios vary based on the following: | |||
| o The presence or absence of Diameter agents | o The presence or absence of Diameter agents | |||
| o Which Diameter entities support the DOIC extension | o Which Diameter entities support the DOC extension | |||
| o The amount of the network topology understood by Diameter clients | o The amount of the network topology understood by Diameter clients | |||
| o The complexity of the Diameter server deployment for a Diameter | o The complexity of the Diameter server deployment for a Diameter | |||
| application | application | |||
| o Number of Diameter applications supported by Diameter clients and | o Number of Diameter applications supported by Diameter clients and | |||
| Diameter servers | Diameter servers | |||
| Without consideration for which elements support the DOIC extension, | Without consideration for which elements support the DOC extension, | |||
| the following is a representative list of deployment scenarios: | the following is a representative list of deployment scenarios: | |||
| o Client --- Server | o Client --- Server | |||
| o Client --- Multiple equivalent servers | o Client --- Multiple equivalent servers | |||
| o Client --- Agent --- Multiple equivalent servers | o Client --- Agent --- Multiple equivalent servers | |||
| o Client --- Agent [ --- Agent ] --- Partitioned server | o Client --- Agent [ --- Agent ] --- Partitioned server | |||
| o Client --- Edge Agent [ --- Edge Agent] --- { Multiple Equivalent | o Client --- Edge Agent [ --- Edge Agent] --- { Multiple Equivalent | |||
| Servers | Partitioned Servers } | Servers | Partitioned Servers } | |||
| o Client --- Session Correlating Agent --- Multiple Equivalent | o Client --- Session Correlating Agent --- Multiple Equivalent | |||
| Servers | Servers | |||
| [OpenIssue: Do the "multiple equivalent servers" cases change for | [OpenIssue: Do the "multiple equivalent servers" cases change for | |||
| session-stateful applications? Do we need to distinguish equivalence | session-stateful applications? Do we need to distinguish equivalence | |||
| for session-initiation requests vs intra-session requests?] | for session-initiation requests vs intra-session requests?] | |||
| The following is a list of representative DOIC deployment scenarios: | The following is a list of representative DOC deployment scenarios: | |||
| o Direct connection between a DOIC client and a DOIC server | ||||
| o DOIC client --- one or more non-DOIC agent(s) --- DOIC server | o Direct connection between a DOC client and a DOC server | |||
| o DOIC client --- DOIC agent --- DOIC server | o DOC client --- non-DOC agent --- DOC server | |||
| o Non-DOIC client --- DOIC agent --- DOIC server | o DOC client --- DOC agent --- DOC server | |||
| o Non-DOIC client --- DOIC agent --- Mix of DOIC and non-DOIC | o Non-DOC client --- DOC agent --- DOC server | |||
| servers | ||||
| o DOIC client --- DOIC agent --- Partitioned/Segmented DOIC server | o Non-DOC client --- DOC agent --- Mix of DOC and non-DOC servers | |||
| o DOIC client --- DOIC agent --- DOIC agent --- Partitioned/ | o DOC client --- agent --- Partitioned/Segmented DOC server | |||
| Segmented DOIC server | ||||
| o DOIC client --- DOIC edge agent --- DOIC edge agent --- DOIC | o DOC client --- agent --- agent --- Partitioned/Segmented DOC | |||
| server | server | |||
| o DOC client --- edge agent --- edge agent --- DOC server | ||||
| [OpenIssue: In the last 3 list entries, are the agents DOC or non- | ||||
| DOC?] | ||||
| 3.1.6. Diameter Agent Behaviour | 3.1.6. 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 defined. This is important because agents may actively | needs to be common. This is important because agents may actively | |||
| participate in the handling of 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, and | |||
| acting as a server front end for a server farm of real Diameter | acting as a server front end for a server farm of real 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 assumptions 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", perhaps | |||
| acting as a topology hiding SFE, the DOIC mechanism MUST NOT leak | acting as an topology hiding SFE, the DOC mechanism MUST NOT leak | |||
| information of the Diameter nodes behind it. From the Diameter | information of the Diameter nodes behind it. From the Diameter | |||
| client point of view the final destination to its requests and the | client point of view the final destination to its requests and the | |||
| original source for the answers MUST be the Diameter agent. This | original source for the answers MUST be the Diameter agent. This | |||
| requirement means that such a Diameter agent acts as a back-to- | requirement means that such a Diameter agent acts as a back-to- | |||
| back-agent for DOIC purposes. How the agent in this case appears | back-agent for DOC purposes. How the agent in this case appears | |||
| to the Diameter nodes it is representing (i.e. the real Diameter | to the Diameter nodes it is representing (i.e. the real Diameter | |||
| servers), is an implementation and a deployment specific within | servers), is an implementation and a deployment specific within | |||
| the realm the Diameter agent is deployed. | the realm the Diameter agent is deployed. | |||
| o This requirement also implies that if the Diameter agent does not | o This requirement also implies that if the Diameter agent does not | |||
| impersonate the servers behind it, the Diameter dialogue is | impersonate the servers behind it, the Diameter dialogue is | |||
| established between clients and servers and any overload | established between clients and servers and any overload | |||
| information received by a client would be from a given server | information received by a client would be from a given server | |||
| identified by the Origin-Host identity. | identified by the Origin-Host identity. | |||
| skipping to change at page 12, line 38 ¶ | skipping to change at page 13, line 34 ¶ | |||
| topology hiding or SFIM in order to do so. We cannot assume that an | topology hiding or SFIM in order to do so. We cannot assume that an | |||
| OLR is always "from" or "about" the Origin-Host. Also, the section | OLR is always "from" or "about" the Origin-Host. Also, the section | |||
| seems to assume that topology hiding agents act as b2b overload | seems to assume that topology hiding agents act as b2b overload | |||
| agents, but non-topology hiding agents never do. It don't think | agents, but non-topology hiding agents never do. It don't think | |||
| that's the right abstraction. It's possible that topology-hiding | 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 | 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.] | hiding agents from also doing it, at least some of the time.] | |||
| 3.1.7. Simplified Example Architecture | 3.1.7. Simplified Example Architecture | |||
| Figure 1 illustrates the simplified architecture for Diameter | ||||
| overload control. See Section 5.1 for more discussion and details | ||||
| how different Diameter nodes fit into the architecture from the DOIC | ||||
| point of view. | ||||
| Realm X Other Realms | Realm X Other Realms | |||
| <--------------------------------------> <----------------------> | <--------------------------------------> <----------------------> | |||
| +--^-----+ : (optional) : | +--^-----+ : (optional) : | |||
| |Diameter| : : | |Diameter| : : | |||
| |Server A|--+ .--. : +---^----+ : .--. | |Server A|--+ .--. : +---^----+ : .--. | |||
| +--------+ | _( `. : |Diameter| : _( `. +---^----+ | +--------+ | _( `. : |Diameter| : _( `. +---^----+ | |||
| +--( )--:-| Agent |-:--( )--|Diameter| | +--( )--:-| Agent |-:--( )--|Diameter| | |||
| +--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | | +--------+ | ( ` . ) ) : +-----^--+ : ( ` . ) ) | Client | | |||
| |Diameter|--+ `--(___.-' : : `--(___.-' +-----^--+ | |Diameter|--+ `--(___.-' : : `--(___.-' +-----^--+ | |||
| |Server B| : : | |Server B| : : | |||
| +---^----+ : : | +---^----+ : : | |||
| Overload Indication A Overload Indication A' | Overload Indication A Overload Indication A' | |||
| 1) <----------------------> <----------------------> | 1) <----------------------> <----------------------> | |||
| standard base protocol standard base protocol | standard base protocol standard base protocol | |||
| End-to-end Overload Indication | End-to-end Overload Indication | |||
| 2) <-----------------------------------------------> | 2) <-----------------------------------------------> | |||
| standard base protocol | standard base protocol | |||
| Simplified architecture choices for overload indication delivery | Figure 1: Simplified architecture choices for overload indication | |||
| delivery | ||||
| [OpenIssue: Need to clarify the meaning of option 2 with the agent in | ||||
| place. Does this mean the agent is not an Overload Endpoint?] | ||||
| 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 features describe new Diameter AVPs used for sending | |||
| overload reports, and for declaring support for certain DOIC | overload reports, and for declaring support for certain DOC features. | |||
| features. | ||||
| 3.2.1. Negotiation and Versioning | 3.2.1. Negotiation and Versioning | |||
| Since the Diameter overload control mechanism is also designed to | Since the Diameter overload control mechanism is also designed to | |||
| work over existing application (i.e., the piggybacking principle), a | work over existing application (i.e., the piggybacking principle), a | |||
| proper negotiation is hard to accomplish. The "capability | proper negotiation is hard to accomplish. The "capability | |||
| negotiation" is based on the existense of specific non-mandatory | negotiation" is based on the existense of specific non-mandatory APV, | |||
| APVs, such as the OC-Feature-Vector AVP (see Section 4.1. Although | such as the OC-Feature-Vector AVP (see Section 4.1. Although the OC- | |||
| the OC-Feature-Vector AVP can be used to advertise a certain set of | Feature-Vector AVP can be used to advertise a certain set of new or | |||
| 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 | 3.2.2. Transmission of the Attribute Value Pairs | |||
| The Diameter overload control APVs SHOULD always be sent as an | The Diameter overload control APVs SHOULD always be sent as an | |||
| optional AVPs. This requirement stems from the fact that | optional AVPs. This requirement stems from the fact that | |||
| piggybacking overload control information on top of existing | piggybacking overload control information on top of existing | |||
| application cannot really use AVPs with the M-bit set. However, | application cannot really use AVPs with the M-bit set. However, | |||
| there are certain exceptions as explained in Section 5.4. | 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 always the requester of the overload report | |||
| information and the "Reporting node" is the provider of the overload | information and the "Reporting node" is the provider of the overload | |||
| report. The overload report or the capability information in the | report. The overload report or the capability information in the | |||
| request message is always interpreted as an announcement of a | request message is always interpreted as an announcement of a | |||
| "capability". The capability information and the overload report in | "capability". The overload report and the capability information in | |||
| the answer is always interpreted respectively as a report of | the answer is always interpreted as a report of supported commond | |||
| supported common functionality and as a status report of an overload | functionality and as a status report of an overload condition (of a | |||
| condition. | node). | |||
| 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 encoded in Diameter Attribute Value | |||
| Pairs (AVPs). | Pairs (AVPs). | |||
| skipping to change at page 14, line 35 ¶ | skipping to change at page 15, line 37 ¶ | |||
| 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 Overload | |||
| Indication Attribute Value Pairs (AVPs). | Indication Attribute Value Pairs (AVPs). | |||
| 4.1. OC-Feature-Vector AVP | 4.1. OC-Feature-Vector AVP | |||
| The OC-Feature-Vector AVP (AVP code TBD1) is type of Unsigned64 and | The OC-Feature-Vector AVP (AVP code TBD1) is type of Unsigned64 and | |||
| contains a 64 bit flags field of supported capabilities of an | contains a 64 bit flags field of announced capabilities of an | |||
| overload control endpoint. Receiving the OC-Feature-Vector AVP with | overload control endpoint. Sending or receiving the OC-Feature- | |||
| the value 0 indicates that two endpoints do not share a single common | Vector AVP with the value 0 indicates that the endpoint only support | |||
| capability (or a capability they could agree based on the local | the capabilities defined in this specification. | |||
| policy and/or configuration). A request message initiating endpoint | ||||
| (a reacting node) MUST NOT send the OC-Feature-Vector AVP with the | ||||
| value 0. | ||||
| [OpenIssue: We need further discussion on whether the "no shared | ||||
| capability" case is allowed, or if we guarantee certain basic levels | ||||
| of compatibility by using mandatory-to-support defaults.] | ||||
| An overload control endpoint (a reacting node) MAY include this AVP | ||||
| to indicate its capabilities to the other overload control endpoint | ||||
| (the reporting node). For example, the endpoint (reacting node) may | ||||
| indicate which traffic abatement algorithms it supports in addition | ||||
| to the default. | ||||
| [OpenIssue: There is an ongoing discussion as to whether the OC- | An overload control endpoint (a reacting node) includes this AVP to | |||
| Feature-Vector AVP should be an optional (MAY vs MUST) way to declare | indicate its capabilities to the other overload control endpoint (the | |||
| support, where new Diameter applications could define other ways, or | reporting node). For example, the endpoint (reacting node) may | |||
| whether this should be the "one true" way. The latter approach | indicate which (future defined) traffic abatement algorithms it | |||
| prevents agents that are not application aware from supporting DOIC, | supports in addition to the default. | |||
| but the latter may reduce the flexibility for defining new | ||||
| applications.] | ||||
| 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 endpoint sending a | |||
| request (the reacting node) includes the OC-Feature-Vector AVP with | request (the reacting node) includes the OC-Feature-Vector AVP with | |||
| those flags set that correspond what it supports. The endpoint that | those flags set that correspond what it supports. The endpoint that | |||
| sends the answer (the reporting node) also includes the OC-Feature- | sends the answer (the reporting node) also includes the OC-Feature- | |||
| Vector AVP with flags set to describe the capabilities it both | Vector AVP with flags set to describe the capabilities it both | |||
| supports and agrees with the request sender (e.g., based on the local | supports and agrees with the request sender (e.g., based on the local | |||
| policy and/or configuration). The answer sending endpoint (the | policy and/or configuration). The answer sending endpoint (the | |||
| reporting node) does not need to advertise those capabilities it is | reporting node) does not need to advertise those capabilities it is | |||
| not going to use with the request sending endpoint (the reacting | not going to use with the request sending endpoint (the reacting | |||
| node). | node). | |||
| Note that when the OC-Feature-Vector AVP is used together with the | This specification does not define any additional capability flag. | |||
| OC-OLR AVPs, the contents of the announced features and the contents | The implicity capability (all flags set to zero) indicates the | |||
| of the OC-OLR AVPs MUST NOT contradict each other. In a case they | support for this specification only. | |||
| do, the receiver of contradicting information SHOULD discard the AVPs | ||||
| as if they were not present to start with and log the event. | ||||
| In some cases a single flag bit in the OC-Feature-Vector AVP is not | ||||
| verbose enough to describe all of the advertised capability. This | ||||
| concerns the situation where the OC-Feature-Vector AVP is sent in a | ||||
| request message. In this particular case, the OC-OLR AVP MUST | ||||
| contain the rest of the required parameters. For example, if the | ||||
| advertised capability concerns an abatement algorithm that needs more | ||||
| algorithm specific parameters to agree on, then the OC-OLR abatement | ||||
| algorithm specific AVPs MUST contain the rest of the parameter | ||||
| information. | ||||
| The following capabilities are defined in this document: | ||||
| OLR_DEFAULT_ALGO (0x0000000000000001) | ||||
| When this flag is set by the overload control endpoint it means | ||||
| that the default traffic abatement (loss) algorithm is supported. | ||||
| 4.2. OC-OLR AVP | 4.2. OC-OLR AVP | |||
| The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the | The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the | |||
| necessary information to convey an overload report. OC-OLR may also | necessary information to convey an overload report. OC-OLR may also | |||
| be used to convey additional information about an extension that is | be used to convey additional information about an extension that is | |||
| declared in the OC-Feature-Vector AVP. | declared in the OC-Feature-Vector AVP. | |||
| Since the OC-OLR AVP contains information that may be critical for | ||||
| handling overload conditions, reporting nodes SHOULD place the AVP as | ||||
| early in the Diameter message as possible. | ||||
| The OC-OLR AVP does not contain explicit information to which | The OC-OLR AVP does not contain explicit information to which | |||
| application it applies to and who inserted the AVP or whom the | application it applies to and who inserted the AVP or whom the | |||
| specific OC-OLR AVP concerns to. Both these information is | specific OC-OLR AVP concerns to. Both these information is | |||
| implicitly learned from the encapsulating Diameter message/command. | implicitly learned from the encapsulating Diameter message/command. | |||
| The application the OC-OLR AVP applies to is the same as the | The application the OC-OLR AVP applies to is the same as the | |||
| Application-Id found in the Diameter message header. The identity | Application-Id found in the Diameter message header. The identity | |||
| the OC-OLR AVP concerns is determined from the Origin-Host AVP found | the OC-OLR AVP concerns is determined from the Origin-Host AVP found | |||
| from the encapsulating Diameter message. | from the encapsulating Diameter command. | |||
| [OpenIssue: There is ongoing discussion on whether it's best to infer | ||||
| information like application, realm, reporting node identity, etc, | ||||
| from the enclosing Diameter message vs making the overload reports | ||||
| self-contained.] | ||||
| OC-OLR ::= < AVP Header: TBD2 > | OC-OLR ::= < AVP Header: TBD2 > | |||
| < TimeStamp > | < TimeStamp > | |||
| [ Reduction-Percentage ] | ||||
| [ ValidityDuration ] | [ ValidityDuration ] | |||
| [ ReportType ] | [ ReportType ] | |||
| * [ OC-Algorithm ] | ||||
| * [ AVP ] | * [ AVP ] | |||
| The TimeStamp AVP indicates when the original OC-OLR AVP with the | The TimeStamp AVP indicates when the original OC-OLR AVP with the | |||
| current content was created. It is possible to replay the same OC- | current content was created. It is possible to replay the same OC- | |||
| OLR AVP multiple times between the overload endpoints, however, when | OLR AVP multiple times between the overload endpoints, however, when | |||
| the OC-OLR AVP content changes or the other information sending | the OC-OLR AVP content changes or the other information sending | |||
| endpoint wants the receiving endpoint to update its overload control | endpoint wants the receiving endpoint to update its overload control | |||
| information, then the TimeStamp AVP MUST contain a new value. | information, then the TimeStamp AVP MUST contain a new value. | |||
| [OpenIssue: Is this necessarily a timestamp, or is it just a sequence | [OpenIssue: Is this necessarily a timestamp, or is it just a sequence | |||
| number that can be implemented as a timestamp? We should also | number that can be implemented as a timestamp? Is this timestamp | |||
| used to calculate expiration time? (propose no.). We should also | ||||
| consider whether either a timestamp or sequence number is needed for | consider whether either a timestamp or sequence number is needed for | |||
| protection against replay attacks.] | protection against replay attacks.] | |||
| 4.3. TimeStamp AVP | 4.3. TimeStamp AVP | |||
| The TimeStamp AVP (AVP code TBD3) is type of Time. Its usage in the | The TimeStamp AVP (AVP code TBD3) is type of Time. Its usage in the | |||
| context of the overload control is described in Section 4.2. From | context of the overload control is described in Section 4.2. From | |||
| the functionality point of view, the TimeStamp AVP is merely used as | the functionality point of view, the TimeStamp AVP is merely used as | |||
| a non-volatile increasing counter between two overload control | a non-volatile increasing counter between two overload control | |||
| endpoints. | endpoints. | |||
| 4.4. ValidityDuration AVP | 4.4. ValidityDuration AVP | |||
| The ValidityDuration AVP (AVP code TBD4) is type of Unsigned32 and | The ValidityDuration AVP (AVP code TBD4) is type of Unsigned32 and | |||
| describes the number of seconds the OC-OLR AVP and its content is | describes the number of seconds the OC-OLR AVP and its content is | |||
| valid since the creation of the OC-OLR AVP (as indicated by the | valid since the creation of the OC-OLR AVP (as indicated by the | |||
| TimeStamp AVP). | TimeStamp AVP). | |||
| 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.8 discusses the impacts of timeout in | overload report(s). Section 4.6 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. Rather, an overload endpoint | |||
| should explicitly signal either the continuance of the overload | should explicitly signal, e.g. the end of overload condition. This | |||
| condition by sending an new overload report. This new report would | leaves no need for the other overload endpoint to reason or guess the | |||
| indicate a continuance of the overload condition by including a non- | condition the other endpoint is at. | |||
| zero ValidityDuration value, or indicate the end of the condition by | ||||
| including a zero value. This approach leaves no need for the | ||||
| reacting node to reason or guess the current condition of the | ||||
| reporting node. | ||||
| 4.5. ReportType AVP | 4.5. ReportType AVP | |||
| The ReportType AVP (AVP code TBD5) is type of Enumerated. The value | The ReportType AVP (AVP code TBD5) is type of Enumerated. The value | |||
| of the AVP describes what the overload report concerns. The | of the AVP describes what the overload report concerns. The | |||
| following values are initially defined: | following values are initially defined: | |||
| 0 Reserved. | 0 Reserved. | |||
| 1 Destination-Host report. The overload treatment should apply to | 1 Destination-Host report. The overload treatment should apply to | |||
| skipping to change at page 18, line 6 ¶ | skipping to change at page 18, line 6 ¶ | |||
| 2 Realm (aggregated) report. The overload treatment should apply to | 2 Realm (aggregated) report. The overload treatment should apply to | |||
| all requests bound for the overloaded realm. | all requests bound for the overloaded realm. | |||
| The ReportType AVP is envisioned to be useful for situations where a | The ReportType AVP is envisioned to be useful for situations where a | |||
| reacting node needs to apply different overload treatments for | reacting node needs to apply different overload treatments for | |||
| different "types" of overload. For example, the reacting node(s) | 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 requests that are targeted to a specific | |||
| server by the presence of a Destination-Host AVP than for requests | server by the presence of a Destination-Host AVP than for requests | |||
| that can be handled by any server in a realm. The example in | that can be handled by any server in a realm. The example in | |||
| Appendix B.3 illustrates this usage. | Appendix C.3 illustrates this usage. | |||
| [OpenIssue: There is an ongoing discussion about whether the | [OpenIssue: There is an ongoing discussion about whether the | |||
| ReportType AVP is the right way to solve that issue, and whether it's | ReportType AVP is the right way to solve that issue, and whether it's | |||
| needed at all.] | needed at all.] | |||
| [OpenIssue: ReportType should probably be extensible, and have its | 4.6. Reduction-Percentage AVP | |||
| own IANA table.] | ||||
| 4.6. OC-Algorithm AVP | ||||
| The OC-Algorithm AVP (AVP code TBD6) is type of Grouped. The AVP | ||||
| contains the necessary sub-AVPs and information for the use for the | ||||
| traffic abatement algorithm. The OC-Algorithm AVP serves as a | ||||
| generic template for all future traffic abatement algorithms. | ||||
| This specification defines an identifier for the default (loss) | ||||
| algorithm (see Section 4.1 for the OC-Feature-Vector flag | ||||
| corresponding to the algorithm), as well as the format and meaning of | ||||
| that algorithm's input parameter. | ||||
| OC-Algorithm ::= < AVP Header: TBD6 > | ||||
| < Algorithm-ID > | ||||
| [ Reduction-Percentage ] | ||||
| * [ AVP ] | ||||
| As already discussed in Section 4.1 in certain cases, the Algorithm | ||||
| AVP MAY be used in a request message together with the OC-Feature- | ||||
| Vector AVP to describe the detailed parameterization of the abatement | ||||
| algorithm to the other endpoint (i.e. to the reporting node). This | ||||
| implies, the possible future algorithms and their sub-AVPs must be | ||||
| designed accordingly. | ||||
| 4.7. Algorithm-ID AVP | ||||
| The Algorithm-ID AVP (AVP code TBD7) is type of Enumerated and | ||||
| identifies the traffic abatement algorithm the OC-Algorithm AVP | ||||
| "describes" and implements. This specification defines the following | ||||
| algorithms: | ||||
| 0 Reserved. | ||||
| 1 Default (loss) algorithm. | ||||
| 4.8. Reduction-Percentage AVP | ||||
| The Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32 | The 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 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 sender of | |||
| the information is under a severe load and ceases to process any new | the information is under a severe load and ceases to process any new | |||
| messages. The value of 0 means that the sender of the information is | messages. The value of 0 means that the sender of the information is | |||
| in a stable state and has no requests to the other endpoint to apply | in a stable state and has no requests to the other endpoint to apply | |||
| any traffic abatement. | any traffic abatement. | |||
| [OpenIssue: We should consider an algorithm independent way to end an | [Open Issue: We should consider an algorithm independent way to end | |||
| overload condition. Perhaps setting the validitytime to zero? | an overload condition. Perhaps setting the validitytime to zero? | |||
| Counter comment; since the abatement is based on a specific | Counter comment; since the abatement is based on a specific | |||
| algorithm, it is natural to indicate that from the abatement | algorithm, it is natural to indicate that from the abatement | |||
| algorithm point of view status quo has been reached.] | algorithm point of view status quo has been reached.] | |||
| Since a Reduction-Percentage of 100% prevents the reporting node from | If an overload control endpoint comes out of the 100 percent traffic | |||
| explicitly ending the overload condition, such a condition can only | reduction as a result of the overload report timing out, the | |||
| end due to a report timeout. When an overload control endpoint comes | following concerns are RECOMMENDED to be applied. The endpoint | |||
| out of the 100 percent traffic reduction as a result, the following | sending the traffic should be conservative and, for example, first | |||
| concerns are RECOMMENDED to be applied. The endpoint sending the | send few "probe" messages to learn the overload condition of the | |||
| traffic should be conservative and, for example, first send few | other endpoint before converging to any traffic amount/rate decided | |||
| "probe" messages to learn the overload condition of the other | by the sender. Similar concerns actually apply in all cases when the | |||
| endpoint before converging to any traffic level decided by the | ||||
| sender. Similar concerns actually apply in all cases when the | ||||
| overload report times out unless the previous overload report stated | overload report times out unless the previous overload report stated | |||
| 0 percent reduction. | 0 percent reduction. | |||
| 4.9. Attribute Value Pair flag rules | [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 | ||||
| +---------+ | +---------+ | |||
| |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-Feature-Vector TBD1 x.x Unsigned64 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-OLR TBD2 x.x Grouped | | V | | |OC-OLR TBD2 x.x Grouped | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |TimeStamp TBD3 x.x Time | | V | | |TimeStamp TBD3 x.x Time | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |ValidityPeriod TBD4 x.x Unsigned32 | | V | | |ValidityPeriod TBD4 x.x Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |ReportType TBD5 x.x Enumerated | | V | | |ReportType TBD5 x.x Enumerated | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| |OC-Algorithm TBD6 x.x Grouped | | V | | ||||
| +--------------------------------------------------+----+----+ | ||||
| |Algorithm-ID TBD7 x.x Enumerated | | V | | ||||
| +--------------------------------------------------+----+----+ | ||||
| |Reduction | | | | |Reduction | | | | |||
| | -Percentage TBD8 x.x Unsigned32 | | V | | | -Percentage TBD8 x.x Unsigned32 | | V | | |||
| +--------------------------------------------------+----+----+ | +--------------------------------------------------+----+----+ | |||
| 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. An overload control "association" | of an arbitrary Diameter network. The overload control information | |||
| exists between two Diameter nodes that exchanging overload control | is exchanged over on a "DOIC association" between two communicatin | |||
| information. These nodes are called "overload control endpoints". | endpoints. The endpoints, namely the "reacting node" and the | |||
| These endpoints, namely the "reacting node" and the "reporting node" | "reporting node" do not need to be adjacent Diameter peer nodes, nor | |||
| do not need to be adjacent Diameter peer nodes, nor do they need to | they need to be the end-to-end Diameter nodes in a typical "client- | |||
| be the end-to-end Diameter nodes in a typical "client-server" | server" deployment with multiple intermediate Diameter agent nodes in | |||
| deployment with multiple intermediate Diameter agent nodes in | ||||
| between. The overload control endpoint are the two Diameter nodes | between. The overload control endpoint are the two Diameter nodes | |||
| that decide to exchange overload control information between each | that decide to exchange overload control information between each | |||
| other. How the endpoints are determined is specific to a deployment, | other. How the endpoints are determined is specific to a deployment, | |||
| a Diameter node role in that deployment and local configuration. | a Diameter node role in that deployment and local configuration. | |||
| [Editor's note: a picture illustrating the endpoint concept would | The following diagrams illustrate the concept of Diameter Overload | |||
| be useful.] | End-Points and how they differ from the standard [RFC6733] defined | |||
| client, server and agent Diameter nodes. The following is the key to | ||||
| the elements in the diagrams: | ||||
| C Diameter client as defined in [RFC6733]. | ||||
| S Diameter server as defined in [RFC6733]. | ||||
| A Diameter agent, in either a relay or proxy mode, as defined in | ||||
| [RFC6733]. | ||||
| DEP Diameter Overload End-Point as defined in this document. In the | ||||
| following figures a DEP may terminate two different DOIC | ||||
| associations being a reporter and reactor at the same time. | ||||
| Diameter Session A Diameter session as defined in [RFC6733]. | ||||
| DOIC Association A DOIC association exists between two Diameter | ||||
| Overload End-Points. One of the end-points is the overload | ||||
| reporter and the other is the overload reactor. | ||||
| Figure 2 illustrates the most basic configuration where a client is | ||||
| connected directly to a server. In this case, the session and | ||||
| association are both between the client and server. | ||||
| +-----+ +-----+ | ||||
| | C | | S | | ||||
| +-----+ +-----+ | ||||
| | DEP | | DEP | | ||||
| +--+--+ +--+--+ | ||||
| | | | ||||
| | | | ||||
| |{Diameter Session}| | ||||
| | | | ||||
| |{DOIC Association}| | ||||
| | | | ||||
| Figure 2: Basic DOIC deployment | ||||
| In Figure 3 there is an agent that is not participating directly in | ||||
| the exchange of overload reports. As a result, the DOIC association | ||||
| is still between the client and the server. | ||||
| +-----+ +-----+ +-----+ | ||||
| | C | | A | | S | | ||||
| +-----+ +--+--+ +-----+ | ||||
| | DEP | | | DEP | | ||||
| +--+--+ | +--+--+ | ||||
| | | | | ||||
| | | | | ||||
| |----------{Diameter Session}---------| | ||||
| | | | | ||||
| |----------{DOIC Association}---------| | ||||
| | | | | ||||
| Figure 3: DOIC deployment with non participating agent | ||||
| Figure 4 illustrates the case where the client does not support | ||||
| Diameter overload. In this case, the DOIC association is between the | ||||
| agent and the server. The agent handles the role of the reactor for | ||||
| overload reports generated by the server. | ||||
| +-----+ +-----+ +-----+ | ||||
| | C | | A | | S | | ||||
| +--+--+ +-----+ +-----+ | ||||
| | | DEP | | DEP | | ||||
| | +--+--+ +--+--+ | ||||
| | | | | ||||
| | | | | ||||
| |----------{Diameter Session}---------| | ||||
| | | | | ||||
| | |{DOIC Association}| | ||||
| | | | | ||||
| Figure 4: DOIC deployment with non-DOIC client and DOIC enabled agent | ||||
| In Figure 5 there is a DOIC association between the client and the | ||||
| agent and a second DOIC association between the agent and the server. | ||||
| One use case requiring this configuration is when the agent is | ||||
| serving as a SFE/SFIM for a set of servers. | ||||
| +-----+ +-----+ +-----+ | ||||
| | C | | A | | S | | ||||
| +-----+ +-----+ +-----+ | ||||
| | DEP | | DEP | | DEP | | ||||
| +--+--+ +--+--+ +--+--+ | ||||
| | | | | ||||
| | | | | ||||
| |----------{Diameter Session}---------| | ||||
| | | | | ||||
| |{DOIC Association}|{DOIC Association}| | ||||
| | | | | ||||
| Figure 5: A deployment where all nodes support DOIC | ||||
| Figure 6 illustrates a deployment where some clients support Diameter | ||||
| overload control and some do not. In this case the agent must | ||||
| support Diameter overload control for the non supporting client. It | ||||
| might also need to have a DOIC association with the server, as shown | ||||
| here, to handle overload for a server farm and/or for managing Realm | ||||
| overload. | ||||
| +-----+ +-----+ +-----+ +-----+ | ||||
| | C1 | | C2 | | A | | S | | ||||
| +-----+ +--+--+ +-----+ +-----+ | ||||
| | DEP | | | DEP | | DEP | | ||||
| +--+--+ | +--+--+ +--+--+ | ||||
| | | | | | ||||
| | | | | | ||||
| |-------------------{Diameter Session}-------------------| | ||||
| | | | | | ||||
| | |--------{Diameter Session}-----------| | ||||
| | | | | | ||||
| |---------{DOIC Association}----------|{DOIC Association}| | ||||
| | | | | | ||||
| Figure 6: A deployment with DOIC and non-DOIC supporting clients | ||||
| Figure 7 illustrates a deployment where some agents support Diameter | ||||
| overload control and others do not. | ||||
| +-----+ +-----+ +-----+ +-----+ | ||||
| | C | | A | | A | | S | | ||||
| +-----+ +--+--+ +-----+ +-----+ | ||||
| | DEP | | | DEP | | DEP | | ||||
| +--+--+ | +--+--+ +--+--+ | ||||
| | | | | | ||||
| | | | | | ||||
| |-------------------{Diameter Session}-------------------| | ||||
| | | | | | ||||
| | | | | | ||||
| |---------{DOIC Association}----------|{DOIC Association}| | ||||
| | | | | | ||||
| 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 solution defined AVPs are essentially | |||
| piggybacked on top of existing application message exchanges. This | piggybacked on top of existing application message exchanges. This | |||
| is made possible by adding overload control top level AVPs, the OC- | is made possible by adding overload control top level AVPs, the OC- | |||
| OLR AVP and the OC-Feature-Vector AVP into existing commands (this | OLR AVP and the OC-Feature-Vector AVP into existing commands (this | |||
| has an assumption that the application CCF allows adding new AVPs | has an assumption that the application CCF allows adding new AVPs | |||
| into the Diameter messages. | into the Diameter messages. | |||
| In a case of newly defined Diameter applications, it is RECOMMENDED | In a case of newly defined Diameter applications, it is RECOMMENDED | |||
| to add and define how overload control mechanisms works on that | to add and defined how overload control mechanisms works on that | |||
| application. Using OC-Feature-Vector and OC-OLR AVPs is optional, | application. using OC-Feature-Vector and OC-OLR AVPs in a non- | |||
| and is intended only existing applications. | mandatory manner is intended only existing applications. | |||
| [OpenIssue: The guidance in the previous paragraph depends on the | ||||
| outcome of the open issue mentioned at the definition of OC-Feature- | ||||
| Vector.] | ||||
| 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 overload control endpoint role is determined | and client roles. The endpoint role is determined based on the sent | |||
| based on the sent message type: whether the message is a request for | message type: whether the message is a request (i.e. sent by a | |||
| overload information (i.e. sent by a "reacting node") or an overload | "reacting node") or an answer (i.e. send by a "reporting node"). | |||
| report (i.e. send by a "reporting node"). Therefore, in a typical | Therefore, in a typical "client-server" deployment, the "client" MAY | |||
| "client-server" deployment, the "client" MAY report its overload | report its overload condition to the "server" for any server | |||
| condition to the "server" for any server initiated message exchange. | initiated message exchange. An example of such is the server | |||
| An example of such is the server requesting a re-authentication from | requesting a re-authentication from a client. | |||
| a client. | ||||
| 5.3. Capability Negotiation | 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 negotiation or | in this specification for the end-to-end capability capability | |||
| rather the capability announcement relies on the exchange of the OC- | announcement relies on the exchange of the OC-Feature-Vector between | |||
| Feature-Vector and OC-OLR AVPs between the endpoints. The | the endpoints. The feature announcement solution also works when | |||
| negotiation solution also works when carried out on existing | carried out on existing applications. For the newly defined | |||
| applications. For the newly defines application the negotiation can | application the negotiation can be more exact based on the | |||
| be more exact based on the application specification. The negotiated | application specification. The announced set of capabilities MUST | |||
| set of capabilities MUST NOT change during the life time of the | NOT change during the life time of the Diameter session (or | |||
| Diameter session (or transaction in a case of non-session maintaining | transaction in a case of non-session maintaining applications). | |||
| applications). | ||||
| [OpenIssue: Some of the guidance in the previous paragraph depends on | ||||
| the outcome of the open issue mentioned at the definition of OC- | ||||
| Feature-Vector.] | ||||
| [OpenIssue: We need to think more about the general flow for | ||||
| capabilities negotiation. Call flows would be helpful here. A | ||||
| counter comment: the text in Section 4.1 should be rather clear now | ||||
| regarding the capability negotiation.] | ||||
| 5.3.1. Request Message Initiator Endpoint Considerations | 5.3.1. Request Message Initiator 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 a Diameter request message the OC- | control mechanism by including in the request message the OC-Feature- | |||
| Feature-Vector AVP with those capability flag bits set that it | Vector AVP with those capability flag bits set that it supports and | |||
| supports and is willing to use for this Diameter session (or | is willing to use for this Diameter session (or transaction in a case | |||
| transaction in a case of a non-session state maintaining | of a non-session state maintaining applications). In a case of | |||
| applications). In a case of session maintaining applications the | session maintaining applications the request message initiating | |||
| request message initiating endpoint does not need to do the | endpoint does not need to do the capability announcement more than | |||
| capability announcement more than once for the lifetime of the | once for the lifetime of the Diameter session. In a case of non- | |||
| Diameter session. In a case of non-session maintaining applications, | session maintaining applications, it is RECOMMENDED that the request | |||
| it is RECOMMENDED that the request message initiating endpoint | message initiating endpoint includes the capability announcement into | |||
| includes the capability announcement into every request regardless it | every request regardless it has had prior message exchanges with the | |||
| has had prior message exchanges with the give remote endpoint. | give remote endpoint. | |||
| [OpenIssue: We need to think about the lifetime of a capabilities | [OpenIssue: We need to think about the lifetime of a capabilities | |||
| declaration. It's probably not the same as for a session. We have | 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 | 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 | 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 | with connection lifetime, but it's more complex for non-adjacent OC | |||
| support.] | support.] | |||
| If the OC-Feature-Vector AVP does not have enough information about | ||||
| the supported feature or the traffic abatement algorithm, then the | ||||
| request message initiating endpoint MUST also include the OC-OLR AVP | ||||
| with an appropriate content in it (such as a rate based abatement | ||||
| algorithm would include the desired rate information AVPs inside the | ||||
| OC-OLR AVP). See the discussion in Section 4.1 and in Section 4.6. | ||||
| 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 and/or OC-OLR AVPs in the | the presence of the OC-Feature-Vector AVP in the Diameter answer for | |||
| Diameter answer for existing application. For the newly defined | existing application. For the newly defined applications the support | |||
| applications the support for the overload control is already part of | for the overload control MAY already be part of the application | |||
| the application specification. Based on capability knowledge the | specification. Based on capability knowledge the request message | |||
| request message initiating endpoint can select the preferred common | initiating endpoint can select the preferred common traffic abatement | |||
| traffic abatement algorithm and act accordingly for the subsequent | algorithm and act accordingly for the subsequent message exchanges. | |||
| message exchanges. | ||||
| 5.3.2. Answer Message Initiating Endpoint Considerations | 5.3.2. Answer Message Initiating 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 in can detect whether the request message initiating endpoint | |||
| has support for the overload control solution based on the presence | has support for the overload control solution based on the presence | |||
| of the OC-Feature-Vector AVP and possibly the OC-OLR AVP. For the | of the OC-Feature-Vector AVP. For the newly defined applications the | |||
| newly defined applications the overload control solution support can | overload control solution support can be part of the application | |||
| be part of the application specification. Based on the content of | specification. Based on the content of the OC-Feature-Vector AVP the | |||
| the OC-Feature-Vector AVP and optionally the contents of the OC-OLR | request message receiving endpoint knows what overload control | |||
| AVP, the request message receiving endpoint knows what overload | functionality the other endpoint supports and then act accordingly | |||
| control functionality the other endpoint supports and then act | for the subsequent answer messages it initiates. It is RECOMMENDED | |||
| accordingly for the subsequent answer messages it initiates. It is | that the answer message initiating endpoint selects one common | |||
| RECOMMENDED that the answer message initiating endpoint selects one | traffic abatement algorithm even if it would support multiple. The | |||
| common traffic abatement algorithm even if it would support multiple. | answer message initiating endpoint MUST NOT include any overload | |||
| 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 the created session (or transaction in a case of | |||
| non-session state maintaining applications). | non-session state maintaining applications). | |||
| 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 possible use | algorithms MUST be registered with the IANA and for the ppossible use | |||
| with the OC-Feature-Vector for announcing the support for the new | with the OC-Feature-Vector 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. | |||
| skipping to change at page 23, line 38 ¶ | skipping to change at page 25, line 44 ¶ | |||
| 5.5.1. Sender Endpoint Considerations | 5.5.1. Sender Endpoint Considerations | |||
| 5.5.2. Receiver Endpoint Considerations | 5.5.2. Receiver Endpoint Considerations | |||
| [OpenIssue: did we now agree that e.g. a server can refrain sending | [OpenIssue: did we now agree that e.g. a server can refrain sending | |||
| OLR in answers based on some magical algorithm? (Note: We seem to | OLR in answers based on some magical algorithm? (Note: We seem to | |||
| have consensus that a server MAY repeat OLRs in subsequent messages, | have consensus that a server MAY repeat OLRs in subsequent messages, | |||
| but is not required to do so, based on local policy.)] | but is not required to do so, based on local policy.)] | |||
| [OpenIssue: We need to define some rules about throttling at an | ||||
| agent. In particular, that the agent needs to send errors back | ||||
| downstream if it drops requests, and propose a specific error code | ||||
| for this purpose.] | ||||
| 6. Transport Considerations | 6. Transport Considerations | |||
| In order to reduce overload control introduced additional AVP and | In order to reduce overload control introduced additional AVP and | |||
| message processing it might be desirable/beneficial to signal whether | message processing it might be desirable/beneficial to signal whether | |||
| the Diameter command carries overload control information that should | the Diameter command carries overload control information that should | |||
| be of interest of an overload aware Diameter node. | be of interest of an overload aware Diameter node. | |||
| Should such indication be include is not part of this specification. | Should such indication be include is not part of this specification. | |||
| It has not either been concluded at what layer such possible | It has not either been concluded at what layer such possible | |||
| indication should be. Obvious candidates include transport layer | indication should be. Obvious candidates include transport layer | |||
| skipping to change at page 24, line 29 ¶ | skipping to change at page 26, line 32 ¶ | |||
| 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.1 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]. | |||
| Section 4.5 defines a new "Overload Report Type" registry with its | Section 4.5 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]. | |||
| Section 4.7 defines a new "Overload Control Algorithm" registry with | ||||
| its initial assignments. New types can be added using the | ||||
| Specification 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 | |||
| vector. | vector. | |||
| Overload reports may contain information about the topology and | Overload reports may contain information about the topology and | |||
| current status of a Diameter network. This information is | current status of a Diameter network. This information is | |||
| potentially sensitive. Network operators may wish to control | potentially sensitive. Network operators may wish to control | |||
| disclosure of overload reports to unauthorized parties to avoid its | disclosure of overload reports to unauthorized parties to avoid its | |||
| use for competitive intelligence or to target attacks. | use for competitive intelligence or to target attacks. | |||
| Diameter does not currently include features to provide end-to-end | Diameter does not include features to provide end-to-end | |||
| authentication, integrity protection, or confidentiality. This may | authentication, integrity protection, or confidentiality. This may | |||
| cause complications when sending overload reports between non- | cause complications when sending overload reports between non- | |||
| adjacent nodes. | adjacent nodes. | |||
| 8.1. Potential Threat Modes | 8.1. Potential Threat Modes | |||
| The Diameter protocol involves transactions in the form of requests | The Diameter protocol involves transactions in the form of requests | |||
| and answers exchanged between clients and servers. These clients and | and answers exchanged between clients and servers. These clients and | |||
| servers may be peers, that is, they may share a direct transport | servers may be peers, that is,they may share a direct transport (e.g. | |||
| (e.g. TCP or SCTP) connection, or the messages may traverse one or | TCP or SCTP) connection, or the messages may traverse one or more | |||
| more intermediaries, known as Diameter Agents. Diameter nodes use | intermediaries, known as Diameter Agents. Diameter nodes use TLS, | |||
| TLS, DTLS, or IPSec to authenticate peers, and to provide | DTLS, or IPSec to authenticate peers, and to provide confidentiality | |||
| confidentiality and integrity protection of traffic between peers. | and integrity protection of traffic between peers. Nodes can make | |||
| Nodes can make authorization decisions based on the peer identities | authorization decisions based on the peer identities authenticated at | |||
| authenticated at the transport layer. | the transport layer. | |||
| When agents are involved, this presents an effectively hop-by-hop | When agents are involved, this presents an effectively hop-by-hop | |||
| trust model. That is, a Diameter client or server can authorize an | trust model. That is, a Diameter client or server can authorize an | |||
| agent for certain actions, but it must trust that agent to make | agent for certain actions, but it must trust that agent to make | |||
| appropriate authorization decisions about its peers, and so on. | appropriate authorization decisions about its peers, and so on. | |||
| Since confidentiality and integrity protection occurs at the | Since confidentiality and integrity protection occurs at the | |||
| transport layer, agents can read, and perhaps modify, any part of a | transport layer. Agents can read, and perhaps modify, any part of a | |||
| Diameter message, including an overload report. | Diameter message, including an overload report. | |||
| There are several ways an attacker might attempt to exploit the | There are several ways an attacker might attempt to exploit the | |||
| overload control mechanism. An unauthorized third party might inject | overload control mechanism. An unauthorized third party might inject | |||
| an overload report into the network. If this third party is upstream | an overload report into the network. If this third party is upstream | |||
| of an agent, and that agent fails to apply proper authorization | of an agent, and that agent fails to apply proper authorization | |||
| policies, downstream nodes may mistakenly trust the report. This | policies, downstream nodes may mistakenly trust the report. This | |||
| attack is at least partially mitigated by the assumption that nodes | attack is at least partially mitigated by the assumption that nodes | |||
| include overload reports in Diameter answers but not in requests. | include overload reports in Diameter answers but not in requests. | |||
| This requires an attacker to have knowledge of the original request | This requires an attacker to have knowledge of the original request | |||
| skipping to change at page 29, line 33 ¶ | skipping to change at page 31, line 36 ¶ | |||
| The base solution for the overload control does not cover all | The base solution for the overload control does not cover all | |||
| possible use cases. A number of solution aspects were intentionally | possible use cases. A number of solution aspects were intentionally | |||
| left for future specification and protocol work. | left for future specification and protocol work. | |||
| A.1. Additional traffic abatement algorithms | A.1. Additional traffic abatement algorithms | |||
| This specification describes only means for a simple loss based | This specification describes only means for a simple loss based | |||
| algorithm. Future algorithms can be added using the designed | algorithm. Future algorithms can be added using the designed | |||
| solution extension mechanism. The new algorithms need to be | solution extension mechanism. The new algorithms need to be | |||
| registered with IANA. See Sections 4.1, 4.7 and 7 for the required | registered with IANA. See Sections 4.1 and 7 for the required IANA | |||
| IANA steps. | steps. | |||
| A.2. Agent Overload | A.2. Agent Overload | |||
| This specification focuses on Diameter end-point (server or client) | This specification focuses on Diameter 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 underspecified. 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 APVs should be discussed and possible be | |||
| recommended to be used. | recommended to be used. | |||
| A.4. Load | Appendix B. Conformance to Requirements | |||
| This specification defines the mechanism for a Diameter end-point to | The following section analyses, which Diameter Overload Control | |||
| request a reduction in traffic. The full solution envisioned by the | requirements [I-D.ietf-dime-overload-reqs] are met by this | |||
| Diameter overload requirements also included a mechanism to | specification. | |||
| communicate load that a Diameter node is able to handle. This | ||||
| capability is expected to help to decrease the oscillation of | ||||
| overload events. This load capability has been left for follow on | ||||
| work. | ||||
| Appendix B. Examples | Key: | |||
| B.1. 3GPP S6a interface overload indication | S - Supported | |||
| P - Partial | ||||
| N - Not supported | ||||
| +------+----+-------------------------------------------------------+ | ||||
| | Rqmt | S/ | Notes | | ||||
| | # | P/ | | | ||||
| | | N | | | ||||
| +------+----+-------------------------------------------------------+ | ||||
| | REQ | P | The DOIC solution only addresses overload | | ||||
| | 1 | | information. Load information is left as future | | ||||
| | | | work. In addition, the DOIC solution does not | | ||||
| | | | address agent overload scenarios. | | ||||
| | | | - | | ||||
| | 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 | ||||
| Appendix C. Examples | ||||
| C.1. 3GPP S6a interface overload indication | ||||
| [TBD: Would cover S6a MME-HSS communication with several topology | [TBD: Would cover S6a MME-HSS communication with several topology | |||
| choices (such as with or without DRA, and with "generic" agents).] | choices (such as with or without DRA, and with "generic" agents).] | |||
| B.2. 3GPP PCC interfaces overload indication | C.2. 3GPP PCC interfaces overload indication | |||
| [TBD: Would cover Gx/Rx and maybe S9..] | [TBD: Would cover Gx/Rx and maybe S9..] | |||
| B.3. Mix of Destination-Realm routed requests and Destination-Host | C.3. Mix of Destination-Realm routed requests and Destination-Host | |||
| reouted requests | reouted requests | |||
| [TBD: Add example showing the use of Destination-Host type OLRs and | [TBD: Add example showing the use of Destination-Host type OLRs and | |||
| Realm type OLRs.] | Realm type OLRs.] | |||
| Authors' Addresses | Authors' Addresses | |||
| Jouni Korhonen (editor) | Jouni Korhonen (editor) | |||
| Broadcom Communications | Broadcom Communications | |||
| Porkkalankatu 24 | Porkkalankatu 24 | |||
| End of changes. 77 change blocks. | ||||
| 369 lines changed or deleted | 749 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/ | ||||