news 2026/10/28 10:10:16

DCF / EDCA 完整流程、参数与时延换算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 失效

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 10:09:39

Docker安装详解--基于Ubuntu环境

目录 1. Docker Server版本安装 1.1 Ubuntu 安装(以华为云 Ubuntu 20.04 为例) 1.2 实战经验 1.2.1 Docker 镜像源修改 1.2.2 Docker 目录修改 望读者阅读本文之后能够掌握如何安装 docker。(使用Xshell进行操作) 正文开…

作者头像 李华
网站建设 2026/10/28 10:09:00

电商用户画像构建方案:多源数据融合与DeepSeek偏好预测实战

简介:这份213页的PDF方案面向电商数据从业者、算法工程师与推荐系统学习者,围绕多源数据融合下的用户画像构建展开,系统解决消费者行为分析与偏好预测中的工程落地问题。内容从行业痛点与DeepSeek方案定位切入,依次覆盖多源数据采…

作者头像 李华
网站建设 2026/10/28 10:08:08

从算力竞赛到系统效率:AI芯片的真实生产力

1. 这场竞赛的“分水岭”:算力不再是唯一答案1.1 算力竞赛到底在比什么过去十年,AI芯片行业的竞争逻辑其实非常单调:比谁的“峰值算力”数字更吓人。GPU厂商发布产品时,必给一张表格,里面列满FP16、BF16、INT8、稀疏算…

作者头像 李华
网站建设 2026/10/28 10:07:41

context-mode设计解析:从硬编码到动态上下文模式切换

1. 从“context-mode”这个命名说起:它到底指什么第一次看到“context-mode”这个词,很多人会下意识地把它当成某个具体框架的配置项,或者某个库里的枚举值。但如果你在工程一线待过几年,就会发现这个词其实是一个跨领域的设计概念…

作者头像 李华
网站建设 2026/10/28 10:07:20

网盘直链下载油猴脚本完整指南:LinkSwift 九大网盘直链解析

网盘直链下载油猴脚本完整指南:LinkSwift 九大网盘直链解析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…

作者头像 李华