MQTT-SN的架构如图1所示。有3种类型的MQTT-SN组件:MQTT-SN客户端、MQTT-SN网关、MQTT-SN转发器。MQTT-SN客户端使用MQTT-SN协议连接到MQTT-SN网关,再连接到MQTT服务端。MQTT-SN网关可以集成到MQTT服务端里。如果是做为独立的网关,则MQTT服务端和MQTT-SN网关间将采用MQTT协议,它的主要功能就是MQTT和MQTT-SN之间的转换。
当客户端所在的网络无法直接连接到网关时,客户端也可以通过转发器来存取网关。转发器将它在无线网络侧所接收到的MQTT-SN侦进行简单封包,然后原封不动地发送给网关;相反的,它将从网关侧接收到的侦解封,然后同样原封不动地发送到客户端。
基于网关在MQTT和MQTT-SN间转发所起的作用,我们可以区分出2种类型的网关:透明网关和集聚网关。
4.1 透明网关
对于每个连接的MQTT-SN客户端,透明网关将会和MQTT服务端建立并维护一个MQTT连接。该MQTT连接将会单独为端到端通信保留,而且对于客户端和服务端间的消息交换是透明的。有多少MQTT-SN客户端连接到网关,在网关和服务端之间就有多少MQTT连接。透明网关在两协议间将扮演语法翻译器的角色。因为MQTT-SN客户端和MQTT服务端间的所有消息交换是端到端的,所以服务端可以向客户端提供其实现的所有功能和特性。
虽然和集聚网关比起来,透明网关的实现比较简单,但是它要求服务端支持为每个活动的客户端保持一个单独的连接。一些MQTT服务端实现可能在能支持的并发连接数上有所限制。
4.2 集聚网关
不同于每个连接的客户端都有一个MQTT连接,集聚网关将只有一个到服务端的MQTT连接。MQTT-SN客户端到集聚网关的所有信息交换将只到网关。由网关决定哪些信息将进一步传递到服务端。虽然集聚网关的实现比透明网关更复杂,但它在拥有大量传感器的无线传感网络中是非常有用的,因为它减少了服务端必须并发支持的MQTT连接数。