7 Network Working Group R. Harrison
8 Request for Comments: 4373 J. Sermersheim
9 Category: Informational Novell, Inc.
14 Lightweight Directory Access Protocol (LDAP)
15 Bulk Update/Replication Protocol (LBURP)
19 This memo provides information for the Internet community. It does
20 not specify an Internet standard of any kind. Distribution of this
25 Copyright (C) The Internet Society (2006).
29 The Lightweight Directory Access Protocol (LDAP) Bulk
30 Update/Replication Protocol (LBURP) allows an LDAP client to perform
31 a bulk update to an LDAP server. The protocol frames a sequenced set
32 of update operations within a pair of LDAP extended operations to
33 notify the server that the update operations in the framed set are
34 related in such a way that the ordering of all operations can be
35 preserved during processing even when they are sent asynchronously by
36 the client. Update operations can be grouped within a single
37 protocol message to maximize the efficiency of client-server
40 The protocol is suitable for efficiently making a substantial set of
41 updates to the entries in an LDAP server.
58 Harrison, et al. Informational [Page 1]
60 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
65 1. Introduction ....................................................3
66 2. Conventions Used in This Document ...............................3
67 3. Overview of Protocol ............................................3
68 3.1. Update Initiation ..........................................4
69 3.2. Update Stream ..............................................4
70 3.2.1. LBURPUpdateRequest ..................................4
71 3.2.2. LBURPUpdateResponse .................................4
72 3.3. Update Termination .........................................4
73 3.4. Applicability of Protocol ..................................5
74 4. Description of Protocol Flow ....................................5
75 5. Elements of Protocol ............................................6
76 5.1. StartLBURPRequest ..........................................7
77 5.1.1. updateStyleOID ......................................7
78 5.2. StartLBURPResponse .........................................7
79 5.2.1. maxOperations .......................................8
80 5.3. LBURPUpdateRequest .........................................8
81 5.3.1. sequenceNumber ......................................8
82 5.3.2. UpdateOperationList .................................9
83 5.4. LBURPUpdateResponse ........................................9
84 5.4.1. OperationResults ...................................10
85 5.4.1.1. operationNumber ...........................10
86 5.4.1.2. ldapResult ................................10
87 5.5. EndLBURPRequest ...........................................10
88 5.5.1. sequenceNumber .....................................10
89 5.6. EndLBURPResponse ..........................................11
90 6. Semantics of the Incremental Update Style ......................11
91 7. General LBURP Semantics ........................................11
92 8. Security Considerations ........................................12
93 9. IANA Considerations ............................................13
94 9.1. LDAP Object Identifier Registrations ......................13
95 10. Normative References ..........................................14
96 11. Informative References ........................................14
114 Harrison, et al. Informational [Page 2]
116 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
121 The Lightweight Directory Access Protocol (LDAP) Bulk
122 Update/Replication Protocol (LBURP) arose from the need to allow an
123 LDAP client to efficiently present large quantities of updates to an
124 LDAP server and have the LDAP server efficiently process them. LBURP
125 introduces a minimum of new operational functionality to the LDAP
126 protocol because the update requests sent by the client encapsulate
127 standard LDAP [RFC2251] update operations. However, this protocol
128 greatly facilitates bulk updates by allowing the client to send the
129 update operations asynchronously and still allow the server to
130 maintain proper ordering of the operations. It also allows the
131 server to recognize the client's intent to perform a potentially
132 large set of update operations and then to change its processing
133 strategy to more efficiently process the operations.
135 2. Conventions Used in This Document
137 Imperative keywords defined in RFC 2119 [RFC2119] are used in this
138 document, and carry the meanings described there.
140 All Basic Encoding Rules (BER) [X.690] encodings follow the
141 conventions found in section 5.1 of [RFC2251].
143 The term "supplier" applies to an LDAP client or an LDAP server
144 (acting as a client) that supplies a set of update operations to a
147 The term "consumer" applies to an LDAP server that consumes (i.e.,
148 processes) the sequenced set of update operations sent to it by a
151 3. Overview of Protocol
153 LBURP frames a set of update operations within a pair of LDAP
154 extended operations that mark the beginning and end of the update
155 set. These updates are sent via LDAP extended operations, each
156 containing a sequence number and a list of one or more update
157 operations to be performed by the consumer. Except for the fact that
158 they are grouped together as part of a larger LDAP message, the
159 update operations in each subset are encoded as LDAP update
160 operations and use the LDAP Abstract Syntax Notation One (ASN.1)
161 [X.680] message types specified in [RFC2251].
170 Harrison, et al. Informational [Page 3]
172 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
175 3.1. Update Initiation
177 The protocol is initiated when a supplier sends a StartLBURPRequest
178 extended operation to a consumer as a notification that a stream of
179 associated LBURPUpdateRequests will follow. The supplier associates
180 semantics with this stream of requests by including the Object
181 Identifier (OID) of the bulk update/replication style in the
182 StartLBURPRequest. The consumer responds to the StartLBURPRequest
183 with a StartLBURPResponse message.
187 After the consumer responds with a StartLBURPResponse, the supplier
188 sends a stream of LBURPUpdateRequest messages to the consumer.
189 Messages within this stream may be sent asynchronously to maximize
190 the efficiency of the transfer. The consumer responds to each
191 LBURPUpdateRequest with an LBURPUpdateResponse message.
193 3.2.1. LBURPUpdateRequest
195 Each LBURPUpdateRequest contains a sequence number identifying its
196 relative position within the update stream and an UpdateOperationList
197 containing an ordered list of LDAP update operations to be applied to
198 the Directory Information Tree (DIT). The sequence number enables
199 the consumer to process LBURPUpdateRequest messages in the order they
200 were sent by the supplier even when they are sent asynchronously.
201 The consumer processes each LBURPUpdateRequest according to the
202 sequence number by applying the LDAP update operations in its
203 UpdateOperationList to the DIT in the order they are listed.
205 3.2.2. LBURPUpdateResponse
207 When the consumer has processed the update operations from an
208 UpdateOperationList, it sends an LBURPUpdateResponse to the supplier
209 indicating the success or failure of the update operations contained
210 within the corresponding LBURPUpdateRequest.
212 3.3. Update Termination
214 After the supplier has sent all of its LBURPUpdateRequest messages,
215 it sends an EndLBURPRequest message to the consumer to terminate the
216 update stream. Upon servicing all LBURPOperation requests and
217 receiving the EndLBURPRequest, the consumer responds with an
218 EndLBURPResponse, and the update is complete.
226 Harrison, et al. Informational [Page 4]
228 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
231 3.4. Applicability of Protocol
233 LBURP is designed to facilitate the bulk update of LDAP servers. It
234 can also be used to synchronize directory information between a
235 single master and multiple slaves.
237 No attempt is made to deal with the issues associated with multiple-
238 master replication environments (such as keeping modification times
239 of attribute values) so that updates to the same entry on different
240 replicas can be correctly ordered. For this reason, when LBURP alone
241 is used for replication, proper convergence of the data between all
242 replicas can only be assured in a single-master replication
245 4. Description of Protocol Flow
247 This section describes the LBURP protocol flow and the information
248 contained in each protocol message. Throughout this section, the
249 client or server acting as a supplier is indicated by the letter "S",
250 and the server acting as a consumer is indicated by the letter "C".
251 The construct "S -> C" indicates that the supplier is sending an LDAP
252 message to the consumer, and "C -> S" indicates that the consumer is
253 sending an LDAP message to the supplier. Note that the protocol flow
254 below assumes that a properly authenticated LDAP session has already
255 been established between the supplier and consumer.
257 S -> C: StartLBURPRequest message. The parameter is:
259 1) OID for the LBURP update style (see section 5.1.1).
261 C -> S: StartLBURPResponse message. The parameter is:
263 1) An optional maxOperations instruction
266 S -> C: An update stream consisting of zero or more
267 LBURPUpdateRequest messages. The requests MAY be sent
268 asynchronously. The parameters are:
270 1) A sequence number specifying the order of
271 this LBURPUpdateRequest with respect to the
272 other LBURPUpdateRequest messages in the update
273 stream (see section 5.3.1).
275 2) LBURPUpdateRequest.updateOperationList, a list
276 of one or more LDAP update operations (see section
282 Harrison, et al. Informational [Page 5]
284 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
287 The consumer processes the LBURPUpdateRequest messages
288 in the order of their sequence numbers and applies the
289 LDAP update operations contained within each
290 LBURPUpdateRequest to the DIT in the order they are
293 C -> S: LBURPUpdateResponse message. This is sent when the
294 consumer completes processing the update operations
295 from each LBURPUpdateRequest.updateOperationList.
297 S -> C: EndLBURPRequest message. This is sent after the
298 supplier sends all of its LBURPUpdateRequest messages
299 to the consumer. The parameter is:
301 1) A sequence number that is one greater than the
302 sequence number of the last LBURPUpdateRequest
303 message in the update stream. This allows the
304 EndLBURPRequest to also be sent asynchronously.
306 C -> S: EndLBURPResponse message. This is sent in response to
307 the EndLBURPRequest after the consumer has serviced
308 all LBURPOperation requests.
310 5. Elements of Protocol
312 LBURP uses two LDAP ExtendedRequest messages--StartLBURPRequest and
313 EndLBURPRequest--to initiate and terminate the protocol. A third
314 LDAP ExtendedRequest message--LBURPUpdateRequest--is used to send
315 update operations from the supplier to the consumer. These three
316 requests along with their corresponding responses comprise the entire
319 LBURP request messages are defined in terms of the LDAP
320 ExtendedRequest [RFC2251] as follows:
322 ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
323 requestName [0] LDAPOID,
324 requestValue [1] OCTET STRING OPTIONAL
327 LBURP response messages are defined in terms of the LDAP
328 ExtendedResponse [RFC2251] as follows:
330 ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
331 COMPONENTS of LDAPResult,
332 responseName [10] LDAPOID OPTIONAL,
333 response [11] OCTET STRING OPTIONAL
338 Harrison, et al. Informational [Page 6]
340 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
343 5.1. StartLBURPRequest
345 The requestName value of the StartLBURPRequest is OID 1.3.6.1.1.17.1.
347 The requestValue of the StartLBURPRequest contains the BER-encoding
348 of the following ASN.1:
350 StartLBURPRequestValue ::= SEQUENCE {
351 updateStyleOID LDAPOID
354 LDAPOID is defined in [RFC2251], section 4.1.2.
356 5.1.1. updateStyleOID
358 The updateStyleOID is an OID that uniquely identifies the LBURP
359 update style being used. This document defines one LBURP update
360 semantic style that can be transmitted between the StartLBURPRequest
361 and EndLBURPRequest. The updateStyleOID is included in the protocol
362 for future expansion of additional update styles. For example, a
363 future specification might define an update style with semantics to
364 replace all existing entries with a new set of entries and thus only
365 allows the Add operation.
367 The updateStyleOID for the LBURP Incremental Update style is
368 1.3.6.1.1.17.7. The semantics of this update style are described in
371 5.2. StartLBURPResponse
373 The responseName of the StartLBURPResponse is the OID 1.3.6.1.1.17.2.
375 The optional response element contains the BER-encoding of the
378 StartLBURPResponseValue ::= maxOperations
380 maxOperations ::= INTEGER (0 .. maxInt)
382 maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) --
394 Harrison, et al. Informational [Page 7]
396 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
401 When present, the value of maxOperations instructs the supplier to
402 send no more than that number of update operations per
403 LBURPUpdateRequest.updateOperationList (see section 5.3.2). If the
404 consumer does not send a maxOperations value, it MUST be prepared to
405 accept any number of update operations per
406 LBURPUpdateRequest.updateOperationList. The supplier MAY send fewer
407 but MUST NOT send more than maxOperations update operations in a
408 single LBURPUpdateRequest.updateOperationList.
410 5.3. LBURPUpdateRequest
412 The LBURPUpdateRequest message is used to send a set of zero or more
413 LDAP update operations from the supplier to the consumer along with
414 sequencing information that enables the consumer to maintain the
415 proper sequencing of multiple asynchronous LBURPUpdateRequest
418 The requestName of the LBURPUpdateRequest is the OID 1.3.6.1.1.17.5.
420 The requestValue of an LBURPOperation contains the BER-encoding of
423 LBURPUpdateRequestValue ::= SEQUENCE {
424 sequenceNumber INTEGER (1 .. maxInt),
425 updateOperationList UpdateOperationList
428 5.3.1. sequenceNumber
430 The sequenceNumber orders associated LBURPOperation requests. This
431 enables the consumer to process LBURPOperation requests in the order
432 specified by the supplier. The supplier MUST set the value of
433 sequenceNumber of the first LBURPUpdateRequest to 1, and MUST
434 increment the value of sequenceNumber by 1 for each succeeding
435 LBURPUpdateRequest. In the unlikely event that the number of
436 LBURPUpdateRequest messages exceeds maxInt, a sequenceNumber value of
437 1 is deemed to be the succeeding sequence number following a sequence
450 Harrison, et al. Informational [Page 8]
452 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
455 5.3.2. UpdateOperationList
457 The UpdateOperationList is a list of one or more standard LDAP update
458 requests and is defined as follows:
460 UpdateOperationList ::= SEQUENCE OF SEQUENCE{
461 updateOperation CHOICE {
462 addRequest AddRequest,
463 modifyRequest ModifyRequest,
464 delRequest DelRequest,
465 modDNRequest ModifyDNRequest
467 controls [0] Controls OPTIONAL
470 AddRequest, ModifyRequest, DelRequest, and ModifyDNRequest are
471 defined in [RFC2251], sections 4.6, 4.7, 4.8, and 4.9.
473 The LDAP update requests in the UpdateOperationList MUST be applied
474 to the DIT in the order in which they are listed.
476 5.4. LBURPUpdateResponse
478 An LBURPUpdateResponse message is sent from the consumer to the
479 supplier to signal that all of the update operations from the
480 UpdateOperationList of an LBURPUpdateRequest have been completed and
481 to give the results for the update operations from that list.
483 The responseName of the LBURPUpdateResponse is the OID
486 If the consumer server cannot successfully decode an
487 LBURPUpdateRequest in its entirety, the resultCode for the
488 corresponding LBURPUpdateResponse is set to protocolError and the
489 response element is omitted. Updates from the LBURPUpdateRequest
490 SHALL NOT be committed to the DIT in this circumstance.
492 If the status of all of the update operations being reported by an
493 LBURPUpdateResponse message is success, the resultCode of the
494 LBURPUpdateResponse message is set to success and the response
497 If the status of any of the update operations being reported by an
498 LBURPUpdateResponse message is something other than success, the
499 resultCode for the entire LBURPUpdateResponse is set to other to
500 signal that the response element is present.
506 Harrison, et al. Informational [Page 9]
508 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
511 5.4.1. OperationResults
513 When a response element is included in an LBURPUpdateResponse
514 message, it contains the BER-encoding of the following ASN.1:
516 OperationResults ::= SEQUENCE OF OperationResult
518 OperationResult ::= SEQUENCE {
519 operationNumber INTEGER,
520 ldapResult LDAPResult
523 An OperationResult is included for each operation from the
524 UpdateOperationList that failed during processing.
526 5.4.1.1. operationNumber
528 The operationNumber identifies the LDAP update operation from the
529 UpdateOperationList of the LBURPUpdateRequest that failed.
530 Operations are numbered beginning at 1.
534 The ldapResult included in the OperationResult is the same ldapResult
535 that would be sent for the update operation that failed if it had
536 failed while being processed as a normal LDAP update operation.
537 LDAPResult is defined in [RFC2251], section 4.1.10.
541 The requestName of the EndLBURPRequest is the OID 1.3.6.1.1.17.3.
543 The requestValue contains the BER-encoding of the following ASN.1:
545 EndLBURPRequestValue::= SEQUENCE {
546 sequenceNumber INTEGER (1 .. maxInt)
549 5.5.1. sequenceNumber
551 The value in sequenceNumber is one greater than the last
552 LBURPUpdateRequest.sequenceNumber in the update stream. It allows
553 the server to know when it has received all outstanding asynchronous
562 Harrison, et al. Informational [Page 10]
564 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
567 5.6. EndLBURPResponse
569 The responseName of the EndLBURPResponse is the OID 1.3.6.1.1.17.4.
571 There is no response element in the EndLBURPResponse message.
573 6. Semantics of the Incremental Update Style
575 The initial state of entries in the consumer's DIT plus the
576 LBURPUpdateRequest messages in the update stream collectively
577 represent the desired final state of the consumer's DIT. All LDAP
578 update operations defined in [RFC2251]--Add, Modify, Delete, and
579 Modify DN--are allowed in the incremental update stream. All of the
580 semantics of those operations are in effect, so for instance, an
581 attempt to add an entry that already exists will fail just as it
582 would during a normal LDAP Add operation.
584 7. General LBURP Semantics
586 The consumer server may take any action required to efficiently
587 process the updates sent via LBURP, as long as the final state is
588 equivalent to that which would have been achieved if the updates in
589 the update stream had been applied to the DIT using normal LDAP
592 The LBURPUpdateRequest messages that form the update stream MAY be
593 sent asynchronously by the supplier to the consumer. This means that
594 the supplier need not wait for an LBURPUpdateResponse message for one
595 LBURPUpdateRequest message before sending the next LBURPUpdateRequest
598 When the LBURP update stream contains a request that affects multiple
599 Directory System Agents (DSAs), the consumer MAY choose to perform
600 the request or return a resultCode value of affectsMultipleDSAs. As
601 with any LDAP operation, a consumer MAY send a resultCode value of
602 referral as part of the OperationResult element for any operation on
603 an entry that it does not contain. If the consumer is configured to
604 do so, it MAY chain on behalf of the supplier to complete the update
607 While a consumer server is processing an LBURP update stream, it may
608 choose not to service LDAP requests on other connections. This
609 provision is designed to allow implementers the freedom to implement
610 highly-efficient methods of handling the update stream without being
611 constrained by the need to maintain a live, working DIT database
618 Harrison, et al. Informational [Page 11]
620 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
623 If a consumer chooses to refuse LDAP operation requests from other
624 suppliers during LBURP update, it is RECOMMENDED that the consumer
625 refer those requests to another server that has the appropriate data
626 to complete the operation.
628 Unless attribute values specifying timestamps are included as part of
629 the update stream, updates made using LBURP are treated the same as
630 other LDAP operations wherein they are deemed to occur at the
631 present. Consumers MAY store timestamp values sent by suppliers but
632 are not required to do so.
634 Implementations may choose to perform the operations in the update
635 stream with special permissions to improve performance.
637 Consumer implementations should include functionality to detect and
638 terminate connections on which an LBURP session has been initiated
639 but information (such as the EndLBURPRequest) needed to complete the
640 LBURP session is never received. A timeout is one mechanism that can
641 be used to accomplish this.
643 8. Security Considerations
645 Implementations should ensure that a supplier making an LBURP request
646 is properly authenticated and authorized to make the updates
647 requested. There is a potential for loss of data if updates are made
648 to the DIT without proper authorization. If LBURP is used for
649 replication, implementers should note that unlike other replication
650 protocols, no existing replication agreement between supplier and
651 consumer is required. These risks increase if the consumer server
652 also processes the update stream with special permissions to improve
653 performance. For these reasons, implementers should carefully
654 consider which permissions should be required to perform LBURP
655 operations and take steps to ensure that only connections with
656 appropriate authorization are allowed to perform them.
658 The data contained in the update stream may contain passwords and
659 other sensitive data. Care should be taken to properly safeguard
660 this information while in transit between supplier and consumer. The
661 StartTLS [RFC2830] operation is one mechanism that can be used to
662 provide data confidentiality and integrity services for this purpose.
664 As with any asynchronous LDAP operation, it may be possible for an
665 LBURP supplier to send asynchronous LBURPUpdateRequest messages to
666 the consumer faster than the consumer can process them. Consumer
667 implementers should take steps to prevent LBURP suppliers from
668 interfering with the normal operation of a consumer server by issuing
669 a rapid stream of asynchronous LBURPUpdateRequest messages.
674 Harrison, et al. Informational [Page 12]
676 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
679 9. IANA Considerations
681 Registration of the following values has been made by the IANA
684 9.1. LDAP Object Identifier Registrations
686 The IANA has registered LDAP Object Identifiers identifying the
687 protocol elements defined in this technical specification. The
688 following registration template was provided:
690 Subject: Request for LDAP OID Registration
691 Person & email address to contact for further information:
694 Specification: RFC 4373
695 Author/Change Controller: IESG
697 Seven delegations will be made under the assigned OID. The
698 following 6 OIDs are Protocol Mechanism OIDs of type "E"
699 (supportedExtension):
701 1.3.6.1.1.17.1 StartLBURPRequest LDAP ExtendedRequest message
702 1.3.6.1.1.17.2 StartLBURPResponse LDAP ExtendedResponse message
703 1.3.6.1.1.17.3 EndLBURPRequest LDAP ExtendedRequest message
704 1.3.6.1.1.17.4 EndLBURPResponse LDAP ExtendedResponse message
705 1.3.6.1.1.17.5 LBURPUpdateRequest LDAP ExtendedRequest message
706 1.3.6.1.1.17.6 LBURPUpdateResponse LDAP ExtendedResponse message
708 The following 1 OID is a Protocol Mechanism OID of type "F"
711 1.3.6.1.1.17.7 LBURP Incremental Update style OID
730 Harrison, et al. Informational [Page 13]
732 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
735 10. Normative References
737 [RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate
738 Requirement Levels", BCP 14, RFC 2119, March 1997.
740 [RFC2251] Wahl, M., Howes, T., and S. Kille, "Lightweight Directory
741 Access Protocol (v3)", RFC 2251, December 1997.
743 [RFC3383] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
744 Considerations for the Lightweight Directory Access
745 Protocol (LDAP)", BCP 64, RFC 3383, September 2002.
747 [X.680] ITU-T Recommendation X.680 (07/2002) | ISO/IEC 8824-1:2002
748 "Information Technology - Abstract Syntax Notation One
749 (ASN.1): Specification of basic notation"
751 [X.690] ITU-T Rec. X.690 (07/2002) | ISO/IEC 8825-1:2002,
752 "Information technology - ASN.1 encoding rules:
753 Specification of Basic Encoding Rules (BER), Canonical
754 Encoding Rules (CER) and Distinguished Encoding Rules
757 11. Informative References
759 [RFC2830] Hodges, J., Morgan, R., and M. Wahl, "Lightweight
760 Directory Access Protocol (v3): Extension for Transport
761 Layer Security", RFC 2830, May 2000.
786 Harrison, et al. Informational [Page 14]
788 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
798 Phone: +1 801 861 2642
799 EMail: rharrison@novell.com
807 Phone: +1 801 861 3088
808 EMail: jimse@novell.com
813 EMail: yulindong@gmail.com
842 Harrison, et al. Informational [Page 15]
844 RFC 4373 LDAP Bulk Update/Replication Protocol January 2006
847 Full Copyright Statement
849 Copyright (C) The Internet Society (2006).
851 This document is subject to the rights, licenses and restrictions
852 contained in BCP 78, and except as set forth therein, the authors
853 retain all their rights.
855 This document and the information contained herein are provided on an
856 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
857 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
858 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
859 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
860 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
861 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
863 Intellectual Property
865 The IETF takes no position regarding the validity or scope of any
866 Intellectual Property Rights or other rights that might be claimed to
867 pertain to the implementation or use of the technology described in
868 this document or the extent to which any license under such rights
869 might or might not be available; nor does it represent that it has
870 made any independent effort to identify any such rights. Information
871 on the procedures with respect to rights in RFC documents can be
872 found in BCP 78 and BCP 79.
874 Copies of IPR disclosures made to the IETF Secretariat and any
875 assurances of licenses to be made available, or the result of an
876 attempt made to obtain a general license or permission for the use of
877 such proprietary rights by implementers or users of this
878 specification can be obtained from the IETF on-line IPR repository at
879 http://www.ietf.org/ipr.
881 The IETF invites any interested party to bring to its attention any
882 copyrights, patents or patent applications, or other proprietary
883 rights that may cover technology that may be required to implement
884 this standard. Please address the information to the IETF at
889 Funding for the RFC Editor function is provided by the IETF
890 Administrative Support Activity (IASA).
898 Harrison, et al. Informational [Page 16]