跳转至

802.11 学习

本文的内容已经整合到知识库中。

背景

最近在学习 802.11,在博客上记录一下我的学习过程。

本文参考了 802.11-1997 并使用了标准中的图片。

MAC 层帧格式

802.11 MAC 层的帧格式,如 802.11-1997 Figure 12:

前两个字节 Frame Control 的定义如 802.11-1997 Figure 13:

根据 Type 和 Subtype 字段决定了帧的类型,如管理(Management)帧,控制(Control)帧和数据(Data)帧。

无线路由器定期发送 Beacon frame,告诉客户端自己广播了哪些 SSID。客户端也可以主动发送 Probe Request frame 来询问有没有路由器有对应的 SSID,如果有,路由器回复一个 Probe Response frame。

PHY

802.11 支持很多种 PHY,常见的有 802.11 b/g/n/ac/ax。起名也很有意思:

  • 802.11b: High Rate,最高 11 Mbps
  • 802.11g: Extended Rate,最高 54 Mbps
  • 802.11n: High Throughput,最高 600 Mbps
  • 802.11ac: Very High Throughput,最高 6933 Mbps
  • 802.11ax: High Efficiency,最高 9608 Mbps

802.11b

首先看 802.11b,802.11b 是对 802.11 的补充,主要定义了第 18 章 High Rate, direct sequence spread spectrum PHY specification,缩写 HR-DSSS。

