Hello community
I have a question regarding openthreads multiple instances.
I started playing around with the different example applications from silicon labs (ot-cli-ftd, sleepy-demo) and have now started on testing some of the features as a proof of concept. I need to do some testing in order to evaluate if OpenThread could be a solution for our product...
What I need to test is the following scenario:
In the above example, I have three different local networks and a
global network. The idea is that all my local networks contain a router
(which is the leader for its own local network) and some child
devices (this could be sensors or other devices that needs to forward
data). In addition, the three local networks should also be connected over a
global network with each other. In the global network is one of the
router of the different local networks the leader. From my understanding
of Openthread, the global network should work, even if one of the local
networks loose the connection and creates a partition of the global
network and as soon as the partitioned network finds the global network again, it should automatically connects to it.
I saw inside the cli demo app that there was a configuration in order to use multiple instances (OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE). Now I'm wondering how this work. Is it really possible to create for example two OT instances and run two OpenThread network simultanously? If so, does that means that one OT instance contains the local network with which the different child devices can connect and send data to it and the second OT instance would be used for the connection to the global OpenThread network?
Thanks in advance!
--
You received this message because you are subscribed to the Google Groups "openthread-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/ab4aa331-b230-40e4-8586-b2c17269e255o%40googlegroups.com.
Hello Jonathan and thank you for your prompt reply!Considering of your explanation, it seems that a single Thread network could be enough for the current use case. I will also look into that solution. But the final decision will be made from our System Architecture engineers and they want two networks running simultaneously. Maybe they have other features already in mind that I'm not aware of and therefore requires a second Thread network...
I tried going forward with the multiple instance project, but couldn't really find much information on how to do it. Is there some kind of examples about creating/using multiple instances?
I just found the code from the ot-cli-ftd demo application where you can choose with the OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE flag if a single instance is used or not. I enabled this flag and modified the code in order to create two OpenThread instances. I also have a function which set the dataset with hardcoded information. This will help when I want to connect the other thread devices with it. Unfortunately when I scan for OpenThread networks with a silabs dev-kit, I get always only one network running. Please find attached my code. It was my first attempt to do something with OT, so it is quite possible that it is far from correct or pretty...Thanks!
/thierry
--
You received this message because you are subscribed to the Google Groups "openthread-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/cde218bf-ace8-4f44-945f-5963218ba797o%40googlegroups.com.
As you discovered, the ot-cli-ftd example app has an example of using the multiple instance API. However, the example app only initializes and starts a single instance (see the single call to `otInstanceInit()`). To support multiple instances, you will need to manage each instance separately. For example, if you want to run two instances, you'll need to have two calls to `otInstanceInit()`, two calls to `otTaskletsProcess()`, etc. Also note that when running multiple instances simultaneously, you'll also need to have multiple 802.15.4 radios (one for each instance).As a reminder, if you are running a Linux host, you can simply run multiple OpenThread processes and avoid the need to deal with the multiple instance API.--Jonathan Hui
On Sun, Jun 7, 2020 at 9:35 AM Thierry Hischier <thierry...@gmail.com> wrote:
Hello Jonathan and thank you for your prompt reply!--Considering of your explanation, it seems that a single Thread network could be enough for the current use case. I will also look into that solution. But the final decision will be made from our System Architecture engineers and they want two networks running simultaneously. Maybe they have other features already in mind that I'm not aware of and therefore requires a second Thread network...I tried going forward with the multiple instance project, but couldn't really find much information on how to do it. Is there some kind of examples about creating/using multiple instances?I just found the code from the ot-cli-ftd demo application where you can choose with the OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE flag if a single instance is used or not. I enabled this flag and modified the code in order to create two OpenThread instances. I also have a function which set the dataset with hardcoded information. This will help when I want to connect the other thread devices with it. Unfortunately when I scan for OpenThread networks with a silabs dev-kit, I get always only one network running. Please find attached my code. It was my first attempt to do something with OT, so it is quite possible that it is far from correct or pretty...Thanks!
/thierry
You received this message because you are subscribed to the Google Groups "openthread-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openthre...@googlegroups.com.
Hello
Ok, at least this means that I was almost 100% correct with what I did (creating two instances, setup 2 networks, 2 calls to otTaskletsProcess() etc...I can't run the example on a Linux host, because I need to check that the multiple instance feature is running on our own hardware...You wrote that I need multiple 802.15.4 radios (one for each instance to run it simultaneously). This makes absolutely sense, but our SoC has only one Radio front end.... But is it possible to share the same radio for both instance? Something like a time based sharing where I give the radio in a pseudo parallel manner to both instances? Do I loose connection with instance 1 when the radio is used for instance 2 and vice versa?
/thierry
Am Montag, 8. Juni 2020 20:01:32 UTC+2 schrieb Jonathan Hui:As you discovered, the ot-cli-ftd example app has an example of using the multiple instance API. However, the example app only initializes and starts a single instance (see the single call to `otInstanceInit()`). To support multiple instances, you will need to manage each instance separately. For example, if you want to run two instances, you'll need to have two calls to `otInstanceInit()`, two calls to `otTaskletsProcess()`, etc. Also note that when running multiple instances simultaneously, you'll also need to have multiple 802.15.4 radios (one for each instance).As a reminder, if you are running a Linux host, you can simply run multiple OpenThread processes and avoid the need to deal with the multiple instance API.--Jonathan HuiOn Sun, Jun 7, 2020 at 9:35 AM Thierry Hischier <thierry...@gmail.com> wrote:Hello Jonathan and thank you for your prompt reply!--Considering of your explanation, it seems that a single Thread network could be enough for the current use case. I will also look into that solution. But the final decision will be made from our System Architecture engineers and they want two networks running simultaneously. Maybe they have other features already in mind that I'm not aware of and therefore requires a second Thread network...I tried going forward with the multiple instance project, but couldn't really find much information on how to do it. Is there some kind of examples about creating/using multiple instances?I just found the code from the ot-cli-ftd demo application where you can choose with the OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE flag if a single instance is used or not. I enabled this flag and modified the code in order to create two OpenThread instances. I also have a function which set the dataset with hardcoded information. This will help when I want to connect the other thread devices with it. Unfortunately when I scan for OpenThread networks with a silabs dev-kit, I get always only one network running. Please find attached my code. It was my first attempt to do something with OT, so it is quite possible that it is far from correct or pretty...Thanks!
/thierry
You received this message because you are subscribed to the Google Groups "openthread-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openthre...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/cde218bf-ace8-4f44-945f-5963218ba797o%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "openthread-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/8599ed4e-675f-4472-90e9-07634bca4890o%40googlegroups.com.
Thierry,It sounds to me like your System Architecture engineers may need to fully understand the features of Thread to see how it fits to your requirements. Guessing at why they want certain features doesn't seem like a good starting place for development.From your original email, as Jonathan explains, it would seem that a single Thread network would meet the requirements. I am struggling to see why you would want to time-division multiplex two instances of a Thread stack on a single radio, where you will lose context for each stack periodically. This is generally problematic for routers, which require the radio to be receiving all the time on behalf of the Thread network they represent. Allocating even a small portion of that time to another network can be problematic, although if that is to appear as a sleepy end device on another network, that could work. However, I don't think that scenario fits into what you originally described.Robert
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/8599ed4e-675f-4472-90e9-07634bca4890o%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/edda07a1-9888-4e17-b436-b1b5494cf0cdo%40googlegroups.com.
Hi Thierry,I completely understand that you cannot give all details of a project in an open forum. It is clearer now what your requirements are, thank you for the clarification. Some comments and questions from your explanation: I'm not expecting answers, it's more about things to consider.
- Do the distinct Local Networks/Systems need to be entirely independent from an 802.15.4 perspective, i.e. do they need to use a separate PAN ID and/or channel? If not, then a single Thread Network will likely meet your requirements,
- From your requirements, it's not clear whether the relationships you specify are application layer requirements from the perspective of binding sensors and masters or network topology relationships between nodes. Whilst not always the case, normally the network layer topology is kept independent from application layer bindings/groups between devices. In a mesh network, this is particularly important as it allows much more flexibility in providing network connectivity between two nodes with an application layer binding. You say they need to be in "direct connection" - is this specifically a layer 2 single hop radio connection between a sensor and its Master or do you mean there needs to be a specific application layer binding between a sensor and its Master? Similarly, you say "sensor is connected to its master and only to its master.". Again, is this a single radio hop layer 2 connection, or is it more from an application layer binding perspective?
- A Thread Router can be a highly capable device and perform sensor processing at the application layer. If a Thread Router has at least one other network interface it is generally considered to be a Border Router. How you describe the Master suggests that it could be a Border Router. Assuming the Master is a Border Router, then does the second network interface have to be a Thread network interface? If it is a more conventional Border Router in the Thread sense, i.e. with a non-802.15.4 secondary network interface, then OpenThread solutions are already there.
- It is always possible to TDM a single radio interface and certainly in a single 802.15.4/Bluetooth LE radio (like the Nordic), the Bluetooth LE activity will interrupt the 802.15.4 activity, which is likely to be receive if it's a Router. The same concept applies to multiple stack instances sharing a 802.15.4 radio. The device properties are important here; if both stacks represent Routers, then this is unlikely to work as you would typically have to allocate 50% to each stack, unless there is some other higher level control that can optimise this. However it is done, it is likely that the Router will be effectively "deaf" for a significant part of its activity, which is inconsistent with the requirements for a Thread Router as currently specified.
In summary, I believe a single Thread network would meet your requirements as you have written them but if there are specific reasons to separate the networks, then I would suggest multiple Thread networks connected through Border Routers and then assess how those Border Routers communicate through their second network interfaces and what the best solution for the second network is, i.e. it may not be another Thread network.Robert
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/edda07a1-9888-4e17-b436-b1b5494cf0cdo%40googlegroups.com.

Hi Thierry,I completely understand that you cannot give all details of a project in an open forum. It is clearer now what your requirements are, thank you for the clarification. Some comments and questions from your explanation: I'm not expecting answers, it's more about things to consider.
- Do the distinct Local Networks/Systems need to be entirely independent from an 802.15.4 perspective, i.e. do they need to use a separate PAN ID and/or channel? If not, then a single Thread Network will likely meet your requirements,
- From your requirements, it's not clear whether the relationships you specify are application layer requirements from the perspective of binding sensors and masters or network topology relationships between nodes. Whilst not always the case, normally the network layer topology is kept independent from application layer bindings/groups between devices. In a mesh network, this is particularly important as it allows much more flexibility in providing network connectivity between two nodes with an application layer binding. You say they need to be in "direct connection" - is this specifically a layer 2 single hop radio connection between a sensor and its Master or do you mean there needs to be a specific application layer binding between a sensor and its Master? Similarly, you say "sensor is connected to its master and only to its master.". Again, is this a single radio hop layer 2 connection, or is it more from an application layer binding perspective?
- A Thread Router can be a highly capable device and perform sensor processing at the application layer. If a Thread Router has at least one other network interface it is generally considered to be a Border Router. How you describe the Master suggests that it could be a Border Router. Assuming the Master is a Border Router, then does the second network interface have to be a Thread network interface? If it is a more conventional Border Router in the Thread sense, i.e. with a non-802.15.4 secondary network interface, then OpenThread solutions are already there.
- It is always possible to TDM a single radio interface and certainly in a single 802.15.4/Bluetooth LE radio (like the Nordic), the Bluetooth LE activity will interrupt the 802.15.4 activity, which is likely to be receive if it's a Router. The same concept applies to multiple stack instances sharing a 802.15.4 radio. The device properties are important here; if both stacks represent Routers, then this is unlikely to work as you would typically have to allocate 50% to each stack, unless there is some other higher level control that can optimise this. However it is done, it is likely that the Router will be effectively "deaf" for a significant part of its activity, which is inconsistent with the requirements for a Thread Router as currently specified.
In summary, I believe a single Thread network would meet your requirements as you have written them but if there are specific reasons to separate the networks, then I would suggest multiple Thread networks connected through Border Routers and then assess how those Border Routers communicate through their second network interfaces and what the best solution for the second network is, i.e. it may not be another Thread network.Robert
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/edda07a1-9888-4e17-b436-b1b5494cf0cdo%40googlegroups.com.
Hi Thierry,I completely understand that you cannot give all details of a project in an open forum. It is clearer now what your requirements are, thank you for the clarification. Some comments and questions from your explanation: I'm not expecting answers, it's more about things to consider.
- Do the distinct Local Networks/Systems need to be entirely independent from an 802.15.4 perspective, i.e. do they need to use a separate PAN ID and/or channel? If not, then a single Thread Network will likely meet your requirements,
- From your requirements, it's not clear whether the relationships you specify are application layer requirements from the perspective of binding sensors and masters or network topology relationships between nodes. Whilst not always the case, normally the network layer topology is kept independent from application layer bindings/groups between devices. In a mesh network, this is particularly important as it allows much more flexibility in providing network connectivity between two nodes with an application layer binding. You say they need to be in "direct connection" - is this specifically a layer 2 single hop radio connection between a sensor and its Master or do you mean there needs to be a specific application layer binding between a sensor and its Master? Similarly, you say "sensor is connected to its master and only to its master.". Again, is this a single radio hop layer 2 connection, or is it more from an application layer binding perspective?
- A Thread Router can be a highly capable device and perform sensor processing at the application layer. If a Thread Router has at least one other network interface it is generally considered to be a Border Router. How you describe the Master suggests that it could be a Border Router. Assuming the Master is a Border Router, then does the second network interface have to be a Thread network interface? If it is a more conventional Border Router in the Thread sense, i.e. with a non-802.15.4 secondary network interface, then OpenThread solutions are already there.
- It is always possible to TDM a single radio interface and certainly in a single 802.15.4/Bluetooth LE radio (like the Nordic), the Bluetooth LE activity will interrupt the 802.15.4 activity, which is likely to be receive if it's a Router. The same concept applies to multiple stack instances sharing a 802.15.4 radio. The device properties are important here; if both stacks represent Routers, then this is unlikely to work as you would typically have to allocate 50% to each stack, unless there is some other higher level control that can optimise this. However it is done, it is likely that the Router will be effectively "deaf" for a significant part of its activity, which is inconsistent with the requirements for a Thread Router as currently specified.
In summary, I believe a single Thread network would meet your requirements as you have written them but if there are specific reasons to separate the networks, then I would suggest multiple Thread networks connected through Border Routers and then assess how those Border Routers communicate through their second network interfaces and what the best solution for the second network is, i.e. it may not be another Thread network.Robert
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/edda07a1-9888-4e17-b436-b1b5494cf0cdo%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/4a85e11e-d0fc-4b0d-9b64-a9106f256c7ao%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/4a85e11e-d0fc-4b0d-9b64-a9106f256c7ao%40googlegroups.com.