ns3 中 802.11 Phy & Channel

原文:http://fajun82.blog.163.com/blog/static/16292252720104129738222/

ns3 中 802.11 Phy 和 Channel 对应于 YansWifiPhy 和 YansWifiChannel两个类,它们分别有对应的 Helper 类,辅助配置工作。

YansWifiPhy 描述的是天线相关参数,比如 TxGain, RxGain, RxRoiseFigure 等。YansWifiPhy 应用依赖于 YansWifiChannel 中的两个成员变量 PropagationDelayModel 和PropagationLossModel。

PropagationDelayModel 很好理解,就是无线电的传播模型,通常使用ConstantPropagationDelay
Model 并使用缺省值,光速 c = 3.0 e+8 传播即可。

PropagationLossModel对应的是无线传播衰减模型。信号衰减模型本身很复杂,对应的模型很多。从ns2过度过来一定知道的模型有 free space,two-ray ground, shadowing 模型等。一般认为 shadowing 模型已经能够很好的仿真了。在 ns3中定义了更加丰富的信号衰减模型,名字也区别于 ns2。比如 free space 模型在ns3 中称为 Ferris 模型。Shadowing 模型在ns3 中称为 LogDistancePropagationLo ssModel.

                                                                                                    ns3 中 802.11 Phy Channel - Aaron - 技术人生
其中,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 阈值。
ns3 中数据在物理层的发送过程是这样的。首先,下图显示了物理设备和信道直接的关系,如下:
ns3 中 802.11 Phy Channel - Aaron - 技术人生
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)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值