Mesh Network Commissioning

JP7660608B2Active Publication Date: 2025-04-11GOOGLE LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023097740
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2015-04-02
Filing Date
2023-06-14
Publication Date
2025-04-11
Estimated Expiration
2035-06-24

AI Technical Summary

Technical Problem

Existing wireless mesh networking technologies face challenges in efficiently commissioning devices, particularly in ensuring secure authentication and accurate joining of devices to the correct mesh network, especially as mesh networks scale and become more ubiquitous.

Method used

The proposed solution involves a method for mesh network commissioning that uses a joiner router to facilitate device authentication and secure credential injection. This includes sending beacons to participating devices, establishing secure communication sessions using DTLS and J-PAKE, and propagating steering data to ensure correct device participation and network configuration.

Benefits of technology

This approach enhances the efficiency and accuracy of device commissioning in mesh networks, improving user experience and network security by ensuring secure authentication and correct network integration of devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007660608000004
    Figure 0007660608000004
  • Figure 0007660608000005
    Figure 0007660608000005
  • Figure 0007660608000006
    Figure 0007660608000006
Patent Text Reader

Abstract

To provide a method for establishing a secure commissioning communication session between a commissioning device and a border router for securely establishing a network communication session in order to allow one or more attendance device to attend a mesh network in mesh network commissioning.SOLUTION: In a commissioning process in a mesh network environment, a commissioning device starts attendance for the mesh network, and receives requirements for attending the mesh network from an attendance device. The commissioning device establishes a secure joiner communication session between the commissioning device and the attendance device, authenticates the attendance device by using an encrypted device identifier, and allows the attendance device to the mesh network.SELECTED DRAWING: Figure 14
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority under 35 U.S.C. 35(e) to U.S. Provisional Patent Application Serial No. 62 / 016,450, filed June 24, 2014. This application also claims priority to U.S. Provisional Patent Application Serial No. 62 / 063,135, filed October 13, 2014. This application also claims priority to U.S. Provisional Patent Application Serial No. 62 / 115,601, filed February 12, 2015. This application also claims priority to U.S. Provisional Patent Application Serial No. 62 / 141,853, filed April 2, 2015. [Background technology]

[0002] background Using wireless mesh networking to connect devices to each other and to cloud-based services is becoming increasingly popular to sense environmental conditions, control equipment, and provide information and alerts to users. However, many devices on mesh networks are designed to operate for long periods on battery power, which limits the available computation, user interface, and radio resources on the devices. In addition, to ensure security of mesh networks, the identities of devices that join and operate on the mesh network are authenticated, and communications within the mesh network are encrypted based on credentials that are commissioned to the devices. However, as the ubiquity and scale of mesh networks increases, commissioning approaches limit the quality of the user experience for commissioning and the accuracy of joining devices to the correct mesh network during commissioning, securely injecting credentials into the devices, and provisioning devices with device and application specific information. Summary of the Invention [Means for solving the problem]

[0003] overview This summary is provided to introduce simplified concepts of mesh network commissioning that are further described below in the detailed description. This summary is not intended to identify essential features of the claimed subject matter, nor is it intended for use in determining the scope of the claimed subject matter.

[0004] Mesh network commissioning is described, generally relating to joining a node to a mesh network. In an embodiment, a joiner router may receive a beacon request from a joining device and then transmit a beacon from the joiner router to the joining device, where the beacon provides an indication that the mesh network is available for joining. The transmitted beacon also enables the joining device to establish a local link between the joining device and the joiner router. The joiner router receives a message from the joining device requesting to join the mesh network. The message received from the joining device may include a device identifier that can be used to authenticate the joining device, where the joining device may authenticate using Password Authenticated Key Exchange by Juggling (J-PAKE) or other methods. The joiner router forwards the received message to the commissioning device of the mesh network, which is a cipher suite that is used to authenticate the joiner router and the communication path between the joiner router and the commissioning device. The method may include forwarding the received message through one or more routers of the mesh network. In an implementation, one of the routers may be a border router connecting the mesh network to an external network, with the commissioning device attached to the external network. The joiner router then receives from the commissioning device an authorization for the joining device to join the mesh network, and the joiner router transmits network information to the joining device, the network information enabling the joining device to join the mesh network.

[0005] Mesh network commissioning, generally related to joining a node to a mesh network, is described. In an embodiment, a joiner router can receive a beacon request from a joining device and then transmit a beacon from the joiner router to the joining device, where the beacon provides an indication that the mesh network is available for joining. The transmitted beacon also enables the joining device to establish a local link between the joining device and the joiner router. The joiner router relays a DTLS-ClientHello message from a joining device requesting to join the mesh network in a DTLS Relay Notify message, which is transmitted to a commissioning device of the mesh network. The joiner router receives a DTLS Relay Notify message from the commissioning device and transmits the contents of the DTLS Relay Notify message to the joining device, where the contents are effective to enable the joining device to join the mesh network and to establish a secure communication session between the commissioning device and the joining device. The joiner router receives an indication from the commissioning device that the joining device should be entrusted to receive network credentials for the mesh network, and receives a Key Encryption Key (KEK) shared between the commissioning device and the joining device. The joiner router then transmits the network credentials and other essential network parameters from the joiner router to the joining device, using the KEK to encrypt and authenticate messages at the Media Access Control (MAC) layer to securely communicate the network credentials. The secure communication session can be used to provision the joining device.

[0006] Mesh network commissioning is described generally with respect to establishing a commissioning session. In an embodiment, a border router receives an application from a commissioning device to become a commissioner for joining devices in the mesh network. The border router advertises the availability of the mesh network for the commissioning device. In response to receiving the advertisement, the commissioner receives an application in response to the commissioning device receiving the advertisement. The border router transmits the received application to a leader device of the mesh network and receives a response to the application from the leader device, the response indicating acceptance or rejection of the application. The border router transmits an indication of acceptance or rejection of the application to the commissioning device. Acceptance of the application by the leader device authorizes the commissioning device to become a commissioner for the mesh network and a secure commissioning session is established. Acceptance of the application also allows the leader device to update its internal state that tracks active commissioners for the mesh network, enable participation throughout the mesh network, communicate the set of devices that are allowed to join the mesh network, and propagate the commissioning data set within the mesh network.

[0007] In another aspect of mesh network commissioning, the border router may also be required to provide hardened (e.g., cryptographically hashed) commissioning credentials to the border router in order to establish a secure commissioning communications session. The commissioning device may register its identity, including an enhanced commissioning credential derived from a commissioning credential passphrase entered into the commissioning device by a user. The border router includes an encrypted copy of the commissioning credential that is usable to authenticate the commissioning device to the mesh network, the encrypted copy of the commissioning credential being previously derived from the commissioning credential. The commissioning credential is injected into a leader device of the mesh network from which it derived the encrypted copy of the commissioning credential, and the leader device securely communicates the encrypted copy of the commissioning credential to the border router.

[0008] Mesh network commissioning is described generally with respect to establishing a commissioning session. In an embodiment, a leader device of a mesh network receives a request to accept the commissioning device as a commissioner for commissioning a joining device to join the mesh network. The leader device may determine whether to accept or reject the received request and send a response to the commissioning device with an indication of whether to accept or reject the received request. The decision regarding whether to accept or reject the request received from the commissioning device may include ensuring that there is one active commissioner for the mesh network. In response to a decision to accept the received request, the leader device may update an internal state that tracks the active commissioner for the mesh network.

[0009] In other aspects of mesh network commissioning, the leader device can receive commands from the commissioning device to initiate a join mode for the mesh network and propagate the commissioning data set within the mesh network. The enhanced commissioning credentials can be derived from commissioning credentials injected into the leader device during commissioning of the leader device. The leader device can send an encrypted copy of the commissioning credentials to a border router, allowing the border router to authenticate the commissioning device to the mesh network.

[0010] Mesh network commissioning is described, generally relating to managing multiple commissioning sessions. In an embodiment, the commissioning device establishes a secure commissioning communication session between the commissioning device and a border router of the mesh network to securely establish a network communication session to join one or more joining devices to the mesh network. The secure commissioning communication session is used by the commissioning device to send an application to a leader device of the mesh network to request acceptance of the commissioning device as an active commissioner for the mesh network, and to receive an indication of acceptance of the application from the leader device. The commissioning device can initiate joining for the mesh network and receive requests to join the mesh network from joining devices. To initiate joining for the mesh network, the commissioning device can initiate a join mode that causes routers in the mesh network to advertise that the mesh network is accepting join requests.

[0011] In another aspect of mesh network commissioning, the commissioning device may also send a management message to the leader device to enable joining of the mesh network, the management message being used by the leader device to configure the mesh network. The management messages may include steering data indicating which joining devices are allowed to join the mesh network. The network data is then propagated to router devices in the mesh network, where the network data includes an indication that the mesh network is available for joining. The joining devices establish a secure joiner communication session with the commissioning device. The commissioning device authenticates the joining device using a Pre-Shared Key for the Device (PSKd) for the joining device and verifies the joining device's join status. A secure joiner communications session may be established by the commissioning device determining, from a copy of the device identifier received as input to the commissioning device from the user, that the encrypted device identifier received from the joining device matches the encrypted device identifier derived by the commissioning device, and using the encrypted device identifier as a shared secret to secure the joiner communications session.

[0012] A request to join the mesh network from a joining device can be received via a joiner router, and the commissioning device transmits an indication to the joiner router that the joining device should be entrusted to receive network credentials for the mesh network and a key encryption key (KEK) shared between the commissioning device and the joining device. The transmission via the joiner router to the joining device is effective to enable the joiner router to securely transmit the network credentials to the joining device using the received KEK and commission the joining device into the mesh network. The request received from the joining device can include an encrypted device identifier of the joining device, where the encrypted device identifier is derived from the device identifier of the joining device using Password Authenticated Key Exchange with Juggling (J-PAKE).

[0013] Mesh network commissioning is described, generally with respect to provisioning joining devices. In an embodiment, the commissioning device may establish a commissioning communication session between the commissioning device and a border router of the mesh network, as well as a joiner communication session between the joining device and the commissioning device. The commissioning device then transmits commissioning information to the joining device, which is usable by the joining device to join the mesh network. The commissioning device receives an indication of the location of a commissioner application from the joining device, utilizes the received indication to locate the commissioner application, and executes the commissioner application to provision the joining device.

[0014] Mesh network commissioning, generally with respect to searching and steering, is described. In an embodiment, a commissioning device of a mesh network may determine steering data for the mesh network, the steering data being an indication of a device identifier associated with a device that is authorized to participate in the mesh network. The commissioning device may then propagate the steering data from the commissioning device for the mesh network to one or more routers in the mesh network, the steering data indicating that the commissioner is active on the mesh network. The commissioning device propagating the steering data enables the one or more routers to transmit the steering data in a beacon message, the steering data being effective to enable a device associated with the device identifier to identify that the device is authorized to participate in the mesh network. In an example implementation, the steering data is a device identifier that is an IEEE 64-bit Extended Unique Identifier (EUI-64). The steering data is a 16-bit Cyclic Redundancy Check (CRC16) of IEEE 802.15.4. The commissioning device may determine the steering data for the mesh network by determining the steering data for additional device identifiers associated with additional devices that are permitted to join the mesh network. The commissioning device propagating the steering data is effective to allow devices to distinguish between the mesh network and other networks, where the other networks are IEEE 802.15.4 networks.

[0015] Mesh network commissioning is described, generally with respect to searching and steering. In an embodiment, a commissioning device for a mesh network can determine steering data for the mesh network, the steering data including an indication of device identifiers associated with devices that are authorized to participate in the mesh network, the indication represented as a set of values ​​in a Bloom filter that represents the device identifiers. The commissioning device can then propagate the steering data from the commissioning device for the mesh network to one or more routers in the mesh network. Propagating the steering data enables the routers to transmit the steering data in beacon messages, and the steering data enables devices associated with the device identifiers to compare the set of values ​​in the Bloom filter with a second set of values ​​determined at the device to identify the devices as authorized to participate in the mesh network.

[0016] In another aspect of mesh network commissioning, the commissioning device determines steering data by applying a first hash function to the device identifier to generate a first hash value and applying a second hash function to the device identifier to generate a second hash value. The device identifier may be an IEEE 64-bit Extended Unique Identifier (EUI-64), where the device identifier is the least significant 24 bits of the EUI-64. In an implementation, the first and second hash functions are cyclic redundancy checks (CRCs), where the first hash function is CRC16-CCITT and the second hash function is CRC16-ANSI. The commissioning device then performs a modulo operation on the first hash value to determine a first bit field position in the Bloom filter and a modulo operation on the second hash value to determine a second bit field position in the Bloom filter. A divisor for the modulo operation may be a length of the bit array of the Bloom filter. The commissioning device may set a value in a first bit field position of the Bloom filter to 1 and set a value in a second bit field position of the Bloom filter to 1. The commissioning device may set all of the bit field values ​​in the steering data to a value of 1 to indicate that the mesh network is joinable for any device. Alternatively, the commissioning device may set the bit field values ​​in the steering data to a value of 0 to disable participation for the mesh network.

[0017] Mesh network commissioning is described, generally relating to splitting a node in a mesh network. In an embodiment, a node device in the mesh network receives a commissioning data set and compares a timestamp in the received commissioning data set to a stored timestamp in a commissioning data set stored in the node. The node device may determine from the comparison that the stored timestamp is more recent than the received timestamp and, in response, may transmit a message to a leader device of the mesh network, the message including the stored commissioning data set. The leader device may accept the stored commissioning data set as the most recent commissioning data set for the mesh network and may update the stored commissioning data set. to the mesh network. Alternatively, the node device may determine that the received timestamp is more recent than the stored timestamp and, in response to the determination, update the stored commissioning data set to be consistent with the received commissioning data set.

[0018] In another aspect of mesh network commissioning, the received commissioning data set includes a received timestamp, a commissioning credential, a network name of the mesh network, and a security policy indicating which security-related operations are permitted on the mesh network. The received timestamp includes a time value and an indication that the time value is traceable to Coordinated Universal Time (UTC). In an example implementation, the node device and the leader device were previously commissioned on the mesh network, and the previous commissioning stored identical commissioning data sets on the node device and the leader device. The stored commissioning data set on the node device may be updated after a mesh network split that stops communication between the node device and the leader device on the mesh network. The split separates the mesh network, a first partition of the mesh network includes the leader device, and a second partition of the mesh network includes the node device. The node device can receive the commissioning data set after a merging of the first and second partitions of the mesh network, the merging re-establishing a communication path between the node device and the leader device on the mesh network.

[0019] BRIEF DESCRIPTION OF THE DRAWINGS Embodiments of mesh network commissioning are described with reference to the following drawings, in which the same numerals are used throughout to refer to like features and components. [Brief description of the drawings]

[0020] [Figure 1] FIG. 1 illustrates an example mesh network system in which various embodiments of mesh network commissioning may be implemented. [Diagram 2] FIG. 1 illustrates an example environment in which various embodiments of mesh network commissioning may be implemented. [Figure 3A] FIG. 1 illustrates a simplified version of an exemplary mesh network environment having devices implemented in accordance with an embodiment of mesh network commissioning. [Figure 3B] FIG. 1 illustrates a simplified version of an exemplary mesh network environment having devices implemented in accordance with an embodiment of mesh network commissioning. [Figure 3C] FIG. 1 illustrates a simplified version of an exemplary mesh network environment having devices implemented in accordance with an embodiment of mesh network commissioning. [Figure 3D] FIG. 1 illustrates a simplified version of an exemplary mesh network environment having devices implemented in accordance with an embodiment of mesh network commissioning. [Figure 4] 1 illustrates an example of data transactions between devices in a mesh network environment, according to an embodiment of mesh network commissioning. [Diagram 5] FIG. 1 illustrates an example of a commissioning environment having an established commissioner session and an established joiner session in accordance with an embodiment of mesh network commissioning. [Figure 6] 1 illustrates an example of data transactions between devices in a mesh network environment to establish a commissioner session according to an embodiment of mesh network commissioning. [Figure 7] 1 illustrates an example of data transactions between devices in a mesh network environment to establish a joiner session in accordance with an embodiment of mesh network commissioning. [Figure 8] 11A-11C illustrate example steering data generated using Bloom filters to encode device identifiers for participating devices according to an embodiment of mesh network commissioning. [Figure 9] 1 illustrates an example of partitioning a mesh network according to an embodiment of mesh network commissioning. [Figure 10] 1 illustrates an example method of mesh network commissioning, such as generally relating to joining a node to a mesh network, in accordance with an embodiment of the techniques described herein. [Figure 11] FIG. 1 illustrates another example method of mesh network commissioning, such as generally relating to joining a node to a mesh network, in accordance with embodiments of the techniques described herein. [Figure 12] 1 illustrates an example method of mesh network commissioning, generally relating to establishing a commissioning session in a mesh network, in accordance with an embodiment of the techniques described herein. [Figure 13] FIG. 1 illustrates another example method of mesh network commissioning, generally relating to establishing a commissioning session in a mesh network, in accordance with an embodiment of the techniques described herein. [Figure 14] FIG. 1 illustrates an example method of mesh network commissioning, generally relating to managing multiple commissioning sessions in a mesh network, in accordance with an embodiment of the techniques described herein. [Figure 15] 1 illustrates an example method of mesh network commissioning, as generally related to provisioning participating devices in a mesh network, in accordance with an embodiment of the techniques described herein. [Figure 16] 1 illustrates an example method of mesh network commissioning, generally relating to searching and steering in a mesh network, in accordance with an embodiment of the techniques described herein. [Figure 17] FIG. 1 illustrates another example method of mesh network commissioning, generally relating to searching and steering in a mesh network, in accordance with an embodiment of the techniques described herein. [Figure 18]1 illustrates an example method of mesh network commissioning, generally relating to splitting nodes in a mesh network, in accordance with an embodiment of the techniques described herein. [Figure 19] FIG. 1 illustrates an example environment in which a mesh network may be implemented in accordance with an embodiment of the techniques described herein. [Figure 20] FIG. 1 illustrates an example mesh network device that may be implemented in a mesh network environment in accordance with an embodiment of the techniques described herein. [Figure 21] FIG. 1 illustrates an example system having example devices in which embodiments of mesh network commissioning can be implemented. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0021] Detailed Description A wireless mesh network is a communication network with wireless nodes connected in a mesh topology that provides reliable and redundant communication paths for traffic within the mesh network. A wireless mesh network uses multiple wireless links, or hops, to forward traffic between devices within the mesh network, providing coverage of an area larger than that covered by a single wireless link.

[0022] Wireless mesh networks can be based on proprietary or standards-based technologies. For example, wireless mesh networks are based on the IEEE 802.15.4 standard. Mesh networking standards may be used to define physical (PHY) and media access control (MAC) layer features and services for use by applications at higher layers of the mesh networking stack. Higher layer applications use the services defined by these standards to achieve application-level secure communications (e.g., encryption and authentication) across the mesh network.

[0023] Although standards-based technologies for mesh networks provide services for secure communications, these technologies do not provide a complete solution for secure commissioning of mesh networks. Standards-based solutions may assume that devices are commissioned out-of-band in a secure mesh network and left to be designed by application developers. For example, an out-of-band commissioning solution involves injecting network credentials through a wired connection before a joining device attempts a wireless-based connection to the mesh network. Alternatively, when the mesh network is created, the network credentials are transmitted over an insecure wireless link.

[0024] Secure commissioning of participating devices through a mesh network eliminates the need for specialized commissioning tools, additional interfaces on participating devices for credential injection, and the risk of transmitting credentials over insecure communication links. Various embodiments provide mesh network commissioning techniques to improve the commissioning of devices joining a mesh network.

[0025] Authentication techniques used in Internet-connected networks may rely on the use of certificates issued by a certificate authority. The certificates may be validated to authenticate the identity of another device on the network. Unlike devices on the Internet, devices in a mesh network may not need access to an Internet-connected, certificate-based authentication to authenticate the device for commissioning. A mesh network commissioning technique is described that provides secure authentication of commissioning and participating devices to a mesh network without the need for an external certificate authority.

[0026] Standards for mesh networks provide services for securing communications within a mesh network, such as defining a network key (network master key) and MAC layer encryption methods for communications between devices in the mesh network. However, inserting credentials such as network keys into devices participating in a mesh network is outside the scope of the PHY and MAC services defined by the standards. Out-of-band methods are often used to initially load credentials into participating devices before the participating devices attempt to connect to the mesh network. A mesh network commissioning method is described that securely communicates network credentials through the mesh network to participating devices during commissioning.

[0027] Many devices designed for mesh networks have limited or no user interface capabilities. The limited user interface on mesh network devices makes inputting information such as passphrases, device identifiers and / or device addresses for participating devices cumbersome and error prone for users. A mesh network commissioning technique is described that increases user efficiency and data entry accuracy during commissioning of participating devices in a mesh network.

[0028] As systems using mesh networking become more and more ubiquitous, many participating devices may have to be added during the commissioning of a mesh network. Limited resources and user interfaces of many mesh network devices result in long and costly commissioning, especially when a large number of participating devices must be commissioned or recommissioned. A mesh network commissioning approach is described that increases the scalability of commissioning participating devices into a mesh network.

[0029] Wireless mesh networks may use licensed or unlicensed (also known as license-exempt or license-free) radio spectrum. Standards such as IEEE 802.15.4 govern the use of the unlicensed radio spectrum, including channel frequencies, channel bandwidths, data rates, modulation, access methods, etc., that allow multiple mesh networks to operate within bands of the unlicensed spectrum. In an environment where multiple mesh networks share the same radio spectrum and / or underlying industry standard networking protocols, a mesh network commissioning technique is described that securely joins participating devices to the correct mesh network.

[0030] In addition to inserting network credentials into a participating device during commissioning, additional provisioning may be required for the participating device to update or configure it for use in the mesh network. This provisioning may require secure communication of information, such as linking the participating device to a user account with a cloud service. A mesh network commissioning approach is described for securely provisioning a participating device during commissioning.

[0031] Although the features and concepts of the described systems and methods for mesh network commissioning may be implemented in any number of different environments, systems, devices, and / or various configurations, embodiments of mesh network commissioning are described in the context of the following example devices, systems, and configurations.

[0032] 1 illustrates an exemplary mesh network system 100 in which various embodiments of mesh network commissioning may be implemented. Mesh network 100 is a wireless mesh network including a router 102, a router-qualified end device 104, and an end device 106. Router 102, router-qualified end device 104, and end device 106 each include a mesh network interface for communication through the mesh network. Router 102 transmits and receives packet data through the mesh network interface. Router 102 also routes traffic throughout mesh network 100. Router 102 and router-qualified end device 104 can assume various roles and combinations of roles for commissioning within mesh network 100, as described below.

[0033] A router-eligible end device 104 resides at a leaf node of the mesh network topology and does not actively route traffic to other nodes in the mesh network 100. As the router-eligible device 104 is connected to additional devices, it can become a router 102. An end device 106 is a device that can communicate using the mesh network 100 but does not have the ability to route traffic in the mesh network 100 beyond simply forwarding it to its parent router 102.

[0034] The router 102, router-qualified end devices 104, and end devices 106 contain network credentials that are used to authenticate the identities of these devices as members of the mesh network 100. The router 102, router-qualified end devices 104, and end devices 106 also use the network credentials to encrypt communications in the mesh network.

[0035] 2 illustrates an example environment 200 in which various embodiments of the mesh networking commissioning technique may be implemented. The environment 200 includes a mesh network 100, in which several routers 102 perform specific roles in the mesh network 100. Devices within the mesh network 100, as indicated by the dashed lines, use network credentials to communicate securely through the mesh network 100. Devices shown outside the mesh network 100 do not have a copy of the network credentials for the mesh network 100 and cannot use mesh network layer security to communicate securely.

[0036] A border router 202 (also known as a gateway and / or edge router) is one of the routers 102. The border router 202 includes a second interface for communication with an external network outside the mesh network 100. The border router 202 connects to an access point 204 through the external network. For example, the access point 204 may be an Ethernet router, a Wi-Fi access point, or any other suitable device for bridging different types of networks. The access point 204 connects to a communication network 206, such as the Internet. A cloud service 208 connected via the communication network 206 provides services related to and / or using the devices in the mesh network 100. By way of example and not limitation, the cloud service 208 provides applications including connecting end user devices, such as smartphones, tablets, etc., to devices in the mesh network 100, processing and presenting data obtained in the mesh network 100 to end users, linking devices in one or more mesh networks 100 to user accounts in the cloud service 208, provisioning and updating devices in the mesh network 100, etc.

[0037] A user who chooses to commission a new device to join the mesh network 100 can use a commissioning device 210, which connects to the border router 202 via the external network technology of the access point 204 to commission the new device. The commissioning device 210 may be any computing device, such as a smart phone, tablet, notebook computer, etc., with a suitable user interface and communication capabilities to act in the role of a commissioner for joining a device to the mesh network 100. To become a commissioner for the mesh network 100, the commissioning device 210 applies to be a commissioner, as described in more detail below.

[0038] A joining device 212 is any router-eligible end device 104 or end device 106 that a user selects to join the mesh network 100. Prior to commissioning, the joining device 212 has not received network credentials for the mesh network 100 and is unable to authenticate to or communicate securely through the mesh network 100. During commissioning, the joining device 212 performs the role of a joiner (i.e., joining device), as described in more detail below.

[0039] During commissioning of a joining device 212 to join the mesh network 100, one of the routers 102 performs the role of a joiner router 214. The role of the joiner router 214 may be performed by any router 102 within a wireless link of one of the joining devices 212. The joiner router 214 provides a local-only wireless link to the joining device 212 for a joiner session, as described in more detail below.

[0040] One of the routers 102 acts as a leader 216 for the mesh network 100. The leader 216 manages router identifier assignments and is the primary arbiter of network configuration information for the mesh network 100. The leader 216 also controls which commissioning device 210 is accepted as the only active commissioner for the mesh network 100 at any given time.

[0041] The environment 200 as shown in Figure 2 illustrates devices performing only a single of the various roles described above. Figures 3A-3D as shown and described below illustrate other distributions of commissioning roles for a mesh network commissioning approach, by way of example and not limitation.

[0042] FIG. 3A illustrates a simplified version 300 of the exemplary environment 200, where only devices with a role specific to commissioning are shown for clarity. In this example, each device in FIG. 3A performs a single commissioning role in a mesh network commissioning embodiment. FIG. 3A also illustrates the communication links used during the commissioning process. A secure mesh communication link 302 is used between the devices that have joined the mesh network 100. To commission a joining device 212 to the mesh network 100, an unsecured local-only wireless link 304 is established to connect the joining device 212 to a joiner router 214. An external network 306 has communication links as shown, such as a point-to-point link 308 between the border router 202 and the commissioning device 210 on the external network.

[0043] 3B also illustrates a simplified version 320 of the exemplary environment 200, showing a border / joiner router 322, which is a border router 202 that additionally performs the role of a joiner router 214. FIG. 3C also illustrates a simplified version 340 of the exemplary environment 200, showing a commissioner / border router 342, which is a border router 202 that additionally performs the role of a commissioning device 210. In this example, the commissioner / border router 342 includes a mesh network interface. The commissioner / border router 342 may also be referred to as an on-mesh commissioner, since the commissioner / border router 342 is connected to the mesh network 100.

[0044] 3D also illustrates a simplified version 360 of the example environment 200, showing a commissioner / border router / joiner router 362, which is a border router 202 that additionally performs the roles of a joiner router 214 and a commissioning device 210. Figures 3A-3D illustrate a sample of possible combinations of mesh network commissioning roles, where any router-eligible end device 104 can perform multiple roles (except for the role of joining device 212).

[0045] FIG. 4 illustrates the commissioning process 400 by showing transactions between devices in the mesh network 100 performing various mesh network commissioning roles. The commissioning process 400 begins when the conversation discovers that the mesh network 100 is available for a commissioner from an advertisement 402 from a border router 202. The commissioning device 210 then communicates with the border router 202 using a Pre-Shared Key for the Commissioner (PSKc). The commissioning device 210 establishes a secure socket connection with the leader 216. This secure connection establishes the commissioning session (404). Because there can only be one active commissioner at a time, the commissioning device 210 applies to the leader 216 to become the active commissioning device 210 for the mesh network 100 by sending a request to the border router 202 (406), which is then forwarded by the border router 202 to the leader 216 as a request (408).

[0046] Once the leader 216 accepts the commissioning device 210 as the active commissioner, the leader sends an application response 410 to the border router 202, which then forwards the application response 412 to the commissioning device. The leader 216 also indicates to devices on the mesh network 100 that there is an active commissioner by propagating (414) updated network data throughout the mesh network 100.

[0047] Once active as a commissioner, the commissioning device 210 enables participation for the mesh network 100. Optionally, the commissioning device 210 provides steering data indicating device identifiers of joining devices 212 expected to join the mesh network 100. The commissioning device 210 may also query and set network parameters such as the network name and security configuration.

[0048] The joining device 212 sends a request to establish a joiner session to the joiner router 214 (416), which then relays the request from the joining device 212 to the border router 202 (418). Note that the relay request 418 may be forwarded by any number of routers 102 in the mesh network between the joiner router 214 and the border router 202. The border router 202 forwards the request to establish a joiner session to the commissioning device 210 (420). The commissioning device 210 sends a response to the request for a joiner session to the border router 202 (422), which then relays the response to the joiner router 214 (424). At 426, the joiner router 214 completes the establishment of the joiner session. The establishment of the joiner session in FIG. 4 is shown in a simplified manner for clarity, and additional relayed DTLS messages may be exchanged as part of the DTLS handshake to establish the joiner session.

[0049] As shown at 416-426, the participating device 212 and the commissioning device 210 communicate with each other using Datagram Transport Layer Security (DTLS) using a device specific Pre-Shared Key (PSKd) for the participating device 212. or Transport Layer Security (TLS) to perform the handshake. The handshake is relayed through the mesh network 100, as described in more detail below. The commissioning device 210 derives the PSKd from the joining device credentials received out-of-band of the mesh network 100, typically entered through a user interface of the commissioning device 210, such as by scanning a QR code or barcode. Once the handshake is complete, the shared secret generated from the PSKd is used to establish a joiner session and pass network credentials for the mesh network 100 from the joiner router 214 to the joining device 212. Optionally, in addition to passing network credentials for the mesh network 100, the commissioner session and joiner session may be used to provision the joiner, as shown at 428.

[0050] 5 illustrates a commissioning environment 500 with an established commissioner session and an established joiner session. The commissioner session 502 is a secure communication tunnel from the commissioning device 210 to the border router 202. The joiner session 504 is a secure communication tunnel from the commissioning device 210 to the joining device 212. For clarity, other mesh and external network communication links are omitted.

[0051] First Device Pairing To join a device to the mesh network 100, a first device is commissioned to establish commissioning credentials for the commissioning device to join the mesh network 100 and network credentials for secure operation of the mesh network 100. The commissioning device 210 connects to the first device, which can be any router-eligible end device 104. The first device is commissioned out-of-band to the mesh network 100. To connect the first device to the commissioning device 210, a wireless LAN (WAN) connection can be established using any of the following protocols: USB, ad-hoc Wi-Fi, Bluetooth, point-to-point IEEE 802.15 Any suitable connection may be used, such as .4.

[0052] Once the commissioning device 210 connects to the first device, the commissioning device programs the PSKc and network name for the mesh network 100 into the first device. The PSKc is used to authenticate the commissioning device 210 to the mesh network 100 and establish a commissioning session, as described in more detail below. The network name is human readable, similar to a Service Set Identifier (SSID) in a Wi-Fi network. Once the first device is commissioned, it becomes the leader 216 of the mesh network 100. The first device forms the mesh network 100, including determining a unique Personal Area Network Identifier (PAN ID) and a unique Extended PAN ID (XPANID) for the mesh network 100, and a network key for the mesh network 100.

[0053] The PSKc is derived from a commissioning credential, which is a human-scale passphrase entered into the commissioning device 210 by a user administering the mesh network 100. The commissioning credential is strengthened (e.g., by cryptographically hashing it multiple times) to derive the PSKc, which is stored by the reader 216 and the commissioning device 210. Any suitable cryptographic hashing technique may be used to derive the PSKc.

[0054] To improve the security of the PSKc, cryptographic techniques may be applied to increase the entropy of the commissioning credential in the derived PSKc compared to the equivalent human-scale commissioning credential passphrase entered by the user. By using key stretching, the derived key can be securely stored on an embedded node that can be physically compromised and the user's passphrase will not be compromised. This is useful because users often reuse passphrases for multiple websites and accounts. Any suitable cryptographic technique may be used to stretch the key, for example applying a cryptographic hash multiple times. For example, to apply the Advanced Encryption Standard-Cipher-based Message Authentication Code-Pseudo-Random Function-128 (AES-CMAC-PRF-128), the Password-Based Key Derivation Function 2 (PBKD) is used. For example, PSKc can be derived as shown in Equation 1:

[0055]

number

[0056] where PRF is a type of pseudorandom function to be used by PBKDF2, P is the commissioning credential, S is a salt for the cryptographic function (e.g., a string such as the network type concatenated with the network name), c is the number of iterations of the PRF, and dkLen is the desired length of the derived key (PSKc).

[0057] Establishing a Commissioning Session FIG. 6 illustrates a process 600 for establishing a commissioner session by showing transactions between a commissioning device 210, a border router 202, and a leader 216. Although the mesh network 100 may have a limited number of active commissioning devices 210, there may be multiple potential commissioning devices 210 that can act as a commissioner. The leader 216 is responsible for ensuring that there is only a finite set of active commissioners for the mesh network 100. By way of example and not limitation, the finite set of active commissioners may be limited to a single active commissioner. To become an active commissioner, the commissioning device 210 applies to the leader 216 to become a commissioner for the mesh network.

[0058] At 602, the border router 202 advertises on an external network interface that the mesh network 100 is available for the commissioning device 210. The border router 202 may make the advertisement in response to a multicast request (i.e., a scan or a query) within a service discovery protocol. For example, the advertisement 602 may be made in response to a multicast request for a Multicast Domain Name Service (mDNS) This may be done using any suitable service discovery such as DNS Service Discovery (DNS-SD) or DNS-SD-SDN. Specifically, for wireless networks, the border router 202 will advertise the commissioning service using DNS Service Discovery (DNS-SD) via a Uniform Resource Locator (URL). The lookup server will then respond with all the different wireless networks that are accessible, the network name of the mesh network 100, and the commissioning port.

[0059] The commissioning device 210 responds to the advertisement from the border router 202 by requesting a secure connection for a commissioning session between the commissioning device 210 and the border router 202 (604). The commissioning session may be established in any suitable manner, such as using PSKc to establish the commissioning session using DTLS or TLS. By way of example and not limitation, the commissioning device 210 and the border router 202 exchange DTLS messages 606-616 to identify and authenticate the commissioning device to the mesh network 100 and to establish a secure connection for the commissioner session.

[0060] The commissioning session may use any suitable network port, such as a User Datagram Protocol (UDP) port or a Transmission Control Protocol (TCP) port, as both the source and destination ports of the commissioning session. For example, the commissioning session uses a commissioning port discovered during network discovery. Each border router 202 may be assigned a commissioning port or may use a default commissioning port.

[0061] To become the active commissioner for the mesh network 100, the commissioning device 210 applies (618) to the leader 216 requesting to become the commissioner. Using the commissioning session, the commissioning device 210 sends (620) to the border router 202 a request to become the active commissioner for the mesh network 100. The border router 202 forwards (622) the request to the leader 216. For example, after the commissioning device 210 has been authenticated and identified, the border router 202 unicasts a commissioner application request message 620 (e.g., COMM_PET.req) to the leader 216. The commissioner application request is forwarded by the border router 202 to the leader 216 as a request 622 (e.g., as LEAD_PET.req) requesting that the commissioning device 210 be accepted as the active commissioning device 210 for the mesh network 100. For example, the commissioner application request message, including the commissioner identification string, is securely transmitted throughout the mesh network 100.

[0062] The leader 216 determines whether there is an active commissioner for the mesh network 100. If there is an active commissioner, the leader rejects the application from the commissioning device 210. If there is no active commissioner for the mesh network 100, the leader 216 accepts the application from the commissioning device 210. The leader 216 updates its copy of the commissioning data set to reflect that there is an active commissioner and the identity of the commissioning device 210. The leader 216 sets the join allowed flag for the mesh network 100 to true. The leader 216 then propagates (624) the network data and the updated commissioning data set to the mesh network 100, which indicates that the mesh network 100 is available for joining.

[0063] For example, the leader 216 will respond to the commissioner application request message by accepting or rejecting the commissioning device 210 as the active commissioner for the mesh network 100. If accepted, the leader 216 will update its copy of the network data with the new commissioner information, set the join allowed flag to true, and enable any multicast protocols such as Multicast Protocol for Low Power and Lossy Networks (MPL). The updated network data and commissioning data sets will be propagated throughout the mesh network 100 using a suitable protocol or by multicasting MLE-UPDATE messages.

[0064] Potential joiner routers 214 (i.e., routers 102 and router-eligible end devices 104) store the updated network information and commissioning data sets propagated by the leader 216. The updated network information and commissioning data sets enable direct communication with the commissioning device 210 for use in commissioning any joining devices 212. The routing data set contains a border router locator (RLOC) that allows any device to send a message to the currently active border router 202, which is acting as a proxy for the active commissioner.

[0065] After determining whether to accept or reject the application from the commissioning device 210, the leader 216 responds (626) to the border router 202 with an indication of its decision. The border router 202 sends (628) a response to the commissioning device 210 that includes an indication of the leader's 216 decision to accept or reject the application. For example, the leader 216 sends a leader application response message (e.g., LEAD_PET.rsp) to the border router 202 indicating the leader's 216 decision as to whether to accept or reject the commissioning device 210 as the active commissioner for the mesh network 100. In response to receiving the leader application response message from the leader 216, the border router 202 will send a commissioner application response message (e.g., COMM_PET.rsp) to the commissioning device 210 indicating the leader 216's decision as to whether to accept or reject the commissioning device 210 as the active commissioner for the mesh network 100.

[0066] Alternatively, as shown at 630, after accepting the commissioning device 210's application to become the active commissioner, the leader 216 sets the join allowed flag to true but waits to receive a management data request set message 632 (e.g., MGMT_SET.req) containing an indication from the commissioning device 210 to allow the leader 216 to propagate updated network data to the mesh network 100. The leader 216 replies to the commissioning device with a management data response set message 634 (e.g., MGMT_SET.rsp) to acknowledge the request to propagate the updated network data. The leader 216 propagates (636) the network data and the updated commissioning data set to the mesh network 100, which indicates that the mesh network 100 is available for joining.

[0067] Before the commissioning device 210 sends a management data request configuration message to allow the leader 216 to propagate updated network information, the commissioning device 210 may manage the mesh network 100, such as configuring devices, changing network settings, etc., without enabling the mesh network 100 for participation. The commissioning data set includes a commissioner session identifier, a commissioning data set timestamp, and a PSKc. If the commissioning device 210 is the active commissioner on the mesh network 100, the commissioning data set also includes the location of the border router 202. If the mesh network 100 is joinable, the commissioning data set also includes steering data indicating which joining devices 212 are allowed to join the mesh network 100. If the mesh network 100 is joinable, the routers 102 in the mesh network 100 include a join permission flag and steering data in the beacons sent by the routers 102.

[0068] The commissioning device 210 includes a mesh network 100 control unit 214 that enables the commissioning device 210 to act as a native commissioner on the mesh network 100. If the unique commissioner bit is set in the beacon and the commissioning device 210 includes a mesh network interface, the commissioning device 210 may apply to the leader 216 to become the active commissioner for the mesh network 100.

[0069] Once accepted as the active commissioner, the commissioning device 210 may manage the network using set management data request and get management data response messages to get and set the network parameters of the mesh network 100. The network parameters include the PSKc, network name, network key, network key sequence number, network PAN ID, network extended PAN ID, network Unique Local Address (ULA), and / or radio channel for the mesh network 100. Additional management capabilities are possible, such as the ability to eject previously joined devices from the mesh network 100. Set management data request and get management data response messages are relayed to the leader 216 via the border router 202 throughout the commissioning session. Since messages to get and set network parameter commands affect the state of the entire global network, the messages are forwarded to and stored by the leader 216. Any device can directly address requests to get network information to the leader 216, avoiding multi-hop addressing.

[0070] Establishing a Joiner Session To securely commission a new device into the mesh network 100, a joiner session is established between the commissioning device 210 and the joining device 212. The joiner session is a communication tunnel through the mesh network 100 between the commissioning device 210 and the joining device 212. The joining device credential is a human-scale passphrase used to authenticate that the joining device 212 is eligible to join the mesh network 100. The joining device credential is communicated between the joining device 212 and the commissioning device 210 by any suitable out-of-band mechanism. For example, the joining device credential may be communicated by scanning a QR code or barcode located on the joining device 212 with a camera included in the commissioning device 210, by entering the serial number of the joining device 212 into a user interface of the commissioning device 210, etc.

[0071] 7 illustrates a process 700 for establishing a joiner session by showing transactions between the commissioning device 210, the border router 202, the joiner router 214, and the joining device 212. In some embodiments, the establishment of a joiner session begins when the joining device 212 scans wireless channels, such as those defined in the IEEE 802.15.4 specification, to find potential mesh networks 100 to join. The joining device 212 issues a beacon request (702) to each mesh network 100 it finds during the channel scan, to which all mesh networks 100 will respond.

[0072] For example, the joining device 212 performs an active scan by sending an 802.15.4MAC-BEACON.request on all channels. In response to receiving the beacon request, the joiner router 214 transmits 704 a beacon response including steering data to assist the joining device 212 in discovering the correct mesh network 100 to join. The joiner router 214 transmits an 802.15.4MAC-BEACON.response including the steering data in the payload of the 802.15.4MAC-BEACON.response. The details of generating, transmitting, and using steering data are described in more detail below. Once the joining device 212 finds a mesh network 100 to join, the joining device 212 transmits a local-only wireless, non-secure point-to-point communications link to the joiner router 214. Establish a link.

[0073] For example, the joining device 212 establishes a local-only wireless link to the joiner router 214 by configuring MAC layer network parameters (e.g., channel, PAN ID, etc.) collected from the beacon received from the channel scan (706). The joining device 212 sends a packet to a joiner port (e.g., UDP port) on the insecure interface of the joiner router 214 (e.g., port number 5684 “:coaps”) to establish the local-only wireless link. The joiner port is also communicated in the beacon. If the joiner port is not found, a default port is used by the joining device 212.

[0074] The joining device 212 sends a request to join the mesh network 100 to the joiner router 214. Upon receiving the request to join the mesh network 100, the joiner router 214 sends a request for permission to join to the commissioning device 210. The joiner router 214 forwards all traffic sent by the joining device 212 on the unsecured joiner port. The joiner router 214 does not process or understand the contents of the DTLS handshake understood by the commissioning device 210. In some embodiments, the joiner router 214 may store in its memory the location of the commissioning device 210 or the location of the border router 202 that is a proxy for the commissioning device 210, and may look up the location of the commissioning device 210 from another device (e.g., the leader 216, or the border router 202), or some other location (e.g., a remote service). The PSKd is used to authenticate the joining device 212 to the mesh network 100 and to secure the joiner session between the commissioning device 210 and the joining device 212. The PSKd is derived from the joining device credentials.

[0075] In some embodiments, the joiner session may be established using DTLS and an authentication protocol such as Password Authenticated Key Exchange with Juggling (J-PAKE), Secure Remote Password (SRP) protocol, and / or any other suitable password authenticated key exchange protocol. For example, an elliptic curve variant of J-PAKE using the NIST P-256 elliptic curve (EC-JPAKE) may be used for authentication and key agreement. Using J-PAKE with PSKd proves that the user commissioning the joining device 212 is in physical possession of the joining device 212 and proves that the commissioning device 210 is connected to the correct joining device 212 through the joiner session.

[0076] The joiner router 214 forwards requests to join the mesh network 100 received from the joining device 212 through a joiner session to the commissioning device 210. Upon being authenticated by the commissioning device 210 to join the mesh network 100, a network key is securely transferred to the joining device 212 using the joiner session.

[0077] For example, the joining device 212 may send a joiner identity message to the joiner router 214 to provide a human-readable name for the joining device 212. The joiner router 214 encapsulates the information in the joiner identity message into a relay message and forwards the relay message to the border router 202 using the commissioner prefix, anycast address, or border router locator. Upon receiving the relay message, the border router 202 encapsulates the information in the joiner identity message into a relay message and forwards the relay message to the border router 202 using the commissioner prefix, anycast address, or border router locator. , the address of the joiner router 214) to the list of next-to-last relay addresses in the relay message and forwards the relay message through the joiner session.

[0078] For example, the joining device 212 sends a handshake message to the joiner router 214 using DTLS and UDP (708). The joiner router 214 relays the DTLS handshake message to the border router 202 for delivery to the commissioning device 210 (710). The joiner router 214 is unaware of the contents of the relayed DTLS handshake message. The joiner router 214 filters incoming DTLS handshake messages received from the joining device 212 over the insecure local-only wireless link based on the matched joiner UDP port mentioned above. The joiner router 214 relays all messages received on the identified joiner UDP port. The joiner router 214 prevents Denial of Service (DOS) attacks against the mesh network 100. To avoid this, the transfer of insecure messages may be rate limited.

[0079] As a further example, the joining device 212 first identifies itself to the commissioning device 210 by sending a DTLS-ClientHello message to the joiner router 214. This initial DTLS-ClientHello is intended to allow the commissioning device 210 to assign the joining device 212 a DTLS cookie for use during the remainder of the commissioning exchange. The joiner router 214 encapsulates the DTLS-ClientHello UDP payload within a DTLS relay receipt notification message (e.g., RLY_RX.ntf) and adds the source address of the encapsulated packet, in this case the 64-bit link-local address of the joining device 212, as a relay hop. The DTLS cookie is sent to the joining device 212, which then returns it to the commissioning device 210 to ensure that the joining device 212 is authentic.

[0080] The joiner router 214 also adds its address as a relay point to the DTLS relay receipt notification message. The joiner router 214 sends the DTLS relay receipt notification message to the border router 202. Upon receiving the DTLS relay receipt notification message, the border router 202 forwards the DTLS relay receipt notification message to the commissioning device 210 through the commissioning session (712).

[0081] Based on the joiner identity message received from the joining device 212, the commissioning device 210 uses the joiner identity message to initiate a DTLS-HelloVerify message based on the PSKd. At 714, the DTLS-HelloVerify message and a DTLS relay send notification message (e.g., RLY_TX.ntf) are sent to the border router 202. At 716, the border router 202 relays the DTLS-HelloVerify message and the DTLS relay send notification message to the joiner router 214. At 718, the joiner router 214 sends the DTLS-HelloVerify message to the joining device 212.

[0082] Alternatively, the commissioning device 210 may have information about multiple participating devices 212 to be commissioned. When the commissioning device 210 receives a DTLS-ClientHello message from a particular one of the multiple participating devices 212, it looks up the IEEE 64-bit extended unique identifier (EUI-64) address of the participating device 212 that sent the DTLS-ClientHello message. The commissioning device 210 looks for the PSKd in the information about the multiple participating devices 212 to be commissioned to continue the DTLS handshake for the particular participating device 212. The commissioning device 210 determines the combination The joiner router 214 relays the received DTLS-ServerHello, DTLS-ServerKeyEx, and DTLS-ServerHelloDone back to the joining device 212 via the joiner router 214. Once this DTLS handshake is complete, the joiner session establishment is complete.

[0083] Once the commissioning device 210 has authenticated the joining device 212, the commissioning device 210 will entrust the joining device 212 with network credentials for the mesh network 100. For example, the commissioning device 210 may request the network credentials from the border router 202 and send the network credentials to the joining device 212 in a joiner delegation message over the joiner session, carried by a DTLS relay send notification message over the commissioning session. Alternatively, the commissioning device 210 may use a Key Exchange Key (KES) as a shared secret between the commissioning device 210 and the joining device 212. The KEK is used to entrust the joining device 212 with network credentials for the mesh network 100. The KEK is transmitted to the joiner router 214 on behalf of the joining device 212 and is used to encrypt the network credentials for transmission over the local-only wireless link.

[0084] Provisioning participating devices When the joining device 212 joins the mesh network 100, the joining device 212 may also require provisioning. Provisioning may include updating firmware in the joining device 212, configuring the joining device 212, providing local configuration related to other devices on the mesh network 100, linking the joining device 212 to a user's account on the cloud service 208, linking the joining device 212 to a cloud-based application server, etc. Although still established, the commissioner session and joiner session are used to provide a secure connection to provision the joining device 212 before the joining device 212 uses network credentials to join the mesh network 100.

[0085] The joining device 212 transmits an indication of the location of a commissioner application to be executed by the commissioning device 210 to provision the joining device 212. The indication of the location may be used to locate the commissioner application in the memory of the commissioning device 210 or may be used by the commissioning device 210 to retrieve the commissioner application from the cloud service 208. The indication may be in any suitable form, for example a uniform resource locator (URL). Once provisioning of the joining device 212 is complete, the joining device 212 terminates the joiner session and the local-only wireless link. The joining device 212 uses the network credentials to join the mesh network 100.

[0086] Steering Data Wireless mesh networks may share a radio spectrum. Standards such as IEEE 802.15.4 provide for multiple channels, which allow multiple networks to operate within a band of the radio spectrum. In addition, when there are many devices to be commissioned onto the mesh network 100, it may be desirable to efficiently communicate multiple device identifiers for the many participating devices 212 using steering data in the beacons to assist the participating devices 212 in searching for the correct mesh network 100 to join. In an environment where multiple mesh networks share the same radio spectrum and / or underlying industry standard networking protocols, A mesh network commissioning technique is described that securely joins multiple participating devices 212 to the correct mesh network 100.

[0087] Once the commissioning device 210 has obtained the PSKd and EUI-64 MAC addresses for the desired participating devices 212, it constructs steering data that will signal to the desired participating devices 212 which mesh network 100 to join. The steering data will include some way to distinguish the mesh network 100 from other 802.15.4 based networks, a way to communicate the presence or absence of an active commissioner on the mesh network 100, and a way to identify which participating devices 212 are currently authorized to join the mesh network 100.

[0088] The steering data is determined by the commissioning device 210 and indicates the device identifiers of one or more participating devices 212 that are authorized to join the mesh network 100. The commissioning device 210 propagates the steering data to the routers 102 in the mesh network 100. The routers 102 then include the steering data in a beacon for the mesh network 100 and transmit the beacon to provide the steering data to potential participating devices 212. The beacon is transmitted with an indication that the mesh network 100 is available for participation and whether the potential participating device 212 is authorized to join the mesh network 100. For example, the commissioning device 210 obtains the PSKd and EUI-64 MAC address for the desired participating device 212 as described above. From this EUI-64, the commissioning device 210 constructs steering data to signal the desired participating device 212 that it is authorized to join the mesh network 100.

[0089] In a further example, the steering data may include a list of 16-bit cyclic redundancy check (CRC16) encoded EUI-64 addresses of participating devices 212 that are allowed to join the mesh network 100. The CRC16 provides a compact representation of EUI-64 addresses with a low probability of collision between two different EUI-64 addresses in the CRC16 encoded addresses. The use of the CRC16 reduces the size of the beacon payload required for the device identifiers of the participating devices 212, thereby allowing the appropriate participating devices 212 to efficiently find the correct mesh network 100 to join while efficiently using the mesh network 100's resources.

[0090] If multiple mesh networks 100 have active commissioners, the joining device 212 searches for the correct mesh network 100 by collecting beacons from active scans. The joining device 212 discards collected beacons from non-mesh networks, beacons with the wrong protocol, beacons with the wrong version, beacons with the wrong XPANID, beacons with the wrong network name, and / or beacons for which joining has been disabled. The joining device 212 prioritizes collected beacons that perfectly match the joining device's 212 device identifier in the collected beacon's steering data, and then prioritizes matching collected beacons in order of best signal strength. The joining device 212 attempts to join the preferred networks one at a time (as described above) until the joining device 212 successfully joins the mesh network 100. If the joining device exhausts its priority list of networks without successfully joining the mesh network 100, the joining device 212 may perform an active scan immediately or after a delay period to begin searching the mesh network 100 again.

[0091] The steering data guides which participating devices 212 may or may not attempt to join the mesh network 100. Additionally, all bits in the steering data may be set to a value of 0 to indicate that the mesh network 100 is not available for joining. Alternatively, all bits in the steering data may be set to a value of 1 to indicate that the mesh network 100 is available for joining by any participating device 212.

[0092] Some commissioning devices 210 may lack the resources to easily extract the EUI-64 and participating device credentials by scanning a QR code. In this case, the least significant 24 bits of the EUI-64 are used as a device identifier for the participating device 212 when requesting steering data. The S bit in the beacon indicates whether a short or long device identifier for the participating device 212 is used to request steering data. If the EUI-64 is used as a device identifier for requesting steering data, the S bit is set to a value of 0. If the least significant 24 bits of the EUI-64 are used as a device identifier for requesting steering data, the S bit is set to a value of 1.

[0093] FIG. 8 shows an example 800 of steering data generated using a Bloom filter used to encode device identifiers for participating devices 212 into steering data. Bloom filters provide efficient encoding of device identifiers with a low probability of collision between encoded values ​​of different device identifiers. Each device identifier 802 to be included in the steering data is encoded by a first hash function 804 to generate a first hash value and by a second hash function 806 to generate a second hash value. For example, the first hash function 804 is CRC16-CCITT and the second hash function 806 is CRC16-ANSI. The device identifier 802 is the EUI-64 of the participating device 212. Alternatively, the least significant 24 bits of the EUI-64 are used as the device identifier 802.

[0094] A modulo operation 808 is performed on the first hash value and the second hash value. The divisor for the modulo operation is the length of the Bloom filter's bit array 810 (the bit positions in the bit array 810 are indicated at 812 and the bit values ​​are indicated at 814). Prior to determining the steering data, each bit in the bit array is initialized to a value of 0. The result of each modulo operation determines a position in the bit array. The values ​​at the two determined positions in the bit array are set to a value of 1, and the two determined bit fields provide a mapping to the device identifier.

[0095] For example, for the virtual device identifier 802, performing a modulo operation 808 on the result of the first hash function 804 results in a value of 3 for the device identifier 802. Performing a modulo operation 808 on the result of the second hash function 806 results in a value of 6 for the device identifier 802. To indicate a bloom filtered value of the virtual device identifier 802, the values ​​at bit positions 3 and 6 are set to a value of 1.

[0096] The joining device 212 also calculates a Bloom filter bit position that represents the device identifier of the joining device 212. The joining device 212 determines whether both calculated bit positions contain a value of 1 in the steering data in the collected beacon. A positive determination indicates to the joining device 212 that the joining device 212 is authorized to participate in the mesh network 100. The values ​​of the bits in the Bloom filter bit array may be set to a value of all 1's to indicate that any joining device 212 is authorized to participate in the mesh network 100. Setting all bits in the list to a value of 0 indicates that there is no active commissioner for the mesh network 100 and that the mesh network 100 is not available for participation. The Bloom filter provides a compact representation with anonymity for device identifiers while allowing a suitable participating device 212 to efficiently find the correct mesh network 100 to join, with a low probability of false positives indicating that a particular participating device 212 is authorized to join when that particular participating device is not authorized to join the mesh network 100.

[0097] The parameters for the Bloom filter are the number k of hash functions used to hash the device identifier, the number m of bits in the Bloom filter's bit array, and the number n of participating devices 212 to represent in the steering data. By way of example and not limitation, the parameter k is set to 2, indicating that two hash functions are used: CRC16-CCITT with polynomial 0x1021 and CRC16-ANSI with polynomial 0x8005. Other values ​​of k, hash functions, and polynomials are possible.

[0098] The collision probability p for a Bloom filter can be calculated as follows:

[0099]

number

[0100] The commissioning device 212 may set the length m of the bit array as necessary to obtain a reasonably low collision probability in the steering data. The use of a Bloom filter allows the steering data to be scaled to support the participation of a large number of participating devices 212 in the mesh network 100 while maintaining a low collision probability. The following table shows for various values ​​of n and collision probability p for m=127 (i.e., 16 bytes).

[0101] [Table 1]

[0102] To accommodate a large number of participating devices 212 (e.g., 1000), the commissioning device 210 may break down a large set into smaller sets, such that each smaller set has a lower collision probability (false positive) in the steering data.

[0103] Managing commissioning data across mesh network partitions 9 illustrates the mesh network 100 when a split or partition of the mesh network 100 occurs. For example, one of the routers 102 may lose power, resulting in a split of the mesh network 100 that may prevent one section or segment of the mesh network 100 from communicating with another section. Meanwhile, wireless interference may prevent communication in one portion of the mesh network 100, creating a split in the mesh network 100. When the mesh network 100 splits into two network segments 902 and 904, the network segment 904 will select a leader for the segment 904 and may accept a commissioner for the segment 904 that is different from the commissioner for the segment 902. Either or both of the segments may update their network credentials during the split.

[0104] The mesh network 100 can be cleanly and reliably split into two distinct pieces that are fully functional networks when connectivity between the two partitions is severed. The partitions can continue any outstanding communications fully contained within the uninterrupted partition, and can continue normally with key rotation. Two mesh network partitions that were previously part of a single mesh network 100 can merge autonomously when connectivity between the two partitions is restored.

[0105] If the commissioning credentials are changed in network segment 902 during the split, the change in the commissioning credentials will be propagated to devices in network segment 904 once connectivity is restored between network segments 902 and 904. In other words, in some embodiments, the commissioning credentials are updated to the most recently employed credentials. However, if both network segments 902 and 904 authorize different commissioners and receive different new commissioning credentials during the split, it may become more difficult to determine the most recent credentials.

[0106] Resolution of commissioning credentials between any two previously fragmented but now merging mesh network fragments propagates the most recently changed commissioning data set to the devices in the mesh network 100. If there is a change in fragment 902, the user believes that he has changed the commissioning credentials in the entire mesh network 100, but has effectively changed the credentials only in fragment 902 because of the split. At some later point in time, fragments 902 and 904 merge. After fragmentation, the merged fragment assumes that new credentials were established in fragment 902 during fragmentation because the credentials in fragment 902 were changed but the original credentials in fragment 904 remained unchanged. If there is a change in the commissioning credentials in fragment 904 during the split, the changes made to fragment 904 are propagated to the devices in fragment 902 after the merge.

[0107] If during the split, two users change the commissioning credentials in their respective two shards 902 and 904, each of the two users will think that they are changing the commissioning credentials in the entire mesh network 100. However, because the mesh network 100 is fragmented, both users may establish themselves as the network commissioner and change the commissioning credentials in their respective network shards. At some later point in time, the shards 902 and 904 merge, but it may not be known which leader from the two shards will prevail as the leader for the merged mesh network. The prevailing leader will have a copy of the most recently changed commissioning credentials. Since the commissioning credentials were changed independently in the two shards, the shard with the most recently updated commissioning credentials wins.

[0108] To determine which of the two network credentials is the most recent, the commissioning data set includes timestamp information and the commissioning credentials to resolve differences between the commissioning credentials when mesh networks merge. The timestamp information allows nodes in the mesh network 100 to determine the most recent update to the commissioning credentials in any fragment and to synchronize the commissioning data sets in the devices in the mesh network 100 with the most recently updated commissioning credentials.

[0109] The timestamp information includes a timestamp and an indication of whether the timestamp is traceable to Coordinated Universal Time (UTC) or a relative time reference within the mesh network 100. For example, if the commissioning device 210 is synced to a network time, such as using the Network Time Protocol (NTP), access to time provided through cellular networks, and timing information from Global Positioning System (GPS) receivers. If the timestamp is a timestamp that is traceable to UTC, such as a smartphone or computer, the timestamp is traceable to UTC. By way of example and not limitation, if the timestamp is traceable to UTC, the timestamp may be, for example, 2 -15 It is expressed in seconds that are traceable to a known epoch, such as a timestamp. If the timestamp is a UTC-traceable time, then an indicator such as the U bit is set to indicate that the timestamp is traceable to UTC.

[0110] If the commissioning device 210 is an embedded system, such as a native commissioner, that does not have access to UTC-traceable time, the timestamp includes a relative time value. The relative time value is determined by using the previous value of the timestamp as provided by the reader 216 and adding a clock tick increment to the previous timestamp to generate a timestamp for the updated commissioning data set. By way of example and not limitation, the time tick may be a 15-bit representation of a sub-second time tick derived from the native commissioner's 32 kHz clock. If the timestamp is a relative time, an indication such as a U bit is set to a value of 0 to indicate that the timestamp is expressed as a relative time. The increment in the timestamp for the relative time allows changes to the commissioning data to be detected. When parcels merge, if one of the commissioning timestamps is traceable to UTC and the second is a relative time, the commissioning data with the UTC-traceable timestamp will be given higher priority.

[0111] In the event that timestamps are identical between commissioning credentials that were updated separately during a splinter, alternative means may be used to break the tie between timestamps. In some embodiments, a lexicographical comparison (e.g., memcmp) may be performed to determine which credential is more recent. In an embodiment, if there is a tie between timestamps, the network fragments may be prioritized such that a change to a commissioning credential in one network fragment is adopted. For example, if network fragments 902 and 904 each receive a commissioning credential change that includes the same timestamp, the network fragment having the border router 202 may be prioritized such that if the timestamp values ​​in the commissioning data sets of the two fragments are identical, then the change in network fragment 902 is adopted. It may be considered as a piece.

[0112] Exemplary methods 1000-1800 are described with reference to respective FIGS. 10-18 in accordance with one or more embodiments of mesh network commissioning. In general, any of the components, modules, methods, and operations described herein may be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or any combination thereof. Some operations of the exemplary methods may be described in the general context of executable instructions stored on a computer-readable storage memory local and / or remote to a computer processing system, and implementations may include software applications, programs, functions, and the like. Alternatively, or in addition, any of the functionality described herein may be implemented using Field-programmable Gate Arrays (FPGAs), specific FPGAs, or other similar devices. Application-specific Integrated Circuit (ASIC) Application-specific Standard Product (ASSP), System on Chip System-on-a-chip system (SoC), complex programmable logic devices This includes, but is not limited to, Complex Programmable Logic Devices (CPLDs) and other The method may be performed, at least in part, by one or more hardware logic components not included in the system.

[0113] 10 illustrates an example method 1000 of mesh network commissioning, such as generally relating to joining a node to a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks may be combined in any order to achieve the method or alternative methods.

[0114] At block 1002, a beacon request is received from a joining device, and at block 1004, a beacon is transmitted from the joiner router to the joining device, the beacon providing an indication that the mesh network is available for joining. For example, the joiner router 214 in the mesh network 100 receives a beacon request from the joining device 212 and then transmits a beacon to the joining device, the beacon providing an indication that the mesh network 100 is available for joining. The transmitted beacon is valid to allow the joining device 212 to establish a local link between the joining device and the joiner router.

[0115] At block 1006, a message is received from a joining device requesting to join the mesh network. For example, the joiner router 214 in the mesh network 100 receives a message from the joining device 212 requesting to join the mesh network. The message received from the joining device 212 may include an encrypted device identifier that can be used to authenticate the joining device. The joining device is authenticated using Password Authenticated Key Exchange with Juggling (J-PAKE), and the authentication is effective to establish a secure communication session between the commissioning device 210 of the mesh network 100 and the joining device.

[0116] At block 1008, the received message is forwarded to a commissioning device of the mesh network. For example, the joiner router 214 forwards the received message from the joining device 212 to the commissioning device 210 of the mesh network 100. In an implementation, the message may be received and forwarded using Datagram Transport Layer Security (DTLS) or using User Datagram Protocol (UDP). In addition, the joiner router 214 forwarding the received message to the commissioning device 210 may be configured to forward the message to the joiner router 214 and the commissioning device 210. The communication path between the commissioning device 210 and the mesh network 100 may include forwarding the received message through one or more routers of the mesh network 100. In an implementation, one of the routers may be a border router 202 that connects the mesh network 100 to an external network, where the commissioning device is attached.

[0117] At block 1010, authorization for the joining device to join the mesh network is received, and at block 1012, network information is sent to the joining device, the network information being valid to allow the joining device to join the mesh network 100. For example, the joiner router 214 receives authorization from the commissioning device 210 for the joining device 212 to join the mesh network 100, and the joiner router 214 sends network information to the joining device, the network information being valid to allow the joining device 212 to join the mesh network.

[0118] 11 illustrates an example method 1100 of mesh network commissioning, such as generally relating to joining a node to a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks may be combined in any order to achieve the method or alternative methods.

[0119] At block 1102, a beacon request is received from a joining device, and at block 1104, a beacon is transmitted from the joiner router to the joining device, the beacon providing an indication that the mesh network is available for joining. For example, the joiner router 214 in the mesh network 100 receives a beacon request from the joining device 212 and then transmits a beacon to the joining device, the beacon providing an indication that the mesh network 100 is available for joining. The beacon includes the network name of the mesh network 100 and steering data indicating one or more joining devices 212 that are authorized to join the mesh network. The transmitted beacon is valid to allow the joining device to establish a local link between the joining device and the joiner router.

[0120] At block 1106, a DTLS-ClientHello message is received from a joining device requesting to join the mesh network, and at block 1108, the received DTLS-ClientHello message is encapsulated in a DTLS relay acknowledgement message. For example, the joiner router receives a DTLS-ClientHello message from a joining device 212 requesting to join the mesh network 100 and encapsulates the received DTLS-ClientHello message in a DTLS relay acknowledgement message. The DTLS-ClientHello message can be received from the joining device 212 using User Datagram Protocol (UDP), and the DTLS relay acknowledgement message includes the address of the joining device 212, the address of the joiner router 214, and the received DTLS-ClientHello message.

[0121] At block 1110, the DTLS relay acknowledgement message is sent to a commissioning device of the mesh network. For example, the joiner router sends the DTLS relay acknowledgement message to the commissioning device 210 of the mesh network 100. In an implementation, the joiner router may apply a rate limit to the transmission of the DTLS relay acknowledgement message sent from the joining devices to the commissioning device 210.

[0122] At block 1112, a DTLS relay transmission notification message is received from the commissioning device, and at block 1114, the contents of the DTLS relay transmission notification message are sent to the joining device, the contents enabling the joining device to join the mesh network. For example, the joiner router receives the DTLS relay transmission notification message from the commissioning device 210 and sends the contents of the DTLS relay transmission notification message to the joining device 212, the contents enabling the joining device to join the mesh network 100, the contents being valid for establishing a secure communication session between the commissioning device 210 and the joining device. The DTLS relay transmission notification message includes the address of the joining device 212, the address of the joiner router 214, and a DTLS-HelloVerify message.

[0123] At block 1116, an indication is received from the commissioning device that the joining device should be entrusted to receive network credentials for the mesh network, and a key encryption key (KEK) shared between the commissioning device and the joining device is received at block 1118. For example, the joiner router 214 receives an indication from the commissioning device 210 that the joining device 212 should be entrusted to receive network credentials for the mesh network 100, and also receives the key encryption key (KEK) shared between the commissioning device 210 and the joining device.

[0124] At block 1120, the network credentials are sent to the joining device using the KEK to secure the communication of the network credentials. For example, the joiner router sends the network credentials, including the network master key, to the joining device 212 using the KEK to secure the communication of the network credentials, and the secure communication session can be used to provision the joining device.

[0125] 12 illustrates an example method 1200 of mesh network commissioning, generally as it relates to establishing a commissioning session in a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks may be combined in any order to achieve the method or alternative methods.

[0126] At block 1202, the availability of a mesh network for a commissioning device is advertised, and at block 1204, an application to become a commissioner for the mesh network is received from the commissioning device. For example, the border router 202 of the mesh network 100 advertises the availability of a mesh network for a commissioning device and receives an application to become a commissioner for the mesh network from the commissioning device 210. The application may be received from the commissioning device 210 in response to advertising the availability of the mesh network. The commissioning device 210 may also request to connect securely to the border router 202, the secure connection being established using Datagram Transport Layer Security (DTLS). In addition, the commissioning device 210 and the border router 202 may communicate over other networks besides a mesh network, such as a Wi-Fi network or an Ethernet network.

[0127] At block 1206, the received application is sent to a leader device of the mesh network, and at block 1208, a response to the application is received from the leader device, the response indicating acceptance or rejection of the application. For example, the border router 202 may The network may transmit a received request from the learning device 210 to a leader device 216 of the mesh network 100, and then receive a response to the request from the leader device 216, the response indicating acceptance or rejection of the request. The advertisement may be done using a service discovery protocol, which is the Multicast Domain Name System (mDNS).

[0128] At block 1210, an indication of acceptance or rejection of the application is sent to the commissioning device. For example, the border router 202 sends an indication of acceptance or rejection of the application to the commissioning device 210, and acceptance of the application by the leader device 216 authorizes the commissioning device 210 to become a commissioner for the mesh network. Acceptance of the application establishes a secure commissioning session and also enables the leader device 216 to update its internal state that tracks the active commissioner for the mesh network, set a join allowed flag for the mesh network to true, and propagate the commissioning data set within the mesh network.

[0129] At block 1212, the identity of the commissioning device is registered with the border router to establish a secure commissioning communication session. For example, the border router 202 registers the identity of the commissioning device 210 with the border router 202 to establish a secure commissioning communication session. Registering the identity of the commissioning device 210 includes providing an encrypted commissioning credential to the border router 202, the encrypted commissioning credential being derived from the commissioning credential entered by the user into the commissioning device 210. The border router 202 includes a copy of an encrypted commissioning credential that can be used to authenticate the commissioning device 210 to the mesh network 100, the copy of the encrypted commissioning credential having been previously derived from the commissioning credential, the commissioning credential having been injected into a leader device 216 of the mesh network 100 from which the copy of the encrypted commissioning credential was derived, and the leader device 216 has securely communicated the copy of the encrypted commissioning credential to the border router.

[0130] 13 illustrates an example method 1300 of mesh network commissioning, generally as it relates to establishing a commissioning session in a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks may be combined in any order to achieve the method or alternative methods.

[0131] At block 1302, an application is received to accept a commissioning device as a commissioner for commissioning a joining device to join the mesh network. For example, a leader device 216 of the mesh network 100 receives an application to accept a commissioning device 210 as a commissioner for commissioning a joining device 212 to join the mesh network. The application is received from a border router 202 connected to the leader device 216 through a mesh network, and the commissioning device 210 is connected to the border router 202 through another network, such as a Wi-Fi network or an Ethernet network. The application is also received using a secure communication session between the border router 202 and the commissioning device 210, and the secure communication session is established using Datagram Transport Layer Security (DTLS). The leader device 216 may be configured to communicate with the network interface for the mesh network. A request may be received over the mesh network 100 from a commissioning device 210 including a face, which applies to become a commissioner by setting a unique commissioner bit to true in a network beacon. The commissioning device 210 may communicate the request to the leader device over a Constrained Application Protocol (CoAP) port using an IEEE 802.15.4 interface.

[0132] At block 1304, a determination is made as to whether to accept or reject the received request, and at block 1306, a response is sent to the commissioning device with an indication as to whether to accept or reject the received request. For example, the leader device 216 determines whether to accept or reject the received request and then sends a response to the commissioning device 210 with an indication as to whether to accept or reject the received request. The leader device 216 determines whether to accept or reject the received request based on ensuring that there is one active commissioner for the mesh network 100.

[0133] In response to a decision to accept the received application, an internal state that tracks an active commissioner for the mesh network is updated at block 1308. For example, the leader device 216 updates an internal state that tracks an active commissioner for the mesh network.

[0134] At block 1310, a command is received from the commissioning device to initiate a joining mode for the mesh network, and at block 1312, a commissioning data set is propagated within the mesh network. For example, the leader device 216 receives a command from the commissioning device 210 to initiate a joining mode for the mesh network 100 and propagates the commissioning data set within the mesh network. The commissioning data set includes a commissioner session identifier, a commissioner timestamp, an encrypted commissioner credential, and a security policy indicating which security related operations are permitted in the mesh network. If the commissioner is active on the mesh network 100, the commissioning data set further includes the location of the border router 202. If the joining mode is enabled in the mesh network, the commissioning data set further includes steering data indicating which of the participating devices 212 are permitted to join the mesh network.

[0135] At block 1314, an encrypted commissioning credential is derived from the commissioning credential injected into the reader device 216 during the commissioning of the reader device. For example, the reader device 216 derives the encrypted commissioning credential from the commissioning credential injected into the reader device during the commissioning of the reader device. The derivation of the encrypted commissioning credential is performed by applying a key derivation function, which performs multiple rounds of hashing using a Cipher-based Message Authentication Code (CMAC). In an implementation, the commissioning credential is a human-scale passphrase, and the derivation of the encrypted commissioning credential is effective to extend the length of the commissioning credential.

[0136] At block 1316, a copy of the encrypted commissioning credentials is sent to the border router, allowing the border router to authenticate the commissioning device to the mesh network. For example, the leader device 216 may send the encrypted copy of the commissioning credentials to the border router. A copy of the commissioning credentials is sent to the border router 202 to enable the border router 202 to authenticate the commissioning device 210 into the mesh network.

[0137] 14 illustrates an example method 1400 of mesh network commissioning, generally relating to managing multiple commissioning sessions in a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks may be combined in any order to implement the method or alternative methods.

[0138] At block 1402, a secure commissioning communications session is established between the commissioning device and a border router of the mesh network. For example, the commissioning device 210 establishes a secure commissioning communications session between the commissioning device and a border router 202 of the mesh network 100 to securely establish a network communications session to join one or more joining devices 212 to the mesh network. The commissioning device 210 establishes the secure commissioning communications session by sending an application from the commissioning device to a leader device 216 of the mesh network 100 to request acceptance of the commissioning device 210 as an active commissioner for the mesh network, and the commissioning device receives an indication of acceptance of the application from the leader device.

[0139] At block 1404, joining for the mesh network is initiated. For example, the commissioning device initiates joining for the mesh network by initiating a joining mode that causes one or more routers in the mesh network to advertise that the mesh network is accepting join requests. The commissioning device 210 can also initiate joining for the mesh network 100 by sending a management message to the leader device 216 to make the mesh network available for joining, the management message allowing the leader device 216 to update network data for the mesh network. The network data is propagated to one or more router devices in the mesh network, the network data including an indication that the mesh network 100 is available for joining. The network data can be broadcast in a beacon by the router device, the management message including steering data indicating one or more joining devices 212, and the commissioning device 210 is configured to join the one or more joining devices 212 to the mesh network.

[0140] At block 1406, a request to join the mesh network is received from one of the joining devices. For example, the commissioning device 210 receives a request to join the mesh network 100 from one of the joining devices 212, where the request may be received via a joiner router. The commissioning device 210 can send an indication to the joiner router 214 that the joining device 212 should be entrusted to receive network credentials for the mesh network 100 and a key encryption key (KEK) shared between the commissioning device 210 and the joining device. The indication sent to the joiner router 214 enables the joiner router to securely transmit the network credentials to the joining device 212 using the received KEK and commission the joining device into the mesh network. The request received from the joining device 212 can include an encrypted device identifier of the joining device, where the encrypted device identifier is derived from the device identifier of the joining device using a password authenticated key exchange with juggling (J-PAKE).

[0141] At block 1408, a secure joiner communication session is established between the commissioning device and the joining device. For example, the commissioning device 210 establishes a secure joiner communication session between the commissioning device and the joining device 212. The commissioning device 210 can establish the secure joiner communication session by determining that an encrypted device identifier received from the joining device 212 matches an encrypted device identifier derived by the commissioning device 210 from a copy of the device identifier received as input to the commissioning device from a user, and the commissioning device 210 uses the encrypted device identifier as a shared secret to secure the joiner communication session.

[0142] At block 1410, the joining device is authenticated using the encrypted device identifier, and at block 1412, the joining device joins the mesh network. For example, the commissioning device 210 authenticates the joining device 212 using the encrypted device identifier and joins the joining device 212 to the mesh network.

[0143] 15 illustrates an example method 1500 of mesh network commissioning, as generally related to provisioning participating devices in a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks may be combined in any order to achieve the method or alternative methods.

[0144] At block 1502, a commissioning communications session is established between a commissioning device and a border router of the mesh network. For example, the commissioning device 210 of the mesh network 100 establishes a commissioning communications session between the commissioning device 210 and the border router 202 of the mesh network. At block 1504, a joiner communications session is established between a joining device and the commissioning device. For example, the commissioning device 210 of the mesh network 100 establishes a joiner communications session between the joining device 212 and the commissioning device.

[0145] At block 1506, the commissioning information is transmitted to the joining devices, where the commissioning information is usable by the joining devices to join the mesh network. For example, the commissioning device 210 of the mesh network 100 transmits the commissioning information to the joining devices, where the commissioning information can be used by the joining devices 212 to join the mesh network.

[0146] At block 1508, an indication of the location of the commissioner application is received from the participating device, and at 1510, the commissioner application is retrieved using the received indication. For example, the commissioning device 210 receives the location indication of the commissioner application from the participating device, where the received location indication may be a uniform resource locator (URL), and the commissioning application retrieves the commissioner application from a cloud service over the Internet. The commissioning device 210 can also use the received URL to determine whether the commissioner application is stored in the memory of the commissioning device.

[0147] At block 1512, a commissioner application is executed to provision the joining device. For example, the commissioning device 210 utilizes the commissioner application to provision the joining device. Provisioning the device 212 may include updating software on the participating device, linking the participating device to a user account on a cloud service, and / or configuring the participating device, where the configuration is a local configuration relative to other devices in the mesh network. At block 1514, commissioning of the participating device is completed, allowing the participating device to join the mesh network. For example, the commissioning device 210 of the mesh network 100 may complete the commissioning and allow the participating device 212 to join the mesh network.

[0148] 16 illustrates an example method 1600 of mesh network commissioning, as generally related to searching and steering in a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks can be combined in any order to implement the method or alternative methods.

[0149] At block 1602, steering data for the mesh network is determined, the steering data including an indication of device identifiers associated with devices that are permitted to join the mesh network. For example, the commissioning device 210 of the mesh network 100 determines steering data for the mesh network, the steering data including an indication of device identifiers associated with devices that are permitted to join the mesh network. In an example implementation, the steering data is a 16-bit cyclic redundancy check (CRC16) of the device identifier, which is an IEEE 64-bit extended unique identifier (EUI-64). The commissioning device 210 may also determine steering data for the mesh network 100 by determining steering data for additional device identifiers associated with additional devices that are permitted to join the mesh network.

[0150] At block 1604, the steering data is propagated from the commissioning device for the mesh network to a router in the mesh network. For example, the commissioning device 210 of the mesh network 100 propagates the steering data to a router in the mesh network, the steering data indicating that the commissioner is active on the mesh network. Propagating the steering data is effective to enable the router 102 to transmit the steering data in a beacon message, the steering data enabling a device associated with the device identifier to identify that the device is authorized to participate in the mesh network. Propagating the steering data by the commissioning device 210 is effective to enable a device to distinguish between the mesh network and other networks, the other networks being IEEE 802.15.4 networks.

[0151] 17 illustrates an example method 1700 of mesh network commissioning, as generally related to searching and steering in a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks can be combined in any order to implement the method or alternative methods.

[0152] At block 1702, steering data for the mesh network is determined, the steering data including an indication of device identifiers associated with devices that are permitted to participate in the mesh network, the indication being represented as a set of values ​​in a Bloom filter that represents the device identifiers. For example, the commissioning device 210 of the mesh network 100 may determine steering data for the mesh network by: The steering data includes an indication, expressed as a set of values ​​in a Bloom filter, of the device identifier. In an implementation, the commissioning device 210 determines the steering data by applying a first hash function to the device identifier to generate a first hash value and applying a second hash function to the device identifier to generate a second hash value. The device identifier may be an IEEE 64-bit Extended Unique Identifier (EUI-64), where the device identifier is the least significant 24 bits of the EUI-64. In an implementation, the first and second hash functions are cyclic redundancy checks (CRCs), where the first hash function is CRC16-CCITT and the second hash function is CRC16-ANSI.

[0153] The commissioning device 210 then performs a modulo operation on the first hash value to determine a first bit field position in the Bloom filter and a modulo operation on the second hash value to determine a second bit field position in the Bloom filter. The divisor for the modulo operation may be the length of the Bloom filter bit array. The commissioning device 210 may set the value in the first bit field position of the Bloom filter to 1 and set the value in the second bit field position of the Bloom filter to 1. The commissioning device 210 may set all of the bit field values ​​in the steering data to a value of 1 to indicate that the mesh network is joinable for any device. Alternatively, the commissioning device 210 may set the bit field values ​​in the steering data to a value of 0 to disable participation for the mesh network.

[0154] At block 1704, the steering data is propagated from the commissioning device for the mesh network to routers in the mesh network. For example, the commissioning device 210 of the mesh network 100 propagates the steering data to the routers in the mesh network, the steering data indicating that the commissioner is active on the mesh network. Propagating the steering data enables the router 102 to transmit the steering data in a beacon message, and the steering data enables a device associated with the device identifier to compare a set of values ​​in the Bloom filter with a second set of values ​​determined at the device to identify that the device is authorized to participate in the mesh network.

[0155] 18 illustrates an example method 1800 of mesh network commissioning, such as generally relating to splitting a node in a mesh network. The order in which the method blocks are described is not intended to be construed as limiting, and any number of the described method blocks may be combined in any order to achieve the method or alternative methods.

[0156] At block 1802, a commissioning data set is received at a node device in the mesh network. For example, a node device at a node in the mesh network 100 (e.g., router 102 or end device 106) receives the commissioning data set including a received timestamp, commissioning credentials, a network name for the mesh network, and a security policy indicating which security-related operations are permitted in the mesh network. The received timestamp includes a time value and an indication that the time value is traceable to Coordinated Universal Time (UTC).

[0157] At block 1804, the received timestamp included in the received commissioning data set is compared to a stored timestamp included in a commissioning data set stored in the node device. The node device in compares the received timestamp included in the received commissioning data set with a stored timestamp included in the commissioning data set stored in the node device. In an example realization, the node device and the leader device were previously commissioned into the mesh network, and the previous commissioning stored identical commissioning data sets in the node device and the leader device. The stored commissioning data set in the node device can be updated after a split of the mesh network that stops communication between the node device and the leader device on the mesh network. The split separates the mesh network, a first partition of the mesh network includes the leader device, and a second partition of the mesh network includes the node device. The node device can receive the commissioning data set after a merger of the first and second partitions of the mesh network, and the merger re-establishes a communication path between the node device and the leader device on the mesh network.

[0158] At block 1806, a determination is made as to whether a stored timestamp included in the commissioning data set stored on the node device is more recent than a timestamp included in the received commissioning data set. For example, based on the comparison (at block 1806), the node device determines whether a stored timestamp included in the commissioning data set stored on the node device is more recent than a timestamp included in the received commissioning data set.

[0159] If the stored timestamp is more recent than the received timestamp (i.e., 1806-Yes), then a message is sent 1808 to a leader device of the mesh network, the message including the stored commissioning data set. For example, a node device in the mesh network sends a message including the stored commissioning data set to a leader device of the mesh network 100. The sent message enables the leader device to accept the stored commissioning data set as the most recent commissioning data set for the mesh network and propagate the stored commissioning data set to the mesh network. Alternatively, if the received timestamp is more recent than the stored timestamp (i.e., 1806-No), then the stored commissioning data set is updated 1810 to be consistent with the received commissioning data set. For example, a node device in the mesh network updates the stored commissioning data set to be consistent with the received commissioning data set.

[0160] FIG. 19 illustrates an example environment 1900 in which embodiments of mesh network 100 (as described with reference to FIG. 1) and mesh network commissioning may be implemented. In general, environment 1900 includes mesh network 100 implemented as part of a smart home or other type of structure having any number of mesh network devices configured for communication in the mesh network. For example, mesh network devices may include thermostats 1902, hazard detectors 1904 (e.g., for smoke and / or carbon monoxide), cameras 1906 (e.g., indoor and outdoor), lighting units 1908 (e.g., indoor and outdoor), and any other type of mesh network devices 1910 implemented inside and / or outside of the structure 1912 (e.g., in a smart home environment). In this example, mesh network devices may also include any of the devices implemented as routers 102, end devices 106, and / or joining devices 212, as well as any of the aforementioned devices such as commissioning device 210, border router 202, joiner router 214, etc. It may include any one of the following.

[0161] In the environment 1900, any number of mesh network devices may be implemented for wireless interconnection to wirelessly communicate and interact with one another. Mesh network devices are modular, intelligent, multi-sensing, network-connected devices that can seamlessly integrate with one another and / or with a central server or cloud computing system to provide any of a variety of useful smart home purposes and implementations. An example of a mesh network device that may be implemented as any of the devices described herein is shown and described with reference to FIG.

[0162] In an example implementation, the thermostat 1902 may include a Nest® learning thermostat that detects ambient climate characteristics (e.g., temperature and / or humidity) and controls the HVAC system in a smart home environment. The learning thermostat 1902 and other smart devices "learn" by incorporating occupant settings into the device. For example, the thermostat learns preferred temperature set points for mornings and evenings, the times when the occupants of the structure are asleep or awake, and the times when the occupants are typically away or at home.

[0163] The hazard detectors 1904 may be implemented to detect the presence of hazardous materials or materials indicative of hazardous materials (e.g., smoke, fire, or carbon monoxide). In a wireless interconnection example, the hazard detectors 1904 may detect the presence of smoke indicative of a fire in a structure, in which case the hazard detector that first detects the smoke can broadcast a low power wake-up signal to all of the connected mesh network devices. Other hazard detectors 1904 can then receive the broadcast wake-up signal and activate a high power state for hazard detection to receive wireless communication of a warning message. Also, the lighting units 1908 can receive the broadcast wake-up signal and initiate in the area of ​​the detected hazard to illuminate and identify the problem area. In another example, the lighting units 1908 may activate with one lighting color to indicate a problem area or region in the structure, such as for a detected fire or intrusion, and activate with another lighting color to indicate safe areas and / or escape routes from the structure.

[0164] In various configurations, the mesh network device 1910 may include an entryway interface device that works in concert with a networked door lock system to detect and react to the approach or departure of a person from a location such as an exterior door of the structure 1912. The entryway interface device may interact with other mesh network devices based on whether someone has approached or entered the smart home environment. The entryway interface device may control doorbell functionality, announce the approach or departure of a person via audio or visual means, and may also control settings on a security system, such as to activate or deactivate the security system when an occupant enters or exits. The mesh network device 1910 may also include other sensors and detectors to detect ambient lighting conditions, detect room occupancy (e.g., with an occupancy sensor), control the output state and / or dim state of one or more lights, etc. In some cases, the sensors and / or detectors may also control the output state or speed of a fan, such as a ceiling fan. The sensors and / or detectors may also detect occupancy in a room or enclosure and control the supply of power to an outlet or device, such as when the room or structure is unoccupied.

[0165] The mesh network device 1910 may also include connected appliances and / or controlled systems such as refrigerators, stoves and ovens, washers, dryers, air conditioners, pool heaters, irrigation systems, security systems, as well as televisions, entertainment systems, The mesh network devices 1910 may include other electronic and computing devices such as computers, intercom systems, garage door openers, ceiling fans, control panels, etc. When plugged in, the appliance, device or system may make itself known to the mesh network as described above and may be automatically integrated with the mesh network controls and devices in a smart home or the like. Note that mesh network devices 1910 may include devices that are physically located outside the structure but within wireless communication range, such as devices that control a swimming pool heater or irrigation system.

[0166] As mentioned above, the mesh network 100 includes a border router 202 that interfaces for communication with an external network outside the mesh network 100. The border router 202 connects to an access point 204, which connects to a communication network 206, such as the Internet. A cloud service 208 connected via the communication network 206 provides services related to and / or using the devices in the mesh network 100. By way of example, the cloud service 208 may include applications for connecting end user devices, such as smartphones, tablets, etc., to devices in the mesh network, processing and presenting data obtained in the mesh network 100 to end users, linking devices in one or more mesh networks 100 to user accounts in the cloud service 208, provisioning and updating devices in the mesh network 100, etc. For example, a user may control a thermostat 1902 and other mesh network devices in a smart home environment using a network-connected computer or portable device, such as a mobile phone or tablet device. The mesh network devices may also communicate information to any central server or cloud computing system via the border router 202 and the access point 204. Data communications may be performed using any of a variety of custom or standard wireless protocols (e.g., Wi-Fi, ZigBee® for low power, 6LoWPAN, etc.) and / or by using any of a variety of custom or standard wired protocols (CAT6 Ethernet®, HomePlug®, etc.).

[0167] Any of the mesh network devices in the mesh network 100 can function as low power and communication nodes to create the mesh network 100 in a smart home environment. Individual low power nodes of the network can periodically send out messages regarding what they are sensing, and other low power nodes in the environment can repeat the messages in addition to sending out their own messages, thereby communicating messages from node to node (i.e., device to device) throughout the mesh network. Mesh network devices can be implemented to utilize low power communication protocols to receive messages, convert messages to other communication protocols, and send the converted messages to other nodes and / or a central server or cloud computing system to conserve power, especially if battery powered. For example, an occupancy and / or ambient light sensor can not only measure ambient light, but also detect occupants in a room and activate a light source when the ambient light sensor detects that the room is dark and when the occupancy sensor detects that someone is in the room. The sensor can also include a low power wireless communication chip (e.g., a ZigBee chip) that periodically sends out messages regarding the occupancy of the room and the amount of light in the room, including momentary messages that coincide with the occupancy sensor detecting the presence of a person in the room. As mentioned above, these messages may be transmitted wirelessly from node to node (i.e., device to device) within the smart home environment using a mesh network, and across the Internet to a central server or cloud computing system.

[0168] In other configurations, various of the mesh network devices can act as "trip wires" for an alarm system in a smart home environment. For example, if a perpetrator avoids detection by alarm sensors located at windows, doors, and other entry points into the structure or environment, an alarm can still be triggered by receiving occupancy, motion, heat, sound, etc., messages from one or more of the low-power mesh nodes in the mesh network. In other implementations, the mesh network can be used to automatically turn on and off lighting units 1908 as a person transitions from room to room in the structure. For example, a mesh network device can detect a person's movement through the structure and communicate a corresponding message via a node of the mesh network. Other mesh network devices receiving the message can use the message to indicate which room is occupied and start and / or stop accordingly. As mentioned above, the mesh network can also be utilized to provide exit lighting in an emergency, such as by turning on appropriate lighting units 1908 leading to a safe exit. The lighting units 1908 may also be illuminated to indicate the direction along an exit path a person should travel to safely exit the structure.

[0169] Various mesh network devices may also be implemented to integrate and communicate with wearable computing devices that may be used to identify and locate occupants of the structure and adjust temperature, lighting, sound systems, etc. accordingly. In other implementations, RFID sensing (e.g., a person wearing an RFID bracelet, necklace, or key fob), synthetic vision techniques (e.g., video cameras and facial recognition processors), audio techniques (e.g., voice, acoustic pattern, vibration pattern recognition), ultrasonic sensing / imaging techniques, and infrared or near-field communication (NFC) techniques (e.g., a person wearing an infrared or NFC enabled smartphone), along with rule-based inference engines or artificial intelligence techniques, draw useful conclusions from sensed information regarding the location of occupants in the structure or environment.

[0170] In other implementation examples, the personal comfort area network, personal health area network, personal safety area network, and / or other such human-facing functionalities of the service robot may be enhanced by logical integration with other mesh network devices and sensors in the environment according to rule-based reasoning or artificial intelligence techniques to achieve better performance of these functionalities. In an example related to personal health areas, the system may detect (e.g., using any of the mesh network devices and sensors) whether a pet kept at home is moving toward the resident's current location along with rule-based reasoning and artificial intelligence techniques. Similarly, a hazard detector service robot may be notified that the temperature and humidity levels are increasing in the kitchen and may temporarily increase a hazard detection threshold, such as a smoke detection threshold, under the reasoning that any small increase in the ambient smoke level is likely due to cooking operations and not due to a truly dangerous condition. Any service robot configured for any type of monitoring, detection, and / or servicing may be realized as a mesh node device on a mesh network according to a wireless interconnection protocol for communicating on the mesh network.

[0171] The mesh network device 1910 may also include a smart alarm clock for each individual resident of a structure in a smart home environment. For example, a resident can customize and set the alarm device for a wake-up time for the next day or week, etc. Artificial intelligence can be used to consider the resident's response to the alarm as it goes off and make inferences over time about preferred sleep patterns. Each individual resident can then be tracked in the mesh network based on their unique signature. The unique signature is determined based on data obtained from sensors located on the mesh network devices, such as sensors including ultrasonic sensors, passive IR sensors, etc. The unique signature of an occupant can be based on a combination of patterns of movement, voice, height, size, etc., and can also use facial recognition techniques.

[0172] In an example of wireless interconnection, an individual's wake-up time can be associated with the thermostat 1902 to control the HVAC system in an efficient manner to pre-warm or cool the structure to the desired sleep and wake-up temperature settings. Preferred settings can be learned over time, such as by capturing the temperature set on the thermostat before the person goes to sleep and when they wake up. Data collected may also include biometric indications of the person, such as breathing patterns, heart rate, and movement, from which inferences are made based on a combination of this data and data indicating when the person actually woke up. Other mesh network devices can use this data to provide other smart home purposes, such as adjusting the thermostat 1902 to pre-warm or cool the environment to the desired settings, and turning lights 1908 on or off.

[0173] In an implementation, mesh network devices may also be utilized for acoustic, vibration, and / or motion sensing, such as to detect running water in a smart home environment and make inferences about water usage based on algorithms and mapping of water usage and consumption. This can be used to determine a signature or fingerprint of each water source in the home, also referred to as "audio fingerprinting water usage." Similarly, mesh network devices can be utilized to detect subtle sounds, vibrations, and / or motions of unwanted pests such as mice and other rodents, as well as by termites, cockroaches, and other insects. The system can then notify occupants of suspected pests in the environment with warning messages, etc., to help facilitate early detection and prevention.

[0174] 20 illustrates an example mesh network device 2000 that may be implemented as any of the mesh network devices in a mesh network according to one or more embodiments of mesh network commissioning as described herein. The device 2000 may be integrated with electronic circuitry, a microprocessor, memory, input / output (I / O) logic control, communication interfaces and components, and other hardware, firmware, and / or software for implementing the device in a mesh network. Also, the mesh network device 2000 may be implemented using a variety of components, such as any number of different components and any combination thereof, as further described with reference to the example device illustrated in FIG.

[0175] In this example, the mesh network device 2000 includes a low power microprocessor 2002 and a high power microprocessor 2004 (e.g., a microcontroller or digital signal processor) that process executable instructions. The device also includes input / output (I / O) logic control 2006 (e.g., for including electronic circuitry). The microprocessor may include integrated circuits formed using one or more semiconductors, programmable logic devices, logic device components, and other implementations in silicon and / or hardware, such as processor and memory systems implemented as a system on a chip (SoC). Alternatively or in addition, the device may be implemented using any one or combination of software, hardware, firmware, or fixed logic circuitry that may be implemented using processing and control circuitry. The low power microprocessor 2002 and the high power microprocessor 2004 may also support one or more different device functionalities of the device. For example, the high power microprocessor 2006 may include a microcontroller or a digital signal processor (DSP) that may be implemented using a microcontroller or a digital signal processor (DSP). The high power microprocessor 2004 may perform computationally intensive operations while the low power microprocessor 2002 manages less complex processes, such as detecting hazards or temperature from one or more sensors 2008. The low power microprocessor 2002 may also start up or initialize the high power microprocessor 2004 for computationally intensive processes.

[0176] The one or more sensors 2008 may include acceleration, temperature, humidity, water, power supply, proximity, external motion, device motion, audio signals, ultrasonic signals, light signals, fire, smoke, carbon monoxide, global-positioning-satellite (GPS) signals, radio-frequency (RF), Sensors 2008 may be implemented to detect a variety of characteristics, such as other electromagnetic signals or fields. As such, the sensors 2008 may include any one or combination of temperature sensors, humidity sensors, hazard-related sensors, other environmental sensors, accelerometers, microphones, lesser optical sensors including cameras (e.g., charge-coupled devices or video cameras), active or passive radiation sensors, GPS receivers, and radio frequency identification detectors. In an implementation, the mesh network device 2000 may include one or more primary sensors and one or more secondary sensors, where the primary sensors sense data central to the core operation of the device (e.g., sensing temperature for a thermostat or sensing smoke for a smoke detector), while the secondary sensors sense other types of data (e.g., motion, light, or sound) that may be used for energy efficiency or smart operation purposes.

[0177] The mesh network device 2000 includes a memory device controller 2010 and a memory device 2012, such as any type of non-volatile memory and / or other suitable electronic data storage device. The mesh network device 2000 may also include various firmware and / or software, such as an operating system 2014 maintained by the memory as computer-executable instructions and executed by the microprocessor. The device software may also include a commissioning application 2106 that implements an embodiment of mesh network commissioning. The mesh network device 2000 also includes a device interface 2018 for interfacing with another device or peripheral component, and includes an integrated data bus 2020 that couples the various components of the mesh network device for data communication between the components. The data bus in the mesh network device may also be implemented as any one or combination of different bus structures and / or bus architectures.

[0178] The device interface 2018 may receive input from and / or provide information to a user (e.g., as a user interface), and the received input may be usable to define settings. The device interface 2018 may also include mechanical or virtual components that respond to user input. For example, a user may mechanically move a sliding or rotatable component, or movement along a touchpad may be detected, and such movement may correspond to adjusting settings of the device. Physical and virtual movable user interface components may allow a user to set settings along some portion of a distinct continuum. The device interface 2018 may also receive input from any number of peripheral devices, such as buttons, keypads, switches, microphones, and imaging devices (e.g., camera devices).

[0179] The mesh network device 2000 includes a mesh network interface for communication with other mesh network devices in the mesh network, and an external network interface for network communication, such as via the Internet. The mesh network device 2000 may include a network interface 2022, such as a cellular network interface (WAN) 2024. The mesh network device 2000 may also include a wireless system 2024 for wireless communication with other mesh network devices via the mesh network interface and for a number of different wireless communication systems. The wireless system 2024 may include any of a variety of wireless communication technologies, including Wi-Fi, Bluetooth, The different wireless systems may include mobile broadband, and / or point-to-point IEEE 802.15.4. Each of the different wireless systems may include a wireless device, antenna, and chipset implemented for a particular wireless communication technology. The mesh network device 2000 also includes a power source 2026, such as a battery and / or for connecting the device to a line voltage. An AC power source may also be used to charge the device's battery.

[0180] 21 illustrates an example system 2100 including an example device 2102 that may be implemented as any of the mesh network devices implementing embodiments of mesh network commissioning as described with reference to FIGS. 1-20 above. The example device 2102 may be any type of computing device, client device, mobile phone, tablet, communication device, entertainment device, gaming device, media playback device, and / or other type of device. The example device 2102 may also be implemented as any other type of mesh network device configured for communication over a mesh network, such as a thermostat, hazard detector, camera, lighting unit, commissioning device, router, border router, joiner router, joining device, end device, leader, access point, and / or other mesh network device.

[0181] The device 2102 includes a communication device 2104 that enables wired and / or wireless communication of device data 2106, such as data communicated between devices in the mesh network, data being received, data scheduled for broadcast, data packets of data, and data to be synchronized between devices. The device data may include any type of communication data, as well as audio, video, and / or image data generated by applications executing on the device. The communication device 2104 may also include a transceiver for cellular communication and / or for network data communication.

[0182] The device 2102 also includes input / output (I / O) interfaces 2108, such as data network interfaces that provide connectivity and / or communication links between the device, data networks (e.g., mesh networks, external networks, etc.), and other devices. The I / O interfaces can be used to couple the device to any type of component, peripheral, and / or accessory. The I / O interfaces also include data input ports, through which any type of data, media content, and / or input, such as user input to the device, can be received, and any type of communication data, as well as audio, video, and / or image data, can be received from any content and / or data source.

[0183] The device 2102 includes a processing system 2110, which may be implemented at least in part in hardware, such as having any type of microprocessor, controller, etc. that processes executable instructions. The processing system may include integrated circuits formed using one or more semiconductors, programmable logic devices, logic device components, and other implementations in silicon and / or hardware, such as processor and memory systems implemented as a system-on-a-chip (SoC). Alternatively, or in addition, the device may include any one or more of software, hardware, firmware, or fixed logic circuitry that may be implemented using processing and control circuitry. The device 2102 may further include any type of system bus or other data and command transfer system coupling various components within the device. The system bus may include any one or combination of different bus structures and architectures, as well as control and data lines.

[0184] The device 2102 also includes computer-readable storage memory 2112, such as a data storage device that is accessible by the computing device and provides persistent storage of data and executable instructions (e.g., software applications, modules, programs, functions, etc.). Computer-readable storage memory as described herein excludes propagating signals. Examples of computer-readable storage memory include volatile and non-volatile memory, fixed and removable media devices, and any suitable memory device or electronic data storage that maintains data for access by a computing device. The computer-readable storage memory may include various implementations of random access memory (RAM), read-only memory (ROM), flash memory, and other types of storage memory in various memory device configurations.

[0185] The computer readable storage memory 2112 provides storage for device data 2106 and various device applications 2114, such as an operating system that is maintained in the computer readable storage memory as software applications and executed by the processing system 2110. The device applications may also include device managers, such as any form of control application, software applications, signal processing and control modules, code specific to a particular device, hardware abstraction layers for a particular device, etc. In this example, the device applications also include a commissioning application 2116 that implements an embodiment of mesh network commissioning, such as when the example device 2102 is implemented as any of the mesh network devices described herein.

[0186] The device 2102 also includes an audio and / or video system 2118 that generates audio data for the audio device 2120 and / or generates display data for the display device 2122. The audio and / or display devices include any device that processes, displays, and / or otherwise represents audio, video, display, and / or image data, such as image content of a digital photograph. In an implementation, the audio and / or display devices are integrated components of the exemplary device 2102. Alternatively, the audio and / or display devices are external peripheral components of the exemplary device. In an embodiment, at least some of the techniques described for mesh network commissioning may be implemented in a distributed system, such as through a platform 2126 via a “cloud” 2124. The cloud 2124 includes and / or represents the platform 2126 for services 2128 and / or resources 2130.

[0187] The platform 2126 abstracts the underlying functionality of the hardware, such as server devices (e.g., included in services 2128) and / or software resources (e.g., included as resources 2130), and connects the example device 2102 to other devices, servers, and the like. The resources 2130 may also include applications and / or data available during computer processing performed on a server remote from the example device 2102. Additionally, the services 2128 and / or resources 2130 may be connected to the Internet, a cellular network, or a Wi-Fi network. The platform 2126 may facilitate subscriber network services over a network, such as over a network of networks. The platform 2126 may also function to abstract and scale resources to service demands for resources 2130 implemented via the platform, such as in an interconnected device embodiment where functionality is distributed throughout the system 2100. For example, functionality may be implemented in part in the example device 2102 and through the platform 2126 that abstracts the functionality of the cloud 2124.

[0188] Although embodiments of mesh network commissioning have been described in language specific to features and / or methods, the subject matter of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations of mesh network commissioning, and other equivalent features and methods are intended to fall within the scope of the appended claims. Also, it should be understood that a variety of different embodiments have been described, and that each described embodiment can be implemented independently or in conjunction with one or more of the other described embodiments.

[0189] A method for securely joining a joining device to a mesh network includes the steps of receiving, at a joiner router, a message from the joining device requesting to join the mesh network, forwarding the received message to a commissioning device of the mesh network, receiving from the commissioning device an authorization for the joining device to join the mesh network, and transmitting network information to the joining device, the network information being valid for enabling the joining device to join the mesh network.

[0190] Alternatively or in addition to the above method, the method further includes receiving a beacon request from a joining device and transmitting a beacon from the joiner router to the joining device, the beacon providing an indication that the mesh network is available for joining; transmitting the beacon is effective to enable the joining device to establish a local link between the joining device and the joiner router; receiving the message and forwarding the received message are performed using Datagram Transport Layer Security (DTLS); receiving the message and forwarding the received message are performed using User Datagram Protocol (UDP); and transmitting the message from the joining device. the message includes an encrypted device identifier that can be used to authenticate the joining device, and the joining device is authenticated using Password Authenticated Key Exchange with Juggling (J-PAKE), and the authentication is effective to establish a secure communication session between the commissioning device and the joining device; forwarding the received message to the commissioning device includes forwarding the received message through one or more routers of the mesh network in a communication path between the joiner router and the commissioning device; and one of the one or more routers is a border router connecting the mesh network to an external network, and the commissioning device is attached to the external network.

[0191] A mesh network device implemented as a joiner router, the mesh network device including a mesh network interface configured for communication in a mesh network, and a memory and processor system for implementing a commissioning application, the commissioning application receiving, via the mesh network interface, a message from a joining device requesting to join the mesh network, and synchronizing the received message with a joiner router in the mesh network. and configured to forward the network information to a commissioning device of the mesh network, receive from the commissioning device an authorization for the joining device to join the mesh network, and initiate transmission of network information to the joining device, the network information being valid to enable the joining device to join the mesh network.

[0192] Alternatively or in addition to the above-mentioned mesh network device, the commissioning application is configured to receive a beacon request from a joining device via a mesh network interface and initiate a beacon being sent from the joiner router to the joining device, the beacon providing an indication that the mesh network is available for joining; the beacon is valid to enable the joining device to establish a local link between the joining device and the joiner router; the commissioning application is configured to receive messages using Datagram Transport Layer Security (DTLS) and forward the received messages; the commissioning application is configured to receive messages using User Datagram Protocol (UDP) and forward the received messages. the message received from the joining device includes an encrypted device identifier that can be used to authenticate the joining device, and the joining device is authenticated using Juggling Password Authenticated Key Exchange (J-PAKE), and the authentication is effective to establish a secure communication session between the commissioning device and the joining device; the commissioning application is configured to forward the received message through one or more routers of the mesh network in a communication path between the joiner router and the commissioning device; and one of the one or more routers is a border router connecting the mesh network to an external network, and the commissioning device is attached to the external network.

[0193] The mesh network system includes a joining device configured to request to join the mesh network, and a joiner router, the joiner router configured to receive a message from the joining device requesting to join the mesh network, forward the received message to a commissioning device of the mesh network, receive from the commissioning device an authorization for the joining device to join the mesh network, and transmit network information to the joining device, the network information being valid to enable the joining device to join the mesh network.

[0194] Alternatively or in addition to the above-mentioned mesh network system, any one or combination of the following may be included: the joiner router is configured to receive a beacon request from the joining device and to send a beacon to the joining device, the beacon providing an indication that the mesh network is available for joining, the beacon being valid for allowing the joining device to establish a local link between the joining device and the joiner router; the message received from the joining device includes an encrypted device identifier that can be used to authenticate the joining device, the joining device being authenticated using a Password Authenticated Key Exchange with Juggling (J-PAKE), the authentication being valid for establishing a secure communication session between the commissioning device and the joining device; and the joiner router is configured to forward the received message to the commissioning device through one or more routers of the mesh network in a communication path between the joiner router and the commissioning device, one of the routers being a border router connecting the mesh network to an external network.

[0195] A method for securely joining a joining device to a mesh network includes receiving, at a joiner router, a DTLS-ClientHello message from a joining device requesting to join the mesh network, encapsulating the received DTLS-ClientHello message within a DTLS Relay Receipt Notification message, transmitting the DTLS Relay Receipt Notification message to a commissioning device of the mesh network, receiving a DTLS Relay Send Notification message from the commissioning device, and transmitting contents of the DTLS Relay Send Notification message to the joining device, the contents being valid for enabling the joining device to join the mesh network, the method further includes receiving an indication from the commissioning device that the joining device should be entrusted to receive network credentials for the mesh network, receiving from the commissioning device a Key Encryption Key (KEK) shared between the commissioning device and the joining device, and in response to receiving the indication, transmitting the network credentials from the joiner router to the joining device using the KEK to secure communication of the network credentials.

[0196] Alternatively or in addition to the above method, the method may further include receiving a beacon request from the joining device and sending a beacon from the joiner router to the joining device; the beacon includes a network name and steering data indicating one or more joining devices that are allowed to join the mesh network; receiving a DTLS-ClientHello message from the joining device utilizes User Datagram Protocol (UDP); the DTLS Relay Notification message includes an address of the joining device, an address of the joiner router, and the received DTLS-ClientHello message; the DTLS Relay Send Notification message includes an address of the joining device, an address of the joiner router, and a DTLS-HelloVerify message; sending contents of the DTLS Relay Send Notification message to the joining device is effective to establish a secure communication session between the commissioning device and the joining device; the secure communication session is usable for provisioning the joining device; and applying a rate limit to transmission of the DTLS Relay Send Notification message sent from the joining device to the commissioning device.

[0197] and a memory and processor system for implementing a commissioning application, the commissioning application being configured to: receive, via the mesh network interface, a DTLS-ClientHello message from a joining device requesting to join the mesh network; encapsulate the received DTLS-ClientHello message within a DTLS Relay-Receipt Notification message; initiate the DTLS Relay-Receipt Notification message being transmitted to a commissioning device of the mesh network; receive, from the commissioning device, a DTLS Relay-Send Notification message and initiate the content of the DTLS Relay-Send Notification message being transmitted to the joining device, the content being valid to enable the joining device to join the mesh network; the commissioning application further being configured to receive, from the commissioning device, an indication that the joining device should be entrusted to receive network credentials for the mesh network; receive, from the commissioning device, a Key Encryption Key (KEK) shared between the commissioning device and the joining device; and, in response to the indication, transmit the network credentials to the joining device. The joiner router is configured to initiate transmission of network credentials from the joiner router to the joining devices using the KEK to secure communications between the joiner router and the joining device.

[0198] Alternatively or in addition to the above-mentioned mesh network device, the commissioning application may include any one or combination of the following: receiving a beacon request from the joining device via the mesh network interface and initiating a beacon being sent from the joiner router to the joining device; the commissioning application is configured to receive a DTLS-ClientHello message from the joining device using User Datagram Protocol (UDP); the DTLS relay receive notification message includes the joining device's address, the joiner router's address, and the received DTLS-ClientHello message, and the DTLS relay send notification message includes the joining device's address, the joiner router's address, and the DTLS-HelloVerify message; the content of the DTLS relay send notification message sent to the joining device is valid for establishing a secure communications session between the commissioning device and the joining device; and the secure communications session is usable for provisioning the joining device.

[0199] The mesh network system includes a joining device configured to request to join the mesh network and a joiner router, the joiner router configured to receive a DTLS-ClientHello message from the joining device requesting to join the mesh network, encapsulate the received DTLS-ClientHello message in a DTLS Relay Receipt Notification message and transmit the DTLS Relay Receipt Notification message to a commissioning device of the mesh network, receive a DTLS Relay Send Notification message from the commissioning device and transmit contents of the DTLS Relay Send Notification message to the joining device, the contents being valid to enable the joining device to join the mesh network, the joiner router further configured to receive an indication from the commissioning device that the joining device should be entrusted to receive network credentials for the mesh network, receive from the commissioning device a Key Encryption Key (KEK) shared between the commissioning device and the joining device, and in response to the indication, transmit the network credentials from the joiner router to the joining device using the KEK to secure communication of the network credentials.

[0200] Alternatively or in addition to the above-mentioned mesh network system, the mesh network system may include any one or combination of the following: receiving a beacon request from a joining device and sending a beacon from the joiner router to the joining device; the beacon including a network name and steering data indicating one or more joining devices that are authorized to join the mesh network; the joiner router configured to receive a DTLS-ClientHello message from the joining device using User Datagram Protocol (UDP); and the DTLS relay receive notification message including an address of the joining device, an address of the joiner router, and the received DTLS-ClientHello message, and the DTLS relay send notification message including an address of the joining device, an address of the joiner router, and the DTLS-HelloVerify message.

[0201] A method of authorizing a commissioning device to be a commissioner for commissioning one or more participating devices to participate in a mesh network includes the steps of receiving, at a border router, from the commissioning device an application to become a commissioner for the mesh network; and authorizing the received application to be a commissioner for the mesh network by a border router. and receiving a response to the application from the leader device, the response indicating acceptance or rejection of the application, the method further including, in response to receiving the response, transmitting an indication of acceptance or rejection of the application to the commissioning device.

[0202] Alternatively or in addition to the above method, the method further comprises the step of advertising, by the border router, the availability of the mesh network for the commissioning device, wherein the step of receiving the request is responsive to the commissioning device receiving the advertisement; the step of receiving, at the border router, a request from the commissioning device to securely connect to the border router; the secure connection is established using Datagram Transport Layer Security (DTLS); the step of sending an indication of acceptance of the request establishes a secure commissioning session; the step of registering an identity of the commissioning device with the border router to establish a secure commissioning communication session, wherein the step of registering further comprises the step of registering an identity of the commissioning device with the border router to establish a secure commissioning communication session, wherein the step of registering includes the step of registering an encrypted commissioning credential. the border router includes a step of providing an encrypted commissioning credential to the commissioning device, the encrypted commissioning credential being derived from a commissioning credential entered by a user into the commissioning device; the border router including a copy of the encrypted commissioning credential that is usable to authenticate the commissioning device to the mesh network; and the copy of the encrypted commissioning credential was previously derived from the commissioning credential, the commissioning credential being injected into a leader device of the mesh network from which the copy of the encrypted commissioning credential was derived, the leader device securely communicating the copy of the encrypted commissioning credential to the border router.

[0203] A mesh network device implemented as a border router, the mesh network device including a mesh network interface configured for communication in the mesh network and a memory and processor system for implementing a commissioning application, the commissioning application configured to receive from the commissioning device via the mesh network interface an application to become a commissioner for the mesh network for commissioning one or more participating devices to join the mesh network, initiate transmission of the received application to a leader device of the mesh network, and receive from the leader device a response to the application, the response indicating acceptance or rejection of the application, the commissioning application further configured to initiate transmission of an indication of acceptance or rejection of the application to the commissioning device in response to the received response to the application.

[0204] Alternatively or in addition to the mesh network device described above, the commissioning application is configured to advertise availability of the mesh network for the commissioning device and receive a request in response to the commissioning device receiving the advertised availability, the advertised availability being made using a service discovery protocol including multicast domain name system (mDNS); the commissioning application is configured to receive a request from the commissioning device to securely connect to a border router, the secure connection being established using Datagram Transport Layer Security (DTLS); acceptance of the application by the leader device authorizes the commissioning device to become a commissioner for the mesh network, and the leader device updates an internal state that tracks active commissioners for the mesh network. the acceptance of the application to enable the commissioning device to join the mesh network sets a join permission flag for the mesh network to true and propagates the commissioning data set within the mesh network, and the transmitted indication of acceptance of the application establishes a secure commissioning session; the commissioning application is configured to register an identity of the commissioning device with the border router to establish a secure commissioning communications session including an encrypted commissioning credential provided to the border router, the encrypted commissioning credential being derived from a commissioning credential entered by a user into the commissioning device, and the border router includes a copy of the encrypted commissioning credential that can be used to authenticate the commissioning device to the mesh network; the commissioning device and the border router communicate through another network other than the mesh network; and the other network is one of a Wi-Fi network or an Ethernet network.

[0205] The mesh network system includes a commissioning device configured to apply to become a commissioner for commissioning one or more participating devices to join the mesh network, and a border router, the border router configured to receive an application to become a commissioner for the mesh network from the commissioning device, transmit the received application to a leader device of the mesh network, and receive a response to the application from the leader device, the response indicating acceptance or rejection of the application, and the border router further configured to transmit an indication of the acceptance or rejection of the application to the commissioning device.

[0206] Alternatively or in addition to the above-mentioned mesh network system, any one or combination of the following may be included: the border router is configured to advertise availability of the mesh network for the commissioning device and the commissioning device is configured to receive an application in response to receiving the advertisement; the commissioning device and the border router communicate through another network other than the mesh network; the other network is one of a Wi-Fi network or an Ethernet network; and the border router is configured to send an indication of acceptance of the application to establish a secure commissioning session.

[0207] A method implemented by a leader device of a mesh network includes receiving, by the leader device, an application to accept a commissioning device as a commissioner for commissioning a joining device to join the mesh network, determining whether to accept or reject the received application, transmitting a response including an indication of the decision, and in response to the decision being accept, updating an internal state that tracks active commissioners for the mesh network.

[0208] Alternatively or in addition to the above method, the method further comprises receiving a command from the commissioning device to initiate a join mode for the mesh network; further comprises propagating a commissioning data set within the mesh network; the commissioning data set including a commissioner session identifier, a commissioner timestamp, encrypted commissioner credentials, and a security policy indicating which security related operations are permitted in the mesh network; and propagating the encrypted commissioning data set from the commissioning credentials injected into the leader device during commissioning of the leader device. the derivation of the encrypted commissioning credential is by applying a key derivation function, the key derivation function comprising multiple rounds of hashing using a Cipher-based Message Authentication Code (CMAC); the further step of sending a copy of the encrypted commissioning credential to the border router, the copy being valid for enabling the border router to authenticate the commissioning device to the mesh network; and, if the commissioner is active on the mesh network, the commissioning data set further includes the location of the border router.

[0209] A mesh network device implemented as a leader device of a mesh network, the mesh network device including a mesh network interface configured for communication in the mesh network and a memory and processor system for implementing a commissioning application, the commissioning application configured to receive, via the mesh network interface, an application to accept the commissioning device as a commissioner for commissioning a joining device to join the mesh network, determine whether to accept or reject the received application, initiate a response being sent including an indication of the decision to accept or reject the received application, and in response to the decision being an acceptance of the received application, update an internal state that tracks an active commissioner for the mesh network.

[0210] Alternatively or in addition to the mesh network device as described above, the commissioning application is configured to receive a command from the commissioning device to initiate a join mode for the mesh network; the commissioning application is configured to propagate a commissioning data set within the mesh network; the commissioning data set includes a commissioner session identifier, a commissioner timestamp, encrypted commissioner credentials, and a security policy indicating which security related operations are permitted in the mesh network, and the commissioning application is further configured to propagate a commissioning data set injected into the leader device during commissioning of the leader device. the commissioning application is configured to derive an encrypted commissioning credential from the commissioning credential, where the derivation of the encrypted commissioning credential is performed by applying a key derivation function, where the key derivation function comprises multiple rounds of hashing using a Cipher-based Message Authentication Code (CMAC); the commissioning application is configured to send to the border router a copy of the encrypted commissioning credential, where the copy is valid for enabling the border router to authenticate the commissioning device to the mesh network; and, if the commissioner is active on the mesh network, the commissioning dataset further includes the location of the border router.

[0211] The mesh network system includes a commissioning device configured to apply to become a commissioner for commissioning one or more participating devices to join the mesh network, and a leader device of the mesh network, the leader device receiving an application to accept the commissioning device as a commissioner for commissioning the participating devices to join the mesh network, determining whether to accept or reject the received application, transmitting a response including an indication of a decision regarding whether to accept or reject the received application, and in response to the decision being accept, tracking an active commissioner for the mesh network. It is configured to update its internal state.

[0212] Alternatively or in addition to the above mentioned mesh network system, the leader device is configured to receive a command from the commissioning device to initiate a join mode for the mesh network; the leader device is configured to propagate a commissioning data set within the mesh network; the commissioning data set includes a commissioner session identifier, a commissioner timestamp, encrypted commissioner credentials, and a security policy indicating which security related operations are permitted in the mesh network, and the leader device is further configured to propagate a commissioning data set within the mesh network, the commissioning data set including a commissioner session identifier, a commissioner timestamp, encrypted commissioner credentials, and a security policy indicating which security related operations are permitted in the mesh network, the leader device being ... the commissioning data set is configured to derive an encrypted commissioning credential from the commissioning credential, where the derivation of the encrypted commissioning credential is performed by applying a key derivation function, where the key derivation function includes multiple rounds of hashing using a Cipher-based Message Authentication Code (CMAC); the leader device is configured to send a copy of the encrypted commissioning credential to the border router, the copy being valid to enable the border router to authenticate the commissioning device to the mesh network; and, if the commissioner is active on the mesh network, the commissioning data set further includes the location of the border router.

[0213] A method for securely establishing a network communication session to join one or more joining devices to a mesh network includes the steps of establishing a secure commissioning communication session between a commissioning device and a border router of the mesh network, initiating joining for the mesh network, receiving, by the commissioning device, a request to join the mesh network from one of the joining devices, establishing a secure joiner communication session between the commissioning device and the joining device, and joining the joining device to the mesh network.

[0214] Alternatively or in addition to the above method, the step of establishing a secure commissioning communications session includes the steps of: sending an application from the commissioning device to a leader device of the mesh network to request acceptance of the commissioning device as an active commissioner for the mesh network, and receiving an indication of acceptance of the application from the leader device; initiating a join for the mesh network includes the commissioning device initiating a join mode that causes one or more routers in the mesh network to advertise that the mesh network is accepting join requests; initiating a join for the mesh network includes sending a management message to the leader device to enable the mesh network for join, the management message being received by the leader device. the step of receiving a request to join the mesh network from one of the joining devices is received via a joiner router, the method further comprising the step of transmitting an indication to the joiner router that the joining device should be entrusted to receive network credentials for the mesh network and a key encryption key (KEK) shared between the commissioning device and the joining device, the step of transmitting comprising: enabling a commissioning device to update network data for the mesh network and propagating the network data to one or more router devices in the mesh network, the network data including an indication that the mesh network is available for joining; the step of authenticating the joining device using an encrypted device identifier; the step of receiving a request to join the mesh network from one of the joining devices is received via a joiner router, the method further comprising the step of transmitting an indication to the joiner router that the joining device should be entrusted to receive network credentials for the mesh network and a key encryption key (KEK) shared between the commissioning device and the joining device, the step of transmitting comprising: the step of receiving a request from the joining device includes receiving an encrypted device identifier of the joining device, the encrypted device identifier being derived from the device identifier of the joining device using a Password Authenticated Key Exchange with Juggling (J-PAKE); the step of establishing a secure joiner communications session includes determining, by the commissioning device, that the encrypted device identifier received from the joining device matches an encrypted device identifier derived by the commissioning device from a copy of the device identifier received as input to the commissioning device from a user, and using the encrypted device identifier as a shared secret to secure the joiner communications session.

[0215] A mesh network device implemented as a commissioning device for joining one or more participating devices to a mesh network, the mesh network device including a mesh network interface configured for communication in the mesh network, and a memory and processor system for implementing a commissioning application, the commissioning application configured to: establish a secure commissioning communications session between the commissioning device and a border router of the mesh network, initiate joining for the mesh network, receive a request to join the mesh network from one of the participating devices via the mesh network interface, establish a secure joiner communications session between the commissioning device and the joining device, and join the joining device to the mesh network.

[0216] Alternatively or in addition to the above-mentioned mesh network device, the commissioning application is configured to send an application from the commissioning device to a leader device of the mesh network to request acceptance of the commissioning device as an active commissioner for the mesh network, and receive an indication of acceptance of the application from the leader device; the commissioning application is configured to initiate joining for the mesh network by initiating a join mode that causes one or more router devices in the mesh network to advertise that the mesh network is accepting join requests; the commissioning application is configured to initiate joining for the mesh network by sending a management message to the leader device to make the mesh network joinable, the management message causing the leader device to update network data for the mesh network and notify one or more router devices in the mesh network of the network join mode. the request received from the joining device includes an encrypted device identifier of the joining device, the encrypted device identifier being derived from the device identifier of the joining device using a Password Authenticated Key Exchange with Juggling (J-PAKE); the commissioning application is configured to determine from a copy of the device identifier received as input to the commissioning device from a user that the encrypted device identifier received from the joining device matches the encrypted device identifier derived by the commissioning device, and to establish a secure joiner communications session, the commissioning application being further configured to use the encrypted device identifier as a shared secret to secure the joiner communications session; the commissioning application is configured to forward a request to join the mesh network from the joining device, the request being received from one or more or forwarded by the router device to the commissioning device.

[0217] The mesh network system includes one or more joining devices configured to request joining the mesh network and a mesh network commissioning device, the commissioning device configured to establish a secure commissioning communication session between the commissioning device and a border router of the mesh network, initiate joining for the mesh network, receive a request to join the mesh network from one of the joining devices, establish a secure joiner communication session between the commissioning device and the joining device, and join the joining device to the mesh network.

[0218] Alternatively or in addition to the above mentioned mesh network system, the commissioning device is configured to send an application from the commissioning device to a leader device of the mesh network to request acceptance of the commissioning device as an active commissioner for the mesh network to establish a secure commissioning communications session, and receive an indication of acceptance of the application from the leader device; the commissioning device is configured to initiate joining for the mesh network by initiating a join mode that causes one or more routers in the mesh network to advertise that the mesh network is accepting join requests; the commissioning device is configured to initiate joining for the mesh network by sending a management message to the leader device to enable the mesh network for join, the management message comprising: the leader device updates network data for the mesh network and propagates the network data to one or more router devices in the mesh network, the network data including an indication that the mesh network is available for joining; the commissioning device receives a request to join the mesh network from one of the joining devices via a joiner router, the joining device being configured to send an indication to the joiner router that the joining device should be entrusted to receive network credentials for the mesh network and a key encryption key (KEK) shared between the commissioning device and the joining device, the sent indication enabling the joiner router to securely send the network credentials to the joining device using the received KEK and commission the joining device into the mesh network.

[0219] A method for provisioning a joining device in a mesh network includes establishing a commissioning communications session between a commissioning device and a border router of the mesh network, establishing a joiner communications session between the joining device and the commissioning device, and transmitting commissioning information to the joining device, the commissioning information usable by the joining device to join the mesh network, the method further including receiving an indication of a location of a commissioner application from the joining device, and executing the commissioner application to provision the joining device.

[0220] Alternatively or in addition to the above method, the method further comprises the step of retrieving the commissioner application using the received indication; the received indication of the location of the commissioner application being a Uniform Resource Locator (URL); the commissioner application being accessible via the internet through a cloud service; the commissioning device uses the received URL to determine whether the commissioner application is stored in the memory of the commissioning device; further comprising, in response to completion of provisioning of the participating device, terminating the commissioning of the participating device, the terminating step being effective to enable the participating device to join the mesh network; the provisioning of the participating device includes updating software on the participating device; the provisioning of the participating device includes linking the participating device to a user account on the cloud service; the provisioning of the participating device includes configuring the participating device; and, the configuration is a local configuration associated with other devices in the mesh network.

[0221] A mesh network device implemented as a commissioning device, the mesh network device including a mesh network interface configured for communication in a mesh network, and a memory and processor system for implementing a commissioning application, the commissioning application configured to establish a commissioning communication session between the commissioning device and a border router of the mesh network, establish a joiner communication session between the joining device and the commissioning device, and transmit commissioning information to the joining device, the commissioning information usable by the joining device to join the mesh network, the commissioning application further configured to receive an indication of the location of the commissioner application from the joining device, and execute the commissioner application to provision the joining device.

[0222] Alternatively or in addition to the above-mentioned mesh network device, any one or combination of the following may be included: the commissioning application is configured to use the received indication to search for the commissioner application; the received indication of the location of the commissioner application is a uniform resource locator (URL); the commissioner application is searched for from a cloud service via the Internet; and the commissioning device uses the received URL to determine whether the commissioner application is stored in the memory of the commissioning device.

[0223] The mesh network system includes a joining device configured to request joining the mesh network and a mesh network commissioning device, the commissioning device configured to establish a commissioning communication session between the commissioning device and a border router of the mesh network, establish a joiner communication session between the joining device and the commissioning device, and transmit commissioning information to the joining device, the commissioning information usable by the joining device to join the mesh network, and the commissioning device further configured to receive an indication of a location of a commissioner application from the joining device and execute the commissioner application to provision the joining device.

[0224] Alternatively or in addition to the above mesh network system, the commissioning application is configured to utilize the received indication to locate the commissioner application; the received indication of the location of the commissioner application is represented by a Uniform Resource Locator (URL ), the commissioner application is retrieved from a cloud service via the internet; and the commissioning device uses the received URL to determine whether the commissioner application is stored in a memory of the commissioning device.

[0225] A method for identifying devices that are authorized to join a mesh network includes determining steering data for the mesh network, the steering data including an indication of a device identifier associated with the device that is authorized to join the mesh network, the method further includes propagating the steering data from a commissioning device for the mesh network to one or more routers in the mesh network, the propagating enabling the one or more routers to transmit the steering data in a beacon message, the steering data being effective to enable a device associated with the device identifier to identify the device as authorized to join the mesh network.

[0226] Alternatively or in addition to the above method, any one or combination of the following may be included: the steering data includes a 16-bit cyclic redundancy check (CRC16) of a device identifier; the device identifier is an IEEE 64-bit extended unique identifier (EUI-64); the step of obtaining steering data for the mesh network further includes obtaining steering data for additional device identifiers associated with additional devices that are permitted to join the mesh network; the step of propagating the steering data is effective to enable devices to distinguish between the mesh network and other networks; the other networks are IEEE 802.15.4 networks; and the steering data indicates that a commissioner is active on the mesh network.

[0227] A mesh network device implemented as a commissioning device, the mesh network device including a mesh network interface configured for communication in the mesh network and a memory and processor system for implementing a commissioning application, the commissioning application configured to determine steering data for the mesh network, the steering data including an indication of a device identifier associated with a device that is authorized to participate in the mesh network, the commissioning application further configured to propagate the steering data from the commissioning device for the mesh network to one or more routers in the mesh network, the propagation enabling the one or more routers to transmit the steering data in a beacon message, the steering data being effective to enable a device associated with the device identifier to identify the device as authorized to participate in the mesh network.

[0228] Alternatively or in addition to the mesh network device as described above, the steering data includes a 16-bit cyclic redundancy check (CRC16) of a device identifier; the device identifier is an IEEE 64-bit extended unique identifier (EUI-64); the commissioning application is configured to determine steering data for additional device identifiers associated with additional devices that are authorized to participate in the mesh network in order to determine the steering data for the mesh network; the steering data is usable by the device to distinguish between the mesh network and other networks; the other networks are IEEE 802.15.4 networks; and and the steering data indicates that the commissioner is active on the mesh network.

[0229] The mesh network system includes a joining device configured to request joining the mesh network and a mesh network commissioning device, the commissioning device configured to solicit steering data for the mesh network, the steering data including an indication of a device identifier associated with a device that is authorized to join the mesh network, and the commissioning device further configured to propagate the steering data from the commissioning device for the mesh network to one or more routers in the mesh network, the propagation enabling the one or more routers to transmit the steering data in a beacon message, the steering data being effective to enable a device associated with the device identifier to identify the device as authorized to join the mesh network.

[0230] Alternatively or in addition to the above-mentioned mesh network system, any one or combination of the following may be included: the steering data includes a 16-bit cyclic redundancy check (CRC16) of the device identifier; the device identifier is an IEEE 64-bit extended unique identifier (EUI-64); the commissioning device is configured to determine steering data for additional device identifiers associated with additional devices that are authorized to join the mesh network in order to determine the steering data for the mesh network; the steering data enables the device to distinguish between the mesh network and other networks; and the steering data indicates that the commissioner is active on the mesh network.

[0231] A method for identifying devices that are authorized to participate in a mesh network includes determining steering data for the mesh network, the steering data including an indication of a device identifier associated with the device authorized to participate in the mesh network, the indication being represented as a set of values ​​in a Bloom filter representing the device identifier, the method further includes propagating the steering data from a commissioning device for the mesh network to one or more routers in the mesh network, the propagating step enabling the one or more routers to transmit the steering data in a beacon message, and the steering data enabling a device associated with the device identifier to compare the set of values ​​in the Bloom filter with a second set of values ​​determined at the device to identify the device as authorized to participate in the mesh network.

[0232] Alternatively or in addition to the above method, the step of determining the steering data includes the steps of applying a first hash function to the device identifier to generate a first hash value, applying a second hash function to the device identifier to generate a second hash value, performing a modulo operation on the first hash value to determine a first bit field position in the Bloom filter, performing a modulo operation on the second hash value to determine a second bit field position in the Bloom filter, setting a value in the first bit field position of the Bloom filter to 1, and setting a value in the second bit field position of the Bloom filter to 1; the first and second hash functions are Cyclic Redundancy Checks (CRCs), the first hash function being CRC16-CCITT and the second hash function being CRC16-ANSI; a divisor for the modulo operation is the length of the bit array of the Bloom filter; the device identifier is an IEEE 64 bit extended CRC16. the device identifier is an Extended Unique Identifier (EUI-64); the device identifier is the least significant 24 bits of the EUI-64; the step of determining steering data for the mesh network further includes determining steering data for additional device identifiers associated with additional devices that are allowed to join the mesh network; further includes setting a value of the steering data to a value of 0 to disable participation for the mesh network; and further includes setting all bit field values ​​in the steering data to a value of 1 to indicate that the mesh network is joinable for any device.

[0233] A mesh network device implemented as a commissioning device, the mesh network device including a mesh network interface configured for communication in the mesh network and a memory and processor system for implementing a commissioning application, the commissioning application configured to determine steering data for the mesh network, the steering data including an indication of a device identifier associated with a device that is authorized to participate in the mesh network, the indication being represented as a set of values ​​in a Bloom filter representing the device identifier, the commissioning application further configured to propagate the steering data to one or more routers in the mesh network, the propagation effective to enable the one or more routers to transmit the steering data in a beacon message, and the steering data enabling a device associated with the device identifier to compare the set of values ​​in the Bloom filter with a second set of values ​​determined at the device to identify the device as authorized to participate in the mesh network.

[0234] Alternatively or in addition to the above mesh network device, the commissioning application may include any one or combination of: applying a first hash function to the device identifier to generate a first hash value, applying a second hash function to the device identifier to generate a second hash value, performing a modulo operation on the first hash value to obtain a first bit field position in the Bloom filter, performing a modulo operation on the second hash value to obtain a second bit field position in the Bloom filter, setting a value in the first bit field position of the Bloom filter to 1, and setting a value in the second bit field position of the Bloom filter to 1; the first and second hash functions are cyclic redundancy checks (CRCs), the first hash function being CRC16-CCITT and the second hash function being CRC16-ANSI; and a divisor for the modulo operation is a length of the bit array of the Bloom filter; and the device identifier is an IEEE 64-bit Extended Unique Identifier (EUI-64).

[0235] The mesh network system includes a joining device configured to request joining the mesh network and a commissioning device, the commissioning device configured to determine steering data for the mesh network, the steering data including an indication of a device identifier associated with a device that is permitted to join the mesh network, the indication being represented as a set of values ​​in a Bloom filter representing the device identifier, the commissioning device further configured to propagate the steering data to one or more routers in the mesh network, the propagation being effective to enable the one or more routers to transmit the steering data in a beacon message, and the steering data is configured to cause a device associated with the device identifier to convert the set of values ​​in the Bloom filter to a second set of values ​​determined at the device. In comparison, this allows a device to identify itself as authorized to join the mesh network.

[0236] Alternatively or in addition to the above mentioned mesh network system, the commissioning device is configured to apply a first hash function to the device identifier to generate a first hash value, apply a second hash function to the device identifier to generate a second hash value, perform a modulo operation on the first hash value to obtain a first bit field position in the Bloom filter, perform a modulo operation on the second hash value to obtain a second bit field position in the Bloom filter, set the value in the first bit field position of the Bloom filter to 1, and set the value in the second bit field position of the Bloom filter to 1. the first and second hash functions are cyclic redundancy checks (CRCs), the first hash function being CRC16-CCITT and the second hash function being CRC16-ANSI; the divisor for the modulo operation is a length of the bit array of the Bloom filter; the device identifier is an IEEE 64-bit Extended Unique Identifier (EUI-64); and the commissioning device is configured to determine steering data for additional device identifiers associated with additional devices that are authorized to join the mesh network in order to determine steering data for the mesh network.

[0237] A method of updating commissioning data in a node of a mesh network includes the steps of receiving a commissioning data set at a node device in the mesh network, comparing a timestamp included in the received commissioning data set with a stored timestamp included in a commissioning data set stored in the node device, determining from the comparing step that the stored timestamp is more recent than the received timestamp, and in response to the determining step, transmitting a message to a leader device of the mesh network, the message including the stored commissioning data set, the message being effective to enable the leader device to accept the stored commissioning data set as the most recent commissioning data set for the mesh network and propagate the stored commissioning data set to the mesh network.

[0238] Alternatively or in addition to the above method, the method further includes the steps of: determining from the comparing step that the received timestamp is more recent than the stored timestamp; and, in response to determining that the received timestamp is more recent than the stored timestamp, updating the stored commissioning data set to be consistent with the received commissioning data set; the received commissioning data set includes the received timestamp, the commissioning credentials, a network name for the mesh network, and a security policy indicating which security related operations are permitted on the mesh network; that the time stamp includes a time value and an indication that the time value is traceable to Coordinated Universal Time (UTC); that the node device and the leader device were previously commissioned onto the mesh network, and that the previous commissioning stored identical commissioning data sets in the node device and the leader device; that the stored commissioning data set in the node device is updated after a split of the mesh network, the split separating the mesh network into multiple partitions, a first partition of the mesh network including the leader device and a second partition of the mesh network including the node device; that the split occurs when communication between the node device and the leader device on the mesh network ceases. the step of receiving the commissioning data set at the node device occurs after a merging of the first and second partitions of the mesh network, the merging re-establishing a communication path between the node device and a leader device on the mesh network; and the node device is a router device or a router-eligible device.

[0239] and a processor system and a memory for implementing a commissioning application configured to receive a commissioning data set, compare a timestamp included in the received commissioning data set with a stored timestamp included in a commissioning data set stored in the router, and determine from the comparison that the stored timestamp is more recent than the received timestamp, and in response to the determination, transmit a message to a leader device of the mesh network, the message including the stored commissioning data set and effective to enable the leader device to accept the stored commissioning data set as a most recent commissioning data set for the mesh network and propagate the stored commissioning data set to the mesh network.

[0240] Alternatively or in addition to the above mesh network device, the commissioning application is configured to determine from the comparison that the received timestamp is more recent than the stored timestamp, and in response to determining that the received timestamp is more recent than the stored timestamp, update the stored commissioning data set to be consistent with the received commissioning data set; the received commissioning data set includes the received timestamp, the commissioning credentials, a network name of the mesh network, and a security profile indicating which security related operations are permitted on the mesh network. the received timestamp includes a time value and an indication that the time value is traceable to Coordinated Universal Time (UTC); the router and the leader device were previously commissioned onto the mesh network, and the previous commissioning stored identical commissioning data sets in the router and the leader device; and the stored commissioning data set in the router is updated after a split of the mesh network, the split separating the mesh network into multiple partitions, a first partition of the mesh network includes the leader device and a second partition of the mesh network includes the router.

[0241] The mesh network system includes a reader device configured to maintain commissioning data for the mesh network and a router device, the router device configured to receive a commissioning data set, compare a timestamp included in the received commissioning data set with a stored timestamp included in a commissioning data set stored in the router, and determine from the comparison that the stored timestamp is more recent than the received timestamp, and in response to the determination, transmit a message to a leader device of the mesh network, the message including the stored commissioning data set and effective to enable the leader device to accept the stored commissioning data set as the most recent commissioning data set for the mesh network and propagate the stored commissioning data set to the mesh network.

[0242] Alternatively or in addition to the above mesh network system, the router device is configured to determine from the comparison that the received timestamp is more recent than the stored timestamp, and in response to determining that the received timestamp is more recent than the stored timestamp, update the stored commissioning data set to be consistent with the received commissioning data set; the received commissioning data set includes the received timestamp, the commissioning credentials, a network name of the mesh network, and a security policy indicating which security-related operations are permitted in the mesh network; the received timestamp includes a time value and an indication that the time value is traceable to Coordinated Universal Time (UTC); and the router and leader device have previously been commissioned into the mesh network, and the previous commissioning stored identical commissioning data sets in the router and leader device.

Claims

1. 1. A method for identifying devices that are authorized to participate in a mesh network, the method comprising: receiving steering data for the mesh network at a joiner router, the steering data comprising: The steering data is determined by a commissioning device that is active as a commissioner for the mesh network, the steering data including an indication of a device identifier associated with and unique to a participating device that is authorized to join the mesh network, the steering data including an indication that there is an active commissioner on the mesh network, and the steering data further includes: The mesh network may be configured to transmit the joiner router to one or more routers in the mesh network, the joiner router being included in the joiner router. The mesh network may further include a joiner router. receiving a beacon request from a participating device; and transmitting steering data in the beacon message, the steering data being effective to enable a joining device associated with the unique device identifier to determine that the joining device is authorized to join the mesh network, the method further comprising: The method includes receiving, at the joiner router, a join request from a joining device to join a mesh network, the join request being based on a determination that the joining device is authorized to join the mesh network.

2. The method of claim 1 , wherein the steering data includes a 16-bit cyclic redundancy check (CRC16) of the device identifier.

3. The method of claim 1 or claim 2, wherein the device identifier is an IEEE 64-bit Extended Unique Identifier (EUI-64).

4. The method of any one of claims 1 to 3, wherein the step of receiving steering data for the mesh network further comprises determining steering data for additional device identifiers associated with additional devices that are permitted to join the mesh network.

5. The method according to any one of claims 1 to 4, wherein the step of transmitting steering data is effective to enable participating devices to distinguish between the mesh network and other networks.

6. The method of claim 5 , wherein the other network is an IEEE 802.15.4 network.

7. A mesh network device implemented as a commissioning device, the mesh network device comprising: a mesh network interface configured for communication in a mesh network; and a memory and processor system for implementing a commissioning application, the commissioning application comprising: The commissioning application is configured to determine steering data for the mesh network, the steering data including an indication of a device identifier associated with and unique to a participating device that is authorized to join the mesh network, the steering data including an indication that there is an active commissioner on the mesh network, and the commissioning application further comprises:

1. A mesh network device configured to propagate steering data from a commissioning device for the mesh network to one or more joiner routers in the mesh network, the propagation enabling the one or more joiner routers to transmit steering data in a beacon message, the steering data being effective to enable a joining device associated with a device identifier to determine that the joining device is authorized to join the mesh network, the steering data enabling the joining device to send a join request to at least one of the one or more joiner routers to join the mesh network, the join request being based on a determination that the joining device is authorized to join the mesh network.

8. The mesh network device of claim 7 , wherein the steering data includes a 16-bit cyclic redundancy check (CRC16) of the device identifier.

9. The mesh network device of claim 7 or claim 8, wherein the device identifier is an IEEE 64-bit Extended Unique Identifier (EUI-64).

10. A mesh network device as described in any one of claims 7 to 9, wherein the commissioning application is configured to determine steering data for additional device identifiers associated with additional devices that are authorized to join the mesh network in order to determine steering data for the mesh network.

11. A mesh network device according to any one of claims 7 to 10, wherein the steering data is usable by participating devices to distinguish the mesh network from other networks.

12. The mesh network device of claim 11 , wherein the other network is an IEEE 802.15.4 network.

13. 1. A mesh network system, comprising: a joining device configured to request to join the mesh network; one or more routers; and a mesh network commissioning device, the commissioning device comprising: and determining steering data for the mesh network, the steering data including an indication of a device identifier associated with and unique to a participating device that is authorized to join the mesh network, the steering data including an indication that there is an active commissioner on the mesh network, the commissioning device further comprising: configured to propagate steering data from a commissioning device for the mesh network to one or more routers in the mesh network; One or more routers may Receives beacon requests from participating devices; The router is further configured to: transmit steering data in a beacon message, the steering data being effective to enable a participating device associated with the device identifier to determine that the participating device is authorized to participate in the mesh network; and the one or more routers further 1. A mesh network system configured to receive a join request from a joining device to join the mesh network, the join request being based on a determination that the joining device is authorized to join the mesh network.

14. The mesh network system of claim 13 , wherein the steering data includes a 16-bit cyclic redundancy check (CRC16) of the device identifier.

15. The mesh network system of claim 13 or 14, wherein the device identifier is an IEEE 64-bit Extended Unique Identifier (EUI-64).

16. The mesh network system of any one of claims 13 to 15, wherein the commissioning device is configured to determine steering data for additional device identifiers associated with additional devices that are authorized to join the mesh network in order to determine steering data for the mesh network.

17. The mesh network system of any one of claims 13 to 16, wherein the steering data enables participating devices to distinguish the mesh network from other networks.

18. 20. The mesh network system of claim 17, wherein the other network is an IEEE 802.15.4 network.

19. The mesh network system according to any one of claims 13 to 18, wherein participating devices are configured to perform active scanning to collect beacon messages from multiple networks.

20. 20. The mesh network system of claim 19, wherein participating devices are configured to prioritize collected beacon messages based on a device identifier.

Citation Information

Patent Citations

  • Systems and methods for low overhead paging

    US20130143606A1

  • Commissioning of Wireless Devices in Personal Area Networks

    US20130322281A1

  • Authentication using DHCP services in mesh networks

    WO2013165443A1

  • Efficient device handover / migration in mesh networks

    WO2013165444A1