Atri Website

Back

一、实验概述#

1.1 实验目的#

本实验旨在巩固本学期所学的信息网络建模与仿真相关知识,具体包括:

  1. 离散事件系统仿真方法与蒙特卡洛仿真方法的基本原理与实现
  2. 随机变量与随机过程的生成方法
  3. 业务源模型的建模与仿真
  4. 信道模型的建模与仿真
  5. 拓扑与运动模型的建模与仿真
  6. 竞争式 MAC 协议的工作原理与性能对比

通过在已有仿真代码基础上修改信源模型、运动模型和信道模型三个模块,对比 baseline(基线组)与 enhanced(增强组)两组实验结果,培养信息网络仿真方面的动手实践能力。

1.2 实验内容简述#

本实验以无线网络中三种竞争式 MAC 协议的性能仿真为核心任务。在原始仿真代码的基础上,从三个维度对仿真场景进行增强,使其更贴近真实无线环境:

  1. 信源模型改进:将单一泊松业务源替换为混合突发业务模型,模拟部分终端短时连续发包的场景
  2. 运动模型引入:为终端添加随机路点移动模型,替代静态终端假设
  3. 信道模型增强:在路径损耗和阴影衰落的基础上叠加 Rayleigh 快衰落,并采用 SINR 捕获判决替代传统冲突模型

通过 baseline 与 enhanced 两组实验的对比,量化分析三个增强因素共同引入后对协议吞吐量、冲突次数和平均时延的综合影响。

二、实验原理#

2.1 离散事件系统仿真#

离散事件系统仿真是一种事件驱动的时间推进机制。与固定步长仿真按等间隔 Δt\Delta t 检查事件不同,DES 的仿真时钟直接跳到下一个事件发生的时刻,事件之间没有中间时间步。当没有任何事件发生时,系统状态保持不变,直到下一个事件触发状态更新。

DES 的优势在于:固定步长需要选择合适的时间粒度——太粗会遗漏事件,太细会浪费计算资源;而 DES 直接跳到事件时刻,既不遗漏也不浪费。本仿真中,数据包到达、发送完成、冲突发生等均为离散事件,每次事件触发一次状态更新,事件之间的时间间隔不等。

代码中体现为主循环的时间推进:

while True:
    next_time = protocol_func(now_time)  # 推进到下一个事件
    ...
    now_time = next_time                 # 时间跳转,无中间步长
python

2.2 蒙特卡洛仿真方法#

蒙特卡洛仿真方法是一种基于随机抽样和统计平均的数值计算方法。其理论基础是大数定律:设 X1,X2,,XnX_1, X_2, \ldots, X_n 为独立同分布的随机变量,期望为 E[X]=μE[X] = \mu,则当 nn \to \infty 时,

Xˉn=1ni=1nXiPμ\bar{X}_n = \frac{1}{n}\sum_{i=1}^{n} X_i \xrightarrow{P} \mu

即样本均值以概率收敛于真实期望。根据中心极限定理,样本均值的标准误差为 σXˉ=σ/n\sigma_{\bar{X}} = \sigma / \sqrt{n},重复次数扩大 100 倍,精度提高 10 倍。

本实验采用参数扫描的方式应用蒙特卡洛方法:对归一化业务负载 GG 进行分段扫描,0.1 至 1.0 以 0.1 为步长,1.2 至 2.0 以 0.2 为步长,共 15 个负载点。每个 GG 值独立运行一次完整的离散事件仿真,每次仿真累计处理 spend=10000\text{spend} = 10000 个成功数据包后计算吞吐量 SS,最终以 GG 为横轴、SS 为纵轴绘制吞吐量-负载曲线。当前实现对每个 GG 值运行一次较长仿真,通过累计大量成功分组降低随机波动。本实验系统涉及多个随机过程(泊松到达、随机退避、阴影衰落、Rayleigh 衰落),难以推导封闭形式的解析解,因此采用蒙特卡洛仿真方法。

2.3 随机变量生成:逆变换法#

逆变换法是一种从均匀分布随机变量生成其他分布随机变量的通用方法。其核心思想是利用目标分布累积分布函数(CDF)的反函数,将均匀随机数映射为目标分布的随机数。

设目标随机变量 XX 的 CDF 为 F(x)=P(Xx)F(x) = P(X \leq x),若已有 UUniform(0,1)U \sim \text{Uniform}(0,1),则:

X=F1(U)X = F^{-1}(U)

服从目标分布。对于指数分布,CDF 为 F(x)=1eλxF(x) = 1 - e^{-\lambda x},令 U=1eλXU = 1 - e^{-\lambda X},解出:

X=1λln(1U)X = -\frac{1}{\lambda} \ln(1 - U)

在本实验中,数据包的到达间隔服从指数分布,均值为 TintT_{int}(即 λ=1/Tint\lambda = 1/T_{int})。代码中通过逆变换法生成到达间隔:

self.mgtime = -self.Tint * np.log(1 - np.random.rand(self.Mnum))
python

其中 np.random.rand() 生成 UUniform(0,1)U \sim \text{Uniform}(0,1)1U1-U 避免 ln(0)\ln(0) 的数值问题,Tintln(1U)-T_{int} \cdot \ln(1-U) 即为服从均值为 TintT_{int} 的指数分布随机变量。

2.4 业务源模型#

业务源模型是仿真信号处理链路的第一个环节,位于 MAC 层之前。它的功能是为每个终端生成数据包,并决定每个数据包的到达时间——即描述终端”何时发包”和”发多频繁”。在仿真中,信源模块不关心数据包的内容,只负责按特定的随机过程为每个终端安排到达时刻。

泊松过程#

泊松过程是描述随机事件发生的经典数学模型。设 N(t)N(t) 表示时间区间 [0,t][0, t] 内事件发生的次数,若满足独立增量性、平稳增量性和普通性,则称 {N(t),t0}\{N(t), t \geq 0\} 为强度为 λ\lambda 的泊松过程。

泊松过程的一个重要性质是:相邻事件的到达间隔服从指数分布。设第 nn 次事件与第 n+1n+1 次事件之间的时间间隔为 Δtn\Delta t_n,则:

ΔtnExp(λ),E[Δt]=1λ\Delta t_n \sim \text{Exp}(\lambda), \quad E[\Delta t] = \frac{1}{\lambda}

指数分布具有无记忆性:P(Δt>s+tΔt>s)=P(Δt>t)P(\Delta t > s + t \mid \Delta t > s) = P(\Delta t > t),即无论已经等待了多长时间,下一个事件在未来的到达概率与刚一开始等待时相同。

本实验中,参数关系为:

T=Ttranln(1G/Mnum)T = -\frac{T_{tran}}{\ln(1 - G/M_{num})}

其中 Ttran=L/RsT_{tran} = L / R_s 为一个数据包的传输时间,GG 为归一化业务负载,Mnum=100M_{num} = 100 为终端数量。当 GG 增大时,TintT_{int} 减小,终端发包更频繁,信道负载更高。

突发业务模型#

