-00 of Mandatory Replica Management (and a few questions)

Ryan Moats <[email protected]>
Newsgroups gmane.ietf.ldup
Message-ID <[email protected]>
Doh... lets try this with a correct subject...

On Tue, Nov 13, 2001 at 12:51:33PM -0600, Ryan Moats wrote:
| LDUP:
| 
| Here's -00 of Mandatory LDAP Replica Management.  Many thanks to Mark
| and Ed for the initial text.  A lot of this document is still TBD
| (as you will see), but we wanted to get something in the repository
| for SLC and we've fleshed out enough of it for us to ask the WG
| for consensus on the following issues.
| 
| 1. In Section 4.5, do we need the ability to copy (i.e. read and set) all
| operational attributes as part of this operation? If so, LDAP will need
| a change.
| 
| 2. Section 4.6 currently requires that all replicaSubentries representing the
| same server have the same entryUUID.  How is this accomplished?
| 
| 3. Section 5.1.1 posits some out-of-band transport for the initial copy
| of the source server.  Is LDIF appropriate for this transport?  If so,
| how do we carry replication meta-data (e.g. CSNs)?
| 
| 4. Should the operations in section 5.12 be condensed into a single extended
| operation? The rationale behind an extended operation is that this should
| be a mechanical process.  Having a mechanism to "replicate" this from one
| server to the others:
| - reduces likelihood of missing something
| - allows replication framework to ensure that this information gets to
|   every server in the event that a server is down or so
| 
| Enjoy
| Ryan Moats (for the authors)
| 
| 
| =============================cut here
| 
| 
| 
| 
| Internet-Draft                                               Ryan Moats 
| LDAP Duplication/Replication/Update                Lemur Networks, Inc. 
| Protocols WG                                                 Rick Huber 
| Intended Category: Standard                           AT&T Laboratories 
| 
| Expires May 2002                                         John McMeeking 
|                                                                     IBM 
|                                                           November 2001 
|  
|  
|                    Mandatory LDAP Replica Management 
|                  Filename: draft-ietf-ldup-mrm-00.txt 
|  
|  
| Status of this Memo 
|  
| This document is an Internet-Draft and is in full conformance with all 
| provisions of Section 10 of RFC2026. 
|  
| Internet-Drafts are working documents of the Internet Engineering Task 
| Force (IETF), its areas, and its working groups.  Note that other 
| groups may also distribute working documents as Internet-Drafts. 
|  
| Internet-Drafts are draft documents valid for a maximum of six months 
| and may be updated, replaced, or obsoleted by other documents at any 
| time.  It is inappropriate to use Internet-Drafts as reference material 
| or to cite them other than as "work in progress." 
|  
| The list of current Internet-Drafts can be accessed at 
| http://www.ietf.org/ietf/lid-abstracts.txt. 
|  
| The list of Internet-Drafts Shadow Directories can be accessed at 
| http://www.ietf.org/shadow.html. 
|  
| Copyright Notice 
|  
| Copyright (C) The Internet Society (2000). All Rights Reserved. 
|  
| Abstract 
|  
| The goal of standards for LDAP replication is to allow interoperable 
| replication among products from many different vendors.  Defining the 
| mechanism to move data among replicas is a necessary part of this work, 
| but management of the replicated environment must also be standardized 
| for replication to be truly interoperable. 
|  
| This document presents the replication management functions that must 
| be performed.  Whenever possible, these functions are defined in terms 
| of existing LDAP functionality using existing LDAP operations and 
| existing data definitions.  In some cases, changes or additions to the 
| existing model are requires, and specifications for these changes are 
| included in this document. 
|  
|  
|  
| Moats, et al               Expires May 2002                    [Page 1] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
| SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 
| document are to be interpreted as described in [RFC2119]. 
|  
| 1  Table of Contents 
|  
|  
| Status of this Memo...................................................1 
| Abstract..............................................................1 
| 1 Table of Contents ..................................................2 
| 2 Introduction .......................................................3 
| 3 Administrative Precursors ..........................................4 
| 4 Operational "Atoms" ................................................4 
|  4.1  Create replicaContext on a single server .......................5 
|  4.2  Delete replicaContext from a single server .....................5 
|  4.3  Add area of replication to a server ............................5 
|  4.4  Delete area of replication from a server .......................6 
|  4.5  Copy base of area of replication between servers ...............6 
|  4.6  Create server entry in area of replication .....................6 
|  4.7  Delete Server Entry for an area of replication .................7 
|  4.8  Modify replica .................................................7 
|   4.8.1  Change Replica Type .........................................7 
|   4.8.2  Change Between Full/Partial Replica .........................7 
|   4.8.3  Change Replica URI for one server for one area of replication
|          7 
|  4.9  Add Replication Agreement ......................................7 
|  4.10   Delete Replication Agreement .................................8 
|  4.11   Modify Replication Agreement .................................8 
|  4.12   Suspend Replication ..........................................8 
|  4.13   Resume Replication ...........................................8 
|  4.14   Trigger an Immediate Replica Cycle ...........................8 
| 5 Common Tasks .......................................................8 
|  5.1  Add a new replica to an existing replica group .................9 
|   5.1.1  Large area of replication support ...........................9 
|  5.2  Set up (but do not start) replication between two servers ......9 
|  5.3  Set up (but do not start) replication between a server and an 
|  existing replica group ..............................................9 
|  5.4  Verify replication information is present between two servers ..9 
|  5.5  Start replication between two servers. .........................9 
|  5.6  Start replication between an existing replica group and a new 
|  server ..............................................................9 
|  5.7  Temporarily Suspend all replication activity from a given server
|       9 
|  5.8  Halt replication on all areas of a server ......................9 
|  5.9  List status of a particular area of replication on a given 
|  server ..............................................................9 
|  5.10   List all areas of replication defined on a given server and 
|  their status .......................................................10 
|  5.11   Restore a server and replication agreements after a server 
|  crash  10 
|  5.12   Split an Area of Replication ................................10 
|  5.13   Move an existing area of replication to a new server ........10 
|  5.14   Join two Areas of Replication ...............................10 
|   5.14.1   Preconditions ............................................10 
|  
| Moats, et al               Expires May 2002                    [Page 2] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
|   5.14.2   Procedure ................................................10 
|   5.14.3   Server requirements ......................................11 
|  5.15   Stop Replicating an Area of Replication. ....................11 
|  5.16   Suspending and Resuming Replication .........................12 
| 
|  5.17   Convert a read-only replica to an updateable replica ........12 
|  5.18   Changing Replica URI on all servers handling an area of 
|  replication ........................................................12 
|  5.19   Postpone a Replica Cycle to a Later Time ....................12 
|  5.20   Examine Replication Audit History on a Server ...............12 
|  5.21   Compare Two Replicas on Two Servers for Differences .........12 
|  5.22   Fix an Entry Without Triggering Replication .................12 
|  5.23   Check Reported Schema Mismatches Discovered During Replication
|         13 
|  5.24   Adding a new directory server to a replica group and 
|  initializing the contents ..........................................13 
|  5.25   Restore from the master failure in a single-master system ...13 
| 6 Formal Specifications .............................................13 
|  6.1  New/Modified Object Classes ...................................13 
|  6.2  New/Modified Attributes .......................................13 
|  6.3  New/Modified Extended Operations ..............................13 
|  6.4  New/Modified Replication Primitives ...........................14 
| 7 Security Considerations ...........................................14 
| 8 Acknowledgements ..................................................14 
| 9 References ........................................................14 
| Author's Addresses:..................................................15 
| Full Copyright Statement.............................................15 
|  
|  
|  
| 2  Introduction 
|  
| In the LDAP replication architecture [Arch], the LDAP servers and 
| replication agreements between them are represented by entries in the 
| directory tree, as part of the replicated naming context.  The LDAP 
| replication information model [InfoMod] describes the contents of these 
| entries. 
|  
| Replication management entries, such as replicaSubentries or 
| replication agreements, can be altered on any updateable replica. These 
| entries are implicitly included in the directory entries governed by 
| any agreement associated with this area of replication.  As a result, 
| all servers with a replica of an area of replication will have access 
| to information about all other replicas of that area of replication and 
| associated agreements. 
|  
| The deployment and maintenance of a replicated directory network 
| involves the creation and management on the replicas themselves and 
| associated replication control information (e.g. replicationSubentries 
| and replication agreements).  This document outlines the administrative 
| actions necessary to create and maintain replication agreements.  
|  
| Typically, administrative tools will guide the administrator and 
| facilitate these actions. 
|  
|  
|  
| Moats, et al               Expires May 2002                    [Page 3] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| 3  Administrative Precursors 
| In this document the term "administrative user" refers to an identity 
| that will be performing replication configuration by binding to and 
| invoking operations on directory servers.  Most LDAP server 
| implementations have the concept of a superuser or power user, however 
| this need not be the same as the administrative user, so long as the 
| administrative user has been granted appropriate privileges. The 
| administrative user MAY be running as an autonomous process, and MUST 
| be capable of securely maintaining its own credentials. 
|  
| Servers SHOULD support the concept of there being multiple 
| administrative users, and SHOULD allow each to have distinct rights 
| from the others. 
|  
| Deployments SHOULD create an administrative user identity that is 
| granted access to all servers holding a replica of a naming context to 
| perform the procedures described below, in particular to read the root 
| DSE, the replicationContext prefix entry and all subordinate 
| subentries. The administrative user who will be viewing or modifying 
| the replication status MUST have already been provided with and 
| established in the directory server or servers appropriate 
| authentication credentials and authorization rights to retrieve 
| attributes and invoke DIT modification operations that are beyond the 
| ability of the 'average' directory user. 
|  
| Through out-of-band means one of the following will have occurred: 
|  
|   1. 
     the administrative user and the directory server have agreed upon 
