Giao thức MQTT

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số phương pháp giao tiếp giữa các cảm biến và ứng dụng iot trong giám sát thiết bị điện phòng học (Trang 34)

MC LC

6. Ý nghĩa khoa học và ý nghĩa thực tiễn

1.3.1. Giao thức MQTT

1.3.1.1. Giới thiệu

MQTT (Message Queuing Telemetry Transport) là giao thức truyền th ng điệp (message) theo m hình giao tiếp Publish/Subscribe, phù hợp cho việc vận chuyển dữ liệu từ xa. Là một giao thức rất nhẹ do đó đƣợc sử dụng để giao tiếp các thiết bị (M2M- Machine to Machine), WSN (Wireless Sensor Networks) và phổ biến nhất trong các dự án oT. iao thức này đƣợc thiết kế để trao đổi dữ liệu giữa máy chủ (server) và khách hàng (client). Ngoài ra với kích thƣớc nhỏ gọn, đơn giản, mức sử dụng năng lƣợng thấp, các gói dữ liệu đƣợc tối ƣu hóa và dễ dàng thực hiện đã khiến nó trở nên lý tƣởng hơn [8].

1.3.1.2. Lịch sử

MQTT đƣợc tạo ra bởi tiến sĩ Andy Stanford- lark của M và Arlen Nipper của Arcom năm 1999 là một cách hiệu quả, đáng tin cậy để kết nối các thiết bị đƣợc sử dụng trong ngành dầu khí với các máy chủ doanh nghiệp từ xa nhằm điều khiển giám sát và thu thập dữ liệu từ các cảm biến [9].

1.3.1.3. Thành phần của MQTT:

Client (Publisher, Subscriber) [9]: lient (khách hàng) đăng ký một chủ đề để gửi và nhận message:

- Khi một client muốn gửi dữ liệu cho roker: đây là hoạt động Publisher. - Khi một client muốn nhận dữ liệu từ roker: đây là hoạt động Subscriber. Vì vậy Publisher và Subscriber đóng vai trò đặc biệt của client.

Hình 1.13. Hoạt động của client

Server (Broker) [9]: Server trong MQTT gọi là một roker đƣợc xem là trung tâm, là điểm giao của các kết nối đến từ client. Nhiệm vụ chính của Broker là nhận đăng ký từ các client về các chủ đề (topic), nhận tin nhắn (message), sắp xếp các message theo hàng đợi rồi chuyển chúng đến một địa chỉ dựa trên việc đăng ký của client. Nhiệm vụ phụ của Broker là có thể đảm nhận thêm một vài tính năng liên quan đến truyền th ng nhƣ: bảo mật message, lƣu trữ message.

Topic: Là nơi mà một client muốn đặt hoặc truy xuất message. Cụ thể khi một message đƣợc publish vào một Topic thì những subscriber của Topic đó sẽ nhận đƣợc message này [9].

Hình 1.14. Hoạt động của Topic

Message: Là đơn vị trao đổi dữ liệu mà thiết bị nhận đƣợc khi Subscribing (đăng ký) một Topic hoặc gửi đi khi Publishing một Topic [9].

1.3.1.4. MQTT QoS.

QoS (Quality of Service): MQTT cung cấp các mức đảm bảo sự chắc chắn trong việc gửi và nhận dữ liệu giữa các client và roker. MQTT hỗ trợ 3 mức [9]:

QoS0: ảm bảo mức thấp nhất, dữ liệu đƣợc gửi đi đúng một lần và sẽ kh ng đƣợc kiểm tra đã đến các roker hay chƣa.

QoS1: ảm bảo đã đến nơi nhận, ít nhất một lần đƣợc xác nhận.

QoS2: Mức đảm bảo cao nhất, roker đảm bảo các dữ liệu có QoS2 sẽ đến nơi nhận chỉ đúng một lần duy nhất, kh ng bị trùng lặp, kh ng thất lạc dữ liệu, đồng thời tốn băng th ng hơn hai cách trên.

1.3.1.5. MQTT Broker trong IoT