纯泊松过程中,所有终端的发包强度相同,无法反映真实网络中不同终端业务特征的差异。突发业务模型将终端分为两类:

  • 普通终端:保持原始泊松过程,到达间隔为 TT
  • 突发终端:到达间隔缩短为 T/fburstT / f_{burst},其中 fburst=4.0f_{burst} = 4.0

通过设定突发终端比例 p=0.2p = 0.2(即 20%),系统平均到达率为:

λˉ=(1p)λ+pfburstλ=λ(1p+pfburst)=1.6λ\bar{\lambda} = (1 - p) \cdot \lambda + p \cdot f_{burst} \cdot \lambda = \lambda \cdot (1 - p + p \cdot f_{burst}) = 1.6\lambda

即混合模式下系统整体到达率是纯泊松模式的 1.6 倍。突发终端的密集发包会提高局部竞争强度,通常会增加冲突风险;其对最终吞吐量的影响需要结合信道捕获、终端移动和协议机制共同分析。

2.5 信道模型#

信道模型是仿真信号处理链路的第四环节,位于发射机之后、接收机之前。它的功能是模拟信号从发射端到接收端的传播过程,计算每个终端的接收功率。如表一所示,本实验涉及三层信道衰落,从外到内依次为:

表一 信道衰落层次及作用

层次模型性质作用
第一层对数距离路径损耗确定性决定接收功率基本量级
第二层阴影衰落随机(慢变)模拟障碍物遮挡造成的功率波动
第三层Rayleigh 衰落随机(快变)模拟多径传播造成的快速信号波动

对数距离路径损耗模型#

电磁波传播时信号功率随距离增大而衰减,对数距离路径损耗模型描述了这一基本规律:

PL(d)=PL0+10αlog10(d)[dB]PL(d) = PL_0 + 10\alpha \log_{10}(d) \quad [\text{dB}]

其中 PL0=38.5PL_0 = 38.5 dB 为 1 米参考距离处的路径损耗,α=3\alpha = 3 为路径损耗指数(对应城市宏蜂窝场景),dd 为发射端到接收端的距离(米)。

接收功率的计算公式为:

Prx=Ptx+Gtx+GrxPL010αlog10(d)S[dBm]P_{rx} = P_{tx} + G_{tx} + G_{rx} - PL_0 - 10\alpha \log_{10}(d) - S \quad [\text{dBm}]

其中 PtxP_{tx} 为发射功率,GtxG_{tx}GrxG_{rx} 为天线增益,SS 为阴影衰落。当终端移动时,距离 dd 随之变化,接收功率也随之动态更新。

阴影衰落#

对数距离路径损耗模型是确定性的,相同距离的终端接收功率完全相同。但现实中,传播路径上的建筑物、树木等障碍物会对信号产生遮挡,造成额外的功率损耗。阴影衰落(大尺度衰落)描述了这种由于障碍物遮挡导致的功率波动,其特点是变化缓慢,终端移动几十米甚至上百米才会发生明显变化。

阴影衰落在路径损耗基础上叠加一个随机衰落项:

SN(0,σ2)S \sim \mathcal{N}(0, \sigma^2)

其中 σ=6\sigma = 6 dB 为阴影衰落标准差。SS 的物理含义是障碍物遮挡造成的额外功率损耗(dB),正值表示信号被衰减,负值表示信号相对增强。阴影衰落使得相同距离的终端有不同的接收功率,离基站近的终端不一定信号最强。

噪声功率计算#

接收机在接收信号时不可避免地受到热噪声的影响。热噪声功率计算公式为:

N=N0+10log10(BW)+NF[dBm]N = N_0 + 10\log_{10}(BW) + NF \quad [\text{dBm}]

其中 N0=174N_0 = -174 dBm/Hz 为热噪声功率谱密度(对应常温 290K),BW=Rs=256×103BW = R_s = 256 \times 10^3 Hz 为信号带宽,NF=5NF = 5 dB 为接收机噪声系数。代入数值:N=174+54.1+5=114.9N = -174 + 54.1 + 5 = -114.9 dBm。

噪声功率在初始化时一次性计算,仿真过程中保持不变,作为 SINR 计算的分母组成部分。

Rayleigh 衰落#

路径损耗和阴影衰落描述的是信号在较长距离上的变化规律,但信号还会在很短的距离内发生快速波动。这是由于信号经过建筑物、地面等物体的多次反射、散射、衍射后,以多条路径叠加的形式到达接收端。这些多径信号的相位不同,叠加后可能增强也可能抵消,造成接收信号的快速波动。

当传播环境中没有直射路径(NLOS)时,接收幅度服从 Rayleigh 分布。Rayleigh 衰落的信道增益建模为复高斯随机变量:

hCN(0,1)h \sim \mathcal{CN}(0, 1)

其中 h=hR+jhIh = h_R + j h_IhR,hIN(0,1/2)h_R, h_I \sim \mathcal{N}(0, 1/2)。功率增益 h2|h|^2 服从指数分布,均值为 1,即 Rayleigh 衰落的平均增益为 0 dB,不会改变接收功率的长期均值,只引入短期波动。

叠加 Rayleigh 衰落后,接收功率变为:

Prx(t)=Ptx+Gtx+GrxPL010αlog10(d)S+10log10(h(t)2)P_{rx}(t) = P_{tx} + G_{tx} + G_{rx} - PL_0 - 10\alpha \log_{10}(d) - S + 10\log_{10}(|h(t)|^2)

Rayleigh 衰落是时变的,每次计算接收功率时重新采样,模拟信道的快速波动。两组实验的信道配置差异如表二所示。

表二 baseline 与 enhanced 信道配置差异

配置baselineenhanced
信道模型路径损耗 + 阴影衰落路径损耗 + 阴影衰落 + Rayleigh 快衰落
阴影衰落标准差1.0 dB6.0 dB

2.6 SINR 与捕获效应#

为什么用 SINR 而不是 SNR#

SNR(信噪比)只考虑信号功率与噪声功率之比,适用于单用户点对点通信场景。本仿真的场景是多个终端竞争同一信道,当多个终端同时发送时,其他终端的信号对目标终端而言就是干扰。此时必须使用 SINR(信号干扰噪声比),同时考虑噪声和干扰:

SINR=PsignalNnoise+Pinterference\text{SINR} = \frac{P_{signal}}{N_{noise} + P_{interference}}

SNR 与 SINR 的主要差异如表三所示。

表三 SNR 与 SINR 的适用场景对比

指标分子分母适用场景
SNR信号功率噪声功率单用户点对点通信
SINR信号功率噪声 + 干扰功率多用户竞争信道(本仿真)

如果在本仿真中使用 SNR 而忽略干扰项,等于假设同时发送的终端之间互不影响,这与现实不符,也无法体现冲突和捕获效应。

捕获效应#

当多个终端同时发送数据包时,传统观点认为所有信号互相干扰,接收端无法解调任何一个信号。但实际情况并非如此:如果多个同时发送的信号中,最强信号的 SINR 超过解调门限,接收端仍然可以从干扰中解调出这个最强信号,这就是捕获效应。

捕获判决的数学表达为:

SINRmax=PmaxN+jiPrx,jγth\text{SINR}_{max} = \frac{P_{max}}{N + \sum_{j \neq i} P_{rx,j}} \geq \gamma_{th}

