[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

draft-ietf-ldup-model-01-part2



 

  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  should not be considered to be a server-wide policy, but rather to be
  scoped by the namespace to which it applies.

  Schema modifications replicate in the same manner as other directory
  data.  Given the strict ordering of replication events, schema
  modifications will naturally be replicated prior to entry creations
  which use them, and subsequent to data deletions which eliminate
  references to schema elements to be deleted.  Servers should not
  replicate information about entries which are not defined in the
  schema.  Servers should not replicate modifications to existing schema
  definitions for which there are existing entries and/or attributes
  which rely on the schema element.

  Should a schema change cause an entry to be in violation of the new
  schema, it is recommended that the server preserve the entry for
  administrative repair. The server could add a known object class to
  make the entry valid and to mark the entry for maintenance.



  7. LDUP Update Transfer Protocol Framework

  A Replication Session occurs between a Supplier server and Consumer
  server over an LDAP connection.  This section describes the process by
  which a Replication Session is initiated, started and stopped.

  The session initiator, termed the Initiator, could be either the
  Supplier or Consumer. The Initiator sends an LDAP extended operation
  to the Responder identifying the replication agreement being acted on.
  The Supplier then sends a sequence of updates to the Consumer.

  All transfers are in one direction only.  A two way exchange requires
  two replication sessions; one session in each direction.


  7.1 Replication Session Initiation

  The Initiator starts the Replication Session by opening an LDAP
  connection to its Responder.  The Initiator binds using the
  authentication credentials provided in the Replication Agreement. The
  extended LDAP operation Start Replication is then sent by the
  Initiator to the Responder. This operation identifies which role each
  server will perform, and what type of replication is to be performed.
  One server is to be the Consumer, the other the Supplier, and the
  replication may be either Full or Incremental. If the Responder does
  not support the requested type of replication then an error is
  returned.


  Merrells, Reed, Srinivasan                                  [Page 21]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  7.1.1 Authentication

  The initiation of a Replication Session is to be restricted to only
  permitted clients. The identity and credentials of a connected server
  are determined via the bind operation. Access control on the
  Replication Agreement determines if the Replication Session may
  proceed. Otherwise, the insufficientAccessRights error is returned.


  7.1.2 Consumer Initiated

  The Consumer binds to the Supplier using the authentication
  credentials provided in the Replication Agreement. The Consumer sends
  the Start Replication extended request to begin the Replication
  Session. The Supplier returns a Start Replication extended response
  containing a response code. The Consumer then disconnects from the
  Supplier. If the Supplier has agreed to the replication session
  initiation, it binds to the Consumer and behaves just as if the
  Supplier initiated the replication.


  7.1.3 Supplier Initiated

  The Supplier binds to the Consumer using the authentication
  credentials provided in the Replication Agreement. The Supplier sends
  the Start Replication Request extended request to begin the
  Replication Session. The Consumer returns a Start Replication extended
  response containing a response code, and possibly its Update Vector.
  If the Consumer has agreed to the Replication Session initiation, then
  the transfer protocol begins.


  7.2 Start Replication Session


  7.2.1 Start Replication Request

  The LDUP Protocol document [LDUP Protocol] defines an LDAP Extended
  Request, Start Replication Request, that is sent from the Initiator to
  the Responder. The parameters of the Start Replication Request
  include: the Distinguished Name of the entry at the root of the Naming
  Context, the Replica Identifier of the Initiator, the Update Transfer
  Protocol OID, Replica Number Table, and an Ordering flag.

  The DN and Replica Identifier allow the Responder to determine which
  Replication Agreement is being acted on.

  The Update Transfer Protocol OID identifies the Update Transfer
  Protocol that the Initiator wishes to be used. This document defines
  two Protocols,  one for full update and one for incremental update.

  Merrells, Reed, Srinivasan                                  [Page 22]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  The Replica Number Table provides a mapping from Replica Identifiers
  (the RDN of the Replica Sub-Entry) to Replica Numbers (a small
  integer). The Supplier sends Replica Numbers instead of Replica
  Identifiers to reduce network bandwidth requirements.

  The Supplier server uses the Ordering flag to inform the Consumer of
  the ordering of the Replication Update sequence transferred during the
  Replication Session. The Consumer can make use of this knowledge
  should the session be interrupted.


  7.2.2 Start Replication Response

  The LDUP Protocol document [LDUP Protocol] defines an LDAP Extended
  Response, Start Replication Response, that is sent in reply to a Start
  Replication Request, from the Responder to the Initiator. The
  parameters of the Start Replication Response include an response code,
  and an optional Update Vector.


  7.2.3 Consumer Initiated, Start Replication Session

  The Supplier Responder need not return its Update Vector to the
  Consumer Initiator, as it is not needed in this case.


  7.3 Update Transfer

  Each Update Transfer Protocol is identified by an OID. An LDUP
  conformant server implementation must support the two update protocols
  defined here, and may support many others. A server will advertise its
  protocols in the Root DSE multi-valued attribute
  'supportedReplicationProtocols'.

  The details of the two mandatory to implement protocols are defined by
  the LDUP Protocol Internet Draft [LDUP Protocol].  One protocol
  provides a Full Update for initialisation and re-initialisation of a
  replica, and the other protocol maintains that replica via an
  Incremental Update.


  7.4 End Replication Session

  A Replication Session is terminated by the Supplier by sending an End
  Replication LDAP extended request, see section 7.4.1. The purpose of
  the request and response operations is to carry the Update Vector from
  the Supplier to the Consumer in the Full Update case, and to convey
  the Update Vector from the Consumer to the Supplier in the Incremental
  Update case.

  Merrells, Reed, Srinivasan                                  [Page 23]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  7.4.1 End Replication Request

  The LDUP Protocol document [LDUP Protocol] defines an LDAP Extended
  Request, End Replication Request, that is sent from the Initiator to
  the Responder. The End Replication Request includes a flag for the
  Supplier to request the Consumers Update Vector.

  When the update has completed the Supplier sends this extended request
  to inform the Consumer that all updates have been sent, and to advise
  the Consumer if its Update Vector should be returned.


  7.4.2 End Replication Response

  The LDUP Protocol document [LDUP Protocol] defines an LDAP Extended
  Response, End Replication Response, that is sent in reply to an End
  Replication Request, from the Responder to the Supplier. The Response
  can optionally include an Update Vector.

  If the 'return update vector' flag in the request was set then the
  Consumer should return its Update Vector to the Supplier.


  7.5 Integrity & Confidentiality

  Data integrity (ie, protection from unintended changes) and
  confidentiality (ie, protection from unintended disclosure to
  eavesdroppers) SHOULD be provided by appropriate selection of
  underlying transports, for instance TLS, or IPSEC.  Replication MUST
  be supported across TLS LDAP connections.  Servers MAY be configured
  to refuse replication connections over unprotected TCP connections.



  8. LDUP Update Protocols

  This Internet-Draft defines two transfer protocols for the supplier to
  push changes to the consumer.   Other protocols could be defined to
  transfer changes, including those which pull changes from the supplier
  to the consumer, but those are left for future work.


  8.1 Replication Updates and Update Primitives

  Both LDUP Update Protocols define how Replication Updates are
  transferred from the Supplier to the Consumer. Each Replication Update
  consists of a set of Update Primitives that describe the state changes
  that have been made to a single entry. Each Replication Update


  Merrells, Reed, Srinivasan                                  [Page 24]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  contains a single Unique Identifier that addresses the entry to which
  the Update Primitives are to be applied.

  There are seven types of Update Primitive each of which codifies an
  assertion about the state of an entry. They assert the presence or
  absence of an entry, the name of the entry, the presence or absence of
  its attributes, and the presence or absence its attribute values.  An
  assertion based approach has been chosen so that the Primitives are
  idempotent. Re-application of a Primitive to an Entry will cause no
  change to the entry. This is desirable as it provides some resilience
  against some kinds of system failures.

  Each Update Primitive contains a CSN that denotes the unique point in
  the total ordering of primitives that this primitive appears. The
  Supplier maps the Replica Identifier component of the CSN onto a
  Replica Number before transmission. The Consumer uses the provided
  Replica Number Table to map this back onto the Replica Identifier.

  The Update Primitives are fully defined in the LDUP Update
  Reconciliation Procedures Internet Draft [LDUP URP].


  8.2 Fractional Updates

  When fully populating or incrementally bringing up to date a
  Fractional Replica each of the Replication Updates must only contain
  updates to the attributes in the Fractional Entry Specification.



  9. LDUP Full Update Transfer Protocol


  9.1 Supplier Initiated, Full Update, Start Replication Session

  The Consumer Responder need not return its Update Vector to the
  Supplier Initiator, as it is not needed in this case.


  9.2 Full Update Transfer

  This Full Update Protocol provides a bulk transfer of the replica
  contents for the initial population of new replicas, and the
  refreshing of existing replicas.

  The Consumer must replace its entire replica contents with that sent
  from the Supplier.


  Merrells, Reed, Srinivasan                                  [Page 25]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  The Consumer need not service any requests for this Naming Context
  whilst the full update is in progress. The Consumer could return a
  referral to another replica, possibly the supplier. [REF]


  9.3 Replication Update Generation

  The entire state of a Replicated Area can be mapped onto a sequence of
  Replication Updates, each of which contains a sequence of Update
  Primitives that describe the entire state of a single entry.

  The sequence of Replication Updates must be ordered such that no entry
  is created before its parent.


  9.4 Replication Update Consumption

  A Consumer will receive the Replication Updates, extract the sequence
  of Update Primitives, and must apply them to the DIB in the order
  provided.


  9.5 Full Update, End Replication Session

  Since the Full Update also replicates the sub-entry that represents
  the Supplier Replica the Consumer will have received the Update Vector
  that represents the update state of the Consumer.

  After a Full Update transfer the Supplier sends the Update Vector that
  reflects the update state of the full replica information sent.  The
  Consumer records this as its Update Vector.

  The Supplier could be accepting updates whilst the update is in
  progress.  Once the Full Update has completed, an Incremental Update
  should be performed to transfer these changes.


  9.6 Interrupted Transmission

  If the Replication Session terminates before the End Replication
  Request is sent, then the Replica is invalid and must be re-
  initialised. The Consumer must not permit LDAP Clients to access the
  incomplete replica. The Consumer could refer the Client to the
  Supplier Replica, or return an error result code.





  Merrells, Reed, Srinivasan                                  [Page 26]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  10. LDUP Incremental Update Transfer Protocol

  For efficiency, the Incremental Update Protocol transmits only those
  changes that have been made to the Supplier replica that the Consumer
  has not already received. In a replication topology with transitive
  redundant replication agreements, changes may propagate through the
  replica network via different routes.

  The Consumer must not support multiple concurrent replication sessions
  with more than one Supplier for the same Naming Context. A Supplier
  that attempts to initiate a Replication Session with a Consumer
  already participating as a Consumer in another Replication Session
  will receive the busy error code.


  10.1 Update Vector

  The Supplier uses the Consumer's Update Vector to determine the
  sequence of updates that should be sent to the Consumer.

  Each Replica entry includes an Update Vector to record the point to
  which the replica has been updated. The vector is a set of CSN values,
  one value for each known updateable Replica. Each CSN is the most
  recent change, made at that Replica, that has been replicated to this
  Replica.

  For example, consider two updatable replicas of a naming context, one
  is assigned replica identifier  '1', the other replica identifier '2'.
  Each is responsible for maintaining its own update vector, which will
  contain two CSNs, one for each replica. So, if both replicas are
  identical they will have equivalent update vectors.

  Both Update Vectors =

       { 1998081018:44:31z#0x000F#1#0x0000,
         1998081018:51:20z#0x0001#2#0x0000  }

  Subsequently, at 7pm, an update is applied to replica '2', so its
  update vector is updated.

  Replica '1' Update Vector =

       { 1998081018:44:31z#0x000F#1#0x0000,
         1998081018:51:20z#0x0001#2#0x0000  }

  Replica '2' Update Vector =



  Merrells, Reed, Srinivasan                                  [Page 27]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


       { 1998081018:44:31z#0x000F#1#0x0000,
         1998081019:00:00z#0x0000#2#0x0000  }

  Since the Update Vector records the state to which the replica has
  been updated, a supplier server, during Replication Session
  initiation, can determine the sequence of updates that should be sent
  to the consumer. From the example above no updates need to be sent
  from replica '1' to replica '2', but there is an update pending from
  replica '2' to replica '1'.

  Because the Update Vector embodies knowledge of updates made at all
  known replicas it supports replication topologies that include
  transitive and redundant connections between replicas. It ensures that
  changes are not transferred to a consumer multiple times even though
  redundant replication agreements may exist. It also ensures that
  updates are passed across the replication network between replicas
  that are not directly linked to each other.

  It may be the case that a CSN for a given replica is absent, for one
  of two reasons.

  1. CSNs for Read-Only replicas might be absent because no changes will
    have ever been applied to that Replica, so there are no changes to
    replicate.

  2. CSNs for newly created replicas may be absent because no changes to
    that replica have yet been propagated.

  An Update Vector might also contain a CSN for a replica that no longer
  exists.  The replica may have been temporarily taken out of service,
  or may have been removed from the replication topology permanently. An
  implementation may choose to retire a CSN after some configurable time
  period.


  10.2 Supplier Initiated, Incremental Update, Start Replication Session

  The Consumer Responder must return its Update Vector to the Supplier
  Initiator. The Supplier uses this to determine the sequence of
  Replication Updates that need to be sent to the Consumer.


  10.3 Replication Update Generation

  The Supplier generates a sequence of Replication Updates to be sent to
  the consumer. To enforce LDAP Constraint 20.1.6, that the LDAP Modify
  must be applied atomically, each Replication Update must contain the
  entire sequence of Update Primitives for all the LDAP Operations for

  Merrells, Reed, Srinivasan                                  [Page 28]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  which the Replication Update contains Update Primitives. Stated less
  formally, for each primitive the update contains, it must also contain
  all the other primitives that came from the same operation.


  10.3.1 Replication Log Implementation

  A log-based implementation might take the approach of mapping LDAP
  Operations onto an equivalent  sequence of Update Primitives. A
  systematic procedure for achieving this is fully described in the LDUP
  Update Reconciliation Procedures Internet Draft [LDUP URP].

  The Consumer Update Vector is used to determine the sequence of LDAP
  Operations in the operation log that the Consumer has not yet seen.


  10.3.2 State-Based Implementation

  A state-based implementation might consider each entry of the replica
  in turn using the Update Vector of the consumer to find all the state
  changes that need to be transferred. Each state change (entry,
  attribute, or value - creation, deletion, or update) is mapped onto
  the equivalent Update Primitive. All the Update Primitives for a
  single entry might be collected into a single Replication Update.
  Consequently, it could contain the resultant primitives of many LDAP
  operations.


  10.4 Replication Update Consumption

  A Consumer will receive Replication Updates, extract the sequence of
  Update Primitives, and must apply them to the DIB in the order
  provided. LDAP Constraint 20.1.6 states that the modifications within
  an LDAP Modify operation must be applied in the sequence provided.

  Those Update Primitives must be reconciled with the current replica
  contents and any previously received updates.  In broad outline,
  updates are compared to the state information associated with the item
  being operated on. If the change has a more recent CSN, then it is
  applied to the directory contents. If the change has an older CSN it
  is no longer relevant and its change must not be effected.

  If the consumer acts as a supplier to other replicas then the updates
  are retained for forwarding.






  Merrells, Reed, Srinivasan                                  [Page 29]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  10.5 Update Resolution Procedures

  The LDAP Update Operations must abide by the constraints imposed by
  the LDAP Data Model and LDAP Operational Behaviour, Appendix B. An
  operation that would violate at least one of these constraints is
  rejected with an error result code.

  The loose consistency model of this replication architecture and its
  support for multiple updateable replicas of a naming context means
  that LDAP Update Operations may be accepted at one replica, which
  would not be at another. At the time of acceptance, the accepting
  replica may not have received other updates that would cause a
  constraint to be violated, and the operation to be rejected.

  Replication Updates must never be rejected because of a violation of
  an LDAP Constraint. If the result of applying the Replication Update
  causes a constraint violation to occur, then some remedial action must
  be taken to satisfy the constraint. These Update Resolution Procedures
  are introduced here, and fully described in the LDAP Update Resolution
  Procedures Internet-Draft [LDUP URP].


  10.5.1 URP: Distinguished Names

  LDAP Constraints 20.1.1 and 20.1.10 ensure that each entry in the
  replicated area has a unique DN. A Replication Update could violate
  this constraint producing two entries, with different unique
  identifiers, but with the same DN. The resolution procedure is to
  rename the most recently named entry so that its RDN includes its own
  unique identifier. This ensures that the new DN of the entry shall be
  unique.


  10.5.2 URP: Orphaned Entries

  LDAP Constraints 20.1.11 ensures that every entry must have a parent
  entry. A Replication Update could violate this constraint producing an
  entry with no parent entry. The resolution procedure is to create a
  Glue Entry to take the place of the absent parent. The Glue Entry's
  superior will be the Lost and Found Entry. This well known place
  allows administrators and their tools to find and repair abandoned
  entries.


  10.5.3 URP: Distinguished Not Present

  LDAP Constraints 20.1.8 and 20.1.9 ensure that the components of an
  RDN appear as attribute values of the entry. A Replication Update
  could violate this constraint producing an entry without its

  Merrells, Reed, Srinivasan                                  [Page 30]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  distinguished values. The resolution procedure is to add the missing
  attribute values, and mark them as distinguished not present, so that
  they can be deleted when the attribute values are no longer
  distinguished.


  10.5.4 URP: Schema - Single Valued Attributes

  LDAP Constraint 20.1.7 enforces the single-valued attribute schema
  restriction. A Replication Update could violate this constraint
  creating a multi-value single-valued attribute. The resolution
  procedure is to consider the value of a single-valued attribute as
  always being equal. In this way the most recently added value will be
  retained, and the older one discarded.


  10.5.5 URP: Schema - Required Attributes

  LDAP Constraint 20.1.7 enforces the schema objectclass definitions on
  an entry. A Replication Update could violate this constraint creating
  an entry that does not have attribute values for required attributes.
  The resolution procedure is to ignore the schema violation and mark
  the entry for administrative repair.


  10.5.6 URP: Schema - Extra Attributes

  LDAP Constraint 20.1.3 and 20.1.7 enforces the schema objectclass
  definitions on an entry. A Replication Update could violate this
  constraint creating an entry that has attribute values not allowed by
  the objectclass values of the entry. The resolution procedure is to
  ignore the schema violation and mark the entry for administrative
  repair.


  10.5.7 URP: Duplicate Attribute Values

  LDAP Constraint 20.1.5 ensures that the values of an attribute
  constitute a set of unique values. A Replication Update could violate
  this constraint. The resolution procedure is to enforce this
  constraint, recording the most recently assigned CSN with the value.


  10.5.8 URP: Ancestry Graph Cycle

  LDAP Constraint 20.4.2.1 prevents against a cycle in the DIT. A
  Replication Update could violate this constraint causing an entry to
  become it's own parent, or for it to appear even higher in it's
  ancestry graph. The resolution procedure is to break the cycle by


  Merrells, Reed, Srinivasan                                  [Page 31]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  changing the parent of the entry closest to be the lost and found
  entry.


  10.6 Incremental Update, End Replication Session

  If the Supplier sent none of its own updates to the Consumer, then the
  Supplier's CSN within the Supplier's update vector should be updated
  with the earliest possible CSN that it could generate, to record the
  time of the last successful replication session. The Consumer will
  have received the Supplier's Update Vector in the replica sub-entry it
  holds for the Supplier replica.

  The Consumer's resultant Update Vector CSN values will be at least as
  great as the Supplier's Update Vector.

  The Supplier may request that the Consumer return its resultant Update
  Vector so that the Supplier can update its replica sub-entry for the
  Consumer Replica. The Supplier requests this by setting a flag in the
  End Replication Request. The default flag value is TRUE meaning the
  Consumer Update Vector must be returned.


  10.7 Interrupted Transmission

  If the Replication Session terminates before the End Replication
  Request is sent then the Consumer's Update Vector may or may not be
  updated to reflect the updates received. The Start Replication request
  includes a Replication Update Ordering flag which states whether the
  updates were sent in CSN order per replica.

  If updates are sent in CSN order per replica then it is possible to
  update the Consumer Update Vector to reflect that some portion of the
  updates to have been sent have been received and successfully applied.
  The next Incremental Replication Session will pick up where the failed
  session left off.

  If updates are not sent in CSN order per replica then the Consumer
  Update can not be updated. The next Incremental Replication Session
  will begin where the failed session began. Some updates will be
  replayed, but because the application of Replication Updates is
  idempotent they will not cause any state changes.







  Merrells, Reed, Srinivasan                                  [Page 32]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  11. Purging State Information

  The state information stored with each entry need not be stored
  indefinitely. A server implementation may choose to periodically, or
  continuously, remove state information that is no longer required. The
  mechanism is implementation-dependent, but to ensure interoperability
  between implementations, the state information must not be purged
  until all known replicas have received and acknowledged the change
  associated with a CSN. This is determined from the Purge Vector.


  All the CSNs stored that are lower than the Purge Vector may be
  purged, because no changes with older CSNs can be replicated to this
  replica.


  11.1 Purge Vector

  The Purge Vector is an Update Vector constructed from the Update
  Vectors of all known replicas. Each replica has a sub-entry for each
  known replica stored below its naming context. Each of those entries
  contains the last known update vector for that replica. The lowest CSN
  for each replica are taken from these update vectors to form the Purge
  Vector. The Purge Vector is used to determine when state information
  and updates need no longer be stored.


  11.2 Purging Deleted Entries, Attributes, and Attribute Values

  The following conditions must hold before an item can be deleted from
  the Directory Information Base.

  1) The LDAP delete operation has been propagated to all replication
  agreement partners.

  2) All the updates from all the other replicas with CSNs less than the
  CSN on the deletion have been propagated to the server holding the
  deleted entry (similarly for deleted attributes and attribute values).

  3) The CSN generator of the other Replicas must have advanced beyond
  the deletion CSN of the deleted entry. Otherwise, it is possible for
  one of those Replicas to generate operations with CSNs earlier than
  the deleted entry.






  Merrells, Reed, Srinivasan                                  [Page 33]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  12. Replication Configuration and Management

  Replication management entries, such as replica or replication
  agreement entries, can be altered on any updateable replica. These
  entries are implicitly included in the directory entries governed by
  any agreement associated with this naming context.  As a result, all
  servers with a replica of a naming context will have access to
  information about all other replicas and associated agreements.

  The deployment and maintenance of a replicated directory network
  involves the creation and management of all the replicas of a naming
  context and replication agreements among these replicas.  This section
  outlines, through an example, the administrative actions necessary to
  create a new replica and establish replication agreements.  Typically,
  administrative tools will guide the administrator and facilitate these
  actions.  The objective of this example is to illustrate the
  architectural relationship among various replication related
  operational information.

  A copy of an agreement should exist on both the supplier and consumer
  side for the replication update transfer protocol to be able to start.
  For this purpose, the root of the naming context, replica objects and
  the replication agreement objects are created first on one of the
  servers.  A copy of these objects are then manually created on the
  second server associated with the agreement.

  The scenario below starts with a server (named DSA1) that holds an
  updateable replica of a naming context NC1.  Procedures to establish
  an updateable replica of the naming context on a second server (DSA2)
  are outlined.

  On DSA1:

  1) Add the context prefix for NC1 to the Root DSE attribute
    'replicaRoot' if it does not already exist.

  2) Alter the 'ObjectClass' attribute of the root entry of NC1 to
    include the "namingContext" auxiliary class.

  3) Create a replica object, NC1R1, (as a child of the root of NC1) to
    represent the replica on DSA1.  The attributes include replica type
    (updateable, read-only etc.) and DSA1 access point information.

  4) Create a copy of the replica object NC1R2 (after it is created on
    DSA2)

  5) Create a replication agreement, NC1R1-R2 to represent update
    transfer from NC1R1 to NC1R2.  This object is a child of NC1R1.

  Merrells, Reed, Srinivasan                                  [Page 34]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  On DSA2:

  1) Add NC1's context prefix to the Root DSE attribute 'replicaRoot'.

  2) Create a copy of the root entry of NC1 as a copy of the one in DSA1
    (including the namingContext auxiliary class)

  3) Create a copy of the replica object NC1R1

  4) Create a second replica object, NC1R2 (as a sibling of NC1R1) to
    represent the replica on DSA2.

  5) Create a copy of the replication agreement, NC1R1-R2

  6) Create a replication agreement, NC1R2-R1, to represent update
    transfer from NC1R2 to NC1R1.  This object is a sibling of NC1R1-
    R2.

  After these actions update transfer to satisfy either of the two
  agreements can commence.

  If data already existed in one of the replicas, the update transfer
  protocol should perform a complete update of the data associated with
  the agreement before normal replication begins.



  13. Time

  The server assigns a CSN for every LDAP update operation it receives.
  Since the CSN is principally based on time, the CSN is susceptible to
  the Replica clocks drifting in relation to each other (either forwards
  or backwards).

  The server must never assign a CSN older than or equal to the last CSN
  it assigned.

  The server must reject update operations, from any source, which would
  result in setting a CSN on an entry or a value which is earlier than
  the one that is there.  The error code serverClocksOutOfSync (72)
  should be returned.








  Merrells, Reed, Srinivasan                                  [Page 35]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  14. Security Considerations

  The preceding architecture discussion covers the server
  authentication, session confidentiality, and session integrity in
  sections 7.1.1 and 7.5

  The internet draft "Authentication Methods" for LDAP, provides a
  detailed LDAP security discussion.  Its introductory passage is
  paraphrased below. [AUTH]

  A Replication Session can be protected with the following security
  mechanisms.

  1) Authentication by means of the SASL mechanism set, possibly backed
    by the TLS credentials exchange mechanism,

  2) Authorization by means of access control based on the Initiators
    authenticated identity,

  3) Data integrity protection by means of the TLS protocol or data-
    integrity SASL mechanisms,

  4) Protection against snooping by means of the TLS protocol or data-
    encrypting SASL mechanisms,

  The configuration entries that represent Replication Agreements may
  contain authentication information. This information must never be
  replicated between replicas.



  15. Acknowledgements

  This document is a product of the LDUP Working Group of the IETF. The
  contributions of its members is greatly appreciated.



  16. References

  [AUTH] - M. Wahl, H. Alvestrand, J. Hodges, RL "Bob" Morgan,
  "Authentication Methods for LDAP", Internet Draft, draft-ietf-ldapext-
  authmeth-02.txt, June 1998.

  [BCP-11] - R. Hovey, S. Bradner, "The Organizations Involved in the
  IETF Standards Process", BCP 11, RFC 2028, October 1996.



  Merrells, Reed, Srinivasan                                  [Page 36]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  [LDAPv3] - M. Wahl, S. Kille, T. Howes, "Lightweight Directory Access
  Protocol (v3)", RFC 2251, December1997.

  [LDUP Info.] - E. Reed, "LDUP Replication Information Model", Internet
  Draft, draft-reed-ldup-infomod-00-1.txt, August 1998.

  [LDUP Protocol] - G. Good, E. Stokes “The LDUP Replication Update
  Protocol” , Internet Draft, draft-ietf-ldup-protocol-00.txt, May 1999.

  [LDUP Requirements] - R. Weiser, E. Stokes “LDAP Replication
  Requirements”, Internet Draft, draft-weiser-replica-req-02.txt, April
  1998.

  [LDUP URP] -  S. Legg “LDUP Update Reconciliation Procedures”,
  Internet Draft, draft-legg-ldup-urp-00.txt, February 1999.

  [NTP] - D. L. Mills, "Network Time Protocol (Version 3)", RFC 1305,
  March, 1992.

  [REF] - T. Howes, Mark Wahl, "Referrals and Knowledge References in
  LDAP Directories", Internet draft, draft-ietf-ldapext-referral-00.txt,
  March 1998.

  [RFC2119] - S. Bradner, "Key words for use in RFCs to Indicate
  Requirement Levels", RFC 2119.

  [RFC2252] - M. Wahl, A. Coulbeck, T. Howes, S. Kille, “Lightweight
  Directory Access Protocol (v3): Attribute Syntax Definitions”, RFC
  2252, December 1997.

  [SNTP] - D. L. Mills, "Simple Network Time Protocol (SNTP) Version 4
  for IPv4, IPv6 and OSI", RFC 2030, University of Delaware, October
  1996.

  [TLS] -  J. Hodges, R. L. "Bob" Morgan, M. Wahl, "Lightweight
  Directory Access Protocol (v3):                Extension for Transport
  Layer Security", Internet draft, draft-ietf-ldapext-ldapv3-tls-01.txt,
  June 1998.

  [UUID] - P. Leach, R. Salz, "UUIDs and GUIDs", Internet draft, draft-
  leach-uuids-guids-01.txt, February 1998.

  [X501] - ITU-T Recommendation X.501 (1993), ) | ISO/IEC 9594-2:1993,
  Information Technology - Open Systems Interconnection - The Directory:
  Models




  Merrells, Reed, Srinivasan                                  [Page 37]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  [X680] - ITU-T Recommendation X.680 (1994) | ISO/IEC 8824-1:1995,
  Information technology - Abstract Syntax Notation One (ASN.1):
  Specification of Basic Notation

  [X525] - ITU-T Recommendation X.525 (1997) | ISO/IEC 9594-9:1997,
  Information Technology - Open Systems Interconnection - The Directory:
  Replication



  17. Intellectual Property Notice

  The IETF takes no position regarding the validity or scope of any
  intellectual property or other rights that might be claimed to
  pertain to the implementation or use of the technology described in
  this document or the extent to which any license under such rights
  might or might not be available; neither does it represent that it has
  made any effort to identify any such rights.  Information on the
  IETF's procedures with respect to rights in standards-track and
  standards-related documentation can be found in BCP-11. [BCP-11]
  Copies of claims of rights made available for publication and any
  assurances of licenses to be made available, or the result of an
  attempt made to obtain a general license or permission for the use of
  such proprietary rights by implementors or users of this specification
  can be obtained from the IETF Secretariat.

  The IETF invites any interested party to bring to its attention any
  copyrights, patents or patent applications, or other proprietary
  rights which may cover technology that may be required to practice
  this standard.  Please address the information to the IETF Executive
  Director.



  18. Copyright Notice

   Copyright (C) The Internet Society (1998,1999). All Rights Reserved.

  This document and translations of it may be copied and furnished to
  others, and derivative works that comment on or otherwise explain it
  or assist in its implementation may be prepared, copied, published and
  distributed, in whole or in part, without restriction of any kind,
  provided that the above copyright notice and this paragraph are
  included on all such copies and derivative works.  However, this
  document itself may not be modified in any way, such as by removing
  the copyright notice or references to the Internet Society or other
  Internet organizations, except as needed for the  purpose of
  developing Internet standards in which case the procedures for

  Merrells, Reed, Srinivasan                                  [Page 38]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  copyrights defined in the Internet Standards process must be followed,
  or as required to translate it into languages other than English.

  The limited permissions granted above are perpetual and will not be
  revoked by the Internet Society or its successors or assigns.

  This document and the information contained herein is provided on an
  "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
  NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN
  WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.



  19. Authors' Address

       John Merrells
       Netscape Communications, Inc.
       501 East Middlefield Road
       Mountain View
       CA 94043

       E-mail: merrells@xxxxxxxxxxxx
       Phone: +1 650-937-5739

       Edwards E. Reed
       Novell, Inc.
       122 E 1700 S
       Provo, UT   84606

       E-mail: ed_reed@xxxxxxxxxx
       Phone: +1 801-861-3320
       Fax:   +1 801-861-2220

       Uppili Srinivasan
       Oracle, Inc.
       Redwood Shores

       E-mail: usriniva@xxxxxxxxxxxxx
       Phone: +1 650 506 3039



       LDUP Engineering Mailing List:  ldup-repl@xxxxxxxxxxxxxxxxx                                                                                                                            m

       LDUP Working Group Mailing List: ietf-ldup@xxxxxxx


  Merrells, Reed, Srinivasan                                  [Page 39]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  20. Appendix B - LDAP Constraints


  20.1 LDAP Constraints Clauses

  This is an enumeration of the Data Model and Operation Behaviour
  constraint clauses defined in RFC 2251. [LDAPv3]

  1) Data Model - Entries have names: one or more attribute values from
    the entry form its relative distinguished name (RDN), which MUST be
    unique among all its siblings. (p5)

  2) Data Model - Attributes of Entries - Each entry MUST have an
    objectClass attribute. (p6)

  3) Data Model - Attributes of Entries - Servers MUST NOT permit
    clients to add attributes to an entry unless those attributes are
    permitted by the object class definitions. (p6)

  4) Relationship to X.500 - This document defines LDAP in terms of
    X.500 as an X.500 access mechanism.  An LDAP server MUST act in
    accordance with the X.500 (1993) series of ITU recommendations when
    providing the service. However, it is not required that an LDAP
    server make use of any X.500 protocols in providing this service,
    e.g. LDAP can be mapped onto any other directory system so long as
    the X.500 data and service model as used in LDAP is not violated in
    the LDAP interface. (p8)

  5) Elements of Protocol - Common Elements - Attribute - Each attribute
    value is distinct in the set (no duplicates). (p14)

  6) Elements of Protocol - Modify Operation - The entire list of entry
    modifications MUST be performed in the order they are listed, as a
    single atomic operation. (p33)

  7) Elements of Protocol - Modify Operation - While individual
    modifications may violate the directory schema, the resulting entry
    after the entire list of modifications is performed MUST conform to
    the requirements of the directory schema. (p33)

  8) Elements of Protocol - Modify Operation - The Modify Operation
    cannot be used to remove from an entry any of its distinguished
    values, those values which form the entry's relative distinguished
    name. (p34)

  9) Elements of Protocol - Add Operation - Clients MUST include
    distinguished values (those forming the entry's own RDN) in this


  Merrells, Reed, Srinivasan                                  [Page 40]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


    list, the objectClass attribute, and values of any mandatory
    attributes of the listed object classes. (p35)

  10)  Elements of Protocol - Add Operation - The entry named in the
    entry field of the AddRequest MUST NOT exist for the AddRequest to
    succeed. (p35)

  11)  Elements of Protocol - Add Operation - The parent of the entry to
    be added MUST exist. (p35)

  12)  Elements of Protocol - Delete Operation - ... only leaf entries
    (those with no subordinate entries) can be deleted with this
    operation. (p35)

  13)  Elements of Protocol - Modify DN Operation - If there was already
    an entry with that name [the new DN], the operation would fail.
    (p36)

  14)  Elements of Protocol - Modify DN Operation - The server may not
    perform the operation and return an error code if the setting of
    the deleteoldrdn parameter would cause a schema inconsistency in
    the entry. (p36)


  20.2 LDAP Data Model Constraints

  The LDAP Data Model Constraint clauses as written in RFC 2251 [LDAPv3]
  may be summarised as follows.

  a) The parent of an entry must exist. (LDAP Constraint 11 & 12.)

  b) The RDN of an entry is unique among all its siblings. (LDAP
    Constraint 1.)

  c) The components of the RDN must appear as attribute values of the
    entry. (LDAP Constraint 8 & 9.)

  d) An entry must have an objectclass attribute. (LDAP Constraint 2 &
    9.)

  e) An entry must conform to the schema constraints.  (LDAP Constraint
    3 & 7.)

  f) Duplicate attribute values are not permitted. (LDAP Constraint 5.)





  Merrells, Reed, Srinivasan                                  [Page 41]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


  20.3 LDAP Operation Behaviour Constraints

  The LDAP Operation Behaviour Constraint clauses as written in RFC 2251
  [LDAPv3] may be summarised as follows.

  A) The Add Operation will fail if an entry with the target DN already
  exists. (LDAP Constraint 10.)

  B) The Add Operation will fail if the entry violates data constraints:

       a - The parent of the entry does not exist. (LDAP Constraint 11.)

       b - The entry already exists. (LDAP Constraint 10.)

       c - The entry RDN components appear as attribute values on the
       entry. (LDAP Constraint 9.)

       d - The entry has an objectclass attribute. (LDAP Constraint 9.)

       e - The entry conforms to the schema constraints. (LDAP
       Constraint 9.)

       f - The entry has no duplicated attribute values. (LDAP
  Constraint 5.)

  C) The modifications of a Modify Operation are applied in the order
  presented. (LDAP Constraint 6.)

  D) The modifications of a Modify Operation are applied atomically.
  (LDAP Constraint 6.)

  E) A Modify Operation will fail if it results in an entry that
  violates data constraints:

       c - If it attempts to remove distinguished attribute values.
       (LDAP Constraint 8.)

       d - If it removes the objectclass attribute. (LDAP Constraint 2.)

       e - If it violates the schema constraints. (LDAP Constraint 7.)

       f - If it creates duplicate attribute values. (LDAP Constraint
       5.)

  F) The Delete Operation will fail if it would result in a DIT that
  violates data constraints:



  Merrells, Reed, Srinivasan                                  [Page 42]
                         Expires 25 December 1999



  INTERNET-DRAFT      LDAP Replication Architecture      June 25, 1999


       a - The deleted entry must not have any children. (LDAP
  Constraint 12.)

  G) The ModDN Operation will fail if it would result in a DIT or entry
  that violates data constraints:

       b - The new Superior entry must exist. (Derived LDAP Data Model
       Constraint A)

       c - An entry with the new DN must not already exist. (LDAP
       Constraint 13.)

       c - The new RDN components do not appear as attribute values on
       the entry. (LDAP Constraint 1.)

       d - If it removes the objectclass attribute. (LDAP Constraint 2.)

       e - It is permitted for the operation to result in an entry that
       violates the schema constraints. (LDAP Constraint 14.)


  20.4 New LDAP Constraints

  The introduction of support for multi-mastered entries, by the
  replication scheme presented in this document, necessitates the
  imposition of new constraints upon the Data Model and LDAP Operation
  Behaviour.


  20.4.1 New LDAP Data Model Constraints

  1) Each entry shall have a unique identifier generated by the UUID
  algorithm available through the 'entryUUID' operational attribute. The
  entryUUID attribute is single valued.


  20.4.2 New LDAP Operation Behaviour Constraints

  1) The LDAP Data Model Constraints do not prevent cycles in the
    ancestry graph. Existing constraints Data Model Constraint - 20.4.1
    - (a) and Operation Constraint - 20.4.2 - (B) would prevent this in
    the single master case, but not in the presence of multiple
    masters.

  2) The LDAP Data Model Constraints state that only the LDAP Modify
    Operation is atomic. All other LDAP Update Operations are also
    considered to be atomically applied to the DIB.



  Merrells, Reed, Srinivasan                                  [Page 43]
                         Expires 25 December 1999