MT7621 (Archer C6 & EAP235) 802.11 FT & DHCP issues

Hi,

I have the following setup in my home:

  • 1x TP-Link Archer C6 v3 - 22.03.02
  • 1x TP-Link TL-SG105PE (stock firmware) - Just powering the EAP235-Wall devices
  • 2x TP-Link EAP 235-Wall - 22.03.02

Situation:
I have configured the C6 as the central device of the network, hosting the DHCP (IPv4 only). In total I host 3 different SSIDs spanned over all three APs utilizing also utilizing several VLANs. In general WiFi runs stable until I start moving within the house. FT/roaming apparently fails and after reconnecting it takes several minutes for a new DHCP lease to be established.
For the sake of simplicity only one radio (2.4 GHz), one SSID and one VLAN (VLAN ID 10) is relevant, as this is sufficient to reproduce the roaming issue. The roaming device is an iPhone in the logged case below. Notebooks also struggle roaming around.

Configuration:

C6: /etc/config/network:
config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option packet_steering '1'
        option ula_prefix 'fdda:dead:beef::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'

config interface 'lan'
        option proto 'static'
        option netmask '255.255.255.0'
        option ipaddr '10.0.10.1'
        option device 'br-lan.10'
        option delegate '0'

config bridge-vlan
        option device 'br-lan'
        option vlan '10'
        list ports 'lan1:u*'

C6: /etc/config/dhcp:
config dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option expandhosts '1'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
        option localservice '1'
        option ednspacket_max '1232'
        option local '/bub/'
        option domain 'bub'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv4 'server'
        list dhcp_option '6,10.0.20.100'
        option force '1'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'

C6: /etc/config/wireless
config wifi-device 'radio0'
        option type 'mac80211'
        option path '1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
        option channel '1'
        option band '2g'
        option htmode 'HT20'
        option cell_density '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0'
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option cell_density '0'

config wifi-iface 'wifinet0'
        option device 'radio0'
        option mode 'ap'
        option ssid 'Bub-Net'
        option key '******'
        option network 'lan'
        option ieee80211r '1'
        option ft_over_ds '0'
        option ft_psk_generate_local '1'
        option encryption 'psk2'
        option dtim_period '3'
        option mobility_domain '1111'
        option pmk_r1_push '1'

EAP235-1: /etc/config/network
config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option packet_steering '1'
        option ula_prefix 'fd15:c17c:ca22::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan0'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'

config interface 'lan'
        option proto 'dhcp'
        option device 'br-lan.10'
        option delegate '0'

config bridge-vlan
        option device 'br-lan'
        option vlan '10'
        list ports 'lan0:u*'
        list ports 'lan1:u*'
        list ports 'lan2:u*'

EAP235-1: /etc/config/wireless
config wifi-device 'radio0'
        option type 'mac80211'
        option path '1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
        option channel '1'
        option band '2g'
        option htmode 'HT20'
        option cell_density '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0'
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option cell_density '0'

config wifi-iface 'wifinet0'
        option device 'radio0'
        option mode 'ap'
        option ssid 'Bub-Net'
        option key '******'
        option network 'lan'
        option ieee80211r '1'
        option ft_over_ds '0'
        option ft_psk_generate_local '1'
        option encryption 'psk2'
        option dtim_period '3'
        option mobility_domain '1111'
        option pmk_r1_push '1'

Initial connection log:

EAP235-1 | Wed Mar 15 09:13:56 2023 daemon.notice hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: did not acknowledge authentication response
EAP235-1 | Wed Mar 15 09:13:56 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: associated (aid 4)
EAP235-1 | Wed Mar 15 09:13:56 2023 daemon.notice hostapd: wlan0: AP-STA-CONNECTED de:ad:be:ef:d3:3c
EAP235-1 | Wed Mar 15 09:13:56 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c WPA: pairwise key handshake completed (RSN)
EAP235-1 | Wed Mar 15 09:13:56 2023 daemon.notice hostapd: wlan0: EAPOL-4WAY-HS-COMPLETED de:ad:be:ef:d3:3c

