Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Managing a BLE/Thread application with unknown IPv6 addresses

Hello

I have 3 nodes, 2 Thread CoAP servers and 1 BLE/Thread Coap client.

Let's call them THnode1, THnode2 and BLE_THnode0.

I do not know the IP addresses of any node, but I would like to send messages to a specific node with a BLE interface using its name.

BLE_interface ----- message to THnode1 ----->  BLE_THnode0   -----message to IPv6 of THnode1 -----> THnode1

I would need a kind of DNS to get a correspondense table (NAME<---> IP). But it seems such a DNS does not exist in the Nordic SDK.

How do you get the IP addresses of all your nodes and link them to their name ?

Does the address discovery and correspondence table have to be done in the application layer ?

For example, when a node join the network, it might send a multicast message with the CoAP including his name. Once the BLE_THnode0 get the message, it would have to build his own correspondance table... (as would do a DNS). Is it the way we must do it?

Thanks

Best regards

Parents
  • Hello Simon,

    First of all, thank you for using nRF5 SDK for Thread and Zigbee!

    Thread protocol does not define any application layer and so it does not provide a way to discover addresses by embedded mechanisms.
    At the same time, Thread allows implementing any IPv6 based protocols on top.

    Unfortunately, in our SDK, we don't provide an example of such a dedicated protocol e.g. DNS Server or mDNS.

    OpenThread API exposes UDP Socket API so you can try to implement or port existing DNS-like protocol (e.g. mDNS). Alternatively, you can check out our CoAP examples where we do proprietary address discovery based on CoAP queries (for provisioning purposes).

    Regards,
    Łukasz

Reply
  • Hello Simon,

    First of all, thank you for using nRF5 SDK for Thread and Zigbee!

    Thread protocol does not define any application layer and so it does not provide a way to discover addresses by embedded mechanisms.
    At the same time, Thread allows implementing any IPv6 based protocols on top.

    Unfortunately, in our SDK, we don't provide an example of such a dedicated protocol e.g. DNS Server or mDNS.

    OpenThread API exposes UDP Socket API so you can try to implement or port existing DNS-like protocol (e.g. mDNS). Alternatively, you can check out our CoAP examples where we do proprietary address discovery based on CoAP queries (for provisioning purposes).

    Regards,
    Łukasz

Children
No Data
Related