Home | History | Annotate | Download | only in hostapd
      1 hostapd, wpa_supplicant and the Multi-AP Specification
      2 ======================================================
      3 
      4 This document describes how hostapd and wpa_supplicant can be configured to
      5 support the Multi-AP Specification.
      6 
      7 Introduction to Multi-AP
      8 ------------------------
      9 
     10 The Wi-Fi Alliance Multi-AP Specification is the technical specification for
     11 Wi-Fi CERTIFIED EasyMesh(TM) [1], the Wi-Fi Alliance certification program for
     12 Multi-AP. It defines control protocols between Wi-Fi access points (APs) to
     13 join them into a network with centralized control and operation. It is targeted
     14 only at routers (repeaters, gateways, ...), not at clients. Clients are not
     15 involved at all in the protocols.
     16 
     17 Most of the Multi-AP specification falls outside of the scope of
     18 hostapd/wpa_supplicant. hostapd/wpa_supplicant is only involved for the items
     19 summarized below. The rest of the protocol must be implemented by a separate
     20 daemon, e.g., prplMesh [2]. That daemon also needs to communicate with hostapd,
     21 e.g., to get a list of associated clients, but this can be done using the normal
     22 hostapd interfaces.
     23 
     24 hostapd/wpa_supplicant needs to be configured specifically to support:
     25 - the WPS onboarding process;
     26 - configuring backhaul links.
     27 
     28 The text below refers to "Multi-AP Specification v1.0" [3].
     29 
     30 
     31 Fronthaul and backhaul links
     32 ----------------------------
     33 
     34 In a Multi-AP network, the central controller can configure the BSSs on the
     35 devices that are joined into the network. These are called fronthaul BSSs.
     36 From the point of view of hostapd, there is nothing special about these
     37 fronthaul BSSs.
     38 
     39 In addition to fronthaul BSSs, the controller can also configure backhaul
     40 links. A backhaul link is a link between two access point devices, giving
     41 internet access to access point devices that don't have a wired link. The
     42 Multi-AP specification doesn't dictate this, but typically the backhaul link
     43 will be bridged into a LAN together with (one of) the fronthaul BSS(s) and the
     44 wired Ethernet ports.
     45 
     46 A backhaul link must be treated specially by hostapd and wpa_supplicant. One
     47 side of the backhaul link is configured through the Multi-AP protocol as the
     48 "backhaul STA", i.e., the client side of the link. A backhaul STA is like any
     49 station and is handled appropriately by wpa_supplicant, but two additional
     50 features are required. It must send an additional information element in each
     51 (Re)Association Request frame ([3], section 5.2, paragraph 4). In addition, it
     52 must use 4-address mode for all frames sent over this link ([3], section 14).
     53 Therefore, wpa_supplicant must be configured explicitly as the backhaul STA
     54 role, by setting 'multi_ap_backhaul_sta=1' in the network configuration block
     55 or when configuring the network profile through the control interface. When
     56 'multi_ap_backhaul_sta=1', wpa_supplicant includes the Multi-AP IE in
     57 (Re)Association Request frame and verifies that it is included in the
     58 (Re)Association Response frame. If it is not, association fails. If it is,
     59 wpa_supplicant sets 4-address mode for this interface through a driver
     60 callback.
     61 
     62 The AP side of the backhaul link is called a "backhaul BSS". Such a BSS must
     63 be handled specially by hostapd, because it must add an additional information
     64 element in each (Re)Association Response frame, but only to stations that have
     65 identified themselves as backhaul stations ([3], section 5.2, paragraph 5-6).
     66 This is important because it is possible to use the same BSS and SSID for
     67 fronthaul and backhaul at the same time. The additional information element must
     68 only be used for frames sent to a backhaul STA, not to a normal STA. Also,
     69 frames sent to a backhaul STA must use 4-address mode, while frames sent to a
     70 normal STA (fronthaul, when it's a fronthaul and backhaul BSS) must use
     71 3-address mode.
     72 
     73 A BSS is configured in Multi-AP mode in hostapd by setting the 'multi_ap'
     74 configuration option to 1 (backhaul BSS), 2 (fronthaul BSS), or 3
     75 (simultaneous backhaul and fronthaul BSS). If this option is set, hostapd
     76 parses the Multi-AP information element in the Association Request frame. If the
     77 station is a backhaul STA and the BSS is configured as a backhaul BSS,
     78 hostapd sets up 4-address mode. Since there may be multiple stations connected
     79 simultaneously, and each of them has a different RA (receiver address), a VLAN
     80 is created for each backhaul STA and it is automatically added to a bridge.
     81 This is the same behavior as for WDS, and the relevant option ('bridge' or
     82 'wds_bridge') applies here as well.
     83 
     84 If 'multi_ap' is 1 (backhaul BSS only), any station that tries to associate
     85 without the Multi-AP information element will be denied.
     86 
     87 If 'multi_ap' is 2 (fronthaul BSS only), any station that tries to associate
     88 with the Multi-AP information element will be denied. That is also the only
     89 difference with 'multi_ap' set to 0: in the latter case, the Multi-AP
     90 information element is simply ignored.
     91 
     92 In summary, this is the end-to-end behavior for a backhaul BSS (i.e.,
     93 multi_ap_backhaul_sta=1 in wpa_supplicant on STA, and multi_ap=1 or 3 in
     94 hostapd on AP). Note that point 1 means that hostapd must not be configured
     95 with WPS support on the backhaul BSS (multi_ap=1). hostapd does not check for
     96 that.
     97 
     98 1. Backhaul BSS beacons do not advertise WPS support (other than that, nothing
     99    Multi-AP specific).
    100 2. STA sends Authentication frame (nothing Multi-AP specific).
    101 3. AP sends Authentication frame (nothing Multi-AP specific).
    102 4. STA sends Association Request frame with Multi-AP IE.
    103 5. AP sends Association Response frame with Multi-AP IE.
    104 6. STA and AP both use 4-address mode for Data frames.
    105 
    106 
    107 WPS support
    108 -----------
    109 
    110 WPS requires more special handling. WPS must only be advertised on fronthaul
    111 BSSs, not on backhaul BSSs, so WPS should not be enabled on a backhaul-only
    112 BSS in hostapd.conf. The WPS configuration purely works on the fronthaul BSS.
    113 When a WPS M1 message has an additional subelement that indicates a request for
    114 a Multi-AP backhaul link, hostapd must not respond with the normal fronthaul
    115 BSS credentials; instead, it should respond with the (potentially different)
    116 backhaul BSS credentials.
    117 
    118 To support this, hostapd has the 'multi_ap_backhaul_ssid',
    119 'multi_ap_backhaul_wpa_psk' and 'multi_ap_backhaul_wpa_passphrase' options.
    120 When these are set on an BSS with WPS, they are used instead of the normal
    121 credentials when hostapd receives a WPS M1 message with the Multi-AP IE. Only
    122 WPA2-Personal is supported in the Multi-AP specification, so there is no need
    123 to specify authentication or encryption options. For the backhaul credentials,
    124 per-device PSK is not supported.
    125 
    126 If the BSS is a simultaneous backhaul and fronthaul BSS, there is no need to
    127 specify the backhaul credentials, since the backhaul and fronthaul credentials
    128 are identical.
    129 
    130 To enable the Multi-AP backhaul STA feature when it performs WPS, a new
    131 parameter has been introduced to the WPS_PBC control interface call. When this
    132 "multi_ap=1" option is set, it adds the Multi-AP backhaul subelement to the
    133 Association Request frame and the M1 message. It then configures the new network
    134 profile with 'multi_ap_backhaul_sta=1'. Note that this means that if the AP does
    135 not follow the Multi-AP specification, wpa_supplicant will fail to associate.
    136 
    137 In summary, this is the end-to-end behavior for WPS of a backhaul link (i.e.,
    138 multi_ap=1 option is given in the wps_pbc call on the STA side, and multi_ap=2
    139 and multi_ap_backhaul_ssid and either multi_ap_backhaul_wpa_psk or
    140 multi_ap_backhaul_wpa_passphrase are set to the credentials of a backhaul BSS
    141 in hostapd on Registrar AP).
    142 
    143 1. Fronthaul BSS Beacon frames advertise WPS support (nothing Multi-AP
    144    specific).
    145 2. Enrollee sends Authentication frame (nothing Multi-AP specific).
    146 3. AP sends Authentication frame (nothing Multi-AP specific).
    147 4. Enrollee sends Association Request frame with Multi-AP IE.
    148 5. AP sends Association Response frame with Multi-AP IE.
    149 6. Enrollee sends M1 with additional Multi-AP subelement.
    150 7. AP sends M8 with backhaul instead of fronthaul credentials.
    151 8. Enrollee sends Deauthentication frame.
    152 
    153 
    154 References
    155 ----------
    156 
    157 [1] https://www.wi-fi.org/discover-wi-fi/wi-fi-easymesh
    158 [2] https://github.com/prplfoundation/prplMesh
    159 [3] https://www.wi-fi.org/file/multi-ap-specification-v10
    160     (requires registration)
    161