网络设置
- STA 是 Ubuntu 18.04(4.15.0-147-generic)
- 2 个英特尔 7620
- 每个接口连接到同一子网中的不同AP
- STA 使用 gstreamer 通过 UDP (~15Mbits/s) 传输 1080p 视频
- 视频仅通过 WiFi 一个接口进行传输,所有其他流量均使用有线连接
问题
我控制哪个 WiFi 接口使用静态路由将视频流传输到每个接口的接收管道
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
<receiver IP> _gateway 255.255.255.255 UGH 99 0 0 wlp1s0
<receiver IP> _gateway 255.255.255.255 UGH 100 0 0 wlp2s0
在上述场景中,流量通过 进行路由wlp1s0
。当我删除 的路由时wlp1s0
,我看到iftop
流量随后被发送过来wlp2s0
。
我注意到,如果我通过尚未使用的连接重新路由视频流量,则会出现一个问题,表现为视频接收管道上丢失/延迟一两个帧。以上述场景为例,我首先对两个接口进行身份验证、关联并完成 4 次握手,但 的路由的wlp1s0
度量值低于wlp2s0
,因此尚未发送任何数据包wlp2s0
。当我删除 的路线时wlp1s0
,视频中出现一个非常短的闪点,然后一切恢复正常。
奇怪的是,当我在视频中遇到这个问题并保持连接到相同的 AP 后,我可以wlp1s0
重复添加和删除路由,而对视频绝对没有明显影响。我已经验证过iftop
,我可以翻转哪个接口处于活动状态,并且对视频质量没有任何影响。
我看过的东西
我已wpa_supplicant
以最高详细程度手动运行,并且没有相关错误/警告。我还查看了 AP 控制器日志,那里没有报告任何错误/警告。当我在视频中引发光点时使用sudo tcpdump -c 10000 -n -B 10240 -i wlp1s0
也没有报告任何问题。
我还可以看什么来诊断和解决这个问题?
更新
wlp1s0
我创建了一个 cgroup,其中包含新的路由表和通往视频管道目标的静态路由。我观察到,如果我wlp1s0
使用以下方式推动流量
cgexec -g net_cls:cg1 iperf3 -c <receiver IP> -p 1234 -u -b 10M
就在我将路线添加wlp1s0
到默认表之前,视频中没有任何斑点。我想这意味着视频中的 blips 来自陈旧的 arp 缓存?