DCF / EDCA 完整流程、参数与时延换算
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 失效
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)