当前位置:文档之家› 用网络仿真软件NS2进行IP网络的仿真

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


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命令输出模型图。
相关主题