fbpx

MQTT (Message Queuing Telemetry Transport)

Орчин үеийн IoT (Internet of Things) болон бодит цагийн мэдээлэл солилцооны системүүдэд өгөгдлийг хурдан, найдвартай дамжуулах шаардлага улам нэмэгдэж байна. Энэ хэрэгцээнд зориулан бүтээгдсэн хамгийн түгээмэл протоколуудын нэг нь MQTT юм.
MQTT (Message Queuing Telemetry Transport) нь TCP дээр ажилладаг, publish/subscribe загвартай мессежний протокол. Publish/subscribe загвартай мессежийг дамжуулахад ашигладаг сүлжээний протокол юм.

MQTT протоколыг анх 1999 онд IBM компани боловсруулсан бөгөөд тухайн үед зорилго нь алслагдсан байршилд байрлах төхөөрөмжүүд (жишээ нь газрын тосны хоолойн мэдрэгчүүд)-ээс бага bandwidth ашиглан, тасалдалтай сүлжээгээр найдвартай өгөгдөл дамжуулах явдал байв. Тухайн үед интернэт тогтвортой биш, өндөр өртөгтэй байсан тул хөнгөн, энгийн протокол шаардлагатай байсан юм.

MQTT-ийг IBM-ийн Andy Stanford-Clark болон Eurotech компанийн Arlen Nipper нар хамтран зохион бүтээсэн. Протокол нь энгийн бүтэцтэй, TCP/IP дээр суурилсан, publish/subscribe загвартай байсан нь түүнийг аж үйлдвэрийн орчинд хурдан нэвтрэх боломжийг бүрдүүлсэн.

Дараа нь MQTT нь нээлттэй стандарт болж, олон нийтэд өргөн хэрэглэгдэх болсон бөгөөд 2014 онд OASIS байгууллагаар стандартчилагдаж, улмаар 2016 онд албан ёсоор ISO/IEC 20922 нэртэй олон улсын стандарт болсон. Ингэснээр MQTT нь үйлдвэрлэгчээс хараат бус, урт хугацаанд тогтвортой ашиглагдах, дэлхий даяар хүлээн зөвшөөрөгдсөн протокол болсон юм.

Өнөөдөр MQTT нь IoT, cloud систем, аж үйлдвэрийн автоматжуулалт зэрэг салбаруудад де-факто стандарт болон өргөн хэрэглэгдэж байна.

MQTT хэрхэн ажилладаг вэ?

MQTT нь уламжлалт client–server загвараас өөр, publish / subscribe (нийтлэх / захиалах) архитектурт суурилсан протокол юм. MQTT систем нь дараах 3 үндсэн бүрэлдэхүүнтэй.

1. Broker

Broker нь MQTT системийн төв хэсэг бөгөөд бүх мессежний урсгалыг удирдан зохицуулдаг.

Broker-ийн үүрэг:

  • Publisher-ээс ирсэн мессежийг хүлээн авах
  • Topic-д нь тохирсон subscriber-үүдэд дамжуулах
  • Клиентүүдийн холболтыг удирдах
  • Аюулгүй байдал (authentication, authorization) шалгах
  • QoS, retained message, will message зэрэг механизмуудыг хэрэгжүүлэх

Клиентүүд хоорондоо шууд харилцахгүй, бүх мессеж broker-оор дамжина.

2. Publisher

Publisher нь broker руу мэдээлэл илгээдэг клиент юм.

Publisher нь:

  • Мессежийг topic-д холбон илгээнэ
  • Subscriber хэн байхыг мэдэх шаардлагагүй
  • Зөвхөн broker-тэй холбогдоно

3. Subscriber

Subscriber нь тодорхой topic-д бүртгүүлж (subscribe), тухайн topic дээр ирэх мессежийг хүлээн авдаг клиент юм.

Subscriber нь:

  • Нэг эсвэл олон topic-д бүртгүүлж болно
  • Wildcard (+#) ашиглан олон topic сонсож чадна
  • Мессеж ирэхийг broker автоматаар push хийнэ

4. Topic

Topic гэдэг нь MQTT доторх мессежний логик суваг юм. MQTT Broker-оор холбогдсон client-уудад зориулсан мессежийг шүүх зорилгоор ашигладаг мөр юм. URL замтай адил налуу зураасаар “/” тусгаарлагдсан, шаталсан бүтэцтэй байна.

ҮзүүлэлтMQTTHTTP
ЗагварPub/SubRequest/Response
BandwidthБагаИх
Real-timeМаш сайнДунд
IoTТохиромжтойТохиромжгүй

MQTT аюулгүй байдал

MQTT нь анх хөнгөн, энгийн байдлаар бүтээгдсэн ч өнөөдөр үйлдвэрлэлийн болон enterprise түвшний аюулгүй байдлын шаардлагуудыг бүрэн хангах боломжтой болсон. Broker болон client хоорондын харилцааг хамгаалахад дараах механизмуудыг өргөн ашигладаг.

TLS / SSL шифрлэл

  • Клиент ↔ Broker хооронд дамжих бүх өгөгдлийг шифрлэнэ
  • Network дээр мэдээлэл тагнах, өөрчлөх эрсдэлийг бууруулна

Username / Password баталгаажуулалт

  • Клиент бүрийг нэвтрэх үед шалгана
  • Broker түвшинд authentication хийж, зөвшөөрөлгүй холболтыг хаана
  • Энгийн системд хурдан хэрэгжүүлэхэд тохиромжтой

ACL (Access Control List)

  • Клиент аль topic-д publish эсвэл subscribe хийх эрхтэйг заана
  • Аюулгүй байдлыг логик түвшинд хангана

Certificate-based authentication

  • Username/password-аас илүү найдвартай
  • TLS сертификатаар клиентүүдийг танина
  • Том хэмжээний IoT систем, cloud орчинд түгээмэл хэрэглэгддэг

MQTT нь бага нөөцтэй төхөөрөмжүүдэд зориулагдсан, CPU, санах ой болон сүлжээний зурвасыг маш бага ашигладаг хөнгөн протокол юм. Мессеж дамжуулалтын QoS түвшнүүд болон тасалдалд тэсвэртэй архитектурын ачаар өгөгдлийг найдвартай, хурдан дамжуулах боломжийг олгодог. Мөн publish/subscribe загварт суурилсан тул системийг өргөтгөхөд хялбар бөгөөд олон мянган төхөөрөмжийг нэг broker-т зэрэг холбож, төвлөрсөн байдлаар удирдах боломжтой. Push механизм дээр тулгуурлан ажилладаг учраас мэдээлэл бодит цагт шууд дамждаг нь MQTT-ийг real-time системүүдэд хамгийн тохиромжтой протоколуудын нэг болгож байна.

Leave a Reply