무선 로밍이 많이 필요한 사용 사례가 있는데, 로밍 후 패킷 전송 시 약 1초의 지연이 발생하지만 거의 즉시(<100ms) 패킷을 수신할 수 있는 문제가 발생합니다.
netlink 트래픽을 보면 요청자가 인터페이스를 IF_OPER_UP으로 설정하고 예상대로 IF_UP을 반환하는 것을 볼 수 있습니다. tcpdump를 보면 로밍 후 전송 트래픽에 공백이 있고 ARP 요청/응답 후에 전송 트래픽이 재개되는 것을 볼 수 있습니다. 저는 Linux 네트워킹에 대해 잘 알지 못하기 때문에 이 문제의 원인이 무엇인지 잘 모르겠습니다. ARP 캐시가 지워지는 것 같은데 이것이 원인인지 증상인지, 로밍 중에 무슨 일이 일어나는지조차 모르겠습니다.
iwd와 wpa_supplicant, ubuntu와 kali 등 여러 다른 커널 버전을 시도했지만 모두 동일한 결과를 얻었습니다.
마지막으로 이는 4.15 커널을 실행하는 우분투 16.04에서 업그레이드한 이후 시작된 것으로 보입니다.
무슨 일이 일어나고 있는지 범위를 좁히기 위해 내가 옆에서 볼 수 있는 곳을 아는 사람이 있습니까? 이걸 보는 사람이 또 있나요?
답변1
이 문제를 해결하기 위해 로밍 시 항상 ARP 캐시를 지우는 변경 사항이 커널 4.20에 도입되어 ~1초의 전송 지연이 발생한다는 문제가 있습니다.
이 답변의 세부 사항 외에도 https://serverfault.com/questions/1083698/linux-what-causes-static-arp-entries-to-flush-on-link-down/1083762#1083762
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.