Dynamic mesh mapping service

A system and method of dynamically mapping a network topology of a mesh network of nodes. The method including maintaining, by a processing device of a control node of the mesh network, a network topology map indicating groups of neighboring nodes. The method including determining that a first node of the mesh network discovered a neighbor change event associated with a second node. The method including identifying, based on the network topology map, a group of neighboring nodes of a target node of the mesh network responsive to determining that the first node detected the neighbor change event. The method including transmitting a targeted message to a first neighboring node of the group of neighboring nodes to cause the first neighboring node to notify the group of neighboring nodes of the neighbor change event.

TECHNICAL FIELD

The present disclosure relates generally to software technology, and more particularly, to systems and methods of dynamically mapping a network topology of a mesh network of nodes.

BACKGROUND

A mesh network is a network in which devices—or nodes—are linked together, branching off other devices or nodes. These networks are set up to efficiently route data between devices and clients. They help organizations provide a consistent connection throughout a physical space.

DETAILED DESCRIPTION

Internet of Things (IoT) devices, such as mesh device, have numerous ways to discover their location and that of their neighbors through the usage of various network protocols and sensors. However, with IoT devices potentially free moving, for example, in automobiles, an understanding of the current location and the neighbors can be a challenge to overcome in order to allow for more targeted geolocation and neighbor aware location actions. Furthermore, when a neighbor change occurs at a local level, the devices may discover this and typically propagate the neighbor change out to nearby neighbors, which in turn, cascades through the mesh network from device to device. This can be costly and noisy on the mesh network because it increases network congestion and consumes excess networking resources. For this reason, in the cases of several protocols, the message delivery will not commence until the network topology is known from a routing perspective. Yet, the cost of finding out that information in a resource constrained mesh network can be overly burdensome on the mesh network.

Aspects of the present disclosure address the above-noted and other deficiencies by dynamically mapping a network topology of a mesh network of nodes. As discussed in greater detail below, a control mesh node of a mesh network executes a dynamic mesh mapping service (DMMS) agent that generates, and maintains in a storage (e.g., database, memory), a network topology map of the mesh network to show where neighboring nodes are located at any given point in time. When a mesh node detects a neighbor change event (e.g., a new neighbor, a loss of a neighbor, etc.), it contacts the DMMS agent of the control mesh node with the details about the neighbor change event. To save bandwidth, the DMMS updates (e.g., redraws) the network topology map to target just the changed neighbors in a controlled manner (which may trigger, for example, on demand), rather than forcing the neighbors to propagate the messages, endlessly throughout the mesh network. This process can be reactive or proactive by the DMMS agent to force an update to just those neighbors changed.

For cases where propagation is not possible (e.g. security reasons to not respond to certain devices publicly) or where there is too much free movement to make propagation worthwhile (e.g. automobiles moving in a parking lot), the DMMS agent may draw a dynamic snapshot of the network based on responses it receives from the mesh nodes and based on what neighbors that they identify. The DMMS agent can then infer neighbors for “hidden” devices that do not respond to other mesh nodes by mapping the network edges based on mesh nodes that can respond. This can help to prime the mesh network for more intelligent geolocation oriented actions. The DMMS agent also allows for dynamic message routing, where an administrator of the mesh network can specify a destination and the DMMS agent will return a snapshot of the network topology map to route accordingly. An embodiment of this is the creation of sub meshes, with the ability to form a bounded variant based on free movement into geographic catchment areas (e.g., geo-fencing) which could be useful from a software update perspective.

FIG.1is a block diagram depicting an example environment for dynamically mapping a network topology of a mesh network of nodes, according to some embodiments. The environment100includes a mesh network system102(sometimes referred to as, “mesh network”) a mesh network system112, and a mesh network administrator device110. The mesh network system102includes mesh nodes104(e.g., mesh nodes104a,104b,104c,104d,104e,104f,104g,104h,104i). The mesh network system102includes a control mesh node108(sometimes referred to as, “control node”), which is a mesh node104that is further configured with additional “administrative” functionality for controlling and/or managing the other mesh nodes104in the mesh network system102. The control mesh node108is communicably coupled to the mesh network administrator device110via an external network (not shown inFIG.1).

Each of the mesh nodes104execute a neighbor discovery service (NDS) agent105. Specifically, the mesh node104aexecutes an NDS agent105a, the mesh node104bexecutes an NDS agent105b, the mesh node104cexecutes an NDS agent105c, the mesh node104dexecutes an NDS agent105d, the mesh node104eexecutes an NDS agent105e, the mesh node104fexecutes an NDS agent105f, the mesh node104gexecutes an NDS agent105g, the mesh node104hexecutes an NDS agent105h, and the mesh node104iexecutes an NDS agent105i.

