• Add missing FORWARDING_ROLE value to Role-Of-Node AVP for 3GPP Release 12 Ro and Rf. (DIA-602)


  • Fix Mandatory flag for 3GPP AVPs defined in TS 29.061. Changed from MUST to MUSTNOT. (DIA-590)

  • Fix all base Diameter AVPs so they are not sent with the 'P' header bit set. RFC 6733 states that this bit should always be unset. (DIA-559)

  • Add support for new method getConfiguredTGPPVersion() to provider factories for Sh, Ro, Rf and Gx. The return value is a hex string representing the version configured for the resource adaptor entity, irrespective of the version of the provider implementation. (DIA-531)


Note As of release 3.0.0, the Diameter resource adaptors require Rhino 2.4.0 or later.

RFC 6733 Compliance

  • Add support for Capabilities-Update-Request and Capabilities-Update-Answer, defined in RFC 6733 and RFC 6737.

  • Add extension AVPs to all Base Diameter messages.

  • Remove Capabilities-Exchange-Request / Capabilities-Exchange-Answer support from "Open" peer state.

  • Add handling of Vendor-Specific-Application-Id in Capabilities-Exchange-Request.

  • Add new AVPs to Error-Answer message.

  • Add new AVPs to Accounting-Request and Accounting-Answer.

  • Minor change to election process.

  • New SSL/TLS support. Backwards compatibility for TLS support in accordance with RFC 3588 is controlled using AllowTLSDowngradeToRFC3588 configuration parameter.

Other Compliance

  • Add support for 3GPP Rel12. (DIA-491)

  • Add support for multiple Sh UserData schema versions. (DIA-289)

API and deployment changes

  • New Java types have been added for Re-Auth and Abort-Session requests and answers used by credit control applications (Diameter CCA and Ro). SBBs that declare event handlers for these messages will need to use the classes in the org.jainslee.resources.diameter.cca.types package instead of org.jainslee.resources.diameter.base.types. This was done so that the messages contain the correct Application ID for a credit control application. (DIA-339)

  • Diameter message factories now expose methods to encode and decode AVPs to and from byte arrays. (DIA-483)

  • Add support for extension AVPs to all Grouped AVPs. Be aware that adding extension AVPs to a Grouped AVP that does not explicitly specify ABNF line * [AVP] may result in interoperability problems with products that strongly validate the incoming message against the specification. (DIA-479)

  • Diameter MBean name changed to more standard com.opencloud.diameter:type=Entity,name=<entityname>. (DIA-218)

  • Assign static OIDs to Diameter statistics parameters. (DIA-482)



  • Fix permission failures allocating Netty buffers under certain conditions. (DIA-435)

  • Fix handling of retransmissions for Credit Control sessions where CreditControlFailureHandling is set to TERMINATE. (DIA-527)

Version 2.7.0

