Diameter resource adaptors
There are currently 2 Diameter Ro Resource Adaptor Entities in Sentinel VoLTE:
-
diameterro-0— for OCS connections -
diameter-sentinel-internal— used as a message factory by mappers in Sentinel’s Diameter mediation layer.
diameterro-0 and diameter-sentinel-internal are used by all Sentinel services.
Session timeouts
The default Sentinel configuration has a 10 minute timeout for diameterro-1 (client) and 13 minute timeout for diameterro-0 (OCS). This configuration ensures that if there are events dropped due to overload, the ActivityEndEvents fired on the RA entities will cause the client side to end first. The 3 minute gap is set to allow time for all the ActivityEndEvents on the client side to be delivered before any are fired on the OCS side due.
Diameter version configuration
The Diameter version spoken on the network to either the OCS or the Diameter client can be configured by setting two properties in the relevant resource adaptor.
To change the version used in the OCS dialog, diameterro-0 should be reconfigured. Likewise, to change the version used on the client dialog (Sentinel Diameter only), diameterro-1 should be reconfigured. The Diameter version used by diameter-sentinel-internal should not be reconfigured, as it is tied to the internal implementation of Sentinel.
When reconfiguring the Diameter version of either of the external resource adaptors, two fields must be set - Slee3GPPVersion and 3GPPVersion.
Slee3GPPVersion should always be set to Vcb0. This is the version of Diameter used by Sentinel internally.
3GPPVersion can be set to the desired protocol version to be used over the network, ranging from V820 to Vcb0.
Alternatively, the Diameter version spoken to the OCS can be set during installation.
OCS load balancing
Load balancing of OCS connections can be achieved using the diameterro-0 resource adaptor entity, by configuring multiple hosts within a realm and addressing messages to the realm only (not the host).
Example configuration for OCS load balancing
This example shows the diameterro-0 resource adaptor entity configured to load balance across two OCS nodes.
-
The resource adaptor entity config properties show that it is configured using a profile in the
DiameterConfigtable. -
The config profile shows that the known OCS nodes are named
diameterserveranddiameterserver1. -
The routing priority metric for both nodes is set to 1 to indicate equal priority, meaning that load balancing will be applied.
-
The
DiameterMediationOcsConfigurationTableconfiguration profile at platform scope does not specify a host, so all outbound Diameter messages will not have the destination host set, but only the realm. This means the resource adaptor entity will round robin among all the hosts configured for the specified realm (in this caseopencloud). However this behaviour can be overridden on a per-session basis by setting theOCSIdfield in session state using, for example,SubscriberDataLookupor a custom feature added with the SDK.
The following rhino-console session shows the complete configuration:
[Rhino@localhost (#0)] listraentityconfigproperties diameterro-0
Configuration properties for resource adaptor entity diameterro-0:
3GPPVersion (java.lang.String): Vcb0
BaseMessageApplicationID (java.lang.Integer): 0
CertificateKeyStore (java.lang.String):
CertificateKeyStorePassword (java.lang.String):
CipherSuites (java.lang.String):
ConfigurationProfile (java.lang.String): DiameterConfig/DiameterRoOcsProfile
ConfigurationProfilePollTime (java.lang.Integer): 0
ConnectTimeout (java.lang.Long): 30000
ExtendedTransportConfiguration (java.lang.String):
ExtensionAvpSet (java.lang.String): DiameterExtensions/Charging
ExtensionAvpSetPollTime (java.lang.Integer): 0
ExtensionMessages (java.lang.Boolean): true
FireToServiceID (java.lang.String):
ForceReconnectAfterDPR (java.lang.Boolean): true
IOClientWorkers (java.lang.Integer): 0
IOServerWorkers (java.lang.Integer): 0
Quirks (java.lang.String):
ReconnectDelay (java.lang.Long): 5000
RequestTimeout (java.lang.Long): 2000
SSLSessionTimeout (java.lang.Integer): 0
ServiceContextId (java.lang.String): session@opencloud.com
SessionTimeout (java.lang.Long): 780000
SupportedVendorIds (java.lang.String):
ThreadPoolSize (java.lang.Integer): 0
TrustKeyStore (java.lang.String):
TrustKeyStorePassword (java.lang.String):
WatchdogTimeout (java.lang.Long): 30000
WorkQueueSize (java.lang.Integer): 0
slee-vendor:com.opencloud.rhino_max_activities (java.lang.Integer): 0
slee-vendor:com.opencloud.rhino_replicate_activities (java.lang.String): none
[Rhino@localhost (#1)] listprofileattributes DiameterConfig DiameterRoOcsProfile
Action=LOCAL
AllowUnknownPeers=true
ApplicationId=0
ApplicationVendorId=0
EnableMultiNodeConfig=false
Host=diameterclient
ListenAddress={null}
NodeIDs={null}
PeerAddress=127.0.0.1
PeerConnectAtStartup=true
PeerHost=diameterserver
PeerPort=3868
PeerTable=<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE peer-table PUBLIC "-//Open Cloud Ltd.//DTD Diameter Peer Table Configuration 1.1.0//EN" "http://www.opencloud.com/dtd/diameter-peer-table-1.1.0.dtd">
<peer-table allowUnknownPeers="true">
<!-- If allowUnknownPeers is true, then any peer may connect to this node.
If allowUnknownPeers is not true, peers connecting to this node as clients must be defined in the Peer Table.-->
<peer connectAtStartup="true">
<hostname>diameterserver</hostname> <!-- Will accept connections from this peer -->
<port>3868</port>
<address>127.0.0.1</address>
<tls>false</tls>
<option>
<option-name>TCP_NODELAY</option-name>
<option-type>java.lang.Boolean</option-type>
<option-value>true</option-value>
</option>
</peer>
<peer connectAtStartup="true">
<hostname>diameterserver1</hostname> <!-- Will accept connections from this peer -->
<port>3868</port>
<address>192.168.2.100</address>
<tls>false</tls>
<option>
<option-name>TCP_NODELAY</option-name>
<option-type>java.lang.Boolean</option-type>
<option-value>true</option-value>
</option>
</peer>
</peer-table>
PeerUri={null}
PerNodeHosts={null}
PerNodeListenAddresses={null}
PerNodePorts={null}
PerNodeSecondaryAddresses={null}
Port=3869
Product=OpenCloud Diameter
ProductVendorId=19808
Realm=opencloud
RealmTable=<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE realm-table PUBLIC "-//Open Cloud Ltd.//DTD Diameter Realm Table Configuration 1.1//EN"
"http://www.opencloud.com/dtd/diameter-realm-table-1.1.dtd">
<realm-table>
<realm>
<realm-name>opencloud</realm-name>
<application-route>
<application>
<application-id>4</application-id> <!-- 4=CCA -->
<vendor-id>0</vendor-id> <!-- optional, default is zero -->
</application>
<action>LOCAL</action>
<peer-ref>
<hostname>diameterserver</hostname>
<metric>1</metric>
</peer-ref>
<peer-ref>
<hostname>diameterserver1</hostname>
<metric>1</metric>
</peer-ref>
</application-route>
</realm>
<default-route>
<peer-ref>
<hostname>diameterserver</hostname>
<metric>1</metric>
</peer-ref>
<peer-ref>
<hostname>diameterserver1</hostname>
<metric>1</metric>
</peer-ref>
</default-route>
</realm-table>
SecondaryAddresses={null}
Transports=tcp
UseTLS=false
ValidDN={null}
Version=1
[Rhino@localhost (#2)] listprofileattributes DiameterMediationOcsConfigurationTable UNSET::::
DestinationHost={null}
DestinationRealm=opencloud
TimeoutDuration=2000
