Loading...

# 5.ns3 wifi 模型文档

在本节中,将介绍 ns3 中 wifi 模型,

# Design Documentation

ns3 节点 ( nodes ) 能够包含一系列网络设备( NetDevice )对象,就像实际的计算机包含单独的接口卡一样,例如,以太网卡,WiFi,蓝牙等。通过添加 WifiNetDevice 对象到 ns3 的节点( nodes )中,它就可以创建基于 802.11 的基础设施和 adhoc 网络模型。

# Overview of the model

WifiNetDevice 模型是一个基于 IEEE 802.11 标准的无线网络接口控制器。我们将会更加详细的看到它的细节,但只是简略的细节,ns3 提供了 802.11 模型的这些方面:

基本的802.11 DCF(Distributed coordination function)基础设施和adhoc模式
802.11a 802.11b 802.11g 802.11n(包括2.4和5GHz带宽) 和802.11ac物理层
延伸与802.11n的MSDU aggregation and MPDU aggregation ,同时支持两种聚合的结合
延伸于802.11e的QoS-based EDCA and queueing
使用不同的传播损耗模型和传播延迟模型的能力,请参见章(Propagation)传播获取更多细节
不同的速率控制算法,包括Aarf,Arf,Cara,Onoe,Rraa,ConstantRate,Minstrel
802.11s(mesh),该协议在其他章节有描述

ns3 中提供的一系列 802.11 模型提供了一个精确的 802.11 规范的 MAC 层,并提供了 802.11a/b/g/n/ac 规范的不那么慢的 PHY 层模型。

ns3 ,节点可以在不同的信道上有不同的 WifiNetDevices ,同时 WifiNetDevices 可以与其他的设备类型共存;这消除了在 ns2 中结构的限制。然而,现在,还不存在交叉信道干扰或耦合的模型。

WifiNetDevices 的源码在目录 src/wifi 下。

代码的实现是模块化的,大约提供了四个级别的模型:

    1.PHY layer models
    2.MAC low models: they implement DCF and EDCAF
    3.MAC high models:they implement the MAC-level beacon generation, probing, and association state machines
    4.可以被MAC low models使用的Rate control algorithms

下面,我们介绍每一层的概述。关于更多的细节稍候会讨论。

MAC high models

现在已有三个 MAC high models ,该模型提供了三个无线拓扑元素 ( non-mesh,mesh equivalent , 都是 ns3::RegularWifiMac 的子类,不再这里讨论它): Access Point(AP)(ns3::ApWifiMac),non-AP Station(STA)(ns3::StaWifiMac) , 和独立于基础服务设备的 STA(ns3::AdhocWifiMac) .

三种模型中最简单的是 ns3::AdhocWifiMac , 它实现了无任何种类的信标的产生,探测和关联的 WIFI MAC

     The ns3::StaWifiMac class implements an active probing and association state machine that handles automatic re-association whenever too many beacons are missed. Finally, ns3::ApWifiMac implements an AP that generates periodic beacons, and that accepts every attempt to associate.

这三种 MAC high models 共享同一个父类 ns3::RegularWifiMac , 它暴露出 MAC 配置的几个属性: QosSupported 属性,允许配置 802.11e/WMM-STYPE QOS 支持; HtSupported 属性,允许配置 802.11n 高吞吐量形式; VhtSupported 属性,允许配置 802.11ac 更高吞吐量样式支持。

MAC low layer

MAC low layer 分为以下三个组件:

1. ns3::MacLow 该类管理 RTS/CTS/DATA/ACK交互。
2. ns3::DcfManager和ns3::DcfState,实现了DCF和EDCAF功能。
3. ns3::DcaTxop和ns3::EdcaTxopN,用于处理在需要的情况下的包队列,包分组,包重传等。The ns3::DcaTxop object is used high MACs that are not QoS-enabled,and for transmission of frames (e.g., of type Management) that the standard says should access the medium using the DCF. ns3::EdcaTxopN is is used by QoS-enabled high MACs and also performs 802.11n-style MSDU aggregation.

Rate control algorithms

有几种 MAC low layer 使用的 rate control algorithms 。完整的可以使用的速率控制算法将会在一个单独的一节中提供。

PHY layer models

PHY 层是在 ns3::WifiPhy 类中单独实现的。物理层模型的实现的完整的描述是在论文: Yet Another Network Simulator 中,基于 802.11b 的可用的结果的验证报告在 techinical report 中。

