# Patent

## Title
Picking an optimal channel for an access point in a wireless network

## Abstract

A novel technique involves evaluating a real-time environment of a channel based on a nonlinear function of the number of neighbor radios and channel utilization requirements. The technique can be used to pick a channel for an AP that is added to a wireless network or to tune a channel for an existing AP. The technique can be applied to, for example, a relatively new wideband option in the 802.11n standard.

## Background
CROSS-REFERENCE TO RELATED APPLICATION
This application claims priority to U.S. Patent Application No. 61/190,576, filed Aug. 29, 2008, entitled “Picking an Optimal Channel for an Access Point in a Wireless Network” which is hereby incorporated by reference in its entirety.


BACKGROUND
Auto-RF tuning allows wireless controller systems to automatically assign a channel number and/or power level for access point (AP) radios. This is useful in deployments where no network planning is desired and customers wish to have their controller system automatically start working without any configuration done for AP radio channel numbers and power values. A main functionality of auto-RF is dynamic channel assignment, to detect and adapt to changes in RF environments in a dynamic and intelligent fashion. Improving auto-RF is a topic of ongoing research.
SUMMARY
A novel technique for picking a channel for an access point (AP) in a wireless network involves evaluating a real-time environment of a channel based on a nonlinear function of the number of neighbor radios and channel utilization requirements. The technique can be used to pick a channel for an AP that is added to a wireless network or to tune a channel for an existing AP. The technique can be applied to, for example, a relatively new wideband option in the 802.11n standard.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 depicts an example of a system for picking a channel for an access point (AP) in a wireless network.
FIG. 2 depicts a flowchart of an example of a method for picking a channel for an AP on a wireless network.
FIG. 3 depicts an example of a flowchart of a method for calculating a channel utilization value.
FIG. 4 depicts an example of a flowchart of a method for calculating a wideband channel utilization value.
FIG. 5 depicts an example of a flowchart of a method for picking a channel to optimize throughput for a wireless network.
FIG. 6 depicts a conceptual diagram of an example of a process for determining whether to switch channels when auto-tuning.
FIG. 7 depicts an example of a system capable of performing techniques described in this paper.



