VINETM: Zero-Control Routing Using Packet Inspection for Wireless Mesh Networks

DE602019071945T2Active Publication Date: 2025-07-02GOTENNA INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
DE602019071945
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-07-27
Filing Date
2019-07-26
Publication Date
2025-07-02
Estimated Expiration
2039-07-26

AI Technical Summary

Technical Problem

Existing mesh network protocols face inefficiencies and scalability issues due to the reliance on control packets for route discovery, which consume bandwidth, increase channel contention, and reduce battery life, especially in large and rapidly changing networks.

Method used

The VINE protocol utilizes data packets to build routing state, known as gradient state, eliminating the need for control packets by using data packets to establish and maintain routing information, allowing packets to be forwarded along non-increasing gradients until the destination is reached.

Benefits of technology

This approach enhances scalability, reduces vulnerability to control attacks, and extends battery life by minimizing the use of control packets, while maintaining efficient data delivery in bandwidth-constrained wireless mesh networks.

✦ Generated by Eureka AI based on patent content.
Patent Text Reader
Need to check novelty before this filing date? Find Prior Art

Description

FIELD OF THE INVENTION

[0001] The present invention relates to the field of mobile ad hoc network communication protocols.BACKGROUND OF THE INVENTION

[0002] A mesh network, see en.wikipedia.org / wiki / Mesh_Network is a local network in which the infrastructure (i.e. bridges, switches and other infrastructure devices) connect directly, dynamically and non-hierarchically to other nodes and cooperate with one another to efficiently route data from / to clients. This lack of dependency on one node allows for every node to participate in the relay of information. Mesh networks dynamically self-organize and self-configure, which can reduce installation overhead. The ability to self-configure enables dynamic distribution of workloads, particularly in the event that a few nodes should fail. This in turn contributes to fault-tolerance and reduced maintenance costs. See, Akyildiz, I.F., Wang, X., & Wang, W. (2005). Wireless mesh networks: a survey. Computer networks, 47(4), 445-487.

[0003] A mobile mesh network is a mesh network in which the nodes can be mobile. A mobile mesh network is also referred to as a mobile ad hoc network (MANET). In such a network, the protocol does not presume persistence of the routing architecture, and therefore multihop routes require a mechanism for route discovery for communication of a message from a message-generating source node to a destination node. Such a procedure, often referred to as "routing" in the MANET / Mesh literature, is typically done by choosing a set of relaying nodes from the source to the destination, which could be the set of all nodes or a subset thereof, depending upon the solution.

[0004] A typical mesh network protocol strategy is to broadcast packets, which are then responded to by neighboring nodes. This, however, imposes particular inefficiencies. Even where these inefficiencies were sought to be minimized, packet transmission is typically nevertheless included in the protocol. See, Corson, M. Scott, and Anthony Ephremides. "A distributed routing algorithm for mobile wireless networks." Wireless networks 1, no. 1 (1995): 61-81. dot.org / 10.1007 / BF01196259), which explicitly mentions that it exchanges short messages to build routes.

[0005] Ad hoc networks or mesh network protocols have been studied. These protocols permit peer-to-peer communications between devices over a variety of frequency bands, and a range of capabilities. In a multihop network, communications are passed from one node to another in series between the source and destination. Because of various risks, as the number of hops grows, the reliability of a communication successfully reaching its destination tends to decrease, such that hop counts of more than 10 or 20 in a mobility permissive network are rarely considered feasible. A typical mesh network protocol maintains a routing table at each node, which is then used to control the communication. This routing table may be established proactively or reactively. In proactive routing, the network state information is pushed to the various nodes, often appended to other communications, such that when a communication is to be established, the nodes rely on the then-current routing information to control the communication. This paradigm suffers from the possibility of stale or incorrect routing information or overly burdensome administrative overhead, or both. Reactive routing seeks to determine the network state at the time of, and for the purpose of, a single set of communications, and therefore may require significant communications possibly far exceeding the amount of data to be communicated in order to establish a link. Because the network state is requested at the time of communication, there is less opportunity to piggyback the administrative information on other communications. There are also various hybrid ad hoc network routing protocols, which seek to compromise between these two strategies, and other paradigms as well.

[0006] Abolhasan, M., Wysocki, T. & Dutkiewicz, E. (2004). A review of routing protocols for mobile ad hoc networks. Ad Hoc Networks, 2 (1), 1-22, discusses various ad hoc networking protocols. Wired networks used two main algorithms; the link-state algorithm and the distance vector algorithm. In link-state routing, each node maintains an up-to-date view of the network by periodically broadcasting the link-state costs of its neighboring nodes to all other nodes using a flooding strategy. When each node receives an update packet, it updates its view of the network and the link-state information by applying a shortest-path algorithm to choose the next hop node for each destination. In distance-vector routing, for every destination x, each node i maintains a set of distances Dx ij , where j ranges over the neighbors of node i. Node i selects a neighbor, k, to be the next hop for x if Dx ik =min j {Dx ij }. This allows each node to select the shortest path to each destination. The distance-vector information is updated at each node by a periodical dissemination of the current estimate of the shortest distance to every node

[31] .

[0007] The traditional link-state and distance-vector algorithm do not scale in large MANETs. This is because periodic or frequent route updates in large networks may consume significant part of the available bandwidth, increase channel contention and may require each node to frequently recharge their power supply. Where the network changes rapidly, or bandwidth is low, the routing information may prove inaccurate or stale.

