Question regarding CCN-lite and RIOT supported platforms

Hi all,

I am writing to inquire about the status of running CCN-lite over the RIOT OS and about the platforms RIOT-OS supports. I am not sure if this is the right mailing list to send my email over but I hope I can be redirected to the right people if needed.

I have a few questions:-

  1. The homepage of RIOT-OS claims that CCN-lite is supported over RIOT. Has that been verified with the latest version of RIOT?

  2. Does CCN-lite only run directly over 802.15.4 or is there a possibility to run it over the IP over 802.15.4?

  3. Is there an estimate of how much RAM is required to run CCN-lite over the RIOT-OS?

  4. We would like to experiment with CCN-lite over the RIOT-OS. There are a lot of platforms listed on the homepage. What we are looking for is a platform that is constrained but at the same time has RAM more than typical constrained platforms. 64 KB of RAM may suffice for our needs. Anything more than that would be even better. We would really appreciate if someone could recommend a platform with RAM >= 64 KB and has been tested to run CCN-lite over RIOT.

/Adeel

Hi Adeel!

I am writing to inquire about the status of running CCN-lite over the RIOT OS and about the platforms RIOT-OS supports. I am not sure if this is the right mailing list to send my email over but I hope I can be redirected to the right people if needed.

Yes, devel@riot-os.org (or users@riot-os.org) are the right lists to ask this kind of questions.

1. The homepage of RIOT-OS claims that CCN-lite is supported over RIOT. Has that been verified with the latest version of RIOT?

Yes, we ran some tests to verify functionality of the CCN-lite package for RIOT 2016.04. However, since that release CCN-lite and the support package in RIOT has been extended by several features, so you might consider using the latest version in RIOT master.

2. Does CCN-lite only run directly over 802.15.4 or is there a possibility to run it over the IP over 802.15.4?

In principle yes. The CCN-lite package uses GNRC netapi calls to communicate with the lower layers. Hence, CCN-lite in RIOT could run on every arbitrary layer in the GNRC stack (Link layer, IP, UDP...). However, some small amendments are necessary to adapt CCN-lite in RIOT to run over 6LoWPAN (mostly for the addressing format). If you're interested in doing this, I would be more than happy to help.

3. Is there an estimate of how much RAM is required to run CCN-lite over the RIOT-OS?

From the top of my head: a simple application in RIOT with CCN-lite requires less than 20kB of RAM on a 32-bit platform (such as an ARM Cortex). However, CCN-lite uses dynamic memory allocation for the content store, PIT, FIB, and faces. Hence, at least 30kB of memory are advisable if you want to be able to do at least a little bit of caching.

Note, that using CCN-lite over IP will consume significantly more RAM.

4. We would like to experiment with CCN-lite over the RIOT-OS. There are a lot of platforms listed on the homepage. What we are looking for is a platform that is constrained but at the same time has RAM more than typical constrained platforms. 64 KB of RAM may suffice for our needs. Anything more than that would be even better. We would really appreciate if someone could recommend a platform with RAM >= 64 KB and has been tested to run CCN-lite over RIOT.

I have been running extensive experiments with CCN-lite on RIOT using the IoT-Lab testbed over the last months, using the Cortex-M3 nodes there. These nodes have 64kB of RAM and I can confirm that this suffices to run a reasonable ICN application with caching. However, the IoT-LAB nodes AFAIK are not purchasable. An alternative would be to use an STM32 Discovery or Nucleo board and connect an Atmel at86rf23x transceiver (the same one is used on the IoT-Lab nodes). Both, MCU family and transceiver are very well supported.

Cheers, Oleg

Hi Oleg,

Thank you for your reply. It was really helpful. I actually posted another question on the mailing list about STM32F4Discovery and the possibility to run CCN-lite over it with 802.15.4. You have answered that question too.

