Issue link: https://read.uberflip.com/i/1428365
LoRaWAN 1.1 Specification ©2017 LoRa Alliance™ Page 52 of 101 The authors reserve the right to change specifications without notice. For OTAA devices, Frame counters MUST NOT be re-used for a given key, therefore new 1474 Session Context MUST be established well before saturation of a frame counter. 1475 1476 It is RECOMMENDED that session state be maintained across power cycling of an end- 1477 device. Failure to do so for OTAA devices means the activation procedure will need to be 1478 executed on each power cycling of a device. 1479 1480 6.2 Over-the-Air Activation 1481 For over-the-air activation, end-devices must follow a join procedure prior to participating in 1482 data exchanges with the Network Server. An end-device has to go through a new join 1483 procedure every time it has lost the session context information. 1484 As discussed above, the join procedure requires the end-device to be personalized with the 1485 following information before it starts the join procedure: a DevEUI, JoinEUI, NwkKey and 1486 AppKey. 1487 Note: For over-the-air-activation, end-devices are not personalized 1488 with a pair of network session keys. Instead, whenever an end-device 1489 joins a network, network session keys specific for that end-device are 1490 derived to encrypt and verify transmissions at the network level. This 1491 way, roaming of end-devices between networks of different providers is 1492 facilitated. Using different network session keys and application 1493 session key further allows federated Network Servers in which 1494 application data cannot be read by the network provider. 1495 1496 6.2.1 Join procedure 1497 From an end-device's point of view, the join procedure consists of either a join or rejoin- 1498 request and a Join-accept exchange. 1499 6.2.2 Join-request message 1500 The join procedure is always initiated from the end-device by sending a join-request 1501 message. 1502 1503 Size (bytes) 8 8 2 Join-request JoinEUI DevEUI DevNonce Figure 44 : Join-request message fields 1504 The join-request message contains the JoinEUI and DevEUI of the end-device followed by 1505 a nonce of 2 octets (DevNonce). 1506 DevNonce is a counter starting at 0 when the device is initially powered up and incremented 1507 with every Join-request. A DevNonce value SHALL NEVER be reused for a given JoinEUI 1508 value. If the end-device can be power-cycled then DevNonce SHALL be persistent (stored 1509 in a non-volatile memory). Resetting DevNonce without changing JoinEUI will cause the 1510 Network Server to discard the Join-requests of the device. For each end-device, the 1511
