| rfc9390xml2.original.xml | rfc9390.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc [ | |||
| <!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY nbsp " "> | |||
| C.2119.xml"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY nbhy "‑"> | |||
| C.8174.xml"> | <!ENTITY wj "⁠"> | |||
| <!ENTITY RFC6733 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6733.xml"> | ||||
| <!ENTITY RFC7155 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7155.xml"> | ||||
| ]> | ]> | |||
| <rfc submissionType="IETF" docName="draft-ietf-dime-group-signaling-14" category | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
| ="std" ipr="trust200902"> | std" consensus="true" docName="draft-ietf-dime-group-signaling-14" number="9390" | |||
| <!-- Generated by id2xml 1.5.0 on 2022-11-23T02:01:22Z --> | ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs | |||
| <?rfc strict="yes"?> | ="true" tocInclude="true" version="3"> | |||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="no"?> | ||||
| <?rfc text-list-symbols="o*+-"?> | ||||
| <?rfc toc="yes"?> | ||||
| <front> | ||||
| <title>Diameter Group Signaling</title> | ||||
| <author initials="M." surname="Jones" fullname="Mark Jones"> | ||||
| <organization>Individual</organization> | ||||
| <address><email>mark@azu.ca</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="M." surname="Liebsch" fullname="Marco Liebsch"> | ||||
| <organization abbrev="NEC">NEC Laboratories Europe GmbH</organization> | ||||
| <address><postal><street>Kurfuersten-Anlage 36</street> | ||||
| <city>Heidelberg</city> | ||||
| <code>D-69115</code> | ||||
| <country>Germany</country> | ||||
| </postal> | ||||
| <email>marco.liebsch@neclab.eu</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="L." surname="Morand" fullname="Lionel Morand"> | ||||
| <organization abbrev="Orange">Orange Labs</organization> | ||||
| <address><postal><street>38/40 rue du General Leclerc</street> | ||||
| <city>Issy-Les-Moulineaux Cedex 9</city> | ||||
| <code>92794</code> | ||||
| <country>France</country> | ||||
| </postal> | ||||
| <email>lionel.morand@orange.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2022" month="November"/> | ||||
| <area>ops</area> | ||||
| <workgroup>dime</workgroup> | ||||
| <!-- [rfced] Please insert any keywords (beyond those that appear in the title) | ||||
| for use on https://www.rfc-editor.org/search. --> | ||||
| <keyword>example</keyword> | ||||
| <abstract><t> | <!-- xml2rfc v2v3 conversion 3.15.2 --> | |||
| <!-- Generated by id2xml 1.5.0 on 2022-11-23T02:01:22Z --> | ||||
| <front> | ||||
| <title>Diameter Group Signaling</title> | ||||
| <seriesInfo name="RFC" value="9390"/> | ||||
| <author initials="M." surname="Jones" fullname="Mark Jones"> | ||||
| <organization>Individual</organization> | ||||
| <address> | ||||
| <email>mark@azu.ca</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="M." surname="Liebsch" fullname="Marco Liebsch"> | ||||
| <organization abbrev="NEC">NEC Laboratories Europe GmbH</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Kurfuersten-Anlage 36</street> | ||||
| <city>Heidelberg</city> | ||||
| <code>D-69115</code> | ||||
| <country>Germany</country> | ||||
| </postal> | ||||
| <email>marco.liebsch@neclab.eu</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="L." surname="Morand" fullname="Lionel Morand"> | ||||
| <organization abbrev="Orange">Orange Labs</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>38/40 rue du General Leclerc</street> | ||||
| <city>Issy-Les-Moulineaux Cedex 9</city> | ||||
| <code>92794</code> | ||||
| <country>France</country> | ||||
| </postal> | ||||
| <email>lionel.morand@orange.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2023" month="April"/> | ||||
| <area>ops</area> | ||||
| <workgroup>dime</workgroup> | ||||
| <abstract> | ||||
| <t> | ||||
| In large network deployments, a single Diameter node can support over | In large network deployments, a single Diameter node can support over | |||
| a million concurrent Diameter sessions. In some use cases, Diameter | a million concurrent Diameter sessions. In some use cases, Diameter | |||
| nodes need to apply the same operation to a large group of Diameter | nodes need to apply the same operation to a large group of Diameter | |||
| sessions concurrently. The Diameter base protocol commands operate | sessions concurrently. The Diameter base protocol commands operate | |||
| on a single session so these use cases could result in many thousands | on a single session so these use cases can result in many thousands | |||
| of command exchanges to enforce the same operation on each session in | of command exchanges enforcing the same operation on each session in | |||
| the group. In order to reduce signaling, it would be desirable to | the group. In order to reduce signaling, it is desirable to | |||
| enable bulk operations on all (or part of) the sessions managed by a | enable bulk operations on all (or part of) the sessions managed by a | |||
| Diameter node using a single or a few command exchanges. This | Diameter node using a single or a few command exchanges. This | |||
| document specifies the Diameter protocol extensions to achieve this | document specifies the Diameter protocol extensions to achieve this | |||
| signaling optimization.</t> | signaling optimization.</t> | |||
| </abstract> | ||||
| </abstract> | </front> | |||
| </front> | <middle> | |||
| <section anchor="sect-1" numbered="true" toc="default"> | ||||
| <middle> | <name>Introduction</name> | |||
| <section title="Introduction" anchor="sect-1"><t> | <t> | |||
| In large network deployments, a single Diameter node can support over | In large network deployments, a single Diameter node can support over | |||
| a million concurrent Diameter sessions. In some use cases, Diameter | a million concurrent Diameter sessions. In some use cases, Diameter | |||
| nodes need to apply the same operation to a large group of Diameter | nodes need to apply the same operation to a large group of Diameter | |||
| sessions concurrently. For example, a policy decision point may need | sessions concurrently. For example, a policy decision point may need | |||
| to modify the authorized quality of service for all active users | to modify the authorized quality of service for all active users | |||
| having the same type of subscription. The Diameter base protocol | having the same type of subscription. The Diameter base protocol | |||
| commands operate on a single session so these use cases could result | commands operate on a single session so these use cases can result | |||
| in many thousands of command exchanges to enforce the same operation | in many thousands of command exchanges enforcing the same operation | |||
| on each session in the group. In order to reduce signaling, it would | on each session in the group. In order to reduce signaling, it is | |||
| be desirable to enable bulk operations on all (or part of) the | desirable to enable bulk operations on all (or part of) the | |||
| sessions managed by a Diameter node using a single or a few command | sessions managed by a Diameter node using a single or a few command | |||
| exchanges.</t> | exchanges.</t> | |||
| <t> | ||||
| <t> | ||||
| This document describes mechanisms for grouping Diameter sessions and | This document describes mechanisms for grouping Diameter sessions and | |||
| applying Diameter commands, such as performing re-authentication, | applying Diameter commands, such as performing re-authentication, | |||
| re-authorization, termination and abortion of sessions to a group of | re-authorization, termination, and abortion of sessions to a group of | |||
| sessions. This document does not define a new Diameter application. | sessions. This document does not define a new Diameter application. | |||
| Instead it defines mechanisms, commands and AVPs that may be used by any | Instead, it defines mechanisms, commands, and Attribute-Value Pairs (AVPs) th at may be used by any | |||
| Diameter application that requires management of groups of sessions.</t> | Diameter application that requires management of groups of sessions.</t> | |||
| <t> | ||||
| <t> | ||||
| These mechanisms take the following design goals and features into | These mechanisms take the following design goals and features into | |||
| account: | account: | |||
| <list style="symbols"> | </t> | |||
| <ul spacing="normal"> | ||||
| <t>Minimal impact to existing applications</t> | <li>minimal impact to existing applications</li> | |||
| <li>extension of existing commands' Command Code Format (CCF) with | ||||
| <t>Extension of existing commands' Command Code Format (CCF) with | optional AVPs to enable grouping and group operations</li> | |||
| optional AVPs to enable grouping and group operations</t> | <li>fallback to single-session operation</li> | |||
| <li>implicit discovery of capability to support grouping and group | ||||
| <t>Fallback to single session operation</t> | ||||
| <t>Implicit discovery of capability to support grouping and group | ||||
| operations in case no external mechanism is available to discover a | operations in case no external mechanism is available to discover a | |||
| Diameter peer's capability to support session grouping and session group | Diameter peer's capability to support session grouping and session group | |||
| operations</t> | operations</li> | |||
| </ul> | ||||
| </list> | </section> | |||
| </t> | <section anchor="sect-2" numbered="true" toc="default"> | |||
| </section> | <name>Terminology</name> | |||
| <t> | ||||
| <section title="Terminology" anchor="sect-2"><t> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUI | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | RED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bc | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | p14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and | |||
| 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, the | "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described | |||
| y appear in all | in BCP | |||
| 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="d | ||||
| efault"/> when, and only when, they appear in all | ||||
| capitals, as shown here.</t> | capitals, as shown here.</t> | |||
| <t> | ||||
| <t> | This document uses terminology defined in <xref target="RFC6733" format="defa | |||
| This document uses terminology defined in <xref target="RFC6733"/>.</t> | ult"/>.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-3" numbered="true" toc="default"> | |||
| <name>Protocol Overview</name> | ||||
| <section title="Protocol Overview" anchor="sect-3"><section title="Buildi | <section anchor="sect-3.1" numbered="true" toc="default"> | |||
| ng and Modifying Session Groups" anchor="sect-3.1"><t> | <name>Building and Modifying Session Groups</name> | |||
| <t> | ||||
| In order to accommodate bulk operations on Diameter sessions, the | In order to accommodate bulk operations on Diameter sessions, the | |||
| concept of session groups is introduced. Once sessions are added to | concept of session groups is introduced. Once sessions are added to | |||
| a group, a command acting on the group will affect all the member | a group, a command acting on the group will affect all the member | |||
| sessions.</t> | sessions.</t> | |||
| <t> | ||||
| <t> | The client and the server can assign a new Diameter session to a group, e.g., | |||
| Client and Server can assign a new Diameter session to a group, e.g., | ||||
| in case the subscription profile of the associated user has similar | in case the subscription profile of the associated user has similar | |||
| characteristics as the profile of other users whose Diameter session | characteristics as the profile of other users whose Diameter session | |||
| has been assigned to one or multiple groups. A single command can be | has been assigned to one or multiple groups. A single command can be | |||
| issued and applied to all sessions associated with such group(s), | issued and applied to all sessions associated with one or more such groups, | |||
| e.g., to adjust common profile or policy settings.</t> | e.g., to adjust common profile or policy settings.</t> | |||
| <t> | ||||
| <t> | ||||
| The assignment of a Diameter session to a group can be changed during | The assignment of a Diameter session to a group can be changed during | |||
| an ongoing session (mid-session). For example, if a user's | an ongoing session (mid-session). For example, if a user's | |||
| subscription profile changes mid-session, a Diameter server may | subscription profile changes mid-session, a Diameter server may | |||
| remove a session from an existing group and assign this session to a | remove a session from an existing group and assign this session to a | |||
| different group that is more appropriate for the new subscription | different group that is more appropriate for the new subscription | |||
| profile.</t> | profile.</t> | |||
| <t> | ||||
| <t> | ||||
| In the case of mobile users, the user's session may get transferred | 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 | mid-session to a new Diameter client during handover and assigned to | |||
| a different group, which is maintained at the new Diameter client.</t> | a different group, which is maintained at the new Diameter client.</t> | |||
| <t> | ||||
| <t> | It may be required to delete a session group, e.g., at the expiry of a | |||
| It may be required to delete a session group, e.g. at the expiry of a | ||||
| promotional period that applied to multiple subscriber profiles. | promotional period that applied to multiple subscriber profiles. | |||
| Deletion of such group requires subsequent individual treatment of | Deletion of such group requires subsequent individual treatment of | |||
| each of the assigned sessions. A node may decide to assign some of | each of the assigned sessions. A node may decide to assign some of | |||
| these sessions to any other existing or new group.</t> | these sessions to any other existing or new group.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-3.2" numbered="true" toc="default"> | |||
| <name>Issuing Group Commands</name> | ||||
| <section title="Issuing Group Commands" anchor="sect-3.2"><t> | <t> | |||
| Changes in the network condition may result in the Diameter server's | Changes in the network condition may result in the Diameter server's | |||
| decision to close all sessions in a given group. As example, the | decision to close all sessions in a given group. For example, the | |||
| server issues a single Session Termination Request (STR) command, | server issues a single Session Termination Request (STR) command, | |||
| including the identifier of the group of sessions which are to be | including the identifier of the group of sessions that are to be | |||
| terminated. The Diameter client treats the STR as group command and | terminated. The Diameter client treats the STR as a group command and | |||
| initiates the termination of all sessions associated with the | initiates the termination of all sessions associated with the | |||
| identified group. Subsequently, the client confirms the successful | identified group. Subsequently, the client confirms the successful | |||
| termination of these sessions to the server by sending a single | termination of these sessions to the server by sending a single | |||
| Session Termination Answer (STA) command, which includes the | Session Termination Answer (STA) command, which includes the | |||
| identifier of the group.</t> | identifier of the group.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-3.3" numbered="true" toc="default"> | |||
| <name>Permission Considerations</name> | ||||
| <section title="Permission Considerations" anchor="sect-3.3"><t> | <t> | |||
| Permission considerations in the context of this draft apply to the | Permission considerations in the context of this document apply to the | |||
| permission of Diameter nodes to build new session groups, to assign/ | permission of Diameter nodes to build new session groups, to assign/remove | |||
| remove a session to/from a session group and to delete an existing | a session to/from a session group, and to delete an existing | |||
| session group.</t> | session group.</t> | |||
| <t> | ||||
| <t> | When a client or server decides to create a new session group, | |||
| When a client or a server decides to create a new session group, | e.g., to group all sessions that share certain characteristics, this | |||
| e.g., to group all sessions which share certain characteristics, this | ||||
| node builds a session group identifier according to the rules | node builds a session group identifier according to the rules | |||
| described in <xref target="sect-7.3"/> and becomes the owner of the group.</t | described in <xref target="sect-7.3" format="default"/> and becomes the owner | |||
| > | of the group.</t> | |||
| <t> | ||||
| <t> | ||||
| After the creation of a session group, a session can be added to this | 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 | 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 | can only be removed from a session group by the Diameter node (client | |||
| or server) that has assigned this session to the session group.</t> | or server) that has assigned this session to the session group.</t> | |||
| <t> | ||||
| <t> | ||||
| A session group can only be deleted by the owner of the session | A session group can only be deleted by the owner of the session | |||
| group, resulting in individual treatment of the sessions that were | group, resulting in individual treatment of the sessions that were | |||
| assigned to this session group.</t> | assigned to this session group.</t> | |||
| <t> | ||||
| <t> | Diameter applications with implicit support for session groups <bcp14>MAY</bc | |||
| Diameter applications with implicit support for session groups MAY | p14> | |||
| define a more constrained permission model. For example, a more | define a more constrained permission model. For example, a more | |||
| constrained model could require that a client must not remove a | constrained model could require that a client not remove a | |||
| session from a group which is owned by the server. Details about | session from a group that is owned by the server. Details about | |||
| enforcing a more constrained permission model are out of scope of | enforcing a more constrained permission model are out of scope of | |||
| this specification.</t> | this specification.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="sect-4" numbered="true" toc="default"> | ||||
| </section> | <name>Protocol Description</name> | |||
| <section anchor="sect-4.1" numbered="true" toc="default"> | ||||
| <section title="Protocol Description" anchor="sect-4"><section title="Ses | <name>Session Grouping Capability Discovery</name> | |||
| sion Grouping Capability Discovery" anchor="sect-4.1"><t> | <t> | |||
| Diameter nodes SHOULD NOT perform group operations with peer nodes | Diameter nodes <bcp14>SHOULD NOT</bcp14> perform group operations with peer n | |||
| odes | ||||
| unless the node has advertised support for session grouping and group | unless the node has advertised support for session grouping and group | |||
| operations.</t> | operations.</t> | |||
| <section anchor="sect-4.1.1" numbered="true" toc="default"> | ||||
| <section title="Capability Discovery based on the Application Id" anchor= | <name>Capability Discovery Based on the Application Id</name> | |||
| "sect-4.1.1"><t> | <t> | |||
| Newly defined Diameter applications may natively support Diameter | Newly defined Diameter applications may intrinsically support Diameter | |||
| session grouping and group operations. Such applications provide | session grouping and group operations. In these cases, there is no need | |||
| intrinsic discovery for the support of session grouping capability | of a specific discovery mechanism for the support of session grouping | |||
| using the assigned Application Id advertised during the capability | capability besides the discovery of the Application Id assigned to the | |||
| exchange phase described in Section 5.3 of <xref target="RFC6733"/>.</t> | application advertised during the capability exchange phase described in <xref | |||
| target="RFC6733" section="5.3" sectionFormat="of" format="default"/>.</t> | ||||
| <t> | <t> | |||
| System- and deployment-specific means, as well as out-of-band | System-specific and deployment-specific means, as well as out-of-band | |||
| mechanisms for capability discovery can be used to announce nodes' | mechanisms for capability discovery, can be used to announce nodes' | |||
| support for session grouping and session group operations. In such | support for session grouping and session group operations. In such | |||
| case, the optional Session-Group-Capability-Vector AVP, as described | case, the optional Session-Group-Capability-Vector AVP, as described | |||
| in <xref target="sect-4.1.2"/> can be omitted in Diameter messages being exch anged | in <xref target="sect-4.1.2" format="default"/>, can be omitted in Diameter m essages being exchanged | |||
| between nodes.</t> | between nodes.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-4.1.2" numbered="true" toc="default"> | |||
| <name>Capability Discovery Based on AVP Presence</name> | ||||
| <section title="Capability Discovery based on AVP Presence" anchor="sect- | <t> | |||
| 4.1.2"><t> | ||||
| If no other mechanism for capability discovery is deployed to enable | If no other mechanism for capability discovery is deployed to enable | |||
| Diameter nodes to learn about nodes' capability to support session grouping | Diameter nodes to learn about nodes' capability to support session grouping | |||
| and group commands for a given application, a Diameter node SHOULD append | and group commands for a given application, a Diameter node <bcp14>SHOULD</bc p14> append | |||
| the Session-Group-Capability-Vector AVP to any Diameter application | the Session-Group-Capability-Vector AVP to any Diameter application | |||
| messages exchanged with the other Diameter nodes to announce its capability | messages exchanged with the other Diameter nodes to announce its capability | |||
| to support session grouping and session group operations for the advertised | to support session grouping and session group operations for the advertised | |||
| application. Implementations following the specification as per this | application. Implementations following the specification as per this | |||
| document MUST set the BASE_SESSION_GROUP_CAPABILITY flag of the | document <bcp14>MUST</bcp14> set the BASE_SESSION_GROUP_CAPABILITY flag of th e | |||
| Session-Group-Capability-Vector AVP.</t> | Session-Group-Capability-Vector AVP.</t> | |||
| <t> | ||||
| <t> | ||||
| When a Diameter node receives at least one Session-Group-Capability-Vector | When a Diameter node receives at least one Session-Group-Capability-Vector | |||
| AVP from a node with the BASE_SESSION_GROUP_CAPABILITY flag set, the | AVP from a node with the BASE_SESSION_GROUP_CAPABILITY flag set, the | |||
| receiving Diameter node discovers the supported session grouping capability | receiving Diameter node discovers the supported session grouping capability | |||
| of the sending Diameter node for the advertised application and MUST cache | of the sending Diameter node for the advertised application and <bcp14>MUST</ bcp14> cache | |||
| this information for the lifetime of the routing table entry associated | this information for the lifetime of the routing table entry associated | |||
| with the peer identity/Application Id pair (see Section 2.7 of <xref target=" | with the peer identity / Application Id pair (see <xref target="RFC6733" sect | |||
| RFC6733"/>).</t> | ion="2.7" sectionFormat="of" format="default"/>).</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="sect-4.2" numbered="true" toc="default"> | ||||
| </section> | <name>Session Grouping</name> | |||
| <t> | ||||
| <section title="Session Grouping" anchor="sect-4.2"><t> | ||||
| This specification does not limit the number of session groups to | This specification does not limit the number of session groups to | |||
| which a single session is assigned. It is left to the implementation | which a single session is assigned. It is left to the implementation | |||
| of an application to determine such limitations. If an application | of an application to determine such limitations. If an application | |||
| facilitates a session to belong to multiple session groups, the | facilitates a session to belong to multiple session groups, the | |||
| application MUST maintain consistency of associated application | application <bcp14>MUST</bcp14> maintain consistency of associated applicatio n | |||
| session states for these multiple session groups.</t> | session states for these multiple session groups.</t> | |||
| <t> | ||||
| <t> | ||||
| Either Diameter node (client or server) can initiate the assignment | Either Diameter node (client or server) can initiate the assignment | |||
| of a session to a single or multiple session groups. Modification of | 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 | a group by removing or adding a single or multiple user sessions can | |||
| be initiated and performed mid-session by either Diameter node | be initiated and performed mid-session by either Diameter node | |||
| responsible for the session assignment to this group. Although | responsible for the session assignment to this group. Although | |||
| Diameter is a peer-to-peer protocol, Diameter AAA applications | 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 | typically assign the role of a "Diameter client" to the Diameter node | |||
| initiating the Diameter session and the role of "Diameter server" to | initiating the Diameter session and the role of "Diameter server" to | |||
| the node authorizing the Diameter session. This specification does | the node authorizing the Diameter session. This specification does | |||
| not restrict group creation, assignment or deletion actions to a | not restrict group creation, assignment, or deletion actions to a | |||
| specific role. In the following sections, "Diameter node" is used to | specific role. In the following sections, "Diameter node" is used to | |||
| refer to either role. <xref target="sect-5"/> describes particularities abou t | refer to either role. <xref target="sect-5" format="default"/> describes par ticularities about | |||
| session grouping and performing group commands when relay agents or | session grouping and performing group commands when relay agents or | |||
| proxies are deployed.</t> | proxies are deployed.</t> | |||
| <t> | ||||
| <t> | ||||
| Any Diameter node that has advertised support of session grouping and | Any Diameter node that has advertised support of session grouping and | |||
| group operations MUST store and maintain the group assignment as part | group operations <bcp14>MUST</bcp14> store and maintain the group assignment as part | |||
| of the session's state. A list of all known session groups is | of the session's state. A list of all known session groups is | |||
| locally maintained on each node, each group pointing to individual | locally maintained on each node, with each group pointing to individual | |||
| sessions being assigned to the group. Each Diameter node MUST also | sessions being assigned to the group. Each Diameter node <bcp14>MUST</bcp14> | |||
| also | ||||
| keep a record about sessions that it has assigned to a session group.</t> | keep a record about sessions that it has assigned to a session group.</t> | |||
| <section anchor="sect-4.2.1" numbered="true" toc="default"> | ||||
| <section title="Group assignment at session initiation" anchor="sect-4.2. | <name>Group Assignment at Session Initiation</name> | |||
| 1"><t> | <t> | |||
| 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 request, e.g., NASREQ AA-Request | client sends a service-specific request, e.g., Network Access Server Requirem | |||
| <xref target="RFC7155"/>, containing one or more session group identifiers. | ents (NASREQ) AA-Request | |||
| Each of | <xref target="RFC7155" format="default"/>, containing one or more session gro | |||
| these groups MUST be identified by a unique Session-Group-Id | up identifiers. Each of | |||
| contained in a separate Session-Group-Info AVP as specified in | these groups <bcp14>MUST</bcp14> be identified by a unique Session-Group-Id | |||
| <xref target="sect-7"/>.</t> | contained in a separate Session-Group-Info AVP, as specified in | |||
| <xref target="sect-7" format="default"/>.</t> | ||||
| <t> | <t> | |||
| The client may choose one or multiple session groups from a list of | The client may choose one or multiple session groups from a list of | |||
| existing session groups. Alternatively, the client may decide to | existing session groups. Alternatively, the client may decide to | |||
| create a new group to which the session is assigned and identify | create a new group to which the session is assigned and identify | |||
| itself in the <DiameterIdentity> portion of the Session-Group-Id AVP | itself in the <DiameterIdentity> portion of the Session-Group-Id AVP, | |||
| as per <xref target="sect-7.3"/>. For all assignments of a session to an act | as per <xref target="sect-7.3" format="default"/>. For all assignments of a | |||
| ive | session to an active | |||
| session group made by the client or the server, the | session group made by the client or the server, the | |||
| SESSION_GROUP_STATUS flag in the Session-Group-Info AVP, which | SESSION_GROUP_STATUS flag in the Session-Group-Info AVP, which | |||
| identifies the session group, MUST be set. A set | identifies the session group, <bcp14>MUST</bcp14> be set. A set | |||
| SESSION_GROUP_STATUS flag indicates that the identified session group | SESSION_GROUP_STATUS flag indicates that the identified session group | |||
| has just been created or is still active.</t> | has just been created or is still active.</t> | |||
| <t> | ||||
| <t> | The client <bcp14>MUST</bcp14> set the SESSION_GROUP_ALLOCATION_ACTION flag o | |||
| The client MUST set the SESSION_GROUP_ALLOCATION_ACTION flag of the | f the | |||
| Session-Group-Control-Vector AVP in each appended Session-Group-Info | Session-Group-Control-Vector AVP in each appended Session-Group-Info | |||
| AVP to indicate that the session contained in the request should be | AVP to indicate that the session contained in the request should be | |||
| assigned to the identified session group.</t> | assigned to the identified session group.</t> | |||
| <t> | ||||
| <t> | ||||
| The client may also indicate in the request that it supports | The client may also indicate in the request that it supports | |||
| assignment of the session to one or more groups by the server. In | assignment of the session to one or more groups by the server. In | |||
| such a case, the client MUST include the Session-Group-Info AVP in | such case, the client <bcp14>MUST</bcp14> include the Session-Group-Info AVP | |||
| the request including the Session-Group-Control-Vector AVP with the | in | |||
| the request, including the Session-Group-Control-Vector AVP with the | ||||
| SESSION_GROUP_ALLOCATION_ACTION flag set but no Session-Group-Id AVP.</t> | SESSION_GROUP_ALLOCATION_ACTION flag set but no Session-Group-Id AVP.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Diameter server receives a command request from a Diameter client | If the Diameter server receives a command request from a Diameter client | |||
| and the command includes at least one Session-Group-Info AVP having the | and the command includes at least one Session-Group-Info AVP with the | |||
| SESSION_GROUP_ALLOCATION_ACTION flag in the Session-Group-Control-Vector | SESSION_GROUP_ALLOCATION_ACTION flag in the Session-Group-Control-Vector | |||
| AVP set, the server can accept or reject the request for group assignment. | AVP set, the server can accept or reject the request for group assignment. | |||
| Reasons for rejection may be e.g., lack of resources for managing | Reasons for rejection may be, e.g., lack of resources for managing | |||
| additional groups. When rejected, the session MUST NOT be assigned to any | additional groups. When rejected, the session <bcp14>MUST NOT</bcp14> be ass | |||
| session group.</t> | igned to any | |||
| session group.</t> | ||||
| <t> | <t> | |||
| If the Diameter server accepts the client's request for a group assignment, | If the Diameter server accepts the client's request for a group | |||
| the server MUST assign the new session to each of the one or multiple | assignment, the server <bcp14>MUST</bcp14> assign the new session to each (on | |||
| identified session groups when present in the Session-Group-Info AVP. If | e 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 | one or multiple identified session groups are not already stored by the | |||
| server, the server MUST store the newly identified group(s) to its local | server, the server <bcp14>MUST</bcp14> store the one or more newly identified | |||
| list of known session groups. When sending the response to the client, | groups to its local | |||
| e.g., a service-specific auth response as per NASREQ AA-Answer <xref target=" | list of known session groups. | |||
| RFC7155"/>, | When sending the response to the client, | |||
| the server MUST include all Session-Group-Info AVPs as received in the | e.g., a service-specific authorization response, as per NASREQ AA-Answer <xre | |||
| f target="RFC7155" format="default"/>, | ||||
| the server <bcp14>MUST</bcp14> include all Session-Group-Info AVPs received i | ||||
| n the | ||||
| client's request.</t> | client's request.</t> | |||
| <t> | ||||
| <t> | ||||
| In addition to the one or multiple session groups identified in the | 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 | client's request, the server may decide to assign the new session to | |||
| one or multiple additional groups. In such a case, the server MUST | one or multiple additional groups. In such case, the server <bcp14>MUST</bcp 14> | |||
| add to the response the additional Session-Group-Info AVPs, each | add to the response the additional Session-Group-Info AVPs, each | |||
| identifying a session group to which the new session is assigned by | identifying a session group to which the new session is assigned by | |||
| the server. Each of the Session-Group-Info AVP added by the server | the server. Each of the Session-Group-Info AVPs added by the server | |||
| MUST have the SESSION_GROUP_ALLOCATION_ACTION flag set in the | <bcp14>MUST</bcp14> have the SESSION_GROUP_ALLOCATION_ACTION flag set in the | |||
| Session-Group-Control-Vector AVP.</t> | Session-Group-Control-Vector AVP.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Diameter server rejects the client's request for a group | If the Diameter server rejects the client's request for a group | |||
| assignment, the server sends the response to the client, e.g., a | assignment, the server sends the response to the client, e.g., a | |||
| service-specific auth response as per NASREQ AA-Answer <xref target="RFC7155" | service-specific authorization response, as per NASREQ AA-Answer <xref target | |||
| />, and | ="RFC7155" format="default"/>, and | |||
| MUST include all Session-Group-Info AVPs as received in the client's | <bcp14>MUST</bcp14> include all Session-Group-Info AVPs received in the clien | |||
| t's | ||||
| request (if any) while clearing the SESSION_GROUP_ALLOCATION_ACTION | request (if any) while clearing the SESSION_GROUP_ALLOCATION_ACTION | |||
| flag of the Session-Group-Control-Vector AVP. The server MAY still | flag of the Session-Group-Control-Vector AVP. The server <bcp14>MAY</bcp14> still | |||
| accept the client's request for the identified session to proceed | accept the client's request for the identified session to proceed | |||
| despite rejecting the group assignment. The response sent to the | despite rejecting the group assignment. The response sent to the | |||
| client will then indicate success in the result code. In this case, | client will then indicate success in the result code. In this case, | |||
| the session is treated as single session without assignment to any | the session is treated as a single session without assignment to any | |||
| session group by the Diameter nodes.</t> | session group by the Diameter nodes.</t> | |||
| <t> | ||||
| <t> | ||||
| If the assignment of the session to one or some of the multiple identified | If the assignment of the session to one or some of the multiple identified | |||
| session groups fails, the session group assignment is treated as failure. | session groups fails, the session group assignment is treated as a failure. | |||
| In such case the session is treated as single session without assignment to | In such case, the session is treated as a single session without assignment t | |||
| o | ||||
| any session group by the Diameter nodes. The server sends the response to | any session group by the Diameter nodes. The server sends the response to | |||
| the client and MAY include those Session-Group-Info AVPs for which the | the client and <bcp14>MAY</bcp14> include those Session-Group-Info AVPs for w hich the | |||
| group assignment failed. The SESSION_GROUP_ALLOCATION_ACTION flag of | group assignment failed. The SESSION_GROUP_ALLOCATION_ACTION flag of | |||
| included Session-Group-Info AVPs MUST be cleared.</t> | included Session-Group-Info AVPs <bcp14>MUST</bcp14> be cleared.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Diameter server receives a command request from a Diameter client | If the Diameter server receives a command request from a Diameter client | |||
| and the command includes a Session-Group-Info AVP which does not include a | and the command includes a Session-Group-Info AVP that does not include a | |||
| Session-Group-Id AVP, the server MAY decide to assign the session to one or | Session-Group-Id AVP, the server <bcp14>MAY</bcp14> decide to assign the sess | |||
| multiple session groups. For each session group, to which the server | ion to one or | |||
| multiple session groups. For each session group to which the server | ||||
| assigns the new session, the server includes a Session-Group-Info AVP with | assigns the new session, the server includes a Session-Group-Info AVP with | |||
| the Session-Group-Id AVP identifying a session group in the response sent | the Session-Group-Id AVP, identifying a session group in the response sent | |||
| to the client. Each of the Session-Group-Info AVPs included by the server | to the client. Each of the Session-Group-Info AVPs included by the server | |||
| MUST have the SESSION_GROUP_ALLOCATION_ACTION flag of the | <bcp14>MUST</bcp14> have the SESSION_GROUP_ALLOCATION_ACTION flag of the | |||
| Session-Group-Control-Vector AVP set.</t> | Session-Group-Control-Vector AVP set.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Diameter server receives a command request from a Diameter | If the Diameter server receives a command request from a Diameter | |||
| client and the command does not contain any Session-Group-Info AVP, | client and the command does not contain any Session-Group-Info AVPs, | |||
| the server MUST NOT assign the new session to any session group but | the server <bcp14>MUST NOT</bcp14> assign the new session to any session grou | |||
| treat the request as for a single session. The server MUST NOT | p but | |||
| treat the request the same as for a single session. The server <bcp14>MUST N | ||||
| OT</bcp14> | ||||
| return any Session-Group-Info AVP in the command response.</t> | return any Session-Group-Info AVP in the command response.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Diameter client receives a response to its previously issued | If the Diameter client receives a response to its previously issued | |||
| request from the server and the response includes at least one | request from the server and the response includes at least one | |||
| Session-Group-Info AVP having the SESSION_GROUP_ALLOCATION_ACTION | Session-Group-Info AVP with the SESSION_GROUP_ALLOCATION_ACTION | |||
| flag of the associated Session-Group-Control-Vector AVP set, the | flag of the associated Session-Group-Control-Vector AVP set, the | |||
| client MUST add the new session to all session groups as identified | client <bcp14>MUST</bcp14> add the new session to all session groups as ident | |||
| in the one or multiple Session-Group-Info AVPs. If the Diameter | ified | |||
| in one or multiple Session-Group-Info AVPs. If the Diameter | ||||
| client fails to add the session to one or more session groups as | client fails to add the session to one or more session groups as | |||
| identified in the one or multiple Session-Group-info AVPs, the client | identified in one or multiple Session-Group-Info AVPs, the client | |||
| MUST terminate the session. The client MAY send a subsequent request | <bcp14>MUST</bcp14> terminate the session. The client <bcp14>MAY</bcp14> sen | |||
| d a subsequent request | ||||
| for session initiation to the server without requesting the | for session initiation to the server without requesting the | |||
| assignment of the session to a session group.</t> | assignment of the session to a session group.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Diameter client receives a response to its previously issued | If the Diameter client receives a response to its previously issued | |||
| request from the server and the one or more Session-Group-Info AVPs | request from the server and one or more Session-Group-Info AVPs | |||
| have the SESSION_GROUP_ALLOCATION_ACTION flag of the associated | have the SESSION_GROUP_ALLOCATION_ACTION flag of the associated | |||
| Session-Group-Control-Vector AVP cleared, the client MUST terminate | Session-Group-Control-Vector AVP cleared, the client <bcp14>MUST</bcp14> term | |||
| the assignment of the session to the one or multiple groups. If the | inate | |||
| the assignment of the session to one or multiple groups. If the | ||||
| response from the server indicates success in the result code but | response from the server indicates success in the result code but | |||
| only the assignment of the session to a session group has been | only the assignment of the session to a session group has been | |||
| rejected by the server, the client treats the session as single | rejected by the server, the client treats the session as a single | |||
| session without group assignment.</t> | session without group assignment.</t> | |||
| <t> | ||||
| <t> | ||||
| If a Diameter client sends a request for session initiation | If a Diameter client sends a request for session initiation | |||
| containing one or more Session-Group-Info AVPs but the response from | containing one or more Session-Group-Info AVPs but the response from | |||
| the Diameter server does not contain a Session-Group-Info AVP, the | the Diameter server does not contain a Session-Group-Info AVP, the | |||
| Diameter client MUST proceed as if the request was processed without | Diameter client <bcp14>MUST</bcp14> proceed as if the request was processed w | |||
| group assignments. The Diameter client MUST NOT retry to request | ithout | |||
| group assignment for this session, but MAY try to request group | group assignments. The Diameter client <bcp14>MUST NOT</bcp14> retry to requ | |||
| est | ||||
| group assignment for this session but <bcp14>MAY</bcp14> try to request group | ||||
| assignment for other new sessions.</t> | assignment for other new sessions.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-4.2.2" numbered="true" toc="default"> | |||
| <name>Removing a Session from a Session Group</name> | ||||
| <section title="Removing a session from a session group" anchor="sect-4.2 | <t> | |||
| .2"><t> | ||||
| When a Diameter client decides to remove a session from a particular | When a Diameter client decides to remove a session from a particular | |||
| session group, the client sends a service-specific re-authorization request | session group, the client sends a service-specific re-authorization request | |||
| to the server and adds one Session-Group-Info AVP to the request for each | to the server and adds one Session-Group-Info AVP to the request for each | |||
| session group, from which the client wants to remove the session. The | session group from which the client wants to remove the session. The | |||
| session that is to be removed from a group is identified in the Session-Id | session that is to be removed from a group is identified in the Session-Id | |||
| AVP of the command request. The SESSION_GROUP_ALLOCATION_ACTION flag of | AVP of the command request. The SESSION_GROUP_ALLOCATION_ACTION flag of | |||
| the Session-Group-Control-Vector AVP in each Session-Group-Info AVP MUST be | the Session-Group-Control-Vector AVP in each Session-Group-Info AVP <bcp14>MU ST</bcp14> be | |||
| cleared to indicate removal of the session from the session group | cleared to indicate removal of the session from the session group | |||
| identified in the associated Session-Group-id AVP.</t> | identified in the associated Session-Group-Id AVP.</t> | |||
| <t> | ||||
| <t> | ||||
| When a Diameter client decides to remove a session from all session | When a Diameter client decides to remove a session from all session | |||
| groups to which the session has been previously assigned, the client | groups to which the session has been previously assigned, the client | |||
| sends a service-specific re-authorization request to the server and | sends a service-specific re-authorization request to the server and | |||
| adds a single Session-Group-Info AVP to the request which has the | adds a single Session-Group-Info AVP to the request that has the | |||
| SESSION_GROUP_ALLOCATION_ACTION flag cleared and the Session-Group-Id | SESSION_GROUP_ALLOCATION_ACTION flag cleared and the Session-Group-Id | |||
| AVP omitted. The Session-Id AVP in the re-authorization request | AVP omitted. The Session-Id AVP in the re-authorization request | |||
| identifies the session that is to be removed from all groups to which | identifies the session that is to be removed from all groups to which | |||
| it had been previously assigned.</t> | it had been previously assigned.</t> | |||
| <t> | ||||
| <t> | If the Diameter server receives a request from the client that has at | |||
| If the Diameter server receives a request from the client which has at | ||||
| least one Session-Group-Info AVP appended with the | least one Session-Group-Info AVP appended with the | |||
| SESSION_GROUP_ALLOCATION_ACTION flag cleared, the server MUST remove the | SESSION_GROUP_ALLOCATION_ACTION flag cleared, the server <bcp14>MUST</bcp14> remove the | |||
| session from the session group identified in the associated | session from the session group identified in the associated | |||
| Session-Group-Id AVP. If the request includes at least one | Session-Group-Id AVP. If the request includes at least one | |||
| Session-Group-info AVP with the SESSION_GROUP_ALLOCATION_ACTION flag | Session-Group-Info AVP with the SESSION_GROUP_ALLOCATION_ACTION flag | |||
| cleared and no Session-Id AVP present, the server MUST remove the session | cleared and no Session-Id AVP present, the server <bcp14>MUST</bcp14> remove | |||
| the session | ||||
| from all session groups to which the session has been previously assigned. | from all session groups to which the session has been previously assigned. | |||
| The server MUST include in its response to the requesting client all | The server <bcp14>MUST</bcp14> include in its response to the requesting clie | |||
| Session-Group-Id AVPs as received in the request.</t> | nt all | |||
| Session-Group-Id AVPs received in the request.</t> | ||||
| <t> | <t> | |||
| When the Diameter server decides to remove a session from one or | When the Diameter server decides to remove a session from one or | |||
| multiple particular session groups or from all session groups to | multiple particular session groups or from all session groups to | |||
| which the session has been assigned beforehand, the server sends a | which the session has been assigned beforehand, the server sends a | |||
| Re-Authorization Request (RAR) or a service-specific server-initiated | Re-Auth-Request (RAR) or a service-specific server-initiated | |||
| request to the client, indicating the session in the Session-Id AVP | request to the client, indicating the session in the Session-Id AVP | |||
| of the request. The client sends a Re-Authorization Answer (RAA) or | of the request. The client sends a Re-Auth-Answer (RAA) or | |||
| a service-specific answer to respond to the server's request. The | a service-specific answer to respond to the server's request. The | |||
| client subsequently sends service-specific re-authorization request | client subsequently sends a service-specific re-authorization request | |||
| containing one or multiple Session-Group-Info AVPs, each indicating a | containing one or multiple Session-Group-Info AVPs, each indicating a | |||
| session group, to which the session had been previously assigned. To | session group to which the session had been previously assigned. To | |||
| indicate removal of the indicated session from one or multiple | indicate removal of the indicated session from one or multiple | |||
| session groups, the server sends a service-specific auth response to | session groups, the server sends a service-specific authorization response to | |||
| the client, containing a list of Session-Group-Info AVPs with the | the client, containing a list of Session-Group-Info AVPs with the | |||
| SESSION_GROUP_ALLOCATION_ACTION flag cleared and the Session-Group-Id | SESSION_GROUP_ALLOCATION_ACTION flag cleared and the Session-Group-Id | |||
| AVP identifying the session group, from which the session should be | AVP identifying the session group from which the session should be | |||
| removed. The server MAY include to the service-specific auth | removed. The server <bcp14>MAY</bcp14> include with the service-specific aut | |||
| horization | ||||
| response a list of Session-Group-Info AVPs with the | response a list of Session-Group-Info AVPs with the | |||
| SESSION_GROUP_ALLOCATION_ACTION flag set and the Session-Group-Id AVP | SESSION_GROUP_ALLOCATION_ACTION flag set and the Session-Group-Id AVP | |||
| identifying session groups to which the session remains subscribed. | identifying session groups to which the session remains subscribed. | |||
| If the server decides to remove the identified session from all | If the server decides to remove the identified session from all | |||
| session groups, to which the session has been previously assigned, | session groups to which the session has been previously assigned, | |||
| the server includes in the service-specific auth response at least | the server includes in the service-specific authorization response at least | |||
| one Session-Group-Info AVP with the SESSION_GROUP_ALLOCATION_ACTION | one Session-Group-Info AVP with the SESSION_GROUP_ALLOCATION_ACTION | |||
| flag cleared and Session-Group-Id AVP absent.</t> | flag cleared and Session-Group-Id AVP absent.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-4.2.3" numbered="true" toc="default"> | |||
| <name>Mid-session Group Assignment Modifications</name> | ||||
| <section title="Mid-session group assignment modifications" anchor="sect- | <t> | |||
| 4.2.3"><t> | ||||
| Either Diameter node (client or server) can modify the group | Either Diameter node (client or server) can modify the group | |||
| membership of an active Diameter session according to the specified | membership of an active Diameter session according to the specified | |||
| permission considerations.</t> | permission considerations.</t> | |||
| <t> | ||||
| <t> | ||||
| To update an assigned group mid-session, a Diameter client sends a | To update an assigned group mid-session, a Diameter client sends a | |||
| service-specific re-authorization request to the server, containing one or | service-specific re-authorization request to the server, containing one or | |||
| multiple Session-Group-Info AVPs with the SESSION_GROUP_ALLOCATION_ACTION | multiple Session-Group-Info AVPs with the SESSION_GROUP_ALLOCATION_ACTION | |||
| flag set and the Session-Group-Id AVP present, identifying the session | flag set and the Session-Group-Id AVP present, identifying the session | |||
| group to which the session should be assigned. With the same message, the | group to which the session should be assigned. With the same message, the | |||
| client MAY send one or multiple Session-Group-Info AVP with the | client <bcp14>MAY</bcp14> send one or multiple Session-Group-Info AVPs with t he | |||
| SESSION_GROUP_ALLOCATION_ACTION flag cleared and the Session-Group-Id AVP | SESSION_GROUP_ALLOCATION_ACTION flag cleared and the Session-Group-Id AVP | |||
| identifying the session group from which the identified session is to be | identifying the session group from which the identified session is to be | |||
| removed. To remove the session from all previously assigned session | removed. To remove the session from all previously assigned session | |||
| groups, the client includes at least one Session-Group-Info AVP with the | groups, the client includes at least one Session-Group-Info AVP with the | |||
| SESSION_GROUP_ALLOCATION_ACTION flag cleared and no Session-Group-Id AVP | SESSION_GROUP_ALLOCATION_ACTION flag cleared and no Session-Group-Id AVP | |||
| present. When the server received the service-specific re-authorization | present. When the server received the service-specific re-authorization | |||
| request, it MUST update its locally maintained view of the session groups | request, it <bcp14>MUST</bcp14> update its locally maintained view of the ses sion groups | |||
| for the identified session according to the appended Session-Group-Info | for the identified session according to the appended Session-Group-Info | |||
| AVPs. The server sends a service- specific auth response to the client | AVPs. The server sends a service-specific authorization response to the clie nt | |||
| containing one or multiple Session-Group-Info AVPs with the | containing one or multiple Session-Group-Info AVPs with the | |||
| SESSION_GROUP_ALLOCATION_ACTION flag set and the Session-Group-Id AVP | SESSION_GROUP_ALLOCATION_ACTION flag set and the Session-Group-Id AVP | |||
| identifying the new session group to which the identified session has been | identifying the new session group to which the identified session has been | |||
| assigned.</t> | assigned.</t> | |||
| <t> | ||||
| <t> | When a Diameter server decides to update assigned groups mid-session, it | |||
| When a Diameter server decides to update assigned groups mid-session, it | sends a Re-Auth-Request (RAR) message or a service-specific | |||
| sends a Re-Authorization Request (RAR) message or a service-specific | request to the client identifying the session for which the session group | |||
| request to the client identifying the session, for which the session group | lists are to be updated. The client responds with a Re-Auth-Answer (RAA) | |||
| lists are to be updated. The client responds with a Re-Authorization | message or a service-specific answer. The client subsequently | |||
| Answer (RAA) message or a service-specific answer. The client subsequently | ||||
| sends a service-specific re-authorization request containing one or | sends a service-specific re-authorization request containing one or | |||
| multiple Session-Group-Info AVPs with the SESSION_GROUP_ALLOCATION_ACTION | multiple Session-Group-Info AVPs with the SESSION_GROUP_ALLOCATION_ACTION | |||
| flag set and the Session-Group-Id AVP identifying the session group to | flag set and the Session-Group-Id AVP identifying the session group to | |||
| which the session had been previously assigned. The server responds with a | which the session had been previously assigned. The server responds with a | |||
| service-specific auth response and includes one or multiple | service-specific authorization response and includes one or multiple | |||
| Session-Group-Info AVP with the SESSION_GROUP_ALLOCATION_ACTION flag set | Session-Group-Info AVPs with the SESSION_GROUP_ALLOCATION_ACTION flag set | |||
| and the Session-Group-Id AVP identifying the session group, to which the | and the Session-Group-Id AVP identifying the session group to which the | |||
| identified session is to be assigned. With the same response message, the | identified session is to be assigned. With the same response message, the | |||
| server MAY send one or multiple Session-Group-Info AVPs with the | server <bcp14>MAY</bcp14> send one or multiple Session-Group-Info AVPs with t he | |||
| SESSION_GROUP_ALLOCATION_ACTION flag cleared and the Session-Group-Id AVP | SESSION_GROUP_ALLOCATION_ACTION flag cleared and the Session-Group-Id AVP | |||
| identifying the session groups from which the identified session is to be | identifying the session groups from which the identified session is to be | |||
| removed. When a server wants to remove the session from all previously | removed. When a server wants to remove the session from all previously | |||
| assigned session groups, it sends at least one Session- Group-Info AVP with | assigned session groups, it sends at least one Session- Group-Info AVP with | |||
| the response having the SESSION_GROUP_ALLOCATION_ACTION flag cleared and no | the response having the SESSION_GROUP_ALLOCATION_ACTION flag cleared and no | |||
| Session-Group-Id AVP present.</t> | Session-Group-Id AVP present.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="sect-4.3" numbered="true" toc="default"> | ||||
| </section> | <name>Deleting a Session Group</name> | |||
| <t> | ||||
| <section title="Deleting a Session Group" anchor="sect-4.3"><t> | ||||
| To explicitly delete a session group and release the associated | To explicitly delete a session group and release the associated | |||
| Session-Group-Id value, the owner of a session group appends a single | Session-Group-Id value, the owner of a session group appends a single | |||
| Session-Group-Info AVP having the SESSION_GROUP_STATUS flag cleared | Session-Group-Info AVP with the SESSION_GROUP_STATUS flag cleared | |||
| and the Session-Group-Id AVP identifying the session group, which is | and the Session-Group-Id AVP identifying the session group that is | |||
| to be deleted. The SESSION_GROUP_ALLOCATION_ACTION flag of the | to be deleted. The SESSION_GROUP_ALLOCATION_ACTION flag of the | |||
| associated Session-Group-Control-Vector AVP MUST be cleared.</t> | associated Session-Group-Control-Vector AVP <bcp14>MUST</bcp14> be cleared.</ | |||
| t> | ||||
| <t> | <t> | |||
| A session group is implicitly deleted and its identifier released | A session group is implicitly deleted and its identifier is released | |||
| after the last session has been removed from this session group.</t> | after the last session has been removed from this session group.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-4.4" numbered="true" toc="default"> | |||
| <name>Performing Group Operations</name> | ||||
| <section title="Performing Group Operations" anchor="sect-4.4"><section t | <section anchor="sect-4.4.1" numbered="true" toc="default"> | |||
| itle="Sending Group Commands" anchor="sect-4.4.1"><t> | <name>Sending Group Commands</name> | |||
| <t> | ||||
| Either Diameter node (client or server) can request the recipient of a | Either Diameter node (client or server) can request the recipient of a | |||
| request to process an associated command for all sessions assigned to one | request to process an associated command for all sessions assigned to one | |||
| or multiple groups by identifying these groups in the request. The sender | 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 | of the request appends for each group to which the command applies a | |||
| Session-Group-Info AVP including the Session-Group-Id AVP to identify the | Session-Group-Info AVP including the Session-Group-Id AVP to identify the | |||
| associated session group. Both, the SESSION_GROUP_ALLOCATION_ACTION flag | associated session group. Both the SESSION_GROUP_ALLOCATION_ACTION flag | |||
| as well as the SESSION_GROUP_STATUS flag MUST be set.</t> | and the SESSION_GROUP_STATUS flag <bcp14>MUST</bcp14> be set.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Command Code Format (CCF) of the request mandates a Session-Id | 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 | AVP, the Session-Id AVP <bcp14>MUST</bcp14> identify one of the single sessio | |||
| which is assigned to at least one of the groups being identified in | ns | |||
| that is assigned to at least one of the groups being identified in | ||||
| the appended Session-Group-Id AVPs.</t> | the appended Session-Group-Id AVPs.</t> | |||
| <t> | ||||
| <t> | The sender of the request <bcp14>MUST</bcp14> indicate to the receiver how mu | |||
| The sender of the request MUST indicate to the receiver how multiple | ltiple | |||
| resulting transactions associated with a group command are to be treated by | resulting transactions associated with a group command are to be treated by | |||
| appending a single instance of a Group-Response-Action AVP. For example, | appending a single instance of a Group-Response-Action AVP. | |||
| when a server sends a Re-Authorization Request (RAR) or a service-specific | For example, when a server sends a Re-Auth-Request (RAR) or a service-specifi | |||
| c | ||||
| server-initiated request to the client, it indicates to the client to | server-initiated request to the client, it indicates to the client to | |||
| follow the request according to one of three possible procedures. When the | follow the request according to one of three possible procedures. When the | |||
| server sets the Group-Response-Action AVP to ALL_GROUPS (1), the client | server sets the Group-Response-Action AVP to ALL_GROUPS (1), the client | |||
| sends a single RAR message for all identified groups. When the server sets | sends a single RAR message for all identified groups. When the server sets | |||
| the Group-Response-Action AVP to PER_GROUP (2), the client sends a single | the Group-Response-Action AVP to PER_GROUP (2), the client sends a single | |||
| RAR message for each identified group individually. When the server sets | RAR message for each identified group individually. When the server sets | |||
| the Group-Response-Action AVP to PER_SESSION (3), the client follows-up | the Group-Response-Action AVP to PER_SESSION (3), the client follows up | |||
| with a single RAR message per impacted session. If a session is included | with a single RAR message per impacted session. If a session is included | |||
| in more than one of the identified session groups, the client sends only | in more than one of the identified session groups, the client sends only | |||
| one RAR message for that session.</t> | one RAR message for that session.</t> | |||
| <t> | ||||
| <t> | ||||
| If the sender sends a request including the Group-Response-Action AVP set | If the sender sends a request including the Group-Response-Action AVP set | |||
| to ALL_GROUPS (1) or PER_GROUP (2), it has to expect some delay before | to ALL_GROUPS (1) or PER_GROUP (2), it has to expect some delay before | |||
| receiving the corresponding answer(s) as the answer(s) will only be sent | receiving one or more corresponding answers, as the answers will only be sent | |||
| back when the request is processed for all the sessions or all the session | back when the request is processed for all the sessions or all the sessions | |||
| of a session group. If the processing of the request is delay-sensitive, | of a session group. If the processing of the request is delay sensitive, | |||
| the sender SHOULD NOT set the Group-Response-Action AVP to ALL_GROUPS (1) | the sender <bcp14>SHOULD NOT</bcp14> set the Group-Response-Action AVP to ALL | |||
| _GROUPS (1) | ||||
| or PER_GROUP (2). If the answer can be sent before the complete process of | or PER_GROUP (2). If the answer can be sent before the complete process of | |||
| the request for all the sessions or if the request timeout timer is high | the request for all the sessions or if the request timeout timer is high | |||
| enough, the sender MAY set the Group-Response-Action AVP to ALL_GROUPS (1) | enough, the sender <bcp14>MAY</bcp14> set the Group-Response-Action AVP to AL L_GROUPS (1) | |||
| or PER_GROUP (2).</t> | or PER_GROUP (2).</t> | |||
| <t> | ||||
| <t> | ||||
| If the sender wants the receiver of the request to process the | If the sender wants the receiver of the request to process the | |||
| associated command solely for a single session, the sender does not | associated command for a single session, the sender does not | |||
| append any group identifier, but identifies the relevant session in | append any group identifier; it identifies only the relevant session in | |||
| the Session-Id AVP.</t> | the Session-Id AVP.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-4.4.2" numbered="true" toc="default"> | |||
| <name>Receiving Group Commands</name> | ||||
| <section title="Receiving Group Commands" anchor="sect-4.4.2"><t> | <t> | |||
| A Diameter node receiving a request to process a command for a group | A Diameter node receiving a request to process a command for a group | |||
| of sessions, identifies the relevant groups according to the included | of sessions identifies the relevant groups according to the included | |||
| Session-Group-Id AVP in the Session-Group-Info AVP and processes the | Session-Group-Id AVP in the Session-Group-Info AVP and processes the | |||
| group command according to the included Group-Response-Action AVP. | group command according to the included Group-Response-Action AVP. | |||
| If the received request identifies multiple groups in multiple | If the received request identifies multiple groups in multiple, | |||
| included Session-Group-Id AVPs, the receiver SHOULD process the | included Session-Group-Id AVPs, the receiver <bcp14>SHOULD</bcp14> process th | |||
| e | ||||
| associated command for each of these groups. If a session has been | associated command for each of these groups. If a session has been | |||
| assigned to more than one of the identified groups, the receiver MUST | assigned to more than one of the identified groups, the receiver <bcp14>MUST< /bcp14> | |||
| process the associated command only once per session.</t> | process the associated command only once per session.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-4.4.3" numbered="true" toc="default"> | |||
| <name>Error Handling for Group Commands</name> | ||||
| <section title="Error Handling for Group Commands" anchor="sect-4.4.3"><t | <t> | |||
| > | ||||
| When a Diameter node receives a request to process a command for one | 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 | or more session groups and the result of processing the command is an | |||
| error that applies to all sessions in the identified groups, an | error that applies to all sessions in the identified groups, an | |||
| associated protocol error MUST be returned to the source of the | associated protocol error <bcp14>MUST</bcp14> be returned to the source of th | |||
| request. In such case, the sender of the request MUST fall back to | e | |||
| request. In such case, the sender of the request <bcp14>MUST</bcp14> fall ba | ||||
| ck to | ||||
| single-session processing and the session groups, which have been | single-session processing and the session groups, which have been | |||
| identified in the group command, MUST be deleted according to the | identified in the group command, <bcp14>MUST</bcp14> be deleted according to | |||
| procedure described in <xref target="sect-4.3"/>.</t> | the | |||
| procedure described in <xref target="sect-4.3" format="default"/>.</t> | ||||
| <t> | <t> | |||
| When a Diameter node receives a request to process a command for one | When a Diameter node receives a request to process a command for one | |||
| or more session groups and the result of processing the command | or more session groups and the result of processing the command | |||
| succeeds for some sessions identified in one or multiple session | succeeds for some sessions identified in one or multiple session | |||
| groups, but fails for one or more sessions, the Result-Code AVP in | groups but fails for one or more sessions, the Result-Code AVP in | |||
| the response message SHOULD indicate DIAMETER_LIMITED_SUCCESS as per | the response message <bcp14>SHOULD</bcp14> indicate DIAMETER_LIMITED_SUCCESS, | |||
| Section 7.1.2 of <xref target="RFC6733"/>.</t> | as per | |||
| <xref target="RFC6733" section="7.1.2" sectionFormat="of" format="default"/>. | ||||
| <t> | </t> | |||
| In the case of limited success, the sessions, for which the | <t> | |||
| processing of the group command failed, MUST be identified by | In the case of limited success, the sessions for which the | |||
| including their Session-Id AVP in the Failed-AVP AVP as per | processing of the group command failed <bcp14>MUST</bcp14> be identified by | |||
| Section 7.5 of <xref target="RFC6733"/>. The sender of the request MUST fall | including their Session-Id AVP in the Failed-AVP AVP, as per | |||
| back | <xref target="RFC6733" section="7.5" sectionFormat="of" format="default"/>. | |||
| to single-session operation for each of the identified sessions, for | The sender of the request <bcp14>MUST</bcp14> fall back | |||
| to single-session operation for each of the identified sessions for | ||||
| which the group command failed. In addition, each of these sessions | which the group command failed. In addition, each of these sessions | |||
| MUST be removed from all session groups to which the group command | <bcp14>MUST</bcp14> be removed from all session groups to which the group com mand | |||
| applied. To remove sessions from a session group, the Diameter | applied. To remove sessions from a session group, the Diameter | |||
| client performs the procedure described in <xref target="sect-4.2.2"/>.</t> | client performs the procedure described in <xref target="sect-4.2.2" format=" | |||
| default"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="sect-4.4.4" numbered="true" toc="default"> | ||||
| <section title="Single-Session Fallback" anchor="sect-4.4.4"><t> | <name>Single-Session Fallback</name> | |||
| Either Diameter node can fall back to single session operation by | <t> | |||
| ignoring and omitting the optional group session-specific AVPs. | Either Diameter node can fall back to single-session operation by | |||
| ignoring and omitting the optional group-session-specific AVPs. | ||||
| Fallback to single-session operation is performed by processing the | Fallback to single-session operation is performed by processing the | |||
| Diameter command solely for the session identified in the mandatory | Diameter command solely for the session identified in the mandatory | |||
| Session-Id AVP. In such case, the response to the group command MUST | Session-Id AVP. In such case, the response to the group command <bcp14>MUST | |||
| NOT identify any group but identify solely the single session for | NOT</bcp14> | |||
| include any group identifier but only the Session-Id identifying the session | ||||
| for | ||||
| which the command has been processed.</t> | which the command has been processed.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section anchor="sect-5" numbered="true" toc="default"> | |||
| <name>Operation with Proxy Agents</name> | ||||
| </section> | <t> | |||
| <section title="Operation with Proxy Agents" anchor="sect-5"><t> | ||||
| In the case of a present stateful Proxy Agent between a Diameter | In the case of a present stateful Proxy Agent between a Diameter | |||
| client and a Diameter server, the Proxy Agent MUST perform the same | client and a Diameter server, the Proxy Agent <bcp14>MUST</bcp14> perform the same | |||
| mechanisms per this specification to advertise session grouping and | mechanisms per this specification to advertise session grouping and | |||
| group operations capability towards the client and the server | group operation capabilities towards the client and the server, | |||
| respectively. The Proxy MUST update and maintain consistency of its | respectively. The Proxy Agent <bcp14>MUST</bcp14> update and maintain consis | |||
| local session states as per the result of the group commands which | tency 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, | 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 | the Proxy Agent <bcp14>MUST</bcp14> act as a Diameter server in front of the | |||
| Diameter client and MUST act as a Diameter client in front of the | Diameter client and <bcp14>MUST</bcp14> act as a Diameter client in front of | |||
| Diameter server. Therefore, the client and server behavior described | the | |||
| in <xref target="sect-4"/> applies respectively to the stateful Proxy Agent.< | Diameter server. Therefore, the client and the server behavior described | |||
| /t> | in <xref target="sect-4" format="default"/> applies respectively to the state | |||
| ful Proxy Agent.</t> | ||||
| <t> | <t> | |||
| If a stateful Proxy Agent manipulates session groups, it MUST | If a stateful Proxy Agent manipulates session groups, it <bcp14>MUST</bcp14> | |||
| maintain consistency of session groups between a client and a server. | maintain consistency of session groups between a client and a server. | |||
| This applies to a deployment where the Proxy Agent utilizes session | This applies to a deployment where the Proxy Agent utilizes session | |||
| grouping and performs group operations with, for example, a Diameter | grouping and performs group operations with, for example, a Diameter | |||
| server, whereas the Diameter client is not aware of session groups. | server, whereas the Diameter client is not aware of session groups. | |||
| In such case the Proxy Agent must reflect the states associated with | In such case, the Proxy Agent must reflect the states associated with | |||
| the session groups as individual session operations towards the | the session groups as individual session operations towards the | |||
| client and ensure the client has a consistent view of each session. | client and ensure the client has a consistent view of each session. | |||
| The same applies to a deployment where all nodes, the Diameter client | 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 | and server, as well as the Proxy Agent are group aware, but the Proxy | |||
| Agent manipulates groups, e.g., to adopt different administrative | Agent manipulates groups, e.g., to adopt different administrative | |||
| policies that apply to the client's domain and the server's domain.</t> | policies that apply to the client's domain and the server's domain.</t> | |||
| <t> | ||||
| <t> | Stateless Proxy Agents do not maintain any session states (only transaction | |||
| Stateless Proxy Agents do not maintain any session state (only transaction | states are maintained). Consequently, the notion of a session group is | |||
| state are maintained). Consequently, the notion of session group is | ||||
| transparent for any stateless Proxy Agent present between a Diameter client | transparent for any stateless Proxy Agent present between a Diameter client | |||
| and a Diameter server handling session groups. Session group related AVPs | and a Diameter server handling session groups. Session-group-related AVPs | |||
| being defined as optional AVP are ignored by stateless Proxy Agents and | being defined as an optional AVP are ignored by stateless Proxy Agents and | |||
| should not be removed from the Diameter commands. If they are removed by | should not be removed from the Diameter commands. If they are removed by | |||
| the Proxy Agent for any reason, the Diameter client and Diameter server | the Proxy Agent for any reason, the Diameter client and Diameter server | |||
| will discover the absence the related session group AVPs and will fall back | will discover the absence of the session-group-related AVPs and will fall bac | |||
| to single-session processing, as described in <xref target="sect-4"/>.</t> | k | |||
| to single-session processing, as described in <xref target="sect-4" format="d | ||||
| </section> | efault"/>.</t> | |||
| </section> | ||||
| <section title="Commands Formatting" anchor="sect-6"><t> | <section anchor="sect-6" numbered="true" toc="default"> | |||
| <name>Commands Formatting</name> | ||||
| <t> | ||||
| This document does not specify new Diameter commands to enable group | This document does not specify new Diameter commands to enable group | |||
| operations, but relies on command extensibility capability provided | operations but relies on command extensibility and capability provided | |||
| by the Diameter Base protocol. This section provides the guidelines | by the Diameter Base protocol. This section provides the guidelines | |||
| to extend the CCF of existing Diameter commands with optional AVPs to | to extend the CCF of existing Diameter commands with optional AVPs to | |||
| enable the recipient of the command applying the command to all | enable the recipient of the command to apply the command to all | |||
| sessions associated with the identified group(s).</t> | sessions associated with the identified group or groups.</t> | |||
| <section anchor="sect-6.1" numbered="true" toc="default"> | ||||
| <section title="Formatting Example: Group Re-Auth-Request" anchor="sect-6 | <name>Formatting Example: Group Re-Auth-Request</name> | |||
| .1"><t> | <t> | |||
| A request for re-authentication of one or more groups of users is issued by | A request for re-authentication of one or more groups of users is issued by | |||
| appending one or multiple Session-Group-Id AVP(s), as well as a single | appending one or multiple Session-Group-Id AVPs, as well as appending a singl | |||
| instance of a Group-Response-Action AVP to the Re-Auth-Request (RAR). The | e | |||
| one or multiple Session-Group-Id AVP(s) identify the associated group(s) | instance of a Group-Response-Action AVP to the Re-Auth-Request (RAR). | |||
| for which the group re-authentication has been requested. The | One or multiple Session-Group-Id AVPs identify one or more associated groups | |||
| for which group re-authentication has been requested. The | ||||
| Group-Response-Action AVP identifies the expected means to perform and | Group-Response-Action AVP identifies the expected means to perform and | |||
| respond to the group command. The recipient of the group command initiates | respond to the group command. The recipient of the group command initiates | |||
| re-authentication for all users associated with the identified group(s). | re-authentication for all users associated with the identified group or group s. | |||
| Furthermore, the sender of the group re-authentication request appends a | Furthermore, the sender of the group re-authentication request appends a | |||
| Group-Response-Action AVP to provide more information to the receiver of | Group-Response-Action AVP to provide more information to the receiver of | |||
| the command about how to accomplish the group operation.</t> | the command about how to accomplish the group operation.</t> | |||
| <t> | ||||
| <t> | The value of the mandatory Session-Id AVP <bcp14>MUST</bcp14> identify a sess | |||
| The value of the mandatory Session-Id AVP MUST identify a session | ion | |||
| associated with a single user, which is assigned to at least one of | associated with a single user, which is assigned to at least one of | |||
| the groups being identified in the appended Session-Group-Id AVPs.</t> | the groups being identified in the appended Session-Group-Id AVPs.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| <RAR> ::= < Diameter Header: 258, REQ, PXY > | <RAR> ::= < Diameter Header: 258, REQ, PXY > | |||
| < Session-Id > | < Session-Id > | |||
| { Origin-Host } | { Origin-Host } | |||
| { Origin-Realm } | { Origin-Realm } | |||
| { Destination-Realm } | { Destination-Realm } | |||
| { Destination-Host } | { Destination-Host } | |||
| { Auth-Application-Id } | { Auth-Application-Id } | |||
| { Re-Auth-Request-Type } | { Re-Auth-Request-Type } | |||
| [ User-Name ] | [ User-Name ] | |||
| [ Origin-State-Id ] | [ Origin-State-Id ] | |||
| * [ Proxy-Info ] | * [ Proxy-Info ] | |||
| * [ Route-Record ] | * [ Route-Record ] | |||
| [ Session-Group-Capability-Vector ] | [ Session-Group-Capability-Vector ] | |||
| * [ Session-Group-Info ] | * [ Session-Group-Info ] | |||
| [ Group-Response-Action ] | [ Group-Response-Action ] | |||
| * [ AVP ] | * [ AVP ] | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </section> | |||
| </section> | </section> | |||
| <section anchor="sect-7" numbered="true" toc="default"> | ||||
| </section> | <name>Attribute-Value Pairs (AVPs)</name> | |||
| <section title="Attribute-Value-Pairs (AVP)" anchor="sect-7"><figure><art | <table> | |||
| work><![CDATA[ | <name>AVPs for the Diameter Group Signaling</name> | |||
| +--------------------+ | <thead> | |||
| | AVP Flag rules | | <tr> | |||
| +----+---+------+----+ | <th>Attribute Name</th> | |||
| AVP | | |SHOULD|MUST| | <th rowspan="2" colspan="1">AVP Code Value Type</th> | |||
| Attribute Name Code Value Type |MUST|MAY| NOT | NOT| | <th rowspan="1" colspan="4">AVP Flag rules</th> | |||
| +-------------------------------------------------+----+---+------+----+ | </tr> | |||
| |Session-Group-Info TBD1 Grouped | | P | | V | | <tr> | |||
| |Session-Group-Control-Vector TBD2 Unsigned32 | | P | | V | | <th></th> | |||
| |Session-Group-Id TBD3 UTF8String | | P | | V | | <th><bcp14>MUST</bcp14></th> | |||
| |Group-Response-Action TBD4 Unsigned32 | | P | | V | | <th><bcp14>MAY</bcp14></th> | |||
| |Session-Group-Capability-Vector TBD5 Unsigned32 | | P | | V | | <th><bcp14>SHOULD NOT</bcp14></th> | |||
| +-------------------------------------------------+----+---+------+----+ | <th><bcp14>MUST NOT</bcp14></th> | |||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>Session-Group-Info</td> | ||||
| <td>671 Grouped</td> | ||||
| <td></td> | ||||
| <td>P</td> | ||||
| <td></td> | ||||
| <td>V</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Session-Group-Control-Vector</td> | ||||
| <td>672 Unsigned32</td> | ||||
| <td></td> | ||||
| <td>P</td> | ||||
| <td></td> | ||||
| <td>V</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Session-Group-Id</td> | ||||
| <td>673 UTF8String</td> | ||||
| <td></td> | ||||
| <td>P</td> | ||||
| <td></td> | ||||
| <td>V</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Group-Response-Action</td> | ||||
| <td>674 Unsigned32</td> | ||||
| <td></td> | ||||
| <td>P</td> | ||||
| <td></td> | ||||
| <td>V</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Session-Group-Capability-Vector</td> | ||||
| <td>675 Unsigned32</td> | ||||
| <td></td> | ||||
| <td>P</td> | ||||
| <td></td> | ||||
| <td>V</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| AVPs for the Diameter Group Signaling | <section anchor="sect-7.1" numbered="true" toc="default"> | |||
| ]]></artwork> | <name>Session-Group-Info AVP</name> | |||
| </figure> | <t> | |||
| <section title="Session-Group-Info AVP" anchor="sect-7.1"><t> | The Session-Group-Info AVP (AVP Code 671) is of type Grouped. It | |||
| The Session-Group-Info AVP (AVP Code TBD1) is of type Grouped. It | contains the identifier of the session group, as well as an indication | |||
| contains the identifier of the session group as well as an indication | ||||
| of the node responsible for session group identifier assignment.</t> | of the node responsible for session group identifier assignment.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | Session-Group-Info ::= < AVP Header: 671 > | |||
| Session-Group-Info ::= < AVP Header: TBD1 > | ||||
| < Session-Group-Control-Vector > | < Session-Group-Control-Vector > | |||
| [ Session-Group-Id ] | [ Session-Group-Id ] | |||
| * [ AVP ] | * [ AVP ] | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </section> | |||
| </section> | <section anchor="sect-7.2" numbered="true" toc="default"> | |||
| <name>Session-Group-Control-Vector AVP</name> | ||||
| <section title="Session-Group-Control-Vector AVP" anchor="sect-7.2"><t> | <t> | |||
| The Session-Group-Control-Vector AVP (AVP Code TBD2) is of type | The Session-Group-Control-Vector AVP (AVP Code 672) is of type | |||
| Unsigned32 and contains a 32-bit flags field to control the group | Unsigned32 and contains a 32-bit flag field to control the group | |||
| assignment at session-group aware nodes. For defined flags only | assignment at session-group-aware nodes. For defined flags, only | |||
| numeric values that are 2^x (power of two, where 0<=x<32) are allowed.< | numeric values that are 2<sup>x</sup> (power of two, where 0<=x<32) are | |||
| /t> | allowed.</t> | |||
| <t> | ||||
| <t> | ||||
| The following control flags are defined in this document:</t> | The following control flags are defined in this document:</t> | |||
| <t>SESSION_GROUP_ALLOCATION_ACTION (0x00000001) | ||||
| <t>SESSION_GROUP_ALLOCATION_ACTION (0x00000001) | </t> | |||
| <ul empty="true" spacing="normal"> | ||||
| <list><t> | <li> | |||
| This flag indicates the action to be performed for the identified | This flag indicates the action to be performed for the identified | |||
| session. When this flag is set, it indicates that the identified | session. When this flag is set, it indicates that the identified | |||
| Diameter session is to be assigned to the session group as | Diameter session is to be assigned to the session group | |||
| identified by the Session-Group-Id AVP or the session's assignment | identified by the Session-Group-Id AVP or the session's assignment | |||
| to the session group identified in the Session-Group-Id AVP is | to the session group identified in the Session-Group-Id AVP is | |||
| still valid. When the flag is cleared, the identified Diameter | still valid. When the flag is cleared, the identified Diameter | |||
| session is to be removed from at least one session group. When | session is to be removed from at least one session group. When | |||
| the flag is cleared and the Session-Group-Info AVP identifies a | the flag is cleared and the Session-Group-Info AVP identifies a | |||
| particular session group in the associated Session-Group-Id AVP, | particular session group in the associated Session-Group-Id AVP, | |||
| the session is to be removed solely from the identified session | the session is to be removed solely from the identified session | |||
| group. When the flag is cleared and the Session-Group-Info AVP | group. When the flag is cleared and the Session-Group-Info AVP | |||
| does not identify a particular session group (Session-Group-Id AVP | does not identify a particular session group (Session-Group-Id AVP | |||
| is absent), the identified Diameter session is to be removed from | is absent), the identified Diameter session is to be removed from | |||
| all session groups to which it has been previously assigned. | all session groups to which it has been previously assigned. | |||
| </t> | </li> | |||
| </list></t> | </ul> | |||
| <t>SESSION_GROUP_STATUS (0x00000010) | ||||
| <t>SESSION_GROUP_STATUS (0x00000010) | ||||
| <list><t> | </t> | |||
| <ul empty="true" spacing="normal"> | ||||
| <li> | ||||
| This flag indicates the status of the session group identified in the | This flag indicates the status of the session group identified in the | |||
| associated Session-Group-Id AVP. The flag is set when the identified | associated Session-Group-Id AVP. The flag is set when the identified | |||
| session group has just been created or is still active. If the flag is | session group has just been created or is still active. If the flag is | |||
| cleared, the identified session group is deleted and the associated | cleared, the identified session group is deleted and the associated | |||
| Session-Group-Id is released. If the Session-Group-Info AVP does not | Session-Group-Id is released. If the Session-Group-Info AVP does not | |||
| include a Session-Group-Id AVP, this flag is meaningless and MUST be | include a Session-Group-Id AVP, this flag is meaningless and <bcp14>MUST</ bcp14> be | |||
| ignored by the receiver. | ignored by the receiver. | |||
| </t> | </li> | |||
| </list></t> | </ul> | |||
| </section> | ||||
| </section> | <section anchor="sect-7.3" numbered="true" toc="default"> | |||
| <name>Session-Group-Id AVP</name> | ||||
| <section title="Session-Group-Id AVP" anchor="sect-7.3"><t> | <t> | |||
| The Session-Group-Id AVP (AVP Code TBD3) is of type UTF8String and | The Session-Group-Id AVP (AVP Code 673) is of type UTF8String and | |||
| identifies a group of Diameter sessions.</t> | identifies a group of Diameter sessions.</t> | |||
| <t> | ||||
| <t> | The Session-Group-Id <bcp14>MUST</bcp14> be globally unique. The Session-Gro | |||
| The Session-Group-Id MUST be globally unique. The Session-Group-Id | up-Id | |||
| includes a mandatory portion and an implementation-defined portion | includes a mandatory portion and an implementation-defined portion | |||
| delimited by the ";" character. The Session-Group-Id MUST begin with | delimited by the ";" character. The Session-Group-Id <bcp14>MUST</bcp14> beg in with | |||
| the identity of the Diameter node that owns the session group. The | the identity of the Diameter node that owns the session group. The | |||
| remainder of the Session-Group-Id is implementation-defined and MAY | remainder of the Session-Group-Id is implementation defined and <bcp14>MAY</b cp14> | |||
| follow the format recommended for the implementation-defined portion | follow the format recommended for the implementation-defined portion | |||
| of the Session-Id AVP in section 8.8 of <xref target="RFC6733"/>.</t> | of the Session-Id AVP in <xref target="RFC6733" section="8.8" sectionFormat=" | |||
| of" format="default"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="sect-7.4" numbered="true" toc="default"> | ||||
| <section title="Group-Response-Action AVP" anchor="sect-7.4"><t> | <name>Group-Response-Action AVP</name> | |||
| The Group-Response-Action AVP (AVP Code TBD4) is of type Unsigned32 | <t> | |||
| The Group-Response-Action AVP (AVP Code 674) is of type Unsigned32 | ||||
| and contains a 32-bit address space representing values indicating | and contains a 32-bit address space representing values indicating | |||
| how the node SHOULD issue follow up exchanges in response to a | how the node <bcp14>SHOULD</bcp14> issue follow-up exchanges in response to a | |||
| command which impacts multiple sessions. The following values are | command that impacts multiple sessions. The following values are | |||
| defined by this document:</t> | defined by this document:</t> | |||
| <t>ALL_GROUPS (1) | ||||
| <list> | <dl newline="true"> | |||
| <t>Follow up message exchanges associated with a group command should | <dt>ALL_GROUPS (1)</dt> | |||
| <dd>Follow-up message exchanges associated with a group command should | ||||
| be performed with a single message exchange for all impacted | be performed with a single message exchange for all impacted | |||
| groups.</t> | groups.</dd> | |||
| </list></t> | ||||
| <t>PER_GROUP (2) | <dt>PER_GROUP (2)</dt> | |||
| <list> | <dd>Follow-up message exchanges associated with a group command should | |||
| <t>Follow up message exchanges associated with a group command should | ||||
| be performed with a separate message exchange for each impacted | be performed with a separate message exchange for each impacted | |||
| group.</t> | group.</dd> | |||
| </list></t> | <dt>PER_SESSION (3)</dt> | |||
| <dd>Follow-up message exchanges associated with a group command should | ||||
| <t>PER_SESSION (3) | ||||
| <list> | ||||
| <t>Follow up message exchanges associated with a group command should | ||||
| be performed with a separate message exchange for each impacted | be performed with a separate message exchange for each impacted | |||
| session.</t> | session.</dd> | |||
| </list> </t> | </dl> | |||
| </section> | ||||
| <section title="Session-Group-Capability-Vector AVP" anchor="sect-7.5"><t | </section> | |||
| > | <section anchor="sect-7.5" numbered="true" toc="default"> | |||
| The Session-Group-Capability-Vector AVP (AVP Code TBD5) is of type | <name>Session-Group-Capability-Vector AVP</name> | |||
| Unsigned32 and contains a 32-bit flags field to indicate capabilities | <t> | |||
| The Session-Group-Capability-Vector AVP (AVP Code 675) is of type | ||||
| Unsigned32 and contains a 32-bit flag field to indicate capabilities | ||||
| in the context of session-group assignment and group operations. For | in the context of session-group assignment and group operations. For | |||
| defined flags only numeric values that are 2^x (power of two, where | defined flags, only numeric values that are 2<sup>x</sup> (power of two, wher e | |||
| 0<=x<32) are allowed. The value of (0) is reserved.</t> | 0<=x<32) are allowed. The value of (0) is reserved.</t> | |||
| <t> | ||||
| <t> | The following capability is defined in this document:</t> | |||
| The following capabilities are defined in this document:</t> | <t>BASE_SESSION_GROUP_CAPABILITY (0x00000001) | |||
| </t> | ||||
| <t>BASE_SESSION_GROUP_CAPABILITY (0x00000001) | <ul empty="true" spacing="normal"> | |||
| <list> | <li>This flag indicates the capability to support session grouping and | |||
| <t>This flag indicates the capability to support session grouping and | session group operations according to this specification. </li> | |||
| session group operations according to this specification. </t> | </ul> | |||
| </list> | </section> | |||
| </t> | </section> | |||
| <section anchor="sect-8" numbered="true" toc="default"> | ||||
| </section> | <name>Result-Code AVP Values</name> | |||
| <t> | ||||
| </section> | This document does not define new Result-Code <xref target="RFC6733" format=" | |||
| default"/> values for | ||||
| <section title="Result-Code AVP Values" anchor="sect-8"><t> | ||||
| This document does not define new Result-Code <xref target="RFC6733"/> values | ||||
| for | ||||
| existing applications, which are extended to support group commands. | existing applications, which are extended to support group commands. | |||
| Specification documents of new applications, which will have | Documents specifying new applications, which will have | |||
| intrinsic support for group commands, may specify new Result-Codes.</t> | intrinsic support for group commands, may specify new Result-Codes.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-9" numbered="true" toc="default"> | |||
| <name>IANA Considerations</name> | ||||
| <section title="IANA Considerations" anchor="sect-9"><t> | <t> | |||
| 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.</t> | namespaces managed by IANA.</t> | |||
| <section anchor="sect-9.1" numbered="true" toc="default"> | ||||
| <name>AVP Codes</name> | ||||
| <t> | ||||
| IANA has registered the following new AVPs | ||||
| from the "AVP Codes" registry defined in <xref target="RFC6733" format="defau | ||||
| lt"/>. The AVPs are defined in <xref target="sect-7" format="default"/>.</t> | ||||
| <section title="AVP Codes" anchor="sect-9.1"><t> | <ul> | |||
| This specification requires IANA to register the following new AVPs | <li>Session-Group-Info</li> | |||
| from the AVP Code namespace defined in <xref target="RFC6733"/>.</t> | <li>Session-Group-Control-Vector</li> | |||
| <li>Session-Group-Id</li> | ||||
| <t><list style="symbols"><t>Session-Group-Info</t> | <li>Group-Response-Action</li> | |||
| <li>Session-Group-Capability-Vector</li> | ||||
| <t>Session-Group-Control-Vector</t> | </ul> | |||
| <t>Session-Group-Id</t> | ||||
| <t>Group-Response-Action</t> | ||||
| <t>Session-Group-Capability-Vector</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| The AVPs are defined in <xref target="sect-7"/>.</t> | ||||
| </section> | ||||
| <section title="New Registries" anchor="sect-9.2"><t> | ||||
| This specification requires IANA to create two registries:</t> | ||||
| <t><list style="symbols"><t>Session-Group-Control-Vector AVP registry for | ||||
| control bits with | ||||
| two initial assignments, which are described in <xref target="sect-7.2"/>. | ||||
| The | ||||
| future registration assignment policy is proposed to be | ||||
| Specification Required.</t> | ||||
| <t>Session-Group-Capability-Vector AVP with one initial assignment, | ||||
| which is described in <xref target="sect-7.5"/>. The future registration | ||||
| assignment policy is proposed to be Standards Action.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| The AVP names can be used as registry names.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section title="Security Considerations" anchor="sect-10"><t> | </section> | |||
| <section anchor="sect-9.2" numbered="true" toc="default"> | ||||
| <name>New Registries</name> | ||||
| <t> | ||||
| IANA has created the following two new registries.</t> | ||||
| <ul spacing="normal"> | ||||
| <li>The "Session-Group-Control-Vector AVP Values (code 672)" registry | ||||
| for control bits. Two initial assignments are described in <xref target="sect-7. | ||||
| 2" format="default"/>. The registration assignment policy is | ||||
| Specification Required.</li> | ||||
| <li>The "Session-Group-Capability-Vector AVP Values (code 675)" regist | ||||
| ry. One initial assignment is described in <xref target="sect-7.5" format="defau | ||||
| lt"/>. The registration | ||||
| assignment policy is Standards Action.</li> | ||||
| </ul> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="sect-10" numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| <t> | ||||
| The security considerations of the Diameter protocol itself are discussed | The security considerations of the Diameter protocol itself are discussed | |||
| in <xref target="RFC6733"/>. Use of the AVPs defined in this document MUST t ake into | in <xref target="RFC6733" format="default"/>. Use of the AVPs defined in thi s document <bcp14>MUST</bcp14> take into | |||
| consideration the security issues and requirements of the Diameter base | consideration the security issues and requirements of the Diameter base | |||
| protocol. In particular, the Session-Group-Info AVP (including the | protocol. In particular, the Session-Group-Info AVP (including the | |||
| Session-Group-Control-Vector and the Session-Group-Id AVPs) should be | Session-Group-Control-Vector and the Session-Group-Id AVPs) should be | |||
| considered as a security-sensitive AVPs in the same manner than the | considered as a security-sensitive AVP in the same manner as the | |||
| Session-Id AVP in the Diameter base protocol <xref target="RFC6733"/>.</t> | Session-Id AVP in the Diameter base protocol <xref target="RFC6733" format="d | |||
| efault"/>.</t> | ||||
| <t> | <t> | |||
| The management of session groups relies upon the existing trust | The management of session groups relies upon the existing trust | |||
| relationship between the Diameter client and the Diameter server | relationship between the Diameter client and the Diameter server | |||
| managing the groups of sessions. This document defines a mechanism | managing the groups of sessions. This document defines a mechanism | |||
| that allows a client or a server to act on multiple sessions at the | 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 | same time using only one command. If the Diameter client or server | |||
| is compromised, an attacker could launch DoS attacks by terminating | is compromised, an attacker could launch DoS attacks by terminating | |||
| or applying change operations to a large number of sessions with a | or applying change operations to a large number of sessions with a | |||
| limited set of commands using the session group management concept.</t> | limited set of commands using the session group management concept.</t> | |||
| <t> | ||||
| <t> | According to the Diameter base protocol <xref target="RFC6733" format="defaul | |||
| According to the Diameter base protocol <xref target="RFC6733"/>, transport | t"/>, transport | |||
| connections between Diameter peers are protected by TLS/TCP, DTLS/ | connections between Diameter peers are protected by TLS/TCP, DTLS / | |||
| SCTP or alternative security mechanisms that are independent of | Stream Control Transmission Protocol (SCTP), or alternative security mechanis | |||
| ms that are independent of | ||||
| Diameter, such as IPsec. However, the lack of end-to-end security | Diameter, such as IPsec. However, the lack of end-to-end security | |||
| features makes it difficult to establish trust in the session group | features makes it difficult to establish trust in the session-group-related | |||
| related information received from non-adjacent nodes. Any Diameter | information received from non-adjacent nodes. Any Diameter | |||
| agent in the message path can potentially modify the content of the | agent in the message path can potentially modify the content of the | |||
| message and therefore the information sent by the Diameter client or | message and therefore the information sent by the Diameter client or | |||
| the server. There is ongoing work on the specification of end-to-end | the server. There is ongoing work on the specification of end-to-end | |||
| security features for Diameter. Such features would enable the | security features for Diameter. Such features would enable the | |||
| establishment of trust relationship between non-adjacent nodes and | establishment of a trust relationship between non-adjacent nodes, and | |||
| the security required for session group management would normally | the security required for session group management would normally | |||
| rely on this end-to-end security. However, there is no assumption in | rely on this end-to-end security. However, there is no assumption in | |||
| this document that such end-to-end security mechanism will be | this document that such end-to-end security mechanism will be | |||
| available. It is only assumed that the solution defined on this | available. It is only assumed that the solution defined on this | |||
| document relies on the security framework provided by the Diameter | document relies on the security framework provided by the Diameter-based prot | |||
| based protocol.</t> | ocol.</t> | |||
| <t> | ||||
| <t> | In some cases, a Diameter Proxy Agent can act on behalf of a client | |||
| 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 | |||
| or server. In such a case, the security requirements that normally | apply to a client (or a server) apply equally to the Proxy Agent.</t> | |||
| apply to a client (or a server) apply equally to the Proxy agent.</t> | </section> | |||
| </middle> | ||||
| </section> | <back> | |||
| <references> | ||||
| <section title="Acknowledgments" anchor="sect-11"><t> | <name>Normative References</name> | |||
| The authors of this document want to thank Ben Campbell and Eric | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.211 | |||
| McMurry for their valuable comments to early versions of this draft. | 9.xml"/> | |||
| Furthermore, authors thank Steve Donovan and Mark Bales for the | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.817 | |||
| thorough review and comments on advanced versions of the WG document, | 4.xml"/> | |||
| which helped a lot to improve this specification.</t> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.673 | |||
| 3.xml"/> | ||||
| </section> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.715 | |||
| 5.xml"/> | ||||
| </middle> | </references> | |||
| <section anchor="sect-a" numbered="true" toc="default"> | ||||
| <back> | <name>Session Management -- Exemplary Session State Machine</name> | |||
| <references title="Normative References"> | <section anchor="sect-a.1" numbered="true" toc="default"> | |||
| &RFC2119; | <name>Use of Groups for the Authorization Session State Machine</name> | |||
| &RFC8174; | <t> | |||
| &RFC6733; | <xref target="RFC6733" sectionFormat="of" section="8.1" format="default"/> de | |||
| &RFC7155; | fines a set of finite state machines that | |||
| </references> | represent the life cycle of Diameter sessions, which must be | |||
| <section title="Session Management -- Exemplary Session State Machine" an | ||||
| chor="sect-a"><section title="Use of groups for the Authorization Session State | ||||
| Machine" anchor="sect-a.1"><t> | ||||
| Section 8.1 in <xref target="RFC6733"/> defines a set of finite state machine | ||||
| s, | ||||
| 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, as example, additional state | application. This section defines, for example, additional state | |||
| transitions related to the processing of the group commands which may | transitions related to the processing of the group commands that may | |||
| impact multiple sessions.</t> | impact multiple sessions.</t> | |||
| <t> | ||||
| <t> | The group membership is a session state, and therefore only those state | |||
| The group membership is session state and therefore only those state | machines from <xref target="RFC6733" format="default"/> in which the server i | |||
| machines from <xref target="RFC6733"/> in which the server is maintaining ses | s maintaining session | |||
| sion | state are relevant in this document. | |||
| state are relevant in this document. As in <xref target="RFC6733"/>, the ter | As in <xref target="RFC6733" format="default"/>, the term | |||
| m | 'service-specific' below refers to a message defined in a Diameter | |||
| Service-Specific below refers to a message defined in a Diameter | application (e.g., Mobile IPv4 or NASREQ).</t> | |||
| application (e.g., Mobile IPv4, NASREQ).</t> | <t> | |||
| The following state machine is observed by a client when the state is | ||||
| <t> | maintained on the server. State transitions that are unmodified | |||
| The following state machine is observed by a client when state is | from <xref target="RFC6733" format="default"/> are not repeated here.</t> | |||
| maintained on the server. State transitions which are unmodified | <t> | |||
| from <xref target="RFC6733"/> are not repeated here.</t> | ||||
| <t> | ||||
| The Diameter group command in the following tables is differentiated | The Diameter group command in the following tables is differentiated | |||
| from a single-session related command by a preceding 'G' (Group). A | from a single-session-related command by a preceding 'G' (Group). A | |||
| Group Re-Auth Request, which applies to one or multiple session | Group Re-Auth Request, which applies to one or multiple session | |||
| groups, has been exemplarily described in <xref target="sect-6.1"/>. Such Gr oup | groups, has been exemplarily described in <xref target="sect-6.1" format="def ault"/>. Such Group | |||
| RAR command is denoted as 'GRAR' in the following table. The same | RAR command is denoted as 'GRAR' in the following table. The same | |||
| notation applies to other commands as per <xref target="RFC6733"/>.</t> | notation applies to other commands, as per <xref target="RFC6733" format= | |||
| "default"/>.</t> | ||||
| <figure><artwork><![CDATA[ | <t>Additionally, the following acronyms are used in the tables below.</t> | |||
| CLIENT, STATEFUL | <dl newline="false" spacing="normal"> | |||
| State Event Action New State | <dt>GASR:</dt> | |||
| --------------------------------------------------------------- | <dd>Group-Abort-Session-Request</dd> | |||
| Idle Client or Device Requests Send Pending | <dt>GASA:</dt> | |||
| access service | <dd>Group-Abort-Session-Answer</dd> | |||
| specific | <dt>GSTA:</dt> | |||
| auth req | <dd>Group-Session-Termination-Answer</dd> | |||
| optionally | <dt>GSTR:</dt> | |||
| including | <dd>Group-Session-Termination-Request </dd> | |||
| groups | </dl> | |||
| <table> | ||||
| Open GASR received with Send GASA Discon | <name>Group Authorization Session State Machine for Stateful Client</name> | |||
| Group-Response-Action with | <thead> | |||
| = ALL_GROUPS, Result-Code | <tr> | |||
| session is assigned to = SUCCESS, | <th colspan="4">CLIENT, STATEFUL</th> | |||
| received group(s) and Send GSTR. | </tr> | |||
| client will comply with | <tr> | |||
| request to end the session | ||||
| Open GASR received with Send GASA Discon | ||||
| Group-Response-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 | ||||
| Group-Response-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 | <th>State</th> | |||
| client will not comply with with | <th>Event</th> | |||
| request to end all session Result-Code | <th>Action</th> | |||
| in received group(s) != SUCCESS | <th>New State</th> | |||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| Discon GSTA Received Discon. Idle | <td>Idle</td> | |||
| user/device | <td>Client or Device Requests access</td> | |||
| <td> Send | ||||
| service-specific | ||||
| authorization req | ||||
| optionally | ||||
| including | ||||
| groups</td> | ||||
| <td>Pending</td> | ||||
| </tr> | ||||
| <tr> | ||||
| Open GRAR received with Send GRAA, Pending | <td>Open</td> | |||
| Group-Response-Action Send | <td>GASR received with | |||
| = ALL_GROUPS, service | Group-Response-Action | |||
| session is assigned to specific | = ALL_GROUPS, | |||
| received group(s) and group | session is assigned to | |||
| client will perform re-auth req | received group(s) and | |||
| subsequent re-auth | client will comply with | |||
| request to end the session</td> | ||||
| <td>Send GASA | ||||
| Result-Code | ||||
| = SUCCESS, | ||||
| Send GSTR</td> | ||||
| <td>Discon</td> | ||||
| </tr> | ||||
| Open GRAR received with Send GRAA, Pending | <tr> | |||
| Group-Response-Action Send | <td>Open</td> | |||
| = PER_GROUP, service | <td>GASR received with | |||
| session is assigned to specific | Group-Response-Action | |||
| received group(s) and group | = PER_GROUPS, | |||
| client will perform re-auth req | session is assigned to | |||
| subsequent re-auth per group | received group(s) and | |||
| client will comply with | ||||
| request to end the session</td> | ||||
| <td>Send GASA | ||||
| with | ||||
| Result-Code | ||||
| = SUCCESS, | ||||
| Send GSTR | ||||
| per group</td> | ||||
| <td>Discon</td> | ||||
| </tr> | ||||
| Open GRAR received with Send GRAA, Pending | <tr> | |||
| Group-Response-Action Send | <td>Open</td> | |||
| = PER_SESSION, service | <td> GASR received with | |||
| session is assigned to specific | Group-Response-Action | |||
| received group(s) and re-auth req | = PER_SESSION, | |||
| client will perform per session | session is assigned to | |||
| subsequent re-auth | received group(s) and | |||
| client will comply with | ||||
| request to end the session</td> | ||||
| <td>Send GASA | ||||
| with | ||||
| Result-Code | ||||
| = SUCCESS, | ||||
| Send STR | ||||
| per session</td> | ||||
| <td>Discon</td> | ||||
| </tr> | ||||
| Open GRAR received and client will Send GRAA Idle | <tr> | |||
| not perform subsequent with | <td>Open</td> | |||
| re-auth Result-Code | <td>GASR received, | |||
| != SUCCESS, | client will not comply with | |||
| Discon. | request to end all sessions | |||
| user/device | in received group(s)</td> | |||
| <td>Send GASA | ||||
| with | ||||
| Result-Code | ||||
| != SUCCESS</td> | ||||
| <td>Open</td> | ||||
| </tr> | ||||
| Pending Successful service-specific Provide Open | <tr> | |||
| group re-authorization answer service | <td>Discon</td> | |||
| received. | <td>GSTA received</td> | |||
| <td>Discon. | ||||
| user/device</td> | ||||
| <td>Idle</td> | ||||
| </tr> | ||||
| Pending Failed service-specific Discon. Idle | <tr> | |||
| group re-authorization answer user/device | <td>Open</td> | |||
| received. | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <t> | ||||
| The following state machine is observed by a server when it is | ||||
| maintaining state for the session. State transitions which are | ||||
| unmodified from <xref target="RFC6733"/> are not repeated here.</t> | ||||
| <figure><artwork><![CDATA[ | <td>GRAR received with | |||
| SERVER, STATEFUL | Group-Response-Action | |||
| State Event Action New State | = ALL_GROUPS, | |||
| --------------------------------------------------------------- | session is assigned to | |||
| received group(s) and | ||||
| client will perform | ||||
| subsequent re-auth</td> | ||||
| <td>Send GRAA, | ||||
| Send | ||||
| service-specific | ||||
| group | ||||
| re-auth req</td> | ||||
| <td>Pending</td> | ||||
| </tr> | ||||
| Idle Service-specific authorization Send Open | <tr> | |||
| request received, and user successful | <td>Open</td> | |||
| is authorized service | <td>GRAR received with | |||
| specific | Group-Response-Action | |||
| answer | = PER_GROUP, | |||
| optionally | session is assigned to | |||
| including | received group(s) and | |||
| groups | client will perform | |||
| subsequent re-auth </td> | ||||
| <td>Send GRAA, | ||||
| Send | ||||
| service-specific | ||||
| group | ||||
| re-auth req | ||||
| per group</td> | ||||
| <td>Pending</td> | ||||
| </tr> | ||||
| Open Server wants to terminate Send GASR Discon | <tr> | |||
| group(s) | <td>Open</td> | |||
| <td>GRAR received with | ||||
| Group-Response-Action | ||||
| = PER_SESSION, | ||||
| session is assigned to | ||||
| received group(s) and | ||||
| client will perform | ||||
| subsequent re-auth</td> | ||||
| <td>Send GRAA, | ||||
| Send | ||||
| service-specific | ||||
| re-auth req | ||||
| per session</td> | ||||
| <td>Pending</td> | ||||
| </tr> | ||||
| Discon GASA received Cleanup Idle | <tr> | |||
| <td>Open</td> | ||||
| <td>GRAR received and client will | ||||
| not perform subsequent | ||||
| re-auth</td> | ||||
| <td>Send GRAA | ||||
| with | ||||
| Result-Code | ||||
| != SUCCESS, | ||||
| Discon. | ||||
| user/device</td> | ||||
| <td>Idle</td> | ||||
| </tr> | ||||
| Any GSTR received Send GSTA, Idle | <tr> | |||
| Cleanup | <td>Pending</td> | |||
| <td>Successful service-specific | ||||
| group re-authorization answer | ||||
| received</td> | ||||
| <td>Provide | ||||
| service</td> | ||||
| <td>Open</td> | ||||
| </tr> | ||||
| Open Server wants to reauth Send GRAR Pending | <tr> | |||
| group(s) | <td>Pending</td> | |||
| <td>Failed service-specific | ||||
| group re-authorization answer | ||||
| received</td> | ||||
| <td>Discon. | ||||
| user/device</td> | ||||
| <td>Idle</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| Pending GRAA received with Result-Code Update Open | <t> | |||
| = SUCCESS session(s) | The following state machine is observed by a server when it is | |||
| maintaining the state for the session. State transitions that are | ||||
| unmodified from <xref target="RFC6733" format="default"/> are not repeated he | ||||
| re.</t> | ||||
| Pending GRAA received with Result-Code Cleanup Idle | <table> | |||
| != SUCCESS session(s) | <name>Group Authorization Session State Machine for Stateful Server</name> | |||
| <thead> | ||||
| <tr> | ||||
| <th colspan="4">SERVER, STATEFUL</th> | ||||
| </tr> | ||||
| <tr> | ||||
| Open Service-specific group Send Open | <th>State</th> | |||
| re-authoization request successful | <th>Event</th> | |||
| received and user is service | <th>Action</th> | |||
| authorized specific | <th>New State</th> | |||
| group | </tr> | |||
| re-auth | </thead> | |||
| answer | ||||
| Open Service-specific group Send Idle | <tbody> | |||
| re-authorization request failed | <tr> | |||
| received and user is service | <td>Idle</td> | |||
| not authorized specific | <td>Service-specific authorization | |||
| group | request received, and user | |||
| re-auth | is authorized</td> | |||
| answer, | <td>Send | |||
| cleanup | successful | |||
| ]]></artwork> | service-specific | |||
| </figure> | answer | |||
| </section> | optionally | |||
| including | ||||
| groups</td> | ||||
| <td>Open</td> | ||||
| </tr> | ||||
| </section> | <tr> | |||
| <td>Open</td> | ||||
| <td>Server wants to terminate | ||||
| group(s)</td> | ||||
| <td>Send GASR</td> | ||||
| <td>Discon</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Discon</td> | ||||
| <td>GASA received</td> | ||||
| <td>Cleanup</td> | ||||
| <td>Idle</td> | ||||
| </tr> | ||||
| </back> | <tr> | |||
| <td>Any</td> | ||||
| <td>GSTR received</td> | ||||
| <td>Send GSTA, Cleanup</td> | ||||
| <td>Idle</td> | ||||
| </tr> | ||||
| </rfc> | <tr> | |||
| <td>Open</td> | ||||
| <td>Server wants to reauth | ||||
| group(s)</td> | ||||
| <td>Send GRAR</td> | ||||
| <td>Pending</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Pending</td> | ||||
| <td>GRAA received with Result-Code | ||||
| = SUCCESS</td> | ||||
| <td>Update session(s)</td> | ||||
| <td>Open</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Pending</td> | ||||
| <td>GRAA received with Result-Code | ||||
| != SUCCESS</td> | ||||
| <td>Cleanup session(s)</td> | ||||
| <td>Idle</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Open</td> | ||||
| <td>Service-specific group | ||||
| re-authorization request | ||||
| received and user is | ||||
| authorized</td> | ||||
| <td>Send | ||||
| successful | ||||
| service-specific | ||||
| group | ||||
| re-auth | ||||
| answer</td> | ||||
| <td>Open</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Open</td> | ||||
| <td>Service-specific group | ||||
| re-authorization request | ||||
| received and user is | ||||
| not authorized</td> | ||||
| <td>Send | ||||
| failed | ||||
| service-specific | ||||
| group | ||||
| re-auth | ||||
| answer, | ||||
| Cleanup</td> | ||||
| <td>Idle</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="sect-11" numbered="false" toc="default"> | ||||
| <name>Acknowledgments</name> | ||||
| <t> | ||||
| The authors of this document want to thank <contact fullname="Ben Campbell"/> | ||||
| and <contact fullname="Eric | ||||
| McMurry"/> for their valuable comments to early draft versions of this docume | ||||
| nt. | ||||
| Furthermore, the authors thank <contact fullname="Steve Donovan"/> and <conta | ||||
| ct fullname="Mark Bales"/> for the | ||||
| thorough review and comments on advanced versions of the WG document, | ||||
| which helped a lot to improve this specification.</t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | ||||
| End of changes. 205 change blocks. | ||||
| 824 lines changed or deleted | 943 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||