Internet DRAFT - draft-tuwien-dsg-diameterofthings

draft-tuwien-dsg-diameterofthings








Distributed Systems Group                                     S. Qanbari
Internet-Draft                                             S. Mahdizadeh
                                                              S. Dustdar
Intended status: Informational                                   TU Wien
Expires: March 2016                                         N. Behinaein
                                                           R. Rahimzadeh
                                                                    BIHE
                                                      September 20, 2015


         Diameter of Things (DoT): A Protocol for Real-time 
                  Telemetry of IoT Applications
               draft-tuwien-dsg-diameterofthings-01


Abstract

  The Diameter of Things (DoT) protocol is intended to provide a real-
  time metering framework for IoT applications in resource-constraint
  gateways. Respecting resource capacity constraints on edge devices
  establishes a firm requirement for a lightweight protocol in support
  of fine-grained telemetry of IoT deployment units. Such metering
  capability is needed when lack of resources among competing
  applications dictates our schedule and credit allocation. In response
  to these findings, the authors offer the DoT protocol that can be
  incorporated to implement real-time metering of IoT services for
  prepaid subscribers as well as Pay-per-use economic models. The DoT 
  employs mechanisms to handle the composite application resource usage 
  units consumed/charged against a single user balance. Such charging 
  methods come in two models of time-based and event-based patterns. The
  former is used for scenarios where the charged units are continuously 
  consumed while the latter is typically used when units are implicit 
  invocation events. The DoT-enabled platform performs a chained 
  metering transaction on a graph of dependent IoT microservices, 
  collects the emitted usage data, then generates billable artifacts 
  from the chain of metering tokens. Finally it permits micropayments to
  take place in parallel.


  
  
  
  
  
Qanbari, et al.          Expires March 20, 2016                 [Page 1]

Internet-Draft           Diameter of Things (DoT)         September 2015


Status of This Memo

   This Internet-Draft is submitted in full conformance with the 
   provisions of BCP 78 and BCP 79. This document may not be modified, 
   and derivative works of it may not be created, and it may not be 
   published except as an Internet-Draft.
   
   Internet-Drafts are working documents of the Internet Engineering 
   Task Force (IETF), its areas, and its working groups.  Note that 
   other groups may also distribute working documents as Internet-
   Drafts.
   
   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."

   The list of current Internet-Drafts can be accessed at 
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at 
   http://www.ietf.org/shadow.html

   This Internet-Draft will expire on March 20, 2016.


Copyright Notice


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










Qanbari, et al.          Expires March 20, 2016                 [Page 2]

Internet-Draft           Diameter of Things (DoT)         September 2015


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Quest for Metering  . . . . . . . . . . . . . . . . . . .   4
     1.2.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   5
   2.  Conventions used in this document . . . . . . . . . . . . . .   6
   3.  Architecture Models . . . . . . . . . . . . . . . . . . . . .   7
   4.  DoT Metering Token Messages . . . . . . . . . . . . . . . . .   8
   5.  DoT-based IoT Application Overview  . . . . . . . . . . . . .  10
     5.1.  DoT-based Application Topology  . . . . . . . . . . . . .  10
     5.2.  DoT-based Metering Plan . . . . . . . . . . . . . . . . .  12
   6.  DoT Interrogations  . . . . . . . . . . . . . . . . . . . . .  12
     6.1.  Initial Identification (II) . . . . . . . . . . . . . . .  17
     6.2.  Request Realization (RR). . . . . . . . . . . . . . . . .  18
     6.3.  Telemetry Transmission (TT) . . . . . . . . . . . . . . .  18
     6.4.  Value Verification (VV) . . . . . . . . . . . . . . . . .  21
   7. DoT Messages . . . . . . . . . . . . . . . . . . . . . . . . .  22
   8. DoT Application State Machine  . . . . . . . . . . . . . . . .  25
   9.  Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . .  35
   10.  Security Considerations  . . . . . . . . . . . . . . . . . .  35
   11.  IANA Considerations  . . . . . . . . . . . . . . . . . . . .  35
   12. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . .  36
   13. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36
     13.1.  Normative References . . . . . . . . . . . . . . . . . .  36
   14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .  37


1. Introduction

   Utility computing\cite{Buyya:2009:CCE:1528937.1529211} is an evolving
   facet of ubiquitous computing that aims to converge with emerging
   Internet of Things (IoT) infrastructure and applications for sensor-
   equipped edge devices. The agility and flexibility to quickly
   provision IoT services on such gateways requires an awareness of how
   underlying resources are being utilized as metered services. Such
   awareness mechanisms enable IoT platforms to adjusts the resource
   leveling to not exceed the elasticity constraints such that stringent
   QoS is achievable.

   Respecting resource elasticity requirements on edge devices 
   establishes a firm requirement of a lightweight protocol with
   support of fine-grained telemetry for IoT deployment units. Such 
   metering capability is needed when lack of resources among competing 
   applications dictates our schedule and credit allocation. In 
   response to these findings, the authors offer a DoT protocol that 
   can be incorporated to implement real-time AAA of IoT services for
   prepaid subscribers to make and enforce trade-off decisions. 




Qanbari, et al.          Expires March 20, 2016                 [Page 3]

Internet-Draft           Diameter of Things (DoT)         September 2015


   Based on this protocol, IoT infrastructure providers are able to 
   collect the emitted usage data, then generate billable artifacts
   from a chain of metering transaction tokens. Finally it permits 
   micro-payments to take place in parallel. This document specifies a 
   DoT application that can be used to implement real-time telemetry
   for a variety of IoT applications.


1.1. Quest for Metering

   The quest for telemetry of the client's IoT application resource
   usage becomes more challenging when the job is deployed and
   processed in a constrained environment. Such applications collect
   data via sensors and control actuators for more utilization in home
   automation, industrial control systems, smart cities and other IoT
   deployments. In this context, telemetry enables a Pay-per-use or
   utility-based pricing model through metered data to achieve more
   financial transparency for resource-constrained applications.

   Metering measures rates of resource utilization via metrics, such as
   number of application invocations, data storage or memory usage
   consumed by the IoT service subscribers. Metrics are statistical
   units that indicate how consumption is measured and priced.
   Furthermore, metering is the process of measuring and recording the 
   usage of an entire IoT application topology, individual parts of the
   topology, or specific services, tasks and resources. From the
   provider view, the metering mechanisms for service usage differ
   widely, due to their offerings which are influenced by their IoT
   business models. Such mechanisms range from usage over time,
   invocation-basis to subscription models. Thus, IoT application
   providers are encouraged to offer reasonable pricing models to
   monetize the corresponding metering model.

   To fulfill such requirements, we have incorporated and extended the
   Diameter base protocol defined in [RFC6733] to an IoT domain. There
   are several established Diameter base protocol applications like
   Mobile IPv4 [RFC4004], Diameter Credit-Control [RFC4006] and Session
   Initiation Protocol (SIP) [RFC4740] applications. However, none of
   them completely conforms to the IoT application metering models. 

   The current accounting models specified in the Diameter base are not
   sufficient for real-time resource usage control, where credit
   allocation is to be determined prior to and after the service
   invocation. In this sense, the existing Diameter base applications
   do not provide dynamic metering policy enforcement in resource and
   credit allocations for prepaid IoT users. Diameter extensibility





Qanbari, et al.          Expires March 20, 2016                 [Page 4]

Internet-Draft           Diameter of Things (DoT)         September 2015


   allows us to define any protocol above the Diameter base protocol.
   Along with this idea, in order to support real-time metering, credit
   control and resource allocation, we have extended the Diameter to
   Diameter of Things (DoT) protocol by adding four new types of
   servers in the AAA infrastructure: DoT provisioning server, DoT
   resource control server, DoT metering server and DoT payment server.
   Further details regarding the aforementioned entities will be
   discussed in a later section of DoT architecture models. In summary,
   our main focus is the specification of an extended Diameter base 
   protocol to an IoT application domain. This contributes to
   fully implementing a real-time policy-based telemetry and resource
   control for a variety of IoT applications.