DETAILED DESCRIPTION
In the following description, several specific details are presented to provide a thorough understanding. One skilled in the relevant art will recognize, however, that the concepts and techniques disclosed herein can be practiced without one or more of the specific details, or in combination with other components, etc. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of various examples disclosed herein.
FIG. 1 depicts an example of a system 100 for picking a channel for an access point (AP) in a wireless network. FIG. 1 includes APs 102-1 to 102-N (referred to collectively as APs 102), controllers 104-1 to 104-N (referred to collectively as controllers 104), a wireless network environment monitoring engine (WNEM engine) 106, a stations database 108, and a wideband channel selection (WCS) engine 110. Advantageously, the system 100 can be used to allocate a relatively under-utilized channel to an AP (e.g., the AP 102-N) when the AP is added to the wireless network. The system 100 can be used to auto-tune any or all of the APs 102 while the system is operational. The system 100 can be used to allow intelligent switching from narrowband to wideband when a station (not shown) enters an area with wideband.
In the example of FIG. 1, the APs 102 can include wireless access points (APs), mesh points, mesh point portals, mesh APs, mesh stations, client devices, or other known or convenient devices for acting as a wireless network access location. The APs 102 typically include at least one radio and in other respects can be implemented as hardware, firmware, software implemented in a computer-readable medium and executed by a processor, or a combination thereof. The APs 102 are stations that can establish a wireless connection with other stations. Stations can include any applicable computing device capable of wireless communication, for example a notebook computer, a wireless phone, or a personal digital assistant (PDA).
Computer-readable media include all applicable known or convenient storage media that a computer can read. As used herein, computer-readable medium is intended to encompass all statutory computer-readable media, and explicitly exclude all non-statutory computer-readable media. Currently, statutory requirements for computer-readable media exclude signals having the software embodied thereon, and include memory (including registers, cache, RAM, and non-volatile storage) of a general-purpose or special-purpose computer.
A wireless network 103 typically defines the range at which the APs 102 can operate. Stations that associate with one of the APs 102 can be referred to as “on” the wireless network. It is possible to extend the range of the wireless network using untethered APs or equivalent technology. For illustrative purposes, these technologies are largely ignored in this paper because an understanding of such technologies is unnecessary for an understanding of the teachings herein. Similarly, overlapping and ad hoc wireless networks are largely ignored in this paper because an understanding of such concepts is unnecessary for an understanding of the teachings herein.
The wireless network 103 can be coupled to another network (not shown). An example of another network may be any type of communication network, such as, but not limited to, the Internet or an infrastructure network. The term “Internet” as used herein refers to a network of networks which uses certain protocols, such as TCP/IP, and possibly other protocols, such as the hypertext transfer protocol (HTTP), for hypertext markup language (HTML) documents that make up the World Wide Web (the web).
In the example of FIG. 1, the controllers 104 can be implemented as hardware, firmware, software implemented in a computer-readable medium and executed by a processor, or a combination thereof. The controllers 104 can be distinct physical or logical devices, or some or all of the functionality of the various controllers 104 can be combined on the same physical device, and/or have shared logic. For illustrative convenience, each of the APs 102 is coupled to an associated controller 104. For example, the AP 102-1 is coupled to the controller 104-1.
The controllers 104 may or may not be “on” one or more of the APs 102. APs that have the functionality of a controller are sometimes referred to as “smart APs”, though in some cases smart APs may have a subset of the controller functionality, and still operate in coordination with an external controller.
In the example of FIG. 1, the WNEM engine 106 can be implemented as hardware, firmware, software implemented in a computer-readable medium and executed by a processor, or a combination thereof. The WNEM engine 106 is coupled to the APs 102, and can be implemented on a wired device, such as a server, or distributed across various system components. For illustrative convenience, it is assumed that the WNEM engine 106 “listens to” the wireless network associated with the APs 102, and therefore includes wireless access to the wireless network. However, it should be understood that in an alternative description where the WNEM engine 106 is characterized as having no direct wireless access, the WNEM engine 106 can be forwarded data from, for example, the APs 102. The WNEM engine 106 monitors the wireless network. In certain implementations and/or cases, characteristics of the wireless network associated with channel utilization are most relevant.
In the example of FIG. 1, the stations database 108 is coupled to the WNEM engine 106. The stations database 108 can be implemented as hardware, firmware, software implemented in a computer-readable medium and executed by a processor, or a combination thereof. The stations database 108 stores data associated with stations on the wireless network. In certain implementations and/or cases, data associated with neighboring APs is of particular relevance.
The term “database,” as used in this paper, is intended to have the broadest possible reasonable meaning. Thus, the database includes any data storage that allows meaningful access to the data. Examples of databases include conventional commercial databases, as well as comma-delimited data files (or other equivalently delimited files), practically any data structure (e.g., objects, tables, arrays, etc.), and any other applicable structure that facilitates convenient access to data. For illustrative convenience, databases are also assumed to have the appropriate database interfaces, if needed.
In the example of FIG. 1, the WCS engine 110 is coupled to the stations database 108. The WCS engine 110 can be implemented as hardware, firmware, software implemented in a computer-readable medium and executed by a processor, or a combination thereof. The WCS engine 110 uses data from the stations database 108 to intelligently select channels for one or more of the APs 102. The WCS engine 110 can select a channel for an AP specifically, or select channels for multiple APs as part of a global tuning configuration. In alternative embodiments, the WCS engine 110 could be distributed across the APs 102 and/or controllers 104, or implemented, in whole or in part, in the WNEM engine 106.
In the example of FIG. 1, in operation, the WNEM engine 106 monitors the APs 102-1 and 102-2 (it may monitor additional APs, but this is not necessary for the example described here). The WNEM engine 106 stores data associated with the APs 102-1, 102-2, which can include data associated with other stations within range of the APs 102-1, 102-2, in the stations database 108. The WCS engine 110 uses data from the stations database 108 to determine an optimal channel for the AP 102-N. The controller 104-N commands the AP 102-N to use the optimal channel. It may be noted that the phrase “picking a channel” as used in this paper includes picking a channel for an AP that is newly added to the wireless network (or newly considered for whatever reason) and includes tuning a channel for an AP that is already on the wireless network.
Advantageously, a utility function that grows nonlinearly by the number of neighbor APs can be used to evaluate and/or predict channel conditions. The more neighbor APs that exist, the higher channel usage on average that can be anticipated. Typically it would be desirable to tune away from the higher channel usage when lower channel capacity is available to a target AP. Past channel utilization characteristics can also be considered. The total number of neighbor APs is a prediction for the future channel utilization, while the past values tell the historic or current channel usage behaviors. A mix of using both values can provide a more comprehensive channel evaluation than using only one or the other.
FIG. 2 depicts a flowchart 200 of an example of a method for picking a channel for an AP on a wireless network. The method is organized as a sequence of modules in the flowchart 200. However, it should be understood that these, and modules associated with other methods described herein, may be reordered for parallel execution or into different sequences of modules.
In the example of FIG. 2, the flowchart 200 starts at module 202 with providing a station database associated with a wireless network. The station database may be similar to the station database 108 (FIG. 1), or may be dissimilar. Typically, providing the station database includes monitoring the wireless network to obtain an up-to-date station database, but providing the station database could also or instead include historic data associated with the wireless network.
In the example of FIG. 2, the flowchart 200 continues to module 204 with determining a channel load indicator for each available channel. A channel load indicator is a known or convenient value that is indicative of channel utilization. In general, it might be more desirable to pick for an AP a channel that has low channel utilization. For convenience in this paper, it is often assumed that a channel load indicator that has a “low” value is associated with a channel having low channel utilization. Examples of how to determine a channel load indicator are described later with reference to FIGS. 3 and 4.
In the example of FIG. 2, the flowchart 200 continues to module 206 with picking a channel to optimize throughput for the wireless network using the channel load indicator associated with at least one available channel. In practice, it may or may not be desirable to use the channel load indicators associated with each available channel. However, there may be a policy reason for considering only a subset (or one) of the possible channels. It should be noted that an algorithm for determining channel load indicators for each available channel could stop upon finding a channel load indicator associated with a free or relatively free channel. For the purposes of this example, it is assumed that in such a case the channel load indicator of the free or relatively free value is 0 and all other channel load indicators are 1. In this way, each channel has an associated channel load indicator. Examples of how to pick a channel to optimize throughput for the wireless network are described later with reference to FIG. 5.
FIG. 3 depicts an example of a flowchart 300 of a method for calculating a channel utilization value. In the example of FIG. 3 the flowchart 300 starts at module 302 with selecting a channel. The intention when selecting the channel is to eventually cycle through each channel available to an AP to find the optimal channel for the AP. What is meant be “each channel” is each channel that is considered. This may be a subset of all channels. For example, policies may prohibit the use of certain channels for certain data types, or the algorithm might search for a relatively open channel and stop when one is found (which means “each channel” refers only to those channels that were considered before the algorithm stopped). For illustrative simplicity in this example, it is assumed that a channel is selected on a per-AP basis, rather than by way of a global tuning algorithm.
In the example of FIG. 3, the flowchart 300 continues to module 304 with determining a channel loading indicator for a neighboring AP. One example of a convenient channel loading indicator is a relative signal strength indicator (RSSI). Although the RSSI is a convenient characteristic to measure, due to its ubiquity in wireless networks, any applicable known or convenient characteristic could be used. For example, the channel loading indicator could be associated with a signal-to-noise ratio (SNR). Another example might be to calculate from a noise floor associated with an AP. Any applicable known or convenient technique can be used so long as the technique has at least some correlation with channel loading. What is meant by “neighboring AP” is an AP that is within range of an AP for which a channel is being picked. To be within range of the AP, neighboring APs must be detectable.
In the example of FIG. 3, the flowchart 300 continues to decision point 306 where it is determined whether there is another neighboring AP. If it is determined that there is another neighboring AP (306-Y), then the flowchart 300 returns to module 304 and continues as described previously. If, on the other hand, it is determined that there are no more neighboring APs (306-N), then the flowchart 300 continues to module 308 where functions of the channel loading indicators are combined to obtain a channel load metric for the currently considered channel.
The summation symbol, Σ, is used in this paper for illustrative simplicity. The channel loading indicators can be combined in any applicable known or convenient manner so long as the result is a meaningful channel load metric, including values from which a meaningful channel loading metric can be derived.
There are several options for the function, f( ). Some good candidates for f( ) include but are not limited to log_M(N) or (N)^{1/M}, e.g., log—10( ) or sqrt( ). The good characteristics of these functions are that they give more weight to the same number increment when N is small. This is more realistic, where having one more neighbor when N=4 apparently has more impact than having one more neighbor when N=30. Here are three specific examples:
1) utilization index=50*log—10(N)+U, where U is a channel utilization value;
2) utilization index=20*log—2(N+1)+U;
3) utilization index=10*sqrt(N)+U.
With example 1, N=1 would anticipate a 50% channel time, while N=100 would anticipate a 100%. This might be a good choice since N=100 is rare to see in some practical implementations.
With example 2, N=1 would anticipate a 20% channel time, while N=31 would anticipate a 100%. N=31 might be too small to anticipate a 100% in some practical implementations.
With example 3, N=1 would anticipate a 10% channel time, N=4 would be 20%, N=25 would be 50%, while N=100 would anticipate a 100%.
In general, it may be desirable to consider computing costs when choosing a function, f( ). In this respect, sqrt( ) might be more preferable than using a logarithm. Also, it may be good to choose an f( ) with parabola fitting well with a real scenario.
N can be replaced by giving weight to neighbors by their channel loading indicator. E.g., N=Σ(f(RSSI)) or N=Σ(f(SNR)), where f( ) includes a weighting functionality. Also, a noise floor can be put as a factor with an equation such as index=u*f(N+c)+U+f(NF).
It may be useful for the function of the channel loading indicator to provide results that do not change the order of the channel loading indicators considered. For example, if the channel loading indicator is RSSI, RSSIx>RSSIy→f(RSSIx)>f(RSSIy). However, while useful for logical simplicity, this is not, strictly speaking, a requirement. It should further be noted that the function could be an identity function. That is, the actual value of the channel loading indicators could be combined.
It should be noted that an AP on a second channel that is right next to a first channel could interfere with throughput of an AP using the first channel. Normally, the signal power spectrum is degraded by about 30 dB when it penetrates into a neighboring channel. If a signal's RSSI is strong enough (say >−60 dBm), it is likely to reduce the neighbor channel's throughput. So, rather than simply sum the functions of RSSI values to obtain a channel load metric, it may be desirable to use the following formula: channel load metric=Σi f(RSSIi)+Σj f(RSSIj−A), where j refers to the jth AP seen on the neighbor channel and A represents the adjacent channel rejection level, e.g. 30 dB.
In the example of FIG. 3, the flowchart 300 continues to decision point 310 where it is determined whether there are more channels available to the AP. If it is determined that there are more channels available to the AP (310-Y), then the flowchart 300 returns to module 302 and continues as described previously. If, on the other hand, it is determined that there are no more channels available to the AP (310-N), then the flowchart 300 continues to module 312 where an optimal channel is chosen using the channel load metrics.
FIG. 4 depicts an example of a flowchart 400 of a method for calculating a wideband channel utilization value. In the example of FIG. 4 the flowchart 400 starts at module 402 with selecting a narrowband channel. For the purposes of this paper, a narrowband channel is the smallest sub-band of a band, as defined in a relevant wireless standard. For the purposes of this paper, a wideband channel encompasses multiple narrowband channels. While it is possible that a wideband channel could encompass a narrowband channel plus a fraction more, most well-known standards have relatively constant narrowband channels and wideband channels that include an integer number of narrowband channels. It may be noted, however, that some bands have one or more “extra” narrowband channels. For example, a wideband channel may include two narrowband channels, but the band in question might have an odd number of narrowband channels. In this paper, the narrowband that is not part of a wideband is referred to as an edge band.
In the example of FIG. 4, the flowchart 400 continues to module 404 with determining a channel loading indicator for a neighboring AP.
In the example of FIG. 4, the flowchart 400 continues to decision point 406 where it is determined whether there is another neighboring AP. If it is determined that there is another neighboring AP (406-Y), then the flowchart 400 returns to module 404 and continues as described previously. If, on the other hand, it is determined that there are no more neighboring APs (406-N), then the flowchart 400 continues to module 408 where functions of the channel loading indicators are combined to obtain a narrowband channel load metric for the currently considered channel.
Calculating a narrowband channel loading metric is optional in the sense that the purpose of the example of FIG. 4 is to calculate a wideband channel load metric. However, one way to calculate a wideband channel load metric is by taking a function of constituent narrowband channel loading metrics. Depending on the implementation and/or configuration of the system, the narrowband channel loading metric can also be calculated for archival purposes or to aid in a determination regarding whether an AP should use a narrowband or wideband channel.
In the example of FIG. 4, the flowchart 400 continues to decision point 410 where it is determined whether the just-considered band is a second sub-band of a wideband channel. For illustrative convenience, it is assumed that a wideband channel covers two narrowband channels. The teaching can be expanded naturally to include wideband channels that cover some other multiple of narrowband channels, or fractions thereof.
If it is determined that the just-considered band is a second sub-band, Ni+1, of a wideband channel (410-Y), then the flowchart 400 continues to module 412 with where a function of the channel utilization values of the previously considered band, Ni, and the just-considered band, Ni+1, are combined to obtain a wideband channel load metric.
If, on the other hand, it is determined that the just-considered band is not a second sub-band of a wideband channel (410-N), or in any case after the wideband channel utilization value is generated, the flowchart 400 continues to decision point 414 where it is determined whether there are more channels available to the AP. If it is determined that there are more channels available to the AP (414-Y), then the flowchart 400 returns to module 402 and continues as described previously. If, on the other hand, it is determined that there are no more channels available to the AP (414-N), then the flowchart 400 continues to module 416 where an optimal channel is chosen using the wideband channel load metrics. In some implementations and/or configurations the optimal channel may only be a wideband channel. In other implementations and/or configurations, the optimal channel may be either a narrowband channel or a wideband channel. In this case, presumably the narrowband channel load metrics are also used to choose an optimal channel.
FIG. 5 depicts an example of a flowchart 500 of a method for picking a channel to optimize throughput for a wireless network. Picking a channel in wireless networks is made more difficult by the introduction of both narrowband and wideband channels. The IEEE 802.11n system with wideband is coming so there will be challenges accommodating wideband and narrowband (e.g., conventional 20 MHz band) APs. Under the assumption that primary channel overlap with a secondary channel is discouraged in 40 MHz BSS, a higher weight (e.g., double) can be assigned to the secondary channel of neighbors when calculating a channel utility index. Using a formula similar to that described with reference to FIG. 3 to determine a channel load metric, the following formula is useful: C=N1+w*N2. N1 refers to the number of neighbors whose primary channel is the same as the evaluated channel and N2 refers to the number of neighbors whose secondary channel is the same as the evaluated channel. C can be used by any channel evaluation algorithm, in the same way as the number of neighbors is used in evaluating 20 MHz channels.
In the example of FIG. 5, the flowchart 500 starts at module 502 with obtaining narrowband channel load metrics and wideband channel load metrics. These metrics can be obtained in a manner similar to that described with reference to FIGS. 3 and 4, or in some other applicable known or convenient manner.
In the example of FIG. 5, the flowchart 500 continues to module 504 with determining the best narrowband channel load metric. While the values of the narrowband channel load metrics are implementation-specific, a best value is typically a lowest number, which corresponds to a lowest channel utilization. Of course, it is trivial to make the best value the highest number (e.g., by the equivalent of multiplying a number by −1). It should be noted that the best narrowband channel load metric is not necessarily associated with the narrowband channel having the lowest channel utilization, but, assuming there are no other policies or rules dictating otherwise, the best narrowband channel load metric would be associated with the preferably (but not guaranteed) lowest channel utilization. In this paper, this preference is indicated by referring to the best channel utilization as a best predicted channel utilization.
In the example of FIG. 5, the flowchart 500 continues to module 506 with determining the best wideband channel load metric. Again, although the best value is implementation-specific; a simple way to determine the best wideband channel load metric is by selecting the lowest value.
In the example of FIG. 5, the flowchart 500 continues to decision point 508 where it is determined whether the best wideband channel load metric, W, is greater than the best narrowband channel load metric times a weight, wN. How to decide the value of the weight ‘w’ is discussed later. For the purposes of this example, it is sufficient to note that the system can be configured to encourage or discourage wideband channel use over narrowband channel use by increasing or decreasing the weight multiple of the narrowband channel. If it is determined that the best wideband channel load metric is greater than the weighted best narrowband channel load metric (508-Y), then the flowchart 500 continues to module 510 where the channel associated with the best narrowband channel load metric is selected. If, on the other hand, it is determined that the best wideband channel load metric is not greater than the weighted best narrowband channel load metric (508-N), then the flowchart 500 continues to module 512 where the channel associated with the best wideband channel load metric is selected.
It should be noted that the best narrowband channel utilization value could be associated with an edge narrowband channel that is not a part of any wideband channel. Depending upon the implementation of a system that has narrowband channels that are not part of any wideband channel, such channels could be made unavailable, favored for narrowband traffic, or treated as any other narrowband channel.
When comparing a 40 MHz channel to a 20 MHz channel, an example of a criterion could be: if (f40(N40)>w*f20(N20)) then choose the 20 MHz channel, where f is defined as the channel utilization expectation, N as a parameter that might be decided using any previously described, known, or convenient technique, and was a weight factor.
There could be a number of reasons to choose various values for w. For example, if radios are doing MPDU aggregation, throughput is roughly twice as high on 40 MHz channels than on 20 MHz channels. So, it may be advantageous to set w close to 2. For radios not supporting aggregation, the throughputs are quite close for 40 MHz (drop down 75%) or 20 MHz channels (drop down almost half). In this situation, it may be advantageous to set w close to 1.2.
Another possible way to choose a value for w is to consider actual values and pick a number that makes sense given the throughput characteristics.
Another possible way to choose a value for w is to consider that voice only needs a narrow band. It may be advantageous to choose a large value of w for channels with a high percentage of voice traffic (e.g., if a majority of traffic is expected to be voice on a given channel). Similarly, a system could be configured such that a particular AP serves voice, while another AP serves data. In such cases, the various APs may have different associated values of w.
For APs that are already on the wireless network, it may be desirable to require that the channel load metric of the predicted optimal channel is less than the channel load metric of the AP's current channel by more than a tuning threshold, T. I.e., Ccurrent−Cnew>T, assuming the lower the value of C, the more (predicted) optimal the channel. The tuning threshold is useful to reduce the likelihood that an AP will switch back and forth between channels as estimated channel usage fluctuates over time.
FIG. 6 depicts a conceptual diagram 600 of an example of a process for determining whether to switch channels when auto-tuning. The diagram 600 includes a plurality of function blocks 602-1 to 602-N (referred to collectively as function blocks 602), an N-to-1 multiplexor 604, an adder 606, and an auto-tuning engine 608.
The function blocks 602 take as input a plurality of channel loading indicators, C, (e.g., one for each relevant neighboring AP on a channel), and output channel loading metrics for their associated channels, which are a combination of the channel loading indicators associated with the channel. The channel loading indicators may be pre-weighted based upon policy- or rules-based considerations.
The N-to-1 multiplexor 604 selects one of the channel loading metrics. For illustrative simplicity, it is assumed that the lowest-value channel loading metric is associated with the lowest (weighted) predicted channel utilization. It is further assumed that the channel with the lowest predicted channel utilization is the most desirable choice for auto-tuning. The output of the N-to-1 multiplexor 604 is, therefore, the lowest channel loading metric output from the function blocks 602. In any case, the term “best” is used in this paper to describe a value that is determined to be the most desirable, whether that value is the lowest, highest, or somewhere in between.
The adder 606 adds together the lowest channel loading metric output from the N-to-1 multiplexor 604 and a tuning threshold. The tuning threshold may be a constant or a variable, and may be set in accordance with policy, practical observations, etc. Any known or convenient algorithm or rule to set the tuning threshold value can be used, keeping in mind the goal is to auto-tune channels such that an AP doesn't switch back and forth between channels relatively frequently, but does switch when channel utilization, throughput, or other traffic characteristics can actually be improved.
The auto-tuning engine 608 takes as inputs the output of the adder 606 and a channel load metric associated with a channel that an AP is currently on. The auto-tuning engine 608 changes to the channel associated with the lowest channel load metric if the lowest channel load metric plus the threshold is lower than the channel load metric associated with the channel that the AP is currently on. The auto-tuning engine 608 does not change channels otherwise. In this way, the AP will not switch to a channel if channel utilization is only nominally (however that is defined by way of setting the tuning threshold value) better.
Due to high computing costs when using nonlinear functions to calculate channel load metric, an alternative is to use an adjustable threshold, instead of a fixed threshold, when deciding whether to change channels. If it is assumed a channel load metric increases linearly as the number of neighbors grows, a threshold can be designed to adjust accordingly (e.g., T=indexcurrent*10%) and only change channels if (indexcurrent−indexnew)>T. This example has a low computing cost. Since channel utilization, U, is not incorporated into the index calculation in this example, this works well for simulating a nonlinear effect on the f( ) function. However, if U is counted, this example may not be ideal because U should not be nonlinear like the portion calculated from the number of neighbors.
FIG. 7 depicts an example of a system 700 capable of performing techniques described in this paper. The system 700 may be a conventional computer system that can be used as a client computer system, such as a wireless client or a workstation, or a server computer system. The system 700 includes a device 702, I/O devices 704, and a display device 706. The device 702 includes a processor 708, a communications interface 710, memory 712, display controller 714, non-volatile storage 716, I/O controller 718, clock 722, and radio 724. The device 702 may be coupled to or include the I/O devices 704 and the display device 706.
The device 702 interfaces to external systems through the communications interface 710, which may include a modem or network interface. It will be appreciated that the communications interface 710 can be considered to be part of the system 700 or a part of the device 702. The communications interface 710 can be an analog modem, ISDN modem or terminal adapter, cable modem, token ring IEEE 802.5 interface, Ethernet/IEEE 802.3 interface, wireless 802.11 interface, satellite transmission interface (e.g. “direct PC”), WiMAX/IEEE 802.16 interface, Bluetooth interface, cellular/mobile phone interface, third generation (3G) mobile phone interface, code division multiple access (CDMA) interface, Evolution-Data Optimized (EVDO) interface, general packet radio service (GPRS) interface, Enhanced GPRS (EDGE/EGPRS), High-Speed Downlink Packet Access (HSPDA) interface, or other interfaces for coupling a computer system to other computer systems.
The processor 708 may be, for example, a conventional microprocessor such as an Intel Pentium microprocessor or Motorola power PC microprocessor. The memory 712 is coupled to the processor 708 by a bus 720. The memory 712 can be Dynamic Random Access Memory (DRAM) and can also include Static RAM (SRAM). The bus 720 couples the processor 708 to the memory 712, also to the non-volatile storage 716, to the display controller 714, and to the I/O controller 718.
The I/O devices 704 can include a keyboard, disk drives, printers, a scanner, and other input and output devices, including a mouse or other pointing device. The display controller 714 may control in the conventional manner a display on the display device 706, which can be, for example, a cathode ray tube (CRT) or liquid crystal display (LCD). The display controller 714 and the I/O controller 718 can be implemented with conventional well known technology.
The non-volatile storage 716 is often a magnetic hard disk, flash memory, an optical disk, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory 712 during execution of software in the device 702. One of skill in the art will immediately recognize that the terms “machine-readable medium” or “computer-readable medium” includes any type of storage device that is accessible by the processor 708.
Clock 722 can be any kind of oscillating circuit creating an electrical signal with a precise frequency. In a non-limiting example, clock 722 could be a crystal oscillator using the mechanical resonance of vibrating crystal to generate the electrical signal.
The radio 724 can include any combination of electronic components, for example, transistors, resistors and capacitors. The radio is operable to transmit and/or receive signals.
The system 700 is one example of many possible computer systems which have different architectures. For example, personal computers based on an Intel microprocessor often have multiple buses, one of which can be an I/O bus for the peripherals and one that directly connects the processor 708 and the memory 712 (often referred to as a memory bus). The buses are connected together through bridge components that perform any necessary translation due to differing bus protocols.
Network computers are another type of computer system that can be used in conjunction with the teachings provided herein. Network computers do not usually include a hard disk or other mass storage, and the executable programs are loaded from a network connection into the memory 712 for execution by the processor 708. A Web TV system, which is known in the art, is also considered to be a computer system, but it may lack some of the features shown in FIG. 7, such as certain input or output devices. A typical computer system will usually include at least a processor, memory, and a bus coupling the memory to the processor.
In addition, the system 700 is controlled by operating system software which includes a file management system, such as a disk operating system, which is part of the operating system software. One example of operating system software with its associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Wash., and their associated file management systems. Another example of operating system software with its associated file management system software is the Linux operating system and its associated file management system. The file management system is typically stored in the non-volatile storage 716 and causes the processor 708 to execute the various acts required by the operating system to input and output data and to store data in memory, including storing files on the non-volatile storage 716.
Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is Appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present example also relates to apparatus for performing the operations herein. This Apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, flash memory, magnetic or optical cards, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other Apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized Apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present example is not described with reference to any particular programming language, and various examples may thus be implemented using a variety of programming languages.

