Context: Each customer can have 100-1000 IoT-devices behind NAT. We have multiple customers. The aim is to manage these devices from outside. Devices use CoAP protocol, which uses by default udp.
There are few constraints.
- It is not possible to activate Port-Forwarding.
- It is not possible to open a VPN connection.
- Any changes in local network of IoT devices are not possible.
Problem We'd like to open anytime a connection to device from outside. But there is the NAT which prevents it.
Options As I understand, the device has to open initial request in order to communicate.
Which of the following options is the best one regarding scalability and efficiency?
- Each node sends udp pings in order to keep NAT connection open.
- Each node uses TCP and sends keepalive to keep NAT connection open.
- Each node communicates with udp to local proxy behind NAT. The proxy does mapping from coap to http. The proxy establishes connection to server with TCP and it sends keepalive in order to keep NAT connection open.
- Same as option 3 but the local proxy uses WebSocket instead normal TCP.
Thank you very much