Một trong những thành phần của hệ thống oT là Platform (điện toán đám mây), nó chịu trách nhiệm kết nối các thiết bị với nhau, cho phép ngƣời dùng kiểm soát và giám sát các thiết bị của mình. Và roker cũng chính là Platform, nó nằm trong hệ thống oT [10].

ó hai cách tạo ra một MQTT roker: Tự tạo MQTT Broker trên máy tính, raspberry, server, …; Sử dụng các dịch vụ MQTT Broker có sẳn nhƣ CloudMQTT.

Hình 1.15. Thành phần của một MQTT trong hệ thống IoT

1.3.1.6. Cách thức hoạt động của giao thức MQTT

iao thức MQTT hoạt động theo m hình publish/subcribe theo nhƣ m tả trong hình 1.15 ở phần mục 1.3.1.5 [10]

Trong m hình hoạt động của giao thức MQTT, bên gửi dữ liệu đƣợc gọi là thiết bị publisher và bên nhận đƣợc gọi là thiết bị subcriber. ác thiết bị này còn đƣợc gọi chung là MQTT client. ên cạnh các thành phần publisher và subcriber thì giao thức MQTT sử dụng một thiết bị trung gian đóng vai trò trung chuyển các gói tin gọi là MQTT roker. ể nhận đƣợc th ng tin thì các thiết bị subscriber sẽ gửi th ng báo yêu cầu cung cấp th ng tin (subcribe) theo một chủ đề (topic) nhất định đến MQTT broker. hủ đề là một cái tên để phân biệt các kênh truyền từ các thiết bị publisher khác nhau và có dạng cây A/ / /.../X/Y. Khi một thiết bị publisher gửi th ng báo cung cấp th ng tin

với chủ đề nhất định lên MQTT roker thì MQTT roker sẽ gửi th ng báo đó đến các thiết bị subcriber đã yêu cầu chủ đề đó.

MQTT roker kh ng chỉ đóng vai trò chuyển tiếp các th ng báo từ publisher tới các subcriber dựa trên chủ đề (topic) của th ng báo mà còn đóng các vai trò khác nhƣ duy trì các kết nối giữa các publisher và subcriber tới MQTT roker, phát hiện sự mất kết nối bất thƣờng của các thiết bị, truyền lại các gói tin, chứng thực và phân quyền cho thiết bị mỗi khi gửi th ng báo publish hoặc subcribe tới MQTT roker. Hiện nay có nhiều MQTT roker đƣợc các hãng phát triển nhƣ: Mosquitto MQTT, Verner MQTT, Hivemq, ...

iao thức MQTT là giao thức ở tầng ứng dụng, sử dụng tầng giao vận là giao thức mà đáp ứng 3 yêu cầu đó là: các gói tin đến theo thứ tự, kh ng bị mất mát và kết nối là kết nối 2 chiều (giống nhƣ các đặc điểm của giao thức tầng giao vận T P/ P).

iao thức MQTT có 5 đặc trƣng nổi bật đã tạo nên sự khác biệt so với các giao thức khác.

Thứ nhất, giao thức sử dụng m hình publish/subcribe để chuyển tiếp dữ liệu. M hình này phù hợp với các ứng dụng cần chuyển tiếp th ng báo từ một bên gửi tới nhiều bên nhận.

Thứ hai, việc truyền gói tin từ publisher tới subcriber kh ng liên quan tới nội dung của gói tin.

Thứ ba, giao thức MQTT phân ra 3 mức độ chất lƣợng dịch vụ cho quá trình truyền gói tin từ publisher tới subcriber. Với kiểu dịch vụ truyền nhiều nhất 1 lần, th ng báo từ publisher sẽ đƣợc truyền đến subcriber, tuy nhiên nếu trong quá trình truyền gặp sự cố việc mất th ng báo thì sẽ kh ng có cơ chế truyền lại th ng báo. Với kiểu dịch vụ truyền ít nhất một lần, th ng báo từ publisher sẽ đƣợc đảm bảo truyền đến subcriber, tuy nhiên th ng báo có thể đƣợc gửi đến subcriber nhiều hơn 1 lần do việc gửi lại th ng báo khi gói tin

xác nhận bị mất. Với kiểu dịch vụ truyền chính xác 1 lần, một th ng báo từ publisher sẽ đƣợc gửi đến subcriber chính xác 1 lần.

