具有 CoAP 和 NAT Traversal 的物联网设备
IoT device with CoAP and NAT Traversal
上下文:每个客户可以在 NAT 后面拥有 100-1000 个物联网设备。我们有多个客户。目的是从外部管理这些设备。设备使用 CoAP 协议,默认使用 udp。
约束很少。
- 无法激活端口转发。
- 无法打开 VPN 连接。
- 无法对 IoT 设备的本地网络进行任何更改。
问题
我们想随时从外部打开与设备的连接。但是有 NAT 阻止它。
选项
据我了解,设备必须打开初始请求才能进行通信。
关于可扩展性和效率,以下哪个选项是最好的?
- 每个节点发送 udp ping 以保持 NAT 连接打开。
- 每个节点使用 TCP 并发送 keepalive 以保持 NAT 连接打开。
- 每个节点通过udp 与NAT 后面的本地代理通信。代理执行从 coap 到 http 的映射。代理使用 TCP 建立与服务器的连接,并发送 keepalive 以保持 NAT 连接打开。
- 与选项 3 相同,但本地代理使用 WebSocket 而不是普通 TCP。
非常感谢
官方 LWM2M 对此的回答是排队模式,请参阅 https://www.slideshare.net/OpenMobileAlliance/oma-lwm2m-tutorial-by-arm-to-ietf-ace or slide 19 of https://mbed-media.mbed.com/filer_public/c1/c3/c1c35bec-5f0e-4a28-a422-115248c9a181/armmbed-lwm2m-webinar.pdf 的幻灯片 30 了解更多信息。所以建议的解决方案没有在上面的1.到4.中列出,而是使用LWM2M协议以注册更新的形式发送"ping"。
从安全的角度来看,如果您部署到 public 互联网,我建议:
a) 你必须使用 DTLS
b) 你应该支持设备固件更新,并且能够非常快速地部署带有补丁的新固件。
个人观点:LWM2M 被设计打破了,从 IoT 设备是服务器的(错误)想法开始。
你应该试试MQTT,比较好用,没有NAT/classic防火墙的问题,最近的资料都有。
网关可以实现 MQTT + LoRaWAN 或 DASH7。
上下文:每个客户可以在 NAT 后面拥有 100-1000 个物联网设备。我们有多个客户。目的是从外部管理这些设备。设备使用 CoAP 协议,默认使用 udp。
约束很少。
- 无法激活端口转发。
- 无法打开 VPN 连接。
- 无法对 IoT 设备的本地网络进行任何更改。
问题 我们想随时从外部打开与设备的连接。但是有 NAT 阻止它。
选项 据我了解,设备必须打开初始请求才能进行通信。
关于可扩展性和效率,以下哪个选项是最好的?
- 每个节点发送 udp ping 以保持 NAT 连接打开。
- 每个节点使用 TCP 并发送 keepalive 以保持 NAT 连接打开。
- 每个节点通过udp 与NAT 后面的本地代理通信。代理执行从 coap 到 http 的映射。代理使用 TCP 建立与服务器的连接,并发送 keepalive 以保持 NAT 连接打开。
- 与选项 3 相同,但本地代理使用 WebSocket 而不是普通 TCP。
非常感谢
官方 LWM2M 对此的回答是排队模式,请参阅 https://www.slideshare.net/OpenMobileAlliance/oma-lwm2m-tutorial-by-arm-to-ietf-ace or slide 19 of https://mbed-media.mbed.com/filer_public/c1/c3/c1c35bec-5f0e-4a28-a422-115248c9a181/armmbed-lwm2m-webinar.pdf 的幻灯片 30 了解更多信息。所以建议的解决方案没有在上面的1.到4.中列出,而是使用LWM2M协议以注册更新的形式发送"ping"。
从安全的角度来看,如果您部署到 public 互联网,我建议:
a) 你必须使用 DTLS
b) 你应该支持设备固件更新,并且能够非常快速地部署带有补丁的新固件。
个人观点:LWM2M 被设计打破了,从 IoT 设备是服务器的(错误)想法开始。
你应该试试MQTT,比较好用,没有NAT/classic防火墙的问题,最近的资料都有。 网关可以实现 MQTT + LoRaWAN 或 DASH7。