CUDB LDAP Interwork Description

Contents

1Introduction
1.1Scope
1.2Revision Information
1.3Target Groups
1.4Typographic Conventions

2

Overview

3

CUDB Data Model Description
3.1CUDB Main Directory Information Tree
3.2CUDB Application Counters Directory Information Tree
3.3CUDB Root Entry
3.4CUDB LDAP Users and Groups
3.5Identity Data
3.6Multi Service Consumer and Association Data
3.7MSC Common Data
3.8Service Common Data
3.9LDAP Views

4

Attributes and Object Classes
4.1Attributes
4.2Object Classes
4.3Operational Attributes
4.4Limitations

5

CUDB DIT Entries
5.1CUDB Admin Entry
5.2Identities Container Entry
5.3Multi Service Consumer Container Entry
5.4Associations Container Entry
5.5Multi Service Consumer Common Data Container Entry
5.6Service Common Data Container Entry

6

Operations
6.1CUDB Shortcut in Search for Authentication Data
6.2Performing LDAP Search Below the Distributed Entry
6.3Error Codes

Glossary

Reference List

1   Introduction

This document describes the Ericsson reference data model for the basic and initial data maintained in the Ericsson Centralized User Database (CUDB). This document provides a detailed description of Lightweight Directory Access Protocol (LDAP) objects, classes, and directory entries including attribute description, format, allowed value range, and the allowed LDAP operations.

1.1   Scope

This document covers the following:

The description of any other application Front End (FE) specific data or internal CUDB data is out of the scope of this document.

1.2   Revision Information

Rev. A This document is based on 1/15519-HDA 104 03/9 with the following changes:

1.3   Target Groups

This document is intended for users working with CUDB LDAP schemas. This document assumes the general knowledge of the LDAP standard.

1.4   Typographic Conventions

Typographic conventions can be found in the following document:

2   Overview

CUDB is the network entity in a layered architecture domain serving as central storage point for application FE data (Home Location Register FE or HLR-FE data, IMS data, and so on).

CUDB is built as LDAP directory server, containing the needed entries and attributes according to the defined schema for the different application FEs.

LDAP is a client-server based directory access protocol that provides both read and update access.

LDAP data information model provides the structures and data types necessary for building an LDAP directory tree.

This document describes the LDAP data provided in the following LDAP schema:

3   CUDB Data Model Description

The following sections describe CUDB data model. For more information on LDAP data model, refer to CUDB LDAP Data Access, Reference [1].

3.1   CUDB Main Directory Information Tree

From LDAP modelling perspective in CUDB, the Directory Information Tree (DIT) is built into the following structures:

Figure 1 shows CUDB LDAP DIT.

Figure 1   CUDB LDAP DIT

CUDB has two built-in distribution entries: MSCs and Associations.

CUDB also defines custom distribution entries. Custom of distribution entries must fulfill the following requirement:

For more information, refer to CUDB Node Configuration Data Model Description, Reference [3].

3.2   CUDB Application Counters Directory Information Tree

CUDB provides read-only access though the LDAP interface to the set of Application Counters (for more information, refer to CUDB Application Counters, Reference [4]) by means of exposing those counters in a separate LDAP DIT:

Figure 2 shows the CUDB Licensing DIT.

Figure 2   CUDB Licensing DIT

The new backend of the LDAP FE for counters fetches the value of the column <Application Counter Name> from the table <Counters Group Name>, and puts it in the generic 'value' LDAP attribute. To fetch a counter value, the following LDAP search operation is used:

An example of an LDAP search operation is shown below:

 # ldapsearch -h pl_2_3 -D "cn=manager,dc=operator,dc=com" -w normal -b "cn=NSUBSCNT,cn=GRP_HLRSUBS,ou=ApplicationCounter" //