Thứ tƣ, kích thƣớc tiêu đề của các gói tin MQTT rất nhỏ (các trƣờng cố định có kích thƣớc là 2 byte) so với các giao thức ở tầng ứng dụng khác. iều đó giúp cho giao thức này có thể hoạt động trong các m i trƣờng mạng có tốc độ truyền thấp.

Thứ năm, cơ chế th ng báo khi xảy ra việc kết nối bất thƣờng từ thiết bị publish hoặc subcribe. iao thức MQTT hiện đang đƣợc sử dụng khá rộng rãi trong các ứng dụng oT khác nhau nhƣ Amazon IoT, Microsoft Azure IoT Hub, ứng dụng chat Messenger acebook, .... [10].

1.3.1.7. Ưu điểm của giao thức MQTT

- ây là một giao thức nhẹ. o đó, dễ dàng thực hiện trong phần mềm và nhanh chóng trong việc truyền nhận dữ liệu, ít bị ảnh hƣởng bỡi tốc độ mạng.

- iao thức dựa trên kỹ thuật tin nhắn, vì vậy tốc độ khá nhanh. ói dữ liệu truyền đƣợc tối ƣu hóa.

- Sử dụng nguồn điện năng thấp, tiếp kiệm năng lƣợng cho thiết bị đƣợc kết nối. Thời gian thực, đây là điều đặc biệt quan trọng trong các dự án oT.

1.3.1.8. Bảo mật của giao thức MQTT

MQTT đƣợc thiết kế một cách nhẹ và linh hoạt nhất có thể. o đó nó chỉ có một lớp bảo mật ở tầng ứng dụng: bảo mật xác thực (xác thực các client đƣợc quyền truy cập đến roker). Tuy nhiên, MQTT vẫn có thể đƣợc cài đặt kết hợp với các giải pháp bảo mật đa tầng khác nhƣ kết hợp với VNP ở tầng mạng hoặc SSLL/TLS ở tầng transport. MQTT đƣợc thiết kế nhằm phục vụ truyền th ng machine-to-machine nhƣng trên thực tế chứng minh nó lại hoạt động một cách linh hoạt hơn mong đợi. Nó hoàn toàn có thể áp dụng cho các kịch bản truyền th ng khác nhau: machine to machine, app to app. hỉ cần có một roker phù hợp và MQTT lient đƣợc cài đặt đúng cách, các thiết bị xây

dựng trên nhiều nền tảng khác nhau có thể giao tiếp đƣợc với nhau một cách dễ dàng. iao thức MQTT thực hiện xác thực th ng qua cặp username/ password – tên ngƣời dùng/mật khẩu. Với giao thức kh ng mã hoá, th ng tin này đƣợc gửi đi dƣới dạng chữ – plain text th ng thƣờng.

- Bảo mật khi truyền tải: ảo mật phƣơng thức truyền tải - secure transport: để tăng cƣờng bảo mật, giao thức MQTTs áp dụng mã hoá TLS/SSL lên toàn bộ các th ng tin đƣợc gửi đi (tƣơng tự HTTPs) giữa MQTT roker và lient, bao gồm cả tuỳ chọn yêu cầu client cung cấp chứng chỉ riêng để so sánh với chứng chỉ lƣu tại roker. Việc này sẽ gia tăng mức độ bảo mật nhƣng đồng thời cũng làm tăng đáng kể dung lƣợng truyền tải, dẫn đến tăng thời gian phản hồi, tăng độ trễ, tăng khả năng mất tin và giảm thời lƣợng pin của các thiết bị. ổng – port mặc định của giao thức MQTT là 1883, tuy nhiên roker có thể đƣợc cấu hình để thay đổi các cổng này.

- Bảo mật network: Bảo mật mạng lƣới – secure network: thực hiện giao thức MQTT thông qua các kết nối bảo mật nhƣ VPN, SSH.

