Menu

Custom development

JAQ
2008-07-18
2013-04-29
  • JAQ

    JAQ - 2008-07-18

    Hello,

    I am interested in developing a custom mesh network, more specifically IEEE802.15.4 based low-rate (low duty-cycle) network. I have read the paper called "Using Sensinode Products to Develop 6LoWPAN Networks" and I have both the development environment and the hardware ready. I am thinking of creating the actual mesh at MAC-layer level (mesh-under). But once the mesh is constructed, the NETWORK-layer level routing (peer-to-peer) is needed. At this level routes need to be constructed and maintained (using routing-daemon at OS level?). I would like to do this using Sensinode's Protocol Stack. So, I think that I need to write a custom routing protocol(?), but I'm a bit confused about how to do this: I would like to use 6LowPAN IPv6 and IEEE802.15.4 offered by the stack (especially let the users of this custom network to use IPv6 implemented in Sensinode stack), but how and where should I put my custom protocol? I would like to keep my protocol as much as possible independent from the Sensinode Stack (or possibly kind of adding or contributing the Sensinode Stack). Any ideas? Thank you.

     
    • shelby

      shelby - 2008-07-23

      Hi,

      Yes, you can modify the routing algorithm used in NanoStack. The routing is accomplished using two different modules under /Common.

      routing.c - This provides the structures for the neighbor and routing tables, along with functions to check, update and maintain those tables. The routing table is meant to be used with a mesh-under routing technique using the RFC4944 mesh header. These are used by the MAC (to update the neighbor table) and the routing algorithm (to update the routing table).

      modules/nanomesh.c - This is where the neighbor and routing tables are checked in order to fill the options for the mesh header, and then send the packet.

      cIPv6.c - This module implements RFC4944 and IPv6, and thus also participates in processing the mesh header.

      See HAVE_ROUTING in all the files, this is the define which enables routing.

      To make a clean contrib, probably the easiest thing to do is make either modified versions of the files or a patch. Then you can put them in the /Contribs directory on the SVN (ask me for developer access by e-mail).

      - Zach

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.