Зміст
Специфікація LoRaWAN. Активація кінцевих пристроїв
Щоб приєднатися до мережі LoRaWAN, кінцевий пристрій повинен пройти процедуру активації (End-Device Activation). Специфікація передбачає два варіанти активації пристроїв:
- OTAA, Over-The-Air Activation (необхідно пройти процедуру приєднання (join procedure), під час якої генеруються сесійні ключі шифрування та адреса DevAddr).
- ABP, Activation By Personalization (немає потреби проходити процедуру приєднання, ключі шифрування та адреса DevAddr записуються в пристрій заздалегідь (персоналізація пристрою)).
Після активації пристрій повинен містити наступні значення:
- Адреса кінцевого пристрою (DevAddr) — локальна адреса пристрою в даній мережі [32 біти]. DevAddr складається з двох полів: NwkID (ідентифікатор мережі, біти 31…25) та NwkAddr (мережева адреса, біти 24…0).
- Мережевий сесійний ключ (NwkSKey) — сесійний ключ мережі [128 біт], що використовується для розрахунку та перевірки поля MIC (код цілісності повідомлення) у повідомленнях під час обміну між кінцевим пристроєм та мережевим сервером (Network Server), а також для шифрування повідомлень рівня MAC.
- Сесійний ключ застосунку (AppSKey) — сесійний ключ [128 біт], що використовується для шифрування даних на рівні застосунку (між кінцевим пристроєм та сервером застосунків).
- Також пристрій повинен мати заздалегідь записаний ID застосунку [64 біти] — Ідентифікатор застосунку (AppEUI).
OTAA - Процедура приєднання Over-The-Air Activation
Процедура приєднання завжди ініціюється кінцевим пристроєм і складається з двох повідомлень, якими обмінюються кінцевий пристрій та мережевий сервер: join request (пристрій → сервер) та join accept (сервер → пристрій).
Повідомлення join request містить AppEUI, DevEUI та випадкове число DevNonce:
| Join Request | |||||
|---|---|---|---|---|---|
| 3 байти | 3 байти | 4 байти | 1 байт | 1 байт | 16 байтів |
| AppNonce | NetID | DevAddr | DLSettings | RxDelay | CFList |
Для кожного кінцевого пристрою мережевий сервер запам'ятовує значення DevNonce, які використовувалися раніше, і ігнорує запити, що містять дублікати DevNonce. У відповідь на join request сервер надсилає повідомлення join accept.
| Join Accept | |||||
|---|---|---|---|---|---|
| 3 байти | 3 байти | 4 байти | 1 байт | 1 байт | 16 байтів |
| AppNonce | NetID | DevAddr | DLSettings | RxDelay | CFList |
де:
- AppNonce — випадкове число.
- NetID — ідентифікатор мережі.
- DevAddr — адреса пристрою в мережі.
- DLSettings — параметри, що використовуються для вихідних повідомлень (сервер → пристрій).
- RxDelay — затримка між закінченням передачі кінцевого пристрою та початком вікна прийому Rx1 (що таке вікна прийому — Специфікація LoRaWAN. Вступ. Основні поняття та класи кінцевих пристроїв).
- CFList — список додаткових частотних каналів, які можуть використовуватися кінцевим пристроєм.
Поле DLSettings [8 біт] має наступний формат:
| DLSettings | ||
|---|---|---|
| 7-й байт | 6…4 байти | 3…0 байти |
| RFU | RX1DRoffset | RX2 Data rate |
де:
- RFU — Reserved for Future Use (зарезервовано для майбутнього використання), не використовується.
- RX1DRoffset — різниця між швидкостями передачі даних uplink та downlink, що використовується для першого вікна прийому Rx1. За замовчуванням дорівнює 0.
- RX2 Data rate — швидкість, що використовується для другого вікна прийому Rx2.
Випадкові числа DevNonce та AppNonce використовуються для розрахунку сесійних ключів NwkSKey та AppSKey.
ABP - Activation By Personalization
«Активація через персоналізацію» означає, що значення DevAddr, NwkSKey та AppSKey записуються безпосередньо в пристрій (пристрій персоналізується). Згідно зі специфікацією, кожен пристрій повинен містити унікальні значення сесійних ключів NwkSKey та AppSKey, щоб компрометація цих значень в одному пристрої не призвела до компрометації інших пристроїв мережі.
При такому методі активації кінцевому пристрою не потрібно проходити процедуру приєднання до мережі, пристрій готовий до передачі даних одразу після ввімкнення.