- Phân quyền ACL: Phân quyền Topic – MQTT ACL (access control list): MQTT Broker có thể đƣợc cấu hình để cho phép một Client chỉ đƣợc publish và subscribe vào những topic nhất định, dựa trên một danh sách gọi là ACL. anh sách này xác định một ClientID hoặc username đƣợc quyền publish và subscribe vào những topic nào. Mặc định, A L đƣợc thiết lập ở dạng không áp dụng hoặc cho phép tất cả trên hầu hết các MQTT Broker thông dụng.

- MQTT Bridge: Có thể mở rộng hoặc gia tăng bảo mật mạng MQTT hay kết nối nhiều mạng MQTT từ các vị trí cách xa nhau bằng cách xây dựng các MQTT ridge, đóng vai trò vừa là MQTT Broker vừa là lient để chuyển tiếp các th ng điệp. Một trƣờng hợp sử dụng thƣờng thấy là các client trong một khu vực kết nối đến một MQTT Broker qua giao thức MQTT không mã hoá, sau đó MQTT roker này đóng vai trò là MQTT ridge để chuyển tiếp

các th ng điệp đến một Broker khác ở xa thông qua giao thức MQTTs. Bằng cách này, ta có thể xây dựng một mạng MQTT với nhiều vùng riêng biệt và mở rộng không giới hạn.

1.3.2. Giao thức CoAP 1.3.2.1. Giới thiệu 1.3.2.1. Giới thiệu

CoAP (Constrained Applications Protocol): là một giao thức truyền tải tài liệu theo mô hình client/server dựa trên internet tƣơng tự nhƣ giao thức HTTP nhƣng đƣợc thiết kế cho các thiết bị ràng buộc. Giao thức này hỗ trợ một giao thức one-to-one để chuyển đổi trạng thái thông tin giữa client và server [11].

Hình 1.16. Giao thức COAP

1.3.2.2. Một số đặc điểm và tính năng của giao thức COAP

CoAP sử dụng UDP (User Datagram Protocol), không hỗ trợ TCP, ngoài ra còn hỗ trợ địa chỉ broadcast và multicast, truyền thông CoAP thông qua các datagram phi kết nối (connectionless) có thể đƣợc sử dụng trên các giao thức truyền thông dựa trên các gói. UDP có thể dễ dàng triển khai trên các vi điều khiển hơn T P nhƣng các c ng cụ bảo mật nhƣ SSL/TSL kh ng có sẵn, tuy nhiên ta có thể sử dụng DTLS (Datagram Transport Layer Security) để thay thế. CoAP hoạt động theo mô hình client/server. Client gửi yêu cầu đến máy chủ, sau đó máy chủ gửi lại phản hồi. Client có thể GET, PUT, POST và DELETE các tài nguyên. Trong CoAP một nút cảm biến thƣờng là một máy

NAT, thiết bị đầu tiên phải gửi yêu cầu đến máy chủ, nhƣ đƣợc thực hiện trong LWM2M, cho phép các router liên kết chúng lại [11].

Hình 1.17. Hoạt động của giao thức COAP

1.3.3. Giao thức AMQP 1.3.3.1. Giới thiệu 1.3.3.1. Giới thiệu

AMQP (Advanced Message Queue Protocol): Hệ thống hàng đợi nâng cao đƣợc thiết kế để kết nối các máy chủ với nhau (S2S), hay còn gọi là giao thức làm trung gian cho các gói tin trên lớp ứng dụng với mục đích thay thế các hệ thống truyền tin độc quyền và kh ng tƣơng thích [11].

1.3.3.2. Một số đặc điểm và tính năng của giao thức AMQP

- ịnh hƣớng message, hàng đợi, định tuyến (bao gồm point-to-point và publish-subscribe) có độ tin cậy và bảo mật cao. Các hoạt động sẽ đƣợc thực hiện thông qua broker, nó cung cấp khả năng điều khiển luồng (Flow Control). AMQP là một giao thức có dây (wire-protocol), có khả năng diễn tả các message phù hợp với định dạng dữ liệu, có thể triển khai với rất nhiều loại ngôn ngữ lập trình. AMQP có một số tính năng nổi bật: Là giao thức lớp ứng dụng nhị phân, có thể đƣợc sử dụng để nhắn tin Point-to-Point và Xuất bản/ đăng ký, khả năng tƣơng thích rộng với các tình huống nhắn tin, hỗ trợ mã hóa đầu cuối của tin nhắn.

