This is a preliminary document outlining how MMS charging is to be implemented using Diameter and MM9 in the NowSMS MMSC. It also describes a test program that is used to validate proper Diameter configuration parameters and charging behaviour.
The MMSC implements Diameter Credit Control for charging based upon the following specifications:
- [DIAMBASE] – RFC 3588 – Diameter Base Protocol
- [DIAMCCA] – RFC 4006 – Diameter Credit Control Application
- [3GPPDIAM] – 3GPP TS 32.299 – 3GPP Diameter Charging Applications
[3GPPDIAM] defines a standard format for implementing MMS charging over Diameter, known as MM9 in the MMS protocol specifications. While the MMSC preference is to use MM9, it is also possible to configure the MMSC to use generic charging primitives defined in [DIAMCCA] in order to facilitate interoperability with a wider base of charging systems.
The MMSC will generate two different Diameter requests, which are described in detail in this document.
Capabilities-Exchange-Request is used to initiate the connection and identify that the connection is to be used for Diameter Credit-Control. In response, the MMSC expects to receive a Capabilities-Exchange-Answer that contains a Result-Code of 2001 to indicate success.
Credit-Control-Request is used to provide details for an MMS charging operation. In response, the MMSC expects to receive a Capabilities-Exchange-Answer that contains a Result-Code of 2001 to indicate success. The MMSC will reject the MMS submission if any other Result-Code is received.
Capabilities-Exchange-Request | AVP Code | Protocol | Usage Notes |
< Diameter Header > | DIAMBASE | Command-code = 257, REQ | |
{Origin-Host} | 264 | DIAMBASE | Configurable – Local Origin-Host name associated with MMSC |
{Origin-Realm} | 296 | DIAMBASE | Configurable – Local Origin-Realm name associated with MMSC |
{Host-IP-Address} | 257 | DIAMBASE | Configurable – Local IP address associated with MMSC |
{Vendor-ID} | 266 | DIAMBASE, 3GPPDIAM | Value is 10415, the Vendor-ID value defined for 3GPP extensions in 3GPPDIAM |
{Product-Name} | 269 | DIAMBASE | Value is MMSC |
{Auth-Application-ID} | 258 | DIAMBASE, DIAMCCA | Value is 4, as specified in DIAMCCA |
{Acct-Application-ID} | 259 | DIAMBASE | Value is 0 |
Credit-Control-Request | AVP Code | Protocol | Usage Notes |
< Diameter Header > | DIAMBASE | Command-code = 272, REQ, Application-ID = 4 | |
{Session-Id} | 263 | DIAMCCA | Dynamically generated |
{Origin-Host} | 264 | DIAMBASE | Configurable – Local Origin-Host name associated with MMSC |
{Origin-Realm} | 296 | DIAMBASE | Configurable – Local Origin-Realm name associated with MMSC |
[Destination-Host] | 293 | DIAMBASE | Optional – Destination-Host name associated with charging server |
{Destination-Realm} | 283 | DIAMBASE | Configurable – Destination-Realm name associated with charging server |
{Auth-Application-Id} | 258 | DIAMBASE, DIAMCCA | Value is 4, as defined in DIAMCCA |
{Service-Context-Id} | 461 | DIAMCCA, 3GPPDIAM | Configurable – Default value is 32270@3gpp.org as defined in 3GPPDIAM to indicate MMS charging.
When using generic DIAMCCA, other values may be required, such as SCAP_V.2.0@ericsson.com for Ericsson’s SCAP. |
{CC-Request-Type} | 416 | DIAMCCA | Value is EVENT_REQUEST |
{CC-Request-Number} | 415 | DIAMCCA | Value is currently 0.Note that other values may be used in the future. |
[Event-Timestamp] | 55 | DIAMBASE | Time of Charging Request |
{Subscription-Id} | 443 | DIAMCCA | Group AVP contains Subscription-Id-Data and Subscription-Type.
Subscription-Id-Data: MSISDN of the account (including country code). Subscription-Type: Value is 0 (END_USER_E164)
|
{Requested-Action} | 436 | DIAMCCA | Value is 0 (DIRECT_DEBITING) |
[3GPP-MS-TimeZone] | 23 | 3GPPDIAM | Value indicates the time-zone of the MMSC. Parameter flag is set as optional, meaning the server can ignore if it does not understand this parameter.
This parameter has been found to be required by some charging servers. |
[3GPP-SGSN-MCC-MNC] | 18 | 3GPPDIAM | Optionally included only if available to the MMSC, the SGSN MCC-MNC value can be used to detect roaming subscribers. See Operator MMSC Accounting – Detecting Roaming Subscribers |
[SGSN-ADDRESS] | 1228 | 3GPPDIAM | Optionally included only if available to the MMSC, the IP Address of the SGSN can be used to detect roaming subscribers. See Operator MMSC Accounting – Detecting Roaming Subscribers |
[Service-Identifier] | 439 | DIAMCCA | Optional integer value. |
[Requested-Service-Unit]
[CC-Money] [Unit-Value] [Value-Digits] [Exponent] [Currency-Code] [CC-Service-Specific-Units] |
437
413 445 432 429 425 417 |
DIAMCCA | Optional. Used only if generic DIAMCCA charging is being used.
DIAMCCA allows for either a fixed price (with ISO 4217 numeric currency code, e.g., USD=840, EUR=978) or a fixed service specific integer value associated with a Service-Identifier. MMSC will generate these fields if corresponding Requested-Service values are specified. In the case of CC-Money, MMSC expects a decimal format value and will generate Value-Digits and Exponent as appropriate. (For example, CC-Money = 0.25 generates Value-Digits = 25 and Exponent = -2.) |
[Service-Information]
[MMS-Information] [Originator-Address] [Address-Type] [Address-Data] [Recipient-Address] [Address-Type] [Address-Data] [Submission-Time] [MM-Content-Type] [Type-Number] [Content-Size] [Message-ID] [Message-Type] [Message-Size] [Message-Class] [Class-Identifier] |
723
727 886 899 897 1201 899 897 1202 1203 1204 1206 1210 1211 1212 1213 1214 |
3GPPDIAM | Contains grouped AVP values containing information about the MMS message, including originator and recipient.
Parameter flag is set as optional, meaning the server can ignore if it does not understand this parameter. In that case, generic DIAMCCA Requested-Service-Unit parameters of money or units should be used. |
MM9Test Program
The MM9Test program is used to test and validate proper configuration parameters and charging behaviour by initiating a Diameter connection and sending a charging request for a single MMS message. The latest version of this program can be downloaded at http://www.nowsms.com/download/mm9test.zip.
The MM9Test program generates the two Diameter requests detailed in this document: Capabilities-Exchange-Request and Credit-Control-Request.
MM9TEST.EXE is a command line program. When run, MM9TEST.EXE will prompt for the following Diameter related configuration parameters:
(Remote) Diameter Server Host Name or IP Address – The DNS host name or IP address of the Diameter Server that will receive the connection.
(Remote) Diameter Server Port Number – The port number for the Diameter server that will receive the connection.
(Remote) Diameter Destination-Host – The Destination-Host parameter to be specified in the Diameter requests.
(Remote) Diameter Destination-Realm – The Destination-Realm parameter to be specified in the Diameter requests.
(Local/Origin) Diameter Host-IP-Address – The IP address of the local host. This is a required property for the Capabilities-Exchange-Requst.
(Local) Diameter Origin-Host – The Origin-Host parameter to be specified in the Diameter requests.
(Local) Diameter Origin-Realm – The Origin-Realm parameter to be specified in the Diameter requests.
Service-Context-Id (optional) – See Credit-Control-Request for parameter definition. Default is 32270@3gpp.org as defined in [3GPPDIAM] to indicate MMS charging.
Service-Identifier (optional, leave black for standard MM9) – See Credit-Control-Request for parameter definition.
Requested-Service-Unit CC-Service-Specific-Units (optional, leave black for standard MM9) – See Credit-Control-Request for parameter definition. If this parameter is used, leave CC-Money and Currency-Code parameters blank.
Requested-Service-Unit CC-Money (optional, use decimal format 1.23) – See Credit-Control-Request for parameter definition. If this parameter is used, leave CC-Service-Specific-Units blank and specify a value for Currency-Code parameter.
Requested-Service-Unit Currency-Code (optional, use ISO 4217 currency code) – See Credit-Control-Request for parameter definition. If this parameter is used, leave CC-Service-Specific-Units blank and specify a value for CC-Money parameter.
MMS Sender Phone Number – MSISDN to be charged for sending MMS message. Used to build Subscription-Id and Originator-Address in Credit-Control-Request.
MMS Recipient Phone Number – MSISDN receiving MMS message. Used to build Recipient-Address in Credit-Control-Request.
3GPP-SGSN-MCC-MNC (optional) – If available to the MMSC, the SGSN MCC-MNC value can be used to detect roaming subscribers. If left blank, or not available, this parameter is not included.
SGSN-ADDRESS (optional) – If available to the MMSC, the SGSN-ADDRESS value can be used to detect roaming subscribers. If left blank, or not available, this parameter is not included.
If successful, the last line of output from the test program will read Diameter Result Code 2001.
Raw Diameter packet information will be logged to MM9TEST.LOG. However, for easier troubleshooting, it is recommended that Wireshark be used to capture and log connection details. Wireshark will decode Diameter protocol information to more clearly report any protocol errors returned, as protocol errors typically relate to not having used the parameter values expected by the Diameter server.