MQTT có một phiên bản khác nhỏ gọn hơn được gọi là MQTT-SN, giao thức này được dùng cho các thiết bị cạnh biên và cấu trúc thiết kế đặc biệt cho các mạng cảm biến không dây. Các đặc điểm này bao gồm hỗ trợ các liên kết băng thông thấp, lỗi liên kết, độ dài tin nhắn ngắn và phần cứng hạn chế về tài nguyên. Trên thực tế, MQTT-SN nhẹ đến mức có thể chạy thành công qua mạng BLE và Zigbee.
MQTT-SN không yêu cầu chồng giao thức TCP/IP. Nó có thể được sử dụng qua liên kết nối tiếp, trong đó chi phí giao thức liên kết đơn giản (để phân biệt các thiết bị khác nhau trên đường truyền) thực sự nhỏ. Ngoài ra, nó có thể được sử dụng qua UDP, rõ ràng cũng tốn ít chi phí hơn TCP như MQTT.
2.2.2.1Kiến trúc giao thức MQTT-SN:
Có 4 thành phần cơ bản trong kết nối MQTT-SN:
- Gateway: Một gateway có trách nhiệm chuyển đổi giao thức từ MQTT-SN sang MQTT và ngược lại. Các gateway cũng có thể là ghép gộp hoặc trong suốt. - Forwarder: Một tuyến đường giữa một cảm biến và một gateway MQTT-SN có
thể gồm nhiều chặng và băng qua vài bộ định tuyến dọc đường. Các nút giữa client đang ở vai trò là nguồn phát tin và gateway MQTT-SN được gọi là các forwarder và nó chỉ đơn giản đóng lại khung mới cho MQTT-SN và chuyển tiếp tin đến được đúng gateway MQTT-SN.
- Client: Giống với MQTT, client có khả năng đăng ký và xuất bản thông điệp, dữ liệu.
- Broker: Vai trò giống với trong giao thức MQTT. Hình 2.4 minh họa một mô hình giao tiếp MQTT-SN.
Hình 2.4: Mô hình giao tiếp của MQTT-SN
2.2.2.2Các gateway trong suốt và gateway ghép luồng:
Trong MQTT-SN, các gateway có thể đóng hai vai trò riêng biệt. Đầu tiên, một gateway trong suốt sẽ quản lý nhiều luồng MQTT-SN độc lập từ các thiết bị cảm biến và chuyển đổi mỗi luồng đó thành một thông điệp MQTT. Trong khi đó, một gateway ghép sẽ kết hợp một số lượng các luồng MQTT-SN thành một số luồng MQTT ít hơn để gửi đến MQTT broker. Một gateway có chức năng ghép sẽ phức tạp hơn về thiết kế nhưng sẽ giảm được số lượng mào đầu giao tiếp cũng nhưng kết nối đồng thời được mở trên máy chủ. Để xây dựng một gateway ghép thì các client cần publish và subcribe trên cùng một chủ đề. Hình 2.5 minh họa hai vai trò của gateway MQTT-SN.
Hình 2.5: Vai trò của MQTT-SN Gateway ghép và trong suốt
2.2.2.3Một số điểm khác biệt giữa MQTT-SN và MQTT:
Các điểm khác biệt chính giữa MQTT-SN và MQTT như sau:
- Có ba thông điệp CONNECT trong MQTT-SN thay vì một trong MQTT. Hai gói thêm vào dùng để đính kèm chủ đề và thông điệp Will.
- MQTT-SN chạy trên UDP thay vì TCP như MQTT.
- Hỗ trợ chủ đề ngắn hơn, chủ đề dạng tên hay ID có độ dài hai byte. - Chủ đề có thể được định nghĩa trước mà không cần phải đăng ký. - Chu trình khai phá giúp cho client tìm được đường đến Gateway.
- Cơ chế keepAlive hỗ trợ các thông điệp gửi đến một client đang nghỉ sẽ được giữ lại ở server hoặc router biên, các thông điệp này sẽ được chuyển lại cho client khi client thức dậy.