無線ローミングが多く必要なユースケースがありますが、ローミング後にパケットを送信すると約1秒の遅延が発生しますが、ほぼ直ちに(<100ms)パケットを受信できるという問題が発生します。
netlink トラフィックを見ると、リクエスタがインターフェイスを IF_OPER_UP に設定し、期待どおりに IF_UP を返すことがわかります。 tcpdumpを見ると、ローミング後にトランスポートトラフィックにスペースがあり、ARP要求/応答後にトランスポートトラフィックが再開されることがわかります。私はLinuxネットワーキングについてよく知らないので、この問題の原因は何であるかわかりません。 ARPキャッシュが消去されているようですが、これが原因なのか症状なのか、ローミング中に何が起こるのかわかりません。
iwdとwpa_supplicant、ubuntuとkaliなど、いくつかの異なるカーネルバージョンを試しましたが、すべて同じ結果を得ました。
最後に、これは4.15カーネルを実行しているUbuntu 16.04からアップグレードした後に開始されたようです。
何が起こっているのかを絞り込むために、私が隣で見ることができる場所を知っている人はいますか?これを見る人はまたいますか?
答え1
この問題を解決するために、ローミング時に常にARPキャッシュをクリアする変更がカーネル4.20に導入され、〜1秒の転送遅延が発生するという問題があります。
iwdリクエスタは、この新しいオプションを使用するためにここにパッチを追加しました。修正の残りの半分は次のとおりです。 https://git.kernel.org/pub/scm/network/wireless/iwd.git/commit/?id=873924a027ad2166436b8117a6bb84ce980ad7f3
commit 873924a027ad2166436b8117a6bb84ce980ad7f3
Author: James Prestwood <[email protected]>
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.