1.2. Terminology
 
   AAA
      Authentication, Authorization, and Accounting for a specific IoT 
      application

   AA answer

   AA answer generically refers to a service specific authorization and
   authentication answer.  AA answer commands are defined in service
   specific authorization applications, e.g., [NASREQ] and [DIAMMIP].

   AA request

   AA request generically refers to a service specific authorization and
   authentication request.  AA request commands are defined in service
   specific authorization applications e.g., [NASREQ] and [DIAMMIP].

   Diameter of Things (DoT)

   DoT implements a mechanism to provision IoT deployment units, control
   resource elasticity, meter usage, and charge the user credit for the 
   rendered IoT applications.
                
   IoT Microservice
      A fine-grained atomic task performed by an IoT service on a device.

   IoT Application Topology
      It contains the composition of hybrid collaborating IoT 
      microservices to meet the user's request. The topology is packages
      with the elasticity requirements and constraints (hardware or 
      software resources) which will dictate our schedule and credit 
      allocation within the runtime environment.




Qanbari, et al.          Expires March 20, 2016                 [Page 5]

Internet-Draft           Diameter of Things (DoT)         September 2015


   Metering Server
      A DoT metering server performs real-time metering and rating of 
      IoT applications deployment. 

   Provisioning Server
      Provisioning server refers to initial configuration, deployment 
      and management of IoT applications for subscribers. It also deals 
      with ensuring the underlying IoT device layer is available to serve.

   Payment Server
      The micropayment transaction charges subscribers upon relatively 
      small amounts for a unit of resource usage. It basically transfers
      a certain amount of trade in the payWord. In the Pay Word scheme a
      payment order consists of two parts, a digitally signed payment 
      authority and a separate payment token which determines the amount.
      A chained hash function, is used to authenticate the token. The 
      server then calculates a chain of payment tokens (or paychain). 
      Payments are made by revealing successive paychain tokens.

   Rating
      The process of giving price to an IoT application usage events. 
      This applies to service usage as well as underlying resource usage.

   Resource-control Server
      Resource control server implements a mechanism that interacts in 
      real-time with a resource and credit allocation to an account as 
      well as the IoT application. It controls the charges related to 
      the specific IoT application usage.

   One-cycle event
      It indicates a single-request-response message exchange pattern 
      which one specific service is invoked by one consumer at a time 
      while no session state is maintained. One message is exchanged in 
      each direction between a Requesting DoT Node and a Responding 
      DoT Node. 


2. Conventions used in this document

   In examples, "C:" and "S:" indicate lines sent by the client and 
   server respectively.

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






Qanbari, et al.          Expires March 20, 2016                 [Page 6]

Internet-Draft           Diameter of Things (DoT)         September 2015


   In this document, these words will appear with that interpretation 
   only when in ALL CAPS. Lower case uses of these words are not to be 
   interpreted as carrying RFC-2119 significance.

   In this document, the characters ">>" preceding an indented line(s) 
   indicates a compliance requirement statement using the key words 
   listed above. This convention aids reviewers in quickly identifying 
   or finding the explicit compliance requirements of this RFC.


3. Architecture Models

   Figure 1 illustrates a schematic view on collaborating components of 
   DoT architecture. It contains of a DoT client, Provisioning server, 
   Resource control server, Metering server, and a Payment server.

   +------+    +----------+   AAA &  +------------+
   | End  |<-->|   DoT    |   DoT    |    AAA     |
   | User |    |  Client  |<-------->|   Server   |
   +------+    +----------+ Protocol +------------+
                     ^                     ^
                 DoT |                 DoT |    
             Protocol|             Protocol|   
                     |                     |                   
                     v                     v                   
              +------------+   DoT    +----------+   DoT    +---------+
              |Provisioning| Protocol | Resource | Protocol | Payment |
              |   Server   |<-------->|  Control |<-------->|  Server |
              |            |          |  Server  |          |         |
              +------------+          +----------+          +---------+
                   |                     ^
                   |                     | DoT
                   |                     | Protocol
                   |                     v
                   |    Dot         +------------+
                   |   Protocol     |  Metering  |
                    --------------->|   Server   |
                                    +------------+
                                                                 
   Figure 1: Typical Diameter of Things (DoT) application architecture
   
   As the end user defines and composes an IoT application, the request 
   is forwarded to the DoT client. The DoT client submits the composed 
   application to the DoT infrastructure which determines possible 
   charges, verifies user accounts, controls the resource allocation to 
   the application, meters the usage, and finally generates a bill and 
   deducts the corresponding credit from the end user's account balance.




Qanbari, et al.          Expires March 20, 2016                 [Page 7]

Internet-Draft           Diameter of Things (DoT)         September 2015


   DoT client contacts the AAA server with AAA protocol to authenticate 
   and authorize the end user. When the end user submits the IoT 
   application topology graph, the DoT client contacts the provisioning 
   server to submit an application topology. Afterwards, the
   provisioning server contacts the resource control server with
   information of required resource units. The resource control server
   reserves resources that need to be
   allocated to the service. 

   Finally the DoT client receives the grant resource message and 
   informs the end user that the request has been granted. Next, the 
   IoT application is deployed and instantiated, then the submitted 
   topology is registered to metering server for telemetry and credit 
   control purposes.

   The metering server is responsible to perform the metering 
   transactions according to the submitted topology and meter the 
   services by calling metering task of each service in the chain. 
   Metering transactions will remain running until the termination 
   request is sent from DoT client to the provisioning server.

   After receiving termination request, the resource control server 
   releases the resources and sends the billable artifacts related to
   the user usage to the payment server. The payment server, then,
   invokes the payment transaction and deducts credit from the end
   user's account and refunds unused reserved credit to the user's
   account.


4. DoT Metering Token Messages

   In DoT application architecture, metered values are transfered via 
   tokens. This section defines DoT token message attributes that MUST be 
   supported by all DoT implementations that conform to this 
   specification. The CBOR [RFC7049] message format is considered for
   the metering tokens transmission since it can decrease payload sizes 
   compared to other data formats.
   
   
   
   
   
   
   
   
   
   
   
   
   
   
Qanbari, et al.          Expires March 20, 2016                 [Page 8]

Internet-Draft           Diameter of Things (DoT)         September 2015


                              ------------------------------------
                             | Metering Token Message Format      |
                             | Header                             |
                             |   Token ID (OctedString)           |
                             |   App Identifier (Unsigned32)      |
 -----------------------     |   Origin Session ID (OctedString)  |
|                       |    |   Token Timestamp (Time)           |
|        IoT App        |    |   Polict ID (Unsigned8)            |
|                       |    |   Metric ID Array (Collection)     | 
|-----------------------|    | Body                               |
|          DoT          |    |   Service Usage [key,values]       |
|                       |    |   Resource Usage Array [key,values]|
|            +++++++++--------------------------------------------
|            + Token +-------
|            +++++++++  |    |
|                       |    | Encode/Decode
|-----------------------|    | Metering Token
|                       |    |   
|         CoAP          | Default Size= 1 KB
|                       |    |
| ++++++++++++++++++++  |    |
| +Payload Data Model+  |    |
| +    CBOR          +-------
| ++++++++++++++++++++  |
|                       |
|-----------------------|
|                       |
|          UDP          |
|                       |
 -----------------------


     <DoT-Token-Message> ::=   < Token-Id >
                                  { App-Identifier }
                                  { Origin-Session-Id }
                                  { Token-Timestamp }
                                  { Policy-Id }
                                  { Metric-Id-Array }
                                  { Service-Usage }
                                  { Resource-Usage-Array}
                                                                                         
   Figure 2: Diameter of Things (DoT) Metering Token Structure


5. DoT-based IoT Application Overview

   The DoT application defined in this specification implements flexible
   metering policy as well as the definition and constraints of the 
   application topology.
   
   
Qanbari, et al.          Expires March 20, 2016                 [Page 9]

Internet-Draft           Diameter of Things (DoT)         September 2015


5.1. DoT-based Application Topology

   The main responsibility of the provisioning server is the actual 
   provision of the requested IoT application package. It contains the 
   composition of collaborating IoT microservices to meet the user's 
   request. 

   Each IoT microservice is predefined with a detailed specification 
   such as its ID, constraints and various usage patterns and policies. 
   For instance, as defined in List 1. they can be advertised with 
   diverse pricing models due to the event-based or time-based patterns 
   for specific subscribers. The IoT microservices elasticity 
   requirements and constraints (hardware or software resources) are 
   also defined in the topology which will dictate our schedule within 
   the runtime environment. The end user's request can be received in 
   the form of a JSON object. It contains user information as well as 
   the user requirements in terms of IoT composite application topology 
   and its specification, to realize the intended behavior. After 
   receiving the request, a provisioning server generates a dependency 
   graph of the application topology complying with its specification.

