Чтобы присоединиться к сети LoRaWAN, оконечное устройство должно пройти процедуру активации (End-Device 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 |
где:
Поле DLSettings [8 бит] имеет следующий формат:
DLSettings | ||
---|---|---|
7-й бит | биты 6…4 | биты 3…0 |
RFU | RX1DRoffset | RX2 Data rate |
где:
Случайные числа DevNonce и AppNonce используются при вычислении сессионных ключей NwkSKey и AppSKey.
«Активация путем персонализации» означает, что в устройство напрямую записываются значения DevAddr, NwkSKey и AppSKey (происходит персонализация устройства). Согласно спецификации, каждое устройство должно содержать уникальные значения сессионных ключей NwkSKey и AppSKey, чтобы компрометация этих значений, содержащихся в одном устройстве, не приводила к компрометации других устройств сети.
При таком способе активации оконечному устройству не нужно проходить процедуру присоединения к сети, сразу после включения устройство готово к передаче данных.
Ссылка на оригинал статьи https://habr.com/ru/post/317218/