A. Changes Since Previous Release
The following sections attempt to summarize the new features and changes in OpenLDAP software since the 2.3.x release and the OpenLDAP Admin Guide.
A.1. New Guide Sections
In order to make the Admin Guide more thorough and cover the majority of questions asked on the OpenLDAP mailing lists and scenarios discussed there, we have added the following new sections:
- When should I use LDAP?
- When should I not use LDAP?
- LDAP vs RDBMS
- Access Control
- Backends
- Overlays
- Replication
- Maintenance
- Monitoring
- Tuning
- Troubleshooting
- Changes Since Previous Release
- Upgrading from 2.3.x
- Common errors encountered when using OpenLDAP Software
- Recommended OpenLDAP Software Dependency Versions
- Real World OpenLDAP Deployments and Examples
- OpenLDAP Software Contributions
- Configuration File Examples
- LDAP Result Codes
- Glossary
Also, the table of contents is now 3 levels deep to ease navigation.
A.2. New Features and Enhancements in 2.4
A.2.1. Better cn=config functionality
There is a new slapd-config(5) manpage for the cn=config backend. The original design called for auto-renaming of config entries when you insert or delete entries with ordered names, but that was not implemented in 2.3. It is now in 2.4. This means, e.g., if you have
olcDatabase={1}mdb,cn=config olcSuffix: dc=example,dc=com
and you want to add a new subordinate, now you can ldapadd:
olcDatabase={1}mdb,cn=config olcSuffix: dc=foo,dc=example,dc=com
This will insert a new back-mdb database in slot 1 and bump all following databases down one, so the original back-mdb database will now be named:
olcDatabase={2}mdb,cn=config olcSuffix: dc=example,dc=com
A.2.2. Better cn=schema functionality
In 2.3 you were only able to add new schema elements, not delete or modify existing elements. In 2.4 you can modify schema at will. (Except for the hardcoded system schema, of course.)
A.2.3. More sophisticated Syncrepl configurations
The original implementation of Syncrepl in OpenLDAP 2.2 was intended to support multiple consumers within the same database, but that feature never worked and was removed from OpenLDAP 2.3; you could only configure a single consumer in any database.
In 2.4 you can configure multiple consumers in a single database. The configuration possibilities here are quite complex and numerous. You can configure consumers over arbitrary subtrees of a database (disjoint or overlapping). Any portion of the database may in turn be provided to other consumers using the Syncprov overlay. The Syncprov overlay works with any number of consumers over a single database or over arbitrarily many glued databases.
A.2.4. N-Way Multiprovider Replication
As a consequence of the work to support multiple consumer contexts, the syncrepl system now supports full N-Way multiprovider replication with entry-level conflict resolution. There are some important constraints, of course: In order to maintain consistent results across all servers, you must maintain tightly synchronized clocks across all participating servers (e.g., you must use NTP on all servers).
The entryCSNs used for replication now record timestamps with microsecond resolution, instead of just seconds.
A.2.5. Replicating slapd Configuration (syncrepl and cn=config)
Syncrepl was explicitly disabled on cn=config in 2.3. It is now fully supported in 2.4; you can use syncrepl to replicate an entire server configuration from one server to arbitrarily many other servers. It's possible to clone an entire running slapd using just a small (less than 10 lines) seed configuration, or you can just replicate the schema subtrees, etc. Tests 049 and 050 in the test suite provide working examples of these capabilities.
A.2.6. Push-Mode Replication
In 2.3 you could configure syncrepl as a full push-mode replicator by using it in conjunction with a back-ldap pointed at the target server. But because the back-ldap database needs to have a suffix corresponding to the target's suffix, you could only configure one instance per slapd.
In 2.4 you can define a database to be "hidden", which means that its suffix is ignored when checking for name collisions, and the database will never be used to answer requests received by the frontend. Using this "hidden" database feature allows you to configure multiple databases with the same suffix, allowing you to set up multiple back-ldap instances for pushing replication of a single database to multiple targets. There may be other uses for hidden databases as well (e.g., using a syncrepl consumer to maintain a *local* mirror of a database on a separate filesystem).
A.2.7. More extensive TLS configuration control
In 2.3, the TLS configuration in slapd was only used by the slapd listeners. For outbound connections used by e.g. back-ldap or syncrepl their TLS parameters came from the system's ldap.conf file.
In 2.4 all of these sessions inherit their settings from the main slapd configuration, but settings can be individually overridden on a per-config-item basis. This is particularly helpful if you use certificate-based authentication and need to use a different client certificate for different destinations.
A.2.8. Performance enhancements
Too many to list. Some notable changes - ldapadd used to be a couple of orders of magnitude slower than "slapadd -q". It's now at worst only about half the speed of slapadd -q. Some comparisons of all the 2.x OpenLDAP releases are available at http://www.openldap.org/pub/hyc/scale2007.pdf
That compared 2.0.27, 2.1.30, 2.2.30, 2.3.33, and CVS HEAD). Toward the latter end of the "Cached Search Performance" chart it gets hard to see the difference because the run times are so small, but the new code is about 25% faster than 2.3, which was about 20% faster than 2.2, which was about 100% faster than 2.1, which was about 100% faster than 2.0, in that particular search scenario. That test basically searched a 1.3GB DB of 380836 entries (all in the slapd entry cache) in under 1 second. i.e., on a 2.4GHz CPU with DDR400 ECC/Registered RAM we can search over 500 thousand entries per second. The search was on an unindexed attribute using a filter that would not match any entry, forcing slapd to examine every entry in the DB, testing the filter for a match.
Essentially the slapd entry cache in back-bdb/back-hdb is so efficient the search processing time is almost invisible; the runtime is limited only by the memory bandwidth of the machine. (The search data rate corresponds to about 3.5GB/sec; the memory bandwidth on the machine is only about 4GB/sec due to ECC and register latency.)
A.2.9. New overlays
- slapo-constraint (Attribute value constraints)
- slapo-dds (Dynamic Directory Services, RFC 2589)
- slapo-memberof (reverse group membership maintenance)
A.2.10. New features in existing Overlays
- slapo-pcache
- Inspection/Maintenance
- the cache database can be directly accessed via LDAP by adding a specific control to each LDAP request; a specific extended operation allows to consistently remove cached entries and entire cached queries
- Hot Restart
- cached queries are saved on disk at shutdown, and reloaded if not expired yet at subsequent restart
- Inspection/Maintenance
- slapo-rwm can safely interoperate with other overlays
- Dyngroup/Dynlist merge, plus security enhancements
- added dgIdentity support (draft-haripriya-dynamicgroup)
A.2.11. New features in slapd
- monitoring of back-{b,h}db: cache fill-in, non-indexed searches,
- session tracking control (draft-wahl-ldap-session)
- subtree delete in back-sql (draft-armijo-ldap-treedelete)
- sorted values in multivalued attributes for faster matching
- lightweight dispatcher for greater throughput under heavy load and on multiprocessor machines. (33% faster than 2.3 on AMD quad-socket dual-core server.)
A.2.12. New features in libldap
- ldap_sync client API (LDAP Content Sync Operation, RFC 4533)
A.2.13. New clients, tools and tool enhancements
- ldapexop for arbitrary extended operations
- Complete support of controls in request/response for all clients
- LDAP Client tools now honor SRV records
A.2.14. New build options
- Support for building against GnuTLS
A.3. Obsolete Features Removed From 2.4
These features were strongly deprecated in 2.3 and removed in 2.4.
A.3.1. Slurpd
Please read the Replication section as to why this is no longer in OpenLDAP
A.3.2. back-ldbm
back-ldbm was both slow and unreliable. Its byzantine indexing code was prone to spontaneous corruption, as were the underlying database libraries that were commonly used (e.g. GDBM or NDBM). back-bdb and back-hdb are superior in every aspect, with simplified indexing to avoid index corruption, fine-grained locking for greater concurrency, hierarchical caching for greater performance, streamlined on-disk format for greater efficiency and portability, and full transaction support for greater reliability.