用户文档 使用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
- 用户文档 使用WifiNetDevice
- btrace 用户使用文档
- 用户发行资产(UIA)使用文档
- 用户使用DocConvert处理文档后对DocConvert的评价
- Visual C++ 用户 使用 ADO 文档的方法
- App通过使用iTunes让用户上传和下载文档
- jmeter文档学习-用户session使用url重写
- apache用户控制文档
- Hessian官方用户文档
- ORACLE EBS中附件功能的使用(上传用户操作文档)
- 使用数据容灾恢复软件Acronis Backup & Recovery恢复用户文档文件夹
- 国内用户使用Android Studio 提示帮助文档 一直显示:fetching documentation解决方案
- 读Axis2用户帮助文档
- 读Axis2用户帮助文档
- 读Axis2用户帮助文档
- jboss hornetq jms 用户文档
- SCITE的用户配置文档
- 测试文档和用户说明书
- CGI,FastCGI,PHP-CGI与PHP-FPM的区别
- 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools:
- H264码流打包分析
- opencv 获取像素点
- 二维码小工具使用指南
- 用户文档 使用WifiNetDevice
- touchslide配置参数
- Ios图片加水印
- windows下的adb连接调试
- Leetcode ☞ 136. Single Number
- XJOI #8T1 炮兵阵地 状压DP
- iPad 2升级iOS 9的过程记录
- 树形结构_数据库_利用递归遍历一棵只知道父节点的树
- hdoj Best Financing 4833 (DP)