User Tools

Site Tools


docs:wifi

This is an old revision of the document!


802.11 无线网络参数解惑

by 盖子 (biergaizi)

在 802.11 无线网络的 AP 配置选项中,有许多令人费解的高级参数。本文档对这些参数进行了简明叙述,帮助系统管理员根据环境对无线网络进行调优。需要注意的是,但仅仅是面向用户和系统管理员的简介,虽然我会努力保证本文档的内容正确,并它不是一份 802.11 协议指南,若对协议有疑问请直接参阅 IEEE 资料。也欢迎提交修改建议。目前文档还未编写完成。

Beacon Interval

一个 AP 会不断发出 Beacon 向外界宣布自己的存在。除了 SSID、加密选项等元数据之外,在 802.11 帧传递给设备之前,会暂时存储在 AP 的缓冲区中。因此,Beacon 中还携带着 TIM(Traffic Indication Map),负责告知设备是否有待收消息。这样的设计允许设备暂时进入睡眠状态节约电能。TIM 的数据结构是 bitmap,故得名为 map。

图中是一个简单概念演示(但过度夸大了,因为 Beacon 速度 c 可忽略不计)

每隔一段时间,AP 就会发出一个 Beacon 帧。这段时间间隔就是 Beacon Interval,它的计量单位为「时间单位(Time Unit)」,一个 TU 等于 1.024 ms。Beacon Interval 的默认值通常为 100,也就是每隔 102.4 ms 发送一个 Beacon。

当信号弱、干扰大时,Beacon 将更加容易丢失,从而让设备更难发现 AP 的存在,同时设备查收消息也会更加困难,引起掉线、丢包等问题。如果需要进行优化,可以将 Beacon Interval 设置为 50,并在此基础之上进一步下调,过度下调会使开销大大增加,让 AP 花费更多的时间传输 Beacon 而不是实际数据,还会增加设备的唤醒次数,增加电能消耗。相反,如果通讯情况良好,则可以上调 Beacon 降低额外开销,降低电能消耗,但过度上调会引起掉线、丢包等问题。

DTIM Interval/Period

多播和广播信息也是使用类似 TIM 的方式进行传输的,但是它们并不包含 TIM 中,而是包含在 DTIM(Delivery Traffic Indication Message)中。Beacon 中通常携带的是 TIM,但有时携带的是DTIM。

DTIM 出现的频率由 DTIM Interval/Period 控制,如 DTIM = 1,那么 DTIM 将每隔 1 个Beacon 出现一次,其他时间出现的是 TIM。按照 802.11 的电源管理协议,在 DTIM 出现之前,设备可以暂时进入休眠状态,直到下一个 DTIM 出现。因此,DTIM 的周期越长,设备可以睡眠的时间也就越长。因此,上调 DTIM 可以降低设备的电能消耗,但会影响网络传输的延迟与可靠性;下调 DTIM 可以提高网络传输的可靠性,减少延迟,但是会增加电能消耗。

DTIM = 3 时的情况如图所示。

在 OpenWrt 中,DTIM 的默认值为 2,兼顾节能与可靠性,故无需特别调整。如果需要降低网络的延迟,提高可靠性,可以将 DTIM 设置为 1。根据经验,许多 VoIP 和即时推送应用对延迟敏感,需要低 DTIM。否则,可以上调 DTIM,根据经验最多上调至 8,不过一般无此必要。

此外需要注意的是,DTIM 决定了多少个 Beacon 出现一个 DTIM,而 Beacon 资深的间隔则是由 Beacon Interval 来决定的,因此如果需要提高网络的可靠性,或者降低设备的电能消耗,建议同时调整这两个数值。

Fragmentation

一则 802.11 帧的尺寸为 2346 字节,其中 payload 最大为 2304 字节。如果无线网络存在信号弱、干扰大、碰撞多等不利工作条件,802.11 帧在传输时容易损坏,导致整个帧必须重新传输,损失整整 2304 字节的数据。分片机制可以限制帧的大小,降低丢包或损坏时受影响的数据量,但也会引入额外的分片开销。

若需要进行这项优化,可以试着将一个以太网 payload 拆分为两个 802.11 帧。一则以太网帧的尺寸为 1538 字节(不使用 802.11Q VLAN),其中 payload 尺寸为 1500 字节(即最常见的 MTU),开销为 38 字节。而 802.11 帧的开销为 42 字节。因此,Fragmentation 数值可以设置为 1/2 x 1500 + 38 + 42 = 830 字节,并在此基础之上进一步下调。

RTS/CTS Threshold

由于 AP 的发射功率与接收灵敏度通常远远高于其他设备,因此当多个设备同时连接到一个 AP 时,AP 往往能和这些设备互相通讯,但设备之间却无法接收到彼此的信号。这种现象被成为“隐藏节点问题(Hidden Node Problem)”,会影响碰撞检测机制的正常工作。更多的碰撞造成传输时损坏帧的数量上升,导致更多重传,降低通讯性能与可靠性。

如图,虽然设备 A 和 C 无法收到彼此的信号,虽然它们都能与作为 AP 的 B 相互通信。