# The WifiChannel and WifiPhy models

无线信道 wifichannel 可以使用一组 ns3::WifiNetDevice 网络接口连接在一起。 ns3::WifiPhy 对象是在 wifinetdevice 中的,用于接收从信道接收的数据比特。对于信道的传播模型,可以使用传播模块 Propagation
本节总结了误码率计算的描述,该误码率在论文中把在 802.11a 协议中的前向纠错考虑了进去,并描述了一个包是否被成功接收所实现的算法。请参阅 Yet Another Network Simulator 的更多细节。

PHY 层的状态会是下面五种其中的一种:

  1. TX: the PHY is currently transmitting a signal on behalf of its associated MAC (phy 层正在发送与之关联的 MAC 的信号)
  2. RX: the PHY is synchronized on a signal and is waiting until it has received its last bit to forward it to the MAC.phy 已经同步了信号,正在等待止到接收到最后一个比特位,然后转发到 MAC 层)
  3. IDLE: the PHY is not in the TX, RX, or CCA BUSY states .(PHY 层空闲)
  4. CCA Busy: the PHY is not in TX or RX state but the measured energy is higher than the energy detection threshold .(PHY 不在 TX,RX 状态,但是测得的能量高于能量探测阈值)
  5. SLEEP: the PHY is in a power save mode and cannot send nor receive frames .(PHY 处于节能状态,不发送也不接收)

PHY 不是 IDLE 状态时(也就是说,另外的更早的包已经在接收器中同步了,或者他自己在发送数据),一个新的包的第一个比特位被接收,此时,接收的包将被丢弃。否则,如果 PHY 处于 IDLE 或者 CCA Busy 状态,我们计算这个新的信号的第一位比特的接收能量,并于能量探测阈值进行比较 (as defined by the Clear Channel Assessment function mode 1) 。如果包的能量高, PHY 则转移状态到 RX ,并且当包的最后一个比特位被接收时发起一个事件。否则, PHY 停留在 IDLE 或者 CCA Busy 状态,并丢弃这个包。

WifiChannel configuration

WifiChannel 的实现使用了传播损耗模型和传播延时模型,这两个模型在 ns3Propagation 模块中有提供。

# The MAC model

802.11 分布式协调功能( DCF )是用来计算当授予访问传输介质的时候。如果我们使用一个经过每一个时隙的周期性的定时器,那么实现 DCF 将会特别的容易,

DCF 程序的回退在【ieee80211】的 9.2.5.2 节中描述的。

  1. 无论由物理层或者虚拟 CS 机制所指示的发现媒质忙,回退程序应为 STA 调用来传送一个帧。
  2. 即使没有另外传输任务在当前队列中,A backoff procedure shall be performed immediately after the end of every transmission with the More Frag-ments bit set to 0 of an MPDU of type Data, Management, or Control with subtype PS-Poll

总之,如果队列空,一个新到的包应该在信道感知空闲 DIFS 后,马上被传输。如果队列不空,并且在一个成功的 MPDU 之后没有更多的分组,节点应该开始回退定时器。

一些用户观察到,802.11MAC 与空队列的空闲信道将会马上发送达到该模型的第一帧,而无须等待 DIFS 或者回退,并想知道这是否合规。根据协议标准, The backoff procedure shall be invoked for a STA to transfer a frame when finding the medium busy as indicated by either the physical or virtual CS mechanism. 因此在这种情况下,媒介并不能发现在当前忙,站点将会马上传输。

更高层的 MAC 功能的实现是在一系列 C++ 类中,功能:

• packet fragmentation and defragmentation,
• use of the RTS/CTS protocol,
• rate control algorithm,
• connection and disconnection to and from an Access Point,
• the MAC transmission queue,
• beacon generation,
• MSDU aggregation,
• etc.

# Rate control algorithms

多种速率控制算法在 ns3 中是可用的。一些速率控制算法是用在真实设备中的实际算法;其他一些算法是在文献中找到的。下面的速率控制算法是在 MAC low layer 中使用的:

真实设备中的算法有:

ArfWifiManager(WifiHelper的默认算法)【Automatic Rate Fallback(ARF) algorithm 自动速率回退算法 1997年】
OnoeWifiManager
ConstantRateWifiManager
MinstrelWifiManager
文献中的算法:
IdealWifiManager
AarfWifiManager【2004年】
AmrrWifiManager
CaraWifiManager
RraaWifiManager【2006年】
AarfcdWifiManager
ParfWifiManager
AparfWifiManager

