基于MATLAB的CSMA/CA协议吞吐量与多站点竞争性能仿真系统 README
项目简介
本项目是一个高精度的无线网络MAC层仿真环境,基于MATLAB开发。项目旨在深度分析IEEE 802.11 DCF(分布式协调功能)中的CSMA/CA(载波监听多路访问/冲突避免)协议在不同用户密度下的性能表现。
系统通过构建离散事件驱动的仿真核心,完整复现了节点争抢信道的过程,并结合Bianchi经典理论模型进行对比验证。该工具能够帮助研究人员和学生直观理解无线网络中的二进制指数退避(BEB)机制、碰撞检测逻辑以及网络负载对饱和吞吐量的影响。
主要功能特性
- 高保真IEEE 802.11 DCF仿真:完整模拟了DIFS、SIFS、ACK确认机制以及时隙(Slot)同步机制。
- 二进制指数退避算法(BEB):实现了竞争窗口(CW)在发生碰撞时的翻倍(直至CWmax)以及成功传输后的重置逻辑。
- 虚拟时隙加速技术:采用“跳过空闲时隙”的算法逻辑,而非逐时隙步进,极大地提高了仿真效率。
- 双模验证:系统同时运行蒙特卡洛(Monte Carlo)仿真和Bianchi理论数值解运算,实时对比仿真值与理论极限。
- 动态参数配置:支持自定义PHY/MAC层参数(如传输速率、包长、时隙时间等),默认参数参考IEEE 802.11g标准(54Mbps)。
- 性能可视化:自动生成“饱和吞吐量 vs 站点数量”和“碰撞概率 vs 站点数量”的对比曲线图。
系统要求
- MATLAB R2016a 及以上版本
- 无需额外工具箱(仅使用基础数学运算与绘图功能)
使用方法
- 将项目代码保存为
main.m 文件。 - 在MATLAB环境下打开该文件。
- 点击“运行”或在命令行窗口输入
main 并回车。 - 程序将在命令行输出不同站点数量下的实时仿真数据(理论值与仿真值对比)。
- 运行结束后,系统将自动弹出两个图形窗口展示分析结果。
代码实现逻辑与算法详解
本项目核心代码集中在一个主文件 main.m 中,主要包含三个部分:参数配置与主控循环、蒙特卡洛离散事件仿真函数、Bianchi理论模型计算函数。
1. 仿真参数配置与主控逻辑
程序首先定义了PHY/MAC层的物理参数,采用ERP-OFDM参考标准:
- 时序参数:定义了Slot Time (9us)、SIFS (10us) 和 DIFS (28us)。
- 传输时间计算:根据数据速率(54Mbps)和基础速率(6Mbps)精确计算了数据帧传输时间 ($T_{data}$) 和ACK确认帧传输时间 ($T_{ack}$)。
- 事件持续时间:
*
成功传输 ($T_s$):包含数据帧传输、SIFS等待、ACK传输以及DIFS等待时间。
*
碰撞 ($T_c$):包含数据帧传输(假设无ACK判定为碰撞)和DIFS等待时间。
- 主循环:遍历站点数量(默认从1到51,步长为5)。在每一轮循环中,分别调用仿真函数和理论计算函数,并记录各项指标。
2. 蒙特卡洛离散事件仿真 (run_csmaca_simulation)
这是系统的核心引擎,采用
虚拟时隙(Virtual Slot)机理:
- 状态初始化:为每个站点分配初始竞争窗口 ($CW_{min}$) 和 随机退避计数器。
- 时间推进机制:
* 程序不逐个模拟空闲时隙,而是直接寻找所有站点中
最小的剩余退避值 ($min_bo$)。
* 系统时间直接增加 $min_bo times SlotTime$,所有站点的计数器减去该值。
* 检测计数器归零的站点数量。
*
单节点发送(成功):系统时间增加 $T_s$,累计有效载荷比特数。发送节点重置CW为 $CW_{min}$ 并重新选择退避值。
*
多节点发送(碰撞):系统时间增加 $T_c$,记录碰撞次数。所有冲突节点的CW执行倍增操作($min((CW+1)times2 - 1, CW_{max})$),并重新选择退避值。
- 吞吐量计算:最终吞吐量 = 总成功传输比特数 / 总仿真时间。
3. Bianchi 理论模型计算 (calc_bianchi_model)
该函数实现了著名的Bianchi非线性方程组数值解,用于验证仿真的准确性:
- 核心方程:基于不动点迭代法(Fixed-point iteration),循环求解两个耦合变量:
*
$tau$ (Tau):节点在任意时隙发送数据的概率。
*
$p$ (Collision Probability):节点发送数据时遭遇碰撞的条件概率,公式为 $p = 1 - (1-tau)^{n-1}$。
- 迭代收敛:通过设定容差($1e-7$)控制迭代结束,确保解的精度。
- 理论吞吐量推导:利用求得的 $tau$ 计算成功传输概率 $P_s$ 和传输发生概率 $P_{tr}$,进而代入标准归一化吞吐量公式计算理论极限值。
4. 结果可视化
程序最后通过
close all 清理旧窗口,并生成两张分析图表:
- 吞吐量分析图:黑色虚线代表理论模型,红色实线圆点代表仿真结果。横轴为站点数量,纵轴为饱和吞吐量(Mbps)。
- 碰撞概率分析图:蓝色虚线代表理论模型,品红色实线方块代表仿真结果。横轴为站点数量,纵轴为信道碰撞概率。
这两张图能够清晰地展示随着网络中竞争站点数量的增加,碰撞概率如何上升,以及网络总吞吐量如何趋于饱和或下降。