The NDS agent105is configured to detect (e.g., discover) neighbor change events associated with its neighboring mesh nodes104. The NDS agent105of a mesh node104(e.g., mesh node104a) then sends a message (shown inFIG.1as, “neighbor reporting message”) to the control mesh node108, where the message indicates the neighbor change event. The neighbor reporting message includes the mesh node's identifier (ID), any neighboring mesh node IDs, any security policies associated with the mesh node104, any security policies associated with the neighboring mesh node IDs, a device type ID (e.g., insulin pump, smartphone, smartwatch, etc.) of the mesh node104, and device type IDs of the neighboring mesh nodes.

Each mesh node (e.g., mesh node104a, control mesh node108, etc.) of a mesh network system (e.g., mesh network system102, mesh network system112) is positioned (e.g., arranged, organized) within the mesh network system, such that the mesh node may be within a minimum physical distance (e.g., up to 10 meters with a Bluetooth connection, up to 46 meters with a wireless local area network (WLAN) connection) of neighboring mesh nodes to be able to communicate with its neighboring nodes by using one or more types of communication capabilities.

As shown inFIG.1, the mesh node104ahas neighboring mesh nodes that include control mesh node108and mesh nodes104b,104g,104hwhen using a first type of communication capability (e.g., a Bluetooth, etc.). The mesh node104bhas neighboring mesh nodes that include mesh nodes104a,104c,104d,104fwhen using the first type of communication capability. The mesh node104chas neighboring mesh nodes that include mesh nodes104b,104d,104eand control mesh node108when using the first type of communication capability. The mesh node104dhas neighboring mesh nodes that include mesh nodes104b,104c,104fwhen using the first type of communication capability. The mesh node104ehas neighboring mesh nodes that include mesh node104cwhen using the first type of communication capability. The mesh node104fhas neighboring mesh nodes that include mesh nodes104d,104iwhen using the first type of communication capability. The mesh node104ghas neighboring mesh nodes that include control mesh node108and mesh nodes104a,104hwhen using the first type of communication capability. The mesh node104hhas neighboring mesh nodes that include mesh nodes104a,104g,104iwhen using the first type of communication capability. The mesh node104ihas neighboring mesh nodes that include mesh nodes104f,104hwhen using the first type of communication capability.

A mesh node (e.g., mesh node104a, control mesh node108, etc.) may have a greater number of neighboring mesh nodes when using a second type of communication capability (e.g., a WLAN connection). For example, the mesh node104amay expand its neighboring mesh nodes to also include mesh node104fwhen using the second type of communication capability. The mesh node104bmay expand its neighboring mesh nodes to also include mesh node104e,104iwhen using the second type of communication capability. The mesh node104dmay expand its neighboring mesh nodes to also include mesh node104ewhen using the second type of communication capability. The mesh node104emay expand its neighboring mesh nodes to also include mesh node104dwhen using the second type of communication capability. The mesh node104fmay expand its neighboring mesh nodes to also include mesh nodes104a,104b,104hwhen using the second type of communication capability. The mesh node104hmay expand its neighboring mesh nodes to also include mesh node104fwhen using the second type of communication capability. The mesh node104imay expand its neighboring mesh nodes to also include mesh node104awhen using the second type of communication capability.

A mesh node (e.g., mesh node104a, control mesh node108, etc.) may directly communicate with its neighboring mesh nodes104by using one or more types of communication capabilities. A communication capability may include the hardware and/or software resources for communicating via a Bluetooth (BT) connection, a WLAN connection, and/or a near field communication (NFC) connection. In some embodiments, a mesh node104includes the hardware and/or software resources for communicating via a cellular network (e.g., LTE, 5G, etc.), which allow the mesh node104to communicate with computing devices outside of the mesh network system102. In some embodiments, a mesh mode104does not include the hardware and/or software resources for communicating via a cellular network (e.g., LTE, 5G, etc.), which prevent the mesh node104from communicating with computing devices outside of the mesh network system102.