[0008] To overcome the problems associated with the link-state and distance-vector algorithms a number of routing protocols have been proposed for MANETs. These protocols can be classified into three different groups: global / proactive, on-demand / reactive, and hybrid. In proactive routing protocols, the routes to all the destination (or parts of the network) are determined at the start up (before a need for communication), and maintained by using a periodic route update process.

[0009] In reactive protocols, routes are determined when they are required by the source using a route discovery process. Hybrid routing protocols combine the basic properties of the first two classes of protocols into one. That is, they are both reactive and proactive in nature. Each group has a number of different routing strategies, which employ a flat or a hierarchical routing structure.

[0010] Two distinct types of ubiquitous wireless data communication networks have developed: cellular telephone networks having a maximum range of about 20-50 miles line of sight or 3 miles in hilly terrain, and short-range local-area computer networks (wireless local-area networks or WLANs) having a maximum range of about 0.2-0.5 miles (~1000-2500 feet IEEE-802.11n, 2.4 GHz) outdoors line of sight. IEEE 802.11ah is a wireless networking protocol published in 2017 (Wi-Fi HaLow) as an amendment of the IEEE 802.11-2007 wireless networking standard. It uses 900 MHz license exempt bands to provide extended range Wi-Fi networks, compared to conventional Wi-Fi networks operating in the 2.4 GHz and 5 GHz bands. It also benefits from lower energy consumption, allowing the creation of large groups of stations or sensors that cooperate to share signals, supporting the concept of the Internet of Things (IoT). en.wikipedia.org / wiki / IEEE_802.11ah. A benefit of 802.11ah is extended range, making it useful for rural communications and offloading cell phone tower traffic. The other purpose of the protocol is to allow low rate 802.11 wireless stations to be used in the sub-gigahertz spectrum. The protocol is one of the IEEE 802.11 technologies which is the most different from the LAN model, especially concerning medium contention. A prominent aspect of 802.11ah is the behavior of stations that are grouped to minimize contention on the air media, use relay to extend their reach, employ predefined wake / doze periods, are still able to send data at high speed under some negotiated conditions and use sectored antennas. It uses the 802.11a / g specification that is down sampled to provide 26 channels, each of them able to provide 100 kbit / s throughput. It can cover a one-kilometer radius. It aims at providing connectivity to thousands of devices under an access point. The protocol supports machine to machine (M2M) markets, like smart metering.

[0011] The cellular infrastructure for wireless telephony involves long-distance communication between mobile phones and central base-stations, where the base stations are typically linked to cell sites, connecting to the public switched telephone network and the Internet. The radio band for these long-range wireless networks is typically a regulated, licensed band, and the network is managed to combine both broad bandwidth (~5-20 MHz) and many simultaneous users. This is contrasted with a short-range wireless computer network, which may link multiple users to a central router or hub, which router may itself have a wired connection to the Internet. A key example is WiFi, which is managed according to the IEEE-802.I Ix communications standards, with an aggregate data rate theoretically over I gigabit per second (802.11ac) and a range that is typically much less than 100m. Other known standard examples are known by the terms Bluetooth and ZigBee. The radio band for a WLAN is typically an unlicensed band, such as one of the ISM bands (industrial, scientific, and medical), or more recently, a whitespace band formerly occupied by terrestrial analog television (WSLAN). One implication of such an unlicensed band is the unpredictable presence of significant interference due to other classes of users, which tends to limit either the range, or the bandwidth, or both. For such local area networks, a short range (low power and high modulation rates) becomes advantageous for high rates of spatial band reuse and acceptable levels of interference.

[0012] A flooding-based protocol is disclosed in U.S. Provisional Patent Application No. 62 / 628,717, filed February 9, 2018.

[0013] Document FI 127 371 B relates to passive routing in a mesh network.SUMMARY OF THE INVENTION

[0014] In a wireless mesh network, it is often required to unicast a packet from a source of the packet to a specified destination, over multiple hops. An example application is for 1:1 private chatting (texting). Another use is for accessing a server or an Internet gateway to the wireless mesh network. While there have been a number of inventions and academic papers on this basic problem of routing (see supra), prior work, including works referenced above, utilize control packets to first discover routes, either proactively, or reactively (on-demand), or in a hybrid scheme. Control packets include "link-state advertisements / updates", "route request / response", etc. See, en.wikipedia.org / wiki / List_of_ad_hoc_routing_protocols.

[0015] The present technology provides a zero-control-packet mesh routing protocol, called VINE ™< , The lack of requirement for control packets means better scalability, longer battery life, and less vulnerability to control attacks.

[0016] The basic idea behind the VINE ™< protocol is to use data packets themselves to build the routing state, referred to hereafter as gradient state (as the collection of node states forms a "gradient" toward the destination), which is then used for forwarding other data packets. Specifically, the gradient state indicates, for each destination, the number of hops to that destination via each of its neighbors. Every data packet contains information, such as its source and number of hops, sending neighbor, etc. A node receiving the packet uses that information to create a gradient state for those nodes. Packets are forwarded if there is gradient state for the destination that is fresh enough, and the gradient hops to the destination through some neighbor is less than or equal to the current node's hops to the destination. Thus, packets are forwarded along non-increasing gradients (like "water flowing downhill"), until the destination is reached. If there is no such gradient state, or if the time to live ("TTL") of the packet becomes zero, the packet is broadcast.

