Subject: [AAA-WG]: DCC: issue Wrong multiple services mechanism in Flow X

From: <[email-masked]>
Date: Thu, 12 Feb 2004 18:05:49 +0200

Description of issue: Wrong multiple services mechanism in Flow X
Submitter name: Mark Watson/Chris Richards/Marco Stura/Harri Hakala
Date first submitted: 12.02.2004
Reference: 
Document: draft-ietf-aaa-diameter-cc-02.txt 
Comment type: T 
Priority: 1 
Section: Various 

Rationale/Explanation of issues:

The mechanism in Flow X is affected by all the drawbacks as
described in Issue 16 and should be replaced by the following
flow.

Requested change:

Replace Flow X with the new one hereafter

A.10 Flow X 
    
The Diameter Credit Control Application defines the Multiple-
Services-Credit-Control AVP that can be used to support independent 
credit control of multiple services in a single credit control 
(sub-)session  for service elements that have such capabilities. 
It is possible to request and allocate resources as a credit 
pool that is shared between services or rating groups. 
 
The flow example hereafter illustrates a usage scenario where 
the Credit-control client and server support independent credit 
control of multiple services as defined in section 5.1.1. 
It is assumed that Service-Identifiers, Rating-Groups and their
associated parameters (e.g. IP 5-tuple) are locally configured 
in the Service Element or provisioned by another entity than 
the credit control server.
    
  End-User         Service Element                           CC Server
                      (CC client)                                 
  |(1)User logon      |                                         | 
  |------------------>|(2)CCR(initial, Service-Id access,       |
  |                   |        Access specific AVPs,            |
  |                   |        Multiple-Service-Indicator)      |
  |                   |---------------------------------------->| 
  |                   |(3)CCA(Multiple-Services-CC (            | 
  |                   |        Granted-Units(Total-Octets),     | 
  |                   |        Service-Id access,               |
  |                   |        Validity-time,                   |
  |                   |        G-S-U-Pool-Reference(Pool-Id 1,  |
  |                   |          Multiplier 10)))               |
  |                   |<----------------------------------------|
  :                   :                                         : 
  |(4)Service-Request (Service 1)                               | 
  |------------------>|(5)CCR(update, Multiple-Services-CC(     | 
  |                   |        Requested-Units(), Service-Id 1, |
  |                   |        Rating-Group 1))                 |
  |                   |---------------------------------------->|
  |                   |(6)CCA(Multiple-Services-CC (            | 
  |                   |        Granted-Units(Time),             | 
  |                   |        Rating-Group 1,                  |
  |                   |        G-S-U-Pool-Reference(Pool-Id 1,  |
  |                   |          Multiplier 1)))                |
  |                   |<----------------------------------------|
  :                   :                                         : 
  |(7)Service-Request (Service 2)                               | 
  |------------------>|                                         | 
  :                   :                                         :
  :                   :                                         :
  |(8)Service-Request (Service 3&4)                             | 
  |------------------>|(9)CCR(update, Multiple-Services-CC (    | 
  |                   |        Requested-Units(), Service-Id 3, |
  |                   |        Rating-group 2),                 |
  |                   |        Multiple-Services-CC (           |
  |                   |        Requested-Units(), Service-Id 4, |
  |                   |        Rating-Group 3))                 |
  |                   |---------------------------------------->|
  |                   |(10)CCA(Multiple-Services-CC (           | 
  |                   |        Granted-Units(Total-Octets),     | 
  |                   |        Service-Id 3, Rating-group 2,    |
  |                   |        Validity-time,                   |
  |                   |        G-S-U-Pool-Reference(Pool-Id 2,  |
  |                   |          Multiplier 2)),                |
  |                   |        Multiple-Services-CC (           | 
  |                   |        Granted-Units(Total-Octets),     | 
  |                   |        Service-Id 4, Rating-group 3     |
  |                   |        Validity-time,                   |
  |                   |        Final-Unit-Ind.(Terminate),      |
  |                   |        G-S-U-Pool-Reference(Pool-Id 2,  |
  |                   |          Multiplier 5)))                |
  |                   |<----------------------------------------|
  :                   :                                         : 
  :                   :                                         : 
  | +--------------+  |                                         | 
  | |Validity time |  |(11)CCR(update,                          | 
  | |expires for   |  |        Multiple-Services-CC (           | 
  | |Service-Id    |  |        Used-Units(In-Octets,Out-Octets),|
  | | access       |  |        Service-Id access))              |
  | +--------------+  |---------------------------------------->|  
  |                   |(12)CCA(Multiple-Services-CC (           |
  |                   |        Granted-Units(Total-Octets),     | 
  |                   |        Service-Id access,               | 
  |                   |        Validity-time,                   |
  |                   |        G-S-U-Pool-Reference(Pool-Id 1,  | 
  |                   |          Multiplier 10)))               |
  |                   |<----------------------------------------| 
  :                   :                                         : 
  :                   :                                         : 
  | +--------------+  |                                         | 
  | |Total Quota   |  |(13)CCR(update,                          | 
  | |elapses for   |  |       Multiple-Services-CC (            | 
  | |pool 2:       |  |        Used-Units(In-Octets,Out-Octets),|
  | |service 4 not |  |        Service-Id 3, Rating-group 2),   |
  | |allowed,      |  |       Multiple-Services-CC (            | 
  | |service 3 cont|  |        Used-Units(In-Octets,Out-Octets),|
  | +--------------+  |        Service-Id 4, Rating-group 3))   |
  |                   |---------------------------------------->|  
  |                   |(14)CCA(Multiple-Services-CC (           |
  |                   |        Result-Code 4011,                | 
  |                   |        Service-Id 3))                   |
  |                   |<----------------------------------------| 
  :                   :                                         : 
  :                   :                                         :  
  |(15) User logoff   |                                         | 
  |------------------>|(16)CCR(term,                            | 
  |                   |       Multiple-Services-CC (            | 
  |                   |        Used-Units(In-Octets,Out-Octets),|
  |                   |        Service-Id access),              |
  |                   |       Multiple-Services-CC (            | 
  |                   |        Used-Units(Time),                |
  |                   |        Service-Id 1, Rating-group 1),   |
  |                   |       Multiple-Services-CC (            | 
  |                   |        Used-Units(Time),                |
  |                   |        Service-Id 2, Rating-group 1))   |
  |                   |---------------------------------------->| 
  |                   |(17)CCA(term)                            | 
  |                   |<----------------------------------------| 
    
  Figure A.10: Independent credit control of multiple services in a
               Credit Control (sub-)Session, flow example. 