-s base # extended LDIF
 #
 # LDAPv3
 # base <cn=NSUBSCNT,cn=GRP_HLRSUBS,ou=ApplicationCounter> with scope baseObject
 # filter: (objectclass=*)
 # requesting: ALL
 #
 # NSUBSCNT, GRP_HLRSUBS, ApplicationCounter
 dn: cn=NSUBSCNT,cn=GRP_HLRSUBS,ou=ApplicationCounter
 objectClass: ApplicationCounter
 cn: NSUBSCNT
 CounterValue: 3924600
 # search result
 search: 2
 result: 0 Success
 # numResponses: 2
 # numEntries: 1

3.3   CUDB Root Entry

The Distinguished Name (DN) and Relative Distinguished Name (RDN) of the CUDB root entry are fully configurable at CUDB installation time.

3.4   CUDB LDAP Users and Groups

For application FEs to access the data stored in CUDB via the LDAP interface, one or more LDAP users must be defined with the corresponding credentials and configuration parameters. Application FEs may bind to the CUDB LDAP interface with one of these users and then send the corresponding LDAP operations to CUDB. Groups of users may optionally be defined to share access control rules between LDAP users. For more information on how LDAP users and LDAP users groups are defined in CUDB, refer to CUDB System Administrator Guide, Reference [5].

Due to the LDAP Data Views function, LDAP users that have an LDAP data view assigned to them can access the data through a custom DIT. Users without an assigned LDAP data view can access the data through the core DIT.

Note:  
The LDAP Data Views function can only be used if the Application Facilitator Value Package is available.

CUDB LDAP users and groups are defined through configuration. For more information, refer to CUDB Node Configuration Data Model Description, Reference [3].

Following are the administration data entries defined in CUDB:

3.5   Identity Data

The different identities used to identify and access subscribers (typically MSC or Association) data are placed under ou=”identities” container level entry.

Following are two types of identity entries depending on how these entries are used as reference to an MSC or an Association:

Figure 3 provides an example of these primary and secondary identity entries.

Figure 3   Primary and Secondary Identity Entries

Following are primary identity data entries defined in CUDB:

Different containers for different types of identities might be defined related to identity data:

Under each different container for the different types of identities alias entries per identity might be defined:

3.6   Multi Service Consumer and Association Data

Specific data for each Multi Service Consumer (MSC) may be placed under different entries identified by the rdn: “mscId = <msc identifier>. Different entries under this level are created for the different services the MSC is being serviced by.

Association data specific entries are identified by the rdn:"assocId=<associdentifier>". Similarly for the MSC's, different entries under this level are created for the different services the MSC is being serviced by.

Figure 4 provides an example of the MSC and association data.

Figure 4   Multi Service Consumer and Association

The following entries are defined in CUDB, related to MSC data:

The following entries are defined in CUDB, related to association data:

Container entries "ou = multiSCs,<CUDB root entry> and "ou = associations, <CUDBroot entry> cannot be deleted since they are parent entries of CUDB Distribution Entries. For more information, refer to the "DEs" section of CUDB LDAP Data Access, Reference [1].

3.7   MSC Common Data

MSC common data contains data that is shared by a group of MSC's. It is placed under container level entry ou = mscCommonData. Different entries under this level are created for the different services which the MSC is being serviced by. Each of these entries is referenced by all the MSC's which share this common data using LDAP alias.

Figure 5 shows an example of MSC common data.

Figure 5   MSC Common Data

The following entries are defined in CUDB:

MSC common data for different services is placed under mscCommonData entry in specific msc common data placed under “serv=<service>,ou=mscCommonData, <CUDB root entry>

3.8   Service Common Data

Service common data contains data that is shared at application FE level. Different entries under this level are created for different services.

Figure 6 shows an example of service common data.

Figure 6   Service Common Data

The following entries are defined in CUDB:

MSC common data for different services can be placed under mscCommonData entry.

3.9   LDAP Views

Note:  
The LDAP Data Views function can only be used if the Application Facilitator Value Package is available.

CUDB supports different LDAP data views in order to support flexible data organization. If an LDAP user has an LDAP view assigned to it, then the user will access the data through that view.

