Scholarly article on topic 'A Proactive Trickle-based Mechanism for Discovering CoRE Resource Directories'

A Proactive Trickle-based Mechanism for Discovering CoRE Resource Directories Academic research paper on "Computer and information sciences"

Share paper
Academic journal
Procedia Computer Science
OECD Field of science
{"Resource Directory" / "Constrained Application Protocol (CoAP)" / "Internet of Things" / "The Trickle Algorithm."}

Abstract of research paper on Computer and information sciences, author of scientific article — Badis Djamaa, Ali Yachir

Abstract The CoRE working group at the IETF has proposed a Resource Directory (RD) solution to facilitate the discovery of the resources provided by constrained wireless sensor and actuator networks. For such a mechanism to be effectively deployable, nodes must first discover the existence of an RD in the network before being able to exploit its functionalities. This paper presents Proactive RD Discovery (PRD); a scalable, reliable, and effective mechanism to discover an RD. To achieve such qualities, the proposed mechanism deploys adaptive Trickle timers. PRD is implemented in Contiki OS and evaluated using emulated sensor/actuator nodes in the Cooja simulator. Simulation results show important performance enhancements in terms of energy consumption, generated traffic, RD discovery time, and reliability when compared with the default discovery mechanism bundled with the RD.

Academic research paper on topic "A Proactive Trickle-based Mechanism for Discovering CoRE Resource Directories"


Available online at


Procedía Computer Science 83 (2016) 115 - 122

The 7th International Conference on Ambient Systems, Networks and Technologies

(ANT 2016)

A Proactive Trickle-based Mechanism for Discovering CoRE

Resource Directories

Badis Djamaaa,b* and Ali Yachira,c

aArtificial Intelligence Laboratory, Military Polytechnic School (EMP), Bordj-El-Bahri, 16111, Algiers, Algeria bCentre for Electronic Warfare, Cranfield University, Shrivenham, SN6 8LA, UK cLISSILaboratory, University Paris-Est Creteil (UPEC) , 94400 Vitry-sur-Seine, Paris, France


The CoRE working group at the IETF has proposed a Resource Directory (RD) solution to facilitate the discovery of the resources provided by constrained wireless sensor and actuator networks. For such a mechanism to be effectively deployable, nodes must first discover the existence of an RD in the network before being able to exploit its functionalities. This paper presents Proactive RD Discovery (PRD); a scalable, reliable, and effective mechanism to discover an RD. To achieve such qualities, the proposed mechanism deploys adaptive Trickle timers. PRD is implemented in Contiki OS and evaluated using emulated sensor/actuator nodes in the Cooja simulator. Simulation results show important performance enhancements in terms of energy consumption, generated traffic, RD discovery time, and reliability when compared with the default discovery mechanism bundled with the RD.

© 2016 The Authors.Publishedby ElsevierB.V. This is an open access article under the CC BY-NC-ND license


Peer-review under responsibility of the Conference Program Chairs

Keywords: Resource Directory; Constrained Application Protocol (CoAP); Internet of Things; The Trickle Algorithm.

1. Introduction

The reach of the Internet Protocol (IP) suite to the world of low-power wireless sensor and actuator networks has extended the current Internet architecture towards the so-called Internet of Things (IoT). To accommodate IoT applications, new innovative protocols are being proposed for such Low-power and Lossy Networks (LLNs). The

* Corresponding author. E-mail address:

1877-0509 © 2016 The Authors. Published by Elsevier B.V. This is an open access article under the CC BY-NC-ND license


Peer-review under responsibility of the Conference Program Chairs


