مقایسه MQTT و IEC104
مقایسه MQTT و IEC104

مقایسه MQTT و IEC104

مقدمه

در دنیای اتوماسیون صنعتی و اینترنت اشیاء صنعتی (IIoT)، انتخاب پروتکل مناسب برای ارتباط بین تجهیزات، نقش مهمی در پایداری، امنیت و مقیاس‌پذیری سیستم اسکادا دارد. دو پروتکل پرکاربرد در این زمینه MQTT و IEC104 هستند. هر کدام از این پروتکل‌ها مزایا و محدودیت‌هایی دارند و برای کاربردهای خاصی بهینه شده‌اند.

در این مقاله به مقایسه MQTT و IEC104 پرداخته و از جنبه‌های مختلفی مانند امنیت، انعطاف‌پذیری، کیفیت خدمات (QoS)، قابلیت همکاری، پشتیبانی از ارتباط همتا به همتا و کاربرد در اسکادا و IIoT بررسی خواهیم کرد.

[ez-toc]

مقایسه جامع MQTT و IEC104 در سیستم‌های اسکادا و اینترنت اشیاء صنعتی

این مقایسه MQTT و IEC104 از نظر قابلیت همکاری، سهولت کاربری، امنیت، انعطاف پذیری، قابلیت اطمینان، قابلیتهای همتا به همتا و سایر مزایا یا معایب انجام ميشود.

قابلیت همکاری (Interoperability)

IEC104 به طور خاص برای سیستم‌های اسکادا طراحی شده و از ساختار فریم‌ها و ASDU های متنوعی بهره می‌برد که برای کنترل تجهیزات صنعتی ضروری هستند. در مقابل، MQTT یک پروتکل سبک و مبتنی بر TCP/IP است که به‌طور عمومی برای انتقال داده در اینترنت اشیاء طراحی شده و ساختار استانداردی برای اسکادا ندارد.

پروتکل IEC104 بطور خاص برای سیستمهای اسکادا طراحی شده است، بنابراین سه نوع فریم و بسیاری از انواع ASDU را مهیا ميسازد که برای اهداف خاص در سیستم اسکادا مشخص شده اند. از سوی دیگر MQTT برای اسکادا طراحی نشده است، از این رو انواع پیام خاصی را برای این سیستمها ارائه نميدهد.

یکی دیگر از مزایای قابلیت همکاری IEC 104 آدرس مبدأ است که برای شناسایی مبدا دستورات و غیره استفاده ميشود، در حالی که MQTT به طور ذاتی از چنین چیزی پشتیبانی نميكند. یک راه حل برای این امر این است که منشاء پیام به عنوان بخشی از موضوع باشد، اما از آنجایی که این بصورت یک استاندارد مشخص نشده است، ممکن است برای قابلیت همکاری بد باشد.

انعطاف‌پذیری

MQTT بسیار منعطف‌تر از IEC104 است. در MQTT می‌توان انواع داده‌ها را در قالب موضوعات دلخواه (Topics) ارسال کرد. همچنین امکان تعریف شناسه‌های خاص برای میلیون‌ها نود فراهم است، در حالی‌که IEC104 محدود به 255 آدرس منبع است.

همچنین ذکر این نکته حائز اهمیت است که آدرس مبدأ تنها تا 255 آدرس مبدأ را پشتیبانی ميكند که در صورت نیاز به تعداد بیشتری ممکن است یک نقطه ضعف باشد. اگرچه به علت انعطاف MQTT ميتوان با تعریف ID خاص تا میلیاردها گره و تجهیزات را در کارگزارشبکه IOT مربوطه تعریف نمود.

اگرچه IEC104 بر قابلیت همکاری متمرکز است، هنوز هم با ارائه صدها نوع APDU که می‌توانند به دلایل مختلف ارسال شوند، دارای انعطاف‌پذیری ميباشد. البته میزان قابلیت انعطاف آن به اندازه MQTT نیست (به دلیل فقدان قابلیت همکاری برای سیستم‌های اسکادا، چنین محدودیت‌هایی ندارد). با این حال، با توجه به میزان قابلیت همکاری که برای IEC104 فراهم ميكند، این یک مصالحه ارزشمند است.

