02 آبان LoRaWAN چیست؟
لورا(LoRa) ، یک تکنیک مدولاسیون بیسیم است که از فناوری Chirp Spread Spectrum (CSS) مشتق شده است. استفاده از این تکنیک باعث شده است که امواج مدوله شده توسط لورا در برابر اختلالات مقاوم و با مصرف توان کم، در فواصل دور قابل دریافت باشد. لورا برای برنامه هایی ایده آل است که قصد دارند تکههای کوچک داده را با نرخ ارسال پایین، انتقال دهند. از اینرو لورا برای سنسورها و محرکهایی که در حالت کم مصرف کار میکنند مناسب میباشد و میتواند برای شناسایی و ردیابی مکان افراد و داراییها در مقیاسهای بزرگ استفاده شود.
اتحادیه لورا برای پشتیبانی از پروتکل LoRaWAN در سال 2015 میلادی ایجاد و در 7 دسامبر 2021 رسماً به عنوان یک استاندارد برای شبکههای گسترده کم مصرف (LPWAN) توسط اتحادیه بین المللی مخابرات (ITU) تأیید شد.
LoRaWAN یک پروتکل لایه کنترل دسترسی رسانه (MAC) است که بر روی مدولاسیون LoRa ساخته شده و وظیفه تنظیم پارامترها و قالب پیام در هنگام ارسال و دریافت سیگنالهای مدوله شده را دارد. تعداد اعضای اصلی توسعه این شبکه موسوم به LoRa Alliance هماکنون بیش از ۵۰۰ شرکت است. در این میان نامهای بزرگی مانند Google، CISCO، IBM، Alibaba، Orange، ZTE، Schneider، SwissCom، Softbank، SK Telecom، ARM به چشم میخورد.
مزایا و ویژگی های لورا
بسیار کم مصرف: دستگاههای LoRaWAN برای کار در حالت کم مصرف بهینه شدهاند و میتوانند تا 10 سال با یک باتری سکهای کار کنند. این دستگاهها در هنگام ارسال پیام، حدود 50 میلیآمپر جریانکشی دارند در حالیکه هنگام گوش دادن حدود 12 میلی آمپر و در حالت خواب، حدود 2 میکروآمپر مصرف جریان آنها خواهد بود.
برد زیاد: گیتویهای LoRaWAN می توانند سیگنال ها را در فاصله بیش از 10 کیلومتر در مناطق روستایی و تا 3 کیلومتر در مناطق شهری متراکم ارسال و دریافت کنند.
عمق نفوذ بالا: شبکههای LoRaWAN میتوانند پوشش عمیق داخلی را فراهم کنند و به راحتی در ساختمانهای چند طبقه پوشش شبکه مناسب را فراهم سازند.
طیف بدون مجوز: برای استقرار یک شبکه LoRaWAN نیازی به پرداخت هزینههای گران مجوز طیف فرکانسی ندارید و در باندهای فرکانسی آزاد قابل استفاده است.
موقعیت جغرافیایی: یک شبکه LoRaWAN می تواند مکان دستگاههای انتهایی را با استفاده از مثلثبندی، بدون نیاز به GPS تعیین کند. بدین صورت که اگر حداقل سه گیتوی سیگنال یک دستگاه را دریافت کنند، میتوان موقعیت آن را تخمین زد.
استقرار عمومی و خصوصی: استقرار شبکههای عمومی و خصوصی LoRaWAN با استفاده از سختافزار (گیتویها، دستگاههای پایانی، آنتنها) و نرمافزارهای مشابه (نرمافزار ایستگاه پایه، پشتههای LoRaWAN برای دستگاههای پایانی)، آسان است.
امنیت سرتاسری: با استفاده از رمزگذاری AES-128، ارتباط امن بین دستگاه انتهایی شبکه و سرور را تضمین میکند.
بهروزرسانی فیرمویر از راه دور: میتوانید از راه دور میانافزار را برای یک دستگاه نهایی یا گروهی از دستگاههای پایانی بهروزرسانی کنید.
رومینگ: دستگاه های پایانی میتوانند بصورت یکپارچه از یک شبکه به شبکه دیگر منتقل شوند.
کم هزینه: زیرساخت حداقل، گرههای پایانی کم هزینه و نرم افزار منبعباز[1]، این تکنولوژی را نسبت به راهکارهای مشابهی همچون NB-IoT، به شدت کم هزینهتر مینماید.
برنامه صدور گواهینامه: برنامه صدور گواهینامه LoRa Alliance دستگاههای نهایی را تأیید میکند و به کاربران نهایی اطمینان میدهد که دستگاهها قابل اعتماد و مطابق با مشخصات LoRaWAN هستند.
اکوسیستم: دارای اکوسیستم بسیار بزرگی از سازندگان دستگاه، سازندگان گیتوی، سازندگان آنتن، ارائه دهندگان خدمات شبکه و توسعهدهندگان برنامه است.
برخی کاربردهای مهم
در این بخش چند کاربرد مهم لورا که توسط شرکت Semtech ارائه شده است، ذکر کردهایم تا به شما بینشی در مورد نحوه اعمال LoRaWAN ارائه دهد:
نظارت بر زنجیره سرد واکسن: حسگرهای LoRaWAN برای اطمینان از نگهداری واکسنها در دمای مناسب در حین انتقال استفاده میشوند.
حفاظت از حیوانات: حسگرهای ردیاب، گونههای در خطر انقراض مانند کرگدن سیاه و پلنگ آمور را رصد میکنند.
مزارع هوشمند: نظارت لحظهای بر دما و رطوبت خاک، موجب ایجاد یک برنامه آبیاری بهینه میشود. همچنین مصرف آب تا 30 درصد کاهش مییابد.
صرفه جویی در آب: شناسایی و تعمیر سریعتر نشتیها در شبکه آب یک شهر.
ایمنی مواد غذایی: نظارت بر دما، حفظ کیفیت مواد غذایی را تضمین میکند.
سطل زباله هوشمند: هشدارهای سطح سطل زباله که به کارکنان شهرداری ارسال میشود، برنامه جمعآوری زبالهها را بهینه میکند.
دوچرخههای هوشمند: ردیابهای دوچرخه، دوچرخهها را در مناطق دورافتاده و ساختمانهای متراکم ردیابی میکنند.
ردیابی فرودگاه: ردیابی بدون GPS بر وسایل نقلیه، پرسنل و چمدانها نظارت میکند.
سلامت دامها: بصورت مثال در یک گاوداری، حسگرها سلامت گاو را کنترل و بیماریها را تشخیص میدهند و زمان تولد گوسالهها را پیشبینی میکنند.
معماری شبکه LoRaWAN
شبکه LoRaWAN از توپولوژی ستاره پشتیبانی میکند. در تصویر زیر معماری و تجهیزاتی که در یک شبکه لورا وجود دارد، نشان داده شده است:
معماری شبکه LoRaWAN1.0
گرههای پایانی(End Nodes): حسگرها یا محرکهایی هستند که پیامهای بیسیم مدولهشده توسط LoRa را به گیتوی ارسال میکنند یا پیامها را به صورت بیسیم از گیتویها دریافت میکنند. این دستگاهها عمدا با باتری کار میکنند. در شکل زیر یک کنتور هوشمند گاز که در شبکه لورا بعنوان گره پایانی عمل میکند، نشان داده شده است:
گیتویها (Gateways): وظیفه دریافت پیامها از گرههای پایانی و ارسال آنها به سرور شبکه و یا بالعکس را دارند.
سرور شبکه(Network Server): نرم افزاری است که روی یک سرور اجرا می شود و کل شبکه را مدیریت میکند. برخی از ویژگیهای مهم این سرور عبارتند از:
- ایجاد اتصال امن مبتنی بر الگوریتم رمزنگاری AES-128، برای انتقال داده بین گرههای پایانی و سرور برنامه.
- اعتبارسنجی اصالت دستگاههای پایانی و یکپارچگی پیامها.
- انتخاب بهترین گیتوی برای ارسال پیام به گره پایانی.
- ارسال دستورات ADR برای بهینهسازی نرخ ارسال داده به گرههای پایانی.
- بررسی آدرس دستگاهها و ارئه تاییده برای پیامهای دریافت شده از گرههای پایانی.
- پاسخگویی به تمام پیامهای لایه MAC.
سرور برنامه(Application Servers): نرمافزاری که وظیفه پردازش امن دادههای برنامه را بر عهده دارد. یک شبکه لورا میتواند چندین سرور برنامه داشته باشد.
سرور Join: نرم افزاری که پیامهای join-request ارسال شده توسط دستگاههای پایانی را پردازش میکند و وظیفه تولید و مدیریت کلیدها را بعهده دارد. (سرور Join در شکل بالا نشان داده نشده است).
تمام گیتویها به سرور شبکه متصل هستند. پیامهای ارسال شده از گرههای پایانی از تمام گیتویهای موجود در محدوده عبور میکنند. این پیامها توسط سرور شبکه دریافت میشوند. اگر سرور شبکه چندین نسخه از یک پیام را دریافت کرده باشد، یک کپی از پیام را نگه میدارد و بقیه را دور میاندازد. بنابراین لازم نیست که دستگاههای پایانی فقط از طریق یک گیتوی خاص با سرور مرکزی ارتباط داشته باشند و میتوانند از چند مسیر، ارسال اطلاعات را انجام دهند.
انواع پیام ها در شبکه لورا
پیامهایUplink : پیامهای Uplink توسط دستگاههای پایانی و از طریق یک یا چند گیتوی، به سرور شبکه ارسال میشوند. سرور شبکه بررسی میکند که پیام Uplink متعلق به کدام یک از دو سرورApplication یا سرور Join میباشد و سپس آن را برای گیرنده صحیح ارسال میکند.
پیام های Downlink: پیغام downlink توسط سرور شبکه و از طریق یک گیتوی واحد برای یک دستگاه پایانی ارسال میشود. این پیغامها توسط سرور Application و یا سرورJoin تولید شده است.
پیام درخواست پیوستن (Join-Request): درخواست پیوستن (به شبکه) همیشه توسط یک دستگاه پایانی آغاز شده و به سرور شبکه ارسال میشود. در نسخههای LoRaWAN قبل از 1.0.4 پیام درخواست پیوستن توسط “سرور شبکه” به “سرور برنامه” ارسال میشود. در LoRaWAN 1.1 و 1.0.4+، “سرور شبکه” پیام درخواست پیوستن را به “سرور Join” ارسال میکند. پیام درخواست پیوستن رمزگذاری نمیشود.
پیام قبول پیوستن(Join-Accept): در نسخه های LoRaWAN قبل از 1.0.4 پیام قبول پیوستن توسط”سرور برنامه” تولید می شود. در LoRaWAN 1.1 و 1.0.4+ پیام قبول پیوستن توسط “سرور Join” تولید میشود. در هر دو مورد، “سرور شبکه” پیام قبول پیوستن را به دستگاه انتهایی صحیح هدایت میکند. پیام قبول پیوستن به صورت زیر رمزگذاری میشود:
- در LoRaWAN 1.0، پیام Join-accept با AppKey رمزگذاری می شود.
- در LoRaWAN 1.1، پیام Join-accept با کلیدهای مختلف مانند جدول زیر رمزگذاری شده است.
درخواست پیوستن مجدد(Rejoin-Request): پیام درخواست پیوستن مجدد همیشه توسط دستگاه پایانی آغاز شده و به سرور شبکه ارسال میشود. این پیام دارای سه نوع 0،1 و 2 است و برای ایجاد یک نشست جدید استفاده میشود.
امنیت
کلیدهای امنیتی: در LoRaWAN 1.0 سه کلید امنیتی با نام های NwkSKey، AppSKey و AppKey وجود دارد. طول تمام کلیدها برابر با 128 بیت است. همچنین از الگوریتم AES-128 برای رمزنگاری استفاده میشود.
کلیدهای نشست(Session Keys): هنگامیکه یک دستگاه جدید به شبکه میپیوندد، دو کلید AppSKey(Application Session Key) و (Network Session Key)NwkSKey تولید میشوند. NwkSKey با شبکه به اشتراک گذاشته میشود، در حالیکه AppSKey بصورت خصوصی نگه داشته میشود. این کلیدها تا انتهای نشست مورد استفاده خواهند بود. از NwkSKey برای اعتبارسنجی و حفظ یکپارچگی هر پیام (با استفاده از الگوریتم رمزنگاری AES-CMAC) استفاده میشود. از AppSKey برای رمزنگاری و رمزگشایی پیام استفاده میشود. این تضمین میکند که هیچ کس جز خود شما قادر به خواندن محتوی پیامهایی که ارسال و یا دریافت میکنید، نمیباشد. این دو کلید در هر دستگاه و در هر نشست، منحصربهفرد هستند.
کلید برنامه(Application Key): از AppKey برای استخراج دو کلید AppSKey و NwkSKey در طول فرایند فعالسازی، استفاده میشود.
شمارنده فریمها(Frame Counters): از آنجاییکه ما با یک پروتکل رادیویی کار میکنیم، هر کسی میتواند پیامها را ضبط و ذخیره نماید. خواندن این پیام ها بدون AppSKey ممکن نیست، زیرا رمزنگاری میشوند. همچنین نمیتوان این پیامها را بدون داشتن NwkSKey دستگاری کرد. زیرا هر دخل و تصرفی در پیامها باعث تغییر کد اعتبارسنجی خواهد شد. با اینحال امکان ارسال مجدد پیامها وجود دارد. این نوع حملات که با نام Reply Attacks شناخته میشوند را میتوان با استفاده از شمارنده فریمها شناسایی و مسدود کرد. هنگامی که یک دستگاه جدید در شبکه فعال میشود، مقدار این شمارنده 0 خواهد بود و با ارسال هر پیام، مقدار این شمارنده افزایش خواهد یافت. پیامهایی که با مقادیر کوچکتر از شمارنده فعلی دریافت شوند، نادیده گرفته میشوند.
گسترش طیف(Spread Spectrum): انتقال رادیویی پیامها با استفاده از روش طیف گسترده به صورت سنتی در جنگ جهانی دوم، برای دشوار کردن نظارت بر ارتباطات رادیویی استفاده میشد. تکنیک دیگری با نام پرش فرکانسی (FHSS) وجود دارد که با یک ترتیب از پیش تعیین شده، انتقال داده در زمانهای مختلف در فرکانسهای متفاوت انجام میشود. تکنیکی که در لورا استفاده شده است، (Compressed High Intensity Radar Pulse)CHIRP نام دارد. این روش در برابر تداخل و یا بازتابهای رادیویی بسیار مقاوم است.
کلاس های کاری
در مشخصات LoRaWAN سه کلاس کاری وجود دارد: کلاسهای A، B و C.
تمام دستگاه های لورا باید از کلاس A پشتیبانی کنند، در حالیکه کلاسهای B و C افزونه هایی از کلاس A هستند. هر سه کلاس از ارتباطات دو جهته (Uplink and Downlink) پشتیبانی میکنند.
کلاس A: شروع ارتباط در کلاس A همیشه از سمت دستگاه پایانی است. در این کلاس دستگاه همیشه در حالت خواب است و با زمانبندی تنظیم شده، دستگاههای انتهایی از حالت خواب خارج میشوند و دیتای مورد نظر را برای سرور مرکزی ارسال میکند. در این حالت سرور مرکزی چند ثانیه زمان خواهد داشت تا فرامینی را برای دستگاه انتهایی ارسال کند(به اندازه دو سیکل تاخیر زمانیRX1 و RX2)، در غیر اینصورت دستگاه مجددا به حالت خواب میرود. باید توجه داشته باشیم در حالتیکه تعداد دستگاههای زیادی داریم، طوری برنامه ریزی شوند تا بصورت همزمان و در یک لحظه از حالت خواب خارج نشوند. در این مد امکان بیدار شدن دستگاه و ارسال اطلاعات در هر لحظه فراهم است اما برای ارسال فرامین از سمت سرور مرکزی به دستگاه، فقط در حالتی که دستگاه بیدار شده است امکانپذیر خواهد بود و در حالت خواب، هیچ روشی برای بیدار کردن دستگاه توسط سرور مرکزی وجود ندارد و فرامین باید تا زمان بیدار شدن دستگاه منتظر ارسال بمانند.
سیکل دریافت پیام در کلاس A
سرور میتواند در مدت زمان RX1 و یا در مدت زمان RX2 ارسال پیام را انجام دهد. در شکل زیر سه حالت مختلفی که در کلاس A میتواند رخ دهد، نشان داده شده است:
رفتار کلاس A در مدت زمان سیکل دریافت پیام
حالت 1: دستگاه پایانی به مدت دو سیکل RX1 و RX2 منتظر دریافت پیام Downlink است، اما پیامی دریافت نمیکند.
حالت 2: دستگاه در مدت زمان RX1 یک پیام از سرور دریافت میکند، و بنابراین سیکل RX2 اجرا نمیشود.
حالت 3: دستگاه سیکل RX1 را اجرا میکند اما پیامی دریافت نمیکند. بنابراین سیکل RX2 را اجرا میکند و در این مدت یک پیام Downlink دریافت میشود.
ویژگی های کلاس A:
- توان کمی در این کلاس مصرف میشود و لذا برای دستگاههایی که اغلب با باتری کار میکنند، مناسب است.
- بیشتر زمان ها را در حالت خواب(Sleep Mode) به سر میبرند.
- معمولا بین هر Uplink، دستگاه برای زمان طولانی در حالت خواب قرار دارد.
- پیام های Downlink با تاخیر بالایی دریافت میشوند(برای دریافت یک Downlink، دستگاه انتهایی باید یک Uplink ارسال کند.)
برخی کاربردهای کلاس A:
- پایش محیط زیست
- ردیابی حیوانات
- تشخیص حریق در جنگلها
- تشخیص نشت آب
- پارکینگ هوشمند
- ردیابی موقعیت مکانی
کلاس B: علاوه بر پنجرههای زمانبندی شده در کلاس A، در این کلاس می توانیم دستگاه پایانی را طوری تنظیم کنیم که با یک تاخیر مشخص(حداقل 128 ثانیه)، در حالت گوش دادن قرار بگیرد (Ping Slot)، تا فرامین ارسالی از مرکز را دریافت کند. در این حالت مصرف انرژی کمی بیشتر از کلاس A خواهد بود اما کماکان مصرف انرژی اضافی بقدری پایین است تا بتوان از باتری برای دستگاه پایانی استفاده کرد.
سیکل دریافت پیام در کلاس B
کلاس B نسبت به کلاس A تاخیر کمتری دارد، زیرا در یک بازه های از پیش تعریف شده، در دسترس خواهند بود. همچنین برای دریافت دستورات، نیازی به ارسال پیام از سمت دستگاه پایانی نیست.
برخی کاربردهای کلاس B:
- کنتورهای گاز و آب
- سیستم های مانیتورینگ و گزارش دما
کلاس C: این کلاس علاوه بر پشتیبانی از کلاس A، دستگاه انتهایی را در تمام مواقع و با حداقل تاخیر در حالت گوش دادن قرار میدهد. بنابراین سرور مرکزی در هر زمان که لازم باشد، میتواند فرایند ارسال و دریافت را با دستگاه پایانی آغاز کند. مصرف توان در دستگاه پایانی در این کلاس بالا خواهد بود و لذا مناسب دستگاههایی که با باتری کار میکنند، نمیباشد.
سیکل دریافت پیام در کلاس C
تغییر حالت موقت بین کلاس A و C امکان پذیر است و استفاده از این روش برای دستگاههایی که با باتری کار میکنند، پیشنهاد میشود.
برخی کاربردهای کلاس C:
- کنتورهای دارای قابلیت قطع و وصل
- سیستمهای روشنایی معابر
فعالسازی دستگاههای پایانی
تمام دستگاههای پایانی قبل از شروع به ارسال و دریافت فرامین، باید در شبکه رجیستر شوند. به این پروسه فعالسازی(Activation) میگوییم. دو روش برای فعالسازی دستگاه پایانی در شبکه وجود دارد:
- روش OTAA(Over-The-Air-Activation): استفاده از این روش بدلیل امنیت بالایی که در فعالسازی دستگاه پایانی دارد، توصیه میشود. در این روش طی فرایند فعالسازی، کلیدهای امنیتی با استفاده از یک آدرس پویا، بین سرور شبکه و دستگاه پایانی تبادل میشود.
- روش ABP(Activation By Personalization): در این روش مستقیما یک دستگاه پایانی به یک شبکه از پیش انتخاب شده متصل میشود و فرایند فعالسازی از طریق OTAA را دور میزند. بنابراین اگر بخواهیم ارائه دهنده شبکه را تغییر دهیم، باید کلیدهای امنیتی شبکه جدید، بصورت دستی در دستگاه تغییر کند. زمانیکه از این روش برای فعالسازی استفاده میشود، دستگاه پایانی فقط در یک شبکه میتواند فعال باشد و همچنین کلیدهای نشست در تمام طول عمر آن ثابت و بدون تغییر خواهد بود. لذا این روش از امنیت بسیار پایینی برخوردار است.
فعالسازی دستگاه پایانی در LoRaWAN1.0 و 1.1، مقداری با یکدیگر متفاوت است. در ادامه روش فعالسازی در هر دو ورژن را بصورت جداگانه توضیح میدهیم:
روش فعالسازی OTAA در LoRaWAN1.0:
در این ورژن، در پروسه پیوستن به شبکه، دو پیام زیر باید بین سرور و دستگاه پایانی رد و بدل شود:
- درخواست پیوستن، که از دستگاه پایانی به سرور شبکه ارسال میشود.
- قبول پیوستن، که از سرور شبکه به دستگاه پایانی ارسال میشود.
قبل از شروع فرایند فعالسازی، باید پارامترهای AppEUI، DevEUI و AppKey در دستگاه ذخیره شوند. AppKey یک کلید مخفی 128 بیتی مورد استفاده در الگوریتم رمزنگاری AES است که بعنوان کلید اصلی شناخته میشود. AppKey هر دستگاه باید در شبکهای که قرار است در آن رجیستر شود، از پیش تنظیم شده باشد(این کلید هرگز از طریق شبکه ارسال نمیشود). پارامترهای AppEUI و DevEUI محرمانه نیستند و میتوانند در اختیار هر کسی باشند.
فلوچارت روش OTAA در LoRaWAN1.0
مرحله 1: پیام درخواست پیوستن توسط دستگاه پایانی به سرور شبکه ارسال می شود و حاوی بخشهای زیر است:
- AppEUI: یک شناسه منحصربهفرد 64 بیتی که موجودیت پیام درخواست پیوستن به شبکه را، پردازش و شناسایی میکند.
- DevEUI: یک شناسه منحصربهفرد 64 بیتی که دستگاه پایانی از روی آن شناسایی میشود.
- DevNonce: یک مقدار تصادفی و منحصربهفرد دو بایتی است که توسط دستگاه نهایی تولید میشود. سرور شبکه از این پارامتر برای رهگیری درخواستهای پیوستن به شبکه، استفاده میکند. اگر یک دستگاه پایانی با استفاده از یک DevNonce که قبلا استفاده شده است، درخواست پیوستن را ارسال کند، سرور شبکه این درخواست را رد میکند و اجازه رجیستر شدن به آن دستگاه را نمیدهد.
پیام درخواست پیوستن رمزنگاری نمیشود، اما با استفاده از AppKey پارامتر MIC(Message Integrity Code) روی تمام فیلدهای پیام محاسبه و به انتهای درخواست اضافه میشود. این پیام با هر نرخ دادهای و با استفاده از یکی از کانالهای مجاز قابل ارسال است.
مرحله 2: سرور شبکه Join-request را بررسی و در صورتیکه دستگاه پایانی مجاز باشد، دو کلید AppSKey و NwkSKey و پیغام Join-accept را تولید میکند. پیغام Join-accept حاوی فیلدهای زیر است:
- AppNonce: یک مقدار تصادفی و منحصربهفرد که توسط سرور شبکه تولید و توسط دستگاه پایانی برای استخراج دو کلید AppSKey و NwkSKey استفاده میشود.
- NetID: حاوی شناسه شبکه
- DevAddr: یک آدرس 32 بیتی که توسط سرور شبکه به دستگاه انتهایی اختصاص داده میشود.
- DLSetting: یک فیلد 1 بایتی که متشکل از تنظیمات مورد نیاز برای ارسال پیام Downlink توسط دستگاه پایانی است.
- RxDelay: حاوی میزان تاخیر مورد نیاز بین ارسال و دریافت است.
- CFList: حاوی یک لیست اختیاری از کانالهای فرکانسی شبکه است.
با استفاده از AppKey پارامتر MIC روی تمام فیلدهای Join-accept محاسبه و به انتهای آن اضافه میشود. سپس خود پیام Join-accept توسط الگوریتم AES-ECB و با استفاده از AppKey رمزنگاری میشود.
مرحله 3: سرور شبکه پیام Join-accept که رمزنگاری شده است را بعنوان یک Downlink معمولی به دستگاه پایانی ارسال میکند. توجه داریم، چنانچه پیام Join-request توسط سرور شبکه رد شود، هیچ پاسخی به دستگاه پایانی ارسال نمیشود.
مرحله 4: سرور شبکه، NwkSKey را نگه میدارد و AppSKey را در سرور برنامه توزیع میکند.
مرحله 5: دستگاه پایانی پیام Join-accept را رمزگشایی و با استفاده از AppKey و AppNonce، کلیدهای نشست (AppSKey و NwkSKey) را استخراج میکند.
پس از این مرحله، دستگاه پایانی در شبکه فعال میشود. بعد از فعالسازی، پارامترهای زیر در دستگاه پایانی ذخیره میشوند:
- DevAddr: یک آدرس 32 بیتی که بواسطه آن، دستگاه پایانی در شبکه فعلی شناسایی میشود. این آدرس توسط سرور شبکه تولید و به دستگاه اختصاص داده شده است.
- NwkSKey: از این کلید دستگاه پایانی و سرور شبکه برای محاسبه شناسه احراز هویت (MIC) استفاده میکنند. همچنین برای رمزنگاری و رمزگشایی پیامها در لایه MAC استفاده میشود.
- AppSKey: از این کلید برای رمزنگاری و رمزگشایی پیام ها در لایه کاربردی استفاده میشود.
روش فعالسازی OTAA در LoRaWAN1.1:
همانطور که ملاحظه کردید، در پروسه اتصال دستگاههای LoRaWAN1.0، دو پیام درخواست پیوستن و قبول پیوستن بین دستگاه و سرور رد و بدل میشود و قبل از فعالسازی، پارامترهای JoinEUI، DevEUI، AppKey و NwkKey در دستگاه پایانی ذخیره میشوند.
در ادامه، مراحل فعالسازی در LoRaWAN1.1 با استفاده از روش OTAA شرح داده میشود.
فلوچارت روش OTAA در LoRaWAN1.1
مرحله 1: پیام درخواست پیوستن توسط دستگاه پایانی به سرور شبکه ارسال می شود و حاوی بخشهای زیر است:
- JoinEUI: یک شناسه 64 بیتی است که به سرور Join کمک می کند درخواست دریافت شده را پردازش و کلیدهای نشست را از آن استخراج کند. این پارامتر معادل AppEUI در 0 است.
- DevEUI: یک شناسه 64 و منحصر به فرد است که به شناسایی دستگاه پایانی کمک میکند.
- DevNonce: یک شمارنده 2 بایتی است. زمانیکه دستگاه روشن میشود مقدار آن از 0 شروع میشود و با هر درخواست مقدار آن افزایش مییابد. پارامتر DevNonce برای جلوگیری از حملات تکراری استفاده میشود.
بر روی تمام فیلدهای پیام Join-Request مقدار MIC با استفاده از NwkKey محاسبه میشود. سپس MIC محاسبه شده به پیام Join-Request اضافه می شود. این پیام بصورت بدون رمزنگاری ارسال میشود.
پیام درخواست پیوستن را میتوان با هر نرخ داده و با انتخاب تصادفی یکی از کانالهای آزاد ارسال کرد. بطور مثال در اروپا دستگاه پایانی میتواند با استفاده از یکی از کانالهای 868.1 یا 868.2 یا 868.3 و یا … پیام درخواست پیوستن را ارسال نماید و این پیام ممکن است از طریق چند گیتوی به سرور شبکه منتقل شود. اگر پیام درخواست پیوستن توسط سرور شبکه پذیرفته نشود، هیچ پاسخی برای دستگاه پایانی ارسال نمیشود.
مرحله 2: سرور شبکه، پیام درخواست پیوستن را به سرور Join منتقل میکند.
مرحله 3: سرور Join تمام کلیدهای نشست (AppSKey، FNwkSIntKey، SNwkSintKey و NwkSEncKey) را در صورتی که دستگاه پایانی مجاز به پیوستن به شبکه باشد، را تولید میکند.
مرحله 4: اگر مرحله بالا موفقیت آمیز باشد، سرور شبکه پیام Join-accept را ایجاد میکند. پیام Join-accept شامل فیلدهای زیر است:
- JoinNonce: یک شمارنده خاص دستگاه که توسط Join Server ارائه میشود و توسط دستگاه پایانی برای استخراج کلیدهای جلسه، FNwkSIntKey، SNwkSIntKey، NwkSEncKey و AppSKey استفاده میشود.
- NetID: یک شناسه منحصر به فرد 24 بیتی مختص شبکه است.
- DevAddr: یک آدرس 32 بیتی که توسط سرور شبکه برای شناسایی دستگاه نهایی در شبکه فعلی اختصاص داده میشود.
- DLSettings: یک پارامتر 1 بایتی متشکل از تنظیمات downlink که دستگاه نهایی باید از آن استفاده کند.
- RxDelay: میزان تاخیر مورد نیاز بین TX و RX است.
- CFList: فهرستی اختیاری از فرکانسهای مجاز کانال (خاص هر منطقه) برای شبکهای که دستگاه نهایی به آن میپیوندد.
کد یکپارچگی پیام (MIC) روی تمام فیلدهای پیام Join-accept با استفاده از NwkKey (برای دستگاههای LoRaWAN 1.0) یا JSIntKey (برای دستگاههای LoRaWAN 1.1) محاسبه میشود. سپس MIC محاسبه شده به پیام Join-accept اضافه می شود.
سپس خود پیام Join-accept توسط NwkKey (اگر در پاسخ به درخواست Join باشد) یا JSEncKey (اگر در پاسخ به درخواست Rejoin باشد) رمزگذاری میشود. سرور شبکه از الگوریتم AES-ECB برای رمزگذاری این پیام استفاده میکند.
سپس سرور شبکه پیام رمزگذاری شده Join-accept را به عنوان یک downlink معمولی به دستگاه نهایی ارسال میکند.
مرحله 5: سرور Join، کلید AppSKey را به سرور برنامه و سه کلید نشست (FNwkSintKey، SNwkSintKey و NwkSEncKey) را به سرور شبکه میفرستد.
مرحله 6: دستگاه پایانی پیام Join-accept را با استفاده از الگوریتم AES رمزگشایی میکند. دستگاه نهایی از AppKey، NwkKey و JoinNonce برای تولید کلیدهای نشست استفاده میکند.
در دستگاههای LoRaWAN1.0، کلیدهای AppSKey، FNwkSIntKey, SNwkSIntKey و NwkSEncKey از NwkKey استخراج میشوند، اما در LoRaWAN1.1، کلید AppSKey از AppKey مشتق شده است و FNwkSIntKey, SNwkSIntKey, NwkSEncKey از NwkKey نشات گرفته میشوند.
دستگاه پایانی اکنون در شبکه فعال شده است. پس از فعال سازی، اطلاعات اضافی زیر در دستگاه پایانی ذخیره میشود:
- DevAddr: یک آدرس 32 بیتی که توسط سرور شبکه برای شناسایی دستگاه نهایی در شبکه فعلی اختصاص داده شده است.
- FNwkSintKey: کلیدی که توسط دستگاه پایانی برای محاسبه MIC پیامهای uplink استفاده میکند تا از حفظ یکپارچگی پیامها اطمینان حاصل کند.
- SNwkSintKey: کلیدی که توسط دستگاه پایانی برای محاسبه MIC در پیامهای uplink و downlink برای اطمینان از حفظ یکپارچگی پیام استفاده میکند.
- NwkSEncKey: کلیدی که برای رمزگذاری و رمزگشایی دادهها برای اطمینان از محرمانه بودن پیام استفاده میشود. (در لایه MAC)
- AppSKey: کلیدی که توسط سرور برنامه و دستگاه نهایی برای رمزگذاری و رمزگشایی پیامها برای اطمینان از محرمانه بودن آن استفاده میشود.
روش فعالسازی ABP در LoRaWAN1.0:
پارامتر DevAddr و کلیدهای AppSKey و NwkSKey بصورت مستقیم در دستگاه پایانی بجای DevEUI، AppEUI و AppKey ذخیره میشوند. همان DevAddr و NwkSKey در سرور شبکه نیز ذخیره میشود. همچنین AppSKey نیز در سرور برنامه ذخیره میشود.
در این روش کلیدهای AppSKey و NwkSKey برای هر دستگاه پایانی منحصربهفرد میباشد.
نحوه اشتراک گذاری کلیدهای نشست و DevAddr در LoRaWAN1.0 و با روش ABP
روش فعالسازی ABP در LoRaWAN1.0:
پارامتر DevAddr و چهار کلید نشست FNwkSIntKey، SNwkSIntKey، NwkSEncKey و AppSKey بصورت مستقیم در دستگاه پایانی بجای DevEUI، JoinEUI، AppKey و NwkKey ذخیره میشوند. همان DevAddr، FNwkSIntKey، SNwkSIntKey و NwkSEncKey در سرور شبکه و AppSKey در سرور برنامه ذخیره میشوند.
نحوه اشتراک گذاری کلیدهای نشست و DevAddr در LoRaWAN1.1و با روش ABP
ضرایب انتشار(Spreading Factors)
همانطور که گفته شده، لورا مبتنی بر فناوری گسترش طیف Chirp است. در این فناوری، ضریب انتشار، نرخ Chirp و در نتیجه سرعت انتقال داده را کنترل میشود. هر چه ضریب انتشار کوچکتر باشد، نرخ Chirp و نتیجتا نرخ ارسال داده بالاتر خواهد بود. به ازای هر واحد افزایش ضریب انتشار، نرخ Chirp و ارسال داده نصف میشوند.
از طرفی، هر چه مقدار ضریب انتشار کمتر باشد، طول برد ارسال داده هم کاهش مییابد. بنابراین شبکه لورا میتواند با تغییر ضریب انتشار در هر دستگاه انتهایی، تعادلی بین نرخ ارسال و طول برد داده، برقرار نماید.
از آنجاییکه ضرایب انتشار بصورت متعامد با یکدیگر هستند، بنابراین سیگنالهایی که با ضرایب متفاوت مدوله میشوند، میتوانند بهطور همزمان در کانالهای فرکانسی یکسان ارسال شوند و با یکدیگر تداخل نخواهند داشت. این ویژگی به شبکه لورا اجازه کنترل ترافیک شبکه را میدهد.
شبکه لورا در مجموع دارای شش ضریب انتشار از SF7 تا SF12 است. نرخ انتشار بر نرخ داده، زمان ارسال، عمر باتری و حساسیت گیرنده تاثیر میگذارد. در ادامه تاثیر ضریب انتشار بر روی این پارامترها را بررسی میکنیم:
نرخ داده:
همانطور که بیان شد، در پهنای باند و نرخ کدگذاری(Coding Rate) ثابت، با ضرایب انتشار کمتر، نرخ داده بالاتری خواهیم داشت. به عنوان مثال SF7 نرخ داده بالاتری نسبت به SF12 ارائه میدهد.
افزایش دو برابری پهنای باند در زمانیکه ضریب انتشار و نرخ کدگذاری ثابت باشد، نرخ ارسال داده را دو برابر میکند. در جدول زیر نرخ داده را برای SF7 و نرخ کدگذاری 1 در پهنای باندهای 125، 250 و 500 کیلوهرتز نشان میدهد.
مسافت:
ضریب انتشار بزرگتر به معنای بهره پردازشی بالاتر است. بنابراین سیگنال مدوله شده با ضریب انتشار بزرگتر را با خطای کمتری میتوان دریافت کرد(در مقایسه با ضریب انتشار کوچکتر). لذا سیگنال مدوله شده میتواند مسافت طولانیتری را طی کند.
زمان ارسال(Time-On-Air):
در ارسال داده با طول و پهنای باند ثابت، هر چه ضریب انتشار بزرگتر باشد، زمان انتشار در فضا نیز بیشتر خواهد بود. به طور مثال ارسال یک داده 100 بایتی با ضریب انتشار SF7 و در باند فرکانسی 868 مگاهرتز و با پهنای باند 125 کیلوهرتز، 189.7 میلی ثانیه طول می کشد. چنانچه ضریب انتشار برابر با SF9 باشد، این زمان به 615.4 میلی ثانیه افزایش مییابد.
حساسیت گیرنده:
افزایش ضریب انتشار، باعث بهبود حساسیت دریافت در گیرنده میشود. معمولا هنگامیکه قدرت سیگنال در گیرنده ضعیف است، از ضرایب انتشار بزرگتر برای ارسال داده استفاده میشود.
جدول زیر میزان تاثیر ضریب انتشار را بر حساسیت گیرنده نشان میدهد:
طول عمر باتری:
ضرایب انتشار بالاتر موجب افزایش زمان فعال بودن دستگاههای پایانی و به تبع آن کاهش طول عمر باتری میشوند.
نرخ داده تطبیقی(Adaptive Data Rate)
نرخ داده تطبیقی (ADR) مکانیزمی برای بهینه سازی نرخ داده، زمان پخش و مصرف انرژی در شبکه است. این مکانیزم پارامترهای انتقال دستگاه پایانی (از جمله ضریب انتشار، پهنای باند و توان ارسال) را کنترل میکند.
ADR میتواند مصرف توان دستگاه را بهینه کند و در عین حال اطمینان حاصل کند که پیامها همچنان در سمت گیتوی دریافت میشوند. زمانیکه مکانیزم ADR فعال است، سرور شبکه به دستگاه پایانی اعلام میکند که باید توان را کاهش و یا نرخ ارسال را افزایش دهد. دستگاههای پایانی که نزدیک به گیتوی هستند، باید از ضرایب انتشار کمتر و نرخ داده بالاتر استفاده کنند، در حالیکه دستگاههای دورتر باید از ضرایب انتشار بزرگتر استفاده کنند.
زمانیکه یک دستگاه پایانی به شرایط RF تقریبا پایدار میرسد، مکانیزم ADR باید فعال شود. اگر شرایط RF در سمت دستگاه پایانی ناپایدار باشد (بطور مثال موانع موقت مقابل دستگاه قرار بگیرند و یا دستگاه در حال حرکت باشد)، ADR نیز (بطور موقت) باید غیرفعال شود. بنابراین این دستگاه پایانی است که تصمیم می گیرد ADR فعال و یا غیرفعال شود.
برای مشخص کردن نرخ ارسال بهینه، شبکه نیاز به اندازهگیری برخی پارامترها در پیامهای Uplink دارد. لذا از لحظهای که بیت ADR فعال میشود، 20 پیام Uplink را دریافت میکند و پارامترهای از جمله شمارنده فریم(frame counter)، نسبت سیگنال به نویز (SNR) و تعداد گیتویهایی که هر کدام از پیامهای Uplink را دریافت کردهاند، اندازهگیری میکند. زمانیکه دستگاهی بیت ADR را تنظیم نمیکند (بدلیل اینکه میداند در حال حرکت است و یا سیگنال RF ناپایدار است)، اندازهگیریهای قبلی کنار گذاشته میشوند. به محض تنظیم مجدد بیت ADR، شبکه دوباره شروع به اندازهگیری میکند.
محدودیتها
لورا برای هر کاربردی مناسب نیست. بنابراین مهم است که محدودیتهای این فناوری را بدانید. در ادامه مروری سریع بر کاربردها و محدودیتهای آن خواهیم داشت:
مواردی که استفاده از LoRaWAN مناسب است:
- طول برد زیاد: تا چندین کیلومتر امکان ارسال داده دارد.
- توان مصرفی کم: با یک باتری سکهای، میتواند حداقل 10 سال کار کند.
- پهنای باند پایین: نرخ ارسال بین 250 bit/s تا 10 kbit/s در باند فرکانسی مجاز اروپا.
- امنیت: از الگوریتم رمزنگاری AES-128 برای حفظ محرمانگی دیتا استفاده میکند.
- پوشش سراسری: ایجاد شبکه در دست شماست. هرجا پوشش نیاز دارید، گیتوی خودتان را نصب کنید.
مواردی که استفاده از LoRaWAN توصیه نمیشود:
- دادههای بلادرنگ: شما در هر چند دقیقه میتوانید بستههای کوچک داده را ارسال کنید.
- دادههای حجیم: در شرایط واقعی، حداکثر طول بستهها میتواند 100 بایت باشد.