6L0WPAN standard1 has set ground for the IoT by proposing an effective usage of IPv6 over LLNs. The Routing Protocol for LLNs (RPL)2 and the Multicast Protocol for LLNs (MPL)3 present effective methods to respond to both unicast and multicast routing requirements in LLNs. The Constrained Application Protocol (CoAP) 4 provides a unified mechanism to exchange application data in LLNs. Thus, extending today' s Web towards a Web of things. CoAP builds upon the Representational State Transfer (REST) design paradigm to achieve its objectives. Indeed, in CoAP-enabled IoT applications, each sensor/actuator node is basically seen as an endpoint, exposing sensor readings, actuating capabilities and internal information as REST resources that can be queried by clients.

In order to fully exploit the benefits of the LLN protocol suite into providing successful adoptions of the IoT, seamless and automatic discovery of available resources (services) is an imperative. Such Service Discovery (SD) solutions can be achieved using a multitude of techniques depending on a number of parameters including network size, application requirements and available infrastructure. For instance, fully distributed solutions5, 6 can be well suited for an infrastructure-less, small-size, zero-configurable IoT network, while a centralized solution7 might be deployed for large-scale IoT networks, having dedicated resource-rich discovery servers.

In this context, the Constrained RESTful Environments (CoRE) working group at the IETF has proposed a resource directory draft8 responding to SD requirements in large-scale, infrastructure-based RESTful IoT applications. The draft defines a Resource Directory (RD) where resource providers register their available resources for clients to query. As a key aspect of such architecture, both clients and providers must first discover an RD before being able to exploit its services. While the resource directory draft envisages many mechanisms to achieve RD discovery, the default mechanism adopted by the draft is the resource discovery mechanism9 integrated with CoAP. The draft lets it open, however, to develop other mechanisms in order to achieve RD discovery. In this paper, we present a new Trickle-based10 efficient mechanism for RD discovery. Doing so, the paper provides the following main contributions: (1) the proposition and design of a Trickle-based mechanism enabling efficient RD discovery; (2) an analytical evaluation of the performance of the proposed scheme when compared with the default solution bundled with the RD; and (3) implementation and thorough evaluations of the performance of the proposed scheme when compared with the default solution bundled with the RD solution.

The remainder of this paper is organized as follows. Section 2 discusses related work with focus on the solutions developed to discover the RD along with a description of the Trickle algorithm. Section 3 introduces the Proactive RD Discovery (PRD) mechanism, its design, main components and functionalities. This is followed by an analysis of its performance in terms of time and message complexities in section 4. Section 5 is devoted to assess the performance of the proposed PRD mechanism experimentally. The paper concludes in section 6.

2. Related Work

2.1. RD operations and discovery

The RD solution follows the generic architecture of centralized discovery mechanisms (Fig.1.). In such architecture, providers register the description of their public resources at the directory by issuing POST requests. The directory confirms the registration for the specified period and returns its location to the provider. Clients then query the RD by issuing GET requests looking for descriptions matching their requests. The default description format adopted by the RD draft is the CoRE link format9, which is carried as a payload in a CoAP message. Such description has many resource attributes including resource type (rt), interface description (if) and path. To achieve RD operations, new

Fig. 1. Generic functionalities of an RD.

attributes have been defined in the RD draft such as the endpoint attribute (ep) specifying the endpoint hosting the resource registered in the RD, and the lifetime attribute (It) indicating a valid registration period. A context attribute (con) is also introduced in order to allow an endpoint to specify the scheme, ip_address and the port on which it will be accessible using the following format scheme-. ip_address\ port. Such con attribute is of great importance to this paper since it is reused by the RD to advertise itself, as will be seen in section 3. The RD makes registered resources available at the /.well — known/core resource. A client aware of an RD (via its con attribute) issues a GET request to the RD in the following format: /.well — known/core{?search *}, with the filter {1 search *} containing known attributes about the required resources. However, to exploit such functionalities, an endpoint must first discover an RD.

