One document matched: draft-manner-6lowapp-sdnd-00.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY nd PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-6lowpan-nd.xml'>

]>

<!-- trust200902 --> <!-- full3978 -->

<rfc category="exp" ipr="trust200902" 
docName="draft-manner-6lowapp-sdnd-00.txt">

<!--
<rfc category="exp" ipr="full3978" 
docName="draft-manner-6lowapp-sdnd-00.txt">
-->

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?> <?rfc symrefs="yes" ?> <?rfc sortrefs="yes"?> 
<?rfc iprnotified="no" ?> <?rfc strict="yes" ?> <?rfc compact="yes" 
?>

    <front>
        <title abbrev='SDND'> Coupling of Service and Neighbor Discovery in 6LowPAN </title>

	<author initials='J.' surname="Manner" fullname='Jukka Manner'>
        <organization abbrev='TKK'>Helsinki University of Technology (TKK)</organization>
        <address>
        <postal>
	<street>Department of Communications and Networking (Comnet)</street>
        <street>P.O. Box 3000</street>
        <city>Espoo</city> <code>FIN-02015 TKK</code>
        <country>Finland</country>
        </postal>
        <phone>+358 9 451 2481</phone>
        <email>jukka.manner@tkk.fi</email>
        <uri>http://www.netlab.tkk.fi/~jmanner/</uri>
        </address>
        </author>

        <date month="October" year="2009" />
        <abstract>

	<t>

Finding out functionality, nodes or services, in general resources, 
in a network has a number of well-known solutions. A sensor network 
has inherent limitations and requires a solution that has a low 
footprint and follows the networking concepts defined within 6LoWPAN. 
This draft discusses two alternative solutions to service discovery 
in a sensor network. Both approaches are based on the 6LowPAN 
Neighbor Discovery.

	</t>

	</abstract>
    </front>

<middle>

<section title="Introduction">

<t>

Service discovery has been a research topic for years. Currently the 
topic is rather well understood and we have had products on the market 
for years, Universal Plug and Play (UPnP) being the most well-known 
example. In the IETF, the Service Location Protocol (SLP) is probably 
the most familiar outcome of activities in this area, yet, the 
protocol does not seem to have had a tremendeous deployment.

</t>

<t>

If we look at the landscape in service discovery for resource 
constrained devices, such as nodes in a sensor network, there exists 
many proposal from the academic community. However, they all seem 
somewhat uncessary complex. A 6LoWPAN-based solution should be simple 
and enable low overheard, while trying to be as flexible and powerful 
as possible within the constraints imposed by the sensor devices.

</t>

<t>

The 6Lowpan Neighbour Discovery (ND) <xref 
target="I-D.ietf-6lowpan-nd" /> describes means for a sensor node to 
disseminate it's IPv6 address to the network, and if needed, defend it 
against other nodes. The functionality presented in the ND draft is 
based on Edge Routers (ER) that maintain a white board, a database, 
of addresses claimed in the sensor network. This makes ND a 
centralized service. ERs can be used when the sensor network is 
connected to a backbone link, but an ad-hoc sensor network can also 
have ERs that function as the centralized address allocation 
database.

</t> <t>

What is interesting about the ND functionality is that it has the 
same overall goal as service discovery (SD): a node has a 
characteristic, a functionality, it wants to disseminate to other 
nodes. This is analoguous to SD, a node has a service it wants to 
make known and enable others to use. This is a simplistic view, of 
course, but in general the goal of ND is very close to what SD 
requires, make a resource known to others (claim it). In ND, an IP 
address, a resource, can only be assigned to a single node, but in SD 
numerous nodes can host the same resource, the service. In SD, the 
possibility of having several nodes host the same resource enables us 
to drop much of the more complex ND functionality.

</t> <t>

One of the issues with enabling service discovery is how to describe 
a service. We need a common means to describe a service when it is 
advertised or search for. In a sensor network, we have to rely on 
very small messages, thus, lenghty service descriptions are not 
possible. We need a means to define services in a compact format.

</t> <t>

The purpose of this draft is to discuss two distinct approaches to 
enabling service discovery in a 6LowPan-enabled sensor network. The 
rest of this draft presents the two alternatives, discusses their 
pros and cons, and seeks to trigger some community response from 
6LowApp.

</t>

</section>

<section title="Service discovery using ND">

<t>

This section presents two approaches for running SD in a sensor 
network, piggy-backing SD payloads in ND messages, or running a 
separate SD protocol that has much of the same functionality as ND.

</t>

<t>

In both cases, there are two commonalities. First of all, we need to 
define two new ICMP messages. The structure of these two new messages 
would be similar to the ND ICMP messages, only slightly simpler.

</t>

<t>

<list style="numbers">

<t>Service query (SQ): sent by a node to look up a service from the 
whiteboard on an ER.</t>

<t>Service reply (SR): sent by an ER to the requesting node 
indicating which, if any, node(s) hosts the service.</t>

</list>

</t>

<t>

In both of these messages, we need to have a request ID, or similar 
serial number, to match replies to requests. This is needed when a 
node is looking for several services, and one SQ can only indicate a 
single service to be found; a node can have several outstanding 
queries and needs to match incoming replies to the right query.

</t>

<t>

Secondly, in the normal case the same service can run on more than 
one node. Analoguous to the ND specification, we could make use of 
the so-called "Duplicate flag" that if set allows more than one host 
to offer a certain service. Yet, when the bit is not set, only one 
node in the network can host a certain service at a time. Here we 
could make use of the DAD functionality of ND and enable nodes to 
claim and defend their services.

