Skip to content
Snippets Groups Projects
README.md 8.87 KiB
Newer Older
  • Learn to ignore specific revisions
  • Sukru Senli's avatar
    Sukru Senli committed
    # MAP Controller
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    [Map-Controller](https://dev.iopsys.eu/iopsys/map-controller)
    
    
    ## Introduction
    
    This package provides the `mapcontroller` daemon, which is responsible for
    distributing wireless credentials, vlan configuration and more.
    
    ## Overview
    
    
    This README will show how to properly setup the mapcontroller configuration file
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    and trigger mapcontroller functionality.
    
    ## UCI Configuration
    
    
    A default configuration file which will propagate one fronthaul and one backhaul
    interface for the 5GHz and 2.4GHz bands respectively may look as such:
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    ```
    config controller 'controller'
    	option enabled '1'
    	option registrar '5 2'
    	option debug '0'
    
    	option enable_sta_steer '0'
    	option enable_bsta_steer '0'
    
    	option use_bcn_metrics '0'
    	option use_usta_metrics '0'
    
    	option primary_vid '1'
    	option primary_pcp '0'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    
    config interface 'lan'
    	option proto 'dhcp'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    
    config ap
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option band '5'
    
    	option ssid 'MAP-EC6C9A52B027-5GHz'
    	option encryption 'sae-mixed'
    	option vid '1'
    	option type 'fronthaul'
    	option network 'lan'
    	option key '7NTx-APvX-pba7-tvd7'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    
    config ap
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option band '2'
    
    	option ssid 'MAP-EC6C9A52B027-2.4GHz'
    	option encryption 'sae-mixed'
    	option vid '1'
    	option type 'fronthaul'
    	option network 'lan'
    	option key '7NTx-APvX-pba7-tvd7'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    
    config ap
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option band '5'
    
    	option ssid 'MAP-EC6C9A52B027-BH-5GHz'
    	option encryption 'sae'
    	option type 'backhaul'
    	option vid '1'
    	option network 'lan'
    	option key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    
    config ap
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option band '2'
    
    	option ssid 'MAP-EC6C9A52B027-BH-2.4GHz'
    	option encryption 'sae'
    	option type 'backhaul'
    	list disallow_bsta '0'
    	option vid '1'
    	option network 'lan'
    	option key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    
    config policy 'policy'
    	list steer_exclude '00:11:22:33:44:55'
    	list steer_exclude_btm '00:aa:bb:cc:dd:ee'
    	option steer_policy '2'
    	option util_threshold '200'
    	option rcpi_threshold '30'
    	option report_scan '0'
    	option report_sta_assocfails '1'
    	option report_sta_assocfails_rate '2'
    	option report_metric_periodic '0'
    	option report_rcpi_threshold '0'
    	option report_util_threshold '0'
    	option rcpi_hysteresis_margin '0'
    	option include_sta_stats '0'
    	option include_sta_metric '0'
    	option disallow_bsta_p1 '0'
    	option disallow_bsta_p2 '0'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    ```
    
    The important part of this configuration file is to properly setup the wireless
    credentials.
    
    
    ### Credentials
    
    The section `ap` holds the wireless credentials that will be passed to agents in
    the network, which will setup the local wireless configuration accordingly.
    
    
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    ### Fronthaul Credentials
    
    
    Fronthaul AP credentials are identified by `type 'fronthaul'`. In the wireless
    uci configuration, these are mapped to the option `multi_ap '2'`, which will
    be the APs that regular clients connect to.
    
    As such, the following mapagent sections will be correspodning to the respective
    wireless sections:
    
    ```
    config ap
    	option band '5'
    	option ssid 'MAP-EC6C9A52B027-5GHz'
    	option encryption 'sae-mixed'
    	option vid '1'
    	option type 'fronthaul'
    	option network 'lan'
    	option key '7NTx-APvX-pba7-tvd7'
    
    config ap
    	option band '2'
    	option ssid 'MAP-EC6C9A52B027-2.4GHz'
    	option encryption 'sae-mixed'
    	option vid '1'
    	option type 'fronthaul'
    	option network 'lan'
    	option key '7NTx-APvX-pba7-tvd7'
    ```
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    ```
    config wifi-iface 'wl1_ap'
    	option ifname 'wl1'
    	option network 'lan'
    
    	option ssid 'MAP-EC6C9A52B027-5GHz'
    	option key '7NTx-APvX-pba7-tvd7'
    	option encryption 'sae-mixed+aes'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option mode 'ap'
    	option device 'wl1'
    	option multi_ap '2'
    	option ieee80211k '1'
    	option ieee80211v '1'
    	option uuid 'cfa7df87-06a3-5daf-911f-44d4376af600'
    	option wps '1'
    	option wps_pushbutton '1'
    
    	option multi_ap_backhaul_ssid 'MAP-EC6C9A52B027-BH-5GHz'
    	option multi_ap_backhaul_key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    config wifi-iface 'wl0_ap'
    	option ifname 'wl0'
    	option network 'lan'
    
    	option ssid 'MAP-EC6C9A52B027-2.4GHz'
    	option key '7NTx-APvX-pba7-tvd7'
    	option encryption 'sae-mixed+aes'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option mode 'ap'
    	option device 'wl0'
    	option multi_ap '2'
    	option ieee80211k '1'
    	option ieee80211v '1'
    	option uuid 'cfa7df87-06a3-5daf-911f-44d4376af600'
    	option wps '1'
    	option wps_pushbutton '1'
    
    	option multi_ap_backhaul_ssid 'MAP-EC6C9A52B027-BH-2.4GHz'
    	option multi_ap_backhaul_key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    ```
    
    ### Backhaul Credentials
    
    
    Backhaul AP credentials are identified by `type 'backhaul'`. In the wireless
    uci configuration, these are mapped to the option `multi_ap '1'`, which will
    be the APs that backhaul STA clients will connect to, in a Multi-AP environment.
    
    The following mapagent sections will be correspodning to the respective
    wireless sections:
    
    ```
    config ap
    	option band '5'
    	option ssid 'MAP-EC6C9A52B027-BH-5GHz'
    	option encryption 'sae'
    	option type 'backhaul'
    	option vid '1'
    	option network 'lan'
    	option key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    
    config ap
    	option band '2'
    	option ssid 'MAP-EC6C9A52B027-BH-2.4GHz'
    	option encryption 'sae'
    	option type 'backhaul'
    	list disallow_bsta '0'
    	option vid '1'
    	option network 'lan'
    	option key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    ```
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    ```
    config wifi-iface 'wl1_1_ap'
    	option ifname 'wl1.1'
    	option network 'lan'
    
    	option ssid 'MAP-EC6C9A52B027-BH-5GHz'
    	option key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    	option encryption 'sae+aes'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option mode 'ap'
    	option device 'wl1'
    	option multi_ap '1'
    	option ieee80211k '1'
    	option ieee80211v '1'
    	option uuid 'cfa7df87-06a3-5daf-911f-44d4376af600'
    
    config wifi-iface 'wl0_1_ap'
    	option ifname 'wl0.1'
    	option network 'lan'
    
    	option ssid 'MAP-EC6C9A52B027-BH-2.4GHz'
    	option key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    	option encryption 'sae+aes'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option mode 'ap'
    	option device 'wl0'
    	option multi_ap '1'
    	option ieee80211k '1'
    	option ieee80211v '1'
    	option uuid 'cfa7df87-06a3-5daf-911f-44d4376af600'
    ```
    
    ### Combined Front/Back
    
    
    If combined fronthaul and backhaul interfaces are to be used, a `config ap`
    section with the option `type 'combined'` shall be provided:
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    ```
    
    config ap
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option band '5'
    
    	option ssid 'MAP-EC6C9A52B027-COMBINED-5GHz'
    	option encryption 'sae'
    	option type 'combined'
    	option vid '1'
    	option network 'lan'
    	option key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    ```
    
    
    In turn map-agent will create the interface with the option `multi_ap '3'`,
    meaning combined fronthaul/backhaul interface.
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    ```
    config wifi-iface 'wl0_ap'
    	option ifname 'wl0'
    	option network 'lan'
    
    	option ssid 'MAP-EC6C9A52B027-COMBINED-5GHz'
    	option key '0138a5f1b2bea4941be88001a55954ca228629eeaf51d66656893791a60bfed'
    	option encryption 'sae+aes'
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	option mode 'ap'
    	option device 'wl0'
    	option multi_ap '3'
    	option ieee80211k '1'
    	option ieee80211v '1'
    	option uuid 'cfa7df87-06a3-5daf-911f-44d4376af600'
    	option wps '1'
    	option wps_pushbutton '1'
    ```
    
    
    ## AP-Autoconfig Renew
    
    Autoconfig Renew will trigger all agents to be reconfigured with updated
    credentials.
    
    ### Prerequisites
    
    * Mapcontroller must be running
    
    ### How to Trigger
    
    Mapcontroller will re-read the mapcontroller network credentials (and vlan
    section) upon receiving `SIGHUP`. In order to trigger AP-Autoconfig Renew the
    mapcontroller credentials loaded in memory at runtime, must differ from what
    are in its config, causing mapcontroller to generate a AP-Autoconfig Renew for
    all agents to be reconfigured.
    
    
    ## uBus
    
    ```
    root@iopsys:~# ubus -v list map.controller
    
    'map.controller' @601d80a0
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"status":{}
    	"ap_caps":{"agent":"String"}
    	"sta_caps":{"agent":"String","sta":"String","bssid":"String"}
    
    	"channel_pref":{"agent":"String"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"bk_steer":{"agent":"String","bssid":"String","channel":"Integer","op_class":"Integer","bksta":"String"}
    	"agent_policy":{"agent":"String","radiolist":"Array","bsslist":"Array"}
    
    	"channel_select":{"agent":"String","radio_id":"String","class_id":"Integer","channel":"Array","preference":"Integer","transmit_power":"Integer"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"reconfig_ap":{"agent":"String"}
    
    	"steer":{"agent":"String","src_bssid":"String","sta":"Array","target_bssid":"Array","steer_timeout":"Integer","btm_timeout":"Integer","steer_req_mode":"Boolean"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"client_assoc_cntlr":{"agent":"String","bssid":"String","assoc_cntl_mode":"Integer","assoc_valid_timeout":"Integer","stalist":"Array"}
    	"ap_metric_query":{"agent":"String","bsslist":"Array","radiolist":"Array"}
    	"scan":{"agent":"String","radio":"Array","channel":"Array"}
    	"sta_metric_query":{"agent":"String","sta":"String"}
    
    	"unassoc_sta_lm_query":{"agent":"String","opclass":"Integer","metrics":"Array"}
    	"bcn_metrics_query":{"agent":"String","sta":"String","opclass":"Integer","channel":"Integer","bssid":"String","reporting_detail":"Integer","ssid":"String","channel_report":"Array","request_element":"Array"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"bk_caps":{"agent":"String"}
    	"topology_query":{"agent":"String"}
    
    	"cac_req":{"agent":"String","radiolist":"Array"}
    	"cac_term":{"agent":"String","radiolist":"Array"}
    	"higher_layer_data":{"agent":"String","protocol":"Integer","data":"String"}