Thing-to-Thing Research Group                                  K. Hartke
Internet-Draft                                   Universitaet Bremen TZI
Intended status: Experimental                           October 30, 2016
Expires: May 3, 2017


                     Thing-to-Thing Bulletin Board
                  draft-hartke-t2trg-bulletin-board-01

Abstract

   A Thing-to-Thing Bulletin Board is a RESTful, hypermedia-driven Web
   application that can be used in Thing-to-Thing communication to
   publish information such as thing descriptions, configurations,
   resource descriptions or sleep schedules at a central location.

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 May 3, 2017.

Copyright Notice

   Copyright (c) 2016 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
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.




Hartke                     Expires May 3, 2017                  [Page 1]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Related Work  . . . . . . . . . . . . . . . . . . . . . .   3
     1.2.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Bulletin Boards . . . . . . . . . . . . . . . . . . . . . . .   3
     2.1.  Data Model  . . . . . . . . . . . . . . . . . . . . . . .   3
     2.2.  Interaction Model . . . . . . . . . . . . . . . . . . . .   5
     2.3.  Application Description . . . . . . . . . . . . . . . . .   6
   3.  Interoperability Considerations . . . . . . . . . . . . . . .   7
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   7
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .   7
     6.2.  Informative References  . . . . . . . . . . . . . . . . .   8
   Appendix A.  Proof-of-Concept . . . . . . . . . . . . . . . . . .   8
     A.1.  CoRE Lighting . . . . . . . . . . . . . . . . . . . . . .   8
     A.2.  CoAP Publish-Subscribe  . . . . . . . . . . . . . . . . .  10
     A.3.  CoRE Resource Directory . . . . . . . . . . . . . . . . .  11
     A.4.  CoRE Mirror Server  . . . . . . . . . . . . . . . . . . .  12
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  13

1.  Introduction

   CoRE Lighting [I-D.hartke-core-lighting] defines a "bulletin board"
   application that can be used to share the thing descriptions of
   sensor and actuator nodes.  This document generalizes the bulletin
   board concept to support representations in any media type and
   defines means for creating, reading, observing, updating, deleting
   and finding items in a bulletin board.

   The generalization to any media type provides two advantages.  The
   first is media type agility: applications won't be stuck forever with
   the media types of CoRE Lighting.  The second is that it may be
   useful to share also other information than thing descriptions, such
   as default configurations for new devices, service locations or sleep
   schedules.

   Finding items by submitting a search query allows clients to retrieve
   a subset of items from a bulletin board.  In CoRE Lighting, a client
   has to download the whole set of thing descriptions, filter the set
   and configure compatible devices.  It may be more efficient to filter
   the set at the bulletin board server.  To make this work with any
   media type, a search request needs to specify both the media type of
   the desired items and a media type-specific search query.

   The generalized bulletin board is presented as a CoRE Application
   Description [I-D.hartke-core-apps].  That is, the focus of the



Hartke                     Expires May 3, 2017                  [Page 2]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


   application interface is on the media types used in the bulletin
   board application and interactions are driven by links and forms.

1.1.  Related Work

   The bulletin board is an instance of the well-known REST collection
   pattern.  As such, it might be used in places where a more specific
   instance of the collection pattern is currently used, such as the
   Publish-Subscribe Broker [I-D.ietf-core-coap-pubsub] or the CoRE
   Resource Directory [I-D.ietf-core-resource-directory].  Appendix A
   explores this direction and provides a proof-of-concept mapping from
   publish-subscribe broker and resource directory to bulletin boards.

   The key differentiator of the bulletin board compared to publish-
   subscribe broker and resource directory lies in the evolvability, the
   ability to respond effectively to change (such as the introduction of
   new features) without negatively impacting existing and new clients.
   The definition of interfaces purely in terms of standardized URI
   templates makes it very difficult to gradually evolve them; there are
   no versioning or capability negotiation mechanisms.  The bulletin
   board facilitates fine-grained evolvability by driving all
   interactions through machine-understandable hypertext.  Features can
   be added, changed or removed in a backwards-compatible way simply by
   updating the bulletin board to expose corresponding links and forms.

