用网络仿真软件NS2进行IP网络的仿真

合集下载

NS2仿真实验报告

NS2仿真实验报告

Ns2简单有线网络仿真实验报告一、实验概述1、在windows系统下安装Centos虚拟机2、在Centos系统下安装NS2仿真工具包3、Nam方式示例二、实验内容1)NS2仿真工具包安装说明1.在Centos系统下设置root账户2.解压NS2文件3.安装ns-allinone-2.35设置环境变量4.验证NS2工具包安装情况2)Nam方式Otcl脚本# 产生一个仿真的对象set ns [new Simulator]#针对不同的资料流定义不同的颜色,这是要给NAM用的$ns color 1 Green$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-traceclose $nfclose $nd#以背景执行的方式去执行NAMexec nam out.nam &exit 0}#产生6个网络节点set n0 [$ns node]set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set n4 [$ns node]set n5 [$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$ns duplex-link $n3 $n4 1.7Mb 30ms DropTail$ns duplex-link $n3 $n5 1.5Mb 30ms DropTail#设定ns2到n3之间的Queue Size为10个封包大小$ns queue-limit $n2 $n3 10$ns queue-limit $n3 $n4 5#$ns queue-limit $n3 $n5 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$ns duplex-link-op $n3 $n4 orient right-up$ns duplex-link-op $n3 $n5 orient right-down#观测n2到n3之间queue的变化,这是要给NAM用的$ns duplex-link-op $n2 $n3 queuePos 0.5#建立一条n0-n5TCP的联机set tcp [new Agent/TCP]$ns attach-agent $n0 $tcpset sink [new Agent/TCPSink]$ns attach-agent $n5 $sink$ns connect $tcp $sink#在NAM中,TCP的联机会以Green表示$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"#结束TCP的联机(不一定需要写下面的程序代码来实际结束联机)$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"#在仿真环境中,5秒后去呼叫finish来结束仿真(这样要注意仿真环境中#的5秒并不一定等于实际仿真的时间$ns at 5.0 "finish"#执行仿真$ns run3)仿真结果仿真结束后,会产生out.nam和out.tr两个档案用来把仿真的过程用可视化的方式呈现出来4)数据分析1.End-to-End Delay把测量CBR封包端点到端点间延迟时间的awk程序,写在档案measure-delay.awk档案中BEGIN {#程序初始化,设定一变量以记录目前最高处理封包的ID。

基才NS2仿真的IP网络性能分析与研究

基才NS2仿真的IP网络性能分析与研究
大 量 的 仿 真 实验 数 据 分 析 不 同拓 扑 类型 对 I 网络 性 能 产 生 的 不 同影 响 。 P
关键 词 : S N 2仿 真 ; 能 分 析 ; 扑 ; 能 指 标 性 拓 性
中 图 分 类 号 : P 0 .1 T 33 0 文 献标 识 码 : A 文 章 编 号 :1 7 — 2 6 2 1 ) 0 1 一 4 6 4 6 3 {0 2 1 13 o M-
Pe f r a c n l ss a e e r h f口 n t r b s d o 2 r o m n e a a y i nd r s a c o e wo k a e n NS
Z HAO J— o HOU i ,Z b Yu,Z HOU n -in Ho gqo g
d l t r p ce s rt a dS n T eepr e t sl o a df rn t ooyt e aedf rn e et O e y ie, aktos ae n o . h x e m na r ut s wt t ieeto l p s v ieet f cs HI a jt l O i le s h h p g y h f P
是 实 现 以上 两 个 方 面 的重 要 手 段 。

络 仿 真 器 . 核 心 部 分 是 一个 离 散 事 件 模 拟 引 擎 。N 2仿 真 其 S
器具有强 大的数据处 理功能 , 扩 展性强 , 行效率 高 , 可 执 且
仿 真 结 果 的 可 靠 性 高 。N 2支 持 T P U P等 网 络 协 议 , 以 S C 、D 可
随 着 网络 的不 断 发 展 。 络 的 研 究 也 越 来 越 受 到 人 们 的 网 关 注 , 方 面 需 要 不 断 研 究 新 的 网 络 协 议 和 各 种 算 法 , 足 一 满 现 有 网 络 存 在 的 不 足 , 升 性 能 , 网络 发 展 做 出 前 瞻 性 的 提 为 研 究 : 一方面也要考 虑如何整合 、 用现有 的网络资源 . 另 利 完 善 网 络 结 构 。 现 有 网络 达 到 最 高 效 能 。I 使 P网 络 性 能 的分 析

网络模拟器NS2中仿真功能的问题分析及改进

网络模拟器NS2中仿真功能的问题分析及改进

第21卷第2期 系统 仿 真 学 报© V ol. 21 No. 22009年1月 Journal of System Simulation Jan., 2009网络模拟器NS2中仿真功能的问题分析及改进况晓辉1, 赵 刚1,2, 郭 勇1,3(1.北京系统工程研究所, 北京 100101; 2.清华大学计算机科学与技术系, 北京 100084; 3.国防科技大学信息系统与管理学院, 长沙 410073)摘 要:网络仿真技术为解决大规模网络规划、应用和协议设计面临的挑战提供了新的途径。

作为广泛应用的网络模拟器,NS2为建立可扩展的网络仿真环境奠定了重要基础。

在描述NS2仿真功能实现的基础上,重点分析了NS2仿真功能存在的不足。

针对发现的问题,提出并实现了NS2仿真功能扩展,最后验证了仿真功能扩展的正确性。

关键词:网络仿真;NS2;报文转换;功能扩展中图分类号:TP393 文献标识码:A 文章编号:1004-731X (2009) 02-0427-05Improvement of Emulation Function in Network SimulatorKUANG Xiao-hui 1, ZHAO Gang 1,2, GUO Yong 1,3(1. Beijing Institute of System and Engineering, Beijing 100101, China; 2. Department of Computer Science and Technology,Tsinghua University, Beijing 100084, China; 3. Department of Information System and Management of NUDT, Changsha 410073, China)Abstract: Network emulate technology which enables real hosts and a real network to interact with a virtual network, becomes a very important way to resolve the challenge faced in network plan, application and protocol design. As a famous network simulator, NS2 proposed a foundation to construct network emulate platform. The emulation function of NS2 was described firstly. Based on analysis the problem of emulation function in NS2, the extension of NS2 emulation function was proposed and implemented. The correctness of extension was dominated in the end. Key words: network emulation; NS2; packet reform; function extension引 言互联网的迅速发展与膨胀对网络的规划、应用和协议的设计提出了新的挑战。

ns2的基本功能和用法。

ns2的基本功能和用法。

ns2的基本功能和用法。

NS2是一款广泛使用的离散事件网络仿真器,它可以用来模拟网络协议、网络拓扑结构、传输层协议等各种网络方面的问题。

在本文中,我们将会详细介绍NS2的基本功能和用法,让您了解如何使用这个强大的工具来开展网络仿真和探索。

第一部分:NS2的简介NS2全称Network Simulator 2,是一款免费且开源的网络仿真平台,它可以运行于Linux和Windows操作系统。

NS2是C++编写的,它是由一个模块化的体系结构构建而成的。

NS2可以帮助你模拟和测试各种网络协议和技术,包括但不限于TCP/IP、WiFi、无线通信、移动通信、卫星通信等。

NS2的基本组成部分包括:- OTcl:OTcl是一个面向对象的Tcl解释器,它被用来编写NS2的脚本文件。

它可以帮助您表示仿真模型以及控制仿真场景和参数。

- C++代码:NS2的模拟核心是由C++编写的,它包含了底层的网络协议处理逻辑和数据结构。

- Trace:NS2的Trace模块可以记录仿真过程中所有的事件和消息交换。

我们可以通过Trace来分析仿真结果,并对仿真场景进行可视化。

总结NS2是一个开源且强大的网络仿真器,它的核心部分是由C++编写而成的。

NS2可以帮助您模拟和测试各种网络协议和技术,并提供一个强大的OTcl 脚本语言来控制和配置仿真模型。

第二部分:NS2的基本功能NS2提供了很多强大的功能,如下所示:1. 拓扑结构模拟NS2可以帮助我们模拟各种网络拓扑结构,例如星型、树形结构、层次结构等。

通过定义节点、连接和协议,我们可以很容易地构建复杂的拓扑结构,并进行仿真和测试。

2. 参数设置和控制通过OTcl脚本,我们可以轻松地配置和控制仿真模型。

我们可以设置各种参数,例如发送速率、仿真持续时间、节点位置等等。

此外,我们还可以通过设置事件触发器来控制仿真场景的流程。

3. 模拟协议NS2可以帮助我们模拟各种协议,例如TCP、UDP、ICMP等。

网络仿真器NS-2及其一个应用实例

网络仿真器NS-2及其一个应用实例

NS- 2 是 一个具有仿真事件驱 动、网 络构件 对象库 和网络 配
置模块库的 Otcl 脚本解释器。NS- 2 中编译 类对象通过 Otcl
连接建立了与之对应的解释类对象, 这样用户 可以在 Otcl 空
间能够方便地对 C+ + 对象的 函数和 变量进 行修改与 配置, 充分体现了仿真器的一致和灵活性。 2. 3 NS- 2 的功能模块
本文要介绍的是目前应用较 为广泛的 网络仿 真软件 NS - 2( Network Simulator) , 它是由 UC Berkely 大学开 发的一个 基 于事件驱动的仿真器。它能近乎真实地模 拟网络环 境, 让 我 们可以在各个层次上模拟网络的运行。
2 NS- 2 结构和功能
2. 1 NS- 2 简介 NS- 2 是 面向对象的, 基 于离散 事件驱 动的网 络环境 模
3) 链路( Link) : 由 多个组 件复 合而成, 用来 连接 网络 节 点。所有的链路都是以队列的形式来管理 分组的到 达、离 开 和丢弃。在链路中增加了 Trace/ EnqT 、Trace/ DeqT、Trace/ DrpT 以及 Tracer/ RecvT 等对象可以跟踪每个数据包到达、进入、离 开队列以及被丢弃的时间; 还可以用队列监视 器( Queue Mon itor) 来监测队列长度和平均队长的变化情况。
用户使用 NS- 2 实现tcl 源 程序来初始 化一个事 件 调度器, 定义网络拓扑结构, 配置业务源, 确定 发送和接受 传 输数据包的时间, 然后启动 NS- 2 仿真器。
2) 运行仿真程序。 3) 仿真结果分析: 程序运行 结束后, 用户根据记录 模拟数 据的文档, 利用 NS- 2 中的可视化仿真软件 NAM 动态 查看仿 真的运 行过 程、观察 跟 踪数 据, 或 使用 Linux 中的 Xgraph 或 Windows 下的 Origin 等软件将结果转换成带有坐标的平面图。

