3、物理层因素对广播的影响:多径效应、信号衰减、同频干扰、隐藏节点与暴露节点问题
各位好,我是老周。做WiFi这行十几年了,广播丢包这事儿,物理层往往是第一道坎。很多人一上来就抓协议栈、看驱动,其实很多时候问题就出在空气里——信号在空气中怎么传的,决定了你的广播包能不能被正确收到。
这一节我们聊聊物理层的几个“老冤家”:多径效应、信号衰减、同频干扰,还有隐藏节点和暴露节点。这些概念听起来基础,但实际排查时,它们往往是真凶。
3.1 多径效应:信号自己跟自己打架
什么叫多径?说白了,就是信号从发射天线出来,不是只走一条路到接收端。它会反射、绕射、散射——撞到墙、地板、天花板、甚至人身上,然后从不同路径到达接收天线。
这些路径长度不一样,信号到达的时间就有先后。接收端把主径信号和延迟的反射信号叠加在一起,结果可能互相增强,也可能互相抵消。这就是多径效应。
关键影响:广播帧没有ACK机制,发送端不知道接收端有没有正确解调。如果接收端正好处在多径抵消的“深衰落”位置,广播包就丢了,而且发送端完全不知道。
我记得有一次在大型仓库做WiFi覆盖测试。AP装在货架通道的一端,广播包在通道另一端几乎收不到。但奇怪的是,单播测试却正常。后来一查,是货架金属反射造成了严重的多径抵消。广播帧没有重传,直接就丢了。单播有重传,所以看起来正常。
我的经验:部署AP时,尽量避免让天线正对大面积金属反射面。如果环境里货架、金属隔断多,建议用MIMO天线,利用空间分集对抗多径衰落。广播帧虽然不支持波束成形,但多天线接收分集对广播也有帮助。
3.2 信号衰减:距离和障碍物的“钝刀”
信号衰减,这个好理解。距离越远,信号越弱。但广播帧有个特殊问题——它通常用最低速率发送(比如1Mbps或6Mbps),目的是让最远的设备也能听到。但最低速率不等于无损耗,信号衰减到接收灵敏度以下,照样收不到。
衰减主要来自两方面:
- 自由空间路径损耗:距离每增加一倍,信号强度下降约6dB。这个数学上可以算,但实际环境更复杂。
- 障碍物穿透损耗:混凝土墙约15-25dB,砖墙约8-15dB,玻璃约3-5dB。广播帧穿墙后,信号可能已经低于接收灵敏度了。
| 障碍物类型 | 典型穿透损耗(2.4GHz) | 典型穿透损耗(5GHz) | 对广播帧的影响 |
|---|---|---|---|
| 混凝土墙(承重) | 20-25 dB | 25-35 dB | 严重,广播基本穿不过 |
| 砖墙(非承重) | 8-15 dB | 12-20 dB | 中等,可能部分设备收不到 |
| 玻璃(普通) | 3-5 dB | 4-6 dB | 轻微,影响不大 |
| 金属隔断/货架 | 15-30 dB | 20-40 dB | 严重,且可能引起多径 |
| 人体 | 3-5 dB | 5-8 dB | 动态变化,人员密集时明显 |
你想想看,一个广播帧从AP发出来,穿了两堵墙,信号可能已经掉了30-40dB。如果AP发射功率是20dBm,接收端灵敏度是-85dBm,那穿墙后信号可能只有-50dBm到-60dBm,看起来还行。但别忘了,还有多径和干扰在等着它。
避坑指南:我曾经遇到一个客户,在办公楼走廊尽头装了一个AP,走廊中间有两堵轻质隔断。他们觉得隔断不厚,广播应该没问题。结果走廊另一端的设备经常收不到广播包。实测发现,两堵隔断加起来衰减了22dB,加上距离损耗,信号刚好卡在灵敏度边缘。广播帧偶尔能收到,偶尔收不到。解决方案很简单——把AP往走廊中间挪了5米,问题就解决了。
3.3 同频干扰:邻居家的信号在“捣乱”
同频干扰,就是两个或多个设备在同一个信道上同时发送信号,接收端就分不清谁是谁了。WiFi用的是CSMA/CA机制,发送前先监听信道。但广播帧有个特点——它不会等待ACK超时,也不会退避重传。所以一旦发生碰撞,广播帧就丢了。
同频干扰的来源主要有:
- 相邻AP使用相同信道:在密集部署场景(如写字楼、公寓)很常见。
- 非WiFi设备:微波炉(2.4GHz)、蓝牙、ZigBee、无线摄像头等。
- 雷达信号:5GHz频段有DFS信道,雷达信号会强制WiFi切换信道。
我记得有一次在酒店做WiFi优化。大堂的广播包经常丢,但单播却正常。用频谱仪一看,2.4GHz信道1上有个微波炉在“工作”——不是一直开,而是间歇性干扰。微波炉工作时,信道1上的噪声底噪抬高了15dB。广播帧发送时正好撞上干扰,就丢了。后来把AP切换到信道6,问题就消失了。
我的建议:做WiFi规划时,一定要做现场频谱分析。别只看AP扫描报告,那只能看到WiFi信号。用频谱仪看看非WiFi干扰源,尤其是2.4GHz频段。微波炉、无线摄像头、甚至老式蓝牙设备,都可能成为广播丢包的“隐形杀手”。
3.4 隐藏节点与暴露节点:CSMA/CA的“盲区”
这两个问题,是CSMA/CA机制本身的缺陷。广播帧因为没有RTS/CTS机制,更容易受影响。
3.4.1 隐藏节点问题
隐藏节点,就是两个设备都能和AP通信,但彼此听不到对方。比如设备A和设备B分别在AP的两侧,中间有障碍物隔开。A发送时,B听不到,以为信道空闲,于是也发送。结果在AP端就发生了碰撞。
对于单播,可以用RTS/CTS机制解决——A先发RTS,AP回复CTS,B听到CTS就知道信道被占用了。但广播帧呢?广播帧不发RTS/CTS。所以隐藏节点对广播帧的影响特别大。
我做过一个测试:在办公室部署两个STA,一个在AP左边5米,一个在AP右边8米,中间隔了一堵混凝土墙。AP发送广播帧,丢包率约15%。开启RTS/CTS后,单播丢包率降到0%,但广播丢包率还是15%。为什么?因为广播帧根本不走RTS/CTS流程。
核心结论:隐藏节点环境下,广播帧的丢包率远高于单播。而且你无法通过RTS/CTS来保护广播帧。唯一的办法是优化物理部署——减少障碍物,或者调整AP位置,让所有STA都能互相听到。
3.4.2 暴露节点问题
暴露节点和隐藏节点相反。两个设备都能听到对方,但彼此不是干扰源。比如AP1和STA1在通信,AP2和STA2在另一个区域。STA1能听到STA2,但STA2其实不会干扰AP1和STA1的通信。但CSMA/CA机制下,STA1听到STA2在发送,就会退避,白白浪费了信道资源。
暴露节点对广播的影响比较间接——它不会直接导致广播丢包,但会降低信道利用率,增加广播帧的发送延迟。对于时间敏感的广播应用(比如VoIP的广播通知),延迟大了也可能被视为“丢包”。
| 问题类型 | 本质 | 对广播帧的影响 | 常见场景 |
|---|---|---|---|
| 隐藏节点 | STA之间互相听不到 | 直接导致广播碰撞丢包 | AP两侧有障碍物 |
| 暴露节点 | STA之间互相听到但不应退避 | 增加广播延迟,间接影响 | 密集部署、高密度场景 |
3.5 知识体系:物理层因素全景图
下面这张图,我把物理层影响广播丢包的几个核心因素串起来了。你可以看到,它们不是孤立的,而是相互关联的。
从这张图可以看得很清楚:物理层的四个因素不是独立工作的。多径效应和信号衰减经常同时出现,同频干扰会加剧隐藏节点问题。而且广播帧本身没有ACK、没有RTS/CTS,等于“裸奔”在物理层之上。任何一个因素出问题,广播包就可能丢。
我的经验总结:排查广播丢包时,别只盯着协议栈。先看看物理环境——有没有金属障碍物?有没有同频干扰?STA之间能不能互相听到?很多时候,调整一下AP位置或者换一个信道,比改代码管用得多。