Each LDAP data view has its own LDAP schema loaded into the CUDB, building a custom DIT. It also has a mapping file, which describes how the virtual entries of the specific view are composed from the attributes contained by the core DIT. The CUDB LDAP Data Views function makes it possible to show the data in different DITs accessible through the LDAP interface.

For more information, refer to CUDB LDAP Data Views, Reference [2].

3.9.1   Concepts

The following list contains the concepts used for LDAP views:

4   Attributes and Object Classes

The following sections describe attributes and object classes used in the CUDB.

4.1   Attributes

Table 1 lists the attributes defined by CUDB, both for internal use and the benefit of applications storing data inside CUDB.

Table 1    Attributes

Attribute Name

Description

Attribute Object Identity

Value Range

Example

assocId

It is a directory string type, single-value attribute that identifies an association.

1.3.6.1.4.1.193.169.2.51

1 - 32 characters

"123456@msim.cudb"

CDC

CDC is an LDAP attribute defined in the base CUDB schema (cudb.schema file) which has a customized semantic and especial handling in CUDB for supporting the UDC application FE’s Collection Detection Counter (CDC) mechanism.(1)


Client Applications may have this attribute in LDAP entries to avoid race conditions when several clients access LDAP entries at the same time, such as performing a write operation upon an entry previously read when another LDAP client that changed that very same entry between the read and the write operation by the first client. If both clients use CDC as described below, the first client can assert that no other client touched the entry after it read that entry.


There are two alternative ways to implement collisions detection using the CDC attribute within an entry:


Option 1)


  • Client A reads the LDAP entry, along with its CDC value

  • Client A modifies the LDAP entry and the CDC attribute in the following way:
    - first add several new values (add attribute operation) to the multivalued CDC attribute, with values ranging from <CDC_read_value>+1 to <CDC_read_value>+N, being N a tolerance factor to detect up to N potential changes made by other clients in the time since the read was done.
    LDAP modify operation

    [add/modify/replace/delete operations on attributes belonging to the entry]
    add: CDC: <CDCValueRead>+1

    add: CDC: <CDCValueRead>+2

    ...

    add: CDC: <CDCValueRead>+N (as many as concurrent modifications may occur on the entry)
    - In the same LDAP request, use a modify replace operation on the CDC attribute with <CDC_read_value>+1
    replace: CDC: <CDCValueRead>+1
    - Perform any other add/modify/replace/delete operations in the same LDAP request on attributes in that LDAP entry

  • This LDAP operation will fail if one or more other LDAP clients (up to N) changed the LDAP entry (and the CDC value) between the read and the write operations by client A. The way the LDAP modify operation is evaluated makes the ‘add’ values of CDC fail if CDC already includes any of the values to add (LDAP errorCode=20 attributeOrValueExists). If 1 to N other LDAP clients changed the LDAP entry between the read and the write operations by client A, CDC would also change to a value equal to one of the values in the add operations (<CDC_read_value>+1 to <CDC_read_value>+N) by client A, and the write operation will not succeed

  • If the ‘add’ check passes, the CDC replace operation in the same request will successfully write (one single value) the <CDC_read_value>+1 into the CDC, and the rest of the add/modify/replace operations on the entry will go through.


Option 2)


  • Client A reads the entry, along with its CDC value

  • Client A updates LDAP entry as needed, and at the end of the modify operation, includes a delete attribute operation on the read CDC value.
    LDAP modify operation

    [add/modify/replace/delete operations on attributes belonging to the entry]
    delete: CDC: <CDCValueRead>

  • In the same write requests, a modify replace operation on the CDC attribute is also included with the read CDC value + 1
    replace: CDC: <CDCValueRead>+1

  • This LDAP operation will fail if any other LDAP client changed the entry (and the CDC value) between the read and the write operations by client A. The way that LDAP modify operation is evaluated makes that first it is checked that the CDC includes the value to be deleted. If any client change the CDC to a newer value, then the delete attribute operation on the former value will fail.

  • If the ‘delete’ check passes, the replace operation in the same requests will effectively write the next value of the CDC.