HR-DSSS 工作在 2.4 GHz 频段上,常用的是 13 个 channel,中心频率从 2412 MHz 到 2472 MHz 不等,呈等差数列,公差是 5 MHz。HR-DSSS 会占用 22MHz 的频谱,从中心频率减 11 MHz 到中心频率加 11 MHz,所以相邻 channel 会有干扰,见下图(取自 Wikipedia

这就是为什么通常会把 2.4GHz 无线路由器的 channel 固定为 1、6 或 11。

那么,HR-DSSS 如何把数据调制为 2.4GHz 上的信号呢?HR-DSSS 支持不同的速率,例如 1、2、5.5 和 11 Mbps,这些二进制的数据需要按照一定的方法调制到 2.4 GHz 的载波上。

首先是最简单的情况,例如在 channel 1 上传输 1 Mbps 的数据,802.11 采用的是 DSSS 的方法。简单来说,对于输入的每个位,扩展成 11 个 bit,这样就得到了一个 11 MHz 的基带信号,然后再把基带信号通过 DBPSK 调制到 2412 MHz 的载波信号上。

这个扩展过程是这样的:如果数据位是 0,那就输出 10110111000(Barker 码);如果数据位是 1,那就输出 01001000111。实际上就是把 1 位的信息重复了 11 次再发出去,看起来很浪费,但很好地解决了干扰的问题,即使传输中出现了错误,接受方也很容易从 11 位的数据中恢复出原来的数据。

2 Mbps 的传输方式类似,只不过每个 symbol 传输两位的数据,所以采用 DQPSK 的调制方法,频率保持不变,实现了两倍的数据传输速率。

5.5 Mbps 和 11 Mbps 则采用了其他方法。由于上面的 1 比 11 的转换比例太浪费了,所以为了提升速度,5.5 Mbps 和 11 Mbps 时采用的是 CCK 编码方式,具体来说,5.5 Mbps 的时候,输入的 4 个 bit 会映射为 8 个 chip,类似地 11 Mbps 的时候,输入的 8 个 bit 也映射到 8 个 chip。每个 chip 都是复数,采用 DQPSK 进行调制。

可以看到,整个过程都是在冗余:速率低的时候,就冗余很多份;速率高的时候,冗余就比较少。实际上,5.5 Mbps 和 11 Mbps 还可以采用可选的 PBCC 进行编码,下面摘抄了 About Data Modulation Format (802.11b/g DSSS/CCK/PBCC) 中 802.11b 不同速率和编码方式的表格:

Data Modulation Formats Spread Sequence Code scheme Data Rate(Mbps) Symbol Rate(Msps) Chip Rate (Mcps) Bits per Symbol Modulation
Barker 1 11 Chip Barker 1 1 11 1 DBPSK
Barker 2 11 Chip Barker 2 1 11 2 DQPSK
CCK 5.5 8 chip CCK 5.5 1.375 11 4 DQPSK
CCK 11 8 chip CCK 11 1.375 11 8 DQPSK
PBCC 5.5 PBCC 5.5 11 N/A 0.5 QPSK
PBCC 11 PBCC 11 11 N/A 1 QPSK

802.11g

802.11g 定义了第 19 章 Extended Rate PHY specification,也就是 ERP(Extended Rate PHY),其主要采用的技术是 OFDM,连起来就是 ERP-OFDM,额外支持更多速率:6、9、12、18、24、36、48 和 54 Mbps。各种调制技术的速率对比:

  • DSSS: 802.11 1/2 Mbps
  • CCK: 802.11b 5.5/11 Mbps
  • OFDM: 802.11g 6/9/12/18/24/36/48/54 Mbps
  • PBCC: 802.11b 5.5/11 Mbps, 802.11g 22/33 Mbps

OFDM 的核心思想就是采用多个载波信号,这些载波信号的频率呈等差数列,同时保证各载波相互正交,这样就提高了数据传输速率。为了保证正交,相邻载波信号的频率的差要满足 \(\Delta{f} = k / T_U\),其中 k 是正整数,\(T_U\) 是每个 symbol 的时间(引用 wikipedia)。下面是 802.11 标准中的 OFDM PHY 的组成:

图中的缩写:

  • FEC: Forward Error Correction
  • IFFT/FFT: Inverse Fast Fourier Transform/Fast Fourier Transform
  • GI: Guard Interval
  • I/Q: In-phase/Quadrature
  • HPA: High Power Amplifier
  • LNA: Low Noise Amplifier
  • AGC: Automatic Gain Control
  • AFC: Automatic Frequency Control

802.11g 的信号带宽是 20MHz,分成 52 个子载波,子载波的间距是 0.3125 MHz(20 MHz / 64,\(T_{FFT}=3.2 \mu s, \Delta{f} = 1 / T_{FFT}\)),所以实际上只占了 \(0.3125 \textit{MHz} * 52 = 16.25 \textit{MHz}\) 的频谱。其中 48 个用于传输数据,每个载波上可以采用不同的调制方法。54 Mbps 是怎么算的呢?802.11g 的 Symbol rate 是 250000 每秒(因为 \(T_{SYM} = 3.2 + 0.8 = 4 \mu s\)),如果使用 64-QAM 调制,那么每个 symbol 对应 6 个 bit,然后使用纠错码,纠错的时候浪费了 1/4 的位,实际数据占 3/4,一共 48 个载波,那么数据速率就是 $ 48 * 250000 * 6 * 3/4 = 54 \textit{Mbps}$。

802.11n

802.11n 在 802.11g 的基础上添加了 MIMO,也就是可以用多个天线同时传输。

首先还是考虑单天线的情况,基本和 802.11g 相同,区别是采用了 52(\(N_{SD}\))个 OFDM 子载波用于传输数据,同时纠错码带来的浪费比例从 1/4 降到了 1/6,所以数据速率是 \(52 * 250000 * 6 * 5/6 = 65 \textit{Mbps}\)。802.11n 还提供了 Short GI(Guard Interval)选项,把 GI 从 800 ns 降低到 400ns,使得每个 symbol 的时间可以从 \(3.2 + 0.8 = 4 \mu s\) 降低到 \(3.2 + 0.4 = 3.6 \mu s\),此时的数据速率达到 \(52 * 1000000 / 3.6 * 6 * 5/6 = 72.2 \textit{Mbps}\)

除此之外,802.11n 还引入了 40 MHz 频宽的选项,以占用更多频谱为代价,换来可以用 108 个子载波来传输数据,此时数据速率可以达到 \(108 * 1000000 / 3.6 * 6 * 5 / 6 = 150 \textit{Mbps}\)

考虑多天线,如果同时两根天线传输数据,那么数据速率就是两倍,达到 \(300 \textit{Mbps}\);最高可以同时四根天线传输数据,所以数据速率最高理论值是 \(600 \textit{Mbps}\)

802.11ac

802.11ac 添加了 160 MHz 频宽的选项,可以提供 468 个子载波,调制方式从 64-QAM 提升到 256-QAM,同时最大可以有 8 根天线同时传输数据,最大数据速率是 \(468 * 1000000 / 3.6 * 8 * 5 / 6 * 8 = 6933.3 \textit{Mbps}\)

由此可见,提高无线网络的速率的方法就是提高上式的各个系数:

  • 子载波数量:增加频宽,或者在频宽一定的时候,留出更多的子载波用于数据,提升较大,但频率不能太宽
  • Symbol 时间:减少 Guard Interval,提升不大
  • QAM 位数:从 PSK 到 4-QAM 到 64-QAM 到 256-QAM,提升难度较大
  • 纠错码开销:不会超过 1,难以提升
  • 更多天线:从 1 到 4 到 8,未来到 16,逐步提升

所以要进一步提升性能,主要从子载波数量、QAM 位数和 MIMO 数量上做文章。

802.11ax

802.11ax 可以提供 1960 个子载波(间距从 312.5 kHz 缩小到 78.125 kHz,\(\Delta{f} = 78.125 kHz, T_{FFT} = 1 / \Delta{f} = 12.8 \mu s\)),调制方式从 256-QAM 提升到 1024-QAM,但是 \(T_{SYM}\) 也提高到了 \(12.8 + 0.8 = 13.6 \mu s\),最大数据速率是 \(1960 * 1000000 / 13.6 * 10 * 5 / 6 * 8 = 9607.8 \textit{Mbps}\)

OFDM 对比

下面总结了使用 OFDM 的 PHY 的各项参数,其中 Data rate 的计算公式:Subcarrier * 1000000 / T_{SYM} * Coding Rate * MIMO streams

Standard Subcarrier T_{SYM} QAM bits Coding Rate MIMO streams Data rate
802.11g 48 4 us 6 3/4 1 54 Mbps
802.11n 108 3.6 us 6 5/6 4 600 Mbps
802.11ac 468 3.6 us 8 5/6 8 6933.3 Mbps
802.11ax 1960 13.6 us 10 5/6 8 9607.8 Mbps

评论