## Claims

1. A method comprising:
selecting, by a device, a first narrowband channel;
receiving first one or more channel loading indicators associated with respective one or more neighboring access points (APs) on the first narrowband channel;
deriving a first channel load metric from the first one or more channel loading indicators;
selecting a second narrowband channel;
receiving second one or more channel loading indicators associated with respective one or more neighboring APs on the second narrowband channel;
deriving a second channel load metric from the second one or more channel loading indicators;
combining the first channel load metric and the second channel load metric to obtain a wideband channel load metric;
if the wideband channel load metric is greater than the first channel load metric and the second channel load metric, sending a signal indicative of the wideband channel; and
if the first channel load metric is greater than the wideband channel load metric and the second channel load metric, sending a signal indicative of the first narrowband channel.

2. The method of claim 1, wherein the wideband channel load metric is a first wideband channel load metric, further comprising:
predicting a lower channel load on a first wideband channel associated with the first wideband channel load metric than on a second wideband channel associated with a second wideband channel load metric; and
if the second wideband channel load metric is greater than the first channel load metric and the second channel load metric, picking the first wideband channel for use by an AP.

3. The method of claim 1, wherein the wideband channel load metric is a first wideband channel load metric, further comprising:
predicting a lower channel load on a first wideband channel associated with the first wideband channel load metric than on a second wideband channel associated with a second wideband channel load metric; and
auto-tuning an AP to the first wideband channel.

