# QoS 服务质量保障 ## WiFi QoS 概述 WiFi 的 QoS(Quality of Service)机制确保不同类型的应用流量获得差异化的服务等级。对于语音、视频等实时应用,QoS 至关重要——没有它,一个大文件下载可能让 VoIP 通话变得不可用。 ## WMM(Wi-Fi Multimedia) WMM 是 Wi-Fi Alliance 对 802.11e QoS 功能的认证规范,是目前最广泛部署的 WiFi QoS 实现。 ### WMM 四大功能域 | 功能域 | 说明 | |--------|------| | QoS 数据帧格式 | 添加 QoS Control 字段 | | AC(Access Category)优先级 | 4 个优先级队列 | | TXOP(Transmission Opportunity) | 不同 AC 获得不同的传输机会 | | PS-Poll / APSD | QoS 感知的省电机制 | ## 访问类别(Access Categories) WMM 定义了 4 个 AC,每个有不同的参数: | AC | 名称 | 优先级 | CWmin | CWmax | AIFSN | TXOP limit | |----|------|--------|-------|-------|-------|-----------| | VO | Voice | 最高 (3) | 2 | 3 | 2 | 1.5 ms | | VI | Video | 高 (2) | 4 | 7 | 2 | 3.0 ms | | BE | Best Effort | 中 (1) | 15 | 31 | 3 | 99 ms | | BK | Background | 低 (0) | 15 | 1023 | 7 | 99 ms | ### 参数含义 - **CWmin/CWmax**:竞争窗口大小,越小越容易抢到信道 - **AIFSN**(Arbitration Inter Frame Space Number):在 DIFS 基础上额外等待的时隙数 ``` 等待时间 = DIFS + AIFSN × slot_time VO: 34μs + 2×9μs = 52μs (最快) BK: 34μs + 7×9μs = 97μs (最慢) ``` - **TXOP limit**:一次获得信道后最多连续传输的时间 ## DSCP 到 UP 到 AC 的映射 网络流量通过 DSCP(Differentiated Services Code Point)标记,WiFi MAC 层将其映射为 UP(User Priority),再归入 AC: | DSCP 值 | UP | AC | 典型应用 | |---------|----|-----|---------| | 46 (EF) | 0 | VO | VoIP 语音 | | 34-44 (AF41-AF43, CS5-CS6) | 4-5 | VI | 视频会议、流媒体 | | 0 (Default), 10 (CS1) | 0-2 | BE | Web浏览、邮件、一般数据 | | 8 (CS1), 其他低优先级 | 1 | BK | 软件更新、备份 | ### UP(User Priority)字段位置 ``` QoS Control Field: │ TID (3 bits) │ EOSP (1 bit) │ A-MSDU Present (1 bit) │ A-Control (variable) │ │ │ │ │ └── UP/TID ────┘ ``` ## Block Ack(块确认) 传统 802.11 每个数据帧都需要一个 ACK,Block Ack 允许批量确认: ### 正常 ACK vs Block Ack ``` 正常模式: Data1 → ACK, Data2 → ACK, Data3 → ACK, Data4 → ACK (4个ACK帧 = 大量开销) Block Ack 模式: BlockAckReq → [Data1, Data2, Data3, Data4] → BlockAck (位图确认) (1个BA帧 = 显著减少开销) ``` ### Block Ack 类型 | 类型 | 说明 | |------|------| | Immediate BA | 收到 BA Request 后立即回复 BA | | Delayed BA | 先回复 BA Ack,稍后发送实际 BA | | Compressed BA | 使用压缩格式减少开销 | ### Block Ack 位图 ``` BlockAck Bitmap (64 bits): [SSSN][SSSN+1]...[SSSN+63] 1 1 0 1 ... ✓ ✓ ✗ ✓ ✓ = 成功接收, ✗ = 需要重传 ``` ## A-MSDU 与 A-MPDU 聚合 ### A-MSDU(Aggregate MSDU) 在 MAC 层将多个 MSDU 聚合成一个大的 MSDU: ``` ┌─────────────────────────────────────┐ │ A-MSDU │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐│ │ │ MSDU 1 │ │ MSDU 2 │ │ MSDU 3 ││ │ │ (addr+ │ │ (addr+ │ │ (addr+ ││ │ │ data) │ │ data) │ │ data) ││ │ └─────────┘ └─────────┘ └─────────┘│ └─────────────────────────────────────┘ ``` - **优势**:减少 MAC header 和 FCS 开销 - **局限**:任何一个 MSDU 出错,整个 A-MSDU 重传 ### A-MPDU(Aggregate MPDU) 在 PHY 层将多个 MPDU 聚合成一个 PPDU: ``` ┌──────────────────────────────────────┐ │ A-MPDU (PPDU) │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │MPDU 1 │ │MPDU 2 │ │MPDU 3 │ ...│ │ │+delim+ │ │+delim+ │ │+delim+ │ │ │ │ FCS │ │ FCS │ │ FCS │ │ │ └────────┘ └────────┘ └────────┘ │ └──────────────────────────────────────┘ ``` - **优势**:单个 MPDU 出错只需重传该 MPDU - **推荐**:现代 WiFi 首选 A-MPDU ### 聚合效果对比 | 模式 | 10个1000字节帧的开销 | 效率提升 | |------|---------------------|---------| | 无聚合 | ~400 bytes (headers+ACKs) | 基准 | | A-MSDU | ~80 bytes | ~5x | | A-MPDU | ~120 bytes | ~3x(更可靠) | ## QoS 配置最佳实践 1. **启用 WMM**:所有现代设备都应启用 2. **正确标记流量**:确保路由器/交换机保留 DSCP 标记 3. **VO 队列调优**:语音流量需要低延迟,适当减少 TXOP 4. **限制 BK 带宽**:防止后台下载占用过多信道时间