Option 2 is recommended, since it works irrespective of how many other LDAP clients modify the LDAP entry between the read and the write operations by client A, it does not limit the number to N potential CDC changes.


Note also that in both options, the ‘replace’ operation within the LDAP modify/write request that finally sets only one value of the CDC .

1.3.6.1.4.1.193.169.2.102

0-65535

"23"

CounterValue

Identifies the value retrieved from the Application Counters database.

1.3.6.1.4.1.193.169.2.401

1 - 32 characters

"4201337"

CUDBNode

Identifies the CUDB node (needed for LDAP proxy support).

1.3.6.1.4.1.193.169.2.101

Any number identifying a CUDB node. For more information about CUDB node configuration, refer to CUDB Node Configuration Data Model Description, Reference [3].

"1"

DSUnitGroup(2)

It is an IA5 string type, single-value attribute that identifies the DS UnitGroup where the data related to the distribution entry is to be allocated.


In case, the attribute is not included in the add operation, the system would automatically include it with the right value. It should not be modified after the addition of the entry. It has precedence over the ZoneId attribute in case both are included. It has also precedence over a possible distribution algorithm included in a dynamic library overriding the default distribution algorithm. This attribute can be modified when a reallocation procedure is performed. For more information, refer to CUDB Multiple Geographical Areas, Reference [6].

1.3.6.1.4.1.193.169.2.100

Any number identifying a DS Unit Group (DSG) in CUDB.


If the DSG is specified when provisioning, it must be a natural number, with no zeros on the left side.


For more information on configuration of DSG, refer to CUDB Node Configuration Data Model Description, Reference [3].

"1"

ei

It is a directory string type, single-value attribute that identifies an extensible entry.

1.3.6.1.4.1.193.169.2.300

1 - 32 characters

"GPRS"

mscId

It is a directory string type, single-value attribute that identifies the MSC.

1.3.6.1.4.1.193.169.2.52


1 - 32 characters.

"123456"

serv

It is an IA5 string type, single-value attribute that identifies the service.

1.3.6.1.4.1.193.169.2.2

1 - 32 characters

"CSPS"

ZoneId(2)

It is an integer type, single-value attribute that identifies the zone the MSC belongs to.


It should be used with care in search filters to retrieve MSCs stored in a given zone because if the attribute is not included in the add operation of the MSC or if it is modified after the add operation, the results of the query could be misleading. This attribute can be modified when a reallocation procedure is performed. For more information, refer to CUDB Multiple Geographical Areas, Reference [6].

1.3.6.1.4.1.193.169.2.105

0-65535

"1"

(1)  That CDC mechanism to work properly requires that all LDAP clients accessing the entry with CDC attribute use the logic described above. CDC attribute is defined in the schema as a multi-value integer type in order to support providing several values in the LDAP write requests, although one only value is actually written and persistent in the Database. In practical terms it is stored as single-defined but handled as multivalued while processing LDAP requests, therefore it should be defined as multivalued.

(2)  This attribute must be defined in any of the object classes included in the distribution entry.


4.2   Object Classes

An object class identifies a set of attributes in an entry in the DIT. Table 2 shows the object classes used in CUDB.

For more information on syntaxes and matching rules, refer to RFC 4517 LDAP: Syntaxes and Matching Rules, Reference [10].

Table 2    Object Classes

Object Class Name

Description

Object Class Identity

Required Attributes

ApplicationCounter

This structural object class is meant to store the application counter value and name retrieved from the database.

1.3.6.1.4.1.193.169.1.202

cn


CounterValue

Mandatory


Mandatory

CounterGroup

This structural object class is meant to store the name of an application counter group configured in CUDB.

1.3.6.1.4.1.193.169.1.201

cn

Mandatory

CUDBAssociation

It is a structural object class that contains the attributes to handle an association and is included in the ou=”associations” container entry.

