fosdem 2014
play

FOSDEM 2014 Alexander Aring Pengutronix <aar@pengutronix.de> - PowerPoint PPT Presentation

Current State of IEEE 802.15.4/6LoWPAN Stack inside the Linux Kernel FOSDEM 2014 Alexander Aring Pengutronix <aar@pengutronix.de> Slide 1 - http://www.pengutronix.de - 01/31/2014 T opics of Discussion Project history


  1. Current State of IEEE 802.15.4/6LoWPAN Stack inside the Linux Kernel FOSDEM 2014 Alexander Aring Pengutronix <aar@pengutronix.de> Slide 1 - http://www.pengutronix.de - 01/31/2014

  2. T opics of Discussion ● Project history ● Introduction ● Linux implementation ● Future work ● Demo Slide 2 - http://www.pengutronix.de - 01/31/2014

  3. Project history ● Project started in 2008 ● Project name „linux-zigbee“ ● ZigBee is an alternative to 6LoWPAN ● License issues: ZigBee stack into kernelspace ● Possible not released userspace ZigBee stack? ● Now: Project aims to implement 6LoWPAN ● Open standard ● Based on IEEE 802.15.4 networks ● Additional 6LoWPAN upper layer protocols ● Mainline since year 2009 Slide 3 - http://www.pengutronix.de - 01/31/2014

  4. Introduction IEEE 802.15.4 and 6LoWPAN ● MAC-Layer: IEEE 802.15.4 ● Low-Rate Wireless Personal Area Networks ● 6LoWPAN ● IPv6 over Low power Wireless Personal Area Networks ● RFC4944 - Transmission of IPv6 Packets ● RFC6282 - IPv6 Header Compression ● Areas of Applications ● Sensor networks ● Home and industrial automation ● Related work: ContikiOS ● Most used 6LoWPAN stack implementation ● Small stack implementation Slide 4 - http://www.pengutronix.de - 01/31/2014

  5. Linux implementation IPv6 - Architecture Application layer Socket layer Transport layer Packet layer Ethernet interface Slide 5 - http://www.pengutronix.de - 01/31/2014

  6. Linux implementation 6LoWPAN - Architecture Application layer Socket layer T ransport layer Packet layer lowpan interface 6LoWPAN adaptation layer IEEE 802.15.4 interface Slide 6 - http://www.pengutronix.de - 01/31/2014

  7. Linux implementation 6LoWPAN adaptation layer ● Compression of the 40 bytes IPv6 header ● Version, traffjc class, fmow-label, hop-limit ● Addresses (link-local, multicast) ● We can remove the payload length ● Smallest 6LoWPAN header: 3 bytes ● Compression of transport header ● For example UDP has normally 8 bytes ● Special port ranges and removing of checksum ● Smallest UDP 6LoWPAN header: 5 bytes ● 6LoWPAN fragmentation ● 127 (IEEE 802.15.4) to 1280 (IPv6) MTU Slide 7 - http://www.pengutronix.de - 01/31/2014

  8. Linux implementation Experienced issues ● Started with kernel version 3.8 ● Tried to ping another 6LoWPAN node ● Worked with non link-local addresses only ● Fragmented 6LoWPAN packets did work in a Linux to Linux communication only ● Got race conditions while fragmentation ● Run an UDP application ● Random null pointer dereferences occurred ● Didn't work on UDP 6LoWPAN port ranges Slide 8 - http://www.pengutronix.de - 01/31/2014

  9. Linux implementation Fixed issues ● IPHC (IPv6 Header Compression) ● Address compression/uncompression ● Did never work correctly ● Reimplement necessary functions ● UDP compression/uncompression ● Byte ordering issues ● Wrong pointer arithmetic (Null pointer problem) ● Reverse source/destination port ordering ● Static IEEE 802.15.4 header size value ● IEEE 802.15.4 header has a dynamic size ● Size determined by fmow control fjeld ● Value used in fragmentation for reconstruction Slide 9 - http://www.pengutronix.de - 01/31/2014

  10. Linux implementation Known existing issues 6LoWPAN Fragmentation ● Isn't RFC compliant ● Still having race conditions ● Issues with ACK handling on MAC layer ● No Data Sequence Number increment ➔ ACKs do not work correctly ➔ There are patches for a solution ● Which is RFC compliant ● No race conditions ➔ Idea: Implement it like IPv6 fragmentation ● Put the increment of DSN on the right place Slide 10 - http://www.pengutronix.de - 01/31/2014

  11. Linux Implementation What we have done now? ● Before ● Ping to a contiki device wasn't possible ● Suddenly Linux kernel crashed ● Now ● Use of link-local addresses works ● Connection to a contiki device works ● IPHC and fragmentation is RFC complaint ● Bluetooth 6LoWPAN ● Share IPv6 header compression format ● Improving 6LoWPAN implementation Slide 11 - http://www.pengutronix.de - 01/31/2014

  12. Future Work 6LoWPAN upper layer protocols RPL: IPv6 Routing Protocol for Low-Power and Lossy ● Networks ● Route-over: ICMPv6 ● Prototype implementation: SimpleRPL by T ony Cheneau ● Limited functionality ● Has lot of dependencies: python, zeromq, … Neighbor Discovery Optimization for 6LoWPAN ● ● Optimization for non-multicast MAC-Layer ● Need some great idea to implement it ● Problem: Possible handling in 6LoWPAN adaptation layer? CoAP for Userspace (Constrained Application Protocol) ● ● HTTP for sensor networks but UDP based ● T ested libcoap successful under Linux Slide 12 - http://www.pengutronix.de - 01/31/2014

  13. Demo Slide 13 - http://www.pengutronix.de - 01/31/2014

  14. Thanks! Project Website: http://sourceforge.net/projects/linux-zigbee/ Mailing list: linux-zigbee-devel@lists.sourceforge.net Special Thanks to: ● Werner Almesberger ● T ony Cheneau ● Alan Ott Slide 14 - http://www.pengutronix.de - 01/31/2014

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend