source: branches/samba-3.5.x/source4/ldap_server/devdocs/rfc4533.txt

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

File size: 72.2 KB
Line 
1
2
3
4
5
6
7Network Working Group K. Zeilenga
8Request for Comments: 4533 OpenLDAP Foundation
9Category: Experimental J.H. Choi
10 IBM Corporation
11 June 2006
12
13
14 The Lightweight Directory Access Protocol (LDAP)
15 Content Synchronization Operation
16
17Status of This Memo
18
19 This memo defines an Experimental Protocol for the Internet
20 community. It does not specify an Internet standard of any kind.
21 Discussion and suggestions for improvement are requested.
22 Distribution of this memo is unlimited.
23
24Copyright Notice
25
26 Copyright (C) The Internet Society (2006).
27
28IESG Note
29
30 The IESG notes that this work was originally discussed in the LDUP
31 working group. The group came to consensus on a different approach,
32 documented in RFC 3928; that document is on the standards track and
33 should be reviewed by those considering implementation of this
34 proposal.
35
36Abstract
37
38 This specification describes the Lightweight Directory Access
39 Protocol (LDAP) Content Synchronization Operation. The operation
40 allows a client to maintain a copy of a fragment of the Directory
41 Information Tree (DIT). It supports both polling for changes and
42 listening for changes. The operation is defined as an extension of
43 the LDAP Search Operation.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58Zeilenga & Choi Experimental [Page 1]
59
60
61RFC 4533 LDAP Content Synchronization Operation June 2006
62
63
64Table of Contents
65
66 1. Introduction ....................................................3
67 1.1. Background .................................................3
68 1.2. Intended Usage .............................................4
69 1.3. Overview ...................................................5
70 1.4. Conventions ................................................8
71 2. Elements of the Sync Operation ..................................8
72 2.1. Common ASN.1 Elements ......................................9
73 2.2. Sync Request Control .......................................9
74 2.3. Sync State Control ........................................10
75 2.4. Sync Done Control .........................................10
76 2.5. Sync Info Message .........................................11
77 2.6. Sync Result Codes .........................................11
78 3. Content Synchronization ........................................11
79 3.1. Synchronization Session ...................................12
80 3.2. Content Determination .....................................12
81 3.3. refreshOnly Mode ..........................................13
82 3.4. refreshAndPersist Mode ....................................16
83 3.5. Search Request Parameters .................................17
84 3.6. objectName ................................................18
85 3.7. Canceling the Sync Operation ..............................19
86 3.8. Refresh Required ..........................................19
87 3.9. Chattiness Considerations .................................20
88 3.10. Operation Multiplexing ...................................21
89 4. Meta Information Considerations ................................22
90 4.1. Entry DN ..................................................22
91 4.2. Operational Attributes ....................................22
92 4.3. Collective Attributes .....................................23
93 4.4. Access and Other Administrative Controls ..................23
94 5. Interaction with Other Controls ................................23
95 5.1. ManageDsaIT Control .......................................24
96 5.2. Subentries Control ........................................24
97 6. Shadowing Considerations .......................................24
98 7. Security Considerations ........................................25
99 8. IANA Considerations ............................................26
100 8.1. Object Identifier .........................................26
101 8.2. LDAP Protocol Mechanism ...................................26
102 8.3. LDAP Result Codes .........................................26
103 9. Acknowledgements ...............................................26
104 10. Normative References ..........................................27
105 11. Informative References ........................................28
106 Appendix A. CSN-based Implementation Considerations ..............29
107
108
109
110
111
112
113
114
115Zeilenga & Choi Experimental [Page 2]
116
117
118RFC 4533 LDAP Content Synchronization Operation June 2006
119
120
1211. Introduction
122
123 The Lightweight Directory Access Protocol (LDAP) [RFC4510] provides a
124 mechanism, the search operation [RFC4511], that allows a client to
125 request directory content matching a complex set of assertions and to
126 request that the server return this content, subject to access
127 control and other restrictions, to the client. However, LDAP does
128 not provide (despite the introduction of numerous extensions in this
129 area) an effective and efficient mechanism for maintaining
130 synchronized copies of directory content. This document introduces a
131 new mechanism specifically designed to meet the content
132 synchronization requirements of sophisticated directory applications.
133
134 This document defines the LDAP Content Synchronization Operation, or
135 Sync Operation for short, which allows a client to maintain a
136 synchronized copy of a fragment of a Directory Information Tree
137 (DIT). The Sync Operation is defined as a set of controls and other
138 protocol elements that extend the Search Operation.
139
1401.1. Background
141
142 Over the years, a number of content synchronization approaches have
143 been suggested for use in LDAP directory services. These approaches
144 are inadequate for one or more of the following reasons:
145
146 - failure to ensure a reasonable level of convergence;
147
148 - failure to detect that convergence cannot be achieved (without
149 reload);
150
151 - require pre-arranged synchronization agreements;
152
153 - require the server to maintain histories of past changes to DIT
154 content and/or meta information;
155
156 - require the server to maintain synchronization state on a per-
157 client basis; and/or
158
159 - are overly chatty.
160
161 The Sync Operation provides eventual convergence of synchronized
162 content when possible and, when not, notification that a full reload
163 is required.
164
165 The Sync Operation does not require pre-arranged synchronization
166 agreements.
167
168
169
170
171
172Zeilenga & Choi Experimental [Page 3]
173
174
175RFC 4533 LDAP Content Synchronization Operation June 2006
176
177
178 The Sync Operation does not require that servers maintain or use any
179 history of past changes to the DIT or to meta information. However,
180 servers may maintain and use histories (e.g., change logs,
181 tombstones, DIT snapshots) to reduce the number of messages generated
182 and to reduce their size. As it is not always feasible to maintain
183 and use histories, the operation may be implemented using purely
184 (current) state-based approaches. The Sync Operation allows use of
185 either the state-based approach or the history-based approach on an
186 operation-by-operation basis to balance the size of history and the
187 amount of traffic. The Sync Operation also allows the combined use
188 of the state-based and the history-based approaches.
189
190 The Sync Operation does not require that servers maintain
191 synchronization state on a per-client basis. However, servers may
192 maintain and use per-client state information to reduce the number of
193 messages generated and the size of such messages.
194
195 A synchronization mechanism can be considered overly chatty when
196 synchronization traffic is not reasonably bounded. The Sync
197 Operation traffic is bounded by the size of updated (or new) entries
198 and the number of unchanged entries in the content. The operation is
199 designed to avoid full content exchanges, even when the history
200 information available to the server is insufficient to determine the
201 client's state. The operation is also designed to avoid transmission
202 of out-of-content history information, as its size is not bounded by
203 the content and it is not always feasible to transmit such history
204 information due to security reasons.
205
206 This document includes a number of non-normative appendices providing
207 additional information to server implementors.
208
2091.2. Intended Usage
210
211 The Sync Operation is intended to be used in applications requiring
212 eventually-convergent content synchronization. Upon completion of
213 each synchronization stage of the operation, all information to
214 construct a synchronized client copy of the content has been provided
215 to the client or the client has been notified that a complete content
216 reload is necessary. Except for transient inconsistencies due to
217 concurrent operation (or other) processing at the server, the client
218 copy is an accurate reflection of the content held by the server.
219 Transient inconsistencies will be resolved by subsequent
220 synchronization operations.
221
222
223
224
225
226
227
228
229Zeilenga & Choi Experimental [Page 4]
230
231
232RFC 4533 LDAP Content Synchronization Operation June 2006
233
234
235 Possible uses include the following:
236
237 - White page service applications may use the Sync Operation to
238 maintain a current copy of a DIT fragment, for example, a mail
239 user agent that uses the sync operation to maintain a local
240 copy of an enterprise address book.
241
242 - Meta-information engines may use the Sync Operation to maintain
243 a copy of a DIT fragment.
244
245 - Caching proxy services may use the Sync Operation to maintain a
246 coherent content cache.
247
248 - Lightweight master-slave replication between heterogeneous
249 directory servers. For example, the Sync Operation can be used
250 by a slave server to maintain a shadow copy of a DIT fragment.
251 (Note: The International Telephone Union (ITU) has defined the
252 X.500 Directory [X.500] Information Shadowing Protocol (DISP)
253 [X.525], which may be used for master-slave replication between
254 directory servers. Other experimental LDAP replication
255 protocols also exist.)
256
257 This protocol is not intended to be used in applications requiring
258 transactional data consistency.
259
260 As this protocol transfers all visible values of entries belonging to
261 the content upon change instead of change deltas, this protocol is
262 not appropriate for bandwidth-challenged applications or deployments.
263
2641.3. Overview
265
266 This section provides an overview of basic ways the Sync Operation
267 can be used to maintain a synchronized client copy of a DIT fragment.
268
269 - Polling for changes: refreshOnly mode
270
271 - Listening for changes: refreshAndPersist mode
272
2731.3.1. Polling for Changes (refreshOnly)
274
275 To obtain its initial client copy, the client issues a Sync request:
276 a search request with the Sync Request Control with mode set to
277 refreshOnly. The server, much like it would with a normal search
278 operation, returns (subject to access controls and other
279 restrictions) the content matching the search criteria (baseObject,
280 scope, filter, attributes). Additionally, with each entry returned,
281 the server provides a Sync State Control indicating state add. This
282 control contains the Universally Unique Identifier (UUID) [UUID] of
283
284
285
286Zeilenga & Choi Experimental [Page 5]
287
288
289RFC 4533 LDAP Content Synchronization Operation June 2006
290
291
292 the entry [RFC4530]. Unlike the Distinguished Name (DN), which may
293 change over time, an entry's UUID is stable. The initial content is
294 followed by a SearchResultDone with a Sync Done Control. The Sync
295 Done Control provides a syncCookie. The syncCookie represents
296 session state.
297
298 To poll for updates to the client copy, the client reissues the Sync
299 Operation with the syncCookie previously returned. The server, much
300 as it would with a normal search operation, determines which content
301 would be returned as if the operation were a normal search operation.
302 However, using the syncCookie as an indicator of what content the
303 client was sent previously, the server sends copies of entries that
304 have changed with a Sync State Control indicating state add. For
305 each changed entry, all (modified or unmodified) attributes belonging
306 to the content are sent.
307
308 The server may perform either or both of the two distinct
309 synchronization phases that are distinguished by how to synchronize
310 entries deleted from the content: the present and the delete phases.
311 When the server uses a single phase for the refresh stage, each phase
312 is marked as ended by a SearchResultDone with a Sync Done Control. A
313 present phase is identified by a FALSE refreshDeletes value in the
314 Sync Done Control. A delete phase is identified by a TRUE
315 refreshDeletes value. The present phase may be followed by a delete
316 phase. The two phases are delimited by a refreshPresent Sync Info
317 Message having a FALSE refreshDone value. In the case that both the
318 phases are used, the present phase is used to bring the client copy
319 up to the state at which the subsequent delete phase can begin.
320
321 In the present phase, the server sends an empty entry (i.e., no
322 attributes) with a Sync State Control indicating state present for
323 each unchanged entry.
324
325 The delete phase may be used when the server can reliably determine
326 which entries in the prior client copy are no longer present in the
327 content and the number of such entries is less than or equal to the
328 number of unchanged entries. In the delete mode, the server sends an
329 empty entry with a Sync State Control indicating state delete for
330 each entry that is no longer in the content, instead of returning an
331 empty entry with state present for each present entry.
332
333 The server may send syncIdSet Sync Info Messages containing the set
334 of UUIDs of either unchanged present entries or deleted entries,
335 instead of sending multiple individual messages. If refreshDeletes
336 of syncIdSet is set to FALSE, the UUIDs of unchanged present entries
337 are contained in the syncUUIDs set; if refreshDeletes of syncIdSet is
338 set to TRUE, the UUIDs of the entries no longer present in the
339 content are contained in the syncUUIDs set. An optional cookie can
340
341
342
343Zeilenga & Choi Experimental [Page 6]
344
345
346RFC 4533 LDAP Content Synchronization Operation June 2006
347
348
349 be included in the syncIdSet to represent the state of the content
350 after synchronizing the presence or the absence of the entries
351 contained in the syncUUIDs set.
352
353 The synchronized copy of the DIT fragment is constructed by the
354 client.
355
356 If refreshDeletes of syncDoneValue is FALSE, the new copy includes
357 all changed entries returned by the reissued Sync Operation, as well
358 as all unchanged entries identified as being present by the reissued
359 Sync Operation, but whose content is provided by the previous Sync
360 Operation. The unchanged entries not identified as being present are
361 deleted from the client content. They had been either deleted,
362 moved, or otherwise scoped-out from the content.
363
364 If refreshDeletes of syncDoneValue is TRUE, the new copy includes all
365 changed entries returned by the reissued Sync Operation, as well as
366 all other entries of the previous copy except for those that are
367 identified as having been deleted from the content.
368
369 The client can, at some later time, re-poll for changes to this
370 synchronized client copy.
371
3721.3.2. Listening for Changes (refreshAndPersist)
373
374 Polling for changes can be expensive in terms of server, client, and
375 network resources. The refreshAndPersist mode allows for active
376 updates of changed entries in the content.
377
378 By selecting the refreshAndPersist mode, the client requests that the
379 server send updates of entries that are changed after the initial
380 refresh content is determined. Instead of sending a SearchResultDone
381 Message as in polling, the server sends a Sync Info Message to the
382 client indicating that the refresh stage is complete and then enters
383 the persist stage. After receipt of this Sync Info Message, the
384 client will construct a synchronized copy as described in Section
385 1.3.1.
386
387 The server may then send change notifications as the result of the
388 original Sync search request, which now remains persistent in the
389 server. For entries to be added to the returned content, the server
390 sends a SearchResultEntry (with attributes) with a Sync State Control
391 indicating state add. For entries to be deleted from the content,
392 the server sends a SearchResultEntry containing no attributes and a
393 Sync State Control indicating state delete. For entries to be
394 modified in the return content, the server sends a SearchResultEntry
395 (with attributes) with a Sync State Control indicating state modify.
396
397
398
399
400Zeilenga & Choi Experimental [Page 7]
401
402
403RFC 4533 LDAP Content Synchronization Operation June 2006
404
405
406 Upon modification of an entry, all (modified or unmodified)
407 attributes belonging to the content are sent.
408
409 Note that renaming an entry of the DIT may cause an add state change
410 where the entry is renamed into the content, a delete state change
411 where the entry is renamed out of the content, and a modify state
412 change where the entry remains in the content. Also note that a
413 modification of an entry of the DIT may cause an add, delete, or
414 modify state change to the content.
415
416 Upon receipt of a change notification, the client updates its copy of
417 the content.
418
419 If the server desires to update the syncCookie during the persist
420 stage, it may include the syncCookie in any Sync State Control or
421 Sync Info Message returned.
422
423 The operation persists until canceled [RFC3909] by the client or
424 terminated by the server. A Sync Done Control shall be attached to
425 SearchResultDone Message to provide a new syncCookie.
426
4271.4. Conventions
428
429 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
430 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
431 document are to be interpreted as described in BCP 14 [RFC2119].
432
433 Protocol elements are described using ASN.1 [X.680] with implicit
434 tags. The term "BER-encoded" means the element is to be encoded
435 using the Basic Encoding Rules [X.690] under the restrictions
436 detailed in Section 5.1 of [RFC4511].
437
4382. Elements of the Sync Operation
439
440 The Sync Operation is defined as an extension to the LDAP Search
441 Operation [RFC4511] where the directory user agent (DUA or client)
442 submits a SearchRequest Message with a Sync Request Control and the
443 directory system agent (DSA or server) responds with zero or more
444 SearchResultEntry Messages, each with a Sync State Control; zero or
445 more SearchResultReference Messages, each with a Sync State Control;
446 zero or more Sync Info Intermediate Response Messages; and a
447 SearchResultDone Message with a Sync Done Control.
448
449 To allow clients to discover support for this operation, servers
450 implementing this operation SHOULD publish 1.3.6.1.4.1.4203.1.9.1.1
451 as a value of the 'supportedControl' attribute [RFC4512] of the root
452 DSA-specific entry (DSE). A server MAY choose to advertise this
453 extension only when the client is authorized to use it.
454
455
456
457Zeilenga & Choi Experimental [Page 8]
458
459
460RFC 4533 LDAP Content Synchronization Operation June 2006
461
462
4632.1. Common ASN.1 Elements
464
4652.1.1. syncUUID
466
467 The syncUUID data type is an OCTET STRING holding a 128-bit
468 (16-octet) Universally Unique Identifier (UUID) [UUID].
469
470 syncUUID ::= OCTET STRING (SIZE(16))
471 -- constrained to UUID
472
4732.1.2. syncCookie
474
475 The syncCookie is a notational convenience to indicate that, while
476 the syncCookie type is encoded as an OCTET STRING, its value is an
477 opaque value containing information about the synchronization session
478 and its state. Generally, the session information would include a
479 hash of the operation parameters that the server requires not be
480 changed and the synchronization state information would include a
481 commit (log) sequence number, a change sequence number, or a time
482 stamp. For convenience of description, the term "no cookie" refers
483 either to a null cookie or to a cookie with pre-initialized
484 synchronization state.
485
486 syncCookie ::= OCTET STRING
487
4882.2. Sync Request Control
489
490 The Sync Request Control is an LDAP Control [RFC4511] where the
491 controlType is the object identifier 1.3.6.1.4.1.4203.1.9.1.1 and the
492 controlValue, an OCTET STRING, contains a BER-encoded
493 syncRequestValue. The criticality field is either TRUE or FALSE.
494
495 syncRequestValue ::= SEQUENCE {
496 mode ENUMERATED {
497 -- 0 unused
498 refreshOnly (1),
499 -- 2 reserved
500 refreshAndPersist (3)
501 },
502 cookie syncCookie OPTIONAL,
503 reloadHint BOOLEAN DEFAULT FALSE
504 }
505
506 The Sync Request Control is only applicable to the SearchRequest
507 Message.
508
509
510
511
512
513
514Zeilenga & Choi Experimental [Page 9]
515
516
517RFC 4533 LDAP Content Synchronization Operation June 2006
518
519
5202.3. Sync State Control
521
522 The Sync State Control is an LDAP Control [RFC4511] where the
523 controlType is the object identifier 1.3.6.1.4.1.4203.1.9.1.2 and the
524 controlValue, an OCTET STRING, contains a BER-encoded syncStateValue.
525 The criticality is FALSE.
526
527 syncStateValue ::= SEQUENCE {
528 state ENUMERATED {
529 present (0),
530 add (1),
531 modify (2),
532 delete (3)
533 },
534 entryUUID syncUUID,
535 cookie syncCookie OPTIONAL
536 }
537
538 The Sync State Control is only applicable to SearchResultEntry and
539 SearchResultReference Messages.
540
5412.4. Sync Done Control
542
543 The Sync Done Control is an LDAP Control [RFC4511] where the
544 controlType is the object identifier 1.3.6.1.4.1.4203.1.9.1.3 and the
545 controlValue contains a BER-encoded syncDoneValue. The criticality
546 is FALSE (and hence absent).
547
548 syncDoneValue ::= SEQUENCE {
549 cookie syncCookie OPTIONAL,
550 refreshDeletes BOOLEAN DEFAULT FALSE
551 }
552
553 The Sync Done Control is only applicable to the SearchResultDone
554 Message.
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571Zeilenga & Choi Experimental [Page 10]
572
573
574RFC 4533 LDAP Content Synchronization Operation June 2006
575
576
5772.5. Sync Info Message
578
579 The Sync Info Message is an LDAP Intermediate Response Message
580 [RFC4511] where responseName is the object identifier
581 1.3.6.1.4.1.4203.1.9.1.4 and responseValue contains a BER-encoded
582 syncInfoValue. The criticality is FALSE (and hence absent).
583
584 syncInfoValue ::= CHOICE {
585 newcookie [0] syncCookie,
586 refreshDelete [1] SEQUENCE {
587 cookie syncCookie OPTIONAL,
588 refreshDone BOOLEAN DEFAULT TRUE
589 },
590 refreshPresent [2] SEQUENCE {
591 cookie syncCookie OPTIONAL,
592 refreshDone BOOLEAN DEFAULT TRUE
593 },
594 syncIdSet [3] SEQUENCE {
595 cookie syncCookie OPTIONAL,
596 refreshDeletes BOOLEAN DEFAULT FALSE,
597 syncUUIDs SET OF syncUUID
598 }
599 }
600
6012.6. Sync Result Codes
602
603 The following LDAP resultCode [RFC4511] is defined:
604
605 e-syncRefreshRequired (4096)
606
6073. Content Synchronization
608
609 The Sync Operation is invoked when the client sends a SearchRequest
610 Message with a Sync Request Control.
611
612 The absence of a cookie or an initialized synchronization state in a
613 cookie indicates a request for initial content, while the presence of
614 a cookie representing a state of a client copy indicates a request
615 for a content update. Synchronization Sessions are discussed in
616 Section 3.1. Content Determination is discussed in Section 3.2.
617
618 The mode is either refreshOnly or refreshAndPersist. The refreshOnly
619 and refreshAndPersist modes are discussed in Sections 3.3 and 3.4,
620 respectively. The refreshOnly mode consists only of a refresh stage,
621 while the refreshAndPersist mode consists of a refresh stage and a
622 subsequent persist stage.
623
624
625
626
627
628Zeilenga & Choi Experimental [Page 11]
629
630
631RFC 4533 LDAP Content Synchronization Operation June 2006
632
633
6343.1. Synchronization Session
635
636 A sequence of Sync Operations where the last cookie returned by the
637 server for one operation is provided by the client in the next
638 operation is said to belong to the same Synchronization Session.
639
640 The client MUST specify the same content-controlling parameters (see
641 Section 3.5) in each Search Request of the session. The client
642 SHOULD also issue each Sync request of a session under the same
643 authentication and authorization associations with equivalent
644 integrity and protections. If the server does not recognize the
645 request cookie or the request is made under different associations or
646 non-equivalent protections, the server SHALL return the initial
647 content as if no cookie had been provided or return an empty content
648 with the e-syncRefreshRequired LDAP result code. The decision
649 between the return of the initial content and the return of the empty
650 content with the e-syncRefreshRequired result code MAY be based on
651 reloadHint in the Sync Request Control from the client. If the
652 server recognizes the request cookie as representing empty or initial
653 synchronization state of the client copy, the server SHALL return the
654 initial content.
655
656 A Synchronization Session may span multiple LDAP sessions between the
657 client and the server. The client SHOULD issue each Sync request of
658 a session to the same server. (Note: Shadowing considerations are
659 discussed in Section 6.)
660
6613.2. Content Determination
662
663 The content to be provided is determined by parameters of the Search
664 Request, as described in [RFC4511], and possibly other controls. The
665 same content parameters SHOULD be used in each Sync request of a
666 session. If different content is requested and the server is
667 unwilling or unable to process the request, the server SHALL return
668 the initial content as if no cookie had been provided or return an
669 empty content with the e-syncRefreshRequired LDAP result code. The
670 decision between the return of the initial content and the return of
671 the empty content with the e-syncRefreshRequired result code MAY be
672 based on reloadHint in the Sync Request Control from the client.
673
674 The content may not necessarily include all entries or references
675 that would be returned by a normal search operation, nor, for those
676 entries included, all attributes returned by a normal search. When
677 the server is unwilling or unable to provide synchronization for any
678 attribute for a set of entries, the server MUST treat all filter
679 components matching against these attributes as Undefined and MUST
680 NOT return these attributes in SearchResultEntry responses.
681
682
683
684
685Zeilenga & Choi Experimental [Page 12]
686
687
688RFC 4533 LDAP Content Synchronization Operation June 2006
689
690
691 Servers SHOULD support synchronization for all non-collective user-
692 application attributes for all entries.
693
694 The server may also return continuation references to other servers
695 or to itself. The latter is allowed as the server may partition the
696 entries it holds into separate synchronization contexts.
697
698 The client may chase all or some of these continuations, each as a
699 separate content synchronization session.
700
7013.3. refreshOnly Mode
702
703 A Sync request with mode refreshOnly and with no cookie is a poll for
704 initial content. A Sync request with mode refreshOnly and with a
705 cookie representing a synchronization state is a poll for content
706 update.
707
7083.3.1. Initial Content Poll
709
710 Upon receipt of the request, the server provides the initial content
711 using a set of zero or more SearchResultEntry and
712 SearchResultReference Messages followed by a SearchResultDone
713 Message.
714
715 Each SearchResultEntry Message SHALL include a Sync State Control of
716 state add, an entryUUID containing the entry's UUID, and no cookie.
717 Each SearchResultReference Message SHALL include a Sync State Control
718 of state add, an entryUUID containing the UUID associated with the
719 reference (normally the UUID of the associated named referral
720 [RFC3296] object), and no cookie. The SearchResultDone Message SHALL
721 include a Sync Done Control having refreshDeletes set to FALSE.
722
723 A resultCode value of success indicates that the operation
724 successfully completed. Otherwise, the result code indicates the
725 nature of the failure. The server may return e-syncRefreshRequired
726 result code on the initial content poll if it is safe to do so when
727 it is unable to perform the operation due to various reasons.
728 reloadHint is set to FALSE in the SearchRequest Message requesting
729 the initial content poll.
730
731 If the operation is successful, a cookie representing the
732 synchronization state of the current client copy SHOULD be returned
733 for use in subsequent Sync Operations.
734
7353.3.2. Content Update Poll
736
737 Upon receipt of the request, the server provides the content refresh
738 using a set of zero or more SearchResultEntry and
739
740
741
742Zeilenga & Choi Experimental [Page 13]
743
744
745RFC 4533 LDAP Content Synchronization Operation June 2006
746
747
748 SearchResultReference Messages followed by a SearchResultDone
749 Message.
750
751 The server is REQUIRED to:
752
753 a) provide the sequence of messages necessary for eventual
754 convergence of the client's copy of the content to the server's
755 copy,
756
757 b) treat the request as an initial content request (e.g., ignore
758 the cookie or the synchronization state represented in the
759 cookie),
760
761 c) indicate that the incremental convergence is not possible by
762 returning e-syncRefreshRequired,
763
764 d) return a resultCode other than success or e-
765 syncRefreshRequired.
766
767 A Sync Operation may consist of a single present phase, a single
768 delete phase, or a present phase followed by a delete phase.
769
770 In each phase, for each entry or reference that has been added to the
771 content or been changed since the previous Sync Operation indicated
772 by the cookie, the server returns a SearchResultEntry or
773 SearchResultReference Message, respectively, each with a Sync State
774 Control consisting of state add, an entryUUID containing the UUID of
775 the entry or reference, and no cookie. Each SearchResultEntry
776 Message represents the current state of a changed entry. Each
777 SearchResultReference Message represents the current state of a
778 changed reference.
779
780 In the present phase, for each entry that has not been changed since
781 the previous Sync Operation, an empty SearchResultEntry is returned
782 whose objectName reflects the entry's current DN, whose attributes
783 field is empty, and whose Sync State Control consists of state
784 present, an entryUUID containing the UUID of the entry, and no
785 cookie. For each reference that has not been changed since the
786 previous Sync Operation, an empty SearchResultReference containing an
787 empty SEQUENCE OF LDAPURL is returned with a Sync State Control
788 consisting of state present, an entryUUID containing the UUID of the
789 entry, and no cookie. No messages are sent for entries or references
790 that are no longer in the content.
791
792 Multiple empty entries with a Sync State Control of state present
793 SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
794 value with refreshDeletes set to FALSE. syncUUIDs contain a set of
795 UUIDs of the entries and references unchanged since the last Sync
796
797
798
799Zeilenga & Choi Experimental [Page 14]
800
801
802RFC 4533 LDAP Content Synchronization Operation June 2006
803
804
805 Operation. syncUUIDs may be empty. The Sync Info Message of
806 syncIdSet may contain a cookie to represent the state of the content
807 after performing the synchronization of the entries in the set.
808
809 In the delete phase, for each entry no longer in the content, the
810 server returns a SearchResultEntry whose objectName reflects a past
811 DN of the entry or is empty, whose attributes field is empty, and
812 whose Sync State Control consists of state delete, an entryUUID
813 containing the UUID of the deleted entry, and no cookie. For each
814 reference no longer in the content, a SearchResultReference
815 containing an empty SEQUENCE OF LDAPURL is returned with a Sync State
816 Control consisting of state delete, an entryUUID containing the UUID
817 of the deleted reference, and no cookie.
818
819 Multiple empty entries with a Sync State Control of state delete
820 SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
821 value with refreshDeletes set to TRUE. syncUUIDs contain a set of
822 UUIDs of the entries and references that have been deleted from the
823 content since the last Sync Operation. syncUUIDs may be empty. The
824 Sync Info Message of syncIdSet may contain a cookie to represent the
825 state of the content after performing the synchronization of the
826 entries in the set.
827
828 When a present phase is followed by a delete phase, the two phases
829 are delimited by a Sync Info Message containing syncInfoValue of
830 refreshPresent, which may contain a cookie representing the state
831 after completing the present phase. The refreshPresent contains
832 refreshDone, which is always FALSE in the refreshOnly mode of Sync
833 Operation because it is followed by a delete phase.
834
835 If a Sync Operation consists of a single phase, each phase and hence
836 the Sync Operation are marked as ended by a SearchResultDone Message
837 with Sync Done Control, which SHOULD contain a cookie representing
838 the state of the content after completing the Sync Operation. The
839 Sync Done Control contains refreshDeletes, which is set to FALSE for
840 the present phase and set to TRUE for the delete phase.
841
842 If a Sync Operation consists of a present phase followed by a delete
843 phase, the Sync Operation is marked as ended at the end of the delete
844 phase by a SearchResultDone Message with Sync Done Control, which
845 SHOULD contain a cookie representing the state of the content after
846 completing the Sync Operation. The Sync Done Control contains
847 refreshDeletes, which is set to TRUE.
848
849 The client can specify whether it prefers to receive an initial
850 content by supplying reloadHint of TRUE or to receive a e-
851 syncRefreshRequired resultCode by supplying reloadHint of FALSE
852 (hence absent), in the case that the server determines that it is
853
854
855
856Zeilenga & Choi Experimental [Page 15]
857
858
859RFC 4533 LDAP Content Synchronization Operation June 2006
860
861
862 impossible or inefficient to achieve the eventual convergence by
863 continuing the current incremental synchronization thread.
864
865 A resultCode value of success indicates that the operation is
866 successfully completed. A resultCode value of e-syncRefreshRequired
867 indicates that a full or partial refresh is needed. Otherwise, the
868 result code indicates the nature of failure. A cookie is provided in
869 the Sync Done Control for use in subsequent Sync Operations for
870 incremental synchronization.
871
8723.4. refreshAndPersist Mode
873
874 A Sync request with mode refreshAndPersist asks for initial content
875 or content update (during the refresh stage) followed by change
876 notifications (during the persist stage).
877
8783.4.1. refresh Stage
879
880 The content refresh is provided as described in Section 3.3, except
881 that the successful completion of content refresh is indicated by
882 sending a Sync Info Message of refreshDelete or refreshPresent with a
883 refreshDone value set to TRUE instead of a SearchResultDone Message
884 with resultCode success. A cookie SHOULD be returned in the Sync
885 Info Message to represent the state of the content after finishing
886 the refresh stage of the Sync Operation.
887
8883.4.2. persist Stage
889
890 Change notifications are provided during the persist stage.
891
892 As updates are made to the DIT, the server notifies the client of
893 changes to the content. DIT updates may cause entries and references
894 to be added to the content, deleted from the content, or modified
895 within the content. DIT updates may also cause references to be
896 added, deleted, or modified within the content.
897
898 Where DIT updates cause an entry to be added to the content, the
899 server provides a SearchResultEntry Message that represents the entry
900 as it appears in the content. The message SHALL include a Sync State
901 Control with state of add, an entryUUID containing the entry's UUID,
902 and an optional cookie.
903
904 Where DIT updates cause a reference to be added to the content, the
905 server provides a SearchResultReference Message that represents the
906 reference in the content. The message SHALL include a Sync State
907 Control with state of add, an entryUUID containing the UUID
908 associated with the reference, and an optional cookie.
909
910
911
912
913Zeilenga & Choi Experimental [Page 16]
914
915
916RFC 4533 LDAP Content Synchronization Operation June 2006
917
918
919 Where DIT updates cause an entry to be modified within the content,
920 the server provides a SearchResultEntry Message that represents the
921 entry as it appears in the content. The message SHALL include a Sync
922 State Control with state of modify, an entryUUID containing the
923 entry's UUID, and an optional cookie.
924
925 Where DIT updates cause a reference to be modified within the
926 content, the server provides a SearchResultReference Message that
927 represents the reference in the content. The message SHALL include a
928 Sync State Control with state of modify, an entryUUID containing the
929 UUID associated with the reference, and an optional cookie.
930
931 Where DIT updates cause an entry to be deleted from the content, the
932 server provides a SearchResultEntry Message with no attributes. The
933 message SHALL include a Sync State Control with state of delete, an
934 entryUUID containing the entry's UUID, and an optional cookie.
935
936 Where DIT updates cause a reference to be deleted from the content,
937 the server provides a SearchResultReference Message with an empty
938 SEQUENCE OF LDAPURL. The message SHALL include a Sync State Control
939 with state of delete, an entryUUID containing the UUID associated
940 with the reference, and an optional cookie.
941
942 Multiple empty entries with a Sync State Control of state delete
943 SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
944 value with refreshDeletes set to TRUE. syncUUIDs contain a set of
945 UUIDs of the entries and references that have been deleted from the
946 content. The Sync Info Message of syncIdSet may contain a cookie to
947 represent the state of the content after performing the
948 synchronization of the entries in the set.
949
950 With each of these messages, the server may provide a new cookie to
951 be used in subsequent Sync Operations. Additionally, the server may
952 also return Sync Info Messages of choice newCookie to provide a new
953 cookie. The client SHOULD use the newest (last) cookie it received
954 from the server in subsequent Sync Operations.
955
9563.5. Search Request Parameters
957
958 As stated in Section 3.1, the client SHOULD specify the same
959 content-controlling parameters in each Search Request of the session.
960 All fields of the SearchRequest Message are considered content-
961 controlling parameters except for sizeLimit and timeLimit.
962
963
964
965
966
967
968
969
970Zeilenga & Choi Experimental [Page 17]
971
972
973RFC 4533 LDAP Content Synchronization Operation June 2006
974
975
9763.5.1. baseObject
977
978 As with the normal search operation, the refresh and persist stages
979 are not isolated from DIT changes. It is possible that the entry
980 referred to by the baseObject is deleted, renamed, or moved. It is
981 also possible that the alias object used in finding the entry
982 referred to by the baseObject is changed such that the baseObject
983 refers to a different entry.
984
985 If the DIT is updated during processing of the Sync Operation in a
986 manner that causes the baseObject no longer to refer to any entry or
987 in a manner that changes the entry the baseObject refers to, the
988 server SHALL return an appropriate non-success result code, such as
989 noSuchObject, aliasProblem, aliasDereferencingProblem, referral, or
990 e-syncRefreshRequired.
991
9923.5.2. derefAliases
993
994 This operation does not support alias dereferencing during searching.
995 The client SHALL specify neverDerefAliases or derefFindingBaseObj for
996 the SearchRequest derefAliases parameter. The server SHALL treat
997 other values (e.g., derefInSearching, derefAlways) as protocol
998 errors.
999
10003.5.3. sizeLimit
1001
1002 The sizeLimit applies only to entries (regardless of their state in
1003 Sync State Control) returned during the refreshOnly operation or the
1004 refresh stage of the refreshAndPersist operation.
1005
10063.5.4. timeLimit
1007
1008 For a refreshOnly Sync Operation, the timeLimit applies to the whole
1009 operation. For a refreshAndPersist operation, the timeLimit applies
1010 only to the refresh stage including the generation of the Sync Info
1011 Message with a refreshDone value of TRUE.
1012
10133.5.5. filter
1014
1015 The client SHOULD avoid filter assertions that apply to the values of
1016 the attributes likely to be considered by the server as ones holding
1017 meta-information. See Section 4.
1018
10193.6. objectName
1020
1021 The Sync Operation uses entryUUID values provided in the Sync State
1022 Control as the primary keys to entries. The client MUST use these
1023 entryUUIDs to correlate synchronization messages.
1024
1025
1026
1027Zeilenga & Choi Experimental [Page 18]
1028
1029
1030RFC 4533 LDAP Content Synchronization Operation June 2006
1031
1032
1033 In some circumstances, the DN returned may not reflect the entry's
1034 current DN. In particular, when the entry is being deleted from the
1035 content, the server may provide an empty DN if the server does not
1036 wish to disclose the entry's current DN (or, if deleted from the DIT,
1037 the entry's last DN).
1038
1039 Also note that the entry's DN may be viewed as meta information (see
1040 Section 4.1).
1041
10423.7. Canceling the Sync Operation
1043
1044 Servers MUST implement the LDAP Cancel [RFC3909] Operation and
1045 support cancellation of outstanding Sync Operations as described
1046 here.
1047
1048 To cancel an outstanding Sync Operation, the client issues an LDAP
1049 Cancel [RFC3909] Operation.
1050
1051 If at any time the server becomes unwilling or unable to continue
1052 processing a Sync Operation, the server SHALL return a
1053 SearchResultDone with a non-success resultCode indicating the reason
1054 for the termination of the operation.
1055
1056 Whether the client or the server initiated the termination, the
1057 server may provide a cookie in the Sync Done Control for use in
1058 subsequent Sync Operations.
1059
10603.8. Refresh Required
1061
1062 In order to achieve the eventually-convergent synchronization, the
1063 server may terminate the Sync Operation in the refresh or persist
1064 stages by returning an e-syncRefreshRequired resultCode to the
1065 client. If no cookie is provided, a full refresh is needed. If a
1066 cookie representing a synchronization state is provided in this
1067 response, an incremental refresh is needed.
1068
1069 To obtain a full refresh, the client then issues a new
1070 synchronization request with no cookie. To obtain an incremental
1071 reload, the client issues a new synchronization with the provided
1072 cookie.
1073
1074 The server may choose to provide a full copy in the refresh stage
1075 (e.g., ignore the cookie or the synchronization state represented in
1076 the cookie) instead of providing an incremental refresh in order to
1077 achieve the eventual convergence.
1078
1079
1080
1081
1082
1083
1084Zeilenga & Choi Experimental [Page 19]
1085
1086
1087RFC 4533 LDAP Content Synchronization Operation June 2006
1088
1089
1090 The decision between the return of the initial content and the return
1091 of the e-syncRefreshRequired result code may be based on reloadHint
1092 in the Sync Request Control from the client.
1093
1094 In the case of persist stage Sync, the server returns the resultCode
1095 of e-syncRefreshRequired to the client to indicate that the client
1096 needs to issue a new Sync Operation in order to obtain a synchronized
1097 copy of the content. If no cookie is provided, a full refresh is
1098 needed. If a cookie representing a synchronization state is
1099 provided, an incremental refresh is needed.
1100
1101 The server may also return e-syncRefreshRequired if it determines
1102 that a refresh would be more efficient than sending all the messages
1103 required for convergence.
1104
1105 Note that the client may receive one or more of SearchResultEntry,
1106 SearchResultReference, and/or Sync Info Messages before it receives a
1107 SearchResultDone Message with the e-syncRefreshRequired result code.
1108
11093.9. Chattiness Considerations
1110
1111 The server MUST ensure that the number of entry messages generated to
1112 refresh the client content does not exceed the number of entries
1113 presently in the content. While there is no requirement for servers
1114 to maintain history information, if the server has sufficient history
1115 to allow it to reliably determine which entries in the prior client
1116 copy are no longer present in the content and the number of such
1117 entries is less than or equal to the number of unchanged entries, the
1118 server SHOULD generate delete entry messages instead of present entry
1119 messages (see Section 3.3.2).
1120
1121 When the amount of history information maintained in the server is
1122 not enough for the clients to perform infrequent refreshOnly Sync
1123 Operations, it is likely that the server has incomplete history
1124 information (e.g., due to truncation) by the time those clients
1125 connect again.
1126
1127 The server SHOULD NOT resort to full reload when the history
1128 information is not enough to generate delete entry messages. The
1129 server SHOULD generate either present entry messages only or present
1130 entry messages followed by delete entry messages to bring the client
1131 copy to the current state. In the latter case, the present entry
1132 messages bring the client copy to a state covered by the history
1133 information maintained in the server.
1134
1135 The server SHOULD maintain enough (current or historical) state
1136 information (such as a context-wide last modify time stamp) to
1137 determine if no changes were made in the context since the content
1138
1139
1140
1141Zeilenga & Choi Experimental [Page 20]
1142
1143
1144RFC 4533 LDAP Content Synchronization Operation June 2006
1145
1146
1147 refresh was provided and, when no changes were made, generate zero
1148 delete entry messages instead of present messages.
1149
1150 The server SHOULD NOT use the history information when its use does
1151 not reduce the synchronization traffic or when its use can expose
1152 sensitive information not allowed to be received by the client.
1153
1154 The server implementor should also consider chattiness issues that
1155 span multiple Sync Operations of a session. As noted in Section 3.8,
1156 the server may return e-syncRefreshRequired if it determines that a
1157 reload would be more efficient than continuing under the current
1158 operation. If reloadHint in the Sync Request is TRUE, the server may
1159 initiate a reload without directing the client to request a reload.
1160
1161 The server SHOULD transfer a new cookie frequently to avoid having to
1162 transfer information already provided to the client. Even where DIT
1163 changes do not cause content synchronization changes to be
1164 transferred, it may be advantageous to provide a new cookie using a
1165 Sync Info Message. However, the server SHOULD avoid overloading the
1166 client or network with Sync Info Messages.
1167
1168 During persist mode, the server SHOULD coalesce multiple outstanding
1169 messages updating the same entry. The server MAY delay generation of
1170 an entry update in anticipation of subsequent changes to that entry
1171 that could be coalesced. The length of the delay should be long
1172 enough to allow coalescing of update requests issued back to back but
1173 short enough that the transient inconsistency induced by the delay is
1174 corrected in a timely manner.
1175
1176 The server SHOULD use the syncIdSet Sync Info Message when there are
1177 multiple delete or present messages to reduce the amount of
1178 synchronization traffic.
1179
1180 Also note that there may be many clients interested in a particular
1181 directory change, and that servers attempting to service all of these
1182 at once may cause congestion on the network. The congestion issues
1183 are magnified when the change requires a large transfer to each
1184 interested client. Implementors and deployers of servers should take
1185 steps to prevent and manage network congestion.
1186
11873.10. Operation Multiplexing
1188
1189 The LDAP protocol model [RFC4511] allows operations to be multiplexed
1190 over a single LDAP session. Clients SHOULD NOT maintain multiple
1191 LDAP sessions with the same server. Servers SHOULD ensure that
1192 responses from concurrently processed operations are interleaved
1193 fairly.
1194
1195
1196
1197
1198Zeilenga & Choi Experimental [Page 21]
1199
1200
1201RFC 4533 LDAP Content Synchronization Operation June 2006
1202
1203
1204 Clients SHOULD combine Sync Operations whose result set is largely
1205 overlapping. This avoids having to return multiple messages, once
1206 for each overlapping session, for changes to entries in the overlap.
1207
1208 Clients SHOULD NOT combine Sync Operations whose result sets are
1209 largely non-overlapping. This ensures that an event requiring an
1210 e-syncRefreshRequired response can be limited to as few result sets
1211 as possible.
1212
12134. Meta Information Considerations
1214
12154.1. Entry DN
1216
1217 As an entry's DN is constructed from its relative DN (RDN) and the
1218 entry's parent's DN, it is often viewed as meta information.
1219
1220 While renaming or moving to a new superior causes the entry's DN to
1221 change, that change SHOULD NOT, by itself, cause synchronization
1222 messages to be sent for that entry. However, if the renaming or the
1223 moving could cause the entry to be added or deleted from the content,
1224 appropriate synchronization messages should be generated to indicate
1225 this to the client.
1226
1227 When a server treats the entry's DN as meta information, the server
1228 SHALL either
1229
1230 - evaluate all MatchingRuleAssertions [RFC4511] to TRUE if
1231 matching a value of an attribute of the entry, otherwise
1232 Undefined, or
1233
1234 - evaluate all MatchingRuleAssertion with dnAttributes of TRUE as
1235 Undefined.
1236
1237 The latter choice is offered for ease of server implementation.
1238
12394.2. Operational Attributes
1240
1241 Where values of an operational attribute are determined by values not
1242 held as part of the entry it appears in, the operational attribute
1243 SHOULD NOT support synchronization of that operational attribute.
1244
1245 For example, in servers that implement the X.501 subschema model
1246 [X.501], servers should not support synchronization of the
1247 subschemaSubentry attribute as its value is determined by values held
1248 and administrated in subschema subentries.
1249
1250
1251
1252
1253
1254
1255Zeilenga & Choi Experimental [Page 22]
1256
1257
1258RFC 4533 LDAP Content Synchronization Operation June 2006
1259
1260
1261 As a counter example, servers that implement aliases [RFC4512][X.501]
1262 can support synchronization of the aliasedObjectName attribute as its
1263 values are held and administrated as part of the alias entries.
1264
1265 Servers SHOULD support synchronization of the following operational
1266 attributes: createTimestamp, modifyTimestamp, creatorsName,
1267 modifiersName [RFC4512]. Servers MAY support synchronization of
1268 other operational attributes.
1269
12704.3. Collective Attributes
1271
1272 A collective attribute is "a user attribute whose values are the same
1273 for each member of an entry collection" [X.501]. Use of collective
1274 attributes in LDAP is discussed in [RFC3671].
1275
1276 Modification of a collective attribute generally affects the content
1277 of multiple entries, which are the members of the collection. It is
1278 inefficient to include values of collective attributes visible in
1279 entries of the collection, as a single modification of a collective
1280 attribute requires transmission of multiple SearchResultEntry (one
1281 for each entry of the collection that the modification affected).
1282
1283 Servers SHOULD NOT synchronize collective attributes appearing in
1284 entries of any collection. Servers MAY support synchronization of
1285 collective attributes appearing in collective attribute subentries.
1286
12874.4. Access and Other Administrative Controls
1288
1289 Entries are commonly subject to access and other administrative
1290 Controls. While portions of the policy information governing a
1291 particular entry may be held in the entry, policy information is
1292 often held elsewhere (in superior entries, in subentries, in the root
1293 DSE, in configuration files, etc.). Because of this, changes to
1294 policy information make it difficult to ensure eventual convergence
1295 during incremental synchronization.
1296
1297 Where it is impractical or infeasible to generate content changes
1298 resulting from a change to policy information, servers may opt to
1299 return e-syncRefreshRequired or to treat the Sync Operation as an
1300 initial content request (e.g., ignore the cookie or the
1301 synchronization state represented in the cookie).
1302
13035. Interaction with Other Controls
1304
1305 The Sync Operation may be used with:
1306
1307 - ManageDsaIT Control [RFC3296]
1308
1309
1310
1311
1312Zeilenga & Choi Experimental [Page 23]
1313
1314
1315RFC 4533 LDAP Content Synchronization Operation June 2006
1316
1317
1318 - Subentries Control [RFC3672]
1319
1320 as described below. The Sync Operation may be used with other LDAP
1321 extensions as detailed in other documents.
1322
13235.1. ManageDsaIT Control
1324
1325 The ManageDsaIT Control [RFC3296] indicates that the operation acts
1326 upon the DSA Information Tree and causes referral and other special
1327 entries to be treated as object entries with respect to the
1328 operation.
1329
13305.2. Subentries Control
1331
1332 The Subentries Control is used with the search operation "to control
1333 the visibility of entries and subentries which are within scope"
1334 [RFC3672]. When used with the Sync Operation, the subentries control
1335 and other factors (search scope, filter, etc.) are used to determine
1336 whether an entry or subentry appears in the content.
1337
13386. Shadowing Considerations
1339
1340 As noted in [RFC4511], some servers may hold shadow copies of entries
1341 that can be used to answer search and comparison queries. Such
1342 servers may also support content synchronization requests. This
1343 section discusses considerations for implementors and deployers for
1344 the implementation and deployment of the Sync operation in shadowed
1345 directories.
1346
1347 While a client may know of multiple servers that are equally capable
1348 of being used to obtain particular directory content from, a client
1349 SHOULD NOT assume that each of these servers is equally capable of
1350 continuing a content synchronization session. As stated in Section
1351 3.1, the client SHOULD issue each Sync request of a Sync session to
1352 the same server.
1353
1354 However, through domain naming or IP address redirection or other
1355 techniques, multiple physical servers can be made to appear as one
1356 logical server to a client. Only servers that are equally capable in
1357 regards to their support for the Sync operation and that hold equally
1358 complete copies of the entries should be made to appear as one
1359 logical server. In particular, each physical server acting as one
1360 logical server SHOULD be equally capable of continuing a content
1361 synchronization based upon cookies provided by any of the other
1362 physical servers without requiring a full reload. Because there is
1363 no standard LDAP shadowing mechanism, the specification of how to
1364 independently implement equally capable servers (as well as the
1365 precise definition of "equally capable") is left to future documents.
1366
1367
1368
1369Zeilenga & Choi Experimental [Page 24]
1370
1371
1372RFC 4533 LDAP Content Synchronization Operation June 2006
1373
1374
1375 Note that it may be difficult for the server to reliably determine
1376 what content was provided to the client by another server, especially
1377 in the shadowing environments that allow shadowing events to be
1378 coalesced. For these servers, the use of the delete phase discussed
1379 in Section 3.3.2 may not be applicable.
1380
13817. Security Considerations
1382
1383 In order to maintain a synchronized copy of the content, a client is
1384 to delete information from its copy of the content as described
1385 above. However, the client may maintain knowledge of information
1386 disclosed to it by the server separate from its copy of the content
1387 used for synchronization. Management of this knowledge is beyond the
1388 scope of this document. Servers should be careful not to disclose
1389 information for content the client is not authorized to have
1390 knowledge of and/or about.
1391
1392 While the information provided by a series of refreshOnly Sync
1393 Operations is similar to that provided by a series of Search
1394 Operations, persist stage may disclose additional information. A
1395 client may be able to discern information about the particular
1396 sequence of update operations that caused content change.
1397
1398 Implementors should take precautions against malicious cookie
1399 content, including malformed cookies or valid cookies used with
1400 different security associations and/or protections in an attempt to
1401 obtain unauthorized access to information. Servers may include a
1402 digital signature in the cookie to detect tampering.
1403
1404 The operation may be the target of direct denial-of-service attacks.
1405 Implementors should provide safeguards to ensure the operation is not
1406 abused. Servers may place access control or other restrictions upon
1407 the use of this operation.
1408
1409 Note that even small updates to the directory may cause a significant
1410 amount of traffic to be generated to clients using this operation. A
1411 user could abuse its update privileges to mount an indirect denial of
1412 service to these clients, other clients, and/or portions of the
1413 network. Servers should provide safeguards to ensure that update
1414 operations are not abused.
1415
1416 Implementors of this (or any) LDAP extension should be familiar with
1417 general LDAP security considerations [RFC4510].
1418
1419
1420
1421
1422
1423
1424
1425
1426Zeilenga & Choi Experimental [Page 25]
1427
1428
1429RFC 4533 LDAP Content Synchronization Operation June 2006
1430
1431
14328. IANA Considerations
1433
1434 Registration of the following values have been completed by the IANA
1435 [RFC4520].
1436
14378.1. Object Identifier
1438
1439 The OID arc 1.3.6.1.4.1.4203.1.9.1 was assigned [ASSIGN] by the
1440 OpenLDAP Foundation, under its IANA-assigned private enterprise
1441 allocation [PRIVATE], for use in this specification.
1442
14438.2. LDAP Protocol Mechanism
1444
1445 The IANA has registered the LDAP Protocol Mechanism described in this
1446 document.
1447
1448 Subject: Request for LDAP Protocol Mechanism Registration
1449 Object Identifier: 1.3.6.1.4.1.4203.1.9.1.1
1450 Description: LDAP Content Synchronization Control
1451 Person & email address to contact for further information:
1452 Kurt Zeilenga <kurt@openldap.org>
1453 Usage: Control
1454 Specification: RFC 4533
1455 Author/Change Controller: Kurt D. Zeilenga, Jong Hyuk Choi
1456 Comments: none
1457
14588.3. LDAP Result Codes
1459
1460 The IANA has registered the LDAP Result Code described in this
1461 document.
1462
1463 Subject: LDAP Result Code Registration
1464 Person & email address to contact for further information:
1465 Kurt Zeilenga <kurt@OpenLDAP.org>
1466 Result Code Name: e-syncRefreshRequired (4096)
1467 Specification: RFC 4533
1468 Author/Change Controller: Kurt D. Zeilenga, Jong Hyuk Choi
1469 Comments: none
1470
14719. Acknowledgements
1472
1473 This document borrows significantly from the LDAP Client Update
1474 Protocol [RFC3928], a product of the IETF LDUP working group. This
1475 document also benefited from Persistent Search [PSEARCH], Triggered
1476 Search [TSEARCH], and Directory Synchronization [DIRSYNC] works.
1477 This document also borrows from "Lightweight Directory Access
1478 Protocol (v3)" [RFC2251].
1479
1480
1481
1482
1483Zeilenga & Choi Experimental [Page 26]
1484
1485
1486RFC 4533 LDAP Content Synchronization Operation June 2006
1487
1488
148910. Normative References
1490
1491 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1492 Requirement Levels", BCP 14, RFC 2119, March 1997.
1493
1494 [RFC3296] Zeilenga, K., "Named Subordinate References in
1495 Lightweight Directory Access Protocol (LDAP)
1496 Directories", RFC 3296, July 2002.
1497
1498 [RFC3671] Zeilenga, K., "Collective Attributes in the Lightweight
1499 Directory Access Protocol (LDAP)", RFC 3671, December
1500 2003.
1501
1502 [RFC3672] Zeilenga, K., "Subentries in the Lightweight Directory
1503 Access Protocol (LDAP)", RFC 3672, December 2003.
1504
1505 [RFC3909] Zeilenga, K., "Lightweight Directory Access Protocol
1506 (LDAP) Cancel Operation", RFC 3909, October 2004.
1507
1508 [RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol
1509 (LDAP): Technical Specification Road Map", RFC 4510, June
1510 2006.
1511
1512 [RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access
1513 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
1514
1515 [RFC4512] Zeilenga, K., "Lightweight Directory Access Protocol
1516 (LDAP): Directory Information Models", RFC 4512, June
1517 2006.
1518
1519 [RFC4530] Zeilenga, K., "Lightweight Directory Access Protocol
1520 (LDAP) entryUUID Operational Attribute", RFC 4530, June
1521 2006.
1522
1523 [UUID] International Organization for Standardization (ISO),
1524 "Information technology - Open Systems Interconnection -
1525 Remote Procedure Call", ISO/IEC 11578:1996
1526
1527 [X.501] International Telecommunication Union - Telecommunication
1528 Standardization Sector, "The Directory -- Models,"
1529 X.501(1993) (also ISO/IEC 9594-2:1994).
1530
1531 [X.680] International Telecommunication Union - Telecommunication
1532 Standardization Sector, "Abstract Syntax Notation One
1533 (ASN.1) - Specification of Basic Notation", X.680(1997)
1534 (also ISO/IEC 8824-1:1998).
1535
1536
1537
1538
1539
1540Zeilenga & Choi Experimental [Page 27]
1541
1542
1543RFC 4533 LDAP Content Synchronization Operation June 2006
1544
1545
1546 [X.690] International Telecommunication Union - Telecommunication
1547 Standardization Sector, "Specification of ASN.1 encoding
1548 rules: Basic Encoding Rules (BER), Canonical Encoding
1549 Rules (CER), and Distinguished Encoding Rules (DER)",
1550 X.690(1997) (also ISO/IEC 8825-1:1998).
1551
155211. Informative References
1553
1554 [RFC2251] Wahl, M., Howes, T., and S. Kille, "Lightweight Directory
1555 Access Protocol (v3)", RFC 2251, December 1997.
1556
1557 [RFC3928] Megginson, R., Ed., Smith, M., Natkovich, O., and J.
1558 Parham, "Lightweight Directory Access Protocol (LDAP)
1559 Client Update Protocol (LCUP)", RFC 3928, October 2004.
1560
1561 [RFC4520] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
1562 Considerations for the Lightweight Directory Access
1563 Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
1564
1565 [PRIVATE] IANA, "Private Enterprise Numbers",
1566 http://www.iana.org/assignments/enterprise-numbers.
1567
1568 [ASSIGN] OpenLDAP Foundation, "OpenLDAP OID Delegations",
1569 http://www.openldap.org/foundation/oid-delegate.txt.
1570
1571 [X.500] International Telecommunication Union - Telecommunication
1572 Standardization Sector, "The Directory -- Overview of
1573 concepts, models and services," X.500(1993) (also ISO/IEC
1574 9594-1:1994).
1575
1576 [X.525] International Telecommunication Union - Telecommunication
1577 Standardization Sector, "The Directory: Replication",
1578 X.525(1993).
1579
1580 [DIRSYNC] Armijo, M., "Microsoft LDAP Control for Directory
1581 Synchronization", Work in Progress.
1582
1583 [PSEARCH] Smith, M., et al., "Persistent Search: A Simple LDAP
1584 Change Notification Mechanism", Work in Progress.
1585
1586 [TSEARCH] Wahl, M., "LDAPv3 Triggered Search Control", Work in
1587 Progress.
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597Zeilenga & Choi Experimental [Page 28]
1598
1599
1600RFC 4533 LDAP Content Synchronization Operation June 2006
1601
1602
1603Appendix A. CSN-based Implementation Considerations
1604
1605 This appendix is provided for informational purposes only; it is not
1606 a normative part of the LDAP Content Synchronization Operation's
1607 technical specification.
1608
1609 This appendix discusses LDAP Content Synchronization Operation server
1610 implementation considerations associated with Change Sequence Number
1611 based approaches.
1612
1613 Change Sequence Number based approaches are targeted for use in
1614 servers that do not maintain history information (e.g., change logs,
1615 state snapshots) about changes made to the Directory and hence, must
1616 rely on current directory state and minimal synchronization state
1617 information embedded in Sync Cookie. Servers that maintain history
1618 information should consider other approaches that exploit the history
1619 information.
1620
1621 A Change Sequence Number is effectively a time stamp that has
1622 sufficient granularity to ensure that the precedence relationship in
1623 time of two updates to the same object can be determined. Change
1624 Sequence Numbers are not to be confused with Commit Sequence Numbers
1625 or Commit Log Record Numbers. A Commit Sequence Number allows one to
1626 determine how two commits (to the same object or different objects)
1627 relate to each other in time. A Change Sequence Number associated
1628 with different entries may be committed out of order. In the
1629 remainder of this Appendix, the term CSN refers to a Change Sequence
1630 Number.
1631
1632 In these approaches, the server not only maintains a CSN for each
1633 directory entry (the entry CSN) but also maintains a value that we
1634 will call the context CSN. The context CSN is the greatest committed
1635 entry CSN that is not greater than any outstanding (uncommitted)
1636 entry CSNs for all entries in a directory context. The values of
1637 context CSN are used in syncCookie values as synchronization state
1638 indicators.
1639
1640 As search operations are not isolated from individual directory
1641 update operations and individual update operations cannot be assumed
1642 to be serialized, one cannot assume that the returned content
1643 incorporates each relevant change whose change sequence number is
1644 less than or equal to the greatest entry CSN in the content. The
1645 content incorporates all the relevant changes whose change sequence
1646 numbers are less than or equal to context CSN before search
1647 processing. The content may also incorporate any subset of the
1648 changes whose change sequence number is greater than context CSN
1649 before search processing but less than or equal to the context CSN
1650 after search processing. The content does not incorporate any of the
1651
1652
1653
1654Zeilenga & Choi Experimental [Page 29]
1655
1656
1657RFC 4533 LDAP Content Synchronization Operation June 2006
1658
1659
1660 changes whose CSN is greater than the context CSN after search
1661 processing.
1662
1663 A simple server implementation could use the value of the context CSN
1664 before search processing to indicate state. Such an implementation
1665 would embed this value into each SyncCookie returned. We'll call
1666 this the cookie CSN. When a refresh was requested, the server would
1667 simply generate "update" messages for all entries in the content
1668 whose CSN is greater than the supplied cookie CSN and generate
1669 "present" messages for all other entries in the content. However, if
1670 the current context CSN is the same as the cookie CSN, the server
1671 should instead generate zero "updates" and zero "delete" messages and
1672 indicate a refreshDeletes of TRUE, as the directory has not changed.
1673
1674 The implementation should also consider the impact of changes to meta
1675 information, such as access controls, that affect content
1676 determination. One approach is for the server to maintain a
1677 context-wide meta information CSN or meta CSN. This meta CSN would
1678 be updated whenever meta information affecting content determination
1679 was changed. If the value of the meta CSN is greater than the cookie
1680 CSN, the server should ignore the cookie and treat the request as an
1681 initial request for content.
1682
1683 Additionally, servers may want to consider maintaining some per-
1684 session history information to reduce the number of messages needed
1685 to be transferred during incremental refreshes. Specifically, a
1686 server could record information about entries as they leave the scope
1687 of a disconnected sync session and later use this information to
1688 generate delete messages instead of present messages.
1689
1690 When the history information is truncated, the CSN of the latest
1691 truncated history information entry may be recorded as the truncated
1692 CSN of the history information. The truncated CSN may be used to
1693 determine whether a client copy can be covered by the history
1694 information by comparing it to the synchronization state contained in
1695 the cookie supplied by the client.
1696
1697 When there is a large number of sessions, it may make sense to
1698 maintain such history only for the selected clients. Also, servers
1699 taking this approach need to consider resource consumption issues to
1700 ensure reasonable server operation and to protect against abuse. It
1701 may be appropriate to restrict this mode of operation by policy.
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711Zeilenga & Choi Experimental [Page 30]
1712
1713
1714RFC 4533 LDAP Content Synchronization Operation June 2006
1715
1716
1717Authors' Addresses
1718
1719 Kurt D. Zeilenga
1720 OpenLDAP Foundation
1721
1722 EMail: Kurt@OpenLDAP.org
1723
1724
1725 Jong Hyuk Choi
1726 IBM Corporation
1727
1728 EMail: jongchoi@us.ibm.com
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768Zeilenga & Choi Experimental [Page 31]
1769
1770
1771RFC 4533 LDAP Content Synchronization Operation June 2006
1772
1773
1774Full Copyright Statement
1775
1776 Copyright (C) The Internet Society (2006).
1777
1778 This document is subject to the rights, licenses and restrictions
1779 contained in BCP 78 and at www.rfc-editor.org/copyright.html, and
1780 except as set forth therein, the authors retain all their rights.
1781
1782 This document and the information contained herein are provided on an
1783 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1784 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1785 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1786 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1787 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1788 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1789
1790Intellectual Property
1791
1792 The IETF takes no position regarding the validity or scope of any
1793 Intellectual Property Rights or other rights that might be claimed to
1794 pertain to the implementation or use of the technology described in
1795 this document or the extent to which any license under such rights
1796 might or might not be available; nor does it represent that it has
1797 made any independent effort to identify any such rights. Information
1798 on the procedures with respect to rights in RFC documents can be
1799 found in BCP 78 and BCP 79.
1800
1801 Copies of IPR disclosures made to the IETF Secretariat and any
1802 assurances of licenses to be made available, or the result of an
1803 attempt made to obtain a general license or permission for the use of
1804 such proprietary rights by implementers or users of this
1805 specification can be obtained from the IETF on-line IPR repository at
1806 http://www.ietf.org/ipr.
1807
1808 The IETF invites any interested party to bring to its attention any
1809 copyrights, patents or patent applications, or other proprietary
1810 rights that may cover technology that may be required to implement
1811 this standard. Please address the information to the IETF at
1812 ietf-ipr@ietf.org.
1813
1814Acknowledgement
1815
1816 Funding for the RFC Editor function is provided by the IETF
1817 Administrative Support Activity (IASA).
1818
1819
1820
1821
1822
1823
1824
1825Zeilenga & Choi Experimental [Page 32]
1826
1827
Note: See TracBrowser for help on using the repository browser.