Subject: [6lowpan] 6lowpan implementation for TinyOS 2.0

From: Matus Harvan <[email-masked]>
Date: Wed, 23 May 2007 20:52:51 +0200

Hello,

I have implemented a 6lowpan/IPv6 stack for TinyOS 2.0.

The implementation parses Mesh Addressing and Broadcast
headers. 6lowpan fragmentation and fragment reassembly are fully
supported. The 6lowpan-specified HC1 compression of the IPv6 header
and the HC_UDP compression of the UDP header are supported as well as
handling of the uncompressed headers. The implementation can respond
to ICMP echo requests and handles communication over the UDP
protocol. It has been tested on the TelosB and MicaZ motes.

In addition a 6lowpan-translating daemon has been implemented to
allow a linux PC to use a mote as an 802.15.4 interface.

Shortcomings and missing features:
 * 6lowpan payload is sent as Active Message payload. This means that
   the 802.15.4 payload is prefixed with the 1-byte AM Type field.
 * non-zero Traffic Class and Flow Label are not supported by the
   current HC1 implementation
 * UDP port numbers compression is not supported and port numbers are
   always sent in full by the current HC_UDP implementation
 * Neighbor Discovery has not been implemented and link local
   broadcasts are used instead.
 * Not all fragments of a datagram seem to be always received by the
   mote. A workaround is to add a usleep(10000) before sending subsequent
   fragments in the daemon on the PC.

More details can be found in my MSc Thesis
       http://www.eecs.iu-bremen.de/users/harvan/docs/msc-thesis.pdf

Source code is available from
       http://www.eecs.iu-bremen.de/users/harvan/files/6lowpan.tar.gz

Best regards,
Matus

_______________________________________________
6lowpan mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/6lowpan

---

From: Philip Levis <[email-masked]>
Date: Wed, 23 May 2007 12:33:49 -0700

>        http://www.eecs.iu-bremen.de/users/harvan/files/6lowpan.tar.gz

Matus,

This is great news. The TinyOS net2 working group would love to get this 
into the TinyOS distribution. Omprakash Gnawali (USC) is the chair, you 
should contact him if you're interested. Recently, net2 has been focused 
on a binary dissemination protocol, but its future agenda is focused on 
pulling in new protocols, such as a ZigBee stack and a DYMO implementation.

Have you taken a look at TEP 125? Jonathan Hui, David Moss, and I 
proposed introducing a new frame format for TinyOS (the I-Frame) which 
would allow it to exist along side a 6lowpan network without causing 
packet confusion. To some degree, we were waiting for a solid 6lowpan 
implementation before pushing this forward. The 2.0.2 release is slated 
for early July.

Phil

---

From: Matus Harvan <[email-masked]>
Date: Wed, 23 May 2007 23:26:47 +0200

On Wed, May 23, 2007 at 12:33:49PM -0700, Philip Levis wrote:
> packet confusion.

Yes, TEP 125 promises the implementation of an I-Frame to show up soon
in tinyos-2.x/tos/chips/cc2420. I was hoping that this would allow me to
use the whole 802.15.4 payload once it shows up without having to change
things in tinyos-2.x/tos/chips/cc2420 or at least minimize the necessary
changes. Hence, I have not tried to implement something myself.

> To some degree, we were waiting for a solid 6lowpan 

If an I-Frame implementation would make it easier to get rid of the AM
Type field I'm happy to use it. I also have not optimized my buffers and
structures heavily, but it may be then possible to directly embed
something like a message_t in lowpan_pkt_t and use it instead of a
uint8_t[102]. lowpan_pkt_t is a struct I am using to represent a packet.

Matus