From SambaWiki
Jump to: navigation, search


The IT infrastructure of organizations often needs the existence of more than one Domain Controller (DC) for it's Active Directory (AD). For keeping an environment with more than one DC consistent, it is necessary to have the AD objects replicated through those DCs.

Most of the replication related tasks are specified on the Directory Replication Service (DRS) Remote Protocol. The Microsoft API which implements such protocol is called DRSUAPI.

Below we describe some important functions and data structures.

DSBind and DSUnbind Functions

Those functions are necessary to manipulate the context handle, which is necessary to call others functions of the DRSUAPI. DSBind method creates the context handle, while the DSUnbind destroys an existing context handle.

DSGetNCChanges Function

The client DC sends a DSGetNCChanges request to the server when the first one wants to get AD objects updates from the second one. The response contains a set of updates that the client has to apply to its NC replica.

It is possible that the set of updates is too large for only one response message. In those cases, multiple DSGetNCChanges requests and responses are done. This process is called replication cycle or simply cycle.

DSReplicaSync Function

When a DC receives a DSReplicaSync Request, then for each DC that it replicates from (stored in RepsFrom data structure) it performs a replication cycle, where it behaves like a client and makes DSGetNCChanges requests to that DC. So it gets up-to-date AD objects from each of the DC's which it replicates from. This function implements a changes propagation mechanism.

RepsFrom and RepsTo structures

The RepsFrom and RepsTo structures hold metadata information about the NC replicas that are used during replication.

RepsFrom is a multivalued structure that holds information about the NC replicas whose the DC has to get information from, when it is replicating (when attending a DSReplicaSync request).

The RepsTo structure stores information about the NC replicas whose the DC replicates to. For each DC which has to be informed about changes (using DSReplicaSync request), there is an attribute value of RepsTo.

See Also

External Links