其中 PmaxP_{max} 为最强信号的接收功率,NN 为热噪声功率,jiPrx,j\sum_{j \neq i} P_{rx,j} 为其他同时发送终端的干扰功率之和,γth=10\gamma_{th} = 10 dB 为解调门限。只要最强信号的 SINR 达到门限,该信号就能被成功解调,其余信号仍然冲突丢失。

捕获效应提升了系统的整体吞吐量:在传统冲突模型下完全丢失的数据包,在捕获效应下可能有一部分被成功接收。但这也引入了不公平性——离基站近、信号强的终端更容易被捕获成功。

2.7 拓扑与运动模型#

拓扑与运动模型不属于信号处理主链路,而是信道模块的前置依赖,为信道模块提供终端位置输入。它的功能是在覆盖区域内生成终端的初始位置,并在仿真过程中根据运动模型动态更新终端位置。终端位置决定了每个终端到基站的距离,进而影响路径损耗和接收功率。

终端位置生成#

在半径 r=100r = 100 m 的圆形覆盖区域内生成 Mnum=100M_{num} = 100 个终端,AP 位于 (0,0,5)(0, 0, 5)。初始终端位置沿用原始参考代码的离散随机撒点方式:随机产生整数坐标的 xxyy,通过圆域约束 x2+y2r2x^2 + y^2 \leq r^2 和重复位置检查后写入坐标数组,避免多个终端完全重合。

随机路点模型中的目标点生成则使用面积均匀采样方法,对半径进行平方根变换以避免目标点集中在圆心附近:

r=rU,UUniform(0,1)r' = r \cdot \sqrt{U}, \quad U \sim \text{Uniform}(0, 1)

角度 θ\theta[0,2π)[0, 2\pi) 上均匀采样,转换为直角坐标:

x=rcosθ,y=rsinθx = r' \cos\theta, \quad y = r' \sin\theta

终端与基站的三维距离为 d=x2+y2+25d = \sqrt{x^2 + y^2 + 25},由于 AP 高度为 5m,即使终端位于圆心,最小距离也为 5m。

随机路点模型#

静态终端模型假设终端位置永远不变,这在真实场景中几乎不存在。Random Waypoint 模型引入了”有目的地的移动”和”到达后暂停”两个特征,比简单的随机游走更贴近真实行为。

每个终端重复以下循环:

  1. 选择目标点:在半径 rr 的圆形覆盖区域内随机选择目标点 (xtarget,ytarget)(x_{target}, y_{target}),采用均匀分布生成
  2. 选择移动速度:在 [vmin,vmax][v_{min}, v_{max}] 范围内随机选取速度 vv,本实验 vmin=0.5v_{min} = 0.5vmax=2.0v_{max} = 2.0
  3. 向目标移动:计算当前朝目标方向的单位向量,位置按速度推进:
r(t+Δt)=r(t)+vdΔt\vec{r}(t + \Delta t) = \vec{r}(t) + v \cdot \vec{d} \cdot \Delta t

当剩余距离小于步长时,直接将终端定位到目标点。

  1. 到达后暂停:暂停时间 tpause=tmaxUpt_{pause} = t_{max} \cdot U_pUpUniform(0,1)U_p \sim \text{Uniform}(0, 1),本实验 tmax=1.0t_{max} = 1.0 秒。暂停结束后选择新目标点和速度,重复循环。

Random Waypoint 模型为信道模块提供随时间变化的终端位置,使得距离 di(t)d_i(t) 和接收功率 Prx,i(t)P_{rx,i}(t) 随仿真推进动态更新。终端移动带来的信道条件变化直接影响 SINR 计算和捕获效应的判决结果。

2.8 MAC 协议#

MAC 协议是仿真信号处理链路的第二环节,位于信源之后、发射机之前。它的功能是决定终端何时可以接入信道,当终端有数据待发送时,由 MAC 协议控制发送时机、处理冲突、安排重传。不同的 MAC 协议在信道利用率和冲突概率之间有不同的权衡。

Pure ALOHA#

Pure ALOHA 由 Abramson 于 1970 年提出,最初用于解决卫星通信中的随机接入问题。其核心规则只有一条:终端有数据就立即发送,不做任何信道检测。

工作流程:终端按泊松过程产生数据包,到达后立即占用信道开始发送,发送持续时间为 Ttran=L/RsT_{tran} = L / R_s。当多个终端同时占用信道时,通过 SINR 捕获判决判断冲突。冲突终端按指数退避策略等待一段随机时间后重新发送:tbackoff=Rintln(1U)t_{backoff} = -R_{int} \cdot \ln(1 - U)

Pure ALOHA 的关键缺陷在于冲突窗口:一个数据包在时刻 tt 开始发送,其冲突窗口为 [tTtran,t+Ttran][t - T_{tran}, t + T_{tran}],总长度为 2Ttran2T_{tran}。任何其他终端在这个时间窗口内开始发送都会发生冲突。

理论吞吐量公式为:

S=Ge2GS = G \cdot e^{-2G}

G=0.5G = 0.5 时吞吐量达到最大值 Smax=1/(2e)0.184S_{max} = 1/(2e) \approx 0.184,即信道最多只有约 18.4% 的时间被有效利用。

Slotted ALOHA#

Slotted ALOHA 由 Roberts 于 1972 年提出,通过引入时隙结构将冲突窗口缩小一半,使最大吞吐量翻倍。其核心改进是将时间划分为等长的时隙,终端只能在时隙边界开始发送。

时隙长度 Tslot=Ttran=L/RsT_{slot} = T_{tran} = L / R_s。终端产生数据包后不立即发送,而是等待到下一个时隙边界才开始发送:

tsend=(tarrivalTslot+1)Tslott_{send} = \left(\left\lfloor \frac{t_{arrival}}{T_{slot}} \right\rfloor + 1\right) \cdot T_{slot}

由于所有发送都在时隙边界开始,冲突只可能发生在同一时隙内,冲突窗口从 2Ttran2T_{tran} 缩小为 TtranT_{tran}

理论吞吐量公式为:

S=GeGS = G \cdot e^{-G}

G=1G = 1 时吞吐量达到最大值 Smax=1/e0.368S_{max} = 1/e \approx 0.368,即信道最多约 36.8% 的时间被有效利用。Pure ALOHA 与 Slotted ALOHA 的关键差异如表四所示。

表四 Pure ALOHA 与 Slotted ALOHA 特征对比

特征Pure ALOHASlotted ALOHA
发送时机有数据立即发送仅在时隙边界发送
冲突窗口2Ttran2T_{tran}TtranT_{tran}
理论最大吞吐量1/2e0.1841/2e \approx 0.1841/e0.3681/e \approx 0.368
最优工作点 GG0.51.

np-CSMA#

ALOHA 协议的核心问题是终端在发送前完全不感知信道状态,导致冲突概率很高。CSMA(载波侦听多路访问)协议的核心改进是:发送前先侦听信道,只有信道空闲时才发送,信道忙则等待。

