Internet DRAFT - draft-groves-core-senml-options
draft-groves-core-senml-options
CoRE Working Group C. Groves
Internet-Draft W. Yang
Intended status: Standards Track Huawei
Expires: September 11, 2017 March 10, 2017
SenML Options
draft-groves-core-senml-options-00
Abstract
SenML [I-D.ietf-core-senml] defines an initial set of base and
regular attributes which are tied to a particular version of SenML.
SenML also allows the definition of additional attributes by
extending the syntax with a new label. Allowing the extension of
attributes brings the problem of how do endpoints negotiate whether
the new attribute can be used or not? This document discusses the
issue and proposes some potential solutions to this issue.
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 http://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 11, 2017.
Copyright Notice
Copyright (c) 2017 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
(http://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
Groves & Yang Expires September 11, 2017 [Page 1]
Internet-Draft SenML Options March 2017
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Solution space analysis . . . . . . . . . . . . . . . . . . . 3
3.1. Version Numbering . . . . . . . . . . . . . . . . . . . . 4
3.2. Mandatory / Optional Indication . . . . . . . . . . . . . 4
3.3. Options Mechanism . . . . . . . . . . . . . . . . . . . . 5
3.4. Media Type Definition and Parameters . . . . . . . . . . 6
4. Solution Proposal . . . . . . . . . . . . . . . . . . . . . . 7
4.1. Accept Media Type Parameter (AMTP) Option . . . . . . . . 9
4.2. Content-Format Media-Type Parameter Option . . . . . . . 10
5. Security Considerations . . . . . . . . . . . . . . . . . . . 11
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11
8. Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . 11
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
9.1. Normative References . . . . . . . . . . . . . . . . . . 11
9.2. Informative References . . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13
1. Introduction
SenML [I-D.ietf-core-senml] defines an initial set of base and
regular attributes which are tied to a particular version of SenML.
SenML also allows the definition of additional attributes by
extending the defined syntax with a new label. Allowing the
extension of attributes brings the problem of how do endpoints
negotiate whether the new attribute can be used or not?
For example: A CoAP client issues a GET that indicates support of
SenML through the use of an CoAP Accept option. A CoAP server
supports the SenML attributes defined in [I-D.ietf-core-senml] and in
addition supports the Base Time Offset (BTO)
[I-D.groves-core-senml-bto] attribute. The server responds using the
BTO attribute.
Groves & Yang Expires September 11, 2017 [Page 2]
Internet-Draft SenML Options March 2017
[ {"bn": "urn:dev:ow:10e2073a01080063",
"bt": 1320067464,
"bto": 10,
"bu": "%RH",
"v": 21.2},
{ "v": 21.3},
{ "v": 21.4},
{ "v": 21.4},
{ "v": 21.5},
{ "v": 21.5},
{ "v": 21.5},
{ "v": 21.6},
{ "v": 21.7},
{ "v": 21.5},
...
Figure 1: Response with SenML using base time offset
As the CoAP client does not understand the "bto" attribute it will
ignore the attribute. This means that the time information is lost
for each of the SenML records. Whereas if the Server had not used
"bto" the client would have been able to understand the information.
This is mainly a problem when the server provides a response to a
message (i.e. GET) rather than when a client uses the SenML media
type in a message (i.e. PUT). In this later case the client can
modify its behaviour and not use an attribute based on an error
response from the server.
A solution is needed to prevent incompatible attributes from being
used.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
[RFC2119].
See [I-D.ietf-core-senml] for further definitions.
3. Solution space analysis
The extension of protocols in a compatible manner is not a new
problem. Some approaches to handle the are discussed below. The
discussion below is not meant to be treatise on protocol extension
but to highlight potential solutions.
Groves & Yang Expires September 11, 2017 [Page 3]
Internet-Draft SenML Options March 2017
3.1. Version Numbering
A version number is used to indicate when changes have been made to a
syntax. In some protocols a major version is used to indicate non-
backward compatible changes and a minor version is used to indicate
backwards compatible changes. SenML does use a version number
however it is an integer (no major and minor). It is used to
indicate the version number of the media type format. The version
does not appear in the media type format name. However presumably
the proposed registrations (e.g. senml+json) imply the use of version
number 10 (see sect.4.1/[I-D.ietf-core-senml]). If in the future
there is a new version how does the endpoint negotiate which SenML
version to use? A simple solution would be to create a new media
type name incorporating the new version e.g. "senml_v11+json". A
CoAP endpoint could then use an Accept option to indicate support for
"senml+json" and/or "senml_v11+json".
This method does generally mean that for each new attribute and
version the endpoints must at least understand all previously defined
attributes. Although major versions in some protocols do not
maintain backwards compatibility.
SenML does indicate that for certain representations i.e. EXI
representation (application/senml+exi) that the schemaID number must
be updated when the syntax is updated for a new attribute. This is
effectively a version mechanism but the other representation formats
do not follow this approach.
However the current SenML draft does allow the definition of
additional attributes without increasing the SenML version number.
Indeed there is a trend at the IETF that protocol versions change
very rarely. Instead updates are incorporated via option or
extension mechanisms.
Therefore it seems that an approach of utilising a version number for
each additional new attribute does not seem appropriate for SenML.
3.2. Mandatory / Optional Indication
Some protocols use a mechanism to indicate whether a parameter is
mandatory or optional to understand. This is based on the assumption
that a sending endpoint knows the functions that a parameter/s relate
to and can indicate whether the receiving endpoint must understand
the parameter/s to implement the function. A receiving endpoint will
anaylse the received parameters and if it does not understand the
parameter it will check the mandatory/option tag to see what it
should do. If the parameter is marked as mandatory then the
receiving endpoint will generate an error. If the parameter is
Groves & Yang Expires September 11, 2017 [Page 4]
Internet-Draft SenML Options March 2017
marked as optional then the receiving endpoint will continue
processing in knowledge that it doesn't need the parameter.
CoAP uses a mechanism similar to this for Options. By looking at the
option number an endpoint can determine whether it is critical or
not.
SenML does indicate that the version indicates the mandatory to
understand attributes (sect. 4.3/[I-D.ietf-core-senml]). SenML also
indicates that some attributes (i.e. base attributes) are optional
but this is in context of "optional to be used" rather than "optional
to be understood".
Whilst a method could be defined to indicate in SenML whether an
attribute is mandatory or optional, its not clear that it would be
useful. Given the number of use cases where CoAP can be used a
server may not know which information in a SenML pack is relevant for
a client. E.g. Whilst a server may return time information
associated with a record it doesn't actually know whether it is
useful to the client. The usefulness is application specific to the
client.
Therefore it seems this approach is also not appropriate for SenML.
3.3. Options Mechanism
Some protocols allow the optional parts of the protocol to be
negotiated during the initial protocol negotiation. For example the
SIP protocol has the OPTIONS method [RFC3261]. The CLUE protocol
[I-D.ietf-clue-protocol] also defines an extension method where an
OPTIONS message is used to negotiate the protocol extensions. The
benefits of such an approach is that two endpoints can negotiate
which extensions they will use in a session ensuring compatible
communications.
However these approaches assume an application level session where
there are establishment, communication and release phases. SenML is
a media type format primarly defined to be used with the HTTP and
CoAP protocols. These protocols don't follow a session based
approach.
HTTP/1.1 does have the OPTIONS method [RFC2616] however the use is
largely undocumented. CoAP does not have an equivalent method.
CoAP does have a method for negotiating signalling through "Signaling
Option Numbers" (sect.4.2/[I-D.ietf-core-coap-tcp-tls]). This
however is more used to negotiate the properties of the signalling
Groves & Yang Expires September 11, 2017 [Page 5]
Internet-Draft SenML Options March 2017
connection than any elements of the CoAP payload (not withstanding
the Blockwise transfer).
CoAP does have the OPTIONs mechanism allowing for the definition of
optionality functionality associated with a CoAP message. It also
defines the concept of critical and elective options. Two options
related to Content-type/Content-format are "Content-Format" and
"Accept". These options allow endpoints to indicate the media types
are using or wish to use. HTTP also uses these options.
CoAP also allows a per message exchange of what is supported for a
particular resource. This seems more appropriate than a protocol
level negotiation of the support of SenML attributes.
This functionality is very close to what needs to be acheived for
negotiating SenML attributes.
3.4. Media Type Definition and Parameters
Potentially the media type name could be used to indicate versions or
extensions. This may be appropriate where there are seldom changes
that affect the whole media type. However it may become unwieldy if
the media type name is used to define combinations of SenML
attributes, e.g. given 3 extensions a, b and c you could end up with
media names / content formats for a, b, c, a+b, a+c, b+c, a+b+c. The
problem gets worse each time an extension is added. It is made even
worse because Table 7/[I-D.ietf-core-senml] defines 8 different
content formats for SenML that would need to be updated. To allow
combinations of these parameters on the media types defined in SenML
it would need 56 Content-format code points. The content format
range 0..255 for IETF specifications isn't particularly large.
[RFC6838] allows for the registration of media type parameters. This
allows further companion information to be included along with the
media type. Charset is a common parameter (See [RFC3023]). This
information could be used to provide version or option information
associated with a media type.
This appears to be a good solution to indicate if additional SenML
attributes are supported in a media type. Whilst HTTP supports media
type parameters, CoAP does not support media type parameters or
extensions (i.e. see sect.10.2.2/[RFC7252]). Meaning that parameters
cannot be used as a common approach for HTTP and CoAP. However this
solution is used in section 16.9.1/[I-D.ietf-cose-msg] which takes
the approach of defining an optional parameter for the "application/
cose". It then assigns multiple CoAP Content-Formats for the values
associated with the optional parameter (see
sect.16.10/[I-D.ietf-cose-msg]).
Groves & Yang Expires September 11, 2017 [Page 6]
Internet-Draft SenML Options March 2017
4. Solution Proposal
There doesn't appear to be one outstanding approach for negotiating
SenML attributes common to both HTTP and CoAP. The authors believe
that a hybrid approach as per [I-D.ietf-cose-msg] is needed in order
to be able to negotiate which SenML extension attributes are used.
The first part would be the definition of a optional media-type
parameter that allows an endpoint utilising HTTP to indicate the
SenML extension attributes that it is using or accepts. This could
be in the form of a comma separated string list of SenML labels from
those registered in the SenML label registry. Only attributes NOT
defined in [I-D.ietf-core-senml] would be allowed.
e.g. Content-type: application/senml+json; ext=abc,xyz
In order to allow this functionality in the base version of SenML an
optional parameter would be needed in the media type registrations in
sect.11.3/[I-D.ietf-core-senml].
i.e. o Optional parameter: SenML extensions
This parameter indicates which SenML extensions are associated with
the media type. The parameter is defined by the following ABNF:
SenML-ext = "ext" "=" <"> senml-label *("," senml-label) <">
; Note: this follows the {{RFC2616}} quoted-string form.
; senml-label is the label string from the list of IANA
; registered SenML labels.
; Only non-{{I-D.ietf-core-senml}} labels are allowed.
For example: ext="a,b,c";
If the group decides that there will only ever be a small number of
SenML extensions then the simplest approach would be to follow
[I-D.ietf-cose-msg] and define multiple CoAP content formats
associated with potential extensions. This would be done in which
ever document defines the SenML extension. For example
[I-D.groves-core-senml-bto] would add the following to the IANA
considerations section:
Groves & Yang Expires September 11, 2017 [Page 7]
Internet-Draft SenML Options March 2017
+------------------------------------+----------+-----+-----------+
| Media Type | Encoding | ID | Reference |
+------------------------------------+----------+-----+-----------+
| application/senml+json; ext="bto" | | TBD | TBD |
| | | | |
| application/sensml+json; ext="bto" | | TBD | TBD |
| | | | |
| application/senml+cbor; ext="bto" | | TBD | TBD |
| | | | |
| application/sensml+cbor; ext="bto" | | TBD | TBD |
| | | | |
| application/senml+xml; ext="bto" | | TBD | TBD |
| | | | |
| application/sensml+xml; ext="bto" | | TBD | TBD |
| | | | |
| application/senml+exi; ext="bto" | | TBD | TBD |
| | | | |
| application/sensml+exi; ext="bto" | | TBD | TBD |
+------------------------------------+----------+-----+-----------+
Table 1: New CoAP content formats
Text would also need to be added to [I-D.ietf-core-senml] to describe
the procedure for support of the media type parameter in CoAP.
If issuing potentially a large number of content-format numbers is
problematic a separate approach could be taken. A new CoAP option
could be defined to allow media-type parameters to be carried in CoAP
messages when then Content-Format or Accept options are used. As the
Content-Format and Accept options may be used in the same request
(with two different media types) two new options would be required,
one for the media-type parameters associated with the Content-Format
Option and one for the media-type parameters associated with the
Accept option.
*Editor's note: Alternatives could include defining the option for
both CoAP and HTTP. However this would likely mean that the option
would become specific to SenML extensions rather than a general
mechanism for carrying media type parameters.*
As CoAP only allows a single Content-Format to be carried in the
Content-Format and Accept options it would be straight forward to
define an option that allows media-type parameters to be carried.
One complication is that the encoding and syntax of the media-type
parameters is up to the media-type definition. It could be a string,
integer, binary, etc. Therefore the option value would need to be an
opaque sequence of bytes. If the scope was limited to SenML then the
option format would be a narrowed to a string of labels.
Groves & Yang Expires September 11, 2017 [Page 8]
Internet-Draft SenML Options March 2017
As multiple parameters could be defined for a media-type the
mechanism must allow multiple media type parameter to be signalled in
a CLUE message. One possible method is to define the option value
syntax to allow multiple parameter to be specified as a single
parameter value. Alternatively multiple instances of the option
could be used in the CoAP message. This method is indicated in the
IANA registration by allowing the option multiple times.
If a new generic option is defined it's not clear that
[I-D.ietf-core-senml] would be the best place to define the option.
If the scope is limited then [I-D.ietf-core-senml] would be
appropriate. Whichever draft defines the options it would need to
define them for registration with IANA along the lines of:
+--------+-------+-----------+
| Number | Name | Reference |
+--------+-------+-----------+
| TBD | AMTP | TBD |
| | | |
| TBD | CFMTP | TBD |
+--------+-------+-----------+
Table 2: New CoAP Option Numbers
4.1. Accept Media Type Parameter (AMTP) Option
o The meaning of the option in a request: It indicates the media-type
parameters associated with the content-format (media-type) specified
in the Accept option.
Note: Some content-formats contain media-type parameters as part of
the content-format ID registrations. The AMTP option SHALL not be
used with these CoAP content-formats.
o The meaning of the option in a response: Not used.
o Whether the option is critical or elective: Critical as per the
Accept option.
o Whether the option is Safe-to-Forward: Safe as per the Accept
option.
Note: Potentially it could be unsafe to forward an opaque byte
sequence that the proxy does not understand. However processing this
option should only be done within the context of the media-type
specified by the Accept option.
Groves & Yang Expires September 11, 2017 [Page 9]
Internet-Draft SenML Options March 2017
o The format and length of the option's value: A variable length
opaque sequence of bytes. The encoding of the bytes is defined as
per the syntax for the parameters in the media-type definition
document.
o Whether the option must occur at most once or whether it can occur
multiple times: Multiple times. Each instance containing a seperate
media-type parameter. Whether the option can be included multiple
times for the one media type parameter is dependent on whether the
media-type definition allows for multiple instances of the one media
type parameter.
o Default value: None unless the media-type indicated in the accept
option defines a default parameter/s value.
4.2. Content-Format Media-Type Parameter Option
o The meaning of the option in a request: When used together with the
Content-Format option it indicates the media-type parameters
associated with the content-format (media-type) specified in the
content-format option.
Note: Some content-formats contain media-type parameters as part of
the content-format ID registrations. The CFMTP option SHALL not be
used with these CoAP content-formats.
o The meaning of the option in a response: When used together with
the Content-Format option it indicates the media-type parameters
associated with the content-format (media-type) specified in the
content-format option.
o Whether the option is critical or elective: As per the Content-
Format option it is elective.
o Whether the option is Safe-to-Forward: Safe as per the Content-
format option.
Note: Potentially it could be unsafe to forward an opaque byte
sequence that the proxy does not understand. However processing this
option should only be done within the context of the media-type
specified by the Content-Format options.
o The format and length of the option's value: A variable length
opaque sequence of bytes. The encoding of the bytes is defined as
per the syntax for the parameters in the media-type definition
document.
Groves & Yang Expires September 11, 2017 [Page 10]
Internet-Draft SenML Options March 2017
o Whether the option must occur at most once or whether it can occur
multiple times: Multiple times. Each instance containing a seperate
media-type parameter. Whether the option can be included multiple
times for the one media type parameter is dependent on whether the
media-type definition allows for multiple instances of the one media
type parameter.
o Default value: None unless the media-type indicated in the content-
format option defines a default parameter/s value.
5. Security Considerations
SenML security issues are described in [I-D.ietf-core-senml]. Some
extra considerations are indicated above.
6. IANA Considerations
Section 4 discusses potential IANA registrations.
7. Acknowledgements
TBD
8. Changelog
TBD
9. References
9.1. Normative References
[I-D.groves-core-senml-bto]
Groves, C. and W. Yang, "SenML Base Time Offset
Attribute", draft-groves-core-senml-bto-00 (work in
progress), October 2016.
[I-D.ietf-core-senml]
Jennings, C., Shelby, Z., Arkko, J., Keranen, A., and C.
Bormann, "Media Types for Sensor Measurement Lists
(SenML)", draft-ietf-core-senml-04 (work in progress),
October 2016.
[I-D.ietf-cose-msg]
Schaad, J., "CBOR Object Signing and Encryption (COSE)",
draft-ietf-cose-msg-24 (work in progress), November 2016.
Groves & Yang Expires September 11, 2017 [Page 11]
Internet-Draft SenML Options March 2017
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616,
DOI 10.17487/RFC2616, June 1999,
<http://www.rfc-editor.org/info/rfc2616>.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
DOI 10.17487/RFC3261, June 2002,
<http://www.rfc-editor.org/info/rfc3261>.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type
Specifications and Registration Procedures", BCP 13,
RFC 6838, DOI 10.17487/RFC6838, January 2013,
<http://www.rfc-editor.org/info/rfc6838>.
[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>.
9.2. Informative References
[I-D.ietf-clue-protocol]
Presta, R. and S. Romano, "CLUE protocol", draft-ietf-
clue-protocol-13 (work in progress), February 2017.
[I-D.ietf-core-coap-tcp-tls]
Bormann, C., Lemay, S., Tschofenig, H., Hartke, K.,
Silverajan, B., and B. Raymor, "CoAP (Constrained
Application Protocol) over TCP, TLS, and WebSockets",
draft-ietf-core-coap-tcp-tls-07 (work in progress), March
2017.
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
Types", RFC 3023, DOI 10.17487/RFC3023, January 2001,
<http://www.rfc-editor.org/info/rfc3023>.
Groves & Yang Expires September 11, 2017 [Page 12]
Internet-Draft SenML Options March 2017
Authors' Addresses
Christian Groves
Huawei
Australia
Email: Christian.Groves@mail01.huawei.com
Weiwei Yang
Huawei
P.R.China
Email: tommy@huawei.com
Groves & Yang Expires September 11, 2017 [Page 13]