SERVICE DOWNLOAD OPTIMIZATION FOR NANOTECH MESH

A method includes determining characteristics of nodes of a mesh network and selecting one or more nodes of the mesh to receive a payload in view of the characteristics of the plurality of nodes of the mesh network. The method further includes pushing the payload to the one or more selected nodes of the mesh network, wherein the one or more nodes propagate the payload to remaining nodes of the mesh network.

TECHNICAL FIELD

Aspects of the present disclosure relate to networked devices, and more particularly, to a download optimization service for mesh networks.

BACKGROUND

A mesh network is a network topology that includes nodes (i.e. bridges, switches, internet-of-things (IoT) devices, and other infrastructure devices) that are interconnected directly and non-hierarchically to other nodes and interact to communicate within the mesh. The interconnected format of the nodes allows for multiple nodes to participate in the relay of information.

Mesh networks may be formed from multiple types of devices, including nanotechnology, or nanotech, devices. Nanotech is an emerging technology that includes devices on a miniature scale, including atomic, molecular, and supramolecular scale. For example, nanotech devices may have dimensions less than 100 nanometers (nm). The reduced size of such devices allows for a wide range of potential applications, including biological applications. Large numbers of nanotech devices may be organized in a mesh network.

DETAILED DESCRIPTION

Internet-of-things (IoT) devices have become increasingly ubiquitous and, as a result, various solutions have been proposed to communicate with and between large networks of IoT devices. IoT devices can have various types of software and/or hardware configurations and capabilities. By networking the IoT devices together, functionalities performed by one of the IoT devices may be provided as a service to other IoT devices that lack that functionality. For example, some IoT devices may have a particular type of processing functionality (such as authentication or password management) that may be provided to other IoT devices in the network.

In a conventional mesh networks, updating the nanotech or IoT devices of the mesh network is difficult and resource intensive. Each device on the network has to pull the data for the update, verify the integrity of the update, potentially de-compress the update and install the update. The full mesh network may include hundreds or thousands of devices which leads to significant duplication and wasted processing power. For example, the retrieval of the updates may utilize limited bandwidth of all nodes, the verification, de-compression, and installation of the update may utilize a significant amount of computing resources (e.g., memory, processing power, storage, etc.) or may require computing resources that are not available to each node device.

Aspects of the disclosure address the above-noted and other deficiencies by providing a download optimization service to determine and perform an optimized download for a mesh network at a given point in time. The download optimization service may receive information (e.g., an update, download, etc.) to be projected into the mesh network. Upon receiving the information, the download optimization service may retrieve real time information from each of the node devices in the mesh network. The real time information may include networking capabilities of the device, network utilization, and computing resource capabilities and utilization of the device. Additionally, the download optimization service may determine geographical neighbors of each device that the device can directly broadcast to (e.g., via peer to peer communication). The download optimization service may determine which of the node device of the mesh network having optimal network conditions, resource utilization, and geographical location within the mesh to push the update/download. Such target devices may receive the update along with a list of geographical neighbors to which the target device is to broadcast the update/download. For example, each device in the mesh may include a local download service agent to receive the update and propagate the update according to instructions received with the update from the download optimization service.

The local download service agent of each node device may download, and verity the integrity and authenticity of the update/download. The download service agent may also decompress the file prior to propagating to neighbor nodes. The download service agent receives the propagation instructions and a list of neighbor nodes. The download service agent may then perform a broadcast to a subset of the neighbor mesh at periodic intervals to reduce the outbound network strain on the broadcasting device. Furthermore, the download service agent may report to the download optimization service which devices received the update to allow for tracking, at a master level, of which devices of the mesh network have successfully received the update. The download optimization service may then coordinate the installation strategy of choice (e.g., simultaneous or staged installation).

As compared to conventional devices, embodiments of the present disclosure provide for smoother distribution of updates in a lightweight manner with the heavy lifting being performed by nodes that have the necessary capabilities to handle it. Embodiments also provide for additional control and adaptability for distribution of information through a mesh network.

FIG.1depicts a high-level component diagram of an illustrative example of a network architecture100, in accordance with one or more aspects of the present disclosure. However, although the discussion with respect toFIG.1describes a mesh network, other network architectures (e.g., non-mesh) are possible without deviating from the scope of the present disclosure, and the implementation of a computer system utilizing examples of the disclosure are not necessarily limited to the specific architecture depicted byFIG.1.

