DCF / EDCA 完整流程、参数与时延换算
 
下面全部基于工业场景主流:5 GHz OFDM(Wi‑Fi 5 / Wi‑Fi 6)
基础物理层常量

\begin{align}
SIFS &= 16\ \mu s \\
SlotTime &= 9\ \mu s
\end{align}

 
SIFS:短帧间隔,专门用于应答帧(ACK、CTS、BlockAck),收到帧之后等 SIFS 立刻回复,不走竞争、没有退避。
 
一、DCF(Distributed Coordination Function)
 
DCF 是 802.11 原始分布式接入,没有业务优先级,单队列。
 
公式:DIFS
 

DIFS = 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 s

 
DCF 完整发送流程
 
1. 队列有待发报文,网卡持续做 CCA(载波侦听)检测信道忙闲
2. 信道忙:持续等待,不启动任何计时器
3. 信道从忙转为空闲,开始计时,必须连续空闲满 DIFS(34 μs);中间一旦信道变忙,计时器清零,重新等待
4. DIFS 条件满足,进入随机退避阶段
如果是本次第一次进入退避,随机选出退避计数器:[0,CW]
5. 逐 Slot 判断
当前 Slot 信道空闲:计数器减一;信道被占用,计数器冻结(数值保留不清零),信道再次空闲后,重新凑齐完整 DIFS,继续用剩余计数器递减
6. 计数器归零,抢占信道,发送数据帧
7. 等待 ACK
- 发送成功:收到 ACK:发送方重置 CW;接收方收到数据之后,等待 SIFS(16 μs)回复 ACK
- 发送失败(碰撞 / ACK 丢失):超时判定失败,CW 指数放大,后续重传
 
DCF(RTS/CTS 握手版本)
 
开启 RTS/CTS:发包前握手
时序:

RTS \xrightarrow{SIFS} CTS \xrightarrow{SIFS} Data \xrightarrow{SIFS} ACK

规则:RTS 的发送方,仍然要先走 DCF(DIFS + 退避)抢到信道;CTS / ACK 属于应答帧,仅等待 SIFS,不走竞争。
 
 
 
二、EDCA(Enhanced Distributed Channel Access,WMM)
 
EDCA 是 802.11e 对 DCF 的 QoS 增强。STA 内部拆成 4 个独立访问类别(AC),每个 AC 拥有独立队列、独立退避计数器、独立参数。
 
四个访问类别
 
AC 业务 
AC_VO Voice,语音 / 最高优先级(AGV 急停、运动控制) 
AC_VI Video,视频 
AC_BE Best Effort,默认尽力(心跳、普通业务) 
AC_BK Background,后台(日志、批量上传) 
 
公式:AIFS
 
EDCA 使用 AIFS 替代 DCF 的 DIFS

AIFS = SIFS + AIFSN \times SlotTime

 
WMM 默认参数与时间换算
 
标准 WMM 默认值(5G OFDM)
 
AC AIFSN AIFS(μs) CWmin CWmax 初始平均退避(μs) 
AC_VO 2   3 7   
AC_VI 2   7 15   
AC_BE 3   15 1023   
AC_BK 7   15 1023   
 
窗口更新公式和 DCF 完全一致:

CW = \min(2\times CW + 1,\ CW_{max})

 
EDCA 完整流程
 
单条 AC 的逻辑和 DCF 很像,只是每个 AC 使用自己一套 AIFS / CW
 
1. 报文入队:报文根据 UP(User 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 
 
 
 
三、报文优先级标记链路(补充)
 
UP(User Priority)
 
空口真正决定进入哪个 AC 的标记,取值 0~7
 
UP AC 
6、7 AC_VO 
4、5 AC_VI 
0、3 AC_BE 
1、2 AC_BK 
 
DSCP(三层 IP)
 
IP 头标记,端到端。AGV(Linux)发包一般是应用 / iptables / tc 设置 DSCP,内核再映射为 UP。
 
802.1P(PCP)
 
VLAN 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,报文经过有线网络送到 AP;AP 读取 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 的大窗口(CWmin=15),兼顾两点:
 
1. 消除多余的 9 μs 空闲等待
2. 大窗口保证多台 AGV 同时发包时,随机退避散开,降低碰撞概率(对比 VO 的小窗口)
 
可选方案对比
 
1. 全部报文切 VO:时延最低,但大量心跳小包并发容易碰撞,重传率抬升
2. 原厂默认 BE:简单,但前置多等待 9 μs
3. 调参 BE(AIFSN=2):推荐方案,时延改善,抗碰撞能力强
 
 
 
六、容易踩坑点
 
1. 冻结机制:不管 DCF / EDCA,退避阶段信道被占用,计数器冻结而不是清零;信道恢复后,需要重新补齐完整 DIFS / AIFS,再继续递减剩余退避
2. Beacon 下发参数:EDCA 参数(AIFSN / ECW)是 AP 通过 Beacon 广播,终端跟随;调参主体是 AP
3. WMM 开关:网卡 WMM 关闭,直接回退 DCF,四路 AC 失效

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