论文发表指导_期刊投稿推荐_期刊论文发表咨询_职称驿站

论文发表指导,期刊推荐,国际出版

职称驿站学术导航
关闭职称驿站导航

论文发表职称晋升 全方位咨询服务

学术出版,国际教著,国际期刊,SCI,SSCI,EI,SCOPUS,A&HCI等高端学术咨询

网络模拟器NS-2及分析期刊发表

来源:职称驿站所属分类:计算机应用论文
发布时间:浏览:38次

   摘 要 随着Internet的迅猛发展,网络模拟占有十分重要的位置。文中探讨和分析了NS-2的结构、功能及其使用方法,最后给出一个实例,具体解释了 NS-2的使用方法和用相关工具对输出结果进行处理的方法,得到了预期的模拟结果。

  关键词 网络模拟;NS;应用

  0 引言

  随着Internet的迅猛发展,网络规模和复杂性的迅速增加,网络研究人员一方面要不断思考新的网络协议和算法,为网络发展做前瞻性的基础研究;另一方面也要研究如何利用和整合现有的网络资源,使网络达到最高效能。无论是哪一方面都需要对新的网络方案进行验证和分析。分析方法的有效性和精确性受假设的限制很大。实验方法的局限在于成本很高,实验床的规模很难做到很大,不能实现网络中的多种通信流量和拓扑的融合。而模拟方法在很大程度上可以弥补前两种方法的不足。NS-2是美国DARPA支持的项目VINT(the Virtual InterNet Tested)中的基础和核心部分。由USI/ISI, Xerox PARC, LBNL 和UC Berkeley这些美国大学和实验室合作研究开发,其目的在于建立一个网络仿真平台,为网络研究人员提供一系列的仿真工具,来实现新的网络协议的设计和实现。

  1 NS-2体系结构及功能模块

  1.1 NS-2简介

  NS-2是面向对象的,基于离散事件驱动的网络环境模拟器。它实现了多种网络协议的模拟,如网络协议TCP、UDP,流量源行为,如FTP、Telnet、Web、CBR、VBR;实现了DropTail、RED、CBQ等几种路由器队列管理机制以及Dijkstra,动态路由、静态路由、组播路由等路由算法。此外,NS-2还支持组播协议SRM及部分MAC层协议。

  NS-2用C++和Otcl语言编写而成。它是免费的,开放源代码的,可以很方便地扩展NS-2的功能,将自己开发的新协议模块集成到NS-2环境中。

  1.2 NS-2体系结构

  NS-2采用了两级体系结构,为了提高代码的执行效率,NS-2将数据操作与控制部分的实现相分离,事件调度器和基本的网络组件使用C++编写和编译,其主要功能是实现对数据包的处理;NS-2的前端是一个Otcl解释器,主要的功能是对模拟环境的配置、建立。从图1 的左下角看,用户利用Otcl库中的模拟对象设计和运行TCL仿真,事件调度器和网络组件通过OTcl链接(tclcl类)和Otcl相关联,这样用户可以在Otcl空间能够方便地对C++对象的函数和变量进行修改与配置。

  1.3 NS-2的功能模块

  在NS-2中,整个模拟过程由一个名为Simulator的Tcl类来定义和控制的,Simulator类提供了一系列对模拟进行配置的接口,这其中包括选择“事件调度器(event scheduler)”的接口。进行模拟通常要首先创建一个Simulator类的实例对象,并调用该对象的一系列方法来创建节点(Node)、拓扑(Topology)等模拟所必需的对象。

  模拟器封装了许多功能模块:节点、链路、分组、代理、流量发生器、应用模拟器等。

  1) 事件调度器: NS-2是一个事件驱动的模拟器,调度器也就成为NS-2的调度中心,主要功能是处理分组(packet)的延迟和充当定时器。从所有事件中选择发生时刻最早的事件执行,调用它的handle函数,把该事件执行完毕,然后从剩余的所有事件中选择发生时刻最早的事件执行,如此反复执行。NS-2只支持单线程,如果有多于一个事件安排在同一时刻,那么会按照事件代码插入的先后次序执行。

  2) 节点(Node): 表示端节点和路由器,主要由地址分类器、端口分类器、多播分类器和复制器等模拟组件构成。分类器从逻辑上匹配一个分组,并基于匹配的结果把该分组传递给相应的对象。复制器是生成一个分组的多份拷贝,并把这些拷贝转发到各个订阅了某一多播组G的输出链路。

  3) 链路(Link): 用来连接网络节点,所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。主要由DelayLink、Queues和TTLChcker等连接器(Connector)构成。DelayLink构造链路带宽和延迟特征;Queues构造和模拟与该链路相连的路由器的输出缓冲;TTLChcker对该链路的数据包的TTL字段减1操作,并丢弃TTL值为0的数据包。

  4) 分组(Packet):是对象间交互的基本单元。由一系列分组头和一个可选的数据空间组成。分组头的结构在Simulator对象创建时就被初始化了,同时每个分组头相对于分组的起始地址的偏移量也被记录下来,提供用户来存取各个头部所包含的信息。

  5)代理(Agent):代表了网络层分组的起点和终点,并被用于实现如TCP和UDP等网络协议。Agent类支持分组的产生和接收,C++的Agent包含一系列的内部状态变量来表示分组的各个域。Agent可以实现多个层次的协议,对于一些运输层的协议,分组的大小和发送时间通常由Agen提供的应用程序接口(API)来控制,对于在低层使用的Agent(路由Agent),分组的大小和发送时间通常由Agent自己控制。

  6)流量发生器(traffic generator)、应用模拟器(simulated application): 是构建在运输层代理之上,流量发生器是模拟应用程序产生网络通信量,有四类:(1)EXPOO_Traffic、(2) POO_Traffic、(3)CBR_Traffic、(4)TafficTrace,它们一般用在UDP代理之上,应用模拟器有FTP,Telnet,一般用在TCP代理之上。

  2 用NS-2进行网络模拟

  进行模拟之前,首先要分析模拟涉及哪个层次。NS模拟分两个层次:一个是基于Otcl编程的层次,利用NS已有的网络元素实现模拟,无需对NS本身进行任何修改,只要编写Otcl脚本,另一个层次是基于C++和Otcl编程的层次,如果NS中没有所需的网络对象,就需要对NS扩展,利用Otcl和NS的接口类实现NS的更新,然后再编写Otcl脚本。整个模拟的过程如图3所示:

  2.1 Otcl实现模拟的一般过程

  (1)建立network model: 描述模拟网络拓扑结构,确定链路的基本特性,如延迟、带宽和丢失策略等。

  (2)建立traffic model: 包括端设备的协议绑定和通信业务量模型的建立,配置业务量模型的参数,从而确定网络上的业务量分布。

  (3)设置Trace对象。Trace对象能够把模拟过程中发生的特定类型的事件记录在Trace文件中。NS通过Trace文件来保存整个模拟过程。模拟完成后,用户可以对Trace文件进行分析研究。

  (4)编写其他的辅助过程,设定模拟开始/结束时间,运行Otcl脚本仿真。

  (5)追踪分析结果:对Trace文件进行分析,利用gawk、xgraph、gnuplot得出有用的数据曲线,或者用Nam观看网络模拟运行过程。2.2 C + + 建立新协议或修改已有网络对象进行扩展要考虑的问题

  如果模拟只要求对现有的协议进行简单修改即可完成,无需建立新的协议代理,则找到相应的待修改协议代码进行预期的修改,然后直接编译生成新的NS。然而,当建立新协议时一般需要考虑以下问题:

  (1)首先定义头文件,包括数据结构和决定新代理的继承结构,并建立恰当的类定义。

  (2)定义C++代码和Otcl代码之间的接口连接,即定义OTcl 连接函数。

  (3)至少定义接收函数recv( )和命令函数command( )。

  (4)新协议代码完成后,要对相关文件进行改动。例如,如果定义了一个新分组头,要改动NS目录下packet.h文件的enum packet_t{ }和class p_info{ }相应部分;改动tcl/lib/ns-default.tcl文件,定义Tcl对象的缺省值;改动tcl/lib/ns-packet.tcl文件,在该文件中为新的分组增加一个入口;改动Makefile文件,将*.o文件加入到该文件NS对象文件列表中。

  (5)在NS目录下运行Make Depend和Make,重新编译NS,至此生成了新的NS。

  3 应用实例

  本例将介绍如何使用一些工具来分析和呈现模拟结果,主要是测量端到端的延迟,而采用的方法一是去分析Trace文件,方法二是去修改NS核心,把所需要测量的数据直接记录下来,限于篇幅我们不在此进一步介绍方法二。模拟场景如图4所示,包含四个节点(n0,n1,n2,n3),假设n0,n2和n1,n2之间链路带宽2Mbps,延迟为10ms;n2和n3之间链路带宽1.7Mbps,延迟为20ms;每个链路用DropTail策略;n2和n3之间链路最大队列长度为10;n0,n3之间有一条建立在TCP上的FTP连接,n1,n3之间有一条建立在UDP上CBR连接;CBR是在 0.1秒开始发送,在4.5秒结束,FTP是在1.0秒开始发送,在4.0秒结束。

  3.1 建立Otcl模拟代码文件#创建一个模拟对象set ns [new Simulator]#为数据流定义不同的颜色,供NAM用$ns color 1 Blue$ns color 2 Red#打开一个 NAM trace fileset nf [open out.nam w]$ns namtrace-all $nf#打开一个 trace file 记录数据包的传送过程set nd [open out.tr w]$ns trace-all $nd#定义一个结束程序proc finish {} { global ns nf nd $ns flush-trace #关闭 NAM trace file close $nf close $nd #以后台方式执行 NAM exec nam out.nam & exit 0}#创建四个节点set n0 [$ns node]set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]#把节点连接起来$ns duplex-link $n0 $n2 2Mb 10ms DropTail$ns duplex-link $n1 $n2 2Mb 10ms DropTail$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail#设定n2和n3之间最大队列长度为10$ns queue-limit $n2 $n3 10#设定节点的位置,供NAM用$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n1 $n2 orient right-up$ns duplex-link-op $n2 $n3 orient right#设定n2-n3间的队列位置,供NAM用$ns duplex-link-op $n2 $n3 queuePos 0.5#建立一条TCP连接set tcp [new Agent/TCP]$tcp set class_ 2$ns attach-agent $n0 $tcpset sink [new Agent/TCPSink]$ns attach-agent $n3 $sink$ns connect $tcp $sink#在NAM中,TCP的连接以蓝色表示$tcp set fid_ 1#在TCP连接之上建立FTP应用set ftp [new Application/FTP]$ftp attach-agent $tcp$ftp set type_ FTP#建立一条UDP连接set udp [new Agent/UDP]$ns attach-agent $n1 $udpset null [new Agent/Null]$ns attach-agent $n3 $null$ns connect $udp $null#在NAM中,UDP的连接以红色表示$udp set fid_ 2#在UDP连接之上建立CBR应用set cbr [new Application/Traffic/CBR]$cbr attach-agent $udp$cbr set type_ CBR$cbr set packet_size_ 1000$cbr set rate_ 1mb$cbr set random_ false# 设定FTP和CBR的开始和结束时间$ns at 0.1 $cbr start$ns at 1.0 $ftp start$ns at 4.0 $ftp stop$ns at 4.5 $cbr stop#在5.0秒调用finish过程结束模拟$ns at 5.0 finish#执行模拟$ns run本例子在FedoraCore4,ns-2.29下测试通过,模拟结束后,产生两个文件,一个是out.nam,这是供NAM用的,用来可视化整个模拟过程;另一个是out.tr,记录了模拟过程中数据包传送中的所有事件,这是我们分析的重点。3.2 利用awk提取out.tr文件中的数据 awk是一种程序语言,可以使用很短的代码轻易地完成对文本档案做修改、分析、提取和比较等处理。根据Trace文件格式,我们很容易写出测量CBR数据包端到端延迟时间的awk程序delay.awk:#测量CBR数据包端到端延迟时间BEGIN { highest_packet_id = 0;}{ action = $1; time = $2; from = $3;to = $4; type = $5; pktsize = $6; flow_id = $8; src = $9; dst = $10; seq_no = $11; packet_id = $12; if ( packet_id > highest_packet_id ) highest_packet_id = packet_id; if ( start_time[packet_id] == 0 ) start_time[packet_id] = time; if ( flow_id == 2 && action != d ) { if ( action == r ) { end_time[packet_id] = time; } } else { end_time[packet_id] = -1; }} END { for ( packet_id = 0; packet_id <= highest_packet_id; packet_id++ ) { start = start_time[packet_id]; end = end_time[packet_id]; packet_duration = end - start; if ( start < end ) printf(%f %fn, start, packet_duration); }} 本例执行并把结果重定向到cbr_delay文件中:$awk –f delay.awk out.tr>cbr_delay3.3 利用Xgraph绘出图形 Xgraph是ns-allinone包中自带的一个小巧的绘图工具,它可以根据数据文件里的数据绘制出相应的图形。本例执行:$xgraph cbr_delay,结果如图5所示:

  图5 cbr_delay图 由图可以看出:在一刚开始的时候,由于只有CBR的数据包,所以端到端的延迟是固定的,但在1.0秒后,FTP数据包参与争夺网络资源,因此,端到端的延迟变得不固定,但等到FTP传输结束后,CBR数据包的端到端的延迟又变得固定了。4 结论 网络模拟日益成为分析、研究、设计和改善网络性能的强大工具,NS-2便是其中功能强大且可以免费得到的一种。本文详细讨论了NS-2的结构、功能及其使用方法,并给出一个实例具体解释 NS-2的使用及使用相关工具对输出结果进行处理。总的来说,NS-2结构复杂,有一个相对陡峭的学习曲线,希望本文对学习NS-2能有所裨益。 参考文献

  [1] http://www.isi.edu/nsnam/NS DB.

  [2] http://nile.wpi.edu/NS DB.

  [3] 刘俊,徐昌彪,隆克平. 基于NS的网络仿真探讨J.计算机应用研究,2002

  [4] http://140.116.72.80/~smallko/ns2/ns2.htm DB

《网络模拟器NS-2及分析期刊发表》

本文由职称驿站首发,您身边的高端学术顾问

文章名称: 网络模拟器NS-2及分析期刊发表

文章地址: https://m.zhichengyz.com/p-23799

相关内容推荐
专著出版价格影响因素
只取得了书号,就一定公开出版了么
Journal of the Indian Society of Remote Sensing容易中稿吗
副高专业技术职称sci论文可以吗
Journal of Medical Virology是sci吗
进职称论文可以用综述论文吗
国际出版社出版的专著能够用来评职称吗
老师出专著需要多长时间,多少钱
未能解决您的问题?马上联系学术顾问

未能解决您的问题?

不要急哦,马上联系学术顾问,获取答案!

免费获取
扫码关注公众号

扫码关注公众号

微信扫码加好友

微信扫码加好友

职称驿站 www.zhichengyz.com 版权所有 仿冒必究
冀ICP备16002873号-3