[Roll] RPL Linux implementation

João Pedro Taveira <joao.p.taveira@gmail.com> Fri, 24 January 2014 10:54 UTC

Return-Path: <joao.p.taveira@gmail.com>
X-Original-To: roll@ietfa.amsl.com
Delivered-To: roll@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 676031A0283 for <roll@ietfa.amsl.com>; Fri, 24 Jan 2014 02:54:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.699
X-Spam-Level:
X-Spam-Status: No, score=-1.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, MIME_8BIT_HEADER=0.3, SPF_PASS=-0.001] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7cqjX-h2i4Yf for <roll@ietfa.amsl.com>; Fri, 24 Jan 2014 02:54:33 -0800 (PST)
Received: from mail-pd0-x234.google.com (mail-pd0-x234.google.com [IPv6:2607:f8b0:400e:c02::234]) by ietfa.amsl.com (Postfix) with ESMTP id BAE951A01D1 for <roll@ietf.org>; Fri, 24 Jan 2014 02:54:33 -0800 (PST)
Received: by mail-pd0-f180.google.com with SMTP id x10so2999733pdj.25 for <roll@ietf.org>; Fri, 24 Jan 2014 02:54:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=Ls2NLM5qP89nPzWEy5abminuME7jdS7xM4fjrRlHkF8=; b=slSE1KQr5xes9xD/tefZuQbI6xzcFcSPSVx+Omhhj/RKasogx/0iUvCObd5+ye7lrU JH90NBJjv+G6fGwQfUoJJnfx4G9qXGOmOyHBP18j0sDU/n5s3e+PUi1F6l+wqvPpX3fy fQMXRvT9JTIv6r61TltTpjfvczNEIJEIxssAx3yqZp4QjdvyZkgBS+ejWrc5N0+UTnEZ q3Pv1kN9dHrcDbuZ4aFBGlFqP4kR7ebjqXGnq9LUR8BTnwLEpACDuEdHqyccPOBxGsDG F3Rz3pvluqNMIDVgqOuzZrNkZbQkpoLSH5aC/Q1LZeArSTHZGa8jiYF6PLDi9bL8knR3 kGrQ==
MIME-Version: 1.0
X-Received: by 10.66.141.231 with SMTP id rr7mr13123587pab.41.1390560872794; Fri, 24 Jan 2014 02:54:32 -0800 (PST)
Received: by 10.67.24.4 with HTTP; Fri, 24 Jan 2014 02:54:32 -0800 (PST)
Date: Fri, 24 Jan 2014 10:54:32 +0000
Message-ID: <CAJ018wAmmvhOadVRZTJJ0eRWxxp-RLTP6_+Qv9n-Aab52=wfZg@mail.gmail.com>
From: João Pedro Taveira <joao.p.taveira@gmail.com>
To: roll@ietf.org, João Pedro Taveira <joao.silva@inov.pt>
Content-Type: multipart/alternative; boundary="001a11331298dc8ea404f0b52e27"
Subject: [Roll] RPL Linux implementation
X-BeenThere: roll@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Routing Over Low power and Lossy networks <roll@ietf.org>
List-Id: Routing Over Low power and Lossy networks <roll.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/roll>, <mailto:roll-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/roll/>
List-Post: <mailto:roll@ietf.org>
List-Help: <mailto:roll-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/roll>, <mailto:roll-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Jan 2014 10:54:35 -0000

Hi to all,

I've been working with linux and contiki in order to get beaglebones and
rpi communicating with contiki powered sensors.

I started using SimpleRPL but I notice that it didn't handle NUD, so I
started Linux RPL support.

I've been cleaning up the code to linux kernel best practices and I'm
trying to get some time to contact kernel network maintainers to know who
to get RPL in kernel.

I've been using RPL in linux with 6lowpan stack, but there some missing
fixes in beaglebone and rpi official kernels which requires to merge a lot
of patches from this and that repository to get everything working on my
project requirements.

Linux implementation worked pretty well with contiki implementation using
6lowpan stack. Notice that there's a lot of bugs and misbehavior
integrating systems, but since there wasn't any RPL implementation of RPL
in linux and integration of 6lowpan in linux with contki, by getting
anything working was a great starting point.

My rpl implementation supports namespaces which allow to test it with CORE
emulator. RPL kernel implementation watches for NUD and acts if required.
It's expected to allow multiple DODAGs. It also provides a OF API to allow
future OF implementations. I only implemented 0OF for now. The rpl kernel
implementation implements linux led trigger support to allow to bind
beaglebones and rpi leds to kind-of "joined to any dag" feedback.

To interact with RPL in linux, there's userland tool "rpl-ctl", which was
based on the great "iz" tool. Using the tool, the user may setup RPL
functionality, list internal state of RPL and trigger repairs. It's not
implemented yet, but I hope to get time to implement userland events
triggering based on what happens in RPL.

If someone would like to give it a try, kernel patches are available here:
https://github.com/joaopedrotaveira/linux-rpl

Since I've been working with several versions of kernels to several
features of RPi and BBW/B, it has been difficult to keep a single
repository with RPL and others features I need for my projects all together.

If you find any issue or have any question on how to get this working, feel
free to ask. If there's any process to test implementations features and
capabilities, let me know.

I'll try to give more time on sharing my work, but my time keeps not
stretching lately.

I hope my contribution be useful.

Best Regards,
João Pedro Taveira