Dear Hauke,

thank you for your answers. Please see my comments inline.


On 11/20/2015 01:13 AM, Hauke Petersen wrote:
Hi,

thanks for sharing your architecture with us, it is always interesting to see what people are planning! I will try to answer your questions as good as I can, see answers inline below.

On 19.11.2015 20:09, Patrick Rota - Swissponic Sagl wrote:
Hello everyone,

we are developing an IOT application and we got impressed with RIOT. It sports some really nice features and it looks like there is a great community over here. On the paper RIOT seems to be perfect for our application, but we need to go deeper before we start investing our resources into this project. We have some questions that are not easy to answer just by looking at the documentation, so your experience is much appreciated.

Let me first introduce our platform.
As in many WSN we have multiple wireless nodes and one (or more) router / coordinator / gateway.

++ Nodes ++
Nodes are based on Atmel SAM R21 that, as you know, is basically an Atmel SAM D21 plus an Atmel RF233 in the same package. We already designed the modules and they work well with Atmel code examples.
We want to use the following stack:
RF233 <-> 6LowPAN <-> TCP <-> MQTT client <-> Application

++ Router / coordinator / gateway ++
Another device acts as PAN coordinator and as router/gateway to the local LAN. This device is based on a Olimex A13-SOM-512 (https://www.olimex.com/Products/SOM/A13/A13-SOM-512/) running Linux with a wired Ethernet interface and the same SAM R21 radio module (with a different firmware). The two boards are connected trough a serial connection (USART).
Here the communication stack is a little more complex:

[Olimex A13] Application <-> MQTT broker <-> (???) <-> Kernel Serial driver <-> USART
  |
[serial from A13 to SAMR21]
  |
[SAMR21] USART <-> (???) <-> 6LowPAN <-> RF233

As you can see, we are not sure about the stack composition, see "(???)". We would like to integrate the coordinator and routing functions in the A13 side (since we have more resources there) and basically just use the SAMR21 as a transceiver.

----
I hope I gave enough details to understand the platform. If not, I will be happy to answer your questions.
Now, our questions:

1) Architecture: is RIOT viable for this architecture?#
YES indeed! These kind of setups are exactly what RIOT is intended for!

Perfect! We are almost convinced. Today we cloned from the repository and started playing with the native example and we are even more impressed. It worked flawlessly out of the box. In the next days we will try to implement something on the SAM R21 platform.


2) Gateway: which stack layers do you advise to include for the "(???)" parts? Is it a good idea to include the coordinator on the A13 side? Or is better to put it into the SAMR21 side?
On first sight I would use SLIP here, which is already supported by RIOT. Only drawback is that SLIP does as far as I know not support any 802.15.4 link layer specific functionalities, so the PAN coordinator part would need to be handled by the SAMR21. Resource wise this is not problem at all (as the samr21 provides plenty of ressources in terms of memory and processing power to this). Only thing is some missing parts on the implementation side in RIOT, though I am not quite sure about the latest state on this.


If I understand well, are you suggesting the following?

[Olimex A13] Application <-> MQTT broker <-> Linux TCP/IP stack <-> SLIP <-> Kernel Serial driver <-> USART
    |
   [serial from A13 to SAMR21]
    |
   [SAMR21] USART <-> SLIP <-> 6LowPAN+Coordinator <-> RF233

I'm not really familiar with SLIP, so I don't know if I got it right. At which level does SLIP operate? It will send IP packets over serial?

SAMR21 is pretty capable, but with 32kB RAM would it be able to coordinate hundreds of nodes? Somebody ever tried with a large number of nodes? The original reasoning behind putting the coordinator on the A13 side was for managing a large number of notes.


@Martine, @Oleg: do you know the latest about this?

3) Robustness: please be honest, is RIOT robust and mature enough for a large scale use? Do you know of commercial products that integrates it?
A mean thing to ask developers about the maturity of their code :-)

No, seriously: IMHO RIOT is ready and mature enough for large scale use since the latest 2015.09 release. We have just recently tested some long-term setups using the samr21 nodes with raspberry pi + at86rf233 based modules as boarder router that were running for weeks without any trouble. As young as RIOT is (and especially the GNRC network stack), I wouldn't expect it to bug free, but I with little effort one can build very reliable products with it.


Sorry, I didn't want to be mean. I was just seeking a honest answer, to the benefit of everybody.
I'm glad to hear about the long term setup. Well done!



4) License: RIOT is published with a LGPLv2 license and if we understand well, we can then use it in our product without any limitation. Is this right?
'Without limitations' might give the wrong impression. In general the situation is quite easy: if you change any of the existing code (e.g. you fix bugs), you have to make those changes available to the community (e.g. commit them into RIOT's master branch). But you are perfectly fine in linking RIOT together with your disclosed, proprietary application code.


Please see my next answer to Matthias and Andrew.



5) TCP: we have seen that some TCP support has been temporarily removed and being refactored. What is the plan for reintroducing it? (MQTT is based on TCP)
There is current work going on to re-implement TCP, and last I heard is that it is already partly working, so I expect TCP support to be back in RIOT rather soonisch, though we can't give a hard time-frame on this. Further I can't really tell, which TCP features will be supported. But this process can probably speed up if more people decide to help...

We can help on this side.


6) MQTT: is there any plan to develop a MQTT client for RIOT? Is anybody already developing it?
In general: Yes. But the current effort is focussing on MQTT-SN (the MQTT variant that works over UDP). But using MQTT-SN might maybe be also a solution for you to use? As far as I know you can have a transparent broker between these two variants on the Linux side (e.g. Paho or similar) and this would remove the need for TCP on the contrained devices side.


I didn't know about MQTT-SN. Thanks for the hint. I read the specifications this afternoon and it looks even better for our purpose, since it's optimized for WSN. Plus, we don't need TCP any more. Perfect.
This is another part where we could help.
I've seen that Paho already offers a C/C++ MQTT-SN client. Could be a starting point?



7) Mesh: what is the status of meshing networks? Is it working well / stable?
So far we have pretty stable support for RPL storing mode. Though I am no expert here, work on RPL non-storing as well as work on OLSRv2 is on its way.


I don't know what is the difference between the two modes. I need to study a little more... :-)



8) Security: which level of security RIOT provides? For a commercial use, it is important that security (authentication, authorization, encryption) is well implemented. Is this the case?
This is indeed our week spot currently. There is very recent work going on to include tinyDTLS [1] for transport layer security and tweetNACL [2] for end-to-end cryptography.


In today's world, security is very important. For RIOT to be adopted on a large scale, implementing security features must be a priority. As Things got more and more connected, people get more and more afraid of security breaches. Some cases already made the news and some other initiatives (big T for example) put a lot of focus on security.
Just my two cents.




---

We hope that you can shed some light on our doubts. In that case we will be happy to join your community and adopt RIOT as our base. We are ready to contribute to the project, in particular by working on the TCP, MQTT and OTA update, or where needed. We could also provide some HW if anybody is interested.
That would be really awesome! As stated above, most of the stuff you need is already there or is being worked on currently - and with some more help it should even be faster to have these features in RIOT. But looking at your general architecture again it feels like this is exactly what RIOT is designed to do!

Please let us know where you need more information and how we can help!

Great!


Cheers,
Hauke



Regards,
Patrick


[1] https://github.com/RIOT-OS/RIOT/pull/4308
[2] https://github.com/RIOT-OS/RIOT/pull/4317


_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel


        

_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel

Reply via email to