Because of the relative newness of the RD draft8, there are not much work concerning the discovery of an RD. Thus, in what follows we discuss the solutions envisaged in the RD draft including using 6LoWPAN-ND, DHCP, DNS, and by default, the resource discovery mechanism bundled with CoAP. The 6LoWPAN-ND solution11 has the inconvenient of imposing that the RD be physically integrated with the border router, which may create many issues including the single point of failure and the significant load incurred by nodes near the border router. Furthermore, 6LoWPAN-ND operations rely on the ICMPv6 router advertisement messages with no option to specify the port and/or the scheme employed by an RD. DHCP requires the existence of a configured network running DHCP for the RD discovery to work. Similarly, the DNS-based solution requires the presence of DNS servers. Finally, the resource discovery solution integrated with CoAP has the advantage to respond to all RD discovery requirements without requiring extra infrastructure. Thus, a node can discover an RD by sending a multicast request to the .well — known/core? rt = core. rd. However, such mechanism requires the availability of an IP multicast routing protocol in order to operate and may result in excessive network resource consumption as will be seen in section 5.

2.2. A generic Trickle algorithm

The main idea of this paper reposes on using the Trickle algorithm10 to achieve scalable, time and cost efficient discovery of an RD in the network. Using Trickle, a node periodically broadcasts its data unless it has recently received identical ones. As long as nodes get into a consistent state, Trickle increases the transmission period exponentially and enters a maintenance mode with infrequent transmissions (for the sake of detecting inconsistencies). When data inconsistencies are detected, Trickle enters a propagation mode and starts transmitting more quickly. To realize this behavior, and as by the notations of RFC 6206, Trickle defines three configuration parameters namely:

• the minimum interval size Imin,

• the maximum interval size ¡max, and

• a redundancy constant k.

Also, it maintains three variables namely:

• a consistency counter c,

• an interval /,

• and a transmission time t within /.

MPL3 introduced a fourth parameter -TimerExpirations

• TimerExpirations: specifies the number of Trickle timer expirations, since the last timer reset, which allows terminating Trickle's execution. Put another way, this is a response to the infinite duration of the Trickle's maintenance mode; not required by some Trickle applications such as flooding substitution.

This configuration parameter implies an additional Trickle variable: the expiration counter e.

• e: a counter tracking the number of Trickle timer expirations that occurred since the last timer reset.

Integrating this modifications to the 6-step algorithm presented in RFC 6206, a generic Trickle algorithm can be

described by modifying Step 1, 5 and 6, as follows (modified parts are underlined):

• Step 1: When Trickle starts execution, it picks / uniformly at random from [¡min\ Imin X 2/max], sets e to zero and begins the first interval.