用NS_2进行无线网络仿真

用NS_2进行无线网络仿真
关键词: N S 2; 网络仿真; 无线网络; C+ + 中图分类号: TN 919172 文献标识码: B 文章编号: 1004 373X (2004) 22 027 03
W ireless Network S im ula tion U s ing NS 2
W AN G Zhaoqiang, GE W ancheng, P I Kunbao
N S 2 是一个可扩展、易配置、可编程的事件驱动网络 仿真引擎。他是一个开源软件, 具有开放的体系结构, 并有 大量的协议库支持。基本模型包括局域网、无线局域网、卫 星网、广域网等, 并对网络分层模型中的各种协议有丰富的 支持。因此在国际上享有很高的学术声誉, 被世界各国的网 络研究者广泛使用。 但目前国内的研究资料还相对较少。
(4) 设置 T race 对象。T race 对象把仿真过程中发生 的特定类型事件记录在 trace 文件中。N S 2 通过 trace 文 件保存整个仿真过程。仿真完成后, 用户可以对 trace 文件 进行分析研究。
(5) 编写其他的辅助过程, 设定仿真结束时间, 至此 O T cl 脚本编写完成。
图 1 显示了N S 2 的体系结构。N S 2 软件包中包括 T cl T K [2], O T cl, N S, T clCL。其中 T cl (Too lk it comm and language) 是一种灵活的、交互的、开放式脚本语言, T K 是 基于 T cl 的图形程序开发工具箱, 是 T cl 的重要扩展部分, 用 于 X 环境下图形界面的开发。O T cl 是 T cl T K 的面向对象 的扩展, 在 T cl 中加入了类、实例、继承等面向对象的概念, 有自己的类层次结构。N S 2 是面向对象的仿真器, 用 C+ + 编写, 以O T cl 解释器为前端。因此, N S 2 中的构件一般都 是由相互关联的两个类来实现的, 一个在 C+ + 中, 一个在 O T cl 中, 构件的主要功能通常在 C+ + 中实现, O T cl 中的类 则主要提供C+ + 对象面向用户的接口。C+ + 对象和O T cl 对象 之间是通过 T clCL 机制关联起来的。

NS2与网络仿真part2

NS2与网络仿真part2