- Giao thức hàng đợi tin nhắn nâng cao: ó độ tin cây cao, thực hiện thông qua Broker, có khả năng điều khiển luồng (Flow Control), RabbitMQ là Message Broker phổ biến, ngôn ngữ Erlang, cung cấp cho lập trình viên

một phƣơng tiện trung gian để giao tiếp giữa nhiều thành phần trong một hệ thống lớn, cho phép diễn tả message phù hợp với định dạng dữ liệu [11].

Hình 1.18. Giao thức AMPQ

1.3.4. Giao thức DSS 1.3.4.1. Giới thiệu 1.3.4.1. Giới thiệu

DDS (Data Distribution Service): Dịch vụ phân bổ dữ liệu, là một ngôn ngữ trung gian dựa vào dữ liệu tập trung đƣợc sử dụng để cho phép khả năng mở rộng, thời gian thực, độ tin cậy cao và trao đổi dữ liệu tƣơng tác, giao thức tốc độ cao cho việc tích hợp máy thông minh (D2D) [11].

1.3.4.2. Một số đặc điểm và tính năng của giao thức DSS

- ƣợc thiết kế cho hệ thống thời gian thực, cung cấp thông báo đăng/ đăng ký, kết nối các thiết bị trực tiếp với nhau, chi phí thấp.

- ho phép trao đổi dữ liệu đáng tin cậy, hiệu suất cao, có thể tƣơng tác, mở rộng bằng cách sử dụng mẫu messsage đăng ký. Sử dụng cho các kịch bản trong hàng kh ng vũ trụ, quốc phòng, kiểm soát kh ng lƣu, phƣơng tiện tự hành, thiết bị y tế, robot, sản xuất điện, hệ thống giao thông và các hệ thống thời gian thực khác [11].

1.3.5. Giao thức XMPP 1.3.5.1. Giới thiệu 1.3.5.1. Giới thiệu

XMPP (Extensible Messaging và Presence Protocol): Trƣớc đây gọi là “Jabber”, là giao thức truyền thông dùng cho định hƣớng tin nhắn trung gian dựa trên ngôn ngữ XML. Giao thức tốt nhất để kết nối các thiết bị với mọi ngƣời, một trƣờng hợp đặc biệt của mô hình D2S [11].

1.3.5.2. Một số đặc điểm và tính năng của giao thức XMPP

- XMPP là mô hình phân quyền client-server phi tập trung, đƣợc sử dụng cho các ứng dụng nhắn tin văn bản. Có thể nói XMPP gần nhƣ là thời gian thực và có thể mở rộng đến hàng trăm hàng nghìn nút.

- Dữ liệu nhị phân phải đƣợc mã hóa base64 trƣớc khi nó đƣợc truyền đi trong băng tần, tƣơng tự nhƣ MQTT, có thể chạy trên nền tảng TCP, hoặc có thể qua HTTP trên TCP. Sức mạnh chính của nó là một chƣơng trình name@domain.comaddressing trong mạng Internet khổng lồ [11].

1.4. Ô G GHỆ WIFI 1.4.1. Giới thiệu.

Wifi (Wireless Fidelity) là một mạng thay thế cho mạng có dây thông thƣờng, thƣờng đƣợc sử dụng để kết nối các thiết bị ở chế độ kh ng dây bằng việc sử dụng c ng nghệ sóng v tuyến. ữ liệu đƣợc truyền qua sóng vô tuyến cho phép các thiết bị truyền nhận dữ liệu ở tốc độ cao trong phạm vi của mạng Wifi. Kết nối các máy tính với nhau, với nternet và với mạng có dây.

Wifi là thuật ngữ dùng chung để chỉ tiêu chuẩn 802.11 cho mạng cục bộ kh ng dây (Wireless Local Networks) hoặc WLANs. Việc sử dụng rộng rãi và tính sẵn có của nó ở nhà và nơi c ng cộng nhƣ c ng viên, quán café,

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số phương pháp giao tiếp giữa các cảm biến và ứng dụng iot trong giám sát thiết bị điện phòng học (Trang 34)