draft-ietf-dime-agent-overload-00.txt | draft-ietf-dime-agent-overload-01.txt | |||
---|---|---|---|---|
Diameter Maintenance and Extensions (DIME) S. Donovan | Diameter Maintenance and Extensions (DIME) S. Donovan | |||
Internet-Draft Oracle | Internet-Draft Oracle | |||
Intended status: Standards Track December 17, 2014 | Intended status: Standards Track March 6, 2015 | |||
Expires: June 20, 2015 | Expires: September 7, 2015 | |||
Diameter Agent Overload | Diameter Agent Overload | |||
draft-ietf-dime-agent-overload-00.txt | draft-ietf-dime-agent-overload-01.txt | |||
Abstract | Abstract | |||
This specification documents an extension to the Diameter Overload | This specification documents an extension to the Diameter Overload | |||
Control (DOC) base solution. The extension addresses the handling of | Indication Conveyance (DOIC) base solution. The extension addresses | |||
occurrances of overload of a Diameter agent. | the handling of occurrences of overload of a Diameter agent, or more | |||
generally, a Diameter peer. | ||||
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 | |||
skipping to change at page 1, line 38 | skipping to change at page 1, line 39 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on June 20, 2015. | This Internet-Draft will expire on September 7, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2015 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 . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | 2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 4 | |||
3. Peer Report Use Cases . . . . . . . . . . . . . . . . . . . . 4 | 3. Peer Report Use Cases . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Diameter Agent Overload Use Cases . . . . . . . . . . . . 4 | 3.1. Diameter Agent Overload Use Cases . . . . . . . . . . . . 5 | |||
3.1.1. Single Agent . . . . . . . . . . . . . . . . . . . . 5 | 3.1.1. Single Agent . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1.2. Redundant Agents . . . . . . . . . . . . . . . . . . 6 | 3.1.2. Redundant Agents . . . . . . . . . . . . . . . . . . 6 | |||
3.1.3. Agent Chains . . . . . . . . . . . . . . . . . . . . 7 | 3.1.3. Agent Chains . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2. Diameter Endpoint Use Cases . . . . . . . . . . . . . . . 8 | 3.2. Diameter Endpoint Use Cases . . . . . . . . . . . . . . . 8 | |||
3.2.1. Hop-by-hop Abatement Algorithms . . . . . . . . . . . 8 | 3.2.1. Hop-by-hop Abatement Algorithms . . . . . . . . . . . 8 | |||
4. Interaction Between Host/Realm and Peer Overload Reports . . 8 | 4. Interaction Between Host/Realm and Peer Overload Reports . . 8 | |||
5. Peer Report Behavior . . . . . . . . . . . . . . . . . . . . 8 | 5. Peer Report Behavior . . . . . . . . . . . . . . . . . . . . 8 | |||
5.1. Capability Announcement . . . . . . . . . . . . . . . . . 9 | 5.1. Capability Announcement . . . . . . . . . . . . . . . . . 8 | |||
5.2. Peer Report Overload Report Handling . . . . . . . . . . 10 | 5.1.1. Reacting Node Behavior . . . . . . . . . . . . . . . 9 | |||
5.2.1. Overload Control State . . . . . . . . . . . . . . . 10 | 5.1.2. Reporting Node Behavior . . . . . . . . . . . . . . . 9 | |||
5.2.2. Reporting Node Maintenace of Peer Report OCS . . . . 11 | 5.2. Peer Report Overload Report Handling . . . . . . . . . . 11 | |||
5.2.3. Reacting Node Maintenace of Peer Report OCS . . . . . 12 | 5.2.1. Overload Control State . . . . . . . . . . . . . . . 11 | |||
5.2.4. Peer Report Reporting Node Behavior . . . . . . . . . 13 | 5.2.2. Reporting Node Maintenance of Peer Report OCS . . . . 12 | |||
5.2.5. Peer Report Reacting Node Behavior . . . . . . . . . 13 | 5.2.3. Reacting Node Maintenance of Peer Report OCS . . . . 12 | |||
6. Peer Report AVPs . . . . . . . . . . . . . . . . . . . . . . 14 | 5.2.4. Peer Report Reporting Node Behavior . . . . . . . . . 14 | |||
6.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 14 | 5.2.5. Peer Report Reacting Node Behavior . . . . . . . . . 14 | |||
6. Peer Report AVPs . . . . . . . . . . . . . . . . . . . . . . 15 | ||||
6.1. OC-Supported-Features AVP . . . . . . . . . . . . . . . . 15 | ||||
6.1.1. OC-Feature-Vector . . . . . . . . . . . . . . . . . . 15 | 6.1.1. OC-Feature-Vector . . . . . . . . . . . . . . . . . . 15 | |||
6.1.2. OC-Peer-Algo . . . . . . . . . . . . . . . . . . . . 15 | 6.1.2. OC-Peer-Algo . . . . . . . . . . . . . . . . . . . . 16 | |||
6.2. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 15 | 6.2. OC-OLR AVP . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.2.1. OC-Report-Type AVP . . . . . . . . . . . . . . . . . 16 | 6.2.1. OC-Report-Type AVP . . . . . . . . . . . . . . . . . 17 | |||
6.3. OC-SourceID . . . . . . . . . . . . . . . . . . . . . . . 16 | 6.3. OC-SourceID . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
6.4. Attribute Value Pair flag rules . . . . . . . . . . . . . 16 | 6.4. Attribute Value Pair flag rules . . . . . . . . . . . . . 17 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . 17 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . 17 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 | |||
10. Normative References . . . . . . . . . . . . . . . . . . . . 17 | 10. Normative References . . . . . . . . . . . . . . . . . . . . 18 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 18 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
1. Introduction | 1. Introduction | |||
This document defines the behavior of Diameter nodes when Diameter | This document defines the behavior of Diameter nodes when Diameter | |||
agents enter an overload condition and send an overload report | agents enter an overload condition and send an overload report | |||
requesting a reduction of traffic. | requesting a reduction of traffic. | |||
The base Diameter overload specification [I-D.ietf-dime-ovli] | The base Diameter overload specification [I-D.ietf-dime-ovli] | |||
addresses the handling of overload when a Diameter endpoint (a | addresses the handling of overload when a Diameter endpoint (a | |||
Diameter Client or Diameter Server as defined in [RFC6733]) becomes | Diameter Client or Diameter Server as defined in [RFC6733]) becomes | |||
overloaded. | overloaded. | |||
In the base specification, the goal is to handle abatement of the | In the base specification, the goal is to handle abatement of the | |||
overload occurrance as close to the source of the Diameter traffic as | overload occurrence as close to the source of the Diameter traffic as | |||
is feasible. When possible this is done at the originator of the | is feasible. When possible this is done at the originator of the | |||
traffic, generally referred to as a Diameter Client. A Diameter | traffic, generally referred to as a Diameter Client. A Diameter | |||
Agent might also handle the overload mitigation. For instance, a | Agent might also handle the overload mitigation. For instance, a | |||
Diameter Agent might handle Diameter overload mitigation when it | Diameter Agent might handle Diameter overload mitigation when it | |||
knows that a Diameter Client does not support the DOIC extension. | knows that a Diameter Client does not support the DOIC extension. | |||
This document extends the base Diameter endpoint overload | This document extends the base Diameter endpoint overload | |||
specification to address the case when Diameter Agents become | specification to address the case when Diameter Agents become | |||
overloaded. Just as is the case with other Diameter nodes -- | overloaded. Just as is the case with other Diameter nodes -- | |||
Diameter Clients and Diameter Servers -- surges in Diameter traffic | Diameter Clients and Diameter Servers -- surges in Diameter traffic | |||
can cause a Diameter Agent to be asked to handle more Diameter | can cause a Diameter Agent to be asked to handle more Diameter | |||
traffic than it was configured to handle. For a more detailed | traffic than it was configured to handle. For a more detailed | |||
discussion of what can cause the overload of Diameter nodes, refer to | discussion of what can cause the overload of Diameter nodes, refer to | |||
the Diameter Overload Requirements [RFC7068]. | the Diameter Overload Requirements [RFC7068]. | |||
This document defines a new overload report type to communicate | This document defines a new overload report type to communicate | |||
occurrances of agent overlaod. This report type works for the "Loss" | occurrences of agent overload. This report type works for the "Loss" | |||
overload mitigation algorithm defined in [I-D.ietf-dime-ovli] and is | overload mitigation algorithm defined in [I-D.ietf-dime-ovli] and is | |||
expected to work for other overload abatement algorithms defined in | expected to work for other overload abatement algorithms defined in | |||
extensions to the DOIC solution. | extensions to the DOIC solution. | |||
The handling of endpoint overload and agent overload is very similar. | The handling of endpoint overload and agent overload is very similar. | |||
The primary differences are the following: | The primary differences are the following: | |||
o Endpoint overload is handled as close to the originator of the | o Endpoint overload is handled as close to the originator of the | |||
traffic as possible. | traffic as possible. | |||
skipping to change at page 4, line 19 | skipping to change at page 4, line 22 | |||
probably needs to be changed to OC-Peer-Abatement-Algorithm. | probably needs to be changed to OC-Peer-Abatement-Algorithm. | |||
2. Terminology and Abbreviations | 2. Terminology and Abbreviations | |||
Editors note - These definitions need to be made consistent with the | Editors note - These definitions need to be made consistent with the | |||
base Diameter overload specification defined in [I-D.ietf-dime-ovli]. | base Diameter overload specification defined in [I-D.ietf-dime-ovli]. | |||
Diameter Node | Diameter Node | |||
A RFC6733 Diameter Client, an RFC6733 Diameter Server, and RFC6733 | A RFC6733 Diameter Client, an RFC6733 Diameter Server, and RFC6733 | |||
agent. | Diameter Agent. | |||
Diameter Endpoint | Diameter Endpoint | |||
An RFC6733 Diameter Client and RFC6733 Server. | An RFC6733 Diameter Client and RFC6733 Diameter Server. | |||
Reporting Node | Reporting Node | |||
A DOIC Node that sends and overload report in Diameter answer | A DOIC Node that sends and overload report in a Diameter answer | |||
message. | message. | |||
Reacting Node | Reacting Node | |||
A DOIC Node that receives and acts on a Diameter overload report. | A DOIC Node that receives and acts on a Diameter overload report. | |||
DIOC Node | DIOC Node | |||
A Diameter Node that supports the DOIC solution defined in | A Diameter Node that supports the DOIC solution defined in | |||
[I-D.ietf-dime-ovli]. | [I-D.ietf-dime-ovli]. | |||
3. Peer Report Use Cases | 3. Peer Report Use Cases | |||
This section outlines representative use cases for the peer report. | This section outlines representative use cases for the peer report | |||
used to communicate agent overload. | ||||
There are two primary classes of use cases, those involving the | There are two primary classes of use cases, those involving the | |||
overload of agents and those involving overload of Diameter endpoints | overload of agents and those involving overload of Diameter endpoints | |||
(Diameter Clients and Diameter Servers). | (Diameter Clients and Diameter Servers). | |||
3.1. Diameter Agent Overload Use Cases | 3.1. Diameter Agent Overload Use Cases | |||
The agent overload extension must support following use cases. | The agent overload extension must support the following use cases. | |||
3.1.1. Single Agent | 3.1.1. Single Agent | |||
This use case is illustrated in Figure 1. In this case, the client | This use case is illustrated in Figure 1. In this case, the client | |||
sends all traffic through the single agent. If there is a failure in | sends all traffic through the single agent. If there is a failure in | |||
the agent then the client is unable to send Diameter traffic toward | the agent then the client is unable to send Diameter traffic toward | |||
the server. | the server. | |||
+-+ +-+ +-+ | +-+ +-+ +-+ | |||
|c|----|a|----|s| | |c|----|a|----|s| | |||
skipping to change at page 5, line 42 | skipping to change at page 5, line 46 | |||
Figure 2 | Figure 2 | |||
In both of these cases, the occurrence of overload in the single | In both of these cases, the occurrence of overload in the single | |||
agent must by handled by the client in a similar fashion as if the | agent must by handled by the client in a similar fashion as if the | |||
client were handling the overload of a directly connected server. | client were handling the overload of a directly connected server. | |||
When the agent becomes overloaded it will insert an overload report | When the agent becomes overloaded it will insert an overload report | |||
in answer messages flowing to the client. This overload report will | in answer messages flowing to the client. This overload report will | |||
contain a requested reduction in the amount of traffic sent to the | contain a requested reduction in the amount of traffic sent to the | |||
agent. The client will apply overload abatement behavior as defined | agent. The client will apply overload abatement behavior as defined | |||
in the base Diameter overload specification [I-D.ietf-dime-ovli] or | in the base Diameter overload specification [I-D.ietf-dime-ovli] or | |||
the extension draft that defines the indicated overoad abatement | the extension draft that defines the indicated overload abatement | |||
algorithm. This will result in the abated traffic that would have | algorithm. This will result in the throtting of the abated traffic | |||
been sent to the agent being dropped, as there is no alternative | that would have been sent to the agent, as there is no alternative | |||
route, with the appropriate indication given to the service request | route, with the appropriate indication given to the service request | |||
that resulted in the need for the Diameter transaction. | that resulted in the need for the Diameter transaction. | |||
Editor's note: Need to address case where the agent requests a | ||||
different abatement algorithm than requested by a host or realm | ||||
reporting node. | ||||
3.1.2. Redundant Agents | 3.1.2. Redundant Agents | |||
Figure 3 and Figure 4 illustrate a second, and more likely,type of | Figure 3 and Figure 4 illustrate a second, and more likely, type of | |||
deployment scenario involving agents. In both of these cases, the | deployment scenario involving agents. In both of these cases, the | |||
client has Diameter connections to two agents. | client has Diameter connections to two agents. | |||
Figure 3 illustrates a client that has a primary connection to one of | Figure 3 illustrates a client that has a primary connection to one of | |||
the agents (agent a1) and a secondary connection to the other agent | the agents (agent a1) and a secondary connection to the other agent | |||
(agent a2). In this scenario, under normal circumstances, the client | (agent a2). In this scenario, under normal circumstances, the client | |||
will use the primary connection for all traffic. The secondary | will use the primary connection for all traffic. The secondary | |||
connection is used when there is a failure scenario of some sort. | connection is used when there is a failure scenario of some sort. | |||
+--+ +-+ | +--+ +-+ | |||
skipping to change at page 8, line 5 | skipping to change at page 8, line 5 | |||
Overload of agents a21 and a22 must be handled by the previous hop | Overload of agents a21 and a22 must be handled by the previous hop | |||
agents. As such, agents a11 and a12 must handle the overload | agents. As such, agents a11 and a12 must handle the overload | |||
mitigation logic when receiving an agent overload report from agents | mitigation logic when receiving an agent overload report from agents | |||
a21 and a22. | a21 and a22. | |||
Editor's note: Probably need to elaborate the reasoning behind the | Editor's note: Probably need to elaborate the reasoning behind the | |||
need for the agent overload report being handled by the previous hop | need for the agent overload report being handled by the previous hop | |||
agent. | agent. | |||
The handling of the overload reports is similar to that discussed in | The handling of peer overload reports is similar to that discussed in | |||
section 2.2. If the overload can be addressed using diversion then | section 2.2. If the overload can be addressed using diversion then | |||
this approach should be taken. | this approach should be taken. | |||
If both of the agents have requested a reduction in traffic then the | If both of the agents have requested a reduction in traffic then the | |||
previous hop agent must start throttling the appropriate percentage | previous hop agent must start throttling the appropriate number of | |||
of transactions. When throttling requests, the agent must use the | transactions. When throttling requests, an agent uses the same error | |||
same error responses as defined in the base DOIC specification | responses as defined in the base DOIC specification | |||
[I-D.ietf-dime-ovli]. | [I-D.ietf-dime-ovli]. | |||
3.2. Diameter Endpoint Use Cases | 3.2. Diameter Endpoint Use Cases | |||
This section outlines use cases for the peer report feature involving | This section outlines use cases for the peer report feature involving | |||
Diameter Clients and Diameter Servers. | Diameter Clients and Diameter Servers. | |||
3.2.1. Hop-by-hop Abatement Algorithms | 3.2.1. Hop-by-hop Abatement Algorithms | |||
It is envisioned that abatement algorithms will be defined that will | It is envisioned that abatement algorithms will be defined that will | |||
support the option for Diameter Endpoints to send peer reports. For | support the option for Diameter Endpoints to send peer reports. For | |||
instance, it is envisioned that one usage scenario for the rate | instance, it is envisioned that one usage scenario for the rate | |||
algorithm, which is being worked on by the DIME working group as this | algorithm, [I-D.ietf-dime-doic-rate-control], which is being worked | |||
is written, will involve abatement being done on a hop-by-hop basis. | on by the DIME working group as this is written, will involve | |||
abatement being done on a hop-by-hop basis. | ||||
This rate deployment scenario would involve Diameter Endpoints | This rate deployment scenario would involve Diameter Endpoints | |||
generating peer reports and selecting the rate algorithm for | generating peer reports and selecting the rate algorithm for | |||
abatement of overload conditions. | abatement of overload conditions. | |||
4. Interaction Between Host/Realm and Peer Overload Reports | 4. Interaction Between Host/Realm and Peer Overload Reports | |||
It is possible that both an agent and a server in the path of a | It is possible that both an agent and a server in the path of a | |||
transaction are overloaded at the same time. When this occurs, | transaction are overloaded at the same time. When this occurs, | |||
Diameter entities will need to handle both overload reports. When | Diameter entities will need to handle both overload reports. In this | |||
this occurs the reacting node should first handle the throttling of | scenario the reacting node should first handle the throttling of the | |||
the overloaded host or realm. Any messages that survive throttling | overloaded host or realm. Any messages that survive throttling due | |||
due to host or realm reports should then go through abatement for the | to host or realm reports should then go through abatement for the | |||
peer overload report. | peer overload report. | |||
Editor's note: Do we need to prevent double throttling of requests | ||||
or is that a local implementation consideration? | ||||
5. Peer Report Behavior | 5. Peer Report Behavior | |||
This section defines the normative behavior associated with the Peer | This section defines the normative behavior associated with the Peer | |||
Report extension to the DOIC solution. | Report extension to the DOIC solution. | |||
5.1. Capability Announcement | 5.1. Capability Announcement | |||
Editor's Note: Issue - how does an agent indicate the selected | Editor's Note: Issue - how does an agent indicate the selected | |||
abatement algorithm? It cannot use the OC-Feature-Vector in the OC- | abatement algorithm? It cannot use the OC-Feature-Vector in the OC- | |||
Supported-Features AVP as that applies to host and realm report | Supported-Features AVP as that applies to host and realm report | |||
types. Need a new AVP in the OC-Supported-Features AVP. | types. A new AVP in the OC-Supported-Features AVP has been added. | |||
5.1.1. Reacting Node Behavior | ||||
When sending a Diameter request a DOIC node that supports the Peer | When sending a Diameter request a DOIC node that supports the Peer | |||
Report feature MUST include an OC-Supported-Features AVP with an OC- | Report feature MUST include an OC-Supported-Features AVP with an OC- | |||
Feature-Vector AVP with the OLR_PEER_REPORT bit set. | Feature-Vector AVP with the OLR_PEER_REPORT bit set. | |||
The sender of a request can be a Diameter Client or Diameter | Note: The sender of a request can be a Diameter Client or Diameter | |||
Server that originates the Diamter request or a Diameter Agent | Server that originates the Diamter request or a Diameter Agent | |||
that relays the request. | that relays the request. | |||
Support for the peer report feature does not impact the logic for | Support for the peer report feature does not impact the logic for | |||
setting of other feature bits in the OC-Feature-Vector AVP. | setting of other feature bits in the OC-Feature-Vector AVP. | |||
When sending a request a DOIC node that supports the Peer Report | When sending a request a DOIC node that supports the Peer Report | |||
feature MUST include an OC-SourceID AVP in the OC-Supported-Features | feature MUST include an OC-SourceID AVP in the OC-Supported-Features | |||
AVP with its own DiameterID. | AVP with its own DiameterID. | |||
This allows the next DOIC node in the path of the request to | Note: This allows the next DOIC node in the path of the request to | |||
determine if the indication of support came from a Diameter peer | determine if the indication of support came from a Diameter peer | |||
or if the request traversed a node that does not support the peer | or if the request traversed a node that does not support the peer | |||
feature. | feature. | |||
5.1.2. Reporting Node Behavior | ||||
When receiving a request a DOIC node that supports the Peer Report | When receiving a request a DOIC node that supports the Peer Report | |||
feature MUST update transaction state with an indication of whether | feature MUST update transaction state with an indication of whether | |||
or not the peer from which the request was received supports the Peer | or not the peer from which the request was received supports the Peer | |||
Report feature. | Report feature. | |||
The transaction state is used when the DOIC node is acting as a | Note" The transaction state is used when the DOIC node is acting | |||
peer report reporting node and needs to insert OC-OLR reports of | as a peer-report reporting node and needs to insert OC-Supported- | |||
type peer into answer messages. The OLR should only be included | Feature AVP indicating support for the OLR_PEER_REPORT feature and | |||
in answer messages being sent to peers that support the peer | OC-OLR reports of type PEER_REPORT into answer messages. These | |||
report feature. | AVP OLR are only included in answer messages being sent to peers | |||
that support the OLR_PEER_REPORT feature. | ||||
The following are indications that the peer does not support the Peer | The following are indications that the peer does not support the | |||
Reports feature: | OLR_PEER_REPORT feature: | |||
The request does not contain an OC-Supported-Features AVP. | The request does not contain an OC-Supported-Features AVP. | |||
The received request contains an OC-Supported-Features AVP with no | The received request contains an OC-Supported-Features AVP with no | |||
a OC-Feature-Vector. | OC-Feature-Vector. | |||
The received request contains an OC-Supported-Features AVP with a | The received request contains an OC-Supported-Features AVP with a | |||
OC-Feature-Vector with the OLR_PEER_REPORT feature bit cleared. | OC-Feature-Vector with the OLR_PEER_REPORT feature bit cleared. | |||
The received request contains an OC-Supported-Features AVP with a | The received request contains an OC-Supported-Features AVP with a | |||
OC-Feature-Vector with the OLR_PEER_REPORT feature bit set but | OC-Feature-Vector with the OLR_PEER_REPORT feature bit set but | |||
with an OC-SourceID AVP with a DiameterID that does not match the | with an OC-SourceID AVP with a DiameterID that does not match the | |||
DiameterID of the peer from which the request was received. | DiameterID of the peer from which the request was received. | |||
The peer supports the Peer Reports feature if the received request | The peer supports the OLR_PEER_REPORT feature if the received request | |||
contains an OC-Supported-Features AVP with the OC-Feature-Vector with | contains an OC-Supported-Features AVP with the OC-Feature-Vector with | |||
the OLR_PEER_REPORT feature bit set and with an OC-SourceID AVP with | the OLR_PEER_REPORT feature bit set and with an OC-SourceID AVP with | |||
a Diameter ID that matches the DiameterID of the peer from which the | a Diameter ID that matches the DiameterID of the peer from which the | |||
request was received. | request was received. | |||
When receiving a request a DOIC node that supports the Peer Report | When receiving a request a DOIC node that supports the Peer Report | |||
feature MUST remove any received OC-SourceID AVP from the OC- | feature MUST remove any received OC-SourceID AVP from the OC- | |||
Supported-Features AVP. This is done to prevent the OC-SourceID AVP | Supported-Features AVP. This is done to prevent the OC-SourceID AVP | |||
from being included in a relayed message through a node that supports | from being included in a relayed message through a node that supports | |||
the Peer Report feature. | the Peer Report feature. | |||
Editor's Note: Need to add behavior for handling of answer messages | Note: If the DOIC node relays the message then it will insert an | |||
to define how the OC-Supported-Features AVP that will be included in | OC-SourceID AVP with its own DiameterID in the OC-Supported- | |||
a relayed answer message is constructed. This includes logic on | Features AVP in the relayed message. | |||
whether or not the peer report feature bit is set and whether or not | ||||
the OC-Peer-Algo AVP is included in the OC-Supported-Features AVP. | When sending an answer message, a reporting node that supports the | |||
OLR_PEER_REPORT feature MUST strip any SourceID AVP from the OC- | ||||
Supported-Features AVP. | ||||
When sending an answer message, a reporting node that supports the | ||||
OLR_PEER_REPORT feature MUST determine if the peer to which the | ||||
answer is to be sent supports the OLR_PEER_REPORT feature. | ||||
If the peer supports the OLR_PEER_REPORT feature then the reporting | ||||
node MUST indicate support for the feature in the Supported-Features | ||||
AVP. | ||||
If the peer supports the OLR_PEER_REPORT feature then the reporting | ||||
node MUST insert the OC-SourceID AVP in the OC-Supported-Features AVP | ||||
in the answer message. | ||||
If the peer supports the OLR_PEER_REPORT feature then the reporting | ||||
node MUST insert the OC-Peer-Algo AVP in the OC-Supported-Features | ||||
AVP. The OC-Peer-Algo AVP MUST indicate the overload abatement | ||||
algorithm that the reporting node wants reacting nodes to use should | ||||
the reporting node send a peer overload report as a result of | ||||
becoming overloaded. | ||||
5.2. Peer Report Overload Report Handling | 5.2. Peer Report Overload Report Handling | |||
This section defines the behavior for the handling of overload | This section defines the behavior for the handling of overload | |||
reports of type peer. | reports of type peer. | |||
5.2.1. Overload Control State | 5.2.1. Overload Control State | |||
This section describes the Overload Control State (OCS) that might be | This section describes the Overload Control State (OCS) that might be | |||
maintained by both the peer report reporting node and the peer report | maintained by both the peer report reporting node and the peer report | |||
skipping to change at page 11, line 44 | skipping to change at page 12, line 22 | |||
o Sequence number | o Sequence number | |||
o Expiration Time | o Expiration Time | |||
o Abatement Algorithm | o Abatement Algorithm | |||
o Algorithm specific input data (for example, the Reduction | o Algorithm specific input data (for example, the Reduction | |||
Percentage for the Loss Abatement Algorithm) | Percentage for the Loss Abatement Algorithm) | |||
5.2.2. Reporting Node Maintenace of Peer Report OCS | 5.2.2. Reporting Node Maintenance of Peer Report OCS | |||
A reporting node SHOULD create a new Reporting Node Peer Report OCS | A reporting node SHOULD create a new Reporting Node Peer Report OCS | |||
entry Section 5.2.1.1 in an overload condition and sending a peer | entry Section 5.2.1.1 in an overload condition and sending a peer | |||
overload report to a peer for the first time. | overload report to a peer for the first time. | |||
If the reporting node knows that there are no reacting nodes | If the reporting node knows that there are no reacting nodes | |||
supporting the Peer Report feature then the reporting node can | supporting the Peer Report feature then the reporting node can | |||
choose to not create OCS entries. | choose to not create OCS entries. | |||
All rules for managing the reporting node OCS enteries defined in | All rules for managing the reporting node OCS entries defined in | |||
[DOIC] apply to the peer report. | [DOIC] apply to the peer report. | |||
5.2.3. Reacting Node Maintenace of Peer Report OCS | 5.2.3. Reacting Node Maintenance of Peer Report OCS | |||
When a reacting node receives an OC-OLR AVP with an a report type of | When a reacting node receives an OC-OLR AVP with an a report type of | |||
peer it MUST determine if the report was generated by the Diameter | peer it MUST determine if the report was generated by the Diameter | |||
peer from which the report was received. | peer from which the report was received. | |||
If the DiameterID in the SourceID contained in the OLR matches the | If the DiameterID in the SourceID contained in the OLR matches the | |||
DiameterID of the peer from which the request was received then the | DiameterID of the peer from which the request was received then the | |||
report was received from a Diameter peer. | report was received from a Diameter peer. | |||
If a reacting node receives an OC-OLR AVP of type peer and the OC- | If a reacting node receives an OC-OLR AVP of type peer and the OC- | |||
skipping to change at page 13, line 4 | skipping to change at page 13, line 33 | |||
If the sequence number for the received OLR is less than or equal to | If the sequence number for the received OLR is less than or equal to | |||
the sequence number in the matching OCS entry then the reacting node | the sequence number in the matching OCS entry then the reacting node | |||
MUST silently ignore the received OLR. The matching OCS MUST NOT be | MUST silently ignore the received OLR. The matching OCS MUST NOT be | |||
updated in this case. | updated in this case. | |||
If the received OLR is for a new overload condition then the reacting | If the received OLR is for a new overload condition then the reacting | |||
node MUST generate a new OCS entry for the overload condition. | node MUST generate a new OCS entry for the overload condition. | |||
Editor's note: The above four paragraphs are copied form the DOIC | Editor's note: The above four paragraphs are copied form the DOIC | |||
specification. Is it possible to include this behavior by | specification. Is it possible to include this behavior by | |||
refrence or do we need to include all of these statements in this | reference or do we need to include all of these statements in this | |||
specification as well. | specification as well. | |||
For a peer report this means it creates an OCS entry with an | For a peer report this means it creates an OCS entry with an | |||
DiameterID from the SourceID AVP in the received OC-OLR AVP. | DiameterID from the SourceID AVP in the received OC-OLR AVP. | |||
If the received OLR contains a validity duration of zero ("0") then | If the received OLR contains a validity duration of zero ("0") then | |||
the reacting node MUST update the OCS entry as being expired. | the reacting node MUST update the OCS entry as being expired. | |||
The reacting node does not delete an OCS when receiving an answer | The reacting node does not delete an OCS when receiving an answer | |||
message that does not contain an OC-OLR AVP (i.e. absence of OLR | message that does not contain an OC-OLR AVP (i.e. absence of OLR | |||
means "no change"). | means "no change"). | |||
The reacting node sets the abatement algorithm based on the OC-Peer- | The reacting node sets the abatement algorithm based on the OC-Peer- | |||
Algo AVP in the received OC-Supported-Features AVP. | Algo AVP in the received OC-Supported-Features AVP. | |||
5.2.4. Peer Report Reporting Node Behavior | 5.2.4. Peer Report Reporting Node Behavior | |||
When there is an existing peer report reporting node OCS entry, the | When there is an existing reporting node peer report OCS entry, the | |||
reporting node MUST include an OC-OLR AVP with a report type of peer | reporting node MUST include an OC-OLR AVP with a report type of peer | |||
using the contents of the peer report reporting node OCS entry in all | using the contents of the reporting node peer report OCS entry in all | |||
answer messages sent by the reporting node to peers that support the | answer messages sent by the reporting node to peers that support the | |||
peer report feature. | peer report feature. | |||
The reporting node determines if a peer supports the peer report | The reporting node determines if a peer supports the peer report | |||
feature based on the indication recorded in the reporting nodes | feature based on the indication recorded in the reporting nodes | |||
transaction state. | transaction state. | |||
The reporting node MUST include its DiameterID in the OC-SourceID AVP | The reporting node MUST include its DiameterID in the OC-SourceID AVP | |||
in the OC-OLR AVP. This is used by DOIC nodes that support the peer | in the OC-OLR AVP. This is used by DOIC nodes that support the peer | |||
report feature to determine if the report was received from a | report feature to determine if the report was received from a | |||
Diameter peer. | Diameter peer. | |||
The reporting agent must follow all other overload reporting node | The reporting agent must follow all other overload reporting node | |||
behaviors outlined in the DOIC specification. This includes sending | behaviors outlined in the DOIC specification. | |||
a report with a reduction percentage of zero when the need for a | ||||
reduction has ended. It also includes sending a new overload report, | ||||
with a new sequence number, to refresh the abatement duration. | ||||
5.2.5. Peer Report Reacting Node Behavior | 5.2.5. Peer Report Reacting Node Behavior | |||
A reacting node supporting this extension MUST support the receipt of | A reacting node supporting this extension MUST support the receipt of | |||
multiple overload reports in a single message. The message might | multiple overload reports in a single message. The message might | |||
inlude a host overload report, a realm overload report and a peer | include a host overload report, a realm overload report and a peer | |||
overload report. | overload report. | |||
When a reacting node sends a request it MUST determine if that | When a reacting node sends a request it MUST determine if that | |||
request matches an active OCS. | request matches an active OCS. | |||
If the request matches and active OCS then the reacting node MUST | If the request matches and active OCS then the reacting node MUST | |||
apply abatement treatment on the request. The abatement treatment | apply abatement treatment on the request. The abatement treatment | |||
applied depends on the abatement algorithm stored in the OCS. | applied depends on the abatement algorithm stored in the OCS. | |||
For peer overload reports, the preferred abatement treatment is | For peer overload reports, the preferred abatement treatment is | |||
diversion. As such, the reacting node SHOULD attempt to divert | diversion. As such, the reacting node SHOULD attempt to divert | |||
requests identified as needing abatement to other peers. | requests identified as needing abatement to other peers. | |||
If a host-routed request, as defined in the DOIC specification, is | If a host-routed request, as defined in [I-D.ietf-dime-ovli], is | |||
selected for abatement and the request must be routed to the DOIC | selected for abatement and the request must be routed to the DOIC | |||
node that generated the peer overload report -- meaning that the | node that generated the peer overload report -- meaning that the | |||
request is a host-routed request as defined in the DOIC specification | request is a host-routed request as defined in the DOIC specification | |||
-- then the reacting node MUST throttle the request. | -- then the reacting node MUST throttle the request. | |||
This would result from an overloaded Diameter endpoint (Diameter | This would result from an overloaded Diameter endpoint (Diameter | |||
Server or Diameter Client) sending a peer overload report and the | Server or Diameter Client) sending a peer overload report and the | |||
request contains a Destination-Host AVP with a DiameterID that | request contains a Destination-Host AVP with a DiameterID that | |||
matches the DiameterID in the SourceID AVP received in the peer | matches the DiameterID in the SourceID AVP received in the peer | |||
overload report. | overload report. | |||
If there is not sufficient capacity to divert abated traffic then the | If there is not sufficient capacity to divert abated traffic then the | |||
reacting node MUST throttle the necessary requests to fit within the | reacting node MUST throttle the necessary requests to fit within the | |||
available capacity of the peers able to handle the requests. | available capacity of the peers able to handle the requests. | |||
If the abatement treatment results in throttling of the request and | If the abatement treatment results in throttling of the request and | |||
if the reacting node is an agent then the agent MUST send an | if the reacting node is an agent then the agent MUST send an | |||
appropriate error as defined in the DOIC specification. | appropriate error as defined in [I-D.ietf-dime-ovli]. | |||
In the case that the OCS entry validity duration expires or has a | In the case that the OCS entry validity duration expires or has a | |||
validity duration of zero ("0"), meaning that it the reporting node | validity duration of zero ("0"), meaning that it the reporting node | |||
has explicitly signaled the end of the overload condition then | has explicitly signaled the end of the overload condition then | |||
abatement associated with the overload abatement MUST be ended in a | abatement associated with the overload abatement MUST be ended in a | |||
controlled fashion. | controlled fashion. | |||
6. Peer Report AVPs | 6. Peer Report AVPs | |||
6.1. OC-Supported-Features AVP | 6.1. OC-Supported-Features AVP | |||
skipping to change at page 15, line 4 | skipping to change at page 15, line 35 | |||
This extension adds a new feature to the OC-Feature-Vector AVP. This | This extension adds a new feature to the OC-Feature-Vector AVP. This | |||
feature indication shows support for handling of peer overload | feature indication shows support for handling of peer overload | |||
reports. Peer overload reports are used by agents to indicate the | reports. Peer overload reports are used by agents to indicate the | |||
need for overload abatement handling by the agents peer. | need for overload abatement handling by the agents peer. | |||
A supporting node must also include the OC-SourceID AVP in the OC- | A supporting node must also include the OC-SourceID AVP in the OC- | |||
Supported-Features capability AVP. | Supported-Features capability AVP. | |||
This AVP contains the Diameter Identity of the node that supports the | This AVP contains the Diameter Identity of the node that supports the | |||
OLR_PEER_REPORT feature. This AVP is used to determine if support | OLR_PEER_REPORT feature. This AVP is used to determine if support | |||
for the peer overload report is in an adjectent node. The value of | for the peer overload report is in an adjacent node. The value of | |||
this AVP should be the same Diameter identity used as part of the | this AVP should be the same Diameter identity used as part of the | |||
CER/CEA base Diameter capabilities exchange. | CER/CEA base Diameter capabilities exchange. | |||
OC-Supported-Features ::= < AVP Header: TBD1 > | OC-Supported-Features ::= < AVP Header: TBD1 > | |||
[ OC-Feature-Vector ] | [ OC-Feature-Vector ] | |||
[ OC-SourceID ] | [ OC-SourceID ] | |||
[ OC-Peer-Algo] | [ OC-Peer-Algo] | |||
* [ AVP ] | * [ AVP ] | |||
6.1.1. OC-Feature-Vector | 6.1.1. OC-Feature-Vector | |||
skipping to change at page 15, line 31 | skipping to change at page 16, line 14 | |||
When this flag is set by a DOIC node it indicates that the DOIC | When this flag is set by a DOIC node it indicates that the DOIC | |||
node supports the peer overload report type. | node supports the peer overload report type. | |||
6.1.2. OC-Peer-Algo | 6.1.2. OC-Peer-Algo | |||
The OC-Peer-Algo AVP (AVP code TBD6) is of type Unsigned64 and | The OC-Peer-Algo AVP (AVP code TBD6) is of type Unsigned64 and | |||
contains a 64 bit flags field of announced capabilities of a DOIC | contains a 64 bit flags field of announced capabilities of a DOIC | |||
node. The value of zero (0) is reserved. | node. The value of zero (0) is reserved. | |||
Feature bits defined for the OC-Feature-Vector AVP and associated | Feature bits defined for the OC-Feature-Vector AVP and associated | |||
with overload abatement algorithms are reused in for this AVP. This | with overload abatement algorithms are reused in for this AVP. | |||
include the following value defined in the DOIC specification. | ||||
Editor's node: This is to avoid the need for an additional IANA | Editor's node: This is to avoid the need for an additional IANA | |||
registry. | registry. | |||
6.2. OC-OLR AVP | 6.2. OC-OLR AVP | |||
This extension makes no changes to the SequenceNumber or | This extension makes no changes to the SequenceNumber or | |||
ValidityDuration AVPs in the OC-OLR AVP. These AVPs are also be used | ValidityDuration AVPs in the OC-OLR AVP. These AVPs are also be used | |||
in peer overload reports. | in peer overload reports. | |||
The peer report feature extends the base Diameter overload | The peer report feature extends the base Diameter overload | |||
specification by defining a new overload report type of "peer". See | specification by defining a new overload report type of "peer". See | |||
section [4.5] in [I-D.ietf-dime-ovli] for a description of the | section [7.6] in [I-D.ietf-dime-ovli] for a description of the OC- | |||
overload report type AVP. | Report-Type AVP. | |||
The overload report must also include the Diameter identity of the | The overload report must also include the Diameter identity of the | |||
agent that generated the report. This is necessary to handle the | agent that generated the report. This is necessary to handle the | |||
case where there is a non supporting agent between the reporting node | case where there is a non supporting agent between the reporting node | |||
and the reacting node. Without the indication of the agent that | and the reacting node. Without the indication of the agent that | |||
generated the overload request, the reacting node could erroneously | generated the overload request, the reacting node could erroneously | |||
assume that the report applied to the non supporting node. This | assume that the report applied to the non supporting node. This | |||
could, in turn, result in unnecessary traffic being either | could, in turn, result in unnecessary traffic being either | |||
redistributed or throttled. | redistributed or throttled. | |||
skipping to change at page 16, line 25 | skipping to change at page 17, line 9 | |||
< OC-Report-Type > | < OC-Report-Type > | |||
[ OC-Reduction-Percentage ] | [ OC-Reduction-Percentage ] | |||
[ OC-Validity-Duration ] | [ OC-Validity-Duration ] | |||
[ OC-Source-ID ] | [ OC-Source-ID ] | |||
* [ AVP ] | * [ AVP ] | |||
6.2.1. OC-Report-Type AVP | 6.2.1. OC-Report-Type AVP | |||
The following new report type is defined for the OC-Report-Type AVP. | The following new report type is defined for the OC-Report-Type AVP. | |||
2 Peer. The overload treatment should apply to all requests bound | PEER_REPORT 2 The overload treatment should apply to all requests | |||
for the peer identified in the overload report. If the peer | bound for the peer identified in the overload report. If the peer | |||
identified in the overload report is not a peer to the reacting | identified in the overload report is not a peer to the reacting | |||
endpoint then the overload report should be stripped and not acted | endpoint then the overload report should be stripped and not acted | |||
upon. | upon. | |||
This extension uses the OC-SourceID AVP for this purpose. | ||||
6.3. OC-SourceID | 6.3. OC-SourceID | |||
The SourceID AVP (AVP code TBD) is of type DiameterIdentity and is | The SourceID AVP (AVP code TBD) is of type DiameterIdentity and is | |||
inserted by the DOIC node that either indicates support for this | inserted by the DOIC node that either indicates support for this | |||
feature (in the OC-Supported-Features AVP) or that generates an OC- | feature (in the OC-Supported-Features AVP) or that generates an OC- | |||
OLR AVP with a report type of peer. | OLR AVP with a report type of peer. | |||
It contains the Diameter Identity of the inserting node. This is | It contains the Diameter Identity of the inserting node. This is | |||
used by other DOIC nodes to determine if the a peer indicated | used by other DOIC nodes to determine if the a peer indicated support | |||
indicated support this feature or inserted the peer report | this feature or inserted the peer report. | |||
6.4. Attribute Value Pair flag rules | 6.4. 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-SourceID TBD1 x.x Unsigned64 | | V | | |OC-SourceID TBD1 x.x Unsigned64 | | V | | |||
|OC-Peer-Algo TBD1 x.x Unsigned64 | | V | | |OC-Peer-Algo TBD1 x.x Unsigned64 | | V | | |||
+--------------------------------------------------------+----+----+ | +--------------------------------------------------------+----+----+ | |||
skipping to change at page 17, line 48 | skipping to change at page 18, line 27 | |||
Adam Roach and Eric McMurry for the work done in defining a | Adam Roach and Eric McMurry for the work done in defining a | |||
comprehensive Diameter overload solution in draft-roach-dime- | comprehensive Diameter overload solution in draft-roach-dime- | |||
overload-ctrl-03.txt. | overload-ctrl-03.txt. | |||
Ben Campbell for his insights and review of early versions of this | Ben Campbell for his insights and review of early versions of this | |||
document. | document. | |||
10. Normative References | 10. Normative References | |||
[I-D.ietf-dime-doic-rate-control] | ||||
Donovan, S. and E. Noel, "Diameter Overload Rate Control", | ||||
draft-ietf-dime-doic-rate-control-00 (work in progress), | ||||
December 2014. | ||||
[I-D.ietf-dime-ovli] | [I-D.ietf-dime-ovli] | |||
Korhonen, J., "Diameter Overload Indication Conveyance", | Korhonen, J., Donovan, S., Campbell, B., and L. Morand, | |||
October 2013. | "Diameter Overload Indication Conveyance", draft-ietf- | |||
dime-ovli-08 (work in progress), February 2015. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
May 2008. | May 2008. | |||
[RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | |||
"Diameter Base Protocol", RFC 6733, October 2012. | "Diameter Base Protocol", RFC 6733, October 2012. | |||
End of changes. 53 change blocks. | ||||
98 lines changed or deleted | 123 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |