Diameter Maintenance and M. Jones
Extensions (DIME) M. Liebsch
Internet-Draft L. Morand
Intended status: Standards Track July 15, 2013
Expires: January 16, 2014
Diameter Group Signaling
draft-ietf-dime-group-signaling-01.txt
Abstract
In large network deployments, a single Diameter peer can support over
a million concurrent Diameter sessions. Recent use cases have
revealed the need for Diameter peers 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
could result in many thousands of command exchanges to enforce the
same operation on each session in the group. In order to reduce
signaling, it would be desirable to enable bulk operations on all (or
part of) the sessions managed by a Diameter peer 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 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 16, 2014.
Copyright Notice
Copyright (c) 2013 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
Jones, et al. Expires January 16, 2014 [Page 1]
Internet-Draft Diameter Group Signaling July 2013
(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.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Grouping User Sessions . . . . . . . . . . . . . . . . . . . . 5
3.1. Group assignment at session initiation . . . . . . . . . . 5
3.2. Mid-session group assignment modifications . . . . . . . . 5
3.2.1. Client-initiated group assignment changes . . . . . . 6
3.2.2. Server-initiated group assignment changes . . . . . . 6
4. Protocol Description . . . . . . . . . . . . . . . . . . . . . 7
4.1. Session Grouping and implicit Capability Discovery . . . . 7
4.2. Performing Group Operations . . . . . . . . . . . . . . . 8
4.2.1. Sending Group Commands . . . . . . . . . . . . . . . . 8
4.2.2. Receiving Group Commands . . . . . . . . . . . . . . . 8
4.2.3. Single-Session Fallback . . . . . . . . . . . . . . . 9
4.3. Session Management . . . . . . . . . . . . . . . . . . . . 9
4.3.1. Authorization Session State Machine . . . . . . . . . 9
5. Commands Formatting . . . . . . . . . . . . . . . . . . . . . 13
5.1. Group Re-Auth-Request . . . . . . . . . . . . . . . . . . 13
6. Attribute-Value-Pairs (AVP) . . . . . . . . . . . . . . . . . 14
6.1. Session-Group-Id AVP . . . . . . . . . . . . . . . . . . . 14
6.2. Session-Group-Action AVP . . . . . . . . . . . . . . . . . 14
7. Result-Code AVP Values . . . . . . . . . . . . . . . . . . . . 15
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16
8.1. AVP Codes . . . . . . . . . . . . . . . . . . . . . . . . 16
9. Security Considerations . . . . . . . . . . . . . . . . . . . 17
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 18
11. Normative References . . . . . . . . . . . . . . . . . . . . . 19
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 20
Jones, et al. Expires January 16, 2014 [Page 2]
Internet-Draft Diameter Group Signaling July 2013
1. Introduction
In large network deployments, a single Diameter peer can support over
a million concurrent Diameter sessions. Recent use cases have
revealed the need for Diameter peers 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 could result in many thousands of command exchanges to
enforce the same operation on each session in the group. In order to
reduce signaling, it would be desirable to enable bulk operations on
all (or part of) the sessions managed by a Diameter peer using a
single or a few command exchanges.
This document describes mechanisms for grouping Diameter sessions and
applying Diameter commands, such as performing re-authentication, re-
authorization, termination and abortion of sessions to a group of
sessions. This document does not define a new Diameter application.
Instead it defines mechanisms, commands and AVPs that may be used by
any Diameter application that requires management of groups of
sessions.
These mechanisms take the following design goals and features into
account:
o Minimal impact to existing applications
o Extension of existing commands' CCF with optional AVPs to enable
grouping and group operations
o Fallback to single session operation
o Implicit discovery of capability to support grouping and group
operations
Jones, et al. Expires January 16, 2014 [Page 3]
Internet-Draft Diameter Group Signaling July 2013
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
This document uses terminology defined [RFC3588].
Jones, et al. Expires January 16, 2014 [Page 4]
Internet-Draft Diameter Group Signaling July 2013
3. Grouping User Sessions
Either Diameter peer may assign a session to a group. Diameter AAA
applications typically assign client and server roles to the Diameter
peers.
3.1. Group assignment at session initiation
Assignment of a new session to a group is accomplished by the
Diameter server when requested by the Diameter client. Without being
explicitly requested by the client, the Diameter server can assign a
new session to a server-assigned group based on its own decision.
When a new session is to be assigned to a group by the Diameter
server, the server assigns a new session to at least one server-
assigned group. To complement server-assigned grouping, a Diameter
client can assign a session to a client-assigned group.
To assign a session to a group at session initiation, a Diameter
client sends a service specific request, e.g. NASREQ AAR [RFC4005],
containing one or more group identifiers. The Diameter client can
assign the session to a client-assigned group and identify the
associated group with an appended client-assigned group identifier.
The client can append multiple client-assigned group identifiers if
the client assigns the new session to more than one group. If the
Diameter client does not send a client-assigned group identifier, the
client may receive one or multiple server-assigned group identifiers
in the server's response, which identify the server-assigned groups
to which the new session has been assigned. The Diameter client can
explicitly request the Diameter server to perform grouping of the new
session.
Assuming the user has been successfully authenticated and/or
authorized, the Diameter server responds with service-specific auth
response, e.g. NASREQ AAA [RFC4005], containing both the client-
assigned group identifiers (if sent with the request) and one or more
server-assigned group identifiers.
Both peers, the Diameter client and the Diameter server, must keep a
list of all group identifiers which identify all client- and server-
assigned groups to which the session has been assigned.
3.2. Mid-session group assignment modifications
Either Diameter peer may modify the group membership of an active
Diameter session. A Diameter client MAY remove the group(s) assigned
to the active session by the Diameter server and vice versa.
This document does not define a permission model that limits removal
Jones, et al. Expires January 16, 2014 [Page 5]
Internet-Draft Diameter Group Signaling July 2013
of a session from a group by the same peer that added the session to
the group. However, applications which re-use the commands and
methods defined in this document may impose their own permission
model. For example, an application could require that the server
MUST NOT remove a session from a group assigned by the client.
3.2.1. Client-initiated group assignment changes
To update the assigned groups mid-session, a Diameter client sends a
service specific re-authorization request containing the updated list
of group identifiers. Assuming the user is successfully
authenticated and/or authorized, the Diameter server responds with a
service-specific auth response containing the updated list of group
identifiers received in the request.
3.2.2. Server-initiated group assignment changes
To update the assigned groups mid-session, a Diameter server sends a
Re-authorization Request (RAR) message requesting re-authorization
and the client responds with a Re-authorization Answer (RAA) message.
The Diameter client sends a service specific re-authorization request
containing the current list of group identifiers and the Diameter
server responds with a service-specific auth response containing the
updated list of group identifiers.
Jones, et al. Expires January 16, 2014 [Page 6]
Internet-Draft Diameter Group Signaling July 2013
4. Protocol Description
4.1. Session Grouping and implicit Capability Discovery
Either Diameter peer, a Diameter client or server, can initiate
assigning a session to a single or multiple session groups according
to the procedure described in Section 3. Modification of a group by
removing or adding a single or multiple user sessions can be
initiated and performed at runtime by either Diameter peer.
A Diameter client as sender of a command for session initiation can
determine one or multiple groups to which the new session should be
assigned. Each of these groups need to be identified in a separate
Session-Group-Id AVP as specified in Section 6. In each appended
Session-Group-Id AVP which carries a client-assigned group
identifier, a flag must indicate that the carried group identifier is
not a server-assigned but a client-assigned one. If the Diameter
client does not determine the group to which the new session should
be assigned, the client can set a flag in an appended
Session-Group-Id AVP to explicitly request the Diameter server as
recipient of the message to assign the new session to one or multiple
groups.
By appending at least one Session-Group-Id AVP, the Diameter client
announces its capability to support group operations according to the
specification in this document to the addressed Diameter server. If
the Diameter client supports group operations, it MUST append at
least one Session-Group-Id AVP to announce its capability to support
group operations.
A Diameter server receiving a command for session initiation which
includes at least one Session-Group-Id AVP learns about the sender's
capability to support group operations. If a flag in the appended
Session-Group-Id AVPs identifies a client-assigned group, the server
must store the one or multiple identifiers and associate the new
session with these groups.
If a flag in a received Session-Group-Id AVP indicates that the
Diameter client explicitly requests the Diameter server to assign the
new session to a server-assigned group, the Diameter server should
assign the new session to one or multiple groups. The Diameter
server identifies each of these server-assigned groups in a Session-
Group-Id AVP, which are appended to the response to the received
command. Each of these Session-Group-Id AVPs must indicate in a flag
that the carried identifier is a server-assigned group identifier.
If a flag in a received Session-Group-Id AVP indicates that the
Diameter client does not explicitly request the Diameter server to
Jones, et al. Expires January 16, 2014 [Page 7]
Internet-Draft Diameter Group Signaling July 2013
assign the new session to a server-assigned group, the Diameter
server may assign the new session to one or multiple groups. The
Diameter server identifies each of these server-assigned groups in a
Session-Group-Id AVP, which are appended to the response to the
received command. Each of these Session-Group-Id AVPs must indicate
in a flag that the carried identifier is a server-assigned group
identifier.
By appending at least one Session-Group-Id AVP, the Diameter server
announces its capability to support group operations according to the
specification in this document to the addressed Diameter client.
A Diameter server receiving a command for session initiation which
includes at least one Session-Group-Id AVP but the server does not
understand the semantics of this optional AVP because it does not
support group operations according to the specification in this
document, MUST ignore the optional group operations specific AVPs and
proceed with processing the command for a single session.
A Diameter client, which sent a request for session initiation to a
Diameter server and appended a single or multiple Session-Group-Id
AVPs but cannot find any Session-Group-Id AVP in the associated
response from the Diameter server proceeds with processing the
command for a single session. Furthermore, the client keeps a log to
remember that the server is not able to perform group operations.
4.2. Performing Group Operations
4.2.1. Sending Group Commands
Either Diameter peer can request the recipient of a request to
process an associated command for all sessions being 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-Group-Id AVP and indicates in a flag whether the
identifier represents a server- or a client-assigned group. If the
CCF of the request mandates a Session-Id AVP, the Session-Id AVP MUST
identify a single session which is assigned to at least one of the
groups being identified in the appended Session-Group-Id AVPs. If
the sender wants the receiver of the request to process the
associated command solely for a single session does not append any
group identifier, but identifies the relevant session in the
Session-Id AVP.
4.2.2. Receiving Group Commands
A Diameter peer receiving a request to process a command for a group
of sessions identifies the relevant groups according to the appended
Jones, et al. Expires January 16, 2014 [Page 8]
Internet-Draft Diameter Group Signaling July 2013
Session-Group-Id AVP. If the received request identifies multiple
groups in multiple appended Session-Group-Id AVPs, the receiver
should process the associated command for each of these groups. if a
session has been assigned to more than one of the identified groups,
the receiver must process the associated command only once per
session.
4.2.3. Single-Session Fallback
Either Diameter peer, a Diameter client or a Diameter server, can
fall back to single session operation by ignoring and omitting the
optional and group session-specific AVPs. Fallback to single-session
operation is performed by processing the Diameter command solely for
the session identified in the mandatory Session-Id AVP. The response
to the group command must not identify any group but identify solely
the single session for which the command has been processed.
4.3. Session Management
Editor's note: This first document revision adopts the WG's current
view on how Diameter commands can be formatted to enable group
signaling. The required change in the formatting and protocol
operation has not yet been considered in this Section 4.3 , which
still reflects the formatting as per version 0 of this specification.
The described session state machines still need revision to reflect
the generalized formatting and the adopted protocol operation.
4.3.1. Authorization Session State Machine
Section 8.1 in [RFC3588] defines a set of finite state machines,
representing the life cycle of Diameter sessions, and 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 the additional state transitions
related to the processing of the new commands which may impact
multiple sessions.
The group membership is session state and therefore only those state
machines from [RFC3588] in which the server is maintaining session
state are relevant in this document. As in [RFC3588], the term
Service-Specific below refers to a message defined in a Diameter
application (e.g., Mobile IPv4, NASREQ).
The following state machine is observed by a client when state is
maintained on the server. State transitions which are unmodified
from [RFC3588] are not repeated here.
Jones, et al. Expires January 16, 2014 [Page 9]
Internet-Draft Diameter Group Signaling July 2013
CLIENT, STATEFUL
State Event Action New State
---------------------------------------------------------------
Idle Client or Device Requests Send Pending
access service
specific
auth req
optionally
including
groups
Open GASR received with Send GASA Discon
Session-Group-Action with
= ALL_GROUPS, Result-Code
session is assigned to = SUCCESS,
received group(s) and Send GSTR.
client will comply with
request to end the session
Open GASR received with Send GASA Discon
Session-Group-Action with
= PER_GROUPS, Result-Code
session is assigned to = SUCCESS,
received group(s) and Send GSTR
client will comply with per group
request to end the session
Open GASR received with Send GASA Discon
Session-Group-Action with
= PER_SESSION, Result-Code
session is assigned to = SUCCESS,
received group(s) and Send STR
client will comply with per session
request to end the session
Open GASR received, Send GASA Open
client will not comply with with
request to end all session Result-Code
in received group(s) != SUCCESS
Discon GSTA Received Discon. Idle
user/device
Open GRAR received with Send GRAA, Pending
Session-Group-Action Send
= ALL_GROUPS, service
session is assigned to specific
received group(s) and group
Jones, et al. Expires January 16, 2014 [Page 10]
Internet-Draft Diameter Group Signaling July 2013
client will perform re-auth req
subsequent re-auth
Open GRAR received with Send GRAA, Pending
Session-Group-Action Send
= PER_GROUP, service
session is assigned to specific
received group(s) and group
client will perform re-auth req
subsequent re-auth per group
Open GRAR received with Send GRAA, Pending
Session-Group-Action Send
= PER_SESSION, service
session is assigned to specific
received group(s) and re-auth req
client will perform per session
subsequent re-auth
Open GRAR received and client will Send GRAA Idle
not perform subsequent with
re-auth Result-Code
!= SUCCESS,
Discon.
user/device
Pending Successful service-specific Provide Open
group re-authorization answer service
received.
Pending Failed service-specific Discon. Idle
group re-authorization answer user/device
received.
The following state machine is observed by a server when it is
maintaining state for the session. State transitions which are
unmodified from [RFC3588] are not repeated here.
Jones, et al. Expires January 16, 2014 [Page 11]
Internet-Draft Diameter Group Signaling July 2013
SERVER, STATEFUL
State Event Action New State
---------------------------------------------------------------
Idle Service-specific authorization Send Open
request received, and user successful
is authorized service
specific
answer
optionally
including
groups
Open Server wants to terminate Send GASR Discon
group(s)
Discon GASA received Cleanup Idle
Any GSTR received Send GSTA, Idle
Cleanup
Open Server wants to reauth Send GRAR Pending
group(s)
Pending GRAA received with Result-Code Update Open
= SUCCESS session(s)
Pending GRAA received with Result-Code Cleanup Idle
!= SUCCESS session(s)
Open Service-specific group Send Open
re-authoization request successful
received and user is service
authorized specific
group
re-auth
answer
Open Service-specific group Send Idle
re-authorization request failed
received and user is service
not authorized specific
group
re-auth
answer,
cleanup
Jones, et al. Expires January 16, 2014 [Page 12]
Internet-Draft Diameter Group Signaling July 2013
5. Commands Formatting
This document does not specify new Diameter commands to enable group
operations, but relies on command extensibility 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 perform the command to all
sessions associated with the identified group(s).
5.1. Group Re-Auth-Request
A request that one or more groups of users are re-authentication is
issues by appending one or multiple Session-Group-Id AVP(s) to the
Re-Auth-Request (RAR). The one or multiple Session-Group-Id AVP(s)
identify the associated group(s) for which the group re-
authentication has been requested. The recipient of the group
command initiates re-authentication for all users associated with the
identified group(s). Furthermore, the sender of the group re-
authentication request appends a Session-Group-Action AVP to provide
more information to the receiver of the command about how to
accomplish the group operation.
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-Group-Id AVPs.
<RAR> ::= < Diameter Header: 258, REQ, PXY >
< Session-Id >
{ Origin-Host }
{ Origin-Realm }
{ Destination-Realm }
{ Destination-Host }
{ Auth-Application-Id }
{ Re-Auth-Request-Type }
[ User-Name ]
[ Origin-State-Id ]
* [ Proxy-Info ]
* [ Route-Record ]
* [ Session-Group-Id ]
[ Session-Group-Action ]
* [ AVP ]
Jones, et al. Expires January 16, 2014 [Page 13]
Internet-Draft Diameter Group Signaling July 2013
6. Attribute-Value-Pairs (AVP)
+--------------------+
| AVP Flag rules |
+----+---+------+----+
AVP | | |SHOULD|MUST|
Attribute Name Code Value Type |MUST|MAY| NOT | NOT|
+---------------------------------------+----+---+------+----+
|Session-Group-Id TBD OctetString | | P | | V |
|Session-Group-Action TBD Enumerated | | P | | V |
+---------------------------------------+----+---+------+----+
AVPs for the Diameter Group Signaling
6.1. Session-Group-Id AVP
The Session-Group-Id AVP (AVP Code TBD) is of type OctetString and
identifies a group of sessions. This uniqueness scope of this AVP is
specified by the Diameter application which makes use of group
signaling commands.
6.2. Session-Group-Action AVP
The Session-Group-Action AVP (AVP Code TBD) is of type Enumerated and
specifies how the peer SHOULD issue follow up exchanges in response
to a command which impacts mulitple sessions. The following values
are supported:
ALL_GROUPS (0)
Follow up exchanges should be performed with a single message
exchange for all impacted groups.
PER_GROUP (1)
Follow up exchanges should be performed with a message exchange
for each impacted group.
PER_SESSION (2)
Follow up exchanges should be performed with a message exchange
for each impacted session.
Jones, et al. Expires January 16, 2014 [Page 14]
Internet-Draft Diameter Group Signaling July 2013
7. Result-Code AVP Values
This section defines new Result-Code [RFC3588] values that MUST be
supported by all Diameter implementations that conform to this
specification.
[Editor's Note: Group specific error values may need to be added
here.]
Jones, et al. Expires January 16, 2014 [Page 15]
Internet-Draft Diameter Group Signaling July 2013
8. 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.
8.1. AVP Codes
This specification requires IANA to register the following new AVPs
from the AVP Code namespace defined in [RFC3588].
o Session-Group-Id
o Session-Group-Action
The AVPs are defined in Section 6.
Jones, et al. Expires January 16, 2014 [Page 16]
Internet-Draft Diameter Group Signaling July 2013
9. Security Considerations
TODO
Jones, et al. Expires January 16, 2014 [Page 17]
Internet-Draft Diameter Group Signaling July 2013
10. Acknowledgments
Jones, et al. Expires January 16, 2014 [Page 18]
Internet-Draft Diameter Group Signaling July 2013
11. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J.
Arkko, "Diameter Base Protocol", RFC 3588, September 2003.
[RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton,
"Diameter Network Access Server Application", RFC 4005,
August 2005.
Jones, et al. Expires January 16, 2014 [Page 19]
Internet-Draft Diameter Group Signaling July 2013
Authors' Addresses
Mark Jones
Email: mark@azu.ca
Marco Liebsch
Email: marco.liebsch@neclab.eu
Lionel Morand
Email: lionel.morand@orange.com
Jones, et al. Expires January 16, 2014 [Page 20]