I just have a follow up question about how the setup would look like if I use the Atmel at86rf23x transceiver with STM32F4Discovery. Does the transceiver hook up directly to the STM32F4Discovery board? Assuming I run CCN-lite directly on 802.15.4, how would I connect the STM32F4Discovery board to a computer that acts as a gateway to the CCN network?

/Adeel

Hi Adeel,

Thank you for your reply. It was really helpful. I actually posted another question on the mailing list about STM32F4Discovery and the possibility to run CCN-lite over it with 802.15.4. You have answered that question too.

I just have a follow up question about how the setup would look like if I use the Atmel at86rf23x transceiver with STM32F4Discovery. Does the transceiver hook up directly to the STM32F4Discovery board?

For this first question, I'm probably not the best person to answer, so maybe others (Peter, Paco, Kaspar?) can help, but AFAIK a viable way could be to buy an Openlabs adapter [1] that can be connected over SPI and plug it on the Discovery Board.

Assuming I run CCN-lite directly on 802.15.4, how would I connect the STM32F4Discovery board to a computer that acts as a gateway to the CCN network?

That's indeed an interesting question. I think the easiest solution would be to either plug an Ethernet module to the Discovery Board or use ethos (ETHernet Over Serial) [2] to connect to the Gateway that run a CCN-lite client with two interfaces (one with an Ethernet socket pointing to the RIOT node and one with an IP/UDP socket pointing to the rest of the world).

In fact, this kind of bridge functionality to translate between different transports for CCN could be also done directly on a RIOT node, assuming that (i) the node would have enough resources and (ii) the adaptation to IP addresses in RIOT's CCN-lite package is there.

Cheers, Oleg

[1] http://openlabs.co/store/Raspberry-Pi-802.15.4-radio [2] RIOT/dist/tools/ethos at master · RIOT-OS/RIOT · GitHub

Hi Adeel,

Hi Adeel,

Thank you for your reply. It was really helpful. I actually posted another question on the mailing list about STM32F4Discovery and the possibility to run CCN-lite over it with 802.15.4. You have answered that question too.

I just have a follow up question about how the setup would look like if I use the Atmel at86rf23x transceiver with STM32F4Discovery. Does the transceiver hook up directly to the STM32F4Discovery board?

For this first question, I'm probably not the best person to answer, so maybe others (Peter, Paco, Kaspar?) can help, but AFAIK a viable way could be to buy an Openlabs adapter [1] that can be connected over SPI and plug it on the Discovery Board.

as Oleg already said, the easiest (and cheapest) solution would be an openlabs transceiver. Unfortunately the connector configuration is not compatible with the STM discovery boards but you could use cables instead. The default pin configuration of the RIOT driver can be found here:

There also exist extension boards by Atmel which should work with RIOT, but I assume the problem of incompatible connectors is the same with STM boards (cables needed):

http://www.atmel.com/tools/ATZB-A-233-XPRO.aspx

Unfortunately the Microchip MRF24J20 driver is still not in shape but this might be a cheap solution in future.

Thanks for your reply Peter and Oleg.

My response inline.

/Adeel

From: devel [mailto:devel-bounces@riot-os.org] On Behalf Of Peter Kietzmann Sent: Thursday, June 30, 2016 10:01 AM To: RIOT OS kernel developers Subject: Re: [riot-devel] Question regarding CCN-lite and RIOT supported platforms

Hi Adeel,

> Hi Adeel, > >> Thank you for your reply. It was really helpful. I actually posted >> another question on the mailing list about STM32F4Discovery and the >> possibility to run CCN-lite over it with 802.15.4. You have answered that question too. >> >> I just have a follow up question about how the setup would look like >> if I use the Atmel at86rf23x transceiver with STM32F4Discovery. Does >> the transceiver hook up directly to the STM32F4Discovery board? > > For this first question, I'm probably not the best person to answer, > so maybe others (Peter, Paco, Kaspar?) can help, but AFAIK a viable > way could be to buy an Openlabs adapter [1] that can be connected over > SPI and plug it on the Discovery Board.

