Accept-Any option for CoAP
draft-amsuess-core-accept-any-00

Document Type Active Internet-Draft (individual)
Last updated 2019-03-25
Stream (None)
Intended RFC status (None)
Formats plain text xml pdf html bibtex
Stream Stream state (No stream defined)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date
Responsible AD (None)
Send notices to (None)
CoRE                                                          C. Amsuess
Internet-Draft                                            March 25, 2019
Updates: 7641 (if approved)
Intended status: Standards Track
Expires: September 26, 2019

                       Accept-Any option for CoAP
                    draft-amsuess-core-accept-any-00

Abstract

   This memoy defines the Accept-Any option, which provides a more
   flexible content negotiation than the one originally specified for
   the Constrained Application Protocol (CoAP) in [RFC7252].  As this is
   particularly useful with but ruled out in CoAP observation
   ([RFC7641]), that is updated to allow it.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on September 26, 2019.

Copyright Notice

   Copyright (c) 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of

Amsuess                Expires September 26, 2019               [Page 1]
Internet-Draft         Accept-Any option for CoAP             March 2019

   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

1.  Introduction

   [ This document is being developed in git at
   https://github.com/chrysn/accept-any [1]. ]

   When CoAP content format defined in [RFC7252], the choice was made to
   have the initial content negotiation allow the client to only pick
   zero or one content format.  This is a good choice for many
   situations and ensures that proxies can cache as much as possible
   without added complexity.  A client that does not know a usable
   content format would either leave the request field absent,
   indicating it would accept any response, or try several acceptble
   values in a series of requests.

   In line with that choice, observation ([RFC7641]) required
   notification responses to carry the same content format in the
   notification as in the original response.

   For applications that expect a representation to change its
   representability to change during an observation's lifetime,
   [I-D.ietf-core-multipart-ct] introduces a way of wrapping responses
   in an application/multipart-core response.  That approach is
   convenient for bags of representations, but lacks actual content
   negotiation and produces representations that are not directly usable
   but need to be processed from inside the multipart representation.

   This document introduces an additional way for the client to indicate
   its set of acceptable content formats, and removes the same-content-
   format limitation during observation.

2.  The Accept-Any option

   A new option Accept-Any is defined.  It is critical [ I don't fully
   see why but follow Accept here ], safe-to-foward and part of the
   cache key.  Its format is uint up to 2 long (indicating content
   types), it is Class E in OSCORE, usable in requests only, and
   repeatable

   Repeatability is the only aspect in which it differs from Accept in
   terms of option properties.

   Its values indicate a list of acceptable representations in order of
   decreasing preference.  A server MUST answer with the first format it
   can represent the requested state in, or 4.06 (Not Acceptable) if it

Amsuess                Expires September 26, 2019               [Page 2]
Internet-Draft         Accept-Any option for CoAP             March 2019

   could answer successfully but the response would not match any of the
   option values.

   The Accept-Any option MUST NOT be used exactly once; that request's
   meaning would be identical to that of a single Accept option.
   Instead, a single Accept option is used.

2.1.  Proxy behavior

   A proxy MAY ignore this option per its properties (and serve a cached
   response if the cache key matches), but can implement additional
   behavior to enhance its cache.

   A proxy is allowed to serve a cached representation to a request with
Show full document text