[ez-toc]
مقدمه:
در دنیای دیجیتالسازی صنعت و اینترنت اشیاء صنعتی (IIoT)، انتخاب پروتکل مناسب برای تبادل داده، نقش کلیدی در کارایی و پایداری سیستم ایفا میکند. دو پروتکل محبوب OPC-UA و MQTT هر یک مزایا و معماری خاص خود را دارند. در این مقاله به مقایسه کامل این دو پروتکل در زمینههای کلیدی مانند معماری، امنیت، سهولت پیادهسازی، مقیاسپذیری و قابلیت اطمینان میپردازیم.
در مقایسه OPC-UA و MQTT هر دو پروتکل برای بکارگیری در IIoT و کاربردهای صنعتی مانند سامانه های اسکادا متداول بوده و هر کدام ویژگیهای خاص خود را دارند. در اینچا مقایسه ای بین این دو پروتکل ارائه ميگردد. اگرچه OPC-UA یکی از متداولترین پروتکلهای ارتباطی محیطهای صنعتی است. با این حال، اجرای کامل مشخصات گسترده آن بسیار پیچیده است.
از آنجا که OPC-UA بر اساس معماری کلاینت-سروری بنا شده، هنگامی که بسیاری از برنامهها و دستگاههای ناهمگون از تولیدکنندگان مختلف باید به شبکه متصل شوند، پیاده سازی معماری OPC-UA بسیار چالش برانگیز میشود.
با توجه به اهمیت رو به افزایش قابلیت همکاری در IIoT پروتکل MQTT بخاطر ماهیت چابکی و سادگی اش، یک جایگزین مناسب برای OPC‑UA محسوب میشود. استفاده از MQTT موجب تغییرات اساسی در معماری ميشود. الگوی Pub/Sub MQTT سربار کانفیگ مولفهها را کاهش داده و به پهنای باند کمتری برای مخابره نیاز دارد.
خلاصه:
🟢 تعریف کلی و تفاوت در معماری
-
توضیح مدل کلاینت-سرور در OPC-UA
-
معرفی مدل Pub/Sub در MQTT
-
کاربرد هر مدل در کنترل فرایند یا دادههای همزمان
🟢 مزایای کلیدی OPC-UA
-
ساختار شیگرا و مدل اطلاعاتی غنی
-
پشتیبانی از RPC برای کنترل از راه دور
-
مناسب برای اسکادا، تجهیزات قدیمی و شبکههای LAN
-
سازگاری با استانداردهای صنعتی و قابلیت تعامل با تجهیزات متنوع
🟢 مزایای کلیدی MQTT
-
سبک، سریع و چابک با حداقل سربار
-
مناسب برای شبکههای ناپایدار و پهنای باند کم
-
قابلیت QoS، LWT و مدیریت نشست
-
سهولت پیادهسازی و استقلال داده و موضوعات
-
ایدهآل برای ارتباطات ابری و کاربردهای IoT
🟢 امنیت در هر دو پروتکل
-
استفاده مشترک از TCP و TLS
-
تفاوت در پیادهسازی امنیت در کارگزار MQTT و ساختار OPC-UA
🟢 تحلیل هزینه و مقیاسپذیری
-
هزینه کمتر MQTT در شبکههای گسترده با بیش از 100 گره
-
مقیاسپذیری و اقتصادی بودن MQTT در پروژههای IoT کشوری
🟢 جدول مقایسه شاخصها
| شاخص | پروتکل MQTT | پروتکل OPC-UA |
|---|---|---|
| مدل معماری | Pub/Sub | Client-Server |
| سبکی و چابکی | ✅ دارد | ❌ ندارد |
| استقلال داده | ✅ دارد | ❌ ندارد |
| QoS و LWT | ✅ دارد | ❌ ندارد |
| مدیریت نشست | ✅ دارد | ❌ ندارد |
| سهولت پیادهسازی | ✅ دارد | ❌ ندارد |
| سربار | کم | زیاد |
| تنوع ویژگیها | کمتر | بیشتر |
| RPC (فرخوانی عملکرد از راه دور) | ✅ دارد | ✅ دارد |
| مناسب برای شبکههای ناپایدار | ✅ دارد | ❌ ندارد |
| مناسب برای IoT و ابر | ✅ دارد | ❌ ندارد |
| امنیت | ✅ دارد | ✅ دارد |
| یکپارچهسازی با سیستمهای دیگر | ✅ دارد | ✅ دارد |
| اقتصادی بودن بستر | ✅ دارد | ❌ ندارد |
| مقیاسپذیری | ✅ دارد | ❌ ندارد |
مبنای مقایسه و معیارها
مبنای یک مقایسه مطلوب در ابتدا تعیین شاخصها و معیارها است. لذا در ادامه شاخصها بطور اجمالی مرور شده و سپس یک مقایسه جامعتر بین این دو پروتکل ارائه ميشود. هر دو پروتکل شباهتهایی مانند امنیت سایبری داخلی و اتکای آنها به سایر فناوریهای شبکه مانند TCP دارند و در عین حال هرکدام مزایای خاص خود را نیز دارا میباشند که هر یک برای کاربرد خاصی مناسبتر میسازد. بهرحال مقایسه این دو پروتکل فارغ از نوع کاربرد کار آسانی نیست و در واقع سوال پیش رو این است که کدام یک برای کدام کاربرد بهتر عمل ميكند.
لذا برای تصمیم آگاهانهتر هنگام برنامهریزی در هر پروژه لازم است اشراف خوبی به ویژگیها و مزایای هر کدام از این دو پروتکل داشت و در این راستا لازم است که معیارهای مقایسه مشخص باشند.
برخی از این معیارها عبارتند از :
- نوع معماری
- سهولت اجرا و پیاده سازی (خصوصاً سمت مشتری)
- مقیاس پذیری
- مدل و ساختار اطلاعات
- قابلیت اطمینان
- رعایت نکات امنیتی
- سازگاری بیشتر با کاربرد مورد نظر IoT
- سازگاری با فرایند دیجیتالی کردن صنعت
- سهولت یکپارچه سازی
- ارائه سرویس کیفیت خدمات
- سهولت مدیریت داده
- نرخ ارسال داده یا توان عملکردی
- تنوع ویژگیها
مهم ترین وجه تمایز دو پروتکل در معماری آنها ميباشد. معماری انتشار-اشتراک MQTT به طور قابل توجهی با معماری مبتنی بر کلاینت-سروری OPC0-UA متفاوت است. هنگامی که هدف کارایی بالا با حداقل پهنای باند است، مدل Pub/Sub کارآمدتر از پروتکلهای مبتنی بر توافق مانند مدل کلاینت-سروری میباشد.
مدل کلاینت-سروری برای کار با دادههای فرکانس پایین (10 میلی ثانیه و بالاتر) به عنوان مثال کنترل نظارتی عالی است. مدل Pub/Sub برای کار با دادههای با فرکانس بالا (محدوده ۱ تا ۱۰ میلیثانیه) بهعنوان مثال پخش جریانی دادههای همزمان عالی است.
در ادامه ابتدا مروری بر مزایای پروتکل OPC-UA انجام شده است و سپس به مزایای پروتکل MQTT نسبت به OPC-UA پرداخته ميشود.
یکی از جذابیتهای اصلی OPC-UA نسبت به MQTT غنای آن از نظر تنوع ویژگیها ميباشد. برای مثال، مدل شیگرای OPC-UA به سرورها اجازه میدهد تا دادهها، اطلاعات، فرآیندها و سیستمها را بهعنوان اشیاء مدلسازی کرده و آنها را به روشهایی به مشتریان ارائه کنند. یکی دیگر از ویژگیهای منحصر به فرد OPC‑UA، توانایی انجام فراخوانی رویه از راه دور RPCs است که به یک ماشین اجازه ميدهد یک رویه، عملکرد یا متد را در ماشین دیگری فراخوانی کند. این ویژگی برای سیستمهای توزیع شده بسیار مفید است.
به عنوان مثال، یک PLC میتواند یک RPC را به یک PLC پاییندستی دیگری ارسال کند تا بتواند بدون نیاز به چند بار توافق بین کنترلکنندهها، پیکربندی تجهیزات را برای نوع محصول بعدی که خط تولید ميكند آغاز کند. اساساً OPC UA امکان اجرای خدمات پیچیده تری را در شبکه مهیا ميسازد. آخرین نکته برجسته درباره OPC-UA توانمندی آن در کنترل بلادرنگ ميباشد.
کاربرد اصلی OPC UA برای کنترل فرآیند حلقه بسته در یک شبکه محلی LAN است. اگر ما نیاز است که ماشین آلات و تجهیزات خود را در همان محل کارخانه قرار دهیم تا در زمان واقعی با یکدیگر ارتباط برقرار کنند، OPCUA نخستین گزینه ای است که باید در نظر بگیریم. یک نتیجه گیری ميتواند این باشد که این پروتکل برای ادغام با یک سیستم اسکادا مناسب تر است. OPC UA نه تنها سابقه اثبات شده ای برای موارد استفاده اسکادا دارد، بلکه ویژگیها و معماری آن دلایل قوی برای ترجیح آن برای اسکادا هستند.
دلیل خوب دیگری برای استفاده از OPC-UA این است که ما بعضاً نیاز به یکپارچه سازی تجهیزات قدیمی داریم. تجهیزات صنعتی نسبت به بسیاری از دستگاههای IT طول عمر بیشتری دارند و OPC-UA به عنوان اولین پروتکل ارتباطی صنعتی، با در نظر گرفتن این واقعیت طراحی شده، فلذا با این تجهیزات قدیمی هم سازگار ميباشد.
از آنجا که هدف OPC-UA یکسان سازی نحوه تعامل با سازندگان مختلف دستگاههای صنعتی است، این پروتکل راه حلی کامل برای محیطهای صنعتی است که از ارتباط دستگاهها تا قابلیت همکاری آنها را پوشش ميدهد. در این محیطها افزایش مصرف پهنای باند در برابر تمام مزایایی که OPC UA برای ما به ارمغان می آورد چندان حیاتی و بحرانی نیست.
از نظر امنیت، از آنجا که هر دو پروتکل OPC-UA و MQTT از پروتکل انتقال داده مشترک TCP استفاده ميكنند، بخشی از نیازمندیهای امنیتی آنها توسط این پروتکل تامین ميشود. به عنوان مثال OPC-UA پروتکلهای امنیتی WS و SSL مبتنی بر TCP را پشتیبانی ميكند. از سوی دیگر از مکانیزم رمزنگاری XML پروتکل انقال داده http/SOAP هم بهره می برد.
در مقابل بخشی از امنیت MQTT متکی به امنیت کارگزار ميباشد. در هر 2 پروتکل، بخش عمده ای از امنیت در لایه TLS تامین ميگردد، به همین دلیل نیز قابلیتهای گواهی PKI و یا احراز هویتهای مبتنی بر توکنهای Websocket برای هر 2 پروتکل MQTT و OPC-UA وجود دارد. مراجع [18] تا [21] به استفاده از این تمهیدات امنیتی در MQTT میپردازند.
حال جهت تکمیل مقایسه به پروتکل رقیب MQTT پرداخته ميشود. مزیت واقعی MQTT چالاک و چابک بودن آن نسبت به OPC-UA ميباشد. بستههای ارسال شده از طریق MQTT به طور قابل توجهای کوچکتر هستند و به تبع آن نیاز به سربار کمتری دارند، نکته ای که موجب ميشود این پروتکل برای شبکههای محدودشده با پهنای باند محدود، انتخاب بهتری باشد.
MQTT همچنین برای دستگاههایی با منابع کم، شبکههای با پهنای باند محدود و تأخیر بالا یا در برنامههای کاربردی که به انعطاف پذیری این پروتکل نیاز دارند ایدهآل است. این عوامل دلایل اصلی این هستند که چرا MQTT به عنوان پیش فرض دستگاههای IoT مورد چنین استقبال گسترده ای قرار گرفته است. سهولت اجرا نیز یکی دیگر از مزایای اصلی MQTT محسوب ميشود. OPC-UA یک پروتکل سنگین و پیچیده ميباشد که یکپارچه سازی در آن همیشه آسان نیست. بر خلاف OPC UA، امکان پیاده سازی MQTT بسیار آسان است و نیازی به تعریف ساختارهای ثابت یا انواع داده نیست.
MQTT برای تضمین انتقال کامل پیامها با اتصال پایدار از TCP به عنوان پروتکل انتقال استفاده ميكند. از آنجایی که MQTT عمدتاً برای شبکههای ناپایدار طراحی شده است، سه سطح کیفیت خدمات (QoS) 0، 1 و 2 مشخص شده است. این مفهوم تضامین تحویل پیامهای MQTT یک تفاوت برجسته دیگری نسبت به OPC-UA محسوب ميگردد.
در واقع MQTT برای شبکههایی با قابل اعتماد کم مناسب تر ميباشد. MQTT شامل ویژگیهای مفیدی مانند کیفیت خدمات و آخرین وضعیت تائید و ارسال (LWT) است، که به ترتیب مشخص میکنند که یک دستگاه چگونه باید دریافت پیامش را تأیید کند و اگر به هر دلیلی به طور نامطلوب از شبکه جدا شود، چه پیامی باید ارسال كند. ترکیب این مزایا با چابکی ذاتی MQTT از این پروتکل برای عملياتي مانند مدیریت دارایی از راه دور یک گزینه قابل قبول ميسازد.
استفاده از قابلیتهای بکارگیری نشست نیز اجازه ميدهد تا دادهها حتی بیشتر از مدت زمان اتصال مشتری برای مشتریان MQTT باقی بمانند. برای مثال ثبت نام، پیامهای آفلاین یا اطلاعات اضافی ذخیرهشده برای یک مشتری آفلاین در کارگزار، بلافاصله پس از اتصال مجدد مشتری، در دسترس میمانند. یکی دیگر از تفاوتهای اساسی دو پروتکل به حوزه استقلال داده مربوط ميشود. پروتکل MQTT با توجه به نوع داده محدودیتی در سطح مشخصات اعمال نميكند. در نتیجه، پروتکل MQTT میتواند برای انتقال انواع مختلف دادهها استفاده شود.
این استقلال حتی میتواند در مورد عناوين هم صدق کند. فراتر از الزامات قراردادی، عناوین MQTT محدود نیستند. در این پروتکل عناوين پویا هستند و لازم نیست از قبل مشخص یا ایجاد شوند. فقط عنوان هایی وجود دارند که یک مشتری MQTT برای مصرف پیامهای دریافتی با آن موضوع مشتر subscribe شده باشد. اگر پیامی در مورد موضوعی منتشر شود که هیچ مشتری MQTT برای آن subscribe نشده است، کارگزار در نهایت پیام را رد ميكند.
اصل ذخیره سازی و نگهداری پیامها در MQTT برای محیطهای تولید نیز بسیار مفید است. این ویژگی اجازه ميدهد تا یک پیام خاص در موضوعات مختلف ذخیره شود. پیام ذخیره و نگهداری شده تضمین ميكند که هر مشتری که در موضوع مشترک شود بتواند بلافاصله پیام ذخیره شده را دریافت کند.
MQTT پروتکلی است که کدگذاری فیلد داده و محتوای آن برای هر برنامه مختص همان برنامه است. بنابراین وقتی ارتباط پیامها برای یک برنامه ویژه ی مختص آن فیلدهای داده توسعه یافته باشد، پروتکل مناسبی خواهد بود. از آنجا که پروتکل MQTT مبتنی بر کارگزار ميباشد، برای تبادل اطلاعات بین 2 یا چند نرم افزار کاربردی که توسط خودمان تولید شده ایده آل ميباشد. نسخه MQTT 5 نیز امکان انتقال آزادانه فرا اطلاعات (Meta Informations) را دربستههای MQTT و بدون استفاده از بارگذاری ممکن ميسازد. ویژگیهای کاربر، تبادل فرا اطلاعات ساده و موثری را ارائه ميدهد. MQTT 5 برای ارتباطات ابری نیز کاملاً ایده آل ميباشد.
از سوی دیگر، مورد استفاده اولیه برای MQTT برنامه های کاربردی IIoT است. اگر دادهها از مکانهای دور جمعآوری شده و از طریق یک شبکه غیرقابل اعتماد مانند تلفن همراه ارسال ميشوند، MQTT پروتکلی است که اکیداً توصیه میشود.
در همین راستا، به دلیل ویژگی ماهوی کیفیت خدمات در MQTT، ميتوان دریافت پیام توسط منبع نهایی را تضمین کرد، زیرا MQTT ميتواند به تلاش برای ارسال پیام ادامه دهد در حالیکه در اجرای پایه OPC-UA، پیام ممکن است از بین برود. یک مثال عالی از کاربرد MQTT برای درگاههای IoT است که دادههای حسگرها را جمعآوری و آنها را برای تجزیه و تحلیل دادهها و یک نمای کلی از عملکرد خط تولید به سمت ابر هدایت میکنند.
مثالهای کاربردی
فروشندگان صنعتی بزرگ از هر دوی این پروتکلها به شدت برای گسترش ویژگیهای ارتباطی خود استفاده ميكنند. به عنوان مثال، زیمنس پیکربندی سختافزار خود را با OPC-UA انجام ميدهد (به دلیل قابلیت یکپارچه سازی آسانتر آن) و همزمان برای توسعه IIoT یک کتابخانه MQTT را نگهداری ميكند. بطور مشابه شرکت Inductive Automation نیز از OPC UA به عنوان ستون فقرات پلتفرم خود استفاده ميكند، در حالی که به طور همزمان از MQTT برای ارتباطات IIoT و از راه دور بهره می برد.
علیرغم مقایسه های همه جانبه انجام شده، انتخاب بین MQTT و OPC-UA تصمیم ساده ای نیست. هر پروتکل نقش خود را ایفا ميكند و در موارد کاربرد خاص، برتریهای خود را به رخ می کشد. یک شبکه صنعتی بهینه ميتواند از هر دو پروتکل استفاده کند، چرا که وقتی با هم ترکیب شوند، میتوان از نقاط قوت هر یک استفاده کرد و نقاط ضعف آنها را کاهش داد. به همین دلیل بسیار مهم است که از ابتدا، طراحی معماری سیستمها و شبکه با دقت انجام شود. در نظر گرفتن این پروتکلها از همان بدو طراحی، موجب بهره وری بیشتر، قابلیت اطمینان بالاتر و خرابی کمتر ميشود. تنها شرط لازم برای این منظور، داشتن دانش فنی برای انجام کار است.
به طور خلاصه ميتوان مقایسه دو پروتکل را به شرح زير جمعبندی کرد :
- مفاهیم و ویژگیهای MQTT برای استفاده در دیجیتالی کردن حوزه تولید کاملاً مناسب است.
- جداسازی دادهها از طریق یک مؤلفه پیام رسانی مرکزی که MQTT ارائه ميدهد یک مزیت قابل توجه است.
- امنیت را ميتوان با MQTT به همان سرعت و به همان روالي که با OPC-UA پیاده سازی کرد.
- وضعیت مشتری یک ویژگی ضروری و ذاتی اجزای درگیر است و ميتواند به طور بی عیب و نقص از طریق عملکرد MQTT پیاده سازی شود.
- درگاهها ميتوانند در هنگام اتصال دستگاههایی که به پروتکلهای دیگری نیاز دارند به عنوان یکپارچه کننده عمل کنند.
- MQTT برای اینترنت اشیاء صنعتی یا IIoT و شبکههای گسترده در پهنههای جغرافیای زیاد و کشوری مناسب است، کما اینکه در سالهای اخیر به عنوان معروفترین و رایجترین پروتکل در این حوزه شناخته میشود. در حالی که OPC-UA برای محیطهای صنعتی مناسب تر ميباشد.
- از نظر اقتصادی، استفاده و بهره برداری از پروتکل MQTT بسیار مقرون به صرفه تر از OPC-UA ميباشد. لذا در شبکههایی که گرههای کنترلی با بالای 100 عدد می رسند، هزینه بهرهبرداری و استفاده از گرههای صنعتی با پروتکل OPC-UA در مقیاس به MQTT مقرون به صرفه نمیباشد.
بر اساس معیارهایی که در فوق بیان شد، یک مقایسه نسبتاً همه جانبه و کامل تری بین دو پروتکل در جدول زیر ارائه ميشود. همان طور که مشهود است هر دو پروتکل اکثر شاخصها را پشتیبانی میکنند اما پروتکل MQTT از منظر سبکی، کیفیت خدمات، مدیریت نشست، سهولت پیاده سازی، سربار و اقتصادی بودن بستر ارتباطی در سطح بالاتری قرار دارد.
| شاخص | پروتکل MQTT | پروتکل OPC-UA |
| مدل معماری | Pub/Sub | Cleint-server
برای Part 14 : Pub/Sub |
| سبکی و چالاکی | ساده | پیچیده |
| استقلال داده | دارد | ندارد |
| سطوح کیفیت خدمات | دارد | ندارد |
| LWT(اعلام آخرین وضعیت تائید و ارسال ) | دارد | ندارد |
| مدیریت نشست | دارد | ندارد |
| سهولت پیاده سازی | دارد | ندارد |
| سربار | کمتر | بیشتر |
| تنوع ویژگی | ندارد | دارد |
| RPCs (ارسال فرمان از پلتفرم به دستگاه) | دارد | دارد |
| شبکههای ناپایدار (قابلیت اعتماد کم) | دارد | ندارد |
| شبکههای دارای محدودیت | دارد | ندارد |
| امنیت | دارد | دارد |
| یکپارچه سازی | دارد | دارد |
| تناسب با IIoT و ارتباطات ابری | دارد | ندارد |
| قابلیت اقتصادی بودن بستر ارتباطی | دارد | ندارد |
| مقیاسپذیری | دارد | ندارد |
| قابلیت انعطاف | دارد | ندارد |