ConstantRateWifiManager

该算法对每一个包使用相同的传输模式。用户可以设置对于所有 unicast 包的期望的 DataMode 和所有 request 控制包的 ControlMode (例如 RTS ).

控制响应帧(比如 CTS,ACK )的传输参数的选择规则在 802.11 标准中是相当清晰的。 ns3 遵从了这样的标准和从一系列正常速率或者强制性速率选择作为控制响应帧的速率的选择性。这就意味着,即使 ConstantRateWifiManager 被使用,控制响应帧也可能使用不同的速率进行发送。

ConstantRateWifiManagerControlMode 属性仅仅别用与 RTS 帧。 CTSACK 帧的速率是根据 802.11 标准进行选择的。然而,用户仍然可以手动添加 WifiMode 到基本的速率中,这将允许控制响应帧以其他的速率进行发送。请参考 project wiki 进一步了解这是如何实现的。

可用的属性有:
DataMode:(默认WifiMode::OfdmRate6Mbps)specify a mode for all non-unicast packets
ControlMode:(默认WifiMode::OfdmRate6Mbps)specify a mode for all ‘request’ control packets

IdealWifiManager

这个速率控制算法根据前一个包的发送的信噪比 SNR 来选择最好的模式。考虑节点 A 发送单播包到节点 B。当 B 成功接收到从 A 发送的包时,B 记录所接受的包的 SNRns3::SnrTag , 然后,添加标签到 ACK 并返回给 A。通过这样做,A 能够了解发送到 B 的包的信噪比 SNR ,并使用一种带宽之外的机制(因此算法名字就是 ideal )。然后 A 使用 SNR 从一个一系列 SNR 阈值中选择一个传输模式,而这个阈值是从目标 BER 和特定模式的 SNR/BER 曲线构建的。
可以的属性有:
BerThreshold (默认 10e-6): The maximum Bit Error Rate that is used to calculate the SNR threshold for each mode . 最大误码率,用于计算每种模式的 SNR 阈值。

MinstrelWifiManager

该算法是源于 madwifi 工程的速率控制算法。它是 Linux 内核默认的速率控制算法。
Minstre l 跟踪每个成功发送可用速率帧的概率。然后通过乘以速率的概率计算期望的吞吐量。这种方法被选择用于确保不会选择最低速率而趋向于最高速率(尽管最低速率具有更高的概率)。
monstre l 中,大致 10% 的传输是在所谓的 lookaround rate 发送的。 lookaround rate 的目标就是迫使 minstrel 尝试使用比当前速率更高的速率。

IEEE 802.11 标准在物理层支持利用多种速率进行传输,但是并未规定速率选择策略。速率自适应的速率选择算法核心是及时获取能够实时反映信道状态的信息。
目前获取信道信息的方法主要有两大类:

1. 信道物理信息直接获取。 比如获取信噪比SNR,接受信号强度,误码率BER
2. 基于统计的方法.

目前的速率自适应可分为以下 4 类:

  1. 利用传送帧连续的成功和失败次数来估计信道质量。比如 ARF 算法,如果连续没有收到两个 ACK,则降低一档速率,发送下面的数据并启动一个定时器;如果连续收到 10 个帧或者定时器时间到,则提高发送速率。缺点:连续成功或失败的次数很难及时适应信道的快速变化。

  2. 利用物理层指标 (如 SNIR,RSS) 估计信道质量。缺点:已有文献证明 SNIR,RSS 等指标和丢帧率并没有很强的对应关系,而且基于跨层的设计思想在实际应用中存在困难。

  3. 每隔一段时间以不同速率发送一个或者一些试探帧,用来估计不同数量在信道中的表现。这种方法提高了对其他速率的实时估计能力,但是因为不能发送过多的试探帧,导致个别试探帧的成败决定了速率选择,容易造成误判。如 SampleRate

  4. 利用近一段时间的数据帧的统计特征来决定发送速率。比如 RRAARRAA 在一段时间(窗口)内统计丢帧率等信息,并将其与相应的门限进行比较。这种方法屏蔽了因为随机丢帧而导致的误判,如果窗口选择合适,能够对信道变化作出及时反应。

内容来源:http://blog.csdn.net/forsiny/article/details/4805783

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

jluyeyu 微信支付

微信支付

jluyeyu 支付宝

支付宝