draft-ietf-urn-net-procedures-03.txt   draft-ietf-urn-net-procedures-04.txt 
Network Working Group M. Mealling Network Working Group M. Mealling
Internet-Draft Network Solutions, Inc. Internet-Draft Network Solutions, Inc.
Expires: August 1, 2000 R.D. Daniel Expires: August 1, 2000 R.D. Daniel
Metacode, Inc. Metacode, Inc.
February 2000 February 2000
Assignment Procedures for URI Resolution using DNS Assignment Procedures for URI Resolution Using DNS
draft-ietf-urn-net-procedures-03.txt draft-ietf-urn-net-procedures-04
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.
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
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 To view the entire list of Internet-Draft Shadow Directories, see
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. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 1, 2000. This Internet-Draft will expire on August 1, 2000.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved. Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract Abstract
RFCXXXX defines a how DNS is used as a Resolver Discovery System RFCXXXX defines a how DNS is used as a DDDS database that contains
database that contains URI delegation rules (sometimes called URI delegation rules (sometimes called resolution hints). That
resolution hints). That document specifies that the first step in document specifies that the first step in that algorithm is to
that algorithm is to append 'URI.NET' to the URI scheme and retrieve append 'URI.ARPA' to the URI scheme and retrieve the NAPTR record
the NAPTR record for that domain-name. I.e., the first step in for that domain-name. I.e., the first step in resolving
resolving "http://foo.com/" would be to look up a NAPTR record for "http://foo.com/" would be to look up a NAPTR record for the domain
the domain "http.URI.NET". URN resolution also follows a similar "http.URI.ARPA". URN resolution also follows a similar procedure but
procedure but uses the 'URN.NET' zone as its root. This document uses the 'URN.ARPA' zone as its root. This document describes the
describes the procedures for inserting a new rule into the 'URI.NET' procedures for inserting a new rule into the 'URI.ARPA' and
and 'URN.NET' zones. 'URN.ARPA' zones.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. URI Resolution vs URN Resolution . . . . . . . . . . . . . . 3 2. URI Resolution vs URN Resolution . . . . . . . . . . . . . . 3
3. Registration Policies . . . . . . . . . . . . . . . . . . . 3 3. Registration Policies . . . . . . . . . . . . . . . . . . . 3
3.1 URI.NET Registration . . . . . . . . . . . . . . . . . . . . 3 3.1 URI.ARPA Registration . . . . . . . . . . . . . . . . . . . 3
3.1.1 Only Schemes in the IETF Tree Allowed . . . . . . . . . . . 3 3.1.1 Only Schemes in the IETF Tree Allowed . . . . . . . . . . . 3
3.1.2 Scheme Registration Takes Precedence . . . . . . . . . . . . 3 3.1.2 Scheme Registration Takes Precedence . . . . . . . . . . . . 3
3.1.3 NAPTR Registration May Accompany Scheme Registration . . . . 4 3.1.3 NAPTR Registration May Accompany Scheme Registration . . . . 4
3.1.4 Registration or Changes after Scheme Registration . . . . . 4 3.1.4 Registration or Changes after Scheme Registration . . . . . 4
3.2 URN.NET Registration . . . . . . . . . . . . . . . . . . . . 4 3.2 URN.ARPA Registration . . . . . . . . . . . . . . . . . . . 4
3.2.1 NID Registration Takes Precedence . . . . . . . . . . . . . 4 3.2.1 NID Registration Takes Precedence . . . . . . . . . . . . . 4
3.2.2 NAPTR Registration May Accompany NID Registration . . . . . 4 3.2.2 NAPTR Registration May Accompany NID Registration . . . . . 4
3.2.3 Registration or Changes after Scheme Registration . . . . . 4 3.2.3 Registration or Changes after Scheme Registration . . . . . 4
4. Requirements on hints . . . . . . . . . . . . . . . . . . . 5 4. Requirements on hints . . . . . . . . . . . . . . . . . . . 5
5. Submission Procedure . . . . . . . . . . . . . . . . . . . . 6 5. Submission Procedure . . . . . . . . . . . . . . . . . . . . 6
6. Registration Template . . . . . . . . . . . . . . . . . . . 6 6. Registration Template . . . . . . . . . . . . . . . . . . . 6
6.1 Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6.1 Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.2 Authority . . . . . . . . . . . . . . . . . . . . . . . . . 6 6.2 Authority . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.3 Records . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6.3 Records . . . . . . . . . . . . . . . . . . . . . . . . . . 6
7. Example Template . . . . . . . . . . . . . . . . . . . . . . 7 7. Example Template . . . . . . . . . . . . . . . . . . . . . . 7
8. The URN Registration in the URI.NET zone . . . . . . . . . . 7 8. The URN Registration in the URI.ARPA zone . . . . . . . . . 7
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 7 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 7
References . . . . . . . . . . . . . . . . . . . . . . . . . 7 References . . . . . . . . . . . . . . . . . . . . . . . . . 7
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 8 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 8
Full Copyright Statement . . . . . . . . . . . . . . . . . . 9 Full Copyright Statement . . . . . . . . . . . . . . . . . . 9
1. Introduction 1. Introduction
This document defines the policies and procedures for inserting This document defines the policies and procedures for inserting
NAPTR records into the 'URI.NET' and 'URN.NET' zones for the purpose NAPTR records into the 'URI.ARPA' and 'URN.ARPA' zones for the
of resolving URIs according to "Resolution of Uniform Resource purpose of resolving URIs according to "URI Resolution using the
Identifiers using the Domain Name System", RFCXXXX[1], which is an Dynamic Delegation Discovery System" (RFCXXXX)[9], which is an
application of the NAPTR DNS Resource Record defined in RFCXXXX[2]. Application that uses the DNS based DDDS Database defined in
RFCXXXX[8]. The algorithm expressed by these Rules is specified in
"Dynamic Delegation Discovery System (DDDS) (RFCXXXX)[10].
2. URI Resolution vs URN Resolution 2. URI Resolution vs URN Resolution
RFCXXXX[1] defines how both URI resolution and URN[3] resolution RFCXXXX[9] defines how both URI[4] resolution and URN[3] resolution
work when DNS is used as the delegation rule (or hint) database. work when DNS is used as the delegation rule (or hint) database.
Specifically it says that the initial instructions ('hints') for Specifically it says that the initial instructions ('hints') for
DNS-based resolution of URIs are stored as resource records in the DNS-based resolution of URIs are stored as resource records in the
'URI.NET' DNS zone. 'URI.ARPA' DNS zone.
Since a URN is a kind of URI, a hint for resolution of the URI Since a URN is a kind of URI, a hint for resolution of the URI
prefix 'urn:' will also be stored in the 'URI.NET' zone. This rule prefix 'urn:' will also be stored in the 'URI.ARPA' zone. This rule
states that the namespace id[3] is extracted, 'URN.NET' is appended states that the namespace id[3] is extracted, 'URN.ARPA' is appended
to the end of the namespace id, and the result is used as the key to the end of the namespace id, and the result is used as the key
for retrieval of a subsequent NAPTR record[2]. for retrieval of a subsequent NAPTR record[2].
3. Registration Policies 3. Registration Policies
The creation of a given URI scheme or URN namespace id (NID) follows The creation of a given URI scheme or URN namespace id (NID) follows
the appropriate registration documents for those spaces. URI schemes the appropriate registration documents for those spaces. URI schemes
follow "Registration Procedures for URL Scheme Names" (RFC follow "Registration Procedures for URL Scheme Names" (RFC
2717)[7]. URN namespace ids follow "URN Namespace Definition 2717)[7]. URN namespace ids follow "URN Namespace Definition
Mechanisms" (RFC 2611)[6]. Mechanisms" (RFC 2611)[6].
3.1 URI.NET Registration 3.1 URI.ARPA Registration
3.1.1 Only Schemes in the IETF Tree Allowed 3.1.1 Only Schemes in the IETF Tree Allowed
In order to be inserted into the URI.NET zone, the subsequent URI In order to be inserted into the URI.ARPA zone, the subsequent URI
scheme MUST be registered under the IETF URI tree. The requirements scheme MUST be registered under the IETF URI tree. The requirements
for this tree are specified in [7]. for this tree are specified in [7].
3.1.2 Scheme Registration Takes Precedence 3.1.2 Scheme Registration Takes Precedence
The registration of a NAPTR record for a URI scheme MUST NOT precede The registration of a NAPTR record for a URI scheme MUST NOT precede
proper registration of that scheme and publication of a stable proper registration of that scheme and publication of a stable
specification in accordance with [7]. The IESG or its designated specification in accordance with [7]. The IESG or its designated
expert will review the request for expert will review the request for
1. correctness and technical soundness 1. correctness and technical soundness
2. consistency with the published URI specification, and 2. consistency with the published URI specification, and
3. to ensure that the NAPTR record for a DNS-based URI does not 3. to ensure that the NAPTR record for a DNS-based URI does not
delegate resolution of the URI to a party other than the holder delegate resolution of the URI to a party other than the holder
of the DNS name. This last rule is to insure that a given URI's of the DNS name. This last rule is to insure that a given URI's
resolution hint doesn't hijack (inadvertently or otherwise) resolution hint doesn't hijack (inadvertently or otherwise)
network traffic for a given domain. network traffic for a given domain.
3.1.3 NAPTR Registration May Accompany Scheme Registration 3.1.3 NAPTR Registration May Accompany Scheme Registration
A request for a URI.NET registration MAY accompany a request for a A request for a URI.ARPA registration MAY accompany a request for a
URI scheme (in accordance with [7]), in which case both requests URI scheme (in accordance with [7]), in which case both requests
will be reviewed simultaneously by IESG or its designated experts. will be reviewed simultaneously by IESG or its designated experts.
3.1.4 Registration or Changes after Scheme Registration 3.1.4 Registration or Changes after Scheme Registration
A request for a NAPTR record (or an request to change an existing A request for a NAPTR record (or an request to change an existing
NAPTR record) MAY be submitted after the URI prefix has been NAPTR record) MAY be submitted after the URI prefix has been
registered. If the specification for the URI prefix is controlled registered. If the specification for the URI prefix is controlled
by some other party than IETF, IESG will require approval from the by some other party than IETF, IESG will require approval from the
owner/maintainer of that specification before the registration will owner/maintainer of that specification before the registration will
be accepted. This is in addition to any technical review of the be accepted. This is in addition to any technical review of the
NAPTR registration done by IESG or its designated experts. NAPTR registration done by IESG or its designated experts.
3.2 URN.NET Registration 3.2 URN.ARPA Registration
3.2.1 NID Registration Takes Precedence 3.2.1 NID Registration Takes Precedence
The registration of a NAPTR record for a URN NID MUST NOT precede The registration of a NAPTR record for a URN NID MUST NOT precede
proper registration of that NID and publication of a stable proper registration of that NID and publication of a stable
specification in accordance with [6]. This is to prevent the specification in accordance with [6]. This is to prevent the
registration of a NAPTR record in URN.NET from circumventing the NID registration of a NAPTR record in URN.ARPA from circumventing the
registration process. NID registration process.
3.2.2 NAPTR Registration May Accompany NID Registration 3.2.2 NAPTR Registration May Accompany NID Registration
A request for a URN.NET registration MAY accompany a request for a A request for a URN.ARPA registration MAY accompany a request for a
NID (in accordance with [6]), in which case both requests will be NID (in accordance with [6]), in which case both requests will be
reviewed at the same time. reviewed at the same time.
3.2.3 Registration or Changes after Scheme Registration 3.2.3 Registration or Changes after Scheme Registration
A request for a NAPTR record (or an request to change an existing A request for a NAPTR record (or an request to change an existing
NAPTR record) MAY be submitted after the NID has been registered. NAPTR record) MAY be submitted after the NID has been registered.
If the specification for the NID is controlled by some other party If the specification for the NID is controlled by some other party
than IETF, IESG will require approval from the owner/maintainer of than IETF, IESG will require approval from the owner/maintainer of
that specification before the registration will be accepted. This is that specification before the registration will be accepted. This is
skipping to change at page 5, line 15 skipping to change at page 5, line 16
4. Requirements on hints 4. Requirements on hints
Delegation of a namespace can happen in two ways. In the case of Delegation of a namespace can happen in two ways. In the case of
most URIs, the key being delegated to is hard-coded into the most URIs, the key being delegated to is hard-coded into the
identifier itself (i.e. a hostname in an HTTP URL). The syntax of identifier itself (i.e. a hostname in an HTTP URL). The syntax of
where this new key is located is predetermined by the syntax of the where this new key is located is predetermined by the syntax of the
scheme. In other cases, the new key can be part of the hint itself. scheme. In other cases, the new key can be part of the hint itself.
This is the functional equivalent of saying, "if this rule matches This is the functional equivalent of saying, "if this rule matches
then this is always the key." then this is always the key."
In order to minimize the query load on the URI.NET and URN.NET In order to minimize the query load on the URI.ARPA and URN.ARPA
zones, it is anticipated that the resource records in those zones zones, it is anticipated that the resource records in those zones
will have extremely long "times to live" (TTLs), perhaps measured in will have extremely long "times to live" (TTLs), perhaps measured in
years. years.
Thus, for any URI prefix or URN namespace for which the resolution Thus, for any URI prefix or URN namespace for which the resolution
hints are likely to change, the actual rule should be stored in some hints are likely to change, the actual rule should be stored in some
other (less stable) DNS zone, and within URI.NET or URN.NET a stable other (less stable) DNS zone, and within URI.ARPA or URN.ARPA a
NAPTR record should be used to delegate queries to that less stable stable NAPTR record should be used to delegate queries to that less
zone. stable zone.
For example, the 'foo' URN namespace has flexible rules for how For example, the 'foo' URN namespace has flexible rules for how
delegation takes place. Instead of putting those rules in the delegation takes place. Instead of putting those rules in the
URN.NET zone, the entry instead punts those rules off to a URN.ARPA zone, the entry instead punts those rules off to a
nameserver that has a shorter time to live. The record in URN.NET nameserver that has a shorter time to live. The record in URN.ARPA
would look like this: would look like this:
foo IN NAPTR 100 10 "" "" "" urn-resolver.foo.com. foo IN NAPTR 100 10 "" "" "" urn-resolver.foo.com.
Thus, when the client starts out in the resolution process, the Thus, when the client starts out in the resolution process, the
first step will be to query foo.URN.NET to find the above record, first step will be to query foo.URN.ARPA to find the above record,
the second step is to begin asking 'urn-resolver.foo.com' for the the second step is to begin asking 'urn-resolver.foo.com' for the
NAPTR records that contain the resolution rules. The TTL at the root NAPTR records that contain the resolution rules. The TTL at the root
is very long. The TTL at the 'urn-resolver.foo.com' is much shorter. is very long. The TTL at the 'urn-resolver.foo.com' is much shorter.
Conversely, the 'http' URL scheme adheres to a particular syntax Conversely, the 'http' URL scheme adheres to a particular syntax
that specifies that the host to ask is specified in the URL in that specifies that the host to ask is specified in the URL in
question. Since this syntax does not change, that rule can be question. Since this syntax does not change, that rule can be
specified in the URI.NET zone. The record would look like this: specified in the URI.ARPA zone. The record would look like this:
http IN NAPTR 100 100 "" "" "/http:\\/\\/([^\\/:]+)/\\2/i" . http IN NAPTR 100 100 "" "" "/http:\\/\\/([^\\/:]+)/\\2/i" .
Thus, the second step of resolution is to use the domain-name found Thus, the second step of resolution is to use the domain-name found
in the URL as the next key in the cycle. If, for example, that NAPTR in the URL as the next key in the cycle. If, for example, that NAPTR
was terminal and contains some hostname in the replacement field, was terminal and contains some hostname in the replacement field,
then the client could contact that host in order to ask questions then the client could contact that host in order to ask questions
about this particular URI. about this particular URI.
5. Submission Procedure 5. Submission Procedure
Using the MIME Content-Type registration mechanism[5]as a model for Using the MIME Content-Type registration mechanism[5]as a model for
a successful registration mechanism, the 'URI.NET' and 'URN.NET' a successful registration mechanism, the 'URI.ARPA' and 'URN.ARPA'
procedures consist of a request template submitted to an open procedures consist of a request template submitted to an open
mailing list made up of interested parties. If no objections are mailing list made up of interested parties. If no objections are
made within a two week period, a representative of the registration made within a two week period, a representative of the registration
authority considers the submission to be accepted and enters that authority considers the submission to be accepted and enters that
submission into the nameserver. submission into the nameserver.
o Registrations for the 'URI.NET' zone are sent to o Registrations for the 'URI.ARPA' zone are sent to
'register@URI.NET'. 'register@URI.ARPA'.
o Registrations for the 'URN.NET' zone are sent to o Registrations for the 'URN.ARPA' zone are sent to
'register@URN.NET'. 'register@URN.ARPA'.
At this time the registration authority is expected to be the IANA. At this time the registration authority is expected to be the IANA.
Objections are restricted to those that point out impacts on the Objections are restricted to those that point out impacts on the
zone itself or to DNS in general. Objections to the URL scheme or to zone itself or to DNS in general. Objections to the URL scheme or to
the URN namespace-id are not allowed, as these should be raised in the URN namespace-id are not allowed, as these should be raised in
their respective forums. The logical conclusion of this is that ANY their respective forums. The logical conclusion of this is that ANY
sanctioned URL scheme or URN namespace MUST be allowed to be sanctioned URL scheme or URN namespace MUST be allowed to be
registered if it meets the requirements specified in this document registered if it meets the requirements specified in this document
as regards times to live and general impact to the DNS. as regards times to live and general impact to the DNS.
skipping to change at page 7, line 7 skipping to change at page 7, line 7
defined in the URN NID[6] or URL scheme registration[7] documents. defined in the URN NID[6] or URL scheme registration[7] documents.
6.3 Records 6.3 Records
The actual DNS records representing the rule set for the key. The The actual DNS records representing the rule set for the key. The
required values are Preference, Order, Flags, Services, Regex, and required values are Preference, Order, Flags, Services, Regex, and
Replacement as defined by RFCXXXX[2]. Replacement as defined by RFCXXXX[2].
7. Example Template 7. Example Template
To: register@URN.NET To: register@URN.ARPA
From: joe@foo.com From: joe@foo.com
Key: foo Key: foo
Authority: Foo Technology, Inc as specified in RFCFOO Authority: Foo Technology, Inc as specified in RFCFOO
Record: foo IN NAPTR 100 100 "" "" "" urn.foo.com. Record: foo IN NAPTR 100 100 "" "" "" urn.foo.com.
8. The URN Registration in the URI.NET zone 8. The URN Registration in the URI.ARPA zone
Since this document discusses the URI.NET and URN.NET zones and the Since this document discusses the URI.ARPA and URN.ARPA zones and
URN rule that exists in the URI.NET zone, it makes sense for the the URN rule that exists in the URI.ARPA zone, it makes sense for
registration template for the URN URI rule to be specified here: the registration template for the URN URI rule to be specified here:
To: register@URI.NET To: register@URI.ARPA
From: The IETF URN Working Group From: The IETF URN Working Group
Key: urn Key: urn
Authority: RFC2141 Authority: RFC2141
Record: urn IN NAPTR 0 0 "" "" "/urn:([^:]+)/\\2/i" . Record: urn IN NAPTR 0 0 "" "" "/urn:([^:]+)/\\2/i" .
9. IANA Considerations 9. IANA Considerations
This document describes a mechanism for registering representations This document describes a mechanism for registering representations
of protocol items that have already been registered with some IETF of protocol items that have already been registered with some IETF
sanctioned agency (probably the IANA as well). This means that the sanctioned agency (probably the IANA as well). This means that the
IANA need not determine appropriateness of the underlying IANA need not determine appropriateness of the underlying
namespaces, since that is determined by another process. namespaces, since that is determined by another process.
The only real impact on the IANA will be The only real impact on the IANA will be
o to create and maintain (or designate some other entity to o to create and maintain (or designate some other entity to
maintain) a primary nameserver for the URI.NET and URN.NET zones; maintain) a primary nameserver for the URI.ARPA and URN.ARPA
o to maintain the mailing lists "register@URI.NET" and zones;
"register@URN.NET" as the forum for discussions of submissions; o to maintain the mailing lists "register@URI.ARPA" and
"register@URN.ARPA" as the forum for discussions of submissions;
and and
o to act as the party that determines if all objections have been o to act as the party that determines if all objections have been
noted and accommodated. noted and accommodated.
References References
[1] Mealling, M. and R. Daniel, "Resolution of Uniform Resource [1] Mealling, M. and R. Daniel, "Resolution of Uniform Resource
Identifiers using the Domain Name System", November 1998. Identifiers using the Domain Name System", November 1998.
[2] Mealling, M. and R. Daniel, "The Naming Authority Pointer [2] Mealling, M. and R. Daniel, "The Naming Authority Pointer
skipping to change at page 8, line 21 skipping to change at page 8, line 21
[5] Freed, N., Klensin, J. and J. Postel, "Multipurpose Internet [5] Freed, N., Klensin, J. and J. Postel, "Multipurpose Internet
Mail Extensions (MIME) Part Four: Registration Procedures", RFC Mail Extensions (MIME) Part Four: Registration Procedures", RFC
2048, November 1996. 2048, November 1996.
[6] Faltstrom, P., Iannella, R., Daigle, L. and D. van Gulik, "URN [6] Faltstrom, P., Iannella, R., Daigle, L. and D. van Gulik, "URN
Namespace Definition Mechanisms", RFC 2611, October 1998. Namespace Definition Mechanisms", RFC 2611, October 1998.
[7] Petke, R. and I. King, "Registration Procedures for URL Scheme [7] Petke, R. and I. King, "Registration Procedures for URL Scheme
Names", RFC 2717, January 1999. Names", RFC 2717, January 1999.
[8] Mealling, M.M., "A DDDS Database Using The Domain Name System",
Internet-Draft draft-ietf-urn-dns-ddds-database-00.txt, May
2000.
[9] Mealling, M.M., "URI Resolution using the Dynamic Delegation
Discovery System", Internet-Draft
draft-ietf-urn-uri-res-ddds-00.txt, July 2000.
[10] Mealling, M.M., "Dynamic Delegation Discovery System (DDDS)",
Internet-Draft draft-ietf-urn-ddds-00.txt, May 2000.
Authors' Addresses Authors' Addresses
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
Phone: (703) 742-0400 Phone: (703) 742-0400
EMail: michaelm@netsol.com EMail: michaelm@netsol.com
 End of changes. 29 change blocks. 
56 lines changed or deleted 67 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/