Code Monkey home page Code Monkey logo

dawn's Introduction

DAWN PICTURE

DAWN

DAWN is a decentralized controller for wi-fi clients (eg, laptops, phones) that aims to ensure that each client is connected to an access point (AP, aka "wifi router") that will give good network throughput. This reduces wastage of radio capacity due to weak / distant radio connections that cause transmission retry, degradation of speed, etc.

Decentralized means that DAWN is a peer-peer network of instances - there is no controlling "master" node. Every instance of DAWN will find its peers via uMDNS (aka Bonjour) network discovery. Further DAWN instances can therefore be added without explicit configuration of the whole network, reducing network maintenance overhead.

Installation and Configuration

Installing DAWN is quite simple. The TL;DR version for anyone not wanting to read the installation guide is:

  • Install DAWN on each AP that you want to be a part of the optimization network
  • Be sure to install a full wpad-* version and not wpad-basic
  • Be sure to configure extender routers as "dumb AP"

Top tip from the configuration guide:

  • Be sure to enable the DAWN functions that you want (at least "kicking")

How DAWN Works

Each DAWN instance gathers information about two types of client: those that are currently connected to the host AP, plus those querying whether to connect. It then shares that information with other DAWN instances. Each then has a view of how well any AP can "see" each client device, and that then allows DAWN to steer a client to a different AP when appropriate.

For example, if a device is currently connected to AP1 with a signal strength of -65dB it may be quite happy to stay there because many devices will not look to roam until the signal goes past -70dB (note the minus sign: -70dB is more negative / worse than -65dB). However, if DAWN on AP1 knows that the same device can see AP2 at a level of -55dB then DAWN can tell the device to switch to AP2, which will improve overall radio performance if applied to multiple devices across multiple AP.

DAWN can also evaluate other parameters that a device may not include in its roaming decisions, such as currently connected clients per AP, availability of speed enhancing capabilities, etc. However, it is ultimately for a client device to decide which AP it will connect to so it may ignore DAWN's proposal, especially if it is using a significantly different algorithm to DAWN.

DAWN works best with networks where AP and devices have 802.11k capabilities for discovering the quality of radio signals, plus 802.11v for requesting devices to move to a different AP. If 802.11r is enabled for fast, seamless transfer of a device across APs then it enhances the overall user experience, but DAWN doesn't directly use it.

802.11k/r/v were developed to enable the type of functionality that DAWN provides, so older devices that do not have these capabilities are by definition harder to control. DAWN will try to steer "legacy" devices if configured to do so, but it can be a less than perfect user experience due to the time taken to create connections to the new AP.

LuCI App

There is a luci app called luci-app-dawn that adds some DAWN information to the management interface of an OpenWrt device.

NB: As of early-2022 it hasn't had the developer attention it needs recently, so may not be working as well as you might like.

Developers

If you want to use versions of DAWN that are not fully packaged yet or to work on a fork of the code yourself then see the Developer Guide.

dawn's People

Contributors

blocktrron avatar cotequeiroz avatar dwmw2 avatar flole998 avatar galeksandrp avatar ian-clowes avatar imwhocodes avatar mmtj avatar neheb avatar polynomialdivision avatar ptpt52 avatar stintel avatar twy2010 avatar webknjaz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.