Internet Engineering Task Force | S. Donovan |
Internet-Draft | B. Campbell |
Intended status: Informational | Oracle |
Expires: January 4, 2015 | July 3, 2014 |
Analysis of Agent Use Cases for Diameter Overload Information Conveyance (DOIC)
draft-donovan-doic-agent-cases-00
The Diameter Overload Information Conveyance (DOIC) solution describes a mechanism for exchanging information about Diameter Overload among Diameter nodes. A DOIC node is a Diameter node that acts as either a reporting node are a reacting node. A reporting node originates overload reports, requesting reacting nodes to reduce the amount of traffic sent. DOIC allows Diameter agents to act as reporting nodes, reacting nodes, or both, but does not describe agent behavior. This document explores several use cases for agents to participate in overload control, and makes recommendations for certain agent behaviors to be added to DOIC.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 4, 2015.
Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
The Diameter Overload Information Conveyance (DOIC) [I-D.ietf-dime-ovli] solution describes a mechanism for exchanging diameter overload information among Diameter nodes. DOIC defines the concept of a DOIC endpoint (referred to as a "DOIC node" in this document.) A DOIC node is a Diameter node that acts as either a reporting node or a reacting node. A reporting node originates overload reports, requesting reacting nodes to reduce the offered load. An overload report has a "type". The type of overload report determines the scope of the request for traffic reduction, and possibly other semantics.
DOIC nodes do not necessarily correspond to Diameter clients and servers. Any Diameter node that supports DOIC is a DOIC node. This includes Diameter agents, as well as Diameter clients and servers. However, DOIC does not currently describe how agents should behave as part of an overload control solution. This document explores several use cases for agents to participate in overload control, and makes recommendations for certain agent behaviors to be added to DOIC.
This section outlines the deployment architectures used to determine agent related Diameter DOIC requirements.
These deployment architectures include the use of Diameter agents to route Diameter requests between Diameter clients and Diameter servers.
In all cases, a small number of client and server nodes are shown for simplicity. Adding additional clients and/or servers does not change the fundamental characteristics of the deployments.
Figure 1 shows an architecture with a single agent sitting between Diameter clients and Diameter servers.
+--+ +--+ |C1|----- -----|S1| +--+ \+--+/ +--+ |A1| +--+ /+--+\ +--+ |C2|----- -----|S2| +--+ +--+
Figure 1
Figure 2 shows an architecture with multiple agents sitting between Diameter clients and Diameter servers.
+--+ +--+ |C1|----- -----|S1| +--+ \+--+ +--+/ +--+ |A1|------|A2| +--+ /+--+ +--+\ +--+ |C2|----- -----|S2| +--+ +--+
Figure 2
This document focuses on use cases that involve agents, and does not therefore include scenarios with no agent(s) between the transaction client and transaction server. It is, however, important that any changes to the DOIC solution introduced to support networks that contain agents also work when there is no agent sitting between Diameter clients and servers.
Diameter supports two primary methods [RFC6733] for nodes to select the next hop for a request . Normally, Diameter nodes base peer-selection on the Destination-Realm and Application-Id AVP values. That is, they select a next hop from their Diameter peer table entry that matches the realm and application of the request. For the sake of this analysis, we refer to requests routed by this method as "realm-routed requests"
A Diameter TC may also control the final destination of a request by inserting a Destination-Host AVP. When a node forwards a request that includes Destination-Host, it checks to see if it has a matching Diameter identity in its peer table. If so, it forwards the request to that peer. Otherwise, it follows the normal peer-selection for the realm and application. We refer to requests routed this way as "host-routed requests".
In general, throttling [abatement] is the the only abatement technique that works for host-routed requests. Diversion [abatement] is typically not possible, since only a single TS can handle any given request.
On the other hand, diversion is often useful for abating realm-routed traffic. Since realm-routed requests are not bound to a particular TS, it is often be possible to divert a number of them to other servers that are less overloaded.
When a Diameter node becomes overloaded, there often must be a reduction of the number of both realm-routed and host-routed requests, in order to have the desired reduction of the overall offered-load. We refer to this reductions as "Overload Abatement".
There are two ways to perform overload abatement. The first is to reject some number of Diameter requests, also known as "throttling". When a TC throttles traffic, it rejects or defers certain client application requests, as appropriate for the client application. When an agent or TS throttles traffic, it rejects Diameter requests with an appropriate error code, so that the TC can behave correctly at the client application layer.
The second way to abate overload is to move some number of requests from an overloaded node to one or more eligible nodes that are less overloaded. For the purposes of this draft, we refer to this abatement method as "Diversion".
Either method, separately or in combination, continue over the duration of the overload condition.
There are a few architectural principles that should be considered when building Diameter networks to be resilient to overload, or when deploying DOIC into existing Diameter network.
All things being equal, diversion is better than throttling. Diversion potentially allows more requests to succeed, which will almost always have less negative impact on the client application. However, there are situations where diversion is not possible. For example, diversion is usually not possible for host-routed requests (see Section 3). Diversion may not be helpful if all potential destinations are overloaded. If proprietary load balancing mechanisms are in use, diversion for DOIC purposes may be redundant with those mechanisms.
If diversion is performed, the diversion should occur as close as possible to the TS, but not at the TS itself (since this would defeat the point of overload abatement.) Diversion should optimally occur at an immediate peer to the TS; that is, a node that shares a direct transport connection with the TS. A directly connected peer will have the most knowledge of alternative destinations and their current loads. If nodes further from the TS attempt to diversion, topology knowledge and overload state knowledge must be pushed further down the chain. Even then, a node usually cannot control how a realm-routed request might be routed upstream of the immediate peer.
Throttling should occur at, or as close as possible, to the TC. The TC has the best knowledge of the client application and its current state. The TC can choose to reject requests that have the lease impact on the client application, or provide the most effect for traffic reduction over time. Furthermore, throttling at the TC completely avoids Diameter overhead for rejected requests. Each additional hop traversed by requests that will eventually be rejected increases the impact of those requests.
This section outlines example use cases involving agents. Each of these use cases is evaluated with the goal of identifying any required changes to [I-D.ietf-dime-ovli] needed to support the use case.
The following is the list of use cases considered. This is not an exhaustive list of DOIC use cases but is rather a list of use cases identified by the authors as being impacted by the presence of agents in the deployment.
This section addresses overload capability announcement and overload report handling in a deployment with a single agent as illustrated in Figure 1.
This use case assumes that all nodes support DOIC and that all nodes support the same set of overload features.
This use case includes four sub-cases:
This section explores capability announcement for the simple agent use case.
This use case assumes that the capabilities supported by the TC and those supported by the agent are the same. (A scenario with differing capabilities is supported in discussed in Section 5.2.)
Figure 3 shows the message flow for this use case.
The nomenclature OC-S-F:x is short for OC-Supported-Feature with the ":x" indicating the Diameter node that inserted the AVP into the message.
+--+ +-+ +--+ |TC| |A| |TS| +--+ +-+ +--+ | | | 1> |-- xxR OC-S-F:C---------->| | | | | 2> | |-- xxR OC-S-F:C---------->| | | | 3> | |<---------- xxA OC-S-F:S--| | | | 4> |<-------- xxA OC-S-F:S----| | | | |
Figure 3
This section addresses overload report handling in a deployment with a single agent as illustrated in Figure 1.
The following three scenarios are illustrated:
In these message flows, "xxR" indicates a Diameter request, and "xxA" indicates an answer. "HR" under a request indicates that the request is host-routed. "RR" indicates the request is realm-routed. If neither is present for a request, then it can be either host or realm routed. "OLR:Host" indicates an overload report of type Host. "OLR:Realm" indicates an overload report of type Realm.
+-+ +-+ +-+ |C| |A| |S| +-+ +-+ +-+ | | | 1> |-- xxR OC-S-F:C----->| | | | | 2> | |-- xxR OC-S-F:C----->| | | | 3> | |<----- xxA OC-S-F:S--| | | OLR:Host | 4> |<--- xxA OC-S-F:S----| | | OLR:Host | | | | | 5> |-- xxR OC-S-F:C---X | | | HR | | | | | 6> |-- xxR OC-S-F:C----->| | | HR | | | | | 7> | |-- xxR OC-S-F:C----->| | | | | | | 8> | |<----- xxA OC-S-F:S--| | | OLR:Host | | | | 9> |<--- xxA OC-S-F:S----| | | OLR:Host | | | | | 10>|-- xxR OC-S-F:C----->| | | RR | | 11>| |-- xxR OC-S-F:C---X | | | RR | | | | 12>|<--- xxA Throttled---| | | | | | | | 13>|-- xxR OC-S-F:C----->| | | RR | | | | | 14>| |-- xxR OC-S-F:C----->| | | RR | | | | 15>| |<----- xxA OC-S-F:S--| | | OLR:Host | | | | 16>|<--- xxA OC-S-F:S----| | | OLR:Host | | | | |
Figure 4
A relays the answer message without change to OC-S-F or OC-OLR. Upon receipt of the answer, C saves overload state based on the overload report.
The following shows the case of host overload report handling of realm-routed requests when there is a second TS to which requests can be diverted when one of the servers is in an overload state.
+-+ +-+ +--+ +--+ |C| |A| |S1| |S2| +-+ +-+ +--+ +--+ | | | | 1> |-- xxR OC-S-F:C----->| | | | | | | 2> | |-- xxR OC-S-F:C----->| | | | | | 3> | |<----- xxA OC-S-F:S--| | | | OLR:Host | | 4> |<--- xxA OC-S-F:S----| | | | OLR:Host | | | | | | | 5> |-- xxR OC-S-F:C----->| | | | RR | | | 6> | |-- xxR OC-S-F:C--------------------------->| | | RR | | | | | | 7> | |<--------------------------- xxA OC-S-F:S--| | | | | 8> |<--- xxA OC-S-F:S----| | | | | | |
Figure 5
The following illustrates the agents behavior when it has received a host report from all servers. In this case the agent generates a Realm report. This is only possible when the agent knows the overload state of all TSs for the given realm and application.
+-+ +-+ +--+ +--+ |C| |A| |S1| |S2| +-+ +-+ +--+ +--+ | | | | 1> |-- xxR OC-S-F:C----->| | | | | | | 2> | |-- xxR OC-S-F:C----->| | | | | | | | | | 3> | |<----- xxA OC-S-F:S--| | | | OLR:Host | | 4> |<--- xxA OC-S-F:S----| | | | OLR:Host | | | | | | | 5> |-- xxR OC-S-F:C----->| | | | RR | | | | | | | 6> | |-- xxR OC-S-F:C--------------------------->| | | | | 7> | |<--------------------------- xxA OC-S-F:S--| | | | OLR:Host | 8> |<--- xxA OC-S-F:S----| | | | OLR:Host | | | | OLR:Realm | | | | | | |
Figure 6
The following is a list of behavior that needs to be reflected in the DOIC specification.
This use case explores the impact of having a different set of DOIC capabilities supported by the TC and one or more agents in the path of the request.
Figure 7 illustrates the case. In this figure, "OC-S-F:C" indicates it carries the set of capabilities supported by C. "OC-S-FC:AC" indicates the set of capabilities that A declares to S. "OC-S-FC:S" indicates S's response to the AC set of capabilities. OC-S-FC:AS indicates A's modification to the capabilities selected by S. This is needed in the case where S's capabilities are not compatible with C's.
+-+ +-+ +-+ |C| |A| |S| +-+ +-+ +-+ | | | 1> |-- xxR OC-S-F:C---------->| | | | | 2> | |-- xxR OC-S-F:AC--------->| | | | 3> | |<---------- xxA OC-S-F:S--| | | | 4> |<-------- xxA OC-S-F:AS---| | | | |
Figure 7
Figure 8 illustrates one specific type of mixed capabilities. In this case, C only supports the loss abatement algorithm, A supports both loss and rate and S selects rate.
+-+ +-+ +-+ |C| |A| |S| +-+ +-+ +-+ | | | 1> |-- xxR OC-S-F:C---------->| | | loss | | | | | 2> | |-- xxR OC-S-F:AC--------->| | | loss, rate | | | | 3> | |<---------- xxA OC-S-F:S--| | | rate | | | OC-OLR:S | | | rate | | | | 4> |<-------- xxA OC-S-F:AS---| | | loss | | | OC-OLR:A | | | loss | |
Figure 8
This flow assumes that A is able to handle rate-based overload reports, even though the TC cannot. How this is done in practice is implementation specific. In this example, A applies local rate-limiting, but send loss-based OLRs to C if A cannot handle C's offered load without violating the rate-limit.
If A chose to apply local throttling to enforce the rate limit, instead of sending load-based OLRs back to the TC, the scenario would be closer to that for a TC that did not support DOIC [uc-nsclient].
An agent must have the ability to replace the OC-S-F AVP in request messages.
An agent must have the ability to remove or replace the OC-S-F AVP in answer messages.
An agent must have the ability to remove or replace the OC-OLR AVP in answer messages.
This section outlines the impact of agent based scenarios where there is a node that does not support DOIC in the path of a request. There are five variations of this use case:
This section outlines the handling of non-supporting transaction client.
This use case is illustrated in Figure 9. In this case assume that C1 supports DOIC and C2 does not.
+--+ +--+ |C1|----- -----|S1| +--+ \+--+/ +--+ |A1| **** /+--+\ +--+ *C2*----- -----|S2| **** +--+
Figure 9
Figure 10 illustrates capability announcement for both the supporting and non-supporting client. This scenario assumes that the capabilities supported by C1 and A are the same.
There is no change from the simple agent use case for transactions originated by C1.
For transactions originated by the non-supporting reacting node C2, A1 determines that C2 does not support DOIC by the absence of an OC-S-F AVP and inserts an OC-S-F AVP indicating the OC features supported by A1.
+--+ **** +-+ +-+ |C1| *C2* |A| |S| +--+ **** +-+ +-+ | | | | 1> |-- xxR OC-S-F:C--------------------------->|-- xxR OC-S-F:C----->| | | | | 2> |<---------------------------xxA OC-S-F:S---|<-----xxA OC-S-F:S---| | | | | 3> | |-- xxR ------------->| | | | | | 4> | | |-- xxR OC-S-F:A----->| | | | | 5> | | |<-----xxA OC-S-F:S---| | | | | 6> | |<------------- xxA---| | | | | |
Figure 10
Figure 11 illustrates overload report handling for this scenario.
There is no change in overload handling for requests originated by C1. C1 is responsible for abatement of host routed requests and A is responsible for abatement of realm-routed requests.
For requests originated by C2, it becomes the responsibility of A to handle overload abatement requested by S. In this case A is responsible for abatement of both host-routed and realm-routed requests, as A has a direct transport connection to S. The way an agent handles this in practice is implementation specific. Depending on the algorithm, an agent might be able to treat requests from all non-supporting clients as a pool. More complex implementations might maintain (and certain algorithms might require) the agent to maintain an overload control state machine for each known non-supporting client.
+--+ **** +-+ +-+ |C1| *C2* |A| |S| +--+ **** +-+ +-+ | | | | 1> |-- xxR OC-S-F:C--------------------------->|-- xxR OC-S-F:C----->| | | | | 2> |<---------------------------xxA OC-S-F:S---|<-----xxA OC-S-F:S---| | | OLR | OLR | | | | | |HR abatement handled by C1 |RR abatement handled by A | | | | 3> | |-- xxR ------------->|-- xxR OC-S-F:A----->| | | | | 4> | |<------------- xxA---|<-----xxA OC-S-F:S---| | | | OLR | | | | | | | | HR and RR abatement | | | | handled by A | | | | | 5> | |-- xxR ------------->|-- xxR OC-S-F:A----->| | | | | 6> | |<------------- xxA---|<-----xxA OC-S-F:S---| | | | OLR | | | | | 7> | |-- xxR ------------->| | | | | | 8> | |<------------- xxA---| | | | Diameter-Throttled | | | | |
Figure 11
This section shows the case where there is a mix of transaction servers that support DOIC and those that do not support DOIC.
In this case, it becomes the responsibility of a DOIC agent to become the reporting node for the non-supporting transaction server. The method the agent uses to determine if abatement of traffic is required for the non-supporting node is implementation specific. (For example, an agent may infer that a TS is overloaded by observing Diameter or transport errors, or it may have some proprietary, out-of-band mechanism for learning about TS overload.)
+--+ +--+ |C1|----- -----|S1| +--+ \+--+/ +--+ |A1| +--+ /+--+\ **** |C2|----- -----*S2* +--+ ****
Figure 12
+-+ --- +--+ **** |C| |A| |S1| *S2* +-+ --- +--+ **** | | | | 1> |-- xxR OC-S-F:C----->|-- xxR OC-S-F:C----->| | | | | | 2> |<-----xxA OC-S-F:S---|<-----xxA OC-S-F:S---| | | | OLR | | | | | | 3> |-- xxR OC-S-F:C----->| | | | | | | 4> | |-- xxR OC-S-F:C--------------------------->| | | | | 5> | |<-----------------------------------xxA ---| | | | | 6> |<-----xxA OC-S-F:A---| | | | OLR | | | | | | |
Figure 13
There are two sub-cases for non-supporting agents.
Figure 14 illustrates the first non-supporting agent case, where the first agent in a chain of agents does not support DOIC.
In this case, A2 picks up the responsibility of handling overload abatement in the case that either C1 or C2 do not support DOIC.
A2 is also responsible for abating realm-routed requests for host reports received from S1 or S2.
+--+ +--+ |C1|----- -----|S1| +--+ \**** +--+/ +--+ *A1*------|A2| +--+ /**** +--+\ +--+ |C2|----- -----|S2| +--+ +--+
Figure 14
Figure 15 illustrates the second non-supporting agent case, where the last agent in the chain does not support DOIC.
In this scenario, there is no DOIC node that has a direct transport connection with S1 and S2. As a result, there is no DOIC node that can correctly handle abatement of realm-routed requests resulting. In the example, A1 cannot perform diversion, because it cannot control whether any given request goes to S1 or S2. And it cannot correctly determine how much to throttle unless it has advance knowledge of the topology behind A2, which is currently out of scope for DOIC.
As a result, this deployment scenario should be avoided.
+--+ +--+ |C1|----- -----|S1| +--+ \+--+ ****/ +--+ |A1|------*A2* +--+ /+--+ ****\ +--+ |C2|----- -----|S2| +--+ +--+
Figure 15
Figure 16 shows three administrative domains, Dom 1, Dom 2, and Dom 3. Dom 3 does not wish information about the condition of it's network to be shared with Dom 1, but is willing to share overload information with Dom 2 in order to optimize inter-domain traffic.
+--------------------+ +-----------+ +--------------------+ | Dom 1 | | Dom 2 | | Dom 3 | | +--+ | | | | +--+ | | |C1|----- | | +---+ | | -----|S1| | | +--+ \+--+--------|A2A|---------+--+/ +--+ | | |A1| | | +---+ | | |A3| | | +--+ /| | | | ***** | | | |\ +--+ | | |C2|----- +--+--------*A2B*---------+--+ -----|S2| | | +--+ | | ***** | | +--+ | | | | | | | +--------------------+ +-----------+ +--------------------+
Figure 16
Dom 2 in in the process of incremental deployment of DOIC. Agent A2A supports DOIC, but A2B does not. A1 and A3 are configured so that Diameter requests between them may traverse either A2A or A2B.
Figure 17 shows a Diameter message exchange for each potential route. The originating TC and selected TS are not relevant for the example, so they are omitted from the diagram.
+--+ +---+ ***** +--+ |A1| |A2A| *A2B* |A3| +--+ +---+ ***** +--+ | | | | 1> |-- xxR OC-S-F:A1---->|------xxR OC-S-F:A1----------------------->| | | | | 2> |<---------------xxA--|<---------------------------xxA OC-S-F:A3--| | | | | 3> |---xxR OC-S-F:A1-------------------------->|-xxR OC-S-F:A1------>| | | | | 4> |<---------------------------xxA OC-S-F:A3--|<-----xxA OC-S-F:A3--| | | | |
Figure 17
This is a somewhat contrived example, but it shows a case where Dom 3 leaked information to an untrusted domain, because it could not tell the difference between an OC-S-F AVP received from a trusted peer that supports DOIC, or one forwarded from downstream by a non-supporting peer.
A DOIC supporting node must be able to distinguish between an OC-S-F AVP sent by a peer that supports DOIC, and one sent by a non-adjacent node and forwarded by a non-supporting peer. That is not possible in DOIC at the time of this writing.
This section summarizes the recommendations made in previous sections. These recommendations are presented without normative language, but the authors expect that some of the recommendations will require new normative language in [I-D.ietf-dime-ovli]. Others may result in non-normative guidance.
As noted earlier, nothing in this draft should imply that relays are required to deploy DOIC. The majority of these recommendations should be interpreted to allow certain relay behaviors, but not to require them, and to offer architectural guidance on how an operator can best utilize relays in a DOIC deployment if they choose to do so.
This section describes recommendations that apply to the DOIC mechanism in general:
The working group should define a "Diameter-Throttled" error code, that indicates a request has failed due to overload, and should not be retried.[Section 5.1.3] TCs need to recognize the Diameter-Throttled error code, and interpret it as a final failure for the transaction.
The OC-OLR AVP syntax must allow multiple occurrences in the same Diameter answer message. [Section 5.1.3]
The discussion in Section 4, Section 3, and Section 5 suggest certain recommendations for DOIC supporting Diameter relay behavior. The authors recommend that language be added to [I-D.ietf-dime-ovli] to the general effect of the following sections:
This section describes recommended Agent behaviors with respect to the OC-Supported-Features AVP.
A DOIC supporting agent may act as a reporting-node, a reacting-node, or both.
An agent may act as a reporting node on behalf of a non-supporting TS, an abating node on behalf of a non-supporting TC.[Section 5.3]
An agent that acts as a reacting node must include an OC-Supported-Features in each Diameter request that it forwards in that role. If the inbound request included an OC-Supported-Features AVP, the relay may copy its content to the one in the outbound request, or may replace the contents if it wishes to indicate different DOIC capabilities to upstream nodes. If an inbound request does not contain an OC-Supported-Features AVP, the agent must insert one into the outbound request, indicating the DOIC capabilities of the agent itself.
An agent that acts as a reporting node must include an OC-Supported-Features AVP in each Diameter answer that it forwards in that role. If the agent modified the OC-Supported-Features AVP in the associated request, it must perform a reciprocal modification of the OC-Supported-Features AVP in the response.
An agent that does not support the DOIC mechanism is likely to forward an OC-Supported-Features AVP without modification. A DOIC node must be able to tell between an OC-Supported-Features AVP that was forwarded by such a non-supporting agent, and one inserted or copied by a DOIC-supporting node.[Section 5.4]
When a DOIC-supporting relay inserts an OC-Supported-Features AVP (or passes through one received from downstream), it becomes responsible for ensuring that any OLRs it receives from upstream nodes are honored. It can honor an OLR by locally performing overload abatement, delegating abatement to downstream nodes, or a combination of both.
If a relay can honor the OLR by locally diverting traffic, it should do so before resorting to throttling. For example, if a relay receives a realm report from its upstream peer, and has other less-overloaded peers that are valid for the realm and application, it diverts traffic to the less overloaded peers as needed. The relay should apply any knowledge it has of the peers' relative load and capacity in determining how to divert traffic. Note that only a relay that has a direct peer relationship with the servers in question can effectively perform diversion, since a Diameter node cannot directly control how upstream relays will route requests.[Section 5.1]
When an overload condition requires throttling of traffic, an agent should delegate that throttling to downstream nodes if at all possible. Depending on local policy and the nature of the overload condition, this means the agent either originates a new OLR to send downstream, or forwards an OLR received from upstream. For example, if a relay receives a host report (which usually requires traffic throttling), the relay typically forwards that report downstream. The relay may modify the report based on local policy.
If an agent needs to perform local throttling, it must explicitly reject each throttled request with a "Diameter-Throttled" error code.[Section 5.1]
A relay should apply all the information at hand to determine upstream overload. For example, if a relay receives a host-report from a directly attached TS, that relay can reasonable infer that the overload condition applies to all traffic for the realm, and perform local abatement by diverting realm-routed traffic to other servers. If there is insufficient capacity to do so, then it can generate realm-reports downstream. A relay might also have knowledge of the overload or load state of other nodes through some non-DOIC mechanism.[Section 5.1]
Finally, a relay should not generate or forward OLRs in a way likely to cause redundant abatement. For example, if a relay locally throttles traffic due to a "loss" algorithm OLR, it should not forward the OLR downstream where other nodes will also apply abatement to the same traffic. [Section 5.3]
Several use cases in this document involve Agents inserting, removing, or modifying DOIC related AVPs. [RFC6733] does not allow "relay" agents to modify any part of a Diameter message except for routing information. This has one of two implications; either relay agents cannot take an active role in DOIC, or the DOIC AVPs should be designated as "routing AVPs". The authors recommend the second.
But regardless of whether a relay is allowed to modify DOIC AVPs, proxy agents will almost certainly need to do so. Diameter currently only offers hop-by-hop integrity protection of message contents, but the DIME working group is considering requirements for end-to-end protection [I-D.ietf-dime-e2e-sec-req] at the time of this writing. Those requirements currently recognize that different AVPs may require different security treatments. The working group should carefully consider how DOIC will interact with end-to-end security when it is completed.
Until such end-to-end protection is deployed, Diameter follows a fundamentally transitive trust model. Adjacent nodes can authenticate each other's identity, and protect exchanged messages from tampering or eavesdropping. But Diameter nodes have no way of authenticating message content received from non-adjacent nodes, other than trusting the immediate peer to do the right thing.
DOIC related information may be sensitive, and could be destructive if forged or modified by unauthorized parties. DOIC nodes must trust DOIC supporting peers to ensure that no unauthorized parties insert overload reports, and to ensure that reports are not delivered to unauthorized parties. Peers that do not support DOIC cannot be expected to enforce such policies.
At the time of this writing, DOIC provides no way for a supporting node to distinguish between a DOIC AVP from a immediate peer that supports DOIC, and one forwarded by a non-supporting peer. This issue needs to be addressed before DOIC can meet requirements 27, 28, and 29 of [RFC7068]
[DOIC-rate] | Donovan, S. and E. Noel, "Diameter Agent Overload", February 2014. |
[I-D.ietf-dime-ovli] | Korhonen, J., Donovan, S., Campbell, B. and L. Morand, "Diameter Overload Indication Conveyance", Internet-Draft draft-ietf-dime-ovli-02, March 2014. |
[RFC4006] | Hakala, H., Mattila, L., Koskinen, J-P., Stura, M. and J. Loughney, "Diameter Credit-Control Application", RFC 4006, August 2005. |
[RFC6733] | Fajardo, V., Arkko, J., Loughney, J. and G. Zorn, "Diameter Base Protocol", RFC 6733, October 2012. |
[agent-overload] | Donovan, S., "Diameter Agent Overload", March 2014. |
[I-D.ietf-dime-e2e-sec-req] | Tschofenig, H., Korhonen, J., Zorn, G. and K. Pillay, "Diameter AVP Level Security: Scenarios and Requirements", Internet-Draft draft-ietf-dime-e2e-sec-req-01, October 2013. |
[RFC2629] | Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, June 1999. |
[RFC3552] | Rescorla, E. and B. Korver, "Guidelines for Writing RFC Text on Security Considerations", BCP 72, RFC 3552, July 2003. |
[RFC7068] | McMurry, E. and B. Campbell, "Diameter Overload Control Requirements", RFC 7068, November 2013. |