This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

OpenThread: Connecting Thread Devices to Internet

Hi,

I am trying to do a quick PoC to connect some thread nodes to the cloud through a BorderRouter(RPi3b+ running Nordic Border Router, connected to a router using LAN Cable).

The devices needs to communicate with the Cloud to send and recive messages with the following conditions:

  1. The router that's providing internet to the Border Router may or may not support IPv6. It may ONLY support IPv4.
  2. Even if the router assigns IPv6, it may not be < /64 prefix.

Given these conditions, can you please answer the following:

  1. Will it be possible to connect the nodes(SED, MTD, FTD) to the internet to send/receive data from the cloud?
  2. Can the cloud communication happen if the ISP don't support IPv6?

Are there any examples in the SDK to show how this can be achieved?

  • Hi

    1. That depends if you hav IPv6 connectivity to the end nodes or not. We have two Cloud examples in the Zigbee & Thread SDK. We have the Thread Google Cloud Platform CoAP example and the Thread thethings.iO Cloud CoAP client example. Both of these work over IPv4, but only sends requests to the Cloud. This means that the nodes can POST/PUT data to the Cloud server and GET data from the Cloud, but the Cloud can't send data to the nodes on its own initiative.

    2. If you have native IPv6 connectivity with a large enough subnet to the border router for it to furher continue the subnet down to the requirements in Thread/64 prefix address space. Then each node will receive a global unique IPv6 address that the cloud can use to send data to. Without IPv6 connectivity, the communication will go through the NAT64 protocol, which translates IPv6 packets to IPv4 packets and vice versa. There's also a NAT46 protocol that can help with data the other way (cloud to node), but this is not supported in the Border Router solution we provide.

    Best regards,

    Simon

  • Thanks Simonr for such a detailed explaination.

    Cloud can't send data to the nodes on its own initiative.

    If this is the case, I couldn't understand how Nest and Eve devices communicate both ways to/from the cloud in countries  where IPv6 penetration is low. How do you think this can be achieved? Is it through NAT46?

  • Hi again

    I'm not entirely sure how exactly these products do communication both ways. It might be by using the NAT46 protocol, but it also seems like it could be by using stateful NAT64 as well (I can not guarantee that this will work out-of-the-box in our BR solution).

    "In the absence of preexisting state in a NAT64, only IPv6 nodes can initiate sessions to IPv4 nodes. This works for roughly the same class of applications that work through IPv4-to-IPv4 NATs." "Depending on the filtering policy used (Endpoint-Independent, or Address-Dependent), IPv4-nodes might be able to initiate sessions to a given IPv6 node, if the NAT64 somehow has an appropriate mapping (i.e., state) for an IPv6 node, via one of the following mechanisms:"

    Other solutions include IPv6 tunneling, or running a local central gateway that handles packets to and from the cloud.

    Best regards,

    Simon

Related