Radiator Policy and Charging Support revision history
Revision 2.2 (2018-03-06)
Fixed possible crashes caused by calling unexisting methods and division by zero in OCS when rejecting sessions for disabled subscribers and logging debug information about remaining quota.
Allocations for which credit control is not enabled are marked with empty, instead of zero, service units and allocated quota in DB.
Updated sample SQL files in goodies to include more services and rating groups.
Enhanced service and rating group quota tracking for various infrequent cases. For example, when usage reports are received for unknown allocations.
Clarified the case when quota is allocated for a RG. A request for more quota is always considered as if the client holds no quota for the rating group no matter if the report included service identifier or rating group or both. This also simplifies handling of returned quota reservation when client reports overconsumption while requesting for more quota.
Updated OCS and SQL samples to support rating groups that are free of charge.
OCS now avoids trying to update reservations when units for non-existing reservations are received. This does not change subtracting usage from quota.
Usage reports with zero units are now treated similar to other reports for rating groups. This helps handling cases with zero unit reports for non-existing reservations.
Updated sample SQL queries for OCS: Tcc related queries now work when no UPDATE_REQUEST was ever received for the session. When reservation is released because of Tcc timer expiry, the updated configuration sample does not allow reserved quota to go negative for the subscriber. If subscriber DB returns negative reserved quota for a subscriber, this is now handled as the reservation was 0. These changes address possible but abnormal cases.
Updated sample SQL files for pooled allocations.
See Revision 2.1 below for Radiator version and other prerequisites.
Revision 2.1 (2017-06-21)
Corrected 3GPP-MS-Timezone spelling in DiaDict_3GPP_Rf_Ro.pm to 3GPP-MS-TimeZone.
Multiple fixes and updates to RADIUS PCEF component:
Refactored PCEF code common to Gx and Gy interfaces to a single module. AuthBy DiaGx and AuthBy DiaGy are now based on this PCEF module.
Simplified differences required between RADIUS Accounting and WiMAX PPAQ processing.
Added support for integrating RADIUS Accounting and RADIUS WiMAX PPAQ credit control with OCS over Diameter Gy interface
Added a number of fixes and enahancements to PCEF
Updated PCEF samples and sample configurations
Updated and enhanced logging in PCEF
Added Diameter Destination-Realm to session data kept in SQL. This adds one column to pcef_session SQL table
Added new configuration parameters to PCEFCreditControlClient.pm. This are available to both AuthBy DiaGx and AuthBy DiaGy. DefaultDestinationRealm is an optional parameter that specifies the Diameter Default-Realm to use, if the User-Name does not specify a realm. DestinationRealm is an optional optional parameter that specifies the Diameter Default-Realm to use, regardless of whether the User-Name supplies a realm or not. It also overries the DefaultRealm parameter from DiaPeerDef. Destination-Realm in CCR messages uses DiaPeerDef’s DestinationRealm if the username does not have a realm, but note the override with DestinationRealm configuration parameter.
Fixed bad logic in AuthBy DiaGx for checking unsuccessful Result-Code values.
Updates to RADIUS dynamic authorisation messages generated by PCEF
Updated PCEF Hooks parameter types
Requires Radiator 4.17 or later and Radiator Carrier module
Revision 2.0 (2016-06-16)
The files that are not directly related to Diameter applications were moved to Radiator Carrier module.
Requires Radiator 4.14 or later and Radiator Carrier module
Revision 1.10 (2015-08-17)
Major PCEF and PCRF enhancements, including WiMAX PPAQ (pre-paid accounting) for Radiator PCEF, AuthBy DiaGx.
DiameterTelcoConnection can now call a timeout function if the answer for a request times out. The caller, such as an AuthBy, can supply a timeout callback with send_request().
AuthBy DiaGx now limits the number of outstanding CCRs to one. If RADIUS Accounting-Requests Alive is received while CCA is pending, the quota usage is reported for the session and accounted for when the CCA is received, but no CCR is sent.
In PCEF, if quota used while CCA is pending consumes all CCA returned quota, a new CCR is sent immediately.
If PCEF’s CCA times out, RADIUS Disconnect-Request is sent to the RADIUS client to start orderly termination of RADIUS and Diameter sessions.
PCEF sessions are now correctly marked as closed and terminated when Gx usage monitoring is turned off.
AuthBy DiaPCRF and AuthBy DiaRelay were updated to correctly call send_request() with timeout callback. The timeout callback is currently unset for the both AuthBys but may be added later.
Dynamic authentication requests generated by AuthBy DiaGx now have configuration parameters for including Message-Authenticator, which is not supported by all RADIUS clients, and dynauth identification attributes: DynauthNoMessageAuthenticator and DynauthIdentificationAttr
New AccountingResponseHook is available for modifying Accounting-Response messages sent by AuthBy DiaGx. The accounting responses can return quota for the user sessions if the RADIUS client supports this option.
Accounting Alive messages received by AuthBy DiaGx are now detected and handled more intelligently.
Configuration examples for AuthBy DiaGx were updated.
Updated PCEF session table to include RADIUS attributes State and Acct-Session-Id, metering method (currently WiMAX or RADIUS Accounting), username and WiMAX Quota-Identifier.
Added initial support for WiMAX Prepaid Accounting, WMF-T33-002-R010v05 (2009-03-19). This is also IETF draft draft-lior-radius-prepaid-extensions-22
Added two new configuration paramters in PCEF: MonitoringResponseHook: a Perl function that will be called for Accounting-Responses with RADIUS accounting based monitoring or Access-Requests for WiMAX based prepaid monitoring. ValidityTime: Duration in seconds the quota is valid with WiMAX based monitoring.
AuthDiaGx now checks that Access-Request messages have State or the attribute configured with BindingAttributeAttribute present.
Added Volume-Quota and Volume-Threshold values in human readable form in PCEF debug level messages.
AuthDiaPCRF now supports GxSubIdTypes which defines one or more Subscription-Id-Type values which are allowed in SPR lookups for INITIAL_REQUEST messages. Defaults to END_USER_IMSI
PCRF usage monitoring configuration parameters DefaultOctets and MinOctets can now be overridden by the non-NULL and non-zero values in the subscribers data plan.
Added support for PCRF SQL SPR configuration parameter SubscriberSelectNAI and updated diameter-pcrf.cfg in goodies.
Added default_octets and min_octets in SQL data_plans. DefaultOctets and MinOctets PCRF configuration parameters can now be written by SPR data_plan assigned for the subscriber. Updated pcrf-sqlite.sql and pcrf-mysql.sql in goodies and updated DataPlanSelect in diameter-prcf.cfg.
Added start_time, alive_time and stop_time columns in AuthDiaGx PCEF_SESSION table. Alive timestamp is updated when RADIUS accounting or WiMAX prepaid authorisation messages are received. Updated pcef-sqlite.sql and pcef-mysql.sql in goodies.
Changed PCEF SQL schema to use lower case column names. Updated AuthDiaGx.pm to use lower case column names, table name and upper case SQL keywords. PCEF_SESSION table is now lower case too.
Added new AuthBy DiaGx confguration parameter NoMoreQuotaAction which applies to WiMAX prepaid accounting. When the PCRF has previously allocated quota but stops doing so or allocates an amount that is below QuotaTreshold, the returned WiMAX-PPAQ quota parameters are set to cause session termination. The default is to allow the client stay connected to allow the session throttling with APN-Aggregate-Max-Bitrate-UL and APN-Aggregate-Max-Bitrate-DL parameters. Updated WiMAX-PPAQ Volume-Quota and Volume-Threshold handling in AuthDiaGx.pm to use hexadecimal instead of binary to match the current dictionary defintions.
Added support for RAT specific (for example, WLAN) simultaneous use limits in PCRF. Limits are currently defined for WLAN sessions. The limit is currently defined directly for the subscriber.
Added support in PCRF for RAT specific usage monitoring quotas. Currently implemented for LTE and WLAN RAT types, but can be extended to other types too.
Updated support in PCRF for RAT specific usage monitoring quotas. Multiple RAT types can now be mapped to a single quota name. Multiple quotas were made more general. The target is to allow a session to have quota on based any method such as RAT type or subscriber id type. Currently only RAT type based quota, and default quota, are implemented.
Added support for Release 12 time based usage monitoring in AuthDiaGx.pm. Added CC-Time in DiaDict_16777238.pm. Updated PCEF configuration examples in goodies. New AuthBy DiaGx configuration parameter TimeThreshold controls the threshold when to report time usage. Clarified quota calculation when reports that remain below thresholds are received.
AuthBy DiaGx now supports dynamically choosing the destination NAS for CoA and Disconnect-Request RADIUS dynamic authentication requests. The DynauthSender configuration parameter now supports special characters with %0 replaced with the NAS IP address.
Added Release 12 support for CC-Time in PCRF modules and examples. Usage monitoring can now be done based on time too. Monitoring for the unit type (time or octets) depends on the subscriber entry. If quota type for the unit is defined (e.g., non-NULL in SQL), usage is monitored for the unit type with matching RAT-Type taking precedence over default unit type. New configuration parameters DefaultTime and MinTime added to AuthDiaPCRF. MinOctetsHook parameter was changed to MinUnitsHook and is now called with unit type (time or octets). UsageMonitorInitHook and ThresholdHook now take unit type (time or octets) as parameter. SQL schemas and PCRF configuration example were substantially updated for time based usage monitoring.
Updated PCEF configuration examples with TimeThreshold and DynauthSender special %0 format.
Updated PCRF quota refill trigger to understand different quota types. Quota update calculation now checks that all quota updates were able to allocate time or octets. If quota runs out for time or octets, the other quota allocation is also cancelled and the reserved quotas for the sessions are released.
Updated AuthDiaGx.pm to handle re-authentication better. When a Update-Request with Initial-Request reason for an ongoing sessions is received, the previously received time and octet quota values are added in the request. The quota allocation should then happen with the previously allocated thresholds. Some controllers, notably Huawei, turn of session counters while the client is momentarily off the network. When the client (re-)authenticates, the counters are restarted.
Fixed a divide by zero in OCS debug logging when quota left was 0. Reported by José Calquín.
Updated AuthBy DiaOCS to allow Multiple-Services-Credit-Control VSAs that do not have Service-Identifier but request service units for Rating-Group level only. Requested by José Calquín
Added DiaOCSHooks.pm sample in goodies. Currently contains examples for FinalUnitHook and QuotaUseHook.
Added QuotaUseHook in OCS. This hook is called for each Multiple-Services-Credit-Control attribute which reports used service units. Suggested by José Calquín
OCS now supports FinalUnitHook which is called when Final-Unit-Indication can be returned with Multiple-Services-Credit-Control. Suggested by José Calquín
Revision 1.9 (2015-03-11)
Major PCEF enhancements
Added new configuration parameters QuotaThreshold and ReAuthenticationHook
ReAuthenticationHook is called when an Access-Request is received for a session, as determined by BindingAttribute, that already exists. This is typically RADIUS reauthentication that follows after a CoA-Request triggered by Diameter RAR or out of quota session
DiaPeerDef must be found during the startup or radiusd will not start
APN-Aggregate-Max-Bitrate-UL and -DL values from the PCRF are now saved in the PCEF session database
PCEF session database is now updated with timestamp when PCRF restarts usage monitoring with RAR
BindingAttribute parameter value is now used instead of hardcoded Acct-Session-Id
Updated PCEF database schemas to use BIGINT for bandwidth and octet columns
Tested the system with the latest Cisco WLC based Wi-Fi network
Quota monitoring restart with RAR is now handled by restarting usage monitoring when the next RADIUS Accounting-Update is received
Added configuration parameters BindingAttribute (defaults to Acct-Session-Id), CCAInitialHook, CCAUpdateHook and RARHook. The CCA and RAR hooks are available for changing the default behaviour of CCA and RAR handling
Revision 1.8 (2015-02-16)
Enhancements in AuthDiaGx.pm Change-Of-Authorization handling. All predefined Charging-Rule-Name attributes are now added as Filter-Id attributes in CoA requests. If PCRF does not return octets for usage monitoring, QUOTALEFT is set to NULL in the DB. NULL value for QUOTALEFT means AuthBy DiaGx will not do usage monitoring.
Added DynauthSender configuration parameter in AuthBy DiaGx. Added initial support for more dynamic authorisation options in AuthBy DiaGx.
Added support for passing Protocol (tcp or sctp) in DiameterTelcoConnection.pm new_initiator() constructor. Added Protocol option in DiaPeerDef.pm.
Improvements in PCRF for sending RARs and recovering from errors indicated by RAAs
Modified send_request() in DiameterTelcoConnection to work better with different types of callers
PCRF Quota reservations are now updated in DB when RAR messages for refill trigger are sent. Previously updates were done when success RAA messages were received
Quota allocation for a Gx session now correctly accounts for quota reserved for the other sessions
Major enhancements in Rx support and creating Gx PCC rules for AF flows reported over Rx
Added initial support for converting Rx AAR messages to Gx RAR messages
Enhanced PCRF support for overriding QoS-Information returned with CCAs
RAR messages created by PCRF did not set the Proxiable Diameter message header flag (PXY)
PCRF Gx session database used incorrect session info with CloseSessionQuery
Updated configuration examples. Added goodies/pcef-mysql.sql for using MySQL as a PCEF database.
Revision 1.7 (2014-12-16)
Added generic support for sending RARs from PCRF to PCEF
Added generic support for processing Diameter answers received from any interface supported by PCRF.
PCRF now supports notifications for subscriber quota refill events. The default action is to use a RAR to restore subscriber’s default QoS settings on the PCEF and re-enable usage monitoring.
Rx session database was implemented for SQL backend.
Updates on PCRF Gx and Rx SQL session database. Origin-Realm and Framed IPv4 and IPv6 address information is now stored with session information. Avoided using SQL reserved words for column names.
Gx and Rx session lookups are now done directly with row ids for SQL backend.
SupportedFeatures configuration parameter was renamed to SupportedGxFeatures. Supported for Rx features was added with SupportedRxFeatures configuration parameter.
Multiple enhancements to PCRF default SQL schema. More information is now collected from Gx and Rx sessions
Revision 1.6 (2014-12-09)
PCRF and OCS do not need Subscription-Id in UPDATE_REQUEST and TERMINATION_REQUEST to locate the entry in subscriber database. The subscriber id is now taken from the sesssion database.
Fixed incorrect Origin-Host and Origin-Realm values in PCRF and OCS answers and AutBy DiaGx requests
Added IMSIAttribute to AuthBy DiaGx configuration parameters. Defines the attribute in request that carries the IMSI to use in Gx INITIAL_REQUESTs. Defaults to OSC-SIM-IMSI.
Auth DiaGx does not send TERMINATION_REQUESTs to rejected INITIIAL_REQUESTs
Provided a method in PCRF to set QoS-Information value in CCAs. Useful for example, with hooks
Gx sessions now update change in usage monitor allocation making it easier to process CCRs that do not report used quota while usage monitoring is enabled for the session
PCRF now checks for duplicate Session-Id values in INITIAL_REQUEST similar to OCS
Added new lookup method for PCRF and OCS. Subscriber information can now be looked up based on backend specific identifier, for example, SQL row index.
Added more examples in the default SQL schema
OCS now correctly updates allocations in SQL session database
Added a configuration example showing how to combine EAP-SIM authentication with PCRF based policy control and usage monitoring. This provides the basis for Wi-Fi and 3G/4G/LTE integration.
Revision 1.5 (2014-11-14)
PCRF usage monitoring logging enhancements: more information about used, remaining and reserved quota is now logged
Added to PCRF SQL schema file an example of how to provision a user with usage monitoring and bandwidth limitation
ThresholdHook does not run twice when the remaining quota reaches a configured threshold exactly
Enhanced PCRF configuration example and fixed QoSInfoSelect statement
Allocation-Retention-Priority is now correctly formatted in Gx CCA messages
Revision 1.4 (2014-11-10)
Major changes in PCRF SPR: Most of the SPR information is loaded during server startup and optionally refreshed periodically. This reduces the number of requests to SPR significantly
SPR information schema was expanded to have separate entries for QoS Information and dynamic PCC rules. The SQL example was changed according.
Example SQL file was added for MySQL
Revision 1.3 (2014-10-30)
Numerous changes to PCRF
Minor changes to Gy error handling
Revision 1.2 (2014-09-22)
Major changes to OCS. Parameters to triggers, Tcc timer, quota holding time, session failover and failure handling were added.
Major changes to OCS and PCEF Diameter message handling
Revision 1.1 (2014-07-17)
Major changes to OCS, PCRF and AuthBy DiaGx.
Revision 1.0 (2014-06-06)
First public version. Includes OCS, PCRF, Diameter relay, PCEF for Wi-Fi integration and dictionaries to multiple Diameter applications.
Diameter client-server model in Radiator was enhanced to peer-to-peer model to better suit for Diameter applications that do not have a clear client-server model.