Internet DRAFT - draft-becker-core-transport-scenarios

draft-becker-core-transport-scenarios






CoRE                                                      M. Becker, Ed.
Internet-Draft                                                T. Poetsch
Intended status: Standards Track                          K. Kuladinithi
Expires: January 16, 2014                ComNets, TZI, University Bremen
                                                           July 15, 2013


                Scenarios for CoAP on non-UDP Transports
                draft-becker-core-transport-scenarios-00

Abstract

   Several drafts in the CoRE WG are discussing the usage of CoAP on
   non-UDP/IP transports already.  There are various use cases for non-
   UDP/IP transports.  In order to structure the discussion, this draft
   introduces new terminology and transport scenarios.

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 January 16, 2014.

Copyright Notice

   Copyright (c) 2013 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.



Becker, et al.          Expires January 16, 2014                [Page 1]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Requirements Language  . . . . . . . . . . . . . . . . . . . .  4
   4.  Scenarios  . . . . . . . . . . . . . . . . . . . . . . . . . .  4
     4.1.  UI to UI . . . . . . . . . . . . . . . . . . . . . . . . .  6
       4.1.1.  UI client to UI server . . . . . . . . . . . . . . . .  6
       4.1.2.  UI server to UI client . . . . . . . . . . . . . . . .  7
       4.1.3.  UI client/server to UI server/client . . . . . . . . .  7
     4.2.  UI(+NUI) to UI . . . . . . . . . . . . . . . . . . . . . .  7
     4.3.  UI to UI(+NUI) . . . . . . . . . . . . . . . . . . . . . .  7
     4.4.  UI(+NUI) to UI(+NUI) . . . . . . . . . . . . . . . . . . .  7
       4.4.1.  UI(+NUI) client to UI(+NUI) server . . . . . . . . . .  7
       4.4.2.  UI(+NUI) server to UI(+NUI) client . . . . . . . . . .  7
       4.4.3.  UI(+NUI) client/server to UI(+NUI) server/client . . .  8
     4.5.  NUI to NUI . . . . . . . . . . . . . . . . . . . . . . . .  8
       4.5.1.  NUI client to NUI server . . . . . . . . . . . . . . .  8
       4.5.2.  NUI server to NUI client . . . . . . . . . . . . . . .  8
       4.5.3.  NUI client/server to NUI server/client . . . . . . . .  8
     4.6.  NUI(+UI) to NUI  . . . . . . . . . . . . . . . . . . . . .  8
     4.7.  NUI to NUI(+UI)  . . . . . . . . . . . . . . . . . . . . .  9
     4.8.  NUI(+UI) to NUI(+UI) . . . . . . . . . . . . . . . . . . .  9
       4.8.1.  NUI(+UI) client to NUI(+UI) server . . . . . . . . . .  9
       4.8.2.  NUI(+UI) server to NUI(+UI) client . . . . . . . . . .  9
       4.8.3.  NUI(+UI) client/server to NUI(+UI) server/client . . .  9
   5.  Proxy Scenarios  . . . . . . . . . . . . . . . . . . . . . . .  9
   6.  Possible non-DNS solution  . . . . . . . . . . . . . . . . . . 10
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 12
   8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12
   9.  Normative References . . . . . . . . . . . . . . . . . . . . . 12
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12



















Becker, et al.          Expires January 16, 2014                [Page 2]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


1.  Introduction

   Several use cases show a demand for using CoAP on non-UDP/IP
   transports.  In order to facilitate the discussion of the use cases
   and the non-UDP/IP addresses, some scenarios have been assembled in
   this document.  With non-UDP/IP transports, the following problems
   arise:

   o  Which transport stack should be used?

   o  Which protocol-specific options and parameters should be used?

   o  Which addresses should be used and where are thoses addresses
      coming from?  How are the addresses updated?

   This information might be available in DNS, a detailed solution on
   how to use DNS is needed.  If DNS is not available in constrained
   networks, a new solution is necessary.


