openwifi · 8月5日 · 北京市

WiFi芯片的维密(3)为何有时WiFi速度那么慢!

不开玩笑?标称最高54Mbps的802.11a/g有时只能跑到5Mbps出头?这还是信号完美且没有任何噪声和干扰情况下!

是的,网速打1折的情况是可以通过幼儿园学过的加减乘除计算出来的。。。

首先答疑上篇用来做比喻的车厢,它其实对应着WiFi信号里的OFDM符号。车厢里的座位,类比每个OFDM符号内的可用子载波数量。火车头类比承载SIGNAL信息的OFDM符号,它包含了对后续车厢/OFDM符号内乘客数/bit数的描述。

下面展示什么情况下WiFi网速会打1折。以上篇给出的802.11a/g标准中的表格为例:

假设某WiFi包的配置如表格倒数第三行16QAM 3/4码率 36Mbps,当要传输的bit数为122时,会恰好占满一个OFDM符号:

一个OFDM符号长度为4us,其中包含了144bit(16+有效122bit+6尾bit),因此144/4=36Mbps。这里只计算了一个OFDM符号的传输耗时,而实际中这个数据OFDM符号之前还有前导码和承载SIGNAL信息的OFDM符号,如下图所示。

所以实际WiFi包耗时为16+4+4=24us(即上图中Data 1这个数据OFDM符号结束),再加上最小包间隔SIFS(Short Inter Frame Space)10us(5GHz情况下为16us),总耗时34us(不考虑随机后退避让),而传输的有效bit只是122bit,实际速率已经从36M降为122/34=3.59Mbps!

要知道122bit是15.25字节,实际中各种应用程序和网络协议的包长一般都是整数个字节。让我们把15.25字节取整到16字节,即128bit,这时1个数据OFDM符号已经装不下,不得不使用两个OFDM符号,此时第二个符号仅包含6个全0的尾bit和138个填充bit(144*2-16-128-6=138)!(虽然要传输的128bit已经全在第一个OFDM符号里了,但6个0的尾bit已无处安放)。这时实际速率进一步降低为128/(34+4)=3.37Mbps,仅为标称速率36Mbps的9.4%。

对于54Mbps配置情况(表格最后一行),不难重复上述分析,当传输25字节即200bit时,需要两个数据OFDM符号,实际速率降低为200/(34+4)=5.26Mbps,仅为标称速率54Mbps的9.7%。

当然以上只是一种极端情况。实际中应用程序产生的包各种长度都有。当包长较大需要更多OFDM符号时,相应的头部信号和尾部填充bit开销就不显著,也就是网速打折没那么大。如果真的有很多小包,他们还可以被聚合起来形成一个较大的包,即802.11n/WiFi4引入的AMPDU,从而提高物理层传输效率。

本文也只是从包长这个角度,计算了一种对网速影响很大的极端情况。实际影响WiFi网速的其他因素还有很多,例如信号强度,链路自适应调整算法,TCP协议是否有针对性优化,多终端的调度,信道拥挤,信号干扰,接收机算法和灵敏度,接收机捕获效应,等等,后面有机会再分析。​

作者: 纸飞机
原文链接:知乎

推荐阅读

更多IC设计技术干货请关注开源芯片/FPGA设计技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
3 阅读 175
推荐阅读
关注数
2102
内容数
33
开源Wi-Fi芯片openwifi项目相关技术进展,欢迎加入
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息