首页 / 资讯中心 / 文章详情

无线网卡选型与WiFi性能评估:从总线驱动到iperf3实测

无线网卡选型与WiFi性能评估:从总线驱动到iperf3实测 ★ FEATURED ARTICLE
1. 无线网卡选型前的三个硬约束先想清楚再掏钱无线网卡这个品类参数表看着都差不多实际用起来差别能到三倍以上。我这些年帮人排查过的网络问题里超过一半不是路由器不行而是网卡这一环卡住了脖子。所谓WIFI 功能使用方法及性能评估说白了就是两件事第一把这块网卡的能力完整释放出来别让它跑在半残状态第二用可复现的方法测出它在你环境里的真实表现而不是靠感觉挺快下结论。这篇内容适合三类人想给自己台式机加一块无线网卡但不知道选哪种的已经装上但怀疑速率不对劲的以及需要给一批设备做网络验收、得拿出数据说话的。下面我从形态、驱动、参数、测试、排查五个层面把这块东西拆开讲透。1.1 三种形态对应三条总线总线先决定天花板无线网卡按物理形态基本分三类很多人只盯着标称速率 1200M、3000M这类数字忽略了它挂在哪条总线上——总线才是真正的天花板。形态典型总线理论带宽实际瓶颈适合场景USB 外置USB 2.0480 Mbps实测 TCP 约 250–320 Mbps临时补网、老机器救急USB 外置USB 3.0/3.25 Gbps基本不构成瓶颈台式机/笔记本通用优先选M.2 内置PCIe x1A/E Key约 8 Gbps不构成瓶颈笔记本内置升级、小型主机PCIe 插卡PCIe x1约 8 Gbps不构成瓶颈台式机长期使用天线可外接这张表里最容易被忽略的是第一行。市面上大量AC1200级别的 USB 网卡芯片本身支持 867 Mbps 的 5G 速率但板子上走的是 USB 2.0 接口物理层就锁死在 480 Mbps再扣掉协议开销实测能到 300 Mbps 就算不错。我见过有人买回来测出 280 Mbps转头去骂路由器其实问题出在接口上——这类网卡插在 USB 3.0 口上也不会变快因为网卡端的控制器就是 2.0 的。所以选型顺序应该是先看总线再看协议代际最后才看标称速率。标称速率是 PHY 层理论值含前导码、帧间隔、ACK、管理帧开销实际 TCP 吞吐通常只有它的 45%–60%。这个换算关系后面会专门算一遍。还有一个隐性约束是供电与散热。USB 网卡在高负载持续传输时芯片温度上来后会降速保护尤其是体积小、没有散热片的那种 mini 款。连续跑十分钟测速前后两次数值差 15% 以上八成就是热降频。1.2 芯片方案和驱动生态比参数表更值得研究同一颗芯片配不同的驱动表现可以差出一个档位。这里我不点名具体厂商只说判断方法拿到一款网卡先查它用的芯片方案属于哪一家、这颗芯片在开源驱动里的支持成熟度如何。成熟方案的特征是——系统装完免驱或者一次装好就不再折腾Linux 内核主线自带驱动社区里能搜到大量同款问题的讨论。反过来一些低成本方案的特征就很明显只提供 Windows 驱动版本号停在好几年前Linux 下要么没有驱动要么只能用兼容层勉强跑功能残缺比如不支持监听模式、不支持 5G 高带宽。这类网卡拿来上网没问题但你要做网络测试、抓包分析、软 AP 之类的事情就会处处碰壁。我一般的判断流程是这样的三步走五分钟能出结论查硬件 ID。Windows 下打开设备管理器找到网络适配器右键属性 → 详细信息 → 硬件 ID会看到形如USB\VID_XXXXPID_XXXX或PCI\VEN_XXXXDEV_XXXX的字符串。VID 是厂商编号PID 是产品编号拿这两个号去搜能查到大量同芯片设备的讨论。看驱动日期和签名。驱动详情里如果日期是三年前的且没有数字签名更新记录说明这颗芯片已经进入维护停滞期。查系统原生支持。Linux 下一条lspci -nn或lsusb就能看到芯片型号然后对照内核文档看驱动是否在主线上。注意不要迷信免驱三个字。所谓免驱通常是网卡内置了一小块存储插上后系统把它识别成一个 U 盘自动运行里面的安装程序。这个过程在部分安全策略较严的系统上会被拦截而且内置的那份驱动往往是最老的版本。装完务必去查一次实际驱动版本别停在出厂版本上。2. WiFi 功能真正用起来从识别到连通的完整链路很多人对用起来的定义就是能上网这太低了。一块无线网卡的能力至少包括连上某个 APSTA 模式、把自己变成热点AP 模式、抓取空口数据监听模式、以及在多 AP 环境里平滑切换漫游。这几项能力是否可用取决于驱动和系统不取决于网卡包装盒上写了什么。这一章按顺序把这条链路走一遍。2.1 硬件识别与驱动落地别急着点下一步Windows 下的安装流程没什么好说的但有三个动作必须在装完之后立刻做否则后面所有测试数据都不可信。第一关掉电源管理里的省电选项。路径是设备管理器 → 网络适配器 → 你的网卡 → 属性 → 电源管理取消勾选允许计算机关闭此设备以节约电源。这一项开着的时候系统会在空闲时给网卡降功率表现为间歇性延迟飙高、偶发断流。我遇到过一台机器ping 网关每隔二十几秒就跳一次 200ms查了半天最后就是这一项。第二把高级选项里的性能相关参数调到最高。网卡属性 → 高级常见的几项包括发射功率调到最高、漫游积极性调低避免在信号还行的时候乱切、2.4G/5G 偏好按需设置、以及一些厂商自定义的省电档位。不同驱动暴露的选项名不一样原则是凡是带 Power Save、节能、低功耗 字样的一律关掉。第三确认协商速率。Windows 下用netsh wlan show interfaces看当前连接的收发速率Linux 下用iw dev wlan0 link。# Linux查看当前连接状态、信号强度、协商速率 iw dev wlan0 link # 查看网卡支持的全部频段、信道与能力位 iw phy phy0 info # 关闭省电模式立即生效重启失效 sudo iw dev wlan0 set power_save off# Windows查看无线接口的详细状态 netsh wlan show interfaces # 查看已保存的配置文件与历史连接记录 netsh wlan show profilesiw phy这条命令输出的信息量很大值得逐段看一遍。它会列出这块网卡支持的每个频段、每个信道、每种带宽20/40/80/160MHz、以及支持的 MCS 表和空间流数。这才是网卡的真实能力清单比包装盒准确得多。比如你想确认一块网卡到底支不支持 160MHz直接看这里有没有 160MHz 的信道条目一目了然。2.2 频段、信道、带宽三个必须手动确认的参数这三个参数决定了你的实际速率上限而系统默认值经常不是最优的。频段选择。2.4G 的优势是穿墙劣势是拥塞。2.4G 只有 13 个信道且互不重叠的只有 1、6、11 三个国内标准下这个结论依然成立。一栋楼里几十个 AP 全挤在这三个信道上空口冲突严重实际吞吐能掉到理论值的三分之一。5G 信道多、干扰少但穿墙衰减明显隔两堵承重墙基本就废了。我的一般建议是能上 5G 就上 5G除非距离或遮挡实在无解。现在支持 6G 频段的设备也逐渐多了6G 的特点是信道更宽、干扰更少但覆盖范围比 5G 还短一截适合同一房间内的短距离高速传输。信道宽度。20MHz 最稳40MHz 是折中80MHz 和 160MHz 能跑出高速率但对干扰极其敏感。这里有个反直觉的结论在密集住宅区把 160MHz 改成 80MHz实测吞吐反而可能更高。因为 160MHz 会横跨多个子信道只要其中任何一段被邻居占用或遇到雷达探测避让整条链路就得降宽或者切换稳定性大打折扣。协商速率的理论计算。这个必须会算否则你永远不知道自己测得对不对。以常见的 2×2 空间流、80MHz 带宽、WiFi 6802.11ax为例单流 80MHz、1024-QAM、码率 5/6 时单符号携带 980 个数据比特按 0.8μs 的符号周期折算单流速率约 600 Mbps2×2 双流叠加后PHY 速率约 1201 Mbps扣除帧间隔、前导码、ACK、管理帧和重传开销实测 TCP 吞吐通常在 600–750 Mbps 区间。如果换成 160MHz、2×2PHY 速率翻倍到 2401 Mbps实测 TCP 大约 1200–1500 Mbps——但前提是你的对端设备路由器、测试机也能跑满这个量级否则瓶颈就转移了。关于信道占用情况Linux 下可以扫一遍周边环境# 扫描周边 AP查看信道、信号强度、加密方式 sudo iw dev wlan0 scan | grep -E SSID|freq|signal|RSN # 更直观的方式用 wavemon 或直接看 /proc/net/wireless cat /proc/net/wireless扫描结果里重点看两件事一是周边 AP 都集中在哪些信道二是它们的信号强度。如果某个信道上有一堆 -40dBm 的强信号源那就绕开它。2.3 工作模式切换STA、AP、监听各有各的门槛一块网卡能不能当热点、能不能抓包取决于驱动是否支持对应的虚拟接口类型。Linux 下用iw直接切# 查看当前接口支持哪些模式 iw list | grep -A 10 Supported interface modes # 切换为 AP 模式需要 hostapd 配合 sudo ip link set wlan0 down sudo iw dev wlan0 set type __ap sudo ip link set wlan0 up # 切换为监听模式抓包用 sudo ip link set wlan0 down sudo iw dev wlan0 set type monitor sudo ip link set wlan0 up输出的 Supported interface modes 列表是关键如果里面没有AP这块网卡就当不了热点没有monitor就抓不了空口包。这两个能力在便宜方案上经常缺失买之前查一下能省很多事。Windows 下的热点功能走的是系统自带的移动热点本质是把网卡的 STA 接口虚拟出一个 AP 接口能不能用同样取决于驱动。实测下来部分老驱动会报无法设置移动热点更新驱动或者换一块支持虚拟接口的网卡才行。注意监听模式抓取的是空口广播的帧涉及他人网络时不要越界。我一般只在自己完全掌控的测试环境里做这件事用来分析自己网络的握手过程、信道占用和重传率这是排查疑难问题的有效手段但边界必须清楚。3. 性能评估把感觉挺快换成可复现的数字性能评估这件事最难的不是跑分是控制变量。同一块网卡换个位置、换个时间、换台机器测结果可能差一倍。所以评估的第一步不是测是搭一个能重复的环境。3.1 测试环境怎么搭才可信我给自己定的规矩是四条固定物理位置。用胶带在地面标出网卡和路由器的位置每次测试都放在同一处。射频这东西对位置极其敏感挪动三十厘米信号强度就可能变 5dB速率跟着掉一个档。天线的朝向也要固定——很多网卡是内置天线那就要固定整机的摆放方向。排除后台流量。测试机上的自动更新、云同步、后台下载全部暂停。我一般会开一个资源监视器确认网络占用归零再开始。这一条听起来简单但实际做的时候经常忘测出来的数据莫名其妙偏低最后发现是某个同步工具在偷偷传东西。固定信道与带宽。把路由器的信道手动锁定不要用自动。自动信道会在检测到干扰时跳变一跳你的对照组就失效了。带宽同理测 80MHz 就固定 80MHz别让它自适应。关闭所有省电机制。前面提过的网卡省电选项、系统电源计划改成高性能、CPU 节能有些平台上会影响中断处理延迟。这三处任何一个没关测延迟的时候都会看到规律性的尖峰。环境搭好之后先做一个基线确认ping 网关一百次看延迟分布。如果延迟中位数在 2ms 以内、没有超过 10ms 的离群值说明链路状态正常可以开始测吞吐了。3.2 吞吐量测试iperf3 的正确用法与参数解读吞吐量测试我用 iperf3理由很简单轻量、跨平台、能跑 TCP 也能跑 UDP输出的数据够细。搭法是两台机器一台当服务端一台当客户端中间走无线路由器。# 服务端有线连接的那台作为基准参照 iperf3 -s -p 5201 # 客户端TCP 上行30 秒4 条并行流 iperf3 -c 192.168.1.100 -p 5201 -t 30 -P 4 # 客户端TCP 下行反向测试接收能力 iperf3 -c 192.168.1.100 -p 5201 -t 30 -P 4 -R # UDP 模式测丢包与抖动带宽限制在 500M iperf3 -c 192.168.1.100 -p 5201 -t 30 -u -b 500M参数选择的逻辑-P 4开四条并行流是因为单条 TCP 流在长肥管道上容易被窗口大小限制住跑不满带宽。四流基本能压满一块千兆级的无线链路。-t 30跑三十秒是为了跨过 TCP 慢启动阶段让数值进入稳态。如果只跑五秒出来的数字会偏低 10%–20%。结果怎么看重点关注最后的sender和receiver两行前者是你发出去的后者是对端收到的。两者差值就是重传和丢包的代价。如果发出 700Mbps、收到 500Mbps说明链路质量有问题空口重传率高这时候去查信号强度和信道干扰比继续加带宽有用。再补一点测试方向要分开做。上行客户端发、服务端收和下行客户端收、服务端发的结果经常不对称差距大到 20% 以上往往指向网卡的发射功率不足或者接收灵敏度偏低这是个很实用的诊断信号。3.3 延迟、抖动和丢包游戏和会议场景真正该看的指标吞吐量好看不代表体验好。视频会议卡顿、游戏跳 ping问题几乎都出在延迟稳定性上而不是带宽。这方面我固定测三个指标平均延迟、P99 延迟、抖动。# Linux连续 ping 200 次间隔 20ms统计分布 ping -c 200 -i 0.02 192.168.1.1 | tail -3 # 更细的用 mtr 看每一跳的丢包和延迟 mtr -c 100 -r 192.168.1.1# Windows连续 ping 并输出统计 ping -n 200 192.168.1.1判断标准我一般这么定指标优秀可用有问题平均延迟 3 ms3–10 ms 10 msP99 延迟 10 ms10–30 ms 30 ms抖动标准差 2 ms2–8 ms 8 ms丢包率0% 0.5% 1%为什么看 P99 而不是平均值因为平均值会把偶发的尖峰稀释掉。一块网卡平均延迟 3ms但每秒有两次 100ms 的尖峰平均值看着很漂亮实际用起来会议就是会卡。P99 能把这个尾巴暴露出来。UDP 测试同理iperf3 的 UDP 模式会直接给出丢包率和抖动值这个比 TCP 更接近实时音视频的真实体验。测试时把-b设成略高于链路实际能力的值比如实测 TCP 能跑 600M就设 650M这样能看出链路在压力下的表现。3.4 信号指标怎么读RSSI、SNR、噪声底和 MCS这几组数字是排查问题的核心但很多人只会看信号几格。指标含义参考阈值说明RSSI接收信号强度-50 dBm 优 / -60 良 / -70 边缘 / -75 以下不可用单位是负值越接近 0 越好噪声底环境背景噪声-95 dBm 以下算干净-85 以上说明干扰重2.4G 环境普遍比 5G 差 5–10 dBSNR信噪比 RSSI − 噪声底 25 dB 才能跑高阶调制低于 15 dB 速率会断崖式下跌MCS 索引当前调制编码策略等级越高越快但抗干扰越差与 SNR 强相关关键在于 SNR 而不是 RSSI。我见过 RSSI -58dBm 看着很好的场景SNR 只有 12dB因为噪声底被抬到了 -70dBm——周边有强干扰源。这种情况下把信道换掉比加大发射功率管用得多。Linux 下这几个值都能直接读出来# 查看当前连接的信号强度与噪声 iw dev wlan0 link iw dev wlan0 station dump | grep -E signal|noise|bitrate|tx failed # 持续监控 watch -n 1 iw dev wlan0 link | grep signaltx failed这个字段特别值得关注。它是累计的发送失败次数如果这个数字在短时间内快速上涨说明空口冲突严重或者对端接收有问题。正常情况下稳定传输几分钟这个值的增长应该非常缓慢。4. 常见问题速查与实际踩坑记录4.1 高频故障速查表这张表是我这些年整理出来的按出现频率排序遇到问题先对照着查一遍能解决八成的情况。现象最可能的原因排查动作速率只有标称值的三分之一网卡走 USB 2.0 总线查接口版本换 3.0 口或换内置网卡每隔几十秒卡一下网卡省电模式未关关闭设备管理器里的电源管理项5G 信号满格但速度慢信道过宽导致频繁降宽把 160MHz 降到 80MHz 试2.4G 速度极差5G 正常2.4G 频段拥塞或 USB 3.0 干扰换信道到 1/6/11网卡远离 USB 3.0 接口高负载十几分钟后掉速芯片热降频加散热片、改善通风、降低持续负载偶发断连几秒后自愈漫游阈值过于激进调低漫游积极性或固定绑定单个 AP延迟有规律尖峰系统电源计划或 CPU 节能改高性能模式关闭 C-State上行快下行慢或反之发射功率/接收灵敏度不对称调整天线位置检查对端发射配置其中USB 3.0 干扰 2.4G这一条值得单独说两句。USB 3.0 接口在工作时其数据传输的频谱噪声会落在 2.4GHz 附近。如果无线网卡插在紧邻 USB 3.0 接口的位置或者旁边插着移动硬盘2.4G 的噪声底会被抬高 10dB 以上。解决办法很土但有效用一根 USB 延长线把网卡挪远或者干脆改用 5G 频段。我测过同一块网卡从紧贴 USB 3.0 口挪到半米外2.4G 吞吐从 40Mbps 涨到 110Mbps。4.2 几个我实际踩过的坑坑一拿一块网卡测出的数据给另一块网卡下结论。早期我做过一次横向对比三块网卡轮流插同一台机器测结论是其中一块明显差。后来发现是驱动没装对系统给它套了个通用驱动很多能力没用上。换网卡测试必须先确认驱动正确加载这个顺序错了所有数据都没意义。坑二忽略了测试对端的瓶颈。有一次测出 620Mbps觉得挺合理后来发现服务端那台机器用的是百兆网口接的路由器能跑出 620 才怪——实际上是无线侧和有线侧的全双工并行加上 iperf3 的缓冲效应数字虚高。测试前一定要确认有线侧不是瓶颈最简单的办法是把两台机器都用网线直连测一次拿到基准值再换成无线对比。坑三把天线的极化方向搞反了。外置天线的网卡天线是垂直还是水平摆放和路由器的天线方向如果不匹配信号能差 10dB 以上。这个在桌面使用时很容易忽略——主机放在桌下天线横躺着路由器天线竖着交叉极化导致衰减严重。摆正之后速率立刻上了一个台阶。坑四信道扫描结果没看时间维度。早上扫一遍发现某个信道很空晚上再测却慢得要死。因为邻居的信道是自动选择的白天上班家里没人晚上全开起来了。信道规划要在使用高峰时段做这个细节决定了你的优化到底有没有效果。坑五以为协商速率等于实际吞吐。系统显示的连接速度 866Mbps是 PHY 速率实际 TCP 能到 500Mbps 就已经很不错了。有人看到这个数字和实测差一半就认定网卡有问题。这是正常的协议开销不是故障。真要往上抠只能靠提升带宽、增加空间流、改善 SNR 这三条路。5. 我个人在长期使用中沉淀的几条经验开头说过评估的目的是拿到可信数据而可信的前提是变量可控。我现在的习惯是给每块经手的网卡建一个小档案记录硬件 ID、驱动版本、支持的模式列表、以及在固定位置的基线吞吐和延迟数据。下次这块网卡出现在别的机器上或者驱动升级了直接对比基线就知道有没有变化省掉大量重复排查。另外一个体会是大部分所谓的网络不好根源都不在路由器身上。我统计过自己处理过的问题网卡侧的因素占了相当大比例驱动老旧、省电没关、总线受限、天线摆错、热降频。这些都不是什么高深问题但每一条都能让人白折腾半天。所以遇到问题我的排查顺序固定是——先看协商速率和信号指标再看空口重传最后才去动路由器配置。把这个顺序倒过来往往是在错误的方向上越走越远。如果要做长期监控其实不需要多复杂的工具。一个定时任务每分钟采集一次iw dev wlan0 link的输出追加到日志出问题的时候往回翻什么时候开始劣化、劣化时的信号值是多少一目了然。这比事后凭记忆回忆可靠得多。
阅读完成 · 觉得有帮助?
咨询建站