2.  Terminology

   The terms CoAP Server and CoAP Client are used synonymously to Server
   and Client as specified in the terminology section of
   [I-D.ietf-core-coap].

   This draft distinguishes between two different stacks at the
   endpoints:

   UDP/IP stack (UI):  is an endpoint with an UDP/IP protocol stack as
      described in [I-D.ietf-core-coap].

   non-UDP/IP stack (NUI):  is an endpoint with a non-UDP/IP protocol
      stack (e.g.  SMS, USB, BLE, TCP).

   Possibly, but not necessarily, endpoints can have additionally a
   different transport stack, i.e.  UI or NUI.

   The syntax for describing the combinations of transport stacks on an
   endpoint are specified as follows:

   Primary stack(+Optional stack):  The primary stack is always
      available at the endpoint, while the optional stack might be
      enabled or disabled.  Example: UI(+NUI)

   The role of the endpoints are defined as follows:





Becker, et al.          Expires January 16, 2014                [Page 3]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


   Altering Endpoint:  is the endpoint where a modified resource is
      changed first.

   Altered Endpoint:  is the endpoint where a modified resource is
      changed second.

   When a client is POSTing to a server, the client is the Altering
   endpoint and the server is the Altered endpoint.  (As well for PUT
   and DELETE.)  When a client is GETing from a server, the client is
   the Altered endpoint and the server the Altering endpoint.


3.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].


4.  Scenarios

   Several scenarios for communications with CoAP are presented first.
   Altering and Altered endpoints need to be defined for each transport.
   E.g. for Machine-to-Machine communication:


    Altering endpoint                 | Altered endpoint
    -------------------------------------------------------------------
    Device in cloud                   | Telematic device
    Telematic device                  | Device in cloud
    Telematic device/Device in cloud  | Device in cloud/Telematic device


      Figure 1: Application Role Assignment for Altering and Altered
                                 Endpoints



    Altering endpoint                 | Altered endpoint
    -------------------------------------------------------------------
    CoAP client (POST/PUT/DELETE)     | -> CoAP server
    CoAP server                    <- |    CoAP client (GET)
    CoAP server/CoAP client        <- |->  CoAP client/CoAP server


   Figure 2: Network Role Assignment for Altering and Altered Endpoints





Becker, et al.          Expires January 16, 2014                [Page 4]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


    Altering endpoint                 | Altered endpoint
    -------------------------------------------------------------------
    UI                                | UI
    UI(+NUI)                          | UI
    UI                                | UI(+NUI)
    UI(+NUI)                          | UI(+NUI)

    NUI                               | NUI
    NUI(+UI)                          | NUI
    NUI                               | NUI(+UI)
    NUI(+UI)                          | NUI(+UI)


   Figure 3: Possible Protocol Stacks of Altering and Altered Endpoints





































Becker, et al.          Expires January 16, 2014                [Page 5]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


    Altering endpoint                 | Altered endpoint
    -------------------------------------------------------------------
    UI client                         | UI server
    UI server                         | UI client
    UI server/client                  | UI server/client

    UI(+NUI) client                   | UI server
    UI(+NUI) server                   | UI client
    UI(+NUI) server/client            | UI server/client

    UI client                         | UI(+NUI) server
    UI server                         | UI(+NUI) client
    UI server/client                  | UI(+NUI) server/client

    UI(+NUI) client                   | UI(+NUI) server
    UI(+NUI) server                   | UI(+NUI) client
    UI(+NUI) server/client            | UI(+NUI) server/client

    NUI client                        | NUI server
    NUI server                        | NUI client
    NUI server/client                 | NUI server/client

    NUI(+UI) client                   | NUI server
    NUI(+UI) server                   | NUI client
    NUI(+UI) server/client            | NUI server/client

    NUI client                        | NUI(+UI) server
    NUI server                        | NUI(+UI) client
    NUI server/client                 | NUI(+UI) server/client

    NUI(+UI) client                   | NUI(+UI) server
    NUI(+UI) server                   | NUI(+UI) client
    NUI(+UI) server/client            | NUI(+UI) server/client


     Figure 4: Possible Combinations of Altering and Altered Endpoints

4.1.  UI to UI

   This scenario works just as described in the base CoAP specification
   [I-D.ietf-core-coap].

4.1.1.  UI client to UI server

   Regular CoAP data is pushed from client to server.  The client needs
   to know the server's IP address and UDP port.  On the client side,
   the server's UDP/IP address information can be entered on the
   commandline, in a GUI textfield, preconfigured or provided in another



Becker, et al.          Expires January 16, 2014                [Page 6]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


   way.