{   "microserviceID":"01",
    "microserviceName":"getTemperature",
    "uri":"getTemperature.py",
    "execute":"python getTemperature.py",
    "constraints":{"runtime": "python 2.7","memory": "..."}
    "policies":[{"policyID":"PL_01_01",
                 "cost":"$2/week",
                 "desc":"session mode - $2 per week"},
                {"policyID":"PL_01_02",
                 "cost":"0.01cent/invoke",
                 "desc":"event mode - 0.01cent per invoke"},
                {"policyID":"PL_01_03",
                 "cost":"$1",
                 "desc":"subscription fee"},
                ], }
  
  List 1. Sample IoT microservice elasticity requirement definition 


   The Dependency graph displays dependencies between different 
   microservices which are requested to be in topology. In the 
   DoT protocol, this dependency graph is used in forming the 
   transaction model for metering the IoT deployment unit. 
   
   
   
   
   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 10]

Internet-Draft           Diameter of Things (DoT)         September 2015


   The dependency graph is a directional graph where each node of the 
   graph represents an available microservice in the service package 
   registry. Similarly, each edge of the graph shows dependencies 
   between two microservices (two nodes). The edge has a direction that 
   shows the execution order of microservices involved in this edge. 
   The sample of dependency graph in the form of incidence matrix is 
   shown in the Figure 3.

                          
              Display (Humidity & Temperature)
                            ------ 
                           |      |
                           | S_03 |
                           |      |
                            ------ 
                            ^    ^
         getHumidity        |    |        getTemperature
           ------           |    |            ------ 
          |      |          |    |           |      |
          | S_02 |----------      -----------| S_01 |
          |      | E_02            E_01      |      |
           ------  (=PL_02_01)    (=PL_01_02) ------ 




                        E_01         E_02
                 -------------------------------
         S_03  |     (PL_01_02)   (PL_02_01)    |
               |                                |
               |                                |
         S_02  |         0        -(PL_02_01)   |
               |                                |
               |                                |
         S_01  |     -(PL_01_02)       0        |
                --------------------------------
 
  Figure 3: Typical DoT Application Topology and its Incident Matrix


   Additionally, each edge has a label which shows the policy to be in 
   effect for this connection. The Resource control server realizes 
   such metering policies using a predefined incident matrix. This 
   incident matrix represents the metering policies for our directed 
   acyclic graph (DAG) of IoT services. The metering policy incident 
   matrix P_t is a n*m matrix of [P_ij] policies, where n is the 
   number of nodes (vertices) and m is number of lines (Edges). In the 
   
   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 11]

Internet-Draft           Diameter of Things (DoT)         September 2015


   cell of N_i and V_j, the P_ij indicates the rate of call per granted 
   unit (time & events). It enables each service to invoke its neighbor
   with the attached policy. Therefore, when a client sends a request 
   containing a tailored IoT application topology, the Resource control 
   server is able to rate the request based on the enforced metering 
   policies of time (duration) and event-based usage patterns.


5.2. DoT-based Metering Plan

   The metering plans define the allocation mechanism for granting the 
   required resource units to an IoT application/constituent 
   microservices. It is an indication that the following assumptions 
   underlying our IoT telemetry solution has been considered for the 
   proper positioning of DoT protocol. The IoT applications are 
   advertised with an associated charging plans. In case of cloud-based 
   model, there can be a subscription fee for such pay-per-use plans. 
   The cost of obtaining such plans is known as the plan's "premium" 
   which is the price that is calculated and offered in the subscription
   phase by the provider. The estimation of the plan's premium is out 
   of the scope of the DoT protocol. The plan indicates the composed 
   services pricing schema and comes in two models of predefined as well 
   as customized. The plan will be built to be consistent with the 
   composed application topology in the rate setting.

   The subscribed metering plan indicates: (i) the price of granted 
   units for every IoT application constituent microservice. 
   For instance, 5 hours for Humidity sensor and 10 invocations for 
   Chiller On/Off actuator. (ii) the resource Used Unit Update (U3) 
   frequency for all associated units which are defined in the 
   provider's plan. (iii) the manual/automatic payment configuration. 
   So that the provider can handle the payment transactions 
   automatically while informing the user. (iv) container instance fee, 
   which is the fee that user pays for underlying resource usage. 
   Instance usage can be time based or underlying resource-usage based 
   which is defined by the provider's policy. (v) finally, subscription 
   time for pay-per-use model and subscription fee for prepaid model.


6. DoT Interrogations

   For a Hybrid DoT, four main interrogations are performed for a 
   well-functioning protocol. The first interrogation is called Initial 
   Identification (II) which basically deals with clients' 
   identification, for instance the user authentication and 
   authorization processes. The second interrogation is Request 
   
   
   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 12]

Internet-Draft           Diameter of Things (DoT)         September 2015


   Realization (RR) that aims to provision the clients' IoT applications
   as well as scheduling their resource allocation upon agreed terms 
   and subscribed plan. The third interrogation is called Telemetry 
   Transmission (TT) that deals with metering the running services as 
   well as the granted units usage data transmission for charging 
   purposes. The final interrogation, entitled Value Verification (VV), 
   ensures value generation and delivery to the interested stakeholders.

   The hybrid metering is carried out in main DoT sessions which hold 
   globally unique and constant Session-IDs. The whole DoT-based 
   metering life-cycle including the II, RR, TT, and VV interrogations 
   in prepaid model and pay-per-use model are presented in Figure 4 and
   Figure 5 respectively.
   

End        DoT        AAA   Provision    Resource    Metering   BitCoin
User     Client     Server   Server   Control Server  Server     Server
|           |          |        |            |            |           |
|           |          |        |            |            |           |
|Auth Req   | AAA      |        |            |            |           |
|---------->| request  |        |            |            |           |
|Credential |--------->|        |            |            |           |
|authorized |<---------|        |            |            |           |
|<----------|AAA answer|        |            |            |           |
|           |          |        |            |            |           |
|IoT App &  |          |        |            |            |           |
|Plan       |          |        |            |            |           |
|submition  |          |        | negotiate| |            |           |
|---------->|Provision IoT App &| to         |            |           |
|           |subscription plan  | allocate   |            |           |
|           |------------------>| resources  |            |           |
|           |          |        |----------->|  Resource  |           |
|           |          |        |            |--scheduling|           |
|           |          |        |            |  |         |           |
|           |          |        |            |<-          |           |
|           |          |        |            |--  Reserve |           |
|           |          |        |            |  | resource|           |
|           |          |        |            |<-  & lock  |           |
|           |          |        | Granted    |    credit  |           |
|           |          |        | resource   |            |           |
|Request    | Resource Granted  |<-----------|            |           |
|authorized |<------------------|            |            |           |
|<----------|          |        |            |            |           |








Qanbari, et al.          Expires March 20, 2016                [Page 13]

Internet-Draft           Diameter of Things (DoT)         September 2015


|           |          |        |            |            |           |
| Start     |          |        |            |            |           |
| service   |          |        |            |            |           |
|---------->| Deploy service    |            |            |           |
|           |------------------>|   Meter IoT app         |           |
|           |          |        |------------------------>|           |
|           |          |        |            |Ask for     |           |
|           |          |        |            |granted     |           |
|           |          |        |            |units + plan|           |
|           |          |        |            |<-----------|           |
|           |          |        |            |            |           |
|           |          |        |            |Granted     |           |
|           |          |        |            |units + plan|           |
|           |          |        |            |----------->|           |
|           |          |        |            |            |--         |
|           :          :        :            :            :  |        |
|           :          :        :            :            :<- metering|
|           |          |        |            |            |transaction|
|           |          |        |            |            |           |
|           |          |        |            |            |--Summarize|
|           |          |        |            |            |  | usage  |
|           |          |        |            |            |<-         |
|           |          |        |            |Send        |           |
|           |          |        |            |usage update|           |
|           |          |        |            |<-----------|           |
|           |          |        |            |            |           |
|           |          |        |            |--  Charge  |           |
|           |          |        |            |  | credit  |           |
|           |          |        |            |<-          |           |
|           |          |        |Credit      |--  Check   |           |
|           |          |        |update      |  | credit  |           |
|           |   Credit update   |notification|<- threshold|           |
|           |   required        |<-----------|            |           |
|Notify user|<------------------|            |            |           |
|<----------|          |        |            |            |           |
|           |          |        |            |--  Update  |           |
|           |          |        |            |  | & lock  |           |
|           |          |        |            |<-  credit  |           |
|           :          :        :            :            :           |
|Service    :          :        :            :            :           |
|termination|          |        |            |            |           |
|---------->|   Render service  | Release    |            |           |
|           |------------------>| resource & | Measure    |           |
|           |          |        |----------->| usage quota|           |
|           |          |        | bill       |----------->|           |