as Oleg already said, the easiest (and cheapest) solution would be an openlabs transceiver. Unfortunately the connector configuration is not compatible with the STM discovery boards but you could use cables instead. The default pin configuration of the RIOT driver can be found here:

https://github.com/RIOT- OS/RIOT/blob/master/drivers/at86rf2xx/include/at86rf2xx_params.h#L53

There also exist extension boards by Atmel which should work with RIOT, but I assume the problem of incompatible connectors is the same with STM boards (cables needed):

http://www.atmel.com/tools/ATZB-A-233-XPRO.aspx

Unfortunately the Microchip MRF24J20 driver is still not in shape but this might be a cheap solution in future.

It is good to know that the MRF24J20 is still not supported, it was one of the things I wanted to know. I also looked at the Atmel option you referenced but as you said the problem of incompatible connectors exists. Thanks for that clarification.

> >> Assuming I run CCN-lite directly on 802.15.4, how would I connect the >> STM32F4Discovery board to a computer that acts as a gateway to the CCN >> network? > > That's indeed an interesting question. I think the easiest solution would be > to either plug an Ethernet module to the Discovery Board or use ethos > (ETHernet Over Serial) [2] to connect to the Gateway that run a CCN-lite > client with two interfaces (one with an Ethernet socket pointing to the RIOT > node and one with an IP/UDP socket pointing to the rest of the world).

I am a bit confused here. Are you talking about running CCN-lite over Ethernet? And if I was to run CCN-lite over Ethernet would I not need an Ethernet module for which RIOT has a driver? There is an extension board (STM32F4DIS-BB) for the STM32F4Discovery board that provides an Ethernet jack. What I am not sure about though is whether there is driver support in RIOT for the Ethernet interface on STM32F4DIS-BB.

I was also thinking a bit about how easy it would be to do a similar thing but over 802.15.4 and not Ethernet. As Peter and you have pointed out, I could use wires to connect the Atmel at86rf2xx transceiver to the STM32F4Discovery board. The gateway side seems a bit problematic though. I could plug in an 802.15.4 dongle in a gateway device and run CCN-lite (without the RIOT OS) on the gateway. However, then CCN-lite should be able to run over 802.15.4. I assume that CCN-lite does not have support for that.

One thing that could possibly be done here is to use a hardware platform of the scale of a Raspberry Pie that supports the RIOT OS for the gateway. Then I could run the CCN-lite + RIOT OS on that gateway and attach an 802.15.4 transceiver to it to communicate with the STM32F4Discovery board on one hand and interface it via UDP/IP/Ethernet to the network side on the other. But this assumes that RIOT OS support relays nodes (not just end nodes) and can run on dual stack i.e. 802.15.4 on one side and UDP/IP/Ethernet on the other. Also in the list of supported platforms on the RIOT homepage I don’t see a platform (of the scale of Raspberry Pie) that can do this. Is RIOT supported on the Raspberry Pie?

Hi Adeel!

I just saw all the responses but just to add some of the XBee needs to be used with a stm32f4discovery board.

You need this file[1] on your projects root and modify it according to your settings, then to add in your makefile the right modules to use it:

USEMODULE += xbee USEMODULE += gnrc_nomac XBEE_UART ?= “1” CFLAGS += -DXBEE_UART=$(XBEE_UART) CFLAGS += -I$(CURDIR)

Be careful to choice a good XBEE_UART, since it needs to differ from your STDIO, which you can define in your board.h like here[2].

Afterwards you should be able to use the XBee module as a radio interface.

Cheers!

Paco.

[1] https://github.com/RIOT-OS/RIOT/blob/master/examples/gnrc_minimal/xbee_params.h [2] https://github.com/RIOT-OS/RIOT/blob/master/boards/nucleo-f103/include/board.h#L33

Hi Paco,

Thank you for your response.

What I would really like to understand is how a sensor platform running RIOT OS on 802.15.4 can be communicated with using a computer/laptop. How do I make a laptop talk over 802.15.4 radio with a sensor platform?

