RFC 9390: Diameter Group Signaling
- M. Jones,
- M. Liebsch,
- L. Morand
Abstract
In large network deployments, a single Diameter node can support over a million concurrent Diameter sessions. In some use cases, Diameter nodes need to apply the same operation to a large group of Diameter sessions concurrently. The Diameter base protocol commands operate on a single session so these use cases can result in many thousands of command exchanges enforcing the same operation on each session in the group. In order to reduce signaling, it is desirable to enable bulk operations on all (or part of) the sessions managed by a Diameter node using a single or a few command exchanges. This document specifies the Diameter protocol extensions to achieve this signaling optimization.¶
Status of This Memo
This is an Internet Standards Track document.¶
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2023 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
(https://
1. Introduction
In large network deployments, a single Diameter node can support over a million concurrent Diameter sessions. In some use cases, Diameter nodes need to apply the same operation to a large group of Diameter sessions concurrently. For example, a policy decision point may need to modify the authorized quality of service for all active users having the same type of subscription. The Diameter base protocol commands operate on a single session so these use cases can result in many thousands of command exchanges enforcing the same operation on each session in the group. In order to reduce signaling, it is desirable to enable bulk operations on all (or part of) the sessions managed by a Diameter node using a single or a few command exchanges.¶
This document describes mechanisms for grouping Diameter sessions and
applying Diameter commands, such as performing re
These mechanisms take the following design goals and features into account:¶
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
3. Protocol Overview
3.1. Building and Modifying Session Groups
In order to accommodate bulk operations on Diameter sessions, the concept of session groups is introduced. Once sessions are added to a group, a command acting on the group will affect all the member sessions.¶
The client and the server can assign a new Diameter session to a group, e.g., in case the subscription profile of the associated user has similar characteristics as the profile of other users whose Diameter session has been assigned to one or multiple groups. A single command can be issued and applied to all sessions associated with one or more such groups, e.g., to adjust common profile or policy settings.¶
The assignment of a Diameter session to a group can be changed during an ongoing session (mid-session). For example, if a user's subscription profile changes mid-session, a Diameter server may remove a session from an existing group and assign this session to a different group that is more appropriate for the new subscription profile.¶
In the case of mobile users, the user's session may get transferred mid-session to a new Diameter client during handover and assigned to a different group, which is maintained at the new Diameter client.¶
It may be required to delete a session group, e.g., at the expiry of a promotional period that applied to multiple subscriber profiles. Deletion of such group requires subsequent individual treatment of each of the assigned sessions. A node may decide to assign some of these sessions to any other existing or new group.¶
3.2. Issuing Group Commands
Changes in the network condition may result in the Diameter server's decision to close all sessions in a given group. For example, the server issues a single Session Termination Request (STR) command, including the identifier of the group of sessions that are to be terminated. The Diameter client treats the STR as a group command and initiates the termination of all sessions associated with the identified group. Subsequently, the client confirms the successful termination of these sessions to the server by sending a single Session Termination Answer (STA) command, which includes the identifier of the group.¶
3.3. Permission Considerations
Permission considerations in the context of this document apply to the permission of Diameter nodes to build new session groups, to assign/remove a session to/from a session group, and to delete an existing session group.¶
When a client or server decides to create a new session group,
e.g., to group all sessions that share certain characteristics
After the creation of a session group, a session can be added to this session group by either the client or the server. However, a session can only be removed from a session group by the Diameter node (client or server) that has assigned this session to the session group.¶
A session group can only be deleted by the owner of the session group, resulting in individual treatment of the sessions that were assigned to this session group.¶
Diameter applications with implicit support for session groups MAY define a more constrained permission model. For example, a more constrained model could require that a client not remove a session from a group that is owned by the server. Details about enforcing a more constrained permission model are out of scope of this specification.¶
4. Protocol Description
4.1. Session Grouping Capability Discovery
Diameter nodes SHOULD NOT perform group operations with peer nodes unless the node has advertised support for session grouping and group operations.¶
4.1.1. Capability Discovery Based on the Application Id
Newly defined Diameter applications may intrinsically support Diameter session grouping and group operations. In these cases, there is no need of a specific discovery mechanism for the support of session grouping capability besides the discovery of the Application Id assigned to the application advertised during the capability exchange phase described in Section 5.3 of [RFC6733].¶
System-specific and deployment
4.1.2. Capability Discovery Based on AVP Presence
If no other mechanism for capability discovery is deployed to enable
Diameter nodes to learn about nodes' capability to support session grouping
and group commands for a given application, a Diameter node SHOULD append
the Session
When a Diameter node receives at least one Session
4.2. Session Grouping
This specification does not limit the number of session groups to which a single session is assigned. It is left to the implementation of an application to determine such limitations. If an application facilitates a session to belong to multiple session groups, the application MUST maintain consistency of associated application session states for these multiple session groups.¶
Either Diameter node (client or server) can initiate the assignment of a session to a single or multiple session groups. Modification of a group by removing or adding a single or multiple user sessions can be initiated and performed mid-session by either Diameter node responsible for the session assignment to this group. Although Diameter is a peer-to-peer protocol, Diameter Authentication, Authorization, and Accounting (AAA) applications typically assign the role of a "Diameter client" to the Diameter node initiating the Diameter session and the role of "Diameter server" to the node authorizing the Diameter session. This specification does not restrict group creation, assignment, or deletion actions to a specific role. In the following sections, "Diameter node" is used to refer to either role. Section 5 describes particularities about session grouping and performing group commands when relay agents or proxies are deployed.¶
Any Diameter node that has advertised support of session grouping and group operations MUST store and maintain the group assignment as part of the session's state. A list of all known session groups is locally maintained on each node, with each group pointing to individual sessions being assigned to the group. Each Diameter node MUST also keep a record about sessions that it has assigned to a session group.¶
4.2.1. Group Assignment at Session Initiation
To assign a session to a group at session initiation, a Diameter
client sends a service
The client may choose one or multiple session groups from a list of
existing session groups. Alternatively, the client may decide to
create a new group to which the session is assigned and identify
itself in the <Diameter
The client MUST set the SESSION
The client may also indicate in the request that it supports
assignment of the session to one or more groups by the server. In
such case, the client MUST include the Session
If the Diameter server receives a command request from a Diameter client
and the command includes at least one Session
If the Diameter server accepts the client's request for a group
assignment, the server MUST assign the new session to each (one or more)
of the identified session groups when present in the Session-
Group-Info AVP. If
one or multiple identified session groups are not already stored by the
server, the server MUST store the one or more newly identified groups to its local
list of known session groups.
When sending the response to the client,
e.g., a service
In addition to the one or multiple session groups identified in the
client's request, the server may decide to assign the new session to
one or multiple additional groups. In such case, the server MUST
add to the response the additional Session
If the Diameter server rejects the client's request for a group
assignment, the server sends the response to the client, e.g., a
service
If the assignment of the session to one or some of the multiple identified
session groups fails, the session group assignment is treated as a failure.
In such case, the session is treated as a single session without assignment to
any session group by the Diameter nodes. The server sends the response to
the client and MAY include those Session
If the Diameter server receives a command request from a Diameter client
and the command includes a Session
If the Diameter server receives a command request from a Diameter
client and the command does not contain any Session
If the Diameter client receives a response to its previously issued
request from the server and the response includes at least one
Session
If the Diameter client receives a response to its previously issued
request from the server and one or more Session
If a Diameter client sends a request for session initiation
containing one or more Session
4.2.2. Removing a Session from a Session Group
When a Diameter client decides to remove a session from a particular
session group, the client sends a service
When a Diameter client decides to remove a session from all session
groups to which the session has been previously assigned, the client
sends a service
If the Diameter server receives a request from the client that has at
least one Session
When the Diameter server decides to remove a session from one or
multiple particular session groups or from all session groups to
which the session has been assigned beforehand, the server sends a
Re-Auth-Request (RAR) or a service
4.2.3. Mid-session Group Assignment Modifications
Either Diameter node (client or server) can modify the group membership of an active Diameter session according to the specified permission considerations.¶
To update an assigned group mid-session, a Diameter client sends a
service
When a Diameter server decides to update assigned groups mid-session, it
sends a Re-Auth-Request (RAR) message or a service
4.3. Deleting a Session Group
To explicitly delete a session group and release the associated
Session
A session group is implicitly deleted and its identifier is released after the last session has been removed from this session group.¶
4.4. Performing Group Operations
4.4.1. Sending Group Commands
Either Diameter node (client or server) can request the recipient of a
request to process an associated command for all sessions assigned to one
or multiple groups by identifying these groups in the request. The sender
of the request appends for each group to which the command applies a
Session
If the Command Code Format (CCF) of the request mandates a Session-Id
AVP, the Session-Id AVP MUST identify one of the single sessions
that is assigned to at least one of the groups being identified in
the appended Session
The sender of the request MUST indicate to the receiver how multiple
resulting transactions associated with a group command are to be treated by
appending a single instance of a Group
If the sender sends a request including the Group
If the sender wants the receiver of the request to process the associated command for a single session, the sender does not append any group identifier; it identifies only the relevant session in the Session-Id AVP.¶
4.4.2. Receiving Group Commands
A Diameter node receiving a request to process a command for a group
of sessions identifies the relevant groups according to the included
Session
4.4.3. Error Handling for Group Commands
When a Diameter node receives a request to process a command for one or more session groups and the result of processing the command is an error that applies to all sessions in the identified groups, an associated protocol error MUST be returned to the source of the request. In such case, the sender of the request MUST fall back to single-session processing and the session groups, which have been identified in the group command, MUST be deleted according to the procedure described in Section 4.3.¶
When a Diameter node receives a request to process a command for one
or more session groups and the result of processing the command
succeeds for some sessions identified in one or multiple session
groups but fails for one or more sessions, the Result-Code AVP in
the response message SHOULD indicate DIAMETER
In the case of limited success, the sessions for which the processing of the group command failed MUST be identified by including their Session-Id AVP in the Failed-AVP AVP, as per Section 7.5 of [RFC6733]. The sender of the request MUST fall back to single-session operation for each of the identified sessions for which the group command failed. In addition, each of these sessions MUST be removed from all session groups to which the group command applied. To remove sessions from a session group, the Diameter client performs the procedure described in Section 4.2.2.¶
4.4.4. Single-Session Fallback
Either Diameter node can fall back to single-session operation by
ignoring and omitting the optional group
5. Operation with Proxy Agents
In the case of a present stateful Proxy Agent between a Diameter client and a Diameter server, the Proxy Agent MUST perform the same mechanisms per this specification to advertise session grouping and group operation capabilities towards the client and the server, respectively. The Proxy Agent MUST update and maintain consistency of its local session states as per the result of the group commands that are operated between a Diameter client and a server. In such case, the Proxy Agent MUST act as a Diameter server in front of the Diameter client and MUST act as a Diameter client in front of the Diameter server. Therefore, the client and the server behavior described in Section 4 applies respectively to the stateful Proxy Agent.¶
If a stateful Proxy Agent manipulates session groups, it MUST maintain consistency of session groups between a client and a server. This applies to a deployment where the Proxy Agent utilizes session grouping and performs group operations with, for example, a Diameter server, whereas the Diameter client is not aware of session groups. In such case, the Proxy Agent must reflect the states associated with the session groups as individual session operations towards the client and ensure the client has a consistent view of each session. The same applies to a deployment where all nodes, the Diameter client and server, as well as the Proxy Agent are group aware, but the Proxy Agent manipulates groups, e.g., to adopt different administrative policies that apply to the client's domain and the server's domain.¶
Stateless Proxy Agents do not maintain any session states (only transaction
states are maintained). Consequently, the notion of a session group is
transparent for any stateless Proxy Agent present between a Diameter client
and a Diameter server handling session groups. Session
6. Commands Formatting
This document does not specify new Diameter commands to enable group operations but relies on command extensibility and capability provided by the Diameter Base protocol. This section provides the guidelines to extend the CCF of existing Diameter commands with optional AVPs to enable the recipient of the command to apply the command to all sessions associated with the identified group or groups.¶
6.1. Formatting Example: Group Re-Auth-Request
A request for re
The value of the mandatory Session-Id AVP MUST identify a session
associated with a single user, which is assigned to at least one of
the groups being identified in the appended Session
7. Attribute-Value Pairs (AVPs)
7.1. Session-Group-Info AVP
The Session
7.2. Session-Group-Control-Vector AVP
The Session
The following control flags are defined in this document:¶
SESSION
SESSION
7.3. Session-Group-Id AVP
The Session
The Session
7.4. Group-Response-Action AVP
The Group
- ALL_GROUPS (1)
- Follow-up message exchanges associated with a group command should be performed with a single message exchange for all impacted groups.¶
- PER_GROUP (2)
- Follow-up message exchanges associated with a group command should be performed with a separate message exchange for each impacted group.¶
- PER_SESSION (3)
- Follow-up message exchanges associated with a group command should be performed with a separate message exchange for each impacted session.¶
7.5. Session-Group-Capability-Vector AVP
The Session
The following capability is defined in this document:¶
BASE
8. Result-Code AVP Values
This document does not define new Result-Code [RFC6733] values for existing applications, which are extended to support group commands. Documents specifying new applications, which will have intrinsic support for group commands, may specify new Result-Codes.¶
9. IANA Considerations
This section contains the namespaces that have either been created in this specification or had their values assigned to existing namespaces managed by IANA.¶
9.1. AVP Codes
IANA has registered the following new AVPs from the "AVP Codes" registry defined in [RFC6733]. The AVPs are defined in Section 7.¶
9.2. New Registries
IANA has created the following two new registries.¶
10. Security Considerations
The security considerations of the Diameter protocol itself are discussed
in [RFC6733]. Use of the AVPs defined in this document MUST take into
consideration the security issues and requirements of the Diameter base
protocol. In particular, the Session
The management of session groups relies upon the existing trust relationship between the Diameter client and the Diameter server managing the groups of sessions. This document defines a mechanism that allows a client or a server to act on multiple sessions at the same time using only one command. If the Diameter client or server is compromised, an attacker could launch DoS attacks by terminating or applying change operations to a large number of sessions with a limited set of commands using the session group management concept.¶
According to the Diameter base protocol [RFC6733], transport
connections between Diameter peers are protected by TLS/TCP, DTLS /
Stream Control Transmission Protocol (SCTP), or alternative security mechanisms that are independent of
Diameter, such as IPsec. However, the lack of end-to-end security
features makes it difficult to establish trust in the session
In some cases, a Diameter Proxy Agent can act on behalf of a client or a server. In such case, the security requirements that normally apply to a client (or a server) apply equally to the Proxy Agent.¶
11. Normative References
- [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC6733]
-
Fajardo, V., Ed., Arkko, J., Loughney, J., and G. Zorn, Ed., "Diameter Base Protocol", RFC 6733, DOI 10
.17487 , , <https:///RFC6733 www >..rfc -editor .org /info /rfc6733 - [RFC7155]
-
Zorn, G., Ed., "Diameter Network Access Server Application", RFC 7155, DOI 10
.17487 , , <https:///RFC7155 www >..rfc -editor .org /info /rfc7155 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174
Appendix A. Session Management -- Exemplary Session State Machine
A.1. Use of Groups for the Authorization Session State Machine
Section 8.1 of [RFC6733] defines a set of finite state machines that represent the life cycle of Diameter sessions, which must be observed by all Diameter implementations that make use of the authentication and/or authorization portion of a Diameter application. This section defines, for example, additional state transitions related to the processing of the group commands that may impact multiple sessions.¶
The group membership is a session state, and therefore only those state
machines from [RFC6733] in which the server is maintaining session
state are relevant in this document.
As in [RFC6733], the term
'service
The following state machine is observed by a client when the state is maintained on the server. State transitions that are unmodified from [RFC6733] are not repeated here.¶
The Diameter group command in the following tables is differentiated
from a single
Additionally, the following acronyms are used in the tables below.¶
- GASR:
- Group
-Abort -Session -Request¶ - GASA:
- Group
-Abort -Session -Answer¶ - GSTA:
- Group
-Session -Termination -Answer¶ - GSTR:
- Group
-Session -Termination -Request¶
The following state machine is observed by a server when it is maintaining the state for the session. State transitions that are unmodified from [RFC6733] are not repeated here.¶
Acknowledgments
The authors of this document want to thank Ben Campbell and Eric McMurry for their valuable comments to early draft versions of this document. Furthermore, the authors thank Steve Donovan and Mark Bales for the thorough review and comments on advanced versions of the WG document, which helped a lot to improve this specification.¶