[0017] The present technology is particularly appropriate for a wireless mesh network in which the bandwidth is highly constrained, so that the use of routing control packets would be prohibitively expensive, according to the constraints of the network. The invention is set out in the appended claims.BRIEF DESCRIPTION OF THE DRAWINGS

[0018] Figs. 1A-1C show a series of network state diagrams and corresponding state tables. Fig. 2 shows a flow diagraph of a Sender Controlled Relaying (SCR) process. Fig. 3 shows an exemplary hardware Architecture. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0019] The VINE ™< protocol supports the delivery of a private packet to the destination specified in the packet header.VINE ™< Overview

[0020] The basic idea behind the VINE ™< protocol is to use data packets themselves to build the routing state (or information), referred to hereafter as gradient state (as the collection of node states forms a "gradient" toward the destination) which is then used for forwarding other data packets. Specifically, the gradient state indicates, for each destination, the best information available about the destination; e.g., the number of hops to that destination via each of its neighbors.

[0021] Every data packet contains information, such as its source, the number of hops travelled from the source, sending neighbor, previous sender, etc., using which a node receiving the packet creates gradient state for those nodes. Only data packets are used to create gradient state, and there is no requirement for generation of explicit control packets. The gradient state contains a timestamp that indicates how fresh the information is. State that is older than a configured period is purged.

[0022] As is known, it is also possible to include control packets of various types to supplement or enhance the VINE ™< protocol, and there is no reason that VINE ™< could not or should not exploit routing information gained through alternate means. However, according to the various aspects of the VINE ™< protocol, no explicit control packets are required, and each phase of operation can proceed without generation of any such packets.

[0023] The gradient state is used to decide, possibly in a distributed manner, whether one or more relay nodes are required, and if so, that set of relay nodes, for the packet. When there is no gradient state for a destination, a packet is relayed by all neighbors. Over time, as traffic flows, an increasingly richer sink tree toward each node is created, abstractly resembling the growth of a "vine" in a grove.

[0024] Packets are forwarded if there is gradient state for the destination that is fresh enough (according to a freshness metric, which may be static, dynamically determined, adaptive, geographically dependent, mobility or reliability dependent, etc.), and the gradient hops to the destination through some neighbor is less than or equal to the current node's hops to the destination. Thus, packets are forwarded along non-increasing gradients (like "water flowing downhill"), until the destination is reached.

[0025] If there is no such gradient state, the packet is broadcast. With broadcast, there is no specific target neighbor (alternatively, all neighbors are intended receivers). Each receiving neighbor processes the packet as mentioned above.

[0026] A packet is never sent back to the neighbor it came from. Every packet contains a sequence number, which is used to ensure that the sequence of broadcasts terminates.

[0027] While the lack of control packets means that many packets are flooded, VINE ™< engenders a natural balance - packets are only flooded when there is no state, and when there is little state there is generally little data traffic (otherwise there would have been more state) and therefore flooding tends to be affordable; on the other hand, as data traffic increases, the number of nodes with gradient state increases and packets are routed without flooding. Indeed, under such circumstances, if control packets were used, they would need to be flooded as well.

[0028] Thus, initially, and after a period of inactivity, the first packet from any node is flooded. Subsequent packets progressively utilize the gradient state set up by previous packets, which increases with the diversity of source-destination pairs in the traffic. Each node independently decides whether to broadcast the packet, that is, have all of its neighbors relay or not.

[0029] A packet may alternate between "flooding" and "routing". For example, communication of a packet may start by finding gradient state, and then being forwarded to a neighbor and so on, until it arrives at a node without a gradient state, at which point it may be broadcast. Conversely, a packet may find no gradient state and start being "flooded", and then encounter a node with a gradient state and follow the state "downhill" to the destination. Multiple nodes that have received the broadcast may do this.

[0030] The gradient state expires, e.g., after a configured period, and therefore packets that were routed at some point in time may not be at a later point.

[0031] The VINE ™< method for forwarding packets is referred to as Sender Controlled Relaying (SCR), to emphasize the fact that it is the sender that chooses the next-hop relayer. In SCR, the sender of a packet specifies in the network layer (NL) header the target node that should relay, if applicable.

[0032] The Gradient Establishment module is described in detail below, followed by a description of SCR. Table I VINE ™< Routing Header Field NumberNameLength {bits}Type / RangeDescription1Version2uint 0-15The version number of the network layer protocol2Flood mode4uint 0-15Used by Echo to distinguish between full and pruned flood, with override (see remarks)3Sender16HashThe (compressed) identifier of the node that transmitted this packet (most previous hop)4Previous sender16HashThe (compressed) identifier of the node that the sender (see field number 3) received the packet from5Target receiver16HashThe (compressed) identifier of the node for which this packet is intended, or OxFFF (which means intended for anyone who receives it)6Sender cost to destination8uint 0-255The estimated "cost" by the sender to the destination (the id of the destination is present in the application or transport header)7Sender cost from source8uint 0-255The accumulated "cost" along the path travelled by the packet from the source to the current node8Time to live8uint 0-255The number of hops that the packet is allowed to travel from this node onwards. TTL decremented by every transit node and packet dropped if TTL=0 Gradient Establishment