As depicted inFIG.1, network architecture100includes a download server102and a mesh management device100coupled to a mesh network120via a network110. The download server102includes a download service105for providing a download payload that is to be distributed to nodes of the mesh network. The mesh management device110includes a download optimization service115. The mesh network120includes a plurality of node devices125A-E. Although depicted as separate, the download server102and the download optimization service115may also be implemented as a node of the mesh network120. Furthermore, although five node devices are depicted inFIG.1, any number of node devices may be included in the mesh network120. Network110may be a public network (e.g., the internet), a private network (e.g., a local area network (LAN) or wide area network (WAN)), or a combination thereof. In one embodiment, network110may include a wired or a wireless infrastructure, which may be provided by one or more wireless communications systems, such as a WiFi™ hotspot connected with the network110and/or a wireless carrier system that can be implemented using various data processing equipment, communication towers (e.g., cell towers), etc. The network110may carry communications (e.g., data, message, packets, frames, etc.) between the various components of the configuration device140and one or more of the node devices125A-E.

The download server102and each node device125A-E may include a processing device, memory, storage, networking hardware, and any other computing hardware. The processing device may include a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. The processing device may also include one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The memory may include volatile memory devices (e.g., random access memory (RAM)), non-volatile memory devices (e.g., flash memory) and/or other types of memory devices. Furthermore, each of the computing devices may be a server, a mainframe, a workstation, a personal computer (PC), a mobile phone, a palm-sized computing device, a virtual instance of a computing device, etc. In some examples, each of the node devices125A-E may be an IoT device or nanotech device.

Networking hardware of the computing devices (e.g., node devices125A-E, download server102, mesh management device110) may include a networking interface through which a computing device can communicate with one or more other network connected devices. In some embodiments, a network interface may include a wireless technology, such as WiFi™, Bluetooth, Home radio frequency (Home RF), radio frequency identifier (RFID), for example. In some examples, the node devices125A-E of the mesh network may communicate via peer to peer network techniques

The node devices125A-E may perform one or more services within the mesh network120. As used herein, a “service” provided by the node device refers to a task or other technical activity performed by the node device125A-E on behalf of or for another node device. A service may include computer program logic utilized to provide the specified task or technical activity. Thus, a service can be implemented in hardware, firmware, and/or software. In one embodiment, services are stored on a non-transitory storage device (i.e., a computer program product), loaded into a memory, and executed by one or more processing devices. In some embodiments, the service may be provided by execution of computer instruction code on processing device. Examples of services include, but are not limited to, an authentication service, a storage service, a gateway service, a processing service, a power management service, and/or a packaging service.

In some examples, the mesh management device110may retrieve, or otherwise obtain, information about each of the nodes devices125A-E of the mesh network120. The information may include computing capabilities and networking capabilities of each node device125A-E. The mesh management device110may further determine geographic locations of each node device125A-E with respect to the other node devices of the mesh network120.

Additionally, the node devices125A-E may each include a download agent128A-E to receive and/or propagate a payload from the download service105. For example, the download agent128A-E for each node device125A-E may be configured to receive a payload (e.g., from the download optimization service115) along with instructions for propagating the payload to additional nodes. For example, the instructions may include a list of neighbor nodes to which the payload should be provided. Neighbor nodes may be nodes that are only one network hop from the distributing node (e.g., with direct peer to peer communication). For example, the download optimization service115may determine that node device125C is the optimal node for an initial seeding of a payload. The download optimization service115may provide the payload to node device125C along with distribution instructions and a list of the neighbor nodes (e.g., node devices125A,125B,125D, and125E). The download agent128C may then transmit the payload to the download agents of each of the neighbor nodes. In some examples, the node device125C may report back to the download optimization service115which neighbor node devices successfully received the payload. In some examples, the instructions received by the download agent128C may include authentication instructions, de-compression instructions, etc. depending on the optimal distribution plan determined by the download optimization service115.

FIG.2is a system diagram illustrating an example mesh network200, according to some embodiments. The mesh network200includes a download optimization service115, which may be the same or similar to download optimization service115ofFIG.1. The mesh network200further includes geographic regions205,210, and215each including one or more node devices. For example, geographic region205may include node devices220A-C, geographic region210may include node devices222A-C, and geographic region215may include node devices224A-C. Although for ease of illustration three regions are depicted, each including three node devices, embodiments may include any number of regions and each region may include any number of node devices.

As depicted, the download optimization service115may be in communication with one or more node devices within each region205,210, and215. As described above with respect toFIG.1, the download optimization service115may determine an optimal payload distribution plan based on information about each of the devices in the mesh network200. For example, the download optimization service115may obtain computing capabilities for each of the node devices in the mesh network (e.g., including processing power, memory, storage, networking, etc.) as well as utilization information for the computing resources. Thus, the download optimization service115may have a full view of the mesh network with capabilities, statuses, services, importance, etc. for each node as well as neighboring nodes and relative geographic location. Using this information, the download information service115may identify which nodes of the mesh network to receive an initial seeding of the payload and from which the payload can be propagated to additional nodes in the mesh network. For example, the download optimization service115may identify nodes that are capable of receiving the payload, which are capable of transmitting the payload to neighboring nodes, and which would not negatively impact other important operations within the mesh network.