1.3.6.1.4.1.193.169.1.12

assocId

Mandatory

ZoneId

Optional

DSUnitGroup

Optional

CUDBCollisionDetection

It is an auxiliary object class that contains an attribute (CDC) to handle collisions when different LDAP clients update the same entry and might be included in any container entry requiring this type of control.

1.3.6.1.4.1.193.169.1.7

CDC

Optional

CUDBdcObject

It is a structural object class that contains the dc attribute used by identities parent entries.

1.3.6.1.4.1.193.169.1.4

dc

Mandatory

CUDBExtensibleObject

It is an auxiliary object class that is used to handle addition of new entries to the current one.

1.3.6.1.4.1.193.169.1.3

ei

Optional

CUDBMultiserviceConsumer

It is a structural object class that contains the attributes to handle an MSC and is included in the ou=”multiSCs” container entry.

1.3.6.1.4.1.193.169.1.11

mscId

Mandatory

ZoneId

Optional

DSUnitGroup

Optional

CUDBService

It is a structural object class that contains an attribute to identify a given service and may be used in entries that contain other object classes all of which are auxiliary.

1.3.6.1.4.1.193.169.1.5

serv

Mandatory

CUDBServiceAuxiliary

It is an auxiliary object class that contains an attribute to identify a given service and may be used in entries that contain an structural object class other than this one.

1.3.6.1.4.1.193.169.1.6

serv

Mandatory

4.3   Operational Attributes

The CUDB LDAP server supports the following operational attributes, which are detailed in Table 3:

For more information about these attributes, refer to RFC 4512 LDAP: Directory Information Models, Reference [11].

Table 3    Operational Attributes

Attribute Name

Description

Attribute Object Identity

Value Range

Value Example

structuralObjectClass

This attribute indicates the structural object class of the entry.

1.3.6.1.4.1.1466.115.121.1.38

Any string identifying an object class

structuralObjectClass: ImsImpu

createTimestamp

This attribute stores the creation time of the entry in UTC format.(1)

1.3.6.1.4.1.1466.115.121.1.24

Any timestamp in GeneralizedTime format

createTimestamp: 20140412050335Z

modifyTimestamp

This attribute stores the time of the last modification of the entry in UTC format. (1) If the entry was never modified, the timestamp will be equal to the value of the createTimestamp attribute.

1.3.6.1.4.1.1466.115.121.1.12

Any timestamp in GeneralizedTime format

modifyTimestamp: 20140329090437Z

(1)  These attributes may not be returned for all entries, check CUDB LDAP Data Access, Reference [1] for more information.


There are also CUDB-specific operational attributes, which are the following:

4.4   Limitations

Following are the limitations on attributes and object classes used in CUDB:

5   CUDB DIT Entries

The following sections describe the predefined entries of the CUDB DIT created at installation time. It also contains entries expected to be created under these predefined entries using LDAP schema.

5.1   CUDB Admin Entry

CUDB admin container entry holds data for different CUDB LDAP users. Table 4 shows the CUDB admin entry.

Table 4    CUDB Admin Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

ou=admin,<CUDBroot entry>

  • top

  • organizationalUnit

ou

Fixed

"admin"

5.2   Identities Container Entry

Identities container entry holds the different identities for the MSC grouped by identity domains. Table 5 shows the identities container entry.

Table 5    Identities Container Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

ou= identities, <CUDB root entry>

  • top

  • organizationalUnit

ou

Fixed

"identities"

5.3   Multi Service Consumer Container Entry

Multi service consumer container entry holds the entries containing data for all the MSCs in CUDB. Table 6 shows the multi service consumer container entry.

Table 6    Multi Service Consumer Container Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

ou= multiSCs,<CUDB root entry>

  • top

  • organizationalUnit

ou

Fixed

"multiSCs"

5.3.1   Multi Service Consumer Data Entry

Multi service consumer data container entry contains an MSC. Different sub-entries under this level are created for the different services which the MSC is being serviced by. Table 7 shows multi service consumer data entry.