为了解决这个问题,802.11 无线网络有一个可选的 RTS/CTS 协议。当 RTS/CTS 生效时,设备首先向 AP 发送 Request to Send(RST)消息,请求传输数据,并等待 AP 的回复,直到 AP 收到 RST 并在条件允许时,向设备回复 Clear to Send(CST)宣布冲突解除后,设备才会进行传输。此外,如果设备刚好收到了其他设备发送的 RST,也会主动停止传输以规避碰撞。为了防止 RST 或者 CST 报文丢失引发网络混乱,设备需要发送 ACK 进行确认。

可见,RTS/CTS 以更高的传输开销为代价,一定程度上解决了大空间中客户端分布稀疏引发的“隐藏节点问题”。由于该协议开销较高,按照设计只有当 802.11 帧的大小达到 RTS/CTS threshold 的阈值时,RTS/CTS 机制才会被触发,防止大帧碰撞损坏的同时避免在保护小帧上浪费时间。

在大多数 AP 上,RTS/CTS threshold 的数值为 2346/2347,即大于或等于 802.11 帧的尺寸上限,这意味着 RTS/CTS 在任何情况下都不会激活,等于禁用了该协议。在“隐藏节点问题”不存在的情况下,这是最佳设置。如果需要进行这项优化,可以试着将设置为一个以太网 payload 的三分之一,1/3 x 1500 + 38 + 42 = 580 字节,并在此基础之上进一步下调。

Short/Long Preamble

ISO/IEC 7498-1 将一个信息通讯网络划分为了 7 个抽象的层级,也就是著名的 ISO/OSI 模型。我们需要了解的是本模型的前三层,由于它们的功能与媒介有关,因此这三层又统称为媒介层(Media layers),分别为物理层、数据链路层与网络层。IP 数据包位于网络层,以太网帧与 802.11 帧位于数据链路层,更加底层的通讯则由物理层负责。

数据链路层又可以进一步分为逻辑链路控制层(LLC, Logical Link Control)与媒介访问控制层(MAC, Media Access Control),我们感兴趣的绝大多数以太网活动发生在 MAC 层,而物理层又可以进一步分为物理收敛过程层(PLCP, Physical Layer Convergence Procedure)与物理媒介相关层(PMD, Physical Medium Dependent)。PLCP 负责将来自 MAC 层的帧进一步封装为 PLCP 协议控制单元(PPDU, PLCP Protocol Data Unit),接下来 PMD 再将准备好的 PPDU 的二进制数据通过调制解调器发送出去。

数据在整个网络流动如图所示。

「Preamble」是有关物理层上半层(即 PLCP 层)的一个概念。PLCP 层中的通讯也是一帧一帧进行的,其中「帧」名为 PPDU。PPDU 一共分为三部分,第一部分是先导区,名为 PLCP Preamble;第二部分是头部信息,名为 PLCP Header;第三部分是要传递的 payload,名为 PSDU。当包含着以太网帧的 802.11 帧从 MAC 层来到 PLCP 层,PLCP 就会为这些帧加入 Preamble 和 Header,从而封装为 PPDU。

在 802.11 协议中,Preamble 存在五个版本。

  • Long Preamble(旧版 802.11b)
  • Short Preamble(新版 802.11b)
  • OFDM Preamble(802.11g)
  • HT Mixed(802.11n 向下兼容)
  • HT Greenfield(原生 802.11n,不向下兼容)

第一个版本被称为 Long Preamble,是 802.11b 及其之前的 802.11 无线网络使用的 PLCP Preamble 格式。在 802.11b 推出后,IEEE 又重新设计了一种新版本的 Preamble 格式,与 Long Preamble 相比长度明显缩短,因此名为 Short Preamble,减少了 802.11b 网络数据传输的额外开销,从而可以让 802.11b 无线网络达到更快的实际传输速率。然而,Short Preamble 的支持是可选的,并不是所有的设备都支持它。因此,将 Preamble 设置为 Short 可以降低开销,提高 802.11b 的传输速度,但无法兼容第一代的 802.11b 设备;将 Preamble 设置为 Long 可以兼容第一代 802.11b 设备,但会降低网络的传输速度;网络稳定性与本选项无关。

第三个版本是 802.11g 中的 OFDM Preamble,这个 Preamble 使用了新的编码方式,进一步降低了开销;而在 802.11n 中,Preamble 再次经过了重新设计,出现了向下兼容的第四个版本 HT Mixed 与不向下兼容的 HT Greenfield。

在修订版的 802.11b 协议中,Short Preamble 已经改为了强制实现,而不是可选实现,因此新的设备都支持 Short Preamble;其次,802.11b 已经是 1997 年的老古董了,早早就被 802.11g 与 802.11n 取代,因此 Preamble 究竟是 Short 还是 Long 已经完全不重要了。总而言之:如果你拥有十分古老的 802.11b 设备需要兼容,你也许需要启用 Long Preamble,如果你的 802.11b 设备是新设备,请使用 Short Preamble,更好的选择是不必关心这个选项,并直接禁用 802.11b 与 802.11g。

Antenna Diversity

两种:

  • MIMO
  • LNA

TODO

  • 注明来源(CC By + 合理使用)
  • 1, 6, 11 信道的选择,与 20/40 MHz 频宽
  • AMPDU
  • UAPSD
  • HT40-, HT40+
  • Short GI
  • LDPC
  • TX-STBC, RX-STBC
  • BT co-existence
  • Antenna Diversity
  • 802.11w
docs/wifi.1521992237.txt.gz · Last modified: 2018/03/25 15:37 by Tom Li