[0033] Every data packet that is received by the node, whether or not it is a duplicate, is passed to the Gradient Establishment (GE) module for processing. (Note that freshness if packets is material, and therefore identical packets received at different times convey some useful distinct information). The GE module maintains the following data structure for every known destination: Destination. The compressed destination identifier. Neighbor. The compressed identifier of the (neighbor) node for which this entry is applicable. Cost. The cost (e.g. hops) of sending a packet to the destination through this neighbor. Timestamp. When this entry was created.

[0034] This information provides information to define "As of timestamp I can get to destination via neighbor subject to cost".

[0035] The cost semantics are similar to that in the header. In a preferred embodiment, the number of hops may be used as the cost, and in the discussion below, "hops" and "cost" are used interchangeably. The timestamp is used to age out entries that were created more than a configured time prior.

[0036] It is understood, however, that any useful cost function may be used to control the gradient. For example, in a power-constrained, variable power transmit system, the power required to reach a destination may be used as the cost. In other embodiments, an economic system is implemented, so that the cost represents actual or virtual currency units. See, U.S. Patent and Pub. Pat. Appln. Nos. 20180068358; 20180049043; 20180014241; 20170302663; 20170206512; 20160277469; 20160224951; 20150264627; 20150264626; 20150188949; 20150111591; 20130080307; 20120253974; 20110004513; 20100317420; 20100235285; 20080262893; 20070087756; 20060167784; 20030163729; 10,015,720; 9,818,136; 9,794,797; 9,756,549; 9,615,264; 9,311,670; 9,226,182; 8,874,477; 8,774,192; 8,600,830; 8,144,619; and 7,590,589. In still further systems, congestion, communication reliability, communication latency, interference with other communications, security, privacy or other factors may be key, or a part of, the cost function.

[0037] A list of entries may be maintained, that is sorted based on the cost. For a given destination and neighbor pair, only one entry is preferably maintained, namely the lowest cost entry. Of course, sorting and filtering the list is not required, and therefore a node may maintain additional information beyond that minimally required.

[0038] There is potentially a Gradient State Entry (GSE) for every combination of neighbor and destination. However, in order to limit firmware memory consumption, only a configured maximum number of entries per destination are maintained. Based on simulations, maintaining three entries is sufficient in most cases.