4. The method of claim 1, further comprising providing a stations database that includes data associated with APs.

5. The method of claim 1, further comprising providing a stations database that includes data associated with client stations.

6. The method of claim 1, further comprising:
obtaining a relative signal strength indicator (RSSI) associated with a first AP;
generating a first channel loading indicator of the first one or more channel loading indicators from a function of the RSSI associated with the first AP;
obtaining an RSSI associated with a second AP; and
generating a second channel loading indicator of the second channel loading indicators from a function of the RSSI associated with the second AP.

7. The method of claim 1, further comprising:
obtaining a signal-to-noise ratio (SNR) associated with a first AP;
generating a first channel loading indicator of the first one or more channel loading indicators from a function of the SNR associated with the first AP;
obtaining an SNR associated with a second AP; and
generating a second channel loading indicator of the second one or more channel loading indicators from a function of the SNR associated with the second AP.

8. The method of claim 1, wherein the wideband channel load metric is a first wideband channel load metric, further comprising:
selecting a third narrowband channel;
receiving third one or more channel loading indicators associated with respective one or more neighboring access points (APs) on the third narrowband channel;
deriving a third channel load metric from the third one or more channel loading indicators;
selecting a fourth narrowband channel;
receiving fourth one or more channel loading indicators associated with respective one or more neighboring APs on the fourth narrowband channel;
deriving a fourth channel load metric from the fourth one or more channel loading indicators; and
combining the third channel load metric and the fourth channel load metric to obtain a second wideband channel load metric.

