rfc6763-from-stuart.txt | rfc6763.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) S. Cheshire | Internet Engineering Task Force (IETF) S. Cheshire | |||
Request for Comments: 6763 M. Krochmal | Request for Comments: 6763 M. Krochmal | |||
Category: Standards Track Apple Inc. | Category: Standards Track Apple Inc. | |||
ISSN: 2070-1721 September 2012 | ISSN: 2070-1721 December 2012 | |||
DNS-Based Service Discovery | DNS-Based Service Discovery | |||
Abstract | Abstract | |||
This document specifies how DNS resource records are named and | This document specifies how DNS resource records are named and | |||
structured to facilitate service discovery. Given a type of service | structured to facilitate service discovery. Given a type of service | |||
that a client is looking for, and a domain in which the client is | that a client is looking for, and a domain in which the client is | |||
looking for that service, this mechanism allows clients to discover | looking for that service, this mechanism allows clients to discover | |||
a list of named instances of that desired service, using standard | a list of named instances of that desired service, using standard | |||
DNS queries. This mechanism is referred to as DNS-based Service | DNS queries. This mechanism is referred to as DNS-based Service | |||
Discovery, or DNS-SD. | Discovery, or DNS-SD. | |||
Status of This Memo | Status of This Memo | |||
This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
(IETF). It represents the consensus of the IETF community. It has | (IETF). It represents the consensus of the IETF community. It has | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
skipping to change at page 2, line 12 | skipping to change at page 2, line 12 | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction ....................................................3 | 1. Introduction ....................................................3 | |||
2. Conventions and Terminology Used in This Document ...............5 | 2. Conventions and Terminology Used in This Document ...............5 | |||
3. Design Goals ....................................................5 | 3. Design Goals ....................................................5 | |||
4. Service Instance Enumeration (Browsing) .........................6 | 4. Service Instance Enumeration (Browsing) .........................6 | |||
4.1. Structured Service Instance Names ..........................6 | 4.1. Structured Service Instance Names ..........................6 | |||
4.2. User Interface Presentation ................................9 | 4.2. User Interface Presentation ................................6 | |||
4.3. Internal Handling of Names .................................9 | 4.3. Internal Handling of Names .................................9 | |||
5. Service Instance Resolution ....................................10 | 5. Service Instance Resolution .....................................9 | |||
6. Data Syntax for DNS-SD TXT Records .............................10 | 6. Data Syntax for DNS-SD TXT Records .............................10 | |||
6.1. General Format Rules for DNS TXT Records ..................11 | 6.1. General Format Rules for DNS TXT Records ..................11 | |||
6.2. DNS-SD TXT Record Size ....................................12 | 6.2. DNS-SD TXT Record Size ....................................11 | |||
6.3. DNS TXT Record Format Rules for Use in DNS-SD .............13 | 6.3. DNS TXT Record Format Rules for Use in DNS-SD .............13 | |||
6.4. Rules for Keys in DNS-SD Key/Value Pairs ..................14 | 6.4. Rules for Keys in DNS-SD Key/Value Pairs ..................14 | |||
6.5. Rules for Values in DNS-SD Key/Value Pairs ................16 | 6.5. Rules for Values in DNS-SD Key/Value Pairs ................16 | |||
6.6. Example TXT Record ........................................17 | 6.6. Example TXT Record ........................................17 | |||
6.7. Version Tag ...............................................17 | 6.7. Version Tag ...............................................17 | |||
6.8. Service Instances with Multiple TXT Records ...............18 | 6.8. Service Instances with Multiple TXT Records ...............18 | |||
7. Service Names ..................................................18 | 7. Service Names ..................................................19 | |||
7.1. Selective Instance Enumeration (Subtypes) .................21 | 7.1. Selective Instance Enumeration (Subtypes) .................21 | |||
7.2. Service Name Length Limits ................................23 | 7.2. Service Name Length Limits ................................23 | |||
8. Flagship Naming ................................................24 | 8. Flagship Naming ................................................25 | |||
9. Service Type Enumeration .......................................26 | 9. Service Type Enumeration .......................................27 | |||
10. Populating the DNS with Information ...........................27 | 10. Populating the DNS with Information ...........................27 | |||
11. Discovery of Browsing and Registration Domains (Domain | 11. Discovery of Browsing and Registration Domains (Domain | |||
Enumeration) ..................................................27 | Enumeration) ..................................................28 | |||
12. DNS Additional Record Generation ..............................29 | 12. DNS Additional Record Generation ..............................30 | |||
12.1. PTR Records ..............................................30 | 12.1. PTR Records ..............................................30 | |||
12.2. SRV Records ..............................................30 | 12.2. SRV Records ..............................................30 | |||
12.3. TXT Records ..............................................30 | 12.3. TXT Records ..............................................31 | |||
12.4. Other Record Types .......................................30 | 12.4. Other Record Types .......................................31 | |||
13. Working Examples ..............................................30 | 13. Working Examples ..............................................31 | |||
13.1. What web pages are being advertised from dns-sd.org? .....31 | 13.1. What web pages are being advertised from dns-sd.org? .....31 | |||
13.2. What printer-configuration web pages are there? ..........31 | 13.2. What printer-configuration web pages are there? ..........31 | |||
13.3. How do I access the web page called "Service | 13.3. How do I access the web page called "Service | |||
Discovery"? ..............................................31 | Discovery"? ..............................................32 | |||
14. IPv6 Considerations ...........................................32 | 14. IPv6 Considerations ...........................................32 | |||
15. Security Considerations .......................................32 | 15. Security Considerations .......................................32 | |||
16. IANA Considerations ...........................................32 | 16. IANA Considerations ...........................................32 | |||
17. Acknowledgments ...............................................33 | 17. Acknowledgments ...............................................33 | |||
18. References ....................................................33 | 18. References ....................................................33 | |||
18.1. Normative References .....................................33 | 18.1. Normative References .....................................33 | |||
18.2. Informative References ...................................34 | 18.2. Informative References ...................................34 | |||
Appendix A. Rationale for Using DNS as a Basis for Service | Appendix A. Rationale for Using DNS as a Basis for Service | |||
Discovery .............................................36 | Discovery .............................................37 | |||
Appendix B. Ordering of Service Instance Name Components ..........38 | Appendix B. Ordering of Service Instance Name Components ..........38 | |||
B.1. Semantic Structure ........................................38 | B.1. Semantic Structure ........................................38 | |||
B.2. Network Efficiency ........................................39 | B.2. Network Efficiency ........................................39 | |||
B.3. Operational Flexibility ...................................39 | B.3. Operational Flexibility ...................................39 | |||
Appendix C. What You See Is What You Get ..........................39 | Appendix C. What You See Is What You Get ..........................40 | |||
Appendix D. Choice of Factory-Default Names .......................41 | Appendix D. Choice of Factory-Default Names .......................42 | |||
Appendix E. Name Encodings in the Domain Name System ..............43 | Appendix E. Name Encodings in the Domain Name System ..............44 | |||
Appendix F. "Continuous Live Update" Browsing Model ...............44 | Appendix F. "Continuous Live Update" Browsing Model ...............45 | |||
Appendix G. Deployment History ....................................46 | Appendix G. Deployment History ....................................47 | |||
1. Introduction | 1. Introduction | |||
This document specifies how DNS resource records are named and | This document specifies how DNS resource records are named and | |||
structured to facilitate service discovery. Given a type of service | structured to facilitate service discovery. Given a type of service | |||
that a client is looking for, and a domain in which the client is | that a client is looking for, and a domain in which the client is | |||
looking for that service, this mechanism allows clients to discover | looking for that service, this mechanism allows clients to discover a | |||
a list of named instances of that desired service, using standard | list of named instances of that desired service, using standard DNS | |||
DNS queries. This is mechanism referred to as DNS-based Service | queries. This mechanism is referred to as DNS-based Service | |||
Discovery, or DNS-SD. | Discovery, or DNS-SD. | |||
This document proposes no change to the structure of DNS messages, | This document proposes no change to the structure of DNS messages, | |||
and no new operation codes, response codes, resource record types, or | and no new operation codes, response codes, resource record types, or | |||
any other new DNS protocol values. | any other new DNS protocol values. | |||
This document specifies that a particular service instance can be | This document specifies that a particular service instance can be | |||
described using a DNS SRV [RFC2782] and DNS TXT [RFC1035] record. | described using a DNS SRV [RFC2782] and DNS TXT [RFC1035] record. | |||
The SRV record has a name of the form "<Instance>.<Service>.<Domain>" | The SRV record has a name of the form "<Instance>.<Service>.<Domain>" | |||
and gives the target host and port where the service instance can be | and gives the target host and port where the service instance can be | |||
skipping to change at page 4, line 13 | skipping to change at page 4, line 13 | |||
operation may be achieved by simply having the device register its | operation may be achieved by simply having the device register its | |||
services in a default registration domain learned from the network | services in a default registration domain learned from the network | |||
(see Section 11, "Discovery of Browsing and Registration Domains"), | (see Section 11, "Discovery of Browsing and Registration Domains"), | |||
but this is the exception and usually security credentials will be | but this is the exception and usually security credentials will be | |||
required to perform DNS updates. | required to perform DNS updates. | |||
Note that when using DNS-SD with Unicast DNS, the Unicast DNS-SD | Note that when using DNS-SD with Unicast DNS, the Unicast DNS-SD | |||
service does NOT have to be provided by the same DNS server hardware | service does NOT have to be provided by the same DNS server hardware | |||
that is currently providing an organization's conventional host name | that is currently providing an organization's conventional host name | |||
lookup service. While many people think of "DNS" exclusively in the | lookup service. While many people think of "DNS" exclusively in the | |||
context of mapping host names to IP addresses, in fact | context of mapping host names to IP addresses, in fact, "the DNS is a | |||
"the DNS is a general (if somewhat limited) hierarchical | general (if somewhat limited) hierarchical database, and can store | |||
database, and can store almost any kind of data, for almost any | almost any kind of data, for almost any purpose" [RFC2181]. By | |||
purpose" [RFC2181]. By delegating the "_tcp" and "_udp" subdomains, | delegating the "_tcp" and "_udp" subdomains, all the workload related | |||
all the workload related to DNS-SD can be offloaded to a different | to DNS-SD can be offloaded to a different machine. This flexibility, | |||
machine. This flexibility, to handle DNS-SD on the main DNS server | to handle DNS-SD on the main DNS server or not, at the network | |||
or not, at the network administrator's discretion, is one of the | administrator's discretion, is one of the benefits of using DNS. | |||
benefits of using DNS. | ||||
Even when the DNS-SD functions are delegated to a different machine, | Even when the DNS-SD functions are delegated to a different machine, | |||
the benefits of using DNS remain: it is mature technology, well | the benefits of using DNS remain: it is mature technology, well | |||
understood, with multiple independent implementations from different | understood, with multiple independent implementations from different | |||
vendors, a wide selection of books published on the subject, and an | vendors, a wide selection of books published on the subject, and an | |||
established workforce experienced in its operation. In contrast, | established workforce experienced in its operation. In contrast, | |||
adopting some other service discovery technology would require every | adopting some other service discovery technology would require every | |||
site in the world to install, learn, configure, operate, and maintain | site in the world to install, learn, configure, operate, and maintain | |||
some entirely new and unfamiliar server software. Faced with these | some entirely new and unfamiliar server software. Faced with these | |||
obstacles, it seems unlikely that any other service discovery | obstacles, it seems unlikely that any other service discovery | |||
technology could hope to compete with the ubiquitous deployment that | technology could hope to compete with the ubiquitous deployment that | |||
DNS already enjoys. For further discussion see Appendix A, | DNS already enjoys. For further discussion, see Appendix A, | |||
"Rationale for Using DNS as a Basis for Service Discovery". | "Rationale for Using DNS as a Basis for Service Discovery". | |||
This document is written for two audiences: for developers creating | This document is written for two audiences: for developers creating | |||
application software that offers or accesses services on the network, | application software that offers or accesses services on the network, | |||
and for developers creating DNS-SD libraries to implement the | and for developers creating DNS-SD libraries to implement the | |||
advertising and discovery mechanisms. For both audiences, | advertising and discovery mechanisms. For both audiences, | |||
understanding the entire document is helpful. For developers | understanding the entire document is helpful. For developers | |||
creating application software, this document provides guidance on | creating application software, this document provides guidance on | |||
choosing instance names, service names, and other aspects that play a | choosing instance names, service names, and other aspects that play a | |||
role in creating a good overall user experience. However, also | role in creating a good overall user experience. However, also | |||
skipping to change at page 15, line 15 | skipping to change at page 15, line 18 | |||
The characters of a key MUST be printable US-ASCII values (0x20-0x7E) | The characters of a key MUST be printable US-ASCII values (0x20-0x7E) | |||
[RFC20], excluding '=' (0x3D). | [RFC20], excluding '=' (0x3D). | |||
Spaces in the key are significant, whether leading, trailing, or in | Spaces in the key are significant, whether leading, trailing, or in | |||
the middle -- so don't include any spaces unless you really intend | the middle -- so don't include any spaces unless you really intend | |||
that. | that. | |||
Case is ignored when interpreting a key, so "papersize=A4", | Case is ignored when interpreting a key, so "papersize=A4", | |||
"PAPERSIZE=A4", and "Papersize=A4" are all identical. | "PAPERSIZE=A4", and "Papersize=A4" are all identical. | |||
If there is no '=' in a DNS-SD TXT record string, then it is a boolean | If there is no '=' in a DNS-SD TXT record string, then it is a | |||
attribute, simply identified as being present, with no value. | boolean attribute, simply identified as being present, with no value. | |||
A given key SHOULD NOT appear more than once in a TXT record. The | A given key SHOULD NOT appear more than once in a TXT record. The | |||
reason for this simplifying rule is to facilitate the creation of | reason for this simplifying rule is to facilitate the creation of | |||
client libraries that parse the TXT record into an internal data | client libraries that parse the TXT record into an internal data | |||
structure (such as a hash table or dictionary object that maps from | structure (such as a hash table or dictionary object that maps from | |||
keys to values) and then make that abstraction available to client | keys to values) and then make that abstraction available to client | |||
code. The rule that a given key may not appear more than once | code. The rule that a given key may not appear more than once | |||
simplifies these abstractions because they aren't required to support | simplifies these abstractions because they aren't required to support | |||
the case of returning more than one value for a given key. | the case of returning more than one value for a given key. | |||
skipping to change at page 35, line 45 | skipping to change at page 36, line 17 | |||
2007. | 2007. | |||
[RFC6106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli, | [RFC6106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli, | |||
"IPv6 Router Advertisement Options for DNS | "IPv6 Router Advertisement Options for DNS | |||
Configuration", RFC 6106, November 2010. | Configuration", RFC 6106, November 2010. | |||
[RFC6281] Cheshire, S., Zhu, Z., Wakikawa, R., and L. Zhang, | [RFC6281] Cheshire, S., Zhu, Z., Wakikawa, R., and L. Zhang, | |||
"Understanding Apple's Back to My Mac (BTMM) Service", | "Understanding Apple's Back to My Mac (BTMM) Service", | |||
RFC 6281, June 2011. | RFC 6281, June 2011. | |||
[RFC6709] Carpenter, B., Aboba, B., and S. Cheshire, "Design | [RFC6709] Carpenter, B., Aboba, B., Ed., and S. Cheshire, "Design | |||
Considerations for Protocol Extensions", RFC 6709, | Considerations for Protocol Extensions", RFC 6709, | |||
September 2012. | September 2012. | |||
[RFC6760] Cheshire, S. and M. Krochmal, "Requirements for a | [RFC6760] Cheshire, S. and M. Krochmal, "Requirements for a | |||
Protocol to Replace the AppleTalk Name Binding Protocol | Protocol to Replace the AppleTalk Name Binding Protocol | |||
(NBP)", RFC 6760, September 2012. | (NBP)", RFC 6760, December 2012. | |||
[RFC6762] Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762, | [RFC6762] Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762, | |||
May 2012. | December 2012. | |||
[SN] IANA, "Service Name and Transport Protocol Port Number | [SN] IANA, "Service Name and Transport Protocol Port Number | |||
Registry", <http://www.iana.org/assignments/service- | Registry", <http://www.iana.org/assignments/service- | |||
names-port-numbers/>. | names-port-numbers/>. | |||
[SOAP] Mitra, N., "SOAP Version 1.2 Part 0: Primer", W3C | [SOAP] Mitra, N., "SOAP Version 1.2 Part 0: Primer", W3C | |||
Proposed Recommendation 24 June 2003, | Proposed Recommendation 24 June 2003, | |||
<http://www.w3.org/TR/2003/REC-soap12-part0-20030624>. | <http://www.w3.org/TR/2003/REC-soap12-part0-20030624>. | |||
[Unicode6] The Unicode Consortium. The Unicode Standard, Version | [Unicode6] The Unicode Consortium. The Unicode Standard, Version | |||
skipping to change at page 42, line 23 | skipping to change at page 42, line 50 | |||
Xerox Phaser 6200DX | Xerox Phaser 6200DX | |||
To make the case for why adding long, ugly factory-unique serial | To make the case for why adding long, ugly factory-unique serial | |||
numbers to the end of names is neither necessary nor desirable, | numbers to the end of names is neither necessary nor desirable, | |||
consider the cases where the user has (a) only one network printer, | consider the cases where the user has (a) only one network printer, | |||
(b) two network printers, and (c) many network printers. | (b) two network printers, and (c) many network printers. | |||
(a) In the case where the user has only one network printer, | (a) In the case where the user has only one network printer, | |||
a simple name like (to use a vendor-neutral example) | a simple name like (to use a vendor-neutral example) | |||
"Printer" is more user-friendly than an ugly name like | "Printer" is more user-friendly than an ugly name like | |||
"Printer_0001E68C74FB". Appending ugly hexadecimal goop | "Printer_0001E68C74FB". Appending ugly hexadecimal goop to the | |||
to the end of the name to make sure the name is unique is | end of the name to make sure the name is unique is irrelevant to | |||
irrelevant to a user who only has one printer anyway. | a user who only has one printer anyway. | |||
(b) In the case where the user gets a second network printer, having | (b) In the case where the user gets a second network printer, having | |||
the new printer detect that the name "Printer" is already in use | the new printer detect that the name "Printer" is already in use | |||
and automatically name itself "Printer (2)" instead, provides a | and automatically name itself "Printer (2)" instead, provides a | |||
good user experience. For most users, remembering that the old | good user experience. For most users, remembering that the old | |||
printer is "Printer" and the new one is "Printer (2)" is easy | printer is "Printer" and the new one is "Printer (2)" is easy | |||
and intuitive. Seeing a printer called "Printer_0001E68C74FB" | and intuitive. Seeing a printer called "Printer_0001E68C74FB" | |||
and another called "Printer_00306EC3FD1C" is a lot less helpful. | and another called "Printer_00306EC3FD1C" is a lot less helpful. | |||
(c) In the case of a network with ten network printers, seeing a | (c) In the case of a network with ten network printers, seeing a | |||
skipping to change at page 46, line 12 | skipping to change at page 47, line 12 | |||
the old wireless access point, and add all the services | the old wireless access point, and add all the services | |||
discovered via the new one. | discovered via the new one. | |||
Appendix G. Deployment History | Appendix G. Deployment History | |||
In July 1997, in an email to the net-thinkers@thumper.vmeng.com | In July 1997, in an email to the net-thinkers@thumper.vmeng.com | |||
mailing list, Stuart Cheshire first proposed the idea of running the | mailing list, Stuart Cheshire first proposed the idea of running the | |||
AppleTalk Name Binding Protocol [RFC6760] over IP. As a result of | AppleTalk Name Binding Protocol [RFC6760] over IP. As a result of | |||
this and related IETF discussions, the IETF Zeroconf working group | this and related IETF discussions, the IETF Zeroconf working group | |||
was chartered September 1999. After various working group | was chartered September 1999. After various working group | |||
discussions and other informal IETF discussions, several Internet | discussions and other informal IETF discussions, several Internet- | |||
Drafts were written that were loosely related to the general themes | Drafts were written that were loosely related to the general themes | |||
of DNS and multicast, but did not address the service discovery | of DNS and multicast, but did not address the service discovery | |||
aspect of NBP. | aspect of NBP. | |||
In April 2000, Stuart Cheshire registered IPv4 multicast address | In April 2000, Stuart Cheshire registered IPv4 multicast address | |||
224.0.0.251 with IANA and began writing code to test and develop the | 224.0.0.251 with IANA and began writing code to test and develop the | |||
idea of performing NBP-like service discovery using Multicast DNS, | idea of performing NBP-like service discovery using Multicast DNS, | |||
which was documented in a group of three Internet Drafts: | which was documented in a group of three Internet-Drafts: | |||
o "Requirements for a Protocol to Replace the AppleTalk Name Binding | o "Requirements for a Protocol to Replace the AppleTalk Name Binding | |||
Protocol (NBP)" [RFC6760] is an overview explaining the AppleTalk | Protocol (NBP)" [RFC6760] is an overview explaining the AppleTalk | |||
Name Binding Protocol, because many in the IETF community had | Name Binding Protocol, because many in the IETF community had | |||
little first-hand experience using AppleTalk, and confusion in the | little first-hand experience using AppleTalk, and confusion in the | |||
IETF community about what AppleTalk NBP did was causing confusion | IETF community about what AppleTalk NBP did was causing confusion | |||
about what would be required in an IP-based replacement. | about what would be required in an IP-based replacement. | |||
o "Discovering Named Instances of Abstract Services using DNS" | o "Discovering Named Instances of Abstract Services using DNS" | |||
[NIAS], which later became this document, proposed a way to | [NIAS], which later became this document, proposed a way to | |||
End of changes. 22 change blocks. | ||||
42 lines changed or deleted | 41 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |