<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.40 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-groves-core-obsattr-00" category="std">

  <front>
    <title abbrev="CoAP Observe Attr.">Additional CoAP Binding and Observe Attributes</title>

    <author initials="C." surname="Groves" fullname="Christian Groves">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <code></code>
          <country>Australia</country>
        </postal>
        <email>Christian.Groves@mail01.huawei.com</email>
      </address>
    </author>
    <author initials="W." surname="Yang" fullname="Weiwei Yang">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <code></code>
          <country>P.R.China</country>
        </postal>
        <email>tommy@huawei.com</email>
      </address>
    </author>

    <date year="2017" month="February" day="21"/>

    <area>art</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t><xref target="I-D.ietf-core-dynlink"/> defines five CoAP Observaton attributes (minimum period, maximum period, band step, less than and greater than) to control when notifications are sent. These attributes are insufficient for some use cases. This document specifies additional attributes allowing for notification bands, initialization values, band step, sample number window and sample time window to allow for a wider range of use cases.</t>



    </abstract>


  </front>

  <middle>


<section anchor="reqlang" title="Requirements Language">
<t>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 <xref target="RFC2119"/>.</t>

</section>
<section anchor="introduction" title="Introduction">
<t><xref target="I-D.ietf-core-dynlink"/> defines five CoAP Binding and Observaton attributes (minimum period, maximum period, change step, less than and greater than) to control when notifications are sent. The currently defined attributes have characteristics that means some use cases cannot be supported. These are described below:</t>

<t><list style="symbols">
  <t>A transition across a less than (lt), or greater than (gt) limit or a change step (st) only generates one notification. This means that it is not possible to describe a case where multiple  notifications are sent so long as the limit is exceeded.</t>
  <t>The change step (st) value is not deterministic when setting the attribute. A client cannot set the initial value that the change step applies to. The change step is based on the initial value sent by the server. This means that a client cannot indicate that it wants the change step (st=10) to apply to a certain increment (e.g. 10, 20, 30) instead it relies on the initial value from the client. Thus a change step of 10 could result in reporting (11, 21, 31) or equally (15, 27, 53).</t>
  <t>SenML allows for multiple values (records) to be reported for a resource. The current attributes do not allow a method for a client to request a particular number of records or sample time window.</t>
</list></t>

<t>In order to allow a more complete set of use cases to be supported this specification introduces several new attributes.</t>

<t>The notification band attributes “Notification Band Minimum” (bmn) and “Notification Band Maximum” (bmx) attributes allow a bounded or unbounded (based on a minimum or maximum) value range that may trigger multiple state synchronizations. This enables use cases where different ranges results in differing behaviour. For example: monitoring the temperature of machinery. Whilst the temperature is in the normal operating range only periodic observations are needed. However as the temperature moves to more abnormal ranges more frequent synchronization/reporting may be needed.</t>

<t>An “Initialization Value” (iv) attribute allows a seed value for the calculation of the change step to be specified. This allows use cases where synchronization occurs around a known value. For example: synchronization will occur based on the operating temperature set point of a machine. Without the initialization synchronization will occur around the first measured value.</t>

<t>A “Band Step” (bst) attribute defines a series of bands that will trigger state synchronization. This allows use cases where state synchronization is required against known levels. Rather than synchronizing based on a difference to a previous synchronization value, synchronization occurs against a fixed known level. For example: it allows state sychronisation for a sensor when it’s value is between (5,10],(10,15],(15,20] etc.</t>

<t>The “Sample Number Window” (snw) attribute allows a number of state synchronizations to be queued before the actual queue synchronization occurs. Once the number of queued state synchronizations has reached a certain level then a single queue synchronization occurs with the multiple resource values related to individual state synchronizations included. This allows use cases where multiple resource values are required but frequent synchronization is not required as there is a need to minimise resource usage. For example: a meter may need to be recorded once an hour but the values only need to be synchronized once a day.</t>

<t>The “Sample Time Window” (stw) attribute as per the sample number window allows state synchronizations to be queued before the actual queue synchronization occurs. The queue synchronization occurs when the indicated period expires independent of the number of samples.</t>

</section>
<section anchor="terminology" title="Terminology">
<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,   “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this specification are to be interpreted as described in <xref target="RFC2119"/>.</t>

<t>This specification requires readers to be familiar with all the terms and concepts that are discussed in <xref target="RFC5988"/> and <xref target="RFC6690"/>.  This specification makes use of the following additional terminology:</t>

<t><list style="hanging">
  <t hangText='Notification Band:'>
  A resource value range that results in state sychronization. The value range may be bounded by a minimum and maximum value or may be unbounded having either a minimum or maximum value.</t>
</list></t>

</section>
<section anchor="binding-and-resource-observation-attributes" title="Binding and Resource Observation Attributes">
<t>The attributes defined in this section are additional attributes that may be used as binding attributes (3.3/<xref target="I-D.ietf-core-dynlink"/>) and resource observation attributes (4.2/<xref target="I-D.ietf-core-dynlink"/>).</t>

<t>This specification introduces several new attributes:</t>

<texttable title="Resource Observation Attribute Summary" anchor="resobsattr">
      <ttcol align='left'>Attribute Name</ttcol>
      <ttcol align='left'>Parameter</ttcol>
      <ttcol align='left'>Data Format</ttcol>
      <c>Initialialization Value</c>
      <c>/{resource}?iv</c>
      <c>xsd:decimal</c>
      <c>Band Minimum Notification</c>
      <c>/{resource}?bmn</c>
      <c>xsd:decimal</c>
      <c>Band Maximum Notification</c>
      <c>/{resource}?bmx</c>
      <c>xsd:decimal</c>
      <c>Band Step</c>
      <c>/{resource}?bst</c>
      <c>xsd:decimal (&gt;0)</c>
      <c>Sample Number Window</c>
      <c>/{resource}?snw</c>
      <c>xsd:integer (&gt;0)</c>
      <c>Sample Time Window</c>
      <c>/{resource}?stw</c>
      <c>xsd:integer (&gt;0)</c>
</texttable>

<t>The attributes may only be included at most once in a query.</t>

<section anchor="initialization-value-iv" title="Initialization Value (iv)">

<t>The attribute indicates the initialization value to be used to determine when a change step is notified. As such it MUST only be present in a query when the change step (st) or band step (bst) attribute is present (see <xref target="I-D.ietf-core-dynlink"/>). If st or bst is not present then the receiver MUST return a CoAP error code 4.00 “Bad Request” (or equivalent).</t>

<t>Without iv, on reception of a query the synchronization initiator uses the current value for the observed resource as the initial value to which the change step is applied. The use of iv overrides this behaviour and the iv value is used for the initial value (STinit or BSTinit). A state synchronization occurs once the resource value differs from the initial value by the change step value (i.e. CurrVal &gt;= STinit + ST or CurrVal &lt;= STint - ST). The initial value is then set to the state synchronization value.</t>

<t>A state synchronization due to Pmax (or Pmin) does not cause an update of the initial value. However once the initial value is updated by a state synchronization due to the other attributes in the query then the normal behaviour defined by 3.3.7/<xref target="I-D.ietf-core-dynlink"/> occurs.</t>

</section>
<section anchor="notification-band-minimum-bmn" title="Notification Band Minimum (bmn)">
<t>This attribute defines the lower bound for the notification band. State synchronization occurs when the resource value is equal to or above the notification band minimum. This attribute is optional. If not present there is no minimum value for the band. If present bmn must be less than bmx if it is also present otherwise the receiver MUST return a CoAP error code 4.00 “Bad Request” (or equivalent).</t>

</section>
<section anchor="notification-band-maximum-bmx" title="Notification Band Maximum (bmx)">
<t>This attribute defines the upper bound for the notification band. State synchronization occurs when the resource value is equal to or less than the notification band maximum. This attribute is optional. If not present there is no maximum value for the band. If present bmx must be more than bmn if it is also present, otherwise the receiver MUST return a CoAP error code 4.00 “Bad Request” (or equivalent).</t>

</section>
<section anchor="bst" title="Band Step (bst)">
<t>Like change step (st) this attribute indicates how much the value of a resource SHOULD change before triggering a state synchronization. The difference however is that the values used for the band step calculation are based on a constant step rather than being based on the synchronized value.</t>

<t>The current resource value or the initialization value (if provided) is used a seed to determine the band thresholds.</t>

<t>For example: Given a bst=10 and an initialization value=25. This defines a series of band step thresholds: i.e. …, (5,15],(15,25],(25,35], …</t>

<t>When the resource value enters a new band step by exceeding the minimum threshold value and being less than or equal to the maximum threshold value for a band step then synchronisation occurs.</t>

<t>A new synchronization occurs whenever the value enters a new band step. If the value jumps across band steps e.g. from 13 to 27 only one synchronisation occurs.</t>

<t>The band step MUST be greater than zero otherwise the server MUST return a CoAP error code 4.00 “Bad Request” (or equivalent).</t>

<t>Change step (st) and band step (bst) MUST NOT occur together in the same query.</t>

</section>
<section anchor="sample-number-window" title="Sample Number Window">
<t>If queuing of a number of state synchronizations are required then the sample number window attribute is set to the desired size of the window. The attribute may be set with valid combinations of other binding/resource observation attributes. When a state synchronization is triggered due to the other attributes the resource value is added to the list of samples instead of resulting in an update of the source and destination resource (state synchronization). Only when the number of samples in the window reaches the sample number window is a state sycnhronisation peformed for the resource. The samples are then flushed from the window and the process is repeated.</t>

<t>The use of the sample number window attribute may require the use of a suitable content-format (such as SenML <xref target="I-D.ietf-core-senml"/>) that allows multiple values/data points to be specified during the state synchronization.</t>

<t>Consideration should also be given to the resource capacity (i.e. memory) of the CoAP server for storing data associated with the sample window. The sample number window should not exceed its capabilities. Even if the sample number window has not been reached, if resource (memory) consumption is an issue then state synchronization for the stored resource values SHOULD occur enabling resources to be freed.</t>

<t>The pmin and pmax attributes have an indirect effect on the overall state sychronization. Whilst pmin and pmax do not directly specify the period for the overall state sychronization the setting of pmin and pmax may trigger samples entering the sample window as thus affect the frequency of state synchronization.</t>

</section>
<section anchor="sample-time-window" title="Sample Time Window">
<t>If state synchronizations are to be queued during a certain period of time (in seconds) then the sample time window attribute is used. The attribute may be set with valid combinations of other binding/resource observation attributes. On reception of a query with the stw attribute a timer (T1=0) is started. Whilst T1&lt;stw when a state synchronization is triggered due to the other attributes, the resource value is added to the sample window instead of resulting in a state synchronization. When the time expires e.g. T1=stw the state sychronization for the resource occurs. The window is then flushed, T1 is re-started and the process is repeated.</t>

<t>The use of the sample time window attribute may require the use of a suitable content-format (such as SenML <xref target="I-D.ietf-core-senml"/>) that allows multiple values/data points to be specified during the synchronization.</t>

<t>Consideration should also be given to the resource capacity (i.e. memory) of the CoAP server for storing data associated with the time window. Consideration should be given to that the expected frequency of adding resource values and length of the time doesn’t exceed the memory capacity of the server. Even if the sample time window has not been reached, if resource (memory) consumption is an issue then state synchronization for the stored resource values SHOULD occur enabling resources to be freed.</t>

</section>
<section anchor="interactions" title="Interactions">
<t>To enable an notification band at least bmn or bmx MUST be set. If both bmn and bmx are set then a finite band is specified. State synchronization occurs whenever the resource value is between bmn and bmx or is equal to bmn or bmx. If only one attribute bmx or bmn is set then the band has an open bound. That is all values above bmn or all values below bmx will be synchronized.</t>

<t>When using multiple resource bindings (e.g. multiple Observations of resource) with different bands, consideration should be given to the resolution of the resource value when setting sequential bands. For example: Given BandA (Abmn=10, Bbmx=20) and BandB (Bbmn=21, Bbmx=30). If the resource value returns an integer then notifications for values between and inclusive of 10 and 30 will be triggered. Whereas if the resolution is to one decimal point (0.1) then notifications for values 20.1 to 20.9 will not be triggered.</t>

<t>Note: The use of bmn and bmx allow for a synchronization whenever a change in the resource value occurs. Theoretically this could occur in-line with the server internal sample period for the determining the resource value. Implementors SHOULD consider the resolution needed before updating the resource, e.g. updating the resource when a temperature sensor value changes by 0.001 degree versus 1 degree.</t>

<t>If pmin and pmax are present in a query then they take precedence over the other parameters. Thus even if bmn and bmx are met if pmin has not been exceeded then no state synchronization occurs. Likewise if bmn and bmx have not been met and pmax time has expired then state synchronization occurs. The current value of the resource is used for the synchronization. If pmin time is exceeded and bmn and bmx are met then the current value of the resource is synchronized. If st is also included, a state synchronization resulting from pmin or pmax updates STinit with the synchronized value. If bst is included, a state synchronization resulting from pmin or pmax updates bstinit with the closest bst delta value as per <xref target="bst"/>.</t>

<t>It is an error to include a greater than (gt) or less than (lt) attribute in a query containing bmn or bmx.</t>

