使用CoAP和NAT穿透技术的物联网设备

5
背景:每个客户都可以在NAT后面拥有100-1000个物联网设备。我们有多个客户。目标是从外部管理这些设备。设备使用CoAP协议,该协议默认使用UDP。

有一些限制:

  • 无法激活端口转发。
  • 无法打开VPN连接。
  • 不可能更改物联网设备的本地网络。
问题:我们想随时从外部打开与设备的连接。但是,NAT会阻止它。 选项:据我所知,设备必须先打开初始请求才能进行通信。 以下哪种选项最具有可扩展性和效率?
  1. 每个节点发送UDP ping以保持NAT连接处于打开状态。
  2. 每个节点使用TCP并发送保持连接的keepalive消息以保持NAT连接处于打开状态。
  3. 每个节点使用UDP与位于NAT后面的本地代理进行通信。代理将CoAP映射到HTTP。代理使用TCP与服务器建立连接,并发送keepalive消息以保持NAT连接处于打开状态。
  4. 与选项3相同,但是本地代理使用WebSocket而不是普通TCP。
非常感谢!
2个回答

1
官方LWM2M的解决方案是排队模式,更多信息请参见https://www.slideshare.net/OpenMobileAlliance/oma-lwm2m-tutorial-by-arm-to-ietf-ace的第30页或https://mbed-media.mbed.com/filer_public/c1/c3/c1c35bec-5f0e-4a28-a422-115248c9a181/armmbed-lwm2m-webinar.pdf的第19页。因此,所提出的解决方案未列在上述1到4中,而是使用LWM2M协议以注册更新的形式发送“ping”。
从安全角度来看,如果您部署到公共互联网,则建议:
a)必须使用DTLS
b)应支持设备固件更新,并能够快速部署新的补丁固件。
个人观点:LWM2M从错误的想法开始,即认为物联网设备是服务器,因此其设计存在缺陷。

你为什么说“LWM2M从错误的想法开始,认为IoT设备是服务器,因此设计上存在缺陷”?OMA规范指出,LwM2M客户端是驻留在LwM2M设备中的逻辑组件。因此,设备具有LwM2M客户端而不是LwM2M服务器。另一方面,对于CoAP来说可以这样说。CoAP假定设备是服务器端。 - yeniv
@yeniv 我所知道的所有LWM2M项目(包括OMA测试节)都有一个设置,其中物联网设备“侦听”端口以接收传入数据。从纯技术角度来看,我称之为“服务器”。请注意,这也是上面提出的原始问题的根本原因。我假设您所指的文档使用了不同的“服务器”含义,如“服务器是一台大型计算机”。 - Stefan Vaillant
@StefanVaillant 我同意你的观点,认为任何监听设备都可以被视为“服务器”。我的建议是不要试图将LwM2M适应于客户端-服务器模型。考虑它更像是一种点对点的方式,其中任何设备都可以是服务器和客户端。如果我们试图在物联网上下文中将设备映射为服务器和客户端,那么这将成为一个瓶颈。这只是我的想法。 - Reji
只是补充一下:使用CoAP,对等方可以很容易地成为服务器和客户端。请求和响应的消息结构相同,因此实现并不太困难。这只是间接相关的更重要的问题,即哪个对等方发起通信。这也必须考虑到DTLS。LwM2M会处理这个问题,设备会启动通信和DTLS。一旦建立了连接,两个对等方都会作为CoAP客户端和服务器进行操作。最初的问题是,如果没有交换消息,NAT会关闭路由,设备必须再次发起连接。 - Achim Kraus

0
你应该尝试使用MQTT,它更易于使用,没有NAT/经典防火墙问题,所有最近的材料都包括它。MQTT + LoRaWAN或DASH7可以通过网关实现。

你的回答目前写得不太清晰。请[编辑]并添加更多细节,以帮助其他人理解这如何回答问题。在[帮助中心]可以找到关于如何撰写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接