车联网(IoV)是一项能让网联汽车相互之间进行通信,以及与道路基础设施和其他设备进行实时通信的技术。V2X包括V2V、V2I和V2P通信,可实现车辆之间、车辆与基础设施和车辆与行人之间的实时交互。V2X技术旨在提高道路安全、减少交通拥堵、增强驾驶体验以及实现自动驾驶功能。
作为更广泛的物联网生态系统的一部分,车联网集成了传感器、GPS系统、云计算平台、数据分析工具和高级网络解决方案等多种技术。这些技术相互协同工作,从各种来源(例如车载诊断系统或外部交通监控服务)收集数据,对其进行处理分析,并在网联汽车之间共享。
车联网生态系统的主要组成部分包括:
随着网联汽车数量的增长,人们越来越需要能够有效管理大量数据传输,同时提供低延迟和高可靠性的通信协议。MQTT(消息队列遥测传输)就是这样一种协议,它最初是为带宽和电力资源有限的受限环境而设计的,因此非常适用于车联网生态系统。
MQTT是一种轻量级消息传输协议,专为资源有限和低带宽环境下的设备而设计。它由IBM在20世纪90年代末开发,旨在通过卫星连接来实现石油管道传感器之间的通信。如今,它已成为机器对机器(M2M)通信和物联网(IoT)应用的行业标准
MQTT使用紧凑的二进制格式传输数据,与HTTP等基于文本的协议相比,每条消息所需的信息量更少。这些特性使得MQTT在数据开销和网络使用方面非常高效,适合资源有限或不可靠连线的应用。
让我们更深入地了解一下MQTT是如何运行的。
服务质量(QoS)
MQTT提供三个QoS级别,可根据应用需求帮助管理消息传输的可靠性:
建立连接
首先,MQTT客户端通过特定端口上的TCP或WebSocket与代理建立联系。可以使用安全传输层协议(TLS)来保护连接。连接成功后,客户端发送一个CONNECT数据包,其中包含客户端标识符、用户名/密码凭证(如果需要)等信息,以及其他可选参数(如保持连接的时间间隔)。
发布-订阅模型
在此模型中,发布者发送消息(PUBLISH数据包),但并不知道谁会收到这些信息,而订阅者仅收听他们感兴趣的特定主题。要订阅一个主题,客户端要发送SUBSCRIBE数据包。然后,客户端会根据他们订阅的主题接收发布的消息。当代理从订阅类似主题的或使用“通配符”方式的多个客户端接收到这些数据包时,它会相应地合并订阅。
确认消息和保留数据
为了确保在三种QoS下消息传输的可靠性,MQTT使用了各种确认数据包,例如PUBACK、PUBREC和PUBCOMP。客户端还可以发送PINGREQ数据包,以便在不活动期间保持连接。
除了消息确认之外,MQTT还可以通过在发布消息时将消息标记为“保留”来保留数据。代理将每个主题的这些保留消息存储起来,以便新的订阅者在订阅后能立即收到最新信息。
关闭连接
要正常关闭活动连接,客户端会发送一个DISCONNECT数据包,让代理在终止会话之前清理资源。如果客户端在未发送此数据包的情况下突然断开连接,或者未能在保持连接的间隔内做出响应,则代理可能会强制关闭连接并删除相关的订阅。
MQTT是车联网应用的绝佳选择有以下几个原因:
MQTT对于IoV应用也有一些关键的局限性:
总之,MQTT协议为更高效、可靠和安全的车与万物通信提供了重要机遇。凭借其轻量化设计,MQTT可以有效地实时处理大量数据,这对于动态的车辆通信领域至关重要。其QoS级别、发布-订阅模型和确认机制确保了不同车联网应用的可靠性和灵活性。
不过,认识到MQTT在IoV环境中的潜在局限性也很重要。缺乏直接通信、高速场景中的潜在延迟以及持续连接的开销可能需要针对某些应用采用替代或辅助技术,特别是那些需要直接和超快速车对车交互的应用。
总体而言,MQTT的优势在很大程度上满足了日益增长的物联网需求,并将被证明对未来的车辆网络非常有用。尽管如此,与所有其他技术一样,应根据具体情况来评估其适用性,并考虑每个应用的具体需求和限制。随着车联网的不断发展,支持车联网的技术也将不断发展,为更安全、更高效、更互联的道路交通提供动力。
(原文刊登于EDN姊妹网站Embedded,参考链接:Applying MQTT for the Internet of Vehicles,由Ricardo Xie编译。)