New Features

  • The Diameter resource adaptors now replicate session state between Rhino cluster nodes, to support failover in the case of a node failure. (DIA-121)

  • Allow user control over failover behavior of client session between peers in the same realm when using realm addressed requests (request that contains Destination-Realm AVP but does not contain Destination-Host AVP). A new realm table configuration element <transport-failover> is introduced, further described in product documentation and diameter-realm-table-1.1.dtd. (DIA-386)

  • Multiple request routing algorithms are now supported for routing outgoing requests using realm addressing (requests that contain Destination-Realm AVP but do not contain Destination-Host AVP). Algorithm can be selected using RequestRouter attribute of Diameter Configuration Profile. (DIA-373)

  • Diameter message header is now initiated to default message header for messages created via the DiameterMessageFactory (previously was null until message was encoded on the wire). This is to allow service control over the "T" (Potentially re-transmitted message) header flag for outgoing requests. (DIA-367)

  • Add support for credit control (RFC 4006) Tcc session supervision timer, configured using ValidityTimeBasedTccTimeout configuration property. (DIA-366)

  • Answers with result code DIAMETER_TOO_BUSY or DIAMETER_UNABLE_TO_DELIVER received on credit control sessions (RFC 4006) are now treated as request timeout. Resulting in possible request retransmission (session failover) to another peer in the same realm if allowed by configuration and realm addressing is used. (DIA-169)


  • Add methods to the Base and Ro resource adaptor types to encode and decode AVPs to and from byte arrays. (DIA-496)

  • Add support for the SCTP_INIT_MAXSTREAMS option to be specified for SCTP associations. (DIA-462)

  • New InitialTerminateDuplicateHandling and LingerOnTerminate configuration properties allow service handling of duplicated credit-control INITIAL and TERMINATED requests (CCA, Ro, Gx resource adaptors). (DIA-410)

  • Allow 3GPP versions to be specified in more friendly form in resource adaptor configuration properties. For example, "10.6.0" can be used instead of "Va60". (DIA-349)

  • When an RA is configured without a realm table, it will generate a realm table containing all the configured peers (with equal metrics). Previously the generated realm table only contained the first peer. (DIA-263)

  • Added support for new methods getLastSendTime() and getLastReceiveTime() available on session activities for Diameter Accounting, CCA, Ro, Rf and Gx. The return value is the timestamp for the last message sent/received on the activity respectively, or 0 if no timestamp is available. (DIA-255)


  • Fix binding of UE-SRVCC-Capability value in Diameter Sh User-Data marshalling. (DIA-520)

  • Use correct value for Application-Id in the header of Re-Auth-Request and Re-Auth-Answer messages when they are sent by Diameter CCA and Ro applications. They now have the value 4 (previously it was 0). The createReAuthRequest and createReAuthAnswer methods on the session types now return a message object with the correct header. The CCA and Ro message factories have new methods called createCcaReAuthRequest and createCcaReAuthAnswer to create the objects directly. (DIA-474)

  • Fix Capabilities-Exchange-Request sent by Diameter Rf resource adaptor. It now contains an Acct-Application-Id AVP with value 3. (DIA-471)

  • Respect "transports" configuration profile attribute in multi-node configurations, to allow values other than the default ("tcp") to be used. (DIA-469)

  • Include Auth-Application-Id AVP in Credit-Control-Answer messages generated by the Diameter CCA, Ro and Gx resource adaptors when an error occurs. Note this does not apply to protocol errors (result codes 3xxx), as those are error answers (the 'E' bit is set) as defined by the Diameter specification. (DIA-460)

  • Correctly handle SCTP associations with peers that limit the number of outbound streams. (DIA-462)

  • The resource adaptors will now respond to incoming Capability-Exchange-Request messages when in the OPEN state. The application IDs will be evaluated as per an initial CER but the connection will remain in the OPEN state regardless of the result code sent in the CEA. (DIA-441)

  • Fix handling of Re-Auth-Request and Abort-Session-Request received on CCA and Ro Credit Control sessions in PendingU state with session replication enabled. This avoids a potential deadlock. (DIA-437)

  • Eliminated a rarely occurring thread deadlock that could happen when external server drops connection while the resource adaptor sends a message to it. (DIA-420)

  • Ensure that SendException is thrown instead of unchecked IllegalStateExceptions when sending messages to a peer that has been disconnected. (DIA-375)

  • Wait for Netty event loop threads to stop when deactivating resource adaptor entities. This prevents a classloader error when undeploying Diameter resource adaptors on Rhino 2.4.0. (DIA-440)

  • Fixed a bug that resulted in peer connection attempts occurring during an SBB downcall under some circumstances, including when a peer’s connectAtStartup flag was set to "false" in the peer table. (DIA-362)

  • The Diameter Sh resource adaptor now behaves correctly when a configuration update occurs that requires the entity to act in a different "mode" (client or server). Previously a node restart was required for the entity to switch to the correct mode. (DIA-417)

  • Fix Tcc credit-control session timer handling for multiple concurrent sessions. (DIA-439)

  • Error answers now contain a Failed-AVP AVP where applicable. (DIA-104)

  • Allow perNodeSecondaryAddresses to not be specified in configuration profile, it is optional. (DIA-363)

  • The resource adaptor type API Javadoc has been restored to the package. (DIA-380)

Version 2.6.0

Note As of release 2.6.0, the Diameter resource adaptors require Java 7.