Table 7    Multi Service Consumer Data Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

mscId= <mscId>, ou=multiSCs, <CUDB root entry>

  • top

  • CUDBMultiServiceConsumer

mscId

Variable

"123456"

zoneId

Variable

1

DSUnitGroup

Variable

1

5.3.2   Multi Service Consumer Data Service Entry

Multi service consumer data service entry is the container for the service specific related multi service consumer data in CUDB. Table 8 shows multi service consumer data service entry.

Table 8    Multi Service Consumer Data Service Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

serv=<service>,mscId = <mscId>, ou=multiSCs, <CUDB root entry>

  • top

  • CUDBService

serv

Variable

"CSPS"

5.4   Associations Container Entry

Associations container entry is the container for the entries containing data for all the associations in CUDB. Table 9 shows associations container entry.

Table 9    Associations Container Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

ou= associations,<CUDB root entry>

  • top

  • organizationalUnit

ou

Fixed

"associations"

5.4.1   Association Data Entry

Association data entry contains an association. Different sub-entries under this level are created for the different services which the association is being serviced by. Table 10 shows association data entry.

Table 10    Association Data Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

assocId= <assocId>, ou=associations, <CUDB root entry>

  • top

  • CUDBAssociation

assocId

Variable

"123456@msim.cudb"

ZoneId

Variable

"1"

DsUnitGroup

Variable

"1"

5.4.2   Association Data Service Entry

Association data service entry is the container for the service specific related association data in CUDB. Table 11 shows association data service entry.

Table 11    Association Data Service Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

ou= associations,<CUDB root entry>

  • top

  • CUDBService

serv

Variable

"CSPS"

5.5   Multi Service Consumer Common Data Container Entry

Multi service consumer common data container entry is the container for the MSC common data in CUDB. Table 12 shows multi service consumer common data container entry.

Table 12    Multi Service Consumer Common Data Container Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

ou=mscCommonData,<CUDB root entry>

  • top

  • organizationalUnit

ou

Fixed

"mscCommonData"

5.5.1   Multi Service Consumer Common Data Service Entry

Multi service consumer common data service entry is the container for the service specific related service common data in CUDB. Table 13 shows multi service consumer common data service entry.

Table 13    Multi Service Consumer Common Data Service Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

serv=<service>,ou=mscCommonData, <CUDB root entry>

  • top

  • CUDBService/CUDBServiceAuxiliary

serv

Variable

"CSPS"

5.6   Service Common Data Container Entry

Service common data container entry is the container for the service common data in CUDB. Table 14 shows service common data container entry.

Table 14    Service Common Data Container Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

serv=<service>,ou=servCommonData, <CUDB root entry>

  • top

  • organizationalUnit

ou

Fixed

"servCommonData"

5.6.1   Service Common Data Service Entry

Service common data service entry is the container for the service specific related service common data in CUDB. Table 15 shows service common data service entry.

Table 15    Service Common Data Service Entry

Entry Name

Object Class Name

Attributes

Name

Value Type

Value Example

ou=servCommonData,<CUDB root entry>

  • top

  • CUDBService/CUDBServiceAuxiliary

serv

Variable

"CSPS"

6   Operations

The following LDAP operations are used to handle CUDB data:

The LDAP Data Views function uses the following LDAP operations when accessing data using the view:

When accessing data through LDAP data views, special kinds of entries can be used, which are called one-to-one mapped entries.

One-to-one mapped entries are real entries with exactly the same contents as the virtual entries and they can be created, deleted, and their contents modified through views without any restriction other than the ones of a real entry.

Note:  
The LDAP Data Views function can only be used if the Application Facilitator Value Package is available.

There are certain special operations provided by CUDB with respect to standard LDAP operations.

CUDB does not support including the abstract ObjectClass top in LDAP modify operations. The abstract objectClass top in modify operations is optional, according to LDAP RFCs. In such case, CUDB returns the following error:

err=80, msgText=Object class not configured in OBJECT_CLASSES table