|      a shared secret which the administrator will use to authenticate 
|      itself, or 
|   2. 
     the administrative user will have a certificate that can be 
|      validated by the directory server. 
|  
| Note that the secret in the first case need not be held by the 
| directory server itself but could be maintained by an authentication 
| service trusted by the directory server. 
|  
| 4  Operational "Atoms" 
|  
| The following operational atoms are used to build up more complex tasks 
| in section 5. 
|  
| Most of these operational "atoms" make the following assumptions: 
|  
| Through prior LDAP or out-of-band means the administrative user MUST 
| have been granted the following access control permissions to the 
| directory in order to establish replication: 
|  
|   -Modify the attribute 'replicaContextRoots' of the root DSE by 
|      adding values 
|   -Create the naming context prefix entry 
|  
|  
|  
| Moats, et al               Expires May 2002                    [Page 4] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
|   -Create subentries immediately below the naming context prefix 
|      entry 
|  
| In several sections below, we refer to "source" and "target" servers. 
| The "source" server is a server that already holds a copy of the area 
| of replication.  It may already be replicating that area with other 
| servers.  The "target" server does not currently hold a copy of the 
| area of replication.  The "target" is being added to the replica-group.  
|  
| Issue: Any write or modify being done to a readOnly replica requires 
| some thought. 
|  
| Issue: Whether each of these atoms is propagated by replication and how 
| it impacts the replication process. 
|  
| 4.1 Create replicaContext on a single server 
|  
| The client SHOULD invoke a ModifyRequest in which the object field is 
| the empty string (naming the root DSE), and the modification list 
| consists of a single item to add the distinguished name of the context 
| prefix to the attribute replicaContextRoots.  If the server responds 
| with the resultCode attributeOrValueExists, then the value is already 
| there.  If the server responds with a resultCode other than 
| attributeOrValueExists or success, then this is an error. 
|  
| 4.2 Delete replicaContext from a single server 
|  
| The client SHOULD invoke a ModifyRequest in which the object field is 
| the empty string  (naming the root DSE), and the modifications list 
| consists of a single item, to delete the value of the distinguished 
| name of the context prefix from the attribute replicaContextRoots.  If 
|  
| the server responds with the resultCode noSuchAttribute, then the value 
| has already been removed.  If the server responds with a resultCode 
| other than noSuchAttribute or success, then this is an error. 
|  
| 4.3 Add area of replication to a server 
|  
| The client SHOULD invoke a ModifyRequest in which the object field is 
| the context prefix of the replication context, and the modification 
| list consists of a single item to add the value replicationContext to 
| the attribute objectClass.  If the server responds with the resultCode 
| attributeOrValueExists, then the value is already there.  If the server 
| responds with a resultCode other than attributeOrValueExists or 
| success, then this is an error.  Should an error occur at this point, 
| the server is in an inconsistent state and needs to be fixed.  
|  
| After this step is completed, the server will begin storing change 
| information for this area of replication.  
|  
| WG ISSUE: If replicaContextRoots were an operational attribute, then it 
| would be possible to have the server maintain that attribute when 
| replicationContext is added or deleted.  Without it, these steps need 
|  
|  
| Moats, et al               Expires May 2002                    [Page 5] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| to be separate LDAP protocol operations and thus it is possible to have 
| inconsistent states. 
|  
| 4.4 Delete area of replication from a server 
|  
| The client SHOULD invoke a ModifyRequest in which the object field is 
| the context prefix of the replication context, and the modification 
| list consists of a single item to remove the value replicationContext 
| to the attribute objectClass.  If the server responds with the 
| resultCode noSuchAttribute, then the value has already been removed.  
| If the server responds with a resultCode other than noSuchAttribute or 
| success, then this is an error.   
|  
| After this step is completed, the server will no longer replicate this 
| area of replication. 
|  
| 4.5 Copy base of area of replication between servers 
| In this section, the 'target server' is the server on which the client 
| has just modified the root DSE. 
|  
| The client MUST separately contact another server, one that already 
| holds a copy of this replication context, and issue a SearchRequest on 
| that server in which the baseObject is the DN of the of base the area 
| of replication, the scope baseObject, the filter "(objectClass=*)" and 
| the attributes list "*".  If the client cannot obtain the single entry 
| at this point, the procedure will fail, and the client SHOULD invoke on 
| the slave server a ModifyRequest in which the object field is the empty 
| string, and the modifications list consists of a single item, a delete 
| of the attribute replicaContextRoots with the value the distinguished 
| name of the context prefix. 
|  
| WG Issue: Do we need the ability to copy (i.e. read and set) all 
| operational attributes as part of this operation? If so, LDAP will need 
| a change. 
|  
| Now that it has the entry, the client SHOULD invoke an AddRequest on 
| the target server with entry set to the DN of the base of the area of 
| replication and attributes the same list as obtained in the previous 
| search. 
|  
| If the server returns a resultCode other than success, it is an error, 
| and the server will be in an inconsistent state. 
|  
| 4.6 Create server entry in area of replication 
|  
| Each server needs to have in its copy of the area of replication a 
| replicaSubentry for each of the servers involved in replicating that 
| area before replication can be started. These entries MUST have the 
| following attributes: 
|  
| 1.   objectclass, with values top, ldapSubentry and replicaSubentry 
| 2.   cn 
| 3.   replicaURI 
|  
| Moats, et al               Expires May 2002                    [Page 6] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| 4.   replicaType 
| 5.   replicaOnline 
|  
| and MAY contain other attributes, as described in the Information Model 
| [InfoMod]. 
|  
| WG Issue: This requires that all replicaSubentries representing the 
| same server have the same entryUUID.  How is this accomplished? 
|  
| 4.7 Delete Server Entry for an area of replication 
|  
| The client SHOULD issue a SearchRequest in which the baseObject is the 
| DN of the context prefix, the scope oneLevel, the filter 
| "(objectClass=replicaSubentries)" and the attributes list. For each 
| entry returned, the client SHOULD then issue a DeleteReques in which 
| the object field is the DN of the entry.   If the server responds with 
| the resultCode noSuchObject, then the entry has already been removed.  
| If the server responds with a resultCode other than noSuchObject or 
| success, then this is an error. 
|  
| 4.8 Modify replica 
|  
| 4.8.1     Change Replica Type 
|  
| Note: This section covers only the simple protocol operation to change 
| the replica type. Section 5.17 coverts the full set of operations for 
| converting from a ReadOnly to an Updateable replica. 
|  
| The client SHOULD invoke a ModifyRequest in which the object field is 
| the replicationSubentry, and the modification list consists of a single 
| item to change the value of the attribute replicaType.  If the server 
| responds with the resultCode attributeOrValueExists, then the value is 
| already there.  If the server responds with a resultCode other than 
| attributeOrValueExists or success, then this is an error.  
|  
| 4.8.2     Change Between Full/Partial Replica 
|  
| TBD 
|  
| 4.8.3     Change Replica URI for one server for one area of replication 
|  
| Note: This section covers only the simple protocol operation to change 
| the replica type. Section 5.18 covers the full set of operations for 
| changing the replica URI on all servers. 
|  
| The client SHOULD invoke a ModifyRequest in which the object field is 
| the replicationSubentry, and the modification list consists of a single 
| item to change the value of the attribute replicaURI to the new value.  
| If the server responds with the resultCode attributeOrValueExists, then 
| the value is already there.  If the server responds with a resultCode 
| other than attributeOrValueExists or success, then this is an error. 
|  
| 4.9 Add Replication Agreement 
|  
| TBD 
| Moats, et al               Expires May 2002                    [Page 7] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| 4.10 Delete Replication Agreement 
|  
| The termination of replication agreements should be done with caution 
| as it can easily result in a partition of the directory servers if 
| performed incorrectly. 
|  
| Once all replication agreements have been terminated between a server 
| and others for a naming context, then that copy of the context on the 
| server will be divergent, and any updates made there will not be 
| propagated to any other server. 
|  
| TBD 
|  
| 4.11 Modify Replication Agreement 
|  
| TBD 
|  
| 4.12 Suspend Replication 
| The client SHOULD invoke a ModifyRequest in which the object field is 
| the DN of the target replicationSubentry, and the modification list 
| consists of a single item to change the value of replicaOnline 
| attribute to false. If the server responds with the resultCode 
| attributeOrValueExists, then the value is already there.  If the server 
| responds with a resultCode other than attributeOrValueExists or 
| success, then this is an error. 
|  
| 4.13 Resume Replication 
| The client SHOULD invoke a ModifyRequest in which the object field is 
| the DN of the target replicationSubentry, and the modification list 
| consists of a single item to change the value of replicaOnline 
| attribute to true. If the server responds with the resultCode 
| attributeOrValueExists, then the value is already there.  If the server 
| responds with a resultCode other than attributeOrValueExists or 
| success, then this is an error.  
|  
| 4.14 Trigger an Immediate Replica Cycle 
|  
| TBD 
|  
| Issue: An administrative client could trigger an immediate replication 
| cycle by issuing a "Trigger Replication" extended operation to the 
| supplier server.  The extended operation value specifies the DN of a 
| replication agreement between the supplier and target replicas, and the 
| type of replication session to be performed (full update or incremental 
| update).  The replication agreement is used to specify the target 
| replica, connection information, and authentication information. 
|  
| 5  Common Tasks 
| There are many tasks that administrators need to perform in a 
| replicated environment.  This section describes many typical tasks and 
| describes how they are performed in terms of the atoms defined above. 
|  
|  
| Moats, et al               Expires May 2002                    [Page 8] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| 5.1 Add a new replica to an existing replica group 
|  
| TBD 
|  
| 5.1.1     Large area of replication support 
|  
| In some cases, an area of replication is so large or available 
| bandwidth so small that out-of-band mechanisms (e.g. mailing a tape) 
| need to be used to transport the initial copy from the source to the 
| target.  The target then needs to be updated with changes made to the 
| source since the copy was made.  This section describes how this 
| situation is handled. 
|  
| Details TBD. 
|  
| WG Issue: is LDIF appropriate for this transport?  If so, how do we 
| carry replication meta-data (e.g. CSNs)? 
|  
| 5.2 Set up (but do not start) replication between two servers 
|  
| TBD 
|  
| 5.3 Set up (but do not start) replication between a server and an 
|     existing replica group 
|  
| TBD 
|  
| 5.4 Verify replication information is present between two servers 
|  
| TBD 
|  
| 5.5 Start replication between two servers. 
|  
| For this operation, the client SHOULD follow the steps in Section 5.2 
| followed by starting replication as specified in Section 4.13. 
|  
| 5.6 Start replication between an existing replica group and a new 
|     server 
| For this operation, the client SHOULD follow the steps in Section 5.3 
| followed by starting replication as specified in Section 4.13. 
|  
| 5.7 Temporarily Suspend all replication activity from a given server 
|  
| TBD  
|  
| 5.8 Halt replication on all areas of a server 
|  
| TBD 
|  
| 5.9 List status of a particular area of replication on a given server 
|  
| TBD 
|  
| Moats, et al               Expires May 2002                    [Page 9] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
|  
| 5.10 List all areas of replication defined on a given server and their 
|     status 
|  
| TBD 
|  
| 5.11 Restore a server and replication agreements after a server crash 
|  
| TBD 
|  
| 5.12 Split an Area of Replication 
|  
| To split an area of replication, the atoms are: 
| 1.   Add the subordinate area of replication to the servers' 
|      replicaContextRoots (Section 4.1) 
| 2.   Add the replicationContext objectclass to the root entry of the 
|      area of replication (Section 4.3) 
| 3.   Create replicaSubentry objects under the new area of replication 
|      for each replica of the parent area of replication (Section 4.6) 
| 4.   Create replicaAgreement objects (and schedules?) under the new 
|      replicaSubentries, where agreements are created that correspond to 
|      each agreement defined for the parent (Section 4.9). 
| These operations must be performed on each server containing a replica 
| of the parent area of replication.   
|  
| WG Issue: Extended op or not? The rationale behind an extended 
| operation is that this should be a mechanical process.  Having a 
| mechanism to "replicate" this from one server to the others: 
| - reduces likelihood of missing something 
| - allows replication framework to ensure that this information gets to 
|   every server in the event that a server is down or some other error 
|   prevents the client from completing all of these operations. 
|  
| 5.13 Move an existing area of replication to a new server  
|  
| TBD 
|  
| 5.14 Join two Areas of Replication 
|  
| This section describes how to join two areas of replication. 
|  
| 5.14.1    Preconditions 
|  
| Before joining two areas of replication there are certain preconditions 
| that need to be satisfied: 
| 1.   Any server that contains a replica of one area of replication must 
|      also contain a replica of the other area of replication. This may 
|      require copying either area of replication to additional servers, 
|      or deleting either area of replication from servers. 
| 2.   The replicas on any given server MUST be of the same type.  Both 
|      replicas must be updateable, both-readonly, or both primary.  
|      Furthermore, if the replicas are readonly, they must both be full 
|      replicas, or must both be fractional replicas with identical 
|      fractional entry specifications. 
|  
| 5.14.2    Procedure 
|  
|  
| Moats, et al               Expires May 2002                   [Page 10] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| 1. On each server, delete the replicationContext objectclass value from 
|   the subordinate area of replication (Section TBD). 
|    
|   We'd like this to be replicated under the parent area of replication, 
|   and we'd like this to have the affect of causing all not yet 
|   replicated updates and future client changes as if they occurred 
|   under the parent area f replication.  This is going to cause problems 
|   with respect to CSNs if there are "old" changes in the subordinate 
|   context.  Maybe we require that there be no pending updates?  This is 
|   going to be potentially ugly. 
| 2. 
  Delete all replication agreements for the subordinate area of 