[0039] Upon receiving a packet, the GE module inspects the NL header and creates the following entries as long as they are not duplicates, and as long as the entry is not superseded by an existing entry on account of the cost (note that only the least cost entry is maintained for each neighbor). The fields below are from the NL header, except "Now", which refers to the current time at the node. 1. An entry (sender, sender, 1, Now), that reflects that the sender is I hop away via the sender (directly reachable). 2. An entry (previous-sender, sender, 2, Now), that reflects that the previous sender is 2 hops away via the sender of the packet, provided the previousSender is not NULL (this is the case if the packet originated at the sender). 3. An entry (source, sender, senderHopsFromSource+ 1, Now), that reflects that the source is one hop more than the hops from the sender to the source that is conveyed in the header. This entry is made unless the source is either the sender or the previous-sender (because this would duplicate #1 or #2), or the previous-sender is the current node itself (this is because the cost is bound to be higher).

[0040] When a packet is flooded through the network, as is the case when there is no state or expired state, a node typically learns the state for all of its I-hop and 2-hop neighbors. For some operational contexts, this may represent a large fraction of total nodes. Further, for every packet from a distant source, we have state that allows routing along a path to the source.

[0041] An example of Gradient Establishment during a Full Flood is illustrated in Figs. IA-IC, which shows that a packet is sourced at E, intended for F. Initially there is no state at any node, so the packet is essentially flooded (see below). The relevant header fields senderCostFromSrc (srcH), previous-sender (prevS) and sender (Sendr) are shown corresponding to the transmission. The source field is always E and not shown.

[0042] During this flood, the state is created as illustrated by the tables beneath each of Figs. IA, IB and IC, shows the state created after the transmission of the respective packets per the respective network diagram. Only the state corresponding to nodes B, D and F are shown. For each of these, the hops to the destination is updated based on the received packet.

[0043] Each entry in the table shows the number of hops at that node (column) to the destination (row) along with the neighbor through which the specified hops is achievable. Thus, for example, the entry in the last table for F (column), for destination E (row) is 3-C. This means that F infers that it can reach E in 3 hops via node C. The entries are updated according to the algorithm (steps 1-3) above.Sender Controlled Relaying (SCR)

[0044] The SCR module coordinates with peer SCR modules and local GE modules to deliver packets of type private or end-to-end ack to their end destinations. SCR uses the gradient state set up by the GE module to retrieve the "best" next-hop relay neighbor and have the packet be relayed by that neighbor. When there is no state, all nodes relay. SCR uses "eavesdropping", or Implicit Acknowledgements (IA). After transmitting, a node checks, for any packet it expects to be relayed by a specific neighbor, if it was relayed by that neighbor within a timeout period, and if not, retransmits the packet a specified number of times.

[0045] The SCR module may receive the packet from the Transport Layer (TL) if the packet was originated at this node, or from the MAC layer if the packet was originated at a different node. In the description below, C denotes the current node.

[0046] Upon receiving a packet of type private or E2E Ack from the TL, the SCR module appends an NL header with the version field to current version, sender as C, previousSender as NULL, senderHopsFromSource as 0, and TTL as the configured maximum hops a packet is allowed to travel. The targetReceiver field is set. The isFullFlood and senderHopsToDestination are unused in SCR. It then sends the packet to the MAC Layer and sets an Implicit Acknowledgment (IA) timer.

[0047] Upon receiving a packet of type private or E2E Ack from the MAC Layer (ML), the SCR module first processes the packet for IA. It then checks if the destination of the packet is C. If so, it delivers the packet to the TL and terminates processing this packet. Otherwise, it checks if the targetReceiver field is C which implies that this node was chosen for relaying.

[0048] If so, then it proceeds to re-transmit the packet provided the TTL is at least I and the packet has not been transmitted previously. As in ECHO (see, U.S. Patent Application 62 / 628,717, filed February 9, 2018), the seqNum field can be used to determine whether the packet was previously received and re-transmitted. The SCR module modifies the NL header setting the sender as C, copies the sender field from the header into the previousSender field, updates the senderCostFromSource (as discussed above, in this embodiment, cost=hops, so it increments the field), and decrements the TTL. Finally, it sets the targetReceiver field. It then sends the packet to the MAC Layer and sets an IA timer.

[0049] Fig. 2 shows a flow chart for the initial packet sending in SCR (not retransmission).Choosing a Target Receiver

[0050] There are many heuristics possible for choosing the target receiver. According to a preferred embodiment, the target receiver is chosen as follows. Let the destination ID be D. For each destination, we maintain a few Gradient State Entries (GSEs) per neighbor. The neighbor is picked such that the cost field is the lowest among all entries for the destination, with ties broken randomly, provided the timestamp field of the entry is not less than the current time minus a configured parameter GSE_EXPIRY_PERIOD.

[0051] In case of retransmissions, SCR attempts to choose the target neighbor that is different from those for previous retransmissions, if one exists, provided that target neighbor has the same or less cost to the destination. If such a fresh target neighbor is not available, previously chosen target neighbor is returned. Note that in some implementations, a failed transmission is an indicator of higher cost, and therefore the cost for use of that same path increased for future use. Thus, the cost may be used to provide implicit control over communication route preferences, and need not be based solely on hop count or objective or unbiased criteria.

[0052] If there is no entry for D, or if the entry is not fresh enough, SCR transmits the packet with the targetReceiver field set to NULL, indicating that any node that receives the packet should forward it provided it hasn't already done so.Implicit Acknowledgements and Retransmission

[0053] SCR uses overheard packets from the target receiver as an implicit acknowledgement of delivery. After transmitting a packet that has a non-NULL target receiver, SCR sets an IA-Timer for the packet and stores the packet for retransmission, unless the target receiver is the final destination in which case no timer is set.

[0054] All received packets from the target receiver are processed to check if the packet identifier matches that of a stored packet. If so, the packet is deleted from the store, and the IA-timer is cancelled. Further, if an End-to-End Acknowledgement for the data packet is received, then the IA-timer is cancelled as well, since this implies that the data packet has been delivered. The network layer (NL) may process / inspect a Transport Layer (TL) header to accomplish this. This cross-layer inspection may violate layer distinctions, however, it helps improve performance, and such layer boundaries are heuristics and not prohibitions.

[0055] If no IA is obtained, then the IA-timer will trigger an interrupt, upon which the packet is retransmitted as long as the total number of retransmissions of the packet does not exceed a configured parameter SCR_MAX_XMTS. The Gradient State Table is consulted afresh to update the targetReceiver field so that any most up to date gradient information can be utilized.

[0056] If the number of transmissions has exceeded SCR_MAX_XMTS, then a flood is initiated on the packet. Specifically, the packet is sent with the targetReceiver field set to NULL, indicating that any node that receives the packet should forward it provided it hasn't already done so.

[0057] Therefore, by implicitly monitoring headers of packets that include constructive data communication payloads, a reactive routing protocol can reliably operate without requiring communication of any explicit control packets.

[0058] In some cases, out of band communications may be used to populate a routing table. For example, in a MANET employing nodes that have unreliable or interrupted cellular connectivity (or another type of communication network) and an alternate physical layer communication link, the routing information for the alternate physical layer communication link may be distributed to other nodes, and received from other nodes, when the cellular connectivity is available, so that when this connectivity becomes unavailable, reasonably fresh network state information is available without flooding of the alternate physical layer communication link.

[0059] Fig. 3 depicts an example of an apparatus 700, in accordance with some example embodiments. This is similar to Fig. 7 of U.S. 20170332439. The apparatus 700 may comprise a node. Moreover, the nodes may comprise a user equipment, such as an internet of things device (for example, a machine, a sensor, an actuator, and / or the like), a smart phone, a cell phone, a wearable radio device (for example, an Internet of things [IoT] fitness sensor or other type of IoT device), and / or any other radio based device.

[0060] In some example embodiments, apparatus 700 may also include a radio communication link to a cellular network, or other wireless network. The apparatus 700 may include at least one antenna 12 in communication with a transmitter 14 and a receiver 16. Alternatively transmit and receive antennas may be separate.

[0061] The apparatus 700 may also include a processor 20 configured to provide signals to and from the transmitter and receiver, respectively, and to control the functioning of the apparatus. Processor 20 may be configured to control the functioning of the transmitter and receiver by effecting control signaling via electrical leads to the transmitter and receiver. Likewise, processor 20 may be configured to control other elements of apparatus 700 by effecting control signaling via electrical leads connecting processor 20 to the other elements, such as a display or a memory. The processor 20 may, for example, be embodied in a variety of ways including circuitry, at least one processing core, one or more microprocessors with accompanying digital signal processor(s), one or more processor(s) without an accompanying digital signal processor, one or more coprocessors, one or more multi-core processors, one or more controllers, processing circuitry, one or more computers, various other processing elements including integrated circuits (for example, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), and / or the like), or some combination thereof. Apparatus 700 may include a location processor and / or an interface to obtain location information, such as positioning and / or navigation information. Accordingly, although illustrated in as a single processor, in some example embodiments the processor 20 may comprise a plurality of processors or processing cores.