Qanbari, et al.          Expires March 20, 2016                [Page 14]

Internet-Draft           Diameter of Things (DoT)         September 2015


|           |          |        |            |            |--         |
|           |          |        |            |            |  |        |
|           |          |        |Metering    |Quota value |<- Commit &|
|           |          |        |acknowledge |<-----------|  aggregate|
|           |          |        |<-----------|            |           |
|           |          |        |            |            |           |
|           |          |        |   Terminate metering    |           |
|           |          |        |------------------------>|           |
|           |          |        |            |            |           |
|           |          |        |            | Send for payment       |
|           |          |        |            |----------------------->|
|           |          |        |            |          Payment     --|
|           |          |        |            |          transaction|  |
|           | User     |        |            |            |         ->|
|           | logoff   |        |            |<-----------------------|
|           |--------->|        |            | Update client credit   |
|           | End user |        |            |            |           |
|           |<---------|        |            |            |           |
|           | Session  |        |            |            |           |


   Figure 4. The sequence of DoT interrogations in prepaid model
   to enable hybrid metering


End        DoT        AAA   Provision    Resource    Metering   BitCoin
User     Client     Server   Server   Control Server  Server     Server
|           |          |        |            |            |           |
|           |          |        |            |            |           |
|Auth Req   | AAA      |        |            |            |           |
|---------->| request  |        |            |            |           |
|Credential |--------->|        |            |            |           |
|authorized |<---------|        |            |            |           |
|<----------|AAA answer|        |            |            |           |
|           |          |        |            |            |           |
|IoT App &  |          |        |            |            |           |
|Plan       |          |        |            |            |           |
|submition  |          |        | negotiate| |            |           |
|---------->|Provision IoT App &| to         |            |           |
|           |subscription plan  | allocate   |            |           |
|           |------------------>| resources  |            |           |
|           |          |        |----------->|  Resource  |           |
|           |          |        |            |--scheduling|           |
|           |          |        |            |  |         |           |
|           |          |        |            |<-          |           |






Qanbari, et al.          Expires March 20, 2016                [Page 15]

Internet-Draft           Diameter of Things (DoT)         September 2015


|           |          |        |            |--  Reserve |           |
|           |          |        |            |  | resource|           |
|           |          |        | Granted    |<-          |           |
|           |          |        | resource   |            |           |
|Request    | Resource Granted  |<-----------|            |           |
|authorized |<------------------|            |            |           |
|<----------|          |        |            |            |           |
| Start     |          |        |            |            |           |
| service   |          |        |            |            |           |
|---------->| Deploy service    |            |            |           |
|           |------------------>|   Meter IoT app         |           |
|           |          |        |------------------------>|           |
|           |          |        |            |Ask for     |           |
|           |          |        |            |granted     |           |
|           |          |        |            |units + plan|           |
|           |          |        |            |<-----------|           |
|           |          |        |            |            |           |
|           |          |        |            |Granted     |           |
|           |          |        |            |units + plan|           |
|           |          |        |            |----------->|           |
|           |          |        |            |            |--         |
|           :          :        :            :            :  |        |
|           :          :        :            :            :<- metering|
|           |          |        |            |            |transaction|
|           |          |        |            |            |           |
|           |          |        |            |            |--Summarize|
|           |          |        |            |            |  | usage  |
|           |          |        |            |            |<-         |
|           |          |        |            |Send        |           |
|           |          |        |            |usage update|           |
|           |          |        |            |<-----------|           |
|           |          |        |            |            |           |
|           |          |        |            |Validate    |           |
|           |          |        |            |Subscription|           |
|           |          |        |            |--          |           |
|           |          |        |            |  |         |           |
|           |Renew subscription |Renew       |<-          |           |
|           |required           |<-----------|            |           |
|Notify user|<------------------|subscription|            |           |
|<----------|          |        |request     |            |           |
|           |          |        |            |--  Check   |           |
|           |          |        |            |  | payment |           |
|           |          |        |            |<-  interval|           |








Qanbari, et al.          Expires March 20, 2016                [Page 16]

Internet-Draft           Diameter of Things (DoT)         September 2015


|           |          |        |            |            |           |
|           |          |        |            | Send for payment       |
|           |          |        |            |----------------------->|
|           |          |        |            |          Payment     --|
|           |          |        |            |          transaction|  |
|           |          |        |            |            |         ->|
|           |          |        |            |<-----------------------|
|           |          |        |            | Payment confirmation   |
|           :          :        :            :            :           |
|Service    :          :        :            :            :           |
|termination|          |        |            |            |           |
|---------->|   Render service  | Release    |            |           |
|           |------------------>| resource & | Measure    |           |
|           |          |        |----------->| usage quota|           |
|           |          |        | bill       |----------->|           |
|           |          |        |            |            |--         |
|           |          |        |            |            |  |        |
|           |          |        |Metering    |Quota value |<- Commit &|
|           |          |        |acknowledge |<-----------|  aggregate|
|           |          |        |<-----------|            |           |
|           |          |        |            |            |           |
|           |          |        |   Terminate metering    |           |
|           |          |        |------------------------>|           |
|           |          |        |            |            |           |
|           |          |        |            | Send for payment       |
|           |          |        |            |----------------------->|
|           |          |        |            |          Payment     --|
|           |          |        |            |          transaction|  |
|           | User     |        |            |            |         ->|
|           | logoff   |        |            |<-----------------------|
|           |--------->|        |            | Update client credit   |
|           | End user |        |            |            |           |
|           |<---------|        |            |            |           |
|           | Session  |        |            |            |           |


   Figure 4. The sequence of DoT interrogations in pay-per-use model
   to enable hybrid metering


6.1.  Initial Identification

   The end user subscribes the application as well as the chosen plan 
   to the DoT client. The DoT client submits the IoT deployment units 
   to the Provisioning server to ask for the required resource units 
   it needs to run. In this case, the Provisioning server queries for 
   resources (including underlying resources and credit allocation) 
   from Resource control server. The Resource control server is 
   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 17]

Internet-Draft           Diameter of Things (DoT)         September 2015


   responsible for the device resource reservation. It also keeps 
   track of user credit fluctuations.

   In this phase, the end user requirements are modeled into an 
   application topology using a directed acyclic graph. This graph can 
   connect various IoT microservices available in diverse usage units.
   The deployment of such hybrid applications will result in one global
   constant Session-ID followed by related sub-session-IDs as well as 
   transaction-IDs. Note that the IoT application might send a 
   (re)authorization request to the AAA server to establish or maintain 
   a valid DoT session. However, this process does not influence the 
   credit allocation that is streaming between the DoT client and 
   provisioning server, as it has already been authorized for the 
   whole transaction before.


6.2. Request Realization (RR)

   The Resource control server analyzes the IoT service and allocates 
   resources to the requested service. It also considers the 
   subscription time/fee in order to notify user when this value elapses.

   When the new usage update arrives at the Resource control server, it 
   charges the credit based on the usage summary received from the 
   Metering server. It also validates subscription by checking the 
   status of credit (as in prepaid model) or elapsed time 
   (in pay-per-use model) against a certain threshold. Upon reaching 
   the threshold, the Resource control server sends an update 
   notification request to the user. DoT protocol makes it possible to 
   define a default action for this purpose. This default action can be
   to perform update automatically or to ask user to take the desired 
   action.


6.3. Telemetry Transmission (TT)
   As soon as the end user sends the Start service request to the DoT 
   client, the DoT Client asks the Provisioning server to initiate the 
   service and start monitoring and metering processes. In this regard, 
   the Provisioning server submits the IoT application to the Metering 
   server and asks to establish a metering mechanism for the newly 
   opened session.

   As soon as an IoT application is deployed, metering server monitors 
   the real usage of each service element including service usage and 
   resource usage at a certain frequency rate called Unit Usage Update 
   (U3). The U3 frequency determines the rate of sending updates 
   regarding unit usage of each service. It is independent of the type 
   
   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 18]