|   replication 
| 3. 
  Delete all replicaSubentries for the subordinate area of replication 
|  
| 5.14.3    Server requirements 
|  
| When the replicationContext objectclass is removed from the root of an 
| area of replication, the server MUST immediately treat entries within 
| the area of replication as belonging to the parent area of replication 
| (if there is any).  This includes replicating any pending replication 
| updates (those not yet replicated to other replicas) as if they 
| occurred under the parent area of replication, as well as preserving 
| any Lost and Found entries. 
|  
| If a server receives a request to delete the replicationContext from an 
| area of replication, and there is a parent area of replication, the 
| Server MUST verify that these replicas are of the same type, and if 
| fractional, that the fractional entry specifications are identical.  If 
| the replicas are not of the same type, the request MUST be failed with 
| resultCode unwillingToPerform. 
|  
| 5.15 Stop Replicating an Area of Replication. 
|  
| This section describes how to stop replicating an area of replication.  
| At the end of the procedure, the subtree represented by the area of 
| replication will exist on one server, all replication agreements will 
| have been deleted, and the root of the area of replication will no 
| longer be an area of replication.  The server on which the subtree will 
| remain is referred to as the surviving replica.   
| To stop replicating an area of replication, a client with 
| administrative authority should perform the following operations: 
|  
| 1.   Halt replication 
|  
| After halting, the client MAY optionally delete information by: 
|  
| 2.   Delete all replication agreements (Section 4.10). 
| 3.   Delete all replicaSubentries under the area of replication 
|      (section 4.7)  
| 4.   Issue a modifyRequest to the surviving server where the object 
|      field is the DN of the area of replication, and the modifications 
|      list consists of a single item, delete the attribute objectclasss 
|      with value replicationContext. 
|  
| Moats, et al               Expires May 2002                   [Page 11] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| 5.   Delete replicaContext from that server (Section 4.2) 
| 6.   Delete the area of replication from servers containing other 
|      replicas (Section 4.4). 
|  
| Note that client updates accepted on the non-surviving replicas during 
| this procedure may be lost (because they were not replicated to the 
| surviving server). 
|  
| 5.16 Suspending and Resuming Replication 
|  
| To suspend replication of an area of replication to a specific server, 
| an administrative client can perform a modifyRequest of the 
| replicaSubentry, with a modification list replacing the replicaOnline 
| attribute with the value false.   Performing this request on the 
| specified server causes the server to stop accepting or initiating 
| replication requests for that area of replication.  This procedure can 
| also be performed on any other replica.  The modifyRequest will be 
| replicated to other servers.  When a server other than that specified 
| by the replicaSubentry receives the request the server MUST stop 
| sending replication updates to the specified server.  The unsent 
| changes MUST be saved until the replicaOnline attribute is chnaged to 
| true.  Servers MUST continue to repond to replication updates sent from 
| the specified server. 
|  
| To resume replication of an area of replication to a specific server, 
| an administrative client can perform a modifyRequest of the 
| replicaSubentry, with a modification list replacing the replicaOnline 
| attribute with the value false.   This request must be performed on the 
| specified server, or it will not resume replication.  This operation 
| may also be performed on other servers. 
|  
| 5.17 Convert a read-only replica to an updateable replica 
|  
| TBD 
|  
| 5.18 Changing Replica URI on all servers handling an area of 
|     replication 
|  
| The client issues this request to the server whose address has been 
| changed, which replicates it to the other replicas like other client 
| updates.  It may be necessary to issue the same request to other 
| replicas, for example, when the server does not have proper replication 
| agreements to fully replicate this change (as in consumer initiated 
| replication). 
|  
| 5.19 Postpone a Replica Cycle to a Later Time 
|  
| TBD 
|  
| 5.20 Examine Replication Audit History on a Server 
|  
| TBD 
|  
| 5.21 Compare Two Replicas on Two Servers for Differences 
|  
| TBD 
|  
| 5.22 Fix an Entry Without Triggering Replication 
|  
| When conflicts cause entries to be put in the Lost+Found area, the 
| administrator needs a mechanism to make appropriate changes.  These 
| Moats, et al               Expires May 2002                   [Page 12] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| changes should not trigger replication since they are used to fix 
| previous replication problems.  In addition, these changes may include 
| fixes to UUIDs, CSNs, or other control data that cannot be changed 
| using normal LDAP operations. 
|  
| TBD 
|  
| 5.23 Check Reported Schema Mismatches Discovered During Replication 
|  
| TBD 
|  
| 5.24 Adding a new directory server to a replica group and initializing 
|     the contents 
|  
| In this case, the client: 
|  
| 1. Creates the replicaContext on the new server (section 4.1) 
| 2. Copies the base entry for the area of replication from a source to 
| the target (section 4.5) 
| 3. 
  Create the entries for the new server on all servers in the replica 