4.1.2.  UI server to UI client

   An UDP/IP CoAP server hosts modified data which is pulled by the
   client.  The client needs to know the server's UDP/IP address
   information.  On the client side, the server's UDP/IP address
   information needs to be preconfigured.

4.1.3.  UI client/server to UI server/client

   Mixture of the above two scenarios, where both endpoints can be
   client and server.  The first endpoint can push data to the second
   endpoint, which can use that data to request from the first endpoint.
   The first endpoint needs to know the second endpoint's UDP/IP address
   information.

4.2.  UI(+NUI) to UI

   This is a scenario where two endpoints use an UDP/IP transport, and
   one supports non-UDP/IP.  This scenario works just as described in
   Section 4.1.

4.3.  UI to UI(+NUI)

   This is a scenario where two endpoints use an UDP/IP transport, and
   one supports non-UDP/IP.  This scenario works just as described in
   Section 4.1.

4.4.  UI(+NUI) to UI(+NUI)

   In this scenario, both UDP/IP endpoints offer an additional non-
   UDP/IP stack to communicate.  However, none, one or both non-UDP/IP
   stacks might be enabled or disabled.

4.4.1.  UI(+NUI) client to UI(+NUI) server

   Regular CoAP data is pushed from client to server.  The client needs
   to know the server's IP address and UDP port.  On the client side,
   the server's UDP/IP address information can be entered on the
   commandline, in a GUI textfield, preconfigured or provided in another
   way.  A way to decide which stack to use needs to be available, if
   multiple stacks are enabled on the endpoints.

4.4.2.  UI(+NUI) server to UI(+NUI) client

   Am UDP/IP CoAP server hosts modified data which is pulled by the
   client.  The client needs to know the server's UDP/IP address



Becker, et al.          Expires January 16, 2014                [Page 7]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


   information.  On the client side, the server's UDP/IP address
   information needs to be preconfigured.  A way to decide which stack
   to use needs to be available, if multiple stacks are enabled on the
   endpoints.

4.4.3.  UI(+NUI) client/server to UI(+NUI) server/client

   Mixture of the above two scenarios, where both endpoints can be
   client and/or server.  The first endpoint can push data to the second
   endpoint, which can use that data to request from the first endpoint.
   The first endpoint needs to know the second endpoint's UDP/IP address
   information.  A way to decide which stack to use needs to be
   available, if multiple stacks are enabled on the endpoint.

4.5.  NUI to NUI

   This is a scenario where two endpoints use a non-UDP/IP transport.

4.5.1.  NUI client to NUI server

   CoAP data is pushed from client to server.  The client needs to know
   the server's non-UDP/IP address information.  On the client side,
   non-UDP/IP address information can be entered on the commandline, in
   a GUI textfield, preconfigured or in a similar way.  A representation
   of the non-UDP/IP address information needs to be defined.

4.5.2.  NUI server to NUI client

   A non-UDP/IP CoAP server hosts modified data which is pulled by the
   client.  The client needs to know the server's non-UDP/IP address
   information.  On the client side, the server's non-UDP/IP address
   information needs to be preconfigured.  A representation of the non-
   UDP/IP address information needs to be defined.

4.5.3.  NUI client/server to NUI server/client

   Mixture of the above two scenarios, where both endpoints can be
   client and/or server.  The first endpoint can push data to the second
   endpoint, which can use that data to request from the first endpoint.
   The first endpoint needs to know the second endpoint's non-UDP/IP
   address information.  A representation of the non-UDP/IP address
   information needs to be defined.

4.6.  NUI(+UI) to NUI

   This is a scenario where two endpoints use a non-UDP/IP transport,
   and one endpoint supports UDP/IP.  This scenario works just as
   described in Section 4.5.



Becker, et al.          Expires January 16, 2014                [Page 8]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


4.7.  NUI to NUI(+UI)

   This is a scenario where two endpoints use a non-UDP/IP transport,
   and one endpoint supports UDP/IP.  This scenario works just as
   described in Section 4.5.

4.8.  NUI(+UI) to NUI(+UI)

   In this scenario, both non-UDP/IP endpoints offer an additional
   UDP/IP stack to communicate.  However, none, one or both UDP/IP
   stacks might be enabled or disabled.

