NS2与NS3

一.NS2与NS3简介

NS2(Network Simulator,version 2)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器,由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有网络传输协议,比如TCP和UDP,业务源流量产生器。

NS3是一个离散事件模拟器,旨在满足学术研究和教学的需求。NS3项目是一个始于2006年的开源项目,负责开发ns3软件。 NS-3并不是NS-2的扩展,而是一个全新的模拟器。

二.NS2与NS3仿真

Ns2进行一次仿真的步骤大致如下:

- 1.开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。
- 2.建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。
- 3.配置业务量模型的参数,从而确定网络上的业务量分布。
- 4.设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究。
- 5.编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。
- 6.用NS解释执行刚才编写的OTcl脚本。
- 7.对Trace文件进行分析,得出有用的数据。
- 8.调整配置拓扑结构和业务量模型,重新进行上述模拟过程。

仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。

使用ns-3进行网络仿真时,一般经过一下4个步骤:

  • 1、选择或开发相应模块

根据实际仿真对象和仿真场景选择相应的仿真模块。

如有限局域网络(CSMA),无线局域网络(Wi-Fi);
节点是否需要移动(mobility);
使用何种应用程序(application);
是否需要能量管理(energy);
使用何种路由协议(Internet、aodv等);
是否需要动画演示(visualizer、netanim)等
如果搭建的网络比较新,读者就需要开发自己设计的协议

  • 2、编写网络仿真脚本:C++或者Python。

编写脚本过程:

1)生成节点(如网卡、应用程序、协议栈等)
节点相当于一个空的计算机外壳,接下来要给计算机安装网络所需要的软硬件,如网卡、应用程序、协议栈等

2)安装网络设备(如CSMA、WiFi、wimax、point-to-point)
不同的网络类型有不同的网络设备,从而提供不同的信道、物理层和mac层

3)安装协议栈:ns-3一般是TCP/IP协议栈。
依据网络选择具体协议(如udp还是tcp)、选择路由协议(olsr、aodv、global等)并为其配置ip地址

4)安装应用层协议
依据选择的传输层协议选择相应的应用层协议,有时需要自己编写应用层产生网络数据流量的代码。

5)其他配置(如节点是否要移动,是否要能量管理)

6)启动仿真。
网络场景配置完成,启动仿真。


  • 3、仿真结果分析。

仿真结果有两种:一种是网络场景,另外一种是网络数据。

网络场景,如节点拓扑结构、移动模型等,一般通过可视化界面(pyviz或netanim)可直观观察到

网络数据也可在可视化界面下有简单统计。此外可以通过专门的统计框架(status)或自行通过ns3提供的追追踪系统(tracing)收集、统计、分析相应的网络数据,如数据分组的延迟、网络流量、分组丢失了、节点消息缓存队列

  • 4、依据仿真结果调整网络配置参数或修改源代码

三.NS2与NS3比较

  • 1.NS-2采用C++和OTcl代码编写,在学习过程中需要学习新的OTcl语言。NS-3全部采用C++语言编写,并且还可以用Python语言编写代码。

  • 2.NS2、NS3都是比较好的网络模拟器。看到好多论文中使用NS2,网上搜索发现已经停止更新。看到NS3还在不断维护更新,且相对NS2来说,加入了Python。这个就看起来比较主流了,再加上对于IPv6来说支持性更好一些。

  • 3.NS-3全部采用C++编写,一般来说大家都会C++,上手容易。而且,在编程方面,NS-3更加灵活。相对来说,NS-2的资料比较多。因为NS-2流行好几年了,流行的协议,毕业论文的相关代码,都比较多。

  • 4.NS-3并不是NS-2的扩展,而是一个全新的模拟器。虽然二者都由C++编写的,但是NS-3并不支持NS-2的API,而是一个全新的模拟器。NS-2的一些模块已经被移植到了NS-3。在NS-3开发过程时,“NS-3项目”会继续维护NS-2,同时也会研究从NS-2到NS-3的过渡和整合机制。

  • 5.NS3和NS2有一些相似之处(比如二者都是基于C++对象,一些NS2的模块已经移植到了NS3上)。

  • 6.我们经常听到一个疑问:“我到底是要继续使用NS-2,还是转向NS-3呢?” 答案是视情况而定。虽然NS-3现在还没有包含所有的NS-2模块,但是另一方面,NS-3也有一些新的功能(比如,能正确地处理节点上的多重接口,使用IP地址,与因特网协议和设计更一致,和更加详细的802.11模块等)。Ns-2的模块可以被移植到NS-3中(移植帮助文件正在开发之中)。NS3的多个方面都在积极开发之中。同时,ns3开发者也相信(部分早期使用者也已证明)NS3已经可以充分被使用,也是用户进行新仿真项目时的一个富有吸引力的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值