• Step 2: At the start of an interval, Trickle resets c to 0 and picks t uniformly at random from [//2; /).

• Step 3: Whenever a node hears a consistent transmission, Trickle increments c.

• Step 4: At time t, Trickle transmits if and only if c < k. Otherwise, the transmission is suppressed.

• Step 5: At the expiration of an interval, Trickle increments the expiration counter e . If e is equal to TimerExpirations, Trickle stops execution. Otherwise, Trickle doubles the current interval size / up to the time specified by ¡max. Trickle then starts a new interval as in Step 2.

• Step 6: If an inconsistent transmission is received while the Trickle timer is running and / is greater than Imin, the receiver resets the Trickle timer. If the timer is not running, the receiver starts and resets the timer. To reset a timer, Trickle sets I to Imin, e to zero and starts a new interval as in Step 2. Otherwise, Trickle does nothing. Note that the timer can also be reset by application-defined events external to Trickle.

3. Proactive RD Discovery (PRD)

3.1. PRD Overview

PRD adopts a proactive approach in which the directory advertises its presence (mainly the con attribute) for nodes to cache locally. Opting for a proactive discovery mechanism is motivated by the crucial utilization of RD services along with their small number relatively to the number of nodes in an IoT network. The proposed mechanism makes use of CoAP messages and methods to achieve the discovery of an RD. It particularly adopts POST requests to proactively push information to the network in a CoAP message called Directory Advertisement (DA) as depicted in Fig.2. The forwarding of such message is governed by a Trickle algorithm as will be detailed in section 3.2. The advertised RD information is then cached for a specified period and propagated in a wavelike pattern from nodes near the RD to those at the edge of the network as shown in Fig.2. Using Trickle ensures that, with time, all nodes will receive the RD's DA message. However, a node requiring to use RD services before receiving the DA can issue a single-hop multicast Directory Solicitation (DS) GET request looking for resources with rt = core, rd (Section 3.3). Upon reception of a DS request, a node having matching RD information may issue a response. Finally, PRD envisages a state maintenance mechanism (Section 3.4) providing seamless reactions to network dynamics.


DA message

181 wave

2nd wave

3 wave

evaluate_ incoming_post_request (DA) IF inconsistent_DA_from_new_RD THEN Createnewresourceinfo (DA) Createnewtrickletimer (RD) Trickleinconsistency (RD) //step 6 of Trickle ELSE IF ( inconsistent_DA_from_known_RD ) THEN

updateexistingresourceinfo (DA) Trickle inconsistency (RD) //step 6 of Trickle ELSE IF (consistency) THEN

Trickle consistency (RD) //step 3 of Trickle ENDIF

Fig. 2. Proactive RD Discovery

Fig.3. DA Forwarding Algorithm

3.2. DA generation and forwarding

The RD generates and maintains its DA messages using a Trickle algorithm (Section 2.2). Using Trickle consists mainly of defining what constitutes a consistent/inconsistent DA transmission. To comply with the consistency model of Trickle, DA messages make use of the 16-bit Message — ID field of a CoAP message4. Thus, a consistency is defined as receiving a DA message from a specific RD with the same Message — ID as the cached information. Likewise, an inconsistency is specified as receiving a DA message of a specific RD having a different Message — ID than the corresponding cached information. It should be noted that the Message — ID of a DA message is saved in a stable storage and incremented only by the RD (intermediate nodes cache and forward the Message — ID of a DA message without altering it). The RD increments the Message — ID of a DA message when:

- The RD becomes enabled, reboots and/or when the lifetime of the previous DA is about to expire;

- The IP address and/or port number on which the RD is accessible change;

- Each time any advertised RD resource attribute changes (e.g., a change in the RD path).

Such DA message is then POSTed to the link-local multicast address in the following format:

DA: POST coap://link_local_multicast_address/.well-known/core Payload: </rd>; rt=core.rd; con=coap://rd_address:rd_port

After receiving such a DA message, the receiver processes it and updates its resource list (creates a new resource if the information is from a new RD, updates inconsistent information of an existing RD, or discards a consistent message). The receiver then updates the corresponding Trickle timer accordingly as specified by the algorithm of Fig.3. It should be noted that PRD suppresses responses to DA messages similarly to CoAP group communication12. Finally, note that a node receiving a new DA message should create a resource at a default path called default_rd_path and includes it into its /. well — known/core resource for the sake of making it discoverable to other nodes.

3.3. DS generation and processing

In case of missing DA advertisements, on-demand directory solicitations can be issued using the DS message. In addition to speeding up RD discovery, this functionality is particularly important for new nodes joining a network. For instance, a new node joining the network can discover the RD by issuing a DS message of the following format:

DS: GETcoap://link_local_multicast_address/.well-known/core?rt=core.rd

A DS message is sent a MAX_DS_TRANSMISSIONS times separated DS_TRANSMISSION_INTERVAL. If still there are no responses, the originator switches to a slower transmission rate. The transmission of a DS is cancelled by receiving a response or a DA message containing the requested information. For responding to DS messages, PRD envisages two solutions. In the first solution, a node having matching resources generates a unicast response to be sent back to the DS originator, similarly to the standard resource discovery mechanism. Such response would have the format bellow. Note that, after receiving a response, a node might re-activate the Trickle timer to stay consistent.

DS Res: 2.05 Content </rd>; rt="core.rd"; con=coap://rd_address:rd_port

The second solution envisages triggering a Trickle inconsistency when receiving a DS message for which matching RD information is available. This inconsistency would cause the transmission of a DA message as in section 3.2. While the first solution provides the advantage of generating less traffic and being backward compatible with current CoAP implementations, the second solution may avoid redundant requests/responses by allowing other nodes to receive information about the RD. In addition, such solution provides a means to check for network inconsistencies as soon as they appear. In the current PRD version, the first solution is the default.

3.4. State maintenance

Being a proactive approach, PRD might suffer from network inconsistencies by keeping information about an RD, which no longer exists in the network. To deal with this, PRD envisages the following mechanisms. The first enables a directory to advertise its disappearance. This is done by issuing a DA message with the DELETE method to the default path of a POSTed RD resource as follows:

DA: DELETE coap://link_local_multicast_address/default_rd_path

The forwarding of this message is governed by the same rules defined in section 3.2. Note, that a separated stopping Trickle timer that only manages DELETE messages might be preferred. This can have the advantage of handling DELETE requests differently by using bigger values of k, for example. It also demonstrates a case were the infinite intervals of Trickle is not required (gossiping about a resource to be deleted a number of times is required for reliability purposes). Hence, for this mechanism to work efficiently, nodes should keep information about a deleted message for KEEP_DELETE_PERIOD before a definitive delete. Note that responses to DELETE messages are suppressed.

In addition to the explicit delete mechanism above, the lifetime-based deregistration mechanism (using the It attribute) ensures that the RD periodically generates new messages in order to refresh available information. Finally, when contacting an RD and finding that it does not respond, nodes delete corresponding cached information.

3.5. Supporting multiple RDs

PRD can also support the discovery of multiple RDs in a network. To do so, each RD manages a separate Trickle. This requires nodes to keep separate Trickle timers by RD in a parallel Trickle approach. Such an approach might increase the burden on sensor/actuator nodes. However, taking into account the simplicity of Trickle code along with the small number of expected RDs in a network, this solution may present a fair trade-off. Note that in the presence of multiple RDs, a node reacting to a DS by resting the Trickle timer (solution 2, section 3.3) should reset all timers.

4. PRD Message and Time complexities

Since each node needs to issue a request in order to discover an RD, the number of generated application-layer requests is proportional to the number of nodes and hence it grows linearly with network size (application-layer overhead complexity in 0(W), N being the number of non-RD nodes in the network). Taking into account the fact that each RD request can result into multiple multi-hop multicast messages, the overhead generated by a request is considerably higher. In a scenario, where the multicast routing protocol deploys a simple flooding algorithm, each node will forward a single request at most once giving an overhead on 0{N) per request, which makes the actual number of transmissions generated for discovering the RD using the default mechanism grows on O(N2).

Furthermore, since the RD has to respond to each node's request separately, the number of responses also grows linearly with the number of nodes. Moreover, taking into account the multi-hop aspect of LLN networks, a single RD response results into multiple transmissions, which are proportional to the diameter of the network (D).

Besides the overhead problem, the time of discovering an RD is also proportional to the diameter of the network. Thus, request propagation requires theoretically D transmission times with a similar time required to receive a reply.

Since the number of RDs is drastically smaller than the number of nodes in an LLN network, PRD provides an efficient solution to both overhead and time issues of the default RD discovery mechanism. Thus, having an RD advertising its presence to the network, nodes will simply skip the discovery of the RD and start using unicast primitives to exploit its services. Indeed, using PRD, the overhead of discovering an RD is proportional to the number of RDs; which is very small compared to the number of nodes (typically one RD in the network) and hence the application-layer message complexity of PRD is in 0(RDs). Taking into account the multi-hop aspect of LLNs, the worst-case message complexity for an RD goes in 0 (N~). Note that using Trickle minimizes this complexity into 0 (fc) transmission per interval in a perfect lossless network, but in this analysis, we considered a worst-case scenario for both the resource discovery and PRD mechanism.

Moreover, PRD saves all the traffic incurred by generating responses since no requests/responses are exchanged to discover the RD. Finally, the time complexity of the PRD can be zero since in most of the cases the RD information is locally available. Table 1 summarizes the message and time complexities of both approaches.

Table 1. Message and Time complexities.

RD discovery mechanism App. Requests Transmissions Responses Discovery Time

PRD 0 (RDs) 0 (N X RDs) 0 0 or 0 (D)

Resource discovery 0(N) 0 (N2) 0(/V) 0(D)

5. Performance Evaluation

5.1. Experimental model and performance metrics

To evaluate and consolidate the performance of PRD, we implemented it in Contiki OS. To put results into context, PRD is compared with RD's default discovery mechanism based on CoAP's built-in resource discovery. To allow resource discovery across a multi-hop network, the MPL implementation in Contiki was used. Note that such implementation follows the specifications of draft-1 of MPL called Trickle Multicast (TM). For the sake of providing a fair comparison, the same Trickle parameters were used for both TM and PRD.

A scenario comprising a simulated network composed of nine emulated Sky motes13 and a resource directory (Fig.4.) was used in our evaluations. Each mote can play the role of either a client requesting available services from the RD or a provider registering its resources at the RD or both roles. In all cases, a node is required to be aware of the RD before accessing it. For this, we developed an application running the two RD discovery solutions above UDP in a constrained 6LoWPAN network in Contiki. At the routing layer, resource discovery deploys MPL to ensure multicast routing of RD discovery requests. At the link layer, the CX-MAC14 radio duty cycling protocol was used. Simulation configuration parameters are summarized in Table 2.

To be able to draw conclusions on the time/cost performance of the evaluated approaches, the number of generated messages, the average RD discovery time and the radio duty cycle, as proxy of energy consumption, were measured when varying the number of clients and providers in the network. The RD discovery time is measured as the time spent from sending a request until receiving the reply, averaged over all requests. The number of generated messages is measured at the routing layer for resource discovery and averaged over all nodes. The network duty cycle, as an indicator of energy consumption, is measured using Contiki's power profiler15. Each experiment was repeated 10 times. The mean is reported in the graphs of Fig.5.

Table 2. Configuration parameters.

Parameter Value

Simulation time 200 seconds

Number of nodes / iterations 10 / 10

Radio environment UDGM

Communication range/bandwidth 50m / 250Kb/s

Network / Adaptation Layer IPv6 / 6LoWPAN


TM / PRD Trickle parameters Imin = 1 second, Imax = 8 s,

k = 1, TimerExpirations = 0

a Network

View Zoom

ß N

a IZ)