1.2.  Terminology

   Readers are expected to be familiar with the terms and concepts
   described in [RFC5988], [RFC6573], and [I-D.hartke-core-apps].

   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].

2.  Bulletin Boards

   This section defines the data model and the interaction model of
   bulletin boards.

2.1.  Data Model

   The data model consists of two elements: the bulletin board and a
   number of published items (Figure 1).







Hartke                     Expires May 3, 2017                  [Page 3]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


                              ___
                    Bulletin /   \
                       Board \___/         ___
                               |__________/   \ Item 1
                               |   item   \___/
                               |           ___
                               |__________/   \ Item 2
                               |   item   \___/
                               |                  .
                               |                  .
                               |                  .
                               |           ___
                               |__________/   \ Item N
                                   item   \___/

        Figure 1: A Bulletin Board with a Number of Published Items

   Bulletin Board

      A bulletin board is a Web application intended for the posting of
      public messages, for example, to share thing descriptions,
      announce services or provide information.  Sensor and actuator
      nodes can leave and erase messages for other nodes to read and
      see.

      A bulletin board resource is a collection of published items.  Its
      representation consists primarily of links to the item resources
      using the "item" link relation type [RFC6573].  To reduce the
      number of round-trips, it can also embed (complete or partial)
      representations of those item resources.  Forms contained in the
      representation enable interactions with the bulletin board.

      For a start, a bulletin board has only a depth of one level; i.e.,
      all published items are organized directly under the bulletin
      board resource.  This could be extended to multiple levels in a
      future revision of this draft.

      Bulletin board representations are formatted in the "application/
      coral" media type [I-D.hartke-t2trg-coral].

   Item

      A bulletin board item is a member of the collection.

      Item representations can in principle be formatted in any media
      type; a bulletin board deployment MAY restrict the media types it
      accepts for publication, though.




Hartke                     Expires May 3, 2017                  [Page 4]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


      The representations of items MAY link back to a bulletin board
      resource using the "collection" link relation type [RFC6573].

2.2.  Interaction Model

   The interaction model consists of eight possible interactions with a
   bulletin board: discovering and reading the bulletin board, and
   creating, reading, observing, updating, deleting and finding
   published items in the bulletin board.

   Discovery

      For a start, nodes are assumed to be pre-configured out-of-band
      with a link to a bulletin board.

   Read Bulletin Board

      A node can retrieve a representation of the bulletin board by
      following the discovered link.  The representation of the bulletin
      board includes links to and/or literals with representations of
      the items in the bulletin board.  The representation MAY also
      include forms for creating, updating, deleting and finding items.

   Create Item

      The representation of a bulletin board MAY contain a form with the
      "create-item" form relation type.  Submitting this form with a
      representation in one of the accepted content formats creates a
      new item in the bulletin board.

   Read Item

      A node can retrieve a representation of an item by following one
      of the links with the "item" link relation type in the
      representation of the bulletin board.

   Observe Item

      A node can observe an item by following one of the links with the
      "item" link relation type in the representation of the bulletin
      board and observing the resource as specified in [RFC7641].

   Update Item

      For each item in a bulletin board, the representation of the
      bulletin board MAY indicate that the item is updatable.  If an
      item is updatable, the link to the item includes the CoRAL
      Updatable Option, which defines a form with the "update" form



Hartke                     Expires May 3, 2017                  [Page 5]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


      relation type.  Submitting this form updates the item in the
      bulletin board to the submitted representation.

   Delete Item

      For each item in a bulletin board, the representation of the
      bulletin board MAY indicate that the item is deletable.  If an
      item is deletable, the link to the item includes the CoRAL
      Deletable Option, which defines a form with the "delete" form
      relation type.  Submitting this form deletes the item from the
      bulletin board.

   Find Items

      A form with the "search" form relation type can be used to find
      items.  Submitting this form with a media type and a media type-
      specific filter query returns a subset of the bulletin board that
      matches the filter.  (The details of this are TBD.)

