Linux
wifi漫遊後發送延遲
我有一個需要大量無線漫遊的案例,我遇到了一個問題,即在漫遊約 1 秒後發送數據包有延遲,但我幾乎可以立即接收數據包(<100 毫秒)。
查看 netlink 流量,我可以看到請求者將介面設置為 IF_OPER_UP 並且它按預期返回 IF_UP。查看 tcpdump 我可以看到漫遊後發送流量存在間隙,並且發送流量在 ARP 請求/響應後恢復。我對linux網路不太熟悉,所以我有點迷失可能導致這種情況的原因。我認為 ARP 記憶體正在被清除,但我不知道這是原因還是症狀,甚至不知道漫遊中會發生什麼。
我嘗試了多個不同的核心版本,iwd 和 wpa_supplicant,以及 ubuntu 和 kali,都具有相同的結果。
最後,這似乎是從執行 4.15 核心的 ubuntu 16.04 升級後才開始的。
有誰知道我可以在哪裡查看以縮小正在發生的事情?有沒有其他人看到這個?
為了解決這個問題,問題是在核心 4.20 中引入了一項更改,該更改始終清除漫遊時的 ARP 記憶體,這反過來又導致了約 1 秒的發送延遲。
iwd 請求者在此處添加了一個更新檔以使用此新選項,這是修復的另一半: https ://git.kernel.org/pub/scm/network/wireless/iwd.git/commit/?id=873924a027ad2166436b8117a6bb84ce980ad7f3
commit 873924a027ad2166436b8117a6bb84ce980ad7f3 Author: James Prestwood <prestwoj@gmail.com> Date: Wed Nov 3 15:15:01 2021 -0700 station: set evict_nocarrier sysfs option during roaming If the kernel supports evict_nocarrier set this during the roam to prevent packet delays post roam.