New Features

  • The resource adaptors now support the SCTP transport. (DIA-148)

  • Add support for 3GPP Rel11 to Diameter Ro, Rf and Gx. (Already supported by Sh.) (DIA-288)

API Changes

  • There is no longer a "default" (unspecified) version of Ro, Rf, Sh and Gx. You must specify a version in the 3GPPVersion resource adaptor config property, use the corresponding method on the provider factory, and use classes in the matching package. (DIA-314)

  • Diameter Sh Rel 11 User-Data XML binding classes now use generated enum classes for their enumerated types. (DIA-330)

  • Diameter Sh 3GPP version 7.1.0 has been removed. (DIA-328)


  • Added a parameter set containing comprehensive statistics about worker threads. (DIA-284)

  • If an unchecked exception occurs while sending a message, it will now be wrapped in a SendException. (Unless the exception is declared in the throws clause.) (DIA-282)

  • The content of OctetString AVPs is now included in the output of the toString() method of a message or grouped AVP. (DIA-230)

  • The synchronous API will now timeout requests (according to the existing RequestTimeout config property) instead of blocking indefinitely. (DIA-265)

  • Update helper classes for Diameter Sh to support the User-Data schema in 3GPP Release 10. (DIA-290)

  • Errors found in the Diameter configuration profile are now reported more clearly. (DIA-331)

  • Diameter Sh User Data bindings now implement toString, equals and hashCode. (DIA-326)

  • Additional permissions have been added to allow keystores to be read from more locations without needing to update the security policy. Keystores can be read from the "keystores" directory under the Rhino base directory or Rhino node directory. (DIA-352)

  • When not using a PeerTable, TCP_NODELAY and SCTP_NODELAY will be added to both incoming and outgoing connections, as appropriate for the transport type. If PeerTable is specified, the options in the <server-child-options> element will be filtered according to the transport type of the incoming connection. (DIA-347)

  • Add an "ExtendedTransportConfiguration" configuration property to all resource adaptors that allows additional Netty settings to be supplied. These are not for general use and should be added only at the recommendation of OpenCloud engineers. (DIA-350)

  • If TLS is used for a peer, that peer must have a valid DN provided (in the <valid-dn> element), as per the Diameter specification. (DIA-355)


  • The Rf, Sh and Gx resource adaptors will now correctly create extension AVPs that have the same AVP code (but different vendor ID) as a standard-defined AVP. (DIA-242)

  • The CCA, Ro and Gx resource adaptors will no longer try to create an activity if the RA is stopping. (DIA-280)

  • The "send" sample statistic is now measured correctly. (DIA-306)

  • The constants for Diameter Sh result codes now include only those listed in the Diameter Sh specification, not all Cx/Dx result codes. (DIA-324)

  • Fixed a bug that prevented the ShData contained in a Subscribe-Notification-Answer from being unmarshaled. (DIA-329)

  • Statistics for instances of the Diameter Sh resource adaptor are now reported correctly. (DIA-332)

  • Diameter stack now respects <host-ip-address> elements in peer tables for SCTP multihoming. This allows SCTP to be restricted to specific interfaces. (DIA-392)

  • Fixed a memory leak that could occur when receiving non-Initial Credit-Control-Request messages for a non-existent session. (DIA-353)

  • Accept Diameter relay application ID (0xffffffff) as a valid Auth-Application-Id in incoming CER messages. (DIA-360)

  • Fix a NullPointerException thrown when sending a CEA in response to a rejected CER. (DIA-361)

  • The Disconnect-Cause in the Disconnect-Peer-Request sent when shutting down has been changed from DO_NOT_WANT_TO_TALK_TO_YOU to REBOOTING. (DIA-376)

  • If the VendorSpecificApplicationId configuration property is set on a Diameter Base resource adaptor, it will now be used to populate the Supported-Vendor-Id and Vendor-Specific-Application-Id AVPs of Capabilities-Exchange-Answer messages. This makes it consistent with how Capabilities-Exchange-Request messages are populated. (DIA-377)