Fig. 4. Simulated Network

5.2. Results and discussions

Fig. 5. Simulation results

As can be seen from Fig.5. (a), the number of messages generated by the resource discovery mechanism increases drastically with increasing number of RD requesters in the network reaching about 10 times that generated by PRD for 9 active requesters. The traffic generated by PRD, on the other hand, stayed independent of the number of requesters yielding a small generated traffic, which demonstrates the performance of PRD in terms of generated traffic. Concerning reliability, Fig.5. (b) shows that PRD can achieve a 100% RD discovery rate independently from the number of requesters thanks to Trickle reliability mechanisms making the information about the RD available locally at each node. The resource discovery, however, showed a decrease in discovery rates with increasing number of requesters reaching about 88% at 9 concurrent requesters. This decrease in reliability is expected to continue with increasing number of requesters because of an abundant number of concurrent multicast requests being generated.

Concerning energy consumption, Fig.5. (c) shows that PRD achieves smaller radio duty cycles, hence smaller energy consumption when compared with resource discovery. Thus, even when resource discovery registered less number of messages, the energy consumed to deliver them was about twice that of PRD. This can be explained by the growing size of control traffic generated by the routing protocols along with the expensive cost of such multicast communications. Finally, Fig.5. (d) shows that in a best case, where all nodes requesting RD services find the information locally, PRD can achieve zero discovery time. In a worst case, where the requesters need to wait for the information to be pushed, the discovery time of PRD is still better than that of resource discovery.

