Ticket | Summary |
---|---|
#151 | Implement internal meta-database |
Currently the driver relies on 1:1 mapping between LDAP DN and DNS names and there are no means for storing additional data about DNS names, e.g. LDAP UUID of object or so.
Some features cannot be reasonably implemented without these additional metadata.
Few examples follow:
Ticket | Summary |
---|---|
#123 | LDAP MODRDN (rename) on records is not supported |
Support for LDAP MODRDN operation requires following mapping:
For details see BIND9/Design/RBTDB#Entryrenamingmoddnhandling.
Support for coalesced LDAP delete requires following metadata:
For details see ticket 128#comment:7.
Ticket | Summary |
---|---|
#70 | Define and use new attribute for default TTL value |
Support for default per-entry TTL requires following:
Ticket | Summary |
---|---|
#59 | Per-RRset TTL |
Further optimization outside schope of ticket:70 needs information from where the TTL information for particular RRset was inherited.
It might be possible to implement this without optimizations, I’m not sure how slow or fast it would be if any change in any TTL definition triggered iteration over all names and re-computation of all TTLs.
Ticket | Summary |
---|---|
#125 | Re-synchronization is not implemented |
Support for full re-synchronization with LDAP requires following metadata:
Ticket | Summary |
---|---|
#126 | Support per-server _location records for FreeIPA sites |
Support for refresh/batch re-synchronization with LDAP requires:
_location
record was auto-generated.Support for overrides in LDAP requires:
This mapping will be used if override _location.example.
is
processed. We have to find metadata entry for DNS FQDN example.
and
change boolean that _location
record was auto-generated (if the
parent entry exists).
Ticket | Summary |
---|---|
#124 | Startup with big amount of data in LDAP is slow |
Additional metadata which are outside scope of ticket:128 and ticket:125:
allow-query
etc.)Various metadata will be stored in internal RBTDB instances to allow fast key -> value mapping.
TTL of all records is zero unless stated otherwise.
Purpose of this sub-tree is to store necessary metadata about LDAP objects. For example, an LDAP server might send notification like ‘object UUID 1234 was removed’ but does not add other information (like DN or object class) to the notification.
RBTDB for LDAP UUID -> value mapping will have nodes named like
<LDAP UUID>.uuid.ldap.
Every metadata type will be mapped to a particular RR type:
LDAP_ENTRYCLASS_*
definitions
from
ldap_entry.h_location
record was auto-generated = a bit in the
object class bit fieldisc_serial_*
functions.RP
record.This kind of metadata is not related to DNS data.
Global metadata will be stored in the same RBTDB as LDAP UUID -> value mapping, just under a different sub-tree.
SyncRepl
cookie = URI
RR at node
syncrepl.ldap.
, numeric components of URI are ignored. This entry
has to be updated strictly sequentially otherwise some updates could
be missing after reconnection to LDAP.gconfig.ldap.
Zone register metadata will be stored in a separate RBTDB which will be used to quickly load data from disk without a need to contact LDAP.
Node names in this RBTDB will be equal to zone FQDN.
allow-query
etc.) -> serialization of
LDAPMessage returned by OpenLDAP client libs, most likely stored in
URI RR
A
record (32 bit unsigned integer)This mapping will be used if override _location.example.
is
processed. We have to find metadata entry for DNS FQDN example.
and
change boolean that _location
record was auto-generated (if the
parent entry exists).
Every zone in zone register will have own RBTDB with name ->
<UUID>.uuid.ldap.
name mapping which can be used for accessing the
LDAP metadata database. Most likely in form of CNAME
record.
Nothing else should be stored in this RBTDB.
SyncRepl
events are generated by OpenLDAP library one by one.
Potentially each even can have a new value of cookie in it.SyncRepl
events are translated to ISC events which are
processed in parallel. Our internal SyncRepl
event queue is
limited to 100 unprocessed events to avoid
BIND9/Bugs/ISC-35160.syncrepl.ldap.
node
only if all preceding cookies were processed before the write.0
.1
,
2
, 3
. These OpenLDAP events are translated to
independent ISC events which are processed in parallel.2
is the first processed event.
Events 1
and 3
are not processed yet.2
cannot be stored in
syncrepl.ldap.
node because event with previous cookie
value = 1
was not processed yet.1
and 2
if we actually stored the cookie 2
and reconnected to LDAP (using stored cookie 2
) before the
event with cookie 1
was processed.This feature does not have any user interface. It will automatically
create new files in /var/named/dyndb-ldap/ipa
directory and that is
it.
No new configuration options will be added.
Particular features listed in section Use Cases will work as specified.
pspacek