2.3.  Application Description

   Application name:
      Thing-to-Thing Bulletin Board 1.0

   URI schemes:
      coap [RFC7252]

   Media types:
      application/coral [I-D.hartke-t2trg-coral]

   Link relation types:
      collection [RFC6573]
      item [RFC6573]

   Form relation types:
      create-item [I-D.hartke-core-apps]
      update [I-D.hartke-core-apps]
      delete [I-D.hartke-core-apps]
      search [I-D.hartke-core-apps]

   Form field names:
      None.

   Well-known locations:
      None.

   Interoperability considerations:
      See Section 3.



Hartke                     Expires May 3, 2017                  [Page 6]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


   Security considerations:
      See Section 4.

   Contact:
      See "Author's Address" section.

   Author/Change controller:
      IESG

3.  Interoperability Considerations

   TODO.

4.  Security Considerations

   TODO.

5.  IANA Considerations

   This document includes no request to IANA.

6.  References

6.1.  Normative References

   [I-D.hartke-core-apps]
              Hartke, K., "CoRE Application Descriptions", draft-hartke-
              core-apps-05 (work in progress), October 2016.

   [I-D.hartke-t2trg-coral]
              Hartke, K., "The Constrained RESTful Application Language
              (CoRAL)", draft-hartke-t2trg-coral-01 (work in progress),
              October 2016.

   [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>.

   [RFC6573]  Amundsen, M., "The Item and Collection Link Relations",
              RFC 6573, DOI 10.17487/RFC6573, April 2012,
              <http://www.rfc-editor.org/info/rfc6573>.

   [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>.




Hartke                     Expires May 3, 2017                  [Page 7]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


   [RFC7641]  Hartke, K., "Observing Resources in the Constrained
              Application Protocol (CoAP)", RFC 7641,
              DOI 10.17487/RFC7641, September 2015,
              <http://www.rfc-editor.org/info/rfc7641>.

6.2.  Informative References

   [I-D.hartke-core-lighting]
              Hartke, K., "CoRE Lighting", draft-hartke-core-lighting-00
              (work in progress), September 2015.

   [I-D.ietf-core-coap-pubsub]
              Koster, M., Keranen, A., and J. Jimenez, "Publish-
              Subscribe Broker for the Constrained Application Protocol
              (CoAP)", draft-ietf-core-coap-pubsub-00 (work in
              progress), October 2016.

   [I-D.ietf-core-resource-directory]
              Shelby, Z., Koster, M., Bormann, C., and P. Stok, "CoRE
              Resource Directory", draft-ietf-core-resource-directory-08
              (work in progress), July 2016.

   [I-D.vial-core-mirror-server]
              Vial, M., "CoRE Mirror Server", draft-vial-core-mirror-
              server-01 (work in progress), April 2013.

   [RFC5988]  Nottingham, M., "Web Linking", RFC 5988,
              DOI 10.17487/RFC5988, October 2010,
              <http://www.rfc-editor.org/info/rfc5988>.

   [RFC6690]  Shelby, Z., "Constrained RESTful Environments (CoRE) Link
              Format", RFC 6690, DOI 10.17487/RFC6690, August 2012,
              <http://www.rfc-editor.org/info/rfc6690>.

Appendix A.  Proof-of-Concept

   There are a number of specifications (CoRE Lighting, CoAP Publish-
   Subscribe Broker, CoRE Resource Directory and CoRE Mirror Server)
   that implement variations of the collection pattern.  This section
   shows how they might be implemented using a bulletin board (without
   trying to replicate them in full detail).

A.1.  CoRE Lighting

   CoRE Lighting [I-D.hartke-core-lighting] uses a JSON-based bulletin
   board to discover "things" such as light bulbs and light switches.
   Things are described by a thing description that contains both human-




Hartke                     Expires May 3, 2017                  [Page 8]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


   readable information and machine-understandable hypermedia controls
   which indicate the possible interactions with the thing.

    +----------------------------------+
    |   ___                            |
    |  /   \ Bulletin Board            |
    |  \___/         ___               |
    |    |__________/   \ Thing        |    +------------------------+
    |    |   item   \___/ Description  |    |   ___                  |
    |    |            |________________|____|__/   \ Light Bulb      |
    |    |                     config  |    |  \___/ Configuration   |
    |    |                             |    |                        |
    |    |           ___               |    +------------------------+
    |    |__________/   \ Thing        |    +------------------------+
    |        item   \___/ Description  |    |   ___                  |
    |                 |________________|____|__/   \ Light Remote    |
    |                           about  |    |  \___/ Control State   |
    |                                  |    |                        |
    +----------------------------------+    +------------------------+

           Figure 2: A Bulletin Board Storing Thing Descriptions

   Matching the example in Section 5.2.1 of [I-D.hartke-core-lighting],
   Figure 2 shows a bulletin board with two thing descriptions.  The
   first thing description describes a light bulb and has a link with
   the "config" link relation type pointing to the configuration of the
   light bulb.  The second thing description describes a light remote
   control (LRC) and has a link with the "about" link relation type
   pointing to the observable state of the LRC.

   Thing descriptions are represented in the "application/thing-
   description+json" media type (content format 65200 in the example).
   A bulletin board representation thus could look as shown in Figure 3.


















Hartke                     Expires May 3, 2017                  [Page 9]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


                      ______________________________
                     |                              |
                     |  Form                        |
                     |   relation: 1 (create-item)  |
                     |   method: 2 (POST)           |
                     |   accept: 65200              |
                     |______________________________|
                     |                              |
                     |  Literal                     |
                     |   relation: 33 (item)        |
                     |   format: 65200              |
                     |   ________________________   |
                     |  |                        |  |
                     |  |  Thing Description 1   |  |
                     |  |________________________|  |
                     |______________________________|
                     |                              |
                     |  Literal                     |
                     |   relation: 33 (item)        |
                     |   format: 65200              |
                     |   ________________________   |
                     |  |                        |  |
                     |  |  Thing Description 2   |  |
                     |  |________________________|  |
                     |______________________________|

   Figure 3: A Bulletin Board Representation With Two Thing Descriptions

A.2.  CoAP Publish-Subscribe

   CoAP Publish-Subscribe [I-D.ietf-core-coap-pubsub] provides means for
   sensor and actuator nodes with limited reachability to publish and
   receive data without having to be reachable at the same time.  The
   basic operation involves clients called "publishers" updating "topic"
   resources at a server called the "broker", and clients called
   "subscribers" observing these resources (Figure 4).

       ____________            ____________            ____________
      |            |--------->|            |          |            |
      |  Publisher |<---------|   Broker   |          | Subscriber |
      |  (Client)  |          |  (Server)  |<---------|  (Client)  |
      |____________|          |____________|--------->|____________|

                     Figure 4: CoAP Publish-Subscribe

   A broker might be implemented as a bulletin board by creating the
   topics as resources on the bulletin board server and linking to these
   from the bulletin board resource with the "item" link relation type



Hartke                     Expires May 3, 2017                 [Page 10]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


   (Figure 5).  Hypermedia controls in the bulletin board representation
   enable publishers to create, update and delete topics, and
   subscribers to read/observe these topics.

                     +------------------------------+
                     |   ___                        |
                     |  /   \ Bulletin Board        |
                     |  \___/         ___           |
                     |    |__________/   \ Topic A  |
                     |    |   item   \___/          |
                     |    |           ___           |
                     |    |__________/   \ Topic B  |
                     |    |   item   \___/          |
                     |    |           ___           |
                     |    |__________/   \ Topic C  |
                     |        item   \___/          |
                     |                              |
                     +------------------------------+

      Figure 5: A Bulletin Board Acting as a Publish-Subscribe Broker

                 +-------------+------------------------+
                 | Interaction | Mapped to              |
                 +-------------+------------------------+
                 | DISCOVER    | Discovery /            |
                 |             | Read Bulletin Board /  |
                 |             | Find Items             |
                 | CREATE      | Create Item            |
                 | PUBLISH     | Update Item            |
                 | SUBSCRIBE   | Observe Item           |
                 | UNSUBSCRIBE | Observe Item           |
                 | READ        | Read Item              |
                 | REMOVE      | Delete Item            |
                 +-------------+------------------------+

        Table 1: Mapping of Pub/Sub Interactions to Bulletin Board

A.3.  CoRE Resource Directory

   A CoRE Resource Directory [I-D.ietf-core-resource-directory] hosts
   descriptions of resources held on other servers, allowing lookups to
   be performed for those resources.  The descriptions are encoded as
   links in CoRE Link Format [RFC6690] that are annotated with a variety
   of link attributes providing the type of and hints about the linked
   resources.






Hartke                     Expires May 3, 2017                 [Page 11]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


    +----------------------------------+
    |   ___                            |
    |  /   \ Bulletin Board            |
    |  \___/         ___               |
    |    |__________/   \ Link Format  |    +------------------------+
    |    |    item  \___/ Resource     |    |   ___                  |
    |    |            |________________|____|__/   \ Resource A      |
    |    |                      hosts  |    |  \___/                 |
    |    |                             |    |                        |
    |    |           ___               |    +------------------------+
    |    |__________/   \ Link Format  |    +------------------------+
    |         item  \___/ Resource     |    |   ___                  |
    |                 |________________|____|__/   \ Resource B      |
    |                           hosts  |    |  \___/                 |
    |                                  |    |                        |
    +----------------------------------+    +------------------------+

                 Figure 6: A Bulletin Board Storing Links

   A bulletin board might store these resource descriptions such that
   each resource description becomes one item in the bulletin board and
   each item links to the respective resource (Figure 6).

                  +-----------------------+-------------+
                  | Interaction           | Mapped to   |
                  +-----------------------+-------------+
                  | Discovery             | Discovery   |
                  | Registration          | Create Item |
                  | Update                | Update Item |
                  | Removal               | Delete Item |
                  | Read Endpoint Links   | -           |
                  | Update Endpoint Links | -           |
                  | Register a Group      | -           |
                  | Group Removal         | -           |
                  | Lookup                | Find Items  |
                  +-----------------------+-------------+

   Table 2: Mapping of Resource Directory Interactions to Bulletin Board

A.4.  CoRE Mirror Server

   Similar to a CoAP Publish-Subscribe Broker, a CoRE Mirror Server
   [I-D.vial-core-mirror-server] allows a sleepy device to store
   representations of their resources so that other devices can access
   the representations while it is sleeping.






Hartke                     Expires May 3, 2017                 [Page 12]


Internet-Draft        Thing-to-Thing Bulletin Board         October 2016


                   +----------------------------------+
                   |   ___                            |
                   |  /   \ Bulletin Board            |
                   |  \___/          ___              |
                   |    |___________/   \ Mirrored    |
                   |    |    item   \___/ Resource A  |
                   |    |            ___              |
                   |    |___________/   \ Mirrored    |
                   |    |    item   \___/ Resource B  |
                   |    |            ___              |
                   |    |___________/   \ Mirrored    |
                   |         item   \___/ Resource C  |
                   |                                  |
                   +----------------------------------+

           Figure 7: A Bulletin Board Acting as a Mirror Server

               +----------------------------+-------------+
               | Interaction                | Mapped to   |
               +----------------------------+-------------+
               | Discovery                  | Discovery   |
               | Registration               | Create Item |
               | Removal                    | Delete Item |
               | Update Mirrored Resource   | Update Item |
               | Retrieve Mirrored Resource | Read Item   |
               +----------------------------+-------------+

     Table 3: Mapping of Mirror Server Interactions to Bulletin Board

Author's Address

   Klaus Hartke
   Universitaet Bremen TZI
   Postfach 330440
   Bremen  D-28359
   Germany

   Phone: +49-421-218-63905
   Email: hartke@tzi.org












Hartke                     Expires May 3, 2017                 [Page 13]