我有一台装有华硕 USB-AC58 无线适配器的 PC,运行 Manjaro,还有一台笔记本电脑,运行 Ubuntu。笔记本电脑配有英特尔 Wi-Fi 6 AX201 无线适配器,最高速度为 2.4 Gbits/s(我想,这是 2.4 和 5 Ghz 频段速度的总和),但我的 RT-AC65P 路由器仅支持最高 1300 Mbits/s 的 ac 标准。这三台设备均在 5GHz 模式下工作。
以下是一些速度测量:
- 下载 MS Visual Studio 2013.iso 映像 - 根据 Firefox,两种设备的下载速度均为 ~11.3 MB/s (94.3 Mbits/s)。而 100 Mbit/s 是互联网提供商的限制。
- iperf 测量:
PC 服务器,笔记本电脑客户端:
# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.50.100 port 5001 connected with 192.168.50.11 port 60118
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.2 sec 151 MBytes 124 Mbits/sec
笔记本服务器、PC客户端:
# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.50.11 port 5001 connected with 192.168.50.100 port 43284
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 252 MBytes 209 Mbits/sec
我的预期是看到 AC58 适配器允许的 867 Mbits/s。我误解了什么吗?为什么当 PC 和笔记本电脑更改服务器/客户端角色时会有 75 Mbits/s 的差异iperf
?
此外,我发现 Manjaro 针对 Asrock B450 Steel Legend 主板确定了奇怪的 USB 特性:
# lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
|__ Port 4: Dev 6, If 0, Class=Vendor Specific Class, Driver=rtl88x2bu, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
|__ Port 7: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
# lsusb -v -s 3:6
Bus 003 Device 006: ID 0b05:19aa ASUSTek Computer, Inc. ASUS USB-AC58 USB Wireless adapter
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10
...
看起来Dev 6
at Port 4
(应该是 Wi-Fi 适配器,因为它使用rtl88x2bu
驱动程序)使用 USB2,但它实际上连接到 USB3。我的主板只有 2 个 USB2 集线器,其中一个根本没有连接,第二个连接到 USB 鼠标。所有其他 USB 端口应为 USB3.1 gen1 或 gen2。无论如何,我的 Wi-Fi 速度甚至达不到 480 MB/s,USB2 支持什么。可能是 USB/芯片组驱动程序有问题?
答案1
我的 RT-AC65P 路由器仅支持高达 1300 Mbits/s 的 ac 标准。
在运行 iperf 之前,您应该检查每个接口的协商链路速率。在 Linux 上,运行 iperfiw wlan0 link
可查看当时的传输和接收速度。那,而不是包装盒上宣传的速度,这才是您确定 iperf 测量期望的基础。(另请参阅iw phy0 info
以获取实际硬件功能的摘要。)
例如,Wi-Fi 5 的最大速度只能通过 80 MHz(甚至可能是 160 MHz)宽的信道来实现。如果您的设备只能使用 40 MHz 宽的信道,那么您只能获得一半的速度。5 GHz 频段的优势不在于它本身就更快,而在于有更多空间用于更宽的信道(例如,80 MHz 信道实际上无法容纳在分配的 2.4 GHz 频段中)。
所显示的速度仍是原始 Wi-Fi 链接速率,而不是考虑 IP 标头等开销后获得的“有用”速率。预计实际 TCP 传输最多可达到链接速率的 75%(我刚刚编造的百分比)。
我有一台配备华硕 USB-AC58 无线适配器的电脑 [...] 笔记本电脑配备英特尔 Wi-Fi 6 AX201 无线适配器
最后,你提到两个都PC 和笔记本电脑通过 Wi-Fi 连接到同一个接入点,使用同一个信道。这会使你能达到的速度减半——不仅每个数据包必须经过两跳(PC→路由器→笔记本电脑),而且设备还必须轮流在“PC→路由器”发送一些数据,然后将其转发到“路由器→笔记本电脑”之间,以及只有那时再次发送更多数据“PC→路由器”。
为什么当 PC 和笔记本电脑为 iperf 改变服务器/客户端角色时,会有 75 Mbits/s 的差异?
区别不在于角色,而在于传输方向。默认情况下,iperf3 客户端是发送数据的客户端 - 因此实际上“笔记本电脑→PC”的速度为 124 Mbps,而“PC→笔记本电脑”的速度为 209 Mbps。
即使在稳定的条件下,Wi-Fi 速度不对称也是正常的 - 例如,设备可能支持接收 2 个流但不支持发送。
看起来端口 4 处的 Dev 6(由于使用 rtl88x2bu 驱动程序,因此应该是 Wi-Fi 适配器)使用 USB2,但它实际上连接到 USB3。
xHCI 控制器可以支持所有速度的 USB1.1/USB2 设备。只有较旧的主板使用配套控制器(同一端口被路由到 2.0 设备的 EHCI 或 3.0 设备的 xHCI),但大多数现代设备会将所有设备路由到同一个 xHCI 控制器,而不管它们协商的速度如何。
尝试lsusb.py以获得更美观的集线器及其设备列表。
无论如何,我的 Wi-Fi 速度甚至达不到 USB2 所支持的 480 MB/s。
这是 480 Mbps,而不是 480 MB/s,这也是 USB 链路的原始信号速率(也是基于数据包的)——实际最大数据速率最多为 420 Mbps,而 ~300 Mbps 更为现实。