CSMA 有多种变体,按”信道忙时如何处理”分为:1-坚持 CSMA(持续侦听,信道一空闲就立即发送)、p-坚持 CSMA(以概率 pp 在信道空闲时发送)、非坚持 CSMA(信道忙时随机退避一段时间再重新侦听)。非坚持 CSMA 的优势在于避免了多个终端同时等待信道空闲后立即发送导致的群冲突。

np-CSMA 的工作流程:终端按泊松过程产生数据包,到达后先调用载波侦听函数检查信道是否空闲。侦听机制通过检查当前时刻是否落在某次传输窗口内来判断信道状态,并引入传播延迟 DtimeTtranD_{time} \cdot T_{tran} 模拟侦听延迟——刚开始的发送不会立即被侦听到。若信道空闲,立即发送;若信道忙,按指数退避等待一段随机时间后重新侦听。若多个终端同时侦听到信道空闲并同时发送,仍会发生冲突,冲突终端同样按指数退避后重新进入侦听流程。三种协议的机制差异如表五所示。

表五 三种 MAC 协议机制对比

特征Pure ALOHASlotted ALOHAnp-CSMA
发送前侦听
发送时机有数据立即发送时隙边界发送侦听空闲后发送
信道忙时处理不关心不关心随机退避后再侦听
冲突概率最高中等最低

2.9 性能指标#

性能指标是仿真信号处理链路的最后一个环节,位于接收机之后。它的功能是统计仿真过程中的各项数据,计算吞吐量、业务负载等系统级指标,用于评估不同 MAC 协议在不同条件下的性能表现。

吞吐量 SS#

吞吐量 SS 衡量的是信道被有效利用的比例,即单位时间内有多少比例的时间被用于成功传输数据。它是评估 MAC 协议性能最核心的指标,直接反映了协议的效率。

S=成功传输的比特数仿真总时间×符号速率=SplenRsTtotalS = \frac{\text{成功传输的比特数}}{\text{仿真总时间} \times \text{符号速率}} = \frac{S_{plen}}{R_s \cdot T_{total}}

SS 是无量纲的归一化指标,取值范围为 [0,1][0, 1]SS 需要与业务负载 GG 配合使用:低负载时 SGS \approx G(几乎无冲突),中等负载时 SS 达到峰值(协议的最优工作点),高负载时 SS 下降(冲突增多导致信道利用率降低)。

业务负载 GG#

业务负载 GG 衡量的是终端向信道”请求”发送数据的强度,即单位时间内所有终端试图发送的总数据量与信道容量的比值。GG 是系统的输入,SS 是系统的输出,两者的关系反映了协议的效率。

G=总传输比特数仿真总时间×符号速率=TplenRsTtotalG = \frac{\text{总传输比特数}}{\text{仿真总时间} \times \text{符号速率}} = \frac{T_{plen}}{R_s \cdot T_{total}}

GG 同样是无量纲的归一化指标。G<1G < 1 表示信道未饱和,G=1G = 1 为信道饱和点,G>1G > 1 表示信道过载,冲突不可避免。本实验通过扫描 GG 从 0.1 到 2.0,逐步增大业务负载,观察协议在不同负载下的吞吐量表现。

吞吐量-负载曲线#

GG 为横轴、SS 为纵轴绘制的曲线反映了协议在不同负载下的性能。低负载时 SGS \approx G(几乎无冲突),高负载时 SS 下降(冲突增多),峰值点为协议的最优工作点。

理论曲线(S=Ge2GS = Ge^{-2G}S=GeGS = Ge^{-G})假设当多个终端同时发送时所有数据包全部丢失。但本仿真实现了 SINR 捕获判决,当最强信号的 SINR 超过解调门限时,该数据包仍可被成功解调。这意味着理论上的”冲突”在仿真中有一部分变成了”成功传输”,因此仿真得到的吞吐量 SS 高于理论值。这种差异在高负载时尤为明显:GG 越大,同时发送的终端越多,冲突越频繁,但捕获效应”挽救”了一部分数据包,使得仿真曲线在理论曲线上方。

三、原始代码分析#

3.1 系统架构#

本章中的“原始代码分析”以课程给定参考代码的基本仿真框架为参照,同时结合当前 mac_protocols.py 中保留下来的 baseline 逻辑进行说明。也就是说,第三章主要解释参考程序原本具备的系统结构和协议仿真流程;第四章再说明本实验在该框架上新增的混合业务源、随机路点运动模型和 Rayleigh 快衰落信道。

本实验的仿真程序以 mac_protocols.py 为核心文件,整体采用离散事件仿真思想实现无线随机接入网络中三种竞争式 MAC 协议的性能比较。程序的主体是 WirelessNetworkSimulator 类,一个仿真实例对应一组实验配置,例如 baseline 或 enhanced。实例内部维护终端位置、业务到达时间、MAC 状态、信道参数、运动模型状态和统计量;外部调用 simulate_all_protocols() 后,程序会依次运行 Pure ALOHA、Slotted ALOHA 和 np-CSMA 三种协议,并输出吞吐量、冲突次数、平均等待时间和捕获成功次数等结果。

从信号处理流程看,程序可以分为六个主要环节:信源、MAC 层、发射机、信道、接收机和统计分析。信源模块负责生成终端的数据包到达时间;MAC 层根据协议规则决定立即发送、时隙发送、载波侦听或退避;发射机模块给出发射功率和天线增益;信道模块根据终端位置计算路径损耗、阴影衰落和快衰落后的接收功率;接收机模块根据 SINR 门限判断是否发生捕获成功;统计模块记录成功分组数、总发送分组数、冲突次数和等待时间,并形成吞吐量-业务负载曲线,如图一所示。

图一 无线信号处理流水线示意图

程序的主要状态变量包括 MstatemtimemgtimeMstimemxy。其中 Mstate 记录终端状态,取值包括 STANDBYTRANSMITCOLLISIONmgtime 记录业务包产生时刻;mtime 记录终端下一次事件时刻;Mstime 记录发送开始时刻,用于 np-CSMA 的载波侦听;mxy 保存终端的三维坐标。仿真主循环位于 _run_single_simulation(),该函数每次推进到下一个离散事件,而不是按固定时间步扫描,因此仿真效率较高,也符合离散事件系统仿真的建模思想。

3.2 各模块功能说明#

信源模块对应 _init_traffic_state()_next_packet_time()。在基础泊松业务下,每个终端的数据包到达间隔服从指数分布,代码中使用反函数法生成随机到达间隔:

Δt=Tintln(1U)\Delta t = -T_{int}\ln(1-U)

其中 UU[0,1)[0,1) 上的均匀随机数,TintT_{int} 为平均到达间隔。业务负载 GG 越大,平均到达间隔越短,终端产生数据包越频繁。

MAC 模块包含三种协议的事件处理函数。_pure_aloha_protocol() 实现 Pure ALOHA,终端有包到达后立即发送,不进行时隙对齐和载波侦听;_slotted_aloha_protocol() 实现 Slotted ALOHA,将到达时间和退避后的重发时间对齐到下一个时隙边界,时隙长度等于一个数据包传输时间;_np_csma_protocol() 实现非坚持 CSMA,终端发送前先调用 _carrier_sense() 判断信道是否忙,若忙则随机退避后再尝试。三种协议的工作原理对比如图二所示。