6. Conclusions and Future work

In this paper, a Proactive RD Discovery (PRD) mechanism based on adaptive Trickle timers is proposed. PRD allows an RD to advertise itself in an efficient way, facilitating thus its usage and increasing network performance. Simulation results has shown the performance of such mechanism when compared with the default RD discovery one. Future work consist on further optimizing PRD along with more simulations and testbed experiments regarding the case of multiple directories. Drafting a document to be submitted to the IETF is also planned.


1. G. Montenegro, N. Kushalnagar, J. Hui, and D. Culler, 'Transmission of IPv6 Packets over IEEE 802.15.4 Networks', RFC 4944 IETF, Sep. 2007.

2. T. Winter, P. Thubert, A. Brandt, J. Hui, R. Kelsey, P. Levis, K. Pister, R. Struik, J. P. Vasseur, and R. Alexander, 'RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks', RFC 6550IETF, Mar. 2012.

3. J. Hui and R. Kelsey, 'Multicast Protocol for Low power and Lossy Networks (MPL)', Internet Draft IETF, 2014.

4. Z. Shelby, K. Hartke, and C. Bormann, 'The Constrained Application Protocol (CoAP)', RFC 7252 IETF, 2014.

5. B. Djamaa, M. Richardson, N. Aouf, and B. Walters, 'Towards efficient distributed service discovery in low-power and lossy networks', Wirel. Netw., vol. 20, no. 8, pp. 2437-2453, Nov. 2014.

