Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

6.2.2.5 Connection Translation

This task adjusts values of repsFrom abstract attributes of NC replicas on the local DC to match those "implied" by nTDSConnection objects.

If the NTDSDSA_OPT_DISABLE_NTDSCONN_XLATE bit is set in the value of the options attribute of the local DC's nTDSDSA object, the KCC skips this task.

First, the KCC inspects n!repsFrom for each NC replica n that "is present" or "should be present" on the local DC. If n is not an NC replica that "should be present" on the local DC, the KCC calls IDL_DRSReplicaDel to remove all tuples from n!repsFrom and to remove n.

Otherwise, for each tuple t in n!repsFrom, let s be the nTDSDSA object such that s!objectGUID = t.uuidDsa. Let cn be the nTDSConnection object such that cn is a child of the local DC's nTDSDSA object and cn!fromServer = s and cn!options does not contain NTDSCONN_OPT_RODC_TOPOLOGY, or NULL if no such cn exists. The KCC calls IDL_DRSReplicaDel to remove t from n!repsFrom if any of the following is true:

  • cn = NULL.

  • No NC replica of the NC "is present" on s.

  • A writable replica of the NC "should be present" on the local DC, but a partial replica "is present" on s.

If the KCC did not remove t from n!repsFrom, it updates t if necessary to satisfy the following requirements. Such updates are typically required when the IDL_DRSGetNCChanges server has moved from one site to another—for example, to enable compression when the server is moved from the client's site to another site.

  • t.schedule = cn!schedule

  • Bit DRS_PER_SYNC is set in t.replicaFlags if and only if cn!schedule has a value v that specifies scheduled replication is to be performed at least once per week.

  • Bit DRS_INIT_SYNC is set in t.replicaFlags if and only if s and the local DC's nTDSDSA object are in the same site or s is the FSMO role owner of one or more FSMO roles in the NC replica.

  • If bit NTDSCONN_OPT_OVERRIDE_NOTIFY_DEFAULT is set in cn!options, bit DRS_NEVER_NOTIFY is set in t.replicaFlags if and only if bit NTDSCONN_OPT_USE_NOTIFY is clear in cn!options. Otherwise, bit DRS_NEVER_NOTIFY is set in t.replicaFlags if and only if s and the local DC's nTDSDSA object are in different sites.

  • Bit DRS_USE_COMPRESSION is set in t.replicaFlags if and only if s and the local DC's nTDSDSA object are not in the same site and the NTDSCONN_OPT_DISABLE_INTERSITE_COMPRESSION bit is clear in cn!options.

  • Bit DRS_TWOWAY_SYNC is set in t.replicaFlags if and only if bit NTDSCONN_OPT_TWOWAY_SYNC is set in cn!options.

  • Bits DRS_DISABLE_AUTO_SYNC and DRS_DISABLE_PERIODIC_SYNC are set in t.replicaFlags if and only if cn!enabledConnection = false.

  • If s and the local DC's nTDSDSA object are in the same site, cn!transportType has no value, or the RDN of cn!transportType is CN=IP:

    • Bit DRS_MAIL_REP in t.replicaFlags is clear.

    • t.uuidTransport = NULL GUID.

    • t.uuidDsa = The GUID-based DNS name of s.

  • Otherwise:

Finally, the KCC calls IDL_DRSReplicaAdd to add a tuple u to n!repsFrom for each IDL_DRSGetNCChanges server "implied" by the nTDSConnection object children of the local DC's nTDSDSA object if such a u does not already exist. For each such nTDSConnectioncn, a tuple u is implied if all of the following are true:

  • cn!enabledConnection = true.

  • cn!options does not contain NTDSCONN_OPT_RODC_TOPOLOGY.

  • cn!fromServer references an nTDSDSA object.

  • An NC replica of the NC "is present" on the DC to which the nTDSDSA object referenced by cn!fromServer corresponds.

  • An NC replica of the NC "should be present" on the local DC.

  • The NC replica on the DC referenced by cn!fromServer is a writable replica or the NC replica that "should be present" on the local DC is a partial replica.

  • The NC is not a domain NC, the NC replica that "should be present" on the local DC is a partial replica, cn!transportType has no value, or cn!transportType has an RDN of CN=IP.

If tuple u is implied, its fields satisfy each of the criteria defined above for tuple t when t is updated using IDL_DRSReplicaModify, plus the following additional criteria:

  • u.uuidDsa = the objectGUID of the nTDSDSA object referenced by cn!fromServer.

  • u.uuidInvocId, u.usnVec, u.consecutiveFailure, u.timeLastSuccess, u.timeLastAttempt, and u.resultLastAttempt are 0.

If an attempt to contact another DC is made and it fails, the KCC adds a tuple for that DC to the local DC's kCCFailedConnections variable.

 
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.