| < draft-ietf-dime-group-signaling-00.txt | draft-ietf-dime-group-signaling-01.txt > | |||
|---|---|---|---|---|
| Diameter Maintenance and Extensions M. Jones | Diameter Maintenance and M. Jones | |||
| (DIME) June 22, 2012 | Extensions (DIME) M. Liebsch | |||
| Internet-Draft | Internet-Draft L. Morand | |||
| Intended status: Standards Track | Intended status: Standards Track July 15, 2013 | |||
| Expires: December 24, 2012 | Expires: January 16, 2014 | |||
| Diameter Group Signaling | Diameter Group Signaling | |||
| draft-ietf-dime-group-signaling-00.txt | draft-ietf-dime-group-signaling-01.txt | |||
| Abstract | Abstract | |||
| In large network deployments, a single Diameter peer can support over | In large network deployments, a single Diameter peer can support over | |||
| a million concurrent Diameter sessions. Recent use cases have | a million concurrent Diameter sessions. Recent use cases have | |||
| revealed the need for Diameter peers to apply the same operation to a | revealed the need for Diameter peers to apply the same operation to a | |||
| large group of Diameter sessions concurrently. The Diameter base | large group of Diameter sessions concurrently. The Diameter base | |||
| protocol commands operate on a single session so these use cases | protocol commands operate on a single session so these use cases | |||
| could result in many thousands of command exchanges to enforce the | could result in many thousands of command exchanges to enforce the | |||
| same operation on each session in the group. In order to reduce | same operation on each session in the group. In order to reduce | |||
| skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 41 ¶ | |||
| 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 December 24, 2012. | This Internet-Draft will expire on January 16, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2012 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Grouping User Sessions . . . . . . . . . . . . . . . . . . . . 5 | 3. Grouping User Sessions . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Group assignment at session initiation . . . . . . . . . . 5 | 3.1. Group assignment at session initiation . . . . . . . . . . 5 | |||
| 3.2. Mid-session group assignment modifications . . . . . . . . 5 | 3.2. Mid-session group assignment modifications . . . . . . . . 5 | |||
| 3.2.1. Client-initiated group assignment changes . . . . . . 5 | 3.2.1. Client-initiated group assignment changes . . . . . . 6 | |||
| 3.2.2. Server-initiated group assignment changes . . . . . . 5 | 3.2.2. Server-initiated group assignment changes . . . . . . 6 | |||
| 3.3. Server Initiated Group Re-auth . . . . . . . . . . . . . . 6 | 4. Protocol Description . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.4. Session Group Termination . . . . . . . . . . . . . . . . 7 | 4.1. Session Grouping and implicit Capability Discovery . . . . 7 | |||
| 3.5. Aborting a Group of Sessions . . . . . . . . . . . . . . . 8 | 4.2. Performing Group Operations . . . . . . . . . . . . . . . 8 | |||
| 4. Protocol Description . . . . . . . . . . . . . . . . . . . . . 10 | 4.2.1. Sending Group Commands . . . . . . . . . . . . . . . . 8 | |||
| 4.1. Session Management . . . . . . . . . . . . . . . . . . . . 10 | 4.2.2. Receiving Group Commands . . . . . . . . . . . . . . . 8 | |||
| 4.1.1. Authorization Session State Machine . . . . . . . . . 10 | 4.2.3. Single-Session Fallback . . . . . . . . . . . . . . . 9 | |||
| 4.2. Commands . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4.3. Session Management . . . . . . . . . . . . . . . . . . . . 9 | |||
| 4.2.1. Group-Re-Auth-Request . . . . . . . . . . . . . . . . 14 | 4.3.1. Authorization Session State Machine . . . . . . . . . 9 | |||
| 4.2.2. Group-Re-Auth-Answer . . . . . . . . . . . . . . . . . 14 | 5. Commands Formatting . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4.2.3. Group-Session-Termination-Request . . . . . . . . . . 15 | 5.1. Group Re-Auth-Request . . . . . . . . . . . . . . . . . . 13 | |||
| 4.2.4. Group-Session-Termination-Answer . . . . . . . . . . . 15 | 6. Attribute-Value-Pairs (AVP) . . . . . . . . . . . . . . . . . 14 | |||
| 4.2.5. Group-Abort-Session-Request . . . . . . . . . . . . . 16 | 6.1. Session-Group-Id AVP . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.2.6. Group-Abort-Session-Answer . . . . . . . . . . . . . . 16 | 6.2. Session-Group-Action AVP . . . . . . . . . . . . . . . . . 14 | |||
| 5. AVPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 7. Result-Code AVP Values . . . . . . . . . . . . . . . . . . . . 15 | |||
| 5.1. Session-Group-Id AVP . . . . . . . . . . . . . . . . . . . 18 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5.2. Session-Group-Action AVP . . . . . . . . . . . . . . . . . 18 | 8.1. AVP Codes . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6. Result-Code AVP Values . . . . . . . . . . . . . . . . . . . . 19 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 7.1. Command Codes . . . . . . . . . . . . . . . . . . . . . . 20 | 11. Normative References . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 7.2. AVP Codes . . . . . . . . . . . . . . . . . . . . . . . . 20 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | ||||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
| 10. Normative References . . . . . . . . . . . . . . . . . . . . . 23 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
| 1. Introduction | 1. Introduction | |||
| In large network deployments, a single Diameter peer can support over | In large network deployments, a single Diameter peer can support over | |||
| a million concurrent Diameter sessions. Recent use cases have | a million concurrent Diameter sessions. Recent use cases have | |||
| revealed the need for Diameter peers to apply the same operation to a | revealed the need for Diameter peers to apply the same operation to a | |||
| large group of Diameter sessions concurrently. For example, a policy | large group of Diameter sessions concurrently. For example, a policy | |||
| decision point may need to modify the authorized quality of service | decision point may need to modify the authorized quality of service | |||
| for all active users having the same type of subscription. The | for all active users having the same type of subscription. The | |||
| Diameter base protocol commands operate on a single session so these | Diameter base protocol commands operate on a single session so these | |||
| use cases could result in many thousands of command exchanges to | use cases could result in many thousands of command exchanges to | |||
| enforce the same operation on each session in the group. In order 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 | reduce signaling, it would be desirable to enable bulk operations on | |||
| all (or part of) the sessions managed by a Diameter peer using a | all (or part of) the sessions managed by a Diameter peer using a | |||
| single or a few command exchanges. | single or a few command exchanges. | |||
| This document describes a mechanism for grouping Diameter sessions | This document describes mechanisms for grouping Diameter sessions and | |||
| and performing re-authentication, re-authorization, termination and | applying Diameter commands, such as performing re-authentication, re- | |||
| abortion of groups of sessions. This document does not define a new | authorization, termination and abortion of sessions to a group of | |||
| Diameter application. Instead it defines mechanisms, commands and | sessions. This document does not define a new Diameter application. | |||
| AVPs that may be used by any Diameter application that requires | Instead it defines mechanisms, commands and AVPs that may be used by | |||
| management of groups of sessions. | 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 | ||||
| 2. Terminology | 2. Terminology | |||
| 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]. | |||
| This document uses terminology defined [RFC3588]. | This document uses terminology defined [RFC3588]. | |||
| 3. Grouping User Sessions | 3. Grouping User Sessions | |||
| Either Diameter peer may assign a session to a group. Diameter AAA | Either Diameter peer may assign a session to a group. Diameter AAA | |||
| applications typically assign client and server roles to the Diameter | applications typically assign client and server roles to the Diameter | |||
| peers. In this document, a Diameter client is a node at the edge of | peers. | |||
| the network that performs access control. A Diameter server is a | ||||
| node that performs authentication and/or authorization of the user. | ||||
| 3.1. Group assignment at session initiation | 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 | To assign a session to a group at session initiation, a Diameter | |||
| client sends a service specific auth request, e.g. NASREQ AAR | client sends a service specific request, e.g. NASREQ AAR [RFC4005], | |||
| [RFC4005], containing zero or more client-assigned group identifiers. | containing one or more group identifiers. The Diameter client can | |||
| Assuming the user is successfully authenticated and/or authorized, | assign the session to a client-assigned group and identify the | |||
| the Diameter server responds with service-specific auth response, | associated group with an appended client-assigned group identifier. | |||
| e.g. NASREQ AAA [RFC4005], containing both the client-assigned group | The client can append multiple client-assigned group identifiers if | |||
| identifiers and zero or more server-assigned group identifiers. | 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 | 3.2. Mid-session group assignment modifications | |||
| Either Diameter peer may modify the group membership of an active | Either Diameter peer may modify the group membership of an active | |||
| Diameter session. A Diameter client MAY remove the group(s) assigned | Diameter session. A Diameter client MAY remove the group(s) assigned | |||
| to the active session by the Diameter server and vice versa. | to the active session by the Diameter server and vice versa. | |||
| This document does not define a permission model that limits removal | This document does not define a permission model that limits removal | |||
| of a session from a group by the same peer that added the session to | 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 | the group. However, applications which re-use the commands and | |||
| skipping to change at page 6, line 6 ¶ | skipping to change at page 7, line 5 ¶ | |||
| 3.2.2. Server-initiated group assignment changes | 3.2.2. Server-initiated group assignment changes | |||
| To update the assigned groups mid-session, a Diameter server sends a | To update the assigned groups mid-session, a Diameter server sends a | |||
| Re-authorization Request (RAR) message requesting re-authorization | Re-authorization Request (RAR) message requesting re-authorization | |||
| and the client responds with a Re-authorization Answer (RAA) message. | and the client responds with a Re-authorization Answer (RAA) message. | |||
| The Diameter client sends a service specific re-authorization request | The Diameter client sends a service specific re-authorization request | |||
| containing the current list of group identifiers and the Diameter | containing the current list of group identifiers and the Diameter | |||
| server responds with a service-specific auth response containing the | server responds with a service-specific auth response containing the | |||
| updated list of group identifiers. | updated list of group identifiers. | |||
| 3.3. Server Initiated Group Re-auth | 4. Protocol Description | |||
| This document defines a new Group-Re-Auth-Request/Answer (GRAR/ | ||||
| GRAA)command exchange which allows a server to initiate a re- | ||||
| authentication and/or re-authorization of all services that are | ||||
| assigned to one of the groups specified in the Session-Group-Id AVP | ||||
| in the request. | ||||
| An access device that receives a Group-Re-Auth-Request(GRAR) message | ||||
| with Session-Group-Id equal to one of the group assigned to a | ||||
| currently active session MUST initiate the type of re-auth specified | ||||
| by the Re-Auth-Request-Type AVP in the manner specified by the | ||||
| Session-Group-Action AVP if the service supports this particular | ||||
| feature. Each Diameter application MUST state whether service- | ||||
| initiated group re-authentication and/or re-authorization is | ||||
| supported and which Session-Group-Action AVP values are supported for | ||||
| re-authorization. | ||||
| The Session-Group-Action AVP specifies whether the server requires a | ||||
| re-authorization request per session, per group or for all groups. | ||||
| For a Re-Auth-Request-Type value of AUTHORIZE_AUTHENTICATE, the | ||||
| Session-Group-Action value MUST be PER_SESSION since re- | ||||
| authentication MUST be performed per user session. | ||||
| For Session-Group-Action values of PER_GROUP or ALL_GROUPS, the re- | 4.1. Session Grouping and implicit Capability Discovery | |||
| authorization is accomplished with an application-specifc group re- | ||||
| authorization command exchange. This command exchange as well as any | ||||
| limitations on which aspects of the service can be modified during a | ||||
| re-authorization MUST be defined by the Diameter application. | ||||
| If the client is able to perform the requested re-authentication | Either Diameter peer, a Diameter client or server, can initiate | |||
| and/or re-authentication for the sessions assigned to the group(s) | assigning a session to a single or multiple session groups according | |||
| specified in the GRAR, it shall return a GRAA command with the | to the procedure described in Section 3. Modification of a group by | |||
| Result-Code AVP set to DIAMETER_SUCCESS and Session-Group-Id AVP(s) | removing or adding a single or multiple user sessions can be | |||
| indicating the groups for which the GRAR receiver has active sessions | initiated and performed at runtime by either Diameter peer. | |||
| assigned. If there are no sessions assigned to the group(s) | ||||
| specified in the GRAR, the Result-Code is set to | ||||
| DIAMETER_UNKNOWN_SESSION_ID. If the client is unable to perform the | ||||
| requested re-authentication and/or re-authentication, the Result-Code | ||||
| is set to DIAMETER_UNABLE_TO_COMPLY. | ||||
| Diameter Diameter | A Diameter client as sender of a command for session initiation can | |||
| Client Server | determine one or multiple groups to which the new session should be | |||
| | | | assigned. Each of these groups need to be identified in a separate | |||
| (1)+-------------Svc-Specific-Auth-Request--------------->| | Session-Group-Id AVP as specified in Section 6. In each appended | |||
| | Session-Id=ABC | | Session-Group-Id AVP which carries a client-assigned group | |||
| | | | identifier, a flag must indicate that the carried group identifier is | |||
| (2)|<------------Svc-Specific-Auth-Answer-----------------+ | not a server-assigned but a client-assigned one. If the Diameter | |||
| | Session-Id=ABC; Session-Group-Id=XYZ | | client does not determine the group to which the new session should | |||
| | | | be assigned, the client can set a flag in an appended | |||
| (3)+-------------Svc-Specific-Auth-Request--------------->| | Session-Group-Id AVP to explicitly request the Diameter server as | |||
| | Session-Id=DEF | | recipient of the message to assign the new session to one or multiple | |||
| | | | groups. | |||
| (4)|<------------Svc-Specific-Auth-Answer-----------------+ | ||||
| | Session-Id=DEF; Session-Group-Id=XYZ | | ||||
| | | | ||||
| (5)|<--------------Group-Re-Auth-Request------------------+ | ||||
| | Session-Group-Id=XYZ; Session-Group-Action=PER_GROUP | | ||||
| | Re-Auth_Request-Type=AUTHORIZE_ONLY | | ||||
| | | | ||||
| (6)+---------------Group-Re-Auth-Answer------------------>| | ||||
| | | | ||||
| (7)+----------Svc-Specific-Group-Auth-Request------------>| | ||||
| | Session-Group-Id=XYZ | | ||||
| | | | ||||
| (8)|<---------Svc-Specific-Group-Auth-Answer--------------+ | ||||
| | Updated Service Specific AVPs | | ||||
| | | | ||||
| Figure 1: Example: Group Re-authorization | 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. | ||||
| In the example above, the Diameter server authorizes two sessions | A Diameter server receiving a command for session initiation which | |||
| (ABC and DEF) and assigns them to a group named XYZ (Session-Group- | includes at least one Session-Group-Id AVP learns about the sender's | |||
| Id=XYZ in steps 2 and 4). Some time later, an event occurs on the | capability to support group operations. If a flag in the appended | |||
| Diameter server which requires it to change one or more of the | Session-Group-Id AVPs identifies a client-assigned group, the server | |||
| service parameters for the sessions assigned to group XYZ. The | must store the one or multiple identifiers and associate the new | |||
| Diameter server sends a Group-Re-Auth-Request (step 5) specifying the | session with these groups. | |||
| impacted group (Session-Group-Id=XYZ) must be re-authorized (Re-Auth- | ||||
| Request-Type=AUTHORIZE_ONLY) with a single re-authorize command per | ||||
| group (Session-Group-Action=PER_GROUP). The Diameter client | ||||
| acknowledges the request (step 6) and issues a service-specific group | ||||
| authorization request to retrieve the updated service parameters | ||||
| (step 7). | ||||
| 3.4. Session Group Termination | 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. | ||||
| This document defines a new Group-Session-Termination-Request/Answer | If a flag in a received Session-Group-Id AVP indicates that the | |||
| (GSTR/GSTA) command exchange which allows a client to communicate to | Diameter client does not explicitly request the Diameter server to | |||
| the server the termination of all sessions that are assigned to one | assign the new session to a server-assigned group, the Diameter | |||
| of the groups specified in the Session-Group-Id AVP in the request. | server may assign the new session to one or multiple groups. The | |||
| The termination of a group of sessions could occur as a result of a | Diameter server identifies each of these server-assigned groups in a | |||
| local action or in reponse to a request to abort one or more groups | Session-Group-Id AVP, which are appended to the response to the | |||
| of sessions. | received command. Each of these Session-Group-Id AVPs must indicate | |||
| in a flag that the carried identifier is a server-assigned group | ||||
| identifier. | ||||
| FFS: When a client sends an GSTR to a server indicating termination | By appending at least one Session-Group-Id AVP, the Diameter server | |||
| of a specific group, is it indicating termination of the sessions | announces its capability to support group operations according to the | |||
| that the server authorized and that are assigned to the specified | specification in this document to the addressed Diameter client. | |||
| group? Or does imply termination of all sessions on the client that | ||||
| are assigned to the specified group? | ||||
| Upon receipt of the GSTR, the Diameter Server MUST release all | A Diameter server receiving a command for session initiation which | |||
| resources for the sessions assigned to the group(s) specified in the | includes at least one Session-Group-Id AVP but the server does not | |||
| Session-Group-Id AVP and return a GSTA with the Result-Code set to | understand the semantics of this optional AVP because it does not | |||
| DIAMETER_SUCCESS to acknowledge the successful termination. If there | support group operations according to the specification in this | |||
| are no sessions assigned to the group(s) specified in the GSTR, the | document, MUST ignore the optional group operations specific AVPs and | |||
| Result-Code is set to DIAMETER_UNKNOWN_SESSION_ID. If the server is | proceed with processing the command for a single session. | |||
| unable to perform the session termination, the Result-Code is set to | ||||
| DIAMETER_UNABLE_TO_COMPLY. | ||||
| 3.5. Aborting a Group of Sessions | 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. | ||||
| This document defines a new Group-Abort-Session-Request/Answer (GASR/ | 4.2. Performing Group Operations | |||
| GASA)command exchange which allows a server to request the | ||||
| termination of all sessions that are assigned to one of the groups | ||||
| specified in the Session-Group-Id AVP in the request. | ||||
| A client that receives an GASR with Session-Group-Id equal to a group | 4.2.1. Sending Group Commands | |||
| assigned to a currently active session MAY stop the session. Whether | ||||
| the client stops the session or not is implementation- and/or | ||||
| configuration-dependent. For example, a client may honor GASRs from | ||||
| certain agents only. In any case, the client MUST respond with an | ||||
| Group-Abort-Session-Answer, including a Result-Code AVP to indicate | ||||
| what action it took. | ||||
| If the client is able to perform the requested termination of the | Either Diameter peer can request the recipient of a request to | |||
| sessions assigned to the group(s) specified in the GASR, it shall | process an associated command for all sessions being assigned to one | |||
| return a GASA command with the Result-Code AVP set to | or multiple groups by identifying these groups in the request. The | |||
| DIAMETER_SUCCESS and Session-Group-Id AVP(s) indicating the groups | sender of the request appends for each group, to which the command | |||
| for which the GASR receiver has active sessions assigned. If there | applies, a Session-Group-Id AVP and indicates in a flag whether the | |||
| are no sessions assigned to the group(s) specified in the GASR, the | identifier represents a server- or a client-assigned group. If the | |||
| Result-Code is set to DIAMETER_UNKNOWN_SESSION_ID. If the client is | CCF of the request mandates a Session-Id AVP, the Session-Id AVP MUST | |||
| unable to perform the requested termination for any of the sessions, | identify a single session which is assigned to at least one of the | |||
| the Result-Code is set to DIAMETER_UNABLE_TO_COMPLY. | 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. | ||||
| When a client terminates a session upon receipt of a Group-Abort- | 4.2.2. Receiving Group Commands | |||
| Session-Request, it MUST issue a session termination request to the | ||||
| Diameter server that authorized the service. The Session-Group- | ||||
| Action AVP specifies whether the server requires a single session | ||||
| termination request per session (with STR message), per group (with | ||||
| GSTR message) or for all groups (with GSTR message). | ||||
| Diameter Diameter | A Diameter peer receiving a request to process a command for a group | |||
| Client Server | of sessions identifies the relevant groups according to the appended | |||
| | | | Session-Group-Id AVP. If the received request identifies multiple | |||
| (1)+-------------Svc-Specific-Auth-Request--------------->| | groups in multiple appended Session-Group-Id AVPs, the receiver | |||
| | Session-Id=ABC | | should process the associated command for each of these groups. if a | |||
| | | | session has been assigned to more than one of the identified groups, | |||
| (2)|<------------Svc-Specific-Auth-Answer-----------------+ | the receiver must process the associated command only once per | |||
| | Session-Id=ABC; Session-Group-Id=XYZ | | session. | |||
| | | | ||||
| (3)+-------------Svc-Specific-Auth-Request--------------->| | ||||
| | Session-Id=DEF | | ||||
| | | | ||||
| (4)|<------------Svc-Specific-Auth-Answer-----------------+ | ||||
| | Session-Id=DEF; Session-Group-Id=XYZ | | ||||
| | | | ||||
| (5)|<-----------Group-Abort-Session-Request---------------+ | ||||
| | Session-Group-Id=XYZ; Session-Group-Action=PER_GROUP | | ||||
| | | | ||||
| (6)+------------Group-Abort-Session-Answer--------------->| | ||||
| | | | ||||
| (7)+---------Group-Session-Termination-Request----------->| | ||||
| | Session-Group-Id=XYZ | | ||||
| | | | ||||
| (8)|<---------Group-Session-Termination-Answer------------+ | ||||
| | | | ||||
| Figure 2: Example: Aborting a Group of Sessions | 4.2.3. Single-Session Fallback | |||
| In the example above, the Diameter server authorizes two sessions | Either Diameter peer, a Diameter client or a Diameter server, can | |||
| (ABC and DEF) and assigns them to a group named XYZ (Session-Group- | fall back to single session operation by ignoring and omitting the | |||
| Id=XYZ in steps 2 and 4). Some time later, an event occurs on the | optional and group session-specific AVPs. Fallback to single-session | |||
| Diameter server which requires it to abort the sessions assigned to | operation is performed by processing the Diameter command solely for | |||
| group XYZ. The Diameter server sends a Group-Abort-Session-Request | the session identified in the mandatory Session-Id AVP. The response | |||
| (step 5) specifying the sessions assigned to the impacted group | to the group command must not identify any group but identify solely | |||
| (Session-Group-Id=XYZ) are to be terminated and a single termination | the single session for which the command has been processed. | |||
| command is to be sent per impacted group (Session-Group- | ||||
| Action=PER_GROUP). The Diameter client acknowledges the request with | ||||
| a GASA (step 6) and issues a GSTR (step 7) command to release all | ||||
| resources for the sessions assigned to the group XYZ. The Diameter | ||||
| server acknowledges the termination with a GGSTA (Step 8). | ||||
| 4. Protocol Description | 4.3. Session Management | |||
| 4.1. 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.1.1. Authorization Session State Machine | 4.3.1. Authorization Session State Machine | |||
| Section 8.1 in [RFC3588] defines a set of finite state machines, | Section 8.1 in [RFC3588] defines a set of finite state machines, | |||
| representing the life cycle of Diameter sessions, and which MUST be | representing the life cycle of Diameter sessions, and which MUST be | |||
| observed by all Diameter implementations that make use of the | observed by all Diameter implementations that make use of the | |||
| authentication and/or authorization portion of a Diameter | authentication and/or authorization portion of a Diameter | |||
| application. This section defines the additional state transitions | application. This section defines the additional state transitions | |||
| related to the processing of the new commands which may impact | related to the processing of the new commands which may impact | |||
| multiple sessions. | multiple sessions. | |||
| The group membership is session state and therefore only those state | The group membership is session state and therefore only those state | |||
| skipping to change at page 14, line 5 ¶ | skipping to change at page 13, line 5 ¶ | |||
| Open Service-specific group Send Idle | Open Service-specific group Send Idle | |||
| re-authorization request failed | re-authorization request failed | |||
| received and user is service | received and user is service | |||
| not authorized specific | not authorized specific | |||
| group | group | |||
| re-auth | re-auth | |||
| answer, | answer, | |||
| cleanup | cleanup | |||
| 4.2. Commands | 5. Commands Formatting | |||
| Editor's Note: The content of this section does not represent working | ||||
| group consensus but rather the views of the draft author prior to | ||||
| (and post) adoption. Alternative methods for manipulating groups of | ||||
| sessions are being considered by the working group and this section | ||||
| may be heavily modified or removed in subsequent versions. | ||||
| This specification extends the existing RAR, RAA, STR, STA, ASR and | ||||
| ASA command ABNFs. | ||||
| 4.2.1. Group-Re-Auth-Request | ||||
| The Group-Re-Auth-Request (GRAR), indicated by the Command-Code set | ||||
| to TBD and the message flags' 'R' bit set, may be sent by any server | ||||
| to the access device that is providing session service, to request | ||||
| that one or more groups of users be re-authenticated and/or re- | ||||
| authorized. | ||||
| <GRAR> ::= < Diameter Header: TBD, REQ, PXY > | ||||
| * { Session-Group-Id } | ||||
| { Origin-Host } | ||||
| { Origin-Realm } | ||||
| { Destination-Realm } | ||||
| { Destination-Host } | ||||
| { Auth-Application-Id } | ||||
| { Re-Auth-Request-Type } | ||||
| [ Origin-State-Id ] | ||||
| * [ Proxy-Info ] | ||||
| * [ Route-Record ] | ||||
| [ Session-Group-Action ] | ||||
| * [ AVP ] | ||||
| 4.2.2. Group-Re-Auth-Answer | ||||
| The Group-Re-Auth-Answer (GRAA), indicated by the Command-Code set to | ||||
| TBD and the message flags' 'R' bit clear, is sent in response to the | ||||
| GRAR. The Result-Code AVP MUST be present, and indicates the | ||||
| disposition of the request. | ||||
| <GRAA> ::= < Diameter Header: TBD, PXY > | ||||
| * { Session-Group-Id } | ||||
| { Result-Code } | ||||
| { Origin-Host } | ||||
| { Origin-Realm } | ||||
| [ Origin-State-Id ] | ||||
| [ Error-Message ] | ||||
| [ Error-Reporting-Host ] | ||||
| * [ Failed-AVP ] | ||||
| * [ Redirect-Host ] | ||||
| [ Redirect-Host-Usage ] | ||||
| [ Redirect-Host-Cache-Time ] | ||||
| * [ Proxy-Info ] | ||||
| * [ AVP ] | ||||
| 4.2.3. Group-Session-Termination-Request | ||||
| The Group-Session-Termination-Request (GSTR), indicated by the | ||||
| Command-Code set to TBD and the Command Flags' 'R' bit set, is sent | ||||
| by the access device to inform the Diameter Server that one or more | ||||
| groups of authenticated and/or authorized sessions are being | ||||
| terminated. | ||||
| <GSTR> ::= < Diameter Header: TBD, REQ, PXY > | ||||
| * { Session-Group-Id } | ||||
| { Origin-Host } | ||||
| { Origin-Realm } | ||||
| { Destination-Realm } | ||||
| { Auth-Application-Id } | ||||
| { Termination-Cause } | ||||
| [ Destination-Host ] | ||||
| * [ Class ] | ||||
| [ Origin-State-Id ] | ||||
| * [ Proxy-Info ] | ||||
| * [ Route-Record ] | ||||
| * [ AVP ] | ||||
| 4.2.4. Group-Session-Termination-Answer | ||||
| The Group-Session-Termination-Answer (GSTA), indicated by the | ||||
| Command-Code set to TBD and the message flags' 'R' bit clear, is sent | ||||
| by the Diameter Server to acknowledge the notification that one or | ||||
| more groups of session have been terminated. The Result-Code AVP | ||||
| MUST be present, and MAY contain an indication that an error occurred | ||||
| while servicing the GSTR. | ||||
| <GSTA> ::= < Diameter Header: TBD, PXY > | ||||
| * { Session-Group-Id } | ||||
| { Result-Code } | ||||
| { Origin-Host } | ||||
| { Origin-Realm } | ||||
| * [ Class ] | ||||
| [ Error-Message ] | ||||
| [ Error-Reporting-Host ] | ||||
| * [ Failed-AVP ] | ||||
| [ Origin-State-Id ] | ||||
| * [ Redirect-Host ] | ||||
| [ Redirect-Host-Usage ] | ||||
| [ Redirect-Max-Cache-Time ] | ||||
| * [ Proxy-Info ] | ||||
| * [ AVP ] | ||||
| 4.2.5. Group-Abort-Session-Request | ||||
| The Group-Abort-Session-Request (GASR), indicated by the Command-Code | This document does not specify new Diameter commands to enable group | |||
| set to TBD and the message flags' 'R' bit set, may be sent by any | operations, but relies on command extensibility capability provided | |||
| server to the access device that is providing session service, to | by the Diameter Base protocol. This section provides the guidelines | |||
| request that the sessions identified by the Session-Group-Id be | to extend the CCF of existing Diameter commands with optional AVPs to | |||
| stopped. | enable the recipient of the command to perform the command to all | |||
| sessions associated with the identified group(s). | ||||
| <GASR> ::= < Diameter Header: TBD, REQ, PXY > | 5.1. Group Re-Auth-Request | |||
| * { Session-Group-Id } | ||||
| { Origin-Host } | ||||
| { Origin-Realm } | ||||
| { Destination-Realm } | ||||
| { Destination-Host } | ||||
| { Auth-Application-Id } | ||||
| [ Origin-State-Id ] | ||||
| * [ Proxy-Info ] | ||||
| * [ Route-Record ] | ||||
| [ Group-Action ] | ||||
| * [ AVP ] | ||||
| 4.2.6. Group-Abort-Session-Answer | 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 Group-Abort-Session-Answer (GASA), indicated by the Command-Code | The value of the mandatory Session-Id AVP MUST identify a session | |||
| set to TBD and the message flags' 'R' bit clear, is sent in response | associated with a single user, which is assigned to at least one of | |||
| to the GASR. The Result-Code AVP MUST be present, and indicates the | the groups being identified in the appended Session-Group-Id AVPs. | |||
| disposition of the request. | ||||
| <GASA> ::= < Diameter Header: TBD, PXY > | <RAR> ::= < Diameter Header: 258, REQ, PXY > | |||
| * { Session-Group-Id } | < Session-Id > | |||
| { Result-Code } | { Origin-Host } | |||
| { Origin-Host } | { Origin-Realm } | |||
| { Origin-Realm } | { Destination-Realm } | |||
| [ Origin-State-Id ] | { Destination-Host } | |||
| [ Error-Message ] | { Auth-Application-Id } | |||
| [ Error-Reporting-Host ] | { Re-Auth-Request-Type } | |||
| * [ Failed-AVP ] | [ User-Name ] | |||
| * [ Redirect-Host ] | [ Origin-State-Id ] | |||
| [ Redirect-Host-Usage ] | * [ Proxy-Info ] | |||
| [ Redirect-Max-Cache-Time ] | * [ Route-Record ] | |||
| * [ Proxy-Info ] | * [ Session-Group-Id ] | |||
| * [ AVP ] | [ Session-Group-Action ] | |||
| * [ AVP ] | ||||
| 5. AVPs | 6. Attribute-Value-Pairs (AVP) | |||
| +--------------------+ | +--------------------+ | |||
| | AVP Flag rules | | | AVP Flag rules | | |||
| +----+---+------+----+ | +----+---+------+----+ | |||
| AVP | | |SHOULD|MUST| | AVP | | |SHOULD|MUST| | |||
| Attribute Name Code Value Type |MUST|MAY| NOT | NOT| | Attribute Name Code Value Type |MUST|MAY| NOT | NOT| | |||
| +---------------------------------------+----+---+------+----+ | +---------------------------------------+----+---+------+----+ | |||
| |Session-Group-Id TBD OctetString | | P | | V | | |Session-Group-Id TBD OctetString | | P | | V | | |||
| |Session-Group-Action TBD Enumerated | | P | | V | | |Session-Group-Action TBD Enumerated | | P | | V | | |||
| +---------------------------------------+----+---+------+----+ | +---------------------------------------+----+---+------+----+ | |||
| AVPs for the Diameter Group Signaling | AVPs for the Diameter Group Signaling | |||
| 5.1. Session-Group-Id AVP | 6.1. Session-Group-Id AVP | |||
| The Session-Group-Id AVP (AVP Code TBD) is of type OctetString and | 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 | identifies a group of sessions. This uniqueness scope of this AVP is | |||
| specified by the Diameter application which makes use of group | specified by the Diameter application which makes use of group | |||
| signaling commands. | signaling commands. | |||
| 5.2. Session-Group-Action AVP | 6.2. Session-Group-Action AVP | |||
| The Session-Group-Action AVP (AVP Code TBD) is of type Enumerated and | The Session-Group-Action AVP (AVP Code TBD) is of type Enumerated and | |||
| specifies how the peer SHOULD issue follow up exchanges in response | specifies how the peer SHOULD issue follow up exchanges in response | |||
| to a command which impacts mulitple sessions. The following values | to a command which impacts mulitple sessions. The following values | |||
| are supported: | are supported: | |||
| ALL_GROUPS (0) | ALL_GROUPS (0) | |||
| Follow up exchanges should be performed with a single message | Follow up exchanges should be performed with a single message | |||
| exchange for all impacted groups. | exchange for all impacted groups. | |||
| PER_GROUP (1) | PER_GROUP (1) | |||
| Follow up exchanges should be performed with a message exchange | Follow up exchanges should be performed with a message exchange | |||
| for each impacted group. | for each impacted group. | |||
| PER_SESSION (2) | PER_SESSION (2) | |||
| Follow up exchanges should be performed with a message exchange | Follow up exchanges should be performed with a message exchange | |||
| for each impacted session. | for each impacted session. | |||
| 6. Result-Code AVP Values | 7. Result-Code AVP Values | |||
| This section defines new Result-Code [RFC3588] values that MUST be | This section defines new Result-Code [RFC3588] values that MUST be | |||
| supported by all Diameter implementations that conform to this | supported by all Diameter implementations that conform to this | |||
| specification. | specification. | |||
| [Editor's Note: Group specific error values may need to be added | [Editor's Note: Group specific error values may need to be added | |||
| here.] | here.] | |||
| 7. IANA Considerations | 8. IANA Considerations | |||
| This section contains the namespaces that have either been created in | This section contains the namespaces that have either been created in | |||
| this specification or had their values assigned to existing | this specification or had their values assigned to existing | |||
| namespaces managed by IANA. | namespaces managed by IANA. | |||
| 7.1. Command Codes | 8.1. AVP Codes | |||
| This specification requires IANA to register the following new | ||||
| Commands from the Command Code namespace defined in [RFC3588]. | ||||
| o Group-Re-Auth-Request/Answer | ||||
| o Group-Session-Termination-Request/Answer | ||||
| o Group-Abort-Session-Request/Answer | ||||
| The commands are defined in Section 4.2. | ||||
| 7.2. AVP Codes | ||||
| This specification requires IANA to register the following new AVPs | This specification requires IANA to register the following new AVPs | |||
| from the AVP Code namespace defined in [RFC3588]. | from the AVP Code namespace defined in [RFC3588]. | |||
| o Session-Group-Id | o Session-Group-Id | |||
| o Session-Group-Action | o Session-Group-Action | |||
| The AVPs are defined in Section 5. | The AVPs are defined in Section 6. | |||
| 8. Security Considerations | 9. Security Considerations | |||
| TODO | TODO | |||
| 9. Acknowledgments | 10. Acknowledgments | |||
| 10. Normative References | 11. Normative References | |||
| [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. | |||
| [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. | [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. | |||
| Arkko, "Diameter Base Protocol", RFC 3588, September 2003. | Arkko, "Diameter Base Protocol", RFC 3588, September 2003. | |||
| [RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton, | [RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton, | |||
| "Diameter Network Access Server Application", RFC 4005, | "Diameter Network Access Server Application", RFC 4005, | |||
| August 2005. | August 2005. | |||
| Author's Address | Authors' Addresses | |||
| Mark Jones | Mark Jones | |||
| Email: mark@azu.ca | Email: mark@azu.ca | |||
| Marco Liebsch | ||||
| Email: marco.liebsch@neclab.eu | ||||
| Lionel Morand | ||||
| Email: lionel.morand@orange.com | ||||
| End of changes. 47 change blocks. | ||||
| 379 lines changed or deleted | 233 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||