[0062] Signals sent and received by the processor 20 may include signaling information in accordance with a mesh network protocol, as discussed above, may employ number of different wireline or wireless networking techniques.

[0063] The apparatus 700 may also be capable of operating with one or more air interface standards, communication protocols, modulation types, access types, and / or the like, though these may require separate radios and / or a software defined radio implementation to permit these alternate uses. The preferred implementation is a 900 MHz radio operating in the 928 MHz ISM band, and complying with F.C.C. regulations for unlicensed use. The data carrier over the radio may include TCP / IP packets, UDP packets, or other standard higher level protocols.

[0064] It is understood that the processor 20 may include circuitry for implementing audio / video and logic functions of apparatus 700. For example, the processor 20 may comprise a digital signal processor device, a microprocessor device, an analog-to-digital converter, a digital-to-analog converter, and / or the like. Control and signal processing functions of the apparatus 700 may be allocated between these devices according to their respective capabilities. The processor 20 may additionally comprise an internal voice coder (VC) 20a, an internal data modem (DM) 20b, and / or the like. Further, the processor 20 may include functionality to operate one or more software programs, which may be stored in memory. In general, processor 20 and stored software instructions may be configured to cause apparatus 700 to perform actions. For example, processor 20 may be capable of operating a connectivity program, such as, a web browser. The connectivity program may allow the apparatus 700 to transmit and receive web content, such as location-based content, according to a protocol, such as, wireless application protocol, wireless access point, hypertext transfer protocol, HTTP, and / or the like.

[0065] Apparatus 700 may also comprise a user interface including, for example, an earphone or speaker 24, a ringer 22, a microphone 26, a display 28, a user input interface, and / or the like, which may be operationally coupled to the processor 20. The display 28 may, as noted above, include a touch sensitive display, where a user may touch and / or gesture to make selections, enter values, and / or the like. The processor 20 may also include user interface circuitry configured to control at least some functions of one or more elements of the user interface, such as, the speaker 24, the ringer 22, the microphone 26, the display 28, and / or the like. The processor 20 and / or user interface circuitry comprising the processor 20 may be configured to control one or more functions of one or more elements of the user interface through computer program instructions, for example, software and / or firmware, stored on a memory accessible to the processor 20, for example, volatile memory 40, non-volatile memory 42, and / or the like. The apparatus 700 may include a battery for powering various circuits related to the mobile terminal, for example, a circuit to provide mechanical vibration as a detectable output. The user input interface may comprise devices allowing the apparatus 700 to receive data, such as, a keypad 30 (which can be a virtual keyboard presented on display 28 or an externally coupled keyboard) and / or other input devices. Preferably, the device is a low data rate, non-real time communication device, i.e., unsuitable for real-time voice communications, but this is not a limitation of the technology per se.

[0066] The apparatus 700 preferably also includes a short-range radio frequency (RF) transceiver and / or interrogator 64, so data may be shared with and / or obtained from electronic devices in accordance with RF techniques. The apparatus 700 may include other short-range transceivers, such as an infrared (IR) transceiver 66, a Bluetooth (BT) transceiver 68 operating using Bluetooth wireless technology, a wireless universal serial bus (USB) transceiver 70, and / or the like. The Bluetooth transceiver 68 may be capable of operating according to low power or ultra-low power Bluetooth technology, for example, Wibree, Bluetooth Low-Energy, and other radio standards, such as Bluetooth 4.0. In this regard, the apparatus 700 and, in particular, the short-range transceiver may be capable of transmitting data to and / or receiving data from electronic devices within a proximity of the apparatus, such as within 100 meters. The apparatus 700 including the Wi-Fi (e.g., IEEE-802.11ac, ad, ax, af, ah, az, ba, a, b, g, i, n, s, 2012, 2016, etc.) or wireless local area networking modem may also be capable of transmitting and / or receiving data from electronic devices according to various wireless networking techniques, including 6LoWpan, Wi-Fi, Wi-Fi low power, WLAN techniques such as IEEE 802.11 techniques, IEEE 802.15 techniques, IEEE 802.16 techniques, and / or the like.