C6 | Wed Mar 15 09:13:56 2023 daemon.info dnsmasq-dhcp[1]: DHCPDISCOVER(br-lan.10) de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:13:56 2023 daemon.info dnsmasq-dhcp[1]: DHCPOFFER(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:13:57 2023 daemon.info dnsmasq-dhcp[1]: DHCPREQUEST(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:13:57 2023 daemon.info dnsmasq-dhcp[1]: DHCPACK(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c xxx

Roam from EAP235-1 to C6:

EAP235-1 | Wed Mar 15 09:47:23 2023 daemon.notice hostapd: wlan0: AP-STA-DISCONNECTED de:ad:be:ef:d3:3c

C6 | Wed Mar 15 09:47:23 2023 daemon.err hostapd: nl80211: kernel reports: key addition failed
C6 | Wed Mar 15 09:47:23 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: associated (aid 1)
C6 | Wed Mar 15 09:47:23 2023 daemon.notice hostapd: wlan0: AP-STA-CONNECTED de:ad:be:ef:d3:3c

Roam from C6 to EAP235-1:

EAP235-1 | Wed Mar 15 09:49:32 2023 daemon.err hostapd: nl80211: kernel reports: key addition failed
EAP235-1 | Wed Mar 15 09:49:32 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: associated (aid 4)
EAP235-1 | Wed Mar 15 09:49:32 2023 daemon.notice hostapd: wlan0: AP-STA-CONNECTED de:ad:be:ef:d3:3c

C6 | Wed Mar 15 09:49:33 2023 daemon.info dnsmasq-dhcp[1]: DHCPREQUEST(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:49:33 2023 daemon.info dnsmasq-dhcp[1]: DHCPACK(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c xxx
C6 | Wed Mar 15 09:49:35 2023 daemon.info dnsmasq-dhcp[1]: DHCPREQUEST(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:49:35 2023 daemon.info dnsmasq-dhcp[1]: DHCPACK(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c xxx
C6 | Wed Mar 15 09:49:37 2023 daemon.info dnsmasq-dhcp[1]: DHCPREQUEST(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:49:37 2023 daemon.info dnsmasq-dhcp[1]: DHCPACK(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c xxx
C6 | Wed Mar 15 09:49:42 2023 daemon.info dnsmasq-dhcp[1]: DHCPDISCOVER(br-lan.10) de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:49:42 2023 daemon.info dnsmasq-dhcp[1]: DHCPOFFER(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
[...] 4 more repetitions
C6 | Wed Mar 15 09:50:02 2023 daemon.info dnsmasq-dhcp[1]: DHCPDISCOVER(br-lan.10) de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:50:02 2023 daemon.info dnsmasq-dhcp[1]: DHCPOFFER(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c

EAP235-1 | Wed Mar 15 09:50:02 2023 daemon.notice hostapd: wlan0: AP-STA-DISCONNECTED de:ad:be:ef:d3:3c
EAP235-1 | Wed Mar 15 09:50:02 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: disassociated
EAP235-1 | Wed Mar 15 09:50:03 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: authenticated
EAP235-1 | Wed Mar 15 09:50:03 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: associated (aid 4)
EAP235-1 | Wed Mar 15 09:50:03 2023 daemon.notice hostapd: wlan0: AP-STA-CONNECTED de:ad:be:ef:d3:3c
EAP235-1 | Wed Mar 15 09:50:03 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c WPA: pairwise key handshake completed (RSN)
EAP235-1 | Wed Mar 15 09:50:03 2023 daemon.notice hostapd: wlan0: EAPOL-4WAY-HS-COMPLETED de:ad:be:ef:d3:3c

C6 | Wed Mar 15 09:50:03 2023 daemon.info dnsmasq-dhcp[1]: DHCPDISCOVER(br-lan.10) de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:50:03 2023 daemon.info dnsmasq-dhcp[1]: DHCPOFFER(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
[...] 14 more repetitions
C6 | Wed Mar 15 09:52:35 2023 daemon.info dnsmasq-dhcp[1]: DHCPDISCOVER(br-lan.10) de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:52:35 2023 daemon.info dnsmasq-dhcp[1]: DHCPOFFER(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c

EAP235-1 | Wed Mar 15 09:52:36 2023 daemon.notice hostapd: wlan0: AP-STA-DISCONNECTED de:ad:be:ef:d3:3c
EAP235-1 | Wed Mar 15 09:52:36 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: disassociated
EAP235-1 | Wed Mar 15 09:52:37 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: authenticated
EAP235-1 | Wed Mar 15 09:52:37 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c IEEE 802.11: associated (aid 4)
EAP235-1 | Wed Mar 15 09:52:37 2023 daemon.notice hostapd: wlan0: AP-STA-CONNECTED de:ad:be:ef:d3:3c
EAP235-1 | Wed Mar 15 09:52:37 2023 daemon.info hostapd: wlan0: STA de:ad:be:ef:d3:3c WPA: pairwise key handshake completed (RSN)
EAP235-1 | Wed Mar 15 09:52:37 2023 daemon.notice hostapd: wlan0: EAPOL-4WAY-HS-COMPLETED de:ad:be:ef:d3:3c

C6 | Wed Mar 15 09:52:37 2023 daemon.info dnsmasq-dhcp[1]: DHCPDISCOVER(br-lan.10) de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:52:37 2023 daemon.info dnsmasq-dhcp[1]: DHCPOFFER(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
[...] 3 more repetitions
C6 | Wed Mar 15 09:52:53 2023 daemon.info dnsmasq-dhcp[1]: DHCPDISCOVER(br-lan.10) de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:52:53 2023 daemon.info dnsmasq-dhcp[1]: DHCPOFFER(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:52:54 2023 daemon.info dnsmasq-dhcp[1]: DHCPREQUEST(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c
C6 | Wed Mar 15 09:52:54 2023 daemon.info dnsmasq-dhcp[1]: DHCPACK(br-lan.10) 10.0.10.149 de:ad:be:ef:d3:3c xxx

I assume you see the FT+ as an attribute to your wifi, if you fire up some wifi analyzer on an Android device ?

Unfortunately, I don't have any Android device at hand. Are there other means to figure this out?

openwrt also has an option to analyze channels idk if that would work in ur case

@frollic Can you recommend any wifi analyzer app. I will try to borrow an Android phone to do the tests.

However, I assume that the attribute is set, as I found a Windows tool and it lists 802.11r for my wireless networks.

No idea, never tried it on Win.

This one works for me, remember you need to have GPS enabled for it to work, don't ask me why.

@Lyceris-chan thanks for the hint. In the end I figured out that the WiFi Analyzer mentioned by @frollic does actually present the output the cli tools could give you as well. Thus I just executed on one of the OpenWRT devices the following to get the details:

~# iw wlan0 scan
[...]
BSS de:ad:be:ef:7f:c0(on wlan0)
        last seen: 368800.364s [boottime]
        TSF: 31896539877 usec (0d, 08:51:36)
        freq: 2412
        beacon interval: 100 TUs
        capability: ESS (0x1431)
        signal: -80.00 dBm
        last seen: 1060 ms ago
        Information elements from Probe Response frame:
        SSID: Bub-Net
        RSN:     * Version: 1
                 * Group cipher: CCMP
                 * Pairwise ciphers: CCMP
                 * Authentication suites: PSK FT/PSK
                 * Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
        HT capabilities:
                Capabilities: 0x1ec
                        HT20
                        SM Power Save disabled
                        RX HT20 SGI
                        RX HT40 SGI
                        TX STBC
                        RX STBC 1-stream
                        Max AMSDU length: 3839 bytes
                        No DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: No restriction (0x00)
                HT TX/RX MCS rate indexes supported: 0-15
        HT operation:
                 * primary channel: 1
                 * secondary channel offset: no secondary
                 * STA channel width: 20 MHz

So yes, the Fast Transition is advertised. (Authentication suites: PSK FT/PSK)

As of now I think it is an issue with DHCP... I see the device switch APs quickly (also the four way handshake only being logged in the initial connect), immediately followed by the DHCPDISCOVER / DHCPREQUEST / DHCPACK loop. Any thoughts on this?

ain't good

That is just one of the multiple APs. The other has 60.00 dBm.
And that is AP to AP. Not what the user device sees.

Currently I'm looking into the DHCP packets using tcpdump and Wireshark. Something is realy odd there.

Situation:
Device is connected to AP1 (-> PoE Switch -> Router). Once the device roams to AP2 (-> PoE Switch -> Router) I can see the device (phone in this case) sending the DHCP Discover requests and the router replying with the DHCP Offer. However when looking at the tcpdump on the AP2 I can't see the DHCP Offer being transported to the phone or even shown on the log of the AP2.

I have conducted a factory reset and now it seems to be working. No clue what the root cause was.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.