OTcl 语言
• • • • • • • • • • • • • • • • • • • • proc prime {j} { #Computes all the prime number till j for {set a 2} {$a <= $j} {incr a} { set b 0 for {set i 2} {$i < $a} {incr i} { set d [expr fmod($a,$i)] if {$d==0} { set b 1 } } if {$b==1} { puts "$a is not a prime numner" } else { puts "$a is a prime numnber" } } } prime $j
NS2介绍
• NS是一种面向对象Tcl(OTcl)语言脚本解释器,它有一个事件调度器、 一个网络组件库。换句话说,使用NS时需要使用OTcl语言编写脚本文 件。 • 事件调度器(Event Scheduler):事件在NS中是一个具有唯一ID号的数据 包、数据包被处理的时间及处理它的主对象的总称。事件调度器跟踪 仿真的时间并且根据预定时间安排队列中的事件,激活当前时间对应 的处理该事件的网络对象。事件调度器维护一个排序的数据结构(缺 省情况下ns使用链表),对事件有序地执行、释放,并激活事件处理 对象。 • NS由C++和OTcl写成:其中C++语言实现各种网络组件(Network Component),这是为了提高效率;OTcl语言编写脚本文件来建立网络 和运行仿真,这样是为了简单而快速地进行网络环境的建立。
OTCL编程环境
例 1. 一个简单的 Tcl 脚本
OTcl 语言

基才NS2仿真的IP网络性能分析与研究

基才NS2仿真的IP网络性能分析与研究

基才NS2仿真的IP网络性能分析与研究赵吉波;周宇;周红琼【摘要】In this paper, network simulation method is mainly adopted. In order to simulate IP network operation, NS2 simulation software is applied. Four typical network topology structures: Bus, Star, Ring, mesh are achieved by programming. We select some key performance indicators of network transmission as experimental collection objects such as packet delay, delay jitter, packet loss rate and so on. The experimental results show that different topology types have different effects on IP network performance.%采用网络模拟仿真方法,选用NS2仿真软件模拟IP网络运行。

编程实现四种典型的网络拓扑结构:总线型、星型、环型、网型,选取网络传输中的数据包延时、延时抖动、丢包率以及吞吐量等关键性能指标为实验采集对象。

通过大量的仿真实验数据分析不同拓扑类型对IP网络性能产生的不同影响。

【期刊名称】《电子设计工程》【年(卷),期】2012(020)004【总页数】5页(P113-116,119)【关键词】NS2仿真;性能分析;拓扑;性能指标【作者】赵吉波;周宇;周红琼【作者单位】宁波大学信息学院,浙江宁波315211;宁波大学信息学院,浙江宁波315211;宁波大学信息学院,浙江宁波315211【正文语种】中文【中图分类】TP303.01随着网络的不断发展,网络的研究也越来越受到人们的关注,一方面需要不断研究新的网络协议和各种算法,满足现有网络存在的不足,提升性能,为网络发展做出前瞻性的研究;另一方面也要考虑如何整合、利用现有的网络资源,完善网络结构,使现有网络达到最高效能。

使用NS2网络仿真软件对信息传输进行仿真

使用NS2网络仿真软件对信息传输进行仿真

西安邮电学院通信与信息工程学院科研训练报告专业班级: 通工0904班 学生姓名: xxxx 学号(班内序号): XXXXXXXX (XX 号)2012 年 11 月 6 日——————————————————————————装订线————————————————————————————————报告份数:实验总成绩:使用NS2网络仿真软件对信息传输进行仿真摘要:在人们决定构建一个新的网络系统或者建立一个新的协议时,人们总希望在投入很多成本实验之前能有一种方便修改、结果直观的系统对该网络或协议模型进行测试,开源的网络仿真软件NS因此诞生,为网络拓扑设计与协议开发提供了一个有力的仿真测试平台。

为了对NS2系统进行学习,我建立了两个典型的网络拓扑结构,分别对有线/无线混合网络及路由选择过程进行通信仿真与分析,通过这两个仿真实验达到初步掌握与了解NS2的目的。

关键字:NS2 网络仿真混合网络结构路由选择ABSTRACTNetwork Engineers And Researchers always need a convenient and easy-amend simulation system to test their design of new network topo and protocol before a lot of cost dive into experiment and test,The Network Simulation(NS2) is a powerful ,open source simulation plat which can appease them.Processed from study NS2 system ,I build two emblematical network topo (wired/wireless mixed network and route choose process),via build and simulate this two systems to learn how to use NS2 and NS2’s analyse tools.Keywords:NS2; Network Simulation;Mixed network; Route hoose processO、引言在人们决定构建一个新的网络系统或者建立一个新的协议时,人们总希望在投入很多成本实验之前能有一种方便修改,结果直观的系统对该网络或协议模型进行测试,开源的网络仿真软件NS因此诞生,为网络拓扑设计与协议开发提供了一个有力的仿真测试平台。

无线网络中多媒体信息传输的NS2仿真设计

无线网络中多媒体信息传输的NS2仿真设计

摘要无线网络中多媒体信息传输的NS2仿真在无线多媒体通信系统中,视频信源在发送端按照一定的编码方式进行编码,形成视频帧,然后在网络层和传输层封装成IP数据包,再经过无线信道传输到达接收端,在接收端进行解包和恢复,得到视频帧,再形成重建后的视频流。

在此过程中,无线信道的传输特性会影响到视频的传输质量。

本文在利用Evalvid 工具的基础上,综合NS2仿真工具,建立研究多媒体信息在无线网络中传输的平台。

在视频流仿真方面,本文采用了将视频流的Trace 文件引入NS仿真环境的方法,来模拟实际网络传送的视频流,并在tcl程序代码中设定G-E模型的参数变量,这样就可以得到经模拟网络传输后数据包的收发情况,并对无线信道对多媒体信息传输质量的影响进行评估。

实验中采用的网络拓扑结构为无线局域网拓扑结构。

仿真结果表明,由于无线信道特性的不理想,在接收端恢复视频信息与视频信源相比较,会出现一定的失真。

本文还综合利用多种工具对视频信息的质量变化进行评估,如数据封包的时延、视频的PSNR值、可解画面比例与原始图像和重建后的图像的差异等。

关键词:无线网络;多媒体信息;网络仿真;AbstractThe Simulation Of Multimedia Information Transmission in Wireless Network Video information are encoded by a certain means in the sending end among the system of wireless-multimedia communication,informing the video frames,and then they was encapsulated in the network layer and the transmission layer.Before they reach the sink,they transmit across the wireless channel,and now they are download and renew,getting the new frames,which inform the rebuided video stream.Among this course,the characteristic of wireless channel could affect the quality of video transmission.Based the useage of Evalvid tool and integrated ns2 simulation tool,we construct the platform for researching the transmission of multimedia in wireless network.In the simulation of video stream, in order to simulate the actual transmission of video stream in the network,we apply the method that importing the traffic trace file of video stream into the ntework simulation circumstance,and then we enactment the parameter of the G-E model in the tcl script,in this way,we can get the condition of datagramme,meanwile,we evaluate the effect of wireless channel for the transmission of multimedia.In this experiment,we adopt the WAN topologyframework as the network framework.The result revealed that as the ideallessness characteristic of wireless channel,there is a certain distortion between the original video source and the rebuilded video information.Meanwhile,we utilize kinds of tools,such as the delaytime of datagrame、the value of PSNR for video、decodable frame rate 、the difference between the source video file and the rebuilded video file and so on,evaluating the quality of video information.Key words:wireless network;multimedia information; network simulation目录第一章绪论31.1引言31.2 选题意义41.3 论文章节安排5第二章无线网络的信道模型与视频帧52.1无线局域网的传输标准52.2无线信道的G-E模型82.3视频流的封装原理92.3.1 MPEG标准92.3.2MPEG中有关GOP的概念102.3.3封包和帧的关系102.4画图工具的介绍11第三章无线局域网视频仿真环境的构建143.1 基于myevalvid工具的多媒体传输系统143.2 NS2模拟无线网络的传输163.2.1 NS2与其基本原理163.2.2 网络拓扑结构的组成183.2.3无线传输差错模型的实现193.3仿真网络的结构213.4 视频仿真的细节22第四章视频信息传输研究244.1实验探究步骤244.2视频传输研究294.2.1视频帧的比较294.2.2 数据包的延时31第五章总结与展望32致33参考文献33第一章绪论1.1引言随着无线网络和多媒体技术的迅猛发展,无线网络已逐步从单一的数据传送网向数据、语音、图像等多媒体信息的综合传输网演化。

NS2网络仿真器功能扩展方法及实现

NS2网络仿真器功能扩展方法及实现

第 25 卷 第 6 期 2004 年 6 月小型微型计算机系统 M IN I- M ICR O SY ST EM SV ol . 25 N o. 6 June 2004 NS2 网络仿真器功能扩展方法及实现王晓曦, 王秀利, 周津慧, 王永吉( 中国科学院 软件研究所 互联网软件技术实验室, 北京 100080)摘 要: NS 2 作 为开源软件缺少对最 新研究算法的模拟 能力. 在现 有软件基础上对其进 行功能扩展 极其必要, 是模拟 研究新理论新算法的基础. 本文着重探讨网络仿真软件 NS 2 的功能扩展原理及 设计实现, 展示运用 N S 2 仿真器对网络 行为进行研究的过程. 最后对该算法进行模拟实验, 并与已 有 RED 和 PI 算法进行性能对比分析. 关 键 词: 网络仿真器; 网络拥塞控制; NS 2; 功能 扩展; PID 控制 中图分类号: T P393 文献标识码: A 文 章 编 号: 10001220( 2004) 061009-06Function Extension of NS2 Network Simulator and its ImplementationW A N G Xiao-xi, W AN G Xiu-li, ZHO U Jinhui, W A N G Y ong ji( L aborat ory f or I nter net S of tw are T echnol og ies, I nsti tute of S of tw ar e, Ch inese A cad emy of S cie nc es, B eij ing 100080, China)Abstract: NS 2 ( N etw or k Simulator V ersio n 2) as open so urce soft war e, it lacks t he a bility t o simulate some latest developed alg or ithms. T his leads to t he r equir ement o f the functio na l ex tension of the cur rent ver sio n. T his paper fo cuses on the descr iptio n of the ex tension principle and implementation details of NS 2, a nd presents the entire pr ocess of resear ch o n netw or k behavior by using NS 2 sim ulato r. T he str uctur e o f N S2 and the P ID ( P ro po rt ional I nt egr al Differ ent ial ) contr ol principle fo r the netw or k co ng estio n contr ol ar e first described, and then the det ails of the ex tensio n pr inciple and its implementat ion pr ocedur es ar e pr esented w it h the PID cong est ion co ntro l algo rithm as an ex ample. F inally, the simulation of P ID is carr ied out and t he r esult is com par ed w it h t ho se g enerat ed fr om the RED a nd PI alg orithms. Key words: net wo rk simulato r; net wo rk cong est ion contr ol; NS2; functio n ex tensio n; PID co ntro l1 引 言互联网的迅速发展与膨胀对网络规 划和设计提出了新的 挑战. 在网络 研究中, 网络仿真 扮演着越 来越重要的 角色. 它 给研究人员提供了一个方便、 高效的验证和分析方法. 对于 任何一个仿 真软件而 言, 往往 都会缺少 对于一些 最 新出 现的技术、 协议或 方法的支持 与实现. 因此, 能在现有 仿 真软件的基础上, 对其进行功能扩展是极其重要的, 是跟上科 学研究前沿的基础. 在 众多仿 真软件 中, N S 2( N etw o rk Simulato r V er sio n 2) 是 一 个 很 好 的 开 放 源 代 码 软 件 [ 1] . 它 由 位 于 美 国 加 州 的 L N BL 网络研究组于 1989 年开始研究开 发, 其前身 是 REA L netw or k simulato r [ 2] . N S 2 在国内外均 具有极高的 知名度, 是 进行网络研究的首选软件之一. 国内现有 的一些中文文献重 在讨论 N S2 的模块组成、 仿 真脚 本的编 写技巧 等方面 [ 3-5] , 但对 N S2 扩展 原理的 讨论 相 对较少. 本文将着重探讨网 络仿真软件 N S2 的功能扩展 原理及设计实现, 并全面展示了运用 NS 2 仿真 器对网络进行研究 的整个过程.2 NS2 网络模拟器的结构和特点NS 2 是 一种很好 的开源软件, 在国 内外具有极 高的知名 度. 在 A Q M ( A ctive Queue M ana gement 主 动 队 列 管 理 ) 中 [ 6] , 最著 名的 RED 算 法( R ando m Ear ly D etectio n) [ 7] 采用 的是 N S 模拟 器的前 身 REA L [ 2] 进行 的模拟 仿真. 其 他一些 著 名 的 A QM 控 制 算 法, 如 P I ( Pr opo rtional Integ r al) [ 8] 、 REM ( Random Expo nential M ar king ) [ 9] 、 U E [ 10] 等 都 采用 BL NS 2 作为验证算法的模拟平台. 本文 重在 讨 论 对N S 2的 功能 扩 展 , 本 节后 面 部 分 仅对 NS 2 的软件模块和特点进行讨论 . 关于如何编写 T CL 仿真脚 本等方面更详尽的资料, 请 读者参考文献[ 1, 3, 4, 5] . 2. 1 软件模块 NS allino ne 2. 26 包含 11 个模块, 如表 1 所示. 其中, 必选模块缺一不 可, 否则 N S2 不能正常工作, 而可 收稿日期: 2003-10-07 基金项目: 国家自然科学基金项目( 60373053) 资助; 中国科学院与英国皇家学会 联合项目( 20030389, 20032006) 资 助; 中国科学院百人计划项目( BCK 35873) 资助; 教育 部留学回国人员科研启动基金资助项目( 教外司留[ 2003] 406 号) . 作者简介: 王晓曦, 硕 士研究生, 主要研究领域为计算机网络和实时系统; 王秀利, 硕士, 主要研究领域为计算机网络、 入式实时系统; 周津慧, 副研究员, 主要研究领 嵌 域为智能软件工程, 软件 过程技术与质量保证; 王永吉, 研究员, 博士生导师, 主要研究领域为实时系统、 网络优化、 智能软件工 程、 优化理论、 机 器人、 控制理论. { xiaoxi , w xl, jinh ui, yw ang} @ it echs. is cas. ac. cn1010 小 型 微 型 计 算 机 系 统 2004 年选模块能够增 强 NS 2 的 功能. T cl 与 T k 是安 装在 U nix / L inux 环境下的两个包, 它们一起构成了一套开 发系统应用程序 表 1 N S2 模块组成 T able 1 M odule components of N S 2模块 1 2 3 4 5 6 7 8 9 10 11 T c1 Tk O Tc1 T clc1 Ns N am Xg raph G t - tm i Sgh Cw eb Zl ib 版本号 Tc1 releas e 8. 3. 2 Tk releas e 8. 3. 2 rel ease 1. 0a8 Tclc1 release 1. 0b13 N s rel ease 1. 9 N am releas e 1. 9 Xgraph release 12. 1 Georgia Tech In ternet work Topol ogy M odels St an dford G raphBas e CWeb Zl ib r eleas e 1. 1. 4 必选/ 可选 必选 必选 必选 必选 必选 可选 可选 可选 可选 可选 可选SunO S 、 indo w s 等平台 上. 为 了运行 N S 2, 还 要求系 统装有 W C+ + 编译器. 在 W indo w s 平台上有两种安装方式: 一种是安 装 V C + + 6. 0; 一种 是安 装 Cyg Win . N S -allinone-2. 26 包含 了比较完整的工具包, 但是 只能在 Linux 平台 上运行; ・ 使用 两种语 言 C + + 和 O T cl 编 写代码, 兼顾 效率和 灵活性. C + + 程序模块的运行 速度非常快, 适合 用于实现具 体的协议. O T cl 是面向对象的 T CL 脚本程序设计 语言, 适合 用来 进行仿 真的 配置. T clcl 模 块把 出现 在两 种语 言里 的变 量、 对象胶合起来; ・ 具 有支 持多 重协 议、 网络 传输 详细 的图 表 描述 的能 力. NS 2 的 缺点是对 卫星网络提 供的支持 有限, 另 外还存在 一些 Bug, 有些方 面的功能 还有待 进一步 完善, 比如, 对卫星 网络的无线链路支持还不完善, 当开发路由算法时, 开发者需 要较大的工作量来修改各种链路接口的定义.3 NS2 的功能扩充及实现网络研究人员的任务之一是要不断研究新的网络协议和 算法, 为网络发展做前瞻性 的基础研究. 在研究新的网络协议 和算法的过程中, 仅仅进行 理论分析是不够的, 还需要对其进 行模拟验证. 由于是新的协 议和算法, 已有的模拟软件往往无 法直接提供 该协议算 法, N S 2 也不例 外. 这时, 就需 要对 N S 2 的功能进 行扩充, 需要研究 人员自己在 模拟平台 上实现新的 协议算法, 然后 才能按照需 要, 定 义网络拓扑 结构, 设定网络 特性参数, 模拟 网络行为, 观察各 种性能指标 参数, 对算法效 果进行验证. 由此可见, 能够在现有软件平台上对新的协议算 法进行扩充是极其重要的, 是模拟、 验证的基础. 3. 1 NS2 的功能扩充原理及实现 NS 2 对很多 平台都 有支 持, 如 L inux、 indo ws 等. 由于 W 在 Window s 下开发与调 试都比较方便, 现 在越来越多的用户 都 在 Window s 下 安 装 和 运 行 N S 2 软 件. 笔 者 是 在 W indow s2000 下安 装的 ns-2. 26 版本, 并 安装 了 V C + + 6. 0 和 Cy gw in 软件. 详细的安装操作过程可以参照文献 [ 11] . 在表 1 所 示的各个 模块中, N s 无疑 是最重 要的部 分. 成 功安装 后, 在 nssrc-2. 1b9a 目录 下可以 看到许 多子目 录. 它 们各自实 现了相应 的一部分功 能. 比 如 queue 目录下 的文件和图形 用户 界 面 接口 ( G U I ) 应 用程 序 的 环境; O T cl 是 M IT O bject T cl 的简称, 是 T cl 面向对 象的扩 展; T clcl 模 块 包含 T cl/ C+ + 的 接口; N s 是 N S2 的主体代 码模块, 内含 一 个节 点移 动产生 器、 两个 传输事 件产 生器; N am 即 N etw or k A nimato r, 它与 N s 协同工作, 将 N s 仿真过 程动态表现出来; Xg raph 是 X- indow s 应用程序, 完成交互式 测量和绘制、 W 动 画效果, 显示网络运 行的数值特征; Gt itm 产生模 拟 Inter net 网络结构 的拓扑图; SG B 是图形产生器; Cweb 模块是与网 页 相 关 的 工 具; Zlib 是 通 用 数 据压 缩 库 ( da ta compressio n libr ar y) .图 1 N S 模块示意图 Fig . 1 A rchitectur e of N S N S2 软件模块示意图如图 1 所示. 图中粗 框里为 N S2 的 模块, 方框外的 Scr ipt 为脚本文件. N s 解释 脚本, 将输出 写到 输出文件中, 然后调用 N am 或 X gr aph 显示输出文件. 2. 2 软件特点 N S2 的主要优点有: ・ 基于离散事件驱动的仿真方式, 仿真效率高; ・ 面向对象的建模方式, 易于对现实网络进行建模; ・ 真实网络交互; ・ N S 2 与 N A M ( N etw or k A nimato r ) 软 件结合, 能够 动 画显示仿真结果; ・ 多平台的支持. N S2 可以运行在 L inux 、 nix 、 lar is、 U So包含了路 由器的丢 包算法, 而与 T CP 有 关的协议 实现在 tcp 目录下. 此外, ns -sr c- 1 b 9a 目录下还有 一些 makefile 文件. 2. 这些文件 包含了 每次编 译、 成新的 ns. ex e 时, 需要 编译的 生 文件信息. 一般 进 行功 能扩 充 所需 要添 加 的新 协 议都 可 以 在 nssr c- 1b9a 目录下 找到实 现相应 功能的 结构部 分. 可 以在该 2. 目录下直 接添加 实现新 协议的 文件, 这样使 得 N S 的 文件结 构比较 清晰. 然后 再重 新编译 生成 ns. ex e, 使之 加进 新的文 件. 扩充的文 件, 往往可 以通过继承等方法部 分利用 N S 原来 的一些代码. 因此, 需要 使用者对原有的 N S 代码进行仔细研 究. 扩充新协议的具体步骤如下: a. 定义或继承 C+ + 协议类.6 期 王晓曦 等: N S 2 网络仿真器功能扩展方法及实现 1011b . 编写该类成员 函数和协议算法. c. 定义 T CL 相关的类和变量. d. 把 C+ + 代码绑定到 T CL . e. 修改 makefile 文件, 重新编译 生成 ns. ex e 文件. 如 果 所 用操 作系 统是 L inux , 需 要修 改 makefile. in 文 件; 如果 在 Windo ws 操作 系统下, 需要对 makefile. vc 进行相应的改动. 3. 2 改进的 PID 算法简述 在 举例说 明如 何对路 由器 的队 列管理 算法 进行 扩充 之 前, 首先对与队列管理有关的概念进行几点补充. 在路由器拥塞控制算法中有两个容 易混淆的概念: “ 队列 管理” 时序管理” 队列管理算法管理路由器缓冲区中 包队 和“ . 列的长度, 即在必要或合适的时候主动丢掉一些包; 而时序管 理算法决定下次发哪个包和分配各个流 的带宽[ 6] . N S2 已 经 实 现 的 路 由 器 队 列 管 理 算 法 已 有 许 多, 如 Dr opT ail, RED, PI , REM , F Q 等, 但在现 有版本中, NS 2 并 没 有 实现 PID ( Pr opor tio nal Integr al Differentia l) 算 法. 在此 提 出一种改进的 P ID 算法, 并在现有 N S 2 平台上对其进行 扩充 实现. 本文重点讨论如何对这种改进算法进行扩充, 所扩充的 15] PI D 算法的具体原理请参考文献[ 12- . 在 PID 算 法中, 当缓 冲未 满时, 新到 达的 包将按 一定 概 率丢弃( 或标记) . 丢包概率的计算按照下式进行: p= a* ( q - qref ) - ( q - old-qr ef) + c* ( q - o ldold -qr ef) + b* p- old ( 1) 其中 q 为当前队 列长度, qr ef 为期 望队列长度, q - o ld 为 上一时刻队列长度, q- oldo ld 为上两个 时刻的队列长度, a、 、 b c 为 P ID 控制器 的参数, 由相应的网络模型和调度算法提供. 在 R ED 算 法中, 每当有包到 达时, 路由器就将 对丢包 概 率重 新计算. 而 P ID 则不 同, 它对丢 包概 率 p 的更新 并不 是 时刻 进行的. P ID 中有一 个采样 频率, 每过一 个周期, 算法 才 需要 对丢包概率 重新进行 一次计算. 与 RED 相比, 这将省 下 路由器的大量资源. 3. 3 改进的 PID 算法代码结构 下面说 明 PID 队列调度 算法的扩充 方法及实 现. 在此 仅 描述实现的步骤, 并列举部分关键代码. 为实现新的 P ID 算法, 需要建立一个新的 PIDQ ueue 类. 由式( 1) 可以看出, 在 PID Queue 的结 构中应该有一组变 量来 记录 相关参数的 初始值, 如 a、 c 及采 样频率 等. 此 外, 还 需 b、 另有一组参数记录 PIDQ ueue 的一些 历史状态以计算新 的丢 包率, 如上一 时刻队列 长度及丢包 率等. 为此, 我 们提供两 个 结 构: edp 和 edv. Edp( Early dr op paramet ers) 来记 录初始 参 数 情况, 这 些 参数 的数 值 由用 户提 供, 在 程 序中 不 再 更改. Edv ( Early dr op var iables) 来记录 队列的历史状态 信息, 这 些 变 量值在 程序 运行中 根据 队列状 态动 态更 改, 由 P IDQ ueue 自己维护. edp 具体结构如下:st ruct edp { / * U ser s upplied. * / int mean- pkt size; / * avg pkt size, linked int o T cl * / int bytes; / * t rue if queue in bytes, fals e if pack et s * / }; };int s et bit ; / * tr ue t o s et conges t ion in dicat ion bit * / dou ble a, b , c; / * paramet ers t o pid cont roll er * / dou ble w ; int qref; / * sampling f requency ( t imes / s econ d) * / / * desired qu eue s ize * /其中, mean - pkt size 为 平均包 大小; bytes 和 set bit 为两 个标志, byt es 通过 0、 设置指出队列长度是通过缓存中包的 1 个数来 计算还 是通 过字 节来计 算, setbit 指 出当 检测 到拥塞 时是否采用标记位的办法 [ 16] ; a、 c 为 P ID 控 制器中的参数; b、 w 为采样频率; qref 为期望队列长度. edv 具体结构如下:st ruct edv { / * maint ained by PID . * / TracedDoub le v - prob; / * prob . of packet drop bef ore "count ". * / int cou nt ; int cou nt - byt es; int qold, qoldold ; / * # of packet s since last drop * / / * # of byt es s ince l as t drop * /其中, v- pro b 为丢 包概率, count 和 count - bytes 分别为 目前丢包的个 数和丢包字节数, q- old 为上 一时刻队列 长度, q- oldo ld 为上两时刻 队列长度. 由于 P ID 算 法需要每隔一 段时间对丢 包概率更新 一次. 为 了 保 证 这 个 过 程 能 周 期 性 进 行, 需 要 建 立 一 个 P IDCalcT im er 类, 它是 T imerHandler 的子类. PIDQ ueue 类无疑 是最 重要的 类, 它将 完成 PID 的 算法 调度. 以上 结构是对 其建立 的必要 支持. 在 PIDQ ueue 类中, 最主要成员变 量包括: P IDCalcT imer CalcT imer 、edp edp - 、 edv edv - 、 curq( 当前队列长度) 、 acketQ ueue q- . int P PIDQ ueue 类中最主要的方法包括: ・ PID Queue: : PID Queue( co nst char * trace) ; PIDQ ueue 的构造函数, 主要负责将一些 C + + 变量绑定 到 T CL 变 量. 如将 edp - . a 绑定 到 a- , 将 edp - . qref 绑 定到 qr ef - 等. 然后调用 r eset ( ) 对相应变量进行初始化. ・ vo id r eset ( ) ; reset 需要对队列中的变量进行初始化. 这包括edv - . count = 0; edv - . count - b ytes = 0; edv - . v - prob = 0; edv - . qol d = 0; edv - . qol dold = 0; curq- = 0; cal cul at e - p( ) ;最后还需 要调用 calculate- p( ) . 在这里 是第一次 调用该 方法, 对丢包率进行了初始 计算, 此后对丢包率的更新计算周 期进行. ・ vo id enque ( Packet * pkt ) ; 当包 到达路 由器 时调 用此方 法. 它首 先更 新 curq, 如果 缓冲区已满, 则只 有丢包; 如 果未满, 调 用 dr op - early ( ) 方法, 按一定概率丢掉或标记最近到达的包. 如果不丢包, 把新到达1012 的包加入缓冲区中.小 型 微 型 计 算 机 系 统Q ueue / PID set qref - 150 Q ueue/ PID set mean - pkt s ize- 500 Q ueue / PID set set bit - f al se Q ueue/ PID set prob- 0 Q ueue/ PID set cu rq- 0 2004 年・ int dro p - ear ly ( P acket * pkt , int qlen) ; dro p- ear ly 方法在 缓冲未满 时决定 是否提 前丢包. 它 首 先产生一个随机数, 然后比较随机数和丢包率, 当 随机数大于 丢包率时丢包, 返回 1, 否则返回 0. ・ Packet * deque( ) ; 当路由器中有包被发送时调用此方 法. 返回出队列的包, 并对 curq 进行更新. ・ double calculate- p( ) ; calculate- p 根据采 样频率, 每隔一段 时间周期 就执行 一 次, 然后按照式( 1) 对丢包概率重新进行计算. 程序中, 首先得到当前队列长度: > > int qlen = qib - ? q- - byt eLeng th ( ) : q - - leng th ( ) ; 然后对丢包概率进行更新:doubl e p; if ( qib- ) { p = edv - . v - prob + ed p- . a * ( ql en * 1. 0/ edp - . mean- pkt si ze -edp- . qr ef ) + edp- . b* ( edv - . qold * 1. 0/ edp- . m ean- p kt size - edp- . qref ) + edp- . c* ( edv - . qol dold* 1. 0/ edp - . mean- pkt si ze -edp- . qr ef ) ; } el se { p = edv - . v - prob + ed p- . a * ( ql en - edp- . qref ) + edp- . b * ( edv - . qold - edp- . qref ) + edp- . c * ( edv - . qol dol d -edp- . qref ) ; }这些语句对 P ID 算法中的 一些变量值 进行了默认 设置, 包括: 队列长度使用包进行 计算而不是使用字节, 采样频率为 160Hz, 期望队列长度为 150 个包, 平均包大小为 500 字节, 检 测到拥塞时直 接丢包而不是采用标 记位的办法 [ 16] , 设置初始 的丢包率和队列长度为 0. 3. 5 重新编译得到新的 ns. exe 最后 打开 ns- c- 1b9a 目录 下的 makefile. vc 文件, 在 sr 2. 其输出文件列表中加入新协议的输出文件 queue / pid. o . 然后 在 ns - 1 b 9a 根 目录下 执行 nmake makefile. vc, 此命 令将对 2. 新添 加 的协 议文 件 进行 编译. 之后, 新 的协 议 被加 入 到 N S 中, 模拟软件的功能得以扩 充.4 对比仿真实验为了对新 协议的性 能进行分析, 我们 采用如图 2 所示的 网络拓扑结构 对新扩充的 P ID 算法进行仿 真实验, 并将其与 RED 和 PI 算法进行比较.其中 qib- 标 志队 列长度 是用 包的个 数来 表示还 是用 字 节数来表 示. 当 qib - 为 1 时, 表示用字节 数来表示 队列长度. edv - 结构记录了一 组状态变量. 其中 edv- . v- pro b 为上一 时 刻 的 丢 包 概 率 , edv- . qo ld 为 上 一 时 刻 队 列 长 度, edv - . qo ldold 为 上两 时刻队 列长 度. 而 edp- 结 构记 录了一 组初 始 的 参数. 其 中 edp - . mean - pktsize 为平 均 包大 小, edp - . qr ef 为期望队列长度, edp - . a、 - . b 、 - . c 为算法和模型 提供 edp edp 的参数. 上面 的代码和前 面关于丢 包概率的计 算讨论是一 致 的. 随后添加以下代码, 以对状态变量进行更新:edv - . v - prob = p; edv - . qoldold = edv - . qold ; edv - . qold = qlen;图 2 仿真网络拓扑结构 F ig . 2 Simulat ion netw or k topolo gy 瓶颈链路 位于节点 A 和 节点 B 之 间, 链路容量 15M bps ( 3750packets / s , 分组 缺省大 小为 500bytes ) , 延时 5ms . 取图 中的 n 为 60, 所有的 60 个业务源均为持久性的 F T P 业务源. 它们与节点 A 之间的链路容量均 为 10 M bps , 延时 5 ms , 且均 在 0 时刻 启动. 除 节点 A 的 队列 分 别由 RED、 I、 D 控制 P PI 外, 其 余 队 列 均 为 Dr opT ail . R ED 的 高 低 门 限 值 分 别 为 100packet s 和 200packets, PI 和 P ID 的队列长 度的期 望值为 150packet s . 节点的缓 存大小均为 300 packets , 接收端窗口大18] 小采用默认值 20packets [ 17、 . RED 算法中, 采 用自适应的 方法 [ 19] , q - w eig ht 经过计算最 后再 将 新得 到的 丢 包 概率 作 为返 回 值返 回 前, 调 用 CalcT imer . r esched ( 1. 0/ edp - . w ) ; 使得此方法在下一个周期能够再被 自动调用. 3. 4 对 TCL 变量初始化 最 后应该 在 ns- c- 1b9a/ tcl/ lib 目录 下的 nssr 2. default. tcl 文件里, 对 PID 算法中的一些 T CL 变量 设置默认值. 进行 的设置如下:Q ueue/ PID set byt es- fals e Q ueue/ PID set queue - in- byt es - f al se Q ueue/ PID set w - 160为 0. 00027. 而 PI 中, 采 样频 率为 160Hz, a、 分 别 为 1. 822 b - 5 - 5 ( 10) , 1. 816( 10) . 在 P ID 中, 采样频率 为 160Hz , a、 、 分 b c 别 为 1. 596894( 10) - 3 , - 162576 ( 10) - 3 , 1. 565766 ( 10) - 3 . 3. 中 a 、 、 三 个参数 的计算理 论不在 本文的 讨论范 围内, PID b c 有兴趣的读者可以参考文献[ 12-15] .6 期 王晓曦 等: N S 2 网络仿真器功能扩展方法及实现 1013 当 B 到 C 的时 延为 30ms 时 , RED 、 I、 ID 的仿真结 果 P P 如图 3 所示. 图中, 横坐标为时间, 单位为秒, 纵坐标为队列长PI 仍存 在着需 要较长时 间才能 使队列 长度趋 于期望 值的问 题. 相比之下, PID 体现了较好的性能. 表 2 给出了 在 B 到 C 的时延分 别为 30ms 和 70 ms 的不 同情况下, RED 、 和 PID 三 种算法 的链路利 用率和 平均队 PI 列长度.图 3 R ED、 I、 ID 队列长度( d= 30ms) P P F ig . 3 Queue leng th plo ts of RED 、 and PI D ( d= 30ms) PI 度, 单 位为 包的 个数. 从 结果 可以 看出, 当 延时 为 30ms 时, R ED 和 P ID 的队列长度很快稳定到期望 长度, 而 P I 则需 要较长时间才能使队列长度趋于期望值 . 表 2 不同时延下三种算法性能比较 T able 2 P erfo rmance compar ison of t hr ee algo rithms o ver different r ound- ip times trA Q M 算法 RED PI PID d= 30ms d= 70ms d= 30ms d= 70ms d= 30ms d= 70ms 链路利用率 97. 682% 96. 978% 97. 714% 96. 811% 98. 434% 97. 485% 平均队列长度 144. 40 110. 75 202. 57 174. 46 158. 20 137. 62图 4 RED 、 、 ID 队列长度( d= 70ms) PI P . 4 Q ueue lengt h plots o f RED、 and PID ( d = 70m s ) Fig PI 从仿真结 果来看, 在无论 在节点 B 到 C 延时 为 30ms 还 是 70ms 的情况下, 新的 P ID 算 法均体现了良好的 性能. 不仅 链路利用率更好, 而且平均 队列长度更趋于期望值, 队列长度 的抖动也较小. 整体表现优 于 RED 和 P I 算法.5 结 论本文对 N S 2 开放源代码软 件的结构特性进行 了介绍, 并 以 PID 拥塞控制算法为例, 就如何对 N S2 扩展新的算法功能 进行 了详 细描 述. 最 后对 新扩 展 的 P ID 算 法进 行 了仿 真实 验, 并将结果与已有的 R ED 和 P I 算 法做了性能对比分析. 从 实验结果来看, 新的 P ID 算法在上述情 况下体现 了更优的性 能. 基于 反馈机制的 P ID 网络拥塞控制 是目前端 到端拥塞控 制研究 的热点 之一. 在 P ID 算法 中, 根据不 同的 模型 原理计 算得到的 k p 、 i 和 k d 三个 参数是不同 的, 根 据这三个 参数计 k当 B 到 C 的时 延为 70ms 时 , RED 、 I、 ID 的仿真结 果 P P 如图 4 所示. 从结果可以 看出, 当延时 为 70ms 时, R ED 的 队 列出现 了大幅振 荡. 队列 的大幅振 荡一方面增 加了端到端 的 时延抖动; 同时由于空队列出现的概率加大, 链路 利用率的降 低是肯定的, 这两点都违背了最初提出的 A Q M 设计目标. 而1014 小 型 微 型 计 算 机 系 统 2004 年算得到 的 a、 、 也 是不同的. 因此 P ID 算法本 身具有研究 价 b c 值. 在不同的网络条 件下, 建 立相应的 P ID 控制模 型, 并计 算 给出相 应的控制 参数, 对 其进行模 拟仿真和分 析应该是下 一 步工作的内容之一. Ref erence:1 U C N / LBL/ V IN T. N etw ork sim ulat or -N S2 [ EB/ O L ] . ht t p: / / w w w -mas h. cs . ber kel ey. edu/ ns, 1995. 2 K es hav S . REA L : a net work s imul at or [ R ] . T echnical R eport . U nivers ity of Calif ornia, Berk eley, 1988. 3 Liu Ju n, X u Chang-biao, Long Ke-ping. N et w ork s imulat ion dis cus sion based on N S [ J ] . A pplicat ions R es earch O f Comput er , 2002, 19( 9) : 54-57. 4 W ang Y u, Zhao Q ian-chu an . IP n et w ork s imul at ion bas ed on N S 2 [ J] . Comp ut er A pplicat ions and Sof tw are, 2003, 20 ( 3 ) : 28-29, 71. 5 L i Fang-min , Li R en -fa, Y e Ch eng - g. O ut put ing and analyzing qin t h e res ult s of th e net work simu lat or [ J] . Comput er Engineering , 2000, 26( 9) : 14-16, 94. 6 Braden B, Braden B, Clark D , C rowcroft J , Davie B, D eering S . Recomm endat ions on queue management and congest ion avoid ance in t he Int ern et [ S] . RFC2309, 1998. 7 Floyd S, Jacobs on, V . R an dom earl y det ect ion gat ew ays f or con gest ion avoidance[ J ] . IEEE/ A CM T ransact ions on N et w orking , 1993, 1( 4) : 397-413. 8 Hol lot C , M isra V , Tow sl ey D , et al . On design ing improved con t roll ers f or A Q M rout ers support ing T CP f low s[ J ] . IEEE Com put er S ociety , 2001: 1726-1734. 9 Sanjeew a A , St even HL. REM : act ive queue m anagement [ J ] . IEEE N et w ork, 2001, 15( 3) : 48-53. 10 Feng W , K andlur D , Saha D , Shin K . Blu e: a new cl as s of act ive qu eue management algorit hms [ R ] . Tech nical R eport , CSE-T R 387-99, U nivers it y of M ichig an. w w w . eecs . umich. edu / ~ wu chang/ bl ue, 1999.11 N et w ork S imulat or on W indow s 2000 Profess ional [ EB / O L ] . h t tp : / / cyber . cs. nt ou. edu. t w / ~as huro/ w in2k- as huro. ht m . 12 Wang Y J, Schinkel M , S chmi tt -Hart man n T , Hunt K J . PID and PID -like cont roll er design by pol e assig nmen t w it hin D -st able reg ion s[ J] . A s ian Jour nal of C on tr ol , 2002, 4( 4) : 423-432. 13 W ang Y J, S chink el M , Hun t K J . A n engi neering approach t o simu lt an eous st abiliz at ion and s t rong si mult aneous st abiliz at ion w it h D st abi lit y [ C ] . In: Proceedings of 40th IE EE Conf erence on Decis ion and Cont rol. Florida, U S A , 2001, 967-973. 14 S chink el M , W ang Y J, Hunt K J. A robus t an d perform ance or ient at ed con trol ler des ign approach for nondet erminis t ic h ybrid s yst ems [ J] . Int er nat ional Journal of Cont rol , 2002: 1368-1375. 15 Hun t K J, W ang Y J , Sch inkel M , S chmi tt -Hart man n T . Cont roll er design f or h ybrid syst ems using sim ult an eous D -st ab ilisat ion t echnique and it s appl icat ion t o ant i-l ock braking sys tems ( A BS) [ A ] . N onl inear and Hybrid Cont rol in A ut omot ive A pplicat ions [ M ] . Edit ed b y A nders R ant zer. Springer-V erlag, 2002, 97-124. 16 Floyd S. T he addit ion of ex plici t cong est ion not if icat ion ( E CN ) to IP[ EB/ O L] . RFC 3168, 2001. 17 S tevens W . T CP s low s tart , cong est ion avoid ance, f ast r et ransmit , and fast recovery[ S ] . R FC 2001, 1997. 18 A l lman M . TCP congest ion cont rol [ S ] . R FC 2581, 1999. 19 Feng W, K andlur D , Saha D , Shi n K . A s elf -con figu rat ion R ED gat ew ay [ C] . In: Pr oceedings of t he IN FO CO M ' 99. N ew Y ork: IEEE Compu ter Societ y , 1999: 1320-1328.附中文参考文献:3 刘 俊, 徐昌彪, 隆克平. 基于 N S 的网络仿真 探讨[ J] . 计算机应用 研究, 2002, 19( 9) : 54-57. 4 王 宇, 赵 千川. 用网络仿真 软件 N S2 进 行 IP 网 络的仿真[ J] . 计 算机应用与软件, 2003, 20( 3) : 28-29, 71. 5 李方 敏, 李 仁发, 叶澄 清. 网 络仿 真软 件 n s 的结 果输 出和 分析 [ J] . 计算机工程, 2000, 26( 9) : 14-16, 94.。

计算机网络ns2实验报告

计算机网络ns2实验报告

课程:计算机网络项目:实验4 ns2 实验一、实验目的安装并运行网络仿真器NS2,了解其功能模块及配套工具的使用,掌握利用NS2进行网络仿真的方法,为进一步的网络系统性能分析设计创造良好的条件。

二、实验原理NS2(Network Simulator version 2,网络仿真软件第二版)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。

最早来源于1989年哥伦比亚大学开发的Real Network Simulator项目,是一款开源免费的网络模拟软件。

由加州大学伯克利分校(UC Berkeley)开发而成。

它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。

目前NS2 可用于仿真各种不同的通信网络。

已经实现的仿真模块有:网络传输协议,如TCP 和UDP;业务源流量产生器,如FTP、Telnet、Web CBR 和VBR;路由队列管理机制,如Droptai、RED和CBQ;路由算法,如Dijkstra,以及无线网络的WLAN,Ad hoc路由,移动IP 和卫星通信网络等。

NS2也为进行局域网的仿真而实现了多播以及一些MAC子层协议。

NS2使用C++和OTcl作为开发语言。

NS2可以说是OTcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。

事件调度器用于计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。

所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器,它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。

事件调度器的另一个用处就是计时。

由于效率的原因,NS2将数据通道和控制通道的实现相分离,为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对OTcl解释器可见。

三、实验内容(1)安装ns-allinone-2.35(2)NS2仿真示例-nam方式四、实验结果与分析:建立一个OTcl脚本文件set ns [new Simulator] /建立对象$ns color 1 Blue /设定颜色$ns color 2 Redset nf [open out.nam w] /打开跟踪文件$ns namtrace-all $nfproc finish {} { /定义结束过程global ns nf$ns flush-traceclose $nfexec nam out.nam &exit 0}set ns0 [$ns node]set ns1 [$ns node]set ns2 [$ns node]set ns3 [$ns node]$ns duplex-link $ns0 $ns2 1Mb 10ms DropTail$ns duplex-link $ns1 $ns2 1Mb 10ms DropTail$ns duplex-link $ns3 $ns2 1Mb 10ms DropTail$ns duplex-link-op $ns0 $ns2 orient right-down$ns duplex-link-op $ns1 $ns2 orient right-up$ns duplex-link-op $ns2 $ns3 orient right$ns duplex-link-op $ns2 $ns3 queuePos 0.5set udp0 [new Agent/UDP] /建立代理UDP $udp0 set class_ 1$ns attach-agent $ns0 $udp0set cbr0 [new Application/Traffic/CBR]$cbr0 set packetSize_ 500$cbr0 set interval_ 0.005$cbr0 attach-agent $udp0set udp1 [new Agent/UDP]$udp1 set class_ 2$ns attach-agent $ns1 $udp1set cbr1 [new Application/Traffic/CBR]$cbr1 set packetSize_ 500$cbr1 set interval_ 0.005$cbr1 attach-agent $udp1set null0 [new Agent/Null] /建立代理NULL$ns attach-agent $ns3 $null0$ns connect $udp0 $null0$ns connect$udp1 $null0$ns at 0.5 "$cbr0 start" /传送数据$ns at 1.0 "$cbr1 start"$ns at 4.0 "$cbr1 stop"$ns at 4.5 "$cbr0 stop"$ns at 5.0 "finish" /调用结束过程$ns run /仿真结果如下:实验分析:系统从n0开始传送数据实验分析:系统从n1开始传送数据实验分析:采用FIFO机制丢包,丢弃n0发送的数据包(3)代码:set ns [new Simulator]set f0 [open out0.tr w]set f1 [open out1.tr w]set f2 [open out2.tr w]for { set i 0 } { $i<5 } {incr i} {set n$i [$ns node]}$ns duplex-link $n0 $n3 1Mb 100ms DropTail$ns duplex-link $n1 $n3 1Mb 100ms DropTail$ns duplex-link $n2 $n3 1Mb 100ms DropTail$ns duplex-link $n3 $n4 1Mb 100ms DropTailproc finish {} {global f0 f1 f2close $f0close $f1close $f2exec xgraph out0.tr out1.tr out2.tr -geometry 800x400 & exit 0}proc attach-expoo-traffic { node sink size burst idle rate } { set ns [Simulator instance]set source [new Agent/UDP]$ns attach-agent $node $sourceset traffic [new Application/Traffic/Exponential]$traffic set packetSize_ $size$traffic set burst_time_ $burst$traffic set idle_time_ $idle$traffic set rate_ $rate$traffic attach-agent $source$ns connect $source $sinkreturn $traffic}proc record {} {global sink0 sink1 sink2 f0 f1 f2set ns [Simulator instance]set time 0.5set bw0 [$sink0 set bytes_]set bw1 [$sink1 set bytes_]set bw2 [$sink2 set bytes_]set now [$ns now]puts $f0 "$now [expr $bw0/$time*8/1000000]"puts $f1 "$now [expr $bw1/$time*8/1000000]"puts $f2 "$now [expr $bw2/$time*8/1000000]"$sink0 set bytes_ 0$sink1 set bytes_ 0$sink2 set bytes_ 0$ns at [expr $now+$time] "record"}set sink0 [new Agent/LossMonitor]set sink1 [new Agent/LossMonitor]set sink2 [new Agent/LossMonitor]$ns attach-agent $n4 $sink0$ns attach-agent $n4 $sink1$ns attach-agent $n4 $sink2set source0 [attach-expoo-traffic $n0 $sink0 200 2s 1s 100k]set source1 [attach-expoo-traffic $n1 $sink1 200 2s 1s 200k]set source2 [attach-expoo-traffic $n2 $sink2 200 2s 1s 300k]$ns at 0.0 "record"$ns at 10.0 "$source0 start"$ns at 10.0 "$source1 start"$ns at 10.0 "$source2 start"$ns at 50.0 "$source0 stop"$ns at 50.0 "$source1 stop"$ns at 50.0 "$source2 stop"$ns at 60.0 "finish"$ns run结果如下:实验分析:三条数据流的峰值分别为0.1Mbit/s, 0.2Mbit/s,0.3Mbit/s五、实验总结在nam辅助分析工具中发现ftp1在零秒开始启动,ftp2在第三秒时刻开始启动,都在第十秒停止,这符合设计目标。

基于NS-2的IP网络仿真

基于NS-2的IP网络仿真

1.引言随着IP 网络的迅速发展而不断提出更多新的协议和算法,以及研究如何利用和整合现有的网络资源使网络达到最高效能,对于网络技术和网络性能的研究成了目前网络研究的热点领域。

进行网络技术研究的方法主要有理论分析、试验测试和网络仿真等,其中网络仿真以其灵活性、高效性和低费用等优点而成为网络技术研究的重要手段。

本文要介绍的是目前应用较为广泛的网络仿真软件NS-2[1](Netwo rk Sim ulator Version 2),它是在美国DARPA 的项目VINT (Virtual InterNet Testbed)支持下,由伯克利大学开发而成的源代码开放的免费软件。

NS-2有C ++和OT cl 两种语言编写而成,可以运行在装有C++编译器的通用操作系统(如Unix 、Linux 或Wind ows 等)。

它是一种易扩展、易配置、基于离散事件驱动、面向对象的网络仿真软件,既能进行现有网络元素的仿真分析,又能开发新协议、新方案以及真实网络的故障诊断。

它支持大型、多协议、多种类型数据流的网络仿真,支持多种IP 网络类型的仿真,实现了对许多网络协议(如T CP 、UDP 等)及数据源(如FT P 、WWW 、Telnet 、Web 和C BR 等)的仿真,也实现了M ulticast 和一些应用于局域网仿真的在M AC 层的协议,仿真了路由队列的缓冲管理机制,如Drop T ail,RED 和CBQ 等,实现了Dijkstra 和其它的路由算法。

NS-2中许多协议代码都和实际网络中的应用代码十分相似,能近乎真实的仿真IP 网络的多种情况和行为。

2.NS -2的结构与仿真原理2.1.NS-2构成NS-2软件是由许多模块构成的一个软件包。

包括Tcl/T k,OTcl,NS,T clCL 等五个必选模块,TclDebug,Nam,Xg raph,GT -ITM ,SGM,CWEB,Z lib 等七个可选模块。

网络仿真与NS-2简介1

网络仿真与NS-2简介1
University of California,Los Angeles Computer Science Department
GloMoSim is a library written by Parsec.
GloMoSim的层次与功能 GloMoSim
Application Layer Transport Layer Network Layer MAC Layer Radio Layer Channel Layer PROPAGATION-MODEL BANDWIDTH MAC-PROTOCOL NETWORK-PROTOCOL ROUTING-PROTOCOL TRANSPORT-PROTOCOL MOBILITY
/nsnam/index.php/Main_Page
NS-2的历史
NEST (Network Simulation Testbed) REAL (Realistic and Large) NS-1 NS-2 1989: REAL network simulator 1995: DARPA VINT project (Virtual InterNetwork Testbed) at LBL, Xerox PARC, UCB, and USC/ISI Present: DARPA SAMAN(Simulation Augmented by Measurement and Analysis for Network) project and NSF CONSER(Collaborative Simulation for Education and Research) project.
OPNET的特性(续)
混合建模机制:把基于包的分析方法和基于统计的 混合建模机制 数学建模方法结合起来,既可得到非常细节的模拟 结果,也大大提高了仿真效率。 丰富的统计量收集和分析功能:它可以直接收集常 丰富的统计量收集和分析功能 用的各个网络层次的性能统计参数,能够方便地编 制和输出仿真报告。 网管系统、流量监测系统的接口:能够方便的利用 网管系统、流量监测系统的接口 现有的拓扑和流量数据建立仿真模型,同时还可对 仿真结果进行验证。

NS2和Opnet进行仿真的一个实例

NS2和Opnet进行仿真的一个实例

3. 实例分析上一节简要介绍了5款网络仿真软件,其中比较常用的是OPNET Modeler和NS2,很多大学和科研单位大都采用这两种工具进行网络方面的研究和设计分析。

这一节将通过一个实例来展示这两种网络仿真软件的特点,并对这两种软件进行比较分析。

在这个实例中,我们采用网络的拓扑结构如图1所示,图中有5个节点,其中0、1、2号节点是发送节点,4号节点是接收节点。

下面是使用OPNET Modeler和NS2两种软件的仿真过程。

图1:仿真网络的拓扑结构3.1 使用NS2进行网络仿真在本节中,笔者将使用NS2对图1中的网络进行仿真。

使用NS2进行网络仿真的第一步是编写OTCL脚本。

在OTCL脚本文件(example_ns2.tcl)中,笔者首先定义了5个节点和连接这5个节点的4条边:#定义5个节点set n0 [$ns node]set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set n4 [$ns node]#定义4条边$ns duplex-link $n0 $n3 1Mb 100ms DropTail$ns duplex-link $n1 $n3 1Mb 100ms DropTail$ns duplex-link $n2 $n3 1Mb 100ms DropTail$ns duplex-link $n3 $n4 1Mb 100ms DropTail要把节点n0、n1、n2定义为发送节点,即将Traffic Source(发送源)与节点n0、n1、n2相连,我们可以先定义下面的函数:proc attach-expoo-traffic { node sink size burst idle rate } {#获得模拟器实例set ns [Simulator instance]#建立连接节点的UDP对象set source [new Agent/UDP]$ns attach-agent $node $source#建立traffic源的对象并设置traffic参数set traffic [new Application/Traffic/Exponential]$traffic set packetSize_ $size$traffic set burst_time_ $burst$traffic set idle_time_ $idle$traffic set rate_ $rate$traffic attach-agent $source#建立发送者与接收者的关系$ns connect $source $sinkreturn $traffic}上面的函数返回发送源的句柄,因此,我们可以使用下面的语句将3个发送源与n0、n1、n2相连:set source0 [attach-expoo-traffic $n0 $sink0 200 2s 1s 100k]set source1 [attach-expoo-traffic $n1 $sink1 200 2s 1s 200k]set source2 [attach-expoo-traffic $n2 $sink2 200 2s 1s 300k]由上面的代码我们可以看出,每个数据发送源的峰值发送速率分别为100kbit/s、200kbit/s和300kbit/s。

基于NS2的网络仿真

基于NS2的网络仿真

基于NS2的网络仿真郭树民,裴庆祺,曾兴雯西安电子科技大学通信工程学院,西安(710071)E-mail:gsm1011@摘要:近几年来,网络结构的的复杂化和应用的多样化,为网络系统的分析和设计提出了新的挑战,NS2作为一种通用的网络仿真工具,很好地满足了这种需求。

本文主要介绍了NS2以及其在网络仿真方面的应用,包括NS2的特点、应用领域、用NS2进行仿真的步骤,最后给出了一个用NS2进行仿真的实例。

介绍了如何结合GNU的make工具有效地利用NS2进行网络仿真。

关键词:网络仿真;NS2;Makefile1.网络仿真简介近几年来,随着网络结构和规模的复杂化以及网络的应用的多样化,单纯依靠经验进行网络的规划规划和设计、网络设备的研发以及网络协议的开发已经不能适应网络的发展;网络仿真很好地满足了这种需求。

所谓网络仿真就是将物理世界中的网络通过计算机来模拟实现。

这种模拟是通过数学方法或者动态蒙特卡罗方法来模拟现实中的网络行为,从而可以有效地提高网络规划和设计的可靠性和准确性,降低网络投资的风险,减少不必要的投资。

网络仿真工具是为了进行仿真而开发的专用计算机软件。

从仿真的范围来看我们可以将其分为专用仿真工具(Specialized Network Simulator)和通用仿真工具(Generalized network simulator)。

专用网络仿真工具是为了仿真某个特定的网络环境和网络协议而设计的,例如SensorSim[13],SENSE[14]等都是为了仿真传感器网络而设计的专用网络仿真工具。

通用网络仿真工具是在一个整体设计架构的基础上集成了很多网络模块(module),并且用户可以根据需要来添加新的模块或者修改现有的模块,从而可以实现各种网络协议的仿真。

目前,比较流行的通用仿真工具主要有NS2[3]和OPNET[4]、J-Sim[12]等。

NS2是一种开源的网络仿真工具,它是由美国的VINT工程[16]开发的通用网络仿真平台;其可扩展特性和开源特性赋予了其强大的生命力;世界各地的科研人员都可以向NS2贡献源代码,使得其可以支持现有的除蜂窝网络出外的几乎所有的网络场景和网络协议[3]。

基于NS2软件 的网络协议仿真

基于NS2软件 的网络协议仿真

基于网络模拟软件NS2的网络协议仿真【摘要】:网络模拟是网络协议性能及研究中非常重要的一个组成部分。

本文介绍了网络模拟软件 NS2 的结构和特点以及仿真过程,并实例介绍了基于NS2的网络协议仿真。

【关键词】:NS2;TCP;UDP;路由;仿真一、引言网络模拟是网络协议性能及研究中非常重要的一个组成部分,算法是否合理、是否具有实用价值、是否能够提高网络的性能等都需要通过实验证明。

由于在真实的网络环境中进行实践验证耗资巨大,多数高校和科研机构并不具备完整有效的实验环境,而且真实网络中实验数据的收集和分析也有一定困难。

网络仿真软件通过在计算机上建立一个虚拟的网络环境来实现对真实网络环境的模拟,科研人员在这个平台上不仅能对网络的通信、设备、协议、结构以及应用进行研究,还能对网络的性能进行分析和评估。

仿真软件大大提高了网络设计开发的效率,同时也降低了费用和风险,已经成为研究中不可或缺的工具。

二、NS2 的结构和特点目前,使用较多的网络仿真软件有OPNET,Matlab,NS2 和GloMoSim 等。

选择免费且开放源代码的NS2作为仿真平台,是因为该平台是一种离散事件网络仿真平台,可以运行在Linux或Windows操作系统上。

作为一种可扩展、易配置、可编程的事件驱动的网络仿真软件,NS2能够近乎真实地在各个层次上模拟网络运行,并支持多种协议。

其主要功能包括以下几点。

一)灵活的仿真环境作为一款开源软件,NS2所有源代码公开,任何人都可以获得、使用和修改其源代码。