图二 三种 MAC 协议工作原理对比示意图

发射机和信道模块主要由 _calculate_distance()_calculate_power() 实现。程序设定基站位于圆形覆盖区域中心上方,终端分布在半径 r=100r=100m 的圆形区域内。接收功率计算时先根据终端到 AP 的三维距离计算路径损耗,再叠加阴影衰落;在 enhanced 配置下,进一步叠加 Rayleigh 快衰落。

接收机模块由 _calculate_sinr()_resolve_channel() 实现。当多个终端同时处于发送或冲突状态时,程序计算所有活动发送终端的接收功率,选择接收功率最大的终端作为捕获候选,然后计算:

SINRmax=PmaxN+jiPrx,j\text{SINR}_{max}=\frac{P_{max}}{N+\sum_{j\neq i}P_{rx,j}}

SINRmax\text{SINR}_{max} 不低于门限 γth=10\gamma_{th}=10dB,则最强终端保持 TRANSMIT 状态并计为捕获成功,其余终端进入 COLLISION 状态;若不满足门限,则所有同时发送终端均按冲突处理。

统计模块在 _run_single_simulation()compute_statistics()build_comparison() 中完成。单次仿真返回的字段包括 trafficthroughputcollision_countavg_delaycapture_success_count。其中吞吐量和业务负载的计算公式分别为:

S=SplenRsTtotal,G=TplenRsTtotalS=\frac{S_{plen}}{R_sT_{total}},\qquad G=\frac{T_{plen}}{R_sT_{total}}

这里 SplenS_{plen} 是成功发送的数据包总符号数,TplenT_{plen} 是所有尝试发送的数据包总符号数,RsR_s 为符号速率,TtotalT_{total} 为仿真总时间。

3.3 原始代码的局限性#

原始参考程序能够完成三种随机接入协议的基本仿真,但其无线环境假设较理想化。首先,终端位置在初始化后保持不变,信道距离项不会随时间变化,无法反映移动终端导致的接收功率动态变化。其次,所有终端采用相同泊松业务源,业务强度完全一致,无法体现实际网络中少数终端短时间连续发包的突发现象。第三,原始信道主要考虑路径损耗和阴影衰落,缺少小尺度快衰落,对 NLOS 多径环境下接收功率的快速波动描述不足。最后,传统冲突模型往往将重叠发送直接视为全部失败,而实际无线接收中存在捕获效应,强信号终端在 SINR 足够高时仍可能被成功解调。

因此,本实验的改进目标不是改变三种 MAC 协议本身,而是在保持 Pure ALOHA、Slotted ALOHA 和 np-CSMA 可比性的前提下,从业务源、运动模型和信道模型三个维度增强仿真场景,使 baseline 与 enhanced 的对比能够体现更真实无线环境对协议性能的影响。

四、改进方案设计#

本实验采用 baseline 与 enhanced 两组实验配置进行对比。baseline 保留较基础的泊松业务、静态终端和对数距离信道;enhanced 在此基础上引入混合突发业务、随机路点运动模型和 Rayleigh 快衰落信道。为了保证比较口径一致,两组实验都使用同一套 SINR 捕获判决,差异集中在业务源、终端运动和信道衰落层次上。

4.1 改进 1:混合突发业务源模型#

业务源改进的目的是模拟真实网络中终端业务强度不均匀的情况。基础泊松模型假设所有终端具有相同平均到达率,但实际网络中常见视频上传、文件传输、短时控制消息集中上报等突发业务,少数终端可能在短时间内产生更密集的数据包。为了体现这种异质性,enhanced 配置引入混合突发业务源。

代码中通过 traffic_mode 参数区分业务模式。baseline 使用 traffic_mode="poisson",所有终端均为普通泊松源;enhanced 使用 traffic_mode="mixed",在 _init_traffic_state() 中随机选择 20% 终端作为突发终端,并用 is_burst_node 数组记录。普通终端的到达间隔均值为 TT,突发终端的到达间隔均值缩短为:

Tburst=TfburstT_{burst}=\frac{T}{f_{burst}}

其中 fburst=4f_{burst}=4。也就是说,突发终端的平均到达率是普通终端的 4 倍。若突发终端比例为 p=0.2p=0.2,则系统整体平均到达率约为:

λmixed=(1p)λ+pfburstλ\lambda_{mixed}=(1-p)\lambda+p f_{burst}\lambda

代入 p=0.2p=0.2fburst=4f_{burst}=4 得:

λmixed=0.8λ+0.8λ=1.6λ\lambda_{mixed}=0.8\lambda+0.8\lambda=1.6\lambda

因此,在相同名义负载参数下,混合业务会使实际业务到达更集中、更不均匀,更容易触发同时发送和退避,从而检验不同 MAC 协议在非均匀业务场景下的稳定性。程序实现时没有改变三种 MAC 协议的处理函数,而是在业务到达时间生成前先初始化终端类型,再根据终端类型选择不同的指数分布均值。这样做的优点是业务模型与 MAC 协议解耦,Pure ALOHA、Slotted ALOHA 和 np-CSMA 可以共享同一套业务源逻辑。

关键实现片段如下。_init_traffic_state() 在每个业务负载开始前重新选择突发终端,_next_packet_time() 则在生成下一次到达时间时判断当前终端是否属于突发源。

def _init_traffic_state(self):
    self.is_burst_node = np.zeros(self.Mnum, dtype=bool)
    if self.traffic_mode == "mixed":
        burst_num = max(1, int(self.Mnum * self.burst_ratio))
        burst_idx = np.random.choice(self.Mnum, burst_num, replace=False)
        self.is_burst_node[burst_idx] = True

def _next_packet_time(self, node_id: int, now_time: float) -> float:
    interval = self.Tint
    if self.traffic_mode == "mixed" and self.is_burst_node[node_id]:
        interval = self.Tint / self.burst_factor
    return now_time - interval * np.log(1 - random.random())
python

4.2 改进 2:随机路点运动模型#

运动模型改进的目的是使终端位置随时间变化,从而使路径损耗和接收功率不再是静态量。baseline 中终端在初始化后保持静止,终端到 AP 的距离固定;enhanced 引入随机路点模型(Random Waypoint),使终端在圆形覆盖区域内随机选择目标点、以随机速度移动、到达后暂停,再选择下一个目标点,其轨迹示意如图三所示。

图三 随机路点移动模型轨迹示意图

随机路点模型的目标点在半径 rr 的圆形区域内均匀生成。为避免节点集中在圆心附近,半径采用平方根变换:

ρ=rU1,θ=2πU2\rho=r\sqrt{U_1},\qquad \theta=2\pi U_2

目标点坐标为:

xtarget=ρcosθ,ytarget=ρsinθx_{target}=\rho\cos\theta,\qquad y_{target}=\rho\sin\theta

移动速度在 [vmin,vmax][v_{min},v_{max}] 上均匀采样:

v=vmin+(vmaxvmin)Uv=v_{min}+(v_{max}-v_{min})U

