2020-06-29 18:36:21

by Markus Theil

[permalink] [raw]
Subject: RFC: Remote Off-Channel CAC for DFS

When using DFS channels, it would be nice, if I could dedicate a small
amount of interfaces only to CAC checking channels and set them
available or unavailable on multiple other remote APs/Mesh Points in
order to use them, when switching to lower utilized channels without
going through a full CAC.

Whats the opinion on the mailing list about adding a new command to
nl80211 in order to set the DFS state of a currently not used channel
after a Off-Channel CAC on another device nearby, but not on the same
host? The parameters would roughly be the same as for a channel switch
and an additional DFS channel state. Internally, I would trigger the DFS
state sync code between multiple interfaces.

Please note, that a malicious user, can misuse this and circumvent the
initial CAC, but this possibility is always there by patching the kernel
and all distribution kernels I'm aware off, are compiled without DFS
support configured. Therefore a malicious user has already put in some
energy and knows what he has to do. In my opinion this is therefore
negligible.

Regards,
Markus


2020-06-29 19:36:17

by Johannes Berg

[permalink] [raw]
Subject: Re: RFC: Remote Off-Channel CAC for DFS

Hi,

On Mon, 2020-06-29 at 19:40 +0200, Markus Theil wrote:
> When using DFS channels, it would be nice, if I could dedicate a small
> amount of interfaces only to CAC checking channels and set them
> available or unavailable on multiple other remote APs/Mesh Points in
> order to use them, when switching to lower utilized channels without
> going through a full CAC.
>
> Whats the opinion on the mailing list about adding a new command to
> nl80211 in order to set the DFS state of a currently not used channel
> after a Off-Channel CAC on another device nearby, but not on the same
> host? The parameters would roughly be the same as for a channel switch
> and an additional DFS channel state. Internally, I would trigger the DFS
> state sync code between multiple interfaces.

But wait, don't we already sync this within the kernel?

johannes

2020-06-29 20:00:59

by Markus Theil

[permalink] [raw]
Subject: Re: RFC: Remote Off-Channel CAC for DFS

On 6/29/20 9:35 PM, Johannes Berg wrote:
> Hi,
>
> On Mon, 2020-06-29 at 19:40 +0200, Markus Theil wrote:
>> When using DFS channels, it would be nice, if I could dedicate a small
>> amount of interfaces only to CAC checking channels and set them
>> available or unavailable on multiple other remote APs/Mesh Points in
>> order to use them, when switching to lower utilized channels without
>> going through a full CAC.
>>
>> Whats the opinion on the mailing list about adding a new command to
>> nl80211 in order to set the DFS state of a currently not used channel
>> after a Off-Channel CAC on another device nearby, but not on the same
>> host? The parameters would roughly be the same as for a channel switch
>> and an additional DFS channel state. Internally, I would trigger the DFS
>> state sync code between multiple interfaces.
> But wait, don't we already sync this within the kernel?
Yes, the kernel already syncs this between interfaces on the same host.
I'd just like to sync between multiple hosts, in order to make use of
fast switches to other DFS channels in a mesh network (in my case), if
some other node nearby already had performed a DFS CAC of a particular
channel and sync this state between hosts.
> johannes
>

2020-06-30 06:08:32

by John Crispin

[permalink] [raw]
Subject: Re: RFC: Remote Off-Channel CAC for DFS


On 29.06.20 22:00, Markus Theil wrote:
> On 6/29/20 9:35 PM, Johannes Berg wrote:
>> Hi,
>>
>> On Mon, 2020-06-29 at 19:40 +0200, Markus Theil wrote:
>>> When using DFS channels, it would be nice, if I could dedicate a small
>>> amount of interfaces only to CAC checking channels and set them
>>> available or unavailable on multiple other remote APs/Mesh Points in
>>> order to use them, when switching to lower utilized channels without
>>> going through a full CAC.
>>>
>>> Whats the opinion on the mailing list about adding a new command to
>>> nl80211 in order to set the DFS state of a currently not used channel
>>> after a Off-Channel CAC on another device nearby, but not on the same
>>> host? The parameters would roughly be the same as for a channel switch
>>> and an additional DFS channel state. Internally, I would trigger the DFS
>>> state sync code between multiple interfaces.
>> But wait, don't we already sync this within the kernel?
> Yes, the kernel already syncs this between interfaces on the same host.
> I'd just like to sync between multiple hosts, in order to make use of
> fast switches to other DFS channels in a mesh network (in my case), if
> some other node nearby already had performed a DFS CAC of a particular
> channel and sync this state between hosts.

This might work on ETSI but certainly not on FCC. With the latest
changes in regulation zero wait dfs is de-facto no longer possible in
the FCC domain. the BSS is expected in FCC to do CAC and then has a 2s
grace period to start transmitting on said channel. If it fails to do so
the kernel will automatically switch the channel back to usable.

That being said, even in ETSI a distributed non-occupancy list is
questionable as the BSSs might be quite far apart in your mesh and one
APs CAC might not produce the same as another.

In the ETSI domain the best thing to do is trigger 4 wideband scans on
boot. this will cost you 4 minutes but the channels will then be free
forever, until you detect a radar pulse.

    John