我正在使用自定义 Linux 上的网络管理器的 D-Bus 接口,并尝试找到当前连接速度的合理估计值。
如果我查询当前连接的 AccessPoint 的 MaxBitrate 属性,我会得到大约 270Mbit/s:
$ busctl get-property org.freedesktop.NetworkManager "/org/freedesktop/NetworkManager/AccessPoint/170" org.freedesktop.NetworkManager.AccessPoint MaxBitrate
u 270000
但是,如果我查询 Wifi 设备的当前比特率属性,我会得到更高的 867Mbit/s:
$busctl --no-pager get-property org.freedesktop.NetworkManager "/org/freedesktop/NetworkManager/Devices/5" org.freedesktop.NetworkManager.Device.Wireless Bitrate
u 866700
根据描述,后者应该是正确的数字,但它高于最大值。这是怎么回事?
WPA_supplicant、NetworkManager 和 Intel Wifi 驱动程序之间是否存在交互,导致其报告最大速度而不是当前速度?MaxBitrate 是每个无线电链的数字吗?
答案1
NetworkManager 中 AccessPoint 对象的“MaxBitrate”属性是从 wpa_supplicant 接收的(根据信标中的信息)。据我所知,它只报告“传统”速率,并不试图考虑 802.11n(HT)以外的任何内容。
同时,“比特率”属性是通过 netlink 从实际网络接口驱动程序接收的(不确定 NM 是直接从内核获取还是通过 wpa_supplicant 获取),类似于iw wlan0 link
。