本实验中 vmin=0.5v_{min}=0.5vmax=2.0v_{max}=2.0,最大暂停时间为 1.0s。代码中 _init_mobility() 初始化每个终端的目标点和速度,_refresh_waypoint_target() 在终端完成暂停后重新选择目标点和速度,_update_positions() 在每个离散事件到来前根据当前仿真时间推进终端位置。为了降低事件密集时的计算开销,程序通过 mobility_update_interval=0.01 控制位置批量更新时间间隔。

随机路点模型与信道模块直接耦合。终端位置改变后,终端到 AP 的距离 di(t)d_i(t) 随时间变化,路径损耗和接收功率也随之变化:

Prx,i(t)=Ptx+Gtx+GrxPL(di(t))SiFi(t)P_{rx,i}(t)=P_{tx}+G_{tx}+G_{rx}-PL(d_i(t))-S_i-F_i(t)

其中 SiS_i 为阴影衰落项,Fi(t)F_i(t) 为快衰落项。移动模型本身不直接改变 MAC 协议规则,但会通过接收功率影响 SINR 捕获判决。代码实现上,_init_mobility() 为每个终端设置初始目标点和速度;_refresh_waypoint_target() 在终端到达目标并完成暂停后刷新下一段移动;_update_positions() 在离散事件推进时按照经过的时间更新位置。该函数还使用 mobility_update_interval 做更新间隔控制,避免在高负载下每个 MAC 事件都全量更新所有终端位置。

为了突出模型流程,下面给出与源码一致的伪代码。它保留了“暂停、移动、到达、刷新目标”的核心状态变化。

4.3 改进 3:Rayleigh 衰落信道与 SINR 捕获判决#

信道模型改进的目的是补充小尺度快衰落,使仿真能够描述 NLOS 多径传播下接收功率的快速随机波动。为避免阴影衰落标准差差异干扰信道对比,baseline 与 enhanced 都使用 6 dB 阴影衰落;两组在信道模型上的关键差异是 baseline 只采用对数距离路径损耗与阴影衰落,而 enhanced 在此基础上进一步叠加 Rayleigh 快衰落。信道衰落层次如图四所示。

图四 无线信道衰落层次示意图

对数距离路径损耗模型为:

PL(d)=PL0+10αlog10(d)PL(d)=PL_0+10\alpha\log_{10}(d)

其中 PL0=38.5PL_0=38.5dB,路径损耗指数 α=3\alpha=3。阴影衰落项服从高斯分布:

SN(0,σ2)S\sim\mathcal{N}(0,\sigma^2)

Rayleigh 快衰落建模为复高斯信道:

hCN(0,1),h2Exp(1)h\sim\mathcal{CN}(0,1),\qquad |h|^2\sim \text{Exp}(1)

_calculate_power() 中,当 channel_model="rayleigh" 时,程序为每次功率计算重新采样复高斯随机变量,并将 10log10(h2)10\log_{10}(|h|^2) 加到接收功率中。这样 Rayleigh 衰落不会改变长期平均功率,但会引入短时功率波动,使某些终端在特定时刻因快衰落增强而成为最强接收信号。

接收机判决由 _calculate_sinr()_resolve_channel() 共同完成。当同时发送终端集合为 I\mathcal{I} 时,程序先计算每个终端的接收功率,选择最强终端 ii^*

i=argmaxiIPrx,ii^*=\arg\max_{i\in\mathcal{I}}P_{rx,i}

再计算最强终端的 SINR:

SINRi=Prx,iN+jI,jiPrx,j\text{SINR}_{i^*}=\frac{P_{rx,i^*}}{N+\sum_{j\in\mathcal{I},j\neq i^*}P_{rx,j}}

SINRiγth\text{SINR}_{i^*}\geq \gamma_{th},其中 γth=10\gamma_{th}=10dB,则最强终端被捕获成功,其余终端判定为冲突;否则所有同时发送终端均冲突。该机制比“重叠发送全部失败”的简单冲突模型更贴近无线接收过程,也使吞吐量、冲突次数和捕获成功次数之间具有可解释的联系。

下面的代码片段体现了信道模型和接收判决的衔接。_calculate_power() 输出线性接收功率,_calculate_sinr() 选出最强信号并计算其 SINR,_resolve_channel() 根据门限恢复被捕获的最强终端。

五、仿真实验与结果分析#

5.1 实验参数设置#

每组实验均对三种协议进行业务负载扫描,扫描范围为 G=0.1,0.2,,1.0,1.2,1.4,1.6,1.8,2.0G=0.1,0.2,\ldots,1.0,1.2,1.4,1.6,1.8,2.0,每个负载点累计成功接收 10000 个数据包后停止。

表六给出了主要实验参数。

表六 主要实验参数

参数取值说明
MnumM_{num}100终端数量
spendspend10000每个业务负载下累计成功包数
rr100 m圆形覆盖半径
PtxP_{tx}20 dBm终端发射功率
α\alpha3路径损耗指数
LL128 symbols数据包长度
RsR_s256000 symbols/s符号速率
TtranT_{tran}0.0005 s单个数据包传输时间,L/RsL/R_s
N0N_0-174 dBm/Hz热噪声功率谱密度
NFNF5 dB接收机噪声系数
γth\gamma_{th}10 dBSINR 捕获门限

表七给出了 baseline 与 enhanced 的配置差异。

表七 baseline 与 enhanced 配置差异

配置项baselineenhanced
业务源泊松业务,traffic_mode="poisson"混合突发业务,traffic_mode="mixed"
运动模型静态终端,mobility_model="static"随机路点,mobility_model="random_waypoint"
信道模型对数距离路径损耗 + 阴影衰落对数距离路径损耗 + 阴影衰落 + Rayleigh 快衰落
阴影衰落标准差6 dB6 dB
SINR 捕获判决使用使用
突发终端比例参数保留,未启用混合业务20%
突发因子参数保留,未启用混合业务4.0
运动速度范围不移动0.5 到 2.0
最大暂停时间不移动1.0 s

图五是最核心的结果图,将两组实验、三种协议的吞吐量-负载曲线画在同一张图中,便于直接观察协议差异和增强模型影响。

图五 baseline 与 enhanced 三协议吞吐量-负载曲线对比

图五中的六条曲线对应 3 种协议与 2 组实验配置。整体上,np-CSMA 的吞吐量最高,Slotted ALOHA 次之,Pure ALOHA 最低,说明载波侦听和时隙同步都能减少无序竞争带来的吞吐损失。统一阴影衰落标准差后,enhanced 不再表现为所有协议都单向提升:Pure ALOHA 的最大吞吐量由 0.28685 降至 0.28211,而 Slotted ALOHA 和 np-CSMA 分别由 0.49739、0.65781 提升至 0.51805、0.66554。这说明 enhanced 综合模型同时引入了突发业务、移动性和 Rayleigh 快衰落,其结果是多因素共同作用,而不是单个模块带来的单向增益。

5.2 baseline 实验结果#

baseline 实验使用泊松业务、静态终端和对数距离信道。三种协议的统计结果如表八所示。

表八 baseline 实验统计结果