Alias de-referencing in LDAP modify operations for primary identities is a non standard behavior offered by CUDB. This behavior implies that the aliases found when resolving the target DN specified in an LDAP modify operation are always de-referenced if the original DN of the object to be modified contains a primary identity.

Following are the examples of alias de-referencing with a DN that contains a primary identity:

A CUDB LDAP modify over those two entries will result in the modification of the two entries being referenced by IMSI=123456789 and MSISDN=346162681 aliases. It means that both, mscId=id and assocId=id are going to be modified through their corresponding aliases, as depicted in Figure 7:

Figure 7   LDAP Modify Operation for Primary Identities

A standard behavior of the LDAP modify would not de-reference, meaning that, in the example above, no modification would take place in mscId=id and assocId=id. In this case the LDAP modify query returns an error saying that the required entry does not exist.

6.1   CUDB Shortcut in Search for Authentication Data

When a search operation is received from any CUDB LDAP client with the baseObject: dn: serv=Auth, IMSI =<IMSInumber>, dc = imsi, ou = identities, <CUDB root entry> and alias dereferencing is equal to "finding" or "always", then the operation is interpreted as if baseObject: dn: IMSI =<IMSInumber>, serv=Auth, IMSI =<IMSInumber>, dc = imsi, ou = identities, <CUDB root entry> was received instead.

The same applies for LDAP modify operations for the above baseObject.

6.2   Performing LDAP Search Below the Distributed Entry

The CUDB subscriber-centric data model (depicted in Figure 1) enables data consolidation by means of storing applications service profiles right below a distribution entry (mscId or asscoId).

Client applications only retrieve the data of their own service profiles (their application data model below serv=<service> entries) and are unaware of other populated profiles created at the same level below the distribution entry.

The CUDB search engine is optimized for the best performance to serve LDAP search operations that target individual entries, by using the distinguished name of the entry as search base object. Use this type of searches for the best performance.

To enhance the performance of LDAP subtree searches, the CUDB search engine implements an index optimization function for those search operations that drill the LDAP DIT down starting from a start base entry and fetch different LDAP entries. For more information, refer to the "LDAP Massive Search Indexes" section in CUDB Application Integration Guide, Reference [8].

To take full advantage of the index search optimization, always set the best possible search base for the LDAP operation, for example at the location in the directory tree from which the LDAP subtree search begins.

As a general recommendation, always start the subtree searches of applications from a serv=<service> entry or any other entry below it as the search base object. In other words, do not use subtree searches starting from the distribution entry, otherwise the scanning of every other service profiles and their child entries can cause significant performance drop.

6.3   Error Codes

CUDB LDAP interface supports the existing LDAP result codes described in the LDAP protocol specifications. For more information, refer to RFC 4511 LDAP: The Protocol, Reference [12].

Table 16 shows the LDAP result codes in CUDB, describing the possible causes for each error and possible actions about how to handle these errors from the client application perspective.

Note:  
The "Description" column is written in order to provide the most common reasons why the corresponding error is received. Note, that this description does not give all the possible problems. The message diagnostic text can provide more specific information about the error.

For additional information on causes due to overload, mastership change, unavailability or unreachability, refer to the following Facility Descriptions:

Table 16    CUDB LDAP Error Codes

Error Code

Description

Code

Possible Actions

3

Time limit exceeded

In addition to the time limit set by the client exceeded, CUDB adds the following cause:


  • Proxy timeout (search) .

  • If the problem is due to proxy timeout, the LDAP client can retry the request.

11

Administrative limit exceeded

In addition to LDAP causes, CUDB also adds the following causes due to administrative limits (size limit and time limit):


  • Maximum number of DS threads that can access to a local DSG replica.

  • Proxy timeout (add, delete, modify).

  • If the problem is due to proxy timeout, the LDAP client can retry the request.

  • If the problem is due to maximum number of threads, slow down application/network/terminal retries for those operations rejected from CUDB with the error 80, to stabilize the system faster.

