没有合适的资源?快使用搜索试试~ 我知道了~
首页网络仿真模拟 NS2无师自通 七天速学
资源详情
资源评论
资源推荐

网络仿真利器 NS-2 无师自通
Ⅰ:NS-2 简介与实验环境的安装
近年来,网络通信技术日新月异,网络技术的研究炙手可热,促进人们不断的提高研究
水平,更新研究技术,增加研究手段。目前网络通信的研究一般分为以下三种方式:(1)理
论研究,(2)网络模拟,(3)试验测试。而网络模拟是目前网络通信研究中一种重要的方法。
而 NS-2 是进行网络仿真最流行的软件之一,已广泛被科研院所和各大高校用于进行网络分
析、研究和教学。
1.简介
NS-2(Network Simulator Version 2)最早来源于 1989 年哥伦比亚大学开发的 Real Network
Simulator 项目,是一款开源免费的网络模拟软件。目前 NS-2 可用于仿真各种不同的通信
网络。已经实现的仿真模块有:网络传输协议,如 TCP 和 UDP;业务源流量产生器,如
FTP、Telnet、Web CBR 和 VBR;路由队列管理机制,如 Droptai、RED 和 CBQ;路由算法,
如 Dijkstra,以及无线网络的 WLAN,Ad hoc 路由,移动 IP 和卫星通信网络等。NS-2 也为
进行局域网的仿真而实现了多播以及一些 MAC 子层协议。
2. NS-2 试验环境的安装与配置
NS-2 需要在 linux 操作系统下运行,然而大多数人对 linux 操作系统不太熟悉,更习惯于
windows 操作系统,所以就需要把 NS-2 安装在 windows 平台下。
本实验环境的配置工具如下:Winxp+ VMware Workstation6+RedHat linux+ ns-allinone-2.30.

2.1 Winxp 下安装 VMware Workstation6
2.2 启动 VMware Workstation6
新建虚拟机,在新建的虚拟机中选择 Red linux 5,安装 linux 系统.插入系统盘,进行启
动,系统自动的会找到未分区的预留空间进行安装,按照提示进行安装.在分区的过程中,
建议划出一个 2 倍于内存的交换类型空间(swap 类型),一个 100M 的 ex3 类型的"/
home"空间,剩下的全部分给 ex3 类型的"/"根空间。分区采用自动分区,分区如下:
在安装的过程中,要选择开发的组件,默认是不安装的,刚开始不太熟悉,可以选择全
部安装。然后按照提示一步步的安装即可。
注意:在安装 linux 过程中要注意以下两点:第一,在虚拟机下安装,一定要选择自定
义模式,然后选择硬盘类型为 IDE 类型,否则无法安装成功,第二,一定要在 linux 系统的
安装过程中,要选择自定义方式,安装需要的软件,包括编辑软件。第三 ,配置 linux 环境
有三种选择,直接安装 linux 系统,windows+模拟环境 cygwin 和 windows+虚拟机+linux 下
安装。如果出于学习考虑,建议采用第三种方法,如果真正的去做实验建议采用第一种方
法。当然,我们也可以选择不安装,而使用模拟环境 cygwin 来模拟 linux 系统,如果你要
真正的学习网络模拟的话,不建议采用这中方法。
2.3 在 linux 环境下安装 NS-2
假设你已经安装好 linux 系统,下面开始 NS-2 模拟环境的安装与配置。NS-2 软件建议
选择 allinone (即 all in one).此处和以后的试验环境我们使用的是 ns-allinone-2.30。将 ns-
allinone-2.30.tar.gz 文件放在当前用户的 home 目录下,如果你是从网络上下载,一般默认
是在这个目录下,你可以检查下;如果你通过其他方式,本实验是通过 U 盘的方式,把文
件复制到该目录中。
2.3.1 安装 ns-2
如果是 root 用户的显示为“主机名#”,非 root 用户显示为“主机名$".果是 root 用户,你的
home 目录为/root,非 root 用户的 home 目录为/home/用户名。
命令说明:$cd (转到 home 目录下),$tar zxf ns-allione-2.30.tar.gz(解压软件包)$cd
ns-allinone-2.30 (进入 ns-allinone-2.30 目录下) $./install (运行安装命令)