در IEC104، ایستگاه کنترل باید انواع APDU حاوی توابع کنترلی بدون شماره را برای شروع یا توقف انتقال داده با یک ایستگاه کنترل‌شده ارسال کند. ایستگاه کنترل‌شده باید این را با ارسال یک APDU با تأیید شروع یا توقف به ترتیب تأیید کند. این به ایستگاه کنترل‌کننده اجازه ميدهد تا اتوریته و درجه اختیار متفاوت تری داشته باشد، زیرا برای جلوگیری از انتقال داده، اتصال لازم نیست متوقف شود.

در MQTT پیامها را ميتوان آزادانه پس از برقراری ارتباط منتشر کرد. با این حال، دریافت داده‌ها را ميتوان با لغو اشتراک از موضوعات مربوطه متوقف کرد. لازم به ذکر است که سرور همچنان دادههایی را دریافت ميكند که در صورتی که دیگر به دادههای آن نیاز نباشد باید با اطلاع رسانی به مشتری ناشر از آن جلوگیری شود. با این حال، نحوه رسیدگی به این مورد مشخص نشده است، از این رو MQTT قابلیت همکاری کمتری در این زمینه ارائه ميدهد.

امنیت داده‌ها

MQTT از TLS/SSL برای رمزنگاری داده‌ها و همچنین احراز هویت با نام کاربری و رمز عبور پشتیبانی می‌کند. در حالی‌که پروتکل IEC104 در نسخه پایه خود مکانیزم امنیتی بومی ندارد و باید در لایه‌های خارجی به آن افزوده شود.

پروتکل IEC104 از TCP استفاده ميكند، در حالیکه MQTT مبتنی بر TCP است فلذا ميتواند از TLS به عنوان یک تمهید امنیتی استفاده کرد. TLS برای رمزگذاری بستههایی که از طریق TCP ارسال ميشوند استفاده ميشود که یک اقدام متقابل برای رهگیری بستهها است. برای MQTT این حتی در مشخصات پیشنهاد شده است. MQTT همچنین استفاده از نام‌های کاربری و رمزهای عبور را مشخص ميكند،

پیشنهادات امنیتی ارائه می‌دهد، از احراز هویت مشتری پشتیبانی ميكند و لیست‌های کنترل دسترسی را پشتیبانی ميكند ، در حالی که IEC104 چیزی قابل مقایسه با این را ارائه نميكند.

کیفیت خدمات (QoS)

MQTT سه سطح کیفیت خدمات (QoS) ارائه می‌دهد:

  • QoS 0: ارسال بدون تضمین دریافت

  • QoS 1: ارسال تا رسیدن تأییدیه

  • QoS 2: تضمین تحویل فقط یک‌بار

در حالی‌که در IEC104 تضمین دریافت با SSN و RSN انجام می‌شود، اما انعطاف MQTT در انتخاب کیفیت خدمات، آن را مناسب برای کاربردهای متنوع از جمله اندازه‌گیری هوشمند می‌سازد.

یکی دیگر از ویژگیهای MQTT سرویس کیفیت خدمات یا QoS است. ویژگی QoS انعطاف پذیری را فراهم ميكند و ميتواند بسته به موارد استفاده، به راحتی مصالحه‌ای بین عملکرد و قابلیت اطمینان انجام دهد. به عنوان مثال، مقادیر (مثلاً مقادیر اندازه گيري شبكه گاز) که اغلب باید مبادله شوند، باید با QoS0 ارسال شوند، مشروط بر اینکه تلفات گاه به گاه قابل قبول باشد. پیام‌هایی که در صورت گم شدن می‌توانند منجر به آسیب جدی شوند (مثلاً هشدارخرابي در شبکه گاز) باید با QoS1 یا QoS2 ارسال شوند.

با این حال، QoS1 تنها در صورتی تکثر پیام قابل استفاده است که ممکن است بسته به مورد استفاده پیچیده باشد.