The user logs onto the network (1). The Service Element sends a Diameter Credit-Control-Request with CC-Request-Type set to INITIAL_REQUEST to the Diameter credit-control server to perform credit authorization for the bearer service (e.g. internet access service) and to establish a credit control session (2). In this message the credit-control client indicates support for independent credit control of multiple services within the session by including the Multiple-Service-Indicator AVP. The Diameter credit-control server checks the end user's account balance, based on the rating information received from the client (i.e. Service-Id and access specific AVPs) rates the request and reserves credit from the end user's account. Say the server reserves $5 and determines the cost is $1/MB. It then returns to the service element a Credit-Control-Answer message that include the Multiple-Services-Credit-Control AVP with a quota of 5MB associated to the Service-Id (access), to a multiplier value of 10 and to the Pool-Id 1 (3). 

The user uses Service 1 (4). The service element sends a Diameter Credit-Control-Request with CC-Request-Type set to UPDATE_REQUEST to the credit control server to perform credit authorization for service 1 (5). This message includes the Multiple-Services-Credit-Control AVP to request service units for the Service 1 that belong to Rating-Group 1. The Diameter credit-control server determines that Service 1 draws credit resources from the same account as the access service (i.e. pool 1), based on Service-Id/Rating-Group rates the request and updates the existing reservation by requesting more credit. Say the server reserves $5 more (now the reservation is $10) and determines the cost is $0.1/minutes. The server authorizes the whole Rating-Group, it then returns to the service element a Credit-Control-Answer message that include the Multiple-Services-Credit-Control AVP with a quota of 50min. associated to the Rating-Group 1, to a multiplier value of 1 and to the Pool-Id 1 (6). The client adjusts the total amount of resources for pool 1 according the received quota, which gives M for Pool 1 = 100.

The user uses Service 2 that belongs to the authorized Rating-Group 1 (7). Resources are then consumed from the pool 1.

The user requests now Service 3 and Service 4 as well, that are not authorized (8). The service element sends a Diameter Credit-Control-Request with CC-Request-Type set to UPDATE_REQUEST to the credit control server to perform credit authorization for service 3&4 (9). This message includes two instances of the Multiple-Services-Credit-Control AVP to request service units for the Service 3 that belong to Rating-Group 2 and for the Service 4 that belong to Rating-Group 3. The Diameter credit-control server determines that Service 3&4 draw credit resources from another account (i.e. pool 2), it checks the end user's account balance and based on Service-Ids/Rating-Groups information rates the request and reserve credit from pool 2.
Say the server reserves $5 and determines that Service 3 costs $0.2/MB and Service 4 costs $0.5/MB. The server authorizes only Services 3&4, it then returns to the service element a Credit-Control-Answer message that include two instances of the Multiple-Services-Credit-Control AVP (10). One instance grants a quota of 12.5MB associated to the Service-Id 3, to a multiplier value of 2 and to the Pool-Id 2. The other instance grants a quota of 5MB associated to the Service-Id 4, to a multiplier value of 5 and to the Pool-Id 2.
The server also determines that pool 2 is exhausted and Service 4 is not allowed to continue after these units will be consumed. Therefore the Final-Unit-Indication AVP with action TERMINATE is associated to the Service-Id 4. The client calculates the total amount of resources that can be used for Pool 2 according the received quotas and multipliers, which give M for Pool 2 = 50.