</t>

<section title="Approach 1: piggy-backing">

<t>

The first approach to enabling service discovery in a sensor network 
is to piggy-back service availability information within ND messages. 
In particular, when a node sends its IP address information to an ER 
(or refreshes it), the node also includes additional information 
about the services it is hosting.

</t>

<t>

The basic functionality for SD would be the same as in ND, i.e., 
nodes announce their services to ERs, and maintain this information 
along the refresh messages sent by ND for the IPv6 address mapping. 
If a service is taken down from a node, it can send a refresh ND 
message

</t>

<t>

The ND specification mentions but does not define a "Configuration 
Option" that may be used to carry options. We can make use of this 
particular functionality, or define a separate option that is very 
much similar. This option should be stackable, meaning we want to be 
able to carry information about more than one service running on a 
single node.

</t>

<t>

The same object would be used on the service lookup message (SQ) to 
indicate the service the node is looking for. Only one service can be 
looked up in one message, otherwise sending back an answer becomes 
complex, as discussed above.

</t>

<t>

To make service deregistration easier, we could add a bit in the 
object above to indicate that the service is not being introduced but 
rather an existing binding should be removed from the ER.

</t>

</section>

<section title="Approach 2: SD as ND">

<t>

An alternative to the first approach would be to define an SD 
protocol that makes use of most of the functionality of ND. In 
general, we would re-use from ND the registration (and ack) of IPv6 
addresses on ERs, the claiming and defending of services (optional), 
and add the SQ/SR messaging. The end result would be quite similar to 
ND, on a high level, except that nodes store service availability on 
ERs, instead of IPv6 addresses.

</t>

</section>

</section>

<section title="Service descriptions">

<t>

A key issue to design is an efficient encoding of the service 
descriptions. We do not want to have a verbose format and expressions 
in a sensor network. In this respect, we propose to present services 
as fixed-size hashes. In particular, a hash can be calculated from e.g.

</t>

<t>

<list style="symbols">

<t>a verbose (e.g. XML-based) description of a service, or</t>

<t>a simple string describing a resource (e.g. "gateway", 
"temperature sensor").</t>

</list>

</t>

<t>

We could also allocate services to pre-defined integer values. This 
has the downside that we need to maintain a list of well-known 
services, such as an IANA registry. Also, having fixed numbers is less 
flexible.

</t>

<t>

In a sensor network, the typical use cases are about finding a sink 
or a gateway (or ER) from a sensor node, or finding a particular 
sensor from the gateway. We don't usually have use cases for 
situations where a node would be looking for services in general, and 
then picking something "interesting" or otherwise random. All use 
cases are about finding whether (or actually just where) a particular 
service is available in the sensor network.

</t>

<t>

In some use cases, it might be important to hide the SD messaging, in 
particular make it harder to figure out what service a particular 
node is hosting, or looking for. If we use a simple hash of a service 
description that remains static all the time, an outsider, if link 
layer encryption is not used or has been broken, can analyze the SD 
messaging and employ statistical analysis to seek to find out the 
services available; at least what are the most frequently asked 
services.

</t>

<t>

To make this guessing harder, we can calculate the hash from a more 
dynamic data. For example, we could calculate the hash from the 
service description or string but also add a further data element to 
make each hash in the network different. This way an outsider will 
only see a huge number of different service descriptions. An example 
for such an additional data element could be the IP address of the 
node asking for or providing a service. It would be straightforward 
for a legitimate node to dig the actual service information from a 
received message, provided it knows the service descriptions that are 
used in the sensor network. The use of hashing needs some more study 
to fine-tune all details.

</t>

</section>

<section title="Discussion">

<t>

The first approach would be clearly more desirable since it would 
allow for code reuse on a sensor node, and limit the amount of bytes 
sent due to SD. This would be most beneficial to the sensor nodes 
with limited resources. Moreover, specifying a full protocol that 
would essentially only carry additional information to ERs along ND 
seems like a waste of resources.

</t>

<t>

If the network does not have ND deployed, we would be forced to 
introduce SD as the described separate protocol. If that is the case, 
we should aim for a simple messaging and limited functionality, 
instead of trying to design a solution that has the same level and 
features as, e.g., UPnP.

</t>

</section>

<section title="Security Considerations">

<t>

This draft presents two overall approaches to service discovery. A 
detailed security analysis will be done if the work proceeds to 
target a protocol specification.

</t>

</section>

<section title="IANA Considerations">

<t>

This document does not make requests to IANA at this stage.

</t>

</section>

<section title="Acknowledgements">

<t>

This work is a joint effort by the FP7 211998 AWISSENET and TKK ISMO 
research projects. Ad-hoc PAN and Wireless Secure Sensor Networks 
(AWISSENET) is an EU-funded FP7 project. Intelligent Structural 
Health Monitoring System (ISMO) is funded by the Multidisciplinary 
Institute of Digitalisation and Energy (MIDE, 
http://mide.tkk.fi/en/), a technology initiative by the Helsinki 
University of Technology (TKK).

</t>

</section>

</middle>

    <back>

<!-- <references title='Normative References'>

	&rfc2119;

	</references> -->
        <references title='Informative References'>

	&nd;

	</references>

    </back>

</rfc>

PAFTECH AB 2003-20262026-04-24 01:18:59