2020-09-26

NS-3实验参考

本实验代码仅供参考,禁止传播


前言

实验基于NS-3仿真平台,通过多种网络模型建模的设计,使学生掌握信息网络的Ad hoc拓扑建模、移动性建模、信道建模、协议层建模等方法。另外,本实验借助Netanim实现仿真网络的可视化,旨在直观地学习和掌握网络的结构和变化过程,以更好地理解信息网络建模与仿真的过程。对于仿真结果,可以采用stats或者trace文件进行结果分析和统计。最终,用可视化工具呈现仿真过程以及图形化表征统计结果。


以下是本篇文章正文内容

一、题目要求

在上一个实验的基础上,建立ad hoc节点拓扑模型,网络中节点均具有路由转发功能;

进入~/tarballs/ns-allinone-3.2x/ns-3.2x/examples/wireless$ 目录,在wireless文件夹下,有很多wifi传输的示例。在wifi-simple-adhoc-grid.cc代码基础上修改,文件拷贝到scratch文件夹下,重命名为你的姓名缩写+学号,例如学生姓名钢铁侠,学号20191314,c文件命名为gtx20191314.cc;

读懂wifi-simple-adhoc-grid.cc代码,掌握在NS-3中网络拓扑布局,ad hoc传输方式、网络路由的简单配置等,成功运行wifi-simple-adhoc-grid.cc;

掌握拓扑建模方法,在wifi-simple-adhoc-grid.cc代码中扩展建立到100个节点,节点初始呈现网格布局;

深入研究移动模型建模方法,完成对移动模型参数设置,使得节点移动在可视化界面更加明显;

深入研究信道模型建模方法,在代码中完成对信道模型的替换,例如Friis、LogDistancePropagationLossModel信道模型。通过射频参数,了解发射机、路径损耗和接收机间增益的计算方法。可以根据参数配置想要的发射距离;

掌握网路层路由配置方法,可以配置多种ad hoc路由模式,例如OLSR、aodv等。查阅不同路由协议的工作原理和方法;

掌握统计模型的使用方法,可以统计相应节点的时延、丢包率等重要指标;

掌握能耗模型的使用方法,配置节点能量,设备能量,可以统计节点的能量消耗;

掌握统计数据作图方法,对于获得的统计数据,图形化的形式得出结果。

wifi-simple-adhoc-grid.cc提供了一个默认网络拓扑结构,包括25个wifi节点,在此基础上进行修改

二、使用步骤

1.实验任务

修改节点的数量和位置,实现拓扑模型的改变



修改xxx.Create()中的数字,即可改变节点数量。

修改定义

uint32_t numNodes = 100;  // 定义节点数量100

…

NodeContainer c;

c.Create (numNodes); //建立100个节点


修改位置和运动模型


在设定坐标系时,可利用MobilityHelper类中的SetPositionAllocator()函数和ns3::GridPositionAllocator,设定节点位置,其具体步骤如下:

 

  MobilityHelper mobility;

  mobility.SetPositionAllocator
("ns3::GridPositionAllocator",  //网格位置分配

                                
"MinX", DoubleValue (0.0),

                                
"MinY", DoubleValue (0.0),

                                 "DeltaX",
DoubleValue (distance), //间距

                                
"DeltaY", DoubleValue (distance),

                                
"GridWidth", UintegerValue (10), //一行节点数量

                                
"LayoutType", StringValue ("RowFirst"));




在设置节点位置之后,需要设定节点运动模型,使节点具有移动性:

(1)
节点静止

     mobility.SetMobilityModel

(“ns3::ConstantPositionMobilityModel”);

(2)
节点运动RandomWalk2dMobilityModel

     NS3自带的2d运动模型,bounds属性为设置节点移动的边界

mobility.SetMobilityModel
(“ns3::RandomWalk2dMobilityModel”,

“Bounds”, RectangleValue
(Rectangle (-50, 50, -50, 50)));

//"Bounds"是设定边界范围,如果过小,将无法分配节点。需要根据节点数量,估算边界大小,使得边界覆盖节点的运动范围。修改(-50,
50, -50, 50)中的数值。

示例代码默认使用RandomWalk2dMobilityModel,但是并没有设定游走模型内部的参数。

实验要求

  1.   修改WiFi节点的数量和位置,实现WiFi的节点数量100个;
    
  2.   网格初始化布局;(代码中设置节点初始距离500m)
    
  3.   查看封装函数,根据传输距离,设定运动模式(mode)、时间(time)、方向(direction)、距离(distance)、运动速度(speed)、运动边界(bounds)以至运动效果明显。
    

说明:原有节点运动,在可视化界面中运动不明显。修改后,要在可视化时能够明显的体现出节点移动性。

