idnits 2.17.1 draft-anana-datastore-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There are 7 instances of too long lines in the document, the longest one being 5 characters in excess of 72. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 1096: '... MUST have exactly one sub...' Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 959 has weird spacing: '...request res...' -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (June 25, 2002) is 7975 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: '13' is defined on line 1530, but no explicit reference was found in the text == Unused Reference: '22' is defined on line 1557, but no explicit reference was found in the text -- No information found for draft-anana-overview - is the name correct? -- Possible downref: Normative reference to a draft: ref. '1' -- No information found for draft-anana-implementation - is the name correct? -- Possible downref: Normative reference to a draft: ref. '2' ** Downref: Normative reference to an Informational RFC: RFC 2832 (ref. '3') -- Possible downref: Non-RFC (?) normative reference: ref. '4' ** Obsolete normative reference: RFC 2396 (ref. '5') (Obsoleted by RFC 3986) -- Possible downref: Non-RFC (?) normative reference: ref. '6' -- Possible downref: Non-RFC (?) normative reference: ref. '7' ** Obsolete normative reference: RFC 2234 (ref. '8') (Obsoleted by RFC 4234) == Outdated reference: A later version (-09) exists of draft-eastlake-cturi-03 ** Obsolete normative reference: RFC 2616 (ref. '11') (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) ** Obsolete normative reference: RFC 2821 (ref. '12') (Obsoleted by RFC 5321) ** Obsolete normative reference: RFC 3023 (ref. '13') (Obsoleted by RFC 7303) ** Obsolete normative reference: RFC 2831 (ref. '14') (Obsoleted by RFC 6331) ** Obsolete normative reference: RFC 2472 (ref. '18') (Obsoleted by RFC 5072, RFC 5172) ** Obsolete normative reference: RFC 2279 (ref. '19') (Obsoleted by RFC 3629) ** Obsolete normative reference: RFC 2633 (ref. '21') (Obsoleted by RFC 3851) ** Obsolete normative reference: RFC 1766 (ref. '22') (Obsoleted by RFC 3066, RFC 3282) Summary: 15 errors (**), 0 flaws (~~), 6 warnings (==), 9 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Rose 3 Internet-Draft Dover Beach Consulting, Inc. 4 Expires: December 24, 2002 June 25, 2002 6 The ANANA Datastore 7 draft-anana-datastore-01 9 Status of this Memo 11 This document is an Internet-Draft and is in full conformance with 12 all provisions of Section 10 of RFC2026. 14 Internet-Drafts are working documents of the Internet Engineering 15 Task Force (IETF), its areas, and its working groups. Note that 16 other groups may also distribute working documents as Internet- 17 Drafts. 19 Internet-Drafts are draft documents valid for a maximum of six months 20 and may be updated, replaced, or obsoleted by other documents at any 21 time. It is inappropriate to use Internet-Drafts as reference 22 material or to cite them other than as "work in progress." 24 The list of current Internet-Drafts can be accessed at http:// 25 www.ietf.org/ietf/1id-abstracts.txt. 27 The list of Internet-Draft Shadow Directories can be accessed at 28 http://www.ietf.org/shadow.html. 30 This Internet-Draft will expire on December 24, 2002. 32 Copyright Notice 34 Copyright (C) The Internet Society (2002). All Rights Reserved. 36 Abstract 38 This memo defines the ANANA datastore, a policy-neutral service for 39 managing registries, namespaces, and entries. 41 Table of Contents 43 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 44 2. Datastore Model . . . . . . . . . . . . . . . . . . . . . . . 5 45 2.1 XML Database Layer . . . . . . . . . . . . . . . . . . . . . . 5 46 2.2 Policy Neutral Layer . . . . . . . . . . . . . . . . . . . . . 7 47 2.3 Policy-Defined Layer . . . . . . . . . . . . . . . . . . . . . 12 48 3. Datastore Operations . . . . . . . . . . . . . . . . . . . . . 15 49 3.1 Processing a Request . . . . . . . . . . . . . . . . . . . . . 16 50 3.2 Processing an Operation . . . . . . . . . . . . . . . . . . . 18 51 3.3 Trigger Evaluation . . . . . . . . . . . . . . . . . . . . . . 19 52 3.4 Access Control Evaluation . . . . . . . . . . . . . . . . . . 20 53 4. Datastore Access . . . . . . . . . . . . . . . . . . . . . . . 23 54 4.1 Access Protocols . . . . . . . . . . . . . . . . . . . . . . . 23 55 4.2 Managing Authentication Information . . . . . . . . . . . . . 25 56 5. DTDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 57 5.1 The Operations DTD . . . . . . . . . . . . . . . . . . . . . . 27 58 5.2 The Registry DTD . . . . . . . . . . . . . . . . . . . . . . . 28 59 5.3 The AuthInfo DTD . . . . . . . . . . . . . . . . . . . . . . . 31 60 6. URI Schemes . . . . . . . . . . . . . . . . . . . . . . . . . 32 61 6.1 The anana URI Scheme . . . . . . . . . . . . . . . . . . . . . 32 62 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 63 7.1 Registration: The anana URI Scheme . . . . . . . . . . . . . . 34 64 7.2 Registration: The System (Well-Known) TCP port number for 65 the ANANA Datastore . . . . . . . . . . . . . . . . . . . . . 35 66 7.3 The application/anana+xml Media Type . . . . . . . . . . . . . 36 67 7.4 The ANANA Datastore Profile for BEEP . . . . . . . . . . . . . 37 68 8. Security Considerations . . . . . . . . . . . . . . . . . . . 38 69 References . . . . . . . . . . . . . . . . . . . . . . . . . . 39 70 Author's Address . . . . . . . . . . . . . . . . . . . . . . . 40 71 A. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 41 72 Full Copyright Statement . . . . . . . . . . . . . . . . . . . 42 74 1. Introduction 76 [1] introduces the concept of a policy-free registrar. To 77 paraphrase: 79 o a 'registrar' is a person, organization, or group that maintains a 80 registry of names and numbers; 82 o a 'registry' is a collection of one or more namespaces; 84 o a 'namespace' is a collection of one or more blocks; 86 o a 'block' is a collection of related entries; and, 88 o an 'entry' is a binding between one or more 'keys' (each being 89 unique within the namespace), a textual commentary, and zero or 90 more 'citations' that further describe the entry. 92 Consult [2] for an example of the provisioning strategy for a policy- 93 free registrar. 95 Typically, a registry contains a single namespace, which in turn 96 contains a single block having many entries (with each entry having 97 exactly one key). However, it may be desirable to have both multiple 98 namespaces within a registry, and multiple blocks within a namespace. 99 For example, if a registry corresponded to the parameters for a 100 particular protocol, then: 102 o that protocol might have different classes of parameters, so each 103 parameter class would have its own namespace in the registry; 104 similarly, 106 o within a particular parameter class, it may be natural to divide 107 the range of possible values into related blocks, e.g., "user- 108 defined", "system-reserved", and so on. 110 (Readers familiar with XML terminology should note that the term 111 'namespace', as used in this document, has no relationship to the 112 'XML namespace' concept.) 113 This memo describes a datastore that may be used to realize a policy- 114 free registry service. As a reminder to the reader, the problem 115 domain for the service has several notable requirements. In 116 particular, the service: 118 o supports registries that contain no more than a few million 119 records; 121 o supports registries that perform no more than a few updates each 122 minute; 124 o facilitates the separation of processes responsible for policy, 125 allocation, and distribution; 127 o facilitates automated (and mostly-automated) submissions; and, 129 o facilitates transformation of registries from highly-structured to 130 human-readable content. 132 In particular, the reader should appreciate that the problem domain 133 for this service is manifestly different than the one solved by 134 traditional registry-registrar protocols, such as RRP[3]. 136 2. Datastore Model 138 ANANA registries are modeled as XML[4] documents, and logically 139 reside in a datastore with three conceptual layers: 141 layer services approach 142 ----- -------- -------- 144 +-------------+ 145 | | externally-defined services 146 | reporting | are accessed via URI in 147 policy-defined | | response to certain 148 layer | conformance | datastore events 149 | | 150 +-------------+ 151 | | 152 | access | intra-document access 153 policy neutral | control | control and structural 154 layer | | (DTD) conformance 155 | validity | 156 +-------------+ 157 | | 158 | operations | a "generic" XML document 159 XML database | | database (perhaps emulated 160 layer | well- | by an RDBMS) 161 | formedness | 162 +-------------+ 164 2.1 XML Database Layer 166 This layer is responsible for: 168 o structuring information as a collection of well-formed XML 169 documents; and, 171 o providing operations to manage XML documents in the datastore. 173 2.1.1 Well-Formed XML 175 The datastore contains XML documents, each of which correspond to a 176 registry. 178 Documents are uniquely identified using the ANANA URI (Section 6.1) 179 scheme. Within a datastore, documents are named using the 'abs_path' 180 syntax defined in RFC 2396[5] (e.g., "/anana/identities"). Within a 181 document, fragments are named using an XML Path Language[6] (XPath) 182 expression (e.g., "//key[@id='anana']"). Note that since an XPath 183 expression (typically) evaluates to a 'node-set' containing zero or 184 more XML fragments, the number of fragments identified by this 185 expression depends on the contents of the corresponding document. 187 Any document residing in the datastore meets two requirements: 189 o the document is well-formed (as described in Section 2.1 of [4]); 190 and, 192 o the only entities found in the document are XML's predefined 193 entities (as defined in Section 4.6 of [4]) and numeric character 194 references (as defined in Section 4.1 of [4]). 196 The first requirement is essentially the "entry cost for doing XML". 197 The second requirement limits the implementation complexity of the 198 datastore and removes a large class of potential ambiguities when 199 searching. 201 Finally, the document named "/root", and any document whose name 202 starts with "/root/", is reserved for use by the datastore. 204 2.1.2 Datastore Operations 206 The datastore supports two sets of operations: 208 o operations on documents; and, 210 o operations on fragments within a document. 212 Two document-wide operations are defined: 214 o 'create', which creates a new document in the datastore; and, 216 o 'delete', which removes an existing document from the datastore. 218 Operations on the fragments within a document are specified using 219 either: 221 o an XPath expression, to retrieve XML fragments; or, 223 o an XML Update Language[7] (XUpdate) expression, to modify an XML 224 fragment. 226 Note that in the interests of simplicity, the XUpdate expression is 227 limited to a single modification per operation. 229 2.2 Policy Neutral Layer 231 This layer is responsible for: 233 o ensuring data consistency on XML documents that model ANANA 234 registries; and, 236 o enforcing access control policies. 238 2.2.1 Valid XML 240 The ANANA Registry DTD (Section 5.2) defines the validity constraints 241 for an XML document that models an ANANA registry. Each document has 242 the '' element at its root. Each '' element 243 contains: 245 o a 'name' attribute uniquely identifying the registry, using a URI 246 that conforms to the ANANA URI (Section 6.1) scheme; 248 o a 'title' attribute containing a descriptive name for the 249 registry; 251 o a '' element containing: 253 * one or more '' elements, each containing a pointer 254 to registrar information; 256 * optionally, a '' element containing textual 257 information about the registry; and, 259 * a '' element. 261 o zero or more '' elements, each containing information 262 about a namespace within the registry; and, 264 o an '' element containing administrative information relating 265 the XML document to the datastore, specifically: 267 * an '' element containing zero or more '' elements, 268 which defines the access control policy for the document; 270 * a '' element containing zero or more '' 271 elements, which defines the conformance policy for the 272 document; and, 274 * a '' element containing zero or more '' 275 elements, which defines the reporting policy for the document. 277 The first fundamental concept about ANANA registries is that they are 278 largely pointers to other resources, and often the resource is an XML 279 fragment within the datastore. 281 For example, here is the top-level and front part of an ANANA 282 registry: 284 287 288 291 This is the registry used by the ANANA to identify 292 itself and other registrars. 294 295 297 ... 299 In this example, note that the value of the '' element's 300 'uri' attribute points to another portion of the document in which it 301 resides. 303 Each '' element contains: 305 o an 'id' attribute that is unique within the document; 307 o a 'title' attribute containing a descriptive name for the 308 namespace; 310 o optionally, a '' element containing textual information 311 about the namespace; 313 o a '