|
知识路径: > 测试技术的分类 > 网络测试 > 网络仿真技术 > 网络仿真软件 >
|
相关知识点:5个
|
|
|
|
|
NS起源于Real网络模拟器,最初是为了研究分组交换数据网络中的流量控制和拥塞控制方案的动态性。它提供给用户一种方法来描述网络并观察它们的行为,使用C语言编写,并提供源代码便于用户可以根据他们自己的目的修改模拟器。在此基础上,它是由劳伦斯伯克利国家实验室(LBL: Lawrence Berkeley Labs)、美国施乐公司的帕洛阿尔托研究中心(Xerox PARC: Palo Alto Research Center)、加州大学伯克利分校(UCB: University of California, Berkelay)和南加州大学/科学情报研究所(USC/ISI: University of Southern California / Institute for Scientific Information)等合作,由DARPA资助的VINT工程研究得出的一个仿真工具。
|
|
|
NS基于事件驱动模型,支持协议库,广泛采用了开放的体系结构,用户很容易根据自己的需要开发新协议。目前NS支持的协议基本包括了TCP/IP协议域的所有协议:TCP的各种版本、UDP、RTP、Multicast、无线、移动等。NS的另外一个显著特点是允许将实际网络流量引入到网络仿真环境,这样在某种程度上起到了类似测试床的作用,从而可以在一个接近真实的环境中测试协议的性能。NS是一个面向对象的仿真器,由编译和解释两个层次组成:编译层次包括C++类库,解释层次包括对应的Otcl类。用户以Otcl解释器作为前台使用NS。NS内大部分类是TclObject的子类,用户在解释器环境创建新仿真对象,然后镜像到对应的编译层次对象。这样,在不影响效率的前提下,通过Otcl解释器来使用NS提供极大的灵活性和方便性。
|
|
|
|
NS的核心部分是一个离散事件模拟引擎。NS中有一个“调度器”(Scheduler)类,负责记录当前的时间,调度网络事件队列中的事件,并提供函数产生新事件,指定事件发生的时间。有了这个离散事件模拟引擎,原则上用户可以对任何系统进行模拟,而不限于通信网络系统,用户可以自己完成对所要研究的系统的建模工作,编写各种事件的处理代码,然后利用这个离散事件模拟器来完成对这个模型的模拟。
|
|
|
针对网络模拟,NS已经预先作了大量的模型化工作,NS对网络系统中一些通用的实体已经进行了建模,例如链路、队列、分组、节点等,并用对象来实现了这些实体的特性和功能,这就是NS的构件库。用户可以充分利用这些已有的对象,进行少量的扩展,组合出所要研究的网络系统的模型,然后进行模拟,从而减轻了进行网络模拟研究的工作量,提高了效率。NS的构件库所支持的网络类型包括广域网、局域网、移动通信网、卫星通信网等,所支持的路由方式包括层次路由、动态路由、多播路由等。提供了跟踪和监测的对象,也可以把网络系统中的状态和事件记录下来以便分析。还有数学方面的支持,包括随机数产生、随机变量、积分等。
|
|
|
NS构件库是用两种面向对象的语言编写的:C++和Otcl。其中Otcl是MIT开发的ObjectTcl,即Tcl的面向对象的扩展(Tcl的全称是Toolkit command language,是一种灵活的、交互式的脚本语言,Otcl则是在Tcl中加入了类、实例、继承等面向对象的概念)。NS中的构架通常作为一个C++类来实现,同时,有一个Otcl类与之相对应。这种方式被称为分裂对象模型,构件的主要功能在C++中实现,Otcl中的类主要提供C++对象面向用户的接口。用户通过编写Otcl脚本来对这些对象进行配置、组合,描述模拟过程,调用NS完成模拟。这种方式提高了执行的性能和模拟的效率,增强了构件库的可扩展性和可组合性。
|
|
|
|
|
①进行模拟前,首先要分析模拟涉及哪个层次。NS仿真分两个层次:一个是基于Otcl编程的层次,利用NS已有的网络元素实现模拟,无需对NS本身进行任何修改,只要编写Otcl脚本;另一个层次是基于C++和Otcl编程的层次,如果NS中没有所需要的网络元素,就需要首先对NS扩展,添加所需要的网络元素。这需要利用分裂对象模型,添加新的C++类和Otcl类,然后再编写Otcl脚本。如下图所示为NS仿真流程。
|
|
|
|
|
②开始编写Otcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。
|
|
|
③建立协议代理,包括端设备的协议绑定和通信业务量的模型的建立。
|
|
|
④配置业务量模型的参数,从而确定网络上的业务流量分布。
|
|
|
⑤设置Trace对象。Trace对象能够把模拟过程中发生的特定类型的事件记录在trace文件中。NS通过trace文件来保存整个模拟过程。仿真完成后,用户可以对trace文件进行分析研究。
|
|
|
⑥编写其他的辅助过程,设定模拟结束时间,至此Otcl脚本编写完成。
|
|
|
|
⑧对trace文件进行分析,得出有用的数据。也可以用Nam等工具观看网络模拟运行的过程。
|
|
|
⑨调整配置拓扑结构和业务量模型,重新进行上述模拟过程。
|
|
|