1 Introduction
This document describes the Ericsson reference data model for the basic and initial data maintained in the Ericsson Centralized User Database (CUDB), providing a detailed description of Lightweight Directory Access Protocol (LDAP) data model information, such as CUDB directory entries, object and attribute descriptions, formats, and allowed value ranges.
This document also provides an overview of supported LDAP operations and LDAP users that can be used to manage, provision and access the data stored in CUDB.
1.1 Scope
This document covers the following:
This document provides the necessary information and understanding of the basic structures of CUDB data model and how to use the LDAP interface to manage stored data to facilitate the integration of application Front Ends (FEs) data into CUDB.
The description of specific application FE data models or internal-only CUDB data is out of the scope of this document.
1.3 Target Groups
1.4 Typographic Conventions
Typographic Conventions can be found in the following document:
2 Overview
CUDB is the network entity in a layered architecture providing a central data storage point for application FE data (Home Location Register (HLR) FE data, IP Multimedia Subsystem (IMS) data, and so on). Stored data is exposed and accessed through LDAP v3 protocol.
LDAP is a client-server based directory access protocol that provides both read and update access. The 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 schemas:
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.
3.1 CUDB Main Directory Information Tree
In CUDB, from the LDAP data modeling perspective, the upper levels of the Directory Information Tree (DIT) are divided into the following branches:
CUDB Data is distributed across data partitions. To achieve data distribution, CUDB provides a special type of entry, called a Distribution Entry (DE). CUDB DE are regular LDAP entries, but contains additional metadata to store and find the entries and their sub-trees in a given data partition
CUDB, by default, has three built-in DEs, but allows defining custom DEs, if necessary. The build in DEs are MSCs, Associations, and CUDBLockDistribution.
Custom DEs must fulfill the following requirements:
For more information, refer to CUDB Node Configuration Data Model Description.
3.1.1 CUDB Root Entry
3.1.2 CUDB LDAP Users and Groups
For an application FE to access the data stored in CUDB through LDAP interfaces, authentication must be completed before a session is established. Therefore, applications must create or use one or more LDAP users with the corresponding credentials and configuration parameters.
Once the LDAP user has been created, application FEs can bind to the LDAP interface and send LDAP operations to CUDB. Optionally, user groups can be defined to share access control rules. For more information on how LDAP users and LDAP users groups are defined in CUDB, refer to CUDB System Administrator Guide.
LDAP users have additional configuration parameters. Using the LDAP Data Views function, LDAP users are assigned an LDAP data view to access the data through a custom DIT defined for the view. Users without an assigned LDAP data view access the data through the default DIT.
| Note: |
The LDAP Data Views function requires the Application Facilitator
Value Package. |
LDAP users and user groups are defined through configuration. For more information, refer to CUDB Node Configuration Data Model Description.
The administrative data entries defined in CUDB are the following:
3.1.3 Identity Data
Identities are LDAP entries containing a reference to find and access subscriber data, typically MSC or Association, data. Identity entries are placed under ou="identities" container level entry below the CUDB root entry.
There are two types of identity entries, depending on how they reference an MSC or an Association DE.
Figure 2 provides an example of primary and secondary identity entries.
A primary identity data entry, defined in CUDB:
Separate containers for different identity types of identities can be defined based on identity data:
Under each different identity type container, alias entries per identity can be defined:
3.1.4 Multi Service Consumer and Association Data
Specific data for each Multi Service Consumer (MSC) can be placed under separate entries identified by rdn: "mscId = <msc identifier>". Entries under this level are created for the services the MSC uses.
Association data specific entries are identified by rdn:"assocId=<associdentifier>". Similarly to the MSCs, entries under this level are created for the services the MSC uses.
Figure 3 provides an example of the MSC and association data.
The following MSC data entries are defined in CUDB:
The following association data entries are defined in CUDB:
Container entries "ou = multiSCs,<CUDB root entry>" and "ou = associations, <CUDBroot entry>" cannot be deleted, as they are CUDB DE parent entries. For more information, refer to the DEs section of CUDB LDAP Data Access.
3.1.5 MSC Common Data
MSC common data contains data shared by a group of MSCs, placed under the container level entry "ou = mscCommonData". Entries under this level are created for the services the MSC uses. Each entry is referenced by all the MSCs that share this common data using LDAP alias.
Figure 4 shows an example of MSC common data.
The following MSC common data entries are defined in CUDB:
MSC common data for different services is placed under the mscCommonData entry in specific MSC common entry data placed under "serv=<service>,ou=mscCommonData, <CUDB root entry>".
3.1.6 Service Common Data
3.1.7 CUDB Application Counters Directory Information Tree
CUDB provides read-only access though the LDAP interface to the set of Application Counters by exposing those counters in a separate branch in the LDAP DIT:
For more information, refer to CUDB Application Counters.
Figure 6 shows the Application Counters DIT.
The new LDAP FE Back End (BE) 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 -Y CUDB-CRYPTO -h pl_2_3 -U manager -W -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 |
| Note: |
A prompt to enter the LDAP root user password is shown. |
3.1.8 dsgLocks
This LDAP DIT branch is used primarily by the CUDB system to allocate temporarily information during internal CUDB subscribers reallocation procedures. For more information, refer to CUDB Subscription Reallocation. Typically, external client applications do not need to read or modify data on this subtree. The entry has the following format: "ou=dsgLocks,<CUDBroot entry>".
Figure 7 shows an example of the dsgLocks branch.
The following dsgLocks entries are defined in CUDB:
3.2 LDAP Views
| Note: |
The LDAP Data Views requires function the Application Facilitator
Value Package. |
CUDB supports LDAP data views 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 in the CUDB, building a custom DIT and a mapping file, describing how the virtual entries of the specific view are constructed from the core DIT attributes. The CUDB LDAP Data Views allows the data to be shown in different DITs accessible through the LDAP interface.
For more information, refer to CUDB LDAP Data Views.
4 Attributes and Object Classes
The following sections describe CUDB attributes and object classes defined in the default LDAP schema.
4.1 Attributes
Table 1 lists the attributes defined by CUDB, both for internal use and for the applications to store data inside CUDB.
|
Attribute Name |
Description |
Attribute Object Identity |
Value Range |
Example |
|---|---|---|---|---|
|
assocId |
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 |
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 CDC mechanism.(1) |
1.3.6.1.4.1.193.169.2.102 |
0-65535 |
23 |
|
CounterValue |
The value retrieved from the Application Counters database. |
1.3.6.1.4.1.193.169.2.401 |
1 - 32 characters |
4201337 |
|
CUDBNode |
1.3.6.1.4.1.193.169.2.101 |
1 |
||
|
DSUnitGroup (3) |
IA5 string type, single-value attribute identifying the DS UnitGroup where the data related to the DE is to be allocated. If this attribute is not included in an add operation, the system will automatically supply it with the correct value and it should not be modified afterwards. Data Store (DS) UnitGroup has precedence over the ZoneId attribute if both are included and has also precedence over a possible distribution algorithm included in a dynamic library that overrides the default distribution algorithm. This attribute can be modified when a reallocation procedure is performed.(4). |
1.3.6.1.4.1.193.169.2.100 |
Positive Integer identifying a DSG in CUDB. If the DSG is specified when provisioning, it must be a positive integer without any leading zeros.(2) |
1 |
|
ei |
Directory string type, single-value attribute identifying an extensible entry. |
1.3.6.1.4.1.193.169.2.300 |
1 - 32 characters |
GPRS |
|
mscId |
Directory string type, single-value attribute identifying the MSC. |
1.3.6.1.4.1.193.169.2.52 |
1 - 32 characters. |
123456 |
|
serv |
IA5 string type, single-value attribute identifying the service. |
1.3.6.1.4.1.193.169.2.2 |
1 - 32 characters |
CSPS |
|
ZoneId (3) |
Integer type, single-value attribute identifying the zone the MSC belongs to. In MSC-related search filters, this attribute must be used with caution. If the attribute is not included in the add operations of the MSCs or if it was modified after the add operation, search results can be misleading. This attribute can be modified when a reallocation procedure is performed.(4) |
1.3.6.1.4.1.193.169.2.105 |
0-65535 |
1 |
|
dsgId |
IA5 string type, single-value attribute identifying the DSG the entries of which have been locked during the cudbReallocate procedure. |
1.3.6.1.4.1.193.169.2.304 |
3 characters. |
1 |
|
cudbDsgLockedBy |
IA5 string type, single-value attribute identifying the blade that started the cudbReallocate procedure and locked the necessary entries. |
1.3.6.1.4.1.193.169.2.305 |
255 characters |
SC_2_1 |
|
cudbDsgLockedDn |
Attribute indicating distribution entries that have been locked during the cudbReallocate procedure. |
1.3.6.1.4.1.193.169.2.306 |
mscId=1000,ou=multiSCs,<CUDB root entry> |
|
|
expires |
Indicates the date and time when the lock of the CUDBDsgLock entry expires. |
1.3.6.1.4.1.193.169.2.113 |
1-255 |
201707271032Z |
|
cudbBulkTarget |
Special type of add operation that passes multiple LDAP operations at the same time. |
1.3.6.1.4.1.193.169.2.450 |
2 characters |
PL |
|
cudbLdif |
1.3.6.1.4.1.193.169.2.451 |
1-512kB |
Binary ldif stream |
|
|
cudbLdifprov |
1.3.6.1.4.1.193.169.2.452 |
1-512kB |
Binary ldif stream |
4.2 Object Classes
An object class identifies a set of attributes in an entry in the DIT. Table 2 shows the LDAP object classes used in CUDB.
For more information on syntaxes and matching rules, refer to RFC 4517 LDAP: Syntaxes and Matching Rules.
|
Object Class Name |
Description |
Object Class Identity |
Required Attributes |
|
|---|---|---|---|---|
|
ApplicationCounter |
Structural object class storing 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 |
Structural object class storing the name of an application counter group configured in CUDB. |
1.3.6.1.4.1.193.169.1.201 |
cn |
Mandatory |
|
CUDBAssociation |
Structural object class containing the attributes that 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 |
Auxiliary object class containing the CDCattribute. Can be included in any container entry requiring collision control. |
1.3.6.1.4.1.193.169.1.7 |
CDC |
Optional |
|
CUDBdcObject |
Structural object class containing the dc attribute used by identity parent entries. |
1.3.6.1.4.1.193.169.1.4 |
dc |
Mandatory |
|
CUDBExtensibleObject |
Auxiliary object class handling 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 containing the attributes handling 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 |
Structural object class containing an attribute that identifies a service and may be used in entries containing only other auxiliary object classes. |
1.3.6.1.4.1.193.169.1.5 |
serv |
Mandatory |
|
CUDBServiceAxiliary |
Auxiliary object class containing an attribute that identifies a service and may be used in entries containing another structural object class. |
1.3.6.1.4.1.193.169.1.6 |
serv |
Mandatory |
|
CUDBLockDistribution |
Structural object class describing the distribution entry responsible for handling the locked entries of the cudbReallocate procedure. |
1.3.6.1.4.1.193.169.1.301 |
dsgId |
Mandatory |
|
DSUnitGroup |
Mandatory |
|||
|
CUDBDsgLock |
Structural object class describing the entries in the DSG that hold the list of the entries locked for reallocation. |
1.3.6.1.4.1.193.169.1.303 |
cudbDsgLockedBy |
Mandatory |
|
cudbDsgLockedDn |
Optional |
|||
|
expires |
Optional |
|||
|
CUDBBulk |
Structural object class used when reallocating entries in bulk operations. |
1.3.6.1.4.1.193.169.1.450 |
cudbBulkTarget |
Mandatory |
|
cudbLdif |
Optional |
|||
|
cudbLdifprov |
Optional |
|||
4.3 Operational Attributes
The CUDB LDAP server supports the following operational attributes, detailed in Table 3:
For more information about these attributes, refer to RFC 4512 LDAP: Directory Information Models.
|
Attribute Name |
Description |
Attribute Object Identity |
Value Range |
Value Example |
|---|---|---|---|---|
|
structuralObjectClass |
Attribute indicating 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 |
Attribute storing 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 storing the last modification time of the entry in UTC format.(1) If the entry has not been 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 |
The following CUDB-specific operational attributes also exist:
4.4 Limitations
The limitations on attributes and object classes used in CUDB are the following:
5 CUDB DIT Entries
The following sections describe the predefined entries of the CUDB DIT created at installation time. It also contains entries that are expected to be created under the predefined entries using LDAP schema.
5.1 CUDB Admin Entry
5.2 Identities Container Entry
The identities container entry holds the identities for the MSCs grouped by identity domains. Table 5 shows the identities container entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
ou= identities, <CUDB root entry> |
|
ou |
Fixed |
"identities" |
5.3 Multi Service Consumer Container Entry
The MSC container entry holds the entries containing the data for all the MSCs in CUDB. Table 6 shows the MSC container entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
ou= multiSCs,<CUDB root entry> |
|
ou |
Fixed |
"multiSCs" |
5.3.1 Multi Service Consumer Data Entry
The MSC data container entry contains an MSC. Sub-entries under this level are created for the services the MSC uses. Table 7 shows an MSC consumer data entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
mscId= <mscId>, ou=multiSCs, <CUDB root entry> |
|
mscId |
Variable |
"123456" |
|
zoneId |
Variable |
1 |
||
|
DSUnitGroup |
Variable |
1 |
||
5.3.2 Multi Service Consumer Data Service Entry
The MSC data service entry is the container for the service-specific multi service consumer data in CUDB. Table 8 shows an MSC data service entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
serv=<service>,mscId = <mscId>, ou=multiSCs, <CUDB root entry> |
|
serv |
Variable |
"CSPS" |
5.4 Associations Container Entry
The associations container entry is the container for the entries containing data for all the associations in CUDB. Table 9 shows the associations container entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
ou= associations,<CUDB root entry> |
|
ou |
Fixed |
"associations" |
5.4.1 Association Data Entry
An association data entry contains an association. Sub-entries under this level are created for the services the association uses. Table 10 shows an association data entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
assocId= <assocId>, ou=associations, <CUDB root entry> |
|
assocId |
Variable |
"123456@msim.cudb" |
|
ZoneId |
Variable |
"1" |
||
|
DsUnitGroup |
Variable |
"1" |
||
5.4.2 Association Data Service Entry
An association data service entry is the container for the service-specific association data in CUDB. Table 11 shows an association data service entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
serv=CSPS,assocId=<assicId>,ou= associations,<CUDB root entry> |
|
serv |
Variable |
"CSPS" |
5.5 Multi Service Consumer Common Data Container Entry
An MSC common data container entry is the container for MSC common data in CUDB. Table 12 shows an MSC common data container entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
ou=mscCommonData,<CUDB root entry> |
|
ou |
Fixed |
"mscCommonData" |
5.5.1 Multi Service Consumer Common Data Service Entry
An MSC common data service entry is the container for the service-specific service common data in CUDB. Table 13 shows an MSC common data service entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
serv=<service>,ou=mscCommonData, <CUDB root entry> |
|
serv |
Variable |
"CSPS" |
5.6 Service Common Data Container Entry
A service common data container entry is the container for the service common data in CUDB. Table 14 shows service a common data container entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
serv=<service>,ou=servCommonData, <CUDB root entry> |
|
ou |
Fixed |
"servCommonData" |
5.6.1 Service Common Data Service Entry
A service common data service entry is the container for the service specific related service common data in CUDB. Table 15 shows a service common data service entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
ou=servCommonData,<CUDB root entry> |
|
serv |
Variable |
"CSPS" |
5.7 dsgLocks Container Entry
The dsgLocks container entry is the container for the entries containing data for all of the cudbReallocate locking entries. Table 16 shows thedsgLocks container entry
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
ou=dsgLocks,<CUDB root entry> |
|
ou |
Fixed |
"dsgLocks" |
5.7.1 dsgLocks Data Entry
A dsgLocks data entry contains a dsgId where the entries holding the distribution entries that are locked during the cudbReallocate procedure will be placed. Table 17 shows a dsgLocks data entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
dsgId=<dsgId>,ou=dsgLocks,<CUDB root entry> |
|
dsgId |
Variable |
1 |
|
DSUnitGroup |
Variable |
1 |
||
5.7.2 dsgLocks Data Distribution Entry
A dsgLocks data distribution entry contains information about the distribution entries locked by the specified blade. Table 18 shows a dsgLocks data distribution entry.
|
Entry Name |
Object Class Name |
Attributes |
||
|---|---|---|---|---|
|
Name |
Value Type |
Value Example |
||
|
cudbDsgLockedBy=<processId>,dsgId=1,ou=dsgLocks,<CUDB root entry> |
|
cudbDsgLockedBy |
Variable |
SC_2_1 |
|
cudbDsgLockedDn |
Variable |
mscId=1000,ou=multiSCs,<CUDB root entry> |
||
|
expires |
Variable |
201707271032Z |
||
6 Operations
The following LDAP operations are used to handle CUDB data:
The following LDAP extended operations, detailed in Table 19, are used to handle CUDB data:
|
Operations |
OID |
Description |
|---|---|---|
|
Ldapbundled |
1.3.6.1.4.1.193.169.4.1 |
Generic bundled write request |
|
Ldapbundledadd |
1.3.6.1.4.1.193.169.4.2 |
Provisioning bundled write request |
The LDAP Data Views function uses the following LDAP operations when accessing data through view:
When accessing data through LDAP data views, special entries can be used, called one-to-one mapped entries.
One-to-one mapped entries are real entries with the exact the same contents as the virtual entries. They can be created, deleted, and their contents modified through views without any restriction other than the ones that apply to a real entry.
| Note: |
The LDAP Data Views function requires the Application Facilitator
Value Package. |
There are certain special provisions in CUDB regarding standard LDAP operations.
A standard behavior of the LDAP modify would not de-reference the query and in the example above, no modification would take place in mscId=id and assocId=id. In such case, the LDAP modify query returns an error saying that the required entry does not exist.
6.1 CDC
Client Applications can have the Collection Detection Counter (CDC) attribute in LDAP entries to avoid race conditions when several clients access LDAP entries at the same time. An example for such race condition is LDAP client B performing a write operation on an entry between a previous read operation and a subsequent write operation by LDAP client A on the same entry. If both clients use the same CDC method from the options described below, the first client can assert that no other client accessed the entry after it read that entry.
There are two alternative ways to implement collisions detection using the CDC attribute within an entry:
6.1.1 Option 1
Steps
- Client A reads the LDAP entry, along with its CDC value.
-
Client A modifies the LDAP entry and the CDC attribute the following way:
-
Add multiple new values with the add attribute operation to the multi-valued CDC
attribute, the values ranging from
<CDC_read_value>+1 to
<CDC_read_value>+N, N being the tolerance factor
detecting up to N potential changes made by other clients in the time since the read
was done.
The LDAP modify operation:
Example
[add/modify/replace/delete operations on attributes belonging to the entry] add: CDC: <CDC_read_value>+1 add: CDC: <CDC_read_value>+2 ... add: CDC: <CDC_read_value>+N
-
In the same LDAP request, use a modify-replace operation on the CDC attribute
CDC: <CDC_read_value>+1:
replace: <CDC_read_value>+1
- Perform any other add/modify/replace/delete operations in the same LDAP request on attributes in that LDAP entry.
-
Add multiple new values with the add attribute operation to the multi-valued CDC
attribute, the values ranging from
<CDC_read_value>+1 to
<CDC_read_value>+N, N being the tolerance factor
detecting up to N potential changes made by other clients in the time since the read
was done.
Results
The LDAP operation fails if one or up to N other LDAP clients changed the LDAP entry and its CDC value between the read and the write operations by client A. The way the LDAP modify operation is evaluated makes the CDC add operation fail if CDC already includes any of the values to add to and returns LDAP errorCode=20 attributeOrValueExists. If 1 to up 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, specified 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 of the <CDC_read_value>+1 into the CDC, and the rest of the add/modify/replace operations on the entry will go through.
| Note: |
The replace operation within the LDAP
modify/write request sets only one value of the multi-valued CDC
attribute. |
6.1.2 Option 2
Steps
Results
The LDAP operation fails if any other LDAP client changed the entry and the CDC value between the read and write operations by client A. The LDAP modify operation is evaluated so that the check if the CDC includes the value to be deleted is the first step. If any client changed the CDC to a newer value, then the delete attribute operation on the former value will fail.
In the same write request, use a modify-replace operation on the CDC attribute CDC: <CDC_read_value>+1:
replace: CDC: <CDC_read_value>+1
If the delete check passes, the replace operation in the same request writes the next value of the CDC.
Option 2 is recommended, as it works irrespective of the number of other LDAP clients that attempted to 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: |
The replace operation within the LDAP
modify/write request sets only one value of the multi-valued CDC
attribute. |
6.2 Base DN Transformation in LDAP operations over Authentication Data Operations (serv=Auth)
CUDB handles certain situations for application FEs uniquely, such as in requests from UDM applications, baseDn transformations are applied transparently to cover these use cases.
Therefore, when a search operation is received from any CUDB LDAP client with the following
"baseObject: dn: serv=Auth, IMSI =<IMSInumber>, dc = imsi, ou = identities, <CUDB root entry>"
and alias de-referencing is equal to finding or always, the operation is interpreted as if the following
"baseObject: dn: IMSI =<IMSInumber>, serv=Auth, IMSI =<IMSInumber>, dc = imsi, ou = identities, <CUDB root entry>" was received instead.
The same applies for any LDAP modify operations for the above baseObject.
6.3 Performing LDAP Search Below the DE
The CUDB subscriber-centric data model, depicted in Figure 1, enables data consolidation through storing application service profiles right below a DE, in an mscId or an asscoId.
Client applications retrieve only their own service profiles data, that is, their own application data, below their serv=<service> entries) and are unaware of other populated profiles created at the same level below the DE.
The CUDB search engine is optimized for LDAP search operations that target individual entries that use the entry DN as search base object. Use this type of search for the best performance.
To enhance the performance of LDAP subtree searches, the CUDB search engine implements an index optimization for search operations that look through the LDAP DIT starting downwards from a base entry and fetch different LDAP entries. For more information, refer to the LDAP Search Indexes section in CUDB Application Integration Guide.
To take full advantage of search index optimization, choose the best possible search base for the LDAP operation, such as the location in the directory tree from which the LDAP subtree search begins.
As a general recommendation, always start application subtree searches from a serv=<service> entry or any other entry below it as the search base object. Do not use start subtree searches starting from the DE, otherwise the scanning of every other service profiles and their child entries can cause significant performance drop.
In case of using subtree searches starting from the DE, those can be optimized and executed faster by configuring the Optimized Subtree Searches function. With that feature it is possible to narrow the scope of the subtree search down to a list of specified targets. For more information refer to the Optimized Subtree Searches section in CUDB System Administrator Guide.
6.4 Error Codes
The CUDB LDAP interface supports the LDAP result codes defined in the LDAP protocol specifications. For more information, refer to RFC 4511 LDAP: The Protocol.
Table 20 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" provides the most common reasons why the
corresponding error is received. This description does not provide
all possible causes. The message diagnostic text may provide more
specific information about the error. |
For additional information on overload-related causes, mastership change, unavailability, or unreachability, refer to the following Facility Descriptions:
|
Error Code |
Error Type |
CUDB Error Description |
Possible Client Actions |
|---|---|---|---|
|
3 |
Time limit exceeded |
In addition to the time limit set by the client exceeded, CUDB adds the following cause: |
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 adds the following possible causes due to administrative limits, such as size limit and time limit:
|
If the problem is due to proxy timeout, the LDAP client can retry the request. |
|
51 |
|
|
|
|
52 |
|
The CUDB node does not have enough available resources, or a failure occurred in a critical component. The error can be caused by one of the below scenarios:
|
Reconnect to another CUDB node, that is, execute a failover towards another CUDB node. |
|
53 |
Unwilling to perform. |
|
Do not perform immediate and frequent retries when this error appears. Increase the retry delay for the application, network, or terminal retries. |
|
80 |
|
A possible cause for this error is the temporal unavailability of an internal component or a temporary internal node or partition overload. Increase the delay between the application, network, or terminal retries for operations rejected by CUDB with error 80. |
For more information on error codes, refer to CUDB LDAP Data Access.
6.5 LDAP Controls
LDAPv3 allows clients and servers to use controls as a mechanism for extending an LDAP operation. A control is a way to specify additional parameters as part of a request and a response. For more information, refer to RFC 4511 LDAP: The Protocol.
6.5.1 ReadMode Control
The CUDB LDAP interface supports ReadMode control with Object ID=1.3.6.1.4.1.193.169.3.3, which is used to temporarily override the LDAP read preferences for PLDB and DSG.
The ReadMode LDAP control is not supported for LDAP write operations, such as modify, add, or delete. If the Extension Control criticality in the write request is set to FALSE, the ReadMode control is ignored and operation is processed normally. If the Extension Criticality is set to TRUE, the LDAP request will receive an err=12, msgText=critical extension is unavailable message.
In case of distributed or massive searches, that is, search requests distributed to various DSGs, ReadMode control content is always ignored.
When ReadMode control is used, the recommended setting for criticality is FALSE.
For more information, refer to RFC 4511 LDAP: The Protocol.
The ReadMode control has an ASCII string value, indicating a combination of readModeinPL and readModeinDS that is to be applied to particular LDAP search request.
|
Value |
For PL |
For DS |
|---|---|---|
|
0 |
Master always |
Master always |
|
1 |
Local preferred |
Master preferred |
When a search request with ReadMode control is received, the read mode control values extracted take precedence over readModeInDS and readModeInPL values configured for the LDAP user.
6.6 CUDB LDAP Extended Operations
CUDB LDAP interface supports two additional LDAP extended operations that allows packing multiple write operations that are bundled into one single LDAP request.
Extended operations are defined by its OID identifier and they allow adding an LDIF payload with the multiple batched operations. There are two different operation types, which are used in different use cases as described in Table 19.
If any of the bundled operations fails, the entire LDAP operation will fail.
Generic write request operation allows executing batches of multiple add, modify, and delete operations.
Provisioning write request operation only supports batches of add operations.
For generic writes LDAP extended operation will return a "matchedDN" field (along with error code and description text) to point out on which entry in the batch the operation failed.
Data to be processed must comply with the following validation rules:
Reference List
- CUDB LDAP Data Access
- CUDB LDAP Data Views
- CUDB Node Configuration Data Model Description
- CUDB Application Counters
- CUDB System Administrator Guide
- CUDB Subscription Reallocation
- CUDB Multiple Geographical Areas
- CUDB High Availability
- CUDB Application Integration Guide
- CUDB Glossary of Terms and Acronyms
Other Documents and Online References
- Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules, RFC 4517 http://www.rfc-editor.org/rfc/rfc4517.txt
- Lightweight Directory Access Protocol (LDAP): Directory Information Models, RFC 4512 http://www.rfc-editor.org/rfc/rfc4512.txt
- Lightweight Directory Access Protocol (LDAP): The Protocol, RFC 4511 http://www.rfc-editor.org/rfc/rfc4511.txt
Contents