面向蜂窝网络的IoT协议可以使用哪种消息传递类型?


14

最近,当我在YouTube上通过以下方式发现精彩视频时,引起了我的注意:

Micheal E. Anderson:《物联网的消息传递技术比较》,OpenIoTSummit,Linux Foundation

他演讲的幻灯片可在此处获得

在幻灯片的第26张和第41分钟的视频中,他正在讨论如何操作(让我解释一下):

蜂窝运营商更喜欢其IoT消费者使用HTMLXMLJSON类型的消息,因为它们消耗更多的数据。更多数据意味着他们可以向消费者收取更多服务费用。

我了解很多专有协议,也就是。SigFoxWireless HARTZ Wave具有较低的数据速率,而在此类载波上发送大量数据可能是一项昂贵的事情。

  • 专有协议中是否还有其他轻量级消息传递格式可供使用,从而使它们成为当前和未来物联网消费者的经济高效解决方案?(在黑暗中射击:某种称为轻量级XML或HTML或JSON的格式位于某处?)

  • 也许是使用CBOR之类的东西?


1
我怀疑数据带宽可能是二阶成本,而不是由应用程序开发人员实际支付的。因此,尽管值得担心,但是在这一领域可能会有更多的发展。
肖恩·霍利哈内

1
您有没有特别感兴趣的情况?如果您要发送可预测的数据类型(例如,整数或某种形式的数据),则可以完全放弃标记语言,但这确实限制了您可以表达的信息量。如果您只对通常使用JSON / HTML / XML的任何情况感兴趣,那也可以。
Aurora0001

1
@ Aurora0001我实际上没有特别的情况,但是值得考虑。我认为,为了与可能连接到蜂窝网络的标记语言与基于Web的网络(IP为主)兼容,是数据格式的最佳形式。但是由于物联网领域通常正在起飞,因此可能值得尝试使用不同的格式。
Shan-Desai

1
抱歉,图片有点混乱:任何网络上的消息传递都有几层,其中数据层仅位于顶层。所有这些都在优化中,或者至少可以。例如5G增强了所使用的信令,因此可以容纳更多数据。即使5G增强了空气中信号的频谱效率,因此效率从许多方面受到关注。
mico

Answers:


6

你问的协议消息格式?当我们指的是数据格式时,我们经常错误地使用术语协议。我自己这样做,通常是因为每个人都不清楚。

物联网中使用的消息传递协议往往相当紧凑,至少比http更为紧凑,并提供了在消息传递中非常重要的重要功能(会话,流控制,可靠性等)。消息格式是所发送消息中数据的格式。我认为这是你在问什么。

最紧凑的消息格式是经过仔细考虑的手动滚动二进制格式。当在低带宽情况下要发送几个字节并确切知道这些字节是什么样时,通常使用它。对于较大的消息,缺点很明显,通常应不惜一切代价避免。

我对许多不同的数据序列化选项进行了详细的评估。我希望protobuf,messagepack相当紧凑。但是,我的第二个问题是找到可以在许多不同平台上维护并可用的库,包括设备上的C。

令人惊讶的是,我确定的格式是gzip压缩JSON。它很容易实现和理解,可以在任何地方运行,并且与我使用的数据相比,其他方法几乎相同或更小。

还要注意,如果您拥有诸如TLS之类的安全通道,则无论如何都会消耗TLS握手中的大量数据(> 6KB)。

几年前,我期望像协议缓冲区这样的格式占主导地位,但是真正发生的事情并不多。可能是因为可以轻松写出和解析(和压缩)json。我喜欢Flatbuffers的外观,但优点是解析速度比紧凑更重要。

由于您正处于调查阶段,因此建议您使用每种情况的典型数据在每个代码上编写一些代码,并进行一些比较。开始时拥有硬数据有助于确认您的选择。


4

基于标记的格式的最大优点是,您可以灵活选择要传输的数据。这在不断发展的生态系统中非常重要,在该生态系统中,您预计服务会随着几年的发展而发展。

尽管有着严格的代码的二进制数据结构是高效的传输,你需要至少结构将是什么样子来决定的前期。后来,当您意识到甚至一个领域都需要扩展时,您就会陷入困境。即使对协议进行更新也很困难,因为在每个端点都更新之前,您不能淘汰旧的编码。

这表明最佳方法是将极简数据包和基于标记的编码混合在一起(使用后者作为备用)。其值取决于最高带宽有效负载。如果您已经在传输频繁的视频大小的块,那么优化不频繁的控制数据就没有必要了。如果您经常进行小额转账(可能是温度),则将传输的开销降至最低是有道理的-但也许只分批进行转账就可以了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.