9. The method of claim 1, further comprising:
calculating a first index from a function of each channel loading indicator associated with respective one or more neighboring APs on the first narrowband channel;
combining the indices to derive the first channel load metric;
calculating a second index from a function of each channel loading indicator associated with respective one or more neighboring APs on the second narrowband channel; and
combining the first index and the second index to derive the second channel load metric.

10. The method of claim 1, further comprising:
adding a tuning threshold to the wideband channel load metric;
determining that the wideband channel load metric plus the tuning threshold have a lower value than a current channel load metric; and
switching channels for an AP from a channel associated with the current channel load metric to a channel associated with the wideband channel load metric.

11. A system, comprising:
a wireless network environment monitoring engine configured to obtain data associated with stations in a wireless network;
the wireless network environment monitoring engine configured to store the data in a stations database;
a wideband channel selection engine configured to calculate narrowband channel load metrics for narrowband channels available to an access point (AP) based on the data associated with stations in the wireless network;
the wideband channel selection engine configured to combine the narrowband channel load metrics to obtain wideband channel load metrics for one or more wideband channels available to the AP;
the wideband channel selection engine configured to (1) weight a best narrowband channel load metric from the narrowband channel load metrics to define a weighted best narrowband channel load metric, and (2) determine a best wideband channel load metric from the wideband channel load metrics; and
the wideband channel selection engine configured to select a narrowband channel associated with the best narrowband channel load metric if the best wideband channel load metric is greater than the weighted best narrowband channel load metric.