6. B. Djamaa and M. Richardson, 'Towards Scalable DNS-Based Service Discovery for the Internet of Things', in Lecture Notes in Computer Science. Ubiquitous Computing and Ambient Intelligence. Personalisation and User Adapted Services, Springer, 2014, pp. 432-435.

7. A. Yachir, Y. Amirat, A. Chibani, and N. Badache, 'Event-Aware Framework for Dynamic Services Discovery and Selection in the Context of Ambient Intelligence and Internet of Things', IEEE Trans. Autom. Sci. Eng., vol. 13, no. 1, pp. 85-102, 2016.

8. Zach Shelby, M. Koster, C. Bormann, and Peter van der Stok, 'CoRE Resource Directory', Internet Draft IETF, Oct. 2015.

9. Z. Shelby, 'Constrained RESTful Environments (CoRE) Link Format', RFC 6690 IETF, 2012.

10. P. Levis, T. Clausen, J. Hui, O. Gnawali, and J. Ko, 'The Trickle Algorithm', RFC 6206 IETF, 2011.

11. Z. Shelby, S. Chakrabarti, E. Nordmark, and C. Bormann, 'Neighbor Discovery Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)', RFC 6775 IETF, Nov. 2012.

12. A. Rahman and E. Dijk, 'Group Communication for the Constrained Application Protocol (CoAP)', RFC 7390 IETF, Oct. 2014.

13. J. Polastre, R. Szewczyk, and D. Culler, 'Telos: enabling ultra-low power wireless research', in Fourth International Symposium on Information Processing in Sensor Networks, 2005. IPSN 2005, 2005, pp. 364-369.

14. M. Buettner, G. V. Yee, E. Anderson, and R. Han, 'X-MAC: A Short Preamble MAC Protocol for Duty-cycled Wireless Sensor Networks', in Proceedings of the 4th International Conference on Embedded Networked Sensor Systems, New York, NY, USA, 2006, pp. 307-320.

15. A. Dunkels, J. Eriksson, N. Finne, and N. Tsiftes, 'Powertrace: Network-level power profiling for low-power wireless networks', Swedish Institute of Computer Science, Technical Report T2011:05, Mar. 2011.