DAWN – Final Post

So did I achieve my aims with DAWN?

GSOC Aims

  1. Simple Installation
  2. All patches Upstream
  3. Configuration of the nodes should be simplified
  4. Visualize the information of the participating nodes
  5. Improve the controller functionality by adding mechanisms like a channel interference detection and other useful features

1 and 2:


Everything is upstream!
All hostapd patches are merged. I even added some patch that extending the hostapd ubus functionality.
The iwinfo patches are merged too. But actually the patch from the other guy was merged that contained my patch #1210.
You can now simply add the feed and compile DAWN.

3 and 4:

I added a luci app called luci-app-dawn, there you can configure the daemon. If you do this, the daemon configuration is send to all participating nodes. So you don’t have to change the config on every node.
Furthermore, you can see in the App all participating WiFi Clients in the network and the corresponding WiFi AP. Furthermore, you can see the Hearing Map for every Client.

 

5:

So I’m still refactoring my code. Some code snippets are ugly. :/
I read stuff about 802.11k and 802.11v.
802.11v is very interesting for DAWN. It would allow DAWN a better handover for the clients. Instead of disassociating the client, the client can be guided to the next AP using a BSS Transition Management Request frame format.
This request can be sent by an AP or station (?) in response to a BSS Transition Managment Query frame or autonomously.

I want to send this request autonomously instead of disassociate clients if they support 802.11v.
For that I would set a the Disassociation Timer (the time after the AP disassicates the client if it’s not roaming to another AP) and add another AP as a candidate. Furthermore I should enable 802.11r for fast roaming…
If you want to play around with 802.11v you need a full hostapd installation and enable bss transition in the hostapd config.

bss_transition=1

The stations sends in the association frame if it supports bss transition when associating with an AP.
My plan is to extend the hostapd ubus call get_clients with the information like it’s already done with the 802.11k flags.
After this I need a new ubus call in which I build such a BSS Transition Management Request like it’s done in the neighbor reports ubus call.
I found a patch on a mailing list that adds a function to build such a bss transition frame in an easy way.

wnm_send_bss_tm_req2

Sadly, it was never merged. 80211v implementation can be found in the hostapd.

Furthermore, I could use 802.11k for asking a client to report which APs he can see. This is a better approach as collecting all the probe entries. The hearing map is very problematic, because clients are not continuously scanning the background (or they don’t scan at all). Furthermore a client can move around. Typically questions are, how long such a probe entry can be seen as valid. If the time span a probe request is seen as valid is set to big and the clients moves around, he can not leave the AP although the RSSI is very bad. (and a bad rssi is the worst thing you can have!) A bad RSSI can trigger the internal client roaming algorithm and the client tries always to roam to another AP and gets denied because there is already a hearing map entry with a very good rssi. But this entry is not valid anymore, because the client moved very fast.

My Merged Pull Requests:

My Open Pull  Requests:

My Declined Pull Requests:

