MQTT [1] (پیام تله متری حمل و نقل پیام) یک استاندارد ISO (ISO / IEC PRF 20922) [2] پروتکل پیام رسانی مبتنی بر اشتراک است. این در بالای پروتکل TCP / IP کار می کند. این است که برای ارتباط با مکان های از راه دور طراحی شده است که در آن “رد پای کوچک کد” مورد نیاز است و یا پهنای باند شبکه محدود است. الگوی پیام تبادل اشتراکی نیاز به یک Broker پیام دارد.
اندی استنفورد کلارک از IBM و Arlen Nipper از Cirrus Link نخستین نسخه پروتکل را در سال 1999 راه اندازی کرد. [3]
در سال 2013، آی بی ام MQTT v3.1 را به سازمان خصوصی سازی OASIS با یک منشور مبنی بر اطمینان از اینکه تنها تغییرات جزئی به مشخصات می تواند پذیرفته شود، ارائه کرد. [4] MQTT-SN [5] تغییراتی است از پروتکل اصلی که با هدف جاسازی دستگاه ها در شبکه های غیر TCP / IP مانند ZigBee است.
از لحاظ تاریخی، “MQ” در “MQTT” از خط تولید سری پیام های سری MQ سری IBM آمده است. [6] با این حال، صف بندی خود را به عنوان یک ویژگی استاندارد در تمام شرایط پشتیبانی نمی شود. [7]
پروتکل های جایگزین عبارتند از پروتکل پیاده سازی پیام پیشرفته (AMQP)، پروتکل پیامرسانی جریان متن (STOMP)، پروتکل درخواست محدود IETF، [8] XMPP، [9] [10] DDS، [11] OPC UA [12] و پروتکل پیام های کاربردی وب (WAMP).
یک سیستم MQTT شامل مشتریانی است که با یک سرور ارتباط برقرار می کنند، اغلب به عنوان “کارگزار” نامیده می شود. یک مشتری ممکن است ناشر اطلاعات یا یک مشترک باشد. هر مشتری می تواند به کارگزار متصل شود.
اطلاعات در سلسله مراتب موضوعات قرار گرفته است. هنگامی که یک ناشر یک آیتم جدید از داده ها برای توزیع فراهم می کند، یک پیام کنترل را با داده ها به کارگزار متصل ارسال می کند. سپس کارگزار اطلاعات را به هر مشتریانی که به این موضوع مشترک شده اند، توزیع می کند. ناشر نیازی به داشتن اطلاعاتی درباره تعداد یا مکان مشترکین نداشته باشد، و مشترکان به نوبه خود نباید با هیچ داده ای درباره ناشران پیکربندی شوند.
اگر یک بروکر موضوعی را دریافت کند که مشترکان فعلی وجود نداشته باشد، موضوع را رها نخواهد کرد، مگر اینکه ناشر نشان دهد موضوع باید حفظ شود. این به مشترکین جدید اجازه می دهد که یک موضوع را برای دریافت بیشترین مقدار فعلی به جای انتظار برای بروزرسانی بعدی از ناشر دریافت کنند.
هنگامی که یک مشتری انتشاری برای اولین بار به کارگزار متصل می شود، می تواند پیام پیش فرض را برای مشترکین ارسال کند، اگر کارگزار تشخیص دهد که مشتری ناشر غیر منتظره از کارگزار جدا شده است.
مشتریان تنها با یک کارگزار ارتباط برقرار می کنند، اما یک سیستم ممکن است شامل چند سرور کارگزار باشد که مبادله داده ها بر اساس موضوعات مشترکین فعلی خود باشد.
یک پیام کنترل حداقل MQTT می تواند به اندازه دو بایت داده باشد. یک پیام کنترل می تواند تقریبا 256 مگابایت اطلاعات را در صورت نیاز حمل کند. چهارده نوع پیام تعریف شده استفاده شده برای اتصال و قطع یک مشتری از کارگزار، برای انتشار داده ها، تایید دریافت داده ها و نظارت بر ارتباط بین سرویس گیرنده و سرور وجود دارد.
MQTT به پروتکل TCP برای انتقال داده متکی است. یک نوع، MQTT-SN، بیش از دیگر حملات مانند بلوتوث استفاده می شود.
MQTT اعتبار اتصال را در قالب متن ساده ارسال می کند و شامل هیچ گونه اقدام امنیتی یا احراز هویت نمی شود. این می تواند توسط حمل و نقل اساسی TCP با استفاده از اقدامات برای محافظت از یکپارچگی اطلاعات منتقل از رهگیری یا تکثیر فراهم شود.
پروژه های متعددی وجود دارد که MQTT را اجرا می کنند. مثالها عبارتند از:
فیس بوک مسنجر فیس بوک از جنبه های MQTT در Facebook Messenger برای چت آنلاین استفاده کرده است. [14] با این حال، مشخص نیست که چقدر از MQTT استفاده می شود یا برای چه.
مقیاس پذیر IECC، آخرین نسخه DeltaRail از سیستم کنترل سیگنالینگ IECC، از MQTT برای ارتباطات در قسمت های مختلف سیستم و سایر اجزای سیستم سیگنال استفاده می کند. این چارچوب ارتباطی پایه برای یک سیستم که مطابق با استانداردهای CENELEC برای ارتباطات ایمن حساس است، فراهم می کند. [15]
پلت فرم EVRYTHNG IoT از MQTT به عنوان یک پروتکل M2M برای میلیون ها محصول متصل استفاده می کند.
Amazon Web Services اعلام آمازون IoT بر اساس MQTT در سال 2015. [16] [17]
مشخصات استاندارد استاندارد سنسورهای کنسرسیوم Geospatial Consortium SensorThings API دارای یک افزونه MQTT در استاندارد به عنوان یک پروتکل الحاقی پیام اضافی است. این در وزارت خزانه داری ایالات متحده وزارت دفاع IoT Pilot نشان داده شد [18]
سرویس های OpenStack Upstream Infrastructure با یک MACTT یک پیام پیام متصل با Mosquitto به عنوان کارگزار MQTT متصل می شوند. [19]
Adafruit یک سرویس ابری MQTT رایگان برای آزمایشکنندگان IOT و زبان آموزان به نام Adafruit IO را در سال 2015 راه اندازی کرد. [20] [21]
مایکروسافت Azure IoT Hub با استفاده از MQTT به عنوان پروتکل اصلی خود برای پیام های تله متری می باشد. [22]
XIM، Inc. یک مشتری MQTT به نام MQTT Buddy را در سال 2017 راه اندازی کرد. [23] [24] این برنامه MQTT برای آندروید و iOS است، اما نه F-Droid، کاربران در زبان های انگلیسی، روسی و چینی در دسترس هستند.
گره Node-RED از نسخه های 0.14 پشتیبانی می کند از گره های MQTT برای درست کردن اتصالات TLS. [25]
صفحه اصلی اتوماسیون نرم افزار منبع باز صفحه اصلی دستیار MQTT فعال است و چهار گزینه برای کارگزاران MQTT ارائه می دهد. [26] [27]
چارچوب اتوماسیون اتوماتیک خانه برای Raspberry Pi و بر اساس Node.js پلاگین MQTT را ارائه می کند که به طور کامل پشتیبانی پروتکل MQTT را ارائه می دهد. [28]
McAfee OpenDXL مبتنی بر MQTT است با پیشرفت هایی به خود کارگزاران پیام رسانی، به طوری که آنها می توانند در قالب فرمت پیام DXL به طور ذاتی در پشتیبانی از ویژگی های پیشرفته مانند خدمات، درخواست / پاسخ (پیام نقطه به نقطه)، شکست خدمات و سرویس مناطق.