Internet DRAFT - draft-daigle-iris-slsreg
draft-daigle-iris-slsreg
Network Working Group L. Daigle
Internet-Draft A. Newton
Expires: November 25, 2005 VeriSign, Inc.
May 24, 2005
IRIS Service Lookup System
draft-daigle-iris-slsreg
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
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 as 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 at
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 on November 25, 2005.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This document defines an IRIS "service lookup system" registry
(slsreg) schema, and IRIS queries/responses to support looking up
network service records (NSRs) based on a registered tag (or label).
The NSR will include URIs for set types of network services.
Daigle & Newton Expires November 25, 2005 [Page 1]
Internet-Draft draft-daigle-iris-sls-00 May 2005
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Document Terminology . . . . . . . . . . . . . . . . . . . . . 4
3. Service Lookup System (SLS) Registry . . . . . . . . . . . . . 5
3.1 Data Model . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Interaction Model . . . . . . . . . . . . . . . . . . . . 5
3.3 Allowed Service Names . . . . . . . . . . . . . . . . . . 5
4. Schema Description . . . . . . . . . . . . . . . . . . . . . . 6
4.1 IRIS Result Derivatives . . . . . . . . . . . . . . . . . 6
4.1.1 <tagRecord> . . . . . . . . . . . . . . . . . . . . . 6
4.1.2 <entityRefResult> . . . . . . . . . . . . . . . . . . 7
4.2 IRIS Query Derivatives . . . . . . . . . . . . . . . . . . 7
4.2.1 <findServicesByTag> query . . . . . . . . . . . . . . 7
4.2.2 <findServiceByTag> query . . . . . . . . . . . . . . . 8
4.2.3 Support for <iris:lookupEntity> . . . . . . . . . . . 9
5. Formal XML Syntax . . . . . . . . . . . . . . . . . . . . . . 10
6. slsreg and IRIS-lw . . . . . . . . . . . . . . . . . . . . . . 16
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
8. Security Considerations . . . . . . . . . . . . . . . . . . . 18
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 19
A. Complete Example Request and Response . . . . . . . . . . . . 20
Intellectual Property and Copyright Statements . . . . . . . . 22
Daigle & Newton Expires November 25, 2005 [Page 2]
Internet-Draft draft-daigle-iris-sls-00 May 2005
1. Introduction
This document defines an IRIS "service lookup system" registry
(slsreg) using an XML Schema [4] derived from and using the IRIS [5]
schema. It also defines IRIS queries and and responses to support
looking up network service records (NSRs) based on a registered tag
(or label). The NSR will include URIs for set types of network
services.
A limited set of descriptive elements is associated with each tag,
primarily for the purpose of enabling language and locale-based
matching of the query and stored tag strings. This schema may be
extended to provide for more search-like capabilities based on the
tags and more detailed associated data, as a service separate from
the slsreg IRIS service.
Daigle & Newton Expires November 25, 2005 [Page 3]
Internet-Draft draft-daigle-iris-sls-00 May 2005
2. 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 in RFC2119 [11].
Daigle & Newton Expires November 25, 2005 [Page 4]
Internet-Draft draft-daigle-iris-sls-00 May 2005
3. Service Lookup System (SLS) Registry
The IRIS-based SLS registry is designed to provide the very basis for
allowing service lookup by registered tags. Other services may be
built out of the slsreg IRIS service (e.g., including more
descriptive data, allowing more search-like queries), but they are
beyond the scope of this document.
3.1 Data Model
The descriptive data included in the registry definition is
restricted to the tag and any registered descriptive data that might
be associated with it, for the purposes of distinguishing similar
tags. This includes locale and language information, as well as the
(business) category.
While the rest of this document describes various parts of the data
model used, the IRIS-based XML schema specified in Section 4 is
definitive for acceptable descriptive information and result record
formats.
3.2 Interaction Model
The basic interaction is for the client to provide the tag to be
looked up, along with any locale, language, or desired service
constraints. The slsreg server returns 0, one or more records that
match the descriptive information. Note that a true "look up" should
only ever return 0 or 1 record. However, in the case of a query with
multilingual matching, records for tags of related variants may be
returned.
The two basic queries in slsreg allow the client to ask for all the
services associated with a particular tag, or to request only the
information pertaining to a particular type of service for the tag.
As in all IRIS registries, individual records can be retrieved
directly (after an initial lookup) using an entity lookup.
3.3 Allowed Service Names
The initial set of acceptable service names is
o web
o email
o dns
Daigle & Newton Expires November 25, 2005 [Page 5]
Internet-Draft draft-daigle-iris-sls-00 May 2005
4. Schema Description
IRIS requires the derivation of both query and result elements by a
registry schemas. These descriptions follow.
References to XML elements with no namespace qualifier are from the
schema defined in Section 5. References to elements with the "iris"
XML namespace qualifier are from the schema defined in IRIS [5].
4.1 IRIS Result Derivatives
4.1.1 <tagRecord>
The <tagRecord> result type expresses the descriptive and operational
data associated with a particular tag in a registry. It must contain
<tag> -- the unstructured, registered label associated with the
services in this record.
<recordID> -- a registry-specific unique identifier for this
record
<recordTTL> -- the "time to live" of the <tagRecord>, expressed as
an integral number of seconds
<locale> -- a Posix locale descriptor, consisting of a combination
of the ISO 3166-1 two letter country code and a two letter
language code. This is expected to be the general locale of the
registrant
<language> -- a two letter language code, reflecting the language
of the registered tag
<category> -- business category of the entity described by the tag
<tagService> groups (zero, one or more) -- URI and necessary
information for connecting to a network service associated with
the tag. This consists of:
<serviceName> -- the type of service (from a set list of
services)
<serviceURI> -- a URI of any type, specific enough to contact
this service
<serviceTTL> -- "time to live" for the service part of this
record, expressed in an integral number of seconds.
Daigle & Newton Expires November 25, 2005 [Page 6]
Internet-Draft draft-daigle-iris-sls-00 May 2005
4.1.2 <entityRefResult>
The <entityRefResult> contains an IRIS entity reference that can be
used to retrieve the tagRecord result in the server. The client may
request that results be returned as a set of <entityRefResult> so
that a more compact reply is returned (though further dereferencing
will be needed to get the tag record itself).
4.2 IRIS Query Derivatives
4.2.1 <findServicesByTag> query
<findServicesByTag> is used to look up all services that are
associated with a particular tag. The lookup may be done based on a
byte-by-byte comparison of the tag string in the query with the
registered tags or by a language & locale based interpretation of the
query string against registered tags.
The <findServicesByTag> query returns a result set of <tagRecord>
or of <entityRefResult> if the client requested entity references
only. These are defined in Section 4.1.
Daigle & Newton Expires November 25, 2005 [Page 7]
Internet-Draft draft-daigle-iris-sls-00 May 2005
Query fragment:
<findServicesByTag>
<tag value="Bunyip Information Systems"/>
<matchPart>
<matchType value="byte"/>
</matchPart>
</findServicesByTag>
Response fragment:
<tagRecord>
<tag value="Bunyip Information Systems"/>
<recordID value="89765"/>
<recordTTL value="604800"/>
<locale value="US-en"/>
<language value="EN"/>
<category value="10.4369"/>
<tagService>
<serviceName value="email"/>
<serviceURI value="info@bunyip.com"/>
<serviceTTL value="86400"/>
</tagService>
<tagService>
<serviceName value="web"/>
<serviceURI value="http://www.bunyip.com"/>
<serviceTTL value="86400"/>
</tagService>
</tagRecord>
Figure 1: Example: findServiceByTag
4.2.2 <findServiceByTag> query
<findServiceByTag> is identical to <findServicesByTag>, except that
it allows the client to specify a specific type of service for which
information is sought. Only information pertaining to that service
should be returned.
Daigle & Newton Expires November 25, 2005 [Page 8]
Internet-Draft draft-daigle-iris-sls-00 May 2005
Query fragment
<findServiceByTag>
<tag value="Thinking Cat"/>
<matchPart>
<matchType value="byte"/>
</matchPart>
<serviceName value="web"/>
</findServiceByTag>
Response fragment
<tagRecord<
<tag value="Bunyip Information Systems"/<
<recordID value="89765-2"/<
<recordTTL value="604800"/<
<locale value="US-en"/<
<language value="EN"/<
<category value="10.4369"/<
<tagService<
<serviceName value="web"/<
<serviceURI value="http://www.bunyip.com"/<
<serviceTTL value="86400"/<
</tagService<
</tagRecord<
Figure 2: Example: findServiceByTag
4.2.3 Support for <iris:lookupEntity>
A <iris:lookupEntity> returns a <tagRecord>.
Daigle & Newton Expires November 25, 2005 [Page 9]
Internet-Draft draft-daigle-iris-sls-00 May 2005
5. Formal XML Syntax
This registry schema is specified in the XML Schema notation. The
formal syntax presented here is a complete schema representation
suitable for automated validation of an XML instance when combined
with the formal schema syntax of IRIS.
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:slsreg="urn:ietf:params:xml:ns:slsreg1"
xmlns:iris="urn:ietf:params:xml:ns:iris1"
targetNamespace="urn:ietf:params:xml:ns:slsreg1"
elementFormDefault="qualified" >
<import namespace="urn:ietf:params:xml:ns:iris1" />
<annotation>
<documentation>
"SLS -- service lookup system" registry derived from
IRIS schema (slsreg)
Basic structure of the (abstract) record data model:
tag (xword, keyword, cuddly name, common name)
recordID (unique identifier)
recordTTL
locale
language
category (typed)
service (0 or more)
serviceName (typed; initial: dns, web, e-mail)
serviceURI
serviceTTL (TTL for this service entry data)
</documentation>
</annotation>
<!-- ========================================= -->
<!-- -->
<!-- Query Types -->
<!-- -->
<!-- ========================================= -->
<!-- -->
<!-- Find Services by Tag -->
<!-- -->
Daigle & Newton Expires November 25, 2005 [Page 10]
Internet-Draft draft-daigle-iris-sls-00 May 2005
<complexType>
name="findServicesByTagType"
<complexContent>
<extension
base="iris:queryType">
<sequence>
<element
name="tag"
type="normalizedString"
/>
<element
name="matchPart"
type="slsreg:byteOrInterpParameter" />
</sequence>
</extension>
</complexContent>
</complexType>
<element
name="findServicesByTag"
type="slsreg:findServicesByTagType" />
<!-- -->
<!-- Find Service by Tag and Service Name -->
<!-- -->
<complexType>
name="findServiceByTagType"
<complexContent>
<extension
base="iris:queryType">
<sequence>
<element
name="tag"
type="normalizedString"
/>
<element
name="matchPart"
type="slsreg:byteOrLanguageMatchParameter" />
<element
ref="slsreg:serviceName" />
</sequence>
</extension>
</complexContent>
</complexType>
<element
Daigle & Newton Expires November 25, 2005 [Page 11]
Internet-Draft draft-daigle-iris-sls-00 May 2005
name="findServiceByTag"
type="slsreg:findServiceByTagType" />
<!-- -->
<!-- Additional Types -->
<!-- -->
<complexType
name="byteOrLanguageMatchParameter">
<choice>
<group
ref="slsreg:byteMatchGroup" />
<group
ref="slsreg:languageMatchGroup" />
</choice>
</complexType>
<group
name="languageMatchGroup">
<sequence>
<element
name="matchType"
value="language" />
<element
name="language"
type="normalizedString"/>
<element
name="locale"
type="normalizedString"/>
</sequence>
</group>
<group
name="byteMatchGroup">
<sequence>
<element
name="matchType"
value="byte" />
<element
minOccurs="0"
maxOccurs="1"
name="language"
type="normalizedString"/>
<element
minOccurs="0"
maxOccurs="1"
Daigle & Newton Expires November 25, 2005 [Page 12]
Internet-Draft draft-daigle-iris-sls-00 May 2005
name="locale"
type="normalizedString"/>
</sequence>
</group>
<!-- ========================================= -->
<!-- -->
<!-- Result Types -->
<!-- -->
<!-- ========================================= -->
<!-- -->
<!-- tagRecord -->
<!-- -->
<!--
tag (xword, keyword, cuddly name, common name)
recordID (unique identifier)
recordTTL
locale
language
category (typed)
service (0 or more)
serviceName (typed; initial: dns, web, e-mail)
serviceURI
serviceTTL (TTL for this service entry data)
-->
<complexType
name="tagRecordType">
<complexContent>
<extension
base="iris:resultType">
<sequence>
<element
name="tag"
type="token" />
<element
name="recordID"
type="token" />
<element
name="recordTTL"
type="token" />
<element
name="locale"
type="token" />
<element
name="language"
type="language" />
Daigle & Newton Expires November 25, 2005 [Page 13]
Internet-Draft draft-daigle-iris-sls-00 May 2005
<element
name="category"
type="token" />
<element
name="tagService"
type="slsreg:networkServiceRecordType"
minOccurs="0"
maxOccurs="unbounded" />
maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType
name="networkServiceRecordType">
<complexContent>
<sequence>
<element
name="serviceName"
type="token" />
<element
name="serviceURI"
type="anyURI" />
<element
name="serviceTTL"
type="token" />
</sequence>
</complexContent>
</complexType>
<element
name="tagRecord"
type="slsreg:tagRecordType"
substitutionGroup="iris:result" />
<!-- -->
<!-- Error types -->
<!-- -->
<element name="searchTooWide"
type="iris:codeType"
substitutionGroup="iris:genericCode" />
<!-- -->
Daigle & Newton Expires November 25, 2005 [Page 14]
Internet-Draft draft-daigle-iris-sls-00 May 2005
<!-- Global types -->
<!-- -->
</schema>
Figure 3
Daigle & Newton Expires November 25, 2005 [Page 15]
Internet-Draft draft-daigle-iris-sls-00 May 2005
6. slsreg and IRIS-lw
The slsreg service may be supported using the lightweight UDP IRIS
service, IRIS-lw ([7]). In this case, only the <iris:lookupEntity>
and searches with <entityRefsOnly> set to "true" are supported via
IRIS-lw.
Daigle & Newton Expires November 25, 2005 [Page 16]
Internet-Draft draft-daigle-iris-sls-00 May 2005
7. IANA Considerations
The following URN will need to be registered with IANA according to
the IANA considerations defined in IRIS [5]:
urn:ietf:params:xml:ns:slsreg1
Daigle & Newton Expires November 25, 2005 [Page 17]
Internet-Draft draft-daigle-iris-sls-00 May 2005
8. Security Considerations
This document lays out no new considerations for security precautions
beyond that specified in IRIS [5].
9. References
[1] World Wide Web Consortium, "Extensible Markup Language (XML)
1.0", W3C XML, February 1998,
<http://www.w3.org/TR/1998/REC-xml-19980210>.
[2] World Wide Web Consortium, "Namespaces in XML", W3C XML
Namespaces, January 1999,
<http://www.w3.org/TR/1999/REC-xml-names-19990114>.
[3] World Wide Web Consortium, "XML Schema Part 2: Datatypes",
W3C XML Schema, October 2000,
<http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/>.
[4] World Wide Web Consortium, "XML Schema Part 1: Structures",
W3C XML Schema, October 2000,
<http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/>.
[5] Newton, A., "Internet Registry Information Service",
draft-ietf-crisp-iris-core-01 (work in progress),
November 2002.
[6] Daigle, L. and A. Newton, "Domain-based Application Service
Location Using SRV RRs and the Dynamic Delegation Discovery
Service (DDDS)", draft-daigle-napstr-01 (work in progress),
November 2002.
[7] Newton, A. and L. Daigle, "Lightweight Internet Registry
Information Service", draft-newtion-iris-lightweight-00 (work
in progress), February 2003.
[8] Reynolds, J. and J. Postel, "ASSIGNED NUMBERS", RFC 1700,
STD 2, October 1994.
[9] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA
Considerations Section in RFCs", RFC 2434, BCP 26,
October 1998.
[10] Newton, A., "Cross Registry Internet Service Protocol (CRISP)
Requirements", draft-ietf-crisp-requirements-00 (work in
progress), August 2002.
[11] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Daigle & Newton Expires November 25, 2005 [Page 18]
Internet-Draft draft-daigle-iris-sls-00 May 2005
Levels", RFC 2119, BCP 14, March 1997.
[12] World Wide Web Consortium, "XML Key Management Specification
(XKMS)", W3C XKMS, March 2001,
<http://www.w3.org/TR/2001/NOTE-xkms-20010330/>.
Authors' Addresses
Leslie L. Daigle
VeriSign, Inc.
21355 Ridgetop Circle
Sterling, VA 20166
USA
Phone: +1 703 948 3385
Email: leslie@verisignlabs.com, leslie@thinkingcat.com
URI: http://www.verisignlabs.com/
Andrew Newton
VeriSign, Inc.
21355 Ridgetop Circle
Sterling, VA 20166
USA
Phone: +1 703 948 3382
Email: anewton@verisignlabs.com
URI: http://www.verisignlabs.com/
Daigle & Newton Expires November 25, 2005 [Page 19]
Internet-Draft draft-daigle-iris-sls-00 May 2005
Appendix A. Complete Example Request and Response
The following is a complete example of an IRIS request and response
using this registry schema.
This XML instance is a request to search for an individual by a
portion of the individual's ID.
<?xml version="1.0"?>
<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" >
<searchSet>
<slsreg:findServicesByTag
xmlns:slsreg="urn:ietf:params:xml:ns:slsreg1"
xsi:schemaLocation="urn:ietf:params:xml:ns:slsreg1 slsreg.xsd" >
<tag value="Bunyip Information Systems" >
<matchPart>
<matchType value="byte"/>
</matchPart>
</findServicesByTag>
</searchSet>
</request>
Figure 4: slsreg-request.xml
Daigle & Newton Expires November 25, 2005 [Page 20]
Internet-Draft draft-daigle-iris-sls-00 May 2005
This XML instance is a response from Figure 4.
<?xml version="1.0"?>
<response 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" >
<resultSet>
<answer>
<slsreg:tagRecord
xmlns="urn:ietf:params:xml:ns:slsreg1"
xmlns:credreg="urn:ietf:params:xml:ns:slsreg1"
xsi:schemaLocation="urn:ietf:params:xml:ns:slsreg1 slsreg.xsd" >
<tag value="Bunyip Information Systems"/>
<recordID value="89765"/>
<recordTTL value="604800"/>
<locale value="US-en"/>
<language value="EN"/>
<category value="10.4369"/>
<tagService>
<serviceName value="email"/>
<serviceURI value="info@bunyip.com"/>
<serviceTTL value="86400"/>
</tagService>
<tagService>
<serviceName value="web"/>
<serviceURI value="http://www.bunyip.com"/>
<serviceTTL value="86400"/>
</tagService>
</tagRecord>
</answer>
</resultSet>
</response>
Figure 5: slsreg-response.xml
Daigle & Newton Expires November 25, 2005 [Page 21]
Internet-Draft draft-daigle-iris-sls-00 May 2005
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM 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.
Copyright Statement
Copyright (C) The Internet Society (2005). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Daigle & Newton Expires November 25, 2005 [Page 22]