原文地址:点击打开链接
ns3 中 802.11 Phy 和 Channel 对应于 YansWifiPhy 和 YansWifiChannel 两个类,它们分别有对应的 Helper 类,辅助配置工作。
YansWifiPhy 描述的是天线相关参数,比如 TxGain, RxGain, RxRoiseFigure 等。 YansWifiPhy 应用依赖于 YansWifiChannel 中的两个成员变量 PropagationDelayModel 和 PropagationLossModel。
PropagationDelayModel 很好理解,就是无线电的传播模型,通常使用 ConstantPropagationDelayModel 并使用缺省值,光速 c = 3.0 e+8 传播即可。
PropagationLossModel 对应的是无线传播衰减模型。信号衰减模型本身很复杂,对应的模型很多。从ns2过度过来一定知道的模型有 free space, two-ray ground, shadowing 模型等。一般认为 shadowing 模型已经能够很好的仿真了。在 ns3 中定义了更加丰富的信号衰减模型,名字也区别于 ns2。比如 free space 模型在ns3 中称为 Ferris 模型。 Shadowing 模型在ns3 中称为 LogDistancePropagationLossModel.
其中,L 表示信号衰减程度,采用 dB 计量。 如果知道发送端发出的信号功率,和节点间距离,就能够计算出接收端接收到的信号功率。
看到这里,有个疑问是,ns3 中数据包是怎么丢失的?更具体一点,知道了接收信号强度,RxGain, RxRoiseFigure 等参数后,如何判断某个数据包是丢失还是没有丢失呢? 更上层的问题是,如何计算无线传送距离呢?在讨论无线干涉模型时有这么几个距离需要关注:1. 传输距离; 2. 干涉距离;3. 载波检测距离。
ns3 中 YansWifiPhy 中包含两个属性与这些距离相关,它们是 EnergyDetectionThreshold (ED)和 CcaModelThreshold (CCA). 缺省设置, ED = -96 dbm, CCA = -99 dbm. 也就是说 ED 要大于 CCA. CCA 是 Clear Channel Assessment 的首字母缩写。CCA 的功能定义在不同的物理模型中是不同的。比如, DSSS 模型中,CCA 的功能定义如下:

- CCA Mode 1: 能量高于ED。一旦检测到能量高于ED阈值,CCA 就报信道忙;
- CCA Mode 2: 仅依赖 CS。不管检测到的能量是高于 ED,还是低于 ED,只要高于 CS 阈值就报告信道忙;
- CCA Mode 3: 检测到 CS,并且高于 ED。CCA 报告信道忙的前提,既要求检测的能量高于 CS 阈值,又要高于 ED 阈值。

YansWifiPhy::SendPacket 启动数据包发送:
m_channel->Send (this, packet, GetPowerDbm (txPower) + m_txGainDb, txMode, preamble);
YansWifiChannel::Send 将把数据包发送到所有注册在此channel的物理设备,并调用对应的接收函数:
Simulator::ScheduleWithContext (dstNode,
delay, &YansWifiChannel::Receive, this,
j, copy, rxPowerDbm, wifiMode, preamble);
YansWifiPhy::Receive 调用:
m_phyList[i]->StartReceivePacket (packet, rxPowerDbm, txMode, preamble);
YansWifiPhy::StartReceivePacket 启动物理层接收数据包,物理层根据当前状态的不同决定是否启动接收过程。当物理设备处于Switching, Rx, Tx 时,都会丢掉该数据包,当物理设备处于 CCA_Busy 和 Idle 状态时,并且接收信号强度高于 ED 阈值时,进入下一步处理:
m_endRxEvent = Simulator::Schedule (rxDuration, &YansWifiPhy::EndReceive, this,
packet,
event);
InterferenceHelper::CalculatePer 从 chunck 的尺度计算 Packet Error Rate (per). 物理设备判断接收成功与否的方式太简单,即在[0, 1]区间均匀抽样,如果随机数大于 per, 则认为接收成功,否则失败。
chunck 的划分不是以调制边界为基础的,而是以物理设备所在地的snr 保持不变的时间端为依据。每个比特块的出错概率通过 ErrorRateModel 计算出。目前 ns3 中仅仅定义了一个 YansErrorRateModel。ErrorRateModel 能够计算出在当时的 snr 条件下,以特定的调制模式,比如 BPSK 或 QAM 等,以特定的传送速率,获得的 BER (Bit error rate)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/66458.html