NS3中Wifi网络设备模块
NS3中提供的网络设备有:点到点、有线局域网和无线局域网Wifi。根据不同的网络使用不同的网络设备。
基于IEEE802.11
标准的WifiNetDevice
模块主要涉及到以下几个方面:
- 创建合适的信道channel
- 为信道创建合适的物理设备phy
- 生成MAC层并设置其类型
- 如何决定一个数据分组可以被成功的接收
- 创建wifiNetDevice
以manet-routing-compare.cc
为例分析以上各个部分
创建合适的信道
使用YansWifiChannelHelper
来创建wifi信道,并且制定该信道的传播损耗和传播延迟。
YansWifiChannelHelper wifiChannel;wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");wifiChannel.AddPropagationLoss ("ns3::FriisPropagationLossModel");
上述代码设置了信道的传播延迟为ConstantSpeedPropagationDelayModel
,传播损耗为FriisPropagationLossModel
为信道创建合适的物理设备phy
使用YansWifiPhyHelper
创建合适的phy,并为创建的信道安装物理设备phy上。
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper();
wifiPhy.SetChannel (wifiChannel.Create ());
wifiPhy.Set ("TxPowerStart",DoubleValue (txp));
wifiPhy.Set ("TxPowerEnd", DoubleValue (txp));
由于YansWifiPhy类
可以设置的属性有:能量检测门限、传输增益、接收增益等。这里就涉及设置了传输功率后,数据在信道上传输时信号强度会按照设定的传播损耗进行衰减,在接收端如何判断是否接收到一个信号呢?
如何决定一个数据分组可以被成功的接收
phy层有以下三种状态,任何时刻只会是三种状态之一:
- Tx:PHY是当前正在传输代表其关联的MAC信号,也就是说正在发送数据
- Rx:PHY是同步信号,一直等待直到它接收到其转发的MAC的最后一位,也就是正在接受数据
- Idle:PHY既不是Tx也不是Rx,也就是既没有发送数据也没有接受数据
当新的数据分组的第一位被接收时,且当时的PHY为非Idle状态时(也就是说,当前正在接收或发送数据),接收到的数据分组将被丢弃。否则,如果PHY是Idle状态,计算新信号的第一位所接收到的能量,并且比较能源检测阈值。如果能量数据分组k较高,那么PHY移动到Rx状态并准备接收数据的最后一位;若能量较低,则PHY停留在Idle状态并丢弃该数据分组。
具体计算的过程需要参考设置的传播损耗,不过多介绍。但是这种模式,我们很难知道具体两个节点距离多远会导致通信中断,因此延伸出两种直观的设置方法。
1.采用默认的wifi信道和物理层,则结点的默认通信距离是100m
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
2.指定节点的通信范围
信道衰落模型设置为RangePropagationLossModel,设置其MaxRange属性,该属性决定了节点的通信范围。 原理是RangePropagationLossModel在小于通信范围时,返回接收增益为0db,否则为-1000db。
YansWifiChannelHelper wifiChannel;wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");wifiChannel.AddPropagationLoss ("ns3::RangePropagationLossModel", "MaxRange", DoubleValue(100)); YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();wifiPhy.SetChannel (wifiChannel.Create ());
通过上述设置,可以使节点的传输范围为100m
生成MAC层并设置其类型
使用WifiMacHelper
生成MAC层。MAC层的模型有:AdhocWifiMac
、StaWifiMac
和ApWifiMac
WifiMacHelper wifiMac;wifiMac.SetType ("ns3::AdhocWifiMac");
创建wifiNetDevice
使用WifiHelper
创建wifi网络设备、设置其属性,并使用install
方法安装到NetDeviceContainer
中
WifiHelper wifi;wifi.SetStandard (WIFI_STANDARD_80211b);wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager","DataMode",StringValue (phyMode),"ControlMode",StringValue (phyMode));NetDeviceContainer adhocDevices = wifi.Install (wifiPhy, wifiMac, adhocNodes);
更多内容参见简书中对于网络设备的介绍
NS3中Wifi网络设备模块相关推荐
- ns-3模拟基本流程(附ns-3中的一些概念概述)
ns-3模拟基本流程 1)选择或开发相应的模块 根据实际仿真对象和仿真场景选择相应的仿真模块:如是有线局域网络(CSMA)还是无线局域网络(Wi-Fi):节点是否需要移动(mobility):使用何种 ...
- 在NS3中添加新的VANET模块
本文主要参考http://blog.csdn.net/barcodegun/article/details/6898193此博主的学习笔记,但由于版本过老,很多小细节不适用于ns-3.26,特来更新自 ...
- STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)
STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float) 最近在做毕业设计,在做wifi数据传输与接收时,涉及到了STM32 ...
- ns3中first.cc~fourth.cc代码注释
参考博客: ubuntu 18.04安装NS-3教程(详细安装过程) ns-3脚本初识--点对点有线网络:first脚本 ns-3中的数据跟踪与采集--Tracing系统综述及fourth脚本 --- ...
- ns3中调试程序------命令行、gdb和logging系统
1.在调试代码时候,一直没有弄明白NS_LOG中的各种函数是如何使用的,甚至现在运行程序只知道,./waf –run,至于输出调试信息,现在真的是没有弄明白,不利于代码的理解和调试. 2.通过命令行, ...
- 【玩转Atlas200DK系列】为Atlas200DK配置wifi外挂模块
[摘要] 为Atlas200DK配置wifi外挂模块 [昇腾] 当你手中有一块Huawei Atlas 200 DK时,那么恭喜你,你拥有了一个可以让你的AI应用落地的利器,但由于开发板并没有wifi ...
- ns-3中的数据跟踪与采集——Tracing系统综述及fourth脚本
ns-3中的数据跟踪与采集--Tracing系统综述及fourth脚本 ns-3的跟踪与采集技术除了直接将执行过程显示在命令行中的Logging系统,还有一种更为常用的将采集到的数据直接存放在一个文件 ...
- 在NS-3中安装可视化工具pyviz的一些问题的解决
转载声明:本文为寻同学原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 原文链接:https://blog.csdn.net/qq_31676673/article ...
- Android中wifi认证的实现
WiFi需要登录的情况(WiFi重定向) 检测wifi是否需要portal验证 公共场所wifi验证 关于wifi portal认证–为浏览器添加wifi认证功能 Android中wifi的扫描机制 ...
最新文章
- ipconfig的C语言实现
- linux下打开配置文件命令_Linux下用户权限相关命令
- 3W+字的设计模式手册
- 《HTML5 Canvas游戏开发实战》——2.1 绘制基本图形
- win11提示无法在此配置怎么办 Windows11提示无法在此配置的解决方法
- ExtFrame的特点与缺点
- DEPHI XE5 XE6 ANDROID IOS开发的几点体会
- jQuery当当网项目实现
- 怎样删除Weblogic Domain?
- 思科/华为计算机网络工程师,软考网络工程师华为、思科指令大全
- 计算机主板故障检测装置,计算机主板故障检测装置制造方法及图纸
- 根据经纬度查询附近地点
- python123新版个人所得税计算请输入正数_Python训练的数字组合,个人所得税计算,完全平方数,python,之...
- iOS- 最全的真机测试教程
- android-手势密码
- matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图
- 应用案例 | 2011款保时捷卡宴3.0T车发动机怠速间歇性抖动
- RBP系统管理之地区管理
- Vue学习记录三 --- vue的项目实战
- Docker 如何查看容器IP地址