协议平均吞吐量最大吞吐量最佳 GG最佳实际负载冲突次数平均等待时间/s捕获成功次数
Pure ALOHA0.239040.286851.00.998885323140.12122143247
Slotted ALOHA0.381850.497391.61.57996768650.0547128738
np-CSMA0.419800.657812.02.0229531860.050551322

图六 baseline 下 Pure ALOHA 吞吐量-负载曲线

图六展示了 baseline 下 Pure ALOHA 的吞吐量-负载曲线。仿真曲线先随 GG 增大而上升,在 G=1.0G=1.0 附近达到最大吞吐量 0.28685,之后随着负载继续升高而下降。下降的原因是 Pure ALOHA 不做时隙同步和载波侦听,终端有包即发,高负载下重叠发送迅速增多,冲突次数累计达到 532314 次。图中理论曲线为经典公式 S=Ge2GS=Ge^{-2G},它低于仿真曲线的主要原因是经典理论假设“只要重叠发送就全部失败”,而本实验即使在 baseline 中也使用 SINR 捕获判决。路径损耗和 6 dB 阴影衰落会造成不同终端接收功率不同,当最强信号的 SINR 超过 10 dB 时,该分组仍可成功接收,因此实际吞吐量高于无捕获效应的理论值。

图七 baseline 下 Slotted ALOHA 吞吐量-负载曲线

图七展示了 baseline 下 Slotted ALOHA 的结果。与 Pure ALOHA 相比,Slotted ALOHA 将发送开始时间对齐到时隙边界,把冲突窗口从 2Ttran2T_{tran} 缩短为 TtranT_{tran},因此曲线整体更高,最大吞吐量达到 0.49739,最佳 GG 为 1.6。图中的理论曲线为 S=GeGS=Ge^{-G},同样低于实际仿真值。这不是理论公式错误,而是两者假设不同:经典 Slotted ALOHA 理论仍然采用“同一时隙中多个发送全部失败”的碰撞模型;本实验中同一时隙若出现多个终端发送,接收端仍会计算最强信号的 SINR,并在满足门限时保留一个成功包。baseline 下捕获成功次数为 28738 次,这部分成功传输会把实际吞吐量抬高到理论曲线之上。

图八 baseline 下 np-CSMA 吞吐量-负载曲线

图八展示了 baseline 下 np-CSMA 的结果。曲线在本次扫描范围内随业务负载持续上升,最大吞吐量出现在 G=2.0G=2.0,达到 0.65781。该现象说明在 G2.0G\leq 2.0 的范围内,np-CSMA 尚未表现出明显的过载下降。原因是 np-CSMA 在发送前进行载波侦听,信道忙时不会立即发送,而是随机退避后再尝试,因此总冲突次数只有 3186 次,远低于 Pure ALOHA 和 Slotted ALOHA。该图没有叠加 ALOHA 理论曲线,因为 np-CSMA 的载波侦听和退避机制不满足经典 ALOHA 理论公式的假设。

5.3 enhanced 实验结果#

enhanced 实验同时启用混合突发业务、随机路点运动模型和 Rayleigh 快衰落。阴影衰落标准差仍为 6 dB,与 baseline 保持一致。三种协议的统计结果如表九所示。

表九 enhanced 实验统计结果

协议平均吞吐量最大吞吐量最佳 GG最佳实际负载冲突次数平均等待时间/s捕获成功次数
Pure ALOHA0.233780.282110.90.948636422790.14392144881
Slotted ALOHA0.408560.518051.41.50619843830.0626132997
np-CSMA0.449030.665542.02.1162935420.057611186

图九 enhanced 下 Pure ALOHA 吞吐量-负载曲线

图九展示了 enhanced 下 Pure ALOHA 的曲线。由于混合突发业务使实际到达更集中,Pure ALOHA 的冲突压力显著增大,冲突次数从 baseline 的 532314 次增至 642279 次。虽然 Rayleigh 快衰落带来了更多瞬时功率差异,捕获成功次数也略增至 144881 次,但综合作用下最大吞吐量从 0.28685 降至 0.28211,平均等待时间升至 0.14392s。图中的经典理论曲线仍低于仿真曲线,原因同样在于理论模型没有 SINR 捕获效应;即使 enhanced 的总体最大吞吐量低于 baseline,它仍高于无捕获假设下的 Pure ALOHA 理论值。

图十 enhanced 下 Slotted ALOHA 吞吐量-负载曲线

图十展示了 enhanced 下 Slotted ALOHA 的曲线。曲线峰值达到 0.51805,最佳 GG 为 1.4,对应实际业务负载为 1.50619。与 baseline 相比,Slotted ALOHA 的最大吞吐量提升 4.15%。虽然冲突次数增加到 84383 次,平均等待时间也升至 0.06261s,但捕获成功次数增加到 32997 次,说明 Rayleigh 快衰落带来的接收功率差异在同一时隙冲突中仍有一定收益。理论曲线 S=GeGS=Ge^{-G} 低于仿真曲线,是因为理论公式假设同一时隙只要有两个及以上终端发送就全部失败,而本实验中最强信号达到 10 dB SINR 门限即可成功。

图十一 enhanced 下 np-CSMA 吞吐量-负载曲线

图十一展示了 enhanced 下 np-CSMA 的曲线。曲线仍在扫描范围内随 GG 上升,最大吞吐量为 0.66554,出现在 G=2.0G=2.0。与 baseline 相比,np-CSMA 的提升幅度较小,因为载波侦听机制已经在 MAC 层减少了大量重叠发送,物理层捕获能够发挥作用的场景有限。值得注意的是,enhanced 下 np-CSMA 的平均等待时间由 0.05055s 增至 0.05761s,冲突次数也从 3186 次增至 3542 次。这说明混合突发业务和信道波动提高了竞争复杂度,虽然吞吐量略有提升,但等待代价也随之增加。

5.4 baseline 与 enhanced 对比分析#

表十汇总了两组实验的核心对比指标。

表十 baseline 与 enhanced 核心指标对比

协议baseline 最大吞吐量enhanced 最大吞吐量最大吞吐量变化冲突次数变化平均等待时间变化/s捕获成功次数变化
Pure ALOHA0.286850.28211-1.65%+109965+0.02271+1634
Slotted ALOHA0.497390.51805+4.15%+7518+0.00790+4259
np-CSMA0.657810.66554+1.18%+356+0.00707-136

图十二 Pure ALOHA baseline 与 enhanced 对比

图十二对比了 Pure ALOHA 在 baseline 和 enhanced 下的吞吐量变化。统一阴影衰落后,enhanced 并未提升 Pure ALOHA 的最大吞吐量,反而从 0.28685 小幅下降到 0.28211。Pure ALOHA 的协议规则最简单,所有终端到达即发送,因此它对突发业务最敏感。enhanced 中捕获成功次数仅增加 1634 次,但冲突次数增加 109965 次,说明混合突发业务和移动信道波动带来的竞争压力超过了 Rayleigh 捕获收益。该图提醒我们,对 Pure ALOHA 这类无侦听协议,综合增强模型不一定表现为吞吐提升。

图十三 Slotted ALOHA baseline 与 enhanced 对比