12. The system of claim 11, wherein:
the wideband channel selection engine configured to select a channel associated with the best wideband channel load metric when the weighted best narrowband channel load metric is greater than the best wideband channel load metric.

13. The system of claim 11, wherein:
the wideband channel selection engine configured to tune the AP to a channel associated with the best wideband channel load metric when the weighted best narrowband channel load metric is greater than the best wideband channel load metric.

14. The system of claim 11, wherein:
the wideband channel selection engine configured to tune the AP to a channel associated with the best narrowband channel load metric when the best wideband channel load metric is greater than the weighted best narrowband channel load metric.

15. The system of claim 11, further comprising:
a plurality of function blocks having inputs and an output;
an N-to-1 multiplexor coupled to the plurality of function blocks;
an adder coupled to the N-to-1 multiplexor;
an auto-tuning engine coupled to the adder and the AP;
a first function block of the plurality of function blocks configured to receive a channel loading indicator for each relevant neighboring AP on a first channel as inputs and provides a first channel load metric for the first channel as output;
a second function block of the plurality of function blocks configured to receive a channel loading indicator for each relevant neighboring AP on a second channel as inputs and provides a second channel load metric for the second channel as output; and
the N-to-1 multiplexor configured to receive at least the first channel load metric and the second channel load metric as inputs and outputs a best channel load metric;
the adder configured to combine the best channel load metric and a tuning threshold;
the auto-tuning engine configured to:
receive the combined best channel load metric and tuning threshold and a current channel load metric associated with the AP; and
tune the AP to a channel associated with the best channel load metric when the combined best channel load metric and tuning threshold are indicative of better channel characteristics than the current channel load metric.

16. A method comprising:
receiving, by a device, channel loading indicators for a plurality of neighboring access points (APs);
computing a function for each of the channel loading indicators to define a channel load metric for each of channel load indicators;
combining a plurality of channel load metrics of the channel load metrics for each available channel to obtain a wideband channel load metric;
selecting a narrowband channel load metric from the channel load metrics, the narrowband channel load metric associated with a narrowband channel; and
sending a signal indicative of the narrowband channel to optimize throughput for a wireless network when a weighted narrowband channel load metric is greater than the wideband channel load metric.

17. The method of claim 16, further including sending a signal indicative of a wideband channel associated with the wideband channel load metric when the narrowband channel load metric is greater than the wideband channel load metric.