draft-ietf-core-rd-dns-sd-01.txt   draft-ietf-core-rd-dns-sd-02.txt 
CoRE K. Lynn CoRE K. Lynn
Internet-Draft P. van der Stok Internet-Draft P. van der Stok
Intended status: Standards Track Consultants Intended status: Standards Track Consultants
Expires: September 6, 2018 M. Koster Expires: January 3, 2019 M. Koster
SmartThings SmartThings
C. Amsuess C. Amsuess
Energy Harvesting Solutions Energy Harvesting Solutions
March 05, 2018 July 02, 2018
CoRE Resource Directory: DNS-SD mapping CoRE Resource Directory: DNS-SD mapping
draft-ietf-core-rd-dns-sd-01 draft-ietf-core-rd-dns-sd-02
Abstract Abstract
Resource and service discovery are complimentary. Resource discovery Resource and service discovery are complimentary. Resource discovery
provides fine-grained detail about the content of a server, while provides fine-grained detail about the content of a server, while
service discovery can provide a scalable method to locate servers in service discovery can provide a scalable method to locate servers in
large networks. This document defines a method for mapping between large networks. This document defines a method for mapping between
CoRE Link Format attributes and DNS-Based Service Discovery fields to CoRE Link Format attributes and DNS-Based Service Discovery fields to
facilitate the use of either method to locate RESTful service facilitate the use of either method to locate RESTful service
interfaces (APIs) in mixed HTTP/CoAP environments. interfaces (APIs) in heterogeneous HTTP/CoAP environments.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference 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."
This Internet-Draft will expire on September 6, 2018. This Internet-Draft will expire on January 3, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
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 . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Resource Discovery . . . . . . . . . . . . . . . . . . . 3 1.2. CoRE Resource Discovery . . . . . . . . . . . . . . . . . 3
1.3. Resource Directories . . . . . . . . . . . . . . . . . . 4 1.3. CoRE Resource Directories . . . . . . . . . . . . . . . . 4
1.4. DNS-Based Service Discovery . . . . . . . . . . . . . . . 4 1.4. DNS-Based Service Discovery . . . . . . . . . . . . . . . 5
2. New Link-Format Attributes . . . . . . . . . . . . . . . . . 5 2. New Link-Format Attributes . . . . . . . . . . . . . . . . . 6
2.1. Resource Instance attribute "ins" . . . . . . . . . . . . 6 2.1. Resource Instance attribute "ins" . . . . . . . . . . . . 6
2.2. Export attribute "exp" . . . . . . . . . . . . . . . . . 6 2.2. Export attribute "exp" . . . . . . . . . . . . . . . . . 7
3. Mapping CoRE Link Attributes to DNS-SD Record Fields . . . . 6 3. Mapping CoRE Link Attributes to DNS-SD Record Fields . . . . 7
3.1. Mapping Resource Instance attribute "ins" to <Instance> . 6 3.1. Mapping Resource Instance attribute "ins" to <Instance> . 7
3.2. Mapping Resource Type attribute "rt" to <ServiceType> . . 7 3.2. Mapping Resource Type attribute "rt" to <ServiceType> . . 7
3.3. Domain mapping . . . . . . . . . . . . . . . . . . . . . 7 3.3. Domain mapping . . . . . . . . . . . . . . . . . . . . . 8
3.4. TXT Record key=value strings . . . . . . . . . . . . . . 7 3.4. TXT Record key=value strings . . . . . . . . . . . . . . 8
3.5. Importing resource links into DNS-SD . . . . . . . . . . 8 3.5. Importing resource links into DNS-SD . . . . . . . . . . 9
4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4. IANA considerations . . . . . . . . . . . . . . . . . . . . . 9
4.1. DNS entries . . . . . . . . . . . . . . . . . . . . . . . 9 5. Security considerations . . . . . . . . . . . . . . . . . . . 9
5. IANA considerations . . . . . . . . . . . . . . . . . . . . . 9 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 10
6. Security considerations . . . . . . . . . . . . . . . . . . . 9 6.1. Normative References . . . . . . . . . . . . . . . . . . 10
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 6.2. Informative References . . . . . . . . . . . . . . . . . 11
7.1. Normative References . . . . . . . . . . . . . . . . . . 9 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.2. Informative References . . . . . . . . . . . . . . . . . 10
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 11
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11
1. Introduction 1. Introduction
The Constrained RESTful Environments (CoRE) working group aims at The Constrained RESTful Environments (CoRE) working group aims at
realizing the REST architecture in a suitable form for the most realizing the REST architecture in a suitable form for the most
constrained devices (e.g. 8-bit microcontrollers with limited RAM and constrained devices (e.g. 8-bit microcontrollers with limited RAM and
ROM) and networks (e.g. 6LoWPAN). CoRE is aimed at machine-to- ROM) and networks (e.g. 6LoWPAN). CoRE is aimed at machine-to-
machine (M2M) applications such as smart energy and building machine (M2M) applications such as smart energy and building
automation. The main deliverable of CoRE is the Constrained automation. The main deliverable of CoRE is the Constrained
Application Protocol (CoAP) specification [RFC7252]. Application Protocol (CoAP) specification [RFC7252].
Automated discovery of resources hosted by a constrained server is Automated discovery of resources hosted by a constrained server is
critical in M2M applications where human intervention is minimal and critical in M2M applications where human intervention is minimal and
static interfaces result in brittleness. CoRE Resource Discovery is static interfaces result in brittleness. CoRE Resource Discovery is
intended to support fine-grained discovery of hosted resources, their intended to support fine-grained discovery of hosted resources, their
attributes, and possibly other resource relations [RFC6690]. attributes, and possibly other resource relations [RFC6690].
In contrast, service discovery generally refers to a coarse-grained In contrast to resource discovery, service discovery generally refers
resolution of an end-point's IP address, port number, and protocol. to a coarser-grained resolution of an endpoint's IP address, port
This definition may be extended to include multi-function devices, number, and protocol. This definition may be extended to include
where the result of the discovery process may include a path to a multi-function devices, where the result of the discovery process may
resource representing a RESTful service interface and possibly a include a path to a resource representing a RESTful service interface
reference to a description of the interface such as a JSON Hyper- and possibly a reference to a description of the interface such as a
Schema document [I-D.handrews-json-schema-hyperschema]. JSON Hyper-Schema document [I-D.handrews-json-schema-hyperschema] per
function.
Resource and service discovery are complimentary in the case of large Resource and service discovery are complimentary in the case of large
networks, where the latter can facilitate scaling. This document networks, where the latter can facilitate scaling. This document
defines a mapping between CoRE Link Format attributes and DNS-Based defines a mapping between CoRE Link Format attributes and DNS-Based
Service Discovery (DNS-SD) [RFC6763] fields that permits discovery of Service Discovery (DNS-SD) [RFC6763] fields that permits discovery of
CoAP services by either means. It also addresses the CoRE charter CoAP services by either method. It also addresses the CoRE charter
goal to interoperate with DNS-SD. goal to interoperate with DNS-SD.
1.1. Terminology 1.1. 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", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
[RFC2119]. The term "byte" is used in its now customary sense as a [RFC2119]. The term "byte" is used in its now customary sense as a
synonym for "octet". synonym for "octet".
This specification requires readers to be familiar with all the terms This specification requires readers to be familiar with all the terms
and concepts that are discussed in {-link} and [RFC6690]. Readers and concepts that are discussed in [RFC6690] and [RFC8288]. Readers
should also be familiar with the terms and concepts discussed in should also be familiar with the terms and concepts discussed in
[RFC7252]. To describe the REST interfaces defined in this [RFC7252]. To describe the REST interfaces defined in this
specification, the URI Template format is used [RFC6570]. specification, the URI Template format is used [RFC6570].
This specification also makes use of the terminology of This specification also incorporates the terminology of
[I-D.ietf-core-resource-directory]. [I-D.ietf-core-resource-directory].
1.2. Resource Discovery 1.2. CoRE Resource Discovery
The main function of Resource Discovery is to provide Universal [RFC8288] defines a Web Link (link) as a typed connection between two
Resource Identifiers (URIs, also called "links") for the resources resources, comprised of:
hosted by the server, complemented by attributes about those
resources and perhaps additional link relations. In CoRE this o a link context, o a link relation type (see Section 2.1 of
[RFC8288], o a link target, and o optionally, target attributes (see
Section 2.2 of [RFC8288]).
A link can be viewed as a statement of the form "link context has a
link relation type resource at link target, which (optionally) has
target attributes", where link target (and context) is typically a
Universal Resource Identifier (URI [RFC3986]).
For example, "https://www.example.com/" has a "canonical" resource at
"https://example.com", which has a "type" of "text/html".
The main function of Resource Discovery is to provide links for the
resources hosted by the server, complemented by attributes about
those resources and perhaps additional link relations. In CoRE this
collection of links and attributes is itself a resource (as opposed collection of links and attributes is itself a resource (as opposed
to HTTP headers delivered with a specific resource). to HTTP headers delivered with a specific resource).
[RFC6690] specifies a link format for use in CoRE Resource Discovery [RFC6690] specifies a link format for use in CoRE Resource Discovery
by extending the HTTP Link Header Format [RFC8288] to describe these by extending the HTTP Link Header Format [RFC8288] to describe these
link descriptions. The CoRE Link Format is carried as a payload and link descriptions. The CoRE Link Format is carried as a payload and
is assigned an Internet media type. A well-known URI "/.well-known/ is assigned an Internet media type. CoRE Resource Discovery is
core" is defined as a default entry-point for requesting the list of accomplished by sending a GET request to the well-known URI "/.well-
links about resources hosted by a server, and thus performing CoRE known/core", which is defined as a default entry-point for requesting
Resource Discovery. the collection of links about resources hosted by a server.
Resource Discovery can be performed either via unicast or multicast. Resource Discovery can be performed either via unicast or multicast.
When a server's IP address is already known, either a priori or When a server's IP address is already known, either a priori or
resolved via the Domain Name System (DNS) [RFC1034][RFC1035], unicast resolved via the Domain Name System (DNS) [RFC1034][RFC1035], unicast
discovery is performed in order to locate a URI for the resource of discovery is performed in order to locate a URI for the resource of
interest. This is performed using a GET to /.well-known/core on the interest. This is performed using a GET to /.well-known/core on the
server, which returns a payload in the CoRE Link Format. A client server, which returns a payload in the CoRE Link Format. A client
would then match the appropriate Resource Type, Interface would then match the appropriate Resource Type, Interface
Description, and possible Content-Type [RFC2045] for its application. Description, and possible Content-Type [RFC2045] for its application.
These attributes may also be included in the query string in order to These attributes may also be included in the query string in order to
filter the number of links returned in a response. filter the number of links returned in a response.
1.3. Resource Directories 1.3. CoRE Resource Directories
In many M2M scenarios, direct discovery of resources is not practical In many M2M scenarios, direct discovery of resources is not practical
due to sleeping nodes, limited bandwidth, or networks where multicast due to sleeping nodes, limited bandwidth, or networks where multicast
traffic is inefficient. These problems can be solved by deploying a traffic is inefficient. These problems can be solved by deploying a
network element called a Resource Directory (RD), which hosts network element called a Resource Directory (RD), which hosts
descriptions of resources held on other servers (referred to as "end- descriptions of resources held on other servers (referred to as "end-
points") and allows lookups to be performed for those resources. An points") and allows lookups to be performed for those resources. An
end-point is a web server associated with specific IP address and endpoint is a web server associated with specific IP address and
port; thus a physical device may host one or more end-points. End- port; thus a physical device may host one or more endpoints. End-
points may also act as clients. points may also act as clients.
The Resource Directory implements a set of REST interfaces for end- The Resource Directory implements a set of REST interfaces for end-
points to register and maintain sets of Web Links, called resource points to register and maintain collections of links, called resource
directory entries. [I-D.ietf-core-resource-directory] specifies the directory entries. [I-D.ietf-core-resource-directory] specifies the
web interfaces that an RD supports in order for web servers to web interfaces that an RD supports in order for web servers to
discover the RD and to register, maintain, lookup and remove resource discover the RD and to register, maintain, lookup and remove resource
descriptions; for the RD to validate entries; and for clients to descriptions; for the RD to validate entries; and for clients to
lookup resources from the RD. Furthermore, new link attributes lookup resources from the RD. Furthermore, new link attributes
useful in conjunction with an RD are defined. useful in conjunction with an RD are defined.
1.4. DNS-Based Service Discovery 1.4. DNS-Based Service Discovery
DNS-Based Service Discovery (DNS-SD) defines a conventional method of DNS-Based Service Discovery (DNS-SD) defines a conventional method of
configuring DNS PTR, SRV, and TXT resource records to facilitate naming and configuring DNS PTR, SRV, and TXT resource records to
discovery of services (such as CoAP servers in a subdomain) using the facilitate discovery of services (such as CoAP servers in a
existing DNS infrastructure. This section gives a brief overview of subdomain) using the existing DNS infrastructure. This section gives
DNS-SD; see [RFC6763] for a detailed specification. a brief overview of DNS-SD; see [RFC6763] for a detailed
specification.
DNS-SD service names are limited to 255 bytes and are of the form: DNS-SD Service Names are limited to 255 bytes and are of the form:
Service Name = <Instance>.<ServiceType>.<Domain> Service Name = <Instance>.<ServiceType>.<Domain>
The service name is the label of SRV/TXT resource records. The SRV The Service Name identifies a SRV/TXT resource record (RR) pair. The
RR specifies the host and the port of the endpoint. The TXT RR SRV RR specifies the host and the port of the endpoint. The TXT RR
provides additional information in the form of key/value pairs. provides additional information in the form of key/value pairs. DNS-
Based Service Discovery is accomplished by sending a DNS request for
PTR records with the name <ServiceType>.<Domain>, which will return a
list of zero or more Service Names.
The <Domain> part of the service name is identical to the global (DNS The <Domain> part of the Service Name is identical to the global (DNS
subdomain) part of the authority in URIs that identify the resources subdomain) part of the authority in URIs that identify the resources
on an individual server or group of servers. on an individual server or group of servers.
The <ServiceType> part is composed of at least two labels. The first The <ServiceType> part is composed of at least two labels. The first
label of the pair is the application protocol name [RFC6335] preceded label of the pair is the application protocol name [RFC6335] preceded
by an underscore character. The second label indicates the transport by an underscore character. For example, an organization such as the
and is always "_udp" for CoAP services. In cases where narrowing the Open Connectivity Foundation (OCF) that specifies resources [ref?]
might register the application protocol name "_oic", which all
servers that advertise OCF resources would use as part of their
ServiceType. The second label indicates the transport and is
typically "_udp" for CoAP services. In cases where narrowing the
scope of the search may be useful, these labels may be optionally scope of the search may be useful, these labels may be optionally
preceded by a subtype name followed by the "_sub" label. An example preceded by a subtype name followed by the "_sub" label. An example
of this more specific <ServiceType> is "lamp._sub._dali._udp". Only of this more specific <ServiceType> is "light._sub._oic._udp".
the rightmost pair of labels is used in SRV and TXT record names.
The default <Instance> part of the service name may be set at the The default <Instance> part of the Service Name SHOULD be set to a
factory or during the commissioning process. It SHOULD uniquely default value at the factory and MAY be modified during the
identify an instance of <ServiceType> within a <Domain>. Taken commissioning process. It SHOULD uniquely identify an instance of
together, these three elements comprise a unique name for an SRV/ TXT <ServiceType> within a <Domain>. Taken together, these three
record pair within the DNS subdomain. elements comprise a unique name for an SRV/TXT record pair within the
DNS subdomain.
The granularity of a service name MAY be that of a host or group, or The granularity of a Service Name MAY be that of a host or group, or
it could represent a particular resource within a CoAP server. The it could represent a particular resource within a CoAP server. The
SRV record contains the host name (AAAA record name) and port of the SRV record contains the host name (AAAA record name) and port of the
service while protocol is part of the service name. In the case service while protocol is part of the Service Name. In the case
where a service name identifies a particular resource, the path part where a Service Name identifies a particular resource, the path part
of the URI must be carried in a corresponding TXT record. of the URI must be carried in a corresponding TXT record.
A DNS TXT record is in practice limited to a few hundred bytes in A DNS TXT record is in practice limited to a few hundred bytes in
length, which is indicated in the resource record header in the DNS length, which is indicated in the resource record header in the DNS
response message [RFC6763]. The data consists of one or more strings response message [RFC6763]. The data consists of one or more strings
comprising a key=value pair. By convention, the first pair is comprising a key/value pair. By convention, the first pair is
txtver=<number> (to support different versions of a service txtver=<number> (to support different versions of a service
description). An example string is: description). An example string is:
----------------------------------------
| 0x08 | t | x | t | v | e | r | = | 1 | | 0x08 | t | x | t | v | e | r | = | 1 |
----------------------------------------
2. New Link-Format Attributes 2. New Link-Format Attributes
When using the CoRE Link Format to describe resources being When using the CoRE Link Format to describe resources being
discovered by or posted to a resource directory service, additional discovered by or posted to a resource directory service, additional
information about those resources is useful. This specification information about those resources is useful. This specification
defines the following new attributes for use in the CoRE Link Format defines the following new attributes for use in the CoRE Link Format
[RFC6690]: [RFC6690]:
link-extension = ( "ins" "=" (ptoken | quoted-string) ) link-extension = ( "ins" "=" (ptoken | quoted-string) )
; The token or string is max 63 bytes ; The token or string is max 63 bytes
link-extension = ( "exp" ) link-extension = ( "exp" )
2.1. Resource Instance attribute "ins" 2.1. Resource Instance attribute "ins"
The Resource Instance "ins" attribute is an identifier for this The Resource Instance "ins" attribute is an identifier for this
resource, which makes it possible to distinguish it from other resource, which makes it possible to distinguish it from other
similar resources. This attribute is similar in use to the similar resources. This attribute is equivalent in use to the
<Instance> portion of a DNS-SD record (see Section 1.4, and SHOULD be <Instance> portion of a DNS-SD record (see Section 1.4), and SHOULD
unique across resources with the same Resource Type attribute in the be unique across resources with the same Resource Type attribute in
domain it is used. A Resource Instance might be a descriptive string the domain in which it is used. A Resource Instance SHOULD be a
like "Ceiling Light, Room 3", a short ID like "AF39" or a unique UUID descriptive string like "Ceiling Light, Room 3", but MAY be a short
or iNumber. This attribute is used by a Resource Directory to ID like "AF39" or a unique UUID. This attribute is used by a
distinguish between multiple instances of the same resource type Resource Directory to distinguish between multiple instances of the
within the directory. same resource type within the directory.
This attribute MUST be no more than 63 bytes in length. The resource This attribute MUST NOT be more than 63 bytes in length. The
identifier attribute MUST NOT appear more than once in a link resource identifier attribute MUST NOT appear more than once in a
description. This attribute MAY be used as a query parameter in the link description. This attribute MAY be used as a query parameter in
RD Lookup Function Set defined in Section 7 of the RD Lookup Function Set defined in Section 7 of
[I-D.ietf-core-resource-directory]. [I-D.ietf-core-resource-directory].
2.2. Export attribute "exp" 2.2. Export attribute "exp"
The Export "exp" attribute is used as a flag to indicate that a link The Export "exp" attribute is used as a flag to indicate that a link
description MAY be exported by a resource directory to external description MAY be exported from a resource directory to external
directories. directories.
The CoRE Link Format is used for many purposes between CoAP The CoRE Link Format is used for many purposes between CoAP
endpoints. Some are useful mainly locally, for example checking the endpoints. Some are useful mainly locally; for example checking the
observability of a resource before accessing it, determining the size observability of a resource before accessing it, determining the size
of a resource, or traversing dynamic resource structures. However, of a resource, or traversing dynamic resource structures. However,
other links are very useful to be exported to other directories, for other links are very useful to be exported to other directories, for
example the entry point resource to a functional service. This example the entry point resource to a functional service. This
attribute MAY be used as a query parameter in the RD Lookup Function attribute MAY be used as a query parameter in the RD Lookup Function
Set defined in Section 7 of [I-D.ietf-core-resource-directory]. Set defined in Section 7 of [I-D.ietf-core-resource-directory].
3. Mapping CoRE Link Attributes to DNS-SD Record Fields 3. Mapping CoRE Link Attributes to DNS-SD Record Fields
3.1. Mapping Resource Instance attribute "ins" to <Instance> 3.1. Mapping Resource Instance attribute "ins" to <Instance>
The Resource Instance "ins" attribute maps to the <Instance> part of The Resource Instance "ins" attribute maps to the <Instance> part of
a DNS-SD service name. It is stored directly in the DNS as a single a DNS-SD Service Name. It is stored directly in the DNS as a single
DNS label of canonical precomposed UTF-8 [RFC3629] "Net-Unicode" DNS label of canonical precomposed UTF-8 [RFC3629] "Net-Unicode"
(Unicode Normalization Form C) [RFC5198] text. However, to the (Unicode Normalization Form C) [RFC5198] text. However, if the "ins"
extent that the "ins" attribute may be chosen to match the DNS host attribute is chosen to match the DNS host name of a service, it
name of a service, it SHOULD use the syntax defined in Section 3.5 of SHOULD use the syntax defined in Section 3.5 of [RFC1034] and
[RFC1034] and Section 2.1 of [RFC1123]. Section 2.1 of [RFC1123].
The <Instance> part of the name of a service being offered on the The <Instance> part of the name of a service being offered on the
network SHOULD be configurable by the user setting up the service, so network SHOULD be configurable by the user setting up the service, so
that he or she may give it an informative name. However, the device that he or she may give it an informative name. However, the device
or service SHOULD NOT require the user to configure a name before it or service SHOULD NOT require the user to configure a name before it
can be used. A sensible choice of default name can allow the device can be used. A sensible choice of default name can allow the device
or service to be accessed in many cases without any manual or service to be accessed in many cases without any manual
configuration at all. The default name should be short and configuration at all (see Appendix D of [RFC6763]).
descriptive, and MAY include a collision-resistant substring such as
the lower bits of the device's MAC address, serial number,
fingerprint, or other identifier in an attempt to make the name
relatively unique.
DNS labels are currently limited to 63 bytes in length and the entire DNS labels are limited to 63 bytes in length and the entire Service
service name may not exceed 255 bytes. Name may not exceed 255 bytes.
3.2. Mapping Resource Type attribute "rt" to <ServiceType> 3.2. Mapping Resource Type attribute "rt" to <ServiceType>
The resource type "rt" attribute is mapped into the <ServiceType> The <ServiceType> part of a DNS-SD Service Name is derived from the
part of a DNS-SD service name and SHOULD conform to the reg-rel-type "rt" attribute and SHOULD conform to the reg-rel-type production of
production of the Link Format defined in Section 2 of [RFC6690]. The the Link Format defined in Section 2 of [RFC6690].
"rt" attribute MUST be composed of at least a single Net-Unicode text
string, without underscore '_' or period '.' and limited to 15 bytes In practice, the ServiceType should unambiguously identify inter-
in length, which represents the application protocol name. This operable devices. It is up to individual standards bodies to specify
string is mapped to the DNS-SD <ServiceType> by prepending an how to map between their registered Resource Type (rt=) values and
underscore and appending a period followed by the "_udp" label. For ServiceType values. Two approaches are possible; either a
example, rt="dali" is mapped into "_dali._udp". hierachical approach as in Section 1.4 above, or a flat identifier.
Both approaches are shown below for illustration, but in practice
only ONE would be specified.
In either case, the resulting application protocol name MUST be
composed of at least a single Net-Unicode text string, without
underscore '_' or or period '.' and limited to 15 bytes in length
(see Section 5.1 of [RFC6335]). This string is mapped to the DNS-SD
<ServiceType> by prepending an underscore and appending a period
followed by the "_udp" label. For example, rt="oic.d.light" might be
mapped into "_oic-d-light._udp".
The application protocol name may be optionally followed by a period The application protocol name may be optionally followed by a period
and a service subtype name consisting of a Net-Unicode text string, and a service subtype name consisting of a Net-Unicode text string,
without underscore or period and limited to 63 bytes. This string is without underscore or period and limited to 63 bytes. This string is
mapped to the DNS-SD <ServiceType> by appending a period followed by mapped to the DNS-SD <ServiceType> by appending a period followed by
the "_sub" label and then appending a period followed by the service the "_sub" label and then appending a period followed by the service
type label pair derived as in the previous paragraph. For example, type label pair derived as in the previous paragraph. For example,
rt="dali.light" is mapped into "light._sub._dali._udp". rt="oic.d.light" might be mapped into "light._sub._oic._udp".
The resulting string is used to form labels for DNS-SD records which The resulting string is used to form labels for DNS-SD records which
are stored directly in the DNS. are stored directly in the DNS.
3.3. Domain mapping 3.3. Domain mapping
TBD: A method must be specified to determine in which DNS zone the TBD: A method must be specified to determine in which DNS zone the
CoAP service should be registered. See, for example, Section 11 in CoAP service should be registered. See, for example, Section 11 in
[RFC6763]. [RFC6763].
3.4. TXT Record key=value strings 3.4. TXT Record key=value strings
A number of [RFC6763] key/value pairs are derived from link-format A number of [RFC6763] key/value pairs are derived from link-format
information, to be exported in the DNS-SD as key=value strings in a information, to be exported in the DNS-SD as key=value strings in a
TXT record ([RFC6763], Section 6.3). TXT record (See Section 6.3 of [RFC6763]).
The resource <URI> is exported as key/value pair "path=<URI>". The resource <URI> is exported as key/value pair "path=<URI>".
The Interface Description "if" attribute is exported as key/value The Interface Description "if" attribute is exported as key/value
pair "if=<Interface Description>". pair "if=<Interface Description>".
The DNS TXT record can be further populated by importing any other The DNS TXT record can be further populated by importing any other
resource description attributes as they share the same key=value resource description attributes as they share the same key=value
format specified in Section 6 of [RFC6763]. format specified in Section 6 of [RFC6763].
3.5. Importing resource links into DNS-SD 3.5. Importing resource links into DNS-SD
Assuming the ability to query a Resource Directory or multicast a GET Assuming the ability to query a Resource Directory or multicast a GET
(?exp) over the local link, CoAP resource discovery may be used to (?exp) over the local link, CoAP resource discovery may be used to
populate the DNS-SD database in an automated fashion. CoAP resource populate the DNS-SD database in an automated fashion. CoAP resource
descriptions (links) can be exported to DNS-SD for exposure to descriptions (links) can be exported to DNS-SD for exposure to
service discovery by using the Resource Instance attribute as the service discovery by using the Resource Instance attribute as the
basis for a unique service name, composed with the Resource Type as basis for a unique Service Name, composed with the Resource Type as
the <ServiceType>, and registered in the correct <Domain>. The agent the <ServiceType>, and registered in the correct <Domain>. The agent
responsible for exporting records to the DNS zone file SHOULD be responsible for exporting records to the DNS zone file SHOULD be
authenticated to the DNS server. The following example, using the authenticated to the DNS server. The following example, using the
example lookup location /rd-lookup, shows an agent discovering a example lookup location /rd-lookup, shows an agent discovering a
resource to be exported: resource to be exported:
Req: GET /rd-lookup/res?exp Req: GET /rd-lookup/res?exp
Res: 2.05 Content Res: 2.05 Content
<coap://[FDFD::1234]:5683/light/1>; <coap://[FDFD::1234]:5683/light/1>;
exp;rt="dali.light";ins="Spot"; exp;rt="oic.d.light";ins="Spot";
d="office";ep="node1" d="office";ep="node1"
The agent subsequently registers the following DNS-SD RRs, assuming a The agent subsequently registers the following DNS-SD RRs, assuming a
zone name "example.com" prefixed with "office": zone name "example.com" prefixed with "office":
node1.office.example.com. IN AAAA FDFD::1234 _oic._udp.office.example.com IN PTR
_dali._udp.office.example.com IN PTR Spot._oic._udp.office.example.com
Spot._dali._udp.office.example.com light._sub._oic._udp.example.com IN PTR
light._sub._dali._udp.example.com IN PTR Spot._oic._udp.office.example.com
Spot._dali._udp.office.example.com Spot._oic._udp.office.example.com IN TXT
Spot._dali._udp.office.example.com IN SRV 0 0 5683 txtver=1;path=/light/1
node1.office.example.com. Spot._oic._udp.office.example.com IN SRV 0 0 5683
Spot._dali._udp.office.example.com IN TXT node1.office.example.com.
txtver=1;path=/light/1 node1.office.example.com. IN AAAA FDFD::1234
In the above figure the Service Name is chosen as In the above figure the Service Name is chosen as
Spot._dali._udp.office.example.com without the light._sub service Spot._oic._udp.office.example.com without the light._sub service
prefix. An alternative Service Name would be: prefix. An alternative Service Name would be:
Spot.light._sub._dali._udp.office.example.com. Spot.light._sub._oic._udp.office.example.com.
4. Examples
4.1. DNS entries
It may be profitable to discover the light groups for applications,
which are unaware ot the existence of the RD. An agent needs to
query the RD to return all groups which are exported to be inserted
into DNS.
Req: GET /rd-lookup/gp?exp
Res: 2.05 Content 4. IANA considerations
<coap://[FF05::1]/>;exp;gp="grp_R2-4-015;ins="grp1234";
ep="lm_R2-4-015_wndw";
ep="lm_R2-4-015_door
The group with FQDN grp_R2-4-015.bc.example.com can be entered into TBD
the DNS by the agent. The accompanying instance name is grp1234.
The <ServiceType> is chosen to be _group._udp. The agent enters the
following RRs into the DNS.
grp_R2-4-015.bc.example.com. IN AAAA FF05::1 5. Security considerations
_group._udp.bc.example.com IN PTR
grp1234._group._udp.bc.example.com
grp1234._group._udp.bc.example.com IN SRV 0 0 5683
grp_R2-4-015_door.bc.example.com.
grp1234._group._udp.bc.example.com IN TXT
txtver=1;path=/light/grp1
From then on, applications unaware of the existence of the RD can use TBD
DNS to access the lighting group.
5. IANA considerations 6. References
TBD 6.1. Normative References
6. Security considerations [RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
<http://www.rfc-editor.org/info/rfc1034>.
TBD [RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987, <https://www.rfc-editor.org/info/rfc1035>.
7. References [RFC1123] Braden, R., Ed., "Requirements for Internet Hosts -
Application and Support", STD 3, RFC 1123,
DOI 10.17487/RFC1123, October 1989,
<http://www.rfc-editor.org/info/rfc1123>.
7.1. Normative References [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996,
<https://www.rfc-editor.org/info/rfc2045>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
2003, <http://www.rfc-editor.org/info/rfc3629>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/info/rfc3986>.
[RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network
Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008,
<http://www.rfc-editor.org/info/rfc5198>.
[RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S.
Cheshire, "Internet Assigned Numbers Authority (IANA) Cheshire, "Internet Assigned Numbers Authority (IANA)
Procedures for the Management of the Service Name and Procedures for the Management of the Service Name and
Transport Protocol Port Number Registry", BCP 165, Transport Protocol Port Number Registry", BCP 165,
RFC 6335, DOI 10.17487/RFC6335, August 2011, RFC 6335, DOI 10.17487/RFC6335, August 2011,
<https://www.rfc-editor.org/info/rfc6335>. <http://www.rfc-editor.org/info/rfc6335>.
[RFC6570] Gregorio, J., Fielding, R., Hadley, M., Nottingham, M., [RFC6570] Gregorio, J., Fielding, R., Hadley, M., Nottingham, M.,
and D. Orchard, "URI Template", RFC 6570, and D. Orchard, "URI Template", RFC 6570,
DOI 10.17487/RFC6570, March 2012, DOI 10.17487/RFC6570, March 2012,
<https://www.rfc-editor.org/info/rfc6570>. <http://www.rfc-editor.org/info/rfc6570>.
[RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link
Format", RFC 6690, DOI 10.17487/RFC6690, August 2012, Format", RFC 6690, DOI 10.17487/RFC6690, August 2012,
<https://www.rfc-editor.org/info/rfc6690>. <http://www.rfc-editor.org/info/rfc6690>.
[RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service [RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service
Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013, Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013,
<https://www.rfc-editor.org/info/rfc6763>. <http://www.rfc-editor.org/info/rfc6763>.
[RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
Application Protocol (CoAP)", RFC 7252,
DOI 10.17487/RFC7252, June 2014,
<http://www.rfc-editor.org/info/rfc7252>.
[RFC8288] Nottingham, M., "Web Linking", RFC 8288, [RFC8288] Nottingham, M., "Web Linking", RFC 8288,
DOI 10.17487/RFC8288, October 2017, DOI 10.17487/RFC8288, October 2017,
<https://www.rfc-editor.org/info/rfc8288>. <https://www.rfc-editor.org/info/rfc8288>.
7.2. Informative References 6.2. Informative References
[I-D.handrews-json-schema-hyperschema] [I-D.handrews-json-schema-hyperschema]
Andrews, H. and A. Wright, "JSON Hyper-Schema: A Andrews, H. and A. Wright, "JSON Hyper-Schema: A
Vocabulary for Hypermedia Annotation of JSON", draft- Vocabulary for Hypermedia Annotation of JSON", draft-
handrews-json-schema-hyperschema-01 (work in progress), handrews-json-schema-hyperschema-01 (work in progress),
January 2018. January 2018.
[I-D.ietf-core-resource-directory] [I-D.ietf-core-resource-directory]
Shelby, Z., Koster, M., Bormann, C., Stok, P., and C. Shelby, Z., Koster, M., Bormann, C., Stok, P., and C.
Amsuess, "CoRE Resource Directory", draft-ietf-core- Amsuess, "CoRE Resource Directory", draft-ietf-core-
resource-directory-13 (work in progress), March 2018. resource-directory-14 (work in progress), July 2018.
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
<https://www.rfc-editor.org/info/rfc1034>.
[RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987, <https://www.rfc-editor.org/info/rfc1035>.
[RFC1123] Braden, R., Ed., "Requirements for Internet Hosts -
Application and Support", STD 3, RFC 1123,
DOI 10.17487/RFC1123, October 1989,
<https://www.rfc-editor.org/info/rfc1123>.
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996,
<https://www.rfc-editor.org/info/rfc2045>.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
2003, <https://www.rfc-editor.org/info/rfc3629>.
[RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network
Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008,
<https://www.rfc-editor.org/info/rfc5198>.
[RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
Application Protocol (CoAP)", RFC 7252,
DOI 10.17487/RFC7252, June 2014,
<https://www.rfc-editor.org/info/rfc7252>.
Acknowledgements Acknowledgments
This document was split out from [I-D.ietf-core-resource-directory]. This document was split out from [I-D.ietf-core-resource-directory].
Zach Shelby was a co-author of the original version of this draft. Zach Shelby was a co-author of the original version of this draft.
Authors' Addresses Authors' Addresses
Kerry Lynn Kerry Lynn
Consultant Consultant
Phone: +1 978-460-4253 Phone: +1 978-460-4253
 End of changes. 65 change blocks. 
195 lines changed or deleted 197 lines changed or added

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