From recent posts I sort of get the impression that things previously implemented using TCP have been moved to UDP in the Mesh products - for example some of the link to the cloud (really… UDP over Internet … ??) .
Is TCP still available as a full protocol stack in the Mesh devices and can, for example, a TCP socket connection be opened and maintained between nodes or a gateway to node ? I realise the data rates are low.
I ask this ‘naively’ without having digested all the docs yet or read up on Thread. Is guaranteed ‘one to one’ delivery an option, and the issue is just the broadcast ‘one to many’ events which may need some extra ACK layer.
Between mesh nodes, or between a mesh-only node (Xenon) and a gateway you can only use UDP. There is no TCP support in Thread Mesh at this time.
The reason is that Thread Mesh is basically a store and forward network when delivering packets between repeaters and nodes, especially nodes that uses sleep modes, and it would have poor TCP performance so it was not initially included in Thread Mesh.
I am looking at migrating our Photon-based solution to Mesh. Currently, our Photons open a TCP connection and stream data to our endpoint server. From what I’m reading, does this fundamentally change with Mesh? Do I need to stream that data (from Xenon) via UDP to the gateway (Boron) then have the gateway pass that on via TCP?
Are there any examples of people streaming data (not just Publish) from Xenons through Argon/Boron to server endpoints (e.g. AWS)?
I thought that the whole point of Thread being IP based , is to eliminate the need for the nodes functionality to be distributed between the node and the gateway. So mobile apps can directly talk to mesh node , and mesh nodes can talk directly to IP devices on the local wifi or the Internet .