|   group (section 4.6) 
| 4. 
  Create the entries for the existing replica group servers on the new 
|   (section 4.6) 
| 5. 
  Create the replication agreement on all servers (section 4.9) 
| 6. 
  Client issues a "Initiate Full Update" request to a full replica for 
|   the new replica -- or new replica requests consumer initiated full 
|   update 
|  
|  
|  
| 5.25 Restore from the master failure in a single-master system 
|  
| TBD 
|  
| 6  Formal Specifications 
|  
| The Replica Management features depend heavily on defined LDAP and LDUP 
| structure, operations, and data formats.  But some changes will be 
| needed to accommodate Replica Management.  All these changes are pulled 
| together in this section for easy reference. 
|  
| 6.1 New/Modified Object Classes 
|  
| TBD 
|  
| 6.2 New/Modified Attributes 
|  
| TBD 
|  
| 6.3 New/Modified Extended Operations 
|  
| Trigger Replica Operation 
|  
| TBD 
|  
|  
| Moats, et al               Expires May 2002                   [Page 13] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
|  
| 6.4 New/Modified Replication Primitives 
|  
| TBD 
|  
| 7  Security Considerations 
|  
| In all cases, it is assumed that the client establishes a connection to 
| the LDAP server and SHOULD authenticate using a recommended 
| authentication method [RFC2829] that establishes the identity of the 
| client user and SHOULD provide for connection integrity.  In 
| deployments where the underlying network service is vulnerable to 
| eavesdropping and clients are intending to retrieve sensitive server 
| credentials, the chosen method SHOULD also provide for encryption of 
| data in transit. 
|  
| In general, where the client is unaware of any network level protection 
| services, it is RECOMMENDED that the client immediately after 
| connection establishment invoke Start TLS to establish connection 
| integrity and confidentiality, and follow this by authentication by one 
| of: 
|  
|   - the "DIGEST-MD5" SASL mechanism, 
|   - the "simple" authentication choice, or 
|   - the "EXTERNAL" SASL mechanism if the client provided its  
|      certificate during TLS establishment. 
|  
| The client MAY determine the supported authentication mechanisms of the 
| server from the supportedSASLMechanisms attribute of the root DSE after 
| Start TLS has been invoked, and use this to decide whether to use 
| DIGEST-MD5 or EXTERNAL.  See [RFC2830] for more information on TLS. 
|  
| 8  Acknowledgements 
|  
| Thanks to Mark Wahl and Ed Reed for providing a lot of the initial 
| text. 
|  
| This document is a product of the LDUP Working Group of the IETF.  The 
| contributions of its members are greatly appreciated. 
|  
| 9  References 
| [Arch] J. Merrells, E. Reed, U. Srinvasan, "LDAP Replication 
| Architecture", draft-ietf-ldup-model-01.txt. 
|  
| [InfoMod] E. Reed, "LDAP Replication Information Model", draft-ietf-
| ldup-infomod-00.txt 
|  
| [RFC2119] S. Bradner, "Key Words for Use in RFCs to Indicate 
| Requirement Levels", RFC 2119, March 1997. 
|  
| [RFC2829] M. Wahl, H. Alvestrand, J. Hodges, RL Morgan, "Authentication 
| Methods for LDAP", RFC 2829, May 2000. 
|  
|  
|  
|  
| Moats, et al               Expires May 2002                   [Page 14] 

|  
|  
| INTERNET DRAFT     Mandatory LDAP Replica Management      November 2001 
| [RFC2830] J. Hodges, R. Morgan, M. Wahl, "Lightweight Directory Access 
| Protocol (v3): Extension for Transport Layer Security", RFC 2830, May 
| 2000. 
|  
| Author's Addresses: 
|  
| Ryan Moats 
| Lemur Networks, Inc. 
| Email: [email protected] 
|  
| Rick Huber 
| AT&T Laboratories 
| Email: [email protected] 
|  
| John McMeeking 
| IBM 
| Email: [email protected] 
|  
| Full Copyright Statement 
|  
| Copyright (C) The Internet Society (2000).  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 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. 
|  
| Acknowledgement 
|  
| Funding for the RFC Editor function is currently provided by the 
| Internet Society. 
| 
| 
| 
| 
| 
| 
| 
| Moats, et al               Expires May 2002                   [Page 15] 

lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.