4.8.1.  NUI(+UI) client to NUI(+UI) server

   CoAP data is pushed from client to server.  The client needs to know
   the server's non-UDP/IP address information.  On the client side,
   non-UDP/IP address information can be entered on the commandline, in
   a GUI textfield, preconfigured or in a similar way.  A representation
   of the non-UDP/IP address information needs to be defined.  A way to
   decide which stack to use needs to be available, if multiple stacks
   are enabled on the endpoint.

4.8.2.  NUI(+UI) server to NUI(+UI) client

   The non-UDP/IP CoAP server hosts modified data which is pulled by the
   client.  The client needs to know the server's non-UDP/IP address
   information.  On the client side, the server's non-UDP/IP address
   information needs to be preconfigured.  A representation of the non-
   UDP/IP address information needs to be defined.  A way to decide
   which stack to use needs to be available, if multiple stacks are
   enabled on the endpoint.

4.8.3.  NUI(+UI) client/server to NUI(+UI) server/client

   Mixture of the above two scenarios, where both endpoints can be
   client and/or server.  The first endpoint can push data to the second
   endpoint, which can use that data to request from the first endpoint.
   The first endpoint needs to know the second endpoint's non-UDP/IP
   address information.  A representation of the non-UDP/IP address
   information needs to be defined.  A way to decide which stack to use
   needs to be available, if multiple stacks are enabled on the
   endpoint.


5.  Proxy Scenarios

   TODO




Becker, et al.          Expires January 16, 2014                [Page 9]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


6.  Possible non-DNS solution

   POST to e.g. .well-known/tconf with JSON or link-format? link-format:


                  <coap://[2001:DB8::1]:8080>;preference=1
                  <coap+sms://+49....>;preference=2


                           Figure 5: Link-Format

   JSON:







































Becker, et al.          Expires January 16, 2014               [Page 10]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


              {
                  "protocoloptions": [
                      {
                          "preference": "1",
                          "protocolstack": [
                              {
                                  "protocol": "coap",
                                  "config": {
                                      "ACK_TIMEOUT": "2",
                                      "MAX_RETRANSMIT": "4"
                                  }
                              },
                              {
                                  "protocol": "udp",
                                  "config": {
                                      "port": "8080"
                                  }
                              },
                              {
                                  "protocol": "ip",
                                  "config": {
                                      "dest": "[2001:DB8::1]"
                                  }
                              }
                          ]
                      },
                      {
                          "preference": "2",
                          "protocolstack": [
                              {
                                  "protocol": "coap",
                                  "config": {
                                      "ACK_TIMEOUT": "10",
                                      "MAX_RETRANSMIT": "1"
                                  }
                              },
                              {
                                  "protocol": "sms",
                                  "config": {
                                      "address": "+49 172..."
                                  }
                              }
                          ]
                      }
                  ]
              }





Becker, et al.          Expires January 16, 2014               [Page 11]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


                              Figure 6: JSON


7.  Security Considerations

   TODO


8.  Acknowledgements

   This document is partly based on research for the research project
   'The Intelligent Container' which is supported by the Federal
   Ministry of Education and Research, Germany, under reference number
   01IA10001.


9.  Normative References

   [I-D.ietf-core-coap]
              Shelby, Z., Hartke, K., and C. Bormann, "Constrained
              Application Protocol (CoAP)", draft-ietf-core-coap-18
              (work in progress), June 2013.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.


Authors' Addresses

   Markus Becker (editor)
   ComNets, TZI, University Bremen
   Bibliothekstrasse 1
   Bremen  28359
   Germany

   Phone: +49 421 218 62379
   Email: mab@comnets.uni-bremen.de


   Thomas Poetsch
   ComNets, TZI, University Bremen
   Bibliothekstrasse 1
   Bremen  28359
   Germany

   Phone: +49 421 218 62379
   Email: thp@comnets.uni-bremen.de




Becker, et al.          Expires January 16, 2014               [Page 12]

Internet-Draft  Scenarios for CoAP on non-UDP Transports       July 2013


   Koojana Kuladinithi
   ComNets, TZI, University Bremen
   Bibliothekstrasse 1
   Bremen  28359
   Germany

   Phone: +49 421 218 62382
   Email: koo@comnets.uni-bremen.de











































Becker, et al.          Expires January 16, 2014               [Page 13]