
DCF / EDCA 完整流程、参数与时延换算下面全部基于工业场景主流5 GHz OFDMWi‑Fi 5 / Wi‑Fi 6基础物理层常量\begin{align}SIFS 16\ \mu s \\SlotTime 9\ \mu s\end{align}SIFS短帧间隔专门用于应答帧ACK、CTS、BlockAck收到帧之后等 SIFS 立刻回复不走竞争、没有退避。一、DCFDistributed Coordination FunctionDCF 是 802.11 原始分布式接入没有业务优先级单队列。公式DIFSDIFS SIFS 2 \times SlotTime代入数值DIFS 16 2\times 9 \boldsymbol{34\ \mu s}DCF 参数竞争窗口CW_{min}15,\quad CW_{max}1023碰撞之后窗口更新CW \min(2\times CW 1,\ CW_{max})发送成功CW 重置回 CW_{min}15平均退避均匀随机取值区间 [0,CW]\overline{Backoff} \frac{CW}{2} \times SlotTime初始窗口平均退避\frac{15}{2} \times 9 67.5\ \mu s最坏窗口拉满平均退避\frac{1023}{2} \times 9 \approx 4603.5\ \mu sDCF 完整发送流程1. 队列有待发报文网卡持续做 CCA载波侦听检测信道忙闲2. 信道忙持续等待不启动任何计时器3. 信道从忙转为空闲开始计时必须连续空闲满 DIFS34 μs中间一旦信道变忙计时器清零重新等待4. DIFS 条件满足进入随机退避阶段如果是本次第一次进入退避随机选出退避计数器[0,CW]5. 逐 Slot 判断当前 Slot 信道空闲计数器减一信道被占用计数器冻结数值保留不清零信道再次空闲后重新凑齐完整 DIFS继续用剩余计数器递减6. 计数器归零抢占信道发送数据帧7. 等待 ACK- 发送成功收到 ACK发送方重置 CW接收方收到数据之后等待 SIFS16 μs回复 ACK- 发送失败碰撞 / ACK 丢失超时判定失败CW 指数放大后续重传DCFRTS/CTS 握手版本开启 RTS/CTS发包前握手时序RTS \xrightarrow{SIFS} CTS \xrightarrow{SIFS} Data \xrightarrow{SIFS} ACK规则RTS 的发送方仍然要先走 DCFDIFS 退避抢到信道CTS / ACK 属于应答帧仅等待 SIFS不走竞争。二、EDCAEnhanced Distributed Channel AccessWMMEDCA 是 802.11e 对 DCF 的 QoS 增强。STA 内部拆成 4 个独立访问类别AC每个 AC 拥有独立队列、独立退避计数器、独立参数。四个访问类别AC 业务AC_VO Voice语音 / 最高优先级AGV 急停、运动控制AC_VI Video视频AC_BE Best Effort默认尽力心跳、普通业务AC_BK Background后台日志、批量上传公式AIFSEDCA 使用 AIFS 替代 DCF 的 DIFSAIFS SIFS AIFSN \times SlotTimeWMM 默认参数与时间换算标准 WMM 默认值5G OFDMAC AIFSN AIFSμs CWmin CWmax 初始平均退避μsAC_VO 2 3 7AC_VI 2 7 15AC_BE 3 15 1023AC_BK 7 15 1023窗口更新公式和 DCF 完全一致CW \min(2\times CW 1,\ CW_{max})EDCA 完整流程单条 AC 的逻辑和 DCF 很像只是每个 AC 使用自己一套 AIFS / CW1. 报文入队报文根据 UPUser Priority映射进入对应 AC 的发送队列每个 AC 独立维护退避计数器2. CCA 侦听信道信道忙就等待3. 信道释放开始计时必须连续空闲满本 AC 的 AIFS信道中途变忙计时清零4. AIFS 满足进入退避随机选取退避值退避过程信道被抢占计数器冻结5. 计数器归零尝试发送EDCA 独有的虚拟碰撞同一个 STA 内部多个 AC 的退避计数器同时减到零发生虚拟碰撞。内部直接放行优先级更高 AC低优先级 AC 视为碰撞执行窗口回退空中不会真正产生帧碰撞DCF 没有这个机制。EDCA 与 DCF 的关键差异DCF EDCA队列 单队列 四路独立 AC 队列前置间隔 DIFS固定 34 μs AIFS每个 AC 独立参数 全局一套 CWmin / CWmax 每个 AC 独立 CW内部抢占 无 虚拟碰撞高优先级优先优先级 无区分 VO VI BE BK三、报文优先级标记链路补充UPUser Priority空口真正决定进入哪个 AC 的标记取值 07UP AC6、7 AC_VO4、5 AC_VI0、3 AC_BE1、2 AC_BKDSCP三层 IPIP 头标记端到端。AGVLinux发包一般是应用 / iptables / tc 设置 DSCP内核再映射为 UP。802.1PPCPVLAN tag 里面的二层优先级有线交换机识别Wi‑Fi 空口本身不带 VLAN tag无线 MAC 不会直接读取 802.1P。四、上行 / 下行优先级位置上行AGV → AP发送主体AGV无线 STA网卡。网卡硬件内部四个 EDCA 队列竞争信道。两种方式1. AGV 本机打 DSCP精细机器人侧标记驱动映射 UP报文直接进入本机硬件 VO / VI发包时直接使用高优先级 EDCA 参数2. AP 侧流映射业务不动AGV 报文无标记AP 根据源 IP / 端口重新映射但是上行报文在 AGV 发送时仍然走 BE优先级处理发生在 AP下行服务器 → AP → AGV无线发送主体是 AP下行报文空口竞争是 AP 的 EDCA 队列。两种方式1. 服务器标记 DSCP服务器发包打上 DSCP报文经过有线网络送到 APAP 读取 DSCP映射 UP放入 AP 的高优先级发送队列端到端标记2. AP 流识别推荐服务器不用修改AP 根据目的 IP / 端口识别发给 AGV 的控制报文在 AP 内部直接映射到目标 AC服务器侧零改动一句话总结下行无线空口最终调度由 AP 的发送队列决定服务器只是可选标记点不是必须配置。五、针对你的仓储 AGV 的重点调参回顾你的现状小包、心跳为主整体流量小于 1 Mbps担心 AC_BE 默认 AIFS 43 μs比 DCF 多等 9 μs。工业 AP 支持自定义每个 AC 的 AIFSN可以把 AC_BE 的 AIFSN 从默认 3 修改为 2此时AIFS 16 2\times 9 34\ \mu s调参之后BE 的前置等待对齐 DCF但仍然保留 BE 的大窗口CWmin15兼顾两点1. 消除多余的 9 μs 空闲等待2. 大窗口保证多台 AGV 同时发包时随机退避散开降低碰撞概率对比 VO 的小窗口可选方案对比1. 全部报文切 VO时延最低但大量心跳小包并发容易碰撞重传率抬升2. 原厂默认 BE简单但前置多等待 9 μs3. 调参 BEAIFSN2推荐方案时延改善抗碰撞能力强六、容易踩坑点1. 冻结机制不管 DCF / EDCA退避阶段信道被占用计数器冻结而不是清零信道恢复后需要重新补齐完整 DIFS / AIFS再继续递减剩余退避2. Beacon 下发参数EDCA 参数AIFSN / ECW是 AP 通过 Beacon 广播终端跟随调参主体是 AP3. WMM 开关网卡 WMM 关闭直接回退 DCF四路 AC 失效