The Validity-Time for the access service expires. The service element sends a Credit-Control-Request message to the server to perform credit re-authorization for Service-Id (access) (11). This message carries one instance of the Multiple-Services-Credit-Control AVP that includes the units used by this service. Say the total amount of used units is 4MB. The client adjusts the total amount of resources for Pool 1 accordingly, which gives M for Pool 1 = 60.
The server deducts $4 from the user's account and updates the reservation by requesting more credit. Say the server reserves $5 more (now the reservation is $11) and already knows the cost of the Service-Id (access) that is $1/MB. It then returns to the service element a Credit-Control-Answer message that include the Multiple-Services-Credit-Control AVP with a quota of 5MB associated to the Service-Id (access), to a multiplier value of 10 and to the Pool-Id 1 (12). The client adjusts the total amount of resources for pool 1 according the received quota, which gives M for Pool 1 = 110.

Services 3&4 consume the total amount of Pool 2 credit resources (i.e. C1*2 + C2*5 >= M). The service element immediately starts the TERMINATE action concerning Service 4 and sends a Credit-Control-Request message with CC-Request-Type set to UPDATE_REQUEST to the credit control server to perform credit re-authorization for Service 3 (13). This message contains two instances of the Multiple-Services-Credit-Control AVP to report the units used by Service 3 and Service 4. The server deducts the last $5 from the user's account (Pool 2) and returns the answer with Result-Code 4011 in the Multiple-Services-Credit-Control AVP to indicate that Service 3 can continue without credit control (14).

The end user logs off from the network (15). To debit the used units from the end user's account and to stop the credit control session, the service element sends a Diameter Credit-Control-Request with CC-Request-Type set to TERMINATION_REQUEST to the credit control server (16). This message contains the units consumed by each of the used services in multiple instances of the Multiple-Services-Credit-Control AVP. The used units are associated with the relevant Service-Identifier and Rating-Group. The Diameter credit-control server debits the used units to the user's account (Pool 1) and acknowledges the session termination by sending a Diameter Credit-Control-Answer to the service element (17).

---

From: <[email-masked]>
Date: Fri, 13 Feb 2004 09:42:50 +0200

Assigned issue 20.

John