2.3.2 设置全局路径变量
上 一 步 的 安 装 成 功 后 , 最 后 输 出 部 分 会 提 示 你 必 须 设 置 三 个 全 局 变 量
path,ld_library_path 和 tcl_library.在自己的根目录下编辑终端配置文件 .bashrc,注意要带"."开
头, .bashrc 是 bash 终端的配置文件,在 Linux 中它是隐藏文件,一般用 ls 命令看不出来,但可以
采用 vi 命令编辑该文件:
$cd
$vi .bashrc (用 linux 系统提供的 vi 编辑器来编辑 .bashrc 文件)
将光标移动到最后一行,按下 insert 键进行插入
export NS_HOME=~/ns-allinone-2.30
export PATH=$NS_HOME/tcl8.4.13/unix:$NS_HOME/tk8.4.13/unix:$NS_HOME/bin:$PATH
export LD_LIBRARY_PATH=$NS_HOME/tcl8.4.13/unix:$NS_HOME/tk8.4.13/unix:
$NS_HOME/otcl-1.12:$NS_HOME/vlib:$LD_LIBRARY_PATH
export TCL_LIBRARY=$NS_HOME/tcl8.4.13/library
在 设置 的 过 程 中 一定 要 细 心 。 export 后 有一 个 空 格 , 其他 地 方 是 以 ” :” 来 分 割
的。”~/“home 目录,你也可以不用设置这个变量都是可以的,对于具体的版本中包含软件版
本不同,可参看上面的图和下边的脚本进行相应放入更改。
编辑结束,按键盘上的退出键 esc:退出插入模式,再输入“:wq”存盘退出.
2.3.3 简单测试
打开一个新终端 输入 ns 回车,在%号后输入空格+puts+空格+"hello world",如果显示
hello world 则配置成功。否者查找原因重新配置。
如有问题请发邮件询问与技术支持:duankesong@126.com
Ⅱ: NS-2 实例编写
安装 NS-2 后,就可以运行该软件了。NS-2 有两种运行方式,第一种是“脚本方式”,假
设这里有个已编好的文件 example.tcl 文件,通过在 linux 控制端输入 ns example.tcl 就可以
运行该脚本了。第二种方法就是“命令行方式”,通过在 linux 系统下输入 ns 进入 NS-2 模拟
环境。然后输入各种指令交互的运行。

1. 编写一个 tcl 脚本
一般分为以下几个步骤:
1)创建模拟器对象,用来定义和控制模拟过程。在这个过程中,首先创建一个 simulator 对
象。
2)设置跟踪文件
3)创建网络拓扑结构。
4)配置节点属性。
5)创建拓扑结构
6)设置代理和应用层协议,并进行绑定。
7)使用模拟器对象的 at 过程设置节点事件和时间的对应关系。
8)使用模拟器对象的 run 过程开始模拟。
9)结果分析。模拟结束后,将得到保存模拟过程的 trace 文件,接下来的主要工作就是对于
这个结果文件根据需求进行数据分析,同时可以用 gnuplot 等画图工具直观的显示数据分析
结果。
2.下边是一个实例
新建一个文件,保存为 example.tcl
[Tcl Script]
# 产生一个仿真的对象
set ns [new Simulator]
#针对不同的资料流定义不同的颜色,这是要给 NAM 用的
$ns color 1 Blue
$ns color 2 Red
#开启一个 NAM trace file
set 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
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
#设定 ns2 到 n3 之间的 Queue Size 为 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 之间 queue 的变化,这是要给 NAM 用的
$ns duplex-link-op $n2 $n3 queuePos 0.5
#建立一条 TCP 的联机
set TCP [new Agent/TCP]
$TCP set class_ 2
$ns attach-agent$n0 $TCP
set 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 的联机
剩余39页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论2