The accompanying drawings illustrate a number of exemplary embodiments and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the present disclosure.
Throughout the drawings, identical reference characters and descriptions indicate similar, but not necessarily identical, elements. While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the particular forms disclosed. Rather, the present disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims.
Wireless networks provide flexibility by allowing data transmissions between nodes of the wireless network without requiring physical connections therebetween. Certain types of wireless networks, such as wireless mesh networks in which any node may generally communicate with any other node, may allow further flexibility by foregoing a hierarchical structure amongst nodes. Such flexibility may allow wireless mesh networks to dynamically adapt to changes to network topology, such as by rerouting around failed nodes.
However, interference may be an issue in wireless mesh networks. Because a transmitter node wirelessly broadcasts data to the intended destination receiver node, other nodes within signal range of the transmitter node may also undesirably receive the data transmission. Until a node processes a received transmission, the node may not recognize whether it was the intended recipient for a transmission. In addition, as the node processes a received transmission, the node may not be able to receive other transmissions. Thus, a node may miss receiving an intended transmission while processing an unintended transmission, creating a blocking effect that may adversely affect network performance.
Some solutions to mitigating interference include removing the sources of interference. For example, interference source nodes or links (e.g., a communication link between two nodes) may be set to different channels, codes, time slots, etc. or transmissions from the interference source nodes or links may be nulled on certain angles. However, these network-level solutions may exhibit certain fundamental problems and restrictions. For instance, such solutions require comprehensive topology information (e.g., angles of arrival and departure between each node pair), detailed antenna patterns of each node, and active traffic patterns in a network, which may be difficult to obtain efficiently and accurately. In some scenarios, such as a dense network, the amount of resources including channels, codes, and time slots may not be enough to sufficiently separate aggressor links and victim links. In addition, such solutions may not be agile enough to address topology changes, the dynamic nature of wireless channels, etc. Moreover, such solutions may not adequately address the importance and distinction between various packet types. For example, data packets may be more vulnerable to the interference than control packets.
The present disclosure is generally directed to adaptive wireless packet filtering. As will be explained in greater detail below, embodiments of the present disclosure may identify a packet type of a received packet, determine a signal strength threshold based on the packet type, compare a signal strength of the received packet with the signal strength threshold, and process the received packet when its signal strength satisfies the signal strength threshold. By determining whether to drop or keep a received packet before fully processing the packet, the systems and methods described herein may advantageously reduce or mitigate a blocking effect caused by interference. The systems and methods described herein may improve the functioning of a computing device by more quickly and efficiently determining whether to drop a packet without utilizing the computing resources and time needed to fully process the packet. In addition, the systems and methods herein may improve the technical field of wireless networks by providing a solution to interference exhibited in wireless networks.
Features from any of the embodiments described herein may be used in combination with one another in accordance with the general principles described herein. These and other embodiments, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims.
The following will provide, with reference to
As illustrated in
In some embodiments, the term “node” may refer to a device in a network that may be capable of transmitting, receiving, and/or creating data. Examples of nodes include, without limitation, a wireless access point, a computing device (e.g., a laptop computer, desktop computer, mobile device), routers, gateways, etc. In addition, in some embodiments, the term “receiver node” may refer to a node receiving data in a link between nodes and the term “transmitter node” may refer to a node transmitting data in the link between nodes. Although the present disclosure describes receiver and transmitter nodes herein to clarify the nodes' relationship in a corresponding link, in other examples the nodes described herein may be a receiver node and/or a transmitter node.
In some embodiments, the term “packet” may refer to a formatted unit of data that may be transmitted in a network. For example, data may be transmitted through the network divided into a series of packets. In addition to the data (e.g., payload), a packet may include additional control information for delivering the payload. Moreover, different types of packets may include control packets that may be used for administrating a network (e.g., the payload may include data for managing the network), and data packets that may be used for transmitting data (e.g., the payload may include data carried on behalf of an application).
Various systems described herein may perform step 102.
In certain embodiments, one or more of modules 202 in
As illustrated in
As illustrated in
As illustrated in
Example system 200 in
The network environment 300 includes receiver node 360, transmitter node 362, node 364, node 366, and node 368, each of which may correspond to a radio node or a computing device such as a client device or user device (e.g., a desktop computer, laptop computer, tablet device, smartphone, or other computing device) and may further correspond to system 200. Receiver node 360 may include a physical processor 230, which may be one or more processors, memory 240, which may store data such as one or more of additional elements 220, and an antenna 332, which may be an antenna or other wireless transmission device capable of receiving and/or sending wireless signals. Although not illustrated in
Each of receiver node 360, transmitter node 362, node 364, node 366, and node 368 may be capable of wirelessly connecting to any other node to establish links, such as an active link 372 and/or an interfering link 374, for sending packets as will be described further below. Network 304 may represent any type or form of communication network, such as the Internet, and may correspond to one or more wireless connections, such as WAN.
Returning to method 100, the systems described herein may perform step 102 in a variety of ways. In one example, receiver node 360 may receive a packet (e.g., packet 222) from transmitter node 362 over active link 372. In some embodiments, the term “active link” may refer to a wireless communication link between a source node and an intended destination node. Thus, transmitter node 362 may send packet 222 intended for receiver node 360 via active link 372.
However, in a wireless network and in particular a wireless mesh network, a node may receive a packet intended for a different node. For example, node 364 may broadcast a packet intended for node 366 that may also be received by receiver node 360, establishing interfering link 374. In some embodiments, the term “interfering link” may refer to a wireless communication link between a source node and an unintended destination node. For instance, in wireless mesh networks, because a node may communicate with other nodes without a hierarchy (e.g., without being limited to specific links between particular nodes), and due to the broadcasting nature of wireless transmissions, a given node may receive packets not intended for that given node. Receiving unintended packets may interfere with a node's ability to receive intended packets on active links.
Until receiver node 360 processes the received packet 222 (e.g., by parsing a header of packet 222 to identify its destination node), receiver node 360 may not normally be able to identify whether it was the intended destination for packet 222. Processing packet 222 may delay receiver node 360 from receiving and/or processing packets intended for receiver node 360, causing a blocking effect. As will be described further below, the systems and methods herein may allow receiver node 360 to more efficiently and quickly determine whether to drop packet 222 before processing packet 222 in order to mitigate the blocking effect.
Turning back to
The systems described herein may perform step 104 in a variety of ways. In one example, filtering module 206 may read the packet type from packet 222 (e.g., from a header of packet 222) without fully processing packet 222. In some examples, the packet type may include a control packet or a data packet. As described above, a control packet may be used for managing the network and may generally be smaller than a data packet. As such, a blocking effect caused by a control packet may be less than a blocking effect caused by a data packet. In other examples, filtering module 206 may identify other types of packets and/or other packet attributes.
A bottom branch in
As described herein, this processing branch may create a blocking effect that may be particularly unfavorable if packet 422 is ultimately to be dropped. The top branch may correspond to a faster or otherwise less computational resource blocking branch for determining whether to drop packet 422. At threshold determination 450, a packet type for packet 422 may be identified. For example, filtering module 206 may read the packet type from the header of packet 422, which may be a faster process than the decoding and processing by decoder 476. As will be explained further below, filtering module 206 may determine an appropriate threshold, based on the packet type, to be applied at decision 478.
Returning to
The systems described herein may perform step 106 in a variety of ways. In one example, threshold data 250 may include signal strength threshold values for various packet types such that filtering module 206 may select a corresponding signal strength threshold for the packet type of packet 222. In some examples, the signal strength threshold may include a filter value range including an upper threshold and a lower threshold for signal strength such that a packet with a signal strength within the filter value range (e.g., satisfying the signal strength threshold) may be processed, and a packet with a signal strength outside of the filter value range may be dropped. Threshold data 250, including filter value ranges, may be initially set to a predetermined value (which may be based on statistical or other analysis) and dynamically updated by control module 208 as will be described below.
At static control 653, after control module 208 determines the nodes and link distance for a current received packet, control module 208 may use a distance table 682 to look up an appropriate filter value range. As shown in distance table 682, longer distances may have lower filter value thresholds for both upper and lower value thresholds than those of shorter distances. At shorter distances, a stronger signal may be expected. In addition, at shorter distances, greater variance in signal strength (reflect by a longer range) may be acceptable.
Although not illustrated in
Turning back to
Control module 208 may perform interference scan 754 to measure interference as an interference-to-noise ratio (INR) for each link. For example, referring to
Using the INR values from interference scan 754, control module 208 may determine a metric 784 for fine-tuning filter value ranges for each link. Metric 784 may include a mapping function for INR values, such as a weighted combination of a maximum INR of the INR vector and an average INR of the INR vector. Control module 208 may compare this metric against an interference threshold to make an adjustment 785 to the filter value ranges. The interference threshold may correspond to a blocking effect that may be exhibited by the current node. If the metric is too high (e.g., greater than the threshold), the current interference may cause a huge blocking effect. Control module 208 may perform adjustment 785 to increase the upper value and/or lower value of the corresponding filter value range. If the metric is too low (e.g., less than the threshold), the current interference may not cause a significant blocking effect. Control module 208 may perform adjustment 785 to reduce the upper value and/or lower value of the corresponding filter value range. The increases and/or reductions may be the same or different for the upper or lower values. In addition, the increase and/or reduction value may be a predetermined value, such as 1 which may also be determined using analysis, and may be dynamically updated.
Although not illustrated in
Turning back to
Performance 856 may correspond to a live link performance of receiving packets (on the currently examined link) using the current signal strength threshold. Control module 208 may perform, at categorize 886, a categorization of the received packets with respect to the current signal strength threshold. For instance, control module 208 may categorize received packets into two error cases as appropriate: a false positive case (e.g., when failing to filter out an undesired packet, in other words when an undesired packet falsely satisfies the signal strength threshold), and a false negative case (e.g., when failing to receive desired packets, in other words when a desired packet falsely fails to satisfy the signal strength threshold).
In order to filter out (e.g., drop) as many undesired packets as possible as well as receive (e.g., not drop) as many desired packets as possible, control module 208 may perform an adjustment 287 to the signal strength threshold based on a count of each type of error cases. If the false negative count is too high (e.g., is greater than a false negative threshold) control module 208 may reduce the signal strength threshold so as not to drop as many packets. If the false positive count is too high (e.g., is greater than a false positive threshold), control module 208 may increase the signal strength threshold to filter out more packets. The false negative and/or false positive thresholds may be based on predetermined values (e.g., based on analysis) and may be dynamically updated based on performance.
Because receiving desired packets may be more favorable than filtering out undesired packets, a rate of reducing the signal strength threshold may be faster than a rate of increasing the signal strength threshold. For example, when the false negative count is too high, the upper and/or lower value thresholds of the filter value range may be reduced by a fraction, such as ½, to quickly reduce the signal strength threshold. When the false positive count is too high, the upper and/or lower value thresholds of the filter value range may be increased by a predetermined value, such as 1, to gradually increase the signal strength threshold. The increase and/or reduction rates may be dynamically updated based on performance.
In addition, although not illustrated in
Turning back to
Control module 208 may periodically perform interference scan 554, for instance every few hours. When new interference scan data is available, control module 208 may perform quasi-static control 555 to update threshold 550 accordingly. When topology 552 is changed (e.g., one or more links become unavailable), control module 208 may perform static control 553 to update threshold data 250 accordingly. In some examples, the change in topology 552 may render previous interference scan data outdated such that control module 208 may further perform interference scan 554 and quasi-static control 555 to further fine-tune threshold 550 as needed.
Returning now to
The systems described herein may perform step 108 in a variety of ways. In one example, at decision 478 in
As illustrated in
The systems described herein may perform step 110 in a variety of ways. In one example, as illustrated in
As described above, the systems and methods provided herein may employ adaptive packet filtering techniques on a receiver node based on the type of packets, strength of interference, and levels of information available. The receiver node may use a specific packet filtering procedure to determine whether a received packet is a desired or undesired packet. The packet filtering procedure may use different thresholds for each type of packet. The receiver node may leverage different levels of information to change the threshold range adaptively (e.g., static control based on topology, quasi-static control based on an interference management scan, and dynamic control based on actual link performance). The receiver node may utilize a full control loop to update the actual threshold efficiently, dynamically, and intelligently.
Example 1: A computer-implemented method for adaptive wireless packet filtering control may include (i) receiving, by a receiver node of a wireless network, a packet sent by a transmitter node of the wireless network, resulting in a received packet, (ii) identifying a packet type of the received packet, (iii) determining, based on at least the identified packet type, a signal strength threshold, (iv) comparing a signal strength of the received packet with the signal strength threshold, and (v) processing, by the receiver node, the received packet when the signal strength satisfies the signal strength threshold.
Example 2: The method of Example 1, wherein the signal strength threshold comprises a filter value range including an upper threshold and a lower threshold.
Example 3: The method of Example 1 or 2, wherein the signal strength threshold is determined based on a distance between the receiver node and the transmitter node.
Example 4: The method of Example 3, wherein the distance is determined by mapping a topology of the wireless network using statistical analysis.
Example 5: The method of any of Examples 1-4, wherein the signal strength threshold is based on an interference management scan of the wireless network that measures an interference between each link for every pair of transmitter and receiver nodes in the wireless network.
Example 6: The method of Example 5, further comprising adjusting the signal strength threshold for each link based on the interference management scan.
Example 7: The method of Example 6, further comprising increasing the signal strength threshold for a link when an interference measurement for the link is greater than an interference threshold.
Example 8: The method of Example 6 or 7, further comprising decreasing the signal strength threshold for a link when an interference measurement for the link is less than an interference threshold.
Example 9: The method of any of Examples 1-8, further comprising adjusting the signal strength threshold based on a live link performance for a link between the transmitter node and the receiver node.
Example 10: The method of Example 9, further comprising decreasing the signal strength threshold when a false negative count of the link is greater than a false negative threshold.
Example 11: The method of Example 9 or 10, further comprising increasing the signal strength threshold when a false positive count of the link is greater than a false positive threshold.
Example 12: The method of any of Examples 1-11, wherein processing the received packet includes placing the received packet in a queue for processing packets.
Example 13: The method of any of Examples 1-12, wherein processing the received packet includes reading a destination of the packet.
Example 14: The method of any of Examples 1-13, further comprising dropping the received packet when the signal strength does not satisfy the signal strength threshold.
Example 15: The method of any of Examples 1-14, wherein the packet type includes a control packet or a data packet.
Example 16: A system comprising: an antenna for communicating with a wireless network, at least one physical processor, and physical memory comprising computer-executable instructions that, when executed by the physical processor, cause the physical processor to: (i) receive, via the antenna, a packet sent by a transmitter node of the wireless network, resulting in a received packet, (ii) identify a packet type of the received packet, (iii) determine, based on at least the identified packet type, a signal strength threshold, (iv) compare a signal strength of the received packet with the signal strength threshold, and (v) process the received packet when the signal strength satisfies the signal strength threshold.
Example 17: The system of Example 16, wherein the signal strength threshold is determined based on a distance between to the transmitter node, and the distance is determined by mapping a topology of the wireless network using statistical analysis.
Example 18: The system of Example 16 or 17, further comprising adjusting the signal strength threshold for each link based on an interference management scan of the wireless network that measures an interference between each link for every pair of transmitter and receiver nodes in the wireless network by: increasing the signal strength threshold for a link when an interference measurement for the link is greater than an interference threshold, and decreasing the signal strength threshold for a link when an interference measurement for the link is less than the interference threshold.
Example 19: The system of Example 16, 17, or 18, further comprising adjusting the signal strength threshold based on a live link performance for a link with the transmitter node by: decreasing the signal strength threshold when a false negative count of the link is greater than a false negative threshold, and increasing the signal strength threshold when a false positive count of the link is greater than a false positive threshold.
Example 20: A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to: (i) receive, via an antenna, a packet sent by a transmitter node of a wireless network, resulting in a received packet, (ii) identify a packet type of the received packet, (iii) determine, based on at least the identified packet type, a signal strength threshold, (iv) compare a signal strength of the received packet with the signal strength threshold, and (v) process the received packet when the signal strength satisfies the signal strength threshold.
As detailed above, the computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein. In their most basic configuration, these computing device(s) may each include at least one memory device and at least one physical processor.
In some examples, the term “memory device” generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer-readable instructions. In one example, a memory device may store, load, and/or maintain one or more of the modules described herein. Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, or any other suitable storage memory.
In some examples, the term “physical processor” generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In one example, a physical processor may access and/or modify one or more modules stored in the above-described memory device. Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.
Although illustrated as separate elements, the modules described and/or illustrated herein may represent portions of a single module or application. In addition, in certain embodiments one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, one or more of the modules described and/or illustrated herein may represent modules stored and configured to run on one or more of the computing devices or systems described and/or illustrated herein. One or more of these modules may also represent all or portions of one or more special-purpose computers configured to perform one or more tasks.
In addition, one or more of the modules described herein may transform data, physical devices, and/or representations of physical devices from one form to another. For example, one or more of the modules recited herein may receive packet data to be transformed, transform the data, output a result of the transformation to compare a packet signal strength, use the result of the transformation to determine whether to drop packets, and store the result of the transformation to filter packets. Additionally or alternatively, one or more of the modules recited herein may transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device.
In some embodiments, the term “computer-readable medium” generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and non-transitory-type media, such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic-storage media (e.g., solid-state drives and flash media), and other distribution systems.
The process parameters and sequence of the steps described and/or illustrated herein are given by way of example only and can be varied as desired. For example, while the steps illustrated and/or described herein may be shown or discussed in a particular order, these steps do not necessarily need to be performed in the order illustrated or discussed. The various exemplary methods described and/or illustrated herein may also omit one or more of the steps described or illustrated herein or include additional steps in addition to those disclosed.
The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the spirit and scope of the present disclosure. The embodiments disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the present disclosure.
Unless otherwise noted, the terms “connected to” and “coupled to” (and their derivatives), as used in the specification and claims, are to be construed as permitting both direct and indirect (i.e., via other elements or components) connection. In addition, the terms “a” or “an,” as used in the specification and claims, are to be construed as meaning “at least one of.” Finally, for ease of use, the terms “including” and “having” (and their derivatives), as used in the specification and claims, are interchangeable with and have the same meaning as the word “comprising.”