9 thoughts on “DAWN – Final Post

  1. hi!
    congratulations for a great project… I’m anxious to try it.
    i’m part of the LibreMesh.org and LibreRouter.org project
    I’m particularly interested in the handover between routers. Would love to see an implementation that instead of trusting in a centralized manager, the router can talk with each other (through batman’s alfred or bmx sms plugin) to sync this decisions.
    Thanks!

  2. My name is Bruno D’Ambrosio. Congratulations on the DAWN project. I am writing to you because I would like to ask you some help. I can not compile your software with the openwrt / lede compiler. Could you help me ? Do you already have a package of lights-app-dawn.ipk and dawn.ipk?

    Best Regard
    Bruno D’Ambrosio

  3. Hello Mr Nick
    Thank you for answering my question.
    This is the error that appears when I compile your software:

    [ 7%] Building C object src/CMakeFiles/dawn.dir/utils/dawn_iwinfo.c.o
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c: In function ‘get_expected_throughput’:
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c:237:21: error: ‘struct iwinfo_assoclist_entry’ has no member named ‘thr’
    return e->thr;
    ^
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c: In function ‘get_channel_utilization’:
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c:293:11: error: ‘const struct iwinfo_ops’ has no member named ‘survey’
    if (iw->survey(ifname, buf, &len))
    ^
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c:304:49: error: invalid application of ‘sizeof’ to incomplete type ‘struct iwinfo_survey_entry’
    for (int i = 0, x = 1; i < len; i += sizeof(struct iwinfo_survey_entry), x++)
    ^
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c:304:76: error: left-hand operand of comma expression has no effect [-Werror=unused-value]
    for (int i = 0, x = 1; i mhz == freq)
    ^
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c: At top level:
    cc1: error: unrecognized command line option ‘-Wno-format-truncation’ [-Werror]
    cc1: error: unrecognized command line option ‘-Wno-unknown-warning-option’ [-Werror]
    cc1: all warnings being treated as errors
    src/CMakeFiles/dawn.dir/build.make:302: recipe for target ‘src/CMakeFiles/dawn.dir/utils/dawn_iwinfo.c.o’ failed
    make[6]: *** [src/CMakeFiles/dawn.dir/utils/dawn_iwinfo.c.o] Error 1
    make[6]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf’
    CMakeFiles/Makefile2:85: recipe for target ‘src/CMakeFiles/dawn.dir/all’ failed
    make[5]: *** [src/CMakeFiles/dawn.dir/all] Error 2
    make[5]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf’
    Makefile:127: recipe for target ‘all’ failed
    make[4]: *** [all] Error 2
    make[4]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf’
    Makefile:43: recipe for target ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/.built’ failed
    make[3]: *** [/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/.built] Error 2
    make[3]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/package/utils/bowl-feed-master/dawn’
    package/Makefile:105: recipe for target ‘package/utils/bowl-feed-master/dawn/compile’ failed
    make[2]: *** [package/utils/bowl-feed-master/dawn/compile] Error 2
    make[2]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler’
    package/Makefile:101: recipe for target ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/staging_dir/target-mips_24kc_musl-1.1.16/stamp/.package_compile’ failed
    make[1]: *** [/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/staging_dir/target-mips_24kc_musl-1.1.16/stamp/.package_compile] Error 2
    make[1]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler’
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/include/toplevel.mk:198: set di istruzioni per l’obiettivo “world” non riuscito
    make: *** [world] Errore 2
    root@compiler:/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler# su – root
    cmake version 3.9.1-1

  4. Hello Mr Nick Power
    Thank you for answering my question. This is the error that appears when I complete your software:

    [ 7%] Building C object src/CMakeFiles/dawn.dir/utils/dawn_iwinfo.c.o
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c: In function ‘get_expected_throughput’:
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c:237:21: error: ‘struct iwinfo_assoclist_entry’ has no member named ‘thr’
    return e->thr;
    ^
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c: In function ‘get_channel_utilization’:
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c:293:11: error: ‘const struct iwinfo_ops’ has no member named ‘survey’
    if (iw->survey(ifname, buf, &len))
    ^
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c:304:49: error: invalid application of ‘sizeof’ to incomplete type ‘struct iwinfo_survey_entry’
    for (int i = 0, x = 1; i < len; i += sizeof(struct iwinfo_survey_entry), x++)
    ^
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c:304:76: error: left-hand operand of comma expression has no effect [-Werror=unused-value]
    for (int i = 0, x = 1; i mhz == freq)
    ^
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/src/utils/dawn_iwinfo.c: At top level:
    cc1: error: unrecognized command line option ‘-Wno-format-truncation’ [-Werror]
    cc1: error: unrecognized command line option ‘-Wno-unknown-warning-option’ [-Werror]
    cc1: all warnings being treated as errors
    src/CMakeFiles/dawn.dir/build.make:302: recipe for target ‘src/CMakeFiles/dawn.dir/utils/dawn_iwinfo.c.o’ failed
    make[6]: *** [src/CMakeFiles/dawn.dir/utils/dawn_iwinfo.c.o] Error 1
    make[6]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf’
    CMakeFiles/Makefile2:85: recipe for target ‘src/CMakeFiles/dawn.dir/all’ failed
    make[5]: *** [src/CMakeFiles/dawn.dir/all] Error 2
    make[5]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf’
    Makefile:127: recipe for target ‘all’ failed
    make[4]: *** [all] Error 2
    make[4]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf’
    Makefile:43: recipe for target ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/.built’ failed
    make[3]: *** [/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/build_dir/target-mips_24kc_musl-1.1.16/dawn-e045ccaf/.built] Error 2
    make[3]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/package/utils/bowl-feed-master/dawn’
    package/Makefile:105: recipe for target ‘package/utils/bowl-feed-master/dawn/compile’ failed
    make[2]: *** [package/utils/bowl-feed-master/dawn/compile] Error 2
    make[2]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler’
    package/Makefile:101: recipe for target ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/staging_dir/target-mips_24kc_musl-1.1.16/stamp/.package_compile’ failed
    make[1]: *** [/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/staging_dir/target-mips_24kc_musl-1.1.16/stamp/.package_compile] Error 2
    make[1]: Leaving directory ‘/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler’
    /OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler/include/toplevel.mk:198: set di istruzioni per l’obiettivo “world” non riuscito
    make: *** [world] Errore 2
    root@compiler:/OpenWrt/Buildroot-Openwrt-Stable-Lede-v17.1.4-Compiler# su – root
    cmake version 3.9.1-1

  5. Hello Mr Nick

    Have you seen the error that appears when I try to compile your software? Can you help me to understand why I can not complete your software?

    Best Regard
    Bruno D’Ambrosio

  6. Hello Mr Nick

    Can you give me some help on the error I wrote in previous posts?

    Best Regard
    Bruno D’Ambrosio

  7. Hello Mr Nick

    I installed your DAWN software, it was just a problem with iwinfo (I used an old version).
    The software is beautiful, congratulations.
    Now I have only a couple of questions to ask you:

    Does the software balance users’ loads?
    Does the software check the radio channels?
    Does the software check the radio powers (dBm)?
    Can the software manage interference?

    Best Regard
    Bruno D’Ambrosio

Leave a Reply

Your email address will not be published. Required fields are marked *