RFC 4848
Domain-Based Application Service Location Using URIs and the Dynamic Delegation Discovery Service (DDDS)
RFC 4848 ๐ฆ Domain-Based Application Service Location Using URIs and the Dynamic Delegation Discovery Service (DDDS)
Network Working Group ๐ธ Author: L. Daigle, Cisco Systems ๐ Category: Standards Track ๐ Date: April 2007 ๐
Status of This Memo โจ
Okay bestie, this part is the official fine print ๐. This document is an Internet standards track protocol for the Internet community, and it's asking everyone to talk about it and suggest improvements ๐ฌ. If you want the actual standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐. And distribution of this memo is unlimited, so share it wherever you want ๐.
Copyright Notice ยฉ๏ธ
Copyright (C) The IETF Trust (2007) ๐
Abstract ๐ฆ
The goal here is to define a brand new, super straightforward Dynamic Delegation Discovery Service (DDDS) application ๐ง. It lets you map domain names to URIs for specific application services and protocols, which is honestly iconic ๐ฅ. It's called U-NAPTR, and even though it's its own DDDS application, it's basically an extension of the Straightforward NAPTR (S-NAPTR) DDDS Application ๐.
Table of Contents ๐
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Straightforward URI-Enabled NAPTR (U-NAPTR) . . . . . . . . . . 3
2.1. Permitted Flags . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Permitted Regular Expressions . . . . . . . . . . . . . . . 4
3. Sample U-NAPTR DNS Records . . . . . . . . . . . . . . . . . . 4
4. Formal Definition of U-NAPTR Application of DDDS . . . . . . . 5
4.1. Application Unique String . . . . . . . . . . . . . . . . . 5
4.2. First Well Known Rule . . . . . . . . . . . . . . . . . . . 5
4.3. Expected Output . . . . . . . . . . . . . . . . . . . . . . 5
4.4. Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.5. Service Parameters . . . . . . . . . . . . . . . . . . . . 5
4.5.1. Application Services . . . . . . . . . . . . . . . . . 6
4.5.2. Application Protocols . . . . . . . . . . . . . . . . . 6
4.6. Valid Rules . . . . . . . . . . . . . . . . . . . . . . . . 6
4.7. Valid Databases . . . . . . . . . . . . . . . . . . . . . . 7
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 7
6. Security Considerations . . . . . . . . . . . . . . . . . . . . 8
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 8
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8.1. Normative References . . . . . . . . . . . . . . . . . . . 8
8.2. Informative References . . . . . . . . . . . . . . . . . . 9
1. Introduction ๐ท
So the purpose here is the same girlboss energy: define a new, straightforward Dynamic Delegation Discovery Service (DDDS) [7] application that maps domain names to URIs for particular application services and protocols ๐. This is what lets you "lookup" which services are available for a given domain, for example ๐.
Even though this is a totally new and separate DDDS Application called U-NAPTR, it's built on the same principles as the Straightforward NAPTR (S-NAPTR) application, which is specified in [2] ๐ . This spec is not an update of S-NAPTR, but you should go read that doc for the deep dive on motivation and implementation stuff ๐.
S-NAPTR gives you application service location without relying on rigid domain naming conventions โจ. It's called "straightforward" partly because it bans regular expressions in NAPTR records (for the S-NAPTR DDDS Application) ๐. The catch is that this also rules out using a URI as the target of DDDS resolution ๐ญ. A bunch of applications, both specified (e.g., [9]) and proposed, find that restriction too limiting, so S-NAPTR is a near miss for them ๐ฅฒ.
So U-NAPTR is basically a modest glow-up of S-NAPTR ๐. It lets URIs be targets, without allowing the full range of possible regular expressions in NAPTR records ๐ซถ.
2. Straightforward URI-Enabled NAPTR (U-NAPTR) ๐
This document assumes you already know the S-NAPTR specification [2], which is totally fair ๐. U-NAPTR is meant to do everything S-NAPTR does, with two differences: it allows the use of the "U" flag in the NAPTR record, and it allows one specific form of REGEXP ๐ฏ.
2.1. Permitted Flags ๐ฉ
U-NAPTR permits the same flags as S-NAPTR ("S", "A", or empty), plus the "U" Flag โจ. For the U-NAPTR DDDS Application, when the "U" Flag shows up in the NAPTR record, the REGEXP field must be populated, which means the REPLACEMENT field is empty as a result ๐งฉ. The regular expression in the REGEXP field must be of the limited form described below, and evaluating that regular expression gives you a URI, which is the result of the DDDS resolution ๐ฆ.
2.2. Permitted Regular Expressions ๐
U-NAPTR permits regular expressions that completely replace the matched string with a URI, written as a constant string ๐ . This is basically a workaround, because the REPLACEMENT field in NAPTR is required to produce only a fully qualified domain name, so it can't be used for a URI ๐.
The specific allowed syntax for U-NAPTR regular expressions is:
u-naptr-regexp = "!.*!"<URI>"!"
Here, <URI> is as defined in STD 66 [8], the URI syntax specification ๐.
With this limited form of regular expression, applications using U-NAPTR don't need to implement full regular expression parsers ๐. Less work, more slay ๐.
3. Sample U-NAPTR DNS Records ๐
In the sample NAPTR RRs for example.com shown below, "WP" is the imagined application service tag for "white pages" ๐, and "EM" is the application service tag for an imagined "Extensible Messaging" application service ๐.
example.com.
;; order pref flags
IN NAPTR 100 10 "" "WP:whois++" ( ; service
"" ; regexp
bunyip.example.com. ; replacement
)
IN NAPTR 100 20 "s" "WP:ldap" ( ; service
"" ; regexp
_ldap._tcp.myldap.example.com. ; replacement
)
IN NAPTR 200 10 "u" "EM:protA" ( ; service
"!.*!prota://someisp.example.com!" ; regexp
"" ; replacement
)
IN NAPTR 200 30 "a" "EM:protB" ; service
"" ; regexp
myprotB.example.com.; replacement
)
4. Formal Definition of U-NAPTR Application of DDDS ๐
This section formally defines the DDDS Application, as described in [7] ๐. Time to get serious, but still cute ๐ .
4.1. Application Unique String ๐
The Application Unique String is a fully qualified domain name (FQDN) ๐. The thing you're looking for is the authoritative server for a particular service, for that domain ๐.
4.2. First Well Known Rule ๐ฅ
The "First Well Known Rule" is identity ๐ช. That means the output of the rule is the Application Unique String itself, the FQDN whose authoritative server for a particular service you're seeking ๐.
4.3. Expected Output ๐
The expected output of this Application is the information you need to connect to the authoritative server(s) for an application service within a given domain ๐. That's the host, port, protocol, or URI, so basically everything you need to connect ๐.
4.4. Flags ๐ณ๏ธโ๐
This DDDS Application uses only 3 of the Flags defined for the URI/URN Resolution Application [5]: "S", "A", and "U" ๐ฏ. No other Flags are valid ๐ โโ๏ธ. If a client gets a NAPTR RR for a U-NAPTR-using application that contains any other flag, that NAPTR RR should be ignored, and processing continues with the next record (if there is one) ๐ซ.
These flags are for terminal lookups ๐. That means the Rule is the last one, and the flag decides what the next stage should be ๐ . The "S" flag means the output of this Rule is a FQDN with one or more SRV [3] records ๐ก. "A" means the output of the Rule is a domain name, and it should be used to look up address records for that domain ๐ . "U" means the output of the Rule is a URI that should be resolved to get access to the described service ๐ฆ.
Consistent with the DDDS algorithm, if the Flag string is empty, the next lookup is for another NAPTR record (for the replacement target) ๐.
4.5. Service Parameters ๐ง
Service Parameters for this Application take the form of a string of characters that follow this ABNF [1] ๐:
service-parms = [ [app-service] *(":" app-protocol)]
app-service = experimental-service / iana-registered-service
app-protocol = experimental-protocol / iana-registered-protocol
experimental-service = "x-" 1*30ALPHANUMSYM
experimental-protocol = "x-" 1*30ALPHANUMSYM
iana-registered-service = ALPHA *31ALPHANUMSYM
iana-registered-protocol = ALPHA *31ALPHANUMSYM
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9
SYM = %x2B / %x2D / %x2E ; "+" / "-" / "."
ALPHANUMSYM = ALPHA / DIGIT / SYM
; The app-service and app-protocol tags are limited to 32
; characters and must start with an alphabetic character.
; The service-parms are considered case-insensitive.
So the Service Parameters can be an empty string, just an app-service, or an app-service with one or more app-protocol specifications separated by the ":" symbol ๐ธ.
This is similar to, but not the same as, the syntax used in the URI DDDS application [5] ๐ฏ. The DDDS DNS database needs each DDDS application to define the syntax of its allowable service strings ๐. The syntax here is expanded to allow the characters that are valid in any URI scheme name (see [8]) ๐ค. And since "+" (the separator used in the RFC3404 service parameter string) is an allowed character for URI scheme names, ":" is chosen as the separator here โ๏ธ. Smart, right? ๐ง
4.5.1. Application Services ๐๏ธ
The "app-service" must be an IANA-registered service. See Section 5 for instructions on registering new application service tags ๐ฎ.
4.5.2. Application Protocols ๐
The protocol identifiers that are valid for the "app-protocol" production are standard, registered protocols. See Section 5 for instructions on registering new application protocol tags ๐ท๏ธ.
4.6. Valid Rules โ
Permitted rules are substitution rules and regular expressions of the following syntax (i.e., a regular expression that replaces the domain name with a URI) ๐:
u-naptr-regexp = "!.*!"<URI>"!"
Here, <URI> is as defined in STD 66 [8], the URI syntax specification ๐.
4.7. Valid Databases ๐๏ธ
Right now, only one DDDS Database is specified for this Application ๐โโ๏ธ. [4] specifies a DDDS Database that uses the NAPTR DNS resource record to contain the rewrite rules ๐. The Keys for this database are encoded as domain names ๐.
The First Well Known Rule produces a domain name, and that's the Key used for the first lookup, where the NAPTR records for that domain are requested ๐.
DNS servers MAY interpret Flag values and use that information to include appropriate NAPTR, SRV, or A records in the Additional Information portion of the DNS packet ๐ฆ. Clients are encouraged to check for additional information, but they aren't required to do so ๐คทโโ๏ธ. For more on NAPTR records and the Additional Information section of a DNS response packet, see the Additional Information Processing section of [4] ๐.
5. IANA Considerations โจ
okay bestie, so this one's kinda chill for IANA ๐ฆ This document doesn't actually put any requirements on IANA itself. What it does do is set up the foundation that U-NAPTR services can use to tap into the existing IANA registries for application service tags and application protocol tags (the ones defined in RFC 3958 [2]). Iconic, right? ๐
Okay now the "x-" thing, this is giving experimental vibes ๐งช All application service and protocol tags that start with x- are considered experimental, and there's NO provision to stop people from using the same string twice. So like... if two people pick the same x- tag, nobody's stopping them ๐ Use them at your own risk, bestie ๐
Everything else (so anything that doesn't start with x-) gets registered using the "specification required" option from [6], and the "specification" has to be an RFC of any category ๐
There are no further restrictions on the tags, except they MUST conform to the syntax defined above (Section 4.5). Like, that's the only rule ๐
The defining RFC MUST clearly identify and describe, for each tag being registered:
- Application protocol or service tag ๐ท๏ธ
- Intended usage ๐ฏ
- Interoperability considerations ๐ค
- Security considerations (see Section 6 of this document for further discussion of the types of considerations that are applicable) ๐
- Any relevant related publications ๐
The defining RFC MAY also include further application-specific restrictions, like limitations on the types of URIs that can be returned for the application service ๐
6. Security Considerations ๐
okay this section is SO important, pls pay attention ๐ญ
U-NAPTR has the same security considerations as S-NAPTR, so check out Section 8 of [2] for those ๐ซถ U-NAPTR also has an extra consideration: resolving the URIs you get back from the DDDS resolution has its own set of security implications. That stuff is covered in the URI spec (especially Section 7 of [8]) โจ
Here's the big picture: using DNSSEC, client software can be confident that the URI it got via U-NAPTR is the exact one the domain's administrator specified, and it came from that domain ๐ BUT the validity of the service you reach by resolving that URI is a totally separate matter, and it's down to URI resolution security practices ๐จ So DNSSEC covers the URI, not the service behind it, babe ๐
7. Acknowledgements ๐ธ
Huge thanks to Martin Thomson, John Klensin, Bernard Aboba, Alfred Hoenes, Dan Romascanu, Suresh Krishnan, and Lars Eggert for reviewing earlier versions and catching errors! ๐ซถ๐ You all are literally the MVPs ๐
8. References ๐
8.1. Normative References
- [1] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005. ๐งฉ
- [2] Daigle, L. and A. Newton, "Domain-Based Application Service Location Using SRV RRs and the Dynamic Delegation Discovery Service (DDDS)", RFC 3958, January 2005. ๐ฆ
- [3] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, February 2000. ๐
- [4] Mealling, M., "Dynamic Delegation Discovery System (DDDS) Part Three: The Domain Name System (DNS) Database", RFC 3403, October 2002. ๐
- [5] Mealling, M., "Dynamic Delegation Discovery System (DDDS) Part Four: The Uniform Resource Identifiers (URI)", RFC 3404, October 2002. ๐
- [6] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998. ๐
8.2. Informative References
- [7] Mealling, M., "Dynamic Delegation Discovery System (DDDS) Part One: The Comprehensive DDDS", RFC 3401, October 2002. ๐
- [8] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", RFC 3986, STD 66, January 2005. โจ
- [9] Malamud, C., "Attaching Meaning to Solicitation Class Keywords", RFC 4095, May 2005. ๐
Author's Address ๐๏ธ
Leslie L. Daigle Cisco Systems 13615 Dulles Technology Drive Herndon, VA 20171 US
EMail: ledaigle@cisco.com; leslie@thinkingcat.com ๐
Full Copyright Statement โ๏ธ
Copyright (C) The IETF Trust (2007).
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.
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, THE IETF TRUST 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.
Intellectual Property ๐ง
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.
Acknowledgement ๐
Funding for the RFC Editor function is currently provided by the Internet Society. ๐
๐ฆ where this page comes from
- ietf: rfc4848 2007-04
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms