Systems and methods to dynamically reprovision network devices in a predefined area

A system and a method to dynamically reprovision network devices may include a first network device configured to reprovision a second network device in accordance with a specific location of the second network device in a predefined area. The first network device may be configured to sense the second device at the specific location in the predefined area, identify reprovisioning parameters associated with the specific location, and provide the reprovisioning parameters to the second network device. In turn, the second network device may be configured to perform one or more roles associated with the specific location in the predefined area based at least in part upon information in the reprovisioning parameters.

TECHNICAL FIELD

The present disclosure relates generally to a field of reprovisioning network devices, and more particularly, to a system and a method to dynamically reprovision network devices in a predefined area (e.g., a space).

BACKGROUND

Internet-of-Thing (IoT) devices use several processing and memory resources during provisioning operations. Further, in cases where IoT devices are newly integrated in a space, user intervention is usually required to provision a given IoT device with configuration information that would enable the given IoT device to operate in the space. In these cases, users are responsible to manually set up specific IoT devices for specific jobs in the space. Further, while some IoT devices may copy log-in information to access Internet resources, IoT devices do not set one another up.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Overview

In one or more embodiments, a system and a method described herein dynamically reprovision network devices in a predefined area (e.g., a space). The system and the method are configured to reprovision network devices in accordance with a predefined sub-area of the predefined area. In some embodiments, the system and the method are configured to determine a location of a specific network device within a specific sub-area of the predefined area. For example, a first network device may be reprovisioned in accordance with first reprovision parameters if the first network device is booted up or moved onto a first predefined area in the predefined area and a second network device may be reprovisioned in accordance with second reprovision parameters if the second network device is booted up or moved onto a second predefined area in the predefined area. The first network device parameters may comprise configuration information to perform one or more roles in the first predefined area. The second network device parameters may comprise configuration information to perform one or more roles in the second predefined area. In some embodiments, the network devices may be configured to perform roles in one or more predefined areas of the predefined area (e.g., for devices that may be configured to move between the first predefined area and the second predefined area. In some embodiments, the network devices may be reprovisioned based at least in part upon specific locations in which each network device is located in the predefined area or specific locations in which each network device moves within the predefined area. For example, the network device may be mounted on moving vehicles (e.g., motor vehicles in a highway, unmanned aerial systems (UASs) on the air performing disaster management, trains in a city, excavators in a mine.

In one or more embodiments, the network devices may move in different predefined areas of the predefined area and adapt corresponding behavior to the different predefined areas based on operating context surrounding each predefined area. The operating context may be a set of data incorporated in one or more reprovisioning parameters that describe roles of a given device in a predefined area at a given moment in time. The operating context may include identification of neighboring network devices sensed at a given point in time. Each network device may identify its neighbors using corresponding Media Access Control (MAC) address received via probing.

In some embodiments, network devices may determine a three-dimensional (3D) posture of multiple neighboring network devices. The 3D posture may comprise positions, direction, movement, speed, and short-term movement plans in an X-axis, a Y-axis, and a Z-axis. In other embodiments, the network devices may be configured to determine each other's device capabilities. The device capabilities may be incorporated in the reprovisioning parameters. The network devices may identify operating states, device triggers, and device roles associated with the predefined area. The operating states may comprise a set of data that describes working points of such device inside the predefined area at a given moment in time. The operating states may be performed corresponding to roles in accordance with the device triggers in the predefined area. The network devices may be provisioned in accordance with the relative location or the absolute location of each network device in the predefined area (e.g., a specific sub-area in the predefined area).

In this disclosure, the term “reprovisioning” is used interchangeably with the term “provisioning” given that a network device in a predefined area may be provisioned for a first time (e.g., the network device is new and booting up for the first time in the predefined area) or may be reprovisioned with new parameters (e.g., the network device may not be booting up for the first time, but it is assigned new roles in the predefined area).

In accordance with one or more embodiments, a system or an apparatus, such as a network device acting as a server, includes a network interface, a memory, and a processor communicatively coupled to one another. The system may dynamically reprovision network devices in specific sub-areas of the predefined area. The network interface may be configured to receive at least one connectivity signal broadcasted over a period of time. The memory may store multiple reprovisioning parameters from one or more additional network devices in the predefined area. The reprovisioning parameters may include operating context information associated with one or more roles to be performed at one or more sub-areas in the predefined area. The processor may be configured to determine a first direction of arrival associated with the at least one connectivity signal, identify a first sub-area corresponding to the first direction of arrival, generate an acknowledgement signal to be transmitted in the first direction of arrival, establish a first communication link with a network device located in the first direction of arrival, and transmit the reprovisioning parameters via the first communication link to the network device. The reprovisioning parameters may include multiple roles. A first role of the roles corresponds to a first sub-area in the predefined area. In some embodiments, performing the first role at the first sub-area in the predefined area by the network device includes defining first operating state parameters and performing the first role at the first sub-area in response to a first trigger within the first sub-area.

In some cases, a second role of the roles corresponds to a second sub-area in the predefined area. In some embodiments, performing the second role at the second sub-area in the predefined area by the network device comprises defining second operating state parameters and performing the second role at the second sub-area in response to a second trigger within the second sub-area.

In certain cases, the network device does not include instructions associated with the first role of the roles corresponding to the first sub-area in the predefined area. In other cases, the network device includes instructions associated with one or more additional roles of the roles corresponding to the first sub-area in the predefined area. The instructions may be updated to include the first operating state parameters to perform the first role at the first sub-area. The network device may perform the one or more additional roles and the first role at the first sub-area in response to updating the instructions.

In some cases, the network device comprises instructions associated with one or more additional roles of the roles corresponding to a second sub-area in the predefined area. The instructions may be updated to include the first operating state parameters to perform the first role at the first sub-area. The network device may perform the first role at the first sub-area without performing at least one of the one or more additional roles of the roles corresponding to the second sub-area in the predefined area in response to updating the instructions.

In yet other cases, the memory may be further configured to store reprovisioning parameters for first network devices located at the first sub-area in the predefined area, second network devices located at a second sub-area in the predefined area, and third network devices located at a third sub-area in the predefined area.

In some cases, the predefined area includes a house, the first sub-area is a living room of the house, the second sub-area is a bedroom of the house, and the third sub-area is a garage of the house.

In other cases, the processor is further configured to collect reprovisioning parameters associated with the network device until the network device is removed from the first sub-area in the predefined area. In another case, prior to receiving the at least one connectivity signal over the period of time, the processor is configured to perform the first role at the first sub-area. In yet other cases, the network device is a Machine Type Communication (MTC) device. In additional cases, the predefined area includes an area above a building, the first sub-area is a sub-area of the area above the building, and the network device is an Unmanned Aerial System (UAS) configured to move within the first sub-area.

In accordance with other embodiments, a method performed by a first network device comprises storing multiple reprovisioning parameters from one or more additional network devices in a predefined area. The reprovisioning parameters may include operating context information associated with one or more roles corresponding to one or more sub-areas in the predefined area. The method may comprise receiving at least one connectivity signal over a period of time from a second network device, determining a direction of arrival associated with the at least one connectivity signal, identifying a first sub-area corresponding to the direction of arrival, and generating an acknowledgement signal to be transmitted in the direction of arrival. Further, in response to transmitting the acknowledgement signal, the method may further comprise establishing a communication link between the first network device and the second network device and transmitting the reprovisioning parameters via the communication link to the second network device. The reprovisioning parameters may include multiple roles. A first role of the roles may correspond to the first sub-area in the predefined area. In some embodiments, performing the first role at the first sub-area in the predefined area by the second network device comprises defining first operating state parameters and performing the first role at the first sub-area in response to a first trigger within the first sub-area.

In accordance with yet other embodiments, a non-transitory computer readable medium in a first network device stores instructions that when executed by a processor cause the processor to dynamically reprovision network devices in specific predefined areas of the predefined area. The instructions may further cause the processor to store multiple reprovisioning parameters from one or more additional network devices in the predefined area. The reprovisioning parameters may include operating context information associated with one or more roles corresponding to one or more sub-areas in the predefined area. The instructions may cause the processor to receive at least one connectivity signal over a period of time from a second network device, determine a direction of arrival associated with the at least one connectivity signal, identify a first sub-area corresponding to the direction of arrival, and generate an acknowledgement signal to be transmitted in the direction of arrival. Further, in response to transmitting the acknowledgement signal, the instructions may cause the processor to establish a communication link between the first network device and the second network device and transmit the reprovisioning parameters via the communication link to the second network device. The reprovisioning parameters may include multiple roles. A first role of the roles may correspond to the first sub-area in the predefined area. In some embodiments, performing the first role at the first sub-area in the predefined area by the second network device may include defining first operating state parameters and performing the first role at the first sub-area in response to a first trigger within the first sub-area.

Technical advantages of certain embodiments of this disclosure may include one or more of the following. The system and the method described herein provide the technical solution of dynamically or automatically reprovision network devices in specific predefined areas of a predefined area. Specifically, the system and the method are configured to reprovision network devices in accordance with the roles to be performed in a specific area of the predefined area in which the network device is located. As a result, all network devices in the predefined area are dynamically reprovisioned to perform location-specific roles that optimize and improve corresponding operations in the predefined area. For example, a technical advantage of one embodiment may be to automatically collect neighbor reprovisioning parameters (e.g., provisioning data currently being used by neighboring network devices) including operational configuration and operational startup information via a device controller. Each network device may be configured to share respective operating context information to one another. In this regard, if a network device is removed from a specific location in the predefined area, a number of neighboring network devices may hold onto the neighbor reprovisioning parameters of the removed network device. If a new network device is determined to be placed at the same location, this new network device may be reprovisioned in accordance with the neighbor reprovisioning parameters of the removed network device.

In addition, the system and the method described herein are integrated into a practical application of increasing processing speed and reducing memory usage in the system. Specifically, the system and the method improve response speed and accuracy of set up and configuration of network devices. For example, a technical advantage of one embodiment may allow for improved reliability in real-time communications between network devices while performing corresponding location specific roles. In this regard, processing speed and memory usage are improved because each network device is aware of the roles performed by the neighboring network devices, which enables each network device to preemptively expect specific communication from specific neighbors. In another example, another technical advantage of one embodiment may be to optimize network operations in a predefined area. By assigning roles and being aware of the roles being performed in one or more sub-areas of the predefined area, multiple network devices are not reprovisioned to perform a same role if redundancies are not preferred.

Example Embodiments

This disclosure describes systems and methods to dynamically reprovision network devices in a predefined area. In particular, this disclosure provides various systems and methods to automatically detect one or more network device locations in a predefined area and dynamically reprovision any identified network devices in accordance with corresponding locations in the predefined area.FIG.1illustrates a system100in which one or more network devices120A-120J are dynamically reprovisioned in a predefined area102.FIG.2Aillustrates an operational flow200A in which a network device120B and a network device120C of the system100ofFIG.1are configured to dynamically reprovision a network device120A.FIG.2Billustrates an operational flow200B in which a server160of the system100ofFIG.1is configured to dynamically reprovision the network device120A.FIG.3illustrates a process300to perform the operational flow200A ofFIG.2Aor the operational flow200B ofFIG.2B.

FIG.1illustrates a system100configured to dynamically reprovision network devices120A-120J (collectively, network devices120) in a predefined area102, in accordance with one or more embodiments. The predefined area102may comprise multiple distinct or separate sub-areas104A-104F (collectively, sub-areas104). In some embodiments, the server160may be configured to reprovision each of the network devices120differently based at least upon corresponding location in each of the sub-areas104. In other embodiments, one or more of the network devices120may be configured to reprovision a specific network device in any of the sub-areas104.

In one or more embodiments, the network devices120comprise the network device120A, the network device120B, the network device120C, a network device120D, a network device120E, a network device120F, a network device120G, a network device120H, a network device120I, and a network device120J. The network devices120may be distributed at multiple distinct locations in the predefined area102. In the example ofFIG.1, the network device120A is located in a sub-area104A, the network device120B and the network device120C are located in a sub-area104B, the network device120D and the network device120E are located in a sub-area104C, the network device120F and the network device120G are located in a sub-area104D, and the network device120H, the network device120I, and the network device120J are located in a sub-area104E. The predefined area102may comprise several hundreds of network devices120. In other embodiments, the predefined area102may comprise several sub-areas104. The sub-areas104may partially or completely overlap one another. In some embodiments, one of the sub-areas104may comprise one or more additional sub-areas104. For example, a sub-area104F may comprise the sub-area104D and the sub-area104E along with the network device120F, the network device120G, the network device120H, the network device120I, and the network device120J.

In one or more embodiments, as a non-limiting example, the network devices120may be associated with a user122. There may be additional users (not shown), or no users associated with the network devices120. In some embodiments, the network devices120may be unassociated with any users and perform one or more roles completely autonomously from human management or intervention. For example, the network devices120may be Internet-of-Things (IoT) devices or Machine Type Communication (MTC) devices comprising multiple industrial components autonomously assembling motor vehicles in a warehouse, multiple unmanned aerial systems (UASs) or unmanned aerial vehicles (UAVs) flying over a stadium performing a light show, or multiple household devices configured to communicate with one another while performing one or more household tasks. In some embodiments, some of the network devices120may be part of a sub-group of network devices. In an example, the network device120H and the network device120I may be associated to one another as UAVs performing similar tasks (e.g., roles comprising aerial sensing and diagnosis in the predefined area102) in the sub-area104E. In another example, the network device120C and the network device120D may be associated to one another as routers performing similar tasks (e.g., roles comprising routing connectivity signals in the predefined area102) in the sub-area104B and the sub-area104D, respectively.

In some embodiments, the network devices120may be communicatively coupled to a network152via a connection150and the server160via a connection154. The connection150and the connection154may be wired or wireless connections configured to provide communication links between the network devices120, the network152, and the server160. In other embodiments, the network152and the server160may be partially or completely located in the predefined area102among the network devices120. The server160may be one of the network devices120configured to reprovision one or more of the network devices120in the predefined area102.

In one or more embodiments, the server160may comprise one or more server I/O interfaces162, one or more server processors164, a reprovisioning controller168, and a server memory180. The server I/O interfaces162may comprise hardware, software executed by software, or a combination of both, providing one or more interfaces for communication between the server160and one or more I/O devices. The server160may include one or more of these I/O devices, where appropriate. One or more of these I/O devices may enable communication between a person and the server160. As an example, and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, another suitable I/O device, or a combination of two or more of these. An I/O device may include one or more sensors. This disclosure contemplates any suitable I/O devices and any suitable server I/O interfaces162for them. Where appropriate, the server I/O interfaces162may include one or more device or software drivers enabling the one or more server processors164to drive one or more of these I/O devices. Although this disclosure describes and illustrates particular I server I/O interfaces162, this disclosure contemplates any suitable number of server I/O interfaces162.

In one or more embodiments, the server I/O interfaces162may comprise a communication interface including hardware, software executed by hardware, or a combination of both providing one or more interfaces for communication (such as, for example, packet-based communication) between the server160, the one or more network devices120, the network152, or one or more additional networks. As an example, and not by way of limitation, the communication interface of the server I/O interfaces162may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable corresponding communication interface. As an example, and not by way of limitation, the server160may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, the network devices120may communicate with a wireless PAN (WPAN) (such as, for example, a Bluetooth WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network, a Long-Term Evolution (LTE) network, or a 5G network), or other suitable wireless network or a combination of two or more of these. The server160may include any suitable communication interface for any of these networks, where appropriate. Although this disclosure describes and illustrates the server I/O interfaces162comprising particular communication interfaces, this disclosure contemplates any suitable communication interface.

In some embodiments, the server I/O interfaces162may comprise storage and databases communicatively coupled to the one or more server processors164, the server I/O interfaces162, and the server memory180. The storage and databases may comprise wired connections that share an internal bandwidth for data packet transmissions inside the server160with the server memory180. The storage and databases may be configured with a buffering capacity and a memory speed. The buffering capacity may indicate a buffering capacity (in bytes) that the storage and databases are capable of handling. For example, the buffering capacity may be 1,000 bytes. Further, the memory speed may indicate a processing speed (in bytes per second) at which the storage and databases is capable of handling or buffering data packets. For example, the memory speed may be 1,000 bytes per second. The storage and databases may comprise instructions and data memory for the one or more server processors164.

In particular embodiments, the server I/O interfaces162may comprise a transceiver (e.g., transmitter, receiver, or a combination of both) configured to implement one or more wireless or wired connectivity protocols. In this regard, the transceiver may comprise antennas comprising hardware configured to establish one or more communication links (e.g., via the connection150and the connection154or as a direct communication link156) between the server160and one or more of the network devices120. Although this disclosure describes and illustrates a communication link156, this disclosure contemplates any arrangement of channels for information exchange.

In other embodiments, the server I/O interfaces162may comprise an interconnect including hardware configured to connect the one or more server processors164, the reprovisioning controller168, and the server memory180. As an example and not by way of limitation, the interconnect may include an Accelerated Graphics Port (AGP) or a graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HyperTransport (HT) interconnect, an Industry Standard Architecture (ISA) bus, an InfiniB and interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or another suitable bus or a combination of two or more of these.

In some embodiments, the one or more server processors164comprise hardware for executing instructions (e.g., instructions182), such as those making up a computer program. As an example, and not by way of limitation, to execute instructions, the one or more server processors164may retrieve (or fetch) the instructions from an internal register, an internal cache, or the server memory180; decode and execute them; and then write one or more results to an internal register, an internal cache, or the server memory180. Specifically, the one or more server processors164may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates the one or more server processors164including any suitable number of internal caches, where appropriate. As an example, and not by way of limitation, the one or more server processors164may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions182in the server memory180, and the instruction caches may speed up retrieval of those instructions by the one or more server processors164. Data in the data caches may be copies of data in the server memory180for instructions executing at the one or more server processors164to operate on via one or more processing engine166; the results of previous instructions executed at the one or more server processors164for access by subsequent instructions executing at the one or more server processors164or for writing to the server memory180; or other suitable data. The data caches may speed up read or write operations by the one or more server processors164. The TLBs may speed up virtual-address translation for the one or more server processors164. In particular embodiments, the one or more server processors164may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates the one or more server processors164including any suitable number of suitable internal registers, where appropriate. Where appropriate, the one or more server processors164may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more additional one or more server processors164. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

In one or more embodiments, the one or more server processors164include hardware, software executed by hardware, or a combination of both, configured to reprovision the network devices120in accordance with one of the sub-areas104of the predefined area102. In some embodiments, the one or more server processors164are configured to determine a location of a specific network device120within the specific sub-area104of the predefined area102. The one or more server processors164may be a routing device configured to route resources in the network152to the one or more network devices120. In some embodiments, the one or more server processors164may be included on a same card or die. In this regard, the one or more server processors164may be configured to determine a three-dimensional (3D) posture of the network devices120. The 3D posture may comprise positions, direction, movement, speed, and short-term movement plans in an X-axis, a Y-axis, and a Z-axis. In other embodiments, the one server160may be configured to determine network device capabilities186associated with each of the network devices120. The network device capabilities186may be incorporated in one or more network device reprovisioning parameters184.

In other embodiments, the processing engine166may be software executed by hardware and configured to dynamically reprovision the network devices120in specific sub-areas104of the predefined area102. The processing engine166may be implemented by the one or more server processors164operating as specialized hardware accelerators. The processing engine166may be configured to implement networking-specific processing tasks in custom logic and achieve better performance than typical software implementations. For example, the processing engine166may be lookup engines (e.g., using specialized logic), cryptographic coprocessors, content inspection engines, and the like. In some embodiments, the one or more processing engines configured to operate the reprovisioning controller168via execution of one or more of the instructions182.

In one or more embodiments, the reprovisioning controller168is hardware, software executed by hardware, or a combination of both configured to reprovision the network devices120in accordance with one or more operating states170, one or more device triggers172, one or more device roles174, and one or more trigger-to-states reprovisioning tables176. In some embodiments, the server160may determine the 3D posture of the network devices120. As described above, the network device capabilities186may be incorporated in the network device reprovisioning parameters184. The network devices120may identify the operating states170, the device triggers172, and the device roles174associated with the predefined area102. The operating states170may comprise a set of data that describes working points of such device inside the predefined area102at a given moment in time. The operating states170may be performed corresponding to one or more state roles174in accordance with the device triggers172in the predefined area102. The network devices120may be provisioned in accordance with the relative location or the absolute location of each network device in the predefined area102(e.g., a specific sub-area104in the predefined area102). The one or more state roles174are one or more tasks or jobs that each of the network devices120may be reprovisioned to perform in the predefined area102. In some embodiments, performing one of the device roles174at one of the sub-areas104in the predefined area102by the any of the network devices120comprises defining the operating states170and performing the device roles174at one of the sub-areas104in response to one of the state triggers172. The device triggers172and the device roles174may be associated with one another in one or more triggers-to-roles reprovisioning tables176.

In particular embodiments, the server memory180includes mass storage for data or instructions. As an example, and not by way of limitation, the server memory180may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. The server memory180may include removable or non-removable (or fixed) media, where appropriate. The server memory180may be internal or external to a computer system, where appropriate. In particular embodiments, the server memory180is non-volatile, solid-state memory. In particular embodiments, the server memory180includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates the server memory180as a mass storage taking any suitable physical form. The server memory180may include one or more storage control units facilitating communication between the one or more server processors164and the server memory180, where appropriate. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.

In one or more embodiments, the server memory180includes a main memory for storing the instructions182for the one or more server processors164to execute or data for the one or more server processors164to operate on. As an example, and not by way of limitation, the network devices120may load the instructions182from another memory in the network devices120. The one or more server processors164may then load the instructions182from the server memory180to an internal register or internal cache. To execute the instructions182, the one or more server processors164may retrieve the instructions182from the internal register or internal cache and decode them. During or after execution of the instructions182, the one or more server processors164may write one or more results (which may be intermediate or final results) to the internal register or internal cache. The one or more server processors164may then write one or more of those results to the server memory180. In some embodiments, the one or more server processors164executes only the instructions182in one or more internal registers or internal caches or in the server memory180and operates only on data in one or more internal registers or internal caches or in the server memory180.

In one or more embodiments, the server memory180includes commands or data associated with one or more specific applications in addition or as part of the instructions182. InFIG.1, the server memory180comprises the one or more network device reprovisioning parameters184, and area information192. In some embodiments, the one or more network device reprovisioning parameters184may be configured to provide one or more reprovisioning parameters to the network devices120, which then perform the device roles174in accordance with one or more area rules and policies188. In some embodiments, the area rules and policies188may be information commanding rules and/or operations of the system100. The area rules and policies188may be updated dynamically or periodically over time. For example, the area rules and policies188may provide guidelines to access, receive, and transmit information using the network devices120. In other embodiments, the area information192comprises one or more sub-area profiles194A-194C (collectively, sub-area profiles194). Each of the sub-area profiles194may comprise a network device list196listing network devices120currently located in the predefined area102. In the example ofFIG.1, a sub-area profile194A comprises network device lists196A indicating that the network device120A is located in the sub-area104A. As non-limiting examples, a sub-area profile194B may comprise a network device list (not shown) indicating that the network device120B and the network device120C are located in the sub-area104B, and a sub-area profile194C may comprise a network device list (not shown) indicating that the network device120D and the network device120E are located in the sub-area104C. In some embodiments, the network device reprovisioning parameters184and the area information192may be updated dynamically as soon as one of the network devices120move locations in the predefined area102. In other embodiments, the network device reprovisioning parameters184and the area information192may be updated periodically over time.

In one or more embodiments, the network152may be a combination of electronic devices forming a multi-node mesh. As an example and not by way of limitation, one or more portions of the network152may include an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a LAN, a wireless LAN (WLAN), a WAN, a wireless WAN (WWAN), a MAN, a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular technology-based network, a satellite communications technology-based network, another network152, or a combination of two or more such networks.

Referring to the network device120A as a non-limiting example, the network devices120may comprise one or more device input (I)/output (0) interfaces130, a device processor132comprising a device processing engine134, and a device memory136comprising one or more instructions140, a device location142, and one or more neighbor reprovisioning parameters144. In one or more embodiments, the one or more network devices120include end-user devices such as laptops, phones, tablets, and any other suitable device that are capable of receiving, creating, processing, storing, or communicating information, including data packet transmissions. The network devices120may comprise one or more device I/O interfaces130, at least one device processor132, and a device memory136that is interconnected by a system bus as well as a power supply. In some embodiments, the network devices120represents client devices or user devices that are capable of receiving real-time data packet transmissions and may include general purpose computing devices (e.g., servers, workstations, desktop computers, and the like), mobile computing devices (e.g., laptops, tablets, mobile phones, and the like), wearable devices (e.g., watches, glasses, or other head-mounted displays (HMDs), ear devices, and the like), and so forth. The client devices106may also include IoT devices or equipment, such as agricultural equipment (e.g., livestock tracking and management systems, watering devices, UAVs, and the like); connected cars and other vehicles; smart home sensors and devices (e.g., alarm systems, security cameras, lighting, appliances, media players, Heating Ventilation, and Air Conditioning (HVAC) equipment, utility meters, windows, automatic doors, door bells, locks, etc.); office equipment (e.g., desktop phones, copiers, fax machines, and the like); healthcare devices (e.g., pacemakers, biometric sensors, medical equipment, and the like); industrial equipment (e.g., robots, factory machinery, construction equipment, industrial sensors, and the like); retail equipment (e.g., vending machines, point of sale (POS) devices, Radio Frequency Identification (RFID) tags, and the like); smart city devices (e.g., street lamps, parking meters, waste management sensors, and the like); transportation and logistical equipment (e.g., turnstiles, rental car trackers, navigational devices, inventory monitors, and the like); and so forth.

In one or more embodiments, the device I/O interfaces130may be configured to perform one or more of the operations described in reference to the server I/O interfaces162, the device processor132may be configured to perform one or more of the operations described in reference to the one or more server processors164, the device processing engine134may be configured to perform one or more of the operations described in reference to the server processing engine166, and the device memory136may be configured to perform one or more of the operations described in reference to the one or more server memory180. In some embodiments, the instructions140may be configured to perform one or more of the operations described in reference to the instructions182. The device location142may be information indicating a current 3D position of the network device120A in the sub-area104A. The neighbor reprovisioning parameters144may be similar to the one or more network device reprovisioning parameters184.

FIGS.2A and2Bshow respective examples of operational flow200A and operational flow200B, in accordance with one or more embodiments. InFIG.2A, the operational flow200A is performed by different components in the predefined area102. In particular, the operational flow200A may be performed by one or more of the network devices120in the sub-area104F. As a non-limiting example, the network device120F is reprovisioned by the network device120G and the network device120H. In the operational flow200A, the network device120I is also removed from the sub-area104F. InFIG.2B, the operational flow200B is performed by different components in the predefined area102. In particular, the operational flow200B may be performed by the server160and one or more of the network devices120in the sub-area104A and the sub-area104B. As a non-limiting example, the network device120A is reprovisioned by the server160, the network device120B, and the network device120C.

In one or more embodiments, the server160and the network devices120are configured to exchange each other operational context and store reprovisioning parameters corresponding to one another (e.g., the neighbor reprovisioning parameters144and the network device reprovisioning parameters184). The server160and the network devices120may share the reprovisioning parameters via wired or wireless broadcasting signals. Each of the network devices120may store the neighboring reprovisioning parameters144(e.g., the network device reprovisioning parameters184) dynamically over a period of time. In one or more embodiments, the neighbor reprovisioning parameters144and the network device reprovisioning parameters184may be updated as the network devices120transitions between the sub-areas104.

In some embodiments, to “transition” may comprise booting up or removing one of the network devices120from one of the sub-areas104. The network devices120that remain in the sub-areas104may absorb the operating roles174of any devices that transition away to a different location. In this regard, a device moving from the sub-area104A to the sub-area104D may cause the network device120B and the network device120C to retain neighbor reprovisioning parameters144associated with the network device120A. As the network device120A reaches the sub-area104D, the network device120F and the network device120G may be configured to reprovision the network device120A with neighbor reprovisioning parameters144comprising operating states170and device roles174that are specific to the sub-area104D. Alternatively, or in addition, as the network device120A reaches the sub-area104D, the network device120F and the network device120G may be configured to reprovision the network device120A with neighbor reprovisioning parameters144comprising operating states170and device roles174that are specific to the sub-area104F.

FIG.2Ashows the operational flow200A in which operations202-240are performed by the network device120F, the network device120G, the network device120H, and the network device120I. At operation202, the network device120G, the network device120H, and the network device120I may perform multiple network operations associated with the sub-areas104of the predefined area102while reporting a copy of network device instructions140. The network device120G, the network device120H, and the network device120I may obtain neighbor reprovisioning parameters144corresponding to the adjacent sub-area104C, the sub-area104D, the sub-area104D, or the sub-area104F. At status204, the network device120F may be in an idle mode or otherwise located in another location. At operation206, the network device120F may initiate a boot up protocol (e.g., boot up sequence). At interruption208, the network device120I may be unable to continue operations in the predefined area102. At operation210, the network device120G and the network device120H transmit a request connectivity signal to the network device120I in an attempt to reconnect. At operation212, the network device120G and the network device120H determine that connectivity is lost with the network device120I. The network device120G and the network device120H may save the neighbor reprovisioning parameters144associated with the network device120I. Until another device is identified to be capable of performing the operations previously associated with the network device120I in one of the same sub-areas104in which the network device120I operates, the network device120G and the network device120H may be configured to perform one or more roles that were previously associated with the network device120I.

The operational flow200A continues at operation214, where the network device120F prepares one or more connectivity signals with the device's information as the network device120F enters the sub-area104F. At operation216, the network device120G is configured to listen for connectivity signals. At operation218, the network device120H is configured to listen for connectivity signals. At operation220, the network device120F broadcasts the connectivity signals in the sub-area104F. The network device120G and the network device120H may be configured to receive and identify the connectivity signals from the network device120F. At status222, the network device120I is considered to be at a different location. At operation224, the network device120G and the network device120H may be configured to determine a direction of arrival for the connectivity signals. At operation226, the network device120G and the network device120H may be configured to identify one of the sub-areas104corresponding to the direction of arrival. At operation228, the network device120G and the network device120H may be configured to determine one of the network devices120that is closest to the broadcasting network device120F. The network device120G is determined to be the closest to the network device120F. At operation230, the network device120G provides an acknowledgement to the network device120F that the connectivity signals were received by the network device120G. At operation232, the network device120G and the network device120H determine neighbor reprovisioning parameters144for the broadcasting network device120F. At operation234, the network device120G and the network device120H may be configured to provide the neighbor reprovisioning parameters144to the network device120. At operation236, the network device120F may be configured to define states, triggers, and roles based at least in part upon the neighbor reprovisioning parameters144. In some embodiments, the states may be the operating states170, the triggers may be the device triggers172, and the roles may be the device roles174. The roles may be some of the roles previously associated with the network device120I. At operation238, in response to defining the states, the triggers, and the roles, the network device120F may be configured to perform the operating states170corresponding to the device roles174in accordance with the device triggers172for the sub-area104F.

FIG.2Bshows the operational flow200B in which operations250-280performed by the server160, the network device120A, the network device120B, and the network device120C. At operation250, the network device120B, the server160, and the network device120C may perform multiple network operations associated with the sub-areas104of the predefined area102while reporting a copy of network device instructions140. As described above, the server160may be configured to perform one or more operations described in reference to the network device120. The network device120B, the server160, and the network device120C may obtain neighbor reprovisioning parameters144corresponding to the adjacent sub-area104A and the sub-area104B. At status252, the network device120A may be in an idle mode or otherwise located in another location. At operation254, the network device120A may initiate a boot up protocol (e.g., boot up sequence). At interruption256, the server160may determine that connectivity is lost with the network device120A. The server160may save the network device reprovisioning parameters184associated with the network device120A. Until another device is identified to be capable of performing the operations previously associated with the network device120A in one of the same sub-areas104in which the network device120A operates, the server160may be configured to perform one or more roles that were previously associated with the network device120A.

The operational flow200B continues at operation258, where the network device120A prepares one or more connectivity signals with the device's information as the network device120A enters the sub-area104A. At operation260, the server160is configured to listen for connectivity signals. At operation262, the network device120A broadcasts the connectivity signals in the sub-area104A. The network device120B, the server160, and the network device120C may be configured to receive and identify the connectivity signals from the network device120A. At operation264, the network device120B, the server160, and the network device120C are configured to determine a direction of arrival for the connectivity signals. At operation266, the server160may be configured to identify one of the sub-areas104corresponding to the direction of arrival. At operation268, the server160may be configured to determine one of the network devices120that is closest to the broadcasting network device120F. The network device120G is determined to be the closest to the network device120F. At operation270, the server160provides an acknowledgement to the network device120A that the connectivity signals were received by the server160. At operation272, the network device120B, the server160, and the network device120C determine the network device reprovisioning parameters184for the broadcasting network device120F. At operation274, the server160provides the network device reprovisioning parameters184to the network device120. At operation276, the network device120A may be configured to define states, triggers, and roles based at least in part upon network device reprovisioning parameters184. In some embodiments, the states may be the operating states170, the triggers may be the device triggers172, and the roles may be the device roles174. The roles may be some of the roles previously associated with the network device120B or the network device120C. At operation278, the network device120B, the server160, and the network device120C may share that the network device120A is reprovisioned for the sub-area104A. At operation280, in response to defining the states, the triggers, and the roles, the network device120A may be configured to perform the operating states170corresponding to the device roles174in accordance with the device triggers172for the sub-area104A.

FIG.3shows an example flowchart of a process300to dynamically reprovision the network devices120in the predefined area102, in accordance with one or more embodiments. Modifications, additions, or omissions may be made to the process300. The process300may include more, fewer, or other operations than those shown below. For example, operations may be performed in parallel or in any suitable order. While at times discussed as the network devices120or the server160, the one or more server processors164, or components of any of thereof, any suitable system or components of the system100may perform one or more operations of the process300. For example, one or more operations of the process300may be implemented, at least in part, in the form of software instructions182ofFIG.1, stored on non-transitory, tangible, machine-readable media (e.g., server memory180ofFIG.1) that when run by one or more processors (e.g., one or more server processors164ofFIG.1) may cause the one or more processors to perform operations described in operations302-330.

The process300starts at operation302, where the server memory180is configured to store multiple reprovisioning parameters from one or more additional network devices120in a predefined area102. As described in reference toFIGS.2A and2B, the reprovisioning parameters may be collected during operations of the additional network devices120at corresponding specific locations in the predefined area102. At operation304, the one or more server processors164may be configured to receive connectivity signals from one of the network devices120. As a non-limiting example, the process300may comprise reprovisioning the network device120A. The network device120A may be broadcast the connectivity signals. At operation306, the one or more server processors164may determine a direction of arrival corresponding to the connectivity signals. The one or more server processors164may be configured to determine the direction of arrival based at least in part upon a time direction of arrival (TDOA) procedure. In other embodiments, the connectivity signals may be received by the server160and one or more additional network devices120(e.g., the network device120B) already in communication with the server160. At this time, the server160and the network device120B may be configured to triangulate a location of the network device120A based at least in part upon known location information associated with the server160and the network device120B (e.g., these network devices120are in known locations or the locations are known in the predefined area102). At operation308, the one or more server processors164identify one of the sub-areas104corresponding to the direction of arrival, which in this case corresponds to the sub-area104A. At operation310, the one or more server processors164determine the neighbor reprovisioning parameters144(e.g., the network device provisioning parameters184) for the network device120A based at least in part upon identifying that the network device120A in in the sub-area104A.

The process300continues at operation320, where the one or more server processors164determine whether the sub-area104A is associated to one or more of the network devices120. The server160may be configured to review the area information192to confirm the network device list196A in the sub-area profile194A corresponding to the sub-area104A. Further, the server160may determine whether the connectivity signals were received from one of the network devices120in the network devices list196A. If the one or more server processors164determine that the network device120A is known to be located in the sub-area104A (e.g., YES), the process300proceeds to operation322. At operation322, the one or more server processors164confirm reprovisioning parameters with the network device120A. In this regard, the one or more server processors164may determine whether the instructions140comprise any of the operational context to be provided from the network device reprovisioning parameters184. If the one or more server processors164determine that the network device120A are not known to be located in the sub-area104A (e.g., NO), the process300continues to operation324. At operation324, the one or more server processors164establish a communication link (e.g., the communication link156) with the network device120A located in the direction of arrival. At operation326, the one or more server processors164transmit the network device reprovisioning parameters184to the network device120A. At operation328, the reprovisioning controller168may be configured to define states, roles, and triggers based at least in part upon the network device reprovisioning parameters184. The states may comprise the operating states170, the roles may be the device roles174, and the triggers may be the device triggers172corresponding to the sub-area104A in accordance with the trigger-to-roles reprovisioning tables176.

The process300ends at operation330, where the one or more server processors164perform the operating states170corresponding to the device roles174in accordance with the device triggers172at the network device120A. At this stage, the process300reprovisions the network device120A in accordance with specific network device reprovisioning parameters184corresponding to the sub-area104A.

The scope of this disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments described or illustrated herein that a person having ordinary skill in the art would comprehend. The scope of this disclosure is not limited to the example embodiments described or illustrated herein. Moreover, although this disclosure describes and illustrates respective embodiments herein as including particular components, elements, feature, functions, operations, or steps, any of these embodiments may include any combination or permutation of any of the components, elements, features, functions, operations, or steps described or illustrated anywhere herein that a person having ordinary skill in the art would comprehend. Additionally, although this disclosure describes or illustrates particular embodiments as providing particular advantages, particular embodiments may provide none, some, or all of these advantages.

The embodiments disclosed herein are only examples, and the scope of this disclosure is not limited to them. Particular embodiments may include all, some, or none of the components, elements, features, functions, operations, or steps of the embodiments disclosed herein.

Modifications, additions, or omissions may be made to the elements shown in the figures above. The components of a device may be integrated or separated. Moreover, the functionality of a device may be performed by more, fewer, or other components. The components within a device may be communicatively coupled in any suitable manner. Functionality described herein may be performed by one device or distributed across multiple devices. In general, systems and/or components described in this disclosure as performing certain functionality may comprise non-transitory computer readable memory storing instructions and processing circuitry operable to execute the instructions to cause the system/component to perform the described functionality.

Any appropriate steps, methods, features, functions, or benefits disclosed herein may be performed through one or more functional units or modules of one or more virtual apparatuses. Each virtual apparatus may comprise a number of these functional units. These functional units may be implemented via processing circuitry configured to execute program code stored in memory. The term unit may have conventional meaning in the field of electronics, electrical devices and/or electronic devices and may include, for example, electrical and/or electronic circuitry, devices, modules, processors, receivers, transmitters, memories, logic solid state and/or discrete devices, computer programs or instructions for carrying out respective tasks, procedures, computations, outputs, and/or displaying functions, and so on, as such as those that are described herein.