How to configure RPL on a linux based border gateway?

Hey,

I just tested the updated 6LoWPAN BLE adaption layer. Nimble + RIOT works like a charm and it is simple to use. :slight_smile: Really happy about it. I just have a question about RPL and the border router. I configured a 6LoWPAN network with 5 nodes. All are able to find each other. The root is connected to my Notebook. I am able to ping the RPL root, but not the other nodes. I can only reach all nodes within the RPL network. So, I guess my Notebook also needs to be part of the RPL network in order to route down the packages to the leafs, right? So, how can I configure my linux in order to be part of the RPL network? And how should I bridge the network to the outside world? Or should the nordic connected to my Notebook be the root? If it needs to be the root, how can I configure this node to route all packages from my notebook down and all packages coming from the leafs up? (Only, if the address is not within the RPL network, of course.) To make it short: How do I need to configure my border gateway so that all nodes have access to the outside world and the outside world to my nodes?

I just tested the updated 6LoWPAN BLE adaption layer. Nimble + RIOT

    > works like a charm and it is simple to use. :slight_smile: Really happy about it.

    > I just have a question about RPL and the border router. I configured a     > 6LoWPAN network with 5 nodes. All are able to find each other. The root     > is connected to my Notebook. I am able to ping the RPL root, but not the     > other nodes. I can only reach all nodes within the RPL network. So, I     > guess my Notebook also needs to be part of the RPL network in order to     > route down the packages to the leafs, right?

Yes.

    > So, how can I configure my     > linux in order to be part of the RPL network? And how should I bridge     > the network to the outside world? Or should the nordic connected to my     > Notebook be the root?

That's a different option.

    > If it needs to be the root, how can I configure     > this node to route all packages from my notebook down and all packages     > coming from the leafs up? (Only, if the address is not within the RPL     > network, of course.) To make it short: How do I need to configure my     > border gateway so that all nodes have access to the outside world and     > the outside world to my nodes?

Your choices are:   1) configure/run RPL on Linux.   2) run a copy of the RIOT-OS image on Linux as a process, connecting it      correctly.   3) make a directly (USB) connected mote be the RPL root.

I wish I could tell you that (1) is easy. My code base at https://unstrung.sandelman.ca only implements storing mode, and it hasn't gotten the attention it deserves of late. Further, the Linux kernel does not support (or tolerate), the RPL RPI header needed by storing mode. If you turn off RPI headers, that can be tolerated if you want to use storing mode and you don't care about loop detection. But Linux also doesn't support the RH3 header needed for non-storing mode.

Here is an article from a bunch of years ago:      http://www.sixpinetrees.pl/2014/11/linux-rpl-router.html

There are two other RPL daemon implementations:   a) [Roll] RPL Linux implementation      GitHub - joaopedrotaveira/linux-rpl: RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks for Linux      Not sure if he has RPI patches too.

  b) GitHub - linux-wpan/rpld: Yet another RPL implementation for Linux about two months old.

For (2), the idea is that you'd connect the image to a radio on your laptop, and to a tun device. Ideally, that RPL root would do DHCPv6-PD to get a range, or your'd configure it yourself. I have done this a long time ago with Contiki. I had patches, but they didn't get upstream.

For (3), you just have to get SLIP running on the serial USB and connect to a tun device. This is how most gateways have been built to date. I'm sorry, I don't have a formula for RIOT-OS, as I'm also new, but I ran this for years with Contiki/Contiki-NG.