具有 CoAP 和 NAT Traversal 的物联网设备

IoT device with CoAP and NAT Traversal

上下文:每个客户可以在 NAT 后面拥有 100-1000 个物联网设备。我们有多个客户。目的是从外部管理这些设备。设备使用 CoAP 协议,默认使用 udp。

约束很少。

问题 我们想随时从外部打开与设备的连接。但是有 NAT 阻止它。

选项 据我了解,设备必须打开初始请求才能进行通信。

关于可扩展性和效率,以下哪个选项是最好的?

  1. 每个节点发送 udp ping 以保持 NAT 连接打开。
  2. 每个节点使用 TCP 并发送 keepalive 以保持 NAT 连接打开。
  3. 每个节点通过udp 与NAT 后面的本地代理通信。代理执行从 coap 到 http 的映射。代理使用 TCP 建立与服务器的连接,并发送 keepalive 以保持 NAT 连接打开。
  4. 与选项 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。