[0067] The apparatus 700 may comprise memory, such as, a subscriber identity module (SIM) 38 (for use in conjunction with a cellular network), a removable user identity module (R-UIM), and / or the like, which may store information elements related to a mobile subscriber. In addition to the SIM, the apparatus 700 may include other removable and / or fixed memory. The apparatus 700 may include volatile memory 40 and / or non-volatile memory 42. For example, volatile memory 40 may include Random Access Memory (RAM) including dynamic and / or static RAM, on-chip or off-chip cache memory, and / or the like. Non-volatile memory 42, which may be embedded and / or removable, may include, for example, read-only memory, flash memory, solid state drive, magnetic storage devices, optical disc drives, ferroelectric RAM, non-volatile random access memory (NVRAM), and / or the like. Like volatile memory 40, non-volatile memory 42 may include a cache area for temporary storage of data. At least part of the volatile and / or non-volatile memory may be embedded in processor 20. The memories may store one or more software programs, instructions, pieces of information, data, and / or the like which may be used by the apparatus for performing functions of the nodes disclosed herein. The memories may comprise an identifier, such as an international mobile equipment identification (IMEI) code, capable of uniquely identifying apparatus 700. The functions may include one or more of the operations disclosed herein including with respect to the nodes and / or routers disclosed herein (see for example, 300, 400, 500, and / or 600). In the example embodiment, the processor 20 may be configured using computer code stored at memory 40 and / or 42 to provide the operations, such as detecting, by a router coupling a first mesh network to at least one other mesh network, a mesh packet having a destination node in the at least one other mesh network; receiving, at the router, an internet protocol address of the at least one other router, wherein the internet protocol address is received in response to querying for the destination node; and sending, by the router, the mesh packet encapsulated with the internet protocol address of the at least one other router coupled to the at least one other mesh network including the destination node.

[0068] Some of the embodiments disclosed herein may be implemented in software, hardware, application logic, or a combination of software, hardware, and application logic. The software, application logic, and / or hardware may reside in memory 40, the control apparatus 20, or electronic components disclosed herein, for example. In some example embodiments, the application logic, software or an instruction set is maintained on any one of various conventional computer-readable media. In the context of this document, a "computer-readable medium" may be any non-transitory media that can contain, store, communicate, propagate or transport the instructions for use by or in connection with an instruction execution system, apparatus, or device, such as a computer or data processor circuitry. A computer-readable medium may comprise a non-transitory computer-readable storage medium that may be any media that can contain or store the instructions for use by or in connection with an instruction execution system, apparatus, or device, such as a computer. Furthermore, some of the embodiments disclosed herein include computer programs configured to cause methods as disclosed with respect to the nodes disclosed herein.

