view Side-By-Side changes
LDUP Internet Draft R. Megginson, Editor Document:<draft-ietf-ldup-lcup-02.txt>draft-ietf-ldup-lcup-04.txt M. Smith Category: Proposed Standard Netscape Expires: July 2003 Communications Corp. O. Natkovich Yahoo J. Parham Microsoft CorporationNovember 2001February 2003 LDAP Client Update Protocol Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 ofRFC2026 [1].RFC 2026 [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 useInternet- DraftsInternet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed athttp://www.ietf.org/ietf/1id-abstracts.txt.http://www.ietf.org/ietf/1id-abstracts.txt The list ofInternet- DraftInternet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.1.Abstract This document defines theLDAPLightweight Directory Access Protocol (LDAP) Client Update Protocol (LCUP). The protocol is intended to allow an LDAP client to synchronize with the content of a directory information tree (DIT) stored by an LDAP server and to be notified about the changes to that content.2.Conventions used in this document Megginson, et. al. Expires - August 2003 [Page 1] LDAP Client Update Protocol February 2003 In the protocol flow definition, the notation C->S and S->C specifies the direction of the data flow from the client to the server and from the server to the client respectively. 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 inRFC-2119 [KEYWORDS].RFC 2119 [RFC2119]. Table of Contents 1. Overview......................................................3 2. Specification of Protocol Elements............................4 2.1 Universally Unique Identifiers.............................4 2.2 LCUP Scheme and LCUP Cookie................................5 2.3 LCUP Context...............................................5 2.4 Additional LDAP Result Codes defined by LCUP...............5 2.5 Sync Request Control.......................................6 2.6 Sync Update Control........................................7 2.7 Sync Done Control..........................................7 3. Protocol Usage and Flow.......................................7 3.1 LCUP Search Requests.......................................8 3.1.1 Initial Synchronization and Full Resync................8 3.1.2 Incremental or Update Synchronization..................9 3.1.3 Persistent Only........................................9 3.2 LCUP Search Responses......................................9 3.2.1 Sync Update Informational Responses...................10 3.2.2 Cookie Return Frequency...............................10 3.2.3 Definition of an Entry That Has Entered the Result Set11 3.2.4 Definition of an Entry That Has Changed...............12 3.2.5 Definition of an Entry That Has Left the Result Set...12 3.2.6 Results For Entries Present in the Result Set.........12 3.2.7 Results For Entries That Have Left the Result Set.....13 3.3 Responses Requiring Special Consideration.................14 3.3.1 Returning Results During the Persistent Phase.........14 3.3.2 No Mixing of Sync Phase with Persist Phase............14 3.3.3 Returning Updated Results During the Sync Phase.......14 3.3.4 Operational Attributes and Administrative Entries.....15 3.3.5 Virtual Attributes....................................15 3.3.6 Modify DN and Delete Operations Applied to Subtrees...16 3.3.7 Convergence Guarantees................................16 3.4 LCUP Search Termination...................................16 3.4.1 Server Initiated Termination..........................16 3.4.2 Client Initiated Termination..........................17 3.5 Protocol Flow.............................................17 3.6 Size and Time Limits......................................18 3.7 Operations on the Same Connection.........................18 3.8 Interactions with Other Controls..........................18 4. Client Side Considerations...................................18 4.1 Using Cookies with Different Search Criteria..............18 4.2 Renaming the Base Object..................................19 Megginson, et. al. Expires - August 2003 [Page 2] LDAP Client Update Protocol February 2003 4.3 Use of Persistent Searches With Respect to Resources......19 4.4 Continuation References to Other LCUP Contexts............19 4.5 Referral Handling.........................................19 4.6 Multiple Copies of Same Entry During Sync Phase...........19 4.7 Handling Server Out of Resources Condition................20 5. Server Implementation Considerations.........................20 5.1 Server Support for UUIDs..................................20 5.2 Example of Using an RUV as the Cookie Value...............20 5.3 Cookie Support Issues.....................................20 5.3.1 Support for Multiple Cookie Schemes...................20 5.3.2 Information Contained in the Cookie...................21 5.4 Persist Phase Response Time...............................21 5.5 Scaling Considerations....................................21 5.6 Alias Dereferencing.......................................22 6. Synchronizing Heterogeneous Data Stores......................22 Security Considerations.........................................22 Normative References............................................22 Informative References..........................................23 Acknowledgments.................................................23 Author's Addresses..............................................23 Full Copyright Statement........................................24 Appendix - Features Left Out of LCUP............................25 1. Overview The LCUP protocol is intended to allow LDAP clients to synchronize with the content stored by LDAP servers. The problem areas addressed by the protocol include: -mobileMobile clients that maintain a local read-only copy of the directory data. While off-line, the client uses the local copy of the data. When the client connects to the network, it synchronizes with the current directory content and canbeoptionallynotifiedreceive notification about the changes that occur while it ison- line.on-line. For example, a mail client can maintain a local copy of the corporate address book that it synchronizes with the master copy whenever the clientgetsis connected to the corporate network. -applicationsApplications intending to synchronize heterogeneous data stores. A meta directory application, for instance, would periodically retrieve a list of modified entries from the directory, construct the changes and apply them to a foreign data store. -clientsClients that need to take certain actions when a directory entry is modified. For instance, an electronic mail repository may want to perform a "create mailbox" task when a new person entry is added to Megginson, et. al. Expires - August 2003 [Page 3] LDAP Client Update Protocol February 2003 an LDAP directory and a "delete mailbox" task when a person entry is removed. The problem areas not being considered: - directory server to directory server synchronization. The IETF is developing a LDAP replicationprotocol thatprotocol, called LDUP [RFC3384], which isbeing defined byspecifically designed to address this problem area. There are currently several protocols in use for LDAP client server synchronization. While each protocol addresses theLDUP IETF workingneeds of a particular groupshould be used for this purpose. Several featuresof clients (e.g., on-line clients or off-line clients), none satisfies theprotocol distinguish it from LDUP replication. First, the server does not maintain any state information on behalfrequirements ofits clients. Theall clientsare responsible for storing the information about how up to date they are with respect to the server's content. Second, no predefined agreements exist between the clients and the servers. The client decides when and from where to retrieve the changes. Finally, the server never pushes the data to the client; the client always initiates the update session during which it pulls the changes from the server. The set of clients that are allowed to synchronize with an LDAP server is determined by the server defined policy. There are currently several protocols in use for LDAP client server synchronization. While each protocol addresses the needs of a particular group of clients (e.g., on-line clients or off-line clients) none satisfies the requirements of all clients inin the target group. For instance, a mobile client that was off-line and wants to become up to date with the server and stay up to date while connected can't be easily supported by any of the existing protocols.Megginson, et. al. Proposed Standard - Expires: May 2002 2 ALCUP is designed such that the servercan define a naming context or some part thereof to participate in LCUP. This document will referdoes not need tothis as an LCUP Context. For example, LDUP defines a replica, a partmaintain state information on behalf of theDIT which may participate in replication.client. TheLCUP context may be coincident withclients are responsible for storing thereplicated area, depending oninformation about how up to date they are with respect to the server'simplementation. It is assumed that most server implementations ofcontent. LCUPwill make use ofdesign avoids theserver's underlying replication mechanism, but this does not haveneed for LCUP-specific update agreements to beLDUP compliant. 4. Protocol Specification This section describes the protocol elementsmade between client andthe protocol flow. 4.1 Unique Identifiers Distinguished names can change, so are therefore unreliable as identifiers. TheserverSHOULD assign a Unique Identifierprior toeach entry as it is created. This identifier will be stored as an operational attribute of the entry, named `entryUUID'.LCUP use. TheentryUUID attribute is single valued. If theclientwantsdecides when and from where touse entryUUID, it should supply entryUUID inretrieve thelist of attributeschanges. LCUP design requires clients toreturn ininitiate the update session and "pull" the changes from server. LCUPsearch (described below).operations are subject to administrative and access control policies enforced by the server. 2. Specification of Protocol Elements The following sections define the new elements required to use this protocol. 2.1 Universally Unique Identifiers Distinguished names can change, so are therefore unreliable as identifiers. Aconsistent algorithmUniversally Unique Identifier (or UUID forgenerating such unique identifiers mayshort) MUST bestandardized at some point in the future.used to uniquely identify entries used with LCUP. ThedefinitionUUID is part of theentryUUIDSync Update control value (see below) returned with each search result. The server SHOULD provide the UUID as a single valued operational attributetype, written usingof theBNF formentry (e.g. "entryUUID"). We RECOMMEND that the server provides a way to do efficient (i.e. indexed) searches for values ofAttributeDescription describedUUID e.g. by using a search filter like (entryUUID=<some UUID value>) to quickly search for and retrieve an entry based on its UUID. Servers SHOULD use a UUID format as specified inRFC 2252 [RFC2252] is: ( OID-To-Be-Specified NAME `entryUUID' DESC `unique entry identifier' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation ) 4.2[UUID]. The UUID used by LCUP is a value of the following ASN.1 type: Megginson, et. al. Expires - August 2003 [Page 4] LDAP Client Update Protocol February 2003 LCUPUUID ::= OCTET STRING 2.2 LCUP Scheme and LCUP CookieValueThe LCUP protocol uses a cookie to hold the state of the client's data with respect to the server's data. Each cookie format is uniquely identified by its scheme. The LCUPCookieScheme is a value of the following ASN.1 type:LCUPCookieLCUPScheme ::=SEQUENCE { scheme LDAPOID, value OCTET STRING OPTIONAL } scheme - thisLDAPOID This is the OID which identifies the format of the LCUP Cookie value. The scheme OID,likeas all object identifiers, MUST be unique for a given cookie scheme. The cookie value may be opaque or it may be exposed to LCUP clients. For cookie schemes that expose their value, the preferred form of documentation is an RFC. It is expected that there will be one or more standards track cookie schemes where the value format is exposed and described in detail.Megginson, et. al. Proposed Standard - Expires: May 2002 3The LCUP Cookie is a value- thisof the following ASN.1 type: LCUPCookie ::= OCTET STRING This is the actual data describing the state of the client's data. This value may be opaque, or its value may have somewell knownwell-known format, depending on the scheme.The cookie value MUST be included except when a client has no stored state; i.e., when the client is requesting a full synchronization. When the server sends back a cookie, the cookie value MUST be present. Further uses of the LCUP CookieFurther uses of the LCUP Cookie value are described below.4.32.3 LCUPCookie Schemes Operational Attribute The OIDsContext A part of thesupportedDIT which is enabled for LCUPcookie schemes SHOULD be published using the following operational attribute: ( OID-TBD NAME 'lcupCookieScheme' EQUALITY objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 NO-USER-MODIFICATION USAGE directoryOperation ) The lcupCookieScheme operational attribute MUST be present in the root DSE. The lcupCookieScheme operational attribute MAY be present in every directory entry that may be usedis referred to asthe baseObject for a search request that containsan LCUPclientUpdate control. IfContext. A server may support one or more LCUP Contexts. For example, aclient wants to determine whatserver with two naming contexts may support LCUP in one naming context but not the other, or support different LCUP cookie schemesare supported, itin each naming context. Each LCUP Context MAY use abase objectdifferent cookie scheme. An LCUP searchto readwill not cross an LCUP Context boundary, but will instead return a SearchResultReference message, with thelcupCookieScheme attribute fromLDAP URL specifying theentry that will be usedsame host and port as currently being searched, and with thebaseObject in subsequentbaseDN set to the baseDN of the new LCUPsessions,Context. The client is thenqueryresponsible for issuing another search using theroot DSEnew baseDN, and possibly a different cookie ifthe lcupCookieScheme was not found in the base entry. Clients SHOULD NOT search for entries that contain lcupCookieScheme values; rather, it is RECOMMENDEDthatservers supportLCUPsessions based at as manyContext uses a differententries as possible. Each value of the attribute will becookie. The client is responsible for maintaining alist of OIDs of the cookie schemes followed by the DNmapping of theLCUP context which supportsLDAP URL to its corresponding cookie. 2.4 Additional LDAP Result Codes defined by LCUP Megginson, et. al. Expires - August 2003 [Page 5] LDAP Client Update Protocol February 2003 Implementations of this specification SHALL recognize theschemes.following additional resultCode values. Thedelimiter will be a single space character. For example: lcupCookieScheme: 1.2.3.4 5.6.7.8 dc=mycorp, dc=com Everything after the last space afterLDAP result code names and numbers defined in thelast OID willfollowing table are to be replaced with IANA assigned result code names and numbers per RFC 3383 [RFC3383]. lcupResourcesExhausted (TBD) theLCUP Context DN. If the attributeserver ispresent in a regular directory entry in an LCUP Context, the values corresponding to DNs other thanrunning out of resources lcupSecurityViolation (TBD) theLCUP Context containingclient is suspected of malicious actions lcupInvalidData (TBD) invalid scheme or cookie was supplied by theentry MAY be omitted. 4.4 Client Update Control Value Aclientinitiates a synchronization session withlcupUnsupportedScheme (TBD) The cookie scheme is aservervalid OID but is not supported byattaching a clientUpdate controlthis server lcupReloadRequired (TBD) indicates that client data needs toa search operation. The search specification determines the part ofbe reinitialized. This reason is returned if thedirectoryserver does not contain sufficient informationtree (DIT) the client wishesto synchronizewith,theset of attributes it is interested in andclient or if theamount ofserver's data was reloaded since theclient is willing to receive. The clientUpdate control contains the client'slast synchronizationspecification.session ThecontrolType field for the Megginson, et. al. Proposed Standard - Expires: May 2002 4 clientUpdate control is ClientUpdateControlOID (to be assigned).uses of these codes are described below. 2.5 Sync Request Control ThecontrolValueSync Request Control is anOCTET STRING, whose contents areLDAP Control [RFC2251, Section 4.1.2] where thebytes ofcontrolType is theBER encoding ofobject identifier IANA-ASSIGNED-OID.1 and thefollowing: ClientUpdateControlValuecontrolValue, an OCTET STRING, contains a BER-encoded syncRequestControlValue. syncRequestControlValue ::= SEQUENCE { updateType ENUMERATED {synchronizeOnlysyncOnly (0),synchronizeAndPersistsyncAndPersist (1), persistOnly (2) }, sendCookieInterval INTEGER OPTIONAL, scheme LCUPScheme OPTIONAL, cookie LCUPCookie OPTIONAL }updateType - specifies the type of update requested by the client synchronizeOnlysendCookieInterval - the serversends allSHOULD send thedata needed to synchronizecookie back in theclient withSync Update control value (defined below) for every sendCookieInterval number of SearchResultEntry and SearchResultReference PDUs returned to theserver, then closesclient. For example, if theconnection synchronizeAndPersist -value is 5, the serversends all the data needed to synchronize the client withSHOULD send theserver, then leaves opencookie back in theconnection, sendingSync Update control value for every 5 search results returned to theclient any new added, modified,client. If this value is absent, zero ordeleted entries which satisfy the search criteria. persistOnly -less than zero, the serverdoes not synchronize the data with the client but leaves open the connection and sends over any new added, modified, or deleted entries which satisfychooses thesearch criteria. cookieinterval. Megginson, et. al. Expires -a value that representsAugust 2003 [Page 6] LDAP Client Update Protocol February 2003 The Sync Request Control is only applicable to thecurrent statesearchRequest message. Use of this control is described below. 2.6 Sync Update Control The Sync Update Control is an LDAP Control [RFC2251, Section 4.1.2] where theclient's data. If a cookiecontrolType isprovided,theserver MUST useobject identifier IANA-ASSIGNED-OID.2 and theenclosedcontrolValue, an OCTET STRING, contains a BER-encoded syncUpdateControlValue. syncUpdateControlValue ::= SEQUENCE { stateUpdate BOOLEAN, entryUUID LCUPUUID OPTIONAL, -- REQUIRED for entries -- UUIDAttribute AttributeType OPTIONAL, entryLeftSet BOOLEAN, persistPhase BOOLEAN, schemethroughoutLCUPScheme OPTIONAL, cookie LCUPCookie OPTIONAL } The field UUIDAttribute contains thedurationname or OID of theLCUP session or untilattribute that the client should use to perform searches for entries based on the UUID. The client should be able to use it in anLCUP context boundary is crossed, since a new cookie mayequality search filter e.g. "(<uuid attribute>=<entry UUID value>)" and should berequiredable to use it inthat case. Ifthevalue or scheme partattribute list of thecookie is invalid,search request to return its value. The UUIDAttribute field may be omitted if the serverMUST return immediatelydoes not support searching on the UUID values. The Sync Update Control is only applicable to SearchResultEntry and SearchResultReference messages. Although entryUUID is OPTIONAL, it MUST be used with SearchResultEntry messages. Use of this control is described below. 2.7 Sync Done Control The Sync Done Control is an LDAP Control [RFC2251, Section 4.1.2] where the controlType is the object identifier IANA-ASSIGNED-OID.3 and the controlValue contains a BER-encoded syncDoneValue. syncDoneValue ::= SEQUENCE { scheme LCUPScheme OPTIONAL, cookie LCUPCookie OPTIONAL } The Sync Done Control is only applicable to SearchResultDonemessage with the clientUpdateDonemessage. Use of this controlattachedis described below. 3. Protocol Usage and Flow Megginson, et. al. Expires - August 2003 [Page 7] LDAP Client Update Protocol February 2003 3.1 LCUP Search Requests A client initiates a synchronization or persistent search session withthe reason seta server by attaching a Sync Request control to an LDAP searchRequest message. The search specification determines thevaluepart oflcupInvalidCookie (see below). Also,theLDAP result code MUST be unwillingToPerform. Ifdirectory information tree (DIT) thescheme partclient wishes to synchronize with, the set of attributes it is interested in and the amount of data thecookieclient isa valid OID, butwilling to receive. The Sync Request control contains the client's request specification. If there isnot supported,an error condition, the server MUSTreturnimmediatelywithreturn a SearchResultDone message with theclientUpdateDone control attached with the reasonresultCode set to an error code. This table maps a condition to its corresponding behavior and resultCode. Condition Behavior or resultCode Sync Request Control is not Server behaves as [RFC2251, Section supported 4.1.2] - specifically, if thevaluecriticality oflcupUnsupportedScheme (see below). Also, the LDAP result code MUST be unwillingToPerform. Ifthecookiecontrol isomitted,FALSE, the serverMAY use any scheme it supports. 4.5 Entry Update Control Value In response to the client's synchronization request,will process theserver returns onerequest as a normal search request Scheme is not supported lcupUnsupportedScheme A control value field is lcupInvalidData invalid (e.g. illegal updateType, ormore SearchResultEntry PDU that fits the client's specification. Each SearchResultEntry PDU also contains an entryUpdateControl which describes the LCUP state of the returned entry. To represent a deleted entry, the server attaches an Megginson, et. al. Proposed Standard - Expires: May 2002 5 entryUpdate control to the corresponding SearchResultEntry. The SearchResultEntry corresponding to a deleted entry MUST contain a valid DN and MAY contain a valid Unique Identifier but, to reduce the amount of data sent to the client, it SHOULD not contain any other attributes. Distinguished names can change, so are therefore unreliable as identifiers. A Unique Identifier MAY therefore be assigned to each entry as it is created. The Unique Identifier allows the client to uniquely identify entries even in the presence of modifyDN operations. The Unique Identifier is carried in the entryUUID attribute. For returned SearchResultEntry PDUs other than deleted entries, the client MAY request that the Unique Identifier attribute be returned by specifying it in the attribute list to be returned by the search request. If the Unique Identifier is not returned, the client MAY use the entry DN to keep track of returned entries. Furthermore, the server may elect to periodically return to the client the cookie that represents the state of the client's data. This information is useful in case the client crashes or gets disconnected. The cookie SHOULD be present in every entryUpdate control sent to the client to insure ease of synchronization. The cookie is also provided in the entryUpdate control. The controlType field for the entryUpdate control is EntryUpdateControlOID (to be assigned). The controlValue is an OCTET STRING, whose contents are the bytes of the BER encoding of the following: EntryUpdateControlValue ::= SEQUENCE { stateUpdate BOOLEAN, entryDeleted BOOLEAN, cookie LCUPCookie OPTIONAL } stateUpdate - if set to TRUE, indicates that the entry to which the control is attached contains no changes and it is sent only to communicate to the client the new cookie. In this case, the entryDeleted field MUST be ignored and the cookie field MUST contain the updated cookie. This feature allows updating the client's cookie when there are no changes that effect the client's data store. Note that the control MUST be attached to a valid SearchResultEntry, i.e. the entry should contain a valid dn. The server MAY send the entry named by the baseObject from the client's search request. entryDeleted - if set to TRUE, indicates that the entry to which the control is attached was deleted. The server MAY also set this to TRUE if the entry has left the client's search result set. As far as the client is concerned, a deleted entry is no different than an entry which has left the result set. cookie - the LCUP cookie value that represents the current state of the client's data. 4.6 Client Update Done Control Value Megginson, et. al. Proposed Standard - Expires: May 2002 6 When the server has finished processing the client's request, it attaches a clientUpdateDone control to the SearchResultDone message and sends it to the client. However, iftheSearchResultDone message contains a resultCode whichscheme is notsuccess, the clientUpdateDone control MAY be omitted. The controlType field for the clientUpdateDone control is ClientUpdateDoneControlOID (to be assigned). The controlValue is an OCTET STRING, whose contents are the bytes of the BER encoding ofa valid OID, or thefollowing: ClientUpdateDoneControlValue ::= SEQUENCE { reason INTEGER, reasonText LDAPString,cookieLCUPCookie OPTIONAL } reason - reason for terminating the operation. The following values are defined: lcupSuccess (0) the operation was successfully processed lcupResourcesExhausted (1) the serveris invalid) Server is running out ofresource lcupSecurityViolation (2) thelcupResourcesExhausted resources Server suspects clientis suspectedof lcupSecurityViolation maliciousactions lcupInvalidCookie (3) invalid cookie was supplied bybehavior (frequent connects/disconnects, etc.) The server cannot bring the lcupReloadRequired client- both/eitherup to date (server data has been reloaded, or other changes that prevent convergence) 3.1.1 Initial Synchronization and Full Resync For an initial synchronization or full resync, thescheme and/orfields of thevalue part was invalid lcupUnsupportedScheme (4) TheSync Request control MUST be specified as follows: Megginson, et. al. Expires - August 2003 [Page 8] LDAP Client Update Protocol February 2003 updateType - MUST be set to syncOnly or syncAndPersist sendCookieInterval - MAY be set schemepart of- MAY be set - if set, thecookie is a valid OID but is not supported byserver MUST use this specified scheme or return lcupUnsupportedScheme (see above) - if not set, the serverlcupClientDisconnect (5) client requested search termination usingMAY use any scheme it supports. cookie - MUST NOT be set If thestopClientUpdaterequest(defined below) lcupReloadRequired (6) indicates thatwas successful, the clientdata needswill receive results as described in the section "LCUP Search Responses" below. 3.1.2 Incremental or Update Synchronization For an incremental or update synchronization, the fields of the Sync Request control MUST be specified as follows: updateType - MUST be set to syncOnly or syncAndPersist sendCookieInterval - MAY bereinitialized. This reason is returned ifset scheme - MUST be set cookie - MUST be set The client SHOULD always use theserver does not contain sufficient information to synchronizelatest cookie it received from theclient or thatserver. If theserver's datarequest wasreloaded sincesuccessful, thelast synchronization session reasonText - The reasonText fieldclient will receive results as described in the section "LCUP Search Responses" below. 3.1.3 Persistent Only For persistent only search request, the fields ofthis construct may, attheserver's option,Sync Request MUST beusedspecified as follows: updateType - MUST be set toreturn a string containing a textual, human-readable (terminal control and page formatting characters shouldpersistOnly sendCookieInterval - MAY beavoided) error diagnostic. Asset scheme - MAY be set - if set, the server MUST use thiserror diagnostic isspecified scheme or return lcupUnsupportedScheme (see above) - if notstandardized, implementations MUST NOT rely onset, thevalues returned. Ifserver MAY use any scheme it supports. cookie - MAY be set, but the serverchooses not to return a textual diagnostic,MUST ignore it If thereasonText field ofrequest was successful, theClientUpdateDoneControlValue MUST contain a zero length string. The reasonText should be limited to charactersclient will receive results as described in therange 0x00section "LCUP Search Responses" below. 3.2 LCUP Search Responses In response to0x7F. cookie -the client's LCUPcookie valuerequest, the server returns zero or more SearchResultEntry or SearchResultReference PDU thatrepresentsfits thecurrentclient's specification, followed by a SearchResultDone PDU. The behavior is as specified in [RFC2251 Section 4.5]. Each SearchResultEntry or SearchResultReference PDU also contains a Sync Update control that describes the LCUP state of theclient's data. Although this value is OPTIONAL, it MUST be setreturned entry. Megginson, et. al.Proposed StandardExpires -Expires: May 2002 7August 2003 [Page 9] LDAP Client Update Protocol February 2003 The SearchResultDone PDU contains a Sync Done control. The following sections specify behaviors in addition to [RFC2251 Section 4.5]. 3.2.1 Sync Update Informational Responses The server may use theClientUpdateDoneControlValue ifSync Update control to return information not related to a particular entry. It MAY do this at any time to return a cookie to thereason is lcupSuccessclient, orlcupClientDisconnect and the LDAP search result code is success. This provides a good "checksum" of whatto inform theserver thinksclient that thestatesync phase ofthe client is. If some error occurred, either an LDAPa syncAndPersist searcherror (e.g. insufficientAccessRights) or an LCUP error (e.g. lcupUnsupportedScheme),is complete and thecookiepersist phase has begun. It MAYbe omitted. If server resources become tight,do this during theserver can terminate one or more search operations by sendingpersist phase even though no entry has changed that would have normally triggered aSearchResultDone messageresponse. In order to do this it is REQUIRED to return theclient(s). Unless the client setsfollowing: - A SearchResultEntry PDU with theupdateTypeobjectName field set topersistOnly, the server attaches a clientUpdateDone control that containsthecookie that corresponds toDN of thecurrent statebaseObject of theclient's datasearch request andthewith an empty attribute list. - A Sync Update control valueofwith thereason field isfields set tolcupResourcesExhausted. A serverthe following: stateUpdate - MUST be setpolicy is used to decide which searchestoterminate. This can alsoTRUE entryUUID - SHOULD beused as a security mechanismset todisconnect clients that are suspectedthe UUID ofmalicious actions, but iftheserver can infer thatbaseObject of theclient is malicious,search request entryLeftSet - MUST be set to FALSE persistPhase - MUST be FALSE if theserver should return lcupSecurityViolationsearch is in thereason fieldsync phase ofthe response. 4.7 Stop Client Update Requesta request, andResponse The Stop Client Update operationMUST be TRUE if the search isan LDAPv3 Extended Operation [RFC2251, Section 4.12] andin the persist phase UUIDAttribute - SHOULD only be set if this isidentified byeither the first result returned or if theOBJECT IDENTIFIER stopClientUpdateRequestOID (toattribute has changed scheme - MUST beassigned). This section details the syntax ofset if theprotocol. An LDAPv3 Extended Requestcookie isdefined in [LDAPv3] as follows: ExtendedRequest ::= [APPLICATION 23] SEQUENCE { requestName [0] LDAPOID, requestValue [1] OCTET STRING OPTIONAL }set and the cookie format has changed; otherwise, it MAY be omitted cookie - SHOULD be set If theclient needsserver merely wants to return a cookie toterminatethesynchronization process andclient, itwishes to obtainshould return as above with the cookiethat represents the current state of its data, it issuesfield set. During astopClientUpdateRequest extended operation. The operation carriessyncAndPersist request, thefollowing data. The extended operation requestValue is an OCTET STRING, whose contents areserver MUST return as above immediately after thebyteslast entry of theBER encodingsync phase has been sent and before the first entry of thefollowing: StopClientUpdateRequestValue ::= MessageID StopClientUpdateRequestValue -persist phase has been sent. In this case, themessage ID ofpersistPhase field MUST be set to TRUE. This lets thesearchclient know thatincludedtheoriginal clientUpdate control The server responds immediately with a stopClientUpdateResponse extended operation that carries no data,sync phase is complete andan OBJECT IDENTIFIER of stopClientUpdateResponseOID (to be assigned). The server MAY send any pending SearchResultEntry PDUs iftheserver cannot easily abort or remove those search results from its outgoing queue.persist phase is starting. 3.2.2 Cookie Return Frequency Theserver SHOULD send as fewcookie field ofthese remaining SearchResultEntry PDUs as possible. Finally, the server sends the message SearchResultDone withtheclientUpdateDoneSync Update controlattached. Thevalueof the reason Megginson, et. al. Proposed Standard - Expires: May 2002 8MAY be set in any returned result, during both theclientUpdateDone control value MUST be either an error code (some value other than lcupSuccess) or lcupClientDisconnect.sync phase and the persist phase. ThestopClientUpdateResponse is sent only to satisfy LDAP requirement that everyservermust issue an extended response for each extended request it receives. Ifshould return the cookie to the client often enough for the clientis not interestedto resync inthe state information, it can simply abandona reasonable period of time in case the searchoperationis disconnected ordisconnect fromotherwise terminated. The sendCookieInterval field in theserver.Sync Request control is a suggestion Megginson, et. al. Expires - August 2003 [Page 10] LDAP Client Update Protocol February 2003 to the server of how often to return the cookie in the Sync Update control. The server SHOULD respect this value. TherequestName portionscheme field of thestopClientUpdate mustSync Update control value MUST be set if theOID stopClientUpdateOID (tocookie is set and the cookie format has changed; otherwise, it MAY beassigned). The requestValueomitted. Some clients may have unreliable connections, for example, a wireless device or a WAN connection. These clients may want to insure that the cookie is returned often in themessage ID correspondingSync Update control value, so that if they have to reconnect, they do not have to process many redundant entries. These clients should set theclient's search request. IfsendCookieInterval in themessage ID isSync Request control value to a low number, perhaps even 1. Some clients may have a limited bandwidth connection, and may notvalid,want to receive theserver MUST sendcookie very often, or even at all (however, the cookie is always sent backtoin theclient an LDAP error code of unwillingToPerform. 4.8 Protocol Flow The client server interaction can proceedSync Done control value upon successful completion). These clients should set the sendCookieInterval inthree different ways depending ontheclient's requirements. Protocol flows beginning with an asterisk (*) are optional or conditional. IfSync Request control value to a high number. A reasonable behavior of theclient's intentserver isnottosynchronizereturn the cookie only when databut to trigger actionsinresponse to directory modifications,theprotocol proceeds as follows: C->S Sends a search operation withLCUP context has changed, even if the client has specified aclientUpdate control attached. The search specification determinesfrequent sendCookieInterval. If nothing has changed, thepart ofserver can probably save some bandwidth by not returning theDITcookie. 3.2.3 Definition of an Entry That Has Entered theclient wishesResult Set An entry SHALL BE considered tosynchronize with andhave entered the client's search result setof attributes it is interested in. The updateType fieldif one of thecontrol value should be set to persistOnly. *S->C If therefollowing conditions isan error (invalid search scope, invalid cookie)met: - During theserver returnssync phase for an incremental sync operation, theappropriate error codes and terminatesentry is present in therequest (SearchResultDone message with optional clientUpdateDone control) S->C Sends change notificationsearch result set but was not present before; this can be due to theclient for each change toentry being added via an LDAP Add operation, or by thedata withinentry being moved into theclient's search specification. Each SearchResultEntry may haveresult set by anentryUpdate control attached. *S->C If the server starts to run out of resourcesLDAP Modify DN operation, or by some modification to theclient is suspected of malicious actions,entry that causes it to enter theserver SHOULD terminateresult set (e.g. adding an attribute value that matches the clients searchoperationfilter), or bysendingsome meta-data change that causes the entry to enter theclient a SearchResultDone message with clientUpdateDone control attached. Theresult set (e.g. relaxing of some access controlcontainsthat permits thereason field setentry to be visible tolcupResourcesExhausted or lcupSecurityViolation depending onthereasonclient) - During the persist phase fortermination. The server MAY provide more details toa persistent search operation, theclient viaentry enters thereasonText field ofsearch result set; this can be due to thecontrol. *C->S Ifentry being added via an LDAP Add operation, or by theclient receives lcupResourcesExhausted error fromentry being moved into theserver, it MUST wait for a while before attempting another synchronization session withresult set by an LDAP Modify DN operation, or by some modification to theserver. It is RECOMMENDEDentry thatclients use an exponential backoff strategy. C->S The client terminatescauses it to enter thesearch. The client can do this by abandoningresult set (e.g. adding an attribute value that matches the clients searchoperation, disconnecting from the server,filter), or bysendingsome meta-data change that causes thestopClientUpdate extended operation. *S->C Ifentry to enter theserver receivesresult set (e.g. relaxing of some access control that permits thestopClientUpdate extended op, it will immediately send backentry to be visible to thestopClientUpdate extended opclient) Megginson, et. al.Proposed StandardExpires -Expires: May 2002 9 response *S->C If the client sent the stopClientUpdate extended op,August 2003 [Page 11] LDAP Client Update Protocol February 2003 3.2.4 Definition of an Entry That Has Changed An entry SHALL BE considered to be changed if one or more of theserver MAY send any pending SearchResultEntry PDUsattributes inits outgoing queue *S->C Iftheclient sentattribute list in thestopClientUpdate extended op, aftersearch request have been modified. For example, if theserver sendssearch request listed theresponseattributes "cn sn uid", andany pending SearchResultEntry PDUs, the server sendsthere is an entry in theSearchResultDone messageclient's search result set with theclientUpdateDone control attached. The value of the reason field of"cn" attribute that has been modified, theclientUpdateDone control value willentry is considered to beeither lcupClientDisconnectmodified. The modification may be due to an LDAP Modify operation or by somelcup error code (not lcupSuccess). S->C Stops sending changeschange to theclient and closesmeta-data for theconnection. Ifentry (e.g. virtual attributes) that causes some change to theclient's intentvalue of the specified attributes. The converse of this is that an entry SHALL NOT BE considered tosynchronize withbe changed if none of theserver and then disconnect,attributes in the attribute list of theprotocol proceeds as follows: C->S Sends asearchoperation withrequest are modified attributes of theclientUpdate control attached. Theentry. For example, if the search request listed the attributes "cn sn uid", and there is an entry in the client's searchspecification determinesresult set with thepart"foo" attribute that has been modified, and none of theDIT"cn" or "sn" or "uid" attributes have been modified, theclient wishesentry is NOT considered tosynchronize with,be changed. 3.2.5 Definition of an Entry That Has Left the Result Set An entry SHALL BE considered to have left the client's search result set if one ofattributes itthe following conditions isinterested in andmet: - During theamount of datasync phase for an incremental sync operation, theclient is willing to receive. If thisentry is not present in theinitial synchronization session,search result set but was present before; this can be due to theclient either does not provide a cookieentry being deleted via an LDAP Delete operation, orprovides a cookie with no value; otherwise,by thecookie field ofentry leaving thecontrol isresult set via an LDAP Modify DN operation, or by some modification to thecookie received fromentry that causes it to leave theserver atresult set (e.g. changing/removing an attribute value so that it no longer matches theend ofclient's search filter), or by some meta-data change that causes thelast synchronization session. Ifentry to leave thescheme fieldresult set (e.g. adding of some access control that denies thecookie was provided,entry to be visible to theserver MUST use that scheme throughoutclient) - During theduration ofpersist phase for a persistent search operation, theLCUP sessionentry leaves the search result set; this can be due to the entry being deleted via an LDAP Delete operation, oruntilby the entry leaving the result set via anLCUP boundary is crossed, sinceLDAP Modify DN operation, or by some modification to theserver will usually require a different cookie inentry thatcase anyway. (Notecauses it to leave the result set (e.g. changing/removing an attribute value so that it no longer matches the client's search filter), or by some meta-data change that causes theclient can synchronize with different servers during different synchronization sessions.) The updateType field ofentry to leave thecontrol value isresult set (e.g. adding of some access control that denies the entry to be visible tosynchronizeOnly. *S->C If there is an error (invalid search scope, invalid cookie)theserver returnsclient). 3.2.6 Results For Entries Present in theappropriate error codes and terminatesResult Set Megginson, et. al. Expires - August 2003 [Page 12] LDAP Client Update Protocol February 2003 An entry SHOULD be returned as present under the following conditions: - The request(SearchResultDone message with optional clientUpdateDone control) *S->C If no cookieisspecified in the clientUpdate control,an initial synchronization orif the value field offull resync request and thecookieentry isempty, the server sends all data that matchespresent in the client's searchspecification followed by the SearchResultDone message with a clientUpdateDone control attached.result set - Thecontrol containsrequest is an incremental synchronization and thecookie that corresponds toentry has changed or entered thecurrent state ofresult set since theclient's datalast sync - The search is in the persist phase and thereason flag set to lcupSuccess. *S->C If an invalid cookie is specified,entry enters theserver sendsresult set or changes For a SearchResultEntry return, theSearchResultDone message with clientUpdateDone control attached. The reason fieldfields of the Sync Update controlisvalue MUST be set as follows: stateUpdate - MUST be set to FALSE entryUUID - MUST be set tolcupInvalidCookie andthereasonText field MAY contain explanationUUID of theerror. *S->C If a valid cookieentry entryLeftSet - MUST be set to FALSE persistPhase - MUST be set to FALSE if during the sync phase or TRUE if during the persist phase UUIDAttribute - SHOULD only be set if this isspecified andeither thedata that matchesfirst result returned or if thesearch specificationattribute hasbeen reloaded orchanged scheme - as above cookie - as above The searchResultReference return will look the same, except that theserver doesentryUUID is not required. If it is specified, it MUST containenough state information to synchronizetheclient, the server sends a SearchResultDone message with clientUpdateDone control attached. The reason fieldUUID of thecontrol is set to lcupReloadRequired andDSE holding thereasonText field Megginson, et. al. Proposed Standard - Expires: May 2002 10 MAY contain explanation ofreference knowledge. 3.2.7 Results For Entries That Have Left theerror. *S->C IfResult Set An entry SHOULD be returned as having left thecookie is valid andresult set under theclientfollowing conditions: - The request isup to date,an incremental synchronization during theserver sends a success response tosync phase and theclient. S->C Ifentry has left thecookieresult set - The search isvalidin the persist phase andthere is data tothe entry has left the result set An entry SHOULD besent,returned as having left theserver sendsresult set under themodified entries tofollowing conditions: - The entry has left theclient. Eachresult set as a result of an LDAP Delete or LDAP Modify DN operation against the entry itself (i.e. not as a result of an operation against its parent or ancestor) For a SearchResultEntrycontainsreturn where theattributes requested byentry has left theclient inresult set, thesearch specification regardlessfields ofwhether they were modified. An entryUpdate control withtheentryDeleted fieldSync Update control value MUST be setto TRUEas follows: stateUpdate - MUST beattached to every deleted entry. The server may also periodically attach an entryUpdate control to the entries sentset tothe clientFALSE Megginson, et. al. Expires - August 2003 [Page 13] LDAP Client Update Protocol February 2003 entryUUID - MUST be set toindicatethecurrent stateUUID of theclient's data. Inentry thatcase, the cookie field of the control represents the state of the client's data includingleft theentryresult set entryLeftSet - MUST be set to TRUE persistPhase - MUST be set towhichFALSE if during thecontrol is attached. Once allsync phase or TRUE if during thechanges are sent,persist phase UUIDAttribute - SHOULD only be set if this is either theserver sends a SearchResultDone withfirst result returned or if theclientUpdateDone control attached.attribute has changed scheme - as above cookie - as above Thecontrol containssearchResultReference return will look thecookiesame, except thatrepresentsthecurrent state ofentryUUID is not required. If it is specified, it MUST contain theclient's data. The reason fieldUUID of thecontrol is set to lcupSuccess. The client stores the cookie received fromDSE holding the reference knowledge. Some serveruntil the next synchronization session. *C->S Ifimplementations keep track of deleted entries using a tombstone - a hidden entry that keeps track of thereason fieldstate, but not all of thecontrol is set lcupReloadRequired,data, of an entry that has been deleted. In this case, theclient clears its data store and repeatstombstone may not contain all of thesynchronization process by sendingoriginal attributes of thesearch operation with clientUpdate control that contains no cookie, or that contains a cookie with no value field. Ifentry, and therefore it may be impossible for theclient's intent isserver to determine if an entry should besynchronized withremoved from theserver and stay notified about data modifications,result set based on theprotocol proceeds as follows: C->S The client behaves exactly asattributes in theprevious case except it setsclient's search request. Servers SHOULD keep enough information about theupdateType fieldattributes in thecontrol valuedeleted entries tosynchronizeAndPersist. S->C The server behaves exactly as indetermine if an entry should be removed from theprevious case exceptresult set. Since this may not be possible, theconnection is kept open afterserver MAY return an entry as having left theinitialresult setof changes is sent to the client. A SearchResultDone messageeven if it is notsent to the client; instead, the server keeps sending changes toor never was in theclient. *S->C Ifclient's result set. Clients MUST ignore these notifications. 3.3 Responses Requiring Special Consideration The following sections describe special handling that may be required when returning results. 3.3.1 Returning Results During theserver starts to run out of resources orPersistent Phase During theclient is suspected of malicious actions,persistent phase, the server SHOULDterminatereturn thesearch operation by sendingchanged entries to the client as quickly as possible. 3.3.2 No Mixing of Sync Phase with Persist Phase During aSearchResultDone messagesync phase, the server MUST NOT return any entries withclientUpdateDone control attached. The control containsthereason fieldpersistPhase flag set tolcupResourcesExhausted or lcupSecurityViolation depending on the reason for termination. The server MAY provide more details to the client via the reasonText field of the control. *C->S If the client receives lcupResourcesExhausted error fromTRUE, and during theserver, itpersist phase, all entries returned MUSTwait for a while before attempting another synchronization session withhave theserver. We recommend exponential backoff strategy. C->S Sends a stopClientUpdateRequest extended operationpersistPhase flag set totheTRUE. The serverto terminate the synchronization session. S->C Responds with a stopClientUpdateResponse extended operation followed by a SearchResultDoneMUST NOT mix and match sync phase entries with persist phase entries. If there are any sync phase entries to return, they MUST be returned before any persist phase entries are returned. 3.3.3 Returning Updated Results During theclientUpdateDoneSync Phase Megginson, et. al.Proposed StandardExpires -Expires: May 2002 11 control optionally attached. If present, the control contains the cookie that represents the current state of the client's data. The value of the reason field of the clientUpdateDone control value will be either lcupClientDisconnect or some lcup error code (not lcupSuccess). The controlAugust 2003 [Page 14] LDAP Client Update Protocol February 2003 There maynotbepresent if some error occurred. 4.9 Size and Time Limits The search request size orupdates to the entries in thetime limits can only be imposed for non-persistent operations, those thatresult setthe updateType fieldof a sync phase search during the actual search operation. If theClientUpdateControlValueDSA is under a heavy update load, and it attempts to send all of those updated entries tosynchronizeOnly (fortheentire operation) or synchronizeAndPersist (forclient in addition to theinitial synchronization phase only). Allotheroperations MUST set both limitsupdates it was already planning to0. The server SHOULD ignore the limits setsend forpersistent operations. 4.10 Changes vs. Operations The server sends totheclient modified entries rather than operations. Given this model,sync phase, the servercommunicates a modifyDN operation in onemay never get to the end oftwo ways: by sendingtheclientsync phase. Therefore, it is left up to thecurrent formdiscretion of theentry (with its new DN) along with an entryUUID attribute, or by sendingserver implementation to decide when the client is "in sync" - that is, when to end adeletion forsyncOnly request, or when to send theprevious DNSync Update Informational Response between the sync phase andan entry forthenew DN.persist phase of a syncAndPersist request. Thelatter method must be usedserver MAY send the same entry multiple times during the sync phase if the entry changes during the sync phase. A reasonable behavior is for the serverdoes not supportto generate a cookie based on theentryUUID attribute. In either case, ifserver state at the time the clientstate shows thatinitiated theobjectLCUP request, and only send entries up to thatunderwentpoint during themodifyDN operation wassync phase. Entries updated after that point will be returned only during therootpersist phase of asubtree, the clientsyncAndPersist request, or only upon an incremental synchronization. 3.3.4 Operational Attributes and Administrative Entries An operational attribute MUSTinfer thatbe returned if it is specified in the attributes list and would normally be returned as subject to theDNsconstraints ofall objects in[RFC2251 Section 4.5]. LDAP Subentries [SUBENTRY] MUST be returned if they would normally be returned by thesubtreesearch request. 3.3.5 Virtual Attributes An entry may havechanged such that they reflectattributes whose presence in thenew DNentry, or presence of values of thesubtree root. 4.11 Operations on the Same Connection Itattribute, ispermissible for the client to issue other LDAP operationsgenerated on theconnection usedfly, possibly by some mechanism outside of theprotocol. Since each LDAP request/response carries a message id there will be no ambiguity about which PDU belongs to which operation. By sharing the connection among multiple operations,entry, elsewhere in theserver willDIT. An example of this is collective attributes [COLLECTIVE]. These attributes shall beable to conserve its resources. 4.12 Interactions with Other LDAP Search and Response Controls LCUP defines neither restrictions nor guarantees about the abilityreferred touse the LDAP client update control definedin this documentin conjunction with other LDAP controls, except for the following: A server MAY ignore non-critical controls supplied with theas virtual attributes. LCUPcontrol. A server MAY ignoretreats these attributes theLCUP control if it is non-critical and itsame way as normal, non-virtual attributes. One consequence of this issupplied with other critical controls. If a server receives a critical LCUP control with another critical control, andthat if you change theserver does not support both controls atdefinition of a virtual attribute such that it makes thesame time,value of that attribute change in many entries in the client's search scope, this means that a serverSHOULDmay have to returnunavailableCriticalExtension. 5. Additional Features Megginson, et. al. Proposed Standard - Expires: May 2002 12 There are several features present in other protocols or considered useful by clientsmany entries to the client as a result of thatare currentlyone change. It is notincluded inanticipated that this will be a frequent occurrence, and theprotocol primarily because they are difficultserver has the option toimplement onsimply force theserver. These features are briefly discussed in this section. This section is intendedclient toopenresync if necessary. It is also possible that adiscussion onfuture LDAP control will allow themerits of includingclient to request only virtual or only non-virtual attributes. Megginson, et. al. Expires - August 2003 [Page 15] LDAP Client Update Protocol February 2003 3.3.6 Modify DN andapproachesDelete Operations Applied toimplementing these features. 5.1 Triggered Search Change Type This featureSubtrees There ispresent in the Triggered Search specification. A flaga special case where a Modify DN or a Delete operation isattached to each entry returnedapplied to theclient indicating the reason why thisbase entryis returned. The possible reasons from the draft are "- notChange: theof a subtree, and either that base entryexistedor entries in thedirectory and matchedsubtree are within the scope of an LCUP searchatrequest. In this case, all of thetimeentries in theoperation is being performed, - enteredSet:subtree are implicitly renamed or removed. In either of these cases, theentry enteredserver MUST do one of theresult,following: -leftSet: thetreat all of these entries as having been renamed or removed and return each entryleftto theresult,client as such -modified:decide that this would be prohibitively expensive, and force theentry was part ofclient to resync If theresult set, was modified orsearch base object has been renamed, andstill is in the result set." The leftSet feature is particularly useful because it indicates tothe clientthat an entry is no longer withinhas received a noSuchObject as theclient'sresult of a searchspecification andrequest, the clientcan removeMAY use theassociated data from its data store. Ironically, this featureentryUUID and UUIDAttribute to locate the new DN that is thehardest to implement onresult of theserver becausemodify DN operation. 3.3.7 Convergence Guarantees If at any time during an LCUP search, either during the sync phase or the persist phase, the serverdoes not keep track ofdetermines that it cannot guarantee that it can bring the client'sstatecopy of the data to eventual convergence, it SHOULD immediately terminate the LCUP search request andhas no easy wayreturn a SearchResultDone message with a resultCode oftelling which entries moved outlcupReloadRequired. This can also happen at the beginning ofscope betweenan incremental synchronizationsessions with the client. A compromise could be reached by only providing this feature for the operations that occur whilerequest, if the client presents a cookie that isconnectedout of date or otherwise unable tothe server.be processed. The client should then issue an initial synchronization request. This can happen, for example, if the data on the server iseasierreloaded, or if there has been some change toaccomplish becausethedecision aboutmeta-data that makes it impossible for thechange type canserver to determine if a particular entry should or should not bemade based only onpart of the search result set, or if the meta-data changewithout needmakes it too resource intensive forany historical information. This, however, would add complexity to the protocol. 5.2 Persistent Search Change Type This feature is present inthePersistent Search specification. Persistent search hasserver to calculate thenotion of changeTypes.proper result set. The server can also return lcupReloadRequired if it determines that it would be more efficient for the clientspecifies which type of updates will cause entriestobe returned,perform a reload, for example, if too many entries have changed andoptionally whethera simple reload would be much faster. 3.4 LCUP Search Termination 3.4.1 Server Initiated Termination When the servertags each returned entry withhas successfully finished processing thetype of change that caused that entryclient's request, it attaches a Sync Done control tobe returned. For LCUP,theintention is full synchronization, not partial. Each entry returned by an LCUP search will have some change associated withSearchResultDone Megginson, et. al. Expires - August 2003 [Page 16] LDAP Client Update Protocol February 2003 message and sends itthat may concernto the client.The client may have to haveHowever, if the SearchResultDone message contains alocal index of entries by DNresultCode that is not success orunique identifier to determinelcupClientDisconnect, the Sync Done control MAY be omitted. Although the LCUP cookie is OPTIONAL in the Sync Done control value, it MUST be set if theentry has been added or just modified. ItSearchResultDone resultCode iseasy for clients to determinesuccess or lcupClientDisconnect. The server SHOULD also set the cookie if theentry has been deleted becauseresultCode is lcupResourcesExhausted, timeLimitExceeded, sizeLimitExceeded, or adminLimitExceeded. This allows theentryDeleted value ofclient to more easily resync later. If some error occurred, either an LDAP search error (e.g. insufficientAccessRights) or an LCUP error (e.g. lcupUnsupportedScheme), theentryUpdateControl willcookie MAY beTRUE. 5.3 Sending Changes Megginson, et. al. Proposed Standard - Expires: May 2002 13 Some earlier synchronization protocols sentomitted. If theclient(s) onlycookie is set, themodified attributes ofscheme MUST be set also if theentry rather thancookie format has changed, otherwise, it MAY be omitted. If server resources become tight, theentire entry. While this approachserver cansignificantly reduce the amount of data returnedterminate one or more search operations by sending a SearchResultDone message to theclient, it has several disadvantages. First, unlessclient(s) with a resultCode of lcupResourcesExhausted. The server SHOULD attach aseparate mechanism (likeSync Done control with thechange type described above)cookie set. A server side policy is used tonotifydecide which searches to terminate. This can also be used as a security mechanism to disconnect clients that are suspected of malicious actions, but if theclient about entries moving intoserver can infer that thesearch scope, sending onlyclient is malicious, thechanges can result inserver SHOULD return lcupSecurityViolation instead. 3.4.2 Client Initiated Termination If the clienthaving an incomplete version ofneeds to terminate thedata. Let's consider an example. An attributesynchronization process and it wishes to obtain the cookie that represents the current state of its data, it issues anentry is modified. AsLDAP Cancel operation [CANCEL]. The server responds immediately with aresultLDAP Cancel response [CANCEL]. The server MAY send any pending SearchResultEntry or SearchResultReference PDUs if the server cannot easily abort or remove those search results from its outgoing queue. The server SHOULD send as few of these remaining messages as possible. Finally, thechange,server sends theentry entersmessage SearchResultDone with thescopeSync Done control attached. If the search was successful up to that point, the resultCode field of theclient's search.SearchResultDone message MUST be canceled [CANCEL], and the cookie MUST be set in the Sync Done control. Ifonlythere is an error condition, thechanges are sent,server MAY return as described in section 3.4.1 above, or MAY return as described in [CANCEL]. If the clientwould never seeis not interested in theinitial data ofstate information, it can simply abandon theentry. Second,search operation or disconnect from the server. 3.5 Protocol Flow The client server interaction can proceed in three different ways depending on the client's requirements. Protocol flows beginning with an asterisk (*) are optional or conditional. Megginson, et. al. Expires - August 2003 [Page 17] LDAP Client Update Protocol February 2003 <What to do about thisfeaturesection?????????????????> 3.6 Size and Time Limits The server SHALL support size and time limits as specified in [RFC2251, Section 5]. The server SHOULD ensure that if the operation ishardterminated due toimplement sincethese conditions, theserver might not contain sufficient informationcookie is sent back toconstructthechanges based solelyclient. 3.7 Operations on theserver's state and the client's cookie. On the other hand, this feature can be easily implemented by the client assuming thatSame Connection It is permissible for the clienthas the previous version ofto issue other LDAP operations on thedata and can perform valueconnection used byvalue comparisons. 5.4 Data Size Limits Some earlier synchronization protocols allowed clients to controltheamount of data sentprotocol. Since each LDAP request/response carries a message id there will be no ambiguity about which PDU belongs tothem inwhich operation. By sharing thesearch response. This feature was intendedconnection among multiple operations, the server will be able toallow clientsconserve its resources. 3.8 Interactions withlimited resourcesOther Controls LCUP defines neither restrictions nor guarantees about the ability toprocess synchronization datause the controls defined inbatches. However, anthis document in conjunction with other LDAPsearch operation already provides the meanscontrols, except for theclient to specify the size limit by settingfollowing: A server MAY ignore non- critical controls supplied with thesizeLimit field inLCUP control. A server MAY ignore an LCUP defined control if it is non-critical and it is supplied with other critical controls. If a server receives a critical LCUP control with another critical control, and theSearchRequest toserver does not support both controls at themaximum number of entriessame time, theclientserver SHOULD return unavailableCriticalExtension. It iswillingup toreceive. Whilethegranularity is notserver implementation to determine if thesame,server supports controls such as theassumption is that LCUP protocol will be implemented by regular LDAP clientsSort or VLV or similar controls thatcan deal withchange thelimitationsorder of theLDAP protocol. 5.5 Data Ordering Some earlier synchronization protocols allowed a client to specify that parententriesshould besentbeforeto thechildrenclient. But note that it may be difficult or impossible foradd operations and children entries sent before their parents during delete operations. This ordering helps clients to maintainahierarchical viewserver to perform an incremental synchronization in the presence of such controls, since thedata in their data store. While possibly useful, this feature is relatively hard to implement and is expensive to perform. 6.cookie will typically be based off a change number, or CSN, or timestamp, or some criteria other than an alphabetical order. 4. Client Side ConsiderationsThere are several issues that the implementors of a synchronization client need to consider: -4.1 Using Cookies with Different Search Criteria The cookie received from the server after a synchronization sessioncanSHOULD only be used with the sameor more restrictivesearch specificationthanas the search that generated the cookie.The server will rejectSome servers MAY allow thesearch operationcookie to be used with acookiemore restrictive search specification than the search that generated the cookie. If the server does notsatisfy this condition.support the cookie, it MUST return lcupInvalidCookie. This is because the client can end up with an incomplete data store otherwise. A more Megginson, et. al. Expires - August 2003 [Page 18] LDAP Client Update Protocol February 2003 restrictive search specification istheone thatgenerateswould generate a subset of the data produced by the original search specification.Megginson, et. al. Proposed Standard - Expires: May 2002 14 -4.2 Renaming the Base Object Because an LCUP client specifies the area of the tree with which it wishes to synchronize through the standard LDAP search specification, the client can be returned noSuchObject error if the root of the synchronization area was renamed between the synchronization sessions or during a synchronization session. If this condition occurs, the client can attempt to locate the root by using the root'sUnique IdentifierUUID saved in client's local data store. It then can repeat the synchronization request using the new search base. In general, a client can detect that an entry was renamed and apply the changes received to the right entry by using theUnique IdentifierUUID ratherthenthan DN based addressing.-4.3 Use of Persistent Searches With Respect to Resources Each active persistent operation requires that an open TCP connection be maintained between an LDAP client and an LDAP server that might not otherwise be kept open. Therefore, client implementors are encouraged to avoid using persistent operations for non-essential tasks and to close idle LDAP connections as soon as practical. The server may close connections if server resources become tight.-4.4 Continuation References to Other LCUP Contexts The client MAY receive a continuation reference (SearchResultReference [RFC2251 SECTION 4.5.3]) if the search request spans multiple parts of the DIT, some of which may require a different LCUP cookie, some of which may not even be managed by LCUP. The client SHOULD maintain a cache of the LDAP URLs returned in the continuation references and the cookies associated with them. The client is responsible for performing another LCUP search to follow the references, and SHOULD use the cookie corresponding to the LDAP URL for that reference (if it has a cookie).- For alias dereferencing, the server will behave as if the4.5 Referral Handling The clienthad requested neverDerefAliases or derefFindingBaseObj as the derefAliases field inmay receive a referral (Referral [RFC2251 SECTION 4.1.11]) when the searchrequest [RFC2251, Section 4.5.1]. If the client specifiesbase is avalue other than neverDerefAliases or derefFindingBaseObj,subordinate reference, and this will end the operation. 4.6 Multiple Copies of Same Entry During Sync Phase The serverwill return protocolError toMAY send theclient. - Changes to data (e.g., that might affectsame entry multiple times during a sync phase if theLCUP client's filter or scope) or meta-data (e.g., that might affectentry changes during theclient's read access) may affectsync phase. The client SHOULD use thepresencelast sent copy ofentries inthesearch set. Servers MAY notify LCUP clientsentry as the current one. Megginson, et. al. Expires - August 2003 [Page 19] LDAP Client Update Protocol February 2003 4.7 Handling Server Out ofchanges toResources Condition If thesearch set that result from such changes, but an LCUPclientMUST NOT assume that such notification will occur. Therefore, inreceives an lcupResourcesExhausted or lcupSecurityViolation resultCode, thecase where aclient SHOULD wait at least 5 seconds before attempting another operation. It ismaintaining a cache of entries using LCUP, the data held byRECOMMENDED that the client use an exponential backoff strategy, but different clients maybe a superset or a subset ofwant to use different backoff strategies. 5. Server Implementation Considerations 5.1 Server Support for UUIDs Servers MUST support UUIDs. UUIDs are required in the Sync Update control. Additionally, server implementers SHOULD make the UUID values for the entriesthat would be returned by a new search request. For example, if access control meta information is changedavailable as an attribute of the entry, and provide indexing or other mechanisms todeny accessallow clients toparticular entriessearch for an entry using the UUID attribute in the searchresult set, and the accessfilter. The syncUpdate controlinformation is outside of the search scope (e.g., inprovides aparent entry),field UUIDAttribute to allow the server to let the clientmay have entries stored locally which are no longer partknow the name or OID ofits desired search set. Similarly, Megginson, et. al. Proposed Standard - Expires: May 2002 15 if entries are added tothesearch result set dueattribute tochanges in meta-data, the client's cacheuse to search for an entry by UUID. 5.2 Example ofentries may not include these entries. 7. Server Implementation ConsiderationsUsing an RUV as the Cookie Value By design, the protocol supports multiple cookie schemes. This is to allow different implementations the flexibility of storing any information applicable to their environment. A reasonable implementation for an LDUP compliant server would be to use the Replica Update Vector (RUV). For each master, RUV contains the largest CSN seen from this master. In addition,theRUV implemented by some directory servers (not yet in LDUP) contains replica generation - an opaque string that identifies the replica's data store. The replica generation value changes whenever the replica's data is reloaded. Replica generation is intended to signal the replication/synchronization peers that the replica's data was reloaded and that all other replicas need to bereinitialized. RUV satisfies the three most important properties of the cookie: (1) it uniquely identifies the state of client's data, (2) it can be used to synchronize with multiple servers, and (3) it can be used to detect that the server's data was reloaded. A server may support one or more LCUP cookie schemes. It is expected that schemes will be published along with their OIDs as RFCs. If a client initiates an LCUP session with a particular scheme, the server MUST use that same scheme throughout the LCUP session, or until an LCUP context boundary is crossed, in which case the server will usually require a different cookie anyway. In addition, the cookie must contain enough information to allow the server to determine whether the cookie can be safely used with the search specification it is attached to. As discussed earlier in the document, the cookie can only be used with the search specification that is equally or more restrictive than the one for which the cookie was generated. An implementation must make sure that it can correctly updatereinitialized. RUV satisfies theclient's cookie when there is a size limit imposed onthree most important properties of thesearch results by eithercookie: (1) it uniquely identifies the state of client'srequest or bydata, (2) it can be used to synchronize with multiple servers, and (3) it can be used to detect that the server'sconfiguration.data was reloaded. If RUV is used as the cookie, entries last modified by a particular master must be sent to the client in the order of their last modified CSN. This ordering guarantees that the RUV can be updated after each entry is sent. 5.3 Cookie Support Issues 5.3.1 Support for Multiple Cookie Schemes A server may support one or more LCUP cookie schemes. It is expected that schemes will be published along with their OIDs as RFCs. The Megginson, et. al. Expires - August 2003 [Page 20] LDAP Client Update Protocol February 2003 server's DIT may be partitioned into different sections which may have different cookies associated with them. For example, some servers may use some sort of replication mechanism to support LCUP. If so, the DIT may be partitioned into multiple replicas. A client may send an LCUP search request that spans multiple replicas. Some parts of the DIT spanned by the search request scope maybe managed bysupport LCUP and some may not.A part of the DIT which is enabled for LCUP is referred to as an LCUP Context.The serverSHOULDMUST send a SearchResultReference [RFC2251, SECTION 4.5.3] when the LCUP ContextMegginson, et. al. Proposed Standard - Expires: May 2002 16for a returned entry changes. The server SHOULDreturnsend allentries for a particular LCUP Context before returning a referencereferences to other LCUP Contextsor non LCUP enabled parts ofin theDIT,search scope first, in order tominimize the processing burden onallow theclients.clients to process these searches in parallel. The LDAP URL(s) returned MUST contain the DN(s) of the base of another section of the DIT (however the server implementation has partitioned the DIT). The client will then issue another LCUP search using the LDAP URL returned. Each section of the DIT MAY require a different cookie value, so the client SHOULD maintain a cache, mapping the different LDAP URL values to different cookies. If the cookie changes, the scheme may change as well, but the cookie scheme MUST be the same within a given LCUP Context.An implementation SHOULD notify the client about all entries deleted from the search set since5.3.2 Information Contained in theclient's last session, but an LCUP client MUST NOT assume that such notification will occur. For example,Cookie The cookie must contain enough information to allow the servermight not notify the client of the deletion of an object if the object left the search set following the client's last synchronization and priorto determine whether theobject's deletion. An LDUP compliant implementationcookie canachieve this throughbe safely used with theuse of entry tombstones. The implementation should avoid aggressive tombstone purging since lack of tombstones would cause client's data tosearch specification it is attached to. As discussed earlier in the document, the cookie SHOULD only bereloaded. We suggestused with the search specification thatonlyis equal to thetombstone content be removed duringone for which theregular trimming cycle while tombstones themselves are discarded much less frequently.cookie was generated, but some servers MAY support using a cookie with a search specification that is more restrictive than the one used to generate the cookie. 5.4 Persist Phase Response Time The specification makes no guarantees about how soon a server should send notification of a changed entry to the clientwhen the connection between the client andduring theserver is kept open.persist phase. This is intentional as any specific maximum delay would be impossible to meet in a distributed directory service implementation. Serverimplementorsimplementers are encouraged to minimize the delay before sending notifications to ensure that clients' needs for timeliness of change notification are met.Implementors5.5 Scaling Considerations Implementers of servers that support the mechanism described in this document should ensure that their implementation scales well as the number of active persistent operations and the number of changes made in the directory increases. Serverimplementorsimplementers are also encouraged to support a large number of client connections if they need to support large numbers of persistent operations.8.Megginson, et. al. Expires - August 2003 [Page 21] LDAP Client Update Protocol February 2003 5.6 Alias Dereferencing LCUP design does not consider issues associated with alias dereferencing in search. Clients MUST specify derefAliases as either neverDerefAliases or derefFindingBaseObj. Servers are to return protocolError if the client specifies either derefInSearching or derefAlways. 6. Synchronizing Heterogeneous Data Stores Clients, like a meta directory join engine, synchronizing multiple writable datastoresstores, will only work correctly if each piece of informationiscomes from a singlemastered (for instance, only byauthoritative data source. In a replicated environment, anLDUP compliant directory).LCUP Context should employ the same conflict resolution scheme across all its replicas. This is because different systems have different notions of time and different update resolution procedures. As a result, a change applied on one system can be discarded by the other, thus preventing the data stores from converging.9.Security ConsiderationsMegginson, et. al. Proposed Standard - Expires: May 2002 17In some situations, it may be important to prevent general exposure of information about changes that occur in an LDAP server. Therefore, servers that implement the mechanism described in this document SHOULD provide a means to enforce access control on the entries returned and MAY also provide specific access control mechanisms to control the use of the controls and extended operations defined in this document. As with normal LDAP search requests, a malicious client can initiate a large number of persistent search requests in an attempt to consume all available server resources and deny service to legitimate clients. The protocol provides the means to stop malicious clients by disconnecting them from the server. The servers that implement the mechanism SHOULD provide the means to detect themalicious clients. In addition, the servers SHOULD provide the means to limit the number of resources that can be consumed by a single client. Access control on the data can be modified in such a way that the data is no longer visible to the client. The specification does not specify how the server should handle this condition. Moreover, data consistency is not guaranteed if access control is changed from a more restrictive to a less restrictive one. This is because access control can be considered as an additional filter on the search specification and the protocol does not support going from a more to a less restrictive search specification. See Client Side Considerations Section for more detailed explanation ofmalicious clients. In addition, the servers SHOULD provide theproblem. 10.means to limit the number of resources that can be consumed by a single client. Normative References[KEYWORDS][RFC2026] Bradner, S., "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, October 1996. [RFC2119] S. Bradner,"Keywords"Key words for use in RFCs to Indicate Requirement Levels", BCP 14 (also RFC2119,2119), March 1997. Megginson, et. al. Expires - August 2003 [Page 22] LDAP Client Update Protocol February 2003 [RFC2251] M. Wahl, T. Howes, S.KilleKille, "Lightweight Directory AccessProtocol",Protocol (v3)", RFC 2251, December 1997. [RFC2252] M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions", RFC 2252, December 1997.11. Acknowledgements[X.680] ITU-T, "Abstract Syntax Notation One (ASN.1) - Specification of Basic Notation", X.680, 1994. [X.690] ITU-T, "Specification of ASN.1 encoding rules: Basic, Canonical, and Distinguished Encoding Rules", X.690, 1994. [CANCEL] K. Zeilenga, "LDAP Cancel Extended Operation", draft- zeilenga-ldap-cancel-xx.txt, a work in progress. [UUID] International Organization for Standardization (ISO), "Information technology - Open Systems Interconnection - Remote Procedure Call", ISO/IEC 11578:1996. Informative References [RFC3383] K. Zeilenga, "IANA Considerations for LDAP", BCP 64 also RFC 3383), September 2002. [RFC3384] E. Stokes, et. al., "LDAPv3 Replication Requirements", RFC3384, October 2002. [SUBENTRY] K. Zeilenga, S. Legg, "Subentries in LDAP", draft- zeilenga-ldap-subentry-xx.txt, a work in progress. [COLLECTIVE] K. Zeilenga, "Collective Attributes in LDAP", draft- zeilenga-ldap-collective-xx.txt, a work in progress. Acknowledgments The LCUP protocol is based in part on the Persistent Search Change Notification Mechanism defined by Mark Smith, Gordon Good, Tim Howes, and Rob Weltman, the LDAPv3 Triggered Search Control defined by Mark Wahl, and the LDAP Control for Directory Synchronization defined by Michael Armijo.12.The members of the IETF LDUP working group made significant contributions to this document. Author's Addresses Rich Megginson Netscape CommunicationsCorp. 901 San Antonio Rd.Corp., an America Online company. Megginson, et. al.Proposed StandardExpires -Expires: May 2002 18 Palo Alto,August 2003 [Page 23] LDAP Client Update Protocol February 2003 360 W. Caribbean Drive Sunnyvale, CA94303-4900 Mail Stop SCA17 - 20194089 USA Phone: +1 505 797-7762 Email: richm@netscape.com Olga Natkovich Yahoo, Inc. 701 First Ave. Sunnyvale, CA 94089 Phone: +1 408 349-6153 Email: olgan@yahoo-inc.com Mark Smith Netscape CommunicationsCorp. 901 San Antonio Rd. Palo Alto,Corp., an America Online company. 360 W. Caribbean Drive Sunnyvale, CA94303-4900 Mail Stop SCA17 - 20194089 USA Phone: +1 650 937-3477 Email: mcs@netscape.com Jeff Parham Microsoft Corporation One Microsoft Way Redmond, WA 98052-6399 Phone: +1 425 882-8080 Email: jeffparh@microsoft.com13.Full Copyright Statement"CopyrightCopyright (C) The Internet Society(date).(2002). 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. Megginson, et. al. Expires - August 2003 [Page 24] LDAP Client Update Protocol February 2003 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.14.AppendixA-SummaryFeatures Left Out ofChanges Megginson, et. al. Proposed Standard - Expires: May 2002 19 Changes new to version 02: Section 4.2: The lcupCookieScheme operational attribute MUST beLCUP There are several features present in other protocols or considered useful by clients that are currently not included in theroot DSE, and MAY beprotocol primarily because they are difficult to implement on the server. These features are briefly discussed in this section. Triggered Search Change Type This feature is present inentries. Each value oftheattribute inTriggered Search specification. A flag is attached to each entry returned to theroot DSE will be a list of OIDs of cookie schemes followed byclient indicating theDN ofreason why this entry is returned. The possible reasons from theLCUP context which supportsdraft are - notChange: theschemes. The attribute valueentry existed in theDIT entries will bedirectory and matched thelist of OIDs followed bysearch at the time the operation is being performed, - enteredSet: theDN ofentry entered theLCUP context. section 4.5result, - leftSet: the entryuuid is now MAY instead of MUSTleft the result, -if implementers do not wish to identify entries by a unique ID other than DN (which may not be unique), then so be it. For returned SearchResultEntry PDUs other than deleted entries,modified: theclient MAY request thatentry was part of theUnique Identifier attribute be returned by specifying itresult set, was modified or renamed, and still is in theattribute listresult set. The leftSet feature is particularly useful because it indicates tobe returned by the search request. section 4.5 - added "orthebase DN ofclient that an entry is no longer within the client's searchrequest."specification and the client can remove the associated data from its data store. Ironically, this feature is the hardest to implement on thephrase. "TheserverMAY send the entry atbecause therootserver does not keep track of the client'stree, or the base DNstate and has no easy way of telling which entries moved out of scope between synchronization sessions with theclient's search request." I thinkclient. A compromise could be reached by only providing thisclarifies which entryfeature for theclient may search for. section 4.6 -operations that occur while theclientUpdateDone controlclient isnow optional for error conditions. Also, the cookie value ofconnected to thecontrolserver. This isnow optional for lcup error conditions (e.g. not lcupSuccess or lcupClientDisconnect). Added section 4.12 - Interactions with Other LDAP Search and Response Controls Added blurb about alias dereferencing backeasier tosection 6: "For alias dereferencing,accomplish because theserver will behave as ifdecision about theclient had requested neverDerefAliases or derefFindingBaseObj aschange type can be made based only on the change without need for any historical information. This, however, would add complexity to thederefAliases fieldprotocol. Persistent Search Change Type This feature is present in the Persistent Search specification. Persistent searchrequest [RFC2251, Section 4.5.1]. Ifhas the notion of changeTypes. The client specifiesa value other than neverDerefAliases or derefFindingBaseObj, the serverwhich type of updates willreturn protocolErrorcause entries to be returned, and optionally whether theclient." Changed this in section 6: Because an LCUP client specifiesserver tags each returned entry with theareatype ofthe tree with which it wisheschange that caused that entry tosynchronize through the standardbe returned. Megginson, et. al. Expires - August 2003 [Page 25] LDAPsearch specification,Client Update Protocol February 2003 For LCUP, theclient can beintention is full synchronization, not partial. Each entry returnednoSuchObject error if the root of the synchronization area was renamed betweenby an LCUP search will have some change associated with it that may concern thesynchronization sessions "or duringclient. The client may have to have asynchronization session" Changes newlocal index of entries by DN or UUID toversion 01: The opaque cookiedetermine if the entry has beensplit into two parts - a scheme which is an OID, and a value. The value mayadded ormay not have a format knownjust modified. It is easy for clients to determine if theclient, depending onentry has been deleted because thespecified scheme. Section 4.2 describesentryLeftSet value of thenew cookie format and definesSync Update control will be TRUE. Sending Changes Some earlier synchronization protocols sent theLCUP Cookie Value. Megginson, et. al. Proposed Standard - Expires: May 2002 20 Added new section 4.3 -client(s) only thelcupCookieScheme operational attribute. Changes new to version 00: Addedmodified attributes of thedefinition for Unique Identifier (basically copied fromentry rather than the entire entry. While this approach can significantly reduce theLDUP model doc http://search.ietf.org/internet-drafts/draft- ietf-ldup-model-06.txt. I neededamount of data returned toaddthedefinition here because LCUP needsclient, it has several disadvantages. First, unless aUnique Identifier but should not be dependent on LDUP. Removed all normative references to LDUP. I've leftseparate mechanism (like theimplementation suggestions that referchange type described above) is used toLDUP, but LCUP should not be dependent on LDUP. Cleaned upnotify theprotocol flows. Removed this text from section 4.8: "Clients MUST NOT issue multiple synchronization requests onclient about entries moving into thesame connection. This is becausesearch scope, sending only theprotocol includeschanges can result in the client having anextended operation and it would be impossible to decide which synchronization session it belongs to." - Thisincomplete version of the data. Let's consider an example. An attribute of an entry isno longer true, sincemodified. As a result of theextended operation now includeschange, themessage IDentry enters the scope of thesearch request. "Client Side Consideration" section -client's search. If only the changes are sent, the clientwillwould neverreceive a referral or continuation reference Added section 12. Acknowledgements Removed normative referencessee the initial data of the entry. Second, this feature is hard todocumentsimplement since the server might notdepended on. Removed explicit references to software vendors. Section 4.1 - Changed ClientUpdateControlValuecontain sufficient information toremoveconstruct thekeepConnection and changesOnly fields and replace them with updateType which is an ENUMERATED with three values: synchronizeOnly, synchronizeAndPersist, and persistOnly. Section 4.2 - The EntryUpdateControlValue fields stateUpdatechanges based solely on the server's state andentryDeleted no longer have DEFAULT values, they must be specified - this eliminates any potential ambiguity. Addedthe client's cookie. On the other hand, thistextfeature can be easily implemented by the client assuming that the client has the previous version of the data and can perform value by value comparisons. Data Size Limits Some earlier synchronization protocols allowed clients to control thedescriptionamount ofthe entryDeleted field (section 4.2): "The server SHOULD also set thisdata sent toTRUE if the entry has leftthem in the search response. This feature was intended to allow clients with limited resources to process synchronization data in batches. However, an LDAP searchresult set. As far asoperation already provides the means for the clientis concerned, a deleted entry is no different than an entry which has leftto specify theresult set." Section 4.2 - Added an explanation ofsize limit by setting theconcept and requirement forsizeLimit field in theUnique Identifier. Section 4.4 - AddedSearchRequest to theextended operation a request value containingmaximum number of entries themessage idclient is willing to receive. While the granularity is not the same, the assumption is that regular LDAP clients that can deal with the limitations of theoperationLDAP protocol will implement LCUP. Data Ordering Some earlier synchronization protocols allowed a client tostop. Megginson, et. al. Proposed Standard - Expires: May 2002 21 Updated contact informationspecify that parent entries should be sent before the children forOlga. Removed Michael Armijoadd operations andadded Jeff Parham as an author. Changes newchildren entries sent before their parents during delete operations. This ordering helps clients toprevious version: "Authors" section - added Rich Megginson as the new editor. "Client Side Consideration" section - added a note andmaintain aquestion concerning referral and continuation reference handling. "Client Update Control Value" section (4.1) - clarified the meaninghierarchical view ofkeepConnection and added a table summarizingtheeffects of different values of keepConnection and changesOnly. "Stopdata in their data store. While possibly Megginson, et. al. Expires - August 2003 [Page 26] LDAP Client UpdateRequest and Response" - added section 4.4 describingProtocol February 2003 useful, thisextended operation.feature is relatively hard to implement and is expensive to perform. Megginson, et. al.Proposed StandardExpires -Expires: May 2002 22August 2003 [Page 27] ----