MQTT 是一种用于连接物联网 (IoT) 的流行协议。但它与窄带物联网(NB-IoT)不兼容,窄带物联网是大多数物联网项目中越来越流行的通信标准。它在原型设计过程中工作正常,给公司一种错误的印象,即MQTT是正确的协议选择。
但是,使用 MQTT 的产品在现场时很可能会遇到性能问题或完全故障。许多制造商和系统集成商没有意识到随之而来的风险,这一事实加剧了这个问题:高费用的支持工作、重新吸引开发团队的需求、将固件更新分发到设备队列的问题以及产品召回。
NB-IoT是一种蜂窝技术,适用于受限(通常)电池供电的设备,属于低功耗广域网(LPWA)网络类别。与LTE等更传统的标准相比,它承诺低成本,长电池寿命和卓越的覆盖范围。它是资产跟踪、智能计量、智能城市和其他需要很少数据(如地理位置、传感器数据或错误代码)的连接设备的理想选择,并且已经在实际应用中使用,部署每天都在增加。
NB-IoT网络目前在64个国家(包括美国、中国、澳大利亚和欧洲大部分地区)运营,全球166家运营商正在投资扩大这一覆盖范围。但是,尽管它有好处,但仍然存在一个未宣传的潜在障碍,如果在产品开发早期没有发现,可能会阻止10年或更长时间的稳定产品生命周期。
NB-IoT的工作方式与互联网的其他部分不同
NB-IoT针对用户数据报协议(UDP)进行了优化,但大多数互联网使用传输控制协议(TCP)进行基本通信。TCP 是某些项目(如网站、文件下载和电子邮件)的不错选择,因为它保证数据到达,顺序正确,并允许在损坏时进行错误检测和重新传输。
但是TCP需要设备本身更多的处理能力,导致更多的能源消耗,并且消耗更多的流量。如果您的设备想要发送单个字节(例如,指示灯打开或关闭,以 1 或 0 的形式发送),则开销 TCP 元数据是另外 40 个字节。实际上,数据很少以单个字节发送,但值得注意的是,因为蜂窝数据传输是一种沉重的能源消耗,必须在电池供电的设备上最小化。
更糟糕的是,如果存在来自其他设备的无线电干扰,如果设备位于地下室等接收不良的区域,或者数据丢失或损坏,TCP的重传机制就会启动,并且消耗更多的数据。这些场景在蜂窝网络中很常见,这意味着设备再次发送整个数据包,这相当于两倍的流量和两倍的能量。
这些特性使TCP成为电池供电设备或受限硬件的糟糕选择。由于NB-IoT针对受限设备进行了优化,因此3GPP将其标准化为全球UDP。
在 NB-IoT 上使用 MQTT 时的陷阱
许多产品制造商选择 MQTT 作为设备和云之间的数据交换协议,因为它得到了云提供商和物联网应用支持平台的广泛支持。他们也经常选择 MQTT,仅仅是因为他们在使用 Wi-Fi 或 LTE 开发以前的连接产品时使用了它。
但MQTT依赖于TCP的纠错和重传方案,并且可以很好地与Wi-Fi,LTE和以太网配合使用。这并不是说TCP与NB-IoT不兼容,但是当公司尝试该技术时(例如,在构建原型时),它们的工作条件并不能反映设备在其部署生命周期后期会遇到的情况。
因此,如果您拥有“足够好”的网络覆盖范围,MQTT 和 TCP 效果很好。而且由于大多数办公室不在地下和/或位于大城市,那里有很多无线电覆盖,问题很少,许多公司认为MQTT将自动用于他们的特定用途。毕竟,原型是成功的,所以他们在不知不觉中向市场发布了一个低于标准的产品。
然后,一旦部署,他们开始收到遇到问题的客户的投诉,因为他们不知道将支持NB-IoT的设备放置在接收不良的地下室的后果。
像任何技术一样,TCP连接可能会失败,从而导致重复的数据重新传输。这会导致实际业务数据以外的开销浪费流量、电池寿命缩短和用户体验不佳。
对于使用TCP的项目来说,还有另一个定时炸弹:NB-IoT网络变得越拥挤,TCP连接失败的频率就越高。因此,即使公司针对不良的本地接收优化其设备,性能也会随着时间的推移而下降。
解决业务影响
起初看似良好的产品发布现在可能注定要发生灾难。高延迟会导致糟糕的用户体验,并且根据用例的不同,可能会完全破坏项目。然后最终用户理所当然地抱怨他们的设备没有按预期工作。
因此,必须重新组建开发团队,或者必须组建一个没有系统先验知识的新团队进行改进。然后必须推出新的解决方案,这对于脱机的设备来说很棘手,因为这意味着客户必须退回产品,或者必须派遣技术人员到设备位置执行升级。无论如何解决,此过程都会产生大量的时间和金钱费用。
这个复杂等式中的另一个小因素可能是与数据超额相关的成本,但使用的流量可能会超过合同约定的限制,并触发运营商的额外费用。金额取决于合同、运营商和设备队列的规模,但这也不能被忽视。
但最大的代价是不满意的客户群。很难衡量这种情况对他们对品牌的忠诚度或印象的影响,但它可能会产生长期的影响。
实际针对NB-IoT优化的协议
公平地说,上面概述的大多数要点适用于所有连接的设备,而不仅限于NB-IoT上的MQTT。然而,这是一个更大的问题,因为企业只是没有意识到风险 - 他们只是对MQTT太舒服了,不知道他们错过了什么。
产品制造商和系统集成商应选择UDP友好的协议,例如CoAP或轻量级M2M(LwM2M)。这些协议针对蜂窝物联网进行了优化,并将TCP的大部分优势带到UDP。这些协议都支持数据重传、错误检测和阶次保证。此外,LwM2M 在构建连接产品(尤其是受限设备)方面提供了比 MQTT 更广泛的功能。
通过设计这些NB-IoT友好协议,公司和工程团队可以开始进行广泛的测试,以检查设备在现场各种情况下的运行方式。此测试必须涵盖许多环境,并且计划在每个国家/地区推出,但无论如何,这可能是调试基于 NB-IoT 问题的 MQTT 的时间和资源。
审核编辑:郭婷