(1/2) ACS testing and some potential improvements...

David Littell david.littell at prodeasystems.com
Mon Feb 18 12:25:05 EST 2013


Hi all,

I've been looking at the ACS implementation and running some tests in
our environment (~90 AP's on both 2.4 and 5 GHz) with hostapd-1.0 over
ath9k (compat-wireless-3.6.8-1).  In general it appears that ACS does
indeed select a channel...  ;-)  However, I've seen some curious things
and I'm hoping for some feedback from the group.


Odd/Questionable Survey Results: (ACS is configured for 7 surveys with a
30 mSec ROC duration.)  I've gotten some survey results that don't seem
quite right.  Here are the survey results for 5 GHz (sorry for any silly
wrapping):

1358873457.934770: nl80211: Freq survey dump event  (freq=5180 MHz
noise=-88 channel_time=26 busy_time=0 tx_time=0 rx_time=0)
1358873457.964729: nl80211: Freq survey dump event  (freq=5200 MHz
noise=-89 channel_time=26 busy_time=2 tx_time=2 rx_time=0)
1358873457.994732: nl80211: Freq survey dump event  (freq=5220 MHz
noise=-89 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.024741: nl80211: Freq survey dump event  (freq=5240 MHz
noise=-87 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.054800: nl80211: Freq survey dump event  (freq=5745 MHz
noise=-88 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.084816: nl80211: Freq survey dump event  (freq=5765 MHz
noise=-87 channel_time=26 busy_time=2 tx_time=1 rx_time=0)
1358873458.111970: nl80211: Freq survey dump event  (freq=5785 MHz
noise=-80 channel_time=109723 busy_time=73415 tx_time=155741
rx_time=85709)
1358873458.144813: nl80211: Freq survey dump event  (freq=5805 MHz
noise=-80 channel_time=29 busy_time=13 tx_time=12 rx_time=0)
1358873458.174819: nl80211: Freq survey dump event  (freq=5825 MHz
noise=-80 channel_time=26 busy_time=2 tx_time=2 rx_time=0)
1358873458.204732: nl80211: Freq survey dump event  (freq=5180 MHz
noise=-90 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.234737: nl80211: Freq survey dump event  (freq=5200 MHz
noise=-89 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.264754: nl80211: Freq survey dump event  (freq=5220 MHz
noise=-89 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.294752: nl80211: Freq survey dump event  (freq=5240 MHz
noise=-90 channel_time=26 busy_time=0 tx_time=0 rx_time=0)
1358873458.324797: nl80211: Freq survey dump event  (freq=5745 MHz
noise=-88 channel_time=26 busy_time=0 tx_time=0 rx_time=0)
1358873458.354810: nl80211: Freq survey dump event  (freq=5765 MHz
noise=-87 channel_time=26 busy_time=3 tx_time=2 rx_time=0)
1358873458.381973: nl80211: Freq survey dump event  (freq=5785 MHz
noise=-80 channel_time=109766 busy_time=73448 tx_time=155757
rx_time=85709)
1358873458.414813: nl80211: Freq survey dump event  (freq=5805 MHz
noise=-80 channel_time=29 busy_time=12 tx_time=11 rx_time=0)
1358873458.444813: nl80211: Freq survey dump event  (freq=5825 MHz
noise=-80 channel_time=26 busy_time=3 tx_time=2 rx_time=0)
1358873458.474743: nl80211: Freq survey dump event  (freq=5180 MHz
noise=-90 channel_time=26 busy_time=2 tx_time=2 rx_time=0)
1358873458.504733: nl80211: Freq survey dump event  (freq=5200 MHz
noise=-90 channel_time=26 busy_time=2 tx_time=2 rx_time=0)
1358873458.534748: nl80211: Freq survey dump event  (freq=5220 MHz
noise=-88 channel_time=26 busy_time=2 tx_time=2 rx_time=0)
1358873458.564753: nl80211: Freq survey dump event  (freq=5240 MHz
noise=-89 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.594801: nl80211: Freq survey dump event  (freq=5745 MHz
noise=-88 channel_time=26 busy_time=0 tx_time=0 rx_time=0)
1358873458.624807: nl80211: Freq survey dump event  (freq=5765 MHz
noise=-87 channel_time=26 busy_time=4 tx_time=3 rx_time=0)
1358873458.651966: nl80211: Freq survey dump event  (freq=5785 MHz
noise=-80 channel_time=109809 busy_time=73480 tx_time=155772
rx_time=85709)
1358873458.684819: nl80211: Freq survey dump event  (freq=5805 MHz
noise=-80 channel_time=29 busy_time=6 tx_time=4 rx_time=0)
1358873458.714813: nl80211: Freq survey dump event  (freq=5825 MHz
noise=-80 channel_time=26 busy_time=11 tx_time=11 rx_time=0)
1358873458.744738: nl80211: Freq survey dump event  (freq=5180 MHz
noise=-88 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.774744: nl80211: Freq survey dump event  (freq=5200 MHz
noise=-91 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.804751: nl80211: Freq survey dump event  (freq=5220 MHz
noise=-89 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.834887: nl80211: Freq survey dump event  (freq=5240 MHz
noise=-87 channel_time=26 busy_time=0 tx_time=0 rx_time=0)
1358873458.862549: nl80211: Freq survey dump event  (freq=5745 MHz
noise=-88 channel_time=26 busy_time=1 tx_time=1 rx_time=0)
1358873458.892240: nl80211: Freq survey dump event  (freq=5765 MHz
noise=-87 channel_time=84933 busy_time=3 tx_time=2 rx_time=0)
1358873458.921971: nl80211: Freq survey dump event  (freq=5785 MHz
noise=-80 channel_time=109852 busy_time=73514 tx_time=155790
rx_time=85709)
1358873458.952248: nl80211: Freq survey dump event  (freq=5805 MHz
noise=-80 channel_time=84936 busy_time=8 tx_time=7 rx_time=0)
1358873458.982246: nl80211: Freq survey dump event  (freq=5825 MHz
noise=-80 channel_time=84933 busy_time=2 tx_time=2 rx_time=0)
1358873459.012124: nl80211: Freq survey dump event  (freq=5180 MHz
noise=-90 channel_time=84933 busy_time=1 tx_time=1 rx_time=0)
1358873459.042145: nl80211: Freq survey dump event  (freq=5200 MHz
noise=-90 channel_time=84933 busy_time=1 tx_time=1 rx_time=0)
1358873459.072140: nl80211: Freq survey dump event  (freq=5220 MHz
noise=-87 channel_time=84933 busy_time=0 tx_time=0 rx_time=0)
1358873459.102146: nl80211: Freq survey dump event  (freq=5240 MHz
noise=-89 channel_time=84933 busy_time=1 tx_time=1 rx_time=0)
1358873459.132229: nl80211: Freq survey dump event  (freq=5745 MHz
noise=-89 channel_time=84933 busy_time=0 tx_time=0 rx_time=0)
1358873459.162249: nl80211: Freq survey dump event  (freq=5765 MHz
noise=-87 channel_time=84933 busy_time=7 tx_time=4 rx_time=0)
1358873459.191958: nl80211: Freq survey dump event  (freq=5785 MHz
noise=-80 channel_time=109895 busy_time=73547 tx_time=155806
rx_time=85709)
1358873459.222252: nl80211: Freq survey dump event  (freq=5805 MHz
noise=-80 channel_time=84936 busy_time=5 tx_time=4 rx_time=0)
1358873459.252252: nl80211: Freq survey dump event  (freq=5825 MHz
noise=-80 channel_time=84933 busy_time=2 tx_time=2 rx_time=0)
1358873459.282117: nl80211: Freq survey dump event  (freq=5180 MHz
noise=-90 channel_time=84933 busy_time=1 tx_time=1 rx_time=0)
1358873459.312143: nl80211: Freq survey dump event  (freq=5200 MHz
noise=-88 channel_time=84933 busy_time=2 tx_time=2 rx_time=0)
1358873459.342144: nl80211: Freq survey dump event  (freq=5220 MHz
noise=-90 channel_time=84933 busy_time=2 tx_time=2 rx_time=0)
1358873459.372162: nl80211: Freq survey dump event  (freq=5240 MHz
noise=-89 channel_time=84933 busy_time=2 tx_time=2 rx_time=0)
1358873459.402225: nl80211: Freq survey dump event  (freq=5745 MHz
noise=-88 channel_time=84933 busy_time=0 tx_time=0 rx_time=0)
1358873459.432248: nl80211: Freq survey dump event  (freq=5765 MHz
noise=-87 channel_time=84933 busy_time=3 tx_time=2 rx_time=0)
1358873459.461961: nl80211: Freq survey dump event  (freq=5785 MHz
noise=-80 channel_time=109938 busy_time=73580 tx_time=155822
rx_time=85709)
1358873459.492246: nl80211: Freq survey dump event  (freq=5805 MHz
noise=-80 channel_time=84936 busy_time=6 tx_time=5 rx_time=0)
1358873459.522272: nl80211: Freq survey dump event  (freq=5825 MHz
noise=-80 channel_time=84933 busy_time=3 tx_time=3 rx_time=0)
1358873459.552132: nl80211: Freq survey dump event  (freq=5180 MHz
noise=-89 channel_time=84933 busy_time=4 tx_time=4 rx_time=0)
1358873459.582139: nl80211: Freq survey dump event  (freq=5200 MHz
noise=-90 channel_time=84933 busy_time=1 tx_time=1 rx_time=0)
1358873459.612149: nl80211: Freq survey dump event  (freq=5220 MHz
noise=-88 channel_time=84933 busy_time=1 tx_time=1 rx_time=0)
1358873459.642145: nl80211: Freq survey dump event  (freq=5240 MHz
noise=-87 channel_time=84933 busy_time=0 tx_time=0 rx_time=0)
1358873459.672228: nl80211: Freq survey dump event  (freq=5745 MHz
noise=-88 channel_time=84933 busy_time=1 tx_time=1 rx_time=0)
1358873459.702631: nl80211: Freq survey dump event  (freq=5765 MHz
noise=-87 channel_time=84933 busy_time=2 tx_time=1 rx_time=0)
1358873459.731962: nl80211: Freq survey dump event  (freq=5785 MHz
noise=-80 channel_time=109981 busy_time=73620 tx_time=155845
rx_time=85709)
1358873459.762254: nl80211: Freq survey dump event  (freq=5805 MHz
noise=-80 channel_time=84936 busy_time=8 tx_time=7 rx_time=0)
1358873459.792248: nl80211: Freq survey dump event  (freq=5825 MHz
noise=-80 channel_time=84933 busy_time=2 tx_time=2 rx_time=0)


Questions, queries, and puzzlers: The survey event-to-event timing looks
good, but...
1.	I would have expected channel_time to never exceed the config
file's acs_roc_duration_ms and yet there are numerous instances of some
seriously bogus times.  Is it reasonable to expect channel_time to be <=
acs_roc_duration_ms?
2.	What do huge values of channel_time indicate?
3.	I would have expected busy_time to also never exceed
acs_roc_duration_ms, but there it is again.  Is it reasonable to expect
busy_time to be <= acs_roc_duration_ms?
4.	What do huge values of busy_time indicate?
5.	There are surveys above where tx_time is far beyond
acs_roc_duration_ms and in some cases even larger than channel_time.
Shouldn't tx_time always be <= busy_time?
6.	There seem to be two rx_time values: 0 and impossible.  What
does a 0-valued rx_time indicate?

Certainly the completely bogus surveys would skew the channel's
interference factor, so I would think that some sanity checks should be
applied to a survey to determine if it's valid or not.  If I'm guessing
correctly about the relationship among the survey result components,
here's what I came up with:

acs.c::acs_chan_interference_factor(...)
...
dl_list_for_each(...)

      /* Look for some excuses to throw out this survey. */

      if( (survey->nf > 0.0) ||
          (survey->nf < -120.0) ||
          (survey->channel_time > SurveyDwellTime_ms) ||
          (survey->channel_time_busy > SurveyDwellTime_ms) ||
          (survey->channel_time_tx > SurveyDwellTime_ms) ||
          (survey->channel_time_busy > survey->channel_time) ||
          (survey->channel_time_tx > survey->channel_time_busy) )
        {

          wpa_printf( MSG_DEBUG, "--->> survey abandoned: "
                      "nf %d channel_time %lld busy_time %lld tx_time
%lld",
                      survey->nf,
                      survey->channel_time,
                      survey->channel_time_busy,
                      survey->channel_time_tx );

          continue;

        }   /* close if( ... */
...

where SurveyDwellTime_ms is acs_roc_duration_ms.  Comments?


(Part II to follow...)


Thanks,
Dave




This message is confidential to Prodea Systems, Inc unless otherwise indicated

or apparent from its nature. This message is directed to the intended recipient

only, who may be readily determined by the sender of this message and its

contents. If the reader of this message is not the intended recipient, or an

employee or agent responsible for delivering this message to the intended

recipient:(a)any dissemination or copying of this message is strictly

prohibited; and(b)immediately notify the sender by return message and destroy

any copies of this message in any form(electronic, paper or otherwise) that you

have.The delivery of this message and its information is neither intended to be

nor constitutes a disclosure or waiver of any trade secrets, intellectual

property, attorney work product, or attorney-client communications. The

authority of the individual sending this message to legally bind Prodea Systems 

is neither apparent nor implied,and must be independently verified.


More information about the HostAP mailing list