Internet-Draft           Diameter of Things (DoT)         September 2015


   of service. For example, the U3 set to 25%, implies that for a 
   time-based microservice with granted units of 100 minutes, the usage 
   update should be provided every $25$ minutes; and for an event-based 
   microservice with granted units of 100 invocations, the usage update 
   will be sent after every 25 invocations. 

   To make it more clear, after identification of an IoT application to 
   the Metering server, the Metering server sends a request to the 
   Resource control server asking for the amount of granted units which 
   are reserved for all microservices involved in the application as
   well as the plan, which includes the U3 value for each microsevice 
   as defined by the provider. The U3 values are then provided to the 
   Metering agents, as the metering server starts the metering 
   transaction.

   During deployment of an IoT application, each Metering agent meters 
   the actual resource and service usage of its associated/assigned 
   microservice. If the actual service usage value reaches an integer 
   multiples of U3, the Metering agent will send a notification message
   to the Metering server. The Metering server then uses these feedbacks
   to gain a realistic perception of the usage of each microservice and
   to charge the user credit accordingly. Next, if the application 
   usage of a microservice reaches the threshold value, the Metering 
   Server informs the Resource control server issuing a resource-update 
   request for the service. For instance, when the actual usage of a 
   certain microservice reaches a certain threshold, e.g. more than 70%,
   metering server informs the resource control server. This contributes
   to a continuous and consistent service delivery. The detailed flow of
   TT phase is presented in Figure 6.


Provision   Resource   Payment         Metering      Metering Agent
Server      Control    Server          Server        Cohort 
|           Server       |                |         (Raspbery Node)
|           |            |                |               |
|           |            |                |               |
|       Meter IoT App    |                | Request to    |    
|---------------------------------------->| meter + send  |
|           |            |                | U3 freq.      |  
|           |            |                |-------------->|    
|           |            |                |               |--  Wake up   
|           |            |                |               |  | metering 
|           |            |                |               |<-  agent
|           |            |                |               |     
|           |            |                |               |--  Create
|           |            |                |               |  | token
|           |            |                |               |<-




Qanbari, et al.          Expires March 20, 2016                [Page 19]

Internet-Draft           Diameter of Things (DoT)         September 2015


|           |            |                |               |
|           |            |                |               |--  Meter
|           |            |                |               |  | IoT app &
|           |            |                |               |<-  resource 
|           |            |                |               |    usage    
|           |            |                |               |--   
|           |            |                |               |  | Write
|           |            |                |Send token at  |<-  token    
|           |            |                |U3 intervals   |   
|           |            |                |<--------------|
|           :            :                :               |
|           :            :                :               | 
|Release    |            |                |               |   
|resource   | Measure    |                |               |    
|---------->| usage quota|                |               |   
|           |---------------------------->|Request to     |
|           |            |            ----|commit( meter  |
|           |            |            |   |& commit token)|
|           |            |            |   |-------------->|
|           |            |            |   | Publish vote  |
|           |            |     Commit |   | (yes/no)      |
|           |            |     Request|   |<--------------|
|           |            |     Phase  |   | Vote from     |   
|           |            |            |   | agent A       |      
|           |            |            |   |<----------*   |  
|           |            |            |   | Vote from     |   
|           |            |            |   | agent B       |      
|           |            |          --|   |<----------*   |
|           |            |         |   ---|               |
|           |            |      2PC|      |               |
|           |            |         |   ---|               |
|           |            |          --|   | Commit/Retry  |      
|           |            |            |   |-------------->|          
|           |            |            |   | Token from    |   
|           |            |     Commit |   | agent A       |      
|           |            |     Phase  |   |<----------*   |  
|           |            |            |   | Token from    |      
|           |            |            |   | agent B       |   
|           |            |            |   |<----------*   | 
|           |            |             ---|               |
|           |            |                |--  Commit     |        
|           |            |                |  | metering   |         
|           |            |                |<-  transaction|    
|           |            |                |               |        
|           |            |                |--  Summarize  | 
|           |            |                |  | & aggregate|        
|           |            |                |<-  tokens     |            




Qanbari, et al.          Expires March 20, 2016                [Page 20]

Internet-Draft           Diameter of Things (DoT)         September 2015


|           | Aggregated usage value      |               |
|           |<----------------------------|               |
|           |            |                |               |           
|           | Send       |                |               |
|           | for payment|                |               |     
|           |----------->|                |               |
|           |            |                |               |           
|           |            |--  Start       |               |      
|           | Update     |  | payment     |               |     
|           | client     |<-  transaction |               |
|           | credit     |                |               |      
|           |<-----------|                |               |     
|           |            |                |               |
   Figure 6. DoT Hybrid Metering - 2PC transaction model 


   In the DoT credit allocation model, the provisioning server asks 
   the resource control server to reserve resources and to lock a 
   suitable amount of the user's credit. Then it returns the 
   corresponding amount of credit resources in the form of service 
   specific usage units (e.g., number of invocations, duration) to 
   be metered. The granted and allocated unit type(s) should not be 
   changed during an ongoing DoT session.


6.4. Value Verification (VV)

   When the end user terminates the service session, the DoT client
   MUST send a final service rendering request to the Provisioning
   server. The Provisioning server should ask the Resource Control
   server to release all the allocated resources to the IoT application
   and perform payment transaction. As such, the Resource control
   server deallocates the granted resources and asks the Metering 
   server to commit the measured metering tokens and report the quota
   value to it. Then the Resource Control server sends the billable
   artifacts to the Payment Server to charge the client account
   respectively. Finally the Payment server sends the updated client
   credit to the Resource Control. Meanwhile DoT Client drops the user
   session throughout AAA server. 
   
   Upon each deduction from user credit, the DoT protocol verifies the 
   credit value. As soon as the credit value drops below a certain 
   threshold, it informs the user to perform credit update automatically 
   or to take the desired action manually.
 
 
 
 
 
 
 
Qanbari, et al.          Expires March 20, 2016                [Page 21]

Internet-Draft           Diameter of Things (DoT)         September 2015


7. DoT Messages
   The DoT messages contain commands and Attribute Value Pairs (AVP) to 
   enable metering and payment transactions for DoT-based applications. 
   The messaging structure should be supported by all the collaborating 
   peers in the domain architecture. 
   
The following command codes are defined in DoT application:


Abbr    Command Name	                    Sender	        Receiver
------------------------------------------------------------------------
 
PATR    Provision-Application-Topology      DoT client      Provisioning
        -Request                                            server   
                                            
PATA    Provision-Application-Topology      Provisioning    DoT client 
        -Answer                             server	


ARAR    App-Resource-Allocation-Request     Provisioning    Resource 
                                            server          Control 
                                                            server

ARAA    App-Resource-Allocation-Answer      Resource        Provisioning  
                                            Control         server
                                            server
                                            
SIAR    Start-IoT-App-Request               DoT client	    Provisioning 
                                                            server

SIAA    Start-IoT-App-Answer                Provisioning    DoT client 
                                            server

TIAR    Terminate-IoT-App-Request           DoT client      Provisioning 
                                                            server

CUSR    Close-User-Session-Request          DoT client      AAA server

ARRR    App-Resource-Release-Request        Provisioning    Resource   
                                            server          Control	
                                                            server

TIAA    Terminate-IoT-App-Answer            Provisioning    DoT client 
                                            server
                                            
CUSA    Close-User-Session-Answer           AAA server      DoT client





Qanbari, et al.          Expires March 20, 2016                [Page 22]

Internet-Draft           Diameter of Things (DoT)         September 2015


ARRA    App-Resource-Release-Answer         Resource        Provisioning 
                                            Control         server 
                                            server
                                            
SBPR    Start-Bill-Payment-Request          Resource        Payment  
                                            Control         server
                                            server
                                            
SBPA    Start-Bill-Payment-Answer           Payment         Resource 
                                            server          Control
                                                            Server

CAMR    Commit-App-Metering-Request         Resource        Metering  
                                            Control         server
                                            server
                                            
