首页 ns-3网络仿真

ns-3网络仿真

举报
开通vip

ns-3网络仿真NS-3网络仿真一:实验要求用NS-3仿真某个特定的网络环境,并输出相应的仿真参数(时延,抖动率,吞吐量,丢包率)。二:软件介绍NS-3是一款全新新的网络模拟器,NS-3并不是NS-2的扩展。虽然二者都由C++编写的,但是NS-3并不支持NS-2的API。NS-2的一些模块已经被移植到了NS-3。在NS-3开发过程时,“NS-3项目”会继续维护NS-2,同时也会研究从NS-2到NS-3的过渡和整合机制。三:实验原理及步骤NS-3是一款离散事件网络模拟驱动器,操作者能够编辑自己所需要的网络拓扑...

ns-3网络仿真
NS-3网络仿真一:实验要求用NS-3仿真某个特定的网络环境,并输出相应的仿真参数(时延,抖动率,吞吐量,丢包率)。二:软件介绍NS-3是一款全新新的网络模拟器,NS-3并不是NS-2的扩展。虽然二者都由C++编写的,但是NS-3并不支持NS-2的API。NS-2的一些模块已经被移植到了NS-3。在NS-3开发过程时,“NS-3项目”会继续维护NS-2,同时也会研究从NS-2到NS-3的过渡和整合机制。三:实验原理及步骤NS-3是一款离散事件网络模拟驱动器,操作者能够编辑自己所需要的网络拓扑以及网络环境,来模拟一个网络的数据传输,并输出其性能参数。软件中包含很多模块:节点模块(创造节点),移动模块(仿真WIFI,LTE可使用),随机模块(生成随机错误模型),网络模块(不同的通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ),应用模块(创建packet数据包以及接受packet数据包),统计模块(输出统计数据,网络性能参数)等等;首先假设一个简单的网络拓扑:两个节点之间使用点对点链路,使用TCP协议进行通信,假设随机错误率为0.00001,节点不可移动(因为不是无线网络),具体代码如下:NodeContainernodes;nodes.Create(2);创建两个节点;PointToPointHelperpointToPoint;pointToPoint.SetDeviceAttribute("DataRate",StringValue("5Mbps"));pointToPoint.SetChannelAttribute("Delay",StringValue("2ms"));设置链路的传输速率为5Mbps,时延为2ms;NetDeviceContainerdevices;devices=pointToPoint.Install(nodes);为每个节点添加网络设备Ptr<RateErrorModel>em=CreateObject<RateErrorModel>();em->SetAttribute("ErrorRate",DoubleValue(0.00001));devices.Get(1)->SetAttribute("ReceiveErrorModel",PointerValue(em));创建一个错误模型,讲错误率设置为0.00001,仿真TCP协议的重传机制。InternetStackHelperstack;stack.Install(nodes);为每个节点安装协议栈;Ipv4AddressHelperaddress;address.SetBase("10.1.1.0","255.255.255.252");Ipv4InterfaceContainerinterfaces=address.Assign(devices);为每个节点的网络设备添加IP地址;这样一个简单的网络拓扑就建立完成。接下来就是为这个网络节点添加应用程序,让他们在这个网络中模拟传输数据,具体代码如下:uint16_tsinkPort=8080;AddresssinkAddress(InetSocketAddress(interfaces.GetAddress(1),sinkPort));PacketSinkHelperpacketSinkHelper("ns3::TcpSocketFactory",InetSocketAddress(Ipv4Address::GetAny(),sinkPort));ApplicationContainersinkApps=packetSinkHelper.Install(nodes.Get(1));sinkApps.Start(Seconds(0.));sinkApps.Stop(Seconds(10.));将接受数据的应用程序设置在Node.Get(1)节点上,端口设置为8080;程序起始时间为0s,终止时间为10s;Ptr<MyApp>app=CreateObject<MyApp>();app->Setup(ns3TcpSocket,sinkAddress,1040,1000,DataRate("1Mbps"));nodes.Get(0)->AddApplication(app);app->SetStartTime(Seconds(1.));app->SetStopTime(Seconds(10.));将发送数据的应用程序设置在Node.Get(0);发送起始时间为1s;结束时间为10s;这样网络拓扑和节点之间应用程序的设定已完成,接下来就是应用统计模块,输出节点之间具体通信性能的参数,及时延,吞吐量,抖动率,丢包率;NS-3中,有一个回调机制,方便我们来输出具体某个条件发生改变时就自动执行某个函数,回调的实现是TraceConnectWithoutContext函数,举个例子,在我的时延仿真中,输出时延的代码我是这样写的:staticvoidCalculateDelay(Ptr<constPacket>p,constAddress&address){staticfloatk=0;k++;staticfloatm=-1;staticfloatn=0;n+=(p->GetUid()-m)/2-1;delayJitter.RecordRx(p);Timet=delayJitter.GetLastDelay();std::cout<<Simulator::Now().GetSeconds()<<"\t"<<t.GetMilliSeconds()<<std::endl;m=p->GetUid();}首先定义一个时延的计算函数,是全局变量函数;其次在main函数中使用回调机制:sinkApps.Get(0)->TraceConnectWithoutContext("Rx",MakeCallback(&CalculateDelay));含义就是当接受端节点每收到一个TCP包,就会执行一次CalculateDelay函数,计算这个数据包在网络中传输的时延,并输出;这样就完成了程序的编写;接下来就是输出具体数据:在终端打开,到指定的文件夹中,输入./waf--runscratch/delay>delay.dat2>&1按指定格式输出.dat文件之后,再在终端用GNUPLOT来作出.dat文件中的图形即可:下面用同样的拓扑,应用程序以及同样的错误模型仿真输出TCP拥塞窗口值随时间的变化,抖动率,丢包率,吞吐量:拥塞窗口随时间的变化:丢包率抖动率吞吐量在仿真结果中我们可以看到:当网络传输出现差错传输,导致链路拥塞,使得拥塞窗口值陡然降低,致使链路的时延变大,抖动率变化也比较明显,吞路量也变小。下面进行WIFI环境下的网络吞吐量的仿真:拓扑的建立和之前的建立方式大同小异,主要是WIFI多了移动模型的添加,为一个节点添加移动模型的代码如下:MobilityHelpermobility1;mobility1.SetPositionAllocator("ns3::RandomDiscPositionAllocator","X",StringValue("0.0"),"Y",StringValue("0.0"),"Rho",StringValue ("ns3::UniformRandomVariable[Min=0|Max=20]"));mobility1.SetMobilityModel("ns3::RandomWalk2dMobilityModel","Mode",StringValue("Time"),"Time",StringValue("2s"),"Speed",StringValue("ns3::ConstantRandomVariable[Constant=100]"),"Bounds",RectangleValue(Rectangle(-100,100,-100,100)));mobility1.Install(wifiStaNodes.Get(0));这样这个节点就能够随机移动,仿真WIFI下用户随机移动的特点;仿真的拓扑图如下:由于节点的移动导致离AP节点的距离不同,因此信道是不断变化的,所以吞吐量也是不断变化的,再次情况下仿真出来的吞吐量如下:由此可见:链路的吞吐量没有点对点链路那么平整,变化稍微大一点;四:实验 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 经过这次实验,我体会到其实不管做什么事,只要坚持,并且冷静去寻找解决问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 的途径,就能解决所有问题。这次实验实际来说给的时间并不多,两星期不到,我一开始选择了第四个题目,一个全新的东西,一开始看书,什么都看不明白,不过幸好用的语言是c++,这是唯一幸运的东西。另外NS-3要求在linux系统下运行,我就赶紧找linux安装教程,之前用过虚拟机,但是特别卡。之后关于NS-3的安装,挺顺利,没有什么差错。接下来就是NS-3软件的学习了,由于NS-3比较新,国内的 教材 民兵爆破地雷教材pdf初中剪纸校本课程教材衍纸校本课程教材排球校本教材中国舞蹈家协会第四版四级教材 很少,但在网上搜索的时候,发现基本没有人看教材,都在看官方文档,于是我就找到了解决这个问题的途径。一边从简单的例子着手,一边去官方文档中,对照的计算机网络的知识去解释NS-3中的各个模块的作用,含义。由于NS-3中没有直接描述吞吐量,时延,丢包率以及抖动率的函数或实例,我只好对照着这些参数的原始公式来自己写函数,输出这些性能参数。这样一点一滴的积累学习最终完成实验。
本文档为【ns-3网络仿真】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_113440
暂无简介~
格式:doc
大小:96KB
软件:Word
页数:9
分类:房地产
上传时间:2019-05-18
浏览量:4