home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2654.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  47.0 KB  |  1,348 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                      R. Hedberg
  8. Request for Comments: 2654                                  Catalogix
  9. Category: Experimental                                  B. Greenblatt
  10.                        Directory Tools and Application Services, Inc.
  11.                                                              R. Moats
  12.                                                                  AT&T
  13.                                                               M. Wahl
  14.                                          Innosoft International, Inc.
  15.                                                           August 1999
  16.  
  17.  
  18.      A Tagged Index Object for use in the Common Indexing Protocol
  19.  
  20. Status of this Memo
  21.  
  22.    This memo defines an Experimental Protocol for the Internet
  23.    community.  It does not specify an Internet standard of any kind.
  24.    Discussion and suggestions for improvement are requested.
  25.    Distribution of this memo is unlimited.
  26.  
  27. Copyright Notice
  28.  
  29.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  30.  
  31. Abstract
  32.  
  33.    This document defines a mechanism by which information servers can
  34.    exchange indices of information from their databases by making use of
  35.    the Common Indexing Protocol (CIP).  This document defines the
  36.    structure of the index information being exchanged, as well as the
  37.    appropriate meanings for the headers that are defined in the Common
  38.    Indexing Protocol.  It is assumed that the structures defined here
  39.    can be used by X.500 DSAs, LDAP servers, Whois++ servers, CSO Ph
  40.    servers and many others.
  41.  
  42. Table of Contents
  43.  
  44.    1. Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 2
  45.    2. Background  . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  46.    3. Object  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  47.    4. The Tagged Index Object . . . . . . . . . . . . . . . . . . . . 5
  48.    4.1. The Agreement . . . . . . . . . . . . . . . . . . . . . . . . 5
  49.    4.2. Content Type  . . . . . . . . . . . . . . . . . . . . . . . . 8
  50.    4.3 Tagged Index BNF . . . . . . . . . . . . . . . . . . . . . . . 9
  51.    4.3.1. Header Descriptions . . . . . . . . . . . . . . . . . . . .10
  52.    4.3.2. Tokenization types  . . . . . . . . . . . . . . . . . . . .11
  53.    4.3.3. Tag Conventions . . . . . . . . . . . . . . . . . . . . . .11
  54.    4.4. Incremental Indexing  . . . . . . . . . . . . . . . . . . . .12
  55.  
  56.  
  57.  
  58. Hedberg, et al.               Experimental                      [Page 1]
  59.  
  60. RFC 2654           Tagged Index Object for use in CIP        August 1999
  61.  
  62.  
  63.    5. Examples  . . . . . . . . . . . . . . . . . . . . . . . . . . .13
  64.    5.1 The original database  . . . . . . . . . . . . . . . . . . . .13
  65.    5.1.1 "complete" consistency based full update . . . . . . . . . .14
  66.    5.1.2 "tag" consistency based full update  . . . . . . . . . . . .14
  67.    5.1.3 "unique" consistency based full update . . . . . . . . . . .15
  68.    5.2 First update . . . . . . . . . . . . . . . . . . . . . . . . .16
  69.    5.2.1 "complete" consistency based incremental update  . . . . . .16
  70.    5.2.2 "tag" consistency based incremental update   . . . . . . . .17
  71.    5.2.3 "unique" consistency based incremental update  . . . . . . .17
  72.    5.3 Second update  . . . . . . . . . . . . . . . . . . . . . . . .18
  73.    5.3.1 "complete" consistency based incremental update  . . . . . .18
  74.    5.3.2 "tag" consistency based incremental update . . . . . . . . .19
  75.    5.3.3 "unique" consistency based incremental update  . . . . . . .20
  76.    6. Aggregation . . . . . . . . . . . . . . . . . . . . . . . . . .21
  77.    6.1 Aggregation of Tagged Index Objects  . . . . . . . . . . . . .21
  78.    7. Security Considerations . . . . . . . . . . . . . . . . . . . .21
  79.    8. References  . . . . . . . . . . . . . . . . . . . . . . . . . .22
  80.    9. Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . .23
  81.    Full Copyright Statement . . . . . . . . . . . . . . . . . . . . .24
  82.  
  83. 1. Introduction
  84.  
  85.    The Common Indexing Protocol (CIP) as defined in [1] proposes a
  86.    mechanism for distributing searches across several instances of a
  87.    single type of search engine to create a global directory.  CIP
  88.    provides a scalable, flexible scheme to tie individual databases into
  89.    distributed data warehouses that can scale gracefully with the growth
  90.    of the Internet.  CIP provides a mechanism for meeting these goals
  91.    that is independent of the access method that is used to access the
  92.    data that underlies the indices.  Separate from CIP is the definition
  93.    of the Index Object that is used to contain the information that is
  94.    exchanged among Index Servers.  One such Index Object that has
  95.    already been defined is the Centroid that is derived from the Whois++
  96.    protocol [2].
  97.  
  98.    The Centroid does not meet all the requirements for the exchange of
  99.    index information amongst information servers.  For example, it does
  100.    not support the notion of incremental updates natively.  For
  101.    information servers that contain millions of records in their
  102.    database, constant exchange of complete dredges of the database is
  103.    bandwidth intensive.  The Tagged Index Object is specifically
  104.    designed to support the exchange of index update information.  This
  105.    design comes at the cost of an increase in the size of the index
  106.    object being exchanged.  The Centroid is also not tailored to always
  107.    be able to give boolean answers to queries.  In the Centroid Model,
  108.    "an index server will take a query in standard Whois++ format, search
  109.    its collections of centroids and other forward information, determine
  110.    which servers hold records which may fill that query, and then
  111.  
  112.  
  113.  
  114. Hedberg, et al.               Experimental                      [Page 2]
  115.  
  116. RFC 2654           Tagged Index Object for use in CIP        August 1999
  117.  
  118.  
  119.    notifies the user's client of the next servers to contact to submit
  120.    the query." [2] Thus, the exchange of Centroids amongst index servers
  121.    allows hints to be given about which information server actually
  122.    contains the information.  The Tagged Index Object labels the various
  123.    pieces of information with identifiers that tie the individual object
  124.    attributes back to an object as a whole.  This "tagging" of
  125.    information allows an index server to be more capable of directing a
  126.    specific query to the appropriate information server.  Again, this
  127.    feature is added to the Tagged Index Object at the expense of an
  128.    increase in the size of the index object.
  129.  
  130. 2. Background
  131.  
  132.    The Lightweight Directory Access Protocol (LDAP) is defined in [3],
  133.    and it defines a mechanism for accessing a collection of information
  134.    arranged hierarchically in such a way as to provide a globally
  135.    distributed database which is normally called the Directory
  136.    Information Tree (DIT).  Some distinguishing characteristics of LDAP
  137.    servers are that normally, several servers cooperate to manage a
  138.    common subtree of the DIT.  LDAP servers are expected to respond to
  139.    requests that pertain to portions of the DIT for which they have
  140.    data, as well as for those portions for which they have no
  141.    information in their database. For example, the LDAP server for a
  142.    portion of the DIT in the United States (c=US) must be able to
  143.    provide a response to a Search operation that pertains to a portion
  144.    of the DIT in Sweden (c=se).  Normally, the response given will be a
  145.    referral to another LDAP server that is expected to be more
  146.    knowledgeable about the appropriate subtree.  However, there is no
  147.    mechanism that currently enables these LDAP servers to refer the LDAP
  148.    client to the supposedly more knowledgeable server.  Typically, an
  149.    LDAP (v3) server is configured with the name of exactly one other
  150.    LDAP server to which all LDAP clients are referred when their
  151.    requests fall outside the subtree of the DIT for which that LDAP
  152.    server has knowledge.  This specification defines a mechanism whereby
  153.    LDAP server can exchange index information that will allow referrals
  154.    to point towards a clearly accurate destination.
  155.  
  156.    The X.500 series of recommendations defines the Directory Information
  157.    Shadowing Protocol (DISP) [4] which allows X.500 DSAs to exchange
  158.    information in the DIT.  Shadowing allows various information from
  159.    various portions of the DIT to be replicated amongst participating
  160.    DSAs.  The design point of DISP is improved at the exchange of entire
  161.    portions of the DIT, whereas the design point of CIP and the Tagged
  162.    Index Object is optimized at the exchange of structural index
  163.    information about the DIT, and improving the performance of tree
  164.    navigation amongst various information servers.  The Tagged Index
  165.    Object is more appropriate for the exchange of index information than
  166.    is DISP.  DISP is more targeted at DIT distribution and fault
  167.  
  168.  
  169.  
  170. Hedberg, et al.               Experimental                      [Page 3]
  171.  
  172. RFC 2654           Tagged Index Object for use in CIP        August 1999
  173.  
  174.  
  175.    tolerance.  DISP is thus more appropriate for the exchange of the
  176.    data in order to spread the load amongst several information servers.
  177.    DISP is tailored specifically to X.500 (and other hierarchical
  178.    directory systems), while the Tagged Index Object and CIP can be used
  179.    in a wide variety of information server environments.
  180.  
  181.    While DISP allows an individual directory server to collect
  182.    information about large parts of the DIT, it would require a huge
  183.    database to collect all the replicas for a significant portion of the
  184.    DIT.  Furthermore, as X.525 states: "Before shadowing can occur, an
  185.    agreement, covering the conditions under which shadowing may occur is
  186.    required.  Although such agreements may be established in a variety
  187.    of ways, such as policy statements covering all DSAs within a given
  188.    DMD ...", where a DMD is a Directory Management Domain.  This is
  189.    owing to the case that the data in the DIT is being exchanged amongst
  190.    DSA rather than only the information required to maintain an Index.
  191.    In many environments such an agreement is not appropriate, and to
  192.    collect information for a meaningful portion of the DIT, many
  193.    agreements may need to be arranged.
  194.  
  195. 3. Object
  196.  
  197.    What is desired is to have an information server (or network of
  198.    information servers) that can quickly respond to real world requests,
  199.    like:
  200.  
  201.    -    What is Tim Howes's email address?  This is much harder than;
  202.         What email address does Tim Howes at Netscape have ?
  203.  
  204.    -    What is the X.509 certificate for Fred Smith at compuserve.com?
  205.         One certainly doesn't want to search CompuServe's entire
  206.         directory tree to find out this one piece of information.  I
  207.         also don't want to have to shadow the entire CompuServe
  208.         directory subtree onto my server.  If this request is being made
  209.         because Fred is trying to log into my server, I'd certainly want
  210.         to be able to respond to the BIND in real time.
  211.  
  212.    -    Who are all the people at Novell that have a title of
  213.         programmer?
  214.  
  215.    all these requests can reasonably be translated into LDAP or Whois++,
  216.    and other directory access protocol queries.  They can also be
  217.    serviced in a straightforward way by the users home information
  218.    server if it has the appropriate reference information into the
  219.    database that contains the source data.  Here, the first server would
  220.    be able to "chain" the request for the user.  Alternatively, a
  221.    precise referral could be returned.  If the home information server
  222.    wants to service (i.e chain) the request based on the index
  223.  
  224.  
  225.  
  226. Hedberg, et al.               Experimental                      [Page 4]
  227.  
  228. RFC 2654           Tagged Index Object for use in CIP        August 1999
  229.  
  230.  
  231.    information that it has on hand, this servicing could be done several
  232.    different means:
  233.  
  234.       -    issuing LDAP operations to the remote directory server
  235.  
  236.       -    issuing DSP operations to the remote directory server
  237.  
  238.       -    issuing DAP operations to the remote directory server
  239.  
  240.       -    issuing Whois++ operations to the remote Whois++ server
  241.  
  242.       -     ...
  243.  
  244. 4. The Tagged Index Object
  245.  
  246.    This section defines a Tagged Index Object that can be exchanged by
  247.    Information Servers using CIP.  While often it is acceptable for
  248.    Information Servers to make use of the Centroid definition (from [2])
  249.    to exchange index information, the goals in defining a new construct
  250.    are multi-pronged:
  251.  
  252.    -    When the Information Server receives a search request that
  253.         warrants that a referral be returned, allow the server to return
  254.         a referral that will point client to a server that is most
  255.         likely able to answer the request correctly.  False positive
  256.         referrals (the search turns up hits in the index object that
  257.         generate referrals to servers that don't hold the desired
  258.         information) can be reduced, depending on the choice of
  259.         attribute tokenization types that are used.
  260.  
  261.    -    Potentially allow incremental updates that will then consume
  262.         substantially less bandwidth then if full updates always had to
  263.         be used.
  264.  
  265. 4.1. The Agreement
  266.  
  267.    Before a Tagged Index Object can be exchanged, the organization that
  268.    administers the object supplier and the organization that administers
  269.    the object consumer must reach an agreement on how the servers will
  270.    communicate. This agreement contains the following:
  271.  
  272.    -    "index-type": This specification describes the index type "x-
  273.         tagged-index-1"
  274.  
  275.    -    "dsi": An OID that uniquely identifies the subtree and scope.
  276.         This field is not explicitly necessary, as it may not provide
  277.         information beyond what is contained in the "base-uri" below.
  278.  
  279.  
  280.  
  281.  
  282. Hedberg, et al.               Experimental                      [Page 5]
  283.  
  284. RFC 2654           Tagged Index Object for use in CIP        August 1999
  285.  
  286.  
  287.    -    "base-uri": One or more URI's that will form the base of any
  288.         referrals created based on the index object that is governed by
  289.         this agreement.  For example, in the LDAP URL format [8] the
  290.         base-uri would specify (among other items): the LDAP host,  the
  291.         base object to which this index object refers (e.g. c=SE), and
  292.         the scope of the index object (e.g. single container).
  293.  
  294.    -    "supplier": The hostname and listening portnumber of the
  295.         supplier server, as well as any alternative servers holding that
  296.         same naming contexts, if the supplier is unavailable.
  297.  
  298.    -    "consumeraddr": This is a URI of the "mailto:" form, with the
  299.         RFC 822 email address of the consumer server.  Further versions
  300.         of this draft allow other forms of URI, so that the consumer may
  301.         retrieve the update via the WWW, FTP or CIP.
  302.  
  303.    -    "updateinterval": The maximum duration in seconds between
  304.         occurances of the supplier server generating an update.  If the
  305.         consumer server has not received an update from the supplier
  306.         server after waiting this long since the previous update, it is
  307.         likely that the index information is now out of date.  A typical
  308.         value for a server with frequent updates would be 604800
  309.         seconds, or every week.  Servers whose DITs are only  modified
  310.         annually could have a much longer update interval.
  311.  
  312.    -    "attributeNamespace": Every set of index servers that together
  313.         wants to support a specific usage of indeces, has to agree on
  314.         which attributenames to use in the index objects. The
  315.         participating directory servers also has to agree on the mapping
  316.         from local attributenames to the attributenames used in the
  317.         index. Since one specific index server might be involved in
  318.         several such sets, it has to have some way to connect a update
  319.         to the proper set of indexes. One possible solution to this
  320.         would be to use different DSIs.
  321.  
  322.    -    "consistencybase": How consistency of the index is maintained
  323.         over incremental updates:
  324.  
  325.             "complete" - every change or delete concerning one object
  326.             has to contain all tokens connected to that object. This
  327.             method must be supported by any server who wants to comply
  328.             with this standard.
  329.  
  330.             "tag" - starting at a full update every incremental update
  331.             refering back to this full updated has to maintain state-
  332.             information regarding tags, such that a object within the
  333.             original database is assigned the same tagnumber every time.
  334.             This method is optional.
  335.  
  336.  
  337.  
  338. Hedberg, et al.               Experimental                      [Page 6]
  339.  
  340. RFC 2654           Tagged Index Object for use in CIP        August 1999
  341.  
  342.  
  343.             "unique" - every object in the Dataset has to have a unique
  344.             value for a specific attribute in the index. A example of
  345.             such a attribute could be the distinguishedName attribute.
  346.             This method is also optional.
  347.  
  348.    -    "securityoption": Whether and how the supplier server should
  349.         sign and encrypt the update before sending it to the consumer
  350.         server.  Options for this version of the specification are:
  351.  
  352.             "none" - the update is sent in plaintext
  353.  
  354.             "PGP/MIME": the update is digitally signed and encrypted
  355.             using PGP [9]
  356.  
  357.             "S/MIME": the update is digitally signed and encrypted using
  358.             S/MIME [10]
  359.  
  360.             "SSLv3": the update is digitally signed and encrypted using
  361.             an SSLv3 connection [11]
  362.  
  363.             "Fortezza": the update is digitally signed and encrypted
  364.             using Fortezza [5]
  365.  
  366.    It is recommended that the "PGP/MIME" option be used when exchanging
  367.    sensitive information across public networks, and both the supplier
  368.    and consumer have PGP keys. The "Fortezza" option is intended for use
  369.    in environments where security protocols are based on Fortezza-
  370.    compatible devices. The "S/MIME" option can be used with both the
  371.    supplier and consumer have RSA keys and can make use of the PKCS
  372.    protocols defined in the S/MIME specification. The "SSLv3" option can
  373.    be used when both the supplier and consumer have access to SSL
  374.    services, have server certificates, and can mutually authenticate
  375.    each other.
  376.  
  377.    -    Security Credentials: The long-term cryptographic credentials
  378.         used for key exchange and authentication of the consumer and
  379.         supplier servers, if a security option was selected.  For
  380.         "PGP/MIME," this will be the trusted public keys of both
  381.         servers.  For "Fortezza," this will be the certificate paths of
  382.         both servers to a common point of trust. For "S/MIME" and
  383.         "SSLv3" these will be the certificates of the supplier and
  384.         consumer.
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Hedberg, et al.               Experimental                      [Page 7]
  395.  
  396. RFC 2654           Tagged Index Object for use in CIP        August 1999
  397.  
  398.  
  399.         Note that if the index server maintains the information that
  400.         would appear in the agreement in a directory according to the
  401.         definitions in [7], then no real formal agreement between the
  402.         two parties needs to be put in place, and the information that
  403.         is required for communication between the two index servers is
  404.         derived automatically from the directory.
  405.  
  406. 4.2. Content Type
  407.  
  408.    The update consists of a MIME object of type application/cip-index-
  409.    object.  The parameters are:
  410.  
  411.       "type": this has value "application/index.obj.tagged".
  412.  
  413.       "dsi": the DSI (if any) from the agreement.
  414.  
  415.       "base-uri". A set of URIs, separated by spaces. In each URI, the
  416.       hostname/portno must be distinct, and based on the "supplier" part
  417.       of the agreement.
  418.  
  419.    The payload is mostly textual data but may include bytes with the
  420.    high bit set.  The originating information server should set the
  421.    content-transfer-encoding as appropriate for the information included
  422.    in the payload.
  423.  
  424.    This object may be encapsulated in a wrapper content (such as
  425.    multipart/signed) or be encrypted as part of the security procedures.
  426.    The resulting content can the distributed, for example via electronic
  427.    mail.  For example,
  428.  
  429.  
  430.    From: supplier@sup.com Date: Thu, 16 Jan 1997 13:50:37 -0500
  431.    Message-Id: <199701161850.NAA29295@sup.com>;
  432.    To: consumer@consumer.com       <<-- from consumer server address
  433.  
  434.    Reply-to: supplier-admin@sup.com
  435.    MIME-Version: 1.0
  436.    Content-Type: application/index.obj.tagged;
  437.    dsi=1.3.6.1.4.1.1466.85.85.1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16;
  438.    base-uri="ldap://sup.com/dc=sup,dc=com ldap://alt.com/dc=sup,dc=com"
  439.  
  440.  
  441.    The payload is series of CRLF-terminated lines. The payload is UTF-8.
  442.    Some supplier servers may only be able to generate the printable US-
  443.    ASCII subset of UTF-8, but all consumer servers must be able to
  444.    handle the full range of Unicode characters when decoding the
  445.    attribute values (in the "attr-value" field in the BNF below).
  446.  
  447.  
  448.  
  449.  
  450. Hedberg, et al.               Experimental                      [Page 8]
  451.  
  452. RFC 2654           Tagged Index Object for use in CIP        August 1999
  453.  
  454.  
  455. 4.3.  Tagged Index BNF
  456.  
  457.    The Tagged Index object has the following grammar, expressed in
  458.    modified BNF format:
  459.  
  460.    index-object = 0*(io-part SEP) io-part
  461.    io-part      = header SEP schema-spec SEP index-info
  462.    header       = version-spec SEP update-type SEP this-update SEP
  463.                    last-update context-size name-space SEP
  464.    version-spec = "version:" *SPACE "x-tagged-index-1"
  465.    update-type  = "updatetype:" *SPACE ( "total" |
  466.                   ( "incremental" [*SPACE "tagbased"|"uniqueIDbased" ] )
  467.    this-update  = "thisupdate:" *SPACE TIMESTAMP
  468.    last-update  = [ "lastupdate:" *SPACE TIMESTAMP SEP]
  469.    context-size = [ "contextsize:" *SPACE 1*DIGIT SEP]
  470.    schema-spec  = "BEGIN IO-Schema" SEP 1*(schema-line SEP)
  471.                   "END IO-Schema"
  472.    schema-line  = attribute-name ":" token-type
  473.    token-type   = "FULL" | "TOKEN" | "RFC822" | "UUCP" | "DNS"
  474.    index-info   = full-index | incremental-index
  475.    full-index   = "BEGIN Index-Info" SEP 1*(index-block SEP)
  476.                   "END Index-Info"
  477.    incremental-index = 1*(add-block | delete-block | update-block)
  478.    add-block    = "BEGIN Add Block" SEP 1*(index-block SEP)
  479.                   "END Add Block"
  480.    delete-block = "BEGIN Delete Block" SEP 1*(index-block SEP)
  481.                   "END Delete Block"
  482.    update-block = "BEGIN Update Block" SEP
  483.                   0*(old-index-block SEP)
  484.                   1*(new-index-block SEP)
  485.                   "END Update Block"
  486.    old-index-block = "BEGIN Old" SEP 1*(index-block SEP)
  487.                   "END Old"
  488.    new-index-block = "BEGIN New" SEP 1*(index-block SEP)
  489.                   "END New"
  490.    index-block  = first-line 0*(SEP cont-line)
  491.    first-line   = attr-name ":" *SPACE taglist "/" attr-value
  492.    cont-line    = "-" taglist "/" attr-value
  493.    taglist      = tag 0*("," tag) | "*"
  494.    tag          = 1*DIGIT ["-" 1*DIGIT]
  495.    attr-value   = 1*(UTF8)
  496.    attr-name    = 1*(NAMECHAR)
  497.    TIMESTAMP    = 1*DIGIT
  498.    NAMECHAR     = DIGIT | UPPER | LOWER | "-" | ";" | "."
  499.    SPACE        = <ASCII space, %x20>;
  500.    SEP          = (CR LF) | LF
  501.    CR           = <ASCII CR, carriage return, %x0D>;
  502.    LF           = <ASCII LF, line feed, %x0A>;
  503.  
  504.  
  505.  
  506. Hedberg, et al.               Experimental                      [Page 9]
  507.  
  508. RFC 2654           Tagged Index Object for use in CIP        August 1999
  509.  
  510.  
  511.    DIGIT        = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
  512.                   "8" | "9"
  513.  
  514.    UPPER        = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" |
  515.                   "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" |
  516.                   "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" |
  517.                   "Y" | "Z"
  518.    LOWER        = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
  519.                   "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
  520.                   "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
  521.                   "y" | "z"
  522.  
  523.    US-ASCII-SAFE  = %x01-09 / %x0B-0C / %x0E-7F
  524.                    ;; US-ASCII except CR, LF, NUL
  525.    UTF8           = US-ASCII-SAFE / UTF8-1 / UTF8-2 / UTF8-3
  526.                              / UTF8-4 / UTF8-5
  527.    UTF8-CONT      = %x80-BF
  528.    UTF8-1         = %xC0-DF UTF8-CONT
  529.    UTF8-2         = %xE0-EF 2UTF8-CONT
  530.    UTF8-3         = %xF0-F7 3UTF8-CONT
  531.    UTF8-4         = %xF8-FB 4UTF8-CONT
  532.    UTF8-5         = %xFC-FD 5UTF8-CONT
  533.  
  534.    The set of characters allowed to appear in the attr-name field is
  535.    limited to the set of characters used in LDAP and WHOIS++ attribute
  536.    names.  For other services that have attribute name character sets
  537.    that are larger than these, those services should create a profile
  538.    that maps the names onto object identifiers, and the sequence of
  539.    digits and periods is used by those services in creating the attr-
  540.    name fields for their Tagged Index Objects.
  541.  
  542.    It is worth mentioning that updates to a index based in tagged index
  543.    objects MUST be performed in the order specified by the tagged index
  544.    object itself.
  545.  
  546. 4.3.1.  Header Descriptions
  547.  
  548.    The header section consists of one or more "header lines".  The
  549.    following header lines are defined:
  550.  
  551.       "version": This line must always be present, and have the value
  552.       "x-tagged-index-1" for this version of the specification.
  553.  
  554.       "updatetype": This line must always be present.  It takes as the
  555.       value either "total" or "incremental".  The first update sent by a
  556.       supplier server to a consumer server for a DSI must be a "total"
  557.       update.
  558.  
  559.  
  560.  
  561.  
  562. Hedberg, et al.               Experimental                     [Page 10]
  563.  
  564. RFC 2654           Tagged Index Object for use in CIP        August 1999
  565.  
  566.  
  567.       "thisupdate": This line must always be present. The value is the
  568.       number of seconds from 00:00:00 UTC January 1, 1970 at which the
  569.       supplier constructed this update.
  570.  
  571.       "lastupdate": This line must be present if the "updatetype" list
  572.       has the value "incremental".  The value is the number of seconds
  573.       from 00:00:00 UTC January 1, 1970 at which the supplier
  574.       constructed the previous update sent to the consumer.  This field
  575.       allows the consumer to determine if a previous update was missed
  576.  
  577.       "contextsize": This line may be present at the supplier's option.
  578.       The value is a number, which is the approximate total number of
  579.       entries in the subtree.  This information is provided for
  580.       statistical purposes only.
  581.  
  582. 4.3.2.  Tokenization Types
  583.  
  584.    The Tagged Index Object inherits the "TOKEN" scheme for tokenization
  585.    as specified in [2].  In addition, there are several other
  586.    tokenization schemes defined for the Tagged Index Object.
  587.     The following table presents these schemes and what character(s) are
  588.    used to delimit tokens.
  589.  
  590.         Token Type      Tokenization Characters
  591.         FULL    none
  592.         TOKEN   white space, "@"
  593.         RFC822  white space, ".", "@"
  594.         UUCP    white space, "!"
  595.         DNS     any character note a number, letter, or "-"
  596.  
  597. 4.3.3.  Tag Conventions
  598.  
  599.    In the tag list, multiple consecutive tags may be shortened by using
  600.    "#-#".  For example, the list "3,4,5,6,7,8,9,10" may be shortened to
  601.    "3-10".  Tags are to be applied to the data on a per entry level.
  602.    Thus, if two index lines in the same index object contain the same
  603.    tag, then those two lines always refer to the same "record" in the
  604.    directory.  In LDAP terminology, the two lines would refer to the
  605.    same directory object.  Additionally if two index lines in the same
  606.    index object contain different tags, then it is always the case that
  607.    those two lines refer back to different records in the directory. The
  608.    meaning of '*' in the tag position is that that specific token apears
  609.    in every record in the directory.
  610.  
  611.    The tag applied to the same underlying record in two separate
  612.    transmissions of a full-index may be different.  Thus, receiving
  613.    index servers should make no assumptions about the values of the tags
  614.    across index object boundaries.
  615.  
  616.  
  617.  
  618. Hedberg, et al.               Experimental                     [Page 11]
  619.  
  620. RFC 2654           Tagged Index Object for use in CIP        August 1999
  621.  
  622.  
  623. 4.4. Incremental Indexing
  624.  
  625.    The tagged index object format supports the ability of information
  626.    servers to distribute only delta index data, rather than distributing
  627.    total index information each time.  This scenario, known as
  628.    incremental indexing supports three basic types of operations: add,
  629.    delete and replace.  If the incremental updatetype is specified in
  630.    the tagged index object, then the index object contains a snapshot of
  631.    only the changes that have been made since the index object specified
  632.    in the lastupdate header was distributed.  If the receiving index
  633.    server did not receive that index object, it should request a total
  634.    index object.  If the CIP protocol supports it, the index server may
  635.    request the specific index object that it missed.
  636.  
  637.    If the tagged index object contains an Add Block, then the lines in
  638.    the Add Block refer to new records that were added to the information
  639.    base of the transmitting index server.  It can be guaranteed that
  640.    those records did not exist in any previously received tagged index
  641.    object, and the receiving index server can insert this index
  642.    information in the index that it already maintains for the
  643.    transmitting index server.
  644.  
  645.    If the tagged index object contains a Delete Block, then the
  646.    structure of the Delete Block depends on how the consistency is
  647.    maintained;
  648.  
  649.    -  "completeRecord": all the tokens connected to the record to be
  650.       deleted has to be included, the tag used to connect tokens in this
  651.       message has no relation to tags used in previously sent tagged
  652.       index objects.
  653.  
  654.    -  "uniqueIDBased": only the unique identifier has to be defined.
  655.  
  656.    -  "tagBased": all the tokens connected to the record has to be
  657.       included but then preceded by the tag used for this specific
  658.       record in the preceding set of the last full update and the there
  659.       on following incremental updates.
  660.  
  661.    If the tagged index object contains an Update Block, then the lines
  662.    in the Update Block refer to records that were changed in the
  663.    information base of the transmitting index server. Again the specific
  664.    content of the block depends on how the consistency is maintained.
  665.  
  666.    -  "completeRecord": All the tokens representing the old version of
  667.       the record as well as the new ones has to be included.
  668.  
  669.    -  "uniqueIDBased": The unique ID has to be included together with
  670.       the tokens that have changed.
  671.  
  672.  
  673.  
  674. Hedberg, et al.               Experimental                     [Page 12]
  675.  
  676. RFC 2654           Tagged Index Object for use in CIP        August 1999
  677.  
  678.  
  679.    -  "tagBased": Only the changed tokens are included, but then both
  680.       the old version, if there was one, as well as the new one, if
  681.       there is one.
  682.  
  683.    The Update Block also supports the idea of indexing new attributes
  684.    that were not previously included in the tagged index object.  For
  685.    example, if the transmitting index server began including index
  686.    information on postal addresses, then it could include an Update
  687.    Block in the index object that included all the index information on
  688.    postal addresses for all records in its information base, and
  689.    indicate that nothing else has changed.
  690.  
  691. 5. Examples
  692.  
  693.    In the following sections, for each different consistencybase type,
  694.    the tagged index object is represented for the following scenario;
  695.    The examples starts with one full update and following that a set of
  696.    updates. The underlying information is presented in the LDIF [6]
  697.    format.
  698.  
  699. 5.1 The original database
  700.  
  701.    dn: cn=Barbara Jensen, ou=Product Development, o=Ace Industry, c=US
  702.    objectclass: top
  703.    objectclass: person
  704.    objectclass: organizationalPerson
  705.    cn: Barbara Jensen
  706.    cn: Barbara J Jensen
  707.    cn: Babs Jensen
  708.    sn: Jensen
  709.    uid: bjensen
  710.    dn: cn=Bjorn Jensen, ou=Accounting, o=Ace Industry, c=US
  711.    objectclass: top
  712.    objectclass: person
  713.    objectclass: organizationalPerson
  714.    cn: Bjorn Jensen
  715.    sn: Jensen
  716.    title: Accounting manager
  717.    dn: cn=Gern Jensen, ou=Product Testing, o=Ace Industry, c=US
  718.    objectclass: top
  719.    objectclass: person
  720.    objectclass: organizationalPerson
  721.    cn: Gern Jensen
  722.    cn: Gern O Jensen
  723.    sn: Jensen
  724.    title: testpilot
  725.    dn: cn=Horatio Jensen, ou=Product Testing, o=Ace Industry, c=US
  726.    objectclass: top
  727.  
  728.  
  729.  
  730. Hedberg, et al.               Experimental                     [Page 13]
  731.  
  732. RFC 2654           Tagged Index Object for use in CIP        August 1999
  733.  
  734.  
  735.    objectclass: person
  736.    objectclass: organizationalPerson
  737.    cn: Horatio Jensen
  738.    cn: Horatio N Jensen
  739.    sn: Jensen
  740.    title: testpilot
  741.  
  742. 5.1.1 "Complete" consistency based full update
  743.  
  744.    version: x-tagged-index-1
  745.    updatetype: total
  746.    thisupdate: 855938804
  747.    BEGIN IO-Schema
  748.    cn: TOKEN
  749.    sn: FULL
  750.    title: TOKEN
  751.    END IO-Schema
  752.    BEGIN Index-Info
  753.    cn: 1/Barbara
  754.    -1/J
  755.    -1/Babs
  756.    -*/Jensen
  757.    -2/Bjorn
  758.    -3/Gern
  759.    -3/O
  760.    -4/Horatio
  761.    -4/N
  762.    sn: */Jensen
  763.    title: 1/product
  764.    -1-2/manager
  765.    -1/accounting
  766.    -3,4/testpilot
  767.    END Index-Info
  768.  
  769. 5.1.2 "tag" consistency based full update
  770.  
  771.    version: x-tagged-index-1
  772.    updatetype: total
  773.    thisupdate: 855938804
  774.    BEGIN IO-Schema
  775.    cn: TOKEN
  776.    sn: FULL
  777.    title: TOKEN
  778.    END IO-Schema
  779.    BEGIN Index-Info
  780.    cn: 1/Barbara
  781.    -1/J
  782.    -1/Babs
  783.  
  784.  
  785.  
  786. Hedberg, et al.               Experimental                     [Page 14]
  787.  
  788. RFC 2654           Tagged Index Object for use in CIP        August 1999
  789.  
  790.  
  791.    -*/Jensen
  792.    -2/Bjorn
  793.    -3/Gern
  794.    -3/O
  795.    -4/Horatio
  796.    -4/N
  797.    sn: */Jensen
  798.  
  799.    title: 1/product
  800.    -1-2/manager
  801.    -1/accounting
  802.    -3,4/testpilot
  803.    END Index-Info
  804.  
  805. 5.1.3 "unique" consistency based full update
  806.  
  807.    version: x-tagged-index-1
  808.    updatetype: total
  809.    thisupdate: 855938804
  810.    BEGIN IO-Schema
  811.    dn: FULL
  812.    cn: TOKEN
  813.    sn: FULL
  814.    title: TOKEN
  815.    END IO-Schema
  816.    BEGIN Index-Info
  817.    dn: 1/cn=Barbara Jensen, ou=Product Development, o=Ace Industry, c=US
  818.    -2/cn=Bjorn Jensen, ou=Accounting, o=Ace Industry, c=US
  819.    -3/cn=Gern Jensen, ou=Product Testing, o=Ace Industry, c=US
  820.    -4/cn=Horatio Jensen, ou=Product Testing, o=Ace Industry, c=US
  821.    cn: 1/Barbara
  822.    -1/J
  823.    -1/Babs
  824.    -*/Jensen
  825.    -2/Bjorn
  826.    -3/Gern
  827.    -3/O
  828.    -4/Horatio
  829.    -4/N
  830.    sn: */Jensen
  831.    title: 1/product
  832.    -1-2/manager
  833.    -1/accounting
  834.    -3,4/testpilot
  835.    END Index-Info
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Hedberg, et al.               Experimental                     [Page 15]
  843.  
  844. RFC 2654           Tagged Index Object for use in CIP        August 1999
  845.  
  846.  
  847. 5.2 First update
  848.  
  849.    Gern Jensen's entry above changes to:
  850.  
  851.    dn: cn=Gern Jensen, ou=Product Testing, o=Ace Industry, c=US
  852.    objectclass: top
  853.    objectclass: person
  854.    objectclass: organizationalPerson
  855.    cn: Gern Jensen
  856.    cn: Gern O Jensen
  857.    sn: Jensen
  858.    title: chiefpilot
  859.  
  860. 5.2.1 First update using "complete"
  861.  
  862.    version: x-tagged-index-1
  863.    updatetype: incremental
  864.    lastupdate: 855940000
  865.    thisupdate: 855938804
  866.    BEGIN IO-schema
  867.    cn: TOKEN
  868.    sn: FULL
  869.    title: FULL
  870.    END IO-Schema
  871.    BEGIN Update Block
  872.    BEGIN Old
  873.    cn: 1/Gern
  874.    cn: 1/O
  875.    cn: 1/Jensen
  876.    sn: 1/Jensen
  877.    title: 1/testpilot
  878.    END Old
  879.    BEGIN New
  880.    cn: 1/Gern
  881.    cn: 1/O
  882.    cn: 1/Jensen
  883.    sn: 1/Jensen
  884.    title: 1/chiefpilot
  885.    END New
  886.    END Update Block
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Hedberg, et al.               Experimental                     [Page 16]
  899.  
  900. RFC 2654           Tagged Index Object for use in CIP        August 1999
  901.  
  902.  
  903. 5.2.2 First update using "tag" consistency
  904.  
  905.    version: x-tagged-index-1
  906.    updatetype: incremental
  907.    lastupdate: 855940000
  908.    thisupdate: 855938804
  909.    BEGIN IO-schema
  910.    cn: TOKEN
  911.    sn: FULL
  912.    title: FULL
  913.    END IO-Schema
  914.    BEGIN Update Block
  915.    BEGIN Old
  916.    title: 3/testpilot
  917.    END Old
  918.    BEGIN New
  919.    title: 3/chiefpilot
  920.    END New
  921.    END Update Block
  922.  
  923. 5.2.3 First update using "unique" ID's
  924.  
  925.    version: x-tagged-index-1
  926.    updatetype: incremental
  927.    lastupdate: 855940000
  928.    thisupdate: 855938804
  929.    BEGIN IO-schema
  930.    cn: TOKEN
  931.    sn: FULL
  932.    title: FULL
  933.    END IO-Schema
  934.    BEGIN Update Block
  935.    BEGIN Old
  936.    dn: 1/cn=Gern Jensen, ou=Product Testing, o=Ace Industry, c=US
  937.    title: 1/testpilot
  938.    END Old
  939.    BEGIN New
  940.    dn: 1/cn=Gern Jensen, ou=Product Testing, o=Ace Industry, c=US
  941.    title: 1/chiefpilot
  942.    END New
  943.    END Update Block
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Hedberg, et al.               Experimental                     [Page 17]
  955.  
  956. RFC 2654           Tagged Index Object for use in CIP        August 1999
  957.  
  958.  
  959. 5.3 Second update
  960.  
  961.    # Add a new entry
  962.    dn: cn=Bo Didley, ou=Marketing, o=Ace Industry, c=US
  963.    changetype: add
  964.    objectclass: top
  965.    objectclass: person
  966.    objectclass: organizationalPerson
  967.    cn: Bo Didley
  968.    sn: Didley
  969.    title: Policy Maker
  970.    # Delete an existing entry
  971.    dn: cn=Bjorn Jensen, ou=Accounting, o=Ace Industry, c=US
  972.    changetype: delete
  973.    # Modify all other entries: adding an additional locality value
  974.    dn: cn=Barbara Jensen, ou=Product Development, o=Ace Industry, c=US
  975.    changetype: modify
  976.    add: locality
  977.    locality: New Jersey
  978.    dn: cn=Gern Jensen, ou=Product Testing, o=Ace Industry, c=US
  979.    changetype: modify
  980.    add: locality
  981.    locality: New Orleans
  982.    dn: cn=Horatio Jensen, ou=Product Testing, o=Ace Industry, c=US
  983.    changetype: modify
  984.    add: locality
  985.    locality: New Caledonia
  986.  
  987. 5.3.1 "complete"
  988.  
  989.    version: x-tagged-index-1
  990.    updatetype: incremental
  991.    lastupdate: 855938804
  992.    thisupdate: 855939525
  993.    BEGIN IO-schema
  994.    cn: TOKEN
  995.    sn: FULL
  996.    title: FULL
  997.    locality: TOKEN
  998.    END IO-Schema
  999.    BEGIN Add Block
  1000.    cn: 1/Bo
  1001.    -1/Didley
  1002.    sn: 1/Didley
  1003.    title: 1/Policy
  1004.    -1/maker
  1005.    locality: 1/New
  1006.    -1/York
  1007.  
  1008.  
  1009.  
  1010. Hedberg, et al.               Experimental                     [Page 18]
  1011.  
  1012. RFC 2654           Tagged Index Object for use in CIP        August 1999
  1013.  
  1014.  
  1015.    END Add Block
  1016.    BEGIN Delete Block
  1017.    cn: 1/Bjorn
  1018.    -1/Jensen
  1019.    sn: 1/Jensen
  1020.    title: 1/Accounting
  1021.    -1/Manager
  1022.    END Delete Block
  1023.    BEGIN Update Block
  1024.    BEGIN Old
  1025.    cn: 1/Barbara
  1026.    -1/J
  1027.    -1-3/Jensen
  1028.    -2/Gern
  1029.    -2/O
  1030.    -3/Horatio
  1031.    sn: 1-3/Jensen
  1032.    title: 1/Production
  1033.    -1/Manager
  1034.    -2/Testpilot
  1035.    -3/Chiefpilot
  1036.    END Old
  1037.    BEGIN New
  1038.    cn: 1/Barbara
  1039.    -1/J
  1040.    -1-3/Jensen
  1041.    -2/Gern
  1042.    -2/O
  1043.    -3/Horatio
  1044.  
  1045.    sn: 1-3/Jensen
  1046.    title: 1/Production
  1047.    -1/Manager
  1048.    -2/Testpilot
  1049.    -3/Chiefpilot
  1050.    locality: 1/Jersey
  1051.    -2/Orleans
  1052.    -3/Caledonia
  1053.    -1-3/New
  1054.    END New    END Update Block
  1055.  
  1056. 5.3.2 "tag"
  1057.  
  1058.    version: x-tagged-index-1
  1059.    updatetype: incremental
  1060.    lastupdate: 855938804
  1061.    thisupdate: 855939525
  1062.    BEGIN IO-schema
  1063.  
  1064.  
  1065.  
  1066. Hedberg, et al.               Experimental                     [Page 19]
  1067.  
  1068. RFC 2654           Tagged Index Object for use in CIP        August 1999
  1069.  
  1070.  
  1071.    cn: TOKEN
  1072.    sn: FULL
  1073.    title: FULL
  1074.    locality: TOKEN
  1075.    END IO-Schema
  1076.    BEGIN Add Block
  1077.    cn: 5/Bo
  1078.    -5/Didley
  1079.    sn: 5/Didley
  1080.    title: 5/Policy
  1081.    -5/maker
  1082.    locality: 5/New
  1083.    -5/York
  1084.    END Add Block
  1085.    BEGIN Delete Block
  1086.    cn: 2/Bjorn
  1087.    -2/Jensen
  1088.    sn: 2/Jensen
  1089.    title: 2/Accounting
  1090.    -2/Manager
  1091.    END Delete Block
  1092.    BEGIN Update Block
  1093.    BEGIN New
  1094.    locality: 1/Jersey
  1095.    -2/Orleans
  1096.    -4/Caledonia
  1097.    -1,2,4/New
  1098.    END New
  1099.    END Update Block
  1100.  
  1101. 5.3.3 "unique"
  1102.  
  1103.    version: x-tagged-index-1
  1104.    updatetype: incremental
  1105.    lastupdate: 855938804
  1106.    thisupdate: 855939525
  1107.    BEGIN IO-schema
  1108.    cn: TOKEN
  1109.    sn: FULL
  1110.    title: FULL
  1111.    locality: TOKEN
  1112.    END IO-Schema
  1113.    BEGIN Add Block
  1114.    dn: 1/cn=Bo Didley, ou=Marketing, o=Ace Industry, c=US
  1115.    cn: 1/Bo
  1116.    -1/Didley
  1117.    sn: 1/Didley
  1118.    title: 1/Policy
  1119.  
  1120.  
  1121.  
  1122. Hedberg, et al.               Experimental                     [Page 20]
  1123.  
  1124. RFC 2654           Tagged Index Object for use in CIP        August 1999
  1125.  
  1126.  
  1127.    -1/maker
  1128.    locality: 1/New
  1129.    -1/York
  1130.    END Add Block
  1131.    BEGIN Delete Block
  1132.    dn: 1/cn=Bjorn Jensen, ou=Accounting, o=Ace Industry, c=US
  1133.    END Delete Block
  1134.    BEGIN Update Block
  1135.    BEGIN New
  1136.    dn: 1/cn=Barbara Jensen, ou=Product Development, o=Ace Industry, c=US
  1137.    -2/cn=Gern Jensen, ou=Product Testing, o=Ace Industry, c=US
  1138.    -3/cn=Horatio Jensen, ou=Product Testing, o=Ace Industry, c=US
  1139.    locality: 1/Jersey
  1140.    -2/Orleans
  1141.    -3/Caledonia
  1142.    -1-3/New
  1143.    END New
  1144.    END Update Block
  1145.  
  1146. 6. Aggregation
  1147.  
  1148. 6.1. Aggregation of Tagged Index Objects
  1149.  
  1150.    Aggregation of two tagged index objects is done by merging the two
  1151.    lists of values and rewriting each tag list.  The tag list rewriting
  1152.    process is done so that the resulting index object appears as if it
  1153.    came from a single source. An index server that aggregates tagged
  1154.    index objects for export MUST ensure that the export URL (i.e. the
  1155.    base-uri of the CIP object) for the aggregate index object will route
  1156.    all queries that have "hits" on the index object to that server
  1157.    (otherwise, query routing will not succeed).
  1158.  
  1159. 7. Security Considerations
  1160.  
  1161.    This specification provides a protocol for transferring information
  1162.    between two servers.  The information transferred may be protected by
  1163.    laws in many countries, so care must be taken in the methods used to
  1164.    tokenize the data to ensure that protected data may not be
  1165.    reconstructed in full by the receiving server.  This protocol does
  1166.    not have any inherent protection against spoofing or eavesdropping.
  1167.    However, since this protocol is transported in MIME messages (as are
  1168.    all CIP index objects), it inherits all the security capabilities and
  1169.    liabilities of other MIME messages.  Specifically, those wanting to
  1170.    prevent eavesdropping or spoofing may use some of the various
  1171.    techniques for signing and encrypting MIME messages.
  1172.  
  1173.    Information Server administrators must decide what portions of their
  1174.    databases are appropriate for inclusion in the Tagged Index Object.
  1175.  
  1176.  
  1177.  
  1178. Hedberg, et al.               Experimental                     [Page 21]
  1179.  
  1180. RFC 2654           Tagged Index Object for use in CIP        August 1999
  1181.  
  1182.  
  1183.    For distribution of information outside the enterprise, information
  1184.    server developers are encouraged to allow for facilities that hide
  1185.    the organizational structure when generating the Tagged Index Object
  1186.    from the underlying information database.  To allow for the secure
  1187.    transmission of Tagged Index Objects across the Internet, Index
  1188.    Servers should make use of SSL when completing the connection. In
  1189.    order to strongly verify the identity of the peer index server on the
  1190.    other side of the connection, SSL version 3 certificate exchange
  1191.    should be implemented, and the identity in the peer's certificate
  1192.    verify with the Public Key Infrastructure.  If electronic mail is
  1193.    used to exchange the Tagged Index Objects, then a secure messaging
  1194.    facility, such as PGP/MIME or S/MIME should be used to sign or
  1195.    encrypt (or both) the information.
  1196.  
  1197. 8. References
  1198.  
  1199.    [1]  Allen, J. and M. Mealling, "The Architecture of the Common
  1200.         Indexing Protocol (CIP)," RFC 2651, August 1999.
  1201.  
  1202.    [2]  Weider, C., Fullton, J. and S. Spero, "Architecture of the
  1203.         Whois++ Index Service", RFC 1913, February 1996.
  1204.  
  1205.    [3]  Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access
  1206.         Protocol (v3)", RFC 2251, December 1997.
  1207.  
  1208.    [4]  ITU, "X.525 Information Technology - Open Systems
  1209.         Interconnection - The Directory: Replication", November 1993.
  1210.  
  1211.    [5]  "FORTEZZA Application Implementors  Guide for the FORTEZZA
  1212.         Crypto Card (Production Version)", Document #PD4002102-1.01,
  1213.         SPYRUS, 1995.
  1214.  
  1215.    [6]  Good, G., "The LDAP Data Interchange Format (LDIF) - Technical
  1216.         Specification", Work in Progress.
  1217.  
  1218.    [7]  Hedberg, R., "LDAPv2 Client vs. the Index Mesh", RFC 2657,
  1219.         August 1999.
  1220.  
  1221.    [8]  Howes, T. and M. Smith, "The LDAP URL Format", RFC 2255,
  1222.         December 1997.
  1223.  
  1224.    [9]  Elkins, M., "MIME Security with Pretty Good Privacy (PGP)", RFC
  1225.         2015, October 1996.
  1226.  
  1227.    [10] Ramsdell, B., Editor, "S/MIME Version 3 Message Specification",
  1228.         RFC 2633, June 1999.
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Hedberg, et al.               Experimental                     [Page 22]
  1235.  
  1236. RFC 2654           Tagged Index Object for use in CIP        August 1999
  1237.  
  1238.  
  1239.    [11] Allen, C. and T. Dierks, "The TLS Protocol Version 1.0", RFC
  1240.         2246, January 1999.
  1241.  
  1242. 9.  Authors' Addresses
  1243.  
  1244.    Roland Hedberg
  1245.    Catalogix
  1246.    Dalsveien 53
  1247.    0387 Oslo
  1248.    Norway
  1249.  
  1250.    EMail:  roland@catalogix.ac.se
  1251.  
  1252.  
  1253.    Bruce Greenblatt
  1254.    Directory Tools and Application Services, Inc.
  1255.    6841 Heaton Moor Drive
  1256.    San Jose, CA 95119
  1257.    USA
  1258.  
  1259.    Phone: +1-408-224-5349
  1260.    EMail: bgreenblatt@directory-applications.com
  1261.  
  1262.  
  1263.    Ryan Moats
  1264.    AT&T
  1265.    15621 Drexel Circle
  1266.    Omaha, NE 68135-2358
  1267.    USA
  1268.  
  1269.    Phone:  +1 402 894-9456
  1270.    EMail:  jayhawk@att.com
  1271.  
  1272.  
  1273.    Mark Wahl
  1274.    Innosoft International, Inc.
  1275.    8911 Capital of Texas Hwy, Suite 4140
  1276.    Austin, TX 78759
  1277.    USA
  1278.  
  1279.    Phone +1 626 919 3600
  1280.    EMail  Mark.Wahl@innosoft.com
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Hedberg, et al.               Experimental                     [Page 23]
  1291.  
  1292. RFC 2654           Tagged Index Object for use in CIP        August 1999
  1293.  
  1294.  
  1295. 10.  Full Copyright Statement
  1296.  
  1297.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  1298.  
  1299.    This document and translations of it may be copied and furnished to
  1300.    others, and derivative works that comment on or otherwise explain it
  1301.    or assist in its implementation may be prepared, copied, published
  1302.    and distributed, in whole or in part, without restriction of any
  1303.    kind, provided that the above copyright notice and this paragraph are
  1304.    included on all such copies and derivative works.  However, this
  1305.    document itself may not be modified in any way, such as by removing
  1306.    the copyright notice or references to the Internet Society or other
  1307.    Internet organizations, except as needed for the purpose of
  1308.    developing Internet standards in which case the procedures for
  1309.    copyrights defined in the Internet Standards process must be
  1310.    followed, or as required to translate it into languages other than
  1311.    English.
  1312.  
  1313.    The limited permissions granted above are perpetual and will not be
  1314.    revoked by the Internet Society or its successors or assigns.
  1315.  
  1316.    This document and the information contained herein is provided on an
  1317.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  1318.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  1319.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  1320.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  1321.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  1322.  
  1323. Acknowledgement
  1324.  
  1325.    Funding for the RFC Editor function is currently provided by the
  1326.    Internet Society.
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Hedberg, et al.               Experimental                     [Page 24]
  1347.  
  1348.