CAMA    Commit-App-Metering-Answer          Metering        Resource  
                                            server          Control 	
                                                            Server

SAMR    Start-App-Metering-Request          Provisioning    Metering  
                                            server          server
                                            
SAMA    Start-App-Metering-Answer           Metering        Provisioning 
                                            server          server

UACR    Update-Allocation-Confirmation      Resource        Rrovisioning 
        -Request                            control         server	
                                            server

NUAR    Notify-User-Allocation-Request      Provisioning    DoT client 
                                            server

UACA    Update-Allocation-Confirmation      Provisioning    Resource
        -Answer                             server          Control
                                                            Server
 
NUAA    Notify-User-Allocation-Answer       DoT client      Provisioning
                                                            server

GASR    Get-App-Specification-Request       Metering        Resource 
                                            server          control
                                                            server
 
GASA    Get-App-Specification-Answer        resource        Metering  
                                            control         server 
                                            server




Qanbari, et al.          Expires March 20, 2016                [Page 23]

Internet-Draft           Diameter of Things (DoT)         September 2015

                                            
PUUR    Publish-Usage-Update-Request        Metering        resource 
                                            server          control
                                                            server

PUUA    Publish-Usage-Update-Answer         resource        Metering 
                                            control         server 
                                            server
                                            
TAMR    Terminate-App-Metering-Request      Provisioning    Metering  
                                            server          server

TAMA    Terminate-App-Metering-Answer       Metering        Provisioning 
                                            server          server	        
                                                            
                                                            


Four main commands are explained here in more details.


7.1. Provision-Application-Topology-Request/Answer
   The PATR command is a message between DoT client and Provisioning 
   server. Via this command, the DoT client submits the IoT App 
   (defined by the Client) to the Provisioning server and inquiry 
   resources needed for the application delivery in II or RR 
   interrogations. Following the request, the PATA response with an 
   acknowledgment of resources reserved for the client's IoT App 
   request. For instance, the PATR message format is: 
   [<Session-Id>, <Client-Id>, <Request-action>, <Dest-Realm>,
   <User-Name>, <IoT-App-Id>, <AVPs>]. In return, the PATA response 
   will contain the <Granted-Service-Units> attribute in addition to 
   the original request.


7.2. App-Resource-Allocation-Request/Answer
   The ARAR command indicates the operation communicated between the 
   Provisioning and Resource control server. This command aims to 
   reserve resources including underlying resources as well as credit 
   allocation for the provisioned application.


7.3. Commit-App-Metering-Request/Answer
   The CAMR command is used in RR interrogation. As soon as the 
   Provisioning server receives Terminate-IoT-App-Request command, it 
   sends a Commit-App-Metering-Request command message to the Metering 
   server asking resource usage quota measurement for a specific user.
   
   
   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 24]

Internet-Draft           Diameter of Things (DoT)         September 2015


   Another use case is to ask for resource usage during service 
   delivery. In return, the Commit-App-Metering-Answer command is used 
   to report the measured quota value for the requested user and the 
   metered IoT application.


7.4. Start-Bill-Payment-Request/Answer
   The Start-Bill-Payment-Request command which should be invoked in VV 
   interrogation, is used between the Resource control server and the 
   Payment server to establish a payment mechanism and initiate a fund 
   transfer. In response to the request, the Start-Bill-Payment-Answer 
   command contains the state of payment transaction and the updated 
   user credit information.


8. DoT Application State Machine
   This section defines the DoT application protocol state machines. 
   There are five different state machines for each entity in DoT 
   protocol. The first state machine describes the states of DoT client.
   The second one describes the Provisioning server state machine. The 
   third one is the state machine of Resource control server. The 
   fourth and fifth state machines describe the Metering server and 
   Payment server accordingly.

   In DoT client state machine, the states PendingI, PendingP, PendingD, 
   PendingT  stand for pending states to wait for an answer to an 
   already sent request related to Initial, Provisioning, Deployment, 
   Termination requests.

   In Provisioning server state machine, the states PendingR and 
   PendingM stands for states of waiting for an answer from the 
   Resource control server and the Metering server respectively.

   In Resource control server state machine, the states PendingPY and 
   PendingPM correspond to the state of waiting for the payment and 
   metering answer.

   In Metering server state machine, the states PendingG and PendingUU 
   stand for pending states for Granted unit and Usage Update information

   The event 'Tw expired, Failure to send, temporary error' in the state 
   machines indicates the situation where there is a problem in network,
   preventing one entity to communicate with the desired entity, or the 
   cases where the destination entity is too busy and cannot handle 
   the request at that time.
   
   
   
   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 25]

Internet-Draft           Diameter of Things (DoT)         September 2015


   
   
   Dot client
   
 State      Event                       Action                 New State
 -----------------------------------------------------------------------
 
 Idle       AA request received         Send AA request to      PendingI 
            from end user               AA server, start Tw	 
            	
 pendingI   Successful AA answer        Submit application      PendingP
            received                    topology as well as 
                                        the plan to 
                                        Provisioning 
                                        sever (PATR), 
                                        restart Tw	 

 pendingI   Tw expired,                 Retry sending AA        PendingI 
            Failure to send,            request to AA server, 
            temporary error             restart Tw	
             
 PendingP   Answer received from        Submit request to       PendingD 
            Provisioning server         start the IoT 
            (PATA)                      application to 
                                        Provisioning server 
                                        (SIAR),restart Tw	 
             
 PendingP   Answer received from        Fix the problem and     PendingD 
            Provisioning server         send the request 
            (PATA) with                 again, restart Tw	
            result code != SUCCESS	

 PendingD   Answer received from        Stop Tw,                Open 
            Provisioning server         Inform end user that 
            (SIAA)                      service & monitoring 
                                        have beed started	 
             
 PendingD   Answer received from        Fix the problem and     PendingD 
            Provisioning server         send the request 
            (SIAA) with                 again, restart Tw	 
            result code != SUCCESS
            
 PendingD   Tw expired,                 Retry sending           pendingD 
            Failure to send,            Provisioning request 
            temporary error             to Provisioning 
                                        server (SIAR), 
                                        restart Tw 	




Qanbari, et al.          Expires March 20, 2016                [Page 26]

Internet-Draft           Diameter of Things (DoT)         September 2015

										
 Open       Update notification         Inform user about the   Open 
            received from               update, send answer 
            Provisioning server         back to Provisioning 
            (NUAR) with                 server (NUAA)	 
            USER_INPUT equal to False 
            
 Open       User confirmation request   Send update             Open 
            recieved for the updating   confirmation request 
            credit from Provisioning    to user	 
            server (NUAR) with 
            USER_INPUT equal to True	             
            	                        	            
 Open       User confirmation           Send answer back to     Open
            request recieved (NUAR)     Provisioning server 
            but not successfully        (NUAA) with 
            processed                   result code !=SUCCESS	
             
 Open       User confirmed the          Send update             Open 
            update                      confirmation 
                                        answer (NUAA) with 
                                        status=CONFIRM to 
                                        Provisioning server	 

 Open       User rejected the           Send update             Open 
            update                      confirmation answer 
                                        (NUAA) with 
                                        status=REJECT to 
                                        Provisioning server	 
            	                                        
 Open       User sends termination      Send termination        PendingT 
            request                     request to 
                                        Provisioning server  
                                        (TIAR), start Tw	 
 
 PendingT   Answer received from        Inform user about       Idle 
            Provisioning server         termination, stop Tw	 
            (TIAA)

 PendingT   Answer received from        Fix the problem and     PendingT 
            Provisioning server         send the request 
            (TIAA) with                 again, restart Tw	
            result != SUCCESS
            
 PendingT   Tw expired,                 Retry sending           PendingT 
            Failure to send,            termination request 
            temporary error             to Provisioning server 
                                        (TIAR), restart Tw
             


			 
Qanbari, et al.          Expires March 20, 2016                [Page 27]

Internet-Draft           Diameter of Things (DoT)         September 2015


