User Tools

Site Tools


en:users:documentation:acs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:users:documentation:acs [2015/05/15 09:45]
Rafał Miłecki [Driver implementation details] Update enums
en:users:documentation:acs [2021/03/01 04:28] (current)
Nikolas Nyby [Hostapd setup] update link to acs config section
Line 16: Line 16:
 ===== Survey based algorithm ===== ===== Survey based algorithm =====
  
-The survey based algorithm relies on the nl80211 survey API command to query the interface for channel active time, channel busy time, channel tx time and noise. The active time consists of the amount of time the radio has spent on the channel. The busy time consists of the amount of time the channel ​has spent on the channel but noticed the channel was busy and could not initiate communication if it wanted to. The tx time is the amount of time the channel ​has spent on the channel transmitting data. The survey algorithm relies on these values to build an //​interference factor// to give a sense of how much interference was detected on the channel and then picks the channel with the lowest //​interference factor//​. ​+The survey based algorithm relies on the nl80211 survey API command to query the interface for channel active time, channel busy time, channel tx time and noise. The active time consists of the amount of time the radio has spent on the channel. The busy time consists of the amount of time the radio has spent on the channel but noticed the channel was busy and could not initiate communication if it wanted to. The tx time is the amount of time the radio has spent on the channel transmitting data. The survey algorithm relies on these values to build an //​interference factor// to give a sense of how much interference was detected on the channel and then picks the channel with the lowest //​interference factor//​. ​
  
 The //​interference factor// is defined as the ratio of the observed busy time over the time we spent on the channel, this value is then amplified by the noise floor observed on the channel in comparison to the lowest noise floor observed on the entire band.  The //​interference factor// is defined as the ratio of the observed busy time over the time we spent on the channel, this value is then amplified by the noise floor observed on the channel in comparison to the lowest noise floor observed on the entire band. 
Line 24: Line 24:
  
 <​code>​(busy time - tx time) / (active time - tx time) * 2^(chan_nf - band_min_nf)</​code>​ <​code>​(busy time - tx time) / (active time - tx time) * 2^(chan_nf - band_min_nf)</​code>​
-The coefficient of of 2 reflects the way power in "​far-field"​ radiation decreases as [[linux-wireless@vger.kernel.org|the square of distance from the antenna]] What this does is it decreases the observed busy time ratio if the noise observed was low but increases it if the noise was high, proportionally to the way "far field" radiation changes over distance. Using a minimum noise instead of some "known low noise" value allows this code to be agnostic to any card used, even if the card is yielding incorrect values for noise floor. The minimum noise floor would be the lowest recorded noise floor from all surveyed channels. It is worth showing a few examples of what the multiplier produces to demonstrate how it amplifies the value for high noise. Since we have recorded the lowest observed noise floor by using the delta between what we observed and the lowest observed noise floor on the band we would get multipliers that are always positive and the lowest multiplier would be a value of 1 given that 2^0 = 1. Lets assume the lowest recorded noise floor was -110 dBm here are a few example values: ​+The coefficient of of 2 reflects the way power in "​far-field"​ radiation decreases as the square of distance from the antennaWhat this does is it decreases the observed busy time ratio if the noise observed was low but increases it if the noise was high, proportionally to the way "far field" radiation changes over distance. Using a minimum noise instead of some "known low noise" value allows this code to be agnostic to any card used, even if the card is yielding incorrect values for noise floor. The minimum noise floor would be the lowest recorded noise floor from all surveyed channels. It is worth showing a few examples of what the multiplier produces to demonstrate how it amplifies the value for high noise. Since we have recorded the lowest observed noise floor by using the delta between what we observed and the lowest observed noise floor on the band we would get multipliers that are always positive and the lowest multiplier would be a value of 1 given that 2^0 = 1. Lets assume the lowest recorded noise floor was -110 dBm here are a few example values: ​
  
  
Line 55: Line 55:
  
  
-===== Total interferece ​factor =====+===== Total interference ​factor =====
  
 The above channel interference factor is calculated with no respect to target operational bandwidth. ​ The above channel interference factor is calculated with no respect to target operational bandwidth. ​
Line 61: Line 61:
 To find an ideal channel the above data is combined by taking into account the target operational bandwidth and selected band. E.g. on 2.4GHz channels overlap w/ 20MHz bandwidth, but there is no overlap for 20MHz bandwidth on 5GHz.  To find an ideal channel the above data is combined by taking into account the target operational bandwidth and selected band. E.g. on 2.4GHz channels overlap w/ 20MHz bandwidth, but there is no overlap for 20MHz bandwidth on 5GHz. 
  
-Each valid and possible channel spec (i.e. channel + width) is taken and its interference factor is computed by summing up intereferences ​of each channel it overlaps. The one with least total interference is picked up. +Each valid and possible channel spec (i.e. channel + width) is taken and its interference factor is computed by summing up interferences ​of each channel it overlaps. The one with least total interference is picked up. 
  
 Note: This implies base channel interference factor must be non-negative allowing easy summing up.  Note: This implies base channel interference factor must be non-negative allowing easy summing up. 
  
  
-===== Example ​survet-based ACS analysis printout from hostapd =====+===== Example ​survey-based ACS analysis printout from hostapd =====
  
  
Line 187: Line 187:
   * Channel time (''​SURVEY_INFO_TIME''​) put into ''​NL80211_SURVEY_INFO_TIME''​   * Channel time (''​SURVEY_INFO_TIME''​) put into ''​NL80211_SURVEY_INFO_TIME''​
   * Time of channel unavailability which is **one** of:   * Time of channel unavailability which is **one** of:
-    * RX time (''​SURVEY_INFO_TIME_BUSY''​) put into ''​NL80211_SURVEY_INFO_TIME_BUSY''​+    * RX time (''​SURVEY_INFO_TIME_RX''​) put into ''​NL80211_SURVEY_INFO_TIME_RX''​
     * Busy time (''​SURVEY_INFO_TIME_BUSY''​) put into ''​NL80211_SURVEY_INFO_TIME_BUSY''​     * Busy time (''​SURVEY_INFO_TIME_BUSY''​) put into ''​NL80211_SURVEY_INFO_TIME_BUSY''​
  
 ===== Hostapd setup ===== ===== Hostapd setup =====
  
-Only the following drivers support the current (2014-08-19) survey based ACS implmenetation in hostapd ([[http://​w1.fi/​cgit/​hostap/​tree/​hostapd/​defconfig#​n309|http://​w1.fi/​cgit/​hostap/​tree/​hostapd/​defconfig#​n309]]). +Only the following drivers support the current (2014-08-19) survey based ACS implmenetation in hostapd ([[https://​w1.fi/​cgit/​hostap/​tree/​hostapd/​defconfig#​n329]]). 
   * ath5k    * ath5k 
-  * ath9k +  * ath9k (The pcie version only)
   * ath10k When building make sure you enable ACS in hostapd'​s .config file:    * ath10k When building make sure you enable ACS in hostapd'​s .config file: 
  
en/users/documentation/acs.1431683153.txt.gz · Last modified: 2015/05/15 09:45 by Rafał Miłecki