Other Changes

  • The StartServer configuration property has been removed. An entity will operate in server mode if its configuration profile specifies a listen address. (DIA-283)

  • The Diameter Scenario Pack has been removed and will be available as a separate download.

  • Removed "WaitForActivePeers" configuration property from Diameter Sh RA. (DIA-334)

Version 2.5

New Features

  • The Diameter Connectivity Pack now includes a scenario pack for use with the OpenCloud Scenario Simulator (version 2.1 and above). The Scenario Simulator distribution also contains a Diameter scenario pack, but the one in this package may contain additional or updated Diameter protocol specifications. (DIA-272)

  • Add support for updating profile-based configuration while entity is active. (DIA-215)

  • Add support for active reconfiguration of additional configuration properties. (DIA-207)

  • Add support for 3GPP Rel11 to Diameter Sh. (DIA-287)

API Changes

  • Specify the correct AVP types of the following 3GPP Ro AVPs which were previously all defined as OctetString: Application-Server-Id, Application-Service-Type, Application-Session-Id, Delivery-Status, Number-Of-Messages-Successfully-Exploded, Number-Of-Messages-Successfully-Sent, Service-Generic-Information, Total-Number-Of-Messages-Exploded, Total-Number-Of-Messages-Sent. (DIA-271)


  • Update Netty library used by Diameter stack to version 3.5.11. (DIA-239)

  • The component ID and the URL used to deploy the Netty library have been standardised. (DIA-248)

  • Add support for TCP option "tcp-no-delay" to be specified for a peer (affecting client sockets), and "defaultTcpNoDelay" to be specified for a peer table (affecting server sockets). (DIA-225)

  • Add a factory method to create credit control answers without a server session. (DIA-229)

  • Improve error displayed when invalid 3GPP version is specified in the RA configuration. (DIA-209)

  • The simulator scripts now use exec to start the Java process, so they can be stopped more easily in an automated test environment. (DIA-253)

  • Allow incoming RAR and ASR requests to have a header application ID of either 4 or 0 in CCA and Ro resource adaptors. (DIA-231)

  • Handle incoming RAR and ASR messages correctly in CCA and Ro resource adaptors. (DIA-232)

  • Add a configuration property for the application ID used in the header of outgoing RAR/RAA/ASR/ASA messages in CCA and Ro resource adaptors. (DIA-233)


  • Update helper classes for Diameter Sh to support the User-Data schema in 3GPP Release 10. (DIA-290)

  • Restore missing property SessionTimeout to Diameter Ro resource adaptor configuration properties. (DIA-234)

  • Accept RAR/ASR in client PendingU state, and fire an event for them. Also allow RAA/ASA to be sent in this state. This is so the service can handle RAR-CCR collisions. (DIA-217)

  • If a request is received while a CCA or Ro client session is waiting for a CCA-Update, the result code in the error answer is now DIAMETER_UNABLE_TO_COMPLY instead of DIAMETER_UNKNOWN_SESSION_ID. (DIA-228)

  • Fix a bug that prevented extension AVPs from being used. (DIA-236)

  • Timed out Abort-Session-Request and Re-Auth-Request messages will now cause a RequestTimeout event to be fired. (DIA-244)

  • Fix session timeout check in CCA and Ro resource adaptors. Sessions in PendingU or PendingT state will now only be terminated if the session timeout has elapsed. (DIA-251)

  • If a RAR or ASR is received for an unknown (or terminated) session, the result code in the error answer is now DIAMETER_UNKNOWN_SESSION_ID instead of DIAMETER_COMMAND_UNSUPPORTED. (DIA-252)

  • Add a JAXB permission needed to use Diameter Sh in a Java 7 runtime environment. (DIA-268)

  • Fix a ClassNotFoundException thrown when trying to create an ExtensionAvpProfile entry via REM or Rhino Console. (DIA-216)

Version 2.4

  • When determining values for Host-Ip-Address AVPs in CERs, exclude addresses specified in the peer table if they can’t be found in the interfaces for the host. This allows the configuration to include valid addresses on all hosts (to support cluster configurations). (DIA-204)

  • Fixed a bug where peer connections that were suspended due to watchdog failure never re-enter service after reconnecting. (DIA-193)

  • Add optional SupportedVendorIds configuration property to CCA, Ro, Rf and Base resource adaptors to control the Supported-Vendor-Id AVP in CER and CEA. Multiple values can be specified, separated by commas. (DIA-182)