In some examples, as depicted inFIG.2, the download optimization service115may push a payload to each of the selected node devices220A,222A, and224A based on the determination of the optimal distribution plan determined above. The node devices220A may receive the payload along with a list of neighboring nodes of node device220A (e.g., node device220B-C) to which the payload is to be propagated from node device220A. Similarly, node device222A may receive a list including node device222B and222C to which node device222A is to transmit the payload. Furthermore, node device224A may receive a neighboring nodes list and instructions to propagate the payload to node devices224B-C. In some examples, the download optimization service115may include instructions to the node devices220A,222A, and224A to authenticate and verify the payload prior to transmitting the payload to neighboring devices. In some examples, the download optimization service115may include instructions to the node devices220A,222A, and224A to decompress the payload prior to transmitting the payload to neighboring devices (e.g., if neighboring nodes do not have the resources to decompress the payload). Thus, the node devices220A,222A, and224A may act as seed nodes from which a payload can be processed and propagated to the remaining nodes in the mesh network200.

FIG.3is a block diagram that illustrates a computing system300for download optimization in a mesh network, according to some embodiments. Computing system300may include a processing device310and memory330. Memory330may include volatile memory devices (e.g., random access memory (RAM)), non-volatile memory devices (e.g., flash memory) and/or other types of memory devices. Processing device310may be a central processing unit (CPU) or other processing device of computing system300. Computing device300may be coupled to a mesh network350. The mesh network350may include several computing nodes in communication with one another.

In one example, the processing device310may execute a download optimization service115. The download optimization service115may include a characteristic determining component312, a node selection component314, and a payload pushing component. The characteristic determining component312may obtain node characteristics332from the mesh network350for each of the computing nodes of the mesh network350. Node characteristics332may include available processing capabilities, memory, storage, communication and networking capabilities, and so forth. Additionally, node characteristics332may include the utilization of computing resources of the nodes (e.g., a current CPU, memory, and networking bandwidth being utilized at a given point in time). The node selection component314may select one or more nodes of the mesh network350to receive a payload334(e.g., a download, an update, software, firmware, etc.) and distribute the payload334to neighboring nodes in the mesh. The node selection component314may select the target nodes based on the node characteristics332determined by the characteristic determining component312. The payload pushing component316may then provide the payload334to the one or more selected target nodes. In some examples, the node selection component314may also determine a list of neighbor nodes of the selected target nodes and provide the list along with instructions for how to distribute the payload334to each of the neighbor nodes in the list.

