view Side-By-Side changes
Network Working Group A. Newton Internet-Draft VeriSign, Inc. Expires:February 12,May 5, 2003August 14,November 04, 2002 Internet Registry Information Service (IRIS)draft-ietf-crisp-iris-coredraft-ietf-crisp-iris-core-01 Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents asInternet-Drafts.Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed athttp://www.ietf.org/ietf/1id-abstracts.txt.http:// www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire onFebruary 12,May 5, 2003. Copyright Notice Copyright (C) The Internet Society (2002). All Rights Reserved. Abstract This document describes an application layer client-server protocol for a framework of representing the query and result operations of the information services of Internet registries. Specified in XML, the protocol defines generic query and result operations and a mechanism for extending these operations for specific registry service needs. Newton ExpiresFebruary 12,May 5, 2003 [Page 1] Internet-Draftiris Augustiris-core November 2002 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . ..3 1.1 Use of XML . . . . . . . . . . . . . . . . . . . . . . . ..3 1.2 General Concepts . . . . . . . . . . . . . . . . . . . . ..3 1.3 Framework Layers . . . . . . . . . . . . . . . . . . . . ..4 1.4 Definitions . . . . . . . . . . . . . . . . . . . . . . ..42. Protocol Description1.5 Other Documents . . . . . . . . . . . . . . . . . . . .6 2.1. 5 2. Protocol Identification . . . . . . . . . . . . . . . . ..62.2 Request Format . . . .3. Exchange Description . . . . . . . . . . . . . . . . . . . 72.2.1 <serviceInquiry>3.1 Request Format . . . . . . . . . . . . . . . . . .7 2.2.2 <registrySearch> Request . . . . . . . . . . . . . .. . . . 72.33.2 Response Format . . . . . . . . . . . . . . . . . . . . .. 7 2.3.1 <messsageStatus> Response . . . . . . . . . . . . . . . . .72.3.2 <serviceResult> Response . .3.3 Extension Framework . . . . . . . . . . . . . . . .8 2.3.3 <registryResult> Response. . . 9 3.3.1 Derived Elements . . . . . . . . . . . . . .8 3. Extension Framework. . . . . . . 9 3.3.2 Registry Identifier Requirements . . . . . . . . . . . . . 103.1 Derived Elements3.3.3 Entity Classes . . . . . . . . . . . . . . . . . . . . . . 103.2 Registry Identifier Requirements . . . .3.3.4 Names of Entities . . . . . . . . . .11 3.3 Entity Classes. . . . . . . . . . 11 3.3.5 References to Entities . . . . . . . . . . . . .11 3.4 Names of Entities. . . . . 12 3.3.6 <result> Derived Elements . . . . . . . . . . . . . . . . 123.5 References to Entities . .3.3.6.1 <serviceIdentification> . . . . . . . . . . . . . . . . . 124. URI Requirements3.3.6.2 <simpleEntity> . . . . . . . . . . . . . . . . . . . . . . 135.4. Database Serialization . . . . . . . . . . . . . . . . . ..146.5. Formal XML Syntax . . . . . . . . . . . . . . . . . . . .. 17 7.16 6. Internationalization Considerations . . . . . . . . . . .. 23 8.22 7. IANA Considerations . . . . . . . . . . . . . . . . . . .. 24 9.23 8. Security Considerations . . . . . . . . . . . . . . . . .. 2524 References . . . . . . . . . . . . . . . . . . . . . . . .. 2625 Author's Address . . . . . . . . . . . . . . . . . . . . .. 2726 A. Document Terminology . . . . . . . . . . . . . . . . . . .. 2827 B. Acknowledgements . . . . . . . . . . . . . . . . . . . . .. 29 C. Considerations on XML-based RPC's . . . . . . . . . . . . . 3028 Full Copyright Statement . . . . . . . . . . . . . . . . .. 3129 Newton ExpiresFebruary 12,May 5, 2003 [Page 2] Internet-Draftiris Augustiris-core November 2002 1. Introduction The specification outlined in this document is based on the functional requirements described inCRISP[1].CRISP [1]. 1.1 Use of XML This document describes the specification for the Internet Registry Information Service (IRIS), an XML text protocol with the purpose of describing the query types and result types of various registry information services. IRIS is specified using the Extensible Markup Language (XML) 1.0 as described in[2],[5], XML Schema notation as described in[4][7] and[5],[8], and XML Namespaces as described in[3]. It is important to note that XML is case sensitive. XML specifications and examples provided in this document MUST be interpreted in the exact character case presented to develop a conforming implementation.[6]. 1.2 General Concepts Each type of Internet registry, such as address, routing, and domain, are identified by a registry identifier (ID). This registry identifier is a URI, more specifically a URN, used within the XML instances to identify the XML schema formally describing the set of queries, results, and entity classes allowed within that type of registry. A registry information server may handle queries and serve results for multiple registry types. Each registry type that a particular registry operator serves is a registry service instance. IRIS and the XML schema formally describing IRIS do not specify any registry, registry identifier, or knowledge of a particular service instance or set of instances. IRIS is a specification for a framework with which these registries can be defined, used, and in some cases interoperate. The framework merely specifies the elements for registry identification and the elements which must be used to derivequery elementsqueries andresult elements.results. This framework allows a registry type to define its own structure for naming, entities, queries, etc. through the use of XML namespaces and XML schemas (hence, a registry type is identified by the same URI that identifies its XML namespace). In order to be useful, a registry type's specification must extend from this framework. The framework does define certain structures that can be common to all registry types, such as references to entities, searchNewton Expires February 12, 2003 [Page 3] Internet-Draft iris August 2002continuations, entity classes, and more. A registry type may declare its own definitions for all of these, or it may mix its derived definitions with the base definitions. IRIS defines two types of referrals, an entity URI and a search Newton Expires May 5, 2003 [Page 3] Internet-Draft iris-core November 2002 continuation. An entity URI indicates specific knowledge about an individual entity, and a search continuation allows for distributed searches. Bothtypesreferrals may span differing registry types and instances. No assumptions or specifications are made about roots, bases, or meshes of entities.Finally, the IRIS framework attempts to be transport neutral.1.3 Framework Layers The IRIS framework can conceptually be thought of as having three layers. ---------------------------- Registry-Specific |domain | address | routing| ---------------------------- Common-Registry | IRIS | ---------------------------- Application-Transport |beep, etc...beep | ---------------------------- The differing layers have the following responsibilities: Registry-Specific :: Defines queries, results, and entity classes of a specific type of registry. Each specific type of registry is identified by a URN. Common-Registry :: Defines base operations and semantics common to all registry types such as referrals, entity references, etc. It also defines the syntaxes for talking about specific registry types (using the registry ID's). Application-Transport :: Defines the mechanisms for authentication, message passing, connection and session management, etc. It also defines the URI syntax specific to the application-transport mechanism. 1.4 Definitions For clarity, the following definitions are supplied: registry identifier (ID) - The identifier used to specify a particular type of registry.Newton Expires February 12, 2003 [Page 4] Internet-Draft iris August 2002registry type - A registry serving a specific function, such as a domain registry or an address registry. Each type of registry is assigned a registry identifier. registry schema - The definition for a registry type specifying Newton Expires May 5, 2003 [Page 4] Internet-Draft iris-core November 2002 the queries, results, and entity classes. entity class - A group of entities with a common type or common set of characteristics. entity name - The identifier used to refer to a single entity within an entity class. entity URI - A formal pointer to an entity. This URI contains a registry ID, entity class, and entity name. The terms "derivative", "derive", and "derivation" are used with the same meaning for deriving one type of element from another as specified inXML_SS[5].XML_SS [8]. 1.5 Other Documents While this document describes the structures at the core of IRIS, other aspects of IRIS are described in these related documents: iris- beep [2], iris-dreg [3], and iris-areg [4]. Newton ExpiresFebruary 12,May 5, 2003 [Page 5] Internet-Draftiris Augustiris-core November 2002 2. ProtocolDescription Each protocol data unit MUST be one and only one complete and valid XML instance.Identification TheXML instance MUST contain either one requestroot elementor one response element. No requirements are made concerning the synchronizationoftheall requestand the response in this document. However, a transport mapping of IRIS MAY make such requirements if necessary. In addition, no methods are provided in this document for session or connection creation or termination; a transport mapping of IRIS MAY make such requirements if necessary. The following description of the protocol does not describe every detailed aspect necessary for implementation. While reading these following sections, please reference Section 6 for needed details on the formalXMLspecification. 2.1 Protocol Identificationinstances MUST be <request>. The root element of allIRISresponse XML instancesmustMUST be<iris>. This element identifies<response>. These elements identifie the start of the IRIS elements, the XML namespace used as the identifier for IRIS, and the location of the schema.This elementThese elements and the associated closing tag MUST be applied to all requests and responses sent by both clients and servers. An abstracted example:<iris<request xmlns="urn:ietf:params:xml:ns:iris1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:iris1 iris.xsd"></iris></request> The use of the schema location URI in the <xsi:schemaLocation> element is OPTIONAL with respect to its use by this specification, and IRIS implementations MAY resolve it to retrieve the schema or they MAY use a locally cached version of the schema. The presence of this URI is mandatory according to[5].[8]. The URI MUST be a valid URI, and SHOULD resolve if the appropriate network resources are available. Versioning of the IRIS protocol is the responsibility of the application-transport layer but MUST be associated with the XMLnamespace[3]namespace [6] URI representing IRIS. A change in this URI indicates a change of the underlying schema and therefore a new version of the protocol. Newton ExpiresFebruary 12,May 5, 2003 [Page 6] Internet-Draftiris Augustiris-core November 20022.2 Request Format A <request> element holds children representing3. Exchange Description This section describes thedifferent requests that can be made from a client to a server. 2.2.1 <serviceInquiry> Requestrequest and response exchanges of the protocol. The<serviceInquiry> element enablesdescriptions contained within this section refer to XML elements and attributes and their relation to theclientexchange of data within the protocol. These descriptions also contain specifications outside the scope of the formal XML syntax. Therefore, this section will use terms defined by RFC 2119 [15] toquery for a listdescribe the specification outside the scope ofregistry identifiers. 2.2.2 <registrySearch>the formal XML syntax. While reading this section, please reference Section 5 for needed details on the formal XML syntax. 3.1 RequestThe <registrySearch>Format A <request> element contains <searchSet> elements. These <searchSet> elements enables a client to query a particular registry identified by its registry ID.It may havefound in one of it's twoelement types aschildren: <lookupEntity> and <query>. The children of the <lookupEntity> elementarecontains the <entityName> and <entityClass>elements. Theelement and has a 'registryID' attributeiscontaining the registry identifier for the registry type in which the lookup operation is to take place. The <entityClass> elementMUST containcontains the token identifying the index for which the lookup operation is to take place, and the <entityName> elementMUST containcontains the name of the entity to lookup. The <query> element is abstract andMAY NOTmay not legally appear in an XML instance. It provides the base type to be used by registry schemas to define derived query types.2.3This derivation mechanism is described in Section 3.3. 3.2 Response Format The <response> elementholds children of the different response types returned from a servercontains <resultSet> elements. These <resultSet> elements are responses to aclient. 2.3.1 <messsageStatus> Response The <messsageStatus> element MUST be returned to the client in response to any errors that would have disabled the processing of the corresponding<searchSet> request. The<messsageStatus> MUST contain one of these child elements: o <invalidXML> MUST be the response if the server is unable to correctly parse the corresponding request according to the rulescontents of[5] and [4]. o <systemError> MUST be the response if the server is unable to process the corresponding request for any other reason. Newton Expires February 12, 2003 [Page 7] Internet-Draft iris August 2002 2.3.2 <serviceResult> Response The <serviceResult> element is a response to the <serviceInquiry>. Thisthis elementMUSTcontainchildan <answer> element, an optional <additional> element, and error elementsof <registryID>.if applicable. Thecontentschildren ofeach child MUST contain one registry identifier. The <serviceResult> element MUST contain a <registryID> child element for each registry type for whichtheserver allows queries. 2.3.3 <registryResult> Response The <registryResult><answer> elementis a response to a <registrySearch> request. The children MUST be oneare of the following types: o <result> is an abstract element andMAY NOTmay not be legally placed in an XML instance. It provides the base type to be used by registry schemas to define derived result types. This derivation mechanism is described in Section 3.3. o Thecontentscontent of <entityURI> is a URI. This element notifies the client of a reference to an entity. The URI SHOULD be an IRIS Newton Expires May 5, 2003 [Page 7] Internet-Draft iris-core November 2002 URI. Resolution of the URI is OPTIONAL by the client. o The <searchContinuation> element childrenMUST contain one <hostReference>contains an <authority> element andone <registrySearch> element. Registry schemas MAY deriveanew type from <hostReference> to match transport protocol needs. o The<searchSet> element. When followingerror elements: * <insufficientResources> - the corresponding query requires resources unobtainable byentity references and search continuations, clients SHOULD only follow an <entityURI> or <searchContinuation> response once. Failure to do so may result in theserver. * <invalidName> - a name givenclient process getting stuck in a never-ending queryisloop commonly known as a referral loop. The <additional> element only contains <result> elements, as described above. The following elements representing error conditions may be returned: o <insufficientResources> - the corresponding query requires resources unobtainable by the server. o <invalidName> - a name given in a query is not syntactically correct.*o <invalidSearch> - parameters of the corresponding query are not semantically meaningful.*o <limitExceeded> - the corresponding query requires more resources than allowed.*o <nameNotFound> - the name given in a query does not match a known entity.*o <permissionDenied> - the authentication given does not allow access to a specific result entry. This is not the same as denying access to all<registryResult><resultSet> responses because ofNewton Expires February 12, 2003 [Page 8] Internet-Draft iris August 2002failed authentication.*o A derivative of<genericCode>.<genericCode>, as described in Section 3.3. The <resultSet> section is divided up into the <answer> and <additional> sections in order to allow easier processing and navigation of the results by a client. Servers MUST return the direct answers to queries in the <answer> element, and MAY return results in the <additional> element for which a reference has been made to in the <answer> element. Results in the <additional> element MUST have been referenced in the <answer> either as direct children of the <answer> element or as a deeper descendant of the <answer> element. This serves two purposes. First, it may eliminate a requery by the Newton ExpiresFebruary 12,May 5, 2003 [Page9]8] Internet-Draftiris Augustiris-core November 20023.client for references contained in the <answer> element. Second, it distinguishes between results that are a direct result of query and those that would have been returned had the client followed the appropriate referrals, thus giving clients a hint as to how to process or display the return results. For instance, clients constructing complex displays using tree navigation widgets will know that results in the <answer> element should all be directly beneath the root node of the tree, while results in the <additional> element are to be leaf nodes of those produced from the <answer> element. 3.3 Extension Framework Because the IRIS schema definesno usefulonly one querytypes,type, no registry structure, andnoonly two stand-alone result types, it isuselessof limited use by itself. Extension of IRIS is accomplished through the use a base IRIS schema, as defined inXML_SD[4]XML_SD [7] andXML_SS[5],XML_SS [8], and extension of it by schemas constructed on top of IRIS.3.13.3.1 Derived Elements The XML Schema definition of IRIS requires schemas of registry types to derive element types from base types in the IRIS definition. The registry schemas MUST derive elements for definition of typed queries and results. While the IRIS schema definition does not prohibit the derivation of any elements, registry schemas SHOULD restrict the derivations to the following types: o <query> - as defined this element contains no content and has no valid attributes. It is abstract and therefore only derivatives of itMUSTappear in an XMLinstance.instances. Registry schemas derive from this element to define the queries allowed. o <result> - as defined this element contains no content and hasnoone validattributes.attribute, "thisEntityURI". It is abstract and therefore only derivatives of itMUSTappear in an XMLinstance.instances. Registry schemas derive from this element to define results that may be returned from a query. o <genericCode> - as defined, this element is an instance ofcodeType. Registry schemas MUST derive from this element and MUST NOT use it as it is an abstract element.<codeType>. ItMAY containcontains the optional elements <explanation> and <language> to further describe the nature of the error. o <entityClass> - as defined this element represents the identifier for an entity class. Registry schemas SHOULD derive from this element or MAY use it directly.o <seeAlso> - contains oneNewton Expires May 5, 2003 [Page 9] Internet-Draft iris-core November 2002 o <seeAlso> - contains one or more <entityURI> elements. This element indicates one or more references to entities that have indirect association with a parent element representing an entity. Registry schemas MAY derive from this element or MAY use it directly.o <hostReference> - as defined this element contains a <scheme>, <host>, and <port> elements. Derivations SHOULD extend the content to include information necessary establishing sessions by Newton Expires February 12, 2003 [Page 10] Internet-Draft iris August 2002 lower layer protocols, but MUST NOT restrict derivations to content less than what is defined. 3.23.3.2 Registry Identifier Requirements The identifier for a registry and the XML namespace identifier used by the XML Schema describing the registry MUST be the same. These identifiers MUST be restricted to any validURN[8].URN [11]. This is a restriction onXML_NS[3],XML_NS [6], which specifies an XML namespace identifier is any validURI[7].URI [10]. When possible, registry identifiers SHOULD be URN's defined byXML_URN[13].XML_URN [16]. Because these URN's represent namespace identifiers which are to be used in XML documents for the purposes of XML namespaces as specified byXML_NS[3],XML_NS [6], they MUST be of the class "ns" as defined inXML_URN[13]. In certain circumstances whenXML_URN [16]. Case sensitivity of registry ID's is dependent on the namespace definition of the URN itself. Registry ID's conforming to XML_URN [16] are case insensitive. When registry identifiers are URN's defined byXML_URN[13]XML_URN [16] and the class component is "ns", they MAY be abbreviated to the part following the class component and its separator of the URN. For example, the full URN "urn:ietf:params:xml:ns:dreg1" may be abbreviated to "dreg1", but the full URN "urn:otherOrg:ns:myreg1" cannot be abbreviated.The use of this abbreviation MUST be specifically noted for the set of conditions where it may be used, otherwise the full URN MUST be used. These circumstances and conditions MUST be specified in other sections of this document and other documents related to IRIS where it is used.This abbreviation MUST NOT be used inside of XML instances in use with IRIS where XMLSchema[4]Schema [7] specifies the use of a URI for schema identification or whereXML_NS[3]XML_NS [6] specifies the use of a URI for XML namespace identification.3.33.3.3 Entity Classes Entity classes are provided in IRIS to help avoid collisions with entity names with in any given registry type. Their specification in queries also allows server implementations to quickly narrow search or lookup scopes to a single index. A registry schema derives the list of valid entity classes from the <entityClass> element. For instance, the entity name "10.0.1.1" would refer to separate entities in the"nameServer""name-server" and "network" classes. The entity Newton Expires May 5, 2003 [Page 10] Internet-Draft iris-core November 2002 "10.0.1.1" in the "nameServer" class may refer to the name server host that is also multi-homed by address 192.178.0.1 and known in DNS as "ns.foo.com", whereas the entity "10.0.1.1" in the "network" class may refer to the network 10.0.1/24.Newton Expires February 12, 2003 [Page 11] Internet-Draft iris August 2002IRIS definesonetwo default entityclassclasses of"QUERY""named-query" and "service-definition" which MAY NOT be redefined.ThisThese entity classes MUST be valid in all registry types. The "named-query" class is for the naming of canned queries by registries. Therefore an entity lookup of a canned query MAY result in a search continuation on the sameregistry.registry or a set of predefined results. When used inURI's (see Section 4),URI's, this is a type of boot-strapping procedure. Therefore, the resolution of"iris://com/dreg1/QUERY/registrars""iris://com/dreg1/named- query/registrars" may result in the list of registrars currently registering domains. The set ofcannednamed queries are not specified by IRIS.3.4The "service-definition" class is reserved for entities specific to a particular service instance. It MUST contain an entity named "id" (see Section 3.3.4 which yields a result of <serviceIdentification> (see Section 3.3.6.1. This entity class MAY contain other locally defined entities as well. The names of entity classes in a registry schema are of type token defined by XML_SD [7]. Their use SHOULD be transcribable. Their case sensitivity MUST be defined by the definition of the registry type. In general, they SHOULD be case insensitive. 3.3.4 Names of Entities The names of entities in a registry schemaMUST beare of typenormalizedStringtoken defined byXML_SD[4].XML_SD [7]. Their use SHOULD be transcribable. Names of entities SHOULD be unique within an instance of any particular entity class within a registry. Two entities SHOULD NOT have the same name, but a single entity MAY be known by multiple names. In situations where a single name may result in two entities, the registry schema SHOULD make allowances by defining result types that contain entity references to both entities (i.e. "foo.com" can refer to both the domain foo.com and the host foo.com). However, this type of conflict SHOULD generally be avoided by the proper use of entity classes. When specifying elements that represent entities, registry schemasSHOULDmust attach the attribute of "thisEntityURI" with the datatype of anyURI as specified byXML_SD[4].XML_SD [7]. This aids clients in understanding which parts of a result set represent an entity. The Newton Expires May 5, 2003 [Page 11] Internet-Draft iris-core November 2002 URI value in the XML instance SHOULD be an IRIS URI.3.5The case sensitivity of entity names is dependent on the entity class in which they reside. The definition of a registry type MUST specify the case sensitivity for entity names. A registry type MAY define the entity names of differing entity classes to have different case sensitivity. However, a registry type SHOULD be consistent with case sensitivity and SHOULD specify case insensitivity if possible. 3.3.5 References to Entities The element <entityURI> allows references to entities in result sets, either as a direct child of<registryResult><resultSet> or within a more complex structure that derives from <result>. Registry schemas MUST NOT derive elements from this element so that clients will have a better understanding of what is and what isn't an entity reference. This is especially useful to clients when dealing with XML conversion technologies such as XPath.Newton Expires February 12, 2003 [Page 12] Internet-Draft iris August 2002 4. URI Requirements IRIS does notThe <entityURI> element can havesingle URI definition because ofthedependencies ontwo attributes "displayName" and "language". These are provided so that servers may provide to clients aURI bymore human friendly meaning to themapping betweenentity reference. This is often useful to user navigating referral structures. 3.3.6 <result> Derived Elements The base IRISand a transport protocol. However,framework does contain two elements directly derived from the <result> element for use by anyvalidregistry type. 3.3.6.1 <serviceIdentification> The <serviceIdentification> element is provided to allow IRISURI definition MUST meetclients the ability to reference IRIS service instances. It contains the followingrequirements:elements: oUsing the layout form syntax of RFC2396[7], each IRIS URI MUST contain<authorities> - This element contains one or more <authority> elements. Each <authority> element contains a<query> component within its <schema-specific-part> component. The <query>URI authority componentMUST be composed offor which theregistry identifier,server has results. While a'/' (slash) character, the entity class,server MAY only return a'/' (slash) character, and the namepartial list ofan entity withinits authority areas depending on operator policy, it MUST return theregistry. The layout form syntax ofauthority for which the<query> component MUST be: <registry-id>/<entity-class>/<entity-name>client has requested. oThe URI MUST be<eMail> - This optional element contains anabsolute URI, thereforeemail address of thescheme component is always present. o The URI MUST containoperator of the<query> URI component as defined above.service instance. o <phone> - Thiscomponent MUST containoptional element contains the<registry-id> component,phone number of the<entity-class> component, andoperator of the<entity-name> component and therefore MUST always be an IRIS entity reference.service instance. Newton Expires May 5, 2003 [Page 12] Internet-Draft iris-core November 2002 o <seeAlso> - See Section 3.3.1 for its definition. 3.3.6.2 <simpleEntity> The<registry-id> component MAY be abbreviated according<simpleEntity> element is provided so that service operators may make simple additions toSection 3.2. o Each transport mapping MUST defineother entities without the need for deriving entirely new registry types. Its definition allows service operators to make it aURI scheme.referent from other entities (using, for instance, a <seeAlso> element). Thescheme<simpleEntity> is meant to represent nameMAY NOTand value pairs of strings, allowing each pair to beused by other IRIS transport mappings.associated with a specific language qualifier. Clients may easily display such information as a two-column table. Uses needing binary data or richer data structures are out of scope for this element. When such usage scenarios arise, it is likely that a client will need specific knowledge for handling such scenarios thus calling into question the need for a new registry type. Newton ExpiresFebruary 12,May 5, 2003 [Page 13] Internet-Draftiris Augustiris-core November 20025.4. Database Serialization This section describes a method for serializing IRIS registry entities. The descriptions contained within this section refer to XML elements and attributes and their relation to this serialization process. These descriptions also contain specifications outside the scope of the formal XML syntax. Therefore, this section will use terms defined by RFC 2119 [15] to describe the specification outside the scope of the formal XML syntax. While reading this section, please reference Section 5 for needed details on the formal XML syntax. A database of IRIS entities can be serialized to file storage withXML[2]XML [5] using the IRIS defined<irisSerialization><serialization> element. This element contains <result> element derivatives, <searchContinuation> elements, and <serializedNamedQuery> elements Derivatives of the <result> element are entities. Servers loading these entities MUSTonly contain childrenplace the entity in the entity class specified by the elements 'thisEntityURI' attribute and any entity class whicharethe entity may apply according to explicitly defined children of that element. For instance, if a registry type has two entity classes of "foo" and "bar" and a <result> derivative has the attribute thisEntityURI="iris://example.authority/example.registry/foo/one" and a child element <bar>two</bar>, the server is enter that entity into the entity class "foo" as named "one" and the entity class "bar" as named "two". Servers loading entities as serialized derivatives of the <result>element, which SHOULD be elements describing entities. Because fragmentation is not definedelement MAY translate the authority component of the URI specified inURI'sthe 'thisEntityURI' attribute. Server will likely need to do this if the authority forXML media types[14],the"file:" URI scheme cannot be safely usedentity has changed. <searchContinuation> elements allow for the serialization ofentity URI's. Therefore, serializationstatic referrals. When this element appears as a child ofIRIS entity references SHOULD usethe<serializedEntityURI><serialization> element, it MUST have the "thisEntityURI" attribute. <serializedNamedQuery> elementinstead ofallows for the<entityURI> element.specification of static results for a named query. This elementiscontains aderivative of<resultSet> element holding the<entityURI> element. It containsresults to be returned by theREQUIRED attributes "registryID", "entityClass", and "entityName". These attributesserver if the named query is requested. The server MUSTbe used to denoteplace theunique identification of an entity. In addition,named query in theOPTIONAL attribute "fileName""named-query" entity class. As mentioned above, there mayalsobeusedtimes when a server needs tospecifytranslate thenameauthority section ofa file where the entity can be found.an IRIS URI when loading entities. Theactual content of the<serializedEntityURI> elementMUST conform tois provided for conditions where this must also be done for entity references. During deserialization, servers MAY change thedatatypeauthority component ofanyURI. A serialization process SHOULD attempt to formulate a validan Newton Expires May 5, 2003 [Page 14] Internet-Draft iris-core November 2002 IRIS URI contained within the <serializedEntityURI> element to beplaced in this element. Ifan authority for which the server answers queries. During serialization, servers and their related processes MUST use the <serializedEntityURI> elementdescribing an entity containsinstead of the"thisEntityURI" attribute as specified<entityURI> element for entity references inSection 3.4,which thevaluereferent ofthis URI should be equal tothevalue ofURI is an entity for which the server answers queries. The authority component contained within an IRIS URI inany <serializedEntityURI>the <entityURI> elementreferring to it.SHOULD NOT be altered during serialization or deserialization. The following is an example of serialized IRIS.<?xml version="1.0"?> <irisSerialization xmlns="urn:ietf:params:xml:ns:iris1"<iris:serialization xmlns:iris="urn:ietf:params:xml:ns:iris1" xmlns="urn:ietf:params:xml:ns:iris1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:iris1 iris.xsd" ><dreg:domain xmlns="urn:ietf:params:xml:ns:dreg1" xmlns:dreg="urn:ietf:params:xml:ns:dreg1" xsi:schemaLocation="urn:ietf:params:xml:ns:dreg1 dreg.xsd" thisEntityURI="iris://com/dreg1/domainHandle/tcs-com-1"<serviceIdentification thisEntityURI="iris://com/dreg1/service-definition/id" ><domainName>thecobblershoppe.com</domainName> <nameServers> <iris:serializedEntityURI registryID="dreg1" entityClass="hostHandle" entityName="research7" fileName="iris-out.xml"> iris://com/dreg1/hostHandle/research7 </iris:serializedEntityURI> Newton Expires February 12, 2003 [Page 14] Internet-Draft iris August 2002 <iris:serializedEntityURI registryID="dreg1" entityClass="hostHandle" entityName="nsol184" fileName="iris-out.xml"> iris://com/dreg1/hostHandle/nso1184 </iris:serializedEntityURI> </nameServers> <holder> <contactHandle>beb140</contactHandle> <commonName> Bill Eckels </commonName> <organization> The Cobbler Shoppe </organization> <e-mail> bille@bjmk.com </e-mail> <address> 21 North Main Street </address> <city> Britt </city> <region> IA </region> <postalCode> 50423 </postalCode> <country> US </country> <phone> 515-843-3521 </phone> </holder> <registry> <iris:serializedEntityURI registryID="dreg1" entityClass="contactHandle" entityName="VGRS" fileName="iris-out1.xml"> iris://com/dreg1/contactHandle/VGRS </iris:serializedEntityURI> </registry> </dreg:domain><authorities> <authority> com </authority> <authority> net </authority> </authorities> <eMail> davidb@verisignlabs.com </eMail> <seeAlso> <entityURI> iris://com/dreg1/service-definition/notice </entityURI> </seeAlso> </serviceIdentification> <simpleEntity thisEntityURI="iris://com/dreg1/service-definition/notice"> <property name="legal" language="en"> Please use the net wisely! We are required to tell you this. </property> </simpleEntity> </iris:serialization> Newton ExpiresFebruary 12,May 5, 2003 [Page 15] Internet-Draftiris August 2002 <dreg:host xmlns="urn:ietf:params:xml:ns:dreg1" xmlns:dreg="urn:ietf:params:xml:ns:dreg1" xsi:schemaLocation="urn:ietf:params:xml:ns:dreg1 dreg.xsd" thisEntityURI="iris://com/dreg1/hostHandle/nsol184" > <hostHandle>nsol184</hostHandle> <hostName>ns1.netsol.com</hostName> <ipV4Address>216.168.224.200</ipV4Address> <iris:serializedEntityURI registryID="dreg1" entityClass="contactHandle" entityName="mak21" fileName="iris-out.xml"> iris://com/dreg1/contactHandle/mak21 </iris:serializedEntityURI> </dreg:host> </irisSerialization> Newton Expires February 12, 2003 [Page 16] Internet-Draft iris Augustiris-core November 20026.5. Formal XML Syntax IRIS is specified in XML Schema notation. The formal syntax presented here is a complete schema representation of IRIS suitable for automated validation of IRIS XML instances. <?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:iris="urn:ietf:params:xml:ns:iris1" targetNamespace="urn:ietf:params:xml:ns:iris1" elementFormDefault="qualified" > <annotation> <documentation> Internet Registry Information Service (IRIS) Schema v1 </documentation> </annotation> <elementname="iris">name="request"> <complexType><choice> <element name="request" type="iris:requestType" minOccurs="0" maxOccurs="1" /><sequence> <elementname="response" type="iris:responseType"name="searchSet" type="iris:searchSetType" minOccurs="0"maxOccurs="1"maxOccurs="unbounded" /></choice></sequence> </complexType> </element><complexType name="requestType"> <sequence><elementname="serviceInquiry" type="iris:serviceInquiryType" minOccurs="0" maxOccurs="1" />name="response"> <complexType> <sequence> <elementname="registrySearch" type="iris:registrySearchType"name="resultSet" type="iris:resultSetType" minOccurs="0" maxOccurs="unbounded" /> </sequence> </complexType> </element> <complexTypename="serviceInquiryType" /> <complexType name="registrySearchType"name="searchSetType" > <choice> <element name="lookupEntity" type="iris:lookupEntityType" />Newton Expires February 12, 2003 [Page 17] Internet-Draft iris August 2002<element ref="iris:query" /> </choice> </complexType> <complexType name="queryType"/> Newton Expires May 5, 2003 [Page 16] Internet-Draft iris-core November 2002 <element name="query" type="iris:queryType" abstract="true" /> <simpleType name="entityClassType"> <restriction base="token"> </restriction> </simpleType> <element name="entityClass" type="iris:entityClassType" /> <simpleTypename="entityURIType"> <restriction base="anyURI" /> </simpleType> <simpleType name="thisEntityURIType"> <restriction base="anyURI" /> </simpleType> <simpleTypename="baseentityClassType"> <restriction base="iris:entityClassType"> <enumerationvalue="QUERY"value="named-query" /> <enumeration value="service-definition" /> </restriction> </simpleType> <element name="baseentityClass" type="iris:baseentityClassType" substitutionGroup="iris:entityClass" /> <complexType name="lookupEntityType" > <sequence> <element name="entityName" type="token" /> <element ref="iris:entityClass" /> </sequence> <attribute name="registryID" type="anyURI" use="required" /> </complexType> <complexTypename="responseType"> <sequence> <element name="messageStatus" type="iris:messageStatusType" Newton Expires February 12, 2003 [Page 18] Internet-Draft iris August 2002 minOccurs="0" maxOccurs="1" /> <element name="serviceResult" type="iris:serviceResultType" minOccurs="0" maxOccurs="1" /> <element name="registryResult" type="iris:registryResultType" minOccurs="0" maxOccurs="unbounded" /> </sequence> </complexType> <complexType name="messageStatusType" > <sequence> <choice> <element name="invalidXML" type="iris:codeType" minOccurs="0" maxOccurs="1" /> <element name="systemError" type="iris:codeType" minOccurs="0" maxOccurs="1" /> </choice> </sequence> </complexType> <complexTypename="codeType"> <sequence minOccurs="0" maxOccurs="1"> <element name="explanation" type="string" /> <element name="language" type="language" /> </sequence> </complexType> <complexTypename="serviceResultType" > <sequence> <element name="registryID" minOccurs="1" maxOccurs="unbounded"> <complexType>name="entityURIType"> <simpleContent> <extension base="anyURI"> <attributename="location" type="anyURI" use="required"name="displayName" type="string" /> <attribute name="language" type="language" /> </extension> </simpleContent> </complexType></element> </sequence> </complexType> <element name="entityURI" type="iris:entityURIType" />Newton ExpiresFebruary 12,May 5, 2003 [Page19]17] Internet-Draftiris Augustiris-core November 2002 <element name="entityURI" type="iris:entityURIType" /> <complexType name="seeAlsoType"> <sequence> <element ref="iris:entityURI" minOccurs="1" maxOccurs="unbounded" /> </sequence> </complexType> <element name="seeAlso" type="iris:seeAlsoType" /> <complexTypename="registryResultType"name="resultSetType" > <sequence> <element name="answer" minOccurs="1" maxOccurs="1"> <complexType> <sequence> <element ref="iris:result" minOccurs="0" maxOccurs="unbounded" /> <element ref="iris:entityURI" minOccurs="0" maxOccurs="unbounded" /> <elementname="searchContinuation"ref="iris:searchContinuation" minOccurs="0" maxOccurs="unbounded" /> </sequence> </complexType> </element> <element name="additional" minOccurs="0" maxOccurs="1"> <complexType> <sequence> <element ref="iris:result" minOccurs="0" maxOccurs="unbounded"type="iris:searchContinuationType"/> </sequence> </complexType> </element> <element name="insufficientResources" minOccurs="0" maxOccurs="1" type="iris:codeType" /> <element name="invalidName" minOccurs="0" maxOccurs="1" type="iris:codeType" /> <element name="invalidSearch" minOccurs="0" maxOccurs="1" type="iris:codeType" /> <element name="limitExceeded" minOccurs="0" maxOccurs="1" type="iris:codeType" /> Newton Expires May 5, 2003 [Page 18] Internet-Draft iris-core November 2002 <element name="nameNotFound" minOccurs="0" maxOccurs="1" type="iris:codeType" /> <element name="permissionDenied" minOccurs="0" maxOccurs="1" type="iris:codeType" /> <element ref="iris:genericCode" minOccurs="0" maxOccurs="1" /> </sequence> </complexType> <complexTypename="resultType"name="resultType"> <attribute name="thisEntityURI" use="required" type="anyURI" /> </complexType> <element name="result" type="iris:resultType" abstract="true" /> <complexTypename="searchContinuationType">name="searchContinuationType"> <sequence> <element name="authority" type="token" minOccurs="1" maxOccurs="1" /> <element name="searchSet" type="iris:searchSetType" minOccurs="1" maxOccurs="1"/> </sequence> <attribute name="thisEntityURI" type="anyURI" /> </complexType> <element name="searchContinuation" type="iris:searchContinuationType" /> <element name="genericCode" type="iris:codeType" abstract="true" /> <element name="serializedEntityURI" type="iris:entityURIType" substitutionGroup="iris:entityURI" /> <complexType name="serializedNamedQueryType"> <sequence> <element name="resultSet" type="iris:resultSetType" /> </sequence> Newton ExpiresFebruary 12,May 5, 2003 [Page20]19] Internet-Draftiris Augustiris-core November 2002 <attribute name="registryID" type="anyURI" use="required" /> <attribute name="entityName" type="token" use="required" /> </complexType> <elementref="iris:hostReference"name="serialization"> <complexType> <choice minOccurs="1"maxOccurs="1"maxOccurs="unbounded"> <element ref="iris:result" /> <elementname="registrySearch" type="iris:registrySearchType" minOccurs="1" maxOccurs="1"/> </sequence>ref="iris:searchContinuation" /> <element name="serializedNamedQuery" type="iris:serializedNamedQueryType" /> </choice> </complexType> </element> <complexTypename="hostReferenceType">name="serviceIdentificationType"> <complexContent> <extension base="iris:resultType"> <sequence> <elementname="scheme" type="string"name="authorities" minOccurs="1" maxOccurs="1"> <complexType> <sequence> <element name="authority" type="token" minOccurs="1" maxOccurs="unbounded" /> </sequence> </complexType> </element> <element name="eMail" type="string" minOccurs="0" maxOccurs="1" /> <elementname="host"name="phone" type="string"minOccurs="1"minOccurs="0" maxOccurs="1" /> <elementname="port" type="positiveInteger" minOccurs="1"ref="iris:seeAlso" minOccurs="0" maxOccurs="1" /> </sequence> </extension> </complexContent> </complexType> <elementname="hostReference" type="iris:hostReferenceType" /> <element name="genericCode" type="iris:codeType" abstract="true"name="serviceIdentification" type="iris:serviceIdentificationType" substitutionGroup="iris:result" /> <complexTypename="serializedEntityURIType">name="simpleEntityType"> <complexContent> Newton Expires May 5, 2003 [Page 20] Internet-Draft iris-core November 2002 <extension base="iris:resultType"> <sequence> <element name="property" minOccurs="1" maxOccurs="unbounded"> <complexType> <simpleContent> <extensionbase="iris:entityURIType"> <attribute name="registryID" type="anyURI" use="required" />base="string"> <attributename="entityClass" type="iris:entityClassType"name="name" type="string" use="required" /> <attributename="entityName" type="normalizedString"name="language" type="language" use="required" /><attribute name="fileName" type="anyURI" /></extension> </simpleContent> </complexType><element name="serializedEntityURI" type="iris:serializedEntityURIType" substitutionGroup="iris:entityURI" /> <element name="irisSerialization"> <complexType> <sequence> <element ref="iris:result" minOccurs="1" maxOccurs="unbounded" /> Newton Expires February 12, 2003 [Page 21] Internet-Draft iris August 2002</element> </sequence> </extension> </complexContent> </complexType></element><element name="simpleEntity" type="iris:simpleEntityType" substitutionGroup="iris:result" /> </schema> Newton ExpiresFebruary 12,May 5, 2003 [Page22]21] Internet-Draftiris Augustiris-core November 20027.6. Internationalization Considerations IRIS is represented in XML, which provides native support for encoding information using the double-byte Unicode character set and its more compact representations including UTF-8. Compliant XML processors are required to understand both UTF-8 and raw Unicode character sets; XML also includes a provision for identifying other character sets through use of an "encoding" attribute in an <?xml?> processing instruction. The complete list of character set encoding identifiers is maintained by IANA and is described in[15][17] and [12]. The application-transport layer MUST define a common set of character set encodings to be understood by both client and[9].server. Localization of internationalized strings may require additional information by the client. Entity definitions SHOULD use the "language" type defined by XML_SD [7] to aid clients in the localization process. See Section 3.3.6.2 as an example. Newton ExpiresFebruary 12,May 5, 2003 [Page23]22] Internet-Draftiris Augustiris-core November 20028.7. IANA Considerations XML schemas require a URI for unique identification. Schemas MUST be registered to ensure URI uniqueness, but the IETF does not currently have a recommended repository for the registration of XML schemas. This document uses URNs to describe XML namespaces and XML schemas. IANA SHOULD maintain a registry of XML namespace and schema URI assignments. Per policies described in[10],[13], URI assignment requests SHOULD be reviewed by a designated expert, and values SHOULD be assigned only as a result of standards action taken by the IESG. This document makes use of a proposed XML namespace and schema registry specified inXML_URN[13].XML_URN [16]. Accordingly, the following URN will need to be registered with IANA: urn:ietf:params:xml:ns:iris1 Newton ExpiresFebruary 12,May 5, 2003 [Page24]23] Internet-Draftiris Augustiris-core November 20029.8. Security Considerations IRIS provides no authentication or privacy facilities of its own. It relies on the application-transport layer for all of these abilities. Implementers need to fully understand the application-transports employed by IRIS. Referral IRIS registry results may contain entity lookups and search continuations which result in a client query operation against another registry service. The authentication credentialsusedand mechanisms subject toobtain the registry resultsreplay attacks SHOULD NOT be used to conduct a subsequent entity lookup or search continuation. Newton ExpiresFebruary 12,May 5, 2003 [Page25]24] Internet-Draftiris Augustiris-core November 2002 References [1] Newton,A,A., "Cross Registry Internet Service Protocol (CRISP) Requirements", draft-ietf-crisp-requirements-00 (work in progress), August 2002. [2] Newton, A., "Using the Internet Registry Information Service (IRIS) over the Blocks Extensible Exchange Protocol (BEEP)", draft-ietf-crisp-iris-beep-01 (work in progress), October 2002. [3] Newton, A., "IRIS Domain Registry Schema", draft-ietf-crisp- iris-dreg-01 (work in progress), October 2002. [4] Newton, A., "IRIS Address Registry Schema", draft-ietf-crisp- iris-areg-01 (work in progress), October 2002. [5] World Wide Web Consortium, "Extensible Markup Language (XML) 1.0", W3C XML, February 1998,<http://www.w3.org/TR/1998/REC-xml-19980210>. [3]<http://www.w3.org/TR/1998/REC- xml-19980210>. [6] World Wide Web Consortium, "Namespaces in XML", W3C XML Namespaces, January 1999,<http://www.w3.org/TR/1999/REC-xml-names-19990114>. [4]<http://www.w3.org/TR/1999/REC-xml- names-19990114>. [7] World Wide Web Consortium, "XML Schema Part 2: Datatypes", W3C XML Schema, October 2000,<http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/>. [5]<http://www.w3.org/TR/2001/REC- xmlschema-2-20010502/>. [8] World Wide Web Consortium, "XML Schema Part 1: Structures", W3C XML Schema, October 2000,<http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/>. [6]<http://www.w3.org/TR/2001/REC- xmlschema-1-20010502/>. [9] World Wide Web Consortium, "Extensible Stylesheet Language (XSL) Version 1.0", W3C XSL, November 2000,<http://www.w3.org/TR/2000/CR-xsl-20001121/>. [7]<http://www.w3.org/ TR/2000/CR-xsl-20001121/>. [10] Berners-Lee, T., Fielding,R.T.R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, August 1998.[8][11] Moats, R., "URN Syntax", RFC 2141, May 1997.[9][12] Reynolds, J. and J. Postel, "ASSIGNED NUMBERS", RFC 1700, STD 2, October 1994.[10][13] Narten, T. andH.T.H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", RFC 2434, BCP 26, October 1998.[11]Newton Expires May 5, 2003 [Page 25] Internet-Draft iris-core November 2002 [14] Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC 2595, June 1999.[12][15] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, BCP 14, March 1997.[13][16] Mealling,M,M., "The IETF XML Registry",draft-mealling-iana-xmlns-registry-03draft-mealling-iana- xmlns-registry-03 (work in progress), November 2001.Newton Expires February 12, 2003 [Page 26] Internet-Draft iris August 2002 [14] Murata, M., St.Laurent, S. and D. Kohn, "XML Media Types", RFC 3023, January 2001. [15][17] <ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets> Author's Address Andrew L. Newton VeriSign, Inc. 21345 Ridgetop Circle Sterling, VA 20166 USA Phone: +1 703 948 3382 EMail:anewton@verisignlabs.comanewton@ecotroph.net URI: http://www.verisignlabs.com/ Newton ExpiresFebruary 12,May 5, 2003 [Page27]26] Internet-Draftiris Augustiris-core November 2002 Appendix A. Document Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described inRFC2119[12].RFC2119 [15]. Newton ExpiresFebruary 12,May 5, 2003 [Page28]27] Internet-Draftiris Augustiris-core November 2002 Appendix B. Acknowledgements The terminology used in this document to describe namespaces and namespaces of namespaces is now much clearer thanks to the skillful debating tactics of Leslie Daigle. Previously, it was much more confusing. Many other technical complexities were proved to be unnecessary by David Blacka and have been removed. And his IRIS implementation has helped smooth out the rougher edges. Newton ExpiresFebruary 12, 2003 [Page 29] Internet-Draft iris August 2002 Appendix C. Considerations on XML-based RPC's Observations have been made about the similarity between IRIS and XML-based RPC mechanisms, specifically SOAP and XML-RPC. And while IRIS is not based on a general RPC mechanism, it could easily be modeled on top of one, especially SOAP. The use of XML-RPC and SOAP has been weighed, and its pay-off has been found to be unsatisfactory. XML-RPC and SOAP are abstraction layers intended to separate a programmer from the details of protocols and to allow the programmer to simply use structures and procedures native to a programming language (or genericized to only the RPC mechanism). The appeal is that the programmer needs to know very little about implementation details so that the task of gluing custom logic is inexpensive. Supposedly, with little to implement, the job can be done faster or easier. However, this appeal starts to vanish if the programmer must begin to go beyond the native language and familiar tools. And the nature of IRIS defined by the CRISP requirements tend to lead an implementer down this path. For example, the use of DNS via SRV or NAPTR resource records to locate authoritative servers is not available in the interfaces of XML-RPC and SOAP. Furthermore, XML-RPC and SOAP 1.0 are bound to HTTP. This use, or misuse, of HTTP violates RFC 3205. It is possible to put XML-RPC or SOAP 1.1 on other application-transports, but the overwhelming majority of SOAP and XML-RPC implementations are for HTTP. Therefore, chances are that an implementer may have to do this work as well. In addition, what makes XML-RPC or SOAP much more enticing than other similar XML-based mechanisms, such as XMOP or ebXML? And why just XML-based solutions? What makes them better than CORBA or DCOM? Finally, the intended use of IRIS is more akin to a directory service than a remote procedure interface. Basing it on a generic mechanism could easily go from lookup( domain ) to register( domain ). The latter being clearly out-of-scope for CRISP and rightly in the purview of PROVREG. Newton Expires February 12,May 5, 2003 [Page30]28] Internet-Draftiris Augustiris-core November 2002 Full Copyright Statement Copyright (C) The Internet Society (2002). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFCeditorEditor function is currently provided by the Internet Society. Newton ExpiresFebruary 12,May 5, 2003 [Page31]29] ----