Provisioning server

 State      Event                       Action                 New State
 -----------------------------------------------------------------------
 
 Idle       Request to provision        Send the resource       PendingR
            application topology from   allocation request 
            DoT client (PATR) received	to resource control 
            and successfully processed	server (ARAR), 
                                        Start Tw

 Idle       Request to provision        Send the provision      Idle 
            application topology from	topology answer to 
            DoT client (PATR) received	DoT client (PATA) 
            but not successfully        with 
            processed                   Result-Code!=SUCCESS 

 PendingR   Answer of resource          Send the provision      Idle
            allocation from resource    topology answer to 
            control server (ARAA)       DoT client (PATA), 
            received                    Stop Tw

 PendingR   Answer of resource          Fix the problem and     PendingR 
            allocation from resource    send the resource 
            control server (ARAA)       allocation request to 
            received with               resource control 
            result code!=SUCCESS        server (ARAR) again, 
                                        Restart Tw

 PendingR   Tw expired,                 Restart Tw,             PendingR 
            Failure to send,            Retry sending the 
            temporary error             resource allocation 
                                        request to resource 
                                        control server (ARAR) 
             
 Idle       Request to start the IoT    Send the start          PendingM
            application from DoT        metering request to 
            client (SIAR) received      metering server(SAMR),
            and successfully processed  Start Tw 
             
 Idle       Request to start the IoT    Send the start app      Idle 
            application from DoT        answer to DoT client 
            client(SIAR) received       (SIAA) with 
            but not successfully        Result-Code!= SUCCESS	
            processed
			 
			 
			 
			 
			 
			 
Qanbari, et al.          Expires March 20, 2016                [Page 28]

Internet-Draft           Diameter of Things (DoT)         September 2015


 PendingM   Answer of starting IoT      Send the start app      Open
            application from metering   answer to DoT client 
            server (SAMA) received      (SIAA), Stop Tw
             
 PendingM   Answer of starting IoT      Fix the problem and     PendingM
            application from metering   send the start metering 
            server (SAMA) received      request to metering 
            with result code!=SUCCESS   server (SAMR) again, 
                                        Restart Tw	 
             
 PendingM   Tw expired,                 Restart Tw,             PendingM 
            Failure to send,            Retry sending the 
            temporary error             start metering request 
                                        to metering server 
                                        (SAMR) again	

 Open       Request to notify user      Send the allocation     Open 
            about updating resource     notification to DoT 
            allocation from resource	client (NUAR)	 
            control server (UACR)
            received and successfully 
            processed
			
 Open       Request to terminate IoT    Send the resource       PendingR 
            application from DoT        release request to 
            client (TIAR) received      resource control 
            and successfully            server (ARRR), 
            processed                   Start Tw	 
             
 Open       Request to terminate        Send the terminate      Open
            IoT application from DoT    app answer to DoT 
            client (TIAR) received      client (TIAA) with 
            but not successfully        Result-Code!= SUCCESS	
            processed

 PendingR   Answer of confirming the    Send the terminate      PendingM
            release of allocated        metering request to 
            resources from resource     metering server (TAMR), 
            control server (ARRA)       Start Tw	
            received
			
 PendingR   Answer of confirming        Fix the problem and     PendingR
            the release of allocated    send the resource 
            resources from resource     release request to 
            control server (ARRA)       resource control 
            received with               server (ARRR) again, 
            result code!=SUCCESS        Restart Tw	
             
			 
			 
			 
Qanbari, et al.          Expires March 20, 2016                [Page 29]

Internet-Draft           Diameter of Things (DoT)         September 2015


 PendingR   Tw expired,                 Restart Tw,             PendingR
            Failure to send,            Retry sending a 
            temporary error             Request to release 
                                        the allocated 
                                        resources to resource 
                                        control server (ARRR)
										
 PendingM   Answer of confirming        Send the terminate      Idle
            metering termination from   app answer to DoT 
            metering server (TAMA)      client (TIAA), 
            received                    Stop Tw

 PendingM   Answer of confirming        Fix the problem and     PendingM
            metering termination        send the terminate 
            from metering server        metering request to 
            (TAMA) received with        metering server (TAMR) 
            result code!=SUCCESS        again, Restart Tw
             
 PendingM   Tw expired,                 Terminate the           Idle 
            Failure to send,            service, 
            temporary error             Send the terminate 
                                        app answer to DoT 
                                        client (TIAA)	

										

Resource control server

 State      Event                       Action                 New State
 -----------------------------------------------------------------------
 
 Idle       Request to reserve          Perform resource        Open 
            resources from              scheduling, reserve 
            provisioning server(ARAR)   resources (based on 
            received and successfully   plan) , lock the 
            processed                   credit, send the 
                                        resources allocation 
                                        acknowledgement 
                                        answer to provisioning 
                                        server (ARAA)

 Idle       Request to reserve          send the resources      Idle
            resources from              allocation answer 
            provisioning server(ARAR)   to provisioning 
            received but not            server (ARAA) with 
            successfully processed      Result-Code!= SUCCESS	 

			
			
			
			
Qanbari, et al.          Expires March 20, 2016                [Page 30]

Internet-Draft           Diameter of Things (DoT)         September 2015


            
 Open       Request to retrieve the     Send the answer         Open 
            Specification information   containing granted 
            from metering server        unis and plan to 
            (GASR) received and         metering server(GASA) 	 
            successfully processed 

 Open       Request to retrieve the     Send the getting        Open 
            Specification information   specification answer 
            from metering server        to metering server 
            (GASR) received but not     (GASA) with 
            successfully processed      Result-Code!= SUCCESS	
             
 Open       Request to publish usage    Charge credit           Open                     
            update from metering        according the last 
            server (PUUR) received      sent usage, Send 
            and successfully            the acknowledge 
            processed                   answer to metering 
                                        server (PUUA) 	 
             
 Open       Request to publish usage    Send the usage          Open 
            update from metering        update answer to 
            server (PUUR) received      metering server 
            but not successfully        (PUUA) with 
            processed                   Result-Code!=SUCCESS	 
             
 Open       Credit threshold is met     Update and lock         Open
                                        credit, Send update 
                                        notification to 
                                        provisioning server 
                                        (UACR)	             
            
 Open       Request to release the      Release the allocated   PendingM 
            allocated resources from    resources, Send the 
            provisioning server(ARRR)   commit request to 
            received and                metering server 
            successfully processed      (CAMR), Start Tw	 
             
 Open       Request to release the      Send the resource       Open 
            allocated resources         release answer to 
            from provisioning server    provisioning server 
            (ARRR) received but not     (ARRA) with 
            successfully processed      Result-Code!= SUCCESS	 
             
			 
			 
			 
			 
			 
			 
			 
Qanbari, et al.          Expires March 20, 2016                [Page 31]

Internet-Draft           Diameter of Things (DoT)         September 2015


 PendingM   Answer of commiting         Send the resource       PendingPY 
            metering containing the     release answer to 
            quota values from           provisioning server 
            metering server (CAMA)      (ARRA), Send a request 
            received                    to payment server to 
                                        charge the client 
                                        based on billable 
                                        artifact (SBPR), 
                                        Restart Tw	 
            
 PendingM   Answer of commiting         Fix the problem and     PendingM 
            metering from metering      send the commit  
            server (CAMA) received      request to metering  
            with                        server(CAMR) again, 
            result code!=SUCCESS        Restart Tw	  
             
 PendingM   Tw expired,                 Retry sending the       PendingM
            Failure to send,            commit metering  
            temporary error             request to metering 
                                        server(CAMR), 
                                        Restart Tw	 
             
 PendingPY  Answer of billing           StopTw                  Idle 
            payment from payment 
            server (SBPA) 
            received	            	             
              
 PendingPY  Answer of billing           Fix the problem and     PendingPY 
            payment from payment        send a payment 
            server (SBPA) received      request to payment 
            with                        server (SBPR) again, 
            result code!=SUCCESS        Restart Tw	 
             
 PendingPY  Tw expired,                 Retry sending a         PendingPY
            Failure to send,            payment request 
            temporary error             to payment 
                                        server (SBPR), 
                                        Restart Tw	 
             
            	             
             
            	            	            
             
                         
            
            
             
                         
             
            

Qanbari, et al.          Expires March 20, 2016                [Page 32]

Internet-Draft           Diameter of Things (DoT)         September 2015


