A mesh or ad-hoc wireless network generally includes a network architecture and set of protocols to route data between wireless nodes in the network, often using intermediate nodes as relays in multi-hop routing. Mesh networking typically adjusts the routes between nodes to get around broken, blocked, or poorly performing links along the path between the source and destination node. In particular, mesh networks can be self-healing: the network can still operate even when a node breaks down or a connection goes bad by using protocols that adapt to changes in the network conditions. As a result, a reliable network can be formed. Many different neighbor discovery and routing algorithms have been used in mesh networks. These algorithms generally do not take into account multiple antennas at each node with multiple frequency bands that a given node may have access to.
State-of-the-art information (as of 2005) regarding wireless communications, including neighbor discovery and routing protocols, can be found in the book Wireless Communications, Cambridge University Press (2005), by Andrea Goldsmith.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings.
The following embodiments and aspects thereof are described and illustrated in conjunction with systems, tools, and methods that are meant to be exemplary and illustrative, not limiting in scope. In various embodiments, one or more of the above-described problems have been reduced or eliminated, while other embodiments are directed to other improvements.
A matrix mesh network includes matrix mesh elements, where at least one of the matrix mesh elements has multiple antennas. The channel between a matrix mesh element with multiple antennas and another wireless station may in some cases be referred to as a matrix channel. A method for neighbor discovery may include providing knowledge of one or more matrix channels in a matrix mesh network, recording matrix-channel characteristics of the matrix channels, and establishing parameters of a communication link using the matrix-channel characteristics.
A method for routing may include providing characteristics of matrix channels in a matrix mesh network, estimating end-to-end performance associated with source-destination pairs in the matrix mesh network, setting matrix communication protocols for each matrix channel in the matrix mesh network using the estimated end-to-end performance, and sending data from a source to a destination along the end-to-end routes for each source-destination pair using the matrix communication protocols.
The description in this paper describes this technique and examples of systems implementing this technique.
Examples of the claimed subject matter are illustrated in the figures.
In the following description, several specific details are presented to provide a thorough understanding of examples of the claimed subject matter. One skilled in the relevant art will recognize, however, that one or more of the specific details can be eliminated or combined with other components, etc. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of the claimed subject matter.
In an alternative, some of the clients could be wirelessly connected. In another alternative, a client could serve as a matrix mesh element. However, for illustrative purposes, a distinction is drawn between clients (as source-destination pairs of the network) and matrix mesh elements (as “relays” within the network). Accordingly, these alternatives are subsumed when appropriately characterized by location within a network, and function.
One implementation of a matrix mesh network is the VECTOR MESH™ network of Quantenna Communications, Inc. of Sunnyvale, Calif. The VECTOR MESH™ network includes VECTOR MESH™ elements or nodes, and a VECTOR MESH™ network architecture, neighbor discovery protocol, and routing protocol.
In the example of
As is depicted in the example of
Advantageously, when appropriately configured, if any of the matrix mesh elements 102 support multiple communication protocols, such as Wifi, Bluetooth, or UWB, then a client using any of these protocols can connect to those elements. Although a backbone matrix mesh element will typically use the same protocol, such as Wifi, this is not required. In fact, some of the matrix mesh elements may have wide area capabilities, such as via Wimax or 3G/4G cellular technology, to provide a wider area connection from the matrix mesh network 100 to another system. Powerline communications (PLC) may also be used as a supplement to the backbone wireless mesh, to provide an additional channel, robustness, and/or security.
The transmit/receive antenna gains of the matrix channel 206 are characterized by a channel gain matrix H with MR rows and MT columns, where MT is the number of antennas at the matrix mesh element transmitter 202, and MR is the number of antennas at the matrix mesh element receiver 204. The matrix H describes the channel gains between all transmit-receive antenna pairs of the two matrix mesh elements, i.e. the matrix element hij in the ith row and jth column of H is the channel gain between the jth transmit antenna and the ith receive antenna. The matrix H may be time-varying due to movement of the transmitter, the receiver, or objects in the environment. The transmitted signal is a vector X=[x1, . . . xM
so that yi is the sum of signals associated with all transmit signals xj, i=1, . . . , MT multiplied by the channel gain hij from the jth transmit antenna to the ith receiver antenna, plus the additive noise ni associated with the ith receiver antenna.
A similar model applies to the bi-directional channel between a matrix mesh element and a client with one or more antennas, as shown in
Referring once again to the example of
While the use of multiple antennas on a point-to-point link (i.e. a link between two matrix mesh elements 102) can be optimized relative to link performance, it may also be desirable to improve end-to-end performance of the matrix mesh network. A network architecture and protocol stack can exploit the flexibility of multiple antennas at one or more matrix mesh elements 102 and/or clients 104 (as well as other features, such as the ability to use multiple frequency bands in concurrent operation). This flexibility is utilized via a protocol stack that uses the channel gain, noise, and interference characteristics, as well as potentially other characteristics, of matrix channels in the network to optimize end-to-end performance in terms of throughput, robustness/reliability, and/or delay on a per client basis. These characteristics may be referred to as matrix-channel characteristics and may be represented by themselves or by way of example but not limitation, functions of these characteristics such as the signal-to-interference-plus-noise power ratio (SINR) or relative signal strength indicator (RSSI). For example, the protocol stack may ensure a minimum robustness or average delay for a given application by measuring channel gains, noise and interference on all matrix channels along the hops of an end-to-end data route, and adapting antenna use based on this information to achieve a target packet error rate on each hop. As another example, the protocol stack may determine there is excessive interference at a given receiver, and adaptively beamsteer the antennas associated with the interfering transmitter to point in a different direction. As yet another example, the protocol stack may optimize network performance based on current network traffic and channel matrix conditions by optimally assigning frequencies and antennas used for beamsteering, diversity, or spatial multiplexing on the matrix channels of each hop along all the end-to-end routes so that performance of each of these end-to-end routes is optimized.
Advantageously, the matrix mesh network architecture is self-configuring and adaptive to changes in channel characteristics, network traffic, and to nodes entering and leaving the network. There are generally two components to the network architecture, the backbone network of the matrix mesh elements 102, and access to the backbone network by the clients 104. There are several functions that the protocol stack needs to perform to enable the self-configuring network architecture and client support, including self-configuration of the backbone mesh, access to the backbone mesh network by clients, and routing of data between clients. We now describe novel protocol design for neighbor discovery and, later, routing that can be used to exploit multiple antennas in the matrix mesh elements 102 and/or clients 104.
For self-configuration of a matrix mesh network backbone, mesh network elements join the network through a process of neighbor discovery and, once one or more neighbors are found, establishing connections with one or more of these neighbors. Advantageously, due to the longer range and/or better robustness associated with multiple antenna channels, a neighbor discovery protocol designed for a matrix mesh element is likely to be able to establish more robust connections and to identify more neighbors than a discovery algorithm for single-antenna nodes.
In the example of
When probing, a node will typically choose an initial probing frequency, send a probe signal at the given frequency over all antennas, receive responses (or not) to the probe, then probe additional frequencies in the same manner. In this way, the node can probe on all antennas and frequencies in search of neighbors. The search across antennas and/or frequencies can be done sequentially or in parallel, and may be done more than once to capture the time-varying characteristics of the matrix channel. In some cases, a system will operate in only one frequency, obviating the need to choose an initial probing frequency. The weighting of a signal at each antenna may be uniform, or different weights corresponding to different diversity and/or beamforming configurations may be stepped through sequentially. After a probe signal is transmitted, the node listens for neighbor responses. The neighbors can use information about signal strength at each receive antenna to determine a robust way in terms of antenna configuration to respond to the probe.
In the example of
In the example of
If it is determined that there is additional matrix channel discovery (306-Y), then the flowchart 300 returns to module 302 and continues as described previously. For example, there may be a backoff procedure to reduce or eliminate issues pertaining to simultaneous receipt of messages from neighbors, and/or the matrix channels may be probed sequentially. If, on the other hand, it is determined that there is no additional matrix channel discovery (306-N), then the flowchart 300 continues to module 308 with establishing parameters of a communication link using the matrix-channel and interference characteristics. In this way, once all neighbors have been discovered, the matrix mesh node becomes part of the mesh network, perhaps after some control and security procedure to authenticate the node, and the flowchart 300 ends. If desired, nodes that are already part of the network could reinitiate the method, possibly depending upon the implementation, at any time or for any reason. For example, the process may be reinitiated if the communication link to a previously-determined neighbor breaks or significantly degrades, or if an application requires a more robust connection than under the current antenna configuration, so neighbor discovery is reinitiated with a different antenna configuration (e.g. reinitiating neighbor discovery with the antennas used for beamforming instead of spatial multiplexing, if this change in configuration to the current neighbor is not sufficiently robust).
Clients wishing to access a matrix mesh network may go through a similar procedure of matrix mesh element discovery as the backbone nodes, except that the clients will typically attempt to discover the matrix mesh element with which it has the best connection, and then access the network through that element. A client may become aware of a matrix mesh element when it receives a beacon frame, or “hello frame” from the element. Typically, the client then requests a connection to the element the client prefers and is then authenticated. Elements might hand off clients for end-to-end considerations, or for other reasons, and the determination may or may not be entirely internal to the network (i.e., without the consent of the client). Therefore, it may be desirable for a client to keep track of a best matrix mesh element at each frequency (assuming the client can operate on multiple frequencies), or an arbitrary number of the best matrix mesh elements, because a routing protocol may move the client off of a preferred frequency to another frequency in order to use the preferred frequency for another connection in the network.
After joining a mesh network following, e.g., neighbor discovery, a new matrix mesh element or client may activate a matrix mesh network routing algorithm to determine how to route data between different nodes in the network.
Matrix mesh routing may be capable of establishing routes based on a route cost function in either a proactive or reactive manner. Proactive routing protocols establish routes between all source-destination pairs regardless of the use or need for such routes. Thus, whenever a source has data to send to a given destination, it can use these pre-established routes, established based on cost function considerations, without any delay in route setup. Proactive routing may require significant overhead to maintain routes between all source-destination pairs even when not in use. In reactive (or dynamic) routing the route between a source and destination is not established a priori, but only when the source generates data to send to the destination, at which time the route with the best cost function is selected. Reactive routing may introduce more latency than proactive routing, since a route between the source and destination must be established before data can be sent. Typical examples of reactive routing are dynamic source routing (DSR) and ad hoc on-demand distance vector routing (AODV).
In general, a matrix mesh routing protocol is, for a given client source-destination pair, to find a route through the network that is optimal. Optimal may mean different things depending upon the implementation, such as by optimizing a cost function, applying a heuristic, or using some other optimization technique. Since each of these optimizing techniques are conceptually equivalent, only the cost function is described by way of example but not limitation. A route cost function may take into account multiple factors, such as by way of example but not limitation, throughput, delay, jitter, number-of-hops, etc. Each of these factors may be weighted or considered differently depending upon the desired optimization.
In the example of
In the example of
In the example of
In the example of
The radio 502 may include receiver(s), transmitter(s), and/or transceiver(s). The radio 502, which may include multiple radios but are nevertheless referred to as the radio 502 herein, may have known or convenient capabilities and/or settings. The radios of matrix mesh elements that make up a matrix mesh network may or may not have the same or similar characteristics. The antennas 504, which are coupled to the radio 502, may also have known or convenient capabilities and/or settings.
The matrix mesh neighbor discovery engine 506, matrix channel database 508, and matrix mesh routing engine 510 may be implemented in a computer-readable medium. As used herein, an engine includes a known or convenient processor to execute hardware or software components. The processor(s) associated with the matrix mesh neighbor discovery engine 506 may or may not be the same as a processor that drives access to the matrix channel database 508 and/or is included in the matrix mesh routing engine 510. Moreover, memory and/or non-volatile storage associated with any of the components may or may not overlap.
The matrix mesh neighbor discovery engine 506 is coupled to the radio 502 and the matrix channel database 508. The matrix mesh neighbor discovery engine 506 implements a neighbor discovery process, such as the method described with reference to
The matrix mesh routing engine 510 is coupled to the radio 502 and the matrix channel database 508. The matrix mesh routing engine 506 implements a routing process, such as the method described with reference to
Advantageously, matrix mesh routing exploits matrix channel and interference information at each available frequency between matrix mesh elements and between clients and their corresponding matrix mesh element to determine an optimal end-to-end route through the network as a function of a given performance metric, which may be a function of raw data rate, throughput, delay, and/or jitter. A route from a client to another client in the network may utilize multi-hop routing across multiple matrix mesh elements, as well as multiple frequencies, as shown in
It may be desirable to avoid interference and go around RF blockers, as shown in
Matrix mesh elements may be deployed in a known or convenient package. Some well-known packages include battery-powered access points (APs) and those that receive power over Ethernet (PoE). A plug-in AP 800, depicted for illustrative purposes in
Matrix mesh elements may also be deployed outdoors. In an outdoor setting, it may be desirable to design matrix mesh elements with high efficiency solar cells. Matrix mesh elements with solar cells may be of particular value when implemented in an outdoor matrix mesh, or in the portion of a matrix mesh that extends outdoors.
Systems described herein may be implemented on any of many possible hardware, firmware, and software systems. Typically, systems such as those described herein are implemented in hardware on a silicon chip. Algorithms described herein are implemented in hardware, such as by way of example but not limitation RTL code. However, other implementations may be possible. The specific implementation is not critical to an understanding of the techniques described herein and the claimed subject matter.
As used herein, the term “embodiment” means an embodiment that serves to illustrate by way of example but not limitation.
It will be appreciated to those skilled in the art that the preceding examples and embodiments are exemplary and not limiting to the scope of the present invention. It is intended that all permutations, enhancements, equivalents, and improvements thereto that are apparent to those skilled in the art upon a reading of the specification and a study of the drawings are included within the true spirit and scope of the present invention. It is therefore intended that the following appended claims include all such modifications, permutations and equivalents as fall within the true spirit and scope of the present invention.
The present application claims priority to U.S. Provisional Patent App. No. 60/859,614, filed on Nov. 17, 2006, and U.S. Provisional Patent App. No. 60/931,817, filed on May 24, 2007, both of which are incorporated by reference.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US07/85150 | 11/19/2007 | WO | 00 | 1/14/2009 |
Number | Date | Country | |
---|---|---|---|
60859614 | Nov 2006 | US | |
60931817 | May 2007 | US |