Overview
The default option for Registrar Data Storage uses Transparent Data in the HSS through the Diameter Sh interface. Documents stored in the HSS conform to an OpenCloud defined XML schema.
How it works
The HSS storage system creates, updates and removes documents from the HSS as appropriate based on SIP User Agent registration life cycle, catering for cases such as simultaneous registration of shared IMS public identities.
Documents are created/updated/removed using an access of an IMS Public Identity and Service Indication of opencloud-3rd-party-registrar
.
During INVITE processing, the IMSIDLookup feature uses the Served User’s IMS Public Identity and Service Indication of opencloud-3rd-party-registrar
as the Diameter Sh Access Key.
It then populates Session State according to documents found in HSS storage. Both the HSS storage system, and the IMSIDLookup use the Sh Cache Microservice RA to interface to the HSS.
Data Schema
The schema used by OpenCloud for Third Party Registration is shown below.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://opencloud.com/sentinel/registrar/xml"
xmlns:ss="http://opencloud.com/sentinel/registrar/xml"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0"
>
<xs:element name="publicId">
<!--
Use an anonymous type so xjc will add an XmlRootElement to the generated PublicId class.
-->
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="registration" type="ss:RegistrationData"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="reverseMapping" type="ss:ReverseMapping"/>
</xs:sequence>
<xs:attribute default="false" name="default" type="xs:boolean" use="optional"/>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="EsrvccData">
<xs:sequence>
<xs:element name="cmsisdn" type="xs:string"/>
<xs:element name="gruu" type="xs:string"/>
<xs:element name="tempGruu" type="xs:string"/>
<xs:element name="stnSr" type="xs:string"/>
<xs:element name="isUeSrvccCapable" default="false" type="xs:boolean"/>
<xs:element name="currentAtuSti" type="xs:string"/>
<xs:element name="atcfMgmtUri" type="xs:string"/>
<xs:element name="atcfPathUri" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ReverseMapping">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="validityTime" type="ss:ValidityTime"/>
</xs:sequence>
<xs:attribute name="callId" type="xs:string" use="required"/>
<xs:attribute name="defaultPublicId" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="Extension">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="key" type="xs:string"/>
<xs:element maxOccurs="1" minOccurs="1" name="value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Extensions">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="extension" type="ss:Extension"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="RegistrationData">
<xs:sequence>
<xs:element name="privateId" type="xs:string"/>
<xs:element maxOccurs="unbounded" name="publicIds" type="xs:string"/>
<xs:element maxOccurs="unbounded" name="contact" type="xs:string"/>
<xs:element name="validityTime" type="ss:ValidityTime"/>
<xs:element name="visitedNetworkId" type="xs:string"/>
<xs:element maxOccurs="unbounded" name="pAccessNetworkInfo" type="xs:string"/>
<xs:element maxOccurs="1" minOccurs="0" name="esrvcc" type="ss:EsrvccData"/>
<xs:element maxOccurs="1" minOccurs="0" name="extensions" type="ss:Extensions"/>
</xs:sequence>
<xs:attribute name="callId" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="ValidityTime">
<xs:sequence>
<xs:element name="created" type="xs:dateTime"/>
<xs:element name="expires" type="xs:duration"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Statistics
The statistics are updated during the processing of the feature.
Parameter | … incremented if … |
---|---|
failedToAddRegistrationData |
Could not add a registration. |
failedToAddReverseMappings |
Could not decode the registration data. |
failedToRemoveRegistrationData |
Could not remove the registration data. |
failedToRemoveReverseMappings |
Could not remove the decoder for the registration data. |
noDataToRemoveForDefaultPubicIdAndCallId |
No registration found under the specified callid. |
noDataToRemoveForDefaultPublicId |
No registration foung undet the specified public id. |
noMappingToRemoveForPubicIdAndCallId |
Could not find any mapping associated to the specified callid. |
noMappingToRemoveForPublicId |
Could not find any mapping associated to the specified public id. |
For Third Party Registration, the statistics are tracked by the sentinel.registrar SBB and can be found using the parameter set
SLEE-Usage.Services.ServiceID[name=sentinel.volte.sip,vendor=OpenCloud,version=4.1].SbbID[name=registrar.subscribers.hsscache,vendor=OpenCloud,version=4.1]