[0069] The subject matter described herein may be embodied in systems, apparatus, methods, and / or articles depending on the desired configuration. For example, the systems, apparatus, methods, and / or articles described herein can be implemented using one or more of the following: electronic components such as transistors, inductors, capacitors, resistors, and the like, a processor executing program code, an application-specific integrated circuit (ASIC), a digital signal processor (DSP), an embedded processor, a field programmable gate array (FPGA), and / or combinations thereof. These various example embodiments may include implementations in one or more computer programs that are executable and / or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. These computer programs (also known as programs, software, software applications, applications, components, program code, or code) include machine instructions for a programmable processor, and may be implemented in a high-level procedural and / or object-oriented programming language, and / or in assembly / machine language. As used herein, the term "machine-readable medium" refers to any computer program product, computer-readable medium, computer-readable storage medium, apparatus and / or device (for example, magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions. Similarly, systems are also described herein that may include a processor and a memory coupled to the processor. The memory may include one or more programs that cause the processor to perform one or more of the operations described herein.

[0070] Although a few variations have been described in detail above, other modifications or additions are possible.

[0071] Other embodiments may be within the scope of the following claims.

Claims

1. A mesh network communication protocol for communicating between a plurality of respective mesh network nodes, the protocol using a gradient state, which indicates a number of hops to a destination via each of its neighbors, the protocol comprising: receiving a data packet from a current sender by a recipient, the data packet defining: an identity of the current sender, an identity of a final destination, and a sequence identifier; determining whether to rebroadcast by the recipient, if and only if the sequence identifier is not present in a list of prior sequence identifiers, and the identity of the final destination is not the identity of the recipient; and selectively rebroadcasting the data packet by the recipient in dependence on said determining, modified by a replacement of the identity of the current sender with the identity of the recipient; CHARACTERIZED IN THAT the data packet received by the recipient further comprises an identity of a prior sender from which the current sender received the data packet, and a hop count of hops previously traversed by the data packet, and an identity of a target recipient; a forwarding table is updated marking the current sender as being reachable in one hop, and the prior sender as being reachable in two hops via the current sender as next hop; the determining whether to rebroadcast is further dependent on whether the identity of the target recipient matches an identity of the recipient; and the data packet is selectively rebroadcast by the recipient in further dependence on said determining, modified by a replacement of the identity of the prior sender with the identity of the current sender, the identity of the target recipient with an identity of the next hop from the forwarding table if present, and an increment of the hop count, wherein the data packet contains a time-to-live that is decremented by the recipient and the data packet is not forwarded if the time-to-live is zero; wherein the protocol further comprises setting a timer for acknowledgement of the selectively rebroadcast data packet, and monitoring subsequent receipt of an overheard data packet having the sequence identifier.

2. The protocol according to claim 1, further comprising updating the forwarding table to mark the originator of the data packet as being reachable in one plus the hop count, via the current sender as the next hop and / or wherein said selectively rebroadcasting is further dependent on whether the next hop is present in the forwarding table.

3. The protocol according to any of claims 1 or 2, wherein a timestamp reflecting a time at which the data packet was received from the current sender is stored in the forwarding table, preferably wherein said selectively rebroadcasting is further dependent on whether the timestamp stored in the forwarding table has expired with respect to a clock.

4. The protocol according to claim 3, further comprising, in conjunction with rebroadcasting, if the time-to-live after decrementing is at least one, setting a timer for acknowledgement, and monitoring subsequent receipt of an overheard data packet having the sequence identifier, and if the overheard packet having the sequence identifier is not received before expiry of the timer, rebroadcasting the modified data packet.

5. The protocol according to claim 3, further comprising, in conjunction with rebroadcasting, if the time-to-live after decrementing is at least one, setting a timer for acknowledgement, and monitoring subsequent receipt of an overheard data packet having the sequence identifier, and if the overheard packet having the sequence identifier is not received before expiry of the timer, selectively rebroadcasting the data packet by the recipient in dependence on said determining, modified by: the replacement of the identity of the current sender with the identity of the recipient, the replacement of the identity of the prior sender with the identity of the current sender, a replacement of the identity of the target recipient with an identity of an alternate next hop from the forwarding table if present, and the increment of the hop count.

6. The protocol according to any of claims 1 to 4, wherein, if the overheard packet having the sequence identifier is not received before expiry of the acknowledgement timer, selectively rebroadcasting the data packet by the recipient in dependence on said determining, modified by: the replacement of the identity of the current sender with the identity of the recipient, the replacement of the identity of the prior sender with the identity of the current sender, a replacement of the identity of the target recipient with an identity of an alternate next hop from the forwarding table if present, and the increment of the hop count.

7. A mesh network communication node, configured for communication with a plurality of other mesh network nodes, comprising: a memory (40, 42) configured to store an identifier of the mesh network communication node and a forwarding table; a radio frequency transceiver configured to receive a data packet from a current sender, the data packet defining: an identity of the current sender, an identity of a final destination for the data packet, and a sequence identifier; at least one processor (20) configured to: (i) determine whether to rebroadcast the data packet, if and only if the sequence identifier is not present in a list of prior sequence identifiers; (ii) modify the data packet by: a replacement of the identity of the current sender with the identity of the mesh network communication node, a replacement of the identity of the target recipient with an identity of a next hop from the forwarding table if present; and (iii) selectively control a rebroadcast of the modified data packet through the radio frequency transceiver, in dependence on the determination; CHARACTERIZED IN THAT the data packet further defines an identity of a prior sender from which the current sender received the data packet, an identity of a target recipient, and a hop count of hops previously traversed by the data packet; and the at least one processor (20) is further configured to: determine whether to rebroadcast the data packet if and only if the identity of the final destination is not the identifier of the mesh network communication node; update the forwarding table marking the current sender as being reachable in one hop, and the prior sender as being reachable in two hops via the current sender as next hop; further modify the data packet by a replacement of the identity of the prior sender with the identity of the current sender, and the identity of the target recipient with an identity of the next hop from the forwarding table if present, and an increment of the hop count wherein the data packet contains a time-to-live, and the at least one processor (20) is further configured to decrement the time-to-live; wherein the at least one processor (20) is further configured to set a timer for acknowledgement, and monitor subsequent receipt of an overheard data packet having the sequence identifier.

8. The mesh network communication node according to claim 7, wherein the at least one processor (20) is further configured to update the forwarding table to mark the originator of the data packet as being reachable in one plus the hop count, via the current sender as the next hop.

9. The mesh network communication node according to any of claims 7 to 8, wherein the at least one processor (20) is further configured to store a timestamp representing a time that the data packet is received in the forwarding table, and optionally to determine expiry of the stored timestamp with respect to a clock.

10. The mesh network communication node according to claim 7, wherein the at least one processor (20) is further configured to selectively control a rebroadcast of the modified data packet through the radio frequency transceiver further in dependence on whether the time-to-live has reached zero.

11. The mesh network communication node according to claim 7, wherein the at least one processor (20) is further configured to, in conjunction with selectively controlling the rebroadcasting, if the time-to-live after decrementing is at least one, set the timer for acknowledgement, and monitor subsequent receipt of an overheard data packet having the sequence identifier, and if the overheard packet having the sequence identifier is not received before expiry of the timer, selectively control the rebroadcast of the modified data packet.

12. The mesh network communication node according to claim 7, wherein the at least one processor (20) is further configured to, if the time-to-live after decrementing is at least one, selectively control the rebroadcast of a data packet modified by: a replacement of the identity of the current sender with an identity of the mesh network communication node, a replacement of the identity of the prior sender with the identity of the current sender, a replacement of the identity of the target recipient with an identity of an alternate next hop from the forwarding table if present, and an increment of the hop count.

13. The mesh network communication node according to any of claims 7 to 12, further comprising an acknowledgement timer for determining a delay in acknowledgement of the selectively rebroadcast data packet, the at least one processor (20) being further configured to: monitor subsequent receipt of an overheard data packet having the sequence identifier, and if the overheard packet having the sequence identifier is not received before expiry of the acknowledgement timer, selectively rebroadcast the data packet modified by: the replacement of the identity of the current sender with the identity of the recipient, the replacement of the identity of the prior sender with the identity of the current sender, a replacement of the identity of the target recipient with an identity of an alternate next hop from the forwarding table if present, and the increment of the hop count.