这对于利用NS2来构建特殊的网络仿真实验环境非常方便和迅速。

二)结果分析及再现容易研究人员通过配置环境参数获得理想的网络环境,即可实时跟踪并记录关键节点的重要信息,从而获得网络性能参数,并可以随时再现某些特殊情况,这在真实网中是难以做到的。

三)良好的可扩展性NS2使用C++和OTCL两种程序设计语言,分别完成具体协议的模拟,实现与网络仿真环境的配置和建立。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

nef帅矗湎ul枷∞缸扣—一Ne附础洲栅2.wilh蚰嘣跗叫e 0fT凹,we
NAM
or
XG枷,and desi咖工Ig“ew
nefw吐P‘m曲intlle
1【I卵呻r凼
C十+hd.
NAM
NS2Ⅱ工,n(T℃P
由c++编写,同时利用麻省理工学院的面向对象的仿真时的命令和配置的接口语言。到目前为止, Ns已推出很多个版本,最新的版本是2.1硝~”。 网络仿真的全过程由一段awL的脚本来描述,并披Ns解 释器所解释。这段脚本通过调用引擎中各类的属性、方法从而 定义周络的拓扑。配置业务源、目的端,建立连接,产生所有事 件的时刻表,运行并跟踪仿真结果。甚至可以对结果进行相应 的统计处理或制图。 所以.Ns仿真环境中主要有两种分工不同的开发语言。 它用c++语言来描述网络协议中的细节,同时用dTcL语言来 配置仿真活动中的各种参数,建立仿真的整体框架。因为c++ 的特点是具有更快的运行速度,但每次改变均需要编译较为复 杂,比较适合处理繁琐但比较固定的工作;而01℃L虽然在运行 速度上无法和c++比拟,但相对来说更加灵活,适合用来设计 个人的仿真方案。当然,在Ns中,C++和01.cL之间可以自由
¥m∞㈣一all‰
oLlt.nⅢ&
“∞m1
3.2在Ns中运用xI强L懈l【ll和AwK脚本
NAM只是生成了一个对仿真过程的宏观描述,当我们要对 网络的微观特征进行跟踪记录并生成评价时,就需要采用其它
的方法。,
传统的R∞o一亿P协议中,每成功地传输一个窗口数量的
数据时,拥塞窗口值总是增加1;如果遇到一定数量的重复序列 号的确认时,视为数据丢失,窗口值会变为原来的l/2,同时拥 塞避免的域值也变为原来的1/2。如果要求在数据丢失时,拥 塞窗口不是在原有的基础上成比例的减少,而是赢接下降到一
节茼之间的连接关系,可以运用du妇一hnk的方珐来建立双
向的连接。代理是仿真过程的重要对象,对于末端主机来说它 是必须的。通信业务源和接收端、动态路由模块、以及很多其 它协议的模块都是代理中的实例。
tiIIle=¥1; cwind=¥7; 叫n“”%f%f、矿,dme.曲血d)
3图形界面和相关技巧
在设计网络拓扑和定义规则之后,Ns会在运行仿真时生 成一个整体事件的时闯列表,并根据它执行每一个事件。 这还是远远不够的。因为:第一,如果不能有一个可观测 的用户界面,我们根本无法调试程序从而保证仿真的正确性。 第二,如果投有对局部网络数据进行跟踪并形成评价,我们也 无法从仿真的过程中得到任何结果。
5总结
本文的目的是希望用最浅显的语言描述网络仿真软件
添加新协议类Ⅱ聊n矾pA萨llt的定义,并在代PA辨m类中添
加两个宙口和域值的控制参量d0∞c'm如一和
撑幽正Ile coLSE—CWND一1D慨00000400
——Nat帅矗血mlla虹2的使用方法。Ns的功能十分强大,由于
是共享软件,几乎每天都有新的基于Ns的协议集发布。尤其 对于酽网络,无线网络的仿真课题来说,NS的首选地位在短期 内不会动摇。
(上接第29页)
作相应的修改。 修改的具体方法如下:
值,并把c‰wr山一和do鸵髂t}吣hlo一设定为当前窗口值的 1/2,这就和僻R衄。完全等效;如果对网络的情况能够有一个
较准确的预测。也可以动态的指定一个相对合适的新窗口值,
lb8a的跟目
1.假设新建的T凹协议为Ⅱ聊唧。在ns2
类似,但需蘑增加窗口和域值下降的语句:
8m
3建立ⅦP流。 4在uDP上建立Par咖分布的应用层业务的代理。 5.建立1卯连接。
6.在1℃P上建立r秤业务的代理。 用N皖建立网络是通过调用三个现有的原始功能块:节 点、链路和代理来实现的。Ns通过调用node类来创建节点并 且自动的为每一个节点分配唯一的地址。对于网络拓扑结构
sekckwird{
H州代P
NAM
口p砸-I、^DRK
sIMI】IA删BASED
Yu丑m Qi锄chuan
0N Ns2
(Ⅱ弘砌Ⅲ矿缸加妇西m廿帕蜘hy,丑曲写J删)
A聃n埘 kt场8 p印盯,他gi僧a姗in删ud叩da细玎0lls 目pI血此m吼hodBd俪t如K价K,NwK
Wang
cod鸭讯the出幽p‰r【n辩mdIIg脚№骷血by
用网络仿真软件NS2进行口网络的仿真


赵千川
(清华大学自动化系北京100∞4)
摘要
N盟的仿真环境中编写1℃Ⅷ脚奉,AwK脚本和使用NAhI和xcRAP}I显示图形结果的方法,咀及在c++代码层改动和添加所设
{十的网结协议的方法。 关键词
Ns2
本文主要涉及网络仿真软件——N曲帅Il【sim山lor 2的安装和使用。并结合一个TcP改进算法的例子,详细介绍了在
的相互的调用,这是通过~种嚣为础L工具包实现的。
2利用.I℃L语言141设计简单的仿真试验
圈2.1是采用N虫进行简单的网络仿真的例子。这里,我 们采用“nI】x平台上的当前最新版本N显.188A,操作系统是
Red Hat“mH 7.O。
其中,节点1到节点3是一个&m一1珊州的连接,其应用
NS的原理和结构
3.1 pi^jI“o
曲。ec
awk¥sdectcwird
nace.Ⅱ>dmwcwIld.廿
∞ecl鲫b由wcwIldⅡ一伊m唧80∞棚

4在C++代码层修改或创建新的网络协议集
在上面,我们其实已经实现了一次完整的网络仿真。只不 过这次仿真是构造了一个特定的网络环境,并对原有协议集 (鼬呻一TcP,兀P等)进行检验和分析,并没有引人新的协议。 而有时,一种网络算法的引入是在协议比较细节的地方,利用 了协议集中十分特殊的字段。因此,这种改动是单单的1℃L脚 本所无能为力的,必须触及协议定义的c++代码层的改动。 c++代码层的改动方法,大致可以分为以下几步: 1.定义或继承c++协议类。 2.编写该类成员函数和协议算法。 3定义1℃L相关的类和变量。 4.把c++代码绑定到1℃L。 5.编译。 在上面例子的基础上,我们来讨论以下的问题。
在Ns中,仿真的全部宏观过程都可以通过NAM这个用户 图形界面得到。它可以显示从仿真开始到结柬过程中的拓扑 结构和各个代理的行为以及链路的状态。 在Ns中运行NAM只需在仿真开始前定义跟踪NAM所需
的数据,生成一个扩展名为r蛐的数据文件,并在仿真之后用
NAM命令词用。代码如下: sd丘lam[oI)既out.珊m w]
节点5.6之间是一段瓶颈链路,由_I℃P和UDP连接共享。 我们可以分“下几部分代码实现:
1.创建和配置节点。 2建立连接。
0.44388 0.44832
O 0
O 0
3 3
0 O
cwnd一13.000 cwnd
14.∞0
这里,我们用x(疆APH并画出TcP窗口随时间变化的曲 线。但在这之前,需要在文件曲oelⅡ提取时间和窗口值这两 个字段,因为这是软件包xGRAPH的格式需要。通常流行的方 法是用Ns软件包中另一个配套工具包AwKo AⅣK也是一种脚本语言,非常类似c。下面的AwK代码 就是实现上述的功能,最后,用xcRAPH画出曲线:
sm
?4啪…uDP^∞nB

cwndh删e[open
trace.k
wJ
¥tcplⅡace cwrd一 ¥位pl甜ach¥cwrIdllanme 下面这个文件的部分内容,其中第一列是时间,第六列是 拥塞窗口值。
6Ⅻ一cK惝‘
囝2

层上运行的是兀P的服务。2号节点群到节点4分别是】2个
LrDP的连接,其上的业务是P舭㈣分布的0N加FF模型…J。
函数也只能用于输出图形.不能用于输出仿真模型图。还有一
在输出图形时,还应平衡好分辨率和文件大小的关系。不 能一味追求输出图形的高品质,而忽略了提高分辨率所导致的 存储空间增大。 由此.用户可根据输出图形的要求和用途,选择合适的输 出图形的方法,定义输出图形的格式,从而将MATLAB图形和 仿真模型图高质、准确、方便的输出,满足用户的不同需求。
sl洲down(CL06E—sSnmEsH一珊lC0lsE—cwND—TD);
2在1cP h中增加两个新=进制参量,作为判断新协议窗
这体现在衄流和背景uDP流的吞吐量的同时提高。在这里,
我们就不作细节介绍了。
口下降方式的侬据,传递给窗口下降函数sldwda帅()。
0删800
#凼mm
CLOSE—ss珏吼嘲一1U
从而减少拥塞程度,增加网络的利用率。例如,在仿真中,我们 曾用一个鞍长尺度的拥塞窗口的均值对窗口下降后的值作修 正,因为背景流具有一定的白相似特性,在长时问尺度下有一 定的可预测性”J,新算法在一定程度上提高了网络的利用率,
录中建立一个新的协议文件ⅡHqEW cc,内容和Ⅱ唧hm∞
亿n肼一acdⅢl:
前列。
然而,Ns的复杂性一直以来成为它广泛应用的最大障碍。
J.Marlc
PLlll衄【“对这一类仿真软件的评价是:对用户的编程能
力,实际网络胁议的理解能力要求较高,初学者可能需要儿个 月的时间才能基本掌握。而且,国际上针对它的完整的使用手 册o’目前只有一个英文版本。 本文力求通过最简单易懂的语言介绍NS仿真平台的原理 和使用方法。希望读者能在最短的时间内掌握它。 本文第一部分介绍Ns的原理和结构:第二部分介绍如何 利用1℃L语言设计简单的仿真试验;第三部分分析Ns的图形 界面和相关技巧;第四部分结台例子介绍如何在Ns的c++代 码层修改或创建新的网络协议集;最后一部分是总结。 l
HIr“著.D币omrIgn目Ⅱ氆衍PuMi衄t10|l(2),姒Ⅱ彻Dioes【,[j/
[3]Ben
点应注意:用耐nl命令输出‰111link的仿真模型图时,输出格
式只能定义为e田,其他格式均不支持用叫m命令输出模型图。
相关文档
最新文档