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层的模型有:AdhocWifiMacStaWifiMacApWifiMac

 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网络设备模块相关推荐

  1. ns-3模拟基本流程(附ns-3中的一些概念概述)

    ns-3模拟基本流程 1)选择或开发相应的模块 根据实际仿真对象和仿真场景选择相应的仿真模块:如是有线局域网络(CSMA)还是无线局域网络(Wi-Fi):节点是否需要移动(mobility):使用何种 ...

  2. 在NS3中添加新的VANET模块

    本文主要参考http://blog.csdn.net/barcodegun/article/details/6898193此博主的学习笔记,但由于版本过老,很多小细节不适用于ns-3.26,特来更新自 ...

  3. STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)

    STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)   最近在做毕业设计,在做wifi数据传输与接收时,涉及到了STM32 ...

  4. ns3中first.cc~fourth.cc代码注释

    参考博客: ubuntu 18.04安装NS-3教程(详细安装过程) ns-3脚本初识--点对点有线网络:first脚本 ns-3中的数据跟踪与采集--Tracing系统综述及fourth脚本 --- ...

  5. ns3中调试程序------命令行、gdb和logging系统

    1.在调试代码时候,一直没有弄明白NS_LOG中的各种函数是如何使用的,甚至现在运行程序只知道,./waf –run,至于输出调试信息,现在真的是没有弄明白,不利于代码的理解和调试. 2.通过命令行, ...

  6. 【玩转Atlas200DK系列】为Atlas200DK配置wifi外挂模块

    [摘要] 为Atlas200DK配置wifi外挂模块 [昇腾] 当你手中有一块Huawei Atlas 200 DK时,那么恭喜你,你拥有了一个可以让你的AI应用落地的利器,但由于开发板并没有wifi ...

  7. ns-3中的数据跟踪与采集——Tracing系统综述及fourth脚本

    ns-3中的数据跟踪与采集--Tracing系统综述及fourth脚本 ns-3的跟踪与采集技术除了直接将执行过程显示在命令行中的Logging系统,还有一种更为常用的将采集到的数据直接存放在一个文件 ...

  8. 在NS-3中安装可视化工具pyviz的一些问题的解决

    转载声明:本文为寻同学原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 原文链接:https://blog.csdn.net/qq_31676673/article ...

  9. Android中wifi认证的实现

    WiFi需要登录的情况(WiFi重定向) 检测wifi是否需要portal验证 公共场所wifi验证 关于wifi portal认证–为浏览器添加wifi认证功能 Android中wifi的扫描机制 ...

最新文章

  1. ipconfig的C语言实现
  2. linux下打开配置文件命令_Linux下用户权限相关命令
  3. 3W+字的设计模式手册
  4. 《HTML5 Canvas游戏开发实战》——2.1 绘制基本图形
  5. win11提示无法在此配置怎么办 Windows11提示无法在此配置的解决方法
  6. ExtFrame的特点与缺点
  7. DEPHI XE5 XE6 ANDROID IOS开发的几点体会
  8. jQuery当当网项目实现
  9. 怎样删除Weblogic Domain?
  10. 思科/华为计算机网络工程师,软考网络工程师华为、思科指令大全
  11. 计算机主板故障检测装置,计算机主板故障检测装置制造方法及图纸
  12. 根据经纬度查询附近地点
  13. python123新版个人所得税计算请输入正数_Python训练的数字组合,个人所得税计算,完全平方数,python,之...
  14. iOS- 最全的真机测试教程
  15. android-手势密码
  16. matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图
  17. 应用案例 | 2011款保时捷卡宴3.0T车发动机怠速间歇性抖动
  18. RBP系统管理之地区管理
  19. Vue学习记录三 --- vue的项目实战
  20. Docker 如何查看容器IP地址

热门文章

  1. 安心邮服务器修改密码步骤,邮件系统密码修改操作说明
  2. UE4_VaREST使用调用
  3. 解决GitHub下载资源慢的问题(两种方法)
  4. Spark的常用SQL日期函数
  5. Unity3D如何用代码生成模型
  6. marker:webrtc抓包数据分析
  7. android 多线程封装,Android线程池封装库
  8. c语言规定变量有三种属性分别是,C++面向对象程序设计重点复习资料
  9. 网络协议学习-SNMP(一)基础知识
  10. 算法-4-经典算法-汇总(持续更新)-目录呈现