修改不限于RandomWalk2dMobilityModel,可以用其他运动模型代替,可以实现明显的移动性即可。

在这里插入图片描述

2.读入数据

WiFi和信道参数设定



1        
设置信道模型

借助YansWifiChannelHelper 生成默认信道模型并设置参数,属性设定包括传播时延和传播损耗。

2        
设置物理层模型

借助YansWifiPhyHelper
生成物理层模型并设置属性,属性包括错误率模型和移动模型。物理层模型涉及的常用属性有:

TxGain、

TxPowerEnd(最大传输水平,默认为16.0206dbm)TxPowerStart(:最小传输水平,默认为16.0206dbm)、

EnergyDetectionThreshold(能量检测门限,默认为-96dbm)、

CcaMode1Threshold 9(确定为CCA busy状态的门限,默认为-99dbm)、

RxGain等。

传输增益和接收增益由TxGain和RxGain分别设置,接收到的信号由EnergyDetectionThreshold阈值检测,高于阈值即可以在PHY层被检测到。信道衰落在信道部分设置,包括信道的传播时延和传播损耗。调用wifiPhy.Set函数进行属性设定。

加入下段代码,替代原有wifiPhy.Set部分90:

wifiPhy.Set ("RxGain", DoubleValue (0.0)); // Reception gain (dB). 

wifiPhy.Set ("TxGain", DoubleValue (0.0)); // Transmission gain (dB) 

wifiPhy.Set
("CcaMode1Threshold", DoubleValue (-62.0)); 

//Clear Channel Assessment,空闲信道评估,判断信道是否空闲。

//CCA The energy of a non
Wi-Fi received signal should be higher than this threshold (dbm) to allow the
PHY layer to declare CCA BUSY state. This check is performed on the 20 MHz
primary channel only.

wifiPhy.Set ("TxPowerStart", DoubleValue(16.0206));

wifiPhy.Set ("TxPowerEnd", DoubleValue(16.0206));

wifiPhy.Set ("EnergyDetectionThreshold",
DoubleValue(-101.0)); // 能量检测,低于这个门限,物理层无法检测到信号The energy of a received signal should be higher than this
threshold (dbm) to allow the PHY layer to detect the signal.

说明:

以上为默认值,不同版本的ns在默认值可能有所不同。

注意,不要修改CcaMode1Threshold和EnergyDetectionThreshold的值。

TxGain为发射天线增益,RxGain为接收天线增益,TxPowerStart为最小发射功率,TxPowerEnd为最大发射功率。

3、信道模型

实验要求,深入了解信道模型、WIFI物理层传输参与的关联,可以根据两种信道模型(Friis和LogDistance)本实验使用(LogDistance),修改相关参数,改变wifi终端的传输距离。

1
Friis路径损耗模型

Friis路径损耗模型表述为理想条件下给定距离外的天线发送一个已知功率的信号,则接收天线终端的接收功率等于入射波功率密度与接收天线有效孔径的乘积。这个方程最先由丹麦裔美国无线电工程师工程师Harald
T. Friis于1946年提出。

Friis路径损耗模型,通过收发端增益、传输功率等传输设定,建模了信号在传输过程中衰减的数学模型,有关ns3中的Friis信息可参考ns3官网。

2
LogDistance路径损耗模型

Log Distance 路径损耗模型是Friis自由空间模型的扩充。此模型用于预测大尺度范围的传播损耗(Friis是受限于收发两端中间无阻碍的场景)。

src/propagation/model下中的propagation-loss-model.h和propagation-loss-model.c给出了该损耗信道的一些特征,包括指数(Exponent),Reference
loss(参考损耗),Reference
Distance(参考距离)。参考损耗是基于参考距离利用Friis的损耗公式计算出的损耗。NS3中给出的参考损耗为46.67dB(参考距离为1m,频率为5.15Ghz),实际使用中需要按照参考距离以及频率的不同进行计算并修改。

修改wifi物理层模型参数,增大节点的传输距离超过200米(如果原来是500米,修改后要超过700米)。在可视化界面,可以对比不同发射距离的效果

四、网络层模型

添加aodv协议,同样建立相应的AodvHelper对象可以进行路由协议修改。由于OLSR协议路由计算最短路径作为最优路径,OLSR拥有较小的路由接收数据包延迟时间。而AODV协议为按需路由协议,节点以多播形式查找目标节点路由,路由时间较长,但是可靠性较高。

根据5.4节的统计模块得到的相应结果,作出不同协议对比结果图,可以通过excel、GNUplot、matlab画图都可以在这里插入图片描述

在这里插入图片描述

这是我所学课程的一个综合实验,还有能耗模型和统计模型没有写出。具体实验报告请查看个人主页下载。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值