> -----Original Message-----
> From: [email-masked] 
> [mailto:[email-masked]]On Behalf Of
> ext 
> Sent: 12 February, 2004 18:06
> To: [email-masked]
> Cc: [email-masked]; [email-masked]; 
> Loughney John
> (Nokia-NRC/Helsinki); [email-masked];
> [email-masked]; Koskinen Juha-Pekka (Nokia-NET/Tampere)
> Subject: [AAA-WG]: DCC: issue Wrong multiple services 
> mechanism in Flow
> X
> 
> 
> The user logs onto the network (1). The Service Element sends 
> a Diameter Credit-Control-Request with CC-Request-Type set to 
> INITIAL_REQUEST to the Diameter credit-control server to 
> perform credit authorization for the bearer service (e.g. 
> internet access service) and to establish a credit control 
> session (2). In this message the credit-control client 
> indicates support for independent credit control of multiple 
> services within the session by including the 
> Multiple-Service-Indicator AVP. The Diameter credit-control 
> server checks the end user's account balance, based on the 
> rating information received from the client (i.e. Service-Id 
> and access specific AVPs) rates the request and reserves 
> credit from the end user's account. Say the server reserves 
> $5 and determines the cost is $1/MB. It then returns to the 
> service element a Credit-Control-Answer message that include 
> the Multiple-Services-Credit-Control AVP with a quota of 5MB 
> associated to the Service-Id (access), to a multiplier value 
> of 10 and to the Pool-Id 1 (3). 
> 
> The user uses Service 1 (4). The service element sends a 
> Diameter Credit-Control-Request with CC-Request-Type set to 
> UPDATE_REQUEST to the credit control server to perform credit 
> authorization for service 1 (5). This message includes the 
> Multiple-Services-Credit-Control AVP to request service units 
> for the Service 1 that belong to Rating-Group 1. The Diameter 
> credit-control server determines that Service 1 draws credit 
> resources from the same account as the access service (i.e. 
> pool 1), based on Service-Id/Rating-Group rates the request 
> and updates the existing reservation by requesting more 
> credit. Say the server reserves $5 more (now the reservation 
> is $10) and determines the cost is $0.1/minutes. The server 
> authorizes the whole Rating-Group, it then returns to the 
> service element a Credit-Control-Answer message that include 
> the Multiple-Services-Credit-Control AVP with a quota of 
> 50min. associated to the Rating-Group 1, to a multiplier 
> value of 1 and to the Pool-Id 1 (6). The client adjusts the 
> total amount of resources for pool 1 according the received 
> quota, which gives M for Pool 1 = 100.
> 
> The user uses Service 2 that belongs to the authorized 
> Rating-Group 1 (7). Resources are then consumed from the pool 1.
> 
> The user requests now Service 3 and Service 4 as well, that 
> are not authorized (8). The service element sends a Diameter 
> Credit-Control-Request with CC-Request-Type set to 
> UPDATE_REQUEST to the credit control server to perform credit 
> authorization for service 3&4 (9). This message includes two 
> instances of the Multiple-Services-Credit-Control AVP to 
> request service units for the Service 3 that belong to 
> Rating-Group 2 and for the Service 4 that belong to 
> Rating-Group 3. The Diameter credit-control server determines 
> that Service 3&4 draw credit resources from another account 
> (i.e. pool 2), it checks the end user's account balance and 
> based on Service-Ids/Rating-Groups information rates the 
> request and reserve credit from pool 2.
> Say the server reserves $5 and determines that Service 3 
> costs $0.2/MB and Service 4 costs $0.5/MB. The server 
> authorizes only Services 3&4, it then returns to the service 
> element a Credit-Control-Answer message that include two 
> instances of the Multiple-Services-Credit-Control AVP (10). 
> One instance grants a quota of 12.5MB associated to the 
> Service-Id 3, to a multiplier value of 2 and to the Pool-Id 
> 2. The other instance grants a quota of 5MB associated to the 
> Service-Id 4, to a multiplier value of 5 and to the Pool-Id 2.
> The server also determines that pool 2 is exhausted and 
> Service 4 is not allowed to continue after these units will 
> be consumed. Therefore the Final-Unit-Indication AVP with 
> action TERMINATE is associated to the Service-Id 4. The 
> client calculates the total amount of resources that can be 
> used for Pool 2 according the received quotas and 
> multipliers, which give M for Pool 2 = 50.
> 
> The Validity-Time for the access service expires. The service 
> element sends a Credit-Control-Request message to the server 
> to perform credit re-authorization for Service-Id (access) 
> (11). This message carries one instance of the 
> Multiple-Services-Credit-Control AVP that includes the units 
> used by this service. Say the total amount of used units is 
> 4MB. The client adjusts the total amount of resources for 
> Pool 1 accordingly, which gives M for Pool 1 = 60.
> The server deducts $4 from the user's account and updates the 
> reservation by requesting more credit. Say the server 
> reserves $5 more (now the reservation is $11) and already 
> knows the cost of the Service-Id (access) that is $1/MB. It 
> then returns to the service element a Credit-Control-Answer 
> message that include the Multiple-Services-Credit-Control AVP 
> with a quota of 5MB associated to the Service-Id (access), to 
> a multiplier value of 10 and to the Pool-Id 1 (12). The 
> client adjusts the total amount of resources for pool 1 
> according the received quota, which gives M for Pool 1 = 110.
> 
> Services 3&4 consume the total amount of Pool 2 credit 
> resources (i.e. C1*2 + C2*5 >= M). The service element 
> immediately starts the TERMINATE action concerning Service 4 
> and sends a Credit-Control-Request message with 
> CC-Request-Type set to UPDATE_REQUEST to the credit control 
> server to perform credit re-authorization for Service 3 (13). 
> This message contains two instances of the 
> Multiple-Services-Credit-Control AVP to report the units used 
> by Service 3 and Service 4. The server deducts the last $5 
> from the user's account (Pool 2) and returns the answer with 
> Result-Code 4011 in the Multiple-Services-Credit-Control AVP 
> to indicate that Service 3 can continue without credit control (14).
> 
> The end user logs off from the network (15). To debit the 
> used units from the end user's account and to stop the credit 
> control session, the service element sends a Diameter 
> Credit-Control-Request with CC-Request-Type set to 
> TERMINATION_REQUEST to the credit control server (16). This 
> message contains the units consumed by each of the used 
> services in multiple instances of the 
> Multiple-Services-Credit-Control AVP. The used units are 
> associated with the relevant Service-Identifier and 
> Rating-Group. The Diameter credit-control server debits the 
> used units to the user's account (Pool 1) and acknowledges 
> the session termination by sending a Diameter 
> Credit-Control-Answer to the service element (17).
> 
>