I have some experience with the Contiki OS. As far as I remember, there you can achieve this by connecting an 802.15.4 enabled platform to the laptop over a UART-USB bridge. Contiki supports IP over UART. Then the 802.15.4 enabled platform connected to the computer talks to the sensor platform wirelessly over 802.15.4. The sensor platform also run IP over 802.15.4.

/Adeel

Hi Paco,

Thank you for your response.

What I would really like to understand is how a sensor platform running RIOT OS on 802.15.4 can be communicated with using a computer/laptop. How do I make a laptop talk over 802.15.4 radio with a sensor platform?

I have some experience with the Contiki OS. As far as I remember, there you can achieve this by connecting an 802.15.4 enabled platform to the laptop over a UART-USB bridge. Contiki supports IP over UART. Then the 802.15.4 enabled platform connected to the computer talks to the sensor platform wirelessly over 802.15.4. The sensor platform also run IP over 802.15.4.

/Adeel

Hi Adeel!

> >> Assuming I run CCN-lite directly on 802.15.4, how would I connect the > >> STM32F4Discovery board to a computer that acts as a gateway to the CCN > >> network? > > > > That's indeed an interesting question. I think the easiest solution would be > > to either plug an Ethernet module to the Discovery Board or use ethos > > (ETHernet Over Serial) [2] to connect to the Gateway that run a CCN-lite > > client with two interfaces (one with an Ethernet socket pointing to the RIOT > > node and one with an IP/UDP socket pointing to the rest of the world).

I am a bit confused here. Are you talking about running CCN-lite over Ethernet? And if I was to run CCN-lite over Ethernet would I not need an Ethernet module for which RIOT has a driver? There is an extension board (STM32F4DIS-BB) for the STM32F4Discovery board that provides an Ethernet jack. What I am not sure about though is whether there is driver support in RIOT for the Ethernet interface on STM32F4DIS-BB.

As far as I understand the STM32F4 comes already with integrated Ethernet functionality and the STM32F4DIS-BB just provides the Ethernet jack (RJ45). So far, there is AFAIK no driver for the Ethernet capabilities on the STM32F4, but it shouldn't be too difficult(TM) to implement that, since there is already a general Ethernet netdev2 interface.

I was also thinking a bit about how easy it would be to do a similar thing but over 802.15.4 and not Ethernet. As Peter and you have pointed out, I could use wires to connect the Atmel at86rf2xx transceiver to the STM32F4Discovery board. The gateway side seems a bit problematic though. I could plug in an 802.15.4 dongle in a gateway device and run CCN-lite (without the RIOT OS) on the gateway. However, then CCN-lite should be able to run over 802.15.4. I assume that CCN-lite does not have support for that.

You're right: CCN-lite native only supports Ethernet, but I don't think it should be very complicated to add this feature.

One thing that could possibly be done here is to use a hardware platform of the scale of a Raspberry Pie that supports the RIOT OS for the gateway. Then I could run the CCN-lite + RIOT OS on that gateway and attach an 802.15.4 transceiver to it to communicate with the STM32F4Discovery board on one hand and interface it via UDP/IP/Ethernet to the network side on the other. But this assumes that RIOT OS support relays nodes (not just end nodes) and can run on dual stack i.e. 802.15.4 on one side and UDP/IP/Ethernet on the other. Also in the list of supported platforms on the RIOT homepage I don’t see a platform (of the scale of Raspberry Pie) that can do this. Is RIOT supported on the Raspberry Pie?

RIOT does not run directly on the Raspberry Pi (although you could run RIOT native on Pi hosted Linux). The Raspberry Pi is considered as out of scope for RIOT. Basically, everything that runs Linux is considered out of scope.

You can either use Ethernet dongle for any sensor board and implement the driver if needed, use Ethernet over serial (ethos) or connect a 802.15.4 dongle to the Pi.

Cheers, Oleg