1.4:网络帧基础——数据链路层(MAC层)
网络帧工作在OSI模型的第二层(数据链路层)。它们主要基于介质访问控制(MAC)地址,用来管理局域网(LAN)内的通信。IEEE 802.11网络也不例外。作为一名无线分析专业人士,在进一步探索后续章节所介绍的802.11帧内容细节之前,你需要先了解帧的基础知识。这些基础知识包括封装和帧聚合的概念。
封装
当数据在OSI模型中自上而下传递时,会被逐层封装以进行传输。OSI模型的每一层都可以被视为与目标STA中对应的同层进行“对等”通信。例如,网络层与网络层进行通信,而数据链路层与数据链路层进行通信。每一层都依赖下一层来提供相应的通信功能。例如,一个从IP地址192.168.1.8到192.168.1.12的IP数据包,需要通过基于MAC地址通信的数据链路层,即便这两个IP地址在同一子网中也是如此。
当IP数据包通过数据链路层协议进行传输时,数据链路层会在IP包前面添加帧头信息,并在帧末尾附加帧校验序列(FCS),用于在传输过程中进行差错检测。
在第1层和第2层中,业务数据单元(Service Data Units, SDUs)有其特定的名称,你应该已经熟悉:
- MAC层的物理业务数据单元(MAC Physical Service Data Unit,MSDU)
- MAC层的协议数据单元(MAC Protocol Data Unit,MPDU)
- 物理层的业务数据单元(PHY Layer Data Service Unit,PSDU)
- 物理层的协议数据单元(Physical Protocol Data Unit,PPDU)
业务数据单元(SDU)和
协议数据单元(PDU)这两个术语直接来源于OSI参考模型标准(ISO/IEC 7498-1),该标准最初发布于1996年6月16日。该文档对SDU和PDU的定义如下:
- 业务数据单元(SDU):在(N+1)层实体之间传输时,其完整性(identity)得以保留的一段信息;对于接收方的(N)层实体来说,这段信息不被解释或处理。
- 协议数据单元(PDU):在(N)层协议中指定的一段数据,包含(N)层协议控制信息以及可能包含的(N)层用户数据。
在上述定义中,
(N)只是一个表示层次的占位符。例如,如果你考虑的是网络层(第3层),那么(N)指的就是网络层协议;“
(N)-用户数据”指的则是网络层协议(如IP)携带的用户数据和相应的控制信息(例如IP分组/数据包中的部分内容)。
从这个定义开始,更容易理解802.11通信中SDU和PDU的概念。所有802.11帧都包含SDU和PDU:
- MSDU(MAC Sublayer Data Unit):这是MAC子层中承载的用户数据。
- MAC PDU:可以视为LLC子层的SDU和PDU(定义于802.2标准),在任何符合802系列规范的场景中,只要使用LLC子层,就会使用这些概念。
图1.10展示了SDU和PDU在802.11帧实现中的位置。MSDU存在于MAC子层,携带了MAC子层从更高层(例如网络层)接收的数据。MAC子层会读取MSDU中的头部信息并在末尾添加FCS(帧校验序列),生成MPDU(即MAC层PDU),然后将MPDU交给物理层(PHY)进行处理。
需要进一步澄清的是,PSDU是指在MPDU前面添加PLCP(物理层汇聚协议,Physical Layer Convergence Protocol)前导和头部之后的MAC数据单元;一旦PLCP头被加上,MAC子层输出的MPDU就成为PHY层所看到的PSDU。随后PHY层将PSDU进行最后的处理后发出的就是PPDU(物理层协议数据单元,Physical Protocol Data Unit),即真正在线上传输的最终物理帧。
PPDU通过射频介质(RF medium)进行发送,每一个PPDU中都包含一个MPDU。然而,MPDU并不总是包含上层信息。例如,Beacon帧通常默认每隔大约102.4毫秒在无线介质中发送一次。这个Beacon帧并不包含任何上层负载数据。它是一个源自AP的第二层帧,用于提供AP所提供的BSS(Basic Service Set,基本服务集)的相关信息。在这个例子中,MPDU通过PPDU进行传输,但该MPDU本身并不包含(例如)IP数据包等上层信息。
总而言之,可以这样概括:
- MPDU可以包含MSDU;
- PPDU则包含PSDU。
MSDU由MAC子层进行封装,形成MPDU;PSDU由物理层进行封装,形成PPDU。
帧聚合
除了封装(encapsulation)的概念之外,无线分析专业人士还应当了解,802.11 帧可以进行聚合(aggregation)。帧聚合最初在 802.11n(HT)中被引入,并在后续更新的 PHY 标准(如 802.11ac(VHT)和 802.11ax(HE))中继续得到支持或成为必需功能。
帧聚合是指将多个 MSDU 或 MPDU 合并为一次 PPDU 传输的过程。目前主要有两种聚合方式:Aggregated-MSDU (A-MSDU) 和 Aggregated-MPDU (A-MPDU)。
A-MSDU
A-MSDU 会将多个 MSDU 合并到一个 MPDU 中(严格来说是一个 QoS 数据帧)。例如,将多个 UDP 数据报(datagrams)封装于 IP 包后,可以进一步组装成一个 A-MSDU。这样,A-MSDU 最终就包含了多个 IP 包,并以一个基于 A-MSDU 的 MPDU 形式下传到 PHY 层。如果有需要,IP 帧本身也可以进行分片,而 PHY 层后续也可能需要添加相应的物理层头部。
当使用 A-MSDU 时,所有 MSDU 只需要一个 MAC 头部即可。这种结构能够减少开销,因为只用一个 MAC 头部就足够了。考虑到一个 MAC 头部可能达到 40 字节,把所有 MSDU 合并在一个帧中,可以节省原本需要在每个帧上重复使用的 40 字节(或更多)的开销。当然,这里所说的 MAC 开销还假设帧中启用了可选字段(关于这些帧格式的更多细节,将在后续章节中介绍)。如果不使用这些可选字段,MAC 头部依然有 36 字节,而 A-MSDU 格式仍然可以提供更高的效率。
A-MSDU 是通过将多个 MSDU(称为 A-MSDU 子帧)合并为一个 MPDU 来构建的。A-MSDU 子帧具有一个最小 14 字节的头部,其中包含目的地址(6 字节)、源地址(6 字节)以及一个长度字段(2 字节)。A-MSDU 的具体大小限制取决于该长度字段。例如,在 802.11n 中,A-MSDU 的最大大小为 7935 字节;而在 802.11ac 中,该限制提升至 11454 字节。
802.11ac 做出了一个重大改变:所有通过
802.11ac (VHT) PHY 传输的帧都必须采用
A-MPDU 形式,无论帧中包含多少个
MPDU 或
MSDU。
A-MSDU 与
A-MPDU 的区别在于:
A-MPDU 可以将一个或多个
MPDU 聚合到一次传输中,但每个
MPDU 都具有完整的 MAC 头部。同时,在
A-MPDU 中,每个
MPDU 之间还会插入一个
MPDU delimiter。合并到
A-MPDU 中的
MSDU 既可以是传统的
MSDU,也可以是
A-MSDU。图 1.12 展示了
A-MPDU 模型。
最大 A-MPDU 大小在
802.11n 中,A-MPDU 的最大大小约为
64 kB(65,535 字节/八位组)。在
802.11ac 中,A-MPDU 的最大大小约为
1 MB(1,048,575 字节/八位组)。
在某些 AP 中,可以对这个最大值进行调整。无线工程师可能会选择更改该最大值以优化 BSS 或信道。例如,如果某个信道上有大量的 VoIP 电话,而数台 802.11ac 电脑客户端又在使用大型 A-MPDU 进行通信,那么这些客户端发送大体量 A-MPDU 所占用的空中时间(air time)可能会影响到语音业务的性能。此时,减少 A-MPDU 的最大大小或许能够改善网络性能。
对于
802.11n AP,可配置的最大 A-MPDU 大小如下:
- 8191 字节
- 16,383 字节
- 32,767 字节
- 65,535 字节
对于
802.11ac AP,可配置的最大 A-MPDU 大小如下:
- 所有 802.11n 取值
- 131,071 字节
- 262,143 字节
- 524,287 字节
- 1,048,575 字节
802.11 设备所提供的服务
802.11 设备被定义为能够在第 1 层和第 2 层提供通信服务。它们所提供的服务包括:
站点服务(Station Service, SS) 和
分发系统服务(Distribution System Service, DSS)。
站点服务(SS)
SS 是一组服务,支持在同一个 BSS 内的各个 STA 之间传输 MSDU。所有 STA 都具备 SS,包括 AP、Mesh 节点和普通客户端 STA。SS 提供的服务包括:
- Authentication(认证)
- Deauthentication(解除认证)
- Data confidentiality(数据机密性 / 加密)
- MSDU delivery(MSDU 传输)
- Dynamic Frequency Selection (DFS)(动态频率选择)
- Transmit Power Control (TPC)(发射功率控制)
- Time synchronization with higher layers(与更高层的时间同步,仅在 QoS 功能中提供)
- QoS traffic scheduling(QoS 流量调度,仅在 QoS 功能中提供)
- Radio measurement(射频测量)
- Dynamic STA establishment(动态 STA 建立)
分发系统服务(DSS)
DSS 是由分发系统(Distribution System, DS)提供的一组服务,支持 AP、Mesh 网关以及扩展服务集(Extended Service Set, ESS)门户之间的互连。DS 是互连 BSS(由 AP 组成)所依赖的系统或网络,例如有线或无线桥接。DS 所使用的介质称为 DSM(DS Medium),可以是以太网线缆、射频 Mesh 等。
DSS 提供的服务包括:
- Association(关联)
- Disassociation(解除关联)
- Distribution(分发)
- Integration(集成)
- Reassociation(重新关联)
- Interworking with the DS (in a mesh)(与 DS 的互通(在 Mesh 环境中))
下图使用了802.11-2016标准中的图4-14,展示了SS、DSS和DS的概念。请注意,STA 1–6均具备SS,但并非都拥有DSS。然而,STA 2和STA 3是AP,因此同时具有SS和DSS。还要注意图中呈“云状”的DS,它将BSS 1和BSS 2互连在一起,从而形成一个ESS。