自组网路由协议仿真平台说明文档 - 图文 联系客服

发布时间 : 星期四 文章自组网路由协议仿真平台说明文档 - 图文更新完毕开始阅读4a84e4fe192e45361166f585

Agent。

(3)加载应用数据流由Application/Traffic来实现。RTP Agent本身己实现了产生数据流的工作,无须加载Application。 1.2 NS2的安装

在Linux操作系统中安装NS2-2.35的步骤如下:

1、安装必需的软件包,在Linux终端直接输入以下命令: $ sudo apt-get install build-essential

$ sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev $ sduo apt-get install libxmu-dev libxmu-headers

2、将安装包ns-allinone-2.35.tar.gz解压缩,此处解压缩到主文件下新建的ns文件夹下,步骤为: 切换到此目录下:$ cd ns

解压:$ tar -vxzf ns-allinone-2.35.tar.gz 进入解压的文件夹,开始安装: $ cd ns-allinone-2.35 $ ./install

获取安装包的网址:

http://sourceforge.net/projects/nsnam/files/latest/download?source=files 3、配置环境变量。 打开环境变量配置文件: $sudo gedit /home/jenny/.bashrc

其中,jenny为linux操作系统的用户名,视用户而异。 在末尾输入:

export PATH=$PATH:/home/jenny/ns/ns-allinone-2.35/bin:/home/jenny/ns/ns- allinone-2.35/tcl8.5.10/unix:/home/jenny/ns/ns-allinone-2.35/tk8.5.10/unix export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/jenny/ns/ns-allinone- 2.35/otcl-1.14:/home/jenny/ns/ns-allinone-2.35/lib

export TCL_LIBRARY=$TCL_LIBRARY/home/jenny/ns/ns-allinone-2.35/library 4、安装完成,测试

2

在root权限下在终端输入ns,出现%,表示安装成功。测试步骤为: $sudo su $ns 或

$ cd ns-2.35 (ns-2.35在ns-allinone-2.35目录下)

$ ./validate 1.3 NS网络仿真

NS 仿真时需要 C++编译器和通用的操作系统 (如各种 UNIX, Linux 或

Windows 系列)。进行仿真前,首先要分析涉及仿真的哪一个层次。NS 仿真分两个层次:一个是基于 OTcl 编程的配置、构造层次,利用 NS 已有的网络仿真元素实现仿真,无需对 NS 本身进行任何修改,只要编写 OTcl 仿真脚本,如图中流程 2-4-6;另一个层次是基于 C++和 OTcl 编程的编译、配置层次,如果 NS 中没有所需的仿真元素,NS 提供了用户自我升级或修改协议的技术,分析要建立的新元素特征,利用 NS 的面向对象特性来构造新的NS。如果新方案和现有 NS 元素差别较大,就需要编写新的 C++程序;如果无需进行较大改动,也可以在NS现有相关元素的C++代码中进行修改来达到目的,例如在某个存在的元素中修改某个算法或增加实现某个功能的函数等。然后利用 OTcl 和 NS 的接口类实现 NS 的更新,新 NS 生成流程如图中 1-3-5,然后再进行 2-4-6 流程完成仿真。NS 的仿真工作机制如图 1所示。

仿真运行后,NS会生成跟踪(Trace)文件,文件格式为.tr以及动画演示(Nam)文件,文件格式为.nam。Trace文件记录了仿真过程中数据包在各层的状态,Nam文件用于动态展示仿真过程。Awk文件用于分析Trace文件,从而获取各种网络性能指标。Gnuplot是制图工具,用于对分析结果进行绘图,便于观察与比较。下面对仿真的过程、工具及文件内容进行简要介绍。

3

NS用户无1协议细节实现3生成新NS5有无仿真元素有2编写OTCL脚本4运行NS仿真6生成跟踪文件文件(.tr)生成动画演示文件(.nam)编写awk文件进行分析Nam:动态观察仿真过程生成分析结果文件gnuplot:静态观察分析仿真曲线

图 1NS的仿真工作机制

1.3.1OTcl 实现仿真的过程

OTcl脚本的文件格式为.tcl,在此脚本中需要实现的功能如下:

1. 创立仿真器并配置或构造仿真网络拓扑(包括链路和节点)。仿真之前首先要构造一个基本的网络拓扑平台。此时,可以确定链路的基本特性,如延迟、带宽和丢失策略等。

2. 建立协议代理,包括端设备的协议绑定和通信量模型的建立。

3. 给节点进行特性化配置。根据仿真具体要求对节点进行代理、路由协议等的初始化。

4. 编写必要的 OTcl 过程或构造可能需要的 OTcl 类。

5. 进行仿真结果的追踪。NS 通过建立追踪文件来保存仿真期间网络性能的参数变化。

4

6. 在建立了上述代码后,设定通信量应用和时间相关过程的发送/结束时间,然后运行仿真。

1.3.2 添加新的网络元素

如果NS中没有实现仿真所必需的网络元素,则需要修改NS底层的C++程

序,重新编译加入网络元素。这个网络元素可以是一种新的协议 ,也可以试对某种算法的改进。若是添加新的协议,可以将新协议以补丁包的形式移植到NS中。如果仿真只要求对现有的协议进行简单修改即可完成,无需建立新的协议代理,则找到相应的待修改协议代码进行预期的修改,然后直接编译生成新的NS。然而,当建立新协议时一般需要考虑以下问题:

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

2. 定义 C++代码和 OTcl 代码之间的接口连接,即 OTcl 连接函数。至少定义接收函数 recv()和 Tcl 命令触发函数 command()以及必须的时钟类。

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

4. 在 NS 目录下运行 Make Depend 和 Make,重新编译 NS,生成新的NS。

NS 功能强大,能实现网络各层的仿真。

1.3.3 拓扑场景生成工具setdest

拓扑场景生成工具setdest用来随机生成无线网所需的节点运动场景,也即

一定数量的节点在某一固定大小的矩形区域中随机运动。生成setdest命令的源代码命名为scen_节点_速度。

使用方法如下:

Setdest –v2 –n -s -m -M -

t -p -p -x -y

其中,使用到的参数定义如下。

-v:version_of_setdest指定setdest的版本。

5