لازم به ذکر است که در حالی که QoS2 دریافت پیام را تضمین ميكند، این فقط به این معنی است که یک پیام منتشر شده توسط سرور دریافت شده است یا پیامی که توسط سرور ارسال شده است توسط مشترک دریافت شده است. بنابراین مشتری ناشر نمی داند که آیا پیامش توسط مشترکی دریافت شده است یا خیر.

به عنوان مثال، اگر یک مشتری مشترک چندین پیام را برای یک موضوع خاص به دلیل مهلت زمانی از دست بدهد، حداکثر ميتواند آخرین پیامی را که برای موضوع منتشر شده با پرچم حفظ شده روی 1 دریافت کند. برای زمینه، پرچم حفظ شده تضمین ميكند که سرور آخرین پیامی که در مورد موضوع خاصی ارسال شده را ذخیره ميكند. توصیف کامل‌تری از کیفیت خدمات MQTT در پیوست 2 آورده شده است.

IEC104 با ارسال یک SSN و RSN با هر APDU، با اطمینان بیشتری این کار را انجام ميدهد. هر دو پروتكل IEC104 و MQTT، دستورهایی را برای برقراری اتصال ارائه ميكنند. در IEC104، ابتدا یا ایستگاه کنترل کننده اتصال به یک ایستگاه کنترل شده را برقرار ميكند یا در صورت ارتباط همتا به همتا یکی از ایستگاه‌هایی که از طریق یک پارامتر ثایت انتخاب می‌شود اتصال را برقرار ميكند. در IEC104، اتصال با یک توافق سه طرفه برقرار ميشود.

در مقابل MQTT از مشتریان درخواست ميكند که یک پیام اتصال به سرور ارسال کنند که با یک پیام CONNACK پاسخ داده ميشود. پیام CONNACK عددی را نشان ميدهد که نشان دهنده موفقیت یا دلایل مختلفی است که چرا اتصال را رد کرده است.

برای نتیجه گیری، IEC104 روش برقراری اتصال قابل اطمینان تری دارد، در حالی که MQTT یک روش انعطاف پذیرتر دارد، زیرا دلیل شکست اتصال را ميتوان برای تعیین یک واکنش مناسب تجزیه و تحلیل کرد.MQTT همچنین یک ویژگی اراده will را تعریف ميكند. هنگامی که اتصال مشتری پذیرفته شد، یک پیام اراده را ميتوان در سرور ذخیره کرد که در صورت قطع ناخواسته ارتباط با مشتری مربوطه منتشر ميشود.

 این لایه دیگری از قابلیت اطمینان را فراهم ميكند. علاوه بر این، اشتراک در یک موضوع با یک پیام SUBACK توسط گیرنده پاسخ داده ميشود. اگر اشتراک موفقیت آمیز بود، پیام SUBACK حاوی یک کد بازگشتی است که به مشترک اطلاع ميدهد که کدام سطح QoS حداکثر به اشتراک اعطا شده است. اگر اشتراک ناموفق بود، یک کد خطا به جای آن بازگردانده ميشود. این ویژگی همچنین قابلیت اطمینان MQTT را بهبود میبخشد. از سوی دیگر IEC104 نیز ویژگی بهبود قابلیت اطمینان را فراهم ميكند. دستورات باید با تایید اینکه آیا دستور با موفقیت اجرا شده است یا خیر پاسخ داده شود.

ارتباط همتا به همتا (Peer to Peer)

در MQTT مدل ارتباطی انتشار-اشتراک (Pub/Sub) به راحتی امکان ارتباط چند-به-چند و همتا به همتا را فراهم می‌کند. در حالی‌که IEC104 از مدل مرکز کنترل – تجهیزات کنترل‌شونده پیروی می‌کند و P2P واقعی را پشتیبانی نمی‌کند.

IEC104 بر ارتباطات همتا به همتا متمرکز نیست و بنابراین در این زمینه در مقایسه با MQTT توان کمتری دارد، در حالیکه ارتباط همتا به همتا به راحتی با استفاده از میان افزار پیام گرا MQTT قابل دستیابی است. مدل انتشار-اشتراک MQTT و ویژگیهای خاصش، استفاده از آن را آسان ميسازد. علاوه بر این در MQTT، پیاده‌سازی‌های منبع باز مشتری و سرور و همچنین راهنماهای مقدماتی و یک مشخصات باز وجود دارد که هیچکدام از آنها در IEC104 وجود ندارد.