Metering server

 State      Event                       Action                 New State
 -----------------------------------------------------------------------
 
 Idle       Request to start            Send answer to the      PendingG 
            metering received           Provisioning server 
            from Provisioning           (SAMA), send request 
            server (SAMR)               to Resource ctrl  
                                        server asking for  
                                        granted Units and  
                                        plan (GASR),start Tw	 
             
 Idle       Request to start            Send  answer to the     Idle
            metering received (SAMR)    Provisioning server 
            but not successfully        (SAMA) with 
            processed                   result code!=SUCCESS	 
             
 PendingG   Answer received from        Send service            Open 
            Resource ctrl server        specific and U3  
            including granted units     to each metering 
            and plan (GASA)             agent, start metering 
                                        transaction, 
                                        stop Tw 	
             
 PendingG   Answer received from        Fix the problem         PendingG 
            Resource ctrl server        andsend the request 
            with result code!=SUCCESS   again, restart Tw	 
             
 PendingG   Tw expired,                 Retry sending           PendingG 
            Failure to send,            request(GASR) again, 
            temporary error             restart Tw	
             
 Open       Unit usage update           Summarize the usage     PendingUU 
            message recieved from a     and send it to  
            metering agent              Resource ctrl 
                                        server (PUUR), 
                                        start Tw	 

 PendingUU  Answer received from        Stop Tw                 Open
            Resource ctrl server	                                    
            	            	            	             
 PendingUU  Tw expired,                 Retry sending           PendingUU
            Failure to send,            request(PUUR)  
            temporary error             again, restart Tw	 

			
			
			
			
			
Qanbari, et al.          Expires March 20, 2016                [Page 33]

Internet-Draft           Diameter of Things (DoT)         September 2015


 PendingUU  Answer received from        Fix the problem         PendingUU
            Resource ctrl server with   and send the 
            result code !=SUCCESS       request again, 
                                        restart Tw	 
             
 Open       Request to commit the       Aggregate tokens        Open 
            measured metering tokens    and send the answer  
            and report the quota        back to Resource  
            value received from         ctrl server (CAMA)
            Resource ctrl. 
            server (CAMR)	            	            
                        	            
 Open       CAMR request recieved       Send the answer         Open 
            but not successfully        back to Resource ctrl 
            processed                   server (CAMA) with 
                                        result code !=SUCCESS	 
             
 Open       Request to terminate        Terminate metering,     Idle 
            metering received from      send Answer back to 
            Provisioning server         Provisioning 
            (TAMR)                      server (TAMA)	 
             



Payment server

 State      Event                       Action                 New State
 -----------------------------------------------------------------------
 
 Idle       Request to charge the       Generate a bill by      Idle 
            client based on billable    Invoking the payment 
            artifact from resource      transaction, Deduct 
            control server (SBPR)       credit from the end 
            received and successfully   user's account and 
            processed                   refund unused 
                                        reserved credit to 
                                        user's account, Send 
                                        start bill payment 
                                        answer to resource 
                                        control server(SBPA)

 Idle       Request to charge the       Send start bill 
            client based on billable    payment answer 
            artifact from resource      to resource control 
            control server (SBPR)       server(SBPA) with 
            received but not            Result-Code!= SUCCESS   Idle 
            successfully processed 


			
Qanbari, et al.          Expires March 20, 2016                [Page 34]

Internet-Draft           Diameter of Things (DoT)         September 2015


			
9. Formal Syntax

   The following syntax specification uses the JavaScript Object 
   Notation (JSON) Data Interchange Format as described in RFC-7159 
   [RFC7159].


   List 2 presents the sample dependency graph together with its 
   metering policies in the form of a JSON object.


{
    "graphLabel":"home_temp_hum_display",
    "nodes":[{ "id":"S_01",
             "name":"getTemperature",
             "type":"node",},
           { "id":"S_02",
             "name":"getHumidity"
             "type":"node",},
           { "id":"S_03",
             "name":"Display",
             "type":"node",}],
    "edges":[{"id":"E_01",
            "directed":"True",
            "source":"S_01",
            "destination":"S_03",
            "label":"PL_01_02"},
           {"id":"E_02",
            "directed":"True",
            "source":"S_02",
            "destination":"S_03",
            "label":"PL_02_01"
            }]
}
   
   List 2. Sample IoT microservice elasticity requirement definition 


10. Security Considerations

   This document has not conducted its security analysis, yet.


11. IANA Considerations

   This draft does not specify its IANA considerations, yet.


   
   
Qanbari, et al.          Expires March 20, 2016                [Page 35]

Internet-Draft           Diameter of Things (DoT)         September 2015


12. Conclusions

   In this draft, the authors offer a protocol entitled "Diameter of 
   Things (DoT)" that realizes the telemetry mechanisms to the Internet 
   of Things (IoT) domain. The TU Wien DSG will provide further 
   improvements and implementations to the DoT protocol respectively.


13. References

13.1. Normative References

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


   [2]        Crocker, D. and Overell, P.(Editors), "Augmented BNF for
         Syntax Specifications: ABNF", RFC 2234, Internet Mail
         Consortium and Demon Internet Ltd., November 1997.


   [NASREQ]    Calhoun, P., Zorn, G., Spence, D., and D. Mitton,
               "Diameter Network Access Server Application", RFC 4005,
               August 2005.


   [RFC6733]  Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J.
              Arkko, "Diameter Base Protocol", RFC 3588, September 2003. 
   [RFC4004]  Calhoun, P., Johansson, T., Perkins, C., Hiller, T.,and 
              P. McCann, "Diameter Mobile IPv4 Application", RFC 4004,
              August 2005.


   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and 
              J. Loughney, "Diameter Credit-Control Application", RFC
              4006, August 2005.


   [RFC4740]  Garcia-Martin, M., "Diameter Session Initiation Protocol (
              SIP) Application", RFC 4740, April 2006.


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


			   
			   
			   
			   
			   
Qanbari, et al.          Expires March 20, 2016                [Page 36]

Internet-Draft           Diameter of Things (DoT)         September 2015


   [RFC2234]        Paul Hoffman, "The JavaScript Object Notation (JSON)
               Data Interchange Format", RFC 7159, Internet Engineering
               Task Force (IETF), March 2014.


   [RFC7049]  Bormann, C. and P. Hoffman, "Concise Binary Object
              Representation (CBOR)", RFC 7049, October 2013.


13.2.  Informative References


   [DIAMMIP]   Calhoun, P., Johansson, T., Perkins, C., Hiller, T., and
               P. McCann, "Diameter Mobile IPv4 Application", RFC 4004,
               August 2005.             


   
14. Acknowledgments

   We truly appreciate and commend the insight provided by Diameter 
   implementors who have motivated us to incorporate the Diameter 
   mechanisms in IoT domain. The result is an extension to Diameter
   base protocol in which its specifications are proposed in this
   document.


   This document was prepared using 2-Word-v2.0.template.dot.


Authors' Addresses


   Soheil Qanbari
   Distributed Systems Group
   Technical University of Vienna (TUWien)
   Argentinierstrasse 8 / 184-1
   1040 Vienna
   Austria
   
   Phone: +43-1-58801-18402
   EMail: soheil@dsg.tuwien.ac.at 




   
   
   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 37]

Internet-Draft           Diameter of Things (DoT)         September 2015


   Soheil Qanbari
   Distributed Systems Group
   Technical University of Vienna (TUWien)
   Argentinierstrasse 8 / 184-1
   1040 Vienna
   Austria
   
   Phone: +43-1-58801-18402
   EMail: soheil@dsg.tuwien.ac.at 


   Samira Mahdizadeh
   Distributed Systems Group
   Technical University of Vienna (TUWien)
   Argentinierstrasse 8 / 184-1
   1040 Vienna
   Austria
   
   Phone: +43-1-58801-18402
   EMail: e1329639@student.tuwien.ac.at 

   Schahram Dustdar
   Distributed Systems Group
   Technical University of Vienna (TUWien)
   Argentinierstrasse 8 / 184-1
   1040 Vienna
   Austria
        
   Phone: +43-1-58801-18414
   EMail: dustdar@dsg.tuwien.ac.at 



   Negar Behinaein
   Computer Science Group
   Baha'i Institute for Higher Education (BIHE)
   Tehran/Iran


   Email: negar.behinaein@bihe.org



   Rabee Rahimzadeh
   Computer Science Group
   Baha'i Institute for Higher Education (BIHE)
   Tehran/Iran


   EMail: rabee.rahimzadeh@bihe.org




   
   
   
Qanbari, et al.          Expires March 20, 2016                [Page 38]

Internet-Draft           Diameter of Things (DoT)         September 2015