ns-3网络仿真_第1页
ns-3网络仿真_第2页
ns-3网络仿真_第3页
ns-3网络仿真_第4页
ns-3网络仿真_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、FI, LTE可使用),随机模块(生成随机错误模型),网络模块(不同的通信协议),应用模块(创建packet数 据包以及接受packet数据包),统计模块(输出统计数据,网络性能参数)等等;首先假设一个简单的网络拓扑:两个节点之间使用点对点链路,使用TCP协议进行通信, 假设随机错误率为,节点不可移动(因为不是无线网络),具体代码如下:NodeContainer nodes;(2);创建两个节点;PointToPointHelper pointToPoint;(DataRate, StringValue (5Mbps);(Delay, StringValue (2ms);设置链路的传输速率为5

3、Mbps,时延为2ms;NetDeviceContainer devices;devices = (nodes);为每个节点添加网络设备PtrRateEirorModelem=CreQte()bjectRateErTorModel();em-SetAttribute(MErrorRateM,DoubleValue);(l)-SetAttribute(r,ReceiveErrorModelM,PointerValue (em); 创建一个错误模型,讲错误率设置为,仿真TCP协议的重传机制。InternetStackHelper stack;(nodes);为每个节点安装协议栈;IpvdAddre

4、ssHelper address;(”,” ”);Ipv4InterfaceContainer interfaces = (devices):为每个节点的网络设备添加IP地址;这样一个简单的网络拓扑就建立完成。接下来就是为这个网络节点添加应用程序,让他们在这个网络中模拟传输数据,具体代 码如下:uintlGt sinkPort = 8080;Address sinkAddress (InetSocketAddress (1), sinkPort):PacketsinkHelper packetsinkHelper (ns3::TcpSocketFactory, InetSocketAddres

5、s (Ipv4Address::GetAny (), sinkPort);ApplicationContainer sinkApps =(1);(Seconds (0.);(Seconds (10.);将接受数据的应用程序设置在(1)节点上,端口设置为8080;程序起始时间为0s,终止时 间为10s;Ptr app = Create()bject ();app-Setup (ns3TcpSocket, sinkAddress, 1040, 1000, DataRate (1Mbps);(0)-AddApplication (app);app-SetStartTime (Seconds (1);

6、app-SetStopTime (Seconds (10.);将发送数据的应用程序设置在(0);发送起始时间为Is;结束时间为10s;这样网络拓扑和节点之间应用程序的设定已完成,接下来就是应用统计模块,输出节点 之间具体通信性能的参数,及时延,吞吐量,抖动率,丢包率;NS-3中,有一个回调机制,方便我们来输出具体某个条件发生改变时就自动执行某个函 数,回调的实现是TraceConnectWithoutContext函数,举个例子,在我的时延仿真中,输出 时延的代码我是这样写的:static voidCalculateDelay (Ptrp,const Address &address)stat

7、icfloat k = 0;k+;staticfloat m = -1;staticfloat n = 0;n += (p-GetUid() - m)/2-l:(p);Time t =();std::cout Simulator::Now ().GetSeconds () t” () GetUid();首先定义一个时延的计算函数,是全局变量函数;其次在main函数中使用回调机制:(0)-TraceConnectWithoutContext(Rx”, MakeCallback(&CalculateDelay);含义就是当接受端节点每收到一个TCP包,就会执行一次CalculateDelay函数,

8、计算这 个数据包在网络中传输的时延,并输出;这样就完成了程序的编写;接下来就是输出具体数据:在终端打开,到指定的文件夹中,输入/waf -run scratch/delay 2&1按指定格式输出.dat文件之后,再在终端用GNUPL0T来作出.dat文件中的图形即可:250200150100502345678910下面用同样的拓扑,应用程序以及同样的错误模型仿真输出TCP拥塞窗口值随时间的变化,抖动率,丢包率,吞吐量:1400012000100008000600040002000I 1 - cwnd I12345678910拥塞窗口随时间的变化:0.2丢包率抖动率吞吐量在仿真结果中我们可以看到

9、:当网络传输出现差错传输,导致链路拥塞,使得拥塞窗口 值陡然降低,致使链路的时延变大,抖动率变化也比较明显,吞路量也变小。下面进行WIFI环境下的网络吞吐量的仿真:拓扑的建立和之前的建立方式大同小异,主要是WIFI多了移动模型的添加,为一个节点 添加移动模型的代码如下:MobilityHelper mobilityl;(Mns3: : Ran domDiscPositi on Allocator11,X, StringValueY, StringValueRho, StringValue(ns3:UniformRandomVariableMin=0 Max=20);(Mns3::RandomW

10、a1k2dMob i1i tyMode1,Mode”,StringValue (Time”),Time,StringValue (2s),HSpeedH,StringValue(ns3: :ConstantRandomVariableConstant=100u),MBoundsH, RectangleValue (Rectangle (TOO, 100, TOO,100);(0);这样这个节点就能够随机移动,仿真WIFI下用户随机移动的特点;仿真的拓扑图如下:由于节点的移动导致离AP节点的距离不同,因此信道是不断变化的,所以吞吐量也是不 断变化的,再次情况下仿真出来的吞吐量如下:1210864

11、20throughput i510152025由此可见:链路的吞吐量没有点对点链路那么平整,变化稍微大一点;四:实验总结经过这次实验,我体会到其实不管做什么事,只要坚持,并且冷静去寻找解决问题的途 径,就能解决所有问题。这次实验实际来说给的时间并不多,两星期不到,我一开始选择了 第四个题目,一个全新的东西,一开始看书,什么都看不明白,不过幸好用的语言是C+, 这是唯一幸运的东西。另外NS-3要求在linux系统下运行,我就赶紧找linux安装教程,之 前用过虚拟机,但是特别卡。之后关于NS-3的安装,挺顺利,没有什么差错。接下来就是NS-3 软件的学习了,由于NS-3比较新,国內的教材很少,但在网上搜索的时候,发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论