<t>If change step (st) is included in a query with bmn or bmx then state synchronization will occur whilst the resource value is in the notification band AND the resource value differs from STinit by the change step.</t>

<t>If band step (bst) is included in a query with bmn or bmx then state synchronization will occur whilst the resource value is in the notification band defined by bmn or bmx AND has entered a new bandstep band.</t>

<t>If bst is included in a query with a gt or lt attribute then state synchronizations occur only when the conditions described by bst AND gt or bst AND lt are met.</t>

<t>If bst is included in a query with a iv attribute then iv is used to calculate the band thresholds. Subsequent state synchronizations are as per <xref target="bst"/>.</t>

<t>If iv is included with the bmn and bmx or gt and lt attributes it has no affect on the synchronisation. If bst is also used then it used to calculate band step thresholds. If st is instead used then it is used to calculate the initial value.</t>

<t>The snw and stw attributes SHALL not be used in the same query together. Synchronizations based on pmin and pmax are added to the snw/stw sample window. In effect this overrides the pmin and pmax mechanism because resource state synchronizations will not occur between the source and destination resources based on these parameters. For snw the minimum period will be snw * pmin. The maximum period will be snw * pmax. For stw the state synchronization will occur after time stw and is not dependent on pmin and pmax (unless a state synchronization occurs due to memory constraints). The stw must be more than pmax if it is present, otherwise the pmax attribute becomes invalid.</t>

</section>
<section anchor="examples" title="Examples">

<section anchor="example-1-band-minimum-and-maximum" title="Example 1 - Band Minimum and Maximum">

<t>Req: POST /bnd/ (Content-Format: application/link-format)
&lt;coap://sensor.example.com/s/temperature&gt;;
  rel=”boundto”;anchor=”/a/temperature”;bind=”obs”;pmin=”10”;pmax=”60”;bmn=”20”,bmx=”40”</t>

<t>Res: 2.04 Changed</t>

<t>The above will result in a state synchronization through an Observe:</t>

<t><list style="symbols">
  <t>Every 60 seconds if the value is not between 20 and 40.</t>
  <t>When the temperature is equal to or between 20 and 40 at least every 10 seconds.</t>
</list></t>

</section>
<section anchor="example-2-band-minimum-and-maximum-and-step" title="Example 2 - Band Minimum and Maximum and Step">

<t>Req: POST /bnd/ (Content-Format: application/link-format)
&lt;coap://sensor.example.com/s/temperature&gt;;
  rel=”boundto”;anchor=”/a/temperature”;bind=”obs”;pmin=”10”;pmax=”60”;bmn=”20”,bmx=”40”,st=”5”</t>

<t>Res: 2.04 Changed</t>

<t>The above will result in:</t>

<t><list style="symbols">
  <t>STinit being set to the temperature value at the time of the POST.</t>
  <t>A state synchronization through an Observe:  <list style="symbols">
      <t>Every 60 seconds if the value is not between 20 and 40 and if the value has not changed by 5</t>
      <t>When the temperature is equal to or between 20 and 40 and the value has changed by 5 from STinit at least every 10 seconds.</t>
    </list></t>
</list></t>

</section>
<section anchor="example-3-band-minimum-and-maximum-step-and-initialization-value" title="Example 3 - Band Minimum and Maximum, Step and Initialization Value">

<t>Req: POST /bnd/ (Content-Format: application/link-format)
&lt;coap://sensor.example.com/s/temperature&gt;;
rel=”boundto”;anchor=”/a/temperature”;bind=”obs”;pmin=”10”;pmax=”60”;bmn=”20”,bmx=”40”,st=”5”,iv=”20”</t>

<t>Res: 2.04 Changed</t>

<t>The above will result in:</t>

<t><list style="symbols">
  <t>STinit being set to 20 due to iv.</t>
  <t>A state synchronization through an Observe:  <list style="symbols">
      <t>Every 60 seconds if the value is not between 20 and 40 and if the value has not changed by 5 from 20</t>
      <t>When the temperature is equal to or between 20 and 40 and the value has changed by 5 from STinit at least every 10 seconds.</t>
    </list></t>
</list></t>

</section>
<section anchor="example-4-step-and-initialization-value" title="Example 4 - Step and Initialization Value">

<t>Req: POST /bnd/ (Content-Format: application/link-format)
&lt;coap://sensor.example.com/s/temperature&gt;;
rel=”boundto”;anchor=”/a/temperature”;bind=”obs”;pmin=”10”;pmax=”60”;st=”5”,iv=”20”</t>