51

  • Busy

  • Overload or congestion in the processing layer at CUDB node level.

  • Administrative limit exceeded.

  • The LDAP FE or the PLDB in a specific node are receiving high traffic load above their engineered capacity. CUDB node processing layer components implement overload protection mechanisms and reject incoming operations with this error code if they are unable to process them.

  • The maximum number of threads that can access the local PLDB database in an LDAP FE is reached.

  • The probable cause of reaching the maximum number of threads of the PLDB is an overload in the PLDB.

  • There is one unique DSG deployed in a CUDB system and it is overloaded. When the master replica of the unique DSG in the CUDB system is overloaded, the LDAP FE on the same node returns error code 51 directly.

  • The LDAP client can regulate the traffic sent towards the CUDB node until the congestion situation is over (for example, until no more errors than 51 are received).

  • The LDAP client can retry the request (for example in case of provisioning-related requests).

52

  • Unavailable

  • The CUDB node is unavailable to process requests.

The CUDB node has not enough available resources, or a failure occurred in a critical component of the node. The error can be caused by one of the below scenarios:


  • Minority scenarios, where no master replica for any DSG is reachable.

  • Symmetrical Split scenarios, for search operations performed by provisioning users in the side not hosting the master PLDB replica.

  • Reconnect to another CUDB node, that is, execute a failover towards another CUDB node.

53

Unwilling to perform.

  • Queries intended for partition (both PL or DS) where the master is unreachable, or there is no replica available.

  • Single Level and wholeSubtree scopes are not supported in this part of the LDAP tree.

  • Operation is not supported within namingContext.

  • Do not perform immediate and frequent reattempts when this error appears. Try to slow down application, network, or terminal retries as much as possible.

80

  • Other error.

  • Problem in some internal component or resource that prevents it to successfully process the request. Other parts of the system may be operating under normal conditions and return successful responses.

  • Data Store (DS) Unit overloaded.

  • Remote CUDB node overloaded or not responding.

  • Subscriber blocked due to reallocation (temporary error).

  • Ongoing master change (temporary error).

  • Application counters backend is busy.

  • LDAP FE is restarting (temporary error).

  • The possible cause of the error is the temporal unavailability of an internal component, or a temporary internal overload of a specific partition or node. To stabilize the system faster, slow down the application, network, or terminal retries for the operations rejected by CUDB with error 80.

For more information on error codes, refer to CUDB LDAP Data Access, Reference [1].


Glossary

For the terms, definitions, acronyms and abbreviations used in this document, refer to CUDB Glossary of Terms and Acronyms, Reference [9].


Reference List

CUDB Documents
[1] CUDB LDAP Data Access.
[2] CUDB LDAP Data Views.
[3] CUDB Node Configuration Data Model Description.
[4] CUDB Application Counters.
[5] CUDB System Administrator Guide.
[6] CUDB Multiple Geographical Areas.
[7] CUDB High Availability.
[8] CUDB Application Integration Guide.
[9] CUDB Glossary of Terms and Acronyms.
Other Documents and Online References
[10] Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules, RFC 4517 http://www.rfc-editor.org/rfc/rfc4517.txt.
[11] Lightweight Directory Access Protocol (LDAP): Directory Information Models, RFC 4512 http://www.rfc-editor.org/rfc/rfc4512.txt.
[12] Lightweight Directory Access Protocol (LDAP): The Protocol, RFC 4511 http://www.rfc-editor.org/rfc/rfc4511.txt.


Copyright

© Ericsson AB 2016. All rights reserved. No part of this document may be reproduced in any form without the written permission of the copyright owner.

Disclaimer

The contents of this document are subject to revision without notice due to continued progress in methodology, design and manufacturing. Ericsson shall have no liability for any error or damage of any kind resulting from the use of this document.

Trademark List
All trademarks mentioned herein are the property of their respective owners. These are shown in the document Trademark Information.

    CUDB LDAP Interwork Description