شبیه سازی و تحلیل شبکه های IoT LoRaWAN با NS3
در این مقاله آموزشی نحوه نصب و اجرای شبیه سازی و تحلیل شبکه های IoT LoRaWAN با نرم افزار NS3 را با شما علاقه مندان به مباحث شبکه به اشتراک می گذاریم که در ادامه توضیحاتی از معرفی پروتکل LoRa و شبکه LoRaWAN ارائه شده و آموزش نصب و اجرای یک مثال نمونه در محیط NS3 قرار داده شده است.
پروتکل LoRa
پروتکل LoRa یا long range یک تکنیک انحصاری شبکه گسترده کم توان است که بر اساس روش های مدولاسیون طیف گسترده عمل می کند و برگرفته شده از فناوری CSS یا chirp spread spectrum می باشد. پروتکل LoRa انتقال دوربرد با مصرف انرژی کم را فعال می کند و لایه فیزیکی را پوشش می دهد، در حالی که سایر فناوری ها و پروتکل ها مانند شبکه وسیع برد بلند (LoRaWAN) لایه های بالایی را پوشش می دهند[1]. یکی از پارامترهای کلیدی مدولاسیون LoRa ضریب انتشار (SF) است. این مقدار که از 7 تا 12 متغیر است، میزان پخش بسته را در زمان نشان می دهد. انتقال هایی که از SF پایین استفاده می کنند به زمان کمتری در هوا (با فرض پهنای باند یکسان) نسبت به بسته هایی که از مقادیر SF نزدیک تر به 12 استفاده می کنند، نیاز دارند. مزیت استفاده از SF های بالاتر در افزایش حساسیت گیرنده است. انتقال با استفاده از SF7 که توسط گیرنده LoRa قابل شناسایی نیست، اگر با استفاده از SF12 انجام شود، ممکن است به درستی دمودوله شود. یکی دیگر از ویژگی های کلیدی مدولاسیون، شبه متعامد بودن آن بین ارسال ها با استفاده از مقادیر SF مختلف است. حتی اگر دو بسته در یک زمان با هم همپوشانی داشته باشند، یک گیرنده ممکن است همچنان بتواند یکی از بسته ها را تغییر دهد. با فرض اینکه آنها از SF های مختلف استفاده می کنند، برخی محدودیت ها در قدرت متقابل آنها رعایت می شود[4].
شبکه LoRaWAN
اتحاد LoRa ابتدا استاندارد LoRaWAN را با هدف ایجاد یک طرح دسترسی متوسط و مجموعه ای از سیاست های مدیریت شبکه تعریف کرد که از ویژگی های مدولاسیون برای دستیابی به عملکرد مناسب شبکه با قیمت پایین در پیچیدگی دستگاه ها استفاده می کند. سه نوع دستگاه در یک شبکه LoRaWAN وجود دارد که شامل دستگاه های پایانی (EDs)، دستگاه دروازه ای (Gateways) و یک سرور شبکه (NS) است. دستگاه های نهایی نود های شبکه اصلی هستند. این دستگاه ها معمولا ارزان هستند و به دلیل قابلیت های محاسباتی کم محدود می شوند و معمولا توسط باتری تغذیه می شوند. دروازه ها (GWs) دستگاه هایی هستند که از شبکه تغذیه می کنند و وظیفه جمع آوری داده های ارسال شده توسط دستگاه های پایانی (EDs) با استفاده از مدولاسیون LoRa را بر عهده دارند. پس از دریافت صحیح یک بسته، از طریق لینکی با قابلیت اطمینان و سرعت بالا به سرور شبکه ارسال می شود. سرور شبکه به عنوان یک سینک برای داده های دریافتی از همه دستگاه ها به عنوان یک کنترل کننده شبکه عمل می کند که می تواند از برخی دستورات MAC برای تغییر تنظیمات انتقال در دستگاه های پایانی استفاده کند[4].
دستگاه های پایانی از ابتدایی ترین نوع به عنوان دستگاه های کلاس A تعریف می شوند و در حال حاضر تنها نوع دستگاهی هستند که توسط این ماژول پشتیبانی می شود. دستگاه های کلاس A انتقال را به روشی کاملاً ناهمزمان انجام می دهند و دو پنجره دریافت با مدت زمان ثابت را پس از هر ارسال باز می کنند تا به سرور شبکه اجازه دهد که تأییدیه ها یا دستورات MAC را ارسال کند[4]. یکی دیگر از ویژگی های مهم این استاندارد این است که برای کار بر روی باند های بدون مجوز در مناطق مختلف تعریف شده است که معمولاً فرستنده ها را مشمول مقررات مربوط به چرخه کار می کنند. این واقعیت با جزئیات بیشتری در بخش مدل لایه MAC این سند توضیح داده خواهد شد[4].
شکل ساختار یک شبکه LoRaWAN
ماژول LoRaWAN در شبیه ساز NS3
این یک ماژول ns-3 است که می تواند برای انجام شبیه سازی شبکه LoRaWAN استفاده شود. این ماژول توسط Davide Magrin و Martina Capuzzo از آزمایشگاه Signet در بخش مهندسی اطلاعات دانشگاه پادووا، تحت نظارت Lorenzo Vangelista، Marco Centenaro، Andrea Zanella و Michele Zorzi توسعه یافته است. این ماژول شامل مجموعه ای از کلاس ها و مثال ها با هدف مدل سازی مدولاسیون و فناوری دسترسی به یک شبکه LoRaWAN است. به لطف یک مدل لایه فیزیکی زیر بنایی ساده و قوانین تحمیل شده بر ترافیک در باند های بدون مجوزی که این فناوری روی آنها کار می کند، این ماژول می تواند از شبیه سازی هایی پشتیبانی کند که در آن تعداد زیادی دستگاه به ندرت به کانال بی سیم دسترسی دارند. جدای از مدل هایی که اجزای مختلف شبکه را نشان می دهند و کمک کننده هایی برای راه اندازی آنها ارئه می شود، این ماژول با یک ردیاب بسته در دسترس است که عملکرد شبکه را نظارت می کند و با قابلیت هایی که دارد گزارشی از توپولوژی شبکه برای اشکال زدایی آسان و نظارت بر شبیه سازی ارائه می دهد. همچنین نمونه های مختلفی از پیکربندی های شبکه ساده تا پیچیده نیز ارائه می شود[2].
نصب ماژول LoRaWAN تحت NS3
مرحله اول: نرم افزار ns-3.35 را با هر روشی به انتخاب خود نصب کنید.
مرحله دوم: کلون ماژول LoRaWAN ns-3 از GitHub
1 2 3 4 5 | #change to the src folder of your ns-3 installation $ cd ./ns-allinone-3.35/ns-3.35/src #Clone the project from GitHub $ git clone https://github.com/signetlabdei/lorawan ./lorawan |
دستور بالا یک پوشه lorawan را در زیر پوشه src ایجاد می کند و پروژه LoRaWAN را در آن کلون می کند. تصویر زیر کلونینگ موفق را نشان می دهد:
مرحله سوم: پیکربندی waf و آماده سازی سیستم
1 2 3 4 5 | #change to the ns-3.35 folder $ cd ./ns-allinone-3.35/ns-3.35/ #Configure Waf $ ./waf configure –enable-examples |
دستور بالا سیستم را برای پیکربندی آماده می کند و خروجی هایی مانند شکل زیر را پس از موفقیت تولید می کند.
مرحله چهارم: کامپایل ns-3
1 2 | #compile ns-3 $ ./waf |
دستور بالا ns-3 را با ماژول LoRaWAN تازه اضافه شده کامپایل می کند و خروجی هایی مانند نمونه زیر را با موفقیت ایجاد می کند.
تست ماژول LoRaWAN ns-3
در این بخش اجرای simple-network-example.cc یک مثال را آزمایش می کنیم.
1 | $ ./waf –run simple-network-example |
تصویر زیر اجرای موفقیت آمیز شبیه سازی را نشان می دهد و عملکرد مناسب ماژول LoRaWAN ns-3 تازه نصب شده را ثابت می کند.
اجرای مثال ADR
دستور زیر شبیه سازی نمونه الگوریتم نرخ داده تطبیقی (ADR) را اجرا می کند. این برنامه یک شبکه ساده ایجاد می کند که از یک الگوریتم ADR برای راه اندازی Spreading Factors (SF) دستگاه ها در شبکه استفاده می کند.
1 | $ ./waf –run adr-example |
این مثال یک شبیه سازی 24000 ثانیه ای را اجرا می کند و تصویر زیر اجرای موفقیت آمیز شبیه سازی را نشان می دهد.
حالت گرافیکی این سناریو در محیط NetAnim به شکل زیر است:
حالت انیمیشن از شبکه بالا
تصویری متحرک از همان سناریوی نمونه در گیف زیر قابل مشاهده است. در خروجی زیر گره های GW به درستی رندر نمی شوند. برای نشان دادن گره GW باید از یک تصویر مناسب استفاده کنیم.
شبیه سازی شبکه LoRaWan ساده با IoT-ED های ثابت
در تصویر زیر خروجی همان اسکریپت نمونه (با کمی تغییر) را مشاهده می کنید. در اینجا ما فقط از یک گره GW استفاده می کنیم و اکنون گره GW با یک تصویر مناسب به درستی رندر می شود.
شبیه سازی شبکه LoRaWan ساده با IoT-ED های متحرک
در تصویر زیر خروجی همان اسکریپت نمونه (با کمی تغییر بیشتر) قابل مشاهده است. در این محیط ما LoT-ED ها را به حرکت در می آوریم، به طوری که آن را به عنوان یک شبکه LoRaWAN متحرک تبدیل می کنیم.
مصرف انرژی در شبکه LoRaWan با 50 IoT-ED
تصویر زیر انرژی مصرف شده توسط 50 ED IoT را در پایان شبیه سازی 1200 ثانیه ای نشان می دهد.
خروجی Gnuplot زیر مصرف انرژی را در طول زمان درED(0) نشان می دهد.
همچنین خروجی Gnuplot زیر مقایسه مصرف انرژی در طول زمان را درED(0) وED(1) نشان می دهد.
منابع
- https://en.wikipedia.org/wiki/LoRa
- https://apps.nsnam.org/app/lorawan
- https://github.com/signetlabdei/lorawan
- https://signetlabdei.github.io/lorawan-docs/models/build/html/lorawan.html
هیچ نظری ثبت نشده است