FIG.4is a flow diagram of a method400of pushing a payload to nodes of a mesh network, in accordance with one or more aspects of the disclosure. Method400may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, a processor, a processing device, a central processing unit (CPU), a system-on-chip (SoC), etc.), software (e.g., instructions running/executing on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, at least a portion of method400may be performed by download optimization service115of at leastFIG.1.

With reference toFIG.4, method400illustrates example functions used by various embodiments. Although specific function blocks (“blocks”) are disclosed in method400, such blocks are examples. That is, embodiments are well suited to performing various other blocks or variations of the blocks recited in method400. It is appreciated that the blocks in method400may be performed in an order different than presented, and that not all of the blocks in method400may be performed.

Method400begins at block410, where processing logic determines characteristics of nodes of a mesh network. The characteristics may include at least one of processing capacity, available memory, and available storage. The characteristics may also include networking capabilities of each of the plurality of nodes of the mesh network. In some examples, the characteristics may include a relative geographic location of each of the plurality of nodes of the mesh with respect to each of the other nodes of the mesh.

At block420, the processing logic selects one or more nodes of the mesh network to receive a payload in view of the characteristics of the nodes of the mesh network. The processing logic may further select the one or more nodes in view of characteristics of respective neighboring nodes of each of the plurality of nodes of the mesh network. The characteristics of the respective neighboring nodes may include the networking capabilities of the neighboring nodes or a classification of the neighboring nodes. For example, the processing logic may select nodes of the mesh that are capable of receiving and performing operations on the payload, such as verification, decompression, etc. The processing logic may also select the nodes that have the capabilities to transmit the payload to additional nodes. In some examples, the processing logic selects the nodes that are in communication with a large enough number of neighbor nodes to provide for an efficient and/or optimized distribution (e.g., minimal number of hops to transfer the payload from the selected nodes to each of the remaining nodes). For example, the processing logic may attempt to select geographically diverse nodes that also are in communication with several neighbor nodes to push the payload to initially such that the payload can be distributed to each of the neighbor nodes in the mesh with only one hop.

At block430, the processing logic pushes the payload to the one or more selected nodes of the mesh network, wherein the one or more nodes are to propagate the payload to the remaining nodes of the mesh network. The processing logic may also push, to the one or more selected nodes, instructions to propagate the payload to respective neighboring nodes of the one or more selected nodes. The instructions may include a list of neighbor nodes that the payload is to be propagated to from the selected node. The instructions may also include a method for propagating the payload, such as the communication channel to be used and the timing of transmitting the payload (e.g., all at once, periodically, etc.).

FIG.5is a flow diagram of a method500of optimizing a software download into a mesh network, in accordance with one or more aspects of the disclosure. Method500may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, a processor, a processing device, a central processing unit (CPU), a system-on-chip (SoC), etc.), software (e.g., instructions running/executing on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, at least a portion of method500may be performed by download optimization service115of at leastFIG.1.

With reference toFIG.5, method500illustrates example functions used by various embodiments. Although specific function blocks (“blocks”) are disclosed in method500, such blocks are examples. That is, embodiments are well suited to performing various other blocks or variations of the blocks recited in method500. It is appreciated that the blocks in method500may be performed in an order different than presented, and that not all of the blocks in method500may be performed.

Method500begins at block510, the processing logic determines capabilities of each computing node of a mesh network. For example, the processing logic determines the computing capabilities of each computing node of the mesh network, such as CPU capacity, an amount of RAM, an amount of physical storage, communication capabilities such as WiFi™, infrared (IR), RFID, or any other network or peer to peer communication protocols. For example, the processing logic may determine what hardware is included in each of the computing nodes. The processing logic may further determine the utilization of the hardware computing resources of each computing node. For example, the processing logic may continuously monitor, or intermittently determine, the utilization of the computing resources of each node in the network.

At block520, the processing logic determines the capabilities of neighboring nodes for each of the computing nodes of the mesh network. The processing logic may determine which nodes neighbor each node in the mesh network both geographically and with respect to the capacity to directly communicate with one another. For example, the processing logic may determine a list of neighbor nodes for each node. The list of neighbor nodes may indicate the nearby neighbor nodes that a particular node can communicate with directly.

At block530, the processing logic determines an optimal download path including one or more computing nodes of the mesh network to initially receive the download based on the capabilities of each computing node and the corresponding neighboring nodes for each computing node of the mesh network. The processing logic may determine the optimal download path based on which computing nodes have the capability to receive the download, perform one or more operations on the download, and propagate the download. For example, some nodes in the mesh network may not have enough memory or storage resources to receive the download and perform operations such as verification, decompression, etc. Therefore, the processing logic identifies computing nodes of the mesh that do have the requisite amount of available resources and bandwidth to receive the download, perform the operations, and then provide the downloads to the other nodes of the mesh. The optimal download path may further be determined based on node types, node services, and node criticality. For example, mission critical nodes, such as a life critical nanotech node used in the human body that cannot fail, may be avoided as the selected node to prevent overwhelming the resources of such a node and causing failures in the network.

At block540, the processing logic pushes the download to the one or more selected computing nodes. At block550, the processing logic pushes instructions for the optimal download path to the one or more selected computing nodes for propagating the download to remaining nodes of the mesh network. The instructions for the optimal download path may include the neighbor nodes to which the selected computing nodes are to provide the download. The instructions may include the communication method for providing the download to the neighbor nodes (e.g., IR, RFID, WiFi™, Ethernet, or the like) and the timing of distributing the download (e.g., in a rolling manner, all at once, intermittently, and so forth).

At block560, the processing logic provides, by the one or more selected computing nodes, the download to respective neighbor nodes of the mesh network based on the instructions for the optimal download path. In some examples, the one or more selected computing nodes returns an indication of the computing nodes that successfully received the download.

The example computing device600may include a processing device (e.g., a general purpose processor, a PLD, etc.)602, a main memory604(e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), a static memory606(e.g., flash memory and a data storage device618), which may communicate with each other via a bus630.

Computing device600may further include a network interface device608which may communicate with a network620. The computing device600also may include a video display unit610(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device612(e.g., a keyboard), a cursor control device614(e.g., a mouse) and an acoustic signal generation device616(e.g., a speaker). In one embodiment, video display unit610, alphanumeric input device612, and cursor control device614may be combined into a single component or device (e.g., an LCD touch screen).

Data storage device618may include a computer-readable storage medium628on which may be stored one or more sets of instructions625that may include instructions for a download optimization service, e.g., download optimization service115for carrying out the operations described herein, in accordance with one or more aspects of the present disclosure. Instructions625may also reside, completely or at least partially, within main memory604and/or within processing device602during execution thereof by computing device600, main memory604and processing device602also constituting computer-readable media. The instructions625may further be transmitted or received over a network620via network interface device608.