<t>Res: 2.04 Changed</t>

<t>The above will result in:</t>

<t><list style="symbols">
  <t>STinit being set to 20 due to iv.</t>
  <t>A state synchronization through an Observe:  <list style="symbols">
      <t>Every 60 seconds if the temperature does not differ from STinit by 5.</t>
      <t>When the temperature differs from STinit by 5 at least every 10 seconds.</t>
    </list></t>
</list></t>

</section>
<section anchor="example-5-band-minimum-and-maximum-band-step-and-initial-value" title="Example 5 - Band Minimum and Maximum, Band Step and Initial Value">

<t>Req: POST /bnd/ (Content-Format: application/link-format)
&lt;coap://sensor.example.com/s/temperature&gt;;
rel=”boundto”;anchor=”/a/temperature”;bind=”obs”;pmin=”10”;pmax=”60”;bmn=”20”,bmx=”40”,bst=”5”,iv=”15”</t>

<t>Res: 2.04 Changed</t>

<t>The above will result in:</t>

<t><list style="symbols">
  <t>A series of bands being created of a width of 5 with the seed value 15. Given bmn=”20” and bmx=”40” this effectively means that bands with the following thresholds(15,20],(20,25],(25,30],(30,35],(35,40] are created.</t>
  <t>A state synchronization through an Observe:  <list style="symbols">
      <t>Every 60 seconds if the value is not between 20 and 40 (inclusive) and if the value has not entered into a new band.</t>
      <t>When the temperature is equal to or between 20 and 40 and the value changes between the bands at least every 10 seconds.</t>
    </list></t>
</list></t>

</section>
<section anchor="example-6-band-minimum-and-sample-number-window" title="Example 6 - Band Minimum and Sample Number Window">

<t>Req: POST /bnd/ (Content-Format: application/link-format)
&lt;coap://sensor.example.com/s/temperature&gt;;
rel=”boundto”;anchor=”/a/temperature”;bind=”obs”;pmin=”10”;pmax=”60”;bmn=”50”;snw=”5”</t>

<t>Res: 2.04 Changed</t>

<t>The above will result in:</t>

<t><list style="symbols">
  <t>A state sychronization added to the queue at pmax or whenever the value changes and is equal to or above 50.</t>
  <t>A state sychronization through an Observe occuring once 5 synchronizations have been added to the queue resulting in multiple values being synchronized between the source and destination resources.</t>
</list></t>

</section>
</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>As per 5/<xref target="I-D.ietf-core-dynlink"/>.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>None.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>Michael Koster for discussions leading to the creation of these notification band and initialization attributes.</t>

</section>
<section anchor="changelog" title="Changelog">

<t>draft-groves-core-intparam-00</t>

<t><list style="symbols">
  <t>Initial version</t>
</list></t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor='RFC2119' target='http://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor='RFC5988' target='http://www.rfc-editor.org/info/rfc5988'>
<front>
<title>Web Linking</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2010' month='October' />
<abstract><t>This document specifies relation types for Web links, and defines a registry for them.  It also defines the use of such links in HTTP headers with the Link header field.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5988'/>
<seriesInfo name='DOI' value='10.17487/RFC5988'/>
</reference>



<reference  anchor='RFC6690' target='http://www.rfc-editor.org/info/rfc6690'>
<front>
<title>Constrained RESTful Environments (CoRE) Link Format</title>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby'><organization /></author>
<date year='2012' month='August' />
<abstract><t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links.  Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type.  &quot;RESTful&quot; refers to the Representational State Transfer (REST) architecture.  A well-known URI is defined as a default entry point for requesting the links hosted by a server.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6690'/>
<seriesInfo name='DOI' value='10.17487/RFC6690'/>
</reference>



<reference anchor='I-D.ietf-core-dynlink'>
<front>
<title>Dynamic Resource Linking for Constrained RESTful Environments</title>

<author initials='Z' surname='Shelby' fullname='Zach Shelby'>
    <organization />
</author>

<author initials='M' surname='Vial' fullname='Matthieu Vial'>
    <organization />
</author>

<author initials='M' surname='Koster' fullname='Michael Koster'>
    <organization />
</author>

<author initials='C' surname='Groves' fullname='Christian Groves'>
    <organization />
</author>

<date month='October' day='28' year='2016' />