بنابراین، مبتدیان زمان آسان تری با یادگیری MQTT خواهند داشت. اگرچه MQTT ثابت کرده است که در کاربردهای واقعی مفید است و ممکن است برای اسکادا با توجه به IoT جالب باشد. در هر صورت پروتکل IEC104 برتری خود را به عنوان یک پروتکل SCADA ثابت کرده است. خلاصه مقایسه‌های انجام شده در ‏جدول زیر ارائه شده است. همان طور که مشاهده میشود پروتکلMQTT از منظر سهولت استفاده، کیفیت خدمات و امنیت در سطح بالاتری قرار دارد. ضمن اینکه برای کاربردهای IIOT نیز گزینه مناسبی میباشد.

سهولت پیاده‌سازی و منابع آموزشی

پیاده‌سازی MQTT به دلیل وجود کتابخانه‌ها و کلاینت‌های منبع باز (open-source) مانند Mosquitto، Paho و EMQX بسیار ساده است. منابع آموزشی و مستندات فراوانی برای آن وجود دارد. اما پیاده‌سازی IEC104 به دلیل پیچیدگی فریم‌ها و نیاز به هماهنگی با استانداردهای SCADA، نیازمند دانش فنی عمیق‌تری است.

جدول مقایسه MQTT و IEC104

شاخص

IEC104

MQTT

قابلیت همکاری

بالا

پایین

قابلیت انعطاف

پایین

بالا

امنیت

پایین

بالا

مناسب برای اسکادا

بالا

متوسط

مناسب برای IIoT

پایین

بالا

ارتباط همتا با همتا

پایین

بالا

سهولت استفاده

پایین

بالا

کیفیت خدمات (QoS)

پایین

بالا

 

جمع‌بندی

در مجموع، انتخاب بین MQTT و IEC104 بستگی به نوع پروژه دارد:

  • اگر به دنبال پروتکل صنعتی استاندارد برای اسکادا هستید که با RTU و PLCها سازگار باشد، IEC104 گزینه مناسب‌تری است.

  • اما اگر هدف شما یک راهکار منعطف، امن و قابل توسعه برای سیستم‌های IIoT و مانیتورینگ ابری است، MQTT با توجه به پشتیبانی از امنیت، QoS، سهولت پیاده‌سازی و مدل Pub/Sub گزینه‌ای بهتر خواهد بود.

برای پروژه‌های ترکیبی، استفاده هم‌زمان از این دو پروتکل نیز امکان‌پذیر است (با استفاده از Gateway یا Bridge برای ترجمه داده‌ها).

سوالات متداول

آیا MQTT می‌تواند جایگزین IEC104 در سیستم‌های اسکادا شود؟

در پروژه‌های سبک‌تر و جدید، MQTT می‌تواند تا حدی جایگزین شود؛ اما برای پروژه‌های صنعتی قدیمی و تجهیزات کلاسیک، IEC104 هنوز پروتکل استاندارد و قابل اتکاست.

امنیت MQTT در مقایسه با IEC104 چگونه است؟

MQTT با پشتیبانی از TLS، احراز هویت و ACL، امنیت بالاتری نسبت به IEC104 دارد که به تنهایی فاقد مکانیزم رمزنگاری داخلی است.

در چه پروژه‌هایی بهتر است از IEC104 استفاده شود؟

پروژه‌هایی که به تأخیر پایین، کنترل دقیق تجهیزات صنعتی و مطابقت با استانداردهای SCADA نیاز دارند، باید از IEC104 استفاده کنند.

MQTT مناسب چه کاربردهایی است؟

MQTT برای نظارت، مانیتورینگ و ارسال داده از سنسورها در محیط‌های توزیع‌شده، سیستم‌های هوشمند گاز، برق و آب، و سامانه‌های ابری بهترین انتخاب است.

 

دیدگاهتان را بنویسید