图十三对比了 Slotted ALOHA 的两组曲线。Slotted ALOHA 是本次实验中 enhanced 相对 baseline 提升最明显的协议,最大吞吐量提升 4.15%。其原因可能是时隙结构限制了冲突发生的时间范围,而 Rayleigh 快衰落增加了同一时隙内最强信号被捕获的机会。结果上,捕获成功次数增加 4259 次,但冲突次数也增加 7518 次,平均等待时间增加 0.00790s。该图说明,Slotted ALOHA 的吞吐量收益伴随更高竞争开销,不能简单解释为“增强模型全面改善”。

图十四 np-CSMA baseline 与 enhanced 对比

图十四对比了 np-CSMA 的两组曲线。两条曲线非常接近,enhanced 的最大吞吐量只提升 1.18%。这是因为 np-CSMA 在发送前会进行载波侦听,baseline 中已经把冲突次数压低到 3186 次,因此 enhanced 的捕获机制可转化的冲突空间有限。另一方面,混合突发业务使待发送请求更集中,随机路点和快衰落使信道状态更波动,导致 enhanced 下冲突次数增加 356 次,平均等待时间增加 0.00707s。该图说明,对具备载波侦听的协议而言,增强模型更明显地体现为真实场景复杂度,而不是单纯的性能提升。

图十五 统计指标柱状图对比

图十五将最大吞吐量、冲突次数和平均等待时间三个统计指标放在同一组柱状图中。最大吞吐量方面,Slotted ALOHA 和 np-CSMA 在 enhanced 中高于 baseline,而 Pure ALOHA 略低于 baseline。冲突次数方面,三种协议在 enhanced 中均有所增加,其中 Pure ALOHA 增幅最大,说明突发业务对无侦听协议影响最强。平均等待时间方面,三种协议也均上升,反映出 enhanced 的业务源和移动信道共同增加了竞争复杂度。该图的价值在于把吞吐、冲突和时延放在一起观察,避免只用吞吐量单一指标评价协议优劣。

5.5 结果小结#

综合结果表明,三种协议的性能排序在两组实验中保持一致:np-CSMA 最高,Slotted ALOHA 次之,Pure ALOHA 最低。这与协议机制相符:Pure ALOHA 完全随机发送,冲突窗口最大;Slotted ALOHA 通过时隙同步缩短冲突窗口;np-CSMA 通过载波侦听在发送前规避忙信道,因此冲突最少。

从 baseline 到 enhanced,Slotted ALOHA 和 np-CSMA 的最大吞吐量略有提升,Pure ALOHA 则略有下降。这说明综合增强模型并不是简单提升所有协议,而是同时带来两类影响:混合突发业务和移动性会增加竞争、冲突和等待;Rayleigh 快衰落和 SINR 捕获可能把部分冲突转化为成功传输。不同协议对这两类影响的敏感性不同。

需要注意的是,当前实验是综合增强实验,混合突发业务、随机路点运动和 Rayleigh 衰落同时启用,因此第五章的结论应表述为”enhanced 综合模型对性能的影响”,不能将吞吐量提升完全归因于某一个单独模块。若后续需要进一步量化每个模块的独立贡献,可以增加消融实验,例如只开启混合业务、只开启随机路点、只开启 Rayleigh 衰落,并与 baseline 逐项比较。

六、总结与展望#

6.1 实验结论#

本实验在课程参考代码的基础上,从业务源、运动模型和信道模型三个维度对无线网络仿真场景进行了增强,并通过 baseline 与 enhanced 两组实验对比了 Pure ALOHA、Slotted ALOHA 和 np-CSMA 三种竞争式 MAC 协议的性能变化。主要结论如下。

第一,三种协议的性能排序在两组实验中保持一致:np-CSMA 最高,Slotted ALOHA 次之,Pure ALOHA 最低。这一排序与协议机制一致:Pure ALOHA 不做任何信道检测,冲突窗口最大;Slotted ALOHA 通过时隙同步将冲突窗口缩小一半;np-CSMA 在发送前进行载波侦听,信道忙时退避,冲突次数远低于前两者。

第二,enhanced 综合模型同时引入了两类相互对立的影响。一方面,混合突发业务使部分终端发包更密集,随机路点运动使终端位置随时间变化,两者共同提高了竞争复杂度,增加了冲突次数和平均等待时间。另一方面,Rayleigh 快衰落叠加阴影衰落扩大了终端间的接收功率差异,使 SINR 捕获效应更容易发生,部分冲突可以转化为成功传输。不同协议对这两类影响的敏感性不同,最终的吞吐量变化取决于两者的净效果。

第三,Slotted ALOHA 对综合增强模型最为敏感,最大吞吐量提升 4.15%。时隙结构限制了冲突发生的时间范围,而 Rayleigh 快衰落增加了同一时隙内最强信号被捕获的机会,两者协同产生了正向收益。Pure ALOHA 的最大吞吐量下降 1.65%,冲突次数增加 109965 次,说明突发业务对无侦听协议的冲击超过了 Rayleigh 捕获带来的收益。np-CSMA 的最大吞吐量仅提升 1.18%,因为载波侦听已经在 MAC 层大幅减少了冲突,物理层捕获可转化的空间有限。

第四,当前实验为综合增强实验,三个模块同时启用,因此上述结论反映的是三个因素共同作用的结果,不能将吞吐量变化完全归因于某一个单独模块。

6.2 不足与改进方向#

本实验存在以下不足,可在后续工作中加以改进。

在运动模型方面,当前随机路点模型的移动速度和暂停时间均采用均匀分布,缺少对真实场景中用户行为特征的刻画。实际场景中,行人移动速度往往服从对数正态分布,暂停时间则可能呈现重尾特征。引入更贴近实际的速度和暂停时间分布,可以使终端移动行为更加真实,也有助于观察不同运动模式对协议性能的影响。

在信道模型方面,当前实验只考虑了 NLOS 场景下的 Rayleigh 衰落,假设所有终端与基站之间没有直射路径。但在郊区、农村或无人机通信等场景中,直射路径可能存在,此时接收信号幅度服从 Rician 分布而非 Rayleigh 分布。引入 Rician 衰落并调节 KK 因子(直射分量与散射分量的功率比),可以覆盖从纯 NLOS 到强 LOS 的连续过渡,使信道模型更加完整。

在 MAC 协议方面,当前实验只对比了三种基本的竞争式协议。实际无线网络中还广泛使用 CSMA/CA(带冲突避免的载波侦听多路访问)和 TDMA(时分多址)等协议。将这些协议纳入仿真框架,可以在更丰富的协议维度上验证增强模型的适用性。

在实验设计方面,由于 enhanced 配置同时启用了三个模块,无法区分各模块的独立贡献。后续可以增加消融实验,分别只开启混合业务源、只开启随机路点运动、只开启 Rayleigh 衰落,并与 baseline 逐项对比,从而量化每个模块对吞吐量、冲突次数和平均时延的独立影响。

源码#

信息建模与仿真综合实验
Author Juyao Huang
Published at May 23, 2026
Comment seems to stuck. Try to refresh?✨