2021-08-27 10:24:28

by Michael Johnson

[permalink] [raw]
Subject: Delay sending packets after a wireless roam

Hi all,

I'm having an odd issue with wireless roaming whereby any time I roam
from one access point to another I start receiving packets almost
instantly but experience a delay of roughly 1 second before I can send
packets out. I think I've narrowed it down to somewhere kernel related
but I'm struggling to know where to look next.

Firstly, I started seeing this delay after upgrading from Ubuntu 16.04
(so 4.15 kernel) to 20.04 (tested with 5.4, 5.8 and 5.11) but I also
tested this on Kali 2021.2 (5.10).
I see the delay with intel (iwlwifi), qualcomm (ath10k), and realtek cards.
I've also used both iwd and wpa_supplicant, with and without
systemd-networkd and NetworkManager.
I've been using ICMP for testing but I've also tried a python script
for sending udp packets with the same result.

Here is the output of the simplest test that still shows the issue
(ping + tcpdump + iwd + 5.11.0-27-generic):
https://pastebin.com/92TKKktb

My naive tl;dr of that data is:

30.322638 - we start to roam which falls between icmp_seq=121 and icmp_seq=122.
30.415411 - roam is complete
30.424277 - iwd is sending and receiving neighbor reports over the link
31.358491 - an ARP request is sent out (should the ARP cache be
cleared on a roam?)
31.367930 - ARP response
31.368009 - packets start being sent again as soon as we get the ARP response

Can anyone help me understand what might be happening between the
interface going "up" at 30.415411 and the ARP request at 31.358491
please?
Also, does anyone else see something in their environment?

Kind Regards,
Michael


2021-08-30 13:54:28

by Ben Greear

[permalink] [raw]
Subject: Re: Delay sending packets after a wireless roam

On 8/27/21 3:23 AM, Michael Johnson wrote:
> Hi all,
>
> I'm having an odd issue with wireless roaming whereby any time I roam
> from one access point to another I start receiving packets almost
> instantly but experience a delay of roughly 1 second before I can send
> packets out. I think I've narrowed it down to somewhere kernel related
> but I'm struggling to know where to look next.
>
> Firstly, I started seeing this delay after upgrading from Ubuntu 16.04
> (so 4.15 kernel) to 20.04 (tested with 5.4, 5.8 and 5.11) but I also
> tested this on Kali 2021.2 (5.10).
> I see the delay with intel (iwlwifi), qualcomm (ath10k), and realtek cards.
> I've also used both iwd and wpa_supplicant, with and without
> systemd-networkd and NetworkManager.
> I've been using ICMP for testing but I've also tried a python script
> for sending udp packets with the same result.
>
> Here is the output of the simplest test that still shows the issue
> (ping + tcpdump + iwd + 5.11.0-27-generic):
> https://pastebin.com/92TKKktb
>
> My naive tl;dr of that data is:
>
> 30.322638 - we start to roam which falls between icmp_seq=121 and icmp_seq=122.
> 30.415411 - roam is complete
> 30.424277 - iwd is sending and receiving neighbor reports over the link
> 31.358491 - an ARP request is sent out (should the ARP cache be
> cleared on a roam?)
> 31.367930 - ARP response
> 31.368009 - packets start being sent again as soon as we get the ARP response
>
> Can anyone help me understand what might be happening between the
> interface going "up" at 30.415411 and the ARP request at 31.358491
> please?
> Also, does anyone else see something in their environment?

I think ARP cache should be cleared on roam...I'm not sure how best to do that
though. wid/supplicant could make the call to clear as soon as roam happens?

Thanks,
Ben

--
Ben Greear <[email protected]>
Candela Technologies Inc http://www.candelatech.com