| < draft-ietf-core-resource-directory-00.txt | draft-ietf-core-resource-directory-01.txt > | |||
|---|---|---|---|---|
| CoRE Z. Shelby | CoRE Z. Shelby | |||
| Internet-Draft Sensinode | Internet-Draft ARM | |||
| Intended status: Standards Track S. Krco | Intended status: Standards Track C. Bormann | |||
| Expires: December 05, 2013 Ericsson | Expires: June 14, 2014 Universitaet Bremen TZI | |||
| C. Bormann | S. Krco | |||
| Universitaet Bremen TZI | Ericsson | |||
| June 03, 2013 | December 11, 2013 | |||
| CoRE Resource Directory | CoRE Resource Directory | |||
| draft-ietf-core-resource-directory-00 | draft-ietf-core-resource-directory-01 | |||
| Abstract | Abstract | |||
| In many M2M applications, direct discovery of resources is not | In many M2M applications, direct discovery of resources is not | |||
| practical due to sleeping nodes, disperse networks, or networks where | practical due to sleeping nodes, disperse networks, or networks where | |||
| multicast traffic is inefficient. These problems can be solved by | multicast traffic is inefficient. These problems can be solved by | |||
| employing an entity called a Resource Directory (RD), which hosts | employing an entity called a Resource Directory (RD), which hosts | |||
| descriptions of resources held on other servers, allowing lookups to | descriptions of resources held on other servers, allowing lookups to | |||
| be performed for those resources. This document specifies the web | be performed for those resources. This document specifies the web | |||
| interfaces that a Resource Directory supports in order for web | interfaces that a Resource Directory supports in order for web | |||
| servers to discover the RD and to register, maintain, lookup and | servers to discover the RD and to register, maintain, lookup and | |||
| remove resources descriptions. Furthermore, new link attributes | remove resources descriptions. Furthermore, new link attributes | |||
| useful in conjunction with an RD are defined. | useful in conjunction with an RD are defined. | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 December 05, 2013. | This Internet-Draft will expire on June 14, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Architecture and Use Cases . . . . . . . . . . . . . . . . . 4 | 3. Architecture and Use Cases . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. Use Case: Cellular M2M . . . . . . . . . . . . . . . . . 5 | 3.1. Use Case: Cellular M2M . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. Use Case: Home and Building Automation . . . . . . . . . 5 | 3.2. Use Case: Home and Building Automation . . . . . . . . . . 6 | |||
| 4. Simple Directory Discovery . . . . . . . . . . . . . . . . . 6 | 4. Simple Directory Discovery . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. Finding a Directory Server . . . . . . . . . . . . . . . 7 | 4.1. Finding a Directory Server . . . . . . . . . . . . . . . . 7 | |||
| 5. Resource Directory Function Set . . . . . . . . . . . . . . . 8 | 5. Resource Directory Function Set . . . . . . . . . . . . . . . 8 | |||
| 5.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 8 | 5.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.2. Registration . . . . . . . . . . . . . . . . . . . . . . 10 | 5.2. Registration . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.3. Update . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 5.3. Update . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.4. Validation . . . . . . . . . . . . . . . . . . . . . . . 13 | 5.4. Removal . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.5. Removal . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 6. Group Function Set . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 6. Group Function Set . . . . . . . . . . . . . . . . . . . . . 15 | 6.1. Register a Group . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 6.1. Register a Group . . . . . . . . . . . . . . . . . . . . 15 | 6.2. Group Removal . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 6.2. Group Removal . . . . . . . . . . . . . . . . . . . . . . 17 | 7. RD Lookup Function Set . . . . . . . . . . . . . . . . . . . . 18 | |||
| 7. RD Lookup Function Set . . . . . . . . . . . . . . . . . . . 18 | 8. New Link-Format Attributes . . . . . . . . . . . . . . . . . . 22 | |||
| 8. New Link-Format Attributes . . . . . . . . . . . . . . . . . 22 | 8.1. Resource Instance 'ins' attribute . . . . . . . . . . . . 22 | |||
| 8.1. Resource Instance 'ins' attribute . . . . . . . . . . . . 23 | 8.2. Export 'exp' attribute . . . . . . . . . . . . . . . . . . 23 | |||
| 8.2. Export 'exp' attribute . . . . . . . . . . . . . . . . . 23 | 9. DNS-SD Mapping . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 24 | 11.1. Resource Types . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 12. Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 11.2. Link Extension . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 11.3. RD Parameter Registry . . . . . . . . . . . . . . . . . . 24 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 25 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 26 | 13. Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . . 26 | ||||
| 14.2. Informative References . . . . . . . . . . . . . . . . . . 27 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
| 1. Introduction | 1. Introduction | |||
| The Constrained RESTful Environments (CoRE) work aims at realizing | The Constrained RESTful Environments (CoRE) work aims at realizing | |||
| the REST architecture in a suitable form for the most constrained | the REST architecture in a suitable form for the most constrained | |||
| nodes (e.g. 8-bit microcontrollers with limited RAM and ROM) and | nodes (e.g. 8-bit microcontrollers with limited RAM and ROM) and | |||
| networks (e.g. 6LoWPAN). CoRE is aimed at machine-to-machine (M2M) | networks (e.g. 6LoWPAN). CoRE is aimed at machine-to-machine (M2M) | |||
| applications such as smart energy and building automation. | applications such as smart energy and building automation. | |||
| The discovery of resources offered by a constrained server is very | The discovery of resources offered by a constrained server is very | |||
| important in machine-to-machine applications where there are no | important in machine-to-machine applications where there are no | |||
| humans in the loop and static interfaces result in fragility. The | humans in the loop and static interfaces result in fragility. The | |||
| discovery of resources provided by an HTTP Web Server is typically | discovery of resources provided by an HTTP Web Server is typically | |||
| called Web Linking [RFC5988]. The use of Web Linking for the | called Web Linking [RFC5988]. The use of Web Linking for the | |||
| description and discovery of resources hosted by constrained web | description and discovery of resources hosted by constrained web | |||
| servers is specified by the CoRE Link Format [RFC6690]. This | servers is specified by the CoRE Link Format [RFC6690]. This | |||
| specification however only describes how to discover resources from | specification however only describes how to discover resources from | |||
| skipping to change at page 3, line 26 ¶ | skipping to change at page 3, line 34 ¶ | |||
| traffic is inefficient. These problems can be solved by employing an | traffic is inefficient. These problems can be solved by employing an | |||
| entity called a Resource Directory (RD), which hosts descriptions of | entity called a Resource Directory (RD), which hosts descriptions of | |||
| resources held on other servers, allowing lookups to be performed for | resources held on other servers, allowing lookups to be performed for | |||
| those resources. | those resources. | |||
| This document specifies the web interfaces that a Resource Directory | This document specifies the web interfaces that a Resource Directory | |||
| supports in order for web servers to discover the RD and to register, | supports in order for web servers to discover the RD and to register, | |||
| maintain, lookup and remove resource descriptions. Furthermore, new | maintain, lookup and remove resource descriptions. Furthermore, new | |||
| link attributes useful in conjunction with a Resource Directory are | link attributes useful in conjunction with a Resource Directory are | |||
| defined. Although the examples in this document show the use of | defined. Although the examples in this document show the use of | |||
| these interfaces with CoAP [I-D.ietf-core-coap], they may be applied | these interfaces with CoAP [I-D.ietf-core-coap], they can be applied | |||
| in an equivalent manner to HTTP [RFC2616]. | in an equivalent manner to HTTP [RFC2616]. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. The term | document are to be interpreted as described in [RFC2119]. The term | |||
| "byte" is used in its now customary sense as a synonym for "octet". | "byte" is used in its now customary sense as a 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 | |||
| skipping to change at page 5, line 15 ¶ | skipping to change at page 5, line 25 ¶ | |||
| +----+ ---- | | | +----+ ---- | | | |||
| | EP |---- | | | | EP |---- | | | |||
| +----+ | +----+ | |||
| Figure 1: The resource directory architecture. | Figure 1: The resource directory architecture. | |||
| 3.1. Use Case: Cellular M2M | 3.1. Use Case: Cellular M2M | |||
| Over the last few years, mobile operators around the world have | Over the last few years, mobile operators around the world have | |||
| focused on development of M2M solutions in order to expand the | focused on development of M2M solutions in order to expand the | |||
| business to the new type of users, i.e. machines. The machines are | business to the new type of users, i.e. machines. The machines are | |||
| connected directly to a mobile network using appropriate embedded air | connected directly to a mobile network using appropriate embedded air | |||
| interface (GSM/GPRS, WCDMA, LTE) or via a gateway providing short and | interface (GSM/GPRS, WCDMA, LTE) or via a gateway providing short and | |||
| wide range wireless interfaces. From the system design point of | wide range wireless interfaces. From the system design point of | |||
| view, the ambition is to design horizontal solutions that can enable | view, the ambition is to design horizontal solutions that can enable | |||
| utilization of machines in different applications depending on their | utilization of machines in different applications depending on their | |||
| current availability and capabilities as well as application | current availability and capabilities as well as application | |||
| requirements, thus avoiding silo like solutions. One of the crucial | requirements, thus avoiding silo like solutions. One of the crucial | |||
| enablers of such design is the ability to discover resources | enablers of such design is the ability to discover resources | |||
| (machines - endpoints) capable of providing required information at a | (machines - endpoints) capable of providing required information at a | |||
| given time or acting on instructions from the end users. | given time or acting on instructions from the end users. | |||
| skipping to change at page 7, line 36 ¶ | skipping to change at page 8, line 4 ¶ | |||
| 4.1. Finding a Directory Server | 4.1. Finding a Directory Server | |||
| Endpoints that want to contact a directory server can obtain | Endpoints that want to contact a directory server can obtain | |||
| candidate IP addresses for such servers in a number of ways. | candidate IP addresses for such servers in a number of ways. | |||
| In a 6LoWPAN, good candidates can be taken from: | In a 6LoWPAN, good candidates can be taken from: | |||
| o specific static configuration (e.g., anycast addresses), if any, | o specific static configuration (e.g., anycast addresses), if any, | |||
| o the ABRO option of 6LoWPAN-ND [RFC6775], | o the ABRO option of 6LoWPAN-ND [RFC6775], | |||
| o other ND options that happen to point to servers (such as RDNSS), | o other ND options that happen to point to servers (such as RDNSS), | |||
| o DHCPv6 options that might be defined later. | o DHCPv6 options that might be defined later. | |||
| In networks with more inexpensive use of multicast, the candidate IP | In networks with more inexpensive use of multicast, the candidate IP | |||
| address may be a well-known multicast address, i.e. directory | address may be a well-known multicast address, i.e. directory servers | |||
| servers are found by simply sending POST requests to that well-known | are found by simply sending POST requests to that well-known | |||
| multicast address (details TBD). | multicast address (details TBD). | |||
| As some of these sources are just (more or less educated) guesses, | As some of these sources are just (more or less educated) guesses, | |||
| endpoints MUST make use of any error messages to very strictly rate- | endpoints MUST make use of any error messages to very strictly rate- | |||
| limit requests to candidate IP addresses that don't work out. E.g., | limit requests to candidate IP addresses that don't work out. E.g., | |||
| an ICMP Destination Unreachable message (and, in particular, the port | an ICMP Destination Unreachable message (and, in particular, the port | |||
| unreachable code for this message) may indicate the lack of a CoAP | unreachable code for this message) may indicate the lack of a CoAP | |||
| server on the candidate host, or a CoAP error response code such as | server on the candidate host, or a CoAP error response code such as | |||
| 4.05 "Method Not Allowed" may indicate unwillingness of a CoAP server | 4.05 "Method Not Allowed" may indicate unwillingness of a CoAP server | |||
| to act as a directory server. | to act as a directory server. | |||
| 5. Resource Directory Function Set | 5. Resource Directory Function Set | |||
| This section defines the REST interfaces between an RD and endpoint | This section defines the REST interfaces between an RD and endpoint | |||
| servers, which is called the Resource Directory Function Set. | servers, which is called the Resource Directory Function Set. | |||
| Although the examples throughout this section assume use of CoAP | Although the examples throughout this section assume use of CoAP | |||
| [I-D.ietf-core-coap], these REST interfaces can also be realized | [I-D.ietf-core-coap], these REST interfaces can also be realized | |||
| using HTTP [RFC2616]. An RD implementing this specification MUST | using HTTP [RFC2616]. An RD implementing this specification MUST | |||
| support the discovery, registration, update, and removal interfaces | support the discovery, registration, update, and removal interfaces | |||
| defined in this section and MAY support the validation interface. | defined in this section. | |||
| For the purpose of validation, an endpoint implementing this | ||||
| specification SHOULD support ETag validation on /.well-known/core | ||||
| (which is very straightforward for static /.well-known/core link | ||||
| documents). | ||||
| Resource directory entries are designed to be easily exported to | Resource directory entries are designed to be easily exported to | |||
| other discovery mechanisms such as DNS-SD. For that reason, | other discovery mechanisms such as DNS-SD. For that reason, | |||
| parameters that would meaningfully be mapped to DNS are limited to a | parameters that would meaningfully be mapped to DNS are limited to a | |||
| maximum length of 63 bytes. | maximum length of 63 bytes. | |||
| 5.1. Discovery | 5.1. Discovery | |||
| Before an endpoint can make use of an RD, it must first know the RD's | Before an endpoint can make use of an RD, it must first know the RD's | |||
| IP address, port and the path of its RD Function Set. There can be | IP address, port and the path of its RD Function Set. There can be | |||
| several mechanisms for discovering the RD including assuming a | several mechanisms for discovering the RD including assuming a | |||
| default location (e.g. on an Edge Router in a LoWPAN), by assigning | default location (e.g. on an Edge Router in a LoWPAN), by assigning | |||
| an anycast address to the RD, using DHCP, or by discovering the RD | an anycast address to the RD, using DHCP, or by discovering the RD | |||
| using the CoRE Link Format (also see Section 4.1). This section | using the CoRE Link Format (also see Section 4.1). This section | |||
| defines discovery of the RD using the well-known interface of the | defines discovery of the RD using the well-known interface of the | |||
| CoRE Link Format [RFC6690] as the required mechanism. It is however | CoRE Link Format [RFC6690] as the required mechanism. It is however | |||
| expected that RDs will also be discoverable via other methods | expected that RDs will also be discoverable via other methods | |||
| depending on the deployment. | depending on the deployment. | |||
| Discovery is performed by sending either a multicast or unicast GET | Discovery is performed by sending either a multicast or unicast GET | |||
| request to /.well-known/core and including a Resource Type (rt) | request to /.well-known/core and including a Resource Type (rt) | |||
| parameter [RFC6690] with the value "core.rd" in the query string. | parameter [RFC6690] with the value "core.rd" in the query string. | |||
| Likewise, a Resource Type parameter value of "core.rd-lookup" is used | Likewise, a Resource Type parameter value of "core.rd-lookup" is used | |||
| to discover the RD Lookup Function Set. Upon success, the response | to discover the RD Lookup Function Set. Upon success, the response | |||
| will contain a payload with a link format entry for each RD | will contain a payload with a link format entry for each RD | |||
| discovered, with the URL indicating the root resource of the RD. | discovered, with the URL indicating the root resource of the RD. | |||
| When performing multicast discovery, the multicast IP address used | When performing multicast discovery, the multicast IP address used | |||
| will depend on the scope required and the multicast capabilities of | will depend on the scope required and the multicast capabilities of | |||
| the network. | the network. | |||
| An RD implementation of this specification MUST support query | An RD implementation of this specification MUST support query | |||
| filtering for the rt parameter as defined in [RFC6690]. | filtering for the rt parameter as defined in [RFC6690]. | |||
| The discovery request interface is specified as follows: | The discovery request interface is specified as follows: | |||
| Interaction: EP -> RD | Interaction: EP -> RD | |||
| Method: GET | Method: GET | |||
| URI Template: /.well-known/core{?rt} | URI Template: /.well-known/core{?rt} | |||
| URI Template Variables: | URI Template Variables: | |||
| rt := Resource Type (optional). MAY contain the value | rt := Resource Type (optional). MAY contain the value | |||
| "core.rd", "core.rd-lookup", "core.rd-group" or "core.rd*" | "core.rd", "core.rd-lookup", "core.rd-group" or "core.rd*" | |||
| Content-Type: application/link-format (if any) | Content-Type: application/link-format (if any) | |||
| The following response codes are defined for this interface: | The following response codes are defined for this interface: | |||
| Success: 2.05 "Content" with an application/link-format payload | Success: 2.05 "Content" with an application/link-format payload | |||
| containing a matching entry for the RD resource. | containing a matching entry for the RD resource. | |||
| Failure: 4.04 "Not Found" is returned in case no matching entry is | Failure: 4.04 "Not Found" is returned in case no matching entry is | |||
| found for a unicast request. | found for a unicast request. | |||
| skipping to change at page 10, line 19 ¶ | skipping to change at page 10, line 26 ¶ | |||
| </rd>;rt="core.rd", | </rd>;rt="core.rd", | |||
| </rd-lookup>;rt="core.rd-lookup", | </rd-lookup>;rt="core.rd-lookup", | |||
| </rd-group>;rt="core.rd-group" | </rd-group>;rt="core.rd-group" | |||
| 5.2. Registration | 5.2. Registration | |||
| After discovering the location of an RD Function Set, an endpoint MAY | After discovering the location of an RD Function Set, an endpoint MAY | |||
| register its resources using the registration interface. This | register its resources using the registration interface. This | |||
| interface accepts a POST from an endpoint containing the list of | interface accepts a POST from an endpoint containing the list of | |||
| resources to be added to the directory as the message payload in the | resources to be added to the directory as the message payload in the | |||
| CoRE Link Format along with query string parameters indicating the | CoRE Link Format [RFC6690] or JSON Link Format | |||
| name of the endpoint, its domain and the lifetime of the | [I-D.ietf-core-links-json] along with query string parameters | |||
| registration. All parameters except the endpoint name are optional. | indicating the name of the endpoint, its domain and the lifetime of | |||
| It is expected that other specifications MAY define further | the registration. All parameters except the endpoint name are | |||
| parameters (it is to be determined if a registry of parameters is | optional. It is expected that other specifications MAY define | |||
| needed for this purpose). The RD then creates a new resource or | further parameters (it is to be determined if a registry of | |||
| updates an existing resource in the RD and returns its location. An | parameters is needed for this purpose). The RD then creates a new | |||
| endpoint MUST use that location when refreshing registrations using | resource or updates an existing resource in the RD and returns its | |||
| this interface. Endpoint resources in the RD are kept active for the | location. An endpoint MUST use that location when refreshing | |||
| period indicated by the lifetime parameter. The endpoint is | registrations using this interface. Endpoint resources in the RD are | |||
| responsible for refreshing the entry within this period using either | kept active for the period indicated by the lifetime parameter. The | |||
| the registration or update interface. The registration interface | endpoint is responsible for refreshing the entry within this period | |||
| MUST be implemented to be idempotent, so that registering twice with | using either the registration or update interface. The registration | |||
| the same endpoint parameter does not create multiple RD entries. | interface MUST be implemented to be idempotent, so that registering | |||
| twice with the same endpoint parameter does not create multiple RD | ||||
| entries. | ||||
| The registration request interface is specified as follows: | The registration request interface is specified as follows: | |||
| Interaction: EP -> RD | Interaction: EP -> RD | |||
| Method: POST | Method: POST | |||
| URI Template: /{+rd}{?ep,d,et,lt,con} | URI Template: /{+rd}{?ep,d,et,lt,con} | |||
| URI Template Variables: | URI Template Variables: | |||
| RD Function Set path (mandatory). This is the path of the RD | rd := RD Function Set path (mandatory). This is the path of the | |||
| Function Set. An RD SHOULD use the value "rd" for this | RD Function Set. An RD SHOULD use the value "rd" for this | |||
| variable whenever possible. | variable whenever possible. | |||
| Endpoint (mandatory). The endpoint identifier or name of the | ep := Endpoint (mandatory). The endpoint identifier or name of | |||
| registering node, unique within that domain. The maximum | the registering node, unique within that domain. The maximum | |||
| length of this parameter is 63 bytes. | length of this parameter is 63 bytes. | |||
| Domain (optional). The domain to which this endpoint belongs. | d := Domain (optional). The domain to which this endpoint | |||
| The maximum length of this parameter is 63 bytes. Optional. | belongs. The maximum length of this parameter is 63 bytes. | |||
| When this parameter is elided, the RD MAY associate the | Optional. When this parameter is elided, the RD MAY associate | |||
| endpoint with a configured default domain. | the endpoint with a configured default domain. | |||
| Endpoint Type (optional). The semantic type of the endpoint. | et := Endpoint Type (optional). The semantic type of the | |||
| The maximum length of this parameter is 63 bytes. Optional. | endpoint. The maximum length of this parameter is 63 bytes. | |||
| Optional. | ||||
| Lifetime (optional). Lifetime of the registration in seconds. | lt := Lifetime (optional). Lifetime of the registration in | |||
| Range of 60-4294967295. If no lifetime is included, a default | seconds. Range of 60-4294967295. If no lifetime is included, | |||
| value of 86400 (24 hours) SHOULD be assumed. | a default value of 86400 (24 hours) SHOULD be assumed. | |||
| Context (optional). This parameter sets the scheme, address | con := Context (optional). This parameter sets the scheme, | |||
| and port at which this server is available in the form scheme:/ | address and port at which this server is available in the form | |||
| /host:port. Optional. In the absence of this parameter the | scheme://host:port. Optional. In the absence of this | |||
| scheme of the protocol, source IP address and source port of | parameter the scheme of the protocol, source IP address and | |||
| the register request are assumed. | source port of the register request are assumed. | |||
| Content-Type: application/link-format | Content-Type: application/link-format | |||
| Content-Type: application/link-format+json | ||||
| The following response codes are defined for this interface: | The following response codes are defined for this interface: | |||
| Success: 2.01 "Created". The Location header MUST be included with | Success: 2.01 "Created". The Location header MUST be included with | |||
| the new resource entry for the endpoint. This Location MUST be a | the new resource entry for the endpoint. This Location MUST be a | |||
| stable identifier generated by the RD as it is used for all | stable identifier generated by the RD as it is used for all | |||
| subsequent operations on this registration (update, delete). | subsequent operations on this registration. The resource returned | |||
| in the Location is only for the purpose of the Update (PUT) and | ||||
| Removal (DELETE), and MUST NOT implement GET or POST methods. | ||||
| Failure: 4.00 "Bad Request". Malformed request. | Failure: 4.00 "Bad Request". Malformed request. | |||
| Failure: 5.03 "Service Unavailable". Service could not perform the | Failure: 5.03 "Service Unavailable". Service could not perform the | |||
| operation. | operation. | |||
| The following example shows an endpoint with the name "node1" | The following example shows an endpoint with the name "node1" | |||
| registering two resources to an RD using this interface. The | registering two resources to an RD using this interface. The | |||
| resulting location /rd/4521 is just an example of an RD generated | resulting location /rd/4521 is just an example of an RD generated | |||
| location. | location. | |||
| skipping to change at page 12, line 30 ¶ | skipping to change at page 13, line 4 ¶ | |||
| response to the first registration. An update MAY contain | response to the first registration. An update MAY contain | |||
| registration parameters if there have been changes since the last | registration parameters if there have been changes since the last | |||
| registration or update. Parameters that have not changed SHOULD NOT | registration or update. Parameters that have not changed SHOULD NOT | |||
| be included in an update. Upon receiving an update request, the RD | be included in an update. Upon receiving an update request, the RD | |||
| resets the timeout for that endpoint and stores the values of the | resets the timeout for that endpoint and stores the values of the | |||
| parameters included in the update (if any). | parameters included in the update (if any). | |||
| The update request interface is specified as follows: | The update request interface is specified as follows: | |||
| Interaction: EP -> RD | Interaction: EP -> RD | |||
| Method: PUT | Method: PUT | |||
| URI Template: /{+location}{?et,lt,con} | URI Template: /{+location}{?et,lt,con} | |||
| URI Template Variables: | URI Template Variables: | |||
| This is the Location path returned by the RD as a result of a | location := This is the Location path returned by the RD as a | |||
| successful registration. | result of a successful registration. | |||
| Endpoint Type (optional). The semantic type of the endpoint. | et := Endpoint Type (optional). The semantic type of the | |||
| The maximum length of this parameter is 63 btyes. Optional. | endpoint. The maximum length of this parameter is 63 btyes. | |||
| Optional. | ||||
| Lifetime (optional). Lifetime of the registration in seconds. | lt := Lifetime (optional). Lifetime of the registration in | |||
| Range of 60-4294967295. If no lifetime is included, a default | seconds. Range of 60-4294967295. If no lifetime is included, | |||
| value of 86400 (24 hours) SHOULD be assumed. | a default value of 86400 (24 hours) SHOULD be assumed. | |||
| Context (optional). This parameter sets the scheme, address | con := Context (optional). This parameter sets the scheme, | |||
| and port at which this server is available in the form scheme:/ | address and port at which this server is available in the form | |||
| /host:port. Optional. In the absence of this parameter the | scheme://host:port. Optional. In the absence of this | |||
| scheme of the protocol, source IP address and source port used | parameter the scheme of the protocol, source IP address and | |||
| to register are assumed. | source port used to register are assumed. | |||
| Content-Type: None | Content-Type: None | |||
| The following response codes are defined for this interface: | The following response codes are defined for this interface: | |||
| Success: 2.04 "Changed" in the update was successfully processed. | Success: 2.04 "Changed" in the update was successfully processed. | |||
| Failure: 4.00 "Bad Request". Malformed request. | Failure: 4.00 "Bad Request". Malformed request. | |||
| Failure: 5.03 "Service Unavailable". Service could not perform the | Failure: 5.03 "Service Unavailable". Service could not perform the | |||
| skipping to change at page 13, line 33 ¶ | skipping to change at page 14, line 9 ¶ | |||
| | --- PUT /rd/4521 --------------------------> | | | --- PUT /rd/4521 --------------------------> | | |||
| | | | | | | |||
| | | | | | | |||
| | <-- 2.04 Changed ---------------------------- | | | <-- 2.04 Changed ---------------------------- | | |||
| | | | | | | |||
| Req: PUT /rd/4521 | Req: PUT /rd/4521 | |||
| Res: 2.04 Changed | Res: 2.04 Changed | |||
| 5.4. Validation | 5.4. Removal | |||
| In some cases, an RD may want to validate that it has the latest | ||||
| version of an endpoint's resources. This can be performed with a GET | ||||
| on the well-known interface of the CoRE Link Format including the | ||||
| latest ETag stored for that endpoint. For the purpose of validation, | ||||
| an endpoint implementing this specification SHOULD support ETag | ||||
| validation on /.well-known/core. | ||||
| The validation request interface is specified as follows: | ||||
| Interaction: RD -> EP | ||||
| Method: GET | ||||
| Path: /.well-known/core | ||||
| Parameters: None | ||||
| ETag: The ETag option MUST be included | ||||
| The following responses codes are defined for this interface: | ||||
| Success: 2.03 "Valid" in case the ETag matches | ||||
| Success: 2.05 "Content" in case the ETag does not match, the | ||||
| response MUST include the most recent resource representation | ||||
| (application/link-format) and its corresponding ETag. | ||||
| Failure: 4.00 "Bad Request". Malformed request. | ||||
| The following examples shows a successful validation. | ||||
| EP RD | ||||
| | | | ||||
| | <--- GET /.well-known/core ETag: 0x40 -------- | | ||||
| | | | ||||
| | | | ||||
| | --- 2.03 Valid -----------------------------> | | ||||
| | | | ||||
| Req: GET /.well-known/core | ||||
| ETag: 0x40 | ||||
| Res: 2.03 Valid | ||||
| 5.5. Removal | ||||
| Although RD entries have soft state and will eventually timeout after | Although RD entries have soft state and will eventually timeout after | |||
| their lifetime, an endpoint SHOULD explicitly remove its entry from | their lifetime, an endpoint SHOULD explicitly remove its entry from | |||
| the RD if it knows it will no longer be available (for example on | the RD if it knows it will no longer be available (for example on | |||
| shut-down). This is accomplished using a removal interface on the RD | shut-down). This is accomplished using a removal interface on the RD | |||
| by performing a DELETE on the endpoint resource. | by performing a DELETE on the endpoint resource. | |||
| The removal request interface is specified as follows: | The removal request interface is specified as follows: | |||
| Interaction: EP -> RD | Interaction: EP -> RD | |||
| skipping to change at page 15, line 4 ¶ | skipping to change at page 14, line 22 ¶ | |||
| their lifetime, an endpoint SHOULD explicitly remove its entry from | their lifetime, an endpoint SHOULD explicitly remove its entry from | |||
| the RD if it knows it will no longer be available (for example on | the RD if it knows it will no longer be available (for example on | |||
| shut-down). This is accomplished using a removal interface on the RD | shut-down). This is accomplished using a removal interface on the RD | |||
| by performing a DELETE on the endpoint resource. | by performing a DELETE on the endpoint resource. | |||
| The removal request interface is specified as follows: | The removal request interface is specified as follows: | |||
| Interaction: EP -> RD | Interaction: EP -> RD | |||
| Method: DELETE | Method: DELETE | |||
| URI Template: /{+location} | URI Template: /{+location} | |||
| URI Template Variables: | URI Template Variables: | |||
| This is the Location path returned by the RD as a result of a | location := This is the Location path returned by the RD as a | |||
| successful registration. | result of a successful registration. | |||
| The following responses codes are defined for this interface: | The following responses codes are defined for this interface: | |||
| Success: 2.02 "Deleted" upon successful deletion | Success: 2.02 "Deleted" upon successful deletion | |||
| Failure: 4.00 "Bad Request". Malformed request. | Failure: 4.00 "Bad Request". Malformed request. | |||
| Failure: 5.03 "Service Unavailable". Service could not perform the | Failure: 5.03 "Service Unavailable". Service could not perform the | |||
| operation. | operation. | |||
| skipping to change at page 16, line 4 ¶ | skipping to change at page 15, line 21 ¶ | |||
| This section defines a function set for the creation of groups of | This section defines a function set for the creation of groups of | |||
| endpoints for the purpose of managing and looking up endpoints for | endpoints for the purpose of managing and looking up endpoints for | |||
| group operations. The group function set is similar to the resource | group operations. The group function set is similar to the resource | |||
| directory function set, in that a group may be created or removed. | directory function set, in that a group may be created or removed. | |||
| However unlike an endpoint entry, a group entry consists of a list of | However unlike an endpoint entry, a group entry consists of a list of | |||
| endpoints and does not have a lifetime associated with it. In order | endpoints and does not have a lifetime associated with it. In order | |||
| to make use of multicast requests with CoAP, a group MAY have a | to make use of multicast requests with CoAP, a group MAY have a | |||
| multicast address associated with it. | multicast address associated with it. | |||
| 6.1. Register a Group | 6.1. Register a Group | |||
| In order to create a group, a management entity used to configure | In order to create a group, a management entity used to configure | |||
| groups, makes a request to the RD indicating the name of the group to | groups, makes a request to the RD indicating the name of the group to | |||
| create (or update), the optional domain the group belongs to, and the | create (or update), the optional domain the group belongs to, and the | |||
| optional multicast address of the group. The registration message | optional multicast address of the group. The registration message | |||
| includes the list of endpoints that belong to that group. If an | includes the list of endpoints that belong to that group. If an | |||
| endpoint has already registered with the RD, the RD attempts to use | endpoint has already registered with the RD, the RD attempts to use | |||
| the context of the endpoint from its RD endpoint entry. If the | the context of the endpoint from its RD endpoint entry. If the | |||
| client registering the group knows the endpoint has already | client registering the group knows the endpoint has already | |||
| registered, then it MAY send a blank target URI for that endpoint | registered, then it MAY send a blank target URI for that endpoint | |||
| link when registering the group. | link when registering the group. Configuration of the endpoints | |||
| themselves is out of scope of this specification. Such an interface | ||||
| for managing the group membership of an endpoint has been defined in | ||||
| [I-D.ietf-core-groupcomm]. | ||||
| The registration request interface is specified as follows: | The registration request interface is specified as follows: | |||
| Interaction: Manager -> RD | Interaction: Manager -> RD | |||
| Method: POST | Method: POST | |||
| URI Template: /{+rd-group}{?gp,d,con} | URI Template: /{+rd-group}{?gp,d,con} | |||
| URI Template Variables: | URI Template Variables: | |||
| RD Group Function Set path (mandatory). This is the path of | rd-group := RD Group Function Set path (mandatory). This is the | |||
| the RD Group Function Set. An RD SHOULD use the value "rd- | path of the RD Group Function Set. An RD SHOULD use the value | |||
| group" for this variable whenever possible. | "rd-group" for this variable whenever possible. | |||
| Group Name (mandatory). The name of the group to be created or | gp := Group Name (mandatory). The name of the group to be | |||
| replaced, unique within that domain. The maximum length of | created or replaced, unique within that domain. The maximum | |||
| this parameter is 63 bytes. | length of this parameter is 63 bytes. | |||
| Domain (optional). The domain to which this group belongs. | d := Domain (optional). The domain to which this group belongs. | |||
| The maximum length of this parameter is 63 bytes. Optional. | The maximum length of this parameter is 63 bytes. Optional. | |||
| When this parameter is elided, the RD MAY associate the | When this parameter is elided, the RD MAY associate the | |||
| endpoint with a configured default domain. | endpoint with a configured default domain. | |||
| Context (optional). This parameter is used to set the IP | con := Context (optional). This parameter is used to set the IP | |||
| multicast address at which this server is available in the form | multicast address at which this server is available in the form | |||
| scheme://multicast-address:port. Optional. In the absence of | scheme://multicast-address:port. Optional. In the absence of | |||
| this parameter no multicast address is configured. | this parameter no multicast address is configured. | |||
| Content-Type: application/link-format | Content-Type: application/link-format | |||
| Content-Type: application/link-format+json | ||||
| The following response codes are defined for this interface: | The following response codes are defined for this interface: | |||
| Success: 2.01 "Created". The Location header MUST be included with | Success: 2.01 "Created". The Location header MUST be included with | |||
| the new group entry. This Location MUST be a stable identifier | the new group entry. This Location MUST be a stable identifier | |||
| generated by the RD as it is used for delete operations on this | generated by the RD as it is used for delete operations on this | |||
| registration. | registration. | |||
| Failure: 4.00 "Bad Request". Malformed request. | Failure: 4.00 "Bad Request". Malformed request. | |||
| Failure: 5.03 "Service Unavailable". Service could not perform the | Failure: 5.03 "Service Unavailable". Service could not perform the | |||
| skipping to change at page 17, line 47 ¶ | skipping to change at page 17, line 29 ¶ | |||
| The removal request interface is specified as follows: | The removal request interface is specified as follows: | |||
| Interaction: Manager -> RD | Interaction: Manager -> RD | |||
| Method: DELETE | Method: DELETE | |||
| URI Template: /{+location} | URI Template: /{+location} | |||
| URI Template Variables: | URI Template Variables: | |||
| This is the Location path returned by the RD as a result of a | location := This is the Location path returned by the RD as a | |||
| successful group registration. | result of a successful group registration. | |||
| The following responses codes are defined for this interface: | The following responses codes are defined for this interface: | |||
| Success: 2.02 "Deleted" upon successful deletion | Success: 2.02 "Deleted" upon successful deletion | |||
| Failure: 4.00 "Bad Request". Malformed request. | Failure: 4.00 "Bad Request". Malformed request. | |||
| Failure: 5.03 "Service Unavailable". Service could not perform the | Failure: 5.03 "Service Unavailable". Service could not perform the | |||
| operation. | operation. | |||
| skipping to change at page 18, line 36 ¶ | skipping to change at page 18, line 16 ¶ | |||
| Res: 2.02 Deleted | Res: 2.02 Deleted | |||
| 7. RD Lookup Function Set | 7. RD Lookup Function Set | |||
| In order for an RD to be used for discovering resources registered | In order for an RD to be used for discovering resources registered | |||
| with it, a lookup interface can be provided using this function set. | with it, a lookup interface can be provided using this function set. | |||
| This lookup interface is defined as a default, and it is assumed that | This lookup interface is defined as a default, and it is assumed that | |||
| RDs may also support lookups to return resource descriptions in | RDs may also support lookups to return resource descriptions in | |||
| alternative formats (e.g. Atom or HTML Link) or using more advanced | alternative formats (e.g. Atom or HTML Link) or using more advanced | |||
| interfaces (e.g. supporting context or semantic based lookup). | interfaces (e.g. supporting context or semantic based lookup). | |||
| This function set allows lookups for domains, groups, endpoints and | This function set allows lookups for domains, groups, endpoints and | |||
| resources using attributes defined in the RD Function Set and for use | resources using attributes defined in the RD Function Set and for use | |||
| with the CoRE Link Format. The result of a lookup request is the | with the CoRE Link Format. The result of a lookup request is the | |||
| list of links (if any) in CoRE Link Format corresponding to the type | list of links (if any) in CoRE Link Format corresponding to the type | |||
| of lookup. The target of these links SHOULD be the actual location | of lookup. The target of these links SHOULD be the actual location | |||
| of the domain, endpoint or resource, but MAY be an intermediate proxy | of the domain, endpoint or resource, but MAY be an intermediate proxy | |||
| e.g. in the case of an HTTP lookup interface for CoAP endpoints. | e.g. in the case of an HTTP lookup interface for CoAP endpoints. | |||
| Multiple query parameters MAY be included in a lookup, all included | Multiple query parameters MAY be included in a lookup, all included | |||
| parameters MUST match for a resource to be returned. The character | parameters MUST match for a resource to be returned. The character | |||
| '*' MAY be included at the end of a parameter value as a wildcard | '*' MAY be included at the end of a parameter value as a wildcard | |||
| operator. | operator. | |||
| The lookup interface is specified as follows: | The lookup interface is specified as follows: | |||
| Interaction: Client -> RD | Interaction: Client -> RD | |||
| Method: GET | Method: GET | |||
| URI Template: /{+rd-lookup-base}/{lookup- | URI Template: /{+rd-lookup-base}/ | |||
| type}{?d,ep,gp,et,rt,page,count,resource-param} | {lookup-type}{?d,ep,gp,et,rt,page,count,resource-param} | |||
| Parameters: | Parameters: | |||
| rd-lookup-base := RD Lookup Function Set path (mandatory). This | rd-lookup-base := RD Lookup Function Set path (mandatory). This | |||
| is the path of the RD Lookup Function Set. An RD SHOULD use | is the path of the RD Lookup Function Set. An RD SHOULD use the | |||
| the value "rd-lookup" for this variable whenever possible. | value "rd-lookup" for this variable whenever possible. | |||
| lookup-type := ("d", "ep", "res", "gp") (mandatory) This | lookup-type := ("d", "ep", "res", "gp") (mandatory) This | |||
| variable is used to select the kind of lookup to perform | variable is used to select the kind of lookup to perform | |||
| (domain, endpoint or resource). | (domain, endpoint or resource). | |||
| ep := Endpoint (optional). Used for endpoint, group and | ep := Endpoint (optional). Used for endpoint, group and | |||
| resource lookups. | resource lookups. | |||
| d := Domain (optional). Used for domain, group, endpoint and | d := Domain (optional). Used for domain, group, endpoint and | |||
| resource lookups. | resource lookups. | |||
| page := Page (optional). Parameter can not be used without the | page := Page (optional). Parameter can not be used without the | |||
| count parameter. Results are returned from result set in | count parameter. Results are returned from result set in pages | |||
| pages that contains 'count' results starting from index | that contains 'count' results starting from index (page * | |||
| (page * count). | count). | |||
| count := Count (optional). Number of results is limited to this | count := Count (optional). Number of results is limited to this | |||
| parameter value. If the parameter is not present, then an | parameter value. If the parameter is not present, then an RD | |||
| RD implementation specific default value SHOULD be used. | implementation specific default value SHOULD be used. | |||
| rt := Resource type (optional). Used for group, endpoint and | rt := Resource type (optional). Used for group, endpoint and | |||
| resource lookups. | resource lookups. | |||
| rt := Endpoint type (optional). Used for group, endpoint and | et := Endpoint type (optional). Used for group, endpoint and | |||
| resource lookups. | resource lookups. | |||
| resource-param := Link attribute parameters (optional). Any | resource-param := Link attribute parameters (optional). Any | |||
| link attribute as defined in Section 4.1 of [RFC6690], used | link attribute as defined in Section 4.1 of [RFC6690], used for | |||
| for resource lookups. | resource lookups. | |||
| The following responses codes are defined for this interface: | The following responses codes are defined for this interface: | |||
| Success: 2.05 "Content" with an application/link-format payload | Success: 2.05 "Content" with an application/link-format or | |||
| containing a matching entries for the lookup. | application/link-format+json payload containing a matching entries | |||
| for the lookup. | ||||
| Failure: 4.04 "Not Found" in case no matching entry is found for a | Failure: 4.04 "Not Found" in case no matching entry is found for a | |||
| unicast request. | unicast request. | |||
| Failure: No error response to a multicast request. | Failure: No error response to a multicast request. | |||
| Failure: 4.00 "Bad Request". Malformed request. | Failure: 4.00 "Bad Request". Malformed request. | |||
| Failure: 5.03 "Service Unavailable". Service could not perform the | Failure: 5.03 "Service Unavailable". Service could not perform the | |||
| operation. | operation. | |||
| skipping to change at page 23, line 42 ¶ | skipping to change at page 23, line 20 ¶ | |||
| description MAY be exported by a resource directory to external | description MAY be exported by 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. | example the entry point resource to a functional service. | |||
| 9. Security Considerations | 9. DNS-SD Mapping | |||
| TODO | ||||
| 10. Security Considerations | ||||
| This document needs the same security considerations as described in | This document needs the same security considerations as described in | |||
| Section 7 of [RFC5988] and Section 6 of [RFC6690]. The /.well-known/ | Section 7 of [RFC5988] and Section 6 of [RFC6690]. The /.well-known/ | |||
| core resource may be protected e.g. using DTLS when hosted on a CoAP | core resource may be protected e.g. using DTLS when hosted on a CoAP | |||
| server as described in [I-D.ietf-core-coap]. | server as described in [I-D.ietf-core-coap]. | |||
| Access control SHOULD be performed separately for the RD Function Set | Access control SHOULD be performed separately for the RD Function Set | |||
| and the RD Lookup Function Set, as different endpoints may be | and the RD Lookup Function Set, as different endpoints may be | |||
| authorized to register with an RD from those authorized to lookup | authorized to register with an RD from those authorized to lookup | |||
| endpoints from the RD. Such access control SHOULD be performed in as | endpoints from the RD. Such access control SHOULD be performed in as | |||
| fine-grained a level as possible. For example access control for | fine-grained a level as possible. For example access control for | |||
| lookups could be performed either at the domain, endpoint or resource | lookups could be performed either at the domain, endpoint or resource | |||
| level. | level. | |||
| 10. IANA Considerations | 11. IANA Considerations | |||
| 11.1. Resource Types | ||||
| "core.rd", "core.rd-group" and "core.rd-lookup" resource types need | "core.rd", "core.rd-group" and "core.rd-lookup" resource types need | |||
| to be registered with the resource type registry defined by | to be registered with the resource type registry defined by | |||
| [RFC6690]. | [RFC6690]. | |||
| 11.2. Link Extension | ||||
| The "exp" attribute needs to be registered when a future Web Linking | The "exp" attribute needs to be registered when a future Web Linking | |||
| attribute is created. | link-extension registry is created (e.g. in RFC5988bis). | |||
| 11. Acknowledgments | 11.3. RD Parameter Registry | |||
| This specification defines a new sub-registry for registration and | ||||
| lookup parameters called "RD Parameters" under "CoRE Parameters". | ||||
| Although this specification defines a basic set of parameters, it is | ||||
| expected that other standards that make use of this interface will | ||||
| define new ones. | ||||
| Each entry in the registry must include the human readable name of | ||||
| the parameter, the query parameter, validity requirements if any and | ||||
| a description. The query parameter MUST be a valid URI query key | ||||
| [RFC3986]. | ||||
| Initial entries in this sub-registry are as follows: | ||||
| +----------+-------+---------------+--------------------------------+ | ||||
| | Name | Query | Validity | Description | | ||||
| +----------+-------+---------------+--------------------------------+ | ||||
| | Endpoint | ep | < 63 bytes | Name of the endpoint | | ||||
| | Name | | | | | ||||
| | Lifetime | lt | 60-4294967295 | Lifetime of the registration | | ||||
| | | | | in seconds | | ||||
| | Domain | d | < 63 bytes | Domain to which this endpoint | | ||||
| | | | | belongs | | ||||
| | Endpoint | et | | Semantic name of the endpoint | | ||||
| | Type | | | | | ||||
| | Context | con | URI | The scheme, address and port | | ||||
| | | | | at which this server is | | ||||
| | | | | available | | ||||
| | Endpoint | ep | | Name of the endpoint, max 63 | | ||||
| | Name | | | bytes | | ||||
| | Group | gp | | Name of a group in the RD | | ||||
| | Name | | | | | ||||
| | Page | page | Integer | Used for pagination | | ||||
| | Count | count | Integer | Used for pagination | | ||||
| +----------+-------+---------------+--------------------------------+ | ||||
| Table 1: RD Parameters | ||||
| The IANA policy for future additions to the sub-registry is "Expert | ||||
| Review" as described in [RFC5226] | ||||
| 12. Acknowledgments | ||||
| Szymon Sasin, Kerry Lynn, Esko Dijk, Peter van der Stok, Anders | Szymon Sasin, Kerry Lynn, Esko Dijk, Peter van der Stok, Anders | |||
| Brandt, Matthieu Vial, Sampo Ukkola and Linyi Tian have provided | Brandt, Matthieu Vial, Sampo Ukkola and Linyi Tian have provided | |||
| helpful comments, discussions and ideas to improve and shape this | helpful comments, discussions and ideas to improve and shape this | |||
| document. The authors would also like to thank their collagues from | document. The authors would also like to thank their collagues from | |||
| the EU FP7 SENSEI project, where many of the resource directory | the EU FP7 SENSEI project, where many of the resource directory | |||
| concepts were originally developed. | concepts were originally developed. | |||
| 12. Changelog | 13. Changelog | |||
| Changes from -00 to -01: | ||||
| o Removed the ETag validation feature. | ||||
| o Place holder for the DNS-SD mapping section. | ||||
| o Explicitly disabled GET or POST on returned Location. | ||||
| o New registry for RD parameters. | ||||
| o Added support for the JSON Link Format. | ||||
| o Added reference to the Groupcomm WG draft. | ||||
| Changes from -05 to WG Document -00: | Changes from -05 to WG Document -00: | |||
| o Updated the version and date. | o Updated the version and date. | |||
| Changes from -04 to -05: | Changes from -04 to -05: | |||
| o Restricted Update to parameter updates. | o Restricted Update to parameter updates. | |||
| o Added pagination support for the Lookup interface. | o Added pagination support for the Lookup interface. | |||
| skipping to change at page 25, line 43 ¶ | skipping to change at page 26, line 41 ¶ | |||
| o Added the concept of an RD Domain and a registration parameter | o Added the concept of an RD Domain and a registration parameter | |||
| for it. | for it. | |||
| o Recommended the Location returned from a registration to be | o Recommended the Location returned from a registration to be | |||
| stable, allowing for endpoint and Domain information to be changed | stable, allowing for endpoint and Domain information to be changed | |||
| during updates. | during updates. | |||
| o Changed the lookup interface to accept endpoint and Domain as | o Changed the lookup interface to accept endpoint and Domain as | |||
| query string parameters to control the scope of a lookup. | query string parameters to control the scope of a lookup. | |||
| 13. References | 14. References | |||
| 13.1. Normative References | 14.1. Normative References | |||
| [I-D.ietf-core-links-json] | ||||
| Bormann, C., "Representing CoRE Link Collections in JSON", | ||||
| draft-ietf-core-links-json-00 (work in progress), | ||||
| June 2013. | ||||
| [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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
| Resource Identifier (URI): Generic Syntax", STD 66, | ||||
| RFC 3986, January 2005. | ||||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | ||||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | ||||
| May 2008. | ||||
| [RFC5988] Nottingham, M., "Web Linking", RFC 5988, October 2010. | [RFC5988] Nottingham, M., "Web Linking", RFC 5988, October 2010. | |||
| [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, March 2012. | and D. Orchard, "URI Template", RFC 6570, March 2012. | |||
| [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link | [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link | |||
| Format", RFC 6690, August 2012. | Format", RFC 6690, August 2012. | |||
| 13.2. Informative References | 14.2. Informative References | |||
| [I-D.brandt-coap-subnet-discovery] | [I-D.brandt-coap-subnet-discovery] | |||
| Brandt, A., "Discovery of CoAP servers across subnets", | Brandt, A., "Discovery of CoAP servers across subnets", | |||
| draft-brandt-coap-subnet-discovery-00 (work in progress), | draft-brandt-coap-subnet-discovery-00 (work in progress), | |||
| March 2011. | March 2011. | |||
| [I-D.ietf-core-coap] | [I-D.ietf-core-coap] | |||
| Shelby, Z., Hartke, K., and C. Bormann, "Constrained | Shelby, Z., Hartke, K., and C. Bormann, "Constrained | |||
| Application Protocol (CoAP)", draft-ietf-core-coap-14 | Application Protocol (CoAP)", draft-ietf-core-coap-18 | |||
| (work in progress), March 2013. | (work in progress), June 2013. | |||
| [I-D.ietf-core-groupcomm] | ||||
| Rahman, A. and E. Dijk, "Group Communication for CoAP", | ||||
| draft-ietf-core-groupcomm-16 (work in progress), | ||||
| October 2013. | ||||
| [I-D.vanderstok-core-bc] | [I-D.vanderstok-core-bc] | |||
| Stok, P. and K. Lynn, "CoAP Utilization for Building | Stok, P. and K. Lynn, "CoAP Utilization for Building | |||
| Control", draft-vanderstok-core-bc-05 (work in progress), | Control", draft-vanderstok-core-bc-05 (work in progress), | |||
| October 2011. | October 2011. | |||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
| Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
| Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
| [RFC6775] Shelby, Z., Chakrabarti, S., Nordmark, E., and C. Bormann, | [RFC6775] Shelby, Z., Chakrabarti, S., Nordmark, E., and C. Bormann, | |||
| "Neighbor Discovery Optimization for IPv6 over Low-Power | "Neighbor Discovery Optimization for IPv6 over Low-Power | |||
| Wireless Personal Area Networks (6LoWPANs)", RFC 6775, | Wireless Personal Area Networks (6LoWPANs)", RFC 6775, | |||
| November 2012. | November 2012. | |||
| Authors' Addresses | Authors' Addresses | |||
| Zach Shelby | Zach Shelby | |||
| Sensinode | ARM | |||
| Kidekuja 2 | 150 Rose Orchard | |||
| Vuokatti 88600 | San Jose 95134 | |||
| FINLAND | FINLAND | |||
| Phone: +358407796297 | Phone: +1-408-203-9434 | |||
| Email: zach@sensinode.com | Email: zach.shelby@arm.com | |||
| Srdjan Krco | ||||
| Ericsson | ||||
| Email: srdjan.krco@ericsson.com | ||||
| Carsten Bormann | Carsten Bormann | |||
| Universitaet Bremen TZI | Universitaet Bremen TZI | |||
| Postfach 330440 | Postfach 330440 | |||
| Bremen D-28359 | Bremen D-28359 | |||
| Germany | Germany | |||
| Phone: +49-421-218-63921 | Phone: +49-421-218-63921 | |||
| Email: cabo@tzi.org | Email: cabo@tzi.org | |||
| Srdjan Krco | ||||
| Ericsson | ||||
| Phone: | ||||
| Email: srdjan.krco@ericsson.com | ||||
| End of changes. 71 change blocks. | ||||
| 203 lines changed or deleted | 247 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||