Version 2.3

  • Add ASR/ASA support to Diameter CCA and Ro RAs.

  • The Vendor-Id AVP in CERs can be configured via the ProductVendorId profile attribute (or the <vendor-id> element in XML configuration).

  • The Host-IP-Address AVPs in CERs can be configured per-peer via multiple <host-ip-address> elements within the <peer> element in the AdvancedTables profile attribute.

  • The configuration property ForceReconnectAfterDPR can be used to always attempt to reconnect even if the server sent a DPR with Disconnect-Cause set to DO_NOT_WANT_TO_TALK_TO_YOU.

  • Resource adaptors now require a license to activate in production Rhino instances.

  • All resource adaptor types, event types and resource adaptors are now version 2.3.

Version 2.2

  • Fix a bug where the 'P' bit was not being set on CCA and Ro message headers.

  • Allow services to specify an optional component to be added to the generated Session-Id.

  • Provide a means for peers to be configured with an optional address for situations where the host cannot be resolved.

  • All resource adaptor types, event types and resource adaptors are now version 2.2.

Version 2.1

  • API changes that require service changes

    • Provider and activity methods no longer throw IOException, they throw the more appropriate SendException and DecodeException.

    • There is a specific event for request timeouts (previously a Diameter answer message was generated with an UNABLE_TO_DELIVER result code and fired as an event).

    • All RA types and RAs except Diameter Base are now version 2.1.

  • Other changes

    • Update Diameter Ro version to V8.2.0.

    • Allow WatchdogTimeout to be configurable.

    • Add RAR/RAA support to Diameter CCA and Ro RAs.

    • Add FireToServiceID configuration property to support SLEE 1.1 Fire-to-Service feature.

    • Major performance and scalability improvements.

    • Save a timestamp as close the network as possible, made available via the activity (can be used by the service to calculate time spent in the Diameter RA).

    • Support round-robin load balancing if peer metrics are all equal, disable using other peers in the event of a failure on one peer if peers metrics are negative.

    • Add support for Diameter CCA and Ro RAs to send and receive extension (non-CCA) messages.

    • Allow extension AVPs on PS-Information AVP in Diameter Ro.

    • Allow extension AVPs on Service-Information in Diameter Ro.

    • Allow empty AVPs for compatibility with certain peers (system property "opencloud.diameter.emptyavp")

    • Don’t fail if an address for a particular AddressType can’t be decoded, just return the byte array instead.

    • Add missing type-specific object creation for new Ro grouped AVPs.

    • Fix Ro-specific Multiple-Services-Credit-Control AVP.

    • Fix some AVP lookup problems related to Vendor-IDs.

    • Fix a bug where stack attempted to send two Answer messages in some error cases — resulted in an exception being printed.

    • End activities on result code 2002 as well as 2001.

Version 2.0

  • Updated all RAs to be compliant with SLEE 1.1 specification.

  • Added support for undefined AVPs, so that AVPs not recognized by the RA can be handled in the application. See org.jainslee.resources.diameter.base.UndefinedAvp.

  • Allow AVPs to be overwritten or removed from messages.

  • Better support for clustered configurations:

    • Allow per-node listen address and Origin-Host configuration.

    • Allow incoming connections from unknown peers.

  • Added an MBean so that management clients can access Diameter RA status information.

Version 1.1

  • Added Diameter Rf RA.

  • Implemented accounting activities and session state machines in Diameter Base RA. → The Diameter Base RA Type and RA Implementation versions have been updated to 1.1 due to this change.

  • It is now possible to configure multiple peers using a profile (previously required a configuration file). → The Profile Specifications versions have been updated to 1.1 due to this change.

  • Fixed a potential deadlock when sending a high volume of requests with disconnected peers.

  • Throw a more informative exception if an SBB tries to use an inactive RA entity.

  • Restore missing Javadoc package that documents the Diameter Sh User Data API.

  • Change paths used to import properties in build scripts to make them more portable.

Version 1.0

  • First release.