In some embodiments, a mesh node (e.g., mesh node104a, control mesh node108, etc.) may be unable to directly communicate with a non-neighboring mesh node when using a particular communication capability because the non-neighboring node is outside of the radio frequency (RF) range of the particular communication capability. In some embodiments, a mesh node that is unable to directly communicate with a non-neighboring mesh node may indirectly communicate with the non-neighboring node by directly communicating through a neighboring mesh node. For example, if the control mesh node108wants to communicate with the mesh node104d, then the control mesh node108may send a first message (shown inFIG.1as, “targeted message #1”) to mesh node104cto cause the mesh node104cto send a second message (shown inFIG.1as, neighbor change message”) to the mesh node104d, where the second message indicates the details of the first message (e.g., target message #1). As another example, if the mesh node104cwants to communicate with the mesh node104f, then the mesh node104cmay send a first message (shown inFIG.1as, “neighbor change message”) to mesh node104dto cause the mesh node104dto redirect (e.g., forward, propagate) the first message (shown inFIG.1as, “propagated neighbor change message”) to the mesh node104i.

A mesh node104may directly communicate with a group of its neighboring nodes using a first type of communication capability and another group of its neighboring nodes using a second type of communication capability. For example, the mesh node104amay directly communicate with a first group (e.g., mesh node104b, mesh node104h) of its neighboring nodes using one or more Bluetooth connections and a second group (e.g., control mesh node108, mesh node104g) of its neighboring nodes using one or more WLAN connections.

A mesh node104may be configured to discover its neighboring mesh nodes104by broadcasting a ping message (shown inFIG.1as, local neighbor request”) outward using a particular communication capability and identifying the mesh nodes104that responds to the ping message as its neighboring mesh nodes. For example, the mesh node104amay transmit ping messages toward the mesh nodes104b,104g,104hto cause each of the mesh nodes104to either respond with an acknowledgement (shown inFIG.1as, “ACK”) or not respond (e.g., stay silent). In some embodiments, a mesh node104may be prohibited from responding to the local neighbor request due to a security policy that requires for the particular mesh node104to stay “hidden” from other mesh nodes104. In some embodiments, a mesh node104may be unable to respond to the local neighbor request because the mesh node104lacks the communication capability (e.g., faulty communication hardware, a mismatch in communication protocols, etc.) to respond. For example, the mesh node104amight have broadcasted the local neighbor request using a Bluetooth channel, but the mesh node104bonly has the capability to communicate using a WLAN channel. Therefore, the mesh node104bnever received the Bluetooth message. In some embodiments, a mesh node104may be configured to discover a first groups of its neighboring mesh nodes when using a first type (e.g., Bluetooth) of communication capability, a second group of its neighboring mesh nodes when using a second type (e.g., WLAN) of communication capability, and so on.

An external network may 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 some embodiments, an external network may include a wired or a wireless infrastructure, which may be provided by one or more wireless communications systems, such as wireless fidelity (Wi-Fi) connectivity to the external network and/or a wireless carrier system that can be implemented using various data processing equipment, communication towers (e.g. cell towers), etc. The external network may carry communications (e.g., data, message, packets, frames, etc.) between any other the computing device.

A mesh node104, the control mesh node108, and a mesh network administrator device110may each be any suitable type of computing device or machine that has a processing device, for example, a server computer (e.g., an application server, a catalog server, a communications server, a computing server, a database server, a file server, a game server, a mail server, a media server, a proxy server, a virtual server, a web server), a desktop computer, a laptop computer, a tablet computer, a mobile device, a smartphone, a set-top box, a graphics processing unit (GPU), etc. In some examples, a computing device may comprise a single machine or may include multiple interconnected machines (e.g., multiple servers configured in a cluster).

In some embodiments, the mesh node104, the control mesh node108, and the mesh network administrator device110may each be a wearable device (e.g., smartwatch, smart clothing, smart glasses, smart jewelry, wearable camera, wireless earbuds, fitness tracker, blood pressure monitor, heart rate monitor, etc.) or an implantable device (e.g., insulin pump, cochlear device, pacemaker, brain simulator, etc.).

Still referring toFIG.1, the control mesh node108executes a dynamic mesh mapping service (DMMS) agent109that is configured to dynamically generate a network topology map (sometimes referred to as, “network snapshot”) that indicates based on the responses it receives from mesh nodes104about their attempts to discover their neighboring nodes. The network topology map indicates the one or more groups of neighboring nodes of the mesh network system102at a given point in time. The DMMS agent109maintains the network topology map in a storage (e.g., a database, a memory, etc.) and uses the network topology map for propagation control of neighbor reporting messages throughout the mesh network system102. As discussed in greater detail below, a first mesh node (e.g., mesh nodes104a) discovers a neighbor change event that is associated with a second mesh node (e.g., mesh node104b) that neighbors the first mesh node. For example, the first mesh node104may discover that the second mesh node104is a new neighbor, discover that the second mesh node104is no longer a neighbor, and/or discover an inability of the second mesh node104to respond to queries from the first mesh node104. The first mesh node104then transmits a message (shown inFIG.1as, “neighbor reporting message”) to the DMMS agent109to notify the DMMS agent109about its discovery of the neighbor change event.

Responsive to receiving the message, the DMMS agent109selects one of the mesh nodes104of the mesh network system102as the “target node.” For example, the DMMS agent109may select the first mesh node (e.g., mesh node104a) as the “target node” because it discovered the neighbor change event, or the second mesh node (e.g., mesh node104b) as the “target node” because it triggered the neighbor change event. The DMMS agent109then identifies, based on the network topology map, a group of neighboring nodes of the target node that are unaware of the neighbor change event associated with the second mesh node (e.g., mesh node104b). For example, if the DMMS agent109selects the mesh node104bas the target node (shown inFIG.1as, “target node #1”), then the group of neighboring nodes that are unaware of the neighbor change event would include mesh node104c, mesh node104d, and/or mesh node104f. As another example, if the DMMS agent109selects the mesh node104aas the target node, then the group of neighboring nodes that are unaware of the neighbor change event would include mesh node104b, mesh node104g, and/or mesh node104g.

The DMMS agent109then transmits a targeted message (e.g., not a broadcast message) to a single node of the neighboring nodes of the group of neighboring nodes to cause the single node to notify the group of neighboring nodes of the neighbor change event. As shown inFIG.1, if the DMMS agent109selects the mesh node104bas the target node, then the DMMS agent109transmits a targeted message (shown inFIG.1as, “targeted message #1”) to mesh node104cto cause the mesh node104cto notify the other mesh nodes of the group of neighboring nodes about the neighbor change event. That is, the mesh node104ctransmits a message (shown inFIG.1as, “neighbor change message”) to mesh node104d, which causes the mesh node104dto propagate the message (shown inFIG.1as, “propagated neighbor change message”) to mesh node104fHowever, the mesh node104fdoes not propagate the message to mesh node104ibecause mesh node104iis not a neighboring node of mesh node104b, and thus is outside the propagation range for reporting neighbor change events when mesh node104bis selected as the target node. Likewise, the mesh node104cdoes not propagate the message to mesh node104ebecause mesh node104eis not a neighboring node of mesh node104b, and thus is outside the propagation range for reporting neighbor change events when mesh node104bis selected as the target node.

Alternatively, if the DMMS agent109selects the mesh node104aas the target node, then the DMMS agent109transmits a targeted message (shown inFIG.1as, “targeted message #2”) to mesh node104gto cause the mesh node104gto notify the other mesh nodes of the group of neighboring nodes about the neighbor change event. That is, the mesh node104gtransmits a message (shown inFIG.1as, “neighbor change message”) to mesh node104h, but does not propagate the message to mesh node104ibecause mesh node104iis not a neighboring node of mesh node104a, and thus is outside the propagation range for reporting neighbor change events when mesh node104ais selected as the target node.

The DMMS agent109can also dynamically generate a network topology map that indicates the presence of “hidden” mesh nodes104in the mesh network system102, which are mesh nodes104that cannot be discovered by its neighboring nodes for reasons related to a security policy and/or lacking a communication capability (e.g., faulty hardware and/or software resources). That is, the mesh network system102may be distributed over a geographic region consisting of several overlapping or non-overlapping sub-regions, where each sub-region includes a group (e.g., a sub-mesh) of mesh nodes104that provide a service (e.g., networking, compute, storage, application, etc.) within the sub-region. The DMMS agent109may identify the group of nodes within a particular sub-region of the geographic region based on the network topology map. The DMMS agent109may then transmit a message to the group of nodes to cause each node of the group of nodes within the particular sub-region to broadcast a message (shown inFIG.1as, “local neighbor request”) to discover their neighboring nodes. The neighboring nodes may either respond to the local neighbor request with an acknowledgement (shown inFIG.1as, “ACK”) or not respond.

After discovering their neighbors, each of the mesh nodes104send a message (shown inFIG.1as, “neighbor reporting message”) to the DMMS agent109, where each message identifies each of the neighboring nodes of the mesh node104that replied to their local neighbor request. The DMMS agent109may then infer, based on the plurality of responses, an existence of a hidden node in the sub-region even though the hidden node did not reply to any of the local neighbor requests. The DMMS agent109may then redefine, based on the plurality of responses, the network edges of the sub-region to indicate the existence of the now-identified, hidden node.

An administrator of the mesh network system102may benefit from having access to a network topology map indicating all (including the hidden) of the mesh nodes104in the mesh network system102because the administrator may want to send a particular software update/patch to a particular group of mesh nodes104. For example, the administrator may want to send a critical software update/patch to only the hidden mesh nodes in the mesh network system102because the hidden mesh nodes are associated with a particular (e.g., low-level, high-level) security policy that is different from security policy of the other mesh nodes104. To do this, the administrator may send a request, via the mesh network administrator device110, to the DMMS agent109for access to the network topology map indicating all the mesh node identifiers corresponding to the mesh nodes104. The administrator may then send a message to the control mesh node108, where the message includes the software update and a set of mesh node identifiers. The message causes the control mesh node108to send (e.g., push) the software update to each of the mesh nodes104corresponding to the set of mesh node identifiers.

AlthoughFIG.1shows only a select number of computing devices (e.g., mesh nodes104, control mesh node108, and mesh network administrator device110), the environment100may include any number of computing devices that are interconnected in any arrangement to facilitate the exchange of data between the computing devices.

FIG.2Ais a block diagram depicting an example mesh node104of the mesh network system102inFIG.1, according to some embodiments. While various devices, interfaces, and logic with particular functionality are shown, it should be understood that the one or more mesh nodes104(e.g., mesh nodes104a-i) of the mesh network system102each include any number of devices and/or components, interfaces, and logic for facilitating the functions described herein. For example, the activities of multiple devices may be combined as a single device and implemented on a same processing device (e.g., processing device202a), as additional devices and/or components with additional functionality are included.

The mesh node104includes a processing device202a(e.g., general purpose processor, a PLD, etc.), which may be composed of one or more processors, and a memory204a(e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), which may communicate with each other via a bus (not shown).

The memory204a(e.g., Random Access Memory (RAM), Read-Only Memory (ROM), Non-volatile RAM (NVRAM), Flash Memory, hard disk storage, optical media, etc.) of processing device202astores data and/or computer instructions/code for facilitating at least some of the various processes described herein. The memory204aincludes tangible, non-transient volatile memory, or non-volatile memory. The memory204astores programming logic (e.g., instructions/code) that, when executed by the processing device202a, controls the operations of the mesh node104. In some embodiments, the processing device202aand the memory204aform various processing devices and/or circuits described with respect to the mesh node104. The instructions include code from any suitable computer programming language such as, but not limited to, C, C++, C#, Java, JavaScript, VBScript, Perl, HTML, XML, Python, TCL, and Basic.

The processing device202amay execute a neighbor discovery service (NDS) agent105that is configured to discover its neighboring mesh nodes by broadcasting a ping message (shown inFIG.1as, local neighbor request”) outward using a particular communication capability and identifying the mesh nodes104that respond to the local neighbor request as its neighboring mesh nodes. In some embodiments, a neighboring mesh node may be prohibited from responding to the local neighbor request due to a security policy that requires the particular mesh node104to stay “hidden” from other mesh nodes104. In some embodiments, a mesh node104may be unable to respond to the local neighbor request because the mesh node104lacks the communication capability (e.g., faulty communication hardware, a mismatch in communication protocols, etc.) to respond. In some embodiments, the NDS agent105may be configured to discover a first group of its neighboring mesh nodes when using a first type of communication capability (e.g., Bluetooth), a second group of its neighboring mesh nodes when using a second type of communication capability (e.g., NFC), and so on.

The NDS agent105may be configured to discover its neighboring mesh nodes104responsive to receiving a request from the control mesh node108. For example, the NDS agent105aof mesh node104amay receive a request (sometimes referred to as, “a neighbor request”) from the control mesh node108, which causes the NDS agent105ato broadcast a ping message (e.g., local neighbor request) to mesh nodes104b,104h,104g. The mesh node104may then determine that the mesh nodes104that responded to the ping message are its neighboring mesh nodes. In some embodiments, the NDS agent105may be configured to periodically discover its neighboring mesh nodes104in order to keep their locally stored routing tables up-to-date.

The NDS agent105may be configured to discover a neighbor change event that is associated with one of its neighboring nodes. For example, NDS agent105aof mesh node104amay discover that mesh node104bwas previously not a neighboring node, but now is a neighboring node of mesh node104a. As another example, NDS agent105aof mesh node104amay discover that mesh node104bwas previously a neighboring node, but now is not a neighboring node of mesh node104a. As another example, NDS agent105aof mesh node104amay discover that mesh node104bwas previously a neighboring node that responded to ping message, but no longer is responding to ping messages. In this embodiment, the mesh node104bmay either still be a neighboring node of mesh node104a, or no longer a neighboring node of mesh node104a.

The NDS agent105of a mesh node104may be configured to transmit a message (shown inFIG.1as, “neighbor reporting message”) to the control mesh node108to notify the control mesh node108about its discovery of the neighbor change event. The neighbor reporting message includes the mesh node's identifier (ID), any neighboring mesh node IDs, any security policies associated with the mesh node104, any security policies associated with the neighboring mesh node IDs, a device type ID (e.g., insulin pump, smartphone, smartwatch, etc.) of the mesh node104, and device type IDs of the neighboring mesh nodes. The mesh node ID is a unique value that the control mesh node108generates and assigns to each mesh node104in the mesh network system102. The control mesh node108uses the mesh node ID to keep track of and communicate with each mesh node104.

The NDS agent105of a first mesh node (e.g., mesh node104c) may be configured to receive a targeted message (e.g., targeted message #1) that indicates a neighbor change event and causes the NDS agent105to notify its neighboring nodes of the neighbor change event. In some embodiments, the NDS agent105notifies its neighboring nodes by broadcasting a first message (e.g., neighbor change message) indicative of the neighbor change event to each of its other neighboring nodes. In some embodiments, the NDS agent105notifies its neighboring nodes by transmitting a first message (e.g., neighbor change message) indicative of the neighbor change event to a second neighboring node (e.g., mesh node104d), where the first message causes the second neighboring node to propagate the first message (e.g., propagated neighbor change message) to a third neighboring node (e.g., mesh node104f) of the first mesh node.

The targeted message may prevent the NDS agent105from propagating the neighbor change event to mesh nodes104that are outside of a group of neighboring nodes. For example, the NDS agent105cof mesh node104cmay receive a targeted message from the control mesh node108, where the targeted message indicates that the control mesh node108selected the mesh node104bas the target node. The NDS agent105bmay determine that the group of neighboring nodes of mesh node104bincludes mesh nodes104a,104d,104f, and then notify only these mesh nodes (e.g., mesh nodes104a,104d,104f) about the neighbor change event. In some embodiments, the targeted message may instruct the NDS agent105to only notify the neighboring nodes that are within a predetermined number of hops (e.g., 1 hop, 2 hops, etc.) from the target node. For example, the NDS agent105cof mesh node104cmay receive a targeted message from the control mesh node108, where the targeted message indicates that the control mesh node108selected the mesh node104bas the target node and that only 2-hop neighboring nodes should be notified about the neighbor change event. The NDS agent105bmay determine that the group of neighboring nodes that are within 2-hops of mesh node104bincludes mesh nodes104a,104d,104fand mesh nodes104g,104h,104i, and then notify only these mesh nodes (e.g., mesh nodes104a,104d,104f,104g,104h,104i) about the neighbor change event.

The mesh node104includes a network interface206aconfigured to establish a communication session with a computing device for sending and receiving data over a communication network to the computing device. Accordingly, the network interface206aincludes a cellular transceiver (supporting cellular standards), a local wireless network transceiver (supporting 802.11X, ZigBee, Bluetooth, Wi-Fi, or the like), a wired network interface, a combination thereof (e.g., both a cellular transceiver and a Bluetooth transceiver), and/or the like. In some embodiments, the mesh node104includes a plurality of network interfaces206aof different types, allowing for connections to a variety of networks, such as local area networks (public or private) or wide area networks including the Internet, via different sub-networks.

The mesh node104includes an input/output device205aconfigured to receive user input from and provide information to a user. In this regard, the input/output device205ais structured to exchange data, communications, instructions, etc. with an input/output component of the mesh node104. Accordingly, input/output device205amay be any electronic device that conveys data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, tactile feedback, etc.) and/or converts received sensory information from a user into electronic signals (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.). The one or more user interfaces may be internal to the housing of the mesh node104, such as a built-in display, touch screen, microphone, etc., or external to the housing of the mesh node104, such as a monitor connected to the mesh node104, a speaker connected to the mesh node104, etc., according to various embodiments. In some embodiments, the mesh node104includes communication circuitry for facilitating the exchange of data, values, messages, and the like between the input/output device205aand the components of the mesh node104. In some embodiments, the input/output device205aincludes machine-readable media for facilitating the exchange of information between the input/output device205aand the components of the mesh node104. In still another embodiment, the input/output device205aincludes any combination of hardware components (e.g., a touchscreen), communication circuitry, and machine-readable media.

The mesh node104includes a device identification component207a(shown inFIG.2Aas device ID component207a) configured to generate and/or manage a device identifier (sometimes referred to as, “mesh node ID”) associated with the mesh node104. The device identifier may include any type and form of identification used to distinguish the mesh node104from other computing devices. In some embodiments, to preserve privacy, the device identifier may be cryptographically generated, encrypted, or otherwise obfuscated by any device and/or component of mesh node104. In some embodiments, the mesh node104may include the device identifier in any communication (e.g., neighbor reporting message, local neighbor request) that the mesh node104sends to a computing device.

The mesh node104includes a bus (not shown), such as an address/data bus or other communication mechanism for communicating information, which interconnects the devices and/or components of mesh node104, such as processing device202a, network interface206a, input/output device205a, and/or device ID component207a.

In some embodiments, some or all of the devices and/or components of mesh node104may be implemented with the processing device202a. For example, the mesh node104may be implemented as a software application stored within the memory204aand executed by the processing device202a. Accordingly, such embodiment can be implemented with minimal or no additional hardware costs. In some embodiments, any of these above-recited devices and/or components rely on dedicated hardware specifically configured for performing operations of the devices and/or components.

FIG.2Bis a block diagram depicting an example of the control mesh node108of the environment inFIG.1, according to some embodiments. While various devices, interfaces, and logic with particular functionality are shown, it should be understood that the control mesh node108includes any number of devices and/or components, interfaces, and logic for facilitating the functions described herein. For example, the activities of multiple devices may be combined as a single device and implemented on a same processing device (e.g., processing device202b), as additional devices and/or components with additional functionality are included.

The control mesh node108includes a processing device202b(e.g., general purpose processor, a PLD, etc.), which may be composed of one or more processors, and a memory204b(e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), which may communicate with each other via a bus (not shown). The processing device202bincludes identical or nearly identical functionality as processing device202ainFIG.2a, but with respect to devices and/or components of the control mesh node108instead of devices and/or components of the mesh node104.

The memory204bof processing device202bstores data and/or computer instructions/code for facilitating at least some of the various processes described herein. The memory204bincludes identical or nearly identical functionality as memory204ainFIG.2A, but with respect to devices and/or components of the control mesh node108instead of devices and/or components of the mesh node104.

The processing device202bmay execute a dynamic mesh mapping service (DMMS) agent109that is configured to dynamically generate a network topology map that indicates based on the responses it receives from mesh nodes104about their attempts to discover their neighboring nodes. The network topology map indicates the one or more groups of neighboring nodes of the mesh network system102at a given point in time. The DMMS agent109maintains the network topology map in a storage (e.g., a database, memory204a, etc.) and uses the network topology map for propagation control of neighbor reporting messages throughout the mesh network system102.

The DMMS agent109may be configured to determine that a first mesh node (e.g., mesh node104a) of the mesh network system102discovered a neighbor change event that is associated with a second mesh node (e.g., mesh node104b). The DMMS agent109may make this determination based on a message that it receives a mesh node104, where the message indicates that the first mesh node (e.g., mesh node104a) discovered the neighbor change event associated with the second node (e.g., mesh node104b).

The DMMS agent109may be configured to select one of the mesh nodes104of the mesh network system102as the “target node.” For example, the DMMS agent109may select the first mesh node (e.g., mesh node104a) as the “target node” because it discovered the neighbor change event, or the second mesh node (e.g., mesh node104b) as the “target node” because it triggered the neighbor change event.

The DMMS agent109may be configured to identify, based on the network topology map, a group of neighboring nodes of the target node that are unaware of the neighbor change event associated with the second mesh node (e.g., mesh node104b). For example, if the DMMS agent109selects the mesh node104bas the target node (shown inFIG.1as, “target node #1”), then the group of neighboring nodes that are unaware of the neighbor change event would include mesh node104c, mesh node104d, and/or mesh node104fAs another example, if the DMMS agent109selects the mesh node104aas the target node, then the group of neighboring nodes that are unaware of the neighbor change event would include mesh node104b, mesh node104g, and/or mesh node104g.

The DMMS agent109may be configured to determine a maximum hop count (e.g., 1-hop, 2-hop) based on a device type associated with the target node or a service provided by the target node, and use the maximum hop count to identify the group of neighboring nodes of the target node. For example, the DMMS agent109may determine that the mesh node104bis a smartphone and that mesh node104bis no longer a neighbor of the mesh node104a. The DMMS agent109may determine that a smart phone is a non-critical device and/or provides a non-critical service, and in response, only identify the group of neighboring nodes of the target device that are within 1-hop of the target device. Therefore, if the DMMS agent109selects mesh node104aas the target device, then the DMMS agent109would determine that the group of 1-hop neighboring nodes include mesh nodes104b,104g,104hand control mesh node108. Conversely, the DMMS agent109may determine that the mesh node104bis an insulin pump and that mesh node104bis no longer a neighbor of the mesh node104a. The DMMS agent109may determine that an insulin pump is a critical device and/or provides a critical service, and in response, only identify the group of neighboring nodes of the target device that are within 2-hops of the target device. Therefore, if the DMMS agent109selects mesh node104aas the target device, then the DMMS agent109would determine that the group of 2-hop neighboring nodes include mesh nodes104b,104c,104d,104f,104g,104h,104iand control mesh node108.

The DMMS agent109may be configured to transmit a targeted message to a first neighboring node (e.g., mesh node104c) of the group of neighboring nodes to cause the first neighboring node to notify the group of neighboring nodes of the neighbor change event. In some embodiments, the targeted message may cause the first neighboring node to broadcast (e.g., fan-out), to other neighboring nodes of the group of neighboring nodes, a first message (e.g., neighbor change message) indicative of the neighbor change event. In some embodiments, the targeted message may cause the first neighboring node (e.g., mesh node104c) to transmit, to a second neighboring node (e.g., mesh node104d) of the group of neighboring nodes, a second message (e.g., neighbor change message) indicative of the neighbor change event to cause the second neighboring node to propagate the second message to a third neighboring node (e.g., mesh node104f) of the group of neighboring nodes.

The DMMS agent109may be configured to identify, based on the network topology map, a group of nodes within a sub-region of a geographic region, where the mesh network system102is distributed over the geographic region.

The DMMS agent109may be configured to transmit a neighbor request to the group of nodes to cause each node of the group of nodes to transmit a local neighbor request to discover neighboring nodes. The DMMS agent109may be configured to receive a plurality of responses to the neighbor request, where each response identifies each of the neighboring nodes that replied to the local neighbor request. The DMMS agent109may be configured to infer, based on the plurality of responses, an existence of a “hidden” node (e.g., a third node) in the sub-region that did not reply to the local neighbor request. For example, the DMMS agent109may determine, based on the network topology map, that the sub-region includes a moving node that has a free movement exceeding a predetermined threshold value. As another example, the DMMS agent109may determine, based on the network topology map, that the sub-region includes a secured node that is associated with a security policy prohibiting the secured node from responding to the local neighbor request.

The DMMS agent109may be configured to redefine (e.g., mapping, redrawing), based on the plurality of responses, network edges of the sub-region to indicate the existence of the hidden node. The DMMS agent109may be configured to redefine update the network topology map based on the network edges responsive to redefining the network edges of the sub-region.

The control mesh node108includes a network interface206bconfigured to establish a communication session with a computing device for sending and receiving data over a network to the computing device. Accordingly, the network interface206bincludes identical or nearly identical functionality as network interface206ainFIG.2A, but with respect to devices and/or components of the control mesh node108instead of devices and/or components of the mesh node104.

The control mesh node108includes an input/output device205bconfigured to receive user input from and provide information to a user. In this regard, the input/output device205bis structured to exchange data, communications, instructions, etc. with an input/output component of the control mesh node108. The input/output device205bincludes identical or nearly identical functionality as input/output device205ainFIG.2A, but with respect to devices and/or components of the control mesh node108instead of devices and/or components of the mesh node104.

The control mesh node108includes a device identification component207b(shown inFIG.2Bas device ID component207b) configured to generate and/or manage a device identifier associated with the control mesh node108. The device ID component207bincludes identical or nearly identical functionality as device ID component207ainFIG.2A, but with respect to devices and/or components of the control mesh node108instead of devices and/or components of the mesh node104.

The control mesh node108includes a bus (not shown), such as an address/data bus or other communication mechanism for communicating information, which interconnects the devices and/or components of the control mesh node108, such as processing device202b, network interface206b, input/output device205b, and/or device ID component207b.

In some embodiments, some or all of the devices and/or components of control mesh node108may be implemented with the processing device202b. For example, the control mesh node108may be implemented as a software application stored within the memory204band executed by the processing device202b. Accordingly, such embodiment can be implemented with minimal or no additional hardware costs. In some embodiments, any of these above-recited devices and/or components rely on dedicated hardware specifically configured for performing operations of the devices and/or components.

FIG.2Cis a block diagram depicting an example environment of a mesh network system102, according to some embodiments. The environment200cincludes a mesh network230(e.g., mesh network system102inFIG.1). The mesh network230includes a control node228(e.g., control mesh node108inFIG.1), a first node260(e.g., mesh node104ainFIG.1), a second node262(e.g., mesh node104binFIG.1), a target node265, a group of neighboring nodes240, a network topology map270, and a neighbor change event. The group of neighboring nodes240include a first neighboring node242(e.g., mesh node104cinFIG.1). The network topology map270includes an indication of groups of neighboring nodes272.

The control node228maintains the network topology map270, which includes an indication of the groups of neighboring nodes272. The control node228determines that the first node260of the mesh network230discovered the neighbor change event234associated with the second node262. The control node228identifies, based on the network topology map270, the group of neighboring nodes242of the target node265of the mesh network230responsive to determining that the first node260detected the neighbor change event234. The control node228transmits a targeted message to the first neighboring node242of the group of neighboring nodes240to cause the first neighboring node242to notify the group of neighboring nodes240of the neighbor change event234.

FIG.3is a flow diagram depicting a method of dynamically mapping a network topology of a mesh network of nodes, according to some embodiments. Method300may 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 and/or an application that is running/executing on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, method300may be performed by a control mesh node, such as control mesh node108inFIG.1. In some embodiments, method300may be performed by one or more mesh nodes, such as mesh nodes104inFIG.1. In some embodiments, method300may be performed by a mesh network system, such as mesh network system102inFIG.1.

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

As shown inFIG.3, the method300includes the block302of maintaining, by a processing device of a control node of the mesh network, a network topology map indicating groups of neighboring nodes. The method300includes the block304of determining that a first node of the mesh network discovered a neighbor change event associated with a second node. The method300includes the block306of identifying, based on the network topology map, a group of neighboring nodes of a target node of the mesh network responsive to determining that the first node detected the neighbor change event. The method300includes the block308of transmitting a targeted message to a first neighboring node of the group of neighboring nodes to cause the first neighboring node to notify the group of neighboring nodes of the neighbor change event.

The example computing device400may include a processing device (e.g., a general purpose processor, a PLD, etc.)402, a main memory404(e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), a static memory406(e.g., flash memory and a data storage device418), which may communicate with each other via a bus430.

Computing device400may further include a network interface device408which may communicate with a communication network420. The computing device400also may include a video display unit410(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device412(e.g., a keyboard), a cursor control device414(e.g., a mouse) and an acoustic signal generation device416(e.g., a speaker). In one embodiment, video display unit410, alphanumeric input device412, and cursor control device414may be combined into a single component or device (e.g., an LCD touch screen).

Data storage device418may include a computer-readable storage medium428on which may be stored one or more sets of instructions425that may include instructions for one or more components, agents, and/or applications442(e.g., NDS agent105inFIG.2A, DMMS agent109inFIG.2B) for carrying out the operations described herein, in accordance with one or more aspects of the present disclosure. Instructions425may also reside, completely or at least partially, within main memory404and/or within processing device402during execution thereof by computing device400, main memory404and processing device402also constituting computer-readable media. The instructions425may further be transmitted or received over a communication network420via network interface device408.