PrioMQTT:MQTT协议的优先级版本

目录

摘要

4. 设计

4.1 引入消息优先级

4.2 代理(Broker)架构(图3)

​编辑

设计优势

设计考虑


本博文整理自论文《PrioMQTT: A prioritized version of the MQTT protocol》,由Gaetano Patti、Luca Leonardi、Giuseppe Testa和Lucia Lo Bello四位作者撰写,发表在《Computer Communications》期刊的2024年第220期上,页面范围是43-51页。

摘要

  • MQTT是一个应用层协议,因其简单和低开销,在物联网(IoT)设备中广泛使用,特别是在家庭自动化和消费者应用中。
  • MQTT的属性也使其成为工业物联网(IIoT)应用的有趣选择,但MQTT并非专为需要低延迟和时间受限传输的IIoT应用设计。
  • 因此,本文提出了一个名为PrioMQTT的MQTT协议的IIoT版本,它能为时间关键的消息提供低延迟。
  • 与标准MQTT不同,PrioMQTT采用UDP/IP堆栈,这比TCP/IP更适合低延迟通信。
  • PrioMQTT引入了一种机制,优先处理时间关键消息而非非时间关键消息。
  • PrioMQTT协议的UDP/IP堆栈和优先级支持的结合,同时保持与MQTT标准消息格式的兼容性。
  • 因此,PrioMQTT可以在不需要硬件修改的现成商用设备上实现。
  • 文章描述了PrioMQTT协议,并通过在现实工业场景中的评估以及与标准MQTT协议的比较来研究其性能。

第4部分论文详细介绍了PrioMQTT的设计,其主要目标是在消除TCP协议带来的额外延迟的同时,提供一种机制来区分消息传输的优先级,以反映消息的时间约束。以下是对第4部分的详细介绍:

4. 设计

4.1 引入消息优先级
  • MQTT v5消息属性:PrioMQTT利用MQTT协议版本5引入的消息属性字段,在MQTT消息中编码特定的属性。这些属性包括用户属性(User Properties),它是一个UTF-8的键值对数组,允许在MQTT消息中包含用户指定的数据。
  • 优先级编码:在PrioMQTT中,优先级被编码为一个包含数值的字符串,并将其转换为64位无符号整数。数值越低,优先级越高。这种设计允许支持不同的消息调度策略,如固定优先级或动态优先级。
4.2 代理(Broker)架构(图3)
  • 网络栈:PrioMQTT代理的底部是网络栈,负责创建和管理代理的网络入口点。接收到的MQTT消息被传输到消息接收器和处理器组件。
  • 消息接收器和处理器:该组件负责解析MQTT连接、订阅和MQTT协议的所有核心逻辑。它不处理传输协议,只处理标准MQTT消息。
  • 定时器模块:用于管理时间驱动的操作,例如可能的重传和应用层连接的管理。
  • Prio Tx队列:待传输的消息在此队列中按优先级排序。相同优先级的消息按照先进先出(FIFO)的顺序传输。
  • 传输组件:从队列中提取消息并进行传输。

设计优势

  • 兼容性:PrioMQTT允许在同一代理上结合标准MQTT传输和时间受限的传输,同时保持与标准MQTT客户端节点的向后兼容性。
  • 多传输层:支持同时使用多个传输层,除了UDP,还可以选择其他协议,如音视频传输协议(AVTP)。
  • 消息传输调度策略:可以使用不同的非抢占式消息传输调度策略。
  • 降低延迟:通过为时间关键的传输采用UDP传输协议,减少了消息延迟。

设计考虑

  • 消息优先级:发布者可以自由地将优先级分配给主题或每条消息,这种选择在网络设计时确定。
  • 队列实现:Prio Tx队列在软件中实现,队列大小是一个可配置的参数,可以根据设备的工作负载和代理上可用的内存量进行设置。
  • 多目的地传输:如果消息需要传输到多个目的地,可以采用两种不同的入队方法:一种是在队列中只存储一条消息和目标节点的地址数组;另一种是在同一消息的传输队列中存储多个引用,每个引用具有不同的目的地。
  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神一样的老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值