draft-ietf-urn-dns-ddds-database-01.txt   draft-ietf-urn-dns-ddds-database-02.txt 
Network Working Group M.M. Mealling Network Working Group M. Mealling
Internet-Draft Network Solutions, Inc. Internet-Draft Network Solutions, Inc.
Expires: March 20, 2001 September 19, 2000 Expires: May 2, 2001 November 1, 2000
A DDDS Database Using The Domain Name System A DDDS Database Using The Domain Name System
draft-ietf-urn-dns-ddds-database-01 draft-ietf-urn-dns-ddds-database-02
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as other groups may also distribute working documents as
Internet-Drafts. Internet-Drafts.
skipping to change at page 1, line 31 skipping to change at page 1, line 31
months and may be updated, replaced, or obsoleted by other documents months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as reference at any time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://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 The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on March 20, 2001. This Internet-Draft will expire on May 2, 2001.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved. Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract Abstract
This document describes a Dynamic Delegation Discovery System This document describes a Dynamic Delegation Discovery System
Database using the Domain Name System as a distributed database of Database using the Domain Name System as a distributed database of
Rules. The Keys are domain-names and the Rules are encoded using the Rules. The Keys are domain-names and the Rules are encoded using the
NAPTR Resource Record. NAPTR Resource Record.
Since this document officially obsoletes RFC 2168, it is the Since this document officially obsoletes RFC 2915, it is the
official specification for the NAPTR DNS Resource Record. official specification for the NAPTR DNS Resource Record.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. DDDS Database Specification . . . . . . . . . . . . . . . . . 5 3. DDDS Database Specification . . . . . . . . . . . . . . . . . 5
4. NAPTR RR Format . . . . . . . . . . . . . . . . . . . . . . . 6 4. NAPTR RR Format . . . . . . . . . . . . . . . . . . . . . . . 7
4.1 Packet Format . . . . . . . . . . . . . . . . . . . . . . . . 6 4.1 Packet Format . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 Master File Format . . . . . . . . . . . . . . . . . . . . . . 7 4.2 Master File Format . . . . . . . . . . . . . . . . . . . . . . 9
5. Application Specifications . . . . . . . . . . . . . . . . . . 9 5. Application Specifications . . . . . . . . . . . . . . . . . . 10
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.1 URN Example . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.1 URN Example . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.2 E164 Example . . . . . . . . . . . . . . . . . . . . . . . . . 11 6.2 E164 Example . . . . . . . . . . . . . . . . . . . . . . . . . 12
7. Advice for DNS Administrators . . . . . . . . . . . . . . . . 13 7. Advice for DNS Administrators . . . . . . . . . . . . . . . . 14
8. Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 8. Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16
10. Security Considerations . . . . . . . . . . . . . . . . . . . 16 10. Security Considerations . . . . . . . . . . . . . . . . . . . 17
References . . . . . . . . . . . . . . . . . . . . . . . . . . 17 References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 18 Author's Address . . . . . . . . . . . . . . . . . . . . . . . 19
Full Copyright Statement . . . . . . . . . . . . . . . . . . . 19 Full Copyright Statement . . . . . . . . . . . . . . . . . . . 20
1. Introduction 1. Introduction
The NAPTR DNS Resource Record was originally produced by the URN The NAPTR DNS Resource Record was originally produced by the URN
Working Group as a way to encode rule-sets in DNS so that the Working Group as a way to encode rule-sets in DNS so that the
delegated sections of a URI could be decomposed in such a way that delegated sections of a URI could be decomposed in such a way that
they could be changed and re-delegated over time. The result was a they could be changed and re-delegated over time. The result was a
Resource Record that included a regular expression that would be Resource Record that included a regular expression that would be
used by a client program to rewrite a string into a domain name. used by a client program to rewrite a string into a domain name.
Regular expressions were chosen for their compactness to Regular expressions were chosen for their compactness to
expressivity ratio allowing for a great deal of information to be expressivity ratio allowing for a great deal of information to be
encoded in a rather small DNS packet. encoded in a rather small DNS packet.
Over time this process was generalized for other Applications and Over time this process was generalized for other Applications and
Rule Databases. This document defines a Rules Database absent any Rule Databases. This document defines a Rules Database absent any
particular Application as there may be several Applications all particular Application as there may be several Applications all
taking advantage of this particular Rules Database. taking advantage of this particular Rules Database.
As a result of this generalization, this document, along with [11] As a result of this generalization, this document, along with RFC
and [12], obsoletes RFC 2168[13] and updates RFC 2276[10]. ZZZZ[11] and RFC XXXX[12], obsoletes RFC 2168[14], RFC 2915[13] and
updates RFC 2276[10].
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
this document are to be interpreted as described in [1]. this document are to be interpreted as described in [1].
All other terminology, especially capitalized terms, is taken from All other terminology, especially capitalized terms, is taken from
[11]. [11].
3. DDDS Database Specification 3. DDDS Database Specification
General Description: General Description:
This database uses the Domain Name System (DNS) as specified in This database uses the Domain Name System (DNS) as specified in
[3] and [2]. The character set used to specify the various values [3] and [2]. The character set used to specify the various values
of the NAPTR records is UTF-8[14]. of the NAPTR records is UTF-8[15].
Key Format: Key Format:
A Key is a DNS valid domain-name. A Key is a validly constructed DNS domain-name.
Lookup Request: Lookup Request:
In order to request a set of rules for a given Key, the client In order to request a set of rules for a given Key, the client
issues a request, following standard DNS rules, for NAPTR issues a request, following standard DNS rules, for NAPTR
Resource Records for the given domain-name. Resource Records for the given domain-name.
Lookup Response: Lookup Response:
The response to a request for a given Key (domain-name) will be a The response to a request for a given Key (domain-name) will be a
series of NAPTR records. The format of a NAPTR Resource Record series of NAPTR records. The format of a NAPTR Resource Record
can be found in Section 4. can be found in Section 4.
Rule Insertion Procedure: Rule Insertion Procedure:
Rules are inserted by adding new records to the appropriate zone. Rules are inserted by adding new records to the appropriate DNS
If a Rule produces a Key that exists in a particular zone then zone. If a Rule produces a Key that exists in a particular zone
only the entity that has administrative control of that zone can then only the entity that has administrative control of that zone
specify the Rule associated with that Key. can specify the Rule associated with that Key.
Collision Avoidance:
In the case where two Application may use this Database (which is
actually the case with the ENUM and URI Resolution Applications),
there is a chance of collision between rules where two NAPTR
records appear in the same DNS zone but they apply to more than
one Appliation. There are three ways to avoid collisions:
* create a new DNS zone in the zone which the administrator has
authority that contains only NAPTR records that are
appropriate for the application. E.g., all URI Resolution
records are put into urires.foo.com and all ENUM records are
put into enum.foo.com. In the case where this is not possible
due to lack of control over the upstream delegation the second
method is used.
* write the regular expression such that it contains enough of
the Application Unique string to disambiguate it from any
other. For example, the URI Resolution Application would be
able to use the scheme name on the left hand side to anchor
the regular expression match to that scheme. An ENUM specific
record in that same zone would be able to anchor the left hand
side of the match with the "+" character which is defined by
ENUM to be at the beginning of every Application Unique
String. This way a given Appliation Unique String can only
match one or the other record, not both.
* if two Application use different Flags or Services values then
a record from another Application will be ignored since it
doesn't apply to the Services/Flags in question.
4. NAPTR RR Format 4. NAPTR RR Format
4.1 Packet Format 4.1 Packet Format
The packet format of the NAPTR RR is given below. The DNS type code The packet format of the NAPTR RR is given below. The DNS type code
for NAPTR is 35. for NAPTR is 35.
The packet format for the NAPTR record is as follows The packet format for the NAPTR record is as follows
1 1 1 1 1 1 1 1 1 1 1 1
skipping to change at page 6, line 43 skipping to change at page 7, line 43
ORDER ORDER
A 16-bit unsigned integer specifying the order in which the NAPTR A 16-bit unsigned integer specifying the order in which the NAPTR
records MUST be processed in order to accurately represent the records MUST be processed in order to accurately represent the
ordered list of Rules. The ordering is from lowest to highest. ordered list of Rules. The ordering is from lowest to highest.
If two records have the same order value then they are considered If two records have the same order value then they are considered
to be the same rule and should be selected randomly unless the to be the same rule and should be selected randomly unless the
Preference numbers are different which means the randomization is Preference numbers are different which means the randomization is
weighted according to the ratio of the Preference values. weighted according to the ratio of the Preference values.
PREFERENCE PREFERENCE
A 16-bit unsigned integer that specifies the order in which NAPTR Although it is called "preference" in deference to DNS
records with equal Order values SHOULD be processed, low numbers terminology, this field is equivalent to the Priority value in
being processed before high numbers. This is similar to the the DDDS Algorithm. It is a 16-bit unsigned integer that
preference field in an MX record, and is used so domain specifies the order in which NAPTR records with equal Order
administrators can direct clients towards more capable hosts or values SHOULD be processed, low numbers being processed before
lighter weight protocols. A client MAY look at records with high numbers. This is similar to the preference field in an MX
higher preference values if it has a good reason to do so such as record, and is used so domain administrators can direct clients
not understanding some protocol or service. towards more capable hosts or lighter weight protocols. A client
MAY look at records with higher preference values if it has a
good reason to do so such as not understanding some protocol or
service.
The important difference between Order and Preference is that The important difference between Order and Preference is that
once a match is found the client MUST NOT consider records with a once a match is found the client MUST NOT consider records with a
different Order but they MAY process records with the same Order different Order but they MAY process records with the same Order
but different Preferences. I.e. Preference is used to give weight but different Preferences. I.e. Preference is used to give weight
to rules that are considered the same from an authority to rules that are considered the same from an authority
standpoint but not from a simple load balancing standpoint. standpoint but not from a simple load balancing standpoint.
FLAGS FLAGS
A <character-string> containing flags to control aspects of the A <character-string> containing flags to control aspects of the
skipping to change at page 7, line 49 skipping to change at page 8, line 51
to be extremely fault sensitive, very error prone, and extremely to be extremely fault sensitive, very error prone, and extremely
difficult to debug. difficult to debug.
REPLACEMENT REPLACEMENT
A <domain-name> which specifies the The next domain-name to query A <domain-name> which specifies the The next domain-name to query
for depending on the potential values found in the flags field. for depending on the potential values found in the flags field.
This field is used when the regular expression is a simple This field is used when the regular expression is a simple
replacement operation. Any value in this field MUST be a fully replacement operation. Any value in this field MUST be a fully
qualified domain-name. Unless and until permitted by future qualified domain-name. Unless and until permitted by future
standards action, name compression is not to be used for this standards action, name compression is not to be used for this
field. field. This field and the REGEXP field together make up the
Substitution Expression in the DDDS Algorithm. They are also
mutually exclusive. If a record is returned that has values for
both fields then it is considered to be in error and should be
ignored.
4.2 Master File Format 4.2 Master File Format
The master file format follows the standard rules in RFC-1035[1]. The master file format follows the standard rules in RFC-1035[1].
Order and preference, being 16-bit unsigned integers, shall be an Order and preference, being 16-bit unsigned integers, shall be an
integer between 0 and 65535. The Flags and Services and Regexp integer between 0 and 65535. The Flags and Services and Regexp
fields are all quoted <character-string>s. Since the Regexp field fields are all quoted <character-string>s. Since the Regexp field
can contain numerous backslashes and thus should be treated with can contain numerous backslashes and thus should be treated with
care. See Section 10 for how to correctly enter and escape the care. See Section 10 for how to correctly enter and escape the
regular expression. regular expression.
skipping to change at page 10, line 18 skipping to change at page 11, line 18
The NAPTR record was originally specified for use with the a Uniform The NAPTR record was originally specified for use with the a Uniform
Resource Name Resolver Discovery System. This example details how a Resource Name Resolver Discovery System. This example details how a
particular URN would use the NAPTR record to find a resolver service particular URN would use the NAPTR record to find a resolver service
that can answer questions about the URN. See [12] for the definitive that can answer questions about the URN. See [12] for the definitive
specification for this Application. specification for this Application.
Consider a URN namespace based on MIME Content-Ids (this is very Consider a URN namespace based on MIME Content-Ids (this is very
hypothetical so do not rely on this) . The URN might look like this: hypothetical so do not rely on this) . The URN might look like this:
urn:cid:199606121851.1@bar.foo.com
This Application's First Well Known Rule is to extract the This Application's First Well Known Rule is to extract the
characters between the first and second colon. For this URN that characters between the first and second colon. For this URN that
would be 'cid'. The Application also specifies that, in order to would be 'cid'. The Application also specifies that, in order to
build a Database-valid Key, the string 'urn.arpa' should be appended build a Database-valid Key, the string 'urn.arpa' should be appended
to the result of the First Well Known Rule. The result is to the result of the First Well Known Rule. The result is
'cid.urn.arpa'. 'cid.urn.arpa'.
Next, the client queries the DNS for NAPTR records for the Next, the client queries the DNS for NAPTR records for the
domain-name 'cid.urn.arpa'. The result is a single record: domain-name 'cid.urn.arpa'. The result is a single record:
skipping to change at page 11, line 5 skipping to change at page 12, line 5
Note that the rule does not extract the full domain name from the Note that the rule does not extract the full domain name from the
CID, instead it assumes the CID comes from a host and extracts its CID, instead it assumes the CID comes from a host and extracts its
domain. While all hosts, such as 'bar', could have their very own domain. While all hosts, such as 'bar', could have their very own
NAPTR, maintaining those records for all the machines at a site NAPTR, maintaining those records for all the machines at a site
could be an intolerable burden. Wildcards are not appropriate here could be an intolerable burden. Wildcards are not appropriate here
since they only return results when there is no exactly matching since they only return results when there is no exactly matching
names already in the system. names already in the system.
The record returned from the query on "foo.com" might look like: The record returned from the query on "foo.com" might look like:
gatech.edu. foo.com.
;; order pref flags service regexp replacement ;; order pref flags service regexp replacement
IN NAPTR 100 50 "a" "z3950+N2L+N2C" "" cidserver.foo.com. IN NAPTR 100 50 "a" "z3950+N2L+N2C" "" cidserver.foo.com.
IN NAPTR 100 50 "a" "rcds+N2C" "" cidserver.foo.com. IN NAPTR 100 50 "a" "rcds+N2C" "" cidserver.foo.com.
IN NAPTR 100 50 "a" "http+N2L+N2C+N2R" "" www.foo.com. IN NAPTR 100 50 "s" "http+N2L+N2C+N2R" "" www.foo.com.
Continuing with the example, note that the values of the order and Continuing with the example, note that the values of the order and
preference fields are equal in all records, so the client is free to preference fields are equal in all records, so the client is free to
pick any record. The Application defines the flag 'a' to mean a pick any record. The Application defines the flag 'a' to mean a
terminal lookup and that the output of the rewrite will be a terminal lookup and that the output of the rewrite will be a
domain-name for which an A record should be queried. Once the client domain-name for which an A record should be queried. Once the client
has done that, it has the following information: the host, its IP has done that, it has the following information: the host, its IP
address, the protocol, and the services available via that protocol. address, the protocol, and the services available via that protocol.
Given these bits of information the client has enough to be able to Given these bits of information the client has enough to be able to
contact that server and ask it questions about the URN. contact that server and ask it questions about the URN.
skipping to change at page 11, line 45 skipping to change at page 12, line 45
Unique String for the ENUM Application is the E.164 telephone number Unique String for the ENUM Application is the E.164 telephone number
with the dashes removed. The First Well Known Rule is to remove all with the dashes removed. The First Well Known Rule is to remove all
characters from the the telephone number and then use the entire characters from the the telephone number and then use the entire
number as the first Key. For example, the phone number number as the first Key. For example, the phone number
"770-555-1212" represented as an E.164 number would be "770-555-1212" represented as an E.164 number would be
"+1-770-555-1212". Converted to the Key it would be "17705551212". "+1-770-555-1212". Converted to the Key it would be "17705551212".
The ENUM Application at present only uses this Database. It The ENUM Application at present only uses this Database. It
specifies that, in order to convert the first Key into a form valid specifies that, in order to convert the first Key into a form valid
for this Database, periods are inserted between each digit, the for this Database, periods are inserted between each digit, the
entire Key is inverted and then append "e164.arpa" to the end. The entire Key is inverted and then "e164.arpa" is appended to the end.
above telephone number would then read The above telephone number would then read
"2.1.2.1.5.5.5.0.7.7.1.e164.arpa.". This domain-name is then used to "2.1.2.1.5.5.5.0.7.7.1.e164.arpa.". This domain-name is then used to
retrieve Rewrite Rules as NAPTR records. retrieve Rewrite Rules as NAPTR records.
For this example telephone number we might get back the following For this example telephone number we might get back the following
NAPTR records: NAPTR records:
$ORIGIN 2.1.2.1.5.5.5.0.7.7.1.e164.arpa. $ORIGIN 2.1.2.1.5.5.5.0.7.7.1.e164.arpa.
IN NAPTR 100 10 "u" "sip+N2R" "!^.*$!sip:information@tele2.se!" . IN NAPTR 100 10 "u" "sip+N2R" "!^.*$!sip:information@tele2.se!" .
IN NAPTR 102 10 "u" "smtp+N2R" "!^.*$!mailto:information@tele2.se!" . IN NAPTR 102 10 "u" "smtp+N2R" "!^.*$!mailto:information@tele2.se!" .
skipping to change at page 17, line 23 skipping to change at page 18, line 23
[3] Mockapetris, P.V., "Domain names - concepts and facilities", [3] Mockapetris, P.V., "Domain names - concepts and facilities",
RFC 1034, STD 13, Nov 1987. RFC 1034, STD 13, Nov 1987.
[4] Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for [4] Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for
specifying the location of services (DNS SRV)", RFC 2782, specifying the location of services (DNS SRV)", RFC 2782,
February 2000. February 2000.
[5] Crocker, D., "Augmented BNF for Syntax Specifications: ABNF", [5] Crocker, D., "Augmented BNF for Syntax Specifications: ABNF",
RFC 2234, November 1997. RFC 2234, November 1997.
[6] Danie1, R., "A Trivial Convention for using HTTP in URN [6] Daniel, R., "A Trivial Convention for using HTTP in URN
Resolution", RFC 2169, June 1997. Resolution", RFC 2169, June 1997.
[7] IEEE, "IEEE Standard for Information Technology - Portable [7] IEEE, "IEEE Standard for Information Technology - Portable
Operating System Interface (POSIX) - Part 2: Shell and Operating System Interface (POSIX) - Part 2: Shell and
Utilities (Vol. 1)", IEEE Std 1003.2-1992, January 1993. Utilities (Vol. 1)", IEEE Std 1003.2-1992, January 1993.
[8] Berners-Lee, T., Fielding, R.T. and L. Masinter, "Uniform [8] Berners-Lee, T., Fielding, R.T. and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", RFC 2396, August Resource Identifiers (URI): Generic Syntax", RFC 2396, August
1998. 1998.
[9] Moats, R., "URN Syntax", RFC 2141, May 1997. [9] Moats, R., "URN Syntax", RFC 2141, May 1997.
[10] Sollins, K., "Architectural Principles of Uniform Resource [10] Sollins, K., "Architectural Principles of Uniform Resource
Name Resolution", RFC 2276, January 1998. Name Resolution", RFC 2276, January 1998.
[11] Mealling, M.M., "Dynamic Delegation Discovery System (DDDS)", [11] Mealling, M., "Dynamic Delegation Discovery System (DDDS)",
Internet-Draft draft-ietf-urn-ddds-00.txt, May 2000. RFC ZZZZ, Internet-Draft draft-ietf-urn-ddds-00.txt, May 2000.
[12] Mealling, M.M., "URI Resolution using the Dynamic Delegation [12] Mealling, M., "URI Resolution using the Dynamic Delegation
Discovery System", Internet-Draft Discovery System", RFC XXXX, Internet-Draft
draft-ietf-urn-uri-res-ddds-00.txt, July 2000. draft-ietf-urn-uri-res-ddds-00.txt, July 2000.
[13] Danie1, R. and M. Mealling, "Resolution of Uniform Resource [13] Mealling, M. and R. Daniel, "The Naming Authority Pointer
(NAPTR) DNS Resource Record", RFC 2915, August 2000.
[14] Daniel, R. and M. Mealling, "Resolution of Uniform Resource
Identifiers using the Domain Name System", RFC 2168, June 1997. Identifiers using the Domain Name System", RFC 2168, June 1997.
[14] "Appendix A.2 of "The Unicode Standard, Version 2.0"", ISBN [15] "Appendix A.2 of "The Unicode Standard, Version 2.0"", ISBN
0-201-48345-9, January 1996. 0-201-48345-9, January 1996.
Author's Address Author's Address
Michael Mealling Michael Mealling
Network Solutions, Inc. Network Solutions, Inc.
505 Huntmar Park Drive 505 Huntmar Park Drive
Herndon, VA 22070 Herndon, VA 22070
US US
 End of changes. 21 change blocks. 
47 lines changed or deleted 90 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/