用户文档 使用WifiNetDevice

来源:互联网 发布:淘宝客服有发展前景吗 编辑:程序博客网 时间:2024/06/07 05:43
实施提供的模块化使得WifiNetDevice低级别配置强大但是复杂;出于这个原因,提供了一些助手类用简单的方式执行常见操作,并充分利用ns-3的属性系统以允许用户控制底层模型的参数化。
使用低级别ns-3 API 以及希望添加WifiNetDevice到节点的用户,必须创建一个实例化的WifiNetDevice,再增加些一定数目的对象,适当地将它们绑定在一起(WifiNetDevice 在这方面是非常模块化的,为了未来的 可扩展性)。对于低级别的API ,约20行代码就可以做到(见 ns3:: WifiHelper::Install 和 ns3::YansWifiPhyHelper::Create)。它们还必须建立一个WifiChannel,其中还包含了一些组成对象(ns3::YansWifiChannelHelper的::Create)。
但是,一些助手允许用户增加设备和信道,仅仅用几行代码,如果它们愿意使用默认值,以及助手提供额外的API 允许通过属性值来改变默认值。常用的属性值在属性章节中列出,在examples/wireless中的脚本可以看出是怎样做到的。接下来我们描述了从底层(WifiChannel)开始直到设备层(WifiNetDevice)创建WifiNetDevice的过程。
创建一个无线网络设备,用户需要配置主要的五个步骤:
1、配置WifiChannel:
无线信道负责从一个设备向其他设备在同一WiFi信道得到信号 。无线信道的主要配置是传播损耗模型和传输延迟模型。
2、配置WifiPhy:
无线物理层负责从无线信道 发送和接收的无线信号 ;在这里,无线PHY根据接收到的信号强度和噪声,决定每帧是否被成功解码;
因此,无线物理层的主要配置是错误率的模型,这是一个计算信号帧成功解码的概率
3、配置WifiMac:
这一步与体系结构和设备水平有较大关系,用户配置wifi架构(ad-hoc或ap-sta)以及QoS(802.11e)这些特征是否设备支持;
4、创建WifiDevice
在这一步,用户配置所需的wifi标准(如802.11b)和速率控制算法。
5、配置移动性:
最后,移动模型往往需要,在WifiDevice之前; 
1、YansWifiChannelHelper:
该助手用来创建一个使用默认PropagationLoss传播损耗模型和PropagationDelay传播延迟模型的WifiChannel;
YansWifiChannelHelper  wifiChannelHelper = YansWifiChannelHelper::Default ();
Ptr<Wifi Channel> wifiChannel = wifiChannelHelper.Create ();
该信道模型中:
默认传播延迟为常数=光速 (ns3::ConstantSpeedPropagationDelayModel)
传播损耗模型为(ns3::LogDistancePropagationLossModel)使用默认指数为3,1m的参考损耗为46.6777dB,该参考损耗值46.6777dB是使用Friis传播损耗模型在5.15GHz,参考损耗一定要改,如果我们使用802.11,因为它们的工作频率在2.4GHz。
注意到创建助手对象与实际模拟对象的区别:在ns-3中,助手对象(助手API)在栈上创建,但是,实际的ns-3对象通常继承自类ns3::Obiect,且被分配到一个智能指针;参见ns-3manual 讨论 ns-3object model
下面2种方法,当配置YansWifiChannelHelper会用到:
1)YansWifiChannelHelper::AddPropagationLoss向传播损耗模型中增加一个模型;
2)YansWifiChannelHelper::SetPropagationDelay设置一个传播延迟模型;
2、YansWifiPhyHelper:
物理设备(基类ns3::phy)连接到ns3::Channel,需要为YansWifiChannel创建恰当的Phy对象,YansWifiPhyHelper将做这样的工作;
YansWifiPhyHelper类配置对象工厂,创建实例化的YansWifiPhy,增加了一些其他对象,包括补充的ErrorRateModel和MobilityModel的指针,用户代码通常为:
YansWifiPhyHelper wifiPhyHelper = YansWifiPhyHelper::Default ();
wifiPhyHelper.SetChannel (wifiChannel);
默认的模型是:NistErrorRateModel (ns3::NistErrorRateModel),你可以调用
YansWifiPhyHelper::SetErrorRateModel修改错误率模型;
YansWifiPhyHelper::SetPcapDataLinkType  (enum SupportedPcapDataLinkTypes dlt)使用该命令增加Pcap 跟踪信息;
ns-3 支持 Radio Tap 以及 Prism tracing拓展 for 802.11.
目前没有真正建立任何WifiPhy对象,刚编写的YansWifiPhyHelper只能分辨连接到哪个通道;
下面有几行代码,我还没看出来有什么用,用到的时候再回头看下;
3、WifiMacHelper:
WifiMacHelper考虑到MAC low以及MAC high 模型。
NqosWifiMacHelper:我论文应该是这种情况,研究是没有Qos的MAC协议
ns3::NqosWifiMacHelper配置对象工厂来创建实例化的ns3::WifiMac,用来配置MAC地址不同的参数;
为了创建ad -hoc MAC实例,可以使用ns3::AdhocWifiMac,下面是代码啦:
NqosWifiMacHelper  wifiMacHelper = NqosWifiMacHelper::Default ();
Ssid ssid = Ssid ("ns-3-ssid");
wifiMacHelper.SetType (     "ns3::AdhocWifiMac ",
                                           "Ssid", Ssid Value (ssid),
                                           "Active Probing", Boolean Value (false));
4、WifiHelper:
现在可以创建WifiNetDevice,首先使用默认设置创建WifiHelper
WifiHelper  wifiHelper = WifiHelper::Default ();
它设置默认的wifi标准802.11a,且设置RemoteStationManager用于ns3::ArfWifiManager;你可以通过调用
WifiHelper::SetRemoteStationManager 改变RemoteStationManager;调用WifiHelper::SetStandard去改变wifi标准;
下面代码是使用所创建的wifiPhyHelper 和 wifiMacHelper在NodeContainer的“c”的一组节点上安装WifiNetDevices;
NetDeviceContainer  wifiContainer = WifiHelper::Install (wifiPhyHelper, wifiMacHelper, c);
创建的WifiNetDevice还包括WifiRemoteStationManager、WifiMac、WifiPhy(连接到匹配WifiChannel)
WifiHelper::SetStandard方法,在选择的标准版本中,设置不同默认的计时参数,重写的值可能已经存在或已经预先被配置;为了改变被WifiHelper::SetStandard重写的参数,安装后可以使用Config::Set;
下面的代码,感觉怎么会是不完整呢,惊呆了,哎,还是回头看下manual吧

5、移动性配置
详细参考Mobility module章节
每个节点的wifi设备都应该改配置移动模型,移动模型用来计算传播损耗和传播延迟;下面有2个例子
其中一个是ad-hoc网络的移动模型配置:wifi-simple-adhoc.cc(examples/wireless)
0 0
原创粉丝点击