<abstract><t>For CoAP [RFC7252] Dynamic linking of state updates between resources, either on an endpoint or between endpoints, is defined with the concept of Link Bindings.  This specification defines conditional observation attributes that work with Link Bindings or with CoAP Observe [RFC7641].  Editor's note:  o The git repository for the draft is found at https://github.com/ core-wg/dynlink  o Examples need to be added.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-core-dynlink-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-dynlink-01.txt' />
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='I-D.ietf-core-senml'>
<front>
<title>Media Types for Sensor Measurement Lists (SenML)</title>

<author initials='C' surname='Jennings' fullname='Cullen Jennings'>
    <organization />
</author>

<author initials='Z' surname='Shelby' fullname='Zach Shelby'>
    <organization />
</author>

<author initials='J' surname='Arkko' fullname='Jari Arkko'>
    <organization />
</author>

<author initials='A' surname='Keranen' fullname='Ari Keranen'>
    <organization />
</author>

<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>

<date month='October' day='31' year='2016' />

<abstract><t>This specification defines media types for representing simple sensor measurements and device parameters in the Sensor Measurement Lists (SenML).  Representations are defined in JavaScript Object Notation (JSON), Concise Binary Object Representation (CBOR), eXtensible Markup Language (XML), and Efficient XML Interchange (EXI), which share the common SenML data model.  A simple sensor, such as a temperature sensor, could use this media type in protocols such as HTTP or CoAP to transport the measurements of the sensor or to be configured.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-core-senml-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-senml-04.txt' />
</reference>




    </references>



  </back>

<!-- ##markdown-source:
H4sIAEnCq1gAA908aXMbx5XfWcX/0AV9MJgFQIAU5Bg2vaGOxKyVRK0kryu1
5dpqzDSAXs2BTM+QRBT9931Hd0/PAVDSKi45SsUEZqb7vX73NRiPx8dHpS4T
tRCDyzjWpc4zmYgn+eUr8Vhnsc7WQmaxuF4aVdwocVmWhV5WpTKD4yO5XBbq
ZsFPh09Mjo/iPMpkCtvGhVyV43WR3ygzjvJCjfOlkfDQOJGwTQmPwt+FOJvO
vh1Pz8Zns+OjCK6s82K3EKaMj4+Oj/S2WIiyqEx5Np1+Nz0D2IWSCyELWH+b
F+9g/2qLmLx+Jn6B74j3X/Da8dE7tYMn4oW4ykpVZKocP0WUcFtTwtn+RyZ5
BgjslDk+2uqF+O8yj0bC5EVZqJWBT7sUP/yKK2RVbvJicXw0FjozAHCCYG5w
qRB84CebQptSyyy4kxdrmem/SyTvQvxUyVul8boBEKpciG++Efg10uUOv9Dn
PFb15yorkRyXQIFCJlriVZVKnQTwJgzvT3h5OptsCMokylOP7S8T8VeZrWtc
f1EanvEXvxSaryavJ082OgvRLPM03f0pROr4KMuLFIDdqAU++PrPT85ms+/c
5/l3f/yj+/zo0XdT+nw1fjrRqlyxJMW7LNHZO7oDQpKtGvs1nzUqS5MFQsX/
jcdjIZdIzAgk4f373n0/fBCxWulMGbGCTUM5l2WeCemVQQxTnem0SsVWFTqP
RyKVd43vS9QiU6rtSCTKGFFuQEDw2hoEGeSSLpwAlYCKQMQ8EbcblYksL/VK
R8QRA+KuBJyjnIi3G2VUiADeAh5XK3hawyMCaAEynCpRwYORNMrgKm0EaGaV
4hNmqyLYHBfXmh9umST5LSoSbhUiQocBxYAjg9wlVmDEjUwqZRpHNTLdJkpk
VbqEI8JmcX5Lp7Y3Sg0I2stwdIJI4CRcjWFJAZKpRL4KTuHYl+o4ThR+e63+
VulC4aGMeA4rKgmL8N/7B4X6WwJXPhwfXfT9Oz4CSgowEQJthBGDFz+/eTsY
8V/x8po+v372nz9fvX72FD+/+eny+XP/wT4h8Ov1z8/tE/ipXvvk+sWLZy+f
8nK4KlqXXlz+Ff4gUQbXr95eXb+8fD4A0oJAhMxC/gKFlshlEJdtoUoVCwlP
KBMBx+ALrHn/3irRhw9EpysUpbiKiD/vH+jga4sin6YEXdfwyQoRbYi1X1Ql
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
ZIJdoTLOeEqx3B+818MeE+yMF/8PFLhXmLpTAAA=

-->

</rfc>

